Server IP : 213.176.29.180  /  Your IP : 18.216.32.251
Web Server : Apache
System : Linux 213.176.29.180.hostiran.name 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
User : webtaragh ( 1001)
PHP Version : 8.3.14
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0750) :  /home/webtaragh/public_html/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/webtaragh/public_html/wp-file-manager.tar
readme.txt000064400000042327147361034400006554 0ustar00=== File Manager ===
Contributors: mndpsingh287
Tags: wp-file-manager, elfinder,file manager, ftp, wp-filemanager,file manager, wp-filemanager, Upload Files, WP File Manager, File Manage, Edit Files, Delete Files, FTP, filemanager, wpfilemanager, ftp, file transfer, update, create, delete, view, rename, editor, Cpanel, Control Panel, Admin, Shortcode, explorer, file explorer, filemanager
Requires at least: 4.0
Tested up to: 6.6.1
Requires PHP: 5.2.4
Stable tag: 8.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

file manager provides you ability to edit, delete, upload, download, copy and paste files and folders.

== Description ==

#### File Manager allows you to edit, delete, upload, download, zip, copy and paste files and folders directly from the Wordpress backend. Don’t bother with FTP to manage and move your files from location to location. The most powerful, flexible, and easiest Wordpress file management solution ever built!

https://www.youtube.com/watch?v=CiLkRDVlL2o
       
= Key Features in File Manager free Version Plugin =

Key Features in the Free File Manager plugin include:
* **Operations**: Various operations with files and folders on a remote server (copy, move, upload, create folder/file, rename, edit, delete, etc.)
* **Move/Copy**: Admin can Move/Copy files with Drag & Drop. Also includes multi file selection. 
* **Archives**: Admin can create, archive and extract files(zip, rar, tar, gzip).
* **File Size**: Admin/User can upload any size files.
* **File Type**: Control what files can be uploaded and what file can be downloaded.
* **Code Editor**: File Manager comes with a built in integrated development environment (IDE) - New Feature
* **Syntax Checker**: File Manager now can complete code reviews before saving files to ensure your site will not go down when updating code. Reviewing code for errors has never been so easy! - New Feature
* **Multiple Themes**: Multiple File Manager Themes Available – New Feature
* **Get Info**: All file details, properties, information is now available by simply right clicking a file and selecting Get Info - New Feature 
* **Share Files by Email**: With File Manager you can easily and quickly share files by Email. Simply right click a file and press share, that’s it! - New Feature 
* **Private Folder**: Available only for File Manager Pro Edition
* **Shortcode**: Available only for File Manager Pro Edition
* **Root Directory**: Quickly and easily edit your root path directory. With this feature you can access files inside and outside of Wordpress
* **PDF Support**: Preview PDF files easily 
* **Built-in Trash**: Delete files by moving them to trash
* **File View**: Icon and list view both available for easy navigation
* **Preview Support**: Easily preview common file types including media (video, audio, mp3, thumbnails, etc)
* **Search**: Search functionality is built directly into File Manager making it simple to find your files.
* **Shortcut Support**: Common shortcuts are available in File Manager
* **Automatic File Resize**: automatically resize files once uploaded.
* **Responsive UI**: File Manager works on tablet and mobile devices
* **Browsing History**: File and folders browsing history
* **Trash function**: Move to Trash Folder Feature
* **PDF Preview**: PDF Preview feature available
* **FTP/SFTP Support**: Alternative to FTP or Cpanel
* **File Preview**: preview for common MIMEs and file types
* **Directory Size**: Calculate directory size
* **Icon View**: List and Icons view available for files and files
* **Keyboard shortcuts**: Keyboard shortcuts available e.g. copy,paste,drag & drop
* **Drag and drop**: File Drag & Drop file upload function available
* **Functions Toolbar**: Rich context menu and file manager functions toolbar
* **Thumbnails**: Thumbnails for all types of image files
* **Upload to Media Library**: We have now included the ability to enable images, pdf's, and zip files to be uploaded to you folders and as well be available via the native Wordpress Media Library
* **Backup/Restore**: Backup and restore themes files, plugins files,uploads folder and db data on server.
* **Multi Languages Added**

= Key Features in File Manager Pro Editions =

* **File Type:** Control what files can be uploaded and what file can be downloaded.**
* **Operations:** Various operations with files and folders on a remote server (copy, move, upload, create folder/file, rename, edit, delete etc.)
* **Shortcode:** Available with custom attributes for frontend.
* **Private Folder:** Admin can give access of same and different folder to different users roles and different users.
* **Move/Copy:** Admin can Move/Copy files with Drag & Drop.
* **Archives:** Admin can create/extract files(zip, rar, tar, gzip).
* **File Size:** Admin/User can control file upload size.
* **Fullscreen View:** Admin can control code editor fullscreen view.
* **Editor**: There are a lots of themes available for code editor. Admin can control code editor themes.
* **Hide Files/Folder:** Here admin is able to hide files and folders for user roles and for users.
* **File Type:** Control what files can be uploaded and what file can be downloaded.
* **User Role:** admin is able to control file operations and hide and lock Files and Folders for user roles .
* **Users:** admin is able to control file operations and hide and lock Files and Folders for particular user .
* **High performance:** High performance server backend and light client UI.
* **File system:** Local file system storage drivers.
* **Edit file:** User can edit text files and images.
* **Frontend Access:** User can access frontend using shortcode.
* **Admin Email Notifications.** Admin will get a Notification whenever a file is updated. 
* **Admin Email Notifications.** Admin will get a Notification whenever a file is Downloaded. 
* **Admin Email Notifications.** Admin will get a Notification whenever a file is Edited. 
* **Google Drive Integration**   drag drop, copy paste all other operations between file manager and google drive.
* **Dropbox Integration**        drag drop, copy paste all other operations between file manager and dropbox.


> <strong>[Buy Pro Version](https://filemanagerpro.io/product/file-manager/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> with various features & support.
> <strong>[Contact us](https://filemanagerpro.io/contact/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> for Support Only Pro Version Users.
> <strong>[Documentation](https://filemanagerpro.io/documentation/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> Click Here.
> <strong>[Addons](https://filemanagerpro.io/addons/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> with various features & support.
**[Upgrade to Pro Version](https://filemanagerpro.io/product/file-manager/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)**

= Premium Addons =

<strong>[File Manager Digital Ocean](https://filemanagerpro.io/product/digital-ocean-add-on/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> provides you ability to edit, delete, upload, download, copy and paste files and folders in Digital Ocean.
<strong>[File Manager Google Drive](https://filemanagerpro.io/product/file-manager-google-drive/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> provides you ability to edit, delete, upload, download, copy and paste files and folders in Google Drive.
<strong>[File Manager OneDrive](https://filemanagerpro.io/product/file-manager-one-drive/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> provides you ability to edit, delete, upload, download, copy and paste files and folders in OneDrive from File Manager.
<strong>[File Manager Dropbox](https://filemanagerpro.io/product/file-manager-dropbox/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> provides you ability to edit, delete, upload, download, copy and paste files and folders in dropbox.
<strong>[File Manager Box](https://filemanagerpro.io/product/file-manager-box/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> provides you ability to edit, delete, upload, download, copy and paste files and folders in Box.
<strong>[File Manager AWS S3](https://filemanagerpro.io/product/file-manager-aws-s3/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> provides you ability to edit, delete, upload, download, copy and paste files and folders in AWS S3 bucket.
<strong>[File Manager Git](https://filemanagerpro.io/product/file-manager-git/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> Github integration for file manager.
<strong>[File Manager Slack](https://filemanagerpro.io/product/file-manager-slack/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> Slack incoming webhook integration to file manager.
<strong>[File Manager Google Cloud](https://filemanagerpro.io/product/file-manager-google-cloud/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=File%20Manager%20Pro)</strong> provides you ability to edit, delete, upload, download, copy and paste files and folders in Google Cloud bucket.


== Installation ==

1. Upload the `wp-file-manager` folder to the directory `/wp-content/plugins/`.
2. Activate the plugin using the 'Plugins' menu in WordPress.

== Frequently asked questions ==

= Can we make zip of any folder or file and download it ? =
Yes, You can archive any files and folders as zip then simple download it. Please view screenshots.

== Support == 
* If any problem occurs, please contact us at https://filemanagerpro.io/contact/

## How to use

1. First Activate Plugin.
2. Then Click on " WP File Manager " menu. Then do with files what you want to do.

== Screenshots ==

1. File Manager File View Screen.
2. Make a folder or file archive as zip.
3. Download archived zip file.
4. PRO:  In File Manager Pro version user is able to give accessibility to user roles by just one click and Control File upload size.
5. PRO:  In File manager pro version admin is able to control file operations for user roles and also hide any file and folder. Admin also lock any file to prevent from edit.
6. PRO:  In File manager pro version admin is able to control file operations for particular user and also hide any file and folder. Admin also lock any file to prevent from edit.
7. PRO:  Admin can control code editor fullscreen view & code editor themes.
8. PRO: Code editor fullscreen view with selected theme.
9. PRO: Private Folder Access
10. File Manager with Multiple Languages
11. File Manager with Multiple Themes - Light Theme
12. Dark Theme View
13. Grey Theme View
14. Window 10 Theme View
15. Edit Root Directory Path


== Changelog ==

= 8.0 (06th Aug, 2024) =
* Broken Image Fixes

= 7.2.10 (29th July, 2024) =
* Compatible with WordPress 6.6.1

= 7.2.9 (6th June, 2024) =
* Trash Folder & Security Fixes.

= 7.2.8 (31 May, 2024) =
* Security Fixes.

= 7.2.7 (07 May, 2024) =
* Fixed image preview issue.
* Checked compatibility with WordPress 6.5.2

= 7.2.6 (01 April, 2024) =
* Directory Traversal issue resolved.

= 7.2.5 (14 Mar, 2024) =
* Improved Language check.

= 7.2.4 (28 Feb, 2024) =
* Fixed Language issue.

= 7.2.3 (26 Feb, 2024) =
* Fixed Language issue.

= 7.2.2 (18 Jan, 2024) =
* Fixed Security issue.

= 7.2.1 (26th Oct, 2023) =
* Directory Traversal issue resolved.
* Checked compatibility with wordpress 6.3.2

= 7.2 (18th August, 2023) =
* Api Update
* Checked compatibility with wordpress 6.3 

= 7.1.9 (4th May, 2023) =
* Minor updations
* Checked compatibility with wordpress 6.2 

= 7.1.8 (8th Feb, 2023) =

* Fixed confliction with pro version
* Minor updations

= 7.1.7 (5th December, 2022) =

* Removed Google Fonts External links
* Issue Resolved for zip download folder
* Checked compatibility with wordpress 6.1.1

= 7.1.6 (28th June, 2022) =

* Checked compatibility with wordpress 5.8.2
* Updated APIs

= 7.1.5 (19th Apr, 2022) =

* Updated translations 
* Fixed zip extract issue
* Minor other bug fixes

= 7.1.4 (27th Jan, 2022) =

* Fixed compatibility issue with PHP > 8
* Fixed issue of fatal error on activating plugin
* Fixed compatibility issue of restore backup in multisite
* Fixed autohide toolbar issue for Ipad

= 7.1.3 (28th Dec, 2021) =

* Elfinder Library Updated
* Checked compatibility with wordpress 5.8.2
* Enhanced backup and restore process

= 7.1.2 (20th July, 2021) =

* Checked compatibility with wordpress 5.8
* Fixed minor bugs
* Checked compatibility with Query Monitor plugin
* Updated Translations

= 7.1.1 (30th March, 2021) =

* Checked compatibility with wordpress 5.7

= 7.1 (18th Feb, 2021) =

* Fixed Cross site scripting (XSS) issue

= 7.0 (8th Feb, 2021) =

* Confliction issue fixed with wordpress 5.6 version
* Fixed download backups links not works on some servers issue
* Fixed PHP warnings issue
* Add support to tiff extension images

= 6.9 (1st Sept, 2020) =

* Security issue fixed

= 6.8 (31st Aug, 2020) =

* Fixed design compatibility issues with wordpress 5.5 version

= 6.7 (20th Aug, 2020) =

* Fixed issue of deprecated function of jquery
* Updated messages text 

= 6.6 (18th Aug, 2020) =

* Updated Translations
* Added media title to the uploaded file when Files Upload to Media Library is enabled

= 6.5 (18th Jun, 2020) =

* Security Fix

= 6.4 (25th May, 2020) =

* $ confliction fixes

= 6.3 (22nd May, 2020) =

* Files extract issues fixes

= 6.2 (15th May, 2020) =

* jQuery confliction fixes

= 6.1 (14th May, 2020) =

* Compatibility issues

= 6.0 (14th May, 2020) =

* Google doc preview feature added and Library Updates - Major Update

= 5.9 (13th APR, 2020) =

* Fixed Errors Deprecated Unparenthesized

= 5.8 (31st MARCH, 2020) =

* Tested with Wordpress 5.4 version.

= 5.7 (23rd JAN, 2020) =

* Media library js fixes

= 5.6 (14th JAN, 2020) =

* Media library option fixes

= 5.5 (2nd DEC, 2019) =

* Unparenthesized issue fixes.

= 5.4 (16th AUGUST, 2019) =

* Minor fixes and added logs demo screenshots.

= 5.3 (20th AUGUST, 2019) =

* Rate us bar repetition removed.

= 5.2 (12th JULY, 2019) =

* Security fixes addressed by wordpress.

= 5.1 (11th JULY, 2019) =

* Security fixes.

= 5.0 (10th JULY, 2019) =

* Search outline issue fixed, Restore feature bugs fixes

= 4.9 (8th JULY, 2019) =

* Media library multiple file extensions allowed, backup feature admin authorized issue fixes

= 4.8 (13th MAY, 2019) =

* Minor fixes

= 4.7 (13th MAY, 2019) =

* Files and Database backup - restore feature added

= 4.6 (18th APR, 2019) =

* Elfinder Library Updated, Security Fixes

= 4.5 (17th APR, 2019) =

* PHP 7 issues fixes

= 4.4 (22nd FEB, 2019) =

* Extract issue fixed

= 4.3 (21st FEB, 2019) =

* Syntax checker feature removed for now

= 4.2 (21st FEB, 2019) =

* elFinder Library Updated

= 4.1 (21st JAN, 2019) =

* Syntax Error Feature Added

= 4.0 (10th JAN, 2019) =

* Http API fixes

= 3.9 (10th JAN, 2019) =

* CURL issue fixes

= 3.8 (20th DEC, 2018) =

* php 7.2 warnings fixes

= 3.7 (3rd DEC, 2018) =

* Header issue fixed

= 3.6 (3rd DEC, 2018) =

* Security Fixes

= 3.5 (3rd DEC, 2018) =

* Zip extract issue fixes

= 3.4 (30th Nov, 2018) =

* Minor Fixes

= 3.3 (30th Nov, 2018) =

* Library updated

= 3.2 (20th Oct, 2018) =

* CompaNovle with php 7.3 and wordpress 5.0

= 3.1 (17th Sep, 2018) =

* Security fixes and design fixes

= 3.0 (5th Sep, 2018) =

* Security issues fixed

= 2.9 (27th Aug ,2018) =

* Russian Translations added. Credit: @ivan192

* Code editor lines number added.

* Minimized window buttons collapsing issue fixed

= 2.8 (15th Jun ,2018) =

* minor Performence fix

= 2.7 (2th Jun ,2018) =

major Performence fix


= 2.6 (18th May ,2018) =

* '/' error Fix,major fix

= 2.5 (16th May ,2018) =

* Upload File issue Fix

= 2.4 (16th Apr ,2018) =

* On extract Invaild Backend issue

= 2.3 (16th Apr ,2018) =

* Extract Issue Resolved

= 2.2 (9th Apr ,2018) =

* PHP 7 Compatibility Issues Resolved

= 2.1 (26th March ,2018) =

* major design fixes

= 2.0 (1st March ,2018) =

* Edit Root Directory Path Feature - Major Update

= 1.9 (8th Jan ,2018) =

* fix Console en js missing error
* Now WP File Manager has various themes. - Major Update

= 1.8 (20th Sep ,2017) =

* fix some Bug in 1.7 - Minor Update
* Now WP File Manager is in various languages. - Major Update
* WP File Manager Translations Available. Compatible with any wordpress language. - Major Update

= 1.7 (18th Aug ,2017) =

* fix some Bug in 1.6 - Minor Update
* System Properties Menu - Added(New)

= 1.6 (20th Apr ,2017) =

* fix some Bug in 1.5 - Minor Update

= 1.5 (01th Mar ,2017) =

* fix some Bug in 1.4 - Major Update

= 1.4 (09th Jan ,2017) =

* fix some Bug in 1.3 - Major Update
* fix File edit auto slash add problem

= 1.3 (23th Nov ,2016) =

* fix some Bug in 1.2 - Minor Update
* fix max upload size problem

= 1.2 (17th Sep ,2016) =

* fix some Bug in 1.1 - Minor Update
* Compatible upto wordpress 4.6.1

= 1.1 (26th Aug ,2016) =

* fix some Bug in 1.0 - Minor Update
* Compatible upto wordpress 4.6


== Upgrade Notice ==
= Upgrade your old version to 3.2


== Other Notes ==

= Minimum requirements for File Manager =
*   WordPress 3.3+
*   PHP 5.x
*   MySQL 5.x

If any problem occurs, please contact us at https://filemanagerpro.io/contact/
file_folder_manager.php000064400000252273147361034400011236 0ustar00<?php
/**
  Plugin Name: WP File Manager
  Plugin URI: https://wordpress.org/plugins/wp-file-manager
  Description: Manage your WP files.
  Author: mndpsingh287
  Version: 8.0
  Author URI: https://profiles.wordpress.org/mndpsingh287
  License: GPLv2
 **/
if (!defined('WP_FILE_MANAGER_DIRNAME')) {
    define('WP_FILE_MANAGER_DIRNAME', plugin_basename(dirname(__FILE__)));
}
if ( ! defined( 'WP_FM_SITE_URL' ) ) {
    define( 'WP_FM_SITE_URL', 'https://filemanagerpro.io' );
}
define('WP_FILE_MANAGER_PATH', plugin_dir_path(__FILE__));
if (!class_exists('mk_file_folder_manager')):
    class mk_file_folder_manager
    {
        protected $SERVER = 'https://filemanagerpro.io/api/plugindata/api.php';
        var $ver = '8.0';
        /* Auto Load Hooks */
        public function __construct()
        {
	        add_action('activated_plugin', array(&$this, 'deactivate_file_manager_pro'));
            add_action('admin_menu', array(&$this, 'ffm_menu_page'));
            add_action('network_admin_menu', array(&$this, 'ffm_menu_page'));
            add_action('admin_enqueue_scripts', array(&$this, 'ffm_admin_things'));
            add_action('admin_enqueue_scripts', array(&$this, 'ffm_admin_script'));
            add_action('wp_ajax_mk_file_folder_manager', array(&$this, 'mk_file_folder_manager_action_callback'));
            add_action('wp_ajax_mk_fm_close_fm_help', array($this, 'mk_fm_close_fm_help'));
            add_filter('plugin_action_links', array(&$this, 'mk_file_folder_manager_action_links'), 10, 2);
            do_action('load_filemanager_extensions');
            add_action('plugins_loaded', array(&$this, 'filemanager_load_text_domain'));
            /*
            File Manager Verify Email
            */
            add_action('wp_ajax_mk_filemanager_verify_email', array(&$this, 'mk_filemanager_verify_email_callback'));
            add_action('wp_ajax_verify_filemanager_email', array(&$this, 'verify_filemanager_email_callback'));
            /*
            Media Upload
            */
            add_action('wp_ajax_mk_file_folder_manager_media_upload', array(&$this, 'mk_file_folder_manager_media_upload'));
            /* New Feature */
            add_action('init', array(&$this, 'create_auto_directory'));
            /* Backup - Feature */
            add_action('wp_ajax_mk_file_manager_backup', array(&$this, 'mk_file_manager_backup_callback'));
            add_action('wp_ajax_mk_file_manager_backup_remove', array(&$this, 'mk_file_manager_backup_remove_callback'));
            add_action('wp_ajax_mk_file_manager_single_backup_remove', array(&$this, 'mk_file_manager_single_backup_remove_callback'));
            add_action('wp_ajax_mk_file_manager_single_backup_logs', array(&$this, 'mk_file_manager_single_backup_logs_callback'));
            add_action('wp_ajax_mk_file_manager_single_backup_restore', array(&$this, 'mk_file_manager_single_backup_restore_callback'));
            add_action( 'rest_api_init', function () {
            if(current_user_can('manage_options') || (is_multisite() && current_user_can( 'manage_network' ))){
                    register_rest_route( 'v1', '/fm/backup/(?P<backup_id>[a-zA-Z0-9-=]+)/(?P<type>[a-zA-Z0-9-=]+)/(?P<key>[a-zA-Z0-9-=]+)', array(
                        'methods' => 'GET',
                        'callback' => array( $this, 'fm_download_backup' ),
                        'permission_callback' => '__return_true',
                    ));
                
                    register_rest_route( 'v1', '/fm/backupall/(?P<backup_id>[a-zA-Z0-9-=]+)/(?P<type>[a-zA-Z0-9-=]+)/(?P<key>[a-zA-Z0-9-=]+)/(?P<all>[a-zA-Z]+)', array(
                        'methods' => 'GET',
                        'callback' => array( $this, 'fm_download_backup_all' ),
                        'permission_callback' => '__return_true',
                    ));
                }
            });
        }

	    /**
	     * Checks if another version of Filemanager/Filemanager PRO is active and deactivates it.
	     * Hooked on `activated_plugin` so other plugin is deactivated when current plugin is activated.
	     *
	     * @return void
	     */
	    public function deactivate_file_manager_pro($plugin) {

		    if ( ! in_array( $plugin, array(
			    'wp-file-manager/file_folder_manager.php',
			    'wp-file-manager-pro/file_folder_manager_pro.php'
		    ), true ) ) {
			    return;
		    }

		    $plugin_to_deactivate  = 'wp-file-manager/file_folder_manager.php';

		    // If we just activated the free version, deactivate the pro version.
		    if ( $plugin === $plugin_to_deactivate ) {
			    $plugin_to_deactivate  = 'wp-file-manager-pro/file_folder_manager_pro.php';
		    }

		    if ( is_multisite() && is_network_admin() ) {
			    $active_plugins = (array) get_site_option( 'active_sitewide_plugins', array() );
			    $active_plugins = array_keys( $active_plugins );
		    } else {
			    $active_plugins = (array) get_option( 'active_plugins', array() );
		    }

		    foreach ( $active_plugins as $plugin_basename ) {
			    if ( $plugin_to_deactivate === $plugin_basename ) {
				    deactivate_plugins( $plugin_basename );
				    return;
			    }
		    }
	    }

        /* Auto Directory */
        public function create_auto_directory() {
            $upload_dir = wp_upload_dir();
            $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup';
            if (!file_exists($backup_dirname)) {
                wp_mkdir_p($backup_dirname);
            }

            // security fix
            $myfile = $backup_dirname."/.htaccess";
            if(!file_exists($myfile)){
                $myfileHandle = @fopen($myfile, 'w+');
                if(!is_bool($myfileHandle)){
                     $txt = '<FilesMatch "\.(zip|gz)$">';
                    $txt .= "\nOrder allow,deny\n";
                    $txt .= "Deny from all\n";
                    $txt .= "</Files>";
                    @fwrite($myfileHandle, $txt);
                    @fclose($myfileHandle);
                }
            }

            // creating blank index.php inside fm_backup
            $ourFileName = $backup_dirname."/index.html";
            if(!file_exists($ourFileName)){
                $ourFileHandle = @fopen($ourFileName, 'w');
                if(!is_bool($ourFileHandle)){
                    @fclose($ourFileHandle);
                    @chmod($ourFileName, 0755);
                }
            }

        }

        /*
        Backup - Restore
        */
        public function mk_file_manager_single_backup_restore_callback() {
            WP_Filesystem(); 
            global $wp_filesystem;
            $nonce = sanitize_text_field($_POST['nonce']);
            if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackuprestore' )) {
                global $wpdb;
                $fmdb = $wpdb->prefix.'wpfm_backup';
                $upload_dir = wp_upload_dir();
                $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/';
                $bkpid = intval($_POST['id']);
                $result = array();
                $filesDestination = WP_CONTENT_DIR.'/';

                if ( strcmp($backup_dirname, "/") === 0 ) {
                    $backup_path = $backup_dirname;
                }else{
                    $backup_path = $backup_dirname."/";
                }
                
                $database = sanitize_text_field($_POST['database']);
                $plugins = sanitize_text_field($_POST['plugins']);
                $themes = sanitize_text_field($_POST['themes']);
                $uploads = sanitize_text_field($_POST['uploads']);
                $others = sanitize_text_field($_POST['others']);
                if($bkpid) {
                    include('classes/files-restore.php');
                    $restoreFiles = new wp_file_manager_files_restore();
                    $fmbkp = $wpdb->get_row(
                        $wpdb->prepare('select * from '.$fmdb.' where id = %d', $bkpid)
                    );
                    if($themes == 'true') {
                        // case 1 - Themes
                        if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) {
                            $wp_filesystem->delete($filesDestination.'themes',true);
                            $restoreThemes = $restoreFiles->extract($backup_dirname.$fmbkp->backup_name.'-themes.zip',$filesDestination.'themes');
                            if($restoreThemes) {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => 'false', 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Themes backup restored successfully.', 'wp-file-manager').'</li>'));  
                                die;
                            } else {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => 'false', 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Unable to restore themes.', 'wp-file-manager').'</li>'));   
                                die;
                            }            
                        }else {
                            echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => 'false', 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => ''));   
                            die;
                        }   
                    } 
                    else if($uploads == 'true'){
                        // case 2 - Uploads
                        if ( is_multisite() ) { 
                            $path_direc =  $upload_dir['basedir'];
                        } else {
                            $path_direc =   $filesDestination.'uploads';
                        }
                        if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) {
                            $alllist = $wp_filesystem->dirlist($path_direc);
                            if(is_array($alllist) && !empty($alllist))
                            {
                                foreach($alllist as $key=>$value)
                                {
                                    if($key!= 'wp-file-manager-pro')
                                    {
                                        $wp_filesystem->delete($path_direc.'/'.$key,true);
                                    }
                                }
                            }

                            $restoreUploads = $restoreFiles->extract($backup_dirname.$fmbkp->backup_name.'-uploads.zip',$path_direc);
                            if($restoreUploads) {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> 'false', 'others' => $others,'bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Uploads backup restored successfully.', 'wp-file-manager').'</li>'));  
                                die;
                        
                            } else {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> 'false', 'others' => $others,'bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Unable to restore uploads.', 'wp-file-manager').'</li>')); 
                                die;
                        
                            }                    
                        } else {
                            echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> 'false', 'others' => $others,'bkpid' => $bkpid,'msg' => '')); 
                            die;
                    
                        }   
                    }
                    else if($others == 'true'){
                    // case 3 - Others
                        if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) {
                            $alllist = $wp_filesystem->dirlist($filesDestination);
                            if(is_array($alllist) && !empty($alllist))
                            {
                                foreach($alllist as $key=>$value)
                                {
                                    if($key != 'themes' && $key != 'uploads' && $key != 'plugins')
                                    {
                                        $wp_filesystem->delete($filesDestination.$key,true);
                                    }
                                }
                            }
                            $restoreOthers = $restoreFiles->extract($backup_dirname.$fmbkp->backup_name.'-others.zip',$filesDestination);
                            if($restoreOthers) {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => 'false','bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Others backup restored successfully.', 'wp-file-manager').'</li>')); 
                                die;
                        
                            } else {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => 'false','bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Unable to restore others.', 'wp-file-manager').'</li>')); 
                                die;
                        
                            }                  
                        }else {
                            echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => 'false','bkpid' => $bkpid,'msg' => '')); 
                            die;
                        }
                    }
                    else if($plugins == 'true'){
                        // case 4- Plugins
                        if(file_exists($backup_path.$fmbkp->backup_name.'-plugins.zip')) {
                            $alllist = $wp_filesystem->dirlist($filesDestination.'plugins');
                            if(is_array($alllist) && !empty($alllist))
                            {
                                foreach($alllist as $key=>$value)
                                {
                                    if($key!= 'wp-file-manager')
                                    {
                                        $wp_filesystem->delete($filesDestination.'plugins/'.$key,true);
                                    }
                                }
                            }

                            $restorePlugins = $restoreFiles->extract($backup_path.$fmbkp->backup_name.'-plugins.zip',$filesDestination.'plugins');
                            if($restorePlugins) {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Plugins backup restored successfully.', 'wp-file-manager').'</li>'));  
                                die;
                    
                            } else {
                                echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Unable to restore plugins.', 'wp-file-manager').'</li>')); 
                                die;
                            }                                      
                        }else {
                            echo wp_json_encode(array('step' => 1, 'database' => $database,'plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => 0,'msg' => '')); 
                            die;
                    
                        }   
                    } 
                    else if($database == 'true'){
                        // case 5- Database
                        if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) {    
                            include('classes/db-restore.php');
                            $restoreDatabase = new Restore_Database($fmbkp->backup_name.'-db.sql.gz');
                            if($restoreDatabase->restoreDb()) {
                                echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => '','msg' => '<li class="fm-running-list fm-custom-checked">'.__('Database backup restored successfully.', 'wp-file-manager').'</li>',  'msgg' => '<li class="fm-running-list fm-custom-checked">'.__('All Done', 'wp-file-manager').'</li>')); 
                                die;
                            } else {
                                echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Unable to restore DB backup.', 'wp-file-manager').'</li>'));  
                                die;
                            }
                        }else {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $bkpid,'msg' => ''));  
                            die;
                        }  
                    }else {
                        echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => 'false','themes' => 'false','uploads'=> 'false','others' => 'false', 'bkpid' => '', 'msg' => '<li class="fm-running-list fm-custom-checked">'.__('All Done', 'wp-file-manager').'</li>'));                        
                        die;
                    }
                } else {
                        echo wp_json_encode(array('step' => 0, 'database' => 'false','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false','bkpid' => '','msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Unable to restore plugins.', 'wp-file-manager').'</li>'));
                        die;
                }
                die;
            }
        }
        /*
        Backup - Remove
        */
        public function mk_file_manager_backup_remove_callback(){
            $nonce = sanitize_text_field($_POST['nonce']);
            if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackupremove' )) {
            global $wpdb;
            $fmdb = $wpdb->prefix.'wpfm_backup';
            $upload_dir = wp_upload_dir();
            $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/';
            $bkpRids = $_POST['delarr'];
            $isRemoved = false;        
            if(isset($bkpRids)) {
                foreach($bkpRids as $bkRid) {
                    $bkRid = intval($bkRid);
                    $fmbkp = $wpdb->get_row(
                        $wpdb->prepare('select * from '.$fmdb.' where id = %d',$bkRid)
                    );
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-db.sql.gz');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-others.zip');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-plugins.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-plugins.zip');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-themes.zip');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-uploads.zip');
                    }
                    // removing from db
                    $wpdb->delete($fmdb, array('id' => $bkRid));
                    $isRemoved = true;
                }
            }
            if($isRemoved) {
                
                echo __('Backups removed successfully!','wp-file-manager');
            } else {
                echo __('Unable to removed backup!','wp-file-manager'); 
            }
            die;
        }
        }
        /*
        Backup Logs
        */
        public function mk_file_manager_single_backup_logs_callback() {
            $nonce = sanitize_text_field($_POST['nonce']);
            if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackuplogs' )) {
            global $wpdb;
            $fmdb = $wpdb->prefix.'wpfm_backup';
            $upload_dir = wp_upload_dir();
            $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/';
            $bkpId = intval($_POST['id']);
            $logs = array(); 
            $logMessage = '';       
            if(isset($bkpId)) {
                    $fmbkp = $wpdb->get_row(
                        $wpdb->prepare('select * from '.$fmdb.' where id = %d', $bkpId)
                    );
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) {
                        $size = filesize($backup_dirname.$fmbkp->backup_name.'-db.sql.gz');
                        $logs[] = __('Database backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-db.sql.gz) ('.$this->formatSizeUnits($size).')';
                    }                    
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-plugins.zip')) {
                        $size = filesize($backup_dirname.$fmbkp->backup_name.'-plugins.zip');
                        $logs[] = __('Plugins backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-plugins.zip) ('.$this->formatSizeUnits($size).')';
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) {
                        $size = filesize($backup_dirname.$fmbkp->backup_name.'-themes.zip');
                        $logs[] = __('Themes backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-themes.zip) ('.$this->formatSizeUnits($size).')';
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) {
                        $size = filesize($backup_dirname.$fmbkp->backup_name.'-uploads.zip');
                        $logs[] = __('Uploads backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-uploads.zip) ('.$this->formatSizeUnits($size).')';
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) {
                        $size = filesize($backup_dirname.$fmbkp->backup_name.'-others.zip');
                        $logs[] = __('Others backup done on date ', 'wp-file-manager').$fmbkp->backup_date.' ('.$fmbkp->backup_name.'-others.zip) ('.$this->formatSizeUnits($size).')';
                    }
            }
            $count = 1;
            $logMessage = '<h3 class="fm_console_log_pop log_msg_align_center">'.__('Logs', 'wp-file-manager').'</h3>';
            if(isset($logs)) {
                foreach($logs as $log) {
                    $logMessage .= '<p class="fm_console_success">('.$count++.') '.$log.'</p>';
                }
            } else {
                $logMessage .= '<p class="fm_console_error">'.__('No logs found!', 'wp-file-manager').'</p>';
            }
            echo $logMessage;
            die; 
        }
        }
       /*
       Returning Valid Format
       */
        public function formatSizeUnits($bytes) {
            if ($bytes >= 1073741824)
            {
                $bytes = number_format($bytes / 1073741824, 2) . ' GB';
            }
            elseif ($bytes >= 1048576)
            {
                $bytes = number_format($bytes / 1048576, 2) . ' MB';
            }
            elseif ($bytes >= 1024)
            {
                $bytes = number_format($bytes / 1024, 2) . ' KB';
            }
            elseif ($bytes > 1)
            {
                $bytes = $bytes . ' bytes';
            }
            elseif ($bytes == 1)
            {
                $bytes = $bytes . ' byte';
            }
            else
            {
                $bytes = '0 bytes';
            }

            return $bytes;
        }
        /*
        Backup - Remove
        */
        public function mk_file_manager_single_backup_remove_callback(){
            $nonce = sanitize_text_field($_POST['nonce']);
            if(current_user_can('manage_options') && wp_verify_nonce( $nonce, 'wpfmbackupremove' )) {
            global $wpdb;
            $fmdb = $wpdb->prefix.'wpfm_backup';
            $upload_dir = wp_upload_dir();
            $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/';
            $bkpId = intval($_POST['id']);
            $isRemoved = false;        
            if(isset($bkpId)) {
                    $fmbkp = $wpdb->get_row(
                        $wpdb->prepare('select * from '.$fmdb.' where id = %d',$bkpId)
                    );
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-db.sql.gz')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-db.sql.gz');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-others.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-others.zip');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-plugins.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-plugins.zip');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-themes.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-themes.zip');
                    }
                    if(file_exists($backup_dirname.$fmbkp->backup_name.'-uploads.zip')) {
                        unlink($backup_dirname.$fmbkp->backup_name.'-uploads.zip');
                    }
                    // removing from db
                    $wpdb->delete($fmdb, array('id' => $bkpId));
                    $isRemoved = true;
            }
            if($isRemoved) {
                echo  "1";
            } else {
                echo "2";
            }
            die;
        }
        }
        /*
        Backup - Ajax - Feature
        */
        public function mk_file_manager_backup_callback(){
            
            $nonce = sanitize_text_field( $_POST['nonce'] );
            if( current_user_can( 'manage_options' ) && wp_verify_nonce( $nonce, 'wpfmbackup' ) ) {
            global $wpdb;
            $fmdb = $wpdb->prefix.'wpfm_backup';
            $date = date('Y-m-d H:i:s');
            $file_number = 'backup_'.date('Y_m_d_H_i_s-').bin2hex(openssl_random_pseudo_bytes(4));
            $database = sanitize_text_field($_POST['database']);
            $files = sanitize_text_field($_POST['files']);
            $plugins = sanitize_text_field($_POST['plugins']);
            $themes = sanitize_text_field($_POST['themes']);
            $uploads = sanitize_text_field($_POST['uploads']);
            $others = sanitize_text_field($_POST['others']);
            $bkpid = isset($_POST['bkpid']) ? sanitize_text_field($_POST['bkpid']) : '';
            if($database == 'false' && $files == 'false' && $bkpid == '') {
                echo wp_json_encode(array('step' => '0', 'database' => 'false','files' => 'false','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false', 'bkpid' => '0', 'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Nothing selected for backup','wp-file-manager').'</li>'));
                die; 
            }
            if($bkpid == '') {
                $wpdb->insert( 
                    $fmdb, 
                    array( 
                        'backup_name' => $file_number, 
                        'backup_date' => $date
                    ), 
                    array( 
                        '%s', 
                        '%s' 
                    ) 
                );
                $id = $wpdb->insert_id;
            } else {
                $id = $bkpid;
            }
            if ( ! wp_verify_nonce( $nonce, 'wpfmbackup' ) ) {
                echo wp_json_encode(array('step' => 0, 'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Security Issue.', 'wp-file-manager').'</li>'));
            } else {
                $fileName = $wpdb->get_row(
                  $wpdb->prepare("select * from ".$fmdb." where id=%d",$id)
                );              
                //database
                if($database == 'true') {
                    include('classes/db-backup.php'); 
                    $backupDatabase = new Backup_Database($fileName->backup_name);
                    $result = $backupDatabase->backupTables(TABLES);
                    if($result == '1'){
                        echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => $files,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $id,'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Database backup done.', 'wp-file-manager').'</li>'));  
                        die;
                    } else {
                        echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => $files,'plugins' => $plugins,'themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Unable to create database backup.', 'wp-file-manager').'</li>'));   
                        die;
                    }                   
                }
                else if($files == 'true') {
                    include('classes/files-backup.php');
                    $upload_dir = wp_upload_dir();
                    $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup';
                    $filesBackup = new wp_file_manager_files_backup();
                     // plugins
                     if($plugins == 'true') {
                        $plugin_dir = WP_PLUGIN_DIR;  
                        $backup_plugins = $filesBackup->zipData( $plugin_dir,$backup_dirname.'/'.$fileName->backup_name.'-plugins.zip');
                        if($backup_plugins) {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others,'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Plugins backup done.', 'wp-file-manager').'</li>'));
                            die;
                        } else {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others, 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Plugins backup failed.', 'wp-file-manager').'</li>')); 
                            die;
                        }
                     } 
                     // themes
                     else if($themes == 'true') {
                        $themes_dir = get_theme_root();
                        $backup_themes = $filesBackup->zipData( $themes_dir,$backup_dirname.'/'.$fileName->backup_name.'-themes.zip');
                        if($backup_themes) {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> $uploads, 'others' => $others, 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Themes backup done.', 'wp-file-manager').'</li>'));
                            die;
                        } else {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => $themes, 'uploads'=> $uploads, 'others' => $others, 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Themes backup failed.', 'wp-file-manager').'</li>')); 
                            die;
                        }
                     }
                     // uploads
                     else if($uploads == 'true') {
                        $wpfm_upload_dir = wp_upload_dir();
                        $uploads_dir = $wpfm_upload_dir['basedir'];
                        $backup_uploads = $filesBackup->zipData( $uploads_dir,$backup_dirname.'/'.$fileName->backup_name.'-uploads.zip');
                        if($backup_uploads) {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => $others, 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Uploads backup done.', 'wp-file-manager').'</li>'));
                            die;
                        } else {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => $others, 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Uploads backup failed.', 'wp-file-manager').'</li>'));
                            die;
                        }
                     } 
                     // other
                     else if($others == 'true') {
                        $others_dir = WP_CONTENT_DIR;
                        $backup_others = $filesBackup->zipOther( $others_dir,$backup_dirname.'/'.$fileName->backup_name.'-others.zip');
                        if($backup_others) {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false', 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-checked">'.__('Others backup done.', 'wp-file-manager').'</li>'));
                            die; 
                        } else {
                            echo wp_json_encode(array('step' => 1, 'database' => 'false','files' => 'true','plugins' => 'false','themes' => 'false', 'uploads'=> 'false', 'others' => 'false', 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-unchecked">'.__('Others backup failed.', 'wp-file-manager').'</li>'));
                            
                        }                        
                     } else {
                        echo wp_json_encode(array('step' => 0, 'database' => 'false', 'files' => 'false','plugins' => 'false','themes' => 'false','uploads'=> 'false','others' => 'false', 'bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-checked">'.__('All Done', 'wp-file-manager').'</li>'));
                        die;
                     }
                } else {
                 echo wp_json_encode(array('step' => 0, 'database' => 'false', 'files' => 'false','plugins' => 'false','themes' => 'false','uploads'=> 'false','others' => 'false','bkpid' => $id, 'msg' => '<li class="fm-running-list fm-custom-checked">'.__('All Done', 'wp-file-manager').'</li>'));
                }
            }
            } else {
                die(__('Invalid security token!', 'wp-file-manager'));
            }
            die;
        }

        /* Verify Email*/
        public function mk_filemanager_verify_email_callback()
        {
            $current_user = wp_get_current_user();
            $nonce = sanitize_text_field($_REQUEST['vle_nonce']);
            if (wp_verify_nonce($nonce, 'verify-filemanager-email')) {
                $action = sanitize_text_field($_POST['todo']);
                $lokhal_email = sanitize_email($_POST['lokhal_email']);
                $lokhal_fname = sanitize_text_field(htmlentities($_POST['lokhal_fname']));
                $lokhal_lname = sanitize_text_field(htmlentities($_POST['lokhal_lname']));
                // case - 1 - close
                if ($action == 'cancel') {
                    set_transient('filemanager_cancel_lk_popup_'.$current_user->ID, 'filemanager_cancel_lk_popup_'.$current_user->ID, 60 * 60 * 24 * 30);
                    update_option('filemanager_email_verified_'.$current_user->ID, 'yes');
                } elseif ($action == 'verify') {
                    $engagement = '75';
                    update_option('filemanager_email_address_'.$current_user->ID, $lokhal_email);
                    update_option('verify_filemanager_fname_'.$current_user->ID, $lokhal_fname);
                    update_option('verify_filemanager_lname_'.$current_user->ID, $lokhal_lname);
                    update_option('filemanager_email_verified_'.$current_user->ID, 'yes');
                    /* Send Email Code */
                    $subject = 'Email Verification';
                    $message = "
					<html>
					<head>
					<title>Email Verification</title>
					</head>
					<body>
					<p>Thanks for signing up! Just click the link below to verify your email and we’ll keep you up-to-date with the latest and greatest brewing in our dev labs!</p>	
					<p><a href='".admin_url('admin-ajax.php?action=verify_filemanager_email&token='.md5($lokhal_email))."'>Click Here to Verify
</a></p>				
					</body>
					</html>
					";
                    // Always set content-type when sending HTML email
                    $headers = 'MIME-Version: 1.0'."\r\n";
                    $headers .= 'Content-type:text/html;charset=UTF-8'."\r\n";
                    $headers .= 'From: noreply@filemanagerpro.io'."\r\n";
                    $mail = mail($lokhal_email, $subject, $message, $headers);
                    $data = $this->verify_on_server($lokhal_email, $lokhal_fname, $lokhal_lname, $engagement, 'verify', '0');
                    if ($mail) {
                        echo '1';
                    } else {
                        echo '2';
                    }
                }
            } else {
                echo 'Nonce';
            }
            die;
        }

        /*
        * Verify Email
        */
        public function verify_filemanager_email_callback()
        {
            $email = sanitize_text_field($_GET['token']);
            $current_user = wp_get_current_user();
            $lokhal_email_address = md5(get_option('filemanager_email_address_'.$current_user->ID));
            if ($email == $lokhal_email_address) {
                $this->verify_on_server(get_option('filemanager_email_address_'.$current_user->ID), get_option('verify_filemanager_fname_'.$current_user->ID), get_option('verify_filemanager_lname_'.$current_user->ID), '100', 'verified', '1');
                update_option('filemanager_email_verified_'.$current_user->ID, 'yes');
                echo '<p>Email Verified Successfully. Redirecting please wait.</p>';
                echo '<script>';
                echo 'setTimeout(function(){window.location.href="https://filemanagerpro.io?utm_redirect=wp" }, 2000);';
                echo '</script>';
            }
            die;
        }

        /*
        Send Data To Server
        */
        public function verify_on_server($email, $fname, $lname, $engagement, $todo, $verified)
        {
            global $wpdb, $wp_version;
            if (get_bloginfo('version') < '3.4') {
                $theme_data = get_theme_data(get_stylesheet_directory().'/style.css');
                $theme = $theme_data['Name'].' '.$theme_data['Version'];
            } else {
                $theme_data = wp_get_theme();
                $theme = $theme_data->Name.' '.$theme_data->Version;
            }

            // Try to identify the hosting provider
            $host = false;
            if (defined('WPE_APIKEY')) {
                $host = 'WP Engine';
            } elseif (defined('PAGELYBIN')) {
                $host = 'Pagely';
            }
            $mysql_ver = @mysqli_get_server_info($wpdb->dbh);
            $id = get_option('page_on_front');
            $info = array(
                         'email' => $email,
                         'first_name' => $fname,
                         'last_name' => $lname,
                         'engagement' => $engagement,
                         'SITE_URL' => site_url(),
                         'PHP_version' => phpversion(),
                         'upload_max_filesize' => ini_get('upload_max_filesize'),
                         'post_max_size' => ini_get('post_max_size'),
                         'memory_limit' => ini_get('memory_limit'),
                         'max_execution_time' => ini_get('max_execution_time'),
                         'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT'],
                         'wp_version' => $wp_version,
                         'plugin' => 'wp file manager',
                         'nonce' => 'um235gt9duqwghndewi87s34dhg',
                         'todo' => $todo,
                         'verified' => $verified,
                );
            $str = http_build_query($info);
            $args = array(
                'body' => $str,
                'timeout' => '5',
                'redirection' => '5',
                'httpversion' => '1.0',
                'blocking' => true,
                'headers' => array(),
                'cookies' => array(),
            );

            $response = wp_remote_post($this->SERVER, $args);

            return $response;
        }

        /**
		* Generate plugin key
		**/
		
		private static function fm_generate_key(){
			return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil(25/strlen($x)) )),1,25);
        }
        
        /**
		* Generate plugin key
		**/
		
		private static function fm_get_key(){
			return get_option('fm_key');
		}

        /* File Manager text Domain */
        public function filemanager_load_text_domain()
        {
            $domain = dirname(plugin_basename(__FILE__));
            $locale = apply_filters('plugin_locale', get_locale(), $domain);
            load_textdomain($domain, trailingslashit(WP_LANG_DIR).'plugins'.'/'.$domain.'-'.$locale.'.mo');
            load_plugin_textdomain($domain, false, basename(dirname(__FILE__)).'/languages/');

            ////// Creating key
            $fmkey = self::fm_generate_key();
            if(self::fm_get_key() == ""){
                update_option('fm_key',$fmkey);
            }
        }

        /* Menu Page */
        public function ffm_menu_page()
        {
            add_menu_page(
            __('WP File Manager', 'wp-file-manager'),
            __('WP File Manager', 'wp-file-manager'),
            'manage_options',
            'wp_file_manager',
            array(&$this, 'ffm_settings_callback'),
            plugins_url('images/wp_file_manager.svg', __FILE__)
            );
            /* Only for admin */
            add_submenu_page('wp_file_manager', __('Settings', 'wp-file-manager'), __('Settings', 'wp-file-manager'), 'manage_options', 'wp_file_manager_settings', array(&$this, 'wp_file_manager_settings'));
            /* Only for admin */
            add_submenu_page('wp_file_manager', __('Preferences', 'wp-file-manager'), __('Preferences', 'wp-file-manager'), 'manage_options', 'wp_file_manager_preferences', array(&$this, 'wp_file_manager_root'));
            /* Only for admin */
            add_submenu_page('wp_file_manager', __('System Properties', 'wp-file-manager'), __('System Properties', 'wp-file-manager'), 'manage_options', 'wp_file_manager_sys_properties', array(&$this, 'wp_file_manager_properties'));
            /* Only for admin */
            add_submenu_page('wp_file_manager', __('Shortcode - PRO', 'wp-file-manager'), __('Shortcode - PRO', 'wp-file-manager'), 'manage_options', 'wp_file_manager_shortcode_doc', array(&$this, 'wp_file_manager_shortcode_doc'));
            add_submenu_page('wp_file_manager', __('Logs', 'wp-file-manager'), __('Logs', 'wp-file-manager'), 'manage_options', 'wpfm-logs', array(&$this, 'wp_file_manager_logs'));
            add_submenu_page('wp_file_manager', __('Backup/Restore', 'wp-file-manager'), __('Backup/Restore', 'wp-file-manager'), 'manage_options', 'wpfm-backup', array(&$this, 'wp_file_manager_backup'));             
        }       
        /* Main Role */
        public function ffm_settings_callback()
        {
            if (is_admin()):
             include 'lib/wpfilemanager.php';
            endif;
        }

        /*Settings */
        public function wp_file_manager_settings()
        {
            if (is_admin()):
             include 'inc/settings.php';
            endif;
        }

        /* Shortcode Doc */
        public function wp_file_manager_shortcode_doc()
        {
            if (is_admin()):
             include 'inc/shortcode_docs.php';
            endif;
        }
        /*  Backup */
        public function wp_file_manager_backup() {
            if (is_admin()):
                include 'inc/backup.php';
            endif;
        }

        /* System Properties */
        public function wp_file_manager_properties()
        {
            if (is_admin()):
             include 'inc/system_properties.php';
            endif;
        }	
        /*
         Root
        */
        public function wp_file_manager_root()
        {
            if (is_admin()):
             include 'inc/root.php';
            endif;
        }		
		/* System Properties */
        public function wp_file_manager_logs()
        {
            if (is_admin()):
             include 'inc/logs.php';
            endif;
        }

        public function ffm_admin_script(){
            wp_enqueue_style( 'fm_menu_common', plugins_url('/css/fm_common.css', __FILE__) );
        }

         /* Admin  Things */
         public function ffm_admin_things()
         {
           
            $getPage = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
            $allowedPages = array(
                'wp_file_manager',
            );
           
           // Languages
            $lang = isset($_GET['lang']) && !empty($_GET['lang']) && in_array(sanitize_text_field(htmlentities($_GET['lang'])), $this->fm_languages()) ? sanitize_text_field(htmlentities($_GET['lang'])) : '';
            if (!empty($getPage) && in_array($getPage, $allowedPages)):
                if( isset( $_GET['lang'] ) && !empty( $_GET['lang'] ) && !wp_verify_nonce( isset( $_GET['nonce'] ) ? $_GET['nonce'] : '', 'wp-file-manager-language' )) {
                    //Access Denied
                } else {
                global $wp_version;
                $fm_nonce = wp_create_nonce('wp-file-manager');
                $wp_fm_lang = get_transient('wp_fm_lang');
                $wp_fm_theme = get_transient('wp_fm_theme');
                $opt = get_option('wp_file_manager_settings');
                 wp_enqueue_style('jquery-ui', plugins_url('css/jquery-ui.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_commands', plugins_url('lib/css/commands.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_common', plugins_url('lib/css/common.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_contextmenu', plugins_url('lib/css/contextmenu.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_cwd', plugins_url('lib/css/cwd.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_dialog', plugins_url('lib/css/dialog.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_fonts', plugins_url('lib/css/fonts.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_navbar', plugins_url('lib/css/navbar.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_places', plugins_url('lib/css/places.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_quicklook', plugins_url('lib/css/quicklook.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_statusbar', plugins_url('lib/css/statusbar.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('theme', plugins_url('lib/css/theme.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_toast', plugins_url('lib/css/toast.css', __FILE__), '', $this->ver);
                 wp_enqueue_style('fm_toolbar', plugins_url('lib/css/toolbar.css', __FILE__), '', $this->ver);
				 
                 wp_enqueue_script('jquery');          
                 
                 wp_enqueue_script('fm_jquery_js', plugins_url('js/top.js', __FILE__), '', $this->ver);
                
                $jquery_ui_js = 'jquery-ui-1.11.4.js';
                // 5.6 jquery ui issue fix
                if ( version_compare( $wp_version, '5.6', '>=' ) ) {
                    $jquery_ui_js = 'jquery-ui-1.12.1.js';
                }

                wp_enqueue_script('fm_jquery_ui', plugins_url('lib/jquery/'.$jquery_ui_js, __FILE__), $this->ver);
                wp_enqueue_script('fm_elFinder_min', plugins_url('lib/js/elfinder.min.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder', plugins_url('lib/js/elFinder.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder_version', plugins_url('lib/js/elFinder.version.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_jquery_elfinder', plugins_url('lib/js/jquery.elfinder.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder_mimetypes', plugins_url('lib/js/elFinder.mimetypes.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder_options', plugins_url('lib/js/elFinder.options.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder_options_netmount', plugins_url('lib/js/elFinder.options.netmount.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder_history', plugins_url('lib/js/elFinder.history.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder_command', plugins_url('lib/js/elFinder.command.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_elFinder_resources', plugins_url('lib/js/elFinder.resources.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_dialogelfinder', plugins_url('lib/js/jquery.dialogelfinder.js', __FILE__), '', $this->ver);
                 
           
                    if (!empty($lang)) {
                        set_transient('wp_fm_lang', $lang, 60 * 60 * 720);
                        wp_enqueue_script('fm_lang', plugins_url('lib/js/i18n/elfinder.'.$lang.'.js', __FILE__), '', $this->ver);
                    } elseif (false !== ($wp_fm_lang = get_transient('wp_fm_lang'))) {
                        wp_enqueue_script('fm_lang', plugins_url('lib/js/i18n/elfinder.'.$wp_fm_lang.'.js', __FILE__), '', $this->ver);
                    } else {
                        wp_enqueue_script('fm_lang', plugins_url('lib/js/i18n/elfinder.en.js', __FILE__), '', $this->ver);  
                    }
                wp_enqueue_script('fm_ui_button', plugins_url('lib/js/ui/button.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_contextmenu', plugins_url('lib/js/ui/contextmenu.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_cwd', plugins_url('lib/js/ui/cwd.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_dialog', plugins_url('lib/js/ui/dialog.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_fullscreenbutton', plugins_url('lib/js/ui/fullscreenbutton.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_navbar', plugins_url('lib/js/ui/navbar.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_navdock', plugins_url('lib/js/ui/navdock.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_overlay', plugins_url('lib/js/ui/overlay.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_panel', plugins_url('lib/js/ui/panel.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_ui_path', plugins_url('lib/js/ui/path.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_ui_searchbutton', plugins_url('lib/js/ui/searchbutton.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_sortbutton', plugins_url('lib/js/ui/sortbutton.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_stat', plugins_url('lib/js/ui/stat.js', __FILE__), '', $this->ver);


                wp_enqueue_script('fm_ui_toast', plugins_url('lib/js/ui/toast.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_toolbar', plugins_url('lib/js/ui/toolbar.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_tree', plugins_url('lib/js/ui/tree.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_uploadButton', plugins_url('lib/js/ui/uploadButton.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_ui_viewbutton', plugins_url('lib/js/ui/viewbutton.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_ui_workzone', plugins_url('lib/js/ui/workzone.js', __FILE__), '', $this->ver);           

                wp_enqueue_script('fm_command_archive', plugins_url('lib/js/commands/archive.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_back', plugins_url('lib/js/commands/back.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_chmod', plugins_url('lib/js/commands/chmod.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_colwidth', plugins_url('lib/js/commands/colwidth.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_copy', plugins_url('lib/js/commands/copy.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_cut', plugins_url('lib/js/commands/cut.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_download', plugins_url('lib/js/commands/download.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_duplicate', plugins_url('lib/js/commands/duplicate.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_edit', plugins_url('lib/js/commands/edit.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_empty', plugins_url('lib/js/commands/empty.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_extract', plugins_url('lib/js/commands/extract.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_forward', plugins_url('lib/js/commands/forward.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_fullscreen', plugins_url('lib/js/commands/fullscreen.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_getfile', plugins_url('lib/js/commands/getfile.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_help', plugins_url('lib/js/commands/help.js', __FILE__), '', $this->ver); 
                
                wp_enqueue_script('fm_command_hidden', plugins_url('lib/js/commands/hidden.js', __FILE__), '', $this->ver);  
                wp_enqueue_script('fm_command_hide', plugins_url('lib/js/commands/hide.js', __FILE__), '', $this->ver);  
                wp_enqueue_script('fm_command_home', plugins_url('lib/js/commands/home.js', __FILE__), '', $this->ver);  
                wp_enqueue_script('fm_command_info', plugins_url('lib/js/commands/info.js', __FILE__), '', $this->ver);  
                wp_enqueue_script('fm_command_mkdir', plugins_url('lib/js/commands/mkdir.js', __FILE__), '', $this->ver);  
                wp_enqueue_script('fm_command_mkfile', plugins_url('lib/js/commands/mkfile.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_netmount', plugins_url('lib/js/commands/netmount.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_open', plugins_url('lib/js/commands/open.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_opendir', plugins_url('lib/js/commands/opendir.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_opennew', plugins_url('lib/js/commands/opennew.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_paste', plugins_url('lib/js/commands/paste.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_places', plugins_url('lib/js/commands/places.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_quicklook', plugins_url('lib/js/commands/quicklook.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_quicklook_plugins', plugins_url('lib/js/commands/quicklook.plugins.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_reload', plugins_url('lib/js/commands/reload.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_rename', plugins_url('lib/js/commands/rename.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_resize', plugins_url('lib/js/commands/resize.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_restore', plugins_url('lib/js/commands/restore.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_rm', plugins_url('lib/js/commands/rm.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_search', plugins_url('lib/js/commands/search.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_selectall', plugins_url('lib/js/commands/selectall.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_selectinvert', plugins_url('lib/js/commands/selectinvert.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_selectnone', plugins_url('lib/js/commands/selectnone.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_sort', plugins_url('lib/js/commands/sort.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_command_undo', plugins_url('lib/js/commands/undo.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_up', plugins_url('lib/js/commands/up.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_upload', plugins_url('lib/js/commands/upload.js', __FILE__), '', $this->ver);
                wp_enqueue_script('fm_command_view', plugins_url('lib/js/commands/view.js', __FILE__), '', $this->ver);

                wp_enqueue_script('fm_quicklook_googledocs', plugins_url('lib/js/extras/quicklook.googledocs.js', __FILE__), '', $this->ver);         
                     
                 // code mirror
                wp_enqueue_script('fm-codemirror-js', plugins_url('lib/codemirror/lib/codemirror.js', __FILE__), '', $this->ver);

                wp_enqueue_style('fm-codemirror', plugins_url('lib/codemirror/lib/codemirror.css', __FILE__), '', $this->ver);

                wp_enqueue_style('fm-3024-day', plugins_url('lib/codemirror/theme/3024-day.css', __FILE__), '', $this->ver);
                // File - Manager UI               
                wp_register_script( "file_manager_free_shortcode_admin", plugins_url('js/file_manager_free_shortcode_admin.js',  __FILE__ ), array(), rand(0,9999) );
                 wp_localize_script( 'file_manager_free_shortcode_admin', 'fmfparams', array(
                     'ajaxurl' => admin_url('admin-ajax.php'),
                     'nonce' => $fm_nonce,
                     'plugin_url' => plugins_url('lib/', __FILE__),
                     'lang' => isset($_GET['lang']) && in_array(sanitize_text_field(htmlentities($_GET['lang'])), $this->fm_languages()) ? sanitize_text_field(htmlentities($_GET['lang'])) : (($wp_fm_lang !== false) ? $wp_fm_lang : 'en'),
                     'fm_enable_media_upload' => (isset($opt['fm_enable_media_upload']) && $opt['fm_enable_media_upload'] == '1') ? '1' : '0',
                     'is_multisite'=> is_multisite() ? '1' : '0',
                     'network_url'=> is_multisite() ? network_home_url() : '',
                     )
                 );        
                 wp_enqueue_script( 'file_manager_free_shortcode_admin' );               
                
             $theme = isset($_GET['theme']) && !empty($_GET['theme']) ? sanitize_text_field(htmlentities($_GET['theme'])) : '';
             // New Theme
             if (!empty($theme)) {
                 delete_transient('wp_fm_theme');
                 set_transient('wp_fm_theme', $theme, 60 * 60 * 720);
                 if ($theme != 'default') {
                     wp_enqueue_style('theme-latest', plugins_url('lib/themes/'.$theme.'/css/theme.css', __FILE__), '', $this->ver);
                 }
             } elseif (false !== ($wp_fm_theme = get_transient('wp_fm_theme'))) {
                 if ($wp_fm_theme != 'default') {
                     wp_enqueue_style('theme-latest', plugins_url('lib/themes/'.$wp_fm_theme.'/css/theme.css', __FILE__), '', $this->ver);
                 }
             } else {}
             
            }
             endif;
             
         }

        /*
        * Admin Links
        */
        public function mk_file_folder_manager_action_links($links, $file)
        {
            if ($file == plugin_basename(__FILE__)) {
                $mk_file_folder_manager_links = '<a href="https://filemanagerpro.io/product/file-manager/" title="Buy Pro Now" target="_blank" style="font-weight:bold">'.__('Buy Pro', 'wp-file-manager').'</a>';
                $mk_file_folder_manager_donate = '<a href="http://www.webdesi9.com/donate/?plugin=wp-file-manager" title="Donate Now" target="_blank" style="font-weight:bold">'.__('Donate', 'wp-file-manager').'</a>';
                array_unshift($links, $mk_file_folder_manager_donate);
                array_unshift($links, $mk_file_folder_manager_links);
            }

            return $links;
        }

        /*
        * Ajax request handler
        * Run File Manager
        */
        public function mk_file_folder_manager_action_callback()
        {
            $path = ABSPATH;
            $settings      = get_option( 'wp_file_manager_settings' );
            $mk_restrictions = array();
            $mk_restrictions[] = array(
                                  'pattern' => '/.tmb/',
                                   'read' => false,
                                   'write' => false,
                                   'hidden' => true,
                                   'locked' => false,
                                );
            $mk_restrictions[] = array(
                                  'pattern' => '/.quarantine/',
                                   'read' => false,
                                   'write' => false,
                                   'hidden' => true,
                                   'locked' => false,
                                );
            $nonce = sanitize_text_field($_REQUEST['_wpnonce']);
            if (wp_verify_nonce($nonce, 'wp-file-manager')) {
                require 'lib/php/autoload.php';
                if (isset($settings['fm_enable_trash']) && $settings['fm_enable_trash'] == '1') {
                    $mkTrash = array(
                            'id' => '1',
                            'driver' => 'Trash',
                            'path' => WP_FILE_MANAGER_PATH.'lib/files/.trash/',
                            'tmbURL' => site_url().'/lib/files/.trash/.tmb/',
                            'winHashFix' => DIRECTORY_SEPARATOR !== '/',
                            'uploadDeny' => array(''),
                            'uploadAllow' => array(''),
                            'uploadOrder' => array('deny', 'allow'),
                            'accessControl' => 'access',
                            'attributes' => $mk_restrictions,
                        );
                    $mkTrashHash = 't1_Lw';
                } else {
                    $mkTrash = array();
                    $mkTrashHash = '';
                }
                $path_url      =  is_multisite() ? network_home_url() : site_url();
                /**
                 * @Preference
                 * If public root path is changed.
                 */
                $absolute_path = str_replace( '\\', '/', $path ); 
                $path_length   = strlen( $absolute_path );
                $access_folder = isset( $settings['public_path'] ) && ! empty( $settings['public_path'] ) ? substr( $settings['public_path'], $path_length ) : '';
                if ( isset( $settings['public_path'] ) && ! empty( $settings['public_path'] ) ) {
                    $path     = $settings['public_path'];
                    $path_url = is_multisite() ? network_home_url() .'/'. ltrim( $access_folder, '/' ) : site_url() .'/'. ltrim( $access_folder, '/' );
                }
                $opts = array(
                       'debug' => false,
                       'roots' => array(
                        array(
                            'driver' => 'LocalFileSystem',
                            'path' => $path,
                            'URL' => $path_url,
                            'trashHash' => $mkTrashHash,
                            'winHashFix' => DIRECTORY_SEPARATOR !== '/',
                            'uploadDeny' => array(),
                            'uploadAllow' => array('image', 'text/plain'),
                            'uploadOrder' => array('deny', 'allow'),
                            'accessControl' => 'access',
                            'acceptedName' => 'validName',
                            'disabled' => array('help', 'preference','hide','netmount'),
                            'attributes' => $mk_restrictions,
                        ),
                        $mkTrash,
                    ),
                );
                //run elFinder
                $connector = new elFinderConnector(new elFinder($opts));
                $connector->run();
            }
            die;
        }

        /*
        permisions
        */
        public function permissions()
        {
            $permissions = 'manage_options';

            return $permissions;
        }

        /*
         Load Help Desk
        */
        public function load_help_desk()
        {
            $mkcontent = '';
            $mkcontent .= '<div class="wfmrs">';
            $mkcontent .= '<div class="l_wfmrs">';
            $mkcontent .= '';
            $mkcontent .= '</div>';
            $mkcontent .= '<div class="r_wfmrs">';
            $mkcontent .= '<a class="close_fm_help fm_close_btn" href="javascript:void(0)" data-ct="rate_later" title="close">X</a><strong>WP File Manager</strong><p>We love and care about you. Our team is putting maximum efforts to provide you the best functionalities. It would be highly appreciable if you could spend a couple of seconds to give a Nice Review to the plugin to appreciate our efforts. So we can work hard to provide new features regularly :)</p><a class="close_fm_help fm_close_btn_1" href="javascript:void(0)" data-ct="rate_later" title="Remind me later">Later</a> <a class="close_fm_help fm_close_btn_2" href="https://wordpress.org/support/plugin/wp-file-manager/reviews/?filter=5" data-ct="rate_now" title="Rate us now" target="_blank">Rate Us</a> <a class="close_fm_help fm_close_btn_3" href="javascript:void(0)" data-ct="rate_never" title="Not interested">Never</a>';
            $mkcontent .= '</div></div>';
            if (false === ($mk_fm_close_fm_help_c_fm = get_option('mk_fm_close_fm_help_c_fm'))) {
                echo apply_filters('the_content', $mkcontent);
            }
        }

        /*
         Close Help
        */
        public function mk_fm_close_fm_help()
        {
            $what_to_do = sanitize_text_field($_POST['what_to_do']);
            $expire_time = 15;
            if ($what_to_do == 'rate_now' || $what_to_do == 'rate_never') {
                $expire_time = 365;
            } elseif ($what_to_do == 'rate_later') {
                $expire_time = 15;
            }
            if (false === ($mk_fm_close_fm_help_c_fm = get_option('mk_fm_close_fm_help_c_fm'))) {
                $set = update_option('mk_fm_close_fm_help_c_fm', 'done');
                if ($set) {
                    echo 'ok';
                } else {
                    echo 'oh';
                }
            } else {
                echo 'ac';
            }
            die;
        }

        /*
         Loading Custom Assets
        */
        public function load_custom_assets()
        {                 
            wp_enqueue_script('fm-custom-script', plugins_url('js/fm_script.js', __FILE__), array('jquery'), $this->ver);
            wp_localize_script( 'fm-custom-script', 'fmscript', array(
                'nonce' => wp_create_nonce('wp-file-manager-language')
            )); 
            wp_enqueue_style('fm-custom-script-style', plugins_url('css/fm_script.css', __FILE__), '', $this->ver);
        }

        /*
         custom_css
        */
        public function custom_css()
        {
            wp_enqueue_style('fm-custom-style', plugins_url('css/fm_custom.css', __FILE__), '', $this->ver);
        }

        /* Languages */
        public function fm_languages()
        {
            $langs = array('English' => 'en',
                          'Arabic' => 'ar',
                          'Bulgarian' => 'bg',
                          'Catalan' => 'ca',
                          'Czech' => 'cs',
                          'Danish' => 'da',
                          'German' => 'de',
                          'Greek' => 'el',
                          'Español' => 'es',
                          'Persian-Farsi' => 'fa',
                          'Faroese translation' => 'fo',
                          'French' => 'fr',
                          'Hebrew (עברית)' => 'he',
                          'hr' => 'hr',
                          'magyar' => 'hu',
                          'Indonesian' => 'id',
                          'Italiano' => 'it',
                          'Japanese' => 'ja',
                          'Korean' => 'ko',
                          'Dutch' => 'nl',
                          'Norwegian' => 'no',
                          'Polski' => 'pl',
                          'Português' => 'pt_BR',
                          'Română' => 'ro',
                          'Russian (Русский)' => 'ru',
                          'Slovak' => 'sk',
                          'Slovenian' => 'sl',
                          'Serbian' => 'sr',
                          'Swedish' => 'sv',
                          'Türkçe' => 'tr',
                          'Uyghur' => 'ug_CN',
                          'Ukrainian' => 'uk',
                          'Vietnamese' => 'vi',
                          'Simplified Chinese (简体中文)' => 'zh_CN',
                          'Traditional Chinese' => 'zh_TW',
                          );

            return $langs;
        }

        /* get All Themes */
        public function get_themes()
        {
            $dir = dirname(__FILE__).'/lib/themes';
            $theme_files = array_diff(scandir($dir), array('..', '.'));

            return $theme_files;
        }

        /* Success Message */
        public function success($msg)
        {
            _e('<div class="updated settings-error notice is-dismissible" id="setting-error-settings_updated"> 
<p><strong>'.$msg.'</strong></p><button class="notice-dismiss" type="button"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 'te-editor');
        }

        /* Error Message */
        public function error($msg)
        {
            _e('<div class="error settings-error notice is-dismissible" id="setting-error-settings_updated"> 
<p><strong>'.$msg.'</strong></p><button class="notice-dismiss" type="button"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 'te-editor');
        }

        /*
         * Admin - Assets
        */
        public function fm_custom_assets()
        {
            wp_enqueue_style('fm_custom_style', plugins_url('/css/fm_custom_style.css', __FILE__));
        }
        /* 
        * Media Upload
        */
        public function mk_file_folder_manager_media_upload() {	
            $nonce = sanitize_text_field($_REQUEST['_wpnonce']);
            if (current_user_can('manage_options') && wp_verify_nonce($nonce, 'wp-file-manager')) {
                $uploadedfiles = isset($_POST['uploadefiles']) ? $_POST['uploadefiles'] : '';
                if(!empty($uploadedfiles)) {
                    foreach($uploadedfiles as $uploadedfile) {
                        $uploadedfile = esc_url_raw($uploadedfile);
                        /* Start - Uploading Image to Media Lib */
                        if(is_multisite() && isset($_REQUEST['networkhref']) && !empty($_REQUEST['networkhref']))
                        {
                            $network_home = network_home_url();
                            $uploadedfile =  $network_home.basename($uploadedfile);
                        }
                        $this->upload_to_media_library($uploadedfile);
                        /* End - Uploading Image to Media Lib */
                    }
                }
            }
            die;
        }
       /* Upload Images to Media Library */
		 public function upload_to_media_library($image_url) {
            $allowed_exts = array('jpg','jpe',
                'jpeg','gif',
                'png','svg',
                'pdf','zip',
                'ico','pdf',
                'doc','docx',
                'ppt','pptx',
                'pps','ppsx',
                'odt','xls',
                'xlsx','psd',
                'mp3','m4a',
                'ogg','wav',
                'mp4','m4v',
                'mov','wmv',
                'avi','mpg',
                'ogv','3gp',
                '3g2'
            );
            $image_url = str_replace('..', '', $image_url);
            $url = $image_url;
            preg_match('/[^\?]+\.(jpg|jpe|jpeg|gif|png|pdf|zip|ico|pdf|doc|docx|ppt|pptx|pps|ppsx|odt|xls|xlsx|psd|mp3|m4a|ogg|wav|mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2)/i', $url, $matches);
             if(isset($matches[1]) && in_array($matches[1], $allowed_exts)) {
			// Need to require these files
					if ( !function_exists('media_handle_upload') ) {
						require_once(ABSPATH . "wp-admin" . '/includes/image.php');
						require_once(ABSPATH . "wp-admin" . '/includes/file.php');
						require_once(ABSPATH . "wp-admin" . '/includes/media.php');
					}
				
					$tmp = download_url( $url );
					$post_id = 0;
					$desc = "";
					$file_array = array();     
                    $file_array['name'] = basename($matches[0]);
                    $file_info = pathinfo($file_array['name']);
					$desc = $file_info['filename'];				
					// If error storing temporarily, unlink
					if ( is_wp_error( $tmp ) ) {
						@unlink($file_array['tmp_name']);
						$file_array['tmp_name'] = '';
					} else {
						$file_array['tmp_name'] = $tmp;
					}
					$id = media_handle_sideload( $file_array, $post_id, $desc );
					if ( is_wp_error($id) ) {
						@unlink($file_array['tmp_name']);
						return $id;
                    }
            }
         }

         /**
         * Function to download backup
         */

         public function fm_download_backup($request){
            $params = $request->get_params();
            $backup_id = isset($params["backup_id"]) ? trim($params["backup_id"]) : '';
            $type = isset($params["type"]) ? trim($params["type"]) : '';
            if(!empty($backup_id) && !empty($type)){
                $id = (int) base64_decode(trim($params["backup_id"]));
                $type = base64_decode(trim($params["type"]));
                $fmkey = self::fm_get_key();
                if(base64_encode(site_url().$fmkey) === $params['key']){
                    global $wpdb;
                    $upload_dir = wp_upload_dir();
                    $backup = $wpdb->get_var(
                        $wpdb->prepare("select backup_name from ".$wpdb->prefix."wpfm_backup where id=%d",$id)
                    );
                    $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/';
                    $backup_baseurl = $upload_dir['baseurl'].'/wp-file-manager-pro/fm_backup/';
                    if($type == "db"){
                        $bkpName = $backup.'-db.sql.gz';
                    }else{
                        $directory_separators = ['../', './','..\\', '.\\', '..'];
                        $type = str_replace($directory_separators, '', $type);
                        $bkpName = $backup.'-'.$type.'.zip';
                    }
                    $file = $backup_dirname.$bkpName;
                    if(file_exists($file)){
                        //Set Headers:
                        $memory_limit = intval( ini_get( 'memory_limit' ) );
                        if ( ! extension_loaded( 'suhosin' ) && $memory_limit < 512 ) {
                            @ini_set( 'memory_limit', '1024M' );
                        }
                        @ini_set( 'max_execution_time', 6000 );
                        @ini_set( 'max_input_vars', 10000 );
                        $etag = md5_file($file);
                        header('Pragma: public');
                        header('Expires: 0');
                        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                        header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($file)) . ' GMT');
                        header("Etag: ".$etag);
                        header('Content-Type: application/force-download');
                        header('Content-Disposition: inline; filename="'.$bkpName.'"');
                        header('Content-Transfer-Encoding: binary');
                        header('Content-Length: ' . filesize($file));
                        header('Connection: close');
                        if(ob_get_level()){
                            ob_end_clean();
                        }
                        readfile($file);
                        exit();
                    }
                    else{
                        $messg = __( 'File doesn\'t exist to download.', 'wp-file-manager-pro');
                        return new WP_Error( 'fm_file_exist', $messg, array( 'status' => 404 ) );
                    }
                }
                else {
                    $messg = __( 'Invalid Security Code.', 'wp-file-manager-pro');
                    return new WP_Error( 'fm_security_issue', $messg, array( 'status' => 404 ) );
                }
            }
            if(!isset($params["backup_id"])){
                $messg1 = __( 'Missing backup id.', 'wp-file-manager-pro');
                return new WP_Error( 'fm_missing_params', $messg1, array( 'status' => 401 ) );
            } elseif(!isset($params["type"])){
                $messg2 = __( 'Missing parameter type.', 'wp-file-manager-pro');
                return new WP_Error( 'fm_missing_params', $messg2, array( 'status' => 401 ) );
            } else {
                $messg4 = __( 'Missing required parameters.', 'wp-file-manager-pro');
                return new WP_Error( 'fm_missing_params', $messg4, array( 'status' => 401 ) );
            }
        }

        /**
         * Function to download all backup zip in one
         */

        public function fm_download_backup_all($request){
            $params = $request->get_params();
            $backup_id = isset($params["backup_id"]) ? trim($params["backup_id"]) : '';
            $type = isset($params["type"]) ? trim($params["type"]) : '';
            $all = isset($params["all"]) ? trim($params["all"]) : '';
            if(!empty($backup_id) && !empty($type) && !empty($all)){
                $id = (int) base64_decode(trim($params["backup_id"]));
                $type = base64_decode(trim($params["type"]));
                $fmkey = self::fm_get_key();
                if(base64_encode(site_url().$fmkey) === $params['key']){
                    global $wpdb;
                    $upload_dir = wp_upload_dir();
                    $backup = $wpdb->get_var(
                        $wpdb->prepare("select backup_name from ".$wpdb->prefix."wpfm_backup where id=%d",$id)
                    );
                    
                    $backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/';
                    $dir_list = scandir($backup_dirname, 1);
                    $zip = new ZipArchive(); 
                    $zip_name = $backup."-all.zip"; 
                    if ($zip->open($zip_name, ZIPARCHIVE::CREATE  || ZipArchive::OVERWRITE) === true) {
                    foreach($dir_list as $key => $file_name){
                        $ext = pathinfo($file_name, PATHINFO_EXTENSION);
                        if($file_name != '.' && $file_name != '..' && (is_dir($backup_dirname.'/'.$file_name) || $ext == 'zip' || $ext == 'gz') ){
                          
                                if(strpos($file_name,$backup) !== false ){
                                    $source_file = $backup_dirname.$dir_list[$key];
                                    $source_file = str_replace('\\', '/', realpath($source_file));
                                    $zip->addFromString(basename($source_file), file_get_contents($source_file));
                                  
                                }
                            }
                        }
                    }
              
                    $zip->close();
                    if(file_exists($zip_name)){
                        //Set Headers:
                        $memory_limit = intval( ini_get( 'memory_limit' ) );
                        if ( ! extension_loaded( 'suhosin' ) && $memory_limit < 512 ) {
                            @ini_set( 'memory_limit', '1024M' );
                        }
                        @ini_set( 'max_execution_time', 6000 );
                        @ini_set( 'max_input_vars', 10000 );
                        $etag = md5_file($zip_name);
                        header('Pragma: public');
                        header('Expires: 0');
                        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                        header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($zip_name)) . ' GMT');
                        header("Etag: ".$etag);
                        header('Content-Type: application/force-download');
                        header('Content-Disposition: inline; filename="'.$zip_name.'"');
                        header('Content-Transfer-Encoding: binary');
                        header('Content-Length: ' . filesize($zip_name));
                        header('Connection: close');
                        if(ob_get_level()){
                            ob_end_clean();
                        }
                        readfile($zip_name);
                        unlink($zip_name);
                        exit();
                    }
                    else{
                        $messg = __( 'File doesn\'t exist to download.', 'wp-file-manager-pro');
                        return new WP_Error( 'fm_file_exist', $messg, array( 'status' => 404 ) );
                    }
                }
                else {
                    $messg = __( 'Invalid Security Code.', 'wp-file-manager-pro');
                    return new WP_Error( 'fm_security_issue', $messg, array( 'status' => 404 ) );
                }
            }
            if(!isset($params["backup_id"])){
                $messg1 = __( 'Missing backup id.', 'wp-file-manager-pro');
                return new WP_Error( 'fm_missing_params', $messg1, array( 'status' => 401 ) );
            } elseif(!isset($params["type"])){
                $messg2 = __( 'Missing parameter type.', 'wp-file-manager-pro');
                return new WP_Error( 'fm_missing_params', $messg2, array( 'status' => 401 ) );
            } else {
                $messg4 = __( 'Missing required parameters.', 'wp-file-manager-pro');
                return new WP_Error( 'fm_missing_params', $messg4, array( 'status' => 401 ) );
            }
        }

        /*
        * Redirection
        */
        public static function mk_fm_redirect($url){
            $url= esc_url_raw($url);
            wp_register_script( 'mk-fm-redirect', '', array("jquery"));
            wp_enqueue_script( 'mk-fm-redirect' );
            wp_add_inline_script('mk-fm-redirect','window.location.href="'.$url.'"');
        }

    }
    $filemanager = new mk_file_folder_manager();
    global $filemanager;
    /* end class */
endif;

if(!function_exists('mk_file_folder_manager_wp_fm_create_tables')) {
	function mk_file_folder_manager_wp_fm_create_tables(){
		global $wpdb;
		$table_name = $wpdb->prefix . 'wpfm_backup';
		require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
		if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
			$charset_collate = $wpdb->get_charset_collate();
			$sql = "CREATE TABLE ".$table_name." (
                    id int(11) NOT NULL AUTO_INCREMENT,
                    backup_name text NULL,
                    backup_date text NULL,
                    PRIMARY KEY  (id)
                ) $charset_collate;";
			dbDelta( $sql );
		}
	}
}

if(!function_exists('mk_file_folder_manager_create_tables')){
	function mk_file_folder_manager_create_tables(){
		if ( is_multisite() ) {
			global $wpdb;
			// Get all blogs in the network and activate plugin on each one
			$blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
			foreach ( $blog_ids as $blog_id ) {
				switch_to_blog( $blog_id );
				mk_file_folder_manager_wp_fm_create_tables();
				restore_current_blog();
			}
		} else {
			mk_file_folder_manager_wp_fm_create_tables();
		}
	}
}

register_activation_hook( __FILE__, 'mk_file_folder_manager_create_tables' );
images/loading.gif000064400000264652147361034400010136 0ustar00GIF89a�]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^aaacccfffiiikkknnnqqqtttvvvxxxyyy{{{}||~}�~}�~{�~x�~r�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~a�b�c�c�d�f��g��j��j��j��j��i��j��j��j��j��j��j��j��j��k��k��o��u��}���������������������ɯ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!�NETSCAPE2.0!�	�,��	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s��dIңD���O�����ӫ_Ͼ�����'z$��&b̔.���C��(�h�&��6��z��%���)���v�� �8�	����%!���,��"�!`��)&�h�8�ȡ	&�d":)�D"b�L�h@�L6�����Ȃ �$�X�	(\v��`�)�d�i�h���ejb�$�0��
6�2%$��#�p[6�<�A�'(�* �H�������R%�A#��L#J��%'Ur�"�g�"ZR�)��&��m�A�x2�1t‘�B� R4)�B3�"˲�6�,��D+��Vk��f�-/�v���+��+̹覫.��L3((B4qH��`�P6�Ha,�a�'���7�p�_D,��Wl��g�qw���;B�)�4�
��gGS�HC�H��4���8笳�����?�,��K2LC(IG�x�5�l��4�l��V���Z�Б��5�h
G�lB�H��p���t/��x[����K�iB�: 
iB �"�˿q7Cݐם��y�m9Ǎ�P1���F"ȉB���㑧~5�o}��z������&ڙ-��޸����>����	-B��qSl��x�������ƿ.�AǴ
`+S�	��$�Mգ���o/?���.�A-kE�
����B��?���_����
� C|�YZE�G$$7��
h@�O����A1 T���A���
r{� ��j $J\D&1 $D�-t������r�;H�4	��K@�H�H�!°��;"����(O@��4��h䀊p���E-�Q�Ā4ஈ��@%;,ИF5���s�ޚxf����@��qj~�# Y'ȯ�!!�� "*!�{d�"��IR��^ Aj$ UEDJDE	IRFΔ�C�׾W 	H�_DZ�̖��e�t9�$$� D� `�ј�D�䔉7f��Ā�C(J��&���Mnr͛B�A(1 DHĜ�B�A��΂�sn�<A&O�t2@a�#d�}�ӟ�\]@]7P��� ™D 1 ���YD%:Q�U�c�@		��P@�<H.B������;)�T��"r�dBB�O�f
�A�i����ș9��B�H�>Ψ<CjNO*M�P@���0�~��YժƔzQ�4�@b��5:��VE��ԺV��� �pU� ��-"!U��^q�׾V4}ID,)BOu`�iQ��fL��$6�
 }F�
+BX�P�vֳܫ�hW"U�m"�����ͺ�n��[EuX�
h�耈QU�6a�.<j*�"�
�=��)�����!�]E�G IMO��U�x��M=�� � �0+E
�#*��J��m*�R��<�3��%�|`]2����N����1�Y-%<a
'��0TBP�� �"O�n�G��@0�i׃ #Q��uGd��8�8α�I�e,�$(P\7���!1�Y���#�*^�q���BQ_����%�/�H����(��Fn���(�Y�n��M�B�\�N����F����W�FP��Ⱥ��p|,s��zq41+i���0�He��ȕ%�D�t)����4k��b��$*df<����Kr�={���kR!	@ ���.	4�|�*])K[b���M�r���jr��l!�^.�r�D�z�;A�u	*�z�~��I(p/M4����.:�o�	g#��w����TD��ϸ�T�H(Ƞ"�����{�������Th��O|fN���8�|$Q	M�b��	�ЇN���HO�җ��;��P��ԧN��[��XϺַ��{��`���N�����hO��������p����N����xϻ��������O����O����;�񐏼�'O��[���M@!�	�,�VJE]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___```bbbccceeeggghhhhhhpig�nf�td�za�}`�}`�}`�}`�}`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a�b�c�d�f�g�h�h�k�n��r��y��������������������������������������������������������~��z��m��j��j��j��j��j��j��j��j��j��j��j��j��j��j�l�n�o�r������������������������������������������}�~y~yvwvuvuvvvyyy����������������������������������������������������������������������������������������������������������������������������������������Î�Œ�ǖ�ǘ�ǘ�Ě����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�E�떦H���O�����ӫ_Ͼ�����G�t�W�hܔn�E)���(�h�&��6���PI/��3���v�� �8`�4�/z���,��"�z���2|�h�8��!��4�#:)�DB2�L�l@�L6�"��tɂ!<b	'��w̖\v��`�)�d�i�h��&���‰%��� &.mS#�"h2;�}3�&"$��6+1聛�x3���I�t`��hÛ6�(Y`���ˁ���4��KI�h:����nP�H��I 	�'
	��MHޤH`>DO=�&���.�?�F+��Vk��ZkM5�v���+��;M4覛�4�@�M�ѮG�Q�%�4��=LQÿ,�q�'���7���
�b��Wl��g������� �܆'��MCߔJ  |v4%��4O;l��C���<�,1�@-4��l4ȶ@Ӑ�n��0���B�8���X�`p�\w���C�-v�Em�'�,��.���P�A�0�C�xۼ���|��0�c.8�e�m�-�&�
�#n��zP<��m��{��y׀�y؅~tJ'$�������<>\.;��on�Ν�;ǡ�n��(�|d���(DO�7_���3����_ܻ�F�P%vj;��A��{�?��O_���\���="4����2E��IB��d�>�E�}��25�� /��*�(u����g��/� ���1O�� ��@�,¸i"!�9�A"0��!	�0��db@�z�H4T��Da�4��n�C�鐄i��A�A �AAB��$*zLl�؞HB��?�E�%��!D�]�[�ط0�t;�Nv�	�F�����rs����xG�����@H/�)>��A�q��%R�\cd#��G��!� У�� !P�$"Ay;Q�rc�d�r�C"�Pr>Yf퓴��-u�Kbp w
Щ"r�E��Ɣc27g�eb���A��F�T0@�;H>��7dn�a����=3$��rZD(1 [ ���Ě;�1y�����A81 KH��?*P��ѠN,���x�\�YĀ�I�^m�UX<1?����	f�!K�s�&�JS���b����A* �F���D�:s�7�r��ct��~��qB"X�5'�Ԧ:�g>5(P
WĂ@b@��$�I̮l�N
�<�j6Mn��C�'� "$�n
\y*Wo��h�HHD�@#�8
����.�"jAR9��E���^���`���0�_d����� B�Q"!G4-e-j�[���	��5)"S�`��nQ�5��Q��C�7P' �Ndj,Br������mb�W=�!��$`(��2W��u$tCfE�Db@{��&��0A��}'x��\$��V�H0��1����YOL
!"��*>E!�[#��	��i8�@�A �]���B��U���M�k\�����f�`j�1�Ơ�1Ǻc�xt@x��(鶄P���]|�QO*!��Vy6
H*�)�dE*9���B����t#�򅭬�l���o!8q1��xC���F�*�JȌf����G�!_^�}	�O�Զ�'T��AI+���ӡ'x�P+�6%�V=���!�j��w]�ge�����U�b���>���U߅��@y�dG�Q��@���U�B�f���@�"0`E�
�S$�P��3
�H�#م�D�n�S���Q�[mj��
74�mW9%�H�:\��5��
/���������5y�� ��G��6��hL#��v��I0���tU�0��3ϹΉ�2�$�޹Ї�"<�'�P8ї�tɨ'��DЛN���DCц.A�{=�p�.�m<��E&������p�����L�b�xٱ�������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;��Џ����!�	�,�[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^aaabbbeeehhhkkkmmmooosssuuuyyy����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a�c�c�e�e�d�c�c�a�~`�~`��k��j��m��r��y��|��������������w��j��j��j��j��j��j��j��j��j��j��k��m��n��o��p��q��q��q��q��r�u涅ѹ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�
����'��O�����ӫ_Ͼ�����0�V�aٔf�D���(�h�&��6��jD,���/J��v�� �8`J��S,���,��"�Ȣ�.�h�8�!&�D�
:)�D�@�L�X@�L6����4Ă� �Ѳ˖\v��`�)�d�i�h��&����B����C��M�n`�-���-Fl�`��ѣm�������Z06�a3��^�I��C5�U�Á����fPq��`P���T͜vpdq�pP`���M���MD�(���6���2�̴�Vk��f���Jͷ�+��k��37eB�l��7"D7
ys$���,�2
%'���7���;l�Wl��g���k��2�
.�2�ͩ��gGS�CC�@H�4�L����9O���@��� 
�0
�<��R`�*�
$6Wm5�8��:�,��`Mt�EG�kBݼK�.�- �&�
$�\mw�Ys����	{�߀W<6�E?Q�A�+`�B gtM�wW~3ߘ��w�=8� �tB��: -}@�-
13���w��힃�
�(� d$�u&�z��<{��7�9��g��� ��P�h�7�h�5�z��/��?��OO��T
�z�2E�Xڔ�_>�T���=�Q�:H�d�8J@�A��?��/�� qg@�����ô��J@FHH3QAb0��`�:H=���@E�A�a$��-D�_���0p4�]�u�`(ri€6�eхD<����$�N{AT�XA�z	H?��ؼ-rl^]Jf�	��F���?�1yCd#��F��t�:H,d&Bd�cA��G@
�y�,����I' $��Cf1������%y�IMv쐄�AB% �E$T�K�PY9U��k�� '9����	@����>�2���\+��a��w��� �hI�3a��hBl���,	Ƃ,@H�����Pr���4'�ЙN���lQ:��h3@��'>�O���&�j\HE'�л���{(D�Y��Ģ�hD��z���GA*@��� �BzF� a@�4�8c*S�nM��ĩf�
(	����ym��Fe�M�(Qݍ� =#��\"d�W%�L���t*5nq���	H�bZe�U�n�]%\	ҽ��."<�$	ӽ��k�[4�V�����lñ[�Q�JM�� �����ey��c!1���A5�<�CU���?`-A�([���v�5$eA�M�t�t�H5Vw��K�4��+�O��U@��ۃ�к�=nm��\ʞ� a�,r�&����.H���u�� � Pw)R�����m(	�"D-�ԭ��ȃX�{M�>��C����> \�o@"P����asr��q��B�
 �b��/A��G��G���/#�
�ؖk蕨>�%�e�D$� ��Di3
Hᝠc���)o���M�6�xQ��@ x0B��V2_��4`+�ln�@P�O	
3���΂�3�>��='�@.�kt�|���D4�>�!���3�X:Ua��XpuH����VG�[����c�-t�ָ��0@�w�ˑ���+��@`I��������"hT�ڭ��YWh�{�ʔ��X�$��U���g�d��E6�SR���'h�W_#�&� ���K��I�JW�Қ��;��WS���aH�U�7~ꤎ{��
0L�~Ac����D
A�gB�?���0W�mY�:�8�9�>`c�#C:�Ё�����P����_@�sQ�Z�b	EO|���{��`O��W�"Rǎ�������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�����~o!�	�,�\\[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^```bbbcccdddeeefffhhhkkknnnppprrrssstttvvvwwwxxxzyy|{{�}|�}{�}w�~o�}`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�b�e�h�l��y����������������������������黕��ŕ�ƕ�ƕ�Ɣ�Ɣ�Ɣ�Ŕ�ē�侍�{�t��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�tϸx˸wʸwȸxƹx�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s��%K��J���O�����ӫ_Ͼ�����W2�J�-bߔz�%ꃀ�(�h�&��6��� �,�U0���v�� �8�
�sO��2��,���02H-'�䋆1��<n�B06iSI�Di䑕h3�+��P��A,1�������+���˗`�)�d�i�h���l��&����
*�P���ԍ
	�`J.�FN.����
ݬ��m��� ¤�b@
7�mCJ�j0�I����iʁ�����vpq�pP ���͝��*qĈP�ۄΊ�P�C�0���F+��N�L4�f���v���z;M5�k�覫��+D߰P�	�|T#�2NC�(��6,�l�#!��7���G,��K��g���w����BK1�44ΪNhGVJC�,�4�ls�
S���<�l1�@-4�Pd����Q.��B�,q��T'���X����\wt+����8��G8
(²�ÄU�-�
9gm��
o��|���&�p��7���F�ȁ�M#�ܐS]7ޔc�wߘs��ߛ|2�B�l@�-�@`.
MD��<y����s�w/
%>�
�B`�	93s���z��C|9��s���̚�(�rQ9��A��^��8'/~�͗������6�H���B`)	��8��|���/o~���'�w��	���4@@�H-�����1/��39����Gi)\�L��i@�� �*h��a�v�;H)T���@�HNAN���-��9���db�C^1�$�<��� �m����A����"��(�(�/�S�[��5,���:�$����z��=4�1kkdc��Jd€!��� ������@
Rhn��+�
=
"���I�����		�O$�P"]Dba���Δ��#*yfIU�,�k A��VED�'qY<]�Rv��07���ɋQ`��w�b03�Ϭ\/�y>VBO�1 �@�(��7Y��pJl����4a��TH�Ā�t]̓���>�i~� �%$B���\=���2�b�DHD4ш�1@��fF!�Q���{���O1J�A�Ҹ�ԥ��G�)K��P@���̃t��r�)P���i~Κz(D)��!�P��T]J�|N�m�:"?���a�P-�6��s�4�����p@�,H$�z��r����L
���0"��[p��s�b�	L%
D�� r��!e���2�˺v-�$D��;��T��@-A���ղ����]���q�N@��6N����;۬/ݘT��U@��H	tڃ�й�.Ť�J7zV ��	,r
&�	�%�aJ�KbQ�A‪K�[���_|6_{�W�C4žR���"�#�!�V�8�f���`�����Ĉ�U��~f����O�W �P-2�'��8�)�劃@'d�Z�F������~(�x�;4�"Q��>��0
�E|���{2Y����A����T#���5���;na+^ፅ�#z�Fj�O��,�o�d��G�,'J)GΑ��_�J�A��AӮ���2��2�F	�钅V�4�Z�N����V��խW�fM�Z�+"�*
��m�Y�zN�
�az$R�b[؊@�rHn���FU�:I,��M�6���c���
�)J-�o�B��6rJ���i@��[s�a���.P	�}p48AX����;�������9թ�	�D`WR��F�� ���P�o�#�"O�ʏĂ	��5^��g�0�&�Ũi��C��(�M�!�T���HO:�T�
a�'ۀ%��\��ŷ�a�"�(x�C�����hO�{*Q�T����:v�N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O��y!�	�,�YVT]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___aaabbbccceeehhhjjjmmmooorrrtttxxx{{{����������������������������������������������������������������������������������������������������������������������������������������������������Ž�Î�Î�Î��������������������������������������������}؝v�t�r�q�p�p�o�n�j�h�a�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a��f��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��q��x��z��z��}����ﺐ彚ۿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�=���0��O�����ӫ_Ͼ������xB%�g锦ӥ���(�h�&��6�����.��2R��v�� �8�	S0��.#���,��"�$�2�h�8��	��T
:)�D�P�L�8@�L6�����Ă аD���̖\v��`�)�d�i�h��&��t�3|�`.�S�"<!<��#�"$x:+-�߁O�x�2O ��'ݲ��4qo�0�d��r�-*q�o�(q`.%!��C0��0#�#'�#�J�3���9!�CB�(��6�$���6���:�M7�Vk��f���jη�+��kn��@�
���G�P��2�N5��Ⱦ����,���hb�'���7�0�[�!��Wl��gL��@�NC�J`|v�D�J4��+v���0�\��4�l3�k���<[,8
�< 	S�	�&��+17�t�3�,��5����Xc,9��.��ptg�"�;�����l5�p�}��Y�m�,f#�N�����/z��A��ሿ-��R�m��WktB�t@�/�@�0
�cD����⌗��㐧�3�(���B 
�S����;̤��¨�.<��(��2Zϰ:p)B�܎������k���S�:B�
 	%S�t"�>��{��{}��o�}�_�Д�ZQ���B���/~���W:�ݏ{Vx�&% �U�WzBB�a�&0~d���@��	9��HP�g�	�B��A��P�q#a	Sg#|� �� �� B�� !Ϙ!
kH��j:����O!�P�ER0 �!$
J|u��'6N�;�bց��	a���!�q�M4#���ƬQ��;�.�Bz�A~��%�1te�c���?�Bo��Cx1�İ�b|��")��Q�~,BBB0 �E�}K��fJQ����lOɳ?�@�P�"
�tl�#my�\6�����1$QA"��DP23q�d�.��1_Z� ��!"4M!�Pf-�	�p���&�4�%"�-A"1P�)Oz�
��D�8�y1_�� ��$"�i� �(�AG��2���DHD$��1@�<H<��ѧ!���(�|IL��S@��H�̓t�-u�K;�P�N̗�4�
�3@�$�F���&��F
�/�AM�Jd��Bf�yR5`V�'V��K6D�8�Cη�O��/Kk8�*�?�� |�"��)� �`)^eS(f�n�iA��B����+A֡����S��G�8ā�5@(D���!D���,cA{3�2��==H;�U��@P-A~j@��V����c��i���@%R��ٵ��lr'�ܫ����(�6!�mvݶ]�v���kT�@��) v�/�:Ӷ�|�A�A��VD�PM���_��g����f��h�Y�y�s�Ѹ�o.�K/
!� P	�+NH
��2,�R���^�[	ԋ���@E��@,�K��h4�B~�h$r@�R����zD�����,C|��E�8 �� ��2���lF-?�1�b�&�iY���D7sOnMH;~�ߍ�ԟ*c��C?��xk�|Q��I�^
�W�B�`Sv��⎓$�����lD�հ�u��խZ�ֵ>��w��oqM]_�	�r�9@#�aqxU 3���jq|�(��$L���S�S�`P��|�L�@�EJ�q+NA�B�I�(��)��������8�
*�w�H�㔰cT��r��59�����'��6Q�M38��fpX���N
���G� �dp%��W>$�9&�H9�gNs��8ᅪk��C���	3�@h���2�^ޓs�bG��G��؂�D9G3|��)8<�	���N����=4p�p�f`;p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����	!�	�,�A-%^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^```aaacccdddfffgggjjjlllnnnqqqrrrtttuuuvvvxxxyyy{{z|||}||}|||{�|{�}m�}h�}e�}b�}`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`��d��i��i��j��j��j��j��j��j��j��j��v��~��������|�|黂俈�ď�Ï�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ľ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�KE
T&9y��O�����ӫ_Ͼ��������T*`│+eIĀ�(�h�&��6���`I)��.���v�� �8����)&���,��"�'��.-�h�8��a��$:)�D�!�L�p@�L6�"��tɂ"�a	}����\v��`�)�d�i�h�9&w�dbI ,��K�Ԉ 	��l晴			���J���`&&��K&���I�t` �x�[7�(Y`2�4ʁ��0qHJI�h: ����r�H��I`	G'���MH�H��DDM3�&���6���.K�5�Vk��f���j�
2�+��k���@$��p�G��Q�%�4��/�T�þ����,�W��'���7���
o���Wl��glq������ǞMI`
}3�$�pB��0����l��5K���<�<q)�4�t�J�/��P8�0�t�2G-��4�l��6����\S�	2��.��p4��%�P:�H��.O-��V���x#�u��|�\
9
�S°�B��"�M&o?7ݐOmwޔ[�wߘk�E�		���f���(�
%�;��QO^��_���{�B��BF�x�Bð�:ܬ���'���7?�/
YB`��#l�����ën��+/~�Ηo��
�*�'�L��ΉP;�wO<����3o��^�FBL&��U�Q��4��/���`�e��+H7���U�W��A��6B
���
+hA�A!��	*#!�0�Qh<	��r�,l!ߺ�����@��H(4���p�<d��� 
�k�;�$
�b@�C�'�x�(o�TĚ���.|� �P&b��!�%���̸:4��rl4�R�q@q�́�T���|���x�5�g�+�8�b@%HH(��H�m����%�ׅ�J@��ȧ􂄠���4��P�ʇYr�;�A��SE��	I]��%036Ȃ�a@��$?����tf�Y9iN�bY,$‡Tb@�@�*�)�S����)�LYB"xP��HR�sn����̙O�e� �P$r�"D�<��Zņbn��(�� �8(���A5*��r�`�h,���3"�P7�͕��j/U�G�f@��P@�t��̃�#�?��K_ӆr� sP#RH–>���z����]9���h�%.�*U�r�\k%B'�YE��b�A0:W��ծ��+�fj�q Q"���*�r�հ�*G�:Mar@��C�$�Jర��f��U� C�PSe9��v �@mjÇج)�g�$�;$��Jd�+M����k��lm _k��R9��P��<گ�΅.9��F�DR�Er
�"dztnf{���j�F$PR#���!!�3!xw+^h���]xGB*:��N�zz�oٽ����<�`ނ�@)�mDz7�=��©�0f1�J
���
Q+��kȸ��|yK__�wc.�(��X@([B7<�Ŕt1������E�8 `7!�H��?J9s���4э��EL���d��9�g�)ʱ�u��@I�HM����5s�w�b�}�STy!�%J;B���^��ט����y��(����2$�ݰ��cE�հ����խZ�ֵ�ֹv�ksy!�*�
��n�m�ή
$�����@:��X��$"P�F��$��2�+u�LM�)���6��
�F����D��C��@B�^�"{���N�씘�T��R���;�������&7����Z[�:�� ����^�X�(O9�
�嘤��*���[�i������w��X'���yN��%J7Fa���"�@F��t��&���{��`���#L��>�(8v������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������}!�	�,�\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^aaaccceeegggiiilllnnnrrruuuwww{{{������������������������������������������������������������������������������������������������������������������������������������������������������͐��d�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�c�h�u�x�x�x�x�x�w�u�p��l��j��j��j��j��j��j��j��j��j��j��j��j��r��v��}����������������~��}��|��z��x��t�s����������������������������������������������������������������������Î�ő�Ɠ�Ɠ�ƒ�œ�ŕ�Ú����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�	��JՓ.��O�����ӫ_Ͼ������x���-a�ʃ�$���(�h�&��6��j�,��/Q��v�� �8 Q��S,���,��"�Ģ�/�h�8�!&�D:)�D�@�L�T@�L6�b���Ă�D�ٲ˖\v��`�)�d�i�h��&��t4`�`.�S�<�8����$�<+���O�h�/O �0)�b��4Ao�4�d��hR+.q�o��p�+%����B�-�XA.##'��J�0��A=!��A� T�1�$�,>�6���F+��N�O?�f���v���z{L2�k��K�2�@ϝz��G�P �4�0�@1Ŀ1Fl�'���+��G,��Wl��[<�"w��� ��q)�ӎ���MI`
��
�,p�8�s�g���@����D-�)�4��Pt���,�*6W=��Xg�s�Aw��C-�ئ(�P:��Gi�ǁ���
�U�|��x�m0��_��w�a�-xѦ��P<)�F�x����o�V�my�|��yׁ�9ȟ$�1�h�F��B�$Ay�w_.;ϛ��縇��0
5>bF�H�访^���7����W�y��+zzZ8�
X���n<�ɇ�p��k���1����B�	�����˗O���'���	�Ui��,���P
�۟���?�0��+9�׾�4�"�
�B�O��`kwANzq€:PaH	A�	#���p���k���v�DT1 
$d;�ag�C �M�C[-���"!��2�(,vS�]��5,f�h�8��䂉��zy��04��rkd���=��;$��� ��c��G�	�yn$��f��x�
�ŀ8��TH򌕤�%-���y"!!��"*-!�;��Ry�@�Rh���6TE���Au�G^��,&��gHQ`��wa0�_�t��|	͋eR���A�Bd	JB|��]�o�,����9N$
b�D`0 W $���=q�O}N�\�?
Š�@"1P���z*t�k�CQ�M� �P$B=�� �L(H�&ґ����B* �F���D�7e:S��t�8E�,
"CEA"��2�ը6mcI�fȂ�`@_�"m��\��W=�Q�Ti>� m��C�' "Ĕ�DkZ��U�����HH�����p@o-�-��W�u�[%�N�zC���t�+A���.l����&�yHV�"@�RFI굱�-��h�X�,
@S�HJ�����|�^c��f��AfdЉCu9�g�X�ׅ�=]�@�d/@0�t����Z7�"#�Av0 X
�EH+�J�����I=�"�
�w?>
7���uѧ��dt@���)��C	��Co�	��<�[�o@"`�Y!x�&x����6�"# �F���ﵸ�/�d�=�	�R�@ �H�T��%Dr;��L�,�!��q�ʊ�q@��AbaB)���l���B�.
��/��v���E��L�Yd9!��q|7Ԟ�lf���=�D>�~n
�Ҏ�6��bȾ�%E
��+t�"LA�clP�-Pn;Ҏ�!n
A���Q�Z�ַ�V�v��^�z\�
���ed���@XGH��fq���U��<�_l�?�"�-bE�
t�#����S�S���O��|�L�[�EJ|q+NAֳ���f'����T�C"���wȀJV��+����[��ϸ���&U���>���p��I(O���N����+��̅�
��0���w" '�p5χNty��=F]�;=@��́B�V�@�O�:�-@�V��(��-\�
'�'>hO������gNH�+l��c��xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;�7!�	�,�]]]]]]]]]]]]]]]]]]^^^aaaccceeejggthf�rc�|`�}`�}`�}`�}_�}`�~`�~`�~`�~`�~`�`�i�p�{�}�~�~�����채溈侉������俈�{�r��j��j��j��j��j��j��j��j��j��j�l���������������������������������������������������������������������������������������������������������������������������������������~~~xxxvvvxy�������������������������������������������������������������������������������������������������������������������������ó�Ų�ǵ�Ⱥ�ʼ�ͻ�ϼ�Ѿ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�5�Q ,`��O�����ӫ_Ͼ�����c	�h(Y�����gA��(�h�&��6��.�G&��+���v�� �8`���S&k���,��"�kx��*�h�8�a��D�:)�DbA�L�@�L6�����ǂh�G"�}rʖ\v��`�)�d�i�h��&��L�H"~l�����ԋ	.�(�f�(���`��Ċ�b�m�����$	/���"��I��G-���ǁ���
�&
q��$P���T˜�qdq� *���L��Q�C�Ȣ��.�=�F+��Vk��Zk�:�v���+��[N.覫��;D��8��|�L�QLCŸ�I"s,�B��'���7���
���Wl��g������ �,�� ��I,��{*�_�� ^�P/��A��8��<����-��A{L��H�l�-
�<`"�R`�,�K%8g}��>w�5�@-��B���$[��B��+�*�
��$%yh����\���M��Sl6ڈ�|I��B��il�	�	�P/�y߀w޵�.�቗��	�B速h�x��(���ι�C��sLz�Ǣ����Q&��P-�׾y����Eo=ȑ���Z����)B�4�޷G����S�Ŀ_�����*�k�LQ(։1S8���G����}ԋ����_$dJ
�E% �� X��
X�"�w
\`�|p���?P�������"oD;���P�H�^A`&�5TD��EB�
�P}�a�n�C���jy�,�Gh	�E�xD�%Q��cbG։��0���<�dn�ZK_�E0�M�c�R���a"��B�C8fM�s�[�8�<�~A���G���@�:(�7D&�k�d����ȏi!� ��y%����'sJQV����Y'I�(!�e�f��Z�rc�ĥ"��*"�)�C�s�<f�p�8HHr�D(�D����5;�Mm^,��,�A �Bd{�bBV�Nu��o�tg���HN d�D�0�(i����"Z8��q�Ā� /(1D�I�:,���E�hЃ�J@^���σ�s�+�I�R����-5B�Ј$b@�4:q�ӝ*���)�vH����y�_�4�N�\J'U�� XP#"���_mjX�7�;rq�4H3����q�kϠ�β�O�_F!X`!��`�W�F�5iA-H*4�cu�kA�!��>���4�u�I�J�g����E0մ���e/�Ą\A�yi�[�,��r�+j���G"���C%R1!��hrú\[67q�=�_tA�(�	�E!��]�vW��E�.�ֿV��EB(�]ܞV�D���0�)>�"� �B) ׿'�(y+2�!P�*�=�"!�&'ۻ�2R�G�2Š\W"�PR>�B8b.�?��"���F��Qىx�$6����
*!�eF��P�ro�c�%�d06�d�P+N��UVd�W,�A21��4Ƿ�kf‹3��1���i������0+dD�lG�: �2�f6��)h���nH}i�����׿�7�uV����'nQB�c��G���+"�j��e�l�������E�b���j���5_x9jxHva���������1�U���t��D�U�~k�g�dd���mM�;|�6�*pթD0n6�Dt�xe�Ԣ�B!�ؼ�a��|��`p�JV��$����{�� ����Ԧ7ũ��B^Y��:��0�y��	V<[�8�y��`�|"�:��[��W���җ�����:ӧN���a=�	/"��W��/G�"A���mb�w������p�;|�È�����ɻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;����M@!�	�,�]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^______``````aaabbbcccdddfffggghhhjjjlllnnnrqqusrvssztr�tq�um�xi�|c�}`�}`�}`�}`�}`�}`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`��g��j��j��j��j��j��j��j��j��j��n��w�����������}��z�x�z�}�㘀ۘ�ə�������������������������������������������������������������������������������������������~~~~~~~~~�������������������������������������������������������������������������������������������������������������������������Œ�Ɩ�Ƙ�Ŝ����������������¾������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�����&I��O�����ӫ_Ͼ�����K�tk�?y攚�U酀�(�h�&��6���`	/�U
>��v�� �8�!���/4���,��"�4�>�h�8��!&��$:)�DF��L��@�L6��	�Ąɂ/@r�'���ϖ\v��`�)�d�i�h��&�����%���`&.�S�2l�O5�U��&2$x�9+����h�=� �=)邂�!d�o�`�d�(�hR.Vr�o�Pr�.%��-�C�?�,�>#�#'�3�J<��B:!��"����;�$���6;�0�D+��Vk��f{�1�t���+��;.;覫���H�9w
h9UH��P�5���,�L�'���7���;܅Wl��g���k<* �,�Ȳ�4��J`#|v�I��4t.jl��G���<�<q�@-4��l�ѵ�Ӑ�vґ?2�B����7���\���`�t�G�-r-�,4M�����`lB���x�u��|����b.x�d�m8*�̍�93h�F�Ȃ���oޘ���|>��`~�ٱ(�<+�jF6�B�Ԝ��{sn�Ϡ�����B��/b��;�Ϟy�7/�����(d	��VTͰ�,B�+�<�Η���ѧO�����;�HC�?�&	M��������DǾ���P�ҀVGN�;��G��Y}�x�YЯ �0A�,ҫq"!�`+hA�a0��� �V=�hb@5�<D��|b��,la�^���p�"���RQ"�P2 Q��#bwD$����pA�B�x��1G>,nN�[[���X�� ��&B�!�w[c���ƾ�1�����Lg�	(ѐH>D���C�l,d�AE��#��ҋ� !��� 5y�Crrl�$]Bb0 _HTzB��J���[s�+;6GE"� pCUD�( I���x�%0�6L����3�t�8P@�;H�y5iNSg¬��bi60D�rZD*1�O �,�9��Nub�^�B<1�KH��B.�Ϭ�Ӑ��";�ʃ�2@�8耢dɆ:�]�gD�7Q�	Ԣj�D.Q�{z�f�i�D:R+�'5AdЈ�4@�4�8_:���ta4�Mg�N��P@��3�̃���z;j0k��r���Ā�GH	�%V��U�%5�^-�3��=�~�*�*0��������h���	�u�%�W͵�\MdIC�ӂ��@��4T0 ����_�
Xu
�w�@�.Ă>d����C;ڣ����=�,2�U��r�k2Ե>w�Zn
�͂P#uR�D�ẽ�2��0�[6�.�@��H
D	�иǍ�v_�ݣ�!��
,�	�#!��nz՛\�N�-HՊ�5@�����]������,�;���� �t���
~�a�����l@a��5@��݇{�}�8�%��{�J [b��(�f�����[�p,‹\/#Pܖ�5���Dr�K����(/b�����E�>�L-Ð�6H:5��nd�#��B�M6����m/檐q�����,!3�y���
�_x9!�%�==[��!����II�;Z�\���ơGti� �Y�n����^����2���Mla����ڱC�U �#$s.�2[^�	��V�3H.J Q��5�2K��0w�R����m|܊S���m̱�I�TN�;�{ ��=�M=n��N	9A%+a�>kʸ�7��{\Mmz�#�Ę GT�%ը��V��+H�1��\N�I��?fn�\D��Mx1����AEybO�P���n�%�p�å�u����@�Q�Q����O|������p�$4�	]��bǎ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;��Џ�o!�	�,�***]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___aaabbbccceeefffhhhjjjlllooorrrtttuuuwwwyyy|||������������������������������������������������������������������������������������������������������������������������������������������������������ӎu�~`�~`�~`�~`�~`�~`�~`�~`�`�h�t�v��x��w��v��o��j��j��j��j��j��j��j��j�n�{齀羃㾃޾�ξ�����������������������������������Õ����������������������¿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����se�����4��O�����ӫ_Ͼ�������(�%S��ʊ$%���(�h�&��6��� E$���'X��v�� �8�
X��O�HR��,���02h�$'��1��<n�(6��C�Di�;�2�#��P��#1Q�`;L�E#�T�ɗ`�)�d�i�h���l��&��D�S�‚U��
	�`�%����%V���
���^
n�X����	nP,��BE�r �I��+��Ł���	��~`	q�|P����ʝ��dq�J ��T�	�0KD�����F+�ΦRϵ�f���v����Cθ�k�覫���ʻ���,8�B-��B�S��.�D�El�'l0a4���G,��W<�rd���w��� ����l��LR
��*�4�QF�P,�4���<+̰�@-4��l��HM��L��+
�<�]���
��H�\wM��C�-v�E'm��G/�4ӊ���-�
�	GqX²	�	�^��3�c.��e�m����6�"$ˊ��Q%~�+B�\��>��#.�ي/~2"P't�V�
^��+Npn����;ѣ�N�馗�����$R��*���|��.�ġ�n�ǥ�	IA�邬����+�?{�ӷ�p��ǟq�ڛ,<B��
�	2Sd	�yB�-4�>��}Ӄ���G�����B��4��HJ@0B�V@"��[����%�y�D��+@V8�:�>~P�#]KȽ��L@�&��)t��,�����p�C��Ё���ADA��E�ABL��$*1�M��躃��?jEX0 �!d`]����0�o��C��=�`"��Bh1�8nn�t�x6<�/u�Ā6`�p�@�@�%)�DJo��L�#�7	����ĀJ�Fp�s����@ʴ�x�H�TF��J@�CH�^�Xʒl���(�A��M��#��A��-��e����!��!���ߌ�͊m��#�%�zY�	������y�O��o�l����Dy��o�$B�E� ��g�*Ј�����JyGPS"8�r	�N����(Fg��!� �$2��� �4i�(�R­m]=	��J����Aҩӿ�Tl*�iP�VA��0@X�T̓Ȣ�N}�,�Ȗ�
���#"I`&d�`]�X�JVQ��i{,�3�����qMO�ՕN�i�H�������,����b�'�@fQE�ܢ�kAh!Y��Uh�%(fMV�H�
��g�l�����(M-<W�����?]�HL������i�YW������Ј��@�5brq[Q�rs���$�8E���6!�(d`�+P�&s�nC�l��\�@�H�#l��v������AHA��Vį\M�K��l�7��MD.�ɮ"�#P��'H���|0#���fB�q#���@!�[�ry�\[�=�3�ҋ�I����DA,K�Q�%V�GG��Mrn	�X��I#�ћ��B@�?��"l�țI4�ʉ�r����2�!0�V E�q�h���s��IdR!�HA����H
7˙:��=������}z��
P��08��Jt��J�b�-�)�vP���vs�tC�E�ZۺZ�ʵ�w�kq�������wE�^JA%A�7���	V�B���p�@�"N%lE�
�$�ЩRU�Uw$��r�4E��xJ��@$R�	^��
���,���iC9%�0o�h�R��5� #Z��� �)�E��%-q�Koʸ�7��{�Mq�S��И �u%��o�V��+w	(v��ۼH,�0M*����0ZAUm‹I��HO:�P@#�=W�ԧ `A1��+���S��-��n��B���w������p����3F@���6v��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;��Џ��!�	�,�---]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^___aaacccddddddeeeggghhhjjjllloooqqqrrrsssuttvvvwwwyxxzyy|zz~{{|{�|z�}j�}f�}c�}`�}`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`��i��i��i��i��i��i��i��j��j��v��}��������������ꠅ蝅栆ީ�и��Ô�Ɩ�ő�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ſ�ȿ�̾�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s��kթP���O�����ӫ_Ͼ����Շ:�
֭bٔb�5
���(�h�&��6���0J,��/���v�� �8�
�3O��‚�,���02�,'��K
1��<rX�/6!J�Di䑠 3S+��P�(�+1�� 
���
+�ز˗`�)�d�i�h���l��&����
*��r‚��t

	�p
.�.����
׬�K
�n���`
���~P�5�YSJ���I�(�2�!#ʁ������pq��P����̝��dq�J�	���MޠMD����F+��>�L3�f���v���z�4�k�覫��
D��P �|N$��.C�*n,�l�s���7���G,��_��g���w���WA1��*��ڑ����5�ȁ��4������9[��@�se���<�)�R�
�,�M+6Wmu�<g�5�>��@]���,䍼�‘���lB�"��tW���x��p��`��7�b�mt�e��7ld�$���5�-y�w�m��|���ׁ>�3��h��(d�ܓ�~p�����s.��d���ҐQ,��P2��n���ˮ<ę��<ǝ�^F��B�,����{��LJ����W���G/��)+�.�L�-扐7����ɗO~��;��nG�j$�e�UE$% x� T۟���?�0����� ��XSbZE� ~�xt+�b�v��b���"� �0��N���t�5C�E� � ��"Š� !����X>!�oE\-2��������TH1|+�bެxE�eqlc(�A�'�KLd�C�6PxFɥQ�[ccm'�B��}��!�]h�E��G@fM����6��h��E���I����&394Cr	Q��J�R	(q�)���TΎ�0te!
x	�UYŀ\v�m�R��l!0�)��!� C�*$��� �xf�zM��r����xQ�T�_�sr�,'��IDu
�e)$r��"���>�vN~jl��DH+
��J�EB�υ�͡X���z[Ȏ!ŀ�y{n���[CAz1���Q�@%��}� �|��:S̔�6--i8 x2q���P��9��Q�E6ƈ(2@�<�.�Z0��� M�¶�*"��HIV�Q��V��MŐ��(u�#r���̬E�Cm�ӂh�@Ɛ�7F'��ę�Eb�X~ڔ��ŀH��d3@�H�3k��곳�(_
�NĤ:AiE֖��\�+!�yM�|��:�D��:��v|��l���0$$�z`D^0��"|ϽYt�+\�m����b`�n�	qEx�;^�M�o�$B��T�`7@�_���rޗ�Y8R��"�dB�A��8��dǀނ��@0�mDD9�H�n�B��/3<�rX!m
;/§��ط*N%�ۨ�'d�#҈���Mx�uͱ%w|���m��J��Q@)�n"3�d@2y��k�EQ��wDGL�Ԓ\_��W���$ҍ(�IE�F񲘥�����FZ@Y!�]�G�qZ�!��WB��FA�
�PƂ��Җը#�8��Ŭj���պV�V��V�z\튵�g��iD$^�#Ab
2�
��	V�P��H�@$P�pla+}H$�mw��d$�@�,�+� M�6��6�>�m���W�:�j��S�p�FN�2�{ \��tk��UD��z��K��FKZ⒗���;���x��4�:y1A�X�J���(y�� W*���_�8�(O��nPe�آ�*���ade�d���w�s��F(�*`��@4(�{b
W��G�:�E
W<(��-^�
S�'>`���N���'�P�+l��c��p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O��?7!�	�,�]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___aaabbbdddeeefffgggiiimmmoooqqqrrrsssuuuwwwxxxzzz|||~~~�������������������������������������������������������������������������������������������������������������������������������������������������������þ�ǽ�ʸ�ʬ�ɣ�Ř����������������������������������|ؚp�b�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a�e�i�m�n�p�p�o��n��l��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��m�u�y�z�{�|�~��Œ�ő�ɘ�̟�ԭ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������k	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�u�e�� 3��O�����ӫ_Ͼ��������K�nԔV��D��(�h�&��6������u�=Y��v�� �8�
Z���#���,��"�%���=*�h�8�ȡ
&֤�:)�D���L\d@�L6��]�Tł ���cϖ\v��`�)�d�i�h��&��m�=x�`.YS#�"X��1�1��"$��5+��W�h�=V �8)y���Tq
o�T�d�|qR>�
p�<q�%ٳ��C\>��>#i#'�#Y7��6!ECB�,L�6�$���6���&N<�Vk��f���j+�:�+��k���5,xB4C�P4�P3�|������,�N��'���7���
"��Wl��g��ƫ��,��J�|v4%�A4dMN���0l0�4�l3�o���<��J;
�<��S�
�,D
17�4�3�,��5����X���:9�.��f��"�P4_<���FM��p#lu�t�m�+�(DM������r�+B����N���R�m��t�b�B��:���@ �a�2�ì8�C�8��
�(��*d��t&����>������q*i�A�BB(�E�+`�"t
�W�/�g���wO1�ŷ�P6�XB��`�9c���_���	s�}��q��, ��€4���!~���G:��/x�K�WlLJ@D�H����T�	D��8>u4^B� T�
GB�`��o�$��	O���!i���-(	9GjhC��0�T�!��4�#!�(��� cXb���Iq�Y���u��g���g�h�A�c���x�3��jUL��2��AC"� �4B��11���#��G�R��$�� !bp$$s'�I����+�*��C�O"���RQ�t�4���J�2
�3ȝ���ha@);H4T��[�-��d/{��_�� @�$"@Y!J��3��R3u��G����1Z@H9�9��A����;'
W��0 $��Dv0�b������σMS���?��@"<P��P<*t�
}�C!�=~�r��(�x ((��gB?3�6t�$��D�P�`a@�<H8=JӚ�4�9��I��΃��?�,"22
z�i6�'NI��A��bD
�$�3�*Ԏ:��B�<��䩈��?%eZ�*���ӭ�$·�!�P$#��W���qI�[ QZ�i�q�T�:2��{l#�ƥ� d(��l�	3$�*h��h��U,B�0Չ��?`�@����:V��$- Mz͂4�rĤH66��7��řr��J���EL0 ��ץmv��]��S�ᭀN`�n
�	9`z���]�׽'MHb�i��	y��+������T%셐�^�y�������p5yڂ$r@'nD:9�(dzVBmuy[j���3�m�sԻ�MY�^��%.��8a3H�<�I��0BT�I�tq@ ��A���*�����B��E]t#�4!�8b"��+@�h�(�̻����f.#��G�=7D�/��kT�{��p���4��
X�C]i�KQ�hh�@�:V�V��V{cZ݊��g�o��ָ��bv�I6�,�`vW
.���
�de��V@�"�	dP�x�|ϳ�4E�Κ����*djX�A�K�
�H3؂c�-��2�S"�P�JX�Ϛ��;��WS���b�ll�1~ꤎ{��
�jL��1W����Lj��i��a���0o�
�M0�:�8�9�N@ǝ�#ֹЇ�da�@�Fzp�;���A�\�k�#^��w���{��`;|�/�CTǎ�������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�����~o!�	�,�WWW\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___aaacccdddfffhhhkkkmmmooorrrtttvvvwwwyyy|||����������������������������������������������������������������������������������������������������������������»�ŷ�ļ�¾������������������������������������������������������������������������������������������������������������������ȭ�ܣ�ࡊ᠊⠊⟊㟉㞈囄�w�o�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�`�a�a��b��e��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��k��k��k��l��k��q��v��}����������ĕ�ʢ�г�����������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s㩛F��-��O�����ӫ_Ͼ�����8„�4u�ƣĀ�(�h�&��6��� ���6J��v�� �8�
Kl�$���,��"�%P��6�h�8渡
&���:)�D���LNl@�L6�"O�DĂ �0DM؇͖\v��`�)�d�i�h��&��5��:|�`.��B�"A
>��C�"$�<+m�H�h�6G ��&A���A�n��d��h��p�q��#i��LC�4��A5#�#'�$Y;#��;!�SB�+T��;�$���6���F��9�Tk��f���v�m8�+��k���Q<+h=��B�C���=�L�E����,����&'���7���;̌-Wl��g����<��c*�7��Q��<V���0�|p�4�l3�o���<c�8
�< QS�
�&4�Z����1�|��Tלs�Xg�q3�,dO�j�Q��`�A�D��MC��J]��t'|��x��<
œ�+l4
���<W��6܌�-wݐO}wޔ���	����fd����m7n:̏G�zēW��Ƅ�������;��~��2�.<ίϳ�		A ��3��\z�<�����>���n����A�
`	&Sd�F$t��/���so��ރ�=2|#4倡�H���D
��槽��.�3�2�WxLJ@D�H�t���#�
\���A0���A�0�T�RGB��҉x$,a�N�B�%#i�I��&H	qCx���P�s�a+���G@N�ȼ�;�а�M!�'�)�
 3��Ԃ��cy���F�=q��3cUH�A����X�s�цu�#�WF=j��� ���3<d"���:2��HH��9��J@�C��I�ݱ�����g��ya€|�U"�����	e�?s Hj�D�����"��Cb�/��D�0�% Đ����YMk�Q€� �
ߌ�8�Jr6����:
r�頝��A���_��e�����O�� ��
$2�n�3�uZBj����Q����$�!��hFQ�Q�1ԣ�BX(�$HĈ��A�!ϕ���7{)L+f̃�`@Y���ʃ�ԧ��̈́:T[�!��.���Ћ*�*�6�R�”	�[�hu� 4�XFV��գψ$��!{lN@[�:רJ5�U�Z��Ty��Af���ɸ�`uU�]󹌄�`���@ف(Ѳ�Xf�Ys�q ~}�'E�A ��ՓkjðZr���hEHWd��</@@� jwK��Z-�X[�A|0�X	1L���������d^"�ٴ"�����27{�E,t5��{$ĝ������PϽ�[|Y7ߍ%����LPZ��
���{��
3�SL�t����"w
��&`�aF����@#��Ħ��Y���0,S�?f 8��%-�E����.���N�{UT<5�n��#�N���Xb��3~l�z��@|�H$�����M^�)��17���G$;R-#_�
p��8�5�c�
YE	�S���s*VD�!�J[��͢��6��No\�
��G�ᆰ�@($H�A�� ���U�@��l#Ȏ�0p`%�!D��>k���
����x��d�g��6n�)$��6�8�gM㔸㸜jAd�t4��.P	��z�JV’��D�z���w���&\1A8 �J�]'��W�yc��'���
|��i�8�ϸ�T��P���!d���C��W�(��;��p�n����j=x�cPX������HO����#,
�HϱC��[��XϺַ��{��`���N�����hO��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W���!�	�,�XYX]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]___```bbbccceeefffhhhjjjllloooqqqrrrtttvvvxxxyyy{{{}}}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������v�~`�~`�~`�~`�~`�~`�~`�d�e�g�g�g�g�g�g�g�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�b��e��f��f��g��i��i��i��i��i��i��i��i��i��i��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��k��n��u��~����Đ�ǘ�ʢ�ʨ�Ʊ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�5��K� 7��O�����ӫ_Ͼ�������e�f攖�EŃ��(�h�&��6��~P/��2\��v�� �8�
\$�O��"��,���02HB/'�t��1��<n�26=�C�Di�A<3�.G6��-f�KLW,�VlQ�/�t��`�)�d�i�h���l��Kw[X�Cb�R9($B��[;�dB�*��2 �E2�!��0��.�����S���r�RA
p�Pq�.%c ��
3�3t(���93(�`�Q:#�B��S
4�&���6���:�7�Vk��f���j�
8�+��k�:��B�%��;.h;
�S�/��a�G���,�<0�$���7���G�p�Tl��g��ƛ�b6�2Ď���gGXHEC����0�k��4�<3����9S���@�\�7
�<�#,�
����,��6����X��s�\w]q-�,���@�A��R�O�L��t�ku�x���^�
t-�(dΊ���/r�+BN�wݐ�}�ޔ_ͷߘk,�	=���hT��(D�C-w��<y�K|y�[6
�B 
�B�
��rꏷn���Ǯ|ó��<�	UA`/�쀾D����|��//��Η��	QC 	'S�v"������&?��͛�y,�HȦԪ�ha@�^A�U?��|��_��?�Ѣ)G�f�]i!����/��+�7�$e"AE�A�f$��$���Lh<�Po�+d��d�4�(�@��H��T#��a�|�C�Q�]saA��Mi"-��C(�P���b�vE,M!3��t���czI��54�p��k���9��@�1��,��%�#��ȝ	r��B�A IA�wi�!$u(�)VRy�Ĥ���U����񌥤%O);U:/��Q�P��!�%)s	�]�b��%ƴH�!	�9�����'*�̬�3U(M�Qs !b4a� ��f8���q2������A�0 +H$��A�9Jp��f�">1�O��@=���He��S�gB��P�5� ��$b��s�5(F	�э*"�=�@�) Fd��A�YЕfԥY�)>e�hY���y�s�ԧRk�F�Z�B$��!D˃�ҌP'P-�Ѿű h�"����au�X�ZV��"!�P�"�FV�qE�\yFU_��r�D�Q)y� �l`Y:XK֕k�4�8�>�X3@+#�d'+0�&����+B���r@�,Ax
V�R��=�,Јʎ�y�"��^RF�����'jݨڃ�U@
�	ڃ�c�Ƶ�mq��b1l���L`m
Ȇ���v��qz��-��Ԋ<7@>H;�������m�f�A�LT��^'r�w��}�{�'��*�l%J��t_M݃a^N�y�/B�
 Xb$OY
!�7⸖��'�]���@#�
���8������+F��%��H���ݫqXo\��p!�HԀ"���(Ed\�q#y�%Yɗ�����H��逪�2����v{3�:97D�&��;>[Sz1�^�Z&���e@zyc���7
�v��@A�QG�1:
+"�8V�V��V�zZ݊��g�o��ָ.����� � ���$<GW�9��P8��U��D��vT�)թN�]�7�B�cOr�ZHZXm̑��&{�)��t��tA�n�;����@$XvI�+aIK��R���;��_ӛ��t1A<8�J�a^(y�� G����d�8�(O��V�ə��*���a��g���(��w�s��F(J`��@((�{R]���G�:�5�]<(�P�Ŀ��{��`���3�-)���I��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w������M@!�	�,�DDD]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]```bbbccceeefffhhhjjjmmmoooqqqsssuuuvwwxyxy{z||~�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ů�ܠ�♂�v�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a��f��h��i��i��i��i��i��i��i��i��i��j��j��j��j��j��j��j��j��j��j��k��k��l��k��k��l��v��|�������������ę�ʣ�ʧ�ɱ�ų����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�!�Eˉ�!>��O�����ӫ_Ͼ�����Q�V.dݔr�ed���(�h�&��6��r`D-�e�0M��v�� �8�	M�O���,���02�-'�L	1��<rX�06%#D�Di�B$3�,G6��-^0KLH,�AG,Q.�t��`�)�d�i�h���l��KwK�&�78"���[9�(�A�&p��0 ���	���-��6�mS���r��p�q -%c`��K��2�2t����!3(��
8 h�7i�̱�"��1�6���F+��J��4�f���v���zk�5�k�螋�8u�!�"��98x���L,Tp��sl�'���+GG,��Wl��[�J&w��� ���+Մ��8�胟m: 
uK��
���9?���@���!mtȮX�P�.ё.���7��l��8��:�,��`M��d��
6���p�v���8�lq��Ys����{�߀G<vل�6
u���B`�"�M�w���{���_^����tB�`@ .�@�.
msE�w��=sn{��1)�(�%dd�H(���N����|ƞ�{�	A���쀘"����[��	k����K�~&�P�2��2E�h'B�T����7��X��W8Rd#!.P�*�(]�{�����/�� 	���d���*��)!!ۘ �*H�b�v�`��g�$(A���Y����,d�_����h��ZA�A��E�	�@B��C �vC$"�xD��!��4�z	�	�\k&�+b.�Z�2T�� ��&��!v[#�(�8>o�t
	R�"� �7BAڬ��̜!3��ܹ!� � r�} !�$�0�I��q�ACd';�
x �B]D@ $|��Y+g�JXm��;�A� T=q@C�c0��a��Ę,���E$r�D������5���lj�����A��B�i�jB��Nu�So�t'Ŷ�Ly�	BcD|0 g����?5)пt��</��s����D'�ʊZ��3hA6���F���A��j�ta5)�.�I��		��d΂���6�i�t
6�&қ���� (
(���H��ԃ�T�N���2$�F��:�/k��k2w(%���`"�P�ֶv�B�U���h��&y����~e�WM*X�t �ءD��ݵ ��kd6يVv��4Z�>��*�B�:چ�V��]aBhR��؀kr�`B֯�ugn�U|��trhD�7 �"$��<n[�����n�ɫ� (�H�I�4��U�ӻ�K�A�0�Xd���u�[[�6�q
�e�ĦYD�BB�g���b��TA��|T@����$)Ps��U�{a	_¡B�����

��%C|�o��d;�B�[d�"cz?�B��Ɔı�t��
����ږ�n���v��`U .!*�F�( �7�U4�D�G%�l��F��R�xDJ�*v����Y�n���" k�#%�b6��y�&��Q�//���)G��3����%���-k3��x�5*̐q��@C�QG¡:
+"��53�U�^��׽�V��M�b{\�J����b���@#GH�1gS�8�*���0?n���
4J�8@�"Uo
$ݑ�A��ԫ
T���V��*d�n(����S���>pB1d�t�	88�B૕|���R��Ԧ�{�� ����&'�)bLP��s�J0������D<���wn�t�&�`&χN���6IQ����CH���M�1�&��X�z�HЄaH�'ۘE$����A����
b�<	���N�����B�D��c����O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;��Џ��O��[�7!�	�,�LLL]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___bbbccceeehhhjjjmmmooosssuuuxxx{{{����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‹������������ؘo�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�b��i��i��i��i��i��i��i��i��i��i��i��i��i��j��j��j��j��j��j��j��j��j��j��j��j��j��j��l��n��p��r��z�������Š�Ƒ�ʙ�˛�͟�΢�ѧ�Ӭ�ֲ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�˻�ɾ�����������������������k	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s������/��O�����ӫ_Ͼ�������O_�p̔6�ă��(�h�&��6��z�D>�E�9T��v�� �8`	T��>!���,��"�"��9�h�8�a	���M:)�D���L�d@�L6����ł��ɃΖ\v��`�)�d�i�h��&��tG5t�`.9S� L-��� $X�3+��߁S�x�9S 聢'��D�o�D�d��h?:
p�p�>%����C\<��;#E#'�!Y�7��4!%�"�&,Q4�$���*�ͳ�F+��Vk�֖���v���+n���k���
,1cB�#$�-(E,
тM=bl���l�'���/���G,��Wl��/���w��%���JC��J`|v4%�?4��=d,��6l��8���<�ܳ�@��&�4d�StO�%��2��,��9Wmu�>g�u�Bw
�&�,t̻��ѝ�`lB�����p|��t'���xS��o�B�+�	�C �"�L�q7�Eݐם��y�m�Ɩ��7(�F#�B�0�xܑ�n5�k}�和���#f��t&$M�;���7�.<ϯ�.�BO�iE�`�"������
�}��_.;BѬ
�)S�R$$���Í��o/���_N���,��5*��;H���8�p�K`�w9L�� И���V�^��i�w@�)p~���"���"� P82�
�����Bh�J�� � P�"�} !��paax=ΐ�|EB P��BB�'D���F�V��$yz�D��<�$�mU����E-nqo�@H>�dH��AƑ��1um���	�0�@�z���Q�d Y7H�U"!�<$��M�R��$'9�Jz
A�P����(!GJʙ�k�3�
���/@�;H5bi�YJ����eДx��q/"b�̘�D�ݔ�O �
Q�H���њ�&ݴ�7n��ǀj �(J��&:�Ϋ�s���7���@"P�f>���~bퟮ(ǘip
H��(02L��ˡ��(�$������Dz(�WD�(Hs&ґ�t�3��Ĉ�ѓ�^LgJӚ�즋�b*����O@'DHJT��x7�DB���wH$y4gLWU�]�$�hA��C��sj*A�1ֲ���Cj+�Ȫ>Hr�#=j׆�5�$�*B|�J�@��@�H��:�ܓh.������*��Z�n��Xb�T]�""�Pˤg���/�z��^ƒ��"��
K�Oۢ��(<����"�
P�GEPaȝX@/!���s@�cW�C��0��}��m�1wV�1�F و,R@(P��^��7bܬ�n���##$ >R:b��`�m�-�y�.#K�����X>�`~�-1��@����&��p�XI�L=7��9M!PK��C<HO�� �Hp[9�Q=�e0�HdR��
�A�z��F_��8�30�PE�}
��ȥIF舵��H�Yxf����>�y\�����B�k�qW�H`G�D#�ʕqxU $�81�ZE�yĊ@�I; Q��hbeI����Y
SPh�2�����V��B�lÌ)H��NI4b{ 
��Å
9���_H�NI2h@%+aIZZ�����n{��ij�?�TH�zl	-��v���znL�Q`x��C2A�c"�z��Q	��|�9�O8�F ל��
JV��' �h(��
�M�[5����r�c��x����0��{x ��c�9vv���@�ЇN���HO�җ��;��P��ԧN��[��XϺַ��{��`���N�����hO��������p����N����xϻ��������O����O����;�񐏼�!�	�,�RPP]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___aaacccdddfffiiikkkmmmoootttuuuyyy|||����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������’�����������������������������������������������������������������������������ȿ�ɺ�ɲ�ǫ̿�д�ӫ�ԧ�ԥ�ԥ�ԥ�ԥ�Ԥ�դ�դ�դ�դ�գ�ס�ٞ�ܛ��t�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`��i��j��k��j��i��i��j��j��k��k��n��{�������������������Ú�ɤ�ͮ�λ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�EF��$*��O�����ӫ_Ͼ�����'�Çаhᔆ#d����(�h�&��6��vPD!�eN3z��v�� �8 	z4�S! ���,��"�!�3�h�8�!	&�$M:)�D&!�L\@�L6�"��4Ă�@}ا̖\v��`�)�d�i�h��&���1l��.�3B��Q�9��S$H8+5��x�h[3x ؁3)	���Q
o��d�rR 1
p�q� %1��C�0�x�1#M#'� Y�4��� ��"�$T�5�&���2+M4�F+��Vk��Zk�6�v���+���M7覫.9�S�"��9'X��C�0m���,�p�`�'���7�0Ï�"��Wl��g�1ƻ���� ���/ی�9���MI�
����l3����:G���@�s�!��/�4��xtTL�$��7Wmu��;�,��`M��d���B�+ 3�
��4"e\mw�Ys����{�߀O<6�d��B�+`	
C��"N�wWp�|g��߁w���}K�	I���f$��(���/�מ3��1�]�6
9>�B �	Q�����n������{�'T�2Zd��^�A�,ϼ��C����S�>)�_��	M�*�!�L1�'D�k�ط��b���lፄ�L@İH����$ 	ؾ�.�
�.ʁ�jLJ@M�H�P��o�!��� =x@���;��W�h�	Qc(�u����ao!��8�@���ԁ�
��E����7%�	�@y��+��,�m�\�hyd{R�D�=���nkd��G��Q��3H!t�ED��A�H˵q�\�c!�vH��!� ��b<� ��$&k��M�׳EB%��AT�K�Ri�K��g�t��:)��m@UD�0�$���w��/{&L��z9,���L0@h,5���if.�ռ�5{F2M"F��r^M��t:�Y�u���À� H��=���|B����'�z@(����t�z.�f
u��	Q�I�l5.��1@���GA*�L�4l'5Z;
����gD�8g���n�r�%6���A"S�3�GԢ�H��R{�Ȃ$a@d��"s��U`!��
HZҜ-nAf� �?��gE�Z��U��d�H��c�@#��̫^�z��rr���iAB9�(:����"�Ύ��u�+!k4c�Ҁ� ����M��U�
ѿ�0!Hh&E,* �� C�-hF[~����A)2
!B�pV�t�6	���,�fq�t�=ю��;B�* H�@�H�*[�V��M�A�A�RDx�hrx����t�����"�#�$������&z[���4�@"��DJ)�(�|U5�H�ʓv8!��--r���n�U�CY�I��´��4�4F�mjj������B�3���4ʋ����5�0r|��f8c��A�q��r���j"����%���q$�/���qԸ�(����,�n�&��8G[̹!�%PL;�Zݫ!��W ��A#ц�7H�r�T��Z��ʐf����zV�V��V�z[劵�g�s���qW�D�ȏL��ʕqxU d�#͘2�40c�JVU	o$*R-�@�,� �>KaJS�"DJ�q+N�Բ	NX�#�d�=T� ��}8��c�D
NP����a���O���p5��M1c�` I���Nʸ�7���4#���څT�	�dw��W�"4�&�5�gNs�`�;q�R^�?#ЃɁR
@�`�?O��1�@�[(�p�0��!�'>XϺַ���'	C؃ �ጧc��hO��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w��^7!�	�,�SSS]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^aaadddhhhjjjnnnsss{{{�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������z�a�c�e�f�g�h�g�d�~`�~`�~`�~`�~`�~`�~`�~`�~`�`��f��i��j��j��j��j��j��j��j��j��j��j��j��j��j��n��q��q��q��r��r��s��u��x��}�������Í�ƕ�ɜ�ˡ�ˤ�ʩ�Ȭ�ƫ�Ĭ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s��:�	ӌ ��O�����ӫ_Ͼ����կ����)]הZ��"���(�h�&��6��f�'��N-5t�v�� �8`5��O�|���,���02�A('�T��1��<n؁-6�B�Di�+�2&��P�h�&1Ű`)�PC}����`�)�d�i�h���l�y&)��C
,(�K��x�3��l�2�	v`�J��w 
@�f�f��I�\`�1T�[514Y����Ɂ.\1-�II�x: ��wJ�Z��H��:�J�ˊb�)H�pP��DM3�6���Fm.�Vk��f���n�0�+��k��;�0�@t�r��G�|P �4��1�P2ſ,�<;$���7���G�poTl��g���w�q!{�$�|��8�ŸYI`
e3��ls�K���<�L��@-4� �l�#�4��4t�J����6��l������\���`�t�F��0�/��p�g�$�P8�t���Vk���|+��؀n1�e=�B�+��l�eS	ޔ۬wߘo���Mx�!'�tB�X: );`*
ICs�|y�K�y�{�9�{2:B���(Ơ4�Ǯ<����|÷�.}ƻ����@ (��z�{5�/�|�ϧ�C�ӷ�F��c_P1����B��S���C����>�I~�#�4�2��"���g��� �
h@�!�w�@B�Q��4�"��B�^0��;ȹ�N~���8P]r�����m�4�
A��v�?�&���4c�4���D�-t�@H; LPdm2B���jQ}\��G�=�d�&�!�vk���8�Qh_�Y�a��DA����<��Y�G ���CB����ђ�+"&yfHMꮎt<D=B(�B"�Z\B��ʻ�r�>se�8Y��m�YUD�(������%0#�Ja~�t\d?R0 3F$�Z�A�M�Is��f�Y�0��:!D\0� �L%:e��b�z�4H
��`@�@�-�I�s�a�����i4O$J�DN0 *U���|�%���.��e�N �� 
�H�Q��Ϥ`D�@TЈ�4�!gL��Й�Ϧ^�iᴩC�s�r�A�1T��k5%)EC��tS"��%BxYՁu�Y��V��
� S܋����5��rW�RöUF$$��Q�D|8 Jd�w5�YE��~n��F#"�(T�Fb�מ5V�[5�A:�*�AdHr�)7+�βr�sT����D�"LK�+�V`�}�g�IQm�òJ�D�A ����s��`;4v� s#�=�!Ӏnt�k;�"R�hC�W�jL� �np�9\a���K+r
� !��|�Y_Wrr"DGWg��,$kU<�k2���AlA��]����B�[
�‡�b��V�"#-�(B\�Z��r\��Lu@#Osd�"����8�
q��آ���E��l� �H�	��$~���э�wDRS��ʺ�7v���{�6�����^��Ŵ�Z|s?GH4y!�%�S9��4_�W��	h#
ڀEk���q��@+�QG���!+"А��W-�n��հ����E�Zۚ�ÈFD�/H��c����Yy$O.��3
]	�RInT�S-�@�,�&� L]�6��,Љ�����
*d�k����SR�R�����[ӎ[`����M�
\)K[�D����;���8��	9� �B�aY��F�� ���j�o����"O�ʉ�hÄ(_��g��
'���i��ˈF(�E�|N�D%�I52������@
41p�T���D
���{��`���3�lb��:v������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������u!�	�,�WVU]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]___bbbdddfffiiilllooorrrwww{{{�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������¤�ť�Ȩ�ȭ�Ʒ�ż����������������������������������������������������¤�ɥ�ˤ�ˤ�ˤ�ˤ�ˤ�̤�̤�Р�Ԝ�٘��c�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`��j��j��j��j��j��j��j��j��j��k��r��~����������ƞ�ѱ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�-��'�!$��O�����ӫ_Ͼ������8Hϯeؔb˳#���(�h�&��6��j�C���1�|�v�� �8���S���,��"��S1�h�8��&��:)�D���L~��L�h1�`,�`H}���\v��`�)�d�i�h�9&w��,��K��x���
l�s�	~p�J�h��!=�f�!j��I|Xp`��v��Z �I}�Ñ�1�Á{�T���B�/�H���I ���bP�G�tP��D4M4�k��&�l��(���F+��Vk-�����v���+n.�p6v
�6}B�:tӐ7�2G������l!�l�'�0Œx���G,��Wl�å�b�6
u3*�$����А5u����,��o��,��17|��8�|q,�4��t̯�*�M.'�4�47�4�6�,��8�25q�n��p���7v����hw��l�Mp�T�-�ñ��
-�(�M�����/^P�A�ܛ��I���N�=��R�m�+='�L������5f .zˊ3nz͐���v�r�B���QΙ�4e��;ӧ����?�䬷b�B:�iE�:�Y�����[������;L<�[N`"S����
շ���c�}���+y#Dr��SdȀ�^A��>��/~���Tg?���������*@<�5
X�"�t
\ �Ⱥ��o@��2���Ё�� C(¹�prE3�148��a@�HH4`Cf��5��
�V���G@��>�����ۆ�$Nm��x��<�`"�PB�a6,fq���"��؊��v#D�A ��n����89֯x��-�
=�!xB�@�n����!�G�W$���C�з��Β���麸ɛѱ�3��J�@�!�@��0�JԵr��L��$B"�CB���T�rq��e�^�ă��?|�$����3Mi/����A1 H���A�	Nĉs��+�9#��E$Ib�D��>x����'�)7j"�S�H��y"�p�T���DtO��9҃0�h˨F�O�z�&4�5P��P@&� JS��B�tu���E1"���2��&��Mk)G_�ǂ|my9�R��J:�tP��OuF�Y$�o�\D��G��.S�J��P:�� � �2$�
���\�֙�u�t��A�0��"�\8X��U��5'e���(��h�2�X����+���J֠� ��+��)ft�����e�Yi.Ѭ�*����˭nU�Kֺң�=�g���$S@{E��k=�ֹ�
�?�H�lJD��(B��>��k����/I���D@j�H�t��X��U�w&�V6	1�<PZ�$@!�\Ss�qx��{Et�5��"��A�{J
���
��6l�
�����+V��ϼ�!�7�XD�����H܂���'�g�w�ą\�PR�FvH���^u*�{�c9Ƃ~[��ݍ��@�d��T��$+y��D�}V��v��׼�ecpnY�]�,hq2��)H�1���!�Z��'M�f]�Ҙ��5�N{����ED�U \�#̀�8P��ܪ@(2G����Uz$HDK�OGT�:�D)�\
AzHI1dU �B���!&k���m6	���!�v�: �hϰ�ҕ죦v������&7��	bAUW��6����fb���t
�_<��x�>`k���ϸ����C߸ȵG.��<�FX n��<�`A��k�{D������@���Ãb�8ͱ��;��P��ԧN��[��XϺַ��{��`���N�����hO��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����G���!�	�,�]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^___```bbbcccdddfffiiikkkmmmpppsrrwtszut|ut�ur�uo�wl�xh�{d�}`�}`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a�e�l�o�q�s�z�������Ž��������y��t��o��j��j��j��j��j��j��j��j�oۻ~���Œ�Ï�ď�Ï���Œ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�!{�
�@}��O�����ӫ_Ͼ�����"���+dٔfcJD��(�h�&��6���
+�UN.���v�� �8�
��rO�b��,���02xB+'�K
1��<r��.6H�Di䑁3S*��P�؁*1�����bJ}����`�)�d�i�h���l�y&w��J !,8�K�� 	��Rl�B
		���J���`)@ަ)���I�x`���6�4Y����ʁ�0�1��JI�x:`���
j�H��I�	JwL	���GݬH`�D$�3�6���F+��&�̵�f���v���#��k��;n1�@�M���G�K (�4D�3�p�ƿ,�l������7���G,1�E�`��g���w��I�2/C�J`vd%��4�M+e,��4˜��8�3�{���@k��0
�<`)�R�
�,�r�PG
��;Wmu�=���Q�B��; .i8`	�&�+gH��S}��t/�5�x�D�5
ec��yl�
� �P5�­��r��x�w�-��D��1kF(�B�8��⤻��O���/

>`
�B�(
Q����;ͧ�.�ë�n<ǰ'
��ZT��j0�A�C�������R���_�zB̸
�	)S�
�w"$�_���o߽�߇�|#��������D	��h���.��ȁlt�h��H��j$P��_�8F�xM�EBF1�T�BFB��ޅP�$t�	OȺ&8!_����Th	)�Ax�ߍ0�s�!%�(�� ��RA�(3\�
��D(vO�S�[�02�,O@}�7���n,��d$���4���P��AX1 
|C"� 7�;�1�z�����G�R	��&��	�a#$�(��Q��@�܁B	���;Q��t{,%�P>@B��S�VT(u�#oi:]>�����
2$�B"P��DG23��,!4�'M�a0"o�)��G~Sj�'�Ɖ�a� ��($҇����|'��)O�ѳu���Ad dF����AP�6��Q<h��ȡI'��9�vZ�mŨ�4:�r�cD�)�m���<i�R�Rﱔ��fAX( SHĈiA<XQ�֌�*=�O/�KARs@\�!g��Z~НN�^O�&թ��m,���<��O@.D
�֩���f� ����sA�"J׺�;+�T)T�hc����ւ�1��+b��W�Z��j�@�>�@@��+f3[0�bT�?��"b��Rģ�Ai	�����smAa��*6v �Ȝ��9fx.���f7���Z��y����e�+�t�F�]Z7��H�i����"��]�x� \yW�IH�dԊh��	y_t�;�����<B��޿:ϯ��E���ؙ��@[]���'�z��UX��e�Q9�d��%F�QЉ��.ou�˱!�7!H�
4��葭���1�R\�����ɋx@#�nA^��%�XbN�a~�
E�#����4%3Y�a���F�1#4է�`F�7�1��B�|�ڪ�#�h��/~%9�~6#�%2`��!�iCk�ot�Xi{Ȳ�E�R��Y���W�jU��հ���\ܐw(k�3�< ^�W��9��)�+hE 
T$�P�Neh�$�0v�2�l�B���M�]}��M6H1�`9%���<�T �ӭ9�.P��v��.	7M ,i�KnJ����;�Mp�S ���@�u%�xo�6��+��v�.�`���Iyx6L^Q瓻��-RA�k��O��8�
h�"]���9��SP���������{ �xP��W���O|���{��`O Fq�U�bRǎ�������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�����~n!�	�,�[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^___aaacccdddeeegggiiijjjlllooorrrrrrsssuuuwwwxxxzzz|||}}}~~~��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�e�o������Ù�Ɨ�Ŕ�Œ�ő�Í�케�v��o��l��k��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�p��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�i�kד$;��O�����ӫ_Ͼ�����'y��0m攚��ă��(�h�&��6��~��/��N1���v�� �8�
�,��/"���,��"�#�S1)�h�8��a
&���:)�D&��L�X@�L6�b��ł����W̖\v��`�)�d�i�h��&����DDt��.�S#�!<1L;��3�!$�B9+-��O�h�2O ���&����8A�n�D�d��rR/.�
p�,q�/%��C�0�h1#u#'�"Y7��7!�3B�,��7�$���6���F�l7�Tk��f���v��5ф+��k���9,h:�cC�R�Ӑ;�8s*����,���'���7���;LKWl��g��Ń���c*�C�ّ.��8�DB	#�,��2��8�|������MC#�DG����
�L��/�,��4۬��X��3�\w]� �,�N���
���:�H��0S-��Z���x'����|M�8
���-l���8��
u�tGN��yW~��}g�� C'č���	��8�8���KM��G���c�B��BF��BḬ:ܭ��'���7O��	1A���3����ïn��+/��Η1�u�*�#�LQ�B�;�wO<�������3o>�GB�4 �U�Qʀ���y/���b�in�@�7&%��U�W��A�1	����-WAf}�€JPnH	i�	����p��-t!���h�@��/��Xc�'�a�T�C�Q�^;DB�# ^PDjB��C)N���"��Dz�D�1=���mP��YGE4bM�k	�Y@])��Xj���{�\��3@�g�@�9)��N@"#�I�M��Z����(��
��ԍ��|D%U�<�NBUDv1�$��ĥ�N�K�Y���@�0�]H�!D�IJeN���$4i�Ń0�)��yGrӛ�g�9΋!���$2�	� �%<�)ϼѳ���Ad "�s@Qj'2�9КԊ��=:�!HD
�DH@�X��]�n��F
�O�1"���M���j'�ZJZ�HY���y�qL���3ڷg $	�bD
)�$Ė$E���ԝ�sA����h�̪V����1�k�H��d@�q@�$�HMHѵ��9�*4WZ�s Q"���<u�t�ӯ�I�K_��ڀ� $�!:�a_!���V�\�+B�PL�0@�,Aj�W�L���%�)���"�(]Z8Z�ⶠ�]�jb�]j"%�gGX���V`Ǖgr�����)�pZ�^����v]�Ѓܵ��݀�0��ٯ���n8��A0� �,`��'�NdX~!��f�|���A�A �V"��
N�`�-د
�僛'�@��
��u���W�Q9b�EX!��
4�\Y�l	a��c����\B��>�"`���g���k�1%k�7��\�C7�^�࿋m�2��e?r�k��BԱ��r��b��Z����o�Y 
�䅰�@��Hg����K_D���w��A��h�:@J �z$�#P��%�R���Ѣ��V��V�\芵��eb���@'("H�fP&Q8�*�&h��d�d��س��M�Nu_49@��2n�фk���')ƭ8��
��O࠰���nD�@�/�m���.P	��t�JV’��D���Ox���&"�@DȫJ�!^'Y��7�L_��f�� o�Қ�a3�(Oy�T��#�*���!d��d����w���@$��7zA�|����z��c;��x�C��[��X�{�_ܧ��	���N�����hO��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO������M@!�	�,�333]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^___```bbbcccdddfffgggiiilllnnnpppssstttvvvxxxyyy{{{~~~�������������������������������������������������������������������������������������������������������������������������������������������������������������ĕ�Œ�ő�Ď�Œ����������������������������������������������~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�d�o�r�x�y�y�y�x�q��j��j��j��j��j��j��j��j��j��j��j��k��l��m��p��s��u��y����������������������ç�ɯ�̶�ӿ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s����O��4��O�����ӫ_Ͼ�������ş>vӔN�僀�(�h�&��6����?��<X��v�� �8�
X��?#���,��"�$�S<�h�8�a
&�d:)�D�`�L\`@�L6�b\�ł��[���<\v��`�)�d�i�h���e���W@�CV�5($��0[3�XB�*P��;  hE���c� ���A��v
J��?'qq`�gN�JR<�؁>����A��3R9t(‘ŝ3(�\4)��4�˲�n�ͳ�F+��Vk�զ�ζ�v���+��b�覫��bDӨP`	�|ČB�LC��BJ'�,p$`�a�'���7�0�S,!��Wl��g�1Ƅ���� �,�� �)�4����gGUDC����8���<��s�-��AwL��H�̉*
�<��S�
�,T�(9g]��\w�3�D�-��F'm�و���3�Gm(�	�B�%Yk��|+�؀>q�g�t'�(4��n���-�wߘ��M�᠋,H*
����hT��(4�&��u��힇��ȁ������Q?B��,��.{���9��_���ԗ�Д�h3����͒��7o��ѧ�1���;B�
 	/S��v"t'�/��{���7���.�C���<J@�A�ֿ��| �
h@��F�f�_j�D-x��eP���`
g=��L@$��9Ď�xb��,la�^C��p�gĻ�I."[ Q��#bwD$�m	񏀶@��x��6;,q������d���D�A ���X#����,‘�sd*�a�����Tr��d���D�����~H	�%٘�7rwr����(u��T���Rg�4�+c(��%� 5
�� ���!����L�mr�E+���g�Hy`��g�*J����5���Xjd�P� �(��<':�iMv�B�pF��`@Q:�%�IM~�Ο\��z]H�B��P�j����(j�(���P}6ԣ['H+�N��� !r��� ��Ka�0��tp"=[

r����DH-\JT���K�)@Iw���i��V�ˎV��X�V�iG��
@~|�p�J���yi%�Z�Y��0N@��;&��_����Q�*˛D:�D�Q)-� S*b�W�%5i�,�Xā�AH�B~h��ƴ����,�� Du"&��LK��^�U�L�Hn��PB%R� ���k&\�׋�=�\�)��`@�=�,T(��B�ٔ��b��
�g�z�R����.D�;C�����vă�쯼�Ez۩ޒ�"!P�*�=Ijr�$~�_�}�mA�A��V"��\��n��f燩'�&��GF�ф�Ί/>k��9c݅X!��O
42`a�m	��\�!����B�!?��"f����R�8���+�\8džP���F<�TM!W����fN�9i�вB�q�I�#9-(Cjv3���}>�y�ؖ@,�jϸ/���_WLp��8�!"�x0C��R=�#�X���e1+�–�w�k]k�\����ͮb]6~H�
dH��p�ۡ��}@� �r�8�@��cV��A����T��eG�.{S�┥ֽ�\y�
��4�PYkC9%��4@�-�6�Ђ�] `;%шp��t�,m�Mϸ�7���Mp�S����z��=u��W�r=5&�q�gNs"���4��k��(ݾI?d��B%�qO܁����P
��s�\�9`xԷ�r
�d>�5��,T<�I�������=?�B��k`��xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;8!�	�,�QQQ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]___bbbdddfffhhhpji�sf�{b�}`�}`�~`�}`�}`�}`�}`�~`�~`�~`�~`�c�e�h�l��t��z��������������������ƛ�ƛ�ŗ�����龆�{��x��u��q��o��m��k��k��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��������������������������������������������������������������������������������������������������������������z�{x}yxyxyyy{{{����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����sy�����C���O�����ӫ_Ͼ�����rTI(Z���ڤ����(�h�&��6��V��&�U�*���v�� �8 ��bO�pb��,���02�G''�d��1��<n��*6�bH�Di䑇�2�%G6��-F�IL�,H�!�8b�&����`�)�d�i�h���l�y�'�X��"�L�`#.�G�8"J1�#�#+"�G�)�R��y�*� X��'e������.U''ar`"J�&K"jR�)N
q��H` )#�b'��J�,�8�� ӫ�} �,�&�첹4���F+��V;-.�d���v����,��k���
,�@�K�ѮG�Q�"�4D,1�Ŀ,�
Sl�'���7�plD,��Wl��g|q$ t��� ��q
-�LCàJ`!�v�逈4�K>l��;���<���@-4��l����JC*�HG��G�
����X���\����`�t�H�-�
�,4����Z`�A��D�x�s��|�}��b.��d�m��+��/���F�(����Cޘ��ߜs
�ࠃ]�᤟�tB��:�'�A�(
��C�o��>�����1	�#��{d�	��(Kʹ�m;��+����[<���"vrQ1��l�7�|��?\��c��B�-S
�x"D��מ��c�'v=���iC��
�DJ@�A��?�=�Л��W@�-�@�..%��U$|&�\����ip����?�4b@z��,D��Pp��X�`;�B�N�34�	��V�r�Ā*�X�|CD_�(8$&Qd/@�1�#�KP�JB~xE�	1�}�"���/��'�ހ1�`t!��[����q���#�j(�M��aՀ�e�W2ko,���AE����(��N�>�$!5y�Crrl�<�	jd�E	�u�R>Uj��D|ecy�nRUD*1�Cҗ8f0�yDb�����,!�(�"4)�8R���,[�����!MP%b�q,��t�+�پt"��Ā!�B(��=�iN~���lB�$ Ct@S:H=�9��m��D�	Ѓ�2@���"4O�r�_���BJG"m���o�'Gc*S����i,qZ�
�����y�_���E�RiS�a�2cD�K��ҞD�j���T�z�A�@��	(�k|iZ��V��Վ)HH�F!Z���(Z�ʳ���_d*AD9 (�Lu��A��W��̱�l�Y�H���6��T*t�Y�-?E�"ͤ�ID��D��mQe{N���,�:�
��y]�g��ա{*H�]$���N@�E�/^;]�V�]�iֻ:�����peJ\j^�wE�a�fPȢ��|�۰�
�K�b���"�#+����;/����� ���o%b��!vgm�|=j�W"�lV�\�㉌�	�(V��bN��h1NE��D�m��� w��#��gS\BB<ʍ�q�ݝ�1�a
g� ��Avaˊrd�#Z0�B�vE&���ss�Z �㻕�N��Ѭ�n�&��eй!�%PK9b���T�	�W��h`ڈV�\B�c�:-9r�+"�J�����V������gMkY�K]�Nׇ�xA�#d.P��ëQ ����^5�O(W@��nD*��"�RfI2��Lm���DJLq�E�s�
/ABc�M%����a	Z��5Ơ�%���x!�$�p􁮔�-u�MO����	Nr�dĮ�>���7��9��-YŌ�;N��ю�'nl�F|`�M��	y���8wЌ@nc`��9�����|'���!�=�s<��Ŀ��V|"�hx���{��`�{шJd���:v������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������u!�	�,�]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^```bbbdddfffhhhjjjnnnppptttvvvyyy{{{����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������¹�ò�ĥ�Ś�Ƙ�Ɩ�ƕ�Ŕ�Đ�������������������������������������������������~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�b�e�i�o�w�{�}����~�~�}�y�q��j��j��j��j��j��j��j��j��j��j��j��j��j��l��o��r��u����������������è�˳�ӿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s���E��%��O�����ӫ_Ͼ�����0"E?wڔn�"�B��(�h�&��6��b0���L<P|�v�� �8�P������,��"����<�h�8��&�t�:)�D�p�LVL@�L6��X�DĂ�@�Sh��<\v��`�)�d�i�h���e���Nу��6$���<[4��A�l�< �D���c�0j8A���
JH�']q`G�vNjQ�<�h?���SA��3�9t�A�ġ�A�x�5)B6�˲�6�쳸�δ�Vk��f��ٮ�η�+��k���"˺��.-�@�
r`�GψP��4�-����l��q��7���G,��'���g���w���?b��$�l2#��/CҠJ`	~vTD�@4�+� ���	S���@�l1�Dm4�"���ғ�Ґ�6ё>~0�B7��
��@}��d���h�<	-MC/��pT�� ��/������w
�߀7,vل���i'n*�(�ͯ���?V��A���=�߃.�؈+��"N'�ά����.�pn�'~��У�N���B��AF[H�B��|;��.}žW�4�����j�3�8A7	�R���O�>�ַ�q�ا�JB�
�1S��F$��)�]�ַ�й�}������Li@��ȣD�!� 7�0�z	T����t�~��ZE ��!�� 	��.�"4��2�q�"�� �;���o���q�C�)bey�.*(	�������P��cbGƊ��G@U�H�<�hn�{`=�E0N�cL�=�`"��B|�78�q�^�c��8FX $y�@5$2]!�0$��H�)�c4]*�
I�!���
M�����'��%"!���"���%�|��'a�5Y��h�c27�*"R�̭
��a;f������Dz ����5��3cjd��a��"P�P�t
���s�;=O�!P�$R�E� ����	P�	t�﫥�z+�Q����O�N����(�
�@�DTR�D��}��&�J�vQ�f���A*�6B�	2gAЙS�Qt��O/T�!�$bEMsMu*T�9U�Ux�3��ƈ@2@�C0�Աv����(�z��f��{ٟ�6�ʰvή����Ϊ8F$���UD�aILv`u��T����	� � :$2�J	���eq�X�)�lzE��2
�VU �����765�cݬO;�6�"ҤLt�D��.T��R�.͛���P���@�=H���ľ�z�-Y#"Xe�"��m��[^�Q��5Y-�Vu�"MbB0��N��/�\Em�"� ����Jw�~��
A„�t@�����b��0J3�M'b���8�\��2@"P��L�⊲���MD.����"y��P���dz��"`l��H#�_�L��&آ�Eo-�����9��E�8 �7!�H��f�j��F�>�)�jX#�&��N(�(�B�����#DU��pfHBc�Њd)"ݐ�ȦѭB�Ő̈�&&����I�%dM�
k�7rv{�����gI�[�����-t���6����lY�W^oP�o�y@xt� �\��������FR�Y.�H�s �@�,I��K�97���&��U��SM��m�a��[N�9n�L�ıy�D`�z	�%����t�,m�M ��GN��Mp��ԃ{��v��gNs=8&�(r�w��!��/�G�{N���Ɖ?n�;�A8�N���?��X��J4�n\�Ϻ�iN�\��F��;���(|'>p����N���g>QȂ?ށv����O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O�����O����;��Џ��O��& !�	�,�???]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^```bbbcccfffhhhkkknnnqqqsssvvvyyy}}}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~Ŧu�e�b�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a�d�e�g�k�p��s��v��w��y��y��z��}�������������������������x��s��l��j��j��j��j��j��j��j��j��j��j��j��j��l��l��l��l��m��n��q�u�~龂较迆���–�ھ�˻�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�aㅫ�-��O�����ӫ_Ͼ������@R/lܔr�E�À�(�h�&��6��vP.�5N1J��v�� �8 	J�S. ���,��"� �1#�h�8���&֔�:)�D֐�L�`@�L6�"��dĂ�P���̖\v��`�)�d�i�h��&��ՒD1���.qS#� ��8���$HB�)��I�h[1H ؁1)ْ���
o��d��h�-�
p�q�-%���B/���/#i#�Y6�� }�"��F�4�&���6��4�F+��Vk��ZKM5�v���+��{M3�D�hH��|4�	NC�4��+����,�\a�'���7�0�R� ��Wl��g�1�M����|$�2�2����gGGHDC���4�<p����9G���@�s� ͇#�4��It�K�$ܫP�6Wmu�8��:�,��`M��E7��B�; 1���N,�\mw�Ys����{�߀O<6�E?�B��:�F����y��ݔ���{���_N8ȃ,�P6�jF"؋BϤR����=sn{��2
5>��B������N��k~��{�;ȼ'T��V4ΰbp)B��<��3o���C����O���	i�*� �L��҉P8���|��c^�������8B�4��U�Q����/�D7Ⱦ.�@�6��UDqBBB�a�f0�� ����e
AE�A�k$�_�-$�a(C��X�A�A �E��@B���p�|�aw��"!�P-(R�!@�b守E�iq�a�Q2�\O@-��7���o�M�kl��X@�Ά�ŀ0�D��@u,�2�:6
Rko$����G �R�Ct���T�����%w�IM�͐�DB%�]HT"ABćʫ�r��s�a�9�NBUD�0��&�Z)L�q�}�$�4ƈ@0��"4�Ki6����1	�Ń00@&�����,c��4g��kNa��� �(J�$>�VN}*����?s�Ƀ@Q@1�jυ2ԡn���&�9����D��z��YCA�7��q�dk�A �.s@*<�8cJ����
��HJ�l�-��E�̃x��x;*&��;�Mt�7%�H�`�X��VY��Mz�h�@������/@ 0eZfT�&զL5�"�B�B"׀dG�������|��tZP	ǤTW�|���ul0!���͘�d�� $�����W_A�W���c�H�XTU���%�PA;[��6����S��	�����W���gr���h�	��^{�g�6y�-i3�\g�v@"�H�Y�����5gv�yۊ$�r)ExA�$$��oz��j�6R;�Fh��R�s�^�+�3��@mA���JDx2�B·�;�îd� ܛ���GAf��[^
����&Ib�L5@�̈w��%DrX�*�Lȉ.�
)	�#ʋ�q@oB��s������A�q�et#Q�#w�qJ��T�#'�e��C���Fx:P����e�ؙ���@�!�
�GZ; {�K_iT���-���PƜ�Rނ�#V�r,g����ʖ�gMkYo�\�ε�q}�t5��iW�D�H�h�͸�px�+1{D�jqv+a�� 9�x��R��$��2�-�)MQ
)!F��$�z6�@�f}��hC��@j���\�&�w�B�m�|#T��쳦�;������Ԧ7�iA1��J�1_'y�� WP<�aR���(R	0L^:�0���Hp:��"�2Ϲ�!$��Jx�·N�(��@�F-b p�;����-�M�mc�P�w���{��`;|棄[��Tǎ�������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�����>o!�	�,�]]]]]]]]]]]]]]]^^^```cccfffiiilllnnnqqquuuwww{{{~~~�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ó�Ř�ƚ�Ǚ�ǘ�ǘ�ǘ�ǘ�ŗ̿�ۭ�䢉瞇蜆蛅뚃혁�{�o�e�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`��c��i��i��i��j��j��j��j��j��j��j��j��j��j��j��j��l��o��q��s��w��|����������������������ç�Ƭ�ɯ�ɳ�ξ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�	�����O�����ӫ_Ͼ�����w���-a攚�u#A��(�h�&��6��*�/�50?@�v�� �8`?��.
���,��"�
��*�h�8�!&��L:)�Dv��LD@�L6��DĤÂ	t����ʖ\v��`�)�d�i�h��&���D9x�:�TN�.�C-�O-<,�`���Уm����D��C��9�����IDxC3�1sÁ���
�"pq�� P����̜2pdq�J`΄�N�FpND�t���6���.;
4�Vk��f���j�2�+��k�莫�:�A����<��;
ɣ�)�@��,�L�'���7���;��	Wl��g���g�)����;��A�MI�

�SJ&�,����8�|������=�Al\�P���Q-F��B�B��T���X��3�\w��C��5��.��pt����;�\R��Tۜ��x+����|�]1�a�B�0P�F������	ݐ�lwޔc��ߘs
x�r��2���FX�B�l��1O^��;g.��׎�B�AF�XgB�h�����
_>��o^;�(��2Z4�,B�O������+��;���5�*�
�L�/�<������#o>��S_�����L@����t��Dj��_�&X>Z0}�{^�g��?J���ă��#��+��fN��K�Ԁ��@�H�'P(�����.�k'w $b\D�0 $�<��D�
�v�H�$�H`@9HH���=N�n@��׮�9�� ��&��!dr##��xF˩1�$6‹�]Y��hl豌}<^�46.1�"�_�*!�x�#	�IR�k���2B�."�P�:Q����ę)O�1K����R �w���p�ˈ풗�e��g 	(Y`��w(*su�l�Þ	��2�Y<�B� 
@?@�#��p�3y��9��Ƀ�`@8����̓�t��=F�|ZL�C�Ab ���D(��Є5ԡ��%BQm@"qP<
�фv4k)D�@
�������io��n/�#H�6��d��D�( dd?�G_S���s�P#RHI !ދ�̦�Ѫ�s��@��T=��O@5DH(�:֠^ͬ�hb8�B"�XdF�*3�.�ЄhMr-C"��>u�u��v��P�*Ұ� ]
�k�b�l�{O��R�{E��
�I���'�%�OUk���r���,5����i����򶷾u&p+������D� �"$υnt�9ݟ��	1-�`��0!�o��+��M�5�Ԋ܂@N=��	֊ӵ�dc��t�����q��n&�)yE9|� � �r+��
h
�^x3��
�q�r@oB�
�\d�B�AR�a�B��j���b��.#� ��V�]�Ťrq(�'-��&j!�P-�#)� �o�	q��dэ�WwOSH�;�>�م����;�#:h�^�:�����ܐ�h�Qo�}�����"���S`��yGJ�
u��Xn{H����VCkZ݊��g�o��ָ��H�.�q���Ā���H�\ W�����"��׾a��D̒�"��ԗq���?�IV�����9x �%��)iw	t�±	F&P�5��*I�d%,�BKk���'N�[<MmzS��m ��%�p���FN�+��0��M��I�~	.���ۜExUNtq���r�/|�!?��H�J4g�O��K~a�E)G0���'>`���N����;�Ã�u��p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�������O��& !�	�,�ZZZ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]```bbbdddfffjjjmmmoooxxx��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~Қn�a�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a�f�l�o�p�p�q�q�r�s�v��x��{��z��u��p��m��j��j��j��j��j��j��j��j��j��j��k��l��p�u�w�y�{�|�}ﺂ�����¯�ŷ�Ǿ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s��j����O�����ӫ_Ͼ������0�$J�^֔ZK�む�(�h�&��6��b�C*�Ս-Jl�v�� �8�K��
Oߤ���,���02�A*'�d��1��<n��-6��C�Di�8�2�G6��-REL?,xA	>$Q+�t��`�)�d�i�h���l��JwH�P��58���t7��A�T��- x���b��R���YS���rR�p��p�$�b���J��20t����2(��
6+�5E�̱�&���6���#��Vk��f�-������+��Kn6Y�A�`�Q7��6
u�L)�L�����̯'\l�'���7��*D,��Wl��cl�����6�聟Q�
QCJ&�������4�<3����93�KC!xDG��K�B*ì���l��Pӌ3�TW���&�ͺ��Q�f@�֥`���h��t�l�m��V�-7�T��5�
��F�XA�Q�oڄ/��ۈ?
�܌�m�1
�뀬h6��($�&�w�ቇ��⍗��| �+n�Q*��4,{n{Ӣ�~���<x��PzjQ7y�iA�p~���������G�	c+��B��i
��+=��[�=����G4	m*`�1 �4J�T�X��0{��!�WkTJ@C�Ȯ��H���8��t���b2i�"� P.��Ad0}��<��ƅ~�BpA �A�	��@B���z1�!�hXù�0x����p-@>H"�xD$*qzLlbܞ؇j �x�D�Q<�T�\���Eʼn~	̣���+"� ��R
�Q���ck�;R�xB�A FAD:!BBaHD�N��ܝ#y�>�� ��*$*�%���d�@ʆ5r�:�$�w��	Ua€p��R�i�e-�K�Q�)��� �	�|!b,���e"��Ę.Gh�	����d���S�7�pZL���@���x`@�,H!�	O��s�o�'�t)Ƀ@a@%��4P����U�Aʅz*��^>��E4"h;r�8f�p��G?1]�B��bD�0 lD�.}��b
���t�$P$D� �x�P5JT;��j�ܣA�DE��1@{C,�:Ֆm�F��.��_"�3aB8Iֲ��L�B!���$�?��H.�N��`x��^�	ɛ��D���� �0�acVU�-6���A�
�
0�!\
��X�ͪ�����*VCz���`�y��.pځ��,lE)[߅T����Tчxo@�EH�{�����|f_W��!�
R7z�v��Gh$$�r]�ԋ����M/3כ��� <T�E����|�}�~��ߌ��G;�D��� �@�BH����.��ԞDk�[���!-�:��
s�õ1.��&ėX%Fp�\�l��fp�/6�+�I#�HѺ����ơ��(�0
�����b�.�]���P^���xكXc�:��F<�#$i�
s�\�)ty ��$ˑ}��QY��*�/�ـvn�m	�R�|��W����Z�����n4d)u�)9�
=+"�x��W��gDk[����a�-s�ָ���.v�$�@�	�L]��#����'V,w@��n$*R�@=IIt)�X�*s�jU 
�ί��*K�xM%���(�&�bԬ�.��v�j�*�Ƅt�,m�MO�����MM�S	�}��%�@�6��/	�n�-���񒛜H�0MXA�� ��m�����8G�Tr��"C9��G�\�|'րB	�=�s�%���b
\��	@O|���{��`���(�Sǎ�������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO�����Ͻ�w�����>n!�	�,�[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]___```bbbcccdddfffhhhjjjlllooorrrsssuuuvvvxxxzzz|||~~~����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������f�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~a�b�f�h�j�k��n��p��l��j��j��j��j��j��j��j��j��j��k��s�������������꽕�˜�ř�ǚ�Ț�Ȣ�Ȳ�Ƚ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s�%�%�M01��O�����ӫ_Ͼ����Ճ)�F�dД>kƃ��(�h�&��6��~ F+�e
.l��v�� �8`
l�
Oش"��,���028B+'�t
1��<r�.6-�B�Di�/,3G6��-f GLc,�c������`�)�d�i�h���l�y�+r�a�/t� .9�#�!��5�UK!$��3+���e�.e ���(ɡ��d �[3U�A+'�q`��LNI�-vq��p`�,#1c'�"(Y�2��A3!E3B�*T�P0�$���6���F��0�Tk��f���v��1Ȅ+��k��*#
DШP`	�|dM�QMC��BJ(����,��/*w$���7���G��HTl��g����A�,�2T
��hGdFC���0�,��Kl��8�L1�<��s�n$����Q,�@�BЌ���PG-s�9Wm��;������kBԸK�-i8��$�(� ��p�/�W�m��Ys����n�4+��F���#	"��-��Q�}��U��?!tB�l@�+�@`,
	�C�:ԒS�Ėc.;ϴ&T��(d�
�c(��#�����4�n�γ'�3�	�A �Y3�~'~z�n�����}±+/��@"��#�L,�P5�c��������?��^ToP�zUE"% 
�� �����G����u�۟�Π��4#E�H�T��c
���R.�L��2��"� ��"��p��+�	������@�.�8��a@ HH/lxC�N�;�[}�9��(‚�!��㜨:(F�jS��޼2�8O@1�H4���h�͆c$���xƜ�Q�z��Av7�uE�jcAx��&�Qn|�#���7 �C $��L��#�IIŽ���5��B"���r=<����t�Q�5a dORD�0 0Ա���e�ryB^���,r!Kl�(�9�R2�a�tf�V��h!�ڀMdn��1��7NqrL�aÀ� H��t'<�&�y�͞���A�0������@IiP)"4y
5H,���1@�<H6C9Q�����(��y}
�1À:(R���u�ZJUj1���B��yI��tj9E#O1̓H3@[�'����R�G�fR+��˥� f��>���j<��Ǯ��		\�H�d$!�$�ZavR�%&TĆP�R+A��ֽ���JKu���|�S�2�|B��%d�)Y��!` �D* dv #U��;C���2�����A��9�!�]ihK�r��8í3O{��
HS!��:�8�ָ�E.��3�$�2�Ed:�$���n�l�K墒	b+��9!�c�fZ��ҽ�<���O�Foz҅��@��O���.��\���*�ZP:�ױ��$�}��$�b��	�[��n�X��8b	~�a҈4R��̓a��^g|��
�P��3��.��E)c"G���S�A����rD�#�ߜ�A8�F��j�i���q�>Y�2�����d��w@!�66 {�K_B���w�g��A����>* 0Ԩ#���`H�Ӡu���R��ԥ�V��V��!�*�	�ft�l��
�wdɆ[ap\!��o$�U٫ws�T�
A��
��b���VҀ�,h����qJ�!�i oHƥ[�
]���.	|m�h�@W�Җ��~������'9�)�	z�"Wb
�B���x�̰n���ϸƛ�M���ܸ��G���&)�4�W�r��F(�����<@'(Q�{Ҍ8� �7z�5�9D�(�Ѕ+�І����P��ԧNu�̧
rp�.荝�{��`���N�����hO��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO��!�	�,�VVT]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]___bbbdddfffiiilllooosssyyy��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������|ړk�f�c�a�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�a�f�h�h�h�h�l��p��n��k��j��j��j��j��j��j��j��j��k��m��k��j��{����������Ů�ν��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������]	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����s����ɑ"��O�����ӫ_Ͼ�����8���>uߔ~�'$���(�h�&��6��j0�?��<Jx�v�� �8�J���?���,��"����<�h�8渡�؄�
:)�D���LN��L�h�1�`+�D��3ϖ\v��`�)�d�i�h��&����DD����E�N�np�>�6�>Gl���$�"a�m�����Q�n�Hi�2��āA�:A%I���>��s�����$Μrpdq�J ���M�~�MD��bʱ�&���6��͖Bδ�Vk��f��ٞ�η�+�䒋�6}�A�l�3!8�5
�"�'��1G"����,�<p&V$���7���G��2Tl��g���2�=�4dM���gGEDC�xr��0�k��4�<3����9S���@��D;
�< �S��,��'0G���TWm3�<g���>��'qkB׬K�<�- �&��'�H��V�m��Xo����
w
��@3q)B�+��C�c�J�r�}��v���Y�
����B�: ?u@�>
��H�R�M��4[���k��ߣ?z��?�)���:���L��=��|Ƥ'4��V�����*�|��,;��'l��/z�8vp2E�h�ې{s���]����>�>�B4% VU�Q��5�I.��h�m��@H8(% �UDW:���A� �*hA�� FP*�}!�(�O���o�,l!�|�
���@��H����B�;�!�|�C�Q�_��A�# 'PB�E�I�uT��֮�Š� d���D0nP!� !�v�)��yll#�"u�
]IՀ�h�P�ф}D��HArL
�#���q !9|$#I�4N�k�t�B�C"�:\B�'J3��n�<e�R�O:D�0��Q����-��K]B����X�$1A"��Dd*s�Ws��͋i� �!b4-!�@�(�i�f��a�,gŠ�%h9���YGz�������OL$�Z�DR0P���ťB������J�D��w$��(37�5������$h��&FUJ5{��
.��+a8�$Hd�2�AV!�o��`?�\GwC��`@^��!�8���N}j�|�Ҡ�Q�`ʐ�	h�8L�X�՝�Ւ�4������@�,�\�Z0�n�d�+�A�tH���b��S���v�*�ze����H5����ղ3�B�E"���Q�*,���D�eD�e1�<�m��Fd�I�
���ͭn���]��gy-�[48��N@�=H*�X°�V��dm�H����"H �:�@zײ��x��у���nD��厵��}nƎ�4�Pt@���^�CH�1½��#6_U�� �h�m%�Y�@!��n��;�	c>��A�
 d��M���^��י��
���.#J;����ƺ�1�P]�dX�#�lPx��bE�)�6�$��D7r_8!Oc�����Ir9hR�PB�c9�#2�'�\�����|��|*���h4�z�rk�)��(�%
�C�AҤ�D�Q�R,h��Ԩ>�����V����*��gM�3D]�@A"�0{����U�2pa�<yq/?�+ ��
ը ����o2� /�d�*�� ��|�6�T"�P�[M��k����]�>	7} *Y	KZZ��N���ijӛ�����].qFz�D�[\AF��<X|�{�Hh�L�Q珛��*�@�m�w���0wP\�xd(�8Ϲ�� ��	+��·nq��	�J8��',��ԧN��[�����~����	���N�����hO��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ������gO������M@!�	�,�IJI]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]```dddiiipppyyy������������������������������������������������������������������������������������������������������������������������������������������������������������������þ�ĺ�Ư�ǟ�Ț�ș�Ǘ�Î����������������������������������������������������������������������i�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�~`�g�i�j�k�k�k�k�k�j�i�h�g��j��i��i��i��i��i��j��j��j��j��j��j��j��j��{����������������¬�̽����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������g	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N����ȓ+_μ���УK�N����sŵ�����O�����ӫ_Ͼ���������v┊s�Â��(�h�&��6��Z���U
=B`�v�� �8 B�����,��"�8�=�h�8�!�ش�:)�D��LJ��L�H�1���"�DM�Sϖ\v��`�)�d�i�h��&��4�D<�P��=�4N�Z�?��
??�� �4��a�m�����P�n�Hi 2��ā9��:9�DI�X�?�3g�����Ϋ^pdq�H`���fP�C��b�Dz�ʲ�6���F+�ўcε�f���v��ݪ�θ�k��~�8�8U�A�;l�6��������p"�l�'�0�T`���G,��Wl1�E����w���>(��mS*� �ّ���P,�@������8�|s�����=g���D|�;
�< ��n7�L��ڬ��X��3�\w��E���&�M����^0�A��B��Vgm��o��|?�؀}ĥ�l�l�ϮeK$sӍ��w���\���߀tB�P:�?�
 ?
��H�S�Ζc.�Śsn;
�(���9A`�	�r뭿n�±Ϯ�ĵ�n;�	�@`�Us8��"���S]�������cѼ��:^�2E��CB�p��߇���+>���A�²��"@h���{������?����6B��i��@�O��`/wA���A�*�}� �2!�P�?��o�-ta�n�
�ă@��Hd���B��a
ؿ 
�h�3����-@<HH�8��Iqr>�b׬xŏ� ���40pL!� ��h�4�hll����
H]��HfS�ff���ǯ	}H(�"�C�-!�xd%�:JV�v�t^
��@"�P�b?QV���3�)+�Tn��1�N$x��"�K��҂��]�$u1"	��De֬�h|&�z�,���	�D� ! ��&8+'NF�sP�:����`@L@�#�	�yҳ�@��攀�$	H�P>
O�2Ӡ�ChB
��$��D� w���(F�ѽ�ӗ��>ƈa@�<H7S�R�鲥��(�^Y
H�Y���YB���j?m�KSyÂ�`@ׄ�'4˃�Җ*}����F��
�fL?]�N��Ț9���!�"�E
4�r]XT5:UA�u�@�D��A6�
l���¶��P��j�e#X%+X�ҮC�B��J��,7yJ�ɚ�g��4
���'�a߀�z�P*3���l=s�A���"�DDڃ�›ȕ�r��\�
!W,�M�#!evź�gv�yE<�܉@7@��W��ާ�w�������"�#!��_����=e�W`d�g'�Uu@!�{�W�JNXl5�.B�)�V��5���8b����'��	�P�j�R[BG���j��Ђ ]�`x��b�,�d�������m�f�����O~52�x�����d**�cJx�A��b$#3���b��,�t˨�&
�P僄w@&�gT�{�K�������	�W�H�T�|��ŠH���,eQ�ԨN����V��խ�fMkv��!�rWA���8�*�v̑'�
���������e��
�L%)Y�7����z,[�@��l���
�BN�:D( 
h 	�
<��s���%Ǣ�T�+eiM��N�Mo�S�$F��7m��'Nq�%�s�7�� e��2����;N�ȶ�Fn�|Pܦ�<2���|D%
9� {��M���Ph���L�w���;��P�:|�#&�#�Ǝַ��{��`���N�����hO��������p����N����xϻ��������O����O����;�񐏼�'O��[��ϼ�7��{����GO�қ��O��W�ֻ�����n;images/btn-arrow-icon.png000064400000003164147361034400011366 0ustar00�PNG


IHDR|futEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:C0608D0A206B11E8829093CC3E6582AB" xmpMM:DocumentID="xmp.did:C0608D0B206B11E8829093CC3E6582AB"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:C0608D08206B11E8829093CC3E6582AB" stRef:documentID="xmp.did:C0608D09206B11E8829093CC3E6582AB"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�G���IDATx�b���?>���d��d'%�'%��-�����~zv�ҽCw��ëd86T7���'��0���׳�|�<H.3�
.�s�H>r��Һy[��gh!˃� q�<HT=~�A����x���3�Wz�r2���Cw������ǯ��/�]���D��0�����2���W�/���ARE� � sP/��1�߿�]���Qb�[�T5�9 �������ˈ1�e��|� s@�
ϟ�6���l�����gn<\�Kj��Ik�v��>�ݧ���Uv�ȂW�ĥd�\�;O_��u��lR�f(�`��2�ER�Ob��]��Pr�s���p��`����~�ҳ�U�;p��|�Dd�s����V�b���?6V6t�|�h87�bC���AB������@��e�����C�{�DP��r��Tl� �@�2l8ry"0�^&�`���:?~����􍙸Ԁ��ːڳ�
�tt�x���2x����q���sd.X�×oW��M��K�o�'2d<�&u.u�Ѽ�����8b���|���7�,��p�~�9X�s`�Zq��f=b�
R�ҏ��0N��|������i^����a�:�z�>�~��\�]i��=J��7�H�^�b��%�� >H$RROt
�*(�~���*r�� q�<� d$Դ��I
�"�¼\"o?{���&�= � ��Ȇ?�Z]IEND�B`�images/loader-fm-console.gif000064400000121205147361034400012011 0ustar00GIF89aPP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111|XY萓����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!�NETSCAPE2.0!�	�,PP�C	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'JN��

�ɠ!<H�"5d�
��P�R1'�իV�X:ThтG�&eZ�iT�SV�zUkE�]}%V,�͞%���Z�a�R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM���3Z֭EG$�黩U{��kؖCa|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222VGH�cdÇ�띡�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������M	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�E@�
5��ѣF�̒��ӦY�1C�*�8�j]D)R��>u��T�U�V�:�`Q�I��%+mڬl�v�{,A�s�<kW-żz���+wn�	�5<1W�|�<�@�V)K���f���z6��Zĥ��6���Y�W���qຸEG$�ٴ���f����P�O^��yܰ�KM]�u���n����ⲏ���0l����{[�o��GN_�y��9��m��f�p��b�e7��>��@����z�M�_u^������yf6`tr��w���x!h_P�5c��U�^���8_���x����"�H"�&^H`dΘ������ ��Y�!�j�!�:�"�*��"�n"�2
Ic�6�e�j)P�]�y#�9�$蠄j衈&�袌6�裐F*餔Vj饘f
i@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGG]UU�uv���㦩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�t܂

�Π�{H�"ug�O��P��1X�իVkY:ThтG�&eZ�iT�SV�zUkE�]�}%V�=�͞풖�Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM�ּ�3Z֭EG$�黩U{^��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEET[Wx�����ܿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�^��

�ˠ�hH�"Uf����P��3�G�իV�X:ThтG�&eZ�iT�SV�zUkE�]S}%Vl4�͞����Z�Z�R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��܈3Z֭EG$�黩U{n��kؖa|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	g,PP�			





Zna�ֻ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'J$I�

�Ġ�H�"�a���P��0HƒիVIX:ThтG�&eZ�iT�SV�zUkE�]�|%V��͞e���Z��R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��|�3Z֭EG$�黩U{>��kؖ�`|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@QVSx�~��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'JT��

��`2kH�"Mfݼ�P��3XNJիV�X:ThтG�&eZ�iT�SV�zUkE�]q}%V�5�͞����Z�V�R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��̈3Z֭EG$�黩U{f��kؖa|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMVXWx�|����л����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������;	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�u�

���fH�"�f�֭�P��2Hh�իV	Y:ThтG�&eZ�iT�SV�zUkE�]�}%Vl3�͞����Z�c�R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��܉3Z֭EG$�黩U{���kؖ;a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>QURv�z���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�Ev�

���&UH�"�d�۱�P�r3���իV�X:ThтG�&eZ�iT�SV�zUkE�]�|%V�*�͞=���Z�U�R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��̎3Z֭EG$�黩U{f��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::]]U����ֱ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�.N�

��`-NH�"�e���P��2hǐիV�X:ThтG�&eZ�iT�SV�zUkE�]�|%V,'�͞���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM���3Z֭EG$�黩U{~��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





\UU����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������o	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�An�

:Ƞ0H�"�b���P��0�j�իVYY:ThтG�&eZ�iT�SV�zUkE�]�|%V,�͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��|�3Z֭EG$�黩U{���kؖoa|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





YPI��zӹ��ڿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������u	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'J2O�

J��H�"b����P�62��իV]Y:ThтG�&eZ�iT�SV�zUkE�]�|%Vl�͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM�֬�3Z֭EG$�黩U{���kؖua|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBukbϲ��ϰ�յ�յ�յ�յ�յ�յ�յ�յ�յ�յ�յ�յ�յ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ع�ھ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'JH��

� �)H�"�c�ת�P��2�ΜիV�Y:ThтG�&eZ�iT�SV�zUkE�]	}%V��͞]���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM���3Z֭EG$�黩U{���kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888PJF��s⼜�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�ϫ�ϫ�Ю�Ӳ�ն�ָ�ֹ�ֹ�ֹ�ֹ�ֹ�׺�׺�ۻ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�3`�

z� �$H�"�b�P��P�28��իVGY:ThтG�&eZ�iT�SV�zUkE�]�|%Vl�͓͞��Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM�ּ�3Z֭EG$�黩U{^��kؖWa|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





:4/�p]ذ��ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ʢ�ʢ�ʢ�ʢ�˥�Ϋ�Ю�ѱ�Ҳ�Ҳ�Ҳ�Ҳ�Ӳ�ӳ�ӳ�ӳ�Գ�׶�߼�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������=	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'J%Q�

�Ġ�H�"�a����P��1ȧ�իV�X:ThтG�&eZ�iT�SV�zUkE�]�|%Vl�͞5���Z�}�R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM���3Z֭EG$�黩U{���kؖ=a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''(((52/l\M��w淏�Ę�ř�ř�ř�ř�ř�ř�ř�ř�ř�ř�ř�ř�ř�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�Ȟ�ˤ�ͧ�Ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�Ϭ�Ϭ�Ϭ�Ϭ�ϭ�ϯ�ϵ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�J��

Z� H�"�bPO��P��1h��իV�Y:ThтG�&eZ�iT�SV�zUkE�]}%V,�͞M���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��\�3Z֭EG$�黩U{���kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222iZN��kХ�칎�”�”�”�”�”�”�”�”�”�”�”�”�”�”�”�”�”�”�•�Õ�Õ�Õ�Õ�Õ�Õ�Õ�Õ�Ř�ǝ�ʢ�̥�ͧ�ͨ�ͨ�ͨ�ͨ�ͨ�ͨ�ͨ�ͨ�ͨ�ͩ�ͩ�ͩ�ͩ�ͩ�ͩ�ͫ�˲�ȼ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������C	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'Js�

j� %H�"c����P�22�K�իVY:ThтG�&eZ�iT�SV�zUkE�]�}%V��͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM���3Z֭EG$�黩U{��kؖCa|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>JGD{iZ��l泉����������������������������������������������������������������������������������������������”�×�ƛ�ȟ�ʢ�ˤ�˥�˥�˥�˥�˥�˥�˥�˥�˦�˦�˦�˦�˦�˦�˦�˦�ʦ�ɨ�Ǫ�í����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������o	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�w�

�� )H�"�c0���P��2�l�իV�Y:ThтG�&eZ�iT�SV�zUkE�]�}%V��͞5���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��|�3Z֭EG$�黩U{���kؖoa|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===IFCzhX��kէ�����������������������������������������������������������������������������������������������Õ�Ś�Ǟ�ɡ�ʣ�ʤ�ʤ�ʤ�ʤ�ʤ�ʤ�ʤ�ʤ�ʥ�ʥ�ʥ�ʥ�ʥ�ʥ�ʥ�ʥ�ɥ�Ŧ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������c	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�u�

���(H�"}c0T��P��2X�իV�Y:ThтG�&eZ�iT�SV�zUkE�]�}%Vl�͞-���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM���3Z֭EG$�黩U{���kؖca|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888ZPH�}e֧�︋����������������������������������������������������������������������������������������”�ƛ�Ƞ�ʢ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ʣ�ɣ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�U��

���'H�"c���P�:2(N�իV�Y:ThтG�&eZ�iT�SV�zUkE�]E}%V��͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��|�3Z֭EG$�黩U{>��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777ZGH�qs����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ř�ɡ�ʤ�ʤ�ʤ�ʤ�ʤ�ʤ�ˤ�˥�˥�˥�˥�Ψ�ֱ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�S��

z� �<H�"edpK��P�n1���իVsY:ThтG�&eZ�iT�SV�zUkE�]A}%Vl�͞M���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM�֜�3Z֭EG$�黩U{N��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666YDE�Z]�mp�}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ę�Ƞ�ˤ�˥�˥�˥�˥�˥�˥�˥�˥�˥�̦�̦�̧�ϩ�ҭ�۸����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�S��

z�`�<H�"md����P�r1h�իVmY:ThтG�&eZ�iT�SV�zUkE�]?}%Vl�͞U���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM���3Z֭EG$�黩U{��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCdNO�nr���������������������������������������������������������������������������������������������������������������������������������������������������������������•�•�•�•�•�•�•�•�•�•�•�Õ�Õ�Õ�Õ�Õ�Õ�Õ�Õ�Ę�ɡ�ͧ�ͨ�ͨ�ͨ�ͨ�ͨ�ͨ�ͨ�ͨ�Ω�Ω�Ω�Ω�Ω�Ϊ�Ь�Ӱ�ڻ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�ĉ

z�`&CH�"�d���P��1�+�իVyY:ThтG�&eZ�iT�SV�zUkE�]�}%V�!�͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��<�3Z֭EG$�黩U{��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAAbLM�jm�{�~��~��~��~��~��~��~��~��~��~��~��~��~�����������������������������������������������������������������������������������������������������������ę�ř�ř�ř�ř�ř�Ś�Ś�Ś�Ś�Ś�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ƚ�ȝ�̥�Ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�Ь�Ь�Ь�ѭ�Բ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�`ǂ

��BH�"�d�P��1h�իVmY:ThтG�&eZ�iT�SV�zUkE�]�}%Vl!�͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��,�3Z֭EG$�黩U{��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???VGG�[]�{�|��|��|��|��|��|��|��|��|��|��|��|��|��|��}��}��}��}��}��}��}��}��}��}��}��}��}��}��������������������������������������������������������������������������ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ɡ�ʢ�ʢ�ʢ�ʢ�ʢ�ʢ�ˣ�ͨ�ϭ�Ѱ�Ҳ�Ҳ�Ҳ�Ҳ�Ҳ�Ҳ�Ҳ�Ҳ�ӳ�ӳ�ӳ�ӳ�յ�ۼ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�`ʂ

̠%BH�"�dN��P��1h�իVmY:ThтG�&eZ�iT�SV�zUkE�]�}%V,!�͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��\�3Z֭EG$�黩U{.��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888eHI�dg�w|�{��{��{��{��{��{��{��{��{��{��{��{��{��|��|��|��|��|��|��|��|��|��|��|��|��|��}�����������������������������������������������������������������������������Ũ�˩�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϊ�Ϋ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�ϫ�Ϭ�ұ�ն�ָ�ֹ�ֹ�ֹ�ֹ�ֹ�ֹ�ֹ�׺�׺�׺�׺�׺�׺�׺�ټ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�u�

�Π$>H�"�dЌ��P��1��իV}Y:ThтG�&eZ�iT�SV�zUkE�]�}%V,�͞U���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��<�3Z֭EG$�黩U{���kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222K;<�[]�sv�{�|��|��|��|��|��|��|��|��|��|��|��|��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��������������������������������������������������������������������������Ҵ�յ�յ�յ�յ�յ�յ�յ�յ�յ�յ�յ�ն�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ֶ�ַ�غ�ھ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'Jt�

�� �?H�"�d͐�P��1��իV�Y:ThтG�&eZ�iT�SV�zUkE�]�}%V��͞���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��̍3Z֭EG$�黩U{���kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))C44LN�ad�pt�z~�~��~��~��~��~��~��~��~��~��~��~��~��~��~��~��~�������������������������������������������������������������������������������������������������������������������������ȶ�׾��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'Jt�

��`$<H�"�d�ˏ�P�~1�˔իVY:ThтG�&eZ�iT�SV�zUkE�]�}%V,�͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��L�3Z֭EG$�黩U{���kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





\:;�WZ�mq�{�������������������������������������������������������������������������������������������������������������������������������������������������������������������ȼ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�rڂ

Z� �3H�"d�Ɍ�P�>1�(�իVY:ThтG�&eZ�iT�SV�zUkE�]�}%V��͞����Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM��\�3Z֭EG$�黩U{.��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222VAB�XZ�lo�|��������������������������������������������������������������������������������������������������������������������������������������������ǿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'�m��

��`7H�"�cpˑ�P�n1Ȋ�իVYY:ThтG�&eZ�iT�SV�zUkE�]y}%V��͞=���Z���R��u�b��{��lO$<԰@�Jdձ@�X%K��ըݥM�J�
8�ָDM�֌�3Z֭EG$�黩U{F��kؖ�a|����–+�.m۫ն|<n������n�����ݼq���WOܾ���+��\�������u�e��v�=��w�]7�s�]
H��I���'�}�I��~�y���
6�� �܉���!���(߀��������h�!�8"�%�x"�)N�"���߁
) �Zi�cj9�azy!���!�-.�"�1*9#�5�y#�9ʹ#�=:�#�A�9$�E�y$�IJ�$�M�$�Q�$餔Vj饘f�馜v�駠�*ꨤ�jꩨ�
j@!�	�,PP�			





   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555lNO�ru����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������_	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ'JL@�
5�ȏѣF�r��ӦZ�9C�*�9�j�D)R��>u��T�U�V�:�`Q�I��%+mڬl�v��,A�s�<kW-żz���+w��	�5<1W�|�<�@�V)K���f���z~��Zĥ��~���Y�W���qຸEG$�ٴ���f����P�O^��yܰ�KM]�u���n����ⲏ���0l����{[�o��GN_�y��9��m��v�p��b�e7��>��@����z�M�_u^������yf6`tr��w���x!h_P�5c��U�^���8_���x����"�H"�&^H`dΘ������ ��Y�!�j�!�:�"�*��"�n"�2
Ic�6�e�j)P�]�y#�9�$蠄j衈&�袌6�裐F*餔Vj饘f
i@;images/wp_file_manager.svg000064400000005130147361034400011652 0ustar00<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
<style type="text/css">
	.st0{fill:#EE8422;}
	.st1{fill:#FAAE1C;}
	.st2{display:none;opacity:0.5;fill:#FFC73C;}
	.st3{fill:#FFFFFF;}
</style>
<g>
	<path class="st0" d="M15.40182,15.59439c0,1.32701-1.07576,2.40277-2.40277,2.40277H0V4.27232
		c0-1.2534,1.01608-2.26949,2.26949-2.26949h13.13233V15.59439z"/>
	<path class="st1" d="M19.75747,9.28074l-3.51929,7.03859c-0.51258,1.02516-1.56036,1.67272-2.70652,1.67272H0L5.99787,5.9963
		h11.72971C19.41468,5.9963,20.51197,7.77175,19.75747,9.28074z"/>
	<path class="st2" d="M15.42108,5.9963l-1.17953,2.49012c-0.5006,1.05682-1.56531,1.7306-2.7347,1.7306H3.90677L6.01714,5.9963
		H15.42108z"/>
	<path class="st3" d="M10.93892,8.35882c-2.0045,0-3.63531,1.63076-3.63531,3.63523c0,2.00455,1.63081,3.63548,3.63531,3.63548
		c2.00448,0,3.63537-1.63093,3.63537-3.63548C14.57429,9.98958,12.9434,8.35882,10.93892,8.35882z M7.6705,11.99405
		c0-0.47388,0.10166-0.92371,0.28301-1.33018l1.55911,4.27171C8.42225,14.40588,7.6705,13.28775,7.6705,11.99405z
		 M10.93892,15.26272c-0.32081,0-0.63048-0.04704-0.92337-0.13318l0.98076-2.84958l1.00459,2.75243
		c0.00661,0.01615,0.01473,0.03103,0.0234,0.04504C11.68459,15.19702,11.31954,15.26272,10.93892,15.26272z M11.38938,10.46163
		c0.19674-0.01035,0.37406-0.03107,0.37406-0.03107c0.17612-0.02083,0.15534-0.27968-0.02085-0.26936
		c0,0-0.5294,0.04155-0.87116,0.04155c-0.32115,0-0.86081-0.04155-0.86081-0.04155
		c-0.17625-0.01031-0.19691,0.25895-0.02073,0.26936c0,0,0.16672,0.02072,0.34282,0.03107l0.50919,1.39522l-0.71536,2.14517
		l-1.19016-3.54039c0.19691-0.01035,0.37404-0.03107,0.37404-0.03107c0.176-0.02083,0.15521-0.27968-0.02091-0.26936
		c0,0-0.52931,0.04155-0.8711,0.04155c-0.06133,0-0.13361-0.0015-0.21036-0.00396c0.58444-0.88724,1.58896-1.47316,2.73087-1.47316
		c0.85089,0,1.62565,0.32534,2.20712,0.85814c-0.01409-0.00088-0.02784-0.00265-0.04234-0.00265
		c-0.32105,0-0.54886,0.27969-0.54886,0.58008c0,0.26936,0.15542,0.49725,0.32105,0.7666
		c0.12431,0.21767,0.26947,0.49732,0.26947,0.9014c0,0.27971-0.10759,0.60433-0.2487,1.05661l-0.32609,1.08923L11.38938,10.46163z
		 M13.80701,10.42604c0.25512,0.46552,0.40032,0.99975,0.40032,1.56802c0,1.20583-0.65349,2.25855-1.62518,2.82511l0.99829-2.88636
		c0.18645-0.46629,0.24855-0.83913,0.24855-1.17066C13.82899,10.64181,13.82106,10.53014,13.80701,10.42604z"/>
</g>
</svg>
lib/php/elFinderVolumeGoogleDrive.class.php000064400000213133147361034400014772 0ustar00<?php

/**
 * Simple elFinder driver for GoogleDrive
 * google-api-php-client-2.x or above.
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeGoogleDrive extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'gd';

    /**
     * Google API client object.
     *
     * @var object
     **/
    protected $client = null;

    /**
     * GoogleDrive service object.
     *
     * @var object
     **/
    protected $service = null;

    /**
     * Cache of parents of each directories.
     *
     * @var array
     */
    protected $parents = [];

    /**
     * Cache of chiled directories of each directories.
     *
     * @var array
     */
    protected $directories = null;

    /**
     * Cache of itemID => name of each items.
     *
     * @var array
     */
    protected $names = [];

    /**
     * MIME tyoe of directory.
     *
     * @var string
     */
    const DIRMIME = 'application/vnd.google-apps.folder';

    /**
     * Fetch fields for list.
     *
     * @var string
     */
    const FETCHFIELDS_LIST = 'files(id,name,mimeType,modifiedTime,parents,permissions,size,imageMediaMetadata(height,width),thumbnailLink,webContentLink,webViewLink),nextPageToken';

    /**
     * Fetch fields for get.
     *
     * @var string
     */
    const FETCHFIELDS_GET = 'id,name,mimeType,modifiedTime,parents,permissions,size,imageMediaMetadata(height,width),thumbnailLink,webContentLink,webViewLink';

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Current token expires
     *
     * @var integer
     **/
    private $expires;

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    public function __construct()
    {
        $opts = [
            'client_id' => '',
            'client_secret' => '',
            'access_token' => [],
            'refresh_token' => '',
            'serviceAccountConfigFile' => '',
            'root' => 'My Drive',
            'gdAlias' => '%s@GDrive',
            'googleApiClient' => '',
            'path' => '/',
            'tmbPath' => '',
            'separator' => '/',
            'useGoogleTmb' => true,
            'acceptedName' => '#.#',
            'rootCssClass' => 'elfinder-navbar-root-googledrive',
            'publishPermission' => [
                'type' => 'anyone',
                'role' => 'reader',
                'withLink' => true,
            ],
            'appsExportMap' => [
                'application/vnd.google-apps.document' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                'application/vnd.google-apps.spreadsheet' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                'application/vnd.google-apps.drawing' => 'application/pdf',
                'application/vnd.google-apps.presentation' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
                'application/vnd.google-apps.script' => 'application/vnd.google-apps.script+json',
                'default' => 'application/pdf',
            ],
        ];
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _gd_splitPath($path)
    {
        $path = trim($path, '/');
        $pid = '';
        if ($path === '') {
            $id = 'root';
            $parent = '';
        } else {
            $path = str_replace('\\/', chr(0), $path);
            $paths = explode('/', $path);
            $id = array_pop($paths);
            $id = str_replace(chr(0), '/', $id);
            if ($paths) {
                $parent = '/' . implode('/', $paths);
                $pid = array_pop($paths);
            } else {
                $rootid = ($this->root === '/') ? 'root' : trim($this->root, '/');
                if ($id === $rootid) {
                    $parent = '';
                } else {
                    $parent = $this->root;
                    $pid = $rootid;
                }
            }
        }

        return array($pid, $id, $parent);
    }

    /**
     * Drive query and fetchAll.
     *
     * @param string $sql
     *
     * @return bool|array
     */
    private function _gd_query($opts)
    {
        $result = [];
        $pageToken = null;
        $parameters = [
            'fields' => self::FETCHFIELDS_LIST,
            'pageSize' => 1000,
            'spaces' => 'drive',
        ];

        if (is_array($opts)) {
            $parameters = array_merge($parameters, $opts);
        }
        do {
            try {
                if ($pageToken) {
                    $parameters['pageToken'] = $pageToken;
                }
                $files = $this->service->files->listFiles($parameters);

                $result = array_merge($result, $files->getFiles());
                $pageToken = $files->getNextPageToken();
            } catch (Exception $e) {
                $pageToken = null;
            }
        } while ($pageToken);

        return $result;
    }

    /**
     * Get dat(googledrive metadata) from GoogleDrive.
     *
     * @param string $path
     *
     * @return array googledrive metadata
     */
    private function _gd_getFile($path, $fields = '')
    {
        list(, $itemId) = $this->_gd_splitPath($path);
        if (!$fields) {
            $fields = self::FETCHFIELDS_GET;
        }
        try {
            $file = $this->service->files->get($itemId, ['fields' => $fields]);
            if ($file instanceof Google_Service_Drive_DriveFile) {
                return $file;
            } else {
                return [];
            }
        } catch (Exception $e) {
            return [];
        }
    }

    /**
     * Parse line from googledrive metadata output and return file stat (array).
     *
     * @param array $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Dmitry Levashov
     **/
    protected function _gd_parseRaw($raw)
    {
        $stat = [];

        $stat['iid'] = isset($raw['id']) ? $raw['id'] : 'root';
        $stat['name'] = isset($raw['name']) ? $raw['name'] : '';
        if (isset($raw['modifiedTime'])) {
            $stat['ts'] = strtotime($raw['modifiedTime']);
        }

        if ($raw['mimeType'] === self::DIRMIME) {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
        } else {
            $stat['mime'] = $raw['mimeType'] == 'image/bmp' ? 'image/x-ms-bmp' : $raw['mimeType'];
            $stat['size'] = (int)$raw['size'];
            if ($size = $raw->getImageMediaMetadata()) {
                $stat['width'] = $size['width'];
                $stat['height'] = $size['height'];
            }

            $published = $this->_gd_isPublished($raw);

            if ($this->options['useGoogleTmb']) {
                if (isset($raw['thumbnailLink'])) {
                    if ($published) {
                        $stat['tmb'] = 'drive.google.com/thumbnail?authuser=0&sz=s' . $this->options['tmbSize'] . '&id=' . $raw['id'];
                    } else {
                        $stat['tmb'] = substr($raw['thumbnailLink'], 8); // remove "https://"
                    }
                } else {
                    $stat['tmb'] = '';
                }
            }

            if ($published) {
                $stat['url'] = $this->_gd_getLink($raw);
            } elseif (!$this->disabledGetUrl) {
                $stat['url'] = '1';
            }
        }

        return $stat;
    }

    /**
     * Get dat(googledrive metadata) from GoogleDrive.
     *
     * @param string $path
     *
     * @return array googledrive metadata
     */
    private function _gd_getNameByPath($path)
    {
        list(, $itemId) = $this->_gd_splitPath($path);
        if (!$this->names) {
            $this->_gd_getDirectoryData();
        }

        return isset($this->names[$itemId]) ? $this->names[$itemId] : '';
    }

    /**
     * Make cache of $parents, $names and $directories.
     *
     * @param bool $usecache
     */
    protected function _gd_getDirectoryData($usecache = true)
    {
        if ($usecache) {
            $cache = $this->session->get($this->id . $this->netMountKey, []);
            if ($cache) {
                $this->parents = $cache['parents'];
                $this->names = $cache['names'];
                $this->directories = $cache['directories'];

                return;
            }
        }

        $root = '';
        if ($this->root === '/') {
            // get root id
            if ($res = $this->_gd_getFile('/', 'id')) {
                $root = $res->getId();
            }
        }

        $data = [];
        $opts = [
            'fields' => 'files(id, name, parents)',
            'q' => sprintf('trashed=false and mimeType="%s"', self::DIRMIME),
        ];
        $res = $this->_gd_query($opts);
        foreach ($res as $raw) {
            if ($parents = $raw->getParents()) {
                $id = $raw->getId();
                $this->parents[$id] = $parents;
                $this->names[$id] = $raw->getName();
                foreach ($parents as $p) {
                    if (isset($data[$p])) {
                        $data[$p][] = $id;
                    } else {
                        $data[$p] = [$id];
                    }
                }
            }
        }
        if ($root && isset($data[$root])) {
            $data['root'] = $data[$root];
        }
        $this->directories = $data;
        $this->session->set($this->id . $this->netMountKey, [
            'parents' => $this->parents,
            'names' => $this->names,
            'directories' => $this->directories,
        ]);
    }

    /**
     * Get descendants directories.
     *
     * @param string $itemId
     *
     * @return array
     */
    protected function _gd_getDirectories($itemId)
    {
        $ret = [];
        if ($this->directories === null) {
            $this->_gd_getDirectoryData();
        }
        $data = $this->directories;
        if (isset($data[$itemId])) {
            $ret = $data[$itemId];
            foreach ($data[$itemId] as $cid) {
                $ret = array_merge($ret, $this->_gd_getDirectories($cid));
            }
        }

        return $ret;
    }

    /**
     * Get ID based path from item ID.
     *
     * @param string $id
     *
     * @return array
     */
    protected function _gd_getMountPaths($id)
    {
        $root = false;
        if ($this->directories === null) {
            $this->_gd_getDirectoryData();
        }
        list($pid) = explode('/', $id, 2);
        $path = $id;
        if ('/' . $pid === $this->root) {
            $root = true;
        } elseif (!isset($this->parents[$pid])) {
            $root = true;
            $path = ltrim(substr($path, strlen($pid)), '/');
        }
        $res = [];
        if ($root) {
            if ($this->root === '/' || strpos('/' . $path, $this->root) === 0) {
                $res = [(strpos($path, '/') === false) ? '/' : ('/' . $path)];
            }
        } else {
            foreach ($this->parents[$pid] as $p) {
                $_p = $p . '/' . $path;
                $res = array_merge($res, $this->_gd_getMountPaths($_p));
            }
        }

        return $res;
    }

    /**
     * Return is published.
     *
     * @param object $file
     *
     * @return bool
     */
    protected function _gd_isPublished($file)
    {
        $res = false;
        $pType = $this->options['publishPermission']['type'];
        $pRole = $this->options['publishPermission']['role'];
        if ($permissions = $file->getPermissions()) {
            foreach ($permissions as $permission) {
                if ($permission->type === $pType && $permission->role === $pRole) {
                    $res = true;
                    break;
                }
            }
        }

        return $res;
    }

    /**
     * return item URL link.
     *
     * @param object $file
     *
     * @return string
     */
    protected function _gd_getLink($file)
    {
        if (strpos($file->mimeType, 'application/vnd.google-apps.') !== 0) {
            if ($url = $file->getWebContentLink()) {
                return str_replace('export=download', 'export=media', $url);
            }
        }
        if ($url = $file->getWebViewLink()) {
            return $url;
        }

        return '';
    }

    /**
     * Get download url.
     *
     * @param Google_Service_Drive_DriveFile $file
     *
     * @return string|false
     */
    protected function _gd_getDownloadUrl($file)
    {
        if (strpos($file->mimeType, 'application/vnd.google-apps.') !== 0) {
            return 'https://www.googleapis.com/drive/v3/files/' . $file->getId() . '?alt=media';
        } else {
            $mimeMap = $this->options['appsExportMap'];
            if (isset($mimeMap[$file->getMimeType()])) {
                $mime = $mimeMap[$file->getMimeType()];
            } else {
                $mime = $mimeMap['default'];
            }
            $mime = rawurlencode($mime);

            return 'https://www.googleapis.com/drive/v3/files/' . $file->getId() . '/export?mimeType=' . $mime;
        }

        return false;
    }

    /**
     * Get thumbnail from GoogleDrive.com.
     *
     * @param string $path
     *
     * @return string | boolean
     */
    protected function _gd_getThumbnail($path)
    {
        list(, $itemId) = $this->_gd_splitPath($path);

        try {
            $contents = $this->service->files->get($itemId, [
                'alt' => 'media',
            ]);
            $contents = $contents->getBody()->detach();
            rewind($contents);

            return $contents;
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * Publish permissions specified path item.
     *
     * @param string $path
     *
     * @return bool
     */
    protected function _gd_publish($path)
    {
        if ($file = $this->_gd_getFile($path)) {
            if ($this->_gd_isPublished($file)) {
                return true;
            }
            try {
                if ($this->service->permissions->create($file->getId(), new \Google_Service_Drive_Permission($this->options['publishPermission']))) {
                    return true;
                }
            } catch (Exception $e) {
                return false;
            }
        }

        return false;
    }

    /**
     * unPublish permissions specified path.
     *
     * @param string $path
     *
     * @return bool
     */
    protected function _gd_unPublish($path)
    {
        if ($file = $this->_gd_getFile($path)) {
            if (!$this->_gd_isPublished($file)) {
                return true;
            }
            $permissions = $file->getPermissions();
            $pType = $this->options['publishPermission']['type'];
            $pRole = $this->options['publishPermission']['role'];
            try {
                foreach ($permissions as $permission) {
                    if ($permission->type === $pType && $permission->role === $pRole) {
                        $this->service->permissions->delete($file->getId(), $permission->getId());

                        return true;
                        break;
                    }
                }
            } catch (Exception $e) {
                return false;
            }
        }

        return false;
    }

    /**
     * Read file chunk.
     *
     * @param resource $handle
     * @param int      $chunkSize
     *
     * @return string
     */
    protected function _gd_readFileChunk($handle, $chunkSize)
    {
        $byteCount = 0;
        $giantChunk = '';
        while (!feof($handle)) {
            // fread will never return more than 8192 bytes if the stream is read buffered and it does not represent a plain file
            $chunk = fread($handle, 8192);
            $byteCount += strlen($chunk);
            $giantChunk .= $chunk;
            if ($byteCount >= $chunkSize) {
                return $giantChunk;
            }
        }

        return $giantChunk;
    }

    /*********************************************************************/
    /*                        EXTENDED FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     * @author Raja Sharma updating for GoogleDrive
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTID')) {
            $options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;
        }
        if (empty($options['googleApiClient']) && defined('ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT')) {
            $options['googleApiClient'] = ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT;
            include_once $options['googleApiClient'];
        }

        if (!isset($options['pass'])) {
            $options['pass'] = '';
        }

        try {
            $client = new \Google_Client();
            $client->setClientId($options['client_id']);
            $client->setClientSecret($options['client_secret']);

            if ($options['pass'] === 'reauth') {
                $options['pass'] = '';
                $this->session->set('GoogleDriveAuthParams', [])->set('GoogleDriveTokens', []);
            } elseif ($options['pass'] === 'googledrive') {
                $options['pass'] = '';
            }

            $options = array_merge($this->session->get('GoogleDriveAuthParams', []), $options);

            if (!isset($options['access_token'])) {
                $options['access_token'] = $this->session->get('GoogleDriveTokens', []);
                $this->session->remove('GoogleDriveTokens');
            }
            $aToken = $options['access_token'];

            $rootObj = $service = null;
            if ($aToken) {
                try {
                    $client->setAccessToken($aToken);
                    if ($client->isAccessTokenExpired()) {
                        $aToken = array_merge($aToken, $client->fetchAccessTokenWithRefreshToken());
                        $client->setAccessToken($aToken);
                    }
                    $service = new \Google_Service_Drive($client);
                    $rootObj = $service->files->get('root');

                    $options['access_token'] = $aToken;
                    $this->session->set('GoogleDriveAuthParams', $options);
                } catch (Exception $e) {
                    $aToken = [];
                    $options['access_token'] = [];
                    if ($options['user'] !== 'init') {
                        $this->session->set('GoogleDriveAuthParams', $options);

                        return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
                    }
                }
            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code || (isset($options['user']) && $options['user'] === 'init')) {
                if (empty($options['url'])) {
                    $options['url'] = elFinder::getConnectorUrl();
                }

                if (isset($options['id'])) {
                    $callback = $options['url']
                            . (strpos($options['url'], '?') !== false? '&' : '?') . 'cmd=netmount&protocol=googledrive&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                    $client->setRedirectUri($callback);
                }

                if (!$aToken && empty($code)) {
                    $client->setScopes([Google_Service_Drive::DRIVE]);
                    if (!empty($options['offline'])) {
                        $client->setApprovalPrompt('force');
                        $client->setAccessType('offline');
                    }
                    $url = $client->createAuthUrl();

                    $html = '<input id="elf-volumedriver-googledrive-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                        jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "googledrive", mode: "makebtn", url: "' . $url . '"});
                    </script>';
                    if (empty($options['pass']) && $options['host'] !== '1') {
                        $options['pass'] = 'return';
                        $this->session->set('GoogleDriveAuthParams', $options);

                        return ['exit' => true, 'body' => $html];
                    } else {
                        $out = [
                            'node' => $options['id'],
                            'json' => '{"protocol": "googledrive", "mode": "makebtn", "body" : "' . str_replace($html, '"', '\\"') . '", "error" : "' . elFinder::ERROR_ACCESS_DENIED . '"}',
                            'bind' => 'netmount',
                        ];

                        return ['exit' => 'callback', 'out' => $out];
                    }
                } else {
                    if ($code) {
                        if (!empty($options['id'])) {
                            $aToken = $client->fetchAccessTokenWithAuthCode($code);
                            $options['access_token'] = $aToken;
                            unset($options['code']);
                            $this->session->set('GoogleDriveTokens', $aToken)->set('GoogleDriveAuthParams', $options);
                            $out = [
                                'node' => $options['id'],
                                'json' => '{"protocol": "googledrive", "mode": "done", "reset": 1}',
                                'bind' => 'netmount',
                            ];
                        } else {
                            $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                            $out = array(
                                'node' => $nodeid,
                                'json' => json_encode(array(
                                    'protocol' => 'googledrive',
                                    'host' => $nodeid,
                                    'mode' => 'redirect',
                                    'options' => array(
                                        'id' => $nodeid,
                                        'code'=> $code
                                    )
                                )),
                                'bind' => 'netmount'
                            );
                        }
                        if (!$itpCare) {
                            return array('exit' => 'callback', 'out' => $out);
                        } else {
                            return array('exit' => true, 'body' => $out['json']);
                        }
                    }
                    $path = $options['path'];
                    if ($path === '/') {
                        $path = 'root';
                    }
                    $folders = [];
                    foreach ($service->files->listFiles([
                        'pageSize' => 1000,
                        'q' => sprintf('trashed = false and "%s" in parents and mimeType = "application/vnd.google-apps.folder"', $path),
                    ]) as $f) {
                        $folders[$f->getId()] = $f->getName();
                    }
                    natcasesort($folders);

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['root' => $rootObj->getName()] + $folders;
                    $folders = json_encode($folders);
                    $expires = empty($aToken['refresh_token']) ? $aToken['created'] + $aToken['expires_in'] - 30 : 0;
                    $mnt2res = empty($aToken['refresh_token']) ? '' : ', "mnt2res": 1';
                    $json = '{"protocol": "googledrive", "mode": "done", "folders": ' . $folders . ', "expires": ' . $expires . $mnt2res . '}';
                    $options['pass'] = 'return';
                    $html = 'Google.com';
                    $html .= '<script>
                        jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                    </script>';
                    $this->session->set('GoogleDriveAuthParams', $options);

                    return ['exit' => true, 'body' => $html];
                }
            }
        } catch (Exception $e) {
            $this->session->remove('GoogleDriveAuthParams')->remove('GoogleDriveTokens');
            if (empty($options['pass'])) {
                return ['exit' => true, 'body' => '{msg:' . elFinder::ERROR_ACCESS_DENIED . '}' . ' ' . $e->getMessage()];
            } else {
                return ['exit' => true, 'error' => [elFinder::ERROR_ACCESS_DENIED, $e->getMessage()]];
            }
        }

        if (!$aToken) {
            return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
        }

        if ($options['path'] === '/') {
            $options['path'] = 'root';
        }

        try {
            $file = $service->files->get($options['path']);
            $options['alias'] = sprintf($this->options['gdAlias'], $file->getName());
        } catch (Google_Service_Exception $e) {
            $err = json_decode($e->getMessage(), true);
            if (isset($err['error']) && $err['error']['code'] == 404) {
                return ['exit' => true, 'error' => [elFinder::ERROR_TRGDIR_NOT_FOUND, $options['path']]];
            } else {
                return ['exit' => true, 'error' => $e->getMessage()];
            }
        } catch (Exception $e) {
            return ['exit' => true, 'error' => $e->getMessage()];
        }

        foreach (['host', 'user', 'pass', 'id', 'offline'] as $key) {
            unset($options[$key]);
        }

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `googledrive` & rm thumbs.
     *
     * @param $netVolumes
     * @param $key
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if (!$this->options['useGoogleTmb']) {
            if ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->netMountKey . '*.png')) {
                foreach ($tmbs as $file) {
                    unlink($file);
                }
            }
        }
        $this->session->remove($this->id . $this->netMountKey);

        return true;
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers.
     *
     * @param string $path file cache
     *
     * @return array
     */
    protected function isNameExists($path)
    {
        list($parentId, $name) = $this->_gd_splitPath($path);
        $opts = [
            'q' => sprintf('trashed=false and "%s" in parents and name="%s"', $parentId, $name),
            'fields' => self::FETCHFIELDS_LIST,
        ];
        $srcFile = $this->_gd_query($opts);

        return empty($srcFile) ? false : $this->_gd_parseRaw($srcFile[0]);
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn.
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function init()
    {
        $serviceAccountConfig = '';
        if (empty($this->options['serviceAccountConfigFile'])) {
            if (empty($options['client_id'])) {
                if (defined('ELFINDER_GOOGLEDRIVE_CLIENTID') && ELFINDER_GOOGLEDRIVE_CLIENTID) {
                    $this->options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;
                } else {
                    return $this->setError('Required option "client_id" is undefined.');
                }
            }
            if (empty($options['client_secret'])) {
                if (defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET') && ELFINDER_GOOGLEDRIVE_CLIENTSECRET) {
                    $this->options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;
                } else {
                    return $this->setError('Required option "client_secret" is undefined.');
                }
            }
            if (!$this->options['access_token'] && !$this->options['refresh_token']) {
                return $this->setError('Required option "access_token" or "refresh_token" is undefined.');
            }
        } else {
            if (!is_readable($this->options['serviceAccountConfigFile'])) {
                return $this->setError('Option "serviceAccountConfigFile" file is not readable.');
            }
            $serviceAccountConfig = $this->options['serviceAccountConfigFile'];
        }

        try {
            if (!$serviceAccountConfig) {
                $aTokenFile = '';
                if ($this->options['refresh_token']) {
                    // permanent mount
                    $aToken = $this->options['refresh_token'];
                    $this->options['access_token'] = '';
                    $tmp = elFinder::getStaticVar('commonTempPath');
                    if (!$tmp) {
                        $tmp = $this->getTempPath();
                    }
                    if ($tmp) {
                        $aTokenFile = $tmp . DIRECTORY_SEPARATOR . md5($this->options['client_id'] . $this->options['refresh_token']) . '.gtoken';
                        if (is_file($aTokenFile)) {
                            $this->options['access_token'] = json_decode(file_get_contents($aTokenFile), true);
                        }
                    }
                } else {
                    // make net mount key for network mount
                    if (is_array($this->options['access_token'])) {
                        $aToken = !empty($this->options['access_token']['refresh_token'])
                            ? $this->options['access_token']['refresh_token']
                            : $this->options['access_token']['access_token'];
                    } else {
                        return $this->setError('Required option "access_token" is not Array or empty.');
                    }
                }
            }

            $errors = [];
            if ($this->needOnline && !$this->service) {
                if (($this->options['googleApiClient'] || defined('ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT')) && !class_exists('Google_Client')) {
                    include_once $this->options['googleApiClient'] ? $this->options['googleApiClient'] : ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT;
                }
                if (!class_exists('Google_Client')) {
                    return $this->setError('Class Google_Client not found.');
                }

                $this->client = new \Google_Client();

                $client = $this->client;

                if (!$serviceAccountConfig) {
                    if ($this->options['access_token']) {
                        $client->setAccessToken($this->options['access_token']);
                        $access_token = $this->options['access_token'];
                    }
                    if ($client->isAccessTokenExpired()) {
                        $client->setClientId($this->options['client_id']);
                        $client->setClientSecret($this->options['client_secret']);
                        $access_token = $client->fetchAccessTokenWithRefreshToken($this->options['refresh_token'] ?: null);
                        $client->setAccessToken($access_token);
                        if ($aTokenFile) {
                            file_put_contents($aTokenFile, json_encode($access_token));
                        } else {
                            $access_token['refresh_token'] = $this->options['access_token']['refresh_token'];
                        }
                        if (!empty($this->options['netkey'])) {
                            elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'access_token', $access_token);
                        }
                        $this->options['access_token'] = $access_token;
                    }
                    $this->expires = empty($access_token['refresh_token']) ? $access_token['created'] + $access_token['expires_in'] - 30 : 0;
                } else {
                    $client->setAuthConfigFile($serviceAccountConfig);
                    $client->setScopes([Google_Service_Drive::DRIVE]);
                    $aToken = $client->getClientId();
                }
                $this->service = new \Google_Service_Drive($client);
            }

            if ($this->needOnline) {
                $this->netMountKey = md5($aToken . '-' . $this->options['path']);
            }
        } catch (InvalidArgumentException $e) {
            $errors[] = $e->getMessage();
        } catch (Google_Service_Exception $e) {
            $errors[] = $e->getMessage();
        }

        if ($this->needOnline && !$this->service) {
            $this->session->remove($this->id . $this->netMountKey);
            if ($aTokenFile) {
                if (is_file($aTokenFile)) {
                    unlink($aTokenFile);
                }
            }
            $errors[] = 'Google Drive Service could not be loaded.';

            return $this->setError($errors);
        }

        // normalize root path
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            if ($this->needOnline) {
                $this->options['root'] = ($this->options['root'] === '')? $this->_gd_getNameByPath('root') : $this->options['root'];
                $this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] : sprintf($this->options['gdAlias'], $this->_gd_getNameByPath($this->options['path']));
                if (!empty($this->options['netkey'])) {
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
                }
            } else {
                $this->options['root'] = ($this->options['root'] === '')? 'GoogleDrive' : $this->options['root'];
                $this->options['alias'] = $this->options['root'];
            }
        }

        $this->rootName = isset($this->options['alias'])? $this->options['alias'] : 'GoogleDrive';

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        if ($this->options['useGoogleTmb']) {
            $this->options['tmbURL'] = 'https://';
            $this->options['tmbPath'] = '';
        }

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Dmitry (dio) Levashov
     **/
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }

        if ($this->needOnline && $this->isMyReload()) {
            $this->_gd_getDirectoryData(false);
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     *
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return array
     * @author Dmitry Levashov
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = [];
        $hasDir = false;

        list(, $pid) = $this->_gd_splitPath($path);

        $opts = [
            'fields' => self::FETCHFIELDS_LIST,
            'q' => sprintf('trashed=false and "%s" in parents', $pid),
        ];

        $res = $this->_gd_query($opts);

        $mountPath = $this->_normpath($path . '/');

        if ($res) {
            foreach ($res as $raw) {
                if ($stat = $this->_gd_parseRaw($raw)) {
                    $stat = $this->updateCache($mountPath . $raw->id, $stat);
                    if (empty($stat['hidden']) && $path !== $mountPath . $raw->id) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $mountPath . $raw->id;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Recursive files search.
     *
     * @param string $path dir path
     * @param string $q    search string
     * @param array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod'])) {
            // has custom match method use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        list(, $itemId) = $this->_gd_splitPath($path);

        $path = $this->_normpath($path . '/');
        $result = [];
        $query = '';

        if ($itemId !== 'root') {
            $dirs = array_merge([$itemId], $this->_gd_getDirectories($itemId));
            $query = '(\'' . implode('\' in parents or \'', $dirs) . '\' in parents)';
        }

        $tmp = [];
        if (!$mimes) {
            foreach (explode(' ', $q) as $_v) {
                $tmp[] = 'fullText contains \'' . str_replace('\'', '\\\'', $_v) . '\'';
            }
            $query .= ($query ? ' and ' : '') . implode(' and ', $tmp);
        } else {
            foreach ($mimes as $_v) {
                $tmp[] = 'mimeType contains \'' . str_replace('\'', '\\\'', $_v) . '\'';
            }
            $query .= ($query ? ' and ' : '') . '(' . implode(' or ', $tmp) . ')';
        }

        $opts = [
            'q' => sprintf('trashed=false and (%s)', $query),
        ];

        $res = $this->_gd_query($opts);

        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
        foreach ($res as $raw) {
            if ($timeout && $timeout < time()) {
                $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->_path($path));
                break;
            }
            if ($stat = $this->_gd_parseRaw($raw)) {
                if ($parents = $raw->getParents()) {
                    foreach ($parents as $parent) {
                        $paths = $this->_gd_getMountPaths($parent);
                        foreach ($paths as $path) {
                            $path = ($path === '') ? '/' : (rtrim($path, '/') . '/');
                            if (!isset($this->cache[$path . $raw->id])) {
                                $stat = $this->updateCache($path . $raw->id, $stat);
                            } else {
                                $stat = $this->cache[$path . $raw->id];
                            }
                            if (empty($stat['hidden'])) {
                                $stat['path'] = $this->_path($path) . $stat['name'];
                                $result[] = $stat;
                            }
                        }
                    }
                }
            }
        }

        return $result;
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     **/
    protected function copy($src, $dst, $name)
    {
        $this->clearcache();
        $res = $this->_gd_getFile($src);
        if ($res['mimeType'] == self::DIRMIME) {
            $newDir = $this->_mkdir($dst, $name);
            if ($newDir) {
                list(, $itemId) = $this->_gd_splitPath($newDir);
                list(, $srcId) = $this->_gd_splitPath($src);
                $path = $this->_joinPath($dst, $itemId);
                $opts = [
                    'q' => sprintf('trashed=false and "%s" in parents', $srcId),
                ];

                $res = $this->_gd_query($opts);
                foreach ($res as $raw) {
                    $raw['mimeType'] == self::DIRMIME ? $this->copy($src . '/' . $raw['id'], $path, $raw['name']) : $this->_copy($src . '/' . $raw['id'], $path, $raw['name']);
                }

                $ret = $this->_joinPath($dst, $itemId);
                $this->added[] = $this->stat($ret);
            } else {
                $ret = $this->setError(elFinder::ERROR_COPY, $this->_path($src));
            }
        } else {
            if ($itemId = $this->_copy($src, $dst, $name)) {
                $ret = $this->_joinPath($dst, $itemId);
                $this->added[] = $this->stat($ret);
            } else {
                $ret = $this->setError(elFinder::ERROR_COPY, $this->_path($src));
            }
        }
        return $ret;
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     * @param bool   $recursive
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false, $recursive = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$recursive && !$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$recursive && !$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_gd_getThumbnail($path)) {
            return false;
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $result = false;

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if (($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        return $this->netMountKey . $stat['iid'] . $stat['ts'] . '.png';
    }

    /**
     * Return content URL (for netmout volume driver)
     * If file.url == 1 requests from JavaScript client with XHR.
     *
     * @param string $hash    file hash
     * @param array  $options options array
     *
     * @return bool|string
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = [])
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
            $path = $this->decode($hash);

            if ($this->_gd_publish($path)) {
                if ($raw = $this->_gd_getFile($path)) {
                    return $this->_gd_getLink($raw);
                }
            }
        }

        return false;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && empty($this->options['refresh_token']) && $this->options['access_token'] && isset($this->options['access_token']['refresh_token'])) {
            $res['refresh_token'] = $this->options['access_token']['refresh_token'];
        }

        return $res;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        list(, , $parent) = $this->_gd_splitPath($path);

        return $this->_normpath($parent);
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_gd_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        return $this->_normpath($dir . '/' . str_replace('/', '\\/', $name));
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (DIRECTORY_SEPARATOR !== '/') {
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }
        $path = '/' . ltrim($path, '/');

        return $path;
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        if (!$this->names) {
            $this->_gd_getDirectoryData();
        }
        $path = $this->_normpath(substr($path, strlen($this->root)));
        $names = [];
        $paths = explode('/', $path);
        foreach ($paths as $_p) {
            $names[] = isset($this->names[$_p]) ? $this->names[$_p] : $_p;
        }

        return $this->rootName . implode('/', $names);
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        if ($raw = $this->_gd_getFile($path)) {
            $stat = $this->_gd_parseRaw($raw);
            if ($path === $this->root) {
                $stat['expires'] = $this->expires;
            }
            return $stat;
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {
        if ($this->directories === null) {
            $this->_gd_getDirectoryData();
        }
        list(, $itemId) = $this->_gd_splitPath($path);

        return isset($this->directories[$itemId]);
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }
        $ret = '';

        if ($file = $this->_gd_getFile($path)) {
            if (isset($file['imageMediaMetadata'])) {
                $ret = array('dim' => $file['imageMediaMetadata']['width'] . 'x' . $file['imageMediaMetadata']['height']);
                if (func_num_args() > 2) {
                    $args = func_get_arg(2);
                } else {
                    $args = array();
                }
                if (!empty($args['substitute'])) {
                    $tmbSize = intval($args['substitute']);
                    $srcSize = explode('x', $ret['dim']);
                    if ($srcSize[0] && $srcSize[1]) {
                        if (min(($tmbSize / $srcSize[0]), ($tmbSize / $srcSize[1])) < 1) {
                            if ($this->_gd_isPublished($file)) {
                                $tmbSize = strval($tmbSize);
                                $ret['url'] = 'https://drive.google.com/thumbnail?authuser=0&sz=s' . $tmbSize . '&id=' . $file['id'];
                            } elseif ($subImgLink = $this->getSubstituteImgLink(elFinder::$currentArgs['target'], $srcSize)) {
                                $ret['url'] = $subImgLink;
                            }
                        }
                    }
                }
            }
        }

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path  file path
     * @param bool   $write open file for writing
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            if ($file = $this->_gd_getFile($path)) {
                if ($dlurl = $this->_gd_getDownloadUrl($file)) {
                    $token = $this->client->getAccessToken();
                    if (!$token && $this->client->isUsingApplicationDefaultCredentials()) {
                        $this->client->fetchAccessTokenWithAssertion();
                        $token = $this->client->getAccessToken();
                    }
                    $access_token = '';
                    if (is_array($token)) {
                        $access_token = $token['access_token'];
                    } else {
                        if ($token = json_decode($this->client->getAccessToken())) {
                            $access_token = $token->access_token;
                        }
                    }
                    if ($access_token) {
                        $data = array(
                            'target' => $dlurl,
                            'headers' => array('Authorization: Bearer ' . $access_token),
                        );

                        // to support range request
                        if (func_num_args() > 2) {
                            $opts = func_get_arg(2);
                        } else {
                            $opts = array();
                        }
                        if (!empty($opts['httpheaders'])) {
                            $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
                        }

                        return elFinder::getStreamByUrl($data);
                    }
                }
            }
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $name);
        list($parentId, , $parent) = $this->_gd_splitPath($path);

        try {
            $file = new \Google_Service_Drive_DriveFile();

            $file->setName($name);
            $file->setMimeType(self::DIRMIME);
            $file->setParents([$parentId]);

            //create the Folder in the Parent
            $obj = $this->service->files->create($file);

            if ($obj instanceof Google_Service_Drive_DriveFile) {
                $path = $this->_joinPath($parent, $obj['id']);
                $this->_gd_getDirectoryData(false);

                return $path;
            } else {
                return false;
            }
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, []);
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $source = $this->_normpath($source);
        $targetDir = $this->_normpath($targetDir);

        try {
            $file = new \Google_Service_Drive_DriveFile();
            $file->setName($name);

            //Set the Parent id
            list(, $parentId) = $this->_gd_splitPath($targetDir);
            $file->setParents([$parentId]);

            list(, $srcId) = $this->_gd_splitPath($source);
            $file = $this->service->files->copy($srcId, $file, ['fields' => self::FETCHFIELDS_GET]);
            $itemId = $file->id;

            return $itemId;
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param string $target target dir path
     * @param string $name   file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _move($source, $targetDir, $name)
    {
        list($removeParents, $itemId) = $this->_gd_splitPath($source);
        $target = $this->_normpath($targetDir . '/' . $itemId);
        try {
            //moving and renaming a file or directory
            $files = new \Google_Service_Drive_DriveFile();
            $files->setName($name);

            //Set new Parent and remove old parent
            list(, $addParents) = $this->_gd_splitPath($targetDir);
            $opts = ['addParents' => $addParents, 'removeParents' => $removeParents];

            $file = $this->service->files->update($itemId, $files, $opts);

            if ($file->getMimeType() === self::DIRMIME) {
                $this->_gd_getDirectoryData(false);
            }
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return $target;
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        try {
            $files = new \Google_Service_Drive_DriveFile();
            $files->setTrashed(true);

            list($pid, $itemId) = $this->_gd_splitPath($path);
            $opts = ['removeParents' => $pid];
            $this->service->files->update($itemId, $files, $opts);
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        $res = $this->_unlink($path);
        $res && $this->_gd_getDirectoryData(false);

        return $res;
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param          $path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     */
    protected function _save($fp, $path, $name, $stat)
    {
        if ($name !== '') {
            $path .= '/' . str_replace('/', '\\/', $name);
        }
        list($parentId, $itemId, $parent) = $this->_gd_splitPath($path);
        if ($name === '') {
            $stat['iid'] = $itemId;
        }

        if (!$stat || empty($stat['iid'])) {
            $opts = [
                'q' => sprintf('trashed=false and "%s" in parents and name="%s"', $parentId, $name),
                'fields' => self::FETCHFIELDS_LIST,
            ];
            $srcFile = $this->_gd_query($opts);
            $srcFile = empty($srcFile) ? null : $srcFile[0];
        } else {
            $srcFile = $this->_gd_getFile($path);
        }

        try {
            $mode = 'update';
            $mime = isset($stat['mime']) ? $stat['mime'] : '';

            $file = new Google_Service_Drive_DriveFile();
            if ($srcFile) {
                $mime = $srcFile->getMimeType();
            } else {
                $mode = 'insert';
                $file->setName($name);
                $file->setParents([
                    $parentId,
                ]);
            }

            if (!$mime) {
                $mime = self::mimetypeInternalDetect($name);
            }
            if ($mime === 'unknown') {
                $mime = 'application/octet-stream';
            }
            $file->setMimeType($mime);

            $size = 0;
            if (isset($stat['size'])) {
                $size = $stat['size'];
            } else {
                $fstat = fstat($fp);
                if (!empty($fstat['size'])) {
                    $size = $fstat['size'];
                }
            }

            // set chunk size (max: 100MB)
            $chunkSizeBytes = 100 * 1024 * 1024;
            if ($size > 0) {
                $memory = elFinder::getIniBytes('memory_limit');
                if ($memory > 0) {
                    $chunkSizeBytes = max(262144, min([$chunkSizeBytes, (intval($memory / 4 / 256) * 256)]));
                }
            }

            if ($size > $chunkSizeBytes) {
                $client = $this->client;
                // Call the API with the media upload, defer so it doesn't immediately return.
                $client->setDefer(true);
                if ($mode === 'insert') {
                    $request = $this->service->files->create($file, [
                        'fields' => self::FETCHFIELDS_GET,
                    ]);
                } else {
                    $request = $this->service->files->update($srcFile->getId(), $file, [
                        'fields' => self::FETCHFIELDS_GET,
                    ]);
                }

                // Create a media file upload to represent our upload process.
                $media = new Google_Http_MediaFileUpload($client, $request, $mime, null, true, $chunkSizeBytes);
                $media->setFileSize($size);
                // Upload the various chunks. $status will be false until the process is
                // complete.
                $status = false;
                while (!$status && !feof($fp)) {
                    elFinder::checkAborted();
                    // read until you get $chunkSizeBytes from TESTFILE
                    // fread will never return more than 8192 bytes if the stream is read buffered and it does not represent a plain file
                    // An example of a read buffered file is when reading from a URL
                    $chunk = $this->_gd_readFileChunk($fp, $chunkSizeBytes);
                    $status = $media->nextChunk($chunk);
                }
                // The final value of $status will be the data from the API for the object
                // that has been uploaded.
                if ($status !== false) {
                    $obj = $status;
                }

                $client->setDefer(false);
            } else {
                $params = [
                    'data' => stream_get_contents($fp),
                    'uploadType' => 'media',
                    'fields' => self::FETCHFIELDS_GET,
                ];
                if ($mode === 'insert') {
                    $obj = $this->service->files->create($file, $params);
                } else {
                    $obj = $this->service->files->update($srcFile->getId(), $file, $params);
                }
            }
            if ($obj instanceof Google_Service_Drive_DriveFile) {
                return $this->_joinPath($parent, $obj->getId());
            } else {
                return false;
            }
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        $contents = '';

        try {
            list(, $itemId) = $this->_gd_splitPath($path);

            $contents = $this->service->files->get($itemId, [
                'alt' => 'media',
            ]);
            $contents = (string)$contents->getBody();
        } catch (Exception $e) {
            return $this->setError('GoogleDrive error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $res = $this->_save($fp, $path, '', []);
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return [];
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function _unpack($path, $arc)
    {
        die('Not yet implemented. (_unpack)');
        //return false;
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
lib/php/elFinderVolumeTrashMySQL.class.php000064400000003050147361034400014526 0ustar00<?php

/**
 * elFinder driver for trash bin at MySQL Database
 *
 * @author NaokiSawada
 **/
class elFinderVolumeTrashMySQL extends elFinderVolumeMySQL
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'tm';

    public function __construct()
    {
        parent::__construct();
        // original option of the Trash
        $this->options['lockEverything'] = false; // Lock all items in the trash to disable delete, move, rename.

        // common options as the volume driver
        $this->options['alias'] = 'Trash';
        $this->options['quarantine'] = '';
        $this->options['rootCssClass'] = 'elfinder-navbar-root-trash';
        $this->options['copyOverwrite'] = false;
        $this->options['uiCmdMap'] = array('paste' => 'hidden', 'mkdir' => 'hidden', 'copy' => 'restore');
        $this->options['disabled'] = array('archive', 'duplicate', 'edit', 'extract', 'mkfile', 'places', 'put', 'rename', 'resize', 'upload');
    }

    public function mount(array $opts)
    {
        if ($this->options['lockEverything']) {
            if (!is_array($opts['attributes'])) {
                $opts['attributes'] = array();
            }
            $attr = array(
                'pattern' => '/./',
                'locked' => true,
            );
            array_unshift($opts['attributes'], $attr);
        }
        // force set `copyJoin` to true
        $opts['copyJoin'] = true;

        return parent::mount($opts);
    }
}
lib/php/autoload.php000064400000005170147361034400010427 0ustar00<?php

define('ELFINDER_PHP_ROOT_PATH', dirname(__FILE__));

function elFinderAutoloader($name)
{
    $map = array(
        'elFinder' => 'elFinder.class.php',
        'elFinderConnector' => 'elFinderConnector.class.php',
        'elFinderEditor' => 'editors/editor.php',
        'elFinderLibGdBmp' => 'libs/GdBmp.php',
        'elFinderPlugin' => 'elFinderPlugin.php',
        'elFinderPluginAutoResize' => 'plugins/AutoResize/plugin.php',
        'elFinderPluginAutoRotate' => 'plugins/AutoRotate/plugin.php',
        'elFinderPluginNormalizer' => 'plugins/Normalizer/plugin.php',
        'elFinderPluginSanitizer' => 'plugins/Sanitizer/plugin.php',
        'elFinderPluginWatermark' => 'plugins/Watermark/plugin.php',
        'elFinderSession' => 'elFinderSession.php',
        'elFinderSessionInterface' => 'elFinderSessionInterface.php',
        'elFinderVolumeDriver' => 'elFinderVolumeDriver.class.php',
        'elFinderVolumeDropbox2' => 'elFinderVolumeDropbox2.class.php',
        'elFinderVolumeFTP' => 'elFinderVolumeFTP.class.php',
        'elFinderVolumeFlysystemGoogleDriveCache' => 'elFinderFlysystemGoogleDriveNetmount.php',
        'elFinderVolumeFlysystemGoogleDriveNetmount' => 'elFinderFlysystemGoogleDriveNetmount.php',
        'elFinderVolumeGoogleDrive' => 'elFinderVolumeGoogleDrive.class.php',
        'elFinderVolumeGroup' => 'elFinderVolumeGroup.class.php',
        'elFinderVolumeLocalFileSystem' => 'elFinderVolumeLocalFileSystem.class.php',
        'elFinderVolumeMySQL' => 'elFinderVolumeMySQL.class.php',
        'elFinderVolumeSFTPphpseclib' => 'elFinderVolumeSFTPphpseclib.class.php',
        'elFinderVolumeTrash' => 'elFinderVolumeTrash.class.php',
    );
    if (isset($map[$name])) {
        return include_once(ELFINDER_PHP_ROOT_PATH . '/' . $map[$name]);
    }
    $prefix = substr($name, 0, 14);
    if (substr($prefix, 0, 8) === 'elFinder') {
        if ($prefix === 'elFinderVolume') {
            $file = ELFINDER_PHP_ROOT_PATH . '/' . $name . '.class.php';
            return (is_file($file) && include_once($file));
        } else if ($prefix === 'elFinderPlugin') {
            $file = ELFINDER_PHP_ROOT_PATH . '/plugins/' . substr($name, 14) . '/plugin.php';
            return (is_file($file) && include_once($file));
        } else if ($prefix === 'elFinderEditor') {
            $file = ELFINDER_PHP_ROOT_PATH . '/editors/' . substr($name, 14) . '/editor.php';
            return (is_file($file) && include_once($file));
        }
    }
    return false;
}

if (version_compare(PHP_VERSION, '5.3', '<')) {
    spl_autoload_register('elFinderAutoloader');
} else {
    spl_autoload_register('elFinderAutoloader', true, true);
}

lib/php/plugins/AutoRotate/plugin.php000064400000012752147361034400013671 0ustar00<?php

/**
 * elFinder Plugin AutoRotate
 * Auto rotation on file upload of JPEG file by EXIF Orientation.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.presave' => array(
 *                'Plugin.AutoRotate.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'AutoRotate' => array(
 *                'enable'         => true,       // For control by volume driver
 *                'quality'        => 95,         // JPEG image save quality
 *                'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *                'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'AutoRotate' => array(
 *                        'enable'         => true,       // For control by volume driver
 *                        'quality'        => 95,         // JPEG image save quality
 *                        'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                        'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginAutoRotate extends elFinderPlugin
{

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,       // For control by volume driver
            'quality' => 95,         // JPEG image save quality
            'offDropWith' => null,       // To disable it if it is dropped with pressing the meta key
            // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
            // In case of using any key, specify it as an array
            'disableWithContentSaveId' => true // Disable on URL upload with post data "contentSaveId"
        );

        $this->opts = array_merge($defaults, $opts);

    }

    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        if (!$src) {
            return false;
        }

        $opts = $this->getCurrentOpts($volume);

        if (!$this->iaEnabled($opts, $elfinder)) {
            return false;
        }

        $imageType = null;
        $srcImgInfo = null;
        if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
            $mime = mime_content_type($src);
            if (substr($mime, 0, 5) !== 'image') {
                return false;
            }
        }
        if (extension_loaded('exif') && function_exists('exif_imagetype')) {
            $imageType = exif_imagetype($src);
            if ($imageType === false) {
                return false;
            }
        } else {
            $srcImgInfo = getimagesize($src);
            if ($srcImgInfo === false) {
                return false;
            }
            $imageType = $srcImgInfo[2];
        }

        // check target image type
        if ($imageType !== IMAGETYPE_JPEG) {
            return false;
        }

        if (!$srcImgInfo) {
            $srcImgInfo = getimagesize($src);
        }

        return $this->rotate($volume, $src, $srcImgInfo, $opts['quality']);
    }

    private function rotate($volume, $src, $srcImgInfo, $quality)
    {
        if (!function_exists('exif_read_data')) {
            return false;
        }
        $degree = 0;
        $errlev =error_reporting();
        error_reporting($errlev ^ E_WARNING);
        $exif = exif_read_data($src);
        error_reporting($errlev);
        if ($exif && !empty($exif['Orientation'])) {
            switch ($exif['Orientation']) {
                case 8:
                    $degree = 270;
                    break;
                case 3:
                    $degree = 180;
                    break;
                case 6:
                    $degree = 90;
                    break;
            }
        }
        if (!$degree)  {
            return false;
        }
        $opts = array(
            'degree' => $degree,
            'jpgQuality' => $quality,
            'checkAnimated' => true
        );
        return $volume->imageUtil('rotate', $src, $opts);
    }
}
lib/php/plugins/Sanitizer/plugin.php000064400000013415147361034400013547 0ustar00<?php

/**
 * elFinder Plugin Sanitizer
 * Sanitizer of file-name and file-path etc.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre' => array(
 *                'Plugin.Sanitizer.cmdPreprocess'
 *            ),
 *            'upload.presave paste.copyfrom' => array(
 *                'Plugin.Sanitizer.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'Sanitizer' => array(
 *                'enable' => true,
 *                'targets'  => array('\\','/',':','*','?','"','<','>','|'), // target chars
 *                'replace'  => '_', // replace to this
 *                'callBack' => null // Or @callable sanitize function
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'Sanitizer' => array(
 *                        'enable' => true,
 *                        'targets'  => array('\\','/',':','*','?','"','<','>','|'), // target chars
 *                        'replace'  => '_', // replace to this
 *                        'callBack' => null // Or @callable sanitize function
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginSanitizer extends elFinderPlugin
{
    private $replaced = array();
    private $keyMap = array(
        'ls' => 'intersect',
        'upload' => 'renames',
        'mkdir' => array('name', 'dirs')
    );

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,  // For control by volume driver
            'targets' => array('\\', '/', ':', '*', '?', '"', '<', '>', '|'), // target chars
            'replace' => '_',   // replace to this
            'callBack' => null   // Or callable sanitize function
        );
        $this->opts = array_merge($defaults, $opts);
    }

    public function cmdPreprocess($cmd, &$args, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }
        $this->replaced[$cmd] = array();
        $key = (isset($this->keyMap[$cmd])) ? $this->keyMap[$cmd] : 'name';

        if (is_array($key)) {
            $keys = $key;
        } else {
            $keys = array($key);
        }
        foreach ($keys as $key) {
            if (isset($args[$key])) {
                if (is_array($args[$key])) {
                    foreach ($args[$key] as $i => $name) {
                        if ($cmd === 'mkdir' && $key === 'dirs') {
                            // $name need '/' as prefix see #2607
                            $name = '/' . ltrim($name, '/');
                            $_names = explode('/', $name);
                            $_res = array();
                            foreach ($_names as $_name) {
                                $_res[] = $this->sanitizeFileName($_name, $opts);
                            }
                            $this->replaced[$cmd][$name] = $args[$key][$i] = join('/', $_res);
                        } else {
                            $this->replaced[$cmd][$name] = $args[$key][$i] = $this->sanitizeFileName($name, $opts);
                        }
                    }
                } else if ($args[$key] !== '') {
                    $name = $args[$key];
                    $this->replaced[$cmd][$name] = $args[$key] = $this->sanitizeFileName($name, $opts);
                }
            }
        }
        if ($cmd === 'ls' || $cmd === 'mkdir') {
            if (!empty($this->replaced[$cmd])) {
                // un-regist for legacy settings
                $elfinder->unbind($cmd, array($this, 'cmdPostprocess'));
                $elfinder->bind($cmd, array($this, 'cmdPostprocess'));
            }
        }
        return true;
    }

    public function cmdPostprocess($cmd, &$result, $args, $elfinder, $volume)
    {
        if ($cmd === 'ls') {
            if (!empty($result['list']) && !empty($this->replaced['ls'])) {
                foreach ($result['list'] as $hash => $name) {
                    if ($keys = array_keys($this->replaced['ls'], $name)) {
                        if (count($keys) === 1) {
                            $result['list'][$hash] = $keys[0];
                        } else {
                            $result['list'][$hash] = $keys;
                        }
                    }
                }
            }
        } else if ($cmd === 'mkdir') {
            if (!empty($result['hashes']) && !empty($this->replaced['mkdir'])) {
                foreach ($result['hashes'] as $name => $hash) {
                    if ($keys = array_keys($this->replaced['mkdir'], $name)) {
                        $result['hashes'][$keys[0]] = $hash;
                    }
                }
            }
        }
    }

    // NOTE: $thash is directory hash so it unneed to process at here
    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }
        $name = $this->sanitizeFileName($name, $opts);
        return true;
    }

    protected function sanitizeFileName($filename, $opts)
    {
        if (!empty($opts['callBack']) && is_callable($opts['callBack'])) {
            return call_user_func_array($opts['callBack'], array($filename, $opts));
        }
        return str_replace($opts['targets'], $opts['replace'], $filename);
    }
}
lib/php/plugins/Watermark/plugin.php000064400000043500147361034400013532 0ustar00<?php

/**
 * elFinder Plugin Watermark
 * Print watermark on file upload.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.presave' => array(
 *                'Plugin.Watermark.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'Watermark' => array(
 *                'enable'         => true,       // For control by volume driver
 *                'source'         => 'logo.png', // Path to Water mark image
 *                'ratio'          => 0.2,        // Ratio to original image (ratio > 0 and ratio <= 1)
 *                'position'       => 'RB',       // Position L(eft)/C(enter)/R(ight) and T(op)/M(edium)/B(ottom)
 *                'marginX'        => 5,          // Margin horizontal pixel
 *                'marginY'        => 5,          // Margin vertical pixel
 *                'quality'        => 95,         // JPEG image save quality
 *                'transparency'   => 70,         // Water mark image transparency ( other than PNG )
 *                'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                'targetMinPixel' => 200,        // Target image minimum pixel size
 *                'interlace'      => IMG_GIF|IMG_JPG, // Set interlacebit image formats ( bit-field )
 *                'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *                'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'Watermark' => array(
 *                        'enable'         => true,       // For control by volume driver
 *                        'source'         => 'logo.png', // Path to Water mark image
 *                        'ratio'          => 0.2,        // Ratio to original image (ratio > 0 and ratio <= 1)
 *                        'position'       => 'RB',       // Position L(eft)/C(enter)/R(ight) and T(op)/M(edium)/B(ottom)
 *                        'marginX'        => 5,          // Margin horizontal pixel
 *                        'marginY'        => 5,          // Margin vertical pixel
 *                        'quality'        => 95,         // JPEG image save quality
 *                        'transparency'   => 70,         // Water mark image transparency ( other than PNG )
 *                        'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                        'targetMinPixel' => 200,        // Target image minimum pixel size
 *                        'interlace'      => IMG_GIF|IMG_JPG, // Set interlacebit image formats ( bit-field )
 *                        'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                        'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginWatermark extends elFinderPlugin
{

    private $watermarkImgInfo = null;

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,       // For control by volume driver
            'source' => 'logo.png', // Path to Water mark image
            'ratio' => 0.2,        // Ratio to original image (ratio > 0 and ratio <= 1)
            'position' => 'RB',       // Position L(eft)/C(enter)/R(ight) and T(op)/M(edium)/B(ottom)
            'marginX' => 5,          // Margin horizontal pixel
            'marginY' => 5,          // Margin vertical pixel
            'quality' => 95,         // JPEG image save quality
            'transparency' => 70,         // Water mark image transparency ( other than PNG )
            'targetType' => IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP, // Target image formats ( bit-field )
            'targetMinPixel' => 200,        // Target image minimum pixel size
            'interlace' => IMG_GIF | IMG_JPG, // Set interlacebit image formats ( bit-field )
            'offDropWith' => null,       // To disable it if it is dropped with pressing the meta key
            // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
            // In case of using any key, specify it as an array
            'marginRight' => 0,          // Deprecated - marginX should be used
            'marginBottom' => 0,          // Deprecated - marginY should be used
            'disableWithContentSaveId' => true // Disable on URL upload with post data "contentSaveId"
        );

        $this->opts = array_merge($defaults, $opts);

    }

    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        if (!$src) {
            return false;
        }

        $opts = $this->getCurrentOpts($volume);

        if (!$this->iaEnabled($opts, $elfinder)) {
            return false;
        }

        $imageType = null;
        $srcImgInfo = null;
        if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
            $mime = mime_content_type($src);
            if (substr($mime, 0, 5) !== 'image') {
                return false;
            }
        }
        if (extension_loaded('exif') && function_exists('exif_imagetype')) {
            $imageType = exif_imagetype($src);
            if ($imageType === false) {
                return false;
            }
        } else {
            $srcImgInfo = getimagesize($src);
            if ($srcImgInfo === false) {
                return false;
            }
            $imageType = $srcImgInfo[2];
        }

        // check target image type
        $imgTypes = array(
            IMAGETYPE_GIF => IMG_GIF,
            IMAGETYPE_JPEG => IMG_JPEG,
            IMAGETYPE_PNG => IMG_PNG,
            IMAGETYPE_BMP => IMG_WBMP,
            IMAGETYPE_WBMP => IMG_WBMP
        );
        if (!isset($imgTypes[$imageType]) || !($opts['targetType'] & $imgTypes[$imageType])) {
            return false;
        }

        // check Animation Gif
        if ($imageType === IMAGETYPE_GIF && elFinder::isAnimationGif($src)) {
            return false;
        }
        // check Animation Png
        if ($imageType === IMAGETYPE_PNG && elFinder::isAnimationPng($src)) {
            return false;
        }
        // check water mark image
        if (!file_exists($opts['source'])) {
            $opts['source'] = dirname(__FILE__) . "/" . $opts['source'];
        }
        if (is_readable($opts['source'])) {
            $watermarkImgInfo = getimagesize($opts['source']);
            if (!$watermarkImgInfo) {
                return false;
            }
        } else {
            return false;
        }

        if (!$srcImgInfo) {
            $srcImgInfo = getimagesize($src);
        }

        $watermark = $opts['source'];
        $quality = $opts['quality'];
        $transparency = $opts['transparency'];

        // check target image size
        if ($opts['targetMinPixel'] > 0 && $opts['targetMinPixel'] > min($srcImgInfo[0], $srcImgInfo[1])) {
            return false;
        }

        $watermark_width = $watermarkImgInfo[0];
        $watermark_height = $watermarkImgInfo[1];

        // Specified as a ratio to the image size
        if ($opts['ratio'] && $opts['ratio'] > 0 && $opts['ratio'] <= 1) {
            $maxW = $srcImgInfo[0] * $opts['ratio'] - ($opts['marginX'] * 2);
            $maxH = $srcImgInfo[1] * $opts['ratio'] - ($opts['marginY'] * 2);
            $dx = $dy = 0;
            if (($maxW >= $watermarkImgInfo[0] && $maxH >= $watermarkImgInfo[0]) || ($maxW <= $watermarkImgInfo[0] && $maxH <= $watermarkImgInfo[0])) {
                $dx = abs($srcImgInfo[0] - $watermarkImgInfo[0]);
                $dy = abs($srcImgInfo[1] - $watermarkImgInfo[1]);
            } else if ($maxW < $watermarkImgInfo[0]) {
                $dx = -1;
            } else {
                $dy = -1;
            }
            if ($dx < $dy) {
                $ww = $maxW;
                $wh = $watermarkImgInfo[1] * ($ww / $watermarkImgInfo[0]);
            } else {
                $wh = $maxH;
                $ww = $watermarkImgInfo[0] * ($wh / $watermarkImgInfo[1]);
            }
            $watermarkImgInfo[0] = $ww;
            $watermarkImgInfo[1] = $wh;
        } else {
            $opts['ratio'] = null;
        }

        $opts['position'] = strtoupper($opts['position']);

        // Set vertical position
        if (strpos($opts['position'], 'T') !== false) {
            // Top
            $dest_x = $opts['marginX'];
        } else if (strpos($opts['position'], 'M') !== false) {
            // Middle
            $dest_x = ($srcImgInfo[0] - $watermarkImgInfo[0]) / 2;
        } else {
            // Bottom
            $dest_x = $srcImgInfo[0] - $watermarkImgInfo[0] - max($opts['marginBottom'], $opts['marginX']);
        }

        // Set horizontal position
        if (strpos($opts['position'], 'L') !== false) {
            // Left
            $dest_y = $opts['marginY'];
        } else if (strpos($opts['position'], 'C') !== false) {
            // Middle
            $dest_y = ($srcImgInfo[1] - $watermarkImgInfo[1]) / 2;
        } else {
            // Right
            $dest_y = $srcImgInfo[1] - $watermarkImgInfo[1] - max($opts['marginRight'], $opts['marginY']);
        }


        // check interlace
        $opts['interlace'] = ($opts['interlace'] & $imgTypes[$imageType]);

        // Repeated use of Imagick::compositeImage() may cause PHP to hang, so disable it
        //if (class_exists('Imagick', false)) {
        //    return $this->watermarkPrint_imagick($src, $watermark, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $opts);
        //} else {
            elFinder::expandMemoryForGD(array($watermarkImgInfo, $srcImgInfo));
            return $this->watermarkPrint_gd($src, $watermark, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $srcImgInfo, $opts);
        //}
    }

    private function watermarkPrint_imagick($src, $watermarkSrc, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $opts)
    {

        try {

            // Open the original image
            $img = new Imagick($src);

            // Open the watermark
            $watermark = new Imagick($watermarkSrc);

            // zoom
            if ($opts['ratio']) {
                $watermark->scaleImage($watermarkImgInfo[0], $watermarkImgInfo[1]);
            }

            // Set transparency
            if (strtoupper($watermark->getImageFormat()) !== 'PNG') {
                $watermark->setImageOpacity($transparency / 100);
            }

            // Overlay the watermark on the original image
            $img->compositeImage($watermark, imagick::COMPOSITE_OVER, $dest_x, $dest_y);

            // Set quality
            if (strtoupper($img->getImageFormat()) === 'JPEG') {
                $img->setImageCompression(imagick::COMPRESSION_JPEG);
                $img->setCompressionQuality($quality);
            }

            // set interlace
            $opts['interlace'] && $img->setInterlaceScheme(Imagick::INTERLACE_PLANE);

            $result = $img->writeImage($src);

            $img->clear();
            $img->destroy();
            $watermark->clear();
            $watermark->destroy();

            return $result ? true : false;
        } catch (Exception $e) {
            $ermsg = $e->getMessage();
            $ermsg && trigger_error($ermsg);
            return false;
        }
    }

    private function watermarkPrint_gd($src, $watermark, $dest_x, $dest_y, $quality, $transparency, $watermarkImgInfo, $srcImgInfo, $opts)
    {

        $watermark_width = $watermarkImgInfo[0];
        $watermark_height = $watermarkImgInfo[1];

        $ermsg = '';
        switch ($watermarkImgInfo['mime']) {
            case 'image/gif':
                if (imagetypes() & IMG_GIF) {
                    $oWatermarkImg = imagecreatefromgif($watermark);
                } else {
                    $ermsg = 'GIF images are not supported as watermark image';
                }
                break;
            case 'image/jpeg':
                if (imagetypes() & IMG_JPG) {
                    $oWatermarkImg = imagecreatefromjpeg($watermark);
                } else {
                    $ermsg = 'JPEG images are not supported as watermark image';
                }
                break;
            case 'image/png':
                if (imagetypes() & IMG_PNG) {
                    $oWatermarkImg = imagecreatefrompng($watermark);
                } else {
                    $ermsg = 'PNG images are not supported as watermark image';
                }
                break;
            case 'image/wbmp':
                if (imagetypes() & IMG_WBMP) {
                    $oWatermarkImg = imagecreatefromwbmp($watermark);
                } else {
                    $ermsg = 'WBMP images are not supported as watermark image';
                }
                break;
            default:
                $oWatermarkImg = false;
                $ermsg = $watermarkImgInfo['mime'] . ' images are not supported as watermark image';
                break;
        }


        if (!$ermsg) {
            // zoom
            if ($opts['ratio']) {
                $tmpImg = imagecreatetruecolor($watermarkImgInfo[0], $watermarkImgInfo[1]);
                imagealphablending($tmpImg, false);
                imagesavealpha($tmpImg, true);
                imagecopyresampled($tmpImg, $oWatermarkImg, 0, 0, 0, 0, $watermarkImgInfo[0], $watermarkImgInfo[1], imagesx($oWatermarkImg), imagesy($oWatermarkImg));
                imageDestroy($oWatermarkImg);
                $oWatermarkImg = $tmpImg;
                $tmpImg = null;
            }

            switch ($srcImgInfo['mime']) {
                case 'image/gif':
                    if (imagetypes() & IMG_GIF) {
                        $oSrcImg = imagecreatefromgif($src);
                    } else {
                        $ermsg = 'GIF images are not supported as source image';
                    }
                    break;
                case 'image/jpeg':
                    if (imagetypes() & IMG_JPG) {
                        $oSrcImg = imagecreatefromjpeg($src);
                    } else {
                        $ermsg = 'JPEG images are not supported as source image';
                    }
                    break;
                case 'image/png':
                    if (imagetypes() & IMG_PNG) {
                        $oSrcImg = imagecreatefrompng($src);
                    } else {
                        $ermsg = 'PNG images are not supported as source image';
                    }
                    break;
                case 'image/wbmp':
                    if (imagetypes() & IMG_WBMP) {
                        $oSrcImg = imagecreatefromwbmp($src);
                    } else {
                        $ermsg = 'WBMP images are not supported as source image';
                    }
                    break;
                default:
                    $oSrcImg = false;
                    $ermsg = $srcImgInfo['mime'] . ' images are not supported as source image';
                    break;
            }
        }

        if ($ermsg || false === $oSrcImg || false === $oWatermarkImg) {
            $ermsg && trigger_error($ermsg);
            return false;
        }

        if ($srcImgInfo['mime'] === 'image/png') {
            if (function_exists('imagecolorallocatealpha')) {
                $bg = imagecolorallocatealpha($oSrcImg, 255, 255, 255, 127);
                imagefill($oSrcImg, 0, 0, $bg);
            }
        }

        if ($watermarkImgInfo['mime'] === 'image/png') {
            imagecopy($oSrcImg, $oWatermarkImg, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
        } else {
            imagecopymerge($oSrcImg, $oWatermarkImg, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparency);
        }

        // set interlace
        $opts['interlace'] && imageinterlace($oSrcImg, true);

        switch ($srcImgInfo['mime']) {
            case 'image/gif':
                imagegif($oSrcImg, $src);
                break;
            case 'image/jpeg':
                imagejpeg($oSrcImg, $src, $quality);
                break;
            case 'image/png':
                if (function_exists('imagesavealpha') && function_exists('imagealphablending')) {
                    imagealphablending($oSrcImg, false);
                    imagesavealpha($oSrcImg, true);
                }
                imagepng($oSrcImg, $src);
                break;
            case 'image/wbmp':
                imagewbmp($oSrcImg, $src);
                break;
        }

        imageDestroy($oSrcImg);
        imageDestroy($oWatermarkImg);

        return true;
    }
}
lib/php/plugins/Watermark/logo.png000064400000021343147361034400013172 0ustar00�PNG


IHDRxx9d6�"�IDATx����P@�f&��m۶-�ٶm۶m۶�g[�u����M2�7�LW�e�����;Io8+���
+��Š�
Ub�,���&M�2�)��D�!Z'ʂ�8��E@��	e�t:��0G�����ҲU�/�v{�/�;��
\%��_�2��`�EBŐ���=�$�7x|��mx��&���ۆ�NN�8~�4Kn,l�UH�2__��F�߾}?~���ITʩ�Ŗ�6�E#��l�Y�}ц�_�_Gm_�jA��<kj&��ϟP�bY���T[�k�D m���_]f|FY��Z�˘J�E��s��(�����~�{Q$	c�"�b�R���+�;{ԩ���Χ
��aR.VT�PA��J��d����Xy	}t���
^�p��8��	Q�`N�,�—/_����>yS'M�Z=*㳆�aVg��Ts��M�aա[Ш�T}%W�$�!�bLܧ���د	NkP�e8z��&׍ϟ?Ô�4��JK���\^/7[�
0w�5 ���7!}΂��c{M���9=���7o�,p����9�t�Ɗ�Nk<2w�L�\Z���ʭ�?�uZ�b����⨮�YC�M�����1\��&Uf}#�ϟ=Ӫ�䟺��&���3�K�h��@���B���gx�
Ш�u4�8��u�R�~�*.l�m�O�q�Hyݵ�H������R'K�In��U�#�L�+p��罺w�\C޼y�z��rS��K�˔���g�Ă�7 i�.1��.�<ˋ����7d˖ҥL��H0��}h޴1�O�\��"��ׯ_�
>~���5���$�s�K��-;�I4�ϼ:A|M+4�A�2x�`�o������;�y�:,]�jT����By��*�̛Ò9.N
�-rH��M$Q�ϓr�0y�y�=�‹�lN�}•+W<
~��
|������P�׆
�L�2>#�6Ej�<;D���+œ]W�-�kf�r�d�,�@���:=	��Kr|£�W/�J�:�xQ(�r5��dk�?v,Y�-,�w�n��������
~��N����E�(đ��=.ʭJy��Ǐ°��u�i�ǎ�����n��7M��rt1�/��;�#g����t2x���>�K�j��Z56���X�2>��n�;�����TlЀ��JV8.v�;2A���7�2c
6���(�d��9�-o��s�o��)S��
~��%��	�>}��H�H�d�O,���{4ͧ�g�O���7�T?ki֧g7�f�$I��Ī�i��mg�`Ɋ��:k�[~�>��wPq,Yt�]��n����/�w�nw7���]�躻ߺ'Tg�ez��3��/��ד�S�^=�N�q�F���O�`+���,�'����~�ꥦ���?�kK��ή�5#�kp*��r�8�\y�+��'ߠ0���GЎ�/�g����_x/�ȵ������:	����8�fd�����h¨07���t�Z��d���7��Qt�
H�����}�M'�,�N�ή:��R){vށ���b55�@sgϢ�[7Sc�z��
�(��o�@����z?�p�4'8�-3�
�5����\h�]�^�D���dmm�9�o��:�����&x߾��.c����(/�6o\��)��Y񲭍�N�!<i��kaa�uU��}�i+S�;/�iŖƧ�V`���T�ֳ�Y�^�����g������r$�b۟�0ưF�l��E�w�v�k�:���n��^j�ξq�����*�9a�)�ϕ���Tg��E	k����oŁ-SQ{f��U��]�5�T��;x�٦�7i5�֬YK���/���4z��=�B-�vZ�����>��Z	���S�`�oڰ�A
E	޴aA>�?WW�/v���>������lm��R����I�2e�@\}�|+�/(�'m>�,�]u�)�9�7�\]��_�����HM�G�-�e4nݼ���0��!���~�X�|���E�V��HpCC�����竷�GL�ɦ�;��;l�0A&f�)�F#�e!ʷ��	y,�����uV�1k�1�_
X}�>9���%bÆ
2�+*H�:���
���[)���ޱc�Ree%A��{ЦM�MFp~N��N!ɸ����ޟ� C/>���δ���t�M���jI���FO"�ĉ:�=��bU����sA�����1{��m2=f�pX����Ǐ�	��Y�ѧ�����l&g�
�I�ڳ-lv�	藘��;;{����~����2I&;g�r��\�8��nt��Q�>Ű�f�{�V����Y�5S����N1[J.#���Ѥ�	�h�6ˏ�%wo\7
��򞹩^�]��D�a=��߽{dY(F0��ϟ��Vl�f�ŵgbZ��-j�mXh1��yCy��S��|�R�^�;y�Z�M��9��f4»SMc� {����_�n�"�J�m��������߫j+�><͗��ՉF#:U_�҂���p[�s=���˟��?�u���I�V�䬡�e���&j�?##�����fU��4�)[6m �(]lb=�X��&����V,���s�2؞����<�'M��WRX1gs��H��I-���Z��
>�ңw���KU=}�IA��S����K}-QG���3��Jx��ͯ�M9��z��o^�k&��X�˘������_�J뽥�� ��Pjc��y1Yق���l����R�a�i��&A���G5�ogmYj�^��`}�����o�?�xz� s�^����l����l����Y���9t� w�p�����r+K�2+Kڳg/��������?�dd������^m��~Q�h��&Z��&a���p�(���l8�2I�Q\�P�wt���gΜA�޽E���@�o~�k�宯��8Ҕƕ��L2�V5�
(��F�Y��wv
ggZ�t�B5�U��N��#"	�J�P'ŝ$�h�a"�l���������z�qU�,���);;�/^B�]�zM��Ç	>���8Z4�R����A��Q���^�eŅ���@�L �\v�Iz�g�ԓ���� ��B�8�zҜ#h#����MAU�v��	M�	+{���?�C�!)�S���O�ɉ���ɺ:\�4Z[Zh�K���b	z݌�}���0Fj���Ŧ���-���UBٌ�FMׯ_�F�ΒOĐ��d1�M�6!Y�`,�W
d��=�-�1T����-���v��m_��1[����_A�T
9S�в�6=evZ^ee	
̐��"A> ���3�����*u�SEoY���N���`)
��Z_�����"�.O�f=hP�d*�����>F�\��[/���həVZ��Y�X��ٰ:$[[;:p�V�^1�ϑ#G�����͛�%T8sn�\�sk���r��!�����-����٧G�^�~�

���Y旎FQ��};:-��z�0�DXX�D�O��ESWD�m�ԒWޢE�)""RWQ��HvS+gҤ��QQ�̻�k��`���L:q��<�S���G��ǖJx�lUU���=�N_GN6Ѣӭ&G�A��!͙S��E��>�PBC���ŋ2Y('��̔�Mسk���QÇ����=K[V"�W*Y��~4n�EZx��l����NU=p�'���QU5A���?�҇N�I�i��g���-�;�*k�)���\���"5������fpp�t���K����?�El��z��Я~�+<�
���ֲ�1-��/2SZk��`➛��t��Q0E�������S�f͖��x�Jf��������FV������=N��t�O���$_>}�N��\�dt*-fo�j�͸��i���.�����I}�	9[2`h����4u�E�7Ư�#'WO�p�r��*ٞ��B�֭�B��iS�6 4h\S�RU�y�6Ѽ��f���)ap9��:ܺuKx�]\\߻�֙��&H376���3AN``��Qr��A�{`�WG���"8-)A�0�x[�
���@g�hG�n~������]�h�%��/�;���Z���v�<���*��B=��{Bn��A��s��|��P�~#aƌ��!󶁬N#w�U�Ix2.��Jnב�0�j�+:Bo���]��sZ������b�Ԏ�_>��za蚓4�d�V[u��|q�ɐ��D.\���4y�0������&o�"xɩ6r�	j�E��t^^���;�ߩ��	���֖f<��!@]_�v��Cu+3�HHݍ�݃m,e�%�y-��v�
�Yl�ή׌1���U`��i`@KK�`�Jŀ�̊��;��Bp��Z�i5 �h��.�lii��z}��/�uDp�Wo\�x��C���q�/m?�ΤY��Z�7^��Z���E�PǏ~���p}�…ҵ�!x�I��ݻ���������;j�d�q�>r��)	��#����-Q��Y��"���ѣ")
c��
€�=�p}̘�|[r���&�}K�,U}#��}Ν;�)O��hc��ơ��˿p�S4��U#J�&~/�>8LH0܍€2��p����}6F@8�Qv��'	�C�X�x�8d�q��!�3-�3��B�q�s�E�Vע%��
֭��P55�ß�=#\>|�Y���C˪]K-X�@x������ؠv�/_�`�(.W��jg�\�%�h�V���&YYI�CXMI0Z0�=�����݌6�J)B��ץ�mٲUxS���~���2�9}� �؏�ޫ�Ȋ�_8uJ
M9Ѣ�1b룴�td%�Y�t�N�۷��LЦ�&�]�e(8Ro��݂��W�aY�}���>�U|�H�c�����Ϝ�sF�H�x�:(�&3�a��sd/��	莳c��a%u	TWϕ��pGH��|E�1�ف�t�}���Ưkht�1��'�D$B��N�5:z�լYMh�; FF0?l�&d�4n�}�t�E+*�ԓ��lB���Ø�H�xII�4�&�?m����=�,>>�����	H��՛\{����IU���O�{��}�4�����M�Q@��%4������P�uԯ`�̨0
�SK)�%�;��*i�����]^�a<,h0f�& �.��-A�&�2������s�P����D��'�ĕ��ֈ臉���&M�h��4b�
��H�
�x�b
Ǒ���C���N�*]��JO4D��C)0J�Of���!�i988��+$��P=k�A�y�xN+޼y����ls��d)�1!�*�6Qձ�.Cx\��5�3����/���
�F�_/rǬ<Ln�*	|�2r=z$������3��=�v�$�2�[[�1�:�Vu {挠�G���X�ّ1m��X%j3/RRRq]�:��(��+���KY�����3.G�
�Cv&�9X���۷4��/�P�0�t�Ln<�[��CH�:��mbD��
÷�B�|���3m�4Y�,;H�	��h28d!I�P��~�b5bْEz����gtb�!�y�݌�ձ�lDR1����b����$����
s"D�bB{њb�C��
�eؿ��p���'ۛ�@6�F`��ы�۶j�`9
jO�u����e��f�\a0ݼ)ir-�9�Dc	�B�����\#��ϝ;w:�N	�ď?�o[���\h���g]�ׯ_E��VrC�Xn�Ou�©/��n���j���ؼh4M�8�ޑ(�r%
�q��iQC��]�j� 3M)�(�4B��ُ�>D����+�g�޲�0~�(<��V�C��Hƞ�����Ń�"��o�A#m�V}�E@x���
ƈ#y��N	99��1z�h6п48`K-�!�>�f,�ʕK��p���n�3���+�F|A�7KH��A��z!GK\Su�����Ԗ�VUU!s�3�D��޸��;|�cG3�<��x�}]��5�jw��n����J6]���[$Tl�E��j6P��H@=ҍ7@8m����o��˗/G6�
Mw�ޅA5H������M_���&�������e�g�R��}��G�0K�g�&�ЈC����q�S����u1[����R%õkW�ܽs[2�pؖ�����/�a�h��	��6*B�{`$%NXK^�}��������p�8~����P[c���� n�D8z����hءf	e[��0�_"`�K�Jr�V����r��<Ä	�ŀ�O�H��H~7u%M��:w
=�" ,�@���#o� ������ևmgm]fkeI�'ۛYۍ����N�:�?���d�d���B��'Ы":g$
9�, I!���Ts�ާ�츉��
��S���".���@��'�OМ����0��k&3�Ѽ�9t�i]�m߆	�_�bam���=O��@���m����G՜�� �x�-��e�>x��V�1�Hw]�x!
��[�֠���� x����{{F��Īq,���},���(B��Q� ��2�����B
�$�k��2١�e��D-�l�X���	����q}�Z�����#~�|9Cf�̏ĸXZ0���6�aq��&n�&?K���{���i�f�S�QͮL5��y*�N�ޫ�~X����`b��d�h�!���8�s���Á�c�5dk s�Iu�9B”��~8[j�#�J�>����
��%�Ts��#�좝���'D�3H�A/,wW�	ƒ��(���	����
?���1+
b���Y>��68�Rκ+T��Y@pB����DH�A<6((X'��٣d��&�.@5I��2�̜����޼q�Г�a��oG��A��� ���J�7���ISW:!�n��~�}�~�T�� ;ei�7�N0Gո1���:
wܨ�*6�
����v�$���5���=�7�>z���u��q�P�W�]��9����.#8,����B��ռ��̞5�T��.k�1c?��r�
�5�;R( ��A�@0��ջ:ӆ�e�Xh��`խTI�C�}�lIFc��	|
������Lh���T��I����Z|�	B;$V\Ɠ�8yQ������dc�7�0��l�!��Ά�G����@�"x��
���Vt�.>���A�]�C)o�ZČ��h���Ȓ5�ّ����K���? �jkky�-Z
6����t�P�q�8P��Q��JWp��l�*�����6�E��'�޷�ۢ�T��0Y�~|4N��(���(+.���΂S}��ӥ������~�
^����7��v<��=����!��d���7�����3��'�h�c�\�H�S���e�}���	0/\ �~d���x@���l�ܓRj�R��&���"�&�ƃj4�LNH�P��#qN���2%1����Y3��P���,ŀ��K�G���ϼ�Ң�D3��V�l0+�ß��S#A�VՒ���N��Ӈʞ��>���K�m�Q��d:g'~4��j���T��0K�
h�[QV���^�͜>U�}%K�5��ʩc�aG����2w7iE��:�f����m��g2v<!�HC�uG�>��v4�P�cG��zW�� �wO֭��g�Ξ)5�v��fa^f������#QƮ&�H\{����uh��OvD�T]��f�\�;�u|��=E�ݿo R��Տ혻�k(�d�O���٭�YT'J3��ǂ۲+��4���Ei;�S#G�7? ��՜3Vv_ܲF����I�͛7�W�^ï�"��@�JAN�K�Gg��:-��~�(afO�:���y�\������0�=���Ϣ䭏(���
�f��ҙ�g�V���/�=Z����ٳg��|��]E��s��a�Ƌ���Uv�O�C?'�Tcg���nY���j�c(��&�0�:�뻭�umߵk�Z�Y}��޾m'��v���ٜ�U���k���U���Ɉ.޼�)��ٔ�M?['w�	^�j�@0��q܎9	~��!?��P������P��&�Ʀ�Y� *f�~���5(�nO�����QZ	F�ɷoߨ�qv0��˖,�i€�=	rmm��U7�m�y�_�m��5K�J=ƭы��S>lo�p�N��hhh���%,l/Wg�?{��̛K8e;9>������.�l�����)�&��t�Q���qZ8I+�I���W�*���[-p�����5�b����˗.
�2�0$�����5ཱི�D'�'��[���,�b�X�h+�?����=UKpp��6!�jj��z�W�Z�}<�	��tWGp�)�<FP�=?���X_�66h%���6�v�)�^���G�{ӣg<%l�+�;paS�*�Y�i���d3YfU3�˴�-`��ޅ&(���s�d�A����U�{�90��V_&���������1��yP
�Ƥ>�r�
y�9�h!�o;��������[5��G��1�eY!o���ca��x&���/
Xp�"i��[��*C9��lFx�6�G��{��;�t��=Q����H�_=�c�w�#zy��7:�7m��p�����ِ�j�Yi)���c-�:��,��}��x����K��x%��6����T�2Ҡ;sn��\��y[f�}M;���Cƅ��}#eW_37�>~Ի7+����[3`�3�K:��@̱�ԁ`��<��T�w���U�MGכϮ�l�{���v�2Z�-���1�=��� �)	~����S�.D,
7����#���:K6��Q�d�wr�U�c�>�a���
x��U��O��������������������_��r���IEND�B`�lib/php/plugins/AutoResize/plugin.php000064400000015464147361034400013677 0ustar00<?php

/**
 * elFinder Plugin AutoResize
 * Auto resize on file upload.
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.presave' => array(
 *                'Plugin.AutoResize.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'AutoResize' => array(
 *                'enable'         => true,       // For control by volume driver
 *                'maxWidth'       => 1024,       // Path to Water mark image
 *                'maxHeight'      => 1024,       // Margin right pixel
 *                'quality'        => 95,         // JPEG image save quality
 *                'preserveExif'   => false,      // Preserve EXIF data (Imagick only)
 *                'forceEffect'    => false,      // For change quality or make progressive JPEG of small images
 *                'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *                'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                // In case of using any key, specify it as an array
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'AutoResize' => array(
 *                        'enable'         => true,       // For control by volume driver
 *                        'maxWidth'       => 1024,       // Path to Water mark image
 *                        'maxHeight'      => 1024,       // Margin right pixel
 *                        'quality'        => 95,         // JPEG image save quality
 *                        'preserveExif'   => false,      // Preserve EXIF data (Imagick only)
 *                        'forceEffect'    => false,      // For change quality or make progressive JPEG of small images
 *                        'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
 *                        'offDropWith'    => null,       // Enabled by default. To disable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                        'onDropWith'     => null        // Disabled by default. To enable it if it is dropped with pressing the meta key
 *                                                        // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
 *                                                        // In case of using any key, specify it as an array
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginAutoResize extends elFinderPlugin
{

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,       // For control by volume driver
            'maxWidth' => 1024,       // Path to Water mark image
            'maxHeight' => 1024,       // Margin right pixel
            'quality' => 95,         // JPEG image save quality
            'preserveExif' => false,      // Preserve EXIF data (Imagick only)
            'forceEffect' => false,      // For change quality or make progressive JPEG of small images
            'targetType' => IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP, // Target image formats ( bit-field )
            'offDropWith' => null,       // To disable it if it is dropped with pressing the meta key
            // Alt: 8, Ctrl: 4, Meta: 2, Shift: 1 - sum of each value
            // In case of using any key, specify it as an array
            'disableWithContentSaveId' => true // Disable on URL upload with post data "contentSaveId"
        );

        $this->opts = array_merge($defaults, $opts);

    }

    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        if (!$src) {
            return false;
        }

        $opts = $this->getCurrentOpts($volume);

        if (!$this->iaEnabled($opts, $elfinder)) {
            return false;
        }

        $imageType = null;
        $srcImgInfo = null;
        if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
            $mime = mime_content_type($src);
            if (substr($mime, 0, 5) !== 'image') {
                return false;
            }
        }
        if (extension_loaded('exif') && function_exists('exif_imagetype')) {
            $imageType = exif_imagetype($src);
            if ($imageType === false) {
                return false;
            }
        } else {
            $srcImgInfo = getimagesize($src);
            if ($srcImgInfo === false) {
                return false;
            }
            $imageType = $srcImgInfo[2];
        }

        // check target image type
        $imgTypes = array(
            IMAGETYPE_GIF => IMG_GIF,
            IMAGETYPE_JPEG => IMG_JPEG,
            IMAGETYPE_PNG => IMG_PNG,
            IMAGETYPE_BMP => IMG_WBMP,
            IMAGETYPE_WBMP => IMG_WBMP
        );
        if (!isset($imgTypes[$imageType]) || !($opts['targetType'] & $imgTypes[$imageType])) {
            return false;
        }

        if (!$srcImgInfo) {
            $srcImgInfo = getimagesize($src);
        }

        if ($opts['forceEffect'] || $srcImgInfo[0] > $opts['maxWidth'] || $srcImgInfo[1] > $opts['maxHeight']) {
            return $this->resize($volume, $src, $srcImgInfo, $opts['maxWidth'], $opts['maxHeight'], $opts['quality'], $opts['preserveExif']);
        }

        return false;
    }

    private function resize($volume, $src, $srcImgInfo, $maxWidth, $maxHeight, $jpgQuality, $preserveExif)
    {
        $zoom = min(($maxWidth / $srcImgInfo[0]), ($maxHeight / $srcImgInfo[1]));
        $width = round($srcImgInfo[0] * $zoom);
        $height = round($srcImgInfo[1] * $zoom);
        $unenlarge = true;
        $checkAnimated = true;

        return $volume->imageUtil('resize', $src, compact('width', 'height', 'jpgQuality', 'preserveExif', 'unenlarge', 'checkAnimated'));
    }
}
lib/php/plugins/Normalizer/plugin.php000064400000017533147361034400013726 0ustar00<?php

/**
 * elFinder Plugin Normalizer
 * UTF-8 Normalizer of file-name and file-path etc.
 * nfc(NFC): Canonical Decomposition followed by Canonical Composition
 * nfkc(NFKC): Compatibility Decomposition followed by Canonical
 * This plugin require Class "Normalizer" (PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
 * or PEAR package "I18N_UnicodeNormalizer"
 * ex. binding, configure on connector options
 *    $opts = array(
 *        'bind' => array(
 *            'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre' => array(
 *                'Plugin.Normalizer.cmdPreprocess'
 *            ),
 *            'upload.presave paste.copyfrom' => array(
 *                'Plugin.Normalizer.onUpLoadPreSave'
 *            )
 *        ),
 *        // global configure (optional)
 *        'plugin' => array(
 *            'Normalizer' => array(
 *                'enable'    => true,
 *                'nfc'       => true,
 *                'nfkc'      => true,
 *                'umlauts'   => false,
 *                'lowercase' => false,
 *                'convmap'   => array()
 *            )
 *        ),
 *        // each volume configure (optional)
 *        'roots' => array(
 *            array(
 *                'driver' => 'LocalFileSystem',
 *                'path'   => '/path/to/files/',
 *                'URL'    => 'http://localhost/to/files/'
 *                'plugin' => array(
 *                    'Normalizer' => array(
 *                        'enable'    => true,
 *                        'nfc'       => true,
 *                        'nfkc'      => true,
 *                        'umlauts'   => false,
 *                        'lowercase' => false,
 *                        'convmap'   => array()
 *                    )
 *                )
 *            )
 *        )
 *    );
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPluginNormalizer extends elFinderPlugin
{
    private $replaced = array();
    private $keyMap = array(
        'ls' => 'intersect',
        'upload' => 'renames',
        'mkdir' => array('name', 'dirs')
    );

    public function __construct($opts)
    {
        $defaults = array(
            'enable' => true,  // For control by volume driver
            'nfc' => true,  // Canonical Decomposition followed by Canonical Composition
            'nfkc' => true,  // Compatibility Decomposition followed by Canonical
            'umlauts' => false, // Convert umlauts with their closest 7 bit ascii equivalent
            'lowercase' => false, // Make chars lowercase
            'convmap' => array()// Convert map ('FROM' => 'TO') array
        );

        $this->opts = array_merge($defaults, $opts);
    }

    public function cmdPreprocess($cmd, &$args, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }
        $this->replaced[$cmd] = array();
        $key = (isset($this->keyMap[$cmd])) ? $this->keyMap[$cmd] : 'name';

        if (is_array($key)) {
            $keys = $key;
        } else {
            $keys = array($key);
        }
        foreach ($keys as $key) {
            if (isset($args[$key])) {
                if (is_array($args[$key])) {
                    foreach ($args[$key] as $i => $name) {
                        if ($cmd === 'mkdir' && $key === 'dirs') {
                            // $name need '/' as prefix see #2607
                            $name = '/' . ltrim($name, '/');
                            $_names = explode('/', $name);
                            $_res = array();
                            foreach ($_names as $_name) {
                                $_res[] = $this->normalize($_name, $opts);
                            }
                            $this->replaced[$cmd][$name] = $args[$key][$i] = join('/', $_res);
                        } else {
                            $this->replaced[$cmd][$name] = $args[$key][$i] = $this->normalize($name, $opts);
                        }
                    }
                } else if ($args[$key] !== '') {
                    $name = $args[$key];
                    $this->replaced[$cmd][$name] = $args[$key] = $this->normalize($name, $opts);
                }
            }
        }
        if ($cmd === 'ls' || $cmd === 'mkdir') {
            if (!empty($this->replaced[$cmd])) {
                // un-regist for legacy settings
                $elfinder->unbind($cmd, array($this, 'cmdPostprocess'));
                $elfinder->bind($cmd, array($this, 'cmdPostprocess'));
            }
        }
        return true;
    }

    public function cmdPostprocess($cmd, &$result, $args, $elfinder, $volume)
    {
        if ($cmd === 'ls') {
            if (!empty($result['list']) && !empty($this->replaced['ls'])) {
                foreach ($result['list'] as $hash => $name) {
                    if ($keys = array_keys($this->replaced['ls'], $name)) {
                        if (count($keys) === 1) {
                            $result['list'][$hash] = $keys[0];
                        } else {
                            $result['list'][$hash] = $keys;
                        }
                    }
                }
            }
        } else if ($cmd === 'mkdir') {
            if (!empty($result['hashes']) && !empty($this->replaced['mkdir'])) {
                foreach ($result['hashes'] as $name => $hash) {
                    if ($keys = array_keys($this->replaced['mkdir'], $name)) {
                        $result['hashes'][$keys[0]] = $hash;
                    }
                }
            }
        }
    }

    // NOTE: $thash is directory hash so it unneed to process at here
    public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume)
    {
        $opts = $this->getCurrentOpts($volume);
        if (!$opts['enable']) {
            return false;
        }

        $name = $this->normalize($name, $opts);
        return true;
    }

    protected function normalize($str, $opts)
    {
        if ($opts['nfc'] || $opts['nfkc']) {
            if (class_exists('Normalizer', false)) {
                if ($opts['nfc'] && !Normalizer::isNormalized($str, Normalizer::FORM_C))
                    $str = Normalizer::normalize($str, Normalizer::FORM_C);
                if ($opts['nfkc'] && !Normalizer::isNormalized($str, Normalizer::FORM_KC))
                    $str = Normalizer::normalize($str, Normalizer::FORM_KC);
            } else {
                if (!class_exists('I18N_UnicodeNormalizer', false)) {
                    if (is_readable('I18N/UnicodeNormalizer.php')) {
                        include_once 'I18N/UnicodeNormalizer.php';
                    } else {
                        trigger_error('Plugin Normalizer\'s options "nfc" or "nfkc" require PHP class "Normalizer" or PEAR package "I18N_UnicodeNormalizer"', E_USER_WARNING);
                    }
                }
                if (class_exists('I18N_UnicodeNormalizer', false)) {
                    $normalizer = new I18N_UnicodeNormalizer();
                    if ($opts['nfc'])
                        $str = $normalizer->normalize($str, 'NFC');
                    if ($opts['nfkc'])
                        $str = $normalizer->normalize($str, 'NFKC');
                }
            }
        }
        if ($opts['umlauts']) {
            if (strpos($str = htmlentities($str, ENT_QUOTES, 'UTF-8'), '&') !== false) {
                $str = html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|caron|cedil|circ|grave|lig|orn|ring|slash|tilde|uml);~i', '$1', $str), ENT_QUOTES, 'utf-8');
            }
        }
        if ($opts['convmap'] && is_array($opts['convmap'])) {
            $str = strtr($str, $opts['convmap']);
        }
        if ($opts['lowercase']) {
            if (function_exists('mb_strtolower')) {
                $str = mb_strtolower($str, 'UTF-8');
            } else {
                $str = strtolower($str);
            }
        }
        return $str;
    }
}
lib/php/elFinderFlysystemGoogleDriveNetmount.php000064400000035523147361034400016155 0ustar00<?php

use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
use League\Flysystem\Cached\CachedAdapter;
use League\Flysystem\Cached\Storage\Adapter as ACache;
use Hypweb\Flysystem\GoogleDrive\GoogleDriveAdapter;
use Hypweb\Flysystem\Cached\Extra\Hasdir;
use Hypweb\Flysystem\Cached\Extra\DisableEnsureParentDirectories;
use Hypweb\elFinderFlysystemDriverExt\Driver as ExtDriver;

elFinder::$netDrivers['googledrive'] = 'FlysystemGoogleDriveNetmount';

if (!class_exists('elFinderVolumeFlysystemGoogleDriveCache', false)) {
    class elFinderVolumeFlysystemGoogleDriveCache extends ACache
    {
        use Hasdir;
        use DisableEnsureParentDirectories;
    }
}

class elFinderVolumeFlysystemGoogleDriveNetmount extends ExtDriver
{

    public function __construct()
    {
        parent::__construct();

        $opts = array(
            'acceptedName' => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#',
            'rootCssClass' => 'elfinder-navbar-root-googledrive',
            'gdAlias' => '%s@GDrive',
            'gdCacheDir' => __DIR__ . '/.tmp',
            'gdCachePrefix' => 'gd-',
            'gdCacheExpire' => 600
        );

        $this->options = array_merge($this->options, $opts);
    }

    /**
     * Prepare driver before mount volume.
     * Return true if volume is ready.
     *
     * @return bool
     **/
    protected function init()
    {
        if (empty($this->options['icon'])) {
            $this->options['icon'] = true;
        }
        if ($res = parent::init()) {
            if ($this->options['icon'] === true) {
                unset($this->options['icon']);
            }
            // enable command archive
            $this->options['useRemoteArchive'] = true;
        }
        return $res;
    }

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount()
     *
     * @param $options
     *
     * @return Array
     * @author Naoki Sawada
     */
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTID')) {
            $options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;
        }

        if (!isset($options['pass'])) {
            $options['pass'] = '';
        }

        try {
            $client = new \Google_Client();
            $client->setClientId($options['client_id']);
            $client->setClientSecret($options['client_secret']);

            if ($options['pass'] === 'reauth') {
                $options['pass'] = '';
                $this->session->set('GoogleDriveAuthParams', [])->set('GoogleDriveTokens', []);
            } else if ($options['pass'] === 'googledrive') {
                $options['pass'] = '';
            }

            $options = array_merge($this->session->get('GoogleDriveAuthParams', []), $options);

            if (!isset($options['access_token'])) {
                $options['access_token'] = $this->session->get('GoogleDriveTokens', []);
                $this->session->remove('GoogleDriveTokens');
            }
            $aToken = $options['access_token'];

            $rootObj = $service = null;
            if ($aToken) {
                try {
                    $client->setAccessToken($aToken);
                    if ($client->isAccessTokenExpired()) {
                        $aToken = array_merge($aToken, $client->fetchAccessTokenWithRefreshToken());
                        $client->setAccessToken($aToken);
                    }
                    $service = new \Google_Service_Drive($client);
                    $rootObj = $service->files->get('root');

                    $options['access_token'] = $aToken;
                    $this->session->set('GoogleDriveAuthParams', $options);

                } catch (Exception $e) {
                    $aToken = [];
                    $options['access_token'] = [];
                    if ($options['user'] !== 'init') {
                        $this->session->set('GoogleDriveAuthParams', $options);
                        return array('exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE);
                    }
                }

            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code || $options['user'] === 'init') {
                if (empty($options['url'])) {
                    $options['url'] = elFinder::getConnectorUrl();
                }

                if (isset($options['id'])) {
                    $callback = $options['url'] . (strpos($options['url'], '?') !== false? '&' : '?') . 'cmd=netmount&protocol=googledrive&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                    $client->setRedirectUri($callback);
                }

                if (!$aToken && empty($code)) {
                    $client->setScopes([Google_Service_Drive::DRIVE]);
                    if (!empty($options['offline'])) {
                        $client->setApprovalPrompt('force');
                        $client->setAccessType('offline');
                    }
                    $url = $client->createAuthUrl();

                    $html = '<input id="elf-volumedriver-googledrive-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                        jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "googledrive", mode: "makebtn", url: "' . $url . '"});
                    </script>';
                    if (empty($options['pass']) && $options['host'] !== '1') {
                        $options['pass'] = 'return';
                        $this->session->set('GoogleDriveAuthParams', $options);
                        return array('exit' => true, 'body' => $html);
                    } else {
                        $out = array(
                            'node' => $options['id'],
                            'json' => '{"protocol": "googledrive", "mode": "makebtn", "body" : "' . str_replace($html, '"', '\\"') . '", "error" : "' . elFinder::ERROR_ACCESS_DENIED . '"}',
                            'bind' => 'netmount'
                        );
                        return array('exit' => 'callback', 'out' => $out);
                    }
                } else {
                    if ($code) {
                        if (!empty($options['id'])) {
                            $aToken = $client->fetchAccessTokenWithAuthCode($code);
                            $options['access_token'] = $aToken;
                            unset($options['code']);
                            $this->session->set('GoogleDriveTokens', $aToken)->set('GoogleDriveAuthParams', $options);
                            $out = array(
                                'node' => $options['id'],
                                'json' => '{"protocol": "googledrive", "mode": "done", "reset": 1}',
                                'bind' => 'netmount'
                            );
                        } else {
                            $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                            $out = array(
                                'node' => $nodeid,
                                'json' => json_encode(array(
                                    'protocol' => 'googledrive',
                                    'host' => $nodeid,
                                    'mode' => 'redirect',
                                    'options' => array(
                                        'id' => $nodeid,
                                        'code'=> $code
                                    )
                                )),
                                'bind' => 'netmount'
                            );
                        }
                        if (!$itpCare) {
                            return array('exit' => 'callback', 'out' => $out);
                        } else {
                            return array('exit' => true, 'body' => $out['json']);
                        }
                    }
                    $folders = [];
                    foreach ($service->files->listFiles([
                        'pageSize' => 1000,
                        'q' => 'trashed = false and mimeType = "application/vnd.google-apps.folder"'
                    ]) as $f) {
                        $folders[$f->getId()] = $f->getName();
                    }
                    natcasesort($folders);
                    $folders = ['root' => $rootObj->getName()] + $folders;
                    $folders = json_encode($folders);
                    $json = '{"protocol": "googledrive", "mode": "done", "folders": ' . $folders . '}';
                    $options['pass'] = 'return';
                    $html = 'Google.com';
                    $html .= '<script>
                        jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                    </script>';
                    $this->session->set('GoogleDriveAuthParams', $options);
                    return array('exit' => true, 'body' => $html);
                }
            }
        } catch (Exception $e) {
            $this->session->remove('GoogleDriveAuthParams')->remove('GoogleDriveTokens');
            if (empty($options['pass'])) {
                return array('exit' => true, 'body' => '{msg:' . elFinder::ERROR_ACCESS_DENIED . '}' . ' ' . $e->getMessage());
            } else {
                return array('exit' => true, 'error' => [elFinder::ERROR_ACCESS_DENIED, $e->getMessage()]);
            }
        }

        if (!$aToken) {
            return array('exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE);
        }

        if ($options['path'] === '/') {
            $options['path'] = 'root';
        }

        try {
            $file = $service->files->get($options['path']);
            $options['alias'] = sprintf($this->options['gdAlias'], $file->getName());
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        } catch (Google_Service_Exception $e) {
            $err = json_decode($e->getMessage(), true);
            if (isset($err['error']) && $err['error']['code'] == 404) {
                return array('exit' => true, 'error' => [elFinder::ERROR_TRGDIR_NOT_FOUND, $options['path']]);
            } else {
                return array('exit' => true, 'error' => $e->getMessage());
            }
        } catch (Exception $e) {
            return array('exit' => true, 'error' => $e->getMessage());
        }

        foreach (['host', 'user', 'pass', 'id', 'offline'] as $key) {
            unset($options[$key]);
        }

        return $options;
    }

    /**
     * process of on netunmount
     * Drop table `dropbox` & rm thumbs
     *
     * @param $netVolumes
     * @param $key
     *
     * @return bool
     * @internal param array $options
     */
    public function netunmount($netVolumes, $key)
    {
        $cache = $this->options['gdCacheDir'] . DIRECTORY_SEPARATOR . $this->options['gdCachePrefix'] . $this->netMountKey;
        if (file_exists($cache) && is_writeable($cache)) {
            unlink($cache);
        }
        if ($tmbs = glob($this->tmbPath . DIRECTORY_SEPARATOR . $this->netMountKey . '*')) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }
        return true;
    }

    /**
     * "Mount" volume.
     * Return true if volume available for read or write,
     * false - otherwise
     *
     * @param array $opts
     *
     * @return bool
     * @author Naoki Sawada
     */
    public function mount(array $opts)
    {
        $creds = null;
        if (isset($opts['access_token'])) {
            $this->netMountKey = md5(join('-', array('googledrive', $opts['path'], (isset($opts['access_token']['refresh_token']) ? $opts['access_token']['refresh_token'] : $opts['access_token']['access_token']))));
        }

        $client = new \Google_Client();
        $client->setClientId($opts['client_id']);
        $client->setClientSecret($opts['client_secret']);

        if (!empty($opts['access_token'])) {
            $client->setAccessToken($opts['access_token']);
        }
        if ($this->needOnline && $client->isAccessTokenExpired()) {
            try {
                $creds = $client->fetchAccessTokenWithRefreshToken();
            } catch (LogicException $e) {
                $this->session->remove('GoogleDriveAuthParams');
                throw $e;
            }
        }

        $service = new \Google_Service_Drive($client);

        // If path is not set, use the root
        if (!isset($opts['path']) || $opts['path'] === '') {
            $opts['path'] = 'root';
        }

        $googleDrive = new GoogleDriveAdapter($service, $opts['path'], ['useHasDir' => true]);

        $opts['fscache'] = null;
        if ($this->options['gdCacheDir'] && is_writeable($this->options['gdCacheDir'])) {
            if ($this->options['gdCacheExpire']) {
                $opts['fscache'] = new elFinderVolumeFlysystemGoogleDriveCache(new Local($this->options['gdCacheDir']), $this->options['gdCachePrefix'] . $this->netMountKey, $this->options['gdCacheExpire']);
            }
        }
        if ($opts['fscache']) {
            $filesystem = new Filesystem(new CachedAdapter($googleDrive, $opts['fscache']));
        } else {
            $filesystem = new Filesystem($googleDrive);
        }

        $opts['driver'] = 'FlysystemExt';
        $opts['filesystem'] = $filesystem;
        $opts['separator'] = '/';
        $opts['checkSubfolders'] = true;
        if (!isset($opts['alias'])) {
            $opts['alias'] = 'GoogleDrive';
        }

        if ($res = parent::mount($opts)) {
            // update access_token of session data
            if ($creds) {
                $netVolumes = $this->session->get('netvolume');
                $netVolumes[$this->netMountKey]['access_token'] = array_merge($netVolumes[$this->netMountKey]['access_token'], $creds);
                $this->session->set('netvolume', $netVolumes);
            }
        }

        return $res;
    }

    /**
     * @inheritdoc
     */
    protected function tmbname($stat)
    {
        return $this->netMountKey . substr(substr($stat['hash'], strlen($this->id)), -38) . $stat['ts'] . '.png';
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && empty($this->options['refresh_token']) && $this->options['access_token'] && isset($this->options['access_token']['refresh_token'])) {
            $res['refresh_token'] = $this->options['access_token']['refresh_token'];
        }

        return $res;
    }
}
lib/php/elFinderVolumeSFTPphpseclib.class.php000064400000065150147361034400015236 0ustar00<?php

/**
 * Simple elFinder driver for SFTP using phpseclib 1
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever), sitecode
 * @reference http://phpseclib.sourceforge.net/sftp/2.0/examples.html
 **/
class elFinderVolumeSFTPphpseclib extends elFinderVolumeFTP {

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    public function __construct()
    {
        $opts = array(
            'host' => 'localhost',
            'user' => '',
            'pass' => '',
            'port' => 22,
            'path' => '/',
            'timeout' => 20,
            'owner' => true,
            'tmbPath' => '',
            'tmpPath' => '',
            'separator' => '/',
            'phpseclibDir' => '../phpseclib/',
            'connectCallback' => null, //provide your own already instantiated phpseclib $Sftp object returned by this callback
                                       //'connectCallback'=> function($options) {
                                       //     //load and instantiate phpseclib $sftp
                                       //     return $sftp;
                                       // },
            'checkSubfolders' => -1,
            'dirMode' => 0755,
            'fileMode' => 0644,
            'rootCssClass' => 'elfinder-navbar-root-ftp',
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount()
     *
     * @param $options
     *
     * @return array volume root options
     * @author Naoki Sawada
     */
    public function netmountPrepare($options)
    {
        $options['statOwner'] = true;
        $options['allowChmodReadOnly'] = true;
        $options['acceptedName'] = '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#';
        return $options;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare SFTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function init()
    {
        if (!$this->options['connectCallback']) {
            if (!$this->options['host']
                || !$this->options['port']) {
                return $this->setError('Required options undefined.');
            }

            if (!$this->options['path']) {
                $this->options['path'] = '/';
            }

            // make net mount key
            $this->netMountKey = md5(join('-', array('sftpphpseclib', $this->options['host'], $this->options['port'], $this->options['path'], $this->options['user'])));

            set_include_path(get_include_path() . PATH_SEPARATOR . getcwd().'/'.$this->options['phpseclibDir']);
            include_once('Net/SFTP.php');

            if (!class_exists('Net_SFTP')) {
                return $this->setError('SFTP extension not loaded. Install phpseclib version 1: http://phpseclib.sourceforge.net/ Set option "phpseclibDir" accordingly.');
            }

            // remove protocol from host
            $scheme = parse_url($this->options['host'], PHP_URL_SCHEME);

            if ($scheme) {
                $this->options['host'] = substr($this->options['host'], strlen($scheme) + 3);
            }
        } else {
            // make net mount key
            $this->netMountKey = md5(join('-', array('sftpphpseclib', $this->options['path'])));
        }

        // normalize root path
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            $this->options['alias'] = $this->options['user'] . '@' . $this->options['host'];
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        }

        $this->rootName = $this->options['alias'];
        $this->options['separator'] = '/';

        if (is_null($this->options['syncChkAsTs'])) {
            $this->options['syncChkAsTs'] = true;
        }

        return $this->needOnline? $this->connect() : true;

    }


    /**
     * Configure after successfull mount.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        parent::configure();

        if (!$this->tmp) {
            $this->disabled[] = 'mkfile';
            $this->disabled[] = 'paste';
            $this->disabled[] = 'upload';
            $this->disabled[] = 'edit';
            //$this->disabled[] = 'archive';
            //$this->disabled[] = 'extract';
        }

        $this->disabled[] = 'archive';
        $this->disabled[] = 'extract';
    }

    /**
     * Connect to sftp server
     *
     * @return bool
     * @author sitecode
     **/
    protected function connect()
    {
        //use ca
        if ($this->options['connectCallback']) {
            $this->connect = $this->options['connectCallback']($this->options);
            if (!$this->connect || !$this->connect->isConnected()) {
                return $this->setError('Unable to connect successfully');
            }

            return true;
        }

        try{
            $host = $this->options['host'] . ($this->options['port'] != 22 ? ':' . $this->options['port'] : '');
            $this->connect = new Net_SFTP($host);
            //TODO check fingerprint before login, fail if no match to last time
            if (!$this->connect->login($this->options['user'], $this->options['pass'])) {
                return $this->setError('Unable to connect to SFTP server ' . $host);
            }
        } catch (Exception $e) {
            return $this->setError('Error while connecting to SFTP server '  . $host . ': ' . $e->getMessage());
        }

        if (!$this->connect->chdir($this->root)
            /*|| $this->root != $this->connect->pwd()*/) {
            //$this->umount();
            return $this->setError('Unable to open root folder.');
        }

        return true;
    }

    /**
     * Call rawlist
     *
     * @param string $path
     *
     * @return array
     */
    protected function ftpRawList($path)
    {
        return $this->connect->rawlist($path ?: '.') ?: [];
/*
        $raw = $this->connect->rawlist($path ?: '.') ?: [];
        $raw = array_map(function($key, $value) {
            $value['name'] = $key;
            return $value;
        }, array_keys($raw), $raw);
        return $raw;
*/
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
        $this->connect && $this->connect->disconnect();
    }


    /**
     * Parse line from rawlist() output and return file stat (array)
     *
     * @param  string $raw line from rawlist() output
     * @param         $base
     * @param bool    $nameOnly
     *
     * @return array
     * @author Dmitry Levashov
     */
    protected function parseRaw($raw, $base, $nameOnly = false)
    {
        $info = $raw;
        $stat = array();

        if ($info['filename'] == '.' || $info['filename'] == '..') {
            return false;
        }

        $name = $info['filename'];

        if (preg_match('|(.+)\-\>(.+)|', $name, $m)) {
            $name = trim($m[1]);
            // check recursive processing
            if ($this->cacheDirTarget && $this->_joinPath($base, $name) !== $this->cacheDirTarget) {
                return array();
            }
            if (!$nameOnly) {
                $target = trim($m[2]);
                if (substr($target, 0, 1) !== $this->separator) {
                    $target = $this->getFullPath($target, $base);
                }
                $target = $this->_normpath($target);
                $stat['name'] = $name;
                $stat['target'] = $target;
                return $stat;
            }
        }

        if ($nameOnly) {
            return array('name' => $name);
        }

        $stat['ts'] = $info['mtime'];

        if ($this->options['statOwner']) {
            $stat['owner'] = $info['uid'];
            $stat['group'] = $info['gid'];
            $stat['perm'] = $info['permissions'];
            $stat['isowner'] = isset($stat['owner']) ? ($this->options['owner'] ? true : ($stat['owner'] == $this->options['user'])) : true;
        }

        $owner_computed = isset($stat['isowner']) ? $stat['isowner'] : $this->options['owner'];
        $perm = $this->parsePermissions($info['permissions'], $owner_computed);
        $stat['name'] = $name;
        $stat['mime'] = $info['type'] == NET_SFTP_TYPE_DIRECTORY ? 'directory' : $this->mimetype($stat['name'], true);
        $stat['size'] = $stat['mime'] == 'directory' ? 0 : $info['size'];
        $stat['read'] = $perm['read'];
        $stat['write'] = $perm['write'];

        return $stat;
    }

    /**
     * Parse permissions string. Return array(read => true/false, write => true/false)
     *
     * @param  int $perm
     *                                             The isowner parameter is computed by the caller.
     *                                             If the owner parameter in the options is true, the user is the actual owner of all objects even if the user used in the ftp Login
     *                                             is different from the file owner id.
     *                                             If the owner parameter is false to understand if the user is the file owner we compare the ftp user with the file owner id.
     * @param Boolean $isowner                     . Tell if the current user is the owner of the object.
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author sitecode
     */
    protected function parsePermissions($permissions, $isowner = true)
    {
        $permissions = decoct($permissions);
        $perm = $isowner ? decbin($permissions[-3]) : decbin($permissions[-1]);

        return array(
            'read' => $perm[-3],
            'write' => $perm[-2]
        );
    }

    /**
     * Cache dir contents
     *
     * @param  string $path dir path
     *
     * @return void
     * @author Dmitry Levashov, sitecode
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        $list = array();
        $encPath = $this->convEncIn($path);
        foreach ($this->ftpRawList($encPath) as $raw) {
            if (($stat = $this->parseRaw($raw, $encPath))) {
                $list[] = $stat;
            }
        }
        $list = $this->convEncOut($list);
        $prefix = ($path === $this->separator) ? $this->separator : $path . $this->separator;
        $targets = array();
        foreach ($list as $stat) {
            $p = $prefix . $stat['name'];
            if (isset($stat['target'])) {
                // stat later
                $targets[$stat['name']] = $stat['target'];
            } else {
                $stat = $this->updateCache($p, $stat);
                if (empty($stat['hidden'])) {
                    if (!$hasDir && $stat['mime'] === 'directory') {
                        $hasDir = true;
                    }
                    $this->dirsCache[$path][] = $p;
                }
            }
        }
        // stat link targets
        foreach ($targets as $name => $target) {
            $stat = array();
            $stat['name'] = $name;
            $p = $prefix . $name;
            $cacheDirTarget = $this->cacheDirTarget;
            $this->cacheDirTarget = $this->convEncIn($target, true);
            if ($tstat = $this->stat($target)) {
                $stat['size'] = $tstat['size'];
                $stat['alias'] = $target;
                $stat['thash'] = $tstat['hash'];
                $stat['mime'] = $tstat['mime'];
                $stat['read'] = $tstat['read'];
                $stat['write'] = $tstat['write'];

                if (isset($tstat['ts'])) {
                    $stat['ts'] = $tstat['ts'];
                }
                if (isset($tstat['owner'])) {
                    $stat['owner'] = $tstat['owner'];
                }
                if (isset($tstat['group'])) {
                    $stat['group'] = $tstat['group'];
                }
                if (isset($tstat['perm'])) {
                    $stat['perm'] = $tstat['perm'];
                }
                if (isset($tstat['isowner'])) {
                    $stat['isowner'] = $tstat['isowner'];
                }
            } else {

                $stat['mime'] = 'symlink-broken';
                $stat['read'] = false;
                $stat['write'] = false;
                $stat['size'] = 0;

            }
            $this->cacheDirTarget = $cacheDirTarget;
            $stat = $this->updateCache($p, $stat);
            if (empty($stat['hidden'])) {
                if (!$hasDir && $stat['mime'] === 'directory') {
                    $hasDir = true;
                }
                $this->dirsCache[$path][] = $p;
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }
    }


    /***************** file stat ********************/

    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $outPath = $this->convEncOut($path);
        if (isset($this->cache[$outPath])) {
            return $this->convEncIn($this->cache[$outPath]);
        } else {
            $this->convEncIn();
        }
        if ($path === $this->root) {
            $res = array(
                'name' => $this->root,
                'mime' => 'directory',
                'dirs' => -1
            );
            if ($this->needOnline && (($this->ARGS['cmd'] === 'open' && $this->ARGS['target'] === $this->encode($this->root)) || $this->isMyReload())) {
                $check = array(
                    'ts' => true,
                    'dirs' => true,
                );
                $ts = 0;
                foreach ($this->ftpRawList($path) as $str) {
                    $info = preg_split('/\s+/', $str, 9);
                    if ($info[8] === '.') {
                        $info[8] = 'root';
                        if ($stat = $this->parseRaw(join(' ', $info), $path)) {
                            unset($stat['name']);
                            $res = array_merge($res, $stat);
                            if ($res['ts']) {
                                $ts = 0;
                                unset($check['ts']);
                            }
                        }
                    }
                    if ($check && ($stat = $this->parseRaw($str, $path))) {
                        if (isset($stat['ts']) && !empty($stat['ts'])) {
                            $ts = max($ts, $stat['ts']);
                        }
                        if (isset($stat['dirs']) && $stat['mime'] === 'directory') {
                            $res['dirs'] = 1;
                            unset($stat['dirs']);
                        }
                        if (!$check) {
                            break;
                        }
                    }
                }
                if ($ts) {
                    $res['ts'] = $ts;
                }
                $this->cache[$outPath] = $res;
            }
            return $res;
        }

        $pPath = $this->_dirname($path);
        if ($this->_inPath($pPath, $this->root)) {
            $outPPpath = $this->convEncOut($pPath);
            if (!isset($this->dirsCache[$outPPpath])) {
                $parentSubdirs = null;
                if (isset($this->sessionCache['subdirs']) && isset($this->sessionCache['subdirs'][$outPPpath])) {
                    $parentSubdirs = $this->sessionCache['subdirs'][$outPPpath];
                }
                $this->cacheDir($outPPpath);
                if ($parentSubdirs) {
                    $this->sessionCache['subdirs'][$outPPpath] = $parentSubdirs;
                }
            }
        }

        $stat = $this->convEncIn(isset($this->cache[$outPath]) ? $this->cache[$outPath] : array());
        if (!$this->mounted) {
            // dispose incomplete cache made by calling `stat` by 'startPath' option
            $this->cache = array();
        }

        return $stat;
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov, sitecode
     **/
    protected function _subdirs($path)
    {
        foreach ($this->ftpRawList($path) as $info) {
            $name = $info['filename'];
            if ($name && $name !== '.' && $name !== '..' && $info['type'] == NET_SFTP_TYPE_DIRECTORY) {
                return true;
            }
        }

        return false;
    }


    /******************** file/dir content *********************/

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @throws elFinderAbortException
     * @internal param bool $write open file for writing
     * @author   Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        if ($this->tmp) {
            $local = $this->getTempFile($path);
            $this->connect->get($path, $local);
            return @fopen($local, $mode);
        }

        return false;
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }


    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $this->_basename($name));
        if ($this->connect->mkdir($path) === false) {
            return false;
        }

        $this->options['dirMode'] && $this->connect->chmod($this->options['dirMode'], $path);
        return $path;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author sitecode
     **/
    protected function _mkfile($path, $name)
    {
        $path = $this->_joinPath($path, $this->_basename($name));
        return $this->connect->put($path, '') ? $path : false;
/*
        if ($this->tmp) {
            $path = $this->_joinPath($path, $name);
            $local = $this->getTempFile();
            $res = touch($local) && $this->connect->put($path, $local, NET_SFTP_LOCAL_FILE);
            unlink($local);
            return $res ? $path : false;
        }

        return false;
 */
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov, sitecode
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $res = false;

        $target = $this->_joinPath($targetDir, $this->_basename($name));
        if ($this->tmp) {
            $local = $this->getTempFile();

            if ($this->connect->get($source, $local)
                && $this->connect->put($target, $local, NET_SFTP_LOCAL_FILE)) {
                $res = true;
            }
            unlink($local);
        } else {
            //not memory efficient
            $res = $this->_filePutContents($target, $this->_getContents($source));
        }

        return $res;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $target = $this->_joinPath($targetDir, $this->_basename($name));
        return $this->connect->rename($source, $target) ? $target : false;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return $this->connect->delete($path, false);
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->connect->delete($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        //TODO optionally encrypt $fp before uploading if mime is not already encrypted type
        $path = $this->_joinPath($dir, $this->_basename($name));
        return $this->connect->put($path, $fp)
            ? $path
            : false;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _getContents($path)
    {
        return $this->connect->get($path);
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        return $this->connect->put($path, $content);
    }

    /**
     * chmod availability
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        $modeOct = is_string($mode) ? octdec($mode) : octdec(sprintf("%04o", $mode));
        return $this->connect->chmod($modeOct, $path);
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        return false; //TODO
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _archive($dir, $files, $name, $arc)
    {
        return false; //TODO
    }

    /**
     * Gets an array of absolute remote SFTP paths of files and
     * folders in $remote_directory omitting symbolic links.
     *
     * @param $remote_directory string remote SFTP path to scan for file and folders recursively
     * @param $targets          array  Array of target item. `null` is to get all of items
     *
     * @return array of elements each of which is an array of two elements:
     * <ul>
     * <li>$item['path'] - absolute remote SFTP path</li>
     * <li>$item['type'] - either 'f' for file or 'd' for directory</li>
     * </ul>
     */
    protected function ftp_scan_dir($remote_directory, $targets = null)
    {
        $buff = $this->ftpRawList($remote_directory);
        $items = array();
        if ($targets && is_array($targets)) {
            $targets = array_flip($targets);
        } else {
            $targets = false;
        }
        foreach ($buff as $info) {
            $name = $info['filename'];
            if ($name !== '.' && $name !== '..' && (!$targets || isset($targets[$name]))) {
                switch ($info['type']) {
                    case NET_SFTP_TYPE_SYMLINK : //omit symbolic links
                    case NET_SFTP_TYPE_DIRECTORY :
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'd'; // normal file
                        $items[] = $item;
                        $items = array_merge($items, $this->ftp_scan_dir($remote_file_path));
                        break;
                    default:
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'f'; // normal file
                        $items[] = $item;
                }
            }
        }
        return $items;
    }

} // END class
lib/php/elFinderVolumeOneDrive.class.php000064400000203172147361034400014301 0ustar00<?php

/**
 * Simple elFinder driver for OneDrive
 * onedrive api v5.0.
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeOneDrive extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'od';

    /**
     * @var string The base URL for API requests
     **/
    const API_URL = 'https://graph.microsoft.com/v1.0/me/drive/items/';

    /**
     * @var string The base URL for authorization requests
     */
    const AUTH_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize';

    /**
     * @var string The base URL for token requests
     */
    const TOKEN_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';

    /**
     * OneDrive token object.
     *
     * @var object
     **/
    protected $token = null;

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Thumbnail prefix.
     *
     * @var string
     **/
    protected $tmbPrefix = '';

    /**
     * hasCache by folders.
     *
     * @var array
     **/
    protected $HasdirsCache = array();

    /**
     * Query options of API call.
     *
     * @var array
     */
    protected $queryOptions = array();

    /**
     * Current token expires
     *
     * @var integer
     **/
    private $expires;

    /**
     * Path to access token file for permanent mount
     *
     * @var string
     */
    private $aTokenFile = '';

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    public function __construct()
    {
        $opts = array(
            'client_id' => '',
            'client_secret' => '',
            'accessToken' => '',
            'root' => 'OneDrive.com',
            'OneDriveApiClient' => '',
            'path' => '/',
            'separator' => '/',
            'tmbPath' => '',
            'tmbURL' => '',
            'tmpPath' => '',
            'acceptedName' => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#',
            'rootCssClass' => 'elfinder-navbar-root-onedrive',
            'useApiThumbnail' => true,
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Obtains a new access token from OAuth. This token is valid for one hour.
     *
     * @param        $client_id
     * @param        $client_secret
     * @param string $code         The code returned by OneDrive after
     *                             successful log in
     *
     * @return object|string
     * @throws Exception Thrown if the redirect URI of this Client instance's
     *                    state is not set
     */
    protected function _od_obtainAccessToken($client_id, $client_secret, $code, $nodeid)
    {
        if (null === $client_id) {
            return 'The client ID must be set to call obtainAccessToken()';
        }

        if (null === $client_secret) {
            return 'The client Secret must be set to call obtainAccessToken()';
        }

        $redirect = elFinder::getConnectorUrl();
        if (strpos($redirect, '/netmount/onedrive/') === false) {
            $redirect .= '/netmount/onedrive/' . ($nodeid === 'elfinder'? '1' : $nodeid);
        }

        $url = self::TOKEN_URL;

        $curl = curl_init();

        $fields = http_build_query(
            array(
                'client_id' => $client_id,
                'redirect_uri' => $redirect,
                'client_secret' => $client_secret,
                'code' => $code,
                'grant_type' => 'authorization_code',
            )
        );

        curl_setopt_array($curl, array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $fields,

            CURLOPT_HTTPHEADER => array(
                'Content-Length: ' . strlen($fields),
            ),

            CURLOPT_URL => $url,
        ));

        $result = elFinder::curlExec($curl);

        $decoded = json_decode($result);

        if (null === $decoded) {
            throw new \Exception('json_decode() failed');
        }

        if (!empty($decoded->error)) {
            $error = $decoded->error;
            if (!empty($decoded->error_description)) {
                $error .= ': ' . $decoded->error_description;
            }
            throw new \Exception($error);
        }

        $res = (object)array(
            'expires' => time() + $decoded->expires_in - 30,
            'initialToken' => '',
            'data' => $decoded
        );
        if (!empty($decoded->refresh_token)) {
            $res->initialToken = md5($client_id . $decoded->refresh_token);
        }
        return $res;
    }

    /**
     * Get token and auto refresh.
     *
     * @return true
     * @throws Exception
     */
    protected function _od_refreshToken()
    {
        if (!property_exists($this->token, 'expires') || $this->token->expires < time()) {
            if (!$this->options['client_id']) {
                $this->options['client_id'] = ELFINDER_ONEDRIVE_CLIENTID;
            }

            if (!$this->options['client_secret']) {
                $this->options['client_secret'] = ELFINDER_ONEDRIVE_CLIENTSECRET;
            }

            if (empty($this->token->data->refresh_token)) {
                throw new \Exception(elFinder::ERROR_REAUTH_REQUIRE);
            } else {
                $refresh_token = $this->token->data->refresh_token;
                $initialToken = $this->_od_getInitialToken();
            }

            $url = self::TOKEN_URL;

            $curl = curl_init();

            curl_setopt_array($curl, array(
                // General options.
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_POST => true, // i am sending post data
                CURLOPT_POSTFIELDS => 'client_id=' . urlencode($this->options['client_id'])
                    . '&client_secret=' . urlencode($this->options['client_secret'])
                    . '&grant_type=refresh_token'
                    . '&refresh_token=' . urlencode($this->token->data->refresh_token),

                CURLOPT_URL => $url,
            ));

            $result = elFinder::curlExec($curl);

            $decoded = json_decode($result);

            if (!$decoded) {
                throw new \Exception('json_decode() failed');
            }

            if (empty($decoded->access_token)) {
                if ($this->aTokenFile) {
                    if (is_file($this->aTokenFile)) {
                        unlink($this->aTokenFile);
                    }
                }
                $err = property_exists($decoded, 'error')? ' ' . $decoded->error : '';
                $err .= property_exists($decoded, 'error_description')? ' ' . $decoded->error_description : '';
                throw new \Exception($err? $err : elFinder::ERROR_REAUTH_REQUIRE);
            }

            $token = (object)array(
                'expires' => time() + $decoded->expires_in - 30,
                'initialToken' => $initialToken,
                'data' => $decoded,
            );

            $this->token = $token;
            $json = json_encode($token);

            if (!empty($decoded->refresh_token)) {
                if (empty($this->options['netkey']) && $this->aTokenFile) {
                    file_put_contents($this->aTokenFile, json_encode($token));
                    $this->options['accessToken'] = $json;
                } else if (!empty($this->options['netkey'])) {
                    // OAuth2 refresh token can be used only once,
                    // so update it if it is the same as the token file
                    $aTokenFile = $this->_od_getATokenFile();
                    if ($aTokenFile && is_file($aTokenFile)) {
                        if ($_token = json_decode(file_get_contents($aTokenFile))) {
                            if ($_token->data->refresh_token === $refresh_token) {
                                file_put_contents($aTokenFile, $json);
                            }
                        }
                    }
                    $this->options['accessToken'] = $json;
                    // update session value
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'accessToken', $this->options['accessToken']);
                    $this->session->set('OneDriveTokens', $token);
                } else {
                    throw new \Exception(elFinder::ERROR_CREATING_TEMP_DIR);
                }
            }
        }

        return true;
    }

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _od_splitPath($path)
    {
        $path = trim($path, '/');
        $pid = '';
        if ($path === '') {
            $id = 'root';
            $parent = '';
        } else {
            $paths = explode('/', trim($path, '/'));
            $id = array_pop($paths);
            if ($paths) {
                $parent = '/' . implode('/', $paths);
                $pid = array_pop($paths);
            } else {
                $pid = 'root';
                $parent = '/';
            }
        }

        return array($pid, $id, $parent);
    }

    /**
     * Creates a base cURL object which is compatible with the OneDrive API.
     *
     * @return resource A compatible cURL object
     */
    protected function _od_prepareCurl($url = null)
    {
        $curl = curl_init($url);

        $defaultOptions = array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/json',
                'Authorization: Bearer ' . $this->token->data->access_token,
            ),
        );

        curl_setopt_array($curl, $defaultOptions);

        return $curl;
    }

    /**
     * Creates a base cURL object which is compatible with the OneDrive API.
     *
     * @param string $path The path of the API call (eg. me/skydrive)
     * @param bool   $contents
     *
     * @return resource A compatible cURL object
     * @throws elFinderAbortException
     */
    protected function _od_createCurl($path, $contents = false)
    {
        elFinder::checkAborted();
        $curl = $this->_od_prepareCurl($path);

        if ($contents) {
            $res = elFinder::curlExec($curl);
        } else {
            $result = json_decode(elFinder::curlExec($curl));
            if (isset($result->value)) {
                $res = $result->value;
                unset($result->value);
                $result = (array)$result;
                if (!empty($result['@odata.nextLink'])) {
                    $nextRes = $this->_od_createCurl($result['@odata.nextLink'], false);
                    if (is_array($nextRes)) {
                        $res = array_merge($res, $nextRes);
                    }
                }
            } else {
                $res = $result;
            }
        }

        return $res;
    }

    /**
     * Drive query and fetchAll.
     *
     * @param       $itemId
     * @param bool  $fetch_self
     * @param bool  $recursive
     * @param array $options
     *
     * @return object|array
     * @throws elFinderAbortException
     */
    protected function _od_query($itemId, $fetch_self = false, $recursive = false, $options = array())
    {
        $result = array();

        if (null === $itemId) {
            $itemId = 'root';
        }

        if ($fetch_self == true) {
            $path = $itemId;
        } else {
            $path = $itemId . '/children';
        }

        if (isset($options['query'])) {
            $path .= '?' . http_build_query($options['query']);
        }

        $url = self::API_URL . $path;

        $res = $this->_od_createCurl($url);
        if (!$fetch_self && $recursive && is_array($res)) {
            foreach ($res as $file) {
                $result[] = $file;
                if (!empty($file->folder)) {
                    $result = array_merge($result, $this->_od_query($file->id, false, true, $options));
                }
            }
        } else {
            $result = $res;
        }

        return isset($result->error) ? array() : $result;
    }

    /**
     * Parse line from onedrive metadata output and return file stat (array).
     *
     * @param object $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Dmitry Levashov
     **/
    protected function _od_parseRaw($raw)
    {
        $stat = array();

        $folder = isset($raw->folder) ? $raw->folder : null;

        $stat['rev'] = isset($raw->id) ? $raw->id : 'root';
        $stat['name'] = $raw->name;
        if (isset($raw->lastModifiedDateTime)) {
            $stat['ts'] = strtotime($raw->lastModifiedDateTime);
        }

        if ($folder) {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
            if (empty($folder->childCount)) {
                $stat['dirs'] = 0;
            } else {
                $stat['dirs'] = -1;
            }
        } else {
            if (isset($raw->file->mimeType)) {
                $stat['mime'] = $raw->file->mimeType;
            }
            $stat['size'] = (int)$raw->size;
            if (!$this->disabledGetUrl) {
                $stat['url'] = '1';
            }
            if (isset($raw->image) && $img = $raw->image) {
                isset($img->width) ? $stat['width'] = $img->width : $stat['width'] = 0;
                isset($img->height) ? $stat['height'] = $img->height : $stat['height'] = 0;
            }
            if (!empty($raw->thumbnails)) {
                if ($raw->thumbnails[0]->small->url) {
                    $stat['tmb'] = substr($raw->thumbnails[0]->small->url, 8); // remove "https://"
                }
            } elseif (!empty($raw->file->processingMetadata)) {
                $stat['tmb'] = '1';
            }
        }

        return $stat;
    }

    /**
     * Get raw data(onedrive metadata) from OneDrive.
     *
     * @param string $path
     *
     * @return array|object onedrive metadata
     */
    protected function _od_getFileRaw($path)
    {
        list(, $itemId) = $this->_od_splitPath($path);
        try {
            $res = $this->_od_query($itemId, true, false, $this->queryOptions);

            return $res;
        } catch (Exception $e) {
            return array();
        }
    }

    /**
     * Get thumbnail from OneDrive.com.
     *
     * @param string $path
     *
     * @return string | boolean
     */
    protected function _od_getThumbnail($path)
    {
        list(, $itemId) = $this->_od_splitPath($path);

        try {
            $url = self::API_URL . $itemId . '/thumbnails/0/medium/content';

            return $this->_od_createCurl($url, $contents = true);
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * Upload large files with an upload session.
     *
     * @param resource $fp       source file pointer
     * @param number   $size     total size
     * @param string   $name     item name
     * @param string   $itemId   item identifier
     * @param string   $parent   parent
     * @param string   $parentId parent identifier
     *
     * @return string The item path
     */
    protected function _od_uploadSession($fp, $size, $name, $itemId, $parent, $parentId)
    {
        try {
            $send = $this->_od_getChunkData($fp);
            if ($send === false) {
                throw new Exception('Data can not be acquired from the source.');
            }

            // create upload session
            if ($itemId) {
                $url = self::API_URL . $itemId . '/createUploadSession';
            } else {
                $url = self::API_URL . $parentId . ':/' . rawurlencode($name) . ':/createUploadSession';
            }
            $curl = $this->_od_prepareCurl($url);
            curl_setopt_array($curl, array(
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => '{}',
            ));
            $sess = json_decode(elFinder::curlExec($curl));

            if ($sess) {
                if (isset($sess->error)) {
                    throw new Exception($sess->error->message);
                }
                $next = strlen($send);
                $range = '0-' . ($next - 1) . '/' . $size;
            } else {
                throw new Exception('API response can not be obtained.');
            }

            $id = null;
            $retry = 0;
            while ($sess) {
                elFinder::extendTimeLimit();
                $putFp = tmpfile();
                fwrite($putFp, $send);
                rewind($putFp);
                $_size = strlen($send);
                $url = $sess->uploadUrl;
                $curl = curl_init();
                $options = array(
                    CURLOPT_URL => $url,
                    CURLOPT_PUT => true,
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_INFILE => $putFp,
                    CURLOPT_INFILESIZE => $_size,
                    CURLOPT_HTTPHEADER => array(
                        'Content-Length: ' . $_size,
                        'Content-Range: bytes ' . $range,
                    ),
                );
                curl_setopt_array($curl, $options);
                $sess = json_decode(elFinder::curlExec($curl));
                if ($sess) {
                    if (isset($sess->error)) {
                        throw new Exception($sess->error->message);
                    }
                    if (isset($sess->id)) {
                        $id = $sess->id;
                        break;
                    }
                    if (isset($sess->nextExpectedRanges)) {
                        list($_next) = explode('-', $sess->nextExpectedRanges[0]);
                        if ($next == $_next) {
                            $send = $this->_od_getChunkData($fp);
                            if ($send === false) {
                                throw new Exception('Data can not be acquired from the source.');
                            }
                            $next += strlen($send);
                            $range = $_next . '-' . ($next - 1) . '/' . $size;
                            $retry = 0;
                        } else {
                            if (++$retry > 3) {
                                throw new Exception('Retry limit exceeded with uploadSession API call.');
                            }
                        }
                        $sess->uploadUrl = $url;
                    }
                } else {
                    throw new Exception('API response can not be obtained.');
                }
            }

            if ($id) {
                return $this->_joinPath($parent, $id);
            } else {
                throw new Exception('An error occurred in the uploadSession API call.');
            }
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Get chunk data by file pointer to upload session.
     *
     * @param resource $fp source file pointer
     *
     * @return bool|string chunked data
     */
    protected function _od_getChunkData($fp)
    {
        static $chunkSize = null;
        if ($chunkSize === null) {
            $mem = elFinder::getIniBytes('memory_limit');
            if ($mem < 1) {
                $mem = 10485760; // 10 MiB
            } else {
                $mem -= memory_get_usage() - 1061548;
                $mem = min($mem, 10485760);
            }
            if ($mem > 327680) {
                $chunkSize = floor($mem / 327680) * 327680;
            } else {
                $chunkSize = $mem;
            }
        }
        if ($chunkSize < 8192) {
            return false;
        }

        $contents = '';
        while (!feof($fp) && strlen($contents) < $chunkSize) {
            $contents .= fread($fp, 8192);
        }

        return $contents;
    }

    /**
     * Get AccessToken file path
     *
     * @return string  ( description_of_the_return_value )
     */
    protected function _od_getATokenFile()
    {
        $tmp = $aTokenFile = '';
        if (!empty($this->token->data->refresh_token)) {
            if (!$this->tmp) {
                $tmp = elFinder::getStaticVar('commonTempPath');
                if (!$tmp) {
                    $tmp = $this->getTempPath();
                }
                $this->tmp = $tmp;
            }
            if ($tmp) {
                $aTokenFile = $tmp . DIRECTORY_SEPARATOR . $this->_od_getInitialToken() . '.otoken';
            }
        }
        return $aTokenFile;
    }

    /**
     * Get Initial Token (MD5 hash)
     *
     * @return string
     */
    protected function _od_getInitialToken()
    {
        return (empty($this->token->initialToken)? md5($this->options['client_id'] . (!empty($this->token->data->refresh_token)? $this->token->data->refresh_token : $this->token->data->access_token)) : $this->token->initialToken);
    }

    /*********************************************************************/
    /*                        OVERRIDE FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     * @author Raja Sharma updating for OneDrive
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_ONEDRIVE_CLIENTID')) {
            $options['client_id'] = ELFINDER_ONEDRIVE_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_ONEDRIVE_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_ONEDRIVE_CLIENTSECRET;
        }

        if (isset($options['pass']) && $options['pass'] === 'reauth') {
            $options['user'] = 'init';
            $options['pass'] = '';
            $this->session->remove('OneDriveTokens');
        }

        if (isset($options['id'])) {
            $this->session->set('nodeId', $options['id']);
        } elseif ($_id = $this->session->get('nodeId')) {
            $options['id'] = $_id;
            $this->session->set('nodeId', $_id);
        }

        if (!empty($options['tmpPath'])) {
            if ((is_dir($options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($options['tmpPath'])) {
                $this->tmp = $options['tmpPath'];
            }
        }

        try {
            if (empty($options['client_id']) || empty($options['client_secret'])) {
                return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code) {
                try {
                    if (!empty($options['id'])) {
                        // Obtain the token using the code received by the OneDrive API
                        $this->session->set('OneDriveTokens',
                            $this->_od_obtainAccessToken($options['client_id'], $options['client_secret'], $code, $options['id']));

                        $out = array(
                            'node' => $options['id'],
                            'json' => '{"protocol": "onedrive", "mode": "done", "reset": 1}',
                            'bind' => 'netmount',
                        );
                    } else {
                        $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                        $out = array(
                            'node' => $nodeid,
                            'json' => json_encode(array(
                                'protocol' => 'onedrive',
                                'host' => $nodeid,
                                'mode' => 'redirect',
                                'options' => array(
                                    'id' => $nodeid,
                                    'code'=> $code
                                )
                            )),
                            'bind' => 'netmount'
                        );
                    }
                    if (!$itpCare) {
                        return array('exit' => 'callback', 'out' => $out);
                    } else {
                        return array('exit' => true, 'body' => $out['json']);
                    }
                } catch (Exception $e) {
                    $out = array(
                        'node' => $options['id'],
                        'json' => json_encode(array('error' => elFinder::ERROR_ACCESS_DENIED . ' ' . $e->getMessage())),
                    );

                    return array('exit' => 'callback', 'out' => $out);
                }
            } elseif (!empty($_GET['error'])) {
                $out = array(
                    'node' => $options['id'],
                    'json' => json_encode(array('error' => elFinder::ERROR_ACCESS_DENIED)),
                );

                return array('exit' => 'callback', 'out' => $out);
            }

            if ($options['user'] === 'init') {
                $this->token = $this->session->get('OneDriveTokens');

                if ($this->token) {
                    try {
                        $this->_od_refreshToken();
                    } catch (Exception $e) {
                        $this->setError($e->getMessage());
                        $this->token = null;
                        $this->session->remove('OneDriveTokens');
                    }
                }

                if (empty($this->token)) {
                    $result = false;
                } else {
                    $path = $options['path'];
                    if ($path === '/') {
                        $path = 'root';
                    }
                    $result = $this->_od_query($path, false, false, array(
                        'query' => array(
                            'select' => 'id,name',
                            'filter' => 'folder ne null',
                        ),
                    ));
                }

                if ($result === false) {
                    try {
                        $this->session->set('OneDriveTokens', (object)array('token' => null));

                        $offline = '';
                        // Gets a log in URL with sufficient privileges from the OneDrive API
                        if (!empty($options['offline'])) {
                            $offline = ' offline_access';
                        }

                        $redirect_uri = elFinder::getConnectorUrl() . '/netmount/onedrive/' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                        $url = self::AUTH_URL
                            . '?client_id=' . urlencode($options['client_id'])
                            . '&scope=' . urlencode('files.readwrite.all' . $offline)
                            . '&response_type=code'
                            . '&redirect_uri=' . urlencode($redirect_uri);

                    } catch (Exception $e) {
                        return array('exit' => true, 'body' => '{msg:errAccess}');
                    }

                    $html = '<input id="elf-volumedriver-onedrive-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                            jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "onedrive", mode: "makebtn", url: "' . $url . '"});
                            </script>';

                    return array('exit' => true, 'body' => $html);
                } else {
                    $folders = [];

                    if ($result) {
                        foreach ($result as $res) {
                            $folders[$res->id] = $res->name;
                        }
                        natcasesort($folders);
                    }

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['root' => 'My OneDrive'] + $folders;
                    $folders = json_encode($folders);

                    $expires = empty($this->token->data->refresh_token) ? (int)$this->token->expires : 0;
                    $mnt2res = empty($this->token->data->refresh_token) ? '' : ', "mnt2res": 1';
                    $json = '{"protocol": "onedrive", "mode": "done", "folders": ' . $folders . ', "expires": ' . $expires . $mnt2res .'}';
                    $html = 'OneDrive.com';
                    $html .= '<script>
                            jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                            </script>';

                    return array('exit' => true, 'body' => $html);
                }
            }
        } catch (Exception $e) {
            return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
        }

        if ($_aToken = $this->session->get('OneDriveTokens')) {
            $options['accessToken'] = json_encode($_aToken);
            if ($this->options['path'] === 'root' || !$this->options['path']) {
                $this->options['path'] = '/';
            }
        } else {
            $this->session->remove('OneDriveTokens');
            $this->setError(elFinder::ERROR_NETMOUNT, $options['host'], implode(' ', $this->error()));

            return array('exit' => true, 'error' => $this->error());
        }

        $this->session->remove('nodeId');
        unset($options['user'], $options['pass'], $options['id']);

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `onedrive` & rm thumbs.
     *
     * @param array $options
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if (!$this->options['useApiThumbnail'] && ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->tmbPrefix . '*.png'))) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }

        return true;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && !empty($this->options['accessToken'])) {
            $res['accessToken'] = $this->options['accessToken'];
        }

        return $res;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn.
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function init()
    {
        if (!$this->options['accessToken']) {
            return $this->setError('Required option `accessToken` is undefined.');
        }

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        $error = false;
        try {
            $this->token = json_decode($this->options['accessToken']);
            if (!is_object($this->token)) {
                throw new Exception('Required option `accessToken` is invalid JSON.');
            }

            // make net mount key
            if (empty($this->options['netkey'])) {
                $this->netMountKey = $this->_od_getInitialToken();
            } else {
                $this->netMountKey = $this->options['netkey'];
            }

            if ($this->aTokenFile = $this->_od_getATokenFile()) {
                if (empty($this->options['netkey'])) {
                    if ($this->aTokenFile) {
                        if (is_file($this->aTokenFile)) {
                            $this->token = json_decode(file_get_contents($this->aTokenFile));
                            if (!is_object($this->token)) {
                                unlink($this->aTokenFile);
                                throw new Exception('Required option `accessToken` is invalid JSON.');
                            }
                        } else {
                            file_put_contents($this->aTokenFile, $this->token);
                        }
                    }
                } else if (is_file($this->aTokenFile)) {
                    // If the refresh token is the same as the permanent volume
                    $this->token = json_decode(file_get_contents($this->aTokenFile));
                }
            }

            if ($this->needOnline) {
                $this->_od_refreshToken();

                $this->expires = empty($this->token->data->refresh_token) ? (int)$this->token->expires : 0;
            }
        } catch (Exception $e) {
            $this->token = null;
            $error = true;
            $this->setError($e->getMessage());
        }

        if ($this->netMountKey) {
            $this->tmbPrefix = 'onedrive' . base_convert($this->netMountKey, 16, 32);
        }

        if ($error) {
            if (empty($this->options['netkey']) && $this->tmbPrefix) {
                // for delete thumbnail 
                $this->netunmount(null, null);
            }
            return false;
        }

        // normalize root path
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }

        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        $this->options['root'] = ($this->options['root'] == '')? 'OneDrive.com' : $this->options['root'];

        if (empty($this->options['alias'])) {
            if ($this->needOnline) {
                $this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] :
                    $this->_od_query(basename($this->options['path']), $fetch_self = true)->name . '@OneDrive';
                if (!empty($this->options['netkey'])) {
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
                }
            } else {
                $this->options['alias'] = $this->options['root'];
            }
        }

        $this->rootName = $this->options['alias'];

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        $this->queryOptions = array(
            'query' => array(
                'select' => 'id,name,lastModifiedDateTime,file,folder,size,image',
            ),
        );

        if ($this->options['useApiThumbnail']) {
            $this->options['tmbURL'] = 'https://';
            $this->options['tmbPath'] = '';
            $this->queryOptions['query']['expand'] = 'thumbnails(select=small)';
        }

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Dmitry (dio) Levashov
     **/
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     *
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    protected function isNameExists($path)
    {
        list($pid, $name) = $this->_od_splitPath($path);

        $raw = $this->_od_query($pid . '/children/' . rawurlencode($name), true);
        return $raw ? $this->_od_parseRaw($raw) : false;
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry Levashov
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        list(, $itemId) = $this->_od_splitPath($path);

        $res = $this->_od_query($itemId, false, false, $this->queryOptions);

        if ($res) {
            foreach ($res as $raw) {
                if ($stat = $this->_od_parseRaw($raw)) {
                    $itemPath = $this->_joinPath($path, $raw->id);
                    $stat = $this->updateCache($itemPath, $stat);
                    if (empty($stat['hidden'])) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $itemPath;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function copy($src, $dst, $name)
    {
        $itemId = '';
        if ($this->options['copyJoin']) {
            $test = $this->joinPathCE($dst, $name);
            if ($testStat = $this->isNameExists($test)) {
                $this->remove($test);
            }
        }

        if ($path = $this->_copy($src, $dst, $name)) {
            $this->added[] = $this->stat($path);
        } else {
            $this->setError(elFinder::ERROR_COPY, $this->_path($src));
        }

        return $path;
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if ($this->options['useApiThumbnail']) {
            if (func_num_args() > 2) {
                list(, , $count) = func_get_args();
            } else {
                $count = 0;
            }
            if ($count < 10) {
                if (isset($stat['tmb']) && $stat['tmb'] != '1') {
                    return $stat['tmb'];
                } else {
                    sleep(2);
                    elFinder::extendTimeLimit();
                    $this->clearcache();
                    $stat = $this->stat($path);

                    return $this->createTmb($path, $stat, ++$count);
                }
            }

            return false;
        }
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_od_getThumbnail($path)) {
            return false;
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $result = false;

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if (($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        return $this->tmbPrefix . $stat['rev'] . $stat['ts'] . '.png';
    }

    /**
     * Return content URL.
     *
     * @param string $hash    file hash
     * @param array  $options options
     *
     * @return string
     * @author Naoki Sawada
     **/
    public function getContentUrl($hash, $options = array())
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        $res = '';
        if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
            $path = $this->decode($hash);

            list(, $itemId) = $this->_od_splitPath($path);
            try {
                $url = self::API_URL . $itemId . '/createLink';
                $data = (object)array(
                    'type' => 'embed',
                    'scope' => 'anonymous',
                );
                $curl = $this->_od_prepareCurl($url);
                curl_setopt_array($curl, array(
                    CURLOPT_POST => true,
                    CURLOPT_POSTFIELDS => json_encode($data),
                ));

                $result = elFinder::curlExec($curl);
                if ($result) {
                    $result = json_decode($result);
                    if (isset($result->link)) {
                        list(, $res) = explode('?', $result->link->webUrl);
                        $res = 'https://onedrive.live.com/download.aspx?' . $res;
                    }
                }
            } catch (Exception $e) {
                $res = '';
            }
        }

        return $res;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        list(, , $dirname) = $this->_od_splitPath($path);

        return $dirname;
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_od_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        if ($dir === 'root') {
            $dir = '';
        }

        return $this->_normpath($dir . '/' . $name);
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (DIRECTORY_SEPARATOR !== '/') {
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }
        $path = '/' . ltrim($path, '/');

        return $path;
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . $this->_normpath(substr($path, strlen($this->root)));
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        if ($raw = $this->_od_getFileRaw($path)) {
            $stat = $this->_od_parseRaw($raw);
            if ($path === $this->root) {
                $stat['expires'] = $this->expires;
            }
            return $stat;
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _subdirs($path)
    {
        list(, $itemId) = $this->_od_splitPath($path);

        return (bool)$this->_od_query($itemId, false, false, array(
            'query' => array(
                'top' => 1,
                'select' => 'id',
                'filter' => 'folder ne null',
            ),
        ));
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }

        //$cache = $this->_od_getFileRaw($path);
        if (func_num_args() > 2) {
            $args = func_get_arg(2);
        } else {
            $args = array();
        }
        if (!empty($args['substitute'])) {
            $tmbSize = intval($args['substitute']);
        } else {
            $tmbSize = null;
        }
        list(, $itemId) = $this->_od_splitPath($path);
        $options = array(
            'query' => array(
                'select' => 'id,image',
            ),
        );
        if ($tmbSize) {
            $tmb = 'c' . $tmbSize . 'x' . $tmbSize;
            $options['query']['expand'] = 'thumbnails(select=' . $tmb . ')';
        }
        $raw = $this->_od_query($itemId, true, false, $options);

        if ($raw && property_exists($raw, 'image') && $img = $raw->image) {
            if (isset($img->width) && isset($img->height)) {
                $ret = array('dim' => $img->width . 'x' . $img->height);
                if ($tmbSize) {
                    $srcSize = explode('x', $ret['dim']);
                    if (min(($tmbSize / $srcSize[0]), ($tmbSize / $srcSize[1])) < 1) {
                        if (!empty($raw->thumbnails)) {
                            $tmbArr = (array)$raw->thumbnails[0];
                            if (!empty($tmbArr[$tmb]->url)) {
                                $ret['url'] = $tmbArr[$tmb]->url;
                            }
                        }
                    }
                }

                return $ret;
            }
        }

        $ret = '';
        if ($work = $this->getWorkFile($path)) {
            if ($size = @getimagesize($work)) {
                $cache['width'] = $size[0];
                $cache['height'] = $size[1];
                $ret = $size[0] . 'x' . $size[1];
            }
        }
        is_file($work) && @unlink($work);

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path  file path
     * @param bool   $write open file for writing
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            list(, $itemId) = $this->_od_splitPath($path);
            $data = array(
                'target' => self::API_URL . $itemId . '/content',
                'headers' => array('Authorization: Bearer ' . $this->token->data->access_token),
            );

            // to support range request
            if (func_num_args() > 2) {
                $opts = func_get_arg(2);
            } else {
                $opts = array();
            }
            if (!empty($opts['httpheaders'])) {
                $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
            }

            return elFinder::getStreamByUrl($data);
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $namePath = $this->_joinPath($path, $name);
        list($parentId) = $this->_od_splitPath($namePath);

        try {
            $properties = array(
                'name' => (string)$name,
                'folder' => (object)array(),
            );

            $data = (object)$properties;

            $url = self::API_URL . $parentId . '/children';

            $curl = $this->_od_prepareCurl($url);

            curl_setopt_array($curl, array(
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            //create the Folder in the Parent
            $result = elFinder::curlExec($curl);
            $folder = json_decode($result);

            return $this->_joinPath($path, $folder->id);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, array());
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $path = $this->_joinPath($targetDir, $name);

        try {
            //Set the Parent id
            list(, $parentId) = $this->_od_splitPath($targetDir);
            list(, $itemId) = $this->_od_splitPath($source);

            $url = self::API_URL . $itemId . '/copy';

            $properties = array(
                'name' => (string)$name,
            );
            if ($parentId === 'root') {
                $properties['parentReference'] = (object)array('path' => '/drive/root:');
            } else {
                $properties['parentReference'] = (object)array('id' => (string)$parentId);
            }
            $data = (object)$properties;
            $curl = $this->_od_prepareCurl($url);
            curl_setopt_array($curl, array(
                CURLOPT_POST => true,
                CURLOPT_HEADER => true,
                CURLOPT_HTTPHEADER => array(
                    'Content-Type: application/json',
                    'Authorization: Bearer ' . $this->token->data->access_token,
                    'Prefer: respond-async',
                ),
                CURLOPT_POSTFIELDS => json_encode($data),
            ));
            $result = elFinder::curlExec($curl);

            $res = new stdClass();
            if (preg_match('/Location: (.+)/', $result, $m)) {
                $monUrl = trim($m[1]);
                while ($res) {
                    usleep(200000);
                    $curl = curl_init($monUrl);
                    curl_setopt_array($curl, array(
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_HTTPHEADER => array(
                            'Content-Type: application/json',
                        ),
                    ));
                    $res = json_decode(elFinder::curlExec($curl));
                    if (isset($res->status)) {
                        if ($res->status === 'completed' || $res->status === 'failed') {
                            break;
                        }
                    } elseif (isset($res->error)) {
                        return $this->setError('OneDrive error: ' . $res->error->message);
                    }
                }
            }

            if ($res && isset($res->resourceId)) {
                if (isset($res->folder) && isset($this->sessionCache['subdirs'])) {
                    $this->sessionCache['subdirs'][$targetDir] = true;
                }

                return $this->_joinPath($targetDir, $res->resourceId);
            }

            return false;
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param        $targetDir
     * @param string $name   file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        try {
            list(, $targetParentId) = $this->_od_splitPath($targetDir);
            list($sourceParentId, $itemId, $srcParent) = $this->_od_splitPath($source);

            $properties = array(
                'name' => (string)$name,
            );
            if ($targetParentId !== $sourceParentId) {
                $properties['parentReference'] = (object)array('id' => (string)$targetParentId);
            }

            $url = self::API_URL . $itemId;
            $data = (object)$properties;

            $curl = $this->_od_prepareCurl($url);

            curl_setopt_array($curl, array(
                CURLOPT_CUSTOMREQUEST => 'PATCH',
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            $result = json_decode(elFinder::curlExec($curl));
            if ($result && isset($result->id)) {
                return $targetDir . '/' . $result->id;
            } else {
                return false;
            }
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return false;
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        $stat = $this->stat($path);
        try {
            list(, $itemId) = $this->_od_splitPath($path);

            $url = self::API_URL . $itemId;

            $curl = $this->_od_prepareCurl($url);
            curl_setopt_array($curl, array(
                CURLOPT_CUSTOMREQUEST => 'DELETE',
            ));

            //unlink or delete File or Folder in the Parent
            $result = elFinder::curlExec($curl);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->_unlink($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param          $path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     */
    protected function _save($fp, $path, $name, $stat)
    {
        $itemId = '';
        $size = null;
        if ($name === '') {
            list($parentId, $itemId, $parent) = $this->_od_splitPath($path);
        } else {
            if ($stat) {
                if (isset($stat['name'])) {
                    $name = $stat['name'];
                }
                if (isset($stat['rev']) && strpos($stat['hash'], $this->id) === 0) {
                    $itemId = $stat['rev'];
                }
            }
            list(, $parentId) = $this->_od_splitPath($path);
            $parent = $path;
        }

        if ($stat && isset($stat['size'])) {
            $size = $stat['size'];
        } else {
            $stats = fstat($fp);
            if (isset($stats[7])) {
                $size = $stats[7];
            }
        }

        if ($size > 4194304) {
            return $this->_od_uploadSession($fp, $size, $name, $itemId, $parent, $parentId);
        }

        try {
            // for unseekable file pointer
            if (!elFinder::isSeekableStream($fp)) {
                if ($tfp = tmpfile()) {
                    if (stream_copy_to_stream($fp, $tfp, $size? $size : -1) !== false) {
                        rewind($tfp);
                        $fp = $tfp;
                    }
                }
            }

            //Create or Update a file
            if ($itemId === '') {
                $url = self::API_URL . $parentId . ':/' . rawurlencode($name) . ':/content';
            } else {
                $url = self::API_URL . $itemId . '/content';
            }
            $curl = $this->_od_prepareCurl();

            $options = array(
                CURLOPT_URL => $url,
                CURLOPT_PUT => true,
                CURLOPT_INFILE => $fp,
            );
            // Size
            if ($size !== null) {
                $options[CURLOPT_INFILESIZE] = $size;
            }

            curl_setopt_array($curl, $options);

            //create or update File in the Target
            $file = json_decode(elFinder::curlExec($curl));

            return $this->_joinPath($parent, $file->id);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        $contents = '';

        try {
            list(, $itemId) = $this->_od_splitPath($path);
            $url = self::API_URL . $itemId . '/content';
            $contents = $this->_od_createCurl($url, $contents = true);
        } catch (Exception $e) {
            return $this->setError('OneDrive error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $res = $this->_save($fp, $path, '', array());
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return array();
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function _unpack($path, $arc)
    {
        die('Not yet implemented. (_unpack)');
        //return false;
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
lib/php/elFinderVolumeFTP.class.php000064400000162270147361034400013222 0ustar00<?php

/**
 * Simple elFinder driver for FTP
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeFTP extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'f';

    /**
     * FTP Connection Instance
     *
     * @var resource a FTP stream
     **/
    protected $connect = null;

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir
     *
     * @var string
     **/
    protected $tmpPath = '';

    /**
     * Last FTP error message
     *
     * @var string
     **/
    protected $ftpError = '';

    /**
     * FTP server output list as ftp on linux
     *
     * @var bool
     **/
    protected $ftpOsUnix;

    /**
     * FTP LIST command option
     *
     * @var string
     */
    protected $ftpListOption = '-al';


    /**
     * Is connected server Pure FTPd?
     *
     * @var bool
     */
    protected $isPureFtpd = false;

    /**
     * Is connected server with FTPS?
     *
     * @var bool
     */
    protected $isFTPS = false;

    /**
     * Tmp folder path
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * FTP command `MLST` support
     *
     * @var bool
     */
    private $MLSTsupprt = false;

    /**
     * Calling cacheDir() target path with non-MLST
     *
     * @var string
     */
    private $cacheDirTarget = '';

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    public function __construct()
    {
        $opts = array(
            'host' => 'localhost',
            'user' => '',
            'pass' => '',
            'port' => 21,
            'mode' => 'passive',
            'ssl' => false,
            'path' => '/',
            'timeout' => 20,
            'owner' => true,
            'tmbPath' => '',
            'tmpPath' => '',
            'separator' => '/',
            'checkSubfolders' => -1,
            'dirMode' => 0755,
            'fileMode' => 0644,
            'rootCssClass' => 'elfinder-navbar-root-ftp',
            'ftpListOption' => '-al',
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount()
     *
     * @param $options
     *
     * @return array volume root options
     * @author Naoki Sawada
     */
    public function netmountPrepare($options)
    {
        if (!empty($_REQUEST['encoding']) && iconv('UTF-8', $_REQUEST['encoding'], '') !== false) {
            $options['encoding'] = $_REQUEST['encoding'];
            if (!empty($_REQUEST['locale']) && setlocale(LC_ALL, $_REQUEST['locale'])) {
                setlocale(LC_ALL, elFinder::$locale);
                $options['locale'] = $_REQUEST['locale'];
            }
        }
        if (!empty($_REQUEST['FTPS'])) {
            $options['ssl'] = true;
        }
        $options['statOwner'] = true;
        $options['allowChmodReadOnly'] = true;
        $options['acceptedName'] = '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#';
        return $options;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function init()
    {
        if (!$this->options['host']
            || !$this->options['port']) {
            return $this->setError('Required options undefined.');
        }

        if (!$this->options['user']) {
            $this->options['user'] = 'anonymous';
            $this->options['pass'] = '';
        }
        if (!$this->options['path']) {
            $this->options['path'] = '/';
        }

        // make ney mount key
        $this->netMountKey = md5(join('-', array('ftp', $this->options['host'], $this->options['port'], $this->options['path'], $this->options['user'])));

        if (!function_exists('ftp_connect')) {
            return $this->setError('FTP extension not loaded.');
        }

        // remove protocol from host
        $scheme = parse_url($this->options['host'], PHP_URL_SCHEME);

        if ($scheme) {
            $this->options['host'] = substr($this->options['host'], strlen($scheme) + 3);
        }

        // normalize root path
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            $this->options['alias'] = $this->options['user'] . '@' . $this->options['host'];
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        }

        $this->rootName = $this->options['alias'];
        $this->options['separator'] = '/';

        if (is_null($this->options['syncChkAsTs'])) {
            $this->options['syncChkAsTs'] = true;
        }

        if (isset($this->options['ftpListOption'])) {
            $this->ftpListOption = $this->options['ftpListOption'];
        }

        return $this->needOnline? $this->connect() : true;

    }


    /**
     * Configure after successfull mount.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        parent::configure();

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'], 0755, true)) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }
        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }

        if (!$this->tmp) {
            $this->disabled[] = 'mkfile';
            $this->disabled[] = 'paste';
            $this->disabled[] = 'duplicate';
            $this->disabled[] = 'upload';
            $this->disabled[] = 'edit';
            $this->disabled[] = 'archive';
            $this->disabled[] = 'extract';
        }

        // echo $this->tmp;

    }

    /**
     * Connect to ftp server
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function connect()
    {
        $withSSL = empty($this->options['ssl']) ? '' : ' with SSL';
        if ($withSSL) {
            if (!function_exists('ftp_ssl_connect') || !($this->connect = ftp_ssl_connect($this->options['host'], $this->options['port'], $this->options['timeout']))) {
                return $this->setError('Unable to connect to FTP server ' . $this->options['host'] . $withSSL);
            }
            $this->isFTPS = true;
        } else {
            if (!($this->connect = ftp_connect($this->options['host'], $this->options['port'], $this->options['timeout']))) {
                return $this->setError('Unable to connect to FTP server ' . $this->options['host']);
            }
        }
        if (!ftp_login($this->connect, $this->options['user'], $this->options['pass'])) {
            $this->umount();
            return $this->setError('Unable to login into ' . $this->options['host'] . $withSSL);
        }

        // try switch utf8 mode
        if ($this->encoding) {
            ftp_raw($this->connect, 'OPTS UTF8 OFF');
        } else {
            ftp_raw($this->connect, 'OPTS UTF8 ON');
        }

        $help = ftp_raw($this->connect, 'HELP');
        $this->isPureFtpd = stripos(implode(' ', $help), 'Pure-FTPd') !== false;

        if (!$this->isPureFtpd) {
            // switch off extended passive mode - may be usefull for some servers
            // this command, for pure-ftpd, doesn't work and takes a timeout in some pure-ftpd versions
            ftp_raw($this->connect, 'epsv4 off');
        }
        // enter passive mode if required
        $pasv = ($this->options['mode'] == 'passive');
        if (!ftp_pasv($this->connect, $pasv)) {
            if ($pasv) {
                $this->options['mode'] = 'active';
            }
        }

        // enter root folder
        if (!ftp_chdir($this->connect, $this->root)
            || $this->root != ftp_pwd($this->connect)) {
            $this->umount();
            return $this->setError('Unable to open root folder.');
        }

        // check for MLST support
        $features = ftp_raw($this->connect, 'FEAT');
        if (!is_array($features)) {
            $this->umount();
            return $this->setError('Server does not support command FEAT.');
        }

        foreach ($features as $feat) {
            if (strpos(trim($feat), 'MLST') === 0) {
                $this->MLSTsupprt = true;
                break;
            }
        }

        return true;
    }

    /**
     * Call ftp_rawlist with option prefix
     *
     * @param string $path
     *
     * @return array
     */
    protected function ftpRawList($path)
    {
        if ($this->isPureFtpd) {
            $path = str_replace(' ', '\ ', $path);
        }
        if ($this->ftpListOption) {
            $path = $this->ftpListOption . ' ' . $path;
        }
        $res = ftp_rawlist($this->connect, $path);
        if ($res === false) {
            $res = array();
        }
        return $res;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
        $this->connect && ftp_close($this->connect);
    }


    /**
     * Parse line from ftp_rawlist() output and return file stat (array)
     *
     * @param  string $raw line from ftp_rawlist() output
     * @param         $base
     * @param bool    $nameOnly
     *
     * @return array
     * @author Dmitry Levashov
     */
    protected function parseRaw($raw, $base, $nameOnly = false)
    {
        static $now;
        static $lastyear;

        if (!$now) {
            $now = time();
            $lastyear = date('Y') - 1;
        }

        $info = preg_split("/\s+/", $raw, 8);
        if (isset($info[7])) {
        	list($info[7], $info[8]) = explode(' ', $info[7], 2);
        }
        $stat = array();

        if (!isset($this->ftpOsUnix)) {
            $this->ftpOsUnix = !preg_match('/\d/', substr($info[0], 0, 1));
        }
        if (!$this->ftpOsUnix) {
            $info = $this->normalizeRawWindows($raw);
        }

        if (count($info) < 9 || $info[8] == '.' || $info[8] == '..') {
            return false;
        }

        $name = $info[8];

        if (preg_match('|(.+)\-\>(.+)|', $name, $m)) {
            $name = trim($m[1]);
            // check recursive processing
            if ($this->cacheDirTarget && $this->_joinPath($base, $name) !== $this->cacheDirTarget) {
                return array();
            }
            if (!$nameOnly) {
                $target = trim($m[2]);
                if (substr($target, 0, 1) !== $this->separator) {
                    $target = $this->getFullPath($target, $base);
                }
                $target = $this->_normpath($target);
                $stat['name'] = $name;
                $stat['target'] = $target;
                return $stat;
            }
        }

        if ($nameOnly) {
            return array('name' => $name);
        }

        if (is_numeric($info[5]) && !$info[6] && !$info[7]) {
            // by normalizeRawWindows()
            $stat['ts'] = $info[5];
        } else {
            $stat['ts'] = strtotime($info[5] . ' ' . $info[6] . ' ' . $info[7]);
            if ($stat['ts'] && $stat['ts'] > $now && strpos($info[7], ':') !== false) {
                $stat['ts'] = strtotime($info[5] . ' ' . $info[6] . ' ' . $lastyear . ' ' . $info[7]);
            }
            if (empty($stat['ts'])) {
                $stat['ts'] = strtotime($info[6] . ' ' . $info[5] . ' ' . $info[7]);
                if ($stat['ts'] && $stat['ts'] > $now && strpos($info[7], ':') !== false) {
                    $stat['ts'] = strtotime($info[6] . ' ' . $info[5] . ' ' . $lastyear . ' ' . $info[7]);
                }
            }
        }

        if ($this->options['statOwner']) {
            $stat['owner'] = $info[2];
            $stat['group'] = $info[3];
            $stat['perm'] = substr($info[0], 1);
            //
            // if not exists owner in LS ftp ==>                    isowner = true
            // if is defined as option : 'owner' => true            isowner = true
            //
            // if exist owner in LS ftp  and 'owner' => False       isowner =   result of    owner(file) == user(logged with ftp)
            //
            $stat['isowner'] = isset($stat['owner']) ? ($this->options['owner'] ? true : ($stat['owner'] == $this->options['user'])) : true;
        }

        $owner_computed = isset($stat['isowner']) ? $stat['isowner'] : $this->options['owner'];
        $perm = $this->parsePermissions($info[0], $owner_computed);
        $stat['name'] = $name;
        $stat['mime'] = substr(strtolower($info[0]), 0, 1) == 'd' ? 'directory' : $this->mimetype($stat['name'], true);
        $stat['size'] = $stat['mime'] == 'directory' ? 0 : $info[4];
        $stat['read'] = $perm['read'];
        $stat['write'] = $perm['write'];

        return $stat;
    }

    /**
     * Normalize MS-DOS style FTP LIST Raw line
     *
     * @param  string $raw line from FTP LIST (MS-DOS style)
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function normalizeRawWindows($raw)
    {
        $info = array_pad(array(), 9, '');
        $item = preg_replace('#\s+#', ' ', trim($raw), 3);
        list($date, $time, $size, $name) = explode(' ', $item, 4);
        $format = strlen($date) === 8 ? 'm-d-yH:iA' : 'Y-m-dH:i';
        $dateObj = DateTime::createFromFormat($format, $date . $time);
        $info[5] = strtotime($dateObj->format('Y-m-d H:i'));
        $info[8] = $name;
        if ($size === '<DIR>') {
            $info[4] = 0;
            $info[0] = 'drwxr-xr-x';
        } else {
            $info[4] = (int)$size;
            $info[0] = '-rw-r--r--';
        }
        return $info;
    }

    /**
     * Parse permissions string. Return array(read => true/false, write => true/false)
     *
     * @param  string $perm                        permissions string   'rwx' + 'rwx' + 'rwx'
     *                                             ^       ^       ^
     *                                             |       |       +->   others
     *                                             |       +--------->   group
     *                                             +----------------->   owner
     *                                             The isowner parameter is computed by the caller.
     *                                             If the owner parameter in the options is true, the user is the actual owner of all objects even if che user used in the ftp Login
     *                                             is different from the file owner id.
     *                                             If the owner parameter is false to understand if the user is the file owner we compare the ftp user with the file owner id.
     * @param Boolean $isowner                     . Tell if the current user is the owner of the object.
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author Ugo Vierucci
     */
    protected function parsePermissions($perm, $isowner = true)
    {
        $res = array();
        $parts = array();
        for ($i = 0, $l = strlen($perm); $i < $l; $i++) {
            $parts[] = substr($perm, $i, 1);
        }

        $read = ($isowner && $parts[1] == 'r') || $parts[4] == 'r' || $parts[7] == 'r';

        return array(
            'read' => $parts[0] == 'd' ? $read && (($isowner && $parts[3] == 'x') || $parts[6] == 'x' || $parts[9] == 'x') : $read,
            'write' => ($isowner && $parts[2] == 'w') || $parts[5] == 'w' || $parts[8] == 'w'
        );
    }

    /**
     * Cache dir contents
     *
     * @param  string $path dir path
     *
     * @return void
     * @author Dmitry Levashov
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        $list = array();
        $encPath = $this->convEncIn($path);
        foreach ($this->ftpRawList($encPath) as $raw) {
            if (($stat = $this->parseRaw($raw, $encPath))) {
                $list[] = $stat;
            }
        }
        $list = $this->convEncOut($list);
        $prefix = ($path === $this->separator) ? $this->separator : $path . $this->separator;
        $targets = array();
        foreach ($list as $stat) {
            $p = $prefix . $stat['name'];
            if (isset($stat['target'])) {
                // stat later
                $targets[$stat['name']] = $stat['target'];
            } else {
                $stat = $this->updateCache($p, $stat);
                if (empty($stat['hidden'])) {
                    if (!$hasDir && $stat['mime'] === 'directory') {
                        $hasDir = true;
                    }
                    $this->dirsCache[$path][] = $p;
                }
            }
        }
        // stat link targets
        foreach ($targets as $name => $target) {
            $stat = array();
            $stat['name'] = $name;
            $p = $prefix . $name;
            $cacheDirTarget = $this->cacheDirTarget;
            $this->cacheDirTarget = $this->convEncIn($target, true);
            if ($tstat = $this->stat($target)) {
                $stat['size'] = $tstat['size'];
                $stat['alias'] = $target;
                $stat['thash'] = $tstat['hash'];
                $stat['mime'] = $tstat['mime'];
                $stat['read'] = $tstat['read'];
                $stat['write'] = $tstat['write'];

                if (isset($tstat['ts'])) {
                    $stat['ts'] = $tstat['ts'];
                }
                if (isset($tstat['owner'])) {
                    $stat['owner'] = $tstat['owner'];
                }
                if (isset($tstat['group'])) {
                    $stat['group'] = $tstat['group'];
                }
                if (isset($tstat['perm'])) {
                    $stat['perm'] = $tstat['perm'];
                }
                if (isset($tstat['isowner'])) {
                    $stat['isowner'] = $tstat['isowner'];
                }
            } else {

                $stat['mime'] = 'symlink-broken';
                $stat['read'] = false;
                $stat['write'] = false;
                $stat['size'] = 0;

            }
            $this->cacheDirTarget = $cacheDirTarget;
            $stat = $this->updateCache($p, $stat);
            if (empty($stat['hidden'])) {
                if (!$hasDir && $stat['mime'] === 'directory') {
                    $hasDir = true;
                }
                $this->dirsCache[$path][] = $p;
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }
    }

    /**
     * Return ftp transfer mode for file
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function ftpMode($path)
    {
        return strpos($this->mimetype($path), 'text/') === 0 ? FTP_ASCII : FTP_BINARY;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _dirname($path)
    {
        $parts = explode($this->separator, trim($path, $this->separator));
        array_pop($parts);
        return $this->separator . join($this->separator, $parts);
    }

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _basename($path)
    {
        $parts = explode($this->separator, trim($path, $this->separator));
        return array_pop($parts);
    }

    /**
     * Join dir name and file name and retur full path
     *
     * @param  string $dir
     * @param  string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        return rtrim($dir, $this->separator) . $this->separator . $name;
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python
     *
     * @param  string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (empty($path)) {
            $path = '.';
        }
        // path must be start with /
        $path = preg_replace('|^\.\/?|', $this->separator, $path);
        $path = preg_replace('/^([^\/])/', "/$1", $path);

        if ($path[0] === $this->separator) {
            $initial_slashes = true;
        } else {
            $initial_slashes = false;
        }

        if (($initial_slashes)
            && (strpos($path, '//') === 0)
            && (strpos($path, '///') === false)) {
            $initial_slashes = 2;
        }

        $initial_slashes = (int)$initial_slashes;

        $comps = explode($this->separator, $path);
        $new_comps = array();
        foreach ($comps as $comp) {
            if (in_array($comp, array('', '.'))) {
                continue;
            }

            if (($comp != '..')
                || (!$initial_slashes && !$new_comps)
                || ($new_comps && (end($new_comps) == '..'))) {
                array_push($new_comps, $comp);
            } elseif ($new_comps) {
                array_pop($new_comps);
            }
        }
        $comps = $new_comps;
        $path = implode($this->separator, $comps);
        if ($initial_slashes) {
            $path = str_repeat($this->separator, $initial_slashes) . $path;
        }

        return $path ? $path : '.';
    }

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        if ($path === $this->root) {
            return '';
        } else {
            if (strpos($path, $this->root) === 0) {
                return ltrim(substr($path, strlen($this->root)), $this->separator);
            } else {
                // for link
                return $path;
            }
        }
    }

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        if ($path === $this->separator) {
            return $this->root;
        } else {
            if ($path[0] === $this->separator) {
                // for link
                return $path;
            } else {
                return $this->_joinPath($this->root, $path);
            }
        }
    }

    /**
     * Return fake path started from root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . ($path == $this->root ? '' : $this->separator . $this->_relpath($path));
    }

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, rtrim($parent, $this->separator) . $this->separator) === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $outPath = $this->convEncOut($path);
        if (isset($this->cache[$outPath])) {
            return $this->convEncIn($this->cache[$outPath]);
        } else {
            $this->convEncIn();
        }
        if (!$this->MLSTsupprt) {
            if ($path === $this->root) {
                $res = array(
                    'name' => $this->root,
                    'mime' => 'directory',
                    'dirs' => -1
                );
                if ($this->needOnline && (($this->ARGS['cmd'] === 'open' && $this->ARGS['target'] === $this->encode($this->root)) || $this->isMyReload())) {
                    $check = array(
                        'ts' => true,
                        'dirs' => true,
                    );
                    $ts = 0;
                    foreach ($this->ftpRawList($path) as $str) {
                        $info = preg_split('/\s+/', $str, 9);
                        if ($info[8] === '.') {
                            $info[8] = 'root';
                            if ($stat = $this->parseRaw(join(' ', $info), $path)) {
                                unset($stat['name']);
                                $res = array_merge($res, $stat);
                                if ($res['ts']) {
                                    $ts = 0;
                                    unset($check['ts']);
                                }
                            }
                        }
                        if ($check && ($stat = $this->parseRaw($str, $path))) {
                            if (isset($stat['ts']) && !empty($stat['ts'])) {
                                $ts = max($ts, $stat['ts']);
                            }
                            if (isset($stat['dirs']) && $stat['mime'] === 'directory') {
                                $res['dirs'] = 1;
                                unset($stat['dirs']);
                            }
                            if (!$check) {
                                break;
                            }
                        }
                    }
                    if ($ts) {
                        $res['ts'] = $ts;
                    }
                    $this->cache[$outPath] = $res;
                }
                return $res;
            }

            $pPath = $this->_dirname($path);
            if ($this->_inPath($pPath, $this->root)) {
                $outPPpath = $this->convEncOut($pPath);
                if (!isset($this->dirsCache[$outPPpath])) {
                    $parentSubdirs = null;
                    if (isset($this->sessionCache['subdirs']) && isset($this->sessionCache['subdirs'][$outPPpath])) {
                        $parentSubdirs = $this->sessionCache['subdirs'][$outPPpath];
                    }
                    $this->cacheDir($outPPpath);
                    if ($parentSubdirs) {
                        $this->sessionCache['subdirs'][$outPPpath] = $parentSubdirs;
                    }
                }
            }

            $stat = $this->convEncIn(isset($this->cache[$outPath]) ? $this->cache[$outPath] : array());
            if (!$this->mounted) {
                // dispose incomplete cache made by calling `stat` by 'startPath' option
                $this->cache = array();
            }
            return $stat;
        }
        $raw = ftp_raw($this->connect, 'MLST ' . $path);
        if (is_array($raw) && count($raw) > 1 && substr(trim($raw[0]), 0, 1) == 2) {
            $parts = explode(';', trim($raw[1]));
            array_pop($parts);
            $parts = array_map('strtolower', $parts);
            $stat = array();
            $mode = '';
            foreach ($parts as $part) {

                list($key, $val) = explode('=', $part, 2);

                switch ($key) {
                    case 'type':
                        if (strpos($val, 'dir') !== false) {
                            $stat['mime'] = 'directory';
                        } else if (strpos($val, 'link') !== false) {
                            $stat['mime'] = 'symlink';
                            break(2);
                        } else {
                            $stat['mime'] = $this->mimetype($path);
                        }
                        break;

                    case 'size':
                        $stat['size'] = $val;
                        break;

                    case 'modify':
                        $ts = mktime(intval(substr($val, 8, 2)), intval(substr($val, 10, 2)), intval(substr($val, 12, 2)), intval(substr($val, 4, 2)), intval(substr($val, 6, 2)), substr($val, 0, 4));
                        $stat['ts'] = $ts;
                        break;

                    case 'unix.mode':
                        $mode = strval($val);
                        break;

                    case 'unix.uid':
                        $stat['owner'] = $val;
                        break;

                    case 'unix.gid':
                        $stat['group'] = $val;
                        break;

                    case 'perm':
                        $val = strtolower($val);
                        $stat['read'] = (int)preg_match('/e|l|r/', $val);
                        $stat['write'] = (int)preg_match('/w|m|c/', $val);
                        if (!preg_match('/f|d/', $val)) {
                            $stat['locked'] = 1;
                        }
                        break;
                }
            }

            if (empty($stat['mime'])) {
                return array();
            }

            // do not use MLST to get stat of symlink
            if ($stat['mime'] === 'symlink') {
                $this->MLSTsupprt = false;
                $res = $this->_stat($path);
                $this->MLSTsupprt = true;
                return $res;
            }

            if ($stat['mime'] === 'directory') {
                $stat['size'] = 0;
            }

            if ($mode) {
                $stat['perm'] = '';
                if ($mode[0] === '0') {
                    $mode = substr($mode, 1);
                }

                $perm = array();
                for ($i = 0; $i <= 2; $i++) {
                    $perm[$i] = array(false, false, false);
                    $n = isset($mode[$i]) ? $mode[$i] : 0;

                    if ($n - 4 >= 0) {
                        $perm[$i][0] = true;
                        $n = $n - 4;
                        $stat['perm'] .= 'r';
                    } else {
                        $stat['perm'] .= '-';
                    }

                    if ($n - 2 >= 0) {
                        $perm[$i][1] = true;
                        $n = $n - 2;
                        $stat['perm'] .= 'w';
                    } else {
                        $stat['perm'] .= '-';
                    }

                    if ($n - 1 == 0) {
                        $perm[$i][2] = true;
                        $stat['perm'] .= 'x';
                    } else {
                        $stat['perm'] .= '-';
                    }
                }

                $stat['perm'] = trim($stat['perm']);
                //
                // if not exists owner in LS ftp ==>                    isowner = true
                // if is defined as option : 'owner' => true            isowner = true
                //
                // if exist owner in LS ftp  and 'owner' => False        isowner =   result of    owner(file) == user(logged with ftp)

                $owner_computed = isset($stat['owner']) ? ($this->options['owner'] ? true : ($stat['owner'] == $this->options['user'])) : true;

                $read = ($owner_computed && $perm[0][0]) || $perm[1][0] || $perm[2][0];

                $stat['read'] = $stat['mime'] == 'directory' ? $read && (($owner_computed && $perm[0][2]) || $perm[1][2] || $perm[2][2]) : $read;
                $stat['write'] = ($owner_computed && $perm[0][1]) || $perm[1][1] || $perm[2][1];

                if ($this->options['statOwner']) {
                    $stat['isowner'] = $owner_computed;
                } else {
                    unset($stat['owner'], $stat['group'], $stat['perm']);
                }
            }

            return $stat;

        }

        return array();
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {

        foreach ($this->ftpRawList($path) as $str) {
            $info = preg_split('/\s+/', $str, 9);
            if (!isset($this->ftpOsUnix)) {
                $this->ftpOsUnix = !preg_match('/\d/', substr($info[0], 0, 1));
            }
            if (!$this->ftpOsUnix) {
                $info = $this->normalizeRawWindows($str);
            }
            $name = isset($info[8]) ? trim($info[8]) : '';
            if ($name && $name !== '.' && $name !== '..' && substr(strtolower($info[0]), 0, 1) === 'd') {
                return true;
            }
        }
        return false;
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        $ret = false;
        if ($imgsize = $this->getImageSize($path, $mime)) {
            $ret = array('dim' => $imgsize['dimensions']);
            if (!empty($imgsize['url'])) {
                $ret['url'] = $imgsize['url'];
            }
        }
        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    protected function _scandir($path)
    {
        $files = array();

        foreach ($this->ftpRawList($path) as $str) {
            if (($stat = $this->parseRaw($str, $path, true))) {
                $files[] = $this->_joinPath($path, $stat['name']);
            }
        }

        return $files;
    }

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @throws elFinderAbortException
     * @internal param bool $write open file for writing
     * @author   Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        // try ftp stream wrapper
        if ($this->options['mode'] === 'passive' && ini_get('allow_url_fopen')) {
            $url = ($this->isFTPS ? 'ftps' : 'ftp') . '://' . $this->options['user'] . ':' . $this->options['pass'] . '@' . $this->options['host'] . ':' . $this->options['port'] . $path;
            if (strtolower($mode[0]) === 'w') {
                $context = stream_context_create(array('ftp' => array('overwrite' => true)));
                $fp = fopen($url, $mode, false, $context);
            } else {
                $fp = fopen($url, $mode);
            }
            if ($fp) {
                return $fp;
            }
        }

        if ($this->tmp) {
            $local = $this->getTempFile($path);
            $fp = fopen($local, 'wb');
            $ret = ftp_nb_fget($this->connect, $fp, $path, FTP_BINARY);
            while ($ret === FTP_MOREDATA) {
                elFinder::extendTimeLimit();
                $ret = ftp_nb_continue($this->connect);
            }
            if ($ret === FTP_FINISHED) {
                fclose($fp);
                $fp = fopen($local, $mode);
                return $fp;
            }
            fclose($fp);
            is_file($local) && unlink($local);
        }

        return false;
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $name);
        if (ftp_mkdir($this->connect, $path) === false) {
            return false;
        }

        $this->options['dirMode'] && ftp_chmod($this->connect, $this->options['dirMode'], $path);
        return $path;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        if ($this->tmp) {
            $path = $this->_joinPath($path, $name);
            $local = $this->getTempFile();
            $res = touch($local) && ftp_put($this->connect, $path, $local, FTP_ASCII);
            unlink($local);
            return $res ? $path : false;
        }
        return false;
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param  string $target link target
     * @param  string $path   symlink path
     * @param string  $name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $res = false;

        if ($this->tmp) {
            $local = $this->getTempFile();
            $target = $this->_joinPath($targetDir, $name);

            if (ftp_get($this->connect, $local, $source, FTP_BINARY)
                && ftp_put($this->connect, $target, $local, $this->ftpMode($target))) {
                $res = $target;
            }
            unlink($local);
        }

        return $res;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $target = $this->_joinPath($targetDir, $name);
        return ftp_rename($this->connect, $source, $target) ? $target : false;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return ftp_delete($this->connect, $path);
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return ftp_rmdir($this->connect, $path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        $path = $this->_joinPath($dir, $name);
        return ftp_fput($this->connect, $path, $fp, $this->ftpMode($path))
            ? $path
            : false;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _getContents($path)
    {
        $contents = '';
        if (($fp = $this->_fopen($path))) {
            while (!feof($fp)) {
                $contents .= fread($fp, 8192);
            }
            $this->_fclose($fp, $path);
            return $contents;
        }
        return false;
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($this->tmp) {
            $local = $this->getTempFile();

            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                $file = $this->stat($this->convEncOut($path, false));
                if (!empty($file['thash'])) {
                    $path = $this->decode($file['thash']);
                }
                clearstatcache();
                $res = ftp_fput($this->connect, $path, $fp, $this->ftpMode($path));
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers
     *
     * @return void
     * @throws elFinderAbortException
     */
    protected function _checkArchivers()
    {
        $this->archivers = $this->getArchivers();
        return;
    }

    /**
     * chmod availability
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        $modeOct = is_string($mode) ? octdec($mode) : octdec(sprintf("%04o", $mode));
        return ftp_chmod($this->connect, $modeOct, $path);
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {
        $dir = $this->tempDir();
        if (!$dir) {
            return false;
        }

        $basename = $this->_basename($path);
        $localPath = $dir . DIRECTORY_SEPARATOR . $basename;

        if (!ftp_get($this->connect, $localPath, $path, FTP_BINARY)) {
            //cleanup
            $this->rmdirRecursive($dir);
            return false;
        }

        $this->unpackArchive($localPath, $arc);

        $this->archiveSize = 0;

        // find symlinks and check extracted items
        $checkRes = $this->checkExtractItems($dir);
        if ($checkRes['symlinks']) {
            $this->rmdirRecursive($dir);
            return $this->setError(array_merge($this->error, array(elFinder::ERROR_ARC_SYMLINKS)));
        }
        $this->archiveSize = $checkRes['totalSize'];
        if ($checkRes['rmNames']) {
            foreach ($checkRes['rmNames'] as $name) {
                $this->addError(elFinder::ERROR_SAVE, $name);
            }
        }

        $filesToProcess = self::listFilesInDirectory($dir, true);

        // no files - extract error ?
        if (empty($filesToProcess)) {
            $this->rmdirRecursive($dir);
            return false;
        }

        // check max files size
        if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $this->archiveSize) {
            $this->rmdirRecursive($dir);
            return $this->setError(elFinder::ERROR_ARC_MAXSIZE);
        }

        $extractTo = $this->extractToNewdir; // 'auto', ture or false

        // archive contains one item - extract in archive dir
        $name = '';
        $src = $dir . DIRECTORY_SEPARATOR . $filesToProcess[0];
        if (($extractTo === 'auto' || !$extractTo) && count($filesToProcess) === 1 && is_file($src)) {
            $name = $filesToProcess[0];
        } else if ($extractTo === 'auto' || $extractTo) {
            // for several files - create new directory
            // create unique name for directory
            $src = $dir;
            $splits = elFinder::splitFileExtention(basename($path));
            $name = $splits[0];
            $test = $this->_joinPath(dirname($path), $name);
            if ($this->stat($test)) {
                $name = $this->uniqueName(dirname($path), $name, '-', false);
            }
        }

        if ($name !== '' && is_file($src)) {
            $result = $this->_joinPath(dirname($path), $name);

            if (!ftp_put($this->connect, $result, $src, FTP_BINARY)) {
                $this->rmdirRecursive($dir);
                return false;
            }
        } else {
            $dstDir = $this->_dirname($path);
            $result = array();
            if (is_dir($src) && $name) {
                $target = $this->_joinPath($dstDir, $name);
                $_stat = $this->_stat($target);
                if ($_stat) {
                    if (!$this->options['copyJoin']) {
                        if ($_stat['mime'] === 'directory') {
                            $this->delTree($target);
                        } else {
                            $this->_unlink($target);
                        }
                        $_stat = false;
                    } else {
                        $dstDir = $target;
                    }
                }
                if (!$_stat && (!$dstDir = $this->_mkdir($dstDir, $name))) {
                    $this->rmdirRecursive($dir);
                    return false;
                }
                $result[] = $dstDir;
            }
            foreach ($filesToProcess as $name) {
                $name = rtrim($name, DIRECTORY_SEPARATOR);
                $src = $dir . DIRECTORY_SEPARATOR . $name;
                if (is_dir($src)) {
                    $p = dirname($name);
                    if ($p === '.') {
                        $p = '';
                    }
                    $name = basename($name);
                    $target = $this->_joinPath($this->_joinPath($dstDir, $p), $name);
                    $_stat = $this->_stat($target);
                    if ($_stat) {
                        if (!$this->options['copyJoin']) {
                            if ($_stat['mime'] === 'directory') {
                                $this->delTree($target);
                            } else {
                                $this->_unlink($target);
                            }
                            $_stat = false;
                        }
                    }
                    if (!$_stat && (!$target = $this->_mkdir($this->_joinPath($dstDir, $p), $name))) {
                        $this->rmdirRecursive($dir);
                        return false;
                    }
                } else {
                    $target = $this->_joinPath($dstDir, $name);
                    if (!ftp_put($this->connect, $target, $src, FTP_BINARY)) {
                        $this->rmdirRecursive($dir);
                        return false;
                    }
                }
                $result[] = $target;
            }
            if (!$result) {
                $this->rmdirRecursive($dir);
                return false;
            }
        }

        is_dir($dir) && $this->rmdirRecursive($dir);

        $this->clearcache();
        return $result ? $result : false;
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _archive($dir, $files, $name, $arc)
    {
        // get current directory
        $cwd = getcwd();

        $tmpDir = $this->tempDir();
        if (!$tmpDir) {
            return false;
        }

        //download data
        if (!$this->ftp_download_files($dir, $files, $tmpDir)) {
            //cleanup
            $this->rmdirRecursive($tmpDir);
            return false;
        }

        $remoteArchiveFile = false;
        if ($path = $this->makeArchive($tmpDir, $files, $name, $arc)) {
            $remoteArchiveFile = $this->_joinPath($dir, $name);
            if (!ftp_put($this->connect, $remoteArchiveFile, $path, FTP_BINARY)) {
                $remoteArchiveFile = false;
            }
        }

        //cleanup
        if (!$this->rmdirRecursive($tmpDir)) {
            return false;
        }

        return $remoteArchiveFile;
    }

    /**
     * Create writable temporary directory and return path to it.
     *
     * @return string path to the new temporary directory or false in case of error.
     */
    private function tempDir()
    {
        $tempPath = tempnam($this->tmp, 'elFinder');
        if (!$tempPath) {
            $this->setError(elFinder::ERROR_CREATING_TEMP_DIR, $this->tmp);
            return false;
        }
        $success = unlink($tempPath);
        if (!$success) {
            $this->setError(elFinder::ERROR_CREATING_TEMP_DIR, $this->tmp);
            return false;
        }
        $success = mkdir($tempPath, 0700, true);
        if (!$success) {
            $this->setError(elFinder::ERROR_CREATING_TEMP_DIR, $this->tmp);
            return false;
        }
        return $tempPath;
    }

    /**
     * Gets an array of absolute remote FTP paths of files and
     * folders in $remote_directory omitting symbolic links.
     *
     * @param $remote_directory string remote FTP path to scan for file and folders recursively
     * @param $targets          array  Array of target item. `null` is to get all of items
     *
     * @return array of elements each of which is an array of two elements:
     * <ul>
     * <li>$item['path'] - absolute remote FTP path</li>
     * <li>$item['type'] - either 'f' for file or 'd' for directory</li>
     * </ul>
     */
    protected function ftp_scan_dir($remote_directory, $targets = null)
    {
        $buff = $this->ftpRawList($remote_directory);
        $items = array();
        if ($targets && is_array($targets)) {
            $targets = array_flip($targets);
        } else {
            $targets = false;
        }
        foreach ($buff as $str) {
            $info = preg_split("/\s+/", $str, 9);
            if (!isset($this->ftpOsUnix)) {
                $this->ftpOsUnix = !preg_match('/\d/', substr($info[0], 0, 1));
            }
            if (!$this->ftpOsUnix) {
                $info = $this->normalizeRawWindows($str);
            }
            $type = substr($info[0], 0, 1);
            $name = trim($info[8]);
            if ($name !== '.' && $name !== '..' && (!$targets || isset($targets[$name]))) {
                switch ($type) {
                    case 'l' : //omit symbolic links
                    case 'd' :
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'd'; // normal file
                        $items[] = $item;
                        $items = array_merge($items, $this->ftp_scan_dir($remote_file_path));
                        break;
                    default:
                        $remote_file_path = $this->_joinPath($remote_directory, $name);
                        $item = array();
                        $item['path'] = $remote_file_path;
                        $item['type'] = 'f'; // normal file
                        $items[] = $item;
                }
            }
        }
        return $items;
    }

    /**
     * Downloads specified files from remote directory
     * if there is a directory among files it is downloaded recursively (omitting symbolic links).
     *
     * @param       $remote_directory     string remote FTP path to a source directory to download from.
     * @param array $files                list of files to download from remote directory.
     * @param       $dest_local_directory string destination folder to store downloaded files.
     *
     * @return bool true on success and false on failure.
     */
    private function ftp_download_files($remote_directory, array $files, $dest_local_directory)
    {
        $contents = $this->ftp_scan_dir($remote_directory, $files);
        if (!isset($contents)) {
            $this->setError(elFinder::ERROR_FTP_DOWNLOAD_FILE, $remote_directory);
            return false;
        }
        $remoteDirLen = strlen($remote_directory);
        foreach ($contents as $item) {
            $relative_path = substr($item['path'], $remoteDirLen);
            $local_path = $dest_local_directory . DIRECTORY_SEPARATOR . $relative_path;
            switch ($item['type']) {
                case 'd':
                    $success = mkdir($local_path);
                    break;
                case 'f':
                    $success = ftp_get($this->connect, $local_path, $item['path'], FTP_BINARY);
                    break;
                default:
                    $success = true;
            }
            if (!$success) {
                $this->setError(elFinder::ERROR_FTP_DOWNLOAD_FILE, $remote_directory);
                return false;
            }
        }
        return true;
    }

    /**
     * Delete local directory recursively.
     *
     * @param $dirPath string to directory to be erased.
     *
     * @return bool true on success and false on failure.
     * @throws Exception
     */
    private function deleteDir($dirPath)
    {
        if (!is_dir($dirPath)) {
            $success = unlink($dirPath);
        } else {
            $success = true;
            foreach (array_reverse(elFinderVolumeFTP::listFilesInDirectory($dirPath, false)) as $path) {
                $path = $dirPath . DIRECTORY_SEPARATOR . $path;
                if (is_link($path)) {
                    unlink($path);
                } else if (is_dir($path)) {
                    $success = rmdir($path);
                } else {
                    $success = unlink($path);
                }
                if (!$success) {
                    break;
                }
            }
            if ($success) {
                $success = rmdir($dirPath);
            }
        }
        if (!$success) {
            $this->setError(elFinder::ERROR_RM, $dirPath);
            return false;
        }
        return $success;
    }

    /**
     * Returns array of strings containing all files and folders in the specified local directory.
     *
     * @param        $dir
     * @param        $omitSymlinks
     * @param string $prefix
     *
     * @return array array of files and folders names relative to the $path
     * or an empty array if the directory $path is empty,
     * <br />
     * false if $path is not a directory or does not exist.
     * @throws Exception
     * @internal param string $path path to directory to scan.
     */
    private static function listFilesInDirectory($dir, $omitSymlinks, $prefix = '')
    {
        if (!is_dir($dir)) {
            return false;
        }
        $excludes = array(".", "..");
        $result = array();
        $files = self::localScandir($dir);
        if (!$files) {
            return array();
        }
        foreach ($files as $file) {
            if (!in_array($file, $excludes)) {
                $path = $dir . DIRECTORY_SEPARATOR . $file;
                if (is_link($path)) {
                    if ($omitSymlinks) {
                        continue;
                    } else {
                        $result[] = $prefix . $file;
                    }
                } else if (is_dir($path)) {
                    $result[] = $prefix . $file . DIRECTORY_SEPARATOR;
                    $subs = elFinderVolumeFTP::listFilesInDirectory($path, $omitSymlinks, $prefix . $file . DIRECTORY_SEPARATOR);
                    if ($subs) {
                        $result = array_merge($result, $subs);
                    }

                } else {
                    $result[] = $prefix . $file;
                }
            }
        }
        return $result;
    }

} // END class
lib/php/elFinderVolumeMySQL.class.php000064400000072550147361034400013537 0ustar00<?php

/**
 * Simple elFinder driver for MySQL.
 *
 * @author Dmitry (dio) Levashov
 **/
class elFinderVolumeMySQL extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'm';

    /**
     * Database object
     *
     * @var mysqli
     **/
    protected $db = null;

    /**
     * Tables to store files
     *
     * @var string
     **/
    protected $tbf = '';

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir
     *
     * @var string
     **/
    protected $tmpPath = '';

    /**
     * Numbers of sql requests (for debug)
     *
     * @var int
     **/
    protected $sqlCnt = 0;

    /**
     * Last db error message
     *
     * @var string
     **/
    protected $dbError = '';

    /**
     * This root has parent id
     *
     * @var        boolean
     */
    protected $rootHasParent = false;

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct()
    {
        $opts = array(
            'host' => 'localhost',
            'user' => '',
            'pass' => '',
            'db' => '',
            'port' => null,
            'socket' => null,
            'files_table' => 'elfinder_file',
            'tmbPath' => '',
            'tmpPath' => '',
            'rootCssClass' => 'elfinder-navbar-root-sql',
            'noSessionCache' => array('hasdirs'),
            'isLocalhost' => false
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare driver before mount volume.
     * Connect to db, check required tables and fetch root path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function init()
    {

        if (!($this->options['host'] || $this->options['socket'])
            || !$this->options['user']
            || !$this->options['pass']
            || !$this->options['db']
            || !$this->options['path']
            || !$this->options['files_table']) {
            return $this->setError('Required options "host", "socket", "user", "pass", "db", "path" or "files_table" are undefined.');
        }

        $err = null;
        if ($this->db = @new mysqli($this->options['host'], $this->options['user'], $this->options['pass'], $this->options['db'], $this->options['port'], $this->options['socket'])) {
            if ($this->db && $this->db->connect_error) {
                $err = $this->db->connect_error;
            }
        } else {
            $err = mysqli_connect_error();
        }
        if ($err) {
            return $this->setError(array('Unable to connect to MySQL server.', $err));
        }

        if (!$this->needOnline && empty($this->ARGS['init'])) {
            $this->db->close();
            $this->db = null;
            return true;
        }

        $this->db->set_charset('utf8');

        if ($res = $this->db->query('SHOW TABLES')) {
            while ($row = $res->fetch_array()) {
                if ($row[0] == $this->options['files_table']) {
                    $this->tbf = $this->options['files_table'];
                    break;
                }
            }
        }

        if (!$this->tbf) {
            return $this->setError('The specified database table cannot be found.');
        }

        $this->updateCache($this->options['path'], $this->_stat($this->options['path']));

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        // check isLocalhost
        $this->isLocalhost = $this->options['isLocalhost'] || $this->options['host'] === 'localhost' || $this->options['host'] === '127.0.0.1' || $this->options['host'] === '::1';

        return true;
    }


    /**
     * Set tmp path
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        parent::configure();

        if (($tmp = $this->options['tmpPath'])) {
            if (!file_exists($tmp)) {
                if (mkdir($tmp)) {
                    chmod($tmp, $this->options['tmbPathMode']);
                }
            }

            $this->tmpPath = is_dir($tmp) && is_writable($tmp) ? $tmp : false;
        }
        if (!$this->tmpPath && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmpPath = $tmp;
        }

        // fallback of $this->tmp
        if (!$this->tmpPath && $this->tmbPathWritable) {
            $this->tmpPath = $this->tmbPath;
        }

        $this->mimeDetect = 'internal';
    }

    /**
     * Close connection
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
        $this->db && $this->db->close();
    }

    /**
     * Return debug info for client
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function debug()
    {
        $debug = parent::debug();
        $debug['sqlCount'] = $this->sqlCnt;
        if ($this->dbError) {
            $debug['dbError'] = $this->dbError;
        }
        return $debug;
    }

    /**
     * Perform sql query and return result.
     * Increase sqlCnt and save error if occured
     *
     * @param  string $sql query
     *
     * @return bool|mysqli_result
     * @author Dmitry (dio) Levashov
     */
    protected function query($sql)
    {
        $this->sqlCnt++;
        $res = $this->db->query($sql);
        if (!$res) {
            $this->dbError = $this->db->error;
        }
        return $res;
    }

    /**
     * Create empty object with required mimetype
     *
     * @param  string $path parent dir path
     * @param  string $name object name
     * @param  string $mime mime type
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function make($path, $name, $mime)
    {
        $sql = 'INSERT INTO %s (`parent_id`, `name`, `size`, `mtime`, `mime`, `content`, `read`, `write`, `locked`, `hidden`, `width`, `height`) VALUES (\'%s\', \'%s\', 0, %d, \'%s\', \'\', \'%d\', \'%d\', \'%d\', \'%d\', 0, 0)';
        $sql = sprintf($sql, $this->tbf, $path, $this->db->real_escape_string($name), time(), $mime, $this->defaults['read'], $this->defaults['write'], $this->defaults['locked'], $this->defaults['hidden']);
        // echo $sql;
        return $this->query($sql) && $this->db->affected_rows > 0;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Cache dir contents
     *
     * @param  string $path dir path
     *
     * @return string
     * @author Dmitry Levashov
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();

        $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, IF(ch.id, 1, 0) AS dirs 
                FROM ' . $this->tbf . ' AS f 
                LEFT JOIN ' . $this->tbf . ' AS ch ON ch.parent_id=f.id AND ch.mime=\'directory\'
                WHERE f.parent_id=\'' . $path . '\'
                GROUP BY f.id, ch.id';

        $res = $this->query($sql);
        if ($res) {
            while ($row = $res->fetch_assoc()) {
                $id = $row['id'];
                if ($row['parent_id'] && $id != $this->root) {
                    $row['phash'] = $this->encode($row['parent_id']);
                }

                if ($row['mime'] == 'directory') {
                    unset($row['width']);
                    unset($row['height']);
                    $row['size'] = 0;
                } else {
                    unset($row['dirs']);
                }

                unset($row['id']);
                unset($row['parent_id']);


                if (($stat = $this->updateCache($id, $row)) && empty($stat['hidden'])) {
                    $this->dirsCache[$path][] = $id;
                }
            }
        }

        return $this->dirsCache[$path];
    }

    /**
     * Return array of parents paths (ids)
     *
     * @param  int $path file path (id)
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function getParents($path)
    {
        $parents = array();

        while ($path) {
            if ($file = $this->stat($path)) {
                array_unshift($parents, $path);
                $path = isset($file['phash']) ? $this->decode($file['phash']) : false;
            }
        }

        if (count($parents)) {
            array_pop($parents);
        }
        return $parents;
    }

    /**
     * Return correct file path for LOAD_FILE method
     *
     * @param  string $path file path (id)
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function loadFilePath($path)
    {
        $realPath = realpath($path);
        if (DIRECTORY_SEPARATOR == '\\') { // windows
            $realPath = str_replace('\\', '\\\\', $realPath);
        }
        return $this->db->real_escape_string($realPath);
    }

    /**
     * Recursive files search
     *
     * @param  string $path dir path
     * @param  string $q    search string
     * @param  array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod'])) {
            // has custom match method use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        $dirs = array();
        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;

        if ($path != $this->root || $this->rootHasParent) {
            $dirs = $inpath = array(intval($path));
            while ($inpath) {
                $in = '(' . join(',', $inpath) . ')';
                $inpath = array();
                $sql = 'SELECT f.id FROM %s AS f WHERE f.parent_id IN ' . $in . ' AND `mime` = \'directory\'';
                $sql = sprintf($sql, $this->tbf);
                if ($res = $this->query($sql)) {
                    $_dir = array();
                    while ($dat = $res->fetch_assoc()) {
                        $inpath[] = $dat['id'];
                    }
                    $dirs = array_merge($dirs, $inpath);
                }
            }
        }

        $result = array();

        if ($mimes) {
            $whrs = array();
            foreach ($mimes as $mime) {
                if (strpos($mime, '/') === false) {
                    $whrs[] = sprintf('f.mime LIKE \'%s/%%\'', $this->db->real_escape_string($mime));
                } else {
                    $whrs[] = sprintf('f.mime = \'%s\'', $this->db->real_escape_string($mime));
                }
            }
            $whr = join(' OR ', $whrs);
        } else {
            $whr = sprintf('f.name LIKE \'%%%s%%\'', $this->db->real_escape_string($q));
        }
        if ($dirs) {
            $whr = '(' . $whr . ') AND (`parent_id` IN (' . join(',', $dirs) . '))';
        }

        $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, 0 AS dirs 
                FROM %s AS f 
                WHERE %s';

        $sql = sprintf($sql, $this->tbf, $whr);

        if (($res = $this->query($sql))) {
            while ($row = $res->fetch_assoc()) {
                if ($timeout && $timeout < time()) {
                    $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
                    break;
                }

                if (!$this->mimeAccepted($row['mime'], $mimes)) {
                    continue;
                }
                $id = $row['id'];
                if ($id == $this->root) {
                    continue;
                }
                if ($row['parent_id'] && $id != $this->root) {
                    $row['phash'] = $this->encode($row['parent_id']);
                }
                $row['path'] = $this->_path($id);

                if ($row['mime'] == 'directory') {
                    unset($row['width']);
                    unset($row['height']);
                } else {
                    unset($row['dirs']);
                }

                unset($row['id']);
                unset($row['parent_id']);

                if (($stat = $this->updateCache($id, $row)) && empty($stat['hidden'])) {
                    $result[] = $stat;
                }
            }
        }
        return $result;
    }


    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        return ($stat = $this->stat($path)) ? (!empty($stat['phash']) ? $this->decode($stat['phash']) : $this->root) : false;
    }

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        return (($stat = $this->stat($path)) && isset($stat['name'])) ? $stat['name'] : false;
    }

    /**
     * Join dir name and file name and return full path
     *
     * @param  string $dir
     * @param  string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        $sql = 'SELECT id FROM ' . $this->tbf . ' WHERE parent_id=\'' . $dir . '\' AND name=\'' . $this->db->real_escape_string($name) . '\'';

        if (($res = $this->query($sql)) && ($r = $res->fetch_assoc())) {
            $this->updateCache($r['id'], $this->_stat($r['id']));
            return $r['id'];
        }
        return -1;
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python
     *
     * @param  string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        return $path;
    }

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        if (($file = $this->stat($path)) == false) {
            return '';
        }

        $parentsIds = $this->getParents($path);
        $path = '';
        foreach ($parentsIds as $id) {
            $dir = $this->stat($id);
            $path .= $dir['name'] . $this->separator;
        }
        return $path . $file['name'];
    }

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent
            ? true
            : in_array($parent, $this->getParents($path));
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $sql = 'SELECT f.id, f.parent_id, f.name, f.size, f.mtime AS ts, f.mime, f.read, f.write, f.locked, f.hidden, f.width, f.height, IF(ch.id, 1, 0) AS dirs
                FROM ' . $this->tbf . ' AS f 
                LEFT JOIN ' . $this->tbf . ' AS ch ON ch.parent_id=f.id AND ch.mime=\'directory\'
                WHERE f.id=\'' . $path . '\'
                GROUP BY f.id, ch.id';

        $res = $this->query($sql);

        if ($res) {
            $stat = $res->fetch_assoc();
            if ($stat['id'] == $this->root) {
                $this->rootHasParent = true;
                $stat['parent_id'] = '';
            }
            if ($stat['parent_id']) {
                $stat['phash'] = $this->encode($stat['parent_id']);
            }
            if ($stat['mime'] == 'directory') {
                unset($stat['width']);
                unset($stat['height']);
                $stat['size'] = 0;
            } else {
                if (!$stat['mime']) {
                    unset($stat['mime']);
                }
                unset($stat['dirs']);
            }
            unset($stat['id']);
            unset($stat['parent_id']);
            return $stat;

        }
        return array();
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {
        return ($stat = $this->stat($path)) && isset($stat['dirs']) ? $stat['dirs'] : false;
    }

    /**
     * Return object width and height
     * Usualy used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dimensions($path, $mime)
    {
        return ($stat = $this->stat($path)) && isset($stat['width']) && isset($stat['height']) ? $stat['width'] . 'x' . $stat['height'] : '';
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param  string $mode open file mode (ignored in this driver)
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        $fp = $this->tmpPath
            ? fopen($this->getTempFile($path), 'w+')
            : $this->tmpfile();


        if ($fp) {
            if (($res = $this->query('SELECT content FROM ' . $this->tbf . ' WHERE id=\'' . $path . '\''))
                && ($r = $res->fetch_assoc())) {
                fwrite($fp, $r['content']);
                rewind($fp);
                return $fp;
            } else {
                $this->_fclose($fp, $path);
            }
        }

        return false;
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            $file = $this->getTempFile($path);
            is_file($file) && unlink($file);
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        return $this->make($path, $name, 'directory') ? $this->_joinPath($path, $name) : false;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->make($path, $name, '') ? $this->_joinPath($path, $name) : false;
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param  string $target link target
     * @param  string $path   symlink path
     * @param string  $name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $this->clearcache();
        $id = $this->_joinPath($targetDir, $name);

        $sql = $id > 0
            ? sprintf('REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden`) (SELECT %d, %d, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden` FROM %s WHERE id=%d)', $this->tbf, $id, $this->_dirname($id), $this->tbf, $source)
            : sprintf('INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height, `read`, `write`, `locked`, `hidden`) SELECT %d, \'%s\', content, size, %d, mime, width, height, `read`, `write`, `locked`, `hidden` FROM %s WHERE id=%d', $this->tbf, $targetDir, $this->db->real_escape_string($name), time(), $this->tbf, $source);

        return $this->query($sql);
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $sql = 'UPDATE %s SET parent_id=%d, name=\'%s\' WHERE id=%d LIMIT 1';
        $sql = sprintf($sql, $this->tbf, $targetDir, $this->db->real_escape_string($name), $source);
        return $this->query($sql) && $this->db->affected_rows > 0 ? $source : false;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return $this->query(sprintf('DELETE FROM %s WHERE id=%d AND mime!=\'directory\' LIMIT 1', $this->tbf, $path)) && $this->db->affected_rows;
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->query(sprintf('DELETE FROM %s WHERE id=%d AND mime=\'directory\' LIMIT 1', $this->tbf, $path)) && $this->db->affected_rows;
    }

    /**
     * undocumented function
     *
     * @param $path
     * @param $fp
     *
     * @author Dmitry Levashov
     */
    protected function _setContent($path, $fp)
    {
        elFinder::rewind($fp);
        $fstat = fstat($fp);
        $size = $fstat['size'];


    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        $this->clearcache();

        $mime = !empty($stat['mime']) ? $stat['mime'] : $this->mimetype($name, true);
        $w = !empty($stat['width']) ? $stat['width'] : 0;
        $h = !empty($stat['height']) ? $stat['height'] : 0;
        $ts = !empty($stat['ts']) ? $stat['ts'] : time();

        $id = $this->_joinPath($dir, $name);
        if (!isset($stat['size'])) {
            $stat = fstat($fp);
            $size = $stat['size'];
        } else {
            $size = $stat['size'];
        }

        if ($this->isLocalhost && ($tmpfile = tempnam($this->tmpPath, $this->id))) {
            if (($trgfp = fopen($tmpfile, 'wb')) == false) {
                unlink($tmpfile);
            } else {
                elFinder::rewind($fp);
                stream_copy_to_stream($fp, $trgfp);
                fclose($trgfp);
                chmod($tmpfile, 0644);

                $sql = $id > 0
                    ? 'REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height) VALUES (' . $id . ', %d, \'%s\', LOAD_FILE(\'%s\'), %d, %d, \'%s\', %d, %d)'
                    : 'INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height) VALUES (%d, \'%s\', LOAD_FILE(\'%s\'), %d, %d, \'%s\', %d, %d)';
                $sql = sprintf($sql, $this->tbf, $dir, $this->db->real_escape_string($name), $this->loadFilePath($tmpfile), $size, $ts, $mime, $w, $h);

                $res = $this->query($sql);
                unlink($tmpfile);

                if ($res) {
                    return $id > 0 ? $id : $this->db->insert_id;
                }
            }
        }


        $content = '';
        elFinder::rewind($fp);
        while (!feof($fp)) {
            $content .= fread($fp, 8192);
        }

        $sql = $id > 0
            ? 'REPLACE INTO %s (id, parent_id, name, content, size, mtime, mime, width, height) VALUES (' . $id . ', %d, \'%s\', \'%s\', %d, %d, \'%s\', %d, %d)'
            : 'INSERT INTO %s (parent_id, name, content, size, mtime, mime, width, height) VALUES (%d, \'%s\', \'%s\', %d, %d, \'%s\', %d, %d)';
        $sql = sprintf($sql, $this->tbf, $dir, $this->db->real_escape_string($name), $this->db->real_escape_string($content), $size, $ts, $mime, $w, $h);

        unset($content);

        if ($this->query($sql)) {
            return $id > 0 ? $id : $this->db->insert_id;
        }

        return false;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        return ($res = $this->query(sprintf('SELECT content FROM %s WHERE id=%d', $this->tbf, $path))) && ($r = $res->fetch_assoc()) ? $r['content'] : false;
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        return $this->query(sprintf('UPDATE %s SET content=\'%s\', size=%d, mtime=%d WHERE id=%d LIMIT 1', $this->tbf, $this->db->real_escape_string($content), strlen($content), time(), $path));
    }

    /**
     * Detect available archivers
     *
     * @return void
     **/
    protected function _checkArchivers()
    {
        return;
    }

    /**
     * chmod implementation
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return void
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     **/
    protected function _unpack($path, $arc)
    {
        return;
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _extract($path, $arc)
    {
        return false;
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        return false;
    }

} // END class 
lib/php/elFinderVolumeLocalFileSystem.class.php000064400000136366147361034400015637 0ustar00<?php

// Implement similar functionality in PHP 5.2 or 5.3
// http://php.net/manual/class.recursivecallbackfilteriterator.php#110974
if (!class_exists('RecursiveCallbackFilterIterator', false)) {
    class RecursiveCallbackFilterIterator extends RecursiveFilterIterator
    {
        private $callback;

        public function __construct(RecursiveIterator $iterator, $callback)
        {
            $this->callback = $callback;
            parent::__construct($iterator);
        }

        public function accept()
        {
            return call_user_func($this->callback, parent::current(), parent::key(), parent::getInnerIterator());
        }

        public function getChildren()
        {
            return new self($this->getInnerIterator()->getChildren(), $this->callback);
        }
    }
}

/**
 * elFinder driver for local filesystem.
 *
 * @author Dmitry (dio) Levashov
 * @author Troex Nevelin
 **/
class elFinderVolumeLocalFileSystem extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'l';

    /**
     * Required to count total archive files size
     *
     * @var int
     **/
    protected $archiveSize = 0;

    /**
     * Is checking stat owner
     *
     * @var        boolean
     */
    protected $statOwner = false;

    /**
     * Path to quarantine directory
     *
     * @var string
     */
    private $quarantine;

    /**
     * Constructor
     * Extend options with required fields
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct()
    {
        $this->options['alias'] = '';              // alias to replace root dir name
        $this->options['dirMode'] = 0755;            // new dirs mode
        $this->options['fileMode'] = 0644;            // new files mode
        $this->options['rootCssClass'] = 'elfinder-navbar-root-local';
        $this->options['followSymLinks'] = true;
        $this->options['detectDirIcon'] = '';         // file name that is detected as a folder icon e.g. '.diricon.png'
        $this->options['keepTimestamp'] = array('copy', 'move'); // keep timestamp at inner filesystem allowed 'copy', 'move' and 'upload'
        $this->options['substituteImg'] = true;       // support substitute image with dim command
        $this->options['statCorrector'] = null;       // callable to correct stat data `function(&$stat, $path, $statOwner, $volumeDriveInstance){}`
        if (DIRECTORY_SEPARATOR === '/') {
            // Linux
            $this->options['acceptedName'] = '/^[^\.\/\x00][^\/\x00]*$/';
        } else {
            // Windows
            $this->options['acceptedName'] = '/^[^\.\/\x00\\\:*?"<>|][^\/\x00\\\:*?"<>|]*$/';
        }
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare driver before mount volume.
     * Return true if volume is ready.
     *
     * @return bool
     **/
    protected function init()
    {
        // Normalize directory separator for windows
        if (DIRECTORY_SEPARATOR !== '/') {
            foreach (array('path', 'tmbPath', 'tmpPath', 'quarantine') as $key) {
                if (!empty($this->options[$key])) {
                    $this->options[$key] = str_replace('/', DIRECTORY_SEPARATOR, $this->options[$key]);
                }
            }
            // PHP >= 7.1 Supports UTF-8 path on Windows
            if (version_compare(PHP_VERSION, '7.1', '>=')) {
                $this->options['encoding'] = '';
                $this->options['locale'] = '';
            }
        }
        if (!$cwd = getcwd()) {
            return $this->setError('elFinder LocalVolumeDriver requires a result of getcwd().');
        }
        // detect systemRoot
        if (!isset($this->options['systemRoot'])) {
            if ($cwd[0] === DIRECTORY_SEPARATOR || $this->root[0] === DIRECTORY_SEPARATOR) {
                $this->systemRoot = DIRECTORY_SEPARATOR;
            } else if (preg_match('/^([a-zA-Z]:' . preg_quote(DIRECTORY_SEPARATOR, '/') . ')/', $this->root, $m)) {
                $this->systemRoot = $m[1];
            } else if (preg_match('/^([a-zA-Z]:' . preg_quote(DIRECTORY_SEPARATOR, '/') . ')/', $cwd, $m)) {
                $this->systemRoot = $m[1];
            }
        }
        $this->root = $this->getFullPath($this->root, $cwd);
        if (!empty($this->options['startPath'])) {
            $this->options['startPath'] = $this->getFullPath($this->options['startPath'], $this->root);
        }

        if (is_null($this->options['syncChkAsTs'])) {
            $this->options['syncChkAsTs'] = true;
        }
        if (is_null($this->options['syncCheckFunc'])) {
            $this->options['syncCheckFunc'] = array($this, 'localFileSystemInotify');
        }
        // check 'statCorrector'
        if (empty($this->options['statCorrector']) || !is_callable($this->options['statCorrector'])) {
            $this->options['statCorrector'] = null;
        }

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        $hiddens = array();
        $root = $this->stat($this->root);

        // check thumbnails path
        if (!empty($this->options['tmbPath'])) {
            if (strpos($this->options['tmbPath'], DIRECTORY_SEPARATOR) === false) {
                $hiddens['tmb'] = $this->options['tmbPath'];
                $this->options['tmbPath'] = $this->_abspath($this->options['tmbPath']);
            } else {
                $this->options['tmbPath'] = $this->_normpath($this->options['tmbPath']);
            }
        }
        // check temp path
        if (!empty($this->options['tmpPath'])) {
            if (strpos($this->options['tmpPath'], DIRECTORY_SEPARATOR) === false) {
                $hiddens['temp'] = $this->options['tmpPath'];
                $this->options['tmpPath'] = $this->_abspath($this->options['tmpPath']);
            } else {
                $this->options['tmpPath'] = $this->_normpath($this->options['tmpPath']);
            }
        }
        // check quarantine path
        $_quarantine = '';
        if (!empty($this->options['quarantine'])) {
            if (strpos($this->options['quarantine'], DIRECTORY_SEPARATOR) === false) {
                $_quarantine = $this->_abspath($this->options['quarantine']);
                $this->options['quarantine'] = '';
            } else {
                $this->options['quarantine'] = $this->_normpath($this->options['quarantine']);
            }
        } else {
            $_quarantine = $this->_abspath('.quarantine');
        }
        is_dir($_quarantine) && self::localRmdirRecursive($_quarantine);

        parent::configure();

        // check tmbPath
        if (!$this->tmbPath && isset($hiddens['tmb'])) {
            unset($hiddens['tmb']);
        }

        // if no thumbnails url - try detect it
        if ($root['read'] && !$this->tmbURL && $this->URL) {
            if (strpos($this->tmbPath, $this->root) === 0) {
                $this->tmbURL = $this->URL . str_replace(DIRECTORY_SEPARATOR, '/', substr($this->tmbPath, strlen($this->root) + 1));
                if (preg_match("|[^/?&=]$|", $this->tmbURL)) {
                    $this->tmbURL .= '/';
                }
            }
        }

        // set $this->tmp by options['tmpPath']
        $this->tmp = '';
        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'], $this->options['dirMode'], true)) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            } else {
                if (isset($hiddens['temp'])) {
                    unset($hiddens['temp']);
                }
            }
        }
        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // check quarantine dir
        $this->quarantine = '';
        if (!empty($this->options['quarantine'])) {
            if ((is_dir($this->options['quarantine']) || mkdir($this->options['quarantine'], $this->options['dirMode'], true)) && is_writable($this->options['quarantine'])) {
                $this->quarantine = $this->options['quarantine'];
            } else {
                if (isset($hiddens['quarantine'])) {
                    unset($hiddens['quarantine']);
                }
            }
        } else if ($_path = elFinder::getCommonTempPath()) {
            $this->quarantine = $_path;
        }

        if (!$this->quarantine) {
            if (!$this->tmp) {
                $this->archivers['extract'] = array();
                $this->disabled[] = 'extract';
            } else {
                $this->quarantine = $this->tmp;
            }
        }

        if ($hiddens) {
            foreach ($hiddens as $hidden) {
                $this->attributes[] = array(
                    'pattern' => '~^' . preg_quote(DIRECTORY_SEPARATOR . $hidden, '~') . '$~',
                    'read' => false,
                    'write' => false,
                    'locked' => true,
                    'hidden' => true
                );
            }
        }

        if (!empty($this->options['keepTimestamp'])) {
            $this->options['keepTimestamp'] = array_flip($this->options['keepTimestamp']);
        }

        $this->statOwner = (!empty($this->options['statOwner']));

        // enable WinRemoveTailDots plugin on Windows server
        if (DIRECTORY_SEPARATOR !== '/') {
            if (!isset($this->options['plugin'])) {
                $this->options['plugin'] = array();
            }
            $this->options['plugin']['WinRemoveTailDots'] = array('enable' => true);
        }
    }

    /**
     * Long pooling sync checker
     * This function require server command `inotifywait`
     * If `inotifywait` need full path, Please add `define('ELFINER_INOTIFYWAIT_PATH', '/PATH_TO/inotifywait');` into connector.php
     *
     * @param string $path
     * @param int    $standby
     * @param number $compare
     *
     * @return number|bool
     * @throws elFinderAbortException
     */
    public function localFileSystemInotify($path, $standby, $compare)
    {
        if (isset($this->sessionCache['localFileSystemInotify_disable'])) {
            return false;
        }
        $path = realpath($path);
        $mtime = filemtime($path);
        if (!$mtime) {
            return false;
        }
        if ($mtime != $compare) {
            return $mtime;
        }
        $inotifywait = defined('ELFINER_INOTIFYWAIT_PATH') ? ELFINER_INOTIFYWAIT_PATH : 'inotifywait';
        $standby = max(1, intval($standby));
        $cmd = $inotifywait . ' ' . escapeshellarg($path) . ' -t ' . $standby . ' -e moved_to,moved_from,move,close_write,delete,delete_self';
        $this->procExec($cmd, $o, $r);
        if ($r === 0) {
            // changed
            clearstatcache();
            if (file_exists($path)) {
                $mtime = filemtime($path); // error on busy?
                return $mtime ? $mtime : time();
            } else {
                // target was removed
                return 0;
            }
        } else if ($r === 2) {
            // not changed (timeout)
            return $compare;
        }
        // error
        // cache to $_SESSION
        $this->sessionCache['localFileSystemInotify_disable'] = true;
        $this->session->set($this->id, $this->sessionCache);
        return false;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        return dirname($path);
    }

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        return basename($path);
    }

    /**
     * Join dir name and file name and retur full path
     *
     * @param  string $dir
     * @param  string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        $dir = rtrim($dir, DIRECTORY_SEPARATOR);
        $path = realpath($dir . DIRECTORY_SEPARATOR . $name);
        // realpath() returns FALSE if the file does not exist
        if ($path === false || strpos($path, $this->root) !== 0) {
            if (DIRECTORY_SEPARATOR !== '/') {
                $dir = str_replace('/', DIRECTORY_SEPARATOR, $dir);
                $name = str_replace('/', DIRECTORY_SEPARATOR, $name);
            }
            // Directory traversal measures
            if (strpos($dir, '..' . DIRECTORY_SEPARATOR) !== false || substr($dir, -2) == '..') {
                $dir = $this->root;
            }
            if (strpos($name, '..' . DIRECTORY_SEPARATOR) !== false) {
                $name = basename($name);
            }
            $path = $dir . DIRECTORY_SEPARATOR . $name;
        }
        return $path; 
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python
     *
     * @param  string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (empty($path)) {
            return '.';
        }

        $changeSep = (DIRECTORY_SEPARATOR !== '/');
        if ($changeSep) {
            $drive = '';
            if (preg_match('/^([a-zA-Z]:)(.*)/', $path, $m)) {
                $drive = $m[1];
                $path = $m[2] ? $m[2] : '/';
            }
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }

        if (strpos($path, '/') === 0) {
            $initial_slashes = true;
        } else {
            $initial_slashes = false;
        }

        if (($initial_slashes)
            && (strpos($path, '//') === 0)
            && (strpos($path, '///') === false)) {
            $initial_slashes = 2;
        }

        $initial_slashes = (int)$initial_slashes;

        $comps = explode('/', $path);
        $new_comps = array();
        foreach ($comps as $comp) {
            if (in_array($comp, array('', '.'))) {
                continue;
            }

            if (($comp != '..')
                || (!$initial_slashes && !$new_comps)
                || ($new_comps && (end($new_comps) == '..'))) {
                array_push($new_comps, $comp);
            } elseif ($new_comps) {
                array_pop($new_comps);
            }
        }
        $comps = $new_comps;
        $path = implode('/', $comps);
        if ($initial_slashes) {
            $path = str_repeat('/', $initial_slashes) . $path;
        }

        if ($changeSep) {
            $path = $drive . str_replace('/', DIRECTORY_SEPARATOR, $path);
        }

        return $path ? $path : '.';
    }

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        if ($path === $this->root) {
            return '';
        } else {
            if (strpos($path, $this->root) === 0) {
                return ltrim(substr($path, strlen($this->root)), DIRECTORY_SEPARATOR);
            } else {
                // for link
                return $path;
            }
        }
    }

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        if ($path === DIRECTORY_SEPARATOR) {
            return $this->root;
        } else {
            $path = $this->_normpath($path);
            if (strpos($path, $this->systemRoot) === 0) {
                return $path;
            } else if (DIRECTORY_SEPARATOR !== '/' && preg_match('/^[a-zA-Z]:' . preg_quote(DIRECTORY_SEPARATOR, '/') . '/', $path)) {
                return $path;
            } else {
                return $this->_joinPath($this->root, $path);
            }
        }
    }

    /**
     * Return fake path started from root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . ($path == $this->root ? '' : $this->separator . $this->_relpath($path));
    }

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        $cwd = getcwd();
        $real_path = $this->getFullPath($path, $cwd);
        $real_parent = $this->getFullPath($parent, $cwd);
        if ($real_path && $real_parent) {
            return $real_path === $real_parent || strpos($real_path, rtrim($real_parent, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR) === 0;
        }
        return false;
    }



    /***************** file stat ********************/

    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        $stat = array();

        if (!file_exists($path) && !is_link($path)) {
            return $stat;
        }

        //Verifies the given path is the root or is inside the root. Prevents directory traveral.
        if (!$this->_inpath($path, $this->root)) {
            return $stat;
        }

        $stat['isowner'] = false;
        $linkreadable = false;
        if ($path != $this->root && is_link($path)) {
            if (!$this->options['followSymLinks']) {
                return array();
            }
            if (!($target = $this->readlink($path))
                || $target == $path) {
                if (is_null($target)) {
                    $stat = array();
                    return $stat;
                } else {
                    $stat['mime'] = 'symlink-broken';
                    $target = readlink($path);
                    $lstat = lstat($path);
                    $ostat = $this->getOwnerStat($lstat['uid'], $lstat['gid']);
                    $linkreadable = !empty($ostat['isowner']);
                }
            }
            $stat['alias'] = $this->_path($target);
            $stat['target'] = $target;
        }

        $readable = is_readable($path);

        if ($readable) {
            $size = sprintf('%u', filesize($path));
            $stat['ts'] = filemtime($path);
            if ($this->statOwner) {
                $fstat = stat($path);
                $uid = $fstat['uid'];
                $gid = $fstat['gid'];
                $stat['perm'] = substr((string)decoct($fstat['mode']), -4);
                $stat = array_merge($stat, $this->getOwnerStat($uid, $gid));
            }
        }

        if (($dir = is_dir($path)) && $this->options['detectDirIcon']) {
            $favicon = $path . DIRECTORY_SEPARATOR . $this->options['detectDirIcon'];
            if ($this->URL && file_exists($favicon)) {
                $stat['icon'] = $this->URL . str_replace(DIRECTORY_SEPARATOR, '/', substr($favicon, strlen($this->root) + 1));
            }
        }

        if (!isset($stat['mime'])) {
            $stat['mime'] = $dir ? 'directory' : $this->mimetype($path);
        }
        //logical rights first
        $stat['read'] = ($linkreadable || $readable) ? null : false;
        $stat['write'] = is_writable($path) ? null : false;

        if (is_null($stat['read'])) {
            if ($dir) {
                $stat['size'] = 0;
            } else if (isset($size)) {
                $stat['size'] = $size;
            }
        }

        if ($this->options['statCorrector']) {
            call_user_func_array($this->options['statCorrector'], array(&$stat, $path, $this->statOwner, $this));
        }

        return $stat;
    }

    /**
     * Get stat `owner`, `group` and `isowner` by `uid` and `gid`
     * Sub-fuction of _stat() and _scandir()
     *
     * @param integer $uid
     * @param integer $gid
     *
     * @return array  stat
     */
    protected function getOwnerStat($uid, $gid)
    {
        static $names = null;
        static $phpuid = null;

        if (is_null($names)) {
            $names = array('uid' => array(), 'gid' => array());
        }
        if (is_null($phpuid)) {
            if (is_callable('posix_getuid')) {
                $phpuid = posix_getuid();
            } else {
                $phpuid = 0;
            }
        }

        $stat = array();

        if ($uid) {
            $stat['isowner'] = ($phpuid == $uid);
            if (isset($names['uid'][$uid])) {
                $stat['owner'] = $names['uid'][$uid];
            } else if (is_callable('posix_getpwuid')) {
                $pwuid = posix_getpwuid($uid);
                $stat['owner'] = $names['uid'][$uid] = $pwuid['name'];
            } else {
                $stat['owner'] = $names['uid'][$uid] = $uid;
            }
        }
        if ($gid) {
            if (isset($names['gid'][$gid])) {
                $stat['group'] = $names['gid'][$gid];
            } else if (is_callable('posix_getgrgid')) {
                $grgid = posix_getgrgid($gid);
                $stat['group'] = $names['gid'][$gid] = $grgid['name'];
            } else {
                $stat['group'] = $names['gid'][$gid] = $gid;
            }
        }

        return $stat;
    }

    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _subdirs($path)
    {

        $dirs = false;
        if (is_dir($path) && is_readable($path)) {
            if (class_exists('FilesystemIterator', false)) {
                $dirItr = new ParentIterator(
                    new RecursiveDirectoryIterator($path,
                        FilesystemIterator::SKIP_DOTS |
                        FilesystemIterator::CURRENT_AS_SELF |
                        (defined('RecursiveDirectoryIterator::FOLLOW_SYMLINKS') ?
                            RecursiveDirectoryIterator::FOLLOW_SYMLINKS : 0)
                    )
                );
                $dirItr->rewind();
                if ($dirItr->hasChildren()) {
                    $dirs = true;
                    $name = $dirItr->getSubPathName();
                    while ($dirItr->valid()) {
                        if (!$this->attr($path . DIRECTORY_SEPARATOR . $name, 'read', null, true)) {
                            $dirs = false;
                            $dirItr->next();
                            $name = $dirItr->getSubPathName();
                            continue;
                        }
                        $dirs = true;
                        break;
                    }
                }
            } else {
                $path = strtr($path, array('[' => '\\[', ']' => '\\]', '*' => '\\*', '?' => '\\?'));
                return (bool)glob(rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR);
            }
        }
        return $dirs;
    }

    /**
     * Return object width and height
     * Usualy used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dimensions($path, $mime)
    {
        clearstatcache();
        return strpos($mime, 'image') === 0 && is_readable($path) && filesize($path) && ($s = getimagesize($path)) !== false
            ? $s[0] . 'x' . $s[1]
            : false;
    }
    /******************** file/dir content *********************/

    /**
     * Return symlink target file
     *
     * @param  string $path link path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function readlink($path)
    {
        if (!($target = readlink($path))) {
            return null;
        }

        if (strpos($target, $this->systemRoot) !== 0) {
            $target = $this->_joinPath(dirname($path), $target);
        }

        if (!file_exists($target)) {
            return false;
        }

        return $target;
    }

    /**
     * Return files list in directory.
     *
     * @param  string $path dir path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _scandir($path)
    {
        elFinder::checkAborted();
        $files = array();
        $cache = array();
        $dirWritable = is_writable($path);
        $dirItr = array();
        $followSymLinks = $this->options['followSymLinks'];
        try {
            $dirItr = new DirectoryIterator($path);
        } catch (UnexpectedValueException $e) {
        }

        foreach ($dirItr as $file) {
            try {
                if ($file->isDot()) {
                    continue;
                }

                $files[] = $fpath = $file->getPathname();

                $br = false;
                $stat = array();

                $stat['isowner'] = false;
                $linkreadable = false;
                if ($file->isLink()) {
                    if (!$followSymLinks) {
                        continue;
                    }
                    if (!($target = $this->readlink($fpath))
                        || $target == $fpath) {
                        if (is_null($target)) {
                            $stat = array();
                            $br = true;
                        } else {
                            $_path = $fpath;
                            $stat['mime'] = 'symlink-broken';
                            $target = readlink($_path);
                            $lstat = lstat($_path);
                            $ostat = $this->getOwnerStat($lstat['uid'], $lstat['gid']);
                            $linkreadable = !empty($ostat['isowner']);
                            $dir = false;
                            $stat['alias'] = $this->_path($target);
                            $stat['target'] = $target;
                        }
                    } else {
                        $dir = is_dir($target);
                        $stat['alias'] = $this->_path($target);
                        $stat['target'] = $target;
                        $stat['mime'] = $dir ? 'directory' : $this->mimetype($stat['alias']);
                    }
                } else {
                    if (($dir = $file->isDir()) && $this->options['detectDirIcon']) {
                        $path = $file->getPathname();
                        $favicon = $path . DIRECTORY_SEPARATOR . $this->options['detectDirIcon'];
                        if ($this->URL && file_exists($favicon)) {
                            $stat['icon'] = $this->URL . str_replace(DIRECTORY_SEPARATOR, '/', substr($favicon, strlen($this->root) + 1));
                        }
                    }
                    $stat['mime'] = $dir ? 'directory' : $this->mimetype($fpath);
                }
                $size = sprintf('%u', $file->getSize());
                $stat['ts'] = $file->getMTime();
                if (!$br) {
                    if ($this->statOwner && !$linkreadable) {
                        $uid = $file->getOwner();
                        $gid = $file->getGroup();
                        $stat['perm'] = substr((string)decoct($file->getPerms()), -4);
                        $stat = array_merge($stat, $this->getOwnerStat($uid, $gid));
                    }

                    //logical rights first
                    $stat['read'] = ($linkreadable || $file->isReadable()) ? null : false;
                    $stat['write'] = $file->isWritable() ? null : false;
                    $stat['locked'] = $dirWritable ? null : true;

                    if (is_null($stat['read'])) {
                        $stat['size'] = $dir ? 0 : $size;
                    }

                    if ($this->options['statCorrector']) {
                        call_user_func_array($this->options['statCorrector'], array(&$stat, $fpath, $this->statOwner, $this));
                    }
                }

                $cache[] = array($fpath, $stat);
            } catch (RuntimeException $e) {
                continue;
            }
        }

        if ($cache) {
            $cache = $this->convEncOut($cache, false);
            foreach ($cache as $d) {
                $this->updateCache($d[0], $d[1]);
            }
        }

        return $files;
    }

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @internal param bool $write open file for writing
     * @author   Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        return fopen($path, $mode);
    }

    /**
     * Close opened file
     *
     * @param  resource $fp file pointer
     * @param string    $path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        return (is_resource($fp) && fclose($fp));
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        $path = $this->_joinPath($path, $name);

        if (mkdir($path)) {
            chmod($path, $this->options['dirMode']);
            return $path;
        }

        return false;
    }

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        $path = $this->_joinPath($path, $name);

        if (($fp = fopen($path, 'w'))) {
            fclose($fp);
            chmod($path, $this->options['fileMode']);
            return $path;
        }
        return false;
    }

    /**
     * Create symlink
     *
     * @param  string $source    file to link to
     * @param  string $targetDir folder to create link in
     * @param  string $name      symlink name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($source, $targetDir, $name)
    {
        return $this->localFileSystemSymlink($source, $this->_joinPath($targetDir, $name));
    }

    /**
     * Copy file into another file
     *
     * @param  string $source    source file path
     * @param  string $targetDir target directory path
     * @param  string $name      new file name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        $mtime = filemtime($source);
        $target = $this->_joinPath($targetDir, $name);
        if ($ret = copy($source, $target)) {
            isset($this->options['keepTimestamp']['copy']) && $mtime && touch($target, $mtime);
        }
        return $ret;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    protected function _move($source, $targetDir, $name)
    {
        $mtime = filemtime($source);
        $target = $this->_joinPath($targetDir, $name);
        if ($ret = rename($source, $target) ? $target : false) {
            isset($this->options['keepTimestamp']['move']) && $mtime && touch($target, $mtime);
        }
        return $ret;
    }

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return is_file($path) && unlink($path);
    }

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return rmdir($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        $path = $this->_joinPath($dir, $name);

        $meta = stream_get_meta_data($fp);
        $uri = isset($meta['uri']) ? $meta['uri'] : '';
        if ($uri && !preg_match('#^[a-zA-Z0-9]+://#', $uri) && !is_link($uri)) {
            fclose($fp);
            $mtime = filemtime($uri);
            $isCmdPaste = ($this->ARGS['cmd'] === 'paste');
            $isCmdCopy = ($isCmdPaste && empty($this->ARGS['cut']));
            if (($isCmdCopy || !rename($uri, $path)) && !copy($uri, $path)) {
                return false;
            }
            // keep timestamp on upload
            if ($mtime && $this->ARGS['cmd'] === 'upload') {
                touch($path, isset($this->options['keepTimestamp']['upload']) ? $mtime : time());
            }
        } else {
            if (file_put_contents($path, $fp, LOCK_EX) === false) {
                return false;
            }
        }

        chmod($path, $this->options['fileMode']);
        return $path;
    }

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        return file_get_contents($path);
    }

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        return (file_put_contents($path, $content, LOCK_EX) !== false);
    }

    /**
     * Detect available archivers
     *
     * @return void
     * @throws elFinderAbortException
     */
    protected function _checkArchivers()
    {
        $this->archivers = $this->getArchivers();
        return;
    }

    /**
     * chmod availability
     *
     * @param string $path
     * @param string $mode
     *
     * @return bool
     */
    protected function _chmod($path, $mode)
    {
        $modeOct = is_string($mode) ? octdec($mode) : octdec(sprintf("%04o", $mode));
        return chmod($path, $modeOct);
    }

    /**
     * Recursive symlinks search
     *
     * @param  string $path file/dir path
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected function _findSymlinks($path)
    {
        return self::localFindSymlinks($path);
    }

    /**
     * Extract files from archive
     *
     * @param  string $path archive path
     * @param  array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return array|string|boolean
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _extract($path, $arc)
    {

        if ($this->quarantine) {

            $dir = $this->quarantine . DIRECTORY_SEPARATOR . md5(basename($path) . mt_rand());
            $archive = (isset($arc['toSpec']) || $arc['cmd'] === 'phpfunction') ? '' : $dir . DIRECTORY_SEPARATOR . basename($path);

            if (!mkdir($dir)) {
                return false;
            }

            // insurance unexpected shutdown
            register_shutdown_function(array($this, 'rmdirRecursive'), realpath($dir));

            chmod($dir, 0777);

            // copy in quarantine
            if (!is_readable($path) || ($archive && !copy($path, $archive))) {
                return false;
            }

            // extract in quarantine
            try {
                $this->unpackArchive($path, $arc, $archive ? true : $dir);
            } catch(Exception $e) {
                return $this->setError($e->getMessage());
            }

            // get files list
            try {
                $ls = self::localScandir($dir);
            } catch (Exception $e) {
                return false;
            }

            // no files - extract error ?
            if (empty($ls)) {
                return false;
            }

            $this->archiveSize = 0;

            // find symlinks and check extracted items
            $checkRes = $this->checkExtractItems($dir);
            if ($checkRes['symlinks']) {
                self::localRmdirRecursive($dir);
                return $this->setError(array_merge($this->error, array(elFinder::ERROR_ARC_SYMLINKS)));
            }
            $this->archiveSize = $checkRes['totalSize'];
            if ($checkRes['rmNames']) {
                foreach ($checkRes['rmNames'] as $name) {
                    $this->addError(elFinder::ERROR_SAVE, $name);
                }
            }

            // check max files size
            if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $this->archiveSize) {
                $this->delTree($dir);
                return $this->setError(elFinder::ERROR_ARC_MAXSIZE);
            }

            $extractTo = $this->extractToNewdir; // 'auto', ture or false

            // archive contains one item - extract in archive dir
            $name = '';
            $src = $dir . DIRECTORY_SEPARATOR . $ls[0];
            if (($extractTo === 'auto' || !$extractTo) && count($ls) === 1 && is_file($src)) {
                $name = $ls[0];
            } else if ($extractTo === 'auto' || $extractTo) {
                // for several files - create new directory
                // create unique name for directory
                $src = $dir;
                $splits = elFinder::splitFileExtention(basename($path));
                $name = $splits[0];
                $test = dirname($path) . DIRECTORY_SEPARATOR . $name;
                if (file_exists($test) || is_link($test)) {
                    $name = $this->uniqueName(dirname($path), $name, '-', false);
                }
            }

            if ($name !== '') {
                $result = dirname($path) . DIRECTORY_SEPARATOR . $name;

                if (!rename($src, $result)) {
                    $this->delTree($dir);
                    return false;
                }
            } else {
                $dstDir = dirname($path);
                $result = array();
                foreach ($ls as $name) {
                    $target = $dstDir . DIRECTORY_SEPARATOR . $name;
                    if (self::localMoveRecursive($dir . DIRECTORY_SEPARATOR . $name, $target, true, $this->options['copyJoin'])) {
                        $result[] = $target;
                    }
                }
                if (!$result) {
                    $this->delTree($dir);
                    return false;
                }
            }

            is_dir($dir) && $this->delTree($dir);

            return (is_array($result) || file_exists($result)) ? $result : false;
        }
        //TODO: Add return statement here
        return false;
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function _archive($dir, $files, $name, $arc)
    {
        return $this->makeArchive($dir, $files, $name, $arc);
    }

    /******************** Over write functions *************************/

    /**
     * File path of local server side work file path
     *
     * @param  string $path
     *
     * @return string
     * @author Naoki Sawada
     */
    protected function getWorkFile($path)
    {
        return $path;
    }

    /**
     * Delete dirctory trees
     *
     * @param string $localpath path need convert encoding to server encoding
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function delTree($localpath)
    {
        return $this->rmdirRecursive($localpath);
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers
     *
     * @param  string $path file cache
     *
     * @return array|boolean false
     */
    protected function isNameExists($path)
    {
        $exists = file_exists($this->convEncIn($path));
        // restore locale
        $this->convEncOut();
        return $exists ? $this->stat($path) : false;
    }

    /******************** Over write (Optimized) functions *************************/

    /**
     * Recursive files search
     *
     * @param  string $path dir path
     * @param  string $q    search string
     * @param  array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod']) || $this->encoding || !class_exists('FilesystemIterator', false)) {
            // has custom match method or non UTF-8, use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        $result = array();

        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
        if ($timeout && $timeout < time()) {
            $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
            return $result;
        }
        elFinder::extendTimeLimit($this->options['searchTimeout'] + 30);

        $match = array();
        try {
            $iterator = new RecursiveIteratorIterator(
                new RecursiveCallbackFilterIterator(
                    new RecursiveDirectoryIterator($path,
                        FilesystemIterator::KEY_AS_PATHNAME |
                        FilesystemIterator::SKIP_DOTS |
                        ((defined('RecursiveDirectoryIterator::FOLLOW_SYMLINKS') && $this->options['followSymLinks']) ?
                            RecursiveDirectoryIterator::FOLLOW_SYMLINKS : 0)
                    ),
                    array($this, 'localFileSystemSearchIteratorFilter')
                ),
                RecursiveIteratorIterator::SELF_FIRST,
                RecursiveIteratorIterator::CATCH_GET_CHILD
            );
            foreach ($iterator as $key => $node) {
                if ($timeout && ($this->error || $timeout < time())) {
                    !$this->error && $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($node->getPath)));
                    break;
                }
                if ($node->isDir()) {
                    if ($this->stripos($node->getFilename(), $q) !== false) {
                        $match[] = $key;
                    }
                } else {
                    $match[] = $key;
                }
            }
        } catch (Exception $e) {
        }

        if ($match) {
            foreach ($match as $p) {
                if ($timeout && ($this->error || $timeout < time())) {
                    !$this->error && $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode(dirname($p))));
                    break;
                }

                $stat = $this->stat($p);

                if (!$stat) { // invalid links
                    continue;
                }

                if (!empty($stat['hidden']) || !$this->mimeAccepted($stat['mime'], $mimes)) {
                    continue;
                }

                if ((!$mimes || $stat['mime'] !== 'directory')) {
                    $stat['path'] = $this->path($stat['hash']);
                    if ($this->URL && !isset($stat['url'])) {
                        $_path = str_replace(DIRECTORY_SEPARATOR, '/', substr($p, strlen($this->root) + 1));
                        $stat['url'] = $this->URL . str_replace('%2F', '/', rawurlencode($_path));
                    }

                    $result[] = $stat;
                }
            }
        }

        return $result;
    }

    /******************** Original local functions ************************
     *
     * @param $file
     * @param $key
     * @param $iterator
     *
     * @return bool
     */

    public function localFileSystemSearchIteratorFilter($file, $key, $iterator)
    {
        /* @var FilesystemIterator $file */
        /* @var RecursiveDirectoryIterator $iterator */
        $name = $file->getFilename();
        if ($this->doSearchCurrentQuery['excludes']) {
            foreach ($this->doSearchCurrentQuery['excludes'] as $exclude) {
                if ($this->stripos($name, $exclude) !== false) {
                    return false;
                }
            }
        }
        if ($iterator->hasChildren()) {
            if ($this->options['searchExDirReg'] && preg_match($this->options['searchExDirReg'], $key)) {
                return false;
            }
            return (bool)$this->attr($key, 'read', null, true);
        }
        return ($this->stripos($name, $this->doSearchCurrentQuery['q']) === false) ? false : true;
    }

    /**
     * Creates a symbolic link
     *
     * @param      string   $target  The target
     * @param      string   $link    The link
     *
     * @return     boolean  ( result of symlink() )
     */
    protected function localFileSystemSymlink($target, $link)
    {
        $res = false;
        if (function_exists('symlink') and is_callable('symlink')) {
            $errlev = error_reporting();
            error_reporting($errlev ^ E_WARNING);
            if ($res = symlink(realpath($target), $link)) {
                $res = is_readable($link);
            }
            error_reporting($errlev);
        }
        return $res;
    }
} // END class lib/php/elFinderVolumeGroup.class.php000064400000012373147361034400013663 0ustar00<?php

/**
 * elFinder driver for Volume Group.
 *
 * @author Naoki Sawada
 **/
class elFinderVolumeGroup extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'g';


    /**
     * Constructor
     * Extend options with required fields
     */
    public function __construct()
    {
        $this->options['type'] = 'group';
        $this->options['path'] = '/';
        $this->options['dirUrlOwn'] = true;
        $this->options['syncMinMs'] = 0;
        $this->options['tmbPath'] = '';
        $this->options['disabled'] = array(
            'archive',
            'copy',
            'cut',
            'duplicate',
            'edit',
            'empty',
            'extract',
            'getfile',
            'mkdir',
            'mkfile',
            'paste',
            'resize',
            'rm',
            'upload'
        );
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /*********************** paths/urls *************************/

    /**
     * @inheritdoc
     **/
    protected function _dirname($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _basename($path)
    {
        return '';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _joinPath($dir, $name)
    {
        return '/' . $name;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _normpath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _relpath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _abspath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _path($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _inpath($path, $parent)
    {
        return false;
    }



    /***************** file stat ********************/

    /**
     * {@inheritDoc}
     **/
    protected function _stat($path)
    {
        if ($path === '/') {
            return array(
                'size' => 0,
                'ts' => 0,
                'mime' => 'directory',
                'read' => true,
                'write' => false,
                'locked' => true,
                'hidden' => false,
                'dirs' => 0
            );
        }
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _subdirs($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _dimensions($path, $mime)
    {
        return false;
    }
    /******************** file/dir content *********************/

    /**
     * {@inheritDoc}
     **/
    protected function readlink($path)
    {
        return null;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _scandir($path)
    {
        return array();
    }

    /**
     * {@inheritDoc}
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _fclose($fp, $path = '')
    {
        return true;
    }

    /********************  file/dir manipulations *************************/

    /**
     * {@inheritDoc}
     **/
    protected function _mkdir($path, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _mkfile($path, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _symlink($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _copy($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _move($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _unlink($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _rmdir($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _getContents($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _filePutContents($path, $content)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _checkArchivers()
    {
        return;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _findSymlinks($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _extract($path, $arc)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        return false;
    }
}

lib/php/elFinderSession.php000064400000021074147361034400011714 0ustar00<?php

/**
 * elFinder - file manager for web.
 * Session Wrapper Class.
 *
 * @package elfinder
 * @author  Naoki Sawada
 **/

class elFinderSession implements elFinderSessionInterface
{
    /**
     * A flag of session started
     *
     * @var        boolean
     */
    protected $started = false;

    /**
     * To fix PHP bug that duplicate Set-Cookie header to be sent
     *
     * @var        boolean
     * @see        https://bugs.php.net/bug.php?id=75554
     */
    protected $fixCookieRegist = false;

    /**
     * Array of session keys of this instance
     *
     * @var        array
     */
    protected $keys = array();

    /**
     * Is enabled base64encode
     *
     * @var        boolean
     */
    protected $base64encode = false;

    /**
     * Default options array
     *
     * @var        array
     */
    protected $opts = array(
        'base64encode' => false,
        'keys' => array(
            'default' => 'elFinderCaches',
            'netvolume' => 'elFinderNetVolumes'
        ),
        'cookieParams' => array()
    );

    /**
     * Constractor
     *
     * @param      array $opts The options
     *
     * @return     self    Instanse of this class
     */
    public function __construct($opts)
    {
        $this->opts = array_merge($this->opts, $opts);
        $this->base64encode = !empty($this->opts['base64encode']);
        $this->keys = $this->opts['keys'];
        if (function_exists('apache_get_version') || $this->opts['cookieParams']) {
            $this->fixCookieRegist = true;
        }
    }

    /**
     * {@inheritdoc}
     */
    public function get($key, $empty = null)
    {
        $closed = false;
        if (!$this->started) {
            $closed = true;
            $this->start();
        }

        $data = null;

        if ($this->started) {
            $session =& $this->getSessionRef($key);
            $data = $session;
            if ($data && $this->base64encode) {
                $data = $this->decodeData($data);
            }
        }

        $checkFn = null;
        if (!is_null($empty)) {
            if (is_string($empty)) {
                $checkFn = 'is_string';
            } elseif (is_array($empty)) {
                $checkFn = 'is_array';
            } elseif (is_object($empty)) {
                $checkFn = 'is_object';
            } elseif (is_float($empty)) {
                $checkFn = 'is_float';
            } elseif (is_int($empty)) {
                $checkFn = 'is_int';
            }
        }

        if (is_null($data) || ($checkFn && !$checkFn($data))) {
            $session = $data = $empty;
        }

        if ($closed) {
            $this->close();
        }

        return $data;
    }

    /**
     * {@inheritdoc}
     */
    public function start()
    {
        set_error_handler(array($this, 'session_start_error'), E_NOTICE | E_WARNING);

        // apache2 SAPI has a bug of session cookie register
        // see https://bugs.php.net/bug.php?id=75554
        // see https://github.com/php/php-src/pull/3231
        if ($this->fixCookieRegist === true) {
            if ((int)ini_get('session.use_cookies') === 1) {
                if (ini_set('session.use_cookies', 0) === false) {
                    $this->fixCookieRegist = false;
                }
            }
        }

        if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
            if (session_status() !== PHP_SESSION_ACTIVE) {
                session_start();
            }
        } else {
            session_start();
        }
        $this->started = session_id() ? true : false;

        restore_error_handler();

        return $this;
    }

    /**
     * Get variable reference of $_SESSION
     *
     * @param string $key key of $_SESSION array
     *
     * @return mixed|null
     */
    protected function & getSessionRef($key)
    {
        $session = null;
        if ($this->started) {
            list($cat, $name) = array_pad(explode('.', $key, 2), 2, null);
            if (is_null($name)) {
                if (!isset($this->keys[$cat])) {
                    $name = $cat;
                    $cat = 'default';
                }
            }
            if (isset($this->keys[$cat])) {
                $cat = $this->keys[$cat];
            } else {
                $name = $cat . '.' . $name;
                $cat = $this->keys['default'];
            }
            if (is_null($name)) {
                if (!isset($_SESSION[$cat])) {
                    $_SESSION[$cat] = null;
                }
                $session =& $_SESSION[$cat];
            } else {
                if (!isset($_SESSION[$cat]) || !is_array($_SESSION[$cat])) {
                    $_SESSION[$cat] = array();
                }
                if (!isset($_SESSION[$cat][$name])) {
                    $_SESSION[$cat][$name] = null;
                }
                $session =& $_SESSION[$cat][$name];
            }
        }
        return $session;
    }

    /**
     * base64 decode of session val
     *
     * @param $data
     *
     * @return bool|mixed|string|null
     */
    protected function decodeData($data)
    {
        if ($this->base64encode) {
            if (is_string($data)) {
                if (($data = base64_decode($data)) !== false) {
                    $data = unserialize($data);
                } else {
                    $data = null;
                }
            } else {
                $data = null;
            }
        }
        return $data;
    }

    /**
     * {@inheritdoc}
     */
    public function close()
    {
        if ($this->started) {
            if ($this->fixCookieRegist === true) {
                // regist cookie only once for apache2 SAPI
                $cParm = session_get_cookie_params();
                if ($this->opts['cookieParams'] && is_array($this->opts['cookieParams'])) {
                    $cParm = array_merge($cParm, $this->opts['cookieParams']);
                }
                if (version_compare(PHP_VERSION, '7.3', '<')) {
                    setcookie(session_name(), session_id(), 0, $cParm['path'] . (!empty($cParm['SameSite'])? '; SameSite=' . $cParm['SameSite'] : ''), $cParm['domain'], $cParm['secure'], $cParm['httponly']);
                } else {
                    $allows = array('expires' => true, 'path' => true, 'domain' => true, 'secure' => true, 'httponly' => true, 'samesite' => true);
                    foreach(array_keys($cParm) as $_k) {
                        if (!isset($allows[$_k])) {
                            unset($cParm[$_k]);
                        }
                    }
                    setcookie(session_name(), session_id(), $cParm);
                }
                $this->fixCookieRegist = false;
            }
            session_write_close();
        }
        $this->started = false;

        return $this;
    }

    /**
     * {@inheritdoc}
     */
    public function set($key, $data)
    {
        $closed = false;
        if (!$this->started) {
            $closed = true;
            $this->start();
        }
        $session =& $this->getSessionRef($key);
        if ($this->base64encode) {
            $data = $this->encodeData($data);
        }
        $session = $data;

        if ($closed) {
            $this->close();
        }

        return $this;
    }

    /**
     * base64 encode for session val
     *
     * @param $data
     *
     * @return string
     */
    protected function encodeData($data)
    {
        if ($this->base64encode) {
            $data = base64_encode(serialize($data));
        }
        return $data;
    }

    /**
     * {@inheritdoc}
     */
    public function remove($key)
    {
        $closed = false;
        if (!$this->started) {
            $closed = true;
            $this->start();
        }

        list($cat, $name) = array_pad(explode('.', $key, 2), 2, null);
        if (is_null($name)) {
            if (!isset($this->keys[$cat])) {
                $name = $cat;
                $cat = 'default';
            }
        }
        if (isset($this->keys[$cat])) {
            $cat = $this->keys[$cat];
        } else {
            $name = $cat . '.' . $name;
            $cat = $this->keys['default'];
        }
        if (is_null($name)) {
            unset($_SESSION[$cat]);
        } else {
            if (isset($_SESSION[$cat]) && is_array($_SESSION[$cat])) {
                unset($_SESSION[$cat][$name]);
            }
        }

        if ($closed) {
            $this->close();
        }

        return $this;
    }

    /**
     * sessioin error handler (Only for suppression of error at session start)
     *
     * @param $errno
     * @param $errstr
     */
    protected function session_start_error($errno, $errstr)
    {
    }
}
lib/php/libs/GdBmp.php000064400000047332147361034400010547 0ustar00<?php
/**
 * Copyright (c) 2011, oov. All rights reserved.
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *  - Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *  - Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *  - Neither the name of the oov nor the names of its contributors may be used to
 *    endorse or promote products derived from this software without specific prior
 *    written permission.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * bmp ファイルを GD で使えるように
 * 使用例:
 *   //ファイルから読み込む場合はGDでPNGなどを読み込むのと同じような方法で可
 *   $image = imagecreatefrombmp("test.bmp");
 *   imagedestroy($image);
 *   //文字列から読み込む場合は以下の方法で可
 *   $image = GdBmp::loadFromString(file_get_contents("test.bmp"));
 *   //自動判定されるので破損ファイルでなければこれでも上手くいく
 *   //$image = imagecreatefrombmp(file_get_contents("test.bmp"));
 *   imagedestroy($image);
 *   //その他任意のストリームからの読み込みも可能
 *   $stream = fopen("http://127.0.0.1/test.bmp");
 *   $image = GdBmp::loadFromStream($stream);
 *   //自動判定されるのでこれでもいい
 *   //$image = imagecreatefrombmp($stream);
 *   fclose($stream);
 *   imagedestroy($image);
 * 対応フォーマット
 *   1bit
 *   4bit
 *   4bitRLE
 *   8bit
 *   8bitRLE
 *   16bit(任意のビットフィールド)
 *   24bit
 *   32bit(任意のビットフィールド)
 *   BITMAPINFOHEADER の biCompression が BI_PNG / BI_JPEG の画像
 *   すべての形式でトップダウン/ボトムアップの両方をサポート
 *   特殊なビットフィールドでもビットフィールドデータが正常なら読み込み可能
 * 以下のものは非対応
 *   BITMAPV4HEADER と BITMAPV5HEADER に含まれる色空間に関する様々な機能
 *
 * @param $filename_or_stream_or_binary
 *
 * @return bool|resource
 */

if (!function_exists('imagecreatefrombmp')) {
    function imagecreatefrombmp($filename_or_stream_or_binary)
    {
        return elFinderLibGdBmp::load($filename_or_stream_or_binary);
    }
}

class elFinderLibGdBmp
{
    public static function load($filename_or_stream_or_binary)
    {
        if (is_resource($filename_or_stream_or_binary)) {
            return self::loadFromStream($filename_or_stream_or_binary);
        } else if (is_string($filename_or_stream_or_binary) && strlen($filename_or_stream_or_binary) >= 26) {
            $bfh = unpack("vtype/Vsize", $filename_or_stream_or_binary);
            if ($bfh["type"] == 0x4d42 && ($bfh["size"] == 0 || $bfh["size"] == strlen($filename_or_stream_or_binary))) {
                return self::loadFromString($filename_or_stream_or_binary);
            }
        }
        return self::loadFromFile($filename_or_stream_or_binary);
    }

    public static function loadFromFile($filename)
    {
        $fp = fopen($filename, "rb");
        if ($fp === false) {
            return false;
        }

        $bmp = self::loadFromStream($fp);

        fclose($fp);
        return $bmp;
    }

    public static function loadFromString($str)
    {
        //data scheme より古いバージョンから対応しているようなので php://memory を使う
        $fp = fopen("php://memory", "r+b");
        if ($fp === false) {
            return false;
        }

        if (fwrite($fp, $str) != strlen($str)) {
            fclose($fp);
            return false;
        }

        if (fseek($fp, 0) === -1) {
            fclose($fp);
            return false;
        }

        $bmp = self::loadFromStream($fp);

        fclose($fp);
        return $bmp;
    }

    public static function loadFromStream($stream)
    {
        $buf = fread($stream, 14); //2+4+2+2+4
        if ($buf === false) {
            return false;
        }

        //シグネチャチェック
        if ($buf[0] != 'B' || $buf[1] != 'M') {
            return false;
        }

        $bitmap_file_header = unpack(
        //BITMAPFILEHEADER構造体
            "vtype/" .
            "Vsize/" .
            "vreserved1/" .
            "vreserved2/" .
            "Voffbits", $buf
        );

        return self::loadFromStreamAndFileHeader($stream, $bitmap_file_header);
    }

    public static function loadFromStreamAndFileHeader($stream, array $bitmap_file_header)
    {
        if ($bitmap_file_header["type"] != 0x4d42) {
            return false;
        }

        //情報ヘッダサイズを元に形式を区別して読み込み
        $buf = fread($stream, 4);
        if ($buf === false) {
            return false;
        }
        list(, $header_size) = unpack("V", $buf);


        if ($header_size == 12) {
            $buf = fread($stream, $header_size - 4);
            if ($buf === false) {
                return false;
            }

            extract(unpack(
            //BITMAPCOREHEADER構造体 - OS/2 Bitmap
                "vwidth/" .
                "vheight/" .
                "vplanes/" .
                "vbit_count", $buf
            ));
            //飛んでこない分は 0 で初期化しておく
            $clr_used = $clr_important = $alpha_mask = $compression = 0;

            //マスク類は初期化されないのでここで割り当てておく
            $red_mask = 0x00ff0000;
            $green_mask = 0x0000ff00;
            $blue_mask = 0x000000ff;
        } else if (124 < $header_size || $header_size < 40) {
            //未知の形式
            return false;
        } else {
            //この時点で36バイト読めることまではわかっている
            $buf = fread($stream, 36); //既に読んだ部分は除外しつつBITMAPINFOHEADERのサイズだけ読む
            if ($buf === false) {
                return false;
            }

            //BITMAPINFOHEADER構造体 - Windows Bitmap
            extract(unpack(
                "Vwidth/" .
                "Vheight/" .
                "vplanes/" .
                "vbit_count/" .
                "Vcompression/" .
                "Vsize_image/" .
                "Vx_pels_per_meter/" .
                "Vy_pels_per_meter/" .
                "Vclr_used/" .
                "Vclr_important", $buf
            ));
            /**
             * @var integer $width
             * @var integer $height
             * @var integer $planes
             * @var integer $bit_count
             * @var integer $compression
             * @var integer $size_image
             * @var integer $x_pels_per_meter
             * @var integer $y_pels_per_meter
             * @var integer $clr_used
             * @var integer $clr_important
             */
            //負の整数を受け取る可能性があるものは自前で変換する
            if ($width & 0x80000000) {
                $width = -(~$width & 0xffffffff) - 1;
            }
            if ($height & 0x80000000) {
                $height = -(~$height & 0xffffffff) - 1;
            }
            if ($x_pels_per_meter & 0x80000000) {
                $x_pels_per_meter = -(~$x_pels_per_meter & 0xffffffff) - 1;
            }
            if ($y_pels_per_meter & 0x80000000) {
                $y_pels_per_meter = -(~$y_pels_per_meter & 0xffffffff) - 1;
            }

            //ファイルによっては BITMAPINFOHEADER のサイズがおかしい(書き込み間違い?)ケースがある
            //自分でファイルサイズを元に逆算することで回避できることもあるので再計算できそうなら正当性を調べる
            //シークできないストリームの場合全体のファイルサイズは取得できないので、$bitmap_file_headerにサイズ申告がなければやらない
            if ($bitmap_file_header["size"] != 0) {
                $colorsize = $bit_count == 1 || $bit_count == 4 || $bit_count == 8 ? ($clr_used ? $clr_used : pow(2, $bit_count)) << 2 : 0;
                $bodysize = $size_image ? $size_image : ((($width * $bit_count + 31) >> 3) & ~3) * abs($height);
                $calcsize = $bitmap_file_header["size"] - $bodysize - $colorsize - 14;

                //本来であれば一致するはずなのに合わない時は、値がおかしくなさそうなら(BITMAPV5HEADERの範囲内なら)計算して求めた値を採用する
                if ($header_size < $calcsize && 40 <= $header_size && $header_size <= 124) {
                    $header_size = $calcsize;
                }
            }

            //BITMAPV4HEADER や BITMAPV5HEADER の場合まだ読むべきデータが残っている可能性がある
            if ($header_size - 40 > 0) {
                $buf = fread($stream, $header_size - 40);
                if ($buf === false) {
                    return false;
                }

                extract(unpack(
                //BITMAPV4HEADER構造体(Windows95以降)
                //BITMAPV5HEADER構造体(Windows98/2000以降)
                    "Vred_mask/" .
                    "Vgreen_mask/" .
                    "Vblue_mask/" .
                    "Valpha_mask", $buf . str_repeat("\x00", 120)
                ));
            } else {
                $alpha_mask = $red_mask = $green_mask = $blue_mask = 0;
            }

            //パレットがないがカラーマスクもない時
            if (
                ($bit_count == 16 || $bit_count == 24 || $bit_count == 32) &&
                $compression == 0 &&
                $red_mask == 0 && $green_mask == 0 && $blue_mask == 0
            ) {
                //もしカラーマスクを所持していない場合は
                //規定のカラーマスクを適用する
                switch ($bit_count) {
                    case 16:
                        $red_mask = 0x7c00;
                        $green_mask = 0x03e0;
                        $blue_mask = 0x001f;
                        break;
                    case 24:
                    case 32:
                        $red_mask = 0x00ff0000;
                        $green_mask = 0x0000ff00;
                        $blue_mask = 0x000000ff;
                        break;
                }
            }
        }

        if (
            ($width == 0) ||
            ($height == 0) ||
            ($planes != 1) ||
            (($alpha_mask & $red_mask) != 0) ||
            (($alpha_mask & $green_mask) != 0) ||
            (($alpha_mask & $blue_mask) != 0) ||
            (($red_mask & $green_mask) != 0) ||
            (($red_mask & $blue_mask) != 0) ||
            (($green_mask & $blue_mask) != 0)
        ) {
            //不正な画像
            return false;
        }

        //BI_JPEG と BI_PNG の場合は jpeg/png がそのまま入ってるだけなのでそのまま取り出してデコードする
        if ($compression == 4 || $compression == 5) {
            $buf = stream_get_contents($stream, $size_image);
            if ($buf === false) {
                return false;
            }
            return imagecreatefromstring($buf);
        }

        //画像本体の読み出し
        //1行のバイト数
        $line_bytes = (($width * $bit_count + 31) >> 3) & ~3;
        //全体の行数
        $lines = abs($height);
        //y軸進行量(ボトムアップかトップダウンか)
        $y = $height > 0 ? $lines - 1 : 0;
        $line_step = $height > 0 ? -1 : 1;

        //256色以下の画像か?
        if ($bit_count == 1 || $bit_count == 4 || $bit_count == 8) {
            $img = imagecreate($width, $lines);

            //画像データの前にパレットデータがあるのでパレットを作成する
            $palette_size = $header_size == 12 ? 3 : 4; //OS/2形式の場合は x に相当する箇所のデータは最初から確保されていない
            $colors = $clr_used ? $clr_used : pow(2, $bit_count); //色数
            $palette = array();
            for ($i = 0; $i < $colors; ++$i) {
                $buf = fread($stream, $palette_size);
                if ($buf === false) {
                    imagedestroy($img);
                    return false;
                }
                extract(unpack("Cb/Cg/Cr/Cx", $buf . "\x00"));
                /**
                 * @var integer $b
                 * @var integer $g
                 * @var integer $r
                 * @var integer $x
                 */
                $palette[] = imagecolorallocate($img, $r, $g, $b);
            }

            $shift_base = 8 - $bit_count;
            $mask = ((1 << $bit_count) - 1) << $shift_base;

            //圧縮されている場合とされていない場合でデコード処理が大きく変わる
            if ($compression == 1 || $compression == 2) {
                $x = 0;
                $qrt_mod2 = $bit_count >> 2 & 1;
                for (; ;) {
                    //もし描写先が範囲外になっている場合デコード処理がおかしくなっているので抜ける
                    //変なデータが渡されたとしても最悪なケースで255回程度の無駄なので目を瞑る
                    if ($x < -1 || $x > $width || $y < -1 || $y > $height) {
                        imagedestroy($img);
                        return false;
                    }
                    $buf = fread($stream, 1);
                    if ($buf === false) {
                        imagedestroy($img);
                        return false;
                    }
                    switch ($buf) {
                        case "\x00":
                            $buf = fread($stream, 1);
                            if ($buf === false) {
                                imagedestroy($img);
                                return false;
                            }
                            switch ($buf) {
                                case "\x00": //EOL
                                    $y += $line_step;
                                    $x = 0;
                                    break;
                                case "\x01": //EOB
                                    $y = 0;
                                    $x = 0;
                                    break 3;
                                case "\x02": //MOV
                                    $buf = fread($stream, 2);
                                    if ($buf === false) {
                                        imagedestroy($img);
                                        return false;
                                    }
                                    list(, $xx, $yy) = unpack("C2", $buf);
                                    $x += $xx;
                                    $y += $yy * $line_step;
                                    break;
                                default:     //ABS
                                    list(, $pixels) = unpack("C", $buf);
                                    $bytes = ($pixels >> $qrt_mod2) + ($pixels & $qrt_mod2);
                                    $buf = fread($stream, ($bytes + 1) & ~1);
                                    if ($buf === false) {
                                        imagedestroy($img);
                                        return false;
                                    }
                                    for ($i = 0, $pos = 0; $i < $pixels; ++$i, ++$x, $pos += $bit_count) {
                                        list(, $c) = unpack("C", $buf[$pos >> 3]);
                                        $b = $pos & 0x07;
                                        imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]);
                                    }
                                    break;
                            }
                            break;
                        default:
                            $buf2 = fread($stream, 1);
                            if ($buf2 === false) {
                                imagedestroy($img);
                                return false;
                            }
                            list(, $size, $c) = unpack("C2", $buf . $buf2);
                            for ($i = 0, $pos = 0; $i < $size; ++$i, ++$x, $pos += $bit_count) {
                                $b = $pos & 0x07;
                                imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]);
                            }
                            break;
                    }
                }
            } else {
                for ($line = 0; $line < $lines; ++$line, $y += $line_step) {
                    $buf = fread($stream, $line_bytes);
                    if ($buf === false) {
                        imagedestroy($img);
                        return false;
                    }

                    $pos = 0;
                    for ($x = 0; $x < $width; ++$x, $pos += $bit_count) {
                        list(, $c) = unpack("C", $buf[$pos >> 3]);
                        $b = $pos & 0x7;
                        imagesetpixel($img, $x, $y, $palette[($c & ($mask >> $b)) >> ($shift_base - $b)]);
                    }
                }
            }
        } else {
            $img = imagecreatetruecolor($width, $lines);
            imagealphablending($img, false);
            if ($alpha_mask) {
                //αデータがあるので透過情報も保存できるように
                imagesavealpha($img, true);
            }

            //x軸進行量
            $pixel_step = $bit_count >> 3;
            $alpha_max = $alpha_mask ? 0x7f : 0x00;
            $alpha_mask_r = $alpha_mask ? 1 / $alpha_mask : 1;
            $red_mask_r = $red_mask ? 1 / $red_mask : 1;
            $green_mask_r = $green_mask ? 1 / $green_mask : 1;
            $blue_mask_r = $blue_mask ? 1 / $blue_mask : 1;

            for ($line = 0; $line < $lines; ++$line, $y += $line_step) {
                $buf = fread($stream, $line_bytes);
                if ($buf === false) {
                    imagedestroy($img);
                    return false;
                }

                $pos = 0;
                for ($x = 0; $x < $width; ++$x, $pos += $pixel_step) {
                    list(, $c) = unpack("V", substr($buf, $pos, $pixel_step) . "\x00\x00");
                    $a_masked = $c & $alpha_mask;
                    $r_masked = $c & $red_mask;
                    $g_masked = $c & $green_mask;
                    $b_masked = $c & $blue_mask;
                    $a = $alpha_max - ((($a_masked << 7) - $a_masked) * $alpha_mask_r);
                    $r = (($r_masked << 8) - $r_masked) * $red_mask_r;
                    $g = (($g_masked << 8) - $g_masked) * $green_mask_r;
                    $b = (($b_masked << 8) - $b_masked) * $blue_mask_r;
                    imagesetpixel($img, $x, $y, ($a << 24) | ($r << 16) | ($g << 8) | $b);
                }
            }
            imagealphablending($img, true); //デフォルト値に戻しておく
        }
        return $img;
    }
}
lib/php/elFinderVolumeBox.class.php000064400000170514147361034400013321 0ustar00<?php

/**
 * Simple elFinder driver for BoxDrive
 * Box.com API v2.0.
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeBox extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'bd';

    /**
     * @var string The base URL for API requests
     */
    const API_URL = 'https://api.box.com/2.0';

    /**
     * @var string The base URL for authorization requests
     */
    const AUTH_URL = 'https://account.box.com/api/oauth2/authorize';

    /**
     * @var string The base URL for token requests
     */
    const TOKEN_URL = 'https://api.box.com/oauth2/token';

    /**
     * @var string The base URL for upload requests
     */
    const UPLOAD_URL = 'https://upload.box.com/api/2.0';

    /**
     * Fetch fields list.
     *
     * @var string
     */
    const FETCHFIELDS = 'type,id,name,created_at,modified_at,description,size,parent,permissions,file_version,shared_link';

    /**
     * Box.com token object.
     *
     * @var object
     **/
    protected $token = null;

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Thumbnail prefix.
     *
     * @var string
     **/
    private $tmbPrefix = '';

    /**
     * Path to access token file for permanent mount
     *
     * @var string
     */
    private $aTokenFile = '';

    /**
     * hasCache by folders.
     *
     * @var array
     **/
    protected $HasdirsCache = array();

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     **/
    public function __construct()
    {
        $opts = array(
            'client_id' => '',
            'client_secret' => '',
            'accessToken' => '',
            'root' => 'Box.com',
            'path' => '/',
            'separator' => '/',
            'tmbPath' => '',
            'tmbURL' => '',
            'tmpPath' => '',
            'acceptedName' => '#^[^\\\/]+$#',
            'rootCssClass' => 'elfinder-navbar-root-box',
        );
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _bd_splitPath($path)
    {
        $path = trim($path, '/');
        $pid = '';
        if ($path === '') {
            $id = '0';
            $parent = '';
        } else {
            $paths = explode('/', trim($path, '/'));
            $id = array_pop($paths);
            if ($paths) {
                $parent = '/' . implode('/', $paths);
                $pid = array_pop($paths);
            } else {
                $pid = '0';
                $parent = '/';
            }
        }

        return array($pid, $id, $parent);
    }

    /**
     * Obtains a new access token from OAuth. This token is valid for one hour.
     *
     * @param string $clientSecret The Box client secret
     * @param string $code         The code returned by Box after
     *                             successful log in
     * @param string $redirectUri  Must be the same as the redirect URI passed
     *                             to LoginUrl
     *
     * @return bool|object
     * @throws \Exception Thrown if this Client instance's clientId is not set
     * @throws \Exception Thrown if the redirect URI of this Client instance's
     *                    state is not set
     */
    protected function _bd_obtainAccessToken($client_id, $client_secret, $code)
    {
        if (null === $client_id) {
            return $this->setError('The client ID must be set to call obtainAccessToken()');
        }

        if (null === $client_secret) {
            return $this->setError('The client Secret must be set to call obtainAccessToken()');
        }

        if (null === $code) {
            return $this->setError('Authorization code must be set to call obtainAccessToken()');
        }

        $url = self::TOKEN_URL;

        $curl = curl_init();

        $fields = http_build_query(
            array(
                'client_id' => $client_id,
                'client_secret' => $client_secret,
                'code' => $code,
                'grant_type' => 'authorization_code',
            )
        );

        curl_setopt_array($curl, array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $fields,
            CURLOPT_URL => $url,
        ));

        $decoded = $this->_bd_curlExec($curl, true, array('Content-Length: ' . strlen($fields)));

        $res = (object)array(
            'expires' => time() + $decoded->expires_in - 30,
            'initialToken' => '',
            'data' => $decoded
        );
        if (!empty($decoded->refresh_token)) {
            $res->initialToken = md5($client_id . $decoded->refresh_token);
        }
        return $res;
    }

    /**
     * Get token and auto refresh.
     *
     * @return true|string error message
     * @throws Exception
     */
    protected function _bd_refreshToken()
    {
        if (!property_exists($this->token, 'expires') || $this->token->expires < time()) {
            if (!$this->options['client_id']) {
                $this->options['client_id'] = ELFINDER_BOX_CLIENTID;
            }

            if (!$this->options['client_secret']) {
                $this->options['client_secret'] = ELFINDER_BOX_CLIENTSECRET;
            }

            if (empty($this->token->data->refresh_token)) {
                throw new \Exception(elFinder::ERROR_REAUTH_REQUIRE);
            } else {
                $refresh_token = $this->token->data->refresh_token;
                $initialToken = $this->_bd_getInitialToken();
            }

            $lock = '';
            $aTokenFile = $this->aTokenFile? $this->aTokenFile : $this->_bd_getATokenFile();
            if ($aTokenFile && is_file($aTokenFile)) {
                $lock = $aTokenFile . '.lock';
                if (file_exists($lock)) {
                    // Probably updating on other instance
                    return true;
                }
                touch($lock);
                $GLOBALS['elFinderTempFiles'][$lock] = true;
            }

            $postData = array(
                'client_id' => $this->options['client_id'],
                'client_secret' => $this->options['client_secret'],
                'grant_type' => 'refresh_token',
                'refresh_token' => $refresh_token
            );

            $url = self::TOKEN_URL;

            $curl = curl_init();

            curl_setopt_array($curl, array(
                // General options.
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_POST => true, // i am sending post data
                CURLOPT_POSTFIELDS => http_build_query($postData),
                CURLOPT_URL => $url,
            ));

            $decoded = $error = '';
            try {
                $decoded = $this->_bd_curlExec($curl, true, array(), $postData);
            } catch (Exception $e) {
                $error = $e->getMessage();
            }
            if (!$decoded && !$error) {
                $error = 'Tried to renew the access token, but did not get a response from the Box server.';
            }
            if ($error) {
                $lock && unlink($lock);
                throw new \Exception('Box access token update failed. ('.$error.') If this message appears repeatedly, please notify the administrator.');
            }

            if (empty($decoded->access_token)) {
                if ($aTokenFile) {
                    if (is_file($aTokenFile)) {
                        unlink($aTokenFile);
                    }
                }
                $err = property_exists($decoded, 'error')? ' ' . $decoded->error : '';
                $err .= property_exists($decoded, 'error_description')? ' ' . $decoded->error_description : '';
                throw new \Exception($err? $err : elFinder::ERROR_REAUTH_REQUIRE);
            }

            $token = (object)array(
                'expires' => time() + $decoded->expires_in - 300,
                'initialToken' => $initialToken,
                'data' => $decoded,
            );

            $this->token = $token;
            $json = json_encode($token);

            if (!empty($decoded->refresh_token)) {
                if (empty($this->options['netkey']) && $aTokenFile) {
                    file_put_contents($aTokenFile, json_encode($token), LOCK_EX);
                    $this->options['accessToken'] = $json;
                } else if (!empty($this->options['netkey'])) {
                    // OAuth2 refresh token can be used only once,
                    // so update it if it is the same as the token file
                    if ($aTokenFile && is_file($aTokenFile)) {
                        if ($_token = json_decode(file_get_contents($aTokenFile))) {
                            if ($_token->data->refresh_token === $refresh_token) {
                                file_put_contents($aTokenFile, $json, LOCK_EX);
                            }
                        }
                    }
                    $this->options['accessToken'] = $json;
                    // update session value
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'accessToken', $json);
                    $this->session->set('BoxTokens', $token);
                } else {
                    throw new \Exception(ERROR_CREATING_TEMP_DIR);
                }
            }
            $lock && unlink($lock);
        }

        return true;
    }

    /**
     * Creates a base cURL object which is compatible with the Box.com API.
     *
     * @param array $options cURL options
     *
     * @return resource A compatible cURL object
     */
    protected function _bd_prepareCurl($options = array())
    {
        $curl = curl_init();

        $defaultOptions = array(
            // General options.
            CURLOPT_RETURNTRANSFER => true,
        );

        curl_setopt_array($curl, $options + $defaultOptions);

        return $curl;
    }

    /**
     * Creates a base cURL object which is compatible with the Box.com API.
     *
     * @param      $url
     * @param bool $contents
     *
     * @return boolean|array
     * @throws Exception
     */
    protected function _bd_fetch($url, $contents = false)
    {
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        if ($contents) {
            return $this->_bd_curlExec($curl, false);
        } else {
            $result = $this->_bd_curlExec($curl);

            if (isset($result->entries)) {
                $res = $result->entries;
                $cnt = count($res);
                $total = $result->total_count;
                $offset = $result->offset;
                $single = ($result->limit == 1) ? true : false;
                if (!$single && $total > ($offset + $cnt)) {
                    $offset = $offset + $cnt;
                    if (strpos($url, 'offset=') === false) {
                        $url .= '&offset=' . $offset;
                    } else {
                        $url = preg_replace('/^(.+?offset=)\d+(.*)$/', '${1}' . $offset . '$2', $url);
                    }
                    $more = $this->_bd_fetch($url);
                    if (is_array($more)) {
                        $res = array_merge($res, $more);
                    }
                }

                return $res;
            } else {
                if (isset($result->type) && $result->type === 'error') {
                    return false;
                } else {
                    return $result;
                }
            }
        }
    }

    /**
     * Call curl_exec().
     *
     * @param resource    $curl
     * @param bool|string $decodeOrParent
     * @param array       $headers
     *
     * @throws \Exception
     * @return mixed
     */
    protected function _bd_curlExec($curl, $decodeOrParent = true, $headers = array(), $postData = array())
    {
        if ($this->token) {
            $headers = array_merge(array(
                'Authorization: Bearer ' . $this->token->data->access_token,
            ), $headers);
        }

        $result = elFinder::curlExec($curl, array(), $headers, $postData);

        if (!$decodeOrParent) {
            return $result;
        }

        $decoded = json_decode($result);

        if ($error = !empty($decoded->error_code)) {
            $errmsg = $decoded->error_code;
            if (!empty($decoded->message)) {
                $errmsg .= ': ' . $decoded->message;
            }
            throw new \Exception($errmsg);
        } else if ($error = !empty($decoded->error)) {
            $errmsg = $decoded->error;
            if (!empty($decoded->error_description)) {
                $errmsg .= ': ' . $decoded->error_description;
            }
            throw new \Exception($errmsg);
        }

        // make catch
        if ($decodeOrParent && $decodeOrParent !== true) {
            $raws = null;
            if (isset($decoded->entries)) {
                $raws = $decoded->entries;
            } elseif (isset($decoded->id)) {
                $raws = array($decoded);
            }
            if ($raws) {
                foreach ($raws as $raw) {
                    if (isset($raw->id)) {
                        $stat = $this->_bd_parseRaw($raw);
                        $itemPath = $this->_joinPath($decodeOrParent, $raw->id);
                        $this->updateCache($itemPath, $stat);
                    }
                }
            }
        }

        return $decoded;
    }

    /**
     * Drive query and fetchAll.
     *
     * @param      $itemId
     * @param bool $fetch_self
     * @param bool $recursive
     *
     * @return bool|object
     * @throws Exception
     */
    protected function _bd_query($itemId, $fetch_self = false, $recursive = false)
    {
        $result = [];

        if (null === $itemId) {
            $itemId = '0';
        }

        if ($fetch_self) {
            $path = '/folders/' . $itemId . '?fields=' . self::FETCHFIELDS;
        } else {
            $path = '/folders/' . $itemId . '/items?limit=1000&fields=' . self::FETCHFIELDS;
        }

        $url = self::API_URL . $path;

        if ($recursive) {
            foreach ($this->_bd_fetch($url) as $file) {
                if ($file->type == 'folder') {
                    $result[] = $file;
                    $result = array_merge($result, $this->_bd_query($file->id, $fetch_self = false, $recursive = true));
                } elseif ($file->type == 'file') {
                    $result[] = $file;
                }
            }
        } else {
            $result = $this->_bd_fetch($url);
            if ($fetch_self && !$result) {
                $path = '/files/' . $itemId . '?fields=' . self::FETCHFIELDS;
                $url = self::API_URL . $path;
                $result = $this->_bd_fetch($url);
            }
        }

        return $result;
    }

    /**
     * Get dat(box metadata) from Box.com.
     *
     * @param string $path
     *
     * @return object box metadata
     * @throws Exception
     */
    protected function _bd_getRawItem($path)
    {
        if ($path == '/') {
            return $this->_bd_query('0', $fetch_self = true);
        }

        list(, $itemId) = $this->_bd_splitPath($path);

        try {
            return $this->_bd_query($itemId, $fetch_self = true);
        } catch (Exception $e) {
            $empty = new stdClass;
            return $empty;
        }
    }

    /**
     * Parse line from box metadata output and return file stat (array).
     *
     * @param object $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Dmitry Levashov
     **/
    protected function _bd_parseRaw($raw)
    {
        $stat = array();

        $stat['rev'] = isset($raw->id) ? $raw->id : 'root';
        $stat['name'] = $raw->name;
        if (!empty($raw->modified_at)) {
            $stat['ts'] = strtotime($raw->modified_at);
        }

        if ($raw->type === 'folder') {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
            $stat['dirs'] = -1;
        } else {
            $stat['size'] = (int)$raw->size;
            if (!empty($raw->shared_link->url) && $raw->shared_link->access == 'open') {
                if ($url = $this->getSharedWebContentLink($raw)) {
                    $stat['url'] = $url;
                }
            } elseif (!$this->disabledGetUrl) {
                $stat['url'] = '1';
            }
        }

        return $stat;
    }

    /**
     * Get thumbnail from Box.com.
     *
     * @param string $path
     * @param string $size
     *
     * @return string | boolean
     */
    protected function _bd_getThumbnail($path)
    {
        list(, $itemId) = $this->_bd_splitPath($path);

        try {
            $url = self::API_URL . '/files/' . $itemId . '/thumbnail.png?min_height=' . $this->tmbSize . '&min_width=' . $this->tmbSize;

            $contents = $this->_bd_fetch($url, true);
            return $contents;
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * Remove item.
     *
     * @param string $path file path
     *
     * @return bool
     **/
    protected function _bd_unlink($path, $type = null)
    {
        try {
            list(, $itemId) = $this->_bd_splitPath($path);

            if ($type == 'folders') {
                $url = self::API_URL . '/' . $type . '/' . $itemId . '?recursive=true';
            } else {
                $url = self::API_URL . '/' . $type . '/' . $itemId;
            }

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_CUSTOMREQUEST => 'DELETE',
            ));

            //unlink or delete File or Folder in the Parent
            $this->_bd_curlExec($curl);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Get AccessToken file path
     *
     * @return string  ( description_of_the_return_value )
     */
    protected function _bd_getATokenFile()
    {
        $tmp = $aTokenFile = '';
        if (!empty($this->token->data->refresh_token)) {
            if (!$this->tmp) {
                $tmp = elFinder::getStaticVar('commonTempPath');
                if (!$tmp) {
                    $tmp = $this->getTempPath();
                }
                $this->tmp = $tmp;
            }
            if ($tmp) {
                $aTokenFile = $tmp . DIRECTORY_SEPARATOR . $this->_bd_getInitialToken() . '.btoken';
            }
        }
        return $aTokenFile;
    }

    /**
     * Get Initial Token (MD5 hash)
     *
     * @return string
     */
    protected function _bd_getInitialToken()
    {
        return (empty($this->token->initialToken)? md5($this->options['client_id'] . (!empty($this->token->data->refresh_token)? $this->token->data->refresh_token : $this->token->data->access_token)) : $this->token->initialToken);
    }

    /*********************************************************************/
    /*                        OVERRIDE FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     * @author Raja Sharma updating for Box
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['client_id']) && defined('ELFINDER_BOX_CLIENTID')) {
            $options['client_id'] = ELFINDER_BOX_CLIENTID;
        }
        if (empty($options['client_secret']) && defined('ELFINDER_BOX_CLIENTSECRET')) {
            $options['client_secret'] = ELFINDER_BOX_CLIENTSECRET;
        }

        if (isset($options['pass']) && $options['pass'] === 'reauth') {
            $options['user'] = 'init';
            $options['pass'] = '';
            $this->session->remove('BoxTokens');
        }

        if (isset($options['id'])) {
            $this->session->set('nodeId', $options['id']);
        } else if ($_id = $this->session->get('nodeId')) {
            $options['id'] = $_id;
            $this->session->set('nodeId', $_id);
        }

        if (!empty($options['tmpPath'])) {
            if ((is_dir($options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($options['tmpPath'])) {
                $this->tmp = $options['tmpPath'];
            }
        }

        try {
            if (empty($options['client_id']) || empty($options['client_secret'])) {
                return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
            }

            $itpCare = isset($options['code']);
            $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
            if ($code) {
                try {
                    if (!empty($options['id'])) {
                        // Obtain the token using the code received by the Box.com API
                        $this->session->set('BoxTokens',
                            $this->_bd_obtainAccessToken($options['client_id'], $options['client_secret'], $code));

                        $out = array(
                            'node' => $options['id'],
                            'json' => '{"protocol": "box", "mode": "done", "reset": 1}',
                            'bind' => 'netmount'
                        );
                    } else {
                        $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                        $out = array(
                            'node' => $nodeid,
                            'json' => json_encode(array(
                                'protocol' => 'box',
                                'host' => $nodeid,
                                'mode' => 'redirect',
                                'options' => array(
                                    'id' => $nodeid,
                                    'code'=> $code
                                )
                            )),
                            'bind' => 'netmount'
                        );
                    }
                    if (!$itpCare) {
                        return array('exit' => 'callback', 'out' => $out);
                    } else {
                        return array('exit' => true, 'body' => $out['json']);
                    }
                } catch (Exception $e) {
                    $out = array(
                        'node' => $options['id'],
                        'json' => json_encode(array('error' => $e->getMessage())),
                    );

                    return array('exit' => 'callback', 'out' => $out);
                }
            } elseif (!empty($_GET['error'])) {
                $out = array(
                    'node' => $options['id'],
                    'json' => json_encode(array('error' => elFinder::ERROR_ACCESS_DENIED)),
                );

                return array('exit' => 'callback', 'out' => $out);
            }

            if ($options['user'] === 'init') {
                $this->token = $this->session->get('BoxTokens');

                if ($this->token) {
                    try {
                        $this->_bd_refreshToken();
                    } catch (Exception $e) {
                        $this->setError($e->getMessage());
                        $this->token = null;
                        $this->session->remove('BoxTokens');
                    }
                }

                if (empty($this->token)) {
                    $result = false;
                } else {
                    $path = $options['path'];
                    if ($path === '/' || $path === 'root') {
                        $path = '0';
                    }
                    $result = $this->_bd_query($path, $fetch_self = false, $recursive = false);
                }

                if ($result === false) {
                    $redirect = elFinder::getConnectorUrl();
                    $redirect .= (strpos($redirect, '?') !== false? '&' : '?') . 'cmd=netmount&protocol=box&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);

                    try {
                        $this->session->set('BoxTokens', (object)array('token' => null));
                        $url = self::AUTH_URL . '?' . http_build_query(array('response_type' => 'code', 'client_id' => $options['client_id'], 'redirect_uri' => $redirect));
                    } catch (Exception $e) {
                        return array('exit' => true, 'body' => '{msg:errAccess}');
                    }

                    $html = '<input id="elf-volumedriver-box-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                            jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "box", mode: "makebtn", url: "' . $url . '"});
                        </script>';

                    return array('exit' => true, 'body' => $html);
                } else {
                    $folders = [];

                    if ($result) {
                        foreach ($result as $res) {
                            if ($res->type == 'folder') {
                                $folders[$res->id . ' '] = $res->name;
                            }
                        }
                        natcasesort($folders);
                    }

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['root' => 'My Box'] + $folders;
                    $folders = json_encode($folders);

                    $expires = empty($this->token->data->refresh_token) ? (int)$this->token->expires : 0;
                    $mnt2res = empty($this->token->data->refresh_token) ? '' : ', "mnt2res": 1';
                    $json = '{"protocol": "box", "mode": "done", "folders": ' . $folders . ', "expires": ' . $expires . $mnt2res . '}';
                    $html = 'Box.com';
                    $html .= '<script>
                            jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                            </script>';

                    return array('exit' => true, 'body' => $html);
                }
            }
        } catch (Exception $e) {
            return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
        }

        if ($_aToken = $this->session->get('BoxTokens')) {
            $options['accessToken'] = json_encode($_aToken);
            if ($this->options['path'] === 'root' || !$this->options['path']) {
                $this->options['path'] = '/';
            }
        } else {
            $this->session->remove('BoxTokens');
            $this->setError(elFinder::ERROR_NETMOUNT, $options['host'], implode(' ', $this->error()));

            return array('exit' => true, 'error' => $this->error());
        }

        $this->session->remove('nodeId');
        unset($options['user'], $options['pass'], $options['id']);

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `box` & rm thumbs.
     *
     * @param $netVolumes
     * @param $key
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->tmbPrefix . '*.png')) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }

        return true;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && !empty($this->options['accessToken'])) {
            $res['accessToken'] = $this->options['accessToken'];
        }

        return $res;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare FTP connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn.
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function init()
    {
        if (!$this->options['accessToken']) {
            return $this->setError('Required option `accessToken` is undefined.');
        }

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        $error = false;
        try {
            $this->token = json_decode($this->options['accessToken']);
            if (!is_object($this->token)) {
                throw new Exception('Required option `accessToken` is invalid JSON.');
            }

            // make net mount key
            if (empty($this->options['netkey'])) {
                $this->netMountKey = $this->_bd_getInitialToken();
            } else {
                $this->netMountKey = $this->options['netkey'];
            }

            if ($this->aTokenFile = $this->_bd_getATokenFile()) {
                if (empty($this->options['netkey'])) {
                    if ($this->aTokenFile) {
                        if (is_file($this->aTokenFile)) {
                            $this->token = json_decode(file_get_contents($this->aTokenFile));
                            if (!is_object($this->token)) {
                                unlink($this->aTokenFile);
                                throw new Exception('Required option `accessToken` is invalid JSON.');
                            }
                        } else {
                            file_put_contents($this->aTokenFile, json_encode($this->token), LOCK_EX);
                        }
                    }
                } else if (is_file($this->aTokenFile)) {
                    // If the refresh token is the same as the permanent volume
                    $this->token = json_decode(file_get_contents($this->aTokenFile));
                }
            }

            $this->needOnline && $this->_bd_refreshToken();
        } catch (Exception $e) {
            $this->token = null;
            $error = true;
            $this->setError($e->getMessage());
        }

        if ($this->netMountKey) {
            $this->tmbPrefix = 'box' . base_convert($this->netMountKey, 16, 32);
        }

        if ($error) {
            if (empty($this->options['netkey']) && $this->tmbPrefix) {
                // for delete thumbnail 
                $this->netunmount(null, null);
            }
            return false;
        }

        // normalize root path
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }

        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        $this->options['root'] = ($this->options['root'] == '')? 'Box.com' : $this->options['root'];

        if (empty($this->options['alias'])) {
            if ($this->needOnline) {
                list(, $itemId) = $this->_bd_splitPath($this->options['path']);
                $this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] :
                    $this->_bd_query($itemId, $fetch_self = true)->name . '@Box';
                if (!empty($this->options['netkey'])) {
                    elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
                }
            } else {
                $this->options['alias'] = $this->options['root'];
            }
        }

        $this->rootName = $this->options['alias'];

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Dmitry (dio) Levashov
     * @throws elFinderAbortException
     */
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     *
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers.
     *
     * @param string $path file cache
     *
     * @return array|boolean
     * @throws elFinderAbortException
     */
    protected function isNameExists($path)
    {
        list(, $name, $parent) = $this->_bd_splitPath($path);

        // We can not use it because the search of Box.com there is a time lag.
        // ref. https://docs.box.com/reference#searching-for-content
        // > Note: If an item is added to Box then it becomes accessible through the search endpoint after ten minutes.

        /***
         * $url = self::API_URL.'/search?limit=1&offset=0&content_types=name&ancestor_folder_ids='.rawurlencode($pid)
         * .'&query='.rawurlencode('"'.$name.'"')
         * .'fields='.self::FETCHFIELDS;
         * $raw = $this->_bd_fetch($url);
         * if (is_array($raw) && count($raw)) {
         * return $this->_bd_parseRaw($raw);
         * }
         ***/

        $phash = $this->encode($parent);

        // do not recursive search
        $searchExDirReg = $this->options['searchExDirReg'];
        $this->options['searchExDirReg'] = '/.*/';
        $search = $this->search($name, array(), $phash);
        $this->options['searchExDirReg'] = $searchExDirReg;

        if ($search) {
            $f = false;
            foreach($search as $f) {
                if ($f['name'] !== $name) {
                    $f = false;
                }
                if ($f) {
                    break;
                }
            }
            return $f;
        }

        return false;
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return
     * @throws Exception
     * @author Dmitry Levashov
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        if ($path == '/') {
            $items = $this->_bd_query('0', $fetch_self = true);   // get root directory with folder & files
            $itemId = $items->id;
        } else {
            list(, $itemId) = $this->_bd_splitPath($path);
        }

        $res = $this->_bd_query($itemId);

        if ($res) {
            foreach ($res as $raw) {
                if ($stat = $this->_bd_parseRaw($raw)) {
                    $itemPath = $this->_joinPath($path, $raw->id);
                    $stat = $this->updateCache($itemPath, $stat);
                    if (empty($stat['hidden'])) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $itemPath;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     **/
    protected function copy($src, $dst, $name)
    {
        if ($res = $this->_copy($src, $dst, $name)) {
            $this->added[] = $this->stat($res);
            return $res;
        } else {
            return $this->setError(elFinder::ERROR_COPY, $this->_path($src));
        }
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_bd_getThumbnail($path)) {
            // try get full contents as fallback
            if (!$data = $this->_getContents($path)) {
                return false;
            }
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        $result = true;
        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if ($result && ($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            if ($result) {
                $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
            }
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        return $this->tmbPrefix . $stat['rev'] . $stat['ts'] . '.png';
    }

    /**
     * Return content URL.
     *
     * @param object $raw data
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function getSharedWebContentLink($raw)
    {
        if ($raw->shared_link->url) {
            return sprintf('https://app.box.com/index.php?rm=box_download_shared_file&shared_name=%s&file_id=f_%s', basename($raw->shared_link->url), $raw->id);
        } elseif ($raw->shared_link->download_url) {
            return $raw->shared_link->download_url;
        }

        return false;
    }

    /**
     * Return content URL.
     *
     * @param string $hash    file hash
     * @param array  $options options
     *
     * @return string
     * @throws Exception
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = array())
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
            $path = $this->decode($hash);

            list(, $itemId) = $this->_bd_splitPath($path);
            $params['shared_link']['access'] = 'open'; //open|company|collaborators

            $url = self::API_URL . '/files/' . $itemId;

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_CUSTOMREQUEST => 'PUT',
                CURLOPT_POSTFIELDS => json_encode($params),
            ));
            $res = $this->_bd_curlExec($curl, true, array(
                // The data is sent as JSON as per Box documentation.
                'Content-Type: application/json',
            ));

            if ($url = $this->getSharedWebContentLink($res)) {
                return $url;
            }
        }

        return '';
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _dirname($path)
    {
        list(, , $dirname) = $this->_bd_splitPath($path);

        return $dirname;
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_bd_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        if (strval($dir) === '0') {
            $dir = '';
        }

        return $this->_normpath($dir . '/' . $name);
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Troex Nevelin
     **/
    protected function _normpath($path)
    {
        if (DIRECTORY_SEPARATOR !== '/') {
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }
        $path = '/' . ltrim($path, '/');

        return $path;
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        return $path;
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _abspath($path)
    {
        return $path;
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _path($path)
    {
        return $this->rootName . $this->_normpath(substr($path, strlen($this->root)));
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected function _stat($path)
    {
        if ($raw = $this->_bd_getRawItem($path)) {
            return $this->_bd_parseRaw($raw);
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected function _subdirs($path)
    {
        list(, $itemId) = $this->_bd_splitPath($path);

        $path = '/folders/' . $itemId . '/items?limit=1&offset=0&fields=' . self::FETCHFIELDS;

        $url = self::API_URL . $path;

        if ($res = $this->_bd_fetch($url)) {
            if ($res[0]->type == 'folder') {
                return true;
            }
        }

        return false;
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }

        $ret = '';
        if ($work = $this->getWorkFile($path)) {
            if ($size = @getimagesize($work)) {
                $cache['width'] = $size[0];
                $cache['height'] = $size[1];
                $ret = array('dim' => $size[0] . 'x' . $size[1]);
                $srcfp = fopen($work, 'rb');
                $target = isset(elFinder::$currentArgs['target'])? elFinder::$currentArgs['target'] : '';
                if ($subImgLink = $this->getSubstituteImgLink($target, $size, $srcfp)) {
                    $ret['url'] = $subImgLink;
                }
            }
        }
        is_file($work) && @unlink($work);

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @throws Exception
     * @author Dmitry (dio) Levashov
     * @author Cem (DiscoFever)
     */
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path file path
     * @param string $mode
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     */
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            list(, $itemId) = $this->_bd_splitPath($path);
            $data = array(
                'target' => self::API_URL . '/files/' . $itemId . '/content',
                'headers' => array('Authorization: Bearer ' . $this->token->data->access_token),
            );

            // to support range request
            if (func_num_args() > 2) {
                $opts = func_get_arg(2);
            } else {
                $opts = array();
            }
            if (!empty($opts['httpheaders'])) {
                $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
            }

            return elFinder::getStreamByUrl($data);
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     * @param string   $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
        if ($path) {
            unlink($this->getTempFile($path));
        }
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkdir($path, $name)
    {
        try {
            list(, $parentId) = $this->_bd_splitPath($path);
            $params = array('name' => $name, 'parent' => array('id' => $parentId));

            $url = self::API_URL . '/folders';

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($params),
            ));

            //create the Folder in the Parent
            $folder = $this->_bd_curlExec($curl, $path);

            return $this->_joinPath($path, $folder->id);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, array());
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _copy($source, $targetDir, $name)
    {
        try {
            //Set the Parent id
            list(, $parentId) = $this->_bd_splitPath($targetDir);
            list(, $srcId) = $this->_bd_splitPath($source);

            $srcItem = $this->_bd_getRawItem($source);

            $properties = array('name' => $name, 'parent' => array('id' => $parentId));
            $data = (object)$properties;

            $type = ($srcItem->type === 'folder') ? 'folders' : 'files';
            $url = self::API_URL . '/' . $type . '/' . $srcId . '/copy';

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            //copy File in the Parent
            $result = $this->_bd_curlExec($curl, $targetDir);

            if (isset($result->id)) {
                if ($type === 'folders' && isset($this->sessionCache['subdirs'])) {
                    $this->sessionCache['subdirs'][$targetDir] = true;
                }

                return $this->_joinPath($targetDir, $result->id);
            }

            return false;
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param string $target target dir path
     * @param string $name   file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _move($source, $targetDir, $name)
    {
        try {
            //moving and renaming a file or directory
            //Set new Parent and remove old parent
            list(, $parentId) = $this->_bd_splitPath($targetDir);
            list(, $itemId) = $this->_bd_splitPath($source);

            $srcItem = $this->_bd_getRawItem($source);

            //rename or move file or folder in destination target
            $properties = array('name' => $name, 'parent' => array('id' => $parentId));

            $type = ($srcItem->type === 'folder') ? 'folders' : 'files';
            $url = self::API_URL . '/' . $type . '/' . $itemId;
            $data = (object)$properties;

            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_CUSTOMREQUEST => 'PUT',
                CURLOPT_POSTFIELDS => json_encode($data),
            ));

            $result = $this->_bd_curlExec($curl, $targetDir, array(
                // The data is sent as JSON as per Box documentation.
                'Content-Type: application/json',
            ));

            if ($result && isset($result->id)) {
                return $this->_joinPath($targetDir, $result->id);
            }

            return false;
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _unlink($path)
    {
        return $this->_bd_unlink($path, 'files');
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _rmdir($path)
    {
        return $this->_bd_unlink($path, 'folders');
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param string   $dir  target dir path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    protected function _save($fp, $path, $name, $stat)
    {
        $itemId = '';
        if ($name === '') {
            list($parentId, $itemId, $parent) = $this->_bd_splitPath($path);
        } else {
            if ($stat) {
                if (isset($stat['name'])) {
                    $name = $stat['name'];
                }
                if (isset($stat['rev']) && strpos($stat['hash'], $this->id) === 0) {
                    $itemId = $stat['rev'];
                }
            }
            list(, $parentId) = $this->_bd_splitPath($path);
            $parent = $path;
        }

        try {
            //Create or Update a file
            $metaDatas = stream_get_meta_data($fp);
            $tmpFilePath = isset($metaDatas['uri']) ? $metaDatas['uri'] : '';
            // remote contents
            if (!$tmpFilePath || empty($metaDatas['seekable'])) {
                $tmpHandle = $this->tmpfile();
                stream_copy_to_stream($fp, $tmpHandle);
                $metaDatas = stream_get_meta_data($tmpHandle);
                $tmpFilePath = $metaDatas['uri'];
            }

            if ($itemId === '') {
                //upload or create new file in destination target
                $properties = array('name' => $name, 'parent' => array('id' => $parentId));
                $url = self::UPLOAD_URL . '/files/content';
            } else {
                //update existing file in destination target
                $properties = array('name' => $name);
                $url = self::UPLOAD_URL . '/files/' . $itemId . '/content';
            }

            if (class_exists('CURLFile')) {
                $cfile = new CURLFile($tmpFilePath);
            } else {
                $cfile = '@' . $tmpFilePath;
            }
            $params = array('attributes' => json_encode($properties), 'file' => $cfile);
            $curl = $this->_bd_prepareCurl(array(
                CURLOPT_URL => $url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => $params,
            ));

            $file = $this->_bd_curlExec($curl, $parent);

            return $this->_joinPath($parent, $file->entries[0]->id);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _getContents($path)
    {
        try {
            list(, $itemId) = $this->_bd_splitPath($path);
            $url = self::API_URL . '/files/' . $itemId . '/content';

            $contents = $this->_bd_fetch($url, true);
        } catch (Exception $e) {
            return $this->setError('Box error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $res = $this->_save($fp, $path, '', array());
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return array();
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
lib/php/elFinderSessionInterface.php000064400000002106147361034400013530 0ustar00<?php

/**
 * elFinder - file manager for web.
 * Session Wrapper Interface.
 *
 * @package elfinder
 * @author  Naoki Sawada
 **/

interface elFinderSessionInterface
{
    /**
     * Session start
     *
     * @return  self
     **/
    public function start();

    /**
     * Session write & close
     *
     * @return  self
     **/
    public function close();

    /**
     * Get session data
     * This method must be equipped with an automatic start / close.
     *
     * @param   string $key   Target key
     * @param   mixed  $empty Return value of if session target key does not exist
     *
     * @return  mixed
     **/
    public function get($key, $empty = '');

    /**
     * Set session data
     * This method must be equipped with an automatic start / close.
     *
     * @param   string $key  Target key
     * @param   mixed  $data Value
     *
     * @return  self
     **/
    public function set($key, $data);

    /**
     * Get session data
     *
     * @param   string $key Target key
     *
     * @return  self
     **/
    public function remove($key);
}
lib/php/elFinderVolumeDriver.class.php000064400001000005147361034400014010 0ustar00<?php

/**
 * Base class for elFinder volume.
 * Provide 2 layers:
 *  1. Public API (commands)
 *  2. abstract fs API
 * All abstract methods begin with "_"
 *
 * @author Dmitry (dio) Levashov
 * @author Troex Nevelin
 * @author Alexey Sukhotin
 * @method netmountPrepare(array $options)
 * @method postNetmount(array $options)
 */
abstract class elFinderVolumeDriver
{

    /**
     * Net mount key
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Request args
     * $_POST or $_GET values
     *
     * @var array
     */
    protected $ARGS = array();

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'a';

    /**
     * Volume id - used as prefix for files hashes
     *
     * @var string
     **/
    protected $id = '';

    /**
     * Flag - volume "mounted" and available
     *
     * @var bool
     **/
    protected $mounted = false;

    /**
     * Root directory path
     *
     * @var string
     **/
    protected $root = '';

    /**
     * Root basename | alias
     *
     * @var string
     **/
    protected $rootName = '';

    /**
     * Default directory to open
     *
     * @var string
     **/
    protected $startPath = '';

    /**
     * Base URL
     *
     * @var string
     **/
    protected $URL = '';

    /**
     * Path to temporary directory
     *
     * @var string
     */
    protected $tmp;

    /**
     * A file save destination path when a temporary content URL is required
     * on a network volume or the like
     * If not specified, it tries to use "Connector Path/../files/.tmb".
     *
     * @var string
     */
    protected $tmpLinkPath = '';

    /**
     * A file save destination URL when a temporary content URL is required
     * on a network volume or the like
     * If not specified, it tries to use "Connector URL/../files/.tmb".
     *
     * @var string
     */
    protected $tmpLinkUrl = '';

    /**
     * Thumbnails dir path
     *
     * @var string
     **/
    protected $tmbPath = '';

    /**
     * Is thumbnails dir writable
     *
     * @var bool
     **/
    protected $tmbPathWritable = false;

    /**
     * Thumbnails base URL
     *
     * @var string
     **/
    protected $tmbURL = '';

    /**
     * Thumbnails size in px
     *
     * @var int
     **/
    protected $tmbSize = 48;

    /**
     * Image manipulation lib name
     * auto|imagick|gd|convert
     *
     * @var string
     **/
    protected $imgLib = 'auto';

    /**
     * Video to Image converter
     *
     * @var array
     */
    protected $imgConverter = array();

    /**
     * Library to crypt files name
     *
     * @var string
     **/
    protected $cryptLib = '';

    /**
     * Archivers config
     *
     * @var array
     **/
    protected $archivers = array(
        'create' => array(),
        'extract' => array()
    );

    /**
     * Static var of $this->options['maxArcFilesSize']
     * 
     * @var int|string
     */
    protected static $maxArcFilesSize;

    /**
     * Server character encoding
     *
     * @var string or null
     **/
    protected $encoding = null;

    /**
     * How many subdirs levels return for tree
     *
     * @var int
     **/
    protected $treeDeep = 1;

    /**
     * Errors from last failed action
     *
     * @var array
     **/
    protected $error = array();

    /**
     * Today 24:00 timestamp
     *
     * @var int
     **/
    protected $today = 0;

    /**
     * Yesterday 24:00 timestamp
     *
     * @var int
     **/
    protected $yesterday = 0;

    /**
     * Force make dirctory on extract
     *
     * @var int
     **/
    protected $extractToNewdir = 'auto';

    /**
     * Object configuration
     *
     * @var array
     **/
    protected $options = array(
        // Driver ID (Prefix of volume ID), Normally, the value specified for each volume driver is used.
        'driverId' => '',
        // Id (Suffix of volume ID), Normally, the number incremented according to the specified number of volumes is used.
        'id' => '',
        // revision id of root directory that uses for caching control of root stat
        'rootRev' => '',
        // driver type it uses volume root's CSS class name. e.g. 'group' -> Adds 'elfinder-group' to CSS class name.
        'type' => '',
        // root directory path
        'path' => '',
        // Folder hash value on elFinder to be the parent of this volume
        'phash' => '',
        // Folder hash value on elFinder to trash bin of this volume, it require 'copyJoin' to true
        'trashHash' => '',
        // open this path on initial request instead of root path
        'startPath' => '',
        // how many subdirs levels return per request
        'treeDeep' => 1,
        // root url, not set to URL via the connector. If you want to hide the file URL, do not set this value. (replacement for old "fileURL" option)
        'URL' => '',
        // enable onetime URL to a file - (true, false, 'auto' (true if a temporary directory is available) or callable (A function that return onetime URL))
        'onetimeUrl' => 'auto',
        // directory link url to own manager url with folder hash (`true`, `false`, `'hide'`(No show) or default `'auto'`: URL is empty then `true` else `false`)
        'dirUrlOwn' => 'auto',
        // directory separator. required by client to show paths correctly
        'separator' => DIRECTORY_SEPARATOR,
        // Use '/' as directory separator when the path hash encode/decode on the Windows server too
        'winHashFix' => false,
        // Server character encoding (default is '': UTF-8)
        'encoding' => '',
        // for convert character encoding (default is '': Not change locale)
        'locale' => '',
        // URL of volume icon image
        'icon' => '',
        // CSS Class of volume root in tree
        'rootCssClass' => '',
        // Items to disable session caching
        'noSessionCache' => array(),
        // enable i18n folder name that convert name to elFinderInstance.messages['folder_'+name]
        'i18nFolderName' => false,
        // Search timeout (sec)
        'searchTimeout' => 30,
        // Search exclusion directory regex pattern (require demiliter e.g. '#/path/to/exclude_directory#i')
        'searchExDirReg' => '',
        // library to crypt/uncrypt files names (not implemented)
        'cryptLib' => '',
        // how to detect files mimetypes. (auto/internal/finfo/mime_content_type)
        'mimeDetect' => 'auto',
        // mime.types file path (for mimeDetect==internal)
        'mimefile' => '',
        // Static extension/MIME of general server side scripts to security issues
        'staticMineMap' => array(
            'php:*' => 'text/x-php',
            'pht:*' => 'text/x-php',
            'php3:*' => 'text/x-php',
            'php4:*' => 'text/x-php',
            'php5:*' => 'text/x-php',
            'php7:*' => 'text/x-php',
            'phtml:*' => 'text/x-php',
            'phar:*' => 'text/x-php',
            'cgi:*' => 'text/x-httpd-cgi',
            'pl:*' => 'text/x-perl',
            'asp:*' => 'text/x-asap',
            'aspx:*' => 'text/x-asap',
            'py:*' => 'text/x-python',
            'rb:*' => 'text/x-ruby',
            'jsp:*' => 'text/x-jsp'
        ),
        // mime type normalize map : Array '[ext]:[detected mime type]' => '[normalized mime]'
        'mimeMap' => array(
            'md:application/x-genesis-rom' => 'text/x-markdown',
            'md:text/plain' => 'text/x-markdown',
            'markdown:text/plain' => 'text/x-markdown',
            'css:text/x-asm' => 'text/css',
            'css:text/plain' => 'text/css',
            'csv:text/plain' => 'text/csv',
            'java:text/x-c' => 'text/x-java-source',
            'json:text/plain' => 'application/json',
            'sql:text/plain' => 'text/x-sql',
            'rtf:text/rtf' => 'application/rtf',
            'rtfd:text/rtfd' => 'application/rtfd',
            'ico:image/vnd.microsoft.icon' => 'image/x-icon',
            'svg:text/plain' => 'image/svg+xml',
            'pxd:application/octet-stream' => 'image/x-pixlr-data',
            'dng:image/tiff' => 'image/x-adobe-dng',
            'sketch:application/zip' => 'image/x-sketch',
            'sketch:application/octet-stream' => 'image/x-sketch',
            'xcf:application/octet-stream' => 'image/x-xcf',
            'amr:application/octet-stream' => 'audio/amr',
            'm4a:video/mp4' => 'audio/mp4',
            'oga:application/ogg' => 'audio/ogg',
            'ogv:application/ogg' => 'video/ogg',
            'zip:application/x-zip' => 'application/zip',
            'm3u8:text/plain' => 'application/x-mpegURL',
            'mpd:text/plain' => 'application/dash+xml',
            'mpd:application/xml' => 'application/dash+xml',
            '*:application/x-dosexec' => 'application/x-executable',
            'doc:application/vnd.ms-office' => 'application/msword',
            'xls:application/vnd.ms-office' => 'application/vnd.ms-excel',
            'ppt:application/vnd.ms-office' => 'application/vnd.ms-powerpoint',
            'yml:text/plain' => 'text/x-yaml',
            'ai:application/pdf' => 'application/postscript',
            'cgm:text/plain' => 'image/cgm',
            'dxf:text/plain' => 'image/vnd.dxf',
            'dds:application/octet-stream' => 'image/vnd-ms.dds',
            'hpgl:text/plain' => 'application/vnd.hp-hpgl',
            'igs:text/plain' => 'model/iges',
            'iges:text/plain' => 'model/iges',
            'plt:application/octet-stream' => 'application/plt',
            'plt:text/plain' => 'application/plt',
            'sat:text/plain' => 'application/sat',
            'step:text/plain' => 'application/step',
            'stp:text/plain' => 'application/step'
        ),
        // An option to add MimeMap to the `mimeMap` option
        // Array '[ext]:[detected mime type]' => '[normalized mime]'
        'additionalMimeMap' => array(),
        // MIME-Type of filetype detected as unknown
        'mimeTypeUnknown' => 'application/octet-stream',
        // MIME regex of send HTTP header "Content-Disposition: inline" or allow preview in quicklook
        // '.' is allow inline of all of MIME types
        // '$^' is not allow inline of all of MIME types
        'dispInlineRegex' => '^(?:(?:video|audio)|image/(?!.+\+xml)|application/(?:ogg|x-mpegURL|dash\+xml)|(?:text/plain|application/pdf)$)',
        // temporary content URL's base path
        'tmpLinkPath' => '',
        // temporary content URL's base URL
        'tmpLinkUrl' => '',
        // directory for thumbnails
        'tmbPath' => '.tmb',
        // mode to create thumbnails dir
        'tmbPathMode' => 0777,
        // thumbnails dir URL. Set it if store thumbnails outside root directory
        'tmbURL' => '',
        // thumbnails size (px)
        'tmbSize' => 48,
        // thumbnails crop (true - crop, false - scale image to fit thumbnail size)
        'tmbCrop' => true,
        // thumbnail URL require custom data as the GET query
        'tmbReqCustomData' => false,
        // thumbnails background color (hex #rrggbb or 'transparent')
        'tmbBgColor' => 'transparent',
        // image rotate fallback background color (hex #rrggbb)
        'bgColorFb' => '#ffffff',
        // image manipulations library (imagick|gd|convert|auto|none, none - Does not check the image library at all.)
        'imgLib' => 'auto',
        // Fallback self image to thumbnail (nothing imgLib)
        'tmbFbSelf' => true,
        // Video to Image converters ['TYPE or MIME' => ['func' => function($file){ /* Converts $file to Image */ return true; }, 'maxlen' => (int)TransferLength]]
        'imgConverter' => array(),
        // Max length of transfer to image converter
        'tmbVideoConvLen' => 10000000,
        // Captre point seccond
        'tmbVideoConvSec' => 6,
        // Life time (hour) for thumbnail garbage collection ("0" means no GC)
        'tmbGcMaxlifeHour' => 0,
        // Percentage of garbage collection executed for thumbnail creation command ("1" means "1%")
        'tmbGcPercentage' => 1,
        // Resource path of fallback icon images defailt: php/resouces
        'resourcePath' => '',
        // Jpeg image saveing quality
        'jpgQuality' => 100,
        // Save as progressive JPEG on image editing
        'jpgProgressive' => true,
        // enable to get substitute image with command `dim`
        'substituteImg' => true,
        // on paste file -  if true - old file will be replaced with new one, if false new file get name - original_name-number.ext
        'copyOverwrite' => true,
        // if true - join new and old directories content on paste
        'copyJoin' => true,
        // on upload -  if true - old file will be replaced with new one, if false new file get name - original_name-number.ext
        'uploadOverwrite' => true,
        // mimetypes allowed to upload
        'uploadAllow' => array(),
        // mimetypes not allowed to upload
        'uploadDeny' => array(),
        // order to process uploadAllow and uploadDeny options
        'uploadOrder' => array('deny', 'allow'),
        // maximum upload file size. NOTE - this is size for every uploaded files
        'uploadMaxSize' => 0,
        // Maximum number of folders that can be created at one time. (0: unlimited)
        'uploadMaxMkdirs' => 0,
        // maximum number of chunked upload connection. `-1` to disable chunked upload
        'uploadMaxConn' => 3,
        // maximum get file size. NOTE - Maximum value is 50% of PHP memory_limit
        'getMaxSize' => 0,
        // files dates format
        'dateFormat' => 'j M Y H:i',
        // files time format
        'timeFormat' => 'H:i',
        // if true - every folder will be check for children folders, -1 - every folder will be check asynchronously, false -  all folders will be marked as having subfolders
        'checkSubfolders' => true, // true, false or -1
        // allow to copy from this volume to other ones?
        'copyFrom' => true,
        // allow to copy from other volumes to this one?
        'copyTo' => true,
        // cmd duplicate suffix format e.g. '_%s_' to without spaces
        'duplicateSuffix' => ' %s ',
        // unique name numbar format e.g. '(%d)' to (1), (2)...
        'uniqueNumFormat' => '%d',
        // list of commands disabled on this root
        'disabled' => array(),
        // enable file owner, group & mode info, `false` to inactivate "chmod" command.
        'statOwner' => false,
        // allow exec chmod of read-only files
        'allowChmodReadOnly' => false,
        // regexp or function name to validate new file name
        'acceptedName' => '/^[^\.].*/', // Notice: overwritten it in some volume drivers contractor
        // regexp or function name to validate new directory name
        'acceptedDirname' => '', // used `acceptedName` if empty value
        // function/class method to control files permissions
        'accessControl' => null,
        // some data required by access control
        'accessControlData' => null,
        // root stat that return without asking the system when mounted and not the current volume. Query to the system with false. array|false
        'rapidRootStat' => array(
            'read' => true,
            'write' => true,
            'locked' => false,
            'hidden' => false,
            'size' => 0,  // Unknown
            'ts' => 0,    // Unknown
            'dirs' => -1, // Check on demand for subdirectories
            'mime' => 'directory'
        ),
        // default permissions.
        'defaults' => array(
            'read' => true,
            'write' => true,
            'locked' => false,
            'hidden' => false
        ),
        // files attributes
        'attributes' => array(),
        // max allowed archive files size (0 - no limit)
        'maxArcFilesSize' => '2G',
        // Allowed archive's mimetypes to create. Leave empty for all available types.
        'archiveMimes' => array(),
        // Manual config for archivers. See example below. Leave empty for auto detect
        'archivers' => array(),
        // Use Archive function for remote volume
        'useRemoteArchive' => false,
        // plugin settings
        'plugin' => array(),
        // Is support parent directory time stamp update on add|remove|rename item
        // Default `null` is auto detection that is LocalFileSystem, FTP or Dropbox are `true`
        'syncChkAsTs' => null,
        // Long pooling sync checker function for syncChkAsTs is true
        // Calls with args (TARGET DIRCTORY PATH, STAND-BY(sec), OLD TIMESTAMP, VOLUME DRIVER INSTANCE, ELFINDER INSTANCE)
        // This function must return the following values. Changed: New Timestamp or Same: Old Timestamp or Error: false
        // Default `null` is try use elFinderVolumeLocalFileSystem::localFileSystemInotify() on LocalFileSystem driver
        // another driver use elFinder stat() checker
        'syncCheckFunc' => null,
        // Long polling sync stand-by time (sec)
        'plStandby' => 30,
        // Sleep time (sec) for elFinder stat() checker (syncChkAsTs is true)
        'tsPlSleep' => 10,
        // Sleep time (sec) for elFinder ls() checker (syncChkAsTs is false)
        'lsPlSleep' => 30,
        // Client side sync interval minimum (ms)
        // Default `null` is auto set to ('tsPlSleep' or 'lsPlSleep') * 1000
        // `0` to disable auto sync
        'syncMinMs' => null,
        // required to fix bug on macos
        // However, we recommend to use the Normalizer plugin instead this option
        'utf8fix' => false,
        //                           й                 ё              Й               Ё              Ø         Å
        'utf8patterns' => array("\u0438\u0306", "\u0435\u0308", "\u0418\u0306", "\u0415\u0308", "\u00d8A", "\u030a"),
        'utf8replace' => array("\u0439", "\u0451", "\u0419", "\u0401", "\u00d8", "\u00c5"),
        // cache control HTTP headers for commands `file` and  `get`
        'cacheHeaders' => array(
            'Cache-Control: max-age=3600',
            'Expires:',
            'Pragma:'
        ),
        // Header to use to accelerate sending local files to clients (e.g. 'X-Sendfile', 'X-Accel-Redirect')
        'xsendfile' => '',
        // Root path to xsendfile target. Probably, this is required for 'X-Accel-Redirect' on Nginx.
        'xsendfilePath' => ''
    );

    /**
     * Defaults permissions
     *
     * @var array
     **/
    protected $defaults = array(
        'read' => true,
        'write' => true,
        'locked' => false,
        'hidden' => false
    );

    /**
     * Access control function/class
     *
     * @var mixed
     **/
    protected $attributes = array();

    /**
     * Access control function/class
     *
     * @var mixed
     **/
    protected $access = null;

    /**
     * Mime types allowed to upload
     *
     * @var array
     **/
    protected $uploadAllow = array();

    /**
     * Mime types denied to upload
     *
     * @var array
     **/
    protected $uploadDeny = array();

    /**
     * Order to validate uploadAllow and uploadDeny
     *
     * @var array
     **/
    protected $uploadOrder = array();

    /**
     * Maximum allowed upload file size.
     * Set as number or string with unit - "10M", "500K", "1G"
     *
     * @var int|string
     **/
    protected $uploadMaxSize = 0;

    /**
     * Run time setting of overwrite items on upload
     *
     * @var string
     */
    protected $uploadOverwrite = true;

    /**
     * Maximum allowed get file size.
     * Set as number or string with unit - "10M", "500K", "1G"
     *
     * @var int|string
     **/
    protected $getMaxSize = -1;

    /**
     * Mimetype detect method
     *
     * @var string
     **/
    protected $mimeDetect = 'auto';

    /**
     * Flag - mimetypes from externail file was loaded
     *
     * @var bool
     **/
    private static $mimetypesLoaded = false;

    /**
     * Finfo resource for mimeDetect == 'finfo'
     *
     * @var resource
     **/
    protected $finfo = null;

    /**
     * List of disabled client's commands
     *
     * @var array
     **/
    protected $disabled = array();

    /**
     * overwrite extensions/mimetypes to mime.types
     *
     * @var array
     **/
    protected static $mimetypes = array(
        // applications
        'exe' => 'application/x-executable',
        'jar' => 'application/x-jar',
        // archives
        'gz' => 'application/x-gzip',
        'tgz' => 'application/x-gzip',
        'tbz' => 'application/x-bzip2',
        'rar' => 'application/x-rar',
        // texts
        'php' => 'text/x-php',
        'js' => 'text/javascript',
        'rtfd' => 'application/rtfd',
        'py' => 'text/x-python',
        'rb' => 'text/x-ruby',
        'sh' => 'text/x-shellscript',
        'pl' => 'text/x-perl',
        'xml' => 'text/xml',
        'c' => 'text/x-csrc',
        'h' => 'text/x-chdr',
        'cpp' => 'text/x-c++src',
        'hh' => 'text/x-c++hdr',
        'md' => 'text/x-markdown',
        'markdown' => 'text/x-markdown',
        'yml' => 'text/x-yaml',
        // images
        'bmp' => 'image/x-ms-bmp',
        'tga' => 'image/x-targa',
        'xbm' => 'image/xbm',
        'pxm' => 'image/pxm',
        //audio
        'wav' => 'audio/wav',
        // video
        'dv' => 'video/x-dv',
        'wm' => 'video/x-ms-wmv',
        'ogm' => 'video/ogg',
        'm2ts' => 'video/MP2T',
        'mts' => 'video/MP2T',
        'ts' => 'video/MP2T',
        'm3u8' => 'application/x-mpegURL',
        'mpd' => 'application/dash+xml'
    );

    /**
     * Directory separator - required by client
     *
     * @var string
     **/
    protected $separator = DIRECTORY_SEPARATOR;

    /**
     * Directory separator for decode/encode hash
     *
     * @var string
     **/
    protected $separatorForHash = '';

    /**
     * System Root path (Unix like: '/', Windows: '\', 'C:\' or 'D:\'...)
     *
     * @var string
     **/
    protected $systemRoot = DIRECTORY_SEPARATOR;

    /**
     * Mimetypes allowed to display
     *
     * @var array
     **/
    protected $onlyMimes = array();

    /**
     * Store files moved or overwrited files info
     *
     * @var array
     **/
    protected $removed = array();

    /**
     * Store files added files info
     *
     * @var array
     **/
    protected $added = array();

    /**
     * Cache storage
     *
     * @var array
     **/
    protected $cache = array();

    /**
     * Cache by folders
     *
     * @var array
     **/
    protected $dirsCache = array();

    /**
     * You should use `$this->sessionCache['subdirs']` instead
     *
     * @var array
     * @deprecated
     */
    protected $subdirsCache = array();

    /**
     * This volume session cache
     *
     * @var array
     */
    protected $sessionCache;

    /**
     * Session caching item list
     *
     * @var array
     */
    protected $sessionCaching = array('rootstat' => true, 'subdirs' => true);

    /**
     * elFinder session wrapper object
     *
     * @var elFinderSessionInterface
     */
    protected $session;

    /**
     * Search start time
     *
     * @var int
     */
    protected $searchStart;

    /**
     * Current query word on doSearch
     *
     * @var array
     **/
    protected $doSearchCurrentQuery = array();

    /**
     * Is root modified (for clear root stat cache)
     *
     * @var bool
     */
    protected $rootModified = false;

    /**
     * Is disable of command `url`
     *
     * @var string
     */
    protected $disabledGetUrl = false;

    /**
     * Accepted filename validator
     *
     * @var string | callable
     */
    protected $nameValidator;

    /**
     * Accepted dirname validator
     *
     * @var string | callable
     */
    protected $dirnameValidator;

    /**
     * This request require online state
     *
     * @var boolean
     */
    protected $needOnline;

    /*********************************************************************/
    /*                            INITIALIZATION                         */
    /*********************************************************************/

    /**
     * Sets the need online.
     *
     * @param  boolean  $state  The state
     */
    public function setNeedOnline($state = null)
    {
        if ($state !== null) {
            $this->needOnline = (bool)$state;
            return;
        }

        $need = false;
        $arg = $this->ARGS;
        $id = $this->id;

        $target = !empty($arg['target'])? $arg['target'] : (!empty($arg['dst'])? $arg['dst'] : '');
        $targets = !empty($arg['targets'])? $arg['targets'] : array();
        if (!is_array($targets)) {
            $targets = array($targets);
        }

        if ($target && strpos($target, $id) === 0) {
            $need = true;
        } else if ($targets) {
            foreach($targets as $t) {
                if ($t && strpos($t, $id) === 0) {
                    $need = true;
                    break;
                }
            }
        }

        $this->needOnline = $need;
    }

    /**
     * Prepare driver before mount volume.
     * Return true if volume is ready.
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function init()
    {
        return true;
    }

    /**
     * Configure after successfull mount.
     * By default set thumbnails path and image manipulation library.
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function configure()
    {
        // set thumbnails path
        $path = $this->options['tmbPath'];
        if ($path) {
            if (!file_exists($path)) {
                if (mkdir($path)) {
                    chmod($path, $this->options['tmbPathMode']);
                } else {
                    $path = '';
                }
            }

            if (is_dir($path) && is_readable($path)) {
                $this->tmbPath = $path;
                $this->tmbPathWritable = is_writable($path);
            }
        }
        // set resouce path
        if (!is_dir($this->options['resourcePath'])) {
            $this->options['resourcePath'] = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'resources';
        }

        // set image manipulation library
        $type = preg_match('/^(imagick|gd|convert|auto|none)$/i', $this->options['imgLib'])
            ? strtolower($this->options['imgLib'])
            : 'auto';

        if ($type === 'none') {
            $this->imgLib = '';
        } else {
            if (($type === 'imagick' || $type === 'auto') && extension_loaded('imagick')) {
                $this->imgLib = 'imagick';
            } else if (($type === 'gd' || $type === 'auto') && function_exists('gd_info')) {
                $this->imgLib = 'gd';
            } else {
                $convertCache = 'imgLibConvert';
                if (($convertCmd = $this->session->get($convertCache, false)) !== false) {
                    $this->imgLib = $convertCmd;
                } else {
                    $this->imgLib = ($this->procExec(ELFINDER_CONVERT_PATH . ' -version') === 0) ? 'convert' : '';
                    $this->session->set($convertCache, $this->imgLib);
                }
            }
            if ($type !== 'auto' && $this->imgLib === '') {
                // fallback
                $this->imgLib = extension_loaded('imagick') ? 'imagick' : (function_exists('gd_info') ? 'gd' : '');
            }
        }

        // check video to img converter
        if (!empty($this->options['imgConverter']) && is_array($this->options['imgConverter'])) {
            foreach ($this->options['imgConverter'] as $_type => $_converter) {
                if (isset($_converter['func'])) {
                    $this->imgConverter[strtolower($_type)] = $_converter;
                }
            }
        }
        if (!isset($this->imgConverter['video'])) {
            $videoLibCache = 'videoLib';
            if (($videoLibCmd = $this->session->get($videoLibCache, false)) === false) {
                $videoLibCmd = ($this->procExec(ELFINDER_FFMPEG_PATH . ' -version') === 0) ? 'ffmpeg' : '';
                $this->session->set($videoLibCache, $videoLibCmd);
            }
            if ($videoLibCmd) {
                $this->imgConverter['video'] = array(
                    'func' => array($this, $videoLibCmd . 'ToImg'),
                    'maxlen' => $this->options['tmbVideoConvLen']
                );
            }
        }

        // check onetimeUrl
        if (strtolower($this->options['onetimeUrl']) === 'auto') {
            $this->options['onetimeUrl'] = elFinder::getStaticVar('commonTempPath')? true : false;
        }

        // check archivers
        if (empty($this->archivers['create'])) {
            $this->disabled[] = 'archive';
        }
        if (empty($this->archivers['extract'])) {
            $this->disabled[] = 'extract';
        }
        $_arc = $this->getArchivers();
        if (empty($_arc['create'])) {
            $this->disabled[] = 'zipdl';
        }

        if ($this->options['maxArcFilesSize']) {
            $this->options['maxArcFilesSize'] = elFinder::getIniBytes('', $this->options['maxArcFilesSize']);
        }
        self::$maxArcFilesSize = $this->options['maxArcFilesSize'];

        // check 'statOwner' for command `chmod`
        if (empty($this->options['statOwner'])) {
            $this->disabled[] = 'chmod';
        }

        // check 'mimeMap'
        if (!is_array($this->options['mimeMap'])) {
            $this->options['mimeMap'] = array();
        }
        if (is_array($this->options['staticMineMap']) && $this->options['staticMineMap']) {
            $this->options['mimeMap'] = array_merge($this->options['mimeMap'], $this->options['staticMineMap']);
        }
        if (is_array($this->options['additionalMimeMap']) && $this->options['additionalMimeMap']) {
            $this->options['mimeMap'] = array_merge($this->options['mimeMap'], $this->options['additionalMimeMap']);
        }

        // check 'url' in disabled commands
        if (in_array('url', $this->disabled)) {
            $this->disabledGetUrl = true;
        }

        // set run time setting uploadOverwrite
        $this->uploadOverwrite = $this->options['uploadOverwrite'];
    }

    /**
     * @deprecated
     */
    protected function sessionRestart()
    {
        $this->sessionCache = $this->session->start()->get($this->id, array());
        return true;
    }

    /*********************************************************************/
    /*                              PUBLIC API                           */
    /*********************************************************************/

    /**
     * Return driver id. Used as a part of volume id.
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function driverId()
    {
        return $this->driverId;
    }

    /**
     * Return volume id
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function id()
    {
        return $this->id;
    }

    /**
     * Assign elFinder session wrapper object
     *
     * @param  $session  elFinderSessionInterface
     */
    public function setSession($session)
    {
        $this->session = $session;
    }

    /**
     * Get elFinder sesson wrapper object
     *
     * @return object  The session object
     */
    public function getSession()
    {
        return $this->session;
    }

    /**
     * Save session cache data
     * Calls this function before umount this volume on elFinder::exec()
     *
     * @return void
     */
    public function saveSessionCache()
    {
        $this->session->set($this->id, $this->sessionCache);
    }

    /**
     * Return debug info for client
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function debug()
    {
        return array(
            'id' => $this->id(),
            'name' => strtolower(substr(get_class($this), strlen('elfinderdriver'))),
            'mimeDetect' => $this->mimeDetect,
            'imgLib' => $this->imgLib
        );
    }

    /**
     * chmod a file or folder
     *
     * @param  string $hash file or folder hash to chmod
     * @param  string $mode octal string representing new permissions
     *
     * @return array|false
     * @author David Bartle
     **/
    public function chmod($hash, $mode)
    {
        if ($this->commandDisabled('chmod')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!($file = $this->file($hash))) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$this->options['allowChmodReadOnly']) {
            if (!$this->attr($this->decode($hash), 'write', null, ($file['mime'] === 'directory'))) {
                return $this->setError(elFinder::ERROR_PERM_DENIED, $file['name']);
            }
        }

        $path = $this->decode($hash);
        $write = $file['write'];

        if ($this->convEncOut(!$this->_chmod($this->convEncIn($path), $mode))) {
            return $this->setError(elFinder::ERROR_PERM_DENIED, $file['name']);
        }

        $this->clearstatcache();
        if ($path == $this->root) {
            $this->rootModified = true;
        }

        if ($file = $this->stat($path)) {
            $files = array($file);
            if ($file['mime'] === 'directory' && $write !== $file['write']) {
                foreach ($this->getScandir($path) as $stat) {
                    if ($this->mimeAccepted($stat['mime'])) {
                        $files[] = $stat;
                    }
                }
            }
            return $files;
        } else {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }
    }

    /**
     * stat a file or folder for elFinder cmd exec
     *
     * @param  string $hash file or folder hash to chmod
     *
     * @return array
     * @author Naoki Sawada
     **/
    public function fstat($hash)
    {
        $path = $this->decode($hash);
        return $this->stat($path);
    }

    /**
     * Clear PHP stat cache & all of inner stat caches
     */
    public function clearstatcache()
    {
        clearstatcache();
        $this->clearcache();
    }

    /**
     * Clear inner stat caches for target hash
     *
     * @param string $hash
     */
    public function clearcaches($hash = null)
    {
        if ($hash === null) {
            $this->clearcache();
        } else {
            $path = $this->decode($hash);
            unset($this->cache[$path], $this->dirsCache[$path]);
        }
    }

    /**
     * "Mount" volume.
     * Return true if volume available for read or write,
     * false - otherwise
     *
     * @param array $opts
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    public function mount(array $opts)
    {
        $this->options = array_merge($this->options, $opts);

        if (!isset($this->options['path']) || $this->options['path'] === '') {
            return $this->setError('Path undefined.');
        }

        if (!$this->session) {
            return $this->setError('Session wrapper dose not set. Need to `$volume->setSession(elFinderSessionInterface);` before mount.');
        }
        if (!($this->session instanceof elFinderSessionInterface)) {
            return $this->setError('Session wrapper instance must be "elFinderSessionInterface".');
        }

        // set driverId
        if (!empty($this->options['driverId'])) {
            $this->driverId = $this->options['driverId'];
        }

        $this->id = $this->driverId . (!empty($this->options['id']) ? $this->options['id'] : elFinder::$volumesCnt++) . '_';
        $this->root = $this->normpathCE($this->options['path']);
        $this->separator = isset($this->options['separator']) ? $this->options['separator'] : DIRECTORY_SEPARATOR;
        if (!empty($this->options['winHashFix'])) {
            $this->separatorForHash = ($this->separator !== '/') ? '/' : '';
        }
        $this->systemRoot = isset($this->options['systemRoot']) ? $this->options['systemRoot'] : $this->separator;

        // set ARGS
        $this->ARGS = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET;

        $argInit = !empty($this->ARGS['init']);

        // set $this->needOnline
        if (!is_bool($this->needOnline)) {
            $this->setNeedOnline();
        }

        // session cache
        if ($argInit) {
            $this->session->set($this->id, array());
        }
        $this->sessionCache = $this->session->get($this->id, array());

        // default file attribute
        $this->defaults = array(
            'read' => isset($this->options['defaults']['read']) ? !!$this->options['defaults']['read'] : true,
            'write' => isset($this->options['defaults']['write']) ? !!$this->options['defaults']['write'] : true,
            'locked' => isset($this->options['defaults']['locked']) ? !!$this->options['defaults']['locked'] : false,
            'hidden' => isset($this->options['defaults']['hidden']) ? !!$this->options['defaults']['hidden'] : false
        );

        // root attributes
        $this->attributes[] = array(
            'pattern' => '~^' . preg_quote($this->separator) . '$~',
            'locked' => true,
            'hidden' => false
        );
        // set files attributes
        if (!empty($this->options['attributes']) && is_array($this->options['attributes'])) {

            foreach ($this->options['attributes'] as $a) {
                // attributes must contain pattern and at least one rule
                if (!empty($a['pattern']) || (is_array($a) && count($a) > 1)) {
                    $this->attributes[] = $a;
                }
            }
        }

        if (!empty($this->options['accessControl']) && is_callable($this->options['accessControl'])) {
            $this->access = $this->options['accessControl'];
        }

        $this->today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
        $this->yesterday = $this->today - 86400;

        if (!$this->init()) {
            return false;
        }

        // set server encoding
        if (!empty($this->options['encoding']) && strtoupper($this->options['encoding']) !== 'UTF-8') {
            $this->encoding = $this->options['encoding'];
        } else {
            $this->encoding = null;
        }

        // check some options is arrays
        $this->uploadAllow = isset($this->options['uploadAllow']) && is_array($this->options['uploadAllow'])
            ? $this->options['uploadAllow']
            : array();

        $this->uploadDeny = isset($this->options['uploadDeny']) && is_array($this->options['uploadDeny'])
            ? $this->options['uploadDeny']
            : array();

        $this->options['uiCmdMap'] = (isset($this->options['uiCmdMap']) && is_array($this->options['uiCmdMap']))
            ? $this->options['uiCmdMap']
            : array();

        if (is_string($this->options['uploadOrder'])) { // telephat_mode on, compatibility with 1.x
            $parts = explode(',', isset($this->options['uploadOrder']) ? $this->options['uploadOrder'] : 'deny,allow');
            $this->uploadOrder = array(trim($parts[0]), trim($parts[1]));
        } else { // telephat_mode off
            $this->uploadOrder = !empty($this->options['uploadOrder']) ? $this->options['uploadOrder'] : array('deny', 'allow');
        }

        if (!empty($this->options['uploadMaxSize'])) {
            $this->uploadMaxSize = elFinder::getIniBytes('', $this->options['uploadMaxSize']);
        }
        // Set maximum to PHP_INT_MAX
        if (!defined('PHP_INT_MAX')) {
            define('PHP_INT_MAX', 2147483647);
        }
        if ($this->uploadMaxSize < 1 || $this->uploadMaxSize > PHP_INT_MAX) {
            $this->uploadMaxSize = PHP_INT_MAX;
        }

        // Set to get maximum size to 50% of memory_limit
        $memLimit = elFinder::getIniBytes('memory_limit') / 2;
        if ($memLimit > 0) {
            $this->getMaxSize = empty($this->options['getMaxSize']) ? $memLimit : min($memLimit, elFinder::getIniBytes('', $this->options['getMaxSize']));
        } else {
            $this->getMaxSize = -1;
        }

        $this->disabled = isset($this->options['disabled']) && is_array($this->options['disabled'])
            ? array_values(array_diff($this->options['disabled'], array('open'))) // 'open' is required
            : array();

        $this->cryptLib = $this->options['cryptLib'];
        $this->mimeDetect = $this->options['mimeDetect'];

        // find available mimetype detect method
        $regexp = '/text\/x\-(php|c\+\+)/';
        $auto_types = array();

        if (class_exists('finfo', false)) {
            $tmpFileInfo = explode(';', finfo_file(finfo_open(FILEINFO_MIME), __FILE__));
             if ($tmpFileInfo && preg_match($regexp, array_shift($tmpFileInfo))) {
                $auto_types[] = 'finfo';
            }
        }
        
        if (function_exists('mime_content_type')) {
            $_mimetypes = explode(';', mime_content_type(__FILE__));
            if (preg_match($regexp, array_shift($_mimetypes))) {
                $auto_types[] = 'mime_content_type';
            }
        }
            
        $auto_types[] = 'internal';

        $type = strtolower($this->options['mimeDetect']);
        if (!in_array($type, $auto_types)) {
            $type = 'auto';
        }

        if ($type == 'auto') {
            $type = array_shift($auto_types);
        }

        $this->mimeDetect = $type;

        if ($this->mimeDetect == 'finfo') {
            $this->finfo = finfo_open(FILEINFO_MIME);
        } else if ($this->mimeDetect == 'internal' && !elFinderVolumeDriver::$mimetypesLoaded) {
            // load mimes from external file for mimeDetect == 'internal'
            // based on Alexey Sukhotin idea and patch: http://elrte.org/redmine/issues/163
            // file must be in file directory or in parent one
            elFinderVolumeDriver::loadMimeTypes(!empty($this->options['mimefile']) ? $this->options['mimefile'] : '');
        }
        $this->rootName = empty($this->options['alias']) ? $this->basenameCE($this->root) : $this->options['alias'];

        // This get's triggered if $this->root == '/' and alias is empty.
        // Maybe modify _basename instead?
        if ($this->rootName === '') $this->rootName = $this->separator;

        $this->_checkArchivers();

        $root = $this->stat($this->root);

        if (!$root) {
            return $this->setError('Root folder does not exist.');
        }
        if (!$root['read'] && !$root['write']) {
            return $this->setError('Root folder has not read and write permissions.');
        }

        if ($root['read']) {
            if ($argInit) {
                // check startPath - path to open by default instead of root
                $startPath = $this->options['startPath'] ? $this->normpathCE($this->options['startPath']) : '';
                if ($startPath) {
                    $start = $this->stat($startPath);
                    if (!empty($start)
                        && $start['mime'] == 'directory'
                        && $start['read']
                        && empty($start['hidden'])
                        && $this->inpathCE($startPath, $this->root)) {
                        $this->startPath = $startPath;
                        if (substr($this->startPath, -1, 1) == $this->options['separator']) {
                            $this->startPath = substr($this->startPath, 0, -1);
                        }
                    }
                }
            }
        } else {
            $this->options['URL'] = '';
            $this->options['tmbURL'] = '';
            $this->options['tmbPath'] = '';
            // read only volume
            array_unshift($this->attributes, array(
                'pattern' => '/.*/',
                'read' => false
            ));
        }
        $this->treeDeep = $this->options['treeDeep'] > 0 ? (int)$this->options['treeDeep'] : 1;
        $this->tmbSize = $this->options['tmbSize'] > 0 ? (int)$this->options['tmbSize'] : 48;
        $this->URL = $this->options['URL'];
        if ($this->URL && preg_match("|[^/?&=]$|", $this->URL)) {
            $this->URL .= '/';
        }

        $dirUrlOwn = strtolower($this->options['dirUrlOwn']);
        if ($dirUrlOwn === 'auto') {
            $this->options['dirUrlOwn'] = $this->URL ? false : true;
        } else if ($dirUrlOwn === 'hide') {
            $this->options['dirUrlOwn'] = 'hide';
        } else {
            $this->options['dirUrlOwn'] = (bool)$this->options['dirUrlOwn'];
        }

        $this->tmbURL = !empty($this->options['tmbURL']) ? $this->options['tmbURL'] : '';
        if ($this->tmbURL && $this->tmbURL !== 'self' && preg_match("|[^/?&=]$|", $this->tmbURL)) {
            $this->tmbURL .= '/';
        }

        $this->nameValidator = !empty($this->options['acceptedName']) && (is_string($this->options['acceptedName']) || is_callable($this->options['acceptedName']))
            ? $this->options['acceptedName']
            : '';

        $this->dirnameValidator = !empty($this->options['acceptedDirname']) && (is_callable($this->options['acceptedDirname']) || (is_string($this->options['acceptedDirname']) && preg_match($this->options['acceptedDirname'], '') !== false))
            ? $this->options['acceptedDirname']
            : $this->nameValidator;

        // enabling archivers['create'] with options['useRemoteArchive']
        if ($this->options['useRemoteArchive'] && empty($this->archivers['create']) && $this->getTempPath()) {
            $_archivers = $this->getArchivers();
            $this->archivers['create'] = $_archivers['create'];
        }

        // manual control archive types to create
        if (!empty($this->options['archiveMimes']) && is_array($this->options['archiveMimes'])) {
            foreach ($this->archivers['create'] as $mime => $v) {
                if (!in_array($mime, $this->options['archiveMimes'])) {
                    unset($this->archivers['create'][$mime]);
                }
            }
        }

        // manualy add archivers
        if (!empty($this->options['archivers']['create']) && is_array($this->options['archivers']['create'])) {
            foreach ($this->options['archivers']['create'] as $mime => $conf) {
                if (strpos($mime, 'application/') === 0
                    && !empty($conf['cmd'])
                    && isset($conf['argc'])
                    && !empty($conf['ext'])
                    && !isset($this->archivers['create'][$mime])) {
                    $this->archivers['create'][$mime] = $conf;
                }
            }
        }

        if (!empty($this->options['archivers']['extract']) && is_array($this->options['archivers']['extract'])) {
            foreach ($this->options['archivers']['extract'] as $mime => $conf) {
                if (strpos($mime, 'application/') === 0
                    && !empty($conf['cmd'])
                    && isset($conf['argc'])
                    && !empty($conf['ext'])
                    && !isset($this->archivers['extract'][$mime])) {
                    $this->archivers['extract'][$mime] = $conf;
                }
            }
        }

        if (!empty($this->options['noSessionCache']) && is_array($this->options['noSessionCache'])) {
            foreach ($this->options['noSessionCache'] as $_key) {
                $this->sessionCaching[$_key] = false;
                unset($this->sessionCache[$_key]);
            }
        }
        if ($this->sessionCaching['subdirs']) {
            if (!isset($this->sessionCache['subdirs'])) {
                $this->sessionCache['subdirs'] = array();
            }
        }


        $this->configure();

        // Normalize disabled (array_merge`for type array of JSON)
        $this->disabled = array_values(array_unique($this->disabled));

        // fix sync interval
        if ($this->options['syncMinMs'] !== 0) {
            $this->options['syncMinMs'] = max($this->options[$this->options['syncChkAsTs'] ? 'tsPlSleep' : 'lsPlSleep'] * 1000, intval($this->options['syncMinMs']));
        }

        // ` copyJoin` is required for the trash function
        if ($this->options['trashHash'] && empty($this->options['copyJoin'])) {
            $this->options['trashHash'] = '';
        }

        // set tmpLinkPath
        if (elFinder::$tmpLinkPath && !$this->options['tmpLinkPath']) {
            if (is_writeable(elFinder::$tmpLinkPath)) {
                $this->options['tmpLinkPath'] = elFinder::$tmpLinkPath;
            } else {
                elFinder::$tmpLinkPath = '';
            }
        }
        if ($this->options['tmpLinkPath'] && is_writable($this->options['tmpLinkPath'])) {
            $this->tmpLinkPath = realpath($this->options['tmpLinkPath']);
        } else if (!$this->tmpLinkPath && $this->tmbURL && $this->tmbPath) {
            $this->tmpLinkPath = $this->tmbPath;
            $this->options['tmpLinkUrl'] = $this->tmbURL;
        } else if (!$this->options['URL'] && is_writable('../files/.tmb')) {
            $this->tmpLinkPath = realpath('../files/.tmb');
            $this->options['tmpLinkUrl'] = '';
            if (!elFinder::$tmpLinkPath) {
                elFinder::$tmpLinkPath = $this->tmpLinkPath;
                elFinder::$tmpLinkUrl = '';
            }
        }

        // set tmpLinkUrl
        if (elFinder::$tmpLinkUrl && !$this->options['tmpLinkUrl']) {
            $this->options['tmpLinkUrl'] = elFinder::$tmpLinkUrl;
        }
        if ($this->options['tmpLinkUrl']) {
            $this->tmpLinkUrl = $this->options['tmpLinkUrl'];
        }
        if ($this->tmpLinkPath && !$this->tmpLinkUrl) {
            $cur = realpath('./');
            $i = 0;
            while ($cur !== $this->systemRoot && strpos($this->tmpLinkPath, $cur) !== 0) {
                $i++;
                $cur = dirname($cur);
            }
            list($req) = explode('?', $_SERVER['REQUEST_URI']);
            $reqs = explode('/', dirname($req));
            $uri = join('/', array_slice($reqs, 0, count($reqs) - 1)) . substr($this->tmpLinkPath, strlen($cur));
            $https = (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off');
            $this->tmpLinkUrl = ($https ? 'https://' : 'http://')
                . $_SERVER['SERVER_NAME'] // host
                . (((!$https && $_SERVER['SERVER_PORT'] == 80) || ($https && $_SERVER['SERVER_PORT'] == 443)) ? '' : (':' . $_SERVER['SERVER_PORT']))  // port
                . $uri;
            if (!elFinder::$tmpLinkUrl) {
                elFinder::$tmpLinkUrl = $this->tmpLinkUrl;
            }
        }

        // remove last '/'
        if ($this->tmpLinkPath) {
            $this->tmpLinkPath = rtrim($this->tmpLinkPath, '/');
        }
        if ($this->tmpLinkUrl) {
            $this->tmpLinkUrl = rtrim($this->tmpLinkUrl, '/');
        }

        // to update options cache
        if (isset($this->sessionCache['rootstat'])) {
            unset($this->sessionCache['rootstat'][$this->getRootstatCachekey()]);
        }
        $this->updateCache($this->root, $root);

        return $this->mounted = true;
    }

    /**
     * Some "unmount" stuffs - may be required by virtual fs
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function umount()
    {
    }

    /**
     * Remove session cache of this volume
     */
    public function clearSessionCache()
    {
        $this->sessionCache = array();
    }

    /**
     * Return error message from last failed action
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function error()
    {
        return $this->error;
    }

    /**
     * Return is uploadable that given file name
     *
     * @param  string $name file name
     * @param  bool   $allowUnknown
     *
     * @return bool
     * @author Naoki Sawada
     **/
    public function isUploadableByName($name, $allowUnknown = false)
    {
        $mimeByName = $this->mimetype($name, true);
        return (($allowUnknown && $mimeByName === 'unknown') || $this->allowPutMime($mimeByName));
    }

    /**
     * Return Extention/MIME Table (elFinderVolumeDriver::$mimetypes)
     *
     * @return array
     * @author Naoki Sawada
     */
    public function getMimeTable()
    {
        // load mime.types
        if (!elFinderVolumeDriver::$mimetypesLoaded) {
            elFinderVolumeDriver::loadMimeTypes();
        }
        return elFinderVolumeDriver::$mimetypes;
    }

    /**
     * Return file extention detected by MIME type
     *
     * @param  string $mime   MIME type
     * @param  string $suffix Additional suffix
     *
     * @return string
     * @author Naoki Sawada
     */
    public function getExtentionByMime($mime, $suffix = '')
    {
        static $extTable = null;

        if (is_null($extTable)) {
            $extTable = array_flip(array_unique($this->getMimeTable()));
            foreach ($this->options['mimeMap'] as $pair => $_mime) {
                list($ext) = explode(':', $pair);
                if ($ext !== '*' && !isset($extTable[$_mime])) {
                    $extTable[$_mime] = $ext;
                }
            }
        }

        if ($mime && isset($extTable[$mime])) {
            return $suffix ? ($extTable[$mime] . $suffix) : $extTable[$mime];
        }
        return '';
    }

    /**
     * Set mimetypes allowed to display to client
     *
     * @param  array $mimes
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function setMimesFilter($mimes)
    {
        if (is_array($mimes)) {
            $this->onlyMimes = $mimes;
        }
    }

    /**
     * Return root folder hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function root()
    {
        return $this->encode($this->root);
    }

    /**
     * Return root path
     *
     * @return string
     * @author Naoki Sawada
     **/
    public function getRootPath()
    {
        return $this->root;
    }

    /**
     * Return target path hash
     *
     * @param  string $path
     * @param  string $name
     *
     * @author Naoki Sawada
     * @return string
     */
    public function getHash($path, $name = '')
    {
        if ($name !== '') {
            $path = $this->joinPathCE($path, $name);
        }
        return $this->encode($path);
    }

    /**
     * Return decoded path of target hash
     * This method do not check the stat of target
     * Use method `realpath()` to do check of the stat of target
     *
     * @param  string $hash
     *
     * @author Naoki Sawada
     * @return string
     */
    public function getPath($hash)
    {
        return $this->decode($hash);
    }

    /**
     * Return root or startPath hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function defaultPath()
    {
        return $this->encode($this->startPath ? $this->startPath : $this->root);
    }

    /**
     * Return volume options required by client:
     *
     * @param $hash
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    public function options($hash)
    {
        $create = $createext = array();
        if (isset($this->archivers['create']) && is_array($this->archivers['create'])) {
            foreach ($this->archivers['create'] as $m => $v) {
                $create[] = $m;
                $createext[$m] = $v['ext'];
            }
        }
        $opts = array(
            'path' => $hash ? $this->path($hash) : '',
            'url' => $this->URL,
            'tmbUrl' => (!$this->imgLib && $this->options['tmbFbSelf']) ? 'self' : $this->tmbURL,
            'disabled' => $this->disabled,
            'separator' => $this->separator,
            'copyOverwrite' => intval($this->options['copyOverwrite']),
            'uploadOverwrite' => intval($this->options['uploadOverwrite']),
            'uploadMaxSize' => intval($this->uploadMaxSize),
            'uploadMaxConn' => intval($this->options['uploadMaxConn']),
            'uploadMime' => array(
                'firstOrder' => isset($this->uploadOrder[0]) ? $this->uploadOrder[0] : 'deny',
                'allow' => $this->uploadAllow,
                'deny' => $this->uploadDeny
            ),
            'dispInlineRegex' => $this->options['dispInlineRegex'],
            'jpgQuality' => intval($this->options['jpgQuality']),
            'archivers' => array(
                'create' => $create,
                'extract' => isset($this->archivers['extract']) && is_array($this->archivers['extract']) ? array_keys($this->archivers['extract']) : array(),
                'createext' => $createext
            ),
            'uiCmdMap' => (isset($this->options['uiCmdMap']) && is_array($this->options['uiCmdMap'])) ? $this->options['uiCmdMap'] : array(),
            'syncChkAsTs' => intval($this->options['syncChkAsTs']),
            'syncMinMs' => intval($this->options['syncMinMs']),
            'i18nFolderName' => intval($this->options['i18nFolderName']),
            'tmbCrop' => intval($this->options['tmbCrop']),
            'tmbReqCustomData' => (bool)$this->options['tmbReqCustomData'],
            'substituteImg' => (bool)$this->options['substituteImg'],
            'onetimeUrl' => (bool)$this->options['onetimeUrl'],
        );
        if (!empty($this->options['trashHash'])) {
            $opts['trashHash'] = $this->options['trashHash'];
        }
        if ($hash === null) {
            // call from getRootStatExtra()
            if (!empty($this->options['icon'])) {
                $opts['icon'] = $this->options['icon'];
            }
            if (!empty($this->options['rootCssClass'])) {
                $opts['csscls'] = $this->options['rootCssClass'];
            }
            if (isset($this->options['netkey'])) {
                $opts['netkey'] = $this->options['netkey'];
            }
        }
        return $opts;
    }

    /**
     * Get option value of this volume
     *
     * @param string $name target option name
     *
     * @return NULL|mixed   target option value
     * @author Naoki Sawada
     */
    public function getOption($name)
    {
        return isset($this->options[$name]) ? $this->options[$name] : null;
    }

    /**
     * Get plugin values of this options
     *
     * @param string $name Plugin name
     *
     * @return NULL|array   Plugin values
     * @author Naoki Sawada
     */
    public function getOptionsPlugin($name = '')
    {
        if ($name) {
            return isset($this->options['plugin'][$name]) ? $this->options['plugin'][$name] : array();
        } else {
            return $this->options['plugin'];
        }
    }

    /**
     * Return true if command disabled in options
     *
     * @param  string $cmd command name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function commandDisabled($cmd)
    {
        return in_array($cmd, $this->disabled);
    }

    /**
     * Return true if mime is required mimes list
     *
     * @param  string    $mime  mime type to check
     * @param  array     $mimes allowed mime types list or not set to use client mimes list
     * @param  bool|null $empty what to return on empty list
     *
     * @return bool|null
     * @author Dmitry (dio) Levashov
     * @author Troex Nevelin
     **/
    public function mimeAccepted($mime, $mimes = null, $empty = true)
    {
        $mimes = is_array($mimes) ? $mimes : $this->onlyMimes;
        if (empty($mimes)) {
            return $empty;
        }
        return $mime == 'directory'
            || in_array('all', $mimes)
            || in_array('All', $mimes)
            || in_array($mime, $mimes)
            || in_array(substr($mime, 0, strpos($mime, '/')), $mimes);
    }

    /**
     * Return true if voume is readable.
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function isReadable()
    {
        $stat = $this->stat($this->root);
        return $stat['read'];
    }

    /**
     * Return true if copy from this volume allowed
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function copyFromAllowed()
    {
        return !!$this->options['copyFrom'];
    }

    /**
     * Return file path related to root with convert encoging
     *
     * @param  string $hash file hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function path($hash)
    {
        return $this->convEncOut($this->_path($this->convEncIn($this->decode($hash))));
    }

    /**
     * Return file real path if file exists
     *
     * @param  string $hash file hash
     *
     * @return string | false
     * @author Dmitry (dio) Levashov
     **/
    public function realpath($hash)
    {
        $path = $this->decode($hash);
        return $this->stat($path) ? $path : false;
    }

    /**
     * Return list of moved/overwrited files
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function removed()
    {
        if ($this->removed) {
            $unsetSubdir = isset($this->sessionCache['subdirs']) ? true : false;
            foreach ($this->removed as $item) {
                if ($item['mime'] === 'directory') {
                    $path = $this->decode($item['hash']);
                    if ($unsetSubdir) {
                        unset($this->sessionCache['subdirs'][$path]);
                    }
                    if ($item['phash'] !== '') {
                        $parent = $this->decode($item['phash']);
                        unset($this->cache[$parent]);
                        if ($this->root === $parent) {
                            $this->sessionCache['rootstat'] = array();
                        }
                        if ($unsetSubdir) {
                            unset($this->sessionCache['subdirs'][$parent]);
                        }
                    }
                }
            }
            $this->removed = array_values($this->removed);
        }
        return $this->removed;
    }

    /**
     * Return list of added files
     *
     * @deprecated
     * @return array
     * @author Naoki Sawada
     **/
    public function added()
    {
        return $this->added;
    }

    /**
     * Clean removed files list
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function resetRemoved()
    {
        $this->resetResultStat();
    }

    /**
     * Clean added/removed files list
     *
     * @return void
     **/
    public function resetResultStat()
    {
        $this->removed = array();
        $this->added = array();
    }

    /**
     * Return file/dir hash or first founded child hash with required attr == $val
     *
     * @param  string $hash file hash
     * @param  string $attr attribute name
     * @param  bool   $val  attribute value
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    public function closest($hash, $attr, $val)
    {
        return ($path = $this->closestByAttr($this->decode($hash), $attr, $val)) ? $this->encode($path) : false;
    }

    /**
     * Return file info or false on error
     *
     * @param  string $hash file hash
     *
     * @return array|false
     * @internal param bool $realpath add realpath field to file info
     * @author   Dmitry (dio) Levashov
     */
    public function file($hash)
    {
        $file = $this->stat($this->decode($hash));

        return ($file) ? $file : $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
    }

    /**
     * Return folder info
     *
     * @param  string $hash folder hash
     * @param bool    $resolveLink
     *
     * @return array|false
     * @internal param bool $hidden return hidden file info
     * @author   Dmitry (dio) Levashov
     */
    public function dir($hash, $resolveLink = false)
    {
        if (($dir = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_DIR_NOT_FOUND);
        }

        if ($resolveLink && !empty($dir['thash'])) {
            $dir = $this->file($dir['thash']);
        }

        return $dir && $dir['mime'] == 'directory' && empty($dir['hidden'])
            ? $dir
            : $this->setError(elFinder::ERROR_NOT_DIR);
    }

    /**
     * Return directory content or false on error
     *
     * @param  string $hash file hash
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function scandir($hash)
    {
        if (($dir = $this->dir($hash)) == false) {
            return false;
        }

        $path = $this->decode($hash);
        if ($res = $dir['read']
            ? $this->getScandir($path)
            : $this->setError(elFinder::ERROR_PERM_DENIED)) {

            $dirs = null;
            if ($this->sessionCaching['subdirs'] && isset($this->sessionCache['subdirs'][$path])) {
                $dirs = $this->sessionCache['subdirs'][$path];
            }
            if ($dirs !== null || (isset($dir['dirs']) && $dir['dirs'] != 1)) {
                $_dir = $dir;
                if ($dirs || $this->subdirs($hash)) {
                    $dir['dirs'] = 1;
                } else {
                    unset($dir['dirs']);
                }
                if ($dir !== $_dir) {
                    $this->updateCache($path, $dir);
                }
            }
        }

        return $res;
    }

    /**
     * Return dir files names list
     *
     * @param  string $hash file hash
     * @param null    $intersect
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     */
    public function ls($hash, $intersect = null)
    {
        if (($dir = $this->dir($hash)) == false || !$dir['read']) {
            return false;
        }

        $list = array();
        $path = $this->decode($hash);

        $check = array();
        if ($intersect) {
            $check = array_flip($intersect);
        }

        foreach ($this->getScandir($path) as $stat) {
            if (empty($stat['hidden']) && (!$check || isset($check[$stat['name']])) && $this->mimeAccepted($stat['mime'])) {
                $list[$stat['hash']] = $stat['name'];
            }
        }

        return $list;
    }

    /**
     * Return subfolders for required folder or false on error
     *
     * @param  string $hash    folder hash or empty string to get tree from root folder
     * @param  int    $deep    subdir deep
     * @param  string $exclude dir hash which subfolders must be exluded from result, required to not get stat twice on cwd subfolders
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function tree($hash = '', $deep = 0, $exclude = '')
    {
        $path = $hash ? $this->decode($hash) : $this->root;

        if (($dir = $this->stat($path)) == false || $dir['mime'] != 'directory') {
            return false;
        }

        $dirs = $this->gettree($path, $deep > 0 ? $deep - 1 : $this->treeDeep - 1, $exclude ? $this->decode($exclude) : null);
        array_unshift($dirs, $dir);
        return $dirs;
    }

    /**
     * Return part of dirs tree from required dir up to root dir
     *
     * @param  string    $hash   directory hash
     * @param  bool|null $lineal only lineal parents
     *
     * @return array|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function parents($hash, $lineal = false)
    {
        if (($current = $this->dir($hash)) == false) {
            return false;
        }

        $args = func_get_args();
        // checks 3rd param `$until` (elFinder >= 2.1.24)
        $until = '';
        if (isset($args[2])) {
            $until = $args[2];
        }

        $path = $this->decode($hash);
        $tree = array();

        while ($path && $path != $this->root) {
            elFinder::checkAborted();
            $path = $this->dirnameCE($path);
            if (!($stat = $this->stat($path)) || !empty($stat['hidden']) || !$stat['read']) {
                return false;
            }

            array_unshift($tree, $stat);
            if (!$lineal) {
                foreach ($this->gettree($path, 0) as $dir) {
                    elFinder::checkAborted();
                    if (!isset($tree[$dir['hash']])) {
                        $tree[$dir['hash']] = $dir;
                    }
                }
            }

            if ($until && $until === $this->encode($path)) {
                break;
            }
        }

        return $tree ? array_values($tree) : array($current);
    }

    /**
     * Create thumbnail for required file and return its name or false on failed
     *
     * @param $hash
     *
     * @return false|string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function tmb($hash)
    {
        $path = $this->decode($hash);
        $stat = $this->stat($path);

        if (isset($stat['tmb'])) {
            $res = $stat['tmb'] == "1" ? $this->createTmb($path, $stat) : $stat['tmb'];
            if (!$res) {
                list($type) = explode('/', $stat['mime']);
                $fallback = $this->options['resourcePath'] . DIRECTORY_SEPARATOR . strtolower($type) . '.png';
                if (is_file($fallback)) {
                    $res = $this->tmbname($stat);
                    if (!copy($fallback, $this->tmbPath . DIRECTORY_SEPARATOR . $res)) {
                        $res = false;
                    }
                }
            }
            // tmb garbage collection
            if ($res && $this->options['tmbGcMaxlifeHour'] && $this->options['tmbGcPercentage'] > 0) {
                $rand = mt_rand(1, 10000);
                if ($rand <= $this->options['tmbGcPercentage'] * 100) {
                    register_shutdown_function(array('elFinder', 'GlobGC'), $this->tmbPath . DIRECTORY_SEPARATOR . '*.png', $this->options['tmbGcMaxlifeHour'] * 3600);
                }
            }
            return $res;
        }
        return false;
    }

    /**
     * Return file size / total directory size
     *
     * @param  string   file hash
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function size($hash)
    {
        return $this->countSize($this->decode($hash));
    }

    /**
     * Open file for reading and return file pointer
     *
     * @param  string   file hash
     *
     * @return Resource|false
     * @author Dmitry (dio) Levashov
     **/
    public function open($hash)
    {
        if (($file = $this->file($hash)) == false
            || $file['mime'] == 'directory') {
            return false;
        }
        // check extra option for network stream pointer
        if (func_num_args() > 1) {
            $opts = func_get_arg(1);
        } else {
            $opts = array();
        }
        return $this->fopenCE($this->decode($hash), 'rb', $opts);
    }

    /**
     * Close file pointer
     *
     * @param  Resource $fp   file pointer
     * @param  string   $hash file hash
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    public function close($fp, $hash)
    {
        $this->fcloseCE($fp, $this->decode($hash));
    }

    /**
     * Create directory and return dir info
     *
     * @param  string $dsthash destination directory hash
     * @param  string $name    directory name
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function mkdir($dsthash, $name)
    {
        if ($this->commandDisabled('mkdir')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!$this->nameAccepted($name, true)) {
            return $this->setError(elFinder::ERROR_INVALID_DIRNAME);
        }

        if (($dir = $this->dir($dsthash)) == false) {
            return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dsthash);
        }

        $path = $this->decode($dsthash);

        if (!$dir['write'] || !$this->allowCreate($path, $name, true)) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (substr($name, 0, 1) === '/' || substr($name, 0, 1) === '\\') {
            return $this->setError(elFinder::ERROR_INVALID_DIRNAME);
        }

        $dst = $this->joinPathCE($path, $name);
        $stat = $this->isNameExists($dst);
        if (!empty($stat)) {
            return $this->setError(elFinder::ERROR_EXISTS, $name);
        }
        $this->clearcache();

        $mkpath = $this->convEncOut($this->_mkdir($this->convEncIn($path), $this->convEncIn($name)));
        if ($mkpath) {
            $this->clearstatcache();
            $this->updateSubdirsCache($path, true);
            $this->updateSubdirsCache($mkpath, false);
        }

        return $mkpath ? $this->stat($mkpath) : false;
    }

    /**
     * Create empty file and return its info
     *
     * @param  string $dst  destination directory
     * @param  string $name file name
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function mkfile($dst, $name)
    {
        if ($this->commandDisabled('mkfile')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!$this->nameAccepted($name, false)) {
            return $this->setError(elFinder::ERROR_INVALID_NAME);
        }

        if (substr($name, 0, 1) === '/' || substr($name, 0, 1) === '\\') {
            return $this->setError(elFinder::ERROR_INVALID_DIRNAME);
        }

        $mimeByName = $this->mimetype($name, true);
        if ($mimeByName && !$this->allowPutMime($mimeByName)) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME, $name);
        }

        if (($dir = $this->dir($dst)) == false) {
            return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dst);
        }

        $path = $this->decode($dst);

        if (!$dir['write'] || !$this->allowCreate($path, $name, false)) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($this->isNameExists($this->joinPathCE($path, $name))) {
            return $this->setError(elFinder::ERROR_EXISTS, $name);
        }

        $this->clearcache();
        $res = false;
        if ($path = $this->convEncOut($this->_mkfile($this->convEncIn($path), $this->convEncIn($name)))) {
            $this->clearstatcache();
            $res = $this->stat($path);
        }
        return $res;
    }

    /**
     * Rename file and return file info
     *
     * @param  string $hash file hash
     * @param  string $name new file name
     *
     * @return array|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function rename($hash, $name)
    {
        if ($this->commandDisabled('rename')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!($file = $this->file($hash))) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if ($name === $file['name']) {
            return $file;
        }

        if (!empty($this->options['netkey']) && !empty($file['isroot'])) {
            // change alias of netmount root
            $rootKey = $this->getRootstatCachekey();
            // delete old cache data
            if ($this->sessionCaching['rootstat']) {
                unset($this->sessionCaching['rootstat'][$rootKey]);
            }
            if (elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $name)) {
                $this->clearcache();
                $this->rootName = $this->options['alias'] = $name;
                return $this->stat($this->root);
            } else {
                return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, $name);
            }
        }

        if (!empty($file['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $file['name']);
        }

        $isDir = ($file['mime'] === 'directory');

        if (!$this->nameAccepted($name, $isDir)) {
            return $this->setError($isDir ? elFinder::ERROR_INVALID_DIRNAME : elFinder::ERROR_INVALID_NAME);
        }

        if (!$isDir) {
            $mimeByName = $this->mimetype($name, true);
            if ($mimeByName && !$this->allowPutMime($mimeByName)) {
                return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME, $name);
            }
        }

        $path = $this->decode($hash);
        $dir = $this->dirnameCE($path);
        $stat = $this->isNameExists($this->joinPathCE($dir, $name));
        if ($stat) {
            return $this->setError(elFinder::ERROR_EXISTS, $name);
        }

        if (!$this->allowCreate($dir, $name, ($file['mime'] === 'directory'))) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $this->rmTmb($file); // remove old name tmbs, we cannot do this after dir move


        if ($path = $this->convEncOut($this->_move($this->convEncIn($path), $this->convEncIn($dir), $this->convEncIn($name)))) {
            $this->clearcache();
            return $this->stat($path);
        }
        return false;
    }

    /**
     * Create file copy with suffix "copy number" and return its info
     *
     * @param  string $hash   file hash
     * @param  string $suffix suffix to add to file name
     *
     * @return array|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function duplicate($hash, $suffix = 'copy')
    {
        if ($this->commandDisabled('duplicate')) {
            return $this->setError(elFinder::ERROR_COPY, '#' . $hash, elFinder::ERROR_PERM_DENIED);
        }

        if (($file = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_COPY, elFinder::ERROR_FILE_NOT_FOUND);
        }

        $path = $this->decode($hash);
        $dir = $this->dirnameCE($path);
        $name = $this->uniqueName($dir, $file['name'], sprintf($this->options['duplicateSuffix'], $suffix));

        if (!$this->allowCreate($dir, $name, ($file['mime'] === 'directory'))) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        return ($path = $this->copy($path, $dir, $name)) == false
            ? false
            : $this->stat($path);
    }

    /**
     * Save uploaded file.
     * On success return array with new file stat and with removed file hash (if existed file was replaced)
     *
     * @param  Resource $fp      file pointer
     * @param  string   $dst     destination folder hash
     * @param           $name
     * @param  string   $tmpname file tmp name - required to detect mime type
     * @param  array    $hashes  exists files hash array with filename as key
     *
     * @return array|false
     * @throws elFinderAbortException
     * @internal param string $src file name
     * @author   Dmitry (dio) Levashov
     */
    public function upload($fp, $dst, $name, $tmpname, $hashes = array())
    {
        if ($this->commandDisabled('upload')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (($dir = $this->dir($dst)) == false) {
            return $this->setError(elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dst);
        }

        if (empty($dir['write'])) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (!$this->nameAccepted($name, false)) {
            return $this->setError(elFinder::ERROR_INVALID_NAME);
        }

        $mimeByName = '';
        if ($this->mimeDetect === 'internal') {
            $mime = $this->mimetype($tmpname, $name);
        } else {
            $mime = $this->mimetype($tmpname, $name);
            $mimeByName = $this->mimetype($name, true);
            if ($mime === 'unknown') {
                $mime = $mimeByName;
            }
        }

        if (!$this->allowPutMime($mime) || ($mimeByName && !$this->allowPutMime($mimeByName))) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME, '(' . $mime . ')');
        }

        $tmpsize = (int)sprintf('%u', filesize($tmpname));
        if ($this->uploadMaxSize > 0 && $tmpsize > $this->uploadMaxSize) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_SIZE);
        }

        $dstpath = $this->decode($dst);
        if (isset($hashes[$name])) {
            $test = $this->decode($hashes[$name]);
            $file = $this->stat($test);
        } else {
            $test = $this->joinPathCE($dstpath, $name);
            $file = $this->isNameExists($test);
        }

        $this->clearcache();

        if ($file && $file['name'] === $name) { // file exists and check filename for item ID based filesystem
            if ($this->uploadOverwrite) {
                if (!$file['write']) {
                    return $this->setError(elFinder::ERROR_PERM_DENIED);
                } elseif ($file['mime'] == 'directory') {
                    return $this->setError(elFinder::ERROR_NOT_REPLACE, $name);
                }
                $this->remove($test);
            } else {
                $name = $this->uniqueName($dstpath, $name, '-', false);
            }
        }

        $stat = array(
            'mime' => $mime,
            'width' => 0,
            'height' => 0,
            'size' => $tmpsize);

        // $w = $h = 0;
        if (strpos($mime, 'image') === 0 && ($s = getimagesize($tmpname))) {
            $stat['width'] = $s[0];
            $stat['height'] = $s[1];
        }
        // $this->clearcache();
        if (($path = $this->saveCE($fp, $dstpath, $name, $stat)) == false) {
            return false;
        }

        $stat = $this->stat($path);
        // Try get URL
        if (empty($stat['url']) && ($url = $this->getContentUrl($stat['hash']))) {
            $stat['url'] = $url;
        }

        return $stat;
    }

    /**
     * Paste files
     *
     * @param  Object $volume source volume
     * @param         $src
     * @param  string $dst    destination dir hash
     * @param  bool   $rmSrc  remove source after copy?
     * @param array   $hashes
     *
     * @return array|false
     * @throws elFinderAbortException
     * @internal param string $source file hash
     * @author   Dmitry (dio) Levashov
     */
    public function paste($volume, $src, $dst, $rmSrc = false, $hashes = array())
    {
        $err = $rmSrc ? elFinder::ERROR_MOVE : elFinder::ERROR_COPY;

        if ($this->commandDisabled('paste')) {
            return $this->setError($err, '#' . $src, elFinder::ERROR_PERM_DENIED);
        }

        if (($file = $volume->file($src, $rmSrc)) == false) {
            return $this->setError($err, '#' . $src, elFinder::ERROR_FILE_NOT_FOUND);
        }

        $name = $file['name'];
        $errpath = $volume->path($file['hash']);

        if (($dir = $this->dir($dst)) == false) {
            return $this->setError($err, $errpath, elFinder::ERROR_TRGDIR_NOT_FOUND, '#' . $dst);
        }

        if (!$dir['write'] || !$file['read']) {
            return $this->setError($err, $errpath, elFinder::ERROR_PERM_DENIED);
        }

        $destination = $this->decode($dst);

        if (($test = $volume->closest($src, $rmSrc ? 'locked' : 'read', $rmSrc))) {
            return $rmSrc
                ? $this->setError($err, $errpath, elFinder::ERROR_LOCKED, $volume->path($test))
                : $this->setError($err, $errpath, empty($file['thash']) ? elFinder::ERROR_PERM_DENIED : elFinder::ERROR_MKOUTLINK);
        }

        if (isset($hashes[$name])) {
            $test = $this->decode($hashes[$name]);
            $stat = $this->stat($test);
        } else {
            $test = $this->joinPathCE($destination, $name);
            $stat = $this->isNameExists($test);
        }
        $this->clearcache();
        $dstDirExists = false;
        if ($stat && $stat['name'] === $name) { // file exists and check filename for item ID based filesystem
            if ($this->options['copyOverwrite']) {
                // do not replace file with dir or dir with file
                if (!$this->isSameType($file['mime'], $stat['mime'])) {
                    return $this->setError(elFinder::ERROR_NOT_REPLACE, $this->path($stat['hash']));
                }
                // existed file is not writable
                if (empty($stat['write'])) {
                    return $this->setError($err, $errpath, elFinder::ERROR_PERM_DENIED);
                }
                if ($this->options['copyJoin']) {
                    if (!empty($stat['locked'])) {
                        return $this->setError(elFinder::ERROR_LOCKED, $this->path($stat['hash']));
                    }
                } else {
                    // existed file locked or has locked child
                    if (($locked = $this->closestByAttr($test, 'locked', true))) {
                        $stat = $this->stat($locked);
                        return $this->setError(elFinder::ERROR_LOCKED, $this->path($stat['hash']));
                    }
                }
                // target is entity file of alias
                if ($volume === $this && ((isset($file['target']) && $test == $file['target']) || $test == $this->decode($src))) {
                    return $this->setError(elFinder::ERROR_REPLACE, $errpath);
                }
                // remove existed file
                if (!$this->options['copyJoin'] || $stat['mime'] !== 'directory') {
                    if (!$this->remove($test)) {
                        return $this->setError(elFinder::ERROR_REPLACE, $this->path($stat['hash']));
                    }
                } else if ($stat['mime'] === 'directory') {
                    $dstDirExists = true;
                }
            } else {
                $name = $this->uniqueName($destination, $name, ' ', false);
            }
        }

        // copy/move inside current volume
        if ($volume === $this) { //  changing == operand to === fixes issue #1285 - Paul Canning 24/03/2016
            $source = $this->decode($src);
            // do not copy into itself
            if ($this->inpathCE($destination, $source)) {
                return $this->setError(elFinder::ERROR_COPY_ITSELF, $errpath);
            }
            $rmDir = false;
            if ($rmSrc) {
                if ($dstDirExists) {
                    $rmDir = true;
                    $method = 'copy';
                } else {
                    $method = 'move';
                }
            } else {
                $method = 'copy';
            }
            $this->clearcache();
            if ($res = ($path = $this->$method($source, $destination, $name)) ? $this->stat($path) : false) {
                if ($rmDir) {
                    $this->remove($source);
                }
            } else {
                return false;
            }
        } else {
            // copy/move from another volume
            if (!$this->options['copyTo'] || !$volume->copyFromAllowed()) {
                return $this->setError(elFinder::ERROR_COPY, $errpath, elFinder::ERROR_PERM_DENIED);
            }

            $this->error = array();
            if (($path = $this->copyFrom($volume, $src, $destination, $name)) == false) {
                return false;
            }

            if ($rmSrc && !$this->error()) {
                if (!$volume->rm($src)) {
                    if ($volume->file($src)) {
                        $this->addError(elFinder::ERROR_RM_SRC);
                    } else {
                        $this->removed[] = $file;
                    }
                }
            }
            $res = $this->stat($path);
        }
        return $res;
    }

    /**
     * Return path info array to archive of target items
     *
     * @param  array $hashes
     *
     * @return array|false
     * @throws Exception
     * @author Naoki Sawada
     */
    public function zipdl($hashes)
    {
        if ($this->commandDisabled('zipdl')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $archivers = $this->getArchivers();
        $cmd = null;
        if (!$archivers || empty($archivers['create'])) {
            return false;
        }
        $archivers = $archivers['create'];
        if (!$archivers) {
            return false;
        }
        $file = $mime = '';
        foreach (array('zip', 'tgz') as $ext) {
            $mime = $this->mimetype('file.' . $ext, true);
            if (isset($archivers[$mime])) {
                $cmd = $archivers[$mime];
                break;
            }
        }
        if (!$cmd) {
            $cmd = array_shift($archivers);
            if (!empty($ext)) {
                $mime = $this->mimetype('file.' . $ext, true);
            }
        }
        $ext = $cmd['ext'];
        $res = false;
        $mixed = false;
        $hashes = array_values($hashes);
        $dirname = dirname(str_replace($this->separator, DIRECTORY_SEPARATOR, $this->path($hashes[0])));
        $cnt = count($hashes);
        if ($cnt > 1) {
            for ($i = 1; $i < $cnt; $i++) {
                if ($dirname !== dirname(str_replace($this->separator, DIRECTORY_SEPARATOR, $this->path($hashes[$i])))) {
                    $mixed = true;
                    break;
                }
            }
        }
        if ($mixed || $this->root == $this->dirnameCE($this->decode($hashes[0]))) {
            $prefix = $this->rootName;
        } else {
            $prefix = basename($dirname);
        }
        if ($dir = $this->getItemsInHand($hashes)) {
            $tmppre = (substr(PHP_OS, 0, 3) === 'WIN') ? 'zd-' : 'elfzdl-';
            $pdir = dirname($dir);
            // garbage collection (expire 2h)
            register_shutdown_function(array('elFinder', 'GlobGC'), $pdir . DIRECTORY_SEPARATOR . $tmppre . '*', 7200);
            $files = self::localScandir($dir);
            if ($files && ($arc = tempnam($dir, $tmppre))) {
                unlink($arc);
                $arc = $arc . '.' . $ext;
                $name = basename($arc);
                if ($arc = $this->makeArchive($dir, $files, $name, $cmd)) {
                    $file = tempnam($pdir, $tmppre);
                    unlink($file);
                    $res = rename($arc, $file);
                    $this->rmdirRecursive($dir);
                }
            }
        }
        return $res ? array('path' => $file, 'ext' => $ext, 'mime' => $mime, 'prefix' => $prefix) : false;
    }

    /**
     * Return file contents
     *
     * @param  string $hash file hash
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    public function getContents($hash)
    {
        $file = $this->file($hash);

        if (!$file) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if ($file['mime'] == 'directory') {
            return $this->setError(elFinder::ERROR_NOT_FILE);
        }

        if (!$file['read']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($this->getMaxSize > 0 && $file['size'] > $this->getMaxSize) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_SIZE);
        }

        return $file['size'] ? $this->_getContents($this->convEncIn($this->decode($hash), true)) : '';
    }

    /**
     * Put content in text file and return file info.
     *
     * @param  string $hash    file hash
     * @param  string $content new file content
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    public function putContents($hash, $content)
    {
        if ($this->commandDisabled('edit')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $path = $this->decode($hash);

        if (!($file = $this->file($hash))) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$file['write']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        // check data cheme
        if (preg_match('~^\0data:(.+?/.+?);base64,~', $content, $m)) {
            $dMime = $m[1];
            if ($file['size'] > 0 && $dMime !== $file['mime']) {
                return $this->setError(elFinder::ERROR_PERM_DENIED);
            }
            $content = base64_decode(substr($content, strlen($m[0])));
        }

        // check MIME
        $name = $this->basenameCE($path);
        $mime = '';
        $mimeByName = $this->mimetype($name, true);
        if ($this->mimeDetect !== 'internal') {
            if ($tp = $this->tmpfile()) {
                fwrite($tp, $content);
                $info = stream_get_meta_data($tp);
                $filepath = $info['uri'];
                $mime = $this->mimetype($filepath, $name);
                fclose($tp);
            }
        }
        if (!$this->allowPutMime($mimeByName) || ($mime && !$this->allowPutMime($mime))) {
            return $this->setError(elFinder::ERROR_UPLOAD_FILE_MIME);
        }

        $this->clearcache();
        $res = false;
        if ($this->convEncOut($this->_filePutContents($this->convEncIn($path), $content))) {
            $this->rmTmb($file);
            $this->clearstatcache();
            $res = $this->stat($path);
        }
        return $res;
    }

    /**
     * Extract files from archive
     *
     * @param  string $hash archive hash
     * @param null    $makedir
     *
     * @return array|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    public function extract($hash, $makedir = null)
    {
        if ($this->commandDisabled('extract')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if (($file = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        $archiver = isset($this->archivers['extract'][$file['mime']])
            ? $this->archivers['extract'][$file['mime']]
            : array();

        if (!$archiver) {
            return $this->setError(elFinder::ERROR_NOT_ARCHIVE);
        }

        $path = $this->decode($hash);
        $parent = $this->stat($this->dirnameCE($path));

        if (!$file['read'] || !$parent['write']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }
        $this->clearcache();
        $this->extractToNewdir = is_null($makedir) ? 'auto' : (bool)$makedir;

        if ($path = $this->convEncOut($this->_extract($this->convEncIn($path), $archiver))) {
            if (is_array($path)) {
                foreach ($path as $_k => $_p) {
                    $path[$_k] = $this->stat($_p);
                }
            } else {
                $path = $this->stat($path);
            }
            return $path;
        } else {
            return false;
        }
    }

    /**
     * Add files to archive
     *
     * @param        $hashes
     * @param        $mime
     * @param string $name
     *
     * @return array|bool
     * @throws Exception
     */
    public function archive($hashes, $mime, $name = '')
    {
        if ($this->commandDisabled('archive')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($name !== '' && !$this->nameAccepted($name, false)) {
            return $this->setError(elFinder::ERROR_INVALID_NAME);
        }

        $archiver = isset($this->archivers['create'][$mime])
            ? $this->archivers['create'][$mime]
            : array();

        if (!$archiver) {
            return $this->setError(elFinder::ERROR_ARCHIVE_TYPE);
        }

        $files = array();
        $useRemoteArchive = !empty($this->options['useRemoteArchive']);

        $dir = '';
        foreach ($hashes as $hash) {
            if (($file = $this->file($hash)) == false) {
                return $this->setError(elFinder::ERROR_FILE_NOT_FOUND, '#' . $hash);
            }
            if (!$file['read']) {
                return $this->setError(elFinder::ERROR_PERM_DENIED);
            }
            $path = $this->decode($hash);
            if ($dir === '') {
                $dir = $this->dirnameCE($path);
                $stat = $this->stat($dir);
                if (!$stat['write']) {
                    return $this->setError(elFinder::ERROR_PERM_DENIED);
                }
            }

            $files[] = $useRemoteArchive ? $hash : $this->basenameCE($path);
        }

        if ($name === '') {
            $name = count($files) == 1 ? $files[0] : 'Archive';
        } else {
            $name = str_replace(array('/', '\\'), '_', preg_replace('/\.' . preg_quote($archiver['ext'], '/') . '$/i', '', $name));
        }
        $name .= '.' . $archiver['ext'];
        $name = $this->uniqueName($dir, $name, '');
        $this->clearcache();
        if ($useRemoteArchive) {
            return ($path = $this->remoteArchive($files, $name, $archiver)) ? $this->stat($path) : false;
        } else {
            return ($path = $this->convEncOut($this->_archive($this->convEncIn($dir), $this->convEncIn($files), $this->convEncIn($name), $archiver))) ? $this->stat($path) : false;
        }
    }

    /**
     * Create an archive from remote items
     *
     * @param      array  $hashes files hashes list
     * @param      string $name   archive name
     * @param      array  $arc    archiver options
     *
     * @return     string|boolean  path of created archive
     * @throws     Exception
     */
    protected function remoteArchive($hashes, $name, $arc)
    {
        $resPath = false;
        $file0 = $this->file($hashes[0]);
        if ($file0 && ($dir = $this->getItemsInHand($hashes))) {
            $files = self::localScandir($dir);
            if ($files) {
                if ($arc = $this->makeArchive($dir, $files, $name, $arc)) {
                    if ($fp = fopen($arc, 'rb')) {
                        $fstat = stat($arc);
                        $stat = array(
                            'size' => $fstat['size'],
                            'ts' => $fstat['mtime'],
                            'mime' => $this->mimetype($arc, $name)
                        );
                        $path = $this->decode($file0['phash']);
                        $resPath = $this->saveCE($fp, $path, $name, $stat);
                        fclose($fp);
                    }
                }
            }
            $this->rmdirRecursive($dir);
        }
        return $resPath;
    }

    /**
     * Resize image
     *
     * @param  string $hash       image file
     * @param  int    $width      new width
     * @param  int    $height     new height
     * @param  int    $x          X start poistion for crop
     * @param  int    $y          Y start poistion for crop
     * @param  string $mode       action how to mainpulate image
     * @param  string $bg         background color
     * @param  int    $degree     rotete degree
     * @param  int    $jpgQuality JEPG quality (1-100)
     *
     * @return array|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     * @author nao-pon
     * @author Troex Nevelin
     */
    public function resize($hash, $width, $height, $x, $y, $mode = 'resize', $bg = '', $degree = 0, $jpgQuality = null)
    {
        if ($this->commandDisabled('resize')) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($mode === 'rotate' && $degree == 0) {
            return array('losslessRotate' => ($this->procExec(ELFINDER_EXIFTRAN_PATH . ' -h') === 0 || $this->procExec(ELFINDER_JPEGTRAN_PATH . ' -version') === 0));
        }

        if (($file = $this->file($hash)) == false) {
            return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$file['write'] || !$file['read']) {
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        $path = $this->decode($hash);

        $work_path = $this->getWorkFile($this->encoding ? $this->convEncIn($path, true) : $path);

        if (!$work_path || !is_writable($work_path)) {
            if ($work_path && $path !== $work_path && is_file($work_path)) {
                unlink($work_path);
            }
            return $this->setError(elFinder::ERROR_PERM_DENIED);
        }

        if ($this->imgLib !== 'imagick' && $this->imgLib !== 'convert') {
            if (elFinder::isAnimationGif($work_path)) {
                return $this->setError(elFinder::ERROR_UNSUPPORT_TYPE);
            }
        }

        if (elFinder::isAnimationPng($work_path)) {
            return $this->setError(elFinder::ERROR_UNSUPPORT_TYPE);
        }

        switch ($mode) {

            case 'propresize':
                $result = $this->imgResize($work_path, $width, $height, true, true, null, $jpgQuality);
                break;

            case 'crop':
                $result = $this->imgCrop($work_path, $width, $height, $x, $y, null, $jpgQuality);
                break;

            case 'fitsquare':
                $result = $this->imgSquareFit($work_path, $width, $height, 'center', 'middle', ($bg ? $bg : $this->options['tmbBgColor']), null, $jpgQuality);
                break;

            case 'rotate':
                $result = $this->imgRotate($work_path, $degree, ($bg ? $bg : $this->options['bgColorFb']), null, $jpgQuality);
                break;

            default:
                $result = $this->imgResize($work_path, $width, $height, false, true, null, $jpgQuality);
                break;
        }

        $ret = false;
        if ($result) {
            $this->rmTmb($file);
            $this->clearstatcache();
            $fstat = stat($work_path);
            $imgsize = getimagesize($work_path);
            if ($path !== $work_path) {
                $file['size'] = $fstat['size'];
                $file['ts'] = $fstat['mtime'];
                if ($imgsize) {
                    $file['width'] = $imgsize[0];
                    $file['height'] = $imgsize[1];
                }
                if ($fp = fopen($work_path, 'rb')) {
                    $ret = $this->saveCE($fp, $this->dirnameCE($path), $this->basenameCE($path), $file);
                    fclose($fp);
                }
            } else {
                $ret = true;
            }
            if ($ret) {
                $this->clearcache();
                $ret = $this->stat($path);
                if ($imgsize) {
                    $ret['width'] = $imgsize[0];
                    $ret['height'] = $imgsize[1];
                }
            }
        }
        if ($path !== $work_path) {
            is_file($work_path) && unlink($work_path);
        }

        return $ret;
    }

    /**
     * Remove file/dir
     *
     * @param  string $hash file hash
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function rm($hash)
    {
        return $this->commandDisabled('rm')
            ? $this->setError(elFinder::ERROR_PERM_DENIED)
            : $this->remove($this->decode($hash));
    }

    /**
     * Search files
     *
     * @param  string $q search string
     * @param  array  $mimes
     * @param null    $hash
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    public function search($q, $mimes, $hash = null)
    {
        $res = array();
        $matchMethod = null;
        $args = func_get_args();
        if (!empty($args[3])) {
            $matchMethod = 'searchMatch' . $args[3];
            if (!is_callable(array($this, $matchMethod))) {
                return array();
            }
        }

        $dir = null;
        if ($hash) {
            $dir = $this->decode($hash);
            $stat = $this->stat($dir);
            if (!$stat || $stat['mime'] !== 'directory' || !$stat['read']) {
                $q = '';
            }
        }
        if ($mimes && $this->onlyMimes) {
            $mimes = array_intersect($mimes, $this->onlyMimes);
            if (!$mimes) {
                $q = '';
            }
        }
        $this->searchStart = time();

        $qs = preg_split('/"([^"]+)"| +/', $q, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
        $query = $excludes = array();
        foreach ($qs as $_q) {
            $_q = trim($_q);
            if ($_q !== '') {
                if ($_q[0] === '-') {
                    if (isset($_q[1])) {
                        $excludes[] = substr($_q, 1);
                    }
                } else {
                    $query[] = $_q;
                }
            }
        }
        if (!$query) {
            $q = '';
        } else {
            $q = join(' ', $query);
            $this->doSearchCurrentQuery = array(
                'q' => $q,
                'excludes' => $excludes,
                'matchMethod' => $matchMethod
            );
        }

        if ($q === '' || $this->commandDisabled('search')) {
            return $res;
        }

        // valided regex $this->options['searchExDirReg']
        if ($this->options['searchExDirReg']) {
            if (false === preg_match($this->options['searchExDirReg'], '')) {
                $this->options['searchExDirReg'] = '';
            }
        }

        // check the leaf root too
        if (!$mimes && (is_null($dir) || $dir == $this->root)) {
            $rootStat = $this->stat($this->root);
            if (!empty($rootStat['phash'])) {
                if ($this->stripos($rootStat['name'], $q) !== false) {
                    $res = array($rootStat);
                }
            }
        }

        return array_merge($res, $this->doSearch(is_null($dir) ? $this->root : $dir, $q, $mimes));
    }

    /**
     * Return image dimensions
     *
     * @param  string $hash file hash
     *
     * @return array|string
     * @author Dmitry (dio) Levashov
     **/
    public function dimensions($hash)
    {
        if (($file = $this->file($hash)) == false) {
            return false;
        }
        // Throw additional parameters for some drivers
        if (func_num_args() > 1) {
            $args = func_get_arg(1);
        } else {
            $args = array();
        }
        return $this->convEncOut($this->_dimensions($this->convEncIn($this->decode($hash)), $file['mime'], $args));
    }

    /**
     * Return has subdirs
     *
     * @param  string $hash file hash
     *
     * @return bool
     * @author Naoki Sawada
     **/
    public function subdirs($hash)
    {
        return (bool)$this->subdirsCE($this->decode($hash));
    }

    /**
     * Return content URL (for netmout volume driver)
     * If file.url == 1 requests from JavaScript client with XHR
     *
     * @param string $hash    file hash
     * @param array  $options options array
     *
     * @return boolean|string
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = array())
    {
        if (($file = $this->file($hash)) === false) {
            return false;
        }
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            if (is_callable($this->options['onetimeUrl'])) {
                return call_user_func_array($this->options['onetimeUrl'], array($file, $options, $this));
            } else {
                $ret = false;
                if ($tmpdir = elFinder::getStaticVar('commonTempPath')) {
                    if ($source = $this->open($hash)) {
                        if ($_dat = tempnam($tmpdir, 'ELF')) {
                            $token = md5($_dat . session_id());
                            $dat = $tmpdir . DIRECTORY_SEPARATOR . 'ELF' . $token;
                            if (rename($_dat, $dat)) {
                                $info = stream_get_meta_data($source);
                                if (!empty($info['uri'])) {
                                    $tmp = $info['uri'];
                                } else {
                                    $tmp = tempnam($tmpdir, 'ELF');
                                    if ($dest = fopen($tmp, 'wb')) {
                                        if (!stream_copy_to_stream($source, $dest)) {
                                            $tmp = false;
                                        }
                                        fclose($dest);
                                    }
                                }
                                $this->close($source, $hash);
                                if ($tmp) {
                                    $info = array(
                                        'file' => base64_encode($tmp),
                                        'name' => $file['name'],
                                        'mime' => $file['mime'],
                                        'ts' => $file['ts']
                                    );
                                    if (file_put_contents($dat, json_encode($info))) {
                                        $conUrl = elFinder::getConnectorUrl();
                                        $ret = $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=file&onetime=1&target=' . $token;

                                    }
                                }
                                if (!$ret) {
                                    unlink($dat);
                                }
                            } else {
                                unlink($_dat);
                            }
                        }
                    }
                }
                return $ret;
            }
        }
        if (empty($file['url']) && $this->URL) {
            $path = str_replace($this->separator, '/', substr($this->decode($hash), strlen(rtrim($this->root, '/' . $this->separator)) + 1));
            if ($this->encoding) {
                $path = $this->convEncIn($path, true);
            }
            $path = str_replace('%2F', '/', rawurlencode($path));
            return $this->URL . $path;
        } else {
            $ret = false;
            if (!empty($file['url']) && $file['url'] != 1) {
                return $file['url'];
            } else if (!empty($options['temporary']) && ($tempInfo = $this->getTempLinkInfo('temp_' . md5($hash . session_id())))) {
                if (is_readable($tempInfo['path'])) {
                    touch($tempInfo['path']);
                    $ret = $tempInfo['url'] . '?' . rawurlencode($file['name']);
                } else if ($source = $this->open($hash)) {
                    if ($dest = fopen($tempInfo['path'], 'wb')) {
                        if (stream_copy_to_stream($source, $dest)) {
                            $ret = $tempInfo['url'] . '?' . rawurlencode($file['name']);
                        }
                        fclose($dest);
                    }
                    $this->close($source, $hash);
                }
            }
            return $ret;
        }
    }

    /**
     * Get temporary contents link infomation
     *
     * @param string $name
     *
     * @return boolean|array
     * @author Naoki Sawada
     */
    public function getTempLinkInfo($name = null)
    {
        if ($this->tmpLinkPath) {
            if (!$name) {
                $name = 'temp_' . md5($_SERVER['REMOTE_ADDR'] . (string)microtime(true));
            } else if (substr($name, 0, 5) !== 'temp_') {
                $name = 'temp_' . $name;
            }
            register_shutdown_function(array('elFinder', 'GlobGC'), $this->tmpLinkPath . DIRECTORY_SEPARATOR . 'temp_*', elFinder::$tmpLinkLifeTime);
            return array(
                'path' => $path = $this->tmpLinkPath . DIRECTORY_SEPARATOR . $name,
                'url' => $this->tmpLinkUrl . '/' . rawurlencode($name)
            );
        }
        return false;
    }

    /**
     * Get URL of substitute image by request args `substitute` or 4th argument $maxSize
     *
     * @param string   $target  Target hash
     * @param array    $srcSize Size info array [width, height]
     * @param resource $srcfp   Source file file pointer
     * @param integer  $maxSize Maximum pixel of substitute image
     *
     * @return boolean
     * @throws ImagickException
     * @throws elFinderAbortException
     */
    public function getSubstituteImgLink($target, $srcSize, $srcfp = null, $maxSize = null)
    {
        $url = false;
        $file = $this->file($target);
        $force = !in_array($file['mime'], array('image/jpeg', 'image/png', 'image/gif'));
        if (!$maxSize) {
            $args = elFinder::$currentArgs;
            if (!empty($args['substitute'])) {
                $maxSize = $args['substitute'];
            }
        }
        if ($maxSize && $srcSize[0] && $srcSize[1]) {
            if ($this->getOption('substituteImg')) {
                $maxSize = intval($maxSize);
                $zoom = min(($maxSize / $srcSize[0]), ($maxSize / $srcSize[1]));
                if ($force || $zoom < 1) {
                    $width = round($srcSize[0] * $zoom);
                    $height = round($srcSize[1] * $zoom);
                    $jpgQuality = 50;
                    $preserveExif = false;
                    $unenlarge = true;
                    $checkAnimated = true;
                    $destformat = $file['mime'] === 'image/jpeg'? null : 'png';
                    if (!$srcfp) {
                        elFinder::checkAborted();
                        $srcfp = $this->open($target);
                    }
                    if ($srcfp && ($tempLink = $this->getTempLinkInfo())) {
                        elFinder::checkAborted();
                        $dest = fopen($tempLink['path'], 'wb');
                        if ($dest && stream_copy_to_stream($srcfp, $dest)) {
                            fclose($dest);
                            if ($this->imageUtil('resize', $tempLink['path'], compact('width', 'height', 'jpgQuality', 'preserveExif', 'unenlarge', 'checkAnimated', 'destformat'))) {
                                $url = $tempLink['url'];
                                // set expire to 1 min left
                                touch($tempLink['path'], time() - elFinder::$tmpLinkLifeTime + 60);
                            } else {
                                unlink($tempLink['path']);
                            }
                        }
                        $this->close($srcfp, $target);
                    }
                }
            }
        }

        return $url;
    }

    /**
     * Return temp path
     *
     * @return string
     * @author Naoki Sawada
     */
    public function getTempPath()
    {
        $tempPath = null;
        if (isset($this->tmpPath) && $this->tmpPath && is_writable($this->tmpPath)) {
            $tempPath = $this->tmpPath;
        } else if (isset($this->tmp) && $this->tmp && is_writable($this->tmp)) {
            $tempPath = $this->tmp;
        } else if (elFinder::getStaticVar('commonTempPath') && is_writable(elFinder::getStaticVar('commonTempPath'))) {
            $tempPath = elFinder::getStaticVar('commonTempPath');
        } else if (function_exists('sys_get_temp_dir')) {
            $tempPath = sys_get_temp_dir();
        } else if ($this->tmbPathWritable) {
            $tempPath = $this->tmbPath;
        }
        if ($tempPath && DIRECTORY_SEPARATOR !== '/') {
            $tempPath = str_replace('/', DIRECTORY_SEPARATOR, $tempPath);
        }
		if(opendir($tempPath)){
			return $tempPath;
		} else if (defined( 'WP_TEMP_DIR' )) {
			return get_temp_dir();
		} else {
			$custom_temp_path = WP_CONTENT_DIR.'/temp';
			if (!is_dir($custom_temp_path)) {
				mkdir($custom_temp_path, 0777, true);
			}
			return $custom_temp_path;
		}
    }

    /**
     * (Make &) Get upload taget dirctory hash
     *
     * @param string $baseTargetHash
     * @param string $path
     * @param array  $result
     *
     * @return boolean|string
     * @author Naoki Sawada
     */
    public function getUploadTaget($baseTargetHash, $path, & $result)
    {
        $base = $this->decode($baseTargetHash);
        $targetHash = $baseTargetHash;
        $path = ltrim($path, $this->separator);
        $dirs = explode($this->separator, $path);
        array_pop($dirs);
        foreach ($dirs as $dir) {
            $targetPath = $this->joinPathCE($base, $dir);
            if (!$_realpath = $this->realpath($this->encode($targetPath))) {
                if ($stat = $this->mkdir($targetHash, $dir)) {
                    $result['added'][] = $stat;
                    $targetHash = $stat['hash'];
                    $base = $this->decode($targetHash);
                } else {
                    return false;
                }
            } else {
                $targetHash = $this->encode($_realpath);
                if ($this->dir($targetHash)) {
                    $base = $this->decode($targetHash);
                } else {
                    return false;
                }
            }
        }
        return $targetHash;
    }

    /**
     * Return this uploadMaxSize value
     *
     * @return integer
     * @author Naoki Sawada
     */
    public function getUploadMaxSize()
    {
        return $this->uploadMaxSize;
    }

    public function setUploadOverwrite($var)
    {
        $this->uploadOverwrite = (bool)$var;
    }

    /**
     * Image file utility
     *
     * @param string $mode    'resize', 'rotate', 'propresize', 'crop', 'fitsquare'
     * @param string $src     Image file local path
     * @param array  $options excute options
     *
     * @return bool
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    public function imageUtil($mode, $src, $options = array())
    {
        if (!isset($options['jpgQuality'])) {
            $options['jpgQuality'] = intval($this->options['jpgQuality']);
        }
        if (!isset($options['bgcolor'])) {
            $options['bgcolor'] = '#ffffff';
        }
        if (!isset($options['bgColorFb'])) {
            $options['bgColorFb'] = $this->options['bgColorFb'];
        }
        $destformat = !empty($options['destformat'])? $options['destformat'] : null;

        // check 'width' ,'height'
        if (in_array($mode, array('resize', 'propresize', 'crop', 'fitsquare'))) {
            if (empty($options['width']) || empty($options['height'])) {
                return false;
            }
        }

        if (!empty($options['checkAnimated'])) {
            if ($this->imgLib !== 'imagick' && $this->imgLib !== 'convert') {
                if (elFinder::isAnimationGif($src)) {
                    return false;
                }
            }
            if (elFinder::isAnimationPng($src)) {
                return false;
            }
        }

        switch ($mode) {
            case 'rotate':
                if (empty($options['degree'])) {
                    return true;
                }
                return (bool)$this->imgRotate($src, $options['degree'], $options['bgColorFb'], $destformat, $options['jpgQuality']);

            case 'resize':
                return (bool)$this->imgResize($src, $options['width'], $options['height'], false, true, $destformat, $options['jpgQuality'], $options);

            case 'propresize':
                return (bool)$this->imgResize($src, $options['width'], $options['height'], true, true, $destformat, $options['jpgQuality'], $options);

            case 'crop':
                if (isset($options['x']) && isset($options['y'])) {
                    return (bool)$this->imgCrop($src, $options['width'], $options['height'], $options['x'], $options['y'], $destformat, $options['jpgQuality']);
                }
                break;

            case 'fitsquare':
                return (bool)$this->imgSquareFit($src, $options['width'], $options['height'], 'center', 'middle', $options['bgcolor'], $destformat, $options['jpgQuality']);

        }
        return false;
    }

    /**
     * Convert Video To Image by ffmpeg
     *
     * @param  string $file video source file path
     * @param  array  $stat file stat array
     * @param  object $self volume driver object
     * @param  int    $ss   start seconds
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    public function ffmpegToImg($file, $stat, $self, $ss = null)
    {
        $name = basename($file);
        $path = dirname($file);
        $tmp = $path . DIRECTORY_SEPARATOR . md5($name);
        // register auto delete on shutdown
        $GLOBALS['elFinderTempFiles'][$tmp] = true;
        if (rename($file, $tmp)) {
            if ($ss === null) {
                // specific start time by file name (xxx^[sec].[extention] - video^3.mp4)
                if (preg_match('/\^(\d+(?:\.\d+)?)\.[^.]+$/', $stat['name'], $_m)) {
                    $ss = $_m[1];
                } else {
                    $ss = $this->options['tmbVideoConvSec'];
                }
            }
            $cmd = sprintf(ELFINDER_FFMPEG_PATH . ' -i %s -ss 00:00:%.3f -vframes 1 -f image2 -- %s', escapeshellarg($tmp), $ss, escapeshellarg($file));
            $r = ($this->procExec($cmd) === 0);
            clearstatcache();
            if ($r && $ss > 0 && !file_exists($file)) {
                // Retry by half of $ss
                $ss = max(intval($ss / 2), 0);
                rename($tmp, $file);
                $r = $this->ffmpegToImg($file, $stat, $self, $ss);
            } else {
                unlink($tmp);
            }
            return $r;
        }
        return false;
    }

    /**
     * Creates a temporary file and return file pointer
     *
     * @return resource|boolean
     */
    public function tmpfile()
    {
        if ($tmp = $this->getTempFile()) {
            return fopen($tmp, 'wb');
        }
        return false;
    }

    /**
     * Save error message
     *
     * @param  array  error
     *
     * @return boolean false
     * @author Naoki Sawada
     **/
    protected function setError()
    {
        $this->error = array();
        $this->addError(func_get_args());
        return false;
    }

    /**
     * Add error message
     *
     * @param  array  error
     *
     * @return false
     * @author Dmitry(dio) Levashov
     **/
    protected function addError()
    {
        foreach (func_get_args() as $err) {
            if (is_array($err)) {
                foreach($err as $er) {
                    $this->addError($er);
                }
            } else {
                $this->error[] = (string)$err;
            }
        }
        return false;
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /***************** server encoding support *******************/

    /**
     * Return parent directory path (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function dirnameCE($path)
    {
        $dirname = (!$this->encoding) ? $this->_dirname($path) : $this->convEncOut($this->_dirname($this->convEncIn($path)));
        // check to infinite loop prevention
        return ($dirname != $path) ? $dirname : '';
    }

    /**
     * Return file name (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function basenameCE($path)
    {
        return (!$this->encoding) ? $this->_basename($path) : $this->convEncOut($this->_basename($this->convEncIn($path)));
    }

    /**
     * Join dir name and file name and return full path. (with convert encoding)
     * Some drivers (db) use int as path - so we give to concat path to driver itself
     *
     * @param  string $dir  dir path
     * @param  string $name file name
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function joinPathCE($dir, $name)
    {
        return (!$this->encoding) ? $this->_joinPath($dir, $name) : $this->convEncOut($this->_joinPath($this->convEncIn($dir), $this->convEncIn($name)));
    }

    /**
     * Return normalized path (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function normpathCE($path)
    {
        return (!$this->encoding) ? $this->_normpath($path) : $this->convEncOut($this->_normpath($this->convEncIn($path)));
    }

    /**
     * Return file path related to root dir (with convert encoding)
     *
     * @param  string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function relpathCE($path)
    {
        return (!$this->encoding) ? $this->_relpath($path) : $this->convEncOut($this->_relpath($this->convEncIn($path)));
    }

    /**
     * Convert path related to root dir into real path (with convert encoding)
     *
     * @param  string $path rel file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function abspathCE($path)
    {
        return (!$this->encoding) ? $this->_abspath($path) : $this->convEncOut($this->_abspath($this->convEncIn($path)));
    }

    /**
     * Return true if $path is children of $parent (with convert encoding)
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function inpathCE($path, $parent)
    {
        return (!$this->encoding) ? $this->_inpath($path, $parent) : $this->convEncOut($this->_inpath($this->convEncIn($path), $this->convEncIn($parent)));
    }

    /**
     * Open file and return file pointer (with convert encoding)
     *
     * @param  string $path file path
     * @param string  $mode
     *
     * @return false|resource
     * @internal param bool $write open file for writing
     * @author   Naoki Sawada
     */
    protected function fopenCE($path, $mode = 'rb')
    {
        // check extra option for network stream pointer
        if (func_num_args() > 2) {
            $opts = func_get_arg(2);
        } else {
            $opts = array();
        }
        return (!$this->encoding) ? $this->_fopen($path, $mode, $opts) : $this->convEncOut($this->_fopen($this->convEncIn($path), $mode, $opts));
    }

    /**
     * Close opened file (with convert encoding)
     *
     * @param  resource $fp   file pointer
     * @param  string   $path file path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function fcloseCE($fp, $path = '')
    {
        return (!$this->encoding) ? $this->_fclose($fp, $path) : $this->convEncOut($this->_fclose($fp, $this->convEncIn($path)));
    }

    /**
     * Create new file and write into it from file pointer. (with convert encoding)
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Naoki Sawada
     **/
    protected function saveCE($fp, $dir, $name, $stat)
    {
        $res = (!$this->encoding) ? $this->_save($fp, $dir, $name, $stat) : $this->convEncOut($this->_save($fp, $this->convEncIn($dir), $this->convEncIn($name), $this->convEncIn($stat)));
        if ($res !== false) {
            $this->clearstatcache();
        }
        return $res;
    }

    /**
     * Return true if path is dir and has at least one childs directory (with convert encoding)
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function subdirsCE($path)
    {
        if ($this->sessionCaching['subdirs']) {
            if (isset($this->sessionCache['subdirs'][$path]) && !$this->isMyReload()) {
                return $this->sessionCache['subdirs'][$path];
            }
        }
        $hasdir = (bool)((!$this->encoding) ? $this->_subdirs($path) : $this->convEncOut($this->_subdirs($this->convEncIn($path))));
        $this->updateSubdirsCache($path, $hasdir);
        return $hasdir;
    }

    /**
     * Return files list in directory (with convert encoding)
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function scandirCE($path)
    {
        return (!$this->encoding) ? $this->_scandir($path) : $this->convEncOut($this->_scandir($this->convEncIn($path)));
    }

    /**
     * Create symlink (with convert encoding)
     *
     * @param  string $source    file to link to
     * @param  string $targetDir folder to create link in
     * @param  string $name      symlink name
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function symlinkCE($source, $targetDir, $name)
    {
        return (!$this->encoding) ? $this->_symlink($source, $targetDir, $name) : $this->convEncOut($this->_symlink($this->convEncIn($source), $this->convEncIn($targetDir), $this->convEncIn($name)));
    }

    /***************** paths *******************/

    /**
     * Encode path into hash
     *
     * @param  string  file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     * @author Troex Nevelin
     **/
    protected function encode($path)
    {
        if ($path !== '') {

            // cut ROOT from $path for security reason, even if hacker decodes the path he will not know the root
            $p = $this->relpathCE($path);
            // if reqesting root dir $path will be empty, then assign '/' as we cannot leave it blank for crypt
            if ($p === '') {
                $p = $this->separator;
            }
            // change separator
            if ($this->separatorForHash) {
                $p = str_replace($this->separator, $this->separatorForHash, $p);
            }
            // TODO crypt path and return hash
            $hash = $this->crypt($p);
            // hash is used as id in HTML that means it must contain vaild chars
            // make base64 html safe and append prefix in begining
            $hash = strtr(base64_encode($hash), '+/=', '-_.');
            // remove dots '.' at the end, before it was '=' in base64
            $hash = rtrim($hash, '.');
            // append volume id to make hash unique
            return $this->id . $hash;
        }
        //TODO: Add return statement here
    }

    /**
     * Decode path from hash
     *
     * @param  string  file hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     * @author Troex Nevelin
     **/
    protected function decode($hash)
    {
        if (strpos($hash, $this->id) === 0) {
            // cut volume id after it was prepended in encode
            $h = substr($hash, strlen($this->id));
            // replace HTML safe base64 to normal
            $h = base64_decode(strtr($h, '-_.', '+/='));
            // TODO uncrypt hash and return path
            $path = $this->uncrypt($h);
            // change separator
            if ($this->separatorForHash) {
                $path = str_replace($this->separatorForHash, $this->separator, $path);
            }
            // append ROOT to path after it was cut in encode
            return $this->abspathCE($path);//$this->root.($path === $this->separator ? '' : $this->separator.$path);
        }
        return '';
    }

    /**
     * Return crypted path
     * Not implemented
     *
     * @param  string  path
     *
     * @return mixed
     * @author Dmitry (dio) Levashov
     **/
    protected function crypt($path)
    {
        return $path;
    }

    /**
     * Return uncrypted path
     * Not implemented
     *
     * @param  mixed  hash
     *
     * @return mixed
     * @author Dmitry (dio) Levashov
     **/
    protected function uncrypt($hash)
    {
        return $hash;
    }

    /**
     * Validate file name based on $this->options['acceptedName'] regexp or function
     *
     * @param  string $name file name
     * @param  bool   $isDir
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function nameAccepted($name, $isDir = false)
    {
        if (json_encode($name) === false) {
            return false;
        }
        $nameValidator = $isDir ? $this->dirnameValidator : $this->nameValidator;
        if ($nameValidator) {
            if (is_callable($nameValidator)) {
                $res = call_user_func($nameValidator, $name);
                return $res;
            }
            if (preg_match($nameValidator, '') !== false) {
                return preg_match($nameValidator, $name);
            }
        }
        return true;
    }

    /**
     * Return session rootstat cache key
     *
     * @return string
     */
    protected function getRootstatCachekey()
    {
        return md5($this->root . (isset($this->options['alias']) ? $this->options['alias'] : ''));
    }

    /**
     * Return new unique name based on file name and suffix
     *
     * @param         $dir
     * @param         $name
     * @param  string $suffix suffix append to name
     * @param bool    $checkNum
     * @param int     $start
     *
     * @return string
     * @internal param string $path file path
     * @author   Dmitry (dio) Levashov
     */
    public function uniqueName($dir, $name, $suffix = ' copy', $checkNum = true, $start = 1)
    {
        static $lasts = null;

        if ($lasts === null) {
            $lasts = array();
        }

        $ext = '';

        $splits = elFinder::splitFileExtention($name);
        if ($splits[1]) {
            $ext = '.' . $splits[1];
            $name = $splits[0];
        }

        if ($checkNum && preg_match('/(' . preg_quote($suffix, '/') . ')(\d*)$/i', $name, $m)) {
            $i = $m[2];
            $name = substr($name, 0, strlen($name) - strlen($m[2]));
        } else {
            $i = $start;
            $name .= $suffix;
        }
        $max = (int)$i + 100000;

        if (isset($lasts[$name])) {
            $i = max($i, $lasts[$name]);
        }

        while ($i <= $max) {
            $n = $name . ($i >= 0 ? $i : '') . $ext;
            if (!$this->isNameExists($this->joinPathCE($dir, $n))) {
                $this->clearcache();
                $lasts[$name] = ++$i;
                return $n;
            }
            $i++;
        }
        return $name . md5($dir) . $ext;
    }

    /**
     * Converts character encoding from UTF-8 to server's one
     *
     * @param  mixed  $var           target string or array var
     * @param  bool   $restoreLocale do retore global locale, default is false
     * @param  string $unknown       replaces character for unknown
     *
     * @return mixed
     * @author Naoki Sawada
     */
    public function convEncIn($var = null, $restoreLocale = false, $unknown = '_')
    {
        return (!$this->encoding) ? $var : $this->convEnc($var, 'UTF-8', $this->encoding, $this->options['locale'], $restoreLocale, $unknown);
    }

    /**
     * Converts character encoding from server's one to UTF-8
     *
     * @param  mixed  $var           target string or array var
     * @param  bool   $restoreLocale do retore global locale, default is true
     * @param  string $unknown       replaces character for unknown
     *
     * @return mixed
     * @author Naoki Sawada
     */
    public function convEncOut($var = null, $restoreLocale = true, $unknown = '_')
    {
        return (!$this->encoding) ? $var : $this->convEnc($var, $this->encoding, 'UTF-8', $this->options['locale'], $restoreLocale, $unknown);
    }

    /**
     * Converts character encoding (base function)
     *
     * @param  mixed  $var     target string or array var
     * @param  string $from    from character encoding
     * @param  string $to      to character encoding
     * @param  string $locale  local locale
     * @param         $restoreLocale
     * @param  string $unknown replaces character for unknown
     *
     * @return mixed
     */
    protected function convEnc($var, $from, $to, $locale, $restoreLocale, $unknown = '_')
    {
        if (strtoupper($from) !== strtoupper($to)) {
            if ($locale) {
                setlocale(LC_ALL, $locale);
            }
            if (is_array($var)) {
                $_ret = array();
                foreach ($var as $_k => $_v) {
                    $_ret[$_k] = $this->convEnc($_v, $from, $to, '', false, $unknown = '_');
                }
                $var = $_ret;
            } else {
                $_var = false;
                if (is_string($var)) {
                    $_var = $var;
                    $errlev = error_reporting();
                    error_reporting($errlev ^ E_NOTICE);
                    if (false !== ($_var = iconv($from, $to . '//TRANSLIT', $_var))) {
                        $_var = str_replace('?', $unknown, $_var);
                    }
                    error_reporting($errlev);
                }
                if ($_var !== false) {
                    $var = $_var;
                }
            }
            if ($restoreLocale) {
                setlocale(LC_ALL, elFinder::$locale);
            }
        }
        return $var;
    }

    /**
     * Normalize MIME-Type by options['mimeMap']
     *
     * @param      string $type MIME-Type
     * @param      string $name Filename
     * @param      string $ext  File extention without first dot (optional)
     *
     * @return     string  Normalized MIME-Type
     */
    public function mimeTypeNormalize($type, $name, $ext = '')
    {
        if ($ext === '') {
            $ext = (false === $pos = strrpos($name, '.')) ? '' : substr($name, $pos + 1);
        }
        $_checkKey = strtolower($ext . ':' . $type);
        if ($type === '') {
            $_keylen = strlen($_checkKey);
            foreach ($this->options['mimeMap'] as $_key => $_type) {
                if (substr($_key, 0, $_keylen) === $_checkKey) {
                    $type = $_type;
                    break;
                }
            }
        } else if (isset($this->options['mimeMap'][$_checkKey])) {
            $type = $this->options['mimeMap'][$_checkKey];
        } else {
            $_checkKey = strtolower($ext . ':*');
            if (isset($this->options['mimeMap'][$_checkKey])) {
                $type = $this->options['mimeMap'][$_checkKey];
            } else {
                $_checkKey = strtolower('*:' . $type);
                if (isset($this->options['mimeMap'][$_checkKey])) {
                    $type = $this->options['mimeMap'][$_checkKey];
                }
            }
        }
        return $type;
    }

    /*********************** util mainly for inheritance class *********************/

    /**
     * Get temporary filename. Tempfile will be removed when after script execution finishes or exit() is called.
     * When needing the unique file to a path, give $path to parameter.
     *
     * @param  string $path for get unique file to a path
     *
     * @return string|false
     * @author Naoki Sawada
     */
    protected function getTempFile($path = '')
    {
        static $cache = array();

        $key = '';
        if ($path !== '') {
            $key = $this->id . '#' . $path;
            if (isset($cache[$key])) {
                return $cache[$key];
            }
        }

        if ($tmpdir = $this->getTempPath()) {
            $name = tempnam($tmpdir, 'ELF');
            if ($key) {
                $cache[$key] = $name;
            }
            // register auto delete on shutdown
            $GLOBALS['elFinderTempFiles'][$name] = true;
            return $name;
        }

        return false;
    }

    /**
     * File path of local server side work file path
     *
     * @param  string $path path need convert encoding to server encoding
     *
     * @return string
     * @author Naoki Sawada
     */
    protected function getWorkFile($path)
    {
        if ($wfp = $this->tmpfile()) {
            if ($fp = $this->_fopen($path)) {
                while (!feof($fp)) {
                    fwrite($wfp, fread($fp, 8192));
                }
                $info = stream_get_meta_data($wfp);
                fclose($wfp);
                if ($info && !empty($info['uri'])) {
                    return $info['uri'];
                }
            }
        }
        return false;
    }

    /**
     * Get image size array with `dimensions`
     *
     * @param string $path path need convert encoding to server encoding
     * @param string $mime file mime type
     *
     * @return array|false
     * @throws ImagickException
     * @throws elFinderAbortException
     */
    public function getImageSize($path, $mime = '')
    {
        $size = false;
        if ($mime === '' || strtolower(substr($mime, 0, 5)) === 'image') {
            if ($work = $this->getWorkFile($path)) {
                if ($size = getimagesize($work)) {
                    $size['dimensions'] = $size[0] . 'x' . $size[1];
                    $srcfp = fopen($work, 'rb');
                    $cArgs = elFinder::$currentArgs;
                    if (!empty($cArgs['target']) && $subImgLink = $this->getSubstituteImgLink($cArgs['target'], $size, $srcfp)) {
                        $size['url'] = $subImgLink;
                    }
                }
            }
            is_file($work) && unlink($work);
        }
        return $size;
    }

    /**
     * Delete dirctory trees
     *
     * @param string $localpath path need convert encoding to server encoding
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function delTree($localpath)
    {
        foreach ($this->_scandir($localpath) as $p) {
            elFinder::checkAborted();
            $stat = $this->stat($this->convEncOut($p));
            $this->convEncIn();
            ($stat['mime'] === 'directory') ? $this->delTree($p) : $this->_unlink($p);
        }
        $res = $this->_rmdir($localpath);
        $res && $this->clearstatcache();
        return $res;
    }

    /**
     * Copy items to a new temporary directory on the local server
     *
     * @param  array  $hashes  target hashes
     * @param  string $dir     destination directory (for recurcive)
     * @param  string $canLink it can use link() (for recurcive)
     *
     * @return string|false    saved path name
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function getItemsInHand($hashes, $dir = null, $canLink = null)
    {
        static $banChrs = null;
        static $totalSize = 0;

        if  (is_null($banChrs)) {
            $banChrs = DIRECTORY_SEPARATOR !== '/'? array('\\', '/', ':', '*', '?', '"', '<', '>', '|') : array('\\', '/');
        }

        if (is_null($dir)) {
            $totalSize = 0;
            if (!$tmpDir = $this->getTempPath()) {
                return false;
            }
            $dir = tempnam($tmpDir, 'elf');
            if (!unlink($dir) || !mkdir($dir, 0700, true)) {
                return false;
            }
            register_shutdown_function(array($this, 'rmdirRecursive'), $dir);
        }
        if (is_null($canLink)) {
            $canLink = ($this instanceof elFinderVolumeLocalFileSystem);
        }
        elFinder::checkAborted();
        $res = true;
        $files = array();
        foreach ($hashes as $hash) {
            if (($file = $this->file($hash)) == false) {
                continue;
            }
            if (!$file['read']) {
                continue;
            }

            $name = $file['name'];
            // remove ctrl characters
            $name = preg_replace('/[[:cntrl:]]+/', '', $name);
            // replace ban characters
            $name = str_replace($banChrs, '_', $name);

            // for call from search results
            if (isset($files[$name])) {
                $name = preg_replace('/^(.*?)(\..*)?$/', '$1_' . $files[$name]++ . '$2', $name);
            } else {
                $files[$name] = 1;
            }
            $target = $dir . DIRECTORY_SEPARATOR . $name;

            if ($file['mime'] === 'directory') {
                $chashes = array();
                $_files = $this->scandir($hash);
                foreach ($_files as $_file) {
                    if ($file['read']) {
                        $chashes[] = $_file['hash'];
                    }
                }
                if (($res = mkdir($target, 0700, true)) && $chashes) {
                    $res = $this->getItemsInHand($chashes, $target, $canLink);
                }
                if (!$res) {
                    break;
                }
                !empty($file['ts']) && touch($target, $file['ts']);
            } else {
                $path = $this->decode($hash);
                if (!$canLink || !($canLink = $this->localFileSystemSymlink($path, $target))) {
                    if (file_exists($target)) {
                        unlink($target);
                    }
                    if ($fp = $this->fopenCE($path)) {
                        if ($tfp = fopen($target, 'wb')) {
                            $totalSize += stream_copy_to_stream($fp, $tfp);
                            fclose($tfp);
                        }
                        !empty($file['ts']) && touch($target, $file['ts']);
                        $this->fcloseCE($fp, $path);
                    }
                } else {
                    $totalSize += filesize($path);
                }
                if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $totalSize) {
                    $res = $this->setError(elFinder::ERROR_ARC_MAXSIZE);
                }
            }
        }
        return $res ? $dir : false;
    }

    /*********************** file stat *********************/

    /**
     * Check file attribute
     *
     * @param  string $path  file path
     * @param  string $name  attribute name (read|write|locked|hidden)
     * @param  bool   $val   attribute value returned by file system
     * @param  bool   $isDir path is directory (true: directory, false: file)
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function attr($path, $name, $val = null, $isDir = null)
    {
        if (!isset($this->defaults[$name])) {
            return false;
        }

        $relpath = $this->relpathCE($path);
        if ($this->separator !== '/') {
            $relpath = str_replace($this->separator, '/', $relpath);
        }
        $relpath = '/' . $relpath;

        $perm = null;

        if ($this->access) {
            $perm = call_user_func($this->access, $name, $path, $this->options['accessControlData'], $this, $isDir, $relpath);
            if ($perm !== null) {
                return !!$perm;
            }
        }

        foreach ($this->attributes as $attrs) {
            if (isset($attrs[$name]) && isset($attrs['pattern']) && preg_match($attrs['pattern'], $relpath)) {
                $perm = $attrs[$name];
                break;
            }
        }

        return $perm === null ? (is_null($val) ? $this->defaults[$name] : $val) : !!$perm;
    }

    /**
     * Return true if file with given name can be created in given folder.
     *
     * @param string $dir  parent dir path
     * @param string $name new file name
     * @param null   $isDir
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     */
    protected function allowCreate($dir, $name, $isDir = null)
    {
        return $this->attr($this->joinPathCE($dir, $name), 'write', true, $isDir);
    }

    /**
     * Return true if file MIME type can save with check uploadOrder config.
     *
     * @param string $mime
     *
     * @return boolean
     */
    protected function allowPutMime($mime)
    {
        // logic based on http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order
        $allow = $this->mimeAccepted($mime, $this->uploadAllow, null);
        $deny = $this->mimeAccepted($mime, $this->uploadDeny, null);
        if (strtolower($this->uploadOrder[0]) == 'allow') { // array('allow', 'deny'), default is to 'deny'
            $res = false; // default is deny
            if (!$deny && ($allow === true)) { // match only allow
                $res = true;
            }// else (both match | no match | match only deny) { deny }
        } else { // array('deny', 'allow'), default is to 'allow' - this is the default rule
            $res = true; // default is allow
            if (($deny === true) && !$allow) { // match only deny
                $res = false;
            } // else (both match | no match | match only allow) { allow }
        }
        return $res;
    }

    /**
     * Return fileinfo
     *
     * @param  string $path file cache
     *
     * @return array|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function stat($path)
    {
        if ($path === false || is_null($path)) {
            return false;
        }
        $is_root = ($path == $this->root);
        if ($is_root) {
            $rootKey = $this->getRootstatCachekey();
            if ($this->sessionCaching['rootstat'] && !isset($this->sessionCache['rootstat'])) {
                $this->sessionCache['rootstat'] = array();
            }
            if (!isset($this->cache[$path]) && !$this->isMyReload()) {
                // need $path as key for netmount/netunmount
                if ($this->sessionCaching['rootstat'] && isset($this->sessionCache['rootstat'][$rootKey])) {
                    if ($ret = $this->sessionCache['rootstat'][$rootKey]) {
                        if ($this->options['rootRev'] === $ret['rootRev']) {
                            if (isset($this->options['phash'])) {
                                $ret['isroot'] = 1;
                                $ret['phash'] = $this->options['phash'];
                            }
                            return $ret;
                        }
                    }
                }
            }
        }
        $rootSessCache = false;
        if (isset($this->cache[$path])) {
            $ret = $this->cache[$path];
        } else {
            if ($is_root && !empty($this->options['rapidRootStat']) && is_array($this->options['rapidRootStat']) && !$this->needOnline) {
                $ret = $this->updateCache($path, $this->options['rapidRootStat'], true);
            } else {
                $ret = $this->updateCache($path, $this->convEncOut($this->_stat($this->convEncIn($path))), true);
                if ($is_root && !empty($rootKey) && $this->sessionCaching['rootstat']) {
                    $rootSessCache = true;
                }
            }
        } 
        if ($is_root) {
            if ($ret) {
                $this->rootModified = false;
                if ($rootSessCache) {
                    $this->sessionCache['rootstat'][$rootKey] = $ret;
                }
                if (isset($this->options['phash'])) {
                    $ret['isroot'] = 1;
                    $ret['phash'] = $this->options['phash'];
                }
            } else if (!empty($rootKey) && $this->sessionCaching['rootstat']) {
                unset($this->sessionCache['rootstat'][$rootKey]);
            }
        }
        return $ret;
    }

    /**
     * Get root stat extra key values
     *
     * @return array stat extras
     * @author Naoki Sawada
     */
    protected function getRootStatExtra()
    {
        $stat = array();
        if ($this->rootName) {
            $stat['name'] = $this->rootName;
        }
        $stat['rootRev'] = $this->options['rootRev'];
        $stat['options'] = $this->options(null);
        return $stat;
    }

    /**
     * Return fileinfo based on filename
     * For item ID based path file system
     * Please override if needed on each drivers
     *
     * @param  string $path file cache
     *
     * @return array
     */
    protected function isNameExists($path)
    {
        return $this->stat($path);
    }

    /**
     * Put file stat in cache and return it
     *
     * @param  string $path file path
     * @param  array  $stat file stat
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function updateCache($path, $stat)
    {
        if (empty($stat) || !is_array($stat)) {
            return $this->cache[$path] = array();
        }

        if (func_num_args() > 2) {
            $fromStat = func_get_arg(2);
        } else {
            $fromStat = false;
        }

        $stat['hash'] = $this->encode($path);

        $root = $path == $this->root;
        $parent = '';

        if ($root) {
            $stat = array_merge($stat, $this->getRootStatExtra());
        } else {
            if (!isset($stat['name']) || $stat['name'] === '') {
                $stat['name'] = $this->basenameCE($path);
            }
            if (empty($stat['phash'])) {
                $parent = $this->dirnameCE($path);
                $stat['phash'] = $this->encode($parent);
            } else {
                $parent = $this->decode($stat['phash']);
            }
        }

        // name check
        if (isset($stat['name']) && !$jeName = json_encode($stat['name'])) {
            return $this->cache[$path] = array();
        }
        // fix name if required
        if ($this->options['utf8fix'] && $this->options['utf8patterns'] && $this->options['utf8replace']) {
            $stat['name'] = json_decode(str_replace($this->options['utf8patterns'], $this->options['utf8replace'], $jeName));
        }

        if (!isset($stat['size'])) {
            $stat['size'] = 'unknown';
        }

        $mime = isset($stat['mime']) ? $stat['mime'] : '';
        if ($isDir = ($mime === 'directory')) {
            $stat['volumeid'] = $this->id;
        } else {
            if (empty($stat['mime']) || $stat['size'] == 0) {
                $stat['mime'] = $this->mimetype($stat['name'], true, $stat['size'], $mime);
            } else {
                $stat['mime'] = $this->mimeTypeNormalize($stat['mime'], $stat['name']);
            }
        }

        $stat['read'] = intval($this->attr($path, 'read', isset($stat['read']) ? !!$stat['read'] : null, $isDir));
        $stat['write'] = intval($this->attr($path, 'write', isset($stat['write']) ? !!$stat['write'] : null, $isDir));
        if ($root) {
            $stat['locked'] = 1;
            if ($this->options['type'] !== '') {
                $stat['type'] = $this->options['type'];
            }
        } else {
            // lock when parent directory is not writable
            if (!isset($stat['locked'])) {
                $pstat = $this->stat($parent);
                if (isset($pstat['write']) && !$pstat['write']) {
                    $stat['locked'] = true;
                }
            }
            if ($this->attr($path, 'locked', isset($stat['locked']) ? !!$stat['locked'] : null, $isDir)) {
                $stat['locked'] = 1;
            } else {
                unset($stat['locked']);
            }
        }

        if ($root) {
            unset($stat['hidden']);
        } elseif ($this->attr($path, 'hidden', isset($stat['hidden']) ? !!$stat['hidden'] : null, $isDir)
            || !$this->mimeAccepted($stat['mime'])) {
            $stat['hidden'] = 1;
        } else {
            unset($stat['hidden']);
        }

        if ($stat['read'] && empty($stat['hidden'])) {

            if ($isDir) {
                // caching parent's subdirs
                if ($parent) {
                    $this->updateSubdirsCache($parent, true);
                }
                // for dir - check for subdirs
                if ($this->options['checkSubfolders']) {
                    if (!isset($stat['dirs']) && intval($this->options['checkSubfolders']) === -1) {
                        $stat['dirs'] = -1;
                    }
                    if (isset($stat['dirs'])) {
                        if ($stat['dirs']) {
                            if ($stat['dirs'] == -1) {
                                $stat['dirs'] = ($this->sessionCaching['subdirs'] && isset($this->sessionCache['subdirs'][$path])) ? (int)$this->sessionCache['subdirs'][$path] : -1;
                            } else {
                                $stat['dirs'] = 1;
                            }
                        } else {
                            unset($stat['dirs']);
                        }
                    } elseif (!empty($stat['alias']) && !empty($stat['target'])) {
                        $stat['dirs'] = isset($this->cache[$stat['target']])
                            ? intval(isset($this->cache[$stat['target']]['dirs']))
                            : $this->subdirsCE($stat['target']);

                    } elseif ($this->subdirsCE($path)) {
                        $stat['dirs'] = 1;
                    }
                } else {
                    $stat['dirs'] = 1;
                }
                if ($this->options['dirUrlOwn'] === true) {
                    // Set `null` to use the client option `commandsOptions.info.nullUrlDirLinkSelf = true`
                    $stat['url'] = null;
                } else if ($this->options['dirUrlOwn'] === 'hide') {
                    // to hide link in info dialog of the elFinder client
                    $stat['url'] = '';
                }
            } else {
                // for files - check for thumbnails
                $p = isset($stat['target']) ? $stat['target'] : $path;
                if ($this->tmbURL && !isset($stat['tmb']) && $this->canCreateTmb($p, $stat)) {
                    $tmb = $this->gettmb($p, $stat);
                    $stat['tmb'] = $tmb ? $tmb : 1;
                }

            }
            if (!isset($stat['url']) && $this->URL && $this->encoding) {
                $_path = str_replace($this->separator, '/', substr($path, strlen($this->root) + 1));
                $stat['url'] = rtrim($this->URL, '/') . '/' . str_replace('%2F', '/', rawurlencode((substr(PHP_OS, 0, 3) === 'WIN') ? $_path : $this->convEncIn($_path, true)));
            }
        } else {
            if ($isDir) {
                unset($stat['dirs']);
            }
        }

        if (!empty($stat['alias']) && !empty($stat['target'])) {
            $stat['thash'] = $this->encode($stat['target']);
            //$this->cache[$stat['target']] = $stat;
            unset($stat['target']);
        }

        $this->cache[$path] = $stat;

        if (!$fromStat && $root && $this->sessionCaching['rootstat']) {
            // to update session cache
            $this->stat($path);
        }

        return $stat;
    }

    /**
     * Get stat for folder content and put in cache
     *
     * @param  string $path
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = array();
        $hasDir = false;

        foreach ($this->scandirCE($path) as $p) {
            if (($stat = $this->stat($p)) && empty($stat['hidden'])) {
                if (!$hasDir && $stat['mime'] === 'directory') {
                    $hasDir = true;
                }
                $this->dirsCache[$path][] = $p;
            }
        }

        $this->updateSubdirsCache($path, $hasDir);
    }

    /**
     * Clean cache
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
    protected function clearcache()
    {
        $this->cache = $this->dirsCache = array();
    }

    /**
     * Return file mimetype
     *
     * @param  string      $path file path
     * @param  string|bool $name
     * @param  integer     $size
     * @param  string      $mime was notified from the volume driver
     *
     * @return string
     * @author Dmitry (dio) Levashov
     */
    protected function mimetype($path, $name = '', $size = null, $mime = null)
    {
        $type = '';
        $nameCheck = false;

        if ($name === '') {
            $name = $path;
        } else if ($name === true) {
            $name = $path;
            $nameCheck = true;
        }
        if (!$this instanceof elFinderVolumeLocalFileSystem) {
            $nameCheck = true;
        }
        $ext = (false === $pos = strrpos($name, '.')) ? '' : strtolower(substr($name, $pos + 1));
        if (!$nameCheck && $size === null) {
            $size = file_exists($path) ? filesize($path) : -1;
        }
        if (!$nameCheck && is_readable($path) && $size > 0) {
            // detecting by contents
            if ($this->mimeDetect === 'finfo') {
                $type = finfo_file($this->finfo, $path);
            } else if ($this->mimeDetect === 'mime_content_type') {
                $type = mime_content_type($path);
            }
            if ($type) {
                $type = explode(';', $type);
                $type = trim($type[0]);
                if ($ext && preg_match('~^application/(?:octet-stream|(?:x-)?zip|xml)$~', $type)) {
                    // load default MIME table file "mime.types"
                    if (!elFinderVolumeDriver::$mimetypesLoaded) {
                        elFinderVolumeDriver::loadMimeTypes();
                    }
                    if (isset(elFinderVolumeDriver::$mimetypes[$ext])) {
                        $type = elFinderVolumeDriver::$mimetypes[$ext];
                    }
                } else if ($ext === 'js' && preg_match('~^text/~', $type)) {
                    $type = 'text/javascript';
                }
            }
        }
        if (!$type) {
            // detecting by filename
            $type = elFinderVolumeDriver::mimetypeInternalDetect($name);
            if ($type === 'unknown') {
                if ($mime) {
                    $type = $mime;
                } else {
                    $type = ($size == 0) ? 'text/plain' : $this->options['mimeTypeUnknown'];
                }
            }
        }

        // mime type normalization
        $type = $this->mimeTypeNormalize($type, $name, $ext);

        return $type;
    }

    /**
     * Load file of mime.types
     *
     * @param string $mimeTypesFile The mime types file
     */
    static protected function loadMimeTypes($mimeTypesFile = '')
    {
        if (!elFinderVolumeDriver::$mimetypesLoaded) {
            elFinderVolumeDriver::$mimetypesLoaded = true;
            $file = false;
            if (!empty($mimeTypesFile) && file_exists($mimeTypesFile)) {
                $file = $mimeTypesFile;
            } elseif (elFinder::$defaultMimefile && file_exists(elFinder::$defaultMimefile)) {
                $file = elFinder::$defaultMimefile;
            } elseif (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mime.types')) {
                $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mime.types';
            } elseif (file_exists(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'mime.types')) {
                $file = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'mime.types';
            }

            if ($file && file_exists($file)) {
                $mimecf = file($file);

                foreach ($mimecf as $line_num => $line) {
                    if (!preg_match('/^\s*#/', $line)) {
                        $mime = preg_split('/\s+/', $line, -1, PREG_SPLIT_NO_EMPTY);
                        for ($i = 1, $size = count($mime); $i < $size; $i++) {
                            if (!isset(self::$mimetypes[$mime[$i]])) {
                                self::$mimetypes[$mime[$i]] = $mime[0];
                            }
                        }
                    }
                }
            }
        }
    }

    /**
     * Detect file mimetype using "internal" method or Loading mime.types with $path = ''
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    static protected function mimetypeInternalDetect($path = '')
    {
        // load default MIME table file "mime.types"
        if (!elFinderVolumeDriver::$mimetypesLoaded) {
            elFinderVolumeDriver::loadMimeTypes();
        }
        $ext = '';
        if ($path) {
            $pinfo = pathinfo($path);
            $ext = isset($pinfo['extension']) ? strtolower($pinfo['extension']) : '';
        }
        return ($ext && isset(elFinderVolumeDriver::$mimetypes[$ext])) ? elFinderVolumeDriver::$mimetypes[$ext] : 'unknown';
    }

    /**
     * Return file/total directory size infomation
     *
     * @param  string $path file path
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function countSize($path)
    {

        elFinder::checkAborted();

        $result = array('size' => 0, 'files' => 0, 'dirs' => 0);
        $stat = $this->stat($path);

        if (empty($stat) || !$stat['read'] || !empty($stat['hidden'])) {
            $result['size'] = 'unknown';
            return $result;
        }

        if ($stat['mime'] !== 'directory') {
            $result['size'] = intval($stat['size']);
            $result['files'] = 1;
            return $result;
        }

        $result['dirs'] = 1;
        $subdirs = $this->options['checkSubfolders'];
        $this->options['checkSubfolders'] = true;
        foreach ($this->getScandir($path) as $stat) {
            if ($isDir = ($stat['mime'] === 'directory' && $stat['read'])) {
                ++$result['dirs'];
            } else {
                ++$result['files'];
            }
            $res = $isDir
                ? $this->countSize($this->decode($stat['hash']))
                : (isset($stat['size']) ? array('size' => intval($stat['size'])) : array());
            if (!empty($res['size']) && is_numeric($res['size'])) {
                $result['size'] += $res['size'];
            }
            if (!empty($res['files']) && is_numeric($res['files'])) {
                $result['files'] += $res['files'];
            }
            if (!empty($res['dirs']) && is_numeric($res['dirs'])) {
                $result['dirs'] += $res['dirs'];
                --$result['dirs'];
            }
        }
        $this->options['checkSubfolders'] = $subdirs;
        return $result;
    }

    /**
     * Return true if all mimes is directory or files
     *
     * @param  string $mime1 mimetype
     * @param  string $mime2 mimetype
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function isSameType($mime1, $mime2)
    {
        return ($mime1 == 'directory' && $mime1 == $mime2) || ($mime1 != 'directory' && $mime2 != 'directory');
    }

    /**
     * If file has required attr == $val - return file path,
     * If dir has child with has required attr == $val - return child path
     *
     * @param  string $path file path
     * @param  string $attr attribute name
     * @param  bool   $val  attribute value
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function closestByAttr($path, $attr, $val)
    {
        $stat = $this->stat($path);

        if (empty($stat)) {
            return false;
        }

        $v = isset($stat[$attr]) ? $stat[$attr] : false;

        if ($v == $val) {
            return $path;
        }

        return $stat['mime'] == 'directory'
            ? $this->childsByAttr($path, $attr, $val)
            : false;
    }

    /**
     * Return first found children with required attr == $val
     *
     * @param  string $path file path
     * @param  string $attr attribute name
     * @param  bool   $val  attribute value
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function childsByAttr($path, $attr, $val)
    {
        foreach ($this->scandirCE($path) as $p) {
            if (($_p = $this->closestByAttr($p, $attr, $val)) != false) {
                return $_p;
            }
        }
        return false;
    }

    protected function isMyReload($target = '', $ARGtarget = '')
    {
        if ($this->rootModified || (!empty($this->ARGS['cmd']) && $this->ARGS['cmd'] === 'parents')) {
            return true;
        }
        if (!empty($this->ARGS['reload'])) {
            if ($ARGtarget === '') {
                $ARGtarget = isset($this->ARGS['target']) ? $this->ARGS['target']
                    : ((isset($this->ARGS['targets']) && is_array($this->ARGS['targets']) && count($this->ARGS['targets']) === 1) ?
                        $this->ARGS['targets'][0] : '');
            }
            if ($ARGtarget !== '') {
                $ARGtarget = strval($ARGtarget);
                if ($target === '') {
                    return (strpos($ARGtarget, $this->id) === 0);
                } else {
                    $target = strval($target);
                    return ($target === $ARGtarget);
                }
            }
        }
        return false;
    }

    /**
     * Update subdirs cache data
     *
     * @param string $path
     * @param bool   $subdirs
     *
     * @return void
     */
    protected function updateSubdirsCache($path, $subdirs)
    {
        if (isset($this->cache[$path])) {
            if ($subdirs) {
                $this->cache[$path]['dirs'] = 1;
            } else {
                unset($this->cache[$path]['dirs']);
            }
        }
        if ($this->sessionCaching['subdirs']) {
            $this->sessionCache['subdirs'][$path] = $subdirs;
        }
        if ($this->sessionCaching['rootstat'] && $path == $this->root) {
            unset($this->sessionCache['rootstat'][$this->getRootstatCachekey()]);
        }
    }

    /*****************  get content *******************/

    /**
     * Return required dir's files info.
     * If onlyMimes is set - return only dirs and files of required mimes
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function getScandir($path)
    {
        $files = array();

        !isset($this->dirsCache[$path]) && $this->cacheDir($path);

        foreach ($this->dirsCache[$path] as $p) {
            if (($stat = $this->stat($p)) && empty($stat['hidden'])) {
                $files[] = $stat;
            }
        }

        return $files;
    }


    /**
     * Return subdirs tree
     *
     * @param  string $path parent dir path
     * @param  int    $deep tree deep
     * @param string  $exclude
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    protected function gettree($path, $deep, $exclude = '')
    {
        $dirs = array();

        !isset($this->dirsCache[$path]) && $this->cacheDir($path);

        foreach ($this->dirsCache[$path] as $p) {
            $stat = $this->stat($p);

            if ($stat && empty($stat['hidden']) && $p != $exclude && $stat['mime'] == 'directory') {
                $dirs[] = $stat;
                if ($deep > 0 && !empty($stat['dirs'])) {
                    $dirs = array_merge($dirs, $this->gettree($p, $deep - 1));
                }
            }
        }

        return $dirs;
    }

    /**
     * Recursive files search
     *
     * @param  string $path dir path
     * @param  string $q    search string
     * @param  array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function doSearch($path, $q, $mimes)
    {
        $result = array();
        $matchMethod = empty($this->doSearchCurrentQuery['matchMethod']) ? 'searchMatchName' : $this->doSearchCurrentQuery['matchMethod'];
        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
        if ($timeout && $timeout < time()) {
            $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
            return $result;
        }

        foreach ($this->scandirCE($path) as $p) {
            elFinder::extendTimeLimit($this->options['searchTimeout'] + 30);

            if ($timeout && ($this->error || $timeout < time())) {
                !$this->error && $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
                break;
            }


            $stat = $this->stat($p);

            if (!$stat) { // invalid links
                continue;
            }

            if (!empty($stat['hidden']) || !$this->mimeAccepted($stat['mime'], $mimes)) {
                continue;
            }

            $name = $stat['name'];

            if ($this->doSearchCurrentQuery['excludes']) {
                foreach ($this->doSearchCurrentQuery['excludes'] as $exclude) {
                    if ($this->stripos($name, $exclude) !== false) {
                        continue 2;
                    }
                }
            }

            if ((!$mimes || $stat['mime'] !== 'directory') && $this->$matchMethod($name, $q, $p) !== false) {
                $stat['path'] = $this->path($stat['hash']);
                if ($this->URL && !isset($stat['url'])) {
                    $path = str_replace($this->separator, '/', substr($p, strlen($this->root) + 1));
                    if ($this->encoding) {
                        $path = str_replace('%2F', '/', rawurlencode($this->convEncIn($path, true)));
                    } else {
                        $path = str_replace('%2F', '/', rawurlencode($path));
                    }
                    $stat['url'] = $this->URL . $path;
                }

                $result[] = $stat;
            }
            if ($stat['mime'] == 'directory' && $stat['read'] && !isset($stat['alias'])) {
                if (!$this->options['searchExDirReg'] || !preg_match($this->options['searchExDirReg'], $p)) {
                    $result = array_merge($result, $this->doSearch($p, $q, $mimes));
                }
            }
        }

        return $result;
    }

    /**********************  manuipulations  ******************/

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param  string $src  source path
     * @param  string $dst  destination dir path
     * @param  string $name new file name (optionaly)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function copy($src, $dst, $name)
    {

        elFinder::checkAborted();

        $srcStat = $this->stat($src);

        if (!empty($srcStat['thash'])) {
            $target = $this->decode($srcStat['thash']);
            if (!$this->inpathCE($target, $this->root)) {
                return $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']), elFinder::ERROR_MKOUTLINK);
            }
            $stat = $this->stat($target);
            $this->clearcache();
            return $stat && $this->symlinkCE($target, $dst, $name)
                ? $this->joinPathCE($dst, $name)
                : $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']));
        }

        if ($srcStat['mime'] === 'directory') {
            $testStat = $this->isNameExists($this->joinPathCE($dst, $name));
            $this->clearcache();

            if (($testStat && $testStat['mime'] !== 'directory') || (!$testStat && !$testStat = $this->mkdir($this->encode($dst), $name))) {
                return $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']));
            }

            $dst = $this->decode($testStat['hash']);

            // start time
            $stime = microtime(true);
            foreach ($this->getScandir($src) as $stat) {
                if (empty($stat['hidden'])) {
                    // current time
                    $ctime = microtime(true);
                    if (($ctime - $stime) > 2) {
                        $stime = $ctime;
                        elFinder::checkAborted();
                    }
                    $name = $stat['name'];
                    $_src = $this->decode($stat['hash']);
                    if (!$this->copy($_src, $dst, $name)) {
                        $this->remove($dst, true); // fall back
                        return $this->setError($this->error, elFinder::ERROR_COPY, $this->_path($src));
                    }
                }
            }

            $this->added[] = $testStat;

            return $dst;
        }

        if ($this->options['copyJoin']) {
            $test = $this->joinPathCE($dst, $name);
            if ($this->isNameExists($test)) {
                $this->remove($test);
            }
        }
        if ($res = $this->convEncOut($this->_copy($this->convEncIn($src), $this->convEncIn($dst), $this->convEncIn($name)))) {
            $path = is_string($res) ? $res : $this->joinPathCE($dst, $name);
            $this->clearstatcache();
            $this->added[] = $this->stat($path);
            return $path;
        }

        return $this->setError(elFinder::ERROR_COPY, $this->path($srcStat['hash']));
    }

    /**
     * Move file
     * Return new file path or false.
     *
     * @param  string $src  source path
     * @param  string $dst  destination dir path
     * @param  string $name new file name
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function move($src, $dst, $name)
    {
        $stat = $this->stat($src);
        $stat['realpath'] = $src;
        $this->rmTmb($stat); // can not do rmTmb() after _move()
        $this->clearcache();

        if ($res = $this->convEncOut($this->_move($this->convEncIn($src), $this->convEncIn($dst), $this->convEncIn($name)))) {
            $this->clearstatcache();
            if ($stat['mime'] === 'directory') {
                $this->updateSubdirsCache($dst, true);
            }
            $path = is_string($res) ? $res : $this->joinPathCE($dst, $name);
            $this->added[] = $this->stat($path);
            $this->removed[] = $stat;
            return $path;
        }

        return $this->setError(elFinder::ERROR_MOVE, $this->path($stat['hash']));
    }

    /**
     * Copy file from another volume.
     * Return new file path or false.
     *
     * @param  Object $volume      source volume
     * @param  string $src         source file hash
     * @param  string $destination destination dir path
     * @param  string $name        file name
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function copyFrom($volume, $src, $destination, $name)
    {

        elFinder::checkAborted();

        if (($source = $volume->file($src)) == false) {
            return $this->addError(elFinder::ERROR_COPY, '#' . $src, $volume->error());
        }

        $srcIsDir = ($source['mime'] === 'directory');

        $errpath = $volume->path($source['hash']);

        $errors = array();
        try {
            $thash = $this->encode($destination);
            elFinder::$instance->trigger('paste.copyfrom', array(&$thash, &$name, '', elFinder::$instance, $this), $errors);
        } catch (elFinderTriggerException $e) {
            return $this->addError(elFinder::ERROR_COPY, $name, $errors);
        }

        if (!$this->nameAccepted($name, $srcIsDir)) {
            return $this->addError(elFinder::ERROR_COPY, $name, $srcIsDir ? elFinder::ERROR_INVALID_DIRNAME : elFinder::ERROR_INVALID_NAME);
        }

        if (!$this->allowCreate($destination, $name, $srcIsDir)) {
            return $this->addError(elFinder::ERROR_COPY, $name, elFinder::ERROR_PERM_DENIED);
        }

        if (!$source['read']) {
            return $this->addError(elFinder::ERROR_COPY, $errpath, elFinder::ERROR_PERM_DENIED);
        }

        if ($srcIsDir) {
            $test = $this->isNameExists($this->joinPathCE($destination, $name));
            $this->clearcache();

            if (($test && $test['mime'] != 'directory') || (!$test && !$test = $this->mkdir($this->encode($destination), $name))) {
                return $this->addError(elFinder::ERROR_COPY, $errpath);
            }

            //$path = $this->joinPathCE($destination, $name);
            $path = $this->decode($test['hash']);

            foreach ($volume->scandir($src) as $entr) {
                $this->copyFrom($volume, $entr['hash'], $path, $entr['name']);
            }

            $this->added[] = $test;
        } else {
            // size check
            if (!isset($source['size']) || $source['size'] > $this->uploadMaxSize) {
                return $this->setError(elFinder::ERROR_UPLOAD_FILE_SIZE);
            }

            // MIME check
            $mimeByName = $this->mimetype($source['name'], true);
            if ($source['mime'] === $mimeByName) {
                $mimeByName = '';
            }
            if (!$this->allowPutMime($source['mime']) || ($mimeByName && !$this->allowPutMime($mimeByName))) {
                return $this->addError(elFinder::ERROR_UPLOAD_FILE_MIME, $errpath);
            }

            if (strpos($source['mime'], 'image') === 0 && ($dim = $volume->dimensions($src))) {
                if (is_array($dim)) {
                    $dim = isset($dim['dim']) ? $dim['dim'] : null;
                }
                if ($dim) {
                    $s = explode('x', $dim);
                    $source['width'] = $s[0];
                    $source['height'] = $s[1];
                }
            }

            if (($fp = $volume->open($src)) == false
                || ($path = $this->saveCE($fp, $destination, $name, $source)) == false) {
                $fp && $volume->close($fp, $src);
                return $this->addError(elFinder::ERROR_COPY, $errpath);
            }
            $volume->close($fp, $src);

            $this->added[] = $this->stat($path);;
        }

        return $path;
    }

    /**
     * Remove file/ recursive remove dir
     *
     * @param  string $path  file path
     * @param  bool   $force try to remove even if file locked
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function remove($path, $force = false)
    {
        $stat = $this->stat($path);

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->relpathCE($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->path($stat['hash']));
        }

        if ($stat['mime'] == 'directory' && empty($stat['thash'])) {
            $ret = $this->delTree($this->convEncIn($path));
            $this->convEncOut();
            if (!$ret) {
                return $this->setError(elFinder::ERROR_RM, $this->path($stat['hash']));
            }
        } else {
            if ($this->convEncOut(!$this->_unlink($this->convEncIn($path)))) {
                return $this->setError(elFinder::ERROR_RM, $this->path($stat['hash']));
            }
            $this->clearstatcache();
        }

        $this->removed[] = $stat;
        return true;
    }


    /************************* thumbnails **************************/

    /**
     * Return thumbnail file name for required file
     *
     * @param  array $stat file stat
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function tmbname($stat)
    {
        $name = $stat['hash'] . (isset($stat['ts']) ? $stat['ts'] : '') . '.png';
        if (strlen($name) > 255) {
            $name = $this->id . md5($stat['hash']) . $stat['ts'] . '.png';
        }
        return $name;
    }

    /**
     * Return thumnbnail name if exists
     *
     * @param  string $path file path
     * @param  array  $stat file stat
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    protected function gettmb($path, $stat)
    {
        if ($this->tmbURL && $this->tmbPath) {
            // file itself thumnbnail
            if (strpos($path, $this->tmbPath) === 0) {
                return basename($path);
            }

            $name = $this->tmbname($stat);
            $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;
            if (file_exists($tmb)) {
                if ($this->options['tmbGcMaxlifeHour'] && $this->options['tmbGcPercentage'] > 0) {
                    touch($tmb);
                }
                return $name;
            }
        }
        return false;
    }

    /**
     * Return true if thumnbnail for required file can be created
     *
     * @param  string $path thumnbnail path
     * @param  array  $stat file stat
     * @param  bool   $checkTmbPath
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function canCreateTmb($path, $stat, $checkTmbPath = true)
    {
        static $gdMimes = null;
        static $imgmgPS = null;
        if ($gdMimes === null) {
            $_mimes = array('image/jpeg', 'image/png', 'image/gif', 'image/x-ms-bmp');
            if (function_exists('imagecreatefromwebp')) {
                $_mimes[] = 'image/webp';
            }
            $gdMimes = array_flip($_mimes);
            $imgmgPS = array_flip(array('application/postscript', 'application/pdf'));
        }
        if ((!$checkTmbPath || $this->tmbPathWritable)
            && (!$this->tmbPath || strpos($path, $this->tmbPath) === false) // do not create thumnbnail for thumnbnail
        ) {
            $mime = strtolower($stat['mime']);
            list($type) = explode('/', $mime);
            if (!empty($this->imgConverter)) {
                if (isset($this->imgConverter[$mime])) {
                    return true;
                }
                if (isset($this->imgConverter[$type])) {
                    return true;
                }
            }
            return $this->imgLib
                && (
                    ($type === 'image' && ($this->imgLib === 'gd' ? isset($gdMimes[$stat['mime']]) : true))
                    ||
                    (ELFINDER_IMAGEMAGICK_PS && isset($imgmgPS[$stat['mime']]) && $this->imgLib !== 'gd')
                );
        }
        return false;
    }

    /**
     * Return true if required file can be resized.
     * By default - the same as canCreateTmb
     *
     * @param  string $path thumnbnail path
     * @param  array  $stat file stat
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    protected function canResize($path, $stat)
    {
        return $this->canCreateTmb($path, $stat, false);
    }

    /**
     * Create thumnbnail and return it's URL on success
     *
     * @param  string $path file path
     * @param         $stat
     *
     * @return false|string
     * @internal param string $mime file mime type
     * @throws elFinderAbortException
     * @throws ImagickException
     * @author   Dmitry (dio) Levashov
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        $maxlength = -1;
        $imgConverter = null;

        // check imgConverter
        $mime = strtolower($stat['mime']);
        list($type) = explode('/', $mime);
        if (isset($this->imgConverter[$mime])) {
            $imgConverter = $this->imgConverter[$mime]['func'];
            if (!empty($this->imgConverter[$mime]['maxlen'])) {
                $maxlength = intval($this->imgConverter[$mime]['maxlen']);
            }
        } else if (isset($this->imgConverter[$type])) {
            $imgConverter = $this->imgConverter[$type]['func'];
            if (!empty($this->imgConverter[$type]['maxlen'])) {
                $maxlength = intval($this->imgConverter[$type]['maxlen']);
            }
        }
        if ($imgConverter && !is_callable($imgConverter)) {
            return false;
        }

        // copy image into tmbPath so some drivers does not store files on local fs
        if (($src = $this->fopenCE($path, 'rb')) == false) {
            return false;
        }

        if (($trg = fopen($tmb, 'wb')) == false) {
            $this->fcloseCE($src, $path);
            return false;
        }

        stream_copy_to_stream($src, $trg, $maxlength);

        $this->fcloseCE($src, $path);
        fclose($trg);

        // call imgConverter
        if ($imgConverter) {
            if (!call_user_func_array($imgConverter, array($tmb, $stat, $this))) {
                file_exists($tmb) && unlink($tmb);
                return false;
            }
        }

        $result = false;

        $tmbSize = $this->tmbSize;

        if ($this->imgLib === 'imagick') {
            try {
                $imagickTest = new imagick($tmb . '[0]');
                $imagickTest->clear();
                $imagickTest = true;
            } catch (Exception $e) {
                $imagickTest = false;
            }
        }

        if (($this->imgLib === 'imagick' && !$imagickTest) || ($s = getimagesize($tmb)) === false) {
            if ($this->imgLib === 'imagick') {
                $bgcolor = $this->options['tmbBgColor'];
                if ($bgcolor === 'transparent') {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                try {
                    $imagick = new imagick();
                    $imagick->setBackgroundColor(new ImagickPixel($bgcolor));
                    $imagick->readImage($this->getExtentionByMime($stat['mime'], ':') . $tmb . '[0]');
                    try {
                        $imagick->trimImage(0);
                    } catch (Exception $e) {
                    }
                    $imagick->setImageFormat('png');
                    $imagick->writeImage($tmb);
                    $imagick->clear();
                    if (($s = getimagesize($tmb)) !== false) {
                        $result = true;
                    }
                } catch (Exception $e) {
                }
            } else if ($this->imgLib === 'convert') {
                $convParams = $this->imageMagickConvertPrepare($tmb, 'png', 100, array(), $stat['mime']);
                $cmd = sprintf('%s -colorspace sRGB -trim -- %s %s', ELFINDER_CONVERT_PATH, $convParams['quotedPath'], $convParams['quotedDstPath']);
                $result = false;
                if ($this->procExec($cmd) === 0) {
                    if (($s = getimagesize($tmb)) !== false) {
                        $result = true;
                    }
                }
            }
            if (!$result) {
                // fallback imgLib to GD
                if (function_exists('gd_info') && ($s = getimagesize($tmb))) {
                    $this->imgLib = 'gd';
                } else {
                    file_exists($tmb) && unlink($tmb);
                    return false;
                }
            }
        }

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {

            if ($this->options['tmbCrop']) {

                $result = $tmb;
                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if ($result && ($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($result, $tmbSize, $tmbSize, $x, $y, 'png');
                } else {
                    $result = false;
                }

            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            if ($result) {
                if ($s = getimagesize($tmb)) {
                    if ($s[0] !== $tmbSize || $s[1] !== $tmbSize) {
                        $result = $this->imgSquareFit($result, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
                    }
                }
            }
        }

        if (!$result) {
            unlink($tmb);
            return false;
        }

        return $name;
    }

    /**
     * Resize image
     *
     * @param  string $path               image file
     * @param  int    $width              new width
     * @param  int    $height             new height
     * @param  bool   $keepProportions    crop image
     * @param  bool   $resizeByBiggerSide resize image based on bigger side if true
     * @param  string $destformat         image destination format
     * @param  int    $jpgQuality         JEPG quality (1-100)
     * @param  array  $options            Other extra options
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function imgResize($path, $width, $height, $keepProportions = false, $resizeByBiggerSide = true, $destformat = null, $jpgQuality = null, $options = array())
    {
        if (($s = getimagesize($path)) == false) {
            return false;
        }

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        list($orig_w, $orig_h) = array($s[0], $s[1]);
        list($size_w, $size_h) = array($width, $height);

        if (empty($options['unenlarge']) || $orig_w > $size_w || $orig_h > $size_h) {
            if ($keepProportions == true) {
                /* Resizing by biggest side */
                if ($resizeByBiggerSide) {
                    if ($orig_w > $orig_h) {
                        $size_h = round($orig_h * $width / $orig_w);
                        $size_w = $width;
                    } else {
                        $size_w = round($orig_w * $height / $orig_h);
                        $size_h = $height;
                    }
                } else {
                    if ($orig_w > $orig_h) {
                        $size_w = round($orig_w * $height / $orig_h);
                        $size_h = $height;
                    } else {
                        $size_h = round($orig_h * $width / $orig_w);
                        $size_w = $width;
                    }
                }
            }
        } else {
            $size_w = $orig_w;
            $size_h = $orig_h;
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':

                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                // Imagick::FILTER_BOX faster than FILTER_LANCZOS so use for createTmb
                // resize bench: http://app-mgng.rhcloud.com/9
                // resize sample: http://www.dylanbeattie.net/magick/filters/result.html
                $filter = ($destformat === 'png' /* createTmb */) ? Imagick::FILTER_BOX : Imagick::FILTER_LANCZOS;

                $ani = ($img->getNumberImages() > 1);
                if ($ani && is_null($destformat)) {
                    $img = $img->coalesceImages();
                    do {
                        $img->resizeImage($size_w, $size_h, $filter, 1);
                    } while ($img->nextImage());
                    $img->optimizeImageLayers();
                    $result = $img->writeImages($path, true);
                } else {
                    if ($ani) {
                        $img->setFirstIterator();
                    }
                    if (strtoupper($img->getImageFormat()) === 'JPEG') {
                        $img->setImageCompression(imagick::COMPRESSION_JPEG);
                        $img->setImageCompressionQuality($jpgQuality);
                        if (isset($options['preserveExif']) && !$options['preserveExif']) {
                            try {
                                $orientation = $img->getImageOrientation();
                            } catch (ImagickException $e) {
                                $orientation = 0;
                            }
                            $img->stripImage();
                            if ($orientation) {
                                $img->setImageOrientation($orientation);
                            }
                        }
                        if ($this->options['jpgProgressive']) {
                            $img->setInterlaceScheme(Imagick::INTERLACE_PLANE);
                        }
                    }
                    $img->resizeImage($size_w, $size_h, $filter, true);
                    if ($destformat) {
                        $result = $this->imagickImage($img, $path, $destformat, $jpgQuality);
                    } else {
                        $result = $img->writeImage($path);
                    }
                }

                $img->clear();

                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                $filter = ($destformat === 'png' /* createTmb */) ? '-filter Box' : '-filter Lanczos';
                $strip = (isset($options['preserveExif']) && !$options['preserveExif']) ? ' -strip' : '';
                $cmd = sprintf('%s %s%s%s%s%s %s -geometry %dx%d! %s %s', ELFINDER_CONVERT_PATH, $quotedPath, $coalesce, $jpgQuality, $strip, $interlace, $filter, $size_w, $size_h, $deconstruct, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, array($size_w, $size_h)));
                $img = $this->gdImageCreate($path, $s['mime']);

                if ($img && false != ($tmp = imagecreatetruecolor($size_w, $size_h))) {

                    $bgNum = false;
                    if ($s[2] === IMAGETYPE_GIF && (!$destformat || $destformat === 'gif')) {
                        $bgIdx = imagecolortransparent($img);
                        if ($bgIdx !== -1) {
                            $c = imagecolorsforindex($img, $bgIdx);
                            $bgNum = imagecolorallocate($tmp, $c['red'], $c['green'], $c['blue']);
                            imagefill($tmp, 0, 0, $bgNum);
                            imagecolortransparent($tmp, $bgNum);
                        }
                    }
                    if ($bgNum === false) {
                        $this->gdImageBackground($tmp, 'transparent');
                    }

                    if (!imagecopyresampled($tmp, $img, 0, 0, 0, 0, $size_w, $size_h, $s[0], $s[1])) {
                        return false;
                    }

                    $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                    imagedestroy($img);
                    imagedestroy($tmp);

                    return $result ? $path : false;

                }
                break;
        }

        return false;
    }

    /**
     * Crop image
     *
     * @param  string $path       image file
     * @param  int    $width      crop width
     * @param  int    $height     crop height
     * @param  bool   $x          crop left offset
     * @param  bool   $y          crop top offset
     * @param  string $destformat image destination format
     * @param  int    $jpgQuality JEPG quality (1-100)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function imgCrop($path, $width, $height, $x, $y, $destformat = null, $jpgQuality = null)
    {
        if (($s = getimagesize($path)) == false) {
            return false;
        }

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':

                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                $ani = ($img->getNumberImages() > 1);
                if ($ani && is_null($destformat)) {
                    $img = $img->coalesceImages();
                    do {
                        $img->setImagePage($s[0], $s[1], 0, 0);
                        $img->cropImage($width, $height, $x, $y);
                        $img->setImagePage($width, $height, 0, 0);
                    } while ($img->nextImage());
                    $img->optimizeImageLayers();
                    $result = $img->writeImages($path, true);
                } else {
                    if ($ani) {
                        $img->setFirstIterator();
                    }
                    $img->setImagePage($s[0], $s[1], 0, 0);
                    $img->cropImage($width, $height, $x, $y);
                    $img->setImagePage($width, $height, 0, 0);
                    $result = $this->imagickImage($img, $path, $destformat, $jpgQuality);
                }

                $img->clear();

                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                $cmd = sprintf('%s %s%s%s%s -crop %dx%d+%d+%d%s %s', ELFINDER_CONVERT_PATH, $quotedPath, $coalesce, $jpgQuality, $interlace, $width, $height, $x, $y, $deconstruct, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, array($width, $height)));
                $img = $this->gdImageCreate($path, $s['mime']);

                if ($img && false != ($tmp = imagecreatetruecolor($width, $height))) {

                    $bgNum = false;
                    if ($s[2] === IMAGETYPE_GIF && (!$destformat || $destformat === 'gif')) {
                        $bgIdx = imagecolortransparent($img);
                        if ($bgIdx !== -1) {
                            $c = imagecolorsforindex($img, $bgIdx);
                            $bgNum = imagecolorallocate($tmp, $c['red'], $c['green'], $c['blue']);
                            imagefill($tmp, 0, 0, $bgNum);
                            imagecolortransparent($tmp, $bgNum);
                        }
                    }
                    if ($bgNum === false) {
                        $this->gdImageBackground($tmp, 'transparent');
                    }

                    $size_w = $width;
                    $size_h = $height;

                    if ($s[0] < $width || $s[1] < $height) {
                        $size_w = $s[0];
                        $size_h = $s[1];
                    }

                    if (!imagecopy($tmp, $img, 0, 0, $x, $y, $size_w, $size_h)) {
                        return false;
                    }

                    $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                    imagedestroy($img);
                    imagedestroy($tmp);

                    return $result ? $path : false;

                }
                break;
        }

        return false;
    }

    /**
     * Put image to square
     *
     * @param  string    $path       image file
     * @param  int       $width      square width
     * @param  int       $height     square height
     * @param int|string $align      reserved
     * @param int|string $valign     reserved
     * @param  string    $bgcolor    square background color in #rrggbb format
     * @param  string    $destformat image destination format
     * @param  int       $jpgQuality JEPG quality (1-100)
     *
     * @return false|string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function imgSquareFit($path, $width, $height, $align = 'center', $valign = 'middle', $bgcolor = '#0000ff', $destformat = null, $jpgQuality = null)
    {
        if (($s = getimagesize($path)) == false) {
            return false;
        }

        $result = false;

        /* Coordinates for image over square aligning */
        $y = ceil(abs($height - $s[1]) / 2);
        $x = ceil(abs($width - $s[0]) / 2);

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':
                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                if ($bgcolor === 'transparent') {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                $ani = ($img->getNumberImages() > 1);
                if ($ani && is_null($destformat)) {
                    $img1 = new Imagick();
                    $img1->setFormat('gif');
                    $img = $img->coalesceImages();
                    do {
                        $gif = new Imagick();
                        $gif->newImage($width, $height, new ImagickPixel($bgcolor));
                        $gif->setImageColorspace($img->getImageColorspace());
                        $gif->setImageFormat('gif');
                        $gif->compositeImage($img, imagick::COMPOSITE_OVER, $x, $y);
                        $gif->setImageDelay($img->getImageDelay());
                        $gif->setImageIterations($img->getImageIterations());
                        $img1->addImage($gif);
                        $gif->clear();
                    } while ($img->nextImage());
                    $img1->optimizeImageLayers();
                    $result = $img1->writeImages($path, true);
                } else {
                    if ($ani) {
                        $img->setFirstIterator();
                    }
                    $img1 = new Imagick();
                    $img1->newImage($width, $height, new ImagickPixel($bgcolor));
                    $img1->setImageColorspace($img->getImageColorspace());
                    $img1->compositeImage($img, imagick::COMPOSITE_OVER, $x, $y);
                    $result = $this->imagickImage($img1, $path, $destformat, $jpgQuality);
                }

                $img1->clear();
                $img->clear();
                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                if ($bgcolor === 'transparent') {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                $cmd = sprintf('%s -size %dx%d "xc:%s" png:- | convert%s%s%s png:-  %s -geometry +%d+%d -compose over -composite%s %s', ELFINDER_CONVERT_PATH, $width, $height, $bgcolor, $coalesce, $jpgQuality, $interlace, $quotedPath, $x, $y, $deconstruct, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, array($width, $height)));
                $img = $this->gdImageCreate($path, $s['mime']);

                if ($img && false != ($tmp = imagecreatetruecolor($width, $height))) {

                    $this->gdImageBackground($tmp, $bgcolor);
                    if ($bgcolor === 'transparent' && ($destformat === 'png' || $s[2] === IMAGETYPE_PNG)) {
                        $bgNum = imagecolorallocatealpha($tmp, 255, 255, 255, 127);
                        imagefill($tmp, 0, 0, $bgNum);
                    }

                    if (!imagecopy($tmp, $img, $x, $y, 0, 0, $s[0], $s[1])) {
                        return false;
                    }

                    $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                    imagedestroy($img);
                    imagedestroy($tmp);

                    return $result ? $path : false;
                }
                break;
        }

        return false;
    }

    /**
     * Rotate image
     *
     * @param  string $path       image file
     * @param  int    $degree     rotete degrees
     * @param  string $bgcolor    square background color in #rrggbb format
     * @param  string $destformat image destination format
     * @param  int    $jpgQuality JEPG quality (1-100)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author nao-pon
     * @author Troex Nevelin
     */
    protected function imgRotate($path, $degree, $bgcolor = '#ffffff', $destformat = null, $jpgQuality = null)
    {
        if (($s = getimagesize($path)) == false || $degree % 360 === 0) {
            return false;
        }

        $result = false;

        // try lossless rotate
        if ($degree % 90 === 0 && in_array($s[2], array(IMAGETYPE_JPEG, IMAGETYPE_JPEG2000))) {
            $count = ($degree / 90) % 4;
            $exiftran = array(
                1 => '-9',
                2 => '-1',
                3 => '-2'
            );
            $jpegtran = array(
                1 => '90',
                2 => '180',
                3 => '270'
            );
            $quotedPath = escapeshellarg($path);
            $cmds = array();
            if ($this->procExec(ELFINDER_EXIFTRAN_PATH . ' -h') === 0) {
                $cmds[] = ELFINDER_EXIFTRAN_PATH . ' -i ' . $exiftran[$count] . ' -- ' . $quotedPath;
            }
            if ($this->procExec(ELFINDER_JPEGTRAN_PATH . ' -version') === 0) {
                $cmds[] = ELFINDER_JPEGTRAN_PATH . ' -rotate ' . $jpegtran[$count] . ' -copy all -outfile ' . $quotedPath . ' -- ' . $quotedPath;
            }
            foreach ($cmds as $cmd) {
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                    break;
                }
            }
            if ($result) {
                return $path;
            }
        }

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        elFinder::extendTimeLimit(300);
        switch ($this->imgLib) {
            case 'imagick':
                try {
                    $img = new imagick($path);
                } catch (Exception $e) {
                    return false;
                }

                if ($s[2] === IMAGETYPE_GIF || $s[2] === IMAGETYPE_PNG) {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                if ($img->getNumberImages() > 1) {
                    $img = $img->coalesceImages();
                    do {
                        $img->rotateImage(new ImagickPixel($bgcolor), $degree);
                    } while ($img->nextImage());
                    $img->optimizeImageLayers();
                    $result = $img->writeImages($path, true);
                } else {
                    $img->rotateImage(new ImagickPixel($bgcolor), $degree);
                    $result = $this->imagickImage($img, $path, $destformat, $jpgQuality);
                }
                $img->clear();
                return $result ? $path : false;

                break;

            case 'convert':
                extract($this->imageMagickConvertPrepare($path, $destformat, $jpgQuality, $s));
                /**
                 * @var string $ani
                 * @var string $index
                 * @var string $coalesce
                 * @var string $deconstruct
                 * @var string $jpgQuality
                 * @var string $quotedPath
                 * @var string $quotedDstPath
                 * @var string $interlace
                 */
                if ($s[2] === IMAGETYPE_GIF || $s[2] === IMAGETYPE_PNG) {
                    $bgcolor = 'rgba(255, 255, 255, 0.0)';
                }
                $cmd = sprintf('%s%s%s%s -background "%s" -rotate %d%s -- %s %s', ELFINDER_CONVERT_PATH, $coalesce, $jpgQuality, $interlace, $bgcolor, $degree, $deconstruct, $quotedPath, $quotedDstPath);

                $result = false;
                if ($this->procExec($cmd) === 0) {
                    $result = true;
                }
                return $result ? $path : false;

                break;

            case 'gd':
                elFinder::expandMemoryForGD(array($s, $s));
                $img = $this->gdImageCreate($path, $s['mime']);

                $degree = 360 - $degree;

                $bgNum = -1;
                $bgIdx = false;
                if ($s[2] === IMAGETYPE_GIF) {
                    $bgIdx = imagecolortransparent($img);
                    if ($bgIdx !== -1) {
                        $c = imagecolorsforindex($img, $bgIdx);
                        $w = imagesx($img);
                        $h = imagesy($img);
                        $newImg = imagecreatetruecolor($w, $h);
                        imagepalettecopy($newImg, $img);
                        $bgNum = imagecolorallocate($newImg, $c['red'], $c['green'], $c['blue']);
                        imagefill($newImg, 0, 0, $bgNum);
                        imagecolortransparent($newImg, $bgNum);
                        imagecopy($newImg, $img, 0, 0, 0, 0, $w, $h);
                        imagedestroy($img);
                        $img = $newImg;
                        $newImg = null;
                    }
                } else if ($s[2] === IMAGETYPE_PNG) {
                    $bgNum = imagecolorallocatealpha($img, 255, 255, 255, 127);
                }
                if ($bgNum === -1) {
                    list($r, $g, $b) = sscanf($bgcolor, "#%02x%02x%02x");
                    $bgNum = imagecolorallocate($img, $r, $g, $b);
                }

                $tmp = imageRotate($img, $degree, $bgNum);
                if ($bgIdx !== -1) {
                    imagecolortransparent($tmp, $bgNum);
                }

                $result = $this->gdImage($tmp, $path, $destformat, $s['mime'], $jpgQuality);

                imageDestroy($img);
                imageDestroy($tmp);

                return $result ? $path : false;

                break;
        }

        return false;
    }

    /**
     * Execute shell command
     *
     * @param  string $command      command line
     * @param  string $output       stdout strings
     * @param  int    $return_var   process exit code
     * @param  string $error_output stderr strings
     *
     * @return int exit code
     * @throws elFinderAbortException
     * @author Alexey Sukhotin
     */
    protected function procExec($command, &$output = '', &$return_var = -1, &$error_output = '', $cwd = null)
    {
        return elFinder::procExec($command, $output, $return_var, $error_output);
    }

    /**
     * Remove thumbnail, also remove recursively if stat is directory
     *
     * @param  array $stat file stat
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     * @author Troex Nevelin
     */
    protected function rmTmb($stat)
    {
        if ($this->tmbPathWritable) {
            if ($stat['mime'] === 'directory') {
                foreach ($this->scandirCE($this->decode($stat['hash'])) as $p) {
                    elFinder::extendTimeLimit(30);
                    $name = $this->basenameCE($p);
                    $name != '.' && $name != '..' && $this->rmTmb($this->stat($p));
                }
            } else if (!empty($stat['tmb']) && $stat['tmb'] != "1") {
                $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . rawurldecode($stat['tmb']);
                file_exists($tmb) && unlink($tmb);
                clearstatcache();
            }
        }
    }

    /**
     * Create an gd image according to the specified mime type
     *
     * @param string $path image file
     * @param string $mime
     *
     * @return resource|false GD image resource identifier
     */
    protected function gdImageCreate($path, $mime)
    {
        switch ($mime) {
            case 'image/jpeg':
                return imagecreatefromjpeg($path);

            case 'image/png':
                return imagecreatefrompng($path);

            case 'image/gif':
                return imagecreatefromgif($path);

            case 'image/x-ms-bmp':
                if (!function_exists('imagecreatefrombmp')) {
                    include_once dirname(__FILE__) . '/libs/GdBmp.php';
                }
                return imagecreatefrombmp($path);

            case 'image/xbm':
                return imagecreatefromxbm($path);

            case 'image/xpm':
                return imagecreatefromxpm($path);

            case 'image/webp':
                return imagecreatefromwebp($path);
        }
        return false;
    }

    /**
     * Output gd image to file
     *
     * @param resource $image      gd image resource
     * @param string   $filename   The path to save the file to.
     * @param string   $destformat The Image type to use for $filename
     * @param string   $mime       The original image mime type
     * @param int      $jpgQuality JEPG quality (1-100)
     *
     * @return bool
     */
    protected function gdImage($image, $filename, $destformat, $mime, $jpgQuality = null)
    {

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }
        if ($destformat) {
            switch ($destformat) {
                case 'jpg':
                    $mime = 'image/jpeg';
                    break;
                case 'gif':
                    $mime = 'image/gif';
                    break;
                case 'png':
                default:
                    $mime = 'image/png';
                    break;
            }
        }
        switch ($mime) {
            case 'image/gif':
                return imagegif($image, $filename);
            case 'image/jpeg':
                if ($this->options['jpgProgressive']) {
                    imageinterlace($image, true);
                }
                return imagejpeg($image, $filename, $jpgQuality);
            case 'image/wbmp':
                return imagewbmp($image, $filename);
            case 'image/png':
            default:
                return imagepng($image, $filename);
        }
    }

    /**
     * Output imagick image to file
     *
     * @param imagick $img        imagick image resource
     * @param string  $filename   The path to save the file to.
     * @param string  $destformat The Image type to use for $filename
     * @param int     $jpgQuality JEPG quality (1-100)
     *
     * @return bool
     */
    protected function imagickImage($img, $filename, $destformat, $jpgQuality = null)
    {

        if (!$jpgQuality) {
            $jpgQuality = $this->options['jpgQuality'];
        }

        try {
            if ($destformat) {
                if ($destformat === 'gif') {
                    $img->setImageFormat('gif');
                } else if ($destformat === 'png') {
                    $img->setImageFormat('png');
                } else if ($destformat === 'jpg') {
                    $img->setImageFormat('jpeg');
                }
            }
            if (strtoupper($img->getImageFormat()) === 'JPEG') {
                $img->setImageCompression(imagick::COMPRESSION_JPEG);
                $img->setImageCompressionQuality($jpgQuality);
                if ($this->options['jpgProgressive']) {
                    $img->setInterlaceScheme(Imagick::INTERLACE_PLANE);
                }
                try {
                    $orientation = $img->getImageOrientation();
                } catch (ImagickException $e) {
                    $orientation = 0;
                }
                $img->stripImage();
                if ($orientation) {
                    $img->setImageOrientation($orientation);
                }
            }
            $result = $img->writeImage($filename);
        } catch (Exception $e) {
            $result = false;
        }

        return $result;
    }

    /**
     * Assign the proper background to a gd image
     *
     * @param resource $image   gd image resource
     * @param string   $bgcolor background color in #rrggbb format
     */
    protected function gdImageBackground($image, $bgcolor)
    {

        if ($bgcolor === 'transparent') {
            imagealphablending($image, false);
            imagesavealpha($image, true);
        } else {
            list($r, $g, $b) = sscanf($bgcolor, "#%02x%02x%02x");
            $bgcolor1 = imagecolorallocate($image, $r, $g, $b);
            imagefill($image, 0, 0, $bgcolor1);
        }
    }

    /**
     * Prepare variables for exec convert of ImageMagick
     *
     * @param  string $path
     * @param  string $destformat
     * @param  int    $jpgQuality
     * @param  array  $imageSize
     * @param null    $mime
     *
     * @return array
     * @throws elFinderAbortException
     */
    protected function imageMagickConvertPrepare($path, $destformat, $jpgQuality, $imageSize = null, $mime = null)
    {
        if (is_null($imageSize)) {
            $imageSize = getimagesize($path);
        }
        if (is_null($mime)) {
            $mime = $this->mimetype($path);
        }
        $srcType = $this->getExtentionByMime($mime, ':');
        $ani = false;
        if (preg_match('/^(?:gif|png|ico)/', $srcType)) {
            $cmd = ELFINDER_IDENTIFY_PATH . ' -- ' . escapeshellarg($srcType . $path);
            if ($this->procExec($cmd, $o) === 0) {
                $ani = preg_split('/(?:\r\n|\n|\r)/', trim($o));
                if (count($ani) < 2) {
                    $ani = false;
                }
            }
        }
        $coalesce = $index = $interlace = '';
        $deconstruct = ' +repage';
        if ($ani && $destformat !== 'png'/* not createTmb */) {
            if (is_null($destformat)) {
                $coalesce = ' -coalesce -repage 0x0';
                $deconstruct = ' +repage -deconstruct -layers optimize';
            } else if ($imageSize) {
                if ($srcType === 'ico:') {
                    $index = '[0]';
                    foreach ($ani as $_i => $_info) {
                        if (preg_match('/ (\d+)x(\d+) /', $_info, $m)) {
                            if ($m[1] == $imageSize[0] && $m[2] == $imageSize[1]) {
                                $index = '[' . $_i . ']';
                                break;
                            }
                        }
                    }
                }
            }
        } else {
            $index = '[0]';
        }
        if ($imageSize && ($imageSize[2] === IMAGETYPE_JPEG || $imageSize[2] === IMAGETYPE_JPEG2000)) {
            $jpgQuality = ' -quality ' . $jpgQuality;
            if ($this->options['jpgProgressive']) {
                $interlace = ' -interlace Plane';
            }
        } else {
            $jpgQuality = '';
        }
        $quotedPath = escapeshellarg($srcType . $path . $index);
        $quotedDstPath = escapeshellarg(($destformat ? ($destformat . ':') : $srcType) . $path);
        return compact('ani', 'index', 'coalesce', 'deconstruct', 'jpgQuality', 'quotedPath', 'quotedDstPath', 'interlace');
    }

    /*********************** misc *************************/

    /**
     * Find position of first occurrence of string in a string with multibyte support
     *
     * @param  string $haystack The string being checked.
     * @param  string $needle   The string to find in haystack.
     * @param  int    $offset   The search offset. If it is not specified, 0 is used.
     *
     * @return int|bool
     * @author Alexey Sukhotin
     **/
    protected function stripos($haystack, $needle, $offset = 0)
    {
        if (function_exists('mb_stripos')) {
            return mb_stripos($haystack, $needle, $offset, 'UTF-8');
        } else if (function_exists('mb_strtolower') && function_exists('mb_strpos')) {
            return mb_strpos(mb_strtolower($haystack, 'UTF-8'), mb_strtolower($needle, 'UTF-8'), $offset);
        }
        return stripos($haystack, $needle, $offset);
    }

    /**
     * Default serach match method (name match)
     *
     * @param  String $name  Item name
     * @param  String $query Query word
     * @param  String $path  Item path
     *
     * @return bool @return bool
     */
    protected function searchMatchName($name, $query, $path)
    {
        return $this->stripos($name, $query) !== false;
    }

    /**
     * Get server side available archivers
     *
     * @param bool $use_cache
     *
     * @return array
     * @throws elFinderAbortException
     */
    protected function getArchivers($use_cache = true)
    {
        $sessionKey = 'archivers';
        if ($use_cache) {
            if (isset($this->options['archivers']) && is_array($this->options['archivers']) && $this->options['archivers']) {
                $cache = $this->options['archivers'];
            } else {
                $cache = elFinder::$archivers;
            }
            if ($cache) {
                return $cache;
            } else {
                if ($cache = $this->session->get($sessionKey, array())) {
                    return elFinder::$archivers = $cache;
                }
            }
        }

        $arcs = array(
            'create' => array(),
            'extract' => array()
        );

        if ($this->procExec('') === 0) {

            $this->procExec(ELFINDER_TAR_PATH . ' --version', $o, $ctar);

            if ($ctar == 0) {
                $arcs['create']['application/x-tar'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-chf', 'ext' => 'tar');
                $arcs['extract']['application/x-tar'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xf', 'ext' => 'tar', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                unset($o);
                $this->procExec(ELFINDER_GZIP_PATH . ' --version', $o, $c);
                if ($c == 0) {
                    $arcs['create']['application/x-gzip'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-czhf', 'ext' => 'tgz');
                    $arcs['extract']['application/x-gzip'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xzf', 'ext' => 'tgz', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                }
                unset($o);
                $this->procExec(ELFINDER_BZIP2_PATH . ' --version', $o, $c);
                if ($c == 0) {
                    $arcs['create']['application/x-bzip2'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-cjhf', 'ext' => 'tbz');
                    $arcs['extract']['application/x-bzip2'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xjf', 'ext' => 'tbz', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                }
                unset($o);
                $this->procExec(ELFINDER_XZ_PATH . ' --version', $o, $c);
                if ($c == 0) {
                    $arcs['create']['application/x-xz'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-cJhf', 'ext' => 'xz');
                    $arcs['extract']['application/x-xz'] = array('cmd' => ELFINDER_TAR_PATH, 'argc' => '-xJf', 'ext' => 'xz', 'toSpec' => '-C ', 'getsize' => array('argc' => '-xvf', 'toSpec' => '--to-stdout|wc -c', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]*([0-9]+)[^\r\n]*$/s', 'replace' => '$1'));
                }
            }
            unset($o);
            $this->procExec(ELFINDER_ZIP_PATH . ' -h', $o, $c);
            if ($c == 0) {
                $arcs['create']['application/zip'] = array('cmd' => ELFINDER_ZIP_PATH, 'argc' => '-r9 -q', 'ext' => 'zip');
            }
            unset($o);
            $this->procExec(ELFINDER_UNZIP_PATH . ' --help', $o, $c);
            if ($c == 0) {
                $arcs['extract']['application/zip'] = array('cmd' => ELFINDER_UNZIP_PATH, 'argc' => '-q', 'ext' => 'zip', 'toSpec' => '-d ', 'getsize' => array('argc' => '-Z -t', 'regex' => '/^.+?,\s?([0-9]+).+$/', 'replace' => '$1'));
            }
            unset($o);
            $this->procExec(ELFINDER_RAR_PATH, $o, $c);
            if ($c == 0 || $c == 7) {
                $arcs['create']['application/x-rar'] = array('cmd' => ELFINDER_RAR_PATH, 'argc' => 'a -inul' . (defined('ELFINDER_RAR_MA4') && ELFINDER_RAR_MA4? ' -ma4' : '') . ' --', 'ext' => 'rar');
            }
            unset($o);
            $this->procExec(ELFINDER_UNRAR_PATH, $o, $c);
            if ($c == 0 || $c == 7) {
                $arcs['extract']['application/x-rar'] = array('cmd' => ELFINDER_UNRAR_PATH, 'argc' => 'x -y', 'ext' => 'rar', 'toSpec' => '', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)(?:(?:[^\r\n0-9]+[0-9]+[^\r\n0-9]+([0-9]+)[^\r\n]+)|(?:[^\r\n0-9]+([0-9]+)[^\r\n0-9]+[0-9]+[^\r\n]*))$/s', 'replace' => '$1'));
            }
            unset($o);
            $this->procExec(ELFINDER_7Z_PATH, $o, $c);
            if ($c == 0) {
                $arcs['create']['application/x-7z-compressed'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'a --', 'ext' => '7z');
                $arcs['extract']['application/x-7z-compressed'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -y', 'ext' => '7z', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));

                if (empty($arcs['create']['application/zip'])) {
                    $arcs['create']['application/zip'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'a -tzip --', 'ext' => 'zip');
                }
                if (empty($arcs['extract']['application/zip'])) {
                    $arcs['extract']['application/zip'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -tzip -y', 'ext' => 'zip', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));
                }
                if (empty($arcs['create']['application/x-tar'])) {
                    $arcs['create']['application/x-tar'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'a -ttar --', 'ext' => 'tar');
                }
                if (empty($arcs['extract']['application/x-tar'])) {
                    $arcs['extract']['application/x-tar'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -ttar -y', 'ext' => 'tar', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));
                }
                if (substr(PHP_OS, 0, 3) === 'WIN' && empty($arcs['extract']['application/x-rar'])) {
                    $arcs['extract']['application/x-rar'] = array('cmd' => ELFINDER_7Z_PATH, 'argc' => 'x -trar -y', 'ext' => 'rar', 'toSpec' => '-o', 'getsize' => array('argc' => 'l', 'regex' => '/^.+(?:\r\n|\n|\r)[^\r\n0-9]+([0-9]+)[^\r\n]+$/s', 'replace' => '$1'));
                }
            }

        }

        // Use PHP ZipArchive Class
        if (class_exists('ZipArchive', false)) {
            if (empty($arcs['create']['application/zip'])) {
                $arcs['create']['application/zip'] = array('cmd' => 'phpfunction', 'argc' => array('self', 'zipArchiveZip'), 'ext' => 'zip');
            }
            if (empty($arcs['extract']['application/zip'])) {
                $arcs['extract']['application/zip'] = array('cmd' => 'phpfunction', 'argc' => array('self', 'zipArchiveUnzip'), 'ext' => 'zip');
            }
        }

        $this->session->set($sessionKey, $arcs);
        return elFinder::$archivers = $arcs;
    }

    /**
     * Resolve relative / (Unix-like)absolute path
     *
     * @param string $path target path
     * @param string $base base path
     *
     * @return string
     */
    protected function getFullPath($path, $base)
    {
        $separator = $this->separator;
        $systemroot = $this->systemRoot;
        $base = (string)$base;

        if ($base[0] === $separator && substr($base, 0, strlen($systemroot)) !== $systemroot) {
            $base = $systemroot . substr($base, 1);
        }
        if ($base !== $systemroot) {
            $base = rtrim($base, $separator);
        }

        // 'Here'
        if ($path === '' || $path === '.' . $separator) return $base;

        $sepquoted = preg_quote($separator, '#');

        if (substr($path, 0, 3) === '..' . $separator) {
            $path = $base . $separator . $path;
        }
        // normalize `/../`
        $normreg = '#(' . $sepquoted . ')[^' . $sepquoted . ']+' . $sepquoted . '\.\.' . $sepquoted . '#'; // '#(/)[^\/]+/\.\./#'
        while (preg_match($normreg, $path)) {
            $path = preg_replace($normreg, '$1', $path, 1);
        }
        if ($path !== $systemroot) {
            $path = rtrim($path, $separator);
        }

        // Absolute path
        if ($path[0] === $separator || strpos($path, $systemroot) === 0) {
            return $path;
        }

        $preg_separator = '#' . $sepquoted . '#';

        // Relative path from 'Here'
        if (substr($path, 0, 2) === '.' . $separator || $path[0] !== '.') {
            $arrn = preg_split($preg_separator, $path, -1, PREG_SPLIT_NO_EMPTY);
            if ($arrn[0] !== '.') {
                array_unshift($arrn, '.');
            }
            $arrn[0] = rtrim($base, $separator);
            return join($separator, $arrn);
        }

        return $path;
    }

    /**
     * Remove directory recursive on local file system
     *
     * @param string $dir Target dirctory path
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    public function rmdirRecursive($dir)
    {
        return self::localRmdirRecursive($dir);
    }

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     * @author Naoki Sawada
     */
    protected function makeArchive($dir, $files, $name, $arc)
    {
        if ($arc['cmd'] === 'phpfunction') {
            if (is_callable($arc['argc'])) {
                call_user_func_array($arc['argc'], array($dir, $files, $name));
            }
        } else {
            $cwd = getcwd();
            if (chdir($dir)) {
                foreach ($files as $i => $file) {
                    $files[$i] = '.' . DIRECTORY_SEPARATOR . basename($file);
                }
                $files = array_map('escapeshellarg', $files);
                $prefix = $switch = '';
                // The zip command accepts the "-" at the beginning of the file name as a command switch,
                // and can't use '--' before archive name, so add "./" to name for security reasons.
                if ($arc['ext'] === 'zip' && strpos($arc['argc'], '-tzip') === false) {
                    $prefix = './';
                    $switch = '-- ';
                }
                $cmd = $arc['cmd'] . ' ' . $arc['argc'] . ' ' . $prefix . escapeshellarg($name) . ' ' . $switch . implode(' ', $files);
                $err_out = '';
                $this->procExec($cmd, $o, $c, $err_out, $dir);
                chdir($cwd);
            } else {
                return false;
            }
        }
        $path = $dir . DIRECTORY_SEPARATOR . $name;
        return file_exists($path) ? $path : false;
    }

    /**
     * Unpack archive
     *
     * @param  string      $path archive path
     * @param  array       $arc  archiver command and arguments (same as in $this->archivers)
     * @param  bool|string $mode bool: remove archive ( unlink($path) ) | string: extract to directory
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     * @author Naoki Sawada
     */
    protected function unpackArchive($path, $arc, $mode = true)
    {
        if (is_string($mode)) {
            $dir = $mode;
            $chdir = null;
            $remove = false;
        } else {
            $dir = dirname($path);
            $chdir = $dir;
            $remove = $mode;
        }
        $dir = realpath($dir);
        $path = realpath($path);
        if ($arc['cmd'] === 'phpfunction') {
            if (is_callable($arc['argc'])) {
                call_user_func_array($arc['argc'], array($path, $dir));
            }
        } else {
            $cwd = getcwd();
            if (!$chdir || chdir($dir)) {
                if (!empty($arc['getsize'])) {
                    // Check total file size after extraction
                    $getsize = $arc['getsize'];
                    if (is_array($getsize) && !empty($getsize['regex']) && !empty($getsize['replace'])) {
                        $cmd = $arc['cmd'] . ' ' . $getsize['argc'] . ' ' . escapeshellarg($path) . (!empty($getsize['toSpec'])? (' ' . $getsize['toSpec']): '');
                        $this->procExec($cmd, $o, $c);
                        if ($o) {
                            $size = preg_replace($getsize['regex'], $getsize['replace'], trim($o));
                            $comp = function_exists('bccomp')? 'bccomp' : 'strnatcmp';
                            if (!empty($this->options['maxArcFilesSize'])) {
                                if ($comp($size, (string)$this->options['maxArcFilesSize']) > 0) {
                                    throw new Exception(elFinder::ERROR_ARC_MAXSIZE);
                                }
                            }
                        }
                        unset($o, $c);
                    }
                }
                if ($chdir) {
                    $cmd = $arc['cmd'] . ' ' . $arc['argc'] . ' ' . escapeshellarg(basename($path));
                } else {
                    $cmd = $arc['cmd'] . ' ' . $arc['argc'] . ' ' . escapeshellarg($path) . ' ' . $arc['toSpec'] . escapeshellarg($dir);
                }
                $this->procExec($cmd, $o, $c);
                $chdir && chdir($cwd);
            }
        }
        $remove && unlink($path);
    }

    /**
     * Check and filter the extracted items
     *
     * @param  string $path   target local path
     * @param  array  $checks types to check default: ['symlink', 'name', 'writable', 'mime']
     *
     * @return array  ['symlinks' => [], 'names' => [], 'writables' => [], 'mimes' => [], 'rmNames' => [], 'totalSize' => 0]
     * @throws elFinderAbortException
     * @throws Exception
     * @author Naoki Sawada
     */
    protected function checkExtractItems($path, $checks = null)
    {
        if (is_null($checks) || !is_array($checks)) {
            $checks = array('symlink', 'name', 'writable', 'mime');
        }
        $chkSymlink = in_array('symlink', $checks);
        $chkName = in_array('name', $checks);
        $chkWritable = in_array('writable', $checks);
        $chkMime = in_array('mime', $checks);

        $res = array(
            'symlinks' => array(),
            'names' => array(),
            'writables' => array(),
            'mimes' => array(),
            'rmNames' => array(),
            'totalSize' => 0
        );

        if (is_dir($path)) {
            $files = self::localScandir($path);
        } else {
            $files = array(basename($path));
            $path = dirname($path);
        }

        foreach ($files as $name) {
            $p = $path . DIRECTORY_SEPARATOR . $name;
            $utf8Name = elFinder::$instance->utf8Encode($name);
            if ($name !== $utf8Name) {
                $fsSame = false;
                if ($this->encoding) {
                    // test as fs encoding
                    $_utf8 = @iconv($this->encoding, 'utf-8//IGNORE', $name);
                    if (@iconv('utf-8', $this->encoding.'//IGNORE', $_utf8) === $name) {
                        $fsSame = true;
                        $utf8Name = $_utf8;
                    } else {
                        $_name = $this->convEncIn($utf8Name, true);
                    }
                } else {
                    $_name = $utf8Name;
                }
                if (!$fsSame && rename($p, $path . DIRECTORY_SEPARATOR . $_name)) {
                    $name = $_name;
                    $p = $path . DIRECTORY_SEPARATOR . $name;
                }
            }
            if (!is_readable($p)) {
                // Perhaps a symbolic link to open_basedir restricted location
                self::localRmdirRecursive($p);
                $res['symlinks'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            if ($chkSymlink && is_link($p)) {
                self::localRmdirRecursive($p);
                $res['symlinks'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            $isDir = is_dir($p);
            if ($chkName && !$this->nameAccepted($name, $isDir)) {
                self::localRmdirRecursive($p);
                $res['names'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            if ($chkWritable && !$this->attr($p, 'write', null, $isDir)) {
                self::localRmdirRecursive($p);
                $res['writables'][] = $p;
                $res['rmNames'][] = $utf8Name;
                continue;
            }
            if ($isDir) {
                $cRes = $this->checkExtractItems($p, $checks);
                foreach ($cRes as $k => $v) {
                    if (is_array($v)) {
                        $res[$k] = array_merge($res[$k], $cRes[$k]);
                    } else {
                        $res[$k] += $cRes[$k];
                    }
                }
            } else {
                if ($chkMime && ($mimeByName = elFinderVolumeDriver::mimetypeInternalDetect($name)) && !$this->allowPutMime($mimeByName)) {
                    self::localRmdirRecursive($p);
                    $res['mimes'][] = $p;
                    $res['rmNames'][] = $utf8Name;
                    continue;
                }
                $res['totalSize'] += (int)sprintf('%u', filesize($p));
            }
        }
        $res['rmNames'] = array_unique($res['rmNames']);

        return $res;
    }

    /**
     * Return files of target directory that is dotfiles excludes.
     *
     * @param  string $dir target directory path
     *
     * @return array
     * @throws Exception
     * @author Naoki Sawada
     */
    protected static function localScandir($dir)
    {
        // PHP function scandir() is not work well in specific environment. I dont know why.
        // ref. https://github.com/Studio-42/elFinder/issues/1248
        $files = array();
        if ($dh = opendir($dir)) {
            while (false !== ($file = readdir($dh))) {
                if ($file !== '.' && $file !== '..') {
                    $files[] = $file;
                }
            }
            closedir($dh);
        } else {
            throw new Exception('Can not open local directory.');
        }
        return $files;
    }

    /**
     * Remove directory recursive on local file system
     *
     * @param string $dir Target dirctory path
     *
     * @return boolean
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected static function localRmdirRecursive($dir)
    {
        // try system command
        if (is_callable('exec')) {
            $o = '';
            $r = 1;
            if (substr(PHP_OS, 0, 3) === 'WIN') {
                if (!is_link($dir) && is_dir($dir)) {
                    exec('rd /S /Q ' . escapeshellarg($dir), $o, $r);
                } else {
                    exec('del /F /Q ' . escapeshellarg($dir), $o, $r);
                }
            } else {
                exec('rm -rf ' . escapeshellarg($dir), $o, $r);
            }
            if ($r === 0) {
                return true;
            }
        }
        if (!is_link($dir) && is_dir($dir)) {
            chmod($dir, 0777);
            if ($handle = opendir($dir)) {
                while (false !== ($file = readdir($handle))) {
                    if ($file === '.' || $file === '..') {
                        continue;
                    }
                    elFinder::extendTimeLimit(30);
                    $path = $dir . DIRECTORY_SEPARATOR . $file;
                    if (!is_link($dir) && is_dir($path)) {
                        self::localRmdirRecursive($path);
                    } else {
                        chmod($path, 0666);
                        unlink($path);
                    }
                }
                closedir($handle);
            }
            return rmdir($dir);
        } else {
            chmod($dir, 0666);
            return unlink($dir);
        }
    }

    /**
     * Move item recursive on local file system
     *
     * @param string $src
     * @param string $target
     * @param bool   $overWrite
     * @param bool   $copyJoin
     *
     * @return boolean
     * @throws elFinderAbortException
     * @throws Exception
     * @author Naoki Sawada
     */
    protected static function localMoveRecursive($src, $target, $overWrite = true, $copyJoin = true)
    {
        $res = false;
        if (!file_exists($target)) {
            return rename($src, $target);
        }
        if (!$copyJoin || !is_dir($target)) {
            if ($overWrite) {
                if (is_dir($target)) {
                    $del = self::localRmdirRecursive($target);
                } else {
                    $del = unlink($target);
                }
                if ($del) {
                    return rename($src, $target);
                }
            }
        } else {
            foreach (self::localScandir($src) as $item) {
                $res |= self::localMoveRecursive($src . DIRECTORY_SEPARATOR . $item, $target . DIRECTORY_SEPARATOR . $item, $overWrite, $copyJoin);
            }
        }
        return (bool)$res;
    }

    /**
     * Create Zip archive using PHP class ZipArchive
     *
     * @param  string        $dir     target dir
     * @param  array         $files   files names list
     * @param  string|object $zipPath Zip archive name
     *
     * @return bool
     * @author Naoki Sawada
     */
    protected static function zipArchiveZip($dir, $files, $zipPath)
    {
        try {
            if ($start = is_string($zipPath)) {
                $zip = new ZipArchive();
                if ($zip->open($dir . DIRECTORY_SEPARATOR . $zipPath, ZipArchive::CREATE) !== true) {
                    $zip = false;
                }
            } else {
                $zip = $zipPath;
            }
            if ($zip) {
                foreach ($files as $file) {
                    $path = $dir . DIRECTORY_SEPARATOR . $file;
                    if (is_dir($path)) {
                        $zip->addEmptyDir($file);
                        $_files = array();
                        if ($handle = opendir($path)) {
                            while (false !== ($entry = readdir($handle))) {
                                if ($entry !== "." && $entry !== "..") {
                                    $_files[] = $file . DIRECTORY_SEPARATOR . $entry;
                                }
                            }
                            closedir($handle);
                        }
                        if ($_files) {
                            self::zipArchiveZip($dir, $_files, $zip);
                        }
                    } else {
                        $zip->addFile($path, $file);
                    }
                }
                $start && $zip->close();
            }
        } catch (Exception $e) {
            return false;
        }
        return true;
    }

    /**
     * Unpack Zip archive using PHP class ZipArchive
     *
     * @param  string $zipPath Zip archive name
     * @param  string $toDir   Extract to path
     *
     * @return bool
     * @author Naoki Sawada
     */
    protected static function zipArchiveUnzip($zipPath, $toDir)
    {
        try {
            $zip = new ZipArchive();
            if ($zip->open($zipPath) === true) {
                // Check total file size after extraction
                $num = $zip->numFiles;
                $size = 0;
                $maxSize = empty(self::$maxArcFilesSize)? '' : (string)self::$maxArcFilesSize;
                $comp = function_exists('bccomp')? 'bccomp' : 'strnatcmp';
                for ($i = 0; $i < $num; $i++) {
                    $stat = $zip->statIndex($i);
                    $size += $stat['size'];
                    if (strpos((string)$size, 'E') !== false) {
                        // Cannot handle values exceeding PHP_INT_MAX
                        throw new Exception(elFinder::ERROR_ARC_MAXSIZE);
                    }
                    if (!$maxSize) {
                        if ($comp($size, $maxSize) > 0) {
                            throw new Exception(elFinder::ERROR_ARC_MAXSIZE);
                        }
                    }
                }
                // do extract
                $zip->extractTo($toDir);
                $zip->close();
            }
        } catch (Exception $e) {
            throw $e;
        }
        return true;
    }

    /**
     * Recursive symlinks search
     *
     * @param  string $path file/dir path
     *
     * @return bool
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    protected static function localFindSymlinks($path)
    {
        if (is_link($path)) {
            return true;
        }

        if (is_dir($path)) {
            foreach (self::localScandir($path) as $name) {
                $p = $path . DIRECTORY_SEPARATOR . $name;
                if (is_link($p)) {
                    return true;
                }
                if (is_dir($p) && self::localFindSymlinks($p)) {
                    return true;
                }
            }
        }

        return false;
    }

    /**==================================* abstract methods *====================================**/

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _dirname($path);

    /**
     * Return file name
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _basename($path);

    /**
     * Join dir name and file name and return full path.
     * Some drivers (db) use int as path - so we give to concat path to driver itself
     *
     * @param  string $dir  dir path
     * @param  string $name file name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _joinPath($dir, $name);

    /**
     * Return normalized path
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _normpath($path);

    /**
     * Return file path related to root dir
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _relpath($path);

    /**
     * Convert path related to root dir into real path
     *
     * @param  string $path rel file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _abspath($path);

    /**
     * Return fake path started from root dir.
     * Required to show path on client side.
     *
     * @param  string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _path($path);

    /**
     * Return true if $path is children of $parent
     *
     * @param  string $path   path to check
     * @param  string $parent parent path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _inpath($path, $parent);

    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally
     * If file does not exists - returns empty array or false.
     *
     * @param  string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _stat($path);


    /***************** file stat ********************/


    /**
     * Return true if path is dir and has at least one childs directory
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _subdirs($path);

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param  string $path file path
     * @param  string $mime file mime type
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _dimensions($path, $mime);

    /******************** file/dir content *********************/

    /**
     * Return files list in directory
     *
     * @param  string $path dir path
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _scandir($path);

    /**
     * Open file and return file pointer
     *
     * @param  string $path file path
     * @param  string $mode open mode
     *
     * @return resource|false
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _fopen($path, $mode = "rb");

    /**
     * Close opened file
     *
     * @param  resource $fp   file pointer
     * @param  string   $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _fclose($fp, $path = '');

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new directory name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _mkdir($path, $name);

    /**
     * Create file and return it's path or false on failed
     *
     * @param  string $path parent dir path
     * @param string  $name new file name
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _mkfile($path, $name);

    /**
     * Create symlink
     *
     * @param  string $source    file to link to
     * @param  string $targetDir folder to create link in
     * @param  string $name      symlink name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _symlink($source, $targetDir, $name);

    /**
     * Copy file into another file (only inside one volume)
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    abstract protected function _copy($source, $targetDir, $name);

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param  string $source source file path
     * @param         $targetDir
     * @param  string $name   file name
     *
     * @return bool|string
     * @internal param string $target target dir path
     * @author   Dmitry (dio) Levashov
     */
    abstract protected function _move($source, $targetDir, $name);

    /**
     * Remove file
     *
     * @param  string $path file path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _unlink($path);

    /**
     * Remove dir
     *
     * @param  string $path dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _rmdir($path);

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param  resource $fp   file pointer
     * @param  string   $dir  target dir path
     * @param  string   $name file name
     * @param  array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _save($fp, $dir, $name, $stat);

    /**
     * Get file contents
     *
     * @param  string $path file path
     *
     * @return string|false
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _getContents($path);

    /**
     * Write a string to a file
     *
     * @param  string $path    file path
     * @param  string $content new file content
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    abstract protected function _filePutContents($path, $content);

    /**
     * Extract files from archive
     *
     * @param  string $path file path
     * @param  array  $arc  archiver options
     *
     * @return bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    abstract protected function _extract($path, $arc);

    /**
     * Create archive and return its path
     *
     * @param  string $dir   target dir
     * @param  array  $files files names list
     * @param  string $name  archive name
     * @param  array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    abstract protected function _archive($dir, $files, $name, $arc);

    /**
     * Detect available archivers
     *
     * @return void
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    abstract protected function _checkArchivers();

    /**
     * Change file mode (chmod)
     *
     * @param  string $path file path
     * @param  string $mode octal string such as '0755'
     *
     * @return bool
     * @author David Bartle,
     **/
    abstract protected function _chmod($path, $mode);


} // END class
lib/php/resources/video.png000064400000004361147361034400011735 0ustar00�PNG


IHDR00W���IDATx�ݘE�+����Y%����h5[����O����;����L��[��<�QœnԳvGODve�T��<7���+d0X�A2��~�.���ӵfvܒ�8��o��7=1�`�@��.�x�-������߳�!Zst<�����够�|�3PUlV�-\o8��(�������:�wp�>(�
Db�\���
���/;�P���hD;m8�g�ڼ�_Pl�5x�w#�=���^�R���Y���*ůq����F�Q�@�@[�����c�ul���]{H�`1��9�xH�6�K�b\
�
���d�Jb��]��,
�C���^��]��үHm�2��� �t��C�v:#��!�`+����p?�[Ȧ+�+��uL����ٻcI�,<�����+"�+S�ͬm�2��!�����H�N���(�C�`#Xn�@�a��
O�U�J�4��۝[�> N��o���1�
FPv�(a	���
��9��,!2�'5;���l��c�7�Sp&�L���
�D�D���(Q'���LL6k�6 Na��h�$@�%��
r�F�UB2	W�*��Jl�i��:Bd��ksR�B��S�u�~�(Q�hL\���H9�1�ub�[�J!���iso2>�v�Z�PB��u���`2`�H�lOj���i:�Mv�V6�N��Dܾ��k��Vq�Nu1ol�.ټ�晀���)+e�bQ�h��ѷ�qz)$�bDBJ�U�o�x�w~��P�-���R�ʉɤfs�fwo���
�x|����u���|��x���hP�+�ҵ�~{�|�$�m�rE~�J��o|6k8�>e6mi�Bq�e9K�_�4��
�:'�w����ҹc�ݥ
���z�i�������ڕ���mK��ۢ��IU&�=H�z��b4�f��K�@Ӵ�F`�v���;H�{g�44mG]g�6��|�\�t�De{��d~�op��y�fZ�D �I, �GZ�$�P�79��^�|�D��, J3��˅�����W�u��=GU�����f�?���?�{D��(���# `��8
�&���5�]>ϝ�?B.�T�����_~�K._�.&W����M��0\�0�W?;q�[���/�j�(�y ����b����9��vƟ�e�ٔ�������ޤ��9�_/�fj��i���)��=�#t�P�������?���J��P�})��D�F���/^s�G`��Pv�0��(|WaRfz|�or���П	H�9%Q���e.I�D)�T���?D��1l�`�	��$�錣�kH6J �A	0IBۖ�����G��!}p��
�v́��p�$�p����$���l�V#�*�N6 ��A@h&ȋ\�A��FZ�]-�4a��!�(,;�:���kH�� ��v+Sh�5`1ޤ��[B��*���pH��q�� ��Q�t��[�e�Ć!�c�=p}���L]��ll�qz)\^�%�M)�D�c�T��(%n`A�V,�^�Ëolq��O��ؗ�>E�)�ƥ钋�l:[�3��mƷ���{s_`��<������&<E�h�$J۴ʩM���^k�>�W,�kgJ�/���'3�,�<�2�݉R��`Y�����ڥ�2uUjM��o��?��G� �y��"(��ds����­��-���s�p�#O��������9>�Q:�,��+��J�j�V��x�闸t��]�2/�=?��yi��%5I�/��
�L����u=bk����Cb�gh���y�qvn�Ͽ�ռ<�r�L�g��o>���m�+�'����@��?�������]�-6J�?ФLʡ)E�
���/�m�0���E��O~�'�<��t�Ii�I�Α�1
� Ȩx/�Lþ����y�ǟ�Rg"b�8|�t����H����A�C��Ð���jc��c��!h���(�>!0<X��_��3/sЃ�bph��r�٬R�e�7� 
��X7q��f(_�N \�吠��
��6nN�ı'��|Z���f��	�i����p&.�vM��rJ(�B���`��:�V���f���;Qm�g ��1��?�ۀ{�WN68�76�1��V��x��������'>1�vO"IEND�B`�lib/php/resources/image.png000064400000007052147361034400011711 0ustar00�PNG


IHDR00W��
�IDATxڴ�U��ʹ��$�Mto�9��N�D2�p���"�3v�m�v|���UU?��c��RU@�p^
A�����
e{;������Ϯ���mȘ�+��<q��xI^r��D�q��y��ZU>y��/��ǻ_}[�U۹��{Ӊ��^�q���v��+����+U����奼$���0M���d�Z�o��>x)����1@O	Q����5�FU7N�b���.᫽��� ��t(@芢���`AD���T��PU_�����#�B /�|8\�{�w]g�6cQ�\��\�"��O ^
#�7(A�2w��-s��l=6���hC��쟈��6@AB���
R$T�I@:=���w��PV�X5�ap��3U���v;{e��Zc��X��al�e���?>��ʜQ7�J,Y��S�y6��R���n���ԓ;Ͼ�x�z��@y�tw�ܱ�l�W[�8Z�X%>~�����p$J�*�!`�HJ�̻����?E��it��O�=�&�1�w���'�{���4�����'�����~;z�����U�:A(��\,K�jel̝�@)P�����!�>���w/�ZS58?9u|~�a<�M�d4�&Ae:UL-�a��0�i(g��ٮ�wV�TQ��'=Gy���5c��JI�T��}�9>���L~�]I
�(�jX$�ҵF����)>|Q�6��a=�V�����̱_b�*����u%�׏���#^�6w��o�%Kq4E'Sח�j�M�>\��{�&�}\�w·��d#�
���J+�؟�U�����8=]7q{�x��*��7_
�^%�HL-�ꦁ�!�Ve�F��n��΍��IoM���E��F�9nnnU��f�,��iaHw2p>�U͒�/�{�1Yg�o���[��9-H9��’"�ә^e���yb9]{*���D�F�����q4���vc@�6M~
/���5۶m#�cm!��m��o���\���˪�/*z�{����z��Sy2�ɾ�5���xfD�}��M�F4�-���,����[�5����!�8�!���.�U$c!ւ���0[㚝< �i5�����p������,j����#^���lWTU��,v�h�7��$n��?�aMH��#F[�&eE0f�Mi�1�VW8�2D��K
��R3�L�ˊ�8��)���J�'^���D����9����h��0G^����}>�1@�&'V[Ǫ��P>4
)�sW����)˒��0�LQ��8���f�q�~��<����G�f�U����28�u򪤨k�s`4��,kʼbT�ΣT@��G.�?�ui��]��nݦ��{*�QT%�wwɊ*�iM4b�jg�A���Z�M����Qh�AA�\�B�JB���	t��z%�.�H�#k.|�>�B(@�"ύ�>��$X=3aZ�&Im�<`��B#%w5�u�f�E� �(��rU]��[�ǣx<�(��Ak[-:i���tX]8�
ˉ����K�!����G����eM8�8Mp�'�
6��������Fc:�s�󨙰i
%%���$��j2-F��q"�}Bv�68���`��U���/�0Z��O�01��C���1�V�|�YMs�I>��l��E��-uQ7��x�C>��%+G��Zp>t��hJ>�)�9:h�<
f���1H�H�8hj�P���J�ϱ6|�����?��>�)�X;�֦EA�'����0H)�뫴��y�����l��x�+����-EVR��HҔf;�*kF�=�[lE	����l���֢���{��C�ro�O��Ftʾ<��0�(G�4I�.i�h���I�҂7���y��Dcc��9!�*5_T���Ψ����>�fB{��u R�TjL��D/^�"����8�N�&����կ�ܹ3$�'2)���8!	�CD@��գUf�m5�y8��'Gۏ�;9�y�b�rq���7.c#�yp"��h���t�ݻ���Ƅ�����gQسLz%#�;�Xjo�Z�P�f��-�F��w����t�ю
�.bD	qSC*ض�G���|�W�(����;��2�=�+�8�ٚ��$�Dӎ"�M4�D4h�N��J)JL6
��%��0��ƊX	*4#Od�䊧o'����{�;�"x�1��Qm"�(9�Sܐ���5�\#�F���y穝"<0k�(—C�f#B�83�\�PJ��v�l�K.� �������*g�(�뢜��t��!�8Y�r��Ե��1���X��P�
dQyE-
�O!h<W[{��Ѐ�B".���HYR�)m=��ǿ$t%���*�Q䕟x��r�����|!�������6��|��8��u
h����&�i��1��P+���q�y�<�
X%HUj
)ڱ������bPN�x��m�:��߽��[C6.
�����~Et��f\�Mu�Qو@+��hkI҈8�4��΂�&*`UUA�F�}��%�D1޿M=���k�[���Q��u����D�]�ِ5
�{�2cm��_^�_��ګp�(�.@)���
Kt2&?���'//��mSV�tμ{�9�ؓ
=����n�.�n��#���N.�Y��r���p����D�&���o��f=���;�N{/JM!��� Wt����+�
���
CU>����7~���E�ڬ�/���Q_��.̳p�Oz��9s�_a�>��c	�є}l�"�����E�x��[�"�o�A��/~�矅�.!
��fPd�<|�BJ�/L�6>ʾ�̭4iͷ�75S�gl޸Ly0¤��ULv&�Řc'��y�*�{W�����I�����X�5��4|�w?*�x�S���)��o���3?u�<tBX۽/z�#�r�.FW([".ewC1��XX�螌9�X�{�'?��f�m�/XN���r�_r�������o�{D��!��J?��g�D4<0fpPs��pH{X?��P՜8�d��)6��C1�p_�7��(Vs����g���
��i6��i�p�3�WZ|rp��r[k�	E>!m6��і���O���n��ԑ�NLׇe��G�1��=�\9��=Ox�
��	R�H٢��s��k��I8��&�A������tcay��O5kg[$���4���s\�0Z�M&l0��a��&>��l���`A�٘`U��L7�l�.�xe�K�N����!�U�����0:���S�
��3滖�mIR�/;�'>�I9�
ld�ˊ��s�1…��<�A�?@!�=��غ>��՚�z‰�w�V$�`�r����Y^NI�1f��O�r��}N>l�ǽt�z�y5c�D�׼����[�mO9��56.�N�9B�? �S�+m���mD�d�d_�ݟ!�	�a����f�˟~��%l���9��������14w����0V��2H��6��@�(��P�S����^���x�X�a�9�/�?��R�==U���8��IEND�B`�lib/php/elFinderVolumeDropbox2.class.php000064400000134506147361034400014271 0ustar00<?php

use Kunnu\Dropbox\Dropbox;
use Kunnu\Dropbox\DropboxApp;
use Kunnu\Dropbox\DropboxFile;
use Kunnu\Dropbox\Exceptions\DropboxClientException;
use Kunnu\Dropbox\Models\FileMetadata;
use Kunnu\Dropbox\Models\FolderMetadata;

/**
 * Simple elFinder driver for Dropbox
 * kunalvarma05/dropbox-php-sdk:0.1.5 or above.
 *
 * @author Naoki Sawada
 **/
class elFinderVolumeDropbox2 extends elFinderVolumeDriver
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 'db';

    /**
     * Dropbox service object.
     *
     * @var object
     **/
    protected $service = null;

    /**
     * Fetch options.
     *
     * @var string
     */
    private $FETCH_OPTIONS = [];

    /**
     * Directory for tmp files
     * If not set driver will try to use tmbDir as tmpDir.
     *
     * @var string
     **/
    protected $tmp = '';

    /**
     * Net mount key.
     *
     * @var string
     **/
    public $netMountKey = '';

    /**
     * Constructor
     * Extend options with required fields.
     *
     * @author Naoki Sawada
     **/
    public function __construct()
    {
        $opts = [
            'app_key' => '',
            'app_secret' => '',
            'access_token' => '',
            'aliasFormat' => '%s@Dropbox',
            'path' => '/',
            'separator' => '/',
            'acceptedName' => '#^[^\\\/]+$#',
            'rootCssClass' => 'elfinder-navbar-root-dropbox',
            'publishPermission' => [
                'requested_visibility' => 'public',
                //'link_password' => '',
                //'expires' => '',
            ],
            'getThumbSize' => 'medium', // Available sizes: 'thumb', 'small', 'medium', 'large', 'huge'
        ];
        $this->options = array_merge($this->options, $opts);
        $this->options['mimeDetect'] = 'internal';
    }

    /*********************************************************************/
    /*                        ORIGINAL FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Get Parent ID, Item ID, Parent Path as an array from path.
     *
     * @param string $path
     *
     * @return array
     */
    protected function _db_splitPath($path)
    {
        $path = trim($path, '/');
        if ($path === '') {
            $dirname = '/';
            $basename = '';
        } else {
            $pos = strrpos($path, '/');
            if ($pos === false) {
                $dirname = '/';
                $basename = $path;
            } else {
                $dirname = '/' . substr($path, 0, $pos);
                $basename = substr($path, $pos + 1);
            }
        }

        return [$dirname, $basename];
    }

    /**
     * Get dat(Dropbox metadata) from Dropbox.
     *
     * @param string $path
     *
     * @return boolean|object Dropbox metadata
     */
    private function _db_getFile($path)
    {
        if ($path === '/') {
            return true;
        }

        $res = false;
        try {
            $file = $this->service->getMetadata($path, $this->FETCH_OPTIONS);
            if ($file instanceof FolderMetadata || $file instanceof FileMetadata) {
                $res = $file;
            }

            return $res;
        } catch (DropboxClientException $e) {
            return false;
        }
    }

    /**
     * Parse line from Dropbox metadata output and return file stat (array).
     *
     * @param object $raw line from ftp_rawlist() output
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function _db_parseRaw($raw)
    {
        $stat = [];
        $isFolder = false;
        if ($raw === true) {
            // root folder
            $isFolder = true;
            $stat['name'] = '';
            $stat['iid'] = '0';
        }

        $data = [];
        if (is_object($raw)) {
            $isFolder = $raw instanceof FolderMetadata;
            $data = $raw->getData();
        } elseif (is_array($raw)) {
            $isFolder = $raw['.tag'] === 'folder';
            $data = $raw;
        }

        if (isset($data['path_lower'])) {
            $stat['path'] = $data['path_lower'];
        }

        if (isset($data['name'])) {
            $stat['name'] = $data['name'];
        }

        if (isset($data['id'])) {
            $stat['iid'] = substr($data['id'], 3);
        }

        if ($isFolder) {
            $stat['mime'] = 'directory';
            $stat['size'] = 0;
            $stat['ts'] = 0;
            $stat['dirs'] = -1;
        } else {
            $stat['size'] = isset($data['size']) ? (int)$data['size'] : 0;
            if (isset($data['server_modified'])) {
                $stat['ts'] = strtotime($data['server_modified']);
            } elseif (isset($data['client_modified'])) {
                $stat['ts'] = strtotime($data['client_modified']);
            } else {
                $stat['ts'] = 0;
            }
            $stat['url'] = '1';
        }

        return $stat;
    }

    /**
     * Get thumbnail from Dropbox.
     *
     * @param string $path
     * @param string $size
     *
     * @return string | boolean
     */
    protected function _db_getThumbnail($path)
    {
        try {
            return $this->service->getThumbnail($path, $this->options['getThumbSize'])->getContents();
        } catch (DropboxClientException $e) {
            return false;
        }
    }

    /**
     * Join dir name and file name(display name) and retur full path.
     *
     * @param string $dir
     * @param string $displayName
     *
     * @return string
     */
    protected function _db_joinName($dir, $displayName)
    {
        return rtrim($dir, '/') . '/' . $displayName;
    }

    /**
     * Get OAuth2 access token form OAuth1 tokens.
     *
     * @param string $app_key
     * @param string $app_secret
     * @param string $oauth1_token
     * @param string $oauth1_secret
     *
     * @return string|false
     */
    public static function getTokenFromOauth1($app_key, $app_secret, $oauth1_token, $oauth1_secret)
    {
        $data = [
            'oauth1_token' => $oauth1_token,
            'oauth1_token_secret' => $oauth1_secret,
        ];
        $auth = base64_encode($app_key . ':' . $app_secret);

        $ch = curl_init('https://api.dropboxapi.com/2/auth/token/from_oauth1');
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Authorization: Basic ' . $auth,
        ]);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        $result = curl_exec($ch);
        curl_close($ch);

        $res = $result ? json_decode($result, true) : [];

        return isset($res['oauth2_token']) ? $res['oauth2_token'] : false;
    }

    /*********************************************************************/
    /*                        EXTENDED FUNCTIONS                         */
    /*********************************************************************/

    /**
     * Prepare
     * Call from elFinder::netmout() before volume->mount().
     *
     * @return array
     * @author Naoki Sawada
     **/
    public function netmountPrepare($options)
    {
        if (empty($options['app_key']) && defined('ELFINDER_DROPBOX_APPKEY')) {
            $options['app_key'] = ELFINDER_DROPBOX_APPKEY;
        }
        if (empty($options['app_secret']) && defined('ELFINDER_DROPBOX_APPSECRET')) {
            $options['app_secret'] = ELFINDER_DROPBOX_APPSECRET;
        }

        if (!isset($options['pass'])) {
            $options['pass'] = '';
        }

        try {
            $app = new DropboxApp($options['app_key'], $options['app_secret']);
            $dropbox = new Dropbox($app);
            $authHelper = $dropbox->getAuthHelper();

            if ($options['pass'] === 'reauth') {
                $options['pass'] = '';
                $this->session->set('Dropbox2AuthParams', [])->set('Dropbox2Tokens', []);
            } elseif ($options['pass'] === 'dropbox2') {
                $options['pass'] = '';
            }

            $options = array_merge($this->session->get('Dropbox2AuthParams', []), $options);

            if (!isset($options['tokens'])) {
                $options['tokens'] = $this->session->get('Dropbox2Tokens', []);
                $this->session->remove('Dropbox2Tokens');
            }
            $aToken = $options['tokens'];
            if (!is_array($aToken) || !isset($aToken['access_token'])) {
                $aToken = [];
            }

            $service = null;
            if ($aToken) {
                try {
                    $dropbox->setAccessToken($aToken['access_token']);
                    $this->session->set('Dropbox2AuthParams', $options);
                } catch (DropboxClientException $e) {
                    $aToken = [];
                    $options['tokens'] = [];
                    if ($options['user'] !== 'init') {
                        $this->session->set('Dropbox2AuthParams', $options);

                        return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
                    }
                }
            }

            if ((isset($options['user']) && $options['user'] === 'init') || (isset($_GET['host']) && $_GET['host'] == '1')) {
                if (empty($options['url'])) {
                    $options['url'] = elFinder::getConnectorUrl();
                }

                if (!empty($options['id'])) {
                    $callback = $options['url']
                            . (strpos($options['url'], '?') !== false? '&' : '?') . 'cmd=netmount&protocol=dropbox2&host=' . ($options['id'] === 'elfinder'? '1' : $options['id']);
                }

                $itpCare = isset($options['code']);
                $code = $itpCare? $options['code'] : (isset($_GET['code'])? $_GET['code'] : '');
                $state = $itpCare? $options['state'] : (isset($_GET['state'])? $_GET['state'] : '');
                if (!$aToken && empty($code)) {
                    $url = $authHelper->getAuthUrl($callback);

                    $html = '<input id="elf-volumedriver-dropbox2-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button">';
                    $html .= '<script>
                        jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "dropbox2", mode: "makebtn", url: "' . $url . '"});
                    </script>';
                    if (empty($options['pass']) && $options['host'] !== '1') {
                        $options['pass'] = 'return';
                        $this->session->set('Dropbox2AuthParams', $options);

                        return ['exit' => true, 'body' => $html];
                    } else {
                        $out = [
                            'node' => $options['id'],
                            'json' => '{"protocol": "dropbox2", "mode": "makebtn", "body" : "' . str_replace($html, '"', '\\"') . '", "error" : "' . elFinder::ERROR_ACCESS_DENIED . '"}',
                            'bind' => 'netmount',
                        ];

                        return ['exit' => 'callback', 'out' => $out];
                    }
                } else {
                    if ($code && $state) {
                        if (!empty($options['id'])) {
                            // see https://github.com/kunalvarma05/dropbox-php-sdk/issues/115
                            $authHelper->getPersistentDataStore()->set('state', filter_var($state, FILTER_SANITIZE_STRING));
                            $tokenObj = $authHelper->getAccessToken($code, $state, $callback);
                            $options['tokens'] = [
                                'access_token' => $tokenObj->getToken(),
                                'uid' => $tokenObj->getUid(),
                            ];
                            unset($options['code'], $options['state']);
                            $this->session->set('Dropbox2Tokens', $options['tokens'])->set('Dropbox2AuthParams', $options);
                            $out = [
                                'node' => $options['id'],
                                'json' => '{"protocol": "dropbox2", "mode": "done", "reset": 1}',
                                'bind' => 'netmount',
                            ];
                        } else {
                            $nodeid = ($_GET['host'] === '1')? 'elfinder' : $_GET['host'];
                            $out = [
                                'node' => $nodeid,
                                'json' => json_encode(array(
                                    'protocol' => 'dropbox2',
                                    'host' => $nodeid,
                                    'mode' => 'redirect',
                                    'options' => array(
                                        'id' => $nodeid,
                                        'code' => $code,
                                        'state' => $state
                                    )
                                )),
                                'bind' => 'netmount'
                            ];
                        }
                        if (!$itpCare) {
                            return array('exit' => 'callback', 'out' => $out);
                        } else {
                            return array('exit' => true, 'body' => $out['json']);
                        }
                    }
                    $path = $options['path'];
                    $folders = [];
                    $listFolderContents = $dropbox->listFolder($path);
                    $items = $listFolderContents->getItems();
                    foreach ($items as $item) {
                        $data = $item->getData();
                        if ($data['.tag'] === 'folder') {
                            $folders[$data['path_lower']] = $data['name'];
                        }
                    }
                    natcasesort($folders);

                    if ($options['pass'] === 'folders') {
                        return ['exit' => true, 'folders' => $folders];
                    }

                    $folders = ['/' => '/'] + $folders;
                    $folders = json_encode($folders);
                    $json = '{"protocol": "dropbox2", "mode": "done", "folders": ' . $folders . '}';
                    $options['pass'] = 'return';
                    $html = 'Dropbox.com';
                    $html .= '<script>
                        jQuery("#' . $options['id'] . '").elfinder("instance").trigger("netmount", ' . $json . ');
                    </script>';
                    $this->session->set('Dropbox2AuthParams', $options);

                    return ['exit' => true, 'body' => $html];
                }
            }
        } catch (DropboxClientException $e) {
            $this->session->remove('Dropbox2AuthParams')->remove('Dropbox2Tokens');
            if (empty($options['pass'])) {
                return ['exit' => true, 'body' => '{msg:' . elFinder::ERROR_ACCESS_DENIED . '}' . ' ' . $e->getMessage()];
            } else {
                return ['exit' => true, 'error' => [elFinder::ERROR_ACCESS_DENIED, $e->getMessage()]];
            }
        }

        if (!$aToken) {
            return ['exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE];
        }

        if ($options['path'] === 'root') {
            $options['path'] = '/';
        }

        try {
            if ($options['path'] !== '/') {
                $file = $dropbox->getMetadata($options['path']);
                $name = $file->getName();
            } else {
                $name = 'root';
            }
            $options['alias'] = sprintf($this->options['aliasFormat'], $name);
        } catch (DropboxClientException $e) {
            return ['exit' => true, 'error' => $e->getMessage()];
        }

        foreach (['host', 'user', 'pass', 'id', 'offline'] as $key) {
            unset($options[$key]);
        }

        return $options;
    }

    /**
     * process of on netunmount
     * Drop `Dropbox` & rm thumbs.
     *
     * @param array $options
     *
     * @return bool
     */
    public function netunmount($netVolumes, $key)
    {
        if ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/') . DIRECTORY_SEPARATOR . $this->driverId . '_' . $this->options['tokens']['uid'] . '*.png')) {
            foreach ($tmbs as $file) {
                unlink($file);
            }
        }

        return true;
    }

    /*********************************************************************/
    /*                        INIT AND CONFIGURE                         */
    /*********************************************************************/

    /**
     * Prepare Dropbox connection
     * Connect to remote server and check if credentials are correct, if so, store the connection id in $this->service.
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function init()
    {
        if (empty($this->options['app_key'])) {
            if (defined('ELFINDER_DROPBOX_APPKEY') && ELFINDER_DROPBOX_APPKEY) {
                $this->options['app_key'] = ELFINDER_DROPBOX_APPKEY;
            } else {
                return $this->setError('Required option "app_key" is undefined.');
            }
        }
        if (empty($this->options['app_secret'])) {
            if (defined('ELFINDER_DROPBOX_APPSECRET') && ELFINDER_DROPBOX_APPSECRET) {
                $this->options['app_secret'] = ELFINDER_DROPBOX_APPSECRET;
            } else {
                return $this->setError('Required option "app_secret" is undefined.');
            }
        }
        if (isset($this->options['tokens']) && is_array($this->options['tokens']) && !empty($this->options['tokens']['access_token'])) {
            $this->options['access_token'] = $this->options['tokens']['access_token'];
        }
        if (!$this->options['access_token']) {
            return $this->setError('Required option "access_token" or "refresh_token" is undefined.');
        }

        try {
            // make net mount key for network mount
            $aToken = $this->options['access_token'];
            $this->netMountKey = md5($aToken . '-' . $this->options['path']);

            $errors = [];
            if ($this->needOnline && !$this->service) {
                $app = new DropboxApp($this->options['app_key'], $this->options['app_secret'], $aToken);
                $this->service = new Dropbox($app);
                // to check access_token
                $this->service->getCurrentAccount();
            }
        } catch (DropboxClientException $e) {
            $errors[] = 'Dropbox error: ' . $e->getMessage();
        } catch (Exception $e) {
            $errors[] = $e->getMessage();
        }

        if ($this->needOnline && !$this->service) {
            $errors[] = 'Dropbox Service could not be loaded.';
        }

        if ($errors) {
            return $this->setError($errors);
        }

        // normalize root path
        $this->options['path'] = strtolower($this->options['path']);
        if ($this->options['path'] == 'root') {
            $this->options['path'] = '/';
        }
        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);

        if (empty($this->options['alias'])) {
            $this->options['alias'] = sprintf($this->options['aliasFormat'], ($this->options['path'] === '/') ? 'Root' : $this->_basename($this->options['path']));
            if (!empty($this->options['netkey'])) {
                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
            }
        }

        $this->rootName = $this->options['alias'];

        if (!empty($this->options['tmpPath'])) {
            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
                $this->tmp = $this->options['tmpPath'];
            }
        }

        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
            $this->tmp = $tmp;
        }

        // This driver dose not support `syncChkAsTs`
        $this->options['syncChkAsTs'] = false;

        // 'lsPlSleep' minmum 10 sec
        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);

        // enable command archive
        $this->options['useRemoteArchive'] = true;

        return true;
    }

    /**
     * Configure after successfull mount.
     *
     * @author Naoki Sawada
     * @throws elFinderAbortException
     */
    protected function configure()
    {
        parent::configure();

        // fallback of $this->tmp
        if (!$this->tmp && $this->tmbPathWritable) {
            $this->tmp = $this->tmbPath;
        }

        if ($this->isMyReload()) {
            //$this->_db_getDirectoryData(false);
        }
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /**
     * Close opened connection.
     **/
    public function umount()
    {
    }

    /**
     * Cache dir contents.
     *
     * @param string $path dir path
     *
     * @return
     * @author Naoki Sawada
     */
    protected function cacheDir($path)
    {
        $this->dirsCache[$path] = [];
        $hasDir = false;

        $res = $this->service->listFolder($path, $this->FETCH_OPTIONS);

        if ($res) {
            $items = $res->getItems()->all();
            foreach ($items as $raw) {
                if ($stat = $this->_db_parseRaw($raw)) {
                    $mountPath = $this->_joinPath($path, $stat['name']);
                    $stat = $this->updateCache($mountPath, $stat);
                    if (empty($stat['hidden']) && $path !== $mountPath) {
                        if (!$hasDir && $stat['mime'] === 'directory') {
                            $hasDir = true;
                        }
                        $this->dirsCache[$path][] = $mountPath;
                    }
                }
            }
        }

        if (isset($this->sessionCache['subdirs'])) {
            $this->sessionCache['subdirs'][$path] = $hasDir;
        }

        return $this->dirsCache[$path];
    }

    /**
     * Recursive files search.
     *
     * @param string $path dir path
     * @param string $q    search string
     * @param array  $mimes
     *
     * @return array
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function doSearch($path, $q, $mimes)
    {
        if (!empty($this->doSearchCurrentQuery['matchMethod']) || $mimes) {
            // has custom match method or mimes, use elFinderVolumeDriver::doSearch()
            return parent::doSearch($path, $q, $mimes);
        }

        $timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;

        $searchRes = $this->service->search($path, $q, ['start' => 0, 'max_results' => 1000]);
        $items = $searchRes->getItems();
        $more = $searchRes->hasMoreItems();
        while ($more) {
            if ($timeout && $timeout < time()) {
                $this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->_path($path));
                break;
            }
            $searchRes = $this->service->search($path, $q, ['start' => $searchRes->getCursor(), 'max_results' => 1000]);
            $more = $searchRes->hasMoreItems();
            $items = $items->merge($searchRes->getItems());
        }

        $result = [];
        foreach ($items as $raw) {
            if ($stat = $this->_db_parseRaw($raw->getMetadata())) {
                $stat = $this->updateCache($stat['path'], $stat);
                if (empty($stat['hidden'])) {
                    $result[] = $stat;
                }
            }
        }

        return $result;
    }

    /**
     * Copy file/recursive copy dir only in current volume.
     * Return new file path or false.
     *
     * @param string $src  source path
     * @param string $dst  destination dir path
     * @param string $name new file name (optionaly)
     *
     * @return string|false
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function copy($src, $dst, $name)
    {
        $srcStat = $this->stat($src);
        $target = $this->_joinPath($dst, $name);
        $tgtStat = $this->stat($target);
        if ($tgtStat) {
            if ($srcStat['mime'] === 'directory') {
                return parent::copy($src, $dst, $name);
            } else {
                $this->_unlink($target);
            }
        }
        $this->clearcache();
        if ($res = $this->_copy($src, $dst, $name)) {
            $this->added[] = $this->stat($target);
            $res = $target;
        }

        return $res;
    }

    /**
     * Remove file/ recursive remove dir.
     *
     * @param string $path  file path
     * @param bool   $force try to remove even if file locked
     * @param bool   $recursive
     *
     * @return bool
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function remove($path, $force = false, $recursive = false)
    {
        $stat = $this->stat($path);
        $stat['realpath'] = $path;
        $this->rmTmb($stat);
        $this->clearcache();

        if (empty($stat)) {
            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
        }

        if (!$force && !empty($stat['locked'])) {
            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
        }

        if ($stat['mime'] == 'directory') {
            if (!$recursive && !$this->_rmdir($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        } else {
            if (!$recursive && !$this->_unlink($path)) {
                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
            }
        }

        $this->removed[] = $stat;

        return true;
    }

    /**
     * Create thumnbnail and return it's URL on success.
     *
     * @param string $path file path
     * @param        $stat
     *
     * @return string|false
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function createTmb($path, $stat)
    {
        if (!$stat || !$this->canCreateTmb($path, $stat)) {
            return false;
        }

        $name = $this->tmbname($stat);
        $tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;

        // copy image into tmbPath so some drivers does not store files on local fs
        if (!$data = $this->_db_getThumbnail($path)) {
            return false;
        }
        if (!file_put_contents($tmb, $data)) {
            return false;
        }

        $tmbSize = $this->tmbSize;

        if (($s = getimagesize($tmb)) == false) {
            return false;
        }

        $result = true;

        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
        } else {
            if ($this->options['tmbCrop']) {

                /* Resize and crop if image bigger than thumbnail */
                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
                }

                if ($result && ($s = getimagesize($tmb)) != false) {
                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
                }
            } else {
                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
            }

            if ($result) {
                $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');

            }
        }

        if (!$result) {
            unlink($tmb);

            return false;
        }

        return $name;
    }

    /**
     * Return thumbnail file name for required file.
     *
     * @param array $stat file stat
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function tmbname($stat)
    {
        $name = $this->driverId . '_';
        if (isset($this->options['tokens']) && is_array($this->options['tokens'])) {
            $name .= $this->options['tokens']['uid'];
        }

        return $name . md5($stat['iid']) . $stat['ts'] . '.png';
    }

    /**
     * Return content URL (for netmout volume driver)
     * If file.url == 1 requests from JavaScript client with XHR.
     *
     * @param string $hash    file hash
     * @param array  $options options array
     *
     * @return bool|string
     * @author Naoki Sawada
     */
    public function getContentUrl($hash, $options = [])
    {
        if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
            return parent::getContentUrl($hash, $options);
        }
        if (!empty($options['temporary'])) {
            // try make temporary file
            $url = parent::getContentUrl($hash, $options);
            if ($url) {
                return $url;
            }
        }
        $file = $this->file($hash);
        if (($file = $this->file($hash)) !== false && (!$file['url'] || $file['url'] == 1)) {
            $path = $this->decode($hash);
            $url = '';
            try {
                $res = $this->service->postToAPI('/sharing/list_shared_links', ['path' => $path, 'direct_only' => true])->getDecodedBody();
                if ($res && !empty($res['links'])) {
                    foreach ($res['links'] as $link) {
                        if (isset($link['link_permissions'])
                            && isset($link['link_permissions']['requested_visibility'])
                            && $link['link_permissions']['requested_visibility']['.tag'] === $this->options['publishPermission']['requested_visibility']) {
                            $url = $link['url'];
                            break;
                        }
                    }
                }
                if (!$url) {
                    $res = $this->service->postToAPI('/sharing/create_shared_link_with_settings', ['path' => $path, 'settings' => $this->options['publishPermission']])->getDecodedBody();
                    if (isset($res['url'])) {
                        $url = $res['url'];
                    }
                }
                if ($url) {
                    $url = str_replace('www.dropbox.com', 'dl.dropboxusercontent.com', $url);
                    $url = str_replace('?dl=0', '', $url);

                    return $url;
                }
            } catch (DropboxClientException $e) {
                return $this->setError('Dropbox error: ' . $e->getMessage());
            }
        }

        return false;
    }

    /**
     * Return debug info for client.
     *
     * @return array
     **/
    public function debug()
    {
        $res = parent::debug();
        if (!empty($this->options['netkey']) && isset($this->options['tokens']) && !empty($this->options['tokens']['uid'])) {
            $res['Dropbox uid'] = $this->options['tokens']['uid'];
            $res['access_token'] = $this->options['tokens']['access_token'];
        }

        return $res;
    }

    /*********************** paths/urls *************************/

    /**
     * Return parent directory path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _dirname($path)
    {
        list($dirname) = $this->_db_splitPath($path);

        return $dirname;
    }

    /**
     * Return file name.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _basename($path)
    {
        list(, $basename) = $this->_db_splitPath($path);

        return $basename;
    }

    /**
     * Join dir name and file name and retur full path.
     *
     * @param string $dir
     * @param string $name
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _joinPath($dir, $name)
    {
        return rtrim($dir, '/') . '/' . strtolower($name);
    }

    /**
     * Return normalized path, this works the same as os.path.normpath() in Python.
     *
     * @param string $path path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _normpath($path)
    {
        return '/' . ltrim($path, '/');
    }

    /**
     * Return file path related to root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    protected function _relpath($path)
    {
        if ($path === $this->root) {
            return '';
        } else {
            return ltrim(substr($path, strlen($this->root)), '/');
        }
    }

    /**
     * Convert path related to root dir into real path.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _abspath($path)
    {
        if ($path === '/') {
            return $this->root;
        } else {
            return $this->_joinPath($this->root, $path);
        }
    }

    /**
     * Return fake path started from root dir.
     *
     * @param string $path file path
     *
     * @return string
     * @author Naoki Sawada
     **/
    protected function _path($path)
    {
        $path = $this->_normpath(substr($path, strlen($this->root)));

        return $path;
    }

    /**
     * Return true if $path is children of $parent.
     *
     * @param string $path   path to check
     * @param string $parent parent path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _inpath($path, $parent)
    {
        return $path == $parent || strpos($path, $parent . '/') === 0;
    }

    /***************** file stat ********************/
    /**
     * Return stat for given path.
     * Stat contains following fields:
     * - (int)    size    file size in b. required
     * - (int)    ts      file modification time in unix time. required
     * - (string) mime    mimetype. required for folders, others - optionally
     * - (bool)   read    read permissions. required
     * - (bool)   write   write permissions. required
     * - (bool)   locked  is object locked. optionally
     * - (bool)   hidden  is object hidden. optionally
     * - (string) alias   for symlinks - link target path relative to root path. optionally
     * - (string) target  for symlinks - link target path. optionally.
     * If file does not exists - returns empty array or false.
     *
     * @param string $path file path
     *
     * @return array|false
     * @author Dmitry (dio) Levashov
     **/
    protected function _stat($path)
    {
        if ($raw = $this->_db_getFile($path)) {
            return $this->_db_parseRaw($raw);
        }

        return false;
    }

    /**
     * Return true if path is dir and has at least one childs directory.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _subdirs($path)
    {
        $hasdir = false;

        try {
            $res = $this->service->listFolder($path);
            if ($res) {
                $items = $res->getItems();
                foreach ($items as $raw) {
                    if ($raw instanceof FolderMetadata) {
                        $hasdir = true;
                        break;
                    }
                }
            }
        } catch (DropboxClientException $e) {
            $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return $hasdir;
    }

    /**
     * Return object width and height
     * Ususaly used for images, but can be realize for video etc...
     *
     * @param string $path file path
     * @param string $mime file mime type
     *
     * @return string
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function _dimensions($path, $mime)
    {
        if (strpos($mime, 'image') !== 0) {
            return '';
        }
        $ret = '';

        if ($data = $this->_getContents($path)) {
            $tmp = $this->getTempFile();
            file_put_contents($tmp, $data);
            $size = getimagesize($tmp);
            if ($size) {
                $ret = array('dim' => $size[0] . 'x' . $size[1]);
                $srcfp = fopen($tmp, 'rb');
                $target = isset(elFinder::$currentArgs['target'])? elFinder::$currentArgs['target'] : '';
                if ($subImgLink = $this->getSubstituteImgLink($target, $size, $srcfp)) {
                    $ret['url'] = $subImgLink;
                }
            }
        }

        return $ret;
    }

    /******************** file/dir content *********************/

    /**
     * Return files list in directory.
     *
     * @param string $path dir path
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function _scandir($path)
    {
        return isset($this->dirsCache[$path])
            ? $this->dirsCache[$path]
            : $this->cacheDir($path);
    }

    /**
     * Open file and return file pointer.
     *
     * @param string $path  file path
     * @param bool   $write open file for writing
     *
     * @return resource|false
     * @author Naoki Sawada
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        if ($mode === 'rb' || $mode === 'r') {
            if ($link = $this->service->getTemporaryLink($path)) {
                $access_token = $this->service->getAccessToken();
                if ($access_token) {
                    $data = array(
                        'target' => $link->getLink(),
                        'headers' => array('Authorization: Bearer ' . $access_token),
                    );

                    // to support range request
                    if (func_num_args() > 2) {
                        $opts = func_get_arg(2);
                    } else {
                        $opts = array();
                    }
                    if (!empty($opts['httpheaders'])) {
                        $data['headers'] = array_merge($opts['httpheaders'], $data['headers']);
                    }

                    return elFinder::getStreamByUrl($data);
                }
            }
        }

        return false;
    }

    /**
     * Close opened file.
     *
     * @param resource $fp file pointer
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _fclose($fp, $path = '')
    {
        is_resource($fp) && fclose($fp);
    }

    /********************  file/dir manipulations *************************/

    /**
     * Create dir and return created dir path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new directory name
     *
     * @return string|bool
     * @author Naoki Sawada
     **/
    protected function _mkdir($path, $name)
    {
        try {
            return $this->service->createFolder($this->_db_joinName($path, $name))->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }
    }

    /**
     * Create file and return it's path or false on failed.
     *
     * @param string $path parent dir path
     * @param string $name new file name
     *
     * @return string|bool
     * @author Naoki Sawada
     **/
    protected function _mkfile($path, $name)
    {
        return $this->_save($this->tmpfile(), $path, $name, []);
    }

    /**
     * Create symlink. FTP driver does not support symlinks.
     *
     * @param string $target link target
     * @param string $path   symlink path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _symlink($target, $path, $name)
    {
        return false;
    }

    /**
     * Copy file into another file.
     *
     * @param string $source    source file path
     * @param string $targetDir target directory path
     * @param string $name      new file name
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _copy($source, $targetDir, $name)
    {
        try {
            $this->service->copy($source, $this->_db_joinName($targetDir, $name))->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Move file into another parent dir.
     * Return new file path or false.
     *
     * @param string $source source file path
     * @param string $target target dir path
     * @param string $name   file name
     *
     * @return string|bool
     * @author Naoki Sawada
     **/
    protected function _move($source, $targetDir, $name)
    {
        try {
            return $this->service->move($source, $this->_db_joinName($targetDir, $name))->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }
    }

    /**
     * Remove file.
     *
     * @param string $path file path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _unlink($path)
    {
        try {
            $this->service->delete($path);

            return true;
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return true;
    }

    /**
     * Remove dir.
     *
     * @param string $path dir path
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _rmdir($path)
    {
        return $this->_unlink($path);
    }

    /**
     * Create new file and write into it from file pointer.
     * Return new file path or false on error.
     *
     * @param resource $fp   file pointer
     * @param string   $dir  target dir path
     * @param string   $name file name
     * @param array    $stat file stat (required by some virtual fs)
     *
     * @return bool|string
     * @author Naoki Sawada
     **/
    protected function _save($fp, $path, $name, $stat)
    {
        try {
            $info = stream_get_meta_data($fp);
            if (empty($info['uri']) || preg_match('#^[a-z0-9.-]+://#', $info['uri'])) {
                if ($filepath = $this->getTempFile()) {
                    $_fp = fopen($filepath, 'wb');
                    stream_copy_to_stream($fp, $_fp);
                    fclose($_fp);
                }
            } else {
                $filepath = $info['uri'];
            }
            $dropboxFile = new DropboxFile($filepath);
            if ($name === '') {
                $fullpath = $path;
            } else {
                $fullpath = $this->_db_joinName($path, $name);
            }

            return $this->service->upload($dropboxFile, $fullpath, ['mode' => 'overwrite'])->getPathLower();
        } catch (DropboxClientException $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }
    }

    /**
     * Get file contents.
     *
     * @param string $path file path
     *
     * @return string|false
     * @author Naoki Sawada
     **/
    protected function _getContents($path)
    {
        $contents = '';

        try {
            $file = $this->service->download($path);
            $contents = $file->getContents();
        } catch (Exception $e) {
            return $this->setError('Dropbox error: ' . $e->getMessage());
        }

        return $contents;
    }

    /**
     * Write a string to a file.
     *
     * @param string $path    file path
     * @param string $content new file content
     *
     * @return bool
     * @author Naoki Sawada
     **/
    protected function _filePutContents($path, $content)
    {
        $res = false;

        if ($local = $this->getTempFile($path)) {
            if (file_put_contents($local, $content, LOCK_EX) !== false
                && ($fp = fopen($local, 'rb'))) {
                clearstatcache();
                $name = '';
                $stat = $this->stat($path);
                if ($stat) {
                    // keep real name
                    $path = $this->_dirname($path);
                    $name = $stat['name'];
                }
                $res = $this->_save($fp, $path, $name, []);
                fclose($fp);
            }
            file_exists($local) && unlink($local);
        }

        return $res;
    }

    /**
     * Detect available archivers.
     **/
    protected function _checkArchivers()
    {
        // die('Not yet implemented. (_checkArchivers)');
        return [];
    }

    /**
     * chmod implementation.
     *
     * @return bool
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * Unpack archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     **/
    protected function _unpack($path, $arc)
    {
        die('Not yet implemented. (_unpack)');
        //return false;
    }

    /**
     * Recursive symlinks search.
     *
     * @param string $path file/dir path
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    protected function _findSymlinks($path)
    {
        die('Not yet implemented. (_findSymlinks)');
    }

    /**
     * Extract files from archive.
     *
     * @param string $path archive path
     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
     *
     * @return true
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _extract($path, $arc)
    {
        die('Not yet implemented. (_extract)');
    }

    /**
     * Create archive and return its path.
     *
     * @param string $dir   target dir
     * @param array  $files files names list
     * @param string $name  archive name
     * @param array  $arc   archiver options
     *
     * @return string|bool
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        die('Not yet implemented. (_archive)');
    }
} // END class
lib/php/elFinder.class.php000064400000555007147361034400011464 0ustar00<?php

/**
 * elFinder - file manager for web.
 * Core class.
 *
 * @package elfinder
 * @author  Dmitry (dio) Levashov
 * @author  Troex Nevelin
 * @author  Alexey Sukhotin
 **/
class elFinder
{

    /**
     * API version number
     *
     * @var float
     **/
    protected static $ApiVersion = 2.1;

    /**
     * API version number
     *
     * @deprecated
     * @var string
     **/
    protected $version;

    /**
     * API revision that this connector supports all functions
     *
     * @var integer
     */
    protected static $ApiRevision = 60;

    /**
     * Storages (root dirs)
     *
     * @var array
     **/
    protected $volumes = array();

    /**
     * elFinder instance
     *
     * @var object
     */
    public static $instance = null;

    /**
     * Current request args
     *
     * @var array
     */
    public static $currentArgs = array();

    /**
     * Network mount drivers
     *
     * @var array
     */
    public static $netDrivers = array();

    /**
     * elFinder global locale
     *
     * @var string
     */
    public static $locale = '';

    /**
     * elFinderVolumeDriver default mime.type file path
     *
     * @var string
     */
    public static $defaultMimefile = '';

    /**
     * A file save destination path when a temporary content URL is required
     * on a network volume or the like
     * It can be overwritten by volume route setting
     *
     * @var string
     */
    public static $tmpLinkPath = '';

    /**
     * A file save destination URL when a temporary content URL is required
     * on a network volume or the like
     * It can be overwritten by volume route setting
     *
     * @var string
     */
    public static $tmpLinkUrl = '';

    /**
     * Temporary content URL lifetime (seconds)
     *
     * @var integer
     */
    public static $tmpLinkLifeTime = 3600;

    /**
     * MIME type list handled as a text file
     *
     * @var array
     */
    public static $textMimes = array(
        'application/dash+xml',
        'application/docbook+xml',
        'application/javascript',
        'application/json',
        'application/plt',
        'application/sat',
        'application/sql',
        'application/step',
        'application/vnd.hp-hpgl',
        'application/x-awk',
        'application/x-config',
        'application/x-csh',
        'application/x-empty',
        'application/x-mpegurl',
        'application/x-perl',
        'application/x-php',
        'application/x-web-config',
        'application/xhtml+xml',
        'application/xml',
        'audio/x-mp3-playlist',
        'image/cgm',
        'image/svg+xml',
        'image/vnd.dxf',
        'model/iges'
    );

    /**
     * Maximum memory size to be extended during GD processing
     * (0: not expanded, -1: unlimited or memory size notation)
     *
     * @var integer|string
     */
    public static $memoryLimitGD = 0;

    /**
     * Path of current request flag file for abort check
     *
     * @var string
     */
    protected static $abortCheckFile = null;

    /**
     * elFinder session wrapper object
     *
     * @var elFinderSessionInterface
     */
    protected $session;

    /**
     * elFinder global sessionCacheKey
     *
     * @deprecated
     * @var string
     */
    public static $sessionCacheKey = '';

    /**
     * Is session closed
     *
     * @deprecated
     * @var bool
     */
    private static $sessionClosed = false;

    /**
     * elFinder base64encodeSessionData
     * elFinder save session data as `UTF-8`
     * If the session storage mechanism of the system does not allow `UTF-8`
     * And it must be `true` option 'base64encodeSessionData' of elFinder
     * WARNING: When enabling this option, if saving the data passed from the user directly to the session variable,
     * it make vulnerable to the object injection attack, so use it carefully.
     * see https://github.com/Studio-42/elFinder/issues/2345
     *
     * @var bool
     */
    protected static $base64encodeSessionData = false;

    /**
     * elFinder common tempraly path
     *
     * @var string
     * @default "./.tmp" or sys_get_temp_dir()
     **/
    protected static $commonTempPath = '';

    /**
     * Callable function for URL upload filter
     * The first argument is a URL and the second argument is an instance of the elFinder class
     * A filter should be return true (to allow) / false (to disallow)
     *
     * @var callable
     * @default null
     */
    protected $urlUploadFilter = null;

    /**
     * Connection flag files path that connection check of current request
     *
     * @var string
     * @default value of $commonTempPath
     */
    protected static $connectionFlagsPath = '';

    /**
     * Additional volume root options for network mounting volume
     *
     * @var array
     */
    protected $optionsNetVolumes = array();

    /**
     * Session key of net mount volumes
     *
     * @deprecated
     * @var string
     */
    protected $netVolumesSessionKey = '';

    /**
     * Mounted volumes count
     * Required to create unique volume id
     *
     * @var int
     **/
    public static $volumesCnt = 1;

    /**
     * Default root (storage)
     *
     * @var elFinderVolumeDriver
     **/
    protected $default = null;

    /**
     * Commands and required arguments list
     *
     * @var array
     **/
    protected $commands = array(
        'abort' => array('id' => true),
        'archive' => array('targets' => true, 'type' => true, 'mimes' => false, 'name' => false),
        'callback' => array('node' => true, 'json' => false, 'bind' => false, 'done' => false),
        'chmod' => array('targets' => true, 'mode' => true),
        'dim' => array('target' => true, 'substitute' => false),
        'duplicate' => array('targets' => true, 'suffix' => false),
        'editor' => array('name' => true, 'method' => true, 'args' => false),
        'extract' => array('target' => true, 'mimes' => false, 'makedir' => false),
        'file' => array('target' => true, 'download' => false, 'cpath' => false, 'onetime' => false),
        'get' => array('target' => true, 'conv' => false),
        'info' => array('targets' => true, 'compare' => false),
        'ls' => array('target' => true, 'mimes' => false, 'intersect' => false),
        'mkdir' => array('target' => true, 'name' => false, 'dirs' => false),
        'mkfile' => array('target' => true, 'name' => true, 'mimes' => false),
        'netmount' => array('protocol' => true, 'host' => true, 'path' => false, 'port' => false, 'user' => false, 'pass' => false, 'alias' => false, 'options' => false),
        'open' => array('target' => false, 'tree' => false, 'init' => false, 'mimes' => false, 'compare' => false),
        'parents' => array('target' => true, 'until' => false),
        'paste' => array('dst' => true, 'targets' => true, 'cut' => false, 'mimes' => false, 'renames' => false, 'hashes' => false, 'suffix' => false),
        'put' => array('target' => true, 'content' => '', 'mimes' => false, 'encoding' => false),
        'rename' => array('target' => true, 'name' => true, 'mimes' => false, 'targets' => false, 'q' => false),
        'resize' => array('target' => true, 'width' => false, 'height' => false, 'mode' => false, 'x' => false, 'y' => false, 'degree' => false, 'quality' => false, 'bg' => false),
        'rm' => array('targets' => true),
        'search' => array('q' => true, 'mimes' => false, 'target' => false, 'type' => false),
        'size' => array('targets' => true),
        'subdirs' => array('targets' => true),
        'tmb' => array('targets' => true),
        'tree' => array('target' => true),
        'upload' => array('target' => true, 'FILES' => true, 'mimes' => false, 'html' => false, 'upload' => false, 'name' => false, 'upload_path' => false, 'chunk' => false, 'cid' => false, 'node' => false, 'renames' => false, 'hashes' => false, 'suffix' => false, 'mtime' => false, 'overwrite' => false, 'contentSaveId' => false),
        'url' => array('target' => true, 'options' => false),
        'zipdl' => array('targets' => true, 'download' => false)
    );

    /**
     * Plugins instance
     *
     * @var array
     **/
    protected $plugins = array();

    /**
     * Commands listeners
     *
     * @var array
     **/
    protected $listeners = array();

    /**
     * script work time for debug
     *
     * @var string
     **/
    protected $time = 0;
    /**
     * Is elFinder init correctly?
     *
     * @var bool
     **/
    protected $loaded = false;
    /**
     * Send debug to client?
     *
     * @var string
     **/
    protected $debug = false;

    /**
     * Call `session_write_close()` before exec command?
     *
     * @var bool
     */
    protected $sessionCloseEarlier = true;

    /**
     * SESSION use commands @see __construct()
     *
     * @var array
     */
    protected $sessionUseCmds = array();

    /**
     * session expires timeout
     *
     * @var int
     **/
    protected $timeout = 0;

    /**
     * Temp dir path for Upload
     *
     * @var string
     */
    protected $uploadTempPath = '';

    /**
     * Max allowed archive files size (0 - no limit)
     *
     * @var integer
     */
    protected $maxArcFilesSize = 0;

    /**
     * undocumented class variable
     *
     * @var string
     **/
    protected $uploadDebug = '';

    /**
     * Max allowed numbar of targets (0 - no limit)
     *
     * @var integer
     */
    public $maxTargets = 1000;

    /**
     * Errors from PHP
     *
     * @var array
     **/
    public static $phpErrors = array();

    /**
     * Errors from not mounted volumes
     *
     * @var array
     **/
    public $mountErrors = array();


    /**
     * Archivers cache
     *
     * @var array
     */
    public static $archivers = array();

    /**
     * URL for callback output window for CORS
     * redirect to this URL when callback output
     *
     * @var string URL
     */
    protected $callbackWindowURL = '';

    /**
     * hash of items to unlock on command completion
     *
     * @var array hashes
     */
    protected $autoUnlocks = array();

    /**
     * Item locking expiration (seconds)
     * Default: 3600 secs
     *
     * @var integer
     */
    protected $itemLockExpire = 3600;

    /**
     * Additional request querys
     *
     * @var array|null
     */
    protected $customData = null;

    /**
     * Ids to remove of session var "urlContentSaveIds" for contents uploading by URL
     *
     * @var array
     */
    protected $removeContentSaveIds = array();

    /**
     * LAN class allowed when uploading via URL
     * 
     * Array keys are 'local', 'private_a', 'private_b', 'private_c' and 'link'
     * 
     * local:     127.0.0.0/8
     * private_a: 10.0.0.0/8
     * private_b: 172.16.0.0/12
     * private_c: 192.168.0.0/16
     * link:      169.254.0.0/16
     *
     * @var        array
     */
    protected $uploadAllowedLanIpClasses = array();

    /**
     * Flag of throw Error on exec()
     *
     * @var boolean
     */
    protected $throwErrorOnExec = false;

    /**
     * Default params of toastParams
     *
     * @var        array
     */
    protected $toastParamsDefault = array(
        'mode'   => 'warning',
        'prefix' => ''
    );

    /**
     * Toast params of runtime notification
     *
     * @var        array
     */
    private $toastParams = array();

    /**
     * Toast messages of runtime notification
     *
     * @var        array
     */
    private $toastMessages = array();

    /**
     * Optional UTF-8 encoder
     *
     * @var        callable || null
     */
    private $utf8Encoder = null;

    /**
     * Seekable URL file pointer ids -  for getStreamByUrl()
     *
     * @var        array
     */
    private static $seekableUrlFps = array();

    // Errors messages
    const ERROR_ACCESS_DENIED = 'errAccess';
    const ERROR_ARC_MAXSIZE = 'errArcMaxSize';
    const ERROR_ARC_SYMLINKS = 'errArcSymlinks';
    const ERROR_ARCHIVE = 'errArchive';
    const ERROR_ARCHIVE_EXEC = 'errArchiveExec';
    const ERROR_ARCHIVE_TYPE = 'errArcType';
    const ERROR_CONF = 'errConf';
    const ERROR_CONF_NO_JSON = 'errJSON';
    const ERROR_CONF_NO_VOL = 'errNoVolumes';
    const ERROR_CONV_UTF8 = 'errConvUTF8';
    const ERROR_COPY = 'errCopy';
    const ERROR_COPY_FROM = 'errCopyFrom';
    const ERROR_COPY_ITSELF = 'errCopyInItself';
    const ERROR_COPY_TO = 'errCopyTo';
    const ERROR_CREATING_TEMP_DIR = 'errCreatingTempDir';
    const ERROR_DIR_NOT_FOUND = 'errFolderNotFound';
    const ERROR_EXISTS = 'errExists';        // 'File named "$1" already exists.'
    const ERROR_EXTRACT = 'errExtract';
    const ERROR_EXTRACT_EXEC = 'errExtractExec';
    const ERROR_FILE_NOT_FOUND = 'errFileNotFound';     // 'File not found.'
    const ERROR_FTP_DOWNLOAD_FILE = 'errFtpDownloadFile';
    const ERROR_FTP_MKDIR = 'errFtpMkdir';
    const ERROR_FTP_UPLOAD_FILE = 'errFtpUploadFile';
    const ERROR_INV_PARAMS = 'errCmdParams';
    const ERROR_INVALID_DIRNAME = 'errInvDirname';    // 'Invalid folder name.'
    const ERROR_INVALID_NAME = 'errInvName';       // 'Invalid file name.'
    const ERROR_LOCKED = 'errLocked';        // '"$1" is locked and can not be renamed, moved or removed.'
    const ERROR_MAX_TARGTES = 'errMaxTargets'; // 'Max number of selectable items is $1.'
    const ERROR_MKDIR = 'errMkdir';
    const ERROR_MKFILE = 'errMkfile';
    const ERROR_MKOUTLINK = 'errMkOutLink';        // 'Unable to create a link to outside the volume root.'
    const ERROR_MOVE = 'errMove';
    const ERROR_NETMOUNT = 'errNetMount';
    const ERROR_NETMOUNT_FAILED = 'errNetMountFailed';
    const ERROR_NETMOUNT_NO_DRIVER = 'errNetMountNoDriver';
    const ERROR_NETUNMOUNT = 'errNetUnMount';
    const ERROR_NOT_ARCHIVE = 'errNoArchive';
    const ERROR_NOT_DIR = 'errNotFolder';
    const ERROR_NOT_FILE = 'errNotFile';
    const ERROR_NOT_REPLACE = 'errNotReplace';       // Object "$1" already exists at this location and can not be replaced with object of another type.
    const ERROR_NOT_UTF8_CONTENT = 'errNotUTF8Content';
    const ERROR_OPEN = 'errOpen';
    const ERROR_PERM_DENIED = 'errPerm';
    const ERROR_REAUTH_REQUIRE = 'errReauthRequire';  // 'Re-authorization is required.'
    const ERROR_RENAME = 'errRename';
    const ERROR_REPLACE = 'errReplace';          // 'Unable to replace "$1".'
    const ERROR_RESIZE = 'errResize';
    const ERROR_RESIZESIZE = 'errResizeSize';
    const ERROR_RM = 'errRm';               // 'Unable to remove "$1".'
    const ERROR_RM_SRC = 'errRmSrc';            // 'Unable remove source file(s)'
    const ERROR_SAVE = 'errSave';
    const ERROR_SEARCH_TIMEOUT = 'errSearchTimeout';    // 'Timed out while searching "$1". Search result is partial.'
    const ERROR_SESSION_EXPIRES = 'errSessionExpires';
    const ERROR_TRGDIR_NOT_FOUND = 'errTrgFolderNotFound'; // 'Target folder "$1" not found.'
    const ERROR_UNKNOWN = 'errUnknown';
    const ERROR_UNKNOWN_CMD = 'errUnknownCmd';
    const ERROR_UNSUPPORT_TYPE = 'errUsupportType';
    const ERROR_UPLOAD = 'errUpload';           // 'Upload error.'
    const ERROR_UPLOAD_FILE = 'errUploadFile';       // 'Unable to upload "$1".'
    const ERROR_UPLOAD_FILE_MIME = 'errUploadMime';       // 'File type not allowed.'
    const ERROR_UPLOAD_FILE_SIZE = 'errUploadFileSize';   // 'File exceeds maximum allowed size.'
    const ERROR_UPLOAD_NO_FILES = 'errUploadNoFiles';    // 'No files found for upload.'
    const ERROR_UPLOAD_TEMP = 'errUploadTemp';       // 'Unable to make temporary file for upload.'
    const ERROR_UPLOAD_TOTAL_SIZE = 'errUploadTotalSize';  // 'Data exceeds the maximum allowed size.'
    const ERROR_UPLOAD_TRANSFER = 'errUploadTransfer';   // '"$1" transfer error.'
    const ERROR_MAX_MKDIRS = 'errMaxMkdirs'; // 'You can create up to $1 folders at one time.'

    /**
     * Constructor
     *
     * @param  array  elFinder and roots configurations
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct($opts)
    {
        // set default_charset
        if (version_compare(PHP_VERSION, '5.6', '>=')) {
            if (($_val = ini_get('iconv.internal_encoding')) && strtoupper($_val) !== 'UTF-8') {
                ini_set('iconv.internal_encoding', '');
            }
            if (($_val = ini_get('mbstring.internal_encoding')) && strtoupper($_val) !== 'UTF-8') {
                ini_set('mbstring.internal_encoding', '');
            }
            if (($_val = ini_get('internal_encoding')) && strtoupper($_val) !== 'UTF-8') {
                ini_set('internal_encoding', '');
            }
        } else {
            if (function_exists('iconv_set_encoding') && strtoupper(iconv_get_encoding('internal_encoding')) !== 'UTF-8') {
                iconv_set_encoding('internal_encoding', 'UTF-8');
            }
            if (function_exists('mb_internal_encoding') && strtoupper(mb_internal_encoding()) !== 'UTF-8') {
                mb_internal_encoding('UTF-8');
            }
        }
        ini_set('default_charset', 'UTF-8');

        // define accept constant of server commands path
        !defined('ELFINDER_TAR_PATH') && define('ELFINDER_TAR_PATH', 'tar');
        !defined('ELFINDER_GZIP_PATH') && define('ELFINDER_GZIP_PATH', 'gzip');
        !defined('ELFINDER_BZIP2_PATH') && define('ELFINDER_BZIP2_PATH', 'bzip2');
        !defined('ELFINDER_XZ_PATH') && define('ELFINDER_XZ_PATH', 'xz');
        !defined('ELFINDER_ZIP_PATH') && define('ELFINDER_ZIP_PATH', 'zip');
        !defined('ELFINDER_UNZIP_PATH') && define('ELFINDER_UNZIP_PATH', 'unzip');
        !defined('ELFINDER_RAR_PATH') && define('ELFINDER_RAR_PATH', 'rar');
        // Create archive in RAR4 format even when using RAR5 library (true or false)
        !defined('ELFINDER_RAR_MA4') && define('ELFINDER_RAR_MA4', false);
        !defined('ELFINDER_UNRAR_PATH') && define('ELFINDER_UNRAR_PATH', 'unrar');
        !defined('ELFINDER_7Z_PATH') && define('ELFINDER_7Z_PATH', (substr(PHP_OS, 0, 3) === 'WIN') ? '7z' : '7za');
        !defined('ELFINDER_CONVERT_PATH') && define('ELFINDER_CONVERT_PATH', 'convert');
        !defined('ELFINDER_IDENTIFY_PATH') && define('ELFINDER_IDENTIFY_PATH', 'identify');
        !defined('ELFINDER_EXIFTRAN_PATH') && define('ELFINDER_EXIFTRAN_PATH', 'exiftran');
        !defined('ELFINDER_JPEGTRAN_PATH') && define('ELFINDER_JPEGTRAN_PATH', 'jpegtran');
        !defined('ELFINDER_FFMPEG_PATH') && define('ELFINDER_FFMPEG_PATH', 'ffmpeg');

        !defined('ELFINDER_DISABLE_ZIPEDITOR') && define('ELFINDER_DISABLE_ZIPEDITOR', false);

        // enable(true)/disable(false) handling postscript on ImageMagick
        // Should be `false` as long as there is a Ghostscript vulnerability
        // see https://artifex.com/news/ghostscript-security-resolved/
        !defined('ELFINDER_IMAGEMAGICK_PS') && define('ELFINDER_IMAGEMAGICK_PS', false);

        // for backward compat
        $this->version = (string)self::$ApiVersion;

        // set error handler of WARNING, NOTICE
        $errLevel = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_STRICT | E_RECOVERABLE_ERROR;
        if (defined('E_DEPRECATED')) {
            $errLevel |= E_DEPRECATED | E_USER_DEPRECATED;
        }
        set_error_handler('elFinder::phpErrorHandler', $errLevel);

        // Associative array of file pointers to close at the end of script: ['temp file pointer' => true]
        $GLOBALS['elFinderTempFps'] = array();
        // Associative array of files to delete at the end of script: ['temp file path' => true]
        $GLOBALS['elFinderTempFiles'] = array();
        // regist Shutdown function
        register_shutdown_function(array('elFinder', 'onShutdown'));

        // convert PATH_INFO to GET query
        if (!empty($_SERVER['PATH_INFO'])) {
            $_ps = explode('/', trim($_SERVER['PATH_INFO'], '/'));
            if (!isset($_GET['cmd'])) {
                $_cmd = $_ps[0];
                if (isset($this->commands[$_cmd])) {
                    $_GET['cmd'] = $_cmd;
                    $_i = 1;
                    foreach (array_keys($this->commands[$_cmd]) as $_k) {
                        if (isset($_ps[$_i])) {
                            if (!isset($_GET[$_k])) {
                                $_GET[$_k] = $_ps[$_i++];
                            }
                        } else {
                            break;
                        }
                    }
                }
            }
        }

        // set elFinder instance
        elFinder::$instance = $this;

        // setup debug mode
        $this->debug = (isset($opts['debug']) && $opts['debug'] ? true : false);
        if ($this->debug) {
            error_reporting(defined('ELFINDER_DEBUG_ERRORLEVEL') ? ELFINDER_DEBUG_ERRORLEVEL : -1);
            ini_set('display_errors', '1');
            // clear output buffer and stop output filters
            while (ob_get_level() && ob_end_clean()) {
            }
        }

        if (!interface_exists('elFinderSessionInterface')) {
            include_once dirname(__FILE__) . '/elFinderSessionInterface.php';
        }

        // session handler
        if (!empty($opts['session']) && $opts['session'] instanceof elFinderSessionInterface) {
            $this->session = $opts['session'];
        } else {
            $sessionOpts = array(
                'base64encode' => !empty($opts['base64encodeSessionData']),
                'keys' => array(
                    'default' => !empty($opts['sessionCacheKey']) ? $opts['sessionCacheKey'] : 'elFinderCaches',
                    'netvolume' => !empty($opts['netVolumesSessionKey']) ? $opts['netVolumesSessionKey'] : 'elFinderNetVolumes'
                )
            );
            if (!class_exists('elFinderSession')) {
                include_once dirname(__FILE__) . '/elFinderSession.php';
            }
            $this->session = new elFinderSession($sessionOpts);
        }
        // try session start | restart
        $this->session->start();

        // 'netmount' added to handle requests synchronously on unmount
        $sessionUseCmds = array('netmount');
        if (isset($opts['sessionUseCmds']) && is_array($opts['sessionUseCmds'])) {
            $sessionUseCmds = array_merge($sessionUseCmds, $opts['sessionUseCmds']);
        }

        // set self::$volumesCnt by HTTP header "X-elFinder-VolumesCntStart"
        if (isset($_SERVER['HTTP_X_ELFINDER_VOLUMESCNTSTART']) && ($volumesCntStart = intval($_SERVER['HTTP_X_ELFINDER_VOLUMESCNTSTART']))) {
            self::$volumesCnt = $volumesCntStart;
        }

        $this->time = $this->utime();
        $this->sessionCloseEarlier = isset($opts['sessionCloseEarlier']) ? (bool)$opts['sessionCloseEarlier'] : true;
        $this->sessionUseCmds = array_flip($sessionUseCmds);
        $this->timeout = (isset($opts['timeout']) ? $opts['timeout'] : 0);
        $this->uploadTempPath = (isset($opts['uploadTempPath']) ? $opts['uploadTempPath'] : '');
        $this->callbackWindowURL = (isset($opts['callbackWindowURL']) ? $opts['callbackWindowURL'] : '');
        $this->maxTargets = (isset($opts['maxTargets']) ? intval($opts['maxTargets']) : $this->maxTargets);
        elFinder::$commonTempPath = (isset($opts['commonTempPath']) ? realpath($opts['commonTempPath']) : dirname(__FILE__) . '/.tmp');
        if (!is_writable(elFinder::$commonTempPath)) {
            elFinder::$commonTempPath = sys_get_temp_dir();
            if (!is_writable(elFinder::$commonTempPath)) {
                elFinder::$commonTempPath = '';
            }
        }
        if (isset($opts['connectionFlagsPath']) && is_writable($opts['connectionFlagsPath'] = realpath($opts['connectionFlagsPath']))) {
            elFinder::$connectionFlagsPath = $opts['connectionFlagsPath'];
        } else {
            elFinder::$connectionFlagsPath = elFinder::$commonTempPath;
        }

        if (!empty($opts['tmpLinkPath'])) {
            elFinder::$tmpLinkPath = realpath($opts['tmpLinkPath']);
        }
        if (!empty($opts['tmpLinkUrl'])) {
            elFinder::$tmpLinkUrl = $opts['tmpLinkUrl'];
        }
        if (!empty($opts['tmpLinkLifeTime'])) {
            elFinder::$tmpLinkLifeTime = $opts['tmpLinkLifeTime'];
        }
        if (!empty($opts['textMimes']) && is_array($opts['textMimes'])) {
            elfinder::$textMimes = $opts['textMimes'];
        }
        if (!empty($opts['urlUploadFilter'])) {
            $this->urlUploadFilter = $opts['urlUploadFilter'];
        }
        $this->maxArcFilesSize = isset($opts['maxArcFilesSize']) ? intval($opts['maxArcFilesSize']) : 0;
        $this->optionsNetVolumes = (isset($opts['optionsNetVolumes']) && is_array($opts['optionsNetVolumes'])) ? $opts['optionsNetVolumes'] : array();
        if (isset($opts['itemLockExpire'])) {
            $this->itemLockExpire = intval($opts['itemLockExpire']);
        }

        if (!empty($opts['uploadAllowedLanIpClasses'])) {
            $this->uploadAllowedLanIpClasses = array_flip($opts['uploadAllowedLanIpClasses']);
        }

        // deprecated settings
        $this->netVolumesSessionKey = !empty($opts['netVolumesSessionKey']) ? $opts['netVolumesSessionKey'] : 'elFinderNetVolumes';
        self::$sessionCacheKey = !empty($opts['sessionCacheKey']) ? $opts['sessionCacheKey'] : 'elFinderCaches';

        // check session cache
        $_optsMD5 = md5(json_encode($opts['roots']));
        if ($this->session->get('_optsMD5') !== $_optsMD5) {
            $this->session->set('_optsMD5', $_optsMD5);
        }

        // setlocale and global locale regists to elFinder::locale
        self::$locale = !empty($opts['locale']) ? $opts['locale'] : (substr(PHP_OS, 0, 3) === 'WIN' ? 'C' : 'en_US.UTF-8');
        if (false === setlocale(LC_ALL, self::$locale)) {
            self::$locale = setlocale(LC_ALL, '0');
        }

        // set defaultMimefile
        elFinder::$defaultMimefile = isset($opts['defaultMimefile']) ? $opts['defaultMimefile'] : '';

        // set memoryLimitGD
        elFinder::$memoryLimitGD = isset($opts['memoryLimitGD']) ? $opts['memoryLimitGD'] : 0;

        // set flag of throwErrorOnExec
        // `true` need `try{}` block for `$connector->run();`
        $this->throwErrorOnExec = !empty($opts['throwErrorOnExec']);

        // set archivers
        elFinder::$archivers = isset($opts['archivers']) && is_array($opts['archivers']) ? $opts['archivers'] : array();

        // set utf8Encoder
        if (isset($opts['utf8Encoder']) && is_callable($opts['utf8Encoder'])) {
            $this->utf8Encoder = $opts['utf8Encoder'];
        }

        // bind events listeners
        if (!empty($opts['bind']) && is_array($opts['bind'])) {
            $_req = $_SERVER["REQUEST_METHOD"] == 'POST' ? $_POST : $_GET;
            $_reqCmd = isset($_req['cmd']) ? $_req['cmd'] : '';
            foreach ($opts['bind'] as $cmd => $handlers) {
                $doRegist = (strpos($cmd, '*') !== false);
                if (!$doRegist) {
                    $doRegist = ($_reqCmd && in_array($_reqCmd, array_map('self::getCmdOfBind', explode(' ', $cmd))));
                }
                if ($doRegist) {
                    // for backward compatibility
                    if (!is_array($handlers)) {
                        $handlers = array($handlers);
                    } else {
                        if (count($handlers) === 2 && is_callable($handlers)) {
                            $handlers = array($handlers);
                        }
                    }
                    foreach ($handlers as $handler) {
                        if ($handler) {
                            if (is_string($handler) && strpos($handler, '.')) {
                                list($_domain, $_name, $_method) = array_pad(explode('.', $handler), 3, '');
                                if (strcasecmp($_domain, 'plugin') === 0) {
                                    if ($plugin = $this->getPluginInstance($_name, isset($opts['plugin'][$_name]) ? $opts['plugin'][$_name] : array())
                                        and method_exists($plugin, $_method)) {
                                        $this->bind($cmd, array($plugin, $_method));
                                    }
                                }
                            } else {
                                $this->bind($cmd, $handler);
                            }
                        }
                    }
                }
            }
        }

        if (!isset($opts['roots']) || !is_array($opts['roots'])) {
            $opts['roots'] = array();
        }

        // try to enable elFinderVolumeFlysystemZipArchiveNetmount to zip editing
        if (empty(elFinder::$netDrivers['ziparchive'])) {
            elFinder::$netDrivers['ziparchive'] = 'FlysystemZipArchiveNetmount';
        }

        // check for net volumes stored in session
        $netVolumes = $this->getNetVolumes();
        foreach ($netVolumes as $key => $root) {
            if (!isset($root['id'])) {
                // given fixed unique id
                if (!$root['id'] = $this->getNetVolumeUniqueId($netVolumes)) {
                    $this->mountErrors[] = 'Netmount Driver "' . $root['driver'] . '" : Could\'t given volume id.';
                    continue;
                }
            }
            $root['_isNetVolume'] = true;
            $opts['roots'][$key] = $root;
        }

        // "mount" volumes
        foreach ($opts['roots'] as $i => $o) {
            $class = 'elFinderVolume' . (isset($o['driver']) ? $o['driver'] : '');

            if (class_exists($class)) {
                /* @var elFinderVolumeDriver $volume */
                $volume = new $class();

                try {
                    if ($this->maxArcFilesSize && (empty($o['maxArcFilesSize']) || $this->maxArcFilesSize < $o['maxArcFilesSize'])) {
                        $o['maxArcFilesSize'] = $this->maxArcFilesSize;
                    }
                    // pass session handler
                    $volume->setSession($this->session);
                    if (!$this->default) {
                        $volume->setNeedOnline(true);
                    }
                    if ($volume->mount($o)) {
                        // unique volume id (ends on "_") - used as prefix to files hash
                        $id = $volume->id();

                        $this->volumes[$id] = $volume;
                        if ((!$this->default || $volume->root() !== $volume->defaultPath()) && $volume->isReadable()) {
                            $this->default = $volume;
                        }
                    } else {
                        if (!empty($o['_isNetVolume'])) {
                            $this->removeNetVolume($i, $volume);
                        }
                        $this->mountErrors[] = 'Driver "' . $class . '" : ' . implode(' ', $volume->error());
                    }
                } catch (Exception $e) {
                    if (!empty($o['_isNetVolume'])) {
                        $this->removeNetVolume($i, $volume);
                    }
                    $this->mountErrors[] = 'Driver "' . $class . '" : ' . $e->getMessage();
                }
            } else {
                if (!empty($o['_isNetVolume'])) {
                    $this->removeNetVolume($i, $volume);
                }
                $this->mountErrors[] = 'Driver "' . $class . '" does not exist';
            }
        }

        // if at least one readable volume - ii desu >_<
        $this->loaded = !empty($this->default);

        // restore error handler for now
        restore_error_handler();
    }

    /**
     * Return elFinder session wrapper instance
     *
     * @return  elFinderSessionInterface
     **/
    public function getSession()
    {
        return $this->session;
    }

    /**
     * Return true if fm init correctly
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function loaded()
    {
        return $this->loaded;
    }

    /**
     * Return version (api) number
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function version()
    {
        return self::$ApiVersion;
    }

    /**
     * Return revision (api) number
     *
     * @return string
     * @author Naoki Sawada
     **/
    public function revision()
    {
        return self::$ApiRevision;
    }

    /**
     * Add handler to elFinder command
     *
     * @param  string  command name
     * @param  string|array  callback name or array(object, method)
     *
     * @return elFinder
     * @author Dmitry (dio) Levashov
     **/
    public function bind($cmd, $handler)
    {
        $allCmds = array_keys($this->commands);
        $cmds = array();
        foreach (explode(' ', $cmd) as $_cmd) {
            if ($_cmd !== '') {
                if ($all = strpos($_cmd, '*') !== false) {
                    list(, $sub) = array_pad(explode('.', $_cmd), 2, '');
                    if ($sub) {
                        $sub = str_replace('\'', '\\\'', $sub);
                        $subs = array_fill(0, count($allCmds), $sub);
                        $cmds = array_merge($cmds, array_map(array('elFinder', 'addSubToBindName'), $allCmds, $subs));
                    } else {
                        $cmds = array_merge($cmds, $allCmds);
                    }
                } else {
                    $cmds[] = $_cmd;
                }
            }
        }
        $cmds = array_unique($cmds);

        foreach ($cmds as $cmd) {
            if (!isset($this->listeners[$cmd])) {
                $this->listeners[$cmd] = array();
            }

            if (is_callable($handler)) {
                $this->listeners[$cmd][] = $handler;
            }
        }

        return $this;
    }

    /**
     * Remove event (command exec) handler
     *
     * @param  string  command name
     * @param  string|array  callback name or array(object, method)
     *
     * @return elFinder
     * @author Dmitry (dio) Levashov
     **/
    public function unbind($cmd, $handler)
    {
        if (!empty($this->listeners[$cmd])) {
            foreach ($this->listeners[$cmd] as $i => $h) {
                if ($h === $handler) {
                    unset($this->listeners[$cmd][$i]);
                    return $this;
                }
            }
        }
        return $this;
    }

    /**
     * Trigger binded functions
     *
     * @param      string  $cmd     binded command name
     * @param      array   $vars    variables to pass to listeners
     * @param      array   $errors  array into which the error is written
     */
    public function trigger($cmd, $vars, &$errors)
    {
        if (!empty($this->listeners[$cmd])) {
            foreach ($this->listeners[$cmd] as $handler) {
                $_res = call_user_func_array($handler, $vars);
                if ($_res && is_array($_res)) {
                    $_err = !empty($_res['error'])? $_res['error'] : (!empty($_res['warning'])? $_res['warning'] : null);
                    if ($_err) {
                        if (is_array($_err)) {
                            $errors = array_merge($errors, $_err);
                        } else {
                            $errors[] = (string)$_err;
                        }
                        if ($_res['error']) {
                            throw new elFinderTriggerException();
                        }
                    }
                }
            }
        }
    }

    /**
     * Return true if command exists
     *
     * @param  string  command name
     *
     * @return bool
     * @author Dmitry (dio) Levashov
     **/
    public function commandExists($cmd)
    {
        return $this->loaded && isset($this->commands[$cmd]) && method_exists($this, $cmd);
    }

    /**
     * Return root - file's owner (public func of volume())
     *
     * @param  string  file hash
     *
     * @return elFinderVolumeDriver
     * @author Naoki Sawada
     */
    public function getVolume($hash)
    {
        return $this->volume($hash);
    }

    /**
     * Return command required arguments info
     *
     * @param  string  command name
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function commandArgsList($cmd)
    {
        if ($this->commandExists($cmd)) {
            $list = $this->commands[$cmd];
            $list['reqid'] = false;
        } else {
            $list = array();
        }
        return $list;
    }

    private function session_expires()
    {

        if (!$last = $this->session->get(':LAST_ACTIVITY')) {
            $this->session->set(':LAST_ACTIVITY', time());
            return false;
        }

        if (($this->timeout > 0) && (time() - $last > $this->timeout)) {
            return true;
        }

        $this->session->set(':LAST_ACTIVITY', time());
        return false;
    }

    /**
     * Exec command and return result
     *
     * @param  string $cmd  command name
     * @param  array  $args command arguments
     *
     * @return array
     * @throws elFinderAbortException|Exception
     * @author Dmitry (dio) Levashov
     **/
    public function exec($cmd, $args)
    {
        // set error handler of WARNING, NOTICE
        set_error_handler('elFinder::phpErrorHandler', E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE);

        // set current request args
        self::$currentArgs = $args;

        if (!$this->loaded) {
            return array('error' => $this->error(self::ERROR_CONF, self::ERROR_CONF_NO_VOL));
        }

        if ($this->session_expires()) {
            return array('error' => $this->error(self::ERROR_SESSION_EXPIRES));
        }

        if (!$this->commandExists($cmd)) {
            return array('error' => $this->error(self::ERROR_UNKNOWN_CMD));
        }

        // check request id
        $args['reqid'] = preg_replace('[^0-9a-fA-F]', '', !empty($args['reqid']) ? $args['reqid'] : (!empty($_SERVER['HTTP_X_ELFINDERREQID']) ? $_SERVER['HTTP_X_ELFINDERREQID'] : ''));

        // to abort this request
        if ($cmd === 'abort') {
            $this->abort($args);
            return array('error' => 0);
        }

        // make flag file and set self::$abortCheckFile
        if ($args['reqid']) {
            $this->abort(array('makeFile' => $args['reqid']));
        }

        if (!empty($args['mimes']) && is_array($args['mimes'])) {
            foreach ($this->volumes as $id => $v) {
                $this->volumes[$id]->setMimesFilter($args['mimes']);
            }
        }

        // regist shutdown function as fallback
        register_shutdown_function(array($this, 'itemAutoUnlock'));

        // detect destination dirHash and volume
        $dstVolume = false;
        $dst = !empty($args['target']) ? $args['target'] : (!empty($args['dst']) ? $args['dst'] : '');
        if ($dst) {
            $dstVolume = $this->volume($dst);
        } else if (isset($args['targets']) && is_array($args['targets']) && isset($args['targets'][0])) {
            $dst = $args['targets'][0];
            $dstVolume = $this->volume($dst);
            if ($dstVolume && ($_stat = $dstVolume->file($dst)) && !empty($_stat['phash'])) {
                $dst = $_stat['phash'];
            } else {
                $dst = '';
            }
        } else if ($cmd === 'open') {
            // for initial open without args `target`
            $dstVolume = $this->default;
            $dst = $dstVolume->defaultPath();
        }

        $result = null;

        // call pre handlers for this command
        $args['sessionCloseEarlier'] = isset($this->sessionUseCmds[$cmd]) ? false : $this->sessionCloseEarlier;
        if (!empty($this->listeners[$cmd . '.pre'])) {
            foreach ($this->listeners[$cmd . '.pre'] as $handler) {
                $_res = call_user_func_array($handler, array($cmd, &$args, $this, $dstVolume));
                if (is_array($_res)) {
                    if (!empty($_res['preventexec'])) {
                        $result = array('error' => true);
                        if ($cmd === 'upload' && !empty($args['node'])) {
                            $result['callback'] = array(
                                'node' => $args['node'],
                                'bind' => $cmd
                            );
                        }
                        if (!empty($_res['results']) && is_array($_res['results'])) {
                            $result = array_merge($result, $_res['results']);
                        }
                        break;
                    }
                }
            }
        }

        // unlock session data for multiple access
        if ($this->sessionCloseEarlier && $args['sessionCloseEarlier']) {
            $this->session->close();
            // deprecated property
            elFinder::$sessionClosed = true;
        }

        if (substr(PHP_OS, 0, 3) === 'WIN') {
            // set time out
            elFinder::extendTimeLimit(300);
        }

        if (!is_array($result)) {
            try {
                $result = $this->$cmd($args);
            } catch (elFinderAbortException $e) {
                throw $e;
            } catch (Exception $e) {
                $error_res = json_decode($e->getMessage());
                $message = isset($error_res->error->message) ? $error_res->error->message : $e->getMessage();
                $result = array(
                    'error' => htmlspecialchars($message),
                    'sync' => true
                );
                if ($this->throwErrorOnExec) {
                    throw $e;
                }
            }
        }

        // check change dstDir
        $changeDst = false;
        if ($dst && $dstVolume && (!empty($result['added']) || !empty($result['removed']))) {
            $changeDst = true;
        }

        foreach ($this->volumes as $volume) {
            $removed = $volume->removed();
            if (!empty($removed)) {
                if (!isset($result['removed'])) {
                    $result['removed'] = array();
                }
                $result['removed'] = array_merge($result['removed'], $removed);
                if (!$changeDst && $dst && $dstVolume && $volume === $dstVolume) {
                    $changeDst = true;
                }
            }
            $added = $volume->added();
            if (!empty($added)) {
                if (!isset($result['added'])) {
                    $result['added'] = array();
                }
                $result['added'] = array_merge($result['added'], $added);
                if (!$changeDst && $dst && $dstVolume && $volume === $dstVolume) {
                    $changeDst = true;
                }
            }
            $volume->resetResultStat();
        }

        // dstDir is changed
        if ($changeDst) {
            if ($dstDir = $dstVolume->dir($dst)) {
                if (!isset($result['changed'])) {
                    $result['changed'] = array();
                }
                $result['changed'][] = $dstDir;
            }
        }

        // call handlers for this command
        if (!empty($this->listeners[$cmd])) {
            foreach ($this->listeners[$cmd] as $handler) {
                if (call_user_func_array($handler, array($cmd, &$result, $args, $this, $dstVolume))) {
                    // handler return true to force sync client after command completed
                    $result['sync'] = true;
                }
            }
        }

        // replace removed files info with removed files hashes
        if (!empty($result['removed'])) {
            $removed = array();
            foreach ($result['removed'] as $file) {
                $removed[] = $file['hash'];
            }
            $result['removed'] = array_unique($removed);
        }
        // remove hidden files and filter files by mimetypes
        if (!empty($result['added'])) {
            $result['added'] = $this->filter($result['added']);
        }
        // remove hidden files and filter files by mimetypes
        if (!empty($result['changed'])) {
            $result['changed'] = $this->filter($result['changed']);
        }
        // add toasts
        if ($this->toastMessages) {
            $result['toasts'] = array_merge(((isset($result['toasts']) && is_array($result['toasts']))? $result['toasts'] : array()), $this->toastMessages);
        }

        if ($this->debug || !empty($args['debug'])) {
            $result['debug'] = array(
                'connector' => 'php',
                'phpver' => PHP_VERSION,
                'time' => $this->utime() - $this->time,
                'memory' => (function_exists('memory_get_peak_usage') ? ceil(memory_get_peak_usage() / 1024) . 'Kb / ' : '') . ceil(memory_get_usage() / 1024) . 'Kb / ' . ini_get('memory_limit'),
                'upload' => $this->uploadDebug,
                'volumes' => array(),
                'mountErrors' => $this->mountErrors
            );

            foreach ($this->volumes as $id => $volume) {
                $result['debug']['volumes'][] = $volume->debug();
            }
        }

        // remove sesstion var 'urlContentSaveIds'
        if ($this->removeContentSaveIds) {
            $urlContentSaveIds = $this->session->get('urlContentSaveIds', array());
            foreach (array_keys($this->removeContentSaveIds) as $contentSaveId) {
                if (isset($urlContentSaveIds[$contentSaveId])) {
                    unset($urlContentSaveIds[$contentSaveId]);
                }
            }
            if ($urlContentSaveIds) {
                $this->session->set('urlContentSaveIds', $urlContentSaveIds);
            } else {
                $this->session->remove('urlContentSaveIds');
            }
        }

        foreach ($this->volumes as $volume) {
            $volume->saveSessionCache();
            $volume->umount();
        }

        // unlock locked items
        $this->itemAutoUnlock();

        // custom data
        if ($this->customData !== null) {
            $result['customData'] = $this->customData ? json_encode($this->customData) : '';
        }

        if (!empty($result['debug'])) {
            $result['debug']['backendErrors'] = elFinder::$phpErrors;
        }
        elFinder::$phpErrors = array();
        restore_error_handler();

        if (!empty($result['callback'])) {
            $result['callback']['json'] = json_encode($result);
            $this->callback($result['callback']);
            return array();
        } else {
            return $result;
        }
    }

    /**
     * Return file real path
     *
     * @param  string $hash file hash
     *
     * @return string
     * @author Dmitry (dio) Levashov
     **/
    public function realpath($hash)
    {
        if (($volume = $this->volume($hash)) == false) {
            return false;
        }
        return $volume->realpath($hash);
    }

    /**
     * Sets custom data(s).
     *
     * @param  string|array $key The key or data array
     * @param  mixed        $val The value
     *
     * @return self    ( elFinder instance )
     */
    public function setCustomData($key, $val = null)
    {
        if (is_array($key)) {
            foreach ($key as $k => $v) {
                $this->customData[$k] = $v;
            }
        } else {
            $this->customData[$key] = $val;
        }
        return $this;
    }

    /**
     * Removes a custom data.
     *
     * @param  string $key The key
     *
     * @return self    ( elFinder instance )
     */
    public function removeCustomData($key)
    {
        $this->customData[$key] = null;
        return $this;
    }

    /**
     * Update sesstion value of a NetVolume option
     *
     * @param string $netKey
     * @param string $optionKey
     * @param mixed  $val
     *
     * @return bool
     */
    public function updateNetVolumeOption($netKey, $optionKey, $val)
    {
        $netVolumes = $this->getNetVolumes();
        if (is_string($netKey) && isset($netVolumes[$netKey]) && is_string($optionKey)) {
            $netVolumes[$netKey][$optionKey] = $val;
            $this->saveNetVolumes($netVolumes);
            return true;
        }
        return false;
    }

    /**
     * remove of session var "urlContentSaveIds"
     *
     * @param string $id
     */
    public function removeUrlContentSaveId($id)
    {
        $this->removeContentSaveIds[$id] = true;
    }

    /**
     * Return network volumes config.
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    protected function getNetVolumes()
    {
        if ($data = $this->session->get('netvolume', array())) {
            return $data;
        }
        return array();
    }

    /**
     * Save network volumes config.
     *
     * @param  array $volumes volumes config
     *
     * @return void
     * @author Dmitry (dio) Levashov
     */
    protected function saveNetVolumes($volumes)
    {
        $this->session->set('netvolume', $volumes);
    }

    /**
     * Remove netmount volume
     *
     * @param string $key    netvolume key
     * @param object $volume volume driver instance
     *
     * @return bool
     */
    protected function removeNetVolume($key, $volume)
    {
        $netVolumes = $this->getNetVolumes();
        $res = true;
        if (is_object($volume) && method_exists($volume, 'netunmount')) {
            $res = $volume->netunmount($netVolumes, $key);
            $volume->clearSessionCache();
        }
        if ($res) {
            if (is_string($key) && isset($netVolumes[$key])) {
                unset($netVolumes[$key]);
                $this->saveNetVolumes($netVolumes);
                return true;
            }
        }
        return false;
    }

    /**
     * Get plugin instance & set to $this->plugins
     *
     * @param  string $name Plugin name (dirctory name)
     * @param  array  $opts Plugin options (optional)
     *
     * @return object | bool Plugin object instance Or false
     * @author Naoki Sawada
     */
    protected function getPluginInstance($name, $opts = array())
    {
        $key = strtolower($name);
        if (!isset($this->plugins[$key])) {
            $class = 'elFinderPlugin' . $name;
            // to try auto load
            if (!class_exists($class)) {
                $p_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $name . DIRECTORY_SEPARATOR . 'plugin.php';
                if (is_file($p_file)) {
                    include_once $p_file;
                }
            }
            if (class_exists($class, false)) {
                $this->plugins[$key] = new $class($opts);
            } else {
                $this->plugins[$key] = false;
            }
        }
        return $this->plugins[$key];
    }

    /***************************************************************************/
    /*                                 commands                                */
    /***************************************************************************/

    /**
     * Normalize error messages
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    public function error()
    {
        $errors = array();

        foreach (func_get_args() as $msg) {
            if (is_array($msg)) {
                $errors = array_merge($errors, $msg);
            } else {
                $errors[] = $msg;
            }
        }

        return count($errors) ? $errors : array(self::ERROR_UNKNOWN);
    }

    /**
     * @param $args
     *
     * @return array
     * @throws elFinderAbortException
     */
    protected function netmount($args)
    {
        $options = array();
        $protocol = $args['protocol'];
        $toast = '';

        if ($protocol === 'netunmount') {
            if (!empty($args['user']) && $volume = $this->volume($args['user'])) {
                if ($this->removeNetVolume($args['host'], $volume)) {
                    return array('removed' => array(array('hash' => $volume->root())));
                }
            }
            return array('sync' => true, 'error' => $this->error(self::ERROR_NETUNMOUNT));
        }

        $driver = isset(self::$netDrivers[$protocol]) ? self::$netDrivers[$protocol] : '';
        $class = 'elFinderVolume' . $driver;

        if (!class_exists($class)) {
            return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], self::ERROR_NETMOUNT_NO_DRIVER));
        }

        if (!$args['path']) {
            $args['path'] = '/';
        }

        foreach ($args as $k => $v) {
            if ($k != 'options' && $k != 'protocol' && $v) {
                $options[$k] = $v;
            }
        }

        if (is_array($args['options'])) {
            foreach ($args['options'] as $key => $value) {
                $options[$key] = $value;
            }
        }

        /* @var elFinderVolumeDriver $volume */
        $volume = new $class();

        // pass session handler
        $volume->setSession($this->session);

        $volume->setNeedOnline(true);

        if (is_callable(array($volume, 'netmountPrepare'))) {
            $options = $volume->netmountPrepare($options);
            if (isset($options['exit'])) {
                if ($options['exit'] === 'callback') {
                    $this->callback($options['out']);
                }
                return $options;
            }
            if (!empty($options['toast'])) {
                $toast = $options['toast'];
                unset($options['toast']);
            }
        }

        $netVolumes = $this->getNetVolumes();

        if (!isset($options['id'])) {
            // given fixed unique id
            if (!$options['id'] = $this->getNetVolumeUniqueId($netVolumes)) {
                return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], 'Could\'t given volume id.'));
            }
        }

        // load additional volume root options
        if (!empty($this->optionsNetVolumes['*'])) {
            $options = array_merge($this->optionsNetVolumes['*'], $options);
        }
        if (!empty($this->optionsNetVolumes[$protocol])) {
            $options = array_merge($this->optionsNetVolumes[$protocol], $options);
        }

        if (!$key = $volume->netMountKey) {
            $key = md5($protocol . '-' . serialize($options));
        }
        $options['netkey'] = $key;

        if (!isset($netVolumes[$key]) && $volume->mount($options)) {
            // call post-process function of netmount
            if (is_callable(array($volume, 'postNetmount'))) {
                $volume->postNetmount($options);
            }
            $options['driver'] = $driver;
            $netVolumes[$key] = $options;
            $this->saveNetVolumes($netVolumes);
            $rootstat = $volume->file($volume->root());
            $res = array('added' => array($rootstat));
            if ($toast) {
                $res['toast'] = $toast;
            }
            return $res;
        } else {
            $this->removeNetVolume(null, $volume);
            return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], implode(' ', $volume->error())));
        }
    }

    /**
     * "Open" directory
     * Return array with following elements
     *  - cwd          - opened dir info
     *  - files        - opened dir content [and dirs tree if $args[tree]]
     *  - api          - api version (if $args[init])
     *  - uplMaxSize   - if $args[init]
     *  - error        - on failed
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function open($args)
    {
        $target = $args['target'];
        $init = !empty($args['init']);
        $tree = !empty($args['tree']);
        $volume = $this->volume($target);
        $cwd = $volume ? $volume->dir($target) : false;
        $hash = $init ? 'default folder' : '#' . $target;
        $compare = '';

        // on init request we can get invalid dir hash -
        // dir which can not be opened now, but remembered by client,
        // so open default dir
        if ((!$cwd || !$cwd['read']) && $init) {
            $volume = $this->default;
            $target = $volume->defaultPath();
            $cwd = $volume->dir($target);
        }

        if (!$cwd) {
            return array('error' => $this->error(self::ERROR_OPEN, $hash, self::ERROR_DIR_NOT_FOUND));
        }
        if (!$cwd['read']) {
            return array('error' => $this->error(self::ERROR_OPEN, $hash, self::ERROR_PERM_DENIED));
        }

        $files = array();

        // get current working directory files list
        if (($ls = $volume->scandir($cwd['hash'])) === false) {
            return array('error' => $this->error(self::ERROR_OPEN, $cwd['name'], $volume->error()));
        }

        if (isset($cwd['dirs']) && $cwd['dirs'] != 1) {
            $cwd = $volume->dir($target);
        }

        // get other volume root
        if ($tree) {
            foreach ($this->volumes as $id => $v) {
                $files[] = $v->file($v->root());
            }
        }

        // long polling mode
        if ($args['compare']) {
            $sleep = max(1, (int)$volume->getOption('lsPlSleep'));
            $standby = (int)$volume->getOption('plStandby');
            if ($standby > 0 && $sleep > $standby) {
                $standby = $sleep;
            }
            $limit = max(0, floor($standby / $sleep)) + 1;
            do {
                elFinder::extendTimeLimit(30 + $sleep);
                $_mtime = 0;
                foreach ($ls as $_f) {
                    if (isset($_f['ts'])) {
                        $_mtime = max($_mtime, $_f['ts']);
                    }
                }
                $compare = strval(count($ls)) . ':' . strval($_mtime);
                if ($compare !== $args['compare']) {
                    break;
                }
                if (--$limit) {
                    sleep($sleep);
                    $volume->clearstatcache();
                    if (($ls = $volume->scandir($cwd['hash'])) === false) {
                        break;
                    }
                }
            } while ($limit);
            if ($ls === false) {
                return array('error' => $this->error(self::ERROR_OPEN, $cwd['name'], $volume->error()));
            }
        }

        if ($ls) {
            if ($files) {
                $files = array_merge($files, $ls);
            } else {
                $files = $ls;
            }
        }

        $result = array(
            'cwd' => $cwd,
            'options' => $volume->options($cwd['hash']),
            'files' => $files
        );

        if ($compare) {
            $result['cwd']['compare'] = $compare;
        }

        if (!empty($args['init'])) {
            $result['api'] = sprintf('%.1F%03d', self::$ApiVersion, self::$ApiRevision);
            $result['uplMaxSize'] = ini_get('upload_max_filesize');
            $result['uplMaxFile'] = ini_get('max_file_uploads');
            $result['netDrivers'] = array_keys(self::$netDrivers);
            $result['maxTargets'] = $this->maxTargets;
            if ($volume) {
                $result['cwd']['root'] = $volume->root();
            }
            if (elfinder::$textMimes) {
                $result['textMimes'] = elfinder::$textMimes;
            }
        }

        return $result;
    }

    /**
     * Return dir files names list
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function ls($args)
    {
        $target = $args['target'];
        $intersect = isset($args['intersect']) ? $args['intersect'] : array();

        if (($volume = $this->volume($target)) == false
            || ($list = $volume->ls($target, $intersect)) === false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
        }
        return array('list' => $list);
    }

    /**
     * Return subdirs for required directory
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function tree($args)
    {
        $target = $args['target'];

        if (($volume = $this->volume($target)) == false
            || ($tree = $volume->tree($target)) == false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
        }

        return array('tree' => $tree);
    }

    /**
     * Return parents dir for required directory
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function parents($args)
    {
        $target = $args['target'];
        $until = $args['until'];

        if (($volume = $this->volume($target)) == false
            || ($tree = $volume->parents($target, false, $until)) == false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
        }

        return array('tree' => $tree);
    }

    /**
     * Return new created thumbnails list
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function tmb($args)
    {

        $result = array('images' => array());
        $targets = $args['targets'];

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($volume = $this->volume($target)) != false
                && (($tmb = $volume->tmb($target)) != false)) {
                $result['images'][$target] = $tmb;
            }
        }
        return $result;
    }

    /**
     * Download files/folders as an archive file
     * 1st: Return srrsy contains download archive file info
     * 2nd: Return array contains opened file pointer, root itself and required headers
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws Exception
     * @author Naoki Sawada
     */
    protected function zipdl($args)
    {
        $targets = $args['targets'];
        $download = !empty($args['download']);
        $h404 = 'HTTP/1.x 404 Not Found';
        $CriOS = isset($_SERVER['HTTP_USER_AGENT'])? (strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) : false;

        if (!$download) {
            //1st: Return array contains download archive file info
            $error = array(self::ERROR_ARCHIVE);
            if (($volume = $this->volume($targets[0])) !== false) {
                if ($dlres = $volume->zipdl($targets)) {
                    $path = $dlres['path'];
                    register_shutdown_function(array('elFinder', 'rmFileInDisconnected'), $path);
                    if (count($targets) === 1) {
                        $name = basename($volume->path($targets[0]));
                    } else {
                        $name = $dlres['prefix'] . '_Files';
                    }
                    $name .= '.' . $dlres['ext'];
                    $uniqid = uniqid();
					if(ZEND_THREAD_SAFE){
						set_transient("zipdl$uniqid", basename($path),MINUTE_IN_SECONDS);
					} else {
						$this->session->set('zipdl' . $uniqid, basename($path));
					}
                    $result = array(
                        'zipdl' => array(
                            'file' => $CriOS? basename($path) : $uniqid,
                            'name' => $name,
                            'mime' => $dlres['mime']
                        )
                    );
                    return $result;
                }
                $error = array_merge($error, $volume->error());
            }
            return array('error' => $error);
        } else {
            // 2nd: Return array contains opened file session key, root itself and required headers

            // Detect Chrome on iOS
            // It has access twice on downloading
            $CriOSinit = false;
            if ($CriOS) {
                $accept = isset($_SERVER['HTTP_ACCEPT'])? $_SERVER['HTTP_ACCEPT'] : '';
                if ($accept && $accept !== '*' && $accept !== '*/*') {
                    $CriOSinit = true;
                }
            }
            // data check
            if (count($targets) !== 4 ||
                ($volume = $this->volume($targets[0])) == false ||
                !($file = $CriOS ? $targets[1] : ( ZEND_THREAD_SAFE ? get_transient( "zipdl$targets[1]" ) : $this->session->get( 'zipdl' . $targets[1] ) ) )) {
                return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
            }
            $path = $volume->getTempPath() . DIRECTORY_SEPARATOR . basename($file);
            // remove session data of "zipdl..."
	        if(ZEND_THREAD_SAFE){
		        delete_transient("zipdl$targets[1]");
	        } else {
		        $this->session->remove('zipdl' . $targets[1]);
	        }
            if (!$CriOSinit) {
                // register auto delete on shutdown
                $GLOBALS['elFinderTempFiles'][$path] = true;
            }
            if ($volume->commandDisabled('zipdl')) {
                return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
            }
            if (!is_readable($path) || !is_writable($path)) {
                return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
            }
            // for HTTP headers
            $name = $targets[2];
            $mime = $targets[3];

            $filenameEncoded = rawurlencode($name);
            if (strpos($filenameEncoded, '%') === false) { // ASCII only
                $filename = 'filename="' . $name . '"';
            } else {
                $ua = $_SERVER['HTTP_USER_AGENT'];
                if (preg_match('/MSIE [4-8]/', $ua)) { // IE < 9 do not support RFC 6266 (RFC 2231/RFC 5987)
                    $filename = 'filename="' . $filenameEncoded . '"';
                } elseif (strpos($ua, 'Chrome') === false && strpos($ua, 'Safari') !== false && preg_match('#Version/[3-5]#', $ua)) { // Safari < 6
                    $filename = 'filename="' . str_replace('"', '', $name) . '"';
                } else { // RFC 6266 (RFC 2231/RFC 5987)
                    $filename = 'filename*=UTF-8\'\'' . $filenameEncoded;
                }
            }

            $fp = fopen($path, 'rb');
            $file = fstat($fp);
            $result = array(
                'pointer' => $fp,
                'header' => array(
                    'Content-Type: ' . $mime,
                    'Content-Disposition: attachment; ' . $filename,
                    'Content-Transfer-Encoding: binary',
                    'Content-Length: ' . $file['size'],
                    'Accept-Ranges: none',
                    'Connection: close'
                )
            );
            // add cache control headers
            if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
                $result['header'] = array_merge($result['header'], $cacheHeaders);
            }
            return $result;
        }
    }

    /**
     * Required to output file in browser when volume URL is not set
     * Return array contains opened file pointer, root itself and required headers
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function file($args)
    {
        $target = $args['target'];
        $download = !empty($args['download']);
        $onetime = !empty($args['onetime']);
        //$h304     = 'HTTP/1.1 304 Not Modified';
        $h403 = 'HTTP/1.0 403 Access Denied';
        $a403 = array('error' => 'Access Denied', 'header' => $h403, 'raw' => true);
        $h404 = 'HTTP/1.0 404 Not Found';
        $a404 = array('error' => 'File not found', 'header' => $h404, 'raw' => true);

        if ($onetime) {
            $volume = null;
            $tmpdir = elFinder::$commonTempPath;
            if (!$tmpdir || !is_file($tmpf = $tmpdir . DIRECTORY_SEPARATOR . 'ELF' . $target)) {
                return $a404;
            }
            $GLOBALS['elFinderTempFiles'][$tmpf] = true;
            if ($file = json_decode(file_get_contents($tmpf), true)) {
                $src = base64_decode($file['file']);
                if (!is_file($src) || !($fp = fopen($src, 'rb'))) {
                    return $a404;
                }
                if (strpos($src, $tmpdir) === 0) {
                    $GLOBALS['elFinderTempFiles'][$src] = true;
                }
                unset($file['file']);
                $file['read'] = true;
                $file['size'] = filesize($src);
            } else {
                return $a404;
            }
        } else {
            if (($volume = $this->volume($target)) == false) {
                return $a404;
            }

            if ($volume->commandDisabled('file')) {
                return $a403;
            }

            if (($file = $volume->file($target)) == false) {
                return $a404;
            }

            if (!$file['read']) {
                return $a404;
            }

            $opts = array();
            if (!empty($_SERVER['HTTP_RANGE'])) {
                $opts['httpheaders'] = array('Range: ' . $_SERVER['HTTP_RANGE']);
            }
            if (($fp = $volume->open($target, $opts)) == false) {
                return $a404;
            }
        }

        // check aborted by user
        elFinder::checkAborted();

        // allow change MIME type by 'file.pre' callback functions
        $mime = isset($args['mime']) ? $args['mime'] : $file['mime'];
        if ($download || $onetime) {
            $disp = 'attachment';
        } else {
            $dispInlineRegex = $volume->getOption('dispInlineRegex');
            $inlineRegex = false;
            if ($dispInlineRegex) {
                $inlineRegex = '#' . str_replace('#', '\\#', $dispInlineRegex) . '#';
                try {
                    preg_match($inlineRegex, '');
                } catch (Exception $e) {
                    $inlineRegex = false;
                }
            }
            if (!$inlineRegex) {
                $inlineRegex = '#^(?:(?:image|text)|application/x-shockwave-flash$)#';
            }
            $disp = preg_match($inlineRegex, $mime) ? 'inline' : 'attachment';
        }

        $filenameEncoded = rawurlencode($file['name']);
        if (strpos($filenameEncoded, '%') === false) { // ASCII only
            $filename = 'filename="' . $file['name'] . '"';
        } else {
            $ua = isset($_SERVER['HTTP_USER_AGENT'])? $_SERVER['HTTP_USER_AGENT'] : '';
            if (preg_match('/MSIE [4-8]/', $ua)) { // IE < 9 do not support RFC 6266 (RFC 2231/RFC 5987)
                $filename = 'filename="' . $filenameEncoded . '"';
            } elseif (strpos($ua, 'Chrome') === false && strpos($ua, 'Safari') !== false && preg_match('#Version/[3-5]#', $ua)) { // Safari < 6
                $filename = 'filename="' . str_replace('"', '', $file['name']) . '"';
            } else { // RFC 6266 (RFC 2231/RFC 5987)
                $filename = 'filename*=UTF-8\'\'' . $filenameEncoded;
            }
        }

        if ($args['cpath'] && $args['reqid']) {
            setcookie('elfdl' . $args['reqid'], '1', 0, $args['cpath']);
        }

        $result = array(
            'volume' => $volume,
            'pointer' => $fp,
            'info' => $file,
            'header' => array(
                'Content-Type: ' . $mime,
                'Content-Disposition: ' . $disp . '; ' . $filename,
                'Content-Transfer-Encoding: binary',
                'Content-Length: ' . $file['size'],
                'Last-Modified: ' . gmdate('D, d M Y H:i:s T', $file['ts']),
                'Connection: close'
            )
        );

        if (!$onetime) {
            // add cache control headers
            if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
                $result['header'] = array_merge($result['header'], $cacheHeaders);
            }

            // check 'xsendfile'
            $xsendfile = $volume->getOption('xsendfile');
            $path = null;
            if ($xsendfile) {
                $info = stream_get_meta_data($fp);
                if ($path = empty($info['uri']) ? null : $info['uri']) {
                    $basePath = rtrim($volume->getOption('xsendfilePath'), DIRECTORY_SEPARATOR);
                    if ($basePath) {
                        $root = rtrim($volume->getRootPath(), DIRECTORY_SEPARATOR);
                        if (strpos($path, $root) === 0) {
                            $path = $basePath . substr($path, strlen($root));
                        } else {
                            $path = null;
                        }
                    }
                }
            }
            if ($path) {
                $result['header'][] = $xsendfile . ': ' . $path;
                $result['info']['xsendfile'] = $xsendfile;
            }
        }

        // add "Content-Location" if file has url data
        if (isset($file['url']) && $file['url'] && $file['url'] != 1) {
            $result['header'][] = 'Content-Location: ' . $file['url'];
        }
        return $result;
    }

    /**
     * Count total files size
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function size($args)
    {
        $size = 0;
        $files = 0;
        $dirs = 0;
        $itemCount = true;
        $sizes = array();

        foreach ($args['targets'] as $target) {
            elFinder::checkAborted();
            if (($volume = $this->volume($target)) == false
                || ($file = $volume->file($target)) == false
                || !$file['read']) {
                return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
            }

            $volRes = $volume->size($target);
            if (is_array($volRes)) {
                $sizeInfo = array('size' => 0, 'fileCnt' => 0, 'dirCnt' => 0);
                if (!empty($volRes['size'])) {
                    $sizeInfo['size'] = $volRes['size'];
                    $size += $volRes['size'];
                }
                if (!empty($volRes['files'])) {
                    $sizeInfo['fileCnt'] = $volRes['files'];
                }
                if (!empty($volRes['dirs'])) {
                    $sizeInfo['dirCnt'] = $volRes['dirs'];
                }
                if ($itemCount) {
                    $files += $sizeInfo['fileCnt'];
                    $dirs += $sizeInfo['dirCnt'];
                }
                $sizes[$target] = $sizeInfo;
            } else if (is_numeric($volRes)) {
                $size += $volRes;
                $files = $dirs = 'unknown';
                $itemCount = false;
            }
        }
        return array('size' => $size, 'fileCnt' => $files, 'dirCnt' => $dirs, 'sizes' => $sizes);
    }

    /**
     * Create directory
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function mkdir($args)
    {
        $target = $args['target'];
        $name = $args['name'];
        $dirs = $args['dirs'];
        if ($name === '' && !$dirs) {
            return array('error' => $this->error(self::ERROR_INV_PARAMS, 'mkdir'));
        }

        if (strpos($name,'..') !== false) {
            return array('error' => $this->error('Invalid request', 'mkdir'));
        }

        if (($volume = $this->volume($target)) == false) {
            return array('error' => $this->error(self::ERROR_MKDIR, $name, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target));
        }
        if ($dirs) {
            $maxDirs = $volume->getOption('uploadMaxMkdirs');
            if ($maxDirs && $maxDirs < count($dirs)) {
                return array('error' => $this->error(self::ERROR_MAX_MKDIRS, $maxDirs));
            }
            sort($dirs);
            $reset = null;
            $mkdirs = array();
            foreach ($dirs as $dir) {
                if(strpos($dir,'..') !== false){
                    return array('error' => $this->error('Invalid request', 'mkdir'));
                }
                $tgt =& $mkdirs;
                $_names = explode('/', trim($dir, '/'));
                foreach ($_names as $_key => $_name) {
                    if (!isset($tgt[$_name])) {
                        $tgt[$_name] = array();
                    }
                    $tgt =& $tgt[$_name];
                }
                $tgt =& $reset;
            }
            $res = $this->ensureDirsRecursively($volume, $target, $mkdirs);
            $ret = array(
                'added' => $res['stats'],
                'hashes' => $res['hashes']
            );
            if ($res['error']) {
                $ret['warning'] = $this->error(self::ERROR_MKDIR, $res['error'][0], $volume->error());
            }
            return $ret;
        } else {
            return ($dir = $volume->mkdir($target, $name)) == false
                ? array('error' => $this->error(self::ERROR_MKDIR, $name, $volume->error()))
                : array('added' => array($dir));
        }
    }

    /**
     * Create empty file
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function mkfile($args)
    {
        $target = $args['target'];
        $name = str_replace('..', '', $args['name']);

        if (($volume = $this->volume($target)) == false) {
            return array('error' => $this->error(self::ERROR_MKFILE, $name, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target));
        }

        return ($file = $volume->mkfile($target, $name)) == false
            ? array('error' => $this->error(self::ERROR_MKFILE, $name, $volume->error()))
            : array('added' => array($file));
    }

    /**
     * Rename file, Accept multiple items >= API 2.1031
     *
     * @param  array $args
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Naoki Sawada
     */
    protected function rename($args)
    {
        $target = $args['target'];
        $name = $args['name'];
        $query = (!empty($args['q']) && strpos($args['q'], '*') !== false) ? $args['q'] : '';
        $targets = !empty($args['targets'])? $args['targets'] : false;
        $rms = array();
        $notfounds = array();
        $locked = array();
        $errs = array();
        $files = array();
        $removed = array();
        $res = array();
        $type = 'normal';

        if (!($volume = $this->volume($target))) {
            return array('error' => $this->error(self::ERROR_RENAME, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        if (strpos($name,'..') !== false) {
            return array('error' => $this->error('Invalid request', 'rename'));
        }

        if ($targets) {
            array_unshift($targets, $target);
            foreach ($targets as $h) {
                if ($rm = $volume->file($h)) {
                    if ($this->itemLocked($h)) {
                        $locked[] = $rm['name'];
                    } else {
                        $rm['realpath'] = $volume->realpath($h);
                        $rms[] = $rm;
                    }
                } else {
                    $notfounds[] = '#' . $h;
                }
            }
            if (!$rms) {
                $res['error'] = array();
                if ($notfounds) {
                    $res['error'] = array(self::ERROR_RENAME, join(', ', $notfounds), self::ERROR_FILE_NOT_FOUND);
                }
                if ($locked) {
                    array_push($res['error'], self::ERROR_LOCKED, join(', ', $locked));
                }
                return $res;
            }

            $res['warning'] = array();
            if ($notfounds) {
                array_push($res['warning'], self::ERROR_RENAME, join(', ', $notfounds), self::ERROR_FILE_NOT_FOUND);
            }
            if ($locked) {
                array_push($res['warning'], self::ERROR_LOCKED, join(', ', $locked));
            }

            if ($query) {
                // batch rename
                $splits = elFinder::splitFileExtention($query);
                if ($splits[1] && $splits[0] === '*') {
                    $type = 'extention';
                    $name = $splits[1];
                } else if (strlen($splits[0]) > 1) {
                    if (substr($splits[0], -1) === '*') {
                        $type = 'prefix';
                        $name = substr($splits[0], 0, strlen($splits[0]) - 1);
                    } else if (substr($splits[0], 0, 1) === '*') {
                        $type = 'suffix';
                        $name = substr($splits[0], 1);
                    }
                }
                if ($type !== 'normal') {
                    if (!empty($this->listeners['rename.pre'])) {
                        $_args = array('name' => $name);
                        foreach ($this->listeners['rename.pre'] as $handler) {
                            $_res = call_user_func_array($handler, array('rename', &$_args, $this, $volume));
                            if (!empty($_res['preventexec'])) {
                                break;
                            }
                        }
                        $name = $_args['name'];
                    }
                }
            }
            foreach ($rms as $rm) {
                if ($type === 'normal') {
                    $rname = $volume->uniqueName($volume->realpath($rm['phash']), $name, '', false);
                } else {
                    $rname = $name;
                    if ($type === 'extention') {
                        $splits = elFinder::splitFileExtention($rm['name']);
                        $rname = $splits[0] . '.' . $name;
                    } else if ($type === 'prefix') {
                        $rname = $name . $rm['name'];
                    } else if ($type === 'suffix') {
                        $splits = elFinder::splitFileExtention($rm['name']);
                        $rname = $splits[0] . $name . ($splits[1] ? ('.' . $splits[1]) : '');
                    }
                    $rname = $volume->uniqueName($volume->realpath($rm['phash']), $rname, '', true);
                }
                if ($file = $volume->rename($rm['hash'], $rname)) {
                    $files[] = $file;
                    $removed[] = $rm;
                } else {
                    $errs[] = $rm['name'];
                }
            }

            if (!$files) {
                $res['error'] = $this->error(self::ERROR_RENAME, join(', ', $errs), $volume->error());
                if (!$res['warning']) {
                    unset($res['warning']);
                }
                return $res;
            }
            if ($errs) {
                array_push($res['warning'], self::ERROR_RENAME, join(', ', $errs), $volume->error());
            }
            if (!$res['warning']) {
                unset($res['warning']);
            }
            $res['added'] = $files;
            $res['removed'] = $removed;
            return $res;
        } else {
            if (!($rm = $volume->file($target))) {
                return array('error' => $this->error(self::ERROR_RENAME, '#' . $target, self::ERROR_FILE_NOT_FOUND));
            }
            if ($this->itemLocked($target)) {
                return array('error' => $this->error(self::ERROR_LOCKED, $rm['name']));
            }
            $rm['realpath'] = $volume->realpath($target);

            $file = $volume->rename($target, $name);
            if ($file === false) {
                return array('error' => $this->error(self::ERROR_RENAME, $rm['name'], $volume->error()));
            } else {
                if ($file['hash'] !== $rm['hash']) {
                    return array('added' => array($file), 'removed' => array($rm));
                } else {
                    return array('changed' => array($file));
                }
            }
        }
    }

    /**
     * Duplicate file - create copy with "copy %d" suffix
     *
     * @param array $args command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function duplicate($args)
    {
        $targets = is_array($args['targets']) ? $args['targets'] : array();
        $result = array();
        $suffix = empty($args['suffix']) ? 'copy' : $args['suffix'];

        $this->itemLock($targets);

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($volume = $this->volume($target)) == false
                || ($src = $volume->file($target)) == false) {
                $result['warning'] = $this->error(self::ERROR_COPY, '#' . $target, self::ERROR_FILE_NOT_FOUND);
                break;
            }

            if (($file = $volume->duplicate($target, $suffix)) == false) {
                $result['warning'] = $this->error($volume->error());
                break;
            }
        }

        return $result;
    }

    /**
     * Remove dirs/files
     *
     * @param array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function rm($args)
    {
        $targets = is_array($args['targets']) ? $args['targets'] : array();
        $result = array('removed' => array());

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($volume = $this->volume($target)) == false) {
                $result['warning'] = $this->error(self::ERROR_RM, '#' . $target, self::ERROR_FILE_NOT_FOUND);
                break;
            }

            if ($this->itemLocked($target)) {
                $rm = $volume->file($target);
                $result['warning'] = $this->error(self::ERROR_LOCKED, $rm['name']);
                break;
            }

            if (!$volume->rm($target)) {
                $result['warning'] = $this->error($volume->error());
                break;
            }
        }

        return $result;
    }

    /**
     * Return has subdirs
     *
     * @param  array  command arguments
     *
     * @return array
     * @author Dmitry Naoki Sawada
     **/
    protected function subdirs($args)
    {

        $result = array('subdirs' => array());
        $targets = $args['targets'];

        foreach ($targets as $target) {
            if (($volume = $this->volume($target)) !== false) {
                $result['subdirs'][$target] = $volume->subdirs($target) ? 1 : 0;
            }
        }
        return $result;
    }

    /**
     * Gateway for custom contents editor
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Naoki Sawada
     */
    protected function editor($args = array())
    {
        /* @var elFinderEditor $editor */
        $name = $args['name'];
        if (is_array($name)) {
            $res = array();
            foreach ($name as $c) {
                $class = 'elFinderEditor' . $c;
                if (class_exists($class)) {
                    $editor = new $class($this, $args['args']);
                    $res[$c] = $editor->enabled();
                } else {
                    $res[$c] = 0;
                }
            }
            return $res;
        } else {
            $class = 'elFinderEditor' . $name;
            $method = '';
            if (class_exists($class)) {
                $editor = new $class($this, $args['args']);
                $method = $args['method'];
                if ($editor->isAllowedMethod($method) && method_exists($editor, $method)) {
                    return $editor->$method();
                }
            }
            return array('error', $this->error(self::ERROR_UNKNOWN_CMD, 'editor.' . $name . '.' . $method));
        }
    }

    /**
     * Abort current request and make flag file to running check
     *
     * @param array $args
     *
     * @return void
     */
    protected function abort($args = array())
    {
        if (!elFinder::$connectionFlagsPath || $_SERVER['REQUEST_METHOD'] === 'HEAD') {
            return;
        }
        $flagFile = elFinder::$connectionFlagsPath . DIRECTORY_SEPARATOR . 'elfreq%s';
        if (!empty($args['makeFile'])) {
            self::$abortCheckFile = sprintf($flagFile, self::filenameDecontaminate($args['makeFile']));
            touch(self::$abortCheckFile);
            $GLOBALS['elFinderTempFiles'][self::$abortCheckFile] = true;
            return;
        }

        $file = !empty($args['id']) ? sprintf($flagFile, self::filenameDecontaminate($args['id'])) : self::$abortCheckFile;
        $file && is_file($file) && unlink($file);
    }

    /**
     * Validate an URL to prevent SSRF attacks.
     *
     * To prevent any risk of DNS rebinding, always use the IP address resolved by
     * this method, as returned in the array entry `ip`.
     *
     * @param string $url
     *
     * @return false|array
     */
    protected function validate_address($url)
    {
        $info = parse_url($url);
        $host = trim(strtolower($info['host']), '.');
        // do not support IPv6 address
        if (preg_match('/^\[.*\]$/', $host)) {
            return false;
        }
        // do not support non dot host
        if (strpos($host, '.') === false) {
            return false;
        }
        // do not support URL-encoded host
        if (strpos($host, '%') !== false) {
            return false;
        }
        // disallow including "localhost" and "localdomain"
        if (preg_match('/\b(?:localhost|localdomain)\b/', $host)) {
            return false;
        }
        // check IPv4 local loopback, private network and link local
        $ip = gethostbyname($host);
        if (preg_match('/^0x[0-9a-f]+|[0-9]+(?:\.(?:0x[0-9a-f]+|[0-9]+)){1,3}$/', $ip, $m)) {
            $long = (int)sprintf('%u', ip2long($ip));
            if (!$long) {
                return false;
            }
            $local = (int)sprintf('%u', ip2long('127.255.255.255')) >> 24;
            $prv1  = (int)sprintf('%u', ip2long('10.255.255.255')) >> 24;
            $prv2  = (int)sprintf('%u', ip2long('172.31.255.255')) >> 20;
            $prv3  = (int)sprintf('%u', ip2long('192.168.255.255')) >> 16;
            $link  = (int)sprintf('%u', ip2long('169.254.255.255')) >> 16;

            if (!isset($this->uploadAllowedLanIpClasses['local']) && $long >> 24 === $local) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['private_a']) && $long >> 24 === $prv1) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['private_b']) && $long >> 20 === $prv2) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['private_c']) && $long >> 16 === $prv3) {
                return false;
            }
            if (!isset($this->uploadAllowedLanIpClasses['link']) && $long >> 16 === $link) {
                return false;
            }
            $info['ip'] = long2ip($long);
            if (!isset($info['port'])) {
                $info['port'] = $info['scheme'] === 'https' ? 443 : 80;
            }
            if (!isset($info['path'])) {
                $info['path'] = '/';
            }
            return $info;
        } else {
            return false;
        }
    }

    /**
     * Get remote contents
     *
     * @param  string   $url          target url
     * @param  int      $timeout      timeout (sec)
     * @param  int      $redirect_max redirect max count
     * @param  string   $ua
     * @param  resource $fp
     *
     * @return string, resource or bool(false)
     * @retval  string contents
     * @retval  resource conttents
     * @rettval false  error
     * @author  Naoki Sawada
     **/
    protected function get_remote_contents(&$url, $timeout = 30, $redirect_max = 5, $ua = 'Mozilla/5.0', $fp = null)
    {
        if (preg_match('~^(?:ht|f)tps?://[-_.!\~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+~i', $url)) {
            $info = $this->validate_address($url);
            if ($info === false) {
                return false;
            }
            // dose not support 'user' and 'pass' for security reasons
            $url = $info['scheme'].'://'.$info['host'].(!empty($info['port'])? (':'.$info['port']) : '').$info['path'].(!empty($info['query'])? ('?'.$info['query']) : '').(!empty($info['fragment'])? ('#'.$info['fragment']) : '');
            // check by URL upload filter
            if ($this->urlUploadFilter && is_callable($this->urlUploadFilter)) {
                if (!call_user_func_array($this->urlUploadFilter, array($url, $this))) {
                    return false;
                }
            }
            $method = (function_exists('curl_exec')) ? 'curl_get_contents' : 'fsock_get_contents';
            return $this->$method($url, $timeout, $redirect_max, $ua, $fp, $info);
        }
        return false;
    }

    /**
     * Get remote contents with cURL
     *
     * @param  string   $url          target url
     * @param  int      $timeout      timeout (sec)
     * @param  int      $redirect_max redirect max count
     * @param  string   $ua
     * @param  resource $outfp
     *
     * @return string, resource or bool(false)
     * @retval string contents
     * @retval resource conttents
     * @retval false  error
     * @author Naoki Sawada
     **/
    protected function curl_get_contents(&$url, $timeout, $redirect_max, $ua, $outfp, $info)
    {
        if ($redirect_max == 0) {
            return false;
        }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        if ($outfp) {
            curl_setopt($ch, CURLOPT_FILE, $outfp);
        } else {
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
        }
        curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 1);
        curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, $timeout);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);
        curl_setopt($ch, CURLOPT_RESOLVE, array($info['host'] . ':' . $info['port'] . ':' . $info['ip']));
        $result = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if ($http_code == 301 || $http_code == 302) {
            $new_url = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
            $info = $this->validate_address($new_url);
            if ($info === false) {
                return false;
            }
            return $this->curl_get_contents($new_url, $timeout, $redirect_max - 1, $ua, $outfp, $info);
        }
        curl_close($ch);
        return $outfp ? $outfp : $result;
    }

    /**
     * Get remote contents with fsockopen()
     *
     * @param  string   $url          url
     * @param  int      $timeout      timeout (sec)
     * @param  int      $redirect_max redirect max count
     * @param  string   $ua
     * @param  resource $outfp
     *
     * @return string, resource or bool(false)
     * @retval string contents
     * @retval resource conttents
     * @retval false  error
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function fsock_get_contents(&$url, $timeout, $redirect_max, $ua, $outfp, $info)
    {
        $connect_timeout = 3;
        $connect_try = 3;
        $method = 'GET';
        $readsize = 4096;
        $ssl = '';

        $getSize = null;
        $headers = '';

        $arr = $info;
        if ($arr['scheme'] === 'https') {
            $ssl = 'ssl://';
        }

        // query
        $arr['query'] = isset($arr['query']) ? '?' . $arr['query'] : '';

        $url_base = $arr['scheme'] . '://' . $info['host'] . ':' . $info['port'];
        $url_path = isset($arr['path']) ? $arr['path'] : '/';
        $uri = $url_path . $arr['query'];

        $query = $method . ' ' . $uri . " HTTP/1.0\r\n";
        $query .= "Host: " . $arr['host'] . "\r\n";
        $query .= "Accept: */*\r\n";
        $query .= "Connection: close\r\n";
        if (!empty($ua)) $query .= "User-Agent: " . $ua . "\r\n";
        if (!is_null($getSize)) $query .= 'Range: bytes=0-' . ($getSize - 1) . "\r\n";

        $query .= $headers;

        $query .= "\r\n";

        $fp = $connect_try_count = 0;
        while (!$fp && $connect_try_count < $connect_try) {

            $errno = 0;
            $errstr = "";
            $fp = fsockopen(
                $ssl . $arr['host'],
                $arr['port'],
                $errno, $errstr, $connect_timeout);
            if ($fp) break;
            $connect_try_count++;
            if (connection_aborted()) {
                throw new elFinderAbortException();
            }
            sleep(1); // wait 1sec
        }

        if (!$fp) {
            return false;
        }

        $fwrite = 0;
        for ($written = 0; $written < strlen($query); $written += $fwrite) {
            $fwrite = fwrite($fp, substr($query, $written));
            if (!$fwrite) {
                break;
            }
        }

        if ($timeout) {
            socket_set_timeout($fp, $timeout);
        }

        $_response = '';
        $header = '';
        while ($_response !== "\r\n") {
            $_response = fgets($fp, $readsize);
            $header .= $_response;
        };

        $rccd = array_pad(explode(' ', $header, 2), 2, ''); // array('HTTP/1.1','200')
        $rc = (int)$rccd[1];

        $ret = false;
        // Redirect
        switch ($rc) {
            case 307: // Temporary Redirect
            case 303: // See Other
            case 302: // Moved Temporarily
            case 301: // Moved Permanently
                $matches = array();
                if (preg_match('/^Location: (.+?)(#.+)?$/im', $header, $matches) && --$redirect_max > 0) {
                    $_url = $url;
                    $url = trim($matches[1]);
                    if (!preg_match('/^https?:\//', $url)) { // no scheme
                        if ($url[0] != '/') { // Relative path
                            // to Absolute path
                            $url = substr($url_path, 0, strrpos($url_path, '/')) . '/' . $url;
                        }
                        // add sheme,host
                        $url = $url_base . $url;
                    }
                    if ($_url === $url) {
                        sleep(1);
                    }
                    fclose($fp);
                    $info = $this->validate_address($url);
                    if ($info === false) {
                        return false;
                    }
                    return $this->fsock_get_contents($url, $timeout, $redirect_max, $ua, $outfp, $info);
                }
                break;
            case 200:
                $ret = true;
        }
        if (!$ret) {
            fclose($fp);
            return false;
        }

        $body = '';
        if (!$outfp) {
            $outfp = fopen('php://temp', 'rwb');
            $body = true;
        }
        while (fwrite($outfp, fread($fp, $readsize))) {
            if ($timeout) {
                $_status = socket_get_status($fp);
                if ($_status['timed_out']) {
                    fclose($outfp);
                    fclose($fp);
                    return false; // Request Time-out
                }
            }
        }
        if ($body) {
            rewind($outfp);
            $body = stream_get_contents($outfp);
            fclose($outfp);
            $outfp = null;
        }

        fclose($fp);

        return $outfp ? $outfp : $body; // Data
    }

    /**
     * Parse Data URI scheme
     *
     * @param  string $str
     * @param  array  $extTable
     * @param  array  $args
     *
     * @return array
     * @author Naoki Sawada
     */
    protected function parse_data_scheme($str, $extTable, $args = null)
    {
        $data = $name = $mime = '';
        // Scheme 'data://' require `allow_url_fopen` and `allow_url_include`
        if ($fp = fopen('data://' . substr($str, 5), 'rb')) {
            if ($data = stream_get_contents($fp)) {
                $meta = stream_get_meta_data($fp);
                $mime = $meta['mediatype'];
            }
            fclose($fp);
        } else if (preg_match('~^data:(.+?/.+?)?(?:;charset=.+?)?;base64,~', substr($str, 0, 128), $m)) {
            $data = base64_decode(substr($str, strlen($m[0])));
            if ($m[1]) {
                $mime = $m[1];
            }
        }
        if ($data) {
            $ext = ($mime && isset($extTable[$mime])) ? '.' . $extTable[$mime] : '';
            // Set name if name eq 'image.png' and $args has 'name' array, e.g. clipboard data
            if (is_array($args['name']) && isset($args['name'][0])) {
                $name = $args['name'][0];
                if ($ext) {
                    $name = preg_replace('/\.[^.]*$/', '', $name);
                }
            } else {
                $name = substr(md5($data), 0, 8);
            }
            $name .= $ext;
        } else {
            $data = $name = '';
        }
        return array($data, $name);
    }

    /**
     * Detect file MIME Type by local path
     *
     * @param  string $path Local path
     *
     * @return string file MIME Type
     * @author Naoki Sawada
     */
    protected function detectMimeType($path)
    {
        static $type, $finfo;
        if (!$type) {
            if (class_exists('finfo', false)) {
                $tmpFileInfo = explode(';', finfo_file(finfo_open(FILEINFO_MIME), __FILE__));
            } else {
                $tmpFileInfo = false;
            }
            $regexp = '/text\/x\-(php|c\+\+)/';
            if ($tmpFileInfo && preg_match($regexp, array_shift($tmpFileInfo))) {
                $type = 'finfo';
                $finfo = finfo_open(FILEINFO_MIME);
            } elseif (function_exists('mime_content_type')
                && ($_ctypes = explode(';', mime_content_type(__FILE__)))
                && preg_match($regexp, array_shift($_ctypes))) {
                $type = 'mime_content_type';
            } elseif (function_exists('getimagesize')) {
                $type = 'getimagesize';
            } else {
                $type = 'none';
            }
        }

        $mime = '';
        if ($type === 'finfo') {
            $mime = finfo_file($finfo, $path);
        } elseif ($type === 'mime_content_type') {
            $mime = mime_content_type($path);
        } elseif ($type === 'getimagesize') {
            if ($img = getimagesize($path)) {
                $mime = $img['mime'];
            }
        }

        if ($mime) {
            $mime = explode(';', $mime);
            $mime = trim($mime[0]);

            if (in_array($mime, array('application/x-empty', 'inode/x-empty'))) {
                // finfo return this mime for empty files
                $mime = 'text/plain';
            } elseif ($mime == 'application/x-zip') {
                // http://elrte.org/redmine/issues/163
                $mime = 'application/zip';
            }
        }

        return $mime ? $mime : 'unknown';
    }

    /**
     * Detect file type extension by local path
     *
     * @param  object $volume elFinderVolumeDriver instance
     * @param  string $path   Local path
     * @param  string $name   Filename to save
     *
     * @return string file type extension with dot
     * @author Naoki Sawada
     */
    protected function detectFileExtension($volume, $path, $name)
    {
        $mime = $this->detectMimeType($path);
        if ($mime === 'unknown') {
            $mime = 'application/octet-stream';
        }
        $ext = $volume->getExtentionByMime($volume->mimeTypeNormalize($mime, $name));
        return $ext ? ('.' . $ext) : '';
    }

    /**
     * Get temporary directory path
     *
     * @param  string $volumeTempPath
     *
     * @return string
     * @author Naoki Sawada
     */
    private function getTempDir($volumeTempPath = null)
    {
        $testDirs = array();
        if ($this->uploadTempPath) {
            $testDirs[] = rtrim(realpath($this->uploadTempPath), DIRECTORY_SEPARATOR);
        }
        if ($volumeTempPath) {
            $testDirs[] = rtrim(realpath($volumeTempPath), DIRECTORY_SEPARATOR);
        }
        if (elFinder::$commonTempPath) {
            $testDirs[] = elFinder::$commonTempPath;
        }
        $tempDir = '';
        foreach ($testDirs as $testDir) {
            if (!$testDir || !is_dir($testDir)) continue;
            if (is_writable($testDir)) {
                $tempDir = $testDir;
                $gc = time() - 3600;
                foreach (glob($tempDir . DIRECTORY_SEPARATOR . 'ELF*') as $cf) {
                    if (filemtime($cf) < $gc) {
                        unlink($cf);
                    }
                }
                break;
            }
        }
        return $tempDir;
    }

    /**
     * chmod
     *
     * @param array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author David Bartle
     */
    protected function chmod($args)
    {
        $targets = $args['targets'];
        $mode = intval((string)$args['mode'], 8);

        if (!is_array($targets)) {
            $targets = array($targets);
        }

        $result = array();

        if (($volume = $this->volume($targets[0])) == false) {
            $result['error'] = $this->error(self::ERROR_CONF_NO_VOL);
            return $result;
        }

        $this->itemLock($targets);

        $files = array();
        $errors = array();
        foreach ($targets as $target) {
            elFinder::checkAborted();

            $file = $volume->chmod($target, $mode);
            if ($file) {
                $files = array_merge($files, is_array($file) ? $file : array($file));
            } else {
                $errors = array_merge($errors, $volume->error());
            }
        }

        if ($files) {
            $result['changed'] = $files;
            if ($errors) {
                $result['warning'] = $this->error($errors);
            }
        } else {
            $result['error'] = $this->error($errors);
        }

        return $result;
    }

    /**
     * Check chunked upload files
     *
     * @param string $tmpname uploaded temporary file path
     * @param string $chunk   uploaded chunk file name
     * @param string $cid     uploaded chunked file id
     * @param string $tempDir temporary dirctroy path
     * @param null   $volume
     *
     * @return array|null
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    private function checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume = null)
    {
        /* @var elFinderVolumeDriver $volume */
        if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
            $fname = $m[1];
            $encname = md5($cid . '_' . $fname);
            $base = $tempDir . DIRECTORY_SEPARATOR . 'ELF' . $encname;
            $clast = intval($m[3]);
            if (is_null($tmpname)) {
                ignore_user_abort(true);
                // chunked file upload fail
                foreach (glob($base . '*') as $cf) {
                    unlink($cf);
                }
                ignore_user_abort(false);
                return null;
            }

            $range = isset($_POST['range']) ? trim($_POST['range']) : '';
            if ($range && preg_match('/^(\d+),(\d+),(\d+)$/', $range, $ranges)) {
                $start = $ranges[1];
                $len = $ranges[2];
                $size = $ranges[3];
                $tmp = $base . '.part';
                $csize = filesize($tmpname);

                $tmpExists = is_file($tmp);
                if (!$tmpExists) {
                    // check upload max size
                    $uploadMaxSize = $volume ? $volume->getUploadMaxSize() : 0;
                    if ($uploadMaxSize > 0 && $size > $uploadMaxSize) {
                        return array(self::ERROR_UPLOAD_FILE_SIZE, false);
                    }
                    // make temp file
                    $ok = false;
                    if ($fp = fopen($tmp, 'wb')) {
                        flock($fp, LOCK_EX);
                        $ok = ftruncate($fp, $size);
                        flock($fp, LOCK_UN);
                        fclose($fp);
                        touch($base);
                    }
                    if (!$ok) {
                        unlink($tmp);
                        return array(self::ERROR_UPLOAD_TEMP, false);
                    }
                } else {
                    // wait until makeing temp file (for anothor session)
                    $cnt = 1200; // Time limit 120 sec
                    while (!is_file($base) && --$cnt) {
                        usleep(100000); // wait 100ms
                    }
                    if (!$cnt) {
                        return array(self::ERROR_UPLOAD_TEMP, false);
                    }
                }

                // check size info
                if ($len != $csize || $start + $len > $size || ($tmpExists && $size != filesize($tmp))) {
                    return array(self::ERROR_UPLOAD_TEMP, false);
                }

                // write chunk data
                $src = fopen($tmpname, 'rb');
                $fp = fopen($tmp, 'cb');
                fseek($fp, $start);
                $writelen = stream_copy_to_stream($src, $fp, $len);
                fclose($fp);
                fclose($src);

                try {
                    // to check connection is aborted
                    elFinder::checkAborted();
                } catch (elFinderAbortException $e) {
                    unlink($tmpname);
                    is_file($tmp) && unlink($tmp);
                    is_file($base) && unlink($base);
                    throw $e;
                }

                if ($writelen != $len) {
                    return array(self::ERROR_UPLOAD_TEMP, false);
                }

                // write counts
                file_put_contents($base, "\0", FILE_APPEND | LOCK_EX);

                if (filesize($base) >= $clast + 1) {
                    // Completion
                    unlink($base);
                    return array($tmp, $fname);
                }
            } else {
                // old way
                $part = $base . $m[2];
                if (move_uploaded_file($tmpname, $part)) {
                    chmod($part, 0600);
                    if ($clast < count(glob($base . '*'))) {
                        $parts = array();
                        for ($i = 0; $i <= $clast; $i++) {
                            $name = $base . '.' . $i . '_' . $clast;
                            if (is_readable($name)) {
                                $parts[] = $name;
                            } else {
                                $parts = null;
                                break;
                            }
                        }
                        if ($parts) {
                            if (!is_file($base)) {
                                touch($base);
                                if ($resfile = tempnam($tempDir, 'ELF')) {
                                    $target = fopen($resfile, 'wb');
                                    foreach ($parts as $f) {
                                        $fp = fopen($f, 'rb');
                                        while (!feof($fp)) {
                                            fwrite($target, fread($fp, 8192));
                                        }
                                        fclose($fp);
                                        unlink($f);
                                    }
                                    fclose($target);
                                    unlink($base);
                                    return array($resfile, $fname);
                                }
                                unlink($base);
                            }
                        }
                    }
                }
            }
        }
        return array('', '');
    }

    /**
     * Save uploaded files
     *
     * @param  array
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function upload($args)
    {
        $ngReg = '/[\/\\?*:|"<>]/';
        $target = $args['target'];
        $volume = $this->volume($target);
        $files = isset($args['FILES']['upload']) && is_array($args['FILES']['upload']) ? $args['FILES']['upload'] : array();
        $header = empty($args['html']) ? array() : array('header' => 'Content-Type: text/html; charset=utf-8');
        $result = array_merge(array('added' => array()), $header);
        $paths = $args['upload_path'] ? $args['upload_path'] : array();
        $chunk = $args['chunk'] ? $args['chunk'] : '';
        $cid = $args['cid'] ? (int)$args['cid'] : '';
        $mtimes = $args['mtime'] ? $args['mtime'] : array();
        $tmpfname = '';

        if (!$volume) {
            return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target)), $header);
        }

        // check $chunk
        if (strpos($chunk, '/') !== false || strpos($chunk, '\\') !== false) {
            return array('error' => $this->error(self::ERROR_UPLOAD));
        }

        if ($args['overwrite'] !== '') {
            $volume->setUploadOverwrite($args['overwrite']);
        }

        $renames = $hashes = array();
        $suffix = '~';
        if ($args['renames'] && is_array($args['renames'])) {
            $renames = array_flip($args['renames']);
            if (is_string($args['suffix']) && !preg_match($ngReg, $args['suffix'])) {
                $suffix = $args['suffix'];
            }
        }
        if ($args['hashes'] && is_array($args['hashes'])) {
            $hashes = array_flip($args['hashes']);
        }

        $this->itemLock($target);

        // file extentions table by MIME
        $extTable = array_flip(array_unique($volume->getMimeTable()));

        if (empty($files)) {
            if (isset($args['upload']) && is_array($args['upload']) && ($tempDir = $this->getTempDir($volume->getTempPath()))) {
                $names = array();
                foreach ($args['upload'] as $i => $url) {
                    // check chunked file upload commit
                    if ($chunk) {
                        if ($url === 'chunkfail' && $args['mimes'] === 'chunkfail') {
                            $this->checkChunkedFile(null, $chunk, $cid, $tempDir);
                            if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
                                $result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], self::ERROR_UPLOAD_TEMP);
                            }
                            return $result;
                        } else {
                            $tmpfname = $tempDir . '/' . $chunk;
                            $files['tmp_name'][$i] = $tmpfname;
                            $files['name'][$i] = $url;
                            $files['error'][$i] = 0;
                            $GLOBALS['elFinderTempFiles'][$tmpfname] = true;
                            break;
                        }
                    }

                    $tmpfname = $tempDir . DIRECTORY_SEPARATOR . 'ELF_FATCH_' . md5($url . microtime(true));
                    $GLOBALS['elFinderTempFiles'][$tmpfname] = true;

                    $_name = '';
                    // check is data:
                    if (substr($url, 0, 5) === 'data:') {
                        list($data, $args['name'][$i]) = $this->parse_data_scheme($url, $extTable, $args);
                    } else {
                        $fp = fopen($tmpfname, 'wb');
                        if ($data = $this->get_remote_contents($url, 30, 5, 'Mozilla/5.0', $fp)) {
                            // to check connection is aborted
                            try {
                                elFinder::checkAborted();
                            } catch(elFinderAbortException $e) {
                                fclose($fp);
                                throw $e;
                            }
                            $_name = preg_replace('~^.*?([^/#?]+)(?:\?.*)?(?:#.*)?$~', '$1', rawurldecode($url));
                            // Check `Content-Disposition` response header
                            if (($headers = get_headers($url, true)) && !empty($headers['Content-Disposition'])) {
                                if (preg_match('/filename\*=(?:([a-zA-Z0-9_-]+?)\'\')"?([a-z0-9_.~%-]+)"?/i', $headers['Content-Disposition'], $m)) {
                                    $_name = rawurldecode($m[2]);
                                    if ($m[1] && strtoupper($m[1]) !== 'UTF-8' && function_exists('mb_convert_encoding')) {
                                        $_name = mb_convert_encoding($_name, 'UTF-8', $m[1]);
                                    }
                                } else if (preg_match('/filename="?([ a-z0-9_.~%-]+)"?/i', $headers['Content-Disposition'], $m)) {
                                    $_name = rawurldecode($m[1]);
                                }
                            }
                        } else {
                            fclose($fp);
                        }
                    }
                    if ($data) {
                        if (isset($args['name'][$i])) {
                            $_name = $args['name'][$i];
                        }
                        if ($_name) {
                            $_ext = '';
                            if (preg_match('/(\.[a-z0-9]{1,7})$/', $_name, $_match)) {
                                $_ext = $_match[1];
                            }
                            if ((is_resource($data) && fclose($data)) || file_put_contents($tmpfname, $data)) {
                                $GLOBALS['elFinderTempFiles'][$tmpfname] = true;
                                $_name = preg_replace($ngReg, '_', $_name);
                                list($_a, $_b) = array_pad(explode('.', $_name, 2), 2, '');
                                if ($_b === '') {
                                    if ($_ext) {
                                        rename($tmpfname, $tmpfname . $_ext);
                                        $tmpfname = $tmpfname . $_ext;
                                    }
                                    $_b = $this->detectFileExtension($volume, $tmpfname, $_name);
                                    $_name = $_a . $_b;
                                } else {
                                    $_b = '.' . $_b;
                                }
                                if (isset($names[$_name])) {
                                    $_name = $_a . '_' . $names[$_name]++ . $_b;
                                } else {
                                    $names[$_name] = 1;
                                }
                                $files['tmp_name'][$i] = $tmpfname;
                                $files['name'][$i] = $_name;
                                $files['error'][$i] = 0;
                                // set to auto rename
                                $volume->setUploadOverwrite(false);
                            } else {
                                unlink($tmpfname);
                            }
                        }
                    }
                }
            }
            if (empty($files)) {
                return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_UPLOAD_NO_FILES)), $header);
            }
        }

        $addedDirs = array();
        $errors = array();
        foreach ($files['name'] as $i => $name) {
            if (($error = $files['error'][$i]) > 0) {
                $result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $name, $error == UPLOAD_ERR_INI_SIZE || $error == UPLOAD_ERR_FORM_SIZE ? self::ERROR_UPLOAD_FILE_SIZE : self::ERROR_UPLOAD_TRANSFER, $error);
                $this->uploadDebug = 'Upload error code: ' . $error;
                break;
            }

            $tmpname = $files['tmp_name'][$i];
            $thash = ($paths && isset($paths[$i])) ? $paths[$i] : $target;
            $mtime = isset($mtimes[$i]) ? $mtimes[$i] : 0;
            if ($name === 'blob') {
                if ($chunk) {
                    if ($tempDir = $this->getTempDir($volume->getTempPath())) {
                        list($tmpname, $name) = $this->checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume);
                        if ($tmpname) {
                            if ($name === false) {
                                preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m);
                                $result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], $tmpname);
                                $result['_chunkfailure'] = true;
                                $this->uploadDebug = 'Upload error: ' . $tmpname;
                            } else if ($name) {
                                $result['_chunkmerged'] = basename($tmpname);
                                $result['_name'] = $name;
                                $result['_mtime'] = $mtime;
                            }
                        }
                    } else {
                        $result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $chunk, self::ERROR_UPLOAD_TEMP);
                        $this->uploadDebug = 'Upload error: unable open tmp file';
                    }
                    return $result;
                } else {
                    // for form clipboard with Google Chrome or Opera
                    $name = 'image.png';
                }
            }

            // Set name if name eq 'image.png' and $args has 'name' array, e.g. clipboard data
            if (strtolower(substr($name, 0, 5)) === 'image' && is_array($args['name']) && isset($args['name'][$i])) {
                $type = $files['type'][$i];
                $name = $args['name'][$i];
                $ext = isset($extTable[$type]) ? '.' . $extTable[$type] : '';
                if ($ext) {
                    $name = preg_replace('/\.[^.]*$/', '', $name);
                }
                $name .= $ext;
            }

            // do hook function 'upload.presave'
            try {
                $this->trigger('upload.presave', array(&$thash, &$name, $tmpname, $this, $volume), $errors);
            } catch (elFinderTriggerException $e) {
                if (!is_uploaded_file($tmpname) && unlink($tmpname) && $tmpfname) {
                    unset($GLOBALS['elFinderTempFiles'][$tmpfname]);
                }
                continue;
            }

            clearstatcache();
            if ($mtime && is_file($tmpname)) {
                // for keep timestamp option in the LocalFileSystem volume
                touch($tmpname, $mtime);
            }

            $fp = null;
            if (!is_file($tmpname) || ($fp = fopen($tmpname, 'rb')) === false) {
                $errors = array_merge($errors, array(self::ERROR_UPLOAD_FILE, $name, ($fp === false? self::ERROR_UPLOAD_TEMP : self::ERROR_UPLOAD_TRANSFER)));
                $this->uploadDebug = 'Upload error: unable open tmp file';
                if (!is_uploaded_file($tmpname)) {
                    if (unlink($tmpname) && $tmpfname) unset($GLOBALS['elFinderTempFiles'][$tmpfname]);
                    continue;
                }
                break;
            }
            $rnres = array();
            if ($thash !== '' && $thash !== $target) {
                if ($dir = $volume->dir($thash)) {
                    $_target = $thash;
                    if (!isset($addedDirs[$thash])) {
                        $addedDirs[$thash] = true;
                        $result['added'][] = $dir;
                        // to support multi-level directory creation
                        $_phash = isset($dir['phash']) ? $dir['phash'] : null;
                        while ($_phash && !isset($addedDirs[$_phash]) && $_phash !== $target) {
                            if ($_dir = $volume->dir($_phash)) {
                                $addedDirs[$_phash] = true;
                                $result['added'][] = $_dir;
                                $_phash = isset($_dir['phash']) ? $_dir['phash'] : null;
                            } else {
                                break;
                            }
                        }
                    }
                } else {
                    $result['error'] = $this->error(self::ERROR_UPLOAD, self::ERROR_TRGDIR_NOT_FOUND, 'hash@' . $thash);
                    break;
                }
            } else {
                $_target = $target;
                // file rename for backup
                if (isset($renames[$name])) {
                    $dir = $volume->realpath($_target);
                    if (isset($hashes[$name])) {
                        $hash = $hashes[$name];
                    } else {
                        $hash = $volume->getHash($dir, $name);
                    }
                    $rnres = $this->rename(array('target' => $hash, 'name' => $volume->uniqueName($dir, $name, $suffix, true, 0)));
                    if (!empty($rnres['error'])) {
                        $result['warning'] = $rnres['error'];
                        if (!is_array($rnres['error'])) {
                            $errors = array_push($errors, $rnres['error']);
                        } else {
                            $errors = array_merge($errors, $rnres['error']);
                        }
                        continue;
                    }
                }
            }
            if (!$_target || ($file = $volume->upload($fp, $_target, $name, $tmpname, ($_target === $target) ? $hashes : array())) === false) {
                $errors = array_merge($errors, $this->error(self::ERROR_UPLOAD_FILE, $name, $volume->error()));
                fclose($fp);
                if (!is_uploaded_file($tmpname) && unlink($tmpname)) {
                    unset($GLOBALS['elFinderTempFiles'][$tmpname]);
                }
                continue;
            }

            is_resource($fp) && fclose($fp);
            if (!is_uploaded_file($tmpname)) {
                clearstatcache();
                if (!is_file($tmpname) || unlink($tmpname)) {
                    unset($GLOBALS['elFinderTempFiles'][$tmpname]);
                }
            }
            $result['added'][] = $file;
            if ($rnres) {
                $result = array_merge_recursive($result, $rnres);
            }
        }

        if ($errors) {
            $result['warning'] = $errors;
        }

        if ($GLOBALS['elFinderTempFiles']) {
            foreach (array_keys($GLOBALS['elFinderTempFiles']) as $_temp) {
                is_file($_temp) && is_writable($_temp) && unlink($_temp);
            }
        }
        $result['removed'] = $volume->removed();

        if (!empty($args['node'])) {
            $result['callback'] = array(
                'node' => $args['node'],
                'bind' => 'upload'
            );
        }
        return $result;
    }

    /**
     * Copy/move files into new destination
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function paste($args)
    {
        $dst = $args['dst'];
        $targets = is_array($args['targets']) ? $args['targets'] : array();
        $cut = !empty($args['cut']);
        $error = $cut ? self::ERROR_MOVE : self::ERROR_COPY;
        $result = array('changed' => array(), 'added' => array(), 'removed' => array(), 'warning' => array());

        if (($dstVolume = $this->volume($dst)) == false) {
            return array('error' => $this->error($error, '#' . $targets[0], self::ERROR_TRGDIR_NOT_FOUND, '#' . $dst));
        }

        $this->itemLock($dst);

        $hashes = $renames = array();
        $suffix = '~';
        if (!empty($args['renames'])) {
            $renames = array_flip($args['renames']);
            if (is_string($args['suffix']) && !preg_match('/[\/\\?*:|"<>]/', $args['suffix'])) {
                $suffix = $args['suffix'];
            }
        }
        if (!empty($args['hashes'])) {
            $hashes = array_flip($args['hashes']);
        }

        foreach ($targets as $target) {
            elFinder::checkAborted();

            if (($srcVolume = $this->volume($target)) == false) {
                $result['warning'] = array_merge($result['warning'], $this->error($error, '#' . $target, self::ERROR_FILE_NOT_FOUND));
                continue;
            }

            $rnres = array();
            if ($renames) {
                $file = $srcVolume->file($target);
                if (isset($renames[$file['name']])) {
                    $dir = $dstVolume->realpath($dst);
                    $dstName = $file['name'];
                    if ($srcVolume !== $dstVolume) {
                        $errors = array();
                        try {
                            $this->trigger('paste.copyfrom', array(&$dst, &$dstName, '', $this, $dstVolume), $errors);
                        } catch (elFinderTriggerException $e) {
                            $result['warning'] = array_merge($result['warning'], $errors);
                            continue;
                        }
                    }
                    if (isset($hashes[$file['name']])) {
                        $hash = $hashes[$file['name']];
                    } else {
                        $hash = $dstVolume->getHash($dir, $dstName);
                    }
                    $rnres = $this->rename(array('target' => $hash, 'name' => $dstVolume->uniqueName($dir, $dstName, $suffix, true, 0)));
                    if (!empty($rnres['error'])) {
                        $result['warning'] = array_merge($result['warning'], $rnres['error']);
                        continue;
                    }
                }
            }

            if ($cut && $this->itemLocked($target)) {
                $rm = $srcVolume->file($target);
                $result['warning'] = array_merge($result['warning'], $this->error(self::ERROR_LOCKED, $rm['name']));
                continue;
            }

            if (($file = $dstVolume->paste($srcVolume, $target, $dst, $cut, $hashes)) == false) {
                $result['warning'] = array_merge($result['warning'], $this->error($dstVolume->error()));
                continue;
            }

            if ($error = $dstVolume->error()) {
                $result['warning'] = array_merge($result['warning'], $this->error($error));
            }

            if ($rnres) {
                $result = array_merge_recursive($result, $rnres);
            }
        }
        if (count($result['warning']) < 1) {
            unset($result['warning']);
        } else {
            $result['sync'] = true;
        }

        return $result;
    }

    /**
     * Return file content
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function get($args)
    {
        $target = $args['target'];
        $volume = $this->volume($target);
        $enc = false;

        if (!$volume || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        if ($volume->commandDisabled('get')) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target, self::ERROR_ACCESS_DENIED));
        }

        if (($content = $volume->getContents($target)) === false) {
            return array('error' => $this->error(self::ERROR_OPEN, $volume->path($target), $volume->error()));
        }

        $mime = isset($file['mime']) ? $file['mime'] : '';
        if ($mime && (strtolower(substr($mime, 0, 4)) === 'text' || in_array(strtolower($mime), self::$textMimes))) {
            $enc = '';
            if ($content !== '') {
                if (!$args['conv'] || $args['conv'] == '1') {
                    // detect encoding
                    if (function_exists('mb_detect_encoding')) {
                        if ($enc = mb_detect_encoding($content, mb_detect_order(), true)) {
                            $encu = strtoupper($enc);
                            if ($encu === 'UTF-8' || $encu === 'ASCII') {
                                $enc = '';
                            }
                        } else {
                            $enc = 'unknown';
                        }
                    } else if (!preg_match('//u', $content)) {
                        $enc = 'unknown';
                    }
                    if ($enc === 'unknown') {
                        $enc = $volume->getOption('encoding');
                        if (!$enc || strtoupper($enc) === 'UTF-8') {
                            $enc = 'unknown';
                        }
                    }
                    // call callbacks 'get.detectencoding'
                    if (!empty($this->listeners['get.detectencoding'])) {
                        foreach ($this->listeners['get.detectencoding'] as $handler) {
                            call_user_func_array($handler, array('get', &$enc, array_merge($args, array('content' => $content)), $this, $volume));
                        }
                    }
                    if ($enc && $enc !== 'unknown') {
                        $errlev = error_reporting();
                        error_reporting($errlev ^ E_NOTICE);
                        $utf8 = iconv($enc, 'UTF-8', $content);
                        if ($utf8 === false && function_exists('mb_convert_encoding')) {
                            error_reporting($errlev ^ E_WARNING);
                            $utf8 = mb_convert_encoding($content, 'UTF-8', $enc);
                            if (mb_convert_encoding($utf8, $enc, 'UTF-8') !== $content) {
                                $enc = 'unknown';
                            }
                        } else {
                            if ($utf8 === false || iconv('UTF-8', $enc, $utf8) !== $content) {
                                $enc = 'unknown';
                            }
                        }
                        error_reporting($errlev);
                        if ($enc !== 'unknown') {
                            $content = $utf8;
                        }
                    }
                    if ($enc) {
                        if ($args['conv'] == '1') {
                            $args['conv'] = '';
                            if ($enc === 'unknown') {
                                $content = false;
                            }
                        } else if ($enc === 'unknown') {
                            return array('doconv' => $enc);
                        }
                    }
                    if ($args['conv'] == '1') {
                        $args['conv'] = '';
                    }
                }
                if ($args['conv']) {
                    $enc = $args['conv'];
                    if (strtoupper($enc) !== 'UTF-8') {
                        $_content = $content;
                        $errlev = error_reporting();
                        $this->setToastErrorHandler(array(
                            'prefix' => 'Notice: '
                        ));
                        error_reporting($errlev | E_NOTICE | E_WARNING);
                        $content = iconv($enc, 'UTF-8//TRANSLIT', $content);
                        if ($content === false && function_exists('mb_convert_encoding')) {
                            $content = mb_convert_encoding($_content, 'UTF-8', $enc);
                        }
                        error_reporting($errlev);
                        $this->setToastErrorHandler(false);
                    } else {
                        $enc = '';
                    }
                }
            }
        } else {
            $content = 'data:' . ($mime ? $mime : 'application/octet-stream') . ';base64,' . base64_encode($content);
        }

        if ($enc !== false) {
            $json = false;
            if ($content !== false) {
                $json = json_encode($content);
            }
            if ($content === false || $json === false || strlen($json) < strlen($content)) {
                return array('doconv' => 'unknown');
            }
        }

        $res = array(
            'header' => array(
                'Content-Type: application/json'
            ),
            'content' => $content
        );

        // add cache control headers
        if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
            $res['header'] = array_merge($res['header'], $cacheHeaders);
        }

        if ($enc) {
            $res['encoding'] = $enc;
        }
        return $res;
    }

    /**
     * Save content into text file
     *
     * @param $args
     *
     * @return array
     * @author Dmitry (dio) Levashov
     */
    protected function put($args)
    {
        $target = $args['target'];
        $encoding = isset($args['encoding']) ? $args['encoding'] : '';

        if (($volume = $this->volume($target)) == false
            || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_SAVE, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        $this->itemLock($target);

        if ($encoding === 'scheme') {
            if (preg_match('~^https?://~i', $args['content'])) {
                /** @var resource $fp */
                $fp = $this->get_remote_contents($args['content'], 30, 5, 'Mozilla/5.0', $volume->tmpfile());
                if (!$fp) {
                    return array('error' => self::ERROR_SAVE, $args['content'], self::ERROR_FILE_NOT_FOUND);
                }
                $fmeta = stream_get_meta_data($fp);
                $mime = $this->detectMimeType($fmeta['uri']);
                if ($mime === 'unknown') {
                    $mime = 'application/octet-stream';
                }
                $mime = $volume->mimeTypeNormalize($mime, $file['name']);
                $args['content'] = 'data:' . $mime . ';base64,' . base64_encode(file_get_contents($fmeta['uri']));
            }
            $encoding = '';
            $args['content'] = "\0" . $args['content'];
        } else if ($encoding === 'hash') {
            $_hash = $args['content'];
            if ($_src = $this->getVolume($_hash)) {
                if ($_file = $_src->file($_hash)) {
                    if ($_data = $_src->getContents($_hash)) {
                        $args['content'] = 'data:' . $file['mime'] . ';base64,' . base64_encode($_data);
                    }
                }
            }
            $encoding = '';
            $args['content'] = "\0" . $args['content'];
        }
        if ($encoding) {
            $content = iconv('UTF-8', $encoding, $args['content']);
            if ($content === false && function_exists('mb_detect_encoding')) {
                $content = mb_convert_encoding($args['content'], $encoding, 'UTF-8');
            }
            if ($content !== false) {
                $args['content'] = $content;
            }
        }
        if (($file = $volume->putContents($target, $args['content'])) == false) {
            return array('error' => $this->error(self::ERROR_SAVE, $volume->path($target), $volume->error()));
        }

        return array('changed' => array($file));
    }

    /**
     * Extract files from archive
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     **/
    protected function extract($args)
    {
        $target = $args['target'];
        $makedir = isset($args['makedir']) ? (bool)$args['makedir'] : null;

        if(strpos($target,'..') !== false){
            return array('error' => $this->error(self::ERROR_EXTRACT, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        if (($volume = $this->volume($target)) == false
            || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_EXTRACT, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        $res = array();
        if ($file = $volume->extract($target, $makedir)) {
            $res['added'] = isset($file['read']) ? array($file) : $file;
            if ($err = $volume->error()) {
                $res['warning'] = $err;
            }
        } else {
            $res['error'] = $this->error(self::ERROR_EXTRACT, $volume->path($target), $volume->error());
        }
        return $res;
    }

    /**
     * Create archive
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws Exception
     * @author Dmitry (dio) Levashov,
     * @author Alexey Sukhotin
     */
    protected function archive($args)
    {
        $targets = isset($args['targets']) && is_array($args['targets']) ? $args['targets'] : array();
        $name = isset($args['name']) ? $args['name'] : '';

        if(strpos($name,'..') !== false){
            return $this->error('Invalid Request.', self::ERROR_TRGDIR_NOT_FOUND);
        }

        $targets = array_filter($targets, array($this, 'volume'));
        if (!$targets || ($volume = $this->volume($targets[0])) === false) {
            return $this->error(self::ERROR_ARCHIVE, self::ERROR_TRGDIR_NOT_FOUND);
        }

        foreach ($targets as $target) {
            $explodedStr = explode('l1_', $target);
            $targetFolderName = base64_decode($explodedStr[1]);
            if(strpos($targetFolderName,'..') !== false){
                return $this->error('Invalid Request.', self::ERROR_TRGDIR_NOT_FOUND);
            }
            $this->itemLock($target);
        }

        return ($file = $volume->archive($targets, $args['type'], $name))
            ? array('added' => array($file))
            : array('error' => $this->error(self::ERROR_ARCHIVE, $volume->error()));
    }

    /**
     * Search files
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry Levashov
     */
    protected function search($args)
    {
        $q = trim($args['q']);
        $mimes = !empty($args['mimes']) && is_array($args['mimes']) ? $args['mimes'] : array();
        $target = !empty($args['target']) ? $args['target'] : null;
        $type = !empty($args['type']) ? $args['type'] : null;
        $result = array();
        $errors = array();

        if ($target) {
            if ($volume = $this->volume($target)) {
                $result = $volume->search($q, $mimes, $target, $type);
                $errors = array_merge($errors, $volume->error());
            }
        } else {
            foreach ($this->volumes as $volume) {
                $result = array_merge($result, $volume->search($q, $mimes, null, $type));
                $errors = array_merge($errors, $volume->error());
            }
        }

        $result = array('files' => $result);
        if ($errors) {
            $result['warning'] = $errors;
        }
        return $result;
    }

    /**
     * Return file info (used by client "places" ui)
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws elFinderAbortException
     * @author Dmitry Levashov
     */
    protected function info($args)
    {
        $files = array();
        $compare = null;
        // long polling mode
        if ($args['compare'] && count($args['targets']) === 1) {
            $compare = intval($args['compare']);
            $hash = $args['targets'][0];
            if ($volume = $this->volume($hash)) {
                $standby = (int)$volume->getOption('plStandby');
                $_compare = false;
                if (($syncCheckFunc = $volume->getOption('syncCheckFunc')) && is_callable($syncCheckFunc)) {
                    $_compare = call_user_func_array($syncCheckFunc, array($volume->realpath($hash), $standby, $compare, $volume, $this));
                }
                if ($_compare !== false) {
                    $compare = $_compare;
                } else {
                    $sleep = max(1, (int)$volume->getOption('tsPlSleep'));
                    $limit = max(1, $standby / $sleep) + 1;
                    do {
                        elFinder::extendTimeLimit(30 + $sleep);
                        $volume->clearstatcache();
                        if (($info = $volume->file($hash)) != false) {
                            if ($info['ts'] != $compare) {
                                $compare = $info['ts'];
                                break;
                            }
                        } else {
                            $compare = 0;
                            break;
                        }
                        if (--$limit) {
                            sleep($sleep);
                        }
                    } while ($limit);
                }
            }
        } else {
            foreach ($args['targets'] as $hash) {
                elFinder::checkAborted();
                if (($volume = $this->volume($hash)) != false
                    && ($info = $volume->file($hash)) != false) {
                    $info['path'] = $volume->path($hash);
                    $files[] = $info;
                }
            }
        }

        $result = array('files' => $files);
        if (!is_null($compare)) {
            $result['compare'] = strval($compare);
        }
        return $result;
    }

    /**
     * Return image dimensions
     *
     * @param  array $args command arguments
     *
     * @return array
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function dim($args)
    {
        $res = array();
        $target = $args['target'];

        if (($volume = $this->volume($target)) != false) {
            if ($dim = $volume->dimensions($target, $args)) {
                if (is_array($dim) && isset($dim['dim'])) {
                    $res = $dim;
                } else {
                    $res = array('dim' => $dim);
                    if ($subImgLink = $volume->getSubstituteImgLink($target, explode('x', $dim))) {
                        $res['url'] = $subImgLink;
                    }
                }
            }
        }

        return $res;
    }

    /**
     * Resize image
     *
     * @param  array  command arguments
     *
     * @return array
     * @throws ImagickException
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     * @author Alexey Sukhotin
     */
    protected function resize($args)
    {
        $target = $args['target'];
        $width = (int)$args['width'];
        $height = (int)$args['height'];
        $x = (int)$args['x'];
        $y = (int)$args['y'];
        $mode = $args['mode'];
        $bg = $args['bg'];
        $degree = (int)$args['degree'];
        $quality = (int)$args['quality'];

        if (($volume = $this->volume($target)) == false
            || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_RESIZE, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }

        if ($mode !== 'rotate' && ($width < 1 || $height < 1)) {
            return array('error' => $this->error(self::ERROR_RESIZESIZE));
        }
        return ($file = $volume->resize($target, $width, $height, $x, $y, $mode, $bg, $degree, $quality))
            ? (!empty($file['losslessRotate']) ? $file : array('changed' => array($file)))
            : array('error' => $this->error(self::ERROR_RESIZE, $volume->path($target), $volume->error()));
    }

    /**
     * Return content URL
     *
     * @param  array $args command arguments
     *
     * @return array
     * @author Naoki Sawada
     **/
    protected function url($args)
    {
        $target = $args['target'];
        $options = isset($args['options']) ? $args['options'] : array();
        if (($volume = $this->volume($target)) != false) {
            if (!$volume->commandDisabled('url')) {
                $url = $volume->getContentUrl($target, $options);
                return $url ? array('url' => $url) : array();
            }
        }
        return array();
    }

    /**
     * Output callback result with JavaScript that control elFinder
     * or HTTP redirect to callbackWindowURL
     *
     * @param  array  command arguments
     *
     * @throws elFinderAbortException
     * @author Naoki Sawada
     */
    protected function callback($args)
    {
        $checkReg = '/[^a-zA-Z0-9;._-]/';
        $node = (isset($args['node']) && !preg_match($checkReg, $args['node'])) ? $args['node'] : '';
        $json = (isset($args['json']) && json_decode($args['json'])) ? $args['json'] : '{}';
        $bind = (isset($args['bind']) && !preg_match($checkReg, $args['bind'])) ? $args['bind'] : '';
        $done = (!empty($args['done']));

        while (ob_get_level()) {
            if (!ob_end_clean()) {
                break;
            }
        }

        if ($done || !$this->callbackWindowURL) {
            $script = '';
            if ($node) {
                if ($bind) {
                    $trigger = 'elf.trigger(\'' . $bind . '\', data);';
                    $triggerdone = 'elf.trigger(\'' . $bind . 'done\');';
                    $triggerfail = 'elf.trigger(\'' . $bind . 'fail\', data);';
                } else {
                    $trigger = $triggerdone = $triggerfail = '';
                }
                $origin = isset($_SERVER['HTTP_ORIGIN'])? str_replace('\'', '\\\'', $_SERVER['HTTP_ORIGIN']) : '*';
                $script .= '
var go = function() {
    var w = window.opener || window.parent || window,
        close = function(){
            window.open("about:blank","_self").close();
            return false;
        };
    try {
        var elf = w.document.getElementById(\'' . $node . '\').elfinder;
        if (elf) {
            var data = ' . $json . ';
            if (data.error) {
                ' . $triggerfail . '
                elf.error(data.error);
            } else {
                data.warning && elf.error(data.warning);
                data.removed && data.removed.length && elf.remove(data);
                data.added   && data.added.length   && elf.add(data);
                data.changed && data.changed.length && elf.change(data);
                ' . $trigger . '
                ' . $triggerdone . '
                data.sync && elf.sync();
            }
        }
    } catch(e) {
        // for CORS
        w.postMessage && w.postMessage(JSON.stringify({bind:\'' . $bind . '\',data:' . $json . '}), \'' . $origin . '\');
    }
    close();
    setTimeout(function() {
        var msg = document.getElementById(\'msg\');
        msg.style.display = \'inline\';
        msg.onclick = close;
    }, 100);
};
';
            }

            $out = '<!DOCTYPE html><html lang="en"><head><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2"><script>' . $script . '</script></head><body><h2 id="msg" style="display:none;"><a href="#">Please close this tab.</a></h2><script>go();</script></body></html>';

            header('Content-Type: text/html; charset=utf-8');
            header('Content-Length: ' . strlen($out));
            header('Cache-Control: private');
            header('Pragma: no-cache');

            echo $out;

        } else {
            $url = $this->callbackWindowURL;
            $url .= ((strpos($url, '?') === false) ? '?' : '&')
                . '&node=' . rawurlencode($node)
                . (($json !== '{}') ? ('&json=' . rawurlencode($json)) : '')
                . ($bind ? ('&bind=' . rawurlencode($bind)) : '')
                . '&done=1';

            header('Location: ' . $url);

        }
        throw new elFinderAbortException();
    }

    /**
     * Error handler for send toast message to client side
     *
     * @param int    $errno
     * @param string $errstr
     * @param string $errfile
     * @param int    $errline
     *
     * @return boolean
     */
    protected function toastErrorHandler($errno, $errstr, $errfile, $errline)
    {
        $proc = false;
        if (!(error_reporting() & $errno)) {
            return $proc;
        }
        $toast = array();
        $toast['mode'] = $this->toastParams['mode'];
        $toast['msg'] = $this->toastParams['prefix'] . $errstr;
        $this->toastMessages[] = $toast;
        return true;
    }

    /**
     * PHP error handler, catch error types only E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE
     *
     * @param int    $errno
     * @param string $errstr
     * @param string $errfile
     * @param int    $errline
     *
     * @return boolean
     */
    public static function phpErrorHandler($errno, $errstr, $errfile, $errline)
    {
        static $base = null;

        $proc = false;

        if (is_null($base)) {
            $base = dirname(__FILE__) . DIRECTORY_SEPARATOR;
        }

        if (!(error_reporting() & $errno)) {
            return $proc;
        }

        // Do not report real path
        if (strpos($errfile, $base) === 0) {
            $errfile = str_replace($base, '', $errfile);
        } else if ($pos = strrpos($errfile, '/vendor/')) {
            $errfile = substr($errfile, $pos + 1);
        } else {
            $errfile = basename($errfile);
        }

        switch ($errno) {
            case E_WARNING:
            case E_USER_WARNING:
                elFinder::$phpErrors[] = "WARNING: $errstr in $errfile line $errline.";
                $proc = true;
                break;

            case E_NOTICE:
            case E_USER_NOTICE:
                elFinder::$phpErrors[] = "NOTICE: $errstr in $errfile line $errline.";
                $proc = true;
                break;

            case E_STRICT:
                elFinder::$phpErrors[] = "STRICT: $errstr in $errfile line $errline.";
                $proc = true;
                break;

            case E_RECOVERABLE_ERROR:
                elFinder::$phpErrors[] = "RECOVERABLE_ERROR: $errstr in $errfile line $errline.";
                $proc = true;
                break;
        }

        if (defined('E_DEPRECATED')) {
            switch ($errno) {
                case E_DEPRECATED:
                case E_USER_DEPRECATED:
                    elFinder::$phpErrors[] = "DEPRECATED: $errstr in $errfile line $errline.";
                    $proc = true;
                    break;
            }
        }

        return $proc;
    }

    /***************************************************************************/
    /*                                   utils                                 */
    /***************************************************************************/

    /**
     * Return root - file's owner
     *
     * @param  string  file hash
     *
     * @return elFinderVolumeDriver|boolean (false)
     * @author Dmitry (dio) Levashov
     **/
    protected function volume($hash)
    {
        foreach ($this->volumes as $id => $v) {
            if (strpos('' . $hash, $id) === 0) {
                return $this->volumes[$id];
            }
        }
        return false;
    }

    /**
     * Return files info array
     *
     * @param  array $data one file info or files info
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function toArray($data)
    {
        return isset($data['hash']) || !is_array($data) ? array($data) : $data;
    }

    /**
     * Return fils hashes list
     *
     * @param  array $files files info
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function hashes($files)
    {
        $ret = array();
        foreach ($files as $file) {
            $ret[] = $file['hash'];
        }
        return $ret;
    }

    /**
     * Remove from files list hidden files and files with required mime types
     *
     * @param  array $files files info
     *
     * @return array
     * @author Dmitry (dio) Levashov
     **/
    protected function filter($files)
    {
        $exists = array();
        foreach ($files as $i => $file) {
            if (isset($file['hash'])) {
                if (isset($exists[$file['hash']]) || !empty($file['hidden']) || !$this->default->mimeAccepted($file['mime'])) {
                    unset($files[$i]);
                }
                $exists[$file['hash']] = true;
            }
        }
        return array_values($files);
    }

    protected function utime()
    {
        $time = explode(" ", microtime());
        return (double)$time[1] + (double)$time[0];
    }

    /**
     * Return Network mount volume unique ID
     *
     * @param  array  $netVolumes Saved netvolumes array
     * @param  string $prefix     Id prefix
     *
     * @return string|false
     * @author Naoki Sawada
     **/
    protected function getNetVolumeUniqueId($netVolumes = null, $prefix = 'nm')
    {
        if (is_null($netVolumes)) {
            $netVolumes = $this->getNetVolumes();
        }
        $ids = array();
        foreach ($netVolumes as $vOps) {
            if (isset($vOps['id']) && strpos($vOps['id'], $prefix) === 0) {
                $ids[$vOps['id']] = true;
            }
        }
        if (!$ids) {
            $id = $prefix . '1';
        } else {
            $i = 0;
            while (isset($ids[$prefix . ++$i]) && $i < 10000) ;
            $id = $prefix . $i;
            if (isset($ids[$id])) {
                $id = false;
            }
        }
        return $id;
    }

    /**
     * Is item locked?
     *
     * @param string $hash
     *
     * @return boolean
     */
    protected function itemLocked($hash)
    {
        if (!elFinder::$commonTempPath) {
            return false;
        }
        $lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . self::filenameDecontaminate($hash) . '.lock';
        if (file_exists($lock)) {
            if (filemtime($lock) + $this->itemLockExpire < time()) {
                unlink($lock);
                return false;
            }
            return true;
        }

        return false;
    }

    /**
     * Do lock target item
     *
     * @param array|string $hashes
     * @param boolean      $autoUnlock
     *
     * @return void
     */
    protected function itemLock($hashes, $autoUnlock = true)
    {
        if (!elFinder::$commonTempPath) {
            return;
        }
        if (!is_array($hashes)) {
            $hashes = array($hashes);
        }
        foreach ($hashes as $hash) {
            $lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . self::filenameDecontaminate($hash) . '.lock';
            if ($this->itemLocked($hash)) {
                $cnt = file_get_contents($lock) + 1;
            } else {
                $cnt = 1;
            }
            if (file_put_contents($lock, $cnt, LOCK_EX)) {
                if ($autoUnlock) {
                    $this->autoUnlocks[] = $hash;
                }
            }
        }
    }

    /**
     * Do unlock target item
     *
     * @param string $hash
     *
     * @return boolean
     */
    protected function itemUnlock($hash)
    {
        if (!$this->itemLocked($hash)) {
            return true;
        }
        $lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . $hash . '.lock';
        $cnt = file_get_contents($lock);
        if (--$cnt < 1) {
            unlink($lock);
            return true;
        } else {
            file_put_contents($lock, $cnt, LOCK_EX);
            return false;
        }
    }

    /**
     * unlock locked items on command completion
     *
     * @return void
     */
    public function itemAutoUnlock()
    {
        if ($this->autoUnlocks) {
            foreach ($this->autoUnlocks as $hash) {
                $this->itemUnlock($hash);
            }
            $this->autoUnlocks = array();
        }
    }

    /**
     * Ensure directories recursively
     *
     * @param  object $volume Volume object
     * @param  string $target Target hash
     * @param  array  $dirs   Array of directory tree to ensure
     * @param  string $path   Relative path form target hash
     *
     * @return array|false      array('stats' => array([stat of maked directory]), 'hashes' => array('[path]' => '[hash]'), 'makes' => array([New directory hashes]), 'error' => array([Error name]))
     * @author Naoki Sawada
     **/
    protected function ensureDirsRecursively($volume, $target, $dirs, $path = '')
    {
        $res = array('stats' => array(), 'hashes' => array(), 'makes' => array(), 'error' => array());
        foreach ($dirs as $name => $sub) {
            $name = (string)$name;
            $dir = $newDir = null;
            if ((($parent = $volume->realpath($target)) && ($dir = $volume->dir($volume->getHash($parent, $name)))) || ($newDir = $volume->mkdir($target, $name))) {
                $_path = $path . '/' . $name;
                if ($newDir) {
                    $res['makes'][] = $newDir['hash'];
                    $dir = $newDir;
                }
                $res['stats'][] = $dir;
                $res['hashes'][$_path] = $dir['hash'];
                if (count($sub)) {
                    $res = array_merge_recursive($res, $this->ensureDirsRecursively($volume, $dir['hash'], $sub, $_path));
                }
            } else {
                $res['error'][] = $name;
            }
        }
        return $res;
    }

    /**
     * Sets the toast error handler.
     *
     * @param array $opts The options
     */
    public function setToastErrorHandler($opts)
    {
        $this->toastParams = $this->toastParamsDefault;
        if (!$opts) {
            restore_error_handler();
        } else {
            $this->toastParams = array_merge($this->toastParams, $opts);
            set_error_handler(array($this, 'toastErrorHandler'));
        }
    }

    /**
     * String encode convert to UTF-8
     *
     * @param      string  $str  Input string
     *
     * @return     string  UTF-8 string
     */
    public function utf8Encode($str)
    {
        static $mbencode = null;
        $str = (string) $str;
        if (@iconv('utf-8', 'utf-8//IGNORE', $str) === $str) {
            return $str;
        }

        if ($this->utf8Encoder) {
            return $this->utf8Encoder($str);
        }

        if ($mbencode === null) {
            $mbencode = function_exists('mb_convert_encoding') && function_exists('mb_detect_encoding');
        }

        if ($mbencode) {
            if ($enc = mb_detect_encoding($str, mb_detect_order(), true)) {
                $_str = mb_convert_encoding($str, 'UTF-8', $enc);
                if (@iconv('utf-8', 'utf-8//IGNORE', $_str) === $_str) {
                    return $_str;
                }
            }
        }
        return utf8_encode($str);
    }

    /***************************************************************************/
    /*                           static  utils                                 */
    /***************************************************************************/

    /**
     * Return full version of API that this connector supports all functions
     *
     * @return string
     */
    public static function getApiFullVersion()
    {
        return (string)self::$ApiVersion . '.' . (string)self::$ApiRevision;
    }

    /**
     * Return self::$commonTempPath
     *
     * @return     string  The common temporary path.
     */
    public static function getCommonTempPath()
    {
        return self::$commonTempPath;
    }

    /**
     * Return Is Animation Gif
     *
     * @param  string $path server local path of target image
     *
     * @return bool
     */
    public static function isAnimationGif($path)
    {
        list(, , $type) = getimagesize($path);
        switch ($type) {
            case IMAGETYPE_GIF:
                break;
            default:
                return false;
        }

        $imgcnt = 0;
        $fp = fopen($path, 'rb');
        fread($fp, 4);
        $c = fread($fp, 1);
        if (ord($c) != 0x39) {  // GIF89a
            return false;
        }

        while (!feof($fp)) {
            do {
                $c = fread($fp, 1);
            } while (ord($c) != 0x21 && !feof($fp));

            if (feof($fp)) {
                break;
            }

            $c2 = fread($fp, 2);
            if (bin2hex($c2) == "f904") {
                $imgcnt++;
                if ($imgcnt === 2) {
                    break;
                }
            }

            if (feof($fp)) {
                break;
            }
        }

        if ($imgcnt > 1) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Return Is Animation Png
     *
     * @param  string $path server local path of target image
     *
     * @return bool
     */
    public static function isAnimationPng($path)
    {
        list(, , $type) = getimagesize($path);
        switch ($type) {
            case IMAGETYPE_PNG:
                break;
            default:
                return false;
        }

        $fp = fopen($path, 'rb');
        $img_bytes = fread($fp, 1024);
        fclose($fp);
        if ($img_bytes) {
            if (strpos(substr($img_bytes, 0, strpos($img_bytes, 'IDAT')), 'acTL') !== false) {
                return true;
            }
        }
        return false;
    }

    /**
     * Return Is seekable stream resource
     *
     * @param resource $resource
     *
     * @return bool
     */
    public static function isSeekableStream($resource)
    {
        $metadata = stream_get_meta_data($resource);
        return $metadata['seekable'];
    }

    /**
     * Rewind stream resource
     *
     * @param resource $resource
     *
     * @return void
     */
    public static function rewind($resource)
    {
        self::isSeekableStream($resource) && rewind($resource);
    }

    /**
     * Determines whether the specified resource is seekable url.
     *
     * @param      <type>   $resource  The resource
     *
     * @return     boolean  True if the specified resource is seekable url, False otherwise.
     */
    public static function isSeekableUrl($resource)
    {
        $id = (int)$resource;
        if (isset(elFinder::$seekableUrlFps[$id])) {
            return elFinder::$seekableUrlFps[$id];
        }
        return null;
    }

    /**
     * serialize and base64_encode of session data (If needed)
     *
     * @deprecated
     *
     * @param  mixed $var target variable
     *
     * @author Naoki Sawada
     * @return mixed|string
     */
    public static function sessionDataEncode($var)
    {
        if (self::$base64encodeSessionData) {
            $var = base64_encode(serialize($var));
        }
        return $var;
    }

    /**
     * base64_decode and unserialize of session data  (If needed)
     *
     * @deprecated
     *
     * @param  mixed $var     target variable
     * @param  bool  $checkIs data type for check (array|string|object|int)
     *
     * @author Naoki Sawada
     * @return bool|mixed
     */
    public static function sessionDataDecode(&$var, $checkIs = null)
    {
        if (self::$base64encodeSessionData) {
            $data = unserialize(base64_decode($var));
        } else {
            $data = $var;
        }
        $chk = true;
        if ($checkIs) {
            switch ($checkIs) {
                case 'array':
                    $chk = is_array($data);
                    break;
                case 'string':
                    $chk = is_string($data);
                    break;
                case 'object':
                    $chk = is_object($data);
                    break;
                case 'int':
                    $chk = is_int($data);
                    break;
            }
        }
        if (!$chk) {
            unset($var);
            return false;
        }
        return $data;
    }

    /**
     * Call session_write_close() if session is restarted
     *
     * @deprecated
     * @return void
     */
    public static function sessionWrite()
    {
        if (session_id()) {
            session_write_close();
        }
    }

    /**
     * Return elFinder static variable
     *
     * @param $key
     *
     * @return mixed|null
     */
    public static function getStaticVar($key)
    {
        return isset(elFinder::$$key) ? elFinder::$$key : null;
    }

    /**
     * Extend PHP execution time limit and also check connection is aborted
     *
     * @param Int $time
     *
     * @return void
     * @throws elFinderAbortException
     */
    public static function extendTimeLimit($time = null)
    {
        static $defLimit = null;
        if (!self::aborted()) {
            if (is_null($defLimit)) {
                $defLimit = ini_get('max_execution_time');
            }
            if ($defLimit != 0) {
                $time = is_null($time) ? $defLimit : max($defLimit, $time);
                set_time_limit($time);
            }
        } else {
            throw new elFinderAbortException();
        }
    }

    /**
     * Check connection is aborted
     * Script stop immediately if connection aborted
     *
     * @return void
     * @throws elFinderAbortException
     */
    public static function checkAborted()
    {
        elFinder::extendTimeLimit();
    }

    /**
     * Return bytes from php.ini value
     *
     * @param string $iniName
     * @param string $val
     *
     * @return number
     */
    public static function getIniBytes($iniName = '', $val = '')
    {
        if ($iniName !== '') {
            $val = ini_get($iniName);
            if ($val === false) {
                return 0;
            }
        }
        $val = trim($val, "bB \t\n\r\0\x0B");
        $last = strtolower($val[strlen($val) - 1]);
        $val = sprintf('%u', $val);
        switch ($last) {
            case 'y':
                $val = elFinder::xKilobyte($val);
            case 'z':
                $val = elFinder::xKilobyte($val);
            case 'e':
                $val = elFinder::xKilobyte($val);
            case 'p':
                $val = elFinder::xKilobyte($val);
            case 't':
                $val = elFinder::xKilobyte($val);
            case 'g':
                $val = elFinder::xKilobyte($val);
            case 'm':
                $val = elFinder::xKilobyte($val);
            case 'k':
                $val = elFinder::xKilobyte($val);
        }
        return $val;
    }

    /**
     * Return X 1KByte
     *
     * @param      integer|string  $val    The value
     *
     * @return     number
     */
    public static function xKilobyte($val)
    {
        if (strpos((string)$val * 1024, 'E') !== false) {
            if (strpos((string)$val * 1.024, 'E') === false) {
                $val *= 1.024;
            }
            $val .= '000';
        } else {
            $val *= 1024;
        }
        return $val;
    }

    /**
     * Get script url.
     *
     * @return string full URL
     * @author Naoki Sawada
     */
    public static function getConnectorUrl()
    {
        if (defined('ELFINDER_CONNECTOR_URL')) {
            return ELFINDER_CONNECTOR_URL;
        }

        $https = (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off');
        $url = ($https ? 'https://' : 'http://')
            . $_SERVER['SERVER_NAME']                                              // host
            . ((empty($_SERVER['SERVER_PORT']) || (!$https && $_SERVER['SERVER_PORT'] == 80) || ($https && $_SERVER['SERVER_PORT'] == 443)) ? '' : (':' . $_SERVER['SERVER_PORT']))  // port
            . $_SERVER['REQUEST_URI'];                                             // path & query
        list($url) = explode('?', $url);

        return $url;
    }

    /**
     * Get stream resource pointer by URL
     *
     * @param array $data array('target'=>'URL', 'headers' => array())
     * @param int   $redirectLimit
     *
     * @return resource|boolean
     * @author Naoki Sawada
     */
    public static function getStreamByUrl($data, $redirectLimit = 5)
    {
        if (isset($data['target'])) {
            $data = array(
                'cnt' => 0,
                'url' => $data['target'],
                'headers' => isset($data['headers']) ? $data['headers'] : array(),
                'postData' => isset($data['postData']) ? $data['postData'] : array(),
                'cookies' => array(),
            );
        }
        if ($data['cnt'] > $redirectLimit) {
            return false;
        }
        $dlurl = $data['url'];
        $data['url'] = '';
        $headers = $data['headers'];

        if ($dlurl) {
            $url = parse_url($dlurl);
            $ports = array(
                'http' => '80',
                'https' => '443',
                'ftp' => '21'
            );
            $url['scheme'] = strtolower($url['scheme']);
            if (!isset($url['port']) && isset($ports[$url['scheme']])) {
                $url['port'] = $ports[$url['scheme']];
            }
            if (!isset($url['port'])) {
                return false;
            }
            $cookies = array();
            if ($data['cookies']) {
                foreach ($data['cookies'] as $d => $c) {
                    if (strpos($url['host'], $d) !== false) {
                        $cookies[] = $c;
                    }
                }
            }

            $transport = ($url['scheme'] === 'https') ? 'ssl' : 'tcp';
            $query = isset($url['query']) ? '?' . $url['query'] : '';
            if (!($stream = stream_socket_client($transport . '://' . $url['host'] . ':' . $url['port']))) {
                return false;
            }

            $body = '';
            if (!empty($data['postData'])) {
                $method = 'POST';
                if (is_array($data['postData'])) {
                    $body = http_build_query($data['postData']);
                } else {
                    $body = $data['postData'];
                }
            } else {
                $method = 'GET';
            }

            $sends = array();
            $sends[] = "$method {$url['path']}{$query} HTTP/1.1";
            $sends[] = "Host: {$url['host']}";
            foreach ($headers as $header) {
                $sends[] = trim($header, "\r\n");
            }
            $sends[] = 'Connection: Close';
            if ($cookies) {
                $sends[] = 'Cookie: ' . implode('; ', $cookies);
            }
            if ($method === 'POST') {
                $sends[] = 'Content-Type: application/x-www-form-urlencoded';
                $sends[] = 'Content-Length: ' . strlen($body);
            }
            $sends[] = "\r\n" . $body;

            stream_set_timeout($stream, 300);
            fputs($stream, join("\r\n", $sends) . "\r\n");

            while (($res = trim(fgets($stream))) !== '') {
                // find redirect
                if (preg_match('/^Location: (.+)$/i', $res, $m)) {
                    $data['url'] = $m[1];
                }
                // fetch cookie
                if (strpos($res, 'Set-Cookie:') === 0) {
                    $domain = $url['host'];
                    if (preg_match('/^Set-Cookie:(.+)(?:domain=\s*([^ ;]+))?/i', $res, $c1)) {
                        if (!empty($c1[2])) {
                            $domain = trim($c1[2]);
                        }
                        if (preg_match('/([^ ]+=[^;]+)/', $c1[1], $c2)) {
                            $data['cookies'][$domain] = $c2[1];
                        }
                    }
                }
                // is seekable url
                if (preg_match('/^(Accept-Ranges|Content-Range): bytes/i', $res)) {
                    elFinder::$seekableUrlFps[(int)$stream] = true;
                }
            }
            if ($data['url']) {
                ++$data['cnt'];
                fclose($stream);

                return self::getStreamByUrl($data, $redirectLimit);
            }

            return $stream;
        }

        return false;
    }

    /**
     * Gets the fetch cookie file for curl.
     *
     * @return string  The fetch cookie file.
     */
    public function getFetchCookieFile()
    {
        $file = '';
        if ($tmpDir = $this->getTempDir()) {
            $file = $tmpDir . '/.elFinderAnonymousCookie';
        }
        return $file;
    }

    /**
     * Call curl_exec() with supported redirect on `safe_mode` or `open_basedir`
     *
     * @param resource $curl
     * @param array    $options
     * @param array    $headers
     * @param array    $postData
     *
     * @throws \Exception
     * @return mixed
     * @author Naoki Sawada
     */
    public static function curlExec($curl, $options = array(), $headers = array(), $postData = array())
    {
        $followLocation = (!ini_get('safe_mode') && !ini_get('open_basedir'));
        if ($followLocation) {
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        }

        if ($options) {
            curl_setopt_array($curl, $options);
        }

        if ($headers) {
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        }

        $result = curl_exec($curl);

        if (!$followLocation && $redirect = curl_getinfo($curl, CURLINFO_REDIRECT_URL)) {
            if ($stream = self::getStreamByUrl(array('target' => $redirect, 'headers' => $headers, 'postData' => $postData))) {
                $result = stream_get_contents($stream);
            }
        }

        if ($result === false) {
            if (curl_errno($curl)) {
                throw new \Exception('curl_exec() failed: ' . curl_error($curl));
            } else {
                throw new \Exception('curl_exec(): empty response');
            }
        }

        curl_close($curl);

        return $result;
    }

    /**
     * Return bool that current request was aborted by client side
     *
     * @return boolean
     */
    public static function aborted()
    {
        if ($file = self::$abortCheckFile) {
            (version_compare(PHP_VERSION, '5.3.0') >= 0) ? clearstatcache(true, $file) : clearstatcache();
            if (!is_file($file)) {
                // GC (expire 12h)
                list($ptn) = explode('elfreq', $file);
                self::GlobGC($ptn . 'elfreq*', 43200);
                return true;
            }
        }
        return false;
    }

    /**
     * Return array ["name without extention", "extention"] by filename
     *
     * @param string $name
     *
     * @return array
     */
    public static function splitFileExtention($name)
    {
        if (preg_match('/^(.+?)?\.((?:tar\.(?:gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(?:gz|bz2)|[a-z0-9]{1,10})$/i', $name, $m)) {
            return array((string)$m[1], $m[2]);
        } else {
            return array($name, '');
        }
    }

    /**
     * Gets the memory size by imageinfo.
     *
     * @param      array $imgInfo array that result of getimagesize()
     *
     * @return     integer  The memory size by imageinfo.
     */
    public static function getMemorySizeByImageInfo($imgInfo)
    {
        $width = $imgInfo[0];
        $height = $imgInfo[1];
        $bits = isset($imgInfo['bits']) ? $imgInfo['bits'] : 24;
        $channels = isset($imgInfo['channels']) ? $imgInfo['channels'] : 3;
        return round(($width * $height * $bits * $channels / 8 + Pow(2, 16)) * 1.65);
    }

    /**
     * Auto expand memory for GD processing
     *
     * @param      array $imgInfos The image infos
     */
    public static function expandMemoryForGD($imgInfos)
    {
        if (elFinder::$memoryLimitGD != 0 && $imgInfos && is_array($imgInfos)) {
            if (!is_array($imgInfos[0])) {
                $imgInfos = array($imgInfos);
            }
            $limit = self::getIniBytes('', elFinder::$memoryLimitGD);
            $memLimit = self::getIniBytes('memory_limit');
            $needs = 0;
            foreach ($imgInfos as $info) {
                $needs += self::getMemorySizeByImageInfo($info);
            }
            $needs += memory_get_usage();
            if ($needs > $memLimit && ($limit == -1 || $limit > $needs)) {
                ini_set('memory_limit', $needs);
            }
        }
    }

    /**
     * Decontaminate of filename
     *
     * @param      String  $name   The name
     *
     * @return     String  Decontaminated filename
     */
    public static function filenameDecontaminate($name)
    {
        // Directory traversal defense
        if (DIRECTORY_SEPARATOR === '\\') {
            $name = str_replace('\\', '/', $name);
        }
        $parts = explode('/', trim($name, '/'));
        $name = array_pop($parts); 
        return $name;
    }

    /**
     * Execute shell command
     *
     * @param  string $command      command line
     * @param  string $output       stdout strings
     * @param  int    $return_var   process exit code
     * @param  string $error_output stderr strings
     * @param  null   $cwd          cwd
     *
     * @return int exit code
     * @throws elFinderAbortException
     * @author Alexey Sukhotin
     */
    public static function procExec($command, &$output = '', &$return_var = -1, &$error_output = '', $cwd = null)
    {

        static $allowed = null;

        if ($allowed === null) {
            if ($allowed = function_exists('proc_open')) {
                if ($disabled = ini_get('disable_functions')) {
                    $funcs = array_map('trim', explode(',', $disabled));
                    $allowed = !in_array('proc_open', $funcs);
                }
            }
        }

        if (!$allowed) {
            $return_var = -1;
            return $return_var;
        }

        if (!$command) {
            $return_var = 0;
            return $return_var;
        }

        $descriptorspec = array(
            0 => array("pipe", "r"),  // stdin
            1 => array("pipe", "w"),  // stdout
            2 => array("pipe", "w")   // stderr
        );

        $process = proc_open($command, $descriptorspec, $pipes, $cwd, null);

        if (is_resource($process)) {
            stream_set_blocking($pipes[1], 0);
            stream_set_blocking($pipes[2], 0);

            fclose($pipes[0]);

            $tmpout = '';
            $tmperr = '';
            while (feof($pipes[1]) === false || feof($pipes[2]) === false) {
                elFinder::extendTimeLimit();
                $read = array($pipes[1], $pipes[2]);
                $write = null;
                $except = null;
                $ret = stream_select($read, $write, $except, 1);
                if ($ret === false) {
                    // error
                    break;
                } else if ($ret === 0) {
                    // timeout
                    continue;
                } else {
                    foreach ($read as $sock) {
                        if ($sock === $pipes[1]) {
                            $tmpout .= fread($sock, 4096);
                        } else if ($sock === $pipes[2]) {
                            $tmperr .= fread($sock, 4096);
                        }
                    }
                }
            }

            fclose($pipes[1]);
            fclose($pipes[2]);

            $output = $tmpout;
            $error_output = $tmperr;
            $return_var = proc_close($process);

        } else {
            $return_var = -1;
        }

        return $return_var;

    }

    /***************************************************************************/
    /*                                 callbacks                               */
    /***************************************************************************/

    /**
     * Get command name of binded "commandName.subName"
     *
     * @param string $cmd
     *
     * @return string
     */
    protected static function getCmdOfBind($cmd)
    {
        list($ret) = explode('.', $cmd);
        return trim($ret);
    }

    /**
     * Add subName to commandName
     *
     * @param string $cmd
     * @param string $sub
     *
     * @return string
     */
    protected static function addSubToBindName($cmd, $sub)
    {
        return $cmd . '.' . trim($sub);
    }

    /**
     * Remove a file if connection is disconnected
     *
     * @param string $file
     */
    public static function rmFileInDisconnected($file)
    {
        (connection_aborted() || connection_status() !== CONNECTION_NORMAL) && is_file($file) && unlink($file);
    }

    /**
     * Call back function on shutdown
     *  - delete files in $GLOBALS['elFinderTempFiles']
     */
    public static function onShutdown()
    {
        self::$abortCheckFile = null;
        if (!empty($GLOBALS['elFinderTempFps'])) {
            foreach (array_keys($GLOBALS['elFinderTempFps']) as $fp) {
                is_resource($fp) && fclose($fp);
            }
        }
        if (!empty($GLOBALS['elFinderTempFiles'])) {
            foreach (array_keys($GLOBALS['elFinderTempFiles']) as $f) {
                is_file($f) && is_writable($f) && unlink($f);
            }
        }
    }

    /**
     * Garbage collection with glob
     *
     * @param string  $pattern
     * @param integer $time
     */
    public static function GlobGC($pattern, $time)
    {
        $now = time();
        foreach (glob($pattern) as $file) {
            (filemtime($file) < ($now - $time)) && unlink($file);
        }
    }

} // END class

/**
 * Custom exception class for aborting request
 */
class elFinderAbortException extends Exception
{
}

class elFinderTriggerException extends Exception
{
}
lib/php/elFinderVolumeTrash.class.php000064400000003057147361034400013647 0ustar00<?php

/**
 * elFinder driver for trash bin at local filesystem.
 *
 * @author NaokiSawada
 **/
class elFinderVolumeTrash extends elFinderVolumeLocalFileSystem
{
    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id.
     *
     * @var string
     **/
    protected $driverId = 't';

    public function __construct()
    {
        parent::__construct();
        // original option of the Trash
        $this->options['lockEverything'] = false; // Lock all items in the trash to disable delete, move, rename.

        // common options as the volume driver
        $this->options['alias'] = 'Trash';
        $this->options['quarantine'] = '';
        $this->options['rootCssClass'] = 'elfinder-navbar-root-trash';
        $this->options['copyOverwrite'] = false;
        $this->options['uiCmdMap'] = array('paste' => 'hidden', 'mkdir' => 'hidden', 'copy' => 'restore');
        $this->options['disabled'] = array('archive', 'duplicate', 'edit', 'extract', 'mkfile', 'places', 'put', 'rename', 'resize', 'upload');
    }

    public function mount(array $opts)
    {
        if ($this->options['lockEverything']) {
            if (!is_array($opts['attributes'])) {
                $opts['attributes'] = array();
            }
            $attr = array(
                'pattern' => '/./',
                'locked' => true,
            );
            array_unshift($opts['attributes'], $attr);
        }
        // force set `copyJoin` to true
        $opts['copyJoin'] = true;

        return parent::mount($opts);
    }
}
lib/php/editors/OnlineConvert/editor.php000064400000010320147361034400014334 0ustar00<?php

class elFinderEditorOnlineConvert extends elFinderEditor
{
    protected $allowed = array('init', 'api');

    public function enabled()
    {
        return defined('ELFINDER_ONLINE_CONVERT_APIKEY') && ELFINDER_ONLINE_CONVERT_APIKEY && (!defined('ELFINDER_DISABLE_ONLINE_CONVERT') || !ELFINDER_DISABLE_ONLINE_CONVERT);
    }

    public function init()
    {
        return array('api' => defined('ELFINDER_ONLINE_CONVERT_APIKEY') && ELFINDER_ONLINE_CONVERT_APIKEY && function_exists('curl_init'));
    }

    public function api()
    {
        // return array('apires' => array('message' => 'Currently disabled for developping...'));
        $endpoint = 'https://api2.online-convert.com/jobs';
        $category = $this->argValue('category');
        $convert = $this->argValue('convert');
        $options = $this->argValue('options');
        $source = $this->argValue('source');
        $filename = $this->argValue('filename');
        $mime = $this->argValue('mime');
        $jobid = $this->argValue('jobid');
        $string_method = '';
        $options = array();
        // Currently these converts are make error with API call. I don't know why.
        $nonApi = array('android', 'blackberry', 'dpg', 'ipad', 'iphone', 'ipod', 'nintendo-3ds', 'nintendo-ds', 'ps3', 'psp', 'wii', 'xbox');
        if (in_array($convert, $nonApi)) {
            return array('apires' => array());
        }
        $ch = null;
        if ($convert && $source) {
            $request = array(
                'input' => array(array(
                    'type' => 'remote',
                    'source' => $source
                )),
                'conversion' => array(array(
                    'target' => $convert
                ))
            );

            if ($filename !== '') {
                $request['input'][0]['filename'] = $filename;
            }

            if ($mime !== '') {
                $request['input'][0]['content_type'] = $mime;
            }

            if ($category) {
                $request['conversion'][0]['category'] = $category;
            }

            if ($options && $options !== 'null') {
                $options = json_decode($options, true);
            }
            if (!is_array($options)) {
                $options = array();
            }
            if ($options) {
                $request['conversion'][0]['options'] = $options;
            }

            $ch = curl_init($endpoint);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($request));
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'X-Oc-Api-Key: ' . ELFINDER_ONLINE_CONVERT_APIKEY,
                'Content-Type: application/json',
                'cache-control: no-cache'
            ));
        } else if ($jobid) {
            $ch = curl_init($endpoint . '/' . $jobid);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'X-Oc-Api-Key: ' . ELFINDER_ONLINE_CONVERT_APIKEY,
                'cache-control: no-cache'
            ));
        }

        if ($ch) {
            $response = curl_exec($ch);
            $info = curl_getinfo($ch);
            $error = curl_error($ch);
            curl_close($ch);

            if (!empty($error)) {
                $res = array('error' => $error);
            } else {
                $data = json_decode($response, true);
                if (isset($data['status']) && isset($data['status']['code']) && $data['status']['code'] === 'completed') {
                    /** @var elFinderSession $session */
                    $session = $this->elfinder->getSession();
                    $urlContentSaveIds = $session->get('urlContentSaveIds', array());
                    $urlContentSaveIds['OnlineConvert-' . $data['id']] = true;
                    $session->set('urlContentSaveIds', $urlContentSaveIds);
                }
                $res = array('apires' => $data);
            }

            return $res;
        } else {
            return array('error' => array('errCmdParams', 'editor.OnlineConvert.api'));
        }
    }
}
lib/php/editors/ZipArchive/editor.php000064400000000621147361034400013616 0ustar00<?php

class elFinderEditorZipArchive extends elFinderEditor
{
    public function enabled()
    {
        return (!defined('ELFINDER_DISABLE_ZIPEDITOR') || !ELFINDER_DISABLE_ZIPEDITOR) &&
            class_exists('Barryvdh\elFinderFlysystemDriver\Driver') &&
            class_exists('League\Flysystem\Filesystem') &&
            class_exists('League\Flysystem\ZipArchive\ZipArchiveAdapter');
    }
}lib/php/editors/ZohoOffice/editor.php000064400000020637147361034400013616 0ustar00<?php

class elFinderEditorZohoOffice extends elFinderEditor
{
    private static $curlTimeout = 20;

    protected $allowed = array('init', 'save', 'chk');

    protected $editor_settings = array(
        'writer' => array(
            'unit' => 'mm',
            'view' => 'pageview'
        ),
        'sheet' => array(
            'country' => 'US'
        ),
        'show' => array()
    );

    private $urls = array(
        'writer' => 'https://writer.zoho.com/writer/officeapi/v1/document',
        'sheet' => 'https://sheet.zoho.com/sheet/officeapi/v1/spreadsheet',
        'show' => 'https://show.zoho.com/show/officeapi/v1/presentation',
    );

    private $srvs = array(
        'application/msword' => 'writer',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'writer',
        'application/pdf' => 'writer',
        'application/vnd.oasis.opendocument.text' => 'writer',
        'application/rtf' => 'writer',
        'text/html' => 'writer',
        'application/vnd.ms-excel' => 'sheet',
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'sheet',
        'application/vnd.oasis.opendocument.spreadsheet' => 'sheet',
        'application/vnd.sun.xml.calc' => 'sheet',
        'text/csv' => 'sheet',
        'text/tab-separated-values' => 'sheet',
        'application/vnd.ms-powerpoint' => 'show',
        'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'show',
        'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'show',
        'application/vnd.oasis.opendocument.presentation' => 'show',
        'application/vnd.sun.xml.impress' => 'show',
    );

    private $myName = '';

    public function __construct($elfinder, $args)
    {
        parent::__construct($elfinder, $args);
        $this->myName = preg_replace('/^elFinderEditor/i', '', get_class($this));
    }

    public function enabled()
    {
        return defined('ELFINDER_ZOHO_OFFICE_APIKEY') && ELFINDER_ZOHO_OFFICE_APIKEY && function_exists('curl_init');
    }

    public function init()
    {
        if (!defined('ELFINDER_ZOHO_OFFICE_APIKEY') || !function_exists('curl_init')) {
            return array('error', array(elFinder::ERROR_CONF, '`ELFINDER_ZOHO_OFFICE_APIKEY` or curl extension'));
        }
        if (!empty($this->args['target'])) {
            $fp = $cfile = null;
            $hash = $this->args['target'];
            /** @var elFinderVolumeDriver $srcVol */
            if (($srcVol = $this->elfinder->getVolume($hash)) && ($file = $srcVol->file($hash))) {
                $cdata = empty($this->args['cdata']) ? '' : $this->args['cdata'];
                $cookie = $this->elfinder->getFetchCookieFile();
                $save = false;
                $ch = curl_init();
                $conUrl = elFinder::getConnectorUrl();
                curl_setopt($ch, CURLOPT_URL, $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=editor&name=' . $this->myName . '&method=chk&args[target]=' . rawurlencode($hash) . $cdata);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                if ($cookie) {
                    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
                    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
                }
                $res = curl_exec($ch);
                curl_close($ch);
                if ($res) {
                    if ($data = json_decode($res, true)) {
                        $save = !empty($data['cansave']);
                    }
                }

                if ($size = $file['size']) {
                    $src = $srcVol->open($hash);
                    $fp = tmpfile();
                    stream_copy_to_stream($src, $fp);
                    $srcVol->close($src, $hash);
                    $info = stream_get_meta_data($fp);
                    if ($info && !empty($info['uri'])) {
                        $srcFile = $info['uri'];
                        if (class_exists('CURLFile')) {
                            $cfile = new CURLFile($srcFile);
                            $cfile->setPostFilename($file['name']);
                            $cfile->setMimeType($file['mime']);
                        } else {
                            $cfile = '@' . $srcFile;
                        }
                    }
                }
                //$srv = $this->args['service'];
                $format = $srcVol->getExtentionByMime($file['mime']);
                if (!$format) {
                    $format = substr($file['name'], strrpos($file['name'], '.') * -1);
                }
                $lang = $this->args['lang'];
                if ($lang === 'jp') {
                    $lang = 'ja';
                }
                $srvsName = $this->srvs[$file['mime']];
                $data = array(
                    'apikey' => ELFINDER_ZOHO_OFFICE_APIKEY,
                    'callback_settings' => array(
                        'save_format' => $format,
                        'context_info' => array(
                            'hash' => $hash
                        )
                    ),
                    'editor_settings' => $this->editor_settings[$srvsName],
                    'document_info' => array(
                        'document_name' => substr($file['name'], 0, strlen($file['name']) - strlen($format)- 1)
                    )
                );
                $data['editor_settings']['language'] = $lang;
                if ($save) {
                    $conUrl = elFinder::getConnectorUrl();
                    $data['callback_settings']['save_url'] = $conUrl . (strpos($conUrl, '?') !== false? '&' : '?') . 'cmd=editor&name=' . $this->myName . '&method=save' . $cdata;
                }
                foreach($data as $_k => $_v) {
                    if (is_array($_v)){
                        $data[$_k] = json_encode($_v);
                    }
                }
                if ($cfile) {
                    $data['document'] = $cfile;
                }
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $this->urls[$srvsName]);
                curl_setopt($ch, CURLOPT_TIMEOUT, self::$curlTimeout);
                curl_setopt($ch, CURLOPT_HEADER, 0);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
                $res = curl_exec($ch);
                $error = curl_error($ch);
                curl_close($ch);

                $fp && fclose($fp);

                if ($res && $res = @json_decode($res, true)) {
                    if (!empty($res['document_url'])) {
                        $ret = array('zohourl' => $res['document_url']);
                        if (!$save) {
                            $ret['warning'] = 'exportToSave';
                        }
                        return $ret;
                    } else {
                        $error = $res;
                    }
                }

                if ($error) {
                    return array('error' => is_string($error)? preg_split('/[\r\n]+/', $error) : 'Error code: ' . $error);
                }
            }
        }

        return array('error' => array('errCmdParams', 'editor.' . $this->myName . '.init'));
    }

    public function save()
    {
        if (!empty($_POST) && !empty($_POST['id']) && !empty($_FILES) && !empty($_FILES['content'])) {
            $data = @json_decode(str_replace('&quot;', '"', $_POST['id']), true);
            if (!empty($data['hash'])) {
                $hash = $data['hash'];
                /** @var elFinderVolumeDriver $volume */
                if ($volume = $this->elfinder->getVolume($hash)) {
                    if ($content = file_get_contents($_FILES['content']['tmp_name'])) {
                        if ($volume->putContents($hash, $content)) {
                            return array('raw' => true, 'error' => '', 'header' => 'HTTP/1.1 200 OK');
                        }
                    }
                }
            }
        }
        return array('raw' => true, 'error' => '', 'header' => 'HTTP/1.1 500 Internal Server Error');
    }

    public function chk()
    {
        $hash = $this->args['target'];
        $res = false;
        /** @var elFinderVolumeDriver $volume */
        if ($volume = $this->elfinder->getVolume($hash)) {
            if ($file = $volume->file($hash)) {
                $res = (bool)$file['write'];
            }
        }
        return array('cansave' => $res);
    }
}
lib/php/editors/editor.php000064400000002612147361034400011554 0ustar00<?php

/**
 * Abstract class of editor plugins.
 *
 * @author Naoki Sawada
 */
class elFinderEditor
{
    /**
     * Array of allowed method by request from client side.
     *
     * @var array
     */
    protected $allowed = array();

    /**
     * elFinder instance
     *
     * @var object elFinder instance
     */
    protected $elfinder;

    /**
     * Arguments
     *
     * @var array argValues
     */
    protected $args;

    /**
     * Constructor.
     *
     * @param object $elfinder
     * @param array  $args
     */
    public function __construct($elfinder, $args)
    {
        $this->elfinder = $elfinder;
        $this->args = $args;
    }

    /**
     * Return boolean that this plugin is enabled.
     *
     * @return bool
     */
    public function enabled()
    {
        return true;
    }

    /**
     * Return boolean that $name method is allowed.
     *
     * @param string $name
     *
     * @return bool
     */
    public function isAllowedMethod($name)
    {
        $checker = array_flip($this->allowed);

        return isset($checker[$name]);
    }

    /**
     * Return $this->args value of the key
     *
     * @param      string $key   target key
     * @param      string $empty empty value
     *
     * @return     mixed
     */
    public function argValue($key, $empty = '')
    {
        return isset($this->args[$key]) ? $this->args[$key] : $empty;
    }
}
lib/php/elFinderPlugin.php000064400000006403147361034400011526 0ustar00<?php

/**
 * elFinder Plugin Abstract
 *
 * @package elfinder
 * @author  Naoki Sawada
 * @license New BSD
 */
class elFinderPlugin
{

    /**
     * This plugin's options
     *
     * @var array
     */
    protected $opts = array();

    /**
     * Get current volume's options
     *
     * @param object $volume
     *
     * @return array options
     */
    protected function getCurrentOpts($volume)
    {
        $name = substr(get_class($this), 14); // remove "elFinderPlugin"
        $opts = $this->opts;
        if (is_object($volume)) {
            $volOpts = $volume->getOptionsPlugin($name);
            if (is_array($volOpts)) {
                $opts = array_merge($opts, $volOpts);
            }
        }
        return $opts;
    }

    /**
     * Is enabled with options
     *
     * @param array    $opts
     * @param elFinder $elfinder
     *
     * @return boolean
     */
    protected function iaEnabled($opts, $elfinder = null)
    {
        if (!$opts['enable']) {
            return false;
        }

        // check post var 'contentSaveId' to disable this plugin
        if ($elfinder && !empty($opts['disableWithContentSaveId'])) {
            $session = $elfinder->getSession();
            $urlContentSaveIds = $session->get('urlContentSaveIds', array());
            if (!empty(elFinder::$currentArgs['contentSaveId']) && ($contentSaveId = elFinder::$currentArgs['contentSaveId'])) {
                if (!empty($urlContentSaveIds[$contentSaveId])) {
                    $elfinder->removeUrlContentSaveId($contentSaveId);
                    return false;
                }
            }
        }

        if (isset($opts['onDropWith']) && !is_null($opts['onDropWith'])) {
            // plugin disabled by default, enabled only if given key is pressed
            if (isset($_REQUEST['dropWith']) && $_REQUEST['dropWith']) {
                $onDropWith = $opts['onDropWith'];
                $action = (int)$_REQUEST['dropWith'];
                if (!is_array($onDropWith)) {
                    $onDropWith = array($onDropWith);
                }
                foreach ($onDropWith as $key) {
                    $key = (int)$key;
                    if (($action & $key) === $key) {
                        return true;
                    }
                }
            }
            return false;
        }

        if (isset($opts['offDropWith']) && !is_null($opts['offDropWith']) && isset($_REQUEST['dropWith'])) {
            // plugin enabled by default, disabled only if given key is pressed
            $offDropWith = $opts['offDropWith'];
            $action = (int)$_REQUEST['dropWith'];
            if (!is_array($offDropWith)) {
                $offDropWith = array($offDropWith);
            }
            $res = true;
            foreach ($offDropWith as $key) {
                $key = (int)$key;
                if ($key === 0) {
                    if ($action === 0) {
                        $res = false;
                        break;
                    }
                } else {
                    if (($action & $key) === $key) {
                        $res = false;
                        break;
                    }
                }
            }
            if (!$res) {
                return false;
            }
        }

        return true;
    }
}
lib/php/mime.types000064400000060400147361034400010120 0ustar00# This file maps Internet media types to unique file extension(s).
# Although created for httpd, this file is used by many software systems
# and has been placed in the public domain for unlimited redisribution.
#
# The table below contains both registered and (common) unregistered types.
# A type that has no unique extension can be ignored -- they are listed
# here to guide configurations toward known types and to make it easier to
# identify "new" types.  File extensions are also commonly used to indicate
# content languages and encodings, so choose them carefully.
#
# Internet media types should be registered as described in RFC 4288.
# The registry is at <http://www.iana.org/assignments/media-types/>.
#
# MIME type (lowercased)			Extensions
application/andrew-inset ez
application/applixware aw
application/atom+xml atom
application/atomcat+xml atomcat
application/atomsvc+xml atomsvc
application/ccxml+xml ccxml
application/cdmi-capability cdmia
application/cdmi-container cdmic
application/cdmi-domain cdmid
application/cdmi-object cdmio
application/cdmi-queue cdmiq
application/cu-seeme cu
application/davmount+xml davmount
application/docbook+xml dbk
application/dssc+der dssc
application/dssc+xml xdssc
application/ecmascript ecma
application/emma+xml emma
application/epub+zip epub
application/exi exi
application/font-tdpfr pfr
application/gml+xml gml
application/gpx+xml gpx
application/gxf gxf
application/hyperstudio stk
application/inkml+xml ink inkml
application/ipfix ipfix
application/java-archive jar
application/java-serialized-object ser
application/java-vm class
application/javascript js
application/json json
application/jsonml+json jsonml
application/lost+xml lostxml
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/mads+xml mads
application/marc mrc
application/marcxml+xml mrcx
application/mathematica ma nb mb
application/mathml+xml mathml
application/mbox mbox
application/mediaservercontrol+xml mscml
application/metalink+xml metalink
application/metalink4+xml meta4
application/mets+xml mets
application/mods+xml mods
application/mp21 m21 mp21
application/mp4 mp4s
application/msword doc dot
application/mxf mxf
application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy
application/oda oda
application/oebps-package+xml opf
application/ogg ogx
application/omdoc+xml omdoc
application/onenote onetoc onetoc2 onetmp onepkg
application/oxps oxps
application/patch-ops-error+xml xer
application/pdf pdf
application/pgp-encrypted pgp
application/pgp-signature asc sig
application/pics-rules prf
application/pkcs10 p10
application/pkcs7-mime p7m p7c
application/pkcs7-signature p7s
application/pkcs8 p8
application/pkix-attr-cert ac
application/pkix-cert cer
application/pkix-crl crl
application/pkix-pkipath pkipath
application/pkixcmp pki
application/pls+xml pls
application/postscript ai eps ps
application/prs.cww cww
application/pskc+xml pskcxml
application/rdf+xml rdf
application/reginfo+xml rif
application/relax-ng-compact-syntax rnc
application/resource-lists+xml rl
application/resource-lists-diff+xml rld
application/rls-services+xml rs
application/rpki-ghostbusters gbr
application/rpki-manifest mft
application/rpki-roa roa
application/rsd+xml rsd
application/rss+xml rss
application/rtf rtf
application/sbml+xml sbml
application/scvp-cv-request scq
application/scvp-cv-response scs
application/scvp-vp-request spq
application/scvp-vp-response spp
application/sdp sdp
application/set-payment-initiation setpay
application/set-registration-initiation setreg
application/shf+xml shf
application/smil+xml smi smil
application/sparql-query rq
application/sparql-results+xml srx
application/srgs gram
application/srgs+xml grxml
application/sru+xml sru
application/ssdl+xml ssdl
application/ssml+xml ssml
application/tei+xml tei teicorpus
application/thraud+xml tfi
application/timestamped-data tsd
application/vnd.3gpp.pic-bw-large plb
application/vnd.3gpp.pic-bw-small psb
application/vnd.3gpp.pic-bw-var pvb
application/vnd.3gpp2.tcap tcap
application/vnd.3m.post-it-notes pwn
application/vnd.accpac.simply.aso aso
application/vnd.accpac.simply.imp imp
application/vnd.acucobol acu
application/vnd.acucorp atc acutc
application/vnd.adobe.air-application-installer-package+zip air
application/vnd.adobe.formscentral.fcdt fcdt
application/vnd.adobe.fxp fxp fxpl
application/vnd.adobe.xdp+xml xdp
application/vnd.adobe.xfdf xfdf
application/vnd.ahead.space ahead
application/vnd.airzip.filesecure.azf azf
application/vnd.airzip.filesecure.azs azs
application/vnd.amazon.ebook azw
application/vnd.americandynamics.acc acc
application/vnd.amiga.ami ami
application/vnd.android.package-archive apk
application/vnd.anser-web-certificate-issue-initiation cii
application/vnd.anser-web-funds-transfer-initiation fti
application/vnd.antix.game-component atx
application/vnd.apple.installer+xml mpkg
application/vnd.apple.mpegurl m3u8
application/vnd.aristanetworks.swi swi
application/vnd.astraea-software.iota iota
application/vnd.audiograph aep
application/vnd.blueice.multipass mpm
application/vnd.bmi bmi
application/vnd.businessobjects rep
application/vnd.chemdraw+xml cdxml
application/vnd.chipnuts.karaoke-mmd mmd
application/vnd.cinderella cdy
application/vnd.claymore cla
application/vnd.cloanto.rp9 rp9
application/vnd.clonk.c4group c4g c4d c4f c4p c4u
application/vnd.cluetrust.cartomobile-config c11amc
application/vnd.cluetrust.cartomobile-config-pkg c11amz
application/vnd.commonspace csp
application/vnd.contact.cmsg cdbcmsg
application/vnd.cosmocaller cmc
application/vnd.crick.clicker clkx
application/vnd.crick.clicker.keyboard clkk
application/vnd.crick.clicker.palette clkp
application/vnd.crick.clicker.template clkt
application/vnd.crick.clicker.wordbank clkw
application/vnd.criticaltools.wbs+xml wbs
application/vnd.ctc-posml pml
application/vnd.cups-ppd ppd
application/vnd.curl.car car
application/vnd.curl.pcurl pcurl
application/vnd.dart dart
application/vnd.data-vision.rdz rdz
application/vnd.dece.data uvf uvvf uvd uvvd
application/vnd.dece.ttml+xml uvt uvvt
application/vnd.dece.unspecified uvx uvvx
application/vnd.dece.zip uvz uvvz
application/vnd.denovo.fcselayout-link fe_launch
application/vnd.dna dna
application/vnd.dolby.mlp mlp
application/vnd.dpgraph dpg
application/vnd.dreamfactory dfac
application/vnd.ds-keypoint kpxx
application/vnd.dvb.ait ait
application/vnd.dvb.service svc
application/vnd.dynageo geo
application/vnd.ecowin.chart mag
application/vnd.enliven nml
application/vnd.epson.esf esf
application/vnd.epson.msf msf
application/vnd.epson.quickanime qam
application/vnd.epson.salt slt
application/vnd.epson.ssf ssf
application/vnd.eszigno3+xml es3 et3
application/vnd.ezpix-album ez2
application/vnd.ezpix-package ez3
application/vnd.fdf fdf
application/vnd.fdsn.mseed mseed
application/vnd.fdsn.seed seed dataless
application/vnd.flographit gph
application/vnd.fluxtime.clip ftc
application/vnd.framemaker fm frame maker book
application/vnd.frogans.fnc fnc
application/vnd.frogans.ltf ltf
application/vnd.fsc.weblaunch fsc
application/vnd.fujitsu.oasys oas
application/vnd.fujitsu.oasys2 oa2
application/vnd.fujitsu.oasys3 oa3
application/vnd.fujitsu.oasysgp fg5
application/vnd.fujitsu.oasysprs bh2
application/vnd.fujixerox.ddd ddd
application/vnd.fujixerox.docuworks xdw
application/vnd.fujixerox.docuworks.binder xbd
application/vnd.fuzzysheet fzs
application/vnd.genomatix.tuxedo txd
application/vnd.geogebra.file ggb
application/vnd.geogebra.tool ggt
application/vnd.geometry-explorer gex gre
application/vnd.geonext gxt
application/vnd.geoplan g2w
application/vnd.geospace g3w
application/vnd.gmx gmx
application/vnd.google-earth.kml+xml kml
application/vnd.google-earth.kmz kmz
application/vnd.grafeq gqf gqs
application/vnd.groove-account gac
application/vnd.groove-help ghf
application/vnd.groove-identity-message gim
application/vnd.groove-injector grv
application/vnd.groove-tool-message gtm
application/vnd.groove-tool-template tpl
application/vnd.groove-vcard vcg
application/vnd.hal+xml hal
application/vnd.handheld-entertainment+xml zmm
application/vnd.hbci hbci
application/vnd.hhe.lesson-player les
application/vnd.hp-hpgl hpgl
application/vnd.hp-hpid hpid
application/vnd.hp-hps hps
application/vnd.hp-jlyt jlt
application/vnd.hp-pcl pcl
application/vnd.hp-pclxl pclxl
application/vnd.hydrostatix.sof-data sfd-hdstx
application/vnd.ibm.minipay mpy
application/vnd.ibm.modcap afp listafp list3820
application/vnd.ibm.rights-management irm
application/vnd.ibm.secure-container sc
application/vnd.iccprofile icc icm
application/vnd.igloader igl
application/vnd.immervision-ivp ivp
application/vnd.immervision-ivu ivu
application/vnd.insors.igm igm
application/vnd.intercon.formnet xpw xpx
application/vnd.intergeo i2g
application/vnd.intu.qbo qbo
application/vnd.intu.qfx qfx
application/vnd.ipunplugged.rcprofile rcprofile
application/vnd.irepository.package+xml irp
application/vnd.is-xpr xpr
application/vnd.isac.fcs fcs
application/vnd.jam jam
application/vnd.jcp.javame.midlet-rms rms
application/vnd.jisp jisp
application/vnd.joost.joda-archive joda
application/vnd.kahootz ktz ktr
application/vnd.kde.karbon karbon
application/vnd.kde.kchart chrt
application/vnd.kde.kformula kfo
application/vnd.kde.kivio flw
application/vnd.kde.kontour kon
application/vnd.kde.kpresenter kpr kpt
application/vnd.kde.kspread ksp
application/vnd.kde.kword kwd kwt
application/vnd.kenameaapp htke
application/vnd.kidspiration kia
application/vnd.kinar kne knp
application/vnd.koan skp skd skt skm
application/vnd.kodak-descriptor sse
application/vnd.las.las+xml lasxml
application/vnd.llamagraphics.life-balance.desktop lbd
application/vnd.llamagraphics.life-balance.exchange+xml lbe
application/vnd.lotus-1-2-3 123
application/vnd.lotus-approach apr
application/vnd.lotus-freelance pre
application/vnd.lotus-notes nsf
application/vnd.lotus-organizer org
application/vnd.lotus-screencam scm
application/vnd.lotus-wordpro lwp
application/vnd.macports.portpkg portpkg
application/vnd.mcd mcd
application/vnd.medcalcdata mc1
application/vnd.mediastation.cdkey cdkey
application/vnd.mfer mwf
application/vnd.mfmp mfm
application/vnd.micrografx.flo flo
application/vnd.micrografx.igx igx
application/vnd.mif mif
application/vnd.mobius.daf daf
application/vnd.mobius.dis dis
application/vnd.mobius.mbk mbk
application/vnd.mobius.mqy mqy
application/vnd.mobius.msl msl
application/vnd.mobius.plc plc
application/vnd.mobius.txf txf
application/vnd.mophun.application mpn
application/vnd.mophun.certificate mpc
application/vnd.mozilla.xul+xml xul
application/vnd.ms-artgalry cil
application/vnd.ms-cab-compressed cab
application/vnd.ms-excel xls xlm xla xlc xlt xlw
application/vnd.ms-excel.addin.macroenabled.12 xlam
application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb
application/vnd.ms-excel.sheet.macroenabled.12 xlsm
application/vnd.ms-excel.template.macroenabled.12 xltm
application/vnd.ms-fontobject eot
application/vnd.ms-htmlhelp chm
application/vnd.ms-ims ims
application/vnd.ms-lrm lrm
application/vnd.ms-officetheme thmx
application/vnd.ms-pki.seccat cat
application/vnd.ms-pki.stl stl
application/vnd.ms-powerpoint ppt pps pot
application/vnd.ms-powerpoint.addin.macroenabled.12 ppam
application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm
application/vnd.ms-powerpoint.slide.macroenabled.12 sldm
application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm
application/vnd.ms-powerpoint.template.macroenabled.12 potm
application/vnd.ms-project mpp mpt
application/vnd.ms-word.document.macroenabled.12 docm
application/vnd.ms-word.template.macroenabled.12 dotm
application/vnd.ms-works wps wks wcm wdb
application/vnd.ms-wpl wpl
application/vnd.ms-xpsdocument xps
application/vnd.mseq mseq
application/vnd.musician mus
application/vnd.muvee.style msty
application/vnd.mynfc taglet
application/vnd.neurolanguage.nlu nlu
application/vnd.nitf ntf nitf
application/vnd.noblenet-directory nnd
application/vnd.noblenet-sealer nns
application/vnd.noblenet-web nnw
application/vnd.nokia.n-gage.data ngdat
application/vnd.nokia.n-gage.symbian.install n-gage
application/vnd.nokia.radio-preset rpst
application/vnd.nokia.radio-presets rpss
application/vnd.novadigm.edm edm
application/vnd.novadigm.edx edx
application/vnd.novadigm.ext ext
application/vnd.oasis.opendocument.chart odc
application/vnd.oasis.opendocument.chart-template otc
application/vnd.oasis.opendocument.database odb
application/vnd.oasis.opendocument.formula odf
application/vnd.oasis.opendocument.formula-template odft
application/vnd.oasis.opendocument.graphics odg
application/vnd.oasis.opendocument.graphics-template otg
application/vnd.oasis.opendocument.image odi
application/vnd.oasis.opendocument.image-template oti
application/vnd.oasis.opendocument.presentation odp
application/vnd.oasis.opendocument.presentation-template otp
application/vnd.oasis.opendocument.spreadsheet ods
application/vnd.oasis.opendocument.spreadsheet-template ots
application/vnd.oasis.opendocument.text odt
application/vnd.oasis.opendocument.text-master odm
application/vnd.oasis.opendocument.text-template ott
application/vnd.oasis.opendocument.text-web oth
application/vnd.olpc-sugar xo
application/vnd.oma.dd2+xml dd2
application/vnd.openofficeorg.extension oxt
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
application/vnd.openxmlformats-officedocument.presentationml.slide sldx
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
application/vnd.openxmlformats-officedocument.presentationml.template potx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
application/vnd.osgeo.mapguide.package mgp
application/vnd.osgi.dp dp
application/vnd.osgi.subsystem esa
application/vnd.palm pdb pqa oprc
application/vnd.pawaafile paw
application/vnd.pg.format str
application/vnd.pg.osasli ei6
application/vnd.picsel efif
application/vnd.pmi.widget wg
application/vnd.pocketlearn plf
application/vnd.powerbuilder6 pbd
application/vnd.previewsystems.box box
application/vnd.proteus.magazine mgz
application/vnd.publishare-delta-tree qps
application/vnd.pvi.ptid1 ptid
application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb
application/vnd.realvnc.bed bed
application/vnd.recordare.musicxml mxl
application/vnd.recordare.musicxml+xml musicxml
application/vnd.rig.cryptonote cryptonote
application/vnd.rim.cod cod
application/vnd.rn-realmedia rm
application/vnd.rn-realmedia-vbr rmvb
application/vnd.route66.link66+xml link66
application/vnd.sailingtracker.track st
application/vnd.seemail see
application/vnd.sema sema
application/vnd.semd semd
application/vnd.semf semf
application/vnd.shana.informed.formdata ifm
application/vnd.shana.informed.formtemplate itp
application/vnd.shana.informed.interchange iif
application/vnd.shana.informed.package ipk
application/vnd.simtech-mindmapper twd twds
application/vnd.smaf mmf
application/vnd.smart.teacher teacher
application/vnd.solent.sdkm+xml sdkm sdkd
application/vnd.spotfire.dxp dxp
application/vnd.spotfire.sfs sfs
application/vnd.stardivision.calc sdc
application/vnd.stardivision.draw sda
application/vnd.stardivision.impress sdd
application/vnd.stardivision.math smf
application/vnd.stardivision.writer sdw vor
application/vnd.stardivision.writer-global sgl
application/vnd.stepmania.package smzip
application/vnd.stepmania.stepchart sm
application/vnd.sun.xml.calc sxc
application/vnd.sun.xml.calc.template stc
application/vnd.sun.xml.draw sxd
application/vnd.sun.xml.draw.template std
application/vnd.sun.xml.impress sxi
application/vnd.sun.xml.impress.template sti
application/vnd.sun.xml.math sxm
application/vnd.sun.xml.writer sxw
application/vnd.sun.xml.writer.global sxg
application/vnd.sun.xml.writer.template stw
application/vnd.sus-calendar sus susp
application/vnd.svd svd
application/vnd.symbian.install sis sisx
application/vnd.syncml+xml xsm
application/vnd.syncml.dm+wbxml bdm
application/vnd.syncml.dm+xml xdm
application/vnd.tao.intent-module-archive tao
application/vnd.tcpdump.pcap pcap cap dmp
application/vnd.tmobile-livetv tmo
application/vnd.trid.tpt tpt
application/vnd.triscape.mxs mxs
application/vnd.trueapp tra
application/vnd.ufdl ufd ufdl
application/vnd.uiq.theme utz
application/vnd.umajin umj
application/vnd.unity unityweb
application/vnd.uoml+xml uoml
application/vnd.vcx vcx
application/vnd.visio vsd vst vss vsw
application/vnd.visionary vis
application/vnd.vsf vsf
application/vnd.wap.wbxml wbxml
application/vnd.wap.wmlc wmlc
application/vnd.wap.wmlscriptc wmlsc
application/vnd.webturbo wtb
application/vnd.wolfram.player nbp
application/vnd.wordperfect wpd
application/vnd.wqd wqd
application/vnd.wt.stf stf
application/vnd.xara xar
application/vnd.xfdl xfdl
application/vnd.yamaha.hv-dic hvd
application/vnd.yamaha.hv-script hvs
application/vnd.yamaha.hv-voice hvp
application/vnd.yamaha.openscoreformat osf
application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg
application/vnd.yamaha.smaf-audio saf
application/vnd.yamaha.smaf-phrase spf
application/vnd.yellowriver-custom-menu cmp
application/vnd.zul zir zirz
application/vnd.zzazz.deck+xml zaz
application/voicexml+xml vxml
application/widget wgt
application/winhlp hlp
application/wsdl+xml wsdl
application/wspolicy+xml wspolicy
application/x-7z-compressed 7z
application/x-abiword abw
application/x-ace-compressed ace
application/x-apple-diskimage dmg
application/x-authorware-bin aab x32 u32 vox
application/x-authorware-map aam
application/x-authorware-seg aas
application/x-bcpio bcpio
application/x-bittorrent torrent
application/x-blorb blb blorb
application/x-bzip bz
application/x-bzip2 bz2 boz
application/x-cbr cbr cba cbt cbz cb7
application/x-cdlink vcd
application/x-cfs-compressed cfs
application/x-chat chat
application/x-chess-pgn pgn
application/x-conference nsc
application/x-cpio cpio
application/x-csh csh
application/x-debian-package deb udeb
application/x-dgc-compressed dgc
application/x-director dir dcr dxr cst cct cxt w3d fgd swa
application/x-doom wad
application/x-dtbncx+xml ncx
application/x-dtbook+xml dtb
application/x-dtbresource+xml res
application/x-dvi dvi
application/x-envoy evy
application/x-eva eva
application/x-font-bdf bdf
application/x-font-ghostscript gsf
application/x-font-linux-psf psf
application/x-font-pcf pcf
application/x-font-snf snf
application/x-font-type1 pfa pfb pfm afm
application/x-freearc arc
application/x-futuresplash spl
application/x-gca-compressed gca
application/x-glulx ulx
application/x-gnumeric gnumeric
application/x-gramps-xml gramps
application/x-gtar gtar
application/x-hdf hdf
application/x-install-instructions install
application/x-iso9660-image iso
application/x-java-jnlp-file jnlp
application/x-latex latex
application/x-lzh-compressed lzh lha
application/x-mie mie
application/x-mobipocket-ebook prc mobi
application/x-ms-application application
application/x-ms-shortcut lnk
application/x-ms-wmd wmd
application/x-ms-wmz wmz
application/x-ms-xbap xbap
application/x-msaccess mdb
application/x-msbinder obd
application/x-mscardfile crd
application/x-msclip clp
application/x-msdownload exe dll com bat msi
application/x-msmediaview mvb m13 m14
application/x-msmetafile wmf wmz emf emz
application/x-msmoney mny
application/x-mspublisher pub
application/x-msschedule scd
application/x-msterminal trm
application/x-mswrite wri
application/x-netcdf nc cdf
application/x-nzb nzb
application/x-pkcs12 p12 pfx
application/x-pkcs7-certificates p7b spc
application/x-pkcs7-certreqresp p7r
application/x-rar-compressed rar
application/x-research-info-systems ris
application/x-sh sh
application/x-shar shar
application/x-shockwave-flash swf
application/x-silverlight-app xap
application/x-sql sql
application/x-stuffit sit
application/x-stuffitx sitx
application/x-subrip srt
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-t3vm-image t3
application/x-tads gam
application/x-tar tar
application/x-tcl tcl
application/x-tex tex
application/x-tex-tfm tfm
application/x-texinfo texinfo texi
application/x-tgif obj
application/x-ustar ustar
application/x-wais-source src
application/x-x509-ca-cert der crt
application/x-xfig fig
application/x-xliff+xml xlf
application/x-xpinstall xpi
application/x-xz xz
application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8
application/xaml+xml xaml
application/xcap-diff+xml xdf
application/xenc+xml xenc
application/xhtml+xml xhtml xht
application/xml xml xsl
application/xml-dtd dtd
application/xop+xml xop
application/xproc+xml xpl
application/xslt+xml xslt
application/xspf+xml xspf
application/xv+xml mxml xhvml xvml xvm
application/yang yang
application/yin+xml yin
application/zip zip
audio/adpcm adp
audio/basic au snd
audio/midi mid midi kar rmi
audio/mp4 m4a mp4a
audio/mpeg mpga mp2 mp2a mp3 m2a m3a
audio/ogg oga ogg spx
audio/s3m s3m
audio/silk sil
audio/vnd.dece.audio uva uvva
audio/vnd.digital-winds eol
audio/vnd.dra dra
audio/vnd.dts dts
audio/vnd.dts.hd dtshd
audio/vnd.lucent.voice lvp
audio/vnd.ms-playready.media.pya pya
audio/vnd.nuera.ecelp4800 ecelp4800
audio/vnd.nuera.ecelp7470 ecelp7470
audio/vnd.nuera.ecelp9600 ecelp9600
audio/vnd.rip rip
audio/webm weba
audio/x-aac aac
audio/x-aiff aif aiff aifc
audio/x-caf caf
audio/x-flac flac
audio/x-matroska mka
audio/x-mpegurl m3u
audio/x-ms-wax wax
audio/x-ms-wma wma
audio/x-pn-realaudio ram ra
audio/x-pn-realaudio-plugin rmp
audio/x-wav wav
audio/xm xm
chemical/x-cdx cdx
chemical/x-cif cif
chemical/x-cmdf cmdf
chemical/x-cml cml
chemical/x-csml csml
chemical/x-xyz xyz
font/collection ttc
font/otf otf
font/ttf ttf
font/woff woff
font/woff2 woff2
image/bmp bmp
image/cgm cgm
image/g3fax g3
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/ktx ktx
image/png png
image/prs.btif btif
image/sgi sgi
image/svg+xml svg svgz
image/tiff tiff tif
image/vnd.adobe.photoshop psd
image/vnd.dece.graphic uvi uvvi uvg uvvg
image/vnd.djvu djvu djv
image/vnd.dvb.subtitle sub
image/vnd.dwg dwg
image/vnd.dxf dxf
image/vnd.fastbidsheet fbs
image/vnd.fpx fpx
image/vnd.fst fst
image/vnd.fujixerox.edmics-mmr mmr
image/vnd.fujixerox.edmics-rlc rlc
image/vnd.ms-modi mdi
image/vnd.ms-photo wdp
image/vnd.net-fpx npx
image/vnd.wap.wbmp wbmp
image/vnd.xiff xif
image/webp webp
image/x-3ds 3ds
image/x-cmu-raster ras
image/x-cmx cmx
image/x-freehand fh fhc fh4 fh5 fh7
image/x-icon ico
image/x-mrsid-image sid
image/x-pcx pcx
image/x-pict pic pct
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-tga tga
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
message/rfc822 eml mime
model/iges igs iges
model/mesh msh mesh silo
model/vnd.collada+xml dae
model/vnd.dwf dwf
model/vnd.gdl gdl
model/vnd.gtw gtw
model/vnd.mts mts
model/vnd.vtu vtu
model/vrml wrl vrml
model/x3d+binary x3db x3dbz
model/x3d+vrml x3dv x3dvz
model/x3d+xml x3d x3dz
text/cache-manifest appcache
text/calendar ics ifb
text/css css
text/csv csv
text/html html htm
text/n3 n3
text/plain txt text conf def list log in
text/prs.lines.tag dsc
text/richtext rtx
text/sgml sgml sgm
text/tab-separated-values tsv
text/troff t tr roff man me ms
text/turtle ttl
text/uri-list uri uris urls
text/vcard vcard
text/vnd.curl curl
text/vnd.curl.dcurl dcurl
text/vnd.curl.mcurl mcurl
text/vnd.curl.scurl scurl
text/vnd.dvb.subtitle sub
text/vnd.fly fly
text/vnd.fmi.flexstor flx
text/vnd.graphviz gv
text/vnd.in3d.3dml 3dml
text/vnd.in3d.spot spot
text/vnd.sun.j2me.app-descriptor jad
text/vnd.wap.wml wml
text/vnd.wap.wmlscript wmls
text/x-asm s asm
text/x-c c cc cxx cpp h hh dic
text/x-fortran f for f77 f90
text/x-java-source java
text/x-nfo nfo
text/x-opml opml
text/x-pascal p pas
text/x-setext etx
text/x-sfv sfv
text/x-uuencode uu
text/x-vcalendar vcs
text/x-vcard vcf
video/3gpp 3gp
video/3gpp2 3g2
video/h261 h261
video/h263 h263
video/h264 h264
video/jpeg jpgv
video/jpm jpm jpgm
video/mj2 mj2 mjp2
video/mp4 mp4 mp4v mpg4
video/mpeg mpeg mpg mpe m1v m2v
video/ogg ogv
video/quicktime qt mov
video/vnd.dece.hd uvh uvvh
video/vnd.dece.mobile uvm uvvm
video/vnd.dece.pd uvp uvvp
video/vnd.dece.sd uvs uvvs
video/vnd.dece.video uvv uvvv
video/vnd.dvb.file dvb
video/vnd.fvt fvt
video/vnd.mpegurl mxu m4u
video/vnd.ms-playready.media.pyv pyv
video/vnd.uvvu.mp4 uvu uvvu
video/vnd.vivo viv
video/webm webm
video/x-f4v f4v
video/x-fli fli
video/x-flv flv
video/x-m4v m4v
video/x-matroska mkv mk3d mks
video/x-mng mng
video/x-ms-asf asf asx
video/x-ms-vob vob
video/x-ms-wm wm
video/x-ms-wmv wmv
video/x-ms-wmx wmx
video/x-ms-wvx wvx
video/x-msvideo avi
video/x-sgi-movie movie
video/x-smv smv
x-conference/x-cooltalk ice
lib/php/elFinderVolumeDropbox.class.php000064400000121500147361034400014175 0ustar00<?php

elFinder::$netDrivers['dropbox'] = 'Dropbox';

/**
 * Simple elFinder driver for FTP
 *
 * @author Dmitry (dio) Levashov
 * @author Cem (discofever)
 **/
class elFinderVolumeDropbox extends elFinderVolumeDriver {

	/**
	 * Driver id
	 * Must be started from letter and contains [a-z0-9]
	 * Used as part of volume id
	 *
	 * @var string
	 **/
	protected $driverId = 'd';

	/**
	 * OAuth object
	 *
	 * @var oauth
	 **/
	protected $oauth = null;

	/**
	 * Dropbox object
	 *
	 * @var dropbox
	 **/
	protected $dropbox = null;

	/**
	 * Directory for meta data caches
	 * If not set driver not cache meta data
	 *
	 * @var string
	 **/
	protected $metaCache = '';

	/**
	 * Last API error message
	 *
	 * @var string
	 **/
	protected $apiError = '';

	/**
	 * Directory for tmp files
	 * If not set driver will try to use tmbDir as tmpDir
	 *
	 * @var string
	 **/
	protected $tmp = '';
	
	/**
	 * Dropbox.com uid
	 *
	 * @var string
	 **/
	protected $dropboxUid = '';
	
	/**
	 * Dropbox download host, replaces 'www.dropbox.com' of shares URL
	 * 
	 * @var string
	 */
	private $dropbox_dlhost = 'dl.dropboxusercontent.com';
	
	private $dropbox_phpFound = false;
	
	private $DB_TableName = '';
	
	private $tmbPrefix = '';

	/**
	 * Constructor
	 * Extend options with required fields
	 *
	 * @author Dmitry (dio) Levashov
	 * @author Cem (DiscoFever)
	 */
	public function __construct() {

		// check with composer
		$this->dropbox_phpFound = class_exists('Dropbox_API');
		
		if (! $this->dropbox_phpFound) {
			// check with pear
			if (include_once 'Dropbox/autoload.php') {
				$this->dropbox_phpFound = in_array('Dropbox_autoload', spl_autoload_functions());
			}
		}
		
		$opts = array(
			'consumerKey'       => '',
			'consumerSecret'    => '',
			'accessToken'       => '',
			'accessTokenSecret' => '',
			'dropboxUid'        => '',
			'root'              => 'dropbox',
			'path'              => '/',
			'separator'         => '/',
			'PDO_DSN'           => '', // if empty use 'sqlite:(metaCachePath|tmbPath)/elFinder_dropbox_db_(hash:dropboxUid+consumerSecret)'
			'PDO_User'          => '',
			'PDO_Pass'          => '',
			'PDO_Options'       => array(),
			'PDO_DBName'        => 'dropbox',
			'treeDeep'          => 0,
			'tmbPath'           => '',
			'tmbURL'            => '',
			'tmpPath'           => '',
			'getTmbSize'        => 'large', // small: 32x32, medium or s: 64x64, large or m: 128x128, l: 640x480, xl: 1024x768
			'metaCachePath'     => '',
			'metaCacheTime'     => '600', // 10m
			'acceptedName'      => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#',
			'rootCssClass'      => 'elfinder-navbar-root-dropbox'
		);
		$this->options = array_merge($this->options, $opts);
		$this->options['mimeDetect'] = 'internal';
	}

	/**
	 * Prepare
	 * Call from elFinder::netmout() before volume->mount()
	 *
	 * @param $options
	 * @return Array
	 * @author Naoki Sawada
	 */
	public function netmountPrepare($options) {
		if (empty($options['consumerKey']) && defined('ELFINDER_DROPBOX_CONSUMERKEY')) $options['consumerKey'] = ELFINDER_DROPBOX_CONSUMERKEY;
		if (empty($options['consumerSecret']) && defined('ELFINDER_DROPBOX_CONSUMERSECRET')) $options['consumerSecret'] = ELFINDER_DROPBOX_CONSUMERSECRET;
		
		if ($options['user'] === 'init') {

			if (! $this->dropbox_phpFound || empty($options['consumerKey']) || empty($options['consumerSecret']) || !class_exists('PDO', false)) {
				return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
			}
			
			if (defined('ELFINDER_DROPBOX_USE_CURL_PUT')) {
				$this->oauth = new Dropbox_OAuth_Curl($options['consumerKey'], $options['consumerSecret']);
			} else {
				if (class_exists('OAuth', false)) {
					$this->oauth = new Dropbox_OAuth_PHP($options['consumerKey'], $options['consumerSecret']);
				} else {
					if (! class_exists('HTTP_OAuth_Consumer')) {
						// We're going to try to load in manually
						include 'HTTP/OAuth/Consumer.php';
					}
					if (class_exists('HTTP_OAuth_Consumer', false)) {
						$this->oauth = new Dropbox_OAuth_PEAR($options['consumerKey'], $options['consumerSecret']);
					}
				}
			}
			
			if (! $this->oauth) {
				return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
			}

			if ($options['pass'] === 'init') {
				$html = '';
				if ($sessionToken = $this->session->get('DropboxTokens')) {
					// token check
					try {
						list(, $accessToken, $accessTokenSecret) = $sessionToken;
						$this->oauth->setToken($accessToken, $accessTokenSecret);
						$this->dropbox = new Dropbox_API($this->oauth, $this->options['root']);
						$this->dropbox->getAccountInfo();
						$script = '<script>
							jQuery("#'.$options['id'].'").elfinder("instance").trigger("netmount", {protocol: "dropbox", mode: "done"});
						</script>';
						$html = $script;
					} catch (Dropbox_Exception $e) {
						$this->session->remove('DropboxTokens');
					}
				}
				if (! $html) {
					// get customdata
					$cdata = '';
					$innerKeys = array('cmd', 'host', 'options', 'pass', 'protocol', 'user');
					$this->ARGS = $_SERVER['REQUEST_METHOD'] === 'POST'? $_POST : $_GET;
					foreach($this->ARGS as $k => $v) {
						if (! in_array($k, $innerKeys)) {
							$cdata .= '&' . $k . '=' . rawurlencode($v);
						}
					}
					if (strpos($options['url'], 'http') !== 0 ) {
						$options['url'] = elFinder::getConnectorUrl();
					}
					$callback  = $options['url']
					           . '?cmd=netmount&protocol=dropbox&host=dropbox.com&user=init&pass=return&node='.$options['id'].$cdata;
					
					try {
						$tokens = $this->oauth->getRequestToken();
						$url= $this->oauth->getAuthorizeUrl(rawurlencode($callback));
					} catch (Dropbox_Exception $e) {
						return array('exit' => true, 'body' => '{msg:errAccess}');
					}
					
					$this->session->set('DropboxAuthTokens', $tokens);
					$html = '<input id="elf-volumedriver-dropbox-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\''.$url.'\')">';
					$html .= '<script>
						jQuery("#'.$options['id'].'").elfinder("instance").trigger("netmount", {protocol: "dropbox", mode: "makebtn"});
					</script>';
				}
				return array('exit' => true, 'body' => $html);
			} else {
				$this->oauth->setToken($this->session->get('DropboxAuthTokens'));
				$this->session->remove('DropboxAuthTokens');
				$tokens = $this->oauth->getAccessToken();
				$this->session->set('DropboxTokens', array($_GET['uid'], $tokens['token'], $tokens['token_secret']));
				
				$out = array(
					'node' => $_GET['node'],
					'json' => '{"protocol": "dropbox", "mode": "done"}',
					'bind' => 'netmount'
				);
				
				return array('exit' => 'callback', 'out' => $out);
			}
		}
		if ($sessionToken = $this->session->get('DropboxTokens')) {
			list($options['dropboxUid'], $options['accessToken'], $options['accessTokenSecret']) = $sessionToken;
		}
		unset($options['user'], $options['pass']);
		return $options;
	}

	/**
	 * process of on netunmount
	 * Drop table `dropbox` & rm thumbs
	 *
	 * @param $netVolumes
	 * @param $key
	 * @return bool
	 * @internal param array $options
	 */
	public function netunmount($netVolumes, $key) {
		$count = 0;
		$dropboxUid = '';
		if (isset($netVolumes[$key])) {
			$dropboxUid = $netVolumes[$key]['dropboxUid'];
		}
		foreach($netVolumes as $volume) {
			if ($volume['host'] === 'dropbox' && $volume['dropboxUid'] === $dropboxUid) {
				$count++;
			}
		}
		if ($count === 1) {
			$this->DB->exec('drop table '.$this->DB_TableName);
			foreach(glob(rtrim($this->options['tmbPath'], '\\/').DIRECTORY_SEPARATOR.$this->tmbPrefix.'*.png') as $tmb) {
				unlink($tmb);
			}
		}
		return true;
	}
	
	/*********************************************************************/
	/*                        INIT AND CONFIGURE                         */
	/*********************************************************************/

	/**
	 * Prepare FTP connection
	 * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn
	 *
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 * @author Cem (DiscoFever)
	 **/
	protected function init() {
		if (!class_exists('PDO', false)) {
			return $this->setError('PHP PDO class is require.');
		}
		
		if (!$this->options['consumerKey']
		||  !$this->options['consumerSecret']
		||  !$this->options['accessToken']
		||  !$this->options['accessTokenSecret']) {
			return $this->setError('Required options undefined.');
		}
		
		if (empty($this->options['metaCachePath']) && defined('ELFINDER_DROPBOX_META_CACHE_PATH')) {
			$this->options['metaCachePath'] = ELFINDER_DROPBOX_META_CACHE_PATH;
		}
		
		// make net mount key
		$this->netMountKey = md5(join('-', array('dropbox', $this->options['path'])));

		if (! $this->oauth) {
			if (defined('ELFINDER_DROPBOX_USE_CURL_PUT')) {
				$this->oauth = new Dropbox_OAuth_Curl($this->options['consumerKey'], $this->options['consumerSecret']);
			} else {
				if (class_exists('OAuth', false)) {
					$this->oauth = new Dropbox_OAuth_PHP($this->options['consumerKey'], $this->options['consumerSecret']);
				} else {
					if (! class_exists('HTTP_OAuth_Consumer')) {
						// We're going to try to load in manually
						include 'HTTP/OAuth/Consumer.php';
					}
					if (class_exists('HTTP_OAuth_Consumer', false)) {
						$this->oauth = new Dropbox_OAuth_PEAR($this->options['consumerKey'], $this->options['consumerSecret']);
					}
				}
			}
		}
		
		if (! $this->oauth) {
			return $this->setError('OAuth extension not loaded.');
		}

		// normalize root path
		$this->root = $this->options['path'] = $this->_normpath($this->options['path']);

		if (empty($this->options['alias'])) {
			$this->options['alias'] = ($this->options['path'] === '/')? 'Dropbox.com'  : 'Dropbox'.$this->options['path'];
		}

		$this->rootName = $this->options['alias'];

		try {
			$this->oauth->setToken($this->options['accessToken'], $this->options['accessTokenSecret']);
			$this->dropbox = new Dropbox_API($this->oauth, $this->options['root']);
		} catch (Dropbox_Exception $e) {
			$this->session->remove('DropboxTokens');
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		
		// user
		if (empty($this->options['dropboxUid'])) {
			try {
				$res = $this->dropbox->getAccountInfo();
				$this->options['dropboxUid'] = $res['uid'];
			} catch (Dropbox_Exception $e) {
				$this->session->remove('DropboxTokens');
				return $this->setError('Dropbox error: '.$e->getMessage());
			}
		}
		
		$this->dropboxUid = $this->options['dropboxUid'];
		$this->tmbPrefix = 'dropbox'.base_convert($this->dropboxUid, 10, 32);

		if (!empty($this->options['tmpPath'])) {
			if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
				$this->tmp = $this->options['tmpPath'];
			}
		}
		if (!$this->tmp && is_writable($this->options['tmbPath'])) {
			$this->tmp = $this->options['tmbPath'];
		}
		if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
			$this->tmp = $tmp;
		}
		
		if (!empty($this->options['metaCachePath'])) {
			if ((is_dir($this->options['metaCachePath']) || mkdir($this->options['metaCachePath'])) && is_writable($this->options['metaCachePath'])) {
				$this->metaCache = $this->options['metaCachePath'];
			}
		}
		if (!$this->metaCache && $this->tmp) {
			$this->metaCache = $this->tmp;
		}
		
		if (!$this->metaCache) {
			return $this->setError('Cache dirctory (metaCachePath or tmp) is require.');
		}
		
		// setup PDO
		if (! $this->options['PDO_DSN']) {
			$this->options['PDO_DSN'] = 'sqlite:'.$this->metaCache.DIRECTORY_SEPARATOR.'.elFinder_dropbox_db_'.md5($this->dropboxUid.$this->options['consumerSecret']);
		}
		// DataBase table name
		$this->DB_TableName = $this->options['PDO_DBName'];
		// DataBase check or make table
		try {
			$this->DB = new PDO($this->options['PDO_DSN'], $this->options['PDO_User'], $this->options['PDO_Pass'], $this->options['PDO_Options']);
			if (! $this->checkDB()) {
				return $this->setError('Can not make DB table');
			}
		} catch (PDOException $e) {
			return $this->setError('PDO connection failed: '.$e->getMessage());
		}
		
		$res = $this->deltaCheck($this->isMyReload());
		if ($res !== true) {
			if (is_string($res)) {
				return $this->setError($res);
			} else {
				return $this->setError('Could not check API "delta"');
			}
		}
		
		if (is_null($this->options['syncChkAsTs'])) {
			$this->options['syncChkAsTs'] = true;
		}
		if ($this->options['syncChkAsTs']) {
			// 'tsPlSleep' minmum 5 sec
			$this->options['tsPlSleep'] = max(5, $this->options['tsPlSleep']);
		} else {
			// 'lsPlSleep' minmum 10 sec
			$this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);
		}
		
		return true;
	}


	/**
	 * Configure after successful mount.
	 *
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function configure() {
		parent::configure();
		
		$this->disabled[] = 'archive';
		$this->disabled[] = 'extract';
	}
	
	/**
	 * Check DB for delta cache
	 * 
	 * @return bool
	 */
	private function checkDB() {
		$res = $this->query('SELECT * FROM sqlite_master WHERE type=\'table\' AND name=\''.$this->DB_TableName.'\'');
		if ($res && isset($_REQUEST['init'])) {
			// check is index(nameidx) UNIQUE?
			$chk = $this->query('SELECT sql FROM sqlite_master WHERE type=\'index\' and name=\'nameidx\'');
			if (!$chk || strpos(strtoupper($chk[0]), 'UNIQUE') === false) {
				// remake
				$this->DB->exec('DROP TABLE '.$this->DB_TableName);
				$res = false;
			}
		}
		if (! $res) {
			try {
				$this->DB->exec('CREATE TABLE '.$this->DB_TableName.'(path text, fname text, dat blob, isdir integer);');
				$this->DB->exec('CREATE UNIQUE INDEX nameidx ON '.$this->DB_TableName.'(path, fname)');
				$this->DB->exec('CREATE INDEX isdiridx ON '.$this->DB_TableName.'(isdir)');
			} catch (PDOException $e) {
				return $this->setError($e->getMessage());
			}
		}
		return true;
	}
	
	/**
	 * DB query and fetchAll
	 * 
	 * @param string $sql
	 * @return boolean|array
	 */
	private function query($sql) {
		if ($sth = $this->DB->query($sql)) {
			$res = $sth->fetchAll(PDO::FETCH_COLUMN);
		} else {
			$res = false;
		}
		return $res;
	}
	
	/**
	 * Get dat(dropbox metadata) from DB
	 * 
	 * @param string $path
	 * @return array dropbox metadata
	 */
	private function getDBdat($path) {
		if ($res = $this->query('select dat from '.$this->DB_TableName.' where path='.$this->DB->quote(strtolower($this->_dirname($path))).' and fname='.$this->DB->quote(strtolower($this->_basename($path))).' limit 1')) {
			return unserialize($res[0]);
		} else {
			return array();
		}
	}
	
	/**
	 * Update DB dat(dropbox metadata)
	 * 
	 * @param string $path
	 * @param array $dat
	 * @return bool|array
	 */
	private function updateDBdat($path, $dat) {
		return $this->query('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize($dat))
				. ', isdir=' . ($dat['is_dir']? 1 : 0)
				. ' where path='.$this->DB->quote(strtolower($this->_dirname($path))).' and fname='.$this->DB->quote(strtolower($this->_basename($path))));
	}
	/*********************************************************************/
	/*                               FS API                              */
	/*********************************************************************/

	/**
	 * Close opened connection
	 *
	 * @return void
	 * @author Dmitry (dio) Levashov
	 **/
	public function umount() {

	}
	
	/**
	 * Get delta data and DB update
	 * 
	 * @param boolean $refresh force refresh
	 * @return true|string error message
	 */
	protected function deltaCheck($refresh = true) {
		$chk = false;
		if (! $refresh && $chk = $this->query('select dat from '.$this->DB_TableName.' where path=\'\' and fname=\'\' limit 1')) {
			$chk = unserialize($chk[0]);
		}
		if ($chk && ($chk['mtime'] + $this->options['metaCacheTime']) > $_SERVER['REQUEST_TIME']) {
			return true;
		}
		
		try {
			$more = true;
			$this->DB->beginTransaction();
			
			if ($res = $this->query('select dat from '.$this->DB_TableName.' where path=\'\' and fname=\'\' limit 1')) {
				$res = unserialize($res[0]);
				$cursor = $res['cursor'];
			} else {
				$cursor = '';
			}
			$delete = false;
			$reset = false;
			$ptimes = array();
			$now = time();
			do {
				 ini_set('max_execution_time', 120);
				$_info = $this->dropbox->delta($cursor);
				if (! empty($_info['reset'])) {
					$this->DB->exec('TRUNCATE table '.$this->DB_TableName);
					$this->DB->exec('insert into '.$this->DB_TableName.' values(\'\', \'\', \''.serialize(array('cursor' => '', 'mtime' => 0)).'\', 0);');
					$this->DB->exec('insert into '.$this->DB_TableName.' values(\'/\', \'\', \''.serialize(array(
						'path'      => '/',
						'is_dir'    => 1,
						'mime_type' => '',
						'bytes'     => 0
					)).'\', 0);');
					$reset = true;
				}
				$cursor = $_info['cursor'];
				
				foreach($_info['entries'] as $entry) {
					$key = strtolower($entry[0]);
					$pkey = strtolower($this->_dirname($key));
					
					$path = $this->DB->quote($pkey);
					$fname = $this->DB->quote(strtolower($this->_basename($key)));
					$where = 'where path='.$path.' and fname='.$fname;
					
					if (empty($entry[1])) {
						$ptimes[$pkey] = isset($ptimes[$pkey])? max(array($now, $ptimes[$pkey])) : $now;
						$this->DB->exec('delete from '.$this->DB_TableName.' '.$where);
						! $delete && $delete = true;
						continue;
					}

					$_itemTime = strtotime(isset($entry[1]['client_mtime'])? $entry[1]['client_mtime'] : $entry[1]['modified']);
					$ptimes[$pkey] = isset($ptimes[$pkey])? max(array($_itemTime, $ptimes[$pkey])) : $_itemTime;
					$sql = 'select path from '.$this->DB_TableName.' '.$where.' limit 1';
					if (! $reset && $this->query($sql)) {
						$this->DB->exec('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize($entry[1])).', isdir='.($entry[1]['is_dir']? 1 : 0).' ' .$where);
					} else {
						$this->DB->exec('insert into '.$this->DB_TableName.' values ('.$path.', '.$fname.', '.$this->DB->quote(serialize($entry[1])).', '.(int)$entry[1]['is_dir'].')');
					}
				}
			} while (! empty($_info['has_more']));
			
			// update time stamp of parent holder
			foreach ($ptimes as $_p => $_t) {
				if ($praw = $this->getDBdat($_p)) {
					$_update = false;
					if (isset($praw['client_mtime']) && $_t > strtotime($praw['client_mtime'])) {
						$praw['client_mtime'] = date('r', $_t);
						$_update = true;
					}
					if (isset($praw['modified']) && $_t > strtotime($praw['modified'])) {
						$praw['modified'] = date('r', $_t);
						$_update = true;
					}
					if ($_update) {
						$pwhere = 'where path='.$this->DB->quote(strtolower($this->_dirname($_p))).' and fname='.$this->DB->quote(strtolower($this->_basename($_p)));
						$this->DB->exec('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize($praw)).' '.$pwhere);
					}
				}
			}
			
			$this->DB->exec('update '.$this->DB_TableName.' set dat='.$this->DB->quote(serialize(array('cursor'=>$cursor, 'mtime'=>$_SERVER['REQUEST_TIME']))).' where path=\'\' and fname=\'\'');
			if (! $this->DB->commit()) {
				$e = $this->DB->errorInfo();
				return $e[2];
			}
			if ($delete) {
				$this->DB->exec('vacuum');
			}
		} catch(Dropbox_Exception $e) {
			return $e->getMessage();
		}
		return true;
	}
	
	/**
	 * Parse line from dropbox metadata output and return file stat (array)
	 *
	 * @param  string  $raw  line from ftp_rawlist() output
	 * @return array
	 * @author Dmitry Levashov
	 **/
	protected function parseRaw($raw) {
		$stat = array();

		$stat['rev']   = isset($raw['rev'])? $raw['rev'] : 'root';
		$stat['name']  = $this->_basename($raw['path']);
		$stat['mime']  = $raw['is_dir']? 'directory' : $raw['mime_type'];
		$stat['size']  = $stat['mime'] == 'directory' ? 0 : $raw['bytes'];
		$stat['ts']    = isset($raw['client_mtime'])? strtotime($raw['client_mtime']) :
		                (isset($raw['modified'])? strtotime($raw['modified']) : $_SERVER['REQUEST_TIME']);
		$stat['dirs'] = 0;
		if ($raw['is_dir']) {
			$stat['dirs'] = (int)(bool)$this->query('select path from '.$this->DB_TableName.' where isdir=1 and path='.$this->DB->quote(strtolower($raw['path'])));
		}
		
		if (!empty($raw['url'])) {
			$stat['url'] = $raw['url'];
		} else if (! $this->disabledGetUrl) {
			$stat['url'] = '1';
		}
		if (isset($raw['width'])) $stat['width'] = $raw['width'];
		if (isset($raw['height'])) $stat['height'] = $raw['height'];
		
		return $stat;
	}

	/**
	 * Cache dir contents
	 *
	 * @param  string  $path  dir path
	 * @return string
	 * @author Dmitry Levashov
	 **/
	protected function cacheDir($path) {
		$this->dirsCache[$path] = array();
		$hasDir = false;
		
		$res = $this->query('select dat from '.$this->DB_TableName.' where path='.$this->DB->quote(strtolower($path)));
		
		if ($res) {
			foreach($res as $raw) {
				$raw = unserialize($raw);
				if ($stat = $this->parseRaw($raw)) {
					$stat = $this->updateCache($raw['path'], $stat);
					if (empty($stat['hidden']) && $path !== $raw['path']) {
						if (! $hasDir && $stat['mime'] === 'directory') {
							$hasDir = true;
						}
						$this->dirsCache[$path][] = $raw['path'];
					}
				}
			}
		}
		
		if (isset($this->sessionCache['subdirs'])) {
			$this->sessionCache['subdirs'][$path] = $hasDir;
		}
		
		return $this->dirsCache[$path];
	}

	/**
	* Recursive files search
	*
	* @param  string  $path   dir path
	* @param  string  $q      search string
	* @param  array   $mimes
	* @return array
	* @author Naoki Sawada
	**/
	protected function doSearch($path, $q, $mimes) {
		$result = array();
		$sth = $this->DB->prepare('select dat from '.$this->DB_TableName.' WHERE path LIKE ? AND fname LIKE ?');
		$sth->execute(array((($path === '/')? '' : strtolower($path)).'%', '%'.strtolower($q).'%'));
		$res = $sth->fetchAll(PDO::FETCH_COLUMN);
		$timeout = $this->options['searchTimeout']? $this->searchStart + $this->options['searchTimeout'] : 0;
		
		if ($res) {
			foreach($res as $raw) {
				if ($timeout && $timeout < time()) {
					$this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->path($this->encode($path)));
					break;
				}
				
				$raw = unserialize($raw);
				if ($stat = $this->parseRaw($raw)) {
					if (!isset($this->cache[$raw['path']])) {
						$stat = $this->updateCache($raw['path'], $stat);
					}
					if (!empty($stat['hidden']) || ($mimes && $stat['mime'] === 'directory') || !$this->mimeAccepted($stat['mime'], $mimes)) {
						continue;
					}
					$stat = $this->stat($raw['path']);
					$stat['path'] = $this->path($stat['hash']);
					$result[] = $stat;
				}
			}
		}
		return $result;
	}
	
	/**
	* Copy file/recursive copy dir only in current volume.
	* Return new file path or false.
	*
	* @param  string  $src   source path
	* @param  string  $dst   destination dir path
	* @param  string  $name  new file name (optionaly)
	* @return string|false
	* @author Dmitry (dio) Levashov
	* @author Naoki Sawada
	**/
	protected function copy($src, $dst, $name) {

		$this->clearcache();

		return $this->_copy($src, $dst, $name)
		? $this->_joinPath($dst, $name)
		: $this->setError(elFinder::ERROR_COPY, $this->_path($src));
	}

	/**
	 * Remove file/ recursive remove dir
	 *
	 * @param  string $path file path
	 * @param  bool $force try to remove even if file locked
	 * @param bool $recursive
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 * @author Naoki Sawada
	 */
	protected function remove($path, $force = false, $recursive = false) {
		$stat = $this->stat($path);
		$stat['realpath'] = $path;
		$this->rmTmb($stat);
		$this->clearcache();
	
		if (empty($stat)) {
			return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
		}
	
		if (!$force && !empty($stat['locked'])) {
			return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
		}
	
		if ($stat['mime'] == 'directory') {
			if (!$recursive && !$this->_rmdir($path)) {
				return $this->setError(elFinder::ERROR_RM, $this->_path($path));
			}
		} else {
			if (!$recursive && !$this->_unlink($path)) {
				return $this->setError(elFinder::ERROR_RM, $this->_path($path));
			}
		}
	
		$this->removed[] = $stat;
		return true;
	}

	/**
	 * Create thumnbnail and return it's URL on success
	 *
	 * @param  string $path file path
	 * @param $stat
	 * @return false|string
	 * @internal param string $mime file mime type
	 * @author Dmitry (dio) Levashov
	 * @author Naoki Sawada
	 */
	protected function createTmb($path, $stat) {
		if (!$stat || !$this->canCreateTmb($path, $stat)) {
			return false;
		}
	
		$name = $this->tmbname($stat);
		$tmb  = $this->tmbPath.DIRECTORY_SEPARATOR.$name;
	
		// copy image into tmbPath so some drivers does not store files on local fs
		if (! $data = $this->getThumbnail($path, $this->options['getTmbSize'])) {
			return false;
		}
		if (! file_put_contents($tmb, $data)) {
			return false;
		}
	
		$result = false;
	
		$tmbSize = $this->tmbSize;
	
		if (($s = getimagesize($tmb)) == false) {
			return false;
		}
	
		/* If image smaller or equal thumbnail size - just fitting to thumbnail square */
		if ($s[0] <= $tmbSize && $s[1]  <= $tmbSize) {
			$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png' );
	
		} else {
	
			if ($this->options['tmbCrop']) {
	
				/* Resize and crop if image bigger than thumbnail */
				if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize) ) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
					$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
				}
	
				if (($s = getimagesize($tmb)) != false) {
					$x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize)/2) : 0;
					$y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize)/2) : 0;
					$result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
				}
	
			} else {
				$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
			}
		
			$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png' );
		}
		
		if (!$result) {
			unlink($tmb);
			return false;
		}
	
		return $name;
	}
	
	/**
	 * Return thumbnail file name for required file
	 *
	 * @param  array  $stat  file stat
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function tmbname($stat) {
		return $this->tmbPrefix.$stat['rev'].'.png';
	}
	
	/**
	 * Get thumbnail from dropbox.com
	 * @param string $path
	 * @param string $size
	 * @return string | boolean
	 */
	protected function getThumbnail($path, $size = 'small') {
		try {
			return $this->dropbox->getThumbnail($path, $size);
		} catch (Dropbox_Exception $e) {
			return false;
		}
	}
	
	/**
	* Return content URL
	*
	* @param string  $hash  file hash
	* @param array $options options
	* @return array
	* @author Naoki Sawada
	**/
	public function getContentUrl($hash, $options = array()) {
		if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
			$path = $this->decode($hash);
			$cache = $this->getDBdat($path);
			$url = '';
			if (isset($cache['share']) && strpos($cache['share'], $this->dropbox_dlhost) !== false) {
				$res = $this->getHttpResponseHeader($cache['share']);
				if (preg_match("/^HTTP\/[01\.]+ ([0-9]{3})/", $res, $match)) {
					if ($match[1] < 400) {
						$url = $cache['share'];
					}
				}
			}
			if (! $url) {
				try {
					$res = $this->dropbox->share($path, null, false);
					$url = $res['url'];
					if (strpos($url, 'www.dropbox.com') === false) {
						$res = $this->getHttpResponseHeader($url);
						if (preg_match('/^location:\s*(http[^\s]+)/im', $res, $match)) {
							$url = $match[1];
						}
					}
					list($url) = explode('?', $url);
					$url = str_replace('www.dropbox.com', $this->dropbox_dlhost, $url);
					if (! isset($cache['share']) || $cache['share'] !== $url) {
						$cache['share'] = $url;
						$this->updateDBdat($path, $cache);
					}
				} catch (Dropbox_Exception $e) {
					return false;
				}
			}
			return $url;
		}
		return $file['url'];
	}
	
	/**
	 * Get HTTP request response header string
	 * 
	 * @param string $url target URL
	 * @return string
	 * @author Naoki Sawada
	 */
	private function getHttpResponseHeader($url) {
		if (function_exists('curl_exec')) {

			$c = curl_init();
			curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
			curl_setopt( $c, CURLOPT_CUSTOMREQUEST, 'HEAD' );
			curl_setopt( $c, CURLOPT_HEADER, 1 );
			curl_setopt( $c, CURLOPT_NOBODY, true );
			curl_setopt( $c, CURLOPT_URL, $url );
			$res = curl_exec( $c );
			
		} else {
			
			require_once 'HTTP/Request2.php';
			try {
				$request2 = new HTTP_Request2();
				$request2->setConfig(array(
	                'ssl_verify_peer' => false,
	                'ssl_verify_host' => false
	            ));
				$request2->setUrl($url);
				$request2->setMethod(HTTP_Request2::METHOD_HEAD);
				$result = $request2->send();
				$res = array();
				$res[] = 'HTTP/'.$result->getVersion().' '.$result->getStatus().' '.$result->getReasonPhrase();
				foreach($result->getHeader() as $key => $val) {
					$res[] = $key . ': ' . $val;
				}
				$res = join("\r\n", $res);
			} catch( HTTP_Request2_Exception $e ){
				$res = '';
			} catch (Exception $e){
				$res = '';
			}
		
		}
		return $res;
	}
	
	/*********************** paths/urls *************************/

	/**
	 * Return parent directory path
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _dirname($path) {
		return $this->_normpath(substr($path, 0, strrpos($path, '/')));
	}

	/**
	 * Return file name
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _basename($path) {
		return substr($path, strrpos($path, '/') + 1);
	}

	/**
	 * Join dir name and file name and retur full path
	 *
	 * @param  string  $dir
	 * @param  string  $name
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _joinPath($dir, $name) {
		return $this->_normpath($dir.'/'.$name);
	}

	/**
	 * Return normalized path, this works the same as os.path.normpath() in Python
	 *
	 * @param  string  $path  path
	 * @return string
	 * @author Troex Nevelin
	 **/
	protected function _normpath($path) {
		$path = '/' . ltrim($path, '/');
		return $path;
	}

	/**
	 * Return file path related to root dir
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _relpath($path) {
		return $path;
	}

	/**
	 * Convert path related to root dir into real path
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _abspath($path) {
		return $path;
	}

	/**
	 * Return fake path started from root dir
	 *
	 * @param  string  $path  file path
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _path($path) {
		return $this->rootName . $this->_normpath(substr($path, strlen($this->root)));
	}

	/**
	 * Return true if $path is children of $parent
	 *
	 * @param  string  $path    path to check
	 * @param  string  $parent  parent path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _inpath($path, $parent) {
		return $path == $parent || strpos($path, $parent.'/') === 0;
	}

	/***************** file stat ********************/
	/**
	 * Return stat for given path.
	 * Stat contains following fields:
	 * - (int)    size    file size in b. required
	 * - (int)    ts      file modification time in unix time. required
	 * - (string) mime    mimetype. required for folders, others - optionally
	 * - (bool)   read    read permissions. required
	 * - (bool)   write   write permissions. required
	 * - (bool)   locked  is object locked. optionally
	 * - (bool)   hidden  is object hidden. optionally
	 * - (string) alias   for symlinks - link target path relative to root path. optionally
	 * - (string) target  for symlinks - link target path. optionally
	 *
	 * If file does not exists - returns empty array or false.
	 *
	 * @param  string  $path    file path
	 * @return array|false
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _stat($path) {
		//if (!empty($this->ARGS['reload']) && isset($this->ARGS['target']) && strpos($this->ARGS['target'], $this->id) === 0) {
		if ($this->isMyReload()) {
			$this->deltaCheck();
		}
		if ($raw = $this->getDBdat($path)) {
			return $this->parseRaw($raw);
		}
		return false;
	}

	/**
	 * Return true if path is dir and has at least one childs directory
	 *
	 * @param  string  $path  dir path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _subdirs($path) {
		return ($stat = $this->stat($path)) && isset($stat['dirs']) ? $stat['dirs'] : false;
	}

	/**
	 * Return object width and height
	 * Ususaly used for images, but can be realize for video etc...
	 *
	 * @param  string  $path  file path
	 * @param  string  $mime  file mime type
	 * @return string
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _dimensions($path, $mime) {
		if (strpos($mime, 'image') !== 0) return '';
		$cache = $this->getDBdat($path);
		if (isset($cache['width']) && isset($cache['height'])) {
			return $cache['width'].'x'.$cache['height'];
		}
		$ret = '';
		if ($work = $this->getWorkFile($path)) {
			if ($size = getimagesize($work)) {
				$cache['width'] = $size[0];
				$cache['height'] = $size[1];
				$this->updateDBdat($path, $cache);
				$ret = $size[0].'x'.$size[1];
			}
		}
		is_file($work) && unlink($work);
		return $ret;
	}

	/******************** file/dir content *********************/

	/**
	 * Return files list in directory.
	 *
	 * @param  string  $path  dir path
	 * @return array
	 * @author Dmitry (dio) Levashov
	 * @author Cem (DiscoFever)
	 **/
	protected function _scandir($path) {
		return isset($this->dirsCache[$path])
			? $this->dirsCache[$path]
			: $this->cacheDir($path);
	}

	/**
	 * Open file and return file pointer
	 *
	 * @param  string $path file path
	 * @param string $mode
	 * @return false|resource
	 * @internal param bool $write open file for writing
	 * @author Dmitry (dio) Levashov
	 */
	protected function _fopen($path, $mode='rb') {

		if (($mode == 'rb' || $mode == 'r')) {
			try {
				$res = $this->dropbox->media($path);
				$url = parse_url($res['url']);
 				$fp = stream_socket_client('ssl://'.$url['host'].':443');
 				fputs($fp, "GET {$url['path']} HTTP/1.0\r\n");
 				fputs($fp, "Host: {$url['host']}\r\n");
 				fputs($fp, "\r\n");
 				while(trim(fgets($fp)) !== ''){};
 				return $fp;
			} catch (Dropbox_Exception $e) {
				return false;
			}
		}
		
		if ($this->tmp) {
			$contents = $this->_getContents($path);
			
			if ($contents === false) {
				return false;
			}
			
			if ($local = $this->getTempFile($path)) {
				if (file_put_contents($local, $contents, LOCK_EX) !== false) {
					return fopen($local, $mode);
				}
			}
		}

		return false;
	}

	/**
	 * Close opened file
	 *
	 * @param  resource $fp file pointer
	 * @param string $path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 */
	protected function _fclose($fp, $path='') {
		fclose($fp);
		if ($path) {
			unlink($this->getTempFile($path));
		}
	}

	/********************  file/dir manipulations *************************/

	/**
	 * Create dir and return created dir path or false on failed
	 *
	 * @param  string  $path  parent dir path
	 * @param string  $name  new directory name
	 * @return string|bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _mkdir($path, $name) {
		$path = $this->_normpath($path.'/'.$name);
		try {
			$this->dropbox->createFolder($path);
		} catch (Dropbox_Exception $e) {
			$this->deltaCheck();
			if ($this->dir($this->encode($path))) {
				return $path;
			}
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return $path;
	}

	/**
	 * Create file and return it's path or false on failed
	 *
	 * @param  string  $path  parent dir path
	 * @param string  $name  new file name
	 * @return string|bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _mkfile($path, $name) {
		return $this->_filePutContents($path.'/'.$name, '');
	}

	/**
	 * Create symlink. FTP driver does not support symlinks.
	 *
	 * @param  string $target link target
	 * @param  string $path symlink path
	 * @param string $name
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 */
	protected function _symlink($target, $path, $name) {
		return false;
	}

	/**
	 * Copy file into another file
	 *
	 * @param  string  $source     source file path
	 * @param  string  $targetDir  target directory path
	 * @param  string  $name       new file name
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _copy($source, $targetDir, $name) {
		$path = $this->_normpath($targetDir.'/'.$name);
		try {
			$this->dropbox->copy($source, $path);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return true;
	}

	/**
	 * Move file into another parent dir.
	 * Return new file path or false.
	 *
	 * @param  string $source source file path
	 * @param $targetDir
	 * @param  string $name file name
	 * @return bool|string
	 * @internal param string $target target dir path
	 * @author Dmitry (dio) Levashov
	 */
	protected function _move($source, $targetDir, $name) {
		$target = $this->_normpath($targetDir.'/'.$name);
		try {
			$this->dropbox->move($source, $target);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return $target;
	}

	/**
	 * Remove file
	 *
	 * @param  string  $path  file path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _unlink($path) {
		try {
			$this->dropbox->delete($path);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		return true;
	}

	/**
	 * Remove dir
	 *
	 * @param  string  $path  dir path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _rmdir($path) {
		return $this->_unlink($path);
	}

	/**
	 * Create new file and write into it from file pointer.
	 * Return new file path or false on error.
	 *
	 * @param  resource $fp file pointer
	 * @param string $path
	 * @param  string $name file name
	 * @param  array $stat file stat (required by some virtual fs)
	 * @return bool|string
	 * @internal param string $dir target dir path
	 * @author Dmitry (dio) Levashov
	 */
	protected function _save($fp, $path, $name, $stat) {
		if ($name) $path .= '/'.$name;
		$path = $this->_normpath($path);
		try {
			$this->dropbox->putFile($path, $fp);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		$this->deltaCheck();
		if (is_array($stat)) {
			$raw = $this->getDBdat($path);
			if (isset($stat['width'])) $raw['width'] = $stat['width'];
			if (isset($stat['height'])) $raw['height'] = $stat['height'];
			$this->updateDBdat($path, $raw);
		}
		return $path;
	}

	/**
	 * Get file contents
	 *
	 * @param  string  $path  file path
	 * @return string|false
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _getContents($path) {
		$contents = '';
		try {
			$contents = $this->dropbox->getFile($path);
		} catch (Dropbox_Exception $e) {
			return $this->setError('Dropbox error: '.$e->getMessage());
		}
		return $contents;
	}

	/**
	 * Write a string to a file
	 *
	 * @param  string  $path     file path
	 * @param  string  $content  new file content
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _filePutContents($path, $content) {
		$res = false;

		if ($local = $this->getTempFile($path)) {
			if (file_put_contents($local, $content, LOCK_EX) !== false
			&& ($fp = fopen($local, 'rb'))) {
				clearstatcache();
				$res = $this->_save($fp, $path, '', array());
				fclose($fp);
			}
			file_exists($local) && unlink($local);
		}

		return $res;
	}

	/**
	 * Detect available archivers
	 *
	 * @return array
	 **/
	protected function _checkArchivers() {
		// die('Not yet implemented. (_checkArchivers)');
		return array();
	}

	/**
	 * chmod implementation
	 *
	 * @param string $path
	 * @param string $mode
	 * @return bool
	 */
	protected function _chmod($path, $mode) {
		return false;
	}

	/**
	 * Unpack archive
	 *
	 * @param  string  $path  archive path
	 * @param  array   $arc   archiver command and arguments (same as in $this->archivers)
	 * @return true
	 * @return void
	 * @author Dmitry (dio) Levashov
	 * @author Alexey Sukhotin
	 **/
	protected function _unpack($path, $arc) {
		die('Not yet implemented. (_unpack)');
	}

	/**
	 * Recursive symlinks search
	 *
	 * @param  string  $path  file/dir path
	 * @return bool
	 * @author Dmitry (dio) Levashov
	 **/
	protected function _findSymlinks($path) {
		die('Not yet implemented. (_findSymlinks)');
	}

	/**
	 * Extract files from archive
	 *
	 * @param  string  $path  archive path
	 * @param  array   $arc   archiver command and arguments (same as in $this->archivers)
	 * @return true
	 * @author Dmitry (dio) Levashov,
	 * @author Alexey Sukhotin
	 **/
	protected function _extract($path, $arc) {
		die('Not yet implemented. (_extract)');

	}

	/**
	 * Create archive and return its path
	 *
	 * @param  string  $dir    target dir
	 * @param  array   $files  files names list
	 * @param  string  $name   archive name
	 * @param  array   $arc    archiver options
	 * @return string|bool
	 * @author Dmitry (dio) Levashov,
	 * @author Alexey Sukhotin
	 **/
	protected function _archive($dir, $files, $name, $arc) {
		die('Not yet implemented. (_archive)');
	}

} // END class
lib/php/elFinderConnector.class.php000064400000030746147361034400013335 0ustar00<?php

/**
 * Default elFinder connector
 *
 * @author Dmitry (dio) Levashov
 **/
class elFinderConnector
{
    /**
     * elFinder instance
     *
     * @var elFinder
     **/
    protected $elFinder;

    /**
     * Options
     *
     * @var array
     **/
    protected $options = array();

    /**
     * Must be use output($data) $data['header']
     *
     * @var string
     * @deprecated
     **/
    protected $header = '';

    /**
     * HTTP request method
     *
     * @var string
     */
    protected $reqMethod = '';

    /**
     * Content type of output JSON
     *
     * @var string
     */
    protected static $contentType = 'Content-Type: application/json; charset=utf-8';

    /**
     * Constructor
     *
     * @param      $elFinder
     * @param bool $debug
     *
     * @author Dmitry (dio) Levashov
     */
    public function __construct($elFinder, $debug = false)
    {

        $this->elFinder = $elFinder;
        $this->reqMethod = strtoupper($_SERVER["REQUEST_METHOD"]);
        if ($debug) {
            self::$contentType = 'Content-Type: text/plain; charset=utf-8';
        }
    }

    /**
     * Execute elFinder command and output result
     *
     * @return void
     * @throws Exception
     * @author Dmitry (dio) Levashov
     */
    public function run()
    {
        $isPost = $this->reqMethod === 'POST';
        $src = $isPost ? array_merge($_GET, $_POST) : $_GET;
        $maxInputVars = (!$src || isset($src['targets'])) ? ini_get('max_input_vars') : null;
        if ((!$src || $maxInputVars) && $rawPostData = file_get_contents('php://input')) {
            // for max_input_vars and supports IE XDomainRequest()
            $parts = explode('&', $rawPostData);
            if (!$src || $maxInputVars < count($parts)) {
                $src = array();
                foreach ($parts as $part) {
                    list($key, $value) = array_pad(explode('=', $part), 2, '');
                    $key = rawurldecode($key);
                    if (preg_match('/^(.+?)\[([^\[\]]*)\]$/', $key, $m)) {
                        $key = $m[1];
                        $idx = $m[2];
                        if (!isset($src[$key])) {
                            $src[$key] = array();
                        }
                        if ($idx) {
                            $src[$key][$idx] = rawurldecode($value);
                        } else {
                            $src[$key][] = rawurldecode($value);
                        }
                    } else {
                        $src[$key] = rawurldecode($value);
                    }
                }
                $_POST = $this->input_filter($src);
                $_REQUEST = $this->input_filter(array_merge_recursive($src, $_REQUEST));
            }
        }

        if (isset($src['targets']) && $this->elFinder->maxTargets && count($src['targets']) > $this->elFinder->maxTargets) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_MAX_TARGTES)));
        }

        $cmd = isset($src['cmd']) ? $src['cmd'] : '';
        $args = array();

        if (!function_exists('json_encode')) {
            $error = $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_JSON);
            $this->output(array('error' => '{"error":["' . implode('","', $error) . '"]}', 'raw' => true));
        }

        if (!$this->elFinder->loaded()) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_VOL), 'debug' => $this->elFinder->mountErrors));
        }

        // telepat_mode: on
        if (!$cmd && $isPost) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UPLOAD, elFinder::ERROR_UPLOAD_TOTAL_SIZE), 'header' => 'Content-Type: text/html'));
        }
        // telepat_mode: off

        if (!$this->elFinder->commandExists($cmd)) {
            $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UNKNOWN_CMD)));
        }

        // collect required arguments to exec command
        $hasFiles = false;
        foreach ($this->elFinder->commandArgsList($cmd) as $name => $req) {
            if ($name === 'FILES') {
                if (isset($_FILES)) {
                    $hasFiles = true;
                } elseif ($req) {
                    $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
                }
            } else {
                $arg = isset($src[$name]) ? $src[$name] : '';

                if (!is_array($arg) && $req !== '') {
                    $arg = trim($arg);
                }
                if ($req && $arg === '') {
                    $this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
                }
                $args[$name] = $arg;
            }
        }

        $args['debug'] = isset($src['debug']) ? !!$src['debug'] : false;

        $args = $this->input_filter($args);
        if ($hasFiles) {
            $args['FILES'] = $_FILES;
        }

        try {
            $this->output($this->elFinder->exec($cmd, $args));
        } catch (elFinderAbortException $e) {
            // connection aborted
            // unlock session data for multiple access
            $this->elFinder->getSession()->close();
            // HTTP response code
            header('HTTP/1.0 204 No Content');
            // clear output buffer
            while (ob_get_level() && ob_end_clean()) {
            }
            exit();
        }
    }

    /**
     * Sets the header.
     *
     * @param array|string  $value HTTP header(s)
     */
    public function setHeader($value)
    {
        $this->header = $value;
    }

    /**
     * Output json
     *
     * @param  array  data to output
     *
     * @return void
     * @throws elFinderAbortException
     * @author Dmitry (dio) Levashov
     */
    protected function output(array $data)
    {
        // unlock session data for multiple access
        $this->elFinder->getSession()->close();
        // client disconnect should abort
        ignore_user_abort(false);

        if ($this->header) {
            self::sendHeader($this->header);
        }

        if (isset($data['pointer'])) {
            // set time limit to 0
            elFinder::extendTimeLimit(0);

            // send optional header
            if (!empty($data['header'])) {
                self::sendHeader($data['header']);
            }

            // clear output buffer
            while (ob_get_level() && ob_end_clean()) {
            }

            $toEnd = true;
            $fp = $data['pointer'];
            $sendData = !($this->reqMethod === 'HEAD' || !empty($data['info']['xsendfile']));
            $psize = null;
            if (($this->reqMethod === 'GET' || !$sendData)
                && (elFinder::isSeekableStream($fp) || elFinder::isSeekableUrl($fp))
                && (array_search('Accept-Ranges: none', headers_list()) === false)) {
                header('Accept-Ranges: bytes');
                if (!empty($_SERVER['HTTP_RANGE'])) {
                    $size = $data['info']['size'];
                    $end = $size - 1;
                    if (preg_match('/bytes=(\d*)-(\d*)(,?)/i', $_SERVER['HTTP_RANGE'], $matches)) {
                        if (empty($matches[3])) {
                            if (empty($matches[1]) && $matches[1] !== '0') {
                                $start = $size - $matches[2];
                            } else {
                                $start = intval($matches[1]);
                                if (!empty($matches[2])) {
                                    $end = intval($matches[2]);
                                    if ($end >= $size) {
                                        $end = $size - 1;
                                    }
                                    $toEnd = ($end == ($size - 1));
                                }
                            }
                            $psize = $end - $start + 1;

                            header('HTTP/1.1 206 Partial Content');
                            header('Content-Length: ' . $psize);
                            header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size);

                            // Apache mod_xsendfile dose not support range request
                            if (isset($data['info']['xsendfile']) && strtolower($data['info']['xsendfile']) === 'x-sendfile') {
                                if (function_exists('header_remove')) {
                                    header_remove($data['info']['xsendfile']);
                                } else {
                                    header($data['info']['xsendfile'] . ':');
                                }
                                unset($data['info']['xsendfile']);
                                if ($this->reqMethod !== 'HEAD') {
                                    $sendData = true;
                                }
                            }

                            $sendData && !elFinder::isSeekableUrl($fp) && fseek($fp, $start);
                        }
                    }
                }
                if ($sendData && is_null($psize)) {
                    elFinder::rewind($fp);
                }
            } else {
                header('Accept-Ranges: none');
                if (isset($data['info']) && !$data['info']['size']) {
                    if (function_exists('header_remove')) {
                        header_remove('Content-Length');
                    } else {
                        header('Content-Length:');
                    }
                }
            }

            if ($sendData) {
                if ($toEnd || elFinder::isSeekableUrl($fp)) {
                    // PHP < 5.6 has a bug of fpassthru
                    // see https://bugs.php.net/bug.php?id=66736
                    if (version_compare(PHP_VERSION, '5.6', '<')) {
                        file_put_contents('php://output', $fp);
                    } else {
                        if(function_exists('fpassthru')) {
                            fpassthru($fp);
                        } else {
                            file_put_contents('php://output', $fp);
                        }
                    }
                } else {
                    $out = fopen('php://output', 'wb');
                    stream_copy_to_stream($fp, $out, $psize);
                    fclose($out);
                }
            }

            if (!empty($data['volume'])) {
                $data['volume']->close($fp, $data['info']['hash']);
            } else {
                fclose($fp);
            }
            exit();
        } else {
            self::outputJson($data);
            exit(0);
        }
    }

    /**
     * Remove null & stripslashes applies on "magic_quotes_gpc"
     *
     * @param  mixed $args
     *
     * @return mixed
     * @author Naoki Sawada
     */
    protected function input_filter($args)
    {
        static $magic_quotes_gpc = NULL;

        if ($magic_quotes_gpc === NULL)
            $magic_quotes_gpc = (version_compare(PHP_VERSION, '5.4', '<') && get_magic_quotes_gpc());

        if (is_array($args)) {
            return array_map(array(& $this, 'input_filter'), $args);
        }
        $res = str_replace("\0", '', $args);
        $magic_quotes_gpc && ($res = stripslashes($res));
        $res = stripslashes($res);
        return $res;
    }

    /**
     * Send HTTP header
     *
     * @param string|array $header optional header
     */
    protected static function sendHeader($header = null)
    {
        if ($header) {
            if (is_array($header)) {
                foreach ($header as $h) {
                    header($h);
                }
            } else {
                header($header);
            }
        }
    }

    /**
     * Output JSON
     *
     * @param array $data
     */
    public static function outputJson($data)
    {
        // send header
        $header = isset($data['header']) ? $data['header'] : self::$contentType;
        self::sendHeader($header);

        unset($data['header']);

        if (!empty($data['raw']) && isset($data['error'])) {
            $out = $data['error'];
        } else {
            if (isset($data['debug']) && isset($data['debug']['backendErrors'])) {
                $data['debug']['backendErrors'] = array_merge($data['debug']['backendErrors'], elFinder::$phpErrors);
            }
            $out = json_encode($data);
        }

        // clear output buffer
        while (ob_get_level() && ob_end_clean()) {
        }

        header('Content-Length: ' . strlen($out));

        echo $out;

        flush();
    }
}// END class 
lib/wpfilemanager.php000064400000022775147361034400010663 0ustar00
<?php if (!defined('ABSPATH')) {
        exit;
    } 
     $current_user = wp_get_current_user(); 
     $wp_fm_lang = get_transient('wp_fm_lang');
     $wp_fm_theme = get_transient('wp_fm_theme');
     $opt = get_option('wp_file_manager_settings');
    ?>
    <script>
    var vle_nonce = "<?php echo wp_create_nonce('verify-filemanager-email');?>";
    </script>
    <div class="wrap wp-filemanager-wrap">
    <?php
    $this->load_custom_assets(); 
    $this->load_help_desk();
    ?>
        <div class="wp_fm_lang" style="float:left">
            <h3 class="fm_heading"><span class="fm_head_icon"><img src="<?php echo plugins_url('images/wp_file_manager.svg', dirname(__FILE__)); ?>"></span>
                <span class="fm_head_txt">
                    <?php _e('WP File Manager', 'wp-file-manager'); ?> </span> <a href="https://filemanagerpro.io/product/file-manager"
                    class="button button-primary fm_pro_btn" target="_blank" title="<?php _e('Click to Buy PRO', 'wp-file-manager'); ?>">
                    <?php _e('Buy PRO', 'wp-file-manager'); ?></a></h3>
        </div>

        <div class="wp_fm_lang" style="float:right">
            <h3 class="fm-topoption">

                <span class="switch_txt_theme"><?php _e('Change Theme Here:', 'wp-file-manager'); ?></span>

                <select name="theme" id="fm_theme">
                    <option value="default" <?php echo (isset($_GET['theme']) && sanitize_text_field(htmlentities($_GET['theme'])) == 'default') ? 'selected="selected"' : (($wp_fm_theme !== false) && $wp_fm_theme == 'default' ? 'selected="selected"' : ''); ?>>
                        <?php _e('Default', 'wp-file-manager'); ?>
                    </option>
                    <option value="dark" <?php echo (isset($_GET['theme']) && sanitize_text_field(htmlentities($_GET['theme'])) == 'dark') ?
                        'selected="selected"' : (($wp_fm_theme !== false) && $wp_fm_theme == 'dark' ? 'selected="selected"' : ''); ?>>
                        <?php _e('Dark', 'wp-file-manager'); ?>
                    </option>
                    <option value="light" <?php echo (isset($_GET['theme']) && sanitize_text_field(htmlentities($_GET['theme'])) == 'light') ?
                        'selected="selected"' : (($wp_fm_theme !== false) && $wp_fm_theme == 'light' ? 'selected="selected"' : ''); ?>>
                        <?php _e('Light', 'wp-file-manager'); ?>
                    </option>
                    <option value="gray" <?php echo (isset($_GET['theme']) && sanitize_text_field(htmlentities($_GET['theme'])) == 'gray') ?
                        'selected="selected"' : (($wp_fm_theme !== false) && $wp_fm_theme == 'gray' ? 'selected="selected"' : ''); ?>>
                        <?php _e('Gray', 'wp-file-manager'); ?>
                    </option>
                    <option value="windows - 10" <?php echo (isset($_GET['theme']) && sanitize_text_field(htmlentities($_GET['theme'])) == 'windows - 10') ?
                        'selected="selected"' : (($wp_fm_theme !== false) && $wp_fm_theme == 'windows - 10' ?
                        'selected="selected"' : ''); ?>>
                        <?php _e('Windows - 10', 'wp-file-manager'); ?>
                    </option>
                </select>
                <select name="lang" id="fm_lang">
                    <?php foreach ($this->fm_languages() as $name => $lang) {
                            ?>
                    <option value="<?php echo $lang; ?>" <?php echo (isset($_GET['lang']) && sanitize_text_field(htmlentities($_GET['lang'])) == $lang) ?
                        'selected="selected"' : (($wp_fm_lang !== false) && $wp_fm_lang == $lang ? 'selected="selected"' : ''); ?>>
                        <?php echo $name; ?>
                    </option>
                    <?php
                        }?>
                </select></h3>
        </div>
        <div style="clear:both"></div>
        <div id="wp_file_manager">
            <center><img src="<?php echo plugins_url('images/loading.gif', dirname(__FILE__)); ?>" class="wp_fm_loader" /></center>
        </div>

        <?php 
        if (false === get_option('filemanager_email_verified_'.$current_user->ID) && (false === (get_transient('filemanager_cancel_lk_popup_'.$current_user->ID)))) {
        ?>
        
        <div id="lokhal_verify_email_popup" class="lokhal_verify_email_popup">
            <div class="lokhal_verify_email_popup_overlay"></div>
            <div class="lokhal_verify_email_popup_tbl">
                <div class="lokhal_verify_email_popup_cel">
                    <div class="lokhal_verify_email_popup_content">
                        <a href="javascript:void(0)" class="lokhal_cancel"> <img src="<?php echo plugins_url('lib/img/fm_close_icon.png', dirname(__FILE__)); ?>"
                                class="wp_fm_loader" /></a>
                        <div class="popup_inner_lokhal">
                            <h3>
                                <?php _e('Welcome to File Manager', 'wp-file-manager'); ?>
                            </h3>
                            <p class="lokhal_desc">
                                <?php _e('We love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.', 'wp-file-manager'); ?>
                            </p>
                            <form>
                                <div class="form_grp">
                                    <div class="form_twocol">
                                        <input name="verify_lokhal_fname" id="verify_lokhal_fname" class="regular-text"
                                            type="text" value="<?php echo (null == get_option('verify_filemanager_fname_'.$current_user->ID)) ? $current_user->user_firstname : get_option('verify_filemanager_fname_'.$current_user->ID); ?>"
                                            placeholder="First Name" />
                                        <span id="fname_error" class="error_msg">
                                            <?php _e('Please Enter First Name.', 'wp-file-manager'); ?></span>
                                    </div>
                                    <div class="form_twocol">
                                        <input name="verify_lokhal_lname" id="verify_lokhal_lname" class="regular-text"
                                            type="text" value="<?php echo (null ==
            get_option('verify_filemanager_lname_'.$current_user->ID)) ? $current_user->user_lastname : get_option('verify_filemanager_lname_'.$current_user->ID); ?>"
                                            placeholder="Last Name" />
                                        <span id="lname_error" class="error_msg">
                                            <?php _e('Please Enter Last Name.', 'wp-file-manager'); ?></span>
                                    </div>
                                </div>
                                <div class="form_grp">
                                    <div class="form_onecol">
                                        <input name="verify_lokhal_email" id="verify_lokhal_email" class="regular-text"
                                            type="text" value="<?php echo (null == get_option('filemanager_email_address_'.$current_user->ID)) ? $current_user->user_email : get_option('filemanager_email_address_'.$current_user->ID); ?>"
                                            placeholder="Email Address" />
                                        <span id="email_error" class="error_msg">
                                            <?php _e('Please Enter Email Address.', 'wp-file-manager'); ?></span>
                                    </div>
                                </div>
                                <div class="btn_dv">
                                    <button class="verify verify_local_email button button-primary "><span class="btn-text"><?php _e('Verify', 'wp-file-manager'); ?>
                                        </span>
                                        <span class="btn-text-icon">
                                            <img src="<?php echo plugins_url('images/btn-arrow-icon.png', dirname(__FILE__)); ?>" />
                                        </span></button>
                                    <button class="lokhal_cancel button">
                                        <?php _e('No Thanks', 'wp-file-manager'); ?></button>
                                </div>
                            </form>
                        </div>
                        <div class="fm_bot_links">
                            <a href="http://ikon.digital/terms.html" target="_blank">
                                <?php _e('Terms of Service', 'wp-file-manager'); ?></a> <a href="http://ikon.digital/privacy.html"
                                target="_blank">
                                <?php _e('Privacy Policy', 'wp-file-manager'); ?></a>
                        </div>

                    </div>
                </div>
            </div>
        </div>

        <?php
   } ?>

    </div>

    <div class="fm_msg_popup">
        <div class="fm_msg_popup_tbl">
            <div class="fm_msg_popup_cell">
                <div class="fm_msg_popup_inner">
                    <div class="fm_msg_text">
                        <?php _e('Saving...', 'wp-file-manager'); ?>
                    </div>
                    <div class="fm_msg_btn_dv"><a href="javascript:void(0)" class="fm_close_msg button button-primary"><?php _e('OK', 'wp-file-manager'); ?></a></div>
                </div>
            </div>
        </div>
    </div>lib/themes/dark/images/icons-small.png000064400000044145147361034400013726 0ustar00�PNG


IHDR���0_ IDATx^�t����=s��JB��rEl���]��M��U�]��Q�^A��HQ��H�5@Bz99���מIHNr������Y�%I�<g�w�{����}��	x@w��w�/*��!o��T�{������.}��<�jzc��T4!�q��,!t�����o:�뛧���)!�*�}a0��YA�^x*�F Zm�����l3���2�����@���N�3��e D�(�.�ػ�a*cx�^�-^��c��1� @XM����y?�
|�@aM3�v�m���?�'��ى=����xyi�-SH��{����q�Y��������&��WGaՁj��>d&Z��[�
W��0Rc%<3�;.铌{�އUj�+�>�i�Mꅑ����#�zS)�'�����+����C5��N���mJ�ʀ�UQ���ۏU���؃X�P��m�p�.��\�;T��Df�����,�z�_�-A�Ŏm�]�mq�bgV���d�N|Q���f�����w��w���9�����Ѷs�x0Bf�|�u�mi#��{��Dj[T-��!ē�6C�NG�"���q�2�� yڊ��*�g"�MT`*���ㆤN����>Ȁ;+猜��0�|x�~���d	�9�	@�&�/���.@�����H�j_�=����!~�^�zׯ�L&Fl����Nf"��8��S�x:J��a��y`��y`�
F��X�*�f�DU	T�LT����Q�m�[�S��d�Ӝ�����y��hh2���;Q\��D�X�5�U<ITnh�`f��ɷq���.��`��l�L�k���Iu�S �T��X��ߦ� �h$����8�D�XAD6a�n뾈�3Ti���`�����@����� �K���'��8���Po�s7��@sc��E����O��F�c��[���Y�C7ש���۸�L����K�Hʝ�36��fj�f�Ѹ:3��r�ū4=h����`�P$}�{�����^�f�s�9Qa�!�i�@��4\a�`B��B��&�B�D�
(ޠBy8�U���!����*�XDY�42*����$�̄�j��j|�YM�S�Ǔ���f1i�
�����cd�$������4W@F�D=�GA�w��J��RS�̹�G������Ϡ;���H�3㋍�Z���Ƭ�`����5-�V�r�d����x�	�3�/>]_��~?�H�
*��ֳ���_ll�����I8o�z�=���َ-��C*f��k:[�����K���~oO�|{@��/��?�%�xu�o(��B���N'���m�n�`��J���c�%c��2|����݁�#+�BgN��@���H�����Ǚ�)x��C(�	��S���ka�UԴ��Uv�o7���yp���*4��� P@���&aeFTX[��տ�3�r:�h,���_0���NQ�L�;G�X+y,�d�*���,g��4�c��/�����"!�D���ҩ�s^d��Ͻ���[���kzQQB�S
y��(�����n�c� p(4�5��FU�
�LU"�)�ܕ�&�y,�b�>ɔ�5HK�@��H��K)��[�PX���̱�y,�f�n	���ߤԥq���X����0;U5�DrWL��y,�-3G�8J��{�ZX�O�Q��ƊM�Gpc��G��-� �](��o�_�	�����ͦf��	�^����S�P?�)m����2֭�;�C�[��	R!rM�hr'�R��C"��^�*PS��0���66S43��䯘l��XF��f���S�ca@@f�:�f���5�2���=0�������8C�ci��h�)R�f�3�+�Q����[��*j��UT��j���-1I���5A�.W14KD�jXn�c����2�z/C��(���0T�j|Ss��c1	�
���v���^@�����2�z!n.ф�c�
\A�m"��K�2�xbM��5�l0��O�3�������ΐ��7���ӹ� ����c// �N/ �}7a��F��
#"5�\A)��6}EsK�w�Vj��(B�!�+}�j��[��HK����Aj�5=��H��/��y�6!ŝ�|,�R��aZ�-��*���yV��BP(�Y�!
&Y%,��Iu�Y�A	��;�B��.��
i-�1�%;�ce�o  L Bޢ�t�T8Fd]D�_���)���o)���2���Ocu�5Œ�����t���^�t��w2�v���D@�ɮ%��p��T�'�d��o>��bM���t>��@�cR��h��~�j�7�6�N��y9�!cs�o�T��7橩���4\K��wA��w��%�`���xpͣxx���|[s��S������M}&k��8@�%�mv`|�q�u
\�#;���� ~-�
�AD���� ����.�����
WE
�OA��`��QF�{B7�d_�>�D9k�U�)�H�*�Ro)ª�HZ
5&*������,�5U�b��`�@��#&���u˸�U_#��m��L/8Q�������a�f�a�<"S�0u�N���0����FO L#�Zݘ@4�U�$�ΜZ���%=atX+���VjW�d��n߁H��.n�V_ݸ�b"BV<�˴?�Ė���h`,�8E�� /�� �f=�I�5�‚`<�D�D�-�]�3��@fI�'�?�EZ\(%Py�]�v淨��j^�k��X8@�����Ϧ|�82ۧi��C����s�̂B���t^���P�-u��	Gj����2�U�_B���u�q���ջ3x�f��22ۧ��_�߮ļ���j5��M��cG�EK�mS�D�~]qϽ�㽷�cz�$9�Z�S�Ǐ��	q1�ƎN����V��t#wڋ�c�n��I����;�'��.*+�j���|
W����_�
��~�|����7�� .ގ~��aİ;�zßj���.�*W�c����LÃ���ͻv�	���ǻ")9��
�=�!_�"�"� 8�A?��U і
�����~'|A/��Ip����dV��F�k"W"N��/�o.�P(�E�"c*�
;��m�r4���f�z��9W�%=vt6({ ��1Bf�;���`,c1��X����z�X��8	�}���C�	�K�~,!�JE�*5gp��挥*�G�y,!�R��e S���d,��Ok���*$JQ���am��)�?��hci `>/Xu
����UQd�':s�!���f����%���B(a?LY]!�q�9�>�;��,� ddA�ET%/���X�G��>j:o L���i��>s?��֛ �܍��?@����`�N�ܑ&���f��}'����쓈ml��q_j.��m*MKi��}�ZVꐲ/�q���/��v�n�4�����4�^uB��4�}nJq�8@�	��j��8��_x�{�lļ���
�|_~�
�����/��}�y<���A|^��)�V2;4�P�0
LV/�?��P+*ASS�P��9r,¿oTi��&B��j{h�s@-,����Ӏ ���5����,E���T)-�"�A,V�P,���M/�k��*���^����)h)��Y&r�[�SP�?o���f�vf�<�䢃:c�h�#��XN��c! 3R���`,c1��X��1X����?�s��A�5&������`P*r�%*��֣�8��P����S�-kV}���Q��*
L�Jw�Q���#�"埽xici�Ke%��
��j7��T��2�( ����E�5�7������A�1��2@�x�\ ���𮝌%&��[�yQy9b_x	��7S�Bx��$��&}W�����/������EP=.(��Ö�kV#�����&ͯ+k>�2ľ�:�?��'i�>�	�~y�N��2
�t�*U��4#;��w^���߃e�DXn��W/x�y��ˣOA�����q��v;Hb"\wMӾ9���O��}_�[��$%%r
��3��4��WN~�6�z��X��֙np�b��@�V���&�U���C�������9�d�Х�	��̀զ���)q0��Ҥ@2A9t490��VU���9��u�!T�>E����V=��ԈH��6SN~����k'fS�������H�ֈ
��=CN��Ř��H��Dc7�c�H�=h���O�ˌ��c��\���sΆ��},��C��J�0�T�dB�H���6��G�c��xM/P�q��^��K���k�50
�ʍL����?�]�X��LP�2�E�r�Vn�},�j�0h�
MM���W�a�E���P�
e�		y���>��󦣬�!^6�J�LIIi�1VS
V^�М� /]�"==7vş��E(�p��\F�������h	PYVZ�Ї�@^�TEZj��WPӄI Y@;w�P����E��/ /��+�ӚBY�C�l5M�
$-43+RU�PK����_��HOk,�!�QS�����ˢ,��D!XY)�KB��w�)��+6֯鄳�p���8 ��k��b��
f2��!
��Pp�Lk�I�mm��x$?f�F���=8�q�)9�ZazT��|��c1��F��a��h؉��hp���q�1��Ϝ@�r���`̾��q�1���
3�H�Ս��Ӄ��ZT��ș�X��0s:���>��`�w�Qs�Z���n�u�
��-��TB�xݰ
V��(Jr���	��D�y5'$�35C���	�\p��g���dž<�3@!h��ސ<�Lf
��Gm�j���G���xkۻ8�>��H��'�>���@QU�U��x)^�6��L�u
��Y�����|��c�d�j�H�ڀ��'�7���?5)�9�.��	y�
��9�3
݅�t��}�%�Y)��m�n��Ë�S��xv���V�?,�K=�y�k�2c2T�������������ڈ�P�)���!aё%���r�ZST	�
�}����u>�6�n�������CqY��XztV�)�����!�JTBH
!�����Ds��o���S�e&���Q��T�0fm%���g�m�&�����l
��r�n��f��X�b�c:cy��u���X�f<9�1����`,c9y�V�c������h,�߉|��N�
�9M���k����+���e�՚�Hˌ��7�P���	�:��d,�l����X�)��f3$�	���"��� ���X��XI����:tjm-�(j��<���< �l�Og,Md�1C��÷ߢ���^��͆�y�S���댥)���v�y���(�4	�m� ��,���7&�=���KS���!U�/F�]w��};D��qhQ+� ��6`zlߎ�����'��8qNh2�AM&UU�(#�M� ���.�|��q�G���v#�m��J8��ri�Jl�HJ�C	i0F�;�@�3�h�,#�+��*I8z����ܩ
Mh���>�	7ߌÃói�&3�}3I��<���2�"G �|���#i�_ʼn;�@ه�b���#\��t�0(�����:��ByX��R�6�Y�bPW�e$�d��� �[Z���*r��LўM����~��Xv�lٔ��AN-��0�f�
�b0����`,�NY��7�����7���
�j�H��-˒S�s��}Ks��ِa��
	�[�QōL�����X>2l:i�y�_��Ú�͍̘�$xe偀&o;��vln`,@DG�륞�Q�%1�;k7T���3�JLq��L��nڠ3���kJ
�y��H��
q: �ox������@��b8�aeLejޔ?6����L���;:�M/�pN�Z��ʰ�ɧ@D�]y�3Ek֪��ܛ7���P^��0j���(߶
|*]���cǰ2�~j��6�
��Ǒ�?����ܛ��h��8j������ؾ#_y	��X���P���=5�#��o��1t�oc�܏Q�u+�>�0�	�xH�L��Éu�������(c/����@�ぷ����#�b��wj$���	p=��?,T���M���ƌ��}�~��eeX?�Y(� �vAٖ��ڽW5��4�a�e��aOO��������!	ݺi#��ɧAQ`mA��U�hP�b�\Y���Э+� j���*&��ݮ�XA$@3Ur��܀55Y���O$@[�)�C���:c�|�l��e�N-�^�n�fܼi��X�b0����`,�����bm}&͞@Z��*���[
js��Ds����i��=�"��a_5��CK��d,�&͞��X�5�x|Z��c�}y*��KT��\�Hc��@^���!
I�Vtm����}���D �CH��`��e,w[u�����#-�Fo�=:&�S�x�#'��{���qfz<��ĉr73K4o��wꌥϤ��K*܎�э~�g�
��2�Y���o��f[!�m,PSm�{����X8@i��q���gO���R\� �f&���E�VT�<A)v��=%j|��9@Υ��o�^���}!��p>zwIƼ�{!+*�`Ӟl�ǫG�8��9m��u�6�)���s{�c��}������'�u_Yt�1C�Я���ZO5>tl�@P��m��e����Ͻ%�~�\Mh:��X��W�h5����n+��MGՔ�FB����)1t�g�W�2��<\T�=���j霙�}G�P\�V�����~"��$ 5���!�6�.���$�Za��TUQ#�2�`(�h+��!M�i#h�Q9w>9��6S4����;�N���u���*��`8�~,�����f0����`,c1��X�<i
�vư�����{����BjV|!I��r�?Zל�t�L�>"P(�dw�7��Z�ѺH���1Qa<� (���{�Bi�)`!��O-���9�0	���Ӓ�����$�l�� `����ɳ�lq�[l2�~t�r��po��h��No�p"z�넮�Y��G*
1���萚��'���Y�,��W�j]?p���1�ܑtA�6���;�Ň� �j��~�y9��ޠ��%�{m��X8@IM���/��罉='��]�z!��wW|�)8Tz�w��ʽմ���c��\:`8]����3�*:�9�|Z��xkŗ0�|�V�?�X���F�����c��r��a���GH�I�'�ǚ��tǺ�W�}!]��@�����LLErL�\�R�PZ[�U�6i#H�M��BKBt�=p,�\kə�{6`��_�BGJl"�z�%��uJ�������4�!m;&g��U�jo�*
b�*���
�4E�}s�V;:&�<�5��U1f��Y�U5 "����oЯ�o�kV�ި]ZT�I=hk3Ec, �?��2��t�o��XN��q}�W�~,g�{���|��4�g��W��]}:w�� ��6�ߐ|��st'jI%暐"U��q��c�>�G!-w�4�R_!���V+lº&�Xv�������<z�����
��!�Ћi��Ս��p"
�率�B-�ǔ�
s�.ڂ���Ԭ�����'C��d�*��-?�3��SrMʾ�n}a��k���8��ON�)1�$x�\���������eǘ��C�Ŏ��W�n�x�Ć+pd?�˿C�aX:����N��H5%��XV�
��+Jq����o.���5�ڃ��n׺�(.'J?~��?��lԮ�Ec�\J��9�s^D͊��`��K��nD���6�ڵ��b\+�o?
k�~H{
��P�H� IDAT��lH)��Z��%}
����RA-V�D��h��P��P�M���$����(��{`!?L���ۻ
�u�T1!���2z���2�X�����	�.=,:���n�b�LI)����R� �Xv@獍)\R�%C���ڲ�ޝ�4E�b�@$�
E���y�T��T�[s�I�u�L�yrmm�hFc�?{Y]?��c{d3�ezʙ��bF���~,c��ˠ<�=0�B���8���:*/��y�RucseRy9ö����|8�Zf,��	�����Ѥ��pDD��|j��ʓ�P��.|q"��݄F$��^l�y��[��4�#�YBp�!y�|@dȔ 7�w�u��@���X'��M�A���$e�z��Gx�@"�-���5�� Y�V�Z�/G��oA,6�7�@h�2�n|$>�Ϟ���G �.��s�Z�u���4��a����C᝻�>�H�x�ޮ�~��6�{	֜Ps� �Ӡx$}{�~�/š�8�5����x$��
�ĻPuiw��4,ɿ�
�P�A��^i��o[
��jm+A������� ^H�e�)VX��i�8����B9����Fp�*�$���*p�zEr*/PHCr��{@y{�%��e�_�ʼzM�tU��A[�)*c��֢���pd׵W:u��0#e��0�Z7��b�x1�7|1�q��3��X� �r|B�	�i/e��X$J�UAE��9#VD��V�Xx;����b_�SG�,�d,ǯ�9���P��������_�I��P��@�' �#
�E`zCS��80��$L0��r"t��M� ��n�|,��8��
���w��q��ܴ�3�IHa*%y���S`��8M{il#��݇?�%-иD$��a��,A��k ft�:v����I��c4��و+J�Άm�xP{,��
ۨ	pϟ��s!fv��\t�&L}	�z��O��Z�_�SO�F�G�;��v����i�HMF�|����v$?����1[����Y�?�<��^��o߃ؾkt���Z/�\����Ёm��X�� ��(��$��!53:�Z[EM]�"c�jm�����;���^�p��.���!�9�!f��R2���x}
��ڪ�@�!�Ֆ�r��4�u-TW
Č�ZGI��d!�,�͓VBA(�*
@HH$s��o'W���U-��p��X�&��f�V�����a��c9�N�S5&�}�00�P�G���%��h��1��Yoq��,��Z���d��)OM��-�},��y@�Ս!�_-�*!t���?#}p�tp�BU�A ��D7z�r��u�
�83 Y��w&70�j
]�fG�Մ���7p�T���S��L1W}�R�Ǣ�p��s�Ǹ>)Q���+q��[�x�Q�<�ő���0���y���k���Q�
C�=Smxpd'��T��goI��,W}���r��G_��_��+���.	�*>X{��Ϯ<�G���jS��Q-��ۯ���M��ߋ����ڀ�����;��Ü%A��-T��#:b���ho%R�W�����8�\��h;�^�lm������
Ę����""%ެeo|t]_���F�8X͗�O�feƢ�hSx�cP�GuFHQ�n�Z�T�Am�d��G�#;���!ެ�	��ߎ⽵E��Q�D��dj�����-QK�:p�*��hqu>Ƴ���ju�;��dP��D�A�):e�W_�Dg,�˳�+����K>��l<�Ϭ���X�s5���\
��`��ir�<���YW+�D����\�V�rO8g�Q|,�o��c��H"A�GAq���r��&>��wx�����B��/��.�H���8^�`KC\�5��G60
@UD�R1�@Dha[��>�PB
B��d�l��܎w��P\Ek�ki�OZ]X��8����̼�i�tƢ�s��L��,���j�u@b3r3�����Y7���[Aշ� P�\bڵ
:�ԖB�9k��P���tj�e����!,]F��zT-�dpj��>jO��_�GW���8�π�w�"���=ܿ�����0w��w�v�����w�Q[��h��5!�
�A�W��s<BE4睔q�����e�G�T�ALv*�BP{��YjM�$@�>�P�z0%�*F������D��4RemHL�!6�*����f���!���:K黽��������12#s�>���9���<[KհT
KհT�n��q&���Fg�;�[ͼ�h2����S��X�<��X ���.�ŗ�b�-�>��j:w�l���='����u6c���c��@�a����m�8+��@X�J`�0 �tn/"���ctƢ�GJ����_��,���=�
�p��J�Ջv��e@��xb`J�]�3
 (;�c-t���c���pE�$L�3���d=��ظ��rq���rR�~����%�=At����ׇ{Kqǒ]�դ��&���'@���7�1�~sgŠy[��X��s�p��������.ȴI���* ���GVp�}(������pEX����w�W�H�<B���n(lw�E�O�qM������Ƈ�;O��Ɒ�0�l
@e��}�Tb��q���C��)	�f�
�HaYk�e�Kq�>E�#i+Sh�猅��-�	@[�)ڢ2�c��ǂw�dCU�c�La0��h*dPC��Ǡ<
O[�L<c�ı3��H�y,T�!o�r;sֽ1�9c3sIZ�yOEB�Zj+@:uݬE2�13�L�A]z�@	<�>��$��@R��Tk�S�ٞ���[Kcnc��2Rb��oPơ���]��u�$�Ȕ���O\�3�zB@�#��8y0.>+S�ٟ���wW#39��PT��*�[�ȥ:c�T��`H��.?�%�0mL��JD���8^�w��?���.�[%��Ǯ��̡(�ޗ�C{�j��$
H�5c��R��Y�+3�_�՞�c"�\�E}2蛷
ӆ]�	��/#���x5��B�]B���jO��g�(v�W�ہ�W��X���;$�"	������u�k��
5%�	�
)�x�D>0J]�rpa�v((wk-v��l?V��~�
B�*Q	@)u��a���k����1	��TbO��5�2��CJs!rE���
�e�~̾c8��co�v���_���E��W��P��|Yx�@zd��&��W�Ԗ�ԵTi��7��
U�
j��	63�fQk+Sw5hu3Ee���/{�J�����$[�Χ��`�����`,��n0��fX(g����;�_�h,�A��^��A�'��b"�\#�RUXιfׁ����䁵�A�D����Pd�u�D2���o^+LS3&�!�Bp�'�!P�v��?n����P
#PT!&Rz:�p!(�Ad
�ۼKg,�� @��E��w���\
��9�=�,��!XVˆՖ7p�.���A���*�N'z�)W]
߁�l6HYY�(¡����UJJ��e��X�T����vs¨K*+E����] ��h#;��;P�n�*����sg$@�1�>�>tz�	Ԯ[
1)�� ;k�b��u�����s�>��J(䠢H;>���X`JIE��Qxw�@�%c5�c.B��P5��G�k�K���לO`JL<Y@!TR16��tm$;��"\Y�������
G̹��Y#XT���t��|
��bׄ+ �:U1&&@�S��i�eWh-���D�<�d��)#q���B�`�D�R�
�pU��l|L�!�� &Q+��/
qF���j�
�n�&�0U�<|�{�(���3�hk3E}P�ަ:c�<𬿘ǂB،A�v��`,c1��3�0�
s�0��^�)2��v����H�>�@H�Xx�{��r�ӣQ�®?���yOE �|�`�Nŏ�7�
�a�t����s<P��i�B^�Wɓ�$K>>�(*�P�/D�'HB}��H <��*Ɍ!�]vÜ������#�%-V{��J����č�\	w���f��n��
�4g:Jk�W�E=x�v��2���,�a�?`��1��jj]T(s9�MBᄡ/Κ1�;&j/�k<A�e����Od��5��ۢL�e(�t~g�x�;,�9��	kl�r��Sᇹ7c��c�t���w�4��xA7\��X5s<�܏s;'c�����d�u����w-���[��[.���1�㡸����~�j���w��Xv��~m���;��3'
���/�'BR��U�B��JX�Хx��m�f��&S���:2�闹��o�;�t%�/��
o����Wa35Z�:Eb�%*o�b�C]\�/T��������^�y���Y�@L\K������,_����g���{0`��j0����`,ci|ܟ!V�i� ��?���kb�'�D�yO��f��Y	�$��˩���%��},<}Y
�!������?�d,�n��$c����|�/w�[����!A�P��Z&�`��-��X�/6�JK+��������C��q�Q8x		��[�<�KrK���Kc��e�z�0|4�6����z��0��%�J&�M"O��+�߫:c��Q\ZI���\,y&�����*$Q/��+qϬO�.-IKC)��5��pYVN��.}�^\|N�/*Ŕ>��ex�1�{G�?���s1Vss�Z���!-��".�U��d�PJX�d6!59���4[9b.�ߑ�O���$�3.��E��bl3
���:%����]��@UTGy��.x�nL��\l9t�?�.��U��;'���?�K6��+���2ЄXYC��u��E2!��e�Z-�����!ғU"4"���@iщr�ۧ+>��6Mp:�T���?��jӳJ��S��+�@QRV��0��ٽ�cÎ#E((8�Ĕ�m(<<����w�*��W�<Pe6��v��UY�y������ �%_���Xү�/��u����!0 ���Ȍ��_5��X�b0���%�9cP��A�'8���{޳�k�U���%����9c	�י��Z�^�VX�[Aa��[�M=wfQ$c	��4Zqb=�%�RÐL&�
*�zI+��HQc�
@ �� &TE��u���M����}Tg,���1�@�s��K@�x6���)
�i:ci �o6e����P��D��{-㚰\˿��%�P��#��C��Y�%"��4�������n��I$�� �]@{A�5X�@��70li�Q�+�i�� igC�6B���]�s"���l��-������@,I�nX�b�jB�"�	�t��#����T�y
��S����5j���V!��������.J�zB8g�%(a��^`ad>W! Ŷ2�@
�I=$&Z��𕃅\Z��֗Q���SBz�0��p��=Y�������&˷L;�3���]�AԿԏ���0O;f0����`,c1��X�<i
�vư�	Sޜ�Z� I�h�R���Y����e��7�k��P*"�����SW.z.��\5�����X��e��^w��Dɚ��'K=O��/�}�Ba�1����0�LT5|�Vh��/�� UUie��qH���xa� �5^�$�!.�
YVS��￸Gg,�#��tӜ�b��4�_��6��-��;k7���A($#>���?|q��X8������-����-�_'Jj`�HHJ�k?o�U���Q��$�"Jʜ�q��M���E�3�\��Y��2͢
�q�����jB�-���;2�%�
163,	q��g��zꥅX�j��*!4�8N�:��ǐA]��jt�c�r�x�`t��C|T�ϑ�
g (S�]€�Y<�+RRb0��g0���1�拐s�(�p#����H�H��&�
jj}|����x��2J&�`X�r�"
@=w�
ÐUS&>l�|11-֋�6Z �9��6S4@F����{t�2q�[�*�:H2�f,�2�`,c1��X�b0������q����n��M��yT!Ԭ���s�[М�t̾5���c�y�j(������ ��tȾE� ��
 ������_�b^ci	��>�(�l2A��r�D&r�Dg,�Z4%(�����M�(j<�NR��0�1j^Ѣ�u�R -*���A�VT�޺߿�(v>����	%���LK�b�x��ş茅��8ZTJ/6>���w=�$�'���?�sw݂�_���뷠sV;UQ�H�/�萞B��8�!���5^z�q��fߊ����f\��$��+�X�%��;:g���o=�=�|�-~[�	v9�{��_\u�$�y����1��qvk�)P>�z�%��J��}�x�ې��l�TT����Âk�9+CU�&S�z@)�'�*ѷk�\6{uC�}Ocp��Z0׊?��}z
�Qk.D���3��jtHO�Y2���ՊU{|~��e�5��dk"��`ᰢEr���j��K����� ���u��q�m�*ӂ<{G��L�
c3��|l0����`,c1��X�r�2��_��4����tž:����_�Σ���%E��gΙp���e���X�<%�%�������7����e�l�u��ۤV��5G=c����'���s�F��j���"�T��ff�Mȿ2oW�ZaM԰RL&��O�ٞ�����[�
b�F�@)�|�ֺZaM��1Y�����q��{Puhl�Y�oL�%�Լsr���
k� ���ToGy��{P��k�c;���_4eK]��()=�Cb�1�88��@Ɏw`�=�f�umS�#c��AE+Jv�W��0Y�Om�P�J<燛�|)��К���
���n��~j���;����(�S�?w��Za��&z��|;��6c��-c1��X�b0����`,g*cٟ�mZ��U7V�RUr.-+l�X�eum5*L"ժ�Y�\a�eM�X�gv���!)J!�B�./�	�!91��?��xci	��&�e%`�l^��.<A�dJHn�Gt�
�W9CLKA�W_�v�?�=����}���^tXg,�T�,@��?�6l�r�?�(�_|
1%Y�ث�@g,�(E����}2�q��i3
��y=���z�Z#�XX�RY�Ϋ��v�?4��X��ɷ��y�^S�|��;j:���ϧ�ﯫP4i
h\,�(F �H����t�}
��D���P��#�R�@,��hSP**iܤ����:��6oE��1�?��bn
p��i���w�x~Y�7�
����,�Pq�+�X(Dͽ{�+����6;��vZ��&W�2��+��~����:z<b�+���
�G��.:�3��f���Sb,�ѳ�X�b0����`,c1˙�X�Ǖr�o������}x��H�3�U��j<���S� �77���&��l�яG�?C�o_=�u2���<���1�r}pL`dT�#
��H��U��ix	���f#`x�X�7F���/^rj�nj�]��!�i�=H5�:��N��mw�:�d�a� ���w&�ۧ
�Xy�@��� 儱W�J,�/�	�W>`z��S��['W ��-�ɵ�d(�G6�9aB�B��+'��#i����]�jl�!�2��_��L)w���0��nj���x�$�)N�ŏ�!���3
c
gL�����#c5���DhB�5�P�3F�.��
�Ս���Dj�Ն$�3��δ
�},�.�juc�D�
�U�j��{��Ȩ�G�>�y�+q�L�/����J��oBm�K&�����|,M�jd�@P��YIIDAT�CVC��jo1�$Q�pˣ¨ �>?q��ci��bdϛ1����ҫ��x`�7X�g6��
�6�=S��L�J��R�2���Ux��%)~<��*P<4v>,&;f���s"���e\?3n��c�`L�5�R��^�jo^]9���/|��ŗ ޚ����WJ�w��=�/6=�
G���p�t�
7
~�>�U?G�-�%�:��d\w�#���DZ��|-M}p�q�i��j�SX{�$��E�2���iS��ⵕ�5<��w����/�Dk:x)�2P�B=�<~���^���D(���̃]J��?_�Xsr�2��N.�=���3��=z�"���m,�>�{���'zCNd�u�?��Å���A�͉u���Uv�&�i~%����8FA������̸���х��y{%v�Qa�3����O&��\��匱PN�t�h,�A8�^��,��	u��Q�$s�O�*�rΰ��6g,��zuc���/�[�y?��&y,��LG�<��'�$�s�%�L��poc�h�]_e-�J��(�Yo��� �pS�w��y��&�y����♢�y)���p�:hb&����ߥ�0�4&	,�͠�I�,���@%��ܴY�t��g��v�T�?J����9�K�Z�8K!��ju1<?��
)#��R�eصTl�R�� �X��t�
��!��RqBjGx��
IY�L����>��AW¿n�/�Mh�:mjޟ�n�M��T�?
�ݫڻR�ڍ�?�W��D�-��WU!��X��R;R�E9Pݕ���P]� f�A���D�R�[���#ͅAp�������<�
`>�d�ǫ��H���(������Z8�'���66S��i�o�K�}gg��)���{6#}�v����`,c9y��a�����?5�����s�"��	P�2Ht��W�ϓ��������Z�{A�����T|�B����>�8�)|��m��}�mFA~�Y���6[�1��F=�9��8�b�t`V:���Y\��,
V����(dP1��_���<�����
�K`2�����8VR	$�� Z�v1�,/������M"��k\� R��1�k��O�9V��6LI��������8P�W
9�(b��U4ln��l�7|�uU��j�5��9ݳ��nüu۴aϘx1\��_�
�J�eu��}��G�E�`�>,]��3�¸xi�F��HI�g�flGN��e��6>���$��ݯ�=^�a�{���ʃ�����CIB(��@Ғ`�Yp�D�t�ۼ��k��/�
J��������Z&I0��:�kR<��8�?�BZh�Ey���֊T���r�T�� ��TG˦!|9�<�FBlc3E=4X>^�Og,x`V6�<v����X��t��X�b0�����!k�6���ۧa��X��lх�j-��yq!�ZWX*�
���)�l^���(���&�V�҆F�bD".�BA���
Q(�[эmw���(�JA��\�i�HqcZl�mR��%M�yrsE��謇3s߽o����O�{�%lX��y�Fȱg���
2�0y�O?I���Gm�b���3[\�'|cg8��t�7c� :��k�<⽒Hi27��P�lů"񿅍�由ޠV��Q�yz��)�{	����pe��e�Qg(��E�ݟ3���_�P;̌A�z�1�!�ޅ
	��XV����
��0�����r�uB�eX|
ٳ�.�cM@m9C�!y���<sK�^��h�Bn
/|��7az*K;�����g�:	�NAq�	��P)o��
����+o`�n���k���&!H�.�@t?,=�Ҕ��nP�J&� �m�i\D���ɐ82���69e`�����A��v�����Tz�����fD��:b�#�  �-��id��҂!�o35��9i'�U�b%�T�\�šl����y�%'5���h�e�.m�IEND�B`�lib/themes/dark/images/hide.png000064400000003134147361034400012407 0ustar00�PNG


IHDR  szz�tEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:1676E08A4C2911EBBA7FB7B3BDD03902" xmpMM:DocumentID="xmp.did:1676E08B4C2911EBBA7FB7B3BDD03902"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:52B4976B4C2511EBBA7FB7B3BDD03902" stRef:documentID="xmp.did:52B4976C4C2511EBBA7FB7B3BDD03902"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>g	{��IDATx��OH�A�����`Q�%("� Q�!��Kۖv�t�KX3{�Eaԡ"�"����<T���l�V�}|�N3���Z9��7���{o�{��Q�X�YΑ�Y��L&S-[�D%T�h��`/�^����ع�Z�HAFπ�`���V���Ϡ�
�ot�@�YpD��x�)��� ��)�Ԇ��s��Piz����g`�
{-�L��J���u��߃贌g(����j�9���q�,2�ң��u�0A9�JΑs��6p��v0]I�F �BJ8�&�/�$%�`XK'�����5G��t��Q�ݴ{R3�g?�>f�sSOI��6ꎘ�.�L�PHv�ˣ`H�#�����W�=�#Г��?8i>{�7*�c=�`�󜮁�1��@�1i(��Ѡk�t�+`g`�!�I����&���3�"�-\W�H^<�p��v۸4�M<rY��?�U!Ϙ�g�f�JϿ�X̚���,��8�1����lb%}@
�,�F�QpKT������ӎ��&Z��n��bc)��]t\ץU+�o�x�Q���|V[]�y��"�;�4S�pt��'�R�zu"����ކܹ�R�a�s瓼�;xBz�
#/��ezK�vi��FF�˴R�ȳ���(�a܄��j��3d��yp�����7�8�'���DK5>���������/��K�IEND�B`�lib/themes/dark/images/icon-new-window.png000064400000002450147361034400014522 0ustar00�PNG


IHDR..W�+7tEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:52B497654C2511EBBA7FB7B3BDD03902" xmpMM:DocumentID="xmp.did:52B497664C2511EBBA7FB7B3BDD03902"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:52B497634C2511EBBA7FB7B3BDD03902" stRef:documentID="xmp.did:52B497644C2511EBBA7FB7B3BDD03902"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�_Rc�IDATx��ٽJA��޵Z�
� ��Oacc�G%V���)|%`#B���2��[D��4^�30a��ݞw;���f/�K+Mӈ��!��-�uߐ�$�;�F�u�@0��X���N+�mq�_ ۈ��2�-愯�#���?Q��ñ�C	�9�w O��v{�AXl��.�Q�8!�+�m���Qe�P�>��u3~�:���GeM��;��E���c�@�T�xU����m��-O�>��O,��n�X���l�i{TL6"��]�q����g��F�Ѫc���z�MZ��3�W���xT.�#��?�|���;~c]7<���~	y�g%�M���g��r��J�x�x�x���p<��K�-p�����N�� 3��32�?!��%cgd@�W��C�<9��IEND�B`�lib/themes/dark/images/loading.svg000064400000005234147361034400013131 0ustar00<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">.st0{fill:#333333;}</style>
<path class="st0" d="M11.4,0.7c1.8,0.9,3.1,2.1,3.9,3.9l-1,0.5c-0.6-1.3-2-2.7-3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.5,5.2c0.6,1.9,0.7,3.7,0,5.5l-1-0.4c0.5-1.4,0.5-3.3,0-4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.125s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.2,11.4c-0.9,1.8-2.1,3.1-3.9,3.9l-0.5-1c1.3-0.6,2.7-2,3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.250s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M10.7,15.5c-1.9,0.6-3.6,0.7-5.5,0l0.4-1.1c1.4,0.5,3.3,0.5,4.7,0">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.375s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M4.7,15.3c-1.8-0.9-3.1-2.1-3.9-3.9l1-0.5c0.6,1.3,2,2.7,3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.500s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.5,10.8c-0.6-1.9-0.7-3.7,0-5.5l1.1,0.4c-0.5,1.4-0.5,3.3,0,4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.625s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.7,4.7c0.9-1.8,2.1-3.1,3.9-3.9l0.5,1c-1.3,0.6-2.7,2-3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.750s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M5.3,0.5c1.9-0.6,3.6-0.7,5.5,0l-0.4,1.1C9,1.1,7.1,1.1,5.7,1.6">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.875s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
</svg>
lib/themes/dark/images/icons-big.png000064400000061447147361034400013363 0ustar00�PNG


IHDR0@�#� IDATx^�	|�ǟ��$��[,�TLT�Jųh�Uo[��_%j=j�Dk�V�BxS/b�@��E����B8�$!!��?��L�ݝ㝝wf':��O��w�y����y�i�Ӧ}R&�8��zi����j�B�zji(����&L���G�U�h��=��ᒤ!TN���X$a�Ya���	���]Z}{���8n ������?�ְB�
�S�P�f7��­�n� ����w�Z�)��N��1+>J��-�uJ9�(F��i��v��	���W����S��ӥ\P1�:��-C�fѱCcW ���fVy�	��z�`58WU�m
m�����=�L�?�tJ>��ZXK���d�+w������{�zS����'�͆�fZ�~�u�ОtP߬@��O�a��
@M�ϯ�Bϯ��N���X�6�K��K��v��F���u��E�Dnj��3�MY(@/@��^:����R|��U}Vu%s�3WN���tj[��kם7�F�Z�K�b�@MxLd�kK��b�8qh��@�=�aiЊ�e��8nh/I���f�.���k�);�#?�L^f4��Z(^�X�by�lf}>�A�����j0�ƀ����
ʧ2/��4G-`EPWX ~������c�9j�n���9�BxlT>:b0�1JJ'2+��,��:<xp�ݬ���<�*��~?5�U�"�Q�ak��9�T%|���72|ʴ�K���!�X��b�T�ϋ̨��}5-�BYUE�Rm)���@�IK
E1��P�ֿ��y��Ʌ 8���_hq����d�y�x?:�G�"�Y�Q�Ϥ�yQ�UM�]���wR��Yxy8G �HH�Gx*H�����Bs�R͎�<eW�Ŕo����(��n
@D�����@W<x�+Ͱ��Y�USv��,`�fY�,��)��y�K���z`Ք]�<إY�q=�jʮ~���,븞X5eW?�vi�u\�����ߏ���R�]�y�9€�.��Wv0B��~�H�G>�R�xq��U��cb������	*A����_�к�=<x��υ,*���,����,*���1�ʴ���6H��uG��$��21�r5:�(9�;�W��.���]r�8)Q/��9�Q�����a�Z��#��V�gv<L�[K�n'��\b�uN���r�^�f��	{�u#���]\o��@����>	� Vn�T�COMA J���O�}'-)K=�eh�^eKz��	�l�������ZR"���nls�^�t��7J���`R��tlcoo{�t��nl5����t�}:���}�0�~ָ
�j������#�O^���Պ��N������,�HT�cvq)����%SA��\�DQ���Dp�.�
�VpT�X$��ODžl�9� ���Ž�ATp����|U�|=ݼ|P>ܫ����5ת��^��YN|�����>I�%�ڧ�4-���mQy������r${AK���@�s!��'�`��ˇ8H�z;4�;�;<u7�i����P;�>�߉�м�1=�і}=ءU3c�x-���ީ�j�Jѱ�ީ�]�H������M���;�1�'��;1����m���v����ޛ��ѱ�\p4ŌKF&���$!C'�e�c��N
��v��\�����y��'\�m����`S�Y='�G�w��i�?1��F�L9J��@Z�i���qɈ�cK�Ҡk-��
���g�&�R��R��U��hA\�—F�/��
.k�u@��f��K9���xOy���S8hM>d*�F�W;�ØS`$<u5fg��i�P]���cNq
ܔ�hM��r$C'��j����[��^9���e��?��;���#%��'F��!o�����<���-�3�0(��.�lU/���dk����a��S����w*"����Yr6��&�"�
���۳囚L���(��2�T�_h*���y�7$%
�
p�s����7�I�=K�'�ڏ�5��i!��-���"�3�\�i��?"2C��,�+�@�@�H��Y�욂��\Rf�����D��l'�|��U�쪟%�-$�ڕN�Q1���z���)�秴켢��~	�)���/	.�,7a�����l���X��T�mMں'�R.���4���c���5��̚�x���#������.T�=B�m'��X��~\� f0��P��R�b���14���.dk�^��^3���z.Ġ@ۺx3�73:��?� f�[�q�B�H�8���(ۺy�M��{`T�m�~Z(~�%����ӈ�WP}QfB�f��I/�)E��ٶ��0�\�{�d����ݢ�Q3)��UlY5�W���A'k%�3��Ul��H��D�eg)/�P��ҝY!\@x[V��^�V��#��sy��=�m뇻�od�߉\H���X���V�1����_hx�Vy�����/u]ky��z1�3iY�֥� ��j��\��rڛ�;}�ԧ<�8%K	�A���ɸ� �f�d,�3���8X^[��r��-_�XV��<XT���=XV��<XT���MY��ز����-�:�4�f���y%e"��{l�5Ոm��j~{l�1���G��[{�`��!T-��y%�D��[�DFV�tA��{l���/	���kY�c+U�qI`�p�)�3�[��f	"-+�|a�;��r2��l�pk�f0�?	>�ҳ��\�6�[N����HG��fA�����/y�m�-'L�(�o�V����P����(;-��8�6:��a&��_����5Oi]`�g
�H���]�$z *�:�Ň\H�+i�5;>OB<�Kd����?�ů��0���+���y�x��5(]( 	����A=hO��~ɍ��9z�i��@|P�K��UhX/�O��x�r�u]����NJ�#
����%WJ�)��U/K�J�)[)(4
�a�@��u�X?�K�����:�f�[>���m�n6���R�F�\���]���=��Y��,X�c��8��g��鶮F���r)�S��X�?R�!��1�?R���]=;�jfL�f�eG_�vh�̘��hˎ���Ъ�1�-P2�$�#Z���$�QAUi�[畔��=��,���2㯎�լ��k|�(�*bK[]�/##
�����kB�O�6ʳ�����IC�Z`@���EQt�b���gi(��z�V�H�!A�C{�Z��J@���|>��M.��7f��	��D��U���s[N�@k�N�DZ5ӵ@>
��w6�d��r@��w4�H:eg$P�2��,g��r�u�!�5���b�`U��~�L(˖�\,p�/� |i���M��[���r��p�m�����|F�,�;��(�,�9����-��-�]���u	#�7���;|(-^����/���y�]���C�>�+��X��>_��0n�����PL�+!�b��ݻ�
Jh)��kh��st�	�@ܨA8��z�t	���gЬ�������a��=�MV�Oj�Qc^=�RI�J�뿺�T��ŧt���?_|�2J/7\��.a�m���4���_)��F��-��p7\�@����j���-��r��k�whU�!F��N;�x����H��F.%���@^W��Ղ�UWM>���.�f�|��}��{�ܠ�[\��j34 ��N?�xif��2�VH)��Q���2J���AJ��m]J	��������v��v�:���)��y�K���z`Ք]�<إY�q=�jʮ~?5狢�U[�.��f������%�"
�P�5�ثز+>-��Y���ae$��ﱵ���&=S�����~��B� :R�����%
�j���?/�cK@�&OJGl��^��"J�P���c6�Z��J@�%BB@`�p�)s�H�����{:!r�B�ȺZs[N�@]��ZDQs2�QO�|���[N`g��0u�B���
T�S�]�u!�n�[Ŗ��B^�<�:���Uބ~�Zg����?�P��{�yJ;�j��Vj}� ����3�B��E�S�ϡ�wS�o&'%|4�:>p�j��RJ?ueV\'�~��C`4h_�7��y�/ٴY���Z�fV\O駞��M�yx��s��$��rL��}��L{T3й�P�͕{��#)��2A�lf�����ؠ����-z�0�H�@�=S�^�Kr�����i5:>�q��\7�}b��`⛞�-���u@RhqK@�j�H���V��.���� ��p�tɢ}��n�^��rC�
y���ɮ�ķ�k�b�V(�P)\V@��*�Jd��,�2�QӚ���M�/\L��
RΗS��b�֑[���A�_��<�zn�!��3��BH�x���@���)�"��}X[� (�,�w[,M|��ǵZs�0�&���F���ۚ��#����d��
���R^Z�}��P\\���7�}��`�:����NH��0O$#���i�4iǎ��ИԒ�<^lht�Fϧg�\��a�n.�zC�<�5;�g���߳o��ϳ�Y���Ӳ���C�������k�b���q����ݰQ�HT�w���-�q�e<͊�]甔�`����kj�	�v��9����B�8s*���"&�j�]���̩��D��@iA�SS@i>_��C�Yd�T�TtFuH��nr!eVb�p+`� � A䥧�<�䩈N��j	koO�ꙖV��&NEt "������#ڧ""/�W4���TD'��{��x*���C������=ѣ�Z���l����_?��G��|�_�we���"ۣG|�4' Pz�xJ3�KHf����ޗU��s ��R��Y��?��^���g�y�^�Y�God9U�kk)R�]�8��7#���+\��!�{������w�����
M!t��P*�j{H�Ll��q1�5���,�,d�B=.��҃Aiq�\���mh��j���9F&p��:���b��}�m�.��OY��+�L��\ξ嶮�SDM��F���j��;�gm��a�Y⟤X��}���j��q�D�,7>%��駨��ؓ�q��jX�Ax[��Y���:�V/�U�G������i_�: r����+?T��7��3�^Բ�������W1����[o��Ye�-��˟>=�XZy1/p��@�Y����Y��F͎�Y���x��,�[�f�3e���|��TD
SA�*�"�:����r*�@��_�NE4���׬�j?���OE�_��1�,��x*bӄх�c��{a��!T-�x��bA�8r*b'��3�WZP]c}��H{l��,Z^cm��Tt�}H|�nr!e�b�p+`� � A����՘�c�����F-a�b�^~�ϖ}ʾǖ��hG{;���3(�W���TD'X�L��W���$_���JK�_d��nI����/�Di��&)�X/j�	j{v���	,8�LV�T��?��"�}*��8����_#�GI=�lS
���C@R�V���@���r�#1�"H�}�Xa��d�n?$��,�9,�$���n�B^JuJֿY�s$XI������8�A���d��:[���#�b�#�>��>!<��7.�$-�=J�4�gK��p�gJ�4�gK��p�O�-�c������
�
2�W�ﱵ�1%�K*�D�*s���!��Y�u�����8�D����F�ݎ_:��N�w*���[(��9q�w;@�4���~pO�@�#[�DV^��O��z�V����p88����*�R�!�@�nr!e�`�p+`� � A���,��Ul9
�wS����YU&�'PfNf������b�I1"Ҟ]{(��Q� ���U���T��-'Xgy����c�d���X�j��g�2�u@v���A{�{i�m�׻��7�Nr
����%��M�h�?�v[�w�=4q�W�%N2�K�5����1Z�e�M���7W��
��G�;�+^(^uxl���Ɔ��#���a��W$B��� ƍ��
���]_S���T�w������Y���A��
�Q�5$���GC-q7�D7��.�B��c2ȳk��q�x���J��K�Q�	�����(�?.!�2O����@� ��_��`r�q<�V�T�ۖ,��[?�wku�5eY�1��y�Z��	�n ��왵ϻ��6�V�g
���&J���.N��%�:%��}<�Tj��,�Y��<��@˗{��B�x��@˗���}��^ew��*��S����bk��{J��; �ʻ��ӫ�2cq�jVl}��]F�8��5kE��-##X
��";��Dg*�j�{�$
�j�599ž�3{luH��b�{�Z��J�B>_��={�Ul�
�3�Cd�M.��\�n��$�\A(?���\Ŗ�1�UIڬP���(��+?~���-'�=��H�>_���rb]sD|���MMl[V-�;q"�5�¡���2�s��]��]}5���2�c�'�@C,��e��׳'5��&�߫_�B�8�ٽ�»wwOX`ϲe�r��҆�ak�R�ƍ�w�j
��5Ώ=҅�e�8�B��uu�����x�i]�HFp�G�,���e9_$Ł��(@�;����FߌiUv�zG���Z�ҍ��Q1�
������<�)�p�RF���P�K/�4�>d��p!@X	fG�� 9x�.BJ��R��p@N�J��F2������w��n;��΍M�y��B-����Ƌ�r�Z��##����K��Ϻ2ܩ�����+����_��?���l@�"x�d�`X̵�^���@���?��0��C�m�4���C�fo�``%���i�-��:w�����TiW�
�e\��d��
@����PH��V��y�	����_�i��Uu,.�D��]�Ps����/���>٥��ї�ٛ�����f2cyHFk<��,�S�Ɍ�Y ���e�/{�ȏ�|��c���P���,�Y���=������f�b�gLrKӅ�=�Lp�Tĭ{��|b���㩈/�>�0"8S��uo�T�d!T-��ر�qf��N	"ǗQ:�&q7?=s�!�!D���X<1E�}"3��,�pf���	��D��W~M�'�*�����ڨ-�*b��_>�ӕ�[N�n�����z�"
e���V2���$��'/[�x*"/��ÇQzN�$�-[�iK�a��H�͡�ÆS���(g�@�8��Y#��'��ճ�d�7�#/�?�H�fs��ÇS�a�F��&��F���F��zۧ�h׺u���/Mܚ�k0��᭷%R��	��:�L)N]s-�56%*!�F.�q�E�����~�	3�F�;-eK[q!��Ws���D0���J	�c�'����S�dtؚ�X�̮u���O�\�+�}�tkgT��KmM�R ]q�j2�\8�!s@{�|�J�^�^�k�7M���|�ɯ㛞�;AC��].�h�u��O�&:ٗ����&�A�e���~t�<�h<�q4a��R�
�0�!����bG~���Կ����`�„��}�xƒ�b��Uut�Iy���t�c��0O��Ns!���N�I�p��g�A��1Z.�Ȋ�ɬ���ى���"�E�Ag��5��56JYl���_F�q��	_�E�Nd��X�-��O���5���p�C~�+��?�?ؤ@���>�
{ IDAT�(�+=�"�0�J�Oe�@���X��f��S�Ҽ<`j�=�k�0�o�����N,1��<�n�.�� |�r��'�PS~V���*FK��Y�5Y�g�Y��b�USv��,`�fY�,��)����,��ر���ઊ��XP��ĩ�ύ9��\r*"�Py�G˽�-���Ҹ�[#ϟUF8��=��q{MGF8X[5��[#ϟUHUl�5��!iUv���H��ȩ�Q4�&��S�UU��=�R@$��!ۃ߼�x�V���]"�!��F�0C�����/�U�n���*����]	�iOf�@���nb��r���Vk#Q$��O/Z[U�v*���	�/�|�d�=�x��?�feH"��7��FFq��
���N��CcH����}si��}��83^�����9������!�}�!���+�=�(�漣�d��(�PV�&�\[���s���g�m�&_�r�U�NU���V�=���J��T�r�*���nVr�����I�JnUK�Is�Zۼ���.tnjj*)>X�r�X�T��R�m��v���76��y���!���?�Pi?�{e-=z�)t��|:�^�[�8V�Yn�s!hZ�����:�W�H�ˤ�� �M�f�pnj��2�/�Hn�Z���bdw] H�^9G�z�N��ߥۮ8�V~QG�^S�nH'��f��A@N=�.;�p��ąpc9xe?��פ�x�/�ƤP�u]˚{��5��Kf���~ɬ��Z����b3£o��s<�x�q�j�l|(�cQ��߸<���,��u��w���\�P�%(f_|Jq@?|�2H��
W��)?+����,�ŅX\Ů>�]�e׳�����Y�.Ͳ��Y�USv�3e�C.��k���/R�����"���%�k*��r��W{[v���q5+��o�PFD�Wl��j�Iӂ�s��Ul�O�PH>B٥�}W3�4���o>ٱ=�:�i����^��"|BHG���,�v*b�:�5D���&R�3�[��f	��#������*������V;�|=��Ϩf��r[��v#�)��M��_Q�j��-GX�J��}p1[����9h(�<� ��+���V���U��~vDJ���O�=�F�
�l�,|����\j �ءGH��³4WL9�2���X�M��=o̤�ޟg�Y`��GSu51``����Ϥ`F��}�Im�a��r!�@�	XM銀�h��@n��%�T[Z޴k��r�$۹��G[�y�$4������'�JiB���BI��Cc�����rmڵ����B�@��<{2]yb)�= �;��9
3_��TI�o�4S��o��p�xW��… �����ϗkj_�B�n$���&Z[���8��]Mt�s!h�{/���li���U2�\ �K��b�5���-�O����6�4ҩ�\e��ײ;��GB�
���Ԗ��J�{�Op#�Ŝ����k���P�p�Df�u�/�=w�) 8�e\�#�\��Y�f�4���A���{��i�ڧ�Ld�p<h�n��|&`I�)0r
���m�
�i��=حa��=i��=حa��MY`�i���j�-��j�/`��ʿ�ŧ�� �H����ڇz[l�r��f���	��H��bkcs[MG@�V���b°°�L����?I'
�j�5���Xt�T�N	"' ��k�Wl���!S����*�R��!_D`�p�)�3�[��f	"' ��k�Ul9�Z;hoX�TD�\�����[N�PkW{uhl���r�Ec}�V��$��C�����b�@��#ȟ�'�ؾm�m��*oB?[�@i�S�c��A#�Cxe��c���R�=��z�$p���=j�P���u�������igp���P������]�^7�u۶m�M&���%�l��e�g�����hj��rh�e×Կ��=��]�e�� ��I#��M
���b R��Ҷu���>��^��Be5+�����`�R�����H�{7D]b�k��z<:�z��@��-������4Z�z��M�}�)@�D�jěec�519?e�'�C�O9��~���\H	�x/e�`��!w��b����]�F�,\���4$� ֛f���̛2b��%�G}��
��TbO	r{Z���@�u����<������Z��1CGW���.�@�gW> ؍h�F��/V�'�<�ȟ6�a�>���#;�+�ϲIp��B����A�@
�>+B�_:�f/�2{S��=��Lf,��h��5�xj3��<$�5�ט�����G�U����|�^�����%D��I�<b�:�b��KsK�bk�	T&��Wl�o���0�j�_���Pph���-�1��P�@�/�8r*b'��3�JG� �[)�4�Ba��cV����TtFv��c�p�)33�[��f	"�O�#?"s[N�@]+Q�v���^*���+��@�֎vү��rTT�<1;�܅L�)�}�Cl[�- ������ۋږUQGb���:���)��W��E��R�*j}�30��R�7HBC�FM���#ު����? _8��7`�^F�+�o~����R}f����r5��i=8G x���t]�����UK��p�>˴�[Ⱥr*e�ߥ��o>�8��`Р�-�8���b���gE�3Z�y.�2U3����g��4��#�ʅ����#�Ψ�f1�y��8�
��#ң���ɸk�i<�����8�DzP��?��6�}�F�l��Z	N~�w��]X�������<���x6�8�l�8���5�8�7���mý�>V�5 t�7��g�!g����`+��l��T��:�1���dk����ap�J���g[��08��S~�Cڞ�/w�ѥ#@��(4�mv�@%�H.�c�*�����-��}M��dX� 
�������&�`��[�J����ȩ���{l%�j��K)&1�H�V'���F�E8챕"J�	�V��E��J@g��">b�p�)33�[��f	"/�_^��zs[N���j1�c�g�_>j��=��@��ζ�0(;���͸ǖ��k�<��+��-=�@�(k�9�5ӱ��שc��>\�2C}�d�tC��?\F��Gw�Ih�`���3�X�[�o� �ય��2�qS���yYw��J�u�gF@���=
Tw�hg�ek��7S,y�_L�>b@������H��)g�1b�f����P��?;c����x�Ԭ��[p���:[�t������c���o�2�9�E�>������r&�܋'��d&kP�:,4�.���z.�HR��Z>\L;ﻖE~RН�0*O�`"j�V}��
�5��Z�;�Z��n�j�~9N�ڿ���UĖ�'����B(-�Vp��R.W���p�Å���~�_ڥ(�ZFk.�3M�,��<����=Fc���F��Tâ/�}��ΗV�'1;,���R{�H	�֓�f�4�{s2aW|�I��<Z�([���
2H��w�Mf��Nbv�Ƅa�/?�������7Ks�4?�P^d���ˁ*C�YCV��V�@)�C	"n��z4N0k�LG������Y���ӳ�m��׳�Z53�|[rH~@���bK�T��c뻒�%�[*��<���cˌ�:�W�b�ۿ�D�آ6�D�#A�S��Dq�Q�ݒB�O
b���p��!T�-*��>G*�(
���+����J�/�Dڂ4���[)�Z"�3��\Ho�n`���$!#�<����Ul9��D���Z𑐑S~��}�-G�Q�n�H�.D$-�����v*���S�O�;�V���߻]q�@�ۚ��'[�v�^Ջ��;�7�wU�9�{��r�`����(��n�۴+��Y"��oN2�ޡ����5{�`�����3�]u$�;(���^�-���u���1�S��jd�nT�(��=<q�p��1ru+��N.�x`�Y�j������_�;�Ȟ:�\�$�?k-ݰ��d'3=�IT\c��H�gڗ^��pS1��h23��!�I����(ۨ�(�k�Fs�-��0���Ò|��Ȗq@�l�����JZF��-@U><������H�V[j�#��>�k���0%Fn�Lu��}�W���v���C-���x@�I��|��IZM�BjG�̀����e��\���zz���2�>{d_�"�ߌ&1G��MMhe?�� ��Z�y׉�ҨZg�I�Mf�d,��mr�)>���I
��Ū7�R�Q��B�7ħ2�#}*\��j$��������jm=���``�,k?�USv��,`�fY�,��)��y�K��㚲ݶ$�粊���+����"�oY\"
�;���2r�I�[���h?͊�-�R&�4���6lo�iæHSk�Ulmz|X�_�9R��a{t��d!T-�e&������ ���(q{bm��O�	��B�=	?��[)�������*(\�­`a�p3����+u��=����-�ji�ޟJ:13P>�o�+�����j4�c+���hx�[N0�;!8p2�[Z��<�u9�=��ؼ�Y����k.����̃�m���F���*������g)}P��HF�}��4}�7jZ��[Tw�����BNĀg�f�f\υx�P�q3�-~�[��}I��k,�d����U|ׂk��.�%'�V����<q5��n����Q���IHϥ��K��_EBF��j��3�.#[�c�W��=�Kx��?��и����7Bò<�҄w�A��o�M����В=�
)���zYP�@�_��H�r��۞-��~WFSk���x�c'&.9e�YG� l�Ӣ,����Ph;_)�\�_;��b�5.��Y�ȟ*��O{<�e�>��>�9G��@8e.�\ԨMP��T[�͌��XeI���0y��}1SRRj\�Y����OaM���c�7�y��S�Ɍ�Y ��ƳOm&3�O���(���RŔ!�`�d{l��^�#�iW@�B�k��*�LYܩΚ[�e$����Hۿ�!j�T�{l=����آ���XIC�[`�brj��(@"#��n�����Q8���X�c+eQK��f7��2q1C���n�Bdf�ӭ���r4Bۉ��آ̜r��,��-G��Vc�p�-�ѣ�*��r�u�!D�49ȶǖ���tè��Ot��ƽT��j�ٚ-�2�-PR�?M;~(A��7K�5�2*�p_�ʧS���L�2b�����5�z[�,SG����)��:��`��GP񠞪����$iTne�����ӈ$��A/|��J<���sh��u���F���d�
X�x�}{��c/��\r�(U8=�ʏ7�ԕ�yy�EK��p3�Y5�����@��$۪��I��о�nhO-;�R�d]����#�j����x`�y�J�x6Lh���Ț�����L�1�D����u!�  `	����:���\��>��q�3��p%� �z@�@��?�zsWJ����?�*WnLX�H���BZ�U.5�Q�)�B����!pu]�v]y�dM�wv��1ˑ��8
���1K�����M�`Xv��>���	Y�ʘؾ�dL�� �xqrtO"@Nˮ�����]�
<3���
��4���v��:I��U�)����8��3.��RB/=���K���|��RL<�4	���,��)�YA�`�T��+��ͻ���ٜ��/f�xW���JU��V��
���@�x�����P[��o|֥hWe!��C|y��?jI�%�|�1�,L2=�d����<���X����k<��f2c��@>��<��<$sc^���lb�-��~	��=�D��k�y[����8�[�}��D�+��wl�I�@�z:NJ�	��UH���[�;�O+��P����S,���	��SZ}�E�OEL	�@(n.�~����TtFwH$��M.��N�n��$������.6W��d���Aa�S�G�����?_�^��$�(F�}�n�a���e�UO-e;�I�u�(
��w��V�e`h�<5d?��#[��vZ��6ڶ��U�~�<x�1��z��ia�;̐�p��4��#�d��oզ-a;�e'��N�y�vOQ)3��~�������`�N�L��ҳ��X��J�#��G��$��3����3�N5�����ji��آA�2��R䨟�GC�*\��e��P���z阄<oH���`�8�ŪCqx���-	���23�^�"��v�R��E_Ҽ��*�ȹތ����C��_��0�-�=�~�`6�A��+h5��՛�I��[^�Z��XRk��u�ok��=�
ퟫ�N!,R�q��Ɛ�7O�����/��N����KI`u�������Ȫ�Wk��Ęm�z�1	7��Woܩ��"<+ C�5.���l< <��%[��-�֢՛��`���fH�p���Ż��?�g�%����H`[�=UjŇ�\�7>W���@�����]
 ?�c��J<#<{�8���+��`~h�q�gBJא&�E_2e&�9��j=�!���HXv$�l�d�2s�`F[v�,`�V͌�Y������Y���ӔN��pXtUŖ�/,��t�SO���Q WTl	�X���3��-3.�X_͊�OF^&�d�[��m�m����"~4zd�O�;R���^ic��!T-���Ê9�@���k8���"
B(�K�&�;�Tn��,cH���n3�[�!� Ad���|i�b�� ���N{#��"��'լe��r��j(j�ނ@�'����Y�V��$����?���b��Sk��A�g�ل���pS���Q���Z��(k���s�hڽ�=��5S�()����<�]5Y��ӕ���H;�|��_t)�=)[ۖ:Zs�i��F�x+�ut�0�?�
�4����Լ�kjۂӲ��s�-}G[��_S�'+ �����.�4A���I�U�Z����PƠA���7����)ɟ�[m�t�H/���ϰ@��A����u_Q�:�����	mB�4c� �~H�kɒ��XQd�,`$<�5n��yeLī��-�g�f"[�.C|$!�@8�9�`Ix4Y@� @ȁ���)��m�h~���
��m*��檦N�W��cYh�ӻ��Ԗ���jV������%�A���u���n���9��y@�}-Bh�t�%�?'W�<r�i��ӕ�kr։����G��~]B-뾖����F)�Ĭ*�{.�r}���1j�/��-�qSLJ����'�>p�ƕo*a�C�:r�OF'n�����Q
+l{�yiQ&/Ƞ}d5�d� 8,�	MM��g;��^��|��2��i.!�od��\���
���_i�Q���Dˠ��Zr@;�Br˳�2���shx���cf�xm�z�3`��J�ɚO��7����s򤥰2�W��s5����jk�#��h]�
��������"��*J FZ���x6��P[&옏�x�fn�r!�u9l�
!( �O�堆_�Ϧ�Q��O%�0��t<`	���\E^#!��`���1��͞��8�u&6r��綔�K@�q=#
��g�5l4�g#
��g�5l4�)�[����b+�/(ZQ�^���Q���K*�D*G�ګ�2rӔ��}*ⅳ�Q��b��Ո�A����屶n�ΟU(���c����OB���łH�TlutBd�RU��=�(5D�@H������J@��C"NEd�p�)#�­̖p3@"�G9U�l�b��h�h IDAT�En�I��iY�TU�^��(*�Z�"�{l�YE�ʵl[�0.@D��4w[�֏�Wv:�l�èH�n�k�h�����?�i@�Ɲ4��(�'1��<=y]1nek�Q>�}zf麄��,��4n�@[*_����<h�Ge�^�0�g����.q̅~�W�.iQ-�Y$�P��7>�H�.2�9���O��_J���?������Q�qx)P��K�n��l����
�F7�q��J'߅Ot��ڝ�@��]����C�a�S��
��Z �o�����C��MT��]1 ������}��R��1�����\`��ݔ��._�Y F���*W��~-T��
��V� �$�	Y�ը���-R]�py"Ú��LkG��v��T�� /�>:_��x6����Sh3cyf�eG_�vh�̘��hˎ���Ъ�1j��/�WUl�BG͝�^�E<Q"�8Q�22w�W�e&��Y�5������h�UӞ.CUs�Ulp��ˆO:���Ѹ�HB�.��X#�TluH��ҭU�^��"|>�b���9�*�R��!"��M.��7f��	����ޣ|{�Ls[N�@����p�v��(�Z5��b�IE��6���Q	�e�6�2��b�QƩR|��sd�زp`��чѡC~����鋍�	���?�v��F���;��9�P�//]I�����g?��6���L�>�B:�����0����gwsR������%���::���n����24w��n.O�m�,���2s��!� �<uSy�^�y݄��/j�T��
��cwĤ�;"�<��2��ҕ]�
�I�����пb�\)�j5n���E�ߤy#���}C3('�q"U^�Χ��EJ���~�К�*�8[ҤZ[���t���\�a��Y����#p@�Ԛ����^S����}nZ����R>��q��������^}�.���U��/7�.X8Yq�����8�{
�4)P��xaXW��WČ��eK�"�'���H�g0�i5L�H�yYѓY�
��n����Fk
�x�v��<�᚛�;E�:��+���cwtiQ�q�gyf��i���U��
�;�^�e1���K�����<��B��+�6t'-H�q�-��Bf����O$� f���Bᣕ�t�x��ƃ�o/3�ru@Y�!��ؑ�Ρ�S>��zd4�#G��I�} ��ƳOm&3�g�d����<���X&-0%_�b�^��̎kD!R�u�t���A�T"��b�n��^Ŗ�ayL͊����e�`����lk��ӂES9���6+�0!G*���&:�4��Zf��3{luH}��JV�Z��J���P�C:u����TtFt�'3��\H���!�
&7H={��v��*����M�:��M�@A�@�_��|�M߳Wl9	����ֆ�eg���UԲUl9	���E
fN�e���
 �?�ĝkYeU�R���S(��BK)H�x��<M�5O%m����J��ϣ��Q�.�	F2�y��<
w�$�ظ��^<!*wz	��M����y�~�K�ॶj�j�
K���Jտ3m
� 4����Ÿ<B��˥�#��}��$(��1���ފj�^~��A>�����m�H�?�.��&�$���Ii^v w0!eJ��@�{��d!9m�]�6B�A
D���iRb�N�[�*�6�:s= ���W%7���$�m�ï$_�I�Ȏ�Y��$4&1�d$�u_�)��k4;}�u|{ƥ�-J��M��Ҫ�m߱��#�3ok����#�5&;���R�5[pS@�N!
�Ưw������rB��MpĊ�u�,�O��6��˄�B��ehZ�\HŚ�l��d��R��^�{��z�d)�@�NbYZ�
 �v�?�ŝ_�p������QW�~����E�4VZ>G�JA+d�u����6�X���Hk�ãgHb����h:46֕���vQ4��+��%7\��qȸ�ۨ�7I~l�1�U��B'7�R��t���Yh:~���4+e�Ac�V�[!MnPZ
f��@��)��Nc�^���|�5�w(;�YZ��6�P���f�y N���_��5O3=^�
��3*�`�*RK��|���Vd'���O(`�(������k<��f2cyHFk<��,�S�Ɍe��� {��bK���ɉu��6���/E�v�B�2sr�W�����~���\�h�(�*bS㶚�/��y*b�ŏ�Bđ�����D��4��J.}�Xt�TD	MkҲ�K̽�z�VJ�d�󇨝��ޞj�b+U����q��|��V�0A�@�HO�,�ߛ��r2Z�C��>Q
dd�/x�v��-'DQ����#���@��Eo�r[Ŗ��k
A�`��ױUly�j5�ϳ�����ͣ�t�v���I���x�	��1GDC���޲����ў�V��:l�R��Ͽ�l
�+���!|�5�����Ow��vȇ�|Ks_����@q�&�������3��'����~�_6����ew0�X�חv�t~tֿu!�����˾
���Ք\w��L\X|_)��:6�N�q���)� @��n����|���vUų�A��������n7�g	�\�OӮ�ھ#Z'���貤��w?�&C� < X\Ȍ۠/�EMpy.��7���\�!�)�
A�k\pd"X��,��F躖�`�Fk(n�O��@X�<���$[�_�\#�Ǽ��:��`��'���:I��}��&d��y��M���Wt��'�d'��=����e-*��~ɥK���d��/�B�J�A�@Q���<*L)�v���r��fe���6�}������"���Nf;�io%,�`�Y�.�\NF���� ɾ�$�9^�y��d��,���x]�Y��&�dz@���u�g^�Lvs�pZ��wש�B���jn�[%�>暊-��X��u^�V��k�u�[N,+#'NE��X�!����UOE<����sf���=��4�����X g�؊�	5bFZ��s�Wl�^�BB�#����Z�V�:M�f�PL�b�p+h� � Ai�u_2W��d��6���K�(߼�E��-'�S�*��(���l[�0.4D��7�Uly�Z5�ͳ�m��7�x�ϷJL�o�A7M2)���<�g��JI�W����:�H��h�^L�0+..����g�M��1zwŧt���*��{�i��,b� ��;���.�/v�԰����k:��_�@Qpܯ-x���$-�v�]	2���>.��b�Wt��"����i��E���kr��_�N$�A��6Z����-���!+pjc�pP�4���F�X\�;���:����)�E��}�a���֔Ao%e.@��ggN7J�f�'������>X�U+3&WK�Z��EaYe�����*�Zυ�ҧ�2���
B(�Sb�����R1� ƀ�9�<�L�z�S��\��B��I*�ʹ�,K�r�B�.�L��^z�k-d�>YS��� �r��{a1ǒ>����3;kN(�ǩgb3�SO`�Ҩ�M��۹\�W�Fװ��X�I�����x^�Y��6�˳@2Z�y�g��Lf,��h��5�xj3��LY ��,?��=��*����^�u�IJr�[Q�wo��*��q]ۯѬ�Z�‘e"�?q��WӀï�|ՋG�Bl��ZC��`iE
���U/�$mj�%�{$
�j�U�],�"KLKOD9����~Gw]���s�|�a��a7ni��镝V�\c�b�
@<t�şt��u�,ڲ&�?������H���*��X�������݅���x�1C�@L�ҳQz�.�;is�$�Pn����k֘�زf�x��v�ۦ�=��G���V����b�
�~M�����Ѵm_j�1)G�H�hWCu蜊��l���5l[V�1�\#D|���>f�ز�g��=u	���b�i�'���}�$V���1�e�nJ-{N�g��v,�a���%����Q�Z۞-��B��:>];9�&r}@�Ŵ��c,0�ț)���=���.��=�b|�M�����+T?�2��bH�|�WJֲk��J���(��X�z�����g�4�:�gVM��ϳ�]�e׳�����Y�.Ͳ��Y�USv��,`�fY�,��)��y�K����,�Ra���=R~��l!�)(�(��B���ţJDQtǩ�D�G]�W��o���t�u-I�fw�vtԤ����P-���u�']�eV����T�B�Z��?/���Ul%����<�Wz����W��tQ��P8�R��Z�Vj,Х��0C��
Wa�p+X� � A����՚��r2��;h��T>"�)���l�e��r�f?D�ԡ!P�_(*�\�V��$�|����V��@ֱ�P��6x0�o�D
/������CG�7�@9�N�����/v7���U�t5�//�L{ A�JW@����ՍW��
�"

�ŗ������G�i�!��'�P|��ۧ�I7�(�II�r��ͳ6������ʷ��_�^r5�'��S�@�S����Gu}]�"��X*Ͱ�
n����0Y�Q��Υ?��ޛοX�@F�Q�AO�]w�R
�:��UӲ�Xf]�Z��ת��'��HC��Mekx�5j�~�Q8�F�R'2r��f{c}��Uk[o��yɐ�y)���OZߎgE�ҵ�Y�h�ɚe��`���,�Fm�)�����'#٘��
w�<��#�l���I8�N���{hY�4�6�:����ໞ�#	�\i��
� ��ʭ_���w�Uu,��K�r ZW�ӳ�g��\Ȣ-_�����|��][�p�`�J�f��׃����-���M��-ˁh��.����	��R%�(�A�-´�v1�L�RK��@5�/��Eƫ!��g����j�"��B��S��%T:��"ąX�}V�Կ|�
�S�s�g'�mJ�n��5�*��%e�@�JX٤}'ْ��ܛ)Cu@x"!����8��(LJ���f�n����
�V�r@���U}'UK�0�)1�q"��|��%���i
����j�iQ(���ex��
� ��`d�	��S��K{Eu����<E�<X���{1`Q��/�,`Y��,`Q��/�,`Y��,`Q��/�,`Y��,`Q��/�,`Y��,`Q��/����v�..5��J���LE�.˺�0�ҹ㉠����b�ֿ��y��fI��g�O�V"���g�?��rS;�5��
�X!�T���rS
`����2F7g���v��S�j�4�d���
���r!��$-M*�)�-���0Iu���e8��7#��}�w�k|�(�?Ѭ�ؼ�&=#38��:������o�����~��LDb��.�'9��VM�I�Y:��j�"���B���q�r�:Y@�V1D>?3�$wb�p);��������/[fn�-'��qG+���5ӵ�(#;P��%���r@��Լ��":�"
QZVZ�_/�f�c�I�������l{l%0b���#-�V}���\��H���������Fv��w������}�l��ޔ �5'Β�|��k�޺gU�h����4�I�r{���� �-
��n4a�9��P��S�[��]z�&q_�q�51}a������N6������>�f-���d6��Ō��O���؇�`�#�d�}��3+�A �� �kvd+�u;��ï����=Y�sɸP�^�������&�S(KZ<��\)��
�¸qb̼�_��1�>��j�e�����L|������ݑ�8�uB-[�ŕ4`�hE�Jg��&�8q�@<DS[>hi��ţ�^��������֮ś,�C�]b�Bj�1�X��R9Z@8~RJ&���N�ֳ3* ����Dg��Od�+Kl�%3�O~� ~9��f�0��qRٌP�8���	��7O2^EH=lp!�Q�E<&�=��g �j#&5@(��V���@L|j��&����ri��FjMv��[�6ȷ�"
Z�{������hL�����]�Y��*�ȳ@���v�gn�Lr �:�8�#�=������u��B�R	�K��"�����=���]{/�t��7��h�ֆ]�5-�Ω�W��}Ja!	�H��]��@OB��S
�E�P�i{ z��(���W��p
�L�	������Z�V*, kY 
�I`�p���p%@gL0Yµ2D^z�|�5�*������vj�т��'�������b�I��H����:�DnZZQ����-'X'A�`��5l[�ZM��,`BY�t�, �5��f�1�,2s�k���%��]$�$�����'^B���]�/	"�q�>���u����ԍm�l���7ͥ��S��I��fL���}�S~i���r�׵�)m����w=t!ul�Z�Y�&~�רlE�WcQ�R
��N�@�+��$��m ,
YJn����*k�@*�+u�T���:r< �">dX%��ʄ�(�������<���$����I��e�K9�R�jxV�cD)|JӨ�� CD~�B{ލ=��q�ɺ52�~x�ޙX^�!MFv�q5��� )
ۺ�C�Gz�8,h�r�#۶��r��qYN��'��Wu&1�g�$���\ՙ�`��P�K<pUg�yHBi\/1e�-S
��bK���$�T0pzb�f�Ͷ)�%�@8�(��@����*�xz���7	�ݴ2"�+�hW}
u�i�T~[�i�kΑ�-�Uk$
�n����C[�Q���R�~��=�(5D>��p�f��Z�V���"��!��B����VfK� 
�#���v���-Gc�1D�Ѯ=�a�Y����[��"QsQD{�0|D�E4���-GX"�
��--�^�Tv�H�U_���]
���ޏ��+&RᠾԫGf��k�b�R
�D�mm�>�����VP��#i��q��*Y�������$YƖ��_r�y�ǫ���BɡC)�w1���3^/y��k�������>l(���$,a���*������ゖ�^5�z�?��(:��0��O�0Vz
��\OXa��T��|I6�V��2O_p
?�p�oo��z�5S7�\܉'����IYI�M;k�7E�_�ؼ��.�ؕ�� `-�Z9�	�G��,ү%+��"�Yr>�V�ߔ|V�
�@F:E �4��ྦྷ�[C����[�a���+��FRs��XB��ճ�<��_�1x`�	�L���,f_�&[�fK=��s�9W�
!wUN�����>p#d��<���
��K ;�7��HZ�b����3�5���U,�K�Ƣ ��yu
� �Q.��d'XJд�]�B�eyRC� ��`I����E &.�&>4�X�����8	��:�ӝȆ�
@~�@̠���R�-Y�E�F}�nXf t!�h%@�,[��Ɇ�d�5Uw�t9�(�~߳��6߳����~߳��6ߔn��OawUl��
��:
�r�[���莊-����*���4%�k������H��]�n�ޚ�p����[��
�'p���q�յ	B����|"���`����_ϴ����^����B����kw�Ѳ�{, K(PHG�!� �;�;L@���Wv���e���r2�7�l��V�=�|��I+�s�
��-'"��7�S�Ω�>A���iE9$�ٚrb^D��P���-���|N$�<�p��o��=��@�aD���'�,0�_~��o�C�BC���;�?�5@������;L,�l�SDTxG��e�w��BP��G��eԸ@��Ӿ��O�m�W�J�IDAT�}DN������N~U[�U)�W�K������\����>qdm+ݺ��ۣ}N_�/.�ދ�B���W�x���/������{]���|M�:~N)��U��El4|��	!� ��1�\��d�S%�!  �@@م�=�Ox���	.z���Uj}�g^-�e��3�� *��>#!�A�R���\=��a7�L��p��c^�����o�5������-C(�e?��qdu����%��ޑ��;�%s��+�
�B�����
~��� $\
.�QT��L�;�X{h��\,��<fP��/G?�(���1O�M�]��a���E��0��2�����e���,(����
��0�a��x�Ki-��(g�xȂ��.�4���ZpLth�XP��d!yPY�r|�H��r��u,�Ѱ�Gl�к��Pf���Pp'����1O�!x!h��R���T�S ,�\�ʁ*��~�w�w[b@b�:fT��[<���������rvv̅��O9��@//��9-
&g���r�_j��Z���yK�o���e�Q�dq!������*p�����c�x��� ����[zֱ��,dE�d������<��d��xHVs����Y`l>����c�"��4��B��f�	%��b�-"�R8�?�[�5��n�D�SIEND�B`�lib/themes/dark/css/theme.css000064400000125175147361034400012141 0ustar00@font-face {
  font-family: 'Noto Sans';
  src: url('../../../fonts/notosans/NotoSans-Regular.eot');
  src: url('../../../fonts/notosans/NotoSans-Regular.eot?#iefix') format('embedded-opentype'),
      url('../../../fonts/notosans/NotoSans-Regular.woff2') format('woff2'),
      url('../../../fonts/notosans/NotoSans-Regular.woff') format('woff'),
      url('../../../fonts/notosans/NotoSans-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
.elfinder {
  color: #546E7A;
  font-family: "Noto Sans";
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
td{
  font-family: "Noto Sans";
}
/**
 * Input & Select
 */
input.elfinder-tabstop,
input.elfinder-tabstop.ui-state-hover,
select.elfinder-tabstop,
select.elfinder-tabstop.ui-state-hover {
  padding: 5px;
  color: #666666;
  background: #fff;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
}
select.elfinder-tabstop,
select.elfinder-tabstop.ui-state-hover {
  width: 100%;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit; 
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498DB;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #F44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4CAF50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #FF9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans";
  font-size: 13px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans";
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white;
}
/**
 * Icons
 * Webfont is generated by Fontello http://fontello.com
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?98361579");
  src: url("../icons/material.eot?98361579#iefix") format("embedded-opentype"), url("../icons/material.woff2?98361579") format("woff2"), url("../icons/material.woff?98361579") format("woff"), url("../icons/material.ttf?98361579") format("truetype"), url("../icons/material.svg?98361579#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?98361579#material") format("svg");
  }
}
.elfinder-button-menu {
	margin-top: 24px !important;
}
.ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #ddd;
  margin-top: -2px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-theme:before {
  content: '\e859';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
  background: inherit;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.ui-state-active .elfinder-navbar-icon:before,
.ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d';
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823';
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e';
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f';
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840';
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841';
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842';
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b';
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825';
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 5px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: .8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.ui-button-icon {
  background-image: inherit;
}
.ui-icon-search:before {
  content: '\e81f';
}
.ui-icon-closethick:before,
.ui-icon-close:before {
  content: '\e839';
}
.ui-icon-circle-close:before {
  content: '\e84c';
}
.ui-icon-gear:before {
  content: '\e82f';
}
.ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.ui-icon-locked:before {
  content: '\e834';
}
.ui-icon-unlocked:before {
  content: '\e836';
}
.ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.ui-icon-plusthick:before {
  content: '\e83a';
}
.ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.ui-icon-minusthick:before {
  content: '\e83c';
}
.ui-icon-pin-s:before {
  content: '\e84d';
}
.ui-icon-check:before {
  content: '\e84e';
}
.ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.ui-icon-triangle-1-s:before {
  content: '\e851';
}
.ui-icon-triangle-1-n:before {
  content: '\e852';
}
.ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #4d4d4d;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e834';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 24px;
  position: absolute;
  left: 15px;
  top: 3px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498DB;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #F44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4CAF50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #FF9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.png");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.png") 0 0 no-repeat;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
}
.elfinder-quicklook .elfinder-cwd-icon:before {
  top: 33px;
  left: 50% !important;
  position: relative;
  display: block;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-text {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-office,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openofficeorg-extension,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-sql {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-sql:before {
  content: none !important;
}
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-svg:before,
.elfinder-cwd-icon-svg-xml:before {
  content: none !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #061325;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #efefef;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
}
.elfinder .elfinder-button-search input {
  background: rgba(22, 43, 76, 0.75);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px;
  color: #fff;
  font-weight: 100;
  min-height: 24px;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #2a384d;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder-navbar-dir {
  color: #e6e6e6;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #17202c;
  color: #e6e6e6;
  border: none;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #1b2533;
  border: none;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #0e1827;
}
.elfinder-cwd-file {
  color: #ddd;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #1a283c;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #152131;
  color: #ddd;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  width: 100px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover {
  background: transparent;
}
.elfinder-ltr .elfinder-cwd table {
    padding: 0 2px 0 0;
}
.elfinder-rtl .elfinder-cwd table {
    padding: 0 0 0 2px;
}

.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #1a283c;
}
#elfinder-elfinder-cwd-thead td {
  background: #010e21;
  color: #ddd;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #010a17;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #010812;
}
.ui-selectable-helper {
  border: 1px solid #022861;
  background-color: rgba(3, 62, 150, 0.38);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #e4e4e4;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #1a283c;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #152131;
  color: #ddd;
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #061325;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #cfd2d4;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Buttons
 */
.ui-button,
.ui-button:active,
.ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
}
.ui-button .ui-icon,
.ui-button:active .ui-icon,
.ui-button.ui-state-default .ui-icon {
  color: #222;
}
.ui-button:hover,
a.ui-button:active,
.ui-button:active,
.ui-button:focus,
.ui-button.ui-state-hover,
.ui-button.ui-state-active {
  background: #3498DB;
  color: #fff;
}
.ui-button:hover .ui-icon,
a.ui-button:active .ui-icon,
.ui-button:active .ui-icon,
.ui-button:focus .ui-icon,
.ui-button.ui-state-hover .ui-icon,
.ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.ui-button.ui-state-active:hover {
  background: #217dbb;
  color: #fff;
  border: none;
}
.ui-button:focus {
  outline: none !important;
}
.ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196F3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 3px 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active {
  padding-bottom: 7px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498DB;
  box-shadow: inset 0 -2px 0 #3498DB;
  color: #3498DB;
}
.std42-dialog .ui-dialog-titlebar {
  background: #0f1f2f;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #F44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4CAF50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #FF9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.std42-dialog .ui-dialog-content {
  background: #fff;
}
.ui-widget-content {
  font-family: "Noto Sans";
  color: #546E7A;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: 2px;
  padding: .4em .5em;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: .4em;
  margin-left: 5px;
  color: #222;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #888;
  color: #fff;
  outline: none;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: .4em 3px;
  margin: 0 2px;
}
.elfinder-upload-dialog-wrapper .ui-button {
  margin-left: 19px;
  margin-right: -15px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-help *,
.elfinder-help a {
  color: #546E7A;
}
/****/
.elfinder .elfinder-cwd table thead td {
	padding: 8px 14px;
	padding-right: 25px;
}
.elfinder .elfinder-cwd table td {
	padding: 8px 12px;
}
.elfinder-navbar-dir {
	padding: 7px 5px;
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
	top: 8px;
	margin-right: 10px;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
	top: 7px;
}
.elfinder .elfinder-cwd table thead td.ui-resizable.ui-state-active {
	background: #4a6187;
	color:#fff;
}
.elfinder .elfinder-cwd table thead td.ui-resizable{
	background:#18263f;
	color:#fff;
}
.elfinder-toolbar {
	padding: 10px 0;
}
.elfinder .elfinder-button-search-menu {
	top: 42px;
}
/**custom scrollbar**/
.elfinder-cwd-wrapper::-webkit-scrollbar, .elfinder-navbar.ui-resizable::-webkit-scrollbar {
    width: 13px;
} 
.elfinder-cwd-wrapper::-webkit-scrollbar-track, .elfinder-navbar.ui-resizable::-webkit-scrollbar-track {
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    -moz-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
} 
.elfinder-cwd-wrapper::-webkit-scrollbar-thumb, .elfinder-navbar.ui-resizable::-webkit-scrollbar-thumb {
  background-color: #4a6187;
  border: 1px solid #4a6187 !important;
  outline:none;
  box-shadow:none !important;
}


.elfinder-cwd-wrapper::-moz-scrollbar {
    width: 13px;
} 
.elfinder-cwd-wrapper::-moz-scrollbar-track {
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    -moz-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
} 
.elfinder-cwd-wrapper::-moz-scrollbar-thumb {
  background-color: #4a6187;
  border: 1px solid #4a6187 !important;
  outline:none;
  box-shadow:none !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    width: 60px;
}
.elfinder-rtl .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before, .elfinder-rtl .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before, .elfinder-rtl .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    left: 0;
    position: absolute;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
   color: #ddd;
}
.elfinder .elfinder-contextmenu-item .ui-icon.ui-icon-check {
    margin-top: -6px;
}
.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon.ui-icon-check {
    right: -1px;
    left: auto;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon.ui-icon-check {
    font-size: 13px;
}
.elfinder-ltr .elfinder-button-search .ui-icon-close{font-size: 17px;}
.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow:before {
    content: '\e858';
}




.elfinder-contextmenu-item .elfinder-button-icon-opennew:before {content: ''; background: url(../images/icon-new-window.png) no-repeat; height: 16px; width: 16px; display: block; background-size: 15px; }

.elfinder-contextmenu-item .elfinder-button-icon-hide:before {content: ''; background: url(../images/hide.png) no-repeat; height: 16px; width: 16px; display: block; background-size: 15px; }

/* Css Added here */
.elfinder-notify-cancel .elfinder-notify-button.ui-icon.ui-icon-close{ line-height: 19px; font-size: 11px; color:#fff; }  
.elfinder-notify-cancel .elfinder-notify-button.ui-icon.ui-icon-close:hover{ background: #ff6252; }
.ui-front.elfinder-quicklook.elfinder-frontmost .ui-dialog-titlebar .ui-icon{ font-size: 11px; line-height: 17px; }

/*for dark css for icon*/
.wrap.wp-filemanager-wrap .ui-front.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-draggable.std42-dialog .ui-dialog-content.ui-widget-content .ui-helper-clearfix.elfinder-rm-title span.elfinder-cwd-icon:before {
    left: inherit;
    background-color: transparent;
    top: 32px;
    display: block;
    margin: 0 auto;
}lib/themes/dark/css/theme.min.css000064400000107403147361034400012715 0ustar00@font-face {
    font-family: 'Noto Sans';
    src: url('../lib/fonts/notosans/NotoSans-Regular.eot');
    src: url('../lib/fonts/notosans/NotoSans-Regular.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/notosans/NotoSans-Regular.woff2') format('woff2'),
        url('../lib/fonts/notosans/NotoSans-Regular.woff') format('woff'),
        url('../lib/fonts/notosans/NotoSans-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
  }
  @font-face {
    font-family: 'Noto Sans';
    src: url('../lib/fonts/notosans/NotoSans-BoldItalic.eot');
    src: url('../lib/fonts/notosans/NotoSans-BoldItalic.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/notosans/NotoSans-BoldItalic.woff2') format('woff2'),
        url('../lib/fonts/notosans/NotoSans-BoldItalic.woff') format('woff'),
        url('../lib/fonts/notosans/NotoSans-BoldItalic.ttf') format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
  }
  @font-face {
    font-family: 'Noto Sans';
    src: url('../lib/fonts/notosans/NotoSans-Black.eot');
    src: url('../lib/fonts/notosans/NotoSans-Black.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/notosans/NotoSans-Black.woff2') format('woff2'),
        url('../lib/fonts/notosans/NotoSans-Black.woff') format('woff'),
        url('../lib/fonts/notosans/NotoSans-Black.ttf') format('truetype');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
  }
  .elfinder{color:#546E7A;font-family:"Noto Sans", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elfinder.ui-widget.ui-widget-content{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);-webkit-border-radius:0;border-radius:0;border:0}input.elfinder-tabstop,input.elfinder-tabstop.ui-state-hover,select.elfinder-tabstop,select.elfinder-tabstop.ui-state-hover{padding:5px;color:#666666;background:#fff;border-radius:3px;font-weight:normal;border-color:#888}select.elfinder-tabstop,select.elfinder-tabstop.ui-state-hover{width:100%}.elfinder-button-icon-spinner,.elfinder-info-spinner,.elfinder-navbar-spinner{background:url("../images/loading.svg") center center no-repeat!important;width:16px;height:16px}@-webkit-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}.elfinder-notify-progressbar{border:0}.elfinder-notify-progress,.elfinder-notify-progressbar{-webkit-border-radius:0;border-radius:0}.elfinder-notify-progress,.elfinder-resize-spinner{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem;-webkit-animation:progress-animation 1s linear infinite;animation:progress-animation 1s linear infinite;background-color:#0275d8;height:1rem}.elfinder-quicklook{background:#232323;-webkit-border-radius:2px;border-radius:2px}.elfinder-quicklook-titlebar{background:inherit}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{border:inherit;opacity:inherit;-webkit-border-radius:4px;border-radius:4px;background:rgba(66, 66, 66, 0.73)}.elfinder .elfinder-navdock{border:0}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-image:none}.elfinder .elfinder-toast>div{background-color:#323232!important;color:#d6d6d6;-webkit-box-shadow:none;box-shadow:none;opacity:inherit;padding:10px 60px}.elfinder .elfinder-toast>div button.ui-button{color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#3498DB}.elfinder .elfinder-toast>.toast-error button.ui-button{background-color:#F44336}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:#4CAF50}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#FF9800}.elfinder-toast-msg{font-family:"Noto Sans", sans-serif;font-size:17px}#ace_settingsmenu{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;background-color:#1d2736!important;color:#e6e6e6!important}#ace_settingsmenu,#kbshortcutmenu{padding:0}.ace_optionsMenuEntry{padding:5px 10px}.ace_optionsMenuEntry:hover{background-color:#111721}.ace_optionsMenuEntry label{font-size:13px}#ace_settingsmenu input[type=text],#ace_settingsmenu select{margin:1px 2px 2px;padding:2px 5px;-webkit-border-radius:3px;border-radius:3px;border:0;background:rgba(9, 53, 121, 0.75);color:white}@font-face{font-family:material;src:url("../icons/material.eot?98361579");src:url("../icons/material.eot?98361579#iefix") format("embedded-opentype"), url("../icons/material.woff2?98361579") format("woff2"), url("../icons/material.woff?98361579") format("woff"), url("../icons/material.ttf?98361579") format("truetype"), url("../icons/material.svg?98361579#material") format("svg");font-weight:normal;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:material;src:url("../icons/material.svg?98361579#material") format("svg")}}.elfinder-button-icon,.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit;text-indent:inherit}.ui-button-icon-only .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit!important;text-indent:0;font-size:16px}.elfinder-toolbar .elfinder-button-icon{font-size:20px;color:#ddd;margin-top:-2px}.elfinder-button-icon{background:inherit}.elfinder-button-icon-home:before{content:'\e800'}.elfinder-button-icon-back:before{content:'\e801'}.elfinder-button-icon-forward:before{content:'\e802'}.elfinder-button-icon-up:before{content:'\e803'}.elfinder-button-icon-dir:before{content:'\e804'}.elfinder-button-icon-opendir:before{content:'\e805'}.elfinder-button-icon-reload:before{content:'\e806'}.elfinder-button-icon-open:before{content:'\e807'}.elfinder-button-icon-mkdir:before{content:'\e808'}.elfinder-button-icon-mkfile:before{content:'\e809'}.elfinder-button-icon-rm:before{content:'\e80a'}.elfinder-button-icon-trash:before{content:'\e80b'}.elfinder-button-icon-restore:before{content:'\e80c'}.elfinder-button-icon-copy:before{content:'\e80d'}.elfinder-button-icon-cut:before{content:'\e80e'}.elfinder-button-icon-paste:before{content:'\e80f'}.elfinder-button-icon-getfile:before{content:'\e810'}.elfinder-button-icon-duplicate:before{content:'\e811'}.elfinder-button-icon-rename:before{content:'\e812'}.elfinder-button-icon-edit:before{content:'\e813'}.elfinder-button-icon-quicklook:before{content:'\e814'}.elfinder-button-icon-upload:before{content:'\e815'}.elfinder-button-icon-download:before{content:'\e816'}.elfinder-button-icon-info:before{content:'\e817'}.elfinder-button-icon-extract:before{content:'\e818'}.elfinder-button-icon-archive:before{content:'\e819'}.elfinder-button-icon-view:before{content:'\e81a'}.elfinder-button-icon-view-list:before{content:'\e81b'}.elfinder-button-icon-help:before{content:'\e81c'}.elfinder-button-icon-resize:before{content:'\e81d'}.elfinder-button-icon-link:before{content:'\e81e'}.elfinder-button-icon-search:before{content:'\e81f'}.elfinder-button-icon-sort:before{content:'\e820'}.elfinder-button-icon-rotate-r:before{content:'\e821'}.elfinder-button-icon-rotate-l:before{content:'\e822'}.elfinder-button-icon-netmount:before{content:'\e823'}.elfinder-button-icon-netunmount:before{content:'\e824'}.elfinder-button-icon-places:before{content:'\e825'}.elfinder-button-icon-chmod:before{content:'\e826'}.elfinder-button-icon-accept:before{content:'\e827'}.elfinder-button-icon-menu:before{content:'\e828'}.elfinder-button-icon-colwidth:before{content:'\e829'}.elfinder-button-icon-fullscreen:before{content:'\e82a'}.elfinder-button-icon-unfullscreen:before{content:'\e82b'}.elfinder-button-icon-empty:before{content:'\e82c'}.elfinder-button-icon-undo:before{content:'\e82d'}.elfinder-button-icon-redo:before{content:'\e82e'}.elfinder-button-icon-preference:before{content:'\e82f'}.elfinder-button-icon-mkdirin:before{content:'\e830'}.elfinder-button-icon-selectall:before{content:'\e831'}.elfinder-button-icon-selectnone:before{content:'\e832'}.elfinder-button-icon-selectinvert:before{content:'\e833'}.elfinder-button-icon-theme:before{content:'\e859'}.elfinder-button-icon-logout:before{content:'\e85a'}.elfinder-button-search .ui-icon.ui-icon-search{font-size:17px}.elfinder-button-search .ui-icon:hover{opacity:1}.elfinder-navbar-icon{font:normal normal normal 16px/1 material;background-image:inherit!important}.elfinder-navbar-icon:before{content:'\e804'}.elfinder-droppable-active .elfinder-navbar-icon:before,.ui-state-active .elfinder-navbar-icon:before,.ui-state-hover .elfinder-navbar-icon:before{content:'\e805'}.elfinder-navbar-root-local .elfinder-navbar-icon:before{content:'\e83d'}.elfinder-navbar-root-ftp .elfinder-navbar-icon:before{content:'\e823'}.elfinder-navbar-root-sql .elfinder-navbar-icon:before{content:'\e83e'}.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before{content:'\e83f'}.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before{content:'\e840'}.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before{content:'\e841'}.elfinder-navbar-root-box .elfinder-navbar-icon:before{content:'\e842'}.elfinder-navbar-root-trash .elfinder-navbar-icon:before{content:'\e80b'}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{content:'\e825'}.elfinder-navbar-arrow{background-image:inherit!important;font:normal normal normal 14px/1 material;font-size:10px;padding-top:3px;padding-left:2px;color:#a9a9a9}.ui-state-active .elfinder-navbar-arrow{color:#fff}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e857'}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e858'}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before{content:'\e851'}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{font-size:8px;margin-top:5px;margin-right:5px}div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical{margin:2px}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon{background-image:inherit}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-box .elfinder-cwd-icon:before,.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before,.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{font-family:material;background-color:transparent;color:#525252;font-size:55px;position:relative;top:-10px!important;padding:0;display:contents!important}.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before{content:'\e83d'}.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before{content:'\e823'}.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before{content:'\e83e'}.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before{content:'\e83f'}.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before{content:'\e840'}.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before{content:'\e841'}.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,.elfinder-navbar-roor-box .elfinder-cwd-icon:before{content:'\e842'}.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{content:'\e80b'}.elfinder-dialog-icon{font:normal normal normal 14px/1 material;background:inherit;color:#524949;font-size:37px}.elfinder-dialog-icon:before{content:'\e843'}.elfinder-dialog-icon-mkdir:before{content:'\e808'}.elfinder-dialog-icon-mkfile:before{content:'\e809'}.elfinder-dialog-icon-copy:before{content:'\e80d'}.elfinder-dialog-icon-move:before,.elfinder-dialog-icon-prepare:before{content:'\e844'}.elfinder-dialog-icon-chunkmerge:before,.elfinder-dialog-icon-upload:before{content:'\e815'}.elfinder-dialog-icon-rm:before{content:'\e80a'}.elfinder-dialog-icon-file:before,.elfinder-dialog-icon-open:before,.elfinder-dialog-icon-readdir:before{content:'\e807'}.elfinder-dialog-icon-reload:before{content:'\e806'}.elfinder-dialog-icon-download:before{content:'\e816'}.elfinder-dialog-icon-save:before{content:'\e845'}.elfinder-dialog-icon-rename:before{content:'\e812'}.elfinder-dialog-icon-archive:before,.elfinder-dialog-icon-zipdl:before{content:'\e819'}.elfinder-dialog-icon-extract:before{content:'\e818'}.elfinder-dialog-icon-search:before{content:'\e81f'}.elfinder-dialog-icon-loadimg:before{content:'\e846'}.elfinder-dialog-icon-url:before{content:'\e81e'}.elfinder-dialog-icon-resize:before{content:'\e81d'}.elfinder-dialog-icon-netmount:before{content:'\e823'}.elfinder-dialog-icon-netunmount:before{content:'\e824'}.elfinder-dialog-icon-chmod:before{content:'\e826'}.elfinder-dialog-icon-dim:before,.elfinder-dialog-icon-preupload:before{content:'\e847'}.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon{font-size:16px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon{font-size:15px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before{content:'\e837'}.elfinder .elfinder-contextmenu-extra-icon{margin-top:-6px}.elfinder .elfinder-contextmenu-extra-icon a{padding:5px;margin:-16px}.elfinder-button-icon-link:before{content:'\e81e'!important}.elfinder .elfinder-contextmenu-arrow{font:normal normal normal 14px/1 material;background-image:inherit;font-size:10px!important;padding-top:3px}.elfinder .elfinder-contextmenu-arrow:before{content:'\e857'}.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow{background-image:inherit}.elfinder-quicklook .ui-resizable-se{background:inherit}.elfinder-quicklook-navbar-icon{background:transparent;font:normal normal normal 14px/1 material;font-size:32px;color:#fff}.elfinder-quicklook-titlebar-icon{margin-top:-8px}.elfinder-quicklook-titlebar-icon .ui-icon{border:0;opacity:.8;font-size:15px;padding:1px}.elfinder-quicklook-titlebar .ui-icon-circle-close,.elfinder-quicklook .ui-icon-gripsmall-diagonal-se{color:#f1f1f1}.elfinder-quicklook-navbar-icon-prev:before{content:'\e848'}.elfinder-quicklook-navbar-icon-next:before{content:'\e849'}.elfinder-quicklook-navbar-icon-fullscreen:before{content:'\e84a'}.elfinder-quicklook-navbar-icon-fullscreen-off:before{content:'\e84b'}.elfinder-quicklook-navbar-icon-close:before{content:'\e84c'}.ui-button-icon{background-image:inherit}.ui-icon-search:before{content:'\e81f'}.ui-icon-close:before,.ui-icon-closethick:before{content:'\e839'}.ui-icon-circle-close:before{content:'\e84c'}.ui-icon-gear:before{content:'\e82f'}.ui-icon-gripsmall-diagonal-se:before{content:'\e838'}.ui-icon-locked:before{content:'\e834'}.ui-icon-unlocked:before{content:'\e836'}.ui-icon-arrowrefresh-1-n:before{content:'\e821'}.ui-icon-plusthick:before{content:'\e83a'}.ui-icon-arrowreturnthick-1-s:before{content:'\e83b'}.ui-icon-minusthick:before{content:'\e83c'}.ui-icon-pin-s:before{content:'\e84d'}.ui-icon-check:before{content:'\e84e'}.ui-icon-arrowthick-1-s:before{content:'\e84f'}.ui-icon-arrowthick-1-n:before{content:'\e850'}.ui-icon-triangle-1-s:before{content:'\e851'}.ui-icon-triangle-1-n:before{content:'\e852'}.ui-icon-grip-dotted-vertical:before{content:'\e853'}.elfinder-lock,.elfinder-perms,.elfinder-symlink{background-image:inherit;font:normal normal normal 18px/1 material;color:#4d4d4d}.elfinder-na .elfinder-perms:before{content:'\e824'}.elfinder-ro .elfinder-perms:before{content:'\e835'}.elfinder-wo .elfinder-perms:before{content:'\e854'}.elfinder-group .elfinder-perms:before{content:'\e800'}.elfinder-lock:before{content:'\e834'}.elfinder-symlink:before{content:'\e837'}.elfinder .elfinder-toast>div{font:normal normal normal 14px/1 material}.elfinder .elfinder-toast>div:before{font-size:45px;position:absolute;left:5px;top:15px}.elfinder .elfinder-toast>.toast-error,.elfinder .elfinder-toast>.toast-info,.elfinder .elfinder-toast>.toast-success,.elfinder .elfinder-toast>.toast-warning{background-image:inherit!important}.elfinder .elfinder-toast>.toast-info:before{content:'\e817';color:#3498DB}.elfinder .elfinder-toast>.toast-error:before{content:'\e855';color:#F44336}.elfinder .elfinder-toast>.toast-success:before{content:'\e84e';color:#4CAF50}.elfinder .elfinder-toast>.toast-warning:before{content:'\e856';color:#FF9800}.elfinder-drag-helper-icon-status{font:normal normal normal 14px/1 material;background:inherit}.elfinder-drag-helper-icon-status:before{content:'\e824'}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{content:'\e854'}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{content:'\e84c'}.elfinder-cwd-view-list td .elfinder-cwd-icon{background-image:url("../images/icons-small.png")}.elfinder-cwd-icon{background:url("../images/icons-big.png") 0 0 no-repeat}.elfinder-cwd-icon:before{font-size:10px;position:relative;top:27px;left:inherit;padding:1px;background-color:transparent}.elfinder-info-title .elfinder-cwd-icon:before{top:32px;display:block;margin:0 auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before{background-color:#313131!important}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:inherit;background-color:#313131}.elfinder-quicklook .elfinder-cwd-icon:before{top:33px;left:50%!important;position:relative;display:block;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.elfinder-cwd-icon-x-zip:before,.elfinder-cwd-icon-zip:before{content:'zip'!important}.elfinder-cwd-icon-x-xz:before{content:'xz'!important}.elfinder-cwd-icon-x-7z-compressed:before{content:'7z'!important}.elfinder-cwd-icon-x-gzip:before{content:'gzip'!important}.elfinder-cwd-icon-x-tar:before{content:'tar'!important}.elfinder-cwd-icon-x-bzip2:before,.elfinder-cwd-icon-x-bzip:before{content:'bzip'!important}.elfinder-cwd-icon-x-rar-compressed:before,.elfinder-cwd-icon-x-rar:before{content:'rar'!important}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application{background-position:0 -150px}.elfinder-cwd-icon-text{background-position:0 -200px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-x-empty{background-position:0 -250px}.elfinder-cwd-icon-image{background-position:0 -300px}.elfinder-cwd-icon-vnd-adobe-photoshop{background-position:0 -350px}.elfinder-cwd-icon-vnd-adobe-photoshop:before{content:none!important}.elfinder-cwd-icon-postscript{background-position:0 -400px}.elfinder-cwd-icon-audio{background-position:0 -450px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -500px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd{background-position:0 -550px}.elfinder-cwd-icon-pdf{background-position:0 -600px}.elfinder-cwd-icon-x-msaccess{background-position:0 -650px}.elfinder-cwd-icon-x-msaccess:before{content:none!important}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12{background-position:0 -700px}.elfinder-cwd-icon-msword:before,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word:before{content:none!important}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background-position:0 -750px}.elfinder-cwd-icon-ms-excel:before,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel:before{content:none!important}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12{background-position:0 -800px}.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint:before{content:none!important}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-openofficeorg-extension,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template{background-position:0 -850px}.elfinder-cwd-icon-html{background-position:0 -900px}.elfinder-cwd-icon-css{background-position:0 -950px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -1000px}.elfinder-cwd-icon-x-perl{background-position:0 -1050px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -1100px}.elfinder-cwd-icon-x-ruby{background-position:0 -1150px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -1200px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-csrc{background-position:0 -1250px}.elfinder-cwd-icon-x-jar,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -1300px}.elfinder-cwd-icon-x-jar:before,.elfinder-cwd-icon-x-java-source:before,.elfinder-cwd-icon-x-java:before{content:none!important}.elfinder-cwd-icon-x-php{background-position:0 -1350px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1400px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-zip{background-position:0 -1450px}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1500px}.elfinder-cwd-icon-group{background-position:0 -1550px}.elfinder-cwd-icon-json{background-position:0 -1600px}.elfinder-cwd-icon-json:before{content:none!important}.elfinder-cwd-icon-markdown,.elfinder-cwd-icon-x-markdown{background-position:0 -1650px}.elfinder-cwd-icon-markdown:before,.elfinder-cwd-icon-x-markdown:before{content:none!important}.elfinder-cwd-icon-sql{background-position:0 -1700px}.elfinder-cwd-icon-sql:before{content:none!important}.elfinder-cwd-icon-svg,.elfinder-cwd-icon-svg-xml{background-position:0 -1750px}.elfinder-cwd-icon-svg-xml:before,.elfinder-cwd-icon-svg:before{content:none!important}.elfinder-toolbar{background:#061325;-webkit-border-radius:0;border-radius:0;border:0;padding:5px 0}.elfinder-buttonset{-webkit-border-radius:0;border-radius:0;border:0;margin:0 5px;height:24px}.elfinder .elfinder-button{background:transparent;-webkit-border-radius:0;border-radius:0;cursor:pointer;color:#efefef}.elfinder-toolbar-button-separator{border:0}.elfinder-button-menu{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none;margin-top:5px}.elfinder-button-menu-item{color:#666666;padding:6px 19px}.elfinder-button-menu-item.ui-state-hover{color:#141414;background-color:#f5f4f4}.elfinder-button-menu-item-separated{border-top:1px solid #e5e5e5}.elfinder-button-menu-item-separated.ui-state-hover{border-top:1px solid #e5e5e5}.elfinder .elfinder-button-search{margin:0 10px;min-height:inherit}.elfinder .elfinder-button-search input{background:rgba(22, 43, 76, 0.75);-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:0;margin:0;padding:0 23px;height:24px;color:#fff}.elfinder .elfinder-button-search .elfinder-button-menu{margin-top:4px;border:none;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.5);box-shadow:0 1px 3px rgba(0, 0, 0, 0.5)}.elfinder .elfinder-navbar{background:#2a384d;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);border:none}.elfinder-navbar-dir{color:#e6e6e6;cursor:pointer;-webkit-border-radius:2px;border-radius:2px;padding:5px;border:none}.elfinder-navbar-dir.ui-state-active.ui-state-hover,.elfinder-navbar-dir.ui-state-hover{background:#17202c;color:#e6e6e6;border:none}.elfinder-disabled .elfinder-navbar .ui-state-active,.elfinder-navbar .ui-state-active{background:#1b2533;border:none}.elfinder-workzone{background:#0e1827}.elfinder-cwd-file{color:#ddd}.elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-file.ui-state-hover{background:#1a283c;color:#ddd}.elfinder-cwd-file.ui-selected{background:#152131;color:#ddd;width:120px!important}.elfinder-cwd-filename input,.elfinder-cwd-filename textarea{padding:2px;-webkit-border-radius:2px!important;border-radius:2px!important;width:100px!important;background:#fff;color:#222}.elfinder-cwd-filename input:focus,.elfinder-cwd-filename textarea:focus{outline:none;border:1px solid #555}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-disabled .elfinder-cwd table td.ui-state-hover{background:transparent}.elfinder-cwd table{padding:0}.elfinder-cwd table tr:nth-child(odd){background-color:transparent}.elfinder-cwd table tr:nth-child(odd).ui-state-hover{background-color:#1a283c}#elfinder-elfinder-cwd-thead td{background:#010e21;color:#ddd}#elfinder-elfinder-cwd-thead td.ui-state-active,#elfinder-elfinder-cwd-thead td.ui-state-hover{background:#010a17}#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover{background:#010812}.ui-selectable-helper{border:1px solid #022861;background-color:rgba(3, 62, 150, 0.38)}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash{background-color:#e4e4e4}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file{color:#333}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover{background:#1a283c;color:#ddd}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected{background:#152131;color:#ddd}.elfinder .elfinder-statusbar{background:#061325;-webkit-border-radius:0;border-radius:0;border:0;color:#cfd2d4}.elfinder-path,.elfinder-stat-size{margin:0 15px}.ui-button,.ui-button.ui-state-default,.ui-button:active{display:inline-block;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-webkit-border-radius:3px;border-radius:3px;text-transform:uppercase;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s;background:#fff;color:#222;border:none}.ui-button .ui-icon,.ui-button.ui-state-default .ui-icon,.ui-button:active .ui-icon{color:#222}.ui-button.ui-state-active,.ui-button.ui-state-hover,.ui-button:active,.ui-button:focus,.ui-button:hover,a.ui-button:active{background:#3498DB;color:#fff;border:none}.ui-button.ui-state-active .ui-icon,.ui-button.ui-state-hover .ui-icon,.ui-button:active .ui-icon,.ui-button:focus .ui-icon,.ui-button:hover .ui-icon,a.ui-button:active .ui-icon{color:#fff}.ui-button.ui-state-active:hover{background:#217dbb;color:#fff;border:none}.ui-button:focus{outline:none!important}.ui-controlgroup-horizontal .ui-button{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none}.elfinder .elfinder-contextmenu-separator,.elfinder .elfinder-contextmenu-sub-separator{border-top:1px solid #e5e5e5}.elfinder .elfinder-contextmenu-item{color:#666;padding:5px 30px}.elfinder .elfinder-contextmenu-item.ui-state-hover{background-color:#f5f4f4;color:#141414}.elfinder .elfinder-contextmenu-item.ui-state-active{background-color:#2196F3;color:#fff}.elfinder .elfinder-dialog{-webkit-border-radius:0;border-radius:0;border:0;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6);box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)}.elfinder .elfinder-dialog .ui-dialog-content[id*=edit-elfinder-elfinder-]{padding:0}.elfinder .elfinder-dialog .ui-tabs{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-dialog .ui-tabs-nav{-webkit-border-radius:0;border-radius:0;border:0;background:transparent;border-bottom:1px solid #ddd}.elfinder .elfinder-dialog .ui-tabs-nav li{border:0;font-weight:normal;background:transparent;margin:0;padding:3px 0}.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active{padding-bottom:7px}.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,.elfinder .elfinder-dialog .ui-tabs-nav li:hover a{-webkit-box-shadow:inset 0 -2px 0 #3498DB;box-shadow:inset 0 -2px 0 #3498DB;color:#3498DB}.std42-dialog .ui-dialog-titlebar{background:#0f1f2f;-webkit-border-radius:0;border-radius:0;border:0}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{border-color:inherit;-webkit-transition:0.2s ease-out;-o-transition:0.2s ease-out;transition:0.2s ease-out;opacity:0.8;color:#fff;width:auto;height:auto;font-size:12px;padding:3px}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-color:#F44336}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon{background-color:#4CAF50}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon{background-color:#FF9800}.elfinder-dialog-title{color:#f1f1f1}.std42-dialog .ui-dialog-content{background:#fff}.ui-widget-content{font-family:"Noto Sans", sans-serif;color:#546E7A}.std42-dialog .ui-dialog-buttonpane button{margin:2px;padding:.4em .5em}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:0}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{width:inherit;height:inherit;padding:.4em;margin-left:5px;color:#222}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover{background:#888;color:#fff;outline:none;-webkit-border-radius:2px;border-radius:2px}.elfinder-upload-dialog-wrapper .ui-button{padding:.4em 3px;margin:0 2px}.elfinder-upload-dialog-wrapper .ui-button{margin-left:19px;margin-right:-15px}.elfinder-upload-dropbox{border:2px dashed #bbb}.elfinder-upload-dropbox:focus{outline:none}.elfinder-upload-dropbox.ui-state-hover{background:#f1f1f1;border:2px dashed #bbb}.elfinder-help *,.elfinder-help a{color:#546E7A}lib/themes/dark/icons/material.woff000064400000033410147361034400013317 0ustar00wOFF7]�GSUBX;T �%zOS/2�AV> I�cmap��\��cvt � �fpgm��p���Ygasp	`glyf	h(@�3Qkhead1h06��hhea1�$<�hmtx1�pg`loca1���Rmaxp2�  ��name2�}�w��post4 k���prep6�z��A+�x�c`d``�b0`�c`rq�	a��I,�c�b`a��<2�1'3=���ʱ�i f��&;Hx�c`d~�8�������iC�f|�`��e`ef�
�\S^0��b���$��Arox���nDџd��m�����̔R|�an��u���VޕIڙ1���
0���Ϙ��������N_3�׳�����0=����yֲ�:߷�E6���la+���v����a/���r���(�8�	Nr�Ӝ�,�8�_����U�q������]�q�<��y�S�����y�[��|����W��%~�_���L���,��a�g��ή����3��~j�S��2��)SBj�Y��]�4�2W�L)�F�ԑ2�L")3I�t�2��L,)�K��2ϤL6)3Nʴ�2��l)�@�V���l
);C���G�l)�Eʖ��o�l�qR����$eCI�UR����%e�I�iR���='e�I�}R�)����@ʍ �Z�r7H� ��R�
)���KC��!�r�H�H��&R�)����E�
#嚑r�H�p��:R�)���KH�M$�:�r'I����NR�()���UL�	0�x�c`@��?�l�x��Viw�FyI��,%-ja��i�F&l��	A�c ]�����;����_�d�s�7~Z�/$���p���w�����eZ��둔�/���&��<	�M�Q|(;{!e���Q��ڷ�DD"P���D�Y�d|�QF˶�WM�-=�.[�A�U�~:ʱ;��f3th=�%UU�H�=RҦe��+I+����W�PˆN"i���H�g��h5��(�l��(R$��Ay����	�͐�ʧ����أ�V�K���/y�w9?�_oQ��@Ȏ���t%_�[[aܴ��(Tv�wBl��T�f��F�+2�Ќ`�|�+?��!Y-�O��G�Z��A�eN�K>���)q�Y���	��3��>���)�x�zG%�)as4I�0r`%e�*����8�uZ�[�~��ї�h�Pwb<[[9Q��hR��L��Iͣ)
��t&x̯(?�I^mc5��G�8fƄD"-�KSA,;��)ͣ����v-Z���ܣ���V���S��FV�b:���i�/�i��"E��~L�A�2�-6Ô�o���ז������+�}�D���O�)	L��U�V@b�kY��լ���wC�V����rǾ�q�_33���߉ӳ#.=s�K�|�u=�ש�rqfyN�Y���4����Y���K[��,?�i��G:cyA�t���0��0��CX^�!,a�CXa�%��c�r����e��SI�ڙXlB`b���E�j*�TB�hTjC�n�TϪe�^<�9�H�Ț_1Ε�F��-o;W���o��9�R֋�?���T%�b�Ó����l'�6�xtM��U=��_TTX�H�X(ʲlpg"��:��j��C�l�<��u˚��71BP��7܃NYIY����۲�;�r8,I17�V�"#��~�Yʞ�|p�Je�j���'1��$�q[Q6H����
�y�&a�
�N�
�an�y'\�z�,��E��(��[��D��h����a��B�oq$4��~T��5�4Rn�_�ٺmB��#*vò�������m�|��գ���^�N��~f�� 51{�tq�ʻZ�2GmS��SךC�U���Q����9k�n�'z_Ӫ��\,��m�R&�a�
��ťP�e4I���P������|�+U��q$�NԷ��`��G��c�r
.���n��l�����70k��Y���t�!G����
|�qz���!�c���&���ݵ��S���9>���a�d�-�0�f��s�2��s|��u�/�� d��9�0'x�_1����a�
s�|�1s$�a����0�-^�]��AU�SOX���PSe�����A�� �����/�g����AL�Uӝ!�7^��1����L��e��|�
�]l>����@���x��{	x�}�9qc@$��A� @�C$A��C�H�ASm)rdZ�TK�[�I�n�]���8N�X�FL�ϑ9���j�/�m�~�ױ����M�n��S�]}�h�o�%���]�3�f�͛w����\{�{��D�$V�H@7s@	=F�cO�7�.EQD��S��Ԝ�3AN���^Y�����WaN뿡_`�뢟%2i/�x��d�(P؄��`؍Ua�뤂��ń	��0ץ�^��_�������E������o7Q��F���,�7hVq�J���|W
o���F���_���oS-�dIx�Jd3^>�A�i��=��u��>��_��k�aA���H����3D!���J�
8�8y�|�|��EDU�xs�B^�ka8{U�f5�$���3وn�d�8ɮ��9���_w�a|�9�-{JJ�v�s��ɢ�5�&��h�P��J8�M�K��޷�ޒB�Kqحf�DT����3�ı�A�{�jXq�9;�Y��d�c(�t��.�;��-�WÙ[�a�4�Z�l�~�8H���u��܄=o��ǁ񇐨Dn��#���D�BDQ�KQ��O>g�݄'�E"�e����RG����V޻�-U0�on������R�����+j��4h��S=ȅ87C���!p;�'�x�d�7��!��!��ޓ��^�/����_��{v�:/�Wt��s`ׁr��p�s;�$���S�R��Ա�V�[r��&��*��SD����p>���ܸ��a��~��Jsw��ry��5t�F�-Bc�c2�'���x��݄�$�D�#<�����%�������E����Go���R3��VKs�ϫz�.���DŌ����jy-�cB�]7������=�F�_XZ*/-CCY�"7J��H���|�J��� 7(ǰ�L�(��#�B�'S^ �)g��X�E6��
�q����-�*
�)�ʚ![d��;��6�K��>�#juFt�q�*��L?���c��Z��e66x��#Wukc�?3\6h�ۏ�5��M>׊���h��@P*`O��<PA�3x�­D��� �����dB���{D����X�pLKh���Z�ÉD��*����v=MnN�q�z$��e�����?�P%[K�q>8��q@B�)����AF���M��f3!vŮ8f��f�`C���M#
-6�	����%�(���~Bʆ�/���CG{���y��Z�����S��~��G���'yĘ?��G����(M�qQ�V\d:�ċ$��(#as"�P���y�_A����d��R�@K�Î�V$IH�mG$lAeb��8=>���a��HBBq�S,��x"��#���S���;���������gJ#�x<6R�,O�u:X�%��fv���X:3���c'�_��Tid��3�����w˷d����3�L����2iB�.
��D�-�ŧ�s�DN��a���a��)��Ѳ�ij�4)��dh��mN	��k���P<�/���$|��>L���T0��>O�k�`��g��=�	��g��ы`��q�c�t�^2D��gK���)%0�Lf'�4�,����������&0��`���'��(qފ�f�q�e���6��R��p75<\�w�������@~�0��N�v��'��h�O��T���	�;"v�K��Z�g�"����z��k܍��ç]�����������.V���.U���ݭ��M��6�^-C���V^Xی����؜խ�#�'vx��:j��n�Y%'�K�,L����L	�!�Ir�Ȣ ���8Cı�)�H<�"�P���
���B�����#J�	�07?�����h������d��_sz�!�Mշ&��&�ᎎ0R�Y��m��7�SCM�
=p�ˮ�H��q�D�����t���%�
W���O<C��]�~��O���n� 	�'�$|��̶Q�i씎GP�o�i��X�ģz0�D����]����i���Lfb�#Vb���y����<��d�����BVy,����Z�As�֜�.�k�����-�A"�k-"K��܋8,Nn۲itd�/��Τ:��D0�ys��ۉ��Nd�E�\#�APWh1�ʮ(>D>�J�8�T� �i����#0T3'y���������ܬ|�Y�o+M��6���?�+�mq�)s��A_�}.���\�㳈NH�J��J�,{�:x��tnV4�g���Kf������\�&gC�e�_�I�6)�����5�q���rE�̻mT��U�sP�Ӣ8�P��A�0����
���سS�\<NH��C�ӓ�����tW�'�
k�#�XX�:A�Y���R')��VA�[0�PP!�ĉ�?_N�b�<�J���\�F3e,��
;�D�ݺ��`��Ғ^�L��ܬ�V��c���0��I�7�W��˕J�09�#��6�Cbxd�W�¬�����P��@<�_O��,�g��n����z:>�.���]v��g;��20�}ą�G�l+m�#V�� ���e�dỌ���X�،�a��T8�qI�C�p
5Z�4��\u}mT�>o��bi����Uw<v�P��LK3�Wn�5�
-��f�p[����[�]킱��`�~8�}�\��m�D�� ȇ�cc�P>@�6a�33�J!��ʹ�@q�Cy�l<XQ\�S@-��3�94�a���ӿr��ju�c�=�W�-4ڝ���+u�L��ւ2�F��8~<���fB�$�dv+��hB���
��p�����v��M�
?���������U��֝C��E�d��	�$*�`@t!!��u�̙�wVL�{�;�Z��;՚�Z�v�IhR�ff����S��@����U��am�A��q��\���8w��V�;xϾ퓩t:5���F�J�?^�Ӭ���W������k]=�?(7��C��-
{��,!���HDs�2�#D��`"�萃����P[ȥ(޾�lȿ4��"J�5`J��W#�5�:��:�Q1�É<���_��Fp���-v�e:�V}1Q���,�i:M��ߑ��<g���"��ݍ�� ��ǃ�hA�&�e���a������ݛt���Y7���y�S�s�X�tw�#�k��;I��U����d1	�5��.��I�Y�PG�T��91��}������D*��2�L��	�D�j�LJ�+�9[P�����|�
ǩ1{�]�5�٦��y��q��O��立�+�?}^?�*���
����|��y�����#�Y-T0�
����>b�8�����{bÁ�a��?�
�t���{�NU_�m�^ҷ\�v�g���t�F���(�I6���&8jf�."�[0�0����U~Ϥ�o+�s=�������{&�sa�ƹa�JŚ�fB���+L~���t%�)�0�4Y\fK�m	�l���;�t뺇o**�8����&��㲸�~-��liu�F��O��|�H�N�!m$�:���
�D��i�>V2gA�vC���O>D�wҌz�F�q+͊�y�ښ���CqKL��A;��G�N��	Ά��i��%�C�^�s�����@U��\��*��Mi�˄�A��r�gj%�ko(�ʹ��i��[m��^���_�w|���۷OL��
�����x$�*�5��d���;o�11=1=59�mQ�Ʊ��Pid�C����|_�%Lo�7ד�b,�E�����ڦ�2'��Q<n��is:�&��j13?1�A�Fd�m�����n��eh*��GI3�ia�Ҹ,��p�0B���HO%Y)����ժ�
}�R�����=�˗����LjY=��赬�LV�?v��2���˗#=����`���\./'+=�Z՚�7dI��	��f�bQ�<�2�Ci"2�"3���d*�D,i�7�ZR�0ca͂�ߍpȀ���k��`y���I�d���A�ܹ������s���`��58��
������w�ā�ڠT9��-�+��œ�$�F�@Jk�:��tS�:��%J*�H�|�NڢZ[2�L6#��uƴ�ޭ
\��O�ck]��4��[�~eۖdggr˶J�������?.�~�B���o[;z
}�Gk��uKGG"j��5��¯�>0�p��
����
5q�-isQ��g�F��&��Ȭ�8���ȣ-.j�1q�i��L�n�����z9\do�F��3/�
�e��	������mѧH�$͝s�
�P��;�!�rH��x��:�t�G�@C�b����<�/�D�������
g�>����^p����tC7��<�1F�t�ڛ|7E=�9ĮY-l¥bNT5U[���.�"�Ƶ@��OS\��*���ǩ�bB,�
EM��~y�hO&��u����;��a�p��۷���3<l�'����&�mz�y�y�G�M��I-lI���}#��
k�+��u�-�
w��߰b8�S��.�nJ�R� i^_1����'<�;/���n�0Bž��Be�7z$�>F�S6t�|���C��@��@����}�O-l.\��3G!D��|�Y�D���}�	D}8u��	����lL�	X H6'�:�x��є2%e�0N?sF�.�o6�II�6�k�E��f+G��:�ۋ��:G/1Mv.�4CT�q�rNi��f%y.��a�I���MX�$�*�SZ���Y+��4�(%�`E
� 5���+�9�Ѭ���(��O#i���|�����
@M�c=��b�7�������f�S�!��p�#�F84�5�}��}��Z�(ݿz�#E!��G^�t~��v�K���38pD�R
u3�Ǚ�y��D���o��b$�ވy�w�	9%!ѷ��+�����#GؔV7�����!ki�NZJ�U^�`%��e�aAM�.��|�O�@��W�����@A��c�.?���i&��y�|�((����d-��H)h1�]e] 3�[qs_�E�̕����.�2x6�k�Y���}V}��X�Y'�������EeeX�0�B»٤LȲl�-�:%4��5G8��-7���ڶm������]����`�UDy�Lb�����X�_���V��C����w��#Տ׶����1���f3p<�O�@�	=�@<�}q0�᠘��b��y��r�\F�h=tG-AB �h�3��S~p:.�>}A����q�…ӿ�_=
g/����m:��ɍ���T2j�c"�0�nqh[К�`�&Bvi��b}��)�
{Z~��/@�)��u�4v�<�CXx������Bo]�/��H����q��8��S\os-؏j�PrB=��uuT��󡁋N�H����'�{r�u׆������x��t��p��P�[n3�`ad�F������mId�|�h('Wi��4����ݝ����C�W�3;3�ݙ�3�ߦ�^����}dw�rw�-�XT���/-��f���W��& ����"+�X86��jk��y
����|k�|Kw7{�<�T�Y��߂(��ĺ�z�]�������?��'R,���8�Q�pp��ύ�]O�;�C#�a��۷V
U����W�|q2(�g�u�(%���
�G�xU��A��#�e��^^v�'�u���#R�,��#mj����h�#��+#�tMeM��^��nߘHl���`k���f�.?�6JG��.�l��v�;8AzTt��$��/oҧj�M+>%8�h�)��qi=�."�F\*s1�Op�ֆ���˒�i1IMrK�AS׈z����s�^I��/-/���}�(��d����I?"�d��ɭd?9_�Y���d��Dž���С��KN��|�Z{.�t;2��i�V7�t����#���jv��m^hnm�M�榹
��@,,����I0pk{<����������Pp�ǫ�����ݳ�R��(zz�鎎�����n۳�}{+�Vnݽk�<Y�e������Ķ�㛇G�GK#CC����bO�'ߛKg���LGWGW�3�����Ρ��i�j��Mʆ=�0�u�M��%xj�����̠�O2����Q�&�h�|�ve�v��d�X5H
��s�N�
�^�\��ކ�r=dQ�e�U�Ć���4��ѩ���N�$y�(��^��J�4�/��
8�Q^��5���p�r,�R�0Oa���Z\-�;� 4��B+���qz�X-s�����2�7eup��Ǝ1�/-U����b;����X��s���*\�
}�.ᯒ�nd�YL�TW�
V\�Gə�gDT�LgnO��8�[A�ic����hAs��<G����o�C4`m�X�H3i�!����A��������8��918�䍒��yY�A�%������?��|�u��_�!������e�w�����������;\Π�I���v�F)'�K��c�njB<��B�y+Ȃ ��Af��,L���(
�3]�ҩ�D��Eu#�F̑��XZ]O���Z=/�m}F`b5ņ�!���N��Ҩ.���ڟO��;�I(C3��pߦ��;p���<��d���������LX�ר��pfG�/���5��~/i��x���"�Cz�H�"��.�Y�o���$�E��%�x�Y�4YZ7�J����S���;��kC��1.���D���8kcZ;���_b�(T��"�̋z�d�P�C���R�l�]��T&i�n.`���P�5,�~�܍�o�����C7Z��r�xc�VrB�I�,W�ɪ�f��̺&f֙@e��0��q�[���Ğ�*���z�t߉��	q��~5~0T������7�aF�jR숦��3�2q[���:Cš#۸Ǘ���-���2�������s����+�kd��������qk�	�h��u�_�0[��0]ѿF��l_wc];�R�*�[�����#�q@����%�!�iF�-��ϟ�?�N� ��(�_3�*���R��yw�ǯ7�k�E VT���vpB	'pq�j|F��-��c�u�����
�������3���ã�]��Ó,�RR�7o�zu��Y��Z��H����ky�}�ՠ�
A&/�^8���[Ͳ(>"�:*xp0O��N�K�7|Ա��?���!�%�h�=�~�Bp6ܒ��#��9EE�vsa����D}�iC�L]V]�XՕ��h��:����мѭp��3f��++���hA���e��l�Ckg�<L��7�S�;����}wSY�Ʒ?⯂�mA��i�CE���\����e�$ϣ�S� ZD�� ����=����m�.
w$[��}v+��մ@��wf�BD��4��@�����eD��!`�a��
G5�J��V$��,��B+w�a�����܂+K=͚�<t�ȉ9���͞)�vG���f�M�c�~���	hw�!P�iai�D����ָ֝;����4s�E<0'Z�f[L[8���3�h�ڢ�d�$��v՟h׭)-䊫�@"WRZ[\��L�K����6;�xfU�3���C�a�]u�&Z�l�Ä��M���D	*���h���;��a}N
�'�ax�A�<����(Y
ר�����XBJ��Xޝ�.��	��+*x����Ss:���<�z��/�=������ե��
�����#g~��OB�K>���g~��|�����Ұ��� �њ��g.4�p�`�s	��2�Z�5"�f�hf�Qv����ԯ�����V��ꃺ?Գ�_���o�%|{�N݇8{��S���ECT�GR&N�9�t@��-�I��E��/%��t��KT\dIޜ�x&U�$�{�ĩd;��
�}��������'	HN�XK�DkD5���j{��)�e_!��C�7�����KΏHi���\S(�h"?�*�ԓrө��f��m�
���7��sC�p>��C�fu#�7�Q��Q��	����o��b�ܚE�S�~��@�s(?�.�l��A8�/�O��r�eĝ���c(<�kKR�ď�P�D$�ROh��1�*{�}yp�"#�~�X��X#,��s��;��>u⾓�-�u�;��EZ�n+�q�������k�m;�`�zk�@̀�X�P�	��R��>j( �#�C��G�
B�Y�#��Fb��m\��j�޸�.�%��ܷo-�-f�՝�<�&����n���׶��P�m�_uwY=VY67qR��P4.%�M��l�;�)�`B�a�j�ʼ�c��E�Y��@k"�����&}���[$���(g��M1M����ŵ���	(�vϧ��E�R��sΦ!G�����--�e��~Ɂz��7[;@�)1a�!Z�9�`+B�ar{�-�U�ŭ��bT���X4��gZ���a�ƹ�25xɓ��8�e�X⿈|�eI�,Gv�}��c���ͬz꘽��L�d
��-7��[�8�XK����3(�juD�W髙L�ʮX��V��ں7g+F�Zs�_��4X��X�ښR�򽖀�uwkF�pWkv}^�H�F��|�6��2H�s��P�,��Mk��$չ�bA��̔}:2Î�[�'�	Yj�3���*�e;���口rOH9Ic��\^H�`B3���w�8��œ�'�}�$U.�`_��9���8y���3�O>qrO�k�컍� B�j^0"K�ԙc�%��9�+�j6`��a����A�coq��C����}X�dI3*}���b-�I?/��)�;�g��Z!^���Ӕ��9������7�Q��F��.�.�J�l.���ZQ�s�/7�����0W��G]{�?q�}��Ҍ
�<��ńZC_1��� !ⲃ1�=�����3�ړ�}~�p'�����_��l~���g�m��o82�X��gj���x��y�Y¥1�7g��1��~`7��J�T���r�����/p
ۢ�;��%�;��i���z}#g�0Dv/��{�����w��:?��E�j�6���6������<[0|h >�xβz���kbl"R��u����#��E|�7|ܾ�O
�©��N=?��iz�S��ʙ��x���	��1�xb,��[͚Zͤ��d����X]��i@>sf��vI�W��'k��,��!K,�l���T���^c�]E��m|����b��(R���'��d�Gc?�9��8,W�^���n�7�T�p&H��7���o\��f����XO��S��z�FNHH���ކ����}z�F�l{��W}苓���ml^i驈榯��?��#OoC��/�=]}����J�q^��}%ȥf
#�ȁ����U���j���E{�w9h���ˡ�n�cv�Jn��mX�M@<"ʟ�4�q���#m�?�pؚ�뾶/�XK�B�bo��=i�oT�@a=Y�"	&��V��.GQ�k��v��������ŔY��Wn�������7 E�71�;��{u�5aТ9e���@�YF�m|��"5=��a&o	7�z�N�'���n'j1�
-.��7���O]����=^5��{]���Nu�'c�@����ěGظ��i����y�o�ڍ�F�y��a'�I��4��m�̳� �X�7d,���7�F*8s�(�	a�-����
y�"��?5r�ѝ�%�	�5�W#;�C��T[[ڎt"ݵ����So�'�޽Q[�ZbIi����)���J���a[m$N2h���#�Cv��	"/�9�p��sG
O�����Ϲ&+g�k�Ѐ����D0�&�P��h���/ۗ�Ld�3Z$�U��Lڠ͹���NFJc�|��<��88��B�Q�|̵J���&�J�u���`RQ���d�/�\lmo�K&�����/���k����G�ݺ+��$�۱�7أF���vҗ\/�9�A�JM>���x}؇���Hد8y�;u%�f�uU�3K,Q�
���D����_o��R�mS�Mn�L��n����=�����ӥ��=S�R)Vs�����;+����m����kux�c`d``��W�9���|e�f~a�z,�A��������	$
k��x�c`d``��$_00�IFT]P�x�c~���<��
�Tu*V���(�v�>�V
n��:h�6�		Z	�
&
�b�
4
�
�B��Z��P����J���^��Bf��������p�$p����>r����B��,R� E\�z�s/px�u��J�0�O��@E�[s%���ɼћ!���vmG۔4�5|Ɨ�Y<m3��
m~��N�_��{�QU��C-��?X���,��_-7p��rxgQ?�Z�ò��8���qe�F��r�<���K�l���g����-7q->�*��(���d����F*ZQ���]�P�\��B�Əc�x*I\��ȍ�~��]���y��<R��:���觾&���u�3f!Z%rb��L���'4&�ۿ��
6ЈxU!$n�8��A}Ҝ��UU�.b:.V��+9���*��"&;�M8��-z���c*�guW�JΩ��ۭz$�������9�<�G�0a�R��$&;y%�X[���;���9���o-ꃱx�mR�r�0�J�H;qz�=a���{��
E�@�@������x&x vq�;���tu�_h��m���A=�1�Yl�f�a�b�cvbvc�b��������N�N���b��\�<.�2��*��:n�&n�6��.��>�!�1��)��9^�%^�5��-��=>�#>�3��+��;~�'~�7�r][L�0̴'&mVe+&�%)��
I����A1�O�a&$5M8��<4d�6ĸ.WZ�rA�XG�\��I�R
�8�T�Q*\g�|(��}�7�R=V�NBe:�e_��01<#b#A�N������$K_Ί�ĤPö�:�Ym\d���b�d���R��A�&�]ʄ�
x^贝pN�c�*�Z�E��nVIi�!R�J����ҭ�J��Ju�4����)�$Tǒ$�)�S����
5"��|�d
U�&��v���t&’EI��+ee�ZW?�*��Ӵe�d�].���@끤�x�"�jZu�6*��pI���H��(�}jЫ�^�z#���3K2^W;���:��G�^k�By�gc���~��|l7R���C���*{���t��I�j�ȩ�<73��T��q"�g��E#�[�')s�˩���]�F�&C�x�c��p"(b##c_�Ɲ�X�6102h����9 ,>0��i��4'����ffp٨�����#b#s��F5oG#�CGrHHI$l�ab�����uK�F&v#�lib/themes/dark/icons/material.ttf000064400000056730147361034400013165 0ustar00�pGSUB �%z�TOS/2> I�PVcmap���\cvt �Q� fpgm���YQ�pgaspQ�glyf3Qk@�head��H�6hhea<�H�$hmtxg`H�plocaRJ\�maxp��K namew��K8�post��N�prep�A+�]P�
0>DFLTlatnliga��z��z��1PfEd@��ZR�jZR�,,
��Z�����	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[T[������������������	�	�	
�
�
����
�
�
������������������������������������ � � !�!�!"�"�"#�#�#$�$�$%�%�%&�&�&'�'�'(�(�()�)�)*�*�*+�+�+,�,�,-�-�-.�.�./�/�/0�0�01�1�12�2�23�3�34�4�45�5�56�6�67�7�78�8�89�9�9:�:�:;�;�;<�<�<=�=�=>�>�>?�?�?@�@�@A�A�AB�B�BC�C�CD�D�DE�E�EF�F�FG�G�GH�H�HI�I�IJ�J�JK�K�KL�L�LM�M�MN�N�NO�O�OP�P�PQ�Q�QR�R�RS�S�ST�T�TU�U�UV�V�VW�W�WX�X�XY�Y�YZ�Z�Z[����
%@"Eoof

+5333	3���}�_�_}��Mw����-�(@%GEDRVJ+!7'	7'!-�%�8��86����7���6�-�'@$GEDRVJ+!!�6�#��89�7�P�68-�@Ef+%#'	'R�8899�&��89��8���@oof%5 +#"3!2654&#!��#11#�#11#���1"�"11"�"1��k�GK�PX@#cmnTWK@"omnTWKY@
	+%!"&546;!2!!�!//!�O!.�fU�Z*#/!�!/P.!�w:��!�j��GK�	PX@(ec`TYMK�
PX@0mkk`TYM@*mk`TYMYY@!	+!2#7#54.#33!'!"&=3b=r��s4�;�s5M=��sgK����5(��5K���ZK�PX@c_RXL@o_RXLY@
+%!!5!'#"3!2654&A�f���S�#11#�#11d�SS1"�"11"�"1���K�
PX@-oec	^RYM@/omk	^RYMY@	
+!'#"3!2654&##5#53533A��S�#11#�#11L}T}}T}XS1"�"11"�"1��}}S}}��A���GK�
PX@0	ome
^RYM@1	omm
^RYMY@+3'%!#!"&5465##33535���M�1"�"11�S}}S}��?��#11#�#1��}}S}}S��9�	^K�PX@$cmnRWK@#omnRWKY@	2+73!265!%#'##!�6&r'5��Z�.�-��'56&,�..\����	
H@EG^^RXL




		3	+#!"&'!535'7��1 ��!1�hu^u�Y������	 ++ �X�n��ů�Ջ������)2O@LGm``TXL10-, 
	))	+"#7#47>2#"'3276764'&'&4&"260aSQ01w��w&%�@?%&&%?@KSM8-p=aTP/11/QS/B./A/�1/QS`��L@?J&%?@�@?%&48$%1/QR�SP/0��!./@/.��\�>@;m^^RXL		 +!"3!!"3!2656&!!��:,K�p�`,,�,, �`��,��M,��,,,������"+4=B�@�?@
	
GA"Fm
	
	m		km`
``
T
XL>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625�-MZM--M-'bb(-M--MZM-b$}�e"11E00#"11E00�

�S$(-M--MZM-bb-MZM--M-'b��*�1E00E1�1E00E18

��S#*��J�&N@K`
	^^RXL&%$#"! 
+#."#"3!2654&!2"&46!3!53��:J:�,,,.�� ��K|K�!**!,��,,].  �T_ss�����-+���\����-��*5���V�'5CK�@1
	=G"FK�
PX@N	e
		
ee^	
	^

```RXLK�PX@H	e
		
e^	
	^

```RXLK�PX@N	e
		
ee^	
	^

```RXL@P		m
		
me^	
	^

```RXLYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4s�����jI
Y��KYv


�sr��\�y^\
��\�[
��Q����%.26s@p#G	`
^^
^TXL33&&363654210/&.&.-,+*)(%$!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35�SSS0$$/SS��SS/$$0����M�}}�6��S�S!!S*�*S!!�)��S�SS��TT����@
Gof+73'64/&"27S��2l&
U�*j��(&
lU�+�z,I@FG``TXL! '& ,!,
		+"27>7.'&".4>2"2654.�]UR}  }RU�UR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$�'4WfW44WfW415 1BB1 5��J�
#@ Eooof+%!3	3!!`&��������R�&X���xb��L�
3@0GooRVJ

+#!#!5L���X����&���bbb����-1G@D`^^	T	XL10/.$#--
+%35#"276764'&'&"'&'&47676235#�TT*ra^7997^a�b^7998^aqZNK,..,KN�NK,..,KN�TT��w97^a�a^7998^a�a^89�.,KN�NK,..,KN�NK,.�S���� A@>Gmk^RXL  83+'.#!"3!2656##5#7!�A
��	A6&�'5�^����?&,,�MM��'76&C��\\�..���� ?@<Gmn^RVJ  83+'.#!"3!2656'35337!�A
��	A6&�'5�^������&,,�MM��'76&C��\\E..��#'+/l@i	
^
^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S����ۯ�ݯ�ݯ�ݯ,���m��ۯ�ݯ�ۯ���w�����+����w��v������������A@>
^^	R	VJ
+735#35#35#!5!!5!!5S������L��L��L��F�(�F�F��������-N_@\		m		k
``^TXL/.CB6532.N/N$#--
+%35#"276764'&'&"'&'&476762"34623476767654.�TT*qa^8998^a�a^8998^aqZNK,..,KN�NK,..,KNZ-M-T1D1

T 
-MdSH98^a�a^8998^a�a^89�.,KN�NK,..,KN�NK,.G-M-#11##$-M-����!%48<@IMQ�@
10GK�PX@s

em-e&%$#"		^('

^)^+*^,^/!.R/!.Y M@u


mm-m&%$#"		^('

^)^+*^,^/!.R/!.Y MY@NNJJAA==9955&&""

		NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 

		
0+"353533533533533354&#35!353#;57335!3535#326=35335�"2T)TSSTSST)T1#�T�T�����2"��T��T�TTTT))#1�5TSS�1#))TTTTTTTT))#1�SSSS)T��"2��N}TTTT�SS�)T2"))TTTT�.,>@;
`^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.�#;#��9`88`9��#;#�N��w��#<##<#��9`88`^#;#O8_r_8O#;T�O#;F;#O8_r_8����)>@;GD`TXL$#)))+%#'6765.'&"32677%".4>2�%
#SFH�IF)++)FIT9h)�G��;b::cub9:c�*268T�)++)FI�HF**'$
%�G�:btc::buc9��a�
!k@h	GEDop^	^		R		V
	J!! 

	+7/##3#'3/#55#5!3�����t _}z�d�\
�¯&��{���Ƅ��n��j�U((((��4M6��M��R� &+@(E"Dof%$+'5.4>7&'67'767#��V�())(�W>d::d>�
:>�cH?2q>>	Z7Ȉ
bKN�MKa
Z
Jp�oJ
�,bI?,@��Z8?#a>QZ6��R�*$@!E"!
	Dof+'36#7&5&'55>764'.>>	ZX
:>$$L_<0���>ee>V�())(��?QZ7�bI>6�9Z
$ S��ĭ
J79�87J
Z
bKN�MKa����'F@C
o	oT^XL!
	'&+2+32!!+"&5!5!46;5#"&5463�#11#�)$�����$)�"22"�1#�`"2SSSS2"�#1���!.*@'#G`TXL/*+6'&'.7676%67676.'.�76]`�b_9;76]`�b`9;�/.LNZ9h)�%!"~�!"/-LN[9hVqb`9;76]`�b`9;76]`[MK*,'!�6+h��+j9[MK*,'��A�/@,GpTVJ
+!"3!2654&3'�"11"�"11���hh�1#�f#11#�#1T��??����@

	Df+%73%'}��7#�6��Ĕ���.S�wN��q�S�k��f����"@Gof
+"276764'&'&'7�ra^7997^b�a^8998^a��;�<;�97^a�a^8998^a�b^79���:�=:�s2@/^^RVJ+7!5!5!5!5!5SB��B��BI\�\�\\��@of+%3#3#!3y�����L�~��~��~����H@E
mk	^RVJ
+7#!5#3535!#!#33�w*�ww���˳*w��w��w��w�5w*w�*����C@@	op
^RVJ
+733!#!#3535!5#!5S�v�ִ�*vdw���ww*q�*ew*���ve���w��-�@GEof4+773#!"&-*��+�:���.3$��$4�K0KMl<��
���$44����0@-GE`TXL)!%#+
532#!!276764'&'&+w��$�4V11V4� �`RQ/00/QR`����}1VhV2�00PS�SP/0����0@-GE`TXL%!)!+#"3!5!".4>;%q�`SP0000PS`�!5V11V5�$�}0/QR�SP/1�1VjU1}�����GT7@4$?2GooofIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*�#$hSZXSh*�#$hS�n(C''CPC''C6
E�*l

n*�DD�*n	
n*�$'CPC''CPC'��>@;Go^RXL	+%5#535!'#"3!2654&G���)��S�#11#�#11d}�}�$S1"�"11"�"1����!%)-159=AJSW[_�K�PX@v

e9#8  e.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"K@x


m9#8  m.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"KY@�\\XXTTKKBB>>::6622..**&&""

		\_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 

		
=+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335�"2T)TSSTSST)T1#�T}�}T��T}�}T��T}�}T��2"))�))#1��SSTSS�1#))TTTTTTTT))#1�SSSSSS�TTTTTT�SSSSSS�)"2T))T2"))TTTTTT����#'+/3�K�
PX@>e	e
^^
R
YM@@m	m
^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}��T}}"2N�����TT�TT�#1T}}}}T1�C}}"2T}}T2T�fT�����;�@�opR	^	
	
^^^
^R

^VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53�\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\�\\\\\\\\[\\[\\d\\\\\\\\[\\[\d��3�",1T@Q`		^
`RXL.-
	0/-1.1,+'&	"
"
+%264&"#54."#"3!265.%4>2#!!�!..B..(5[l[5'!//!� //�w!8D8!�i�%݃/A//B.gO5[66[5O/!�u!//!�!/O"8!!8"O�#��u��3�",C@@``	T	XL)($#""

+#54."#"3!265."&462#54>2�(5[l[5'!//!� //��!..B..Z�!8D8!�O5[66[5O/!�u!//!�!/��/A//B.gO"8!!8"��3�*/[@Xm`		^
`RXL,+
	.-+/,/%"	*
*
+%264&"#54."34>2!"3!265.!!�!..B..(5[l[5K!8D8!��!//!� // �%݃/A//B.gO5[66[5"8!!8"O/!�u!//!�!/�#��u��
@E
Df+	>3����p'X��uE� ���zr�����=@:

^^	R	VJ+#535#53#535#53#53#53������������������C���������������-+'			7�T����TN��TMMT���T��NT����TN��TM����)@&opRVJ+!#!5!3!���v��evg"��evg���4@1GEpTXL
+"'!'>327.'&PJG9�o�+k;F~[`wQT�3����%(:fAU�%&��@RVJ+!5!���B$v����(�K�PX@8oo
	e
^TVJ@9oo
	m
^TVJY@2! %$ (!(

	+!!3353353353353353!%2"&46�TBT�B�)**)**)**)*�6\$$4%$�����$STTTTTTTTTT}}$6#$4%��A�8Tm�p@mD9_UznGF`{F
```	`		T		X	L��usgf[ZNM@>*)88+"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5�}b2## +ez?r^##\r?640$

#dm40$

#d�	b}?r.	
&#03p30E
_^


%#brb#
b}?r.	
'#brb#
�('(�,# &''&�,#&T		

	
		

	�	(	7
				 
o''6


p(6

����@
	-+%''%5'
7'77'���^�����_���M���{}}8<��<�������&�����������A@>G	F
DooRVJ+%!!7�����
����������1'����E���Z'Aq@n$ ?,	Gm
mkkm	`TXL)(><9852(A)A#!''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+�&44& 7 CZ;/$>$
;),<+F+H)!2S0�(D(:'+=5J4!6 
 '��%gqz�i@fMB�oUF)�2G5Foooo
	`TXLsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&�75M
03A?56

((0
|N�<S*i@1-
+^=$1!@)-10%f+	

-�'%8%%�''8'(OmD%#	7#&#%<	V`.IYF6~�=
.4.7!�T
*,'	

;	&�&7$#&&6%$5(
7!
����5J@Gmk`^RXL0/,+)(
	+"276764'&'&#537#54?>54&"#4>2�ra^7997^a�b^7998^aGTTU%	
T04
0E1T-MZM-�97^a�a^7998^a�a^89�;T�%,B54#00#-M--M-1����`@]	
GEDoom	n
R
VJ
+353'3#5535'#3'##7#��s��s(r��s�rr��s��s�r���s��s�K�s�sMr������
A@>
G^`TXL5 +!"3!265".4>2!5!��%76&�'5�a&@&&@L@&&@f�/��6&�x'76&,��&@L@%%@L@&ѹ���"�%D@A
GED`TXL+7'"7&5&>#552767654�RGD()08<i=8=i=��RGD()Ar��s)(DGRZF819<h=C819=i=r��s)(DGRY����7@4^^RXL
+"276764'&'&#535#53�ra^7997^a�b^7998^aGTTTT�97^a�a^7998^a�a^89���SS�����-+'	7�d�`�b���b�_�_b?�����-+	Vb<��b��b����b�����	"@Gof		+'!'�_��������_��_��������
�-+'%'77Z�v;bv��[��v�;�w��v��;v���:w�;�v���� (@% Gof
+2"'&'&47676'77'7�ra^7997^a�a^7997^a��:��:��:���97^a�a^7997^a�a^79і�:��:��:������3@0GmnRVJ+35!333535�)�`)S�B�^MTT��ST��T���-+%'	'\�C	9C��E��9C���@Df+'#'�"K�h�IC"I�z���K���@Ef+	737���H�h�I���I���z�K�G@of1+&#!"27654��&m.l9-��o�G@of6+%4'&"3!26���.��
��o��+��s�	"@of		+###s^B^��_�_B�_�_B����"@Gof
+"276764'&'&77�qa^8998^a�a^8998^aq��<��<�98^a�a^8998^a�a^89��<��<��J� ;@8EDopRXL  +67676=#5"&463121�-,MOaaOM,-��K%���ha_CDDC_ah�i��(����
,@)
Eo^RVJ+#53#53!KKKK�9B�_���K������@of+	&"27654��,.m�l�&m����
@of+	62"'&4m,.���l�&m.����&/8Ah@e
m
kp`	T	XL:910('>=9A:A540818,+'/(/#"&&
+"3264'&46;2>56'&'&"&4627"&4623"&462"&462�qa^8998^aq))Q>k?97^a��))8))m((8)'�))8((m))8)(�98^a�a^89)76)>k>eWU13�_)9()8)�)8))9()8)(9)�)8))8)����*-@*GooTXL"!+#3"'&'&5467'2767654'&"\\�C8 ,,IL�KI+,?8AD&(98^a�a^89(&��1kC.@BJXLI,,,,ILXK�,C;QT]qa^8998^aq]TQ��!d_<����m{��m{���R�j��\��������������������������������������������������������������������������������������������*V���(�v�>�V
n��:h�6�		Z	�
&
�b�
4
�
�B��Z��P����J���^��Bf��������p�$p����>r����B��,R� E\�z�s/p�55=DLT_
+g�	j�			-	=	M	c	
Vs	&�Copyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.comCopyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com
\	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnext
ql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-error
warning-alertcaret-right
caret-leftthemelogout��R�jR�j�, �UXEY  K�QK�SZX�4�(Y`f �UX�%a�cc#b!!�Y�C#D�C`B-�,� `f-�, d ��P�&Z�(
CEcER[X!#!�X �PPX!�@Y �8PX!�8YY �
CEcEad�(PX!�
CEcE �0PX!�0Y ��PX f ��a �
PX` � PX!�
` �6PX!�6``YYY�+YY#�PXeYY-�, E �%ad �CPX�#B�#B!!Y�`-�,#!#! d�bB �#B�
CEc�
C�`Ec�*! �C � ��+�0%�&QX`PaRYX#Y! �@SX�+!�@Y#�PXeY-�,�C+�C`B-�,�#B# �#Ba�bf�c�`�*-�,  E �Cc�b �PX�@`Yf�c`D�`-�,�CEB*!�C`B-�	,�C#D�C`B-�
,  E �+#�C�%` E�#a d � PX!��0PX� �@YY#�PXeY�%#aDD�`-�,  E �+#�C�%` E�#a d�$PX��@Y#�PXeY�%#aDD�`-�, �#B�
EX!#!Y*!-�
,�E�daD-�,�`  �CJ�PX �#BY�
CJ�RX �
#BY-�, �bf�c �c�#a�C` �` �#B#-�,KTX�dDY$�
e#x-�,KQXKSX�dDY!Y$�e#x-�,�CUX�C�aB�+Y�C�%B�%B�
%B�# �%PX�C`�%B�� �#a�*!#�a �#a�*!�C`�%B�%a�*!Y�CG�
CG`�b �PX�@`Yf�c �Cc�b �PX�@`Yf�c`�#D�C�>�C`B-�,�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�	+-�,�
+�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-� ,�+-�!,�+-�",�+-�#,�+-�$,�+-�%,�+-�&,�+-�',�+-�(,�	+-�), <�`-�*, `�` C#�`C�%a�`�)*!-�+,�*+�**-�,,  G  �Cc�b �PX�@`Yf�c`#a8# �UX G  �Cc�b �PX�@`Yf�c`#a8!Y-�-,�ETX��,*�0"Y-�.,�
+�ETX��,*�0"Y-�/, 5�`-�0,�Ec�b �PX�@`Yf�c�+�Cc�b �PX�@`Yf�c�+��D>#8�/*-�1, < G �Cc�b �PX�@`Yf�c`�Ca8-�2,.<-�3, < G �Cc�b �PX�@`Yf�c`�Ca�Cc8-�4,�% . G�#B�%I��G#G#a Xb!Y�#B�3*-�5,��%�%G#G#a�	C+e�.#  <�8-�6,��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# �C �#G#G#a#F`�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca#  �&#Fa8#�CF�%�CG#G#a` �C�b �PX�@`Yf�c`# �+#�C`�+�%a�%�b �PX�@`Yf�c�&a �%`d#�%`dPX!#!Y#  �&#Fa8Y-�7,�   �& .G#G#a#<8-�8,� �#B   F#G�+#a8-�9,��%�%G#G#a�TX. <#!�%�%G#G#a �%�%G#G#a�%�%I�%a�cc# Xb!Yc�b �PX�@`Yf�c`#.#  <�8#!Y-�:,� �C .G#G#a `� `f�b �PX�@`Yf�c#  <�8-�;,# .F�%FRX <Y.�++-�<,# .F�%FPX <Y.�++-�=,# .F�%FRX <Y# .F�%FPX <Y.�++-�>,�5+# .F�%FRX <Y.�++-�?,�6+�  <�#B�8# .F�%FRX <Y.�++�C.�++-�@,��%�& .G#G#a�	C+# < .#8�++-�A,�%B��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# G�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca�%Fa8# <#8!  F#G�+#a8!Y�++-�B,�5+.�++-�C,�6+!#  <�#B#8�++�C.�++-�D,� G�#B�.�1*-�E,� G�#B�.�1*-�F,��2*-�G,�4*-�H,�E# . F�#a8�++-�I,�#B�H+-�J,�A+-�K,�A+-�L,�A+-�M,�A+-�N,�B+-�O,�B+-�P,�B+-�Q,�B+-�R,�>+-�S,�>+-�T,�>+-�U,�>+-�V,�@+-�W,�@+-�X,�@+-�Y,�@+-�Z,�C+-�[,�C+-�\,�C+-�],�C+-�^,�?+-�_,�?+-�`,�?+-�a,�?+-�b,�7+.�++-�c,�7+�;+-�d,�7+�<+-�e,��7+�=+-�f,�8+.�++-�g,�8+�;+-�h,�8+�<+-�i,�8+�=+-�j,�9+.�++-�k,�9+�;+-�l,�9+�<+-�m,�9+�=+-�n,�:+.�++-�o,�:+�;+-�p,�:+�<+-�q,�:+�=+-�r,�	EX!#!YB+�e�$Px�0-K��RX��Y��cp�B�*�B�
*�B�*�B��	*�B�@	*�D�$�QX�@�X�dD�&�QX��@�cTX�DYYYY�*������Dlib/themes/dark/icons/material.woff2000064400000026720147361034400013407 0ustar00wOF2-�]�-tTV�\ 	�p
���6$�p�: �M�-��U5��2~��{�ڣADŪE�dm������!̂9M�!��<f0�n���H�f=X�m���b�:�e\��c�!>� �0��7�0�E��W�[��g�$R,I�%�ӳ_��Zvka90t?��v�fP�J�����*j2�F��L��s��ң$�_֔��%4���x`�[�m#��M�����uZ�2Lj%���rښq�� �d�ٺ-���R�Rr�+�w���
��S	�JI� @3~���j�%r�U�mF��IK�AL�&�����^ࢌE9�+�"�o�Õ��tk<��wz�P6����NC`��G�+e�jVy҅ȨO	�,%SQ����F����4@\�������i#�������IQ?i6���Y��A�i8t�6W�^w׮JW��6��k�;����y&�Ѧ
�$�B4O�B$Y	RY]*�n�*@�b��CUӛ�|�v���ɲ��v+z��<���K�
a`'$l�y3�͓{�:��͡t��I��̑S���H`7�8z������⤭"�#���?������H^.�
�*5W��g�$�;��^�{"%��#�����`;��!��,r��[�ؔ�j�[�)���S�HZ&�v�\�PD��K�S�����D��-W����ZX�����Љ����l�5N�!���a�$.�E��V�(����Z�B���ރ��7l7$�Bwr�\�bqZ�JC�����Δ vv���]<�,/+���̌$R�\�������U������[XZY����;8:9����{xzy�����I�fX�DIV��I5[�6���r{w_�:,���HB� ��,D"Q�(B� ��*D
QG4MD�х�F� z}�~�b1�F� Fc�q�b1��F� fs�y�b��XF� Vk�u�b���F� v{�}��q�8F�@�B�A�C\@\B\A\C�@�B�A�C<@<B<A<C� ^ ^!� �!> >!� �!~ ��jϕ_F��
 0�G#$��&Yz����ωܖ�O9Q��
�_T�wh�{`��x�Sb��N��4�<��M'[_�7��{�����8Q��K?Y-�S��	!R�E
}Q� �{��s*̅f�X)�B�dFq`�l�t:�9��:��)��o�Ŷ3��_G��F!��! Y��!�ţ�R/�FK�}�m����VN�3{K;�zd��B��Ѕ
N�b�xc�\O�_0�_B��:���ҮJW`)��el\��A�-u&��SC����At�^4�4&Y`e���maҞ�V�կFZ��W��گH�y�i��'����> ��J�~1(�哐�mQr����'�,��
(*z��GK{$g�PQ��E�x�����ovP�n3�۾b:��io^C��M)k0XD����c��X��J�Q΅z�yM���"�c�eA~"�pA� ��t�X�O��^���1(�1 �q�6�2׈�I(-j��"ST�ߪ�<(h�~�_ӈr�J�h����0B� ��!�B�Y�E �"D6E�슸�`O�hvbv�A�@=@�@}@�@@�@CP
�%YB_A�4j���]�DX�&�	�.��L��X}njj��DV��?�.�~�ZY�z5��t��b+�?o0T���vW�yK����!?=�uq���e�.,��P�y�h�d��N3�+�o����J�:b-�2����P�ҥ�u�O�����TH��9��Z�(��������~��j�lђc4!�z/�[i���.C�K�ʑ���9D�Y�]�V���MǍZ���F�iYi��U�x�ޢ9Hm0�- Azc�j SɁ��S�>�����@隃�":54#������|�d�]$�L�H��x���}U�ҒRk�
�޾@�xV|ae�]�I>NV1u�Xӭ��ܵhYw'P�vm�Kg���BO
�7
�B:��qPuD#��+�X������޹[4Qͣ�W�$�*�\�y�q�>w��)���)x��!��/�7�5�|���H_=�D���d,g�
�`��:M�[kQ4>yFZ<� �xA'@4y&@�N��l:����P��<�`��������[�Q��:�
`�������ޅ"��މI5���?�%b�::̕0�h��c~�N�/��W
��	�/]_aW��k���c��S\�hE�D7���ӥ�
�U����S�y�~w��	2���e��Y�bB��Q�(��!�Q�Bt��XeNܰ�����R�IBԞ3^�k'Yf�Ne4y���u7�P�l�wMi,<�xc6!��'1����јw�U�&����ȿ/e��P�Q��˰�����R��3k�ۙS��fױ3aQ�W������^��$Β}9���-�D׭��l5y�g�'I�Wf�Cf��>#�j6gUf׷5�aW.��L���Ui�2w� k^/Y�&����eOX�ߜ'��Uϗ��@5���P�,2���}��Ŷ_@��|���y��	�$ơh�����z�,�\g:G�kj�b�BBF��~nE5idRv��A�8L���f��!���Kq�a��I��p��TI��Z5t���m���Ikl�(�w~��Vf8C�{�	DG�!_���9it�k�`6_A��:r��|F�K�6n��I��\��1��哌�RVI��X����SH	u��e���T�+Q�J���iMb��b�]�e�ȇ+7vW�a�H�d�wL����e:^�o��1+1xak��`
�Z�����|$��#��@�i���7S�0ډ@����,������+?{Qi��ʉR�r^)u����J,�oEH�k]��t���� �q+a����Q����T��D���u LI� ��lg#Q��	e�'R@��ku_="�����T�E_��HʋAR�M���TC&�b�s̔��ݾ�F:�(���h�j�g,�$}�{�-H�Ô�	��EG6�
	G�'m,��w� �pZ�Z�祝�Eb�X4�\���&'0k��n��br�a8�Zx �9�~�� �=9*xL��md�e/,���0T~��x���������}�.va���������������?HX�����N�g��AR:@;a��I�j3��$�%Ʊ�%����e�����ѝy�W(s9`]�����O8����]KS��oz�(�O=f/��n3�	�27����P6�pU�`�{ܥ-��F�,҄��\%����u�ئ���3��]b�.yB�<�ϳ�,7}~:Cf���K��U@��עጜ�_��/��'
�V}��É#��D�t^"�8M�%]��f�F��
���I߼D8$k~^	?u)�E�VMy�hu�5)�O��m�Q5�a��|���f�Al�H�������k{؍V��$�佋6:�N#�.�!���s�v"����n+����KrBu�h��ٟ��/Uu��jcJ�@ťz
2:�c�;׼�ٍr�k�Z�fֵQ�
Z��^N"��Q��2⢖�}9}��Wo���F�g���vO�W�?��)5�us���k�N�f��\�5Z�1O�p���v�U�A�>{�8���NC��Kw�ʑ�v������m��^��@�z���y��H�/�m�^��s6\IQ%Zh��A��/�Uw�+0��׬���ϸ�ߵ[%=�Lv"��B	���w���O�a�9Iik�T�:m�7A�J��W��?̽�߮�r訟��f��_u��������k���(k�C�}������ٛ�H$7W#�Y����G�PRő������%7�*�)�IB�-��cϋϡ��=��i��;B'�x֋:�����N��V��G�~Z��(A�C��A#���ج�)P:P�����*����R�x)��R�R�{؈��-|XN����`��X=�|/��>\֌X9�.�»U�g�h߻r)A�F�P���d����x_Ni#�	�,Ӈ�o?�C��_FwY%��)�,ig�rY"�\r��	�1.#d�9�ӧ׫ִ-�T��$�CU�XB1/�|K
P[���Y�0�Ǥ��6R\���\��4�l��d�)�g��������li֐fUh����GF�Eb�(���(ݾ%�����gx�XD
������V����e�g2�4IB��"�T��&���_������I��:`Ɏ<e�
Sq�|&{���B.�Ǥ�����
�׾4�*��p��-���T X��P�r
���C���,��ccd��ӧ�<��*�0wnӨ?
����lf^׀��G�i�b���5=�#}����
�(Z������z���./#4��܁��!�-u��X�a��M) edˍJ�	
K�r3�2�����.��ǁѸ	�x�N�m����v�Ҳ!��ٽ�o�t��t[�d��6S�Wmr<�sε����i2��ff���H�$N'�!���E�j�<�<�<
��	�$f���,��^ˮ�2����:����"d9~����
��O�o�;x�r���Q_��wq"��먮���e��<���h=[=1N�+��Z�^׼w�W��:�v���>�����3<�6�9�~x'��5㏙�5�n�	���I/��<�l�9lf^�<{G�VFK?����A�g�=+<7�e�!���4�iE�,>���/�ު�ə�����z��$�|�lB�[dv�Q�ڹ�8$"�#��d�NS�S�7�r���U�����FnR�ԛ)�5L~�5�g��\o�B��86Ԯ�	��W&�Nd��H�D���jG�b�9����k��T������,F��)�.a�[��U��Ӳ�����~�6�=��>ұ/�r��1|.ô�3��cO1��d�C��)ZLO��J��M������9�M���ܔ�+�!��\7��������D{��H@��_m�T�߫{?�ӏ�|�M�����%3`�UR�-�3�� �mi�s�d:|ux��!�'i���pZ��<�/7�:6d�f�$�}z�������5�*1�D�z�M%���>�48��{�g&1��Jj}��.# pm"=��7�9n���L��L�|"#�KJ��.���'%y�G�$S�$?_�d��MM�D,혿|��eQK�/��ˍ�*����W��{zP-{>8�y�����K�QWU�w�g��6��t�q�2û���ꑂTI�bIul�*�L�$e�׿����E^�F[l�[�:�x|Ԩd�����m��+�Y�sv��`���84R�z�����OmD݌��pP�k!!�V�1U�9k,��򟤅�%%I2���B����^�MB�@��2�_\�1��!�\%G�`�Xy��%��O�yK�C�U�c��F.��w,F4�R�H�[�a�B+��Ku�W%�Vp����� �꼩(��WO!2I-6!a��C�����c���@ty��FPъ{�>�쟠l�����l9�lI߉�'N��~�,�=y���<Qxѭ�7h9y���\�cG�#�r/S�B��Rŗ�.�l��z
���D��!�"?+,,��kg���yn��e��<�*���R�ŰZ����s�4s���`��ٞg����0����f�`XD����t�I�CD�ڤ��Ɲ
�+|��Y��b��Q%p�
����]1�n9�0N��{Xl�����B�%�M�@�T*�a5s�D�T`�����{�,��*��sa�O�"���J�h݃6�0D
j�M�'��W�L�����7G����.ZD~���� ���
[��v�<���?qء�j������C��R�l��6���.�ՂJu(�4=�vy�����N���\kj]I��K���e�_��{|Vq���+~�^pu񤲊�۔V��
�5�̦��s��+zk-r潯;|�G���u�{Tvk���Tړ�ϯ��� H��	AФ<�"�$5���<1�J
J
\�a}uͦ����$�D]�g���+2(P(_�I���!��q�3�ł]2��,�F��cv��D���'٤���s�u�CTj��Pz��P�Qڹd�W(ޭ�=^�W�q���O�ׯ#���L4s��a��D���z�Gz-�c�kόb�5SOEꨙ�n��A%��Yoƫ`���˅���]w�䙰��������Z��|�;m��X�����ҽ��m�2�K��e�÷�}�2FLpx<vq������J>��|����'�E��!���P��B9���
��g�����J:��LX��7��(�x�M�x-���4�C�*_I%N��V��:1�*(�P:���}߅��p��psnۗ��,wøʂܴ#1 b})jn�����H:����+�6��+�nĺ:YI��y�?����G�x*�����V��T�{��|�t/jʙ�=3'i�ʋ��E�x1�xx�����AK��8(v+5��I���r5*�tv/	���a`2�#O�t"���{r���{���7\�p�R��%�
�aV���=���Z�?�:����E�2(
���@:U44|n��W���m�(�/	T�[,��%�11@|FlL)�Ÿ��gF^B�ʵ�gU5[4�����"��-u�r�"Vj:��bw��o�|
��Q(I00}�hSS��Uꚵ��$ij��~?��&�Fۏ]סn�M����T�3������8Rc�uHps���-@$�S��J�s`g��{�A &���_:�I�.Η���=�LTVڸ���~>����~����	��G��u����~=�/8���*�84���^��#��U)���+��x����+�c�m,}�s7�+�bo���j��[a
v�}��/��e?l��ї���?G�O��٢��v	-lΔ��z)�P�-�uaƈjKp�d��]ׯ<�*VQ�0�v�-��s�UEl-%:�����`~���sY
VJ��?*L�e�*�K��Q�4HWLjc�t4(4��hڕ��_�u�y�A���v��{ە��J^B�P�qIl1�ͯqm�{��<Y@M@,��e6���Al����he�q	�%Ҍ�zh=��PW+�1A;0ҳ^����f��\a�I`EN�ueW>`$Y�b��w�y-+�c<%��!��x��?����e+�6��l�?c5���a�5���FF��H�}#cg�{S�R ����jzon�
dc�
�k!�����iӾ�I����`��p
B�9"�v9T�N��8�^��N^�o_��ᦒC�]uR���R@��m�k�����8�y˽e�U�
�/�B
s�DU倊~���5ң �����Ԫ��ݺkjb�:�н<����j` �0�)(��R�3"��k>�N������L�;�I��<d��g�sNkZ�M�
C<<���]_�6��[�p�S�"��@s����n~�a�5ҡh�kj߉)��T!le�-49��iw�
���@��/ r�El��<CMv-I\Kg��K��������6��0�=F	��	n�M���֘k��W�#�alθE�ZsPBqR
Y)���4�ٮ��
!]�Vcw$V���eW�����Q�3��wه^�o	q!�^�_gb��
��i_�d��׌rH0�F�B�t�
N����f�Jd7-]�j}�ѷҸ��,_Ś
#�9�DBZ䄻�7?�;��V�*O�������bG��*�}��>�1�j�DI�g.Dȭ.�LB`kRLZ�7��K'�����dmn�:��p	����t�E����ʦ�3���n"��1�8�8'%�Lif�!ROX��u���ny}�W�r�\��żZ��᠜t'>�4��ii�M���ȑ@	/#IU&�B7���d�B����O'�G��aI�^�r}�I�"QS�)�Ȱ������gZ�ڜ��9#h�7�A�(�b	�21C�};�Us���|��v����8y;Jb�������#�u���1۩�'0��G��V�߬�j<f�Ko��x})��@JO��[�$�GE��֕�R�J.����m�l}t(�CX���\��Ȫ�W��ָ��z���SQWR�T��y�DD�'��줩S��A(�)x�-s���ʐ�t*\̧L�!�$<!�ݦ� L啨&С��wѻ�t�Q��p�L��}�a
q�R�Vo^��p
L��0=�u��jdݷ
~c/v�+B�)>����1��I�������0T8�a�nm/�I��ܠ@�L�x�숺�D�G��=��D�Z�T.?F�ۯ�sj��P�h�pF�}A;3I�beP,^�3vb�+:���Pb��va*K�qAZ�����?.�P���voEi5�5�������~$�O����]F�^�a�
�nc��Ƽ�}��V9De��V���C.�d��,����C|�	�~���uw�Y���ח��r�-�mG"��p4Ӿ�h���$���YR	��r�y�����n�وR�Մ�q��MW=���w���.
�`���`�z���V�B<�<"���ƒ �<.��u��4|�YU��5 $���x^ܢ�4�\&���H*�D��||<=g�rwG"�2��H��\�B�*�E��qH̕Jb�QqB$��+�<�8R(�8"Ω������A9y'+�Ե��6n(,_�+��v�$�����E4N:��N��J�A�[$<��
�y�*-1v�*0��MA��\UkUiMq^"z"�y�>��(�Bh�i�۱��t�5���u7�N��C��H�Ԑ��Z�Ԫ�!�1D��=M�GEʸ&@��\K��:�Q
|JT��N�H����e��e������(
l�V*�X�b2K�I9T��kQ���͕uR?�;��H�ff2L������� rd��RM�u
��Ν&�C�+=㟥�E��AW��LJ�[��Z�c)K���H�.�k���-ܹJ|5p���
b�/i"�k3l����ma��6���ʹ�;�JY4m��5�b.@rQGve�<-)t��c�1�]L��+�E����q�k��c��I��Hh
�A��b��~?�kQl8z���80U���n0�eL,��aUw�^�I</�Rq����@'�Vu�	ܚ�(Ż	�??�":,�HƝϑ�o
�&��#��#�伾%ți�_�讎[�}�b�&-��:���8UI���	kw��:�sN�Bsw��nj��￐G�[�U��
�������(B��>�M�
%��q8<x"��r�T
�	��}�ȵ�T���ޟ����x���jssaX��4*J(���r��6�5(���j�<8'����n.#M��7����(�%��F�&b����X!H�#��0���e���܋c����ȯ!�A�+qB�{+X�Pb]�b���u�}(҃�e�|6�%�]Vؾ�m�[f�7� �+��؁f��mGrJ"��Z3���(��n�ᦹGy��_��]!^���E�h^�id
��|��݋E9��Iy�jaE%���6�:!�ky?U�ԥ��b-Y���?��yR�]�C�ƔM��J�#���z�{ه�����u;_.�T�A?���޷�g��OC2$�SRE�0��ez�D@>���AQ�����b��˖�]�d�vH�W*�c����K�N��G4=�[p�#ؼߏ���5*�Ms��c+�(m�q!���r��@D�Kň���]zI>F(F튀���W(�y����4t��C�͢�/�]D�&1���;	_�E���Г�𧅁CQ�ܖ��%@?���q!Q�Fdy�K9�Kٮ��b��r�Yˈ\7���|(�򕅺D�Ru�P��ʟ��nY5��.q��KR��h&q��Oh��3��D �c"��,��j�	���~���V''Xc<��|�)�H)�l�@,�t����PZV'�����>���]W\�K�kj���j�,1un����xQ_�BI�uA3Rb��aN$>Cy g�H�]C ?;8�7��=|��4&�4� ��t>�É6q����~���cF����|�	��
�eW"�څF�25rBeXk+�nO��o_�^/ΏoNn�F�����ľ���ۓ3��A��쨃�S5Yo4ܝA�j2�;���Rb�
UK�
MW��K�a��v�lŲ̕R��$j�����1aj��_��X�̾�"�,�w��`���a�֥�сC�y��ܭ__�,��̚�����-�J�S҅��?���:��ऀ�W��I�`��J�^�!�r&��ɚ�d�ق���j�)�\e>&@t������[����W߫�V��H�!g�!�2��q�~��
ED�
Pzqݎ1u������6�
!i/[���N>Ng��6�b��Qmz%��ݭ�"�d�4��#�b��|��4g9$P@�Y�B�6�ƒ	xr��;�bJX���'w
g~�n�,��D�؁�o*�c��&��׈���p��@~vx�W�|��/�#̆��H�Y�a;�X�͑��74����*�ʞg���o��c���ơ������s�_�)��Q ��߉��$�S.�#�i�uB�|��0���!��=6�s�2ǰ]�����"�ӛ
��㻛Zn�P�&
�p�#w��-
Zx���M��hn"�UT|75����I���k7ip���j�~|��߸\$�Qͣ�c�I���݋���c"��6�,�|6�I���s�
�,������dti�Ajb2/)����|���W���l~��"|N�Q�|z�$q��ER�<BL=6���;�{s�<gÛ�"̵M��V�٠��>y�8�q���P�
�#�¢�&��'Z
���7/�/0�/NI�������ࡃ\:���Ϯ�MA����!^-�������s��
��sQT��da�W0���r��_�m�G�CF��0eƜKVXe�u�����V����Dc�D2��ds�B�T�Tk�F�I��u>ĔK?�S��uۏ�k��8r��aXNV����d�(�� [?=-��W+jH�3[�B�*L݄p�Ί�
�G��`rV��,�~��Zr2�4R����x^����w���b:N�V���TuKUg�t�c�a^+8�,�VB�d�$�̍t��9=���:s1�����A�ijK�xJ^�:4������m� �Ly�
x^��`A��'ZU���"��ib�����Sd7�
&s]6��/�%���z��f�´`�ڄ�*6��M������7=s��Ntٌv`7W�J7׹$��T���W��}2�S�Sb����h���T�!l[dqnJ"��
���4��t/�zZGkg��pz���ʆ��n�6�Q��T� Y��	�Z9����Bڬk��#�i�s䞛�L�|G��7�ۙ��w��񈅏�ߒb�O�%�~�W}�A�9PYٌ�g�������[�:�xدym������b��'���F_�Ylib/themes/dark/icons/material.eot000064400000057200147361034400013150 0ustar00�^�]�LPd!ԗmaterialRegularVersion 1.0material�pGSUB �%z�TOS/2> I�PVcmap���\cvt �Q� fpgm���YQ�pgaspQ�glyf3Qk@�head��H�6hhea<�H�$hmtxg`H�plocaRJ\�maxp��K namew��K8�post��N�prep�A+�]P�
0>DFLTlatnliga��z��z��1PfEd@��ZR�jZR�,,
��Z�����	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[T[������������������	�	�	
�
�
����
�
�
������������������������������������ � � !�!�!"�"�"#�#�#$�$�$%�%�%&�&�&'�'�'(�(�()�)�)*�*�*+�+�+,�,�,-�-�-.�.�./�/�/0�0�01�1�12�2�23�3�34�4�45�5�56�6�67�7�78�8�89�9�9:�:�:;�;�;<�<�<=�=�=>�>�>?�?�?@�@�@A�A�AB�B�BC�C�CD�D�DE�E�EF�F�FG�G�GH�H�HI�I�IJ�J�JK�K�KL�L�LM�M�MN�N�NO�O�OP�P�PQ�Q�QR�R�RS�S�ST�T�TU�U�UV�V�VW�W�WX�X�XY�Y�YZ�Z�Z[����
%@"Eoof

+5333	3���}�_�_}��Mw����-�(@%GEDRVJ+!7'	7'!-�%�8��86����7���6�-�'@$GEDRVJ+!!�6�#��89�7�P�68-�@Ef+%#'	'R�8899�&��89��8���@oof%5 +#"3!2654&#!��#11#�#11#���1"�"11"�"1��k�GK�PX@#cmnTWK@"omnTWKY@
	+%!"&546;!2!!�!//!�O!.�fU�Z*#/!�!/P.!�w:��!�j��GK�	PX@(ec`TYMK�
PX@0mkk`TYM@*mk`TYMYY@!	+!2#7#54.#33!'!"&=3b=r��s4�;�s5M=��sgK����5(��5K���ZK�PX@c_RXL@o_RXLY@
+%!!5!'#"3!2654&A�f���S�#11#�#11d�SS1"�"11"�"1���K�
PX@-oec	^RYM@/omk	^RYMY@	
+!'#"3!2654&##5#53533A��S�#11#�#11L}T}}T}XS1"�"11"�"1��}}S}}��A���GK�
PX@0	ome
^RYM@1	omm
^RYMY@+3'%!#!"&5465##33535���M�1"�"11�S}}S}��?��#11#�#1��}}S}}S��9�	^K�PX@$cmnRWK@#omnRWKY@	2+73!265!%#'##!�6&r'5��Z�.�-��'56&,�..\����	
H@EG^^RXL




		3	+#!"&'!535'7��1 ��!1�hu^u�Y������	 ++ �X�n��ů�Ջ������)2O@LGm``TXL10-, 
	))	+"#7#47>2#"'3276764'&'&4&"260aSQ01w��w&%�@?%&&%?@KSM8-p=aTP/11/QS/B./A/�1/QS`��L@?J&%?@�@?%&48$%1/QR�SP/0��!./@/.��\�>@;m^^RXL		 +!"3!!"3!2656&!!��:,K�p�`,,�,, �`��,��M,��,,,������"+4=B�@�?@
	
GA"Fm
	
	m		km`
``
T
XL>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625�-MZM--M-'bb(-M--MZM-b$}�e"11E00#"11E00�

�S$(-M--MZM-bb-MZM--M-'b��*�1E00E1�1E00E18

��S#*��J�&N@K`
	^^RXL&%$#"! 
+#."#"3!2654&!2"&46!3!53��:J:�,,,.�� ��K|K�!**!,��,,].  �T_ss�����-+���\����-��*5���V�'5CK�@1
	=G"FK�
PX@N	e
		
ee^	
	^

```RXLK�PX@H	e
		
e^	
	^

```RXLK�PX@N	e
		
ee^	
	^

```RXL@P		m
		
me^	
	^

```RXLYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4s�����jI
Y��KYv


�sr��\�y^\
��\�[
��Q����%.26s@p#G	`
^^
^TXL33&&363654210/&.&.-,+*)(%$!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35�SSS0$$/SS��SS/$$0����M�}}�6��S�S!!S*�*S!!�)��S�SS��TT����@
Gof+73'64/&"27S��2l&
U�*j��(&
lU�+�z,I@FG``TXL! '& ,!,
		+"27>7.'&".4>2"2654.�]UR}  }RU�UR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$�'4WfW44WfW415 1BB1 5��J�
#@ Eooof+%!3	3!!`&��������R�&X���xb��L�
3@0GooRVJ

+#!#!5L���X����&���bbb����-1G@D`^^	T	XL10/.$#--
+%35#"276764'&'&"'&'&47676235#�TT*ra^7997^a�b^7998^aqZNK,..,KN�NK,..,KN�TT��w97^a�a^7998^a�a^89�.,KN�NK,..,KN�NK,.�S���� A@>Gmk^RXL  83+'.#!"3!2656##5#7!�A
��	A6&�'5�^����?&,,�MM��'76&C��\\�..���� ?@<Gmn^RVJ  83+'.#!"3!2656'35337!�A
��	A6&�'5�^������&,,�MM��'76&C��\\E..��#'+/l@i	
^
^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S����ۯ�ݯ�ݯ�ݯ,���m��ۯ�ݯ�ۯ���w�����+����w��v������������A@>
^^	R	VJ
+735#35#35#!5!!5!!5S������L��L��L��F�(�F�F��������-N_@\		m		k
``^TXL/.CB6532.N/N$#--
+%35#"276764'&'&"'&'&476762"34623476767654.�TT*qa^8998^a�a^8998^aqZNK,..,KN�NK,..,KNZ-M-T1D1

T 
-MdSH98^a�a^8998^a�a^89�.,KN�NK,..,KN�NK,.G-M-#11##$-M-����!%48<@IMQ�@
10GK�PX@s

em-e&%$#"		^('

^)^+*^,^/!.R/!.Y M@u


mm-m&%$#"		^('

^)^+*^,^/!.R/!.Y MY@NNJJAA==9955&&""

		NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 

		
0+"353533533533533354&#35!353#;57335!3535#326=35335�"2T)TSSTSST)T1#�T�T�����2"��T��T�TTTT))#1�5TSS�1#))TTTTTTTT))#1�SSSS)T��"2��N}TTTT�SS�)T2"))TTTT�.,>@;
`^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.�#;#��9`88`9��#;#�N��w��#<##<#��9`88`^#;#O8_r_8O#;T�O#;F;#O8_r_8����)>@;GD`TXL$#)))+%#'6765.'&"32677%".4>2�%
#SFH�IF)++)FIT9h)�G��;b::cub9:c�*268T�)++)FI�HF**'$
%�G�:btc::buc9��a�
!k@h	GEDop^	^		R		V
	J!! 

	+7/##3#'3/#55#5!3�����t _}z�d�\
�¯&��{���Ƅ��n��j�U((((��4M6��M��R� &+@(E"Dof%$+'5.4>7&'67'767#��V�())(�W>d::d>�
:>�cH?2q>>	Z7Ȉ
bKN�MKa
Z
Jp�oJ
�,bI?,@��Z8?#a>QZ6��R�*$@!E"!
	Dof+'36#7&5&'55>764'.>>	ZX
:>$$L_<0���>ee>V�())(��?QZ7�bI>6�9Z
$ S��ĭ
J79�87J
Z
bKN�MKa����'F@C
o	oT^XL!
	'&+2+32!!+"&5!5!46;5#"&5463�#11#�)$�����$)�"22"�1#�`"2SSSS2"�#1���!.*@'#G`TXL/*+6'&'.7676%67676.'.�76]`�b_9;76]`�b`9;�/.LNZ9h)�%!"~�!"/-LN[9hVqb`9;76]`�b`9;76]`[MK*,'!�6+h��+j9[MK*,'��A�/@,GpTVJ
+!"3!2654&3'�"11"�"11���hh�1#�f#11#�#1T��??����@

	Df+%73%'}��7#�6��Ĕ���.S�wN��q�S�k��f����"@Gof
+"276764'&'&'7�ra^7997^b�a^8998^a��;�<;�97^a�a^8998^a�b^79���:�=:�s2@/^^RVJ+7!5!5!5!5!5SB��B��BI\�\�\\��@of+%3#3#!3y�����L�~��~��~����H@E
mk	^RVJ
+7#!5#3535!#!#33�w*�ww���˳*w��w��w��w�5w*w�*����C@@	op
^RVJ
+733!#!#3535!5#!5S�v�ִ�*vdw���ww*q�*ew*���ve���w��-�@GEof4+773#!"&-*��+�:���.3$��$4�K0KMl<��
���$44����0@-GE`TXL)!%#+
532#!!276764'&'&+w��$�4V11V4� �`RQ/00/QR`����}1VhV2�00PS�SP/0����0@-GE`TXL%!)!+#"3!5!".4>;%q�`SP0000PS`�!5V11V5�$�}0/QR�SP/1�1VjU1}�����GT7@4$?2GooofIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*�#$hSZXSh*�#$hS�n(C''CPC''C6
E�*l

n*�DD�*n	
n*�$'CPC''CPC'��>@;Go^RXL	+%5#535!'#"3!2654&G���)��S�#11#�#11d}�}�$S1"�"11"�"1����!%)-159=AJSW[_�K�PX@v

e9#8  e.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"K@x


m9#8  m.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"KY@�\\XXTTKKBB>>::6622..**&&""

		\_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 

		
=+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335�"2T)TSSTSST)T1#�T}�}T��T}�}T��T}�}T��2"))�))#1��SSTSS�1#))TTTTTTTT))#1�SSSSSS�TTTTTT�SSSSSS�)"2T))T2"))TTTTTT����#'+/3�K�
PX@>e	e
^^
R
YM@@m	m
^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}��T}}"2N�����TT�TT�#1T}}}}T1�C}}"2T}}T2T�fT�����;�@�opR	^	
	
^^^
^R

^VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53�\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\�\\\\\\\\[\\[\\d\\\\\\\\[\\[\d��3�",1T@Q`		^
`RXL.-
	0/-1.1,+'&	"
"
+%264&"#54."#"3!265.%4>2#!!�!..B..(5[l[5'!//!� //�w!8D8!�i�%݃/A//B.gO5[66[5O/!�u!//!�!/O"8!!8"O�#��u��3�",C@@``	T	XL)($#""

+#54."#"3!265."&462#54>2�(5[l[5'!//!� //��!..B..Z�!8D8!�O5[66[5O/!�u!//!�!/��/A//B.gO"8!!8"��3�*/[@Xm`		^
`RXL,+
	.-+/,/%"	*
*
+%264&"#54."34>2!"3!265.!!�!..B..(5[l[5K!8D8!��!//!� // �%݃/A//B.gO5[66[5"8!!8"O/!�u!//!�!/�#��u��
@E
Df+	>3����p'X��uE� ���zr�����=@:

^^	R	VJ+#535#53#535#53#53#53������������������C���������������-+'			7�T����TN��TMMT���T��NT����TN��TM����)@&opRVJ+!#!5!3!���v��evg"��evg���4@1GEpTXL
+"'!'>327.'&PJG9�o�+k;F~[`wQT�3����%(:fAU�%&��@RVJ+!5!���B$v����(�K�PX@8oo
	e
^TVJ@9oo
	m
^TVJY@2! %$ (!(

	+!!3353353353353353!%2"&46�TBT�B�)**)**)**)*�6\$$4%$�����$STTTTTTTTTT}}$6#$4%��A�8Tm�p@mD9_UznGF`{F
```	`		T		X	L��usgf[ZNM@>*)88+"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5�}b2## +ez?r^##\r?640$

#dm40$

#d�	b}?r.	
&#03p30E
_^


%#brb#
b}?r.	
'#brb#
�('(�,# &''&�,#&T		

	
		

	�	(	7
				 
o''6


p(6

����@
	-+%''%5'
7'77'���^�����_���M���{}}8<��<�������&�����������A@>G	F
DooRVJ+%!!7�����
����������1'����E���Z'Aq@n$ ?,	Gm
mkkm	`TXL)(><9852(A)A#!''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+�&44& 7 CZ;/$>$
;),<+F+H)!2S0�(D(:'+=5J4!6 
 '��%gqz�i@fMB�oUF)�2G5Foooo
	`TXLsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&�75M
03A?56

((0
|N�<S*i@1-
+^=$1!@)-10%f+	

-�'%8%%�''8'(OmD%#	7#&#%<	V`.IYF6~�=
.4.7!�T
*,'	

;	&�&7$#&&6%$5(
7!
����5J@Gmk`^RXL0/,+)(
	+"276764'&'&#537#54?>54&"#4>2�ra^7997^a�b^7998^aGTTU%	
T04
0E1T-MZM-�97^a�a^7998^a�a^89�;T�%,B54#00#-M--M-1����`@]	
GEDoom	n
R
VJ
+353'3#5535'#3'##7#��s��s(r��s�rr��s��s�r���s��s�K�s�sMr������
A@>
G^`TXL5 +!"3!265".4>2!5!��%76&�'5�a&@&&@L@&&@f�/��6&�x'76&,��&@L@%%@L@&ѹ���"�%D@A
GED`TXL+7'"7&5&>#552767654�RGD()08<i=8=i=��RGD()Ar��s)(DGRZF819<h=C819=i=r��s)(DGRY����7@4^^RXL
+"276764'&'&#535#53�ra^7997^a�b^7998^aGTTTT�97^a�a^7998^a�a^89���SS�����-+'	7�d�`�b���b�_�_b?�����-+	Vb<��b��b����b�����	"@Gof		+'!'�_��������_��_��������
�-+'%'77Z�v;bv��[��v�;�w��v��;v���:w�;�v���� (@% Gof
+2"'&'&47676'77'7�ra^7997^a�a^7997^a��:��:��:���97^a�a^7997^a�a^79і�:��:��:������3@0GmnRVJ+35!333535�)�`)S�B�^MTT��ST��T���-+%'	'\�C	9C��E��9C���@Df+'#'�"K�h�IC"I�z���K���@Ef+	737���H�h�I���I���z�K�G@of1+&#!"27654��&m.l9-��o�G@of6+%4'&"3!26���.��
��o��+��s�	"@of		+###s^B^��_�_B�_�_B����"@Gof
+"276764'&'&77�qa^8998^a�a^8998^aq��<��<�98^a�a^8998^a�a^89��<��<��J� ;@8EDopRXL  +67676=#5"&463121�-,MOaaOM,-��K%���ha_CDDC_ah�i��(����
,@)
Eo^RVJ+#53#53!KKKK�9B�_���K������@of+	&"27654��,.m�l�&m����
@of+	62"'&4m,.���l�&m.����&/8Ah@e
m
kp`	T	XL:910('>=9A:A540818,+'/(/#"&&
+"3264'&46;2>56'&'&"&4627"&4623"&462"&462�qa^8998^aq))Q>k?97^a��))8))m((8)'�))8((m))8)(�98^a�a^89)76)>k>eWU13�_)9()8)�)8))9()8)(9)�)8))8)����*-@*GooTXL"!+#3"'&'&5467'2767654'&"\\�C8 ,,IL�KI+,?8AD&(98^a�a^89(&��1kC.@BJXLI,,,,ILXK�,C;QT]qa^8998^aq]TQ��!d_<����m{��m{���R�j��\��������������������������������������������������������������������������������������������*V���(�v�>�V
n��:h�6�		Z	�
&
�b�
4
�
�B��Z��P����J���^��Bf��������p�$p����>r����B��,R� E\�z�s/p�55=DLT_
+g�	j�			-	=	M	c	
Vs	&�Copyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.comCopyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com
\	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnext
ql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-error
warning-alertcaret-right
caret-leftthemelogout��R�jR�j�, �UXEY  K�QK�SZX�4�(Y`f �UX�%a�cc#b!!�Y�C#D�C`B-�,� `f-�, d ��P�&Z�(
CEcER[X!#!�X �PPX!�@Y �8PX!�8YY �
CEcEad�(PX!�
CEcE �0PX!�0Y ��PX f ��a �
PX` � PX!�
` �6PX!�6``YYY�+YY#�PXeYY-�, E �%ad �CPX�#B�#B!!Y�`-�,#!#! d�bB �#B�
CEc�
C�`Ec�*! �C � ��+�0%�&QX`PaRYX#Y! �@SX�+!�@Y#�PXeY-�,�C+�C`B-�,�#B# �#Ba�bf�c�`�*-�,  E �Cc�b �PX�@`Yf�c`D�`-�,�CEB*!�C`B-�	,�C#D�C`B-�
,  E �+#�C�%` E�#a d � PX!��0PX� �@YY#�PXeY�%#aDD�`-�,  E �+#�C�%` E�#a d�$PX��@Y#�PXeY�%#aDD�`-�, �#B�
EX!#!Y*!-�
,�E�daD-�,�`  �CJ�PX �#BY�
CJ�RX �
#BY-�, �bf�c �c�#a�C` �` �#B#-�,KTX�dDY$�
e#x-�,KQXKSX�dDY!Y$�e#x-�,�CUX�C�aB�+Y�C�%B�%B�
%B�# �%PX�C`�%B�� �#a�*!#�a �#a�*!�C`�%B�%a�*!Y�CG�
CG`�b �PX�@`Yf�c �Cc�b �PX�@`Yf�c`�#D�C�>�C`B-�,�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�	+-�,�
+�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-� ,�+-�!,�+-�",�+-�#,�+-�$,�+-�%,�+-�&,�+-�',�+-�(,�	+-�), <�`-�*, `�` C#�`C�%a�`�)*!-�+,�*+�**-�,,  G  �Cc�b �PX�@`Yf�c`#a8# �UX G  �Cc�b �PX�@`Yf�c`#a8!Y-�-,�ETX��,*�0"Y-�.,�
+�ETX��,*�0"Y-�/, 5�`-�0,�Ec�b �PX�@`Yf�c�+�Cc�b �PX�@`Yf�c�+��D>#8�/*-�1, < G �Cc�b �PX�@`Yf�c`�Ca8-�2,.<-�3, < G �Cc�b �PX�@`Yf�c`�Ca�Cc8-�4,�% . G�#B�%I��G#G#a Xb!Y�#B�3*-�5,��%�%G#G#a�	C+e�.#  <�8-�6,��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# �C �#G#G#a#F`�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca#  �&#Fa8#�CF�%�CG#G#a` �C�b �PX�@`Yf�c`# �+#�C`�+�%a�%�b �PX�@`Yf�c�&a �%`d#�%`dPX!#!Y#  �&#Fa8Y-�7,�   �& .G#G#a#<8-�8,� �#B   F#G�+#a8-�9,��%�%G#G#a�TX. <#!�%�%G#G#a �%�%G#G#a�%�%I�%a�cc# Xb!Yc�b �PX�@`Yf�c`#.#  <�8#!Y-�:,� �C .G#G#a `� `f�b �PX�@`Yf�c#  <�8-�;,# .F�%FRX <Y.�++-�<,# .F�%FPX <Y.�++-�=,# .F�%FRX <Y# .F�%FPX <Y.�++-�>,�5+# .F�%FRX <Y.�++-�?,�6+�  <�#B�8# .F�%FRX <Y.�++�C.�++-�@,��%�& .G#G#a�	C+# < .#8�++-�A,�%B��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# G�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca�%Fa8# <#8!  F#G�+#a8!Y�++-�B,�5+.�++-�C,�6+!#  <�#B#8�++�C.�++-�D,� G�#B�.�1*-�E,� G�#B�.�1*-�F,��2*-�G,�4*-�H,�E# . F�#a8�++-�I,�#B�H+-�J,�A+-�K,�A+-�L,�A+-�M,�A+-�N,�B+-�O,�B+-�P,�B+-�Q,�B+-�R,�>+-�S,�>+-�T,�>+-�U,�>+-�V,�@+-�W,�@+-�X,�@+-�Y,�@+-�Z,�C+-�[,�C+-�\,�C+-�],�C+-�^,�?+-�_,�?+-�`,�?+-�a,�?+-�b,�7+.�++-�c,�7+�;+-�d,�7+�<+-�e,��7+�=+-�f,�8+.�++-�g,�8+�;+-�h,�8+�<+-�i,�8+�=+-�j,�9+.�++-�k,�9+�;+-�l,�9+�<+-�m,�9+�=+-�n,�:+.�++-�o,�:+�;+-�p,�:+�<+-�q,�:+�=+-�r,�	EX!#!YB+�e�$Px�0-K��RX��Y��cp�B�*�B�
*�B�*�B��	*�B�@	*�D�$�QX�@�X�dD�&�QX��@�cTX�DYYYY�*������Dlib/themes/dark/icons/material.svg000064400000062130147361034400013156 0ustar00<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="material" horiz-adv-x="1000" >
<font-face font-family="material" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe800;" d="M417-4v250h166v-250h209v333h125l-417 375-417-375h125v-333h209z" horiz-adv-x="1000" />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<glyph glyph-name="theme" unicode="&#xe859;" d="M500 767c-229 0-417-188-417-417s188-417 417-417c38 0 69 32 69 69 0 19-6 33-19 46-10 12-17 29-17 46 0 37 32 69 69 69h81c127 0 232 104 232 231 2 206-186 373-415 373z m-254-417c-38 0-69 31-69 69s31 69 69 69 69-32 69-69-32-69-69-69z m137 185c-37 0-68 32-68 69s31 69 68 69 69-31 69-69-29-69-69-69z m234 0c-38 0-69 32-69 69s31 69 69 69 68-31 68-69-31-69-68-69z m137-185c-37 0-69 31-69 69s32 69 69 69 69-32 69-69-29-69-69-69z" horiz-adv-x="1000" />

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


IHDR���0_ IDATx^�t����=s��JB��rEl���]��M��U�]��Q�^A��HQ��H�5@Bz99���מIHNr������Y�%I�<g�w�{����}��	x@w��w�/*��!o��T�{������.}��<�jzc��T4!�q��,!t�����o:�뛧���)!�*�}a0��YA�^x*�F Zm�����l3���2�����@���N�3��e D�(�.�ػ�a*cx�^�-^��c��1� @XM����y?�
|�@aM3�v�m���?�'��ى=����xyi�-SH��{����q�Y��������&��WGaՁj��>d&Z��[�
W��0Rc%<3�;.铌{�އUj�+�>�i�Mꅑ����#�zS)�'�����+����C5��N���mJ�ʀ�UQ���ۏU���؃X�P��m�p�.��\�;T��Df�����,�z�_�-A�Ŏm�]�mq�bgV���d�N|Q���f�����w��w���9�����Ѷs�x0Bf�|�u�mi#��{��Dj[T-��!ē�6C�NG�"���q�2�� yڊ��*�g"�MT`*���ㆤN����>Ȁ;+猜��0�|x�~���d	�9�	@�&�/���.@�����H�j_�=����!~�^�zׯ�L&Fl����Nf"��8��S�x:J��a��y`��y`�
F��X�*�f�DU	T�LT����Q�m�[�S��d�Ӝ�����y��hh2���;Q\��D�X�5�U<ITnh�`f��ɷq���.��`��l�L�k���Iu�S �T��X��ߦ� �h$����8�D�XAD6a�n뾈�3Ti���`�����@����� �K���'��8���Po�s7��@sc��E����O��F�c��[���Y�C7ש���۸�L����K�Hʝ�36��fj�f�Ѹ:3��r�ū4=h����`�P$}�{�����^�f�s�9Qa�!�i�@��4\a�`B��B��&�B�D�
(ޠBy8�U���!����*�XDY�42*����$�̄�j��j|�YM�S�Ǔ���f1i�
�����cd�$������4W@F�D=�GA�w��J��RS�̹�G������Ϡ;���H�3㋍�Z���Ƭ�`����5-�V�r�d����x�	�3�/>]_��~?�H�
*��ֳ���_ll�����I8o�z�=���َ-��C*f��k:[�����K���~oO�|{@��/��?�%�xu�o(��B���N'���m�n�`��J���c�%c��2|����݁�#+�BgN��@���H�����Ǚ�)x��C(�	��S���ka�UԴ��Uv�o7���yp���*4��� P@���&aeFTX[��տ�3�r:�h,���_0���NQ�L�;G�X+y,�d�*���,g��4�c��/�����"!�D���ҩ�s^d��Ͻ���[���kzQQB�S
y��(�����n�c� p(4�5��FU�
�LU"�)�ܕ�&�y,�b�>ɔ�5HK�@��H��K)��[�PX���̱�y,�f�n	���ߤԥq���X����0;U5�DrWL��y,�-3G�8J��{�ZX�O�Q��ƊM�Gpc��G��-� �](��o�_�	�����ͦf��	�^����S�P?�)m����2֭�;�C�[��	R!rM�hr'�R��C"��^�*PS��0���66S43��䯘l��XF��f���S�ca@@f�:�f���5�2���=0�������8C�ci��h�)R�f�3�+�Q����[��*j��UT��j���-1I���5A�.W14KD�jXn�c����2�z/C��(���0T�j|Ss��c1	�
���v���^@�����2�z!n.ф�c�
\A�m"��K�2�xbM��5�l0��O�3�������ΐ��7���ӹ� ����c// �N/ �}7a��F��
#"5�\A)��6}EsK�w�Vj��(B�!�+}�j��[��HK����Aj�5=��H��/��y�6!ŝ�|,�R��aZ�-��*���yV��BP(�Y�!
&Y%,��Iu�Y�A	��;�B��.��
i-�1�%;�ce�o  L Bޢ�t�T8Fd]D�_���)���o)���2���Ocu�5Œ�����t���^�t��w2�v���D@�ɮ%��p��T�'�d��o>��bM���t>��@�cR��h��~�j�7�6�N��y9�!cs�o�T��7橩���4\K��wA��w��%�`���xpͣxx���|[s��S������M}&k��8@�%�mv`|�q�u
\�#;���� ~-�
�AD���� ����.�����
WE
�OA��`��QF�{B7�d_�>�D9k�U�)�H�*�Ro)ª�HZ
5&*������,�5U�b��`�@��#&���u˸�U_#��m��L/8Q�������a�f�a�<"S�0u�N���0����FO L#�Zݘ@4�U�$�ΜZ���%=atX+���VjW�d��n߁H��.n�V_ݸ�b"BV<�˴?�Ė���h`,�8E�� /�� �f=�I�5�‚`<�D�D�-�]�3��@fI�'�?�EZ\(%Py�]�v淨��j^�k��X8@�����Ϧ|�82ۧi��C����s�̂B���t^���P�-u��	Gj����2�U�_B���u�q���ջ3x�f��22ۧ��_�߮ļ���j5��M��cG�EK�mS�D�~]qϽ�㽷�cz�$9�Z�S�Ǐ��	q1�ƎN����V��t#wڋ�c�n��I����;�'��.*+�j���|
W����_�
��~�|����7�� .ގ~��aİ;�zßj���.�*W�c����LÃ���ͻv�	���ǻ")9��
�=�!_�"�"� 8�A?��U і
�����~'|A/��Ip����dV��F�k"W"N��/�o.�P(�E�"c*�
;��m�r4���f�z��9W�%=vt6({ ��1Bf�;���`,c1��X����z�X��8	�}���C�	�K�~,!�JE�*5gp��挥*�G�y,!�R��e S���d,��Ok���*$JQ���am��)�?��hci `>/Xu
����UQd�':s�!���f����%���B(a?LY]!�q�9�>�;��,� ddA�ET%/���X�G��>j:o L���i��>s?��֛ �܍��?@����`�N�ܑ&���f��}'����쓈ml��q_j.��m*MKi��}�ZVꐲ/�q���/��v�n�4�����4�^uB��4�}nJq�8@�	��j��8��_x�{�lļ���
�|_~�
�����/��}�y<���A|^��)�V2;4�P�0
LV/�?��P+*ASS�P��9r,¿oTi��&B��j{h�s@-,����Ӏ ���5����,E���T)-�"�A,V�P,���M/�k��*���^����)h)��Y&r�[�SP�?o���f�vf�<�䢃:c�h�#��XN��c! 3R���`,c1��X��1X����?�s��A�5&������`P*r�%*��֣�8��P����S�-kV}���Q��*
L�Jw�Q���#�"埽xici�Ke%��
��j7��T��2�( ����E�5�7������A�1��2@�x�\ ���𮝌%&��[�yQy9b_x	��7S�Bx��$��&}W�����/������EP=.(��Ö�kV#�����&ͯ+k>�2ľ�:�?��'i�>�	�~y�N��2
�t�*U��4#;��w^���߃e�DXn��W/x�y��ˣOA�����q��v;Hb"\wMӾ9���O��}_�[��$%%r
��3��4��WN~�6�z��X��֙np�b��@�V���&�U���C�������9�d�Х�	��̀զ���)q0��Ҥ@2A9t490��VU���9��u�!T�>E����V=��ԈH��6SN~����k'fS�������H�ֈ
��=CN��Ř��H��Dc7�c�H�=h���O�ˌ��c��\���sΆ��},��C��J�0�T�dB�H���6��G�c��xM/P�q��^��K���k�50
�ʍL����?�]�X��LP�2�E�r�Vn�},�j�0h�
MM���W�a�E���P�
e�		y���>��󦣬�!^6�J�LIIi�1VS
V^�М� /]�"==7vş��E(�p��\F�������h	PYVZ�Ї�@^�TEZj��WPӄI Y@;w�P����E��/ /��+�ӚBY�C�l5M�
$-43+RU�PK����_��HOk,�!�QS�����ˢ,��D!XY)�KB��w�)��+6֯鄳�p���8 ��k��b��
f2��!
��Pp�Lk�I�mm��x$?f�F���=8�q�)9�ZazT��|��c1��F��a��h؉��hp���q�1��Ϝ@�r���`̾��q�1���
3�H�Ս��Ӄ��ZT��ș�X��0s:���>��`�w�Qs�Z���n�u�
��-��TB�xݰ
V��(Jr���	��D�y5'$�35C���	�\p��g���dž<�3@!h��ސ<�Lf
��Gm�j���G���xkۻ8�>��H��'�>���@QU�U��x)^�6��L�u
��Y�����|��c�d�j�H�ڀ��'�7���?5)�9�.��	y�
��9�3
݅�t��}�%�Y)��m�n��Ë�S��xv���V�?,�K=�y�k�2c2T�������������ڈ�P�)���!aё%���r�ZST	�
�}����u>�6�n�������CqY��XztV�)�����!�JTBH
!�����Ds��o���S�e&���Q��T�0fm%���g�m�&�����l
��r�n��f��X�b�c:cy��u���X�f<9�1����`,c9y�V�c������h,�߉|��N�
�9M���k����+���e�՚�Hˌ��7�P���	�:��d,�l����X�)��f3$�	���"��� ���X��XI����:tjm-�(j��<���< �l�Og,Md�1C��÷ߢ���^��͆�y�S���댥)���v�y���(�4	�m� ��,���7&�=���KS���!U�/F�]w��};D��qhQ+� ��6`zlߎ�����'��8qNh2�AM&UU�(#�M� ���.�|��q�G���v#�m��J8��ri�Jl�HJ�C	i0F�;�@�3�h�,#�+��*I8z����ܩ
Mh���>�	7ߌÃói�&3�}3I��<���2�"G �|���#i�_ʼn;�@ه�b���#\��t�0(�����:��ByX��R�6�Y�bPW�e$�d��� �[Z���*r��LўM����~��Xv�lٔ��AN-��0�f�
�b0����`,�NY��7�����7���
�j�H��-˒S�s��}Ks��ِa��
	�[�QōL�����X>2l:i�y�_��Ú�͍̘�$xe偀&o;��vln`,@DG�륞�Q�%1�;k7T���3�JLq��L��nڠ3���kJ
�y��H��
q: �ox������@��b8�aeLejޔ?6����L���;:�M/�pN�Z��ʰ�ɧ@D�]y�3Ek֪��ܛ7���P^��0j���(߶
|*]���cǰ2�~j��6�
��Ǒ�?����ܛ��h��8j������ؾ#_y	��X���P���=5�#��o��1t�oc�܏Q�u+�>�0�	�xH�L��Éu�������(c/����@�ぷ����#�b��wj$���	p=��?,T���M���ƌ��}�~��eeX?�Y(� �vAٖ��ڽW5��4�a�e��aOO��������!	ݺi#��ɧAQ`mA��U�hP�b�\Y���Э+� j���*&��ݮ�XA$@3Ur��܀55Y���O$@[�)�C���:c�|�l��e�N-�^�n�fܼi��X�b0����`,�����bm}&͞@Z��*���[
js��Ds����i��=�"��a_5��CK��d,�&͞��X�5�x|Z��c�}y*��KT��\�Hc��@^���!
I�Vtm����}���D �CH��`��e,w[u�����#-�Fo�=:&�S�x�#'��{���qfz<��ĉr73K4o��wꌥϤ��K*܎�э~�g�
��2�Y���o��f[!�m,PSm�{����X8@i��q���gO���R\� �f&���E�VT�<A)v��=%j|��9@Υ��o�^���}!��p>zwIƼ�{!+*�`Ӟl�ǫG�8��9m��u�6�)���s{�c��}������'�u_Yt�1C�Я���ZO5>tl�@P��m��e����Ͻ%�~�\Mh:��X��W�h5����n+��MGՔ�FB����)1t�g�W�2��<\T�=���j霙�}G�P\�V�����~"��$ 5���!�6�.���$�Za��TUQ#�2�`(�h+��!M�i#h�Q9w>9��6S4����;�N���u���*��`8�~,�����f0����`,c1��X�<i
�vư�����{����BjV|!I��r�?Zל�t�L�>"P(�dw�7��Z�ѺH���1Qa<� (���{�Bi�)`!��O-���9�0	���Ӓ�����$�l�� `����ɳ�lq�[l2�~t�r��po��h��No�p"z�넮�Y��G*
1���萚��'���Y�,��W�j]?p���1�ܑtA�6���;�Ň� �j��~�y9��ޠ��%�{m��X8@IM���/��罉='��]�z!��wW|�)8Tz�w��ʽմ���c��\:`8]����3�*:�9�|Z��xkŗ0�|�V�?�X���F�����c��r��a���GH�I�'�ǚ��tǺ�W�}!]��@�����LLErL�\�R�PZ[�U�6i#H�M��BKBt�=p,�\kə�{6`��_�BGJl"�z�%��uJ�������4�!m;&g��U�jo�*
b�*���
�4E�}s�V;:&�<�5��U1f��Y�U5 "����oЯ�o�kV�ި]ZT�I=hk3Ec, �?��2��t�o��XN��q}�W�~,g�{���|��4�g��W��]}:w�� ��6�ߐ|��st'jI%暐"U��q��c�>�G!-w�4�R_!���V+lº&�Xv�������<z�����
��!�Ћi��Ս��p"
�率�B-�ǔ�
s�.ڂ���Ԭ�����'C��d�*��-?�3��SrMʾ�n}a��k���8��ON�)1�$x�\���������eǘ��C�Ŏ��W�n�x�Ć+pd?�˿C�aX:����N��H5%��XV�
��+Jq����o.���5�ڃ��n׺�(.'J?~��?��lԮ�Ec�\J��9�s^D͊��`��K��nD���6�ڵ��b\+�o?
k�~H{
��P�H� IDAT��lH)��Z��%}
����RA-V�D��h��P��P�M���$����(��{`!?L���ۻ
�u�T1!���2z���2�X�����	�.=,:���n�b�LI)����R� �Xv@獍)\R�%C���ڲ�ޝ�4E�b�@$�
E���y�T��T�[s�I�u�L�yrmm�hFc�?{Y]?��c{d3�ezʙ��bF���~,c��ˠ<�=0�B���8���:*/��y�RucseRy9ö����|8�Zf,��	�����Ѥ��pDD��|j��ʓ�P��.|q"��݄F$��^l�y��[��4�#�YBp�!y�|@dȔ 7�w�u��@���X'��M�A���$e�z��Gx�@"�-���5�� Y�V�Z�/G��oA,6�7�@h�2�n|$>�Ϟ���G �.��s�Z�u���4��a����C᝻�>�H�x�ޮ�~��6�{	֜Ps� �Ӡx$}{�~�/š�8�5����x$��
�ĻPuiw��4,ɿ�
�P�A��^i��o[
��jm+A������� ^H�e�)VX��i�8����B9����Fp�*�$���*p�zEr*/PHCr��{@y{�%��e�_�ʼzM�tU��A[�)*c��֢���pd׵W:u��0#e��0�Z7��b�x1�7|1�q��3��X� �r|B�	�i/e��X$J�UAE��9#VD��V�Xx;����b_�SG�,�d,ǯ�9���P��������_�I��P��@�' �#
�E`zCS��80��$L0��r"t��M� ��n�|,��8��
���w��q��ܴ�3�IHa*%y���S`��8M{il#��݇?�%-иD$��a��,A��k ft�:v����I��c4��و+J�Άm�xP{,��
ۨ	pϟ��s!fv��\t�&L}	�z��O��Z�_�SO�F�G�;��v����i�HMF�|����v$?����1[����Y�?�<��^��o߃ؾkt���Z/�\����Ёm��X�� ��(��$��!53:�Z[EM]�"c�jm�����;���^�p��.���!�9�!f��R2���x}
��ڪ�@�!�Ֆ�r��4�u-TW
Č�ZGI��d!�,�͓VBA(�*
@HH$s��o'W���U-��p��X�&��f�V�����a��c9�N�S5&�}�00�P�G���%��h��1��Yoq��,��Z���d��)OM��-�},��y@�Ս!�_-�*!t���?#}p�tp�BU�A ��D7z�r��u�
�83 Y��w&70�j
]�fG�Մ���7p�T���S��L1W}�R�Ǣ�p��s�Ǹ>)Q���+q��[�x�Q�<�ő���0���y���k���Q�
C�=Smxpd'��T��goI��,W}���r��G_��_��+���.	�*>X{��Ϯ<�G���jS��Q-��ۯ���M��ߋ����ڀ�����;��Ü%A��-T��#:b���ho%R�W�����8�\��h;�^�lm������
Ę����""%ެeo|t]_���F�8X͗�O�feƢ�hSx�cP�GuFHQ�n�Z�T�Am�d��G�#;���!ެ�	��ߎ⽵E��Q�D��dj�����-QK�:p�*��hqu>Ƴ���ju�;��dP��D�A�):e�W_�Dg,�˳�+����K>��l<�Ϭ���X�s5���\
��`��ir�<���YW+�D����\�V�rO8g�Q|,�o��c��H"A�GAq���r��&>��wx�����B��/��.�H���8^�`KC\�5��G60
@UD�R1�@Dha[��>�PB
B��d�l��܎w��P\Ek�ki�OZ]X��8����̼�i�tƢ�s��L��,���j�u@b3r3�����Y7���[Aշ� P�\bڵ
:�ԖB�9k��P���tj�e����!,]F��zT-�dpj��>jO��_�GW���8�π�w�"���=ܿ�����0w��w�v�����w�Q[��h��5!�
�A�W��s<BE4睔q�����e�G�T�ALv*�BP{��YjM�$@�>�P�z0%�*F������D��4RemHL�!6�*����f���!���:K黽��������12#s�>���9���<[KհT
KհT�n��q&���Fg�;�[ͼ�h2����S��X�<��X ���.�ŗ�b�-�>��j:w�l���='����u6c���c��@�a����m�8+��@X�J`�0 �tn/"���ctƢ�GJ����_��,���=�
�p��J�Ջv��e@��xb`J�]�3
 (;�c-t���c���pE�$L�3���d=��ظ��rq���rR�~����%�=At����ׇ{Kqǒ]�դ��&���'@���7�1�~sgŠy[��X��s�p��������.ȴI���* ���GVp�}(������pEX����w�W�H�<B���n(lw�E�O�qM������Ƈ�;O��Ɒ�0�l
@e��}�Tb��q���C��)	�f�
�HaYk�e�Kq�>E�#i+Sh�猅��-�	@[�)ڢ2�c��ǂw�dCU�c�La0��h*dPC��Ǡ<
O[�L<c�ı3��H�y,T�!o�r;sֽ1�9c3sIZ�yOEB�Zj+@:uݬE2�13�L�A]z�@	<�>��$��@R��Tk�S�ٞ���[Kcnc��2Rb��oPơ���]��u�$�Ȕ���O\�3�zB@�#��8y0.>+S�ٟ���wW#39��PT��*�[�ȥ:c�T��`H��.?�%�0mL��JD���8^�w��?���.�[%��Ǯ��̡(�ޗ�C{�j��$
H�5c��R��Y�+3�_�՞�c"�\�E}2蛷
ӆ]�	��/#���x5��B�]B���jO��g�(v�W�ہ�W��X���;$�"	������u�k��
5%�	�
)�x�D>0J]�rpa�v((wk-v��l?V��~�
B�*Q	@)u��a���k����1	��TbO��5�2��CJs!rE���
�e�~̾c8��co�v���_���E��W��P��|Yx�@zd��&��W�Ԗ�ԵTi��7��
U�
j��	63�fQk+Sw5hu3Ee���/{�J�����$[�Χ��`�����`,��n0��fX(g����;�_�h,�A��^��A�'��b"�\#�RUXιfׁ����䁵�A�D����Pd�u�D2���o^+LS3&�!�Bp�'�!P�v��?n����P
#PT!&Rz:�p!(�Ad
�ۼKg,�� @��E��w���\
��9�=�,��!XVˆՖ7p�.���A���*�N'z�)W]
߁�l6HYY�(¡����UJJ��e��X�T����vs¨K*+E����] ��h#;��;P�n�*����sg$@�1�>�>tz�	Ԯ[
1)�� ;k�b��u�����s�>��J(䠢H;>���X`JIE��Qxw�@�%c5�c.B��P5��G�k�K���לO`JL<Y@!TR16��tm$;��"\Y�������
G̹��Y#XT���t��|
��bׄ+ �:U1&&@�S��i�eWh-���D�<�d��)#q���B�`�D�R�
�pU��l|L�!�� &Q+��/
qF���j�
�n�&�0U�<|�{�(���3�hk3E}P�ަ:c�<𬿘ǂB،A�v��`,c1��3�0�
s�0��^�)2��v����H�>�@H�Xx�{��r�ӣQ�®?���yOE �|�`�Nŏ�7�
�a�t����s<P��i�B^�Wɓ�$K>>�(*�P�/D�'HB}��H <��*Ɍ!�]vÜ������#�%-V{��J����č�\	w���f��n��
�4g:Jk�W�E=x�v��2���,�a�?`��1��jj]T(s9�MBᄡ/Κ1�;&j/�k<A�e����Od��5��ۢL�e(�t~g�x�;,�9��	kl�r��Sᇹ7c��c�t���w�4��xA7\��X5s<�܏s;'c�����d�u����w-���[��[.���1�㡸����~�j���w��Xv��~m���;��3'
���/�'BR��U�B��JX�Хx��m�f��&S���:2�闹��o�;�t%�/��
o����Wa35Z�:Eb�%*o�b�C]\�/T��������^�y���Y�@L\K������,_����g���{0`��j0����`,ci|ܟ!V�i� ��?���kb�'�D�yO��f��Y	�$��˩���%��},<}Y
�!������?�d,�n��$c����|�/w�[����!A�P��Z&�`��-��X�/6�JK+��������C��q�Q8x		��[�<�KrK���Kc��e�z�0|4�6����z��0��%�J&�M"O��+�߫:c��Q\ZI���\,y&�����*$Q/��+qϬO�.-IKC)��5��pYVN��.}�^\|N�/*Ŕ>��ex�1�{G�?���s1Vss�Z���!-��".�U��d�PJX�d6!59���4[9b.�ߑ�O���$�3.��E��bl3
���:%����]��@UTGy��.x�nL��\l9t�?�.��U��;'���?�K6��+���2ЄXYC��u��E2!��e�Z-�����!ғU"4"���@iщr�ۧ+>��6Mp:�T���?��jӳJ��S��+�@QRV��0��ٽ�cÎ#E((8�Ĕ�m(<<����w�*��W�<Pe6��v��UY�y������ �%_���Xү�/��u����!0 ���Ȍ��_5��X�b0���%�9cP��A�'8���{޳�k�U���%����9c	�י��Z�^�VX�[Aa��[�M=wfQ$c	��4Zqb=�%�RÐL&�
*�zI+��HQc�
@ �� &TE��u���M����}Tg,���1�@�s��K@�x6���)
�i:ci �o6e����P��D��{-㚰\˿��%�P��#��C��Y�%"��4�������n��I$�� �]@{A�5X�@��70li�Q�+�i�� igC�6B���]�s"���l��-������@,I�nX�b�jB�"�	�t��#����T�y
��S����5j���V!��������.J�zB8g�%(a��^`ad>W! Ŷ2�@
�I=$&Z��𕃅\Z��֗Q���SBz�0��p��=Y�������&˷L;�3���]�AԿԏ���0O;f0����`,c1��X�<i
�vư�	Sޜ�Z� I�h�R���Y����e��7�k��P*"�����SW.z.��\5�����X��e��^w��Dɚ��'K=O��/�}�Ba�1����0�LT5|�Vh��/�� UUie��qH���xa� �5^�$�!.�
YVS��￸Gg,�#��tӜ�b��4�_��6��-��;k7���A($#>���?|q��X8������-����-�_'Jj`�HHJ�k?o�U���Q��$�"Jʜ�q��M���E�3�\��Y��2͢
�q�����jB�-���;2�%�
163,	q��g��zꥅX�j��*!4�8N�:��ǐA]��jt�c�r�x�`t��C|T�ϑ�
g (S�]€�Y<�+RRb0��g0���1�拐s�(�p#����H�H��&�
jj}|����x��2J&�`X�r�"
@=w�
ÐUS&>l�|11-֋�6Z �9��6S4@F����{t�2q�[�*�:H2�f,�2�`,c1��X�b0������q����n��M��yT!Ԭ���s�[М�t̾5���c�y�j(������ ��tȾE� ��
 ������_�b^ci	��>�(�l2A��r�D&r�Dg,�Z4%(�����M�(j<�NR��0�1j^Ѣ�u�R -*���A�VT�޺߿�(v>����	%���LK�b�x��ş茅��8ZTJ/6>���w=�$�'���?�sw݂�_���뷠sV;UQ�H�/�萞B��8�!���5^z�q��fߊ����f\��$��+�X�%��;:g���o=�=�|�-~[�	v9�{��_\u�$�y����1��qvk�)P>�z�%��J��}�x�ې��l�TT����Âk�9+CU�&S�z@)�'�*ѷk�\6{uC�}Ocp��Z0׊?��}z
�Qk.D���3��jtHO�Y2���ՊU{|~��e�5��dk"��`ᰢEr���j��K����� ���u��q�m�*ӂ<{G��L�
c3��|l0����`,c1��X�r�2��_��4����tž:����_�Σ���%E��gΙp���e���X�<%�%�������7����e�l�u��ۤV��5G=c����'���s�F��j���"�T��ff�Mȿ2oW�ZaM԰RL&��O�ٞ�����[�
b�F�@)�|�ֺZaM��1Y�����q��{Puhl�Y�oL�%�Լsr���
k� ���ToGy��{P��k�c;���_4eK]��()=�Cb�1�88��@Ɏw`�=�f�umS�#c��AE+Jv�W��0Y�Om�P�J<燛�|)��К���
���n��~j���;����(�S�?w��Za��&z��|;��6c��-c1��X�b0����`,g*cٟ�mZ��U7V�RUr.-+l�X�eum5*L"ժ�Y�\a�eM�X�gv���!)J!�B�./�	�!91��?��xci	��&�e%`�l^��.<A�dJHn�Gt�
�W9CLKA�W_�v�?�=����}���^tXg,�T�,@��?�6l�r�?�(�_|
1%Y�ث�@g,�(E����}2�q��i3
��y=���z�Z#�XX�RY�Ϋ��v�?4��X��ɷ��y�^S�|��;j:���ϧ�ﯫP4i
h\,�(F �H����t�}
��D���P��#�R�@,��hSP**iܤ����:��6oE��1�?��bn
p��i���w�x~Y�7�
����,�Pq�+�X(Dͽ{�+����6;��vZ��&W�2��+��~����:z<b�+���
�G��.:�3��f���Sb,�ѳ�X�b0����`,c1˙�X�Ǖr�o������}x��H�3�U��j<���S� �77���&��l�яG�?C�o_=�u2���<���1�r}pL`dT�#
��H��U��ix	���f#`x�X�7F���/^rj�nj�]��!�i�=H5�:��N��mw�:�d�a� ���w&�ۧ
�Xy�@��� 儱W�J,�/�	�W>`z��S��['W ��-�ɵ�d(�G6�9aB�B��+'��#i����]�jl�!�2��_��L)w���0��nj���x�$�)N�ŏ�!���3
c
gL�����#c5���DhB�5�P�3F�.��
�Ս���Dj�Ն$�3��δ
�},�.�juc�D�
�U�j��{��Ȩ�G�>�y�+q�L�/����J��oBm�K&�����|,M�jd�@P��YIIDAT�CVC��jo1�$Q�pˣ¨ �>?q��ci��bdϛ1����ҫ��x`�7X�g6��
�6�=S��L�J��R�2���Ux��%)~<��*P<4v>,&;f���s"���e\?3n��c�`L�5�R��^�jo^]9���/|��ŗ ޚ����WJ�w��=�/6=�
G���p�t�
7
~�>�U?G�-�%�:��d\w�#���DZ��|-M}p�q�i��j�SX{�$��E�2���iS��ⵕ�5<��w����/�Dk:x)�2P�B=�<~���^���D(���̃]J��?_�Xsr�2��N.�=���3��=z�"���m,�>�{���'zCNd�u�?��Å���A�͉u���Uv�&�i~%����8FA������̸���х��y{%v�Qa�3����O&��\��匱PN�t�h,�A8�^��,��	u��Q�$s�O�*�rΰ��6g,��zuc���/�[�y?��&y,��LG�<��'�$�s�%�L��poc�h�]_e-�J��(�Yo��� �pS�w��y��&�y����♢�y)���p�:hb&����ߥ�0�4&	,�͠�I�,���@%��ܴY�t��g��v�T�?J����9�K�Z�8K!��ju1<?��
)#��R�eصTl�R�� �X��t�
��!��RqBjGx��
IY�L����>��AW¿n�/�Mh�:mjޟ�n�M��T�?
�ݫڻR�ڍ�?�W��D�-��WU!��X��R;R�E9Pݕ���P]� f�A���D�R�[���#ͅAp�������<�
`>�d�ǫ��H���(������Z8�'���66S��i�o�K�}gg��)���{6#}�v����`,c9y��a�����?5�����s�"��	P�2Ht��W�ϓ��������Z�{A�����T|�B����>�8�)|��m��}�mFA~�Y���6[�1��F=�9��8�b�t`V:���Y\��,
V����(dP1��_���<�����
�K`2�����8VR	$�� Z�v1�,/������M"��k\� R��1�k��O�9V��6LI��������8P�W
9�(b��U4ln��l�7|�uU��j�5��9ݳ��nüu۴aϘx1\��_�
�J�eu��}��G�E�`�>,]��3�¸xi�F��HI�g�flGN��e��6>���$��ݯ�=^�a�{���ʃ�����CIB(��@Ғ`�Yp�D�t�ۼ��k��/�
J��������Z&I0��:�kR<��8�?�BZh�Ey���֊T���r�T�� ��TG˦!|9�<�FBlc3E=4X>^�Og,x`V6�<v����X��t��X�b0�����!k�6���ۧa��X��lх�j-��yq!�ZWX*�
���)�l^���(���&�V�҆F�bD".�BA���
Q(�[эmw���(�JA��\�i�HqcZl�mR��%M�yrsE��謇3s߽o����O�{�%lX��y�Fȱg���
2�0y�O?I���Gm�b���3[\�'|cg8��t�7c� :��k�<⽒Hi27��P�lů"񿅍�由ޠV��Q�yz��)�{	����pe��e�Qg(��E�ݟ3���_�P;̌A�z�1�!�ޅ
	��XV����
��0�����r�uB�eX|
ٳ�.�cM@m9C�!y���<sK�^��h�Bn
/|��7az*K;�����g�:	�NAq�	��P)o��
����+o`�n���k���&!H�.�@t?,=�Ҕ��nP�J&� �m�i\D���ɐ82���69e`�����A��v�����Tz�����fD��:b�#�  �-��id��҂!�o35��9i'�U�b%�T�\�šl����y�%'5���h�e�.m�IEND�B`�lib/themes/gray/images/hide.png000064400000003134147361034400012430 0ustar00�PNG


IHDR  szz�tEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:1676E08A4C2911EBBA7FB7B3BDD03902" xmpMM:DocumentID="xmp.did:1676E08B4C2911EBBA7FB7B3BDD03902"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:52B4976B4C2511EBBA7FB7B3BDD03902" stRef:documentID="xmp.did:52B4976C4C2511EBBA7FB7B3BDD03902"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>g	{��IDATx��OH�A�����`Q�%("� Q�!��Kۖv�t�KX3{�Eaԡ"�"����<T���l�V�}|�N3���Z9��7���{o�{��Q�X�YΑ�Y��L&S-[�D%T�h��`/�^����ع�Z�HAFπ�`���V���Ϡ�
�ot�@�YpD��x�)��� ��)�Ԇ��s��Piz����g`�
{-�L��J���u��߃贌g(����j�9���q�,2�ң��u�0A9�JΑs��6p��v0]I�F �BJ8�&�/�$%�`XK'�����5G��t��Q�ݴ{R3�g?�>f�sSOI��6ꎘ�.�L�PHv�ˣ`H�#�����W�=�#Г��?8i>{�7*�c=�`�󜮁�1��@�1i(��Ѡk�t�+`g`�!�I����&���3�"�-\W�H^<�p��v۸4�M<rY��?�U!Ϙ�g�f�JϿ�X̚���,��8�1����lb%}@
�,�F�QpKT������ӎ��&Z��n��bc)��]t\ץU+�o�x�Q���|V[]�y��"�;�4S�pt��'�R�zu"����ކܹ�R�a�s瓼�;xBz�
#/��ezK�vi��FF�˴R�ȳ���(�a܄��j��3d��yp�����7�8�'���DK5>���������/��K�IEND�B`�lib/themes/gray/images/icon-new-window.png000064400000002450147361034400014543 0ustar00�PNG


IHDR..W�+7tEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:52B497654C2511EBBA7FB7B3BDD03902" xmpMM:DocumentID="xmp.did:52B497664C2511EBBA7FB7B3BDD03902"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:52B497634C2511EBBA7FB7B3BDD03902" stRef:documentID="xmp.did:52B497644C2511EBBA7FB7B3BDD03902"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�_Rc�IDATx��ٽJA��޵Z�
� ��Oacc�G%V���)|%`#B���2��[D��4^�30a��ݞw;���f/�K+Mӈ��!��-�uߐ�$�;�F�u�@0��X���N+�mq�_ ۈ��2�-愯�#���?Q��ñ�C	�9�w O��v{�AXl��.�Q�8!�+�m���Qe�P�>��u3~�:���GeM��;��E���c�@�T�xU����m��-O�>��O,��n�X���l�i{TL6"��]�q����g��F�Ѫc���z�MZ��3�W���xT.�#��?�|���;~c]7<���~	y�g%�M���g��r��J�x�x�x���p<��K�-p�����N�� 3��32�?!��%cgd@�W��C�<9��IEND�B`�lib/themes/gray/images/loading.svg000064400000005234147361034400013152 0ustar00<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">.st0{fill:#333333;}</style>
<path class="st0" d="M11.4,0.7c1.8,0.9,3.1,2.1,3.9,3.9l-1,0.5c-0.6-1.3-2-2.7-3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.5,5.2c0.6,1.9,0.7,3.7,0,5.5l-1-0.4c0.5-1.4,0.5-3.3,0-4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.125s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M15.2,11.4c-0.9,1.8-2.1,3.1-3.9,3.9l-0.5-1c1.3-0.6,2.7-2,3.3-3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.250s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M10.7,15.5c-1.9,0.6-3.6,0.7-5.5,0l0.4-1.1c1.4,0.5,3.3,0.5,4.7,0">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.375s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M4.7,15.3c-1.8-0.9-3.1-2.1-3.9-3.9l1-0.5c0.6,1.3,2,2.7,3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.500s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.5,10.8c-0.6-1.9-0.7-3.7,0-5.5l1.1,0.4c-0.5,1.4-0.5,3.3,0,4.8">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.625s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M0.7,4.7c0.9-1.8,2.1-3.1,3.9-3.9l0.5,1c-1.3,0.6-2.7,2-3.3,3.4">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.750s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
<path class="st0" d="M5.3,0.5c1.9-0.6,3.6-0.7,5.5,0l-0.4,1.1C9,1.1,7.1,1.1,5.7,1.6">
<animate  accumulate="none" additive="replace" attributeName="fill" begin="0.875s" calcMode="linear" dur="1s" fill="remove" repeatCount="indefinite" restart="always" values="#333;#eee;#333;#333">
		</animate>
</path>
</svg>
lib/themes/gray/images/icons-big.png000064400000061447147361034400013404 0ustar00�PNG


IHDR0@�#� IDATx^�	|�ǟ��$��[,�TLT�Jųh�Uo[��_%j=j�Dk�V�BxS/b�@��E����B8�$!!��?��L�ݝ㝝wf':��O��w�y����y�i�Ӧ}R&�8��zi����j�B�zji(����&L���G�U�h��=��ᒤ!TN���X$a�Ya���	���]Z}{���8n ������?�ְB�
�S�P�f7��­�n� ����w�Z�)��N��1+>J��-�uJ9�(F��i��v��	���W����S��ӥ\P1�:��-C�fѱCcW ���fVy�	��z�`58WU�m
m�����=�L�?�tJ>��ZXK���d�+w������{�zS����'�͆�fZ�~�u�ОtP߬@��O�a��
@M�ϯ�Bϯ��N���X�6�K��K��v��F���u��E�Dnj��3�MY(@/@��^:����R|��U}Vu%s�3WN���tj[��kם7�F�Z�K�b�@MxLd�kK��b�8qh��@�=�aiЊ�e��8nh/I���f�.���k�);�#?�L^f4��Z(^�X�by�lf}>�A�����j0�ƀ����
ʧ2/��4G-`EPWX ~������c�9j�n���9�BxlT>:b0�1JJ'2+��,��:<xp�ݬ���<�*��~?5�U�"�Q�ak��9�T%|���72|ʴ�K���!�X��b�T�ϋ̨��}5-�BYUE�Rm)���@�IK
E1��P�ֿ��y��Ʌ 8���_hq����d�y�x?:�G�"�Y�Q�Ϥ�yQ�UM�]���wR��Yxy8G �HH�Gx*H�����Bs�R͎�<eW�Ŕo����(��n
@D�����@W<x�+Ͱ��Y�USv��,`�fY�,��)��y�K���z`Ք]�<إY�q=�jʮ~���,븞X5eW?�vi�u\�����ߏ���R�]�y�9€�.��Wv0B��~�H�G>�R�xq��U��cb������	*A����_�к�=<x��υ,*���,����,*���1�ʴ���6H��uG��$��21�r5:�(9�;�W��.���]r�8)Q/��9�Q�����a�Z��#��V�gv<L�[K�n'��\b�uN���r�^�f��	{�u#���]\o��@����>	� Vn�T�COMA J���O�}'-)K=�eh�^eKz��	�l�������ZR"���nls�^�t��7J���`R��tlcoo{�t��nl5����t�}:���}�0�~ָ
�j������#�O^���Պ��N������,�HT�cvq)����%SA��\�DQ���Dp�.�
�VpT�X$��ODžl�9� ���Ž�ATp����|U�|=ݼ|P>ܫ����5ת��^��YN|�����>I�%�ڧ�4-���mQy������r${AK���@�s!��'�`��ˇ8H�z;4�;�;<u7�i����P;�>�߉�м�1=�і}=ءU3c�x-���ީ�j�Jѱ�ީ�]�H������M���;�1�'��;1����m���v����ޛ��ѱ�\p4ŌKF&���$!C'�e�c��N
��v��\�����y��'\�m����`S�Y='�G�w��i�?1��F�L9J��@Z�i���qɈ�cK�Ҡk-��
���g�&�R��R��U��hA\�—F�/��
.k�u@��f��K9���xOy���S8hM>d*�F�W;�ØS`$<u5fg��i�P]���cNq
ܔ�hM��r$C'��j����[��^9���e��?��;���#%��'F��!o�����<���-�3�0(��.�lU/���dk����a��S����w*"����Yr6��&�"�
���۳囚L���(��2�T�_h*���y�7$%
�
p�s����7�I�=K�'�ڏ�5��i!��-���"�3�\�i��?"2C��,�+�@�@�H��Y�욂��\Rf�����D��l'�|��U�쪟%�-$�ڕN�Q1���z���)�秴켢��~	�)���/	.�,7a�����l���X��T�mMں'�R.���4���c���5��̚�x���#������.T�=B�m'��X��~\� f0��P��R�b���14���.dk�^��^3���z.Ġ@ۺx3�73:��?� f�[�q�B�H�8���(ۺy�M��{`T�m�~Z(~�%����ӈ�WP}QfB�f��I/�)E��ٶ��0�\�{�d����ݢ�Q3)��UlY5�W���A'k%�3��Ul��H��D�eg)/�P��ҝY!\@x[V��^�V��#��sy��=�m뇻�od�߉\H���X���V�1����_hx�Vy�����/u]ky��z1�3iY�֥� ��j��\��rڛ�;}�ԧ<�8%K	�A���ɸ� �f�d,�3���8X^[��r��-_�XV��<XT���=XV��<XT���MY��ز����-�:�4�f���y%e"��{l�5Ոm��j~{l�1���G��[{�`��!T-��y%�D��[�DFV�tA��{l���/	���kY�c+U�qI`�p�)�3�[��f	"-+�|a�;��r2��l�pk�f0�?	>�ҳ��\�6�[N����HG��fA�����/y�m�-'L�(�o�V����P����(;-��8�6:��a&��_����5Oi]`�g
�H���]�$z *�:�Ň\H�+i�5;>OB<�Kd����?�ů��0���+���y�x��5(]( 	����A=hO��~ɍ��9z�i��@|P�K��UhX/�O��x�r�u]����NJ�#
����%WJ�)��U/K�J�)[)(4
�a�@��u�X?�K�����:�f�[>���m�n6���R�F�\���]���=��Y��,X�c��8��g��鶮F���r)�S��X�?R�!��1�?R���]=;�jfL�f�eG_�vh�̘��hˎ���Ъ�1�-P2�$�#Z���$�QAUi�[畔��=��,���2㯎�լ��k|�(�*bK[]�/##
�����kB�O�6ʳ�����IC�Z`@���EQt�b���gi(��z�V�H�!A�C{�Z��J@���|>��M.��7f��	��D��U���s[N�@k�N�DZ5ӵ@>
��w6�d��r@��w4�H:eg$P�2��,g��r�u�!�5���b�`U��~�L(˖�\,p�/� |i���M��[���r��p�m�����|F�,�;��(�,�9����-��-�]���u	#�7���;|(-^����/���y�]���C�>�+��X��>_��0n�����PL�+!�b��ݻ�
Jh)��kh��st�	�@ܨA8��z�t	���gЬ�������a��=�MV�Oj�Qc^=�RI�J�뿺�T��ŧt���?_|�2J/7\��.a�m���4���_)��F��-��p7\�@����j���-��r��k�whU�!F��N;�x����H��F.%���@^W��Ղ�UWM>���.�f�|��}��{�ܠ�[\��j34 ��N?�xif��2�VH)��Q���2J���AJ��m]J	��������v��v�:���)��y�K���z`Ք]�<إY�q=�jʮ~?5狢�U[�.��f������%�"
�P�5�ثز+>-��Y���ae$��ﱵ���&=S�����~��B� :R�����%
�j���?/�cK@�&OJGl��^��"J�P���c6�Z��J@�%BB@`�p�)s�H�����{:!r�B�ȺZs[N�@]��ZDQs2�QO�|���[N`g��0u�B���
T�S�]�u!�n�[Ŗ��B^�<�:���Uބ~�Zg����?�P��{�yJ;�j��Vj}� ����3�B��E�S�ϡ�wS�o&'%|4�:>p�j��RJ?ueV\'�~��C`4h_�7��y�/ٴY���Z�fV\O駞��M�yx��s��$��rL��}��L{T3й�P�͕{��#)��2A�lf�����ؠ����-z�0�H�@�=S�^�Kr�����i5:>�q��\7�}b��`⛞�-���u@RhqK@�j�H���V��.���� ��p�tɢ}��n�^��rC�
y���ɮ�ķ�k�b�V(�P)\V@��*�Jd��,�2�QӚ���M�/\L��
RΗS��b�֑[���A�_��<�zn�!��3��BH�x���@���)�"��}X[� (�,�w[,M|��ǵZs�0�&���F���ۚ��#����d��
���R^Z�}��P\\���7�}��`�:����NH��0O$#���i�4iǎ��ИԒ�<^lht�Fϧg�\��a�n.�zC�<�5;�g���߳o��ϳ�Y���Ӳ���C�������k�b���q����ݰQ�HT�w���-�q�e<͊�]甔�`����kj�	�v��9����B�8s*���"&�j�]���̩��D��@iA�SS@i>_��C�Yd�T�TtFuH��nr!eVb�p+`� � A䥧�<�䩈N��j	koO�ꙖV��&NEt "������#ڧ""/�W4���TD'��{��x*���C������=ѣ�Z���l����_?��G��|�_�we���"ۣG|�4' Pz�xJ3�KHf����ޗU��s ��R��Y��?��^���g�y�^�Y�God9U�kk)R�]�8��7#���+\��!�{������w�����
M!t��P*�j{H�Ll��q1�5���,�,d�B=.��҃Aiq�\���mh��j���9F&p��:���b��}�m�.��OY��+�L��\ξ嶮�SDM��F���j��;�gm��a�Y⟤X��}���j��q�D�,7>%��駨��ؓ�q��jX�Ax[��Y���:�V/�U�G������i_�: r����+?T��7��3�^Բ�������W1����[o��Ye�-��˟>=�XZy1/p��@�Y����Y��F͎�Y���x��,�[�f�3e���|��TD
SA�*�"�:����r*�@��_�NE4���׬�j?���OE�_��1�,��x*bӄх�c��{a��!T-�x��bA�8r*b'��3�WZP]c}��H{l��,Z^cm��Tt�}H|�nr!e�b�p+`� � A����՘�c�����F-a�b�^~�ϖ}ʾǖ��hG{;���3(�W���TD'X�L��W���$_���JK�_d��nI����/�Di��&)�X/j�	j{v���	,8�LV�T��?��"�}*��8����_#�GI=�lS
���C@R�V���@���r�#1�"H�}�Xa��d�n?$��,�9,�$���n�B^JuJֿY�s$XI������8�A���d��:[���#�b�#�>��>!<��7.�$-�=J�4�gK��p�gJ�4�gK��p�O�-�c������
�
2�W�ﱵ�1%�K*�D�*s���!��Y�u�����8�D����F�ݎ_:��N�w*���[(��9q�w;@�4���~pO�@�#[�DV^��O��z�V����p88����*�R�!�@�nr!e�`�p+`� � A���,��Ul9
�wS����YU&�'PfNf������b�I1"Ҟ]{(��Q� ���U���T��-'Xgy����c�d���X�j��g�2�u@v���A{�{i�m�׻��7�Nr
����%��M�h�?�v[�w�=4q�W�%N2�K�5����1Z�e�M���7W��
��G�;�+^(^uxl���Ɔ��#���a��W$B��� ƍ��
���]_S���T�w������Y���A��
�Q�5$���GC-q7�D7��.�B��c2ȳk��q�x���J��K�Q�	�����(�?.!�2O����@� ��_��`r�q<�V�T�ۖ,��[?�wku�5eY�1��y�Z��	�n ��왵ϻ��6�V�g
���&J���.N��%�:%��}<�Tj��,�Y��<��@˗{��B�x��@˗���}��^ew��*��S����bk��{J��; �ʻ��ӫ�2cq�jVl}��]F�8��5kE��-##X
��";��Dg*�j�{�$
�j�599ž�3{luH��b�{�Z��J�B>_��={�Ul�
�3�Cd�M.��\�n��$�\A(?���\Ŗ�1�UIڬP���(��+?~���-'�=��H�>_���rb]sD|���MMl[V-�;q"�5�¡���2�s��]��]}5���2�c�'�@C,��e��׳'5��&�߫_�B�8�ٽ�»wwOX`ϲe�r��҆�ak�R�ƍ�w�j
��5Ώ=҅�e�8�B��uu�����x�i]�HFp�G�,���e9_$Ł��(@�;����FߌiUv�zG���Z�ҍ��Q1�
������<�)�p�RF���P�K/�4�>d��p!@X	fG�� 9x�.BJ��R��p@N�J��F2������w��n;��΍M�y��B-����Ƌ�r�Z��##����K��Ϻ2ܩ�����+����_��?���l@�"x�d�`X̵�^���@���?��0��C�m�4���C�fo�``%���i�-��:w�����TiW�
�e\��d��
@����PH��V��y�	����_�i��Uu,.�D��]�Ps����/���>٥��ї�ٛ�����f2cyHFk<��,�S�Ɍ�Y ���e�/{�ȏ�|��c���P���,�Y���=������f�b�gLrKӅ�=�Lp�Tĭ{��|b���㩈/�>�0"8S��uo�T�d!T-��ر�qf��N	"ǗQ:�&q7?=s�!�!D���X<1E�}"3��,�pf���	��D��W~M�'�*�����ڨ-�*b��_>�ӕ�[N�n�����z�"
e���V2���$��'/[�x*"/��ÇQzN�$�-[�iK�a��H�͡�ÆS���(g�@�8��Y#��'��ճ�d�7�#/�?�H�fs��ÇS�a�F��&��F���F��zۧ�h׺u���/Mܚ�k0��᭷%R��	��:�L)N]s-�56%*!�F.�q�E�����~�	3�F�;-eK[q!��Ws���D0���J	�c�'����S�dtؚ�X�̮u���O�\�+�}�tkgT��KmM�R ]q�j2�\8�!s@{�|�J�^�^�k�7M���|�ɯ㛞�;AC��].�h�u��O�&:ٗ����&�A�e���~t�<�h<�q4a��R�
�0�!����bG~���Կ����`�„��}�xƒ�b��Uut�Iy���t�c��0O��Ns!���N�I�p��g�A��1Z.�Ȋ�ɬ���ى���"�E�Ag��5��56JYl���_F�q��	_�E�Nd��X�-��O���5���p�C~�+��?�?ؤ@���>�
{ IDAT�(�+=�"�0�J�Oe�@���X��f��S�Ҽ<`j�=�k�0�o�����N,1��<�n�.�� |�r��'�PS~V���*FK��Y�5Y�g�Y��b�USv��,`�fY�,��)����,��ر���ઊ��XP��ĩ�ύ9��\r*"�Py�G˽�-���Ҹ�[#ϟUF8��=��q{MGF8X[5��[#ϟUHUl�5��!iUv���H��ȩ�Q4�&��S�UU��=�R@$��!ۃ߼�x�V���]"�!��F�0C�����/�U�n���*����]	�iOf�@���nb��r���Vk#Q$��O/Z[U�v*���	�/�|�d�=�x��?�feH"��7��FFq��
���N��CcH����}si��}��83^�����9������!�}�!���+�=�(�漣�d��(�PV�&�\[���s���g�m�&_�r�U�NU���V�=���J��T�r�*���nVr�����I�JnUK�Is�Zۼ���.tnjj*)>X�r�X�T��R�m��v���76��y���!���?�Pi?�{e-=z�)t��|:�^�[�8V�Yn�s!hZ�����:�W�H�ˤ�� �M�f�pnj��2�/�Hn�Z���bdw] H�^9G�z�N��ߥۮ8�V~QG�^S�nH'��f��A@N=�.;�p��ąpc9xe?��פ�x�/�ƤP�u]˚{��5��Kf���~ɬ��Z����b3£o��s<�x�q�j�l|(�cQ��߸<���,��u��w���\�P�%(f_|Jq@?|�2H��
W��)?+����,�ŅX\Ů>�]�e׳�����Y�.Ͳ��Y�USv�3e�C.��k���/R�����"���%�k*��r��W{[v���q5+��o�PFD�Wl��j�Iӂ�s��Ul�O�PH>B٥�}W3�4���o>ٱ=�:�i����^��"|BHG���,�v*b�:�5D���&R�3�[��f	��#������*������V;�|=��Ϩf��r[��v#�)��M��_Q�j��-GX�J��}p1[����9h(�<� ��+���V���U��~vDJ���O�=�F�
�l�,|����\j �ءGH��³4WL9�2���X�M��=o̤�ޟg�Y`��GSu51``����Ϥ`F��}�Im�a��r!�@�	XM銀�h��@n��%�T[Z޴k��r�$۹��G[�y�$4������'�JiB���BI��Cc�����rmڵ����B�@��<{2]yb)�= �;��9
3_��TI�o�4S��o��p�xW��… �����ϗkj_�B�n$���&Z[���8��]Mt�s!h�{/���li���U2�\ �K��b�5���-�O����6�4ҩ�\e��ײ;��GB�
���Ԗ��J�{�Op#�Ŝ����k���P�p�Df�u�/�=w�) 8�e\�#�\��Y�f�4���A���{��i�ڧ�Ld�p<h�n��|&`I�)0r
���m�
�i��=حa��=i��=حa��MY`�i���j�-��j�/`��ʿ�ŧ�� �H����ڇz[l�r��f���	��H��bkcs[MG@�V���b°°�L����?I'
�j�5���Xt�T�N	"' ��k�Wl���!S����*�R��!_D`�p�)�3�[��f	"' ��k�Ul9�Z;hoX�TD�\�����[N�PkW{uhl���r�Ec}�V��$��C�����b�@��#ȟ�'�ؾm�m��*oB?[�@i�S�c��A#�Cxe��c���R�=��z�$p���=j�P���u�������igp���P������]�^7�u۶m�M&���%�l��e�g�����hj��rh�e×Կ��=��]�e�� ��I#��M
���b R��Ҷu���>��^��Be5+�����`�R�����H�{7D]b�k��z<:�z��@��-������4Z�z��M�}�)@�D�jěec�519?e�'�C�O9��~���\H	�x/e�`��!w��b����]�F�,\���4$� ֛f���̛2b��%�G}��
��TbO	r{Z���@�u����<������Z��1CGW���.�@�gW> ؍h�F��/V�'�<�ȟ6�a�>���#;�+�ϲIp��B����A�@
�>+B�_:�f/�2{S��=��Lf,��h��5�xj3��<$�5�ט�����G�U����|�^�����%D��I�<b�:�b��KsK�bk�	T&��Wl�o���0�j�_���Pph���-�1��P�@�/�8r*b'��3�JG� �[)�4�Ba��cV����TtFv��c�p�)33�[��f	"�O�#?"s[N�@]+Q�v���^*���+��@�֎vү��rTT�<1;�܅L�)�}�Cl[�- ������ۋږUQGb���:���)��W��E��R�*j}�30��R�7HBC�FM���#ު����? _8��7`�^F�+�o~����R}f����r5��i=8G x���t]�����UK��p�>˴�[Ⱥr*e�ߥ��o>�8��`Р�-�8���b���gE�3Z�y.�2U3����g��4��#�ʅ����#�Ψ�f1�y��8�
��#ң���ɸk�i<�����8�DzP��?��6�}�F�l��Z	N~�w��]X�������<���x6�8�l�8���5�8�7���mý�>V�5 t�7��g�!g����`+��l��T��:�1���dk����ap�J���g[��08��S~�Cڞ�/w�ѥ#@��(4�mv�@%�H.�c�*�����-��}M��dX� 
�������&�`��[�J����ȩ���{l%�j��K)&1�H�V'���F�E8챕"J�	�V��E��J@g��">b�p�)33�[��f	"/�_^��zs[N���j1�c�g�_>j��=��@��ζ�0(;���͸ǖ��k�<��+��-=�@�(k�9�5ӱ��שc��>\�2C}�d�tC��?\F��Gw�Ih�`���3�X�[�o� �ય��2�qS���yYw��J�u�gF@���=
Tw�hg�ek��7S,y�_L�>b@������H��)g�1b�f����P��?;c����x�Ԭ��[p���:[�t������c���o�2�9�E�>������r&�܋'��d&kP�:,4�.���z.�HR��Z>\L;ﻖE~RН�0*O�`"j�V}��
�5��Z�;�Z��n�j�~9N�ڿ���UĖ�'����B(-�Vp��R.W���p�Å���~�_ڥ(�ZFk.�3M�,��<����=Fc���F��Tâ/�}��ΗV�'1;,���R{�H	�֓�f�4�{s2aW|�I��<Z�([���
2H��w�Mf��Nbv�Ƅa�/?�������7Ks�4?�P^d���ˁ*C�YCV��V�@)�C	"n��z4N0k�LG������Y���ӳ�m��׳�Z53�|[rH~@���bK�T��c뻒�%�[*��<���cˌ�:�W�b�ۿ�D�آ6�D�#A�S��Dq�Q�ݒB�O
b���p��!T�-*��>G*�(
���+����J�/�Dڂ4���[)�Z"�3��\Ho�n`���$!#�<����Ul9��D���Z𑐑S~��}�-G�Q�n�H�.D$-�����v*���S�O�;�V���߻]q�@�ۚ��'[�v�^Ջ��;�7�wU�9�{��r�`����(��n�۴+��Y"��oN2�ޡ����5{�`�����3�]u$�;(���^�-���u���1�S��jd�nT�(��=<q�p��1ru+��N.�x`�Y�j������_�;�Ȟ:�\�$�?k-ݰ��d'3=�IT\c��H�gڗ^��pS1��h23��!�I����(ۨ�(�k�Fs�-��0���Ò|��Ȗq@�l�����JZF��-@U><������H�V[j�#��>�k���0%Fn�Lu��}�W���v���C-���x@�I��|��IZM�BjG�̀����e��\���zz���2�>{d_�"�ߌ&1G��MMhe?�� ��Z�y׉�ҨZg�I�Mf�d,��mr�)>���I
��Ū7�R�Q��B�7ħ2�#}*\��j$��������jm=���``�,k?�USv��,`�fY�,��)��y�K��㚲ݶ$�粊���+����"�oY\"
�;���2r�I�[���h?͊�-�R&�4���6lo�iæHSk�Ulmz|X�_�9R��a{t��d!T-�e&������ ���(q{bm��O�	��B�=	?��[)�������*(\�­`a�p3����+u��=����-�ji�ޟJ:13P>�o�+�����j4�c+���hx�[N0�;!8p2�[Z��<�u9�=��ؼ�Y����k.����̃�m���F���*������g)}P��HF�}��4}�7jZ��[Tw�����BNĀg�f�f\υx�P�q3�-~�[��}I��k,�d����U|ׂk��.�%'�V����<q5��n����Q���IHϥ��K��_EBF��j��3�.#[�c�W��=�Kx��?��и����7Bò<�҄w�A��o�M����В=�
)���zYP�@�_��H�r��۞-��~WFSk���x�c'&.9e�YG� l�Ӣ,����Ph;_)�\�_;��b�5.��Y�ȟ*��O{<�e�>��>�9G��@8e.�\ԨMP��T[�͌��XeI���0y��}1SRRj\�Y����OaM���c�7�y��S�Ɍ�Y ��ƳOm&3�O���(���RŔ!�`�d{l��^�#�iW@�B�k��*�LYܩΚ[�e$����Hۿ�!j�T�{l=����آ���XIC�[`�brj��(@"#��n�����Q8���X�c+eQK��f7��2q1C���n�Bdf�ӭ���r4Bۉ��آ̜r��,��-G��Vc�p�-�ѣ�*��r�u�!D�49ȶǖ���tè��Ot��ƽT��j�ٚ-�2�-PR�?M;~(A��7K�5�2*�p_�ʧS���L�2b�����5�z[�,SG����)��:��`��GP񠞪����$iTne�����ӈ$��A/|��J<���sh��u���F���d�
X�x�}{��c/��\r�(U8=�ʏ7�ԕ�yy�EK��p3�Y5�����@��$۪��I��о�nhO-;�R�d]����#�j����x`�y�J�x6Lh���Ț�����L�1�D����u!�  `	����:���\��>��q�3��p%� �z@�@��?�zsWJ����?�*WnLX�H���BZ�U.5�Q�)�B����!pu]�v]y�dM�wv��1ˑ��8
���1K�����M�`Xv��>���	Y�ʘؾ�dL�� �xqrtO"@Nˮ�����]�
<3���
��4���v��:I��U�)����8��3.��RB/=���K���|��RL<�4	���,��)�YA�`�T��+��ͻ���ٜ��/f�xW���JU��V��
���@�x�����P[��o|֥hWe!��C|y��?jI�%�|�1�,L2=�d����<���X����k<��f2c��@>��<��<$sc^���lb�-��~	��=�D��k�y[����8�[�}��D�+��wl�I�@�z:NJ�	��UH���[�;�O+��P����S,���	��SZ}�E�OEL	�@(n.�~����TtFwH$��M.��N�n��$������.6W��d���Aa�S�G�����?_�^��$�(F�}�n�a���e�UO-e;�I�u�(
��w��V�e`h�<5d?��#[��vZ��6ڶ��U�~�<x�1��z��ia�;̐�p��4��#�d��oզ-a;�e'��N�y�vOQ)3��~�������`�N�L��ҳ��X��J�#��G��$��3����3�N5�����ji��آA�2��R䨟�GC�*\��e��P���z阄<oH���`�8�ŪCqx���-	���23�^�"��v�R��E_Ҽ��*�ȹތ����C��_��0�-�=�~�`6�A��+h5��՛�I��[^�Z��XRk��u�ok��=�
ퟫ�N!,R�q��Ɛ�7O�����/��N����KI`u�������Ȫ�Wk��Ęm�z�1	7��Woܩ��"<+ C�5.���l< <��%[��-�֢՛��`���fH�p���Ż��?�g�%����H`[�=UjŇ�\�7>W���@�����]
 ?�c��J<#<{�8���+��`~h�q�gBJא&�E_2e&�9��j=�!���HXv$�l�d�2s�`F[v�,`�V͌�Y������Y���ӔN��pXtUŖ�/,��t�SO���Q WTl	�X���3��-3.�X_͊�OF^&�d�[��m�m����"~4zd�O�;R���^ic��!T-���Ê9�@���k8���"
B(�K�&�;�Tn��,cH���n3�[�!� Ad���|i�b�� ���N{#��"��'լe��r��j(j�ނ@�'����Y�V��$����?���b��Sk��A�g�ل���pS���Q���Z��(k���s�hڽ�=��5S�()����<�]5Y��ӕ���H;�|��_t)�=)[ۖ:Zs�i��F�x+�ut�0�?�
�4����Լ�kjۂӲ��s�-}G[��_S�'+ �����.�4A���I�U�Z����PƠA���7����)ɟ�[m�t�H/���ϰ@��A����u_Q�:�����	mB�4c� �~H�kɒ��XQd�,`$<�5n��yeLī��-�g�f"[�.C|$!�@8�9�`Ix4Y@� @ȁ���)��m�h~���
��m*��檦N�W��cYh�ӻ��Ԗ���jV������%�A���u���n���9��y@�}-Bh�t�%�?'W�<r�i��ӕ�kr։����G��~]B-뾖����F)�Ĭ*�{.�r}���1j�/��-�qSLJ����'�>p�ƕo*a�C�:r�OF'n�����Q
+l{�yiQ&/Ƞ}d5�d� 8,�	MM��g;��^��|��2��i.!�od��\���
���_i�Q���Dˠ��Zr@;�Br˳�2���shx���cf�xm�z�3`��J�ɚO��7����s򤥰2�W��s5����jk�#��h]�
��������"��*J FZ���x6��P[&옏�x�fn�r!�u9l�
!( �O�堆_�Ϧ�Q��O%�0��t<`	���\E^#!��`���1��͞��8�u&6r��綔�K@�q=#
��g�5l4�g#
��g�5l4�)�[����b+�/(ZQ�^���Q���K*�D*G�ګ�2rӔ��}*ⅳ�Q��b��Ո�A����屶n�ΟU(���c����OB���łH�TlutBd�RU��=�(5D�@H������J@��C"NEd�p�)#�­̖p3@"�G9U�l�b��h�h IDAT�En�I��iY�TU�^��(*�Z�"�{l�YE�ʵl[�0.@D��4w[�֏�Wv:�l�èH�n�k�h�����?�i@�Ɲ4��(�'1��<=y]1nek�Q>�}zf麄��,��4n�@[*_����<h�Ge�^�0�g����.q̅~�W�.iQ-�Y$�P��7>�H�.2�9���O��_J���?������Q�qx)P��K�n��l����
�F7�q��J'߅Ot��ڝ�@��]����C�a�S��
��Z �o�����C��MT��]1 ������}��R��1�����\`��ݔ��._�Y F���*W��~-T��
��V� �$�	Y�ը���-R]�py"Ú��LkG��v��T�� /�>:_��x6����Sh3cyf�eG_�vh�̘��hˎ���Ъ�1j��/�WUl�BG͝�^�E<Q"�8Q�22w�W�e&��Y�5������h�UӞ.CUs�Ulp��ˆO:���Ѹ�HB�.��X#�TluH��ҭU�^��"|>�b���9�*�R��!"��M.��7f��	����ޣ|{�Ls[N�@����p�v��(�Z5��b�IE��6���Q	�e�6�2��b�QƩR|��sd�زp`��чѡC~����鋍�	���?�v��F���;��9�P�//]I�����g?��6���L�>�B:�����0����gwsR������%���::���n����24w��n.O�m�,���2s��!� �<uSy�^�y݄��/j�T��
��cwĤ�;"�<��2��ҕ]�
�I�����пb�\)�j5n���E�ߤy#���}C3('�q"U^�Χ��EJ���~�К�*�8[ҤZ[���t���\�a��Y����#p@�Ԛ����^S����}nZ����R>��q��������^}�.���U��/7�.X8Yq�����8�{
�4)P��xaXW��WČ��eK�"�'���H�g0�i5L�H�yYѓY�
��n����Fk
�x�v��<�᚛�;E�:��+���cwtiQ�q�gyf��i���U��
�;�^�e1���K�����<��B��+�6t'-H�q�-��Bf����O$� f���Bᣕ�t�x��ƃ�o/3�ru@Y�!��ؑ�Ρ�S>��zd4�#G��I�} ��ƳOm&3�g�d����<���X&-0%_�b�^��̎kD!R�u�t���A�T"��b�n��^Ŗ�ayL͊����e�`����lk��ӂES9���6+�0!G*���&:�4��Zf��3{luH}��JV�Z��J���P�C:u����TtFt�'3��\H���!�
&7H={��v��*����M�:��M�@A�@�_��|�M߳Wl9	����ֆ�eg���UԲUl9	���E
fN�e���
 �?�ĝkYeU�R���S(��BK)H�x��<M�5O%m����J��ϣ��Q�.�	F2�y��<
w�$�ظ��^<!*wz	��M����y�~�K�ॶj�j�
K���Jտ3m
� 4����Ÿ<B��˥�#��}��$(��1���ފj�^~��A>�����m�H�?�.��&�$���Ii^v w0!eJ��@�{��d!9m�]�6B�A
D���iRb�N�[�*�6�:s= ���W%7���$�m�ï$_�I�Ȏ�Y��$4&1�d$�u_�)��k4;}�u|{ƥ�-J��M��Ҫ�m߱��#�3ok����#�5&;���R�5[pS@�N!
�Ưw������rB��MpĊ�u�,�O��6��˄�B��ehZ�\HŚ�l��d��R��^�{��z�d)�@�NbYZ�
 �v�?�ŝ_�p������QW�~����E�4VZ>G�JA+d�u����6�X���Hk�ãgHb����h:46֕���vQ4��+��%7\��qȸ�ۨ�7I~l�1�U��B'7�R��t���Yh:~���4+e�Ac�V�[!MnPZ
f��@��)��Nc�^���|�5�w(;�YZ��6�P���f�y N���_��5O3=^�
��3*�`�*RK��|���Vd'���O(`�(������k<��f2cyHFk<��,�S�Ɍe��� {��bK���ɉu��6���/E�v�B�2sr�W�����~���\�h�(�*bS㶚�/��y*b�ŏ�Bđ�����D��4��J.}�Xt�TD	MkҲ�K̽�z�VJ�d�󇨝��ޞj�b+U����q��|��V�0A�@�HO�,�ߛ��r2Z�C��>Q
dd�/x�v��-'DQ����#���@��Eo�r[Ŗ��k
A�`��ױUly�j5�ϳ�����ͣ�t�v���I���x�	��1GDC���޲����ў�V��:l�R��Ͽ�l
�+���!|�5�����Ow��vȇ�|Ks_����@q�&�������3��'����~�_6����ew0�X�חv�t~tֿu!�����˾
���Ք\w��L\X|_)��:6�N�q���)� @��n����|���vUų�A��������n7�g	�\�OӮ�ھ#Z'���貤��w?�&C� < X\Ȍ۠/�EMpy.��7���\�!�)�
A�k\pd"X��,��F躖�`�Fk(n�O��@X�<���$[�_�\#�Ǽ��:��`��'���:I��}��&d��y��M���Wt��'�d'��=����e-*��~ɥK���d��/�B�J�A�@Q���<*L)�v���r��fe���6�}������"���Nf;�io%,�`�Y�.�\NF���� ɾ�$�9^�y��d��,���x]�Y��&�dz@���u�g^�Lvs�pZ��wש�B���jn�[%�>暊-��X��u^�V��k�u�[N,+#'NE��X�!����UOE<����sf���=��4�����X g�؊�	5bFZ��s�Wl�^�BB�#����Z�V�:M�f�PL�b�p+h� � Ai�u_2W��d��6���K�(߼�E��-'�S�*��(���l[�0.4D��7�Uly�Z5�ͳ�m��7�x�ϷJL�o�A7M2)���<�g��JI�W����:�H��h�^L�0+..����g�M��1zwŧt���*��{�i��,b� ��;���.�/v�԰����k:��_�@Qpܯ-x���$-�v�]	2���>.��b�Wt��"����i��E���kr��_�N$�A��6Z����-���!+pjc�pP�4���F�X\�;���:����)�E��}�a���֔Ao%e.@��ggN7J�f�'������>X�U+3&WK�Z��EaYe�����*�Zυ�ҧ�2���
B(�Sb�����R1� ƀ�9�<�L�z�S��\��B��I*�ʹ�,K�r�B�.�L��^z�k-d�>YS��� �r��{a1ǒ>����3;kN(�ǩgb3�SO`�Ҩ�M��۹\�W�Fװ��X�I�����x^�Y��6�˳@2Z�y�g��Lf,��h��5�xj3��LY ��,?��=��*����^�u�IJr�[Q�wo��*��q]ۯѬ�Z�‘e"�?q��WӀï�|ՋG�Bl��ZC��`iE
���U/�$mj�%�{$
�j�U�],�"KLKOD9����~Gw]���s�|�a��a7ni��镝V�\c�b�
@<t�şt��u�,ڲ&�?������H���*��X�������݅���x�1C�@L�ҳQz�.�;is�$�Pn����k֘�زf�x��v�ۦ�=��G���V����b�
�~M�����Ѵm_j�1)G�H�hWCu蜊��l���5l[V�1�\#D|���>f�ز�g��=u	���b�i�'���}�$V���1�e�nJ-{N�g��v,�a���%����Q�Z۞-��B��:>];9�&r}@�Ŵ��c,0�ț)���=���.��=�b|�M�����+T?�2��bH�|�WJֲk��J���(��X�z�����g�4�:�gVM��ϳ�]�e׳�����Y�.Ͳ��Y�USv��,`�fY�,��)��y�K����,�Ra���=R~��l!�)(�(��B���ţJDQtǩ�D�G]�W��o���t�u-I�fw�vtԤ����P-���u�']�eV����T�B�Z��?/���Ul%����<�Wz����W��tQ��P8�R��Z�Vj,Х��0C��
Wa�p+X� � A����՚��r2��;h��T>"�)���l�e��r�f?D�ԡ!P�_(*�\�V��$�|����V��@ֱ�P��6x0�o�D
/������CG�7�@9�N�����/v7���U�t5�//�L{ A�JW@����ՍW��
�"

�ŗ������G�i�!��'�P|��ۧ�I7�(�II�r��ͳ6������ʷ��_�^r5�'��S�@�S����Gu}]�"��X*Ͱ�
n����0Y�Q��Υ?��ޛοX�@F�Q�AO�]w�R
�:��UӲ�Xf]�Z��ת��'��HC��Mekx�5j�~�Q8�F�R'2r��f{c}��Uk[o��yɐ�y)���OZߎgE�ҵ�Y�h�ɚe��`���,�Fm�)�����'#٘��
w�<��#�l���I8�N���{hY�4�6�:����ໞ�#	�\i��
� ��ʭ_���w�Uu,��K�r ZW�ӳ�g��\Ȣ-_�����|��][�p�`�J�f��׃����-���M��-ˁh��.����	��R%�(�A�-´�v1�L�RK��@5�/��Eƫ!��g����j�"��B��S��%T:��"ąX�}V�Կ|�
�S�s�g'�mJ�n��5�*��%e�@�JX٤}'ْ��ܛ)Cu@x"!����8��(LJ���f�n����
�V�r@���U}'UK�0�)1�q"��|��%���i
����j�iQ(���ex��
� ��`d�	��S��K{Eu����<E�<X���{1`Q��/�,`Y��,`Q��/�,`Y��,`Q��/�,`Y��,`Q��/�,`Y��,`Q��/����v�..5��J���LE�.˺�0�ҹ㉠����b�ֿ��y��fI��g�O�V"���g�?��rS;�5��
�X!�T���rS
`����2F7g���v��S�j�4�d���
���r!��$-M*�)�-���0Iu���e8��7#��}�w�k|�(�?Ѭ�ؼ�&=#38��:������o�����~��LDb��.�'9��VM�I�Y:��j�"���B���q�r�:Y@�V1D>?3�$wb�p);��������/[fn�-'��qG+���5ӵ�(#;P��%���r@��Լ��":�"
QZVZ�_/�f�c�I�������l{l%0b���#-�V}���\��H���������Fv��w������}�l��ޔ �5'Β�|��k�޺gU�h����4�I�r{���� �-
��n4a�9��P��S�[��]z�&q_�q�51}a������N6������>�f-���d6��Ō��O���؇�`�#�d�}��3+�A �� �kvd+�u;��ï����=Y�sɸP�^�������&�S(KZ<��\)��
�¸qb̼�_��1�>��j�e�����L|������ݑ�8�uB-[�ŕ4`�hE�Jg��&�8q�@<DS[>hi��ţ�^��������֮ś,�C�]b�Bj�1�X��R9Z@8~RJ&���N�ֳ3* ����Dg��Od�+Kl�%3�O~� ~9��f�0��qRٌP�8���	��7O2^EH=lp!�Q�E<&�=��g �j#&5@(��V���@L|j��&����ri��FjMv��[�6ȷ�"
Z�{������hL�����]�Y��*�ȳ@���v�gn�Lr �:�8�#�=������u��B�R	�K��"�����=���]{/�t��7��h�ֆ]�5-�Ω�W��}Ja!	�H��]��@OB��S
�E�P�i{ z��(���W��p
�L�	������Z�V*, kY 
�I`�p���p%@gL0Yµ2D^z�|�5�*������vj�т��'�������b�I��H����:�DnZZQ����-'X'A�`��5l[�ZM��,`BY�t�, �5��f�1�,2s�k���%��]$�$�����'^B���]�/	"�q�>���u����ԍm�l���7ͥ��S��I��fL���}�S~i���r�׵�)m����w=t!ul�Z�Y�&~�רlE�WcQ�R
��N�@�+��$��m ,
YJn����*k�@*�+u�T���:r< �">dX%��ʄ�(�������<���$����I��e�K9�R�jxV�cD)|JӨ�� CD~�B{ލ=��q�ɺ52�~x�ޙX^�!MFv�q5��� )
ۺ�C�Gz�8,h�r�#۶��r��qYN��'��Wu&1�g�$���\ՙ�`��P�K<pUg�yHBi\/1e�-S
��bK���$�T0pzb�f�Ͷ)�%�@8�(��@����*�xz���7	�ݴ2"�+�hW}
u�i�T~[�i�kΑ�-�Uk$
�n����C[�Q���R�~��=�(5D>��p�f��Z�V���"��!��B����VfK� 
�#���v���-Gc�1D�Ѯ=�a�Y����[��"QsQD{�0|D�E4���-GX"�
��--�^�Tv�H�U_���]
���ޏ��+&RᠾԫGf��k�b�R
�D�mm�>�����VP��#i��q��*Y�������$YƖ��_r�y�ǫ���BɡC)�w1���3^/y��k�������>l(���$,a���*������ゖ�^5�z�?��(:��0��O�0Vz
��\OXa��T��|I6�V��2O_p
?�p�oo��z�5S7�\܉'����IYI�M;k�7E�_�ؼ��.�ؕ�� `-�Z9�	�G��,ү%+��"�Yr>�V�ߔ|V�
�@F:E �4��ྦྷ�[C����[�a���+��FRs��XB��ճ�<��_�1x`�	�L���,f_�&[�fK=��s�9W�
!wUN�����>p#d��<���
��K ;�7��HZ�b����3�5���U,�K�Ƣ ��yu
� �Q.��d'XJд�]�B�eyRC� ��`I����E &.�&>4�X�����8	��:�ӝȆ�
@~�@̠���R�-Y�E�F}�nXf t!�h%@�,[��Ɇ�d�5Uw�t9�(�~߳��6߳����~߳��6ߔn��OawUl��
��:
�r�[���莊-����*���4%�k������H��]�n�ޚ�p����[��
�'p���q�յ	B����|"���`����_ϴ����^����B����kw�Ѳ�{, K(PHG�!� �;�;L@���Wv���e���r2�7�l��V�=�|��I+�s�
��-'"��7�S�Ω�>A���iE9$�ٚrb^D��P���-���|N$�<�p��o��=��@�aD���'�,0�_~��o�C�BC���;�?�5@������;L,�l�SDTxG��e�w��BP��G��eԸ@��Ӿ��O�m�W�J�IDAT�}DN������N~U[�U)�W�K������\����>qdm+ݺ��ۣ}N_�/.�ދ�B���W�x���/������{]���|M�:~N)��U��El4|��	!� ��1�\��d�S%�!  �@@م�=�Ox���	.z���Uj}�g^-�e��3�� *��>#!�A�R���\=��a7�L��p��c^�����o�5������-C(�e?��qdu����%��ޑ��;�%s��+�
�B�����
~��� $\
.�QT��L�;�X{h��\,��<fP��/G?�(���1O�M�]��a���E��0��2�����e���,(����
��0�a��x�Ki-��(g�xȂ��.�4���ZpLth�XP��d!yPY�r|�H��r��u,�Ѱ�Gl�к��Pf���Pp'����1O�!x!h��R���T�S ,�\�ʁ*��~�w�w[b@b�:fT��[<���������rvv̅��O9��@//��9-
&g���r�_j��Z���yK�o���e�Q�dq!������*p�����c�x��� ����[zֱ��,dE�d������<��d��xHVs����Y`l>����c�"��4��B��f�	%��b�-"�R8�?�[�5��n�D�SIEND�B`�lib/themes/gray/css/theme.css000064400000121675147361034400012163 0ustar00@font-face {
  font-family: 'Noto Sans';
  src: url('../../../fonts/notosans/NotoSans-Regular.eot');
  src: url('../../../fonts/notosans/NotoSans-Regular.eot?#iefix') format('embedded-opentype'),
      url('../../../fonts/notosans/NotoSans-Regular.woff2') format('woff2'),
      url('../../../fonts/notosans/NotoSans-Regular.woff') format('woff'),
      url('../../../fonts/notosans/NotoSans-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
.elfinder {
  color: #546E7A;
  font-family: "Noto Sans";
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.elfinder.ui-widget.ui-widget-content {
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
td{
  font-family: "Noto Sans";
}
/**
 * Input & Select
 */
input.elfinder-tabstop,
input.elfinder-tabstop.ui-state-hover,
select.elfinder-tabstop,
select.elfinder-tabstop.ui-state-hover {
  padding: 5px;
  color: #666666;
  background: #fff;
  border-radius: 3px;
  font-weight: normal;
  border-color: #888;
}
select.elfinder-tabstop,
select.elfinder-tabstop.ui-state-hover {
  width: 100%;
}
/**
 * Loading
 */
.elfinder-info-spinner,
.elfinder-navbar-spinner,
.elfinder-button-icon-spinner {
  background: url("../images/loading.svg") center center no-repeat !important;
  width: 16px;
  height: 16px;
}
/**
 * Progress Bar
 */
@-webkit-keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-animation {
  from {
    background-position: 1rem 0;
  }
  to {
    background-position: 0 0;
  }
}
.elfinder-notify-progressbar {
  border: 0;
}
.elfinder-notify-progress,
.elfinder-notify-progressbar {
  -webkit-border-radius: 0;
  border-radius: 0;
}
.elfinder-notify-progress,
.elfinder-resize-spinner {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 1rem 1rem;
  -webkit-animation: progress-animation 1s linear infinite;
  animation: progress-animation 1s linear infinite;
  background-color: #0275d8;
  height: 1rem;
}
/**
 * Quick Look
 */
.elfinder-quicklook {
  background: #232323;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-quicklook-titlebar {
  background: inherit;
}
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
  border: inherit;
  opacity: inherit;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  background: rgba(66, 66, 66, 0.73);
}
.elfinder .elfinder-navdock {
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
  background-image: none;
}
/**
 * Toast Notification
 */
.elfinder .elfinder-toast > div {
  background-color: #323232 !important;
  color: #d6d6d6;
  -webkit-box-shadow: none;
  box-shadow: none;
  opacity: inherit;
}
.elfinder .elfinder-toast > div button.ui-button {
  color: #fff;
}
.elfinder .elfinder-toast > .toast-info button.ui-button {
  background-color: #3498DB;
}
.elfinder .elfinder-toast > .toast-error button.ui-button {
  background-color: #F44336;
}
.elfinder .elfinder-toast > .toast-success button.ui-button {
  background-color: #4CAF50;
}
.elfinder .elfinder-toast > .toast-warning button.ui-button {
  background-color: #FF9800;
}
.elfinder-toast-msg {
  font-family: "Noto Sans";
  font-size: 14px;
}
/**
 * For Ace Editor
 */
#ace_settingsmenu {
  font-family: "Noto Sans";
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important;
  background-color: #1d2736 !important;
  color: #e6e6e6 !important;
}
#ace_settingsmenu,
#kbshortcutmenu {
  padding: 0;
}
.ace_optionsMenuEntry {
  padding: 5px 10px;
}
.ace_optionsMenuEntry:hover {
  background-color: #111721;
}
.ace_optionsMenuEntry label {
  font-size: 13px;
}
#ace_settingsmenu input[type="text"],
#ace_settingsmenu select {
  margin: 1px 2px 2px;
  padding: 2px 5px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  border: 0;
  background: rgba(9, 53, 121, 0.75);
  color: white;
}
/**
 * Icons
 * Webfont is generated by Fontello http://fontello.com
 */
@font-face {
  font-family: material;
  src: url("../icons/material.eot?98361579");
  src: url("../icons/material.eot?98361579#iefix") format("embedded-opentype"), url("../icons/material.woff2?98361579") format("woff2"), url("../icons/material.woff?98361579") format("woff"), url("../icons/material.ttf?98361579") format("truetype"), url("../icons/material.svg?98361579#material") format("svg");
  font-weight: normal;
  font-style: normal;
}
.elfinder-button-menu {
	margin-top: 24px !important;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: material;
    src: url("../icons/material.svg?98361579#material") format("svg");
  }
}
.ui-icon,
.elfinder-button-icon,
.ui-widget-header .ui-icon,
.ui-widget-content .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  text-indent: inherit;
}
.ui-button-icon-only .ui-icon {
  font: normal normal normal 14px/1 material;
  background-image: inherit !important;
  text-indent: 0;
  font-size: 16px;
}
.elfinder-toolbar .elfinder-button-icon {
  font-size: 20px;
  color: #ddd;
  margin-top: -2px;
}
.elfinder-button-icon {
  background: inherit;
}
.elfinder-button-icon-home:before {
  content: '\e800';
}
.elfinder-button-icon-back:before {
  content: '\e801';
}
.elfinder-button-icon-forward:before {
  content: '\e802';
}
.elfinder-button-icon-up:before {
  content: '\e803';
}
.elfinder-button-icon-dir:before {
  content: '\e804';
}
.elfinder-button-icon-opendir:before {
  content: '\e805';
}
.elfinder-button-icon-reload:before {
  content: '\e806';
}
.elfinder-button-icon-open:before {
  content: '\e807';
}
.elfinder-button-icon-mkdir:before {
  content: '\e808';
}
.elfinder-button-icon-mkfile:before {
  content: '\e809';
}
.elfinder-button-icon-rm:before {
  content: '\e80a';
}
.elfinder-button-icon-trash:before {
  content: '\e80b';
}
.elfinder-button-icon-restore:before {
  content: '\e80c';
}
.elfinder-button-icon-copy:before {
  content: '\e80d';
}
.elfinder-button-icon-cut:before {
  content: '\e80e';
}
.elfinder-button-icon-paste:before {
  content: '\e80f';
}
.elfinder-button-icon-getfile:before {
  content: '\e810';
}
.elfinder-button-icon-duplicate:before {
  content: '\e811';
}
.elfinder-button-icon-rename:before {
  content: '\e812';
}
.elfinder-button-icon-edit:before {
  content: '\e813';
}
.elfinder-button-icon-quicklook:before {
  content: '\e814';
}
.elfinder-button-icon-upload:before {
  content: '\e815';
}
.elfinder-button-icon-download:before {
  content: '\e816';
}
.elfinder-button-icon-info:before {
  content: '\e817';
}
.elfinder-button-icon-extract:before {
  content: '\e818';
}
.elfinder-button-icon-archive:before {
  content: '\e819';
}
.elfinder-button-icon-view:before {
  content: '\e81a';
}
.elfinder-button-icon-view-list:before {
  content: '\e81b';
}
.elfinder-button-icon-help:before {
  content: '\e81c';
}
.elfinder-button-icon-resize:before {
  content: '\e81d';
}
.elfinder-button-icon-link:before {
  content: '\e81e';
}
.elfinder-button-icon-search:before {
  content: '\e81f';
}
.elfinder-button-icon-sort:before {
  content: '\e820';
}
.elfinder-button-icon-rotate-r:before {
  content: '\e821';
}
.elfinder-button-icon-rotate-l:before {
  content: '\e822';
}
.elfinder-button-icon-netmount:before {
  content: '\e823';
}
.elfinder-button-icon-netunmount:before {
  content: '\e824';
}
.elfinder-button-icon-places:before {
  content: '\e825';
}
.elfinder-button-icon-chmod:before {
  content: '\e826';
}
.elfinder-button-icon-accept:before {
  content: '\e827';
}
.elfinder-button-icon-menu:before {
  content: '\e828';
}
.elfinder-button-icon-colwidth:before {
  content: '\e829';
}
.elfinder-button-icon-fullscreen:before {
  content: '\e82a';
}
.elfinder-button-icon-unfullscreen:before {
  content: '\e82b';
}
.elfinder-button-icon-empty:before {
  content: '\e82c';
}
.elfinder-button-icon-undo:before {
  content: '\e82d';
}
.elfinder-button-icon-redo:before {
  content: '\e82e';
}
.elfinder-button-icon-preference:before {
  content: '\e82f';
}
.elfinder-button-icon-mkdirin:before {
  content: '\e830';
}
.elfinder-button-icon-selectall:before {
  content: '\e831';
}
.elfinder-button-icon-selectnone:before {
  content: '\e832';
}
.elfinder-button-icon-selectinvert:before {
  content: '\e833';
}
.elfinder-button-icon-theme:before {
  content: '\e859';
}
.elfinder-button-icon-logout:before {
  content: '\e85a';
}
.elfinder-button-search .ui-icon.ui-icon-search {
  font-size: 17px;
}
.elfinder-button-search .ui-icon:hover {
  opacity: 1;
}
.elfinder-navbar-icon {
  font: normal normal normal 16px/1 material;
  background-image: inherit !important;
}
.elfinder-navbar-icon:before {
  content: '\e804';
}
.elfinder-droppable-active .elfinder-navbar-icon:before,
.ui-state-active .elfinder-navbar-icon:before,
.ui-state-hover .elfinder-navbar-icon:before {
  content: '\e805';
}
.elfinder-navbar-root-local .elfinder-navbar-icon:before {
  content: '\e83d';
}
.elfinder-navbar-root-ftp .elfinder-navbar-icon:before {
  content: '\e823';
}
.elfinder-navbar-root-sql .elfinder-navbar-icon:before {
  content: '\e83e';
}
.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before {
  content: '\e83f';
}
.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before {
  content: '\e840';
}
.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before {
  content: '\e841';
}
.elfinder-navbar-root-box .elfinder-navbar-icon:before {
  content: '\e842';
}
.elfinder-navbar-root-trash .elfinder-navbar-icon:before {
  content: '\e80b';
}
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before {
  content: '\e825';
}
.elfinder-navbar-arrow {
  background-image: inherit !important;
  font: normal normal normal 14px/1 material;
  font-size: 10px;
  padding-top: 3px;
  padding-left: 2px;
  color: #a9a9a9;
}
.ui-state-active .elfinder-navbar-arrow {
  color: #fff;
}
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e857';
}
.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before {
  content: '\e858';
}
.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before {
  content: '\e851';
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
  font-size: 8px;
  margin-top: 5px;
  margin-right: 10px;
}
div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical {
  margin: 2px;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,
.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,
.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,
.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,
.elfinder-navbar-root-trash .elfinder-cwd-icon {
  background-image: inherit;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,
.elfinder-navbar-root-box .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  font-family: material;
  background-color: transparent;
  color: #525252;
  font-size: 55px;
  position: relative;
  top: -10px !important;
  padding: 0;
  display: contents !important;
}
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,
.elfinder-navbar-root-local .elfinder-cwd-icon:before {
  content: '\e83d';
}
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,
.elfinder-navbar-root-ftp .elfinder-cwd-icon:before {
  content: '\e823';
}
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,
.elfinder-navbar-root-sql .elfinder-cwd-icon:before {
  content: '\e83e';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before {
  content: '\e83f';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before {
  content: '\e840';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before {
  content: '\e841';
}
.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,
.elfinder-navbar-roor-box .elfinder-cwd-icon:before {
  content: '\e842';
}
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,
.elfinder-navbar-root-trash .elfinder-cwd-icon:before {
  content: '\e80b';
}
.elfinder-dialog-icon {
  font: normal normal normal 14px/1 material;
  background: inherit;
  color: #524949;
  font-size: 37px;
}
.elfinder-dialog-icon:before {
  content: '\e843';
}
.elfinder-dialog-icon-mkdir:before {
  content: '\e808';
}
.elfinder-dialog-icon-mkfile:before {
  content: '\e809';
}
.elfinder-dialog-icon-copy:before {
  content: '\e80d';
}
.elfinder-dialog-icon-prepare:before,
.elfinder-dialog-icon-move:before {
  content: '\e844';
}
.elfinder-dialog-icon-upload:before,
.elfinder-dialog-icon-chunkmerge:before {
  content: '\e815';
}
.elfinder-dialog-icon-rm:before {
  content: '\e80a';
}
.elfinder-dialog-icon-open:before,
.elfinder-dialog-icon-readdir:before,
.elfinder-dialog-icon-file:before {
  content: '\e807';
}
.elfinder-dialog-icon-reload:before {
  content: '\e806';
}
.elfinder-dialog-icon-download:before {
  content: '\e816';
}
.elfinder-dialog-icon-save:before {
  content: '\e845';
}
.elfinder-dialog-icon-rename:before {
  content: '\e812';
}
.elfinder-dialog-icon-zipdl:before,
.elfinder-dialog-icon-archive:before {
  content: '\e819';
}
.elfinder-dialog-icon-extract:before {
  content: '\e818';
}
.elfinder-dialog-icon-search:before {
  content: '\e81f';
}
.elfinder-dialog-icon-loadimg:before {
  content: '\e846';
}
.elfinder-dialog-icon-url:before {
  content: '\e81e';
}
.elfinder-dialog-icon-resize:before {
  content: '\e81d';
}
.elfinder-dialog-icon-netmount:before {
  content: '\e823';
}
.elfinder-dialog-icon-netunmount:before {
  content: '\e824';
}
.elfinder-dialog-icon-chmod:before {
  content: '\e826';
}
.elfinder-dialog-icon-preupload:before,
.elfinder-dialog-icon-dim:before {
  content: '\e847';
}
.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon {
  font-size: 16px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon {
  font-size: 15px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before {
  content: '\e837';
}
.elfinder .elfinder-contextmenu-extra-icon {
  margin-top: -6px;
}
.elfinder .elfinder-contextmenu-extra-icon a {
  padding: 5px;
  margin: -16px;
}
.elfinder-button-icon-link:before {
  content: '\e81e' !important;
}
.elfinder .elfinder-contextmenu-arrow {
  font: normal normal normal 14px/1 material;
  background-image: inherit;
  font-size: 10px !important;
  padding-top: 3px;
}
.elfinder .elfinder-contextmenu-arrow:before {
  content: '\e857';
}
.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
  background-image: inherit;
}
.elfinder-quicklook .ui-resizable-se {
  background: inherit;
}
.elfinder-quicklook-navbar-icon {
  background: transparent;
  font: normal normal normal 14px/1 material;
  font-size: 32px;
  color: #fff;
}
.elfinder-quicklook-titlebar-icon {
  margin-top: -8px;
}
.elfinder-quicklook-titlebar-icon .ui-icon {
  border: 0;
  opacity: .8;
  font-size: 15px;
  padding: 1px;
}
.elfinder-quicklook-titlebar .ui-icon-circle-close,
.elfinder-quicklook .ui-icon-gripsmall-diagonal-se {
  color: #f1f1f1;
}
.elfinder-quicklook-navbar-icon-prev:before {
  content: '\e848';
}
.elfinder-quicklook-navbar-icon-next:before {
  content: '\e849';
}
.elfinder-quicklook-navbar-icon-fullscreen:before {
  content: '\e84a';
}
.elfinder-quicklook-navbar-icon-fullscreen-off:before {
  content: '\e84b';
}
.elfinder-quicklook-navbar-icon-close:before {
  content: '\e84c';
}
.ui-button-icon {
  background-image: inherit;
}
.ui-icon-search:before {
  content: '\e81f';
}
.ui-icon-closethick:before,
.ui-icon-close:before {
  content: '\e839';
}
.ui-icon-circle-close:before {
  content: '\e84c';
}
.ui-icon-gear:before {
  content: '\e82f';
}
.ui-icon-gripsmall-diagonal-se:before {
  content: '\e838';
}
.ui-icon-locked:before {
  content: '\e834';
}
.ui-icon-unlocked:before {
  content: '\e836';
}
.ui-icon-arrowrefresh-1-n:before {
  content: '\e821';
}
.ui-icon-plusthick:before {
  content: '\e83a';
}
.ui-icon-arrowreturnthick-1-s:before {
  content: '\e83b';
}
.ui-icon-minusthick:before {
  content: '\e83c';
}
.ui-icon-pin-s:before {
  content: '\e84d';
}
.ui-icon-check:before {
  content: '\e84e';
}
.ui-icon-arrowthick-1-s:before {
  content: '\e84f';
}
.ui-icon-arrowthick-1-n:before {
  content: '\e850';
}
.ui-icon-triangle-1-s:before {
  content: '\e851';
}
.ui-icon-triangle-1-n:before {
  content: '\e852';
}
.ui-icon-grip-dotted-vertical:before {
  content: '\e853';
}
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
  background-image: inherit;
  font: normal normal normal 18px/1 material;
  color: #4d4d4d;
}
.elfinder-na .elfinder-perms:before {
  content: '\e824';
}
.elfinder-ro .elfinder-perms:before {
  content: '\e835';
}
.elfinder-wo .elfinder-perms:before {
  content: '\e854';
}
.elfinder-group .elfinder-perms:before {
  content: '\e800';
}
.elfinder-lock:before {
  content: '\e834';
}
.elfinder-symlink:before {
  content: '\e837';
}
.elfinder .elfinder-toast > div {
  font: normal normal normal 14px/1 material;
}
.elfinder .elfinder-toast > div:before {
  font-size: 24px;
  position: absolute;
  left: 15px;
  top: 3px;
}
.elfinder .elfinder-toast > .toast-info,
.elfinder .elfinder-toast > .toast-error,
.elfinder .elfinder-toast > .toast-success,
.elfinder .elfinder-toast > .toast-warning {
  background-image: inherit !important;
}
.elfinder .elfinder-toast > .toast-info:before {
  content: '\e817';
  color: #3498DB;
}
.elfinder .elfinder-toast > .toast-error:before {
  content: '\e855';
  color: #F44336;
}
.elfinder .elfinder-toast > .toast-success:before {
  content: '\e84e';
  color: #4CAF50;
}
.elfinder .elfinder-toast > .toast-warning:before {
  content: '\e856';
  color: #FF9800;
}
.elfinder-drag-helper-icon-status {
  font: normal normal normal 14px/1 material;
  background: inherit;
}
.elfinder-drag-helper-icon-status:before {
  content: '\e824';
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before {
  content: '\e854';
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before {
  content: '\e84c';
}
/**
 * MIME Types
 */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
  background-image: url("../images/icons-small.png");
}
.elfinder-cwd-icon {
  background: url("../images/icons-big.png") 0 0 no-repeat;
}
.elfinder-cwd-icon:before {
  font-size: 10px;
  position: relative;
  top: 27px;
  left: inherit;
  padding: 1px;
  background-color: transparent;
}
.elfinder-info-title .elfinder-cwd-icon:before {
  top: 32px;
  display: block;
  margin: 0 auto;
}
.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  background-color: #313131 !important;
}
.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
  left: inherit;
  background-color: #313131;
  width: 60px;
}
.elfinder-quicklook .elfinder-cwd-icon:before {
  top: 33px;
  left: 50% !important;
  position: relative;
  display: block;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
}
.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before {
  content: 'zip' !important;
}
.elfinder-cwd-icon-x-xz:before {
  content: 'xz' !important;
}
.elfinder-cwd-icon-x-7z-compressed:before {
  content: '7z' !important;
}
.elfinder-cwd-icon-x-gzip:before {
  content: 'gzip' !important;
}
.elfinder-cwd-icon-x-tar:before {
  content: 'tar' !important;
}
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before {
  content: 'bzip' !important;
}
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
  content: 'rar' !important;
}
.elfinder-cwd-icon-directory {
  background-position: 0 -50px;
}
.elfinder-cwd-icon-application {
  background-position: 0 -150px;
}
.elfinder-cwd-icon-text {
  background-position: 0 -200px;
}
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty {
  background-position: 0 -250px;
}
.elfinder-cwd-icon-image {
  background-position: 0 -300px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop {
  background-position: 0 -350px;
}
.elfinder-cwd-icon-vnd-adobe-photoshop:before {
  content: none !important;
}
.elfinder-cwd-icon-postscript {
  background-position: 0 -400px;
}
.elfinder-cwd-icon-audio {
  background-position: 0 -450px;
}
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
  background-position: 0 -500px;
}
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd {
  background-position: 0 -550px;
}
.elfinder-cwd-icon-pdf {
  background-position: 0 -600px;
}
.elfinder-cwd-icon-x-msaccess {
  background-position: 0 -650px;
}
.elfinder-cwd-icon-x-msaccess:before {
  content: none !important;
}
.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 {
  background-position: 0 -700px;
}
.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 {
  background-position: 0 -750px;
}
.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 {
  background-position: 0 -800px;
}
.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before {
  content: none !important;
}
.elfinder-cwd-icon-vnd-ms-office,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-openofficeorg-extension,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template {
  background-position: 0 -850px;
}
.elfinder-cwd-icon-html {
  background-position: 0 -900px;
}
.elfinder-cwd-icon-css {
  background-position: 0 -950px;
}
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
  background-position: 0 -1000px;
}
.elfinder-cwd-icon-x-perl {
  background-position: 0 -1050px;
}
.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
  background-position: 0 -1100px;
}
.elfinder-cwd-icon-x-ruby {
  background-position: 0 -1150px;
}
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
  background-position: 0 -1200px;
}
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr {
  background-position: 0 -1250px;
}
.elfinder-cwd-icon-x-jar,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
  background-position: 0 -1300px;
}
.elfinder-cwd-icon-x-jar:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before {
  content: none !important;
}
.elfinder-cwd-icon-x-php {
  background-position: 0 -1350px;
}
.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
  background-position: 0 -1400px;
}
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
  background-position: 0 -1450px;
}
.elfinder-cwd-icon-x-shockwave-flash {
  background-position: 0 -1500px;
}
.elfinder-cwd-icon-group {
  background-position: 0 -1550px;
}
.elfinder-cwd-icon-json {
  background-position: 0 -1600px;
}
.elfinder-cwd-icon-json:before {
  content: none !important;
}
.elfinder-cwd-icon-markdown,
.elfinder-cwd-icon-x-markdown {
  background-position: 0 -1650px;
}
.elfinder-cwd-icon-markdown:before,
.elfinder-cwd-icon-x-markdown:before {
  content: none !important;
}
.elfinder-cwd-icon-sql {
  background-position: 0 -1700px;
}
.elfinder-cwd-icon-sql:before {
  content: none !important;
}
.elfinder-cwd-icon-svg,
.elfinder-cwd-icon-svg-xml {
  background-position: 0 -1750px;
}
.elfinder-cwd-icon-svg:before,
.elfinder-cwd-icon-svg-xml:before {
  content: none !important;
}
/**
 * Toolbar
 */
.elfinder-toolbar {
  background: #3b4047;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  padding: 5px 0;
}
.elfinder-buttonset {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  margin: 0 5px;
  height: 24px;
}
.elfinder .elfinder-button {
  background: transparent;
  -webkit-border-radius: 0;
  border-radius: 0;
  cursor: pointer;
  color: #efefef;
}
.elfinder-toolbar-button-separator {
  border: 0;
}
.elfinder-button-menu {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
  margin-top: 5px;
}
.elfinder-button-menu-item {
  color: #666666;
  padding: 6px 19px;
}
.elfinder-button-menu-item.ui-state-hover {
  color: #141414;
  background-color: #f5f4f4;
}
.elfinder-button-menu-item-separated {
  border-top: 1px solid #e5e5e5;
}
.elfinder-button-menu-item-separated.ui-state-hover {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-button-search {
  margin: 0 10px;
  min-height: inherit;
}
.elfinder .elfinder-button-search input {
  background: rgba(40, 42, 45, 0.79);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  border: 0;
  margin: 0;
  padding: 0 23px;
  height: 24px;
  color: #fff;
  font-weight: 100;
}
.elfinder .elfinder-button-search .elfinder-button-menu {
  margin-top: 4px;
  border: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
/**
 * Navbar
 */
.elfinder .elfinder-navbar {
  background: #535e64;
  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
  border: none;
}
.elfinder-navbar-dir {
  color: #e6e6e6;
  cursor: pointer;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  padding: 5px;
  border: none;
}
.elfinder-navbar-dir.ui-state-hover,
.elfinder-navbar-dir.ui-state-active.ui-state-hover {
  background: #3c4448;
  color: #e6e6e6;
  border: none;
}
.elfinder-navbar .ui-state-active,
.elfinder-disabled .elfinder-navbar .ui-state-active {
  background: #41494e;
  border: none;
}
/**
 * Workzone
 */
.elfinder-workzone {
  background: #cdcfd4;
}
.elfinder-cwd-file {
  color: #555;
}
.elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #4c5961;
  color: #ddd;
}
.elfinder-cwd-file.ui-selected {
  background: #455158;
  color: #555;
}
.elfinder-cwd-filename input,
.elfinder-cwd-filename textarea {
  padding: 2px;
  -webkit-border-radius: 2px !important;
  border-radius: 2px !important;
  width: 100px !important;
  background: #fff;
  color: #222;
}
.elfinder-cwd-filename input:focus,
.elfinder-cwd-filename textarea:focus {
  outline: none;
  border: 1px solid #555;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover {
  background: transparent;
}
.elfinder-cwd table {
  padding: 0;
}
.elfinder-cwd table tr:nth-child(odd) {
  background-color: transparent;
}
.elfinder-cwd table tr:nth-child(odd).ui-state-hover {
  background-color: #4c5961;
}
#elfinder-elfinder-cwd-thead td {
  background: #353b42;
  color: #ddd;
}
#elfinder-elfinder-cwd-thead td.ui-state-hover,
#elfinder-elfinder-cwd-thead td.ui-state-active {
  background: #30363c;
}
#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover {
  background: #2e333a;
}
.ui-selectable-helper {
  border: 1px solid #3b4047;
  background-color: rgba(104, 111, 121, 0.5);
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
  background-color: #e4e4e4;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file {
  color: #333;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover,
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover {
  background: #4c5961;
  color: #ddd;
}
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected {
  background: #455158;
  color: #555;
}
/**
 * Status Bar
 */
.elfinder .elfinder-statusbar {
  background: #3b4047;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  color: #cfd2d4;
}
.elfinder-path,
.elfinder-stat-size {
  margin: 0 15px;
}
/**
 * Buttons
 */
.ui-button,
.ui-button:active,
.ui-button.ui-state-default {
  display: inline-block;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  white-space: nowrap;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  text-transform: uppercase;
  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
  -webkit-transition: all 0.4s;
  -o-transition: all 0.4s;
  transition: all 0.4s;
  background: #fff;
  color: #222;
}
.ui-button .ui-icon,
.ui-button:active .ui-icon,
.ui-button.ui-state-default .ui-icon {
  color: #222;
}
.ui-button:hover,
a.ui-button:active,
.ui-button:active,
.ui-button:focus,
.ui-button.ui-state-hover,
.ui-button.ui-state-active {
  background: #3498DB;
  color: #fff;
}
.ui-button:hover .ui-icon,
a.ui-button:active .ui-icon,
.ui-button:active .ui-icon,
.ui-button:focus .ui-icon,
.ui-button.ui-state-hover .ui-icon,
.ui-button.ui-state-active .ui-icon {
  color: #fff;
}
.ui-button.ui-state-active:hover {

  background: #217dbb;
  color: #fff;
  border: none;
}
.ui-button:focus {
  outline: none !important;
}
.ui-controlgroup-horizontal .ui-button {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
/**
 * Context Menu
 */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
  -webkit-border-radius: 2px;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
  border: none;
}
.elfinder .elfinder-contextmenu-separator,
.elfinder .elfinder-contextmenu-sub-separator {
  border-top: 1px solid #e5e5e5;
}
.elfinder .elfinder-contextmenu-item {
  color: #666;
  padding: 5px 30px;
}
.elfinder .elfinder-contextmenu-item.ui-state-hover {
  background-color: #f5f4f4;
  color: #141414;
}
.elfinder .elfinder-contextmenu-item.ui-state-active {
  background-color: #2196F3;
  color: #fff;
}
/**
 * Dialogs
 */
.elfinder .elfinder-dialog {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6);
}
.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] {
  padding: 0;
}
.elfinder .elfinder-dialog .ui-tabs {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav {
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  border-bottom: 1px solid #ddd;
}
.elfinder .elfinder-dialog .ui-tabs-nav li {
  border: 0;
  font-weight: normal;
  background: transparent;
  margin: 0;
  padding: 3px 0;
}
.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active {
  padding-bottom: 7px;
}
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,
.elfinder .elfinder-dialog .ui-tabs-nav li:hover a {
  -webkit-box-shadow: inset 0 -2px 0 #3498DB;
  box-shadow: inset 0 -2px 0 #3498DB;
  color: #3498DB;
}
.std42-dialog .ui-dialog-titlebar {
  background: #353b44;
  -webkit-border-radius: 0;
  border-radius: 0;
  border: 0;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
  border-color: inherit;
  -webkit-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
  opacity: 0.8;
  color: #fff;
  width: auto;
  height: auto;
  font-size: 12px;
  padding: 3px;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
  background-color: #F44336;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon {
  background-color: #4CAF50;
}
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon {
  background-color: #FF9800;
}
.elfinder-dialog-title {
  color: #f1f1f1;
}
.std42-dialog .ui-dialog-content {
  background: #fff;
}
.ui-widget-content {
  font-family: "Noto Sans";
  color: #546E7A;
}
.std42-dialog .ui-dialog-buttonpane button {
  margin: 2px;
  padding: .4em .5em;
}
.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
  padding: 0;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
  width: inherit;
  height: inherit;
  padding: .4em;
  margin-left: 5px;
  color: #222;
}
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover {
  background: #888;
  color: #fff;
  outline: none;
  -webkit-border-radius: 2px;
  border-radius: 2px;
}
.elfinder-upload-dialog-wrapper .ui-button {
  padding: .4em 3px;
  margin: 0 2px;
}
.elfinder-upload-dialog-wrapper .ui-button {
  margin-left: 19px;
  margin-right: -15px;
}
.elfinder-upload-dropbox {
  border: 2px dashed #bbb;
}
.elfinder-upload-dropbox:focus {
  outline: none;
}
.elfinder-upload-dropbox.ui-state-hover {
  background: #f1f1f1;
  border: 2px dashed #bbb;
}
.elfinder-help *,
.elfinder-help a {
  color: #546E7A;
}
.elfinder-rtl .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before, .elfinder-rtl .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before, .elfinder-rtl .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    left: 0;
    position: absolute;
}
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
   color: #fff;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {top: 3px;}

.elfinder-button-menu.elfinder-button-search-menu {top:6px !important;}
.elfinder .elfinder-contextmenu-item .ui-icon.ui-icon-check {
    margin-top: -6px;
}
.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon.ui-icon-check {
    font-size: 13px;right: 1px;
}
.elfinder-ltr .elfinder-button-search .ui-icon-close{font-size: 17px;}
.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow:before {
    content: '\e858';
}

.elfinder .elfinder-cwd table thead td{ background: #cdcfd4; }

.elfinder-contextmenu-item .elfinder-button-icon-opennew:before {content: ''; background: url(../images/icon-new-window.png) no-repeat; height: 16px; width: 16px; display: block; background-size: 15px; }

.elfinder-contextmenu-item .elfinder-button-icon-hide:before {content: ''; background: url(../images/hide.png) no-repeat; height: 16px; width: 16px; display: block; background-size: 15px; }

/* New Css Added Here  */
.ui-front.elfinder-quicklook.elfinder-frontmost .ui-dialog-titlebar .ui-icon{ font-size: 11px; line-height: 17px; }
.elfinder-notify-cancel .elfinder-notify-button.ui-icon.ui-icon-close{ line-height: 19px; font-size: 11px; color:#ffffff} 
.elfinder-notify-cancel .elfinder-notify-button.ui-icon.ui-icon-close:hover{ background: #ff6252; }



/* icon set css */
.wrap.wp-filemanager-wrap .ui-front.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-draggable.std42-dialog .ui-dialog-content.ui-widget-content .ui-helper-clearfix.elfinder-rm-title span.elfinder-cwd-icon:before {
    left: inherit;
    background-color: #313131;
    top: 32px;
    display: block;
    margin: 0 auto;
}lib/themes/gray/css/theme.min.css000064400000107405147361034400012740 0ustar00@font-face {
    font-family: 'Noto Sans';
    src: url('../lib/fonts/notosans/NotoSans-Regular.eot');
    src: url('../lib/fonts/notosans/NotoSans-Regular.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/notosans/NotoSans-Regular.woff2') format('woff2'),
        url('../lib/fonts/notosans/NotoSans-Regular.woff') format('woff'),
        url('../lib/fonts/notosans/NotoSans-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
  }
  @font-face {
    font-family: 'Noto Sans';
    src: url('../lib/fonts/notosans/NotoSans-BoldItalic.eot');
    src: url('../lib/fonts/notosans/NotoSans-BoldItalic.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/notosans/NotoSans-BoldItalic.woff2') format('woff2'),
        url('../lib/fonts/notosans/NotoSans-BoldItalic.woff') format('woff'),
        url('../lib/fonts/notosans/NotoSans-BoldItalic.ttf') format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
  }
  @font-face {
    font-family: 'Noto Sans';
    src: url('../lib/fonts/notosans/NotoSans-Black.eot');
    src: url('../lib/fonts/notosans/NotoSans-Black.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/notosans/NotoSans-Black.woff2') format('woff2'),
        url('../lib/fonts/notosans/NotoSans-Black.woff') format('woff'),
        url('../lib/fonts/notosans/NotoSans-Black.ttf') format('truetype');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
  }
  .elfinder{color:#546E7A;font-family:"Noto Sans", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elfinder.ui-widget.ui-widget-content{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);-webkit-border-radius:0;border-radius:0;border:0}input.elfinder-tabstop,input.elfinder-tabstop.ui-state-hover,select.elfinder-tabstop,select.elfinder-tabstop.ui-state-hover{padding:5px;color:#666666;background:#fff;border-radius:3px;font-weight:normal;border-color:#888}select.elfinder-tabstop,select.elfinder-tabstop.ui-state-hover{width:100%}.elfinder-button-icon-spinner,.elfinder-info-spinner,.elfinder-navbar-spinner{background:url("../images/loading.svg") center center no-repeat!important;width:16px;height:16px}@-webkit-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}.elfinder-notify-progressbar{border:0}.elfinder-notify-progress,.elfinder-notify-progressbar{-webkit-border-radius:0;border-radius:0}.elfinder-notify-progress,.elfinder-resize-spinner{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem;-webkit-animation:progress-animation 1s linear infinite;animation:progress-animation 1s linear infinite;background-color:#0275d8;height:1rem}.elfinder-quicklook{background:#232323;-webkit-border-radius:2px;border-radius:2px}.elfinder-quicklook-titlebar{background:inherit}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{border:inherit;opacity:inherit;-webkit-border-radius:4px;border-radius:4px;background:rgba(66, 66, 66, 0.73)}.elfinder .elfinder-navdock{border:0}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-image:none}.elfinder .elfinder-toast>div{background-color:#323232!important;color:#d6d6d6;-webkit-box-shadow:none;box-shadow:none;opacity:inherit;padding:10px 60px}.elfinder .elfinder-toast>div button.ui-button{color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#3498DB}.elfinder .elfinder-toast>.toast-error button.ui-button{background-color:#F44336}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:#4CAF50}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#FF9800}.elfinder-toast-msg{font-family:"Noto Sans", sans-serif;font-size:17px}#ace_settingsmenu{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;background-color:#1d2736!important;color:#e6e6e6!important}#ace_settingsmenu,#kbshortcutmenu{padding:0}.ace_optionsMenuEntry{padding:5px 10px}.ace_optionsMenuEntry:hover{background-color:#111721}.ace_optionsMenuEntry label{font-size:13px}#ace_settingsmenu input[type=text],#ace_settingsmenu select{margin:1px 2px 2px;padding:2px 5px;-webkit-border-radius:3px;border-radius:3px;border:0;background:rgba(9, 53, 121, 0.75);color:white}@font-face{font-family:material;src:url("../icons/material.eot?98361579");src:url("../icons/material.eot?98361579#iefix") format("embedded-opentype"), url("../icons/material.woff2?98361579") format("woff2"), url("../icons/material.woff?98361579") format("woff"), url("../icons/material.ttf?98361579") format("truetype"), url("../icons/material.svg?98361579#material") format("svg");font-weight:normal;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:material;src:url("../icons/material.svg?98361579#material") format("svg")}}.elfinder-button-icon,.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit;text-indent:inherit}.ui-button-icon-only .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit!important;text-indent:0;font-size:16px}.elfinder-toolbar .elfinder-button-icon{font-size:20px;color:#ddd;margin-top:-2px}.elfinder-button-icon{background:inherit}.elfinder-button-icon-home:before{content:'\e800'}.elfinder-button-icon-back:before{content:'\e801'}.elfinder-button-icon-forward:before{content:'\e802'}.elfinder-button-icon-up:before{content:'\e803'}.elfinder-button-icon-dir:before{content:'\e804'}.elfinder-button-icon-opendir:before{content:'\e805'}.elfinder-button-icon-reload:before{content:'\e806'}.elfinder-button-icon-open:before{content:'\e807'}.elfinder-button-icon-mkdir:before{content:'\e808'}.elfinder-button-icon-mkfile:before{content:'\e809'}.elfinder-button-icon-rm:before{content:'\e80a'}.elfinder-button-icon-trash:before{content:'\e80b'}.elfinder-button-icon-restore:before{content:'\e80c'}.elfinder-button-icon-copy:before{content:'\e80d'}.elfinder-button-icon-cut:before{content:'\e80e'}.elfinder-button-icon-paste:before{content:'\e80f'}.elfinder-button-icon-getfile:before{content:'\e810'}.elfinder-button-icon-duplicate:before{content:'\e811'}.elfinder-button-icon-rename:before{content:'\e812'}.elfinder-button-icon-edit:before{content:'\e813'}.elfinder-button-icon-quicklook:before{content:'\e814'}.elfinder-button-icon-upload:before{content:'\e815'}.elfinder-button-icon-download:before{content:'\e816'}.elfinder-button-icon-info:before{content:'\e817'}.elfinder-button-icon-extract:before{content:'\e818'}.elfinder-button-icon-archive:before{content:'\e819'}.elfinder-button-icon-view:before{content:'\e81a'}.elfinder-button-icon-view-list:before{content:'\e81b'}.elfinder-button-icon-help:before{content:'\e81c'}.elfinder-button-icon-resize:before{content:'\e81d'}.elfinder-button-icon-link:before{content:'\e81e'}.elfinder-button-icon-search:before{content:'\e81f'}.elfinder-button-icon-sort:before{content:'\e820'}.elfinder-button-icon-rotate-r:before{content:'\e821'}.elfinder-button-icon-rotate-l:before{content:'\e822'}.elfinder-button-icon-netmount:before{content:'\e823'}.elfinder-button-icon-netunmount:before{content:'\e824'}.elfinder-button-icon-places:before{content:'\e825'}.elfinder-button-icon-chmod:before{content:'\e826'}.elfinder-button-icon-accept:before{content:'\e827'}.elfinder-button-icon-menu:before{content:'\e828'}.elfinder-button-icon-colwidth:before{content:'\e829'}.elfinder-button-icon-fullscreen:before{content:'\e82a'}.elfinder-button-icon-unfullscreen:before{content:'\e82b'}.elfinder-button-icon-empty:before{content:'\e82c'}.elfinder-button-icon-undo:before{content:'\e82d'}.elfinder-button-icon-redo:before{content:'\e82e'}.elfinder-button-icon-preference:before{content:'\e82f'}.elfinder-button-icon-mkdirin:before{content:'\e830'}.elfinder-button-icon-selectall:before{content:'\e831'}.elfinder-button-icon-selectnone:before{content:'\e832'}.elfinder-button-icon-selectinvert:before{content:'\e833'}.elfinder-button-icon-theme:before{content:'\e859'}.elfinder-button-icon-logout:before{content:'\e85a'}.elfinder-button-search .ui-icon.ui-icon-search{font-size:17px}.elfinder-button-search .ui-icon:hover{opacity:1}.elfinder-navbar-icon{font:normal normal normal 16px/1 material;background-image:inherit!important}.elfinder-navbar-icon:before{content:'\e804'}.elfinder-droppable-active .elfinder-navbar-icon:before,.ui-state-active .elfinder-navbar-icon:before,.ui-state-hover .elfinder-navbar-icon:before{content:'\e805'}.elfinder-navbar-root-local .elfinder-navbar-icon:before{content:'\e83d'}.elfinder-navbar-root-ftp .elfinder-navbar-icon:before{content:'\e823'}.elfinder-navbar-root-sql .elfinder-navbar-icon:before{content:'\e83e'}.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before{content:'\e83f'}.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before{content:'\e840'}.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before{content:'\e841'}.elfinder-navbar-root-box .elfinder-navbar-icon:before{content:'\e842'}.elfinder-navbar-root-trash .elfinder-navbar-icon:before{content:'\e80b'}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{content:'\e825'}.elfinder-navbar-arrow{background-image:inherit!important;font:normal normal normal 14px/1 material;font-size:10px;padding-top:3px;padding-left:2px;color:#a9a9a9}.ui-state-active .elfinder-navbar-arrow{color:#fff}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e857'}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e858'}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before{content:'\e851'}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{font-size:8px;margin-top:5px;margin-right:5px}div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical{margin:2px}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon{background-image:inherit}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-box .elfinder-cwd-icon:before,.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before,.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{font-family:material;background-color:transparent;color:#525252;font-size:55px;position:relative;top:-10px!important;padding:0;display:contents!important}.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before{content:'\e83d'}.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before{content:'\e823'}.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before{content:'\e83e'}.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before{content:'\e83f'}.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before{content:'\e840'}.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before{content:'\e841'}.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,.elfinder-navbar-roor-box .elfinder-cwd-icon:before{content:'\e842'}.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{content:'\e80b'}.elfinder-dialog-icon{font:normal normal normal 14px/1 material;background:inherit;color:#524949;font-size:37px}.elfinder-dialog-icon:before{content:'\e843'}.elfinder-dialog-icon-mkdir:before{content:'\e808'}.elfinder-dialog-icon-mkfile:before{content:'\e809'}.elfinder-dialog-icon-copy:before{content:'\e80d'}.elfinder-dialog-icon-move:before,.elfinder-dialog-icon-prepare:before{content:'\e844'}.elfinder-dialog-icon-chunkmerge:before,.elfinder-dialog-icon-upload:before{content:'\e815'}.elfinder-dialog-icon-rm:before{content:'\e80a'}.elfinder-dialog-icon-file:before,.elfinder-dialog-icon-open:before,.elfinder-dialog-icon-readdir:before{content:'\e807'}.elfinder-dialog-icon-reload:before{content:'\e806'}.elfinder-dialog-icon-download:before{content:'\e816'}.elfinder-dialog-icon-save:before{content:'\e845'}.elfinder-dialog-icon-rename:before{content:'\e812'}.elfinder-dialog-icon-archive:before,.elfinder-dialog-icon-zipdl:before{content:'\e819'}.elfinder-dialog-icon-extract:before{content:'\e818'}.elfinder-dialog-icon-search:before{content:'\e81f'}.elfinder-dialog-icon-loadimg:before{content:'\e846'}.elfinder-dialog-icon-url:before{content:'\e81e'}.elfinder-dialog-icon-resize:before{content:'\e81d'}.elfinder-dialog-icon-netmount:before{content:'\e823'}.elfinder-dialog-icon-netunmount:before{content:'\e824'}.elfinder-dialog-icon-chmod:before{content:'\e826'}.elfinder-dialog-icon-dim:before,.elfinder-dialog-icon-preupload:before{content:'\e847'}.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon{font-size:16px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon{font-size:15px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before{content:'\e837'}.elfinder .elfinder-contextmenu-extra-icon{margin-top:-6px}.elfinder .elfinder-contextmenu-extra-icon a{padding:5px;margin:-16px}.elfinder-button-icon-link:before{content:'\e81e'!important}.elfinder .elfinder-contextmenu-arrow{font:normal normal normal 14px/1 material;background-image:inherit;font-size:10px!important;padding-top:3px}.elfinder .elfinder-contextmenu-arrow:before{content:'\e857'}.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow{background-image:inherit}.elfinder-quicklook .ui-resizable-se{background:inherit}.elfinder-quicklook-navbar-icon{background:transparent;font:normal normal normal 14px/1 material;font-size:32px;color:#fff}.elfinder-quicklook-titlebar-icon{margin-top:-8px}.elfinder-quicklook-titlebar-icon .ui-icon{border:0;opacity:.8;font-size:15px;padding:1px}.elfinder-quicklook-titlebar .ui-icon-circle-close,.elfinder-quicklook .ui-icon-gripsmall-diagonal-se{color:#f1f1f1}.elfinder-quicklook-navbar-icon-prev:before{content:'\e848'}.elfinder-quicklook-navbar-icon-next:before{content:'\e849'}.elfinder-quicklook-navbar-icon-fullscreen:before{content:'\e84a'}.elfinder-quicklook-navbar-icon-fullscreen-off:before{content:'\e84b'}.elfinder-quicklook-navbar-icon-close:before{content:'\e84c'}.ui-button-icon{background-image:inherit}.ui-icon-search:before{content:'\e81f'}.ui-icon-close:before,.ui-icon-closethick:before{content:'\e839'}.ui-icon-circle-close:before{content:'\e84c'}.ui-icon-gear:before{content:'\e82f'}.ui-icon-gripsmall-diagonal-se:before{content:'\e838'}.ui-icon-locked:before{content:'\e834'}.ui-icon-unlocked:before{content:'\e836'}.ui-icon-arrowrefresh-1-n:before{content:'\e821'}.ui-icon-plusthick:before{content:'\e83a'}.ui-icon-arrowreturnthick-1-s:before{content:'\e83b'}.ui-icon-minusthick:before{content:'\e83c'}.ui-icon-pin-s:before{content:'\e84d'}.ui-icon-check:before{content:'\e84e'}.ui-icon-arrowthick-1-s:before{content:'\e84f'}.ui-icon-arrowthick-1-n:before{content:'\e850'}.ui-icon-triangle-1-s:before{content:'\e851'}.ui-icon-triangle-1-n:before{content:'\e852'}.ui-icon-grip-dotted-vertical:before{content:'\e853'}.elfinder-lock,.elfinder-perms,.elfinder-symlink{background-image:inherit;font:normal normal normal 18px/1 material;color:#4d4d4d}.elfinder-na .elfinder-perms:before{content:'\e824'}.elfinder-ro .elfinder-perms:before{content:'\e835'}.elfinder-wo .elfinder-perms:before{content:'\e854'}.elfinder-group .elfinder-perms:before{content:'\e800'}.elfinder-lock:before{content:'\e834'}.elfinder-symlink:before{content:'\e837'}.elfinder .elfinder-toast>div{font:normal normal normal 14px/1 material}.elfinder .elfinder-toast>div:before{font-size:45px;position:absolute;left:5px;top:15px}.elfinder .elfinder-toast>.toast-error,.elfinder .elfinder-toast>.toast-info,.elfinder .elfinder-toast>.toast-success,.elfinder .elfinder-toast>.toast-warning{background-image:inherit!important}.elfinder .elfinder-toast>.toast-info:before{content:'\e817';color:#3498DB}.elfinder .elfinder-toast>.toast-error:before{content:'\e855';color:#F44336}.elfinder .elfinder-toast>.toast-success:before{content:'\e84e';color:#4CAF50}.elfinder .elfinder-toast>.toast-warning:before{content:'\e856';color:#FF9800}.elfinder-drag-helper-icon-status{font:normal normal normal 14px/1 material;background:inherit}.elfinder-drag-helper-icon-status:before{content:'\e824'}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{content:'\e854'}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{content:'\e84c'}.elfinder-cwd-view-list td .elfinder-cwd-icon{background-image:url("../images/icons-small.png")}.elfinder-cwd-icon{background:url("../images/icons-big.png") 0 0 no-repeat}.elfinder-cwd-icon:before{font-size:10px;position:relative;top:27px;left:inherit;padding:1px;background-color:transparent}.elfinder-info-title .elfinder-cwd-icon:before{top:32px;display:block;margin:0 auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before{background-color:#313131!important}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:inherit;background-color:#313131}.elfinder-quicklook .elfinder-cwd-icon:before{top:33px;left:50%!important;position:relative;display:block;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.elfinder-cwd-icon-x-zip:before,.elfinder-cwd-icon-zip:before{content:'zip'!important}.elfinder-cwd-icon-x-xz:before{content:'xz'!important}.elfinder-cwd-icon-x-7z-compressed:before{content:'7z'!important}.elfinder-cwd-icon-x-gzip:before{content:'gzip'!important}.elfinder-cwd-icon-x-tar:before{content:'tar'!important}.elfinder-cwd-icon-x-bzip2:before,.elfinder-cwd-icon-x-bzip:before{content:'bzip'!important}.elfinder-cwd-icon-x-rar-compressed:before,.elfinder-cwd-icon-x-rar:before{content:'rar'!important}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application{background-position:0 -150px}.elfinder-cwd-icon-text{background-position:0 -200px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-x-empty{background-position:0 -250px}.elfinder-cwd-icon-image{background-position:0 -300px}.elfinder-cwd-icon-vnd-adobe-photoshop{background-position:0 -350px}.elfinder-cwd-icon-vnd-adobe-photoshop:before{content:none!important}.elfinder-cwd-icon-postscript{background-position:0 -400px}.elfinder-cwd-icon-audio{background-position:0 -450px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -500px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd{background-position:0 -550px}.elfinder-cwd-icon-pdf{background-position:0 -600px}.elfinder-cwd-icon-x-msaccess{background-position:0 -650px}.elfinder-cwd-icon-x-msaccess:before{content:none!important}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12{background-position:0 -700px}.elfinder-cwd-icon-msword:before,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word:before{content:none!important}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background-position:0 -750px}.elfinder-cwd-icon-ms-excel:before,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel:before{content:none!important}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12{background-position:0 -800px}.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint:before{content:none!important}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-openofficeorg-extension,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template{background-position:0 -850px}.elfinder-cwd-icon-html{background-position:0 -900px}.elfinder-cwd-icon-css{background-position:0 -950px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -1000px}.elfinder-cwd-icon-x-perl{background-position:0 -1050px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -1100px}.elfinder-cwd-icon-x-ruby{background-position:0 -1150px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -1200px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-csrc{background-position:0 -1250px}.elfinder-cwd-icon-x-jar,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -1300px}.elfinder-cwd-icon-x-jar:before,.elfinder-cwd-icon-x-java-source:before,.elfinder-cwd-icon-x-java:before{content:none!important}.elfinder-cwd-icon-x-php{background-position:0 -1350px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1400px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-zip{background-position:0 -1450px}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1500px}.elfinder-cwd-icon-group{background-position:0 -1550px}.elfinder-cwd-icon-json{background-position:0 -1600px}.elfinder-cwd-icon-json:before{content:none!important}.elfinder-cwd-icon-markdown,.elfinder-cwd-icon-x-markdown{background-position:0 -1650px}.elfinder-cwd-icon-markdown:before,.elfinder-cwd-icon-x-markdown:before{content:none!important}.elfinder-cwd-icon-sql{background-position:0 -1700px}.elfinder-cwd-icon-sql:before{content:none!important}.elfinder-cwd-icon-svg,.elfinder-cwd-icon-svg-xml{background-position:0 -1750px}.elfinder-cwd-icon-svg-xml:before,.elfinder-cwd-icon-svg:before{content:none!important}.elfinder-toolbar{background:#3b4047;-webkit-border-radius:0;border-radius:0;border:0;padding:5px 0}.elfinder-buttonset{-webkit-border-radius:0;border-radius:0;border:0;margin:0 5px;height:24px}.elfinder .elfinder-button{background:transparent;-webkit-border-radius:0;border-radius:0;cursor:pointer;color:#efefef}.elfinder-toolbar-button-separator{border:0}.elfinder-button-menu{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none;margin-top:5px}.elfinder-button-menu-item{color:#666666;padding:6px 19px}.elfinder-button-menu-item.ui-state-hover{color:#141414;background-color:#f5f4f4}.elfinder-button-menu-item-separated{border-top:1px solid #e5e5e5}.elfinder-button-menu-item-separated.ui-state-hover{border-top:1px solid #e5e5e5}.elfinder .elfinder-button-search{margin:0 10px;min-height:inherit}.elfinder .elfinder-button-search input{background:rgba(40, 42, 45, 0.79);-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:0;margin:0;padding:0 23px;height:24px;color:#fff}.elfinder .elfinder-button-search .elfinder-button-menu{margin-top:4px;border:none;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.5);box-shadow:0 1px 3px rgba(0, 0, 0, 0.5)}.elfinder .elfinder-navbar{background:#535e64;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);border:none}.elfinder-navbar-dir{color:#e6e6e6;cursor:pointer;-webkit-border-radius:2px;border-radius:2px;padding:5px;border:none}.elfinder-navbar-dir.ui-state-active.ui-state-hover,.elfinder-navbar-dir.ui-state-hover{background:#3c4448;color:#e6e6e6;border:none}.elfinder-disabled .elfinder-navbar .ui-state-active,.elfinder-navbar .ui-state-active{background:#41494e;border:none}.elfinder-workzone{background:#cdcfd4}.elfinder-cwd-file{color:#555}.elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-file.ui-state-hover{background:#4c5961;color:#ddd}.elfinder-cwd-file.ui-selected{background:#455158;color:#555;width:120px!important}.elfinder-cwd-filename input,.elfinder-cwd-filename textarea{padding:2px;-webkit-border-radius:2px!important;border-radius:2px!important;width:100px!important;background:#fff;color:#222}.elfinder-cwd-filename input:focus,.elfinder-cwd-filename textarea:focus{outline:none;border:1px solid #555}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-disabled .elfinder-cwd table td.ui-state-hover{background:transparent}.elfinder-cwd table{padding:0}.elfinder-cwd table tr:nth-child(odd){background-color:transparent}.elfinder-cwd table tr:nth-child(odd).ui-state-hover{background-color:#4c5961}#elfinder-elfinder-cwd-thead td{background:#353b42;color:#ddd}#elfinder-elfinder-cwd-thead td.ui-state-active,#elfinder-elfinder-cwd-thead td.ui-state-hover{background:#30363c}#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover{background:#2e333a}.ui-selectable-helper{border:1px solid #3b4047;background-color:rgba(104, 111, 121, 0.5)}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash{background-color:#e4e4e4}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file{color:#333}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover{background:#4c5961;color:#ddd}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected{background:#455158;color:#555}.elfinder .elfinder-statusbar{background:#3b4047;-webkit-border-radius:0;border-radius:0;border:0;color:#cfd2d4}.elfinder-path,.elfinder-stat-size{margin:0 15px}.ui-button,.ui-button.ui-state-default,.ui-button:active{display:inline-block;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-webkit-border-radius:3px;border-radius:3px;text-transform:uppercase;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s;background:#fff;color:#222;border:none}.ui-button .ui-icon,.ui-button.ui-state-default .ui-icon,.ui-button:active .ui-icon{color:#222}.ui-button.ui-state-active,.ui-button.ui-state-hover,.ui-button:active,.ui-button:focus,.ui-button:hover,a.ui-button:active{background:#3498DB;color:#fff;border:none}.ui-button.ui-state-active .ui-icon,.ui-button.ui-state-hover .ui-icon,.ui-button:active .ui-icon,.ui-button:focus .ui-icon,.ui-button:hover .ui-icon,a.ui-button:active .ui-icon{color:#fff}.ui-button.ui-state-active:hover{background:#217dbb;color:#fff;border:none}.ui-button:focus{outline:none!important}.ui-controlgroup-horizontal .ui-button{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none}.elfinder .elfinder-contextmenu-separator,.elfinder .elfinder-contextmenu-sub-separator{border-top:1px solid #e5e5e5}.elfinder .elfinder-contextmenu-item{color:#666;padding:5px 30px}.elfinder .elfinder-contextmenu-item.ui-state-hover{background-color:#f5f4f4;color:#141414}.elfinder .elfinder-contextmenu-item.ui-state-active{background-color:#2196F3;color:#fff}.elfinder .elfinder-dialog{-webkit-border-radius:0;border-radius:0;border:0;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6);box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)}.elfinder .elfinder-dialog .ui-dialog-content[id*=edit-elfinder-elfinder-]{padding:0}.elfinder .elfinder-dialog .ui-tabs{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-dialog .ui-tabs-nav{-webkit-border-radius:0;border-radius:0;border:0;background:transparent;border-bottom:1px solid #ddd}.elfinder .elfinder-dialog .ui-tabs-nav li{border:0;font-weight:normal;background:transparent;margin:0;padding:3px 0}.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active{padding-bottom:7px}.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,.elfinder .elfinder-dialog .ui-tabs-nav li:hover a{-webkit-box-shadow:inset 0 -2px 0 #3498DB;box-shadow:inset 0 -2px 0 #3498DB;color:#3498DB}.std42-dialog .ui-dialog-titlebar{background:#353b44;-webkit-border-radius:0;border-radius:0;border:0}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{border-color:inherit;-webkit-transition:0.2s ease-out;-o-transition:0.2s ease-out;transition:0.2s ease-out;opacity:0.8;color:#fff;width:auto;height:auto;font-size:12px;padding:3px}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-color:#F44336}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon{background-color:#4CAF50}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon{background-color:#FF9800}.elfinder-dialog-title{color:#f1f1f1}.std42-dialog .ui-dialog-content{background:#fff}.ui-widget-content{font-family:"Noto Sans", sans-serif;color:#546E7A}.std42-dialog .ui-dialog-buttonpane button{margin:2px;padding:.4em .5em}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:0}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{width:inherit;height:inherit;padding:.4em;margin-left:5px;color:#222}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover{background:#888;color:#fff;outline:none;-webkit-border-radius:2px;border-radius:2px}.elfinder-upload-dialog-wrapper .ui-button{padding:.4em 3px;margin:0 2px}.elfinder-upload-dialog-wrapper .ui-button{margin-left:19px;margin-right:-15px}.elfinder-upload-dropbox{border:2px dashed #bbb}.elfinder-upload-dropbox:focus{outline:none}.elfinder-upload-dropbox.ui-state-hover{background:#f1f1f1;border:2px dashed #bbb}.elfinder-help *,.elfinder-help a{color:#546E7A}lib/themes/gray/icons/material.woff000064400000033410147361034400013340 0ustar00wOFF7]�GSUBX;T �%zOS/2�AV> I�cmap��\��cvt � �fpgm��p���Ygasp	`glyf	h(@�3Qkhead1h06��hhea1�$<�hmtx1�pg`loca1���Rmaxp2�  ��name2�}�w��post4 k���prep6�z��A+�x�c`d``�b0`�c`rq�	a��I,�c�b`a��<2�1'3=���ʱ�i f��&;Hx�c`d~�8�������iC�f|�`��e`ef�
�\S^0��b���$��Arox���nDџd��m�����̔R|�an��u���VޕIڙ1���
0���Ϙ��������N_3�׳�����0=����yֲ�:߷�E6���la+���v����a/���r���(�8�	Nr�Ӝ�,�8�_����U�q������]�q�<��y�S�����y�[��|����W��%~�_���L���,��a�g��ή����3��~j�S��2��)SBj�Y��]�4�2W�L)�F�ԑ2�L")3I�t�2��L,)�K��2ϤL6)3Nʴ�2��l)�@�V���l
);C���G�l)�Eʖ��o�l�qR����$eCI�UR����%e�I�iR���='e�I�}R�)����@ʍ �Z�r7H� ��R�
)���KC��!�r�H�H��&R�)����E�
#嚑r�H�p��:R�)���KH�M$�:�r'I����NR�()���UL�	0�x�c`@��?�l�x��Viw�FyI��,%-ja��i�F&l��	A�c ]�����;����_�d�s�7~Z�/$���p���w�����eZ��둔�/���&��<	�M�Q|(;{!e���Q��ڷ�DD"P���D�Y�d|�QF˶�WM�-=�.[�A�U�~:ʱ;��f3th=�%UU�H�=RҦe��+I+����W�PˆN"i���H�g��h5��(�l��(R$��Ay����	�͐�ʧ����أ�V�K���/y�w9?�_oQ��@Ȏ���t%_�[[aܴ��(Tv�wBl��T�f��F�+2�Ќ`�|�+?��!Y-�O��G�Z��A�eN�K>���)q�Y���	��3��>���)�x�zG%�)as4I�0r`%e�*����8�uZ�[�~��ї�h�Pwb<[[9Q��hR��L��Iͣ)
��t&x̯(?�I^mc5��G�8fƄD"-�KSA,;��)ͣ����v-Z���ܣ���V���S��FV�b:���i�/�i��"E��~L�A�2�-6Ô�o���ז������+�}�D���O�)	L��U�V@b�kY��լ���wC�V����rǾ�q�_33���߉ӳ#.=s�K�|�u=�ש�rqfyN�Y���4����Y���K[��,?�i��G:cyA�t���0��0��CX^�!,a�CXa�%��c�r����e��SI�ڙXlB`b���E�j*�TB�hTjC�n�TϪe�^<�9�H�Ț_1Ε�F��-o;W���o��9�R֋�?���T%�b�Ó����l'�6�xtM��U=��_TTX�H�X(ʲlpg"��:��j��C�l�<��u˚��71BP��7܃NYIY����۲�;�r8,I17�V�"#��~�Yʞ�|p�Je�j���'1��$�q[Q6H����
�y�&a�
�N�
�an�y'\�z�,��E��(��[��D��h����a��B�oq$4��~T��5�4Rn�_�ٺmB��#*vò�������m�|��գ���^�N��~f�� 51{�tq�ʻZ�2GmS��SךC�U���Q����9k�n�'z_Ӫ��\,��m�R&�a�
��ťP�e4I���P������|�+U��q$�NԷ��`��G��c�r
.���n��l�����70k��Y���t�!G����
|�qz���!�c���&���ݵ��S���9>���a�d�-�0�f��s�2��s|��u�/�� d��9�0'x�_1����a�
s�|�1s$�a����0�-^�]��AU�SOX���PSe�����A�� �����/�g����AL�Uӝ!�7^��1����L��e��|�
�]l>����@���x��{	x�}�9qc@$��A� @�C$A��C�H�ASm)rdZ�TK�[�I�n�]���8N�X�FL�ϑ9���j�/�m�~�ױ����M�n��S�]}�h�o�%���]�3�f�͛w����\{�{��D�$V�H@7s@	=F�cO�7�.EQD��S��Ԝ�3AN���^Y�����WaN뿡_`�뢟%2i/�x��d�(P؄��`؍Ua�뤂��ń	��0ץ�^��_�������E������o7Q��F���,�7hVq�J���|W
o���F���_���oS-�dIx�Jd3^>�A�i��=��u��>��_��k�aA���H����3D!���J�
8�8y�|�|��EDU�xs�B^�ka8{U�f5�$���3وn�d�8ɮ��9���_w�a|�9�-{JJ�v�s��ɢ�5�&��h�P��J8�M�K��޷�ޒB�Kqحf�DT����3�ı�A�{�jXq�9;�Y��d�c(�t��.�;��-�WÙ[�a�4�Z�l�~�8H���u��܄=o��ǁ񇐨Dn��#���D�BDQ�KQ��O>g�݄'�E"�e����RG����V޻�-U0�on������R�����+j��4h��S=ȅ87C���!p;�'�x�d�7��!��!��ޓ��^�/����_��{v�:/�Wt��s`ׁr��p�s;�$���S�R��Ա�V�[r��&��*��SD����p>���ܸ��a��~��Jsw��ry��5t�F�-Bc�c2�'���x��݄�$�D�#<�����%�������E����Go���R3��VKs�ϫz�.���DŌ����jy-�cB�]7������=�F�_XZ*/-CCY�"7J��H���|�J��� 7(ǰ�L�(��#�B�'S^ �)g��X�E6��
�q����-�*
�)�ʚ![d��;��6�K��>�#juFt�q�*��L?���c��Z��e66x��#Wukc�?3\6h�ۏ�5��M>׊���h��@P*`O��<PA�3x�­D��� �����dB���{D����X�pLKh���Z�ÉD��*����v=MnN�q�z$��e�����?�P%[K�q>8��q@B�)����AF���M��f3!vŮ8f��f�`C���M#
-6�	����%�(���~Bʆ�/���CG{���y��Z�����S��~��G���'yĘ?��G����(M�qQ�V\d:�ċ$��(#as"�P���y�_A����d��R�@K�Î�V$IH�mG$lAeb��8=>���a��HBBq�S,��x"��#���S���;���������gJ#�x<6R�,O�u:X�%��fv���X:3���c'�_��Tid��3�����w˷d����3�L����2iB�.
��D�-�ŧ�s�DN��a���a��)��Ѳ�ij�4)��dh��mN	��k���P<�/���$|��>L���T0��>O�k�`��g��=�	��g��ы`��q�c�t�^2D��gK���)%0�Lf'�4�,����������&0��`���'��(qފ�f�q�e���6��R��p75<\�w�������@~�0��N�v��'��h�O��T���	�;"v�K��Z�g�"����z��k܍��ç]�����������.V���.U���ݭ��M��6�^-C���V^Xی����؜խ�#�'vx��:j��n�Y%'�K�,L����L	�!�Ir�Ȣ ���8Cı�)�H<�"�P���
���B�����#J�	�07?�����h������d��_sz�!�Mշ&��&�ᎎ0R�Y��m��7�SCM�
=p�ˮ�H��q�D�����t���%�
W���O<C��]�~��O���n� 	�'�$|��̶Q�i씎GP�o�i��X�ģz0�D����]����i���Lfb�#Vb���y����<��d�����BVy,����Z�As�֜�.�k�����-�A"�k-"K��܋8,Nn۲itd�/��Τ:��D0�ys��ۉ��Nd�E�\#�APWh1�ʮ(>D>�J�8�T� �i����#0T3'y���������ܬ|�Y�o+M��6���?�+�mq�)s��A_�}.���\�㳈NH�J��J�,{�:x��tnV4�g���Kf������\�&gC�e�_�I�6)�����5�q���rE�̻mT��U�sP�Ӣ8�P��A�0����
���سS�\<NH��C�ӓ�����tW�'�
k�#�XX�:A�Y���R')��VA�[0�PP!�ĉ�?_N�b�<�J���\�F3e,��
;�D�ݺ��`��Ғ^�L��ܬ�V��c���0��I�7�W��˕J�09�#��6�Cbxd�W�¬�����P��@<�_O��,�g��n����z:>�.���]v��g;��20�}ą�G�l+m�#V�� ���e�dỌ���X�،�a��T8�qI�C�p
5Z�4��\u}mT�>o��bi����Uw<v�P��LK3�Wn�5�
-��f�p[����[�]킱��`�~8�}�\��m�D�� ȇ�cc�P>@�6a�33�J!��ʹ�@q�Cy�l<XQ\�S@-��3�94�a���ӿr��ju�c�=�W�-4ڝ���+u�L��ւ2�F��8~<���fB�$�dv+��hB���
��p�����v��M�
?���������U��֝C��E�d��	�$*�`@t!!��u�̙�wVL�{�;�Z��;՚�Z�v�IhR�ff����S��@����U��am�A��q��\���8w��V�;xϾ퓩t:5���F�J�?^�Ӭ���W������k]=�?(7��C��-
{��,!���HDs�2�#D��`"�萃����P[ȥ(޾�lȿ4��"J�5`J��W#�5�:��:�Q1�É<���_��Fp���-v�e:�V}1Q���,�i:M��ߑ��<g���"��ݍ�� ��ǃ�hA�&�e���a������ݛt���Y7���y�S�s�X�tw�#�k��;I��U����d1	�5��.��I�Y�PG�T��91��}������D*��2�L��	�D�j�LJ�+�9[P�����|�
ǩ1{�]�5�٦��y��q��O��立�+�?}^?�*���
����|��y�����#�Y-T0�
����>b�8�����{bÁ�a��?�
�t���{�NU_�m�^ҷ\�v�g���t�F���(�I6���&8jf�."�[0�0����U~Ϥ�o+�s=�������{&�sa�ƹa�JŚ�fB���+L~���t%�)�0�4Y\fK�m	�l���;�t뺇o**�8����&��㲸�~-��liu�F��O��|�H�N�!m$�:���
�D��i�>V2gA�vC���O>D�wҌz�F�q+͊�y�ښ���CqKL��A;��G�N��	Ά��i��%�C�^�s�����@U��\��*��Mi�˄�A��r�gj%�ko(�ʹ��i��[m��^���_�w|���۷OL��
�����x$�*�5��d���;o�11=1=59�mQ�Ʊ��Pid�C����|_�%Lo�7ד�b,�E�����ڦ�2'��Q<n��is:�&��j13?1�A�Fd�m�����n��eh*��GI3�ia�Ҹ,��p�0B���HO%Y)����ժ�
}�R�����=�˗����LjY=��赬�LV�?v��2���˗#=����`���\./'+=�Z՚�7dI��	��f�bQ�<�2�Ci"2�"3���d*�D,i�7�ZR�0ca͂�ߍpȀ���k��`y���I�d���A�ܹ������s���`��58��
������w�ā�ڠT9��-�+��œ�$�F�@Jk�:��tS�:��%J*�H�|�NڢZ[2�L6#��uƴ�ޭ
\��O�ck]��4��[�~eۖdggr˶J�������?.�~�B���o[;z
}�Gk��uKGG"j��5��¯�>0�p��
����
5q�-isQ��g�F��&��Ȭ�8���ȣ-.j�1q�i��L�n�����z9\do�F��3/�
�e��	������mѧH�$͝s�
�P��;�!�rH��x��:�t�G�@C�b����<�/�D�������
g�>����^p����tC7��<�1F�t�ڛ|7E=�9ĮY-l¥bNT5U[���.�"�Ƶ@��OS\��*���ǩ�bB,�
EM��~y�hO&��u����;��a�p��۷���3<l�'����&�mz�y�y�G�M��I-lI���}#��
k�+��u�-�
w��߰b8�S��.�nJ�R� i^_1����'<�;/���n�0Bž��Be�7z$�>F�S6t�|���C��@��@����}�O-l.\��3G!D��|�Y�D���}�	D}8u��	����lL�	X H6'�:�x��є2%e�0N?sF�.�o6�II�6�k�E��f+G��:�ۋ��:G/1Mv.�4CT�q�rNi��f%y.��a�I���MX�$�*�SZ���Y+��4�(%�`E
� 5���+�9�Ѭ���(��O#i���|�����
@M�c=��b�7�������f�S�!��p�#�F84�5�}��}��Z�(ݿz�#E!��G^�t~��v�K���38pD�R
u3�Ǚ�y��D���o��b$�ވy�w�	9%!ѷ��+�����#GؔV7�����!ki�NZJ�U^�`%��e�aAM�.��|�O�@��W�����@A��c�.?���i&��y�|�((����d-��H)h1�]e] 3�[qs_�E�̕����.�2x6�k�Y���}V}��X�Y'�������EeeX�0�B»٤LȲl�-�:%4��5G8��-7���ڶm������]����`�UDy�Lb�����X�_���V��C����w��#Տ׶����1���f3p<�O�@�	=�@<�}q0�᠘��b��y��r�\F�h=tG-AB �h�3��S~p:.�>}A����q�…ӿ�_=
g/����m:��ɍ���T2j�c"�0�nqh[К�`�&Bvi��b}��)�
{Z~��/@�)��u�4v�<�CXx������Bo]�/��H����q��8��S\os-؏j�PrB=��uuT��󡁋N�H����'�{r�u׆������x��t��p��P�[n3�`ad�F������mId�|�h('Wi��4����ݝ����C�W�3;3�ݙ�3�ߦ�^����}dw�rw�-�XT���/-��f���W��& ����"+�X86��jk��y
����|k�|Kw7{�<�T�Y��߂(��ĺ�z�]�������?��'R,���8�Q�pp��ύ�]O�;�C#�a��۷V
U����W�|q2(�g�u�(%���
�G�xU��A��#�e��^^v�'�u���#R�,��#mj����h�#��+#�tMeM��^��nߘHl���`k���f�.?�6JG��.�l��v�;8AzTt��$��/oҧj�M+>%8�h�)��qi=�."�F\*s1�Op�ֆ���˒�i1IMrK�AS׈z����s�^I��/-/���}�(��d����I?"�d��ɭd?9_�Y���d��Dž���С��KN��|�Z{.�t;2��i�V7�t����#���jv��m^hnm�M�榹
��@,,����I0pk{<����������Pp�ǫ�����ݳ�R��(zz�鎎�����n۳�}{+�Vnݽk�<Y�e������Ķ�㛇G�GK#CC����bO�'ߛKg���LGWGW�3�����Ρ��i�j��Mʆ=�0�u�M��%xj�����̠�O2����Q�&�h�|�ve�v��d�X5H
��s�N�
�^�\��ކ�r=dQ�e�U�Ć���4��ѩ���N�$y�(��^��J�4�/��
8�Q^��5���p�r,�R�0Oa���Z\-�;� 4��B+���qz�X-s�����2�7eup��Ǝ1�/-U����b;����X��s���*\�
}�.ᯒ�nd�YL�TW�
V\�Gə�gDT�LgnO��8�[A�ic����hAs��<G����o�C4`m�X�H3i�!����A��������8��918�䍒��yY�A�%������?��|�u��_�!������e�w�����������;\Π�I���v�F)'�K��c�njB<��B�y+Ȃ ��Af��,L���(
�3]�ҩ�D��Eu#�F̑��XZ]O���Z=/�m}F`b5ņ�!���N��Ҩ.���ڟO��;�I(C3��pߦ��;p���<��d���������LX�ר��pfG�/���5��~/i��x���"�Cz�H�"��.�Y�o���$�E��%�x�Y�4YZ7�J����S���;��kC��1.���D���8kcZ;���_b�(T��"�̋z�d�P�C���R�l�]��T&i�n.`���P�5,�~�܍�o�����C7Z��r�xc�VrB�I�,W�ɪ�f��̺&f֙@e��0��q�[���Ğ�*���z�t߉��	q��~5~0T������7�aF�jR숦��3�2q[���:Cš#۸Ǘ���-���2�������s����+�kd��������qk�	�h��u�_�0[��0]ѿF��l_wc];�R�*�[�����#�q@����%�!�iF�-��ϟ�?�N� ��(�_3�*���R��yw�ǯ7�k�E VT���vpB	'pq�j|F��-��c�u�����
�������3���ã�]��Ó,�RR�7o�zu��Y��Z��H����ky�}�ՠ�
A&/�^8���[Ͳ(>"�:*xp0O��N�K�7|Ա��?���!�%�h�=�~�Bp6ܒ��#��9EE�vsa����D}�iC�L]V]�XՕ��h��:����мѭp��3f��++���hA���e��l�Ckg�<L��7�S�;����}wSY�Ʒ?⯂�mA��i�CE���\����e�$ϣ�S� ZD�� ����=����m�.
w$[��}v+��մ@��wf�BD��4��@�����eD��!`�a��
G5�J��V$��,��B+w�a�����܂+K=͚�<t�ȉ9���͞)�vG���f�M�c�~���	hw�!P�iai�D����ָ֝;����4s�E<0'Z�f[L[8���3�h�ڢ�d�$��v՟h׭)-䊫�@"WRZ[\��L�K����6;�xfU�3���C�a�]u�&Z�l�Ä��M���D	*���h���;��a}N
�'�ax�A�<����(Y
ר�����XBJ��Xޝ�.��	��+*x����Ss:���<�z��/�=������ե��
�����#g~��OB�K>���g~��|�����Ұ��� �њ��g.4�p�`�s	��2�Z�5"�f�hf�Qv����ԯ�����V��ꃺ?Գ�_���o�%|{�N݇8{��S���ECT�GR&N�9�t@��-�I��E��/%��t��KT\dIޜ�x&U�$�{�ĩd;��
�}��������'	HN�XK�DkD5���j{��)�e_!��C�7�����KΏHi���\S(�h"?�*�ԓrө��f��m�
���7��sC�p>��C�fu#�7�Q��Q��	����o��b�ܚE�S�~��@�s(?�.�l��A8�/�O��r�eĝ���c(<�kKR�ď�P�D$�ROh��1�*{�}yp�"#�~�X��X#,��s��;��>u⾓�-�u�;��EZ�n+�q�������k�m;�`�zk�@̀�X�P�	��R��>j( �#�C��G�
B�Y�#��Fb��m\��j�޸�.�%��ܷo-�-f�՝�<�&����n���׶��P�m�_uwY=VY67qR��P4.%�M��l�;�)�`B�a�j�ʼ�c��E�Y��@k"�����&}���[$���(g��M1M����ŵ���	(�vϧ��E�R��sΦ!G�����--�e��~Ɂz��7[;@�)1a�!Z�9�`+B�ar{�-�U�ŭ��bT���X4��gZ���a�ƹ�25xɓ��8�e�X⿈|�eI�,Gv�}��c���ͬz꘽��L�d
��-7��[�8�XK����3(�juD�W髙L�ʮX��V��ں7g+F�Zs�_��4X��X�ښR�򽖀�uwkF�pWkv}^�H�F��|�6��2H�s��P�,��Mk��$չ�bA��̔}:2Î�[�'�	Yj�3���*�e;���口rOH9Ic��\^H�`B3���w�8��œ�'�}�$U.�`_��9���8y���3�O>qrO�k�컍� B�j^0"K�ԙc�%��9�+�j6`��a����A�coq��C����}X�dI3*}���b-�I?/��)�;�g��Z!^���Ӕ��9������7�Q��F��.�.�J�l.���ZQ�s�/7�����0W��G]{�?q�}��Ҍ
�<��ńZC_1��� !ⲃ1�=�����3�ړ�}~�p'�����_��l~���g�m��o82�X��gj���x��y�Y¥1�7g��1��~`7��J�T���r�����/p
ۢ�;��%�;��i���z}#g�0Dv/��{�����w��:?��E�j�6���6������<[0|h >�xβz���kbl"R��u����#��E|�7|ܾ�O
�©��N=?��iz�S��ʙ��x���	��1�xb,��[͚Zͤ��d����X]��i@>sf��vI�W��'k��,��!K,�l���T���^c�]E��m|����b��(R���'��d�Gc?�9��8,W�^���n�7�T�p&H��7���o\��f����XO��S��z�FNHH���ކ����}z�F�l{��W}苓���ml^i驈榯��?��#OoC��/�=]}����J�q^��}%ȥf
#�ȁ����U���j���E{�w9h���ˡ�n�cv�Jn��mX�M@<"ʟ�4�q���#m�?�pؚ�뾶/�XK�B�bo��=i�oT�@a=Y�"	&��V��.GQ�k��v��������ŔY��Wn�������7 E�71�;��{u�5aТ9e���@�YF�m|��"5=��a&o	7�z�N�'���n'j1�
-.��7���O]����=^5��{]���Nu�'c�@����ěGظ��i����y�o�ڍ�F�y��a'�I��4��m�̳� �X�7d,���7�F*8s�(�	a�-����
y�"��?5r�ѝ�%�	�5�W#;�C��T[[ڎt"ݵ����So�'�޽Q[�ZbIi����)���J���a[m$N2h���#�Cv��	"/�9�p��sG
O�����Ϲ&+g�k�Ѐ����D0�&�P��h���/ۗ�Ld�3Z$�U��Lڠ͹���NFJc�|��<��88��B�Q�|̵J���&�J�u���`RQ���d�/�\lmo�K&�����/���k����G�ݺ+��$�۱�7أF���vҗ\/�9�A�JM>���x}؇���Hد8y�;u%�f�uU�3K,Q�
���D����_o��R�mS�Mn�L��n����=�����ӥ��=S�R)Vs�����;+����m����kux�c`d``��W�9���|e�f~a�z,�A��������	$
k��x�c`d``��$_00�IFT]P�x�c~���<��
�Tu*V���(�v�>�V
n��:h�6�		Z	�
&
�b�
4
�
�B��Z��P����J���^��Bf��������p�$p����>r����B��,R� E\�z�s/px�u��J�0�O��@E�[s%���ɼћ!���vmG۔4�5|Ɨ�Y<m3��
m~��N�_��{�QU��C-��?X���,��_-7p��rxgQ?�Z�ò��8���qe�F��r�<���K�l���g����-7q->�*��(���d����F*ZQ���]�P�\��B�Əc�x*I\��ȍ�~��]���y��<R��:���觾&���u�3f!Z%rb��L���'4&�ۿ��
6ЈxU!$n�8��A}Ҝ��UU�.b:.V��+9���*��"&;�M8��-z���c*�guW�JΩ��ۭz$�������9�<�G�0a�R��$&;y%�X[���;���9���o-ꃱx�mR�r�0�J�H;qz�=a���{��
E�@�@������x&x vq�;���tu�_h��m���A=�1�Yl�f�a�b�cvbvc�b��������N�N���b��\�<.�2��*��:n�&n�6��.��>�!�1��)��9^�%^�5��-��=>�#>�3��+��;~�'~�7�r][L�0̴'&mVe+&�%)��
I����A1�O�a&$5M8��<4d�6ĸ.WZ�rA�XG�\��I�R
�8�T�Q*\g�|(��}�7�R=V�NBe:�e_��01<#b#A�N������$K_Ί�ĤPö�:�Ym\d���b�d���R��A�&�]ʄ�
x^贝pN�c�*�Z�E��nVIi�!R�J����ҭ�J��Ju�4����)�$Tǒ$�)�S����
5"��|�d
U�&��v���t&’EI��+ee�ZW?�*��Ӵe�d�].���@끤�x�"�jZu�6*��pI���H��(�}jЫ�^�z#���3K2^W;���:��G�^k�By�gc���~��|l7R���C���*{���t��I�j�ȩ�<73��T��q"�g��E#�[�')s�˩���]�F�&C�x�c��p"(b##c_�Ɲ�X�6102h����9 ,>0��i��4'����ffp٨�����#b#s��F5oG#�CGrHHI$l�ab�����uK�F&v#�lib/themes/gray/icons/material.ttf000064400000056730147361034400013206 0ustar00�pGSUB �%z�TOS/2> I�PVcmap���\cvt �Q� fpgm���YQ�pgaspQ�glyf3Qk@�head��H�6hhea<�H�$hmtxg`H�plocaRJ\�maxp��K namew��K8�post��N�prep�A+�]P�
0>DFLTlatnliga��z��z��1PfEd@��ZR�jZR�,,
��Z�����	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[T[������������������	�	�	
�
�
����
�
�
������������������������������������ � � !�!�!"�"�"#�#�#$�$�$%�%�%&�&�&'�'�'(�(�()�)�)*�*�*+�+�+,�,�,-�-�-.�.�./�/�/0�0�01�1�12�2�23�3�34�4�45�5�56�6�67�7�78�8�89�9�9:�:�:;�;�;<�<�<=�=�=>�>�>?�?�?@�@�@A�A�AB�B�BC�C�CD�D�DE�E�EF�F�FG�G�GH�H�HI�I�IJ�J�JK�K�KL�L�LM�M�MN�N�NO�O�OP�P�PQ�Q�QR�R�RS�S�ST�T�TU�U�UV�V�VW�W�WX�X�XY�Y�YZ�Z�Z[����
%@"Eoof

+5333	3���}�_�_}��Mw����-�(@%GEDRVJ+!7'	7'!-�%�8��86����7���6�-�'@$GEDRVJ+!!�6�#��89�7�P�68-�@Ef+%#'	'R�8899�&��89��8���@oof%5 +#"3!2654&#!��#11#�#11#���1"�"11"�"1��k�GK�PX@#cmnTWK@"omnTWKY@
	+%!"&546;!2!!�!//!�O!.�fU�Z*#/!�!/P.!�w:��!�j��GK�	PX@(ec`TYMK�
PX@0mkk`TYM@*mk`TYMYY@!	+!2#7#54.#33!'!"&=3b=r��s4�;�s5M=��sgK����5(��5K���ZK�PX@c_RXL@o_RXLY@
+%!!5!'#"3!2654&A�f���S�#11#�#11d�SS1"�"11"�"1���K�
PX@-oec	^RYM@/omk	^RYMY@	
+!'#"3!2654&##5#53533A��S�#11#�#11L}T}}T}XS1"�"11"�"1��}}S}}��A���GK�
PX@0	ome
^RYM@1	omm
^RYMY@+3'%!#!"&5465##33535���M�1"�"11�S}}S}��?��#11#�#1��}}S}}S��9�	^K�PX@$cmnRWK@#omnRWKY@	2+73!265!%#'##!�6&r'5��Z�.�-��'56&,�..\����	
H@EG^^RXL




		3	+#!"&'!535'7��1 ��!1�hu^u�Y������	 ++ �X�n��ů�Ջ������)2O@LGm``TXL10-, 
	))	+"#7#47>2#"'3276764'&'&4&"260aSQ01w��w&%�@?%&&%?@KSM8-p=aTP/11/QS/B./A/�1/QS`��L@?J&%?@�@?%&48$%1/QR�SP/0��!./@/.��\�>@;m^^RXL		 +!"3!!"3!2656&!!��:,K�p�`,,�,, �`��,��M,��,,,������"+4=B�@�?@
	
GA"Fm
	
	m		km`
``
T
XL>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625�-MZM--M-'bb(-M--MZM-b$}�e"11E00#"11E00�

�S$(-M--MZM-bb-MZM--M-'b��*�1E00E1�1E00E18

��S#*��J�&N@K`
	^^RXL&%$#"! 
+#."#"3!2654&!2"&46!3!53��:J:�,,,.�� ��K|K�!**!,��,,].  �T_ss�����-+���\����-��*5���V�'5CK�@1
	=G"FK�
PX@N	e
		
ee^	
	^

```RXLK�PX@H	e
		
e^	
	^

```RXLK�PX@N	e
		
ee^	
	^

```RXL@P		m
		
me^	
	^

```RXLYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4s�����jI
Y��KYv


�sr��\�y^\
��\�[
��Q����%.26s@p#G	`
^^
^TXL33&&363654210/&.&.-,+*)(%$!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35�SSS0$$/SS��SS/$$0����M�}}�6��S�S!!S*�*S!!�)��S�SS��TT����@
Gof+73'64/&"27S��2l&
U�*j��(&
lU�+�z,I@FG``TXL! '& ,!,
		+"27>7.'&".4>2"2654.�]UR}  }RU�UR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$�'4WfW44WfW415 1BB1 5��J�
#@ Eooof+%!3	3!!`&��������R�&X���xb��L�
3@0GooRVJ

+#!#!5L���X����&���bbb����-1G@D`^^	T	XL10/.$#--
+%35#"276764'&'&"'&'&47676235#�TT*ra^7997^a�b^7998^aqZNK,..,KN�NK,..,KN�TT��w97^a�a^7998^a�a^89�.,KN�NK,..,KN�NK,.�S���� A@>Gmk^RXL  83+'.#!"3!2656##5#7!�A
��	A6&�'5�^����?&,,�MM��'76&C��\\�..���� ?@<Gmn^RVJ  83+'.#!"3!2656'35337!�A
��	A6&�'5�^������&,,�MM��'76&C��\\E..��#'+/l@i	
^
^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S����ۯ�ݯ�ݯ�ݯ,���m��ۯ�ݯ�ۯ���w�����+����w��v������������A@>
^^	R	VJ
+735#35#35#!5!!5!!5S������L��L��L��F�(�F�F��������-N_@\		m		k
``^TXL/.CB6532.N/N$#--
+%35#"276764'&'&"'&'&476762"34623476767654.�TT*qa^8998^a�a^8998^aqZNK,..,KN�NK,..,KNZ-M-T1D1

T 
-MdSH98^a�a^8998^a�a^89�.,KN�NK,..,KN�NK,.G-M-#11##$-M-����!%48<@IMQ�@
10GK�PX@s

em-e&%$#"		^('

^)^+*^,^/!.R/!.Y M@u


mm-m&%$#"		^('

^)^+*^,^/!.R/!.Y MY@NNJJAA==9955&&""

		NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 

		
0+"353533533533533354&#35!353#;57335!3535#326=35335�"2T)TSSTSST)T1#�T�T�����2"��T��T�TTTT))#1�5TSS�1#))TTTTTTTT))#1�SSSS)T��"2��N}TTTT�SS�)T2"))TTTT�.,>@;
`^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.�#;#��9`88`9��#;#�N��w��#<##<#��9`88`^#;#O8_r_8O#;T�O#;F;#O8_r_8����)>@;GD`TXL$#)))+%#'6765.'&"32677%".4>2�%
#SFH�IF)++)FIT9h)�G��;b::cub9:c�*268T�)++)FI�HF**'$
%�G�:btc::buc9��a�
!k@h	GEDop^	^		R		V
	J!! 

	+7/##3#'3/#55#5!3�����t _}z�d�\
�¯&��{���Ƅ��n��j�U((((��4M6��M��R� &+@(E"Dof%$+'5.4>7&'67'767#��V�())(�W>d::d>�
:>�cH?2q>>	Z7Ȉ
bKN�MKa
Z
Jp�oJ
�,bI?,@��Z8?#a>QZ6��R�*$@!E"!
	Dof+'36#7&5&'55>764'.>>	ZX
:>$$L_<0���>ee>V�())(��?QZ7�bI>6�9Z
$ S��ĭ
J79�87J
Z
bKN�MKa����'F@C
o	oT^XL!
	'&+2+32!!+"&5!5!46;5#"&5463�#11#�)$�����$)�"22"�1#�`"2SSSS2"�#1���!.*@'#G`TXL/*+6'&'.7676%67676.'.�76]`�b_9;76]`�b`9;�/.LNZ9h)�%!"~�!"/-LN[9hVqb`9;76]`�b`9;76]`[MK*,'!�6+h��+j9[MK*,'��A�/@,GpTVJ
+!"3!2654&3'�"11"�"11���hh�1#�f#11#�#1T��??����@

	Df+%73%'}��7#�6��Ĕ���.S�wN��q�S�k��f����"@Gof
+"276764'&'&'7�ra^7997^b�a^8998^a��;�<;�97^a�a^8998^a�b^79���:�=:�s2@/^^RVJ+7!5!5!5!5!5SB��B��BI\�\�\\��@of+%3#3#!3y�����L�~��~��~����H@E
mk	^RVJ
+7#!5#3535!#!#33�w*�ww���˳*w��w��w��w�5w*w�*����C@@	op
^RVJ
+733!#!#3535!5#!5S�v�ִ�*vdw���ww*q�*ew*���ve���w��-�@GEof4+773#!"&-*��+�:���.3$��$4�K0KMl<��
���$44����0@-GE`TXL)!%#+
532#!!276764'&'&+w��$�4V11V4� �`RQ/00/QR`����}1VhV2�00PS�SP/0����0@-GE`TXL%!)!+#"3!5!".4>;%q�`SP0000PS`�!5V11V5�$�}0/QR�SP/1�1VjU1}�����GT7@4$?2GooofIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*�#$hSZXSh*�#$hS�n(C''CPC''C6
E�*l

n*�DD�*n	
n*�$'CPC''CPC'��>@;Go^RXL	+%5#535!'#"3!2654&G���)��S�#11#�#11d}�}�$S1"�"11"�"1����!%)-159=AJSW[_�K�PX@v

e9#8  e.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"K@x


m9#8  m.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"KY@�\\XXTTKKBB>>::6622..**&&""

		\_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 

		
=+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335�"2T)TSSTSST)T1#�T}�}T��T}�}T��T}�}T��2"))�))#1��SSTSS�1#))TTTTTTTT))#1�SSSSSS�TTTTTT�SSSSSS�)"2T))T2"))TTTTTT����#'+/3�K�
PX@>e	e
^^
R
YM@@m	m
^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}��T}}"2N�����TT�TT�#1T}}}}T1�C}}"2T}}T2T�fT�����;�@�opR	^	
	
^^^
^R

^VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53�\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\�\\\\\\\\[\\[\\d\\\\\\\\[\\[\d��3�",1T@Q`		^
`RXL.-
	0/-1.1,+'&	"
"
+%264&"#54."#"3!265.%4>2#!!�!..B..(5[l[5'!//!� //�w!8D8!�i�%݃/A//B.gO5[66[5O/!�u!//!�!/O"8!!8"O�#��u��3�",C@@``	T	XL)($#""

+#54."#"3!265."&462#54>2�(5[l[5'!//!� //��!..B..Z�!8D8!�O5[66[5O/!�u!//!�!/��/A//B.gO"8!!8"��3�*/[@Xm`		^
`RXL,+
	.-+/,/%"	*
*
+%264&"#54."34>2!"3!265.!!�!..B..(5[l[5K!8D8!��!//!� // �%݃/A//B.gO5[66[5"8!!8"O/!�u!//!�!/�#��u��
@E
Df+	>3����p'X��uE� ���zr�����=@:

^^	R	VJ+#535#53#535#53#53#53������������������C���������������-+'			7�T����TN��TMMT���T��NT����TN��TM����)@&opRVJ+!#!5!3!���v��evg"��evg���4@1GEpTXL
+"'!'>327.'&PJG9�o�+k;F~[`wQT�3����%(:fAU�%&��@RVJ+!5!���B$v����(�K�PX@8oo
	e
^TVJ@9oo
	m
^TVJY@2! %$ (!(

	+!!3353353353353353!%2"&46�TBT�B�)**)**)**)*�6\$$4%$�����$STTTTTTTTTT}}$6#$4%��A�8Tm�p@mD9_UznGF`{F
```	`		T		X	L��usgf[ZNM@>*)88+"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5�}b2## +ez?r^##\r?640$

#dm40$

#d�	b}?r.	
&#03p30E
_^


%#brb#
b}?r.	
'#brb#
�('(�,# &''&�,#&T		

	
		

	�	(	7
				 
o''6


p(6

����@
	-+%''%5'
7'77'���^�����_���M���{}}8<��<�������&�����������A@>G	F
DooRVJ+%!!7�����
����������1'����E���Z'Aq@n$ ?,	Gm
mkkm	`TXL)(><9852(A)A#!''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+�&44& 7 CZ;/$>$
;),<+F+H)!2S0�(D(:'+=5J4!6 
 '��%gqz�i@fMB�oUF)�2G5Foooo
	`TXLsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&�75M
03A?56

((0
|N�<S*i@1-
+^=$1!@)-10%f+	

-�'%8%%�''8'(OmD%#	7#&#%<	V`.IYF6~�=
.4.7!�T
*,'	

;	&�&7$#&&6%$5(
7!
����5J@Gmk`^RXL0/,+)(
	+"276764'&'&#537#54?>54&"#4>2�ra^7997^a�b^7998^aGTTU%	
T04
0E1T-MZM-�97^a�a^7998^a�a^89�;T�%,B54#00#-M--M-1����`@]	
GEDoom	n
R
VJ
+353'3#5535'#3'##7#��s��s(r��s�rr��s��s�r���s��s�K�s�sMr������
A@>
G^`TXL5 +!"3!265".4>2!5!��%76&�'5�a&@&&@L@&&@f�/��6&�x'76&,��&@L@%%@L@&ѹ���"�%D@A
GED`TXL+7'"7&5&>#552767654�RGD()08<i=8=i=��RGD()Ar��s)(DGRZF819<h=C819=i=r��s)(DGRY����7@4^^RXL
+"276764'&'&#535#53�ra^7997^a�b^7998^aGTTTT�97^a�a^7998^a�a^89���SS�����-+'	7�d�`�b���b�_�_b?�����-+	Vb<��b��b����b�����	"@Gof		+'!'�_��������_��_��������
�-+'%'77Z�v;bv��[��v�;�w��v��;v���:w�;�v���� (@% Gof
+2"'&'&47676'77'7�ra^7997^a�a^7997^a��:��:��:���97^a�a^7997^a�a^79і�:��:��:������3@0GmnRVJ+35!333535�)�`)S�B�^MTT��ST��T���-+%'	'\�C	9C��E��9C���@Df+'#'�"K�h�IC"I�z���K���@Ef+	737���H�h�I���I���z�K�G@of1+&#!"27654��&m.l9-��o�G@of6+%4'&"3!26���.��
��o��+��s�	"@of		+###s^B^��_�_B�_�_B����"@Gof
+"276764'&'&77�qa^8998^a�a^8998^aq��<��<�98^a�a^8998^a�a^89��<��<��J� ;@8EDopRXL  +67676=#5"&463121�-,MOaaOM,-��K%���ha_CDDC_ah�i��(����
,@)
Eo^RVJ+#53#53!KKKK�9B�_���K������@of+	&"27654��,.m�l�&m����
@of+	62"'&4m,.���l�&m.����&/8Ah@e
m
kp`	T	XL:910('>=9A:A540818,+'/(/#"&&
+"3264'&46;2>56'&'&"&4627"&4623"&462"&462�qa^8998^aq))Q>k?97^a��))8))m((8)'�))8((m))8)(�98^a�a^89)76)>k>eWU13�_)9()8)�)8))9()8)(9)�)8))8)����*-@*GooTXL"!+#3"'&'&5467'2767654'&"\\�C8 ,,IL�KI+,?8AD&(98^a�a^89(&��1kC.@BJXLI,,,,ILXK�,C;QT]qa^8998^aq]TQ��!d_<����m{��m{���R�j��\��������������������������������������������������������������������������������������������*V���(�v�>�V
n��:h�6�		Z	�
&
�b�
4
�
�B��Z��P����J���^��Bf��������p�$p����>r����B��,R� E\�z�s/p�55=DLT_
+g�	j�			-	=	M	c	
Vs	&�Copyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.comCopyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com
\	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnext
ql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-error
warning-alertcaret-right
caret-leftthemelogout��R�jR�j�, �UXEY  K�QK�SZX�4�(Y`f �UX�%a�cc#b!!�Y�C#D�C`B-�,� `f-�, d ��P�&Z�(
CEcER[X!#!�X �PPX!�@Y �8PX!�8YY �
CEcEad�(PX!�
CEcE �0PX!�0Y ��PX f ��a �
PX` � PX!�
` �6PX!�6``YYY�+YY#�PXeYY-�, E �%ad �CPX�#B�#B!!Y�`-�,#!#! d�bB �#B�
CEc�
C�`Ec�*! �C � ��+�0%�&QX`PaRYX#Y! �@SX�+!�@Y#�PXeY-�,�C+�C`B-�,�#B# �#Ba�bf�c�`�*-�,  E �Cc�b �PX�@`Yf�c`D�`-�,�CEB*!�C`B-�	,�C#D�C`B-�
,  E �+#�C�%` E�#a d � PX!��0PX� �@YY#�PXeY�%#aDD�`-�,  E �+#�C�%` E�#a d�$PX��@Y#�PXeY�%#aDD�`-�, �#B�
EX!#!Y*!-�
,�E�daD-�,�`  �CJ�PX �#BY�
CJ�RX �
#BY-�, �bf�c �c�#a�C` �` �#B#-�,KTX�dDY$�
e#x-�,KQXKSX�dDY!Y$�e#x-�,�CUX�C�aB�+Y�C�%B�%B�
%B�# �%PX�C`�%B�� �#a�*!#�a �#a�*!�C`�%B�%a�*!Y�CG�
CG`�b �PX�@`Yf�c �Cc�b �PX�@`Yf�c`�#D�C�>�C`B-�,�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�	+-�,�
+�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-� ,�+-�!,�+-�",�+-�#,�+-�$,�+-�%,�+-�&,�+-�',�+-�(,�	+-�), <�`-�*, `�` C#�`C�%a�`�)*!-�+,�*+�**-�,,  G  �Cc�b �PX�@`Yf�c`#a8# �UX G  �Cc�b �PX�@`Yf�c`#a8!Y-�-,�ETX��,*�0"Y-�.,�
+�ETX��,*�0"Y-�/, 5�`-�0,�Ec�b �PX�@`Yf�c�+�Cc�b �PX�@`Yf�c�+��D>#8�/*-�1, < G �Cc�b �PX�@`Yf�c`�Ca8-�2,.<-�3, < G �Cc�b �PX�@`Yf�c`�Ca�Cc8-�4,�% . G�#B�%I��G#G#a Xb!Y�#B�3*-�5,��%�%G#G#a�	C+e�.#  <�8-�6,��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# �C �#G#G#a#F`�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca#  �&#Fa8#�CF�%�CG#G#a` �C�b �PX�@`Yf�c`# �+#�C`�+�%a�%�b �PX�@`Yf�c�&a �%`d#�%`dPX!#!Y#  �&#Fa8Y-�7,�   �& .G#G#a#<8-�8,� �#B   F#G�+#a8-�9,��%�%G#G#a�TX. <#!�%�%G#G#a �%�%G#G#a�%�%I�%a�cc# Xb!Yc�b �PX�@`Yf�c`#.#  <�8#!Y-�:,� �C .G#G#a `� `f�b �PX�@`Yf�c#  <�8-�;,# .F�%FRX <Y.�++-�<,# .F�%FPX <Y.�++-�=,# .F�%FRX <Y# .F�%FPX <Y.�++-�>,�5+# .F�%FRX <Y.�++-�?,�6+�  <�#B�8# .F�%FRX <Y.�++�C.�++-�@,��%�& .G#G#a�	C+# < .#8�++-�A,�%B��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# G�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca�%Fa8# <#8!  F#G�+#a8!Y�++-�B,�5+.�++-�C,�6+!#  <�#B#8�++�C.�++-�D,� G�#B�.�1*-�E,� G�#B�.�1*-�F,��2*-�G,�4*-�H,�E# . F�#a8�++-�I,�#B�H+-�J,�A+-�K,�A+-�L,�A+-�M,�A+-�N,�B+-�O,�B+-�P,�B+-�Q,�B+-�R,�>+-�S,�>+-�T,�>+-�U,�>+-�V,�@+-�W,�@+-�X,�@+-�Y,�@+-�Z,�C+-�[,�C+-�\,�C+-�],�C+-�^,�?+-�_,�?+-�`,�?+-�a,�?+-�b,�7+.�++-�c,�7+�;+-�d,�7+�<+-�e,��7+�=+-�f,�8+.�++-�g,�8+�;+-�h,�8+�<+-�i,�8+�=+-�j,�9+.�++-�k,�9+�;+-�l,�9+�<+-�m,�9+�=+-�n,�:+.�++-�o,�:+�;+-�p,�:+�<+-�q,�:+�=+-�r,�	EX!#!YB+�e�$Px�0-K��RX��Y��cp�B�*�B�
*�B�*�B��	*�B�@	*�D�$�QX�@�X�dD�&�QX��@�cTX�DYYYY�*������Dlib/themes/gray/icons/material.woff2000064400000026720147361034400013430 0ustar00wOF2-�]�-tTV�\ 	�p
���6$�p�: �M�-��U5��2~��{�ڣADŪE�dm������!̂9M�!��<f0�n���H�f=X�m���b�:�e\��c�!>� �0��7�0�E��W�[��g�$R,I�%�ӳ_��Zvka90t?��v�fP�J�����*j2�F��L��s��ң$�_֔��%4���x`�[�m#��M�����uZ�2Lj%���rښq�� �d�ٺ-���R�Rr�+�w���
��S	�JI� @3~���j�%r�U�mF��IK�AL�&�����^ࢌE9�+�"�o�Õ��tk<��wz�P6����NC`��G�+e�jVy҅ȨO	�,%SQ����F����4@\�������i#�������IQ?i6���Y��A�i8t�6W�^w׮JW��6��k�;����y&�Ѧ
�$�B4O�B$Y	RY]*�n�*@�b��CUӛ�|�v���ɲ��v+z��<���K�
a`'$l�y3�͓{�:��͡t��I��̑S���H`7�8z������⤭"�#���?������H^.�
�*5W��g�$�;��^�{"%��#�����`;��!��,r��[�ؔ�j�[�)���S�HZ&�v�\�PD��K�S�����D��-W����ZX�����Љ����l�5N�!���a�$.�E��V�(����Z�B���ރ��7l7$�Bwr�\�bqZ�JC�����Δ vv���]<�,/+���̌$R�\�������U������[XZY����;8:9����{xzy�����I�fX�DIV��I5[�6���r{w_�:,���HB� ��,D"Q�(B� ��*D
QG4MD�х�F� z}�~�b1�F� Fc�q�b1��F� fs�y�b��XF� Vk�u�b���F� v{�}��q�8F�@�B�A�C\@\B\A\C�@�B�A�C<@<B<A<C� ^ ^!� �!> >!� �!~ ��jϕ_F��
 0�G#$��&Yz����ωܖ�O9Q��
�_T�wh�{`��x�Sb��N��4�<��M'[_�7��{�����8Q��K?Y-�S��	!R�E
}Q� �{��s*̅f�X)�B�dFq`�l�t:�9��:��)��o�Ŷ3��_G��F!��! Y��!�ţ�R/�FK�}�m����VN�3{K;�zd��B��Ѕ
N�b�xc�\O�_0�_B��:���ҮJW`)��el\��A�-u&��SC����At�^4�4&Y`e���maҞ�V�կFZ��W��گH�y�i��'����> ��J�~1(�哐�mQr����'�,��
(*z��GK{$g�PQ��E�x�����ovP�n3�۾b:��io^C��M)k0XD����c��X��J�Q΅z�yM���"�c�eA~"�pA� ��t�X�O��^���1(�1 �q�6�2׈�I(-j��"ST�ߪ�<(h�~�_ӈr�J�h����0B� ��!�B�Y�E �"D6E�슸�`O�hvbv�A�@=@�@}@�@@�@CP
�%YB_A�4j���]�DX�&�	�.��L��X}njj��DV��?�.�~�ZY�z5��t��b+�?o0T���vW�yK����!?=�uq���e�.,��P�y�h�d��N3�+�o����J�:b-�2����P�ҥ�u�O�����TH��9��Z�(��������~��j�lђc4!�z/�[i���.C�K�ʑ���9D�Y�]�V���MǍZ���F�iYi��U�x�ޢ9Hm0�- Azc�j SɁ��S�>�����@隃�":54#������|�d�]$�L�H��x���}U�ҒRk�
�޾@�xV|ae�]�I>NV1u�Xӭ��ܵhYw'P�vm�Kg���BO
�7
�B:��qPuD#��+�X������޹[4Qͣ�W�$�*�\�y�q�>w��)���)x��!��/�7�5�|���H_=�D���d,g�
�`��:M�[kQ4>yFZ<� �xA'@4y&@�N��l:����P��<�`��������[�Q��:�
`�������ޅ"��މI5���?�%b�::̕0�h��c~�N�/��W
��	�/]_aW��k���c��S\�hE�D7���ӥ�
�U����S�y�~w��	2���e��Y�bB��Q�(��!�Q�Bt��XeNܰ�����R�IBԞ3^�k'Yf�Ne4y���u7�P�l�wMi,<�xc6!��'1����јw�U�&����ȿ/e��P�Q��˰�����R��3k�ۙS��fױ3aQ�W������^��$Β}9���-�D׭��l5y�g�'I�Wf�Cf��>#�j6gUf׷5�aW.��L���Ui�2w� k^/Y�&����eOX�ߜ'��Uϗ��@5���P�,2���}��Ŷ_@��|���y��	�$ơh�����z�,�\g:G�kj�b�BBF��~nE5idRv��A�8L���f��!���Kq�a��I��p��TI��Z5t���m���Ikl�(�w~��Vf8C�{�	DG�!_���9it�k�`6_A��:r��|F�K�6n��I��\��1��哌�RVI��X����SH	u��e���T�+Q�J���iMb��b�]�e�ȇ+7vW�a�H�d�wL����e:^�o��1+1xak��`
�Z�����|$��#��@�i���7S�0ډ@����,������+?{Qi��ʉR�r^)u����J,�oEH�k]��t���� �q+a����Q����T��D���u LI� ��lg#Q��	e�'R@��ku_="�����T�E_��HʋAR�M���TC&�b�s̔��ݾ�F:�(���h�j�g,�$}�{�-H�Ô�	��EG6�
	G�'m,��w� �pZ�Z�祝�Eb�X4�\���&'0k��n��br�a8�Zx �9�~�� �=9*xL��md�e/,���0T~��x���������}�.va���������������?HX�����N�g��AR:@;a��I�j3��$�%Ʊ�%����e�����ѝy�W(s9`]�����O8����]KS��oz�(�O=f/��n3�	�27����P6�pU�`�{ܥ-��F�,҄��\%����u�ئ���3��]b�.yB�<�ϳ�,7}~:Cf���K��U@��עጜ�_��/��'
�V}��É#��D�t^"�8M�%]��f�F��
���I߼D8$k~^	?u)�E�VMy�hu�5)�O��m�Q5�a��|���f�Al�H�������k{؍V��$�佋6:�N#�.�!���s�v"����n+����KrBu�h��ٟ��/Uu��jcJ�@ťz
2:�c�;׼�ٍr�k�Z�fֵQ�
Z��^N"��Q��2⢖�}9}��Wo���F�g���vO�W�?��)5�us���k�N�f��\�5Z�1O�p���v�U�A�>{�8���NC��Kw�ʑ�v������m��^��@�z���y��H�/�m�^��s6\IQ%Zh��A��/�Uw�+0��׬���ϸ�ߵ[%=�Lv"��B	���w���O�a�9Iik�T�:m�7A�J��W��?̽�߮�r訟��f��_u��������k���(k�C�}������ٛ�H$7W#�Y����G�PRő������%7�*�)�IB�-��cϋϡ��=��i��;B'�x֋:�����N��V��G�~Z��(A�C��A#���ج�)P:P�����*����R�x)��R�R�{؈��-|XN����`��X=�|/��>\֌X9�.�»U�g�h߻r)A�F�P���d����x_Ni#�	�,Ӈ�o?�C��_FwY%��)�,ig�rY"�\r��	�1.#d�9�ӧ׫ִ-�T��$�CU�XB1/�|K
P[���Y�0�Ǥ��6R\���\��4�l��d�)�g��������li֐fUh����GF�Eb�(���(ݾ%�����gx�XD
������V����e�g2�4IB��"�T��&���_������I��:`Ɏ<e�
Sq�|&{���B.�Ǥ�����
�׾4�*��p��-���T X��P�r
���C���,��ccd��ӧ�<��*�0wnӨ?
����lf^׀��G�i�b���5=�#}����
�(Z������z���./#4��܁��!�-u��X�a��M) edˍJ�	
K�r3�2�����.��ǁѸ	�x�N�m����v�Ҳ!��ٽ�o�t��t[�d��6S�Wmr<�sε����i2��ff���H�$N'�!���E�j�<�<�<
��	�$f���,��^ˮ�2����:����"d9~����
��O�o�;x�r���Q_��wq"��먮���e��<���h=[=1N�+��Z�^׼w�W��:�v���>�����3<�6�9�~x'��5㏙�5�n�	���I/��<�l�9lf^�<{G�VFK?����A�g�=+<7�e�!���4�iE�,>���/�ު�ə�����z��$�|�lB�[dv�Q�ڹ�8$"�#��d�NS�S�7�r���U�����FnR�ԛ)�5L~�5�g��\o�B��86Ԯ�	��W&�Nd��H�D���jG�b�9����k��T������,F��)�.a�[��U��Ӳ�����~�6�=��>ұ/�r��1|.ô�3��cO1��d�C��)ZLO��J��M������9�M���ܔ�+�!��\7��������D{��H@��_m�T�߫{?�ӏ�|�M�����%3`�UR�-�3�� �mi�s�d:|ux��!�'i���pZ��<�/7�:6d�f�$�}z�������5�*1�D�z�M%���>�48��{�g&1��Jj}��.# pm"=��7�9n���L��L�|"#�KJ��.���'%y�G�$S�$?_�d��MM�D,혿|��eQK�/��ˍ�*����W��{zP-{>8�y�����K�QWU�w�g��6��t�q�2û���ꑂTI�bIul�*�L�$e�׿����E^�F[l�[�:�x|Ԩd�����m��+�Y�sv��`���84R�z�����OmD݌��pP�k!!�V�1U�9k,��򟤅�%%I2���B����^�MB�@��2�_\�1��!�\%G�`�Xy��%��O�yK�C�U�c��F.��w,F4�R�H�[�a�B+��Ku�W%�Vp����� �꼩(��WO!2I-6!a��C�����c���@ty��FPъ{�>�쟠l�����l9�lI߉�'N��~�,�=y���<Qxѭ�7h9y���\�cG�#�r/S�B��Rŗ�.�l��z
���D��!�"?+,,��kg���yn��e��<�*���R�ŰZ����s�4s���`��ٞg����0����f�`XD����t�I�CD�ڤ��Ɲ
�+|��Y��b��Q%p�
����]1�n9�0N��{Xl�����B�%�M�@�T*�a5s�D�T`�����{�,��*��sa�O�"���J�h݃6�0D
j�M�'��W�L�����7G����.ZD~���� ���
[��v�<���?qء�j������C��R�l��6���.�ՂJu(�4=�vy�����N���\kj]I��K���e�_��{|Vq���+~�^pu񤲊�۔V��
�5�̦��s��+zk-r潯;|�G���u�{Tvk���Tړ�ϯ��� H��	AФ<�"�$5���<1�J
J
\�a}uͦ����$�D]�g���+2(P(_�I���!��q�3�ł]2��,�F��cv��D���'٤���s�u�CTj��Pz��P�Qڹd�W(ޭ�=^�W�q���O�ׯ#���L4s��a��D���z�Gz-�c�kόb�5SOEꨙ�n��A%��Yoƫ`���˅���]w�䙰��������Z��|�;m��X�����ҽ��m�2�K��e�÷�}�2FLpx<vq������J>��|����'�E��!���P��B9���
��g�����J:��LX��7��(�x�M�x-���4�C�*_I%N��V��:1�*(�P:���}߅��p��psnۗ��,wøʂܴ#1 b})jn�����H:����+�6��+�nĺ:YI��y�?����G�x*�����V��T�{��|�t/jʙ�=3'i�ʋ��E�x1�xx�����AK��8(v+5��I���r5*�tv/	���a`2�#O�t"���{r���{���7\�p�R��%�
�aV���=���Z�?�:����E�2(
���@:U44|n��W���m�(�/	T�[,��%�11@|FlL)�Ÿ��gF^B�ʵ�gU5[4�����"��-u�r�"Vj:��bw��o�|
��Q(I00}�hSS��Uꚵ��$ij��~?��&�Fۏ]סn�M����T�3������8Rc�uHps���-@$�S��J�s`g��{�A &���_:�I�.Η���=�LTVڸ���~>����~����	��G��u����~=�/8���*�84���^��#��U)���+��x����+�c�m,}�s7�+�bo���j��[a
v�}��/��e?l��ї���?G�O��٢��v	-lΔ��z)�P�-�uaƈjKp�d��]ׯ<�*VQ�0�v�-��s�UEl-%:�����`~���sY
VJ��?*L�e�*�K��Q�4HWLjc�t4(4��hڕ��_�u�y�A���v��{ە��J^B�P�qIl1�ͯqm�{��<Y@M@,��e6���Al����he�q	�%Ҍ�zh=��PW+�1A;0ҳ^����f��\a�I`EN�ueW>`$Y�b��w�y-+�c<%��!��x��?����e+�6��l�?c5���a�5���FF��H�}#cg�{S�R ����jzon�
dc�
�k!�����iӾ�I����`��p
B�9"�v9T�N��8�^��N^�o_��ᦒC�]uR���R@��m�k�����8�y˽e�U�
�/�B
s�DU倊~���5ң �����Ԫ��ݺkjb�:�н<����j` �0�)(��R�3"��k>�N������L�;�I��<d��g�sNkZ�M�
C<<���]_�6��[�p�S�"��@s����n~�a�5ҡh�kj߉)��T!le�-49��iw�
���@��/ r�El��<CMv-I\Kg��K��������6��0�=F	��	n�M���֘k��W�#�alθE�ZsPBqR
Y)���4�ٮ��
!]�Vcw$V���eW�����Q�3��wه^�o	q!�^�_gb��
��i_�d��׌rH0�F�B�t�
N����f�Jd7-]�j}�ѷҸ��,_Ś
#�9�DBZ䄻�7?�;��V�*O�������bG��*�}��>�1�j�DI�g.Dȭ.�LB`kRLZ�7��K'�����dmn�:��p	����t�E����ʦ�3���n"��1�8�8'%�Lif�!ROX��u���ny}�W�r�\��żZ��᠜t'>�4��ii�M���ȑ@	/#IU&�B7���d�B����O'�G��aI�^�r}�I�"QS�)�Ȱ������gZ�ڜ��9#h�7�A�(�b	�21C�};�Us���|��v����8y;Jb�������#�u���1۩�'0��G��V�߬�j<f�Ko��x})��@JO��[�$�GE��֕�R�J.����m�l}t(�CX���\��Ȫ�W��ָ��z���SQWR�T��y�DD�'��줩S��A(�)x�-s���ʐ�t*\̧L�!�$<!�ݦ� L啨&С��wѻ�t�Q��p�L��}�a
q�R�Vo^��p
L��0=�u��jdݷ
~c/v�+B�)>����1��I�������0T8�a�nm/�I��ܠ@�L�x�숺�D�G��=��D�Z�T.?F�ۯ�sj��P�h�pF�}A;3I�beP,^�3vb�+:���Pb��va*K�qAZ�����?.�P���voEi5�5�������~$�O����]F�^�a�
�nc��Ƽ�}��V9De��V���C.�d��,����C|�	�~���uw�Y���ח��r�-�mG"��p4Ӿ�h���$���YR	��r�y�����n�وR�Մ�q��MW=���w���.
�`���`�z���V�B<�<"���ƒ �<.��u��4|�YU��5 $���x^ܢ�4�\&���H*�D��||<=g�rwG"�2��H��\�B�*�E��qH̕Jb�QqB$��+�<�8R(�8"Ω������A9y'+�Ե��6n(,_�+��v�$�����E4N:��N��J�A�[$<��
�y�*-1v�*0��MA��\UkUiMq^"z"�y�>��(�Bh�i�۱��t�5���u7�N��C��H�Ԑ��Z�Ԫ�!�1D��=M�GEʸ&@��\K��:�Q
|JT��N�H����e��e������(
l�V*�X�b2K�I9T��kQ���͕uR?�;��H�ff2L������� rd��RM�u
��Ν&�C�+=㟥�E��AW��LJ�[��Z�c)K���H�.�k���-ܹJ|5p���
b�/i"�k3l����ma��6���ʹ�;�JY4m��5�b.@rQGve�<-)t��c�1�]L��+�E����q�k��c��I��Hh
�A��b��~?�kQl8z���80U���n0�eL,��aUw�^�I</�Rq����@'�Vu�	ܚ�(Ż	�??�":,�HƝϑ�o
�&��#��#�伾%ți�_�讎[�}�b�&-��:���8UI���	kw��:�sN�Bsw��nj��￐G�[�U��
�������(B��>�M�
%��q8<x"��r�T
�	��}�ȵ�T���ޟ����x���jssaX��4*J(���r��6�5(���j�<8'����n.#M��7����(�%��F�&b����X!H�#��0���e���܋c����ȯ!�A�+qB�{+X�Pb]�b���u�}(҃�e�|6�%�]Vؾ�m�[f�7� �+��؁f��mGrJ"��Z3���(��n�ᦹGy��_��]!^���E�h^�id
��|��݋E9��Iy�jaE%���6�:!�ky?U�ԥ��b-Y���?��yR�]�C�ƔM��J�#���z�{ه�����u;_.�T�A?���޷�g��OC2$�SRE�0��ez�D@>���AQ�����b��˖�]�d�vH�W*�c����K�N��G4=�[p�#ؼߏ���5*�Ms��c+�(m�q!���r��@D�Kň���]zI>F(F튀���W(�y����4t��C�͢�/�]D�&1���;	_�E���Г�𧅁CQ�ܖ��%@?���q!Q�Fdy�K9�Kٮ��b��r�Yˈ\7���|(�򕅺D�Ru�P��ʟ��nY5��.q��KR��h&q��Oh��3��D �c"��,��j�	���~���V''Xc<��|�)�H)�l�@,�t����PZV'�����>���]W\�K�kj���j�,1un����xQ_�BI�uA3Rb��aN$>Cy g�H�]C ?;8�7��=|��4&�4� ��t>�É6q����~���cF����|�	��
�eW"�څF�25rBeXk+�nO��o_�^/ΏoNn�F�����ľ���ۓ3��A��쨃�S5Yo4ܝA�j2�;���Rb�
UK�
MW��K�a��v�lŲ̕R��$j�����1aj��_��X�̾�"�,�w��`���a�֥�сC�y��ܭ__�,��̚�����-�J�S҅��?���:��ऀ�W��I�`��J�^�!�r&��ɚ�d�ق���j�)�\e>&@t������[����W߫�V��H�!g�!�2��q�~��
ED�
Pzqݎ1u������6�
!i/[���N>Ng��6�b��Qmz%��ݭ�"�d�4��#�b��|��4g9$P@�Y�B�6�ƒ	xr��;�bJX���'w
g~�n�,��D�؁�o*�c��&��׈���p��@~vx�W�|��/�#̆��H�Y�a;�X�͑��74����*�ʞg���o��c���ơ������s�_�)��Q ��߉��$�S.�#�i�uB�|��0���!��=6�s�2ǰ]�����"�ӛ
��㻛Zn�P�&
�p�#w��-
Zx���M��hn"�UT|75����I���k7ip���j�~|��߸\$�Qͣ�c�I���݋���c"��6�,�|6�I���s�
�,������dti�Ajb2/)����|���W���l~��"|N�Q�|z�$q��ER�<BL=6���;�{s�<gÛ�"̵M��V�٠��>y�8�q���P�
�#�¢�&��'Z
���7/�/0�/NI�������ࡃ\:���Ϯ�MA����!^-�������s��
��sQT��da�W0���r��_�m�G�CF��0eƜKVXe�u�����V����Dc�D2��ds�B�T�Tk�F�I��u>ĔK?�S��uۏ�k��8r��aXNV����d�(�� [?=-��W+jH�3[�B�*L݄p�Ί�
�G��`rV��,�~��Zr2�4R����x^����w���b:N�V���TuKUg�t�c�a^+8�,�VB�d�$�̍t��9=���:s1�����A�ijK�xJ^�:4������m� �Ly�
x^��`A��'ZU���"��ib�����Sd7�
&s]6��/�%���z��f�´`�ڄ�*6��M������7=s��Ntٌv`7W�J7׹$��T���W��}2�S�Sb����h���T�!l[dqnJ"��
���4��t/�zZGkg��pz���ʆ��n�6�Q��T� Y��	�Z9����Bڬk��#�i�s䞛�L�|G��7�ۙ��w��񈅏�ߒb�O�%�~�W}�A�9PYٌ�g�������[�:�xدym������b��'���F_�Ylib/themes/gray/icons/material.eot000064400000057200147361034400013171 0ustar00�^�]�LPd!ԗmaterialRegularVersion 1.0material�pGSUB �%z�TOS/2> I�PVcmap���\cvt �Q� fpgm���YQ�pgaspQ�glyf3Qk@�head��H�6hhea<�H�$hmtxg`H�plocaRJ\�maxp��K namew��K8�post��N�prep�A+�]P�
0>DFLTlatnliga��z��z��1PfEd@��ZR�jZR�,,
��Z�����	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[T[������������������	�	�	
�
�
����
�
�
������������������������������������ � � !�!�!"�"�"#�#�#$�$�$%�%�%&�&�&'�'�'(�(�()�)�)*�*�*+�+�+,�,�,-�-�-.�.�./�/�/0�0�01�1�12�2�23�3�34�4�45�5�56�6�67�7�78�8�89�9�9:�:�:;�;�;<�<�<=�=�=>�>�>?�?�?@�@�@A�A�AB�B�BC�C�CD�D�DE�E�EF�F�FG�G�GH�H�HI�I�IJ�J�JK�K�KL�L�LM�M�MN�N�NO�O�OP�P�PQ�Q�QR�R�RS�S�ST�T�TU�U�UV�V�VW�W�WX�X�XY�Y�YZ�Z�Z[����
%@"Eoof

+5333	3���}�_�_}��Mw����-�(@%GEDRVJ+!7'	7'!-�%�8��86����7���6�-�'@$GEDRVJ+!!�6�#��89�7�P�68-�@Ef+%#'	'R�8899�&��89��8���@oof%5 +#"3!2654&#!��#11#�#11#���1"�"11"�"1��k�GK�PX@#cmnTWK@"omnTWKY@
	+%!"&546;!2!!�!//!�O!.�fU�Z*#/!�!/P.!�w:��!�j��GK�	PX@(ec`TYMK�
PX@0mkk`TYM@*mk`TYMYY@!	+!2#7#54.#33!'!"&=3b=r��s4�;�s5M=��sgK����5(��5K���ZK�PX@c_RXL@o_RXLY@
+%!!5!'#"3!2654&A�f���S�#11#�#11d�SS1"�"11"�"1���K�
PX@-oec	^RYM@/omk	^RYMY@	
+!'#"3!2654&##5#53533A��S�#11#�#11L}T}}T}XS1"�"11"�"1��}}S}}��A���GK�
PX@0	ome
^RYM@1	omm
^RYMY@+3'%!#!"&5465##33535���M�1"�"11�S}}S}��?��#11#�#1��}}S}}S��9�	^K�PX@$cmnRWK@#omnRWKY@	2+73!265!%#'##!�6&r'5��Z�.�-��'56&,�..\����	
H@EG^^RXL




		3	+#!"&'!535'7��1 ��!1�hu^u�Y������	 ++ �X�n��ů�Ջ������)2O@LGm``TXL10-, 
	))	+"#7#47>2#"'3276764'&'&4&"260aSQ01w��w&%�@?%&&%?@KSM8-p=aTP/11/QS/B./A/�1/QS`��L@?J&%?@�@?%&48$%1/QR�SP/0��!./@/.��\�>@;m^^RXL		 +!"3!!"3!2656&!!��:,K�p�`,,�,, �`��,��M,��,,,������"+4=B�@�?@
	
GA"Fm
	
	m		km`
``
T
XL>>65-,$#>B>B:95=6=10,4-4('#+$+$%+654."327&#"2>54'735"&462"&462"&4625�-MZM--M-'bb(-M--MZM-b$}�e"11E00#"11E00�

�S$(-M--MZM-bb-MZM--M-'b��*�1E00E1�1E00E18

��S#*��J�&N@K`
	^^RXL&%$#"! 
+#."#"3!2654&!2"&46!3!53��:J:�,,,.�� ��K|K�!**!,��,,].  �T_ss�����-+���\����-��*5���V�'5CK�@1
	=G"FK�
PX@N	e
		
ee^	
	^

```RXLK�PX@H	e
		
e^	
	^

```RXLK�PX@N	e
		
ee^	
	^

```RXL@P		m
		
me^	
	^

```RXLYYY@KIFDA?;8530/,*)(''#3%6+'&+54/&#!";3!2654!;!5!2653;;2656&+"32+Rs4s�����jI
Y��KYv


�sr��\�y^\
��\�[
��Q����%.26s@p#G	`
^^
^TXL33&&363654210/&.&.-,+*)(%$!#!"!%!+32+327;5#"&=3#546;5#"&#!5!5!53#%35�SSS0$$/SS��SS/$$0����M�}}�6��S�S!!S*�*S!!�)��S�SS��TT����@
Gof+73'64/&"27S��2l&
U�*j��(&
lU�+�z,I@FG``TXL! '& ,!,
		+"27>7.'&".4>2"2654.�]UR}  }RU�UR}  }RU]3W44WfW44W35BbB5y$#�SS�#$$#�SS�#$�'4WfW44WfW415 1BB1 5��J�
#@ Eooof+%!3	3!!`&��������R�&X���xb��L�
3@0GooRVJ

+#!#!5L���X����&���bbb����-1G@D`^^	T	XL10/.$#--
+%35#"276764'&'&"'&'&47676235#�TT*ra^7997^a�b^7998^aqZNK,..,KN�NK,..,KN�TT��w97^a�a^7998^a�a^89�.,KN�NK,..,KN�NK,.�S���� A@>Gmk^RXL  83+'.#!"3!2656##5#7!�A
��	A6&�'5�^����?&,,�MM��'76&C��\\�..���� ?@<Gmn^RVJ  83+'.#!"3!2656'35337!�A
��	A6&�'5�^������&,,�MM��'76&C��\\E..��#'+/l@i	
^
^RVJ,,,/,/.-+*)('&%$#"! +35#35#35#35#'35#33535#35#35#35#35#35S����ۯ�ݯ�ݯ�ݯ,���m��ۯ�ݯ�ۯ���w�����+����w��v������������A@>
^^	R	VJ
+735#35#35#!5!!5!!5S������L��L��L��F�(�F�F��������-N_@\		m		k
``^TXL/.CB6532.N/N$#--
+%35#"276764'&'&"'&'&476762"34623476767654.�TT*qa^8998^a�a^8998^aqZNK,..,KN�NK,..,KNZ-M-T1D1

T 
-MdSH98^a�a^8998^a�a^89�.,KN�NK,..,KN�NK,.G-M-#11##$-M-����!%48<@IMQ�@
10GK�PX@s

em-e&%$#"		^('

^)^+*^,^/!.R/!.Y M@u


mm-m&%$#"		^('

^)^+*^,^/!.R/!.Y MY@NNJJAA==9955&&""

		NQNQPOJMJMLKAIAIFDCB=@=@?>9<9<;:585876&4&432/-*)('"%"%$#!! 

		
0+"353533533533533354&#35!353#;57335!3535#326=35335�"2T)TSSTSST)T1#�T�T�����2"��T��T�TTTT))#1�5TSS�1#))TTTTTTTT))#1�SSSS)T��"2��N}TTTT�SS�)T2"))TTTT�.,>@;
`^TX	L'%$",,!%!#+4>;5#";5#".!5!%#32+32>4.�#;#��9`88`9��#;#�N��w��#<##<#��9`88`^#;#O8_r_8O#;T�O#;F;#O8_r_8����)>@;GD`TXL$#)))+%#'6765.'&"32677%".4>2�%
#SFH�IF)++)FIT9h)�G��;b::cub9:c�*268T�)++)FI�HF**'$
%�G�:btc::buc9��a�
!k@h	GEDop^	^		R		V
	J!! 

	+7/##3#'3/#55#5!3�����t _}z�d�\
�¯&��{���Ƅ��n��j�U((((��4M6��M��R� &+@(E"Dof%$+'5.4>7&'67'767#��V�())(�W>d::d>�
:>�cH?2q>>	Z7Ȉ
bKN�MKa
Z
Jp�oJ
�,bI?,@��Z8?#a>QZ6��R�*$@!E"!
	Dof+'36#7&5&'55>764'.>>	ZX
:>$$L_<0���>ee>V�())(��?QZ7�bI>6�9Z
$ S��ĭ
J79�87J
Z
bKN�MKa����'F@C
o	oT^XL!
	'&+2+32!!+"&5!5!46;5#"&5463�#11#�)$�����$)�"22"�1#�`"2SSSS2"�#1���!.*@'#G`TXL/*+6'&'.7676%67676.'.�76]`�b_9;76]`�b`9;�/.LNZ9h)�%!"~�!"/-LN[9hVqb`9;76]`�b`9;76]`[MK*,'!�6+h��+j9[MK*,'��A�/@,GpTVJ
+!"3!2654&3'�"11"�"11���hh�1#�f#11#�#1T��??����@

	Df+%73%'}��7#�6��Ĕ���.S�wN��q�S�k��f����"@Gof
+"276764'&'&'7�ra^7997^b�a^8998^a��;�<;�97^a�a^8998^a�b^79���:�=:�s2@/^^RVJ+7!5!5!5!5!5SB��B��BI\�\�\\��@of+%3#3#!3y�����L�~��~��~����H@E
mk	^RVJ
+7#!5#3535!#!#33�w*�ww���˳*w��w��w��w�5w*w�*����C@@	op
^RVJ
+733!#!#3535!5#!5S�v�ִ�*vdw���ww*q�*ew*���ve���w��-�@GEof4+773#!"&-*��+�:���.3$��$4�K0KMl<��
���$44����0@-GE`TXL)!%#+
532#!!276764'&'&+w��$�4V11V4� �`RQ/00/QR`����}1VhV2�00PS�SP/0����0@-GE`TXL%!)!+#"3!5!".4>;%q�`SP0000PS`�!5V11V5�$�}0/QR�SP/1�1VjU1}�����GT7@4$?2GooofIHONHTIT97+654&57>/.&/.+"'&?;26?676?6&'".4>2*XSh*�#$hSZXSh*�#$hS�n(C''CPC''C6
E�*l

n*�DD�*n	
n*�$'CPC''CPC'��>@;Go^RXL	+%5#535!'#"3!2654&G���)��S�#11#�#11d}�}�$S1"�"11"�"1����!%)-159=AJSW[_�K�PX@v

e9#8  e.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"K@x


m9#8  m.-,+*		^10/

^432^765 ^<);':%!R<);':%!W(&$"KY@�\\XXTTKKBB>>::6622..**&&""

		\_\_^]X[X[ZYTWTWVUKSKSPNMLBJBJIHGE>A>A@?:=:=<;696987252543.1.10/*-*-,+&)&)('"%"%$#!! 

		
=+"353533533533533354&#353!5335353!5335353!5335;5#5!#326=35335335�"2T)TSSTSST)T1#�T}�}T��T}�}T��T}�}T��2"))�))#1��SSTSS�1#))TTTTTTTT))#1�SSSSSS�TTTTTT�SSSSSS�)"2T))T2"))TTTTTT����#'+/3�K�
PX@>e	e
^^
R
YM@@m	m
^^
R
YMY@'3210/.-,+*)('&%$" #!"+46;##%#5#53253+5!533#"&3#3#3#%3#S2"}}TBT}}#1TT1#}��T}}"2N�����TT�TT�#1T}}}}T1�C}}"2T}}T2T�fT�����;�@�opR	^	
	
^^^
^R

^VJ;:9876543210/.-,+*)('&%$#"! +33533533533#3#3#3##5##5##5##5#535#535#535#53�\[\\[\\d\\\\\\\\[\\[\d\\\\\\\\�\\\\\\\\[\\[\\d\\\\\\\\[\\[\d��3�",1T@Q`		^
`RXL.-
	0/-1.1,+'&	"
"
+%264&"#54."#"3!265.%4>2#!!�!..B..(5[l[5'!//!� //�w!8D8!�i�%݃/A//B.gO5[66[5O/!�u!//!�!/O"8!!8"O�#��u��3�",C@@``	T	XL)($#""

+#54."#"3!265."&462#54>2�(5[l[5'!//!� //��!..B..Z�!8D8!�O5[66[5O/!�u!//!�!/��/A//B.gO"8!!8"��3�*/[@Xm`		^
`RXL,+
	.-+/,/%"	*
*
+%264&"#54."34>2!"3!265.!!�!..B..(5[l[5K!8D8!��!//!� // �%݃/A//B.gO5[66[5"8!!8"O/!�u!//!�!/�#��u��
@E
Df+	>3����p'X��uE� ���zr�����=@:

^^	R	VJ+#535#53#535#53#53#53������������������C���������������-+'			7�T����TN��TMMT���T��NT����TN��TM����)@&opRVJ+!#!5!3!���v��evg"��evg���4@1GEpTXL
+"'!'>327.'&PJG9�o�+k;F~[`wQT�3����%(:fAU�%&��@RVJ+!5!���B$v����(�K�PX@8oo
	e
^TVJ@9oo
	m
^TVJY@2! %$ (!(

	+!!3353353353353353!%2"&46�TBT�B�)**)**)**)*�6\$$4%$�����$STTTTTTTTTT}}$6#$4%��A�8Tm�p@mD9_UznGF`{F
```	`		T		X	L��usgf[ZNM@>*)88+"32>7654'.2"'&'&'&=4767>32676?"'.'&5 76?"&'&'&532676?"&'&'&5�}b2## +ez?r^##\r?640$

#dm40$

#d�	b}?r.	
&#03p30E
_^


%#brb#
b}?r.	
'#brb#
�('(�,# &''&�,#&T		

	
		

	�	(	7
				 
o''6


p(6

����@
	-+%''%5'
7'77'���^�����_���M���{}}8<��<�������&�����������A@>G	F
DooRVJ+%!!7�����
����������1'����E���Z'Aq@n$ ?,	Gm
mkkm	`TXL)(><9852(A)A#!''+"&#";'&5467>32632."3!264&#4.#". 7^ !%=#'5=,S2'3M,)H6VB(D(&3=+�&44& 7 CZ;/$>$
;),<+F+H)!2S0�(D(:'+=5J4!6 
 '��%gqz�i@fMB�oUF)�2G5Foooo
	`TXLsrihwvrzszmlhqiqKJ?>43"&+&'&'.'&'&#";767>/.7&'.=46266?>&67667676%"2674&3"264&676&'&�75M
03A?56

((0
|N�<S*i@1-
+^=$1!@)-10%f+	

-�'%8%%�''8'(OmD%#	7#&#%<	V`.IYF6~�=
.4.7!�T
*,'	

;	&�&7$#&&6%$5(
7!
����5J@Gmk`^RXL0/,+)(
	+"276764'&'&#537#54?>54&"#4>2�ra^7997^a�b^7998^aGTTU%	
T04
0E1T-MZM-�97^a�a^7998^a�a^89�;T�%,B54#00#-M--M-1����`@]	
GEDoom	n
R
VJ
+353'3#5535'#3'##7#��s��s(r��s�rr��s��s�r���s��s�K�s�sMr������
A@>
G^`TXL5 +!"3!265".4>2!5!��%76&�'5�a&@&&@L@&&@f�/��6&�x'76&,��&@L@%%@L@&ѹ���"�%D@A
GED`TXL+7'"7&5&>#552767654�RGD()08<i=8=i=��RGD()Ar��s)(DGRZF819<h=C819=i=r��s)(DGRY����7@4^^RXL
+"276764'&'&#535#53�ra^7997^a�b^7998^aGTTTT�97^a�a^7998^a�a^89���SS�����-+'	7�d�`�b���b�_�_b?�����-+	Vb<��b��b����b�����	"@Gof		+'!'�_��������_��_��������
�-+'%'77Z�v;bv��[��v�;�w��v��;v���:w�;�v���� (@% Gof
+2"'&'&47676'77'7�ra^7997^a�a^7997^a��:��:��:���97^a�a^7997^a�a^79і�:��:��:������3@0GmnRVJ+35!333535�)�`)S�B�^MTT��ST��T���-+%'	'\�C	9C��E��9C���@Df+'#'�"K�h�IC"I�z���K���@Ef+	737���H�h�I���I���z�K�G@of1+&#!"27654��&m.l9-��o�G@of6+%4'&"3!26���.��
��o��+��s�	"@of		+###s^B^��_�_B�_�_B����"@Gof
+"276764'&'&77�qa^8998^a�a^8998^aq��<��<�98^a�a^8998^a�a^89��<��<��J� ;@8EDopRXL  +67676=#5"&463121�-,MOaaOM,-��K%���ha_CDDC_ah�i��(����
,@)
Eo^RVJ+#53#53!KKKK�9B�_���K������@of+	&"27654��,.m�l�&m����
@of+	62"'&4m,.���l�&m.����&/8Ah@e
m
kp`	T	XL:910('>=9A:A540818,+'/(/#"&&
+"3264'&46;2>56'&'&"&4627"&4623"&462"&462�qa^8998^aq))Q>k?97^a��))8))m((8)'�))8((m))8)(�98^a�a^89)76)>k>eWU13�_)9()8)�)8))9()8)(9)�)8))8)����*-@*GooTXL"!+#3"'&'&5467'2767654'&"\\�C8 ,,IL�KI+,?8AD&(98^a�a^89(&��1kC.@BJXLI,,,,ILXK�,C;QT]qa^8998^aq]TQ��!d_<����m{��m{���R�j��\��������������������������������������������������������������������������������������������*V���(�v�>�V
n��:h�6�		Z	�
&
�b�
4
�
�B��Z��P����J���^��Bf��������p�$p����>r����B��,R� E\�z�s/p�55=DLT_
+g�	j�			-	=	M	c	
Vs	&�Copyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.comCopyright (C) 2017 by original authors @ fontello.commaterialRegularmaterialmaterialVersion 1.0materialGenerated by svg2ttf from Fontello project.http://fontello.com
\	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]homebackforwardupdiropendirreloadopenmkdirmkfilermtrashrestorecopycutpastegetfile	duplicaterenameedit	quicklookuploaddownloadinfoextractarchiveview	view-listhelpresizelinksearchsortrotate-rrotate-lnetmount
netunmountplaceschmodacceptmenucolwidth
fullscreenunfullscreenemptyundoredo
preferencemkdirin	selectall
selectnoneselectinvertlockpermsunlockedsymlink	resizablecloseplusreturnminushddsqldropboxgoogledriveonedriveboxhelp-circlemovesaveloadinginfo-circleprevnext
ql-fullscreenql-fullscreen-offclose-circlepincheckarrowthick-1-sarrowthick-1-n
caret-downcaret-upmenu-resizearrow-circletn-error
warning-alertcaret-right
caret-leftthemelogout��R�jR�j�, �UXEY  K�QK�SZX�4�(Y`f �UX�%a�cc#b!!�Y�C#D�C`B-�,� `f-�, d ��P�&Z�(
CEcER[X!#!�X �PPX!�@Y �8PX!�8YY �
CEcEad�(PX!�
CEcE �0PX!�0Y ��PX f ��a �
PX` � PX!�
` �6PX!�6``YYY�+YY#�PXeYY-�, E �%ad �CPX�#B�#B!!Y�`-�,#!#! d�bB �#B�
CEc�
C�`Ec�*! �C � ��+�0%�&QX`PaRYX#Y! �@SX�+!�@Y#�PXeY-�,�C+�C`B-�,�#B# �#Ba�bf�c�`�*-�,  E �Cc�b �PX�@`Yf�c`D�`-�,�CEB*!�C`B-�	,�C#D�C`B-�
,  E �+#�C�%` E�#a d � PX!��0PX� �@YY#�PXeY�%#aDD�`-�,  E �+#�C�%` E�#a d�$PX��@Y#�PXeY�%#aDD�`-�, �#B�
EX!#!Y*!-�
,�E�daD-�,�`  �CJ�PX �#BY�
CJ�RX �
#BY-�, �bf�c �c�#a�C` �` �#B#-�,KTX�dDY$�
e#x-�,KQXKSX�dDY!Y$�e#x-�,�CUX�C�aB�+Y�C�%B�%B�
%B�# �%PX�C`�%B�� �#a�*!#�a �#a�*!�C`�%B�%a�*!Y�CG�
CG`�b �PX�@`Yf�c �Cc�b �PX�@`Yf�c`�#D�C�>�C`B-�,�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�	+-�,�
+�ETX�#B E�#B�
#�`B `�a�BB�`�+�r+"Y-�,�+-� ,�+-�!,�+-�",�+-�#,�+-�$,�+-�%,�+-�&,�+-�',�+-�(,�	+-�), <�`-�*, `�` C#�`C�%a�`�)*!-�+,�*+�**-�,,  G  �Cc�b �PX�@`Yf�c`#a8# �UX G  �Cc�b �PX�@`Yf�c`#a8!Y-�-,�ETX��,*�0"Y-�.,�
+�ETX��,*�0"Y-�/, 5�`-�0,�Ec�b �PX�@`Yf�c�+�Cc�b �PX�@`Yf�c�+��D>#8�/*-�1, < G �Cc�b �PX�@`Yf�c`�Ca8-�2,.<-�3, < G �Cc�b �PX�@`Yf�c`�Ca�Cc8-�4,�% . G�#B�%I��G#G#a Xb!Y�#B�3*-�5,��%�%G#G#a�	C+e�.#  <�8-�6,��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# �C �#G#G#a#F`�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca#  �&#Fa8#�CF�%�CG#G#a` �C�b �PX�@`Yf�c`# �+#�C`�+�%a�%�b �PX�@`Yf�c�&a �%`d#�%`dPX!#!Y#  �&#Fa8Y-�7,�   �& .G#G#a#<8-�8,� �#B   F#G�+#a8-�9,��%�%G#G#a�TX. <#!�%�%G#G#a �%�%G#G#a�%�%I�%a�cc# Xb!Yc�b �PX�@`Yf�c`#.#  <�8#!Y-�:,� �C .G#G#a `� `f�b �PX�@`Yf�c#  <�8-�;,# .F�%FRX <Y.�++-�<,# .F�%FPX <Y.�++-�=,# .F�%FRX <Y# .F�%FPX <Y.�++-�>,�5+# .F�%FRX <Y.�++-�?,�6+�  <�#B�8# .F�%FRX <Y.�++�C.�++-�@,��%�& .G#G#a�	C+# < .#8�++-�A,�%B��%�% .G#G#a �#B�	C+ �`PX �@QX�  �&YBB# G�C�b �PX�@`Yf�c` �+ ��a �C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca�%Fa8# <#8!  F#G�+#a8!Y�++-�B,�5+.�++-�C,�6+!#  <�#B#8�++�C.�++-�D,� G�#B�.�1*-�E,� G�#B�.�1*-�F,��2*-�G,�4*-�H,�E# . F�#a8�++-�I,�#B�H+-�J,�A+-�K,�A+-�L,�A+-�M,�A+-�N,�B+-�O,�B+-�P,�B+-�Q,�B+-�R,�>+-�S,�>+-�T,�>+-�U,�>+-�V,�@+-�W,�@+-�X,�@+-�Y,�@+-�Z,�C+-�[,�C+-�\,�C+-�],�C+-�^,�?+-�_,�?+-�`,�?+-�a,�?+-�b,�7+.�++-�c,�7+�;+-�d,�7+�<+-�e,��7+�=+-�f,�8+.�++-�g,�8+�;+-�h,�8+�<+-�i,�8+�=+-�j,�9+.�++-�k,�9+�;+-�l,�9+�<+-�m,�9+�=+-�n,�:+.�++-�o,�:+�;+-�p,�:+�<+-�q,�:+�=+-�r,�	EX!#!YB+�e�$Px�0-K��RX��Y��cp�B�*�B�
*�B�*�B��	*�B�@	*�D�$�QX�@�X�dD�&�QX��@�cTX�DYYYY�*������Dlib/themes/gray/icons/material.svg000064400000062130147361034400013177 0ustar00<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="material" horiz-adv-x="1000" >
<font-face font-family="material" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe800;" d="M417-4v250h166v-250h209v333h125l-417 375-417-375h125v-333h209z" horiz-adv-x="1000" />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<glyph glyph-name="theme" unicode="&#xe859;" d="M500 767c-229 0-417-188-417-417s188-417 417-417c38 0 69 32 69 69 0 19-6 33-19 46-10 12-17 29-17 46 0 37 32 69 69 69h81c127 0 232 104 232 231 2 206-186 373-415 373z m-254-417c-38 0-69 31-69 69s31 69 69 69 69-32 69-69-32-69-69-69z m137 185c-37 0-68 32-68 69s31 69 68 69 69-31 69-69-29-69-69-69z m234 0c-38 0-69 32-69 69s31 69 69 69 68-31 68-69-31-69-68-69z m137-185c-37 0-69 31-69 69s32 69 69 69 69-32 69-69-29-69-69-69z" horiz-adv-x="1000" />

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


IHDRN�]tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:CF3BDB03213A11E8AF19815497758C5F" xmpMM:InstanceID="xmp.iid:CF3BDB02213A11E8AF19815497758C5F" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5680E6D4213911E8845F912C879712B3" stRef:documentID="xmp.did:5680E6D5213911E8845F912C879712B3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�� �IDATx��}	�Uř�Wu����n��YA�Pq����_5�a�kb�A3���L~�LF��k\��A&.�k�qY����,U��չ��m�i��<��O��{�����s�ԩ*�崛^8�
,�d/�jm�1�-RD�ܫN��+x �ߗ�� �T��nh�߽��
�wה��@�׃d6]�<t&3��3
��Sк#	�L�ѩ�|�8E�|��KLH�1��[�oY&�6�sx���Z�N�C�;o�L�Q��k �
�0x�80FegȠ,^�ZV.4T��8g�w��E9nw�EH<Ƞ��݁� n�JO�Ji)�<��<��=��3�,��݂Sq{ʀyE�eT,�݀P�q�@�`|+�����K��K�D���2���P
����Q5�q���/�X��QY(�
� ��V�71��e���T�
��l�Pq{������nֵw�{�`Q���sJ�WJ��-�?
�4��@h���<�3���̿���<���d2��8+���l�eH�њDèdN����A��.h����ϳG��urC��
VF)/�1�9iڌ��(� Sp�D3E�
�x=�)g�ׯ?X�E��3bE���ۓ>X՘��*Ɋ����6�51u�8�b��
[�`��T�,��rD�ݢx@�x�6
�g���+K���)�dS:�z�K��"�ȰD^i�Y��%�2:�ҴC&�\��2�%���*��+(Q��c��B��+��	�,W�
�VtK�T���oA�E�QmJ^�LP�m������KXP������Wt=��=E�S&"�A�(^`Za���WC.�;y��;��
u5��b�}��+n�2�'��*˔�Sҍ�4C�ئ�o=�&L��~�i
�4��@|�l��~�ڑ�3Xc!�^��~�G�)Z�,ZUWm�}�#y�)d������\�������G�%��9܏ײ�6��v8,R@Z�{�/��w|��,���+C�6geri�&X(Q<�����]���4��RkAm�	����!	��.�sTw�0�81�����~�����S)�(�.9iD#1��z��t����Zb	��X��5�m�h��--q�p,X�������e�䩥Åm[���l^:�,D��+�f��{��>��
���t��v��=	��ˎA�U�)A�;0o��U�L-�Dk�4��[��e�����\�'�^W�^ȧ���ܯ�9|�0����n�G� \�[�C���Q�[��?��	�`�g0B$�*�g��ט:�����+�h�9�ίkq��fvJ!T]V(VU�'���į����
 m�
�4��@h���<���QH ���PAo���LUL��k�mjj��f�P�xH&饳�����@�i��٦
��Ϳ綛M��lvºu�T��4_���1LX�`A̴m[�|����E�1�nʽ2&�L�&擗�ګ�C�N���8����Y���l�T��f�,�<0(���2 �r\���2PY@�}�DJ�f*�R_�Y���YP�uuu�ЃQ�r!aM�'�D�_�Q{�,ԅ�4����XJ7���0dn�����G��3$3؃��~����t���q.��qL�E�/�
��ߥ//�Æ�.�c�~=��_�tl��<Qb�L�l�3Bu�8<��a�:s�Z�/kf�1^'A,R.�	G�q$圱��=y"����A���\�0�槞�Df�z���28-l���L��C���P����4��,0�z�4b��Ξ��J��O��r����tt(�x�Zv�y��H)����;�o�S+�s����K�dʟ���i,� ��P-�/��!-i�f��d��""}�G^�µ*�.��|�����H'T<W��!���
�J�㾐�?#���*������ﻶe���]㸩�ek{������(�+�s�ki��X_-�����{%���ki��<����U<FZ/��'⅖�PU�����f��#����+����|�#���֣1�}ⱡ��Zƺ���_�'�z5�)9psC�wp��&����r���B�@h
��gjL���u���j
����q׾|���/7��2T'0}^ЏŢ���/��U!�pУdD�3�~-glM��G�� �F�D�A����E��"��;0�L�!� �E�5����-=tTLJ�v�1���%%䑂���q<�AQdk���=%���Ax'��:|u҉@��-����j#�c)�2���l����º��!Q]Ϥ�dr+kl���fh�����/�c���)�ZydӃ!�3!�m�s�!^�Xb�8�hUUP]��������apXK��DB�<�����m�C!�F��ޡ:Q��	h��AK4��
q�TpU+���6RM@>���d<�C&+ag��PB�������M˂�o��^\B��
d˚&M���O7�u$8��\?P4��@h
�>W���s�niP�'�?8َ�q7�/�Y�\�/�vgCS�Y��jg���g�����]���>�vt�j��$�M��SL��[[_{�
�o��Q�����^r���Rv��C}}����
k;��ҡ9�LN;��#
�>�?x��L�|��-�݄e<�*_�P�mh�y.�`��03 ��d˽��L0L>�1vn�*>��.-#��S��>+T����<���.K%�gؑ�[���H���v���w��-�7[��� ��Ϻ
=.��������H�V��ø�
ty�����&�I&;?�>4��Zރ����Ezՙ�c��Xj�dWEW/���ij���f���������V(F%|g�ASs��v,~�e�Cyd�d-g�}���g�q�~�N��	c7
�CyX�M��h�ʃL���ع}[,�2��Ž֭���E����3�Ɏ�-y��a%�p�W��?��@h
�4��*�Uw���+�=Y���%>|��O?=���?�w��ޣ�R��,��/��Q�60�j<�o%���Q��d��1��}݃.�A?�tw�2.�,��?��x�!��� C�u!��ªUa��j�3��W�6~�9�?�M;����}�T'�y��@T���O=�u�0|��-�����	h�2aLc��!��+�q{{p��c��a(`��d�>`Z˂���V��`<���þ��oO�/+�jٶ�_�fM��*��-wTȚ���_<��8_0�κj��̡v%���k��f\]<|I�}������]�!bQ��Tŕ�0�q{�q�t������� �U�>+T(4,\���?�� *�\�G	����Rжe'tn-��N}h���h^x�4�C�d�΍�����PU����k�]�kVz��h��*4�(n��Ʀj��m�eB+��d���qc���&a8x������#Ћ^���E/z��-��zB��	]V�Y����!����{7���a�ż�J$�'{5�Kk[�����[y��<O@8�t:�2�.ǍS��R����IT%>{B��S�#$�&/��m[�eb��5��	](�&t�w��BF6	���R>l8��T��M�	]Js���e��|y
|���;3(`�:�3�8�.Ӯ��,uk�e0|�0U=�H0��ꍟB��}K��6p��F�q.������'t9`�(���A��zؠ�rm�`pg=���@h
����>��
��Zt�P?��&����Ϝ1�����A��O�cpp��v9�3..����.�����V���|v��]mP��(RZ��sw+:���c{4����fX~�D�vՏ��	#`����"(ω��Y�‡���q����
�S�58�(c��Xpք#`�ݿ���τ�ȃ�q����s�~�r�Il�q0�ʫ�z�qj���w?#Ξ��b%ѡ�c��<Fv�PO��_��矁�%/B��!�ىY*����uI5�dAmZOL;�̏}�ٙ��rz��Y$��<ކW�ljSJ��δn8cf��9+g�T���o�w5nc���u��W��,:*�~�H��#)��,�e�Q):�f������,8�UtT
�}���4��@h�/�by�ӏ��㗯�8?nqؙ�3���]�@�S,�P�_v��?�}���Pw�Q�r�CP��1yґ,���(���m�y8.,7������#`�=W@���í�q��������+Zl4�	UN������MS
���0�ND��O���Hj9
Z�\>�;l[�)��f
c��6��Il�:�}��d��?Fy�8�ˠK8p�w�a��z�yj=l�ʕl*�I8�鴟<��@6����)�^�K`!|�W�ߛo�_�w�"�%�SR,�u��DBK�#u�� ��A
a쑣`f�l�����X��$f� UٝX�# ^�z]����j�${�(���:�YÚ뇹‡Y.wȱ���*xe�Яb9��O.F���]ןsY�ZJ�#{J�ЊE?T5��@��(�@1�;o_$��Xҙt��ٞ�.&��eR�����2+��㕺�D�+������/94�<���{�'�ݾ�x���<�D�FN6Br8���d�֟��U��K�M5?��M�
O��y�q�=<9��[�ٽ��!���`�\Ͻ��;�\M��0Ζ�2�1/�����R�$Y���~�'��Wcj�A���M��sL��)�uD�>�i��)�o�\?,���m[/�L��[��@[�r$��&�ɗ�Y�_8�@t�R����k.s����;�
�W pz0�zS�Ƭ������O����X�ܰ�?����,�i�W��X�d�m�y�9��i)�ɘ��P��1G�����i����D˻קּ|�_�|�ߣ���~�pܮC9G����C�עw�s<G�֝�פ
�/?�%K����mۿ�0'�L+�_��|)�@�k
;���>H��K�IGO�m٦���n~��w.ʃ��o	�]$�8�`�)��1n#����2 �v*�<}�ɇ�ɗf��S����^�y
&yWS����&�q6c�����B���b��_���+�P�p)��&3^U�l�e�`s&��"�
���Z��m[�&X���/㍙TnɓϾ�J8zKr�;T��D���wl�s_r<�	1��nU����ޯ�k��O��p��5�_=��F�`�'�=�͛n3�j�[����$��@�������9�dǡ����u!�B�<��r�0��R��7OR�jҏu
�� ��g<�Qh
�>��j��1c>�br8hO�]��y�w�*�)�;{�u'1y�g�l>�q�=�޶~�&�t��ƅ+�r�a�wf/��}d៟[�vÓ����r��m�۞��!� �����7��Td��ru1S�3�a�8�\��Zs%�~1M�(�:x{?pͪ)�+8�P���lk����(��m:F��l9��F#R?�|:
z�	8�裡��ZڦctN��f�̗�P(�>z9�7&N�Tv��7�[��
:T����Pp�Q�ˡ�o��*,�]�P(R�m:F�(��@k�
�8&u'jlh���x�!�s�
�M��š�"�3�t)���e�n�fB��j�T���M����F���'�ϛ��ӧ~�fm�eA��mC����m�I��%�s7J�����_<��8����3�:1��ȣK�f{�|(�Ҳ3͋��͕ᅧ���#�CUh
�4��_`�r���{��o}�B����V,Z�hŢ4��@h
�%��<Z�hɣ%��@h
���ЂC-8���U
�4��@hŢ�V,Z�hŢ4��@h
��<�M�L�����jo��p�W7�\s�5�655M�}OM�y.�!��I��$�D�h W�������v��~)��uȅ)r0����@�&,X� fڶ-n��4h�r-��]G��eP�u!�Gn�M�V�ˀ��>#�o�/^����u2(�d2�!�Կ
�-0-��TPY�/����N�
����R�v��T*��7�pC¸��#�[���Y��g���+W�y�&L@�J�^$0��	��@��ܹs!�+��̙�غ�ʐJ�T�/k��A��H$�\�<�؅0�F��dĹ�D7�2���q���Ñ��aO�JCD��&T${��ٶ��h/C΍�/�T*e�P��`� ��TY!W�R��%�KC]]]���,LuԾ�H��z�O$
�4��@h�]XZ��)�~��X�!G�E���6��Ƣ�X4��@h��	@ܯG��f��.�ItY@���"�y�;��	o{�-X��ݫ(�8Ƒ�"�u)��j�0��P�l~i� ����c�y��@4N#'�.F_���"5R'@�
Y�����7��%����DiB��T���2�����yd�4�_�6'w�Wܙ����,�aYt�
3"Y0�:+�C�R 5���Qj�P���d�m'�`}k���0�1��i�A�z�i��esގ\��>G�l�֍�DX��
(m�>S>fC��ֳ����p�f�tC[Me�>�H��|�H���D�uG������=�(FF j:���1�1�N!�۾�~��{y�d��m��ʔ�~�"{*��,�XT�����
&/�E�Q�� ��]/�O�v_DwB��"�c����J��&7a"!���-,�c0p��G�����j�B+�B�D,M'繇������%,KR%4y�-��/��=�s�r�ŭ��a~?�˶�ŋ�.��T�l��D��RU���ӹ�n*�9��Vd0�;�u}ے`n"<S���
.�4�f�`��������+�[��vI�~^zq�aL�	�,JJ��n�����u��TG�|L*?o�U�Sق���E|N�L��#u!j
�4�(�/T��~,��E���6�P�@h�/�~���L��W���6�إ�A����Š�ӛo���:k�.��@�񦠗ѯ�����L� s�R��B,7�����s&�]<�c�5�f�ꖢ)��Q3@,�a;^��m�i�3n)����n��^TO��3�C��A�)��Z��z�&a���6��ԙ�V�H�.��6u��`g�c�H���`O_��|�3���+R�j7��ʾ��,L)%}K����1������	�w5���j�`�J�8K
6�>��m)){���Jca�Դ�� d�s�B�
�q���U�S���T��}_>�똋��5�}���я �Fׄ�0w� ſ6�DzE
���,�t	����vH��r7�}�H�x��	B���r����`V2�Ҙɨ���mB��Y�EB5eɁ=P�@�c�𾺰��%�%Wr0���S���3�F��T��kϿF7���!��#h���
�@����!i!�T�?[n:,&O=�	�A�2������x�p�������Z���@h
��bъE+�X�b�@h
�4�V,Z�h�V,Z�h
�4��@+�X�bъE+�T�_�?�S8O��@|�����0�Ld%C2�%{	�]������W�4/W��d&=�[����{e��U�#uY����9'b�I��x�R�<$f���.{�Ő�d��:o歋�,��e糣h���jˀ*\G
h_8Wu�n�삇,��F���0�J����o���m�� 8� ;����}�c`��kG
<^�*����q�cG"`���1W
*�:�c��`�T?E��2��P��Yư	j;_<�`�Z��@�5��&��~�tV����q;���9J�4K:�C!���U$��)��ȥS��)���^[
G��.UBCyB��3��� ��Ĵ����ş\LpAU��O(42��@܆W�l!'Q4��n�p�L�6:�@���|���}W�6y�]ם}e�q�ӫ@�J$')h���J!ä��ˠ,��)�k�A0<Sq�*E�n�(�
���b\7*n�B��I��s�n�`d��m*n��g,�9�f]{��{���\���_$��'��O�/хd&IEND�B`�lib/themes/light/images/close-hover.png000064400000000527147361034400014115 0ustar00�PNG


IHDR->`�7bKGD�������	pHYs���o�dtIME�
,R�8tEXtCommentCreated with GIMPW��IDATX��ׯB!��[(l�
��O`�Ql&��@'�(6O����{��a��|�?�7v8��ݽ0X60�f4���ߢR�0��/��J�/t���"\
�,�d�}���_��<_ֵn�%�2���K��a��I�p�ƻC�.]��\�*�f�����}�����#�C?h~{0�ьf4��G���T���vIEND�B`�lib/themes/light/images/ui-icons_default_theme256x240.png000064400000104645147361034400017164 0ustar00�PNG


IHDR��tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:75795EA0278611E8BE05E10E039C07E6" xmpMM:DocumentID="xmp.did:75795EA1278611E8BE05E10E039C07E6"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:75795E9E278611E8BE05E10E039C07E6" stRef:documentID="xmp.did:75795E9F278611E8BE05E10E039C07E6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�I$
�IDATx��}�m�u�w��mUױ�8�L+���N䴵������%]@���$��@JpY�KR,����K�R���y�I;R- ~�m�P��2)�I�~HT(���?�V8�����\���s�Ϛ���{>��{��c����z�¿����O�s/��^���x���^��'����k�98w�9{�}�{�Z��}Y��B���������n|�����X�s�۩�q�q�|�q�/�o\���k�����z��=�zi<����q�s�u�(?�9����5ݓ��x�~���4�����wwNո�u�����c�?��������9����'���Z7���YG��g�y�0^�-O=�|��Ku2����<��{����ɓL�u��~S���/?��:�|�<�tb�����d�n|cZ�t?��k��7�?~?���a��<G�~���H�1����㔯3�_^<:w��t��k�s+�梞���%]C�1���c���׼�v6W�Y��I��d�I�'/�]tS��<�5Յ�o~4���`j�����9��䌙~�x<G�g�����.j2�y�^�c~��K'av�=̓��5]k?��|��~:�9�5�bQ���&��>=�%]غ0�Z��׹����7����Ɯ�k��E��9������7S'>}�X�5�{��:&�,����"\�#h2.j�q����r�p6��'|�
7��vo0P�;�Kލ��I�م�k���8�{}���׼��J�:��l\��{6xϓ����s2�R���ӆ������Q�C�B�z8Ψ'��'��tM�Q蒍�zX�e��Uy�`,@uC�D����:��:��ˋ)�>�s���ݔv��¡��m�w������Zӝ�'���}����G]Y5��ꮑ�'O^5���K�;��O�w.�yG�ΌU���ɰ����\h:�Bh��]��k2�y�慚��rj(u)�U�y�:�;s�������������<�?��#�	�u�%�(��'��Q�1��z66:�iQ�c���	�s<\�SM�P"���9�XQ�	�7�m;�t�j4ӹ�p������)%����}�9�b��$>��<!7UwW
'�5ڌ�����Ԑ�^�[%�;h(����j����>���2`��p97�[���J�nʂ����na|DZKp�����/�n�Z[M(��o��}�	�;	
.���q��T��L���'Sc�KF���yјQw�~�0�G��
#4FO��q��9e�r�2�3���#����"�d:���1�FC��BX�@V�I�Mz����<�<G�8�|�\bɹ��@Im��~V-�Z���8��;�����	տ_�McF���<}v�����5:�F������sK9������v�A���!�X����hl�}�s^��Tگ��S�kѲűn�}R�BK��<չOU*W"�<��LG9���H�%�c�6<�C;넢��6�EIVwq�~]|ƭ�N:�48U�]��J)n��g��_(�5;�L��x�	e�i�O׻P^���p�G�s2rAt4y�:��숛��kw��xu�Q��D)�p.��p�[TO�6$�I�{A^O~�hz������t P� P�^���J�bq�:�9*+K��s�(��0U��r��R�V�kq;���)��Y*A�����of:Gfq���GC�r�SR)��mW:v`"Z_UU��j�PJ9�:Tn�&$�DMF��ɭ��X5E�@��3Pev�\�Cw�
=�l��%��h:�봀轴*L���$�r����uO�(�k��5�t�՛��������� �=�ݧ�p.���B[Q^��߹F�j��D�b41��."sh���Ȋ��R�\�U�fұr	H�&B�҄��W�Q�+�Ri���
�R0��1h2-��Ȧ�G�H� �o]5Ey:T~T�?�;�wC ������䐀��sݕ���B;-��TjR��05ޢ�8�u�.��G=�Np]yi���ʴt�UhC�r��Ap�~�dw��X
�+q����4�<��Y-M�X�–�p6g�Z=�i�8�ÕjhR���U�%�ȥ���\"�x3@J�����}�ʛjxvJ$��bB	^B�U�,���H�D�q�<��A#�,+��F�i��`J*8� ���ĵ!���XM^�9¡�$�m��|��t�jɣ:>�������O1�c�Qv�e�+��BQ+$�~l�Y��	1F�M�w�����*Bh��nD.����t�
m\,^%Bu�v�,ڐ4�ׯ�KZkT ,�@nP>�*�����B#�����`T>4cN��p���x�\j2J����T�x���v=7.	K�!0�y�� ��K.S��=U�B�QxH@�
���.9Ia�3.��^����{��jȄ��	DI �t�lk5�tnt��y��%I���N܎[a�]H�v:*��s��rYng��&c��\���A��������q�0�\mgt�ktb�V�A�j�9}�K��s�f]x�l�c*��KRR�r�u�;k�.��"gh�ݕ�*�ۑuAi≒�U8DT`z݁IhA+�&e�0�{�q��N�:J�{^P�wbv���d.%�ɣv�$�I���Ԩ`G<�H$Tu�#ڑi����J��Tr�|H�xw�\�W�^���W�]���ٯ%�"!�4\p9J0I��(8G��vn��݌\[J��2/\*o�<$�3Q��qIb�;���5W�s�����d��vY���qr�rD�j�>3\�.@��W�Te��w���	N���c"��I��+�n˥�1t
h�T�`c����R8"��
�^q�B�p
&�
1��x'[&d'��"$�Qh���>�]���8�D��]S+)TN��6K��Q��[=[�|U���Y=�~8ğn��`
���[^w�Q�\y�\��c�5�d�+��s R�.I�l'r>�*�2�0��3�	\ȣ�� Ii�nI�4sC�ɉu�iww���cA\i�:���	�ܮB�	A�R��i��l���+}G�Vo�I�i��sn��Wo�e�ՠ;�B理�NW��|h}:l�`,���(�6d�E�Xnp�Ϟ�.)����_ܦ�1� y����e�]�E�n����'�ˁCP��~MF��gg�=�|�LZ?�0��l���0G��:�6m k:�%{c��Oq���D��j�y�<)�8���f���l,��S;�	A�]IxG 
≊S�k'�䪒G��i�
��W����9�z��RR	�B7�Pb��Kc5����[Y3��wt\ի)B;]��:�T$�!����P�b�;ܫc
�A"��{RW�"ː��r3T2�{N�vT�8 .L!�D��deUBNdٗ�i���.C"�R�uZf�p�)iV��$vL=�Ų&�����b�Ӡ3�VI%
�(.OȢ%�D?
��z㍠�VGA�d$䚎u,�ݱ��N�/��t�4Fg�Ą^�*=��#��	h��x�h�bT%�](�<�z�n�a_�6��7"	V���x&��d�
i�����N.|����;���s�X�x��0I�$�B�{��O�'��ܧ��D��!�1�^��- �(��h��qs\�3���Q�9nU �}�2�`G��QB��K搃�	R㇪��v@B쑫DW��jL����+
���KT�@�̤8�ʯ����]�^=��Z�MV
m�F5��`��Ned+�k���
��@g��:0
��!:�t"�(lsG��;�&��Dw��r.��ʴNπ�o�W�Yv*�:PN���k�,�ƼJ��8�r�q�Z�!���Q�ܑ��/P��+=}-�ѹPLO�-Ǚ�܎3|����$ιU@e)g�%W���"��&_HR�J.��)�|��@�r5	���3;�k�E���ES��v?�n #�7hy+��v�j��񭾟�&,�Da�ޏ��zk��M����Y��=@�~LjV^^7���sV���w��D;�#��B��Ν��N~�Fq>�j�0б��;�*;9R�
�ͮvJ���Չ���!��L	�r�� ��>e=e�*��Dn�Q����I!��+P"���#�m􇄫w	0�ew�
��g=\��\Y�઒��X�����c�R��@�&Va�!qވC�9�
R�u�*�C�r�*����2��I'U�'׾K=��'%��Ʌ'2��DL�t( J=�}C 4�0�RY�ִcTBNF�"Q3Ru����	�0��~.�AyZ��!-Z�C��͒!r���>T����.G��\�%Jι
�ʄ�<��(*�~u��O��(QH���r�M+	VՅ�N�h�[���.wPY4$�Y�#W�,<����!A�gm�aFcW�����7f��k�-fbU�>�%�Z9hR���eD���!z5�vD�S��J2LC��D�[���)���g:�$M₵��>�k���:�H�t��諮˫�e�>� �D� ��!��8�3��]T�f.A�:��e���v��eP��ƚ���J�Wl�m�Qt��}0':fͧ�P�tn��p�ʬU����A����x��E�w��t��}vBg�ԭ�0�jFA�S.NL]��ʝv�"؈bmr�g�w�ݚ�Q�x\!�Yf�X*wV�Z���O�u���W�e@���Y%�l?��i��N�*cM��|n9TX�/�U
�ʫ�s%L}]�?+s�u�!�S�wh�ZR�JR|�Z풘N��ya�/�-]eݨtB�K�/�px�k���9Ʃ�ͫ�!I�Fǫl��%`�g��f����&A�Jˎ�[��l,�e��]����t���G�.Fz�G�\�n�b����R|��RcR���&�:�
?�ʸРr!a���g6���j�E�w�PÒY�1����DYV�����p,��p��dN�~��L}htkX�5,�h�񍉍�L�u�g�n��d�!���E��Υ�D"�
і����@��.Av�ޭ�K���
d���?���G�
@�O	!�<:w�0�>��
�*F|��P�éR�+��k��URc�@�4�͍]�Z�����i]\���^��}�����*�J[��Vw��%��u�>��=@7~ɼtJ����>
*�76Y��	P�#�ڶ�PV��K�B\�ݹ)#N�4QK���{�s�=Nj�a�əlݠ$'o`���������t
��{/��r9j̞ט�T�p�0c-�����9Fa��C�j�8�lkE�q'	�|�Kج���kq�F�ɗ1y*0�Y��������q��y�V��J�=����p	K1��A;��;ٹ���8,����)H̿8��=:>C
�'j	bi'^�+����X�c-dO�)V|�3�;��){�2�$�l@g��솺��)���Lh:�"���/�x)��Nf��#>�ƒ�����˙��`��%ߗ���D؇Q���a��!#�u�S8��HP¶5�[�t�Ǭ���0UiM�=����#��3�����ڍ���Z{�hA9bN����p���<�+��[�K�S\͓(v�Ew"5�E�%�ⵥ"�A��9��j�H�x!���x��^���H��ECª�p�?9{�$$J�JL���Beg��-|����ѕ^	��#gҵ.r^�Ӆ�lJ</L��/�2/��-*|�yP���U��Ӻ�Ԭu�+!V]s�%e�.ԇ���'�k�EO"�7#O��ӎ]���%����S�!��bV��ļ������2Z܋�A�]�nZ+zO]'��
yPΫ�Z�[ ����B��Ȯ��Rd�����?sK)��k“;(���;��e�鼜��,��^����P��y�=�U�8��d���"�*�8So�R>�P����Z�kIG�w
L\�f��\��!��&����
S �
8�HP���x;�n\�U�{��;Ghp�0�vR2��y'-~Z@3�]�S��9ya��"�"Đ����:j�l�]��js�{F���N�\�G@����j�W���h�9�k���}�ؗ�ٮ;���� �	��vS�IQzj��5u9���5)o@�݁�^i�wh9���F�L]�4v(ӱwX|
Eءb)lVG-�u�t���H3s�L���f�kuC]�4�\ؙ�å���XU���D�$���k�;����S����6�*�.�4��0I@�gS[,�MH� �w��A�n%�HC�S	Ws*�c  �;f������d�����r�溰(@�
P�@���1�tCb�<$|}��	��3%f5D��’S5�L�U��n�#!��Uh暝Rb��i��pL�p᠎�=�S1#)�vc���qe-j�0k,1�Ehr���O֛�Q3H�jރEN(�ˊ0J涒s�{u1�ށ���w
�\r�L$A<Zq^�V��E�.4%u	�M��Ur��
��X�>��K�a���yL�wq����tY^gQ��p=�41Eq6�M5��*Ų�
�'��\4��f��N+ �=P6�0��$[]�Z�W	/�QI����θ:Wݕ#�Kp�}���	���AHb�F��4��<fـ�&<�$;r�]�@�0Gwu����s!ɕ�2�1-�K��ʦk�*Ul@�.�=�n�:��W���і�ߦ;tP��=.I*e�ͿL�%,�u��)C+�؃�		m�G�
n��/��%]��[P��rz
t�l ���m���p�3/�X���D�g���ZC�W�iqgW��;7�h����E�E�y/�PK��Ę.z�\^p+���1��9�NbS@o��/=�8P��ɐe��h8��A+T��Lsi���b��o����X�޵3%�M[�L�#�S��fՍ|�9��XG����B�{n�������,��I5kL�M!2� ZNc�!Y�܏�.x�O%A]䮫.AAe���p��4�GYCA�z.�Fib.N&�y��k�}����)����*x�H��Q�.�!��Q�YO�wUo�����M���H�)��jl��������6TkL7�4���.�}�5�d����F�D��j�q�S�ӹ��Vf�-�A�ś��50��窓1��,��Q��BT�������A�K�Npc�.Iv�5��o_ʬD��i̫vܖx��,�K�ʫ�n�ڧy��{4��͘n�5����v�2/I��6uYσ���s.!����3��_�g�5�)�.��igY�y��,�f�)��f%��5���$��X���$G�$�a��D�����59���f-�q��ޮJ	IB�ʮ:6�%���s;o��N��9Q��3~�BUW_˭�g;�����7I�U*ӶH5`-�P2M������qc@Y(�7:�	�F�r�j����S����!,A�Y
���X�n,���c��u�Ѩj0s�����>|�j�q�t���8<�hM�v�%SYG�q'�*9�%��� n��� ���2��@̭�gI^	������{�w�,�=��q�K�;,@8gZ�ZR��s���C;)0%�%�/"Mu\_�ز���%��e?���h�r��j���'f	^�v!v>�����o���X���Vב�RTk�N�:�=�]}3�
���SJ��;��ɫ� �Lӕ�\�\Ϲ_U�h3K�~:�=\�Rq
iy��N�ԕ��&���t����.���,-�>(ژB1�bW���Ք���I���
�N��TT' ���N��Z���^�p�?ݕM��y��c"{9�F=�tHՠ��N�?v�4!Jp�\J�͍М��㔱(�fs�i�.d�`�mC�\�t,W(g%���S�I^s�5S"Ĭ��û+_y��	sRɬ�p=�i�e�0%��'�I7ʼn�T���+��ʎUc�x�&�?��y*����o�L�U^�K5��}�v�Yދ�K�SB��/Ԣ��U�tZ���>�������aӉT��*m:W�S_sU�xD��	�#�kz��(V�`��]�a��H�CW����A����#F9鴪7A��@i+,=~N~Q�mE�)�ع�F���T�&CF��T	S*�V��g��n	=D$�*we����:�Z�w�~�I�Q8�ƪI�y�n�3*��u�o�}v�^�hub���ʶ�g]���M��V�4NC]s)1X�t����:��t�	�By��8t@����]�qh �j���X*��^z�D�c����@D��f�U�0�ӁK�X��F��#��z�n̉����'2L�:�PUZ���60�4*I�6J�U=+\XE",4_�x����n���Ɏ|D�I<Ӥ�6ִ����5����x�d����˫��%�ï�:���#�I�!2����ssF��d�U;�]�s�Tܵ!�������T��c�LE^�z�N�r�PV�Z7��.w��GXw���K�ɍ���v	8g��1!6�k�X�v�Ϻ��&�3�7�v����]��D\ρ��8�@��yy�!H	�9/��PN�$�*X��	�G�I!u|g'bQ�'(9�_��W�����k{�]5�� �����q�T�x�X�\�$�i��5�d�,�wYxZ\�.L�<.EMD�,?g`>:@����]5�Ek��
>���>�5븝�Y_�۝Gd�~�;�N
(�:�9R[q��ʛTs��zN����
�ЂN.�鐅��W-vW���(�:@��Jӯ2XT��9E�Uy�5$u�wV�<�j�
 n�`B�d�]��Կ�R?�#R�@�Ѯ��O���n6��[N%�t�$�	�P�$OjK��#hף�Rvtf�<#����Bqj�Z�����dDH� �pW��„ɝA4v9�k��%n]����L�!5U��y,jL�{!��0�TѶ�}���S���40'qB��5O'{�
���VM�a�:�y`�u�����ϭ1��J��5�b)A��4tB��F&m͍&\
HV���{#��5�D��
(�mqfB,�o���$�2K�gۤ��\�+��aRh�2��d�J�޸�i
��?1�2��-]Mf|!"n��z�q`�-Bv�3tf�L�A���%��j���^�S��d��ܠrV]��|���BMI ,�1��-5Pʷ�Ԙ3CrWm��X����k���ƾ@��L��}�i�0��� u�GW�%�,��Oipc	H��Dd�Y��Kn���Hu@�PԼ�v�쑫s���klJ��d�RGG�p���t�+��1q+n%���n4m�W¦�
�I�-䂛NG�d��c}�k?�r�?$��.��Ln4��
5��N#�rGԥʉrP�������$ڀ����@�\&e�Gjս�0�x���ٔ�L�e�">N*D�..�Dc�J��:��<ǒ<�-+q�i�D��r[�U@�E�h���l*M�jb+P'n�2<��7\CeS��/�~��Pk(�$!�%��I��qU�u^r}7��c�Â���jG  M��,
�o�ARxQ�c���Q[��AnEh�+VAn�*F�L{n��*o{�;|%���@1�#��z�{��l�}����^��5�n���If���jL�&����*�:�#��cs�g�����^����{��|�HB����T�˾1 ���r�ȵo�l��{w�SGqd|�tp�s�ڏ�3)�}u�cw3�9�fq�Y�s�u�0��c�ž��*$˭���XF��H*��՚�PfZf;�f�!�Z���ݘ���U��O�*iJ��KҔXL��6���q})�M�	ź^��I ��j,HwG�KN�@�˕u�↝��$�\h@;j�A[=����<�c�J�V���I���/��@X��@DM�F�f��|��pT"9�]W��c缁�i ��q�gs��m�!��L� ܘ$�"c�8^y��
�L2sZ��A��Ծ�0r���̓\p��,�3.�w,A���2�Up�g0Y�s��N���ϴ*�	wR�x��s��uZk�\�k�h���t�Q׍�e�kv�����莫�v2��|�}v"&�}�c�Q�C��V��	����|�8��Y��G�m�D�z�Q�r3�(�`D����u��Ō�����.5�����P�3R��g��
�Dݽ�F�,u
n*��>PhJ$j��
6OF�`��"x暣fR�&�C�9��C���C�['�IpT96���nu\���d���I�*1�e�Ve���C���V�;Tc�:;��D�
�8��$� ��
]ULC�J�B�zN��jZ�F$`�{Ρͪ�\��봓^ݕ�\m�����8$N@Յם�kz�"�����1�pE�
�༎r���N��8��G��˵u'ҙ�8e*��#cQқt��J@��F�qg%�S�:%�ܤ����R*(A]W�2�����SMV�9��ȝ$~�ʣQy�5%��R��	\�X���B��Z�u�[ ����Ȱ�%�=_х�
@D"�͙\w�nTy������0��k�C���.���I��� <v���8����Uw�CW�C�~t�mU\�\.,��^jp͔bn�u1'�u�|�9��֬�<�Б�Gc�2�Ҵ���-�zޠBm

����;�&p�N[���z
Y�Y��}8��#!ϥ2��w;�m����	!�H�d�_QnIO��3e�i�W�D%�F�T�q'�I<'��c�{_9'�J��>�3Wf�{r�՘P.���9�@��u�9'g�n���4�I6squT��3��yCF�QgX�����M�f))�n��K�U����P�
�,U5�u
BN�yֱ�R?R�a�lu�?jr�Ƃ8$:.�j��z(��
[q$H���:7��M�/ޚ�`Z�V�TN,c��V�/�43�R[rl�Mj���
��D`�D#^�?����!G�]��N��@�K9���C)�OƖ�ܕ��{d�g`5m缕�����)W�<8g�h��*�x���j���.4`�Y�n�F��ve%u���j�>y��yV�
��p�~ 絪��������)�<�dK���GUCJ����)L�ʲ�Րa&Ґ�sh�L-�i�(�^K��I9
���E��P�������(��E@rj	�����C.�+K;����晆�q����	���(�h�hÌ�}����8���IF{��K�
�9�j���ѐ�t�*����������>Ye� �Z(7�<=E��
@��\
�ʒ��r4N����Q%]}G�vNʹ8����P�ب�J�+�;p��S<w|�&Q�ӎ�y�I?8�5�uY
17��{��	���$5z��&��u9_�h?7�$I1���b�:k�.;HV��$��|Ps��3\�(@��#e_ݍ�0���t	�P����y�,$ؠvyh�5_!*�kO�D0vMFҵ�x9X�kS_)Y��"O�%�
��ך��;4S�u����d�t��17�����]p!���k���lP���Kv|�x��J�&��"Ո���Ά�[��ʾ��c�Iɩ|�J�;��Ș��4�F�k�U���+�vv��s��vu�D����Afk˵�;�]h9��+'�1Cn�[� ���=�yIo�k�r$�W�,�=�0%����|M�kM�Վ0D�Vٽ�J�����iѬ2�M�^�U������u��YT1��������C
Ģ][�*ԭ�i�SN�<�5#��3Yt�(��ge��K��sG[��臐D_�.�,Y�����\S
��"��N���F�F]@��ų�W�Of��d�;wB����\+�9�L��@)�z{
���Q�I�2󚫠���M����"�c�:��]���m��5[ЉPGױ`��.|� ̺�oC�b՜5}�]?ɑ���*~�1g��3��5<�&����7dŶ;��4e�]���8�04�*!�B����4����N~�}�x��H�䄹'ػ+�BEh'�5��T� �<�x/Ukp��&cwf,L콍W����ȵ�i���C,4�6{��$�nv�G�?e�g\���9k{�F5V�))%��M\�8��H=U�;�ו����e;�=7�{H���Z�eJ��;��[tԮ��*4\�"�&�+��jVm!C��g�f����d@*)8R�pU��_drn�s=	\��(3�P��x�b,<��<��}�A.G�
u���,A�N5Ġ~qN��*MV@R�!fǷw!�����j�(��p�z2(�`�c7��)|[�/�措4;9�S2�'e5�{�� �������|RY`@h-��q�E��8�� I4��:�'��9����nD��,c��qD:"�<ǧp��
�_�/��k��#$7��i�>�m�&D�a͵�J@�>g3��24�"�cҠ9$=_)ڸI��j���]�a\��W��3 .�N�<Ű��q��ؒҲ&���tsB��t`"�c��У�U�
$�@�#:9�� ��9��U��j�Uf�Wv	5�ј��<ڍ�;�/�{p`��B���VMU�d����ȅ�+���D�j�QI�9�����/�3�^z�k�z�UM5t�PpB%�ش:�I��T��t��3��!ĕ-h��5�����(!�a����i3e`���8U�v(	D��<-�Pi�bCZhNɇ0���"����ʵ:�>�|Dr����IB���z/-f
]��%U�6�B�E�&=:�Cgً
v���s%]<�r�8��.����#STZvt�N�׹jʣ���_�j�\H�}�i-:�G|"�*uv�D;�׀�;m8��*D(���Qn�*Λ�0��	+�A�s�r@�\i�{.I�)�r.N���XsV��,���ZjUر��u&۵��t� %L��Z���Qw4m,A�?�f��A\zM{����c]�����J�|��\(��ו"����\8�c��Y�=��XB��Z�ĹC��q�߃|5�g�s���S��@up�1� �3��	�Ρ�?"���!���їp�Kb(ޭ���.��$��Eo��~؟���Nw��~��䕑f���ؕj�i�i?ϴ��=�T�i���B��8"�Ի�~��v̻)�'�r��5��ϭΫ0y�[3��M����[�y�V
y�j"��p������}���[���i
�dp��p��k������ʼn~k{�6�[k��x��m�Pj��}�	�B[���goR ��l&�q�����?�Ǡ�~���?ڞ��‰>A��5R�Ͻ�]��%�Ȯ{�=���|��WF#�.Ř�Nc��CT֌�=�Hѣ��?О�؞�>Ω�;�ϯ�瞮���Ӷ'���r��Ƅ�$╆7�S�Ν�%9�8�o
5�h��>�~n:8�i�Sr�0�/��t���h�;�_�O�����ف1Ԑ��������{���v�6_l��a�Rk�In?��ޔo�+}����S�0�}�����Z����p��2���Y�У�3+c\�w_�F@��5�����-�?���z�/�g�JI�t\�|{��+b0��v���_�sO�Do��Xl_I�]cs��J	��a5��L��6�5��1�������}������s�|�׬���	�k@�R��e�.�~;�g�S��=�1���d`��׉�p���*2��@(��N�����u���@��C�	���k��RM|��8�=�86�C�L\26�0�6�α;�{GP�4./i��	�z��MקW���3�囝اC�ű�s'*J��4�V*�
^�K��ϧ���Mo��[�������BxVr�m<�T{_;�O���!�e��#	�B��3�s��h&(�E=�t�^:,o�q�v��_�U�gfj�Z<�ܞ��A0�J*K�M��T���m�)�߆
��\�
��o��k1�Ǯ�^���ڰ���~�����8׿��$o� :��A�`_upZ0}̺'u���X��ܸfbs.r}c��PJ������oj��k??Iׅ���B%0��f��*>Ĺ�r,��=]p��]�5Hh��-ySy��a����* m�x�S9�6��$TWj�I�f�0�:Yدs2�Z��㿤����>�
G�ߟm/_��^����~c���
��,T�o�����'�릛v�j�T13݀�,��/#3��۞�K\��J��C�o�s��t�#��˪�ҩL1<���@u���m$lH5N�v����!�v�*���{��w��JF�$2{��S鵾��s�� �#���c�?	�{I���ִ��c��q�S}ז���(�����n�JψwO ��E1��!�� ,�b�?������4"��"�:�wu�j%��8
�U�_$���:5�Π�Wٞ����[I^L(�=i�P\�M�G�9�ݾ��@2!؜�	Y@��s!]5����@Z�t,�����y��HRi���^K�po�A�,�O���L�&��}�B&������w���+d{����$ٝ��\���� �����DŽ���/�7�dZ�����=���MUu��O�6rn���S��۷yͨj�\����2�3�k7��l����0��}�l%ԛ(�����ɞ�0ȨO:+���.Fk�8@�C��,=�]�M�`v���k��r����o�����D�}�~$�����s��
���)�Y�{.�'�#',���B|�{[��m�����u�+=U9�GɐR��}�f�nuID�oN�K�b:�G�����~�@ͅ��w�wO��3�C����sn��i�9��c[��'���_4-�o��V���7��"o��jS\�؇�ˬgĭݵ���:-J���L�%*�/e٧�l.:��;q2m�g�����q\�����z��y�]�Ƅ�r�����r�EEq�}]5I@���u�!w�8�JǪ�.O�lWjr���̫�!A��𾭮�ع��U�ȭv?�h�U\�v�؉�Tߝw�}@݀�䠖�]���R^�Z]t�r�q��]�h��ڙ�j�����H�xM4�ٹ_T����HQ3Ҍ�ۻ��u�=����<W�Hr|��K��qEN�Y\YrF""CH�9W�t<f�ϓ�e�]'UrI�U��vmu�ԉg�X�-=T1��e��	'�\:���h���2�&1O�F+>��-N�5'�H���(t��t�oJ�V�`Q-gdUo@5�ժ<�J����{���(�Do��O��oUc-j�H�$�`���ҁ����D�m�EDYj�"C7����:��x���r>.&'O��H�/��*i9���y"\��G�?"R�И\��e��+1^GKw���(9�w'\I�EF���^%<��ay�Ua
.&�����h�T�0\�DM*�H��yڐW@���l�����t�;�5��z�Uns�ِ2���u.��*�R�a[Z`�2bU[�J��Aĩ��e�b5�!��*q�Wd�*�b�X�+Ga��=\(��+�5WJ#��j'tu��0��н#ɱ
uIڪ�O�L�>�lt�ΨAv�f��\_�(3����N�J��
�x�]nZb�N�@���>;�t�f�h�y���դ	��;Ʌs�����8����ai/<Ͻ�r�{���������z��1ݛdž��x�MR��.d�c�*�Y��z��@���(�m�Wp�.j��3t�8�ꌛ����q�CRe	�k:��R� �F��>J(�aɯ��?���o��{ԣu�񝏴�G�{���8�V�+�8P�l�c97=�m�{s�H��>~�����'/de3�7�8_H,�N����W���^�VN*�U�2}�c�3@gqA,��Np98�l�=1�NMh��q@�ݴE�x#�lZJ��#�d;csg�W�OO��	?gz�Edž��v��鹋
(�1��n|g_�T��Tj���?��P�%\��ոRo�.�1;�-�籁ʋ6�O��k�RBp~���ʪdL��=�����g�y�h���4���'����4ɠ8&ot�91�3b"��K=J0-.�:/q�~;�_k�����_k�w��7��(�~�y
�w�{�q+=�u�9j�����v"w
.n���Ĝ����s��'Q��C,�\^�/�⿔��'��|Q0H��=ӵ�F`���:��l�Z{�ӻ��0B�̣��wq���{4!=M�W�V@�,J��U���p�9����
�s
؍J{�[�?܋C����/��g����O�{RҢ�N��,��:�j7W���?��h��n�O��Y�J:K�������~�����?x������:�՗�5�LN[��H'�}�������/k?���?��D+!3\�uPz��L<�y\�9���8�v�����3���D�8ǛgY�4�o�M�r!7j����K㕱��$G�Jf�����x�[��_Oc�C�'���u�\7�=�snH%�H1�I�=�'O�����@��=|�SP�9�����{���^����ߍ`gW�Х=���;
)��(;[�7�	3,IF�ϵ���=�����?�~����o�F�Bl�u�x9x��{�,)��U\�U� >$�~<��%!��)����5���>�u�=���"޸��	�ސ%�9غ��Ip�h?��w��~�SBN��G�x���~c\ߣ��J�u��0#iu�����C+uPq5�
�vC�52�+���\����o��������l�� �3v����_!�hWN��2h����JA<ׅP.Gk�1v�]�Z�?�\���Ozt�~�'��ǿ�\,ՁN�p�v1^�3�ދו\�Qgb��=�Nj�g�8��{��G!$Ҟ�8ra�.�<Q��c޾��������.U��J-*.7J<�����7͟���2�Մ����Rzmqm³(h��3;o�� ]h�x}dj�.���)���n(Z����s�$�����}�m� M,Em��}(����*/e]@��.C!bƱo��g�CO���Л�D��ڻ�z���o��~�����Ӯ��ʛ��0p����b7��]�6�7�ؾp�����hʓ�o�]� ~Fr�/�R�&��A��M�/�'tnȹ��
|�Z|�滩��H��m��58;M[�Ւ�f��#F�+r�
��&�
q>Od�-7AA�P�U�������0z��*�N���a�wo�Y�0O;o�L�d�+�B���9���R�wY~�trM�r�y�m;)�d ��?�~���E䭷5�].GP1��vd����ƈ��1�c�j�}����-��+�zO�p��g���"�h}��w;�F�sct�(p�ȫd4W��"���Q	��QV�J=��\�]pԓ�v�:�{��z�.
�r��m���H��{�s)$z���Y��m��_���%&��۪v��ۨ���z%��s��q{�)7�z
"�}�D���
1�5J]�P���d#���i,o�s�?�)	���{��A{�Ё��˱�ş^����{��*'H�#��ȧA����(���`��{��.'|K�u-�O�v(�!@�`�RTuIv�d½;n?(�X�$Ѣ�F�!J��KOY튄5S�<0��3\��^VhF�����]��ÍŅ �X�G����/Q�G�s��ޓ����w
�����J�:�Pw_�C����5�s��;~:U8���J�q�G�J�ˎHdDɀhh�{qv��h��v0hw�3��YXS�g2؄Ht:�FC��5��Cg��8���U+(u	�C�>a�3���sݺPеuYZ�����EC��}W?�z�����NO���*�N�TN�֕����E-r�m$�}�h�_8M"��+O�8C��`�p��(�����ڜ�q��+�9Yb���\�i/\�c��7M543�lr�hww}�!�Zg��D�e�U���Uu%)��,��w��j���΃xľt�R�Q��ب,J$2�#�Ǵ�� ��.n:G5p�*fHRk�\-A����'�u(���d:*��"	+&�JV�ؘ]Y�!'/�鄥�t j0�\�J���;��R���EM�Ѯ�"�#m�(�,�͂梺�ԡ��7��Ǘ�S��y���F�kr'�Mq�L� p �.Dw�JR�@/��w��5�s��	�嚥Ў�B���ӌ�J4a'�B��*���-z�����e\s��1l���w��y�أECa��o��pcHﭔ�\�@Z��u�x��ښ[�"��+���H+\�v;Q
�0���QW�F�u �����xbzs�Q�2��x�}�a�f{x�b=�"��-�F�b�8\�gw-�0%�F�	Ѹ���i��r�$�Ə��\Ն���T���0����;us�覽��v�2a�i�����/N�đBf��$�����ᮻ�L{߯����^ϕ��?�Qb�}�{�s�����k��]i�n�@�	2�0i����4���Lu��<�G�#1~������^�V��2�۹�ٗ�?���[9E����~:����*0!?מ�����h�L�~� ��9p�U$�7-��M�iyo��ztV��-��n���u��5z�� �U���U�2�	ˀ�i�_���om����VO�f%�t�+�U��r��A�\郒_�t��A�)sN�N�l��OtL4�xˋ�\�_������+{��g�\�؍@o�}m:����x_[*l\Co��0}^[����2�۾֞����~�3�=�?���ly�Q��+�J��WGP����xy �"u 	�փ)���L�Yx�B�tM��&�܋q�h��'u}^
��p�ˠ���|C�e�Cp�;a��ϫ�C}�yq{����qɕ��z�#4hD�{.�*����fT�"	)54 jzW�������������{I��/�k����9}�+YP�)��a���[����;>���E5pS-��~����{T�t��6}��ю{ϿntW��Ǡ^�lwǂ۠A�t,(��+�����@�-R���������5im���;�����c}��dW��x|�=wm��ZtGW���r�]�>�P�+�[���<�=�M&���+s�b]�t�љ���G�z�_������7��_��uT��4��@e!JzB��/��Lc�
�1U$ q�/��wh���W�w���K�&��z�����ߣF.�u��t�υ�uO�I%�Ao*�x�ls�q�<�7��&b�G���"���<s
Q��g#d$���P
@���|=��� i��_�b״;-ΈPUo(�1k��$5Md:��˦:�b����^��x_�����'���7}�&�ڿ�#�p!�W=���uNF���_�^N��JU���W���cvY�W�16����'Cչ�_s�=��*�q.�jƟ��مT~%�C
e�����t�����r%���P����
]o.������Mo۞����7�9�����o�o']Rq�+��p�@�ܩ�;E[jK��.�'T���V��j~����=�	[�
�bo��'ϠƎH����k����Ǿυ�w��i��hǺ�3���cϙ�����k_�,�yDŽ$�jx,�_WPz[Z�]��m�=�Ay$��AB�a~�=����!#w!��n̗D
s����������1��/�?<3�0'{�o�w��늵��^q,�i�,��/i!/qQ�k�oZ�ҋ,�%�W�`��w/�3��To��X���M��+�3՝��'mHZu!��n$����O��3��~��]�sY���2�0��;�+=��~��ǵ�1�?�~�(5�����H~"�������LjPaZg��������z�;���W��!�� �t���k�?���?ݎ�p<��ՠ(��p�i�����կ>^�[��鹫�ϋ��n��-ۯ����=d���0$�/��>�Yj��螣F$�2�z���2�U���+L�IJ=i�+)=�;�����S@2ɯI�����]�8�W8|�Po�󼿽vM~b�	����?�^�\���{�J=!L����z�d{��C�St/���׹D����'(�׸;��>���jJ\����ƕ�s��}ɻy_�����I���m$=s��\�͒��7���
Z���N1�%7Q
�.���))7�l:J�����vm�*̴�t�vžp~���<���Gq.��e�2O�3D�c��sR��\�R�u7�[F��7�1ib�n�w}�A�`+t�������1��?���Y$�;�)��O����~z;�Ӥ�T�̓M���2�u`�1��6��!����a��x�����a��H��=�%��{$<�a�C�2�j|���?�2j�xBd]���A�ѮQ�_�і�l�<�u��8�b@~����� P�t#�c�T �~b���j����<��#�K��w�P{��}oչIv�E$\����9U��Ns�����"�,��Q�Ż;M���/�x9͗5*0}�ߛ�^r�y�𩚖[P��o�Қ��l�/���gr_�	݉UTFù�f',�G�V�U�W�&���"�m
��o�_�apz�!���HP��#�$��T��ch�S���I��7n�p��f�3!,	��ĝ?���t��Ճ�:I�l�H-,��V��1�f��^�N�K�~�b�ES'�Ü�;GHCr;	�]	KCOd��s%4"\�y����D(���ôy8��H%�(����J�9�)U�*�\'LB�-��4�=$"�k�I}�f��}�b)��B��J�d�5�u��)9o�n4��(	�!��R�_�|qVV��mu���i��|s�����D	R7����V��I�9�&�~�;ֹ��Jq3�̧�rX�0'��@N&������*��j�L�؆J�u�o��tI��@��A��%���2˳�O�v1v��
�vf�k��-Rrv�_�Ӧ��z�b�����h-�|��D㾣A���?8t��t�>�@���G\�c������\�u@\�Nk�NbR׶�Q<i�hG#ed�*��Y�l�bu�y�.�N�*nB�`d�u�9!5�n��us2�`F�\���B
(\$�8G�v�kʻ8�g�$��tJRȮ�7�z�*nO}ov��X{�M����q�R�c���Ln�KX��3r��O.`�`�]�L%'e��HE�]�v�&��Ѥ&M��K��|u�J��bn
��)oC��k�`�X%%$��tz���7�oR���(	&��X�q����Q~ ]D���$��n��7u/��t����W����$�8qg��� M�K�kii�vݼ�u�h���wtҠs�	�[��y�p�T�+\�?�|-Tg����	��W�x���8��V��a?4OBc��qtgv"�Z1��sR�sz|ʵ�3%�R���`7��*.�J�D\���%�IvU|�U侓�g��o��
��MTr.Ue���H�\1i���5,���݃�9�#TʋF&�#��1!OJÜܡ��S�Ŵh�BI;)_}IT�׿+�72�N��y'��vdU��αYI�'����ꊃ?;~��\eA=66��.����j?���;Xc6�sr�aީ�����{q�u�j� �Nv��㿱����;s_��Ǿ}��h��L�%��{��?����~�L��cQc�#;����:�6���ٰQ�~��SbÈ�O�J��N&�
���(P閒�$S��S���hؕ=�U}

e�C#�VU�TF^��J	�BDMvC:P�oH����Ɣ��!奮��00��G��Z����[]�=p�.�}F���te'��{���t���q���أ1~7��4,���XrG���
�R5�UW�.Z{��$�M�����zdP���^�hà��+B=�Yef����&V�,�k�vN��;۫��|��A^M�`.�n�Z�l�
��q^_pV��s9�:�'bTFo�A�����]���F�j���~u�(%��B��F���E3���k�J.J�~�`\I�����
H�֯��t����ɽ�d�]2�jeFu�*vV�WR8D���S��Жt���qs�3�\C�<�ز2��)$��iVR�|��,˸���s�ݹ�v,$�3�J�C8���&u��ʁȄ\���H��s���y�6�}���g��>�w�t�?���q�]�>��v�j{�U�-��H��'������%)�o��Rh�8������SV��׀b�*B.�`�n-Tc���pI'��nЌ}�[���$�뉅�z��,�5.�b�D`�=v����e��'��ޟ&������y��G)F<x�S�ؒ�a����5Ɲ�w���;��?xNХ+��3B
ܥ4K���*j�A=	��W):1�w�C���p'��7I�o*ǪZ�*T���3 R٬��E�WQ�)�F��H�Ꚃ�����@h�y@�烝K�K���t.�E8��<��Bf��C����s�T�&	��}Ӯ���
����=:��6p�H�ߍ�-P���ر�ȽiA|%g�	L$К�٬a���X��1�\�w�u�R��f3λ��������Wt�@f~�[h�8��ٸr��ͣI����>���z#&�?+�1�,�mc�j�@v~c�G0D5(���	���ttMY��&t�(�k�G���A;o�f�8��P�2�W˭p�T"��2�U�'�]��Trpe�+�Q�]Չ��D���r�.	����˗wA��u�I�p�U|G��Ld�]l���Q��}��e�r�i:�Gc�GOu�����8�$�F�XqNȨ�]��m�(�y]����O��Z��X�i:X4�+z���8�	K��dNƫ�v��@*\ҵJv�K�u���m�]�vyWn���9(��2�ҵ�"��+#B�Pe��t�Y�Tғ	���+�iɰ��?`Y���
�+E��%y���ƣ3C���}�
��{A�p��wV��h��Z�g8�C�U�U��s�urS���QΊ;��ñ�`ä̤hJ�WX~���s�&(�6�����WiR\�1u���ؔ@�*
4�	�C�~6�%K��(X�aA9�[9����#V�3�U��µ�v�4!�O�Q��&�f��(��KJe�F������6�|o���N��ѷ�QHHCbR�gͬS��a��5#�8��7��s��ӗx�C�2����:����(�H�Ua�]��VT:q�Ul�Z�9�TK`n�� *S�}�Q����:�V��DL(���i��"�\Sy;x-�+H��r�g-��[�
�x�ƒ�0g�\�n*5�P�����N�� �X�b�U���`�:)�[!>���z^�huYx'��K	�K��j�ˬ
e�FǬd�]/�좛���dd�Ȼ>�T��@��Q���OUbf:a���p�9wj8d}	{Ot`
*$��\v�Q3�%'�j�ʹ�t����C�9l8�����UE��Q�&�MG��� �ѡ�'��8v���6�xn��@�W���+5kGd"mIJc�.�D*i��B*N���4��͖p"��5gݍ݄Pb��p҅�T_h7�q"�V��g�����q�e\h,oѼ�O/
�z%�9}B��!�Jm�F�(���P�#���S��-YaU���<]��Q*�T��.Y6<P1�@᭹�|&�T�
�܄s�5I�j�.w]cg��<�Ƒv��]��NW��2�>���K�Xʿ
�vJ�q�3��
G_��i�����>%W��=��٬̦^���2U��*	N9��	����*����Z0�ڕ�	��p̎{v(�J�8eꮝv�>q����`�=;z���5>{	r���k`t�iO?�.{���ՖU�
-�x�Vԃv�"����m�H�C��,�hH���x���@:��p�%UL*�iA�PU�d�ZJ��ş7B
s�=V�ce�I(Ԭe�!0��$���p�!��-�|M���߹{
܌5M���?$���h��#�U��c-^��=�*M�Ł`2#��C����c�=�o�K
�����-c'�.7�J�_[!��
8�����[%^(i���ThMN�YM]I��u8���U��z�.y�h��w8��_����.��ɿ���P��[ܕ���[f�Ǝ5p��^�i� ԸB����t�5uLhq���F���w�WA�k!�tm�&����c�禃�z	(�����L_�`}��F�8�w����tqh�Lޡ$�-�D]����a��Z\Ø
X�x�9U�<�q-\ٰ�n�W��y(�Lt�L~��#��IX|1:ξ�b�<�9i��5�L��{��w�,������U���5$�����wr�FW��js}�STE#��?����V��qI����4��@�\A��>�L9u�݉����T!�a܂�G?���K�@T�װH�
�I�\L�
��U�S�9@^�!�uu���Py��k�cch����f��<�ܾ�A����>Ѻ�����O��8���._Cs�p�]�Z�0�:�qc��!��m�wM���@,���eٖ�U{ʫ���	85�tO�P����a��R�������L�;/L��P���	q�L_w��JAx����E�M�5Ys�[1���cJ�m��Pb¹?&���F�J�-E. ՠ)#�d�=��=F]m�ΔC�,���qM�J�B�����.�:�j�p�K@WK'���`<ВpV�
8��H�ںUnU��#d��Z���N�r`i�-U�9�h�PT�v"b�֜��ruS�M�]�1i�wV
8$�M�5���XMpRc��S�q�����ol��v�i�K�bkG~q@&�QP��J�N����8h�5�!�BFrS����TW� �l��;�v�@ t,�qq��h7u쫙`�۳n������е������qߧ�cF��	�<�*CO؄oD��L�i��c��;����r�+�cU�|�;����`�U)�eM�����bU�a�к.Y�YCE�ɪ�§}ljb�}JGd(�T՝�K8:Z3m��;%`���.L��p`2J:e�j�pމ3$.$�ޒ�	�wJ��C�����_����D�7Cہ��b�)Qge�
I��%�h��S/����+����IY�$!dŶ.q�d���~����ͩ1p���-�}�����CԂ���Pwc��8┒�\s�r-�Eue ��U$g�g�2�xw�Y��K
L�I��ܺh�\���x�n:��hgu*��ίa!4!���U��	*�Ĵ$+Y�Ԥ�5�u˱�8�k�HG�B����g��9"���üҷs�C�]W����1�v��s���+1���t��G���WL7u�d�S衖�N�ҹ��<I�|Ġ2�>�a
)(������ku�;7�(�A]y��6�a(q��/����{��v�GM��~r�
팔3P��D(�=.֦�#6c!r��纯��%ܜH'��T
r%�<I*�CW�t���$��ќ�=��U���#�4IfB�n�\�(��P=�LM �JF�iTm��x
��o?��nK-�]\IB:��37�d]E���0�څ2G�vfUk4��IU͔bt�8D����R�G�LO�N2@��%I���;���;����B@��΍��\�s��Urk.D��1��݆L9��P���F��=���<+(���뽩(i��
�DO�P�MJ,�{�$ -pڽ*��ZlJ&:����R#�;��WZ���J��p�z%]N��}�->��:��('�M	�j��|�C����4�5Lv�,�;(p_佛{����*l')	�;�y����h0z����V�!Ț��"�X�g
�E#�@r�6�{���T�H�{l|Wh!#�y�ǟ$*;�p�&����߯����*B��4�t��uB.��4�@�3��cQ�A��ya�u�P��gu�)Y�Z�6O�\�'3�[����3�9���׶?�}�/=���{~ &�g��u�] ��x��tV\���5.���B25]h��Ϸ�\譮L�N(����{
z�H���~��ց�4c��|��^�r���x��G!��U\���+�m��+��WԵi_�XB���S>��wf�ԅ�
�H��P����;��־�����y��e������7�x�`�\{�h���y�*	��5�,�nnn����X/i����x�L��߿���7�����_<�S}��ln�������}�K��Ԡ2�D�|�����=��T����Ƨ�O⌫A�@�Mw�9��$C�Ӻ��>��cp=���[�qq8J��ʁ|*l?u�r�͊�L���������48?���?w�u��6e�ۿ;�^ӻڶ�������s�w}4��2�1���|y����=��]�{��s��1,�,���x����k�:;`��V�!�k\�_�&���U��Ƅ�s`-��W��{�"u!���cTFm6.���*dt*[W�py������'��ͪ�����#�N�����Ӯ�ꥸ�_�E���{��=���G)�yqt[�>�2Re��ޕ�������B�c�!�GK�e��{K��I�4�l_Л.����{�zW$a�c�������\�>��	VMrm��\��>��R�<��m�w��಺�\�Z,T���#Q�i�*��[�[7�*ٹ��t�o��V�q�M��P�!��q�����ڟok?�k�m��F�q�E]�?�l7����8 E$�nre�.��~}�� ��/�n� W��|���|޹��`g�����_�X-�ɉWL˙Ȇyh͹��M�(�,U��f��:W��Tݠ�Gp�
����Á�����,u��s�&���r�#�u��(s�fJ�/~�:�0��M��j%���'���:�:�}�Q��]�K9n���i����3���n]�{��A��JK�A�))Z5����
-���@�������n��?kozu�yC�m?�M(떭��2L�%����b1��Al���I��n�S��n�!#��A㥓���Uf���`��t1�K��L]w�6�?�΂�eV:�'QG�N��w=(]�Q��M��x�LT��1Aw�(��Dܧe�3���x��Zδ	�T��r�u#)�"Z�,N�Ta*�3h3$A��LΘ��*C�V`�=�Х�]^�$z�!�N��W��!�(I��Z+�_K������F��������`jq)�[�•ب��
�0�9fZ�.�y4��f����B���4L��2�dl�f@��؍Ny�M��)��eH*��֝f��\U��e����9J��0Ĵ{;���*�i�qo����q�	�Q��*�V5���J�PSG�ǠDB�f��W��ڪ�KZ�.�.���dU�@Y�D�1�
��
.�w@(��HaƬ��ɝ�ј�B��Q�j�Ђ2���Ev�M��l6��I����K�"��r�]�;�};u���RAM+��ۥ��Ό�O�#�ߕ7Ca��f��8�F���(yLs]s*�C�E��\�OIkH���|�1�*7��AR�W"�T�V����:�TI�,ܡ�e���Β�B;~*�{Kd�y�i�^�kAƲ��vrĎS�l�t4!;�`� �n�i�!/��s�B9�j$�lf�ϝ�"	���d)h'������T�	����,vCd	�K�ʤJ.`�y%�����(��&����Jl�q����*��n�2�o�y��?�/V�I���G��LL�|?e��S��k|.�4��~����@�َ�8N{�gclw�3��~������86��ҿ�^m�]�q��z�v_���9��q�9����$!����j��؜�����|>��f��� eYX���OD��%�J�	��R&�U���%V�5��گo�8;��x�y���n>O�G������lk��iR"�|�T��ߏ*%���yLqs����z4�l>Oɽ����Sʍ��~?TI�|���q>�_�1�n��S�<M�N�~�鲻�"��M%a�U���?&������*��1��*�v�9ϧ�_��o?O�ݘ���.�ǿ���b�s��r^��>U�J�u<?z�����hJ� ��y ���i��4v��g>_ț���������{���=�,���s�8����P��@����t#��4��@4��޻�<x!��C�Hz܌���ϫ�̻S�����
du�yR��\G��s㥻U�����O�țU\��3��jE?�_xI�=k�z��������U���e�4��W7c��ʮJܴ�H9OH��:"�瓕:��I���i�d�U߮���,���yУ;�}Lw2��U4�g���Z�쟧�)k������JQ���f{d�F�15b�59��?�����C��<d�1~2y�C��$�߿�y��O��������Er#�A��ڴ��=��G�4�L\��J��ƨZ!�$���ҋ�B��;��".�&�8Ó8��)�s߹pi�VYi�q�VW�R��m��Wp}�|�RX���0Z)J3�ʉXi��)�C=���L��tԈ,��Y�8}#����[%�\����{�h;4A����e	�V	���O�p�h�.0�3ݜ�~�؈��~���*/:Ĩ�i�� U������u�Y��^��^]G	9���}	G����)>�tݗ�򜲿�����J]�<I�/�M�f���eᓘ,��@�}��pF��hN��u)�E-u�%M�E[�kxI�AU��
�]����V�CHF�`]D�Y��b1�	ʐw���f��sUc\s��)4�p�DW���7��`��*z3UR�M	'��9��f}��!T�r�����5��y����?��P�e�%�e��Yِ ԕU�dI���cVZ�e�;���d��'��1[*�k������#��<��=�3��g�;6�߱�+BIj���9�Лh$�]����H=��Y
�"��=�H��[��n���w']	|C�*�hɈ�vI��dDˮ;�����!��mC��U�U�Ҥ��D�Y˳�R�����v��L`��{'��g��q]��Ao�4�W�˂+~_�s7�O`g�&}D�Oq�@h�v�!™d��'ɵ4��OB7�'� )�y/@R�Lz�rsW�Ϝ���$X��iwɻG:��Ae�i@��:��jF���V�σ�\5+?OC��4��›־��'�<�A��Гꥴ��dݚ�w�������<)Ճ�`��C�I�c�r|^@fO�=c�<���nT3B���k~�I�4���s_;�w���tᓄN$z�2?U4��T(T2W~9������s<�a��\��+髏�Ŏ�(ݬ+�t�
��V���
�~W\�:�\�0㊆Óƕ|��s�P$��+ qJ�9q���9_Q=�}w�
��@{%��q�rmW��5ԔU�
�����l�h	�=���+�:�ǵ	�����$�O�My��0Љ����z�J����I�)��ש+�m�莍*�ɨ���-��F���%�;m����� `$��#����d���{�L1���]�@�lԒ:� ���6YZ��ތ�Q�9	�A�C8d���9�2QГ��pno|�i{�؄~�K<�d������GrQv~̿��6���'zp2bx���+A�&G��DK�E?�S?�����p?�/����{���B>ڞ{1���~�=��|�����v�����Ϸ_�����+��7��~G���������쒿۞����#N\�����K�k/�B�2��Ϸ��%I��������
��}���w��/�Ǘ��_|�6aƢ�n��'�~��V��f�C<��ޣ�3�0:���?�_�� ���4�����~���l>�~�A	������Gw�q��ҦI���c���]���;(�9�o����߿���#����'�����=��xjT� F�
���|�;��_��.�3�����q#���NC�Y\G���a����D����1�\F���Ȫ~���J���Z�9�k-�U�gW�u*PD)'/bQ�h�3����J�?J�V�lW�����S}XQN��ε�R��]�f��C�S�B,)�]w0h9!�'}7�x�A�
쌺����g��•�B#�2Gۭt��H�<#o���6��M!1o�6ԡ�6��uI^�GN'�W��x@m�t�Wm���7���P�+.�+��n㬿�,�ƚ����\��mT�t�J%��Ɖ�M���:Y���s�5��+kmڕ�n?�D2fRd:�*5�%Y�y����4%0ͩ6��I��l�W.qDq�=��wM)��	�0�:6�����)�~#
L��T���s�c#���I5I�>N��YTޓk�U����a9&�Hl�I��1��K^6U*ρ*pt/i�87�d�(���[��5B>*����xI��%����O�ݎLI2|nT��tŁN�g�Ω���UW'��4S��t�Q�T����%�(^׹�t!ږ�3�n�+`'nq7O��С�ٝ���&�2�N\���g��W�כ	`�9����vm�I�a&~J��p�i������<���k���}�vg�`h�Rc5>��M=	\%2j��X���ЙV�:�T�\a禺6M:��E':�#;�"YP
O��o]<�QΓܵ���p�]��:@ua7F�FCHL�W(2�炎Dc礸gz}�'_�:_����,���F�N<���֪D��%�ϪJ�)�9�9�Z��7���g��?O�z]U���CR,��+��ʯY�)�8QEY4g��%�@8��g�8P�	\��g�4W�~��P�kUŅ�Έ����䊺�-5�:y]��%��Ia�.޼ ]n%�y����J���({�y*��#�1�<���pq��C��)�������	E�v��]%��(AY�R��7�5vUG����>�'�K�I��&%9���LaJ���%�]}۵���Ea�� 5���(]Ȥ!�kB�:��1I����bz��p�STv@��h]}�8�j�vL�kK�
�x�YM�W�:�
7T�k��ʆTAPюAMSW�^�^P���N�Nnٸ��Jr�cT��&N�e�]F]�V=_���.O���M��Իry�4H���A�=Ĭ�s�����kzj��:�+k�w��Q���ׇ��&���f/��TƬz�K��u�u�ڛ��c9]�x��v%W1p5`��L��%5e�]x���u'��4�
��W���r<W�v(>ڱ���Z�U�>a'9�ܺ8��;O��;�/�p寧rK�e#7��t���(Fs:hi�
]�U'_�+Oױ�;P�1K�*��@�I%h�����W��4!E�2�%������s���?%i	��3�;�[>��>���{(�w��<,�޳��z��GI�Q����������Ŕ_V�)(�t<wm�N��T�9ZK!���$���ڕh�ݼ�`LF��-�Q�G�$�2�Q�N�ց��8&U�e��;���}�J���I�-��d�F�&aEl��~&��}��R�n�v���y$n����3�0T��JD��L��]�ҋqy�)6��\J�0�5U|
��UL�b (�[i-: ��;�j���J��ހY�j�tè�#X"��sHw�~q	7�c� /�U�~���ܺ
��Գq.�+�j�\��s�
c��GNһ���܎�6,uފC��f�T�����]}�z���
�tC�z`��,Z��)�� Dž:�r�`Ƣ"�rI]O7���\]W�����SR��bڕf�1#|�s.U�?�i�ފN>7�*�,0�0t�U@���zI�P�ۡb�{0y�IP�MN*�t�3~���U�1e��Bk�[n��U�X]AY]�nūS��~"!H�W��@eL(�'�<y�zor됖nv~r�+݄�}p���A�vt�k!a�
�Cހ��Ҙ��EM��P��>h!��y���`�4I)�B7�Q�i�q|k�ܒ�Z3�H>�1�S����R�ʲ�ڍ;AY�s�A���n>9���J�.�0��O�1媈G@�à�wͨ�U���$�iw.�÷��r	u1j�J��?��қ�@$G��X/O��f�r�hl����M�'�~V�m�('��{4���ݳ]��.�q^�J|F���X�ܪ�'��t��Ct^��%����t~��$�h�"�e�)���j�0����r(@"�PozW�!L��:K��,�L\��uX�jrI>ru����M�g5N*��-2��3qg�i�T�y&.�S�;#�%l�.V�hT�sV�,�hXȕ
�&��M�5U*�eW/'"�#��Z�xW�q�#WB�]�_EPqx|�
�9�@���sbRw1e~Vb"�3�����X\Y|N_B7)Zܔ&��ƆBs���40y��ܔ�@;�e%Y�ī�3Yn"���Yq��Si�E�� �r���D��p��s�`r�0��"�ݵ�GE�@�D�uX�gt1Q��*�TM����*Y�U9�t��5p�Q�����uW�e��
t��Vw,��	��;5�M�ɴ��ݞv���\~������];��0�����]���Tχ����D׸�+Q����p]�Y;�$:�S+R�-W-��I-�61Gr-�����d�]�\�I������,�b�Ts�Q|ո��uɕ�h����k=6Ik���Ş�����<�)�4�(���%��N���+��uT�r	6�S �/y:�'����EMI4��ӝ߅�N�B��BE9)5,.��g�vB���K'�Ҹ��f�R�h�d��WP,X�N�ܕ����K�Q�QH����i��E�r�O�WwG�qp�Y��U(�s�����yg�;)R�g[��)��@l��Z�sPI�Q��%9Y�\��;��:��)�n���Q�玂;b��#��s)I�����Zz�4<��V$�]lo�#;qJ���7>�DZ���P5Ѩ�.yZ�8���x�v]�{����N�u���5nN�zJ�$�5�D�q?(�EOIl*��|M��5ׂ@ H��D���V����;>p�{o?�����u%hkZ$(aI*9�֚�b�������|�s������P��e^��Gu�Y����O�Ί��J����H5�*L�ѵ���iX��S%.� �A�v𔯢��C�M�\=��z������k,����p{��ԑ&�jS�NRQq~�T��x�^B����!��q,�S>�Α?:�q�S��z�[Z4�IW�l�2�N�H;)ڐ(�����L�q�]�:�8�K�:�y6�ckc*���kM�s�jAG��J
�W'���d�䔌��h_�E2v�1�O�*W0WG�$o�B��j�T3oڹO"z2X�U?�a<�����)�8%)���E�[*cQ�2�U�%�Pi��{	cO�/�!0�f��*�VࠪU�dF��8u`5�r]B�6�r����F�RձsO�q���\.�'
>����A�S��f���?v�����
�b�D/����`��V.�V�fy	���)i�5����vuZH�7p�)�tz
�vd1�ɧ�˵�f�UI��ɳ�||NZ��'�s� ![u)���5��7�F8Ԗf��y�]n�_"o��7�T
�n���>���3�(�W@uy�ӯ Ո��e�g�9G=֬=u��J������!�$&�sש�j9��nc�r���)�bg�&e'8�k2�j�NAc™ء�;c���Yv*!���{P�Uر���aB��8��aU��� PR���ċ��H<.�Tl��.Dqv�5��!��L��S�Ёq\/�\�Z�.�u:��K��!/օs�,3���^��¿���;�����r����ծ8����IEND�B`�lib/themes/light/images/close.png000064400000000420147361034400012764 0ustar00�PNG


IHDR->`�7bKGD�������	pHYs���o�dtIME�
/MX;tEXtCommentCreated with GIMPW�xIDATX���A
�P�1�����3Mۈ
~���V��P��$4˂�1�h��6z,��|�g&"�N���Ժ�"9T�T5�������Y�r�>,I-�ǿǣ�"�<y^Q$U9��w�h��6�h�H�h,[MxIEND�B`�lib/themes/light/images/win_10_sprite_icon.png000064400000002601147361034400015355 0ustar00�PNG


IHDR�<LꩼtEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:7A59BA79476211EB8B75839F21D6E908" xmpMM:DocumentID="xmp.did:7A59BA7A476211EB8B75839F21D6E908"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:7A59BA77476211EB8B75839F21D6E908" stRef:documentID="xmp.did:7A59BA78476211EB8B75839F21D6E908"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Z���IDATx��=K1��]�D�-��.n.�:I�
������.nn�����U��x�U�#���r�<���.yh���I��01Crrrrrrrr�!�T���7�h
S�2]�j�ߛr�h��+��F��������b�|\�g��Q��᫑����!G�r�e0ɂ~��5*%GQ�0�^�Y9��כ%'TBʰB�AB�Le�c��N0���w�~{m��T���%Ir�_KVm̥��g&�Ln�&�[���������(�~�ǧgzmZr��V�z�����=ǰ����������͕�N�Dv~i,o��f�#޷�+��m�z�w}�/Z�œ��qI-�.��;�d��xW���&�H�� E1l�*Ps9L��#rA���$>��L���QN>mI*D6�ؒO�\��Y�$G�cM>��y�*��:�8���Jp�``��t��
        Ԟo:�L!�[#IEND�B`�lib/themes/light/images/directory_opened.svg000064400000005002147361034400015231 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>server</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M2.45454545,1.63636364 C2.00267611,1.63636364 1.63636364,2.00267611 1.63636364,2.45454545 L1.63636364,5.72727273 C1.63636364,6.17914207 2.00267611,6.54545455 2.45454545,6.54545455 L15.5454545,6.54545455 C15.9973239,6.54545455 16.3636364,6.17914207 16.3636364,5.72727273 L16.3636364,2.45454545 C16.3636364,2.00267611 15.9973239,1.63636364 15.5454545,1.63636364 L2.45454545,1.63636364 Z M2.45454545,0 L15.5454545,0 C16.9010626,-1.81672859e-16 18,1.09893743 18,2.45454545 L18,5.72727273 C18,7.08288075 16.9010626,8.18181818 15.5454545,8.18181818 L2.45454545,8.18181818 C1.09893743,8.18181818 1.81672859e-16,7.08288075 0,5.72727273 L0,2.45454545 C-1.81672859e-16,1.09893743 1.09893743,2.72509288e-16 2.45454545,0 Z M2.45454545,9.81818182 L15.5454545,9.81818182 C16.9010626,9.81818182 18,10.9171193 18,12.2727273 L18,15.5454545 C18,16.9010626 16.9010626,18 15.5454545,18 L2.45454545,18 C1.09893743,18 1.81672859e-16,16.9010626 0,15.5454545 L0,12.2727273 C-1.81672859e-16,10.9171193 1.09893743,9.81818182 2.45454545,9.81818182 Z M2.45454545,11.4545455 C2.00267611,11.4545455 1.63636364,11.8208579 1.63636364,12.2727273 L1.63636364,15.5454545 C1.63636364,15.9973239 2.00267611,16.3636364 2.45454545,16.3636364 L15.5454545,16.3636364 C15.9973239,16.3636364 16.3636364,15.9973239 16.3636364,15.5454545 L16.3636364,12.2727273 C16.3636364,11.8208579 15.9973239,11.4545455 15.5454545,11.4545455 L2.45454545,11.4545455 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-46.000000, -93.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="side-bar" transform="translate(1.000000, 69.000000)">
                    <g id="server" transform="translate(46.000000, 24.000000)">
                        <mask id="mask-2" fill="white">
                            <use xlink:href="#path-1"></use>
                        </mask>
                        <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/README.md000064400000000235147361034400012434 0ustar00# Images
Store all images for your elFinder skin in this directory.

It is best to group similar images into one file and use the files as CSS spritesheets.
lib/themes/light/images/selectshape.png000064400000000201147361034400014154 0ustar00�PNG


IHDRfX��sBIT|d�8IDAT�c```�a``�b@.��&C:�D�<#����I�4�EX�]m�'��6IEND�B`�lib/themes/light/images/search-default.png000064400000002645147361034400014561 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:3CB9D763278711E8B7BCA3D0E19DAB10" xmpMM:DocumentID="xmp.did:3CB9D764278711E8B7BCA3D0E19DAB10"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:3CB9D761278711E8B7BCA3D0E19DAB10" stRef:documentID="xmp.did:3CB9D762278711E8B7BCA3D0E19DAB10"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�?-
IDATxڤ�KkQ�ϝ��<f2y5MM�&�n��ص�W.��'p�Gq�Bpэ?��B�B�B��C��d&�8O�7N��(B~3p�=��eQ�EqEL2H��&�������@|����%�����;0m}lO���R^����:�f8���?3ƈ�<�,۹s��	L�0(����Xj��KQJ<A��J`:so�
Y��*e�4y�OF����j�����S���"��pL��65�k�
O1�ҧv�Ng�JY�(Ғ��_a�m�DQ ]K.��I_�bA%�5���F/���g�XDaO���K���>�t/@b����w�9��*��"B�Ai�xyX�ez��V�Cr]�rzfn�Q�O�ވ�4�|#�烷�
�sp*�⠵U&���$.e��Y�l�V������8o�)%�y��m��R��,'K��gS� ��C��j�����ȿ�ع���K��ܰ���5q����L���B�>����ŔX���B���/��;�]�:�`�/̩�$IEND�B`�lib/themes/light/images/toolbar-lokhal.png000064400000053311147361034400014600 0ustar00�PNG


IHDR0)���tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:EB8734E9210B11E8B445808E6617CCE5" xmpMM:DocumentID="xmp.did:EB8734EA210B11E8B445808E6617CCE5"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:EB8734E7210B11E8B445808E6617CCE5" stRef:documentID="xmp.did:EB8734E8210B11E8B445808E6617CCE5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>^�DS9IDATx��`UE�8~ny%y/=!=!	�c���`W�]WA��.v�T�յ�
E��ҥ ��{��9s_M#��~���ɽ��9gδ3�93�@'�P�q:᳨��\��/υ	�bu.hxt
��L��9{v�������V��޸|[�^C8xh�/;f�L�Aߑ�+�<�������lM:o|68`r���m�쌌D`�|�wu���
�@�ӮkGA&��fg˖)}z�@�Bh���#�x(�E�i�f08곃( �N31��77n�ү_O`9�
g!:k8
����ۈ1c�ʥ^�0�����._��E����G��9�3Dz4`Y!��מ1����<��;�|s�sX8�W4�����S4�=�������Ɲ��V�7�w0�mW��$����ULM�i8��e�<�G!!�}�8�Iv��p��d��x�0r��\H��zy�%qhܶ�@v�9R�@Ƞ��J��
���{�q0n;� r,�N�A��
��N��~�W�{��q�!pJnѳ,G��h ���8�|�˾���m[��'@I�K�3�$����$�M��ʀ�\���XX��6�VX_)�@��bZ>
d$�!/.f��J��V,��Ŭ�_q��Ia��H$|��jd����n�S�%�%��P�>�I؎�R�<�]t:���M2�TF�F��S`���Z)�C\\H���9\lkq�MnA�}/���h�Kt��|Pd�>�ktj>oq��q*Ȳ��`'��z�`P��)��&����I���R��*I]�ȡ@�8�g���H;�B����x�Ge ���
V{�I�R��;I�K��@�GD�;8����$ϨZ�����FRH,^I�E��Rg<�?uD�'�i�<	��*���7?xCJx�"�Q}�3�A@S8�^^@�hƟ��ҟIL�0φ��@zl0�� ��	e���^�����a6���U
���W^o4�N���{��a�'f�|K�SE��
�_hPg
���V�R&ͳ���)��o�V/�V�#Ur`���G���<(f5@u�|d��.	܂v��T�I�,�V�%��,�5�g(�$��)&��ٱP�"u��!�����\�c)Y��/Y2zD��B�[�O���Ki\�I1`q(��Nm�;r]�z�fAH� �Mvw\ c�S����'#9�N�����j��-����W�a��7YU0���N3�$���gN����ꐻ��,I����J ��;��o�)ݹ��Ϙ����=�ت�����o��v�$f��|���{��8\��/�	��J�1n>&�~�X-+�*I"ݝ��eɡ��PW��9��'�`b�?�V��i�� ���O?=[�B�ٓ}��z�B��`wI��򆘨�"{
����=[��`2�lM��No�Gd��c�3(�N��������G�>`o0n�,(��s�=��O�7��M�}��N�t�a乵��Q�YmBm�qFr��i-�q�L�u?�ox_�)�J?n��f9}$_UO|`������'�:��i�:SH���t��"{����f�)=���W/x����jT�o���0=<1.]o��ԝ8}Ft���>"�1����٣�c���� }ա]V���3���"V�9KG}�߉�M�yYO�-D�]X����j�U�
a�A��CJ������JN�gS"��:l���m��V��v�~��?�
;nro^�?�Q�.��ڛa~Hx�B|�V5<2�{���7�ܹ�d���w���7s„��D�ӎݷr��xVVV������
��
�⌉�>����{.�Y��^={�*..>�-##��kKI?�3̽ii�
JJ�cjSǏ��KKK���YB@�Q�T5+�T|V%�NtHBrt������ʰ���o쿬��ޭ���q�vV�^�����h���Z��L`#�PPP����@�롱��S��tȕik#Z�Lh�wtIR�o>�����O� *�	׍��_��͓>w)��܇�`^K�Z�:�z"��Q��4�w����_?�Z��z+��+ǡ�%�G 3��h���P1���?�[B�l̽�u�>�����������2��K��0Y�]5^�Ԡ�|Cm]�u�����
��_ ,z6����()ZG`+@��i=�:��sO���y�>�}�����L�E9D�~��Q�Z�%��|��8��G&WU�,H*�:\�Sx��d��v���#�d{ыD���.B��`T�h�[6�D�mNx�����r��J�c�%=Bc6���a��_`�76��=gߟi�ks	f�K�[������7Q��7'��"��eetj�!����>�;���4S�/�B\hH<��)ÆJ��<IȾn���D��S*i���I��n�
�J�,�"��EbTQa��MMmR��i�qh�b�Y�o����P��/�rE�Mp4����)Pj\��g�YN���
8Ə�
7��ÌF����E�Z}�H��U5�f2��]�0~U�?n)�=#��]o�Clt4ܷ�����z�NO��S��U
g&�!ݾ�R��=u��#L!&|��WL�6��a���S�">N�����,�_Qs��&�0">*��G�G�!����t�/��Y���1h���^����4��I��p%��c�i�G�{��=�K�X�G�J�{���F�n>$k6������|՞����e��!nz��c�
�� ��ѱ�Q�ZI.�mung�V�Ʌiw�� ���c��
����|�D�&R:����I��1����׋c��|�V@�Ј�y!�ٌ��Jkҫ�2�_�:_�M��r��={��R�Y;<�nK3m�z}�:c&I�$X3�V�[7� G+@�����2�{���'SV�3��v�$O��7�м�Y�W���a=���D���%QX�f�5��B�1�}�۲�%*�Vx�HE��Xiv�W��Q�f��%��3|T�I��͠�ָxˆ�e��1V>����fu���p'�Y�u ��	���>��YUe��n�/+I�}��GLd�-l�~�ݻݗ-F�f�Bth[���U��\\�6�
� ��K(�g��~d�(Yv�ԉ#�!��gE{%g\ 9I�-K�� u�V_m8N��{F��-���>����Ή���囯",T���p��_���
rS1X�	�YA*�J�D�}��k�7��“.܏6Vހ3�D�S�<!&��Q�MY�琢d(̉F�޽
I���KN0KV��M��m�P�/��|��*��P�μ�=�N�R�,p�DY�I,#��!Z��<A�ė�{=�[Ӽ��<W<���K	��0�$���s;i��_j�),��7"��D�ȶ�y2�f��v�����g��l*����E7f'fW7	`2r��T]N�)�jβi)h�y}�<�E7
K�.�qz������f5T�ȯ�)0�.��_��$/�itFvQ�˗��%��U��B�4g�S�85m6 �ˠ��Z���9�QzH�r�UD�u?��8�	t�&�IS(i�:�	Rp\���y��,�n���-2DYػ�TN照�l�yX�t��~�7��C�Ku�YE����]������Z��Os�0A�}�w���#��Nܟ�o܈�j�x�/��9����%9翳��7�W!^nE�Fް�$���	O�Mx���y�KDf#�@�Ѯ!-�Z�Ra��ΐ���mw)�÷�jsdQY��%���ܵ���u�d��߫��*z#�-)Dk��q:�.�2�%��?���9�
�%��.̳ȴ˶�eMĽ��v����#��	#l����N2���ڒN�4�~ȭ�qI�rG���9˶�� G��-�,�����Q���7��nM/"O5vX���
;w�q��r�],AՈ�x�9vYZ�{��ϻe�^���}H���c7���Ԕ	O�UeWك����XY;Oe��EX����Wo�gS�<"9.�5$"����T5�ca��b�kZD�;����‚��1��ڑ���5�ٿ���Pm�*+�W^��y�n���<=���}��ю��F��`e���O��ܔ����p�[4o|Fv�U�]�����I��
F�I!�!"~:Q��*�����羆�S��إWm;�L&��nj�AB�	~=��y߬�g��������?�=$�$U"ߊ�&�����jt�#Ã�3�����n�ya"v^����;��D����p+�}^Q�C�A%����Ք��D�|=���~w���I0���Y�����m�8v�9�s�QSF�����IOOc�=�`�őL�y<����^����S�3
�{%��f��*�9��ą��<��%32�M3�Ć�z.�a�C�
v���"�$u/�230�ӣ�F�j���%�f�4��SB�.�ՀN>�J@�zh�Y�2:�<��p3���Ȗd�_���P》R��mv7�>^)j�W�Y�z�S�Y�?ޔew�pq�9�O�R)���T3gjr�A�(��2�I�Uv�:%�ڋ�^�NY�c��~1ٍ7�9���~=�a�(N�lj��FW���زbNo��޵�|�$��/�� ���޾A0
�>�_���n(hrX?�k�.�������� ��a��ְ��6��.o]�M��jv��O�ͩ�ɽ#�L�Q]��t��[pg_:"#��Q�"I��_�#*�./��r/H�0N�3���PjN��|��I��Eb��ED"P|�� �)����7�2�	�Ԡ0��Ƅ'�Aǔ�-B����EJ�A��0J�
L��]XT9�C��*c��NM�s5�lQ���#U
�]ێ7�X��d4p�ɖ�9WL� ��������,,D�խ(��3E������'a�R���������d���\�գWl\d��l%
����U՟:QQw��!cY<�(���b�nI�s��ʌ:F��}\�j���A��찺�v��?��{��a�|u
+�)�Rt\��%ׯbi��o_?����V�T{D� �舨h^h����+��&#D���*@]�N��¨�iAt���UaXl��H�V����h��I%�J���mG�A�8�ࣷ�'y�I
���#�1n;NEd)�7>;IU� PH��.�4N#Q��F��O]�u+��xp=�pm#˔����7_�L���:(��r�'m�B��1�T?�*s�Y�34�H�wn�8U��Xt9T�ꎢR�HU����B�I*�x��(5���w?A���)ŏ��y>x�x�~��Cpr_�T�vߩ������D��0�e�JJ�/��ޫI-��o;�np
����Fㄫ�c�M������a���_Z_��0�N!Uoܱ��|5��ױ�tuu�D^f��Ե�F���[��z����x6�t�㶧@Q��AW0n;FEb����j#�c�v�	H@WA�7@]C#��!C��G$���F�t;d(�����RU&.�#/鐉��.:�0�FK�����H]������(�S
�l�~��B��T.�'A"��֪w B�#b/��>�d��a����ݢ�}a�4*�+��ד�<Q���h�Z���h�嬈@\9{�D�!m���qg�k3�Q�L�������F�<e���z���
�@&����tt$��x�ᆏIu�Q<߼x�,*��BrӖ�����I�h�B���s:>�+���gt���]��)}�d�SU�4�ם��������oO2�_=�l��Lz�>&.�O'	v2����J�����߻�A��pé>���Dg�S?K�4��B�Ϙ�V�
�/��I!oGجOu��T�����0*���y+i@i	1��D��k��H;���R��w���
XջPE��	}���Ȱ:m-����3$�'n�B�$����`/%����g��^��+�O��ڎ�_��B��]Q�T�$�,x��;���V�z�-KlG����;�Q7�J����t�y�()�C?]�U �qt�'5�
�JK>��ֺ	����%w=�l
�ed��`5I��7�ʧ$��܃y�2�PBtk?�[��2�y�P�����]K��� �p�E~�MF����E�|�{OWݹ���}��YϪ��i���^�P��õ���S�x�������&�^M�6""����;��1�-���)))���HWttt��?�C�{���M-6Wn^Y��ŕGEYnt��E�.W��'�w��n�����Ÿ�mFf�t���vCFBL����3�M�Kp��zAԚ0�m�X��ڝ|��tY�@t��V�󫃮�;�'�G�� ��m���D&,4D:S^[�t�!����[N�t�,m:ከjh���L�7n;.���ur�9��)r�
u�8�T����R��M��I޸���q�^�>�:��j����^�O<��\..����#󬥵�O����+JH�[[b��"�knv�1-�V����1n;
���a�ɒ*28��g�YBÈ�޶��'�C2�����f��Ǹ����
1�c�TXUU��11�*���7=�v���������$���³N���9m��بpIlnx|v)<�M:�t���>"��6�D0n{s�*���&~pFj�A�s��%%8�/,o�
w�
F��GJ+��.H�W���‚��ָ������
!!!�0� ��.9���޽[��C���$C�H�QtF����#�2���G��Z�>�_
���8��
�?�z~F��K6�H&h'�1u�^+P6Є(���L�m^�B2��+f�?өQV)X6p	T.@����W�UeƓ?��KϒCd��l�;�6١��G���o��?�!��Y҆tAT�J��∌XҢ|Y����H�F������[�^�Iw��!�=?Ym}��2h�H@"�;^1gJb�[���/2'kÚ�W��f��wFJ��É����q܇��z��J���̒��2�'�ڄ�"�^�[���H�@��C�gT�62k�P�bI����-|��Q�(RF�st�G��g�-%���E��P\���7���
Y#z�H�f�-�ΛmD`Y��MO������&�#��E�2fۋ���W$�Ӆf�+'����,�vgS$m���U_]���x|�7�<��C��jD�a� �l2�����z�G�D��1�B�~�z�={���ɳ,X�!|��1�o{
�������U_|����͛��{���n#ihhP�.]�8I�F�;��]��̝;��u��ŏ>�j��o|.`�ʘM�X�V�Hc[
5��C;7D�������4��p��+�)���mL�rɍ#ƽ���I�/���oe�z=�9u�����-v�lb��w_��KF����E!�h����~�o���	Q��Z�b󡲆��N7l�+g��Tc�����/��/q����Ko\�������v4	ʧW}�}��+w͟�7q<�G8
��0sp��Ov�8�������.�2㳭�ZD�=���-n�[�۫�p��8�D�P��+FM��ٶ��Tރg��Zk��N~�U�GP$�Dx"���ܐK'�鹔%3F����PS�6���ˠ���	H��Te�?��8�@^Q��B�͞��wѶAəoa�[Q�L	J�����9O΄��אNp�z�Ko5&����y�C��pA�aۆq�����2���qSx��O?]�:/O�T_�T�J��QC��������G�	�R���΍�
�י��%mF̙�\���Y�e��hvmY>d�_D׼2�:}����[v-���!�W��d�.�k��NB�:�Ȓ�����82��#PET�e�M�
n��~h�R��[���.��N7���@���p���O�0��;4WP"�ɪe�p��ѰW�y�%7]}���H�<$�DI��iE���y�C��dN���'���Y��P!k�%At��px�3`��k��`�C063k���k�Y���|ܺCp�@r;���)v�7&dB�u,�C���~��5Ѳ@�/c�p>$���;YP���?Itҍ��_
�r$tݷ[�(Z^����T�D��?	C�?D,�#/�7����	��Mi���m�2�g�	@':��g�1	�/��k�k`j�z��]�����ږ�s�B���[�W��o���Cp&δ>�J�F�F8�Q6$j���x�9>����|0dYN��̼��{�����}�����{�…�7¾�oB�s={��{뭷</n�_#%ܳ���;�t�x�%K�,%�\3����B@�s���锔�ko��!�D IR��1O=�ԓ��k���!]"p�\���<��3O���z��ӡ+
i�Ax�q�m��b�X��5��a*�Ǐ� Q��ݼz���'rM�<�[(8�i�뮻�
2�V"��u��8�����5%///ӦM?{�lnddd�ԩSG����w��q��RM�DDD����C�ծ"T!�^|�j$����n���"H��[�j�v�^������<��]�L�Ǧ���$�N�>}y���.��	��%��X�-��^+p>E��3�P�Ա-���0������k�3�����2�ō�����/�DAW)7:Ep�4�{Rjț;
p��.�)�NW�@����?*+�����(�Z���'�͔��o�!1�L��'y�$�(@���B]�3���R>QѢ��%�~d�ҩŚ���ֶ�Ɔ��1:�����1�3��I������K�k�����x'gp�jC	Kץ)��ϐ/�H~�f0|SHSF��'K�c(��h3�Z[$�)�ʯ��s��l}e9�7ع�x̏wfC�I`ʌ��y~ބ�y^�^���3AHRn�,����$�L�@��}�;��xR~��V4��u����v��r�PK�}�#�!�[���|~&��ߑ�iֶy��ͻs���67t#�.�t{����!��kk �w �2Ύ��ž�z\{�'�cϽ����6������w8�V{>Tw�a���`�f�	�(�s~�\��������N��a�w��վ��{�7�N�s����2�=��m��	y�U]�Q������k�Aw}p����w̌����g�f�n���j��p��'>9kʲKB�7��� Q�e�Y#2�Omٻ�h�?^��c�,��q`P	��z-d�c�ÐA�uuuǂR��A �^
�����s �;q���fCfm�Z�=�;��Y�2z����@d������G��	8�`�ȁ^�n�c'C�>�Ad|MV q=���~P]YT��7Bc}���c�ۭ��苫��5M۩�����~��j�򄓀m|�G�ne��̶��+����~	w����.��eee�P�x�ȑBZZ���uO<���<�Օ�#�{�w�_�fM���^�\SSb0����T�(..�
r��W��~���N���C��ڣ�`*�z�s�=7�(�&d�D���C�BdT4�=S��WN\p�`6��_|q<i�!�v�Ćt}vvv4�R�Խ����p����O�����iP]]
��a�'G���4iR_��R{hFF=�&�]��`��;�� .��>�,T�ܹS!*�L4�����0t�-,(���L$j*�!;{���B}}}��/����^�k%�F�3�,Y2hڴi�Ϝ9Cw��ӧ��|�޺u�W^y���h{ҍ_�
\��dπ�3�c�'��ڃ+=B7n&��(�!�ݹ�,R�x��� ��b� �ݲe˶t�x�b쩸�uw��6x�ƍWbs������F�3粫���
�� y��4<�䓬��v�>�@A�h?�;n��t�=��{�~��+	��PD����h�wܭS�lq��i ��ya�8$�������wcQ=�����䱹jq<Y�����j����z�Ӓ�P���Fw�N)�5k���v	���?��S{�,p�<�����M�p�yܝu����+�]���m����ii��ݾ8>'�1FQh��
>+]�-�����F�fH�z���!�!���N�-�G!<S+����B����Uϋ ��S��;9O2
���to/���2�u�`���CT��3!��=?����uT�s��0�pl{'�Uض�`Gq6�[��k;WU�k8
�xt�Ɂ�������?�h�~����9��n�.�N�?�����A�����|�A��|�A���L?��k}2K2���� hN�Ts�\F��G�,D��=�Q�&V�Gˠ���"�Fj6��a�'��U�h���m�ʒ�>��CՊv/=?����x�=
z��:�U%�1�~`0���Vr!����-<�ʆ����z���w�ʈ*���^�:�[E��P8�@�� Ѧ�I�=�3/7�Q�EI��%�q�*y�8ť����I�$����@UOq�4��p)ya1�"�1�d�?g�(�ՊU���"������yJ����F�ޛ4��15�&\}��0T�����u�^}�32H����ۿ����Qdp
���7��c����O�&�O���jr'�6���z-���6$=&d��њ����l�d�3�q���-ڨ]A���k�=.�2���pl�8����)����Q��e�I��q�Q:�����Ŝ�}�ƹv��{���?+*��U��c=R�������j�W��ʤ�3x�؃"�F3ɳ�5�!��z���5I���$���;�[�)�јO���X��B;�[��;�pߚu��R��F��;��W?.��@7,�cP�L�w��4{k�d�L�n0��u4U���ڴI'Q}D��h`P��*6�� ��4��6%��V0���K�wx饗z�qqJwI��<�:m�JJ����)D�~���}<C�t��NI�y��:��tD��;nY���̺��މ�TU�����>�]U� >:5��{�
�P��U���v���o�����999�&?�h���D��rv@K�����
y�v��a�ߨ{��3�<�]Sƭʫ��y�S_?���F�c��-�cǎe<~����
����%����Q�2�H��)�X�8��H��@u�h��v��sR��B�qc%e&'>[H�

�Ks�HAss�v
��/\'���a��噗�C����������u�����?��S�F�QC�ݶ!���C��~o���B$p�|��3(w�†��ߪ��t9�UC���Y5�to�GfHmsd ü�޽W���������w��W����;
�RY輊Ͻ���L�"U��4�|�3����4��W�g*Ԃ�Jv.P�5~��O�V+n����+w����
�!�5$�7�v"����{�a��:�۝]�w�j�l�G}~hY̮q�Yˎl?7���m�8g�*�ݨN��^��yS�c��D�y6L4�!�!�m?��?�,[�,S�Q:�.�|	������i�F2PQ<������@��A\���(Xm���?|�"'�{ �6�E��w�<�G1�aaaJ�޽W��/_ΰn��A�G��k!�v��%��\
|rX�w4>|��w�0�{�"�|(\7�azG�4a��D��������#�ʄ	|g<",��,�^X��l�ȯ���$C4ߤ�MH��---^7<�QI)@�,h�^���]>{���dܧ֋���w�n����ӻե��'��y߰a���G�J�#�����U��D���@ڵ�S��gU���Q�h ��p�2�7� <Q����&H�k�O�D*1&j�T
V˓�á+::����3�PXR�Ƞ��{)�2��e�~�K����	��2�(CY��^X<�m(++:��`

�='��@�r�EoR҈�v.;�V",�PJ֯��K����"�b@iS��wj�!����`��2�J�BϞ=�mդx
2�k�����|��@��mg�3���퀖��.L���B��Ae˖-0m�4�"�)!�4�L�ʢ��,�f!��̘1#�a���t��s�&d=�	"n��B�x�9�ٚA��CK�'���FvD�y�Ž�{t���v◟]���^����ùBC��S&gF��:E���U�=�����k����)~"M�����7<uE��k��z�Ԏ�p^oD��&Kt�܉L��zT�WI��~i��Aa��.�!F?Ub�-��l���%��4;�qV���Þ"=�%=�Da���-��<<����Bͤd=��
5�n�4�
����oq�>{��W�d��s�	H]Ut�8�9����ν�jM�;8��26"��y,k4��^+���`"�	I��"cWY�Sq	n�d��E���6�d1���J�����Q�ҷ�(�����#���Džk��t4���
�~����������
�q�4��8ߞ(*Gog"�2`�}�CL�h�;��6Cc�o��
��_0�66T�|�KKK�%%%�?�d�R;+������2�p��tY�]�?&�/��q����=uYF�yeRL���w��;lHD��ե(�:i�7��qaY�"�1��L�%1��򮟪���g��g|��0�E��d���)椡�a�����
q�p�n��6��>=BOTX��Wش�}%��c�9EMU�-�)	a�W�L�F�����X�1.� ,��U�����ԯ���g�<����5s�8U�,/X}S�#-�r�(�g$V�t"Gkyl�_r��t"�ղx �?HC�>L��J��D�s��9r����غ��^�v�aƔa�����tK>|�l�������>[ڈ��XiS�U �+���&�I�ָ4�_5��j�3S���W�{i�3���eE�&��ʴީI�%%�>VV]p�(h��_sz
�L��'5�����,b�z�����ĝ'J�O枩r��"�����~�=]V�q�Κ���<n���AGJ��ᓸ]т��f����'��笧�/ qV��L��
k��U��׽p��i#���|Y��o6�x������l3�v�&�?J!!!��ƭ�yQs#�t�a��r���a;v�Z__�v*`TWW�r�ԩ��֭�**�kذa�]Z{ɬ_�~(y'��8�+
�K'??����z�´U8�D@R�I9�c���I�s��s���g�)��9G�iEEE��4�^xAFK?ѓ�U�V�'Njjj�Nˠ��"qD���������r���={�E��N�ӧO#;V�~ɓ�6��
���q�Ư;E��/�P�sssqDlj�1��?iR�d��{NY�h���А�7SU�o�᮹�����+))I"5���(�]-�^��O�p��u����d�ʜKh#�.M3�e�
�u�����N�e��9FC��ѽ{�E$E�&�6qiw5X��j���܎7�>g˺vج[�7sl�х��6��&��0:}&*��lɾS6Ѻԋ�󒭏��Z����dQ
E��xd�30&q"l-ZO
�����"�Z�҆���ԨmW �$����K�!.�I$��_��g|��DI���0��ĸ��!1�6��H#���M}тU]W��s�#*��l�F����T���n;�u�k�g�G��s�ޥl�c����2R�����(�<͚G���8
�yNUE`z�*a����^�Ė[\��e��ʉ4�B�u���_�݉>O�U!D���Ƈ�-�T���
ZL��{ޔ
f�x�]���܄0�^V�,[SSW]@Hw���N���g|�AQ$gKSK�5��o]8�d�-�Գ�>���+[��@�њY�mw9�N����ť��;�oHx��TuFNo�v��i��1Dϛ��ĩ.��.��=�[x<?��K{�)mה�,�dK�&�co����*����74�[����ˑ�:�K0$&��z¹x
���h;�k�A�u�]wEEDD�$	-sh�����"�2��Z�]" JFZZ��ac���ߧo��0}�(JM�gO���Ӊ���_>���b���c��fͼ�ORSSE��X�%��a�q	�I�}�J�
�A��wȮI�`Ą���a�Nϰ~J�966���I�c�K��t��L͢���!�0�����'�u��Z�^��V<�IRThx�8�vA��:���,X;�Y�E+���*�
NVq�KzG��2�⳧+1^�t:���|]�)�']{�<�N[k��y����`;�s��p�
�۷_�2u�K?l��u�n��}��bݳy�֯/��b\�:�]C�馛����]���.�d��D���p[4�cY�O	�W�+	�����K�<���BuԨq�y�w͛7o�sϽ����V�3�wA;F��׵�^�Pu�E����?"?��oo4�N3� ����K[ {�h˯�w1���\;�+V��E�҅�/\���];l��^E����o%��w����$��ì�z��W���ζ����{�S����'dYV���<y���~�G�a
�8]*up��w-O��#E�Ky�Csrr�������'O�����'�p:�c�l�D�`��ÇkD��W�7R��9s�cq^c� E@Ra��nܸ��"��p����?��Mޗ%���H)4����L��faǎ0z�h:���Q@�㍌s��>�	JJJ<��PPPh�<����;��ीp���:+�}��Aj���sвPWWg%z�i,y*Xy��
��1�G8�333���@s)�]ǎ{皇����Lj�W�C�鬉#�|����yk��z#����NM�$��Z��U�a$�T[<r �g��s�:�LP��n
����#]�i�JF�ػ�B�w��th��T"��b�܋�(�5?�uJA�p�V�@�[%Q<n��K��.��y#�����A����.�ο�s�]�q%�jgۺ�.��C=Yp��7�z������" ��.FQ�'�:;�ޮB�[;ݺ��)�DQ��o6�,�+x"<�?�1��9��C'�{fJ�:qw&B��|�m����Ͼ��"����c�~�e9���GI��>�<G�奟�ywZ"
�a�c�֔<�*�U��u�����ծ�6�����eM�.�b�^�T��U���○��|&������t�3�4�u�w�w�H�Y�*�k�%gc�g|�-Ӗ��SD<3#;�t+`�jZZ6��om��ċ_>0��D�n��vU����6jChn�C��ؤ���Y��(���;�S�Ƴ��>;@
�#�$d�
{s*r�T��K���ާ��酏n;�&�^�؝�<u�y1'a"6VODuv����:�v*��w�D��f���E�TF�B_�’�4��h�<yf��hZ\�Y�Y�V��#wՔ#<L�Cf
��:~Ў���I"���К�������Bkv�%�s{�U�s�z��^)���F�*��������TPno��]���/ZQ2'̤{aָ��6�LWu�����9n��O�[�s���eg�zn��)�Ú�`sI��*[eM��z�&D#{%���!�1.>Vo-;�rK�-�S�-��������*+46�]��̫�m}�Т�#0�3�k"ߪ�[!+9$a|�@p��F�r�6�N�4V���Ƒ%����TIS����p]4��.Wo���)�PY�Ғ��_��|WQ�܂ǍqJa(����V����s `�?�$a�'.��[��~.���Ȣp�a�F!��
��l%.�Ntthd��k[\��c�D�QV�x�����'9I~'�e��N5��1�dt��^Y$�74��{|<Q7hn��Ֆ���[�����:��g2.q�}��o���!��
�
��
����aY_p�~k�ȃ��;����L/����!Mlj��<���z�ts���|�3b�p����P/�b�����x�fȜY�:����9]��e5G���93��e'1:lD�8~HR��2�rz�v���l��t�-�I�B�1�A�D�k��M� ������*�?�8?0�^�3>ap��c~`�`�n������pʹ�a��N�9;�F�k�5�ˏ�9�`Ǿ��?@^�<yG;~�}�:���Ac%����q����;��+�g �h�hǾ��������W �@������%}��SaC����c�
F��y�bq����=�DZ�c�G`����G �@���y�� �)<YR��C���Ͳ�,�N��_e㢦'L�QԪ7�W#0�|��gv��c�M}&K:f!������cձ���!''G�r!�n�on\�S��tn����j_�p�8s���.'�JT�U��U���Vת���ZTd#j�)a�_���2�+;��h#�п�F~7 ���P��m��3��W�o�zК��N6��$��|M{ɤ��X#l2��,���Dt�Mv�xF��smOc�!q�����k����]p�N���fQ�h0��pM�����j�i�I(h.�U'lW�[�:�؅C��x���Ց������S6F�)h�>f�`�!w%�o����[�� 겊+���D`��o�2�b�p���[�A�ˆ�v%U��@��5a|�0$@��$�x�n�<	���j�~m�����j�p'�&Z=�J��?:�.�r[���Ӧ1�u��|'�n��v�'����>��c��sԑ�9�E��?�8$�H��oRw�}iii�+V�(q�ݑ�^�G���mo���Z"����N'����[���r�(�/It�|�op�?�7��C_�x�}Y��K�Z
�
���#//O������Q��+c�o�d@7���^�����1Q�έ��#�y���o��[)֟�s�����[�yGO��?�݇�t�Lőaw.R������V�]ֻ��P�-��vM]���Ưr��s��^0-��� �W��ziii�߼w��Yd8[}*N[,_��}���5V,zt~]ss��裏���{�~;�˸nW���PQQ�.Y�D3a��c���^�;�}u�?��L�?�:iژ�����n666��x���IWǎ�޿x����o���r���ښ������"��lł��x�:7��6��g��?m��N�

����;jjj\�P.`���mz�!�t��7ͺ��g�]4�AtBƿ���_s�5#�c�5g��Շ|���������_"ڌЍ�7C7:���a=WG?z睿=��P����{&��g�,��qR�MⱠ�j����XHO��WSS���փ �P�m���0>�"�b|zz:���C �$/���OIC��-q)))Y�.,�L��n���3ʴ��<���]�"0�r#�SÂ�c��@�6 QQq&������̓� �eI�lso��S
�_.�[��Ka|�v��СC%����߿�8���W�[�0�v�f6�G�<���RP)����4rm6�o��6���'��y~ڟ4��k��닸�pJԚv]�X��<S���a	8kۗ�_����
����m�<�{�Qg:�]��4Y`a�<�c�k��V8�#��3π3���_�0�LP�LVտvKF:�2�X��6\�q�s���ԩC�v,"�x��pH�
���{_BZMz��?��%O�����.�
nU(i�᪾�m�,�ɌN��m�@V���2�O|n����o^Hb,J�>+m�
p�r��"��|V�6s�,E���)ɏ@�<���	t���q�>��;̶�@Ă� �g�,4��	�-�;	q��!?�
B@8��c�ZP=+.� 8Xr%'OARF:���$~��2��4$U��3C����ke�n�8�����J��B y�����I��<�W�&�,i�-��JJ�d�SI��r�oJ>{���4k"�/���($0($�c>�cF��א��H�76:h|/��V�a#�����Й�w�1��Vx�z��|继��= �;<��
��B}���3n�O	D,�]�F��]��l�iL���5�"�n��[8bXJ�>Y��f����<6�۞_X_{�Xe��)��sgnn���aft���'%mƽS-�6�z=�z�m�#�-���6��8��&���?�����v���H��^������q
0g[����K�C>qY��Ay��A�}[[�f��A�/���on���'+�/��*K����m7�����<N" z�����q8�#Y��G�R
�B(6�����(���1�>��/7�J�`v:��(�R(���"1��0N�yP��{�������Gי%o���v�̣G�c��d��������'j�#��.$\ �^Q�X��]�a��@yY㤘���晘���P���g��(�K�Y�����!��u�p@$H��>���@z������5$6�KC̦�N�:8$,҄-�Z������Y��'w�|�e�?��ܷ1HwVm��J��T�y�)��I፦�����;\S���c��ï��/ml۔���l�`���<����<R5��y������|�IYDм��̷�EW���W�RC���T_��}��S�7�*��~;��ƍ�NsӲ
-��|+�n=RMݻ�����Y0n�3�*��䢰K�/L�Z�(�@��Lz3\�8"��C��f�^�_������y;/�tK⮱���z��=�����%� �P#%c{L����/�%��SQ���"�󒙬��1�(�x<Dz
�@��iI��@�.�<��Jr�0�o��7O��2D�CE��$������K��AEk1L�}1��f�۝���J{)kf&φ;,&�,\�qLL�N��+�*[� *�(N5��	�qs
�qa0&a��#ੑ/C�1��:�:�m8f�Y;fE�P$��Qɡ�dD���G�v�J�U�U�_�SuGha&��A}K5������tN�lO�VH
Ii�u�*x��sp�1><�:��?JzFMjx�?�-i���A�%��e��kz�D�]�4�Z
�.��Po����鉀11�R8T�6������Ŗ߬�A������JO�J2���Ӧ��M8��ܳb�����@��x�:;�1J�U�mה3^I�Jq�og��M�9`)�Xj��ƣ[�ة�j�e�-]^�]��)���,2��H
�խ&`�e�OI�Q�Ne�l~a���͸�2�B[�@�aÆE����\����#����M"Y2�����w|s��і�w�
-�nWLjj����ˣRRRί�PT��n�"h�����l���o	��.���Z		i��颌F#������&�( �Q�H�{��泝�O��U%�z����_[��������A��o�3��LdD����a���ү|G������DWQAT��Qg�|{��@$h����ҭ��.m+$?Y���]�-���&2�+�~I�q=�cTz�=���u�B�� =�.�f�J�/S�`��f��ڭm�M~��
�9k��	b��g`b&�::p�����d����1p�E=Ș0wt�r$��Q	=�S!\(�+͓�����4�����_|1��(�z���;�
��<���Ν;��[��L���^+J�j��F��w��ĆH4�g��e?�0I�
pS�?���K*/y�n[n}�;ꌨ'�D�l<\��Q#��n��V$S�ƒ��kjj�T�G�Be����L�5�8q��(᳴H�����	Y�!P\c��z?~�&�H��k�iyx�����y࣓�%Q&Ȋ	���+N	��48��=aLͰ��9M	��؂d�~��3�݁x�u޼y�ta�w���D�ы*,�A������
�d�;�̅Q���Q]k�����4D�mI����-Uoʥ����$j
�h�Q>�L���g@Г����(��<Ub��iH�Ph�݂X���R��	�5�<��I��y�{�ffw�dP��t�~�6��Sh�;��d�����Y��Eg=�\�B���Q�Z�£IF`34�j���公B0�=��t�Fs�0�L���� c�ş	�T�+��D-l�&K�Tڽ�L������ΐg������6zP-�M˽�f4�p�3q���K~�x�~ڎ j��]j~�v��7#����/hV:��Y/u��0D�8�����"��Ǻ�]���(q���XH)���"�Da	���p�2Cln�v�t�lMbu��k]h^�E�2:
��2P3j��ťs�W]�K.����-����4v)�C
)\�A�{����a�u�&���.��CAgz*���΄���ɇ;��y$����N���	N�cƟ�}_gh=�5
��I�ܵ>>B�ũK,9LL�&ET��{���YK&�����:;�M��G�!�'�p�2���D7{�i"
Kz
��Hs͊���l�8��Ƽ�e6@YA�r��5|��@V��"�s�"n��ֱ���΃Z�9�$%�j@�E����ކ��|_y�$�Z?̌d6����3��d{��
��HH������UY��n����Y�0�XBؠ��`*��l}(�
����X�,LGi�����'��"?�i�
�H
��"��S)ֲ`�^E;��ƨ+TB4�O����7��`�?N�5q�փm�v���,�_�#��g����؃%�W�8��Ά�G�/@m�Յ5ğ�X��9�~�CA�~}�]�/�}m�%���IEND�B`�lib/themes/light/images/16px/search.png000064400000001213147361034410013724 0ustar00�PNG


IHDR�a	pHYs��=IDATxڕS�OA�����/z.��p!1F&&zP��R��;;�����mSii-�Z�$���d����HbPI��&妉<�o���-6�d33��޷D�4�?0���D�2QU��~_��N24q8����uN	gJ{�W(Ig�����+�>N��\)�MG�`�;���U�a��éЋ/���5�Nn�����*���Ũ�d�N�=+
1���O?Ծ?����'�Z�a�"�v^��tanLg�!��&vo��{fc�snĖ�Q��������/��|�I��X�I}|m�YlL�2���|qAY����a�g�,�@�������6$�D�Q��>�N�W�^��r\q�
x�BFf槱���F��Y:�K.���F36F�-������:��t%�h6o�~r_.��;=��-m4���ķ{����1?8%�ç�#h�rr"oOer}3t��)�	R�,��>�~���4AD#Pۭ=!�&�:���8{Yl.*��
U���B%.�޾A�`w)���亀�c�S��{k�a�Ȼ<(�CX�8��A&ؘ�d-RIEND�B`�lib/themes/light/images/16px/rename.png000064400000002720147361034410013732 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:E8C41748206411E8B789D66168141B7C" xmpMM:DocumentID="xmp.did:E8C41749206411E8B789D66168141B7C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E8C41746206411E8B789D66168141B7C" stRef:documentID="xmp.did:E8C41747206411E8B789D66168141B7C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��zu@IDATxڤS=hQ�������wIca�Q!B"�TD;��F-l���?�]��Vb#����h!�����b<���};��^�	�Mv�c���f�=��C��ǻ3���*�)^�G��5��	8��� ��������g!s[s״�if��:�oR�8��2ta|�V��ݎ�=|z8��h��9�xr-6V��t�D�vo�*��Ї@�%�d##���2^r"��,@�%
�KB��	�T&o�2:|���cP�R��P�~��C+4IH3��PQ�ևd���
��r9�f��f�g M�i�֛Ƨ9 ���Ӄ��$�Fk���={Q��I��j닮���b
Z$�2��$6����/\�;=%k\_�
��|SX��>? ����I)�ŁM�So�s��-�yE���{�]��7N€Y
ZV��&�1Xv�{w.�/|{�=q䲯E��	�y���4��9hw�U=q��V�၁T��%�N��A>�B�C�ΥЋ�2�� ���6���O?�i�p΂�ߓ�ag�2YYK��=v͔e!�pl[X�Z���n�"���z�0e1�B>+�IEND�B`�lib/themes/light/images/16px/clear_folder.svg000064400000005657147361034410015133 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>clear_folder</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M6.78619658,1.97727273 L2.72727273,1.97727273 C2.22519568,1.97727273 1.81818182,2.4012455 1.81818182,2.92424242 L1.81818182,16.1818182 C1.81818182,16.7048151 2.22519568,17.1287879 2.72727273,17.1287879 L17.2727273,17.1287879 C17.7748043,17.1287879 18.1818182,16.7048151 18.1818182,16.1818182 L18.1818182,5.76515152 C18.1818182,5.24215459 17.7748043,4.81818182 17.2727273,4.81818182 L9.09090909,4.81818182 C8.78695165,4.81818182 8.50310499,4.65994211 8.33449973,4.3964964 L6.78619658,1.97727273 Z M9.57743978,2.92424242 L17.2727273,2.92424242 C18.7789584,2.92424242 20,4.19616075 20,5.76515152 L20,16.1818182 C20,17.7508089 18.7789584,19.0227273 17.2727273,19.0227273 L2.72727273,19.0227273 C1.22104159,19.0227273 0,17.7508089 0,16.1818182 L0,2.92424242 C-2.01858732e-16,1.35525166 1.22104159,0.0833333333 2.72727273,0.0833333333 L7.27272727,0.0833333333 C7.57668472,0.0833333333 7.86053138,0.241573045 8.02913663,0.505018754 L9.57743978,2.92424242 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1225.000000, -26.000000)">
            <g id="folder" transform="translate(1217.000000, 18.000000)">
                <g id="clear_folder" transform="translate(8.000000, 8.000000)">
                    <path d="M8.74625688,8.52441813 C8.74625688,8.02468754 9.13869217,7.63157895 9.63751734,7.63157895 C9.81543165,7.63157895 9.99419151,7.6912733 10.1363643,7.78678338 C10.3738565,7.94198781 10.5287996,8.21571644 10.5287996,8.52442686 L10.5287996,10.1071654 L12.1087395,10.1071654 C12.5956661,10.1071654 13,10.5122373 13,11.0000046 C13,11.4877719 12.5956443,11.8928438 12.1087395,11.8928438 L10.5287996,11.8928438 L10.5287996,13.4755819 C10.5287996,13.9753125 10.1244439,14.3684211 9.63753913,14.3684211 C9.13869217,14.3684211 8.74627867,13.9752906 8.74627867,13.4755819 L8.74627867,11.8928438 L7.15441836,11.8928438 C6.91692615,11.8928438 6.69133251,11.7973337 6.52449086,11.6310479 C6.36956086,11.4647577 6.26315789,11.249859 6.26315789,11.0000046 C6.26315789,10.5122155 6.66751356,10.1071654 7.15441836,10.1071654 L8.74627867,10.1071654 L8.74625688,8.52441813 Z" id="Fill-1" fill="#8591B0" transform="translate(9.631579, 11.000000) rotate(45.000000) translate(-9.631579, -11.000000) "></path>
                    <mask id="mask-2" fill="white">
                        <use xlink:href="#path-1"></use>
                    </mask>
                    <use id="Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/arrow_down.png000064400000000345147361034410014645 0ustar00�PNG


IHDR���	pHYs.#.#x�?v�IDATx�U��
� �Ǥ����Q$�����9��P|��J�V�����9���'�d��b�8��=b1��c۶˺�ϜsX����}7��gY���
�R�M<�F
��!���ɢȻ��Z��r��ɓ���T/�ǭd�V7~��/PF]���IEND�B`�lib/themes/light/images/16px/duplicate.png000064400000002653147361034410014442 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:2517F42F206311E8869EB41DF35937A8" xmpMM:DocumentID="xmp.did:2517F430206311E8869EB41DF35937A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:2517F42D206311E8869EB41DF35937A8" stRef:documentID="xmp.did:2517F42E206311E8869EB41DF35937A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>r0IDATxڤ�?hQ�g�{�w�;CD�*�$E�4jR(h)b!��@E$X�M*K�4Z&"����`��4!D""b��#����7��]nϋ����7���7��{���4��'�4(�����jT)+T�l�N�G�Y�H�؝��RP�!���}*��\��n�nPH�E){�h�_p�<!�.��Zi�Y�p=Π�h<��N��T���E0Z�Dj@����g�}�AҢ�E?�§g�O}����6�CmХ?����m ~��sI��pX@�T��o�租��X��+S�~
P�jcA!W��&=q�m��I�6�������������w�*��>2{@l��h�KZ��2e�j��-+��S�Q��n_��u:�;7��g͞#�m@]�d��|���2��L�W�|�\�����n"8�o�+������@���M����i��b��G����6��}�h3.6�;_ف��ӏH��>9�`-��nFN^{�za2�)�&�<%�~��c�0�P�X��IEND�B`�lib/themes/light/images/16px/help.png000064400000003315147361034410013414 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:96D5840E206211E89A85CFDC7B8FB1F0" xmpMM:DocumentID="xmp.did:96D5840F206211E89A85CFDC7B8FB1F0"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:96D5840C206211E89A85CFDC7B8FB1F0" stRef:documentID="xmp.did:96D5840D206211E89A85CFDC7B8FB1F0"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>9L�=IDATxڜS]h\E���ν�{�&��&�/)%�j�4
VAT|��b냴}��>m�/B�ǖ
BDE���Ci��?�����$l�����ݻw����_=�̜��|�|g��333�����8����/=B��M�ڤ��"��:1�������uw@)�J�GA0�(o�:`�V�5dd�g\����]�����C$�4��Yƙ'�pO�/��Z2k��t�g��ÙV����*!��-���>?�A�:����6��� ȿ�Vka��F�;��Ӥ�X�8�}�\�g=�A
9�^!�~)[��l+}أ��8�
6��zߕj;�J\9�8Oؤ�!壎�c����Ok������U.mC�B��tޒMS�h�_��̧V�,������R��s���[��@�	���8���==�mq����@����52�U�ÉTe���N���^:y��x��T�%�$Tm�Ȁ�:DeC�]��`�;y�L~`,F�1��v�9`�Yj��0�[�~ɷ�(�i��#�&Η�W�ǟ�Q��oK��U9�ӽ�-���&`�����֖{�r3��9v8��~��'�lƨ�ɍ�@�~7n����M�Au:����G�I��/~�U\\�j��|%i��o�xN�+�~k��jM���F#��\t�k'�{��wX��{*ۺ����u����fu�qxq���H�]�š�#�
Zc�Qƞ�B~!0MI��v��k�/��N���]�� �[m>�i��1:���o,:S,Pש�~��t�})�=�F�^9������8�T!
/V�9�q�7����?�_��I*+�IEND�B`�lib/themes/light/images/16px/copy.png000064400000002636147361034410013443 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:E5A5886E206211E89762BF94ACEB40DB" xmpMM:DocumentID="xmp.did:E5A5886F206211E89762BF94ACEB40DB"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E5A5886C206211E89762BF94ACEB40DB" stRef:documentID="xmp.did:E5A5886D206211E89762BF94ACEB40DB"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��eIDATxڤ�=hA�ߛ����q�T���-D���:��H�,��BA-�R��V!H
�D��B+mbb�x�B�&����<�3;�w�|pý����Ǽe��1�[��`5m&:Al�i�yn�pgooltdz���6�I�~N�珗bզ"
U��_�U�8���J�h�A3I.��'�O,�)˴��ΰ�� &��S��_��/aˡ���-l����{(h��hw[(�o���5qfUߍ��X���	���@��]����A<%d�!�q8��_��g����&@H{'�7�]3���qd�>��~nTCiG�ps�$��P�#��Lj$R<��iu�/���]�[D�p'�7bC�6F"�}�[]��X[8{���P�q|�Y�Q]�A<d�����K�{������!@�+t���iw��C��/#��
xnq:1%�;��mVV۶�	%�gHP�TI�L��b��p�/�X
��ٽ�J^��j�/-����CW�}_���2�Z�H����xEb�0/���7RYIEND�B`�lib/themes/light/images/16px/info.svg000064400000007136147361034410013437 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>info</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-378.000000, -26.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="info" transform="translate(271.000000, 0.000000)">
                            <path d="M17.5,27 C22.7468068,27 27,22.7468068 27,17.5 C27,12.2531932 22.7468068,8 17.5,8 C12.2531932,8 8,12.2531932 8,17.5 C8,22.7468068 12.2531932,27 17.5,27 Z M17.5,25.1904762 C21.7474927,25.1904762 25.1904762,21.7474927 25.1904762,17.5 C25.1904762,13.2525073 21.7474927,9.80952381 17.5,9.80952381 C13.2525073,9.80952381 9.80952381,13.2525073 9.80952381,17.5 C9.80952381,21.7474927 13.2525073,25.1904762 17.5,25.1904762 Z M18.8571429,12.9788369 C18.8571429,13.3543583 18.7250037,13.6741917 18.4598286,13.9375 C18.1955548,14.2016905 17.8769713,14.3333333 17.5040779,14.3333333 C17.1302809,14.3333333 16.8107937,14.2016837 16.5429054,13.9375 C16.2759208,13.6741917 16.1428571,13.3543583 16.1428571,12.9788369 C16.1428571,12.6051024 16.2759023,12.2843643 16.5429054,12.0184095 C16.8098901,11.7515726 17.130304,11.6190476 17.5040779,11.6190476 C17.8769713,11.6190476 18.1955548,11.7524638 18.4598286,12.0184095 C18.725006,12.2843643 18.8571429,12.6051024 18.8571429,12.9788369 Z M18.8571429,21.9201441 C18.4793279,22.1017803 18.1763797,22.2388606 17.9508761,22.3339645 C17.7253945,22.4290662 17.4637575,22.4761905 17.1651057,22.4761905 C16.706387,22.4761905 16.3500759,22.3408188 16.095313,22.0700688 C15.8414314,21.799321 15.7140389,21.4548983 15.7140389,21.0385117 C15.7140389,20.8765807 15.7235064,20.7112192 15.7424412,20.5415851 C15.7622353,20.3727998 15.7923582,20.1817432 15.8345308,19.9683955 L16.3078791,17.940397 C16.3500517,17.7467654 16.3861983,17.5625476 16.4146006,17.3877811 C16.443862,17.2155676 16.4576324,17.0562115 16.4576324,16.913117 C16.4576324,16.6535114 16.4137391,16.4727351 16.3250931,16.370766 C16.2373065,16.26881 16.0686117,16.2174022 15.8190265,16.2174022 C15.6968139,16.2174022 15.5711598,16.2413931 15.4429301,16.2876575 C15.3138323,16.3330666 15.2380952,15.7941525 15.2380952,15.7941525 C15.5479176,15.6407887 15.8448509,15.5105517 16.1280138,15.4017393 C16.4111767,15.2929291 16.6788287,15.2380952 16.9327103,15.2380952 C17.3879918,15.2380952 17.7391473,15.3717539 17.9861327,15.6382072 C18.2322808,15.904656 18.3562142,16.249956 18.3562142,16.6766294 C18.3562142,16.7640215 18.3476083,16.9199603 18.3303942,17.1418621 C18.3131801,17.3637638 18.2813364,17.5676801 18.2357223,17.7536108 L17.7640926,19.7738887 C17.7253637,19.9358198 17.6909378,20.121733 17.6608148,20.3299482 C17.6298326,20.5372883 17.6143393,20.6957999 17.6143393,20.8020241 C17.6143393,21.0702057 17.6642563,21.2535483 17.7632311,21.3512184 C17.8630652,21.4480353 18.0343422,21.4968704 18.2787498,21.4968704 C18.3932157,21.4968704 18.5240387,21.4720241 18.6686166,21.4240444 C18.8132055,21.3752071 18.8570988,21.9201156 18.8570988,21.9201156 L18.8571429,21.9201441 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/open.svg000064400000003746147361034410013450 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="18px" viewBox="0 0 20 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>open</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-266.000000, -26.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="open" transform="translate(158.000000, 0.000000)">
                            <path d="M9.800016,25.99994 L24.200016,25.99994 C24.544556,26.0007212 24.850796,25.7804 24.960176,25.45384 L28.160176,15.85384 C28.241426,15.6093 28.2008,15.34134 28.05002,15.13196 C27.90002,14.92336 27.65784,14.79914 27.40002,14.79992 L25.00002,14.79992 L25.00002,12.39992 C25.00002,11.9757 24.83127,11.56868 24.53126,11.26868 C24.23125,10.96868 23.82422,10.79992 23.40002,10.79992 L18.25782,10.79992 L16.92032,8.76172 C16.771882,8.53594 16.52032,8.4 16.25,8.4 L10.6,8.4 C9.7163998,8.4 9,9.1164 9,10 L9,25.2 C9,25.4125 9.084376,25.61562 9.23438,25.76562 C9.384384,25.91562 9.5875,26 9.8,26 L9.800016,25.99994 Z M26.289816,16.39994 L23.624216,24.39994 L12.510216,24.39994 L15.175816,16.39994 L26.289816,16.39994 Z M10.5999962,9.99994 L15.818016,9.99994 L17.156296,12.03814 C17.303952,12.26392 17.556296,12.39986 17.825836,12.39986 L23.400036,12.39986 L23.400036,14.79986 L14.600036,14.79986 C14.256276,14.79986 13.950816,15.02018 13.842216,15.34596 L10.824216,24.39996 L10.5999962,24.39996 L10.5999962,9.99994 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/view-list.svg000064400000003152147361034410014421 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="15px" viewBox="0 0 18 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Page 1</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-853.000000, -28.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="view" transform="translate(745.000000, 0.000000)">
                            <path d="M14.1988335,16.3986714 L26.3299999,16.3986714 L26.3299999,18.1321497 L14.1988335,18.1321497 L14.1988335,16.3986714 Z M14.1988335,10.33392 L26.3299999,10.33392 L26.3299999,12.0665873 L14.1988335,12.0665873 L14.1988335,10.33392 Z M14.1988335,22.4642546 L26.3299999,22.4642546 L26.3299999,24.1969219 L14.1988335,24.1969219 L14.1988335,22.4642546 Z M9,16.3986714 L11.5994166,16.3986714 L11.5994166,18.1321497 L9,18.1321497 L9,16.3986714 Z M9,10.33392 L11.5994166,10.33392 L11.5994166,12.0665873 L9,12.0665873 L9,10.33392 Z M9,22.4642546 L11.5994166,22.4642546 L11.5994166,24.1969219 L9,24.1969219 L9,22.4642546 Z" id="Page-1"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/view.svg000064400000015520147361034410013452 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="17px" viewBox="0 0 17 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>tumblnails</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-853.000000, -26.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="view" transform="translate(745.000000, 0.000000)">
                            <g id="tumblnails" transform="translate(9.000000, 8.000000)">
                                <path d="M3.54166667,0 L0.708333333,0 C0.316819792,0 0,0.316819792 0,0.708333333 L0,3.54166667 C0,3.72981771 0.0747079167,3.90966354 0.207523958,4.04247604 C0.34034,4.17528854 0.520182292,4.25 0.708333333,4.25 L3.54166667,4.25 C3.72981771,4.25 3.90966354,4.17529208 4.04247604,4.04247604 C4.17528854,3.90966 4.25,3.72981771 4.25,3.54166667 L4.25,0.708333333 C4.25,0.520182292 4.17529208,0.340336458 4.04247604,0.207523958 C3.90966,0.0747114583 3.72981771,0 3.54166667,0 Z M2.83333333,2.83333333 L1.41666667,2.83333333 L1.41666667,1.41666667 L2.83333333,1.41666667 L2.83333333,2.83333333 Z" id="Fill-1"></path>
                                <path d="M7.08333333,4.25 L9.91666667,4.25 C10.1048177,4.25 10.2846635,4.17529208 10.417476,4.04247604 C10.5502885,3.90966 10.625,3.72981771 10.625,3.54166667 L10.625,0.708333333 C10.625,0.520182292 10.5502921,0.340336458 10.417476,0.207523958 C10.28466,0.0747114583 10.1048177,0 9.91666667,0 L7.08333333,0 C6.69181979,0 6.375,0.316819792 6.375,0.708333333 L6.375,3.54166667 C6.375,3.72981771 6.44970792,3.90966354 6.58252396,4.04247604 C6.71534,4.17528854 6.89518229,4.25 7.08333333,4.25 Z M7.79166667,1.41666667 L9.20833333,1.41666667 L9.20833333,2.83333333 L7.79166667,2.83333333 L7.79166667,1.41666667 Z" id="Fill-2"></path>
                                <path d="M16.2916667,0 L13.4583333,0 C13.0668198,0 12.75,0.316819792 12.75,0.708333333 L12.75,3.54166667 C12.75,3.72981771 12.8247079,3.90966354 12.957524,4.04247604 C13.09034,4.17528854 13.2701823,4.25 13.4583333,4.25 L16.2916667,4.25 C16.4798177,4.25 16.6596635,4.17529208 16.792476,4.04247604 C16.9252885,3.90966 17,3.72981771 17,3.54166667 L17,0.708333333 C17,0.520182292 16.9252921,0.340336458 16.792476,0.207523958 C16.65966,0.0747114583 16.4798177,0 16.2916667,0 Z M15.5833333,2.83333333 L14.1666667,2.83333333 L14.1666667,1.41666667 L15.5833333,1.41666667 L15.5833333,2.83333333 Z" id="Fill-3"></path>
                                <path d="M0.708333333,10.625 L3.54166667,10.625 C3.72981771,10.625 3.90966354,10.5502921 4.04247604,10.417476 C4.17528854,10.28466 4.25,10.1048177 4.25,9.91666667 L4.25,7.08333333 C4.25,6.89518229 4.17529208,6.71533646 4.04247604,6.58252396 C3.90966,6.44971146 3.72981771,6.375 3.54166667,6.375 L0.708333333,6.375 C0.316819792,6.375 0,6.69181979 0,7.08333333 L0,9.91666667 C0,10.1048177 0.0747079167,10.2846635 0.207523958,10.417476 C0.34034,10.5502885 0.520182292,10.625 0.708333333,10.625 Z M1.41666667,7.79166667 L2.83333333,7.79166667 L2.83333333,9.20833333 L1.41666667,9.20833333 L1.41666667,7.79166667 Z" id="Fill-4"></path>
                                <path d="M6.375,9.91666667 C6.375,10.1048177 6.44970792,10.2846635 6.58252396,10.417476 C6.71534,10.5502885 6.89518229,10.625 7.08333333,10.625 L9.91666667,10.625 C10.1048177,10.625 10.2846635,10.5502921 10.417476,10.417476 C10.5502885,10.28466 10.625,10.1048177 10.625,9.91666667 L10.625,7.08333333 C10.625,6.89518229 10.5502921,6.71533646 10.417476,6.58252396 C10.28466,6.44971146 10.1048177,6.375 9.91666667,6.375 L7.08333333,6.375 C6.69181979,6.375 6.375,6.69181979 6.375,7.08333333 L6.375,9.91666667 Z M7.79166667,7.79166667 L9.20833333,7.79166667 L9.20833333,9.20833333 L7.79166667,9.20833333 L7.79166667,7.79166667 Z" id="Fill-5"></path>
                                <path d="M16.2916667,6.375 L13.4583333,6.375 C13.0668198,6.375 12.75,6.69181979 12.75,7.08333333 L12.75,9.91666667 C12.75,10.1048177 12.8247079,10.2846635 12.957524,10.417476 C13.09034,10.5502885 13.2701823,10.625 13.4583333,10.625 L16.2916667,10.625 C16.4798177,10.625 16.6596635,10.5502921 16.792476,10.417476 C16.9252885,10.28466 17,10.1048177 17,9.91666667 L17,7.08333333 C17,6.89518229 16.9252921,6.71533646 16.792476,6.58252396 C16.65966,6.44971146 16.4798177,6.375 16.2916667,6.375 Z M15.5833333,9.20833333 L14.1666667,9.20833333 L14.1666667,7.79166667 L15.5833333,7.79166667 L15.5833333,9.20833333 Z" id="Fill-6"></path>
                                <path d="M0,16.2916667 C0,16.4798177 0.0747079167,16.6596635 0.207523958,16.792476 C0.34034,16.9252885 0.520182292,17 0.708333333,17 L3.54166667,17 C3.72981771,17 3.90966354,16.9252921 4.04247604,16.792476 C4.17528854,16.65966 4.25,16.4798177 4.25,16.2916667 L4.25,13.4583333 C4.25,13.2701823 4.17529208,13.0903365 4.04247604,12.957524 C3.90966,12.8247115 3.72981771,12.75 3.54166667,12.75 L0.708333333,12.75 C0.316819792,12.75 0,13.0668198 0,13.4583333 L0,16.2916667 Z M1.41666667,14.1666667 L2.83333333,14.1666667 L2.83333333,15.5833333 L1.41666667,15.5833333 L1.41666667,14.1666667 Z" id="Fill-7"></path>
                                <path d="M6.375,16.2916667 C6.375,16.4798177 6.44970792,16.6596635 6.58252396,16.792476 C6.71534,16.9252885 6.89518229,17 7.08333333,17 L9.91666667,17 C10.1048177,17 10.2846635,16.9252921 10.417476,16.792476 C10.5502885,16.65966 10.625,16.4798177 10.625,16.2916667 L10.625,13.4583333 C10.625,13.2701823 10.5502921,13.0903365 10.417476,12.957524 C10.28466,12.8247115 10.1048177,12.75 9.91666667,12.75 L7.08333333,12.75 C6.69181979,12.75 6.375,13.0668198 6.375,13.4583333 L6.375,16.2916667 Z M7.79166667,14.1666667 L9.20833333,14.1666667 L9.20833333,15.5833333 L7.79166667,15.5833333 L7.79166667,14.1666667 Z" id="Fill-8"></path>
                                <path d="M16.2916667,12.75 L13.4583333,12.75 C13.0668198,12.75 12.75,13.0668198 12.75,13.4583333 L12.75,16.2916667 C12.75,16.4798177 12.8247079,16.6596635 12.957524,16.792476 C13.09034,16.9252885 13.2701823,17 13.4583333,17 L16.2916667,17 C16.4798177,17 16.6596635,16.9252921 16.792476,16.792476 C16.9252885,16.65966 17,16.4798177 17,16.2916667 L17,13.4583333 C17,13.2701823 16.9252921,13.0903365 16.792476,12.957524 C16.65966,12.8247115 16.4798177,12.75 16.2916667,12.75 Z M15.5833333,15.5833333 L14.1666667,15.5833333 L14.1666667,14.1666667 L15.5833333,14.1666667 L15.5833333,15.5833333 Z" id="Fill-9"></path>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/html_file.svg000064400000012171147361034410014442 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>html</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-266.000000, -304.000000)" fill="#8591B0">
            <g id="content" transform="translate(244.000000, 69.000000)">
                <g id="row-07" transform="translate(1.000000, 231.000000)">
                    <path d="M29.9541641,5.72727273 C27.8934109,5.72727273 26.0417841,6.54041499 24.6857968,7.86381406 C24.6084483,7.93992511 24.5310998,8.02613434 24.4545455,8.11311698 L24.6857968,9.00238819 L24.8839051,9.14373871 L26.1846305,9.14296131 L26.3495898,9.03422953 L26.7797434,8.23194295 C27.1104459,7.60285023 27.7608187,7.25568711 28.4222237,7.25568711 C28.7860834,7.25568711 29.149943,7.36441889 29.4695931,7.5810991 L30.0868088,7.99349571 C30.6045733,8.35153439 30.8910865,8.9262493 30.8910865,9.49008864 C30.8910865,9.89160969 30.7474379,10.2923752 30.4830375,10.6286628 L30.4388381,10.7482661 L30.5382873,10.921458 L31.5635519,11.4744218 C32.0481593,11.7237247 32.3899141,12.1796236 32.5004177,12.7108561 L32.9739929,15.0750486 L33.040291,15.1837804 L33.1728892,15.2272727 L33.2944371,15.1837804 L34.9479698,13.6980432 L35.0142679,13.5566927 L35.0142679,13.5349455 L34.8595709,11.88689 L34.8485206,11.7245697 C34.8485206,11.1172281 35.1681707,10.5316376 35.6969876,10.1953501 L36.5454545,9.66411754 C36.1926473,9.00241801 35.7411769,8.39507641 35.211572,7.86384388 C33.8556049,6.54044481 32.0039578,5.72730255 29.9541156,5.72730255 L29.9541641,5.72727273 Z M26.6963794,16.1934075 C26.0488357,16.1934075 25.401292,15.9192034 24.9452654,15.4058061 C24.8130085,15.2742563 24.7176699,15.2383795 24.5613738,15.2272727 C24.3818806,15.2272727 24.1895083,15.3349053 24.093321,15.5373624 L24.0821567,15.549322 L23.5909091,16.6350294 C24.1302394,17.7685841 24.9341011,18.7705804 25.9295239,19.5454545 L26.9850116,18.9133353 C27.4530643,18.6391312 27.764821,18.1616194 27.8129036,17.6132113 L27.9090909,16.7786372 L27.9090909,16.718841 C27.9090909,16.4326751 27.6694912,16.1943566 27.3817868,16.1943566 L26.6963794,16.1934075 Z M21,13.4885072 C21.0115453,11.2315344 21.7949619,9.15907131 23.1301163,7.52381628 C23.1647513,7.47763605 23.1878427,7.44300141 23.2224777,7.40836465 C24.9616786,5.32448058 27.5749661,4 30.5115288,4 C34.415405,4 37.7775688,6.36104988 39.2281168,9.74619247 C39.2396625,9.76928364 39.2512082,9.78082711 39.2512082,9.80391828 C39.2858431,9.87318757 39.3204781,9.94245896 39.3435695,10.022459 C39.7699094,11.0936713 40,12.2680319 40,13.4884565 C40,18.7389636 35.7505341,22.988389 30.5115879,23 C28.5769399,23 26.7692121,22.412862 25.2726418,21.4224412 C25.2495504,21.4224412 25.2264611,21.39935 25.2149154,21.3878066 C25.1687347,21.3647154 25.1340998,21.3300808 25.0879191,21.2954461 C23.6604456,20.2943221 22.5083461,18.9122297 21.8173784,17.2999856 C21.7711977,17.2191708 21.7365628,17.1383559 21.7134714,17.0583707 C21.7019263,17.0121905 21.69038,16.9660102 21.69038,16.91983 L21.655745,16.9313756 C21.2302284,15.8609865 21.0001379,14.6974137 21.0001379,13.488389 L21,13.4885072 Z M22.7272854,13.5568849 C22.7272854,13.8879438 22.7503766,14.2190237 22.7965548,14.5271888 C23.2228917,14.0596048 23.8216,13.8078368 24.4318349,13.8078368 C25.0420698,13.8078368 25.6638525,14.0702355 26.1017582,14.5615294 C26.2056645,14.6759728 26.331826,14.7323763 26.4819253,14.7323763 L27.1383511,14.7323763 C28.3819164,14.7323763 29.3723184,15.7370208 29.3723184,16.9468297 L29.3599494,17.1748878 L29.2791344,17.9735308 C29.1636825,19.0353886 28.564991,19.9713728 27.6438543,20.519043 L27.4368671,20.6449291 C28.3810994,21.0446691 29.4176711,21.2727273 30.5110527,21.2727273 C32.6527648,21.2612825 34.5873779,20.4054241 36.0041379,19.0124446 C37.4093291,17.6080811 38.2727273,15.6796735 38.2727273,13.5560416 C38.2727273,12.8939029 38.1919122,12.2546579 38.019564,11.6383066 L37.4439512,12.003706 L37.3515905,12.1745529 L37.3515905,12.1974424 L37.5132206,13.9320697 L37.5247662,14.1029166 C37.5247662,14.6391608 37.2946984,15.1533275 36.8914359,15.518727 L35.163793,17.0710626 C34.7951736,17.4135683 34.3234692,17.5729662 33.874039,17.5729662 C33.4361544,17.5729662 33.0221674,17.4356354 32.6766435,17.1732262 C32.3311196,16.8993807 32.0664086,16.4996407 31.9740479,16.0320775 L31.4677214,13.5436949 L31.3753607,13.4063641 L30.292598,12.8243533 C29.64772,12.4818476 29.2906483,11.808262 29.2906483,11.1461442 C29.2906483,10.7349783 29.4291893,10.3017138 29.7169852,9.94776123 L29.7631655,9.82187514 L29.6708048,9.66165687 L29.0259268,9.21615037 L28.9104749,9.18181818 L28.726579,9.28808558 L28.2771466,10.1439419 C27.9431704,10.77174 27.2867446,11.17148 26.5726013,11.17148 L25.2135799,11.17148 C24.4878889,11.17148 23.8545585,10.7831869 23.5321301,10.1782824 C23.0150792,11.1943738 22.7272727,12.3469065 22.7272727,13.5568828 L22.7272854,13.5568849 Z" id="html"></path>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/add_file.svg000064400000006647147361034410014241 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>add file</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-188.000000, -26.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="file" transform="translate(79.000000, 0.000000)">
                            <g id="add-file" transform="translate(10.000000, 8.000000)">
                                <path d="M11.7462569,13.5244181 C11.7462569,13.0246875 12.1386922,12.6315789 12.6375173,12.6315789 C12.8154317,12.6315789 12.9941915,12.6912733 13.1363643,12.7867834 C13.3738565,12.9419878 13.5287996,13.2157164 13.5287996,13.5244269 L13.5287996,15.1071654 L15.1087395,15.1071654 C15.5956661,15.1071654 16,15.5122373 16,16.0000046 C16,16.4877719 15.5956443,16.8928438 15.1087395,16.8928438 L13.5287996,16.8928438 L13.5287996,18.4755819 C13.5287996,18.9753125 13.1244439,19.3684211 12.6375391,19.3684211 C12.1386922,19.3684211 11.7462787,18.9752906 11.7462787,18.4755819 L11.7462787,16.8928438 L10.1544184,16.8928438 C9.91692615,16.8928438 9.69133251,16.7973337 9.52449086,16.6310479 C9.36956086,16.4647577 9.26315789,16.249859 9.26315789,16.0000046 C9.26315789,15.5122155 9.66751356,15.1071654 10.1544184,15.1071654 L11.7462787,15.1071654 L11.7462569,13.5244181 Z" id="Fill-1"></path>
                                <path d="M14.2202167,7.6305126 L11.5540619,7.6305126 C9.75317935,7.6305126 8.29538,6.18649944 8.29538,4.40274381 L8.29538,1.76102001 L3.36562373,1.76102001 C2.47665912,1.77279474 1.777864,2.46494144 1.777864,3.33371763 L1.777864,16.0346606 C1.777864,16.9034368 2.48852705,17.6073582 3.36562373,17.6073582 L8.72249512,17.6073582 C9.22005708,17.6073582 9.61145973,18.0068463 9.61145973,18.4878895 C9.61145973,18.9807314 9.22003534,19.3684211 8.72249512,19.3684211 L3.36562373,19.3684211 C1.50531455,19.3684211 0,17.8773006 0,16.0347252 L0,3.33378222 C0,2.41792005 0.379534719,1.5844745 0.983212501,0.973885362 C1.58773799,0.375934304 2.44105533,0 3.36571067,0 L9.18447502,0 C9.40948753,0 9.64636797,0.094193493 9.81277984,0.258187055 L15.738486,6.12767964 C15.7860338,6.17477639 15.8216941,6.22187313 15.8454691,6.26812806 C15.8811294,6.3152248 15.9049044,6.36232155 15.9286772,6.42119302 C15.9643375,6.46828977 15.976225,6.51538651 15.9881125,6.57425799 C16,6.63312946 16,6.69199878 16,6.75003058 L16,12.1736381 C16,12.66648 15.6085756,13.0541696 15.1110354,13.0541696 C14.9335794,13.0541696 14.75528,12.9952981 14.6134734,12.9011047 C14.376593,12.7480397 14.2220491,12.4780844 14.2220491,12.1736295 L14.2211992,9.37904309 L14.2211992,7.63057503 L14.2202167,7.6305126 Z M12.9644548,5.86942799 L10.0724615,3.00486931 L10.0724615,4.40179649 C10.0724615,5.21168829 10.7364353,5.8693634 11.5540837,5.8693634 L12.9644548,5.86942799 Z" id="Fill-2"></path>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/pdf.svg000064400000007237147361034410013257 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="21px" viewBox="0 0 16 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>pdf</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1329.000000, -25.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <g id="pdf" transform="translate(1220.000000, 22.000000)">
                            <g transform="translate(10.000000, 7.000000)">
                                <path d="M15.8367584,6.22877922 L15.8367584,5.49506494 L9.72558961,0 L9.72558961,0.0153766234 L1.87499221,0.0153766234 C0.839355844,0.0153766234 8.31168831e-05,0.854649351 8.31168831e-05,1.88966234 L8.31168831e-05,18.9051429 C8.31168831e-05,19.9407792 0.839355844,20.7792208 1.87499221,20.7792208 L13.9635117,20.7792208 C14.9983169,20.7792208 15.8369662,19.9407792 15.8369662,18.9051429 L15.8369662,6.22981818 L15.8377974,6.22981818 L15.8367584,6.22877922 Z M14.1710961,18.9049351 C14.1710961,19.0177662 14.0777974,19.1127273 13.9633039,19.1127273 L1.87478442,19.1127273 C1.75883636,19.1127273 1.66553766,19.0185974 1.66553766,18.9049351 L1.66553766,1.88945455 C1.66553766,1.77496104 1.75800519,1.68083117 1.87478442,1.68083117 L9.72538182,1.68083117 L9.72538182,6.22961039 L14.1710961,6.22961039 L14.1710961,18.9049351 Z" id="Fill-1"></path>
                                <path d="M8.54865455,7.47047619 C8.56091429,6.81302165 8.35312208,6.47535931 8.25317403,6.36252814 C8.07218701,6.1262684 7.78314805,5.98517749 7.48621299,5.98829437 C7.35945974,5.98829437 7.23707013,6.01177489 7.11758961,6.05083983 C6.79862857,6.15390476 6.54304416,6.39743723 6.41317403,6.70663203 C6.32132987,6.91691775 6.29057662,7.14569697 6.29057662,7.37551515 C6.29452468,8.07037229 6.57545974,8.84065801 6.8644987,9.49478788 C6.54221299,10.7479827 6.01857662,12.2309957 5.46917403,13.4534372 C4.02439481,14.1458009 3.15997922,14.7934892 3.02678442,15.6718268 C3.01701818,15.7131775 3.01701818,15.7634632 3.01701818,15.8058528 C3.00974545,16.1223203 3.16392727,16.5493333 3.6004987,16.8682944 C3.76777143,16.995671 3.97473247,17.064658 4.18668052,17.064658 C4.72631688,17.0540606 5.13878442,16.6792035 5.5633039,16.0890736 C5.85795325,15.6743203 6.16153766,15.1344762 6.47883636,14.4753593 C7.43571948,14.0662165 8.59582338,13.6930216 9.60943377,13.4681905 C10.2149403,14.0175931 10.7880312,14.3357229 11.3748364,14.3415411 C11.8350961,14.3454892 12.2621091,14.1133853 12.5299532,13.7279307 C12.7020052,13.4827359 12.8123429,13.2269437 12.8123429,12.9534892 C12.8140052,12.8065801 12.7790961,12.6571775 12.7109403,12.5241905 C12.4536935,12.0435671 11.9146805,11.8958268 11.2620052,11.896658 C10.9137455,11.896658 10.5137455,11.9348918 10.0574338,12.0094892 C9.42595325,11.3065281 8.76683636,10.3203463 8.2830961,9.35037229 C8.48029091,8.499671 8.54844675,7.9047619 8.54844675,7.47047619 L8.54865455,7.47047619 Z M7.2192,12.749645 C7.41805714,12.2343203 7.60631688,11.7050736 7.77275844,11.1814372 C8.02834286,11.5880866 8.30034286,11.977697 8.57961558,12.3340606 C8.12745974,12.4558268 7.66886234,12.5954632 7.2192,12.749645 Z" id="Fill-4"></path>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/preview.png000064400000002541147361034410014145 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:0DF59639213A11E8AF7CB433753BF849" xmpMM:InstanceID="xmp.iid:0DF59638213A11E8AF7CB433753BF849" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:B4FA084E212611E8A952F9C3BB7F85B5" stRef:documentID="xmp.did:B4FA084F212611E8A952F9C3BB7F85B5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>`���IDATxڤS�KQ��}� �b'B�Ikg!WJ��
X�?��?������-�l�� 
�%b�S�����>��PS8����|��˪J���W���X�4�*��@a��U�1>D���|p�
ȓ�F��#/��]�I����[����^���|D�!����\'Y�����	��Dd��rb�p$��z�u�Ζ{����Џ��|Bo��Pt\��V_n*�h(�6��9��@J�W�
���p.��k�����˭H�wۗvFڈx=��>�̾�i�J@�7�;��ť~�:�t"u���L2�N���h�m�Q�OV햯�0��yg��m~���")��sO����ZϲЊ!�Rr�	g�r��ؕ�����N���W`D(�e�ib���厖�|�1G��c����S��V]����eQ��Ql����R�4^�N��C	���{L� �P��S&�!TIEND�B`�lib/themes/light/images/16px/php_file.svg000064400000005666147361034410014300 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="21px" viewBox="0 0 20 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>php</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-267.000000, -332.000000)" fill="#8591B0">
            <g id="content" transform="translate(244.000000, 69.000000)">
                <g id="row-08" transform="translate(1.000000, 261.000000)">
                    <g id="php" transform="translate(23.000000, 3.000000)">
                        <path d="M15.4375,6.53125 L15.4375,4.15625 C15.4382429,3.9981643 15.3766411,3.846759 15.2653125,3.734678 L11.7028125,0.172178 C11.5907429,0.0608494 11.4393395,-0.00076 11.2812405,-1.9e-05 L1.7812405,-1.9e-05 C0.7978385,-1.9e-05 -9.512901e-06,0.7978385 -9.512901e-06,1.7812405 L-9.512901e-06,17.2187405 C-9.512901e-06,18.2021425 0.7978385,18.9999905 1.7812405,18.9999905 L5.9374905,18.9999905 L5.9374905,17.8124905 L1.7812405,17.8124905 C1.4531865,17.8124905 1.1874905,17.5467945 1.1874905,17.2187405 L1.1874905,1.7812405 C1.1874905,1.4531865 1.4531865,1.1874905 1.7812405,1.1874905 L10.6874905,1.1874905 L10.6874905,3.5624905 C10.6874905,3.8771685 10.8129209,4.1792495 11.0355705,4.4019105 C11.2582201,4.6245715 11.5602935,4.7499905 11.8749905,4.7499905 L14.2499905,4.7499905 L14.2499905,6.5312405 L15.4375,6.53125 Z" id="Fill-1" stroke="#8591B0" stroke-width="0.5"></path>
                        <path d="M7.71875,9.5 L5.34375,9.5 C5.015696,9.5 4.75,9.765696 4.75,10.09375 L4.75,15.4375 L5.9375,15.4375 L5.9375,13.65625 L7.71875,13.65625 C8.033428,13.65625 8.335509,13.5308196 8.55817,13.30817 C8.780831,13.0855204 8.90625,12.783447 8.90625,12.46875 L8.90625,10.6875 C8.90625,10.372822 8.7808196,10.070741 8.55817,9.84808 C8.3355204,9.625419 8.033447,9.5 7.71875,9.5 Z M7.71875,12.46875 L5.9375,12.46875 L5.9375,10.6875 L7.71875,10.6875 L7.71875,12.46875 Z" id="Fill-2"></path>
                        <path d="M17.8125,9.5 L15.4375,9.5 C15.109446,9.5 14.84375,9.765696 14.84375,10.09375 L14.84375,15.4375 L16.03125,15.4375 L16.03125,13.65625 L17.8125,13.65625 C18.127178,13.65625 18.429259,13.5308196 18.65192,13.30817 C18.874581,13.0855204 19,12.783447 19,12.46875 L19,10.6875 C19,10.372822 18.8745696,10.070741 18.65192,9.84808 C18.4292704,9.625419 18.127197,9.5 17.8125,9.5 Z M17.8125,12.46875 L16.03125,12.46875 L16.03125,10.6875 L17.8125,10.6875 L17.8125,12.46875 Z" id="Fill-3"></path>
                        <polygon id="Fill-4" points="13.0625 11.875 10.6875 11.875 10.6875 9.5 9.5 9.5 9.5 15.4375 10.6875 15.4375 10.6875 13.0625 13.0625 13.0625 13.0625 15.4375 14.25 15.4375 14.25 9.5 13.0625 9.5"></polygon>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/home.png000064400000002220147361034410013406 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:E9DA1FF73BB011E8B39F936E53D95B5E" xmpMM:InstanceID="xmp.iid:E9DA1FF63BB011E8B39F936E53D95B5E" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E4DFA5C9206111E8877DC251126BECAC" stRef:documentID="xmp.did:E4DFA5CA206111E8877DC251126BECAC"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��IDATx�b���a�0�c�$ ��@�I�j@��q9wಅ�X<�q
�@,��\��Ӂ�gA5��g �ė��|�\`�K�~��:`�3@����& �bA<��k��Q\p����>���@�*��P��\ U�5���+�B��?�# ��ZDT: 
��`��Hb_����^�G(�,?�ePr�$�]��@v^ ;~C�ϡt@�\@���2�>�Z1{Ϧ��IEND�B`�lib/themes/light/images/16px/rename.svg000064400000004014147361034410013743 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="22px" height="19px" viewBox="0 0 22 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>rename</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-658.000000, -26.000000)" stroke="#8591B0" stroke-width="2">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="rename" transform="translate(553.000000, 0.000000)">
                            <g transform="translate(7.000000, 9.000000)">
                                <polyline id="Stroke-1" points="15.9128333 12.063619 19.8814167 12.063619 19.8814167 4.12645238 15.9128333 4.12645238"></polyline>
                                <polyline id="Stroke-2" points="9.04771429 4.12675 0.119071429 4.12675 0.119071429 12.0639167 9.04771429 12.0639167"></polyline>
                                <path d="M16.9842857,0.159059526 L15.0004405,0.159059526 C13.9094595,0.159059526 13.0165952,1.05192381 13.0165952,2.14290476 L13.0165952,14.0477619 C13.0165952,15.1387429 13.9094595,16.0316071 15.0004405,16.0316071 L16.9842857,16.0316071" id="Stroke-4" stroke-linejoin="round"></path>
                                <path d="M9.04771429,16.0319048 L11.0315595,16.0319048 C12.1225405,16.0319048 13.0154048,15.1390405 13.0154048,14.0480595 L13.0163373,2.14320238 C13.0163373,1.05222143 12.123473,0.159357148 11.0324921,0.159357148 L9.04864683,0.159357148" id="Stroke-5" stroke-linejoin="round"></path>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/extract.svg000064400000005445147361034410014157 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="21px" height="17px" viewBox="0 0 21 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>extract</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-773.000000, -27.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="extract" transform="translate(666.000000, 0.000000)">
                            <path d="M18.0800453,9.2 C16.4656703,9.2 15.1400453,10.525625 15.1400453,12.14 L15.1400453,13.82 L14.7790973,13.82 L13.7618993,12.126875 C13.6093217,11.873405 13.3353473,11.719181 13.0400243,11.72 L8.84002428,11.72 C8.81131308,11.7183599 8.78342298,11.7183599 8.75471178,11.72 C8.32404378,11.7642974 7.99755678,12.127694 8.00001378,12.56 L8.00001378,25.16 C8.00001378,25.624289 8.37572478,26 8.84001378,26 L25.3512638,26 C25.7384618,25.9983599 26.0739578,25.733405 26.1650138,25.356875 L28.1337638,17.376875 C28.1936474,17.1275 28.136225,16.863362 27.9779039,16.661573 C27.8195828,16.4589566 27.5767619,16.34084 27.3200159,16.340021 L26.0600159,16.340021 L26.0600159,13.820021 L27.3200159,13.820021 C27.7843049,13.820021 28.1600159,13.44431 28.1600159,12.980021 L28.1600159,12.140021 C28.1600159,10.525646 26.8343909,9.200021 25.2200159,9.200021 L18.0800453,9.2 Z M18.0800453,10.88 L18.1850453,10.88 C18.194069,10.8824612 18.2022716,10.8849224 18.2112953,10.8865625 C18.8536013,10.9505474 19.3400453,11.4714545 19.3400453,12.1400105 L19.3400453,12.9800105 C19.3400453,13.4442995 19.7157563,13.8200105 20.1800453,13.8200105 L24.3800453,13.8200105 L24.3800453,16.3400105 L16.8200453,16.3400105 L16.8200453,12.1400105 C16.8200453,11.4271655 17.3672003,10.8800105 18.0800453,10.8800105 L18.0800453,10.88 Z M20.6984933,10.88 L25.2200453,10.88 C25.9328903,10.88 26.4800453,11.427155 26.4800453,12.14 L21.0200453,12.14 C21.0200453,11.683082 20.8863341,11.267198 20.6984933,10.88 Z M9.68004486,13.4 L12.5675453,13.4 L13.5781703,15.086552 C13.7291078,15.3425 14.0030843,15.49916 14.3000453,15.5 L15.1400453,15.5 L15.1400453,16.34 L10.8087953,16.34 C10.4240753,16.3408211 10.0885583,16.603319 9.99504528,16.976552 L9.68004486,18.249677 L9.68004486,13.4 Z M11.4650453,18.02 L26.2503053,18.02 L24.6950033,24.32 L9.90974328,24.32 L11.4650453,18.02 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/resize.png000064400000002604147361034410013765 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:F0679AAD206311E882429AFA2FEB5152" xmpMM:DocumentID="xmp.did:F0679AAE206311E882429AFA2FEB5152"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F0679AAB206311E882429AFA2FEB5152" stRef:documentID="xmp.did:F0679AAC206311E882429AFA2FEB5152"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>����IDATxڤS�n1����]-!�_Ѥ@�!�H|tD4 ݊PE�������/Hy���"ED�����=_’�M,�=ڱϜ93�"B�Y&n��~&!���l���E�39$U8�ܿc�k��(2���?����-MhV��<���1�0��$	%��@>��LmgVS5p�p�1�PF��5�jEiai1��[В��]Vn�����aN>Y�t8�rC�~X�e�YM�gl���Dx��ҹ�7Q
i�W�˕и�s�}��s�2�ԇ����a����e�ʽ9[�h������I�k�
6�?OS�
�}�G�3<���"~ȬQ2ۡ���lG_��u�a�� A����wŹ���u_�kIj����؜�	iL�>�'bE�&=�n�(�d�v���@-֎�&!�2��E�����q��o!Ih��{i訊��,�F�����n���X���ڌ�b�ЗS,��HX��-+�b*��ͪ��ο*����IEND�B`�lib/themes/light/images/16px/clear_folder.png000064400000001263147361034410015105 0ustar00�PNG


IHDR�a	pHYs��eIDATxڍ�KLQ�/�it��a��ԝ�u�N�&>6(�@%�(̻۱���V�ke��7�Q�&V"�4@��PKmi��{J-T��r�|�9ss�I��V�r�cM-]��u�p�E�3Q,2�A�(0�W������B�
)��,�~����$I�X�cV</��g���$��^ �)	�Sn �)��":��'H����$ v����,�1u�dƬ1Eu</�K�.����I��� ��#6�u#3j�@ l�T���RMCfD�@@��	�{��H7	4ڛI`�)���:��#����s�N�uT��'9��̠�L4*+!/������/�gOB�z
�������{w�?154�Z;�pw����4�o�"8�6#�����Tmdz�{dykA �C7C�;��4}�����#\Y�hm5>>0ء�`���5�Đœ�O���|�`),b��3��r���#�\ei�*
Y摦�'x�H�	?�W��A��Ad�D����8f�YK&���)o����}�'���	�:=�7�'�o�ث��灷|�� ��_>z���j\jh�c��sk����x֬Vs�]f�g.n3�/�|�D�%�f�2�B�n�z�?�l��RIEND�B`�lib/themes/light/images/16px/rm.svg000064400000005172147361034410013120 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="21px" height="17px" viewBox="0 0 21 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>delete</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M14.3624369,8.5 L16.3687184,10.5062816 C16.7104272,10.8479903 16.7104272,11.4020097 16.3687184,11.7437184 C16.0270097,12.0854272 15.4729903,12.0854272 15.1312816,11.7437184 L13.125,9.73743687 L11.1187184,11.7437184 C10.7770097,12.0854272 10.2229903,12.0854272 9.88128157,11.7437184 C9.53957281,11.4020097 9.53957281,10.8479903 9.88128157,10.5062816 L11.8875631,8.5 L9.88128157,6.49371843 C9.53957281,6.15200968 9.53957281,5.59799032 9.88128157,5.25628157 C10.2229903,4.91457281 10.7770097,4.91457281 11.1187184,5.25628157 L13.125,7.26256313 L15.1312816,5.25628157 C15.4729903,4.91457281 16.0270097,4.91457281 16.3687184,5.25628157 C16.7104272,5.59799032 16.7104272,6.15200968 16.3687184,6.49371843 L14.3624369,8.5 Z M18.375,0.625 C19.8247475,0.625 21,1.80025253 21,3.25 L21,13.75 C21,15.1997475 19.8247475,16.375 18.375,16.375 L7,16.375 C6.74768274,16.375 6.50764747,16.2660796 6.34149539,16.0761915 L0.216495392,9.07619153 C-0.0721651307,8.74629379 -0.0721651307,8.25370621 0.216495392,7.92380847 L6.34149539,0.923808468 C6.50764747,0.733920378 6.74768274,0.625 7,0.625 L18.375,0.625 Z M18.375,14.625 C18.8582492,14.625 19.25,14.2332492 19.25,13.75 L19.25,3.25 C19.25,2.76675084 18.8582492,2.375 18.375,2.375 L7.3970472,2.375 L2.0376722,8.5 L7.3970472,14.625 L18.375,14.625 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-579.000000, -27.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="delete" transform="translate(474.000000, 0.000000)">
                            <g transform="translate(6.000000, 9.000000)">
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/back.png000064400000002073147361034410013364 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:E4DFA5C9206111E8877DC251126BECAC" xmpMM:DocumentID="xmp.did:E4DFA5CA206111E8877DC251126BECAC"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E4DFA5C7206111E8877DC251126BECAC" stRef:documentID="xmp.did:E4DFA5C8206111E8877DC251126BECAC"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�x/�IDATx�b���?%���Rr2���8���ճa��*�&�
@<���
6��\`ĩ@|�'�b��1@������z,��b v&�Bl������h�B&�A�x́x>��09��,4f�9�WB։`�ĝ��<7�$�!Y�IEND�B`�lib/themes/light/images/16px/up.svg000064400000003457147361034410013132 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="12px" height="16px" viewBox="0 0 12 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Combined Shape</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M1198.50034,39.75 L1201.9585,42.9696699 C1202.27309,43.2625631 1202.27309,43.7374369 1201.9585,44.0303301 C1201.64391,44.3232233 1201.13386,44.3232233 1200.81928,44.0303301 L1195.98594,39.5303301 C1195.67135,39.2374369 1195.67135,38.7625631 1195.98594,38.4696699 L1200.81928,33.9696699 C1201.13386,33.6767767 1201.64391,33.6767767 1201.9585,33.9696699 C1202.27309,34.2625631 1202.27309,34.7374369 1201.9585,35.0303301 L1198.50034,38.25 L1209.44444,38.25 C1209.88934,38.25 1210.25,38.5857864 1210.25,39 C1210.25,39.4142136 1209.88934,39.75 1209.44444,39.75 L1198.50034,39.75 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1296.000000, -27.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <mask id="mask-2" fill="white">
                            <use xlink:href="#path-1"></use>
                        </mask>
                        <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" transform="translate(1203.000000, 39.000000) rotate(90.000000) translate(-1203.000000, -39.000000) " xlink:href="#path-1"></use>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/directory.svg000064400000003767147361034410014516 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="17px" viewBox="0 0 18 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>file</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M6.10757692,1.63636364 L2.45454545,1.63636364 C2.00267611,1.63636364 1.63636364,2.00267611 1.63636364,2.45454545 L1.63636364,13.9090909 C1.63636364,14.3609602 2.00267611,14.7272727 2.45454545,14.7272727 L15.5454545,14.7272727 C15.9973239,14.7272727 16.3636364,14.3609602 16.3636364,13.9090909 L16.3636364,4.90909091 C16.3636364,4.45722157 15.9973239,4.09090909 15.5454545,4.09090909 L8.18181818,4.09090909 C7.90825648,4.09090909 7.65279449,3.95418998 7.50104976,3.72657289 L6.10757692,1.63636364 Z M8.6196958,2.45454545 L15.5454545,2.45454545 C16.9010626,2.45454545 18,3.55348289 18,4.90909091 L18,13.9090909 C18,15.2646989 16.9010626,16.3636364 15.5454545,16.3636364 L2.45454545,16.3636364 C1.09893743,16.3636364 0,15.2646989 0,13.9090909 L0,2.45454545 C-1.81672859e-16,1.09893743 1.09893743,0 2.45454545,0 L6.54545455,0 C6.81901624,0 7.07447824,0.136719111 7.22622297,0.364336203 L8.6196958,2.45454545 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-267.000000, -125.000000)">
            <g id="content" transform="translate(244.000000, 69.000000)">
                <g id="row-01" transform="translate(1.000000, 51.000000)">
                    <g id="file" transform="translate(22.000000, 5.000000)">
                        <mask id="mask-2" fill="white">
                            <use xlink:href="#path-1"></use>
                        </mask>
                        <use id="Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/arrow_down.svg000064400000003075147361034410014663 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="10px" height="6px" viewBox="0 0 10 6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Shape</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M5,4.05719096 L1.47140452,0.528595479 C1.21105499,0.268245951 0.788945007,0.268245951 0.528595479,0.528595479 C0.268245951,0.788945007 0.268245951,1.21105499 0.528595479,1.47140452 L4.52859548,5.47140452 C4.78894501,5.73175405 5.21105499,5.73175405 5.47140452,5.47140452 L9.47140452,1.47140452 C9.73175405,1.21105499 9.73175405,0.788945007 9.47140452,0.528595479 C9.21105499,0.268245951 8.78894501,0.268245951 8.52859548,0.528595479 L5,4.05719096 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-21.000000, -99.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="side-bar" transform="translate(1.000000, 69.000000)">
                    <g id="chevron-down" transform="translate(21.000000, 30.000000)">
                        <mask id="mask-2" fill="white">
                            <use xlink:href="#path-1"></use>
                        </mask>
                        <use id="Shape" fill="#323232" fill-rule="nonzero" xlink:href="#path-1"></use>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/archive.svg000064400000006207147361034410014123 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="21px" viewBox="0 0 17 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>zip</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-808.000000, -25.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="archive" transform="translate(700.000000, 0.000000)">
                            <path d="M9,8.7546546 C9,7.7850426 9.779289,6.9999996 10.747263,6.9999996 L23.877093,6.9999996 C24.841791,6.9999996 25.624356,7.7850426 25.624356,8.7546546 L25.624356,26.245345 C25.624356,27.214957 24.845067,28 23.877093,28 L10.747263,28 C9.782565,28 9,27.214957 9,26.245345 L9,8.7546546 Z M23.87472,8.7546546 C23.87472,8.7505533 10.74888,8.7497322 10.74888,8.7497322 C10.7497011,8.7505533 10.7497011,26.245252 10.7497011,26.245252 C10.7497011,26.2493535 23.8755411,26.250174 23.8755411,26.250174 C23.87472,26.2493535 23.87472,8.7546546 23.87472,8.7546546 Z M15.07026,17.4975846 C15.1006113,17.0152356 15.513234,16.6247826 15.999678,16.6247826 L18.624678,16.6247826 C19.107846,16.6247826 19.52373,17.0160756 19.554096,17.4975846 L19.782954,21.1570446 C19.8682665,22.5204066 18.830562,23.6253846 17.465604,23.6253846 L17.158815,23.6253846 C15.793815,23.6253846 14.756205,22.5237036 14.841465,21.1570446 L15.07026,17.4975846 Z M16.587846,21.2660346 C16.5656973,21.6236856 16.801941,21.8746986 17.158794,21.8746986 L17.465583,21.8746986 C17.820777,21.8746986 18.058665,21.6220476 18.036531,21.2660346 L17.8560612,18.3751746 L16.7683242,18.3751746 L16.587846,21.2660346 Z M16.4369085,8.7496146 L18.1874475,8.7496146 L18.1874475,10.0580196 C18.1874475,10.3024806 17.9930337,10.5001746 17.7452925,10.5001746 L16.8790425,10.5001746 C16.6345815,10.5001746 16.4368875,10.3057608 16.4368875,10.0580196 L16.4369085,8.7496146 Z M16.4369085,14.4416646 C16.4369085,14.1972036 16.6313223,13.9995096 16.8790635,13.9995096 L17.7453135,13.9995096 C17.9897745,13.9995096 18.1874685,14.1939234 18.1874685,14.4416646 L18.1874685,15.3079146 C18.1874685,15.5523756 17.9930547,15.7500696 17.7453135,15.7500696 L16.8790635,15.7500696 C16.6346025,15.7500696 16.4369085,15.5556558 16.4369085,15.3079146 L16.4369085,14.4416646 Z M16.4369085,11.8166646 C16.4369085,11.5722036 16.6313223,11.3745096 16.8790635,11.3745096 L17.7453135,11.3745096 C17.9897745,11.3745096 18.1874685,11.5689234 18.1874685,11.8166646 L18.1874685,12.6829146 C18.1874685,12.9273756 17.9930547,13.1250696 17.7453135,13.1250696 L16.8790635,13.1250696 C16.6346025,13.1250696 16.4369085,12.9306558 16.4369085,12.6829146 L16.4369085,11.8166646 Z" id="zip"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/reload.png000064400000002302147361034410013725 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:1468124E3BB111E8A420B1DF08E34A3E" xmpMM:InstanceID="xmp.iid:1468124D3BB111E8A420B1DF08E34A3E" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E4DFA5C9206111E8877DC251126BECAC" stRef:documentID="xmp.did:E4DFA5CA206111E8877DC251126BECAC"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>vu52IDATx�b���?6p���_�a��`g0��`d�X�9߿�����i��'.�(��� ͈��m�������������0�a����k6�k�`gcp�7e�����l�<����[�洄��Di&q��e0d3)���B�!��(^x��
<��{�����i�`?G&)	�ߍ�5�6�ꍻ`�Ǐ_,���/O!���_�� ˙H���a���4���̶2��Lʄli���8�}=l	�y��='2���=3�g,X���a6�#��g.\��*Ph�ʍ�y�p�TTIEND�B`�lib/themes/light/images/16px/archive.png000064400000002615147361034410014107 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:55877F38206311E8B2748B9B91AC9D9A" xmpMM:DocumentID="xmp.did:55877F39206311E8B2748B9B91AC9D9A"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:55877F36206311E8B2748B9B91AC9D9A" stRef:documentID="xmp.did:55877F37206311E8B2748B9B91AC9D9A"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?><?��IDATxڤS=hA���}y1<��"�JQ0"�Hg!�$6)KA[�l�����v�XF�(T���b�F�M�E��ٻ�����r�.�;��ͷ�̰������y��}�p�&]�����=6׮_=w����4��o��
��b��`���1b�使�s+�=�=���K����n�-���� 4��MO��D]B��xJ�hʎLbq[��:�g(%lhgq̼����yȈł�TD,y�G"��s�tN�i:)�'j�Gn�*T }��� 4�^s�l�j�m�X{Oǎ�ę��h������ik�Y�����b*%P�F�����%Z_OG%�,�-hSֿ7R�t3s� �Jb��n����l��/�[�5v|$�Z����6[�S�0��ܮ�e��ijb\���f�`�����,t40�g�>��EJ��l�MfcS�rDG/H��ۘx#�E����X��"ƈ�pޝ���YfAN��W��{���"�:��K�ƞ�=�g��PIEND�B`�lib/themes/light/images/16px/undo.svg000064400000003647147361034410013454 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="14px" viewBox="0 0 17 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>undo</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1088.000000, -27.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <g id="undo" transform="translate(961.000000, 0.000000)">
                            <path d="M12.4910865,34.333596 C12.66687,34.509375 12.605346,34.65 12.35925,34.65 L5.175,34.65 C2.31678,34.65 0,36.96678 0,39.825 C0,42.684975 2.31327,45 5.175,45 L9.01404,45 C9.6363,45 10.140795,44.50077 10.140795,43.875 C10.140795,43.254495 9.638055,42.75 9.01404,42.75 L5.175,42.75 C3.55779,42.75 2.25,41.44221 2.25,39.825 C2.25,38.20959 3.55959,36.9 5.175,36.9 L12.35925,36.9 C12.6088605,36.9 12.668625,37.0423845 12.4910865,37.2181635 L11.8038015,37.9054485 C11.3643495,38.3449005 11.36259,39.0533085 11.8038015,39.4962885 C12.2432535,39.9357405 12.9551715,39.9375 13.3963965,39.494529 L16.3196415,36.5730435 C16.7590935,36.131832 16.7626125,35.4216735 16.3196415,34.9786935 L13.3963965,32.0572035 C12.9569445,31.615992 12.2467815,31.6124775 11.8038015,32.055444 C11.3661045,32.494896 11.3643495,33.206814 11.8038015,33.646284 L12.4910865,34.333596 Z" transform="translate(22.500000, 22.500000) scale(-1, 1) translate(-22.500000, -22.500000) "></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/arrow_right.png000064400000000335147361034410015012 0ustar00�PNG


IHDR���	pHYs.#.#x�?v�IDATx�u�M
!�3-S�sq��^ŕ'(��E�[�u`h�	$��{	� �Ƙ��
�p�-1F@
���s���s���8Gh/�Yp[�$�ôNh�Am{� �$��0�Ю��x?"�)b���c���a�����#o�%A]��OIEND�B`�lib/themes/light/images/16px/forward.png000064400000002075147361034410014132 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:FF20C3D6206111E89D8CF9C9C7BB4B29" xmpMM:DocumentID="xmp.did:FF20C3D7206111E89D8CF9C9C7BB4B29"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FF20C3D4206111E89D8CF9C9C7BB4B29" stRef:documentID="xmp.did:FF20C3D5206111E89D8CF9C9C7BB4B29"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�u�IDATx�b���?%���Rr2�N ��e8�zl�v�'�19.
 ���X�z��0��| 6'�`�L ^�a�p!��� �'&��_ �1+��,@��B�^� ^�6��
O��@�@j4��" �b>B^f��{�x)�%���L����IEND�B`�lib/themes/light/images/16px/fullscreen.svg000064400000007572147361034410014652 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Page 1</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-931.000000, -26.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="fullscreen" transform="translate(824.000000, 0.000000)">
                            <path d="M15.8617816,15.4109424 L11.2007816,10.7499424 L12.6875016,10.7499424 C13.2054616,10.7499424 13.6250016,10.3304024 13.6250016,9.8124424 C13.6250016,9.2944824 13.2054616,8.8749424 12.6875016,8.8749424 L8.9375012,8.8749424 C8.4195412,8.8749424 8.0000012,9.2944824 8.0000012,9.8124424 L8.0000012,13.5624424 C8.0000012,14.0804024 8.4195412,14.4999424 8.9375012,14.4999424 C9.4554616,14.4999424 9.8750016,14.0804024 9.8750016,13.5624424 L9.8750016,12.0757224 L14.5360016,16.7367224 L14.5367816,16.7359404 C14.7055316,16.8984404 14.9344416,17.0000004 15.1875616,17.0000004 C15.7055216,17.0000004 16.1250616,16.5804604 16.1250616,16.0625004 C16.1250616,15.8093804 16.0234996,15.5804604 15.8602216,15.4117204 L15.8617816,15.4109424 Z M15.1875616,18.8749424 C14.9344416,18.8749424 14.7055216,18.9765044 14.5367816,19.1397824 L14.5359996,19.1382204 L9.8749996,23.7992204 L9.8749996,22.3125004 C9.8749996,21.7945404 9.4554596,21.3750004 8.9375,21.3750004 C8.41954,21.3750004 8,21.7945404 8,22.3125004 L8,26.0625 C8,26.58046 8.41954,27 8.9375,27 L12.6874996,27 C13.2054596,27 13.6249996,26.58046 13.6249996,26.0625 C13.6249996,25.5445404 13.2054596,25.1250004 12.6874996,25.1250004 L11.2007796,25.1250004 L15.8617796,20.4640004 L15.8609996,20.4632184 C16.0234996,20.2944684 16.1250596,20.0655584 16.1250596,19.8124384 C16.1250596,19.2944784 15.7055196,18.8749384 15.1875596,18.8749384 L15.1875616,18.8749424 Z M25.1875616,21.3749424 C24.6696016,21.3749424 24.2500616,21.7944824 24.2500616,22.3124424 L24.2500616,23.7991624 L19.5890616,19.1381624 L19.5882796,19.1389444 C19.4195296,18.9764444 19.1906196,18.8748844 18.9374996,18.8748844 C18.4195396,18.8748844 17.9999996,19.2944244 17.9999996,19.8123844 C17.9999996,20.0655044 18.1015616,20.2944244 18.2648396,20.4631644 L18.2632776,20.4639444 L22.9242776,25.1249444 L21.4375576,25.1249444 C20.9195976,25.1249444 20.5000576,25.5444844 20.5000576,26.0624448 C20.5000576,26.5804048 20.9195976,26.9999448 21.4375576,26.9999448 L25.1875576,26.9999448 C25.7055176,26.9999448 26.1250576,26.5804048 26.1250576,26.0624448 L26.1250576,22.3124444 C26.1250576,21.7944844 25.7055176,21.3749444 25.1875576,21.3749444 L25.1875616,21.3749424 Z M25.1875616,8.8749424 L21.4375616,8.8749424 C20.9196016,8.8749424 20.5000616,9.2944824 20.5000616,9.8124424 C20.5000616,10.3304024 20.9196016,10.7499424 21.4375616,10.7499424 L22.9242816,10.7499424 L18.2632816,15.4109424 L18.2640616,15.4117244 C18.1015616,15.5804744 18.0000016,15.8093844 18.0000016,16.0625044 C18.0000016,16.5804644 18.4195416,17.0000044 18.9375016,17.0000044 C19.1906216,17.0000044 19.4195416,16.8984424 19.5882816,16.7351644 L19.5890636,16.7359444 L24.2500636,12.0757444 L24.2500636,13.5624644 C24.2500636,14.0804244 24.6696036,14.4999644 25.1875636,14.4999644 C25.7055236,14.4999644 26.1250636,14.0804244 26.1250636,13.5624644 L26.1250636,9.8124644 C26.1250636,9.2945044 25.7055236,8.8749644 25.1875636,8.8749644 L25.1875616,8.8749424 Z" id="Page-1"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/up.png000064400000000566147361034410013115 0ustar00�PNG


IHDR�a=IDAT8�œ�N�P�ǐ.�-���4
		��998���t/�AR^�����\�L�����2��7�?����

RU����P�1/��-�^��\��{SÊYUW�Z�(�(��Z���RU��y��f3��4���q�0���>o'y�4�s� /[�+�I��qv��K���q���X��i���tZ�0���e�k�p_�X,*fcL0����,�H���k��h���yƘ'`X���E�$����i��:�L��Ps���܍��|[D��*W�j�-"�u
��������D���O�qJ�h���IEND�B`�lib/themes/light/images/16px/select_all.png000064400000001220147361034410014564 0ustar00�PNG


IHDR�a	pHYs��BIDATxڅS]kQ�?R�� ��&iw��ݯh�BP+���&i�cZ_�R_/lD�������s6nvća�Ü33g�
���w�������xK��
�V�l:�b*Q�*�Z��v_�#��\pR���=��c}��j;���H_{<�ןL��^�ƼV��^�o�?���q'�w,Q2l�3��o
�D��D��D�hA�т���ќ���bp|9��b(��Hj| ڟ�>m�r^%4�BTg|��H6"]f��v��-��/C�HTf{��0^���X�d�@ Hlq�gFۨr��n�rG	����.b5!`��
�a����AB�L4��s��lN6�Q�nJ]��9�=�hpV��ܮ��3+&{\����T'd1&Y\�>�+�,`�-��6��h[2	�9~�c�-�X����2�13ZF����o�F	��W��z���[x��>�[g#�sH~w�H�g�
n��$���v��f,�\R���ƃ�u�?
��44���jOË�>�kNwn1V9�h��W������$�+6�/J�[��|apl�9��S�9Wy��ͣ��
�7}�{��zo�IEND�B`�lib/themes/light/images/16px/back.svg000064400000003766147361034410013411 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="12px" viewBox="0 0 14 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>arrow_left</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M2.81066017,6.75 L6.03033009,9.96966991 C6.3232233,10.2625631 6.3232233,10.7374369 6.03033009,11.0303301 C5.73743687,11.3232233 5.26256313,11.3232233 4.96966991,11.0303301 L0.469669914,6.53033009 C0.176776695,6.23743687 0.176776695,5.76256313 0.469669914,5.46966991 L4.96966991,0.969669914 C5.26256313,0.676776695 5.73743687,0.676776695 6.03033009,0.969669914 C6.3232233,1.26256313 6.3232233,1.73743687 6.03033009,2.03033009 L2.81066017,5.25 L13,5.25 C13.4142136,5.25 13.75,5.58578644 13.75,6 C13.75,6.41421356 13.4142136,6.75 13,6.75 L2.81066017,6.75 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-30.000000, -29.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="arrow" transform="translate(20.000000, 22.000000)">
                        <g id="Group-2">
                            <g id="Group">
                                <g id="arrow_left" transform="translate(10.000000, 11.000000)">
                                    <mask id="mask-2" fill="white">
                                        <use xlink:href="#path-1"></use>
                                    </mask>
                                    <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                                </g>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/undo.png000064400000001235147361034410013430 0ustar00�PNG


IHDR�a	pHYs��OIDATx�chhh`�Ɔz0]� ~k}C[]Cs}
\�
�%����k���J���J������ںz���r�<�M@B���ֵ�u�1d5L�q�;��dƋ�&����~�YD����:��jC�DkM�Sω=���D5.Lӝ���/�']��5��>��>.���c�@C8�\&Z�xv�[�6�����N��<�q�sSM9X����7�o�"�ſ�G�l����ף�����
�������ߺ��ź�*�` �-��d���ap�q���G_����@�@��{jM}��xʣ3^�w�9����A��z�KJ�&\i5��Ҧn��*�
@�Tַ�5tH�7��qqc�ju}37H�A�N:��f��@uR�XC�F�M��F�
@�Arm�ey
������v�zC-Ps}��`X�j�+g(��T����ق��3Zf���V��^�u�jV��0Z��L��RP4@c�Ț��-�=|a0����e�5%`�c$$T\�j���^]��_���?�
����{RFƍ j�Y��/_Ӝ��x+n��]�(����;���,�\��A#8�j
���f]�^C%0GIEND�B`�lib/themes/light/images/16px/directory_opened.svg000064400000005002147361034410016030 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>server</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M2.45454545,1.63636364 C2.00267611,1.63636364 1.63636364,2.00267611 1.63636364,2.45454545 L1.63636364,5.72727273 C1.63636364,6.17914207 2.00267611,6.54545455 2.45454545,6.54545455 L15.5454545,6.54545455 C15.9973239,6.54545455 16.3636364,6.17914207 16.3636364,5.72727273 L16.3636364,2.45454545 C16.3636364,2.00267611 15.9973239,1.63636364 15.5454545,1.63636364 L2.45454545,1.63636364 Z M2.45454545,0 L15.5454545,0 C16.9010626,-1.81672859e-16 18,1.09893743 18,2.45454545 L18,5.72727273 C18,7.08288075 16.9010626,8.18181818 15.5454545,8.18181818 L2.45454545,8.18181818 C1.09893743,8.18181818 1.81672859e-16,7.08288075 0,5.72727273 L0,2.45454545 C-1.81672859e-16,1.09893743 1.09893743,2.72509288e-16 2.45454545,0 Z M2.45454545,9.81818182 L15.5454545,9.81818182 C16.9010626,9.81818182 18,10.9171193 18,12.2727273 L18,15.5454545 C18,16.9010626 16.9010626,18 15.5454545,18 L2.45454545,18 C1.09893743,18 1.81672859e-16,16.9010626 0,15.5454545 L0,12.2727273 C-1.81672859e-16,10.9171193 1.09893743,9.81818182 2.45454545,9.81818182 Z M2.45454545,11.4545455 C2.00267611,11.4545455 1.63636364,11.8208579 1.63636364,12.2727273 L1.63636364,15.5454545 C1.63636364,15.9973239 2.00267611,16.3636364 2.45454545,16.3636364 L15.5454545,16.3636364 C15.9973239,16.3636364 16.3636364,15.9973239 16.3636364,15.5454545 L16.3636364,12.2727273 C16.3636364,11.8208579 15.9973239,11.4545455 15.5454545,11.4545455 L2.45454545,11.4545455 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-46.000000, -93.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="side-bar" transform="translate(1.000000, 69.000000)">
                    <g id="server" transform="translate(46.000000, 24.000000)">
                        <mask id="mask-2" fill="white">
                            <use xlink:href="#path-1"></use>
                        </mask>
                        <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/deselect_all.png000064400000000633147361034410015104 0ustar00�PNG


IHDR�a	pHYs��MIDATxڭ�Kn�0�9Td�[A�b �U�$�N
�z)�
(vŢi�Y�<�`�0�/�.!���\ ���qvY�iqkqii�j�d���GO~��v��RE���`�S����x\D"�x,
�c�u�m[6M��� l��#�����O��4
��[�=�w^�}�-`L~um9&�^Xt8�N��z���-��$����:Ap���3��[��uϙ8��UU��q\��?��u]s�w
�/��S@5q
h���0�Dq
��`���8��SX~�(T%��@2A���=�)%�m���e��0����u]�yߍ/x
h�ˇ�IEND�B`�lib/themes/light/images/16px/text_file.svg000064400000006363147361034410014470 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>textfile</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M24.2222222,15.1111111 L19.7777778,15.1111111 C19.286858,15.1111111 18.8888889,14.713142 18.8888889,14.2222222 L18.8888889,9.77777778 L12.6666667,9.77777778 C12.1757469,9.77777778 11.7777778,10.1757469 11.7777778,10.6666667 L11.7777778,24.8888889 C11.7777778,25.3798087 12.1757469,25.7777778 12.6666667,25.7777778 L23.3333333,25.7777778 C23.8242531,25.7777778 24.2222222,25.3798087 24.2222222,24.8888889 L24.2222222,15.1111111 L25.1111111,15.1111111 C25.6020309,15.1111111 26,14.713142 26,14.2222222 C26,14.0994923 25.9751269,13.9825718 25.9301467,13.8762266 C25.9765874,13.9888881 26,14.1043482 26,14.2222222 L26,24.8888889 C26,26.3616482 24.8060927,27.5555556 23.3333333,27.5555556 L12.6666667,27.5555556 C11.1939073,27.5555556 10,26.3616482 10,24.8888889 L10,10.6666667 C10,9.19390733 11.1939073,8 12.6666667,8 L19.7777778,8 C20.0135258,8 20.2396181,8.09365052 20.4063171,8.26034953 L25.7396505,13.5936829 C25.823,13.6770324 25.8880874,13.7752302 25.9323374,13.8820592 Z M20.6666667,11.0348565 L20.6666667,13.3333333 L22.9651435,13.3333333 L20.6666667,11.0348565 Z M21.5555556,17.7777778 C22.0464753,17.7777778 22.4444444,18.1757469 22.4444444,18.6666667 C22.4444444,19.1575864 22.0464753,19.5555556 21.5555556,19.5555556 L14.4444444,19.5555556 C13.9535247,19.5555556 13.5555556,19.1575864 13.5555556,18.6666667 C13.5555556,18.1757469 13.9535247,17.7777778 14.4444444,17.7777778 L21.5555556,17.7777778 Z M21.5555556,21.3333333 C22.0464753,21.3333333 22.4444444,21.7313024 22.4444444,22.2222222 C22.4444444,22.713142 22.0464753,23.1111111 21.5555556,23.1111111 L14.4444444,23.1111111 C13.9535247,23.1111111 13.5555556,22.713142 13.5555556,22.2222222 C13.5555556,21.7313024 13.9535247,21.3333333 14.4444444,21.3333333 L21.5555556,21.3333333 Z M16.2222222,14.2222222 C16.713142,14.2222222 17.1111111,14.6201913 17.1111111,15.1111111 C17.1111111,15.6020309 16.713142,16 16.2222222,16 L14.4444444,16 C13.9535247,16 13.5555556,15.6020309 13.5555556,15.1111111 C13.5555556,14.6201913 13.9535247,14.2222222 14.4444444,14.2222222 L16.2222222,14.2222222 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-978.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="textfile" transform="translate(869.000000, 0.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/sort.png000064400000002374147361034410013457 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:1BAB37E1206411E8B127D46598E935EA" xmpMM:DocumentID="xmp.did:1BAB37E2206411E8B127D46598E935EA"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1BAB37DF206411E8B127D46598E935EA" stRef:documentID="xmp.did:1BAB37E0206411E8B127D46598E935EA"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�lIDATx�b���?%���B@�, ���@���ڻ@|��X�7��s�؂O'##++�4 3�����Y���M5i	�:\�������_9����������/	��ؙ��/�cx��+÷�L
� �\����FR������{7�k�a��d���;���
���!Ā��ޭR�pM��r&�`��,/�s���i�9��?`5 �o���쏟�1��v��￿��J@�L���O�d�%�121.��՛O��(E@�W)Ȋ~�z�1�G�@ޜ����������ɛ�@+����?:-��+�G66��@��$�����X
�|`�y�b�C�%D��IEND�B`�lib/themes/light/images/16px/directory.png000064400000002534147361034410014472 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:DB721B1F206611E8A913C2C3A03D56A3" xmpMM:DocumentID="xmp.did:DB721B20206611E8A913C2C3A03D56A3"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:DB721B1D206611E8A913C2C3A03D56A3" stRef:documentID="xmp.did:DB721B1E206611E8A913C2C3A03D56A3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��?�IDATxڤS=K\A=wf�� � ��M[�����.!]��*iR����--!�)Dwq���ͽ�����/�p`f�~�s�y$"��
v|��]=��wn�lf�(�/H�)�i�qO�P����kc�~�ou�?a�m5in����39a�|�=]��OjZ��|5�n�P�4Le���@�Vn,����^��&�R���$�Q��
�k�#�*�%&���k ��9K�!ˏ�$T�%�ئ���B*��T����R��u�u�V�2c����[���Iq�_��bpmw��W��*�Pm�㹸v���r����-N��k�J@�e}�t����9��a@�˽��5�ȯ0��QM�* =䒩�S�ӧm����!�}�g8x�<փ~ܼJ��\�nb�<��^�m
03��^~���?���e�n=+����=���ӣo�����a�`J��4���IEND�B`�lib/themes/light/images/16px/redo.svg000064400000003533147361034410013432 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="14px" viewBox="0 0 17 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>redo</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1124.000000, -27.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <g id="redo" transform="translate(1016.000000, 0.000000)">
                            <path d="M21.4910865,34.333596 C21.66687,34.509375 21.605346,34.65 21.35925,34.65 L14.175,34.65 C11.31678,34.65 9,36.96678 9,39.825 C9,42.684975 11.31327,45 14.175,45 L18.01404,45 C18.6363,45 19.140795,44.50077 19.140795,43.875 C19.140795,43.254495 18.638055,42.75 18.01404,42.75 L14.175,42.75 C12.55779,42.75 11.25,41.44221 11.25,39.825 C11.25,38.20959 12.55959,36.9 14.175,36.9 L21.35925,36.9 C21.6088605,36.9 21.668625,37.0423845 21.4910865,37.2181635 L20.8038015,37.9054485 C20.3643495,38.3449005 20.36259,39.0533085 20.8038015,39.4962885 C21.2432535,39.9357405 21.9551715,39.9375 22.3963965,39.494529 L25.3196415,36.5730435 C25.7590935,36.131832 25.7626125,35.4216735 25.3196415,34.9786935 L22.3963965,32.0572035 C21.9569445,31.615992 21.2467815,31.6124775 20.8038015,32.055444 C20.3661045,32.494896 20.3643495,33.206814 20.8038015,33.646284 L21.4910865,34.333596 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/invert_selection.svg000064400000004245147361034410016056 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>invert_selection</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M9.8,9.8 L9.8,14.3 L14.3,14.3 L14.3,9.8 L9.8,9.8 Z M8.9,8 L15.2,8 C15.6970563,8 16.1,8.40294373 16.1,8.9 L16.1,15.2 C16.1,15.6970563 15.6970563,16.1 15.2,16.1 L8.9,16.1 C8.40294373,16.1 8,15.6970563 8,15.2 L8,8.9 C8,8.40294373 8.40294373,8 8.9,8 Z M18.8,8 L25.1,8 C25.5970563,8 26,8.40294373 26,8.9 L26,15.2 C26,15.6970563 25.5970563,16.1 25.1,16.1 L18.8,16.1 C18.3029437,16.1 17.9,15.6970563 17.9,15.2 L17.9,8.9 C17.9,8.40294373 18.3029437,8 18.8,8 Z M18.8,17.9 L25.1,17.9 C25.5970563,17.9 26,18.3029437 26,18.8 L26,25.1 C26,25.5970563 25.5970563,26 25.1,26 L18.8,26 C18.3029437,26 17.9,25.5970563 17.9,25.1 L17.9,18.8 C17.9,18.3029437 18.3029437,17.9 18.8,17.9 Z M19.7,24.2 L24.2,24.2 L24.2,19.7 L19.7,19.7 L19.7,24.2 Z M8.9,17.9 L15.2,17.9 C15.6970563,17.9 16.1,18.3029437 16.1,18.8 L16.1,25.1 C16.1,25.5970563 15.6970563,26 15.2,26 L8.9,26 C8.40294373,26 8,25.5970563 8,25.1 L8,18.8 C8,18.3029437 8.40294373,17.9 8.9,17.9 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1157.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <g id="invert_selection" transform="translate(1050.000000, 22.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/file.png000064400000002662147361034410013407 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:84E6C0B3213A11E8BD0BA52BCC763BA1" xmpMM:InstanceID="xmp.iid:84E6C0B2213A11E8BD0BA52BCC763BA1" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:2239E027212711E881F1A8822B636F74" stRef:documentID="xmp.did:2239E028212711E881F1A8822B636F74"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�`nB"IDATxڤ��kA�ߏٽM�.�����ED��؈ Q[l46'������&`�(�	"�vV�@4�a$�\.��μ��\N�n�r`��7���y��
�3\w19��"L���|�=���{O��{��>�QT�k���dV���J	GX�X��L8n�}�.��;A�����)"���,;�n;��G��wf�B�=
R��dh�<!~b�+��y��
X*8�A�JB䖼
0s�%�\�ٞa��H�	�nZ����7B��X��m�Ѭ�r�7���П5����0"*�P�zb�D�BU^�U����Z�LN:�ix^�:Q��e�7 >۹��IT4�H8f��z��|�ŚHun�Pļ�qC�iigO{�!@or�A5{ᰉ?�j��ز[:�C���[[�;s\��Z��>Qb���ӣG��߻K߾��b'BhZ/��>�:Q=X���4��Ik�fP�V��0?i�x*b^��徳�ť�����Y�>,*�O�#���Z�g��J@���zl����-����
�ټIEND�B`�lib/themes/light/images/16px/sort.svg000064400000002570147361034410013470 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="22px" height="13px" viewBox="0 0 22 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>sort</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-885.000000, -28.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="sort" transform="translate(779.000000, 0.000000)">
                            <path d="M29,18.99182 L24.99952,23 L20.99992,18.99182 L24.00006,18.99182 L24.00006,10.99196 L25.999816,10.99196 L25.999816,18.99182 L29,18.99182 Z M7,10.99196 L21.00014,10.99196 L21.00014,12.991716 L7,12.991716 L7,10.99196 Z M7,15.9919 L19.00034,15.9919 L19.00034,17.991656 L7,17.9925162 L7,15.9919 Z M7,20.99184 L16.0002,20.99184 L16.0002,22.991596 L7,22.991596 L7,20.992698 L7,20.99184 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/preview.svg000064400000004074147361034410014163 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="19px" height="20px" viewBox="0 0 19 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>preview</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1044.000000, -25.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="preview" transform="translate(937.000000, 0.000000)">
                            <path d="M25.302566,9.6614688 L17.898386,9.6614688 L17.898386,7.9986648 C17.898386,7.5457848 17.52119,7.1672628 17.066984,7.1672628 C16.614104,7.1672628 16.235582,7.5444588 16.235582,7.9986648 L16.235582,9.6614688 L8.831402,9.6614688 C8.378522,9.6614688 8,10.0386648 8,10.4928708 L8,20.3899308 C8,20.8428108 8.377196,21.2213328 8.831402,21.2213328 L15.668462,21.2213328 L13.061342,25.7542128 C12.8342322,26.1314088 12.9856376,26.6613328 13.3641528,26.8870928 C13.7413488,27.1142026 14.2712728,26.9627972 14.4970328,26.584282 L17.0656308,22.051402 L19.6342288,26.584282 C19.7856342,26.8485776 20.0499468,27 20.3514248,27 C20.5028302,27 20.6157204,26.9628108 20.7671428,26.8871098 C21.1443388,26.66 21.2957408,26.1699138 21.069957,25.7542298 L18.462837,21.2213498 L25.299897,21.2213498 C25.752777,21.2213498 26.131299,20.8441538 26.131299,20.3899478 L26.1339544,10.4541278 C26.1339544,10.0012478 25.7554324,9.6612478 25.3025524,9.6612478 L25.302566,9.6614688 Z M24.471164,19.5214688 L9.662464,19.5214688 L9.662464,11.2856488 L24.509584,11.2856488 L24.509584,19.5214688 L24.471164,19.5214688 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/edit.svg000064400000004320147361034410013421 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="20px" viewBox="0 0 18 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>edit</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M10.6666667,2.84517797 L2.33333333,11.1785113 L2.33333333,13.3333333 L4.48815536,13.3333333 L12.8214887,5 L10.6666667,2.84517797 Z M11.2559223,1.07741102 L14.5892557,4.41074435 C14.9146926,4.73618126 14.9146926,5.26381874 14.5892557,5.58925565 L5.42258898,14.7559223 C5.26630867,14.9122026 5.05434707,15 4.83333333,15 L1.5,15 C1.03976271,15 0.666666667,14.626904 0.666666667,14.1666667 L0.666666667,10.8333333 C0.666666667,10.6123196 0.754464034,10.400358 0.910744349,10.2440777 L10.077411,1.07741102 C10.4028479,0.751974106 10.9304854,0.751974106 11.2559223,1.07741102 Z M1.5,19.1666667 C1.03976271,19.1666667 0.666666667,18.7935706 0.666666667,18.3333333 C0.666666667,17.873096 1.03976271,17.5 1.5,17.5 L16.5,17.5 C16.9602373,17.5 17.3333333,17.873096 17.3333333,18.3333333 C17.3333333,18.7935706 16.9602373,19.1666667 16.5,19.1666667 L1.5,19.1666667 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-695.000000, -25.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="edit" transform="translate(587.000000, 0.000000)">
                            <g transform="translate(9.000000, 7.000000)">
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/directory_opened.png000064400000002402147361034410016016 0ustar00�PNG


IHDRĴl;tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:5F805C60206711E89800F32E07E1A149" xmpMM:DocumentID="xmp.did:5F805C61206711E89800F32E07E1A149"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5F805C5E206711E89800F32E07E1A149" stRef:documentID="xmp.did:5F805C5F206711E89800F32E07E1A149"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>$�rIDATx�앿J�P��R�A���S��}��Eq��bA��RA|G�8��Rp-.���&���$-r���N^hn����	DD�cjMkm��������ߖ�B@��C�����Bpݤ�c�*�|=xj9�}
�\�4��ޯwp$�_:���
#ͣ�'4���	��}#}	�5���`�Ly��M����X�J9�����j/}�Ȓ
��J����6vG_�e�'r J����l>���1�D�ɐz�|�"L�ZB+�C1I�
��:n�L��f��(s�����3��
�f�����ؐ�!Y�4XII��dBVJ�:څ$AI��w��X�y�i�te��}ٔ���ؔ��\y��iZ�A���ܩ�IEND�B`�lib/themes/light/images/16px/download.png000064400000002530147361034410014271 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:AC93C9CA206311E8BB36E3A65CBC75EE" xmpMM:DocumentID="xmp.did:AC93C9CB206311E8BB36E3A65CBC75EE"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:AC93C9C8206311E8BB36E3A65CBC75EE" stRef:documentID="xmp.did:AC93C9C9206311E8BB36E3A65CBC75EE"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>>�!�IDATxڤSM(DQ>������J���� ��ʤ(�ɖdC����Tv�v�,$�"RԔLÂ2�W�a��w���a�dP���|�|��{�c�i�������|����w��p([�(���?)�a��
H�ϕU���ﭰ<k���LD�_0d�Jg7&f�m�߶�LSOw�<Enˀ��[����M]wVJLJ����un{�SӨ���H��̯/(�l�E�N_�� ��x�T*���CA��KZ�ה�P_p7��78�o�L`��!�ȱ�����2N��4Uo�:��E>��1�EN�!�UV���--������:�[�X/�����F�.��1��BN��h'�����u��O�)~�H��d���6E����bB��
���wD�zUU������T����qSv,LYX;!磀��y�uB�
P��rh��	p�L��v$�1��7W���.�5IEND�B`�lib/themes/light/images/16px/cut.png000064400000003132147361034410013254 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:6FEEC396206311E8A4FCA3C879562737" xmpMM:DocumentID="xmp.did:6FEEC397206311E8A4FCA3C879562737"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:6FEEC394206311E8A4FCA3C879562737" stRef:documentID="xmp.did:6FEEC395206311E8A4FCA3C879562737"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��r��IDATxڤSMHQ>�ܹo�{cYi��T�0��%�
�Z�-�R[.,�"Z	-\��4� ����~��EA�l�T�R)�y����?�y�Cl�������}g�Z����5�8�p�ӱ9\��ɷ�'D2b�9[�0(P@!Z��p��(!��-�|}��&�:7�69��j
[}��j�ұ	o�(�J�*���L'y��������A�X/@B�<H:e�ɇ��HW���������K�~&!���]�i3� 1͍̇�#�z���@^�I� �μC۸�k�)��M���ힷ(3İI�Qn��{eֽ(2���O�}�4W�g�]�h�{��m�8�3V;�<��yN�Y��s�Y*A�X�)cm}֑>^^	�!!��j�.=w@d�0[�JVX%jϣM"
�WIG���2e�a�+H\7n�Y�Bm��hSV7�A<�A�8��NT��'�$�:��}�����Д��؏)�zs˶�m-
��A�*FӋ*��z�fP�k�E+!βw�n���=���DŨ�!�s�Q����ꗈp�y���*DM���o�֝-�HTT<�Z	.�5���r�O!ځ�;X�a�<�+~���s ae]��R����8��sLV	v��/s��v�7�`vqr�����胿T���Ml�
<���_Efj7�5�H��qE�U�}Ó1�L�)�,��p�J�#�1U)�
0��Z�D�IEND�B`�lib/themes/light/images/16px/add_folder.svg000064400000006337147361034410014571 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>add folder</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M6.78619658,1.97727273 L2.72727273,1.97727273 C2.22519568,1.97727273 1.81818182,2.4012455 1.81818182,2.92424242 L1.81818182,16.1818182 C1.81818182,16.7048151 2.22519568,17.1287879 2.72727273,17.1287879 L17.2727273,17.1287879 C17.7748043,17.1287879 18.1818182,16.7048151 18.1818182,16.1818182 L18.1818182,5.76515152 C18.1818182,5.24215459 17.7748043,4.81818182 17.2727273,4.81818182 L9.09090909,4.81818182 C8.78695165,4.81818182 8.50310499,4.65994211 8.33449973,4.3964964 L6.78619658,1.97727273 Z M9.57743978,2.92424242 L17.2727273,2.92424242 C18.7789584,2.92424242 20,4.19616075 20,5.76515152 L20,16.1818182 C20,17.7508089 18.7789584,19.0227273 17.2727273,19.0227273 L2.72727273,19.0227273 C1.22104159,19.0227273 0,17.7508089 0,16.1818182 L0,2.92424242 C-2.01858732e-16,1.35525166 1.22104159,0.0833333333 2.72727273,0.0833333333 L7.27272727,0.0833333333 C7.57668472,0.0833333333 7.86053138,0.241573045 8.02913663,0.505018754 L9.57743978,2.92424242 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-152.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="folder" transform="translate(45.000000, 0.000000)">
                            <g id="add-folder" transform="translate(8.000000, 8.000000)">
                                <path d="M8.74625688,8.52441813 C8.74625688,8.02468754 9.13869217,7.63157895 9.63751734,7.63157895 C9.81543165,7.63157895 9.99419151,7.6912733 10.1363643,7.78678338 C10.3738565,7.94198781 10.5287996,8.21571644 10.5287996,8.52442686 L10.5287996,10.1071654 L12.1087395,10.1071654 C12.5956661,10.1071654 13,10.5122373 13,11.0000046 C13,11.4877719 12.5956443,11.8928438 12.1087395,11.8928438 L10.5287996,11.8928438 L10.5287996,13.4755819 C10.5287996,13.9753125 10.1244439,14.3684211 9.63753913,14.3684211 C9.13869217,14.3684211 8.74627867,13.9752906 8.74627867,13.4755819 L8.74627867,11.8928438 L7.15441836,11.8928438 C6.91692615,11.8928438 6.69133251,11.7973337 6.52449086,11.6310479 C6.36956086,11.4647577 6.26315789,11.249859 6.26315789,11.0000046 C6.26315789,10.5122155 6.66751356,10.1071654 7.15441836,10.1071654 L8.74627867,10.1071654 L8.74625688,8.52441813 Z" id="Fill-1" fill="#8591B0"></path>
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/duplicate.svg000064400000004524147361034410014454 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="21px" viewBox="0 0 18 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>duplicate</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-626.000000, -25.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="duplicate" transform="translate(519.000000, 0.000000)">
                            <path d="M22.5417436,23.1535575 C24.3242866,23.1535575 25.7696536,21.7073505 25.7696536,19.9239675 L25.7696536,10.2303675 C25.7696536,8.44782452 24.3242656,6.99993752 22.5417436,6.99993752 L16.0743736,6.99993752 C14.2910116,6.99993752 12.8464636,8.44614452 12.8464636,10.2303675 L12.8464636,11.8463805 L11.2312696,11.8463805 C9.45036458,11.8463805 8,13.2925875 8,15.0759705 L8,24.7695705 C8,26.5521129 9.44538758,28 11.2279096,28 L17.6952796,28 C19.4786416,28 20.9231896,26.5521551 20.9231896,24.7664205 L20.9231896,23.1536835 L22.5417436,23.1535575 Z M9.61519358,15.4803675 C9.61519358,14.3655615 10.5183616,13.4615745 11.6356246,13.4615745 L17.2875646,13.4615745 C18.4031896,13.4615745 19.3079956,14.3647425 19.3079956,15.4803675 L19.3079956,24.3652554 C19.3079956,25.4808804 18.4048276,26.3848683 17.2875646,26.3848683 L11.6356246,26.3848683 C10.5199996,26.3848683 9.61519358,25.4808804 9.61519358,24.3652554 L9.61519358,15.4803675 Z M14.4615736,10.6339875 C14.4615736,9.51918152 15.3647416,8.61519452 16.4820046,8.61519452 L22.1339446,8.61519452 C23.2495696,8.61519452 24.1543756,9.51918152 24.1543756,10.6348065 L24.1543756,19.5196944 C24.1543756,20.6345004 23.2536646,21.5384874 22.1347636,21.5384874 L20.9223496,21.5384874 L20.9223496,15.0736374 C20.9223496,13.2910944 19.4728666,11.8465695 17.6919196,11.8465695 L14.4614896,11.8465695 L14.4615736,10.6339875 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/open.png000064400000002574147361034410013433 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:275D2D6D206511E8B16D8B51EE26D51A" xmpMM:DocumentID="xmp.did:275D2D6E206511E8B16D8B51EE26D51A"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:275D2D6B206511E8B16D8B51EE26D51A" stRef:documentID="xmp.did:275D2D6C206511E8B16D8B51EE26D51A"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�_��IDATxڤS;hQ=��o7AL "�Q$`���B!�����R��`�Z��t�h�6�Fl,QDX?(X��b0�f�dg���}��8�I�μ9��;�;$"��4�=�,���"�4��#�'�>��xX	��`���3�P������ܾq�'`��ty���R:2vh���]�
�[E�;���9�> ��F��K�@`[J)�<��Ï�H%���9(�젞C`|l�1��-"��Q�K=��v�y�۩���ٯ�_
���(��wd˥�[C���7�|C��H�֚�t���.�|O�%LvI,�D�u�ϋ]Ÿv���w�o��k�7��M�NOF�R
d�3�]�v�1x.�O���cy�$�W`��~��3R�W��o�hD��ΐ�˜U���j�0�j�ZҕRbaYЋ-���}Cg�a��0��=Q}=8U�\�/�~z���,D�Zj��$@D���1-DU�B���HCc+�����?iQu���YH��bG IEND�B`�lib/themes/light/images/16px/resize.svg000064400000003312147361034410013775 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>resize</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-728.000000, -26.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="resize" transform="translate(621.000000, 0.000000)">
                            <g transform="translate(8.000000, 8.000000)">
                                <polygon id="Fill-1" points="10.5307826 0.170432609 16.0716522 0.163553478 17.9058913 0.160497391 17.9081843 1.99549957 17.9142985 7.53558652 16.0815854 7.53864261 16.0762363 3.35129478 10.7263233 8.46349043 9.45992543 7.13749696 14.834295 1.99927957 10.5330776 2.00386565"></polygon>
                                <polygon id="Fill-2" points="7.46921739 17.8295866 1.92834783 17.8364649 0.0933454565 17.8395222 0.0918170217 16.003757 0.0918170217 16.004522 0.0849386739 10.464435 1.91917761 10.462142 1.9245287 14.6481202 7.27365913 9.53670717 8.54082 10.8627007 3.16566783 16.0001354 7.46688522 15.9955493"></polygon>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/download.svg000064400000004414147361034410014307 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="17px" viewBox="0 0 16 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>download</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M7.2,10.0686292 L7.2,0.8 C7.2,0.3581722 7.5581722,0 8,0 C8.4418278,0 8.8,0.3581722 8.8,0.8 L8.8,10.0686292 L10.6343146,8.23431458 C10.946734,7.92189514 11.453266,7.92189514 11.7656854,8.23431458 C12.0781049,8.54673401 12.0781049,9.05326599 11.7656854,9.36568542 L8.56568542,12.5656854 C8.25326599,12.8781049 7.74673401,12.8781049 7.43431458,12.5656854 L4.23431458,9.36568542 C3.92189514,9.05326599 3.92189514,8.54673401 4.23431458,8.23431458 C4.54673401,7.92189514 5.05326599,7.92189514 5.36568542,8.23431458 L7.2,10.0686292 Z M0,12 C0,11.5581722 0.3581722,11.2 0.8,11.2 C1.2418278,11.2 1.6,11.5581722 1.6,12 L1.6,14.4 C1.6,14.8418278 1.9581722,15.2 2.4,15.2 L13.6,15.2 C14.0418278,15.2 14.4,14.8418278 14.4,14.4 L14.4,12 C14.4,11.5581722 14.7581722,11.2 15.2,11.2 C15.6418278,11.2 16,11.5581722 16,12 L16,14.4 C16,15.7254834 14.9254834,16.8 13.6,16.8 L2.4,16.8 C1.0745166,16.8 0,15.7254834 0,14.4 L0,12 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-301.000000, -27.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="download" transform="translate(192.000000, 0.000000)">
                            <g transform="translate(10.000000, 9.000000)">
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/rm.png000064400000002171147361034410013101 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:63B80D7F206211E88422E06AF9047C94" xmpMM:DocumentID="xmp.did:63B80D80206211E88422E06AF9047C94"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:63B80D7D206211E88422E06AF9047C94" stRef:documentID="xmp.did:63B80D7E206211E88422E06AF9047C94"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>E�]�IDATx�b���?%�D�Oڸ�������5�*��5>
m���20�^����<o&�(P3�%�@��x5��[�1h3##�U��6.C�4k�Ԃ�
�8���!X4;¼�
D� N�#�k�E6�!`��q�n$�15�`�ڬ�̌Ħ����/�XY9�@_3ዪ�L�W �/��^h��g<㳠2��5����ӌ#��Gx�1�GqiF6&G�y����X����1�IEND�B`�lib/themes/light/images/16px/fullscreen.png000064400000003234147361034410014626 0ustar00�PNG


IHDRrP6�tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:6AFECFDD212011E897FCA94DC07354CB" xmpMM:DocumentID="xmp.did:6AFECFDE212011E897FCA94DC07354CB"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:6AFECFDB212011E897FCA94DC07354CB" stRef:documentID="xmp.did:6AFECFDC212011E897FCA94DC07354CB"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>#;IDATxڬTMh]E>���^~L06Al�k� b[A�W��JV.$"(m�q!i,���DJ���Bv6�R�"&�@R��ޝ{���//�/w�0ܹ3�|s��}sYU��;��#+[k��E9x��W�%l���k�=�J�T�$l�X;�`���7�����a>��@u��S���}���c-��`�ЌBrO#�Yc�#]!V�n�GDI����6Щ�,-�
�l�8<Y�x`�ǤB�1�?��RA��I���o!��Y�~��
��ה���t�Q�BM�5�Qi�I
�r�D��0Qz+{��ܭ�J%ۼ��&�7��6����5�Q.�5S�s>%C9��z�VF�)���K�Rŭ_Z�H�~ć��-E�w� �W]��5v��4���ˉ��M��I��@�X���?�C�Ҡ����)%��+u�(�k����Eǎ�܄8�P����;5���f�Iu7�v��y�4������Y^�S��w�X�Ь���4�OC�>-���հ���j�_ 쉖�x0}@/�@��t��f6+eg)�'���;�w��h�<�|c�"who�T?J�s�'тQ�Fs�8o��R�]�wS*���q�ZD�{Ȁ���UMQ�/C���D�GZ#�8���;��-�3�Q�Z5ߚ��O`]H�g�rA�<?�?�s��'Ԥ���89�aa�<@�^u��!o�E��"��/�r,@�`�i�
O������"4�|�{`��q�?G�|�`��m���<IEND�B`�lib/themes/light/images/16px/extract.png000064400000002612147361034410014135 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:DBB6BF4A206711E894F6CC58192F7F29" xmpMM:DocumentID="xmp.did:DBB6BF4B206711E894F6CC58192F7F29"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:DBB6BF48206711E894F6CC58192F7F29" stRef:documentID="xmp.did:DBB6BF49206711E894F6CC58192F7F29"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>@r��IDATx�ē�kA�����.1w$hTT�X�v��D��`�-�RX%��@����FS{�w�h.�Ḏ�������l.M
fw��3��-D���0���k��k��DCI(D9CQ q�-Ur�܍��X�:p���tҥr��E1.)�F<�\b>G��Zk������z¾��B�HP�Q2�B�Z��S�Y�+P~K��ѣ���3���'���Dz4�{w�p�����r��Hd�4�z��Z�
cg��7��X62�ot�霱� �նkBR�HVT��?)��.ĥkW�Q	H������v:f-�������an�p!L������/u�qӲ}٨|��a���ؗâ����'��,�}hM��Q�R��'�a�m!���5�'���f	H�����w����IJy�f���v�X&�z�ogE�{L�a�'��VV
���LuT�e.�c��@7�s\C^�?Hh����>m(@�NtR�6���7�`��؏��%�IEND�B`�lib/themes/light/images/16px/view.png000064400000003014147361034410013432 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:9969F182206511E89DD3E16E42412FCA" xmpMM:DocumentID="xmp.did:9969F183206511E89DD3E16E42412FCA"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:9969F180206511E89DD3E16E42412FCA" stRef:documentID="xmp.did:9969F181206511E89DD3E16E42412FCA"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�<��|IDATxڤS�ka}3�]E<�B�+#ZXX���E�I�($ ;��J�@$��`l�/H�,,-�G�A.������vg��ޛ�͛Yqw�ϕ�����I8RQӷ�,Y����K-�nJ�>���K[��$���޵J��s�iӞ�Ƚ��}U}�3�0��Ux�*<�$)�q���	��	�]�q*,�����Ղ	�H�*�g���>�Wi���:�;R3(�O\�w�@dY"�������s�R�K�7j	�uJ\������]�j��^`;��Ǥ��q�N�]�9����fh�0����^��.��}��2O}J�/��Y2�
s[��9
��C둀]�q}�"6	n�\ޱ������ułF�<�����o�b�f�q���=Nӻ$�m���^����úy�'�v���$bZw�n1��	H/�')�d�v� �d�<�>$�h�m<����
	�6�d�٣�(��T�2�����t��X�z.0��+4j�n�:O֌��~�^�d��\�7򗕳��?y�)Y��z�eIt�?E����z�.���ǓZ+�B��{4�3�y����q?�Ý
��l��e�1H�#�!q*r{C#ډH�ΒH��H�O��X�(�>qIEND�B`�lib/themes/light/images/16px/redo.png000064400000001240147361034410013410 0ustar00�PNG


IHDR�a	pHYs��RIDATx�chhh`@�P���������������,��a�147��2�֖3���3�7t�WԷ�7�V
���7�U�
C��\_�P[[�ѵ��n��g&��7���s��]Y
�l�j�J���B���5]7��h2P3����'��o=��g�	'�9N�tIg����3��j\�f�{�Sω=�5eH��3�"z��/��?�o����:^�XSM9Cz�4g�)��k��_m����� ������q����3��ah��˵����Ѻ��E�Y�k��߽��
4�U1�6u�X��?h��-5�@oՃ
��mt�9��`ƫ��S�К��g瞅-���
ղ�)�yo��N:�d@�[ \]��]�ثZ��.	�@u���-`yx,��14�V3xL�r�r�y
��m�eШ��	d�J�hqZj+2Zf��-���f��E��jmu�(	Fp�1Ӿ��h���V��(�#ljz����!�}u����-�=|Q@�����1$�mu�޼�ͦ>|�W߫�L�
Hy�膄
ќ���U��k�5�,���&d�!��o]Y��<�հ�#hz���BH4b
B�a�j��IEND�B`�lib/themes/light/images/16px/cut.svg000064400000007132147361034410013273 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="19px" viewBox="0 0 18 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>scissors</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M9.52456136,8.27186588 L15.9845294,1.81189787 C16.3304517,1.46597556 16.8913026,1.46597556 17.2372249,1.81189787 C17.5831472,2.15782017 17.5831472,2.71867104 17.2372249,3.06459335 L7.2624153,13.0394029 C7.57411549,13.5669023 7.75298242,14.1822119 7.75298242,14.8392982 C7.75298242,16.7961302 6.16665661,18.3824561 4.20982454,18.3824561 C2.25299248,18.3824561 0.666666667,16.7961302 0.666666667,14.8392982 C0.666666667,12.8824661 2.25299248,11.2961403 4.20982454,11.2961403 C4.86691081,11.2961403 5.48222046,11.4750072 6.00971982,11.7867074 L8.27186588,9.52456136 L6.00971982,7.2624153 C5.48222046,7.57411549 4.86691081,7.75298242 4.20982454,7.75298242 C2.25299248,7.75298242 0.666666667,6.16665661 0.666666667,4.20982454 C0.666666667,2.25299248 2.25299248,0.666666667 4.20982454,0.666666667 C6.16665661,0.666666667 7.75298242,2.25299248 7.75298242,4.20982454 C7.75298242,4.86691081 7.57411549,5.48222046 7.2624153,6.00971982 L9.52456136,8.27186588 Z M5.49359465,5.43065975 C5.7958769,5.112894 5.98140348,4.6830253 5.98140348,4.20982454 C5.98140348,3.23140851 5.18824058,2.43824561 4.20982454,2.43824561 C3.23140851,2.43824561 2.43824561,3.23140851 2.43824561,4.20982454 C2.43824561,5.18824058 3.23140851,5.98140348 4.20982454,5.98140348 C4.6830253,5.98140348 5.112894,5.7958769 5.43065975,5.49359465 C5.4405681,5.48265473 5.45079835,5.47190261 5.46135048,5.46135048 C5.47190261,5.45079835 5.48265473,5.4405681 5.49359465,5.43065975 Z M5.43065975,13.5555281 C5.112894,13.2532458 4.6830253,13.0677192 4.20982454,13.0677192 C3.23140851,13.0677192 2.43824561,13.8608821 2.43824561,14.8392982 C2.43824561,15.8177142 3.23140851,16.6108771 4.20982454,16.6108771 C5.18824058,16.6108771 5.98140348,15.8177142 5.98140348,14.8392982 C5.98140348,14.3660974 5.7958769,13.9362287 5.49359465,13.618463 C5.48265473,13.6085546 5.47190261,13.5983244 5.46135048,13.5877722 C5.45079835,13.5772201 5.4405681,13.566468 5.43065975,13.5555281 Z M11.0866807,12.3482336 C10.7404455,12.0026244 10.7399379,11.4417738 11.085547,11.0955386 C11.4311561,10.7493034 11.9920068,10.7487958 12.338242,11.0944049 L17.2366578,15.9839628 C17.582893,16.3295719 17.5834005,16.8904226 17.2377914,17.2366578 C16.8921823,17.582893 16.3313317,17.5834005 15.9850965,17.2377914 L11.0866807,12.3482336 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-503.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="cut" transform="translate(395.000000, 0.000000)">
                            <g id="scissors" transform="translate(9.000000, 8.000000)">
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/file.svg000064400000006363147361034410013424 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>textfile</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M24.2222222,15.1111111 L19.7777778,15.1111111 C19.286858,15.1111111 18.8888889,14.713142 18.8888889,14.2222222 L18.8888889,9.77777778 L12.6666667,9.77777778 C12.1757469,9.77777778 11.7777778,10.1757469 11.7777778,10.6666667 L11.7777778,24.8888889 C11.7777778,25.3798087 12.1757469,25.7777778 12.6666667,25.7777778 L23.3333333,25.7777778 C23.8242531,25.7777778 24.2222222,25.3798087 24.2222222,24.8888889 L24.2222222,15.1111111 L25.1111111,15.1111111 C25.6020309,15.1111111 26,14.713142 26,14.2222222 C26,14.0994923 25.9751269,13.9825718 25.9301467,13.8762266 C25.9765874,13.9888881 26,14.1043482 26,14.2222222 L26,24.8888889 C26,26.3616482 24.8060927,27.5555556 23.3333333,27.5555556 L12.6666667,27.5555556 C11.1939073,27.5555556 10,26.3616482 10,24.8888889 L10,10.6666667 C10,9.19390733 11.1939073,8 12.6666667,8 L19.7777778,8 C20.0135258,8 20.2396181,8.09365052 20.4063171,8.26034953 L25.7396505,13.5936829 C25.823,13.6770324 25.8880874,13.7752302 25.9323374,13.8820592 Z M20.6666667,11.0348565 L20.6666667,13.3333333 L22.9651435,13.3333333 L20.6666667,11.0348565 Z M21.5555556,17.7777778 C22.0464753,17.7777778 22.4444444,18.1757469 22.4444444,18.6666667 C22.4444444,19.1575864 22.0464753,19.5555556 21.5555556,19.5555556 L14.4444444,19.5555556 C13.9535247,19.5555556 13.5555556,19.1575864 13.5555556,18.6666667 C13.5555556,18.1757469 13.9535247,17.7777778 14.4444444,17.7777778 L21.5555556,17.7777778 Z M21.5555556,21.3333333 C22.0464753,21.3333333 22.4444444,21.7313024 22.4444444,22.2222222 C22.4444444,22.713142 22.0464753,23.1111111 21.5555556,23.1111111 L14.4444444,23.1111111 C13.9535247,23.1111111 13.5555556,22.713142 13.5555556,22.2222222 C13.5555556,21.7313024 13.9535247,21.3333333 14.4444444,21.3333333 L21.5555556,21.3333333 Z M16.2222222,14.2222222 C16.713142,14.2222222 17.1111111,14.6201913 17.1111111,15.1111111 C17.1111111,15.6020309 16.713142,16 16.2222222,16 L14.4444444,16 C13.9535247,16 13.5555556,15.6020309 13.5555556,15.1111111 C13.5555556,14.6201913 13.9535247,14.2222222 14.4444444,14.2222222 L16.2222222,14.2222222 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-978.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="textfile" transform="translate(869.000000, 0.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/forward.svg000064400000004107147361034410014143 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="12px" viewBox="0 0 14 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>arrow_right</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M2.81066017,6.75 L6.03033009,9.96966991 C6.3232233,10.2625631 6.3232233,10.7374369 6.03033009,11.0303301 C5.73743687,11.3232233 5.26256313,11.3232233 4.96966991,11.0303301 L0.469669914,6.53033009 C0.176776695,6.23743687 0.176776695,5.76256313 0.469669914,5.46966991 L4.96966991,0.969669914 C5.26256313,0.676776695 5.73743687,0.676776695 6.03033009,0.969669914 C6.3232233,1.26256313 6.3232233,1.73743687 6.03033009,2.03033009 L2.81066017,5.25 L13,5.25 C13.4142136,5.25 13.75,5.58578644 13.75,6 C13.75,6.41421356 13.4142136,6.75 13,6.75 L2.81066017,6.75 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-64.000000, -29.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="arrow" transform="translate(20.000000, 22.000000)">
                        <g id="Group-2">
                            <g id="Group">
                                <g id="arrow_right" transform="translate(51.000000, 17.000000) scale(-1, 1) translate(-51.000000, -17.000000) translate(44.000000, 11.000000)">
                                    <mask id="mask-2" fill="white">
                                        <use xlink:href="#path-1"></use>
                                    </mask>
                                    <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                                </g>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/copy.svg000064400000005576147361034410013464 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>copy</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M8.70833333,7.91666667 C8.27110791,7.91666667 7.91666667,8.27110791 7.91666667,8.70833333 L7.91666667,15.8333333 C7.91666667,16.2705588 8.27110791,16.625 8.70833333,16.625 L15.8333333,16.625 C16.2705588,16.625 16.625,16.2705588 16.625,15.8333333 L16.625,8.70833333 C16.625,8.27110791 16.2705588,7.91666667 15.8333333,7.91666667 L8.70833333,7.91666667 Z M8.70833333,6.33333333 L15.8333333,6.33333333 C17.1450096,6.33333333 18.2083333,7.39665705 18.2083333,8.70833333 L18.2083333,15.8333333 C18.2083333,17.1450096 17.1450096,18.2083333 15.8333333,18.2083333 L8.70833333,18.2083333 C7.39665705,18.2083333 6.33333333,17.1450096 6.33333333,15.8333333 L6.33333333,8.70833333 C6.33333333,7.39665705 7.39665705,6.33333333 8.70833333,6.33333333 Z M3.95833333,11.0833333 C4.39555876,11.0833333 4.75,11.4377746 4.75,11.875 C4.75,12.3122254 4.39555876,12.6666667 3.95833333,12.6666667 L3.16666667,12.6666667 C1.85499039,12.6666667 0.791666667,11.6033429 0.791666667,10.2916667 L0.791666667,3.16666667 C0.791666667,1.85499039 1.85499039,0.791666667 3.16666667,0.791666667 L10.2916667,0.791666667 C11.6033429,0.791666667 12.6666667,1.85499039 12.6666667,3.16666667 L12.6666667,3.95833333 C12.6666667,4.39555876 12.3122254,4.75 11.875,4.75 C11.4377746,4.75 11.0833333,4.39555876 11.0833333,3.95833333 L11.0833333,3.16666667 C11.0833333,2.72944124 10.7288921,2.375 10.2916667,2.375 L3.16666667,2.375 C2.72944124,2.375 2.375,2.72944124 2.375,3.16666667 L2.375,10.2916667 C2.375,10.7288921 2.72944124,11.0833333 3.16666667,11.0833333 L3.95833333,11.0833333 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-468.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="copy" transform="translate(361.000000, 0.000000)">
                            <g transform="translate(8.000000, 8.000000)">
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/arrow_right.svg000064400000003233147361034410015025 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="6px" height="10px" viewBox="0 0 6 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Shape</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M3,11.057191 L-0.528595479,7.52859548 C-0.788945007,7.26824595 -1.21105499,7.26824595 -1.47140452,7.52859548 C-1.73175405,7.78894501 -1.73175405,8.21105499 -1.47140452,8.47140452 L2.52859548,12.4714045 C2.78894501,12.731754 3.21105499,12.731754 3.47140452,12.4714045 L7.47140452,8.47140452 C7.73175405,8.21105499 7.73175405,7.78894501 7.47140452,7.52859548 C7.21105499,7.26824595 6.78894501,7.26824595 6.52859548,7.52859548 L3,11.057191 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-47.000000, -129.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="side-bar" transform="translate(1.000000, 69.000000)">
                    <g id="Group-3" transform="translate(47.000000, 55.000000)">
                        <mask id="mask-2" fill="white">
                            <use xlink:href="#path-1"></use>
                        </mask>
                        <use id="Shape" fill="#323232" fill-rule="nonzero" transform="translate(3.000000, 10.000000) scale(-1, 1) rotate(90.000000) translate(-3.000000, -10.000000) " xlink:href="#path-1"></use>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/upload.svg000064400000004205147361034410013762 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="17px" viewBox="0 0 16 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>upload</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M16.8,11.7313708 L16.8,21 C16.8,21.4418278 16.4418278,21.8 16,21.8 C15.5581722,21.8 15.2,21.4418278 15.2,21 L15.2,11.7313708 L13.3656854,13.5656854 C13.053266,13.8781049 12.546734,13.8781049 12.2343146,13.5656854 C11.9218951,13.253266 11.9218951,12.746734 12.2343146,12.4343146 L15.4343146,9.23431458 C15.746734,8.92189514 16.253266,8.92189514 16.5656854,9.23431458 L19.7656854,12.4343146 C20.0781049,12.746734 20.0781049,13.253266 19.7656854,13.5656854 C19.453266,13.8781049 18.946734,13.8781049 18.6343146,13.5656854 L16.8,11.7313708 Z M8,21 C8,20.5581722 8.3581722,20.2 8.8,20.2 C9.2418278,20.2 9.6,20.5581722 9.6,21 L9.6,23.4 C9.6,23.8418278 9.9581722,24.2 10.4,24.2 L21.6,24.2 C22.0418278,24.2 22.4,23.8418278 22.4,23.4 L22.4,21 C22.4,20.5581722 22.7581722,20.2 23.2,20.2 C23.6418278,20.2 24,20.5581722 24,21 L24,23.4 C24,24.7254834 22.9254834,25.8 21.6,25.8 L10.4,25.8 C9.0745166,25.8 8,24.7254834 8,23.4 L8,21 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-220.000000, -27.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="upload" transform="translate(113.000000, 0.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/search.svg000064400000004105147361034410013742 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="15px" height="15px" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Combined Shape</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M11.3820189,10.3213587 L14.7803301,13.7196699 C15.0732233,14.0125631 15.0732233,14.4874369 14.7803301,14.7803301 C14.4874369,15.0732233 14.0125631,15.0732233 13.7196699,14.7803301 L10.3213587,11.3820189 C9.23588921,12.2387223 7.86515226,12.75 6.375,12.75 C2.85418472,12.75 0,9.89581528 0,6.375 C0,2.85418472 2.85418472,0 6.375,0 C9.89581528,0 12.75,2.85418472 12.75,6.375 C12.75,7.86515226 12.2387223,9.23588921 11.3820189,10.3213587 Z M9.86981921,9.77380751 C10.7239628,8.89568802 11.25,7.69677529 11.25,6.375 C11.25,3.68261184 9.06738816,1.5 6.375,1.5 C3.68261184,1.5 1.5,3.68261184 1.5,6.375 C1.5,9.06738816 3.68261184,11.25 6.375,11.25 C7.69677529,11.25 8.89568802,10.7239628 9.77380751,9.86981921 C9.788201,9.85258825 9.80348847,9.83585136 9.81966991,9.81966991 C9.83585136,9.80348847 9.85258825,9.788201 9.86981921,9.77380751 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1831.000000, -28.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="search" transform="translate(1607.000000, 18.000000)">
                        <g transform="translate(224.000000, 10.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/paste.png000064400000002501147361034410013574 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:701F6CAF206511E8B9EBF8BA58955C56" xmpMM:DocumentID="xmp.did:701F6CB0206511E8B9EBF8BA58955C56"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:701F6CAD206511E8B9EBF8BA58955C56" stRef:documentID="xmp.did:701F6CAE206511E8B9EBF8BA58955C56"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>���,�IDATxڔSM(DQ>���!Q~K�ذ@Y�����NIR�Bʞ��I�������F(����D�7���=��̘��9�s�=�~�{�{.��2���g�騣������P���)f1"��e<
�n���ܬ��Q�?���HS�ض��ꍝ��p�iіu
~��v����zyI�pDZ�o��LM�[{'
J�R[�ixg�
j`�\�>�^^���}��'����{{���9�VB�݆���:$m-D"o��H|q#����X�Cp�D�]�}��"��/<%�D���CB�%Ѣ���CB�{��?ۿ$IZ�/?�ѣ^_�!��Ab���E`1�;�6-�~����#0�=�F��}H��د�(��T�H�w���C�D�2�1;��@�c�e���|��ɉwfʑ�U�<@�D��$ԳPIEND�B`�lib/themes/light/images/16px/netmount.png000064400000002333147361034410014334 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:0E6CC054206811E8BC35D088356C6F2D" xmpMM:DocumentID="xmp.did:0E6CC055206811E8BC35D088356C6F2D"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:0E6CC052206811E8BC35D088356C6F2D" stRef:documentID="xmp.did:0E6CC053206811E8BC35D088356C6F2D"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>A��sKIDATx��S�N�@�}i�@�H�u�+ !!�����>@���ؐX�SX@H��������P2��s>�;ۗ��R�(�	"S��M�d
��.��
�@Yb"m{�1@ch�=�-�@�1[$�
~�?f`A5��>��6���J�Ԁ���:�c��Ay���?�� �������}��D��d�X�"8Z�n�#h�������?�}+�e����s����ۢ���RXeR�p�.'Q��}�g.MI����+!�"�̫���=f���Q��T3��mQ���;I����PMv=��N�+���އw�����g�`��z;����IEND�B`�lib/themes/light/images/16px/paste.svg000064400000004447147361034410013622 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>paste</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M12.1666667,2.5 L13,2.5 C14.3807119,2.5 15.5,3.61928813 15.5,5 L15.5,16.6666667 C15.5,18.0473785 14.3807119,19.1666667 13,19.1666667 L3,19.1666667 C1.61928813,19.1666667 0.5,18.0473785 0.5,16.6666667 L0.5,5 C0.5,3.61928813 1.61928813,2.5 3,2.5 L3.83333333,2.5 C3.83333333,1.57952542 4.57952542,0.833333333 5.5,0.833333333 L10.5,0.833333333 C11.4204746,0.833333333 12.1666667,1.57952542 12.1666667,2.5 Z M3.83333333,4.16666667 L3,4.16666667 C2.53976271,4.16666667 2.16666667,4.53976271 2.16666667,5 L2.16666667,16.6666667 C2.16666667,17.126904 2.53976271,17.5 3,17.5 L13,17.5 C13.4602373,17.5 13.8333333,17.126904 13.8333333,16.6666667 L13.8333333,5 C13.8333333,4.53976271 13.4602373,4.16666667 13,4.16666667 L12.1666667,4.16666667 C12.1666667,5.08714125 11.4204746,5.83333333 10.5,5.83333333 L5.5,5.83333333 C4.57952542,5.83333333 3.83333333,5.08714125 3.83333333,4.16666667 Z M5.5,2.5 L5.5,4.16666667 L10.5,4.16666667 L10.5,2.5 L5.5,2.5 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-537.000000, -25.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="paste" transform="translate(429.000000, 0.000000)">
                            <g transform="translate(9.000000, 7.000000)">
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/edit.png000064400000002755147361034410013420 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:0317F53E206311E88D7FCD873F473808" xmpMM:DocumentID="xmp.did:0317F53F206311E88D7FCD873F473808"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:0317F53C206311E88D7FCD873F473808" stRef:documentID="xmp.did:0317F53D206311E88D7FCD873F473808"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�y]IDATxڄS�kA~����n��Ĥ�d4m�?(As�[�'QA,�B+T���?�z��Jo��A�f�"�hmM-��&�m�����&Qۦm�a���{�
���G����o��v���K'CA��{N�� A�EH�y�׶ߗW�3�o�-�A�9!$Ee�4���	�ɸ>��	v"�pr�1HǺ���Vf���7�B�DЁ���7��0�%�P&����{+Z<�9�P�&
>~��K�@w�z-�mgAEُQv?0�	�d��~T���KF�6��i#n����z�'��خ���7����+ق=��{b��a[1�'�	�ql�	����>�~��yk(V�&c�]�>R��JՅ���f��A�w���

�eW����=a�`���12%P,;���¯�;��ʪ����Fّ\�v�+�՗h�!c���R�N�P�"̵��L�_�G�8�w
�5��ve�/�_s���j10q��"ݺ�l(�t<oT��Q.���`�P��l��u�9���_��HVr~�!"�$�1��C�e���N��]���	f#�?���z��Sx�7�r&)��]��F�h�����`���B���IEND�B`�lib/themes/light/images/16px/netmount.svg000064400000003427147361034410014354 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="23px" height="16px" viewBox="0 0 23 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>network</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-105.000000, -28.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="network">
                            <path d="M17.5,10 C16.94725,10 16.5,10.4572042 16.5,11.0222222 L16.5,17.1555556 L14.5,17.1555556 C13.9551,17.1555556 13.49805,17.6846578 13.5,18.1777778 L13.5,20.2222222 L7,20.2222222 C6.44725,20.2222222 6,20.6794264 6,21.2444444 C6,21.8094624 6.447265,22.2666667 7,22.2666667 L13.5,22.2666667 L13.5,24.3111111 C13.5,24.8461933 13.97656,25.3333333 14.5,25.3333333 L20.5,25.3333333 C21.02345,25.3333333 21.5,24.8461831 21.5,24.3111111 L21.5,22.2666667 L28,22.2666667 C28.55275,22.2666667 29,21.8094624 29,21.2444444 C29,20.6794264 28.552735,20.2222222 28,20.2222222 L21.5,20.2222222 L21.5,18.1777778 C21.5,17.6426956 21.02344,17.1555556 20.5,17.1555556 L18.5,17.1555556 L18.5,11.0222222 C18.5,10.4571889 18.052735,10 17.5,10 Z M15.5833333,19.5833333 L19.4166667,19.5833333 L19.4166667,23.4166667 L15.5833333,23.4166667 L15.5833333,19.5833333 Z"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/getfile.png000064400000002637147361034410014111 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:498DBCE8213A11E88F89993602753921" xmpMM:InstanceID="xmp.iid:498DBCE7213A11E88F89993602753921" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FCBB7AA6212611E8B0DFAC2C16032D46" stRef:documentID="xmp.did:FCBB7AA7212611E8B0DFAC2C16032D46"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>���IDATxڤ�?hA�ߛ����Sɉ6��E�����@L!�����R����$�!��%ZZ���W�I�� )Ҩ zw�۝y~�^097Uf�a�7����:L3{'�������
cT��v�~"c��L߼~yƛ{QB���K? �%��G_�on/��D)�I傀翬}my#7�]j���ܑr��h��;��bE�W�����5��L^=�D)&�C�,-��N�L�
��RX�֧�f7J:�үQ��������c9�
���aq�հ�[mo���t�B|Kek�7�N���,���'Ϟ>1fi�*D�3�G��9h=�^��
�X��NQOi�3�&�p��)o#(�贗*�{���8� ��f~!�sιl��LC}C�#n��0���$��<��6��I�T���R~�v�k��O-8��1j�C�\��{ S���
��<�Qzp��cSU�~=H!��m�F���
ݪu1�	ĭ��a�wP,t�K�uA�����u��G��r�x�W�,IEND�B`�lib/themes/light/images/16px/select_all.svg000064400000004053147361034410014606 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>selct_all</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M8.9,8 L15.2,8 C15.6970563,8 16.1,8.40294373 16.1,8.9 L16.1,15.2 C16.1,15.6970563 15.6970563,16.1 15.2,16.1 L8.9,16.1 C8.40294373,16.1 8,15.6970563 8,15.2 L8,8.9 C8,8.40294373 8.40294373,8 8.9,8 Z M18.8,8 L25.1,8 C25.5970563,8 26,8.40294373 26,8.9 L26,15.2 C26,15.6970563 25.5970563,16.1 25.1,16.1 L18.8,16.1 C18.3029437,16.1 17.9,15.6970563 17.9,15.2 L17.9,8.9 C17.9,8.40294373 18.3029437,8 18.8,8 Z M18.8,17.9 L25.1,17.9 C25.5970563,17.9 26,18.3029437 26,18.8 L26,25.1 C26,25.5970563 25.5970563,26 25.1,26 L18.8,26 C18.3029437,26 17.9,25.5970563 17.9,25.1 L17.9,18.8 C17.9,18.3029437 18.3029437,17.9 18.8,17.9 Z M8.9,17.9 L15.2,17.9 C15.6970563,17.9 16.1,18.3029437 16.1,18.8 L16.1,25.1 C16.1,25.5970563 15.6970563,26 15.2,26 L8.9,26 C8.40294373,26 8,25.5970563 8,25.1 L8,18.8 C8,18.3029437 8.40294373,17.9 8.9,17.9 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1191.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <g id="selct_all" transform="translate(1084.000000, 22.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/help.svg000064400000007173147361034410013435 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="21px" height="21px" viewBox="0 0 21 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Page 1</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-930.000000, -25.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="about" transform="translate(824.000000, 0.000000)">
                            <path d="M17.03569,28 C19.69765,28 22.25041,26.942608 24.13222,25.0608398 C26.014009,23.1790508 27.07138,20.6262698 27.07138,17.9643098 C27.07138,15.3023498 26.013988,12.7495898 24.13222,10.8677798 C22.250431,8.98599079 19.69765,7.92861979 17.03569,7.92861979 C14.37373,7.92861979 11.82097,8.98601179 9.93916,10.8677798 C8.057371,12.7495688 7,15.3023498 7,17.9643098 C7.00328104,20.6245898 8.061487,23.1756698 9.94336,25.0566398 C11.82433,26.938429 14.37541,27.99664 17.03569,28 Z M17.03569,9.88749979 C19.17664,9.88749979 21.23086,10.7381678 22.74517,12.2525198 C24.259459,13.7668088 25.11019,15.8199998 25.11019,17.9619998 C25.11019,20.1029498 24.260341,22.1571698 22.74601,23.6714798 C21.231721,25.1857688 19.17853,26.0364998 17.03737,26.0373398 C14.89558,26.0373398 12.8422,25.1874908 11.32726,23.6731598 C9.812971,22.1596898 8.9614,20.1056798 8.9614,17.9645198 C8.9638612,15.8235698 9.814525,13.7710298 11.32873,12.2575598 C12.8422,10.7432708 14.89453,9.89253979 17.03569,9.89022979 L17.03569,9.88749979 Z M17.949526,22.8820898 L17.949526,22.8829109 C17.949526,23.3020919 17.696056,23.6802599 17.308858,23.8410359 C16.920841,24.0018161 16.474591,23.9124023 16.17847,23.6162729 C15.881509,23.3193119 15.792931,22.8730619 15.953707,22.4858849 C16.1136682,22.0978679 16.491832,21.8452169 16.911832,21.8452169 C17.187457,21.8452169 17.451595,21.9543182 17.646013,22.1495489 C17.8404268,22.3447838 17.949526,22.6089239 17.949526,22.8845489 L17.949526,22.8820898 Z M13.675606,14.7979298 C13.5845521,14.5395248 13.6009573,14.2565288 13.7199034,14.0104298 C14.0037394,13.4140718 14.4499894,12.9103868 15.0069724,12.5560118 C15.5639554,12.2024558 16.2095584,12.0121538 16.8699034,12.0088568 L16.891231,12.0088568 L16.890412,12.0088568 C17.811619,12.0121391 18.695929,12.3722618 19.357912,13.0120898 C20.019895,13.6527578 20.40955,14.5239218 20.444011,15.4443098 C20.4677998,16.1998268 20.247136,16.9421978 19.815649,17.5623698 C19.384162,18.1833398 18.764011,18.6476519 18.047869,18.8879948 C18.047869,18.8879948 17.9453302,18.9240875 17.9453302,18.9847922 L17.9453302,19.8083933 L17.9445091,19.8083933 C17.9445091,20.3784992 17.4826771,20.8403543 16.9125481,20.8403543 C16.3424401,20.8403543 15.8805871,20.3785223 15.8805871,19.8083933 L15.8805871,18.9847922 C15.8904298,18.0496412 16.4950051,17.2244042 17.3842291,16.9331993 C17.9970091,16.7256605 18.4022461,16.1416043 18.3817291,15.4943633 C18.3398929,14.7035873 17.6918371,14.0801393 16.8994231,14.0686502 C16.3366861,14.0752127 15.8272681,14.4008702 15.5869231,14.9086502 C15.4072744,15.2900942 15.0143371,15.5238872 14.5935181,15.4992752 C14.1726991,15.4754864 13.8092941,15.1974002 13.6755871,14.7979172 L13.675606,14.7979298 Z" id="Page-1"></path>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/deselect_all.svg000064400000006260147361034410015121 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>deselect_all</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M2.66666667,2.66666667 L2.66666667,7.25 L7.25,7.25 L7.25,2.66666667 L2.66666667,2.66666667 Z M1.75,0.833333333 L8.16666667,0.833333333 C8.67292769,0.833333333 9.08333333,1.24373898 9.08333333,1.75 L9.08333333,8.16666667 C9.08333333,8.67292769 8.67292769,9.08333333 8.16666667,9.08333333 L1.75,9.08333333 C1.24373898,9.08333333 0.833333333,8.67292769 0.833333333,8.16666667 L0.833333333,1.75 C0.833333333,1.24373898 1.24373898,0.833333333 1.75,0.833333333 Z M11.8333333,0.833333333 L18.25,0.833333333 C18.756261,0.833333333 19.1666667,1.24373898 19.1666667,1.75 L19.1666667,8.16666667 C19.1666667,8.67292769 18.756261,9.08333333 18.25,9.08333333 L11.8333333,9.08333333 C11.3270723,9.08333333 10.9166667,8.67292769 10.9166667,8.16666667 L10.9166667,1.75 C10.9166667,1.24373898 11.3270723,0.833333333 11.8333333,0.833333333 Z M12.75,7.25 L17.3333333,7.25 L17.3333333,2.66666667 L12.75,2.66666667 L12.75,7.25 Z M11.8333333,10.9166667 L18.25,10.9166667 C18.756261,10.9166667 19.1666667,11.3270723 19.1666667,11.8333333 L19.1666667,18.25 C19.1666667,18.756261 18.756261,19.1666667 18.25,19.1666667 L11.8333333,19.1666667 C11.3270723,19.1666667 10.9166667,18.756261 10.9166667,18.25 L10.9166667,11.8333333 C10.9166667,11.3270723 11.3270723,10.9166667 11.8333333,10.9166667 Z M12.75,17.3333333 L17.3333333,17.3333333 L17.3333333,12.75 L12.75,12.75 L12.75,17.3333333 Z M1.75,10.9166667 L8.16666667,10.9166667 C8.67292769,10.9166667 9.08333333,11.3270723 9.08333333,11.8333333 L9.08333333,18.25 C9.08333333,18.756261 8.67292769,19.1666667 8.16666667,19.1666667 L1.75,19.1666667 C1.24373898,19.1666667 0.833333333,18.756261 0.833333333,18.25 L0.833333333,11.8333333 C0.833333333,11.3270723 1.24373898,10.9166667 1.75,10.9166667 Z M2.66666667,17.3333333 L7.25,17.3333333 L7.25,12.75 L2.66666667,12.75 L2.66666667,17.3333333 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1258.000000, -25.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <g id="deselect" transform="translate(1152.000000, 22.000000)">
                            <g id="deselect_all" transform="translate(7.000000, 7.000000)">
                                <mask id="mask-2" fill="white">
                                    <use xlink:href="#path-1"></use>
                                </mask>
                                <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/info.png000064400000003125147361034410013416 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:BA61013B206211E8B50AD90BEAB57D44" xmpMM:DocumentID="xmp.did:BA61013C206211E8B50AD90BEAB57D44"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:BA610139206211E8B50AD90BEAB57D44" stRef:documentID="xmp.did:BA61013A206211E8B50AD90BEAB57D44"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>6%�IDATxڤSKKUQ^k?�=���5H�DJj$9���g�0�h 4nԏ�"�
�*E:�hp��h�'�I�ޛ�=��s�^����ۇ�����z 3�,7o<�P�[�:�R�9嗀�( V��
_Ze��T��jpk�Am*��a����ȨM[tOs=�����[w�AX����9�1#9ô�Ҟ�I�8N�Y+G���ny�=��=+��"�L�΄�1v^�;;x���$!��Zm�5����ʨ��������+<�0#E`����5ϲ�bG�_
�{���bI���[�#�W>�#�]NUY�y1�QI��Q��o�tmOw�c��~�A��'`�g�}5���z4�7�����y'޼^�Ѻ�H��K�Ͻ�?`�%���� ���[`جB�3��2	\!e���`��׾�� ��I ��'/ަ@Cʲ]��,hkc+hk�ت5f�d���{��
e�x�ȯ�������2H�iD�K���(�"���@�q�^!`U�#���c}{��^j�y`!�� P�n��N|�UР����7����b�@.����l��T��saa�~�~\����d��Y@�mltb����yZr�:���9([����:�0�meD5a�Ln�����&|"g�#�Z�6A�NX��ZU�*I��#�3r�Ϝ5Rқ��R��"����0��[
���0|C~;$o�IEND�B`�lib/themes/light/images/16px/view-list.png000064400000000357147361034410014412 0ustar00�PNG


IHDR�a�IDAT8�c\�t� ::���0000DEEaH,[����������]]]�,0��=�$^}�`�qdDQD��1�
1���308��d/���S��.8�x=NE]�/9�z�ع�,�ߧ{�|���V�EA0000h]��w%��7(
"�ҥK�c��G ����nD���IEND�B`�lib/themes/light/images/16px/search-default.svg000064400000004105147361034410015364 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="15px" height="15px" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Combined Shape</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M11.3820189,10.3213587 L14.7803301,13.7196699 C15.0732233,14.0125631 15.0732233,14.4874369 14.7803301,14.7803301 C14.4874369,15.0732233 14.0125631,15.0732233 13.7196699,14.7803301 L10.3213587,11.3820189 C9.23588921,12.2387223 7.86515226,12.75 6.375,12.75 C2.85418472,12.75 0,9.89581528 0,6.375 C0,2.85418472 2.85418472,0 6.375,0 C9.89581528,0 12.75,2.85418472 12.75,6.375 C12.75,7.86515226 12.2387223,9.23588921 11.3820189,10.3213587 Z M9.86981921,9.77380751 C10.7239628,8.89568802 11.25,7.69677529 11.25,6.375 C11.25,3.68261184 9.06738816,1.5 6.375,1.5 C3.68261184,1.5 1.5,3.68261184 1.5,6.375 C1.5,9.06738816 3.68261184,11.25 6.375,11.25 C7.69677529,11.25 8.89568802,10.7239628 9.77380751,9.86981921 C9.788201,9.85258825 9.80348847,9.83585136 9.81966991,9.81966991 C9.83585136,9.80348847 9.85258825,9.788201 9.86981921,9.77380751 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1831.000000, -28.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="search" transform="translate(1607.000000, 18.000000)">
                        <g transform="translate(224.000000, 10.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/getfile.svg000064400000005060147361034410014115 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="19px" height="20px" viewBox="0 0 19 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>selectfile</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M26,16.6436541 L26,24.8888889 C26,26.3616482 24.8060927,27.5555556 23.3333333,27.5555556 L12.6666667,27.5555556 C11.1939073,27.5555556 10,26.3616482 10,24.8888889 L10,10.6666667 C10,9.19390733 11.1939073,8 12.6666667,8 L19.7777778,8 C20.0135258,8 20.2396181,8.09365052 20.4063171,8.26034953 L25.7396505,13.5936829 C25.823,13.6770324 25.8880874,13.7752302 25.9323374,13.8820592 L19.7777778,15.1111111 C19.286858,15.1111111 18.8888889,14.713142 18.8888889,14.2222222 L18.8888889,9.77777778 L12.6666667,9.77777778 C12.1757469,9.77777778 11.7777778,10.1757469 11.7777778,10.6666667 L11.7777778,24.8888889 C11.7777778,25.3798087 12.1757469,25.7777778 12.6666667,25.7777778 L23.3333333,25.7777778 C23.8242531,25.7777778 24.2222222,25.3798087 24.2222222,24.8888889 L24.2222222,17.8110412 L17.9601914,21.9230364 L17.9226246,21.8654345 L17.8499979,21.9230364 L15,18.2878514 L16.5139231,17.1020246 L18.3095891,19.3935375 L24.2222222,15.5109084 L24.2222222,15.1111111 L24.8310506,15.1111111 L25.9909657,14.3494335 C25.9969193,14.3078878 26,14.2654148 26,14.2222222 C26,14.0994923 25.9751269,13.9825718 25.9301467,13.8762266 C25.9765874,13.9888881 26,14.1043482 26,14.2222222 L26,14.343501 L27.4456361,13.3942 L28.5,15.002016 L26,16.6436541 Z M20.6666667,11.0348565 L20.6666667,13.3333333 L22.9651435,13.3333333 L20.6666667,11.0348565 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1012.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="select" transform="translate(903.000000, 0.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use id="selectfile" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/16px/invert_selection.png000064400000001345147361034410016041 0ustar00�PNG


IHDR�a	pHYs���IDATx�mSMOQ}?�����B7�d�ig�}3�BV�X%�!і��|t�J+�`�ј�U�NiA&L*��;�/��ˤ��{ι����.*>��x���r���g�e�E"�s%K��$�	�O��T~J@����1۶E�0DC�E�`���G�&�}�ʁ�v���`y�sa[''		A`���߱�[��+�ͭ��6���� �v���I*}���:>>���#��.䋯Sn�Wh|�(4�f�'9��D`|xx��ȹ�E�	|���h�?D�J�L9�;/`�j+��ީ��6J�Y{�G8W�$�كٹqw}{�(o,�e���t�av����k���������7��,�I�0W	�
�~٪��A]s[��ת_�i����	����W6���fV��[�73?.cS�9cZRf�3Un�n�a���@q�;�ڛ�~&CYt��!��ph�Ȑ4fLQ�u[4_/�^$�0�^��|^�F�a}��A�y�61�(�	��t�]��r"%�'@	��uZ�LQ���ӴkoW�pNNB0]������7�7��A#f�Q����+�ٹ�EǖqOd�Ӕ3���H@F�Ð�ݒ46)�a�]J�;A��i����(�G8z��i夸�҃"���}Q�@$r����IEND�B`�lib/themes/light/images/16px/upload.png000064400000002370147361034410013750 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:CBEB32E9206411E8BB658DBC03A9563C" xmpMM:DocumentID="xmp.did:CBEB32EA206411E8BB658DBC03A9563C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:CBEB32E7206411E8BB658DBC03A9563C" stRef:documentID="xmp.did:CBEB32E8206411E8BB658DBC03A9563C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>E��^hIDATxڤS�NA����"�� p��AZ� �&|�	�@ A!*�H0�`$HDr������Ӽ��̛w��s,"�k�c:�5B����Z�mn�1��:g<R��Z����ΐ�(���l�Y���GA���ۂ�O�
�˘��\/���c!��J䀙OY����4s}@���<��\�i�"3��p��M�pvu�\���4Op��jM�j]�Ƌ։IK�jV��_�5�=�����������7hʨlLm���X��Hk�-�{�쾤!��*n큔���b�����x����Ä������C,W�a�Q;>"��Z��s�O ҷ��P��x�66/u�#��d�1
̃IEND�B`�lib/themes/light/images/upload.svg000064400000001004147361034410013156 0ustar00<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
 width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
 preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.15, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,16.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
</g>
</svg>
lib/themes/light/images/48px/html_file.svg000064400000012171147361034410014447 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>html</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-266.000000, -304.000000)" fill="#8591B0">
            <g id="content" transform="translate(244.000000, 69.000000)">
                <g id="row-07" transform="translate(1.000000, 231.000000)">
                    <path d="M29.9541641,5.72727273 C27.8934109,5.72727273 26.0417841,6.54041499 24.6857968,7.86381406 C24.6084483,7.93992511 24.5310998,8.02613434 24.4545455,8.11311698 L24.6857968,9.00238819 L24.8839051,9.14373871 L26.1846305,9.14296131 L26.3495898,9.03422953 L26.7797434,8.23194295 C27.1104459,7.60285023 27.7608187,7.25568711 28.4222237,7.25568711 C28.7860834,7.25568711 29.149943,7.36441889 29.4695931,7.5810991 L30.0868088,7.99349571 C30.6045733,8.35153439 30.8910865,8.9262493 30.8910865,9.49008864 C30.8910865,9.89160969 30.7474379,10.2923752 30.4830375,10.6286628 L30.4388381,10.7482661 L30.5382873,10.921458 L31.5635519,11.4744218 C32.0481593,11.7237247 32.3899141,12.1796236 32.5004177,12.7108561 L32.9739929,15.0750486 L33.040291,15.1837804 L33.1728892,15.2272727 L33.2944371,15.1837804 L34.9479698,13.6980432 L35.0142679,13.5566927 L35.0142679,13.5349455 L34.8595709,11.88689 L34.8485206,11.7245697 C34.8485206,11.1172281 35.1681707,10.5316376 35.6969876,10.1953501 L36.5454545,9.66411754 C36.1926473,9.00241801 35.7411769,8.39507641 35.211572,7.86384388 C33.8556049,6.54044481 32.0039578,5.72730255 29.9541156,5.72730255 L29.9541641,5.72727273 Z M26.6963794,16.1934075 C26.0488357,16.1934075 25.401292,15.9192034 24.9452654,15.4058061 C24.8130085,15.2742563 24.7176699,15.2383795 24.5613738,15.2272727 C24.3818806,15.2272727 24.1895083,15.3349053 24.093321,15.5373624 L24.0821567,15.549322 L23.5909091,16.6350294 C24.1302394,17.7685841 24.9341011,18.7705804 25.9295239,19.5454545 L26.9850116,18.9133353 C27.4530643,18.6391312 27.764821,18.1616194 27.8129036,17.6132113 L27.9090909,16.7786372 L27.9090909,16.718841 C27.9090909,16.4326751 27.6694912,16.1943566 27.3817868,16.1943566 L26.6963794,16.1934075 Z M21,13.4885072 C21.0115453,11.2315344 21.7949619,9.15907131 23.1301163,7.52381628 C23.1647513,7.47763605 23.1878427,7.44300141 23.2224777,7.40836465 C24.9616786,5.32448058 27.5749661,4 30.5115288,4 C34.415405,4 37.7775688,6.36104988 39.2281168,9.74619247 C39.2396625,9.76928364 39.2512082,9.78082711 39.2512082,9.80391828 C39.2858431,9.87318757 39.3204781,9.94245896 39.3435695,10.022459 C39.7699094,11.0936713 40,12.2680319 40,13.4884565 C40,18.7389636 35.7505341,22.988389 30.5115879,23 C28.5769399,23 26.7692121,22.412862 25.2726418,21.4224412 C25.2495504,21.4224412 25.2264611,21.39935 25.2149154,21.3878066 C25.1687347,21.3647154 25.1340998,21.3300808 25.0879191,21.2954461 C23.6604456,20.2943221 22.5083461,18.9122297 21.8173784,17.2999856 C21.7711977,17.2191708 21.7365628,17.1383559 21.7134714,17.0583707 C21.7019263,17.0121905 21.69038,16.9660102 21.69038,16.91983 L21.655745,16.9313756 C21.2302284,15.8609865 21.0001379,14.6974137 21.0001379,13.488389 L21,13.4885072 Z M22.7272854,13.5568849 C22.7272854,13.8879438 22.7503766,14.2190237 22.7965548,14.5271888 C23.2228917,14.0596048 23.8216,13.8078368 24.4318349,13.8078368 C25.0420698,13.8078368 25.6638525,14.0702355 26.1017582,14.5615294 C26.2056645,14.6759728 26.331826,14.7323763 26.4819253,14.7323763 L27.1383511,14.7323763 C28.3819164,14.7323763 29.3723184,15.7370208 29.3723184,16.9468297 L29.3599494,17.1748878 L29.2791344,17.9735308 C29.1636825,19.0353886 28.564991,19.9713728 27.6438543,20.519043 L27.4368671,20.6449291 C28.3810994,21.0446691 29.4176711,21.2727273 30.5110527,21.2727273 C32.6527648,21.2612825 34.5873779,20.4054241 36.0041379,19.0124446 C37.4093291,17.6080811 38.2727273,15.6796735 38.2727273,13.5560416 C38.2727273,12.8939029 38.1919122,12.2546579 38.019564,11.6383066 L37.4439512,12.003706 L37.3515905,12.1745529 L37.3515905,12.1974424 L37.5132206,13.9320697 L37.5247662,14.1029166 C37.5247662,14.6391608 37.2946984,15.1533275 36.8914359,15.518727 L35.163793,17.0710626 C34.7951736,17.4135683 34.3234692,17.5729662 33.874039,17.5729662 C33.4361544,17.5729662 33.0221674,17.4356354 32.6766435,17.1732262 C32.3311196,16.8993807 32.0664086,16.4996407 31.9740479,16.0320775 L31.4677214,13.5436949 L31.3753607,13.4063641 L30.292598,12.8243533 C29.64772,12.4818476 29.2906483,11.808262 29.2906483,11.1461442 C29.2906483,10.7349783 29.4291893,10.3017138 29.7169852,9.94776123 L29.7631655,9.82187514 L29.6708048,9.66165687 L29.0259268,9.21615037 L28.9104749,9.18181818 L28.726579,9.28808558 L28.2771466,10.1439419 C27.9431704,10.77174 27.2867446,11.17148 26.5726013,11.17148 L25.2135799,11.17148 C24.4878889,11.17148 23.8545585,10.7831869 23.5321301,10.1782824 C23.0150792,11.1943738 22.7272727,12.3469065 22.7272727,13.5568828 L22.7272854,13.5568849 Z" id="html"></path>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/48px/pdf.svg000064400000007237147361034410013264 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="21px" viewBox="0 0 16 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>pdf</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1329.000000, -25.000000)" fill="#8591B0">
            <g id="menu-head-footer" transform="translate(-1.000000, -4.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 0.000000)">
                        <g id="pdf" transform="translate(1220.000000, 22.000000)">
                            <g transform="translate(10.000000, 7.000000)">
                                <path d="M15.8367584,6.22877922 L15.8367584,5.49506494 L9.72558961,0 L9.72558961,0.0153766234 L1.87499221,0.0153766234 C0.839355844,0.0153766234 8.31168831e-05,0.854649351 8.31168831e-05,1.88966234 L8.31168831e-05,18.9051429 C8.31168831e-05,19.9407792 0.839355844,20.7792208 1.87499221,20.7792208 L13.9635117,20.7792208 C14.9983169,20.7792208 15.8369662,19.9407792 15.8369662,18.9051429 L15.8369662,6.22981818 L15.8377974,6.22981818 L15.8367584,6.22877922 Z M14.1710961,18.9049351 C14.1710961,19.0177662 14.0777974,19.1127273 13.9633039,19.1127273 L1.87478442,19.1127273 C1.75883636,19.1127273 1.66553766,19.0185974 1.66553766,18.9049351 L1.66553766,1.88945455 C1.66553766,1.77496104 1.75800519,1.68083117 1.87478442,1.68083117 L9.72538182,1.68083117 L9.72538182,6.22961039 L14.1710961,6.22961039 L14.1710961,18.9049351 Z" id="Fill-1"></path>
                                <path d="M8.54865455,7.47047619 C8.56091429,6.81302165 8.35312208,6.47535931 8.25317403,6.36252814 C8.07218701,6.1262684 7.78314805,5.98517749 7.48621299,5.98829437 C7.35945974,5.98829437 7.23707013,6.01177489 7.11758961,6.05083983 C6.79862857,6.15390476 6.54304416,6.39743723 6.41317403,6.70663203 C6.32132987,6.91691775 6.29057662,7.14569697 6.29057662,7.37551515 C6.29452468,8.07037229 6.57545974,8.84065801 6.8644987,9.49478788 C6.54221299,10.7479827 6.01857662,12.2309957 5.46917403,13.4534372 C4.02439481,14.1458009 3.15997922,14.7934892 3.02678442,15.6718268 C3.01701818,15.7131775 3.01701818,15.7634632 3.01701818,15.8058528 C3.00974545,16.1223203 3.16392727,16.5493333 3.6004987,16.8682944 C3.76777143,16.995671 3.97473247,17.064658 4.18668052,17.064658 C4.72631688,17.0540606 5.13878442,16.6792035 5.5633039,16.0890736 C5.85795325,15.6743203 6.16153766,15.1344762 6.47883636,14.4753593 C7.43571948,14.0662165 8.59582338,13.6930216 9.60943377,13.4681905 C10.2149403,14.0175931 10.7880312,14.3357229 11.3748364,14.3415411 C11.8350961,14.3454892 12.2621091,14.1133853 12.5299532,13.7279307 C12.7020052,13.4827359 12.8123429,13.2269437 12.8123429,12.9534892 C12.8140052,12.8065801 12.7790961,12.6571775 12.7109403,12.5241905 C12.4536935,12.0435671 11.9146805,11.8958268 11.2620052,11.896658 C10.9137455,11.896658 10.5137455,11.9348918 10.0574338,12.0094892 C9.42595325,11.3065281 8.76683636,10.3203463 8.2830961,9.35037229 C8.48029091,8.499671 8.54844675,7.9047619 8.54844675,7.47047619 L8.54865455,7.47047619 Z M7.2192,12.749645 C7.41805714,12.2343203 7.60631688,11.7050736 7.77275844,11.1814372 C8.02834286,11.5880866 8.30034286,11.977697 8.57961558,12.3340606 C8.12745974,12.4558268 7.66886234,12.5954632 7.2192,12.749645 Z" id="Fill-4"></path>
                            </g>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/48px/php_file.svg000064400000005666147361034410014305 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="21px" viewBox="0 0 20 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>php</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-267.000000, -332.000000)" fill="#8591B0">
            <g id="content" transform="translate(244.000000, 69.000000)">
                <g id="row-08" transform="translate(1.000000, 261.000000)">
                    <g id="php" transform="translate(23.000000, 3.000000)">
                        <path d="M15.4375,6.53125 L15.4375,4.15625 C15.4382429,3.9981643 15.3766411,3.846759 15.2653125,3.734678 L11.7028125,0.172178 C11.5907429,0.0608494 11.4393395,-0.00076 11.2812405,-1.9e-05 L1.7812405,-1.9e-05 C0.7978385,-1.9e-05 -9.512901e-06,0.7978385 -9.512901e-06,1.7812405 L-9.512901e-06,17.2187405 C-9.512901e-06,18.2021425 0.7978385,18.9999905 1.7812405,18.9999905 L5.9374905,18.9999905 L5.9374905,17.8124905 L1.7812405,17.8124905 C1.4531865,17.8124905 1.1874905,17.5467945 1.1874905,17.2187405 L1.1874905,1.7812405 C1.1874905,1.4531865 1.4531865,1.1874905 1.7812405,1.1874905 L10.6874905,1.1874905 L10.6874905,3.5624905 C10.6874905,3.8771685 10.8129209,4.1792495 11.0355705,4.4019105 C11.2582201,4.6245715 11.5602935,4.7499905 11.8749905,4.7499905 L14.2499905,4.7499905 L14.2499905,6.5312405 L15.4375,6.53125 Z" id="Fill-1" stroke="#8591B0" stroke-width="0.5"></path>
                        <path d="M7.71875,9.5 L5.34375,9.5 C5.015696,9.5 4.75,9.765696 4.75,10.09375 L4.75,15.4375 L5.9375,15.4375 L5.9375,13.65625 L7.71875,13.65625 C8.033428,13.65625 8.335509,13.5308196 8.55817,13.30817 C8.780831,13.0855204 8.90625,12.783447 8.90625,12.46875 L8.90625,10.6875 C8.90625,10.372822 8.7808196,10.070741 8.55817,9.84808 C8.3355204,9.625419 8.033447,9.5 7.71875,9.5 Z M7.71875,12.46875 L5.9375,12.46875 L5.9375,10.6875 L7.71875,10.6875 L7.71875,12.46875 Z" id="Fill-2"></path>
                        <path d="M17.8125,9.5 L15.4375,9.5 C15.109446,9.5 14.84375,9.765696 14.84375,10.09375 L14.84375,15.4375 L16.03125,15.4375 L16.03125,13.65625 L17.8125,13.65625 C18.127178,13.65625 18.429259,13.5308196 18.65192,13.30817 C18.874581,13.0855204 19,12.783447 19,12.46875 L19,10.6875 C19,10.372822 18.8745696,10.070741 18.65192,9.84808 C18.4292704,9.625419 18.127197,9.5 17.8125,9.5 Z M17.8125,12.46875 L16.03125,12.46875 L16.03125,10.6875 L17.8125,10.6875 L17.8125,12.46875 Z" id="Fill-3"></path>
                        <polygon id="Fill-4" points="13.0625 11.875 10.6875 11.875 10.6875 9.5 9.5 9.5 9.5 15.4375 10.6875 15.4375 10.6875 13.0625 13.0625 13.0625 13.0625 15.4375 14.25 15.4375 14.25 9.5 13.0625 9.5"></polygon>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/48px/directory.svg000064400000003767147361034410014523 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="17px" viewBox="0 0 18 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>file</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M6.10757692,1.63636364 L2.45454545,1.63636364 C2.00267611,1.63636364 1.63636364,2.00267611 1.63636364,2.45454545 L1.63636364,13.9090909 C1.63636364,14.3609602 2.00267611,14.7272727 2.45454545,14.7272727 L15.5454545,14.7272727 C15.9973239,14.7272727 16.3636364,14.3609602 16.3636364,13.9090909 L16.3636364,4.90909091 C16.3636364,4.45722157 15.9973239,4.09090909 15.5454545,4.09090909 L8.18181818,4.09090909 C7.90825648,4.09090909 7.65279449,3.95418998 7.50104976,3.72657289 L6.10757692,1.63636364 Z M8.6196958,2.45454545 L15.5454545,2.45454545 C16.9010626,2.45454545 18,3.55348289 18,4.90909091 L18,13.9090909 C18,15.2646989 16.9010626,16.3636364 15.5454545,16.3636364 L2.45454545,16.3636364 C1.09893743,16.3636364 0,15.2646989 0,13.9090909 L0,2.45454545 C-1.81672859e-16,1.09893743 1.09893743,0 2.45454545,0 L6.54545455,0 C6.81901624,0 7.07447824,0.136719111 7.22622297,0.364336203 L8.6196958,2.45454545 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-267.000000, -125.000000)">
            <g id="content" transform="translate(244.000000, 69.000000)">
                <g id="row-01" transform="translate(1.000000, 51.000000)">
                    <g id="file" transform="translate(22.000000, 5.000000)">
                        <mask id="mask-2" fill="white">
                            <use xlink:href="#path-1"></use>
                        </mask>
                        <use id="Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/48px/text_file.svg000064400000006363147361034410014475 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>textfile</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M24.2222222,15.1111111 L19.7777778,15.1111111 C19.286858,15.1111111 18.8888889,14.713142 18.8888889,14.2222222 L18.8888889,9.77777778 L12.6666667,9.77777778 C12.1757469,9.77777778 11.7777778,10.1757469 11.7777778,10.6666667 L11.7777778,24.8888889 C11.7777778,25.3798087 12.1757469,25.7777778 12.6666667,25.7777778 L23.3333333,25.7777778 C23.8242531,25.7777778 24.2222222,25.3798087 24.2222222,24.8888889 L24.2222222,15.1111111 L25.1111111,15.1111111 C25.6020309,15.1111111 26,14.713142 26,14.2222222 C26,14.0994923 25.9751269,13.9825718 25.9301467,13.8762266 C25.9765874,13.9888881 26,14.1043482 26,14.2222222 L26,24.8888889 C26,26.3616482 24.8060927,27.5555556 23.3333333,27.5555556 L12.6666667,27.5555556 C11.1939073,27.5555556 10,26.3616482 10,24.8888889 L10,10.6666667 C10,9.19390733 11.1939073,8 12.6666667,8 L19.7777778,8 C20.0135258,8 20.2396181,8.09365052 20.4063171,8.26034953 L25.7396505,13.5936829 C25.823,13.6770324 25.8880874,13.7752302 25.9323374,13.8820592 Z M20.6666667,11.0348565 L20.6666667,13.3333333 L22.9651435,13.3333333 L20.6666667,11.0348565 Z M21.5555556,17.7777778 C22.0464753,17.7777778 22.4444444,18.1757469 22.4444444,18.6666667 C22.4444444,19.1575864 22.0464753,19.5555556 21.5555556,19.5555556 L14.4444444,19.5555556 C13.9535247,19.5555556 13.5555556,19.1575864 13.5555556,18.6666667 C13.5555556,18.1757469 13.9535247,17.7777778 14.4444444,17.7777778 L21.5555556,17.7777778 Z M21.5555556,21.3333333 C22.0464753,21.3333333 22.4444444,21.7313024 22.4444444,22.2222222 C22.4444444,22.713142 22.0464753,23.1111111 21.5555556,23.1111111 L14.4444444,23.1111111 C13.9535247,23.1111111 13.5555556,22.713142 13.5555556,22.2222222 C13.5555556,21.7313024 13.9535247,21.3333333 14.4444444,21.3333333 L21.5555556,21.3333333 Z M16.2222222,14.2222222 C16.713142,14.2222222 17.1111111,14.6201913 17.1111111,15.1111111 C17.1111111,15.6020309 16.713142,16 16.2222222,16 L14.4444444,16 C13.9535247,16 13.5555556,15.6020309 13.5555556,15.1111111 C13.5555556,14.6201913 13.9535247,14.2222222 14.4444444,14.2222222 L16.2222222,14.2222222 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-978.000000, -26.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="tools" transform="translate(99.000000, 18.000000)">
                        <g id="textfile" transform="translate(869.000000, 0.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/images/48px/directory.png000064400000002003147361034410014466 0ustar00�PNG


IHDR00W���IDATh���n�D��+�I�HT�J�@aH��Q�R��eY�'�<J�����-
"�ק�3���̵���~�c{f<�;��;�����,*/��d	��9gp�J�W8G�\;���Ε����wQ�~���Tc�G�u�)��D���Z�{�f͹9��b��K>�\�Ǜǟ�88��E�%�S<Ek�h7h�+���}�n߽���=MdDG���OD��+�/Y�px|�~K�@�ƈ&/ۈ���W�z��‣�/�w|� ���@�{�|��b��]���j�?g��}�����"!Q��M��_`�7����;2�o��Eͥ�5��#�V���}I��IkKBJ!De��@�J݊�����֍���ܖ�6���赣��N$�֤�V�����g��(O!�&!DE���ck!U�k�ЀH�����ﶠ�,:"�P`��{�M6�R,�b���dL4����k�
VN��_�)�jeTU�ީ�䙇x��#n'�LI�����l憼O��S��b��s��uQ���^E�����r���,��̥����k7$.�<�߾[����} ��P�+o�ۇxp<٬Cާ�{����I�t�8xP?��i)y�U�^�Z���7)���=�%��_�G��]�4U�&�n7zC��QVĽ��t\����&
Qy�
��s�)��A���Ă֤K�X/:�M�Du��
���
j�����?�p7�:ӏ
AYz�._�i�l���5Оc#DX-��F����f��O���CRާ�w�5υ�+`	\�au�BfԨ�<䓯W��d���<C䳡U�ݏ*
����;~x�c�s�x
mY�9w��� _"ra�i��)�*�N�r�G;�5��΃�w�}�+R<h���-��nr���<�A�{4�i\P��79|�,%�a�6��(;��͔�IEND�B`�lib/themes/light/images/search-default.svg000064400000004105147361034410014566 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="15px" height="15px" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
    <title>Combined Shape</title>
    <desc>Created with Sketch.</desc>
    <defs>
        <path d="M11.3820189,10.3213587 L14.7803301,13.7196699 C15.0732233,14.0125631 15.0732233,14.4874369 14.7803301,14.7803301 C14.4874369,15.0732233 14.0125631,15.0732233 13.7196699,14.7803301 L10.3213587,11.3820189 C9.23588921,12.2387223 7.86515226,12.75 6.375,12.75 C2.85418472,12.75 0,9.89581528 0,6.375 C0,2.85418472 2.85418472,0 6.375,0 C9.89581528,0 12.75,2.85418472 12.75,6.375 C12.75,7.86515226 12.2387223,9.23588921 11.3820189,10.3213587 Z M9.86981921,9.77380751 C10.7239628,8.89568802 11.25,7.69677529 11.25,6.375 C11.25,3.68261184 9.06738816,1.5 6.375,1.5 C3.68261184,1.5 1.5,3.68261184 1.5,6.375 C1.5,9.06738816 3.68261184,11.25 6.375,11.25 C7.69677529,11.25 8.89568802,10.7239628 9.77380751,9.86981921 C9.788201,9.85258825 9.80348847,9.83585136 9.81966991,9.81966991 C9.83585136,9.80348847 9.85258825,9.788201 9.86981921,9.77380751 Z" id="path-1"></path>
    </defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="18-new-file-manager-light" transform="translate(-1831.000000, -28.000000)">
            <g id="menu-head-footer" transform="translate(-1.000000, 0.000000)">
                <g id="menu-bar" transform="translate(1.000000, 0.000000)">
                    <g id="search" transform="translate(1607.000000, 18.000000)">
                        <g transform="translate(224.000000, 10.000000)">
                            <mask id="mask-2" fill="white">
                                <use xlink:href="#path-1"></use>
                            </mask>
                            <use id="Combined-Shape" fill="#8591B0" fill-rule="nonzero" xlink:href="#path-1"></use>
                        </g>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>lib/themes/light/css/statusbar.css000064400000001041147361034410013217 0ustar00/* statusbar.css */
/* Statusbar wrapper */
.elfinder .elfinder-statusbar {
  /* */
}

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

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

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

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

/* Size of current file(s) */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  /* */
}
lib/themes/light/css/theme.css000064400000001733147361034410012321 0ustar00/**
 * elFinder Theme Template
 * @author lokothodida
 */

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

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

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

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

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

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

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

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

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

/* Status Bar */
@import url('statusbar.css');

.ui-widget-content.elfinder-edit-editor{
	width:auto;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right .ui-icon.ui-icon-closethick {
	display: none;
}
.elfinder-toolbar .elfinder-button-search .ui-icon-close {
    margin: -10px 4px 0 4px;
    width: 17px;
}lib/themes/light/css/view-thumbnail.css000064400000004331147361034410014147 0ustar00/* view-thumbnail.css */
/* Wrapper for thumbnail view */
.elfinder .elfinder-cwd-view-icons {
}

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

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

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

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

.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon-directory,
.elfinder .elfinder-dialog .elfinder-cwd-icon-directory {
  background-color: transparent;
  background-image: url('../images/48px/directory.svg') !important;
  background-position: center center;
  height: 48px;
  width: 48px;
  background-size:48px;
}
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon.elfinder-cwd-icon-pdf{
	   background-image: url('../images/48px/pdf.svg');
	  background-size:36px;
	  background-position: center center;
  }
  .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon.elfinder-cwd-icon-x-php{
	   background-image: url('../images/48px/php_file.svg');
	  background-size:44px;
	  background-position: center center;
  }
  .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon.elfinder-cwd-icon-html{
	  background-image: url('../images/48px/html_file.svg');
	  background-size:40px;
	  background-position: center center;
  }
  .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon.elfinder-cwd-icon-plain{
	  background-image: url('../images/48px/text_file.svg');
	  background-size:40px;
	  background-position: center center;
  }
  .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-icon.elfinder-cwd-icon-x-pascal{
	  background-image: url('../images/48px/text_file.svg');
	  background-size:40px;
	  background-position: center center;
  }
/* File name */
.elfinder .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename {
}
.elfinder .ui-state-active .ui-button-text {
	color: #fff;
}lib/themes/light/css/reset.css000064400000011415147361034410012337 0ustar00/* reset.css */
/* Comment out/delete the reset rules where appropriate */
*{
	outline:none !important;
}
/* container */
.elfinder,

/* toolbar */

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

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

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

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

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

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

/* context menu (outside of elfinder div */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-contextmenu-item,
.elfinder-contextmenu-separator,
.elfinder-contextmenu .ui-state-hover {
  /*background: none;
  border: none;*/
}
.elfinder .elfinder-toolbar,
.elfinder .elfinder-buttonset,
.elfinder .elfinder-button,
.elfinder .elfinder-toolbar-button-separator,
/*.elfinder .elfinder-toolbar input,*/
.elfinder .elfinder-navbar,
.elfinder .ui-widget-header,
.elfinder-dialog-confirm .ui-icon,
.elfinder-dialog-confirm .ui-widget-content,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
 background: none;
  border: none;
}

.elfinder-button-search input {
	border-radius: 0 !important;
	height: 24px !important;
	border: 1px solid #ddd !important;
	font-size: 12px;
	font-weight: 100;
	color: #808080;
	padding-left: 10px;
}
.fm-topoption select{
	appearance:none;
	-moz-appearance:none;
	-webkit-appearance:none;
	background:#fff url('../images/selectshape.png');
	background-repeat:no-repeat;
	background-position:right 10px center;
	height: 30px;
	line-height:26px;
    padding: 2px 5px;
}
.ui-widget-header .ui-icon {
	background-image: url("../images/ui-icons_default_theme256x240.png");
}
.elfinder-toolbar .elfinder-button-search .ui-icon-search {
	background-image: url('../images/search-default.svg') !important;
	background-position: inherit;
background-size: 15px;
}
.elfinder-cwd table tr:nth-child(2n+1) {
	background-color: #f9f9f9;
}
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file:hover, .elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover, .elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-state-hover:hover {
	background: #f9f9f9 !important;
	border-color: #f9f9f9 !important;
}
.elfinder .elfinder-navbar .elfinder-navbar-dir.ui-state-active {
	background: #f9f9f9 !important;
	border: 1px solid #f9f9f9 !important;
}
.elfinder .elfinder-navbar .elfinder-navbar-dir:hover {
	background: #f9f9f9 !important;
}
.elfinder .elfinder-cwd table thead td {
	padding: 10px 14px;
	padding-right: 25px;
	font-weight: 700;
}
.elfinder .elfinder-cwd table td {
	padding: 7px 12px;
}
.elfinder-navbar-dir {
	padding: 5px 12px;
}
.elfinder .elfinder-cwd table thead td.ui-state-active {
	 background: inherit !important; 
}
.elfinder .elfinder-cwd-wrapper-list table thead tr td:hover {
    background: inherit !important;
}
.elfinder .elfinder-navbar {
	border-right: 1px solid #e5e5e5;
	background: #f9f9f9 !important;
}
.elfinder-cwd-view-list thead td .ui-resizable-handle {
	top: 9px;	
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
	top: 10px;
	right:2px;
}
.elfinder-cwd table {
	padding: 0px;
}
.ui-state-default, thead .ui-widget-content .ui-state-default{
	
}
.ui-widget-header.ui-corner-top thead .ui-corner-all.ui-widget-content .ui-state-default td{
	background:#fff !important;
}
.ui-widget-header.ui-corner-top thead .ui-corner-all.ui-widget-content .ui-state-default:hover{
background:#f2f2f2 !important;
border: 1px solid #ddd !important;
}

#elfinder-wp_file_manager-cwd-thead .ui-state-default.touch-punch.touch-punch-keep-default.ui-sortable .elfinder-cwd-view-th-name span.ui-icon{

}
.elfinder .elfinder-cwd-wrapper-list table thead tr td {
	color: #404040;
}
.elfinder-cwd-wrapper.ui-droppable.elfinder-cwd-wrapper-list.native-droppable .ui-helper-clearfix.elfinder-cwd.ui-selectable.elfinder-cwd-view-list {
	border-top: 1px solid #ddd;
}
.elfinder .elfinder-navbar {
	padding: 3px 10px;
}
.elfinder .elfinder-cwd-wrapper-list table thead tr td:not(:last-child) {
	border-right: none !important;
}
.elfinder .elfinder-navbar .elfinder-navbar-dir {
	color: #404040;
}
.elfinder .elfinder-button-search-menu {
	top: 42px;
}lib/themes/light/css/contextmenu.css000064400000002370147361034410013566 0ustar00/* contextmenu.css */
/* **Note** that the context menu is NOT inside the main elfinder div */
/* Context menu wrapper */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-button-menu {
  font-size: 16px;
  font-family: 'Open Sans', sans-serif;
  background: #fff!important;
  border: 1px solid #b5b5b5!important;
  box-shadow: 0 0 5px #cdcdcd!important;
  border-radius: 0;
  padding: 3px 3px 0 3px;
}

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

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

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

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

.elfinder-contextmenu .elfinder-button-icon-open + span {
  font-weight: bold;
}

.elfinder .elfinder-contextmenu-item .ui-icon.ui-icon-check {
    margin-top: -9px;
    left: 1px;
}
.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon.ui-icon-check {
    right: -1px;
    left: auto;
}lib/themes/light/css/view-list.css000064400000005466147361034410013151 0ustar00/* view-list.css */
/* Wrapper for list view */
.elfinder .elfinder-cwd-wrapper-list {
  /* */
}

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

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

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

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

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

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

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

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

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

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

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

/* Hovered file */

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

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

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

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

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

/* Icons */
.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file .elfinder-cwd-icon {
  /* */
}
.elfinder .elfinder-cwd-icon.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document {
  background: url(../images/16px/text_file.svg) !important;
  background-position: 2px 130px;
  background: no-repeat;
  background-size: 38px !important;
  background-repeat: no-repeat !important;
}
.elfinder-cwd-wrapper-list .elfinder-cwd-icon.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document{
  background-size: 13px !important;
}lib/themes/light/css/icons.css000064400000004137147361034410012333 0ustar00/* icons.css */

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

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

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

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

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

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

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

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

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

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

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

/* Code/Scripts */
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript,
.elfinder-cwd-icon-x-perl,
.elfinder-cwd-icon-x-python,
.elfinder-cwd-icon-x-ruby,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source,
.elfinder-cwd-icon-x-php,
.elfinder-cwd-icon-xml {
  /* */
}
lib/themes/light/css/README.md000064400000004625147361034410011767 0ustar00# Stylesheets
All CSS for your theme will be located here.

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

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

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

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

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

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

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

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

    /* mkfile toolbar icon */
    .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkfile {
      /* styles specific to the mkfile button (e.g. background-position) */
    }
    ```
* Some styles have their `text-indent` property set to `-9999px` to keep the text out of view. If after styling you can't see the text (and you need to), change the `text-indent` property
lib/themes/light/css/navbar.css000064400000003470147361034410012470 0ustar00/* navbar.css */
/* Main wrapper for navbar */
.elfinder .elfinder-navbar {
  border-right: 1px solid #e5e5e5;
}

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

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

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

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

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

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

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

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

/* Resizable handle */
.elfinder .elfinder-navbar .ui-resizable-handle.ui-resizable-e {
  /* */
}
lib/themes/light/css/main.css000064400000001571147361034410012143 0ustar00/* main.css */
/* Container div for elFinder */
.elfinder,
.elfinder .elfinder-dialog,
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu {
  background: #fff;
  border: 1px solid #ddd;
  box-shadow: 0 0 5px #cdcdcd;
  border-radius: 0;
}

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

/* Resizer */
/* Used if elFinder is resizable and on dialogs */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  /* */
}
.elfinder-button-icon.elfinder-button-icon-fullscreen {
	background: url(../images/16px/fullscreen.svg);
	background-repeat:no-repeat;
background-size: 16px;
}
.elfinder-cwd-view-list td .elfinder-cwd-icon {
	background-image: url(../images/icons-small_new.png);
}lib/themes/light/css/dialog.css000064400000006410147361034410012453 0ustar00/* dialog.css */
/* Dialog wrapper */
.elfinder .elfinder-dialog {
  /* */
}

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

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

.elfinder .elfinder-dialog .elfinder-titlebar-minimize{
  background-position: -89px 0px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-minimize:hover{
 background-position: -89px -31px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-full{
 background-position: -45px 0px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-full:hover{
 background-position: -45px -31px;
}
.elfinder .elfinder-dialog .ui-dialog-titlebar-close:hover {
 background-position: 0px -31px !important;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
  left: 1px;
  top: 12px;
}
/* Dialog content */
.elfinder .elfinder-dialog .ui-dialog-content {
  /* */
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.elfinder .elfinder-dialog .elfinder-titlebar-minimize .ui-icon.ui-icon-minusthick,
.elfinder .elfinder-dialog .elfinder-titlebar-full .ui-icon.ui-icon-plusthick,
.elfinder .elfinder-dialog .ui-dialog-titlebar-close .ui-icon.ui-icon-closethick,
.elfinder .elfinder-dialog .elfinder-titlebar-full .ui-icon.ui-icon-arrowreturnthick-1-s{ background: inherit; } 

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button{ left: -7px; }lib/themes/light/css/toolbar.css000064400000023366147361034410012667 0ustar00/* toolbar.css */
/* Main toolbar wrapper */
.elfinder .elfinder-toolbar {
	background: #f4f5f7;
	border-bottom: 1px solid #ddd;
	padding-left: 10px;
}
/* Buttonset wrapper */
.elfinder .elfinder-toolbar .elfinder-buttonset {
  /* */
}
/* Buttonset wrapper for search field */
.elfinder .elfinder-button-search .elfinder-button-menu {
  background: #fff !important;
}
/* Buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button {
  border: 1px solid #ddd;
  webkit-transition: background 0.3s, border 0.3s; /* Safari */
  transition: background 0.3s, border 0.3s;
  background: #fff;
}
/* Hovered buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button:hover {
  background: #cce8ff;
  border: 1px solid #99d1ff;
}
/* Hovered buttons in search field */
.elfinder .elfinder-button-search .elfinder-button-menu .ui-button:hover {
 
}
/* Disabled buttons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button.ui-state-disabled {
  /* */
}
/* Buttonset separator */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-toolbar-button-separator {
  /* */
}
/* Button icons */
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
  /* */
}
/* Searchbar */
.elfinder-toolbar .elfinder-button-search {
  /* */
  margin-right: 5px;
  border-radius: 0;
}
/* Searchbar icons (search and close) */
.elfinder-toolbar .elfinder-button-search .ui-icon {
  /* */
}
.elfinder-toolbar .elfinder-button-search .ui-icon-search {
  /* */
   background-image: url('../images/16px/search.png');
}
.elfinder-toolbar .elfinder-button-search .ui-icon-close {
  /* */
}
/* Commands */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon {
    background-color: transparent;
    background-position: center center;
    height: 16px;
    width: 16px;
  }
  /* Back */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-back {
    background-image: url('../images/16px/back.svg');
	background-size:16px;
  }
  /* Forward */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-forward {
    background-image: url('../images/16px/forward.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-reload {
    background-image: url('../images/16px/reload.png');
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-netmount {
    background-image: url('../images/16px/netmount.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-home {
    background-image: url('../images/16px/home.png');
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-up {
    background-image: url('../images/16px/up.svg');
background-size:12px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkdir {
    background-image: url('../images/16px/add_folder.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkfile {
    background-image: url('../images/16px/add_file.svg');
	background-size:13px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-upload {
    background-image: url('../images/16px/upload.svg');
	background-size:15px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-open {
    background-image: url('../images/16px/open.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-download {
    background-image: url('../images/16px/download.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-getfile {
    background-image: url('../images/16px/getfile.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-info {
    background-image: url('../images/16px/info.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-quicklook {
    background-image: url('../images/16px/preview.svg');
	background-size:16px;
  }

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-copy {
    background-image: url('../images/16px/copy.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-cut {
    background-image: url('../images/16px/cut.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-paste {
    background-image: url('../images/16px/paste.svg');
	background-size:14px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-view {
    background-image: url('../images/16px/view.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-view-list {
    background-image: url('../images/16px/view-list.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-help {
    background-image: url('../images/16px/help.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-duplicate {
    background-image: url('../images/16px/duplicate.svg');
	background-size:14px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-rm {
    background-image: url('../images/16px/rm.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-edit {
    background-image: url('../images/16px/edit.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-rename {
    background-image: url('../images/16px/rename.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-archive {
    background-image: url('../images/16px/archive.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-resize {
    background-image: url('../images/16px/resize.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-extract {
    background-image: url('../images/16px/extract.svg');
	background-size:16px;
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-sort {
    background-image: url('../images/16px/sort.svg');
	background-size:16px;
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-undo {
    background-image: url('../images/16px/undo.svg');
	background-size:16px;
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-redo {
    background-image: url('../images/16px/redo.svg');
	background-size:16px;
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectall {
    background-image: url('../images/16px/select_all.svg');
	background-size:16px;
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectnone {
    background-image: url('../images/16px/deselect_all.svg');
	background-size:16px;
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectinvert {
    background-image: url('../images/16px/invert_selection.svg');
	background-size:16px;
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-empty {
    background-image: url('../images/16px/clear_folder.svg');
	background-size:16px;
  }
  .elfinder-cwd-view-list td .elfinder-cwd-icon.elfinder-cwd-icon-x-php{
	  background-image: url('../images/16px/php_file.svg');
	  background-size:16px;
	  background-position: center center;
  }
  .elfinder-cwd-view-list td .elfinder-cwd-icon.elfinder-cwd-icon-plain{
	  background-image: url('../images/16px/text_file.svg');
	  background-size:13px;
	  background-position: center center;
  }
  .elfinder-cwd-view-list td .elfinder-cwd-icon.elfinder-cwd-icon-html{
	  background-image: url('../images/16px/html_file.svg');
	  background-size:16px;
	  background-position: center center;
  }
  .elfinder-cwd-view-list td .elfinder-cwd-icon.elfinder-cwd-icon-zip{
	  background-image: url('../images/16px/archive.svg');
	  background-size:16px;
	  background-position: center center;
  }
  .elfinder-cwd-view-list td .elfinder-cwd-icon.elfinder-cwd-icon-pdf{
	   background-image: url('../images/16px/pdf.svg');
	  background-size:12px;
	  background-position: center center;
  }
  .elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file .elfinder-cwd-icon.elfinder-cwd-icon-x-pascal{
	   background-image: url('../images/16px/text_file.svg');
	  background-size:13px;
	  background-position: center center;
  }
  
  /* Menus (e.g. for sorting) */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu {
    /* */
  }
  /* Menu items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item {
    /* */
  }
  /* Selected items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected {
    /* */
  }
  /* Hovered items */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item.ui-state-hover {
    /* */
  }
  /* Menu item sorting ascending icon */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected.elfinder-menu-item-sort-asc .elfinder-menu-item-sort-dir {
    /* */
  }
  /* Menu item sorting descending icon */
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu-item-selected.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir {
    /* */
  }
  .elfinder-toolbar .elfinder-button-search .ui-icon-close {
    background-image: url(../images/close.png);
    background-position: center;
    background-size: 57px;
    background-repeat: no-repeat;
}lib/themes/light/js/README.md000064400000000507147361034410011606 0ustar00# Scripts
Any extra (funky) Javascript that you want to load along with your
theme should be located here. This could be:

* Special configuration for elFinder under your theme
* Extra JavaScript libraries that your theme depends on
* Javascript hacks to the elFinder markup after the file browser has loaded (not recommended)
lib/themes/windows - 10/images/close-hover.png000064400000000527147361034410015017 0ustar00�PNG


IHDR->`�7bKGD�������	pHYs���o�dtIME�
,R�8tEXtCommentCreated with GIMPW��IDATX��ׯB!��[(l�
��O`�Ql&��@'�(6O����{��a��|�?�7v8��ݽ0X60�f4���ߢR�0��/��J�/t���"\
�,�d�}���_��<_ֵn�%�2���K��a��I�p�ƻC�.]��\�*�f�����}�����#�C?h~{0�ьf4��G���T���vIEND�B`�lib/themes/windows - 10/images/ui-icons_default_theme256x240.png000064400000104645147361034410020066 0ustar00�PNG


IHDR��tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:75795EA0278611E8BE05E10E039C07E6" xmpMM:DocumentID="xmp.did:75795EA1278611E8BE05E10E039C07E6"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:75795E9E278611E8BE05E10E039C07E6" stRef:documentID="xmp.did:75795E9F278611E8BE05E10E039C07E6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�I$
�IDATx��}�m�u�w��mUױ�8�L+���N䴵������%]@���$��@JpY�KR,����K�R���y�I;R- ~�m�P��2)�I�~HT(���?�V8�����\���s�Ϛ���{>��{��c����z�¿����O�s/��^���x���^��'����k�98w�9{�}�{�Z��}Y��B���������n|�����X�s�۩�q�q�|�q�/�o\���k�����z��=�zi<����q�s�u�(?�9����5ݓ��x�~���4�����wwNո�u�����c�?��������9����'���Z7���YG��g�y�0^�-O=�|��Ku2����<��{����ɓL�u��~S���/?��:�|�<�tb�����d�n|cZ�t?��k��7�?~?���a��<G�~���H�1����㔯3�_^<:w��t��k�s+�梞���%]C�1���c���׼�v6W�Y��I��d�I�'/�]tS��<�5Յ�o~4���`j�����9��䌙~�x<G�g�����.j2�y�^�c~��K'av�=̓��5]k?��|��~:�9�5�bQ���&��>=�%]غ0�Z��׹����7����Ɯ�k��E��9������7S'>}�X�5�{��:&�,����"\�#h2.j�q����r�p6��'|�
7��vo0P�;�Kލ��I�م�k���8�{}���׼��J�:��l\��{6xϓ����s2�R���ӆ������Q�C�B�z8Ψ'��'��tM�Q蒍�zX�e��Uy�`,@uC�D����:��:��ˋ)�>�s���ݔv��¡��m�w������Zӝ�'���}����G]Y5��ꮑ�'O^5���K�;��O�w.�yG�ΌU���ɰ����\h:�Bh��]��k2�y�慚��rj(u)�U�y�:�;s�������������<�?��#�	�u�%�(��'��Q�1��z66:�iQ�c���	�s<\�SM�P"���9�XQ�	�7�m;�t�j4ӹ�p������)%����}�9�b��$>��<!7UwW
'�5ڌ�����Ԑ�^�[%�;h(����j����>���2`��p97�[���J�nʂ����na|DZKp�����/�n�Z[M(��o��}�	�;	
.���q��T��L���'Sc�KF���yјQw�~�0�G��
#4FO��q��9e�r�2�3���#����"�d:���1�FC��BX�@V�I�Mz����<�<G�8�|�\bɹ��@Im��~V-�Z���8��;�����	տ_�McF���<}v�����5:�F������sK9������v�A���!�X����hl�}�s^��Tگ��S�kѲűn�}R�BK��<չOU*W"�<��LG9���H�%�c�6<�C;넢��6�EIVwq�~]|ƭ�N:�48U�]��J)n��g��_(�5;�L��x�	e�i�O׻P^���p�G�s2rAt4y�:��숛��kw��xu�Q��D)�p.��p�[TO�6$�I�{A^O~�hz������t P� P�^���J�bq�:�9*+K��s�(��0U��r��R�V�kq;���)��Y*A�����of:Gfq���GC�r�SR)��mW:v`"Z_UU��j�PJ9�:Tn�&$�DMF��ɭ��X5E�@��3Pev�\�Cw�
=�l��%��h:�봀轴*L���$�r����uO�(�k��5�t�՛��������� �=�ݧ�p.���B[Q^��߹F�j��D�b41��."sh���Ȋ��R�\�U�fұr	H�&B�҄��W�Q�+�Ri���
�R0��1h2-��Ȧ�G�H� �o]5Ey:T~T�?�;�wC ������䐀��sݕ���B;-��TjR��05ޢ�8�u�.��G=�Np]yi���ʴt�UhC�r��Ap�~�dw��X
�+q����4�<��Y-M�X�–�p6g�Z=�i�8�ÕjhR���U�%�ȥ���\"�x3@J�����}�ʛjxvJ$��bB	^B�U�,���H�D�q�<��A#�,+��F�i��`J*8� ���ĵ!���XM^�9¡�$�m��|��t�jɣ:>�������O1�c�Qv�e�+��BQ+$�~l�Y��	1F�M�w�����*Bh��nD.����t�
m\,^%Bu�v�,ڐ4�ׯ�KZkT ,�@nP>�*�����B#�����`T>4cN��p���x�\j2J����T�x���v=7.	K�!0�y�� ��K.S��=U�B�QxH@�
���.9Ia�3.��^����{��jȄ��	DI �t�lk5�tnt��y��%I���N܎[a�]H�v:*��s��rYng��&c��\���A��������q�0�\mgt�ktb�V�A�j�9}�K��s�f]x�l�c*��KRR�r�u�;k�.��"gh�ݕ�*�ۑuAi≒�U8DT`z݁IhA+�&e�0�{�q��N�:J�{^P�wbv���d.%�ɣv�$�I���Ԩ`G<�H$Tu�#ڑi����J��Tr�|H�xw�\�W�^���W�]���ٯ%�"!�4\p9J0I��(8G��vn��݌\[J��2/\*o�<$�3Q��qIb�;���5W�s�����d��vY���qr�rD�j�>3\�.@��W�Te��w���	N���c"��I��+�n˥�1t
h�T�`c����R8"��
�^q�B�p
&�
1��x'[&d'��"$�Qh���>�]���8�D��]S+)TN��6K��Q��[=[�|U���Y=�~8ğn��`
���[^w�Q�\y�\��c�5�d�+��s R�.I�l'r>�*�2�0��3�	\ȣ�� Ii�nI�4sC�ɉu�iww���cA\i�:���	�ܮB�	A�R��i��l���+}G�Vo�I�i��sn��Wo�e�ՠ;�B理�NW��|h}:l�`,���(�6d�E�Xnp�Ϟ�.)����_ܦ�1� y����e�]�E�n����'�ˁCP��~MF��gg�=�|�LZ?�0��l���0G��:�6m k:�%{c��Oq���D��j�y�<)�8���f���l,��S;�	A�]IxG 
≊S�k'�䪒G��i�
��W����9�z��RR	�B7�Pb��Kc5����[Y3��wt\ի)B;]��:�T$�!����P�b�;ܫc
�A"��{RW�"ː��r3T2�{N�vT�8 .L!�D��deUBNdٗ�i���.C"�R�uZf�p�)iV��$vL=�Ų&�����b�Ӡ3�VI%
�(.OȢ%�D?
��z㍠�VGA�d$䚎u,�ݱ��N�/��t�4Fg�Ą^�*=��#��	h��x�h�bT%�](�<�z�n�a_�6��7"	V���x&��d�
i�����N.|����;���s�X�x��0I�$�B�{��O�'��ܧ��D��!�1�^��- �(��h��qs\�3���Q�9nU �}�2�`G��QB��K搃�	R㇪��v@B쑫DW��jL����+
���KT�@�̤8�ʯ����]�^=��Z�MV
m�F5��`��Ned+�k���
��@g��:0
��!:�t"�(lsG��;�&��Dw��r.��ʴNπ�o�W�Yv*�:PN���k�,�ƼJ��8�r�q�Z�!���Q�ܑ��/P��+=}-�ѹPLO�-Ǚ�܎3|����$ιU@e)g�%W���"��&_HR�J.��)�|��@�r5	���3;�k�E���ES��v?�n #�7hy+��v�j��񭾟�&,�Da�ޏ��zk��M����Y��=@�~LjV^^7���sV���w��D;�#��B��Ν��N~�Fq>�j�0б��;�*;9R�
�ͮvJ���Չ���!��L	�r�� ��>e=e�*��Dn�Q����I!��+P"���#�m􇄫w	0�ew�
��g=\��\Y�઒��X�����c�R��@�&Va�!qވC�9�
R�u�*�C�r�*����2��I'U�'׾K=��'%��Ʌ'2��DL�t( J=�}C 4�0�RY�ִcTBNF�"Q3Ru����	�0��~.�AyZ��!-Z�C��͒!r���>T����.G��\�%Jι
�ʄ�<��(*�~u��O��(QH���r�M+	VՅ�N�h�[���.wPY4$�Y�#W�,<����!A�gm�aFcW�����7f��k�-fbU�>�%�Z9hR���eD���!z5�vD�S��J2LC��D�[���)���g:�$M₵��>�k���:�H�t��諮˫�e�>� �D� ��!��8�3��]T�f.A�:��e���v��eP��ƚ���J�Wl�m�Qt��}0':fͧ�P�tn��p�ʬU����A����x��E�w��t��}vBg�ԭ�0�jFA�S.NL]��ʝv�"؈bmr�g�w�ݚ�Q�x\!�Yf�X*wV�Z���O�u���W�e@���Y%�l?��i��N�*cM��|n9TX�/�U
�ʫ�s%L}]�?+s�u�!�S�wh�ZR�JR|�Z풘N��ya�/�-]eݨtB�K�/�px�k���9Ʃ�ͫ�!I�Fǫl��%`�g��f����&A�Jˎ�[��l,�e��]����t���G�.Fz�G�\�n�b����R|��RcR���&�:�
?�ʸРr!a���g6���j�E�w�PÒY�1����DYV�����p,��p��dN�~��L}htkX�5,�h�񍉍�L�u�g�n��d�!���E��Υ�D"�
і����@��.Av�ޭ�K���
d���?���G�
@�O	!�<:w�0�>��
�*F|��P�éR�+��k��URc�@�4�͍]�Z�����i]\���^��}�����*�J[��Vw��%��u�>��=@7~ɼtJ����>
*�76Y��	P�#�ڶ�PV��K�B\�ݹ)#N�4QK���{�s�=Nj�a�əlݠ$'o`���������t
��{/��r9j̞ט�T�p�0c-�����9Fa��C�j�8�lkE�q'	�|�Kج���kq�F�ɗ1y*0�Y��������q��y�V��J�=����p	K1��A;��;ٹ���8,����)H̿8��=:>C
�'j	bi'^�+����X�c-dO�)V|�3�;��){�2�$�l@g��솺��)���Lh:�"���/�x)��Nf��#>�ƒ�����˙��`��%ߗ���D؇Q���a��!#�u�S8��HP¶5�[�t�Ǭ���0UiM�=����#��3�����ڍ���Z{�hA9bN����p���<�+��[�K�S\͓(v�Ew"5�E�%�ⵥ"�A��9��j�H�x!���x��^���H��ECª�p�?9{�$$J�JL���Beg��-|����ѕ^	��#gҵ.r^�Ӆ�lJ</L��/�2/��-*|�yP���U��Ӻ�Ԭu�+!V]s�%e�.ԇ���'�k�EO"�7#O��ӎ]���%����S�!��bV��ļ������2Z܋�A�]�nZ+zO]'��
yPΫ�Z�[ ����B��Ȯ��Rd�����?sK)��k“;(���;��e�鼜��,��^����P��y�=�U�8��d���"�*�8So�R>�P����Z�kIG�w
L\�f��\��!��&����
S �
8�HP���x;�n\�U�{��;Ghp�0�vR2��y'-~Z@3�]�S��9ya��"�"Đ����:j�l�]��js�{F���N�\�G@����j�W���h�9�k���}�ؗ�ٮ;���� �	��vS�IQzj��5u9���5)o@�݁�^i�wh9���F�L]�4v(ӱwX|
Eءb)lVG-�u�t���H3s�L���f�kuC]�4�\ؙ�å���XU���D�$���k�;����S����6�*�.�4��0I@�gS[,�MH� �w��A�n%�HC�S	Ws*�c  �;f������d�����r�溰(@�
P�@���1�tCb�<$|}��	��3%f5D��’S5�L�U��n�#!��Uh暝Rb��i��pL�p᠎�=�S1#)�vc���qe-j�0k,1�Ehr���O֛�Q3H�jރEN(�ˊ0J涒s�{u1�ށ���w
�\r�L$A<Zq^�V��E�.4%u	�M��Ur��
��X�>��K�a���yL�wq����tY^gQ��p=�41Eq6�M5��*Ų�
�'��\4��f��N+ �=P6�0��$[]�Z�W	/�QI����θ:Wݕ#�Kp�}���	���AHb�F��4��<fـ�&<�$;r�]�@�0Gwu����s!ɕ�2�1-�K��ʦk�*Ul@�.�=�n�:��W���і�ߦ;tP��=.I*e�ͿL�%,�u��)C+�؃�		m�G�
n��/��%]��[P��rz
t�l ���m���p�3/�X���D�g���ZC�W�iqgW��;7�h����E�E�y/�PK��Ę.z�\^p+���1��9�NbS@o��/=�8P��ɐe��h8��A+T��Lsi���b��o����X�޵3%�M[�L�#�S��fՍ|�9��XG����B�{n�������,��I5kL�M!2� ZNc�!Y�܏�.x�O%A]䮫.AAe���p��4�GYCA�z.�Fib.N&�y��k�}����)����*x�H��Q�.�!��Q�YO�wUo�����M���H�)��jl��������6TkL7�4���.�}�5�d����F�D��j�q�S�ӹ��Vf�-�A�ś��50��窓1��,��Q��BT�������A�K�Npc�.Iv�5��o_ʬD��i̫vܖx��,�K�ʫ�n�ڧy��{4��͘n�5����v�2/I��6uYσ���s.!����3��_�g�5�)�.��igY�y��,�f�)��f%��5���$��X���$G�$�a��D�����59���f-�q��ޮJ	IB�ʮ:6�%���s;o��N��9Q��3~�BUW_˭�g;�����7I�U*ӶH5`-�P2M������qc@Y(�7:�	�F�r�j����S����!,A�Y
���X�n,���c��u�Ѩj0s�����>|�j�q�t���8<�hM�v�%SYG�q'�*9�%��� n��� ���2��@̭�gI^	������{�w�,�=��q�K�;,@8gZ�ZR��s���C;)0%�%�/"Mu\_�ز���%��e?���h�r��j���'f	^�v!v>�����o���X���Vב�RTk�N�:�=�]}3�
���SJ��;��ɫ� �Lӕ�\�\Ϲ_U�h3K�~:�=\�Rq
iy��N�ԕ��&���t����.���,-�>(ژB1�bW���Ք���I���
�N��TT' ���N��Z���^�p�?ݕM��y��c"{9�F=�tHՠ��N�?v�4!Jp�\J�͍М��㔱(�fs�i�.d�`�mC�\�t,W(g%���S�I^s�5S"Ĭ��û+_y��	sRɬ�p=�i�e�0%��'�I7ʼn�T���+��ʎUc�x�&�?��y*����o�L�U^�K5��}�v�Yދ�K�SB��/Ԣ��U�tZ���>�������aӉT��*m:W�S_sU�xD��	�#�kz��(V�`��]�a��H�CW����A����#F9鴪7A��@i+,=~N~Q�mE�)�ع�F���T�&CF��T	S*�V��g��n	=D$�*we����:�Z�w�~�I�Q8�ƪI�y�n�3*��u�o�}v�^�hub���ʶ�g]���M��V�4NC]s)1X�t����:��t�	�By��8t@����]�qh �j���X*��^z�D�c����@D��f�U�0�ӁK�X��F��#��z�n̉����'2L�:�PUZ���60�4*I�6J�U=+\XE",4_�x����n���Ɏ|D�I<Ӥ�6ִ����5����x�d����˫��%�ï�:���#�I�!2����ssF��d�U;�]�s�Tܵ!�������T��c�LE^�z�N�r�PV�Z7��.w��GXw���K�ɍ���v	8g��1!6�k�X�v�Ϻ��&�3�7�v����]��D\ρ��8�@��yy�!H	�9/��PN�$�*X��	�G�I!u|g'bQ�'(9�_��W�����k{�]5�� �����q�T�x�X�\�$�i��5�d�,�wYxZ\�.L�<.EMD�,?g`>:@����]5�Ek��
>���>�5븝�Y_�۝Gd�~�;�N
(�:�9R[q��ʛTs��zN����
�ЂN.�鐅��W-vW���(�:@��Jӯ2XT��9E�Uy�5$u�wV�<�j�
 n�`B�d�]��Կ�R?�#R�@�Ѯ��O���n6��[N%�t�$�	�P�$OjK��#hף�Rvtf�<#����Bqj�Z�����dDH� �pW��„ɝA4v9�k��%n]����L�!5U��y,jL�{!��0�TѶ�}���S���40'qB��5O'{�
���VM�a�:�y`�u�����ϭ1��J��5�b)A��4tB��F&m͍&\
HV���{#��5�D��
(�mqfB,�o���$�2K�gۤ��\�+��aRh�2��d�J�޸�i
��?1�2��-]Mf|!"n��z�q`�-Bv�3tf�L�A���%��j���^�S��d��ܠrV]��|���BMI ,�1��-5Pʷ�Ԙ3CrWm��X����k���ƾ@��L��}�i�0��� u�GW�%�,��Oipc	H��Dd�Y��Kn���Hu@�PԼ�v�쑫s���klJ��d�RGG�p���t�+��1q+n%���n4m�W¦�
�I�-䂛NG�d��c}�k?�r�?$��.��Ln4��
5��N#�rGԥʉrP�������$ڀ����@�\&e�Gjս�0�x���ٔ�L�e�">N*D�..�Dc�J��:��<ǒ<�-+q�i�D��r[�U@�E�h���l*M�jb+P'n�2<��7\CeS��/�~��Pk(�$!�%��I��qU�u^r}7��c�Â���jG  M��,
�o�ARxQ�c���Q[��AnEh�+VAn�*F�L{n��*o{�;|%���@1�#��z�{��l�}����^��5�n���If���jL�&����*�:�#��cs�g�����^����{��|�HB����T�˾1 ���r�ȵo�l��{w�SGqd|�tp�s�ڏ�3)�}u�cw3�9�fq�Y�s�u�0��c�ž��*$˭���XF��H*��՚�PfZf;�f�!�Z���ݘ���U��O�*iJ��KҔXL��6���q})�M�	ź^��I ��j,HwG�KN�@�˕u�↝��$�\h@;j�A[=����<�c�J�V���I���/��@X��@DM�F�f��|��pT"9�]W��c缁�i ��q�gs��m�!��L� ܘ$�"c�8^y��
�L2sZ��A��Ծ�0r���̓\p��,�3.�w,A���2�Up�g0Y�s��N���ϴ*�	wR�x��s��uZk�\�k�h���t�Q׍�e�kv�����莫�v2��|�}v"&�}�c�Q�C��V��	����|�8��Y��G�m�D�z�Q�r3�(�`D����u��Ō�����.5�����P�3R��g��
�Dݽ�F�,u
n*��>PhJ$j��
6OF�`��"x暣fR�&�C�9��C���C�['�IpT96���nu\���d���I�*1�e�Ve���C���V�;Tc�:;��D�
�8��$� ��
]ULC�J�B�zN��jZ�F$`�{Ρͪ�\��봓^ݕ�\m�����8$N@Յם�kz�"�����1�pE�
�༎r���N��8��G��˵u'ҙ�8e*��#cQқt��J@��F�qg%�S�:%�ܤ����R*(A]W�2�����SMV�9��ȝ$~�ʣQy�5%��R��	\�X���B��Z�u�[ ����Ȱ�%�=_х�
@D"�͙\w�nTy������0��k�C���.���I��� <v���8����Uw�CW�C�~t�mU\�\.,��^jp͔bn�u1'�u�|�9��֬�<�Б�Gc�2�Ҵ���-�zޠBm

����;�&p�N[���z
Y�Y��}8��#!ϥ2��w;�m����	!�H�d�_QnIO��3e�i�W�D%�F�T�q'�I<'��c�{_9'�J��>�3Wf�{r�՘P.���9�@��u�9'g�n���4�I6squT��3��yCF�QgX�����M�f))�n��K�U����P�
�,U5�u
BN�yֱ�R?R�a�lu�?jr�Ƃ8$:.�j��z(��
[q$H���:7��M�/ޚ�`Z�V�TN,c��V�/�43�R[rl�Mj���
��D`�D#^�?����!G�]��N��@�K9���C)�OƖ�ܕ��{d�g`5m缕�����)W�<8g�h��*�x���j���.4`�Y�n�F��ve%u���j�>y��yV�
��p�~ 絪��������)�<�dK���GUCJ����)L�ʲ�Րa&Ґ�sh�L-�i�(�^K��I9
���E��P�������(��E@rj	�����C.�+K;����晆�q����	���(�h�hÌ�}����8���IF{��K�
�9�j���ѐ�t�*����������>Ye� �Z(7�<=E��
@��\
�ʒ��r4N����Q%]}G�vNʹ8����P�ب�J�+�;p��S<w|�&Q�ӎ�y�I?8�5�uY
17��{��	���$5z��&��u9_�h?7�$I1���b�:k�.;HV��$��|Ps��3\�(@��#e_ݍ�0���t	�P����y�,$ؠvyh�5_!*�kO�D0vMFҵ�x9X�kS_)Y��"O�%�
��ך��;4S�u����d�t��17�����]p!���k���lP���Kv|�x��J�&��"Ո���Ά�[��ʾ��c�Iɩ|�J�;��Ș��4�F�k�U���+�vv��s��vu�D����Afk˵�;�]h9��+'�1Cn�[� ���=�yIo�k�r$�W�,�=�0%����|M�kM�Վ0D�Vٽ�J�����iѬ2�M�^�U������u��YT1��������C
Ģ][�*ԭ�i�SN�<�5#��3Yt�(��ge��K��sG[��臐D_�.�,Y�����\S
��"��N���F�F]@��ų�W�Of��d�;wB����\+�9�L��@)�z{
���Q�I�2󚫠���M����"�c�:��]���m��5[ЉPGױ`��.|� ̺�oC�b՜5}�]?ɑ���*~�1g��3��5<�&����7dŶ;��4e�]���8�04�*!�B����4����N~�}�x��H�䄹'ػ+�BEh'�5��T� �<�x/Ukp��&cwf,L콍W����ȵ�i���C,4�6{��$�nv�G�?e�g\���9k{�F5V�))%��M\�8��H=U�;�ו����e;�=7�{H���Z�eJ��;��[tԮ��*4\�"�&�+��jVm!C��g�f����d@*)8R�pU��_drn�s=	\��(3�P��x�b,<��<��}�A.G�
u���,A�N5Ġ~qN��*MV@R�!fǷw!�����j�(��p�z2(�`�c7��)|[�/�措4;9�S2�'e5�{�� �������|RY`@h-��q�E��8�� I4��:�'��9����nD��,c��qD:"�<ǧp��
�_�/��k��#$7��i�>�m�&D�a͵�J@�>g3��24�"�cҠ9$=_)ڸI��j���]�a\��W��3 .�N�<Ű��q��ؒҲ&���tsB��t`"�c��У�U�
$�@�#:9�� ��9��U��j�Uf�Wv	5�ј��<ڍ�;�/�{p`��B���VMU�d����ȅ�+���D�j�QI�9�����/�3�^z�k�z�UM5t�PpB%�ش:�I��T��t��3��!ĕ-h��5�����(!�a����i3e`���8U�v(	D��<-�Pi�bCZhNɇ0���"����ʵ:�>�|Dr����IB���z/-f
]��%U�6�B�E�&=:�Cgً
v���s%]<�r�8��.����#STZvt�N�׹jʣ���_�j�\H�}�i-:�G|"�*uv�D;�׀�;m8��*D(���Qn�*Λ�0��	+�A�s�r@�\i�{.I�)�r.N���XsV��,���ZjUر��u&۵��t� %L��Z���Qw4m,A�?�f��A\zM{����c]�����J�|��\(��ו"����\8�c��Y�=��XB��Z�ĹC��q�߃|5�g�s���S��@up�1� �3��	�Ρ�?"���!���їp�Kb(ޭ���.��$��Eo��~؟���Nw��~��䕑f���ؕj�i�i?ϴ��=�T�i���B��8"�Ի�~��v̻)�'�r��5��ϭΫ0y�[3��M����[�y�V
y�j"��p������}���[���i
�dp��p��k������ʼn~k{�6�[k��x��m�Pj��}�	�B[���goR ��l&�q�����?�Ǡ�~���?ڞ��‰>A��5R�Ͻ�]��%�Ȯ{�=���|��WF#�.Ř�Nc��CT֌�=�Hѣ��?О�؞�>Ω�;�ϯ�瞮���Ӷ'���r��Ƅ�$╆7�S�Ν�%9�8�o
5�h��>�~n:8�i�Sr�0�/��t���h�;�_�O�����ف1Ԑ��������{���v�6_l��a�Rk�In?��ޔo�+}����S�0�}�����Z����p��2���Y�У�3+c\�w_�F@��5�����-�?���z�/�g�JI�t\�|{��+b0��v���_�sO�Do��Xl_I�]cs��J	��a5��L��6�5��1�������}������s�|�׬���	�k@�R��e�.�~;�g�S��=�1���d`��׉�p���*2��@(��N�����u���@��C�	���k��RM|��8�=�86�C�L\26�0�6�α;�{GP�4./i��	�z��MקW���3�囝اC�ű�s'*J��4�V*�
^�K��ϧ���Mo��[�������BxVr�m<�T{_;�O���!�e��#	�B��3�s��h&(�E=�t�^:,o�q�v��_�U�gfj�Z<�ܞ��A0�J*K�M��T���m�)�߆
��\�
��o��k1�Ǯ�^���ڰ���~�����8׿��$o� :��A�`_upZ0}̺'u���X��ܸfbs.r}c��PJ������oj��k??Iׅ���B%0��f��*>Ĺ�r,��=]p��]�5Hh��-ySy��a����* m�x�S9�6��$TWj�I�f�0�:Yدs2�Z��㿤����>�
G�ߟm/_��^����~c���
��,T�o�����'�릛v�j�T13݀�,��/#3��۞�K\��J��C�o�s��t�#��˪�ҩL1<���@u���m$lH5N�v����!�v�*���{��w��JF�$2{��S鵾��s�� �#���c�?	�{I���ִ��c��q�S}ז���(�����n�JψwO ��E1��!�� ,�b�?������4"��"�:�wu�j%��8
�U�_$���:5�Π�Wٞ����[I^L(�=i�P\�M�G�9�ݾ��@2!؜�	Y@��s!]5����@Z�t,�����y��HRi���^K�po�A�,�O���L�&��}�B&������w���+d{����$ٝ��\���� �����DŽ���/�7�dZ�����=���MUu��O�6rn���S��۷yͨj�\����2�3�k7��l����0��}�l%ԛ(�����ɞ�0ȨO:+���.Fk�8@�C��,=�]�M�`v���k��r����o�����D�}�~$�����s��
���)�Y�{.�'�#',���B|�{[��m�����u�+=U9�GɐR��}�f�nuID�oN�K�b:�G�����~�@ͅ��w�wO��3�C����sn��i�9��c[��'���_4-�o��V���7��"o��jS\�؇�ˬgĭݵ���:-J���L�%*�/e٧�l.:��;q2m�g�����q\�����z��y�]�Ƅ�r�����r�EEq�}]5I@���u�!w�8�JǪ�.O�lWjr���̫�!A��𾭮�ع��U�ȭv?�h�U\�v�؉�Tߝw�}@݀�䠖�]���R^�Z]t�r�q��]�h��ڙ�j�����H�xM4�ٹ_T����HQ3Ҍ�ۻ��u�=����<W�Hr|��K��qEN�Y\YrF""CH�9W�t<f�ϓ�e�]'UrI�U��vmu�ԉg�X�-=T1��e��	'�\:���h���2�&1O�F+>��-N�5'�H���(t��t�oJ�V�`Q-gdUo@5�ժ<�J����{���(�Do��O��oUc-j�H�$�`���ҁ����D�m�EDYj�"C7����:��x���r>.&'O��H�/��*i9���y"\��G�?"R�И\��e��+1^GKw���(9�w'\I�EF���^%<��ay�Ua
.&�����h�T�0\�DM*�H��yڐW@���l�����t�;�5��z�Uns�ِ2���u.��*�R�a[Z`�2bU[�J��Aĩ��e�b5�!��*q�Wd�*�b�X�+Ga��=\(��+�5WJ#��j'tu��0��н#ɱ
uIڪ�O�L�>�lt�ΨAv�f��\_�(3����N�J��
�x�]nZb�N�@���>;�t�f�h�y���դ	��;Ʌs�����8����ai/<Ͻ�r�{���������z��1ݛdž��x�MR��.d�c�*�Y��z��@���(�m�Wp�.j��3t�8�ꌛ����q�CRe	�k:��R� �F��>J(�aɯ��?���o��{ԣu�񝏴�G�{���8�V�+�8P�l�c97=�m�{s�H��>~�����'/de3�7�8_H,�N����W���^�VN*�U�2}�c�3@gqA,��Np98�l�=1�NMh��q@�ݴE�x#�lZJ��#�d;csg�W�OO��	?gz�Edž��v��鹋
(�1��n|g_�T��Tj���?��P�%\��ոRo�.�1;�-�籁ʋ6�O��k�RBp~���ʪdL��=�����g�y�h���4���'����4ɠ8&ot�91�3b"��K=J0-.�:/q�~;�_k�����_k�w��7��(�~�y
�w�{�q+=�u�9j�����v"w
.n���Ĝ����s��'Q��C,�\^�/�⿔��'��|Q0H��=ӵ�F`���:��l�Z{�ӻ��0B�̣��wq���{4!=M�W�V@�,J��U���p�9����
�s
؍J{�[�?܋C����/��g����O�{RҢ�N��,��:�j7W���?��h��n�O��Y�J:K�������~�����?x������:�՗�5�LN[��H'�}�������/k?���?��D+!3\�uPz��L<�y\�9���8�v�����3���D�8ǛgY�4�o�M�r!7j����K㕱��$G�Jf�����x�[��_Oc�C�'���u�\7�=�snH%�H1�I�=�'O�����@��=|�SP�9�����{���^����ߍ`gW�Х=���;
)��(;[�7�	3,IF�ϵ���=�����?�~����o�F�Bl�u�x9x��{�,)��U\�U� >$�~<��%!��)����5���>�u�=���"޸��	�ސ%�9غ��Ip�h?��w��~�SBN��G�x���~c\ߣ��J�u��0#iu�����C+uPq5�
�vC�52�+���\����o��������l�� �3v����_!�hWN��2h����JA<ׅP.Gk�1v�]�Z�?�\���Ozt�~�'��ǿ�\,ՁN�p�v1^�3�ދו\�Qgb��=�Nj�g�8��{��G!$Ҟ�8ra�.�<Q��c޾��������.U��J-*.7J<�����7͟���2�Մ����Rzmqm³(h��3;o�� ]h�x}dj�.���)���n(Z����s�$�����}�m� M,Em��}(����*/e]@��.C!bƱo��g�CO���Л�D��ڻ�z���o��~�����Ӯ��ʛ��0p����b7��]�6�7�ؾp�����hʓ�o�]� ~Fr�/�R�&��A��M�/�'tnȹ��
|�Z|�滩��H��m��58;M[�Ւ�f��#F�+r�
��&�
q>Od�-7AA�P�U�������0z��*�N���a�wo�Y�0O;o�L�d�+�B���9���R�wY~�trM�r�y�m;)�d ��?�~���E䭷5�].GP1��vd����ƈ��1�c�j�}����-��+�zO�p��g���"�h}��w;�F�sct�(p�ȫd4W��"���Q	��QV�J=��\�]pԓ�v�:�{��z�.
�r��m���H��{�s)$z���Y��m��_���%&��۪v��ۨ���z%��s��q{�)7�z
"�}�D���
1�5J]�P���d#���i,o�s�?�)	���{��A{�Ё��˱�ş^����{��*'H�#��ȧA����(���`��{��.'|K�u-�O�v(�!@�`�RTuIv�d½;n?(�X�$Ѣ�F�!J��KOY튄5S�<0��3\��^VhF�����]��ÍŅ �X�G����/Q�G�s��ޓ����w
�����J�:�Pw_�C����5�s��;~:U8���J�q�G�J�ˎHdDɀhh�{qv��h��v0hw�3��YXS�g2؄Ht:�FC��5��Cg��8���U+(u	�C�>a�3���sݺPеuYZ�����EC��}W?�z�����NO���*�N�TN�֕����E-r�m$�}�h�_8M"��+O�8C��`�p��(�����ڜ�q��+�9Yb���\�i/\�c��7M543�lr�hww}�!�Zg��D�e�U���Uu%)��,��w��j���΃xľt�R�Q��ب,J$2�#�Ǵ�� ��.n:G5p�*fHRk�\-A����'�u(���d:*��"	+&�JV�ؘ]Y�!'/�鄥�t j0�\�J���;��R���EM�Ѯ�"�#m�(�,�͂梺�ԡ��7��Ǘ�S��y���F�kr'�Mq�L� p �.Dw�JR�@/��w��5�s��	�嚥Ў�B���ӌ�J4a'�B��*���-z�����e\s��1l���w��y�أECa��o��pcHﭔ�\�@Z��u�x��ښ[�"��+���H+\�v;Q
�0���QW�F�u �����xbzs�Q�2��x�}�a�f{x�b=�"��-�F�b�8\�gw-�0%�F�	Ѹ���i��r�$�Ə��\Ն���T���0����;us�覽��v�2a�i�����/N�đBf��$�����ᮻ�L{߯����^ϕ��?�Qb�}�{�s�����k��]i�n�@�	2�0i����4���Lu��<�G�#1~������^�V��2�۹�ٗ�?���[9E����~:����*0!?מ�����h�L�~� ��9p�U$�7-��M�iyo��ztV��-��n���u��5z�� �U���U�2�	ˀ�i�_���om����VO�f%�t�+�U��r��A�\郒_�t��A�)sN�N�l��OtL4�xˋ�\�_������+{��g�\�؍@o�}m:����x_[*l\Co��0}^[����2�۾֞����~�3�=�?���ly�Q��+�J��WGP����xy �"u 	�փ)���L�Yx�B�tM��&�܋q�h��'u}^
��p�ˠ���|C�e�Cp�;a��ϫ�C}�yq{����qɕ��z�#4hD�{.�*����fT�"	)54 jzW�������������{I��/�k����9}�+YP�)��a���[����;>���E5pS-��~����{T�t��6}��ю{ϿntW��Ǡ^�lwǂ۠A�t,(��+�����@�-R���������5im���;�����c}��dW��x|�=wm��ZtGW���r�]�>�P�+�[���<�=�M&���+s�b]�t�љ���G�z�_������7��_��uT��4��@e!JzB��/��Lc�
�1U$ q�/��wh���W�w���K�&��z�����ߣF.�u��t�υ�uO�I%�Ao*�x�ls�q�<�7��&b�G���"���<s
Q��g#d$���P
@���|=��� i��_�b״;-ΈPUo(�1k��$5Md:��˦:�b����^��x_�����'���7}�&�ڿ�#�p!�W=���uNF���_�^N��JU���W���cvY�W�16����'Cչ�_s�=��*�q.�jƟ��مT~%�C
e�����t�����r%���P����
]o.������Mo۞����7�9�����o�o']Rq�+��p�@�ܩ�;E[jK��.�'T���V��j~����=�	[�
�bo��'ϠƎH����k����Ǿυ�w��i��hǺ�3���cϙ�����k_�,�yDŽ$�jx,�_WPz[Z�]��m�=�Ay$��AB�a~�=����!#w!��n̗D
s����������1��/�?<3�0'{�o�w��늵��^q,�i�,��/i!/qQ�k�oZ�ҋ,�%�W�`��w/�3��To��X���M��+�3՝��'mHZu!��n$����O��3��~��]�sY���2�0��;�+=��~��ǵ�1�?�~�(5�����H~"�������LjPaZg��������z�;���W��!�� �t���k�?���?ݎ�p<��ՠ(��p�i�����կ>^�[��鹫�ϋ��n��-ۯ����=d���0$�/��>�Yj��螣F$�2�z���2�U���+L�IJ=i�+)=�;�����S@2ɯI�����]�8�W8|�Po�󼿽vM~b�	����?�^�\���{�J=!L����z�d{��C�St/���׹D����'(�׸;��>���jJ\����ƕ�s��}ɻy_�����I���m$=s��\�͒��7���
Z���N1�%7Q
�.���))7�l:J�����vm�*̴�t�vžp~���<���Gq.��e�2O�3D�c��sR��\�R�u7�[F��7�1ib�n�w}�A�`+t�������1��?���Y$�;�)��O����~z;�Ӥ�T�̓M���2�u`�1��6��!����a��x�����a��H��=�%��{$<�a�C�2�j|���?�2j�xBd]���A�ѮQ�_�і�l�<�u��8�b@~����� P�t#�c�T �~b���j����<��#�K��w�P{��}oչIv�E$\����9U��Ns�����"�,��Q�Ż;M���/�x9͗5*0}�ߛ�^r�y�𩚖[P��o�Қ��l�/���gr_�	݉UTFù�f',�G�V�U�W�&���"�m
��o�_�apz�!���HP��#�$��T��ch�S���I��7n�p��f�3!,	��ĝ?���t��Ճ�:I�l�H-,��V��1�f��^�N�K�~�b�ES'�Ü�;GHCr;	�]	KCOd��s%4"\�y����D(���ôy8��H%�(����J�9�)U�*�\'LB�-��4�=$"�k�I}�f��}�b)��B��J�d�5�u��)9o�n4��(	�!��R�_�|qVV��mu���i��|s�����D	R7����V��I�9�&�~�;ֹ��Jq3�̧�rX�0'��@N&������*��j�L�؆J�u�o��tI��@��A��%���2˳�O�v1v��
�vf�k��-Rrv�_�Ӧ��z�b�����h-�|��D㾣A���?8t��t�>�@���G\�c������\�u@\�Nk�NbR׶�Q<i�hG#ed�*��Y�l�bu�y�.�N�*nB�`d�u�9!5�n��us2�`F�\���B
(\$�8G�v�kʻ8�g�$��tJRȮ�7�z�*nO}ov��X{�M����q�R�c���Ln�KX��3r��O.`�`�]�L%'e��HE�]�v�&��Ѥ&M��K��|u�J��bn
��)oC��k�`�X%%$��tz���7�oR���(	&��X�q����Q~ ]D���$��n��7u/��t����W����$�8qg��� M�K�kii�vݼ�u�h���wtҠs�	�[��y�p�T�+\�?�|-Tg����	��W�x���8��V��a?4OBc��qtgv"�Z1��sR�sz|ʵ�3%�R���`7��*.�J�D\���%�IvU|�U侓�g��o��
��MTr.Ue���H�\1i���5,���݃�9�#TʋF&�#��1!OJÜܡ��S�Ŵh�BI;)_}IT�׿+�72�N��y'��vdU��αYI�'����ꊃ?;~��\eA=66��.����j?���;Xc6�sr�aީ�����{q�u�j� �Nv��㿱����;s_��Ǿ}��h��L�%��{��?����~�L��cQc�#;����:�6���ٰQ�~��SbÈ�O�J��N&�
���(P閒�$S��S���hؕ=�U}

e�C#�VU�TF^��J	�BDMvC:P�oH����Ɣ��!奮��00��G��Z����[]�=p�.�}F���te'��{���t���q���أ1~7��4,���XrG���
�R5�UW�.Z{��$�M�����zdP���^�hà��+B=�Yef����&V�,�k�vN��;۫��|��A^M�`.�n�Z�l�
��q^_pV��s9�:�'bTFo�A�����]���F�j���~u�(%��B��F���E3���k�J.J�~�`\I�����
H�֯��t����ɽ�d�]2�jeFu�*vV�WR8D���S��Жt���qs�3�\C�<�ز2��)$��iVR�|��,˸���s�ݹ�v,$�3�J�C8���&u��ʁȄ\���H��s���y�6�}���g��>�w�t�?���q�]�>��v�j{�U�-��H��'������%)�o��Rh�8������SV��׀b�*B.�`�n-Tc���pI'��nЌ}�[���$�뉅�z��,�5.�b�D`�=v����e��'��ޟ&������y��G)F<x�S�ؒ�a����5Ɲ�w���;��?xNХ+��3B
ܥ4K���*j�A=	��W):1�w�C���p'��7I�o*ǪZ�*T���3 R٬��E�WQ�)�F��H�Ꚃ�����@h�y@�烝K�K���t.�E8��<��Bf��C����s�T�&	��}Ӯ���
����=:��6p�H�ߍ�-P���ر�ȽiA|%g�	L$К�٬a���X��1�\�w�u�R��f3λ��������Wt�@f~�[h�8��ٸr��ͣI����>���z#&�?+�1�,�mc�j�@v~c�G0D5(���	���ttMY��&t�(�k�G���A;o�f�8��P�2�W˭p�T"��2�U�'�]��Trpe�+�Q�]Չ��D���r�.	����˗wA��u�I�p�U|G��Ld�]l���Q��}��e�r�i:�Gc�GOu�����8�$�F�XqNȨ�]��m�(�y]����O��Z��X�i:X4�+z���8�	K��dNƫ�v��@*\ҵJv�K�u���m�]�vyWn���9(��2�ҵ�"��+#B�Pe��t�Y�Tғ	���+�iɰ��?`Y���
�+E��%y���ƣ3C���}�
��{A�p��wV��h��Z�g8�C�U�U��s�urS���QΊ;��ñ�`ä̤hJ�WX~���s�&(�6�����WiR\�1u���ؔ@�*
4�	�C�~6�%K��(X�aA9�[9����#V�3�U��µ�v�4!�O�Q��&�f��(��KJe�F������6�|o���N��ѷ�QHHCbR�gͬS��a��5#�8��7��s��ӗx�C�2����:����(�H�Ua�]��VT:q�Ul�Z�9�TK`n�� *S�}�Q����:�V��DL(���i��"�\Sy;x-�+H��r�g-��[�
�x�ƒ�0g�\�n*5�P�����N�� �X�b�U���`�:)�[!>���z^�huYx'��K	�K��j�ˬ
e�FǬd�]/�좛���dd�Ȼ>�T��@��Q���OUbf:a���p�9wj8d}	{Ot`
*$��\v�Q3�%'�j�ʹ�t����C�9l8�����UE��Q�&�MG��� �ѡ�'��8v���6�xn��@�W���+5kGd"mIJc�.�D*i��B*N���4��͖p"��5gݍ݄Pb��p҅�T_h7�q"�V��g�����q�e\h,oѼ�O/
�z%�9}B��!�Jm�F�(���P�#���S��-YaU���<]��Q*�T��.Y6<P1�@᭹�|&�T�
�܄s�5I�j�.w]cg��<�Ƒv��]��NW��2�>���K�Xʿ
�vJ�q�3��
G_��i�����>%W��=��٬̦^���2U��*	N9��	����*����Z0�ڕ�	��p̎{v(�J�8eꮝv�>q����`�=;z���5>{	r���k`t�iO?�.{���ՖU�
-�x�Vԃv�"����m�H�C��,�hH���x���@:��p�%UL*�iA�PU�d�ZJ��ş7B
s�=V�ce�I(Ԭe�!0��$���p�!��-�|M���߹{
܌5M���?$���h��#�U��c-^��=�*M�Ł`2#��C����c�=�o�K
�����-c'�.7�J�_[!��
8�����[%^(i���ThMN�YM]I��u8���U��z�.y�h��w8��_����.��ɿ���P��[ܕ���[f�Ǝ5p��^�i� ԸB����t�5uLhq���F���w�WA�k!�tm�&����c�禃�z	(�����L_�`}��F�8�w����tqh�Lޡ$�-�D]����a��Z\Ø
X�x�9U�<�q-\ٰ�n�W��y(�Lt�L~��#��IX|1:ξ�b�<�9i��5�L��{��w�,������U���5$�����wr�FW��js}�STE#��?����V��qI����4��@�\A��>�L9u�݉����T!�a܂�G?���K�@T�װH�
�I�\L�
��U�S�9@^�!�uu���Py��k�cch����f��<�ܾ�A����>Ѻ�����O��8���._Cs�p�]�Z�0�:�qc��!��m�wM���@,���eٖ�U{ʫ���	85�tO�P����a��R�������L�;/L��P���	q�L_w��JAx����E�M�5Ys�[1���cJ�m��Pb¹?&���F�J�-E. ՠ)#�d�=��=F]m�ΔC�,���qM�J�B�����.�:�j�p�K@WK'���`<ВpV�
8��H�ںUnU��#d��Z���N�r`i�-U�9�h�PT�v"b�֜��ruS�M�]�1i�wV
8$�M�5���XMpRc��S�q�����ol��v�i�K�bkG~q@&�QP��J�N����8h�5�!�BFrS����TW� �l��;�v�@ t,�qq��h7u쫙`�۳n������е������qߧ�cF��	�<�*CO؄oD��L�i��c��;����r�+�cU�|�;����`�U)�eM�����bU�a�к.Y�YCE�ɪ�§}ljb�}JGd(�T՝�K8:Z3m��;%`���.L��p`2J:e�j�pމ3$.$�ޒ�	�wJ��C�����_����D�7Cہ��b�)Qge�
I��%�h��S/����+����IY�$!dŶ.q�d���~����ͩ1p���-�}�����CԂ���Pwc��8┒�\s�r-�Eue ��U$g�g�2�xw�Y��K
L�I��ܺh�\���x�n:��hgu*��ίa!4!���U��	*�Ĵ$+Y�Ԥ�5�u˱�8�k�HG�B����g��9"���üҷs�C�]W����1�v��s���+1���t��G���WL7u�d�S衖�N�ҹ��<I�|Ġ2�>�a
)(������ku�;7�(�A]y��6�a(q��/����{��v�GM��~r�
팔3P��D(�=.֦�#6c!r��纯��%ܜH'��T
r%�<I*�CW�t���$��ќ�=��U���#�4IfB�n�\�(��P=�LM �JF�iTm��x
��o?��nK-�]\IB:��37�d]E���0�څ2G�vfUk4��IU͔bt�8D����R�G�LO�N2@��%I���;���;����B@��΍��\�s��Urk.D��1��݆L9��P���F��=���<+(���뽩(i��
�DO�P�MJ,�{�$ -pڽ*��ZlJ&:����R#�;��WZ���J��p�z%]N��}�->��:��('�M	�j��|�C����4�5Lv�,�;(p_佛{����*l')	�;�y����h0z����V�!Ț��"�X�g
�E#�@r�6�{���T�H�{l|Wh!#�y�ǟ$*;�p�&����߯����*B��4�t��uB.��4�@�3��cQ�A��ya�u�P��gu�)Y�Z�6O�\�'3�[����3�9���׶?�}�/=���{~ &�g��u�] ��x��tV\���5.���B25]h��Ϸ�\譮L�N(����{
z�H���~��ց�4c��|��^�r���x��G!��U\���+�m��+��WԵi_�XB���S>��wf�ԅ�
�H��P����;��־�����y��e������7�x�`�\{�h���y�*	��5�,�nnn����X/i����x�L��߿���7�����_<�S}��ln�������}�K��Ԡ2�D�|�����=��T����Ƨ�O⌫A�@�Mw�9��$C�Ӻ��>��cp=���[�qq8J��ʁ|*l?u�r�͊�L���������48?���?w�u��6e�ۿ;�^ӻڶ�������s�w}4��2�1���|y����=��]�{��s��1,�,���x����k�:;`��V�!�k\�_�&���U��Ƅ�s`-��W��{�"u!���cTFm6.���*dt*[W�py������'��ͪ�����#�N�����Ӯ�ꥸ�_�E���{��=���G)�yqt[�>�2Re��ޕ�������B�c�!�GK�e��{K��I�4�l_Л.����{�zW$a�c�������\�>��	VMrm��\��>��R�<��m�w��಺�\�Z,T���#Q�i�*��[�[7�*ٹ��t�o��V�q�M��P�!��q�����ڟok?�k�m��F�q�E]�?�l7����8 E$�nre�.��~}�� ��/�n� W��|���|޹��`g�����_�X-�ɉWL˙Ȇyh͹��M�(�,U��f��:W��Tݠ�Gp�
����Á�����,u��s�&���r�#�u��(s�fJ�/~�:�0��M��j%���'���:�:�}�Q��]�K9n���i����3���n]�{��A��JK�A�))Z5����
-���@�������n��?kozu�yC�m?�M(떭��2L�%����b1��Al���I��n�S��n�!#��A㥓���Uf���`��t1�K��L]w�6�?�΂�eV:�'QG�N��w=(]�Q��M��x�LT��1Aw�(��Dܧe�3���x��Zδ	�T��r�u#)�"Z�,N�Ta*�3h3$A��LΘ��*C�V`�=�Х�]^�$z�!�N��W��!�(I��Z+�_K������F��������`jq)�[�•ب��
�0�9fZ�.�y4��f����B���4L��2�dl�f@��؍Ny�M��)��eH*��֝f��\U��e����9J��0Ĵ{;���*�i�qo����q�	�Q��*�V5���J�PSG�ǠDB�f��W��ڪ�KZ�.�.���dU�@Y�D�1�
��
.�w@(��HaƬ��ɝ�ј�B��Q�j�Ђ2���Ev�M��l6��I����K�"��r�]�;�};u���RAM+��ۥ��Ό�O�#�ߕ7Ca��f��8�F���(yLs]s*�C�E��\�OIkH���|�1�*7��AR�W"�T�V����:�TI�,ܡ�e���Β�B;~*�{Kd�y�i�^�kAƲ��vrĎS�l�t4!;�`� �n�i�!/��s�B9�j$�lf�ϝ�"	���d)h'������T�	����,vCd	�K�ʤJ.`�y%�����(��&����Jl�q����*��n�2�o�y��?�/V�I���G��LL�|?e��S��k|.�4��~����@�َ�8N{�gclw�3��~������86��ҿ�^m�]�q��z�v_���9��q�9����$!����j��؜�����|>��f��� eYX���OD��%�J�	��R&�U���%V�5��گo�8;��x�y���n>O�G������lk��iR"�|�T��ߏ*%���yLqs����z4�l>Oɽ����Sʍ��~?TI�|���q>�_�1�n��S�<M�N�~�鲻�"��M%a�U���?&������*��1��*�v�9ϧ�_��o?O�ݘ���.�ǿ���b�s��r^��>U�J�u<?z�����hJ� ��y ���i��4v��g>_ț���������{���=�,���s�8����P��@����t#��4��@4��޻�<x!��C�Hz܌���ϫ�̻S�����
du�yR��\G��s㥻U�����O�țU\��3��jE?�_xI�=k�z��������U���e�4��W7c��ʮJܴ�H9OH��:"�瓕:��I���i�d�U߮���,���yУ;�}Lw2��U4�g���Z�쟧�)k������JQ���f{d�F�15b�59��?�����C��<d�1~2y�C��$�߿�y��O��������Er#�A��ڴ��=��G�4�L\��J��ƨZ!�$���ҋ�B��;��".�&�8Ó8��)�s߹pi�VYi�q�VW�R��m��Wp}�|�RX���0Z)J3�ʉXi��)�C=���L��tԈ,��Y�8}#����[%�\����{�h;4A����e	�V	���O�p�h�.0�3ݜ�~�؈��~���*/:Ĩ�i�� U������u�Y��^��^]G	9���}	G����)>�tݗ�򜲿�����J]�<I�/�M�f���eᓘ,��@�}��pF��hN��u)�E-u�%M�E[�kxI�AU��
�]����V�CHF�`]D�Y��b1�	ʐw���f��sUc\s��)4�p�DW���7��`��*z3UR�M	'��9��f}��!T�r�����5��y����?��P�e�%�e��Yِ ԕU�dI���cVZ�e�;���d��'��1[*�k������#��<��=�3��g�;6�߱�+BIj���9�Лh$�]����H=��Y
�"��=�H��[��n���w']	|C�*�hɈ�vI��dDˮ;�����!��mC��U�U�Ҥ��D�Y˳�R�����v��L`��{'��g��q]��Ao�4�W�˂+~_�s7�O`g�&}D�Oq�@h�v�!™d��'ɵ4��OB7�'� )�y/@R�Lz�rsW�Ϝ���$X��iwɻG:��Ae�i@��:��jF���V�σ�\5+?OC��4��›־��'�<�A��Гꥴ��dݚ�w�������<)Ճ�`��C�I�c�r|^@fO�=c�<���nT3B���k~�I�4���s_;�w���tᓄN$z�2?U4��T(T2W~9������s<�a��\��+髏�Ŏ�(ݬ+�t�
��V���
�~W\�:�\�0㊆Óƕ|��s�P$��+ qJ�9q���9_Q=�}w�
��@{%��q�rmW��5ԔU�
�����l�h	�=���+�:�ǵ	�����$�O�My��0Љ����z�J����I�)��ש+�m�莍*�ɨ���-��F���%�;m����� `$��#����d���{�L1���]�@�lԒ:� ���6YZ��ތ�Q�9	�A�C8d���9�2QГ��pno|�i{�؄~�K<�d������GrQv~̿��6���'zp2bx���+A�&G��DK�E?�S?�����p?�/����{���B>ڞ{1���~�=��|�����v�����Ϸ_�����+��7��~G���������쒿۞����#N\�����K�k/�B�2��Ϸ��%I��������
��}���w��/�Ǘ��_|�6aƢ�n��'�~��V��f�C<��ޣ�3�0:���?�_�� ���4�����~���l>�~�A	������Gw�q��ҦI���c���]���;(�9�o����߿���#����'�����=��xjT� F�
���|�;��_��.�3�����q#���NC�Y\G���a����D����1�\F���Ȫ~���J���Z�9�k-�U�gW�u*PD)'/bQ�h�3����J�?J�V�lW�����S}XQN��ε�R��]�f��C�S�B,)�]w0h9!�'}7�x�A�
쌺����g��•�B#�2Gۭt��H�<#o���6��M!1o�6ԡ�6��uI^�GN'�W��x@m�t�Wm���7���P�+.�+��n㬿�,�ƚ����\��mT�t�J%��Ɖ�M���:Y���s�5��+kmڕ�n?�D2fRd:�*5�%Y�y����4%0ͩ6��I��l�W.qDq�=��wM)��	�0�:6�����)�~#
L��T���s�c#���I5I�>N��YTޓk�U����a9&�Hl�I��1��K^6U*ρ*pt/i�87�d�(���[��5B>*����xI��%����O�ݎLI2|nT��tŁN�g�Ω���UW'��4S��t�Q�T����%�(^׹�t!ږ�3�n�+`'nq7O��С�ٝ���&�2�N\���g��W�כ	`�9����vm�I�a&~J��p�i������<���k���}�vg�`h�Rc5>��M=	\%2j��X���ЙV�:�T�\a禺6M:��E':�#;�"YP
O��o]<�QΓܵ���p�]��:@ua7F�FCHL�W(2�炎Dc礸gz}�'_�:_����,���F�N<���֪D��%�ϪJ�)�9�9�Z��7���g��?O�z]U���CR,��+��ʯY�)�8QEY4g��%�@8��g�8P�	\��g�4W�~��P�kUŅ�Έ����䊺�-5�:y]��%��Ia�.޼ ]n%�y����J���({�y*��#�1�<���pq��C��)�������	E�v��]%��(AY�R��7�5vUG����>�'�K�I��&%9���LaJ���%�]}۵���Ea�� 5���(]Ȥ!�kB�:��1I����bz��p�STv@��h]}�8�j�vL�kK�
�x�YM�W�:�
7T�k��ʆTAPюAMSW�^�^P���N�Nnٸ��Jr�cT��&N�e�]F]�V=_���.O���M��Իry�4H���A�=Ĭ�s�����kzj��:�+k�w��Q���ׇ��&���f/��TƬz�K��u�u�ڛ��c9]�x��v%W1p5`��L��%5e�]x���u'��4�
��W���r<W�v(>ڱ���Z�U�>a'9�ܺ8��;O��;�/�p寧rK�e#7��t���(Fs:hi�
]�U'_�+Oױ�;P�1K�*��@�I%h�����W��4!E�2�%������s���?%i	��3�;�[>��>���{(�w��<,�޳��z��GI�Q����������Ŕ_V�)(�t<wm�N��T�9ZK!���$���ڕh�ݼ�`LF��-�Q�G�$�2�Q�N�ց��8&U�e��;���}�J���I�-��d�F�&aEl��~&��}��R�n�v���y$n����3�0T��JD��L��]�ҋqy�)6��\J�0�5U|
��UL�b (�[i-: ��;�j���J��ހY�j�tè�#X"��sHw�~q	7�c� /�U�~���ܺ
��Գq.�+�j�\��s�
c��GNһ���܎�6,uފC��f�T�����]}�z���
�tC�z`��,Z��)�� Dž:�r�`Ƣ"�rI]O7���\]W�����SR��bڕf�1#|�s.U�?�i�ފN>7�*�,0�0t�U@���zI�P�ۡb�{0y�IP�MN*�t�3~���U�1e��Bk�[n��U�X]AY]�nūS��~"!H�W��@eL(�'�<y�zor됖nv~r�+݄�}p���A�vt�k!a�
�Cހ��Ҙ��EM��P��>h!��y���`�4I)�B7�Q�i�q|k�ܒ�Z3�H>�1�S����R�ʲ�ڍ;AY�s�A���n>9���J�.�0��O�1媈G@�à�wͨ�U���$�iw.�÷��r	u1j�J��?��қ�@$G��X/O��f�r�hl����M�'�~V�m�('��{4���ݳ]��.�q^�J|F���X�ܪ�'��t��Ct^��%����t~��$�h�"�e�)���j�0����r(@"�PozW�!L��:K��,�L\��uX�jrI>ru����M�g5N*��-2��3qg�i�T�y&.�S�;#�%l�.V�hT�sV�,�hXȕ
�&��M�5U*�eW/'"�#��Z�xW�q�#WB�]�_EPqx|�
�9�@���sbRw1e~Vb"�3�����X\Y|N_B7)Zܔ&��ƆBs���40y��ܔ�@;�e%Y�ī�3Yn"���Yq��Si�E�� �r���D��p��s�`r�0��"�ݵ�GE�@�D�uX�gt1Q��*�TM����*Y�U9�t��5p�Q�����uW�e��
t��Vw,��	��;5�M�ɴ��ݞv���\~������];��0�����]���Tχ����D׸�+Q����p]�Y;�$:�S+R�-W-��I-�61Gr-�����d�]�\�I������,�b�Ts�Q|ո��uɕ�h����k=6Ik���Ş�����<�)�4�(���%��N���+��uT�r	6�S �/y:�'����EMI4��ӝ߅�N�B��BE9)5,.��g�vB���K'�Ҹ��f�R�h�d��WP,X�N�ܕ����K�Q�QH����i��E�r�O�WwG�qp�Y��U(�s�����yg�;)R�g[��)��@l��Z�sPI�Q��%9Y�\��;��:��)�n���Q�玂;b��#��s)I�����Zz�4<��V$�]lo�#;qJ���7>�DZ���P5Ѩ�.yZ�8���x�v]�{����N�u���5nN�zJ�$�5�D�q?(�EOIl*��|M��5ׂ@ H��D���V����;>p�{o?�����u%hkZ$(aI*9�֚�b�������|�s������P��e^��Gu�Y����O�Ί��J����H5�*L�ѵ���iX��S%.� �A�v𔯢��C�M�\=��z������k,����p{��ԑ&�jS�NRQq~�T��x�^B����!��q,�S>�Α?:�q�S��z�[Z4�IW�l�2�N�H;)ڐ(�����L�q�]�:�8�K�:�y6�ckc*���kM�s�jAG��J
�W'���d�䔌��h_�E2v�1�O�*W0WG�$o�B��j�T3oڹO"z2X�U?�a<�����)�8%)���E�[*cQ�2�U�%�Pi��{	cO�/�!0�f��*�VࠪU�dF��8u`5�r]B�6�r����F�RձsO�q���\.�'
>����A�S��f���?v�����
�b�D/����`��V.�V�fy	���)i�5����vuZH�7p�)�tz
�vd1�ɧ�˵�f�UI��ɳ�||NZ��'�s� ![u)���5��7�F8Ԗf��y�]n�_"o��7�T
�n���>���3�(�W@uy�ӯ Ո��e�g�9G=֬=u��J������!�$&�sש�j9��nc�r���)�bg�&e'8�k2�j�NAc™ء�;c���Yv*!���{P�Uر���aB��8��aU��� PR���ċ��H<.�Tl��.Dqv�5��!��L��S�Ёq\/�\�Z�.�u:��K��!/օs�,3���^��¿���;�����r����ծ8����IEND�B`�lib/themes/windows - 10/images/close.png000064400000000420147361034410013666 0ustar00�PNG


IHDR->`�7bKGD�������	pHYs���o�dtIME�
/MX;tEXtCommentCreated with GIMPW�xIDATX���A
�P�1�����3Mۈ
~���V��P��$4˂�1�h��6z,��|�g&"�N���Ժ�"9T�T5�������Y�r�>,I-�ǿǣ�"�<y^Q$U9��w�h��6�h�H�h,[MxIEND�B`�lib/themes/windows - 10/images/win_10_sprite_icon.png000064400000002601147361034410016257 0ustar00�PNG


IHDR�<LꩼtEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:7A59BA79476211EB8B75839F21D6E908" xmpMM:DocumentID="xmp.did:7A59BA7A476211EB8B75839F21D6E908"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:7A59BA77476211EB8B75839F21D6E908" stRef:documentID="xmp.did:7A59BA78476211EB8B75839F21D6E908"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Z���IDATx��=K1��]�D�-��.n.�:I�
������.nn�����U��x�U�#���r�<���.yh���I��01Crrrrrrrr�!�T���7�h
S�2]�j�ߛr�h��+��F��������b�|\�g��Q��᫑����!G�r�e0ɂ~��5*%GQ�0�^�Y9��כ%'TBʰB�AB�Le�c��N0���w�~{m��T���%Ir�_KVm̥��g&�Ln�&�[���������(�~�ǧgzmZr��V�z�����=ǰ����������͕�N�Dv~i,o��f�#޷�+��m�z�w}�/Z�œ��qI-�.��;�d��xW���&�H�� E1l�*Ps9L��#rA���$>��L���QN>mI*D6�ؒO�\��Y�$G�cM>��y�*��:�8���Jp�``��t��
        Ԟo:�L!�[#IEND�B`�lib/themes/windows - 10/images/README.md000064400000000235147361034410013336 0ustar00# Images
Store all images for your elFinder skin in this directory.

It is best to group similar images into one file and use the files as CSS spritesheets.
lib/themes/windows - 10/images/16px/search.png000064400000001213147361034410014625 0ustar00�PNG


IHDR�a	pHYs��=IDATxڕS�OA�����/z.��p!1F&&zP��R��;;�����mSii-�Z�$���d����HbPI��&妉<�o���-6�d33��޷D�4�?0���D�2QU��~_��N24q8����uN	gJ{�W(Ig�����+�>N��\)�MG�`�;���U�a��éЋ/���5�Nn�����*���Ũ�d�N�=+
1���O?Ծ?����'�Z�a�"�v^��tanLg�!��&vo��{fc�snĖ�Q��������/��|�I��X�I}|m�YlL�2���|qAY����a�g�,�@�������6$�D�Q��>�N�W�^��r\q�
x�BFf槱���F��Y:�K.���F36F�-������:��t%�h6o�~r_.��;=��-m4���ķ{����1?8%�ç�#h�rr"oOer}3t��)�	R�,��>�~���4AD#Pۭ=!�&�:���8{Yl.*��
U���B%.�޾A�`w)���亀�c�S��{k�a�Ȼ<(�CX�8��A&ؘ�d-RIEND�B`�lib/themes/windows - 10/images/16px/rename.png000064400000000664147361034410014640 0ustar00�PNG


IHDR�a{IDAT8�����SQ���ްD�Ma�*�����`/���B��	$��VR[��:�/�Zd�L1 �s�[\�f#.ׁ���3�	j���p��
�%�|�6�N�8j���x�x�\�i��OG��[ 5�"�gD|�tn�V��!"�GD������`0�����tjIHF���l���,�>}<���>������9�K�9�,�*��J����7)y��_��.$��򟭿{rD��MJ%�f�d
Y�(�{��9��%
I��~�
@�%0̟���=���fQd����-U�N.� �|��ʜ�-�O�.z��mlk��c�Z=�9?��f���6�vc�^wRJ/l?�M��zvv�����^��~���DD�. �޽�ZX4�k�:IEND�B`�lib/themes/windows - 10/images/16px/arrow_down.png000064400000000345147361034410015546 0ustar00�PNG


IHDR���	pHYs.#.#x�?v�IDATx�U��
� �Ǥ����Q$�����9��P|��J�V�����9���'�d��b�8��=b1��c۶˺�ϜsX����}7��gY���
�R�M<�F
��!���ɢȻ��Z��r��ɓ���T/�ǭd�V7~��/PF]���IEND�B`�lib/themes/windows - 10/images/16px/duplicate.png000064400000000400147361034410015327 0ustar00�PNG


IHDR�a�IDAT8���A� E��I���ʪ^����K����%X�
G�,\h��Ԥ�_1࿙��"��_V�#�O�\��Ɉ��2����ȗ���0غm[z�Y)eks?��B��z�1����k
!�,
X�c^0@�"O�d���c�f*����P��G�}]!$���l��W�|�:�m����&��+E&'�Q���C~�3IEND�B`�lib/themes/windows - 10/images/16px/help.png000064400000001124147361034410014311 0ustar00�PNG


IHDR�aIDAT8����ka�?wK[1F��
�
:dP,1�.�݅��E����:�$���MN���B�*�%fh*X���6�\^�܅��⻼/��<�yx_��5���ր,���u�JN�`����J���4^,� ڙ�l���!<��N�`��pŋ%3��{(�����q���4�@�)l�7P�b�L�����
ܺ���ɿ�a;���2��fFvE`U̬�g�4*��G���]��6�iIfvk�E�a�^���'���Z?��^}����(��r��|l�U)��п:O��d�X2�sǧ%�D��J�tޥ�Y
H�XW��&>-y�>q70�)��AQ|2G*%��������u�������?a����%ۇO�+�@nc7*��#KJ�	՛%�ۥ,�z���9�%<�4��'���I�0�w�t�+x�y�i����L����
�l+T�8�A���y	�ֶ�#s��^{A�k�h��
Lo������4�Չ�4���;�I}q�zIEND�B`�lib/themes/windows - 10/images/16px/copy.png000064400000000620147361034410014333 0ustar00�PNG


IHDR�aWIDAT8����NA�?���KHe���Z��w�N}	/�B�!&b��'��141qٰ��bv��'9�d�;��2	��VK|�g��R?��n��,�F�)Zk�Z���x��v�-�mK�V�.�+�qo�����F{Ok2�[�ܺ�T/`����n6a�5f��֗��&0a?`.(�]���tm��߯N$3�N�P�K��jU<ϓ��'�U�N8x��bEV�}�{@j�ΆD��>�ٜ]�
�Қe!��z]X,6JP�T&~a:��3J���h�ؚ'�q��d8���D	�U(��e��x�K���e~l	
%W̊��,�����H<$�[�IEND�B`�lib/themes/windows - 10/images/16px/preview.png000064400000000372147361034410015046 0ustar00�PNG


IHDR�a�IDAT8���!�PD_Io�i�z�ZL�QS[�c {58B0�]D�C ��&3��?"���R�UUeπ��d�bm�^άW� P��ʤ�L
��P;60��I+�RPT5!`Ҏ+(i+������k�}��6GADz�߉H�I;{c.�h�j����ڶ���
��h��?�@}[w�5�6IEND�B`�lib/themes/windows - 10/images/16px/resize.png000064400000000712147361034410014664 0ustar00�PNG


IHDR�a�IDAT8�͒�Kq�?�^jbm�D4�4mD�\���jgO�b2������!�~[����@�"�p�b.6����ס����N�����~�>x�_+_T���тs��
o�m�֠7��̿�?�F�ك��s�Ɍ�}���ɩ�{�7T�G	��?��'���š��OL�ު̝��+חg�G�_u��͗������H��/f��� �FU�f;�e�~,�6����\
�zt#�-~W�^����	x>�Gckw���l6��N���r�H$�$�����ʞ�K���������D��~��6����P�լt:��L&���90���2�@$j�/�*�J��J�2��c���yP;�sp�w���-4����z�04�zIEND�B`�lib/themes/windows - 10/images/16px/clear_folder.png000064400000001263147361034410016006 0ustar00�PNG


IHDR�a	pHYs��eIDATxڍ�KLQ�/�it��a��ԝ�u�N�&>6(�@%�(̻۱���V�ke��7�Q�&V"�4@��PKmi��{J-T��r�|�9ss�I��V�r�cM-]��u�p�E�3Q,2�A�(0�W������B�
)��,�~����$I�X�cV</��g���$��^ �)	�Sn �)��":��'H����$ v����,�1u�dƬ1Eu</�K�.����I��� ��#6�u#3j�@ l�T���RMCfD�@@��	�{��H7	4ڛI`�)���:��#����s�N�uT��'9��̠�L4*+!/������/�gOB�z
�������{w�?154�Z;�pw����4�o�"8�6#�����Tmdz�{dykA �C7C�;��4}�����#\Y�hm5>>0ء�`���5�Đœ�O���|�`),b��3��r���#�\ei�*
Y摦�'x�H�	?�W��A��Ad�D����8f�YK&���)o����}�'���	�:=�7�'�o�ث��灷|�� ��_>z���j\jh�c��sk����x֬Vs�]f�g.n3�/�|�D�%�f�2�B�n�z�?�l��RIEND�B`�lib/themes/windows - 10/images/16px/back.png000064400000000560147361034410014264 0ustar00�PNG


IHDR�asBIT|d�'IDAT8���1Na��V��'P�)$v��&ހ�B/`g��	�'Xx������
�%�.����7o����t�ר[3��r��H�X�ך�f�n����4�G��(.�<g�Z��v�;5q,ʲ��'IB��oMlĽ<�	!�1����pcf�{
$y�.����h�s�}���$_��d2�!�
��ǘ�u��cwBUU�,�!�'MӣN�Y��s�4M��B �2��X�����IxhJ���d>��V�$/�,KM�Sm6Izn��x�Qwf�uZ�#�
i��ހ�^�IEND�B`�lib/themes/windows - 10/images/16px/archive.png000064400000000745147361034410015012 0ustar00�PNG


IHDR�a�IDAT8�}��J�P��*V�D�ZGD�R7Z��*Ӆ�G�<@_��y�y��g�? �,f#UD]q��(*����"�M�C½|�ߗ�{"t���M�_��}���*�|�J������� r2�����1�l"ԯ/)
4�Mr�wuR�<^��w�Oh|��Z�E�XIJ,Ϲ�\[�`��e�@���J�Ei�ϥ�v'��7� a%�]`jf�x<N�Z%�H05�F�������ig%fn�&�"��^Z
���=u��sӧu��I��R���eme��;����
۷�V�x�16��<������s��t�22<�uSK�=c�\"�Lb�)��ѡ/�6j�;m�p�������HSڏ��#�D�`0���Q61L�p�����	��ځ��c(R���ԯQ���:�@�R�IEND�B`�lib/themes/windows - 10/images/16px/arrow_right.png000064400000000335147361034410015713 0ustar00�PNG


IHDR���	pHYs.#.#x�?v�IDATx�u�M
!�3-S�sq��^ŕ'(��E�[�u`h�	$��{	� �Ƙ��
�p�-1F@
���s���s���8Gh/�Yp[�$�ôNh�Am{� �$��0�Ю��x?"�)b���c���a�����#o�%A]��OIEND�B`�lib/themes/windows - 10/images/16px/forward.png000064400000000547147361034410015035 0ustar00�PNG


IHDR�asBIT|d�IDAT8����mAE��ѭ�H܀,��p��K��Y:�I����+0܆��|' �,X���ogF���{�t��J�f�&Kz�n��Z�ג�!��*1�x<&�s�,#�P�ǐ(��l��{ہ�!�z�ex�q���tH�d4���ެX'!�B�n�c��s�V��U���;�FW���(���v�j�:;! ��~�T���|l���fs7X.��iz��\���d�b�(���pT��v��F��V��$�%��b����ғ�}_����j@��.�IIEND�B`�lib/themes/windows - 10/images/16px/up.png000064400000000566147361034410014016 0ustar00�PNG


IHDR�a=IDAT8�œ�N�P�ǐ.�-���4
		��998���t/�AR^�����\�L�����2��7�?����

RU����P�1/��-�^��\��{SÊYUW�Z�(�(��Z���RU��y��f3��4���q�0���>o'y�4�s� /[�+�I��qv��K���q���X��i���tZ�0���e�k�p_�X,*fcL0����,�H���k��h���yƘ'`X���E�$����i��:�L��Ps���܍��|[D��*W�j�-"�u
��������D���O�qJ�h���IEND�B`�lib/themes/windows - 10/images/16px/select_all.png000064400000001220147361034410015465 0ustar00�PNG


IHDR�a	pHYs��BIDATxڅS]kQ�?R�� ��&iw��ݯh�BP+���&i�cZ_�R_/lD�������s6nvća�Ü33g�
���w�������xK��
�V�l:�b*Q�*�Z��v_�#��\pR���=��c}��j;���H_{<�ןL��^�ƼV��^�o�?���q'�w,Q2l�3��o
�D��D��D�hA�т���ќ���bp|9��b(��Hj| ڟ�>m�r^%4�BTg|��H6"]f��v��-��/C�HTf{��0^���X�d�@ Hlq�gFۨr��n�rG	����.b5!`��
�a����AB�L4��s��lN6�Q�nJ]��9�=�hpV��ܮ��3+&{\����T'd1&Y\�>�+�,`�-��6��h[2	�9~�c�-�X����2�13ZF����o�F	��W��z���[x��>�[g#�sH~w�H�g�
n��$���v��f,�\R���ƃ�u�?
��44���jOË�>�kNwn1V9�h��W������$�+6�/J�[��|apl�9��S�9Wy��ͣ��
�7}�{��zo�IEND�B`�lib/themes/windows - 10/images/16px/undo.png000064400000001235147361034410014331 0ustar00�PNG


IHDR�a	pHYs��OIDATx�chhh`�Ɔz0]� ~k}C[]Cs}
\�
�%����k���J���J������ںz���r�<�M@B���ֵ�u�1d5L�q�;��dƋ�&����~�YD����:��jC�DkM�Sω=���D5.Lӝ���/�']��5��>��>.���c�@C8�\&Z�xv�[�6�����N��<�q�sSM9X����7�o�"�ſ�G�l����ף�����
�������ߺ��ź�*�` �-��d���ap�q���G_����@�@��{jM}��xʣ3^�w�9����A��z�KJ�&\i5��Ҧn��*�
@�Tַ�5tH�7��qqc�ju}37H�A�N:��f��@uR�XC�F�M��F�
@�Arm�ey
������v�zC-Ps}��`X�j�+g(��T����ق��3Zf���V��^�u�jV��0Z��L��RP4@c�Ț��-�=|a0����e�5%`�c$$T\�j���^]��_���?�
����{RFƍ j�Y��/_Ӝ��x+n��]�(����;���,�\��A#8�j
���f]�^C%0GIEND�B`�lib/themes/windows - 10/images/16px/deselect_all.png000064400000000633147361034410016005 0ustar00�PNG


IHDR�a	pHYs��MIDATxڭ�Kn�0�9Td�[A�b �U�$�N
�z)�
(vŢi�Y�<�`�0�/�.!���\ ���qvY�iqkqii�j�d���GO~��v��RE���`�S����x\D"�x,
�c�u�m[6M��� l��#�����O��4
��[�=�w^�}�-`L~um9&�^Xt8�N��z���-��$����:Ap���3��[��uϙ8��UU��q\��?��u]s�w
�/��S@5q
h���0�Dq
��`���8��SX~�(T%��@2A���=�)%�m���e��0����u]�yߍ/x
h�ˇ�IEND�B`�lib/themes/windows - 10/images/16px/sort.png000064400000000710147361034410014350 0ustar00�PNG


IHDR�a�IDAT8���AkA��63K��ӦP�m-4w���9�~��7(�Kx�k@Ā�X�h�j{�E� ��(M�}<L�R�nՁ��x��>�޽ߗ�03̄��S
g��ja�a�B|�u��p2ce��N�-Q������ѧM`f����۔�u��!Ã@�����O7W���dz�ƨ���O0,��<Cy=���T�s�7�vN
�oCdd�+X��x�i��d0W���(F	�%��� �/��C0[���
(��tV�4�an
IH��eGǼ��(�{N¥���ʷ��	�$?�����g�ji7F�禋3�l�w(ݹ���)���@�h������=#��(���f��5[����}����iI�-e+�~\)�:G����'"�>�IEND�B`�lib/themes/windows - 10/images/16px/directory.png000064400000000444147361034410015371 0ustar00�PNG


IHDR�a�IDAT8����N1EO�JP�HT�� 4�tT�L�(5J����E�
in
{�^�jmaY�ό�L��~�$p�Y�Fk	�6W�/s��q �˛�������=�/o��"؝�u�J`��$��d �R��(�P�q�C�S(�m,�<,;"��q�O!�2�{W3�.@<'�������!�A!�iu��RF�[C�P e�RA���2������*�C'�-��m_�8����IEND�B`�lib/themes/windows - 10/images/16px/file.png000064400000000511147361034410014277 0ustar00�PNG


IHDR�aIDAT8���1o�0��+���͊�i�C�F��C:0���^�]���A�$����}w6
.�˗	��$|.$�R�j�=�o�ߧ|r>7�۽b*ڶE�f��j���������Y�b�yY+�>��d ]�=�k�u]Vϫ���8�8&��F�$8}��_WB� ��,G��3P"s=��L���>'o���(
p	A�y�`a�����l��Q�?�c�}�/ ��Ƙ��}�>�
���
!�70x��ux�~�L���)	xIEND�B`�lib/themes/windows - 10/images/16px/directory_opened.png000064400000002142147361034410016720 0ustar00�PNG


IHDRĴl;	pHYs��IDATxڕ��S�V�E�&��*3�Y'�MW!�v��c��3%l����+S�@Z�g�4�$�M��u���Ѐb��!��0��غ��W�˔�]|s$ݫ�>}�\��)	�R���+:Mu�R_!A�)A@Be�s*:p�N��cfE*Z-e���*P8<V�L�� ���xy�m�4�ԩ�b릆����
��.O���ѷӜ�����_X4Br����Za/��b�p��e`E��-��@�,,r<�3k��3d�>N����U��jq�׎���_�…��K<�E��>���JК#f�?6K��<�^�/� )o�ZI6�'�P')DM
~̑\TL
8�s�K��D����a�.dݐ�k�l@��E�	^b!��j��$�`��I�d�FHy�`����
a#�)��;P�j�r���lLa�1	i��R#�� ��b'�c&
�+��j��w@Y���qR��B�
�y-��:d �h7Ʌ9
F��Z�Q	��em�$�t�3�@sn�9���� r���l���Q�P
��r��H�|��G1��@��;����6�/�"�9�dvtF݁U8�Q��$؜eu��� ��
��^�9��H�Έ�3�<���
�v�c����)؍ɪ�櫅����K9�tP��cf(>F�>t��PQ�\<��°�,�������c��d/ԩ�%�
�;�^�m����<Ow޼s�à<ub�<@����z���,��r֯���E9j�w��k��(Z�v��Wjm�IY���AY�� 1�d�z��7B!�8�$fxj�B�U>��Z���E�h�jV�ޯ��M(Onsa��̏��O�<���<�:O�7�'�{�/�?�s����Kg�����z���A�g���`�⏾��� ��_YN8 us��}��f;>
�Wc������t��S���o64\��􈴭x
��
�s���q�W��kʻIdn�v}������w��$�t��S��u���8�.����AU�A���Q�IEND�B`�lib/themes/windows - 10/images/16px/download.png000064400000000572147361034410015176 0ustar00�PNG


IHDR�aAIDAT8����N�P���P��S0n�\;{L�����M��v�֡�!�v��b��5H��Р�=�|��<yϏN�_?1QQ3�%��|s!�gE���(62�$�F���,��������+�D���w��5	��mJJ�]���RG9�4�b6�YF#,cj	�]���Y�rp�&h���߳^o[Q�qK��F$Y+�������V�jc�s\���HY֥*_2�}�z�O�f/�K��FJ�.��p�`�Y�pA���JR���A
�Y�+��︬�J�b���Yc��Ԯm�]��4�
)J���v�IEND�B`�lib/themes/windows - 10/images/16px/cut.png000064400000001040147361034410014151 0ustar00�PNG


IHDR�a�IDAT8����oa�?�wA� Ѥ9'c�`�4)1�V���8t��4v*m�&^Y:8���R\�/��Lj\(�Ӡ�� 5
\�>�>��y`����I�6��zʤ��_�Tv�� ����C�P�u]c��(^�,� ��5M�8�=��҅�n�[�u=㺮yf����^�'�p8<�F����ͽC��|�7`Y���
�HĞ���X��.����n\O������_˲��׶�h��H�ߟ�Ab��3��ߺgw�E#�Q�6�f.U�+`6�&5��93h�G��h�o�7�'i�H��O^�9|�]8��xJF��u*�V�c@ �p5���r/?�S��S����r����ҥǹ��tc4T��?:ٺ[���T�e5(�!�Fk�A	@���*��'c�<RK4�/��>g�tH����Ss�|;h~��»Q��S�< T�4�K�qcE���x]^�+4�K>�r����*
��f��IEND�B`�lib/themes/windows - 10/images/16px/open.png000064400000000621147361034410014323 0ustar00�PNG


IHDR�aXIDAT8���?/A���"�
�h�=	�Z��etJ�o��h$JT
��(qgoof�}�{vŝ�$�y3o���s%�nOzW�����۟�<�tǗ�~]���H&:H:��$�k��@%ȃyT�Y�z<Š@cp�מtZ��C-��2�?��cm~��
\+7H"Q$�<Yv�?�-�V��A�A
�`#{�w��l9x�+�!
#g���[׋��"|���3p^$LT���M�z��|Z
ͱ�tBP�N��ӝS3B|�hF&�|�z��0@�</�90G�,�:�`X�2���cE���!M<Is�7�S��z��T�p���k}[6�*��IEND�B`�lib/themes/windows - 10/images/16px/rm.png000064400000000530147361034410013777 0ustar00�PNG


IHDR�aIDAT8����N�@��B�A�nwy�������d˅Tb�g�H ���.F���ɤ�֚�${ٝ�gvv�?�b�:NRŹ�Nc��0~�UZ䤘x��;m�q�`�V/8M����1~��m=�4�
ɋ��ʝ�!#��Ќ[�1g�pJ#n�Ed��|\T�4�V��XU9��k�_b���7�6U�~�baX�q�Ǫ_��Y۠yD�9& "�qt��yS뜿s��Za�)!�O�`�YMۗ�>#��	����!�i�S%�~B�^1�7�g	���/���w�,�IEND�B`�lib/themes/windows - 10/images/16px/extract.png000064400000000740147361034410015036 0ustar00�PNG


IHDR�a�IDAT8�u�?Ha�����&t
5�E(j�ҵ���v�-�B�fq��2[���@��J�ڡ8W���� �5-��|���ݗx��}�w���}�;��I����[�/(�J4
o��M����ٗ9�T( �ɇ�>����}��2�^�q�ݼ`vz����OB�.�	8\=ϣZ��y^�<����_�V�
d�� �D��+Xm#`d�A���а�J�B�ߏE�5�� ���Vo��
��,���j��\{Ea*���v�3�b02�Yn�N����N!����c�4�O�p�w��)��y�d�__��=xn�`F��
��R]��$�R��� Y0��	Q�5��(3�A�q؇T��GY�����m��&�G�"$�}��a����O�ۥ��P�A����n*9�;�WIEND�B`�lib/themes/windows - 10/images/16px/view.png000064400000000354147361034410014337 0ustar00�PNG


IHDR�a�IDAT8�c\�t�J�ҥK��RĘ`5�>�0i�{�N/dX�#��:AA��S��|�[��0\=׃����;��7V����i2�ݵ�g�1N-ۊ�R��b�+�1�"�O f�<�0w�3���,܀����߽CQLL���y�VT���A��=`���HZJ��$�D����~Jf?4��&IEND�B`�lib/themes/windows - 10/images/16px/redo.png000064400000001240147361034410014311 0ustar00�PNG


IHDR�a	pHYs��RIDATx�chhh`@�P���������������,��a�147��2�֖3���3�7t�WԷ�7�V
���7�U�
C��\_�P[[�ѵ��n��g&��7���s��]Y
�l�j�J���B���5]7��h2P3����'��o=��g�	'�9N�tIg����3��j\�f�{�Sω=�5eH��3�"z��/��?�o����:^�XSM9Cz�4g�)��k��_m����� ������q����3��ah��˵����Ѻ��E�Y�k��߽��
4�U1�6u�X��?h��-5�@oՃ
��mt�9��`ƫ��S�К��g瞅-���
ղ�)�yo��N:�d@�[ \]��]�ثZ��.	�@u���-`yx,��14�V3xL�r�r�y
��m�eШ��	d�J�hqZj+2Zf��-���f��E��jmu�(	Fp�1Ӿ��h���V��(�#ljz����!�}u����-�=|Q@�����1$�mu�޼�ͦ>|�W߫�L�
Hy�膄
ќ���U��k�5�,���&d�!��o]Y��<�հ�#hz���BH4b
B�a�j��IEND�B`�lib/themes/windows - 10/images/16px/paste.png000064400000000542147361034410014500 0ustar00�PNG


IHDR�a)IDAT8���=JCA��gt	��sje%Y���^��u;AA0�+�p'։
�s�E~L���Ýs��3S���~
���f0�m���am�����y[��3�Brs��Rl�.���O�R�4hn�)'��1���$�i�4�"ؚϧBi^ߢs���
$c'{;���3f"i��^� ��I��s=f���l#�
�b��ێ�u*2M�� �kЖy�;'^����PM5�A��*'�۽��3)~(D��؉3'��L/���g��a7rU��'O[9K��B������H9z�FIEND�B`�lib/themes/windows - 10/images/16px/netmount.png000064400000000576147361034410015244 0ustar00�PNG


IHDR�aEIDAT8�Œ�JQ����&bk�F�(�E��y�����
|A+�:`+���ht���H0H���
�A<p�{��̙����z�9 @>���P�\�I�BUa$�tz�u�(����_��x�{�=��ם�y�,3!3�3a
����q/ �'��=��s�ч��Wl���w��"i�N� ����ĶpzvY)]��̬�$$C2��	#�������~��ח��.�z�F��f����O�բ6Y#~G+�k)�A$Ħcd7�Բ�nT;1��Elj.�pu�\�n˩pi�pvS`i��$�����Xf �����B�
���rIEND�B`�lib/themes/windows - 10/images/16px/edit.png000064400000000757147361034410014321 0ustar00�PNG


IHDR�a�IDAT8�u��KAƿdg��5
��ۂ<+�	ޢ���Q�������4��A���%��V%%Q�`L�}=dwvv�;3��7߼�I��j�J!A��A
�5!���}-�lo���j�M��pf�Vc����r��_:X
�d0�@�@k��Zk��l6����R�2� �@0�o4�T*#(�ʌ	��/���(7@�q�\������1؞��6^D�6�����_��%z-L6>c��Κ��E>_kb�Ts/�gLܟbq�[��۫G	$S6����u{_�ց�5��iÆ�.�
��L��	�6�gV�������7���u���G�m܁0�Y�/�w�h��X��-x���p�6r����WH�0�v���\W�4n�z �~�
�L���d}�\�h���C��-1C��6vZIEND�B`�lib/themes/windows - 10/images/16px/getfile.png000064400000000426147361034410015004 0ustar00�PNG


IHDR�a�IDAT8��R��@�Z0�C|UX�7Z�#b�������7|UX�X����I�����ٽ��!I*�������\�W�3~!�cJ�i�<�y���pK���R��Q���Ex�3H���N@"�2@Q����$�ClÝ�.Z��@$��@���mZ�N�80�:���A�$�?�/�G�k$vP؆�r�Y��\��a}�6's�u�V{R���+�i�(�5IEND�B`�lib/themes/windows - 10/images/16px/info.png000064400000000771147361034410014323 0ustar00�PNG


IHDR�a�IDAT8����jQ��{�̤�"�lR�"��,]��)��	�e7�B@\v��U�@V]����R�&�:�x��dt�z6�r���(�$S��@p�bl���;
o1^-�9�)ƩL7���f9@зC���7T����i�1�)�JA�16����[E!Π���/�Nc���Q�P�<}�����n/I$�b�?$z�/M�)�]1N%��+&:�%[���h��)�]�N7�׶��tW� �f��9��ת�([X;���G>��;_��	����ݶ��K03'P�ɐ+��'6@=};\���DDГ@O����
�����V����;��T`�NZ��4<�mg�M�[b���c�,l���g��7��K��.�l@P��V*;�ǘ�'@
��gG��g�u0ޱ�g;�h1��Y���\|A�6�*uL���u��Z}!D�IEND�B`�lib/themes/windows - 10/images/16px/view-list.png000064400000000357147361034410015313 0ustar00�PNG


IHDR�a�IDAT8�c\�t� ::���0000DEEaH,[����������]]]�,0��=�$^}�`�qdDQD��1�
1���308��d/���S��.8�x=NE]�/9�z�ع�,�ߧ{�|���V�EA0000h]��w%��7(
"�ҥK�c��G ����nD���IEND�B`�lib/themes/windows - 10/images/16px/full-screen-icon.png000064400000002721147361034410016532 0ustar00�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:16C7EBD02E7D11E8A1D5B3716130EBFB" xmpMM:DocumentID="xmp.did:16C7EBD12E7D11E8A1D5B3716130EBFB"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:16C7EBCE2E7D11E8A1D5B3716130EBFB" stRef:documentID="xmp.did:16C7EBCF2E7D11E8A1D5B3716130EBFB"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>� ��AIDATx��RMhA~;��Zz��ͦퟠFVz�Pm�"ғ���gO��A����Ń�P/�����F�	�Jm��݂?����l�f�C�W����̛�ݞ�MeDl��I���>���$�Ǐwٗ�"@C��ȡ��A/�%�P%	��n35ћy׾�_�-#b�!�Ԣ��Z�óY�Kv�'�N#*�� �}.��t��.���^�XY�
��ۼF��/��ǝ+W�dw�quذ� � �r�{�C-zЫ?���l���gv�'Hv����ҸD�!�~�%Z�"��r�"E���k���b\PqY4�Z�>��RKlI$؛�ο8�JV}?�7|;��'.f�������P�������֤��hπe����4���p���r�ד���2���� ��.dh�QC��̓����Ӳ�XZr��3�^��aG��;~�PP�_���_���Z���4�խs�	���1搛�����z]U�ahS�X�XrUW�ow���w.L^h��w^9JCS�RF�7�	�rO���&4�㐬
�Q���ن��0 E�k\��IEND�B`�lib/themes/windows - 10/images/16px/invert_selection.png000064400000001345147361034410016742 0ustar00�PNG


IHDR�a	pHYs���IDATx�mSMOQ}?�����B7�d�ig�}3�BV�X%�!і��|t�J+�`�ј�U�NiA&L*��;�/��ˤ��{ι����.*>��x���r���g�e�E"�s%K��$�	�O��T~J@����1۶E�0DC�E�`���G�&�}�ʁ�v���`y�sa[''		A`���߱�[��+�ͭ��6���� �v���I*}���:>>���#��.䋯Sn�Wh|�(4�f�'9��D`|xx��ȹ�E�	|���h�?D�J�L9�;/`�j+��ީ��6J�Y{�G8W�$�كٹqw}{�(o,�e���t�av����k���������7��,�I�0W	�
�~٪��A]s[��ת_�i����	����W6���fV��[�73?.cS�9cZRf�3Un�n�a���@q�;�ڛ�~&CYt��!��ph�Ȑ4fLQ�u[4_/�^$�0�^��|^�F�a}��A�y�61�(�	��t�]��r"%�'@	��uZ�LQ���ӴkoW�pNNB0]������7�7��A#f�Q����+�ٹ�EǖqOd�Ӕ3���H@F�Ð�ݒ46)�a�]J�;A��i����(�G8z��i夸�҃"���}Q�@$r����IEND�B`�lib/themes/windows - 10/images/16px/upload.png000064400000000676147361034410014660 0ustar00�PNG


IHDR�a�IDAT8�}�!oTA���{�:���)S�4�����l�5�"� �k� Y�+IJ�@UT`1l���@�h��9����;�p��̽���;3=bL&�����-ڞl�}yu�����w�xt�B�Mn����Գ���G�-n�=X H� B�hbno��u}����0��-��x�������u�;;O1PW�Ѩ�'Vd༖U�q*/�*�:�s�uYݚ������;h���H�B�%�7�0���-_�'����X���go��D�s���9�G>,+H�]�8}��n5���w�l��V�
���G{��Ʒ-�-�w��O~�2�p�{���C89_�c�*4����2�!��w����2��ohA�'��d\�AH��IEND�B`�lib/themes/windows - 10/images/48px/directory.png000064400000002003147361034410015367 0ustar00�PNG


IHDR00W���IDATh���n�D��+�I�HT�J�@aH��Q�R��eY�'�<J�����-
"�ק�3���̵���~�c{f<�;��;�����,*/��d	��9gp�J�W8G�\;���Ε����wQ�~���Tc�G�u�)��D���Z�{�f͹9��b��K>�\�Ǜǟ�88��E�%�S<Ek�h7h�+���}�n߽���=MdDG���OD��+�/Y�px|�~K�@�ƈ&/ۈ���W�z��‣�/�w|� ���@�{�|��b��]���j�?g��}�����"!Q��M��_`�7����;2�o��Eͥ�5��#�V���}I��IkKBJ!De��@�J݊�����֍���ܖ�6���赣��N$�֤�V�����g��(O!�&!DE���ck!U�k�ЀH�����ﶠ�,:"�P`��{�M6�R,�b���dL4����k�
VN��_�)�jeTU�ީ�䙇x��#n'�LI�����l憼O��S��b��s��uQ���^E�����r���,��̥����k7$.�<�߾[����} ��P�+o�ۇxp<٬Cާ�{����I�t�8xP?��i)y�U�^�Z���7)���=�%��_�G��]�4U�&�n7zC��QVĽ��t\����&
Qy�
��s�)��A���Ă֤K�X/:�M�Du��
���
j�����?�p7�:ӏ
AYz�._�i�l���5Оc#DX-��F����f��O���CRާ�w�5υ�+`	\�au�BfԨ�<䓯W��d���<C䳡U�ݏ*
����;~x�c�s�x
mY�9w��� _"ra�i��)�*�N�r�G;�5��΃�w�}�+R<h���-��nr���<�A�{4�i\P��79|�,%�a�6��(;��͔�IEND�B`�lib/themes/windows - 10/css/statusbar.css000064400000001041147361034410014120 0ustar00/* statusbar.css */
/* Statusbar wrapper */
.elfinder .elfinder-statusbar {
  /* */
}

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

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

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

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

/* Size of current file(s) */
.elfinder .elfinder-statusbar .elfinder-stat-size {
  /* */
}
lib/themes/windows - 10/css/theme.css000064400000002340147361034410013215 0ustar00/**
 * elFinder Theme Template
 * @author lokothodida
 */

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

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

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

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

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

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

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

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

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

/* Status Bar */
@import url('statusbar.css');


.elfinder .elfinder-button-search input {
font-weight: 100;
}
.elfinder .elfinder-button-search-menu {
	top: 32px;
}
.ui-widget-content.elfinder-edit-editor{
	width:auto;
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
	background-image: url("../images/ui-icons_default_theme256x240.png");
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right .ui-icon.ui-icon-closethick{
	display:none;
}
.ui-button.ui-state-active:hover {
    background: #217dbb;
    color: #fff;
    border: none;
}lib/themes/windows - 10/css/view-thumbnail.css000064400000002032147361034410015044 0ustar00/* view-thumbnail.css */
/* Wrapper for thumbnail view */
.elfinder .elfinder-cwd-view-icons {
}

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

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

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

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

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

/* File name */

.elfinder .ui-state-active .ui-button-text {
	color: #fff;
}lib/themes/windows - 10/css/reset.css000064400000003322147361034410013236 0ustar00/* reset.css */
/* Comment out/delete the reset rules where appropriate */

/* container */
.elfinder,

/* toolbar */

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

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

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

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

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

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

/* context menu (outside of elfinder div */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-contextmenu-item,
.elfinder-contextmenu-separator,
.elfinder-contextmenu .ui-state-hover {

}
.elfinder .elfinder-toolbar,
.elfinder .elfinder-buttonset,
.elfinder .elfinder-button,
.elfinder .elfinder-toolbar-button-separator,
.elfinder .elfinder-navbar,
.elfinder .ui-widget-header,
.elfinder-dialog-confirm .ui-icon,
.elfinder-dialog-confirm .ui-widget-content,
.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon {
 background: none;
  border: none;
}
lib/themes/windows - 10/css/contextmenu.css000064400000002360147361034410014466 0ustar00/* contextmenu.css */
/* **Note** that the context menu is NOT inside the main elfinder div */
/* Context menu wrapper */
.elfinder-contextmenu,
.elfinder-contextmenu-sub,
.elfinder-button-menu {
  font-size: 16px;
  font-family: 'Open Sans', sans-serif;
  background: #fff!important;
  border: 1px solid #b5b5b5!important;
  box-shadow: 0 0 5px #cdcdcd!important;
  border-radius: 0;
  padding: 3px 3px 0 3px;
}

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

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

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

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

.elfinder-contextmenu .elfinder-button-icon-open + span {
  font-weight: bold;
}

.elfinder .elfinder-contextmenu-item .ui-icon.ui-icon-check {
    margin-top: -9px;
    left: 1px;
}
.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon.ui-icon-check {
    right: -1px;
    left: auto;
}lib/themes/windows - 10/css/view-list.css000064400000003152147361034410014040 0ustar00/* view-list.css */
/* Column headings */
.elfinder .elfinder-cwd-wrapper-list table thead tr td {
  color: #43536a;
}

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

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

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


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

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

/* Hovered file */

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

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

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

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

.elfinder .elfinder-cwd-wrapper-list .elfinder-cwd-file.ui-selected td:last-child {
  border-right: 1px solid #99d1ff;
}
lib/themes/windows - 10/css/icons.css000064400000004110147361034410013223 0ustar00/* icons.css */

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

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

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

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

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

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

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

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

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

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

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

/* Code/Scripts */
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript,
.elfinder-cwd-icon-x-perl,
.elfinder-cwd-icon-x-python,
.elfinder-cwd-icon-x-ruby,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source,
.elfinder-cwd-icon-x-php,
.elfinder-cwd-icon-xml {
  /* */
}
lib/themes/windows - 10/css/README.md000064400000004625147361034410012670 0ustar00# Stylesheets
All CSS for your theme will be located here.

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

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

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

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

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

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

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

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

    /* mkfile toolbar icon */
    .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-mkfile {
      /* styles specific to the mkfile button (e.g. background-position) */
    }
    ```
* Some styles have their `text-indent` property set to `-9999px` to keep the text out of view. If after styling you can't see the text (and you need to), change the `text-indent` property
lib/themes/windows - 10/css/navbar.css000064400000003551147361034410013371 0ustar00/* navbar.css */
/* Main wrapper for navbar */
.elfinder.elfinder-rtl .elfinder-navbar {
    border-left: 1px solid #e5e5e5;
}
.elfinder.elfinder-ltr .elfinder-navbar {
    border-right: 1px solid #e5e5e5;
}

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

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

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

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

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

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

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

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

/* Resizable handle */
.elfinder .elfinder-navbar .ui-resizable-handle.ui-resizable-e {
  /* */
}
lib/themes/windows - 10/css/main.css000064400000001237147361034410013043 0ustar00/* main.css */
/* Container div for elFinder */
.elfinder,
.elfinder .elfinder-dialog,
.elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-menu {
  background: #fff;
  border: 1px solid #69bcee;
  box-shadow: 0 0 5px #cdcdcd;
  border-radius: 0;
}

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

/* Resizer */
/* Used if elFinder is resizable and on dialogs */
.elfinder .ui-icon-gripsmall-diagonal-se,
.elfinder-dialog .ui-icon-gripsmall-diagonal-se {
  /* */
}
lib/themes/windows - 10/css/dialog.css000064400000006707147361034410013365 0ustar00/* dialog.css */
/* Dialog wrapper */
.elfinder .elfinder-dialog {
  /* */
}

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

/* Close button */
.elfinder .elfinder-dialog .ui-dialog-titlebar-close,
.elfinder .elfinder-dialog .elfinder-titlebar-minimize,
.elfinder .elfinder-dialog .elfinder-titlebar-full{
  background: url('../images/win_10_sprite_icon.png');
  right: 0;
  border-radius: 0;
  margin-top: -13px; 
  left: -7px;
  -webkit-transition: background 0.3s; /* Safari */
  transition: background-image 0.3s;
  height: 29px;
  width: 44px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-minimize{
  background-position: -89px 0px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-minimize:hover{
 background-position: -89px -31px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-full{
 background-position: -45px 0px;
}
.elfinder .elfinder-dialog .elfinder-titlebar-full:hover{
 background-position: -45px -31px;
}
.elfinder .elfinder-dialog .ui-dialog-titlebar-close:hover {
 background-position: 0px -31px;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
  left: 1px;
  top: 12px;
}
/* Dialog content */
.elfinder .elfinder-dialog .ui-dialog-content {
  /* */
}

/* Dialog content */
.elfinder .elfinder-dialog.elfinder-dialog-edit .ui-dialog-content {
  /* */
  padding: 0;
}

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

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

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

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

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

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

/* Footer */
.elfinder .elfinder-dialog .ui-dialog-buttonpane {
  /* */
  background: #ededed;
}

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

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

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

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

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

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

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

/* File upload (including dropbox) */
.elfinder .elfinder-dialog .elfinder-upload-dropbox,
.elfinder .elfinder-dialog .elfinder-upload-dialog-or {
  /* */
}
.elfinder .elfinder-button-search.ui-state-active{background: transparent;}

.elfinder .elfinder-dialog .elfinder-titlebar-minimize .ui-icon.ui-icon-minusthick,
.elfinder .elfinder-dialog .elfinder-titlebar-full .ui-icon.ui-icon-plusthick,
.elfinder .elfinder-dialog .ui-dialog-titlebar-close .ui-icon.ui-icon-closethick,
.elfinder .elfinder-dialog .elfinder-titlebar-full .ui-icon.ui-icon-arrowreturnthick-1-s{ background: inherit; } lib/themes/windows - 10/css/toolbar.css000064400000013177147361034410013567 0ustar00/* toolbar.css */

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-sort {
    background-image: url('../images/16px/sort.png');
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-undo {
    background-image: url('../images/16px/undo.png');
  } 
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-redo {
    background-image: url('../images/16px/redo.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectall {
    background-image: url('../images/16px/select_all.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectnone {
    background-image: url('../images/16px/deselect_all.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-selectinvert {
    background-image: url('../images/16px/invert_selection.png');
  }  
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-empty {
    background-image: url('../images/16px/clear_folder.png');
  }
  .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon-fullscreen{
    background-image: url('../images/16px/full-screen-icon.png');
  }
  
.elfinder .elfinder-button{padding: 3px;}
.elfinder-cwd-view-list thead td .ui-resizable-handle {top: 3px;}

.elfinder-button-menu.elfinder-button-search-menu {top:15px !important;}lib/themes/windows - 10/js/README.md000064400000000507147361034410012507 0ustar00# Scripts
Any extra (funky) Javascript that you want to load along with your
theme should be located here. This could be:

* Special configuration for elFinder under your theme
* Extra JavaScript libraries that your theme depends on
* Javascript hacks to the elFinder markup after the file browser has loaded (not recommended)
lib/sounds/rm.wav000064400000264054147361034410010000 0ustar00RIFF,hWAVEfmt "V�Xdatah��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	����������������

���������������������������

������������������
�������! ������

!"������������()���������$$��������������%&��������	
����++����������	������%%44���������&&��������������%%����76�������������

??������

����BB**��������ED�������56ST��������FG$%��������EE������qq����������QR������??����44&&���������AAss??

��i�i�~�~�>>ttFF++��������		OO�������������������}}rr22��������HH����KLaa������**k�k���8800ii���������h�h�����aa������4�4�����IIAA8�8���������������������b�b�^�^�����������66��R�R�++����2�2�y�y�mm32������F�F�r�r�f�f�������EEW�W�)�)�������GG��������V�U�}�~�������45ba��D�D�����45������G�H�����������G�G�NM��__�������������9�;�������������;<������qs�����������V�X�[�Z���XX��;�<�0�/�'�(�K�L�_[������M�I���"����E�H�����~���������QX^�X�`�b�ef]�Z��������c�a�W�Z������CM!`�h�j�j���.�2�����<:����������;�B���`Y����,�&��������FKND������6�A�����LP����������u{��|���unmN_���iK������������;������s���I&KW����2#w�������t�~�6���������w�����;������0�k�a��a�'���S;������C�m�'����[,��|�V�;�e�X��;=��e��E��������lfaT����f�7��ekk���i�f�O���s�[
��h�k���v�����M����	(�\��h���uwY��$�����z�b)[��s1��7�T9�oK%���_�����1}�����$�~���)��K���������1�������.���C���2���������������(r�������Ii~�V�%w�2|���B���]���_����$���9���������b�
K��������3H�M���k�{�
iZ�����>�/����������i<�����A������Zj��%�4�����a���a
���M$�
~�d�����8��)T��i��(��%����~1�����]�Y�q�[�V���B��<E�
�2�^����`�'�P�y���(9���9�z��@�/���,�#�����3���~�!�'��,��ER�'���o����>`��+���I����������,��r�~�F��r�����K�����h��v���,�P�G'�w������)�����e�\�7���t���,g��@���,����������d��h���Y�
%	����b�
V���	�o���`�<���w��U,��^�v��1�)�����K�S��4��'��;�������T�Kb���{�������?�q�#���������:��#���g������s��N
_�����[���J��2����
-���T���,�a�����!�X>E��v�(]�*��c�8
���M�^����|������|i$�u��~�3�D���-����X��O��L��u��;��x�9V�'�E��b��b0�z!���X��M)��a�4U�f���)!������!�)���d�4#|�����}������L �t��R����v�c�����+���t'oFp������Y�_��������c�����
�������.8q�\������6c����)<,�"�~������	�x������)��������,0�0�������N�`�������7F������r|��f�x��������0)WU������@�@���������GW�{��G�G�D�H�x�n�>�H���������")����		������z����v�l�����>@���;<������Z_R�M�������������@D	��������������jg����B�?�,�/�! ��������78����D�C������������66��T�T�1�1�//������2�3���Z�Z�����.-T�U���RSN�N�����������C�B���ji����66����������������yzFE��22��%%eeNN������66ww23��0�/�	�
�������F�F�����������������dd����������'�'�����55�������
�
��������[�[�>�>�+�+�������������t�t���xx����88���������������YY-�-�����99m�m�B�B�������II����XX??GG��4�4���&�&�����rr��������������^^��55VVffbb��w�w�����^^��I�I�DD����@@������R�R���������{�{�����n�n�����������������d�d�

��00==C�C�--w�w�cc^^u�u�����������CC��]�]�����q�q�������NN����|�|�a�a���CC��oo����������i�i�^^������5�5�����

ee������������g�g�HH��''������@@..��6�6��������		�������@@{{��..��������S�S�~�~�������jj��dd��������K�K�#�#�//����i�i�==����:�:�AA��������__2�2�55����,�,�����������Z�Z�����\�\�������vvj�j���\\NN&&��qqWW��������������AA��������}�}����������������Y�Y�����[["�"� � ���ll������''��������  ��7�7�����HH		��LLtt������������z�z�n�n���S�S���y�y���������$�$���__����4�4���������������		����������������������������k�k�I�I�������vv��yy��yy��������|�|�����..����������������������k�k���ZZX�X���y�y�����������������$$��������rr��>�>�%%1�1�������O�O�����������]�]�e�e�����������������p�p�rryy��u�u�����i�i�������A�A�HHnn99dd�����������������������
�
����������������������//������ii��������Y�Y�����oo����ll������\\��������$�$���++����+�+���ll����q�q�S�S�HH��������
�
�����ZZF�F������������������xxppJJ7�7��������
�
�� � �A�A�����������������d�d���

����������/�/�W�W���������aa��b�b���������L�L�X�X�����;�;�RR��FFff��E�E�����b�b�oo����������������,,G�G�'�'���������[�[���K�K�������y�y�M�M���"�"�##����n�n�����eeX�X�������������������D�D�$$aa)�)�QQllc�c�x�x�,,����L�L�'�'���QQ)�)���++N�N�������������H�H�p�p�..4�4�����������qq��J�J�������=�=������������3�3�����22s�s�	�	�y�y�����������������������g�g���������������kkm�m�����������������������������x�x��������++^�^�		���������	�	����cc��;;G�G�������yya�a�����~~������j�j�EEE�E�������<�<�#�#�%�%���������f�f�����\�\���..����22��""������OO��������������������ll����j�j�����77
�
�������������}}!�!�P�P�GG��������������rr<<55z�z�^^��������������������������~�~�������K�K�22hh������������������������B�B�����������-�-�l�l���TTSStt��u�u���������������''��YY��T�T�pp��e�e�������Z�Z�������44����22��gg��u�u����������������Z�Z�����GG����������yy�����	�	��Z�Z�BB��������������[�[����%%tt����������//2�2�bbPP��������EE1�1�>>mm����ss��������=�=�SS++���������UU

��
�
������}}������m�m���������--����P�P�??HH����������ll��%%]]��������}�}�Q�Q�����C�C�������������3388|�|���I�I�����;�;�a�a���5�5�1�1���~�~�I�I���������ll����������������������^^00{{RR������i�i���MM((`�`�U�U����������������XX������������
�
������������������		����:�:�����}�}�����������������������������n�n����������>>��~�~���hh33K�K���\\$�$���������n�n�����{{����������i�i�����������&�&�I�I�����ccX�X�mm��tt������00��������00WWG�G�ZZ��������<�<�����~�~�KK������������00���������������yy������������pp������������__����XX����YY��;;������U�U�..����c�c�������,�,���77W�W���dd����VVA�A�D�D�$$MM��uuR�R�mmUU������}�}�gg��������]]		��������������SSkk��������~~

����������NN��������#�#�������������������uu��������������))l�l�``qqLL��������dd33����7�7�����X�X������PP,�,�������}�}�����:�:�q�q�������m�m�������������v�v�**rr��jj99%%ss����??+�+�������3�3�������w�w�-�-�**((ii��GG���������33������WW����"�"�������������zz\\��������W�W�����RRUUs�s�������������zzZZ}}i�i�!!����KK����������k�k����OO����@�@�������vv��$$������������{{������������p�p�ss������������������������##uu����.�.�����++[[����������eeUU����&&zz�����&&V�V�&&������������88b�b�k�k���z�z�

��������������������..J�J�����H�H�qq:�:�kk��������B�B�X�X���������JJX�X�HH�����������II����o�o�AA���������������������EE��}�}�������}�}���e�e�����ss

pp����$$**00����?�?�^^II��������������ww��t�t���������6�6�vv//jjV�V��������#�#�������������>�>�q�q�����-�-���tt��������`�`�������4�4�������������@@��o�o�++������������=�=���YY��TT����ttF�F���l�l�9�9�ii����@@��������((������~�~�dd��������FF$$^�^���gg��f�f�����������tt��ii�������������������� � �����������II��{�{���������s�s�-�-�NN��������/�/�����������2�2�����AAAA����~�~��������OO++x�x���u�u���__����a�a�����PP88����������������%%UU����44������??[�[�����>>��������������QQ���==,�,�O�O���������FF����mm��������v�v���&&����Y�Y�BB��������~~������������((B�B�m�m�����(�(�00tt������������3�3�����CC����������c�c�[[��

����55��[�[���������eeii��aa������������������{{YY����������NM��������vv<�<�c�b�����mmOO������ZZ��������������ww
��4�4���{�{�����������������������||����;�;�JJaaYY

..��������������@�@�������]�]�������WW��������i�i���������

������������llFE������������K�K���$#*�*���������		O�N���@�@�Q�Q���������������TT<<::��98��88������������K�K�������������hgWV+�*�10����RP����{�y���,+2�0�������US����{z����������;�:�kjn�l���ZX��C�A�1�0�������������;�9���DB����KJ����'�&�:�:������GG��ED����LL������.�.�[\QR		BC����EGL�N�������uw������bd,-��d�e���\�]�56����34��������������
�	���sq��t�q���:�7�G�C�������~�y�g�a����G�@������T�K�A8!��k�a��������}�����������9+��oVF������jW"�r���/����y���}���E0N9��E0���������L�7�"�
�[�F���dP�����%��|�����r���������������������t������m�`�h�\�PEj�_���������E=��������XSto��H�E���������dejk����wz,/\�`�>B��;A��sz������IQs|��\�e���M�W����� *����p�|�h�s����{�DP�����������*����i�u�>�I�m�x�������jt"+�"���������ov��kr����GM����W�\�� �]a����P�S��qtE�G�������c�d���p�q�������PP���IHED10|�{�������=;M�J�������y�v�ZW����������A�>�����YU�������������	QLl�g��������'!C=��#������xsy�s��������������}�ic-&H�A�X�R��������;5��������.(������id�������xt��`�^�����9�7�2�1�����������fh��
��>�C�=�D��w�����@J(q}��GU<L������n���������Iax�������/�����/��?���6Y�����|������E�m�
3����]�j�����.�Z�C�o�=i��?�k���)�V��������q��������y����������4ZHm����$�G���?���������������������#�-/�=���������������W�[���DD�������U�N���{����`�U���n`C�4���������`Nz�h�����D1n�Y�O:��1��3��z�K6��9$�������{�g�������w������������&����������wm@7��ke��������"��NL
������BDF�I�����ek�����4�<�a�j���������EQ�����!.Sa1�?��������o~������R�a�K�Z�:I����%�4�#3A��.�<�����������k�v����� ���"�"*����������m�r�����qt����������>>����+�*����	&�#���EBZ�W�����gb0,��������~����������������1,��
3�.�����~z$� �O�K�FB������~><B�@�}�{�a�`�����WV�������""NO���������� "��OR=@VY��������eiae����������49�������4:HMHN��!�&�����lr���,�2�D�J���1�7�KQ/5DJ����L�R���������#)������������������RXe�l��������g�n�#���e�l�QX������N�V�RZEM]�f����������Xa7A���������������������
��DOp{������~�@L������=HG�S���x�����"-Q\F�Q��������'�2����(���{�ENF�O�����������G�N�]�d�ioV�[�;@���������������&'<�>�()��44~�~�>�=�	��WU��������+(���������MH����������HB��`Y������JBd�\�~�v�5,��yp������|�������=�5����~0)?8C�<�:3���>7��E?�����/+����I�F�����sq���������x�x���������5�5�t�u����� "���������&(������������v�z���LQ����$��!�=D/�5���(�/��&�������&�/�"�������Y�`���������������&�.�KR��F�K���!�&���16;�A���EG19uy �$�P�W�}���{~��N�R���,-&�-�-6V�U���1�9������������$�
���������\�]���������������,�2��������
���12����YYIH�QLf�s�SH�����������SZ������"$[�W���'�������F�F������	��|�m�e������y(+����L�$�
0;2�����Nx�X�c�����'��������yh����^�.�j�������VzR8B�n��������X>�P���y����)�@������j�s����shM{h�N�u��#�������>�L��SO�u������H����0���]Wr����q����(��[��D^"�$�X�/��6Q��;����{��
�d�>����
A�0�p���ny���������#�������2P����U����H���� I-*�|�3���G��m(�T�_���������{7�/�R��{�6�Y��O��x������������#�4���BI%������o�}V����X����@���H����/�9�������v�������G����n����������h��/�K�OL����w+w�*�@p�A����1uO���Y�\�������F<��:K�C�<����=���y�j�S����e+���KE����������`������|�e[��J�$�0��M%(�������$�7zl�X���qM�N���;%s���u��q����<�_$[��A��s�c�I��a��V�?��)
3��-�0��^F�k���E�}�1|��E�g�H����������7��c�K�����`��/����j[�����]v�����(����2�u������:�����1�
��/�	q�[��������r���*�w�!���:�jr�����d���N�t�gT��B���&L�G�z��	�����������K������=�����������?�q�\�$�W��x	���K��W���	s��������8�c�.^�F�+�����q��������y���/�Wx�>������������H�c�J�0�I�z�����������1��R�[<����G���@������+	���^�������
�N��d�9�"r�w�������0���������8��X��P��9���o0�9���%g��D,�]	G���Y�L�����U�;��/�L��Oq{���������+����� ���e��/<�6��ml�����F��j���c�C�'�/�|vj�T�z��S�Z�����
]#�	�^�_���{�(����X��"�D��u���������������E��FO�G��n���t���5�������.�;o�F8^�{���U��U�)����4*x��
zC���G�H�����������h������A����X���T�{���n��������M�����H�/�W�v�J��]�>������a�9�ZN��bU#��D���]�_����(���3y��c
�����)�c����m���K������a����C�4��Uw��
�T�W���.��������(�������C�O��*�i�%���8��w����i�������T������������)`V"��IM�GN�-�	�������%�K^�)�/�����ZF�<���"���6N!=ni�`����O�S�(]�7�}��)k�y/�����������"?O�B�8�����5���2(>L��=��&a�?��1�+�-�����a������H�c�l����T�+C�������;������������������I����� ����f���k���"����_�`�m�A�^��6�9~�������d�9���H������H��������BJ������
�[��3��{�~�J��+��.�s�E��=������7����r5�>���{�IY��q�����J����q�W������O��z�,�y�&������
������6���,v���;�g��J���yb��R4��s����47�}������������2������� ����J�#9���B���z�l��,���W9J��H���z$�����wN�s��:K������u����$��>F��	�����\�-�n
�Q�o��������~8�t�>��%�s�.�����*���2��^���V��s|���@��;������<����8u&���]����s�<�Tr�Z������K�E��1�^�����`v���:�A�$@d0
�lb�
�>��w�A��PD&��>�7�-�W�m�&�Z1S����#���C�y��e�
��;�/��Z�����0�[��W$���[��l�E��L�����
�������X�y��f�2�7�3��/�z�K�N�)����F�q�����:��#�o|�������������r�c���	�.�*�����=��@����((���`��U��L�b�l�F���Y����)a�����)�V����Xz�<����Q��������7�/�a��w���<��$����F�p�2����0'k������������������Y���r�Q�Z���!������_�������~�������v�������Z��0#��P�������i�����*���������z����0b������X�B�����~m����-�F���f�<��j�
f��2���C
��l����IIb���Y�m	z�����<��������r
f������"(�����g]�	����O�(<��H�L_��+�t���s����B�#X���v�������t�������4������#~��+����2����~��J�_��g������C
{�
����=�i��������G&�
��7	^�������/����m���0e���b��c���H�v��$�J���H��!�
����n2(���#��x����������;��K)����L�E�q}��y�����4;?�C�.�����!��Q���(�����rm������� ,Og&�����8�E���8��S��B��5C�e��LB���C����H�)�PK4����7���C��5k�t���
������4�~�F�$������ZN4)���$�w���S���IK�F��q���/,F`��S�K�V����G�~���{��<���m��F�}������^�Z��	�����x��E��B��y����'��C���.�SR7\�����9��h���V����B\��!�{�����J�R���c��@O�f��&�k�������<�Z	�������������{�q��YC�����	,�}��������v�������
�G
�n�.���Mf���
�������(��tL/�m~*c�c�$�������V����k,
���M��-�������1*z���'<{�X�P�Y����
�S���i����C;�E.�n����&���h�\����e�	�����`����(�*��������W�W��������8��	E�����<�e�v����WF�	o�E������/}����jk��S
D�����9�
	M��E�T������$!hK������(����
�
�
h�����_�9�o�
����f 
��N��q��Y��c����Au��L�^
�^��	�~!�����s���x�r{� ������
���]���	�s�?�M�f�[�y�@��gE��_R�V=S��G������B������������������ �Y����r����9J���O��
�	C�����������V1�q>�>G�� �L�N�:J�������,������>C�����?���~
.����Qm�:�����
_�c���x�
�h��H����3�����o���|�V���5��
�i���	����sk��U����7��	
��IW�V�r���c�������n�u�
%��S	�9Q������&����D�*Ek�j��������	K��i�5�L���]EL��������g��a���D%��9f�	����������O�|��(�<��5�]p4�@�����g��[�h������M����F������b�^�j��h�����h��
6��3Wr��|�)�z���.L+n�0�}�*�$���������V��k�E��-���h�+�������V����������	*��:��n��~gx��v�s����A��I�^������#��9�@�E;��m�@��Q������H��	���i���7����Z��H���*���'����N������x��@�B�����.��M�u�'����
�������m�������Z���"�������	�(�{�^���$���������H��9�/k�<�	�_�w�b�q���Y����mz������	�,��e
i�1�%���P�����|�iy�-�|����������~����<�����p�5�D��m����k^�PD����e����������k�	���������<I�*��{f����.��C� ��r�i���7�D������Q�c�*�����|��5�f��,�X���<��Y�s�[�����&��.q�'���C�,�����)���=�I�������io��O�n��V�3������r��7v�z���u��\�������<me��
�V������X������)�r���W�������5*L�����������������5�����<����~������|�.��xs�K�1��������x����	���O�G��l\8��;�|��
"�=g�����5���a�fyU���62���;1��d��t�@aA<�I�H�v���
�L�G������X�����p��{���9���~	�
�����z��o����y����	��Cr�T���g'������~]�G���Gn���f�o��m���!����s�1���_�m	Q	��&���#���x�����uT�n������]�30��d����)�RT7�����	����c�f�+�;���d�����K��~����G��f��wK����~����&21
V����g�"w�����+�Y	���:�.�;{��}�l�
���y�y�������1c��f�����m����*�ux���nL�+h��5�����\������
��.��Z���<�2������];z��b��1�(���U.��/�zg������v�E���s����"����;�����������|����z����y�����t������|�7����M�����h��.���<���O���W��}0�m����6�t��46��w��2��0���}��r��k���|���o���,���� �"��G�v?��=��0�&��	H��TfH������E��k����H��u�o���]�#�~G����C�S�����r�V�Z&��	�
�X�5���)�N��i�U���58�#����d<�(���1��1�h�������U��������S�����B�����UK!w#���:�o���^��f����l��V��V����#��o�D�J��X����>�@����G�2�T��-5�X�������JX���h�Z�t����� X����J�v��9� ����b����m�E��D�����A{��+����?�V��S�������8J�iG��������|����N�]�������Y��	4��w���������6����h�T�F�R�$������}�f��L�i��}�i����Z ���k���O���:�S$��j�o����u[8{���W��Y����g��@���*������2�i����f�����(_}��Jw��9\r�f���3��S'�e�	X�h���������9�g���J�G��H�C�������6G�u�C�����v�u���H�%�z&���8�"��2u����B��c������6���Y�"����Dn�Z�W��g��mR�7��`�Q���?]��m������L�����\��_�W��e�m��������������(������-T���*j��I�P�����X m8�2�����|�K�3�\���X�m��
��v���������������I�W��,1)���x�����n��O�_���K���L��>����w�y����x���R���r���q��$����P����oJ�x�I�Z����-�WC��VG���������y�/"N�D����C��@��#�O�X����{������[�C�������_:���_�P�![�U��w�+����
?�o�G�,u��t��������0����;�Z:�������������.���0��~����E�Xl�N���<����C�=�!������7�h�����C�������79��D���9W��������o�M��-C
�����Zu���V���a���������%�B�(9���A�ox��)�O����E�&�����_��n�<�l���8�����N���q	I	������}�I�&��������y��O8����S�4<��nV�����������������	��2�r�G���s�&������(��\��6�A��g�����#r�~1��
�4�jz���y��}�+�E�k�vu��o��d�����h�-���������QD�����\��
�������5�;���k2���R�#�����������-�)�+�=���x����V|�����D�����k�b����x���������(�J��wg���h�������=c�`��F��G��`��X�������Iu�"��"���w���]o1L=�e����
�`�$�4��
K�����x������Y�/��a��(NO��#����`"����;�f����/�'�Y��� �w����4�W{��><����	�k��$`����5�,�����\�}�K��B���"���������{�W����v�a��&��`�����*�����c��o�0�������}����b���e6���Z�����j��7�:� ��r�[�����#����W�{�O�����+a!�k����x>�j�������`������\�Xt%8�(�:f�����$O]�@�6,����'�������'�-��>������������������y����������g_��zv4��|{��qs?L��$0�������B�R���@L�����	�
�����
.o�h���~�]w������������B6��������������������|v������������[_A<��FH����n�q�0105����m�s���������de��E�H�i�g�SS����;�=������tx��������/1��~������������������������6<J�I��������������TQfh"!�����7�:���������������������~~����`�c�����������������Z�Y�����+0�����b`����������GH��G�A���9�=�-/������������:'E�:�`�r���QA������F�9�
�����rd����������V@3�8�Z�N�.�*���}�G6EU���y���OJ�o�~AK�0����KY����84��br�������|=�D���xS��]�x���o���=�Y�R�����������������*H����x���|.������F3���O���Y������uL�)����&���}�����Z�G�c����X_F�
�E)�-�{�n����r���:�%LF��|���3��:���������\��,����*����v�v�B��d�<�������
���B��++��-�����'�!\��(�T-�'�z����#����o�
����tZ����+�h������c8u����
u����TWR9����\Q����a����I�+�y�G�
�������L��^K�x��*�,X|B>�����D��R�|���6����N����uQtf���x�u�E�>�R������|�h��j�2�� k�N�~1�0�p&@�w�r�b�C���x�������o:7�����<������e'b;��*�Yu2	��<������'�������D�<������`�0���������-�{1T����*[��d��2� �����=��Q6�E����ea��m����q/���_�H�K;����w���$H��2������3�;���G��D�+��?�>Kf�W���6��y�t�T�$�j=����'�������B�P����9�����_���-�8����'�Da���6
����A��qy���������~�����&��m�$vlo�1y����T�Y���],��c��d/:�V�B��$���A�GK}�d����n���B�r�I���0�'���)�_W�r�������K�����b��{���|����4
��=���J�F.���u%�66L�K��d�:��U�>����sn��;��?����l�R����s������`��)����l������:��(���|�?�c�����m[8��{��@�������]���kQ��p+{=��R����6�|�e�����n��OB���8�n���%�s�'��S��9��������J�:��������������i�����,�d�T����
d�����������e�h���e�eU���U������lvY��������,���4"�C����'�b40�s�:��i?�r���%n�0���������J�'\@h�-�R��K�)D�:�{�\�+������R�P�r�#/�0"�e�����!H��5��k�c��Y��������w�C�����s��n��'r���Q�
�"������~��vA���������+��4�[�h������D�����l/�c�8�w��^�z������������
�����+��@����y�-�)�4l7�x���[���������������C���.W��-��<�N��ER�}���b���`�(���y��e��'�������:�����D�_�����oD�N�
�e�#5�z��'Bo�������@���|��e�K�z�(���{�(�:�}��[����_��F"�����R� �}0�[�S���&���>��{�G���y�g��Lc��Y�����Y��������4?�k�l�����]�XY�1���1��4����O�����������q�`��8���y�_�J�����(������8Vh\����J�D��`��
��+��W�������e�����h����������E���EC{���7�=~��F������_������X,
�/����p��;�����
^��&N|�����Y���W���E�����g�%���N�j���;���8��~k��,`��O���A���+������]��d�6���a�r��4�o��y�������C��r���iy�����C�Y�����
�3�H�m���������I�k\�\h���.�:�����
�:�$v��3��������$���������0�Z��!���l�!�������������8	��������o�O	�U��)��O=����g����n�I����U�j�{������V����0��u��,>�J�n�w���Mf���;�9�)?K�!������4�U�D�x�
���������-���G����7����mJ��y����@��=8�������db���z�F���������K�+����V����������{�	h��'����Gv���G�vL�XrO���H���������-�J���0����_�W�����9L�����������0��^k�������[#����������Z�
h���
	��������'<�b�9����F[���������&�Sp�O���N�Yt�������`��yuC8~���[�X� $�����qqZ�j��������
SD&����	*�$�@�\����GJ��+D��Tb�H9���-���J�
��i�������h���l�%�0p�����*OnU�I����S��Q���[��������,�w�b�i��A�<��r�������$�rX�@�?���������\�������z?	�f#p�����i�>���<�P����%���c���=�����ME*+��������C�s�p����>�<�L�hY���f�p����WTbl��������4�0����$���h������S����<�?*�w������������U�Z��������0�z���%�2������T,�	���H�������F�����e����[�D�:���K�9�9���C������-M���W���d�>9���m���
�2�^qy�D����'�}���@�y�Sz��2�%�Sh9��
��������U�?�s���u���a��<����J���T�����G��U��J��~��i<G��GAt��L����d�s��`�`��� ������J�� ����p?��,����
������U�u_n��A�)��,����HCf���P�������D����������Z�x0r���R����OD���|��P�����c3���7-�%D��_��` ���~���������_�e�����	�:�
��������!:���{��A>�y��K�i������j��O�~��H@0����)�@�����P��^���[��W������x�`���X�!��M���
�E������i�=�<I4w��'e���S��*i������.!���3��$�|�s�~��/E���������]?L�k����L����s���:/�C���y�PH�f����X�����YS����x-����w���0��E�-�"������d>���L������z�Y���(*�M��2���Q�������	�)�������8�&0)�������������m�&�C��7�l�
����K�2B�������y�{�Q=�����B��&�@
�	r0�`���������c�����������1����~�&7��`�	2��~���������T������2����9+�8��9�����W&s����w�8�X����4�9���F���j�rGL�&�|�����w�c�����~��m�h��,`F���d�.���I����hyn��R���-s�#��$�h�>����:�&�9�������'������!�����_�������R���z/k%�����1����+QB?��r��CF&���������YuY�Eo����������o4�a��.�b
�(���h��rQy�%�{r�������Q�����%�+����1��KR��+�i��:H>]����I�#����������[���]��\0���E��v�s?������1�b�x���?���~����}���?i������������������c�n���%,��Z�M���i�
���������F���g��1�{�3��������j���������7Hn����������:gm���;Y[v��������|���t������~�a���k�D&���:$*o�e�n�g���������m�h�5.4��d�A�����{�D������tB������>>�����������>�g�:GdD�]���������o>�����a����y4u,�L� �6������,q���H~�����e�e���#F����������8���A��b�����O���9�����(��p��0��F�V���{���8[����Q��4���D�B���/�������������_R��������*��e#�����W�'��K��Y�c�������������w���|���p�g~�������I�OZ�����<1F��|o�������;������=�����d�2;��5������sV(�u�����������9��1��r������Z�*�m�-�S�d��������������$���>SD�C"G��W�����>�����"��;����:���u�9����c��6�7���!����������\���������T�5^�4������������9�m�:����f�F9��%�x�;���+�7f�<������q��#��k;�����������
q�<�5����$����������>=[ ��G����8��%���:�2�"���!����������G-��Z���e�u�n�����T�V�i�N ao��O��~���X�\r�������i�!�4����Q[0;��: ����}�<�l��)���z�����`��H���C�f��Ar���3�
�v���'B8z����^�d$%������h�	����C�*��6�R1�y���S�`��^�������|�( ���m�������j�����T\���U����v���	!������R�q�����"�����kX9l�[
��`jq�������P�q���o�/�[��W��A�5�:m$����S$�O�J����^�H����P�	�N�e��9�A����x���s�[��q�_����������q�������C�&���������3������;�����-������Q:���+4�VL������B"��q�3��gK�v���,��z��e���f��#hp����V���wr���������b���;�|����9����s��q�R�a����n��
7�������[��!��9����vW�����������"�\0h�C��A���F��������a���'�(����Kh������� ��#J����P���j������@S��k��������#�p�L��B�G�?��L���T��g;��j�����q����������e�j�\�w�R��������]z
������(
$��+y������3������8���������������������f���|���w����1���r�Z6k���� ,�J�^���7������^������=�h+��,_5�����"���(�i�j�����M�����m��gt������qy�5e��������2��z��������p���p@���bU���c���h�}����I����I�B��O����Q�������
��%�:T��e��x���j������O�(w�S��m���5�5�B�fv>���N���u^���E�������������?�%��(1?�%"��64�8C*�/���C���V+B�_����X�d�@������$����F;���]�e����fa�f�����S�gL�$���|�y�m��$p����`�J����3Ac�T���+�'���w���k�L����b�����z���Q����B�������	�������J�a����^3�4�j�B����X��ie���|
�����#��!�b������F��	|�I7>����hW�����#� �������9>���0������5#��4��V��!L�6������ns�����)������b�x�0����ba�����+�g�5��Z��$;���+����(������Q�4���_8��z�c���	X����/�K�@��p�F������'�i��nO����L�-a����91"E�����������c��4�����6�Ub������Md��`b6=k�b���A������U������m�y���3lO�z���1�
�&���-^��;�Q��W����$����!6SL���&���x�y�������h�F�n�������s���9��LH���K�#������t4���Z�
�o�-�yg]���5��#	p�����_�����H�\���o�������u�S	(�=I��BL���M����*�_��W�r����ko��6]o���z��:�������G�N�^����)��>�=������"|������l�1��+����S�����@�?f:�y�R��C�*��~�����@�s���t���&��`��y������J�K����9�^��a��������o��#Z>���XEp��u��^��������!x�E��G�����B�{����s��6��r�{��6�	�����K�w�0������y�r�D��z�!��x�����n�|5��b�_��k��c����+�R�Y����@��%8{z��R���^��!��-)����\���<���9v����N�`�i��(�-����t�:�KEr�����d����hOT�>����=��^�p��j(m�1�b��]
=u���<�}������������W.�]��������M>����
�q��8������������M��\�p����.��5���������/��Y���#���D�����f�;����������~��+g��%x�����-�h��i�5�������+��V��y���Z������6�LT����/&����]y��������|r�����t����9���I�zCv��������Q���������(��e��>�|�u��h��(�#���C�k���'���S���zy�O�#e��Yv�����7�u�k�����4���m`���9
���/�e�B�T�W����$��R��s_&����/�KP��������NEM=��Ci�I��o���r(���P��S!�������R�K�v���WW�;��bjX�����	�zo*�}hg1����������FN��,������$���C�������OX���n^C���;�a������]�k��W���uY���4*q�w�����1v�t��Gk��x��g������,���s:g�!�
��lm������ ���]���p�8�@:a
�0�b�*����� C�AT��b����.R����������~�|��0�p`��������i������s��D��&�������0�H%O(�=�b��8�B�>���k�>��q��
�����5�8���0=���Y������9���|�����i+�|'Om��.[��R�~��[��%��b��4����������>�b�V�������&�[���F
@�3�N�p���"�o�_�(��9�u7�0�F���'���f�6U�����D������G��������u~��%�����{�%~�\���w��qN��7�>��<�y��a�����������u�4��l)�Y��!�V���m��7��L���g�>!���&����VC�b�%�����
Y����eU.v��o�%������Z�2w�;�����rJ�1��i���g������t����������|.(!o�v���k�I���o��5���� �Y��;w[�P�%�q�j���K�d��
k
y@y�A�P�-���51t��-����@�kJ�
�~�*����U���&j�����������>���j�+�v����L�#����d�Z� �a�p��9p��7l�#����� �#���������Y zL���[������&��<��3�|�������P�[�����v���q�R���	���;������}�����OWn���-���f�~��������"�w�E�K��B�t���V+IR#k�����kS��0��D���!�>�QL���N����P���m���z�c}�c�P���a�T�}�K���%�����������U�������)�"�S����qx�����������U���-B (�����js�p��x�U�1���7�����x����R����������g�>�se�/D���=�G�������2�hy�������^��D�������X��m�:��x�La����h������9MF����1��	G������������N��St�������u����k�k������U�����Kd����������-L��.� ��x���:�D��R�WH.�w��������>;i���(��1��K��~��u�L�~�@�S�&�P�e��r��=o�z����8�D���&;�+|���l�%�V���@���*k�����~�x�+��S�q�C����9��N�<�����'����B����+����Cr�_����������"���-��"�����W1����p����6����~d�#�1D^�$��������6��2D5��}�
�`���������C������4�I�/�����t�	h����QV�lf����������.�;�CZ�i(�����E�>4��V�������[�����pUQ�b����� ������H���D�'� �c��);����K�9�$=�������5��6�@�����
���4�-����������
	����
��K��:�e�C�R�E����y��j������0��xJ��t���g����s�o�i�$B�G]��3�4�R������	��
�<�4n&�'���@��)b��nuM�������f��MV��.���8�M`���>�g���q�B��!x�[����+����� �������<�������T����}����0�G�)�2��fi�f�T���z��9��r}7���|�t���~-���l�$����h#	����P��y�#�fR�P}���X�6�1�7�~������z���`}��G��d�K�L�[y���)���^��������|A� ~
�����=�8�h���@������"�����j����N�8%�������j�	�U�u� "t�"��h�����l��_����f�Q��y��A��J]��.�������W�����!�S�{�������8��A�W����Ee��3��*��p��H���P�G�S��@����;�&1��f� �_�b��-� ��A�T�h�<�/��S�9w���������-j�h�C�����f���b�,�M�E�9�.�/�q�����T}���!��u������#���q�Q����\�3�4?�\��sQZ������������'��1�T�����b#���D��$���5����)����j���4=�18���S�Y�i1������p�����e�����Oj8n���J���!���c��@��������)����7�k�����f�{��	������.���z��@F�~��������S�P���;��
R�� ����v�����������> ����X������	US[����p��,�"���d�0�I:�R"m����m��J������&i{����������������"�z�������=��u���(�~����#4���`�1���0F�G��'�m�~>�������z����m���v�~�~R�G�z���a�H����{`���U��g�������b�.��������8�g���0������e<mK����?����i�Z�������i{���Z�:�Wc3�p����i�2�w����������s�� ��j���r�3��&�����B��������	�_��9C�;���q�N�����o�������W�M��]�v���f�^���A�G���P�u���w�Q�T�04������������&�����d�m���q���<�<R�I�W��$���8��@F��&�>����,��&����,������*
�R�|���8��v�Oi������b���l����A����������n�X�p�K��'V,�U���D-��eGO(-�����:1�g�L7O���7�Dc@������87��������yDg{�����{���U����d�����
��b����,�����y����(��P�����9���9kP=������y��jSg;(�g�,�l����|�>���2
������J�b��A��k�|��A�g�V����y����\�]�����0���"��w��l����)o�U�!8��d`.����z��L@��/���E�����u��j�p����{���^{��O���u}rO�v��b�;e�����������w>����2����Y���d
7��-����@������������������+������:@GoDf�������7���5d���Z�e�8�=��"b������NWKAN�1�>HqL�����1-���������B���y����������������6��������:<#�3��l.}G�E���<��OV'I��������KDjJ0�G���~���������������]`������������G;��Pt����������q�s�c�_�	���n�X���	��$8��~���'�$�'���	7����0-[���Ia����W�E���`G�c�T�&�������<������|z
���?G'�(m����z�����������%ht*��0
��Y�������B������x���	��G���C��[��������D=f����R�=�[����B�m��:����Y"q�������Vt��.�����r�J��NE��a���C�����%��,'���,��!q�M��&�-��$�F�2��)������[��z�����5�������W��|�'������L���N��� '�����(����x��v�V%y�����5��v�����4��J�7������z��F�0�[������w�}�,�k�������B��R��UL�_v����@������B��_��y���o�����?�%����������S�x�f�����m�����%�p�O�V�������`�R��D>�Ti���������*K��F���V��M�$������/���6�I���~�"��o����S���������H�*����\�����6���x� �#����<�P�����-VY��I�������HO��K�(��
�^�*�����lh��k����pQ��rn7������1�2�f��h8��p}*a����t�B���z���{�\�����Sa����������Z���������'/D��=�j�?��S)������������i�+_p��ya�s����m�a����`������'�]}�!�`�J�Wf�c��JN�������M���[����D�b��@��,h����x�3�����p��8Z������D�^���l��y�=����>��RJ�?.:�������Eu���/�_��T��ft������5�a�����GC����A���������)�4�K�Fr ��o����1�i�en�k�l��}W1���e�'���u���E�[�R�n�i�a���A�j�s��l��Z�v�O���hh��?��������$�o�����Y�����3�p����K��F�����3�h�O�*�������<9���OV�P���{]�7K�,��������z�e����`������jA	.�U����������*5�<��l�����}A�4^��"������d�V{��k�a�b���\�����������`�d��KW������G�Ku����Xu~�@������$8�WY,=L���2�0�3�<�Z,j�-�l���+z��y���W�Lf�*�mT������-�<�T�q9C���������G�w����8��� D~����G������Mds��8���pl�<��������p�����zq:�L��s�U����I�b�����9�����Q��������i����q�&���������_��j��J����.���CC�0�:�~����|�������k���B�&��-����0�J��+�������C���U���,�)u<�|������"����I�<��m=y�������s�@��l�0��m����X<�X�Q�y��
#��H�<C~�[�vN�������s��;�E�{�w�����a�q�|�,�F���i�Y��D�"���T!�������������U�X�3���
����eR��;��"�p�����Av�9��
�iC�i���F�����h����5~��j�yso�;����"]����`�`����W���� ��n��t����=������C���+TQ�3������i2>������/q���t$��4���: T�)�����G�|���s�������)��y��z4����r��@0��"����_�? m����`�I��������L��i����V�1�L�X����U�1�M�@��R��i��d�k�]��6����;h��m��K�#������	�l��5=� �����y��A�u�:�rw������l��$Y�OE�,��>������/����r��7h�.���x(����q���\�o�����2�n�m�	�����oJA4�s��A��}���*��F��e���O���%�}�����D�������7e������^�~��G�sb1���p��n��$+}������J*�@��L����m!��E\�'��5���lO�	q�@�������?�N������l������3�H�+F���YZM�/�w�7ty�����-���0_��}�P
����E����l�6/���������p����n�����R!��W���Q�/�������1F���{�H��������j�J����wc������,�����;�������z����=�v�����������>�b�c�O�W�������,�P6����������[�������[���n=�8���V���M��)yY��<�1��N�y`)�@��T�{������������fm��*��������F�����O���e;�|[�0�d���4�b���������2r��0U&��3�D3��B���>���K���~���A���.�2�Z���l�
E������z�r��������L��t��9r���A����2��o����K�\
�q����3���H�z�-���3�u�:�)fSM|�\�)�����������|���N����Z���������"	�������i�5����������S���A��gR����w�R����Kg4�^�-��@|�?��y���s�1����i���(�����;������J��������d�Q���N�,���2w����z�-	��C�K�_�{
����L�����s���_P~��_�o�h���9������+����_��O
�����`�o�X�����A�H�9���e�/(���v�!�����������=������2F-���������������__�>��q��������Ft����x�z�`
���'����I����4�y�l��J0����(,�3
��N�/
���m���)J�F�9�Q�7z����
�����y��>t����x��hS�"�����o���C�R�����������n�	�\�����,�l��������T�����=��:���X�O�2>=���7��S�����t��7��}��������v "���V����\�m���}���>�Z���E^�*�B��, �4�����)��1�@��$�M�}�U���T	��������@�������z�������������B�W���i�G���=����k� ���c�����W����=���g�lQ3z����WL��9�u!n}���o���
n�����`��x6��5���4w��)�Q��������� ��A��
�K������L���
�g~�����n��R��u�X.����-���b
�r�S�U�����)S����2�`r��`����Z�V���#;��6��t���1f�|w���}�W����g�_����W:W��8�v���$����������E0d��q�T���s��"��T����L��L��v/�#����]�����;������D�������(����}��1������R��!����\���&�����=��("���������������!�����@�����������:������J���s�f��h���p���r��y�t���F��b��_R�/�+���;���W����<��������
�f�	��+��(��_���O�}������$������f�]��LM;���D�c���	������t�T�Z�����������������B(/F�7�"����:����������^���G�Pnj��o���m�9�,x���s�v�5������;p����{����� ���x���������teG��`�E!���^��������6����������L~�����&�4�����r���=��������2����^8��Y��eK�z��������9>��P��!P����e�a��3m��IF<;�����m��,w�s��4J������Y����d�P�w����`���f<��P�O��>��,�S�#��f��l�"8dGC7�����E�M�{������������H�;���� o��~��x�����������(�_�'�j������~���Z�4�5����Gd�W�f��
3���T��
����8"�G�S�$U���(��3�����������������L�G���Q�c�����J�#_�����*�����������g���^��=��C��%�~��?������3�7��OD����_n�[��rv���+��Z��������A���Z����jA������X��[d	n��������� ��I��!��^�9R��l���������������;H6���b�T�x��"�s���q��E0�������P���"�����9���s���qc���N�m]iL"�B�z%������$�M����������X��)zT���'�m�=PO�s�0*�n��$�B1�8�C�c����M���\ ��n�|�����o�	�
�@Vb�������S���������(	���c��U�@��������N��``������w�)���'���q����+&c,24q�7�u�[���=VA�������W�H�������bh���CaY�N�t���4��v�9\��p���i�t���t�B�Y�	�~A8��F�F���
������ K0i]����F�?�=�4�_�V���
y~��5�;�6@&L�U�(<��j��������q�.<����������������:B������
��3�I�������0On�?�c���x������F����
�
D���a����
�,�Q������y�R�g�����v���������cdj�g�����S�L������p�b���7'������
��5�'���MD��L�C���c�]���w�r�m�h�����
,%���������s�l�����vm��������E>xq
�|��:9����������8>������
���������my����$��������
�������������������������NK����������JL����������U�Z�����IOLR��mr��������JM��OQ����B�B���������SR+�*�! ������������/0�� "~���!$v�y�������������9:��9�8�������������A<��V�P�	/(C<����OH����������������~�{���:�8����a_<:��HG�������������BA����������
	������ef����km������#'����W�\��X_�����������w��#�+� ����������KP������gjR�U���36��Y�]����������!�&�������������N�T���s�y�����38��2�6�����������-.j�j�VU��������A?��~�}�54��P�O�H�H���������a�c�MOV�W�������������������d�d���"�"�D�D�uv��h�i�`�b����������15�����!������kr~��������$+������c�i����HM��	
��1�4���IL������-�/���R�S�~��
VX�����������������ps��-0����s�u�������HI[Z����^\[Yv�s�]�Y�����c�_���0,������($��������KI������21����@A;<��S�T���������I�K���������������#"��A�>�i�e���zu&!��:4UOC�=�5�0���4�/�������P�M�1�.�PMSQNLN�L�" U�R�D�B�]�[�^�\�a^WTda51(�%�c�`�nj���C�?���wt��)�'���������������LO��������x��6>������v�������$dm��������em��+0"�'�#�'�`c4702nn����b�b���������ba10��QP����F�C�����������������������QNz�z�f�d�NM����
��������ec����*(���������������3.��MJ����&�%�^�a���OT��5= ��������
~���������"�%���������!*F�?�H�R���0�0�]�`���1+�������������� )���	7�6�G�Q�D�8�;K����KMg�k�����n�q�������%����V�b�]W�������� @������������rf����=4����!#f^����x������:�>��������V�e�W^��]��Q#.�Y���RU0�I�����:	����O;����7L����or���)�F�!y�G��#������w~T'�b�'-��&�l�����e���L�8Z��6�|�D2�����������b���8�������b8��J�����,0���?��8��EJE�����O�g�B����#��q�������1�r����H������
���QO�u1�����}������M�����-�����
�
6�:�����������D��h����H7��9�[�0����|���g��[bG+���`���C�:V����T�&�?�����p�������1�������u�A���(�5P���0���������9��Y�'�!���������6�%�b��W��"���N?J��������(]����Xh����G�4Q|����*S��2�:�b-�������������2��L5�-���M������H�H�AJ�����@�T���9������P���!�������'�()��<^���
���C?�����������/{��d��I��3���#D���.F���Z����"acA��o�e0�U�!������������z�!B8��4����2��������9�i���'?M�����4�
�p��E���Im?d(���E:=��/�*�b���l�!�~�a��{�:�d�_����F��C�,����0��jG�����n���(!��c��ry�x��w5|�������s��q��1U�gD���������v�y����u�_���>�E���Z�+�?�����`�n�`����p	�	������*��;��$��N9$���hV�����p4p����n���h����,7�T�o�����T�"l��Sy{�_���������\�~�WC�|T����)�b�Z�J�e������y4s��e��"��V*m��r~���_�	�K7�_��U�2���k����������_L���FU���?��,�Z�?�0����M���B���I�W���G�R�*c������V��B�����������u�o�&�����bax������g�
�
���5�T�&��������O�'���@��:Yz��d��~���������9�:���`vC��Ks�9����^���R�?�h�N.�B�>����"���������<��n���1����x�2�o�������=����R�:�����P���m�+�.�_>3=�������!/�
��_��TI �Cx�p�>��������2���[�T;U\u����7��#��t�U�z�p����v�����������]0��G(������������������\���l��G~���R���e���������n�dx�_��7�{%��l�������������8��N3�o��T���#�Q�/�0�?D���[�d���
��A����A@�J���c���|�@�e�4�N��������g]�����W�~��C�����"��l	V{����	���E� 7������q
��/��c���o�8����.������qR�V�p��r*���6�����m�����H�����x�	��i�B�p�|�5��3�"���d�9����S��������jk��?������}�0���EA~�Y��,�����4�����5���]�%��=���5��q�������-�s�)z;����H"����-����u�=����r�*�d�0V����N*M������Wo�!7�0����V]�������}������@����_����V����@��'������F�4�S��$��L����	3��m���IM������:3�:=���D%=o���5�>�����+��������IJ��B�x������������^��������i�X����\������	���M���d��*��C�J���H�I�����������O��E����,�s�g��'��#�Q����0��h!������t�����P���<]��-�@Q�����F�[w(
�����]n�
s��x���N��Z���0�%�\��O���������D���C�!��-�2{�n�����'�)����e����c|%�����\�.�N�rp���
�j�H����f	CN�������0�������R!%���Y��n��,�r�Z'��7V�P���3~���6������GyV���v�7p#����������M��^��H�9<K���������w���sB��P�#x�P���4�����cXU����,����#`�v����;�e�0�vZ���W�*�|����}�����Sm� ��X����v�u���k�Y�����>1}�)����{����dV	��V�~��z�������C�h���M*��z��4���2������u�!��>Jt��p����X��S�����=�`� ���W���a����_[��	���>f�Y����D����>��8K���:��z���	R��J��r����1���"��M����t����o��(���*�b��%2=��������N�)������a��p�����y�4C��0)����!,����zf
���^�Z��#Y����h�d�4O7m�����.j����"��(������������eV���w���!I�9���1���* �������?V�|�����0.R�����������v��?,����5���\�u�b���!���������C&���*�����������E=]R~�t6�������=,��������&������������������"����),�I���������$#

����������p���W`^�P�io
���������jp����JJ���������$�*�"��b�e�	=6!&������1�8���������2"�����>9q�u���a`����3-��������WV��� !����j�l���&%	�������������$
��[�W�JI������}x�����������\X����7�2�u�s���������mh������^Y����������������c_����
��*'/,fc��������a�]�����nk����YV��~�������&$&$����(&)'	����HF
b_4�1�������.,����'$=:��# ������a�^�����&#���jg2/>;��,)������������r�o���)%plA>���RO��o�l���������!qo��|�z�U�S�����-,ll22��hh0�1�����������D�G�OR&)��������������������.3X�\�����������vy������������.0)*���b�c�LM!"��������44JJ������������de,.()C�D�����24������������W[������/3����������Y�\�������������<?1�4������TW�����������;@��lr����Y`}�4�<�����������%t�~�����������T]7A��{�B�I�������	EH����kmrs��43O�N�T�S�5�5�! ����������������)(~�~�����
����LO��?�C�
9>i�n� �&�AG��������	7=�����������������������������
pr��e�f�'(�������PP��
����q�s���������DFGJNR-1����)-������{�	��������_c��AD�������5�6�TT��:9����~�����=9����
}x��)$��������B>74������B�A�! 		��WX�������q�s�QT������`c>A����
ad!#��������""�����������������TQ/-tq�����R�O�����VS������~{ ����! ('�����������44����������������u�t�A@������ "��������	LI>:���������~������v�s� �� ������*+MM������
,-������
����//XX��������@>42'$���������(&-*�����������77//������56��MNRTX�Y�������!AB�� ������������������-,������	�������75����&&������@A������������
,-[\��#$�� ����$$��������������������������������������'&�������GF55����������**�����������23����������+,""ssM�M�������y�x�))JI���������������;:����RR������/089:;UV
������������`a;<

��������������>>��
11UT����BB��/.*)��������" ������30��������.,����������������������������kkcc�����������+.������377<������������������
,-��%$A@������������
'#��
�������hg������
>?���������������������%%����'&����������������}�{�������BB��X�Y���k�m�x�{�HK}���"�����������������G�K�X\hl����
ps������ss������	KH��^Zt�p� ��pk������������Z�V���������mk|z��zy��=�=�����{�{��������m�o������su����������E�F�����f�g�a�a�kj%%dcHG��������XW43��{�z�'�&���������,,��������IJLNl�n�24	����������-1������GK��������[]
�������;;����wv����@=c_OJXT������@;��
mg������83����=9��(&Q�P�����bbFG��IK��OR��-1"&��26����	����-1����-0%'���������������������>>��������������z�{���cc-.����UW	������%)8<������ $��������76������JF���<5��0(
��
��]S��A7���������3-�|��*($#23����������

5>^�h�+6L�X���)������LW����������
dj16��&(��������]X
�������@78/
����
��������51	����������/0������

�����������?A��))��DD54/.�������������.+���������������
����������� ��#-1����������������

! 
	
����{�x�������2/,)

MJ����,*����������==������������������������12��������

�����������������23����EF������������PQ����
+-��&'�������������������3456�����������00		��
*)��
�����������.+�����������)&��

�������������*, "������ "�����������+.��+-��������PQ����..������������������������64�����������B@(&����������*)TT������cc��op�!"������mn�����������������##pppo

����43 ��������������?=QP�����.,����������56�����������������68�����������������57Z[++���������������������)(,+����������������������((??����))������*)

��������������	�������������������������������"#�������������

��
����������������������������
���


������������������������������

����������������������

�������	
��������	������������������������������%$�����������������������

��������������	��	
����
��������������������

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	������������������������������������������������������������������������������

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������		����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/fonts/raleway/Raleway-Bold.eot000064400000502104147361034410013107 0ustar00D����LP��[ P� �r�RalewayBoldVersion 4.026Raleway Bold FFTM�����|GDEF2�,����GPOS��k�\�GSUB���l�OS/2�gN�`cmap^-R���cvt ��)��fpgm��Z��gasp��glyf8�C�2� �head��,6hhea�d$hmtx�����locaN?��*@\maxp�\� nameB��JS,posta�1�a<#�prepO(�(���r�_<����^#�+tv�6�1h��O�6�1--in/��Qe��XK�X^27��P [NONE�
����� �� 
`2M�3W�=�%z"#�(�=6"5Y3�/�:�:�:�f1�,4&.;*_.1\,M �EG �>=�"M*��J��JYJ>J� �JJ��JHJaJ�J�oJ��Jek�@�����s<R}<.I'�6�/>z=4�Wrz\=�=��.==<�=\=^z=z�=��j8&	G&�=*O=278�1VP'!3(.�Q+�MI+�(�#d;[:I+�<(�;���/�M�#�:F* �$�:s � �����������YJYJYJYJJ������J������4��@�@�@�@�\J.=>>>>>>�4WWWW��=������e\=^^^^^�6^j8j8j8j8&Y=&�>�>�>�4�4�4�4�J���YJWYJWYJWYJWYJW� z� z� z� z�J\=�\�������������3�"J�=	J=�����J.=.=HJ=<HJ=<HJ=<HJ�<R��X���J\=�J\=�J\=\���J\=�^�^�^=��J�=�J�=�J�=e�e�e�e�k�k����@j8�@j8�@j8�@j8�@j8�@j8G�&�s�s�s��$�^�@j8?J�Js3JMJB<�JJa=� z�^4J�Js� z�>����^�>�>YJWYJW���������^�^�J��J�=�@j8�@j8e�k��^�^�^�&���W�=�=��/��qqQ�<�=�=QH!�2"?�n!//<!2M�!!22M=?!<2�&t=�YJYJ�L�eJ���L��L�O���J��L�JLYJ/]'�O�O�L�aJ�J��LoJ�k��;����J�<�JJ��JxL�$�J�7>n06=�=xWX�e=e=:=S�=[=^P=z=4�&�e=%.Z=�=j�==@#:=1!WWg���=A��=�����GU=f��:=e=&O=�
.��'r�]�H	W�E�M�SzCL�=0��J)=0h]'��L?=�Jq=�-�qAJ�=�J=XJ�=b)j0�4k��&	���"�?���<A.�<7.�J\=|��$�J/X�S+=�o�J[=%TE�<.�TE�=�>�>���YJW�W�W/X]'�`$����Oe=�Oe=�^�]�]�$@#��&��&��&�<%.L�=�J�=@���	R)�"�S�zG�T�C�T�F���f���o�4�J��J�YJWYJWYJW� z�J\=�J\=�����HJ=<HJ=(aJ�=�J\=�J\=�J\=�^�^�^�^�J�=�J���e�e�e�e�e�k�k��@j8�@j8GGG�&s���=�>�>�>�>���>�>�>�>�>�>�>�>YJWYJWYJWYJWY*WYJWYJWYJW3�J�=�^�^�^�^�^�^�^�^�^�^�^�^�@j8�@j8�@j8�@j8�@j8�@j8�@j8�&�&�&�&Z����d�:�:[:�:�:�8�6�:�8�5�:�#�*kMZ:�(�=�=f#f:�6����"�� ��L �����"�� �: a ,]&OJ~(�%!� ho
� 	�k)R$�@EI:�S+=>&`#� �� ��=^t� 3 >j���:�(e�5�K�2�C3�=�8�?�aI
� �=5{z�=?z{_8d
'�QTDQ zDD�Dl �DD�RD�D�D�D� (D� RD&�<S�@A2!��
:>J]'�]'�\B6zX�j8j8j8.=&
\=�=�8�8�728��=4�4n%�*�+`)I!J9$_.3"\,_(�L �����"�� ��M �����"�� ��* �����"�� ��:/("j��2!!!��9
�����d
~~��������-37Y����$(.15����_cku�)/	!%+/7;IS[io{������       " & 0 3 : D p y � � � � � � � � � �!!! !"!&!.!T!^""""""""+"H"`"e%�����
 ����������*07Y����#&.15����bjr�$. $*.6:BLZ^lx������         & 0 2 9 D p t � � � � � � � � � �!!! !"!&!.!S![""""""""+"H"`"d%��������������������l�j�e�a�S�Q�N�-�����������������������|��
�����������������~�x�t�����������z�x�r�p�n�f�b�Z�X�U�O�N�F�C�?�>�<�;�:�7�.�-�(��������������������������u�s�j�i�f�_�;�5��������s�W�@�=�����
	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc��������������������������������Ztfgk\z�rm�xl����u��iy�����n~����ep�D��o]d���QRWXTU���<c|ab��[{VY^������������������s���|���@J������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSQPONMLKJIHGF(
	,�
C#Ce
-,�
C#C-,�C�Ce
-,�O+ �@QX!KRXED!!Y#!�@�%E�%Ead�cRXED!!YY-,�C�C-,KS#KQZX E�`D!!Y-,KTX E�`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,�CTX�F+!!!!Y-,�CTX�G+!!!Y-,�CTX�H+!!!!Y-,�CTX�I+!!!Y-,# �P��d�%TX�@�%TX�C�Y�O+Y#�b+#!#XeY-,�!T`C-,�!T`C-, G�C �b�cW#�b�cWZX� `fYH-,�%�%�%S�5#x�%�%`� c  �%#bPX�!�`#  �%#bRX#!�a�!#! YY���`� c#!-,�B�#�Q�@�SZX�� �TX�C`BY�$�QX� �@�TX�C`B�$�TX� C`BKKRX�C`BY�@���TX�C`BY�@��c��TX�C`BY�@c��TX�C`BY�&�QX�@c��TX�@C`BY�@c��TX��C`BY�(�QX�@c��TX��C`BYYYYYYY�CTX@
@@	@
�CTX�@�	�
��CRX�@���	@��CRX�@��	@���CRX�@��	@�@�	YYY�@���U�@c��UZX�
�
YYYBBBBB-,E�N+#�O+ �@QX!KQX�%E�N+`Y#KQX�%E d�c�@SX�N+`!Y!YYD-, �P X#e#Y��pE�CK�CQZX�@�O+Y#�a&`+�X�C�Y#XeY#:-,�%Ic#F`�O+#�%�%I�%cV `�b`+�% F�F`� ca:-,��%�%>>��
#eB�#B�%�%??��#eB�#B��CTXE#E i�c#b  �@PXgfYa� c�@#a�#B�B!!Y-, E�N+D-,KQ�@O+P[X E�N+ ��D �@&aca�N+D!#!�E�N+ �#DDY-,KQ�@O+P[XE ��@ac`#!EY�N+D-,#E �E#a d�@Q�% �S#�@QZZ�@O+TZX�d#d#SX�@@�a ca cY�Yc�N+`D-,-,-,�
C#Ce
-,�
C#C-,�%cf�%� b`#b-,�%c� `f�%� b`#b-,�%cg�%� b`#b-,�%cf� `�%� b`#b-,#J�N+-,#J�N+-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-, �%J�N+�;-, �%J�N+�;-,�%�%��g+�;-,�%�%��h+�;-,�%F�%F`�%.�%�%�& �PX!�j�lY+�%F�%F`a��b � #:# #:-,�%G�%G`�%G��ca�%�%Ic#�%J��c Xb!Y�&F`�F�F`� ca-,�&�%�%�&�n+ � #:# #:-,# �TX!�%�N+��P `Y `` �QX!! �QX! fa�@#a�%P�%�%PZX �%a�SX!�Y!Y�TX fae#!!!�YYY�N+-,�%�%J�SX���#��Y�%F fa �&�&I�&�&�p+#ae� ` fa� ae-,�%F � �PX!�N+E#!Yae�%;-,�& �b �c�#a �]`+�%�� 9�X�]�&cV`+#!  F �N+#a#! � I�N+Y;-,�]�	%cV`+�%�%�&�m+�]%`+�%�%�%�%�o+�]�&cV`+ �RX�P+�%�%�%�%�%�q+�8�R�%�RZX�%�%I�%�%I` �@RX!�RX �TX�%�%�%�%I�8�%�%�%�%I�8YYYYY!!!!!-,�]�%cV`+�%�%�%�%�%�%�	%�%�n+�8�%�%�&�m+�%�%�&�m+�P+�%�%�%�q+�%�%�%�8 �%�%�%�q+`�%�%�%e�8�%�%` �@SX!�@a#�@a#���PX�@`#�@`#YY�%�%�&�8�%�%��8 �RX�%�%I�%�%I` �@RX!�RX�%�%�%�%�%�%I�8�%�%�%�%�
%�
%�%�q+�8�%�%�%�%�%�q+�8�%�%����8YYY!!!!!!!!-,�%�%��%�%� �PX!�e�hY+d�%�%�%�%I  c�% cQ�%T[X!!#! c�% ca �S+�c�%�%��%�&J�PXeY�& F#F�& F#F��#H�#H �#H�#H �#H�#H#�#8�	#8��Y-,#
�c#�c`d�@cPX�8<Y-,�%�	%�	%�&�v+#�TXY�%�&�w+�%�&�%�&�v+�TXY�w+-,�%�
%�
%�&�v+��TXY�%�&�w+�%�&�%�&�v+�w+-,�%�
%�
%�&�v+���%�&�w+�%�&�%�&�v+�TXY�w+-,�%�%�%�	&�v+�&�&�%�&�w+�%�&�%�&�v+�w+-,�%�%J�%�%J�%�&J�&�&J�&c��ca-,�]%`+�&�&�
%9�%9�
%�
%�	%�|+�P�%�%�
%�|+�PTX�%�%��%�%�
%�	%��%�%�%�%��%�%�%����v+�%�%�%�
%�w+�
%�%�%����v+�%�%�
%�%�w+Y�
%F�
%F`�%F�%F`�%�%�%�%�& �PX!�j�lY+�%�%�	%�	%�	& �PX!�j�lY+#�
%F�
%F`a� c#�%F�%F`a� c�%TXY�
& �%:�&�&�& �:�&TXY�& �%:��# #:-,#�TX�@�@�Y��TX�@�@�Y�}+-,��
��TX�@�@�Y�}+-,�TX�@�@�Y
�}+-,�&�&
�&�&
�}+-, F#F�
C�C�c#ba-,�	+�%.�%}Ű%�%�% �PX!�j�lY+�%�%�% �PX!�j�lY+�%�%�%�
%�o+�%�%�& �PX!�f�hY+�%�%�& �PX!�f�hY+TX}�%�%Ű%�%Ű&!�&!�&�%�%�&�o+Y�CTX}�%��+�%��+  ia�C#a�`` ia� a �&�&��8��a iaa�8!!!!Y-,KR�CSZX# <<!!Y-,#�%�%SX �%X<9Y�`���Y!!!-,�%G�%GT�  �`� �a��+-,�%G�%GT# �a# �&  �`�&��+����+-,�CTX�KS�&KQZX
8
!!Y!!!!Y-,��+X�KS�&KQZX
8
!!Y!!!!Y-, �CT�#�h#x!�C�^#y!�C#�  \X!!!��MY�� � �#�cVX�cVX!!!��0Y!Y��b \X!!!��Y#��b \X!!!��Y��a���#!-, �CT�#��#x!�C�w#y!�C��  \X!!!�gY�� � �#�cVX�cVX�&�[�&�&�&!!!!�8�#Y!Y�&#��b \X�\�Z#!#!�Y���b \X!!#!�Y�&�a���#!-@�?4>U>U=(�<(�;'�:'�9'�8&�7%�6%�5$�4$d3#�2#�1"�0"�/!�. �-�,�+�*�)�!� �����@�[@�[@�[@�[@�ZKUKUYY
KUKUYY2UK
UKU2UYp
YY?_����Y?O_�	dUdUYY_�@@���T+K��RK�	P[���%S���@QZ���UZ[X��Y���BK��SX�BY�CQX��YBs++++s+s++s+++++++++++++++++++++++++++++++++++++++++++++++�
�;�������+���
��'%(����J�222222Pj�6�0Rv�����Jx�:|��V���:�$b�� Ff���		:	R	z	�	�

`
�
�>\���0Hbr��
6
r
�H���"Hl��*v��8l���&Vz���$$>��P��08�@Vf��:z��Tdl������$6J�������� Zl~�����$6HZ���&8L���.>N^p���$6\����   Z l ~ � � � � � � � �!! !2!D!T!f!z!�""("8"J"\"n"�"�"�"�"�"�"�"�###&#:#L#^#p#�#�#�#�$$ $2$B$N$`$r$�$�$�$�$�$�$�%
%%.%B%V%b%v%�%�%�%�&&&&&:&L&^&p&�&�'''"'4'F'X'�(*(<(L(`(t(�(�(�(�(�(�(�(�)))").)@)L)t)�)�)�)�)�***,*@*R*d*p*|*�*�*�*�*�*�*�+++0+@+�+�+�+�,,$,�,�-^-j-v-�-�-�-�-�-�-�-�-�-�...*.�.�.�.�.�.�///,/</N/`/r/�/�/�/�/�/�/�000$060H0X0j0|0�0�0�0�0�0�1
1"1:1R1j1�1�1�1�222"2*2>2^2~2�2�2�2�2�2�2�2�2�333<3D3X3l3�3�3�3�444D4r4�4�4�4�55&565N5d5�5�5�5�5�66b6�6�6�6�7<7N7�7�7�7�7�88L8�8�8�8�8�8�99929j9r9�::$:6:`:�:�:�:�:�:�:�:�;;T;\;�;�;�;�<4<p<�<�=<=x=�=�>>(>\>d>�>�???B?l?�?�?�?�?�?�@@2@�@�@�@�AA*A^A�A�BBXB�B�B�CCCXC`ChCtC|C�DD<DND`DpD�D�E
E@ErEzE�E�E�E�FF<FtF�GG(G@GdG�G�H
HVH�H�II<IpI�I�J
J>JpJ�J�J�J�K$KhK�L.L�L�M M4MHMPMpM�M�NN>NpN�N�N�N�OO<ODO�PP~P�P�QQQ^Q�Q�Q�Q�Q�Q�RR@RrR�R�R�R�R�R�R�R�R�S
SS"S*S<SNS`SrS�S�S�TT*T:TLT^TpT�T�UU0UBUTUfUxU�U�U�U�U�U�U�VVV*V<VzV�V�W<WnW�W�XHXTX`XhXpXxX�X�X�X�X�X�X�X�YY&Y<YPYdYxY�Y�Y�Y�Y�ZZZ*Z:ZFZZZfZzZ�Z�Z�Z�Z�Z�[[[&[8[L[`[t[�[�[�[�[�\\\2\J\^\r\�\�\�\�\�\�\�]].]F]b]~]�]�]�]�]�]�^^0^B^T^f^x^�^�^�^�^�^�^�_b_n_�_�_�_�_�_�_�```0`D`Z`v`�`�`�`�`�`�aaa,aHa\apa�a�a�a�a�a�a�bbb,b@bTbpb�b�b�b�b�b�ccc"c6cJc^crc�c�c�c�c�c�ddd0dBdTdddvd�d�d�d�d�d�d�e
ee.e@eRebete�e�e�e�e�e�e�fff"f2f2f2f2f2f2f2f2f:fJfZfjfrf�f�f�f�f�gg.gZg|g�hPhbhnh�h�h�ii.iri�i�j<j�j�j�k0k|k�k�l6lLl�l�mVm~m�nn�oo�o�pp:p�p�q>q�q�q�r4rtr�r�sNs�s�t:t|t�u&u6uFuVufu�vv*vLvxv�v�v�v�wDwxw�w�x xFxnx�x�yyjy�zRz�{ {n{~{�|$|p|�|�|�}}P}|}�~(~`~�~�6R�����(�N�n���ށ*�`���ʁ���F�l�����ڂ��J�R�Z�b�n�v�Ą��X�������Ƅ΄��:���܆�L�l�t�|���؇�F���ވ�N�����*�~�����������������ƉΊ�6�t����*�x����:�z����.�V�����d�����Ҏ��:�T�x�������Џ܏�����$�0�H2.�%#!"&543!24#!"3!27.!�@�4��

a�i4�
���8��
��iW��@
rr++23/01353W����>����=�L���?3�20153353=r+r�����%��?@		?3?399//333333333301#3##7##7#537#537337337#�� ��.l/x-l.p�!z�/l0x.l/z�� w!��d����d�^����牉"��S/>@@ .26:!
::++!!	?3/33332?3/33333901%3#773.#"#".'732654.'.54>32 CC	09CC�%5> 89$H6Fg7*J_45ka)=	.AO(8:.S7DZ,FvH2YN@��#���
t*&"1OA9Q2)w	&# $/H6Ic3$#����/?E)@@EE8((0 	rCBBr+22/32/3+22/32/301".54>32'2>54.#"".54>32'2>54.#"		�.J--J..K,,K.    �.J--J..K,,K. !! �%=����)E**E((E**E)C&&&'�(E*+D))D**E)C&&'&
IV6����(����<@,;	$	r3	r?+2+2901!.54>3232>53#".54>7>54&#"��*33Y72U6/N1$;! 9#+Q@%m:b|CIl;4P(,< %!+&�b-A63M*#F4/L@,10*MlC_�g6;`88TA''!-)�W=�����?�0153=r���"����
//01467."V?f+)E6b)E([e�j+Rgn3P�]1?������//01'>54.'7(D*b7D)*g>V[C��?1]�P3ngR+j�3�%� @
		�?�2923017'7'37'K/GIGHF/4-.G:MM:G"KK/�v
�	/3333301##5#5353vgyggy�lqqlqq:������/�99017#53I*t)sw��w:�iO�/20175!:/�yy:��
�r+201353:n�����rr++01	#�����:�1��5U�r
r+2+201#".54>324.#"32>5CuJJuCCuJJuC�8$%88%$7 %X�NN�XX�OO�X6Q..Q66P..Q,�;@
rr+23+22/301%!53#52>73�j�	&0033%�yyy/} 	�>&E)@
r'r+2+2990134>7>54.#"'>32!&#=/)>+()#U/AO-D`3(/2&1-H>7!!b!+L3#6) y�m@.@'r/3+29/3301%#"&'732654&+532654.#"'>32}*>#@uOLu'LI5=@JK=E--JTI_4Dg: 9�1L.>\31/_ %1148d8*$*&^-,P5'F/��;

@
		r/+9/9333015!533#358��O[XX�ܭ�w��Sx�
��k;"@
r/2+29/301"&'732>54.#"#!#>32M| MT-$7 4!!9uR^�
."Cj<Dv�B9P'.6##4�z�:gCGm<.��7�.@'
r/3+9/3301%4.#">327.#"32>".54>327ApG!:,$B-,LM'qCT|C@uPJuE��"<$#<$$;$$<�Ck?#@[0+%T6:[��f�NBpA%=$$;##;$$=%��2G�r+2/01!5!#_������z�:,��0�!3C@''88@0
r+2/39/39901%#".54>7.54>324.#"32>32>54.#"0GvFGuE"3)*FS)(TF+)4 �$, 7"#+ 8"�/--.�Bb7:eA(A/
(4/J32I05)0B!'0 '0A&%$% �f);.@
'r/3+29/30132>7#"&'32>54.#"%2#".54> AqE"9-
%A-,MM'rCT|C@uQIvD#<$$;$$<#$<DCk?$@[0+%T6:\��g�NBpA%=$$;##;$%<%E��
rr+2+2015353Emmmv������G���
@
	?3?3/3301537#53Hn`*u)v���w��w ���@	/3/3901% ���Z ������>�w��/3�20175!%5!>9��9�WW�WW=���@	/3/3901%57'5�Z���������"��$(@
&&%
r+2?33/0174>7>54.#"'>3253z
$!-*+. W?S-&J<$(5#lo� 90	+&$<):0J4 2' )"銊*�n[Uh)@^'1
fEL '�;/2�2|/3�22/339/3012#".'#"&54>324.#"'>3232>54.#"3267#".54>>=.#"326�J�i<!9+$'X3JO7W-(:2-)D%W0AJ!	".VuHFvU/,QrF/H%)Y,K�c9>j�|
<&0$0[1a�\:B;&&%O=7?$8G'?I"`4 '<=FwX0/VuECuX246d�TY�_2��	&$!
��
D@'	
		
	

rr++29/33399<<<<013#'##��B�A��bf�:��%��J��&@rr+2+29/3901%#!!24.+32>32>54.#�>i>��|2I'42=G�%��)�ٸ&#�<Q*�5S-3\^++�*��((����$@ 	r	
r+2�2+2�2014>32.#"32>7#"./Z�Sb�#j:B 4M47M.!D:q_v:L~[3hA}g=VEI(/*DT*/WC'0&A5J&?i�J��
@	rr++23013!2#4.+32>Jt�NV�k�2^CxxD^1�_�bl�XdEi;�,=kJ7�@


rr++29/3301%!!!!!7��+��yy�y�p�J'�	@rr++29/3013!!!!J�����y�p�� ���� &@#""
%r
r	r+++39/3201".54>32.#"3267#5!#qE{]44^~Jd�$ga9-J69L.6c+YO�r8c�MI�b8UFL58&BV03V@%86�`
e��J��@
	rr++9/32301#!#3!������B�:/����J���rr++0133J��:�����
r	r++301732>53#"&'&
B-'2	�4iW0L �	6V<t��P�`4J��@
	rr+2+2901333	#J�*���!��Z��R��u2^�J>��rr++30133!J�j��yJ�@	rr+2+2901!##33��M����ԓ��[�.�l��:J��	@r	r+2+29901#33#Ԋno�s�8�,�;����'@	#
r	r++2301".54>3232>54.#"yN[25]LMZ24]��5M12N45M03M4<g�DG�e;>h�DF�e:h.VC')EU+.UC')DTJY�
@rr++29/3013!2+32>54.+J-1R="8bC��(+��(DT,<lD�g5"%4����'+@

*r
r	r+++3301".54>32'2>54.#"73#yN[25]LMZ24]J2N45M03M45M#��=f�DG�e;>h�DF�e:z)EU+.VB()ET,.VB(���J��@
r
r+2+29/33013!2#'#32>54.+J:1S=!:'�����(+��(DT,-S>����g4 "3��G�2@*".r	r+2+29901.#"#".'732654.'.54>32�%5> 89$H6Fg7*J^55jb)=	.BN(8:.R8CZ,EvH2YN*&"1OA9Q2)w	&# $/H6Ic3$]�@	rr++2301###5!]��OM��My@����@	
r	r++3201".5332>53wUwI"�(B12C'�#Kv9dEj��,SB&'BS+j��I�a7��@	rr++29013#���������"�:��$@
r

r+2+2/2/29013733##37=�QRzZɖ��w}|w���X����'�:*���������@
	r	r+2+29013#'#����������������^h��@rr++29013#5�����������N�2���Q�	@	rr+23+23017!5!!!��%�����h�yh�yR��
��//32013#3R�??(k��kc��rr++01#����L�:�.�����//320153#53.@@�(k6k��'/"��r+2�2013#'�p�n��/��i&��6����/3015!6oyyy/I����/�9013/|7V�w��'8+@!66$/$r
rr+223+2+9/3330174>3254&#"'>32#"&/#".%>=.#"3269fB!D;:+N++4m<p}
()"f54S/F84C*:�3M*
26X""ph�m$,0+K
5
-%$=��\�'@rr
rr+2+++201"&'#3>32'2>54.#"g<^u�[=3T=!%BYZ 5'#=)5)$'
6/[��/6+Lb88bK)r*9+I,.} 
�� @		rr++2301".54>32.#"32>71@fH'C|UUz�8"&?$%>&+"�E]
+Mb6J{JJ<('G/.G)('>#��]�/@+!
rrrr++++332014>323#"&/#".5.#"32><jD:]�#$/c66[C%�
,62%(5'#L{H9,*��m$!14*Jc
}.,:  9*
!��B%!@i"	rr+2+29/]3901".54>32!3267!.#"0?fH'C}UVzA�k'=#(G
sG`�%<%$;%
+Ka6K|KK{G(<'  (>#:(;!!;��@
	r
r++2|?333013#5354>32.#"3#]EE+O5 A ("$���f A_4e0.%f�v�!>"6!@#-
rr
rr++++33301".54>3253#"&'732>='2>75.#"
4W?"$AY6=\uK�TUv*I[3+G+_("+52$'5)J`69bK)7.\�
No;94G%*A3B-1k!}./9 8*=$�@	rr
r+2++29901!#4&#"#3>32$�/)6+
��d;3@$&=<1 ����28#;I'=���
??�2013353=�����U�����<���
r/2+�201"&'732>5353%D: �1Q��[
��8X0��=2�@
	rr
r+2++901!'#373��G��ӎ���F��F���<��@��rr++20133267#"&5<�"
H?E��$f
C>=k$%@rr

r+22++293301!#4&#"#4&#"#3>32>32k�+&'G�+&'G�ydAAI
 c>1="
&>;=1��&?:<1��a37@/69#;J&=$@	rr
r+2++29901!#4&#"#3>32$�,'7,
�y>Q-1?!
&?:1 ��a"/#;J&��A#@	 
rr++2301".54>3232>54.#"/@fG&&Gf@@eH%%Gf�$>'&>%%>&'>$
+Lb67bL++Lb76bL+.G()G.-H()G=�+\'"@$#rrrr+2+++2901"&'#3>32'2>54.#"w=]�u\;5YB%;gp2%(5'$)6
7/���Z.5*Ka8L|Ir-9!8+
 {0�+=&"@rr

rr+2+29++01".54>3253#'2>75.#"2T>!%BZ4<\u�<F/'%*3&$@
+Jd89bJ)7-[�1fr'|&-9 +F*=u@
r
r++?33301"#3>7:u=`�{V0�/,��p6>���+@
rr+2+29901"&'732654.'.54>32.#"�Cz,0/[*'/1#:N'5_@8d)6(H%%+?W,r
,+W&$
$7+4K*#'U

&70NX��w�@

rr+2+2�3301%#".5#53533#3267w07%>%EE�nn(9.-g��g�8��B@
r
rr+2+2+299017332>73#"&/#"&8�,+3+�$-#nBQT�H��<=* E��m!*57i	@	r
r++2901333������n���F @	

r
r+2+2229013#'#37'373��pXVq�~�=[o67o[>�����t�ࠠ�@

r
r+2+2901?3#/#�n
m����q	p������������@	
r+2?3990132>733#"&'H
ϋ�|��1I- f1,�}���#9!�	@	
rr+23+23017!5!!!!�����$�JR\^R��^*����//33013#"&=4&'52>=46;�7�
�y�#
%�k�%^�kO�~��//013Or���w2����//33015323+535467.=2�
�7yk�^%�k�%
#�8�h�
�	/33�220174>3232>53#".#"8 5($96J!7)$;4	�+/"(1#V����
�
?/�201##5܆����>���'��+�)'@%%

$$?3/333?3/333015.54>753.'>7#3W@#7jL<Fr �.$�NW#�,%
xo0L[0DtOqqD?(��(-=nz ;,
(*33����:'@%::(77,3	rr+2+29/3232/3301!!>54.54>32.#">323267#".#"9y��$/ 7^9<n%FN%&&%-,#!>=> F }e�=@%A?@#2Q/81R",&59D(89 	d
	.p�7"2�'//3/301>327'#"&''7&5467'732>54.#"�65E7DE2H6 7I1ED6S+))+�G7C77D2D
E2E0:6E7�././��.@

r
?+29/93�22333013#3##5#535'#5333�Ix$�����"xJ������WCW��W AW4��VQ�~��//9/�01##�rrr�v���v�+����?R!@F=I@MP8 
1'r/3+2901%#".'732>54.#.5467.54>32.#"%>54.#"&'�+DL#(D7)V<!)%B\1
9`:+D4%g	&&1#%L@&�� %#
		& 	�2&7L0!$R	.L3$	9'4V4&+1$'?/,b
��M\|��+���'L@
:2
rD(`	r+2�2+2�201".54>32'2>54.#"7".54>32.#"32>7�P�e88e�PR�h88h�REuY10XvFCtV0/WsM7[B$>\=Np
")!(#	<W6b�NM�a66a�MN�b65-RqDApT//ToB@pU/K#@U2,TC'D:'
",.
&!;$(S��#2+@*-!')$�@�?3�29/93332/301"&5463254&#"'632#"&/'2676=.#"�2FTB1"%&4EPNV
	B	'#!*!SA15B!%=/LJh
U"H'#.N�
$@
	/333/393301%-%#����$���� �mmgn�A�mmgn�;j#�
�/�301#5!5#r����ڮx:�"O�/20175!:��yy+���&6?%@?0446>'
r26`	r+2�2+2�29/3301".54>32'2>54.#"32#'##72654&+�R�e88e�RQ�f99f�QZ�U0VuEEsV..Vs]�)?$$gk\@_�!Z6b�NM�a66a�MN�b64O�ZApU//Tp@AqT0,C$3'
����#! ���<yh��(���	r+2�2014632#"&7327>54&'.#"(;+-::-+;K


q*99*0:<E

;�-@	/3�2/3333/0175!##5#5353;buxuuxll�kk�0"@B D?2�29014>7>54&#"'>32390?*/(/#32L/RT).!(��5G2
"!: G;"/
Nu0,@
&BD?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42Q('6
H<5"".=)(6��/I���M�,\!@ 	rrr+2+2+299/01332>73#"&/#".'#M�,.2,�%-2A$&	���<=* E��r$&3"��#��c�#@

r+233/39/33301463!####".7%#3#��&Fq3rEg8p5 7=33�y�d�N �� >pM.A%.RU��:����/�01753:n����7� �0@	

BD?33�22301#53#52>53�N '+Q�OO	O��$S����@�?3�201".54>32'32>54.#"�:T,,T::S-,T�'''(S4V12U44U21V4�//-/:.e�
$@

	/333/393301%57'5
57'5e���������߱ngmm�A�ngmm��� ��X�&'c*	� ��l�"392@76613&&%%1499 r+22/392/3/9/333/301!4>7>54&#"'>323#53#52>53		70=).'/"1
2J/OS(, (���N '+Qn=���5F3
#!
:!F<!/ 
N�NNP����IV6����������&'c�	F�+��$(@	$$''(
?3?33/0132>7#".54>7>57#5h"",++-"
W?S.%J<$'3#ln 9/	+'%<):0J4 2' )"銊����&&����/�01����&&����/�01����&&����/�01����&&�v��/�01����&&�l�
�/��01����&&����/�/301����-@


rr+23+99//333301!!!!!!5##������V�"�i�՟�y�y�y��)�����7��&(����J7�&*����/�01��J7�&*����/�01��J7�&*����/�01��J7�&*�a�
�/��01����&.�����/�01��J�&.�6��/�01����)�&.�����
/�01����&�&.����
�/��01��@rr+2+29/3015!!2#4.+32>E��t�NV�k�2^CxxD^13dd���_�bl�XdEi;�,=k��J��&3����/�01������&4����+
/�01������&4�#��(
/�01������&4����.
/�01������&4����(
/�01������&4���
�,(
/��014Y��&@
		/33/33392301%''7'77�TggSfbTbcSb�SggTfcSbcTc������&4��@����&:����/�01��@����&:���/�01��@����&:���� /�01��@����&:���
�/��01����&>����	/�01JH�@



rr++99//33012+#32>54.+f1S=!7cB����(,�F)CT,<lDnƀ��5"3�=���-@%		-r
r+/3+29/33017>54.+532>54.#"#4>32�>Q!3#$&:d@8X3'AJ.Of8u47"1x!
 .�

8W1(I3">+	fH9R3�����&F�e�</�01�����&F���9/�01�����&F�X�?/�01�����&F�5�9/�01�����&F�,
�=9/��01�����&F���KBB/�/301���7IR/@NR%C%%r)118r+223+299//332301".54>32>7.#"'632>32!3267#"&'726767.'.#"%.#"�3Q/9eA >:5*P+)hs>\!_:U{C�f)?%(G
sG`:Js$IQ!>34C)2%<&&=$
+L/2L+


,/UC&$"(K{I
(<'  (>#;1&0b
%	.%%�(<""<(���7&H������B�&J���)	/�01����B�&J���&	/�01����B�&J�v�,	/�01����B�&J�J
�*&	/��01����&����/�01��=	�&��'�/�01�����&����
/�01�����&���
�/��01��D�+3"@(/0.-12,3 ?3?9/9301#".54>32.'332>54.#"'?D)Ke<L|H%CW34[
*FgH�CcA�e#>'(>$$='(>$eo*q'q&s"FoN)@nE2VB%+#/YSO&#ew}t%;"$=$%9!";�=
@4?
B��=$�&S�b�/�01����A�&T���'
/�01����A�&T���$
/�01����A�&T�v�*
/�01����A�&T�T�$
/�01����A�&T�J
�($
/��0160�#@
		/3/333/2015353%5!�qqq�����������kk��A#'+/&@+-,*%&)(//
r''r+22/+22/901".54>32'2>54.#"77'7'73/@fG&&Gf@@eH%%Gf@&>%%>&'>$$>�g8IS1�7?AX
+Lb67bL++Lb76bL+r)G.-H()G..G(l)Vb$4 O��8��B�&Z���!/�01��8��B�&Z���/�01��8��B�&Z�t�$/�01��8��B�&Z�H
�"/��01����&^���/�01=�+>�'@rr
r#r+2+++201#"&'#3>324.#"32>>)H_6-:
��
93;^C#�8'*  '/#7eN."���%2Rd1+I,$�-:����&^�:
�/��01����&&����/�01�����&F�@�9/�01����&&����/�01�����&F�l�@/�01���8��&&�����8&F�>������&(�$��%/�01�����&H���!	/�01������&(����+/�01�����&H�w�'	/�01������&(���%/�01�����&H���!	/�01������&(����*/�01�����&H�w�&	/�01��J��&)����/�01�����&I*�2V+4��@rr+2+29/3015!!2#4.+32>E��t�NV�k�2^CxxD^13dd���_�bl�XdEi;�,=k��}�3(@ !/r
rr%r+2�2++2+29015!4>323#"&/#".5.#"32>T)��<jD:]�#$/c66[C%�
,62%(5'#UOO��L{H9,*��m$!14*Jc
}.,:  9*
!��J7�&*�u��/�01����B�&J�^�&	/�01��J7�&*����/�01����B�&J���-	/�01��J7�&*����/�01����B�&J���&	/�01��J�87�&*�X���8B&J����J7�&*����/�01����B�&J�v�+	/�01�� ����&,����-
/�01���!>�&L���=
/�01�� ����&,����.
/�01���!>�&L���>
/�01�� ����&,���'
/�01���!>�&L���7
/�01�� �+��&,���*��İV+4���!>�&L���;
/�01��J��&-����/�01��=$�&M����/�01��!@


r
r+2+29/33/3015!'#!#3!�2�����BLL��:/����$�@
	rr
r+2++2�299015!#4&#"#3>32)�/)6+
��d;3@$UOO��&=<1 ����28#;I'����K�&.�����/�01����<�&����
/�01����&�&.�����/�01�����&����/�01���&.�����/�01�����&����/�01��3�8��&.����"�8��&N���V+4��J��&.� ��/�01=��r
r++0133=���J����&./��=�<��&NO������&/����	/�01�����<�&����/�01��J�+��&0�����ΰV+4��=�+2�&P�����ΰV+4=2@
	r
r+2+2901!'#373��H��ҏ���G������J>�&1�6��/�01��<��@�&Q�&��/�01��J�+>�&1���	��ΰV+4��<�+@�&Q�E���ӰV+4��J>�&19��<����&Q��V+4��J>�&1{3Y��<��|�&Q{���V+4��G�	@
rr+22/3+2/3017'%3!!M!��j�I�I�<��y����X�@
	rr+23+22301'%33267#"&5!"1"��!
H?E
H�H��$f
C>��J��&3�%��
/�01��=$�&S���/�01��J�+��&3��
��ΰV+4��=�+$&S�����ΰV+4��J��&3����/�01��=$�&S���/�01����$�&S,�.�/�01J�<��@
rr++2/3901#33#"&'732>=Ԋjf�1T1%E: �=�4�28T/[
*=�<#%@rr
r/2+++29901"&'732>54&#"#3>32n&D9 ,'7,
�y>Q-1?!1R�[
4?:1 ��a"/#;J&��8X0������&4����(
/�01����A�&T�^�$
/�01������&4����/
/�01����A�&T���+
/�01������&4���
�,(
/��01����A�&T��
�($
/��01���2%@r)r	rr+2+2+29/3+201%!5#".54>325!!!!2>54.#"� ?L+K|Z03\{I,K=����0J23J./J24Jyyi 1<g�DG�e;1hy�y�)EU,.UB()ET,.VB(���*:C%@C?3r##+r+223+2239/301".54>32>32!3267#".''2>54.#"%.#"-N|GG|N-M>&hDNyF�l'?&*G
oI_6)KBAG('>$$=('>$#?M'<%%;$
GzNN{G7'==D{P
%=$*  )?!5&'5r)G-.G))H.-F)�(<""<(��J��&7����/�01��=u�&W��/�01��J�+��&7�����ΰV+4��=�+u&W����ΰV+4��J��&7����!/�01��=u�&W��/�01����G�&8����3./�01������&X���,/�01����G�&8����9./�01������&X�F�2/�01���7G�&8�����7�&X�]����G�&8����8./�01������&X�F�1/�01���7]�&9�����7w�&Y�@��]�&9����
/�01������&Y�i�@		

rr++9/333015!###5!I�.��O#KK*��My��x�@

r+2?�3333/30175!#".5#53533#3267 %307%>%EE�nn(�PP�9.-g��g���@����&:����/�01��8��B�&Z�Q�/�01��@����&:����/�01��8��B�&Z�\�/�01��@����&:����!/�01��8��B�&Z���%/�01��@����&:����,##/�/301��8��B�&Z���0''/�/301��@����&:���
�/��01��8��B�&Z��
�"/��01��@�;��&:����8�8B&Z�b���&<�U��/�01��F�&\���/�01����&>����/�01����&^�f	�/�01����&>�e�
�
	/��01��Q�&?����
/�01����&_���
/�01��Q�&?����
/�01����&_���
/�01��Q�&?����/�01����&_�A�/�01���� )@&&r!	r+2+29/301".5467!.#"'>32'2>7!qO]2#6C%&E3
�\zFM}\11[~M4S4�y7W;d}A
+G21!/8R/<eDH�e<y-P43P.�<�&@
"r/2+29/33301"&'732>5#5354>32.#"3#�%E: DD+O5 B)"$��2R�[
vgAA_4e0.Fg��6T/�����&4����(#V+4����Ad&T�6���$ V+4��@��$&:�%��V+4��8���d&Z�����V+4J�	&3@r
	#""!& �%r+23��2923?33?3+201%!5!!)!2#4.+32>7#'���%�����`t�NV�k�2^CxxD^1�UUFk`kh�yh�y�_�bl�XdEi;�,=kr?? eeJ��
&3@#""!& �%rr?2+2+23��2923?33013!2#4.+32>!5!!!7#'Jt�NV�k�2^CxxD^1�!�����$�J�UUFk`k�_�bl�XdEi;�,=k�\^R��^�?? ee��U�/9@A@$0669
=<<;@:�?23r+r

!r+2??3+29+2��2923?33014>323#"&/#".5.#"32>!5!!!7#'<jD:]�#$/c66[C%�
,62%(5'#� �����$�K�UUFjajL{H9,*��m$!14*Jc
}.,:  9*
![\^R��^�?? ee��J����&1/H��J�<�&1OH��<�<�&QO=��J����&3/���J�<��&3O���=�<$�&SO\�� ����&,����,
/�01���!>�&L���<
/�01���>��&4�����8A&T����J�&)?���J��&)_�����U�&I_��� ����&,x��'
/�01���!=�&L�x��7
/�01��&Q@,
	

	

			!
?3333332??9/333//9<<<<01'733#'##4632#"&7"32654&rV6}�B�A��bf://:://:i#l�:��%���*11*(11T�����&F'������QKBB/�/3301������&����/�01������&��x�S/�01������&4&�#��,
/�01����A�&����0
/�01����&&���
�/��01�����&F�A
�<@/��01����&&����/�01�����&F�l�=/�01��J7�&*�w�
�/��01����B�&J�_
�)-	/��01��J7�&*����/�01����B�&J���*	/�01�����&.����
�/��01������&���
�/��01���&.�����/�01�����&����/�01������&4���
�+/
/��01����A�&T�_
�'+
/��01������&4����,
/�01����A�&T���(
/�01��J��&7�j�
�#/��01��u�&W�
�/��01��J��&7���� /�01��=u�&W�3�/�01��@����&:���
�!/��01��8��B�&Z�]
�!%/��01��@����&:����/�01��8��B�&Z���"/�01���+G�&8���6��ӰV+4���+�&X���/��ذV+4���+]�&9�����ΰV+4���+w�&Y�i���ӰV+4�����J&4'�����~�0�,,(
/��/�01����A�&T&�J�^��,�(($
/��/�01�����S&4'�������D�((
/�/�01����A�&T&�T�^��@�$$
/�/�01�����S&4'�
�����,@((
/�/�01����A�&T'���^��(�$$
/�/�01����&>�y��	/�01����&^�N�/�01���<��
r/+301"&'732>53
%E9 �2Q�[
��8X0��;%@""rr+2+29/301".'467!.#"'>32'2>7!)V{B�(<#)G
rF`:@fG'B{T%9%��'<
K|H
);'  (>#+Jb7J|Ka"<((<"��=���_��=���`��G���/I����/�901'73�V6}Iw5��
��/3�20152654&#52/::5//1*)15��
�
�/3�201"&5463"3�.;;.51)*1/��US����US��Q}��//01#�r�v�<yh��/3015!<,ySS=���
��/�0153=r#���=���
��/�01'3_"r���Q�~��//01#�r�v���!T'����2\�����5�����?�8��W����/22�2201".#"#4>3232>53+$J-!(%J/Z	*- (/"��!IZ��/I����/�3013/|7V�w/I����/2�01'73�V6}IwUS���/3�9330173'jajEUUuee ??W��@
�/2/2�22/01".#"#4>3232>53+$J-!(%J/Z	*- (/"<yh��/2015!<,ySS!T'�
�
�/3�2012673#"&53�"GI:9JH$�* :LL:,2\���/�01532y\~~M\|��/2�20153353MoQo\wwww�T��
�/3�201'>32'>54&#")1(+!"

�)+0%
5����	/3�2014632#"&7"32654&;./::/.;i�*11*)11U!IZ���/2�23301'73'73cB0hJA/iIw�wUS���/�2923017#'dUUEjaj�?? eeIL���/333�2013'3�i/B�h0B�w�w!T'�
��/3�201"#4632#.�$HJ9:IG"�,:LL: *G����/�99013#57�'q(�?TT?2�����/2�017267>732#*a3?�\!.+2�9����/�01532y�~~M�9|���/3320153353MoQo�wwww=�+�����/�9017#53I'q(�H^^H�7�
/3�201"&'732654&'7�>"-(49�G
%=,*9?�8���/3�2014673.?24*%&'$2;n"D+L&!�E'��
��
/3�2012673#"&53�"GI:9JH$* :LL:,<�]h���/3015!<,�SS2�WL�/30175!2%�PPy�@
rr+222+201!5!����pR���hh^���&��-#@"r,,r+223333+201353.54>323!5>54.#"&�0E&2]|HI|\3&F0���%;*5L//K6+;%fQf:D|a88a|D:fQff
7JS+)O@&&@O)+SJ7
f=�,L!#@ 
r
rrr++2+2+2901332>73#"&/#".'=�,.2,�%-2A$&���<=* E��r$&3"����o
@rr
r++233+201##5!#3267#"&5�K7`G=E��j�tt� f
C>��J7����J7�&�la�
�/��01����#!@rr	r+2++239/301"&'732654.#"##5!!>32�9"!5F%>'(V'��)��*`3In<�		k	9@+9��Quu�:iHpw��L�&�����/�01����'@
r	r+2+29/3901".54>32.#"!!32>7{O�\1.Z�Vd�$k:E!+E3��"7G)"F;qaw>i�DB~f<VEI(/0>$n(F40&A5J&����G�8��J��.����&�&.l���������/����&#@&		rr++29/3333015>?!32#!#%32>54.+%5#�~Lk75gJ���+AV*t&//(sw$V�z���7cDAd9M~s�i<u21L��'@rr++9/3333320133!332#!!%32>54.+L�%�~r|6fJ����s&00(r����ub@c84��p0.��@

rr+2+239/3013#5!!>32#54&#"����$U0r|�=E(LQuu�v�ϿCC����L��&�����
/�01��O��&�����
/�01��������&�|��/�01J�x}�@
rr/++223015#3!3#+� �݈���M�:�����&L��
@rr+2+29/3013!!32#'32>54.+L���wx4fNȵ(00-��w�p^?`7w-+��J��'L��rr++2013!!L����y���x��@

r+2/�23330132>?!3#5!!#&(�^y�R$��*\�i�������dh�^��J7�*�)@rr+22+229/3339901333333####���<�<Ϡ���>�?�pV��������+��+��'��7�-@' r	r+2+29/3901"&'732654.+532>54.#"'>320W�(gP6@?6)UV -1&6Nc(}]Jj;/3<AEvF?@&-8.-i((+#F;H-V=1U\=B[.O��	@	rr+2+29901333#O�X�������:����O��&���
/�01L��@r	r+2+29/39013333	##L�FӚ����D������+������@
	rr+2+2/301!##52>?!�$DgH%6%�Mx��i+w T�z�:��J�2��J��-������4L��@	rr++23013!#!L?����:M����JY�5������(��]�9������@	rr+2+299015326?33#�8
�昿����B7r#��|��5*�#-@-$?�223?�22301!5.54>753'>54.'\@rX35Zq=�=rY43Yr>2T13B�1T23B%@.RqDHqQ,66-QqGFpR-@��2W?/I31W>/H4������=J�y��@	rr/++233015!3!33[���^����M���<Z�@	rr++9/3201!#"&=332673�*@+||�AO#F�ny��?;;�:J��@
rr++332201333333J�يي��M��M�:J�y��@
	rr/++23333015!333333�ˊيي]����M��M�����@
rr++29/33013#5!32#'32>54.+��0�Om:8jL��)33+Tr�8eEDh:p 5!4!JN�@
rr++9/3323013332#'32>54.+3J��Om:8jL��)33+���8eEDh:p 5!4!���;L\�@
rr++9/33013332#'32>54.+L��Om97jL��(43+��8eEDh:p 5!4!$����)@% r		r+2+29/3901".'732>5!5!.#"'>32IDpTr6E'0N78��D66L1&D4m+�jS�Z/1]�)J2A!1%AU/&f%*N<#0#KDW<f�EH�e:J����&!@
rrr	r+2+++29/301".'##33>32'2>54.#"�X�Vl��mY�Uc�SV�_=U,.V;<T,-UJ�]����^�G[�lt�Sz=lEJi:<kFIk:7Z�@

rr+2+29/39013.54>3!##*#35#"7�BK<jG�H
��|z54mK?c9�:����-""/����F0��R�'@ 
	rr+2+29/301"&54>?>32'2654&#"B��"BeB��0H+hJFj;?yX>IH?'=$ =
��`�V69m:1M:19<jFKuBrK><L =+(>#=%@	%r
r+2+29/39013!2#'32>54.+532>54&+=$6C ').:.V;����!�$:!,B
?31?[T#=��r
r++2013!#=[�u�i��^@

r+2/�233301532>?!3#5!73##�Iu��AƎ
�5^I��i��&AB[9����BJD)@r
r+22+229/33399013'3353373#'##5#����)�,������,�*���������������+@%rr+2+29/3901"&'732654&+532>54&#"'>32�Tp l7)/3*)67'*#-eiF7W2!%018`<51%"S 618"@0"@D.2E#=(	@	
rr+2+29901333#=��z����Y��P����=(�&�f�
/�01=$@r	
r+2+29/390133373#'#=�-����+��������@
r


r+22/+2015>?!##&��� 9Tw5`K����=g�O"=�@
r
r+2+2901333##'=�����T���/��S����=@

r
r+2+29/30133353#5#=�Ԇ�����������AT=�r
r+2+2013!##=ֆ�����i��=�+\U����H�@	
rr+23+013#5!#��ӧ�uu�i�@rr+2+29901"&'7326?33�+'ԋ�|��8H�

j$%+	�}���0C$�+��$/%@r/
r%
rr++223+223+015#".54>;5332+3#";2>54.+1Su>?uR�Rv>>uS�&;"":�';!":'��IwEGwH��HwGEwI�@5(F--F''F--F(��]=��K@r	
r/+23+2015!3333�h���J�i��i�.�@

rr+2+9/301!5#"&=3326753a='S^�)+0��
YV��/,
	��=@
r
r+23+2201333333=������i��i���=��g@
r
	
r/+233+22015!333333�K�����J�i��i��i�S
@r
r+2+29/3013#5!32#'32>54.+��x^c*R=�k##j�l�`O5T/f$#=�@
r
r+22+29/3013332#'32>54.+3=�\_d+R=eP"#Oq��`O5T/f$#����=�@r
r+2+9/3013332#'32>54.+=�w^d*R=�k##j�`O5T/f$##��$#@

rr+2+29/3901".'732>7#53.#"'>325]Gk@(%<)��&;''>evQCfF$$Gf	;(2$%!8#W 6  $58B,Ma45aM-=��&!@
rr
rr+2+++29/301".'##33>32'2>54.#"GjCR��RClEUv?@vT&: !:%$9  9
7a=��>a6J{KK{Ir(F/1G&'G00G&!�@


r
r+2+29/330137.54>;#5#35#"!�/70T7��GsWc^$*%�
L>4L+���(  *����B�&JE��)	/�01����B�&JlJ
�*&	/��01���3F�-#@!%%r
r	/2++9/3�22301".'732>54.#"##53533#>32Z$6&\)
5-,:�NN���Q4E^09Z�C9V=FU'1*�P{{P�(,=�mH_6��=��&����/�01��"@
rr+2+29/3901".54>32.#"3#3267/AfG%$FhBQve>(';&��(=%(?k 	-Ma54aM,B85$  6 W#8!%$2=D�����X��=��N�����&�l������<��O��0$@$		r
r+223+29/3015>?!32+#%32>54.+&b^d*S<� 9T�U"#Uw5`K��]L4Q-�=g�O"l"!=>#@r
r+23+29/333013335332+5#%32>54.+=�Єe^d*R=��TX#"W�ı]L4Q-��f"!��)�'@
r
r+2+9/993�223013#53533#>32#54&#"AMM���V9bS�/1.>#PggP�(-e_���880+����=$�&����
/�01��=(�&����
/�01����&�E�/�01=��@
r

r/+22+2015#333#ﲆɆ��i���
��@
r+2/9/3�2015!332#'32>54.+
��Њ�Om:8jL��)33+�)UU����8eEDh:p 5!4!���'@

r
r+2+99//3333013#53533#32#'32>54.+Xqq���w^d*R=�k##j�S��S�`O5T/f$#�
!@r
/22+29/3399013!####!7!����?�?�����i]����$��$����]
!@r
/22+29/3399013'!#'##5#37!̸ �͡�$�#���f�w��������8�������|����A}��@
rr++93301!3>;#"���IF<(!����B=r��	H@
r
r++9330133>;#"���cF@9$
��h#=8g����W�v�&� /@	V
/�01+4��E�v��&���V+4��@
rr+2+9/3�2015!332#'32>54.+{�抑Om:8jL��)34+�'PP����6dDBf9p 5!4!6�@�
r+2/9/3�2013332#'32>54.+'5!v�{^d+R=�n"#m����^M5T/d%#�YYSj�
'@rr++29/33333013!2+32>54.+7S-3U@"9gE��0!2�~8�8�&BU/@l@�^6%&6�,�,C�+\(,'@rrr,++*))r+23323+++201"&'#3>32'2>54.#"?}=]�u\;6W?#"=QW3$'5(%*7&1�2
7/���Z.5*Ka89cK*i-;"$;*
 {4T-�,L�b�rr++�3013!53!L;x��Ɯ��=���r
r++�3013353#=�w��i�	@rr++29/3015!!!������YY���y���	@r
r++29/30175!!#^��\��LL�u�iJ�x��@
rr/2++29/301"'732654&#"5>32%!!�96""2DBK+I)(\0{���G��ֈpEMGPx�{���y��=�="@
!r
r/2++29/301"&'732654.#"5>32%!#A">,7-0!3&G&9[61_��[��VM>2=\5eKLu@�u�i�y!�3@

rr/+2323+229/33399015#53%33333####�9������<�<Ϡ���>�?⇇y��pV��������+��+����Z3@



r
r/+23+229/33399??015#53%'3353373#'##5#�;�������)�,������,�*�l������������'�w7�1'@+$r	r/+233+29/390157'"&'732654.+532>54.#"'>32�r;W�(gP6@?6)UV -1&6Nc(}]Jj;/3<AEv���F?@&-8.-i((+#F;H-V=1U\=B[.���7�&�|SL�y��'@
		rr/+223+2/9/39015#53%333	##36����FӚ����D��y��������+��=��0%@
		r
r/+233+29/39015#53%3373#'#�3��
�-���Ι�+l�������J��-@r	r+2+2/9/3/33/9013333##7#3J�����֖���::��%����2�νP=\!@r	
r+2+29/��390133373#'#7#3=��w������h66������z!��'@
r
r+2+299//393015!333	##&݅_ӗ����\'PP��������+��*�)@r
r	
r+2+99//339+0133373#'#5!C�-����+�J�l�����5PP��!@
r
r+222+29/390153333	##��FӚ����CTrr��������+��u!@

r
r+222+29/3901533373#'#��-����+�mm�a�������J�y �&�">�V+4��=��n&�!��V+4J��@

r
r+2+2239/301'!%#!#3!����׉����BMyyy�:/����=�@
r
r+2+2239/301'!3353#5#�[�K�Ԇ���uu�i�����J�x+�!@rr+2/+2/39/3013!#!"'732654&#"5>32J0���f96!;BNE&L'(\0Sp:��:M���jOPRTlCyQ��=�=p$@r
r
/2?++29/301"&'732654.#"###!>32�!?,7-0!7�ʆ�&K"9\51^�VXG8B���i�5gLU�I)��B�6F+@C'rr0;;		r3	r+2+23333+2+201%#"&'#".54>&3267.54>323267>76.'&B1zH;p-0f@O�g:1Y{K1N,>oI%&8P�^HuR,/_H
?\%�$!!'N>+ &G9Q+,3a�XH�e6w<jDPw@Re9^�T2XrA?sY* (PH
(#:V=/0��U2B-@3%rr,;;	r/r+2+23333+2+201%#"&'#".54>3267.54>3223267">54.U ]1+P&W0Z�M)Jd<#5*Q8	
-1BtLLq?LM+E��)>"3#.E'$;&ES6cK(c-G*1V5"d<Fm>;fBGv#."?+#C51F+/=�w��'5.54>32.#"32>7BAkL+/Z�Sb�#j:B 4M47M.!D:qG]1��Dew>A}g=VEI(/*DT*/WC'0&A,A*���"@	r!�r+�33+2015.54>32.#"32>7�Ca4C|UUz�8"&?$%>&+"�5I,{
Np?J{JJ<('G/.G)(!7$z���y]�&�"�
V+4�����&�!��
V+4����>	�+@rr++2901533�Nj��~����a��������#@
rr++29/93330135#535333#�������������W��V�2W��+##@
rr++29/3333015#535333#�zzdž����vvՙ<�V���<��y��"@

	rr/+223+29015#533#'#76�����������y�M��������^h��$"@r


r+2�33+29015#53?3#/#�(��tm		n����p	q���l�����������yk�!@
		r+23233/�3301+5!5!3!33%�������^My�����M������"@

	

r+23333?�3301#5!#5!3333���u�r���J�uu���i��i���<�y��&�"��V+4��.��'&�!P�V+4��<Z�&�#�Q.�#@


rr+2+9/3/33/01!5#"&=3326753'#3s='[h�.80��66�
YV��/,
	��R!Jg�@r
r+2+9/301>32#54&#"#�*@+}z�@P#F���ny��?;�����=$�M��\�09%@,55'	r1r+2+29/33/3901467;#"&2!32>7#".54>"!.L&'�xen�M~Z1��"6B$'F4
�]xCL|Y/0Y}M4S2�5V�9)cLJ;d}A
+G22 /7S/<f�GE�e;w0U76V0���-6!@..""3r&r+2+29/333301467;#"&".54>32!3267!.#"7'�vO[�9^E%%D_:Sv?�u*?!(E
nF^�&;%$>(W1
QE��+Ka68cL+K{G(<'  (>#6)=""=$�yg�4='@9+�"+	r5r+2+22/�9/3�20157467;#"&2!32>7#".54>"!.�w��M'&�xen�N~Z0��#5B%'F3
�]xBM{Y00Z|M4R3�5V��X�K9)cLJ;d}A
+G22 /7S/<f�GE�e;w0U76V0���1:'@22&&7r*�r+�33+29/33330157467;#"&".54>32!3267!.#"Rx�G7'�vO[�9^E%%D_:Sv?�u*?!(E
nF^�&;%$>()��1
QE��+Ka68cL+K{G(<'  (>#6)=""=��J��.���&�J��/�01��D�&���/�01S�'��$!@rr/2++29/33301"&'732>54.+#33:33�6 ,%@Q+>��.Ӛ�Ch=7^�h"D32ZD'������e�MUy?=�,!@!r
r/3++29/3301#"&'732654.+#33:373g4K*.Q63&$(C(8��!��*QmBGi9
c
=5<W/������v��&� �V+4���vf&���V+4��J�$��&�V��=�+&����T�v �&�
 H�V+4��E�vv&���V+4<�yZ�@	r	r+2+23/9/301!#"&=332673#53#�+B,zz�AK$H��v�I'ny��?;)�:��^.���@
r+2?3�9/301535#".=3326753#
M:8S-*/-�^��
,S7��20
����T�vo�&�
 ��V+4��E�v�&�%�V+4��=������&����/�01�����&�R�9/�01����&��l�
�/��01�����&��;
�=9/��01���������������J7�&�x��/�01����B�&�a�&	/�01������C����;�������&l���
�.*/��01����;�&m�G
�*&/��01���&��3�
�/��01��D�&���
�/��01��'��7�&��O�
�2. /��01������&��
�0,/��01$��:� !@ 	r		r+2+239/33012#"&'732>54&+517!5!-Nh<DuMZ�(hT8*9CIP������&>K&Hi9F?@&-6$4A`�yh���#�@rr+2+239/3301"&'732>54&+57!5!3�O�&RO3-A"XNB�����	jq*I]�@=F)/:(>B\�o^�tY:Y<��O��&�s���
/�01��=(�&�sc�
/�01��O��&����
�
/��01��=(�&��O
�
/��01������&����
�,(
/��01����A�&��J
�($
/��01����+#@		"'r	r+2+29/333015!".54>3232>54.#"t��N[25]LMZ24]��5M12N45M12M4@QQ��<g�DG�e;>h�DF�e:h.VC')EU,.TC')DT��A'@$rr+2+29/30175!".54>3232>54.#"q��@fG&&Gf@@eH%%Gf�$>'&>%%>&'>$�99�+Lb67bL++Lb76bL+.G()G.-H()G������&|���
�0,/��01����A�&}�J
�,(/��01��$����&����
�.* /��01��#��$�&�;
�($/��01��������&�sy��/�01����&�sB�/�01��������&��e�
�/��01����&��.
�/��01��������&����
�/��01����&��q
�/��01��<Z�&��r�
�	/��01��.��&��*
�/��01��L�y�&�"r�V+4��=���&�!D�V+4��JN�&����
� /��01��=��&��
�/��01�$(�@r/2?33+29/301"&'73265#53'!!5!�;  //j�0Vg������X:;\\Eb5��y��YY�+�@r

/2?33+29/301"&'73265#53'!#'5!y7!,,R�0TS[��^�

X<5QQC_3�u�i�LL�$��@r/2+2901"&'732>54&/#33�= "���������/P�

h 2��^h�����+S$2O.�,
"@r
/2?+2901"&'732654&/#3?3k-Dp����n
m��[(*'F�
c$3^�����{7^2-F(�� @

		r+2/9/339015!3#'#�����������4PP���������^h	@
	r+2/39/9930175!?3#/#2���n		m����p		p����CC&��������)��:�-@  r'	r+2+29/3901".5467.54>32.#";#"32670KwEG@=9?kB\}.[M8&51!UU(7C>5Qh(�.[B=\T1>V-E?F%.+*`/-9-&@?F"���/@
"r)r+2+29/3301".5467.54>32.#";#"3267Bg;64-<d;2N;P
+.5%=;**-*5lq#E2.A
!,-@"."6#Q%  15<���$��&�I���+&��������6���+=V���<��F\��T�y��&�"
�
V+4��C��j&�!��
V+4��T�y��&N
"��V+4��F��}�&O	!��V+4�����$��&�
������+#&�����y��&�"�V+4����f&�!��
V+4���7��&('���$��9/�01���7�&H'�����5	/�01��J�9��&)�����İV+4���9]�&I���1��ذV+4��J�]��&)�������V+4���]]�&I�q�1����V+4��J7S&*'�u���y��/�/�01����B�&J&�^����-�&&	/�/�01��J7S&*'�u���y��/�/�01����B�&J&�^����*�&&	/�/�01��J�77�&*'������'/�01���7B�&J'�����A	/�01�� ����&,����'
/�01���!>�&L�h�7
/�01��J�9��&-���=�9$�&M�����ΰV+4��J�E��&-����=�E$�&M���!
��ذV+4����&X&.'�����6~��/��/�01�����&�&���'���/��/�01��J�9>�&1�����ΰV+4��<�9@�&Q�O���ӰV+4��J�]>�&1�~��(�]T�&Q�������V+4��J�9�&2�B��=�9k&R�c�&
��ΰV+4��J��&3���
/�01��=$�&S���/�01��J�9��&3����ΰV+4��=�9$&S�����ΰV+4��J�]��&3�����ΰV+4��=�]$&S�\�����V+4�����a&4'����#��D�((
/�/�01����A�&T&�T����@�$$
/�/�01�����[&4'�������HD�((
/�/��01����A�&T&�T�J��D@�$$
/�/��01�����S&4'�����y�/�((
/�/�01����A�&T&�^����+�$$
/�/�01�����S&4'����$y�,�((
/�/�01����A�&T&�^����(�$$
/�/�01��J�9��&7�����ΰV+4��=�9u&W�
���ΰV+4��J�]��&7�������V+4����]u&W�������V+4����G�&8����3./�01������&X���,/�01���9G�&8���4��ӰV+4���9�&X���-��ذV+4����Gh&8'�������7�33./�/�01������&X'������0�,,/�/�01����Gh&8'�������:�88./�/�01������&X&�F����3�11/�/�01���9G�&8'������4��ӲV7./�01+4���9��&X'�����0-��ذV+4/�01���9]�&9���	��ΰV+4���9w�&Y�s���ӰV+4���]]�&9�e�	����V+4���]x�&Y������V+4��@���a&:'������6�/�/�01��8��B�&Z&�Q����:�/�/�01��@���M&:'�����z�"�/�/��01��8��B�&Z&�\�I��&"�/�/��01���&<�b��/�01��F�&\���/�01���&<����/�01��F�&\�K�/�01���&<�)�
�/��01��F�&\��
�/��01����&>����	/�01����&^���/�01���9Q�&?���	��ΰV+4���9�&_���	��ΰV+4����w�&Y����
�
/��01=����<!@
:2-(r"r	r+2++2901"&'732654.'.54>7.#"#4>32�Bz+/-V)&/-!;N&)Ia8!'9$6D +Me9GoH
/UC'+=S)l
,+W&$
%7,0B*5&/*H/�D�<\> /YB&	"50PX���9��&&�����9&F���:$��ɰV+4����&&���/�01����&F���C/�01����&&(v��@/�/�01����$;&F(6�@@??/�/�01����&&)5��@/�/�01������4&F)��C@??/�/�01����&&*���@/�/�01����B&F*M�J@??/�/�01���$&&+����/�/�01����k&F+C�@@??/�/�01���9��&&'������/�01���9�&F'���X�:$��ɲVC/�01+4���&&$����/�/�01����f&F$h�G�@@/�/�01���%&&%����/�/�01����l&F%e�J�@@/�/�01���/&&&���#�/�/�01����v&F&m�Q�@@/�/�01���)&&'����/�/�01����p&F'Y�G�@@/�/�01���9��&&'������/�01���9�&F'���l�:$��زVD/�01+4��J�97�&*���
��ΰV+4���9B&J���'��ɰV+4��J7�&*���/�01����B&J���0	/�01��J7�&*�k��/�01����B�&J�T�/	/�01��JY�&*(k��@/�/�01����B;&J(T�-@,,	/�/�01��*7�&*)*��@/�/�01����B4&J)�0@,,	/�/�01��J7�&**���@/�/�01����BB&J*k�7@,,	/�/�01��J7$&*+y���/�/�01����Bk&J+b�-�,,	/�/�01��J�97�&*'������
��IJV/�01+4���9B�&J'���v�'��IJV0	/�01+4��3��&.��\��/�01����&���1���/�01��J�9��&.� ���İV+4��=�9��&N��	��ΰV+4���9��&4�
�)��ΰV+4���9A&T���%��ذV+4������&4�I��2
/�01����A&T���.
/�01������&4(���/@..
/�/�01����B;&T(T�+@**
/�/�01������&4)`��2@..
/�/�01����A4&T)�.@**
/�/�01������&4*���9@..
/�/�01����AB&T*k�5@**
/�/�01�����$&4+���7�..
/�/�01����Ak&T+b�+�**
/�/�01���9��&4'�
����)��βV2
/�01+4���9A�&T'���v�%��IJV.
/�01+4������&E�#��8
/�01����A�&F���4
/�01������&E����;
/�01����A�&F���7
/�01������&E�I��B
/�01����A&F���>
/�01������&E����8
/�01����A�&F�T�=
/�01���9�&E�
�9��ΰV+4���9Ad&F���5��ɰV+4��@�9��&:�	���ӰV+4��8�=B&Z�����ɰV+4��@����&:�D��$/�01��8��B&Z���(/�01��@��$�&G���*/�01��8����&H���./�01��@��$�&G����-/�01��8����&H���1/�01��@��$�&G�D��4/�01��8���&H���8/�01��@��$�&G����3/�01��8����&H�Q�./�01��@�9$&G�	�+��ӰV+4��8�=�d&H���/��ɰV+4����&>����/�01����&^�s�/�01���9��&>���
��ΰV+4���&^�E����&>���/�01���&^���/�01����&>�n��/�01����&^�D�/�01��:�iO:��O�/20175!:��yy:�"O�/20175!:��yy:�fO�/20175!:,�yy��:�fOR8�����/�99013#57�(�$�z��x6�����/�99017#53G(�#�z��x:�}����/�99017#53K(�#�������8�{�&TT�5�w�
@	
/3�29017#5337#53F(�#j(�#�{��x{��x:�}w�
@
�
/3�29017#5337#53K(�#e(�$���������#�~��
//9/33301#5333#������Ux��Dx��*�~�@
	//9/333�223015#535#5333#3#�����������xpy@��ypx�M���/301#".54>320//0^00//: �@
	
?2332301353353353:nNnNn������(��q�/?O_e5@`eeP@@XHH8((0 	rcbbr+22/32/3+22/333232/301".54>32'2>54.#"".54>32'2>54.#"".54>32'2>54.#"		�.K,,K..K++K.!   �.K,,K..K,,K.!  !�-K--K-.K,,K. !! ��=����)E**E((E**E)C&&&'�(E*+D))D**E)C&&'&C(E*+D))D**E)C&&'&
IV6����=���
��/�0153=r#�����=���&__�#.+�@	/3/3901%%#���� �mmgn�:.B�@	/3/3901%57'5B����߱ngmm��6�����rr+2+201'		�=���/IV6������/%�!
BD?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!�'@K#&L>&)@K#&K>%� >*)/ >*)/�~/

@
		
BD?�29/3333015#5733#'35��;88��`I��E`���o/&@	# BD?3�29/3012#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�.�"=)*@$&!2'"!3560I_	
"��/*@#
BD?3�29/93014.#">327.#"32>".54>32�*L3%>=3>*O.XgbS5Q.�/1./(=#=A3"zq]g'B%""!#��/�BD?�201#5!#�l�Z�J�[ ��/+:@ 008B(D?3�29/33301#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1J'&K1(%1Q.,--�&&&!1%; #;$'/'#33#*2���/*@	

#BD?2�29/301"&'73267#".54>32'2>54.#"�.O+>4<>&1L+.Q4TbgS/.0-�"2A=$='(B(h]qy�"#$!���Q%�!
BA?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!Z(?K#'K?%)@J#&L>%� ?*)0!>*)/ ��:U@	

BA?33�22301!53#52>53:��a'/'!PNN	P�����V"@B A?2�29014>7>54&#"'>32391>*/(/#33K/RT). )�U5G3
"!: G;"/
N��uV,@
&BA?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42QZ)&6
F=4!#.=))4��~Q

@	
BA?�29/3333015#5733#'35��;88�TaI��Da����oQ&@
$$# BA?3�29/3330172#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�.�"=+)@$' 2'# 3651H`	"���T*@	#
BA?3�29/301%4.#">327.#"32>".54>32�+L2%><4>*O.XhcS5Q.�00-.7'=$>@3!yq]g'B%#"!#���Q�BA?�201#5!#�l�ZJ�[ ���Q+:@0  8B(A?3�29/33301%#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1K&&K1(%1Q.,--�&&%!1'&:!#<$'/'#33")2����T*@	

#BA?2�29/301"&'73267#".54>32'2>54.#"�-P*=4=>&2L*.Q4ScgS0//-Z! 3@=#>'(B'g]qy�""#  ��"� $(,0)@*/+--r#%"''r+233�2+233�2014>32.#"32>7#".#53#3##53#3# B|VUy�9"&>%%>'+"�D^:@eI&j>>�>>�>>�>>J{JJ<('G/.G)('>#+Mb	������ M�	
@
r?+29/3�2013!!!!'5!p�����I�y�p��h[[,���6:>@7:>;;
6(/	r
r+2+229/3�2017>54.54>32.#">323267#".#"!!!!8#/ 7^9=n%GN$& &$-,"!>==!E )m��m��W=@%A?@#2Q/81R",&59D(89 	d
	�S-S&7�"@

r
?3+29/993�201%!5!5!5!#33#7�����Ήno�s�SmR�8�,�;J��1�
2^=@ /r#++$(PI(II(:3r''r+/33/+29///33333+201332+32>54.+#".5#53533#3267"&'732654.'.54>32.#"J�2R=!7cBWN(,I�/7%?$EE�nn(=n'+*R'#),5F#/V:3Z&2$@""&9O(g�(DT,<lD�g5"%4��9.-g��g��,+W&$
$7+4K*#'U
	%80NX(V�!=@  !r?3+9/93�2233333301%!5!3!!'!5!3!!3733##37�!�p�!p�!�p�!��QR�zZɕ��w|}w���Y�SS�RRD���'�:*�����%n�,04/@
		2233 (--0/33|/33/33|/33/3/3014>3253#"&/#".%5.#"32>!!!!55a>6_�#$.c7Ae:�
,5"5 7"'#�tI��.��[Aj?1&�3n%!14@kD(#9"#5
!�E�E!����,!@
(	r
r+2+29/993�201?!7!74>32.#"32>7#".!�>�?(/Z�Sb�#j:B 4M47M.!D:q_v:L~[3�JJ�JJQA}g=VEI(/*DT*/WC'0&A5J&?i� �� @

	rr+2+29/930175!33	# X�Ҋ*���!��ZuIIu��R��u2^�]�@		

rr++230175%5%###5!C��8��O�A�A��A�A-��My
Y�!&@!	r?+299}//33�201!!!!!2+32>54.+
R��R��=$5U?" <U5��!4"7�+E3E���+GY/0XG*�>"@-/?  ���/(.0@.*++r#	r+2/223+2/2239/3?01%3#3".54>32.#"3267#5!#VCCCCE{]44^~Jd�$ga9-J69L.6c+YO�r@���
�{8c�MI�b8UFL58&BV03V@%86�`
e��	����'+/'@-,(
))
r!	r+2+29/99993�201"&54>54&#"'>3232677!%7!
pi)CJB*.5"F8)_Fmf*BJC)08&G:'d����N�ZO1L=527!&&VVK1K:329%')Y%11c11���/,'@(	r
r+2/233+2/22301%3#34>32.#"32>7#".VCCCC��/Z�Sb�#j:B 4M47M.!D:q_v:L~[3@���
��A}g=VEI(/*DT*/WC'0&A5J&?i�]�@
	r?+23}/3013#5!#5!��O�O�kk�R[kk)��@�
r?+99�2330132#32>54.+!5!5!5!)�2R=!!>*���o)+{�7�7��(DT,-S>��^!8#$8 yRDS$3�@r?2+9013332>53#%5%5%S�f%-�2aO��r��r��
5(:_D%�U�UU�U@����@


	?3/3933/3012#4.#"#4>?wRvK#�'C21B(�"Iw1CCN4]{E��(M=%$=M)��By_7���/�  @ 	r?+29/3�23301=!5!!2+32>54.+!��W��4S; 5bE�w(+q�yy�BBn�(DT,<lD�g5"%4:��Q�&@	&	/3?39/3017>54&#"3267'#"&54632�%F9!K<)A&?8<%-� drn+:H";%�4:	Y!�"# LPFSw�	)!@	

&r?+22/33/3?9901#33#".54>32'32>54.#"܉kr�os;S--T::S-,T�'''(�9�.�;S4V12U44U21V4�//-/+���23@'*-0

$00?33/3�292/3/90173#5#'#3.#"#"&'732654&'.54632;�WAFAW�� .%<9F8&M#8'94G5 =)��ջ���+@

)*-.@
	'&,4>���)@
r+�923333301##5#5!3#5#'#3S_W_"�W@G@W�:q��W�ջ���+�&��-!@+-r!
r+2+2233330173.54>323!5>54.#"!&�0E&2]|HI|\3&F0���%;*5L//K6+;%��fQf:D|a88a|D:fQff6JS+)O@&&@O)+SJ6f#��I @	r	r+2+29/301%"&'5!4.#"3267'2!5>6,N�E|RR|EE{SNo%`F,O��N$&�P�MK|JH{K0##+�'%tu$'�� ��h�&'c*�����"(U;@O:77)@HH)#((1)&%% /33/293/3?33/33/39/33014>7>54&#"'>323		%"&'732654&+532654&#"'>3270>)-(.#1
2J/OS(-(צ=���=[*!1 (8AB:;5'916B 2J+.(,42Q15F2
#"9!G;!/
N��IV6����('5
G<4""/=()5�� ��w�&'c*
�������&'c�
_������&'c�
R������&'cO
���!2@+		r"r+2+29/301".54>326<'.#"'>32'2>54.#"�Ch<*H\2.E5%BJ&i:rzE~N.%3#;%2
7`;1VB%$	=H"N$&���^h%11#:$4��A.#'@
&% 
$'?2�2?3�201".54>3232>54.#"/@fG&&Gf@@eH%%Gf�$>'&>%%>&'>$q�2�?
+Lb67bL++Lb76bL+.G()G.-H()G��;��n�@rr+233+201%!53n���pr��hhh^����L ����@		r/3+23301###5!##��P�P�R�T�tt�T �
!@	
/333/9933301!!5!57'5!� ���Ŷ?�W����[t��>�}�/2015!>�kk��y��rr+2+201'<L��8�@�k:����/201753:n��
@


r+2/9/33013333#�m{Cpx�����{�����{^(��/? @0<$ 8(/223�2923012>32#".'#".54>2>7.#"!2>54.#"�(7'%8(4J*,M0&7&'9)*N1-L9##$$*""#$((2S32T1$$2T23S1��%&#%%#'#�Y^4�
/3/301&632.#"#"&'7326'^B?H
&B?G�;F` �Q>C`!5���-@�@%�)/3�/2�2�201#".#">3232>7#".#">3232>7P%('1
=$+(	<%('1
=$+(	�	),
 s
),	K�@
/�23/333/3017'!!!!V�3�=9��9��4��$�WW2�Y
@
	/3�22/390175!%%2a��^���ll���PJ��C�Y
@
		/3�22/390175!57'5Cb����^ll<��JP���	@	?3?3901#d�����֍������nl������=�+���
��/�01#7#53�='q�H^^��31@		+$r2/3
r+2?3333333+29|/3013#5354>32.#"3#3#5354>32.#"3#]EE,Q8%D$,	���EE+O5 A ("$���f
7X4ff�v�f A_4e0.%f�v��@
r	r+2?333+201#5354>32.#"!###]EE7O2&C=5F$(����f ,L;!d*%���v����) @r"
r
r+?333+2+201"&54.#"3###5354>323267=G$" 'WW�EE5bDrl&*4B3�23!f�v�f,AY.lX�� l
�86@		,$r61488
?23?3333333+29|/3013#5354>32.#"3##5354>32.#"!###]EE,Q8%D$,	���DD7P2&C=6F$'����f
7X4ff�v�f ,L;!d*%���v����D@@ 
		#6r=r(11+..-
?2?3333333+2+29|/333013#5354>32.#"3#"&54.#"3###5354>323267]EE,Q8%D$,	��9>G
%" 'XX�DD5bDrl'*3�f
7X4ff�vB3�23!f�v�f,AY.lX�� l
��X�b>@#TTJMM<+A&F!0Jr80r\

Y
r`r+2+223+2+293333/301%#".5#534.#".#"#".'732>54.'.54>32.54>323#326>06&>%DD!!1.
5*I ')0J3!9K,*ZO30^+(!+-F/9[1J%RB>H#
nn(�j9.-g:C3%% T	"1$*?*[!

0"9M(
*(A'7O4g�
?�@
r+22/3901##33?܍���ܗ������:����� ����-@$##
r	r+2+29/301".54>32.#"32>7#'!uNY/0[OZ�)m*9#/J31L1#>0 �01Vu<g�EF�e;OFV&$)DU,*UF*)3t	?qW2��=��&���/�01��� 3@ 
r'

r0r+2+29/3+01!5#".54>3254&#"'>32'6=.#"32>}\72R/$>Q,*B;:)Q*)1l=Mj7�8*")*%I*)+L/(@+	39U #3aD�Ä<


$
��?&"@
rr&

r"r+2+29++01".54>3253#5.#"32>76[C$$?V2;]��Rk*53%%A)1&
*Jc99bK)8.V��U,3F/.9+F*(��>�'"@r'
r"r
r++2+29+01!5#".54>323.#"32>7�S66[C%<jC;\��
-52%(5(#R,0*Jc9L{H9,*�&=.-9  9*
!=�+���r+�2?013#3#=�����&��?���
rr++0130*#?�+-�&�,a/$@rr!"
'
rr+2+29++201".54>3253#"&='2>75.#"2T>!%BZ4<\u'':<F/'%*3&$@
+Jd89bJ)7-[��r3(�fr'|&-9 +F*k�@
r
r++2/223013#53533#hNN�yy�y��y�m8��"@rr
r++2+29901!5#".5332>73�;H&/C)�(#2*�Z!-6M.H��#7+E��
Y@
	r
r+2+93301!#333ff���yj{iz��A����o��o���+@
rr+2+9901#73��Tϊ�~���u�����R7@CC=:r,++'0rK		HrOr+2+223+22/3+22/392/301%#".5#534.#".#"32>7#".54>32.546323#3267�07$>%EE#/(�9"2$&2+$�G^8@fH&%FhC0B
]YDK nn(9.-g$9(7'54+
(+9!"9+()="-M`65aM,1EO$=M(g�M/
?@#
		

		>/2?9/93339<<<<0133#'#3�c�8�8�R�/��D2/&@>/3?39/3901%#!!24.+32>32>54.#26Z6��I+>"-*4=z��"�� �/@ /*B$'HI �2} ��<2#�??3?3014>32.#"32>7#". (LnGSz]S'+@+-@'90
dQc1@lN*3cP0D6A-"2>#@2$;*:1SgDX/

�>/2?301332#4.+32>D�e�EL�]�+Q;ii<Q*/K~MU~F4M,��-PD�/@	

>/3?39/301%!!!!!�Q�����jj/jwc�D�/	�>/?39/3013!!3#D����/j�c� ��A3!'@
$##
?''/22/?39/301".54>32.#"32677#53#;;gM,,Oj>Tx\P.%=+.?%+Q$&Sp|�d/Pg9:eM,C7D(*0@$%@0*'w$"�X��DN/�	>?2/39/301#5!#3!5Ny��yy/����/��D�/	�>/?0133Dy/����y/�>??301732>53#"'':&1.y.\MP7|%O<��@iJ(!DU/@

	>/2?3901333#'Dy��Q/������G�D�/�>/2?0133!Dy/�;jD�/@
	>/2?3901!##33>�B�y����]���/��.��D]/	�>	/3?39901#33#�y^BybO��/��X�� ��m2'�#
??2?301".54>3232>54.#"FBlN*,Pl@BlM*,Ok�,A()@+,@()@,/Qf68eO.1Qf57eP-"?23? ">12?D/�
>/?39/3013!2+32>54.+D9Z31V:��$%�/8U/0V6�!%$ ��y3'+@
?((**?2/23/?301".54>32'2>54.#"73#FBlN*,Pl@BlM*,Ok@)@+,@()@,,At�r/Qf68eP.1Rf57eO.l3? ">22? "?1o�D?/@

>/2?39/39013!2#'#32>54.+D:Y21#���v�$&�/8V.#?2ѷ�!&$���3.@	'+??3?39901.#"#"&'732654.'.54>32�
2B#//=,;W/$?Q,D�46;S.-/'D/9K%;e<@l'�	&>4/A(&!i
';+:N(%/�>/?3301###5!�y��;�j<��R/�
>?3?301%2>53#".53F*9!yAeFIe@y"7g0= ��9eL+-Nd6��!=0O/
�>?2/9013#����f�/�{���/�/@
	>?333/39013733#'#37pEGpjI���fkkf���F-����������/�b�=/@

	>?2/390173#'#�����փ�����/���쾾>/�>?2/9013#5�����x�/������m!
/	@		>?33/33017!5!!!!V���M�[jj[��j�x��@

r+2?3/333301333#5!!I�~�Jr�(R3��M�������
���r/2+90133#
}����:(����#-!@-r$	r+�333+�333015.54>753'>54.'\@rY35Zq>�>rY43Ys>7]8":I�4Z7 7G'FA6^�NS�\4AA5]�RO�^5A��=lN:Z?"<lL:[?$��J'�+��'�w7�,���w��>��'�77�&������7���B��%� +@
!(rr+2+29/3301"&54>32'2654&+32654&#";y�1gOA[0,*=I>iI69:7p99b)//)/3syFf7(L72H_OHa/n@::>�58K1++2236���+@"r%r+2+2901".54>7>54.#"'>323267O_*'UD%)!.;XoM@T)$I:?6303ET$r
%@),9+//6!?-*:)'  ;,3���!>LD�0@


r+2/2/?3/3/9/33333013'333373#'##5#����)�,������,�*�������������-�+@
%rr+2+29/3301"&'732>54.+532654&#"'>32�Kzc=,)8!<*<33>5-";VlI]i7.@KAl�F=,$$ :&'7`4/+0 (38B`P9O_MIb2��8��BZ��8��B�&Z_�/�01��8��B����=2�P
�r+/3901##\���������o��=$S��=kR8��p@	
r	r
/?3+2+299015'./#"&5332>73;�#nBQT�,+3+�*#"57ieH��<=* E���8��g$'@rr
r		r+23++2+290133267332673#5#"&'#".58�+''F�*''F�yeAAI
c?0>"
��?:=02��?:<12��a46@.59#;I&7���.'@'&#	-
?�3?3?3?933015'./#"&'#".533267332673;;hEAI
c?1="
�+''G�*''F�)!$39@.59#;I&H��?:=02��?:<12���8��@rr+2+9/301"&5332'2654&+&p~�h1U?$$?U32442f5hl>�,J65J,n-()-L-2��m@rr+2+29/301"&=#5!32'2654&+�q~�
i1T@$$@T41551f5hl�m�,J65J,n-()-L-2=�	@	r/+29/30175!!#l��[��SS�u�i����?���7�-���7�%��H�.@
'rr+2+29/3301".54>7.5463!!"2'2>54.#"6O|F:+-0eU��('9=U}DG|O'=$#>''=$$=
>nF+OB>&HPr#<mGFn>r8')<!!<)'8*����'�#
r	r+2+201.54>3232>54.#"^KtN'*QrGMsN'*Qr�)@*-@)+?+,@)
Bl}<@�i?Dl~:Ah?g*SF+.HR&*SF+.HR+��@
r?33+22/301%!53#52>73�n�%/180�yyy�|$��)-�(�r&/2+20134>7>54.#"'>32!)#8)#KA)/!&A3T1EX5Nj72>!4@%b=]I8&*6'+'X(&7_>-E4)*$#y!���2@
+#r		r+2+29/3301".'732>54.+532654.#"'>329]EH
,B*)<!)P:!#HW22MWL_3Gn>!<),C%Gy7&[*+!.d2.)/%a -1T6(B,
3M-?X0#�

@	
r?+29/333301!5!533#35E��U\XX�ֳ�x��Ty��$���"@r	r+2+29/33301"&'732>54.#"#!#>32
M{!MS-$84! :uR^�."Cj=Eu
C9P'.6#"5�z�
;fCGm=.��7�.@
'	rr+2+29/9301%4.#">327.#"32>".54>327ApG!:,$B-,LM'qCT|C@uPJuE��"<$#<$$;$$<�Ck?#@[0+%T6:[��f�NBpA%=$$;##;$$=%"8�
�r+2?01!5!#d�����Lz�:,��0�!3C@8''@r0	r+2+2933301%#".54>7.54>324.#"32>32>54.#"0GvFGuE"3)*FS)(TF+)4 �$, 7"#+ 8"�/--.�Bb7:eA(A/
(4/J32I05)0B!'0 '0A&%$%(��1�.@
'r	r+2+29/330132>7#"&'32>54.#"%2#".54>(AqF"9,%B-,LM'rBT|C@uPIvE$;%$;$$<#$;�Bk?$@[0+%T6;\��g�MApA&<%#;##;$$=%�����Qk�� ��:Ul�����Vm����uVn����~Qo����oQp��"���Tq�����Qr�� ���Qs�����Tt����%�!
B?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!'@J$&L>%(@K#&L=%� >*)/ >*)/ :�@		

B/33�22301%!53#52>53:��a'/'!PNNN	O����"@
B /2�290134>7>54&#"'>32391>*/(/#33K/RT). )�5F3
#!
:!F<!/ 
N��u�,@
&B?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42Q('5
G<4""/=()5~�

@		
B/�29/33330135#5733#'35��;88�aI��Ea����o�&@	# B?3�29/3012#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�."=**@#&!1'"!2660I_	
"����*@
#
B/3�29/9301%4.#">327.#"32>".54>32�+L2%><4>*O.XhcS5Q.�00-.�'=$=@3"yq]g'B%#! $���B/�201#5!#�l�Z\J�Z ����+:@ 008B(?3�29/33301%#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1K&&K1(%1Q.,--�&&%!1{%; "<$'/'#32#*1 �


����*�

#B/2�29/301"&'73267#".54>32'2>54.#"�-P*=4=>&2L*.Q4ScgS0//-!3@=$>&)B'g]rx�""#!/��%�!
BC?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!/(?K#'K?%(AJ#&L=&� ?*)/!>*)0 2�@
	

BC?33�22301#53#52>53�N '+Q�NNP��1�"@B C?2�29014>7>54&#"'>32390?*/(/#32L/RT).!(�15F2
#"9!G;!/
N*u�,@
&BC?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42Q*)&7
G=5!".	=()56~�

@
		
BC?�29/3333015#5733#'35��;88�6`I��D`��/o�&@	# BC?3�29/3012#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�.F"=**@$'!1&# 3660H_"+��*@#
BC?3�29/93014.#">327.#"32>".54>32�*L3%>=3>*O.XgbS5Q.�/1./�'=$=@3!yr\h(B%#!!#6���BC?�201#5!#�l�Z�I�\ /��+:@ 008B(C?3�29/33301#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1J'&K1(%1Q.,--�&&&!1�%;!#<$'/'#33")3�
+��*@	

#BC?2�29/301"&'73267#".54>32'2>54.#"�.O+>4<>&1L+.Q4TbgS/.0-+"3A<$>&)B'g]ry�""$ :����/301753:n�/I��
��/�01'73�V6}Iw(=s�
�
�/2�201"&5332673�MXS(**%SX=O>(& >O"���@
�_/]2�201".5332653�9S-^+0/,_-S�%B)-* )B%�+8u��/�201"&'7326=3�6 
'+�h�c<:auil�v�u��/33�017#533J��B��<u��$Oy��/�201"&'732>=3�; $�0U�

h<*ZyDc5�v�y��/�33017#533J��C��<y�����u��/3�015#53__�u��y�y��/3�015#53ll⇇y�2El�
��/�017#3l::EP��!D-f&���K���!D'l&��������!F'v&����Zp����E`p&��������9H�;&���a��H�4&�c���Z��H�B&���<��
G�k&�
������Im���/�9901'7'm]V#ڑI.nd�?Q��
�	)j3�	3�
�"
6
�
���	�	/	G	.V	�	�	�	R	f�		f0	
�	D	�	,
Y	
 
�	4QCopyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".Copyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".RalewayRalewayBoldBold4.026;NONE;Raleway-Bold4.026;NONE;Raleway-BoldRaleway BoldRaleway BoldVersion 4.026Version 4.026Raleway-BoldRaleway-BoldRaleway is a trademark of Matt McInerney.Raleway is a trademark of Matt McInerney.Matt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaRaleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.Raleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.http://theleagueofmoveabletype.comhttp://theleagueofmoveabletype.comhttp://pixelspread.comhttp://pixelspread.comThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFL�j2-	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a��������������������	����������bc�d�e�������f����g�����h���jikmln�oqprsutvw�xzy{}|��~�����

��� !"��#$%&'()*+,-./012��3456789:;<=>?@A��BCDEFGHIJKLMNOP��QRSTUVWXYZ����[\]^_`abcdefghijklmnop�qrst��u�vwxyz{|}~�����������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx��y�����������z{���|}~������������������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./01234NULLCRuni00A0uni00ADuni00B2uni00B3uni00B5uni00B9AmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflex
Cdotaccent
cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve
Edotaccent
edotaccentEogonekeogonekEcaronecaronGcircumflexgcircumflex
Gdotaccent
gdotaccentuni0122uni0123HcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJijJcircumflexjcircumflexuni0136uni0137kgreenlandicLacutelacuteuni013Buni013CLcaronlcaronLdotldotNacutenacuteuni0145uni0146NcaronncaronnapostropheEngengOmacronomacronObreveobreve
Ohungarumlaut
ohungarumlautRacuteracuteuni0156uni0157RcaronrcaronSacutesacuteScircumflexscircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring
Uhungarumlaut
uhungarumlautUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacute
Zdotaccent
zdotaccentuni018FOhornohornUhornuhornuni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCGcarongcaronuni01EAuni01EBuni01F1uni01F2uni01F3Gacutegacute
Aringacute
aringacuteAEacuteaeacuteOslashacuteoslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217uni0218uni0219uni021Auni021Buni022Auni022Buni022Cuni022Duni0230uni0231uni0232uni0233uni0237uni0259uni02B9uni02BAuni02BBuni02BCuni02BEuni02BFuni02C8uni02C9uni02CAuni02CBuni02CC	gravecomb	acutecombuni0302	tildecombuni0304uni0306uni0307uni0308
hookabovecombuni030Auni030Buni030Cuni030Funi0311uni0312uni031Bdotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0394uni03A9uni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni046Auni046Buni0472uni0473uni0474uni0475uni048Auni048Buni048Cuni048Duni048Euni048Funi0490uni0491uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04AD	Ustraitcy	ustraitcyUstraitstrokecyustraitstrokecyuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8uni04D9uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0510uni0511uni0512uni0513uni051Auni051Buni051Cuni051Duni0524uni0525uni0526uni0527uni0528uni0529uni052Euni052Funi1E08uni1E09uni1E0Cuni1E0Duni1E0Euni1E0Funi1E14uni1E15uni1E16uni1E17uni1E1Cuni1E1Duni1E20uni1E21uni1E24uni1E25uni1E2Auni1E2Buni1E2Euni1E2Funi1E36uni1E37uni1E3Auni1E3Buni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E5Auni1E5Buni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Cuni1E6Duni1E6Euni1E6Funi1E78uni1E79uni1E7Auni1E7BWgravewgraveWacutewacute	Wdieresis	wdieresisuni1E8Euni1E8Funi1E92uni1E93uni1E97uni1E9Euni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni2002uni2003uni2007uni2008uni2009uni200Auni200Buni2010
figuredashuni2015minuteseconduni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089
colonmonetarylirauni20A6pesetauni20A9dongEurouni20ADuni20AEuni20B1uni20B2uni20B4uni20B5uni20B8uni20B9uni20BAuni20BCuni20BDuni2113uni2116servicemarkuni2126	estimateduni2153uni2154	oneeighththreeeighthsfiveeighthsseveneighthsemptysetuni2206uni2215uni2219commaaccentf_ff_f_if_f_ls_tW.ss09G.ss11	i.loclTRKa.ss01a.ss02d.ss03j.ss04l.ss05q.ss06t.ss07u.ss08w.ss09y.ss10c_ta.scb.scc.scd.sce.scf.scg.sch.sci.scj.sck.scl.scm.scn.sco.scp.scq.scr.scs.sct.scu.scv.scw.scx.scy.scz.scuni0414.loclBGRuni041B.loclBGRuni0424.loclBGRuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0432.loclBGRuni0433.loclBGRuni0434.loclBGRuni0436.loclBGRuni0437.loclBGRuni0438.loclBGRuni0439.loclBGRuni045D.loclBGRuni043A.loclBGRuni043B.loclBGRuni043F.loclBGRuni0442.loclBGRuni0446.loclBGRuni0448.loclBGRuni0449.loclBGRuni044C.loclBGRuni044A.loclBGRuni0493.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0431.loclSRBzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lf	zero.subsone.substwo.subs
three.subs	four.subs	five.subssix.subs
seven.subs
eight.subs	nine.subs	zero.dnomone.dnomtwo.dnom
three.dnom	four.dnom	five.dnomsix.dnom
seven.dnom
eight.dnom	nine.dnom	zero.numrone.numrtwo.numr
three.numr	four.numr	five.numrsix.numr
seven.numr
eight.numr	nine.numrperiodcentered.loclCATuni030C.altbrevecombcybrevecombcy.casehookcytailcyhookcy.casetailcy.casedescendercydescendercy.caseverticalbarcy.caseuni03060301uni03060300uni03060309uni03060303uni03020301uni03020300uni03020309uni03020303
apostrophe��T\����������������#$+,, 0��������$+�
�hDFLTcyrlRlatn0�� !"#$%&BGR VBSH �CHU �SRB ��� !"#$%&��	 !"#$%&��
���� !"#$%&4AZE nCAT �CRT �KAZ "MOL ^ROM �TAT �TRK �� !"#$%&��
 !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&'aalt�c2sc�ccmp�ccmpdligdnomfracligalnum$locl*locl0locl6locl<loclBloclHloclNloclTloclZlocl`loclflocllnumrrordnxsalt�sinf�smcp�ss01�ss02�ss03�ss04�ss05�ss06�ss07�ss08�ss09�ss10�ss11�subs�sups�!#$1
	
 %"&'()*+,-./02fnv����������������
"*2:BLT\fnv~�����������������@d����48<N`dhlptx����&.2:\x��������LPTX\`dhlpz~��Mc�������������������������������������yz{|������������������������	

M'()*+-./012356789:;=>?GHJKLMPRSUWX[]_{"#&'������������������&'->>LZhv������������� &,28��kd��l}��mv�n�w�o�	e�p
f�qg�rh�s
i�tj�n���~�����n�����������~����������������&,4<FINOQTVYZ\^,>?NO��,NO������
��NO
��NON
,
+�*�)�(�
'�&�%�$��� {QQ {11�{�{yz{|"#&'yz{|"#&'_N_N_N_N_N	�����,->?�����&',>?.�������������������������������������V�
d}vwefghij��O�c����&F4Tn~n~&4FT�T3�&?sF_
�Y�YHX6"(�KQ�KN�Q�N�KKhFhFiFgIbOaQ]V[Y[Z
��<\Y^�,�
NxDFLTcyrl$latn4������kernmarkmkmk (20������F�`
`���`���Bh�x�(<�P��J8�l����� � �!4!�&�&�&�''F'�&�&�(J(�+Z,,r,�-�.3B48b9T9�;�=�>,>z>�>�??z?�?�@@@D@�@�@�>,A
A(A^A�A�A�DzD�GVG�G�IpI�I�JJ�JNJpJ�K ������!4 �!4!4!4!4&�&�&�&� �&�(J(J(J(J(JR
R-�-�-�-�8bR�T�=�=�=�=�=�=�>�X:>�>�>�>�?�XxX�YlZJ@�@�@�@�@�@�]@]fA�A�A�A�GV>,GV�=��=�]�^� �>z �>z �>z �>z �_ �a�!4>�!4>�!4>�a�>�!4>�&�bN&�bN&�bN&�bN&�?�bl?�&�e�&�fd&�f�f�f�&�?�'f�'F@'�@D'�g�hh�'�'�j�&�@�&�@�&�@�k^k|(J@�(J@�(J@�a�>�,k�,A(,k�,rA^,rA^,rlF,rA^,�l�,�l�m�A�-�A�-�A�-�A�-�A�-�A�-�r�3BDz8bGV8b9TG�9TG�9TG�(J�=�!4>�R]f,rA^,�s?�@�s.!4!4sPs�t$&�&�t�uL'Fu�v�v�!4w8x'F&�&�(Jxpx�yTz�{�(J(J{�|H|�>�}}:A�A�@A�A�@�@�A�>,}�}�GV@�~L~zA�A�~zA�@�@�A�>�>�~�~�D?���@A�GVA��T'F@'F@&�@� �>z8b�^��A�A�?�&�'FA�?��=��=�!4>�!4>�(J@�'FA�A�(J@�(J@�GVGVGVA�A�(J�63BDzA� �>�&�?�&�@�,A(,rA^,؂P3BDz3BDz3BDz9TG�!4>�!4>ڂz��(J@�-�A�8bGV8bGV�ڂ���Z���̇ZJJ��6�<�F�P�n��@D��@DA��⍼���6����4���Ă6���A���ԝ��F������̤��঴�
�(�ªP�.� ���±䳦(J � � ��6A�A�A�@@�@�A�>z>z�<�f�����ȴε4�ZP����&��/��9��;��<��=��>��[��\��^��������������������������������������������&��(��*��8��9��:��;��<��[��]��{����������������������4��B��D��d��f��h�������������������������������@��A��F��G��U��X����������������������������������%��������!������������������
��������������k����&!/9��:��;��<��=!>��?[��\��]^��_�!�!�!�!�!�!�>�
����������������������!�!�!�&��(��*��,��.��0��2��4��6��8��9��:��;��<��=>?@AB[!]>_
`{����������!���������4��B��D��d!f!h>�������������������������������2��@��A��F��G��U��X�����������������������
������&(��,��4��6��9;
<=>F��H��I��J��K��L��O
T��V��Y��Z��[��\��]^���������������������������������������������������������������������	��������������������������������������������������������������������������������������������������
�����������������&'��()��*+��-��/��1��3��5��7��89��:;��<C��[\��]^��_��`��{|�������������������������������
������������������������
��
	��4>��?��BDEde��fg��hi��k��z��{��|��}��������������������������������������������3��@A��FG�������������������������������������������������	������������������������������������������������������������&��/��9;<=>F��H��I��J��L��T��V��X��\�����������������������������������������������������������*�%�����������������������������������������������������������������I�!�����*����������!��#��%��&(*89:<C[��\��]��^��`��z��{���������������������������������������
����
$4?��BDd��e��f��g��h��i��k��{��}�������������������������@F�����������������������������������������������	�����������������;��O[���*��C����������������������D��E���������������������'����;��=��[��]��*����������������������������D��E��������������������������������;��[��*��C����������������������D��E���������������������R��������������������&��(��,��/��4��6��8��;<
=>F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	�����
�������������������������������� ��!��"��#��$��%��-��/��1��3��5��7��8
9��:;��<>��@��B��C��[��\��]��^��_��`��y��z�����������������������������������������������������������������������������������������������������������	��
����
����������%��'��)��/��1��7��9��>��?��BDE��d��e��f��g��h��i��k��w��y��z��{��|��}������������������������
�������������������
���
���
������������3��@A��FG��������������������������������������������������������������������������������������������������������������������������������������������������������������<����&��/9��;��<��=��>��?��A��t���������������������������������&��(��*��8��:��<��=��?��A��[��]��{���������������4��B��D��d��f��h��������������@��F�����H��������&/9��:��;��<��=>��A��q��t��{���������"����������������������&��(��*��,��.��0��2��4��6��8��:��<��[]"{��������������4��B��D��dfh"�����������2��@��F��Q��R�����!9��;��<��>��A��t�������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F�����#9��;��<��>��A��t���
���&��(��*��8��:��<��]
{������������4��B��D��h
�����������@��F�����)������9��;��<��>��A��qt���
������&��(��*��8��:��<��]
{������������4��B��D��h
�����������@��F��QR���'��9��;��<��>��A��q�������&��(��*��8��:��<��]{�����������4��B��D��h�����������@��F��QR����-��&��9;��<��>��������������������������������&(*8��:��<��[��]��{������4B��D��d��f��h���������@��F���;��������������"��&��/��9?f��q��t{��������������������������������������&(*=?A[��]��{���������4d��f��h����Q��R��V��Y��]�����,&��9;��<��>��������������������������������&(*8��:��<��[��]��{������4B��D��d��f��h������������@��F����� ����9��;��<��>��A��t�����&��(��*��8��:��<��{������������4��B��D�������������@��F�����;��*������D�������
;��O�	*������D��������������G����&��9��;��<��>��[��\��^�������������������������������������&��(��*��8��9��:��;��<��[��]��{�������������������4��B��D��d��f��h����������������������������@��A��F��G��U��X����������������(��������	������$��%��;��A��[��m��n��r��~������������
��*��C��_��`�����U����������������������������&��9��;��<��=��>��?A��K��X��Y��Z��[��\��]��^��_��������������������������������������������������������!��#��%��&��'��(��)��*��+��-��/��1��3��5��7��8��9��:��;��<��=>��?@��AB��[��]��z��{��|��������������������4��B��D��d��f��h����������������������������������3��@��A��F��G��U������������������������������������������������������;��=��������%�*U����������
��
�����;��=��A��]��������������*U������������������������[����
�����/���
C�����U�����������������K������������������������ ��%��&��(��,��/��4��6��8��F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��o��q������������������������������������������������������������������������������������������!�������������������������������������������������������������������������������������������������D��
�������!��
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|����������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}��������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b������������������������������������������������������������������������������������������������������
����������������������������������������;��A��[����*��U������������������������������U�����������������U������������"����
AB[��m��r�������-��������#�*�C��_��`�����U����������������������������$��;��A��[��m��n��r��~����*��C���U�Y�����������������������������;��=��A��]��������������*U���������������������������������������&��/��;��<��=��>��F��H��I��J��L��T��V��X��\]^o��q���������������������������������������������������������������������������������������������������������������������������!�������������!��#��%��8��9:��;<��[��\��]��^��`��z������������������������
����?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��AF��GQRU��V��Y��]��a�������������������������������������*����&��;��=��A��]���������������������������������������*[��]��d��f��hU������������������������;��A��[�����������������
��*��C��`�����U���������������������������;��=��[��]��n����*U��������������������������������;��������������������%��[��]��m��r�������������*�)�������M�%�����*��!��%��)��C�������U�������������������������������������������������������������������U���������������L����
���������������������������� ��%��&��(��,��/��4��6��8��A	F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��m��o��q��r�������������������������������������������������������������������������������������������1�������������������������������������������������������������������������������������������������5�/����������
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|��������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}��������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b���
������������������������������������������������������������������������������������������������������������������������������������1������������������������%��A
[��]��m��r��������������5�����8�2�������!��%��B��C�����U�����������������������������	(��,��4��6��8��A
F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��^��m��o��q��r�������������������������������������������������������������������	�8����������������������������������������������	��������������������������������������������������0�5�"����	��
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��C��\��^��_��`��y��z��|���������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��e��g��i��k��w��y��z��{��|��}���������������������������������������������������������3��A��G��Q��R��U��a��������������������������������������������������������������������������������������������������������<������
��������������������%��A	[��]��m��r�����������������������1����������.�.���������!��%��B��C�����U���
��������������������������[��m��r��������5�
�����C�����U�����������������y(��,��4��6��H��I��J��L��OT��V�����������������������������������������	������������������������������������������������������������&������������������]_��`������������������������������
��
>��?��hk��z��{��|��}��������������������������������������������������������������&(��,��4��6��9��:��;��<��=>��Y��[��\��]^���������%��������������������������������������������������������������������&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��C��[]%_��{��|��������������������������������������������4��>��B��D��Edfh%z��|�����������������������������������2��@��A��F��G��U��X���������������	�������������������������������
��$��;��A��[��n��~�����U��������������������$��;��=��A��B��[��]��b��~�����U�������������������$;��=��A��[��]��������U��������������	;��[�������U���������������$��;��=��A��[��]�����U�������������������#��%;6=:A!Bb��:�O����Z�L�9�:���U��-;��<��=��A��O�8�����������U��������
��$��;��=��A��[�����U���������������������U��O����$U��

	;��A��������`�����U���������$��;��A��[��m��n��r��~��U��������������
��$��;��=��A��[�����U�����������������������$��;��=��A��B��[��]��b��~�����U�����������������;��=��A��ORU��������
������%;��=��A�����������U�����
��;��=��A��[��]�����U�����������������	;��A�����������U�����������	;��A��[�����U���������������������������%��&��/��9��;��<��=��>��?��A��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��8��:��<��=��?��A��[��\��]��^��`��z��{������������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��F��Q��R��U��V��Y��]��a�������������������������������������������
������%;��=��A��~�������U�����(��,��4��6��9��;��<��>��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��8��:��<��\��^��_��`��z��{���������������������������������������
����4��>��?��B��D��e��g��i��k��z��{��|��}��������������������������������@��F��Q��R��U��a������������������������������������������������������������%��;��=��A�����������U��;��A�����������U�����s(��,��4��6��H��I��J��L��OT��V���
������������������������������������������������������������������������������������������������$��	����������������]
_��`�����������������������
��
>��?��h
k��z��{��|��}���������������������������������������������������������O6��
�;&��;��<>������������������������������	8:��<��[����B��D��d��f������@��F�����O4���9;��*���������D��������������������������������$;��=��[��]��*��������������������������������������D��E��������������������������������&'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=>��?F��G��H��I��J��K��L��M��N��OLP��Q��R��S��T��U��V��W��X��Y��Z��[��\��]^��_�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������R�������������������������������	��
������������������������������������������ ��!��"��#��$��%��&��'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=>?@ABC��[\��^��_��`��y��z��{��|���������������������������������������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��4��6��7��9��>��?��B��D��O��T��c��de��fg��i��j��k��w��y��z��{��|��}��������������������������������������������������������������������������������
������������2��3��@��A��F��G�������������������������������������������������������������������������������������������������������������������������������������������������������������������'����;��<��=��>��A��]���������������*8��:��<��B��D��������@��F��U������������������������y��������������$��&��/��8��9��;��<��=��>��?��A��B��F��]��^��b����������������������������������������������������������������������������� ��"��$��&��(��*8��:��;��<��=��?��A��[��\��]��^��y��{��������������������������4��B��D��d��e��f��g��h��i��������������������������@��A��F��G��TU��V��WX��Y��]������������������������������&��'��(��)��*��+��,��-��.��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��A��K��X��Y��[��\��]��^��_�������������������������������������������������������������������������������������������������������������������������������������
�������������������	������������������������ ��!��"��#��$��%��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��_��y��z��{��|�������������������������������������������������������4��6��>��B��D��T��d��f��h��j��z��|�������������������������������������������������������
������2��@��A��F��G��U��X��������������������������������������������������$;��=��A��O[��]��������U��������������
A����U���4*$B	GMNOPQ	b~
���������
�������					�
Oc�TU��WX�����7

%$ABGMNOPQbn~�����������������
Oc�TU��WX����������$&��'��)��*��+��-��.��/��0��1��2��3��5��7��8��9��:��;��<��=��>��?��AK��Y[��\��]��^��_���������������������������������������������������������������������������������������������������������������������������	�������������� ��"��$��&��'(��)*��+,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��y��{��|���������������������������������������������4��6��B��D��T��d��f��h��j�����������������������������������������������
����2��@��A��F��G�������������������������������	������������������$������$��;��=��A��B��[��\��]��^��b��~����������9��;�������������������������A��G��U�����������������5��������	������$��%��;��A��L��Ou[��^��m��n��r��~�������������������*��;��C��_��`�������������������A��G��U�����������������������������$��;��A��OV[��n��~�����U���������������Fcc�^$0;��A}BvGiKMiNiOfPiQkR
S
U
W
Y3Z[\$] ^ _aUbrjTmnCr~)�����i�i�i�i�(�
����� �\� �i�i�i�i�i�i�i�i�i�kkkkk







'3)3+3-/13579$; >@B3|3�i�
�
�
�
�
�
�
�
�
� �
�
�



i	
i
ii
i

 
%
'
)
/
1
7
9
Oiciw
y
� � � �
�
�$�
�i�
�
�3�$�$�$�i3A G TIUpWIXp�~��
����f�g�&��� �i����i�
�
�����

;��[�������U�����������[�����
�����/���
C��]���hU�����������������;��=��A��OU���������(��,��4��6��:��F��H��I��J��K��L��T��V��X��Y��Z��[��_������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!��#��%��'��)��+��,��-��.��/��0��1��2��3��4��5��6��7��>��@��B��\��^��_��`��z��|�����������������������������
����>��?��e��g��i��k��z��{��|��}������������������������2��3��U������������������������������������������������������������
�������������������������8=(A;B+GMNOPQa	b&jn�����������������
Oc�TU$WX$�:����#AB	b	����U���	A
����U���	O1��������U�����O>����U��4*$B	GMNOPQ	b~
���������
�������					�
Oc�TU��WX���������$��;��A��OA[��m��n��r��~��U��������������;����������$��9��;��<��>��A��[��m��n��r��~�������&��(��*��8��:��<��C��{������������4��B��D�������������@��F��T��U��W��X���������������������������e�� <<Z9$;��AWBOGBK��MBNBO?PBQDY[\]^a/bKj-m��nr��~�
�B�B�B�B���3���B�B�B�B�B�B�B�B�B�DDDDD%#')+9;B"|�B�BB
BBBOBcB�����B����BAGT$UIW$XI�W��������������=�@����B�B4����$��;��A��KY[��\��]^��_m��n��r��~�������')+9��;��>@B|����������������������A��G��U������������������O��������U�������$��;��=��A��O#[�����U�����������������
������%;��=��A���������U�������
��%;��=��A	BQ����������U��X������;��=��A��O[��]�����U�����������������
;��A��Og���������U�����������H##?"$;��A9B2G$M$N$O$P$Q%Yab.jn~
������$��$�$���$�$�$�$�$�$�$�$�$�%%%%%%')+|�$���$$
$$$O$c$�$�$TU,WX,�:�$�$�������$�$C���������������������������� ��%��&��(,/��46F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_��mo��q��r��������������������������������������������������������������������������*�)��������������������������������������������������������������������������������������������M�%��������*��
����������������������!��#��%��)��-��/��1��3��5��7��9��;��>��@��B��C[��\��]��^��_`��z��������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>?��d��e��f��g��h��i��k��w��y��z{��|}���������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b�������������������������������������������������������������������������������������������������������������������������������������������
;��A��OO[�����U��������������
;��A��O$���������U�������������A��o��q�����Q��R��a��������$��A���������������������������T��U��W��X��;��=��������%�*�����������������
U����������
��
�,��;��=��[��]��n����*���������������������������������U���������������������������������������������������������������������U��V��Y��]������������������$��A�������������T��U��W��X��C������������	������$��%��;��A��[��m��n��o��qr��~������������
��*��C��_��`�����������������������������������D��E��QRT��U��W��X��a���������������������������$�������������������������������E�������������������������������������
D��E��8������
AB[��m��o��q��r�������-��������#�*�C��_��`���������������������
"DEQ��R��U��VY]a�����������������������������������������������������
	D��E����������o��q����������������������
EQRV��Y��]��a��;��=��������%�*�����������������
U����������
��
�^���������������������������� ��%��[��]��m��o��q��r���������������*�)�������M�%�����*��!��%��)��C����������������������������������������
&E����Q��R��U��V��Y��]��a��b���������������������������������������������1��������;��=��A��B��]��������������*��������������������������������D��U��V��Y��]��������������������������A
o��q�����������������������
6DE��Q��R��a��������$��;��A��[��n��~����������E��T��U��W��X�������������� ����������$��;��=��A��B��[��]��b��~������������������������E��U�����������������������$��A����������E��TU��WX����
A��o��q������Q��R��a����������$��A����������E��TU��WX��������$;��=��A��[��]��o��q�������������EQRTU��WX��a������������������������A��B��o��q�������Q��R��V��Y��]��a��b��o��q�������Q��R��a��H������$��;��=��A��[���������� T��U��W��X�����������������������$;��=��A��[��]��o��q���������QRTU��WX��a��������������������;��=��A��[��]���������������TU��WX�����������������$$ABb����
HTU��WX����U��������$��;��=��A��[����������T��U��W��X�����������������
"a���������������������������������� ��%��A[��]��m��o��q��r�������������������������1����������.�.���������!��%��B��C�����������������������������������������D
E��Q��R��U��V��XY��]��a��b���
��������������������������Ao��q������QRVY]a��;��=��A��U��������
;��A��O(���������U�����������O:��������U�����OI����U��������#�C������������������
����������%��F��G��H��I��J��K��L��M��N��O��P��Q��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������!��#��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C\��^��`��z��|����������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��7��9��?��DO��c��e��g��i��k��w��y��{��}���������������������������������������������������������3��A��G�������������������������������������������������������������������������������������������������������������������������������������������������;��O([���.*��C����������������������'D��E�������������������������%��������+��C���������������������
D�������	���A����������������#��%;6=:A!Bb��6�L����W�I�5�6���U��-����U��6����	���������������������������� ��%��&��(��,��/��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��_��m��o��q��r�������������������������������������������������������������������������������������������*�����������������������������������������������������������������������������������������������3�'����������
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��>��@��B��C��[��\��]��^��_��`��y��z��|�������������������������������������������������������������������������	��
������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}�����������������������������������������3��Q��R��U��V��Y��]��a��b������������������������������������������������������������������������������������������������������������������������������������v��������&��/��9��;��<��=��>��?��A��F��K��[��\��]��^���������������������������������������������������������������������	&��(��*8��9��:��;��<��=��?��A��[��\��]��^��{�����������������������4��B��D��d��e��f��g��h��i�����������������������������@��A��F��G��U��V��Y��]��������������������������������������������������$��'��(��)��*��+��,��-��.��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��A��K��Y��[��\��^����������������������������������������������������������������������������������������������������������������������������	���������������������� ��"��$��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��?��A��_��y��{��|��������������������������������������������������4��6��>��B��D��T��j��z��|����������������������������������������������������
������2��@��A��F��G��T��U��W��X������������������������������������������:��?������������������,��.��0��2��4��6��=��?��A���2��U��OR����U��:��?������������������,��.��0��2��4��6��=��?��A���2��U��
;��<��=��A��Ov8�����������U���������������������%&��/��9��;��=��>��?��A��FH��I��J��L��T��V��o��q����������������������������������������������������������������������������������������������������������������������&��(��*��:��<��=��?��A��[��\]��^`��{���������������������������������
��4��?��B��D��d��ef��gh��ik��{��}������������������@��F��Q��R��U��V��Y��]��a��b����������������������������������&��/��9��;��=��>��?��A��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{������������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}�������������������@��F��Q��R��U��V��Y��]��a��������������������������������������������������������%��&��/��9��;��=��>��?��A��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{������������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}��������������������@��F��Q��R��U��V��Y��]��a�������������������������������������������n������	����$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��~�����������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_��{��������������������4��>��B��D��z��|���������������2��@��F��Q��R��T��U��W��X��a��������������������������������������G��$��&��9��:��;��<��=��>��A�����������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��[��]��{��������������4��B��D��d��f��h�������������2��@��F��U��X�����������������@��$&��9��;��<��>��A��o������������������������������&��(��*��8��:��<��[��]��{��������������4��B��D��d��f��h�������������@��F��TU��WXa������������������������T����������$��&��/��8��9��;��<��=��>��?��A��B��b���������������������������������������� ��"��$��&��(��*��8��:��<��=��?��A��[��]��y��{�������������������4��B��D��d��f��h����������������@��F��T��U��W��X������������������������)9��;��<��>��A��o��q���&��(��*��8��:��<��{������������4��B��D����������@��F��QRU��a��b�����������D��������&��/��9��=��>��?��o��q���������������������������������&��(��*��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h�����@��F��QRU��V��Y��]��a��b�����������������8������$��9��:��;��<��>��A���������������������&��(��*��,��.��0��2��4��6��8��:��<��]{�����������4��B��D��h�����������2��@��F��TU��WX�������������;��A��U��7����&��9��;��<��=��>��?��A��������������������������������&��(��*��8��:��<��=��?��A��[��]��{��������������4��B��D��d��f��h��������������@��F��U�������H����
(��,��4��6��9��>��o��q��������������������������������������������������&��(��*��:��<��_��{��������������������4��>��B��D��z��|���������@��F��Q��R��U��a�������������������������q����������$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��{��~���������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��]_��{��������������������4��>��B��D��hz��|���������������2��@��F��Q��R��T��U��W��X��a��b����������������������������������������$��;��=��A��B��b�����U������������������������G����������&��/��9��;��<��=��>��?��A��B��b�����������������������������������&��(��*��8��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h���������������@��F��U��V��Y��]������������������&����$��&��;��=��A��B��b������������������������������[��]��d��f��hU������������������������c������$��(��,��4��6��9��:��;��<��>��A�������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_��{��������������������4��>��B��D��z��|������������������2��@��F��TU��WX�������������������������������������7&��9��;��<��=��>��A��������������������������������&��(��*��8��:��<��[��]��{��������������4��B��D��d��f��h�������������@��F��U��X����������������<����������%��&��/��9��=��?��o��q��������������������������������&��(��*��=��?��A��[��]��{�����������������4��d��f��h�����Q��R��U��V��Y��]��a��b���������������<����&��/��9��;��<��=��>��?��A��������������������������������������&��(��*��8��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h��������������@��F��U���������u������������%��&��(��,��/��4��6��8��9��=��>��?��o��q��~���������������������������������������������������������������������������� ��"��$��&��(��*��:��<��=��?��A��[��]��_��y��{����������������������������4��>��B��D��d��f��h��z��|������������@��F��Q��R��U��V��Y��]��a��b����������������������������v������������%��&��(��,��/��4��6��8��9��=��>��?��o��q��~���������������������������������������������������������������������������� ��"��$��&��(��*��:��<��=��?��A��[��]��_��y��{����������������������������4��>��B��D��d��f��h��z��|������������@��F��Q��R��U��V��Y��]��a��b����������������������������H��(��,��4��6��9��>o��q��~������������������������������������������&��(��*��:<_��{��������������������4��>��BDz��|���������@FQ��R��U��a�������������������������p�������������� ��%��&��(��,��/��4��6��9��=��>?��o��q��~��������������������������������������������������������������������������&��(��*��:<=��?��A��[��]��_��{��������������������������4��>��BDd��f��h��z��|����������@FQ��R��U��V��Y��]��a��b������������������������������%��9��;��<��>��o��q�����&��(��*��8��:��<��{������������4��B��D����������@��F��Q��R��U��a������������
����A��VY]����������A��qt�����QR��q���QR�������A��t���������������"��Af��q��{��������Q��R��V��Y��]�����������������	����A��VY]�c��_	 ""%AFa8eeTggUjjVooWqqXttY{{Z[��\������C�[`y|��"��$��(��-��/��2��5��6��9��<��>��@��CXY
_d%%i01j47l>?pBBrDEsKKuMMvOOwTUx``zcm{pp�ww�y}�����������������������������������������������
��23�@A�FG�QR�TY�ac�||�������������������������������������������	(` 4;4���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������G����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������+37���������)����������������������������������������������������������������������������������������������������������������������������������44')'..	+
&
(/& %0)31	




&	
	
	
	
((+   





%%%	+!!","9	,,!!#$#&
$$
!:-78"#78	
--"#( %
))56'56'01/****22"			$$
#
3))%%	"



&('						!

			

"



	!

"#
	-#

./0,  12
,
3$
 $$
		!

*+*+&'#

 (g &&(*,46:<<>?FZ\\1^_2oo4qq5{{67��8��O��U��e��k������C�[`�y|��������������������
��������������������(�*
7E*1G47O>?SBEUKKYMMZOO[TU\``^cm_ppjrskwwmy}n��s��t��u��v��w��x��|��}���������������������
��23�@A�FG�QR�TY�ab�����������������������������������������������4~DY|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flQ�[�|�xJ�ffcF�F7y�tw�uuc����f�`���P$c���}�}|��y�zc9�V:�@;�6w���w��I�JF�:+01CrCC/08@�..��!�����=./��/}/�{����(��,0�3B������d����Q�I��4�7��T��eJ�W�K8��i����3�} u�,))
v�u`�W�Wk�wn�l�mi�9J�J���t�t;�;/�/'�'y�y���O�#,Y&()*,-./01234789:<>?FHIJLMNPQRSTWXYZ\^_n~����������������������`lm�����������������������$+ ���������������������$*06<�Y����n�3�����T��n�y�����$�������:.J
n�9�9��E�]���������� &,28n�y������*06<BHNTZ`flrx~�����������������n���3����T�����������+�Y�+����
��$+��$+^djpv|������������������Y����n�3�����T�������"������դ'��^#�+tvlib/fonts/raleway/Raleway-Bold.woff000064400000254170147361034410013270 0ustar00wOFFXx��FFTMX\����GDEF�tv�2�,�GPOSްy����kGSUB�����OS/2P`�gNcmap
h	�^-R�cvt �N���fpgmt���Zgasp�lglyf L�6 �8�C�head�66��hhea�!$�hmtx`�����loca0\N?��maxp�  �\name��B��Jpostƈ�#�a�1�prep�L�O(���r�_<����^#�+tv�6�1hx�c`d``^�_������?!VC�2`�vq�-in/��Qx�c`aJe����������
��������
�0����+P��7�b,M����ؙ�).��@xڕ�ml�����Oy�B��/P
��
�P��PТ�Ѡ��a�������m)�2Y�b":Q(t��s˜��d/��eF��q.*E�NB7XA���O)teM�����\�ש_�Z��Zt��S~�i�{\i��&���"��LU:���W���"�Ju�EMS�܏Ԡ��_�X�Y3\�n�35�ר���(_�R�N5~��0עq:��.�]>�8�3���c�jQ�?�<D����U�<�/�O�ٕA�5��gl���
�����Y�ip�
������|H>U*��ğ�'���U��j���Ƃ5~�&���^��q��ȝF�����P�{@E��q�4<i��A��Kknt^���u��ui��6wh�l?IC���}gO� ���ڍ�R��ߪ�A�3�%�&���U��J]���4�WK�|]U�ql�Qs��jc5ו�ʽ�9��?�� �>����`�qw"G5���*Y�m׸h/�>��3�5(�}|2�bUb���C~�EY�
��_�{�C�=�v1[�%��֠ˠ�kP��-V\I��-�A�ػ��9�bՇo�E_�Ȓh�ڙ�h���������oh��;����S�!��9�f$:~9����0�"X�*���h(�R�1�c!NL�Fċ��5q�,��V�q�����k�sW�m�5��`*���,��A����������7Yl'VvhL���u��{��'31����U�	y��eeI��kTs��v����5-�~��>fL!��{핬͛��/2k��Ҭ/Y,>����k9>r��[_��N/�:W�:��fYY��!ן ��k���W��ۆ���I�s�/���E��T��W�F�*q��1�>CeP94�q�?V}N@�ɘ�J��&<Y�4T5&�O�B�� �̓�(�������,z��s��*K
c����XK�#��֙-�e�j��ؖ�R���f�5�uWY�?���w���I��Þ����t3~�z�!{�7������*��0k�-�����dzH���Jd��;l
1��
P+q�.xo����'�.wF#�ߟb�ꎭ���h59b�m�{,��kBd�������p��‡�\�i���}���qw�Ǧ$�.��
�&>���|�s=ȿ���&QK������/[�ߡV�|�/Ғp�t�c�.�~�ҩ��s|�>�*�j����o�A_�g�.z�m-`��%����_	��_є�
�f�ń�(�C};6�������DOp���?G^\@-�v�iÐ��o�Ս�w����&�/���~*w�	=��5�(���d����ţZ��nssAo����Q�f{���e�*����f�,fc<k�,�sf��f�\�;�/f��烯��i��	z*Dw��LS�g��D�K�q���<|�۱��N��/���K�R���z�Ł�g�N&h1��+k\��i���m���+smR���c�ճ~�T.�֭�F�v�N�ۧ������_�����~dH�@��} �?��^��\Wc��ɻ�2=�1hc�do�B�} C�7=�?yC�0�S�v��^�
Mp����O/�Z
���[���63�����zw�z�o�ݼ��ϵ����c�[�����=���oW�ׁ>��
�h��դ���o�^إ�Q�}?s��׶jx��B�6[��h
1\�sםj�
55Jk^����y3���=�q���tNE����4�4{<H~�������3�}X�!�t�ۄo��Y_@����kX�.򳡽���6��SS���h�4}��@_�y��1�������h#��5(z��ܣ�/Wh��	��%�k�����nD�&ޟM�&�������U�O��O>iU*z���-�Wj����j85�,�U�O8�l��vή�{�:��R��
��X�ڍ�?��2�=rǑ��[��<������O4�L�
;�7��۰�������^�ί��s�R�L��>{K��;�g?����~UP�k���[;xw�3�\���_���-�����ñ�k�c�x���YLUG��\D�Q@YƹG�Q�Tp�Zm-VA��F�JXTԊ�T����&�EE�j�K�i���C���Y�&�ɤt3��.M���d2߼L�7���06�0Z����e�W����zլ�cM��]d���1�B�X)AJ��$�tK�/="�|ɏ(�"(��h6ͥf�'ݖ��By�\![�I�p�L�,>���`Ν|��x"O�x���.����c�8o�g�o���/E��B�"^$�$�"J�nqHt�n�'�ŀ�⺸��r
��t�9ӝ���x)~J���(\�QV*���3�|��˲F��R�ã�`�]�=��=a�K�R�GyM�)}"}C /[9�VN��)!�Er�|���qD8�7��y<�G�8>�'�e|5�湼�W�Z��<�!�q�2@LaBx�s�|��\���.�k+ϋKbH\�(Ӝ9��a+'�ʩ)�x��(��κk
Y�V��f�Y�V���ʷҬ�V�k>4���.�y�l5[���<`�e֘U&7}ܿ�G�W�C��9w�{���]�.7ڍSF��d4
�a㠱Ϩ5��F�Qb�4�F��i�7���
}��X_�/�$=Q��c�(}����D{�}�}�}�}�}�=�h�i��
�L+Ҷk۴<-Y��6���A�^�S��5j���.Q>��W��������%��.l,�ҟ��g����N�8xc<|0�v���1���D�1S�P�3��c��'LGf �!
3�<�X�a�1s��0�1IH�,�",�,�2,G
^�
���X�W�*V�5�b
^�Z�Cұ��Ld!9؈M�E6#(���pGq�Ёt��Ї~�LJ���K��A\�0>�\�u\�M�-ܦl�c�ڈ=�B)ޤ#�D����N��:�=l�n;�m�ʆ�v��2އoc+J����Yj�.��&�c�G=N� LkieP&��z|L]��P!UQ>P/�Q��ʢ\@�p��]4�8ъ6[؂38��aGY�X3;�ZP�N�V����ewxڍW[o��R{�U�6��v�)�����U#!�ڵ.��ҮR�Sr/��&�Ӌ�Q��umL��o���yY��~ȏ�P�3�]]�%���9g�9sn3n�������O�:����o�xr��7���/?��O?�����ƣ� M~��{ww���;�����lksc�F�6k�E+��Z�5�--��VG���h�RK�5P�
�
�#wk'j�9�;�U�*xmzӑN1X`��VOlm�F�-��nd��3\�Sv��N�љ�
=�
�/�7�h��J9�؜x�d��[���X�A \�A�UX��'-�Ӟ�o�#�4���C1���n�x����ٞҭ7a?OL?Q|ȹ*ybЍ���D8�x'�Ŭԑ�pyON^/�p��f���^lg����A��/��K۲[�j���h™
5�&(i�i��,x�]���$d�Xc��C�B�ѫ�Yl8�
�i�$����S�`;6����`��y�l�)�4�τ�bX	�aÞ����_cU�}Ӱ�-'�
�X�Y5t&��NNyJ��`М��0�<��ۧ+��}�`௿�X�gi���7q����ά�A�Ц���k�"�M�<�{mi���Gb�8{�m���5��-�B #�t�ei�OiB�M4W�s��Pt��
�@�;<Q�$@�7;�CQ�5���s^f<�=��Vj�����X�a�g�L�0e���+��m��W�P�a7�w���U(RU�NV`�ȗ������k�B�
�w��d.��‚�S���{����Z|fF�K���X#l���`e,��	twwiN7���	X8e�e;|;2j�c>TcK����'�r��ჴ$b`��a�{�:�$N�-����=��H�!�\>�MȰ�����:C��S�\6:Y�4���̆zX�]+��S�E���Q���$U�.yS����7�MT��aJũD��&< �����i�aZ��IR��X��Z}��=Z�:��$�I(��u�*��R
.*�]��.j?~��a.�rT;�^:.����5�'Ў�"�)�TT�: {_��
��=
D:�IO�zn�j�7�-�$��m	áZ�3��Fu�V�.�˒_��Z�Qp��N�m�7y�kW��d2��b02�U�1_7_}d���)D���!�h��l'R�)IY7t>���e i���GA;��W�6`�Q��l��~��G�ߠ���af ��Ҷ�N��}�Вn
ݪ��xp�*@�.�rN�}(m��iu�Ї(�c�B�|P��zMf;�T>qPH�����]��D��$����Z�d�!�d�\�iujz	g�5��Zg™%�>���-�����y��yލ� FfV)���{��Ow�
�-��a��*�z6���ƪ��:PTZ�:���î0�ĺE�����p�/mfU�2��b9��2�=��|�^��٨ae��\��QI;��}��JS?*:�X����<��q0�RN����NΐE���Ć��7Β��OX%���jU#��ݢ挃6��6m�y�ԉM�i)��e�ߢm���ծA�k���͗P�K�+��H�2�c��Ձh���	�:�Mh��1Th�����6F��5��y��g��<b�:�& �ЛgR=��ƅ���7>��G�3��Ō#�2��3p�)B�ϛ0׊��U1�+�U�s�"�ފ��i������%��E�:�?��7c*���{y~�'`������B{S��]���ۼ�����h��Y�U�}yZӹS�����^���#@�R��N�,���K�C���(��A����T�{p~�sV��i�mU��+�.r��4�uH_c��,�C�c�D�[��us�={@���;�b�+&'�Y�M������KΛ����2.�6o��]���T��gHNCG�7l�Ճ�FV[vjt˛^����i>�Ԅ=O\�ń}$��q�%�P��O����R���ԝ�|	iM؏�|@g���pW;h,P॓�.���T�W3���K=9<a�oK!g�5����2a؍�Q����=���"�? �>4~k!�\��_I���&y�x�M�INBA@���f12C1
ڎ8O��^(b'4,�p�ʄ
��d�qŎ�x\�|����We�T.˲�g��X\�Ca����o�n��	\�.s��"��8�,�,�p�F8I!�Q�'8�#�c�(D�a�D!D�l�� ��V��ڋ,���#�2��j[x�]ؤGٔ��[�-�I�D�W}x5�b
X��Y��ٜ}3dN��T�i�1��:N�w�t*�|h����D7�6�F�;3�	��2����[4jM��M"���Tӆ�s0 ��0G�ƗN����>�S�>T�.�s�Ԫ���������o�/W�ok¿`�h�x�c���t���ɚA�������o �����qA�"DAu D��� R�A�A�I���q�Ռ{����]x�]�mHZ�`_ך�sιfffv2=�Gff'g�̜3W������s�6gΜ��L"bDDDD����C"FDDDDD�!2"""bĽ?/��`��k�-���;�g�p|�
߃'���פ׼�VR�)P�/e3%q]}}��_��TB*���0ߘ�q� !�;b��H�aҠ4EZg�H�a:&ݘ>�~���d�33�2�p$�BJ�f�F���t�\CaQ�juv�|Kr�qk�V
�=�U�ۼێ��n�o_`(5�3�YƜ��Kpg��_l6��v�u�ww6�)�Tg�3�2��a�A�:���m�08%Ίs�p[Y�,LV(k0k?��c�����C�~?���w�I��lT6)[���gDzdz���gC\���%~�rRs2s(9�Y�~N"璈$���('�N�&�x�����r�����ܟ���$	CҒ$?)J#͒�Hk�=��U*�����)��y�y��L2��#K�zr9@�#%#/���'��|l>%ʗ��c����W l��F���0��� ��P�(�.P�<������c
���P(EF1P��I�q!�]H.��5��T�ʧʨF���Q���ԟ�}j�zFK�e��4MH��ܴY�*m���v��8��
�
:A�9��&��"d��U$,�+�.J�-FŁ�=���N�Ѓ�(}�>I�N_��Џ���KF*���i�2c��q�D0��b&�)g�.f�9Ĝb.2י��c��a,.K�Ұ�Y>V�5ƚg���Y'%�%��DQ�^,,�(Ygc�x6�
�l�����1��{��`��/Ja��R~��TS�(�)])�*=�9x�����8ӜuN�^F)��ˬe}e�e�e�e'\�̝��sq������c�S���K<O��x��.�[A�`W�W�*f!8@\��B�04-Cqhک�W*+���ʙʭ�+>����O���{��0�@/�
F�*d����Q5P5_�T�SuP�[��=˜pNx��|`x�Z5�ZS�W=Z=[���hj�5m5�_ͪ&��"��)���k�k������`�t�v�1L���u�:j���Z��K�%jɈ��a�C�C��ɇ��t�@ꔎJ�q�#�QۣC6);�'�s�%�
����
y�\ w����u��c�c�c���T��!�pژҘ�hhk�o\k�n<l<S B�KV+���EBq��hJo�7���&~�����j
5
5�)qJP	)eJ�ҩ*wTDKU�R��*��G5��V-�6UG�3u���|u�zA}������ēs�D��5m�ƫ	h5S�%ͦf_��mF7S���
��fos_�D�R�v�-\�ӂZH+�j�vm�vP;�]�nk�g:����x:�Ψs�ztc��-]R��l�Toл�a��~Z�����_�d�0Z�-��@�d�b�F��+�2T���k�5�f+�mC�p�jn�h
��N�~o��z�zfD	F�Qd�=�^�q�7��MpS���$1�MNS�4`�0͛�L��s�g.6�J���g5Ϛ�w�,0�B�p-R��Ⲅ-Ö˪�riEZ�V��ڪ�Z�k�:l���Zw�	�-�F�1lB��f��m!�W۴mٶa;��av��lg��.�k��v���>n_���ɧ����ڧ���m
m涎���om�g���\�V����{���'�Y�}�ǟ'\��1�x�~��� v��$��yy�D;!g�y�J�j���+��v}w�}-=�:��>w�������%�zd���3�������x{�%y��o�{�/���;���H�:��������]�ǿox�{?���o�D��ۥ��Z��u��y�#08�~0~�����2�
���`op:�<�v+�����nO��6DiB����r(�%C��ˏ����0&,;��/
�~��tЃ���,F��?�D#C���dd&�Y��#��^n��w���g�s��I���7�w��E�e�K2
�Z��ѕ�V���+����S�K��������,���b@���H�*�xڼ�x�ŵ0<3��{�]m/ڕVZ�b�M��[�{�6�M�B
C��4B(�����`RH�!�܄��B^}3�[$�ν��?�e���yϜ9s���H�b��3���yݞ@V�I�SzF����:�K���ղJ��?�d��U9�`�U�e�1�]&G�2�O߃�4��'$R��zzV~�^}Y���T S�HJ��'�ZuZ�d�333P
�O������"ϖ���M���98̇t�-���S��4�.U"�����3~��y<&+p���:*�A�U!�S��e2�
IM:$��0����P��1M_�%��^aZ�z��;���i!���7��os]s_lg��֝��7�/�5�3q)���껮�n�đM_�6Y�M��G���ވƙ8�t�r�K�r��["H�|uQ$*2�xBa$�F�-�X��K��95�B"��(��y5���1���uht �N����L:��f�1��t�t
7���^q���3�?��j+��r[�-#�3��%q�{I������J���Y~���+=�]��q�%B�A��{L
urIwaY�h���v]���YU�Pn�����Ǔ���?��%��8�� \֕���B��K\���Q`�H��i����5E
o<*LuB2�G�`��/�F1|96��:�-�F�t.m�?�s�Z7��sU��y�����--��y
��S�h��ƪ�����?
�W	�S��7��	oB�4x�:���R�h;Ol��+i15��H
K�R7l��P��0ҩN�Ms�J>��3��(���_jI���S���⤯��*x#�����l�,
E;\~���QG�N���;�L��x2�Ѳ�M�m	{�����oɵ���6�m��F�[��*l���
:,��)*��g�a"���X�,Qy$m<��B;�P�ӌĉ�gry����Fay�������?�1���7��=bZ�eWz�Sk�]��0L�����Q��$H�a�P�k٘ﳆ[T[:���ޣ�v%�>�4�k�rSd���4�
�c=���F*��%�'�$��|��ɔ��"b����`Z�7
� pQ|P3��i��
�α1g�0�Y�����o�}H��Y�<�R���TJ1�z�ޛŚ���r`˖�{������M�� �g!f@��z3��h�p��rI����~����p\��.zǪ0�u�0����<��1@�"N�$黸�[��V��a���s��"N$��ѱ���'t�t7��4��5�&�̪����+6��@$0�,x�O�$p�S!����˾^�l�ۜ�6�/��G/>�r�%K���-�Ŗ�rK�+�/���4�Z�K�R��W�0��~լR�JO�Φ�
ƛ�2�O����o	�&���8p�ef��
��)�v���A��<�X�J�@a�W�@ƎHC���`p��<�2�B$T0B�>����Έ�r��^�lR�^��w~�����]
��C�y��m�kun��`UnT����hڛ�d*�զ9@��^��)�0��`4��A~EI���'�㧊c �N�x ��B���j�^���-�]2�78jΖ�#�l�R����:b�����m)�
�-L��:פ��.2�i���b�iZ뜭���lp Nm�n�*d�s!r<2�@��b16M�x�`!M�$?��B��t��¶�O��+WV��Cw�_��_z'������$�0=x$J�u���02;d�6Ԛ�Z7��
�c]c��V�L���]P�]ם��c���}���),
�9�7c�[�����[z/��a�ΣW�������VyE�%��`,Ȩ�C	}
�\��ϳ9(߽{�]�*���5:j��8�[޻tdo�cO�����|��ѥ��ʫ�D������o[ܳ��_Ÿ{��I���ʆ�B��zʞ�A�#�J�;��⺾�o�P}�n��e���3 :�w����i�Kf�!���+��4�s��橱!<D9M�@X�7VD��蚧�51�o`po�'m1�M-����@���3�t��ѕ������sG�hju�Zm����=���ݡ�\���#i�95��e�2e��m	Z����)m	�m
hu~�٧��f�Q�
�3�9dƜV>7e�h9<��D�¹X������ս��Sh�CwktOX���e�� S�-�����k3��KWm�uΌ�;�ۉ}��ԷS}�ϓT��%1�������[n���A���A���q��O ��Q�4NM}�5C�η��
SF�*@L�_�ȉm��,0��<>�f)�g��Z�]C��{���*��7�|ç�Ie���û)βg�c�~��*~��	՗`�+�^�������Z�������Y>ĝ��.|�?���n�y���=���0�x ���u�i@���MM	CN�!V	#���2�ϭhm�[#f{�%]��o
�t��֐ђ���w�BB+69#6[@g�i;�E�11�q��.������Q�O��.ƊV�I�{��ufs0)�J�5�����v���gp0�6�$�'�rd�a�M�3�ƺR&��a�ocE
�"E| ‡T𴝨��K>62����r"���q�L�,ɯh
��Tk��d�Ht�������bS{��Mƣ�*�!�*|^tѵ:�9�1Jg¦�u	�:��k�Ş��9�u����]6����4��=�cv�t�W&�S{�{��LT�.����y7�O��Xl�*<��g3�5BC>~��!��rP�cČ�/D�/�~�D*��y|�H"�P�)�k��h,����7
�At�pJ?�7�|�}3���i�<�4�@�'����[�=���
��`���b�X�SS��i=��M�@�,�'Z�}�<�f:�uV��S�L�4x��o:��9l���+���{
_�XւNd�[�k�u̅_7����1�l֐�ʈs���>�
�ssYf�q�#���O��7q�Y�"l�
�F��#g|���?�ݮ)��2c�#?s�U{��G�\��[���R��ŵ-}-��AC"Н	tm���7��g0}$@�e�� &�����ÑSFK��&(�@t�����fj]綾��K��޸�pS���j������c�R�I�P"AU�fG���z��Z���c0R}�t�gw��)V�ߌ/^�T��5(����硥��˻�oj>BOb���\�,��^��%~QE�I.&`"�4a��0j&��6˥^��f�j/����Lfݕ#�>��b�Ph�ٝ��X��yK>	a��v��c�Wml�Ͷz�驲�-w�P��z{mL�j�A,<�UtTdPt�ګ�=�xޭFǎT���Q�Cƫ�C'��@'��:eQ�ꑣ�5n#��|��b�è$���'��95���X����SV�QMfۊĨ�V�ٚ�ꀗT�Zz���1/��1X�
	#��/�lQ�O��iC0B��Q�rw���}��V�oW��˫߮u���:1<>��G²"�b��v<�g�g�4G��gĐXG����Ռ�!$�b7����G�������jq'��8Il�O� !U�H�h	 ,j謹��EG/�/W�0�(|�t;�)'�S�״ Hd��u&�3��/�jAV��FX|hu*����ءU���C��ڲc���՞K��2V~ǖ�����޹�p�U��pkl�7�&�Ͼ	N���c��B&�3H
��aE��������mc��C&���E'B}ю�}�[lY�?c��F�#n����:���3�98����Z�q�4��{��旦�2:詞P�"J~�V���8ݏ%L-U*�@���خ�%C19^r;��O�}���[B&[�8K���Nu�o��pf\����a�C4��"o��1��ԋ���o�p��|[��n�H�o=�I�my[�h?�|C��Mƍ��YK�2�R��c��44?�bF���}�Ȼh	;��qi�9ɡ��s:9��N�Դ'�#S�*��?�9��$S�A��}�¦C�p{�S��@�g<B~>�!O�@�O�>,n�/�|�DҊ�o���Z���U����ϑ�MK�g�?�����N%���H �x*PE"�&?��h:
���4c�b�R5�����e�]��;���j��W}�++ы�W��_� ּ-��>�Ƭ��1�Gj:Pȓ@���b=.n�Aes�U�;��ԧ>���?~��?��zw�����w�'�<$�	!��E5�P��,���/�Y���b0_�����	OR`nD˨�\�1��&�J�D�z�M�~�z��W��O�����֪���|�GP�~E�>�d���4�h/�zWW���8����H����ޠ��CZL�/�g��G�ml�G�l"�ag�n�߱r��(���Y�AG���X3�C��X�k��O��O����6������8�EO�T\��w�s�4G���m��3�M��F�|�(��O���[�.1�~���b-�"e�;���y<�OZ1[$�R)�in���Ps~?M�r~������q�F��N�z���7�{�}�bdq$���c�J��.	���g:������f��Z��}��Ԗ�9�+=��[�kЅ�g�F�E:�I��H[�:��H�S��Y�ǭ�#2���"���Rʵ�H�͵�yV��J��fC/���[:�Y���V��%���U�,~���]`�%��j�v��\dtc[��Eኹ��G�1�:�Q��2>@NL_�wP�15��-&lxd�D�a�<=�=89y��u�'���wL��M�ZIdlcn�򑑎�����*�&��b:�q�k1� ��B�*bt��
O�]���b��0�����OИ>����ё�c{_q�eF��|q�/��V���}�h��L���P֩
z�P0z�P!
[N�̘�gw'3-#ȯ�Ǭ�h��*���F7�3B�L#�wYͷ۷��Z
<�X�i#6m-�f4c�w-�D����D!��S�u#X����A����_�����k�K"�6�\���A�Y�p]�P�C�nw;�K~�	˱���F#��İ$t�v�Y@*�s&Q`�D����,ɺ�]VeH��>�N���gT��"i"柮�c�c֍}C=��ƪ�V�R@E"�蔍ɚ�q�FiN�Y��@(�4oP�Y���u��+�q�]t��侖a��td0bY/2�<�,��;S>�!�e�#��
���5U����A��;�Ӛܡ0��W8cfK��t��������I�K�jaE*P*a%���^5�h#T7I���æ\D23c�Ԟ.�0P�%]�ױp}/��m��=�@��kI��8���"�4��Z���A�����#t��i����Q�P��N#pW�)�JM9$04�>[Q�Ri���2�̋F�j�D��"��?��L0f
�s
Ö[Y��P��>�HyܨY=(�z&�j�#��̼y���xp��&��1�!,cXJ�x�/�(�mM֡ki�@�cƤWy�됽��}�u�Y$��+z;k81;0�����;�j���*̘�	�R�R�����͈�LH�����dn~�3�@pPɽpl����.�L�<r�l/%�o�@W�#�gL�!�/�so�H��7�X�
lNd�s�s�1oD��|T2s@׹�5�喓�X�m��͵~Xҍ��/�i]�3iں�>?����@`p�\�<�N��t���
v�$X���G#�g>�Bel0���W��D����x�S�1>�����\���և�1@ub�>zs�
�,KX��u�iϞ��o߲��^}V�,�����7�;�bٖE�FW,���-b��\���	+�-T�x^*E+��,���RS�+���S.^��,*cm�p�B&5щ��L��ޙ�{<��[�-zg:��%��Mm��#�|���N����惆�]��sEZ�|�"-��-e9#�RQ��U+Dh�d�������3�ۦR��V_@�ݹN�0����"��p����A�^������"�9ƗF/�j�e�D|uK0nIz�����M�\hȯ��g׊hE���l6�^%��̢op�i���-M �X���N����8��>�D��K�xb���"ny[ͮ��A����D�������mz}Hfj��B�n��g���I�'�o�vT�^VJLP`�VTjIEV��+���W�zS�3�M.[�m&��#��Zg��Zy�wWϲ��P��������G�Ƹ�-�6J{1��5vb5;Ilv�!)
�o�x�u���d�]���s�3��S��i������
F��T����d�$��K�~�{�Ԟ�������\��՝������⡇~��Zܡ�}(i.G�@<9πH.i�c�N�I(�J����w�$��Wo�#���#٣ͣՏ��xD�~򠈎[0kE[te�DtJ�H�&�)�q�;~65�qJ�f���o:x����p�ʥ��	��(�
x��Oxn����^:�iY#ޑ�xGp�x������;�WY׬[^}t��2��b_�ϊ��*%A	]�gS��e�J0f�#�ɵC�)�J���-T9�
�\-�8��*�~�w�4Z��:�C����E��^	���k�qO��T�f�|̭�0:�@m�,@`�avĿ�ro6���02�{��Q�s���*��!�A�Яc��5�?��
��$��+�p�i��r�a�������
\�1U���*�m
W6�+��6�tD�·}���&��(�Xl&��^��l��͙����L}��B��K'�ɥiq �SR�o�N�����
�ހ"�:�a,kt~?Y��>���RP�t��$��1��Xbŀ��UA5v�H�\O�Q�`�.����o����V�,���v�
�1s�a�[�^�K��N�]�D�g��
��z��4+C�%�.x��=*�!��%��L�~�^�c+b<�~^���è�iqŤf�&̃)�o�b�Fl�^e�P���X	��Fx�z��7�]�B�.��i��0�FU�i�ͭQ��kp�:�R��2�Wl���Tv�����Բx[r�'���B_��Vp	"�H�I�R*�bv�b`7�'�c?;���>�е;�8�l�(dC
��]�

��a�`�8�_��!�td
��>�J��O
�]y�p�ߩT�����5l6�����I�T*�ƼÞ7����*��?՟(:r�o1�5nǯ�8��Ȓ|�	��F�ժD2_��F��u�"�eS8Ǟ��$6��%)�#����	��y�?�/�=���\:��;����m+z+��f��{�T?�X-�2��a!P=�X�a�]�α5�~�R�@Qu<
g�+~.2�|�KX�c����p�>���%%�LE��w�+�lm	�0��<�!��w�["��n������6<K�e�6�7�
��ò)g��6��ڞ5I�@a-�_��e��-bg��*����:��+����%��H�	���S,w�TN�� ��F�v�XQf�2�@D�T�dj��g�P�ۢ�9���ef�T�I
bv��5� zS%��Md����%��X��rH�J_�|�/��Vve�_f���,X=�/=���m��o��ֶ���{�K&V��d*_q�X~u��ٹ��x�����QY�v���i��!e�
an㵋Ǯݐ�m�vl�s���{��wO����wO�y˓��Do��ԙ$:O��9Ur�:�n�Q
�q�	�쉧@��4��-"Q�;���_��/�4���d�rpZ]�w$–NՓJ��9� V�zF��Pj`�'�������)�Bn�<d��R�ҫr���xw2ۣҺ�:])>:�U)��a?��R�d��@`7�xA-�?þ��h՜@.�2�e��u
]�'K��Z ���B�VD�
�P���
��@׿]x�]Ow�?�|����o| ��A�$��ug��R=
o����K�uo�s����"uo�&�
��>Yӕ�dr�A;f�Tn�q+g�3��gL��H�y��JY�r��e7N
�7.[u�dbjo��S����k_w�t>Ӗk��n�����Tfɍ��1'�'v���L$�6�볦�����]����P:���X�dy
	���)o;p���nI��Vb>���H3���y2�@��I�=�Z,�F�I$2�Z�'��B��R(�$��2�R"��B��O�.�_;��P+��K�T������A�N�2-���n*ul��^�w略�;�m;�ټ5�b��R�(�Iu=.��R�JQ�sNa+[�a��~`�o.$]-�#����	K8�eW�Sx]v0���=V�[e�.�`�'���%V�j1[S����(��	��J��G�u���Fhn�]`N��@�r��5��;�
�{��b1��Ie�Ǖ��B�Lj<
����f�
�,V�Mס3+Y�'&�¡���J.O��>���l��2�&��.��ڊR��HAs�'G1�“�;6��RQ�J�w�����}态/���v=��Y����9ƴGk�U?³�"����oY��Z��Hf0���@�[���[O��F!ϺfЏ#X�300�']��Ҷۙu�KМN×\���b��:w�ź��1�'��ge���	x�.��v#�ž$��m6���i�yJ;��z<�*R�'�H��� <��_���/=Y��4�R�W
��^,tU��c|k���4KlvH���a]~7��V�jo����g(Q��&��8�N��щ[�A�)h4M���g����Lf2���|�'���z@��"����` dHlx6�_�-�B��>� vQ~��ϧwm����fڹ��\�~�
�T��������mj���;�O���A���|.�L~2S(p�s���X�%�-�c�>�<ϟ���#�)�p�±�=�%%����qK(�u��?9�dc�vA3䗪���H��&/}�I^T�
�Kˊ><�x1��f�͆g��T�2���?�)
4
�bi�����&�'�Yӗ�>_0�
Z�GK�hI:)ko�Y�ʻ���d-o���QF#6R��ꑐ����ç�Mִw�.�v�:Z�f
��~͜�5��-Z��z+�M�T4���^p|���c��)h�����>�!�*n#=G���ݴ��m���z���N���KJ����y����:�#{ƮӑF�Sh������F	4��lI�J��'��/�U�jk�s6X}�+K����4�G�h��NU=��v|�:q���x�i��Z%�;g�V�"���h}�sG�{)��Lc�l���m�����&�F���M�6�
��*
�����Q|b,>��R|�ph�}�8|r�/^��,I8����?��F����M��öyx�3DZ1X�]V�9=��y:>��yM$����3֙9��yoA�Lo�T}ma�Y�NOS��?~��m�%�ϡt�p�]J��d~���m�^
't�6��h��9�<>���mwQZFi#�
�O΃O�W�_(k$b1��E<! �1�@H�|���0��D�8 ��:|rb˖��/���-[&��/L\��W�U�����:J�"G�W)���l���m�:>�9�����q-hsS����6J��7���p:9��C�Ӽ��:�CT?X�g��H�J	���QE���qZ�^�K*�H�\[����iR������Go���֨�F4��O�Љ�Շ�Y�'�
[�O�A��VR_���v�*�h�&�7��<�9�k�ͦ_OV��6sq�I�޹̝v�&���S;�C�M嶕iS��=[2ݶf�R��`w�]1cU�$m+��ᴧ3"�L���Ӎ�]�	��Wj�w3�T��P��?����+�������m#���$-��C�6A�~����Q�g�D���u<�z`���GӰi�܁� ��r/����"?�j��N&��6�[�r*ƺ+F��\=v���7o���OP���y�R+�����xas��ӄ%�W̶,���^ܹ��^_�����4��s��ő�}��e�ݩ�c
��L�)�R<G P�1��h<5�H�FI4�O�|�Тˇ%M����@°ѤSk�~�H����:<����Z
L�!�^}��u�#�<_'�ōyfۼ]os�u�M�m0/�#-���\��������
��������<y
6,���{�i��A�Ja��k�����_
�?�/����~��}p�u�v��Gk?"�Zx��P<kM��i�A����O��]X|��Lݸ��J�Z�1�����_"U�`B}�E�;F�{W�3�����-C�뽠�Y����:}�y��/j���z.Z.��OM��#�y�K��������|�����+�˙.I�!WO��8���FB��y�)�'��wP2w.�)��9��;k��|�H�����&��O�?g�!�4�E$�+���{6��L�XD���3
��ɐ�'/�ٳ�z�9|�z�UW������q���8���Hk���0��M"��ܚn*N����Y�=�%O��3��YM/X/�W�}�?��6<�|/���^�`M�R[��C;��6�`�.r-!�n���*nή�s�n����򷊛�St�gm���:'u�j��(���CdN<�$��������G�do�z>������*aE�*E��o�#�d+[Jƭ��%d\����֢��y!ݾ��{�����dZWPk�{u�7/�y�f�{W�O-ߔ�G
>�C
�Qan-6p>���U$�2S���#��c���1k�N��Ճ�l~�s|����m汝F�c���aa`=��
�6Rk�>G�����h�!����>�����}qs�C:gnq��9��E
'rV8��(�����!����<��/q9���r\��o�H��
#���°6Ƀ�2
c���Y)��>�Rd}z
D2�~���c��A���l9�
��&�[�ŭҊZ#!%b���֠�1���?/I�0|���i]"�\����6��^W�O{Ĺ�_p��<�n�<6�����O�����Z�g��?:.
8�o.�sF��|�pr��{���a�ϒ���3�{������}��ԖF�4���(�('�ߢ0Z��1[I`�rmS�KMm��9�Z�·s�A�t��CPJ���!�
���'B�_��||��(��b�Wf_�"�3�z���j�̝�c�Vn����^a�
��h�:Ƶ���]e
�e�/oQYWwY�%].�$JR�/i�v6QI$>شˆ�����ҏ�>=gC����=��4r>b�����V�w��U��k�X������~�<��3U���)�\Ԕ�y`��9�q��&������O�߹���_�=�c���x�9>:��T7�ql����m��1n���8��h�a�g�Ⱦ6�J��>����_��-��}�]�ͥ$`�ڜ�p�����k��:G��b���%Z%K����K脊�3t�<6�_Bo�(�}����=���9�c}KC��ހ�����)~1�����t�	N^���TRyy�&/�JQ:,��=���5���pe���/�Wᦚ�p�l��C33���{w�~$�����&'{�tl�9�CA���u�T��qmT�T�Y�R���s�O�x�环c6Bj~9X��~�J+#��dGW�	��,<�����������C�,����'jσ�a��=��1}\N}m��J��l�o@�U�2Hu��T.0a�k!�6����FH72:�p�]��Q������v�65b�q�+���X$RI+$�O9�+i3����IOuƬS���g(��44A�!Oz�9^f��Ǘd�"�<>M�����(G��Gm�87�ϱ��9���u|��<^��/{/�7��Egc��YӐ�����2��&>`�2�ݓ۟L֪�v{��?p��v8}$9��[�R�Rc��%��3��ө��x�$���v /�I���ԤJ��bT��ԾV��|�əj�	pW��Z��>�~˒��0����\��DS��z�A��yi6�>Y��Y����m�2L`�ϑ_��ks�|����s��g�e<�}��Y��g�綤He�ـ*�]V3�P\qԶ�V�ĥ䜠�R�r��-����lU��k4���Dz����E%�!�|T�lb$e��Gb�Œ9p`�+i�mҵ'�[ɪ/�?�M6���1�s�-�zIeJ�����4���^o�)�I�ҹSp�\��8/oI��X�¨�-a�⃃���u[�`��d�]��A�E�����{0D2%���BcL���o�1���/�|Ж�J}�/��E�����
w���@0k��[c���P�u |�MNr�}��<�S~Am�
Αo����
6�w�p�R�lo�:'�钟���s�m$��u8�CT�h�M����؟�ڼ��|��;	N�:Nt�/s/����;8�=��5`�u��J��cT��F��p�WQ8�������24pɓ=�,��=�=�'u��s�b-8c�ǹ>����q�g�ާ����I���Nv�����c�,�}ҽ�Tw�>���C.h���!����tLS�W[��6jk�dŅ/�l�P�*B���/9���c�����h	�.Z�cZv73�g�\��'�8p���r�V�XDT�^c���l��l[\П^�	��K�9�>�3��=�_�v6?�����L_�uub�:3��u�9����[p���1O(~8
�:�G��t
?�
��7uX���z<I�y� ln7��Q��_��/}s2�N;ٯ�¡�C�%q��}��i�t�8�G+�p��äh��ݏA豆��Xߨ)��^y?��R�m��X�,Oco�i���*7��T��0�L� ��c���i_]�n����#A�Zϵy����f>�Z��\p7�K8�����p�N�M-�r�W�-a��@ad*n n�ıI�\�M�^�9����&�Yrhm
;�V�7���%7Z�\60vŚdr��c���z��_�o�tE��)���֤;޶<ޱ�P��5�;�.ͤ���3�:B���	�=N���+�cj��ij�ns�N�e�+v�>�z�*�M��Gv�8�ʰ��M5ys��t76�l�ޔ��7��3����$�
̐h8��߈qXjS݇z�fO�v>לX��c�u�{���$�jas;"{�Rx�8x�)<�6�Tyľ����82�'�Z�l�HQ�*у	��;�:�o:����R�����Zm�N��YWH��A��N��0�����w�9X��E��.���޼�qF�F��6�l�:�V��,�����|Vֳ�����O2�w"iY���R���,��}�ۺ��f��\2o���^e�]�%r������^.�J���.��"FiE��s����r!��X������}������]��.:�G�}������ťc�Bs6l<GC������K��;�L�kq>y�jpx�R8i�Gu8/�i�G����s�9c�8�׍�#�z���v̉�:�ju�-��!lN������|[�����t�o������z��:	�]'��_w&���ж l��X�gil;���[7{��n
l0��Q�L.+�9�O΂S�eb�@*S(Db1O*��j4n�I�#����i̱���q�@OΆc����kGġ�w���؆���/6����"�ަ������w��q��mK2�J&'L�S���|�6d�.�֭P������e��4ͭ�F�(���u��k�������3�RZ��R[�gLgo�T��a}�^OQX	��F��c�'>�BӨќ_G�X7�:ʚk��u�ǹܧ�뢏�uђf�:P���1����2s��Z��z�K����d�z���z���@�s����\-ɧK��*����PZ�1I>|�T���as��|��\>\t�|��4.�ss.�\�c�s�H�l��m�I.�s7�s���9r75ڄ����Y����qoNo����'��1�Gc̛���q?��u���4�F+��4���6v�����Z����<O��ǹx�q�x�q.��5҈�i��%6��7��4��4�r�n�m�����)0�z�M�;�N���{�~17�{l���y9s��NٺS6�����\
.n��̭��	�Z��:�m�D�p�K��'�}�����\�c����Z{��u�L��u��>_�u����9��s���M=�7�P�����^�skN�1��z����*H�z��(���=;}��U�8�2�3�e�OU�1���Ν�c"��d:a��t��Ҙ56&�N�`C����=Ax'�������`���	��T��;$�I̢p;Wx٘9�h��#��P�d�������K�>��mE��t��4��|�d�Ý��M�u��a�~v??ʂk�p.8,$U`�e<���R�n!vm��c�m�'[���������I=�	\ko�k���pK2n�h,�/�&�8��y��+����bqv��
#�;}�y5�޼��HB�Fс�q0�ɗ�aH�A�܄���vO™�����]
t?2-ć�L��F0H��S�7�,��!6�4�o�{��#���6�@OV]�3k�
x�-4�x����H���`�x����z�����v��&�A8"���*��h��V��h2!a(�a���(^�.��3���h�ێ9Lw�����[�\�}����0����K5�&�:8p�?9��n����;~sYb����#�B��;2��nO�����9Or��쎳T.��N/�����#C>tK��8:ZtD�9,4�#%��h͕Wb}������սx�������]����(>?�����#�V�j�@��;R\M�� ;&!���P���J�\��
��=a�+�r�J��{Y���C�1�Ԉ�<�soi�W>�^s��'��N&'��]��~9^���}���	꜓b�s�_Г�:��F��V�|���|›)�6�49ُY��"��}���è��C�]^D?�-���D��[	�ϝo <,��W�G�e��G����Bqx���2�.�����h�]F�akpO�:1�ŞC���n�ij/�(s��f/lI��3)�m�I�p�@�Q���kp���b��(c�3)���~���^��<b>{	���<8�E���鎄�i�u>{�c3��_���#�a4݊�G��кuC�قt�'�I< W`�'Ss9��a6�����(�j��nm
e
�Q*%R�A���-�hK����"9��Y��0�>Flr�F�au�2-* 賦�M�<}v�%��h�(��s9�����撑��Mv5D����n�4�s�%��`��i>�+�h��d�"�/]�i�C;t���,"wo���"�A�-X`/q���Y-�f�����n��3���Oo݊֝~>�ݙ�z�oY�2S4��Ng4B���Tmw�̼�$Ҹz�=�d��'������I�U_�m��x|Q�j�����˦�}7��m8�W�^f����G�#�%�@��$�˧)�D�(�'�-�\&	��Ӟt��^RiT���ҥ���B�8�^i��~�.B��7�VZl}$�_�4Ҳ�Uz�~Na��w�.B��m�]��
:J��S���S�\�G��+�9��s��Wi�f���,�ٿ#r~���,��ہY�7��VTr�H��s��`�yx^�p^�Ae-X=J�:;�����3��p�-秇wu��;��B9R�rV�1Z�w�7��ⶡ�1��D!�8~��W��Ƃ���-R7�(z�
��h����8��4��g���Ƒo��Y �/9�&[u�Ԧ[};4�~w�?�@A��'?����6�tn�������8}[�ӷ+4�qp����Qq�' �^���k���3���@�L��b�\v�.Νs����.@�
+0��b��9����Ո%��յ-d^��+T�c���W����W���g��T����H�j�$7⡋��y���.�V���}ݛ
h�ʋ��a��H9�IRM�=?�A�:�T* d
�|R{1zf*=���n�Ps��=�G���Mc��?�_�8�0�
:Q�
�T�{���m0S=�۞pXc�ڹ�_�x��k% �+�������
�4ء�;�A��-�Z��7���)��F���>���;����՟�y��ZN~��Ï(ʛb�%��I�����x|}n�ُp�z����1�E���l=����Rt=C�X��	�*d5G�\�?��h����;G����n��T�����j�7�G����;�NJ&>�ޚ�s*��{j�l��G������◟%�D�3����^�u~~���l�X�e���c��K��k��ԣ���[�ā��P^��ϝa-�`W
q�ԉ�JP�:a��ɺ	�\NgUKy9֐M����ږCߛ�Q;o��e���^=�Lu��<�i�m�����Bq�����A(S�D"��R!B
G)r����4���A&��xi��2����AM��7:�t��Pj|��H�/�n8U�%t���To!�Z�o�<��`\N��F�J%���b�
�I�5��9�Gk7�4:+�������]�\xr��j4'��BW���Owt��t��m1G�y�1d����@�P�T)9iԬ)���Q)��C1PHgO��NId/w�$�K�����T?�y�c�;]��*j���5��q���s<s?���B�0R)�n�`�-�Ŕ�G޼�Z���ڇ!���8c�|�ct={7b�H-� %�:=z��{Ga,��.����2��
<!���l��wM�{٫�z��}�R�Zt�w뜽�����uc�}���UhE�(�:R}��>�ł�{��m�A��C���y��AOu���I, \����
#9��Bz���O�Y,U�7w��c�Vm���+����ƒ��ȶ��0V�;`ƞA+p��V�B*c|�	�U�׈vb_1E��=������A5�ױ�tA��\Y�ή�S��T9/�>��y(5�t�{�%'R�t��̋-��7�gY����Z��ؽ��W~
�ɤVtŇ�v�K��e�Z�;Ӣ���ԗ�ҪF̟�Lյ;�j�I�V���Qh>���9u��,��1�Uto��V���Ĩ�k��B8�n.�4�Y8%m)G��^�0�@=_%�uཟv�+e��^���[ro
G�D8DŽs��������zD��X���y�r#�1��e��d��b}�*��1hn���~���.�e-˕���]��{{���G����c0q��m�Go?N�M��!4Q��m���Z��ʺ�w�&f1�}��q��r`\�T��K`���4���p�dLG���$��c�	�m�"�k�~�,��ϳ�8z�%��G�>�!����̏���O
ӳ�j��MXNj��B�X),&Fw�-���ԏއ�}�'�M�?�X���U�
�rȖM�2�#G��_�*�\{� <��v'-���x`�߲��kNx���>�?t��"w?
�3_DZ���F�gةd*"ZGg���sr�^�3%ݸRr~})�z�)�ΣG/��wt��ǧ�\_��Ʀ�;&�����֒�3�?]w���Gv^rl�����mŎ�;��<'wj`#T��\�-�k��`���`��Mgk��г�c� ��^s�2g�i�@���E]�}�U߇W�al�x�����\��{9�-���U��h�D+���vr�� F��o�5ݾ{���ӳ�����PD��:2������ᡮ`��*I��s��S9U�¢"9VL:�,��SY��1�*EB�^*+��]��Yr�
�%W�m6+��j �o+�s<�f��|�@��/��
�cE<Iwݮq�Uv��hlJ��Z$�����+��r��84Z�z��x�Sߍ�a}��aƬ��U��귐lo�����
���T��p�����Y;�yzz�[�i��i:��xzG��V�u���a�C��놏W����0�ݳ�P_�%�8��Ƀ	ׇ��>�6�x��I���i�i#-�$�a��~Y�����9>��S���=7G�����_�NW��=����n�C�҃�y�B�������\�ZK�.��>���ک·��p.��*�-�V�f۶����۟H��/��&-v���WZ�f�ŒK�y�	OY�若���s�C�d���bI��9-����{���V���~.�~�_��yH�d��g�n��jg���r���gyK3�7����y �d'N`z~��_#��
t��p2��"��Hj������rFS��f����M��*L�CC��E�1�w��ܰ�S?k�~���L*�>"wH��Yf�n��T�>���f&�G��`�����9Xv��
k�Ģx���r㤗ڐa���9�d/�|��S�����N���b��P�WWs�\�`��=�\u��5k(�ɦ=���!
S�_ޥ0�*�TM�c׬�W��c����]{���3�ܙ��0)P��g<'�֎�Q�Y�V�9(S�"Gw�@�6�K�d�P��G����d����}�����X�@��ڐ�J�nWH?v1Ij���ն?Dh$��~h�نq�@=��)�v��
���]{�+gT�uv�W�i0�=���`��S�zkx��7��?ؿ�-X���@k�@0H^C�Z�
�0M�r9��":�T�0�c�KB���l����֙�̌:��h����H�aZC�㉴���Ո�����4��1�i����pĔP_�
�켩�=�J�>�~]/3�n�E�Ŕ���.K3�_��L
/x{�<����=@�|�Y8�<K=���E\�H��.�<�a6�$#*�K�U.�I�s=]���;�^��k��y��%ى���g4x��n'�F�o��߄�`��~�t.�	R��Y�)���y��C�Z�`"������O[�1�'�:�w�9go����65�j^7tN���w�x�^u*�+�Z�EE�3���Q�^�ro�r�:����A�]9����ea�=��ov�[�;=��
N����n�p�\._��':�!��0�
j�G1�>�9�#�����3��to�|G��^����ޝ�����&E���\��$���*���ܐ�|Ѣˇ+��xr0L$d-�}��1���,�Ȓ�����kڃ�d!u�ҡ��x>1������+.X�k񟔏vfF#����sP[�E������᳜�T?	��7n6���k'��m����%�X�]�㓩��,�|��`��!Ǩ�6��s�x~W�ro�����mrS�5ZT�,^<��ۗe��%̅U���:^/_k)L�&�ɖ? ���/_z<-]w�С��z�սt����
֜��a�t�{�H.^�7��Z"������U%�?���0�==�
l�Y�ϹY�
��_�� T��;\�ĭc��
cў��υs����J}M{�X?���N����gB�����G��n?�?��cb��e�O,:�yX4��롮�)�5��@�4e�k.ɡ�X��;�r
uL�7&m
�ɚ�����̲V�M٩��un-�S�Nj�K4�lj>'.l]��k{8_���9��z��n���߅+m^���X�d/����4�5�O��Q��;�Z!�'�F�(�ٯhZ
{5M�cG�^]Ϻw��ͼ��c��q|&��u��w�-K?�Ľ�]U�?~�9���{�u�ܹ3s��L�d�+!��Fr!�!@&$�*MT��|ʣZ�T�D����ς�"̝�.瞹wf���>�$3�;�uv]{��~�۷��S[[*Z{�9���s�C�m�WY�ݯ�s��b� ;�]b���,g��[��5:�����[�2Ķ�W�LJf��y���;u3�S�	�%�?�3"�*�P�W���d�3���z)�|���E^:�j���jo-�`�S���=��:h��:�_�+:�W0��;o�%֞�Μ:�`�oO�x��
� ��i��}%("4�i�*�p v0�=��y�֝w#/9����z�d��_ؘ/�s��ڧk�_�'���ѻоm��K�仴A��NM�ͻ
�~�q}幻o���������5v��nh��җ4���T����Cv�P�� Ұ�`ȣ�=�0���'o5�w�n�K�S��t�V��S�2X����3+�Q��|�3Wl��W
>�Cr=����ض��݌ʼf�BF���%B�u����Oۅ(��3�����]H���~8E���T�q�J�g�2������Uv�����q=8R���1n6��1����1�T���sz�w�����V��l7sEj2>�������aنsņaa.<~d3�܎�'�۾_���+���G�x>G�G�u�H='�v��d64��6��l�(�`L��>s2����쪊����sw9R6w�v�em��F?�^��쭼6�[��V뽱wb�=,/��
Q1X���D�E��pX�2<�8����h�Bz4���)�Zה����5��Og机��*�E��2�<i�mÑs-���#b�Di���+1�~�昳�����y�09�O!_�'j��}x�WtM����'� ���:�2-;���<��bj�����P�
������һ�|ps�{��i�\���r��u�����A�VK�>vY)��ڟ���?��¾ҋ��+wCZ-e��U��* �g�λt���գ�����B�G�Qez�������ԑcӵT����с	��"��#Gg�j�Cq�H�al�ʂ�W���v�v?"s�،ܼKҏ+�<%SLaW�㶔۞��
��-�/�
/S�Y-��2E�B�Q��m9T�&i	��9�s�]+���5B��`�@�@-�U����4b*&;Dv���W�#���T����ǨW^95G]���p��{����e1It���l��"h؜7��\f˥�/��q�-r�=��wG��w�a|��Pi�M�Z�NG�}LдT��Q7ܰ/0����s�w���A��_�������<�[�u��>�d��gdn
a��ՠ���jh�dB����۸U���O���ζ�����Ȗt�ƒ[�e)ܗ����Z�ʦ>lh=�����?�w��SwV�g���>�Q!,y��Q*F�P �e��3��N�N�-�W*ࡓ��
�<����D{;�ѫ��k��=�u0A�x�ׁ�宨��T,�}��ŞQ$�xű�7|쁛g��jm�eO?
����l�߾ŮӰ%
��˃mUΛ?FF��PGF`{��]����P�|浍���o�=�k3�G��`��T��¿P�s��0�5N��_��u�w�\���~�s�o�V����	����ê@ˏ�d�TkM�#�ACm�ws��ze�:���uA�8�ׅ�wH�;gx�|�gP%���ퟌ�;��m���b\(���c<t��F)�\k4��2x�_�}n�-��6�bx�2�e�����Q4A�qqO �sa����I�p�u��ѩ��`ud|����*<(_�IY"�I>h�i��av{���M�N^�@���@g�*Dhz�xd~%Q8F=	�{�U+�!:u��KzG�ծv+;��#A��Nh?V���J��/�X��d�k4�L-?y5�-2`}���D1�z��Z����?`e�j�����<����gf����1��L�ѵm�N��	�e��r;GV�m����~�j���h��d�:-SMut�N�M,�f1Ζ�k΃W��nu�"�0P'Co�s��4%��Q�`4�@�5��f^w��e���v������b���h�Oܰy١��eJ����_��+)L¨+0PX��L&Kv�5k����;Lw��8\�+�6ߴ2���U>��f".`
M,s�!o��� dykRs�0�h�����5e�ªV#������jK�IF:��%[� ���@#�y��A����͘U�M��3�&���hx�N�7�,ok$�t�##�#�)?��-\�X��D_��0���O����m�!�6��W�h�9��_�cG���^`ր������t4Y���Q���ci*�DN'ԃ�=#���'Ͼ��[���jm1;�	wo��f`S��U���K]��,�x�H��HrMO��ƺ"���/w�A�Z�*���6Q�5��9kl�-I�;_��z���\�j�Ŏ��6O�����Gt\��=";P:24��;���@Xeӄ�y��b��8E����ĺ�6	ӤUs�����oDR���5c��\<�Cx��pτ�8D�~2 �1���b��!�1GN����5W�\���O���Vp��_O#�+����[�02-�#���|�xŮ#/
	�®��;ny��޿��[�(���������쑔�|^|�
�K�"���J��F�ID���"��/��;33WM��_�x'�%_
N�t~�-l��M��<�FRI�<�X�M2���$#<��V��z�����܃_��?��o{�ml�1���A�c�{�l��\�q����K���xZ��Ԕ\N��U�g�ޥx��c���.�'��/_w@,:xݗCV}�b�`�f[?wE��J"9�=�N*�L����#J���Ɛ.��W�F��}�j�<��y�?��E�Ya�����P��!��|�X"���Q�0K^��g���H��'Y�z�cdž��7�ۆ�=Wb�>����9���汝�e	b;`��&�}�	s��I�`y*!�K�G-ǜ��;9GD~b�A.�����F�ҧ�Aux��ܰk&цN�nmm>\\�,N6~��Y��S�ZĶ�5�ti�X�5�]{��G�q�^|Ee��A��w
�q5o�� �^h����c6�߃�I�*�A,g��d9�Y���iU�.�
��Z>R���N��zAy�B.#:�p'h��2�Q�w_�}?xc�i���3������H�Y6]�3rɺdjݥ�-�>8�ϭ߲zcXmulC��AW2?���ql����éU���)T�����i�?��?�<	���Qe-�j@��'�c^s]�
��J7����
y�4����
�Das��߻�}��2M�1��;�'߯��M`d~_)���F��!�8���NG����m��5���p��)BM��s'�=�R-���C�*��Q3MӞ���ӱݒIZ�S��|�����ó5YF5�`��?�l}��g������,���#�R����������V_y�ڟ��l�(5����}��&���LƬ
ty����i^I��f�j�}h����>;z4|?8�O�����s�%�	`�&q�p�����_�>�1��g��sA�8}h<[�j���6�@4�"��
i�-	��!��Ж����aK�ͥ�H�1���<Z:y2!�	^����]��Ke��Oo6��7��	�����W���*Slޗ���TR��*r�U������������8�9��E�g�Ζ�Hby�%ktZ�_�'�63�托kn��}���m�b�sM�hX�庐�?XW��_^It��Y��};���g���oX�9}/��"�NDF��8�����S���r�B�E�K�����=(:��<Ϟ���'jڃ����Ccn-���z�ŢU��zF@6I��R��Bdx�K�hw��g��}�,3�/|b�2��gp�tx���_oF�1�.|
����Td*�@jF�^��r�9ÇF�4�e^=����m�񣑤!�>���|D*�M��.��J^�}�(�F��6��F�[E-j��q�Iڈ�/y�'��_�p�z��;��Z�5����s�Kq�\_������?���"2������܉�lW7`��S
y���y�����7��w��[�9X�>�����^�<C�
���B�e��\�D��Յ<�B�#u ��������-p7�b9�<��[/�|�w16�+.r��r�c��r2	w��|��EQyHJ*��b9h��K�ùa�\H�(�hÍ������Ƽ�F�9o�&D!��<BP�خNk��ׇv�V�E
����O�~�
��/JÁe��W���k�:�֩]o��3��q~4CUJ���k4Z��l,���n�ja����t��
�x6��Y;�`�5�էŻF7�V)����P�{�C�m~Jz���u�.�g���C�O}�uɢs�g뱣�ۚx�X�s�twSw�PH�񄈌��2����fNE��Ҝ���T�&?/{>�g��hg�=p7�_P�T�8~#�9I �~0w���9vtC&��������MGk�ǖMg�Z�v�s��
*˗׾Z�.���?���J��	b$��g��:�4�B��yk|
a��k�VG�\��c�w�����i_)��[��Px{!�P&Bub��G��
퟊)�?:k��?R4�#Ο��ᗬ������$.�at_�gi�}$s���	��Ts&/�l=^�:��!^��q}]�aEe�a!�,D�Ku��្-*˭���S��AΫ���\$��qy^c�S�r�z1'�ė��̒�D������Px
|�tO�l"n�I��(Ο��ܽ��y<�<�`��\��y�~�`���N�<o��9!����(�L�tU#�j��6;�5�E�
+�'������]�R%���Z�<\;�p�OʵQ{�ƍ}g�~��Xё1���E��p�9�n��*5@j�K%���|���j�0e��mZ�"[����I������Bagn��-Y��t�Nia��uvP��L�6�x�AC��ˬ_��P��N���"#������t�-&�F��F�ېw��N[r�'r�.��e�g,_�~���/3�1my�^��z��e�Ҫ5���������Pw�'i���GO�{�q�U���S�Ht�/?v�~�d�u�nE��/I%���j��7+���f��7g�!��j��س��|�\.F<B�a	č,qN�_�$��6��oz�7�ٛ�x�LL��x�h�#��Z�R�T�AnI�TL�!Љ���)�:s�;+�}y�X��Ǿ|����̗��X��T�ϑ<_�˅N��\*!��6�d�Vo*�ђ���}�b���{㥉
�Ѷ@�fI�W�
�m=��rӮ�5�Ć��F�ie��:�W�'LQ�5b:˚t��@�܏�oh��I]�:��I)��C8�
%�9��p%�=񨄂��-θ���X�vB�:9�__�D�qg$���<(�e]
�;f�W<愧UmUy�z�b�ߪw�]�t��菑���d�OQ�#B�Ox��S����me�U�tۻ��q��=�ـ�l���i��=�ݽ,"gx�/�k��{�ѻ���⻻y����Q��1	����j����.E��Ȼ��g�6�7�9��#g�J%�9�'�����љ���~c}?:E��a?��Gu���cM�Qw}?��4݇y���}� �Eo�%,4q���9��74��x�
�)�sH��NQ#��f�0;�o�<���er_�؄�84��Iރ�猓�輼M
��
Ҟh��c����1�w�)��vZ��L����spc~j3�X=A=	�O�i��L����U��|ԲH~d�|�.*��4����~��Q��7�t�r�]�a
�5Ks�=�b��v5 �}'�8�1>������}�$��4-���kz�����}M��>�4����[�b�	�=�˜��iK"̵'�+g�d���k?Ę��`���}u�z��E������}ujߥ^�}��<w������V6<�����J���i@��ͻ�m���+H9�6R΀�9���咺�z~	.�B��)�d�MrI���NQO����¦&yR�Aަy��66H{t!^��EX�w�`�޿�1,��E���	\GҲ�4�޳�w�>�/�Do�K��cżOX��uK�C�X�uWt���X�� ��!�u�Z$��F�S,/m_�Sh�9%�}�Z���Qރ�K��W_�~
�R��?� �a�,�ҹ�z�Cy��>�P�	;��2v[b���OQ7������\�],'P���w����秳���~�e�cw-{�}O*��'c������B��X~�t[ۙ���Hz��t����=��
����Wǵ�C��� ��
W�>\��K�Z�t�](4a-�����.�Z.4a-�:���-�ZV`ۢ.���
Қ��&�E��{P� �Agc�j���Y]�	v�9�.j��`��z{c�j��뉞X^gG�����̷7�?��ǼBX��.����A&6��&��F���o�'�i�%�L�g��g�vp6���������mA��o��,��<J�`?���0��,�s'�n�>+�f�gE��ɹ�=�3�Y�s��0����l�VǶR�^��L���c�/q���1.�xNQ'��O:�8��3xl�����8,r������NҮ��MF!e1UO#�"o@�S1OB��^�U�g�N�`p>���8����Ƹ�c,�����^�����y�$�䪞�1j/N��Jb�5�ͦի$Z>�ꎘ��@RY�����:7�\�u��Rg7i�j�֓KM�@>l�F��S��ٳ��<�:n�����Cm�t�������=���~�
#��)�ɞ�7o�e�Bԅ�BSQ���9����^���R)�5Ms��'/L�<}�����r�p��E�z� �=N^�V+�-Q>��ɋ�"yCK��8yQ���N/%o'/�s���>�sJ`�{�O�cK�Ea�[�u«����݇V����eI��\�}x�x�<��,.��̾]��ӕ�Rm���{I�.)o/'Ϗׅ�3�Kr��WC�wIyr�����g�����@}p���P�3�ѝ,����;�6�яZݻ�������9��%�fm�>���
2��T��&�Op����;��&<#����S��Y�Ij���mtĒ�$c�V?�}��h4���u9��JT�x%k��Gp����ßH�a�<-����k���"y���q�"��Q�}��us�"{�����~���a��wz)y{8yѳq}��C�����H�����[��1܈��ɼo��+.�㐌����8��I�x��{�6�>W4�"�'��ݓ���{`��͑��*�����o�:?�ƣ��)��{湡�YB�}�Z4?8��_
�o�3�3�'8y�@K�3��#Ϗ�
�#��#���8���}��$�%�ʆ��D"K�/��na�YX^f�<-.W'������ɋP_��
K����
c;��<<�[ر�,/?���=�<2��Ӌ�8���O��&��}hu�W��6�݃���c�_�	I���x�@��&ն/��
��-Kq:�rn���m��Er^���NǶ}~��'89�1ؽ��
c��������*X���.6�(�EVF}n1����9\��s��5�=x�I��Y>t�i�6W��(����>�u�<�Y�'���ѷ���U�}t��1�S#,���4��=�u#d|��2����3��ʹ��s;ܷ���/��*'�v���"9Opr�ujY(����:���Nu����T��M4�(>LVF������|�l��}E'����o��S���#[�?|����|�:&Q�L<8~>��O�}�O����#�##r�o���S�	�{(#�[X<^H�=j�|�s?I�'���d/��d�S���`\#@�Pp��_㍜'�L���"�i�R��]gv,q�����}�F����k?��`�0�������lƿBW��W.���E��Vx��8�&� ��ch�~���>w)�7-��e�F�?~�-�XNU�cp�/2��~��/ˁ����ϡ9���e| �	�Þ}6c����Gbw����ɋ������)CE"|�3�Y�$c�$\��p)II�e�s���R�Dž���i��H&9�[9�s$��Ϟ8q�������j��@�G������\*)��<�x^��S���p�pj�N��B���\t`
TjON��7P�(�W��'�:.WY�-e�%�͞����[�$jP�E}s�H)l%X.>JB����B_�j�?�~��2�Th�m�A��(��JRej��Bm�r�Y۷OT*k�-k�R.qu��g�(�$b�a��?�[0N��Әֶ7|�u��]�<��ņ��ht8�uku.�O��_@��/��G��q��\������X�X{���;���B�{��0�F#�4�4���p���R}�9�	�[k_�ݻ�*�f�y>28����t��K�(���<�W��b�O#��d���~�Ш�{�蓟��
���o���N�:*���R�`�~~.��Aw�o������ܷ��ٹֹw����p��z��kP�V�1������u�)'8��$�|�S�Gݒn\˙_a��p���$LA��o�:�c��X���6���#�I�����'�V��ʰ70R
����eW)b	'
���փ��e��7�9#�
�X,�u�r�!C�,��j�L�`6�Ə��hk��
��ߟ��κ�V܆&X��jCEy]�J���U�dՑd��zK�<.,�����-��Ƹ���Z�zs���'��%�_�l�%��=�p���3{�cv�*C6ך�
n#�&���5��w�W^���y<���j�v*R#�IdN���	���d�%(f�%e�4�X�������C��͚v�[�V��^���e�e���n��<z�G�q�,�	��	X>>%{��<X&��s3^ �����j�,p�6E�Z�(���e��Rm���k�l�B\�0�–�4�`Sl��H/Oe�'[��Hz(N���r[�h��q�)n}��jfc@�N�<����&�Ҡӛ�۲^{D��8�6�ʦ�;Tj�7T&�̤R�dv2��O�d���\��w��NF7*��,Tn�M���ʒ���J��H4��e��;'�I�-a����8��83:cW�h����ЮM�^�y����gл5�\ι��w���9���A�9�>T���peME�iWν��]�X��k��VQjԯb����V3
��گX�@=�QИ��{����*
&�ڠ�0!�I3�2h@�3���ҫ)��6�Qē�]l��%[5�*`��i�D����a.��H2�HzeYiv8�b�%�кš���
dur��ju�̲v��8��I:��Ů�X���!���N�
��[ľ�1F�n@Hn���f8�o7*""w�,tu���-�`A�V�v�2C�D(֒Y�>h�[TV���o�X�6}QgV8Z�ބHX�[,D��}\��:kE&`d21H�uͫ:�2Y��Vn|o���z�G�u<�
 �i��u]�U��Dk�%���b4\�]�-�5�Tz�!ۚKk��%&\zX�k���򲪮k^�	=wmt$�/��Ζ��۵��9dS9mq�-�}c��Ԝ{��94���3�x���>����w5�9�[H�!��`н��K��.�s]�z�/�sÁ�z�h�zN��z�op���v���9E]�yaTs:���X�9�T��3*�.�j��:�k^��	�0ETEgK��H��m;')��9���׻]Y��U��U\p'Tq/�=:�Ǡ�.-ly��U����rQ>�B�Bx�d4�jmҪ��	�R��C�,�̀iUό"�r9a?f�pkٟ��KV��r\�.xpZA�
\����^�>�K�/��b��`�=�?���/~��h\��Q�S#G�b)_$��U&������_�}�V�<��~�c0H?5����+�6l�{��ܟi���
GX	E��K��PR\��뙭(,�>OR;��2�8272��$mޤ��2�7����1�&gt����1�c���6��b�m�s������k��Xq���/�m���>`��
�!G[�%��"�9
�R!��&�do���8�ZH��p')�ӴD!��j	l-ގB�Q����GI������#�F_�ϟ��;y�&������j1�""��QCso��,�^�W�.�*d�h����C2�g��`�(lR���ϖ�;h�7P�]k�����\�I|�RG��'9�z5����o�^3f	��1� �%M2o�}}}3��������hdE�6Ɯ�~oru{v} �x��6`+��v�O�zW�:���v�r�e�y�Fj)$@|�S;�(�I����0ۗ��G��UN�Ĩ�Tb��-5��E��V�}%�;I7jE�V�R9dR�H/3J����k"��AW-v��Z��<�"YcPWf��?A֘�2Fmx����<-������������>�|���럾���×\z���[�Y����+V���������l;� ������(��D��W�~Cz��JV�r���řL6���BFc<����w	�v��}0����_9B�( ,�x�sl�kc�QU�W.��Ժ�2�P{��C۷延���X����\y�.��.�gV���l��]N~_��5`��os�[*{�����[�xs���>��>2w�s��L?��#���( Y�3$����(2u�-��y�^�nt;�%G����E�����6d������q_rC��lj����g�
5�ȅ
�1���x2���~�h�z�P����j�X�O�����<D��E�����!��n��
��ፊ�r]��8~�|ί�K�%�=���˓����뱮��7G�Sx��	��i�#>PQS���7��_�[LWE�B/\J��	/?�2��A9�fE!�E��*_nU���\���&w�Ów^GG��}��觢뒩��A�S�'�.2�]s�П��T���RSB�FE����i�*�FM�ptL�E«�e�����tr�v6;Z�z�Q{�����wdSK��ˆι��Ӻ�j�;#��m�u�7P�<�|�^�쑶m'F��ݶ�$��^�ʮ���Z�:ȷ�nF��s��QAh+%�A<2Jt�#��:��'� �_а#�p���H���k�>ɻ�~���
�uG9O��-��ߎH�PO8���ϩ��<#��I��d����b.�w:�j�e�pz�=�)��a�z��
���t�]^C��y���QN��
6�^���da�dToh�3�4r���n��k���V�B̸ �F$׭u��yV�����[�q�={j+�
{��9�����J9Q���f3Y��N\$
���y���C��z����g���q���-�w��<K�h�����ky�E���dI]�+��_�kjE/k'�`}��WL���U*�N��
"�Ǡze�u��͈Iν~8��k����A4��l��
Tk׃*�ߑ;s��-��WW=�J�P��+�/�����mv���Ū��r�Đ�dY���(���XdVF�W\8�=�	�d��!�՞���z�eӑ�Z
СѢ�W
��wOm�ߢ�}QM�7�$�s�Ps�*J�N���!'rq��z�݋p���إ�w�g`M�/�i��p���>�i�Q�7������/6�Y��`9�+h�*bh���*1:)ɖ�$�0���	�k�Yr`��̯���Ý�@���i���R�Ӧ�k�?n|�uNu�}���_㷴���B�<n�x]���~S�w�~��f8�:��I@�0t��͑�X;e|��<�2�rr��<��1��lo���V�h�MA�1h2���;�4#��0ٲ:�Y�Ҳ*�^��{�bMڝq�%	�L�F���2h]f+��%7ł��JBJ��K}��J�)!XRճ��9��Ш�V*'���P��.g1
�M��x	���v[��ߵf��.a2��B[`��5�9�Fk��2�s��'k/���
���L#�H�"E8O�5�N"�)D�` ֢Fc��ߦ������61��R�Z��ɔ|a�E�52������(o��LnY���ؚ�@e�t;}���5t�,���y�nدp�Bs�`�⚪[���<�C��?B��غk�-�׭hm��nU���{���P�P����U�X8���<제�i��u>*#��1�\�%+V\��wdr�<��~Vl�V{�6�8���|t���eG�S^�=
��_p�d��evѯ�<��`���+!|8?�i�U���UTG�>ޞχ+˖���P:,
��؛����T�x�h���F�-�;�|"�ǝ`S>e/��!{�+KK2C��IK(�u��?���X�C�-�\ܠľ�P��u���@:ן��M^�ţ6�

�a�Ýt�O5�h�t�sr��j���f�ɦ��Y��')C᜙m��K���)��x��%��a��F��[�un�W�u{�j��
�����>�^7��i�wC}�UqzXUU�mDG0����vh�D��&��]�x��gWgd��L�O
����ڡ���Ջ�.�$�{����;2��Y���~�Sf4���<F
�w�{��ͻ�ř�{�}��r��E'���v�]�/h��E9�|���h��#��q8����%�P{���>�a��ǘ|qQ*䩐! �5,TF��O��J�������׮]��ه�#��Ǿ�~���~�:UUJ#D���v��W���|��u�8�bv%��.�%�hho�ľwE!�D��i�T&�bN"ϭ�2zd�ƀ�[������c�L?�����;.�[�[���1ve����@��3
�y�]z�~a?N1�*
���`�+�Α�o�����a�
ߤ�'���y�݆��M�2J@I0��P(��J3��βAd��'��9p��j���~p��?�C�������OñNN���R�t�>�ej�B�-C�C����׌�LLh[d})P%i��<��v7�*��~!�*U��P�P$6�
�JE�����#��*�Z���h��c0x�V�	��G�
o�2���ʴ�������d�����7*���W��v�W
�W��P4�lfZ�E,{ؤơ
�Eh�6R��аl73�e�2�Ij��m ?��&�Ej�����J�Y|��>��ԃ�붡j\>
��(S_�N3���ᘶ�Qt�sɌ啌�9䖞w���=�d¥
&�f��r��"_�5��k�!�\���:��d�c�Ѡs�Η(�G��`�:T�>�,��f}C�

q����<)�|Aqe�fs^kd���	�V�9�fj�A_-�5k������x�P6p3��ۘ;	��"1������C�FD '���v�������>v�����w`Y=Pֽ�xB	#�|
,�Ő�p6������HT��ML�Kʅ8A�+P��B��D<F�gČ�wer�����)Ђs��[���ם��~�vK�&��]L��گ	>\����h�=DM�PTT�^�2S���l�f�^h�7C��Be�tŤ�
Q��C�6���A�%��e����_��w�\���M�+raS__ly���g3�t�V<==��Ϲ�\VeH��MO��w��k[��2�LoSjv�.��sumiQ)���������`N�_�����0�%U`���Z�2����f!�T�ZM�ɞ�z�����gi�y�����H�[�Оc�Y"fM���w�o����$���G#A�Uz�cJ��!��xSg�@ms�S��;�+(|WP�f�L__����^�NiD�Qw|̑�۲n�9b]�{�֮u�d�^�\��l����F�V,�?c�?[��4�R`6����66ҧ�eMn\X͇uꇵ⢎���'pö��}��Xfn�9S�.��4jk�v\�^�Rq�e2���
�E��J�y�D���'�㚕��J:�F���j��OB���5���v��];��[ﻠ�]v�
�C�	P)��~�:�*U��+�,����hW��-Hه�ն���Q"Y'T��K�-��J�o)�
g	-�~np�r�����@���1�7n/n�KϟE0%�&�j�VWo���N'$J� t��&�#lH
e���p,�~ܞMm��Cf�;j��'ͅ
i�]���.-�J����+vs�
�=��_�w��+�Š1BsHj�}�rD�uj78�R�^c�K�3�)���ZC��
���-�H�#lM^�p�W�R��DH�lPV�:%�����?�����m��w�[�>�M�w��w�E촹���&��}^/��{L{#��BN@��[G�A�
�
;�.��pt|���}"[��Me-��H�[J��w�tz�!~������w���V|�p�XdU���.Z���5�&n@��!w�Q\*��>�Q���������%��r��*��բu$�}�gu��8_/4�R��|fE�WZ�t�:���#������'�6�!�љ�&}�?	GG��JԠ;��}�˛��[��	��S"��z�O'ђ5��8e�!�<�ZRU���^Σ�!��H9~�h���1��h��=k��[7�|�ՙ�M��=�H���u���#�K"C�
����m�ճתּeA�#i�$
�h��p�*aκ .UA���3�a�Pk"&R0�A�#;���&?.�_2O�¢�;w�tl���H�9�#���C9�.�
V�R�h#G�b 2EG�b�#шIn$܊��&}��_<�(xB
A?�
r�b^-oqf�+h�l�yǽ�a��
�"�d�

*:�=���k4��_�
�8�����
�侊^�S���=�C��C�M�Y�#��E��G��7A`2+Kn���΍�C*�&�
�w�ۓA%���ـ�W�D��i+�=��7�>�׀*�dC/���K�
��)����{����!���ݓ�ջ�Ʈ��7O�:5U�Gd�Xz�l�Vz�7JU5�����v1�x�}[k��nmDz@�'��Q���LD1��7�[G`Y�eo�i�:@_���,f�3���b`Tb�0���6���mڱ�G���}�܋g]�'hY�Fp�‚�u�^/�����ʧ��D�<�R�c�]}�e�l�2s\C��fN�5i����==E��bo""� \����e2Au�׸��~8��ߴ��kѢ��a���C�b�)u*o���}}|�מ)t:�qM�����@Ʈ��D�5��*;����zR�N�zӺ�a�p�~`3�B2+��
!}>hʵD�!��-�=��Qiӆ�EO|����ј^kL���}��{�M��c4��]�
R��%"�@,���Eb�T&���b@�����(�U4�XP	;;�?��E$<B�0˼��/�m?n�w��tr����'�{�^��|b/P��Ta�|��d�s^u����ș�z�Ȍ�s�Й�����h���/�:u�~Q�ѿ�I�K�vhnHV\t2��.S+]��
�
�K6�Ϊ���N:Cy)ţ�T�/��v.>��cWhd���ŶM��`��x%h)���h�oKW��E�-�m"����83%�����|��H�#=���?j��4���S�GT��&x�l|�hq��aF��ۯ�9�����s��\��×�����ZFc�{�dB��/P��[wS�>������<�_��r��������tr��m�X��2Ĕ�1>L*���9V � 
��w�~��;�˷���sϽOw�Y�
�SE���Z�ã.���
L������������ʋu	1j�$��r_`�%??����Yh�>���"�T�篤,��a����rmA���>.��@D�����ֵ����T�7P}�Р��o��O~B���N�sO�C�
�	[����C6�7?RjJ�����P'�MR�SѠ	e�tB1�Ll��_"��;����ʹC!7[�U��P�I��G�J"2&�'{�]	��S@z�k9�����֞���*�b��������9|�c7����}2�>F�<��$��[
��hمzZM���s�����õOC1?	�D�&<^��S| dJb������Om�Sg��ڿ���k��d����$�G���;W��%�Mའ�η���J���Hl|�L��P�5�b�3f�%��hm�>�H/ߑ�o������;�e����;2en>�q{ᨗK������͇��@XX�M�n���Og�f�d۪dju���[�>-��|����B�O���CR�t�H���'��l#}(�#��ѻ�•����[.x���y"�^��<���Յ������u.�:+���D�R(,�$#�����U�ZS���2ִ���/��6�ƀ�&���rF���
��٧�>�w�۰
��t�xѲM'%�"��sЕFRyo�IKS���$��M&��Xǚ���<�;�Ҫ�Lē��da�߱���7n[�V�Τ�*��dWHp�+w-F�E'S;��c!���t����Q�	/Ѩ��
^pZ��h�v�|{7z���
���ZJ.�	J��GW��u�
��H���rvm��^�O)=���TхX4�G��sZ����B9}�P�������Jg��<�������p���gs$3����a*�TͧB�X�BT�l=/��7cT+���@��݃��xǞ=;�?�X?�����S�/���Eg��0�Jȓ��ϖ�-�B���~���N���+~�S:��S�_�~��t�Jqu,AY"J�8O�� #[O�7�\���O�~�ω������pQ��\�(�@̧i����>�:�Gs�յG��k��њnؽ{C�1���E���Ex�i�L"�J%"C�q��<:d����
����j-�d?~�ͨ6w� �E8~�:([@��P
lDE�8�O�K���G0]^h�G��W+�8��l8n�*dR��XL@{���:�	!1C��-"���0Q!A��R]�ͭ?X��T]ג]w~�h~S��}��-��@���׺�����-LW��t���c�s����Lq�X�����u�i�P��u� �l��}<˵��16_��%�z_��*!�7��إ�>�\��~�Y�E�J��N�DLհ������Y��p�z�15��9޵!�K�����9�L��Y��S��ߑ��3��-�˶&�W��KW��p�2Y�s:�6x�6�rY*
�*�Q*���o�>֡y�����P�6!+ƷD��z�a��mHth�������˭�T�ϸ�W��+���M��(����Vw9i�A���uIJT�'���c��.<�2U1��|�h��^�Ph$�@@ȵ��>K��!,}N�6��"^�"�]D��Վ6�8��ІԐ���j��60,�{���.�t���;�;�鋱p�����fK���ôھwpӹ�De�k�Ř��j�B�g�$�)W(��}�Da\��2:xv��Ͻ����>?S���Y��h.�\�u?3�9�&�{_�}��9���?�j�� G�l��5'�8�$ܜ�n��o�p8Q_M��b�O��C��`�GEi�MrAU#�V�� Y�r[x~.�$$7�C}�i��;*���������E-٨rF��=J�zO.�v���,�#.�W�^�~��?x�ى9:����f(�SZU��U�DL��lؗ@��j�a���7�ē�6
�U3�}ʱ��kP��VN�<r�o��^L��ٙ�ٷ���V���c0˔�;�<˔�e��,�(��R�K�l��sY�
����Ʃ�A�T9q[1Z����H��E�x@�N>z��u�l�^.�|�Ͷ"
����Z�7�$P<AUͪM��4��8��S_ pಙ]�Ue���*�ii���	v�������PL�?
�G���whG�(
eG^#�HD�����6{yE�ʳ�N��J ?7����UV��s�4~���x#�U��0�;��8>wL���}/�՞C�擓��ǚ`^L�F��F�ko��Fs��>?���06i����u]uR�Tm
*�8b�	@b�Δ��:~I��=Om_d��B�Bqե����>o)�������x�NS
,���/��7п�Tu�Ýnwg8��$������ǽ�j�;�a�ꤣ�s���i6_0�,������ÕH����h���vV��-����2���&���?�\��2x�~���#嫘���C1�Y��E�D�j��p��Rm��"2��������?/�[5��|N0�y��+���
A�Wab�B�Wd��4��P1�Gp���*o[�;�6'݁��f�"ݷ67�;oϔ�-�V�.nl3��֠#j��kU��)���k	km�W��%�s��6X�Q�VKY�LU�x�����h^`�k2t!d��T�M}�e�Xw�gx���]�ƑqdFuk#[��K��c=��)�=�`�XLQ�;a:'����I�VWܒ^��I���xym
�l//(�ژF*�4%�5fD����9��_�6�][;��������X^G�هc���<(Jk2)�P��h�.s!�IcԺq#�;(=��O�}mNG��ծ>�l������žC���D0�h�zrv��w�ruǎ��}E<��,y�{�s���:��Lې��e3�,�Kg�OO[��@���c
�����F�{V^�S941t���������:|��?��)k��ʆTԿ��}���v�4�}��'m��o)�1�,l���?���_FqI97�sj�Ajw~��x��䝽C��n*K����6�,�U�t5��Y� ���4�j:ha�����0:5pa���>O�b
�"������9l�����bFWޣ�F��6�OI�)��m����g�۷w���rY�Şʚ͙��-�)S�nKЪ��\��MiK�.k@����>�Ώ�-�-����o�&]���]�����%T�P�~O!/��V�&�6xa`|~�g^_x�{OY�[�Ƈ��q��@W����
�p��F��acBq�5����yq�4���]3p.3�����9���yl|"�����l.�|����_��*������S��\�￀�E����\t�&���Pz�B�A�;����}���#o=����cl"��ڠ�{���ߦ�)8_�~>*y���������G��^�խ6��nC�;���%V�j��׼��6]�T�<t�^:�C#fI:,�e�>��mY#��l���.���nl��V���5�mH��x@�)F"o��6��x��F�
X�k��Ay϶��	o��y��u��8
�X1�N���ӻ�Z���ӱ�R'`a?6�
���)��j�)�_}�{�RX�79�G�.O'�a�eԆ*�B9�6�ΩT;�T�r�Zm��Yr����)�x�/d���άΈ2�}�@e�W/zQ���=z���@87I�+�鵞�M���B �ٰ��d�N=���_�{'��nS1trc��
轜rH��=&tU��c9����/2k&l6�1� 
��\�&��cC���-�(s�-3�*6wH�	�' ��7붞ݦ���6	�r��f%�
�lh�r˹=	1Vn�'�
.����P�?�'�z��8�3eqr��<(�I�����~��~p�)�-P�b<�(��=/��_�_g5�Q��6�w����@��
N�8Z�'Գ�Ѝ���O(��]B�����;��Pd��� %��	E��l�4`m��	E=ά���i�r��	!U��\ZjQn��n�
�����a��L��f�|��խ�҃���]���Y�xD›����,֖�\����:�s�k'C���7��.�����4��'��V�rJ��.oZ䤶�Ö䦺�DJ��&㛣�dlK|�~����#�p���bFAuʒ=,���(�:Ӹ�`�f������%��̮�e�m<^g��C���mB�]H��P���i�a���
�g�P�
١;~�}�S����3�9���y8z�l�{K�Zn�u8]*���S�L�B����3�~�w[�}���
�9l[��5���r�!�ff��7��6W���uo#ؽ���g`k`��(pzl�h|�����/0�������f�F��J���G��A�\r��w'����ʂ�9VV���1eE&F]�Y��>��b�f聊�3��Ņ�g���0	,�/��$:�:��t�+csX�G���'��[2y0�c��ϑ�2���!tOP|�	H<��㬋�1m9��rf'�8H|�$�^=^&w�V�l�8�'���&���ɓ1��Ag�23�40���V��ꌹ�a��L�&Jy���1�x��V�nG�=61~��D,��W �����h�� �,��5=5]MU����mYd���2�HQ����}�Y���와�����]u�>���󬢌���~MtF��n�|v��9�4�&����Kt%�=џ�Jk1�t��2ї�V��D/ҭ����Z^�#�˴�t'�+tm�m��з�?%�*]_y$�"�~aT���j���]ξJ�u����ϲ}��g?'�����:j]K�e굾K�"��6�4m�D/ӗ�%z��K_'�J&�&����CzD�j�#M%�)��-ڠM�=NJ��$P#��~
~K/����6
��c͑�
h@o�2xF��Zc�9�����kQ:�Q�W�?�����*����Y���
}���c��~[��y_�#i�H��Sg_�<��a�[��
=��1���@j����f[�t�#�;Q�رU�r��jҳ
+ӆ)�=L���<o��x���~�AM��	��llݹ����~Ҹ�虍�;��k
��Gc��9��B9�m%�}��v5gU�`HB@q.�š��{���=d� T|�c~&��R'5�=�'C{y�R�Rc�^����'��,����ud���i�U4�tEo�ScO�̔ݶx*���Im�ő-PQV�U�F]�7�e-��❒�"zϔG	4��9�r5�{�͹�z�u�gc{�U'�����6�S��=�bqMj*�V�6l1N͘G��L�6�x��Tt�ѭ�~���7��ޝ�0����I��eM$���:'���;���Ӆ�(aS���0�w�5#'_�Ml�4��a-�$y�����!,(�x��f�6�sso�4��'�F�9���c��R
wD_��m��l1��y�Io9�����`�挨U`d����)�
s�[�����S�c&�+��R3%{Rvd���7j��T�|�E�O��l?���)WM_F䞣��A���D��\c�CS$}C�#���J>���I�f&o%�Q����e��p���Z�d�DO�wD��AcҌE��.+���9-d�^W�Q"�u%F*�m��aS�ֲ* ��`�z71$+Q��T��=�
♾��I��x���,P9]i`��Rh_x�E���@aG���=%��)/�-{�u‡�i
�T�����mlaY��w�7w*�,�n޲QԆ��a,p���
Jx�Vh�;2�L�����cCH���|�]��:%Je*80�'S^!�:xQ)�V:�=<��������9�DT(�>wWM�h���0<J���Y��Ox�8�^S��[�C�ﭯ#�F�r�lo`O��"�x��5���M���q4�*���2�E��9�~���1>\���J�3٧.�������0Yw�>`��)ͻS�$��Xm�&��3d�v�f�I��N�x��+��62$10��Z����9Ο���E��(z��>��0�(,��ʣ
�h@��+jU5̻
C[L����͎`eI�������j,�����H�BC�:���ںr�`g���(���dx�m�xG��2�!���{�XҞ,��%�!�BdY��DT&���{��{���������x�ٻ�yg��4+AB���P���?kL�aVR�h����R#5Q3
������4��ehYZ�F���H+�ʴ
�J����Ik�ڴ�K���mH�ƴ	����)�P�Ώ�!�b�JqJ�f�9mA[�V�5mCIr(Eir)C�h<M���-M��h2M��i�J�h:�ю4�v��4�v�]hWڍf��e�.���`��N���:�����r�����H'r��hJ�у�7�9t�L?�/t]M�ӣt
�S���z���=A��S�4=C�S'�H���t-u�wt<�B/���M_��t8ͥ͡^�"�G%ڃ�Q�*T�*��|���B�=ioڋn��i_ڇ����+����&n�a<����7��#yi��пL�,/ǣ�yy^�W�xe^�W��xu^����7����ux]^���
xCވ7�Mx��M����?�U��a�c��qN�f�9o�[�V�5o�I��>d�S�f�3<�������$ގ'�ޞ���y���x:��<�w�<�����#��w�]xWލg���v�q繓���<��r�r�K<���=����'�)������y!��{�޼���|��|ʇ��|�G��|����|��'��|
�ʧ��|��g��|����|_���|	_ʗ��|_�W��|
_���|��7��|�ʷ��|��w������|��Л��M����.?���?ʏ��?�O��?������/��
�ʯ����o��t&����{�>��G�1Ÿ�g�9�_�W�5���w�=��?�O�3�¿�o�;���_�7�������X2DB� C�Q��Y��pYJF�HYZF�2��,'�eyYAV��deYEV��duYC֔�dmYG֕�d}�@6��dc�D��X�TZ$,��[b�*qI�f��l![�V��l#Iq$%iq%#�d�L����L��d�L��e�*�d��Ɏ2Cv��2Kv�]dW�Mf�v�I��S��[
2G�J��JQJ2O���T�*5��@�e��){�޲��+��r�(�r�*���r�)G��r�+���r��('��r��*���r��)g��r��+��r�\(��r�\*���r�\)W��r�\+��r��(7��r��*���r��)w��r��+���<(���<*����<)O���<+����(/���*����)o���+���|(���|*����|)_���|+���(?���*����)���[��fU�t���A�j�6i��Ẕ�Б����etY]NG�򺂮�+�ʺ�����꺆��k�ں������n��ƺ��ѱ���hX#U��ƴU���ts�B�ԭtk�F��hJ��jF��x��u[����d����:U��tm�u��3u�论����5����k�vi�t����բ�t��e�hUkڧ�u�@7j?�B��Ct�L��JW�#�P��{�^�K�ҽu�W���=P҃�=T��=R�ң�W=F����x=AOԓ�d=EO���t=C�Գ�l=G����|:J/��"�X/�K�2��N�+�J:�N�o�*��.��,������d�]��k�>�_����Qoқ��Uo���S�һ��W���}P҇�}T��	}R�ҧ�}V���}Q_җ�}U_��
}S�ҷ�}W����P?ҏ��T?���R�ү��V����Qҟ��U���S�ҿ���"�-�Բ�!V�j��Z�V��l
��[KY#�����(kkYk9k���������������������������������������������5�kmj�Xa+bE-cMn�4IRSj�BKK��ԉ@�P�hH�fs�R�!h(�^��CY_���R1?�!hs*W(�j��=�͹�vS��T��r�b�)��J粞ˎ@�u��j�`@7�}ir;�g6�#h�
<�}i7 ��A�[�k�//�p$�6�0�{�m�oϖ��z�P-�t�C_& ���_l"-*&JaN���9�� �h�:lnW9�/�d��\hR6W��C=�`�M�&K��5����SoB��Y���
��&������J�j�4�;�n�K�Ů�)H����|>��V�ʖk�=�Zuxi`/45 ��m�f����r ӂ�_��
X�����QŢ���j��t�U��<�Z�ڐA
��|�V.��Լvx������ k�3�8�=s�ݿ��
2\�KӬ�[qᠭ���]*�����ok^�O(�b
k�j�ơ	h���J�����Kp��(�2a(V;
�2�
2Hz+��̆�h6<�)��l�;�K�m�g���F�Q������&�I�MA�P�	4~�0�a����?~�0�a�#�G�O�D���?
~��E
��:�� ?�a'D�"�	�H*��U��s��F��x�/�i�ߞW4m�Ƈw�Js�����P���E��Q�y4������N"@F���C���X�h4xP��%�ģX �
g��6���3H�`��j����3�pI$iZq�P$m���7H�`�l8�
g��6���3�p�`Ù0�a�����U�D��z��Xw�u7Xw�`�lp�
n�|L|lx��e��
6�����hP	
^?
~|�A?
~�(�|�߀o�G�4|�߀o�7��
�|�
�
�
�
�
�
>ʥ������������������G�41�b��V�o�V�ӊx��8xq����K ��M����'�o�&�o�&�O��?~��8��$�I��'�O��?	~||��$�I��'Ӎm�sS�P�7�Y#p�;Q����%��\�
���AL8�19��AL(���E�u�E��(��$�5I��������xaPT��AQ1(*&~
��)���O��?
~�4�i���O��?
~�4�i�]�]�]�]�]�]�]�]�]�]�qp288|||��8`�L���3�g�π�?~���3�g��d�٨A6j���b��ب)6j��a�Fب6j��a�FبvP�nPC뚀��i���&�ՆƠ�P�c~P���b~�UW
ޢ�����(�G1>�u�B����|����k�A�|���m�o�g�g#�ؘoc~�c����o��o��o��o����׊�ߊ�Z���t�Ȍ���|_gt��|�Pi���
���?�	ğ@�	ę��$�M"�$�'1>�|��7�|��D�IğD�I�o�'�r�9�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�O��?~
��)�S�O��?~
��)�S�O��?
~�4�i���O��?
~�4�i�������������������g�τC3�������=z��y�q��B��E�P'�pKSg��V�wԿb��-�_U��ˊ��������V[�c^<E�q��8���/q��'��J=�bo���f�VO��
n%c�y�J�*�	��T��Z��+i���X�� 18`:����T]���5�\ɗ�
�|o�<7��5�+�Bo��V0lc�m�9�]���a��rv���з�V����Ϋ��3���~^�k���շ7����;��f��G+���c+��Dh\]����؞R�g��mCY�z8�H�Óhh�'&���ÓX��Ik��I<4?���k���Uw��ڽ&�5^���N���n�)x����5=^��5E�)y�<���k�^S��Լ��k�{�����f�	��9㦢�,ُ����i�я/�O&����%�׏F�����Gc������A�Ē};=�~rPP��̒}3(^3(3�o�MjP?��Π�LZOg�z�����N��|�4��3Ty<��zC��n4t�je_�/�w�RX���#���%o@��;h�Uj핡�G��|zFS��3}���y��y��q�w���}�o���b��g����0<3`����y\��̀����3��޲��
��`xf�,���������3<k�|�P��>^�G���%�7���ٞj�����\��{l.[ɇ��r��j�Г�oz����R`w�+uDG�\w1��o��˗��\��=���_x��2�N���#�G����Ѧ���?z�!���x��=�`Dg��А�G �N
c�`-���o���m�d�@$�\�՞ClA�9۾�A5j�t��ީ�Z�V�/�`�q���
D�V2�\�0g�=�9r��3���{�>��iSxڭ�{P�U����]D��+��
��&j (����E�ZVb}��ӤcM�86�8T�8f�����L󑩩��2++_�ԌL:�ً�R�D�;��{��=�=�[ ��Yr�KNu��=�����^�ųPQ
Y l[�
6�z�!�\#hM 
���A44���<���d8`HҠ�Xл�`
�Hr��j�jF6�Y�c����k�z��!�W�����r@q���^���Q�X��Y<��Hqa����Ե�R���j�֩Fl�jĆU#6��������L�Rw��
W��(7�����A��	��S��F;da��;)[x&�=�F'�$�.L��	]�L�a��\�'f{q��w��}y����w�K>_\<.`&�Bf\�Lĥ̎X��k��q�nbv�m>_|�b��~ߤ�><�T��ΐ!Y2���|�c�̴�#��sf�-���pa�����0Th�k
��5�������Q�.L����0Z��[	[��
c���	�va$@xa2̆y0r,�����8%p
�C�����
1�`v�$LE����d��s�e|�2\�p3��xO�i���9Ņ�7��~Ʉ�U�5_�"�쨖j�2K�ƒ�e-�k���-�����K��ZN�r��/j�X�2-��jh��S�Z&�wj�f�G����zf�u���?�����kY���Ҧ�lK�r��.-�j��h�g�����m��6}v�t-gi�߱�Пܴ�>�M�	m�Oi+m��>����v�����>�O� _�s�n�^��9H5�i8g�����2}C'�[:I����H?��t���Y:G��y:EG��.*��*�
R5T���j��*��ٟoj���|���mnϷ8��-:@G���t�n�0<=�'���@*G���I
�a$��|��cp�<�g���R����^�+x
o�M��\��n8���
UuT]�•]�S��ⷄ=�k��geB.����6q��#p���TWO�����O��
�V�B��|�P�f��n��sPf��+�I����������nqn�`
[�hUp��i[ש@��N9l�F�(�գ�lݠBep.#(���ɧ��Z���*��J�IO�Aq0hma~��+�KP����ski��5ZM[�p��m<��v܎x�v3ߣ��is�a�t�y��3�Q	�]�w�o�@N�\�����A:�a��0ʈ5z=�}��,rJ?6{����E�\�}��uc�Kx�W��j\Ǟw���\�9��� ������G@cՖW|C�a.Q��E����p�GK�h!�*��o�ʎ����_a�p�fU����۴Ң��wt��>��ByDU�ÿ̘�%>��F
S�3�'�q�H%���v�6
ΐE��Q�x�"U�gۃ]w���33���[ٲ�!��{�B����Lsm���B�(��S.�rWL�=��{�tɆ��/I
T�^�y�;M��H�*M<L͢��&��ۮ�3��4����
�{/U}���o�{�,��7(�m$�K�μ��^�\.g� g~E�prw���'v2�cӎ�Z�K쇬�Xk�s�{�Iַ�$;g$Z�
~N
��"��m�H�����)��yb���U�}��D+z��Y���J#E"�pч�^��s��;���a2;J�٢NJ~�Nn�oX��x�Խ	xT����9���-,԰�(*�,RP�"�Vk]j[���Ҿ*��}��׭Z���
CX�HH�&!	�I&�Lf&�O&�y�9A@T�w���w��9s�g���}��<�s�&�H?���ٷ��?}��_��_��_��"�_�a�	�w~����鿼��Gİ_>��G���P����^�C���b���-)�ʭ��|ډ��������-��/�>�g����'rOKj�=~ң�Ǒ�{�$�Oi���i�i}�Z��}�3xؐ����������>yx�y�8���r��}~�ώX9���eT�����ѳG������ew�K�������7a�Ĕ�M�?eô��f��Z���U5���K��Lo�!f�1k�r�r��e�f��^��r���YKg}2g�����_���M�s-sӭUs8��s�r����h∕�D��ȿ��$�߼�yC//H�M�oޖ�o^��/�j�Ԭ����_�Ɲ��k�,Q�����L�o΂�qs�_w}PbqxI鈕YKOC�=)#J�ͻhbVU7�u&��~x��s���Qџ=;*����|��Q���N�3z��a�̘5����Jy(8���?�Ө���xd�#O��;#��J��2.){�m���K��l%+~�G�/�g�|yA�����	3g-�|ߜ���<ߍ1se�e-�
]�@�\�I�ss�l���7~�)[��G���ѳ�}����/���ɿ6zvB7~���b���'_�����ڗU�t��Se�������۲�=�ǧ�s��}�g�����
~�����3G�0kz����-��9���q�j1 �F�����?��G�F�t�^w��v��do�nE4o�<����$���F�f���gV��Z���_�!۩���.}�5y.٪�֜��Ze�zv�sI+�zv�+>�/+'��n��?Z����g̒�~y�?��+�N��ο
��Ŀ��o{���ʰ�^�~����<���wf�Ӷ��u�����[~Z��6uݘu���W|8����aӚ1s�V�����al���f-͹.灜�r���n���.�#�lxDo0ʨ�
��b��4㸸Ψ��e��~�� � �g�e`9XV����M�b�]��e[(aá�0bZO�Ieص1`�ѨM6j�)F�6�8�Mc�됋�zm�aӞd��@�w!9�V���aI
�e�q�2�o�[6�s���o5��
�*�=�g;��d#��h�g��lá�F�A�nx���~�b4�[��qB���S/�s8hԉ���n| ��CA��'���#(F-b� 6�K��,\�"�冗���V��}�a����Z(-�����kI3��>b8W=�U���F�0�`�#��y\���F���(�<^$��b��A�Ї��l�2r�t��"�M?��bq>}����y~_��`%x�(�ěx��8�?�����s�4��E?��^�-E ,���|�7_��8�C�\	��$0��O���\��E��j׋-PNm�3�"q��Xdi��T�'"
��G/�<��ɵы|�"�p�.�"��E/r-���,��Dz�B/\��؏^�ы|�b?z�F/��n�b?zᶴ�K�H�);:����Б\tą�T�#U�H:�EG\���B}7��7�Б&t�Q? 2Г�!�C��>�� tc8�5��c��q`"���막>�:a���Ao1�cnD�ns��FT܂��ޙ�\�d���E��݆��I���dz7��M�w���dz7�޽@���F|�
�U�x��4|b�~��k�Z������#�|>����u�����3�9�r9�vʙv��`���R�|�[�,D!�D�<��Y�,E�! "�r`��ԀZP�>��H;��@6"��m�/69T�#�K�GDo��Ѫ�7Z�ȁ�t� �`��(zr4l6y)r,a�e������*0\���.�h�W�ʹ�a�:�
��N�����m	���<�y��r,d3��m\{��������@۪��\�N��|o��&�����a5~d�
֢|��o�h��g�!,��|N���8�b����e��a�2Z-��>S���-?���ɖ�1,+�� �!q��a�#췔��D>�|��YVt��:��V��kY��*�Qͱ'�fg[ҁlD6aY�KOÌV}8r��F�k병s�������z�H�?�
FLG7�O�&��o�+Vہ�t���a4�;@!��p�R�-D�8��s�
P	hw=��8O=8��4���v�^������	��$��N��{�}v�c��ؽ����}���fe�� ��,bGw���e`9XV����߱_�
`��7������~g�ߍb,�;�m��m����Nx���i�;
(��)m3a���e�Y��v�M��o�/������*;�6(�O�ޅ��E�0��#�c�����a��tlL�n�.;���߱��բ-U6��}���4��{�V�x'���V�
U�s�a��פ��]ٔ��v��dэ>�{�
�aW}D&��fڎ���$Jى��Tvb7���c7e7�f���n4cɖ�c�k�|�sUq�l����@6"���}Hۘ!tlB�D��>�������~3�ߜ�u���F���_��n��M���8_
����0�`"�!0�P�c�g�u��au?Z6ڈF��4t�V�E��o Q@>\����O���h5��x�}pR<t��s��K$��U�(;�b�c�Ux�Rl��x;ܭ{)��D�d�e4��yx�iě��,"�Z뎥��;���i�0k���6�E	��c�8�&�2�E��i�$���O�u�j�����(�O?��'��&>���q�=h���ߣ
�y"��EDQ.cEC�&��Am �"�p��
?�h-L�C�a'ڰ+�!v&Ⰻ�F�I�yRa��0O2�s�)�y�a�b"�S,��������;��#Dvj�N���}D���/�P90T�C�P90�r";ч���N�a'��}؉>�W2�u�:
{����^Ga����Qث�*���a�bث�裇}�)��m���6��s�<���(���r�s�d!��%r�s�~d	�Y�<�<�<ʁ
T�jPj�
lWLb��@�^1��+���z�`�^����NK�A_���o��a�b�;lXL4b�����!�6y�b�%�L�H��3\&�k��`2Q�Xq*:�h�=��,�`&��h�Is`ң0�r��(ъ6-֞��K9�r��v�ص/�&Y�v�Q��D,v";Z������h�ìu�4�c[�M���:�
ځ�@��{!>���e��9F:���]Hèâ�-�t�ڒ��a샭�a�bK/��"ӌ#0�PK?�A:�B����`<�
\��,���?6�%Z~`Da�X�(,������Ga�b��8�	����Sȧ��q�e`x���	�A1� �h�gy�mk��Y!��<C*��ϐJ���3�9�,����PL�d�C=���DO�x�d��v��q"(���C�!���A�E� ���I��I��$�x�b3���N�S;��n\�o#?��ا�"��<���;���n�5}r/���ߋ�_"�!���D_-z),X�J�e'��}ى��x�b�/;ї��ˮ;��F��g'hxm��m.�m��4����)#/�	"�v�ʯG�I�#��aO3�ɨ��w�2
�t"�l���|�y�-�찜�s�rnX����fq�*n�M�,Ȓmd�6���l��L��,�P��y�l@��������xmd���׆U��6���L�F�[��(D��h�mk%��&����V��V��V[Z��g�d����Fq� r�A?����
5֩q��jD�u)�.�7�ֻ������$��y�/�
��^��8��m�X��_?��P�DY��1`,gD�+���j0L�ᗩ�.Zi�S���i�rZ����i�r|<���(�e�i�]��.��d*=�R.�e�h�rZ���)�e���#��.Zf�~�4���bᴀ�pP�CԾ��G����_�����u���R:(�!Jy�Z)a%��tu�����Q�:Jv���DVJ�Du��A���AiQ�C��#.9���)M�P1�u �~�F���^${]E�"�Ƃ�F=�)�4e�����4����TP�
JSAi�(M��Ci�)M���4����ҔQ�2J���5Q�&���]ݥ��TU���R�R�Z����Hd��m_Ћ�(�0L6�(])�+�t������S:y�����S�zJWJ�J)]*���t�����UQ�*JWJ�J��`�y*n��^�0�k�t픮��yT�^$�Z�D�”,L�”���5R�FJ&�9�)Y���)Y�����F#%k�di�����)Y;%k�d픬��5�,��tQq��7
K�B)�aEׁ,��y�-�
��^�6���6>�"��Q�� �?�Qby'�ot�~rA~g�!��3��DPr%w�pF��!�A
B� D
B�@��r�('m��/�V1�n����F%񦏶�).�Ŵ�(�q�QD
�b:��%�ߒ�=�V<���r��/���w��η������GaQc�Xp=��Z���q5�Rc+�G��R�jj-�X����VS�jj[@M����6��y`�Н`1x��a5�#5ǣ4�y�-�
��^�2�&��s("�8�<'5j�-��O����Ь��+i9J�<f�x���9�aТ#��v,���}����WR�|�S5P�|t}��]�G�*)Y>%�G�����}�>����(M>�ɧ��>JPI	*)A%%ȧ���	OM#��� �#w�e��KX�;����0�̰�i{YɌO�S�>"�OA2���C����M���W!�9L���ڋ�n�D锏���;>z�G���S��w����m�H�A��c�d�0qpԼ/P����b�$�v��셔���3@���
���L�xȈ����u��0q\�6,�
�Ei���lQ��01[Լ�0�3������Z�Y`�,�K衭���M�6VZ�/�f:V(�1g�Q��@��Nf��H�d�m��������8(G>c�'��=�ȒBx�T�'�8�h�����K�"��T�_2���Ih�t5�NFnJx�VQ��?�7��ɕ[�V"(}W�x�H��2Lw"�2�(YD��b�p	��a��cXV����ЩU�k��a�� �;�.����o(.�N�!G��Eȍ$�wj����.U~�S�y��E��E��E��E��E�ԅ����R��DЕ:�IY�&yiRr�L�"�1������O)҉.u�Kt�]�D�"�!�)�>u�Ou�S��A�<�S�A�"�S}jU�t��U�_��O��W��^�J��\G>�E�߅�աct��Л{����a�0���?L�����p�X��^������,e[8�:PN�&�͠�~�>&�z?.6�[�gb]��H!Y�$%����b<q�J�[?�<���0�s���3
����F����L?s�8�lA�\"E�A��<y�Mhm��c�G����	��1�!�'.+]�6���Hd��X�V����{��#DT=��������!Z)���~�XB=N�b����&�A��)���*��L76*:�����N2�2�k�]�~�`��%b-:�7^�����3���F��&ㄘ�����ym�c0�m�#���B����ZU����	�s�G�3��y��.�
��^�/q�W���5�:x�	���Q��`
Xց��}�e�|6���'�ѧ��h<qo�&6S�-��1��6��S�<��_�����Bd�K�>u�^�G� K�e�ȃ�ôO9��T�P�ا��N ���وlB��,!��|���ôOD\����ޠ/臯�O�;9�?�!#� 3�g88$��Ԙ�xj�{<5�=�8L��N���j��Z�V��Q��E2�7�}�Q��M���xU[��G�1�7���[�hz����{<��_%���@��t����r��<�:���d���iQd'߻�A�H=���A/>�"ӌK?>���Aȑ`4��W�k�����α�%����=�|����a�#��;�{,e_��Sȧ��r�K��g�n[^7N���[|_�����/Sw��x8G�_�N=�40_>I�(.�<ܝ{ގ�\`l&�L<�Y��h�����5`-Xփ��"7��p�'`��<�9w��":v�}�o��� 7����A����]`����P��E�/������~a��"�[oح�����唧TtB��<u���tk#h�4���6�l�/�����!�_Ǣ�♣��f�SˈY� �G���ua���b��@�6j2t�\:/�Q�ћ=��1��i����Lk��m�����}��]��?�_ds��x�Ed���#2���}7���'i���H�*��c�t��Q�(�Z��$����3�hc���^;�U����+)�N)z�/֙f���^�4�����%J�Al�������'|��w�WҖ{���+�p�<���+Ǹ��\9�+�V��M��M���jN���,�7	�ۉ�L1}�'\)f����H�֝�{���ާ~��3nR�@���<aDy��G�שx­r��v#�oBW�*o���p!�[\�MO-�<J���o�d�|�=ι�k�:�	�sayx��*��
��}�8�-|&Z�;�N�S-�]\{Hx���"�7���Hz��'��	�}x��'��	�}��	�uBx��&�����x�E���#����)�x�8"N�Ц���~�4a1�H�����2���̰9N�f����;k��Fa�� ��4#nI�6p�=ɸ�q#0�0nƕ,+6`y�c���uؓ���w�µ�I�D����xX����4���i6�LP�*�a%y�b�����Fl�	6��n�M��fM�5#�f���!}��a��9ڹv��n:�&���`����ر|���mg�Y��	��6C��hW�
�]A�+�vŋb �W��������ʹ��i;���a�Gkiɠ�!1�,6�?æL8��	W�)��I	CpD�*�&�M��OYy����v,u�����T���3K�x"�	OH��䊝�jĭQ��;'��L򹠌���i���*�����A�,#�9����D$��F~��
a�ӥeL�'�f$��K�'���D�G�����Ψ!��������BJUL�)���.%]kl��ӈ8��X�Ki�����`w?���j|�D;����D]Q��O[��N�K��at�]��n�c��멡���j��ҳbtt?^����N���j�U�C����'��mބΨ^����j�z	�5=Y�ҋbJx�v\��mV�Ҿ�]c'H=<���l�
kh�V��E�q�ڰ�|�ܮ�&_�`$�<���P�q`��)Y��,�AҊw�/�˹�r��K&ℛ��D��D���\2�rx:�L���'���#?�H�~
���D��ţ��c�Y޷�۞��r��/��Ud$2����AF� #q���/���B���/���B8>�υ�s�\8>�`��Pz�*z�s2�r8?�υ�sї\8?��%#�����Hld$62� I�/�b���B�PHF�䒑8��d$�A.����O��'��r�	���\|B.>!��ā_�##q���H��<2>"O���.q
z<=��g|��%+)'+)'+)'+)'+q�Kr�J��\�>%��ā_�%+)'+)�*�JZ�3�d%��C>YI+�&����8LV��>�d%~�Y����FVb#+�����J�d%A�;Y����n>y.�7�V�
��pR.YI+>*��D��n�YI+��S�����AV� +q�
�J��J��a�d%�d%�d%�d%�d%�\��r��r�[.YI��KVRNVRNVRNVRNVRNVR�����咕��r�}�d%�d%�d%�d%A��r��r��r��r��r��r��r��r��R�1,�G����B|�*|d!>2��������ā��%+q�3s�J�d%A�� YI9YI9Y���GV&+)�摕��������K��J�d%a��0YI��Ďͅ�r�J��\�YI��$HVROVR����ď�ď�ď�����T8�	�9�L���s�c��L��B|l>6�#y�Llp`@�����I3�I1�I3�I3���WLf�Lf"c��d&�d&�d&�d&r�^1���WLf�l>9vÙ�Y��,�A�瑅��Bld!6��r��r�Y��,�Fb#)�����s��Xx1�(S�}�_��'&K��’{M�tÒŒ���$����0��@��:�|r�I2`�k`��X�	7��-�:3��
,�k:�e4)�Xn�W���U�&ZTF/��Z9�FYwkh��E��:��=�<5�B<*�����D0	Lƫd�#f�U7�[7���E�̱��y1ďU�m��C�w�-c��탿[�y�퀻����䄷ݴ�^���k��Zx�^���k��6��㺫�������!�l�O��w���ɴ�1x9/��e�l��m�M�c���좌{@>�/T[/�8���6��>��ǵ�
>���m�q|\��c|l��m�
>������Z��
>������Z�����+��k����z:�b���\��Cpq-\l��k�b\\���Z�����Z���pq.�q.��.��.���>�����-pq\����-p�.n@��� ��w���'8�R���/7��n-��ok��Z���
·!�6����|�oC�m�
��6�6߆�[|�����|�oC�m�
��!������|k�oc�m�
��!���
��!�6߆��|�oC�m���ompm�
±A8�dž��[����Z8V�$i�c��86dž��Z8�
�u��!8�
�
��!86���X�cp��c�_m�k-�j�_[����~uïn5��^x�%�>uçn��
���S7|�Ok�� |Z�V��UX~;|ڂ�7b�
�
��;���j����2�����r�U*}?V��-�c��?�t����N�Z@�ʃl�
~���`�j��O�zQe�ɑ�p�
���#k���p�~8��l�#���y*J\D��X�D5�PM��*�����X�f�Ո�[��k5�1pԴ�+��+��aX��j%�b�����pgZ]�澪bd�r�-�	Z��:�!ܹ�����X\?prR����/��~I^�8��l�{I2��C)tJѩ�&���b��K��0�Ļ��'`�,��c�����y�0o�
�[Eo7��<�/,/s�+�W�k�u�xS�҈��1�2S�hǘɐ}��-|'w�c�c�����r�E֋�z1X/��`����b��*Ǘ#m|�ՠԂ:P�o'�vdҁlD6�{r�h��D	��`���b0\���p1NΒ��`��3��`���eb0J&�cyc0IL�c��%��1b�>�j��4X �Y}��V��cX}��a�1,<�e����rcX��@9� ���>�İ����bX[ˊaY1,+�eŰ� �bbX}$���� 1�J�j��[�z�EL1����i�g�:c�����2rT^�K���}1�-�B�y��H���hA3ZЌ4��hQw(�B��
��8�.ηȹ8r����Oͽ��n�9�FΧ�si�<�zNΕ��d��m��M�c�2�O�e�O��+���j@]5�M6��o�jS�|N�v��]͏Y,F���Or.����1����0�Ђ��E�`[��Z�h5|�3�j�Sk2:�6��VHS��8.n�9T�J�DcZ�b�i�Xf_���"�<$F�!r>���R�?��T�%-�7�-����*��q�	��ހt �MDh��ͫ�|��l�R������آ/�hV��B��|� ZD��h������e0�~sNJ	�ւ���m-h��g"9�H+qGX��؃ָįнg��z� ��:�;9rg�e����V&�6��.�G��Vg�M� \L����g��^Vc�q&'u��6�ިh�3d��@E�%�Y�Գ����SL䨧��9�����w�a�i���Rw�7)f�Ǟ6�/�Bwɧ����ݗze��]{��|Zp�#�\���CZO�s�V���5�#�}��o�q��.��l�T�&aoS�J��"M܇�}B$��m��_9��%nr�PDL�*r>I�~���r������N#���Tu���t�w���j,�"�4�)c)eR��<�*�zO�A��,��˪�>f�6�����ݭփ�PB+���뤰'~��^x�/��T��R"��.��f�j�|&��^r\O'm����'�'[��#�(S#>ЃfɘރN��3���	]pR�FU#G���D���5�����_�(�Q!��-�B��Lm���+8�}����D�fw����ٚ�M%��Qڝ��㫾�wF���:V5��4�����r�J�n�S�$H<�?.�)�z�L����a�wH�1}	�Jԫ��>��ժ�^fO� �;Ɨ�R:.����Û
�',A��~��8�
֘�K��?�J1	�Y�1��b<���|^⧤
��7�T>[�M�n�os����|�,d�G��8��oXV����"-�eUG��#o���|Do>�6y�O������1 �"
q����6��r�|5Z���L�ت%'����J�D$n�7ш�H�M$�&q���D�D"n�7����M��a#�H�M��&�p]�ɗ:�;ȓ:�;�a��b|W1��W�|�~��4�M[D�s�VD~$�n�ɋ:�U��~9��X��Z����T�O*&7����V�D+n"7Q��(�M��&����OTK�"G�Ւ�ȑeE�.>�7�����M�"���Z�� ��b��a�E�G�D3n"�$G݆��5�c�~'X�ņVc�k�Z���s�
0(}G�&
r��r�D9n�7Q�[YT��̾‚F4�*�:м�xΒ�k�_�	C�X�Ʊ
�(9�m�:L����I=΂�g�߈�'�F;��.57z>��h���Qt�1�Ǽ^����E,$�����(zEo��m����Q�6*����G`�$�H:�['z�Do������Q�5��F���諓ʏ�:���譓Xʏ�:O���Dw���u��Nb-�9�o�_���r�2��]v��g'1��v���k�מ��2�ׇ��C�^��k;zE���Z~�د��=�>��?Cnc�.��M͢;D��G���Q�ى>;�g'��D���}v�g��C�W~tډN��i;�E���q=vc��e'q�}v_�s��N���U���F��賓�ʏN;�i;:mG���W�9�=�B����.�=�R�?�
x�S�ӗ�T~b*?1���ʯ���<�K��e��ҍc�i���ףE�Qe�c4�U�NK��/m�S�9��]'~�
9_��b��3狩��2�~��9��W�CKcߒ���\/f�z13׋ud��^�s��RO��)Nj~-�K#�K>%�K���.�Fž!���	14!v��]��.�ޚ$��]\���4"�QJ?b�:�?K���e`9XV�����bx��N�[/m2��T�jXD��

cAa�B���!G���(V�
�B�f�&
��Ё��/��%����+�#ʎ[���_���:��w��i�_D�S���݆DY�0������V�x��^݇��kzXƎ*��ZDD�X͚�U�9�,�}�j?�_��U�	��ܔ.Os���h��`+��"���bj~�	��2X~�b�c�G>�6y���1����K�U�Q���$�;���1��C�.E���q|�yOM�D^��D~�9	y-R����ӧ�=�m�/P#�g[�a�i���\p3<~���Cp+9ŏ���"_�_���׽�u�����}8�]D�����`X	^/Q�?Q�?�����
���-�ω�E�¾�����
 �y��
ޑk�P��q���=��k�:��$�}>��r��|
6ʱ] ����0����P^�CyϲnHP�f�,������B9��%r�����V��j>X���`5�8D������W�
Y��DV!��ǐ5���Zd��#O ���Il�y����)[�ۊl��F�#=H/҇�@����X��'�|��9��l�/�V
iA&��'֓�6���R>3HC��Vd�ف�¸>��`\/��q��P����!�3���r���i�5G�z͑�^5sb4e��'.E�%ƽ9N=W�+���z(W"�R+�Ժ(؍Z�I���$V*P��C������,��j��_[���z/�5S��U�����\��)x�-�e�m_�7�Q��|߮�5��98_ߋ��G�]��$fzT!�l�F���s
�7<���\�k>G�~�s
/^�k��g^b&��>��V �s�?�YG��uș(��_=����x�X��r+���O���?���"?�G��g"><��Ãz�x��LćW��Q�*��"k8�Z�mDbߖ<�|N��xV"�vy�l�j��X�鈹
�s&ai��ī�Nz*����[��{���^�J�
c�g׳��j�5`-X֫�_ru��x|�F�����{u�HߨƂy�}��:1-�рW�H��u��3z��G:�"B��;���n���^�
@!��cD^}����I�<'^əx�`8�C�r��D>"
��O��\p�i�����s��מI<���x�L�jV��
����D��SFs����9>�{rT�*��1�S�'G�%�:�[�;�1��Kx�<B'��<e�Z�[G�>!�)Qo�Ě��Uw7\b ��v�ڀWnQO��tk�A-58��M����K��獛sb�>�}�c���`X	^r
�D���fq�YoǛ��fq�Yo����:1b5��8N�ր׉�5�u�[*���1��|+��f�,̜1�Z�VͿ#>Ts�'���Z��N�v7��� �PYYbF�|⚧��75t�.���0N���3�s��7��8�b�W��=�|���E�f�H�V=�L�F���j�ZK��˚�U��\�9�j�^@_`��;����w�y1xI��j6��B1s$���y6QѤtpz�ʼn�B�_!��W��+D�%c��W��+D�"��{�����^!�����j��g]�&Sw��\���nc�9ˬ��)d�T�A+��
����<ϱ�r��/��/q�?q\G�"v
;���B�N!b��;�����Nqb�8�S��)N�'v�;�����N~5'��쿋��Q���h�-��ĉY��+qb�8qJ�
���MB�%!b��H�X$N'�ĉ=d�!c���A�*ސ���3B�2�S��'Bhh�B�2v�q����qb�8qB�A�26�qA�����3��j9��͖3���6��F\".h#.��	��~b?q�����{�\�i�r>����,#�%���l�L�"�_��GYC�߅E���C���>�u���㚜՝���Ϸa%~�|?�χ��!�|?��DZ�6�|+jÂ�}�.�ȍ��O�����>_�N���C���+?�GJ�rcQn,ʍ_�cU���a_(����E�]X[�O��1����{�'��y�>9F+���B�=���;����������{�Xb���v�}]X��W������8�&����o���t��7����'E=]��#��TB��L$WL&#M�Jc�No1S�s������#p���L�pF9#O�	�3��ݠ��Y���� ��;���"���@O�L�XR@o�XA��-?�_��E2%�u�B�F
��)�N�j`��R�>ԣ���Z��V�i��Y_jf�fVjf�fVjf�f}�Yo�+�3"���gMVjg5G9X����YE�jÁ��J���*䈮��.ї��v}�]_jח�Y����Yͧ�Vjg�vVjg�vVjg�vVj�vVjן�eP;+��R;+�����r
|�W�\e4�{).��+�?���#�v֎���:[�M��>שy�'`��u#-&ԝ�;�(�L-����~���y��?q�?�����
���
�����x�Vq����:�쇑���ڂ�*�~T�*pN��#0n���F`���q#��n֍��X7b�KM�y#0o���6�F`�L�e�0lv
'�U�* �U�, �9�߮W���D0I�c��a��0�f=�6���h2k�ɬ��f��8Ũ�[�Q#�Q�`{.���p�Q�0jF���5�F�&X���M����a��g��j~����kʕ(a� ��1#0fƌ���[�Ua� l�[a�F�2[6�l�-#�e�Ô�aJ?Ly���\�-�l-��z�}�KF��q]"C�KЪ��5����h�	k8�'�w�q�.��s�K�̓�y�+?�$W���n��C�xh�!G���z����zx��i�G\#z�+��B�n���XB�5�'����{@����Z���Ļ��FNj�FNj�FNj��ﵖ��k�n�il�G��Z`6��S����H��Om	�w�s�-�����~X�,�����s�����G�<�Џ���p�� ��l�ą�nδX��#�=��^��O<.~.�_r�_��&=٥*�xW��?�?�?�<,r����n�y`�	vq��\a���Z��/�1�%�<�?x�l�"R�T��`88�`�	0��r�[��5�Z0Edj��-KX�`&�>���5'�hn�<�:@A�c;�]��
X@H[z!{#�+����ȁ ]��B����`<�
\��[���w|~<�1�
��,WS������e�T�	;����*��>A�5+F�s�|q�~��5~�&������kD}-~s�׃O����1J���[ą�V���|u|�'�����7�&�;A3hm�@*���F�d�\�@�Mu���5���9y��_C�~��|���J;L��T�"1��C��E&V#�|^�\��d�]��1�|���S���5�:x�	��o�w��������1H̠�-|�
>��m l�y`�	�Dž'Ƅw�b�ُ,A�"ː������ʑ6�W�jPjA����	$�N��)`v�N���Y�(��ѩ��C "ӑ����C�����ެ�/"�
�wȹDq�r��9y%�*���	H�h�$y�v-2���3�W���r�y�zvI~�I��I��I�ԩ�{����@���'H� M�O���|>}�uyS��I�Sȧ���u���O~"7
��#:���0r��H�O0�͜}f|�<��/��?�@�^���H�럣�g>�;sV{9�V�J@}��A�>ԛ�4�Nwq�v࡯'cw:�3��u��g�ix���4x��L�������sȜg�#�!-Z�Sd�)2�"x�<A� m�ҷ��n " ��0<�0<�0<�0����f���ml��f���g̘�e�xI0^&���e�xSa��-6����43߹�Z��������������Ɯ}�^�׭�o��/G�e�u�۹d��?�U����w�҂�:o�Z7 �X/z�������'N3��7Gd��g����+'�X�o��	�2v���$�s�7;L5��4��y����:g�]��;�v�
�
�71T�]��A�����O�^D�^��7^�6��@.T��7�i}�Z?S�5�k����h
�@�S�.���6UmH�6�V���

����-�ѐ�h�,���Dv�";+�]�9͹ۼ<��^���]����l�@�L�FM zKA3�[��/�1�%f�Y�ЬYh�,4k�6R\B�6�Hm(��P"�"�$"���Ć�y3���о�h�L�o&�7�I��Dg%%%
I��I4�(�(�Hj�L"�$"�$45�	M�DSoBS�u
X� ����h�h�"+QOQO�<M��m~�&�L�ܩV��Hd���e�Ͼ	�vkwwvN+$�
I�B��re��%t�R���i����٥�,����e�(��V���Pf��ֳ���k�:��/zR3�{��b����Rֳ�z������ݣQ;�>���4up�(5>�,G�R+���3�aIhX���%�;�3����U���q��W��X�ԓc]o~�x�����%��%j�Ⱦ�bl5-q�v��[��N3��LΘ��fR��hO
v9����MQ�.�(�}��]fb�22�2�K6y���-f��2���� ��i����HZj$-5���-@S���0�K��2e�L�/S��
�ʋ�ebk��je_����jv5�g��Ll(��e��L�'S���m4�<*3�OL\("Ӎ�s^��U�
�(��q`��V*�$5^����E��"fw��^bv��g����|��yr��J��7mX��h†}��侚xT��JY���S��bXV����V�$g4�W�k�u�x�c�U�~�~�~�~�~�~�~���X�E��"�w�β�C��L����V��l�`;��`'�E=��I��T�d!��%re+�8r&�� g"p�ȃ�à�@%�5�ԱO=�Ҏl@:���&5���u'��\{"�h�RAo�����@D�#!#� 3�g88\����9�r~~�Z��r�s<�
L׀kA⮔�ܠ�ܠ�ܠM���%G��k�*�{�����-7�Ҷq�<���Ҏ���@#�:)C3he7�x�t?�� �9���N�wC���n��$��p�k�,����L3Z-��<��29�����*p-��� ?���%G��<�|����\��\�e��=���|
�4�9ο������%�q�;wo�}-�w K�a�J�ɻy�7��7.��>o:9A����|�m��<ř��#_�,��>�{�{��^r /�؋7���������E�"r�<��y��8.�s����\(��"�u�_�N���r��=Ƚ �B~/B~�$/֋9�~�)�.��A�#�\_͞l�ˑ���R.r)?���\ʯ;�"r�dy��	�Ahc��}ہ�H=9?�V��m�ĩ>(�[}P
l*�m8`��*�m�+���lBm'�����Q�7:Pc)�cG�{5�Z�5�c���Z��lc�ѥ���}.��|��v"�;�����*��I�>y%iQD���%�d�MFL^͢]�4}���\Us�]�G�Z��o�*E5-�$�ԯ�d}��7L}��7�ōu����dr����J�������I��m+��>J�N[��
"=��Ҵ��Q��j�4J�(I1�Չuub]�_[�J������(�l�_C���06.��F#g�ӯ��]ܠV�M6v�;��w��
g�ʊ�J?9�{�ܫF�����;Ի8j���|��Faڨ�Z��[6jR��(M�7�����^Uk�Q�b�;��j �|�|z�ּ�/�!Y�.t(b��=5m%Li��^L���g�?��'4�=��zu��t��gg����$�1�;Mm�q�8g�sƠZw��|����7�\�?X�/�Y,_[��Qi����=J�=���*���	Ҋk��$J[II+)�qU�>�b�,���݆]�S�J����,�b;粒� ���] �vʒ}&�ȶ��B�XrL���n1ӊe����b�[���u�������5j-�}�\���F�ۘU���b�b�HH��Ϭ���ֺ3�q;g�rŸV"G�+�*Δ��͗	�W�|��kk��7v�#E�w��Z��B|�p�zd�r��8����r��k����Po��ގ�����������Rz�:XF��o>��ޡ�ާ�F���j��ی"t�ȌOv�G�����V�#���A�
�r��^Z���O_��Y=k=��(��s
�����Gk�F/��A7��>81�t$��M��"!Z!��Ԉ�x�;�bp.k\��:<r�smU�*J`G&��1���>������/����N�!r/���i�Ǵ~�p���n𹜫�
��w߶~�|������x�9�9�*.H0I-��~Z���w�^8nr����=���]�}��F���"=g�R~�{|�96�������$��Q��1U6ɷ�ɺh�ڱ�v��{�^��W�RTc���C�5��5�jƌ��N�}�8K'g�Tg���M3��f���;jT�ɚ�T�Np~��UW�0��Iy�_���f3�7*�u�RI�Q��e/=J<���22�;d��m�@:]�NW�ӕ��^�����67ӜW��C�0iJ����7�b7*mL�eH�L�6&��ӎ>�х0G�@娆64�C���:�}�w��SZ�f�R��-������%��r�o��m����.�Ϣg�S�w���������g�7F� ����h�3�s`�7�9b����h���H���sj}�\7R�"��3���G�gK�(Y��՝�:@�}H��~�z@�R��j��xú�k�w����N̠� Ԕ�H�'����9L�{`�F��+3;������l
h�QX:Uq�W+�5b_%�[6V����w�u��zD��~`�b.�Qu��Q��1�›���U�`���*p'X�嘞�>�?�����oͥ���靈>�K7�7��qm*Z��os]�ƞ�Q�;����-Q�F�F1X�SF���-��ty-�o�X�v9�l4fq��A�D�4y3z����?�w���|r��c0��nG.`�;��-�Nb���E�mw��F�X¶{8߻��Z
ր�@j�z�>���}>�����)�6���f���߶���`�۹v�v�]\{7�݃����KP̾%���C9��T�P��n��9_+pQ�v� " �o]�+X@�	R�|-�}Ac�6C@ۆ����p�v		F�Yj��ˍ"m<�
L׀k�<�4~�2
�`&�A�
۪-?�K9�S쳌��5��}b[��8�~3h!�o��~_7�ہ�@��[!>G8G��.`�
X��ђ���o�$�㘥�R��fl��6j,}�U�� �ҟ� �t�er$
.�U�Z0L�<��=��)���� x<�o�c�'��|~<�9���%���n�k��q�����y���p�2V�����	��:u!�ߠg��G�'z6Y����׀�`X�7���>&O���F��M|΁Y6s���~�o�,տ ��Eny`�w"w�����P��E�/�����g�u��X�֬1g�VÚ�j�PC�~=8�ls�z#h�4���6�k���7�1�x|�|������a���F"���VX�2��P�O0噺4���o���x��e�G��A�u�.WВz��ri��ex+�|(��4�ww�7'�w��׊Jé�$jp������&��5�b�YWT�+	s��"c�jm�Zg$͐��{���?�k-5�NV=H��G�3�R%��3N��?�ѹ����`$q�(�C3N����{"r�,W���a��vn���"o&����_���|?r��~��u�^b��1M;1����#���r��/����K\��*x
��o�w9�=ʳ�k�:��Ȣ�2�x�R�L)^�41�@μ&��$��_��K.�˔�eJ�2�x�R�L)^�/ӈ�i��ȷ����Bd�K�>�S����<��T��S*�UzJ�:ex�2�N)^��S��)�딊:�RO�8�V�)
jŞ2ѨV�)��'9k���S/��KD:���x�Rm�Z�TKW���j��J?���/١]�F��F��j��j�j ���i�5��B�x�F��K��x�>^�ާ-2��i���%�{��O��j�A�:e�6���u�c�G�#|��*u7���w"�r��߃\z�{�K�D������=�~�|�qO�Tj���?x�{����n�M��~�^�������x�Cx��S�k,W$*�<�V%*=�]�r��2��e��øOsP�+��̑r�]J�aj��R�K#qs;qs;�^I�|���1�"�c��u�s�����<><������?�<�Cx�2�O^��|wq#ަ�+���6x� �&���+�U�m�x� ��o���6A��\��o#W��a�z<M��˹f�Uje�2�L#^�/�x�{��0�x�F<L����R<L)�T�����Փ��N�V��5��)��ݮ'�˂զ��ݧf��u����7�E�K�̙VX��i�eZa�VX����8��f�J���9�������j�|mU3_]d!a��^/m�Z�o����|[^51[T�Iv�Q^-,2Z͙��j��j�G�9Gߏ���I�zC~s�k�)j����iT����u%f���3\���Q�(qO���l��Q���l�)��|S^s�Myj�r51MT�������Ӟ%��~}m,���
jn���*�y���`�������KN�%'w�����|#Ƃ��(꘸y�\���꘸F����k���S���T��hZ�[�YD��%hD'~(�V���k/Q�b�ğ�g��_��������A��oZs�-���6x��d�]��g�+Tj�'t�ߎ���T�c�8�3�j0�r�M޿mn�>�Q��y7�䁚�3�J7�ʶa�<5/[��-WȖ�c��ط�Z�6�/���
�G�qj5���\�B�`!W��+W�F��h�z�ڋV�W3W�U9cU�c�zw���~D��5���.�6���}�z��Z��>�a5�:�U���R�Vk �!#Dn���e����Z������Rsͣ��oX^Ss�wc^����~p�ߪ8_��2vc^,c7���2vc^9U���Q��t�Zqa=���Z�c-^}�ZMn�~r��'ނ�tb-�XK'�҉�t���o�w¼jm��j�����6�b/���(ZEˢhY��{�R�^��KQz)J/E�(=�G��H��y�Ҟ��;��z�\�9�_�f���	�߹��;�-j��@u��IEף�c<g��ē�f���������XQ��\Q��\M����w��
��
��
��
��
��
��
�j��*���k�Z5�N���}p���r����8�W����P�%F~��Q%V +;��X'Qc�YW�W�'��	9o��s�cU+�
4W�,�	�n¢���,��>��G>�HFmǵ��S��rm	�'�j�
nq��	?tm�7�Zܤ�>}ۊd�&��L��l�?���T��ȇ�r���G�ʞV+�uub�M���
eru�F�pr4��D7��;�b���L�K߀�K�lR��Je���T���5���Q����(��FUbj���G�j���h�hNb+��b���U��O�}��h����Uv�ʎV��*;ZU�����q��`
Xց��}��|6�����)�9~>�@.�˹��[��D&�M�v"��ʃVy�*Z�Q�>��l|�ՠ����\�I��$Ws
h���Q4�C��'g�/���hX	V����a�hX=@�hX
��,�7��t�a�?ZV���в��-+Q�$+�u�kh�-�e�̃�y�2Z�Q�D�M�i�h�|ǥ\]Q���N$$��^L$ԁ�y�4��Q����ys|Ƿ���m�m���h[�)#�jѶz��m�W�<��_sWUu��2�`@
�����
*e�Z�J�m�V�Z�Zk���n\Z7�V[�Z������$�@�	{@Y�D&�$fB��$!y��w�͛�$$�_��}w�z�z�}�s(�b�Q�"�G���  ��>?��������&�y��:��ش:#��6db�R�ϐ�Y21k�!���C�!��rH`9$�X�of��K`���{ۉY[n$��H`���䘵!H`����!H`�� ��;�6��}�U	,K�q�F����ծ�XY��}9�C���Xx#�G�W��ī-�L�r#��F����Ն �!�v��w�e��2H`#$��ħ�C��@?$�����uFC��$0d�ӆ��N3_�l���~vDs��
q:|�:��������Hc6<�ݐ�ЇχDfA��̟i��;1
�=g�; Fo�,�'���o�o�o�o�o���
�b7����.vC��+�+�+�+����S����������
�g����Fv��
od7����Fv��
�b>$"��4�g����A�v6��|�8���V68�
�2�f��Y�'�')�m��|p,��|�+��̇/���\�ײ�7铭���\����n�hnE�`�]�qv5���GWS~:��*�8z��r���|�����������R$
�9��…�L8S�l��������6�=��_�����C���kf������y�_H3�0��<p`��
���-�p(�
S6�͠p.(�=���E@�BP�,z!��-eA�BP5Tͅ��CG�Pu3�Z�nU7���AQ�֞���kЯ?��sl@� �ĸ�(��b��	�^!��4C�=D�:堎�)e�w�ח:�3l��HA�P��(�~`\�8.��z����(�1�-,���81Ko�Ѹc?0�+z&2�*�����9��t0o��4@n 7
����P]׉���:hu����#���C�N��8jX(�Yy)U���c�c��3xւ:��N-�S�Ԃ:��N��^�A�ZP�"O�9E��<P-T��ցj٠Zv�wP
֘_y�b����j��\�X��<P3��5�A�ZP�Ԭ5י�]y��:Pt(��{�	V6��
m$;���m��o�r�y� ?�\�����jV��e�bO��o��8kP,jU��"6k�F���xl3��=Rl���e���*3�ɪ�IZ1q�(����Uhu�+��v��r#�Ky�)75奮����X��'�������Ɨ��/�QF�<�s��ma9�j�>���"��3�,��R�&�������X��S�|��~�ؗ�r`��3'�����Vk9�P�c�	m�Ʌ}�������S"�ܡ�*ka�"��PM����)��s�#�`����Ϙ��fa�k4:��1�s\_x��l�l�l�l�l�l2_~�9�z��/?S���sԭ“����y���s���DXZ���V
$���Rh`B����h�Qԇ=H�1T���g
8_\w2�)�����I�S����)zh5�2�^(�;���W��IYjv&q<
���
�]�+��(p�������;��(��)�q
hPԀ5�A��>e���2��\��\���yl�<�m(���#�ca�.b�.�'R
$�#�#�#�#�#�#,��m�m�m�m�m�m�m�m�m�m�m�mA�0(% B3���"��:�"���(��((�sE�axAP�fN6㣣*�2Gl�4���C5�'?�2�[�4#{�9����h�5�*�!�������Z�Ɵ����2Ԏ��@��!#٠�\�ƿ9S�4�'���R�����t�l-(�F{Yeg������u)�+et�l��ɕ2�R�V����p�UʴJYV)��k(=���@�йt.�@���lpa.�0�#yPf��8~	����c˂�uʄ��s8��Dk.81��pvQ�,JD�г�pL�_�9(3(�
���C��P)z�A9=J>tt9�`��,<���]�PXo���:�:�:� 9S��k�t�����e��}����b�6i�a!�"ոz5��
ܡ�2`�k���if'��ހ>��	?z�<�!���mm21D���"�!j�
��f�a3��~�?l�6��c��^(D�['f�s�O;�g�F�e���nr�;cH���e�l �8�~�?lG��ֹ�'؎*��Iq:�����clC����'�Z[A��fvu=(t�#�ᯍ��B_��н!��c��'Of�<#2y�S���Y�fHf&�iF���L3�-�ŷ#m����M���s��g�w��/���%����b�.����Yٛ���mE�@_#���5^.l�3)�f��C�|�:�·�F���k���F���@d`!d`!Gǚ�c�������(�H��&e>x�o"O.�:Q&�ȒE�>�_���E&2$�N!M�g���C)�c��'v��&�,��92�;*�hw�c�-�X�M�v1��og�E�u���V�|$��N1�Sl�P
����P�{��rp>��V1�j���8֦�#���h C0n��
Ա�O�!7�2�2�	���x��r��F�{a#6�F�39Jm	�D�-���AnE���x�%��X��`]��W�h��c�z7��Q?�ߗ�C��\��G1���X;�^I,��һ�*�%�8���Us���x/��������{��x���w�]��<���Tj<g����q�pαS���^���l����!`�!`�!3�w>`�!`Kϭ'�ʶ���}��	�7�&`��O�_>l��P����}�@�qO
�̉y�>����s�}�W|��s����yB��<�b�v���2�Z��d�3�r$�({X�q2�w�e��)uJA�RP��)uV����<�W($�/M~'��z�9�#�R4^��KQx#�zT�8�Z������;J���#�d8����N��o��������n�����Z�{���[8�m�e�d�J��;y=�_I&��𳼾���lr���8 ��(���E��p՞���S荵���Y�����8M��Zp6�p���Y8�g}����g}���u���:��(8g�mp���8K��.�.g����٨�l��&q��������l,�qv+8��ݚ��
.�����+�(�;֐ip0�E��8���g�ӈ��u~8G"�H��#p};�]��z�F�f����R�Z�O"�@��P�	oś�8!�x�
���	��<EP�rE@�������-`�Q)��A�g^���{}5�2����j�r����%U�J�P(TaF=P(
E@�����7��̷�~�-b���g›bmv��
�81���;�(SҖ�����3�=�}��'O��<
x�������]��
E��G1�(^�f��q�c�Q����]���(�Ź�wC8���s��(�!�s���8f	e�A}9���:��Īہ�����,�8&]�37[�!�!�sL:�G����32~��)?8�O��F}#zV�;���2�+�q�u1`<�xr�Lp��WT�La~�f� ���j��B%�P�^4�z�V	�+�)�3�f����\-*�;��;��;���լ(�����u�g)C(}A����O9�����Q��|������{,�vFO��N�ө�S�Z@�#I�4߫�Q�#�U�(����5���y�D\�;��	����t���/C�r���B콅mA���
�xg9���m���Z�_6��;l���b=�e�����)�D$oj��7Yk�o7@G���q9u��ӱ��~W�"&�_�1��X&��`�J܆���N,W�ߋk�=X���X�E�xL��u"*��&�,��*�������bQ!!��L�G9C�O�'��r�\"ϐK�r9T��U�P��r�� ϗ��|Kn���Qr��!�J��%��J���H�>9A�XI%�5J�.r��P��
���+oVg�3�o�u��M�T����"�y���&ʻ�%�R���y������O]�������*�������M�9]ݥ�O����)�G����S�ɿ�'��9��zJ>��VO˿����ʿ���+�5K͒/����o��ʑ/��j�|E�W�,�Em��+��%g�
�W����~��N���=����t�>E~����=AW.ғ���'��2WO�S�2�+}���3�Y����"��˲P��ߗ��l�Enҟ���a�C�dX��2�~])���z��'-]�k��ATR��:�tX��W��JӍ�Qu��9Q'�Щ���e�Hq!G^�FJ�|a-��B���Ӻ�ߑ�K��fM٦���p���wL�ZS�l����ZM��l�X_:���v�����ê>���na"���C��'�"�Y�K�k�e�&aE��X���X���0�k�uM�;5[a�c�ŏ�+��jɼ�q��$����,X=Ԭ��U�p���0��!�c�j��U�ƽB��U�>�8�.�zk���i��\g���e�Uh�L�S�]+�y������j��9�U�Nm?0���Q-��$p���iO_0���1�"�E�/�Է)�2p����V�
�dG����U�
W�ޡ��V�Ռ�D;p=�q*���[�������詍�cɎ��!}���l�>�IK\�R�}
��m�у1~@��M}�ѥ/���ٟ���[�M��v�k;k���ں3&���`g����<�j���^���,�!�u�,_�-]Iq���[���;�Ӷ�
k�Ua�~�?���F�k�}_�y���u��cmr]��oje�c��k��x��ϣ���n�oG�`Y#:e�V�b�?�ۗ�8M��ٳ�9d�Am������U6X�#��M0�m�2���{�z�>���<J�0"!�
��s��Pn��އ�Ԥ��Rڝ0��s%۱;�d�l�!p�P[~iۅ��7Y��}-���$�w����꺵vs�~m[�D��-wD_�e#/C�¬�K|�ݦ�#�������)��<�=���Vɝ��0t��S��= �_aK��6F%H�ӏ�')m��F�`kvŤݴ�K�;1;���Y��-�-�G��Z����m��8l�����:�/r��]�@ۯJݛ�u��;I�b]��h_7�m�.��Q�8Ҷ����G���:�?���0�w���t�GZ����nl<d+��'_M�T�'�����S�1���?�	3��$�_~qJ���Z���ӧ
�]Jk�Z�R���:�{���(<�<��
�I���&�ի�/���٤/��S�#�C��y)O�I�z��6���6E�
م�>?�g��d��DR�ioG�S����><�c��#<i`V�uB�H��ߺ���s��^�q�k����sl�T{��'o�V8G�u|DЩ~���f}���=N�Xo�~}S�=���N�3���Z�&6����9�lw�:O�j��$�{�U�
{�
J~`۟�F8�$�߶݁��Z}Ϋ����u�S���L��U�펎T�^�.l�NYY�O,,�����v�����\[��p?�� ���y:6�p�:\c���Mt�]��X���o'���{�N�qO�g����<u�-JGH����瞧+uV�8K�G_}'��SqE	��V�j�R��<"CP$!�70�j]�q����p�M��C��D_��`_71H��7vB�BV��>n�7���^`���_���ki���Cl!\2��˴=���4�h��!��W��Gܵ���|7�M��^2�
��A�n6�V`�V<9����.�����.Z��� =�
7�ob@<N'�s�8��@p/���@T��(;������_��~KK:��h�iX�OBHN��˙gbOIb�3g�1�x���fd�0,()���'I��v	μeG+�2e��I�W��u<(dKm&���>�.��7��s����u�Z�$+}���7Z�Nt٧�PV;�Ӌ�d�`�N8:&�¥�qh���c'��i���YlZ�����m�Z�_n�u������
<�]lK>�֩۬;�u����y���?�-���(�Bv�l�����L_�8w��qs7���9K�v>��)y$���"��	G˩�<��t&k�`�_�w���vq(��D���yg&H%�T��^���=���f�����l@o�l�2x^�b	��1����=�5����5D�Q�C?(��r��E���w5K/��H�5�A;>�`➃v���4#�sS��V$0��u���"��Z�`iK��}N]9 �lݖ�=9c�ob@�S�	��+��Š�?��i�R���~�g�_�G2t<�NO��Y��X�1�����
6�'�<��3�qy��oO��"]�Th��a��P9��w!i<����<��,�|T#���'�#�'�so#і)gd9�����N�_0��g0�~�ж~<��p�.��>�x��
�$�1�2��N����`_1�����	l}T
�vi��mlW�ȊJ�X�/Yz�=1�{�S��|�u�c�:�u]����|�Sق��:Ӕ�~)f����z;K���f�(X.���n�*���Z����	^�p��IL��a�)L���>ek�@����P\�7�����e1��z��!�3���1��qE1K?q���k��X^��<�Kq,�ZɳV���UG�|���q���ƫb��R�%r�Ub�X*~-�DX��籾��X��y�x���*�<Vq�汊�\,?�r�\)��UX�,��EX�r�� �x6k�f�ʳY�K�^��	r���޲B~)����LY-��Sd������(��#��<Ge���h�_�*/U���xf�<��gj��T^�sZ���kyN�/xN�u<���<����z��[�A��g��3[����?���{xf�<��>��z?�l}�g������Gxf�xf�c<��	���l}�g�>�3[��3[��3[��3[_晭����Y<��u��:[�J�(��o��]���P~��r���9r�^�ɏ��D��:_�G�џ�źX�\��To�>��g����+��_���<�<��F!��LXx�\Y��g@���g�|�st�
�\�J�{�\(�k��`�.EY���L������n�bAW=�<�M=l]<�=�/y����L�\�W�ɀk�6p�n���y��0j�;]�3��q�E�]����d���gSxVz
=���ف�ϗ(�g�� ���^�5}��m����d/F��!�a(y����k�x/���s�u���V�6
p��>�}�x_��}��������x�3���|\�;g8s���H��t�뼭�:�
Ӝ�g,YZO�9��f}z�3O3�(�F��s�Mpj�����O��5�_r�fg�mN�.�v�Y�H���m�S{Ω93\Ҳ��1mn�1�#�޶���L�7$i�̴m\s�b�U�q-AN�XN��J(!���W�Cb�Yb�!��,�������(�x�M\Ƶ+�A�d�v�S�<��<����O���Ju�*o��[��\���țPN�-���Ѽ�����߯
P��{�x�<�ϳ��}>~*oy��R�Q�����wY�
��-�5��MuU���
�����|��y�8���_�weZHWX��Lu޲�F@�;�}./��6���S�O��`����<�_LuXu�r��EbD&����.��	��sy˹t�x�������G�ENjOx��|�-|�-|䷹n_Ǿ�JYDu�n�v����t���u��o�]��
޲��2�1�W�����	�7�.������z�G�"��K�~\�d��̔,�#����B�9J���\�r�(�'S)Z�Yi��\�@�A����r _���|�:.��.����e.���,cT�eW.��k2��vɸ�H�p�̫9���풷���tM�����;x�oy�X�_�y����~��1�K-��py��߳�����v4b?�ry%�}���y/c$���*ΆG7#�s1Ƥ�s�c8����7�=�I�2�}q������B�X�D�T�LLW�kp�k�7M<,��E�Y�,���}m��S��rY	�J�_uP��W5+�4����:W/�y����	�J���P���uz�ޠ7��E�j�1�d�\H���F�ܕl8Yo��d��V�Js�Y�i�Av��4yd�)�6РW���h�=�usv{Xaΐ
��yI�H)B9�l��k�����i.����e�-.�q�����P<��>�>k���'s��l�sY��p����$����[\�-k�>)���%�V�\/�r��{	�v��GO�5��4k,ݕ˷�K���BΗ��a�1b����f�2�熙�c����"�������x1�w$�Z1U�"nw� e�C�&^��3��)s�����������c�o&��L���񓹜��\�固�R���R���AT�S�O�+�!K��f�-�r��'��Lv32:�Ȩ�N���I�!?�<����
A~E��*�����.�t;z���]�����Q�`դ'��^#�+tvlib/fonts/raleway/Raleway-Bold.ttf000064400000501630147361034410013120 0ustar00 FFTM�����|GDEF2�,����GPOS��k�\�GSUB���l�OS/2�gN�`cmap^-R���cvt ��)��fpgm��Z��gasp��glyf8�C�2� �head��,6hhea�d$hmtx�����locaN?��*@\maxp�\� nameB��JS,posta�1�a<#�prepO(�(���r�_<����^#�+tv�6�1h��O�6�1--in/��Qe��XK�X^27��P [NONE�
����� �� 
`2M�3W�=�%z"#�(�=6"5Y3�/�:�:�:�f1�,4&.;*_.1\,M �EG �>=�"M*��J��JYJ>J� �JJ��JHJaJ�J�oJ��Jek�@�����s<R}<.I'�6�/>z=4�Wrz\=�=��.==<�=\=^z=z�=��j8&	G&�=*O=278�1VP'!3(.�Q+�MI+�(�#d;[:I+�<(�;���/�M�#�:F* �$�:s � �����������YJYJYJYJJ������J������4��@�@�@�@�\J.=>>>>>>�4WWWW��=������e\=^^^^^�6^j8j8j8j8&Y=&�>�>�>�4�4�4�4�J���YJWYJWYJWYJWYJW� z� z� z� z�J\=�\�������������3�"J�=	J=�����J.=.=HJ=<HJ=<HJ=<HJ�<R��X���J\=�J\=�J\=\���J\=�^�^�^=��J�=�J�=�J�=e�e�e�e�k�k����@j8�@j8�@j8�@j8�@j8�@j8G�&�s�s�s��$�^�@j8?J�Js3JMJB<�JJa=� z�^4J�Js� z�>����^�>�>YJWYJW���������^�^�J��J�=�@j8�@j8e�k��^�^�^�&���W�=�=��/��qqQ�<�=�=QH!�2"?�n!//<!2M�!!22M=?!<2�&t=�YJYJ�L�eJ���L��L�O���J��L�JLYJ/]'�O�O�L�aJ�J��LoJ�k��;����J�<�JJ��JxL�$�J�7>n06=�=xWX�e=e=:=S�=[=^P=z=4�&�e=%.Z=�=j�==@#:=1!WWg���=A��=�����GU=f��:=e=&O=�
.��'r�]�H	W�E�M�SzCL�=0��J)=0h]'��L?=�Jq=�-�qAJ�=�J=XJ�=b)j0�4k��&	���"�?���<A.�<7.�J\=|��$�J/X�S+=�o�J[=%TE�<.�TE�=�>�>���YJW�W�W/X]'�`$����Oe=�Oe=�^�]�]�$@#��&��&��&�<%.L�=�J�=@���	R)�"�S�zG�T�C�T�F���f���o�4�J��J�YJWYJWYJW� z�J\=�J\=�����HJ=<HJ=(aJ�=�J\=�J\=�J\=�^�^�^�^�J�=�J���e�e�e�e�e�k�k��@j8�@j8GGG�&s���=�>�>�>�>���>�>�>�>�>�>�>�>YJWYJWYJWYJWY*WYJWYJWYJW3�J�=�^�^�^�^�^�^�^�^�^�^�^�^�@j8�@j8�@j8�@j8�@j8�@j8�@j8�&�&�&�&Z����d�:�:[:�:�:�8�6�:�8�5�:�#�*kMZ:�(�=�=f#f:�6����"�� ��L �����"�� �: a ,]&OJ~(�%!� ho
� 	�k)R$�@EI:�S+=>&`#� �� ��=^t� 3 >j���:�(e�5�K�2�C3�=�8�?�aI
� �=5{z�=?z{_8d
'�QTDQ zDD�Dl �DD�RD�D�D�D� (D� RD&�<S�@A2!��
:>J]'�]'�\B6zX�j8j8j8.=&
\=�=�8�8�728��=4�4n%�*�+`)I!J9$_.3"\,_(�L �����"�� ��M �����"�� ��* �����"�� ��:/("j��2!!!��9
�����d
~~��������-37Y����$(.15����_cku�)/	!%+/7;IS[io{������       " & 0 3 : D p y � � � � � � � � � �!!! !"!&!.!T!^""""""""+"H"`"e%�����
 ����������*07Y����#&.15����bjr�$. $*.6:BLZ^lx������         & 0 2 9 D p t � � � � � � � � � �!!! !"!&!.!S![""""""""+"H"`"d%��������������������l�j�e�a�S�Q�N�-�����������������������|��
�����������������~�x�t�����������z�x�r�p�n�f�b�Z�X�U�O�N�F�C�?�>�<�;�:�7�.�-�(��������������������������u�s�j�i�f�_�;�5��������s�W�@�=�����
	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc��������������������������������Ztfgk\z�rm�xl����u��iy�����n~����ep�D��o]d���QRWXTU���<c|ab��[{VY^������������������s���|���@J������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSQPONMLKJIHGF(
	,�
C#Ce
-,�
C#C-,�C�Ce
-,�O+ �@QX!KRXED!!Y#!�@�%E�%Ead�cRXED!!YY-,�C�C-,KS#KQZX E�`D!!Y-,KTX E�`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,�CTX�F+!!!!Y-,�CTX�G+!!!Y-,�CTX�H+!!!!Y-,�CTX�I+!!!Y-,# �P��d�%TX�@�%TX�C�Y�O+Y#�b+#!#XeY-,�!T`C-,�!T`C-, G�C �b�cW#�b�cWZX� `fYH-,�%�%�%S�5#x�%�%`� c  �%#bPX�!�`#  �%#bRX#!�a�!#! YY���`� c#!-,�B�#�Q�@�SZX�� �TX�C`BY�$�QX� �@�TX�C`B�$�TX� C`BKKRX�C`BY�@���TX�C`BY�@��c��TX�C`BY�@c��TX�C`BY�&�QX�@c��TX�@C`BY�@c��TX��C`BY�(�QX�@c��TX��C`BYYYYYYY�CTX@
@@	@
�CTX�@�	�
��CRX�@���	@��CRX�@��	@���CRX�@��	@�@�	YYY�@���U�@c��UZX�
�
YYYBBBBB-,E�N+#�O+ �@QX!KQX�%E�N+`Y#KQX�%E d�c�@SX�N+`!Y!YYD-, �P X#e#Y��pE�CK�CQZX�@�O+Y#�a&`+�X�C�Y#XeY#:-,�%Ic#F`�O+#�%�%I�%cV `�b`+�% F�F`� ca:-,��%�%>>��
#eB�#B�%�%??��#eB�#B��CTXE#E i�c#b  �@PXgfYa� c�@#a�#B�B!!Y-, E�N+D-,KQ�@O+P[X E�N+ ��D �@&aca�N+D!#!�E�N+ �#DDY-,KQ�@O+P[XE ��@ac`#!EY�N+D-,#E �E#a d�@Q�% �S#�@QZZ�@O+TZX�d#d#SX�@@�a ca cY�Yc�N+`D-,-,-,�
C#Ce
-,�
C#C-,�%cf�%� b`#b-,�%c� `f�%� b`#b-,�%cg�%� b`#b-,�%cf� `�%� b`#b-,#J�N+-,#J�N+-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-, �%J�N+�;-, �%J�N+�;-,�%�%��g+�;-,�%�%��h+�;-,�%F�%F`�%.�%�%�& �PX!�j�lY+�%F�%F`a��b � #:# #:-,�%G�%G`�%G��ca�%�%Ic#�%J��c Xb!Y�&F`�F�F`� ca-,�&�%�%�&�n+ � #:# #:-,# �TX!�%�N+��P `Y `` �QX!! �QX! fa�@#a�%P�%�%PZX �%a�SX!�Y!Y�TX fae#!!!�YYY�N+-,�%�%J�SX���#��Y�%F fa �&�&I�&�&�p+#ae� ` fa� ae-,�%F � �PX!�N+E#!Yae�%;-,�& �b �c�#a �]`+�%�� 9�X�]�&cV`+#!  F �N+#a#! � I�N+Y;-,�]�	%cV`+�%�%�&�m+�]%`+�%�%�%�%�o+�]�&cV`+ �RX�P+�%�%�%�%�%�q+�8�R�%�RZX�%�%I�%�%I` �@RX!�RX �TX�%�%�%�%I�8�%�%�%�%I�8YYYYY!!!!!-,�]�%cV`+�%�%�%�%�%�%�	%�%�n+�8�%�%�&�m+�%�%�&�m+�P+�%�%�%�q+�%�%�%�8 �%�%�%�q+`�%�%�%e�8�%�%` �@SX!�@a#�@a#���PX�@`#�@`#YY�%�%�&�8�%�%��8 �RX�%�%I�%�%I` �@RX!�RX�%�%�%�%�%�%I�8�%�%�%�%�
%�
%�%�q+�8�%�%�%�%�%�q+�8�%�%����8YYY!!!!!!!!-,�%�%��%�%� �PX!�e�hY+d�%�%�%�%I  c�% cQ�%T[X!!#! c�% ca �S+�c�%�%��%�&J�PXeY�& F#F�& F#F��#H�#H �#H�#H �#H�#H#�#8�	#8��Y-,#
�c#�c`d�@cPX�8<Y-,�%�	%�	%�&�v+#�TXY�%�&�w+�%�&�%�&�v+�TXY�w+-,�%�
%�
%�&�v+��TXY�%�&�w+�%�&�%�&�v+�w+-,�%�
%�
%�&�v+���%�&�w+�%�&�%�&�v+�TXY�w+-,�%�%�%�	&�v+�&�&�%�&�w+�%�&�%�&�v+�w+-,�%�%J�%�%J�%�&J�&�&J�&c��ca-,�]%`+�&�&�
%9�%9�
%�
%�	%�|+�P�%�%�
%�|+�PTX�%�%��%�%�
%�	%��%�%�%�%��%�%�%����v+�%�%�%�
%�w+�
%�%�%����v+�%�%�
%�%�w+Y�
%F�
%F`�%F�%F`�%�%�%�%�& �PX!�j�lY+�%�%�	%�	%�	& �PX!�j�lY+#�
%F�
%F`a� c#�%F�%F`a� c�%TXY�
& �%:�&�&�& �:�&TXY�& �%:��# #:-,#�TX�@�@�Y��TX�@�@�Y�}+-,��
��TX�@�@�Y�}+-,�TX�@�@�Y
�}+-,�&�&
�&�&
�}+-, F#F�
C�C�c#ba-,�	+�%.�%}Ű%�%�% �PX!�j�lY+�%�%�% �PX!�j�lY+�%�%�%�
%�o+�%�%�& �PX!�f�hY+�%�%�& �PX!�f�hY+TX}�%�%Ű%�%Ű&!�&!�&�%�%�&�o+Y�CTX}�%��+�%��+  ia�C#a�`` ia� a �&�&��8��a iaa�8!!!!Y-,KR�CSZX# <<!!Y-,#�%�%SX �%X<9Y�`���Y!!!-,�%G�%GT�  �`� �a��+-,�%G�%GT# �a# �&  �`�&��+����+-,�CTX�KS�&KQZX
8
!!Y!!!!Y-,��+X�KS�&KQZX
8
!!Y!!!!Y-, �CT�#�h#x!�C�^#y!�C#�  \X!!!��MY�� � �#�cVX�cVX!!!��0Y!Y��b \X!!!��Y#��b \X!!!��Y��a���#!-, �CT�#��#x!�C�w#y!�C��  \X!!!�gY�� � �#�cVX�cVX�&�[�&�&�&!!!!�8�#Y!Y�&#��b \X�\�Z#!#!�Y���b \X!!#!�Y�&�a���#!-@�?4>U>U=(�<(�;'�:'�9'�8&�7%�6%�5$�4$d3#�2#�1"�0"�/!�. �-�,�+�*�)�!� �����@�[@�[@�[@�[@�ZKUKUYY
KUKUYY2UK
UKU2UYp
YY?_����Y?O_�	dUdUYY_�@@���T+K��RK�	P[���%S���@QZ���UZ[X��Y���BK��SX�BY�CQX��YBs++++s+s++s+++++++++++++++++++++++++++++++++++++++++++++++�
�;�������+���
��'%(����J�222222Pj�6�0Rv�����Jx�:|��V���:�$b�� Ff���		:	R	z	�	�

`
�
�>\���0Hbr��
6
r
�H���"Hl��*v��8l���&Vz���$$>��P��08�@Vf��:z��Tdl������$6J�������� Zl~�����$6HZ���&8L���.>N^p���$6\����   Z l ~ � � � � � � � �!! !2!D!T!f!z!�""("8"J"\"n"�"�"�"�"�"�"�"�###&#:#L#^#p#�#�#�#�$$ $2$B$N$`$r$�$�$�$�$�$�$�%
%%.%B%V%b%v%�%�%�%�&&&&&:&L&^&p&�&�'''"'4'F'X'�(*(<(L(`(t(�(�(�(�(�(�(�(�)))").)@)L)t)�)�)�)�)�***,*@*R*d*p*|*�*�*�*�*�*�*�+++0+@+�+�+�+�,,$,�,�-^-j-v-�-�-�-�-�-�-�-�-�-�...*.�.�.�.�.�.�///,/</N/`/r/�/�/�/�/�/�/�000$060H0X0j0|0�0�0�0�0�0�1
1"1:1R1j1�1�1�1�222"2*2>2^2~2�2�2�2�2�2�2�2�2�333<3D3X3l3�3�3�3�444D4r4�4�4�4�55&565N5d5�5�5�5�5�66b6�6�6�6�7<7N7�7�7�7�7�88L8�8�8�8�8�8�99929j9r9�::$:6:`:�:�:�:�:�:�:�:�;;T;\;�;�;�;�<4<p<�<�=<=x=�=�>>(>\>d>�>�???B?l?�?�?�?�?�?�@@2@�@�@�@�AA*A^A�A�BBXB�B�B�CCCXC`ChCtC|C�DD<DND`DpD�D�E
E@ErEzE�E�E�E�FF<FtF�GG(G@GdG�G�H
HVH�H�II<IpI�I�J
J>JpJ�J�J�J�K$KhK�L.L�L�M M4MHMPMpM�M�NN>NpN�N�N�N�OO<ODO�PP~P�P�QQQ^Q�Q�Q�Q�Q�Q�RR@RrR�R�R�R�R�R�R�R�R�S
SS"S*S<SNS`SrS�S�S�TT*T:TLT^TpT�T�UU0UBUTUfUxU�U�U�U�U�U�U�VVV*V<VzV�V�W<WnW�W�XHXTX`XhXpXxX�X�X�X�X�X�X�X�YY&Y<YPYdYxY�Y�Y�Y�Y�ZZZ*Z:ZFZZZfZzZ�Z�Z�Z�Z�Z�[[[&[8[L[`[t[�[�[�[�[�\\\2\J\^\r\�\�\�\�\�\�\�]].]F]b]~]�]�]�]�]�]�^^0^B^T^f^x^�^�^�^�^�^�^�_b_n_�_�_�_�_�_�_�```0`D`Z`v`�`�`�`�`�`�aaa,aHa\apa�a�a�a�a�a�a�bbb,b@bTbpb�b�b�b�b�b�ccc"c6cJc^crc�c�c�c�c�c�ddd0dBdTdddvd�d�d�d�d�d�d�e
ee.e@eRebete�e�e�e�e�e�e�fff"f2f2f2f2f2f2f2f2f:fJfZfjfrf�f�f�f�f�gg.gZg|g�hPhbhnh�h�h�ii.iri�i�j<j�j�j�k0k|k�k�l6lLl�l�mVm~m�nn�oo�o�pp:p�p�q>q�q�q�r4rtr�r�sNs�s�t:t|t�u&u6uFuVufu�vv*vLvxv�v�v�v�wDwxw�w�x xFxnx�x�yyjy�zRz�{ {n{~{�|$|p|�|�|�}}P}|}�~(~`~�~�6R�����(�N�n���ށ*�`���ʁ���F�l�����ڂ��J�R�Z�b�n�v�Ą��X�������Ƅ΄��:���܆�L�l�t�|���؇�F���ވ�N�����*�~�����������������ƉΊ�6�t����*�x����:�z����.�V�����d�����Ҏ��:�T�x�������Џ܏�����$�0�H2.�%#!"&543!24#!"3!27.!�@�4��

a�i4�
���8��
��iW��@
rr++23/01353W����>����=�L���?3�20153353=r+r�����%��?@		?3?399//333333333301#3##7##7#537#537337337#�� ��.l/x-l.p�!z�/l0x.l/z�� w!��d����d�^����牉"��S/>@@ .26:!
::++!!	?3/33332?3/33333901%3#773.#"#".'732654.'.54>32 CC	09CC�%5> 89$H6Fg7*J_45ka)=	.AO(8:.S7DZ,FvH2YN@��#���
t*&"1OA9Q2)w	&# $/H6Ic3$#����/?E)@@EE8((0 	rCBBr+22/32/3+22/32/301".54>32'2>54.#"".54>32'2>54.#"		�.J--J..K,,K.    �.J--J..K,,K. !! �%=����)E**E((E**E)C&&&'�(E*+D))D**E)C&&'&
IV6����(����<@,;	$	r3	r?+2+2901!.54>3232>53#".54>7>54&#"��*33Y72U6/N1$;! 9#+Q@%m:b|CIl;4P(,< %!+&�b-A63M*#F4/L@,10*MlC_�g6;`88TA''!-)�W=�����?�0153=r���"����
//01467."V?f+)E6b)E([e�j+Rgn3P�]1?������//01'>54.'7(D*b7D)*g>V[C��?1]�P3ngR+j�3�%� @
		�?�2923017'7'37'K/GIGHF/4-.G:MM:G"KK/�v
�	/3333301##5#5353vgyggy�lqqlqq:������/�99017#53I*t)sw��w:�iO�/20175!:/�yy:��
�r+201353:n�����rr++01	#�����:�1��5U�r
r+2+201#".54>324.#"32>5CuJJuCCuJJuC�8$%88%$7 %X�NN�XX�OO�X6Q..Q66P..Q,�;@
rr+23+22/301%!53#52>73�j�	&0033%�yyy/} 	�>&E)@
r'r+2+2990134>7>54.#"'>32!&#=/)>+()#U/AO-D`3(/2&1-H>7!!b!+L3#6) y�m@.@'r/3+29/3301%#"&'732654&+532654.#"'>32}*>#@uOLu'LI5=@JK=E--JTI_4Dg: 9�1L.>\31/_ %1148d8*$*&^-,P5'F/��;

@
		r/+9/9333015!533#358��O[XX�ܭ�w��Sx�
��k;"@
r/2+29/301"&'732>54.#"#!#>32M| MT-$7 4!!9uR^�
."Cj<Dv�B9P'.6##4�z�:gCGm<.��7�.@'
r/3+9/3301%4.#">327.#"32>".54>327ApG!:,$B-,LM'qCT|C@uPJuE��"<$#<$$;$$<�Ck?#@[0+%T6:[��f�NBpA%=$$;##;$$=%��2G�r+2/01!5!#_������z�:,��0�!3C@''88@0
r+2/39/39901%#".54>7.54>324.#"32>32>54.#"0GvFGuE"3)*FS)(TF+)4 �$, 7"#+ 8"�/--.�Bb7:eA(A/
(4/J32I05)0B!'0 '0A&%$% �f);.@
'r/3+29/30132>7#"&'32>54.#"%2#".54> AqE"9-
%A-,MM'rCT|C@uQIvD#<$$;$$<#$<DCk?$@[0+%T6:\��g�NBpA%=$$;##;$%<%E��
rr+2+2015353Emmmv������G���
@
	?3?3/3301537#53Hn`*u)v���w��w ���@	/3/3901% ���Z ������>�w��/3�20175!%5!>9��9�WW�WW=���@	/3/3901%57'5�Z���������"��$(@
&&%
r+2?33/0174>7>54.#"'>3253z
$!-*+. W?S-&J<$(5#lo� 90	+&$<):0J4 2' )"銊*�n[Uh)@^'1
fEL '�;/2�2|/3�22/339/3012#".'#"&54>324.#"'>3232>54.#"3267#".54>>=.#"326�J�i<!9+$'X3JO7W-(:2-)D%W0AJ!	".VuHFvU/,QrF/H%)Y,K�c9>j�|
<&0$0[1a�\:B;&&%O=7?$8G'?I"`4 '<=FwX0/VuECuX246d�TY�_2��	&$!
��
D@'	
		
	

rr++29/33399<<<<013#'##��B�A��bf�:��%��J��&@rr+2+29/3901%#!!24.+32>32>54.#�>i>��|2I'42=G�%��)�ٸ&#�<Q*�5S-3\^++�*��((����$@ 	r	
r+2�2+2�2014>32.#"32>7#"./Z�Sb�#j:B 4M47M.!D:q_v:L~[3hA}g=VEI(/*DT*/WC'0&A5J&?i�J��
@	rr++23013!2#4.+32>Jt�NV�k�2^CxxD^1�_�bl�XdEi;�,=kJ7�@


rr++29/3301%!!!!!7��+��yy�y�p�J'�	@rr++29/3013!!!!J�����y�p�� ���� &@#""
%r
r	r+++39/3201".54>32.#"3267#5!#qE{]44^~Jd�$ga9-J69L.6c+YO�r8c�MI�b8UFL58&BV03V@%86�`
e��J��@
	rr++9/32301#!#3!������B�:/����J���rr++0133J��:�����
r	r++301732>53#"&'&
B-'2	�4iW0L �	6V<t��P�`4J��@
	rr+2+2901333	#J�*���!��Z��R��u2^�J>��rr++30133!J�j��yJ�@	rr+2+2901!##33��M����ԓ��[�.�l��:J��	@r	r+2+29901#33#Ԋno�s�8�,�;����'@	#
r	r++2301".54>3232>54.#"yN[25]LMZ24]��5M12N45M03M4<g�DG�e;>h�DF�e:h.VC')EU+.UC')DTJY�
@rr++29/3013!2+32>54.+J-1R="8bC��(+��(DT,<lD�g5"%4����'+@

*r
r	r+++3301".54>32'2>54.#"73#yN[25]LMZ24]J2N45M03M45M#��=f�DG�e;>h�DF�e:z)EU+.VB()ET,.VB(���J��@
r
r+2+29/33013!2#'#32>54.+J:1S=!:'�����(+��(DT,-S>����g4 "3��G�2@*".r	r+2+29901.#"#".'732654.'.54>32�%5> 89$H6Fg7*J^55jb)=	.BN(8:.R8CZ,EvH2YN*&"1OA9Q2)w	&# $/H6Ic3$]�@	rr++2301###5!]��OM��My@����@	
r	r++3201".5332>53wUwI"�(B12C'�#Kv9dEj��,SB&'BS+j��I�a7��@	rr++29013#���������"�:��$@
r

r+2+2/2/29013733##37=�QRzZɖ��w}|w���X����'�:*���������@
	r	r+2+29013#'#����������������^h��@rr++29013#5�����������N�2���Q�	@	rr+23+23017!5!!!��%�����h�yh�yR��
��//32013#3R�??(k��kc��rr++01#����L�:�.�����//320153#53.@@�(k6k��'/"��r+2�2013#'�p�n��/��i&��6����/3015!6oyyy/I����/�9013/|7V�w��'8+@!66$/$r
rr+223+2+9/3330174>3254&#"'>32#"&/#".%>=.#"3269fB!D;:+N++4m<p}
()"f54S/F84C*:�3M*
26X""ph�m$,0+K
5
-%$=��\�'@rr
rr+2+++201"&'#3>32'2>54.#"g<^u�[=3T=!%BYZ 5'#=)5)$'
6/[��/6+Lb88bK)r*9+I,.} 
�� @		rr++2301".54>32.#"32>71@fH'C|UUz�8"&?$%>&+"�E]
+Mb6J{JJ<('G/.G)('>#��]�/@+!
rrrr++++332014>323#"&/#".5.#"32><jD:]�#$/c66[C%�
,62%(5'#L{H9,*��m$!14*Jc
}.,:  9*
!��B%!@i"	rr+2+29/]3901".54>32!3267!.#"0?fH'C}UVzA�k'=#(G
sG`�%<%$;%
+Ka6K|KK{G(<'  (>#:(;!!;��@
	r
r++2|?333013#5354>32.#"3#]EE+O5 A ("$���f A_4e0.%f�v�!>"6!@#-
rr
rr++++33301".54>3253#"&'732>='2>75.#"
4W?"$AY6=\uK�TUv*I[3+G+_("+52$'5)J`69bK)7.\�
No;94G%*A3B-1k!}./9 8*=$�@	rr
r+2++29901!#4&#"#3>32$�/)6+
��d;3@$&=<1 ����28#;I'=���
??�2013353=�����U�����<���
r/2+�201"&'732>5353%D: �1Q��[
��8X0��=2�@
	rr
r+2++901!'#373��G��ӎ���F��F���<��@��rr++20133267#"&5<�"
H?E��$f
C>=k$%@rr

r+22++293301!#4&#"#4&#"#3>32>32k�+&'G�+&'G�ydAAI
 c>1="
&>;=1��&?:<1��a37@/69#;J&=$@	rr
r+2++29901!#4&#"#3>32$�,'7,
�y>Q-1?!
&?:1 ��a"/#;J&��A#@	 
rr++2301".54>3232>54.#"/@fG&&Gf@@eH%%Gf�$>'&>%%>&'>$
+Lb67bL++Lb76bL+.G()G.-H()G=�+\'"@$#rrrr+2+++2901"&'#3>32'2>54.#"w=]�u\;5YB%;gp2%(5'$)6
7/���Z.5*Ka8L|Ir-9!8+
 {0�+=&"@rr

rr+2+29++01".54>3253#'2>75.#"2T>!%BZ4<\u�<F/'%*3&$@
+Jd89bJ)7-[�1fr'|&-9 +F*=u@
r
r++?33301"#3>7:u=`�{V0�/,��p6>���+@
rr+2+29901"&'732654.'.54>32.#"�Cz,0/[*'/1#:N'5_@8d)6(H%%+?W,r
,+W&$
$7+4K*#'U

&70NX��w�@

rr+2+2�3301%#".5#53533#3267w07%>%EE�nn(9.-g��g�8��B@
r
rr+2+2+299017332>73#"&/#"&8�,+3+�$-#nBQT�H��<=* E��m!*57i	@	r
r++2901333������n���F @	

r
r+2+2229013#'#37'373��pXVq�~�=[o67o[>�����t�ࠠ�@

r
r+2+2901?3#/#�n
m����q	p������������@	
r+2?3990132>733#"&'H
ϋ�|��1I- f1,�}���#9!�	@	
rr+23+23017!5!!!!�����$�JR\^R��^*����//33013#"&=4&'52>=46;�7�
�y�#
%�k�%^�kO�~��//013Or���w2����//33015323+535467.=2�
�7yk�^%�k�%
#�8�h�
�	/33�220174>3232>53#".#"8 5($96J!7)$;4	�+/"(1#V����
�
?/�201##5܆����>���'��+�)'@%%

$$?3/333?3/333015.54>753.'>7#3W@#7jL<Fr �.$�NW#�,%
xo0L[0DtOqqD?(��(-=nz ;,
(*33����:'@%::(77,3	rr+2+29/3232/3301!!>54.54>32.#">323267#".#"9y��$/ 7^9<n%FN%&&%-,#!>=> F }e�=@%A?@#2Q/81R",&59D(89 	d
	.p�7"2�'//3/301>327'#"&''7&5467'732>54.#"�65E7DE2H6 7I1ED6S+))+�G7C77D2D
E2E0:6E7�././��.@

r
?+29/93�22333013#3##5#535'#5333�Ix$�����"xJ������WCW��W AW4��VQ�~��//9/�01##�rrr�v���v�+����?R!@F=I@MP8 
1'r/3+2901%#".'732>54.#.5467.54>32.#"%>54.#"&'�+DL#(D7)V<!)%B\1
9`:+D4%g	&&1#%L@&�� %#
		& 	�2&7L0!$R	.L3$	9'4V4&+1$'?/,b
��M\|��+���'L@
:2
rD(`	r+2�2+2�201".54>32'2>54.#"7".54>32.#"32>7�P�e88e�PR�h88h�REuY10XvFCtV0/WsM7[B$>\=Np
")!(#	<W6b�NM�a66a�MN�b65-RqDApT//ToB@pU/K#@U2,TC'D:'
",.
&!;$(S��#2+@*-!')$�@�?3�29/93332/301"&5463254&#"'632#"&/'2676=.#"�2FTB1"%&4EPNV
	B	'#!*!SA15B!%=/LJh
U"H'#.N�
$@
	/333/393301%-%#����$���� �mmgn�A�mmgn�;j#�
�/�301#5!5#r����ڮx:�"O�/20175!:��yy+���&6?%@?0446>'
r26`	r+2�2+2�29/3301".54>32'2>54.#"32#'##72654&+�R�e88e�RQ�f99f�QZ�U0VuEEsV..Vs]�)?$$gk\@_�!Z6b�NM�a66a�MN�b64O�ZApU//Tp@AqT0,C$3'
����#! ���<yh��(���	r+2�2014632#"&7327>54&'.#"(;+-::-+;K


q*99*0:<E

;�-@	/3�2/3333/0175!##5#5353;buxuuxll�kk�0"@B D?2�29014>7>54&#"'>32390?*/(/#32L/RT).!(��5G2
"!: G;"/
Nu0,@
&BD?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42Q('6
H<5"".=)(6��/I���M�,\!@ 	rrr+2+2+299/01332>73#"&/#".'#M�,.2,�%-2A$&	���<=* E��r$&3"��#��c�#@

r+233/39/33301463!####".7%#3#��&Fq3rEg8p5 7=33�y�d�N �� >pM.A%.RU��:����/�01753:n����7� �0@	

BD?33�22301#53#52>53�N '+Q�OO	O��$S����@�?3�201".54>32'32>54.#"�:T,,T::S-,T�'''(S4V12U44U21V4�//-/:.e�
$@

	/333/393301%57'5
57'5e���������߱ngmm�A�ngmm��� ��X�&'c*	� ��l�"392@76613&&%%1499 r+22/392/3/9/333/301!4>7>54&#"'>323#53#52>53		70=).'/"1
2J/OS(, (���N '+Qn=���5F3
#!
:!F<!/ 
N�NNP����IV6����������&'c�	F�+��$(@	$$''(
?3?33/0132>7#".54>7>57#5h"",++-"
W?S.%J<$'3#ln 9/	+'%<):0J4 2' )"銊����&&����/�01����&&����/�01����&&����/�01����&&�v��/�01����&&�l�
�/��01����&&����/�/301����-@


rr+23+99//333301!!!!!!5##������V�"�i�՟�y�y�y��)�����7��&(����J7�&*����/�01��J7�&*����/�01��J7�&*����/�01��J7�&*�a�
�/��01����&.�����/�01��J�&.�6��/�01����)�&.�����
/�01����&�&.����
�/��01��@rr+2+29/3015!!2#4.+32>E��t�NV�k�2^CxxD^13dd���_�bl�XdEi;�,=k��J��&3����/�01������&4����+
/�01������&4�#��(
/�01������&4����.
/�01������&4����(
/�01������&4���
�,(
/��014Y��&@
		/33/33392301%''7'77�TggSfbTbcSb�SggTfcSbcTc������&4��@����&:����/�01��@����&:���/�01��@����&:���� /�01��@����&:���
�/��01����&>����	/�01JH�@



rr++99//33012+#32>54.+f1S=!7cB����(,�F)CT,<lDnƀ��5"3�=���-@%		-r
r+/3+29/33017>54.+532>54.#"#4>32�>Q!3#$&:d@8X3'AJ.Of8u47"1x!
 .�

8W1(I3">+	fH9R3�����&F�e�</�01�����&F���9/�01�����&F�X�?/�01�����&F�5�9/�01�����&F�,
�=9/��01�����&F���KBB/�/301���7IR/@NR%C%%r)118r+223+299//332301".54>32>7.#"'632>32!3267#"&'726767.'.#"%.#"�3Q/9eA >:5*P+)hs>\!_:U{C�f)?%(G
sG`:Js$IQ!>34C)2%<&&=$
+L/2L+


,/UC&$"(K{I
(<'  (>#;1&0b
%	.%%�(<""<(���7&H������B�&J���)	/�01����B�&J���&	/�01����B�&J�v�,	/�01����B�&J�J
�*&	/��01����&����/�01��=	�&��'�/�01�����&����
/�01�����&���
�/��01��D�+3"@(/0.-12,3 ?3?9/9301#".54>32.'332>54.#"'?D)Ke<L|H%CW34[
*FgH�CcA�e#>'(>$$='(>$eo*q'q&s"FoN)@nE2VB%+#/YSO&#ew}t%;"$=$%9!";�=
@4?
B��=$�&S�b�/�01����A�&T���'
/�01����A�&T���$
/�01����A�&T�v�*
/�01����A�&T�T�$
/�01����A�&T�J
�($
/��0160�#@
		/3/333/2015353%5!�qqq�����������kk��A#'+/&@+-,*%&)(//
r''r+22/+22/901".54>32'2>54.#"77'7'73/@fG&&Gf@@eH%%Gf@&>%%>&'>$$>�g8IS1�7?AX
+Lb67bL++Lb76bL+r)G.-H()G..G(l)Vb$4 O��8��B�&Z���!/�01��8��B�&Z���/�01��8��B�&Z�t�$/�01��8��B�&Z�H
�"/��01����&^���/�01=�+>�'@rr
r#r+2+++201#"&'#3>324.#"32>>)H_6-:
��
93;^C#�8'*  '/#7eN."���%2Rd1+I,$�-:����&^�:
�/��01����&&����/�01�����&F�@�9/�01����&&����/�01�����&F�l�@/�01���8��&&�����8&F�>������&(�$��%/�01�����&H���!	/�01������&(����+/�01�����&H�w�'	/�01������&(���%/�01�����&H���!	/�01������&(����*/�01�����&H�w�&	/�01��J��&)����/�01�����&I*�2V+4��@rr+2+29/3015!!2#4.+32>E��t�NV�k�2^CxxD^13dd���_�bl�XdEi;�,=k��}�3(@ !/r
rr%r+2�2++2+29015!4>323#"&/#".5.#"32>T)��<jD:]�#$/c66[C%�
,62%(5'#UOO��L{H9,*��m$!14*Jc
}.,:  9*
!��J7�&*�u��/�01����B�&J�^�&	/�01��J7�&*����/�01����B�&J���-	/�01��J7�&*����/�01����B�&J���&	/�01��J�87�&*�X���8B&J����J7�&*����/�01����B�&J�v�+	/�01�� ����&,����-
/�01���!>�&L���=
/�01�� ����&,����.
/�01���!>�&L���>
/�01�� ����&,���'
/�01���!>�&L���7
/�01�� �+��&,���*��İV+4���!>�&L���;
/�01��J��&-����/�01��=$�&M����/�01��!@


r
r+2+29/33/3015!'#!#3!�2�����BLL��:/����$�@
	rr
r+2++2�299015!#4&#"#3>32)�/)6+
��d;3@$UOO��&=<1 ����28#;I'����K�&.�����/�01����<�&����
/�01����&�&.�����/�01�����&����/�01���&.�����/�01�����&����/�01��3�8��&.����"�8��&N���V+4��J��&.� ��/�01=��r
r++0133=���J����&./��=�<��&NO������&/����	/�01�����<�&����/�01��J�+��&0�����ΰV+4��=�+2�&P�����ΰV+4=2@
	r
r+2+2901!'#373��H��ҏ���G������J>�&1�6��/�01��<��@�&Q�&��/�01��J�+>�&1���	��ΰV+4��<�+@�&Q�E���ӰV+4��J>�&19��<����&Q��V+4��J>�&1{3Y��<��|�&Q{���V+4��G�	@
rr+22/3+2/3017'%3!!M!��j�I�I�<��y����X�@
	rr+23+22301'%33267#"&5!"1"��!
H?E
H�H��$f
C>��J��&3�%��
/�01��=$�&S���/�01��J�+��&3��
��ΰV+4��=�+$&S�����ΰV+4��J��&3����/�01��=$�&S���/�01����$�&S,�.�/�01J�<��@
rr++2/3901#33#"&'732>=Ԋjf�1T1%E: �=�4�28T/[
*=�<#%@rr
r/2+++29901"&'732>54&#"#3>32n&D9 ,'7,
�y>Q-1?!1R�[
4?:1 ��a"/#;J&��8X0������&4����(
/�01����A�&T�^�$
/�01������&4����/
/�01����A�&T���+
/�01������&4���
�,(
/��01����A�&T��
�($
/��01���2%@r)r	rr+2+2+29/3+201%!5#".54>325!!!!2>54.#"� ?L+K|Z03\{I,K=����0J23J./J24Jyyi 1<g�DG�e;1hy�y�)EU,.UB()ET,.VB(���*:C%@C?3r##+r+223+2239/301".54>32>32!3267#".''2>54.#"%.#"-N|GG|N-M>&hDNyF�l'?&*G
oI_6)KBAG('>$$=('>$#?M'<%%;$
GzNN{G7'==D{P
%=$*  )?!5&'5r)G-.G))H.-F)�(<""<(��J��&7����/�01��=u�&W��/�01��J�+��&7�����ΰV+4��=�+u&W����ΰV+4��J��&7����!/�01��=u�&W��/�01����G�&8����3./�01������&X���,/�01����G�&8����9./�01������&X�F�2/�01���7G�&8�����7�&X�]����G�&8����8./�01������&X�F�1/�01���7]�&9�����7w�&Y�@��]�&9����
/�01������&Y�i�@		

rr++9/333015!###5!I�.��O#KK*��My��x�@

r+2?�3333/30175!#".5#53533#3267 %307%>%EE�nn(�PP�9.-g��g���@����&:����/�01��8��B�&Z�Q�/�01��@����&:����/�01��8��B�&Z�\�/�01��@����&:����!/�01��8��B�&Z���%/�01��@����&:����,##/�/301��8��B�&Z���0''/�/301��@����&:���
�/��01��8��B�&Z��
�"/��01��@�;��&:����8�8B&Z�b���&<�U��/�01��F�&\���/�01����&>����/�01����&^�f	�/�01����&>�e�
�
	/��01��Q�&?����
/�01����&_���
/�01��Q�&?����
/�01����&_���
/�01��Q�&?����/�01����&_�A�/�01���� )@&&r!	r+2+29/301".5467!.#"'>32'2>7!qO]2#6C%&E3
�\zFM}\11[~M4S4�y7W;d}A
+G21!/8R/<eDH�e<y-P43P.�<�&@
"r/2+29/33301"&'732>5#5354>32.#"3#�%E: DD+O5 B)"$��2R�[
vgAA_4e0.Fg��6T/�����&4����(#V+4����Ad&T�6���$ V+4��@��$&:�%��V+4��8���d&Z�����V+4J�	&3@r
	#""!& �%r+23��2923?33?3+201%!5!!)!2#4.+32>7#'���%�����`t�NV�k�2^CxxD^1�UUFk`kh�yh�y�_�bl�XdEi;�,=kr?? eeJ��
&3@#""!& �%rr?2+2+23��2923?33013!2#4.+32>!5!!!7#'Jt�NV�k�2^CxxD^1�!�����$�J�UUFk`k�_�bl�XdEi;�,=k�\^R��^�?? ee��U�/9@A@$0669
=<<;@:�?23r+r

!r+2??3+29+2��2923?33014>323#"&/#".5.#"32>!5!!!7#'<jD:]�#$/c66[C%�
,62%(5'#� �����$�K�UUFjajL{H9,*��m$!14*Jc
}.,:  9*
![\^R��^�?? ee��J����&1/H��J�<�&1OH��<�<�&QO=��J����&3/���J�<��&3O���=�<$�&SO\�� ����&,����,
/�01���!>�&L���<
/�01���>��&4�����8A&T����J�&)?���J��&)_�����U�&I_��� ����&,x��'
/�01���!=�&L�x��7
/�01��&Q@,
	

	

			!
?3333332??9/333//9<<<<01'733#'##4632#"&7"32654&rV6}�B�A��bf://:://:i#l�:��%���*11*(11T�����&F'������QKBB/�/3301������&����/�01������&��x�S/�01������&4&�#��,
/�01����A�&����0
/�01����&&���
�/��01�����&F�A
�<@/��01����&&����/�01�����&F�l�=/�01��J7�&*�w�
�/��01����B�&J�_
�)-	/��01��J7�&*����/�01����B�&J���*	/�01�����&.����
�/��01������&���
�/��01���&.�����/�01�����&����/�01������&4���
�+/
/��01����A�&T�_
�'+
/��01������&4����,
/�01����A�&T���(
/�01��J��&7�j�
�#/��01��u�&W�
�/��01��J��&7���� /�01��=u�&W�3�/�01��@����&:���
�!/��01��8��B�&Z�]
�!%/��01��@����&:����/�01��8��B�&Z���"/�01���+G�&8���6��ӰV+4���+�&X���/��ذV+4���+]�&9�����ΰV+4���+w�&Y�i���ӰV+4�����J&4'�����~�0�,,(
/��/�01����A�&T&�J�^��,�(($
/��/�01�����S&4'�������D�((
/�/�01����A�&T&�T�^��@�$$
/�/�01�����S&4'�
�����,@((
/�/�01����A�&T'���^��(�$$
/�/�01����&>�y��	/�01����&^�N�/�01���<��
r/+301"&'732>53
%E9 �2Q�[
��8X0��;%@""rr+2+29/301".'467!.#"'>32'2>7!)V{B�(<#)G
rF`:@fG'B{T%9%��'<
K|H
);'  (>#+Jb7J|Ka"<((<"��=���_��=���`��G���/I����/�901'73�V6}Iw5��
��/3�20152654&#52/::5//1*)15��
�
�/3�201"&5463"3�.;;.51)*1/��US����US��Q}��//01#�r�v�<yh��/3015!<,ySS=���
��/�0153=r#���=���
��/�01'3_"r���Q�~��//01#�r�v���!T'����2\�����5�����?�8��W����/22�2201".#"#4>3232>53+$J-!(%J/Z	*- (/"��!IZ��/I����/�3013/|7V�w/I����/2�01'73�V6}IwUS���/3�9330173'jajEUUuee ??W��@
�/2/2�22/01".#"#4>3232>53+$J-!(%J/Z	*- (/"<yh��/2015!<,ySS!T'�
�
�/3�2012673#"&53�"GI:9JH$�* :LL:,2\���/�01532y\~~M\|��/2�20153353MoQo\wwww�T��
�/3�201'>32'>54&#")1(+!"

�)+0%
5����	/3�2014632#"&7"32654&;./::/.;i�*11*)11U!IZ���/2�23301'73'73cB0hJA/iIw�wUS���/�2923017#'dUUEjaj�?? eeIL���/333�2013'3�i/B�h0B�w�w!T'�
��/3�201"#4632#.�$HJ9:IG"�,:LL: *G����/�99013#57�'q(�?TT?2�����/2�017267>732#*a3?�\!.+2�9����/�01532y�~~M�9|���/3320153353MoQo�wwww=�+�����/�9017#53I'q(�H^^H�7�
/3�201"&'732654&'7�>"-(49�G
%=,*9?�8���/3�2014673.?24*%&'$2;n"D+L&!�E'��
��
/3�2012673#"&53�"GI:9JH$* :LL:,<�]h���/3015!<,�SS2�WL�/30175!2%�PPy�@
rr+222+201!5!����pR���hh^���&��-#@"r,,r+223333+201353.54>323!5>54.#"&�0E&2]|HI|\3&F0���%;*5L//K6+;%fQf:D|a88a|D:fQff
7JS+)O@&&@O)+SJ7
f=�,L!#@ 
r
rrr++2+2+2901332>73#"&/#".'=�,.2,�%-2A$&���<=* E��r$&3"����o
@rr
r++233+201##5!#3267#"&5�K7`G=E��j�tt� f
C>��J7����J7�&�la�
�/��01����#!@rr	r+2++239/301"&'732654.#"##5!!>32�9"!5F%>'(V'��)��*`3In<�		k	9@+9��Quu�:iHpw��L�&�����/�01����'@
r	r+2+29/3901".54>32.#"!!32>7{O�\1.Z�Vd�$k:E!+E3��"7G)"F;qaw>i�DB~f<VEI(/0>$n(F40&A5J&����G�8��J��.����&�&.l���������/����&#@&		rr++29/3333015>?!32#!#%32>54.+%5#�~Lk75gJ���+AV*t&//(sw$V�z���7cDAd9M~s�i<u21L��'@rr++9/3333320133!332#!!%32>54.+L�%�~r|6fJ����s&00(r����ub@c84��p0.��@

rr+2+239/3013#5!!>32#54&#"����$U0r|�=E(LQuu�v�ϿCC����L��&�����
/�01��O��&�����
/�01��������&�|��/�01J�x}�@
rr/++223015#3!3#+� �݈���M�:�����&L��
@rr+2+29/3013!!32#'32>54.+L���wx4fNȵ(00-��w�p^?`7w-+��J��'L��rr++2013!!L����y���x��@

r+2/�23330132>?!3#5!!#&(�^y�R$��*\�i�������dh�^��J7�*�)@rr+22+229/3339901333333####���<�<Ϡ���>�?�pV��������+��+��'��7�-@' r	r+2+29/3901"&'732654.+532>54.#"'>320W�(gP6@?6)UV -1&6Nc(}]Jj;/3<AEvF?@&-8.-i((+#F;H-V=1U\=B[.O��	@	rr+2+29901333#O�X�������:����O��&���
/�01L��@r	r+2+29/39013333	##L�FӚ����D������+������@
	rr+2+2/301!##52>?!�$DgH%6%�Mx��i+w T�z�:��J�2��J��-������4L��@	rr++23013!#!L?����:M����JY�5������(��]�9������@	rr+2+299015326?33#�8
�昿����B7r#��|��5*�#-@-$?�223?�22301!5.54>753'>54.'\@rX35Zq=�=rY43Yr>2T13B�1T23B%@.RqDHqQ,66-QqGFpR-@��2W?/I31W>/H4������=J�y��@	rr/++233015!3!33[���^����M���<Z�@	rr++9/3201!#"&=332673�*@+||�AO#F�ny��?;;�:J��@
rr++332201333333J�يي��M��M�:J�y��@
	rr/++23333015!333333�ˊيي]����M��M�����@
rr++29/33013#5!32#'32>54.+��0�Om:8jL��)33+Tr�8eEDh:p 5!4!JN�@
rr++9/3323013332#'32>54.+3J��Om:8jL��)33+���8eEDh:p 5!4!���;L\�@
rr++9/33013332#'32>54.+L��Om97jL��(43+��8eEDh:p 5!4!$����)@% r		r+2+29/3901".'732>5!5!.#"'>32IDpTr6E'0N78��D66L1&D4m+�jS�Z/1]�)J2A!1%AU/&f%*N<#0#KDW<f�EH�e:J����&!@
rrr	r+2+++29/301".'##33>32'2>54.#"�X�Vl��mY�Uc�SV�_=U,.V;<T,-UJ�]����^�G[�lt�Sz=lEJi:<kFIk:7Z�@

rr+2+29/39013.54>3!##*#35#"7�BK<jG�H
��|z54mK?c9�:����-""/����F0��R�'@ 
	rr+2+29/301"&54>?>32'2654&#"B��"BeB��0H+hJFj;?yX>IH?'=$ =
��`�V69m:1M:19<jFKuBrK><L =+(>#=%@	%r
r+2+29/39013!2#'32>54.+532>54&+=$6C ').:.V;����!�$:!,B
?31?[T#=��r
r++2013!#=[�u�i��^@

r+2/�233301532>?!3#5!73##�Iu��AƎ
�5^I��i��&AB[9����BJD)@r
r+22+229/33399013'3353373#'##5#����)�,������,�*���������������+@%rr+2+29/3901"&'732654&+532>54&#"'>32�Tp l7)/3*)67'*#-eiF7W2!%018`<51%"S 618"@0"@D.2E#=(	@	
rr+2+29901333#=��z����Y��P����=(�&�f�
/�01=$@r	
r+2+29/390133373#'#=�-����+��������@
r


r+22/+2015>?!##&��� 9Tw5`K����=g�O"=�@
r
r+2+2901333##'=�����T���/��S����=@

r
r+2+29/30133353#5#=�Ԇ�����������AT=�r
r+2+2013!##=ֆ�����i��=�+\U����H�@	
rr+23+013#5!#��ӧ�uu�i�@rr+2+29901"&'7326?33�+'ԋ�|��8H�

j$%+	�}���0C$�+��$/%@r/
r%
rr++223+223+015#".54>;5332+3#";2>54.+1Su>?uR�Rv>>uS�&;"":�';!":'��IwEGwH��HwGEwI�@5(F--F''F--F(��]=��K@r	
r/+23+2015!3333�h���J�i��i�.�@

rr+2+9/301!5#"&=3326753a='S^�)+0��
YV��/,
	��=@
r
r+23+2201333333=������i��i���=��g@
r
	
r/+233+22015!333333�K�����J�i��i��i�S
@r
r+2+29/3013#5!32#'32>54.+��x^c*R=�k##j�l�`O5T/f$#=�@
r
r+22+29/3013332#'32>54.+3=�\_d+R=eP"#Oq��`O5T/f$#����=�@r
r+2+9/3013332#'32>54.+=�w^d*R=�k##j�`O5T/f$##��$#@

rr+2+29/3901".'732>7#53.#"'>325]Gk@(%<)��&;''>evQCfF$$Gf	;(2$%!8#W 6  $58B,Ma45aM-=��&!@
rr
rr+2+++29/301".'##33>32'2>54.#"GjCR��RClEUv?@vT&: !:%$9  9
7a=��>a6J{KK{Ir(F/1G&'G00G&!�@


r
r+2+29/330137.54>;#5#35#"!�/70T7��GsWc^$*%�
L>4L+���(  *����B�&JE��)	/�01����B�&JlJ
�*&	/��01���3F�-#@!%%r
r	/2++9/3�22301".'732>54.#"##53533#>32Z$6&\)
5-,:�NN���Q4E^09Z�C9V=FU'1*�P{{P�(,=�mH_6��=��&����/�01��"@
rr+2+29/3901".54>32.#"3#3267/AfG%$FhBQve>(';&��(=%(?k 	-Ma54aM,B85$  6 W#8!%$2=D�����X��=��N�����&�l������<��O��0$@$		r
r+223+29/3015>?!32+#%32>54.+&b^d*S<� 9T�U"#Uw5`K��]L4Q-�=g�O"l"!=>#@r
r+23+29/333013335332+5#%32>54.+=�Єe^d*R=��TX#"W�ı]L4Q-��f"!��)�'@
r
r+2+9/993�223013#53533#>32#54&#"AMM���V9bS�/1.>#PggP�(-e_���880+����=$�&����
/�01��=(�&����
/�01����&�E�/�01=��@
r

r/+22+2015#333#ﲆɆ��i���
��@
r+2/9/3�2015!332#'32>54.+
��Њ�Om:8jL��)33+�)UU����8eEDh:p 5!4!���'@

r
r+2+99//3333013#53533#32#'32>54.+Xqq���w^d*R=�k##j�S��S�`O5T/f$#�
!@r
/22+29/3399013!####!7!����?�?�����i]����$��$����]
!@r
/22+29/3399013'!#'##5#37!̸ �͡�$�#���f�w��������8�������|����A}��@
rr++93301!3>;#"���IF<(!����B=r��	H@
r
r++9330133>;#"���cF@9$
��h#=8g����W�v�&� /@	V
/�01+4��E�v��&���V+4��@
rr+2+9/3�2015!332#'32>54.+{�抑Om:8jL��)34+�'PP����6dDBf9p 5!4!6�@�
r+2/9/3�2013332#'32>54.+'5!v�{^d+R=�n"#m����^M5T/d%#�YYSj�
'@rr++29/33333013!2+32>54.+7S-3U@"9gE��0!2�~8�8�&BU/@l@�^6%&6�,�,C�+\(,'@rrr,++*))r+23323+++201"&'#3>32'2>54.#"?}=]�u\;6W?#"=QW3$'5(%*7&1�2
7/���Z.5*Ka89cK*i-;"$;*
 {4T-�,L�b�rr++�3013!53!L;x��Ɯ��=���r
r++�3013353#=�w��i�	@rr++29/3015!!!������YY���y���	@r
r++29/30175!!#^��\��LL�u�iJ�x��@
rr/2++29/301"'732654&#"5>32%!!�96""2DBK+I)(\0{���G��ֈpEMGPx�{���y��=�="@
!r
r/2++29/301"&'732654.#"5>32%!#A">,7-0!3&G&9[61_��[��VM>2=\5eKLu@�u�i�y!�3@

rr/+2323+229/33399015#53%33333####�9������<�<Ϡ���>�?⇇y��pV��������+��+����Z3@



r
r/+23+229/33399??015#53%'3353373#'##5#�;�������)�,������,�*�l������������'�w7�1'@+$r	r/+233+29/390157'"&'732654.+532>54.#"'>32�r;W�(gP6@?6)UV -1&6Nc(}]Jj;/3<AEv���F?@&-8.-i((+#F;H-V=1U\=B[.���7�&�|SL�y��'@
		rr/+223+2/9/39015#53%333	##36����FӚ����D��y��������+��=��0%@
		r
r/+233+29/39015#53%3373#'#�3��
�-���Ι�+l�������J��-@r	r+2+2/9/3/33/9013333##7#3J�����֖���::��%����2�νP=\!@r	
r+2+29/��390133373#'#7#3=��w������h66������z!��'@
r
r+2+299//393015!333	##&݅_ӗ����\'PP��������+��*�)@r
r	
r+2+99//339+0133373#'#5!C�-����+�J�l�����5PP��!@
r
r+222+29/390153333	##��FӚ����CTrr��������+��u!@

r
r+222+29/3901533373#'#��-����+�mm�a�������J�y �&�">�V+4��=��n&�!��V+4J��@

r
r+2+2239/301'!%#!#3!����׉����BMyyy�:/����=�@
r
r+2+2239/301'!3353#5#�[�K�Ԇ���uu�i�����J�x+�!@rr+2/+2/39/3013!#!"'732654&#"5>32J0���f96!;BNE&L'(\0Sp:��:M���jOPRTlCyQ��=�=p$@r
r
/2?++29/301"&'732654.#"###!>32�!?,7-0!7�ʆ�&K"9\51^�VXG8B���i�5gLU�I)��B�6F+@C'rr0;;		r3	r+2+23333+2+201%#"&'#".54>&3267.54>323267>76.'&B1zH;p-0f@O�g:1Y{K1N,>oI%&8P�^HuR,/_H
?\%�$!!'N>+ &G9Q+,3a�XH�e6w<jDPw@Re9^�T2XrA?sY* (PH
(#:V=/0��U2B-@3%rr,;;	r/r+2+23333+2+201%#"&'#".54>3267.54>3223267">54.U ]1+P&W0Z�M)Jd<#5*Q8	
-1BtLLq?LM+E��)>"3#.E'$;&ES6cK(c-G*1V5"d<Fm>;fBGv#."?+#C51F+/=�w��'5.54>32.#"32>7BAkL+/Z�Sb�#j:B 4M47M.!D:qG]1��Dew>A}g=VEI(/*DT*/WC'0&A,A*���"@	r!�r+�33+2015.54>32.#"32>7�Ca4C|UUz�8"&?$%>&+"�5I,{
Np?J{JJ<('G/.G)(!7$z���y]�&�"�
V+4�����&�!��
V+4����>	�+@rr++2901533�Nj��~����a��������#@
rr++29/93330135#535333#�������������W��V�2W��+##@
rr++29/3333015#535333#�zzdž����vvՙ<�V���<��y��"@

	rr/+223+29015#533#'#76�����������y�M��������^h��$"@r


r+2�33+29015#53?3#/#�(��tm		n����p	q���l�����������yk�!@
		r+23233/�3301+5!5!3!33%�������^My�����M������"@

	

r+23333?�3301#5!#5!3333���u�r���J�uu���i��i���<�y��&�"��V+4��.��'&�!P�V+4��<Z�&�#�Q.�#@


rr+2+9/3/33/01!5#"&=3326753'#3s='[h�.80��66�
YV��/,
	��R!Jg�@r
r+2+9/301>32#54&#"#�*@+}z�@P#F���ny��?;�����=$�M��\�09%@,55'	r1r+2+29/33/3901467;#"&2!32>7#".54>"!.L&'�xen�M~Z1��"6B$'F4
�]xCL|Y/0Y}M4S2�5V�9)cLJ;d}A
+G22 /7S/<f�GE�e;w0U76V0���-6!@..""3r&r+2+29/333301467;#"&".54>32!3267!.#"7'�vO[�9^E%%D_:Sv?�u*?!(E
nF^�&;%$>(W1
QE��+Ka68cL+K{G(<'  (>#6)=""=$�yg�4='@9+�"+	r5r+2+22/�9/3�20157467;#"&2!32>7#".54>"!.�w��M'&�xen�N~Z0��#5B%'F3
�]xBM{Y00Z|M4R3�5V��X�K9)cLJ;d}A
+G22 /7S/<f�GE�e;w0U76V0���1:'@22&&7r*�r+�33+29/33330157467;#"&".54>32!3267!.#"Rx�G7'�vO[�9^E%%D_:Sv?�u*?!(E
nF^�&;%$>()��1
QE��+Ka68cL+K{G(<'  (>#6)=""=��J��.���&�J��/�01��D�&���/�01S�'��$!@rr/2++29/33301"&'732>54.+#33:33�6 ,%@Q+>��.Ӛ�Ch=7^�h"D32ZD'������e�MUy?=�,!@!r
r/3++29/3301#"&'732654.+#33:373g4K*.Q63&$(C(8��!��*QmBGi9
c
=5<W/������v��&� �V+4���vf&���V+4��J�$��&�V��=�+&����T�v �&�
 H�V+4��E�vv&���V+4<�yZ�@	r	r+2+23/9/301!#"&=332673#53#�+B,zz�AK$H��v�I'ny��?;)�:��^.���@
r+2?3�9/301535#".=3326753#
M:8S-*/-�^��
,S7��20
����T�vo�&�
 ��V+4��E�v�&�%�V+4��=������&����/�01�����&�R�9/�01����&��l�
�/��01�����&��;
�=9/��01���������������J7�&�x��/�01����B�&�a�&	/�01������C����;�������&l���
�.*/��01����;�&m�G
�*&/��01���&��3�
�/��01��D�&���
�/��01��'��7�&��O�
�2. /��01������&��
�0,/��01$��:� !@ 	r		r+2+239/33012#"&'732>54&+517!5!-Nh<DuMZ�(hT8*9CIP������&>K&Hi9F?@&-6$4A`�yh���#�@rr+2+239/3301"&'732>54&+57!5!3�O�&RO3-A"XNB�����	jq*I]�@=F)/:(>B\�o^�tY:Y<��O��&�s���
/�01��=(�&�sc�
/�01��O��&����
�
/��01��=(�&��O
�
/��01������&����
�,(
/��01����A�&��J
�($
/��01����+#@		"'r	r+2+29/333015!".54>3232>54.#"t��N[25]LMZ24]��5M12N45M12M4@QQ��<g�DG�e;>h�DF�e:h.VC')EU,.TC')DT��A'@$rr+2+29/30175!".54>3232>54.#"q��@fG&&Gf@@eH%%Gf�$>'&>%%>&'>$�99�+Lb67bL++Lb76bL+.G()G.-H()G������&|���
�0,/��01����A�&}�J
�,(/��01��$����&����
�.* /��01��#��$�&�;
�($/��01��������&�sy��/�01����&�sB�/�01��������&��e�
�/��01����&��.
�/��01��������&����
�/��01����&��q
�/��01��<Z�&��r�
�	/��01��.��&��*
�/��01��L�y�&�"r�V+4��=���&�!D�V+4��JN�&����
� /��01��=��&��
�/��01�$(�@r/2?33+29/301"&'73265#53'!!5!�;  //j�0Vg������X:;\\Eb5��y��YY�+�@r

/2?33+29/301"&'73265#53'!#'5!y7!,,R�0TS[��^�

X<5QQC_3�u�i�LL�$��@r/2+2901"&'732>54&/#33�= "���������/P�

h 2��^h�����+S$2O.�,
"@r
/2?+2901"&'732654&/#3?3k-Dp����n
m��[(*'F�
c$3^�����{7^2-F(�� @

		r+2/9/339015!3#'#�����������4PP���������^h	@
	r+2/39/9930175!?3#/#2���n		m����p		p����CC&��������)��:�-@  r'	r+2+29/3901".5467.54>32.#";#"32670KwEG@=9?kB\}.[M8&51!UU(7C>5Qh(�.[B=\T1>V-E?F%.+*`/-9-&@?F"���/@
"r)r+2+29/3301".5467.54>32.#";#"3267Bg;64-<d;2N;P
+.5%=;**-*5lq#E2.A
!,-@"."6#Q%  15<���$��&�I���+&��������6���+=V���<��F\��T�y��&�"
�
V+4��C��j&�!��
V+4��T�y��&N
"��V+4��F��}�&O	!��V+4�����$��&�
������+#&�����y��&�"�V+4����f&�!��
V+4���7��&('���$��9/�01���7�&H'�����5	/�01��J�9��&)�����İV+4���9]�&I���1��ذV+4��J�]��&)�������V+4���]]�&I�q�1����V+4��J7S&*'�u���y��/�/�01����B�&J&�^����-�&&	/�/�01��J7S&*'�u���y��/�/�01����B�&J&�^����*�&&	/�/�01��J�77�&*'������'/�01���7B�&J'�����A	/�01�� ����&,����'
/�01���!>�&L�h�7
/�01��J�9��&-���=�9$�&M�����ΰV+4��J�E��&-����=�E$�&M���!
��ذV+4����&X&.'�����6~��/��/�01�����&�&���'���/��/�01��J�9>�&1�����ΰV+4��<�9@�&Q�O���ӰV+4��J�]>�&1�~��(�]T�&Q�������V+4��J�9�&2�B��=�9k&R�c�&
��ΰV+4��J��&3���
/�01��=$�&S���/�01��J�9��&3����ΰV+4��=�9$&S�����ΰV+4��J�]��&3�����ΰV+4��=�]$&S�\�����V+4�����a&4'����#��D�((
/�/�01����A�&T&�T����@�$$
/�/�01�����[&4'�������HD�((
/�/��01����A�&T&�T�J��D@�$$
/�/��01�����S&4'�����y�/�((
/�/�01����A�&T&�^����+�$$
/�/�01�����S&4'����$y�,�((
/�/�01����A�&T&�^����(�$$
/�/�01��J�9��&7�����ΰV+4��=�9u&W�
���ΰV+4��J�]��&7�������V+4����]u&W�������V+4����G�&8����3./�01������&X���,/�01���9G�&8���4��ӰV+4���9�&X���-��ذV+4����Gh&8'�������7�33./�/�01������&X'������0�,,/�/�01����Gh&8'�������:�88./�/�01������&X&�F����3�11/�/�01���9G�&8'������4��ӲV7./�01+4���9��&X'�����0-��ذV+4/�01���9]�&9���	��ΰV+4���9w�&Y�s���ӰV+4���]]�&9�e�	����V+4���]x�&Y������V+4��@���a&:'������6�/�/�01��8��B�&Z&�Q����:�/�/�01��@���M&:'�����z�"�/�/��01��8��B�&Z&�\�I��&"�/�/��01���&<�b��/�01��F�&\���/�01���&<����/�01��F�&\�K�/�01���&<�)�
�/��01��F�&\��
�/��01����&>����	/�01����&^���/�01���9Q�&?���	��ΰV+4���9�&_���	��ΰV+4����w�&Y����
�
/��01=����<!@
:2-(r"r	r+2++2901"&'732654.'.54>7.#"#4>32�Bz+/-V)&/-!;N&)Ia8!'9$6D +Me9GoH
/UC'+=S)l
,+W&$
%7,0B*5&/*H/�D�<\> /YB&	"50PX���9��&&�����9&F���:$��ɰV+4����&&���/�01����&F���C/�01����&&(v��@/�/�01����$;&F(6�@@??/�/�01����&&)5��@/�/�01������4&F)��C@??/�/�01����&&*���@/�/�01����B&F*M�J@??/�/�01���$&&+����/�/�01����k&F+C�@@??/�/�01���9��&&'������/�01���9�&F'���X�:$��ɲVC/�01+4���&&$����/�/�01����f&F$h�G�@@/�/�01���%&&%����/�/�01����l&F%e�J�@@/�/�01���/&&&���#�/�/�01����v&F&m�Q�@@/�/�01���)&&'����/�/�01����p&F'Y�G�@@/�/�01���9��&&'������/�01���9�&F'���l�:$��زVD/�01+4��J�97�&*���
��ΰV+4���9B&J���'��ɰV+4��J7�&*���/�01����B&J���0	/�01��J7�&*�k��/�01����B�&J�T�/	/�01��JY�&*(k��@/�/�01����B;&J(T�-@,,	/�/�01��*7�&*)*��@/�/�01����B4&J)�0@,,	/�/�01��J7�&**���@/�/�01����BB&J*k�7@,,	/�/�01��J7$&*+y���/�/�01����Bk&J+b�-�,,	/�/�01��J�97�&*'������
��IJV/�01+4���9B�&J'���v�'��IJV0	/�01+4��3��&.��\��/�01����&���1���/�01��J�9��&.� ���İV+4��=�9��&N��	��ΰV+4���9��&4�
�)��ΰV+4���9A&T���%��ذV+4������&4�I��2
/�01����A&T���.
/�01������&4(���/@..
/�/�01����B;&T(T�+@**
/�/�01������&4)`��2@..
/�/�01����A4&T)�.@**
/�/�01������&4*���9@..
/�/�01����AB&T*k�5@**
/�/�01�����$&4+���7�..
/�/�01����Ak&T+b�+�**
/�/�01���9��&4'�
����)��βV2
/�01+4���9A�&T'���v�%��IJV.
/�01+4������&E�#��8
/�01����A�&F���4
/�01������&E����;
/�01����A�&F���7
/�01������&E�I��B
/�01����A&F���>
/�01������&E����8
/�01����A�&F�T�=
/�01���9�&E�
�9��ΰV+4���9Ad&F���5��ɰV+4��@�9��&:�	���ӰV+4��8�=B&Z�����ɰV+4��@����&:�D��$/�01��8��B&Z���(/�01��@��$�&G���*/�01��8����&H���./�01��@��$�&G����-/�01��8����&H���1/�01��@��$�&G�D��4/�01��8���&H���8/�01��@��$�&G����3/�01��8����&H�Q�./�01��@�9$&G�	�+��ӰV+4��8�=�d&H���/��ɰV+4����&>����/�01����&^�s�/�01���9��&>���
��ΰV+4���&^�E����&>���/�01���&^���/�01����&>�n��/�01����&^�D�/�01��:�iO:��O�/20175!:��yy:�"O�/20175!:��yy:�fO�/20175!:,�yy��:�fOR8�����/�99013#57�(�$�z��x6�����/�99017#53G(�#�z��x:�}����/�99017#53K(�#�������8�{�&TT�5�w�
@	
/3�29017#5337#53F(�#j(�#�{��x{��x:�}w�
@
�
/3�29017#5337#53K(�#e(�$���������#�~��
//9/33301#5333#������Ux��Dx��*�~�@
	//9/333�223015#535#5333#3#�����������xpy@��ypx�M���/301#".54>320//0^00//: �@
	
?2332301353353353:nNnNn������(��q�/?O_e5@`eeP@@XHH8((0 	rcbbr+22/32/3+22/333232/301".54>32'2>54.#"".54>32'2>54.#"".54>32'2>54.#"		�.K,,K..K++K.!   �.K,,K..K,,K.!  !�-K--K-.K,,K. !! ��=����)E**E((E**E)C&&&'�(E*+D))D**E)C&&'&C(E*+D))D**E)C&&'&
IV6����=���
��/�0153=r#�����=���&__�#.+�@	/3/3901%%#���� �mmgn�:.B�@	/3/3901%57'5B����߱ngmm��6�����rr+2+201'		�=���/IV6������/%�!
BD?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!�'@K#&L>&)@K#&K>%� >*)/ >*)/�~/

@
		
BD?�29/3333015#5733#'35��;88��`I��E`���o/&@	# BD?3�29/3012#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�.�"=)*@$&!2'"!3560I_	
"��/*@#
BD?3�29/93014.#">327.#"32>".54>32�*L3%>=3>*O.XgbS5Q.�/1./(=#=A3"zq]g'B%""!#��/�BD?�201#5!#�l�Z�J�[ ��/+:@ 008B(D?3�29/33301#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1J'&K1(%1Q.,--�&&&!1%; #;$'/'#33#*2���/*@	

#BD?2�29/301"&'73267#".54>32'2>54.#"�.O+>4<>&1L+.Q4TbgS/.0-�"2A=$='(B(h]qy�"#$!���Q%�!
BA?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!Z(?K#'K?%)@J#&L>%� ?*)0!>*)/ ��:U@	

BA?33�22301!53#52>53:��a'/'!PNN	P�����V"@B A?2�29014>7>54&#"'>32391>*/(/#33K/RT). )�U5G3
"!: G;"/
N��uV,@
&BA?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42QZ)&6
F=4!#.=))4��~Q

@	
BA?�29/3333015#5733#'35��;88�TaI��Da����oQ&@
$$# BA?3�29/3330172#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�.�"=+)@$' 2'# 3651H`	"���T*@	#
BA?3�29/301%4.#">327.#"32>".54>32�+L2%><4>*O.XhcS5Q.�00-.7'=$>@3!yq]g'B%#"!#���Q�BA?�201#5!#�l�ZJ�[ ���Q+:@0  8B(A?3�29/33301%#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1K&&K1(%1Q.,--�&&%!1'&:!#<$'/'#33")2����T*@	

#BA?2�29/301"&'73267#".54>32'2>54.#"�-P*=4=>&2L*.Q4ScgS0//-Z! 3@=#>'(B'g]qy�""#  ��"� $(,0)@*/+--r#%"''r+233�2+233�2014>32.#"32>7#".#53#3##53#3# B|VUy�9"&>%%>'+"�D^:@eI&j>>�>>�>>�>>J{JJ<('G/.G)('>#+Mb	������ M�	
@
r?+29/3�2013!!!!'5!p�����I�y�p��h[[,���6:>@7:>;;
6(/	r
r+2+229/3�2017>54.54>32.#">323267#".#"!!!!8#/ 7^9=n%GN$& &$-,"!>==!E )m��m��W=@%A?@#2Q/81R",&59D(89 	d
	�S-S&7�"@

r
?3+29/993�201%!5!5!5!#33#7�����Ήno�s�SmR�8�,�;J��1�
2^=@ /r#++$(PI(II(:3r''r+/33/+29///33333+201332+32>54.+#".5#53533#3267"&'732654.'.54>32.#"J�2R=!7cBWN(,I�/7%?$EE�nn(=n'+*R'#),5F#/V:3Z&2$@""&9O(g�(DT,<lD�g5"%4��9.-g��g��,+W&$
$7+4K*#'U
	%80NX(V�!=@  !r?3+9/93�2233333301%!5!3!!'!5!3!!3733##37�!�p�!p�!�p�!��QR�zZɕ��w|}w���Y�SS�RRD���'�:*�����%n�,04/@
		2233 (--0/33|/33/33|/33/3/3014>3253#"&/#".%5.#"32>!!!!55a>6_�#$.c7Ae:�
,5"5 7"'#�tI��.��[Aj?1&�3n%!14@kD(#9"#5
!�E�E!����,!@
(	r
r+2+29/993�201?!7!74>32.#"32>7#".!�>�?(/Z�Sb�#j:B 4M47M.!D:q_v:L~[3�JJ�JJQA}g=VEI(/*DT*/WC'0&A5J&?i� �� @

	rr+2+29/930175!33	# X�Ҋ*���!��ZuIIu��R��u2^�]�@		

rr++230175%5%###5!C��8��O�A�A��A�A-��My
Y�!&@!	r?+299}//33�201!!!!!2+32>54.+
R��R��=$5U?" <U5��!4"7�+E3E���+GY/0XG*�>"@-/?  ���/(.0@.*++r#	r+2/223+2/2239/3?01%3#3".54>32.#"3267#5!#VCCCCE{]44^~Jd�$ga9-J69L.6c+YO�r@���
�{8c�MI�b8UFL58&BV03V@%86�`
e��	����'+/'@-,(
))
r!	r+2+29/99993�201"&54>54&#"'>3232677!%7!
pi)CJB*.5"F8)_Fmf*BJC)08&G:'d����N�ZO1L=527!&&VVK1K:329%')Y%11c11���/,'@(	r
r+2/233+2/22301%3#34>32.#"32>7#".VCCCC��/Z�Sb�#j:B 4M47M.!D:q_v:L~[3@���
��A}g=VEI(/*DT*/WC'0&A5J&?i�]�@
	r?+23}/3013#5!#5!��O�O�kk�R[kk)��@�
r?+99�2330132#32>54.+!5!5!5!)�2R=!!>*���o)+{�7�7��(DT,-S>��^!8#$8 yRDS$3�@r?2+9013332>53#%5%5%S�f%-�2aO��r��r��
5(:_D%�U�UU�U@����@


	?3/3933/3012#4.#"#4>?wRvK#�'C21B(�"Iw1CCN4]{E��(M=%$=M)��By_7���/�  @ 	r?+29/3�23301=!5!!2+32>54.+!��W��4S; 5bE�w(+q�yy�BBn�(DT,<lD�g5"%4:��Q�&@	&	/3?39/3017>54&#"3267'#"&54632�%F9!K<)A&?8<%-� drn+:H";%�4:	Y!�"# LPFSw�	)!@	

&r?+22/33/3?9901#33#".54>32'32>54.#"܉kr�os;S--T::S-,T�'''(�9�.�;S4V12U44U21V4�//-/+���23@'*-0

$00?33/3�292/3/90173#5#'#3.#"#"&'732654&'.54632;�WAFAW�� .%<9F8&M#8'94G5 =)��ջ���+@

)*-.@
	'&,4>���)@
r+�923333301##5#5!3#5#'#3S_W_"�W@G@W�:q��W�ջ���+�&��-!@+-r!
r+2+2233330173.54>323!5>54.#"!&�0E&2]|HI|\3&F0���%;*5L//K6+;%��fQf:D|a88a|D:fQff6JS+)O@&&@O)+SJ6f#��I @	r	r+2+29/301%"&'5!4.#"3267'2!5>6,N�E|RR|EE{SNo%`F,O��N$&�P�MK|JH{K0##+�'%tu$'�� ��h�&'c*�����"(U;@O:77)@HH)#((1)&%% /33/293/3?33/33/39/33014>7>54&#"'>323		%"&'732654&+532654&#"'>3270>)-(.#1
2J/OS(-(צ=���=[*!1 (8AB:;5'916B 2J+.(,42Q15F2
#"9!G;!/
N��IV6����('5
G<4""/=()5�� ��w�&'c*
�������&'c�
_������&'c�
R������&'cO
���!2@+		r"r+2+29/301".54>326<'.#"'>32'2>54.#"�Ch<*H\2.E5%BJ&i:rzE~N.%3#;%2
7`;1VB%$	=H"N$&���^h%11#:$4��A.#'@
&% 
$'?2�2?3�201".54>3232>54.#"/@fG&&Gf@@eH%%Gf�$>'&>%%>&'>$q�2�?
+Lb67bL++Lb76bL+.G()G.-H()G��;��n�@rr+233+201%!53n���pr��hhh^����L ����@		r/3+23301###5!##��P�P�R�T�tt�T �
!@	
/333/9933301!!5!57'5!� ���Ŷ?�W����[t��>�}�/2015!>�kk��y��rr+2+201'<L��8�@�k:����/201753:n��
@


r+2/9/33013333#�m{Cpx�����{�����{^(��/? @0<$ 8(/223�2923012>32#".'#".54>2>7.#"!2>54.#"�(7'%8(4J*,M0&7&'9)*N1-L9##$$*""#$((2S32T1$$2T23S1��%&#%%#'#�Y^4�
/3/301&632.#"#"&'7326'^B?H
&B?G�;F` �Q>C`!5���-@�@%�)/3�/2�2�201#".#">3232>7#".#">3232>7P%('1
=$+(	<%('1
=$+(	�	),
 s
),	K�@
/�23/333/3017'!!!!V�3�=9��9��4��$�WW2�Y
@
	/3�22/390175!%%2a��^���ll���PJ��C�Y
@
		/3�22/390175!57'5Cb����^ll<��JP���	@	?3?3901#d�����֍������nl������=�+���
��/�01#7#53�='q�H^^��31@		+$r2/3
r+2?3333333+29|/3013#5354>32.#"3#3#5354>32.#"3#]EE,Q8%D$,	���EE+O5 A ("$���f
7X4ff�v�f A_4e0.%f�v��@
r	r+2?333+201#5354>32.#"!###]EE7O2&C=5F$(����f ,L;!d*%���v����) @r"
r
r+?333+2+201"&54.#"3###5354>323267=G$" 'WW�EE5bDrl&*4B3�23!f�v�f,AY.lX�� l
�86@		,$r61488
?23?3333333+29|/3013#5354>32.#"3##5354>32.#"!###]EE,Q8%D$,	���DD7P2&C=6F$'����f
7X4ff�v�f ,L;!d*%���v����D@@ 
		#6r=r(11+..-
?2?3333333+2+29|/333013#5354>32.#"3#"&54.#"3###5354>323267]EE,Q8%D$,	��9>G
%" 'XX�DD5bDrl'*3�f
7X4ff�vB3�23!f�v�f,AY.lX�� l
��X�b>@#TTJMM<+A&F!0Jr80r\

Y
r`r+2+223+2+293333/301%#".5#534.#".#"#".'732>54.'.54>32.54>323#326>06&>%DD!!1.
5*I ')0J3!9K,*ZO30^+(!+-F/9[1J%RB>H#
nn(�j9.-g:C3%% T	"1$*?*[!

0"9M(
*(A'7O4g�
?�@
r+22/3901##33?܍���ܗ������:����� ����-@$##
r	r+2+29/301".54>32.#"32>7#'!uNY/0[OZ�)m*9#/J31L1#>0 �01Vu<g�EF�e;OFV&$)DU,*UF*)3t	?qW2��=��&���/�01��� 3@ 
r'

r0r+2+29/3+01!5#".54>3254&#"'>32'6=.#"32>}\72R/$>Q,*B;:)Q*)1l=Mj7�8*")*%I*)+L/(@+	39U #3aD�Ä<


$
��?&"@
rr&

r"r+2+29++01".54>3253#5.#"32>76[C$$?V2;]��Rk*53%%A)1&
*Jc99bK)8.V��U,3F/.9+F*(��>�'"@r'
r"r
r++2+29+01!5#".54>323.#"32>7�S66[C%<jC;\��
-52%(5(#R,0*Jc9L{H9,*�&=.-9  9*
!=�+���r+�2?013#3#=�����&��?���
rr++0130*#?�+-�&�,a/$@rr!"
'
rr+2+29++201".54>3253#"&='2>75.#"2T>!%BZ4<\u'':<F/'%*3&$@
+Jd89bJ)7-[��r3(�fr'|&-9 +F*k�@
r
r++2/223013#53533#hNN�yy�y��y�m8��"@rr
r++2+29901!5#".5332>73�;H&/C)�(#2*�Z!-6M.H��#7+E��
Y@
	r
r+2+93301!#333ff���yj{iz��A����o��o���+@
rr+2+9901#73��Tϊ�~���u�����R7@CC=:r,++'0rK		HrOr+2+223+22/3+22/392/301%#".5#534.#".#"32>7#".54>32.546323#3267�07$>%EE#/(�9"2$&2+$�G^8@fH&%FhC0B
]YDK nn(9.-g$9(7'54+
(+9!"9+()="-M`65aM,1EO$=M(g�M/
?@#
		

		>/2?9/93339<<<<0133#'#3�c�8�8�R�/��D2/&@>/3?39/3901%#!!24.+32>32>54.#26Z6��I+>"-*4=z��"�� �/@ /*B$'HI �2} ��<2#�??3?3014>32.#"32>7#". (LnGSz]S'+@+-@'90
dQc1@lN*3cP0D6A-"2>#@2$;*:1SgDX/

�>/2?301332#4.+32>D�e�EL�]�+Q;ii<Q*/K~MU~F4M,��-PD�/@	

>/3?39/301%!!!!!�Q�����jj/jwc�D�/	�>/?39/3013!!3#D����/j�c� ��A3!'@
$##
?''/22/?39/301".54>32.#"32677#53#;;gM,,Oj>Tx\P.%=+.?%+Q$&Sp|�d/Pg9:eM,C7D(*0@$%@0*'w$"�X��DN/�	>?2/39/301#5!#3!5Ny��yy/����/��D�/	�>/?0133Dy/����y/�>??301732>53#"'':&1.y.\MP7|%O<��@iJ(!DU/@

	>/2?3901333#'Dy��Q/������G�D�/�>/2?0133!Dy/�;jD�/@
	>/2?3901!##33>�B�y����]���/��.��D]/	�>	/3?39901#33#�y^BybO��/��X�� ��m2'�#
??2?301".54>3232>54.#"FBlN*,Pl@BlM*,Ok�,A()@+,@()@,/Qf68eO.1Qf57eP-"?23? ">12?D/�
>/?39/3013!2+32>54.+D9Z31V:��$%�/8U/0V6�!%$ ��y3'+@
?((**?2/23/?301".54>32'2>54.#"73#FBlN*,Pl@BlM*,Ok@)@+,@()@,,At�r/Qf68eP.1Rf57eO.l3? ">22? "?1o�D?/@

>/2?39/39013!2#'#32>54.+D:Y21#���v�$&�/8V.#?2ѷ�!&$���3.@	'+??3?39901.#"#"&'732654.'.54>32�
2B#//=,;W/$?Q,D�46;S.-/'D/9K%;e<@l'�	&>4/A(&!i
';+:N(%/�>/?3301###5!�y��;�j<��R/�
>?3?301%2>53#".53F*9!yAeFIe@y"7g0= ��9eL+-Nd6��!=0O/
�>?2/9013#����f�/�{���/�/@
	>?333/39013733#'#37pEGpjI���fkkf���F-����������/�b�=/@

	>?2/390173#'#�����փ�����/���쾾>/�>?2/9013#5�����x�/������m!
/	@		>?33/33017!5!!!!V���M�[jj[��j�x��@

r+2?3/333301333#5!!I�~�Jr�(R3��M�������
���r/2+90133#
}����:(����#-!@-r$	r+�333+�333015.54>753'>54.'\@rY35Zq>�>rY43Ys>7]8":I�4Z7 7G'FA6^�NS�\4AA5]�RO�^5A��=lN:Z?"<lL:[?$��J'�+��'�w7�,���w��>��'�77�&������7���B��%� +@
!(rr+2+29/3301"&54>32'2654&+32654&#";y�1gOA[0,*=I>iI69:7p99b)//)/3syFf7(L72H_OHa/n@::>�58K1++2236���+@"r%r+2+2901".54>7>54.#"'>323267O_*'UD%)!.;XoM@T)$I:?6303ET$r
%@),9+//6!?-*:)'  ;,3���!>LD�0@


r+2/2/?3/3/9/33333013'333373#'##5#����)�,������,�*�������������-�+@
%rr+2+29/3301"&'732>54.+532654&#"'>32�Kzc=,)8!<*<33>5-";VlI]i7.@KAl�F=,$$ :&'7`4/+0 (38B`P9O_MIb2��8��BZ��8��B�&Z_�/�01��8��B����=2�P
�r+/3901##\���������o��=$S��=kR8��p@	
r	r
/?3+2+299015'./#"&5332>73;�#nBQT�,+3+�*#"57ieH��<=* E���8��g$'@rr
r		r+23++2+290133267332673#5#"&'#".58�+''F�*''F�yeAAI
c?0>"
��?:=02��?:<12��a46@.59#;I&7���.'@'&#	-
?�3?3?3?933015'./#"&'#".533267332673;;hEAI
c?1="
�+''G�*''F�)!$39@.59#;I&H��?:=02��?:<12���8��@rr+2+9/301"&5332'2654&+&p~�h1U?$$?U32442f5hl>�,J65J,n-()-L-2��m@rr+2+29/301"&=#5!32'2654&+�q~�
i1T@$$@T41551f5hl�m�,J65J,n-()-L-2=�	@	r/+29/30175!!#l��[��SS�u�i����?���7�-���7�%��H�.@
'rr+2+29/3301".54>7.5463!!"2'2>54.#"6O|F:+-0eU��('9=U}DG|O'=$#>''=$$=
>nF+OB>&HPr#<mGFn>r8')<!!<)'8*����'�#
r	r+2+201.54>3232>54.#"^KtN'*QrGMsN'*Qr�)@*-@)+?+,@)
Bl}<@�i?Dl~:Ah?g*SF+.HR&*SF+.HR+��@
r?33+22/301%!53#52>73�n�%/180�yyy�|$��)-�(�r&/2+20134>7>54.#"'>32!)#8)#KA)/!&A3T1EX5Nj72>!4@%b=]I8&*6'+'X(&7_>-E4)*$#y!���2@
+#r		r+2+29/3301".'732>54.+532654.#"'>329]EH
,B*)<!)P:!#HW22MWL_3Gn>!<),C%Gy7&[*+!.d2.)/%a -1T6(B,
3M-?X0#�

@	
r?+29/333301!5!533#35E��U\XX�ֳ�x��Ty��$���"@r	r+2+29/33301"&'732>54.#"#!#>32
M{!MS-$84! :uR^�."Cj=Eu
C9P'.6#"5�z�
;fCGm=.��7�.@
'	rr+2+29/9301%4.#">327.#"32>".54>327ApG!:,$B-,LM'qCT|C@uPJuE��"<$#<$$;$$<�Ck?#@[0+%T6:[��f�NBpA%=$$;##;$$=%"8�
�r+2?01!5!#d�����Lz�:,��0�!3C@8''@r0	r+2+2933301%#".54>7.54>324.#"32>32>54.#"0GvFGuE"3)*FS)(TF+)4 �$, 7"#+ 8"�/--.�Bb7:eA(A/
(4/J32I05)0B!'0 '0A&%$%(��1�.@
'r	r+2+29/330132>7#"&'32>54.#"%2#".54>(AqF"9,%B-,LM'rBT|C@uPIvE$;%$;$$<#$;�Bk?$@[0+%T6;\��g�MApA&<%#;##;$$=%�����Qk�� ��:Ul�����Vm����uVn����~Qo����oQp��"���Tq�����Qr�� ���Qs�����Tt����%�!
B?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!'@J$&L>%(@K#&L=%� >*)/ >*)/ :�@		

B/33�22301%!53#52>53:��a'/'!PNNN	O����"@
B /2�290134>7>54&#"'>32391>*/(/#33K/RT). )�5F3
#!
:!F<!/ 
N��u�,@
&B?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42Q('5
G<4""/=()5~�

@		
B/�29/33330135#5733#'35��;88�aI��Ea����o�&@	# B?3�29/3012#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�."=**@#&!1'"!2660I_	
"����*@
#
B/3�29/9301%4.#">327.#"32>".54>32�+L2%><4>*O.XhcS5Q.�00-.�'=$=@3"yq]g'B%#! $���B/�201#5!#�l�Z\J�Z ����+:@ 008B(?3�29/33301%#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1K&&K1(%1Q.,--�&&%!1{%; "<$'/'#32#*1 �


����*�

#B/2�29/301"&'73267#".54>32'2>54.#"�-P*=4=>&2L*.Q4ScgS0//-!3@=$>&)B'g]rx�""#!/��%�!
BC?2�201".54>32'32>54.#"�5O67N25N68N�;+"1 :*"1!/(?K#'K?%(AJ#&L=&� ?*)/!>*)0 2�@
	

BC?33�22301#53#52>53�N '+Q�NNP��1�"@B C?2�29014>7>54&#"'>32390?*/(/#32L/RT).!(�15F2
#"9!G;!/
N*u�,@
&BC?2�29/3301"&'732654&+532654&#"'>32�=\*!1 '9AB::4'916B 2J+.(,42Q*)&7
G=5!".	=()56~�

@
		
BC?�29/3333015#5733#'35��;88�6`I��D`��/o�&@	# BC?3�29/3012#"&'732654.#"#>73#>�)H-/R45V-@%)6)4A

�.F"=**@$'!1&# 3660H_"+��*@#
BC?3�29/93014.#">327.#"32>".54>32�*L3%>=3>*O.XgbS5Q.�/1./�'=$=@3!yr\h(B%#!!#6���BC?�201#5!#�l�Z�I�\ /��+:@ 008B(C?3�29/33301#".5467.54>324.#"32>'32>54.#"�1Q02Q/4!*1J'&K1(%1Q.,--�&&&!1�%;!#<$'/'#33")3�
+��*@	

#BC?2�29/301"&'73267#".54>32'2>54.#"�.O+>4<>&1L+.Q4TbgS/.0-+"3A<$>&)B'g]ry�""$ :����/301753:n�/I��
��/�01'73�V6}Iw(=s�
�
�/2�201"&5332673�MXS(**%SX=O>(& >O"���@
�_/]2�201".5332653�9S-^+0/,_-S�%B)-* )B%�+8u��/�201"&'7326=3�6 
'+�h�c<:auil�v�u��/33�017#533J��B��<u��$Oy��/�201"&'732>=3�; $�0U�

h<*ZyDc5�v�y��/�33017#533J��C��<y�����u��/3�015#53__�u��y�y��/3�015#53ll⇇y�2El�
��/�017#3l::EP��!D-f&���K���!D'l&��������!F'v&����Zp����E`p&��������9H�;&���a��H�4&�c���Z��H�B&���<��
G�k&�
������Im���/�9901'7'm]V#ڑI.nd�?Q��
�	)j3�	3�
�"
6
�
���	�	/	G	.V	�	�	�	R	f�		f0	
�	D	�	,
Y	
 
�	4QCopyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".Copyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".RalewayRalewayBoldBold4.026;NONE;Raleway-Bold4.026;NONE;Raleway-BoldRaleway BoldRaleway BoldVersion 4.026Version 4.026Raleway-BoldRaleway-BoldRaleway is a trademark of Matt McInerney.Raleway is a trademark of Matt McInerney.Matt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaRaleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.Raleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.http://theleagueofmoveabletype.comhttp://theleagueofmoveabletype.comhttp://pixelspread.comhttp://pixelspread.comThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFL�j2-	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a��������������������	����������bc�d�e�������f����g�����h���jikmln�oqprsutvw�xzy{}|��~�����

��� !"��#$%&'()*+,-./012��3456789:;<=>?@A��BCDEFGHIJKLMNOP��QRSTUVWXYZ����[\]^_`abcdefghijklmnop�qrst��u�vwxyz{|}~�����������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx��y�����������z{���|}~������������������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./01234NULLCRuni00A0uni00ADuni00B2uni00B3uni00B5uni00B9AmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflex
Cdotaccent
cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve
Edotaccent
edotaccentEogonekeogonekEcaronecaronGcircumflexgcircumflex
Gdotaccent
gdotaccentuni0122uni0123HcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJijJcircumflexjcircumflexuni0136uni0137kgreenlandicLacutelacuteuni013Buni013CLcaronlcaronLdotldotNacutenacuteuni0145uni0146NcaronncaronnapostropheEngengOmacronomacronObreveobreve
Ohungarumlaut
ohungarumlautRacuteracuteuni0156uni0157RcaronrcaronSacutesacuteScircumflexscircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring
Uhungarumlaut
uhungarumlautUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacute
Zdotaccent
zdotaccentuni018FOhornohornUhornuhornuni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCGcarongcaronuni01EAuni01EBuni01F1uni01F2uni01F3Gacutegacute
Aringacute
aringacuteAEacuteaeacuteOslashacuteoslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217uni0218uni0219uni021Auni021Buni022Auni022Buni022Cuni022Duni0230uni0231uni0232uni0233uni0237uni0259uni02B9uni02BAuni02BBuni02BCuni02BEuni02BFuni02C8uni02C9uni02CAuni02CBuni02CC	gravecomb	acutecombuni0302	tildecombuni0304uni0306uni0307uni0308
hookabovecombuni030Auni030Buni030Cuni030Funi0311uni0312uni031Bdotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0394uni03A9uni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni046Auni046Buni0472uni0473uni0474uni0475uni048Auni048Buni048Cuni048Duni048Euni048Funi0490uni0491uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04AD	Ustraitcy	ustraitcyUstraitstrokecyustraitstrokecyuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8uni04D9uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0510uni0511uni0512uni0513uni051Auni051Buni051Cuni051Duni0524uni0525uni0526uni0527uni0528uni0529uni052Euni052Funi1E08uni1E09uni1E0Cuni1E0Duni1E0Euni1E0Funi1E14uni1E15uni1E16uni1E17uni1E1Cuni1E1Duni1E20uni1E21uni1E24uni1E25uni1E2Auni1E2Buni1E2Euni1E2Funi1E36uni1E37uni1E3Auni1E3Buni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E5Auni1E5Buni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Cuni1E6Duni1E6Euni1E6Funi1E78uni1E79uni1E7Auni1E7BWgravewgraveWacutewacute	Wdieresis	wdieresisuni1E8Euni1E8Funi1E92uni1E93uni1E97uni1E9Euni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni2002uni2003uni2007uni2008uni2009uni200Auni200Buni2010
figuredashuni2015minuteseconduni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089
colonmonetarylirauni20A6pesetauni20A9dongEurouni20ADuni20AEuni20B1uni20B2uni20B4uni20B5uni20B8uni20B9uni20BAuni20BCuni20BDuni2113uni2116servicemarkuni2126	estimateduni2153uni2154	oneeighththreeeighthsfiveeighthsseveneighthsemptysetuni2206uni2215uni2219commaaccentf_ff_f_if_f_ls_tW.ss09G.ss11	i.loclTRKa.ss01a.ss02d.ss03j.ss04l.ss05q.ss06t.ss07u.ss08w.ss09y.ss10c_ta.scb.scc.scd.sce.scf.scg.sch.sci.scj.sck.scl.scm.scn.sco.scp.scq.scr.scs.sct.scu.scv.scw.scx.scy.scz.scuni0414.loclBGRuni041B.loclBGRuni0424.loclBGRuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0432.loclBGRuni0433.loclBGRuni0434.loclBGRuni0436.loclBGRuni0437.loclBGRuni0438.loclBGRuni0439.loclBGRuni045D.loclBGRuni043A.loclBGRuni043B.loclBGRuni043F.loclBGRuni0442.loclBGRuni0446.loclBGRuni0448.loclBGRuni0449.loclBGRuni044C.loclBGRuni044A.loclBGRuni0493.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0431.loclSRBzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lf	zero.subsone.substwo.subs
three.subs	four.subs	five.subssix.subs
seven.subs
eight.subs	nine.subs	zero.dnomone.dnomtwo.dnom
three.dnom	four.dnom	five.dnomsix.dnom
seven.dnom
eight.dnom	nine.dnom	zero.numrone.numrtwo.numr
three.numr	four.numr	five.numrsix.numr
seven.numr
eight.numr	nine.numrperiodcentered.loclCATuni030C.altbrevecombcybrevecombcy.casehookcytailcyhookcy.casetailcy.casedescendercydescendercy.caseverticalbarcy.caseuni03060301uni03060300uni03060309uni03060303uni03020301uni03020300uni03020309uni03020303
apostrophe��T\����������������#$+,, 0��������$+�
�hDFLTcyrlRlatn0�� !"#$%&BGR VBSH �CHU �SRB ��� !"#$%&��	 !"#$%&��
���� !"#$%&4AZE nCAT �CRT �KAZ "MOL ^ROM �TAT �TRK �� !"#$%&��
 !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&'aalt�c2sc�ccmp�ccmpdligdnomfracligalnum$locl*locl0locl6locl<loclBloclHloclNloclTloclZlocl`loclflocllnumrrordnxsalt�sinf�smcp�ss01�ss02�ss03�ss04�ss05�ss06�ss07�ss08�ss09�ss10�ss11�subs�sups�!#$1
	
 %"&'()*+,-./02fnv����������������
"*2:BLT\fnv~�����������������@d����48<N`dhlptx����&.2:\x��������LPTX\`dhlpz~��Mc�������������������������������������yz{|������������������������	

M'()*+-./012356789:;=>?GHJKLMPRSUWX[]_{"#&'������������������&'->>LZhv������������� &,28��kd��l}��mv�n�w�o�	e�p
f�qg�rh�s
i�tj�n���~�����n�����������~����������������&,4<FINOQTVYZ\^,>?NO��,NO������
��NO
��NON
,
+�*�)�(�
'�&�%�$��� {QQ {11�{�{yz{|"#&'yz{|"#&'_N_N_N_N_N	�����,->?�����&',>?.�������������������������������������V�
d}vwefghij��O�c����&F4Tn~n~&4FT�T3�&?sF_
�Y�YHX6"(�KQ�KN�Q�N�KKhFhFiFgIbOaQ]V[Y[Z
��<\Y^�,�
NxDFLTcyrl$latn4������kernmarkmkmk (20������F�`
`���`���Bh�x�(<�P��J8�l����� � �!4!�&�&�&�''F'�&�&�(J(�+Z,,r,�-�.3B48b9T9�;�=�>,>z>�>�??z?�?�@@@D@�@�@�>,A
A(A^A�A�A�DzD�GVG�G�IpI�I�JJ�JNJpJ�K ������!4 �!4!4!4!4&�&�&�&� �&�(J(J(J(J(JR
R-�-�-�-�8bR�T�=�=�=�=�=�=�>�X:>�>�>�>�?�XxX�YlZJ@�@�@�@�@�@�]@]fA�A�A�A�GV>,GV�=��=�]�^� �>z �>z �>z �>z �_ �a�!4>�!4>�!4>�a�>�!4>�&�bN&�bN&�bN&�bN&�?�bl?�&�e�&�fd&�f�f�f�&�?�'f�'F@'�@D'�g�hh�'�'�j�&�@�&�@�&�@�k^k|(J@�(J@�(J@�a�>�,k�,A(,k�,rA^,rA^,rlF,rA^,�l�,�l�m�A�-�A�-�A�-�A�-�A�-�A�-�r�3BDz8bGV8b9TG�9TG�9TG�(J�=�!4>�R]f,rA^,�s?�@�s.!4!4sPs�t$&�&�t�uL'Fu�v�v�!4w8x'F&�&�(Jxpx�yTz�{�(J(J{�|H|�>�}}:A�A�@A�A�@�@�A�>,}�}�GV@�~L~zA�A�~zA�@�@�A�>�>�~�~�D?���@A�GVA��T'F@'F@&�@� �>z8b�^��A�A�?�&�'FA�?��=��=�!4>�!4>�(J@�'FA�A�(J@�(J@�GVGVGVA�A�(J�63BDzA� �>�&�?�&�@�,A(,rA^,؂P3BDz3BDz3BDz9TG�!4>�!4>ڂz��(J@�-�A�8bGV8bGV�ڂ���Z���̇ZJJ��6�<�F�P�n��@D��@DA��⍼���6����4���Ă6���A���ԝ��F������̤��঴�
�(�ªP�.� ���±䳦(J � � ��6A�A�A�@@�@�A�>z>z�<�f�����ȴε4�ZP����&��/��9��;��<��=��>��[��\��^��������������������������������������������&��(��*��8��9��:��;��<��[��]��{����������������������4��B��D��d��f��h�������������������������������@��A��F��G��U��X����������������������������������%��������!������������������
��������������k����&!/9��:��;��<��=!>��?[��\��]^��_�!�!�!�!�!�!�>�
����������������������!�!�!�&��(��*��,��.��0��2��4��6��8��9��:��;��<��=>?@AB[!]>_
`{����������!���������4��B��D��d!f!h>�������������������������������2��@��A��F��G��U��X�����������������������
������&(��,��4��6��9;
<=>F��H��I��J��K��L��O
T��V��Y��Z��[��\��]^���������������������������������������������������������������������	��������������������������������������������������������������������������������������������������
�����������������&'��()��*+��-��/��1��3��5��7��89��:;��<C��[\��]^��_��`��{|�������������������������������
������������������������
��
	��4>��?��BDEde��fg��hi��k��z��{��|��}��������������������������������������������3��@A��FG�������������������������������������������������	������������������������������������������������������������&��/��9;<=>F��H��I��J��L��T��V��X��\�����������������������������������������������������������*�%�����������������������������������������������������������������I�!�����*����������!��#��%��&(*89:<C[��\��]��^��`��z��{���������������������������������������
����
$4?��BDd��e��f��g��h��i��k��{��}�������������������������@F�����������������������������������������������	�����������������;��O[���*��C����������������������D��E���������������������'����;��=��[��]��*����������������������������D��E��������������������������������;��[��*��C����������������������D��E���������������������R��������������������&��(��,��/��4��6��8��;<
=>F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	�����
�������������������������������� ��!��"��#��$��%��-��/��1��3��5��7��8
9��:;��<>��@��B��C��[��\��]��^��_��`��y��z�����������������������������������������������������������������������������������������������������������	��
����
����������%��'��)��/��1��7��9��>��?��BDE��d��e��f��g��h��i��k��w��y��z��{��|��}������������������������
�������������������
���
���
������������3��@A��FG��������������������������������������������������������������������������������������������������������������������������������������������������������������<����&��/9��;��<��=��>��?��A��t���������������������������������&��(��*��8��:��<��=��?��A��[��]��{���������������4��B��D��d��f��h��������������@��F�����H��������&/9��:��;��<��=>��A��q��t��{���������"����������������������&��(��*��,��.��0��2��4��6��8��:��<��[]"{��������������4��B��D��dfh"�����������2��@��F��Q��R�����!9��;��<��>��A��t�������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F�����#9��;��<��>��A��t���
���&��(��*��8��:��<��]
{������������4��B��D��h
�����������@��F�����)������9��;��<��>��A��qt���
������&��(��*��8��:��<��]
{������������4��B��D��h
�����������@��F��QR���'��9��;��<��>��A��q�������&��(��*��8��:��<��]{�����������4��B��D��h�����������@��F��QR����-��&��9;��<��>��������������������������������&(*8��:��<��[��]��{������4B��D��d��f��h���������@��F���;��������������"��&��/��9?f��q��t{��������������������������������������&(*=?A[��]��{���������4d��f��h����Q��R��V��Y��]�����,&��9;��<��>��������������������������������&(*8��:��<��[��]��{������4B��D��d��f��h������������@��F����� ����9��;��<��>��A��t�����&��(��*��8��:��<��{������������4��B��D�������������@��F�����;��*������D�������
;��O�	*������D��������������G����&��9��;��<��>��[��\��^�������������������������������������&��(��*��8��9��:��;��<��[��]��{�������������������4��B��D��d��f��h����������������������������@��A��F��G��U��X����������������(��������	������$��%��;��A��[��m��n��r��~������������
��*��C��_��`�����U����������������������������&��9��;��<��=��>��?A��K��X��Y��Z��[��\��]��^��_��������������������������������������������������������!��#��%��&��'��(��)��*��+��-��/��1��3��5��7��8��9��:��;��<��=>��?@��AB��[��]��z��{��|��������������������4��B��D��d��f��h����������������������������������3��@��A��F��G��U������������������������������������������������������;��=��������%�*U����������
��
�����;��=��A��]��������������*U������������������������[����
�����/���
C�����U�����������������K������������������������ ��%��&��(��,��/��4��6��8��F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��o��q������������������������������������������������������������������������������������������!�������������������������������������������������������������������������������������������������D��
�������!��
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|����������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}��������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b������������������������������������������������������������������������������������������������������
����������������������������������������;��A��[����*��U������������������������������U�����������������U������������"����
AB[��m��r�������-��������#�*�C��_��`�����U����������������������������$��;��A��[��m��n��r��~����*��C���U�Y�����������������������������;��=��A��]��������������*U���������������������������������������&��/��;��<��=��>��F��H��I��J��L��T��V��X��\]^o��q���������������������������������������������������������������������������������������������������������������������������!�������������!��#��%��8��9:��;<��[��\��]��^��`��z������������������������
����?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��AF��GQRU��V��Y��]��a�������������������������������������*����&��;��=��A��]���������������������������������������*[��]��d��f��hU������������������������;��A��[�����������������
��*��C��`�����U���������������������������;��=��[��]��n����*U��������������������������������;��������������������%��[��]��m��r�������������*�)�������M�%�����*��!��%��)��C�������U�������������������������������������������������������������������U���������������L����
���������������������������� ��%��&��(��,��/��4��6��8��A	F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��m��o��q��r�������������������������������������������������������������������������������������������1�������������������������������������������������������������������������������������������������5�/����������
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|��������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}��������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b���
������������������������������������������������������������������������������������������������������������������������������������1������������������������%��A
[��]��m��r��������������5�����8�2�������!��%��B��C�����U�����������������������������	(��,��4��6��8��A
F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��^��m��o��q��r�������������������������������������������������������������������	�8����������������������������������������������	��������������������������������������������������0�5�"����	��
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��C��\��^��_��`��y��z��|���������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��e��g��i��k��w��y��z��{��|��}���������������������������������������������������������3��A��G��Q��R��U��a��������������������������������������������������������������������������������������������������������<������
��������������������%��A	[��]��m��r�����������������������1����������.�.���������!��%��B��C�����U���
��������������������������[��m��r��������5�
�����C�����U�����������������y(��,��4��6��H��I��J��L��OT��V�����������������������������������������	������������������������������������������������������������&������������������]_��`������������������������������
��
>��?��hk��z��{��|��}��������������������������������������������������������������&(��,��4��6��9��:��;��<��=>��Y��[��\��]^���������%��������������������������������������������������������������������&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��C��[]%_��{��|��������������������������������������������4��>��B��D��Edfh%z��|�����������������������������������2��@��A��F��G��U��X���������������	�������������������������������
��$��;��A��[��n��~�����U��������������������$��;��=��A��B��[��]��b��~�����U�������������������$;��=��A��[��]��������U��������������	;��[�������U���������������$��;��=��A��[��]�����U�������������������#��%;6=:A!Bb��:�O����Z�L�9�:���U��-;��<��=��A��O�8�����������U��������
��$��;��=��A��[�����U���������������������U��O����$U��

	;��A��������`�����U���������$��;��A��[��m��n��r��~��U��������������
��$��;��=��A��[�����U�����������������������$��;��=��A��B��[��]��b��~�����U�����������������;��=��A��ORU��������
������%;��=��A�����������U�����
��;��=��A��[��]�����U�����������������	;��A�����������U�����������	;��A��[�����U���������������������������%��&��/��9��;��<��=��>��?��A��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��8��:��<��=��?��A��[��\��]��^��`��z��{������������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��F��Q��R��U��V��Y��]��a�������������������������������������������
������%;��=��A��~�������U�����(��,��4��6��9��;��<��>��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��8��:��<��\��^��_��`��z��{���������������������������������������
����4��>��?��B��D��e��g��i��k��z��{��|��}��������������������������������@��F��Q��R��U��a������������������������������������������������������������%��;��=��A�����������U��;��A�����������U�����s(��,��4��6��H��I��J��L��OT��V���
������������������������������������������������������������������������������������������������$��	����������������]
_��`�����������������������
��
>��?��h
k��z��{��|��}���������������������������������������������������������O6��
�;&��;��<>������������������������������	8:��<��[����B��D��d��f������@��F�����O4���9;��*���������D��������������������������������$;��=��[��]��*��������������������������������������D��E��������������������������������&'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=>��?F��G��H��I��J��K��L��M��N��OLP��Q��R��S��T��U��V��W��X��Y��Z��[��\��]^��_�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������R�������������������������������	��
������������������������������������������ ��!��"��#��$��%��&��'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=>?@ABC��[\��^��_��`��y��z��{��|���������������������������������������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��4��6��7��9��>��?��B��D��O��T��c��de��fg��i��j��k��w��y��z��{��|��}��������������������������������������������������������������������������������
������������2��3��@��A��F��G�������������������������������������������������������������������������������������������������������������������������������������������������������������������'����;��<��=��>��A��]���������������*8��:��<��B��D��������@��F��U������������������������y��������������$��&��/��8��9��;��<��=��>��?��A��B��F��]��^��b����������������������������������������������������������������������������� ��"��$��&��(��*8��:��;��<��=��?��A��[��\��]��^��y��{��������������������������4��B��D��d��e��f��g��h��i��������������������������@��A��F��G��TU��V��WX��Y��]������������������������������&��'��(��)��*��+��,��-��.��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��A��K��X��Y��[��\��]��^��_�������������������������������������������������������������������������������������������������������������������������������������
�������������������	������������������������ ��!��"��#��$��%��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��_��y��z��{��|�������������������������������������������������������4��6��>��B��D��T��d��f��h��j��z��|�������������������������������������������������������
������2��@��A��F��G��U��X��������������������������������������������������$;��=��A��O[��]��������U��������������
A����U���4*$B	GMNOPQ	b~
���������
�������					�
Oc�TU��WX�����7

%$ABGMNOPQbn~�����������������
Oc�TU��WX����������$&��'��)��*��+��-��.��/��0��1��2��3��5��7��8��9��:��;��<��=��>��?��AK��Y[��\��]��^��_���������������������������������������������������������������������������������������������������������������������������	�������������� ��"��$��&��'(��)*��+,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��y��{��|���������������������������������������������4��6��B��D��T��d��f��h��j�����������������������������������������������
����2��@��A��F��G�������������������������������	������������������$������$��;��=��A��B��[��\��]��^��b��~����������9��;�������������������������A��G��U�����������������5��������	������$��%��;��A��L��Ou[��^��m��n��r��~�������������������*��;��C��_��`�������������������A��G��U�����������������������������$��;��A��OV[��n��~�����U���������������Fcc�^$0;��A}BvGiKMiNiOfPiQkR
S
U
W
Y3Z[\$] ^ _aUbrjTmnCr~)�����i�i�i�i�(�
����� �\� �i�i�i�i�i�i�i�i�i�kkkkk







'3)3+3-/13579$; >@B3|3�i�
�
�
�
�
�
�
�
�
� �
�
�



i	
i
ii
i

 
%
'
)
/
1
7
9
Oiciw
y
� � � �
�
�$�
�i�
�
�3�$�$�$�i3A G TIUpWIXp�~��
����f�g�&��� �i����i�
�
�����

;��[�������U�����������[�����
�����/���
C��]���hU�����������������;��=��A��OU���������(��,��4��6��:��F��H��I��J��K��L��T��V��X��Y��Z��[��_������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!��#��%��'��)��+��,��-��.��/��0��1��2��3��4��5��6��7��>��@��B��\��^��_��`��z��|�����������������������������
����>��?��e��g��i��k��z��{��|��}������������������������2��3��U������������������������������������������������������������
�������������������������8=(A;B+GMNOPQa	b&jn�����������������
Oc�TU$WX$�:����#AB	b	����U���	A
����U���	O1��������U�����O>����U��4*$B	GMNOPQ	b~
���������
�������					�
Oc�TU��WX���������$��;��A��OA[��m��n��r��~��U��������������;����������$��9��;��<��>��A��[��m��n��r��~�������&��(��*��8��:��<��C��{������������4��B��D�������������@��F��T��U��W��X���������������������������e�� <<Z9$;��AWBOGBK��MBNBO?PBQDY[\]^a/bKj-m��nr��~�
�B�B�B�B���3���B�B�B�B�B�B�B�B�B�DDDDD%#')+9;B"|�B�BB
BBBOBcB�����B����BAGT$UIW$XI�W��������������=�@����B�B4����$��;��A��KY[��\��]^��_m��n��r��~�������')+9��;��>@B|����������������������A��G��U������������������O��������U�������$��;��=��A��O#[�����U�����������������
������%;��=��A���������U�������
��%;��=��A	BQ����������U��X������;��=��A��O[��]�����U�����������������
;��A��Og���������U�����������H##?"$;��A9B2G$M$N$O$P$Q%Yab.jn~
������$��$�$���$�$�$�$�$�$�$�$�$�%%%%%%')+|�$���$$
$$$O$c$�$�$TU,WX,�:�$�$�������$�$C���������������������������� ��%��&��(,/��46F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_��mo��q��r��������������������������������������������������������������������������*�)��������������������������������������������������������������������������������������������M�%��������*��
����������������������!��#��%��)��-��/��1��3��5��7��9��;��>��@��B��C[��\��]��^��_`��z��������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>?��d��e��f��g��h��i��k��w��y��z{��|}���������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b�������������������������������������������������������������������������������������������������������������������������������������������
;��A��OO[�����U��������������
;��A��O$���������U�������������A��o��q�����Q��R��a��������$��A���������������������������T��U��W��X��;��=��������%�*�����������������
U����������
��
�,��;��=��[��]��n����*���������������������������������U���������������������������������������������������������������������U��V��Y��]������������������$��A�������������T��U��W��X��C������������	������$��%��;��A��[��m��n��o��qr��~������������
��*��C��_��`�����������������������������������D��E��QRT��U��W��X��a���������������������������$�������������������������������E�������������������������������������
D��E��8������
AB[��m��o��q��r�������-��������#�*�C��_��`���������������������
"DEQ��R��U��VY]a�����������������������������������������������������
	D��E����������o��q����������������������
EQRV��Y��]��a��;��=��������%�*�����������������
U����������
��
�^���������������������������� ��%��[��]��m��o��q��r���������������*�)�������M�%�����*��!��%��)��C����������������������������������������
&E����Q��R��U��V��Y��]��a��b���������������������������������������������1��������;��=��A��B��]��������������*��������������������������������D��U��V��Y��]��������������������������A
o��q�����������������������
6DE��Q��R��a��������$��;��A��[��n��~����������E��T��U��W��X�������������� ����������$��;��=��A��B��[��]��b��~������������������������E��U�����������������������$��A����������E��TU��WX����
A��o��q������Q��R��a����������$��A����������E��TU��WX��������$;��=��A��[��]��o��q�������������EQRTU��WX��a������������������������A��B��o��q�������Q��R��V��Y��]��a��b��o��q�������Q��R��a��H������$��;��=��A��[���������� T��U��W��X�����������������������$;��=��A��[��]��o��q���������QRTU��WX��a��������������������;��=��A��[��]���������������TU��WX�����������������$$ABb����
HTU��WX����U��������$��;��=��A��[����������T��U��W��X�����������������
"a���������������������������������� ��%��A[��]��m��o��q��r�������������������������1����������.�.���������!��%��B��C�����������������������������������������D
E��Q��R��U��V��XY��]��a��b���
��������������������������Ao��q������QRVY]a��;��=��A��U��������
;��A��O(���������U�����������O:��������U�����OI����U��������#�C������������������
����������%��F��G��H��I��J��K��L��M��N��O��P��Q��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������!��#��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C\��^��`��z��|����������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��7��9��?��DO��c��e��g��i��k��w��y��{��}���������������������������������������������������������3��A��G�������������������������������������������������������������������������������������������������������������������������������������������������;��O([���.*��C����������������������'D��E�������������������������%��������+��C���������������������
D�������	���A����������������#��%;6=:A!Bb��6�L����W�I�5�6���U��-����U��6����	���������������������������� ��%��&��(��,��/��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��_��m��o��q��r�������������������������������������������������������������������������������������������*�����������������������������������������������������������������������������������������������3�'����������
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��>��@��B��C��[��\��]��^��_��`��y��z��|�������������������������������������������������������������������������	��
������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}�����������������������������������������3��Q��R��U��V��Y��]��a��b������������������������������������������������������������������������������������������������������������������������������������v��������&��/��9��;��<��=��>��?��A��F��K��[��\��]��^���������������������������������������������������������������������	&��(��*8��9��:��;��<��=��?��A��[��\��]��^��{�����������������������4��B��D��d��e��f��g��h��i�����������������������������@��A��F��G��U��V��Y��]��������������������������������������������������$��'��(��)��*��+��,��-��.��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��A��K��Y��[��\��^����������������������������������������������������������������������������������������������������������������������������	���������������������� ��"��$��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��?��A��_��y��{��|��������������������������������������������������4��6��>��B��D��T��j��z��|����������������������������������������������������
������2��@��A��F��G��T��U��W��X������������������������������������������:��?������������������,��.��0��2��4��6��=��?��A���2��U��OR����U��:��?������������������,��.��0��2��4��6��=��?��A���2��U��
;��<��=��A��Ov8�����������U���������������������%&��/��9��;��=��>��?��A��FH��I��J��L��T��V��o��q����������������������������������������������������������������������������������������������������������������������&��(��*��:��<��=��?��A��[��\]��^`��{���������������������������������
��4��?��B��D��d��ef��gh��ik��{��}������������������@��F��Q��R��U��V��Y��]��a��b����������������������������������&��/��9��;��=��>��?��A��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{������������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}�������������������@��F��Q��R��U��V��Y��]��a��������������������������������������������������������%��&��/��9��;��=��>��?��A��F��H��I��J��K��L��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{������������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}��������������������@��F��Q��R��U��V��Y��]��a�������������������������������������������n������	����$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��~�����������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_��{��������������������4��>��B��D��z��|���������������2��@��F��Q��R��T��U��W��X��a��������������������������������������G��$��&��9��:��;��<��=��>��A�����������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��[��]��{��������������4��B��D��d��f��h�������������2��@��F��U��X�����������������@��$&��9��;��<��>��A��o������������������������������&��(��*��8��:��<��[��]��{��������������4��B��D��d��f��h�������������@��F��TU��WXa������������������������T����������$��&��/��8��9��;��<��=��>��?��A��B��b���������������������������������������� ��"��$��&��(��*��8��:��<��=��?��A��[��]��y��{�������������������4��B��D��d��f��h����������������@��F��T��U��W��X������������������������)9��;��<��>��A��o��q���&��(��*��8��:��<��{������������4��B��D����������@��F��QRU��a��b�����������D��������&��/��9��=��>��?��o��q���������������������������������&��(��*��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h�����@��F��QRU��V��Y��]��a��b�����������������8������$��9��:��;��<��>��A���������������������&��(��*��,��.��0��2��4��6��8��:��<��]{�����������4��B��D��h�����������2��@��F��TU��WX�������������;��A��U��7����&��9��;��<��=��>��?��A��������������������������������&��(��*��8��:��<��=��?��A��[��]��{��������������4��B��D��d��f��h��������������@��F��U�������H����
(��,��4��6��9��>��o��q��������������������������������������������������&��(��*��:��<��_��{��������������������4��>��B��D��z��|���������@��F��Q��R��U��a�������������������������q����������$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��{��~���������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��]_��{��������������������4��>��B��D��hz��|���������������2��@��F��Q��R��T��U��W��X��a��b����������������������������������������$��;��=��A��B��b�����U������������������������G����������&��/��9��;��<��=��>��?��A��B��b�����������������������������������&��(��*��8��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h���������������@��F��U��V��Y��]������������������&����$��&��;��=��A��B��b������������������������������[��]��d��f��hU������������������������c������$��(��,��4��6��9��:��;��<��>��A�������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_��{��������������������4��>��B��D��z��|������������������2��@��F��TU��WX�������������������������������������7&��9��;��<��=��>��A��������������������������������&��(��*��8��:��<��[��]��{��������������4��B��D��d��f��h�������������@��F��U��X����������������<����������%��&��/��9��=��?��o��q��������������������������������&��(��*��=��?��A��[��]��{�����������������4��d��f��h�����Q��R��U��V��Y��]��a��b���������������<����&��/��9��;��<��=��>��?��A��������������������������������������&��(��*��8��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h��������������@��F��U���������u������������%��&��(��,��/��4��6��8��9��=��>��?��o��q��~���������������������������������������������������������������������������� ��"��$��&��(��*��:��<��=��?��A��[��]��_��y��{����������������������������4��>��B��D��d��f��h��z��|������������@��F��Q��R��U��V��Y��]��a��b����������������������������v������������%��&��(��,��/��4��6��8��9��=��>��?��o��q��~���������������������������������������������������������������������������� ��"��$��&��(��*��:��<��=��?��A��[��]��_��y��{����������������������������4��>��B��D��d��f��h��z��|������������@��F��Q��R��U��V��Y��]��a��b����������������������������H��(��,��4��6��9��>o��q��~������������������������������������������&��(��*��:<_��{��������������������4��>��BDz��|���������@FQ��R��U��a�������������������������p�������������� ��%��&��(��,��/��4��6��9��=��>?��o��q��~��������������������������������������������������������������������������&��(��*��:<=��?��A��[��]��_��{��������������������������4��>��BDd��f��h��z��|����������@FQ��R��U��V��Y��]��a��b������������������������������%��9��;��<��>��o��q�����&��(��*��8��:��<��{������������4��B��D����������@��F��Q��R��U��a������������
����A��VY]����������A��qt�����QR��q���QR�������A��t���������������"��Af��q��{��������Q��R��V��Y��]�����������������	����A��VY]�c��_	 ""%AFa8eeTggUjjVooWqqXttY{{Z[��\������C�[`y|��"��$��(��-��/��2��5��6��9��<��>��@��CXY
_d%%i01j47l>?pBBrDEsKKuMMvOOwTUx``zcm{pp�ww�y}�����������������������������������������������
��23�@A�FG�QR�TY�ac�||�������������������������������������������	(` 4;4���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������G����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������+37���������)����������������������������������������������������������������������������������������������������������������������������������44')'..	+
&
(/& %0)31	




&	
	
	
	
((+   





%%%	+!!","9	,,!!#$#&
$$
!:-78"#78	
--"#( %
))56'56'01/****22"			$$
#
3))%%	"



&('						!

			

"



	!

"#
	-#

./0,  12
,
3$
 $$
		!

*+*+&'#

 (g &&(*,46:<<>?FZ\\1^_2oo4qq5{{67��8��O��U��e��k������C�[`�y|��������������������
��������������������(�*
7E*1G47O>?SBEUKKYMMZOO[TU\``^cm_ppjrskwwmy}n��s��t��u��v��w��x��|��}���������������������
��23�@A�FG�QR�TY�ab�����������������������������������������������4~DY|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flQ�[�|�xJ�ffcF�F7y�tw�uuc����f�`���P$c���}�}|��y�zc9�V:�@;�6w���w��I�JF�:+01CrCC/08@�..��!�����=./��/}/�{����(��,0�3B������d����Q�I��4�7��T��eJ�W�K8��i����3�} u�,))
v�u`�W�Wk�wn�l�mi�9J�J���t�t;�;/�/'�'y�y���O�#,Y&()*,-./01234789:<>?FHIJLMNPQRSTWXYZ\^_n~����������������������`lm�����������������������$+ ���������������������$*06<�Y����n�3�����T��n�y�����$�������:.J
n�9�9��E�]���������� &,28n�y������*06<BHNTZ`flrx~�����������������n���3����T�����������+�Y�+����
��$+��$+^djpv|������������������Y����n�3�����T�������"������դ'��^#�+tvlib/fonts/raleway/Raleway-Regular.ttf000064400000501774147361034410013652 0ustar00 FFTM������GDEF2�,��t�GPOS�JJo����GSUB����OS/2��gX�`cmap^-R���cvt ��)��fpgm��Z��gasp�lglyf��'2�!head��,6hhea��d$hmtx&���loca�'�*@\maxp�\� nameA�MS�4posta�1�a�#�prepO(�(��{�_<����^#�+tv�(� u��?�(�M--in/��QO��XK�X^27��P [NONE�
����� �� 
`2M��\$E�%k&�(�/�E
, A>�4�P�A�A\d7�.	,&"!#[4"Q2J$�A�F�!�D�7�"E/��Y�*�YaYMY�*�Y�Y��YGYmYY�*nY�*�Y_ b�O�
x�uX82+�A�1!!iK%'n(K'Jj(GK�K�KN�KGKS'iKi(_K� ORF-��5�V2�B��[1+�45��W�/I=@0�0=)FI:A@0�6
2�H�$�#�1lRZ"�A#"�,=?"'"�#�!����������*aYaYaYaY��Y���"Y�*�*�*�*�*�@�*�O�O�O�O�[Y'K!!!!!!!!!!!!�!%'K'K'K'K'��K���Z*GKS'S'S'S'S'CS'RFRFRFRF[K�!!�!!�!!�*%'�*%'�*%'�*%'�Yn(�"n(aYK'aYK'aYK'aYK'aYK'�*j(�*j(�*j(�*j(�YGK�,G�������������!��Y�K�Y�K����YKKGYNGYNGYNGY:NN$
YGKYGKYGKG���YGK�*S'�*S'�*S'�*
'�Y_K�Y_I�Y_K_ � _ � _ � _ � bObO�!Q�ORF�ORF�ORF�ORF�ORF�ORF-��u�u�u���*S'�ORF?Y�YY((Y'Y�N�Y�Y(K�*j(�*S'1Y�YY(�*i'�!!����!�*S'�!!�!!aYK'aYK'��������*S'�*S'�Y_/�Y_K�ORF�ORF_ � bO�*S'�*S'�*S'���K�E�E�"�1�#�#J*J*�W�6�E�E�W+�2�#�5�,F+11*:6+2=�#+*%+"22=9#5+62��-XKMaYaY�Y�*_ �Y���&�Y�zY�]h�Y��Y�YY�&aY�!-�]�]zY�&mY�Y�*�YnY�*bh+*x�Y�E�Y�Y�SYbY�0�Y}A!!`;J�JDK'&�RJRJJ9�JGJS'8JiK%'��'�CJ:J7JM�J�J-&
K$K'K'9�J.'� �K��"+JIJRJ5J����&�*R'�
)�]RJ{!hSaCY�J���zY�J�&!-��YJkY"K����CYbJ�YJ8Y\JS43;�*%'b��
+ �r��E:�E:�YGKc�c��Y�&cS�J�&9�YGJ�YGJ�E�:mY�J�K�!!�!!����!aYK'�K�K�&!-�4-���]RJ�]RJ�*S'�*R'�*R'�0-&hhh�E:Y�JSY�J"�����)�#�&9�*i(-�TKC�YGK��8���&9�*%'�Yn(�Yn(aYK'aYK'aYK'�*j(�YGK�YGK��GYNGYmY�KYGKYGKYGK�*S'�*S'�*S'�*S'�Y_K�Y_��_ � _ � _ � _ � _ � bObO�ORF�ORF---�u�OwK�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!aYK'aYK'aYK'aYK'aYK'aYK'aYK'aYK'�3�
�Y�K�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�ORF�ORF�ORF�ORF�ORF�ORF�ORF����C����d�A�A:A�A�A�@�@�P<@7@WP�'�)_V�A*.�E�E`)`?��(�&�v�(c�&� �&"�$�#�v�(c�&�!'(d�1K%�Y^)n)!!�_n�*>7�*b�+N"�O;5HtY�6�>�-[+0"�#8"�#�S6S'f� DL���A��-,	�A�S�>�A��9F�G�1+#&�*�K!l(j(�K�Qi(<NF=p'JCTS,mTTTk,�T�T�2T�T�T�T�,T�,:T
$�KL�)
2(%��)(MY!-�*!-�*;N:j(&�RFRFRFKGK�KgF�F�DF|�J%'�%'Y)�0�*E/H09,([4	Q2[,�&"�$�#�v�(c�&�!�&"�$�#�v�(c�&�!�&"�$�#�v�(c�&� �A1$+�;����2+*+X��/& �����d
~~��������-37Y����$(.15����_cku�)/	!%+/7;IS[io{������       " & 0 3 : D p y � � � � � � � � � �!!! !"!&!.!T!^""""""""+"H"`"e%�����
 ����������*07Y����#&.15����bjr�$. $*.6:BLZ^lx������         & 0 2 9 D p t � � � � � � � � � �!!! !"!&!.!S![""""""""+"H"`"d%��������������������l�j�e�a�S�Q�N�-�����������������������|��
�����������������~�x�t�����������z�x�r�p�n�f�b�Z�X�U�O�N�F�C�?�>�<�;�:�7�.�-�(��������������������������u�s�j�i�f�_�;�5��������s�W�@�=�����
	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc��������������������������������Ztfgk\z�rm�xl����u��iy�����n~����ep�D��o]d���QRWXTU���<c|ab��[{VY^������������������s���|���@J������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSQPONMLKJIHGF(
	,�
C#Ce
-,�
C#C-,�C�Ce
-,�O+ �@QX!KRXED!!Y#!�@�%E�%Ead�cRXED!!YY-,�C�C-,KS#KQZX E�`D!!Y-,KTX E�`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,�CTX�F+!!!!Y-,�CTX�G+!!!Y-,�CTX�H+!!!!Y-,�CTX�I+!!!Y-,# �P��d�%TX�@�%TX�C�Y�O+Y#�b+#!#XeY-,�!T`C-,�!T`C-, G�C �b�cW#�b�cWZX� `fYH-,�%�%�%S�5#x�%�%`� c  �%#bPX�!�`#  �%#bRX#!�a�!#! YY���`� c#!-,�B�#�Q�@�SZX�� �TX�C`BY�$�QX� �@�TX�C`B�$�TX� C`BKKRX�C`BY�@���TX�C`BY�@��c��TX�C`BY�@c��TX�C`BY�&�QX�@c��TX�@C`BY�@c��TX��C`BY�(�QX�@c��TX��C`BYYYYYYY�CTX@
@@	@
�CTX�@�	�
��CRX�@���	@��CRX�@��	@���CRX�@��	@�@�	YYY�@���U�@c��UZX�
�
YYYBBBBB-,E�N+#�O+ �@QX!KQX�%E�N+`Y#KQX�%E d�c�@SX�N+`!Y!YYD-, �P X#e#Y��pE�CK�CQZX�@�O+Y#�a&`+�X�C�Y#XeY#:-,�%Ic#F`�O+#�%�%I�%cV `�b`+�% F�F`� ca:-,��%�%>>��
#eB�#B�%�%??��#eB�#B��CTXE#E i�c#b  �@PXgfYa� c�@#a�#B�B!!Y-, E�N+D-,KQ�@O+P[X E�N+ ��D �@&aca�N+D!#!�E�N+ �#DDY-,KQ�@O+P[XE ��@ac`#!EY�N+D-,#E �E#a d�@Q�% �S#�@QZZ�@O+TZX�d#d#SX�@@�a ca cY�Yc�N+`D-,-,-,�
C#Ce
-,�
C#C-,�%cf�%� b`#b-,�%c� `f�%� b`#b-,�%cg�%� b`#b-,�%cf� `�%� b`#b-,#J�N+-,#J�N+-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-, �%J�N+�;-, �%J�N+�;-,�%�%��g+�;-,�%�%��h+�;-,�%F�%F`�%.�%�%�& �PX!�j�lY+�%F�%F`a��b � #:# #:-,�%G�%G`�%G��ca�%�%Ic#�%J��c Xb!Y�&F`�F�F`� ca-,�&�%�%�&�n+ � #:# #:-,# �TX!�%�N+��P `Y `` �QX!! �QX! fa�@#a�%P�%�%PZX �%a�SX!�Y!Y�TX fae#!!!�YYY�N+-,�%�%J�SX���#��Y�%F fa �&�&I�&�&�p+#ae� ` fa� ae-,�%F � �PX!�N+E#!Yae�%;-,�& �b �c�#a �]`+�%�� 9�X�]�&cV`+#!  F �N+#a#! � I�N+Y;-,�]�	%cV`+�%�%�&�m+�]%`+�%�%�%�%�o+�]�&cV`+ �RX�P+�%�%�%�%�%�q+�8�R�%�RZX�%�%I�%�%I` �@RX!�RX �TX�%�%�%�%I�8�%�%�%�%I�8YYYYY!!!!!-,�]�%cV`+�%�%�%�%�%�%�	%�%�n+�8�%�%�&�m+�%�%�&�m+�P+�%�%�%�q+�%�%�%�8 �%�%�%�q+`�%�%�%e�8�%�%` �@SX!�@a#�@a#���PX�@`#�@`#YY�%�%�&�8�%�%��8 �RX�%�%I�%�%I` �@RX!�RX�%�%�%�%�%�%I�8�%�%�%�%�
%�
%�%�q+�8�%�%�%�%�%�q+�8�%�%����8YYY!!!!!!!!-,�%�%��%�%� �PX!�e�hY+d�%�%�%�%I  c�% cQ�%T[X!!#! c�% ca �S+�c�%�%��%�&J�PXeY�& F#F�& F#F��#H�#H �#H�#H �#H�#H#�#8�	#8��Y-,#
�c#�c`d�@cPX�8<Y-,�%�	%�	%�&�v+#�TXY�%�&�w+�%�&�%�&�v+�TXY�w+-,�%�
%�
%�&�v+��TXY�%�&�w+�%�&�%�&�v+�w+-,�%�
%�
%�&�v+���%�&�w+�%�&�%�&�v+�TXY�w+-,�%�%�%�	&�v+�&�&�%�&�w+�%�&�%�&�v+�w+-,�%�%J�%�%J�%�&J�&�&J�&c��ca-,�]%`+�&�&�
%9�%9�
%�
%�	%�|+�P�%�%�
%�|+�PTX�%�%��%�%�
%�	%��%�%�%�%��%�%�%����v+�%�%�%�
%�w+�
%�%�%����v+�%�%�
%�%�w+Y�
%F�
%F`�%F�%F`�%�%�%�%�& �PX!�j�lY+�%�%�	%�	%�	& �PX!�j�lY+#�
%F�
%F`a� c#�%F�%F`a� c�%TXY�
& �%:�&�&�& �:�&TXY�& �%:��# #:-,#�TX�@�@�Y��TX�@�@�Y�}+-,��
��TX�@�@�Y�}+-,�TX�@�@�Y
�}+-,�&�&
�&�&
�}+-, F#F�
C�C�c#ba-,�	+�%.�%}Ű%�%�% �PX!�j�lY+�%�%�% �PX!�j�lY+�%�%�%�
%�o+�%�%�& �PX!�f�hY+�%�%�& �PX!�f�hY+TX}�%�%Ű%�%Ű&!�&!�&�%�%�&�o+Y�CTX}�%��+�%��+  ia�C#a�`` ia� a �&�&��8��a iaa�8!!!!Y-,KR�CSZX# <<!!Y-,#�%�%SX �%X<9Y�`���Y!!!-,�%G�%GT�  �`� �a��+-,�%G�%GT# �a# �&  �`�&��+����+-,�CTX�KS�&KQZX
8
!!Y!!!!Y-,��+X�KS�&KQZX
8
!!Y!!!!Y-, �CT�#�h#x!�C�^#y!�C#�  \X!!!��MY�� � �#�cVX�cVX!!!��0Y!Y��b \X!!!��Y#��b \X!!!��Y��a���#!-, �CT�#��#x!�C�w#y!�C��  \X!!!�gY�� � �#�cVX�cVX�&�[�&�&�&!!!!�8�#Y!Y�&#��b \X�\�Z#!#!�Y���b \X!!#!�Y�&�a���#!-@�?4>U>U=(�<(�;'�:'�9'�8&�7%�6%�5$�4$d3#�2#�1"�0"�/!�. �-�,�+�*�)�!� �����@�[@�[@�[@�[@�ZKUKUYY
KUKUYY2UK
UKU2UYp
YY?_����Y?O_�	dUdUYY_�@@���T+K��RK�	P[���%S���@QZ���UZ[X��Y���BK��SX�BY�CQX��YBs++++s+s++s+++++++++++++++++++++++++++++++++++++++++++++++�
�;�������+���
��'%(����J�222222Pj�6�0Rv�����Jx�:|��V���:�$b��"Hh���		<	T	~	�	�

d
�
�B`���$:Rl|��
@
|
�R���,Tx��6���Dx��4f���88R�d��DL�$Rfv��"J���"dt|�� ���� 2DX�������0j|�����"4FXj��&6H\��
.@P`p���(8Jp���   & p � � � � � � � �!!!&!8!J!\!n!�!�!�"0"B"R"d"v"�"�"�"�"�"�"�"�###0#B#V#h#z#�#�#�$
$$,$<$N$^$j$|$�$�$�$�$�$�$�%%(%:%L%`%t%�%�%�%�%�&&&0&D&X&j&|&�&�'''.'@'R'd'v'�(H(Z(l(�(�(�(�(�(�(�(�)))&)6)B)N)`)l)�)�)�)�***&*8*L*`*r*�*�*�*�*�*�*�*�+++,+>+P+`+�+�,,,0,D,�,�-~-�-�-�-�-�-�-�-�-�....&.8.J.�.�.�.�///(/:/L/\/n/�/�/�/�/�/�/�/�00 020D0V0h0x0�0�0�0�0�0�0�11*1D1\1t1�1�1�1�1�242<2D2L2`2�2�2�2�2�2�2�2�3
333"3*3^3f3z3�3�3�3�44$4<4f4�4�4�4�55$5H5X5p5�5�5�5�66666�6�7777b7t7�7�7�7�7�8.8r8�8�8�8�8�99:9B9X9�9�9�:&:H:Z:�:�:�:�:�:�:�:�:�;&;x;�;�;�;�<"<X<�<�==`=�=�=�>6>L>�>�>�??2?B?h?�?�?�?�?�@@@(@Z@�@�@�AA*ATA�A�A�B6B�B�B�B�C*C<C�C�C�C�C�C�D*DfDxD�D�D�D�E6EnE�E�E�E�FFF.FjF�F�G<GVGnG�G�G�H:H�H�I(I4IlI�I�JJ:JnJ�J�J�J�K&KTK�K�L\L�MMPMdMxM�M�M�M�N6NpN�N�N�N�OO>OlOtO�P>P�QQ"Q4QFQ�Q�Q�Q�RRR$R8RpR�R�R�R�R�R�SSS S(S:SJSRSZSlS~S�S�S�S�T
THTZTjT|T�T�T�UUPUbUtU�U�U�U�U�U�U�VVV&V8VJV\VnV�V�W*WpW�W�X.X�X�X�X�X�X�X�X�X�X�YYY Y4YHY^YtY�Y�Y�Y�Y�Y�ZZ$Z:ZPZbZrZ~Z�Z�Z�Z�Z�Z�[[[,[8[L[^[p[�[�[�[�[�[�\
\"\:\R\j\�\�\�\�\�\�\�]
]]6]N]f]~]�]�]�]�]�^^^6^P^h^z^�^�^�^�^�^�^�__ _2_�_�_�_�_�_�```,`@`T`h`|`�`�`�`�`�`�aa&a:aNada�a�a�a�a�a�a�bbb(b<bPbdbxb�b�b�b�b�b�cc$c8cJcZcnc�c�c�c�c�c�c�dd2dDdVdhdzd�d�d�d�d�d�d�ee e0eBeTefexe�e�e�e�e�e�e�fff(f:fJf\flflflflflflflflftf�f�f�f�f�f�f�gg$gHghg�g�g�h�h�h�h�h�h�i>ifi�i�jjtj�j�k(khk�k�l"lnl�l�m0m�m�n"nVn�oXo�ppJptp�qqxq�q�r8rnr�r�s6s�s�t$ttt�t�u`upu�u�u�u�vBvfv�v�v�v�v�ww�w�xx6x\x�x�x�yyZy�zz�{2{\{�{�||`|�|�|�}4}V}�}�}�~d~�~�$Pr�����,�P�d�������f�����6�P�����Ƃ��0���������������N�V��������$�,�4�t����L������������T���Ĉ�D���ވ��f���‰ʉ҉ډ����
�H�r�����"�f���ʌ,�v���ލ�j���֎&�<������.�V�x�����Ώ����$�0�<�H�T�`�l��2.�%#!"&543!24#!"3!27.!�@�4��

a�i4�
���8��
��i\��@
rr++23/017353\DDD���ppE
����?3�20153353E;$;
����%��?@		?3?399//333333333301#3##7##7#537#537337337#��/��2:3�2:3q~/��1:2�1:2t�/�/��6����6�3������&��C/>@@ .26:!
::++!!	?3/33332?3/33333901%#773.#"#".'732654.'.54>32!..&*..�)1: ]W*WEKo;%E^86fY(#5AK(U_/`GJe4AsI/QE��|�}�cG=*0,K@1H0-#9#>=,5"*E9B[/$(����/?E)@@EE8((0 	rCBBr+22/32/3+22/32/301".54>32'2>54.#"".54>32'2>54.#"		�)D))D))D((D)--,-j)D((D)*D((D*----�M#����&B'(B&&B'(B&'00//�&B((A&&A((A'(/00/T[����/����<@,;	$	r3	r?+2+2901!.54>3232>53#".54>7>54&#";��+4/Q2/K,3Q1)E(2M)6[D%:0UsC>h=3Q-.G(:-!4.+�u.A5,F*#?*-G=9@),=1Wp?L�d91V:6QA35'2.%7-�eE	����?�0153E;	��,�����
//01467.,R:4-'D;3*?#Zf�bXeh0N�[?�� �����//01'>54.'7�"@*2;D(,5:QZ?��?[�N0heXb�>� @
		�?�2923017'7'37'W+DE)ED, *+">$II$>AA4�k�	/3333301##5#5353k|?||?8��8��P���b��/�99017#53VBQT__TA�e0�/20175!A$�??A|b
�r+201353A;bb@��rr++01	#@�(M��:�7��-U�r
r+2+201#".54>324.#"32>-ArHHqBBqHHrAE.R66R//R66R.%X�NN�XX�OO�XGl==lGGl<=k.�;@
rr+23+22/301%!53#52>73����&1062"F>>>�B"�,�E)@
r'r+2+2990134>7>54.#"'>32!,"B6>7!;, 4(	+#7K-=W.#7;/@&f"ED?#-0	/"+H*);+,-+>&�m�@.@'r/3+29/3301%#"&'732654&+532654.#"'>32W-@$:hELr/V@JW[TMR&A*9W,@V1>^6 ;�2L0<\2=6++5IDDQ:H8)63-*#4-P6(D.��;

@
		r/+9/9333015!533#%!d��c.XX���<�6>��_#�k�;"@
r/2+29/301"&'732>54.#"#!!>32Kz-a:2O/-M0.T?OW��1L,Ai>Cp�K="1<,N31K*)'�?�:fBFj;4��/�.@'
r/3+9/3301%4.#"4>327.#"32>".54>32/AoD-O:1X;8[,pGNvBBsJGrC�3T32U32T33T�Cm@ :'b�J=3(=G^��\�GBou2T23S22T22T2"��
G�r+2/01!5!#����N?�:2���!3C@''88@0
r+2/39/39901%#".54>7.54>324.#"32>32>54.#"EqCGn?+A"6 '@O('OA'!6 'A'E5? +Q34? +Q4��/H"$G/,G(&G+�>\39^:-I2
+:#,C/.C,#;+

5H($7&%C.#6'%Dp&77'&67$�f;.@
'r/3+29/30132>7#"&'32>54.#"72#".54>$ApC.N<1W<7\,qFNvBAsKFsC�2U22T32U33TGCm@ ;&b�J>2(=G^��]�GBnt2T22T22T23S2A{�
rr+2+2015353A:::�bb�\bbF���
@
	?3?3/3301537#53F:4B�bb�T__T!���@	/3/3901%
%!���@�]�I��K�D�rf�/3�20175!%5!D.��.�11s117���@	/3/3901%5-5�]@����K��I�"��$(@
&&%
r+2?33/0174>7>54.#"'>3253�%1+'>##?0/AR+%F7!'0*9;�,?.#3$,9.):0G1(7'
 70�kk/�n
[Uh)@^'1
fEL '�;/2�2|/3�22/339/3012#".'#"&54>324.#"'>3232>54.#"3267#".54>>=.#"326�J�e:6(!#
Y5GO8U,,C61'H$R.8A 
)	1ZxFEx\41YxF*J%
(U*K�d9=h��	
C0#?'02[7e�U:B;&**L:3:0H)'$=H$�.*@FI}^52[}IG|^5 8e�QU�b5��
!&()$*
��
D@'	
		
	

rr++29/33399<<<<013#'!#5;'J\��[KՏ��:��_��Yo�&@rr+2+29/3901%#!!24.#!!2>32>54.#o6[6��V2I'60=GF 7#��	$:#�v�#6 4!�5S/�5S-5Zb5$=&��&=�%<"$;$*����$@ 	r	
r+2�2+2�2014>32.#"32>7#".*-V~P_� 7FO'@bC"(Ha9(TI:\q6IzY0hA}g=WD"/73Ui6;lS1:.5J&?i�Y��
@	rr++2301332#4.+32>Y�q�LS�h?xW��Xx>�_�bl�XdU�K��N�Y6�@


rr++29/3301%!!!!!6�#�r[��>>�>�;��Y+�	@rr++29/3013!!!!Y�tN���>��:��*���� &@#""
%r
r	r+++39/3201".54>32.#"3267#53#vGzZ11XxGi�"6"rF;_D#(Ja8At5eZ��;=h�DH�d:VE$B>2Tj9<kS/ADJz,6��Y��@
	rr++9/32301#!#3!�E�[FF��:L����<Y���rr++0133YF�:�����
r	r++301732>53#"&'"E-4@"F.\L1L Y#GjGw��P�`4Y��@
	rr+2+2901333	#YF�M��1O���d���rd��Y9��rr++30133!YF��x>Y�@	rr+2+2901!##3	3��,��FHGB�?�����:Y��	@r	r+2+29901#33#�F:�FAE����O�;*����'@	#
r	r++2301".54>3232>54.#"wKzX02[zGKzW02Zz��&Fa:=aE$&G`:<aE%<g�DG�e;>h�CG�e:h:kS13Uj7:jT02UjYR�
@rr++29/3013!2+32>54.+Y&.M8 3\>��*>"(A'��&AO):g@��D.J+,J+*����'+@

*r
r	r+++3301".54>32'2>54.#"73#wKzX02[zGKzW02ZzG=aE$&G`:<aE%&FazE�E=f�DG�e;>h�CG�e:?3Uj7:kS13Uj7:kS1��Yg�@
r
r+2+29/33013!2##32>54.+Y,.L9'G0�O���*>"'A(��&AO)3Z>
����D.K*+I- ��=�2@*".r	r+2+29901.#"#".'732654.'.54>32�(29 ]W)XDLn<&D^87eZ'#5AK(U_0`FJf3ArJ/QEAG=*0,K@1H0-#9#>=,5"*E9B[/$Q�@	rr++2301###5!Q�F�@��x�>O����@	
r	r++3201".5332>53zTtDE4XBDY3F Gr<e�Df��7jT13Ti6f��G�b:
��@	rr++29013#V��I��@����o�:��$@
r

r+2+2/2/29013733##3dBdeC|�L��>��=��K�������u�:_����As�@
	r	r+2+29013	##	U��O��O��P����5����+��^h{�@rr++29013#]��L��F����~�B��
�S�	@	rr+23+23017!5!!!�%,�#��7Q>7��>X�����//32013#3Xw77(9�f9��rr++01#i�L�L�:�2�����//320153#53288x(9�9��+/���r+2�2013#+�:�<��/��iW��A����/3015!A}>>>1l����/�90131G<,�]!���'8+@!66$/$r
rr+223+2+9/3330174>3254&#"'>32'./#".%>=.#"326!8cA&R NE*Q,3b3`p
#p:2Q-]"I%IZ:'1U�1G',BN0##na�
6&-1+I
L
:23!&K��A�'@rr
rr+2+++201"&'#3>32'2>54.#"J=h=D#bA7W> %DYE*H4/S8(E5"38
?0e��5A.Ma37`K+<"<K(7a;$;#�/"'�� @		rr++2301".54>32.#"32>7-9_G'BvMIpBO04V34V4"?/CAW
+Lb7JzHC9(-6^<;`9)%;!(��7�/@+!
rrrr++++332014>323'.=#".5.#"32>(=lEAgD j96[C%�
:I$*D16F)83"J{JE1>�x
6 33<,La�$;##<L(*L; #0'��-%!@i"	rr+2+29/]3901".54>32!3267!.#",8`F'CvKMsB�B5U23[;BY��5U33T5
+Kb8IzIJyH8W34*%<!'9V11Wk�@
	r
r++2|?333013#5354>32.#"3#dHH%E/:
*/3���6@\11JF6�-(�!"6!@#-
rr
rr++++33301".54>3253#"&'732>='2>75.#"5ZA$#AX6Cc"=EuEYn#*g:3U3h&90 8G&,E/5G,K`37aL+D2m��Hc2@6!10%J8g1;9%.�&;!%=L&*K; K�@	rr
r+2++29901!#4&#"#3>32D>:&K9DDo?-?'#XY'C+����:E =Q3K���
??�2013353KDDD	��vdd���K���
r/2+�201"&'732>5353!;!'*D,F.D�.
+$��.H(+ddK	�@
	rr
r+2++901!#33��oDD'K��h����N����rr++20133267#"&5ND$
7.7��'7
6/KR$%@rr

r+22++293301!#4&#"#4&#"#3>32>32RD:9;]D8::^D>!g?AP	$e@,=%#[VTB��#\URC��	v=BJ<BD ;S3K@	rr
r+2++29901!#4&#"#3>32D6:(N;
D>DV.+<$#\U'C+��	v&9  ;S3'��,#@	 
rr++2301".54>3232>54.#")8_E&&F_88^F&&E_�3V44V44V44U4
+Ka68aK++Ka86aK+:_78a9:`8:_K�+A'"@$#rrrr+2+++2901"&'#3>32'2>54.#"UAgD=h;6ZB%;jZ+D16F)83"6G
D2���e1=-La4I{J<#<K(*L:"%.�%;#(�+&"@rr

rr+2+29++01".54>3253#'2>75.#"5W>"&C[4=g=DMd)C3"2:+E41T
,La57aK+?0f�"Av<!8"�1'$<L'8`9KO@
r
r++?33301#3>762ODgD@Y2
�H?��	}7D ���+@
rr+2+29901"&'732654.'.54>32.#"�@n(,Y2=L%E06I%3Y7<\!M/ :%8);X0n
*+0)%1.!!3)3C#&". '"!4/IR��E�@

rr+2+2�3301%#".5#53533#3267E"03HHDxx%.-!u6��6��F��	@
r
rr+2+2+299017332>73#./#"&FD=<(K:D"uDRT�2��YX#A+H�I
6F<Dr	@	r
r++2901333��G��C�	�;��	 @	

r
r+2+2229013##37'373�C�;ml;�B�`X=BC<W`	����	�=�ש����	@

r
r+2+2901?3#/#[��M��M��M��	�������� 
	@	
r+2?399017>733&'i�H��D��)	
�DB	�=�`!�		@	
rr+23+23017!5!!!]�����Z�W.�3.�X35�����//33013#"&54&'52>546;�7^^���$
%��9
!49V�~��//013V;���w2�����//33015323+53467.52^^7

�9��4!��
9%
$B��X�
�	/33�220174>3232>53#".#"B(43
++!!7/
� &%[����
�
?/�201#7#5�DDD���pp+��
�)'@%%

$$?3/333?3/333015.54>753.'>7#3U?"9hH%JeAH+<0CHT%�*J/'=*xo0L[0DwNttA8)(�_(*:nz1X<�&;G4����:'@%::(77,3	rr+2+29/3232/3301!!>54.54>32.#">323267#".#"4P��.6'1R26a(N) 5'.&$.,*946:t6��.G? -IBD&/N.81*)1 5!!?@K/!?B*				4


5}�'"2�'//3/301>327'#"&''7&5467'732>54.#"�9!!9F"HIJ:!!:GG$F!;!8""8!!8"!9!�G!H99HEEG2=9G!�%<#$>$&<##>��.@

r
?+29/93�22333013#3##5#535'#5333�To!��F��pV�L��Mn060��040X��~W�~��//9/�01##�<<<�i��i�/����?R!@F=I@MP8 
1'r/3+2901%#".'732>54.'.5467.54>32.#"2%>54.#"&'�&<F""=1(-%I*!=(&;8Y29Z0%:-!6*2!<&K9$G;"��2;7
*>.�5&-C,!*#!2#'%%G3->(3M+"
1"9,&:+2|%*'&+%��=y��0���'L@
:2
rD(`	r+2�2+2�201".54>32'2>54.#"7".54>32.#"32>7�O�c77c�OO�d77d�OFwZ32YxGFxY11YxN.TA'8V:BgB
-0(<'/94,
B
4P6b�NM�a66a�MN�b6%/VvHEwX11XuFEuY1]!=U5*SD)963= *@,"6&0Zy�#2+@*-!')$�@�?3�29/93332/301"&5463254&#"'632#./'2676=.#"�1ETA:+2-8FEFP	
	I!80-9-Z?/0=+2%.ID�
4"-4	%()B��
$@
	/333/3933017'?')���������;��;�%�;��;�I~l
�/�301#5!5<��l�>A��0�/20175!A��??0���&6?%@?0446>'
r26`	r+2�2+2�29/3301".54>32'2>54.#"32#'##72654&+�P�c77c�PO�d77d�O\�W1YwGGwY11XxR�(<#.o:ju5�(+1&�6b�NM�a66a�MN�b6$R�`EvX11XuEEwX2'*B# 9(����8(*5���6�W��2.���	r+2�2014632#"&7327>54&'.#"21"#00#"14



	�#//#$01A

		H=�@	/3�2/3333/0175!##5#5353HC�?��?=99L9��9��$�]+"@B D?2�29014>7>54&#"'>323$7+@+33!2"
'F0II,0,,��4E.%+!D3*)*+#�_+,@
&BD?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-I�0)#' #')" !'"2"-	9&"2��1l���R�,(	!@ 	rrr+2+2+299/01332>733#.=#".'#RD=>'K:D>N*2 
D	��YX#A+H�O< B#;"&��"��-�#@

r+233/39/3330146;####.7%#3"���F<J;Pu?;7\6bgNJJ�q�6� 7��7:jK>P)scd��A�|f�/�01753A;�pp��#�L��"��+@	

BD?33�22301#53#52>53��Q!',-�--5-��,Z����@�?3�201".54>32'32>54.#"�5R-.Q56P/.Q�"7"#7!!8"!8"Z2T01T11T10T2�%<#$=%%;$#>?B�
$@

	/333/393301%57'557'5���������;��;�%�;��;���"����&'c	�"����"392@76613&&%%1499 r+22/392/3/9/333/301!4>7>54&#"'>323#53#52>53		�6*=*21!0"
&D0GF*/+,��Q!',-x#���4E.%, !D3+**,s--5-����T[������#��t�&'c�	!�+��$(@	$$''(
?3?33/0132>7#".54>7>57#5>%0+'?"$>0.AR+%F8!&1)8:0,?-#3$+:/):0G1(7'70�kk����&&����/�01����&&���/�01����&&����/�01����&&�y��/�01����&&���
�/��01����&&����/�/301����-@


rr+23+99//333301!!!!!!5!#��vT����)���L���>�>��>��V����*�L��&(����Y6�&*����/�01��Y6�&*�
��/�01��Y6�&*����/�01��Y6�&*���
�/��01����&.�����/�01��Y��&.�5��/�01����&.�����
/�01����&.����
�/��01"��@rr+2+29/3015!32#4.+32>"-��r�KS�h?xW��Xx>J66���_�bl�XdU�K��N���Y��&3����/�01��*����&4����+
/�01��*����&4�2��(
/�01��*����&4����.
/�01��*����&4����(
/�01��*����&4���
�,(
/��01@l��&@
		/33/33392301%''7'77�,zy+yx,wy+x�+yy,xy+xy,y��*����&4J��O����&:����/�01��O����&:�4��/�01��O����&:���� /�01��O����&:���
�/��01��{�&>����	/�01Y?�@



rr++99//33012+#32>54.+l/L93\=�FF�+="'B'�9&@P*9g@yƍ�.K)+I-��K���-@%		-r
r+/3+29/33017>54.+532>54.#"#4>32�]p+K1#7"7",<A4Z:5T10JS(He>9KM/G'>3"$1(C*�;Z2(I/#@-kI3N5��!����&F�y�</�01��!����&F���9/�01��!����&F�b�?/�01��!����&F�.�9/�01��!����&F�c
�=9/��01��!����&F���KBB/�/301!���7IR/@NR%C%%r)118r+223+299//332301".54>32>7.#"'632>32!3267#"&''26767.'.#"%.#"�1N-7b@#E	K<'T,g^A\ h?LuC�;7X43[<BY3Dp#LX5Z	@ HZ!8�5U64V4
+I./F(	(5= -D71/9JyK8W34*%<!?4)24(!5

<1 5�9X22X9��'�L&H����'��-�&J���)	/�01��'��-�&J���&	/�01��'��-�&J���,	/�01��'��-�&J��
�*&	/��01����&����/�01��K��&��&�/�01������&����
/�01����&���
�/��01*��/�+3"@(/0.-12,3 ?3?9/9301#".54>32.'332>54.#"'?/*I^6EuD&CY3Bn#BmR`Rj=�@2U46V43V44W3�fzxjAiL)AoC1WC&A40^]]-0qwwc2S15W32O/2T�?LIB��K�&S�O�/�01��'��,�&T���'
/�01��'��,�&T���$
/�01��'��,�&T���*
/�01��'��,�&T�P�$
/�01��'��,�&T��
�($
/��01CJ��@
		/3/333/2015353'5!�;;;���[[��ZZ�99'��,#'+/&@+-,*%&)(//
r''r+22/+22/901".54>32'2>54.#"77'7'73)8_E&&F_79^F&&E_94V44V44U43V�@)-3(�,,)>
+Ka67bK++Kb76aK+<8a9:`89`;:_73R9>z9��F���&Z���!/�01��F���&Z���/�01��F���&Z�}�$/�01��F���&Z�~
�"/��01��� 
�&^���/�01K�+5�'@rr
r#r+2+++201#"&'#3>324.#"32>5(E\67WEET=:[@"F-Q6(A1 19)D35cL-6$�����(:0Pa18`<"8 �-$#<L��� 
�&^�r
�/��01����&&����/�01��!����&F�B�9/�01����&&����/�01��!����&F�z�@/�01���J��&&����!�J�&F�?��*����&(�3��%/�01��'���&H���!	/�01��*����&(����+/�01��'���&H���'	/�01��*����&(�(��%/�01��'���&H���!	/�01��*����&(����*/�01��'���&H���&	/�01��Y��&)����/�01��(����&I�2V+4"��@rr+2+29/3015!32#4.+32>"-��r�KS�h?xW��Xx>J66���_�bl�XdU�K��N�(��e�3(@ !/r
rr%r+2�2++2+2901534>323'.=#".5.#"32>i���=lEAgD j96[C%�
:I$*D16F)83"i..��J{JE1>�x
6 33<,La�$;##<L(*L; #0��Y6�&*����/�01��'��-�&J�c�&	/�01��Y6�&*����/�01��'��-�&J���-	/�01��Y6�&*���/�01��'��-�&J���&	/�01��Y�J7�&*����'�J-&J����Y6�&*����/�01��'��-�&J���+	/�01��*����&,����-
/�01��(�!�&L���=
/�01��*����&,����.
/�01��(�!�&L���>
/�01��*����&,� ��'
/�01��(�!�&L���7
/�01��*�9��&,��*��İV+4��(�!�&L���;
/�01��Y��&-����/�01��K�&M����/�01,��!@


r
r+2+29/33/3015!'#!#3!,�2E�[FF�55��:L����<�@
	rr
r+2++2�2990153#4&#"#3>32��D>:&K9DDo?-?'i..��#XY'C+����:E =Q3�����&.�����/�01�����&����
/�01����
�&.�����/�01������&����/�01����&.�����/�01����&����/�01��!�J��&.�����J��&N���V+4��Y��&.�+��/�01K�	�r
r++0133KD	����Y����&./���K�Kp�&NO�������&/����	/�01�����K��&����/�01��Y�9��&0�����ΰV+4��K�9	�&P�����ΰV+4K		@
	r
r+2+2901!#33��pDD%M��h�	�����Y9�&1�3��/�01��N���&Q�*��/�01��Y�99�&1���	��ΰV+4��N�9�&Q�S���ӰV+4��Y9�&1H��N��C�&Q��V+4��Y9�&1{-f��N��*�&Q{���V+4@�	@
rr+22/3+2/3017'%3!&1�F��(�'��x>
��$�@
	rr+23+22301'7'33267#"&5!��D$
7.7!'�'���'7
6/��Y��&3�>��
/�01��K�&S���/�01��Y�9��&3�*�
��ΰV+4��K�9&S�����ΰV+4��Y��&3����/�01��K�&S���/�01�����&S,�%�/�01Y�K��@
rr++2/3901#33#"&'732>=�F5�E-F'!:"'*C����K�".F(.
+$K�K%@rr
r/2+++29901"&'732>54&#"#3>32h!;!'*6:(N;
D>DV.+<$,F�.
+>\U'C+��	v&9  ;S3��.H(��*����&4����(
/�01��'��,�&T�c�$
/�01��*����&4����/
/�01��'��,�&T���+
/�01��*����&4���
�,(
/��01��'��,�&T��
�($
/��01*��X�2%@r)r	rr+2+2+29/3+201%!5#".54>325!!!!2>54.#"X�(Og<J{Y02[zG>hL�wS����<aE$&G`:<aE%&Fa>>�5S1<g�DG�e;1U3�>�>��3Uk7:jS13Uj7:kS1'���*:C%@C?3r##+r+223+2239/301".54>32>32!3267#".''2>54.#"%.#"(HuDDvI3XBwOIpD�B7X46[:DX12ZGDV15V33U54V43V�6U33S3
GzKM{H)I3NWCyR6X44*&;!)I13I'<8_:<_89a;:^7�9X22X9��Yg�&7����/�01��KO�&W���/�01��Y�9g�&7�����ΰV+4��I�9O&W����ΰV+4��Yg�&7����!/�01��KO�&W�$�/�01�� ��=�&8����3./�01�� ����&X���,/�01�� ��=�&8����9./�01�� ����&X�S�2/�01�� �L=�&8���� �L�&X�T�� ��=�&8����8./�01�� ����&X�S�1/�01���LQ�&9�����LE�&Y�.��Q�&9����
/�01����k�&Y�!`�@		

rr++9/333015!###5!L�*�E�?455T�x�>��F�@

r+2?�3333/30153#".5#53533#3267!�4"03HHDxx%.--�-!u6��6����O����&:����/�01��F���&Z�I�/�01��O����&:����/�01��F���&Z�]�/�01��O����&:����!/�01��F���&Z���%/�01��O����&:����,##/�/301��F���&Z���0''/�/301��O����&:���
�/��01��F���&Z��
�"/��01��O�K��&:���F�J	&Z�i���&<�e��/�01���&\���/�01��{�&>����/�01��� 
�&^�q	�/�01��{�&>���
�
	/��01��S�&?���
/�01����&_���
/�01��S�&?����
/�01����&_���
/�01��S�&?����/�01����&_�Z�/�01���� )@&&r!	r+2+29/301".5467!.#"'>32'2>7!mGy]3K,GY30WBBYr=DxZ43[wEEpF��Hs7b�J
9bH(#?)3N-9c�LK�a7?EwMLxE�K��&@
"r/2+29/33301"&'732>5#5354>32.#"3#� ;"'*II%E/:*/2��-F�.
+�6K@\11JFM6�Q.F(��*���&4�~��(#V+4��'��,^&T�6���$ V+4��O��&:�I��V+4��F��q]&Z�����V+4Y�	&3@r
	#""!& �%r+23��2923?33?3+201%!5!!)32#4.+32>7#'��%-�"��p�q�LS�h?xW��Xx>hUU'c2b7Q>7��>�_�bl�XdU�K��N��??UUY��
&3@#""!& �%rr?2+2+23��2923?3301332#4.+32>!5!!!7#'Y�q�LS�h?xW��Xx>�]�����[�V�UU'c2c�_�bl�XdU�K��N���3.�X3�??VV(��6�/9@A@$0669
=<<;@:�?23r+r

!r+2??3+29+2��2923?33014>323'.=#".5.#"32>!5!!!7#'(=lEAgD j96[C%�
:I$*D16F)83"�\�����[�W�UU'c2bJ{JE1>�x
6 33<,La�$;##<L(*L; #0k�3.�X3�??VV��Y����&1/G��Y�K��&1OG��N�K��&QO��Y����&3/��Y�K��&3O��K�K��&SOG��*����&,����,
/�01��(�!�&L���<
/�01��*�O��&4�
��'�J,&T����Y�&)?���Y��&)_���(��7�&I_n��*����&,x��'
/�01��'�!�&L�x��7
/�01��&Q@,
	

	

			!
?3333332??9/333//9<<<<01'733#'!#4632#"&7"32654&l.<H�;'J\��[KՏ�83&'33'&3Y;Y�:��_���&..&%..W��!����&F'������QKBB/�/3301������&����/�01��!����&����S/�01��*����&4&J�2��,
/�01��'��,�&����0
/�01����&&���
�/��01��!����&F�I
�<@/��01����&&����/�01��!����&F�z�=/�01��Y6�&*���
�/��01��'��-�&J�j
�)-	/��01��Y6�&*����/�01��'��-�&J���*	/�01������&.����
�/��01������&���
�/��01����&.�����/�01����&����/�01��*����&4���
�+/
/��01��'��,�&T�k
�'+
/��01��*����&4����,
/�01��'��,�&T���(
/�01��Yg�&7�r�
�#/��01��/O�&W�

�/��01��Yg�&7���� /�01��KO�&W�<�/�01��O����&:���
�!/��01��F���&Z�d
�!%/��01��O����&:����/�01��F���&Z���"/�01�� �9=�&8���6��ӰV+4�� �9�&X���/��ذV+4���9Q�&9�����ΰV+4���9E�&Y�t���ӰV+4��*���H&4'�������0�,,(
/��/�01��'��,�&T'���c��,�(($
/��/�01��*���Q&4'�������D�((
/�/�01��'��,�&T&�P�c��@�$$
/�/�01��*���Q&4'�'�����,@((
/�/�01��'��,�&T'���c��(�$$
/�/�01��{�&>���	/�01��� 
�&^�Q�/�01���K�	�
r/+301"&'732>53 ;"'*D-E�.
+$��.H(��$%@""rr+2+29/301".'467!.#"'>32'2>7!"KvC�6T24Y;BY39_F'BtL4Q4��6V
I{I8W24)&:"+Kc8IzH43X89X2��E	��_��E	E�`��"Ta��1l����/�901'73^-;Hl]#K|�
��/3�20152654&#52#'22K"#/%%.#K|�
�
�/3�201"&5463"3|&33&K.%%/#��*p!����*p!��Wp��//01#�<�i�6�W��/3015!6!�//E	��
��/�0153E;	��E	��
��/�01'3];	��W�~��//01#�<�i���+u�����2yp����#K�����5�J��,vj���/22�2201".#"#4>3232>53*"*$'%*'~!"��+l!��1l����/�30131G<,�]1l����/2�01'73^-;Hl]*p!���/3�9330173'*b2c'UU�UU??:vx�@
�/2/2�22/01".#"#4>3232>53*"*#'%*'~!"6�W��/2015!6!�//+u��
�
�/3�2012673#"&53�!)9))9*"�&*;;*(2yp��/�01532>yaa=y��/2�20153353=:[:y^^^^�`w��
�/3�201'>32'>54&#"&!"

�&'

#K����	/3�2014632#"&7"32654&#3&'22'&3Y�%//%%..V+l!���/2�23301'73'73P%9@*&9@l]n]*p!���/�2923017#'PUU'c2b�??VV%l���/333�2013'3�?9%�@9%�]n]+u��
��/3�201"#4632#.�"*9))9)!�(*;;*&"Ta���/�99013#57^?�@FF@2�����/2�017267>732!&
	:
&0�3!
	2�Wp���/�01532>�aa=�W���/3320153353=:[:�^^^^9�9x����/�9017#53<?�JLLJ#�L��
/3�201"&'732654&'7�=&!$$"'08�'
'3'(-5�J���/3�2014673.5--)%'%+/i;-- +�h��
��
/3�2012673#"&53�!)9))9*"u&*;;*(6�W���/3015!6!�//2"E�/301532�--p�@
rr+222+201	!5!a������o55��x6-��-#@"r,,r+223333+201353.54>323!5>54.#"-�8R,1XxFGxX1,R8���2M7$C_<;_C$6N1>]tAE~b99b~EAt]>>>T_05fR11Rf50_T>>K�,!	!#@ 
r
rrr++2+2+2901332>733#.=#".'KD=>'K:D>N*2 
���YX#A+H�O< B#;"&����4	@rr
r++233+201##5!#3267#"&5�BP
n 
7-6�5�>>��!7
6/l��Y6����Y6�&�l��
�/��01����#!@rr	r+2++239/301"&'732654.#"##5!!>32�+!HR,M0._.D���/c1Cg;u9OR8L&���==��7gHpl��Y��&�����/�01*����'@
r	r+2+29/3901".54>32.#"!!32>7zH{[2,XSa�!7FR)<`C%M��*I_7*WJ:^r<g�GA}g=WD"/7-J]/:8dM,;-5J&�� ��=�8��Y��.����&.l���������/&����&#@&		rr++29/3333015>?!32+!%32>54.+&'9'��Le32cJ��'7C	�9G F?�>/l�����6a?<a:��|�m<=,H((G,Y��'@rr++9/3333320133!332+!%32>54.+YFoF�rr2cJ����9G E?���1��oZ8_8W��;*D&%@(��@

rr+2+239/3013#5!!>32#54&#"�����*^3ppDMY1b�==�js��UO����Y`�&�����
/�01��]��&�����
/�01����oy&����/�01Y�xa�@
rr/++223015#3!3#?�F}E刈�x��:�����&Yn�
@rr+2+29/3013!!32#'32>54.+Y�j�up1cK��:F G@��>�mW9]7>*C$$?'��Yo�'Y���rr++2013!!Y����>�x&�x��@

r+2/�233301532>?!3#5!7!!&+�U>��D���&��.g���xƈ��J���i��Y6�*��)@rr+22+229/33399013	33333	####��R�aE`�R��Q�bEc�nX��<��<����J��J��-����-@' r	r+2+29/3901"&'732654.+532>54.#"'>32It!6V8LY%D0DE%8 #?*3N3gH=[552?E<i	?8!,0OB*A$8#:$':".)"7>/S86WbA>Y0]��	@	rr+2+29901333#]E�AE�M��f�:[����]�p&���
/�01Y`�@r	r+2+29/39013333	##YFk�Q��V�m��<����J��&��~�@
	rr+2+2/301!!#52>?!9�� :T:'<*�����o/>(d���:��Y�2��Y��-��*����4Yq�@	rr++23013!#!YF�t�:��x��YR�5��*����(��Q�9��o�@	rr+2+299015326?33#�-��M�I��*&;A�/��)$*�#-@-$?�223?�22301!5.54>753'>54.'tDx[36\vBBCx[45]wAAHwG+J^sHwG*J^4B.RqDHqQ,55.RqEFrP-B|�?pM;\A#@pK;[B%��s�=Y�y��@	rr/++233015!3!33v��FzEV���x��x�E*�@	rr++9/3201!#"&=332673�:D'vpDQ[3aD2
gp��SLU�:Y]�@
rr++33220133!3!3YFFE�x��x��:Y�y��@
	rr/++23333015!3!3!33t��FFEV���x��x��x���@
rr++29/33013#5!32#'32>54.+Ѿ�Mf43dK��;G!G@��<��6bA;d:;-I(*H,Y��@
rr++9/3323013332#'32>54.+3YF�Mf32dK��;H!H?�E��6bA;d:;-I(*H,���;Y9�@
rr++9/33013332#'32>54.+YF�Mf32dK��;H!H?���6bA;d:;-I(*H,0����)@% r		r+2+29/3901".'732>'!5!.#"'>32N<oY;HV+:cJ'��l%Db>+QD:%�cQW.1Z}'J4,;0Tl::3eO08-#DW=g~BE�g=Y����&!@
rrr	r+2+++29/301".'##33>32'2>54.#"eZ�S�FF�U�Ua�RV�\Nq?BrJLo=?pS�c����e�P]�jq�V?M�V[�HK�WZ�IA$�@

rr+2+29/39013.54>;##*#3#"A�MS9hH�E
����1N*&I-nL9]7�:$��a($@,,D(��!���F;��9�'@ 
	rr+2+29/301"&54>?>32'2654&#":~� >[;��<P-lGLk8;qSYa_[4T1+R
��a�W8H;E>_L:?>nHLq?<gVTj,T>6V1J�	%@	%r
r+2+29/39013!2#'32>54.+532>54&+J,<(&-8)G.�+(ű(/%�	%:!*C
D0*>"1,+/,$6J�	�r
r++2013!#J7�	=�4��(	@

r+2/�233301532>?!3#5!7!#	&SF=�b4�y�F{^��4�yy��Z]}I��'��-J&�	)@r
r+22+229/33399013'3353373#'##5#&ðM�DFF�N��O�FFD��������������+@%rr+2+29/3901"&'732654&'#532>54&#"'>32�Hf8H3=I:359$75,;4[=2K+$ .32X72#'8/+4/('0#".4!=+%?F//D$J		@	
rr+2+29901333#JD==D���T�����[��J�&�x�
/�01J�	@r	
r+2+29/390133373#'#JDN�N��P�N	���������	@
r


r+22/+20152>?!##*!RD�/D>F{_����Zl�T$Jr	@
r
r+2+2901333##JF��CA�,�	��g�����F�]J�	@

r
r+2+29/30133!53#5!JD*DD��	������'��,TJ�	�r
r+2+2013!#!J�D��	���4��K�+AU��'��H�	@	
rr+23+013#5!#ͺ���==�4�&
	@rr+2+29901"&'7326?33�#.�H��D�,2�
042A�=��/<'�+��$/%@r/
r%
rr++223+223+015#".54>;5332+3#";2>54.+;Mr>?rLDLr?>rM[6T0/T�7T/0S7��HuFGvH��HvGFuH��7]98\55\89]7���	]J��'	@r	
r/+23+2015!3!33�`DDGyy	�3�3�:�	@

rr+2+9/301!5#"&=3326753u F(VWD9?#FD�X[��F@
���J�	@
r
r+23+2201333333JD�E�D	�3�3��J��	@
r
	
r/+233+22015!333333�lD�E�DGyy	�4�4�4�.	
@r
r+2+29/3013#5332#'32>54.+���YZ(M:��)23-��9�[J0N.6!53J[	@
r
r+22+29/3013332#'32>54.+3JDvY[(M:{r)23-p�D	�[J0N.6!53����J�	@r
r+2+9/3013332#'32>54.+JD�Y[(M:��)23-�	�[J0N.6!53&��#@

rr+2+29/3901".'732>7#53.#"'>32.WF7Y/5T6��0R9/Q5jK?aC"$D_	8(0.5Y40/T5(15B-M`13aN.K���&!@
rr
rr+2+++29/301".'##33>32'2>54.#"�Di?hDDh@iBMp>?qK6R-/R43P,-P
>mE�	�Hl<HzMOyE<6^=A^45_??_3$�
@


r
r+2+29/330137.54>;#5#735#"$�5A*M4�Dt���x4>3�MC-F*�����;-.@��'��-�&JE��)	/�01��'��-�&Jl�
�*&	/��01�G�-#@!%%r
r	/2++9/3�22301".'732>56.#"##53533#>32B'0
)'7#C8@SDKKD��!\<A[05O�
#'G`8Jc4A8�	.��.�35>wWF{]5��J��&����/�01'��"@
rr+2+29/3901".54>32.#"3#3267+;`D%"Cb?Kj4Q/9S0��4U5.Y7z	.Na31`M-B50)5T/04Y5.0<A�� ���X��K��N����&�l������K��O��	$@$		r
r+223+29/30152>?!32+#%32>54.+*!CpY[(N9��/D�k)22-j>F{_��UD-J*�Zl�T$90-J	#@r
r+23+29/3330133!5332+5!%32>54.+JDD{ZZ'M;��Ow)32-u	���UD-J*��60-�'@
r
r+2+9/993�223013#53533#>32#54&#"MKKD��b@`RD;G@W2-{{-�26hc���NN?:����J��&����
/�01��J�&����
/�01���&
�&�]�/�01J���	@
r

r/+22+2015#3!3#��DD�yy	�3��yZ�@
r+2/9/3�2015!332#'32>54.+|��E�Nf33dK��:H!H@�*77����6bA;d:;-I(*H,����'@

r
r+2+99//3333013#53533#32#'32>54.+f{{D���ZZ'M;��)22-�.��.�[J0N.6!53��
!@r
/22+29/3399013	!	####!!����O�cEc���alZ����H��H���&�	
!@r
/22+29/3399013'!#'##5#37!&̶���R�<F;�����>��������#���*����|��'��,}
��@
rr++93301!3>;#"5��I��76) !"���82<"$��/	@
r
r++9330133>;#"��E��73% !
�	�9c406&�r��]�l�p&� V@	V
/�01+4��J�lR�&���V+4R�@
rr+2+9/3�2015!332#'32>54.+G�E�Mf32eJ��;H H?�D--����6bA;d:;-I(*H,�@�
r+2/9/3�2013332#'32>54.+'5!�D�Y[(M:��)22-��Y�w[J0N.6!53�66SL�
'@rr++29/33333013!2+32>54.+7S&.M8 4[>��*="'A(��$�$�&AO):g@��D.J+,J+��C�+:(,'@rrr,++*))r+23323+++201"&'#3>32'2>54.#"?NBgD= g;6ZC%"?WG*D16F)83"6GP!�"
D2���e1=-La47bK*<#<K(*L:"%.�%;#^�Y�U�rr++�3013!53!YU>��Ə�xJ���r
r++�3013353#J�>�	y��4��	@rr++29/3015!!!v�����<11���>�x���		@r
r++29/301'5!!#9�7��..�	=�4Y��G�@
rr/2++29/301"'732654&#"5>32%!!n*+!GSYV.Y..b/qxu�����w:^aag>�{|w�>�xJ�H�	"@
!r
r/2++29/301"&'732656.#"5>32%!#7!"K@#>)&?#%H,8U0-Y��7�.
bTCQ$:2fONt>�	=�4�y��3@

rr/+2323+229/33399015#53%	33333	####�/n�M��R�aE`�R��Q�bEc���>ŇnX��<��<����J��J��&��	3@



r
r/+23+229/33399??015#53%'3353373#'##5#�,i�ðM�DFF�N��O�FFD�yy<�y����������-�u��1'@+$r	r/+233+29/390157'"&'732654.+532>54.#"'>32�<!It!6V8LY%D0DE%8 #?*3N3gH=[552?E<i����?8!,0OB*A$8#:$':".)"7>/S86WbA>Y0���L�&�|DY�y{�'@
		rr/+223+2/9/39015#53%333	##=/m��Fk�Q��V�m��>��<����J��J��	%@
		r
r/+233+29/39015#53%3373#'#�*g�BDN�N��P�Nyy<�y	������Yj�-@r	r+2+2/9/3/33/9013333##7#3YE��J�N�$$��?����M���>K
	!@r	
r+2+29/��390133373#'#7#3KC��K��M��h$$	�����	j�'@
r
r+2+299//3930153333	##�El�Q��U�nD--����<����J������)@r
r	
r+2+99//339+0133373#'#5!CD@�N��P�@�"�P�����D--��!@
r
r+222+29/390153333	##�El�P��U�n�<<�v��<����J��I	!@

r
r+222+29/3901533373#'#�DN�O��P�N�99�0	������Y�y��&�"T�V+4��J��F	&�!��V+4Y��@

r
r+2+2239/301'!%#!#3!�E���E�[FF��>>>�:L����<J�	@
r
r+2+2239/301'!3!53#5!�D7�[D*DD���==�4	����Y���!@rr+2/+2/39/3013!#!"'732654&#"5>32YF���*+!HRXW-Z..b/Lg6u�:��xw:^aag>=tR|J�HC	$@r
r
/2?++29/301"&'732656.#"#!#!>32{7!"K@#>) E#D��D�%N&8U0-Y�.
i[DP$��4	�2fNSzB4��)�6F+@C'rr0;;		r3	r+2+23333+2+201%#"&'#".54>73267.54>323267%>54.#")5{G0]%.\.V�n=.RqB
Ag9V�g)7Q,Q�^GsR,8nR"Hi)��4`@O�MCpCKp?\.44c�ZDz_6>I{Nd�O^{Ga�U2ZxGH�b2!�M}TO�U[x;Fz;��2B-@3%rr,;;	r/r+2+23333+2+201%#"&'#".54>3"3267.54>323267">54.!]1 : @!`�O$?S/
+C(;lJ	
?E@rKJm<]Z		/F �7T.&J38Y40O(
I�R3]G)66[8@i>!yMJqA?lEU�$�0W81[B?_8?R(*�u��'5.54>32.#"32>7\DpR,-V~P_� 7FO'@bC"(Ha9(TI:Oc2��Cg|AA}g=WD"/73Ui6;lS1:.0E(�'��"@	r!�r+�33+2015.54>32.#"32>7
Ch;BvMIpBO04V34V4"?/C8L-yqLvDJzHC9(-6^<;`9)!7#p���yQ�&�"!�
V+4�����	&�!��
V+4��{�>�+	@rr++2901533��G��B����6���
u�#@
rr++29/933301!5#535333#����L��M�쒒�1���~�B1� �+	#@
rr++29/3333015#535333#�ww�F��B�uuհ%�1��%��y��"@

	rr/+223+29015#533	##	X/m����N��N��O��>�M��5����+��^h���	"@r


r+2�33+29015#53?3#/#�W�_��M��M��M��yy<����������yI�!@
		r+23233/�3301+5!5!3!33:�F�)��FmFU�>����x��x����	"@

	

r+23333?�3301#5!#5!3333Ǵ��E�wD�DG�==��y	�3�3���E�y��&�"��V+4��:���	&�!k�V+4��E*�&�#�G:�	#@


rr+2+9/3/33/01!5#"&=3326753'#3t E(VWD9?#FE�$$�X[��F@
���_	Y>�@r
r+2+9/301>32#54&#"#�9E'voCQ[3`D��gp��SL�����K�M��9�09%@,55'	r1r+2+29/33/3901467;#"&2!32>7#".54>"!..1+dQPW�Fz\4��,GY30XBAZr<Ew[32[xDDqDHs�1%"==H7b�J
9bH(#@(2O-9c�LK�a7?EwMLxE��{-6!@..""3r&r+2+29/333301467;#"&".54>32!3267!.#"!

,%UCDNo4[E''D\3LtB�C7T04[<AY��6T31U5O+
16��+Kb87aI+JyH8W34*%<!'9V11W�y9�4='@9+�"+	r5r+2+22/�9/3�20157467;#"&2!32>7#".54>"!.�>�6-0,cPPW�Gy]3��,GY20XBBYr=EwZ43[wDDpEHs���B1%"==H7b�J
9bH(#@(2O-9c�LK�a7?EwMLxE���1:'@22&&7r*�r+�33+29/33330157467;#"&".54>32!3267!.#"Q=��"
-%UDDNo3[F''E[4LsB�C6U03[;BY��5U31U5yy��+
16��+Kb87aI+JyH8W34*%<!'9V11W��Y��.���y&�;��/�01��&��&���/�01S�,F�$!@rr/2++29/33301"&'732>54.+#33:3�)
$4)G^4WEEG
�Q�Fl>/Q�<,Q8;lR0����=��h�PIm=J�>�	!@!r
r/3++29/3301#"&'732654.+#33:735P-&A,
*+1T4;DD2�NPpB<[2;I;Bi>�	����&�l��&� 9�V+4���l8	&���V+4��Y�.��&�u��J�=�	&���Y�l��&� T�V+4��J�lF	&���V+4E�y*�@	r	r+2+23/9/301!#"&=332673#53#�:D'vpDQ[3aDh?�M2
gp��SLU�:��>:���	@
r+2?3�9/301535#".=3326753#)HD$:O'A:@#DCOy��)R;��GB
�y��Y�l]�&� ��V+4��J�l�	&�1�V+4��K�	����y&����/�01��!����&�_�9/�01����&����
�/��01��!����&��l
�=9/��01���������!������Y6w&����/�01��'��-�&�w�&	/�01������C����$�������&l���
�.*/��01����$�&m��
�*&/��01����&��H�
�/��01��&��&���
�/��01��-����&��t�
�2. /��01������&��:
�0,/��01-��� !@ 	r		r+2+239/33012#"&'732>54&+517!5!
C`<>lFM|"6^;6M+`^E�����$<M)Ed6@7!+1(I1FY8�>7���$�	@rr+2+239/3301"&'732>54&+57!5!3�Mz7X<:M'hd7����qv">V�B</.+N1PX1�==�u^2U<!��]��&�s���
/�01��J�&�sd�
/�01��]��&����
�
/��01��J�&���
�
/��01��*����&����
�,(
/��01��'��,�&���
�($
/��01*����+#@		"'r	r+2+29/333015!".54>3232>54.#"WS��KzX02[zGKyX02Zz��&Fa;<aE$&G`:<aE%O55��<g�DG�e;>h�CG�e:h:kS13Uj7:jT02Uj'��,'@$rr+2+29/30175!".54>3232>54.#"P��8_E&&F_88^F&&E_�3V44V44V44U4�##��+Ka68aK++Ka86aK+:_78a9:`8:_��*����&|���
�0,/��01��'��,�&}��
�,(/��01��0����&����
�.* /��01��&���&�n
�($/��01����o�&�sy��/�01���&
�&�sI�/�01����o�&����
�/��01���&
�&��j
�/��01����o�&����
�/��01���&
�&��
�/��01��E*�&����
�	/��01��:��&��^
�/��01��Y�y��&�"u�V+4��J���	&�!X�V+4��Y��&���
� /��01��J[�&��
�/��01�/�@r/2?33+29/301"&'73265#53'!!5!�*
42k�&FA����v�=LE>?A]2��>�x<11�=�	@r

/2?33+29/301"&'73265#53'!#'5!_)
3/G�&E.6�8�8J=<==W.�	=�4�..�,�@r/2+2901"&'732>54&/#	33�+1"��P��P��O���)!0M�=3#J*���cc��0���4[%4M,�>�	"@r
/2?+2901"&'732654&/#3?3=
	%.!&A	�M��L��M�R+.*C�;<,(L+N
���`3c00L+� @

		r+2/9/339015!3	##	�a�h��N��N��O��G--��5����+��^h�	@
	r+2/39/9930175!?3#/#6n����I��J��I���..�������)����-@  r'	r+2+29/3901".5467.54>32.#";#"3267Dj<F=496`>Hg3N4,C$"<&ED0E$XM8V6 v	0Y>AbW68S/>7").":'$:#8$A*BO0,!8?#���/@
"r)r+2+29/3301".5467.54>32.#";#"3267�9Z32.'2V3+F41%1:H-?<3:#>)4J8i$D//A
!.+=!+.((67','#27��&�.~�&�u���=�	&���*����6��(�+V���<��	\��T�y��&�"'�
V+4��C��0	&��!��
V+4��Y�y��&N"��V+4��K��K�&O!��V+4�����.��&�������=�	&����&�y��&�"9�V+4����8	&�!��
V+4��*�L��&('���3��9/�01��'�L�&H'�����5	/�01��Y�W��&)����İV+4��(�W7�&I���1��ذV+4��Y���&)�������V+4��(�7�&I�q�1����V+4��Y6R&*'�����x��/�/�01��'��-�&J&�c����-�&&	/�/�01��Y6R&*'����x��/�/�01��'��-�&J&�c����*�&&	/�/�01��Y�L6�&*'������'/�01��'�L-�&J'�����A	/�01��*����&,����'
/�01��(�!�&L�g�7
/�01��Y�W��&-� ��K�W�&M�����ΰV+4��Y�h��&-����K�h�&M���!
��ذV+4���\&.'�����5���/��/�01����&�&���&���/��/�01��Y�W9�&1�����ΰV+4��N�W�&Q�]���ӰV+4��Y�9�&1�����?�&Q�������V+4��Y�W�&2�e��K�WR&R�z�&
��ΰV+4��Y��&3�4��
/�01��K�&S���/�01��Y�W��&3�4���ΰV+4��K�W&S�����ΰV+4��Y���&3�����ΰV+4��K�&S�[�����V+4��*���e&4'����2��D�((
/�/�01��'��,�&T&�P����@�$$
/�/�01��*���c&4'�������HD�((
/�/��01��'��,�&T&�P����D@�$$
/�/��01��*���R&4'�����x�/�((
/�/�01��'��,�&T&�c����+�$$
/�/�01��*���R&4'����2x�,�((
/�/�01��'��,�&T&�c����(�$$
/�/�01��Y�Wg�&7�����ΰV+4��K�WO&W����ΰV+4��Y�g�&7�������V+4����O&W�������V+4�� ��=�&8����3./�01�� ����&X���,/�01�� �W=�&8���4��ӰV+4�� �W�&X���-��ذV+4�� ��=u&8'������7�33./�/�01�� ����&X'������0�,,/�/�01�� ��=u&8'�������:�88./�/�01�� ����&X&�S����3�11/�/�01�� �W=�&8'������4��ӲV7./�01+4�� �W��&X'�����0-��ذV+4/�01���WQ�&9���	��ΰV+4���WE�&Y�~���ӰV+4���Q�&9�m�	����V+4���_�&Y������V+4��O���e&:'����4��6�/�/�01��F���&Z&�I����:�/�/�01��O���O&:'�����x�"�/�/��01��F���&Z&�]���&"�/�/��01���&<�|��/�01���&\��/�01���&<����/�01���&\�P�/�01���&<�f�
�/��01���&\��
�/��01��{�&>����	/�01��� 
�&^���/�01���WS�&?���	��ΰV+4���W�	&_���	��ΰV+4����E�&Y����
�
/��01K��S�<!@
:2-(r"r	r+2++2901"&'732654.'.54>7.#"#4>32�?n)+Z1=L%E07I$0Sh6
.G+;Q+A%D\5?_;:fL+7)<X0o
*+0)%1. "3*2@%(62U5�.�5W@".P7)# !4/IR���W��&&���!�W�&F���:$��ɰV+4����&&�$��/�01��!����&F���C/�01����&&(v��@/�/�01��!���
&F(+�@@??/�/�01����&&)���@/�/�01��!���&F)8�C@??/�/�01����&&*���@/�/�01��!��� &F*T�J@??/�/�01����&&+����/�/�01��!���+&F+@�@@??/�/�01���W��&&'�����/�01��!�W��&F'���b�:$��ɲVC/�01+4����&&$����/�/�01��!���,&F$w�G�@@/�/�01����&&%����/�/�01��!���*&F%t�J�@@/�/�01����&&&���#�/�/�01��!���@&F&x�Q�@@/�/�01����&&'����/�/�01��!���3&F'\�G�@@/�/�01���W��&&'�����/�01��!�W��&F'���z�:$��زVD/�01+4��Y�W6�&*��
��ΰV+4��'�W-&J���'��ɰV+4��Y6�&*�#��/�01��'��-�&J���0	/�01��Y6�&*�x��/�01��'��-�&J�P�/	/�01��Y6�&*(t��@/�/�01��'��-
&J(L�-@,,	/�/�01��Y6�&*)���@/�/�01��'��-&J)Z�0@,,	/�/�01��Y6�&**���@/�/�01��'��- &J*u�7@,,	/�/�01��Y6�&*+����/�/�01��'��-+&J+b�-�,,	/�/�01��Y�W6�&*'�����
��IJV/�01+4��'�W-�&J'�����'��IJV0	/�01+4��3��&.��N��/�01��
��&���(���/�01��Y�W��&.�+���İV+4��K�W��&N��	��ΰV+4��*�W��&4�&�)��ΰV+4��'�W,&T���%��ذV+4��*����&4�J��2
/�01��'��,�&T���.
/�01��*����&4(���/@..
/�/�01��'��,
&T(M�+@**
/�/�01��*����&4)���2@..
/�/�01��'��,&T)Z�.@**
/�/�01��*����&4*���9@..
/�/�01��'��, &T*u�5@**
/�/�01��*����&4+���7�..
/�/�01��'��,+&T+b�+�**
/�/�01��*�W��&4'�&����)��βV2
/�01+4��'�W,�&T'�����%��IJV.
/�01+4��*����&E�2��8
/�01��'��,�&F���4
/�01��*����&E����;
/�01��'��,�&F���7
/�01��*����&E�J��B
/�01��'��,�&F���>
/�01��*����&E����8
/�01��'��,�&F�P�=
/�01��*�W�&E�&�9��ΰV+4��'�W,^&F���5��ɰV+4��O�W��&:�)���ӰV+4��F�\	&Z�����ɰV+4��O����&:�L��$/�01��F���&Z���(/�01��O���&G�4��*/�01��F��q�&H���./�01��O���&G����-/�01��F��q�&H���1/�01��O���&G�L��4/�01��F��q�&H���8/�01��O���&G����3/�01��F��q�&H�I�./�01��O�W&G�)�+��ӰV+4��F�\q]&H���/��ɰV+4��{�&>����/�01��� 
�&^���/�01���W{�&>���
��ΰV+4��� 
	&^�%��{�&>���/�01��� 
�&^���/�01��{�&>�l��/�01��� 
�&^�=�/�01��A�e0A��0�/20175!Ar�??A��0�/20175!A��??A�D0�/20175!A�??��A�D0R@	����/�99013#57|C�jggj@	����/�99017#53GB	kffkP���f��/�99017#53VBhhffh��@	��&TTy@	��
@	
/3�29017#5337#53GBWB	kffkkffkP��f
@
�
/3�29017#5337#53VBSBhhffhhffh'�~o�
//9/33301#5333#���A���r>�'>��)�~q@
	//9/333�22301#535#5333#3#�����A�����!?n?|��?n?��V	��/301#".54>32	))))Z))((A�b@
	
?2332301353353353A;L9M:bbbbbb.��	�/?O_e5@`eeP@@XHH8((0 	rcbbr+22/32/3+22/333232/301".54>32'2>54.#"".54>32'2>54.#"".54>32'2>54.#"		�)D))D))D((D)--,-j)D((D)*D((D*----{)D))D))D((D*----��#����&B'(B&&B'(B&'00//�&B((A&&A((A'(/00/(&B((A&&A((A'(/00/T[����E	��
��/�0153E;	����E	E�&__�)B!�@	/3/39017')�����;��;�?B8�@	/3/3901%57'58�����;��;��(��r��rr+2+201'		�#���T[����&��*%�!
BD?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$�%=F"$G<#&=G!$H:#�%I006%I0/7�b*

@
		
BD?�29/3333015#5733#'35���99��g*��+g���V*&@	# BD?3�29/3012#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0� 9%(<!)" 2))098*
,�(�s**@#
BD?3�29/93014.#">327.#"32>".54>32s*I/(HG8%<I-N^\I/K,� 8"!7!"7!!6&=##KT "%vwP[%?;,++,�[*�BD?�201#5!#�A�3�,�q&�g*+:@ 008B(D?3�29/33301#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&=
"5 6 '2) -- *5!!!$$�# �k**@	

#BD?2�29/301"&'73267#".54>32'2>54.#"�,K<%9FH)-I+,K.I]^H!6!!7!!7 !7�&"TK%$>%'>%[Pwv�,,,,&���?%�!
BA?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$U%=F"$H;#&=G!$G;#�%I0/7%I007"��
E@	

BA?33�22301#53#52>73
�Y$+$-$,,5	,��$��^D"@B A?2�29014>7>54&#"'>323$8*?+33!2"
'F0II+1,-�P4E.%, !D3+**,#��_D,@
&BA?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-IU0)"' #(("! '"2#,
9&"1��b?

@	
BA?�29/3333015#5733#'35���99�Pg*��,g����V?&@
$$# BA?3�29/3330172#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0� 9&'<!)! 2)(188*
,�(��sB*@	#
BA?3�29/301%4.#">327.#"32>".54>32s*I.(HG8$=
J,N_]I/K+�!7"!7!"7  64&=$$LS"%vvQZ%>:,+,,��[?�BA?�201#5!#�A�3,�q&��g?+:@0  8B(A?3�29/33301%#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&="5 7'2) .- *
4!"#$%�#!��lB*@	

#BA?2�29/301"&'73265#".54>32'2>54.#"�-J;%:FI(-J*,K-J]^I"6!"6" 7!"7U%"SK$$=&&?$[Pwu�++++(��� $(,0)@*/+--r#%"''r+233�2+233�2014>32.#"32>7#".#53#3##53#3#(BvLJpCO04V34V4"?/C@W38`F'F%%�%%�%%�%%JzHC9(-6^<;`9)%;!+Lb������J�	
@
r?+29/3�2013!!!!'5!y�tO���&�>��:���661����6:>@7:>;;
6(/	r
r+2+229/3�2017>54.54>32.#">323267#".#"!!!!3/6(1S17`'N* 4'.&$/,*855;P��P��*.G? -IBD&/N.81*)1 5!!?@K/!?B*				4


�+=*%%�"@

r
?3+29/993�201!5!5!5!%#33#%����F:�FA+>+�����O�;Y����
2^=@ /r#++$(PI(II(:3r''r+/33/+29///33333+201332+32>54.+#".5#53533#3267"&'732654.'.54>32.#"Y�.L93\=WS*>"(A'Mv"03HHDxx&-�;d%(S-9G#@,2C"0Q37UG+6"4&7Q,e�&AO):g@��D.J+,J+��-!u6��6��Z*+0)%1. !3)3C#&". '" !4/IR)4�!=@  !r?3+9/93�2233333301!5!3!!'!5!3!!3733##3��C�D��C��CdeC}�K��>��>��K�>++p**�����u�:_����A)L�,04/@
		2233 (--0/33|/33/33|/33/3/3014>323'.=#".%5.#"32>!!!!B6a=AgD i;@e9�
9J%/G(-K.93"�R#��.��C=h?E1)��6 32=AiQ$;#1O-0K,$/�+�*!����,!@
(	r
r+2+29/993�2017!7!74>32.#"32>7#".!�7�+8-V~P_� 7FO'@bC"(Ha9(TI:\q6IzY0++�++8A}g=WD"/73Ui6;lS1:.5J&?i��� @

	rr+2+29/930175!33	#8�F�M��1O��55��d���rd��Q�@		

rr++23015%5%###5!?��0�F�@'�'��'�'>�x�>R�!&@!	r?+299}//33�201!!!!!2+32>54.+P��P��J&.M8 6K.��*>"(A'�/+=*�c�&AO),P@%��D.J*-J+*���/(.0@.*++r#	r+2/223+2/2239/3?01%#3".54>32.#"3267#53#]....GzZ11XxGi�"6"rF;_D#(Ja8At5eZ��;����W=h�DH�d:VE$B>2Tj9<kS/ADJz,6��7����'+/'@-,(
))
r!	r+2+29/99993�201"&54>54&#"'>3232677!%7!*kf/JTI0CI+N!'\>ha0ITJ/EO0P#&^����o�UO1L<65?(352QJ2J;55@*783/  V  *���/,'@(	r
r+2/233+2/22301%#34>32.#"32>7#".]....��-V~P_� 7FO'@bC"(Ha9(TI:\q6IzY0�����A}g=WD"/73Ui6;lS1:.5J&?i�Q�@
	r?+23}/301!#5!#5!�@���@??���>>+��@�
r?+99�2330132#32>54.+!5!5!5!+^.L9'G0�O�>*="'A(Z��x��x��&AO)3Z>
��D.K*+I-\*E+"#�@r?2+9013332>53#%5%5%`F�4>
F0[K��k��k�x,G48\B#�3�33�4O����@


	?3/3933/3012#4.#"#4>?zRrG F3YDBX4EDt9..N4Yt@��/\K,+J\1��<s\6����  @ 	r?+29/3�233015!5!32+32>54.+��M��1N70[A��1=!A/�>>y77��&AO):g@��D.J+,J+H��-�&@	&	/3?39/3017>54&#"3267'#"&54632w#A4=2!6605
$!&0�Ygd):H";%�267"�")*'QTJYa�	)!@	

&r?+22/33/3?9901#33#".54>32'32>54.#"�F6�F=?6Q-.Q46Q..Q�!8""7""7"!9!D����N�;\2T/2S22S2/T2�$<$%=$&;$$=6���23@'*-0

$00?33/3�292/3/90173#5#'#3.#"#"&'732654&'.54632�UC0T(T0B�* *1;@1$>4"  ,13?02���ٯ��)
	%,('$	"')+>���)@
r+�923333301##5#533#5#'#3,_0_�C0T(T0BU���0��ٯ���-��-!@+-r!
r+2+2233330173.54>323!5>54.#"!-�8R,1XxFGxX1,R8���2M7$C_<;_C$6N1��>]tAE~b99b~EAt]>>>T_05fR11Rf50_T>>+��: @	r	r+2+29/301%"&'5!4.#"3267'2!5>21W�CwNMwCBwNKi#`E2X��W-&�L}KK{IH{K0#,�.(|}'.��"��	�&'c�#��s�"(U;@O:77)@HH)#((1)&%% /33/293/3?33/33/39/33014>7>54&#"'>323		"&'732654&+532654&#"'>32#7(?*22 1!
'C0GG+/+,�#���>U!8$1DRC?H?+)<-: ,E)/,.8,JG4E.%+!D3*)*+��T[����0)"' #(("! '"2#,
9&"1��"���&'c
���#����&'c�
 ����w�&'cv
����,�&'c+
����!2@+		r"r+2+29/301".54>32>54.#"'>32'2>54.#"�@c8'DY2>](H2.T'!i:moDxO(A1(F+0S3(F
7]9/VC'>8$$Yg- )&'����\<4@!)C(1Q0*D('��,)#'@
&% 
$'?2�2?3�201".54>3232>54.#")8_E&&F_79^F&&E_�3V44V44V44U42� �?
+Ka67bK++Kb76aK+:_78a9:`89`��;��`�@rr+233+201%!53`��:���555��x6������@		r/3+23301!##5!##��BRtPB���>>� ��
!@	
/333/9933301!!5!55!�G������]�.���3@-D�C�/2015!D�88����U��rr+2+201'3*���"�TA�|f�/201753A;�pp�
@


r+2/9/33013333#�gGGvB����m����m3-��/? @0<$ 8(/223�2923012>32#".'#".54>2>7.#"!2>54.#"�'4&$5&0F&)F.$4%
%7((H-*G,,  + //6.. +
 +//-K.-K----L-.J-��130&&11&&0 40	�Y$4�
/3/301&632.#"#"&'7326'b408
# )4/6  �/?	0%"�4:	0&"A�o|-@�@%�)/3�/2�2�201#".#">3232>7#".#">3232>7Q*,& '/ 	*,& '/ 	e$	

Q
$

		SJ��@
/�23/333/3017'!!5!!l��8-��-��]����1�1>=�
@
	/3�22/390175!%%?B��>���=99B�BomD�A=�
@
		/3�22/390175!57'5AC����?=99�DmoB���	@	?3?3901#!��I�������nl��B���9�9x��
��/�01#7#53_#?�JLLQ�31@		+$r2/3
r+2?3333333+29|/3013#5354>32.#"3#3#5354>32.#"3#dHH%I5#9))���HH&D0:)/4���6,P23
"(6�-�6@\11JF6�-��@
r	r+2?333+201#5354>32.#"!###dHH-E0%;,?%*5D�D�6%H<$	1+B"���-��I�) @r"
r
r+?333+2+201"&54.#"3###5354>323267�.6/*'2nnDHH(P<XZ&
	!$7.�2!(B(
6�-�6;Z3XD�.%	8��86@		,$r61488
?23?3333333+29|/3013#5354>32.#"3##5354>32.#"!###dHH%I5#9))���HH-E0%<+?%*5D�D�6,P23
"(6�-�6%H<$	1+B"���-��3�D@@ 
		#6r=r(11+..-
?2?3333333+2+29|/333013#5354>32.#"3#"&54.#"3###5354>323267dHH&J5$6&)��,/6/)'2nnDHH(P<XY&

!#�6,P23
"(6�-7.�2!(B(
6�-�6;Z3XD�.%	8#�� �b>@#TTJMM<+A&F!0Jr80r\

Y
r`r+2+223+2+293333/301%#".5#534.#".#"#".'732>54.'.54>32.54>323#326#/3II((@2 !M$!='+2$G:##:H%*PC,]0!?+/5&D39Y.!B
G=5<vv%.P7-!u6KR 9+4)("*$$4(*;$#/#$*$#2&9D 0#%>&8U86���@
r+22/3901##33�I��I�N��Lо�:U����a��a*����-@$##
r	r+2+29/301".54>32.#"32>7#5!|J|Z22Z{JY�+7+8C'<aD&&Ea;3WB,�4Vq<g�EF�e;UD-1&3Uk77jU2&@R,?>qX2��K��&���/�01!��� 3@ 
r'

r0r+2+29/3+01!5#".54>3254&#"'>32'6=.#"32>�$l:1N.'?N&6PNE'T,,c6D]0U#J$:0#9 @7R0,+I.)<&	/CS -'4^=��sU
*"4 (��"&"@
rr&

r"r+2+29++01".54>3253#5.#"32>77ZB$%BX3AfDDb�6E)*F22V7*E3
,Ka58bK*C4j��i3@Z'="%=K&8_:!;$(���'"@r'
r"r
r++2+29+01!5#".54>323.#"32>7�d96[C%=lDBd DD
:I$*D16F)93"a0;,La4J{JE1>�&T%;"#=K(*L; #0K�+���r+�2?013#3#KDDDD�&�[Q���
rr++0130*#QD	�&(�,7/$@rr!"
'
rr+2+29++201".54>3253#.5'2>75.#"5W>"&C[4=g=
	!Md)C3"2:+E41T
,La57aK+?0f�};$v<!8"�1'$<L'8`9)�@
r
r++2/223013#53533#hMME||�>��>�5F��	@rr
r++2+29901!5#".5332>73�AQ*3D%D63*I7Dr&8$?Q-2��1P0'A'H��'	@
	r
r+2+93301!#333(��G�G��A��G���^	�L��L����+	@
rr+2+9901	#73��LV�H��	�"�	�6�'��e�R7@CC=:r,++'0rK		HrOr+2+223+22/3+22/392/301%#".5#534.#".#"32>7#".54>32.546323#3267e"03HH,*31BP1*E14E)?3CEX-;`E%$B`:2ENJ<Bww%--!u6)E3>,;7.
,)$<L'*L; '):-M`35aM,=#=O"=S06��7$
?@#
		

		>/2?9/93339<<<<0133#'!3�4�BL��K�v�$�ܥ��T$&@>/3?39/3901%#!!24.+32>32>54.#-M/��!)= ,(3;?-��0���,*�)@$$)A")EJ),�-m�,*,��1'#�??3?3014>32.#"32>7#".,%IjDOr2b05R7!;P0!F<5M_.=gK(2`P/C5 6)&?N(,P?$+#(91QeT?$

�>/2?301332#4.+32>T�_�@G�X�4cH��Id2$J{LS|D@a8�L9dT�$@	

>/3?39/301%!!!!!�m���#��88$8�4�T�$	�>/?39/3013!!!!T�����$8�6�,��4'!'@
$##
?''/22/?39/301".54>32.#"32677#53#B<fK))Je<Wo1_:1N7!<P.5a+*c���6/Pd57cM,B5!2.%?O*-P=#03B--�0��T-$�	>?2/39/301#5!#3!5->��>>]$���$��T�#	�>/?0133T>#����\#�>??301732>53#"'&;$<:>(OBM5L3cG��>gH(!T($@

	>/2?3901333#T>DF�J�l#��6��
b�T�$�>/2?0133!T>K$�8T�$@
	>/2?3901!##33c�$�>A��A���O�M$��l��TI$	�>	/3?39901#33#�>0�?6��Q$�I���,��]''�#
??2?301".54>3232>54.#"E?gK(*Lg=>gJ(*Kg��:Q02P8 :P/2Q9/Oc57cN-0Pc37dM-+O?$&@N)+O>$%@NT�$�
>/?39/301332+32>54.+T�4R-+M5��#2 6!�$4O+-P2��!6"5 ,��]''+@
?((**?2/23/?301".54>32'2>54.#"73#E?gK(*Lg=>gJ(*Kg<2P8 :P/2Q9:Qa>�>/Oc57dN,/Qc37dM-9&@N)+O?$&@N)+O?$z�T$@

>/2?39/3901332#'#32>54.+T�4Q.!;(�H���"36"�$4O+'D0����!7 5!$���'.@	'+??3?39901.#"#"&'732654.'.54>32�0=#KG#H8>[1:M/Ex1?O-BO(N;=S*6`=;^$�3-#
":1'9%''4!-, (!7,3G# �$�>/?3301###5!��>����8K��@$�
>?3?301%2>53#".53E7J*>;_EFa:>+H5%?N(��7cM,.Nc4��)O>$:$
�>?2/9013#T��B�6�$�3��$r$@
	>?333/39013733##373;ST;io�E�7||8�D�l ��������$�(�
$@

	>?2/390173#'#S��F��E��F��$������ $�>?2/9013#5X��E�?�$��"����Y%$	@		>?33/33017!5!!!%��z�y��&1�82�F8�x��@

r+2?3/3333015333#5!7!?�?�?;��C�ʈ���xƈ��:���r/2+90133#?H���:s��(��#-!@-r$	r+�333+�333015.54>753'>54.'sDx\36]wACCw\56]wABJ|I,MauJzI,Ka5:56^�OS�^3555^�QR�^35o\J�\GmM*J�ZFoM+��Y+�+��-�u��,��*�u��>��-�L��&��z��*�L���N��� +@
!(rr+2+29/3301"&54>32'2654&+32654&#"*jr/Z@8U/2,DK8aBINPJ�OO�8GG8;Fqk*>Z2&I45JgQG^/:ULNR�IRt>99<H?:���+@"r%r+2+2901".54>7>54.#"'>323267DZ--[C&/13G0aG3N, D7MNM?6T,"m
<+09(&$'/<-,6#4.-'!$!,,��(�!L&��0@


r+2/2/?3/3/9/33333013'333373#'##5#&ðM�DFF�N��O�FFD�����b�������$�+@
%rr+2+29/3301"&'732>54.+532654&#"'>32�Gt8S26I&&G4P==NG8*H5dERf8.FI8e�B</.+O11H*5B=9@)/5A[P9NmOBd6��F��	Z��F���&Zq�/�01��F������K	�P	�r+/3901##0�H��D�	���;	��KS��KRRF��K	@	
r	r
/?3+2+299015'./#"&5332>73;
"uDRTD=<(K:D
0yyD<Dro2��YX#A+H�O�F��L	$'@rr
r		r+23++2+290133267332673#5#"&'#".5FD9:;\D99;]D> g@AP	#f@,<&	��[VTB>��\USB?��v<CK;BD ;S3D���	.'@'&#	-
?�3?3?3?933015'.'5#"&'#".533267332673;U iAAP	#fA+=%D:9;^D8:;]D
/yyE<DK;BD ;S31��[VTB>��\USB?�O�F���	@rr+2+9/301"&5332'2654&+goD�1N88N1FLLF�KjcB�,C--C-:@:;?dEK��V	@rr+2+29/301"&5#5332'2654&+�gq��1N88N2FLLF�Ljc	9�,C--C-:@:;?dEKJ�		@	r/+29/301753!#`���7��..�	=�4��'��?���L�-��'�L�)��.�.@
'rr+2+29/3301".54>7.5463!#"2'2>54.#"*HuD'E/23TK�42JDKvDEvI5U32V44V33U
>nF4WB@)CD<',)3>mGFn><-Q67U//U76Q-0��{�'�#
r	r+2+201.54>3232>54.#"VHnJ&)MlDImJ%)Lm��8Q78T7:R59T7
Bk}<@�i?Dl~:Ah?g4iW58[g/4iW59Zg*��@
r?33+22/301%!53#52>73����	#.06/E>>>E@%�o/�(�r&/2+2013&>7>54.#"'>32!0-@(&RF+!D43O5-%?W:Jb1)AK!@L%�?`J7#*=.&@'"0,(,9\75I1$888>0���2@
+#r		r+2+29/3301".'732>54.+532654.#"'>32?f@*2W82Q/8fF""ap-K,B^/EY0Dk= >-/G'Ep	*J1&"A(#=),?";@@*>":+.$44X9(?+	4K-<V/�

@	
r?+29/333301!5!533#%!w��r/XX���=�6>��`(���"@r	r+2+29/33301"&'732>54.#"#!!>32Ly.b:2O/.L0.T@PW��2M,Ai=Bo
K>"1<,M31K+*&�?�:eCEk;4��/�.@
'	rr+2+29/9301%4.#"4>327.#"32>".54>32/AoD-O:1X;8[,pGNvBBsJGrC�3T32U32T33T�Cm@ :'b�J=3(=G^��\�GBou2T23S22T22T2
�
�r+2?01!5!#����L�?�:2���!3C@8''@r0	r+2+2933301%#".54>7.54>324.#"32>32>54.#"EqCGn?+A"6 '@O('OA'!6 'A'E5? +Q34? +Q4��/H"$G/,G(&G+�>\39^:-I2
+:#,C/.C,#;+

5H($7&%C.#6'%Dp&77'&67,��&�.@
'r	r+2+29/330132>7#"&'32>54.#"72#".54>,AoD-O;1X;8[+pFOvAArLFsB�3T43T32U22T�Bn@ ;&b�I=2'>G^��]�GAou3T22S33S32T2��&���?k��"��
El��$��^Dm��#��_Dn����b?o����V?p��(��sBq����[?r��&��g?s��!��lBt&����%�!
B?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$%=F"$H;#&=G!$G;#�%I0/7%I007"
�@		

B/33�22301%#53#52>73
�Y$+$-,,,5	,��$^�"@
B /2�290134>7>54&#"'>323$8*?+33!2"
'F0II+1,-�4E.%, !D3+**,#��_�,@
&B?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-I0)"' #(("! '"2#,
9&"1b�

@		
B/�29/33330135#5733#'35���99�g*��,g����V�&@	# B?3�29/30172#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0� 9&'<!)! 2)(188*
,�(��s�*@
#
B/3�29/9301%4.#">327.#"32>".54>32s*I.(HG8$=
J,N_]I/K+� 8"!7!"7  6�&=$$LS"%vvQZ%>:,+,,[��B/�201#5!#�A�3c,�q&��g�+:@ 008B(?3�29/33301%#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&=o"5 7'2) .- *
4!"#$%�#!��l�*�

#B/2�29/301"&'73265#".54>32'2>54.#"�-J;%:FI(-J*,K-J]^I"6!"6" 7!"7%"SK$$=&&?$[Pwu�++++&F��%�!
BC?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$F%=F"$G<#&=G!$H:#�%I006%I0/7"F��@
	

BC?33�22301#53#52>53��Q!',-s--5-��$G]�"@B C?2�29014>7>54&#"'>323$7+@+33!2"
'F0II,0,,�G4E.%+!D3*)*+#A_�,@
&BC?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-IA0)#' #')" !'"2"-	9&"2Kb�

@
		
BC?�29/3333015#5733#'35���99�Kg*��+g��FV�&@	# BC?3�29/3012#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0I 9%(<!)" 2))098*
,�(Bs�*@#
BC?3�29/93014.#">327.#"32>".54>32s*I/(HG8%<I-N^\I/K,� 8"!7!"7!!6�&=##KT "%vwP[%?;,++,K[��BC?�201#5!#�A�3�,�q&Fg�+:@ 008B(C?3�29/33301#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&=�"5 6 '2) -- *5!""$$�# Bk�*@	

#BC?2�29/301"&'73267#".54>32'2>54.#"�,K<%9FH)-I+,L-I]^H!6!!7!!7 !7B&"TK%$>%'>%[Pwv�,,,,A�|f�/301753A;�pp1l��
��/�01'73^-;Hl]$K?�
�
�/2�201"&5332673�DJ2-/.+1JK@1(& 1@+Xp@
�_/]2�201".'332673�1C"7)64*7"A3*'3�=�<��/�201"&'7326=3T#
,.DS�;JI+=aa�l�<��/33�017#53	>&m�H��<��.	>��/�201"&'732>=3k)'*F#F�	;*M3&??^4�l�>��/�33017#53	>&m�I��>����<��/3�015#53QQ�yy<��y�>��/3�015#53]]���>�2NV�
��/�017#3V$$N>��+P�,&���FR��*O�*&����P��+R�@&����OO��Q?3&����Y��XQ�
&�.���3����RP&�/���-��/Rb &����/��&Pd+&����Q�l\���/�9901'7'\W-&�n;"nd�?W��
�*)�3 	3�
"
Z
�
���	�	/	G	4_	�	�	
	R:	f�		fT	
�	D
	,
}	
 
�	4uCopyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".Copyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".RalewayRalewayRegularRegular4.026;NONE;Raleway-Regular4.026;NONE;Raleway-RegularRaleway RegularRaleway RegularVersion 4.026Version 4.026Raleway-RegularRaleway-RegularRaleway is a trademark of Matt McInerney.Raleway is a trademark of Matt McInerney.Matt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaRaleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.Raleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.http://theleagueofmoveabletype.comhttp://theleagueofmoveabletype.comhttp://pixelspread.comhttp://pixelspread.comThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFL�j2-	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a��������������������	����������bc�d�e�������f����g�����h���jikmln�oqprsutvw�xzy{}|��~�����

��� !"��#$%&'()*+,-./012��3456789:;<=>?@A��BCDEFGHIJKLMNOP��QRSTUVWXYZ����[\]^_`abcdefghijklmnop�qrst��u�vwxyz{|}~�����������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx��y�����������z{���|}~������������������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./01234NULLCRuni00A0uni00ADuni00B2uni00B3uni00B5uni00B9AmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflex
Cdotaccent
cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve
Edotaccent
edotaccentEogonekeogonekEcaronecaronGcircumflexgcircumflex
Gdotaccent
gdotaccentuni0122uni0123HcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJijJcircumflexjcircumflexuni0136uni0137kgreenlandicLacutelacuteuni013Buni013CLcaronlcaronLdotldotNacutenacuteuni0145uni0146NcaronncaronnapostropheEngengOmacronomacronObreveobreve
Ohungarumlaut
ohungarumlautRacuteracuteuni0156uni0157RcaronrcaronSacutesacuteScircumflexscircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring
Uhungarumlaut
uhungarumlautUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacute
Zdotaccent
zdotaccentuni018FOhornohornUhornuhornuni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCGcarongcaronuni01EAuni01EBuni01F1uni01F2uni01F3Gacutegacute
Aringacute
aringacuteAEacuteaeacuteOslashacuteoslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217uni0218uni0219uni021Auni021Buni022Auni022Buni022Cuni022Duni0230uni0231uni0232uni0233uni0237uni0259uni02B9uni02BAuni02BBuni02BCuni02BEuni02BFuni02C8uni02C9uni02CAuni02CBuni02CC	gravecomb	acutecombuni0302	tildecombuni0304uni0306uni0307uni0308
hookabovecombuni030Auni030Buni030Cuni030Funi0311uni0312uni031Bdotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0394uni03A9uni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni046Auni046Buni0472uni0473uni0474uni0475uni048Auni048Buni048Cuni048Duni048Euni048Funi0490uni0491uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04AD	Ustraitcy	ustraitcyUstraitstrokecyustraitstrokecyuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8uni04D9uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0510uni0511uni0512uni0513uni051Auni051Buni051Cuni051Duni0524uni0525uni0526uni0527uni0528uni0529uni052Euni052Funi1E08uni1E09uni1E0Cuni1E0Duni1E0Euni1E0Funi1E14uni1E15uni1E16uni1E17uni1E1Cuni1E1Duni1E20uni1E21uni1E24uni1E25uni1E2Auni1E2Buni1E2Euni1E2Funi1E36uni1E37uni1E3Auni1E3Buni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E5Auni1E5Buni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Cuni1E6Duni1E6Euni1E6Funi1E78uni1E79uni1E7Auni1E7BWgravewgraveWacutewacute	Wdieresis	wdieresisuni1E8Euni1E8Funi1E92uni1E93uni1E97uni1E9Euni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni2002uni2003uni2007uni2008uni2009uni200Auni200Buni2010
figuredashuni2015minuteseconduni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089
colonmonetarylirauni20A6pesetauni20A9dongEurouni20ADuni20AEuni20B1uni20B2uni20B4uni20B5uni20B8uni20B9uni20BAuni20BCuni20BDuni2113uni2116servicemarkuni2126	estimateduni2153uni2154	oneeighththreeeighthsfiveeighthsseveneighthsemptysetuni2206uni2215uni2219commaaccentf_ff_f_if_f_ls_tW.ss09G.ss11	i.loclTRKa.ss01a.ss02d.ss03j.ss04l.ss05q.ss06t.ss07u.ss08w.ss09y.ss10c_ta.scb.scc.scd.sce.scf.scg.sch.sci.scj.sck.scl.scm.scn.sco.scp.scq.scr.scs.sct.scu.scv.scw.scx.scy.scz.scuni0414.loclBGRuni041B.loclBGRuni0424.loclBGRuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0432.loclBGRuni0433.loclBGRuni0434.loclBGRuni0436.loclBGRuni0437.loclBGRuni0438.loclBGRuni0439.loclBGRuni045D.loclBGRuni043A.loclBGRuni043B.loclBGRuni043F.loclBGRuni0442.loclBGRuni0446.loclBGRuni0448.loclBGRuni0449.loclBGRuni044C.loclBGRuni044A.loclBGRuni0493.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0431.loclSRBzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lf	zero.subsone.substwo.subs
three.subs	four.subs	five.subssix.subs
seven.subs
eight.subs	nine.subs	zero.dnomone.dnomtwo.dnom
three.dnom	four.dnom	five.dnomsix.dnom
seven.dnom
eight.dnom	nine.dnom	zero.numrone.numrtwo.numr
three.numr	four.numr	five.numrsix.numr
seven.numr
eight.numr	nine.numrperiodcentered.loclCATuni030C.altbrevecombcybrevecombcy.casehookcytailcyhookcy.casetailcy.casedescendercydescendercy.caseverticalbarcy.caseuni03060301uni03060300uni03060309uni03060303uni03020301uni03020300uni03020309uni03020303
apostrophe��T\����������������#$+,, 0��������$+�
�hDFLTcyrlRlatn0�� !"#$%&BGR VBSH �CHU �SRB ��� !"#$%&��	 !"#$%&��
���� !"#$%&4AZE nCAT �CRT �KAZ "MOL ^ROM �TAT �TRK �� !"#$%&��
 !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&'aalt�c2sc�ccmp�ccmpdligdnomfracligalnum$locl*locl0locl6locl<loclBloclHloclNloclTloclZlocl`loclflocllnumrrordnxsalt�sinf�smcp�ss01�ss02�ss03�ss04�ss05�ss06�ss07�ss08�ss09�ss10�ss11�subs�sups�!#$1
	
 %"&'()*+,-./02fnv����������������
"*2:BLT\fnv~�����������������@d����48<N`dhlptx����&.2:\x��������LPTX\`dhlpz~��Mc�������������������������������������yz{|������������������������	

M'()*+-./012356789:;=>?GHJKLMPRSUWX[]_{"#&'������������������&'->>LZhv������������� &,28��kd��l}��mv�n�w�o�	e�p
f�qg�rh�s
i�tj�n���~�����n�����������~����������������&,4<FINOQTVYZ\^,>?NO��,NO������
��NO
��NON
,
+�*�)�(�
'�&�%�$��� {QQ {11�{�{yz{|"#&'yz{|"#&'_N_N_N_N_N	�����,->?�����&',>?.�������������������������������������V�
d}vwefghij��O�c����&F4Tn~n~&4FT�T3�&?sF_
�Y�YHX6"(�KQ�KN�Q�N�KKhFhFiFgIbOaQ]V[Y[Z
��<\Y^�,�
NxDFLTcyrl$latn4������kernmarkmkmk (20���\���X��*
`���`���Bh�x�(<�P��J8�l����� � �!4!�&�&�&�''F'�&�&�(J(�+Z,,r,�-�.3B48b9T9�;�=�>,>z>�>�??z?�?�@@@D@�@�@�>,A
A(A^A�A�A�DzD�GVG�G�IpI�I�JJ�JNJpJ�K ������!4 �!4!4!4!4&�&�&�&� �&�(J(J(J(J(JR
R-�-�-�-�8bR�T�=�=�=�=�=�=�>�X:>�>�>�>�?�XxX�YlZJ@�@�@�@�@�@�]@]fA�A�A�A�GV>,GV�=��=�]�^� �>z �>z �>z �>z �_ �a�!4>�!4>�!4>�a�>�!4>�&�bN&�bN&�bN&�bN&�?�bl?�&�e�&�fd&�f�f�f�&�?�'f�'F@'�@D'�g�hh�'�'�j�&�@�&�@�&�@�k^k|(J@�(J@�(J@�a�>�,A(,A(,k�,rA^,rA^,rl,rA^,�lJ,�ltm�A�-�A�-�A�-�A�-�A�-�A�-�r�3BDz8bGV8b9TG�9TG�9TG�(J�=�!4>�R]f,rA^,�r�?�@�r�!4!4ssxs�&�&�t�u'FuPv^v�!4ww�'F&�&�(Jx:x�yz�{^(J(J{�||�>�|�}A�A�@A�A�@�@�A�>,}J}�GV@�~~DA�A�~DA�@�@�A�>�>�~J~�?�l��@A�GVA��'F@'F@&�@� �>z8b�(��A�A�?�&�'FA�?��=��=�!4>�!4>�(J@�'FA�A�(J@�(J@�GVGVGVA�A�(J�3BDzA� �>�&�?�&�@�,A(,rA^,؂3BDz3BDz3BDz9TG�!4>�!4>ڂD�b(J@�-�A�8bGV8bGV�ڂ|�·$�|���$JJ������8��@D��@DA������`������X�����bA��䜞��������Ȣ��������������~�ԧ򨌪����ܮ������p(J � � ��A�A�A�@@�@�A�>z>z��0�b���������$P����&��/��9��;��<��=��>��[��\��^������������������������������������������&��(��*��8��9��:��;��<��[��]��{����������������������4��B��D��d��f��h�������������������������������@��A��F��G��U��X��������������������������������������%����������������������������
����������������k����&/9��:��;��<��=>��?[��\��]^��_�������9��������������������������&��(��*��,��.��0��2��4��6��8��9��:��;��<��=>?@AB[]9_`{�������������������4��B��D��dfh9�������������������������������2��@��A��F��G��U��X�����������������������
������&(��,��4��6��9;<=>FH��I��J��KL��OT��V��YZ��[��\��]^�����������������������������������������������������������������������������������������������������������������������������������������������������������������������&'()*+-��/��1��3��5��7��89��:;��<C��[\]^_��`��{|�����������������������������������������������������
��
��4>��?��BDE��defghik��z��{��|��}�������������������������������������������3��@A��FG�����������������������������������������������������������������������������������������������&��/��9;<=>F��H��I��J��L��T��V��X��\�����������������������������������������������������������������������������������������������������������������������������2����������������!��#��%��&(*89:<C��[��\��]��^��`��z��{����������������������������������������
����
4?��BDd��e��f��g��h��i��k��{��}�������������������������@F�����������������������������������������������	���������������������;��O[���*��C����������������������D��E���������������������'����������;��=��[��]��*����������������������������������D��E����������������������������������;��[��*��C����������������������D��E���������������������R��������������������&��(��,��/��4��6��8;<=>F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%������
������������������������������ !��"#��$%��-��/��1��3��5��7��89��:;��<>��@��B��C��[��\��]��^��_��`��yz���������������������������������������������������������������������������������������������������������	��
����
����������%��'��)��/��1��7��9��>��?��BD
E��d��e��f��g��h��i��k��w��y��z��{��|��}������������������������������������������������������������3��@A��FG��������������������������������������������������������������������������������������������������������������������������������������������������������������<����������&��/��9��;��<��=��>��?��A��t�����������������������������������&��(��*��8��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h���������������@��F�����H����������&/9��:��;��<��=>��A��q��t��{���������$����������������������&��(��*��,��.��0��2��4��6��8��:��<��[]${��������������4��B��D��dfh$�����������2��@��F��Q��R�����!9��;��<��>��A��t���������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F�����#������9��;��<��>��A��t������&��(��*��8��:��<��]{�����������4��B��D��h�����������@��F�����)����������9��;��<��>��A��q��t���������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F��Q��R�����'������9��;��<��>��A��q���������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F��Q��R������-&��9��;��<��>��������������������������������&��(��*��8��:��<��[��]��{�������������4��B��D��d��f��h�������������@��F�����;������������������"��&��/��9��?��f��q��t{��������������������������������������&��(��*��=��?��A��[��]��{�����������������4��d��f��h�����Q��R��V��Y��]�����,&��9��;��<��>��������������������������������&��(��*��8��:��<��[��]��{�������������4��B��D��d��f��h�������������@��F����� ������9��;��<��>��A��t�����&��(��*��8��:��<��{�����������4��B��D�������������@��F�����;��*������D����
;��O�*������D�����������G����&��9��;��<��>��[��\��^�����������������������������������&��(��*��8��9��:��;��<��[��]{������������������4��B��D��d��f��h�����������������������������@��A��F��G��U��X����������������(��������������$��%��;��A��[��m��n��r��~������������
��*��C��_��`�����U����������������������������&��9��;��<��=��>��?��A��K��X��Y��Z[��\��]��^��_��������������������������������������������!��#��%��&��'��(��)��*��+��-/13578��9��:��;��<��=��>?��@A��B[��]��z��{��|��������������������4��B��D��d��f��h����������������������������������3@��A��F��G��U�����������������������������������������������;��=�������*��U����������������;��=��A��]������������*U�����������������������[������������������C�����U���������������������K������������������������������ ��%��&��(��,��/��4��6��8��F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��o��q����������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������(���������
��
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|���������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}�����������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b���������������������������������������������������������������������������������������������������������������������������������������������������;��A��[����*��U����������������������������U�����������������U�����������"����AB[��m��r����������������.�C��_��`�����U����������������������������$��;��A��[��m��n��r��~������
*��C�����U�\�������������������������������;��=��A��]������������*U������������������������������������&��/��;��<��=��>��F��H��I��J��L��T��V��X��\]^o��q������������������������������������������������������������������������������������������������������������������������������������������!��#��%��8��9:��;<��[��\��]��^��`��z������������������������
����?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��AF��GQ��R��U��V��Y��]��a�����������������������������������*������&��;��=��A��]�������������������������������������*[��]��d��f��hU�����������������������;��A[�����������������*��C`�����U�����������������;��=��[��]��n�����
�*��U�����������������������������;��������������������������%��[��]��m��r���������������������9�.�������!��%��)��C�������U�������������������������������������������������������������������������U���������������L�������������������������������� ��%��&��(��,��/��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��m��o��q��r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������'�2����������
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|��������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}�����������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b���������������������������������������������������������������������������������������������������������������������������������������1������������������������%��A[��]��m��r�����������������*�3�������!��%��B��C�����U�����������������������������(��,��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��XY��Z��[��\��^��m��o��q��r������������������������������������������������������������������������������������������������������������������������������������������������������������������(�9�������
������������������������������ ��!"��#$��%'��)��+��-��/��1��3��5��7��9��;��C��\��^��_��`��y��z|���������������������������������������������������������������	��
������������%��'��)��/��1��7��9��>��?��e��g��i��k��w��y��z��{��|��}��������������������������������������������������������3��A��G��Q��R��U��a�����������������������������������������������������������������������������������������������������<������������������������%��A[��]��m��r�����������������������
���������� �0���������!��%��B��C�����U���������������������������������[��m��r��������'������C�����U�������������������y(,46HI��JL��OTV�������������������������������������������������������������]_`�����������

>?hkz{|}��������������������������������������&(��,��4��6��9��:��;��<��=>��Y��[��\��]^���������$��������������������������������������������������������������������&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��C��[]$_��{��|������������������������������������������4��>��B��D��E��dfh$z��|�����������������������������������2��@��A��F��G��U��X����������������������������������������������
��$��;��A��[��n~�����U��������������������$��;��=��A��B��[��]��b��~�����U�������������������$��;��=��A��[��]������U��������������	;[�����U���������$��;��=��A��[��]�����U���������������������%��;/=6A$Bb��&�6����S�^�.�&���U2�#�&;��<��=��A��O�8�����������U��������
��$��;��=��A��[�����U���������������������U��O����U��
;��A��������`�����U�������$��;��A��[��m��n��r��~��U������������
��$��;��=��A��[�����U���������������������$��;��=��A��B[��]��b~���U�����������������;��=��A��OGU��������
������%��;��=��A���������U���
��;��=��A��[��]���U���������������	;��A�����������U�������	;��A��[���U���������������������%��&��/��9��;��<��=��>��?��A��F��H��I��J��KL��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��8��:��<��=��?��A��[��\��]��^��`��z��{�����������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��F��Q��R��U��V��Y��]��a���������������������������������
������%��;��=��A��~���������U�����(��,��4��6��9��;��<��>��F��H��I��J��KL��T��V��Xo��q���������������������������������������������������������������������������������������������������������������������������������������������������!#%&��(��*��8��:��<��\��^��_��`��z{��������������������������������������
��4��>��?��B��D��e��g��i��k��z��{��|��}����������������������������@��F��Q��R��U��a������������������������������������������������%��;��=��A�����������U��;��A�����������U�����s(,46HI��JL��OTV���	��������������������������������������������������
�]	_`��������

>?h	kz{|}�������������������������������O5���;&��;��<��>������������������������������8��:��<��[����B��D��d��f��������@��F�����O3���:;��*�������������D��������������������������������������������$;��=��[��]��*���������������������������������������D��E��������������������������������&��'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��F��G��H��I��J��K��L��M��N��OQP��Q��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������X�������������������������������	��
������������������������������������������ ��!��"��#��$��%��&��'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��@��A��B��C��[��\��^��_��`��y��z��{��|����������������������������������������������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��4��6��7��9��>��?��B��D��O��T��c��d��e��f��g��i��j��k��w��y��z��{��|��}��������������������������������������������������������������������������������
������������2��3��@��A��F��G�������������������������������������������������������������������������������������������������������������������������������������������������������������������������'������;��<��=��>��A��]���������������*8��:��<��B��D�����������@��F��U�����������������������y��������������$��&��/��89��;��<��=��>��?��A��BF]��^��b�������������������������������������������������������� "$&��(��*8��:��;��<��=��?��A��[��\]��^y{������������������������4��B��D��d��ef��gh��i�����������������������@��A��F��G��T��U��V��W��X��Y��]����������������������������&��'��()��*��+��,-��.��0��1��2��3��45��67��8��9��:��;��<��=��>��?��A��K��XY��[��\��]��^��_��������������������������������������������������������������������������������������������������������������������������������������	�������������� ��!"��#$��%&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��_y��z{��|������������������������������������������������4��6��>B��D��T��d��f��h��j��z|��������������������������������������������������
����2��@��A��F��G��UX����������������������������������������$��;��=��A��O[��]������U��������������A����U���4$BGMNOPQb~�����������������
Oc�TU��WX�����7$ABGMNOPQbn~�����������������
Oc�TU��WX������������$��&��'��)��*��+��-��.��/��0��1��2��3��5��7��8��9��:��;��<��=��>��?��A��K��Y��[��\��]��^��_���������������������������������������������������������������������������������������������������������������������������	�������������� ��"��$��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��y��{��|�����������������������������������������������4��6��B��D��T��d��f��h��j������������������������������������������������
����2��@��A��F��G�������������������������������	������������������$����$��;��=��A��B[��\��]��^��b~��������9��;�������������������������A��G��U�����������������5��������������$��%��;��A��L��Od[��^��m��n��r��~�����������������
��*��;��C��_��`�������������������A��G��U�����������������������������$��;��A��O?[��n~�����U���������������((J($;ALBDG3KM3N3O/P3Q/RSUWY
Z[\]^_a$bEj#mnr~�����3�3�3�3��������%��3�3�3�3�3�3�3�3�3�/////
'
)
+
-/13579;>@B|
�3�������������3	3
333%')/179O3c3wy��������3���
����33AGTU6WX6�N������/�,�����3����3�������
;[�����U�������[�������������������C��]���hU���������������������;��=��A��OU���������(��,��4��6��:��F��H��I��J��K��L��T��V��X��Y��Z��[��_������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!��#��%��'��)��+��,��-��.��/��0��1��2��3��4��5��6��7��>��@��B��\��^��_��`��z��|�����������������������������
����>��?��e��g��i��k��z��{��|��}������������������������2��3��U���������������������������������������������������������������������������������������8		-A3B GMNOPQab!jn�����������������
Oc�TUWX�3����  A'Bb����U���'	A����U���O��������U�����O#����U��4$BGMNOPQb~�����������������
Oc�TU��WX���������$��;��A��OG[��m��n��r��~��U������������;����������$��9��;��<��>��A��[��m��n��r��~���������
&��(��*��8��:��<��C��{��������������4��B��D����������@��F��T��U�\W��X���������������������������e��

$$��;��A'B#GKMNOPQY[��\��]^��a
b"jm��n��r��~�������������������������%')+9��;��B|����
��Oc��������������������A��G��TU
WX�(������
����������4����$��;��A��KY[��\��]^��_m��n��r��~�������')+9��;��>@B|�������������������������A��G��U������������������O��������U�������$��;��=��A��O[�����U�����������������������%��;��=��ABQ����������U��X����;��=��A��O[��]���U���������������
;��A��Or���������U�������H$;��ABGMNOPQYabjn~�����������������������%')+|����
Oc��TU��WX�������C���������������������������������� ��%��&��(,/��46F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_��mo��q��r�����������������������������������������������������������������������������������������������������������������������������������������������������������������������9�.����������
����������������������!��#��%��)��-��/��1��3��5��7��9��;��>��@��B��C[��\��]��^��_`��z��������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>?��d��e��f��g��h��i��k��w��y��z{��|}���������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b����������������������������������������������������������������������������������������������������������������������������������������������
;��A��O8[���U��������
;��A��O)���������U���������A��o��q���Q��R��a��������$��A���������������������������T��U��W��X��;��=�������*������������������
U����������,��;��=��[��]��n�����
�*��������������������������������U����������������������������������������������������������������U��V��Y��]�����������������$��A�������������T��U��W��X��C��������������������$��%��;��A��[��m��n��o��q��r��~������������
��*��C��_��`����������������������������������D��E��Q��R��T��U��W��X��a���������������������������$���������������������������E������������������������������
D��E��8������AB[��m��o��q��r����������������.�C��_��`�������������������
DE��Q��R��U��VY]a������������������������������������������������������
D��E����������o��q�����������������������
EQ��R��V��Y��]��a��;��=�������*�������������������
U����������^���������������������������������� ��%��[��]��m��o��q��r�����������������������9�.�������!��%��)��C����������������������������������������

E����Q��R��U��V��Y��]��a��b���������������������������������������������1����������;��=��A��B]������������*����������������������������D��U��V��Y��]�������������������������Ao��q�������������������
DE��Q��R��a��������$��;��A��[��n~����������E��T��U��W��X�������������� ��������$��;��=��A��B[��]��b~�������������������E��U�����������������������$��A����������E��T��U��W��X����A��o��q����Q��R��a����������$��A������������E��T��U��W��X����������$��;��=��A��[��]o��q�������������E��Q��R��T��U��W��X��a������������������������ABo��q���������Q��R��V��Y��]��a��b����o��q�����Q��R��a��\������$��;��=��A��[����������T��U��W��X�������������������������$��;��=��A��[��]o��q�����������Q��R��T��U��W��X��a��������������������;��=��A��[��]���������T��U��W��X���������������$ABb����
TU��WX����U��������$��;��=��A��[����������T��U��W��X�����������������
a�������������������������������� ��%��A
[��]��m��o��q��r�������������������������
���������� �0���������!��%��B��C����������������������������������������DE��Q��R��U��V��XY��]��a��b�����������������������������������������A��o��q�����������Q��R��V��Y��]��a��;��=��A��U��������
;��A��O&���������U�������O/��������U�����O>����U���������C����������������������
�����������%��F��G��H��I��J��K��L��M��N��O��P��Q��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������!��#��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��\��^��`��z��|�����������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��7��9��?��DO��c��e��g��i��k��w��y��{��}���������������������������������������������������������3��A��G�������������������������������������������������������������������������������������������������������������������������������������������������;��O[���*��C����������������������D��E�������������������������%����������C�����������������������
D�������	�������A��������������������%��;/=6A$Bb�� �/����L�W�'� ���U2�#�&����U��6������������������������������ %��&��(��,��/��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��X��YZ��_��m��o��q��r�����������������������������������������������������������������������������������������	�����������������������������������������������������������������������������������������������$�(����������
�������������������������������� ��!��"��#��$��%��')+-��/��1��3��5��7��>��@��B��C��[��\��]��^��_��`��y��z��|�����������������������������������������������������������������������	��
������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}���������������������������������������3��Q��R��U��V��Y��]��a��b���������������������������������������������������������������������������������������������������������������������������������v����������&��/��9��;��<��=��>��?��A��FK��[��\��]��^����������������������������������������������������&��(��*��8��9��:��;��<��=��?��A��[��\]��^{�����������������������4��B��D��d��ef��gh��i����������������������������@��A��F��G��U��V��Y��]�������������������������������������������������$��'(��)*+,��-.01234��56��78��9��:��;��<��=��>��?��A��K��Y��[��\��^�������������������������������������������������������������������������������������	���������� ��"��$��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��?��A��_��y��{��|�������������������������������������4��6>��B��D��Tjz��|�������������������������������������������
��2��@��A��F��G��T��U��W��X�����������������������������������������:��?������������������,��.��0��2��4��6��=��?��A���2��U��OG����U��:��?������������������,��.��0��2��4��6��=��?��A���2��U��
;��<��=��A��O[8�����������U���������������������%��&��/��9��;��=��>��?��AF��H��I��J��L��T��V��o��q�����������������������������������������������������������������������������������������������������������������������������������������&��(��*��:��<��=��?��A��[��\��]��^��`��{�����������������������������������
��4��?��B��D��d��e��f��g��h��i��k��{��}������������������@��F��Q��R��U��V��Y��]��a��b���������������������������������������&��/��9��;��=��>��?��A��F��H��I��J��KL��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{����������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}��������������������@��F��Q��R��U��V��Y��]��a����������������������������������������������%��&��/��9��;��=��>��?��A��F��H��I��J��KL��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{�����������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}��������������������@��F��Q��R��U��V��Y��]��a���������������������������������n����������$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��~�����������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_��{��������������������4��>��B��D��z��|���������������2��@��F��Q��R��T��U��W��X��a��������������������������������������G����$��&��9��:;��<��=��>��A���������������������������������������&��(��*��,.02468��:��<��[��]��{�������������4��B��D��d��f��h�������������2@��F��U��X��������������������@������$��&��9��;��<��>��A��o������������������������������&��(��*��8��:��<��[��]{�������������4��B��D��d��f��h�����������@��F��T��U��W��X��a��������������������������T����������$��&��/��89��;��<��=��>��?��A��Bb������������������������������������ "$&��(��*��8��:��<��=��?��A��[��]��y{�����������������4��B��D��d��f��h����������������@��F��T��U��W��X�����������������������)��9��;��<��>��Ao��q�������&��(��*��8��:��<��{�����������4��B��D����������@��F��Q��R��U��a��b��������������D����������&��/��9��=��>��?��o��q�������������������������������������&��(��*��:��<��=��?��A��[��]��{����������������4��B��D��d��f��h�����@��F��Q��R��U��V��Y��]��a��b�������������������8������$��9��:��;��<��>��A���������������������&��(��*��,��.��0��2��4��6��8��:��<��]{�����������4��B��D��h�����������2��@��F��T��U��W��X�������������;��A��U��7��&��9��;��<��=��>��?��A��������������������������������&��(��*��8��:��<��=��?��A��[��]��{�������������4��B��D��d��f��h��������������@��F��U�������H����(��,��4��6��9��>��o��q����������������������������������������������&��(��*��:��<��_��{���������������������4��>��B��D��z��|���������@��F��Q��R��U��a������������������������q����������$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��{��~�����������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��]_��{��������������������4��>��B��D��hz��|���������������2��@��F��Q��R��T��U��W��X��a��b������������������������������������������$��;��=��A��Bb���U�����������������������G����������&��/��9��;��<��=��>��?��A��Bb���������������������������������&��(��*��8��:��<��=��?��A��[��]��{����������������4��B��D��d��f��h���������������@��F��U��V��Y��]������������������&������$��&��;��=��A��Bb����������������������������[��]��d��f��hU�����������������������c��$��(,469��:��;��<��>��A�����������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_{���������������4��>B��D��z|������������2��@��F��T��U��W��X��������������������������7��&��9��;��<��=>��A������������������������������&��(��*��8��:��<��[��]{�������������4��B��D��d��f��h�����������@��F��U��X�����������������<����������%��&��/��9��=?��o��q����������������������������������&��(��*��=��?��A��[��]��{�����������������4��d��f��h�����Q��R��U��V��Y��]��a��b�����������������<����&��/��9��;��<��=��>��?��A��������������������������������������&��(��*��8��:��<��=��?��A��[��]��{����������������4��B��D��d��f��h��������������@��F��U��������u������������%��&��(��,��/��4��6��89��=��>��?��o��q��~���������������������������������������������������������������������������� "$&��(��*��:��<��=��?��A��[��]��_��y{���������������������������4��>��B��D��d��f��h��z��|�����������@��F��Q��R��U��V��Y��]��a��b������������������������������v������������%��&��(��,��/��4��6��89��=��>��?��o��q��~���������������������������������������������������������������������������� "$&��(��*��:��<��=��?��A��[��]��_��y{���������������������������4��>��B��D��d��f��h��z��|�����������@��F��Q��R��U��V��Y��]��a��b������������������������������H��(��,��4��6��9��>��o��q��~��������������������������������������������&��(��*��:��<��_��{���������������������4��>��B��D��z��|���������@��F��Q��R��U��a�������������������������p������������ %��&��(,/��469��=��>��?��o��q��~��������������������������������������������������&��(��*��:��<��=��?��A��[��]��_{���������������������4��>B��D��d��f��h��z|����@��F��Q��R��U��V��Y��]��a��b������������������������%��9��;��<��>��o��q�����&��(��*��8��:��<��{������������4��B��D����������@��F��Q��R��U��a������������
��������A��V��Y��]��������������A��q��t�����Q��R����������q�����Q��R�����A��t���������������"��A	f��q��{��������Q��R��V��Y��]���������������	��������A��V��Y��]�����c��_	 ""%AFa8eeTggUjjVooWqqXttY{{Z[��\������C�[`y|��"��$��(��-��/��2��5��6��9��<��>��@��CXY
_d%%i01j47l>?pBBrDEsKKuMMvOOwTUx``zcm{pp�ww�y}�����������������������������������������������
��23�@A�FG�QR�TY�ac�||�������������������������������������������	(` 4;4��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���X��������������������������������������������������������������������������������������������	�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,,0����������$$2����������������������������������������������������������������������������������������������������������������������������������������������44')'..	+
&
(/& %0)31	




&	
	
	
	
((+   





%%%	+!!","9	,,!!#$#&
$$
!:-78"#78	
--"#( %
))56'56'01/****22"			$$
#
3))%%	"



&('						!

			

"



	!

"#
	-#

./0,  12
,
3$
 $$
		!

*+*+&'#

 (g &&(*,46:<<>?FZ\\1^_2oo4qq5{{67��8��O��U��e��k������C�[`�y|��������������������
��������������������(�*
7E*1G47O>?SBEUKKYMMZOO[TU\``^cm_ppjrskwwmy}n��s��t��u��v��w��x��|��}���������������������
��23�@A�FG�QR�TY�ab�����������������������������������������������4~DY|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flR�\�y�wX�fecQ�Q6q�ys�rrc|�|�o�Kz��N#c������x���w�wc0�G:�;3�3z���z�
�E�FK�;	"�*	-7	L	77)	,s-	9�##m�p��	���	�(	")	��)m*�	k�	����	��"	�*�		v�	��! I��	m	m	R�=����|�<��h>�C�+.��j�	�	�	�	�*				��O			q�&	%	%
|�{c�Z�Zq�}q�o�pp�<M�M���z�z>�>5�5+�+}�}��0�O�	"	Y&()*,-./01234789:<>?FHIJLMNPQRSTWXYZ\^_n~����������������������`lm�����������������������$+ ���������������������$*06<�G	�	�	�	�	Q	�.	|	��	��	B	|�Q�[�����/�	�	�	�	�	�	�	�	:.J
Q�W��W��h����������� &,28Q�[������*06<BHNTZ`flrx~�����s�s���������Q���.�{���B����y�����p����������
��$+��$+^djpv|������������������G	�	�	�	�	Q	�.	|	��	��	B	�	�	�	�	�	�	�	�	"|���|�դ'��^#�+tvlib/fonts/raleway/Raleway-Regular.eot000064400000502264147361034410013637 0ustar00�����LP��[ P� �{RalewayRegularVersion 4.026Raleway Regular FFTM������GDEF2�,��t�GPOS�JJo����GSUB����OS/2��gX�`cmap^-R���cvt ��)��fpgm��Z��gasp�lglyf��'2�!head��,6hhea��d$hmtx&���loca�'�*@\maxp�\� nameA�MS�4posta�1�a�#�prepO(�(��{�_<����^#�+tv�(� u��?�(�M--in/��QO��XK�X^27��P [NONE�
����� �� 
`2M��\$E�%k&�(�/�E
, A>�4�P�A�A\d7�.	,&"!#[4"Q2J$�A�F�!�D�7�"E/��Y�*�YaYMY�*�Y�Y��YGYmYY�*nY�*�Y_ b�O�
x�uX82+�A�1!!iK%'n(K'Jj(GK�K�KN�KGKS'iKi(_K� ORF-��5�V2�B��[1+�45��W�/I=@0�0=)FI:A@0�6
2�H�$�#�1lRZ"�A#"�,=?"'"�#�!����������*aYaYaYaY��Y���"Y�*�*�*�*�*�@�*�O�O�O�O�[Y'K!!!!!!!!!!!!�!%'K'K'K'K'��K���Z*GKS'S'S'S'S'CS'RFRFRFRF[K�!!�!!�!!�*%'�*%'�*%'�*%'�Yn(�"n(aYK'aYK'aYK'aYK'aYK'�*j(�*j(�*j(�*j(�YGK�,G�������������!��Y�K�Y�K����YKKGYNGYNGYNGY:NN$
YGKYGKYGKG���YGK�*S'�*S'�*S'�*
'�Y_K�Y_I�Y_K_ � _ � _ � _ � bObO�!Q�ORF�ORF�ORF�ORF�ORF�ORF-��u�u�u���*S'�ORF?Y�YY((Y'Y�N�Y�Y(K�*j(�*S'1Y�YY(�*i'�!!����!�*S'�!!�!!aYK'aYK'��������*S'�*S'�Y_/�Y_K�ORF�ORF_ � bO�*S'�*S'�*S'���K�E�E�"�1�#�#J*J*�W�6�E�E�W+�2�#�5�,F+11*:6+2=�#+*%+"22=9#5+62��-XKMaYaY�Y�*_ �Y���&�Y�zY�]h�Y��Y�YY�&aY�!-�]�]zY�&mY�Y�*�YnY�*bh+*x�Y�E�Y�Y�SYbY�0�Y}A!!`;J�JDK'&�RJRJJ9�JGJS'8JiK%'��'�CJ:J7JM�J�J-&
K$K'K'9�J.'� �K��"+JIJRJ5J����&�*R'�
)�]RJ{!hSaCY�J���zY�J�&!-��YJkY"K����CYbJ�YJ8Y\JS43;�*%'b��
+ �r��E:�E:�YGKc�c��Y�&cS�J�&9�YGJ�YGJ�E�:mY�J�K�!!�!!����!aYK'�K�K�&!-�4-���]RJ�]RJ�*S'�*R'�*R'�0-&hhh�E:Y�JSY�J"�����)�#�&9�*i(-�TKC�YGK��8���&9�*%'�Yn(�Yn(aYK'aYK'aYK'�*j(�YGK�YGK��GYNGYmY�KYGKYGKYGK�*S'�*S'�*S'�*S'�Y_K�Y_��_ � _ � _ � _ � _ � bObO�ORF�ORF---�u�OwK�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!aYK'aYK'aYK'aYK'aYK'aYK'aYK'aYK'�3�
�Y�K�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�*S'�ORF�ORF�ORF�ORF�ORF�ORF�ORF����C����d�A�A:A�A�A�@�@�P<@7@WP�'�)_V�A*.�E�E`)`?��(�&�v�(c�&� �&"�$�#�v�(c�&�!'(d�1K%�Y^)n)!!�_n�*>7�*b�+N"�O;5HtY�6�>�-[+0"�#8"�#�S6S'f� DL���A��-,	�A�S�>�A��9F�G�1+#&�*�K!l(j(�K�Qi(<NF=p'JCTS,mTTTk,�T�T�2T�T�T�T�,T�,:T
$�KL�)
2(%��)(MY!-�*!-�*;N:j(&�RFRFRFKGK�KgF�F�DF|�J%'�%'Y)�0�*E/H09,([4	Q2[,�&"�$�#�v�(c�&�!�&"�$�#�v�(c�&�!�&"�$�#�v�(c�&� �A1$+�;����2+*+X��/& �����d
~~��������-37Y����$(.15����_cku�)/	!%+/7;IS[io{������       " & 0 3 : D p y � � � � � � � � � �!!! !"!&!.!T!^""""""""+"H"`"e%�����
 ����������*07Y����#&.15����bjr�$. $*.6:BLZ^lx������         & 0 2 9 D p t � � � � � � � � � �!!! !"!&!.!S![""""""""+"H"`"d%��������������������l�j�e�a�S�Q�N�-�����������������������|��
�����������������~�x�t�����������z�x�r�p�n�f�b�Z�X�U�O�N�F�C�?�>�<�;�:�7�.�-�(��������������������������u�s�j�i�f�_�;�5��������s�W�@�=�����
	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc��������������������������������Ztfgk\z�rm�xl����u��iy�����n~����ep�D��o]d���QRWXTU���<c|ab��[{VY^������������������s���|���@J������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSQPONMLKJIHGF(
	,�
C#Ce
-,�
C#C-,�C�Ce
-,�O+ �@QX!KRXED!!Y#!�@�%E�%Ead�cRXED!!YY-,�C�C-,KS#KQZX E�`D!!Y-,KTX E�`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,�CTX�F+!!!!Y-,�CTX�G+!!!Y-,�CTX�H+!!!!Y-,�CTX�I+!!!Y-,# �P��d�%TX�@�%TX�C�Y�O+Y#�b+#!#XeY-,�!T`C-,�!T`C-, G�C �b�cW#�b�cWZX� `fYH-,�%�%�%S�5#x�%�%`� c  �%#bPX�!�`#  �%#bRX#!�a�!#! YY���`� c#!-,�B�#�Q�@�SZX�� �TX�C`BY�$�QX� �@�TX�C`B�$�TX� C`BKKRX�C`BY�@���TX�C`BY�@��c��TX�C`BY�@c��TX�C`BY�&�QX�@c��TX�@C`BY�@c��TX��C`BY�(�QX�@c��TX��C`BYYYYYYY�CTX@
@@	@
�CTX�@�	�
��CRX�@���	@��CRX�@��	@���CRX�@��	@�@�	YYY�@���U�@c��UZX�
�
YYYBBBBB-,E�N+#�O+ �@QX!KQX�%E�N+`Y#KQX�%E d�c�@SX�N+`!Y!YYD-, �P X#e#Y��pE�CK�CQZX�@�O+Y#�a&`+�X�C�Y#XeY#:-,�%Ic#F`�O+#�%�%I�%cV `�b`+�% F�F`� ca:-,��%�%>>��
#eB�#B�%�%??��#eB�#B��CTXE#E i�c#b  �@PXgfYa� c�@#a�#B�B!!Y-, E�N+D-,KQ�@O+P[X E�N+ ��D �@&aca�N+D!#!�E�N+ �#DDY-,KQ�@O+P[XE ��@ac`#!EY�N+D-,#E �E#a d�@Q�% �S#�@QZZ�@O+TZX�d#d#SX�@@�a ca cY�Yc�N+`D-,-,-,�
C#Ce
-,�
C#C-,�%cf�%� b`#b-,�%c� `f�%� b`#b-,�%cg�%� b`#b-,�%cf� `�%� b`#b-,#J�N+-,#J�N+-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-,#�J#Ed�%d�%ad�CRX! dY�N+#�PXeY-, �%J�N+�;-, �%J�N+�;-,�%�%��g+�;-,�%�%��h+�;-,�%F�%F`�%.�%�%�& �PX!�j�lY+�%F�%F`a��b � #:# #:-,�%G�%G`�%G��ca�%�%Ic#�%J��c Xb!Y�&F`�F�F`� ca-,�&�%�%�&�n+ � #:# #:-,# �TX!�%�N+��P `Y `` �QX!! �QX! fa�@#a�%P�%�%PZX �%a�SX!�Y!Y�TX fae#!!!�YYY�N+-,�%�%J�SX���#��Y�%F fa �&�&I�&�&�p+#ae� ` fa� ae-,�%F � �PX!�N+E#!Yae�%;-,�& �b �c�#a �]`+�%�� 9�X�]�&cV`+#!  F �N+#a#! � I�N+Y;-,�]�	%cV`+�%�%�&�m+�]%`+�%�%�%�%�o+�]�&cV`+ �RX�P+�%�%�%�%�%�q+�8�R�%�RZX�%�%I�%�%I` �@RX!�RX �TX�%�%�%�%I�8�%�%�%�%I�8YYYYY!!!!!-,�]�%cV`+�%�%�%�%�%�%�	%�%�n+�8�%�%�&�m+�%�%�&�m+�P+�%�%�%�q+�%�%�%�8 �%�%�%�q+`�%�%�%e�8�%�%` �@SX!�@a#�@a#���PX�@`#�@`#YY�%�%�&�8�%�%��8 �RX�%�%I�%�%I` �@RX!�RX�%�%�%�%�%�%I�8�%�%�%�%�
%�
%�%�q+�8�%�%�%�%�%�q+�8�%�%����8YYY!!!!!!!!-,�%�%��%�%� �PX!�e�hY+d�%�%�%�%I  c�% cQ�%T[X!!#! c�% ca �S+�c�%�%��%�&J�PXeY�& F#F�& F#F��#H�#H �#H�#H �#H�#H#�#8�	#8��Y-,#
�c#�c`d�@cPX�8<Y-,�%�	%�	%�&�v+#�TXY�%�&�w+�%�&�%�&�v+�TXY�w+-,�%�
%�
%�&�v+��TXY�%�&�w+�%�&�%�&�v+�w+-,�%�
%�
%�&�v+���%�&�w+�%�&�%�&�v+�TXY�w+-,�%�%�%�	&�v+�&�&�%�&�w+�%�&�%�&�v+�w+-,�%�%J�%�%J�%�&J�&�&J�&c��ca-,�]%`+�&�&�
%9�%9�
%�
%�	%�|+�P�%�%�
%�|+�PTX�%�%��%�%�
%�	%��%�%�%�%��%�%�%����v+�%�%�%�
%�w+�
%�%�%����v+�%�%�
%�%�w+Y�
%F�
%F`�%F�%F`�%�%�%�%�& �PX!�j�lY+�%�%�	%�	%�	& �PX!�j�lY+#�
%F�
%F`a� c#�%F�%F`a� c�%TXY�
& �%:�&�&�& �:�&TXY�& �%:��# #:-,#�TX�@�@�Y��TX�@�@�Y�}+-,��
��TX�@�@�Y�}+-,�TX�@�@�Y
�}+-,�&�&
�&�&
�}+-, F#F�
C�C�c#ba-,�	+�%.�%}Ű%�%�% �PX!�j�lY+�%�%�% �PX!�j�lY+�%�%�%�
%�o+�%�%�& �PX!�f�hY+�%�%�& �PX!�f�hY+TX}�%�%Ű%�%Ű&!�&!�&�%�%�&�o+Y�CTX}�%��+�%��+  ia�C#a�`` ia� a �&�&��8��a iaa�8!!!!Y-,KR�CSZX# <<!!Y-,#�%�%SX �%X<9Y�`���Y!!!-,�%G�%GT�  �`� �a��+-,�%G�%GT# �a# �&  �`�&��+����+-,�CTX�KS�&KQZX
8
!!Y!!!!Y-,��+X�KS�&KQZX
8
!!Y!!!!Y-, �CT�#�h#x!�C�^#y!�C#�  \X!!!��MY�� � �#�cVX�cVX!!!��0Y!Y��b \X!!!��Y#��b \X!!!��Y��a���#!-, �CT�#��#x!�C�w#y!�C��  \X!!!�gY�� � �#�cVX�cVX�&�[�&�&�&!!!!�8�#Y!Y�&#��b \X�\�Z#!#!�Y���b \X!!#!�Y�&�a���#!-@�?4>U>U=(�<(�;'�:'�9'�8&�7%�6%�5$�4$d3#�2#�1"�0"�/!�. �-�,�+�*�)�!� �����@�[@�[@�[@�[@�ZKUKUYY
KUKUYY2UK
UKU2UYp
YY?_����Y?O_�	dUdUYY_�@@���T+K��RK�	P[���%S���@QZ���UZ[X��Y���BK��SX�BY�CQX��YBs++++s+s++s+++++++++++++++++++++++++++++++++++++++++++++++�
�;�������+���
��'%(����J�222222Pj�6�0Rv�����Jx�:|��V���:�$b��"Hh���		<	T	~	�	�

d
�
�B`���$:Rl|��
@
|
�R���,Tx��6���Dx��4f���88R�d��DL�$Rfv��"J���"dt|�� ���� 2DX�������0j|�����"4FXj��&6H\��
.@P`p���(8Jp���   & p � � � � � � � �!!!&!8!J!\!n!�!�!�"0"B"R"d"v"�"�"�"�"�"�"�"�###0#B#V#h#z#�#�#�$
$$,$<$N$^$j$|$�$�$�$�$�$�$�%%(%:%L%`%t%�%�%�%�%�&&&0&D&X&j&|&�&�'''.'@'R'd'v'�(H(Z(l(�(�(�(�(�(�(�(�)))&)6)B)N)`)l)�)�)�)�***&*8*L*`*r*�*�*�*�*�*�*�*�+++,+>+P+`+�+�,,,0,D,�,�-~-�-�-�-�-�-�-�-�-�....&.8.J.�.�.�.�///(/:/L/\/n/�/�/�/�/�/�/�/�00 020D0V0h0x0�0�0�0�0�0�0�11*1D1\1t1�1�1�1�1�242<2D2L2`2�2�2�2�2�2�2�2�3
333"3*3^3f3z3�3�3�3�44$4<4f4�4�4�4�55$5H5X5p5�5�5�5�66666�6�7777b7t7�7�7�7�7�8.8r8�8�8�8�8�99:9B9X9�9�9�:&:H:Z:�:�:�:�:�:�:�:�:�;&;x;�;�;�;�<"<X<�<�==`=�=�=�>6>L>�>�>�??2?B?h?�?�?�?�?�@@@(@Z@�@�@�AA*ATA�A�A�B6B�B�B�B�C*C<C�C�C�C�C�C�D*DfDxD�D�D�D�E6EnE�E�E�E�FFF.FjF�F�G<GVGnG�G�G�H:H�H�I(I4IlI�I�JJ:JnJ�J�J�J�K&KTK�K�L\L�MMPMdMxM�M�M�M�N6NpN�N�N�N�OO>OlOtO�P>P�QQ"Q4QFQ�Q�Q�Q�RRR$R8RpR�R�R�R�R�R�SSS S(S:SJSRSZSlS~S�S�S�S�T
THTZTjT|T�T�T�UUPUbUtU�U�U�U�U�U�U�VVV&V8VJV\VnV�V�W*WpW�W�X.X�X�X�X�X�X�X�X�X�X�YYY Y4YHY^YtY�Y�Y�Y�Y�Y�ZZ$Z:ZPZbZrZ~Z�Z�Z�Z�Z�Z�[[[,[8[L[^[p[�[�[�[�[�[�\
\"\:\R\j\�\�\�\�\�\�\�]
]]6]N]f]~]�]�]�]�]�^^^6^P^h^z^�^�^�^�^�^�^�__ _2_�_�_�_�_�_�```,`@`T`h`|`�`�`�`�`�`�aa&a:aNada�a�a�a�a�a�a�bbb(b<bPbdbxb�b�b�b�b�b�cc$c8cJcZcnc�c�c�c�c�c�c�dd2dDdVdhdzd�d�d�d�d�d�d�ee e0eBeTefexe�e�e�e�e�e�e�fff(f:fJf\flflflflflflflflftf�f�f�f�f�f�f�gg$gHghg�g�g�h�h�h�h�h�h�i>ifi�i�jjtj�j�k(khk�k�l"lnl�l�m0m�m�n"nVn�oXo�ppJptp�qqxq�q�r8rnr�r�s6s�s�t$ttt�t�u`upu�u�u�u�vBvfv�v�v�v�v�ww�w�xx6x\x�x�x�yyZy�zz�{2{\{�{�||`|�|�|�}4}V}�}�}�~d~�~�$Pr�����,�P�d�������f�����6�P�����Ƃ��0���������������N�V��������$�,�4�t����L������������T���Ĉ�D���ވ��f���‰ʉ҉ډ����
�H�r�����"�f���ʌ,�v���ލ�j���֎&�<������.�V�x�����Ώ����$�0�<�H�T�`�l��2.�%#!"&543!24#!"3!27.!�@�4��

a�i4�
���8��
��i\��@
rr++23/017353\DDD���ppE
����?3�20153353E;$;
����%��?@		?3?399//333333333301#3##7##7#537#537337337#��/��2:3�2:3q~/��1:2�1:2t�/�/��6����6�3������&��C/>@@ .26:!
::++!!	?3/33332?3/33333901%#773.#"#".'732654.'.54>32!..&*..�)1: ]W*WEKo;%E^86fY(#5AK(U_/`GJe4AsI/QE��|�}�cG=*0,K@1H0-#9#>=,5"*E9B[/$(����/?E)@@EE8((0 	rCBBr+22/32/3+22/32/301".54>32'2>54.#"".54>32'2>54.#"		�)D))D))D((D)--,-j)D((D)*D((D*----�M#����&B'(B&&B'(B&'00//�&B((A&&A((A'(/00/T[����/����<@,;	$	r3	r?+2+2901!.54>3232>53#".54>7>54&#";��+4/Q2/K,3Q1)E(2M)6[D%:0UsC>h=3Q-.G(:-!4.+�u.A5,F*#?*-G=9@),=1Wp?L�d91V:6QA35'2.%7-�eE	����?�0153E;	��,�����
//01467.,R:4-'D;3*?#Zf�bXeh0N�[?�� �����//01'>54.'7�"@*2;D(,5:QZ?��?[�N0heXb�>� @
		�?�2923017'7'37'W+DE)ED, *+">$II$>AA4�k�	/3333301##5#5353k|?||?8��8��P���b��/�99017#53VBQT__TA�e0�/20175!A$�??A|b
�r+201353A;bb@��rr++01	#@�(M��:�7��-U�r
r+2+201#".54>324.#"32>-ArHHqBBqHHrAE.R66R//R66R.%X�NN�XX�OO�XGl==lGGl<=k.�;@
rr+23+22/301%!53#52>73����&1062"F>>>�B"�,�E)@
r'r+2+2990134>7>54.#"'>32!,"B6>7!;, 4(	+#7K-=W.#7;/@&f"ED?#-0	/"+H*);+,-+>&�m�@.@'r/3+29/3301%#"&'732654&+532654.#"'>32W-@$:hELr/V@JW[TMR&A*9W,@V1>^6 ;�2L0<\2=6++5IDDQ:H8)63-*#4-P6(D.��;

@
		r/+9/9333015!533#%!d��c.XX���<�6>��_#�k�;"@
r/2+29/301"&'732>54.#"#!!>32Kz-a:2O/-M0.T?OW��1L,Ai>Cp�K="1<,N31K*)'�?�:fBFj;4��/�.@'
r/3+9/3301%4.#"4>327.#"32>".54>32/AoD-O:1X;8[,pGNvBBsJGrC�3T32U32T33T�Cm@ :'b�J=3(=G^��\�GBou2T23S22T22T2"��
G�r+2/01!5!#����N?�:2���!3C@''88@0
r+2/39/39901%#".54>7.54>324.#"32>32>54.#"EqCGn?+A"6 '@O('OA'!6 'A'E5? +Q34? +Q4��/H"$G/,G(&G+�>\39^:-I2
+:#,C/.C,#;+

5H($7&%C.#6'%Dp&77'&67$�f;.@
'r/3+29/30132>7#"&'32>54.#"72#".54>$ApC.N<1W<7\,qFNvBAsKFsC�2U22T32U33TGCm@ ;&b�J>2(=G^��]�GBnt2T22T22T23S2A{�
rr+2+2015353A:::�bb�\bbF���
@
	?3?3/3301537#53F:4B�bb�T__T!���@	/3/3901%
%!���@�]�I��K�D�rf�/3�20175!%5!D.��.�11s117���@	/3/3901%5-5�]@����K��I�"��$(@
&&%
r+2?33/0174>7>54.#"'>3253�%1+'>##?0/AR+%F7!'0*9;�,?.#3$,9.):0G1(7'
 70�kk/�n
[Uh)@^'1
fEL '�;/2�2|/3�22/339/3012#".'#"&54>324.#"'>3232>54.#"3267#".54>>=.#"326�J�e:6(!#
Y5GO8U,,C61'H$R.8A 
)	1ZxFEx\41YxF*J%
(U*K�d9=h��	
C0#?'02[7e�U:B;&**L:3:0H)'$=H$�.*@FI}^52[}IG|^5 8e�QU�b5��
!&()$*
��
D@'	
		
	

rr++29/33399<<<<013#'!#5;'J\��[KՏ��:��_��Yo�&@rr+2+29/3901%#!!24.#!!2>32>54.#o6[6��V2I'60=GF 7#��	$:#�v�#6 4!�5S/�5S-5Zb5$=&��&=�%<"$;$*����$@ 	r	
r+2�2+2�2014>32.#"32>7#".*-V~P_� 7FO'@bC"(Ha9(TI:\q6IzY0hA}g=WD"/73Ui6;lS1:.5J&?i�Y��
@	rr++2301332#4.+32>Y�q�LS�h?xW��Xx>�_�bl�XdU�K��N�Y6�@


rr++29/3301%!!!!!6�#�r[��>>�>�;��Y+�	@rr++29/3013!!!!Y�tN���>��:��*���� &@#""
%r
r	r+++39/3201".54>32.#"3267#53#vGzZ11XxGi�"6"rF;_D#(Ja8At5eZ��;=h�DH�d:VE$B>2Tj9<kS/ADJz,6��Y��@
	rr++9/32301#!#3!�E�[FF��:L����<Y���rr++0133YF�:�����
r	r++301732>53#"&'"E-4@"F.\L1L Y#GjGw��P�`4Y��@
	rr+2+2901333	#YF�M��1O���d���rd��Y9��rr++30133!YF��x>Y�@	rr+2+2901!##3	3��,��FHGB�?�����:Y��	@r	r+2+29901#33#�F:�FAE����O�;*����'@	#
r	r++2301".54>3232>54.#"wKzX02[zGKzW02Zz��&Fa:=aE$&G`:<aE%<g�DG�e;>h�CG�e:h:kS13Uj7:jT02UjYR�
@rr++29/3013!2+32>54.+Y&.M8 3\>��*>"(A'��&AO):g@��D.J+,J+*����'+@

*r
r	r+++3301".54>32'2>54.#"73#wKzX02[zGKzW02ZzG=aE$&G`:<aE%&FazE�E=f�DG�e;>h�CG�e:?3Uj7:kS13Uj7:kS1��Yg�@
r
r+2+29/33013!2##32>54.+Y,.L9'G0�O���*>"'A(��&AO)3Z>
����D.K*+I- ��=�2@*".r	r+2+29901.#"#".'732654.'.54>32�(29 ]W)XDLn<&D^87eZ'#5AK(U_0`FJf3ArJ/QEAG=*0,K@1H0-#9#>=,5"*E9B[/$Q�@	rr++2301###5!Q�F�@��x�>O����@	
r	r++3201".5332>53zTtDE4XBDY3F Gr<e�Df��7jT13Ti6f��G�b:
��@	rr++29013#V��I��@����o�:��$@
r

r+2+2/2/29013733##3dBdeC|�L��>��=��K�������u�:_����As�@
	r	r+2+29013	##	U��O��O��P����5����+��^h{�@rr++29013#]��L��F����~�B��
�S�	@	rr+23+23017!5!!!�%,�#��7Q>7��>X�����//32013#3Xw77(9�f9��rr++01#i�L�L�:�2�����//320153#53288x(9�9��+/���r+2�2013#+�:�<��/��iW��A����/3015!A}>>>1l����/�90131G<,�]!���'8+@!66$/$r
rr+223+2+9/3330174>3254&#"'>32'./#".%>=.#"326!8cA&R NE*Q,3b3`p
#p:2Q-]"I%IZ:'1U�1G',BN0##na�
6&-1+I
L
:23!&K��A�'@rr
rr+2+++201"&'#3>32'2>54.#"J=h=D#bA7W> %DYE*H4/S8(E5"38
?0e��5A.Ma37`K+<"<K(7a;$;#�/"'�� @		rr++2301".54>32.#"32>7-9_G'BvMIpBO04V34V4"?/CAW
+Lb7JzHC9(-6^<;`9)%;!(��7�/@+!
rrrr++++332014>323'.=#".5.#"32>(=lEAgD j96[C%�
:I$*D16F)83"J{JE1>�x
6 33<,La�$;##<L(*L; #0'��-%!@i"	rr+2+29/]3901".54>32!3267!.#",8`F'CvKMsB�B5U23[;BY��5U33T5
+Kb8IzIJyH8W34*%<!'9V11Wk�@
	r
r++2|?333013#5354>32.#"3#dHH%E/:
*/3���6@\11JF6�-(�!"6!@#-
rr
rr++++33301".54>3253#"&'732>='2>75.#"5ZA$#AX6Cc"=EuEYn#*g:3U3h&90 8G&,E/5G,K`37aL+D2m��Hc2@6!10%J8g1;9%.�&;!%=L&*K; K�@	rr
r+2++29901!#4&#"#3>32D>:&K9DDo?-?'#XY'C+����:E =Q3K���
??�2013353KDDD	��vdd���K���
r/2+�201"&'732>5353!;!'*D,F.D�.
+$��.H(+ddK	�@
	rr
r+2++901!#33��oDD'K��h����N����rr++20133267#"&5ND$
7.7��'7
6/KR$%@rr

r+22++293301!#4&#"#4&#"#3>32>32RD:9;]D8::^D>!g?AP	$e@,=%#[VTB��#\URC��	v=BJ<BD ;S3K@	rr
r+2++29901!#4&#"#3>32D6:(N;
D>DV.+<$#\U'C+��	v&9  ;S3'��,#@	 
rr++2301".54>3232>54.#")8_E&&F_88^F&&E_�3V44V44V44U4
+Ka68aK++Ka86aK+:_78a9:`8:_K�+A'"@$#rrrr+2+++2901"&'#3>32'2>54.#"UAgD=h;6ZB%;jZ+D16F)83"6G
D2���e1=-La4I{J<#<K(*L:"%.�%;#(�+&"@rr

rr+2+29++01".54>3253#'2>75.#"5W>"&C[4=g=DMd)C3"2:+E41T
,La57aK+?0f�"Av<!8"�1'$<L'8`9KO@
r
r++?33301#3>762ODgD@Y2
�H?��	}7D ���+@
rr+2+29901"&'732654.'.54>32.#"�@n(,Y2=L%E06I%3Y7<\!M/ :%8);X0n
*+0)%1.!!3)3C#&". '"!4/IR��E�@

rr+2+2�3301%#".5#53533#3267E"03HHDxx%.-!u6��6��F��	@
r
rr+2+2+299017332>73#./#"&FD=<(K:D"uDRT�2��YX#A+H�I
6F<Dr	@	r
r++2901333��G��C�	�;��	 @	

r
r+2+2229013##37'373�C�;ml;�B�`X=BC<W`	����	�=�ש����	@

r
r+2+2901?3#/#[��M��M��M��	�������� 
	@	
r+2?399017>733&'i�H��D��)	
�DB	�=�`!�		@	
rr+23+23017!5!!!]�����Z�W.�3.�X35�����//33013#"&54&'52>546;�7^^���$
%��9
!49V�~��//013V;���w2�����//33015323+53467.52^^7

�9��4!��
9%
$B��X�
�	/33�220174>3232>53#".#"B(43
++!!7/
� &%[����
�
?/�201#7#5�DDD���pp+��
�)'@%%

$$?3/333?3/333015.54>753.'>7#3U?"9hH%JeAH+<0CHT%�*J/'=*xo0L[0DwNttA8)(�_(*:nz1X<�&;G4����:'@%::(77,3	rr+2+29/3232/3301!!>54.54>32.#">323267#".#"4P��.6'1R26a(N) 5'.&$.,*946:t6��.G? -IBD&/N.81*)1 5!!?@K/!?B*				4


5}�'"2�'//3/301>327'#"&''7&5467'732>54.#"�9!!9F"HIJ:!!:GG$F!;!8""8!!8"!9!�G!H99HEEG2=9G!�%<#$>$&<##>��.@

r
?+29/93�22333013#3##5#535'#5333�To!��F��pV�L��Mn060��040X��~W�~��//9/�01##�<<<�i��i�/����?R!@F=I@MP8 
1'r/3+2901%#".'732>54.'.5467.54>32.#"2%>54.#"&'�&<F""=1(-%I*!=(&;8Y29Z0%:-!6*2!<&K9$G;"��2;7
*>.�5&-C,!*#!2#'%%G3->(3M+"
1"9,&:+2|%*'&+%��=y��0���'L@
:2
rD(`	r+2�2+2�201".54>32'2>54.#"7".54>32.#"32>7�O�c77c�OO�d77d�OFwZ32YxGFxY11YxN.TA'8V:BgB
-0(<'/94,
B
4P6b�NM�a66a�MN�b6%/VvHEwX11XuFEuY1]!=U5*SD)963= *@,"6&0Zy�#2+@*-!')$�@�?3�29/93332/301"&5463254&#"'632#./'2676=.#"�1ETA:+2-8FEFP	
	I!80-9-Z?/0=+2%.ID�
4"-4	%()B��
$@
	/333/3933017'?')���������;��;�%�;��;�I~l
�/�301#5!5<��l�>A��0�/20175!A��??0���&6?%@?0446>'
r26`	r+2�2+2�29/3301".54>32'2>54.#"32#'##72654&+�P�c77c�PO�d77d�O\�W1YwGGwY11XxR�(<#.o:ju5�(+1&�6b�NM�a66a�MN�b6$R�`EvX11XuEEwX2'*B# 9(����8(*5���6�W��2.���	r+2�2014632#"&7327>54&'.#"21"#00#"14



	�#//#$01A

		H=�@	/3�2/3333/0175!##5#5353HC�?��?=99L9��9��$�]+"@B D?2�29014>7>54&#"'>323$7+@+33!2"
'F0II,0,,��4E.%+!D3*)*+#�_+,@
&BD?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-I�0)#' #')" !'"2"-	9&"2��1l���R�,(	!@ 	rrr+2+2+299/01332>733#.=#".'#RD=>'K:D>N*2 
D	��YX#A+H�O< B#;"&��"��-�#@

r+233/39/3330146;####.7%#3"���F<J;Pu?;7\6bgNJJ�q�6� 7��7:jK>P)scd��A�|f�/�01753A;�pp��#�L��"��+@	

BD?33�22301#53#52>53��Q!',-�--5-��,Z����@�?3�201".54>32'32>54.#"�5R-.Q56P/.Q�"7"#7!!8"!8"Z2T01T11T10T2�%<#$=%%;$#>?B�
$@

	/333/393301%57'557'5���������;��;�%�;��;���"����&'c	�"����"392@76613&&%%1499 r+22/392/3/9/333/301!4>7>54&#"'>323#53#52>53		�6*=*21!0"
&D0GF*/+,��Q!',-x#���4E.%, !D3+**,s--5-����T[������#��t�&'c�	!�+��$(@	$$''(
?3?33/0132>7#".54>7>57#5>%0+'?"$>0.AR+%F8!&1)8:0,?-#3$+:/):0G1(7'70�kk����&&����/�01����&&���/�01����&&����/�01����&&�y��/�01����&&���
�/��01����&&����/�/301����-@


rr+23+99//333301!!!!!!5!#��vT����)���L���>�>��>��V����*�L��&(����Y6�&*����/�01��Y6�&*�
��/�01��Y6�&*����/�01��Y6�&*���
�/��01����&.�����/�01��Y��&.�5��/�01����&.�����
/�01����&.����
�/��01"��@rr+2+29/3015!32#4.+32>"-��r�KS�h?xW��Xx>J66���_�bl�XdU�K��N���Y��&3����/�01��*����&4����+
/�01��*����&4�2��(
/�01��*����&4����.
/�01��*����&4����(
/�01��*����&4���
�,(
/��01@l��&@
		/33/33392301%''7'77�,zy+yx,wy+x�+yy,xy+xy,y��*����&4J��O����&:����/�01��O����&:�4��/�01��O����&:���� /�01��O����&:���
�/��01��{�&>����	/�01Y?�@



rr++99//33012+#32>54.+l/L93\=�FF�+="'B'�9&@P*9g@yƍ�.K)+I-��K���-@%		-r
r+/3+29/33017>54.+532>54.#"#4>32�]p+K1#7"7",<A4Z:5T10JS(He>9KM/G'>3"$1(C*�;Z2(I/#@-kI3N5��!����&F�y�</�01��!����&F���9/�01��!����&F�b�?/�01��!����&F�.�9/�01��!����&F�c
�=9/��01��!����&F���KBB/�/301!���7IR/@NR%C%%r)118r+223+299//332301".54>32>7.#"'632>32!3267#"&''26767.'.#"%.#"�1N-7b@#E	K<'T,g^A\ h?LuC�;7X43[<BY3Dp#LX5Z	@ HZ!8�5U64V4
+I./F(	(5= -D71/9JyK8W34*%<!?4)24(!5

<1 5�9X22X9��'�L&H����'��-�&J���)	/�01��'��-�&J���&	/�01��'��-�&J���,	/�01��'��-�&J��
�*&	/��01����&����/�01��K��&��&�/�01������&����
/�01����&���
�/��01*��/�+3"@(/0.-12,3 ?3?9/9301#".54>32.'332>54.#"'?/*I^6EuD&CY3Bn#BmR`Rj=�@2U46V43V44W3�fzxjAiL)AoC1WC&A40^]]-0qwwc2S15W32O/2T�?LIB��K�&S�O�/�01��'��,�&T���'
/�01��'��,�&T���$
/�01��'��,�&T���*
/�01��'��,�&T�P�$
/�01��'��,�&T��
�($
/��01CJ��@
		/3/333/2015353'5!�;;;���[[��ZZ�99'��,#'+/&@+-,*%&)(//
r''r+22/+22/901".54>32'2>54.#"77'7'73)8_E&&F_79^F&&E_94V44V44U43V�@)-3(�,,)>
+Ka67bK++Kb76aK+<8a9:`89`;:_73R9>z9��F���&Z���!/�01��F���&Z���/�01��F���&Z�}�$/�01��F���&Z�~
�"/��01��� 
�&^���/�01K�+5�'@rr
r#r+2+++201#"&'#3>324.#"32>5(E\67WEET=:[@"F-Q6(A1 19)D35cL-6$�����(:0Pa18`<"8 �-$#<L��� 
�&^�r
�/��01����&&����/�01��!����&F�B�9/�01����&&����/�01��!����&F�z�@/�01���J��&&����!�J�&F�?��*����&(�3��%/�01��'���&H���!	/�01��*����&(����+/�01��'���&H���'	/�01��*����&(�(��%/�01��'���&H���!	/�01��*����&(����*/�01��'���&H���&	/�01��Y��&)����/�01��(����&I�2V+4"��@rr+2+29/3015!32#4.+32>"-��r�KS�h?xW��Xx>J66���_�bl�XdU�K��N�(��e�3(@ !/r
rr%r+2�2++2+2901534>323'.=#".5.#"32>i���=lEAgD j96[C%�
:I$*D16F)83"i..��J{JE1>�x
6 33<,La�$;##<L(*L; #0��Y6�&*����/�01��'��-�&J�c�&	/�01��Y6�&*����/�01��'��-�&J���-	/�01��Y6�&*���/�01��'��-�&J���&	/�01��Y�J7�&*����'�J-&J����Y6�&*����/�01��'��-�&J���+	/�01��*����&,����-
/�01��(�!�&L���=
/�01��*����&,����.
/�01��(�!�&L���>
/�01��*����&,� ��'
/�01��(�!�&L���7
/�01��*�9��&,��*��İV+4��(�!�&L���;
/�01��Y��&-����/�01��K�&M����/�01,��!@


r
r+2+29/33/3015!'#!#3!,�2E�[FF�55��:L����<�@
	rr
r+2++2�2990153#4&#"#3>32��D>:&K9DDo?-?'i..��#XY'C+����:E =Q3�����&.�����/�01�����&����
/�01����
�&.�����/�01������&����/�01����&.�����/�01����&����/�01��!�J��&.�����J��&N���V+4��Y��&.�+��/�01K�	�r
r++0133KD	����Y����&./���K�Kp�&NO�������&/����	/�01�����K��&����/�01��Y�9��&0�����ΰV+4��K�9	�&P�����ΰV+4K		@
	r
r+2+2901!#33��pDD%M��h�	�����Y9�&1�3��/�01��N���&Q�*��/�01��Y�99�&1���	��ΰV+4��N�9�&Q�S���ӰV+4��Y9�&1H��N��C�&Q��V+4��Y9�&1{-f��N��*�&Q{���V+4@�	@
rr+22/3+2/3017'%3!&1�F��(�'��x>
��$�@
	rr+23+22301'7'33267#"&5!��D$
7.7!'�'���'7
6/��Y��&3�>��
/�01��K�&S���/�01��Y�9��&3�*�
��ΰV+4��K�9&S�����ΰV+4��Y��&3����/�01��K�&S���/�01�����&S,�%�/�01Y�K��@
rr++2/3901#33#"&'732>=�F5�E-F'!:"'*C����K�".F(.
+$K�K%@rr
r/2+++29901"&'732>54&#"#3>32h!;!'*6:(N;
D>DV.+<$,F�.
+>\U'C+��	v&9  ;S3��.H(��*����&4����(
/�01��'��,�&T�c�$
/�01��*����&4����/
/�01��'��,�&T���+
/�01��*����&4���
�,(
/��01��'��,�&T��
�($
/��01*��X�2%@r)r	rr+2+2+29/3+201%!5#".54>325!!!!2>54.#"X�(Og<J{Y02[zG>hL�wS����<aE$&G`:<aE%&Fa>>�5S1<g�DG�e;1U3�>�>��3Uk7:jS13Uj7:kS1'���*:C%@C?3r##+r+223+2239/301".54>32>32!3267#".''2>54.#"%.#"(HuDDvI3XBwOIpD�B7X46[:DX12ZGDV15V33U54V43V�6U33S3
GzKM{H)I3NWCyR6X44*&;!)I13I'<8_:<_89a;:^7�9X22X9��Yg�&7����/�01��KO�&W���/�01��Y�9g�&7�����ΰV+4��I�9O&W����ΰV+4��Yg�&7����!/�01��KO�&W�$�/�01�� ��=�&8����3./�01�� ����&X���,/�01�� ��=�&8����9./�01�� ����&X�S�2/�01�� �L=�&8���� �L�&X�T�� ��=�&8����8./�01�� ����&X�S�1/�01���LQ�&9�����LE�&Y�.��Q�&9����
/�01����k�&Y�!`�@		

rr++9/333015!###5!L�*�E�?455T�x�>��F�@

r+2?�3333/30153#".5#53533#3267!�4"03HHDxx%.--�-!u6��6����O����&:����/�01��F���&Z�I�/�01��O����&:����/�01��F���&Z�]�/�01��O����&:����!/�01��F���&Z���%/�01��O����&:����,##/�/301��F���&Z���0''/�/301��O����&:���
�/��01��F���&Z��
�"/��01��O�K��&:���F�J	&Z�i���&<�e��/�01���&\���/�01��{�&>����/�01��� 
�&^�q	�/�01��{�&>���
�
	/��01��S�&?���
/�01����&_���
/�01��S�&?����
/�01����&_���
/�01��S�&?����/�01����&_�Z�/�01���� )@&&r!	r+2+29/301".5467!.#"'>32'2>7!mGy]3K,GY30WBBYr=DxZ43[wEEpF��Hs7b�J
9bH(#?)3N-9c�LK�a7?EwMLxE�K��&@
"r/2+29/33301"&'732>5#5354>32.#"3#� ;"'*II%E/:*/2��-F�.
+�6K@\11JFM6�Q.F(��*���&4�~��(#V+4��'��,^&T�6���$ V+4��O��&:�I��V+4��F��q]&Z�����V+4Y�	&3@r
	#""!& �%r+23��2923?33?3+201%!5!!)32#4.+32>7#'��%-�"��p�q�LS�h?xW��Xx>hUU'c2b7Q>7��>�_�bl�XdU�K��N��??UUY��
&3@#""!& �%rr?2+2+23��2923?3301332#4.+32>!5!!!7#'Y�q�LS�h?xW��Xx>�]�����[�V�UU'c2c�_�bl�XdU�K��N���3.�X3�??VV(��6�/9@A@$0669
=<<;@:�?23r+r

!r+2??3+29+2��2923?33014>323'.=#".5.#"32>!5!!!7#'(=lEAgD j96[C%�
:I$*D16F)83"�\�����[�W�UU'c2bJ{JE1>�x
6 33<,La�$;##<L(*L; #0k�3.�X3�??VV��Y����&1/G��Y�K��&1OG��N�K��&QO��Y����&3/��Y�K��&3O��K�K��&SOG��*����&,����,
/�01��(�!�&L���<
/�01��*�O��&4�
��'�J,&T����Y�&)?���Y��&)_���(��7�&I_n��*����&,x��'
/�01��'�!�&L�x��7
/�01��&Q@,
	

	

			!
?3333332??9/333//9<<<<01'733#'!#4632#"&7"32654&l.<H�;'J\��[KՏ�83&'33'&3Y;Y�:��_���&..&%..W��!����&F'������QKBB/�/3301������&����/�01��!����&����S/�01��*����&4&J�2��,
/�01��'��,�&����0
/�01����&&���
�/��01��!����&F�I
�<@/��01����&&����/�01��!����&F�z�=/�01��Y6�&*���
�/��01��'��-�&J�j
�)-	/��01��Y6�&*����/�01��'��-�&J���*	/�01������&.����
�/��01������&���
�/��01����&.�����/�01����&����/�01��*����&4���
�+/
/��01��'��,�&T�k
�'+
/��01��*����&4����,
/�01��'��,�&T���(
/�01��Yg�&7�r�
�#/��01��/O�&W�

�/��01��Yg�&7���� /�01��KO�&W�<�/�01��O����&:���
�!/��01��F���&Z�d
�!%/��01��O����&:����/�01��F���&Z���"/�01�� �9=�&8���6��ӰV+4�� �9�&X���/��ذV+4���9Q�&9�����ΰV+4���9E�&Y�t���ӰV+4��*���H&4'�������0�,,(
/��/�01��'��,�&T'���c��,�(($
/��/�01��*���Q&4'�������D�((
/�/�01��'��,�&T&�P�c��@�$$
/�/�01��*���Q&4'�'�����,@((
/�/�01��'��,�&T'���c��(�$$
/�/�01��{�&>���	/�01��� 
�&^�Q�/�01���K�	�
r/+301"&'732>53 ;"'*D-E�.
+$��.H(��$%@""rr+2+29/301".'467!.#"'>32'2>7!"KvC�6T24Y;BY39_F'BtL4Q4��6V
I{I8W24)&:"+Kc8IzH43X89X2��E	��_��E	E�`��"Ta��1l����/�901'73^-;Hl]#K|�
��/3�20152654&#52#'22K"#/%%.#K|�
�
�/3�201"&5463"3|&33&K.%%/#��*p!����*p!��Wp��//01#�<�i�6�W��/3015!6!�//E	��
��/�0153E;	��E	��
��/�01'3];	��W�~��//01#�<�i���+u�����2yp����#K�����5�J��,vj���/22�2201".#"#4>3232>53*"*$'%*'~!"��+l!��1l����/�30131G<,�]1l����/2�01'73^-;Hl]*p!���/3�9330173'*b2c'UU�UU??:vx�@
�/2/2�22/01".#"#4>3232>53*"*#'%*'~!"6�W��/2015!6!�//+u��
�
�/3�2012673#"&53�!)9))9*"�&*;;*(2yp��/�01532>yaa=y��/2�20153353=:[:y^^^^�`w��
�/3�201'>32'>54&#"&!"

�&'

#K����	/3�2014632#"&7"32654&#3&'22'&3Y�%//%%..V+l!���/2�23301'73'73P%9@*&9@l]n]*p!���/�2923017#'PUU'c2b�??VV%l���/333�2013'3�?9%�@9%�]n]+u��
��/3�201"#4632#.�"*9))9)!�(*;;*&"Ta���/�99013#57^?�@FF@2�����/2�017267>732!&
	:
&0�3!
	2�Wp���/�01532>�aa=�W���/3320153353=:[:�^^^^9�9x����/�9017#53<?�JLLJ#�L��
/3�201"&'732654&'7�=&!$$"'08�'
'3'(-5�J���/3�2014673.5--)%'%+/i;-- +�h��
��
/3�2012673#"&53�!)9))9*"u&*;;*(6�W���/3015!6!�//2"E�/301532�--p�@
rr+222+201	!5!a������o55��x6-��-#@"r,,r+223333+201353.54>323!5>54.#"-�8R,1XxFGxX1,R8���2M7$C_<;_C$6N1>]tAE~b99b~EAt]>>>T_05fR11Rf50_T>>K�,!	!#@ 
r
rrr++2+2+2901332>733#.=#".'KD=>'K:D>N*2 
���YX#A+H�O< B#;"&����4	@rr
r++233+201##5!#3267#"&5�BP
n 
7-6�5�>>��!7
6/l��Y6����Y6�&�l��
�/��01����#!@rr	r+2++239/301"&'732654.#"##5!!>32�+!HR,M0._.D���/c1Cg;u9OR8L&���==��7gHpl��Y��&�����/�01*����'@
r	r+2+29/3901".54>32.#"!!32>7zH{[2,XSa�!7FR)<`C%M��*I_7*WJ:^r<g�GA}g=WD"/7-J]/:8dM,;-5J&�� ��=�8��Y��.����&.l���������/&����&#@&		rr++29/3333015>?!32+!%32>54.+&'9'��Le32cJ��'7C	�9G F?�>/l�����6a?<a:��|�m<=,H((G,Y��'@rr++9/3333320133!332+!%32>54.+YFoF�rr2cJ����9G E?���1��oZ8_8W��;*D&%@(��@

rr+2+239/3013#5!!>32#54&#"�����*^3ppDMY1b�==�js��UO����Y`�&�����
/�01��]��&�����
/�01����oy&����/�01Y�xa�@
rr/++223015#3!3#?�F}E刈�x��:�����&Yn�
@rr+2+29/3013!!32#'32>54.+Y�j�up1cK��:F G@��>�mW9]7>*C$$?'��Yo�'Y���rr++2013!!Y����>�x&�x��@

r+2/�233301532>?!3#5!7!!&+�U>��D���&��.g���xƈ��J���i��Y6�*��)@rr+22+229/33399013	33333	####��R�aE`�R��Q�bEc�nX��<��<����J��J��-����-@' r	r+2+29/3901"&'732654.+532>54.#"'>32It!6V8LY%D0DE%8 #?*3N3gH=[552?E<i	?8!,0OB*A$8#:$':".)"7>/S86WbA>Y0]��	@	rr+2+29901333#]E�AE�M��f�:[����]�p&���
/�01Y`�@r	r+2+29/39013333	##YFk�Q��V�m��<����J��&��~�@
	rr+2+2/301!!#52>?!9�� :T:'<*�����o/>(d���:��Y�2��Y��-��*����4Yq�@	rr++23013!#!YF�t�:��x��YR�5��*����(��Q�9��o�@	rr+2+299015326?33#�-��M�I��*&;A�/��)$*�#-@-$?�223?�22301!5.54>753'>54.'tDx[36\vBBCx[45]wAAHwG+J^sHwG*J^4B.RqDHqQ,55.RqEFrP-B|�?pM;\A#@pK;[B%��s�=Y�y��@	rr/++233015!3!33v��FzEV���x��x�E*�@	rr++9/3201!#"&=332673�:D'vpDQ[3aD2
gp��SLU�:Y]�@
rr++33220133!3!3YFFE�x��x��:Y�y��@
	rr/++23333015!3!3!33t��FFEV���x��x��x���@
rr++29/33013#5!32#'32>54.+Ѿ�Mf43dK��;G!G@��<��6bA;d:;-I(*H,Y��@
rr++9/3323013332#'32>54.+3YF�Mf32dK��;H!H?�E��6bA;d:;-I(*H,���;Y9�@
rr++9/33013332#'32>54.+YF�Mf32dK��;H!H?���6bA;d:;-I(*H,0����)@% r		r+2+29/3901".'732>'!5!.#"'>32N<oY;HV+:cJ'��l%Db>+QD:%�cQW.1Z}'J4,;0Tl::3eO08-#DW=g~BE�g=Y����&!@
rrr	r+2+++29/301".'##33>32'2>54.#"eZ�S�FF�U�Ua�RV�\Nq?BrJLo=?pS�c����e�P]�jq�V?M�V[�HK�WZ�IA$�@

rr+2+29/39013.54>;##*#3#"A�MS9hH�E
����1N*&I-nL9]7�:$��a($@,,D(��!���F;��9�'@ 
	rr+2+29/301"&54>?>32'2654&#":~� >[;��<P-lGLk8;qSYa_[4T1+R
��a�W8H;E>_L:?>nHLq?<gVTj,T>6V1J�	%@	%r
r+2+29/39013!2#'32>54.+532>54&+J,<(&-8)G.�+(ű(/%�	%:!*C
D0*>"1,+/,$6J�	�r
r++2013!#J7�	=�4��(	@

r+2/�233301532>?!3#5!7!#	&SF=�b4�y�F{^��4�yy��Z]}I��'��-J&�	)@r
r+22+229/33399013'3353373#'##5#&ðM�DFF�N��O�FFD��������������+@%rr+2+29/3901"&'732654&'#532>54&#"'>32�Hf8H3=I:359$75,;4[=2K+$ .32X72#'8/+4/('0#".4!=+%?F//D$J		@	
rr+2+29901333#JD==D���T�����[��J�&�x�
/�01J�	@r	
r+2+29/390133373#'#JDN�N��P�N	���������	@
r


r+22/+20152>?!##*!RD�/D>F{_����Zl�T$Jr	@
r
r+2+2901333##JF��CA�,�	��g�����F�]J�	@

r
r+2+29/30133!53#5!JD*DD��	������'��,TJ�	�r
r+2+2013!#!J�D��	���4��K�+AU��'��H�	@	
rr+23+013#5!#ͺ���==�4�&
	@rr+2+29901"&'7326?33�#.�H��D�,2�
042A�=��/<'�+��$/%@r/
r%
rr++223+223+015#".54>;5332+3#";2>54.+;Mr>?rLDLr?>rM[6T0/T�7T/0S7��HuFGvH��HvGFuH��7]98\55\89]7���	]J��'	@r	
r/+23+2015!3!33�`DDGyy	�3�3�:�	@

rr+2+9/301!5#"&=3326753u F(VWD9?#FD�X[��F@
���J�	@
r
r+23+2201333333JD�E�D	�3�3��J��	@
r
	
r/+233+22015!333333�lD�E�DGyy	�4�4�4�.	
@r
r+2+29/3013#5332#'32>54.+���YZ(M:��)23-��9�[J0N.6!53J[	@
r
r+22+29/3013332#'32>54.+3JDvY[(M:{r)23-p�D	�[J0N.6!53����J�	@r
r+2+9/3013332#'32>54.+JD�Y[(M:��)23-�	�[J0N.6!53&��#@

rr+2+29/3901".'732>7#53.#"'>32.WF7Y/5T6��0R9/Q5jK?aC"$D_	8(0.5Y40/T5(15B-M`13aN.K���&!@
rr
rr+2+++29/301".'##33>32'2>54.#"�Di?hDDh@iBMp>?qK6R-/R43P,-P
>mE�	�Hl<HzMOyE<6^=A^45_??_3$�
@


r
r+2+29/330137.54>;#5#735#"$�5A*M4�Dt���x4>3�MC-F*�����;-.@��'��-�&JE��)	/�01��'��-�&Jl�
�*&	/��01�G�-#@!%%r
r	/2++9/3�22301".'732>56.#"##53533#>32B'0
)'7#C8@SDKKD��!\<A[05O�
#'G`8Jc4A8�	.��.�35>wWF{]5��J��&����/�01'��"@
rr+2+29/3901".54>32.#"3#3267+;`D%"Cb?Kj4Q/9S0��4U5.Y7z	.Na31`M-B50)5T/04Y5.0<A�� ���X��K��N����&�l������K��O��	$@$		r
r+223+29/30152>?!32+#%32>54.+*!CpY[(N9��/D�k)22-j>F{_��UD-J*�Zl�T$90-J	#@r
r+23+29/3330133!5332+5!%32>54.+JDD{ZZ'M;��Ow)32-u	���UD-J*��60-�'@
r
r+2+9/993�223013#53533#>32#54&#"MKKD��b@`RD;G@W2-{{-�26hc���NN?:����J��&����
/�01��J�&����
/�01���&
�&�]�/�01J���	@
r

r/+22+2015#3!3#��DD�yy	�3��yZ�@
r+2/9/3�2015!332#'32>54.+|��E�Nf33dK��:H!H@�*77����6bA;d:;-I(*H,����'@

r
r+2+99//3333013#53533#32#'32>54.+f{{D���ZZ'M;��)22-�.��.�[J0N.6!53��
!@r
/22+29/3399013	!	####!!����O�cEc���alZ����H��H���&�	
!@r
/22+29/3399013'!#'##5#37!&̶���R�<F;�����>��������#���*����|��'��,}
��@
rr++93301!3>;#"5��I��76) !"���82<"$��/	@
r
r++9330133>;#"��E��73% !
�	�9c406&�r��]�l�p&� V@	V
/�01+4��J�lR�&���V+4R�@
rr+2+9/3�2015!332#'32>54.+G�E�Mf32eJ��;H H?�D--����6bA;d:;-I(*H,�@�
r+2/9/3�2013332#'32>54.+'5!�D�Y[(M:��)22-��Y�w[J0N.6!53�66SL�
'@rr++29/33333013!2+32>54.+7S&.M8 4[>��*="'A(��$�$�&AO):g@��D.J+,J+��C�+:(,'@rrr,++*))r+23323+++201"&'#3>32'2>54.#"?NBgD= g;6ZC%"?WG*D16F)83"6GP!�"
D2���e1=-La47bK*<#<K(*L:"%.�%;#^�Y�U�rr++�3013!53!YU>��Ə�xJ���r
r++�3013353#J�>�	y��4��	@rr++29/3015!!!v�����<11���>�x���		@r
r++29/301'5!!#9�7��..�	=�4Y��G�@
rr/2++29/301"'732654&#"5>32%!!n*+!GSYV.Y..b/qxu�����w:^aag>�{|w�>�xJ�H�	"@
!r
r/2++29/301"&'732656.#"5>32%!#7!"K@#>)&?#%H,8U0-Y��7�.
bTCQ$:2fONt>�	=�4�y��3@

rr/+2323+229/33399015#53%	33333	####�/n�M��R�aE`�R��Q�bEc���>ŇnX��<��<����J��J��&��	3@



r
r/+23+229/33399??015#53%'3353373#'##5#�,i�ðM�DFF�N��O�FFD�yy<�y����������-�u��1'@+$r	r/+233+29/390157'"&'732654.+532>54.#"'>32�<!It!6V8LY%D0DE%8 #?*3N3gH=[552?E<i����?8!,0OB*A$8#:$':".)"7>/S86WbA>Y0���L�&�|DY�y{�'@
		rr/+223+2/9/39015#53%333	##=/m��Fk�Q��V�m��>��<����J��J��	%@
		r
r/+233+29/39015#53%3373#'#�*g�BDN�N��P�Nyy<�y	������Yj�-@r	r+2+2/9/3/33/9013333##7#3YE��J�N�$$��?����M���>K
	!@r	
r+2+29/��390133373#'#7#3KC��K��M��h$$	�����	j�'@
r
r+2+299//3930153333	##�El�Q��U�nD--����<����J������)@r
r	
r+2+99//339+0133373#'#5!CD@�N��P�@�"�P�����D--��!@
r
r+222+29/390153333	##�El�P��U�n�<<�v��<����J��I	!@

r
r+222+29/3901533373#'#�DN�O��P�N�99�0	������Y�y��&�"T�V+4��J��F	&�!��V+4Y��@

r
r+2+2239/301'!%#!#3!�E���E�[FF��>>>�:L����<J�	@
r
r+2+2239/301'!3!53#5!�D7�[D*DD���==�4	����Y���!@rr+2/+2/39/3013!#!"'732654&#"5>32YF���*+!HRXW-Z..b/Lg6u�:��xw:^aag>=tR|J�HC	$@r
r
/2?++29/301"&'732656.#"#!#!>32{7!"K@#>) E#D��D�%N&8U0-Y�.
i[DP$��4	�2fNSzB4��)�6F+@C'rr0;;		r3	r+2+23333+2+201%#"&'#".54>73267.54>323267%>54.#")5{G0]%.\.V�n=.RqB
Ag9V�g)7Q,Q�^GsR,8nR"Hi)��4`@O�MCpCKp?\.44c�ZDz_6>I{Nd�O^{Ga�U2ZxGH�b2!�M}TO�U[x;Fz;��2B-@3%rr,;;	r/r+2+23333+2+201%#"&'#".54>3"3267.54>323267">54.!]1 : @!`�O$?S/
+C(;lJ	
?E@rKJm<]Z		/F �7T.&J38Y40O(
I�R3]G)66[8@i>!yMJqA?lEU�$�0W81[B?_8?R(*�u��'5.54>32.#"32>7\DpR,-V~P_� 7FO'@bC"(Ha9(TI:Oc2��Cg|AA}g=WD"/73Ui6;lS1:.0E(�'��"@	r!�r+�33+2015.54>32.#"32>7
Ch;BvMIpBO04V34V4"?/C8L-yqLvDJzHC9(-6^<;`9)!7#p���yQ�&�"!�
V+4�����	&�!��
V+4��{�>�+	@rr++2901533��G��B����6���
u�#@
rr++29/933301!5#535333#����L��M�쒒�1���~�B1� �+	#@
rr++29/3333015#535333#�ww�F��B�uuհ%�1��%��y��"@

	rr/+223+29015#533	##	X/m����N��N��O��>�M��5����+��^h���	"@r


r+2�33+29015#53?3#/#�W�_��M��M��M��yy<����������yI�!@
		r+23233/�3301+5!5!3!33:�F�)��FmFU�>����x��x����	"@

	

r+23333?�3301#5!#5!3333Ǵ��E�wD�DG�==��y	�3�3���E�y��&�"��V+4��:���	&�!k�V+4��E*�&�#�G:�	#@


rr+2+9/3/33/01!5#"&=3326753'#3t E(VWD9?#FE�$$�X[��F@
���_	Y>�@r
r+2+9/301>32#54&#"#�9E'voCQ[3`D��gp��SL�����K�M��9�09%@,55'	r1r+2+29/33/3901467;#"&2!32>7#".54>"!..1+dQPW�Fz\4��,GY30XBAZr<Ew[32[xDDqDHs�1%"==H7b�J
9bH(#@(2O-9c�LK�a7?EwMLxE��{-6!@..""3r&r+2+29/333301467;#"&".54>32!3267!.#"!

,%UCDNo4[E''D\3LtB�C7T04[<AY��6T31U5O+
16��+Kb87aI+JyH8W34*%<!'9V11W�y9�4='@9+�"+	r5r+2+22/�9/3�20157467;#"&2!32>7#".54>"!.�>�6-0,cPPW�Gy]3��,GY20XBBYr=EwZ43[wDDpEHs���B1%"==H7b�J
9bH(#@(2O-9c�LK�a7?EwMLxE���1:'@22&&7r*�r+�33+29/33330157467;#"&".54>32!3267!.#"Q=��"
-%UDDNo3[F''E[4LsB�C6U03[;BY��5U31U5yy��+
16��+Kb87aI+JyH8W34*%<!'9V11W��Y��.���y&�;��/�01��&��&���/�01S�,F�$!@rr/2++29/33301"&'732>54.+#33:3�)
$4)G^4WEEG
�Q�Fl>/Q�<,Q8;lR0����=��h�PIm=J�>�	!@!r
r/3++29/3301#"&'732654.+#33:735P-&A,
*+1T4;DD2�NPpB<[2;I;Bi>�	����&�l��&� 9�V+4���l8	&���V+4��Y�.��&�u��J�=�	&���Y�l��&� T�V+4��J�lF	&���V+4E�y*�@	r	r+2+23/9/301!#"&=332673#53#�:D'vpDQ[3aDh?�M2
gp��SLU�:��>:���	@
r+2?3�9/301535#".=3326753#)HD$:O'A:@#DCOy��)R;��GB
�y��Y�l]�&� ��V+4��J�l�	&�1�V+4��K�	����y&����/�01��!����&�_�9/�01����&����
�/��01��!����&��l
�=9/��01���������!������Y6w&����/�01��'��-�&�w�&	/�01������C����$�������&l���
�.*/��01����$�&m��
�*&/��01����&��H�
�/��01��&��&���
�/��01��-����&��t�
�2. /��01������&��:
�0,/��01-��� !@ 	r		r+2+239/33012#"&'732>54&+517!5!
C`<>lFM|"6^;6M+`^E�����$<M)Ed6@7!+1(I1FY8�>7���$�	@rr+2+239/3301"&'732>54&+57!5!3�Mz7X<:M'hd7����qv">V�B</.+N1PX1�==�u^2U<!��]��&�s���
/�01��J�&�sd�
/�01��]��&����
�
/��01��J�&���
�
/��01��*����&����
�,(
/��01��'��,�&���
�($
/��01*����+#@		"'r	r+2+29/333015!".54>3232>54.#"WS��KzX02[zGKyX02Zz��&Fa;<aE$&G`:<aE%O55��<g�DG�e;>h�CG�e:h:kS13Uj7:jT02Uj'��,'@$rr+2+29/30175!".54>3232>54.#"P��8_E&&F_88^F&&E_�3V44V44V44U4�##��+Ka68aK++Ka86aK+:_78a9:`8:_��*����&|���
�0,/��01��'��,�&}��
�,(/��01��0����&����
�.* /��01��&���&�n
�($/��01����o�&�sy��/�01���&
�&�sI�/�01����o�&����
�/��01���&
�&��j
�/��01����o�&����
�/��01���&
�&��
�/��01��E*�&����
�	/��01��:��&��^
�/��01��Y�y��&�"u�V+4��J���	&�!X�V+4��Y��&���
� /��01��J[�&��
�/��01�/�@r/2?33+29/301"&'73265#53'!!5!�*
42k�&FA����v�=LE>?A]2��>�x<11�=�	@r

/2?33+29/301"&'73265#53'!#'5!_)
3/G�&E.6�8�8J=<==W.�	=�4�..�,�@r/2+2901"&'732>54&/#	33�+1"��P��P��O���)!0M�=3#J*���cc��0���4[%4M,�>�	"@r
/2?+2901"&'732654&/#3?3=
	%.!&A	�M��L��M�R+.*C�;<,(L+N
���`3c00L+� @

		r+2/9/339015!3	##	�a�h��N��N��O��G--��5����+��^h�	@
	r+2/39/9930175!?3#/#6n����I��J��I���..�������)����-@  r'	r+2+29/3901".5467.54>32.#";#"3267Dj<F=496`>Hg3N4,C$"<&ED0E$XM8V6 v	0Y>AbW68S/>7").":'$:#8$A*BO0,!8?#���/@
"r)r+2+29/3301".5467.54>32.#";#"3267�9Z32.'2V3+F41%1:H-?<3:#>)4J8i$D//A
!.+=!+.((67','#27��&�.~�&�u���=�	&���*����6��(�+V���<��	\��T�y��&�"'�
V+4��C��0	&��!��
V+4��Y�y��&N"��V+4��K��K�&O!��V+4�����.��&�������=�	&����&�y��&�"9�V+4����8	&�!��
V+4��*�L��&('���3��9/�01��'�L�&H'�����5	/�01��Y�W��&)����İV+4��(�W7�&I���1��ذV+4��Y���&)�������V+4��(�7�&I�q�1����V+4��Y6R&*'�����x��/�/�01��'��-�&J&�c����-�&&	/�/�01��Y6R&*'����x��/�/�01��'��-�&J&�c����*�&&	/�/�01��Y�L6�&*'������'/�01��'�L-�&J'�����A	/�01��*����&,����'
/�01��(�!�&L�g�7
/�01��Y�W��&-� ��K�W�&M�����ΰV+4��Y�h��&-����K�h�&M���!
��ذV+4���\&.'�����5���/��/�01����&�&���&���/��/�01��Y�W9�&1�����ΰV+4��N�W�&Q�]���ӰV+4��Y�9�&1�����?�&Q�������V+4��Y�W�&2�e��K�WR&R�z�&
��ΰV+4��Y��&3�4��
/�01��K�&S���/�01��Y�W��&3�4���ΰV+4��K�W&S�����ΰV+4��Y���&3�����ΰV+4��K�&S�[�����V+4��*���e&4'����2��D�((
/�/�01��'��,�&T&�P����@�$$
/�/�01��*���c&4'�������HD�((
/�/��01��'��,�&T&�P����D@�$$
/�/��01��*���R&4'�����x�/�((
/�/�01��'��,�&T&�c����+�$$
/�/�01��*���R&4'����2x�,�((
/�/�01��'��,�&T&�c����(�$$
/�/�01��Y�Wg�&7�����ΰV+4��K�WO&W����ΰV+4��Y�g�&7�������V+4����O&W�������V+4�� ��=�&8����3./�01�� ����&X���,/�01�� �W=�&8���4��ӰV+4�� �W�&X���-��ذV+4�� ��=u&8'������7�33./�/�01�� ����&X'������0�,,/�/�01�� ��=u&8'�������:�88./�/�01�� ����&X&�S����3�11/�/�01�� �W=�&8'������4��ӲV7./�01+4�� �W��&X'�����0-��ذV+4/�01���WQ�&9���	��ΰV+4���WE�&Y�~���ӰV+4���Q�&9�m�	����V+4���_�&Y������V+4��O���e&:'����4��6�/�/�01��F���&Z&�I����:�/�/�01��O���O&:'�����x�"�/�/��01��F���&Z&�]���&"�/�/��01���&<�|��/�01���&\��/�01���&<����/�01���&\�P�/�01���&<�f�
�/��01���&\��
�/��01��{�&>����	/�01��� 
�&^���/�01���WS�&?���	��ΰV+4���W�	&_���	��ΰV+4����E�&Y����
�
/��01K��S�<!@
:2-(r"r	r+2++2901"&'732654.'.54>7.#"#4>32�?n)+Z1=L%E07I$0Sh6
.G+;Q+A%D\5?_;:fL+7)<X0o
*+0)%1. "3*2@%(62U5�.�5W@".P7)# !4/IR���W��&&���!�W�&F���:$��ɰV+4����&&�$��/�01��!����&F���C/�01����&&(v��@/�/�01��!���
&F(+�@@??/�/�01����&&)���@/�/�01��!���&F)8�C@??/�/�01����&&*���@/�/�01��!��� &F*T�J@??/�/�01����&&+����/�/�01��!���+&F+@�@@??/�/�01���W��&&'�����/�01��!�W��&F'���b�:$��ɲVC/�01+4����&&$����/�/�01��!���,&F$w�G�@@/�/�01����&&%����/�/�01��!���*&F%t�J�@@/�/�01����&&&���#�/�/�01��!���@&F&x�Q�@@/�/�01����&&'����/�/�01��!���3&F'\�G�@@/�/�01���W��&&'�����/�01��!�W��&F'���z�:$��زVD/�01+4��Y�W6�&*��
��ΰV+4��'�W-&J���'��ɰV+4��Y6�&*�#��/�01��'��-�&J���0	/�01��Y6�&*�x��/�01��'��-�&J�P�/	/�01��Y6�&*(t��@/�/�01��'��-
&J(L�-@,,	/�/�01��Y6�&*)���@/�/�01��'��-&J)Z�0@,,	/�/�01��Y6�&**���@/�/�01��'��- &J*u�7@,,	/�/�01��Y6�&*+����/�/�01��'��-+&J+b�-�,,	/�/�01��Y�W6�&*'�����
��IJV/�01+4��'�W-�&J'�����'��IJV0	/�01+4��3��&.��N��/�01��
��&���(���/�01��Y�W��&.�+���İV+4��K�W��&N��	��ΰV+4��*�W��&4�&�)��ΰV+4��'�W,&T���%��ذV+4��*����&4�J��2
/�01��'��,�&T���.
/�01��*����&4(���/@..
/�/�01��'��,
&T(M�+@**
/�/�01��*����&4)���2@..
/�/�01��'��,&T)Z�.@**
/�/�01��*����&4*���9@..
/�/�01��'��, &T*u�5@**
/�/�01��*����&4+���7�..
/�/�01��'��,+&T+b�+�**
/�/�01��*�W��&4'�&����)��βV2
/�01+4��'�W,�&T'�����%��IJV.
/�01+4��*����&E�2��8
/�01��'��,�&F���4
/�01��*����&E����;
/�01��'��,�&F���7
/�01��*����&E�J��B
/�01��'��,�&F���>
/�01��*����&E����8
/�01��'��,�&F�P�=
/�01��*�W�&E�&�9��ΰV+4��'�W,^&F���5��ɰV+4��O�W��&:�)���ӰV+4��F�\	&Z�����ɰV+4��O����&:�L��$/�01��F���&Z���(/�01��O���&G�4��*/�01��F��q�&H���./�01��O���&G����-/�01��F��q�&H���1/�01��O���&G�L��4/�01��F��q�&H���8/�01��O���&G����3/�01��F��q�&H�I�./�01��O�W&G�)�+��ӰV+4��F�\q]&H���/��ɰV+4��{�&>����/�01��� 
�&^���/�01���W{�&>���
��ΰV+4��� 
	&^�%��{�&>���/�01��� 
�&^���/�01��{�&>�l��/�01��� 
�&^�=�/�01��A�e0A��0�/20175!Ar�??A��0�/20175!A��??A�D0�/20175!A�??��A�D0R@	����/�99013#57|C�jggj@	����/�99017#53GB	kffkP���f��/�99017#53VBhhffh��@	��&TTy@	��
@	
/3�29017#5337#53GBWB	kffkkffkP��f
@
�
/3�29017#5337#53VBSBhhffhhffh'�~o�
//9/33301#5333#���A���r>�'>��)�~q@
	//9/333�22301#535#5333#3#�����A�����!?n?|��?n?��V	��/301#".54>32	))))Z))((A�b@
	
?2332301353353353A;L9M:bbbbbb.��	�/?O_e5@`eeP@@XHH8((0 	rcbbr+22/32/3+22/333232/301".54>32'2>54.#"".54>32'2>54.#"".54>32'2>54.#"		�)D))D))D((D)--,-j)D((D)*D((D*----{)D))D))D((D*----��#����&B'(B&&B'(B&'00//�&B((A&&A((A'(/00/(&B((A&&A((A'(/00/T[����E	��
��/�0153E;	����E	E�&__�)B!�@	/3/39017')�����;��;�?B8�@	/3/3901%57'58�����;��;��(��r��rr+2+201'		�#���T[����&��*%�!
BD?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$�%=F"$G<#&=G!$H:#�%I006%I0/7�b*

@
		
BD?�29/3333015#5733#'35���99��g*��+g���V*&@	# BD?3�29/3012#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0� 9%(<!)" 2))098*
,�(�s**@#
BD?3�29/93014.#">327.#"32>".54>32s*I/(HG8%<I-N^\I/K,� 8"!7!"7!!6&=##KT "%vwP[%?;,++,�[*�BD?�201#5!#�A�3�,�q&�g*+:@ 008B(D?3�29/33301#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&=
"5 6 '2) -- *5!!!$$�# �k**@	

#BD?2�29/301"&'73267#".54>32'2>54.#"�,K<%9FH)-I+,K.I]^H!6!!7!!7 !7�&"TK%$>%'>%[Pwv�,,,,&���?%�!
BA?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$U%=F"$H;#&=G!$G;#�%I0/7%I007"��
E@	

BA?33�22301#53#52>73
�Y$+$-$,,5	,��$��^D"@B A?2�29014>7>54&#"'>323$8*?+33!2"
'F0II+1,-�P4E.%, !D3+**,#��_D,@
&BA?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-IU0)"' #(("! '"2#,
9&"1��b?

@	
BA?�29/3333015#5733#'35���99�Pg*��,g����V?&@
$$# BA?3�29/3330172#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0� 9&'<!)! 2)(188*
,�(��sB*@	#
BA?3�29/301%4.#">327.#"32>".54>32s*I.(HG8$=
J,N_]I/K+�!7"!7!"7  64&=$$LS"%vvQZ%>:,+,,��[?�BA?�201#5!#�A�3,�q&��g?+:@0  8B(A?3�29/33301%#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&="5 7'2) .- *
4!"#$%�#!��lB*@	

#BA?2�29/301"&'73265#".54>32'2>54.#"�-J;%:FI(-J*,K-J]^I"6!"6" 7!"7U%"SK$$=&&?$[Pwu�++++(��� $(,0)@*/+--r#%"''r+233�2+233�2014>32.#"32>7#".#53#3##53#3#(BvLJpCO04V34V4"?/C@W38`F'F%%�%%�%%�%%JzHC9(-6^<;`9)%;!+Lb������J�	
@
r?+29/3�2013!!!!'5!y�tO���&�>��:���661����6:>@7:>;;
6(/	r
r+2+229/3�2017>54.54>32.#">323267#".#"!!!!3/6(1S17`'N* 4'.&$/,*855;P��P��*.G? -IBD&/N.81*)1 5!!?@K/!?B*				4


�+=*%%�"@

r
?3+29/993�201!5!5!5!%#33#%����F:�FA+>+�����O�;Y����
2^=@ /r#++$(PI(II(:3r''r+/33/+29///33333+201332+32>54.+#".5#53533#3267"&'732654.'.54>32.#"Y�.L93\=WS*>"(A'Mv"03HHDxx&-�;d%(S-9G#@,2C"0Q37UG+6"4&7Q,e�&AO):g@��D.J+,J+��-!u6��6��Z*+0)%1. !3)3C#&". '" !4/IR)4�!=@  !r?3+9/93�2233333301!5!3!!'!5!3!!3733##3��C�D��C��CdeC}�K��>��>��K�>++p**�����u�:_����A)L�,04/@
		2233 (--0/33|/33/33|/33/3/3014>323'.=#".%5.#"32>!!!!B6a=AgD i;@e9�
9J%/G(-K.93"�R#��.��C=h?E1)��6 32=AiQ$;#1O-0K,$/�+�*!����,!@
(	r
r+2+29/993�2017!7!74>32.#"32>7#".!�7�+8-V~P_� 7FO'@bC"(Ha9(TI:\q6IzY0++�++8A}g=WD"/73Ui6;lS1:.5J&?i��� @

	rr+2+29/930175!33	#8�F�M��1O��55��d���rd��Q�@		

rr++23015%5%###5!?��0�F�@'�'��'�'>�x�>R�!&@!	r?+299}//33�201!!!!!2+32>54.+P��P��J&.M8 6K.��*>"(A'�/+=*�c�&AO),P@%��D.J*-J+*���/(.0@.*++r#	r+2/223+2/2239/3?01%#3".54>32.#"3267#53#]....GzZ11XxGi�"6"rF;_D#(Ja8At5eZ��;����W=h�DH�d:VE$B>2Tj9<kS/ADJz,6��7����'+/'@-,(
))
r!	r+2+29/99993�201"&54>54&#"'>3232677!%7!*kf/JTI0CI+N!'\>ha0ITJ/EO0P#&^����o�UO1L<65?(352QJ2J;55@*783/  V  *���/,'@(	r
r+2/233+2/22301%#34>32.#"32>7#".]....��-V~P_� 7FO'@bC"(Ha9(TI:\q6IzY0�����A}g=WD"/73Ui6;lS1:.5J&?i�Q�@
	r?+23}/301!#5!#5!�@���@??���>>+��@�
r?+99�2330132#32>54.+!5!5!5!+^.L9'G0�O�>*="'A(Z��x��x��&AO)3Z>
��D.K*+I-\*E+"#�@r?2+9013332>53#%5%5%`F�4>
F0[K��k��k�x,G48\B#�3�33�4O����@


	?3/3933/3012#4.#"#4>?zRrG F3YDBX4EDt9..N4Yt@��/\K,+J\1��<s\6����  @ 	r?+29/3�233015!5!32+32>54.+��M��1N70[A��1=!A/�>>y77��&AO):g@��D.J+,J+H��-�&@	&	/3?39/3017>54&#"3267'#"&54632w#A4=2!6605
$!&0�Ygd):H";%�267"�")*'QTJYa�	)!@	

&r?+22/33/3?9901#33#".54>32'32>54.#"�F6�F=?6Q-.Q46Q..Q�!8""7""7"!9!D����N�;\2T/2S22S2/T2�$<$%=$&;$$=6���23@'*-0

$00?33/3�292/3/90173#5#'#3.#"#"&'732654&'.54632�UC0T(T0B�* *1;@1$>4"  ,13?02���ٯ��)
	%,('$	"')+>���)@
r+�923333301##5#533#5#'#3,_0_�C0T(T0BU���0��ٯ���-��-!@+-r!
r+2+2233330173.54>323!5>54.#"!-�8R,1XxFGxX1,R8���2M7$C_<;_C$6N1��>]tAE~b99b~EAt]>>>T_05fR11Rf50_T>>+��: @	r	r+2+29/301%"&'5!4.#"3267'2!5>21W�CwNMwCBwNKi#`E2X��W-&�L}KK{IH{K0#,�.(|}'.��"��	�&'c�#��s�"(U;@O:77)@HH)#((1)&%% /33/293/3?33/33/39/33014>7>54&#"'>323		"&'732654&+532654&#"'>32#7(?*22 1!
'C0GG+/+,�#���>U!8$1DRC?H?+)<-: ,E)/,.8,JG4E.%+!D3*)*+��T[����0)"' #(("! '"2#,
9&"1��"���&'c
���#����&'c�
 ����w�&'cv
����,�&'c+
����!2@+		r"r+2+29/301".54>32>54.#"'>32'2>54.#"�@c8'DY2>](H2.T'!i:moDxO(A1(F+0S3(F
7]9/VC'>8$$Yg- )&'����\<4@!)C(1Q0*D('��,)#'@
&% 
$'?2�2?3�201".54>3232>54.#")8_E&&F_79^F&&E_�3V44V44V44U42� �?
+Ka67bK++Kb76aK+:_78a9:`89`��;��`�@rr+233+201%!53`��:���555��x6������@		r/3+23301!##5!##��BRtPB���>>� ��
!@	
/333/9933301!!5!55!�G������]�.���3@-D�C�/2015!D�88����U��rr+2+201'3*���"�TA�|f�/201753A;�pp�
@


r+2/9/33013333#�gGGvB����m����m3-��/? @0<$ 8(/223�2923012>32#".'#".54>2>7.#"!2>54.#"�'4&$5&0F&)F.$4%
%7((H-*G,,  + //6.. +
 +//-K.-K----L-.J-��130&&11&&0 40	�Y$4�
/3/301&632.#"#"&'7326'b408
# )4/6  �/?	0%"�4:	0&"A�o|-@�@%�)/3�/2�2�201#".#">3232>7#".#">3232>7Q*,& '/ 	*,& '/ 	e$	

Q
$

		SJ��@
/�23/333/3017'!!5!!l��8-��-��]����1�1>=�
@
	/3�22/390175!%%?B��>���=99B�BomD�A=�
@
		/3�22/390175!57'5AC����?=99�DmoB���	@	?3?3901#!��I�������nl��B���9�9x��
��/�01#7#53_#?�JLLQ�31@		+$r2/3
r+2?3333333+29|/3013#5354>32.#"3#3#5354>32.#"3#dHH%I5#9))���HH&D0:)/4���6,P23
"(6�-�6@\11JF6�-��@
r	r+2?333+201#5354>32.#"!###dHH-E0%;,?%*5D�D�6%H<$	1+B"���-��I�) @r"
r
r+?333+2+201"&54.#"3###5354>323267�.6/*'2nnDHH(P<XZ&
	!$7.�2!(B(
6�-�6;Z3XD�.%	8��86@		,$r61488
?23?3333333+29|/3013#5354>32.#"3##5354>32.#"!###dHH%I5#9))���HH-E0%<+?%*5D�D�6,P23
"(6�-�6%H<$	1+B"���-��3�D@@ 
		#6r=r(11+..-
?2?3333333+2+29|/333013#5354>32.#"3#"&54.#"3###5354>323267dHH&J5$6&)��,/6/)'2nnDHH(P<XY&

!#�6,P23
"(6�-7.�2!(B(
6�-�6;Z3XD�.%	8#�� �b>@#TTJMM<+A&F!0Jr80r\

Y
r`r+2+223+2+293333/301%#".5#534.#".#"#".'732>54.'.54>32.54>323#326#/3II((@2 !M$!='+2$G:##:H%*PC,]0!?+/5&D39Y.!B
G=5<vv%.P7-!u6KR 9+4)("*$$4(*;$#/#$*$#2&9D 0#%>&8U86���@
r+22/3901##33�I��I�N��Lо�:U����a��a*����-@$##
r	r+2+29/301".54>32.#"32>7#5!|J|Z22Z{JY�+7+8C'<aD&&Ea;3WB,�4Vq<g�EF�e;UD-1&3Uk77jU2&@R,?>qX2��K��&���/�01!��� 3@ 
r'

r0r+2+29/3+01!5#".54>3254&#"'>32'6=.#"32>�$l:1N.'?N&6PNE'T,,c6D]0U#J$:0#9 @7R0,+I.)<&	/CS -'4^=��sU
*"4 (��"&"@
rr&

r"r+2+29++01".54>3253#5.#"32>77ZB$%BX3AfDDb�6E)*F22V7*E3
,Ka58bK*C4j��i3@Z'="%=K&8_:!;$(���'"@r'
r"r
r++2+29+01!5#".54>323.#"32>7�d96[C%=lDBd DD
:I$*D16F)93"a0;,La4J{JE1>�&T%;"#=K(*L; #0K�+���r+�2?013#3#KDDDD�&�[Q���
rr++0130*#QD	�&(�,7/$@rr!"
'
rr+2+29++201".54>3253#.5'2>75.#"5W>"&C[4=g=
	!Md)C3"2:+E41T
,La57aK+?0f�};$v<!8"�1'$<L'8`9)�@
r
r++2/223013#53533#hMME||�>��>�5F��	@rr
r++2+29901!5#".5332>73�AQ*3D%D63*I7Dr&8$?Q-2��1P0'A'H��'	@
	r
r+2+93301!#333(��G�G��A��G���^	�L��L����+	@
rr+2+9901	#73��LV�H��	�"�	�6�'��e�R7@CC=:r,++'0rK		HrOr+2+223+22/3+22/392/301%#".5#534.#".#"32>7#".54>32.546323#3267e"03HH,*31BP1*E14E)?3CEX-;`E%$B`:2ENJ<Bww%--!u6)E3>,;7.
,)$<L'*L; '):-M`35aM,=#=O"=S06��7$
?@#
		

		>/2?9/93339<<<<0133#'!3�4�BL��K�v�$�ܥ��T$&@>/3?39/3901%#!!24.+32>32>54.#-M/��!)= ,(3;?-��0���,*�)@$$)A")EJ),�-m�,*,��1'#�??3?3014>32.#"32>7#".,%IjDOr2b05R7!;P0!F<5M_.=gK(2`P/C5 6)&?N(,P?$+#(91QeT?$

�>/2?301332#4.+32>T�_�@G�X�4cH��Id2$J{LS|D@a8�L9dT�$@	

>/3?39/301%!!!!!�m���#��88$8�4�T�$	�>/?39/3013!!!!T�����$8�6�,��4'!'@
$##
?''/22/?39/301".54>32.#"32677#53#B<fK))Je<Wo1_:1N7!<P.5a+*c���6/Pd57cM,B5!2.%?O*-P=#03B--�0��T-$�	>?2/39/301#5!#3!5->��>>]$���$��T�#	�>/?0133T>#����\#�>??301732>53#"'&;$<:>(OBM5L3cG��>gH(!T($@

	>/2?3901333#T>DF�J�l#��6��
b�T�$�>/2?0133!T>K$�8T�$@
	>/2?3901!##33c�$�>A��A���O�M$��l��TI$	�>	/3?39901#33#�>0�?6��Q$�I���,��]''�#
??2?301".54>3232>54.#"E?gK(*Lg=>gJ(*Kg��:Q02P8 :P/2Q9/Oc57cN-0Pc37dM-+O?$&@N)+O>$%@NT�$�
>/?39/301332+32>54.+T�4R-+M5��#2 6!�$4O+-P2��!6"5 ,��]''+@
?((**?2/23/?301".54>32'2>54.#"73#E?gK(*Lg=>gJ(*Kg<2P8 :P/2Q9:Qa>�>/Oc57dN,/Qc37dM-9&@N)+O?$&@N)+O?$z�T$@

>/2?39/3901332#'#32>54.+T�4Q.!;(�H���"36"�$4O+'D0����!7 5!$���'.@	'+??3?39901.#"#"&'732654.'.54>32�0=#KG#H8>[1:M/Ex1?O-BO(N;=S*6`=;^$�3-#
":1'9%''4!-, (!7,3G# �$�>/?3301###5!��>����8K��@$�
>?3?301%2>53#".53E7J*>;_EFa:>+H5%?N(��7cM,.Nc4��)O>$:$
�>?2/9013#T��B�6�$�3��$r$@
	>?333/39013733##373;ST;io�E�7||8�D�l ��������$�(�
$@

	>?2/390173#'#S��F��E��F��$������ $�>?2/9013#5X��E�?�$��"����Y%$	@		>?33/33017!5!!!%��z�y��&1�82�F8�x��@

r+2?3/3333015333#5!7!?�?�?;��C�ʈ���xƈ��:���r/2+90133#?H���:s��(��#-!@-r$	r+�333+�333015.54>753'>54.'sDx\36]wACCw\56]wABJ|I,MauJzI,Ka5:56^�OS�^3555^�QR�^35o\J�\GmM*J�ZFoM+��Y+�+��-�u��,��*�u��>��-�L��&��z��*�L���N��� +@
!(rr+2+29/3301"&54>32'2654&+32654&#"*jr/Z@8U/2,DK8aBINPJ�OO�8GG8;Fqk*>Z2&I45JgQG^/:ULNR�IRt>99<H?:���+@"r%r+2+2901".54>7>54.#"'>323267DZ--[C&/13G0aG3N, D7MNM?6T,"m
<+09(&$'/<-,6#4.-'!$!,,��(�!L&��0@


r+2/2/?3/3/9/33333013'333373#'##5#&ðM�DFF�N��O�FFD�����b�������$�+@
%rr+2+29/3301"&'732>54.+532654&#"'>32�Gt8S26I&&G4P==NG8*H5dERf8.FI8e�B</.+O11H*5B=9@)/5A[P9NmOBd6��F��	Z��F���&Zq�/�01��F������K	�P	�r+/3901##0�H��D�	���;	��KS��KRRF��K	@	
r	r
/?3+2+299015'./#"&5332>73;
"uDRTD=<(K:D
0yyD<Dro2��YX#A+H�O�F��L	$'@rr
r		r+23++2+290133267332673#5#"&'#".5FD9:;\D99;]D> g@AP	#f@,<&	��[VTB>��\USB?��v<CK;BD ;S3D���	.'@'&#	-
?�3?3?3?933015'.'5#"&'#".533267332673;U iAAP	#fA+=%D:9;^D8:;]D
/yyE<DK;BD ;S31��[VTB>��\USB?�O�F���	@rr+2+9/301"&5332'2654&+goD�1N88N1FLLF�KjcB�,C--C-:@:;?dEK��V	@rr+2+29/301"&5#5332'2654&+�gq��1N88N2FLLF�Ljc	9�,C--C-:@:;?dEKJ�		@	r/+29/301753!#`���7��..�	=�4��'��?���L�-��'�L�)��.�.@
'rr+2+29/3301".54>7.5463!#"2'2>54.#"*HuD'E/23TK�42JDKvDEvI5U32V44V33U
>nF4WB@)CD<',)3>mGFn><-Q67U//U76Q-0��{�'�#
r	r+2+201.54>3232>54.#"VHnJ&)MlDImJ%)Lm��8Q78T7:R59T7
Bk}<@�i?Dl~:Ah?g4iW58[g/4iW59Zg*��@
r?33+22/301%!53#52>73����	#.06/E>>>E@%�o/�(�r&/2+2013&>7>54.#"'>32!0-@(&RF+!D43O5-%?W:Jb1)AK!@L%�?`J7#*=.&@'"0,(,9\75I1$888>0���2@
+#r		r+2+29/3301".'732>54.+532654.#"'>32?f@*2W82Q/8fF""ap-K,B^/EY0Dk= >-/G'Ep	*J1&"A(#=),?";@@*>":+.$44X9(?+	4K-<V/�

@	
r?+29/333301!5!533#%!w��r/XX���=�6>��`(���"@r	r+2+29/33301"&'732>54.#"#!!>32Ly.b:2O/.L0.T@PW��2M,Ai=Bo
K>"1<,M31K+*&�?�:eCEk;4��/�.@
'	rr+2+29/9301%4.#"4>327.#"32>".54>32/AoD-O:1X;8[,pGNvBBsJGrC�3T32U32T33T�Cm@ :'b�J=3(=G^��\�GBou2T23S22T22T2
�
�r+2?01!5!#����L�?�:2���!3C@8''@r0	r+2+2933301%#".54>7.54>324.#"32>32>54.#"EqCGn?+A"6 '@O('OA'!6 'A'E5? +Q34? +Q4��/H"$G/,G(&G+�>\39^:-I2
+:#,C/.C,#;+

5H($7&%C.#6'%Dp&77'&67,��&�.@
'r	r+2+29/330132>7#"&'32>54.#"72#".54>,AoD-O;1X;8[+pFOvAArLFsB�3T43T32U22T�Bn@ ;&b�I=2'>G^��]�GAou3T22S33S32T2��&���?k��"��
El��$��^Dm��#��_Dn����b?o����V?p��(��sBq����[?r��&��g?s��!��lBt&����%�!
B?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$%=F"$H;#&=G!$G;#�%I0/7%I007"
�@		

B/33�22301%#53#52>73
�Y$+$-,,,5	,��$^�"@
B /2�290134>7>54&#"'>323$8*?+33!2"
'F0II+1,-�4E.%, !D3+**,#��_�,@
&B?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-I0)"' #(("! '"2#,
9&"1b�

@		
B/�29/33330135#5733#'35���99�g*��,g����V�&@	# B?3�29/30172#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0� 9&'<!)! 2)(188*
,�(��s�*@
#
B/3�29/9301%4.#">327.#"32>".54>32s*I.(HG8$=
J,N_]I/K+� 8"!7!"7  6�&=$$LS"%vvQZ%>:,+,,[��B/�201#5!#�A�3c,�q&��g�+:@ 008B(?3�29/33301%#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&=o"5 7'2) .- *
4!"#$%�#!��l�*�

#B/2�29/301"&'73265#".54>32'2>54.#"�-J;%:FI(-J*,K-J]^I"6!"6" 7!"7%"SK$$=&&?$[Pwu�++++&F��%�!
BC?2�201".54>32'32>54.#"�0H02G,0G01G�!A0$7$"A/$7$F%=F"$G<#&=G!$H:#�%I006%I0/7"F��@
	

BC?33�22301#53#52>53��Q!',-s--5-��$G]�"@B C?2�29014>7>54&#"'>323$7+@+33!2"
'F0II,0,,�G4E.%+!D3*)*+#A_�,@
&BC?2�29/3301"&'732654&+532654&#"'>32�>U!8$1DRC?H?+)=-: ,E)/,.8-IA0)#' #')" !'"2"-	9&"2Kb�

@
		
BC?�29/3333015#5733#'35���99�Kg*��+g��FV�&@	# BC?3�29/3012#"&'732654.#"#>73#>�+E),J,1P@'0B!38)
� 0I 9%(<!)" 2))098*
,�(Bs�*@#
BC?3�29/93014.#">327.#"32>".54>32s*I/(HG8%<I-N^\I/K,� 8"!7!"7!!6�&=##KT "%vwP[%?;,++,K[��BC?�201#5!#�A�3�,�q&Fg�+:@ 008B(C?3�29/33301#".5467.54>324.#"32>'32>54.#"g,J,.H):".+C##B+,!(5-#55"$64"�..-&=�"5 6 '2) -- *5!""$$�# Bk�*@	

#BC?2�29/301"&'73267#".54>32'2>54.#"�,K<%9FH)-I+,L-I]^H!6!!7!!7 !7B&"TK%$>%'>%[Pwv�,,,,A�|f�/301753A;�pp1l��
��/�01'73^-;Hl]$K?�
�
�/2�201"&5332673�DJ2-/.+1JK@1(& 1@+Xp@
�_/]2�201".'332673�1C"7)64*7"A3*'3�=�<��/�201"&'7326=3T#
,.DS�;JI+=aa�l�<��/33�017#53	>&m�H��<��.	>��/�201"&'732>=3k)'*F#F�	;*M3&??^4�l�>��/�33017#53	>&m�I��>����<��/3�015#53QQ�yy<��y�>��/3�015#53]]���>�2NV�
��/�017#3V$$N>��+P�,&���FR��*O�*&����P��+R�@&����OO��Q?3&����Y��XQ�
&�.���3����RP&�/���-��/Rb &����/��&Pd+&����Q�l\���/�9901'7'\W-&�n;"nd�?W��
�*)�3 	3�
"
Z
�
���	�	/	G	4_	�	�	
	R:	f�		fT	
�	D
	,
}	
 
�	4uCopyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".Copyright 2010 The Raleway Project Authors (impallari@gmail.com), with Reserved Font Name "Raleway".RalewayRalewayRegularRegular4.026;NONE;Raleway-Regular4.026;NONE;Raleway-RegularRaleway RegularRaleway RegularVersion 4.026Version 4.026Raleway-RegularRaleway-RegularRaleway is a trademark of Matt McInerney.Raleway is a trademark of Matt McInerney.Matt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaMatt McInerney, Pablo Impallari, Rodrigo FuenzalidaRaleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.Raleway is an elegant sans-serif typeface family. Initially designed by Matt McInerney as a single thin weight, it was expanded into a 9 weight family by Pablo Impallari and Rodrigo Fuenzalida in 2012 and iKerned by Igino Marini. It is a display face and the download features both old style and lining numerals, standard and discretionary ligatures, a pretty complete set of diacritics, as well as a stylistic alternate inspired by more geometric sans-serif typefaces than its neo-grotesque inspired default character set.http://theleagueofmoveabletype.comhttp://theleagueofmoveabletype.comhttp://pixelspread.comhttp://pixelspread.comThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFL�j2-	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a��������������������	����������bc�d�e�������f����g�����h���jikmln�oqprsutvw�xzy{}|��~�����

��� !"��#$%&'()*+,-./012��3456789:;<=>?@A��BCDEFGHIJKLMNOP��QRSTUVWXYZ����[\]^_`abcdefghijklmnop�qrst��u�vwxyz{|}~�����������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx��y�����������z{���|}~������������������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./01234NULLCRuni00A0uni00ADuni00B2uni00B3uni00B5uni00B9AmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflex
Cdotaccent
cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve
Edotaccent
edotaccentEogonekeogonekEcaronecaronGcircumflexgcircumflex
Gdotaccent
gdotaccentuni0122uni0123HcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJijJcircumflexjcircumflexuni0136uni0137kgreenlandicLacutelacuteuni013Buni013CLcaronlcaronLdotldotNacutenacuteuni0145uni0146NcaronncaronnapostropheEngengOmacronomacronObreveobreve
Ohungarumlaut
ohungarumlautRacuteracuteuni0156uni0157RcaronrcaronSacutesacuteScircumflexscircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring
Uhungarumlaut
uhungarumlautUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacute
Zdotaccent
zdotaccentuni018FOhornohornUhornuhornuni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCGcarongcaronuni01EAuni01EBuni01F1uni01F2uni01F3Gacutegacute
Aringacute
aringacuteAEacuteaeacuteOslashacuteoslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217uni0218uni0219uni021Auni021Buni022Auni022Buni022Cuni022Duni0230uni0231uni0232uni0233uni0237uni0259uni02B9uni02BAuni02BBuni02BCuni02BEuni02BFuni02C8uni02C9uni02CAuni02CBuni02CC	gravecomb	acutecombuni0302	tildecombuni0304uni0306uni0307uni0308
hookabovecombuni030Auni030Buni030Cuni030Funi0311uni0312uni031Bdotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0394uni03A9uni03BCuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0462uni0463uni046Auni046Buni0472uni0473uni0474uni0475uni048Auni048Buni048Cuni048Duni048Euni048Funi0490uni0491uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04AD	Ustraitcy	ustraitcyUstraitstrokecyustraitstrokecyuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8uni04D9uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0510uni0511uni0512uni0513uni051Auni051Buni051Cuni051Duni0524uni0525uni0526uni0527uni0528uni0529uni052Euni052Funi1E08uni1E09uni1E0Cuni1E0Duni1E0Euni1E0Funi1E14uni1E15uni1E16uni1E17uni1E1Cuni1E1Duni1E20uni1E21uni1E24uni1E25uni1E2Auni1E2Buni1E2Euni1E2Funi1E36uni1E37uni1E3Auni1E3Buni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E5Auni1E5Buni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Cuni1E6Duni1E6Euni1E6Funi1E78uni1E79uni1E7Auni1E7BWgravewgraveWacutewacute	Wdieresis	wdieresisuni1E8Euni1E8Funi1E92uni1E93uni1E97uni1E9Euni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni2002uni2003uni2007uni2008uni2009uni200Auni200Buni2010
figuredashuni2015minuteseconduni2070uni2074uni2075uni2076uni2077uni2078uni2079uni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089
colonmonetarylirauni20A6pesetauni20A9dongEurouni20ADuni20AEuni20B1uni20B2uni20B4uni20B5uni20B8uni20B9uni20BAuni20BCuni20BDuni2113uni2116servicemarkuni2126	estimateduni2153uni2154	oneeighththreeeighthsfiveeighthsseveneighthsemptysetuni2206uni2215uni2219commaaccentf_ff_f_if_f_ls_tW.ss09G.ss11	i.loclTRKa.ss01a.ss02d.ss03j.ss04l.ss05q.ss06t.ss07u.ss08w.ss09y.ss10c_ta.scb.scc.scd.sce.scf.scg.sch.sci.scj.sck.scl.scm.scn.sco.scp.scq.scr.scs.sct.scu.scv.scw.scx.scy.scz.scuni0414.loclBGRuni041B.loclBGRuni0424.loclBGRuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0432.loclBGRuni0433.loclBGRuni0434.loclBGRuni0436.loclBGRuni0437.loclBGRuni0438.loclBGRuni0439.loclBGRuni045D.loclBGRuni043A.loclBGRuni043B.loclBGRuni043F.loclBGRuni0442.loclBGRuni0446.loclBGRuni0448.loclBGRuni0449.loclBGRuni044C.loclBGRuni044A.loclBGRuni0493.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0431.loclSRBzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lf	zero.subsone.substwo.subs
three.subs	four.subs	five.subssix.subs
seven.subs
eight.subs	nine.subs	zero.dnomone.dnomtwo.dnom
three.dnom	four.dnom	five.dnomsix.dnom
seven.dnom
eight.dnom	nine.dnom	zero.numrone.numrtwo.numr
three.numr	four.numr	five.numrsix.numr
seven.numr
eight.numr	nine.numrperiodcentered.loclCATuni030C.altbrevecombcybrevecombcy.casehookcytailcyhookcy.casetailcy.casedescendercydescendercy.caseverticalbarcy.caseuni03060301uni03060300uni03060309uni03060303uni03020301uni03020300uni03020309uni03020303
apostrophe��T\����������������#$+,, 0��������$+�
�hDFLTcyrlRlatn0�� !"#$%&BGR VBSH �CHU �SRB ��� !"#$%&��	 !"#$%&��
���� !"#$%&4AZE nCAT �CRT �KAZ "MOL ^ROM �TAT �TRK �� !"#$%&��
 !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&�� !"#$%&'aalt�c2sc�ccmp�ccmpdligdnomfracligalnum$locl*locl0locl6locl<loclBloclHloclNloclTloclZlocl`loclflocllnumrrordnxsalt�sinf�smcp�ss01�ss02�ss03�ss04�ss05�ss06�ss07�ss08�ss09�ss10�ss11�subs�sups�!#$1
	
 %"&'()*+,-./02fnv����������������
"*2:BLT\fnv~�����������������@d����48<N`dhlptx����&.2:\x��������LPTX\`dhlpz~��Mc�������������������������������������yz{|������������������������	

M'()*+-./012356789:;=>?GHJKLMPRSUWX[]_{"#&'������������������&'->>LZhv������������� &,28��kd��l}��mv�n�w�o�	e�p
f�qg�rh�s
i�tj�n���~�����n�����������~����������������&,4<FINOQTVYZ\^,>?NO��,NO������
��NO
��NON
,
+�*�)�(�
'�&�%�$��� {QQ {11�{�{yz{|"#&'yz{|"#&'_N_N_N_N_N	�����,->?�����&',>?.�������������������������������������V�
d}vwefghij��O�c����&F4Tn~n~&4FT�T3�&?sF_
�Y�YHX6"(�KQ�KN�Q�N�KKhFhFiFgIbOaQ]V[Y[Z
��<\Y^�,�
NxDFLTcyrl$latn4������kernmarkmkmk (20���\���X��*
`���`���Bh�x�(<�P��J8�l����� � �!4!�&�&�&�''F'�&�&�(J(�+Z,,r,�-�.3B48b9T9�;�=�>,>z>�>�??z?�?�@@@D@�@�@�>,A
A(A^A�A�A�DzD�GVG�G�IpI�I�JJ�JNJpJ�K ������!4 �!4!4!4!4&�&�&�&� �&�(J(J(J(J(JR
R-�-�-�-�8bR�T�=�=�=�=�=�=�>�X:>�>�>�>�?�XxX�YlZJ@�@�@�@�@�@�]@]fA�A�A�A�GV>,GV�=��=�]�^� �>z �>z �>z �>z �_ �a�!4>�!4>�!4>�a�>�!4>�&�bN&�bN&�bN&�bN&�?�bl?�&�e�&�fd&�f�f�f�&�?�'f�'F@'�@D'�g�hh�'�'�j�&�@�&�@�&�@�k^k|(J@�(J@�(J@�a�>�,A(,A(,k�,rA^,rA^,rl,rA^,�lJ,�ltm�A�-�A�-�A�-�A�-�A�-�A�-�r�3BDz8bGV8b9TG�9TG�9TG�(J�=�!4>�R]f,rA^,�r�?�@�r�!4!4ssxs�&�&�t�u'FuPv^v�!4ww�'F&�&�(Jx:x�yz�{^(J(J{�||�>�|�}A�A�@A�A�@�@�A�>,}J}�GV@�~~DA�A�~DA�@�@�A�>�>�~J~�?�l��@A�GVA��'F@'F@&�@� �>z8b�(��A�A�?�&�'FA�?��=��=�!4>�!4>�(J@�'FA�A�(J@�(J@�GVGVGVA�A�(J�3BDzA� �>�&�?�&�@�,A(,rA^,؂3BDz3BDz3BDz9TG�!4>�!4>ڂD�b(J@�-�A�8bGV8bGV�ڂ|�·$�|���$JJ������8��@D��@DA������`������X�����bA��䜞��������Ȣ��������������~�ԧ򨌪����ܮ������p(J � � ��A�A�A�@@�@�A�>z>z��0�b���������$P����&��/��9��;��<��=��>��[��\��^������������������������������������������&��(��*��8��9��:��;��<��[��]��{����������������������4��B��D��d��f��h�������������������������������@��A��F��G��U��X��������������������������������������%����������������������������
����������������k����&/9��:��;��<��=>��?[��\��]^��_�������9��������������������������&��(��*��,��.��0��2��4��6��8��9��:��;��<��=>?@AB[]9_`{�������������������4��B��D��dfh9�������������������������������2��@��A��F��G��U��X�����������������������
������&(��,��4��6��9;<=>FH��I��J��KL��OT��V��YZ��[��\��]^�����������������������������������������������������������������������������������������������������������������������������������������������������������������������&'()*+-��/��1��3��5��7��89��:;��<C��[\]^_��`��{|�����������������������������������������������������
��
��4>��?��BDE��defghik��z��{��|��}�������������������������������������������3��@A��FG�����������������������������������������������������������������������������������������������&��/��9;<=>F��H��I��J��L��T��V��X��\�����������������������������������������������������������������������������������������������������������������������������2����������������!��#��%��&(*89:<C��[��\��]��^��`��z��{����������������������������������������
����
4?��BDd��e��f��g��h��i��k��{��}�������������������������@F�����������������������������������������������	���������������������;��O[���*��C����������������������D��E���������������������'����������;��=��[��]��*����������������������������������D��E����������������������������������;��[��*��C����������������������D��E���������������������R��������������������&��(��,��/��4��6��8;<=>F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%������
������������������������������ !��"#��$%��-��/��1��3��5��7��89��:;��<>��@��B��C��[��\��]��^��_��`��yz���������������������������������������������������������������������������������������������������������	��
����
����������%��'��)��/��1��7��9��>��?��BD
E��d��e��f��g��h��i��k��w��y��z��{��|��}������������������������������������������������������������3��@A��FG��������������������������������������������������������������������������������������������������������������������������������������������������������������<����������&��/��9��;��<��=��>��?��A��t�����������������������������������&��(��*��8��:��<��=��?��A��[��]��{�����������������4��B��D��d��f��h���������������@��F�����H����������&/9��:��;��<��=>��A��q��t��{���������$����������������������&��(��*��,��.��0��2��4��6��8��:��<��[]${��������������4��B��D��dfh$�����������2��@��F��Q��R�����!9��;��<��>��A��t���������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F�����#������9��;��<��>��A��t������&��(��*��8��:��<��]{�����������4��B��D��h�����������@��F�����)����������9��;��<��>��A��q��t���������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F��Q��R�����'������9��;��<��>��A��q���������&��(��*��8��:��<��]{������������4��B��D��h�����������@��F��Q��R������-&��9��;��<��>��������������������������������&��(��*��8��:��<��[��]��{�������������4��B��D��d��f��h�������������@��F�����;������������������"��&��/��9��?��f��q��t{��������������������������������������&��(��*��=��?��A��[��]��{�����������������4��d��f��h�����Q��R��V��Y��]�����,&��9��;��<��>��������������������������������&��(��*��8��:��<��[��]��{�������������4��B��D��d��f��h�������������@��F����� ������9��;��<��>��A��t�����&��(��*��8��:��<��{�����������4��B��D�������������@��F�����;��*������D����
;��O�*������D�����������G����&��9��;��<��>��[��\��^�����������������������������������&��(��*��8��9��:��;��<��[��]{������������������4��B��D��d��f��h�����������������������������@��A��F��G��U��X����������������(��������������$��%��;��A��[��m��n��r��~������������
��*��C��_��`�����U����������������������������&��9��;��<��=��>��?��A��K��X��Y��Z[��\��]��^��_��������������������������������������������!��#��%��&��'��(��)��*��+��-/13578��9��:��;��<��=��>?��@A��B[��]��z��{��|��������������������4��B��D��d��f��h����������������������������������3@��A��F��G��U�����������������������������������������������;��=�������*��U����������������;��=��A��]������������*U�����������������������[������������������C�����U���������������������K������������������������������ ��%��&��(��,��/��4��6��8��F��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��o��q����������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������(���������
��
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|���������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}�����������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b���������������������������������������������������������������������������������������������������������������������������������������������������;��A��[����*��U����������������������������U�����������������U�����������"����AB[��m��r����������������.�C��_��`�����U����������������������������$��;��A��[��m��n��r��~������
*��C�����U�\�������������������������������;��=��A��]������������*U������������������������������������&��/��;��<��=��>��F��H��I��J��L��T��V��X��\]^o��q������������������������������������������������������������������������������������������������������������������������������������������!��#��%��8��9:��;<��[��\��]��^��`��z������������������������
����?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��AF��GQ��R��U��V��Y��]��a�����������������������������������*������&��;��=��A��]�������������������������������������*[��]��d��f��hU�����������������������;��A[�����������������*��C`�����U�����������������;��=��[��]��n�����
�*��U�����������������������������;��������������������������%��[��]��m��r���������������������9�.�������!��%��)��C�������U�������������������������������������������������������������������������U���������������L�������������������������������� ��%��&��(��,��/��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_��m��o��q��r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������'�2����������
�������������������������������� ��!��"��#��$��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��[��\��]��^��_��`��y��z��|��������������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}�����������������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b���������������������������������������������������������������������������������������������������������������������������������������1������������������������%��A[��]��m��r�����������������*�3�������!��%��B��C�����U�����������������������������(��,��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��XY��Z��[��\��^��m��o��q��r������������������������������������������������������������������������������������������������������������������������������������������������������������������(�9�������
������������������������������ ��!"��#$��%'��)��+��-��/��1��3��5��7��9��;��C��\��^��_��`��y��z|���������������������������������������������������������������	��
������������%��'��)��/��1��7��9��>��?��e��g��i��k��w��y��z��{��|��}��������������������������������������������������������3��A��G��Q��R��U��a�����������������������������������������������������������������������������������������������������<������������������������%��A[��]��m��r�����������������������
���������� �0���������!��%��B��C�����U���������������������������������[��m��r��������'������C�����U�������������������y(,46HI��JL��OTV�������������������������������������������������������������]_`�����������

>?hkz{|}��������������������������������������&(��,��4��6��9��:��;��<��=>��Y��[��\��]^���������$��������������������������������������������������������������������&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��C��[]$_��{��|������������������������������������������4��>��B��D��E��dfh$z��|�����������������������������������2��@��A��F��G��U��X����������������������������������������������
��$��;��A��[��n~�����U��������������������$��;��=��A��B��[��]��b��~�����U�������������������$��;��=��A��[��]������U��������������	;[�����U���������$��;��=��A��[��]�����U���������������������%��;/=6A$Bb��&�6����S�^�.�&���U2�#�&;��<��=��A��O�8�����������U��������
��$��;��=��A��[�����U���������������������U��O����U��
;��A��������`�����U�������$��;��A��[��m��n��r��~��U������������
��$��;��=��A��[�����U���������������������$��;��=��A��B[��]��b~���U�����������������;��=��A��OGU��������
������%��;��=��A���������U���
��;��=��A��[��]���U���������������	;��A�����������U�������	;��A��[���U���������������������%��&��/��9��;��<��=��>��?��A��F��H��I��J��KL��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��8��:��<��=��?��A��[��\��]��^��`��z��{�����������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}�����������������������������@��F��Q��R��U��V��Y��]��a���������������������������������
������%��;��=��A��~���������U�����(��,��4��6��9��;��<��>��F��H��I��J��KL��T��V��Xo��q���������������������������������������������������������������������������������������������������������������������������������������������������!#%&��(��*��8��:��<��\��^��_��`��z{��������������������������������������
��4��>��?��B��D��e��g��i��k��z��{��|��}����������������������������@��F��Q��R��U��a������������������������������������������������%��;��=��A�����������U��;��A�����������U�����s(,46HI��JL��OTV���	��������������������������������������������������
�]	_`��������

>?h	kz{|}�������������������������������O5���;&��;��<��>������������������������������8��:��<��[����B��D��d��f��������@��F�����O3���:;��*�������������D��������������������������������������������$;��=��[��]��*���������������������������������������D��E��������������������������������&��'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��F��G��H��I��J��K��L��M��N��OQP��Q��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������X�������������������������������	��
������������������������������������������ ��!��"��#��$��%��&��'��(��)��*��+��,��-��.��/��0��1��2��3��4��5��6��7��8��9��:��;��<��=��>��?��@��A��B��C��[��\��^��_��`��y��z��{��|����������������������������������������������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��4��6��7��9��>��?��B��D��O��T��c��d��e��f��g��i��j��k��w��y��z��{��|��}��������������������������������������������������������������������������������
������������2��3��@��A��F��G�������������������������������������������������������������������������������������������������������������������������������������������������������������������������'������;��<��=��>��A��]���������������*8��:��<��B��D�����������@��F��U�����������������������y��������������$��&��/��89��;��<��=��>��?��A��BF]��^��b�������������������������������������������������������� "$&��(��*8��:��;��<��=��?��A��[��\]��^y{������������������������4��B��D��d��ef��gh��i�����������������������@��A��F��G��T��U��V��W��X��Y��]����������������������������&��'��()��*��+��,-��.��0��1��2��3��45��67��8��9��:��;��<��=��>��?��A��K��XY��[��\��]��^��_��������������������������������������������������������������������������������������������������������������������������������������	�������������� ��!"��#$��%&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��_y��z{��|������������������������������������������������4��6��>B��D��T��d��f��h��j��z|��������������������������������������������������
����2��@��A��F��G��UX����������������������������������������$��;��=��A��O[��]������U��������������A����U���4$BGMNOPQb~�����������������
Oc�TU��WX�����7$ABGMNOPQbn~�����������������
Oc�TU��WX������������$��&��'��)��*��+��-��.��/��0��1��2��3��5��7��8��9��:��;��<��=��>��?��A��K��Y��[��\��]��^��_���������������������������������������������������������������������������������������������������������������������������	�������������� ��"��$��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��>��?��@��A��B��[��]��y��{��|�����������������������������������������������4��6��B��D��T��d��f��h��j������������������������������������������������
����2��@��A��F��G�������������������������������	������������������$����$��;��=��A��B[��\��]��^��b~��������9��;�������������������������A��G��U�����������������5��������������$��%��;��A��L��Od[��^��m��n��r��~�����������������
��*��;��C��_��`�������������������A��G��U�����������������������������$��;��A��O?[��n~�����U���������������((J($;ALBDG3KM3N3O/P3Q/RSUWY
Z[\]^_a$bEj#mnr~�����3�3�3�3��������%��3�3�3�3�3�3�3�3�3�/////
'
)
+
-/13579;>@B|
�3�������������3	3
333%')/179O3c3wy��������3���
����33AGTU6WX6�N������/�,�����3����3�������
;[�����U�������[�������������������C��]���hU���������������������;��=��A��OU���������(��,��4��6��:��F��H��I��J��K��L��T��V��X��Y��Z��[��_������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!��#��%��'��)��+��,��-��.��/��0��1��2��3��4��5��6��7��>��@��B��\��^��_��`��z��|�����������������������������
����>��?��e��g��i��k��z��{��|��}������������������������2��3��U���������������������������������������������������������������������������������������8		-A3B GMNOPQab!jn�����������������
Oc�TUWX�3����  A'Bb����U���'	A����U���O��������U�����O#����U��4$BGMNOPQb~�����������������
Oc�TU��WX���������$��;��A��OG[��m��n��r��~��U������������;����������$��9��;��<��>��A��[��m��n��r��~���������
&��(��*��8��:��<��C��{��������������4��B��D����������@��F��T��U�\W��X���������������������������e��

$$��;��A'B#GKMNOPQY[��\��]^��a
b"jm��n��r��~�������������������������%')+9��;��B|����
��Oc��������������������A��G��TU
WX�(������
����������4����$��;��A��KY[��\��]^��_m��n��r��~�������')+9��;��>@B|�������������������������A��G��U������������������O��������U�������$��;��=��A��O[�����U�����������������������%��;��=��ABQ����������U��X����;��=��A��O[��]���U���������������
;��A��Or���������U�������H$;��ABGMNOPQYabjn~�����������������������%')+|����
Oc��TU��WX�������C���������������������������������� ��%��&��(,/��46F��H��I��J��K��L��R��S��T��U��V��W��X��Z��[��\��]��^��_��mo��q��r�����������������������������������������������������������������������������������������������������������������������������������������������������������������������9�.����������
����������������������!��#��%��)��-��/��1��3��5��7��9��;��>��@��B��C[��\��]��^��_`��z��������������������������������������������������������������������	��
��������������%��'��)��/��1��7��9��>?��d��e��f��g��h��i��k��w��y��z{��|}���������������������������������������������������3��A��G��Q��R��U��V��Y��]��a��b����������������������������������������������������������������������������������������������������������������������������������������������
;��A��O8[���U��������
;��A��O)���������U���������A��o��q���Q��R��a��������$��A���������������������������T��U��W��X��;��=�������*������������������
U����������,��;��=��[��]��n�����
�*��������������������������������U����������������������������������������������������������������U��V��Y��]�����������������$��A�������������T��U��W��X��C��������������������$��%��;��A��[��m��n��o��q��r��~������������
��*��C��_��`����������������������������������D��E��Q��R��T��U��W��X��a���������������������������$���������������������������E������������������������������
D��E��8������AB[��m��o��q��r����������������.�C��_��`�������������������
DE��Q��R��U��VY]a������������������������������������������������������
D��E����������o��q�����������������������
EQ��R��V��Y��]��a��;��=�������*�������������������
U����������^���������������������������������� ��%��[��]��m��o��q��r�����������������������9�.�������!��%��)��C����������������������������������������

E����Q��R��U��V��Y��]��a��b���������������������������������������������1����������;��=��A��B]������������*����������������������������D��U��V��Y��]�������������������������Ao��q�������������������
DE��Q��R��a��������$��;��A��[��n~����������E��T��U��W��X�������������� ��������$��;��=��A��B[��]��b~�������������������E��U�����������������������$��A����������E��T��U��W��X����A��o��q����Q��R��a����������$��A������������E��T��U��W��X����������$��;��=��A��[��]o��q�������������E��Q��R��T��U��W��X��a������������������������ABo��q���������Q��R��V��Y��]��a��b����o��q�����Q��R��a��\������$��;��=��A��[����������T��U��W��X�������������������������$��;��=��A��[��]o��q�����������Q��R��T��U��W��X��a��������������������;��=��A��[��]���������T��U��W��X���������������$ABb����
TU��WX����U��������$��;��=��A��[����������T��U��W��X�����������������
a�������������������������������� ��%��A
[��]��m��o��q��r�������������������������
���������� �0���������!��%��B��C����������������������������������������DE��Q��R��U��V��XY��]��a��b�����������������������������������������A��o��q�����������Q��R��V��Y��]��a��;��=��A��U��������
;��A��O&���������U�������O/��������U�����O>����U���������C����������������������
�����������%��F��G��H��I��J��K��L��M��N��O��P��Q��R��S��T��U��V��W��X��Y��Z��[��\��]��^��_������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������!��#��%��'��)��+��-��/��1��3��5��7��9��;��>��@��B��C��\��^��`��z��|�����������������������������������������������������������������������������	��
������
����������������%��'��)��/��1��7��9��?��DO��c��e��g��i��k��w��y��{��}���������������������������������������������������������3��A��G�������������������������������������������������������������������������������������������������������������������������������������������������;��O[���*��C����������������������D��E�������������������������%����������C�����������������������
D�������	�������A��������������������%��;/=6A$Bb�� �/����L�W�'� ���U2�#�&����U��6������������������������������ %��&��(��,��/��4��6��8��AF��H��I��J��K��L��R��S��T��U��V��W��X��YZ��_��m��o��q��r�����������������������������������������������������������������������������������������	�����������������������������������������������������������������������������������������������$�(����������
�������������������������������� ��!��"��#��$��%��')+-��/��1��3��5��7��>��@��B��C��[��\��]��^��_��`��y��z��|�����������������������������������������������������������������������	��
������������%��'��)��/��1��7��9��>��?��d��e��f��g��h��i��k��w��y��z��{��|��}���������������������������������������3��Q��R��U��V��Y��]��a��b���������������������������������������������������������������������������������������������������������������������������������v����������&��/��9��;��<��=��>��?��A��FK��[��\��]��^����������������������������������������������������&��(��*��8��9��:��;��<��=��?��A��[��\]��^{�����������������������4��B��D��d��ef��gh��i����������������������������@��A��F��G��U��V��Y��]�������������������������������������������������$��'(��)*+,��-.01234��56��78��9��:��;��<��=��>��?��A��K��Y��[��\��^�������������������������������������������������������������������������������������	���������� ��"��$��&��'��(��)��*��+��,��.��0��2��4��6��8��9��:��;��<��=��?��A��_��y��{��|�������������������������������������4��6>��B��D��Tjz��|�������������������������������������������
��2��@��A��F��G��T��U��W��X�����������������������������������������:��?������������������,��.��0��2��4��6��=��?��A���2��U��OG����U��:��?������������������,��.��0��2��4��6��=��?��A���2��U��
;��<��=��A��O[8�����������U���������������������%��&��/��9��;��=��>��?��AF��H��I��J��L��T��V��o��q�����������������������������������������������������������������������������������������������������������������������������������������&��(��*��:��<��=��?��A��[��\��]��^��`��{�����������������������������������
��4��?��B��D��d��e��f��g��h��i��k��{��}������������������@��F��Q��R��U��V��Y��]��a��b���������������������������������������&��/��9��;��=��>��?��A��F��H��I��J��KL��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{����������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}��������������������@��F��Q��R��U��V��Y��]��a����������������������������������������������%��&��/��9��;��=��>��?��A��F��H��I��J��KL��T��V��X��o��q���������������������������������������������������������������������������������������������������������������������������������������������!��#��%��&��(��*��:��<��=��?��A��[��\��]��^��`��z��{�����������������������������������
����4��?��B��D��d��e��f��g��h��i��k��{��}��������������������@��F��Q��R��U��V��Y��]��a���������������������������������n����������$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��~�����������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_��{��������������������4��>��B��D��z��|���������������2��@��F��Q��R��T��U��W��X��a��������������������������������������G����$��&��9��:;��<��=��>��A���������������������������������������&��(��*��,.02468��:��<��[��]��{�������������4��B��D��d��f��h�������������2@��F��U��X��������������������@������$��&��9��;��<��>��A��o������������������������������&��(��*��8��:��<��[��]{�������������4��B��D��d��f��h�����������@��F��T��U��W��X��a��������������������������T����������$��&��/��89��;��<��=��>��?��A��Bb������������������������������������ "$&��(��*��8��:��<��=��?��A��[��]��y{�����������������4��B��D��d��f��h����������������@��F��T��U��W��X�����������������������)��9��;��<��>��Ao��q�������&��(��*��8��:��<��{�����������4��B��D����������@��F��Q��R��U��a��b��������������D����������&��/��9��=��>��?��o��q�������������������������������������&��(��*��:��<��=��?��A��[��]��{����������������4��B��D��d��f��h�����@��F��Q��R��U��V��Y��]��a��b�������������������8������$��9��:��;��<��>��A���������������������&��(��*��,��.��0��2��4��6��8��:��<��]{�����������4��B��D��h�����������2��@��F��T��U��W��X�������������;��A��U��7��&��9��;��<��=��>��?��A��������������������������������&��(��*��8��:��<��=��?��A��[��]��{�������������4��B��D��d��f��h��������������@��F��U�������H����(��,��4��6��9��>��o��q����������������������������������������������&��(��*��:��<��_��{���������������������4��>��B��D��z��|���������@��F��Q��R��U��a������������������������q����������$��(��,��4��6��9��:��;��<��>��A��m��n��o��q��r��{��~�����������������������������������������������������������������&��(��*��,��.��0��2��4��6��8��:��<��]_��{��������������������4��>��B��D��hz��|���������������2��@��F��Q��R��T��U��W��X��a��b������������������������������������������$��;��=��A��Bb���U�����������������������G����������&��/��9��;��<��=��>��?��A��Bb���������������������������������&��(��*��8��:��<��=��?��A��[��]��{����������������4��B��D��d��f��h���������������@��F��U��V��Y��]������������������&������$��&��;��=��A��Bb����������������������������[��]��d��f��hU�����������������������c��$��(,469��:��;��<��>��A�����������������������������������&��(��*��,��.��0��2��4��6��8��:��<��_{���������������4��>B��D��z|������������2��@��F��T��U��W��X��������������������������7��&��9��;��<��=>��A������������������������������&��(��*��8��:��<��[��]{�������������4��B��D��d��f��h�����������@��F��U��X�����������������<����������%��&��/��9��=?��o��q����������������������������������&��(��*��=��?��A��[��]��{�����������������4��d��f��h�����Q��R��U��V��Y��]��a��b�����������������<����&��/��9��;��<��=��>��?��A��������������������������������������&��(��*��8��:��<��=��?��A��[��]��{����������������4��B��D��d��f��h��������������@��F��U��������u������������%��&��(��,��/��4��6��89��=��>��?��o��q��~���������������������������������������������������������������������������� "$&��(��*��:��<��=��?��A��[��]��_��y{���������������������������4��>��B��D��d��f��h��z��|�����������@��F��Q��R��U��V��Y��]��a��b������������������������������v������������%��&��(��,��/��4��6��89��=��>��?��o��q��~���������������������������������������������������������������������������� "$&��(��*��:��<��=��?��A��[��]��_��y{���������������������������4��>��B��D��d��f��h��z��|�����������@��F��Q��R��U��V��Y��]��a��b������������������������������H��(��,��4��6��9��>��o��q��~��������������������������������������������&��(��*��:��<��_��{���������������������4��>��B��D��z��|���������@��F��Q��R��U��a�������������������������p������������ %��&��(,/��469��=��>��?��o��q��~��������������������������������������������������&��(��*��:��<��=��?��A��[��]��_{���������������������4��>B��D��d��f��h��z|����@��F��Q��R��U��V��Y��]��a��b������������������������%��9��;��<��>��o��q�����&��(��*��8��:��<��{������������4��B��D����������@��F��Q��R��U��a������������
��������A��V��Y��]��������������A��q��t�����Q��R����������q�����Q��R�����A��t���������������"��A	f��q��{��������Q��R��V��Y��]���������������	��������A��V��Y��]�����c��_	 ""%AFa8eeTggUjjVooWqqXttY{{Z[��\������C�[`y|��"��$��(��-��/��2��5��6��9��<��>��@��CXY
_d%%i01j47l>?pBBrDEsKKuMMvOOwTUx``zcm{pp�ww�y}�����������������������������������������������
��23�@A�FG�QR�TY�ac�||�������������������������������������������	(` 4;4��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���X��������������������������������������������������������������������������������������������	�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,,0����������$$2����������������������������������������������������������������������������������������������������������������������������������������������44')'..	+
&
(/& %0)31	




&	
	
	
	
((+   





%%%	+!!","9	,,!!#$#&
$$
!:-78"#78	
--"#( %
))56'56'01/****22"			$$
#
3))%%	"



&('						!

			

"



	!

"#
	-#

./0,  12
,
3$
 $$
		!

*+*+&'#

 (g &&(*,46:<<>?FZ\\1^_2oo4qq5{{67��8��O��U��e��k������C�[`�y|��������������������
��������������������(�*
7E*1G47O>?SBEUKKYMMZOO[TU\``^cm_ppjrskwwmy}n��s��t��u��v��w��x��|��}���������������������
��23�@A�FG�QR�TY�ab�����������������������������������������������4~DY|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flR�\�y�wX�fecQ�Q6q�ys�rrc|�|�o�Kz��N#c������x���w�wc0�G:�;3�3z���z�
�E�FK�;	"�*	-7	L	77)	,s-	9�##m�p��	���	�(	")	��)m*�	k�	����	��"	�*�		v�	��! I��	m	m	R�=����|�<��h>�C�+.��j�	�	�	�	�*				��O			q�&	%	%
|�{c�Z�Zq�}q�o�pp�<M�M���z�z>�>5�5+�+}�}��0�O�	"	Y&()*,-./01234789:<>?FHIJLMNPQRSTWXYZ\^_n~����������������������`lm�����������������������$+ ���������������������$*06<�G	�	�	�	�	Q	�.	|	��	��	B	|�Q�[�����/�	�	�	�	�	�	�	�	:.J
Q�W��W��h����������� &,28Q�[������*06<BHNTZ`flrx~�����s�s���������Q���.�{���B����y�����p����������
��$+��$+^djpv|������������������G	�	�	�	�	Q	�.	|	��	��	B	�	�	�	�	�	�	�	�	"|���|�դ'��^#�+tvlib/fonts/raleway/Raleway-Regular.woff000064400000251454147361034410014013 0ustar00wOFFS,��FFTMS����GDEFՈv�2�,�GPOS��vJ��JJoGSUB����OS/2Q`��gXcmap
D	�^-R�cvt �N���fpgmP���ZgaspՀglyf (�k!��'head�66��hhea�!$��hmtxd��&��loca\�'�maxp�  �\name��4A�MpostĜ�#�a�1�preppL�O(��{�_<����^#�+tv�(� ux�c`d``^�_������?_V9�2`�w
�-in/��Qx�c`a�g�����������
��������
�0����+���l�k��10�41�R``��cbg:��m�xڭ�{l�gǿ�;(��z�BKi��
���K-8L(qTP� *�1��%��1jtc����dN�1�˦f��–	
�is+�;~����Y9��'y�}�{o�y�F���[��~Y�
�wuZ⿯�~��!���j�/�č�4w���.-p�5['�nw��tP]~�&��jwj��i���5��U��i����J�>�:=ƞ_�ǽ�j�����j�%j�t�ߧ~��������
�9��R���Nj���R�G�B)Ư�}x�*�AS�-*��F�ƤJ9����T������Z?W`���f��M'4��V�-�S�yi߫�Q��0���Q�d�N_�^W���^�2�Xo��(�6��O��F������UM׵n@�J��Gjӟ�����d���Y��5�U�6d1Y�M�Z�r͏i���f��j�=Z�;��vk�+��Z�v��ݮ��G�ڿW5�7I����=�n�kaT���o2�"<��/C�ٗ�.n�uz�2]@��Y���=�Eal�J��u�i@n&��Pt4]�^L�0��h���l��!����t1����4~�c9E����F�N�?����x%4{6�O��g��R��@�8�>��#�r�
V�EA���?~���#���[
����^;��*���;��������i2���v5�
���ĸ<��4����7	n'F�Ry���U����\������K�&������1b��S�@�J��ęxxU+S���'�W�wĬ���o[8/�%�`��=���g#�:<���ʴ%'�|Y��t�%2
��ḴX�-�>bqD��'q��(�$b��d��լ�SX{Nm�rEsb� 5A����-�̇NC�񜭙�k�5ɺ�x][���i���1�k�_�+�1�Q�'���>��!�U��/�WU��ۯX�p@������M�A�A��O���6X�=�����9��&�C!�.�=�53��s���Za�1ƿ%'�@�jf��y��F�#_f�e�b���wυ|�	4��Ap)dz�ƹ�WI��G[���[J�Q�2Q;��{w���t�(`�;T������džc�FX�jT_�\>���cw��;�Ne������Ws����dg�?�bx-CF}ȷ�d� �d�4���Ω�d��r*c�V��7ߦbw"�o��"x���A���,r��I�׃}�]�\��m>a22�/��ߌ�<λ�42��y���Q�S������M�ݷ4���_�ӓߤ>�Gވ}�!���1=cg��;����bA.V$1�b��`�D.�����s�M0��D	bs��`���|L���l{A�������9�o��4�it�Q�%<�
�/��ÿ��ݝ�Ͽ����� �>?�&x�������C=pq��u��KsZ.�
/��q>��b.�
���1����~�R;�����/� �����#W��o�.��к�r�M쾛��d�����6�z�B�}� ��Z��B�]�E����=��}��j�gԕjҌ$����o�B�˦�!�5�}]�E�I��k�݅ٷ*j�]����ɺ���ۃ��͚LL��jj
J��^a�#��b���6�3�Y��$W�#j���	��mZ��x���B�]��h&u�������UEl(�s�L 6<LMU��O�bCv ��S�<L���Q�G�?L�|�>�I�TI��AOSA���+�	UD��fզ�5��68j�j����~�I��*�\���TO4_����Qޒ��n�N5�`	䠭�߮5zYk���
��y�;З�^�v�cȋ%����oPq���H>k��I�'��(j�]֫Z�`rMpq����������}����!Y?�A����M��4:�F���-N������7/#�w��i����Q��u�aWi?ok���q�9�ݚ��گ�j6jı���S�a��;B����Z+eσ-P�����B��x���YLUG��\D�Q@YƹG�Q�Tp�Zm-VA��F�JXTԊ�T����&�EE�j�K�i���C���Y�&�ɤt3��.M���d2߼L�7���06�0Z����e�W����zլ�cM��]d���1�B�X)AJ��$�tK�/="�|ɏ(�"(��h6ͥf�'ݖ��By�\![�I�p�L�,>���`Ν|��x"O�x���.����c�8o�g�o���/E��B�"^$�$�"J�nqHt�n�'�ŀ�⺸��r
��t�9ӝ���x)~J���(\�QV*���3�|��˲F��R�ã�`�]�=��=a�K�R�GyM�)}"}C /[9�VN��)!�Er�|���qD8�7��y<�G�8>�'�e|5�湼�W�Z��<�!�q�2@LaBx�s�|��\���.�k+ϋKbH\�(Ӝ9��a+'�ʩ)�x��(��κk
Y�V��f�Y�V���ʷҬ�V�k>4���.�y�l5[���<`�e֘U&7}ܿ�G�W�C��9w�{���]�.7ڍSF��d4
�a㠱Ϩ5��F�Qb�4�F��i�7���
}��X_�/�$=Q��c�(}����D{�}�}�}�}�}�=�h�i��
�L+Ҷk۴<-Y��6���A�^�S��5j���.Q>��W��������%��.l,�ҟ��g����N�8xc<|0�v���1���D�1S�P�3��c��'LGf �!
3�<�X�a�1s��0�1IH�,�",�,�2,G
^�
���X�W�*V�5�b
^�Z�Cұ��Ld!9؈M�E6#(���pGq�Ёt��Ї~�LJ���K��A\�0>�\�u\�M�-ܦl�c�ڈ=�B)ޤ#�D����N��:�=l�n;�m�ʆ�v��2އoc+J����Yj�.��&�c�G=N� LkieP&��z|L]��P!UQ>P/�Q��ʢ\@�p��]4�8ъ6[؂38��aGY�X3;�ZP�N�V����ewxڍW[o��R{�U�6��v�)�����U#!�ڵ.��ҮR�Sr/��&�Ӌ�Q��umL��o���yY��~ȏ�P�3�]]�%���9g�9sn3n�������O�:����o�xr��7���/?��O?�����ƣ� M~��{ww���;�����lksc�F�6k�E+��Z�5�--��VG���h�RK�5P�
�
�#wk'j�9�;�U�*xmzӑN1X`��VOlm�F�-��nd��3\�Sv��N�љ�
=�
�/�7�h��J9�؜x�d��[���X�A \�A�UX��'-�Ӟ�o�#�4���C1���n�x����ٞҭ7a?OL?Q|ȹ*ybЍ���D8�x'�Ŭԑ�pyON^/�p��f���^lg����A��/��K۲[�j���h™
5�&(i�i��,x�]���$d�Xc��C�B�ѫ�Yl8�
�i�$����S�`;6����`��y�l�)�4�τ�bX	�aÞ����_cU�}Ӱ�-'�
�X�Y5t&��NNyJ��`М��0�<��ۧ+��}�`௿�X�gi���7q����ά�A�Ц���k�"�M�<�{mi���Gb�8{�m���5��-�B #�t�ei�OiB�M4W�s��Pt��
�@�;<Q�$@�7;�CQ�5���s^f<�=��Vj�����X�a�g�L�0e���+��m��W�P�a7�w���U(RU�NV`�ȗ������k�B�
�w��d.��‚�S���{����Z|fF�K���X#l���`e,��	twwiN7���	X8e�e;|;2j�c>TcK����'�r��ჴ$b`��a�{�:�$N�-����=��H�!�\>�MȰ�����:C��S�\6:Y�4���̆zX�]+��S�E���Q���$U�.yS����7�MT��aJũD��&< �����i�aZ��IR��X��Z}��=Z�:��$�I(��u�*��R
.*�]��.j?~��a.�rT;�^:.����5�'Ў�"�)�TT�: {_��
��=
D:�IO�zn�j�7�-�$��m	áZ�3��Fu�V�.�˒_��Z�Qp��N�m�7y�kW��d2��b02�U�1_7_}d���)D���!�h��l'R�)IY7t>���e i���GA;��W�6`�Q��l��~��G�ߠ���af ��Ҷ�N��}�Вn
ݪ��xp�*@�.�rN�}(m��iu�Ї(�c�B�|P��zMf;�T>qPH�����]��D��$����Z�d�!�d�\�iujz	g�5��Zg™%�>���-�����y��yލ� FfV)���{��Ow�
�-��a��*�z6���ƪ��:PTZ�:���î0�ĺE�����p�/mfU�2��b9��2�=��|�^��٨ae��\��QI;��}��JS?*:�X����<��q0�RN����NΐE���Ć��7Β��OX%���jU#��ݢ挃6��6m�y�ԉM�i)��e�ߢm���ծA�k���͗P�K�+��H�2�c��Ձh���	�:�Mh��1Th�����6F��5��y��g��<b�:�& �ЛgR=��ƅ���7>��G�3��Ō#�2��3p�)B�ϛ0׊��U1�+�U�s�"�ފ��i������%��E�:�?��7c*���{y~�'`������B{S��]���ۼ�����h��Y�U�}yZӹS�����^���#@�R��N�,���K�C���(��A����T�{p~�sV��i�mU��+�.r��4�uH_c��,�C�c�D�[��us�={@���;�b�+&'�Y�M������KΛ����2.�6o��]���T��gHNCG�7l�Ճ�FV[vjt˛^����i>�Ԅ=O\�ń}$��q�%�P��O����R���ԝ�|	iM؏�|@g���pW;h,P॓�.���T�W3���K=9<a�oK!g�5����2a؍�Q����=���"�? �>4~k!�\��_I���&y�x�M�INBA@���f12C1
ڎ8O��^(b'4,�p�ʄ
��d�qŎ�x\�|����We�T.˲�g��X\�Ca����o�n��	\�.s��"��8�,�,�p�F8I!�Q�'8�#�c�(D�a�D!D�l�� ��V��ڋ,���#�2��j[x�]ؤGٔ��[�-�I�D�W}x5�b
X��Y��ٜ}3dN��T�i�1��:N�w�t*�|h����D7�6�F�;3�	��2����[4jM��M"���Tӆ�s0 ��0G�ƗN����>�S�>T�.�s�Ԫ���������o�/W�ok¿`�h�x�c���t���ɚA�������o �����qA�"DAu D��� R�A�A�I���q�Ռ{����]x�]�mH���s��9�\333{33SS3{s}��s�L���oε�k�<�+g��9��1"�DDDDDHĈ��!#FD����CDDDĽ?/��IJJb�i�-i�/�_K0"�����I�lv����%�庵
�A��?���=}{�vC �{�c�3�IF��V��7�8�,HV$�&G�)�s���TL�0Ր:�K=B�P
D�P�(7*���[u�}7�&�e�t}s�~Oq�uo�����b�0��E�]����i�4n�H[I�~��/ك),k�N`W�6<\O�e�P�3� �����Q��Σ}g�9pn�� �A�ɘ�8θƣ�$</«�~����2Q��LV�-ӝʌd.d�g���L��*��0I8ςg�gQ�xY�,]�I�%1�H 2�UD)�@����Y6<;=���ϖd۳���d��`$,�B����Q�$)J���}�i,�C���Hrt9]9��ќ-2�,$��f��<H#O������*�K�e�
s����w�����@
��h�
p! �K����ˣ�y
y�<G�'o4/����KAQ�EDQQl7%DY�G���U��|s�3?NS5�N��:J��F�?����u�[@)��
���g48
K������M��´q�m��%h��B|!���PZh(�-<�#�:�.�G�WE�E���EEsE�E���E�E�3(>C�Xdl2��L83�Ie�������0G���(�'s�y̼f�Y$�%b)YV��`���X��_�#�u1��V,*�;��œ���X�	���E����aG���y����}�I�q�2���s �;N�3�9�s�\�+�B�Q�w�{R�*J�%�{��d�$^rƃ��x<���Y�T�,ŗK�+��ҭ���>��͟�/�7�{��2DX&,S��ʾ��)�Ԁ>p��+`<��3�R�*��O���/d�J0*�=�>6<<���
^EC��"P�V��dW
+��#�˕{��ʛ*D��Z����Z�ګFVӪ����S!O�.
c��5�A��f�&\3^3Ys,�� �K��~�.jy�]�������:X��Qg���K��]�#����bP�o>�>�>�|y�#�K@I�$"ْH.�R�*�~{��A���(m47�=����ƛ&^��)�o:l�z�xV���ٞ�B:׌o&7s��C��͉�K\��2��.��Ee��,!;�#�89IN��r�\&��;��|B�(�)Rb�FaS�!ED�Ђh��[-��o-3-�-�-�-�J���(�J�R��R�*��Ӟ۟O=�S1TUP�MQM��UK�M�չ�ƪIj�Z�֫�A��z^���S�kP@j���[ӫ�|�,h65	ͥ��i�Z��A��ڵ>�7�vU�[{�Kёu�N��鼺��݊.�K�.ZSZ���֦V���u�5ںѺ�z�G�z�^������y�����Pنj#����ڦږ�6��N
p�@7T��m1��;�c�M{Z;�loj7�{�Gۧۗ�7��O�IF��j�F��e������ڄ1&�IbҘ�L^�Wӌi�7����f�YdV���w�y�<g^1�͇�+�B��,B��Y\��e�2k�aٶ$,"@T�$��?��B��,��A�I@�����c�c��~��Xc��͋�Ћ�W6��a[�ݼ����\|��I����u�b�
��v���]���^����þ���z��y7���{���
����p8��X������	�Dz.�B'�tF�?���o�o�o�.���ҹ����?�4�L�ü�g�׽�y��ƺ
�Yw̽���A�!�a���^s�x�a�'������]x��G�1{���G�G���/���J�^�7�=����}�������_�O����.���}�;�X��~�����|�|R|�|Z�����C�������P|hw�`�x�l�*�ā�|�3�3�y��F�t���/�/�/#_vB�� 	�����Ìa�kxd8:�5���¸0f�aqX6�;þ�a�5Cxڼ�y`�E�8>3O��l��h����$m��iz��n���˲˲��]@�En�EDD9D@<�}_A\XoQ_o�U�_�O3�<I������H��g>��33�iP*�	���>�7��eXO���2�/��h�Ia����j��c}��{�V��;����T��G,�ŏ�^�a�BiFG�ga�`�.t0@
LUb�H߀LD"i�H��:V'Ͳ�-�Z���������H~�^��v<.G��
k;�N��	��K�%��*��?��߮�c�7�T]��������b�\����/�Ո�JVa��B"�qh��ߒ)蓲&�ԗ��,K_�����Mt����7���S�u��+nH�O��H<���|.��/��-���@KCCL��I	ʠZ튧�9Qѣ�H�b��(�D"�4� �c,[�����zK!��[L��.�cX��g|^���25���`�Ű�\6���l��4n=�(����I��Άg�'�-�����Μ�ف���Ď��=�����]x��e��w3��Żuv�j�?�ti�щjj4i��|���Q�f�Z]x�0��0tہ���D���</	Pà�j���B�.ychpP�UF�"�N���'�k<�&�xT0�.C2�W�`�\,�9|���C��B�{��u:�v{���
��a�.���禠v��׸?Ç���`��t&���wr��`(4��y3頟:8
\�g�Oބ �ip3��ΪV�%���[�`�xԘ#i,dJ=py��x�D����(�
�J>��3��(-��;"sb}:1eקz�C驞�B�_LΜ?T��Ϯ��GBŘ'���#�:xa| k��þJ86��v�=�~wj�`e�3
�M����ͺ�iGܮ��c�:�a$G�l*G�\ڎ�R9\B�g�%m�K?��_-�=̨A�!��[4��h�H�(���1Ƃ�Z�
W|p����t��ٗ\�{��Q��xU���0I�t�fn���N�j�PԔ-���+G�T�_X�ܷg�չ��o� ��	4���W�TjIerCsDL�!m)����%�%�"�H���HM9�zа��
G��l�ٺ�e���_�g#	�g�"$+�2�`��b%b�|Y�90i�ٗU.����{�5�?yv����. �Ǡa@��f�6&�&�e�s����<
�7���t�=H`U��zL���J�~�e�B�'�L��J�v���X?V�~d��q�?FD'Sr胨ʅ��K��b7��4��5�f��j�4��
�HM �ς�M�m�9��@ct��FG��
�܆D�|�C��uk�\77w�ڵ�͍��?02r���l�_�#��^U+�J�V��3R�~u�R�J��ɲ:
��b�ȳ:��s�!��FK.�E�r�?�rX��6�K�1<��O�<�RU*�@�)n������`peFPs#!�j��Uys�r��,E�2!�<"��'b��q_�dMT&<�;\�8:����3�������FF�=��[i��"�2�'��.�{T�c�*�b����Fa<�B����*r�M��:���

k{�#j*
8�v�
O6�	����t�}jC` \�5Gu�M��\W�uiz2ٷ%ݟ�D�c���hoO��¾�3�.�ũ-�,Eυ��l��	R���450�E0���Iq֓��7��~���=
w���'��=���\�����t|Kg�EӋ�@�a��QԐF懌�5��T����1y��
J&.q�;�鵉�T2>m������R���Y塃7O�{S}�5lj"���,9��3�Kd\��	�<p�wۃ"���n���z��_`h)ep�%������J�[��-v��J�����Ț��i��N��6=Ͳӯ
���U�~��
��l{��-W��{az:�nL��?���^�F��T=&�HD��>��z������>��*�ELW��-����z��l�T�`ooՔ�E6��aQ��	n��?�ˤ.��	�Dd���>x����FΩD��\W��6\;��_���l�+��ugȏ�xb��=����#������m��XZ��}ѡ����J�:;������/4�k�` �p惁��u�Kg���a�!3涋�)8� �'&2���</LTs����k�405ۗ߂'�:����'���+=���;
GȌ�x��i~ƶ^52x��\��Fq$��Rl�o�}R,R4�4�%1����b~r�.n��Ա���>� �K%"�D����i���(o��1���
x���CZlCLU���v7X<�ğ0�Mj�E��}V�����s�N�Mp����<��z@1�����ǯ�s߇�R�R���^n����lf��e�Uwyϟߞx���wH^�	�u�0�x ���f�UX> ��MS	CA�!^	#�n5���T�,�|�dG�0�!��=�`�f	�
�oE+q���c���=�t�]��H*��4�|�[g�M�,�t�F`���n[gg0�V*��Ov���bž�e	�1=,�i�LJ��5��YAK��2Q�	�~/V�+�>��g(�~خ[r����)���\��S3�����ޙhtHkʥ��N}��x�@�Bj��{,���C��C[2��C��_�	O���B����r8�ꡤ�t$��4Z��y���8X
��Vgx��;u��hO�9hut��vu�;�պ}��۲�w��\�-k�u��{�_?sݮ��՞�>MڞnGآ&4T�o�`�#�<\�e"F�(��@Ĉ��g)�*�\$�
�He�ߑ&�OzA����V��G^��,�=RTB�-��	��
7��W�	n��zo�}.�[�=���5��l;$�a�x��Q�'h>��C�D*�,�
��t-]���-万��X0���w�}�_�����.��/���x��nL�cٍ��f�~W��?��-Џ�׷�}��R7�������-��U��n�q�L�S^!M^�!&�M��e���o�n>
�6]�n�5]yK}m��k��YM����-���.�O�}���?[�&�Vv�\�Ɣ�we����Ky���L#0CU�Z��/Bp��F�1"<-��8�ɍ�5�C����ܡ2:���]g�\9��Ě��	���$��I
$aP	Л�Ԅ�,�P��r
���[�0�K�ĽXKN�3�LDmxR�c[P������W�{�3��/_=�0'��Z���:�_�P`��	���%,�&^F����v�4IX��|�K6�Rs�Fκқ�6��5_h|g��=��IIܿ�Hm���M�݃���B����K`4���c��I$�B �HQCBGEEg�|:~����u��B��%�'���1�9���w
�{�2t�t�u���`݌��b�
��ҁ�N�*�͍���c��WU�ƷL�&��;̾��#�b�uW�Ș͠5�+�lU���KD@���A���'X@��R�|^3ŽSk�7�B_�΀羁g���_n�+`xb�#h�D`E<���[�x�[�3F���3rH,�5T������#d�(�:�mn)�q�Q�),#h���g�Ƅ�������3-^H*B
9������wg��_@Ë���z�],Q�"���7�����Y]�1�zA^�[�^<q�\2�p���%����K�G�����݁�ž��~q�ޣ���{J�}G���"�W<{c��ٟ/�N�g���E
�d4�
XO"9����-�(�a >���n)��W�74�9:X�S�[�ކ��x$:T׶�7�u��\��J�:ٸ��`���N�H��1.�°��̕��Ё7	���0���
�R�Svt;&���4�|�o%��ɂ;8�|p��=�Dp ��<%��e�'(��G�b4/�6�ǴH���&q�i�M�6���/ɸv�҅���=s��s��m��=���$\rG}�Lv�1N�ph�!�F�G�鳞�g̥P,ƶ�Y�Їݗ�����ETE�.B��t-�o��@'yΨ�9 h��%�D`j^��K�/���-����<k�w�4�}{���ܭ���)v���}�]T��e��7�!�	�A2eG�����1��*�,}7�s��~�"%�]��F�D�#�Z&A�A
�Z����i5�Z�,c ΅Ce��1xƞ�ˮ�X��|�G��N@t
z�w��q_Fb�
���OK1���.��P$g�X���uF[N;�Ù�n-vdk��:(�u��0�}���p/�mpW��^���0?�DR��jY�L�������I��ܟ0�+��� �O��_�0��F�Ӱ�$'1Bj�N� �	bꆿ�(�������r~��e����K�;��4"�H���L���k��|>Ĩ
�gx��_�`�poP��%&�Y��In��R�m����8lh�&�ҽ��Btk᝿�#0�B�C�8ov�`���L�ȱ���{���;�r���W��Tc�&iW��'9�w��e�F
���	��">�v�(|�"M��E��[uT�{�ބEz��zA�j��r�	�H߭lt�
MG�R/��jB\!o@i,�49+�f
�-&
{�+��ː��%�����=�еf8�>jcw�;��J�����`1�>�*U�1��fW1���Hj$�RE׸]I�oh�0�.] ����46ŤZSL;YO�gb�M4��m�#�j\JiCbE���{#�4�!��C�6·c&��9�k�]��r��6?�8{C�Y���**�=�e�ف��N6�c"����w��K�O�^#�� �G���Ed�
�rLM�j�	�=�V�x�0V�>�hj�}м6���f6e���lH30��L�ʏ_2:T0�b�m}�k���/y0�ZD��O�i#�H�h��إiX(�)�s��nx�$x����C��
����u�T*�����_�-����Xw���9s�[/�����)X^<D拁���}�ɝ��1u|}���d���K��˘x�:��y��t���՜6b߶�g�f؟w@��m"���u`�wG=8t�����gg�삾���<*ʒ�GV���;v���QY��w�̈́��>6�R�-��gc9�R��ba��6����e>3H�z�$J��h�3FG��	w�dR�M	���?�i�[R���R5^����	-y���rx�z��b�	a��a�X������h���i����|ۼAGv�@�o`.7���?|��9��{o��a]��B�K��;�'l��4:������Z����t5�I%��{S�����(y�����D����ļf�t�h�J�N�P�T*x��}�O�/�Hum��`�\LT����J��C��|p(�=������,�k��
T�I���[�C�J�dq]H�i�V�!��[�3� t]z���~F�cB�F�Z"da�SҶ,5됦�<%��#h���h=^{\o�kֈ
u/�
1
���VGU��P!�%
1h(E¨y���R=Y�~��sk5�x��P��<<=t�����,�
u^�<!Va��Ɉ�&���tJ ���0��*C���x{�*�e�\����R7�W�b�[�03M'f#IC
�4on)7	�"!���5��,���V,��j���6C���[X'��S���qD��iz��*�m��0�gM~Q��x�`����m�=�4�����a\k��bhMI]+�j�⑾n-�g�E�BW�^�Dq?��m��dڶ�3�򾰧w�p P��ۻ�o�ݔ��g2Xc���9�����;����ڞ�=z;x�F��'j�0gh�eDy���y��=��F�����Z�{_)�y�_ڿ9ҦdE�܈���>�+{R��ɝ��K�|��'�^�?n��_�Q�A.�W���4�r�[;�;�`�*cE|�U
Ƨ���f�QA�@h�Ζ����L�^l#���b��7]tD�3�Դ+�l���<s�.���zﶧ����`�B�/�Z��g��������J�@��0�K[���^S�j�O+:��8�p_B�w�k�#4fy>��!1�^�f)ze[�bi[fj�PV`�Hެ�rD�����dn����8=��DW����)�%�Q�#�*�T�����.�.�u�M*�'�ۀ����=�����*�z�ρY$ v�� 	��:~%���g˼I��u���B~�#.�d�*s�/�=�P����0���X�H��Y�PX�Įlhu�����'���W����*�}�^�n[�^��M;��Wi$F'D�k�����s���ƨ'��X�5H�,�M�;����$v�eX��2����#��ɹ���[���\�9Y���EZ�Z"�PA���Hx�N�2����a
� 	u��ӡWK�:Pzu��s��C}�;�������x���
�����9���b<2��-�1�a�b�%`�����d�:vl���׾��/tt����->��<l�(�.�����X�+��ء�I��?e:�d�S��M*	���$*����/?T�*u���]���Z$��gw<�ߢ}��~�ъ}4���*���}~��n�f��Sl��c)���/���_���dJ`W��V�h��D� Z%f�}��J�t�R�U��:��N�oC���֨�*�/�v=(c�ɠƠ,�~6-]nd��u���t�JW0׽s1b�_��.F��.Y,�&Qј5�/�$�1�	Io�FD����my�V�@�)(
�_e6Cy���t�Ԫ�jM�
�q?��
�4����	�Z|�.'�j��*M���L�A����A�-�reX{�[Q�"O>�iq��wN�Ն�ˏq8!o��8p'z��)�Ǥa7%A�k˛|�;���Y��"0"K�b޹
�oV�F��T(���nQjJЬ�j�$��q��nbE���]Af0�R7�f�ihdg*�¾Q��ǀe4b�KJ����o������й���B�v����^SOqۡ9�i��KRs}Rx�(P�k�o�oб1���X��atQVް��L��4�G�Umo�NԳ|��w�W���R��B��t�6�s;]!뚞���t�C���Z�a���`wernk�/�q��G*]���Z �&ޛ
����O�:��T�"��˨�*�QB�,x7�
��q�4%�ƇV�-R~%�"����`>��l�[V���O�R����z��k�\�x���H�^W����z�wO�_5��Ϩ��v,��a�٤v����ˈ�%������h�ʉ��ñH�j�V�R�Ռ���`�QCA˫p��=�o�x]�������B'���j��s=7�X����M/M���)xN2gO>�TҙI�9�x�yz��MT��@�8#�@�b���6���uS__4qg�[�_�w��)��/��5&:�cU�Ժ�.�,d:��_Q�kPH��^A
4z>�C�2$�U�m���.�Ҝ��&x���{���PG�?��%g�|�Cir6'�ŘG�S��VO>�GJ^�3w��7�����*5�j���PԬ�y:�>�-��5�����b�"Z�W�i�)l)o!
��bđ��6H�2e���R���%ЏC��V�5���2Z!�<I��bڥ`��#�?�Y~���f�W����\{��|~��k�^sF>�5k�of��F��S��Ck��AG���^ˠ:�4���g�`��D���:inוk��ܙ��rj͕�r�Ħ�F�/�K��.�_8����Ɇ7�z
9�˭t��]�j�b�Z�\��Pn��1����E��NgX&�y�=����`���������u�D��t+єk�3	K��\+�d�/5<=P��c�^��>\_'W�UR���1���CeLZc��\I$���Hڄ}��
J�`[k��t{c�J��K�ng���!I�N
�iu�D��2�eA,��hiY�g���!o�ZL�
�?z���3���>��B�#�k�.}�� �=.Gb�xD�� �_S��d�㮂��PY�������$uq�6�
��:U_If2�rЉY+�[�ZŠ�I����*Ѵ��X��,�k�Y��^M8��[n�M�_<2r�<YR���P��w�[�a�ˡH*p�	�Խ��QN��F�𠯫�|�S��Qo(��2���΢cXv�s�Fq��!��]@�^�d��fZ{I��+�<fvq�d<� a�t��K&}�6j�A-�J��܀��%��dj@�3��j�V.�J�^���~�>d�t���hTr�D� ZGB'�u��е�B�¡+*W\Q�/�d�����Ӎu�V&�m���t�,2��8�j���u���+
_��s�6�5u;�W5²��W��ɱ1G4i�F;�o�ǵ*����mJ��c���C/��	"|}�n�GI5N@��aqʄ�y�0�	�,���ģ�"抧�32;��v�j�,��h%����RŊ]��D4��7&{�Z�9���x�<Aw����p���ɥ��7m#:R�Y�y���a)�B�����.���F�V�P��`&�J�4���
�PX�2�6��f@#5;u�5aw�K!�aG�Ҭ�h����e��@'�K���K�]{��U�&�]�P�T��N�D$�=��K=(b��.:�8����@�{�Uo��K�.���[r���5�������`��&�����w��}@��}\Fk�x�?N؍T����HL;��$XL���^��6�c-���+�A-� <��_��"`Y��4�N>�{��륞��u�ೱ�ʬ������r�:�fLR+��H��C&h퓔��r�^�n���gs��{�^_��B�^�9=�LM���t�q��n_���q��R�Ĉ�ҽ~i6�Z: ���-��ϕ����A��]zq�ڀH�6���T$��sO?DzʂHW;�\�
��T�P����W!cU`)�o	a��0��e�������\��N�<I��!Ԓ#u{8a�D5Z|gy��������5ؔ]R*��^�	��Qx����>�\�Oy��J�@��y ��F��÷i=��*��C�YC�h9��L��E�􋌝�=�l�;�Ɉ#X�v��q=�g�X)����[��h%��m��Ӟp�(hӸ��6�/��bn���:)�<����c��)8Y�۠��Q�����s���4m>�·Zm��6�G:h#ܪ��s�6���6�G�F#iD8�����cT�� V5˔��Z$U�/�!k�4�:Wl�!e�&�EJ����L���_r�i��&��[��$��+������+�7q�t�IRDž����Z�G�}Z�D�h�,�<��mn�
�Fu�6����6��|���n�F������~�‰�,��‘�p���܆�<�F�ֆ��lks�ҏiE[<3�W��ݴ��DZ1��}��k��,2�Q�$j+� ���9i
���F㖉ehp<��8��E��P�Y�'yZ�hI�Xh��0o��6ũ��ӴM�4mn?�m�i�qp�)�|���n�CJ�(mDZAP��q���z�\��b�H�E#�-�hn
K�z�D�8�Q:�>z����CыG�9|8z�r8z,�����J�q���P܋�^��;%˸�ns��6�Ӵ��H�t���C�6wS�x�E�Mk$(�����C��|��t�+TGذg�aStv(�J�*��N��*^�l���Ъ��ɂ����z�{�~op0�<*��…�U�}�{O|�'2�"����D�1R���NS6�N+ɝ����M��v�o"�Km����&�z02�2�}y7��}΁��bv:�H:�7�F��hb*1,;Yow�34椈)mN���jL�={�]�u"L7��᧘nuL7	��0�T��S��>Y��Е왒=\�/���6x�.Ңr
��x���/�>�{7ij�O���-<���x���/���c��7���
 Q��q:7��d~�ti�'����5��osʩ`XZ�Y���ڹ֚��M��4k�h�'�f���ϴH����򻪾a���}��uﶁ-��}��� W��2삮O;8���L�s��f�ɕ�Y����E�egr�MF�'�!���e��\�Z>�(���-�W2=ik&���Y�Bї�ʺ�R�K��
��Al��H��8*ث��Z��<�'�ȗ�o�r��m�)/N��vp%m=��K�6w�6d��PK��M��|��l���d]�e���m�l�����JlY��,[)���C����߀+,_�H��Z��ު!�H�c�t���5�t�I���E�x�ԝkn��i�8d]�x�ri
VJ�Ƕ�/����s�2��6�ذ���U�3�ܦYD�e�3͗��C�Y�=��f��䶭[c��.�xwzc*;˦�&���٤{L:H�,��1n��n-���%w��/���9*V�U�˜�Wt>�OӦ9��S����k�������U�'B݊��0���k���*�M �����|��C�v� ��\*�~o�7,,p��y�c��*^��M*V�v�#�h��	ap	�B��5�t��t��)�>�%P�544X�ye[��0^h���������Qi��L������<Y#����;J��yvCg�l��E��%�VI�m�0o���i�6/���~F��u�6XF�M�%#��/�>��r2#^l�����M�维S��%�Ylw�ڲN���D
����ՖA�e�_��\���2��
eahxK.?kvN���zl}.4��u�
��k�0�{2���~��ƽ*&��L����v=d�u}}��
����dl�����V�q��	1o���l��+m��8�N�5����w^B`T�a,����>Tg?#<7Nj����g{�@�	~K��Wʣ��9�B�=�v�s%�۩�}���\E�O�.����~�o�W�'|8�
���(�����<J���d��~��#mD6d�p�O����"���8�Dp�Ck���.��k�G)�%�ʆN� %d��ˤ�V�����2���,³�Y|��V��Ίǹ[�屢���h+f��s�c_�O8&�	X�v���Ib�;�|��9�?r'���CL~��.<�'�e�]��
�i����J��qR��?K�'>�I��W�Gu��^��F�+cě)�� �/P81E;?�ZIgRhs-�ӯ85�;��O�YWù�E�O�.�E�O�.�>�W�)�=[-8��.�F�
��K�=D��$�>�Ha�+�:�SL��y=,]nC�%��fJh�a��iU˶c��B�x�Z�)j�L�� u��6�瓘D�m�������.k6��M\�F�	eh��ի��M҆4�ͺ��]HX�
'�ռ����P"�����H��}��@{[^��K���,}�Q����0����s��?WS��aܱ��	0p?��2�ø�~;5���q�ҟy�ۦ����i���W�r�.��p<�>�:o�u���sk�s��jtNE5��������o�b|��#��5k��z�	ZIKu�?��>-�f2�O�ǖ&�A���_^�y��&��+Y��.M�1
��-���Z���t�I^^�_���*/�n��n'�tX'����N�ܮU�+���bI�R7}�Jݯ�ՠJ�ԕs������R����$��y���T��m�T���]����ς���W�q�R���$�i+����?¦^(�_�����Q pj=��7P�Ij�i�[�k>.�1p��|��3}\
�תXj���3W䤚�A�{��(���=�h�|�oa�Ȁ��o�᭿	-9gk/$
�g7��DGZe���	)t���a��<�c������*����3��,�>I�6X���*=ڊ;��V��y��+�0?�jt�Bj;7
�u��]���j�����o_�׽�/�2^K�+ۈ�K~ڦS�,��Kt�s��cP�-�¾f��նCt�>�;�Y���X=�)Z�A�5�@C�O�i|M,z�P�t��������T�t8�
��aR%��*�QNVN���W�G뭒}X>�N��B|4Ԗ�>��G�9!g����Z�>�-����wb{M`$N�Sh�m����aen�$9�O�[W��^]�=�%M��;ͨas:�=:������_޲�X��1��TG�if��H�UuF�9.d^��o��y����o���]7r���[���\~,�1��؛�a��N"v��|q���V�1�c��""U+C�tt����|��4'YgN�Y^lr�\��$�V���h�4ah��Z�1vnP�x����$Y�܂���ͥқG��ڦTv��d3$��gr3,��e#�LL]:�3Ʈ�:�A�!��e2am���K�c����ž�������t/�
yA��Fm���o���̬��
�3��zg/�ͼ�O^�}J�J�1���Z�`a���ZG/n��'��^�<�*�/	���`e�4��f>�?�������2�>����<��U��mV¹�L�N	�	��y�I�w��A�÷	�M���s�Zb���{�>{O�罴�T�O�s=������s���a�E��<�g\��Ȟe*�����C�6�d�ٴ�yޮ�'�5y�m��J�"#��IQ�@
)U��;5��n�?O��‹Ë�3�,�vAx6�O}�sWU��ȬVtZ�MF��r��r�걜j���̉{�5[:�~����}�}��������2�-G[0���Ʊ�;���2w���0<�S�"���뇫�>ׂs]�S=��$������`���@�`��[��'��Y�f�:��IpX��p����И^ }v9����V3g(R�~�x�{(=����6=�r���Ţ��3o�q6�gdmpV�^�,��=������C-8wS8�G�rY{m�H��>�����CA��.�/R�W�Y�.�s��O�^p�	��J8X�lm-pb��$=磊d�d��X���۳r|2Kݣ��8)�w�E����[Yф8:2�&g5��F����p���h�������
���k4���5���+''�ؙ�_<5yh��s.���~M�#R{�n9���4���7+�,��)6�b��]%�E�nl�?�p1�aS"}�
�6������ک���m���C=/#Qq��x9��m-?��ñ<n�ݵ"�r�X{K�@c���q�����;mm��𞥟�vne[~UD������!7�[�ٔ�aW��!>���:�o;����4)s��}�[k���'�BR��?�Sb���z�x�3�ྙ�����'�gѕ��ifF�[t��ȹJ�f���B�n�vJ�%9ߕ�.W�~���,��J�c����i���~��������	�\�7m�8���儽�P��d.WP���#�4+iN�H�(j
�����+��:K!�^9����'�e�	��5�����F�*">�?��h�hDx����k���`����I-$Gt3���pQs+mϿ�Vx��
���
���i�
�ݾ��ڶZb�4�A��Q��M��l����ŧ���|_���c=+�����1�sN�?8�'䃃�&N.�6�O+LN��ki�R�MlX��W�2�Z*רj���%�Q��J�R����r�R&�!`��=V�ZD*n��Y̱���	�xOΖ㏗��[G̭����$��nx �7������ ���4]N������t�@<���6��i7[m��?J����Z�}=�i�yl}����9VZ�H�_ϷC�_�X���\Mi�i���q�F�)bg<c��J��uy�K^�����S�z�>L}�~��su��}c����OXo]�s��V�q����Zi��TkB��X�֔�9��Z��~�KOLކ�j8�kK�Ӭ��/�(�m9[��z�-�|��S���c.���f[��}����y���4y�i^\O�w��9�%�8U��r6�%Q���B�&z��M�6�Uk2{���b�@<�{s������ڊ��S|�fɪ�j�����1x�ib�6ɩ�0��8=��0.g\<��yZ
�~!r�&�_����=f.,��4O�*��̙�3�|�帜���o�������t^+Ʀ�^��)�y�N�s�����S�*oNy@4*� _������>�<�p	�
�`�C�3A�Ƈ>�|?=�r���o�Ckd�~އ1��g�#�V�}H����p��W��[�O
�.\?Z=� ���C�H[���h+���ge]j+�;֊��X�^A��
t���q)PK�#�ٓ�Ţ\�j��է�и�M�-���"��TFi��v\��%Ҹ-o^j����Eމ�� ���(7����1Ala{=8x�df}���6)�.�hĽ��L�6P�F&v��]2�a�zsi2v������1���wп�h�{�>Es���sA�h�υ��Xi�m�j�	p�+P�G��B�F��g�=YYެ�.c0�F^��b�%���	ϫ�����J�\`ـ��0���ߟ��,&�W� �P�o_����,<(�
��!K�K7�1R����ﵟUF�R9�D��kA�8	9h�I:\�6�Z8y� k�jm��@�*CӉ��{��"�B�g:�;��it��E�&4{��}�;�4Z�˟��.��i|��,�ѓLE:͟%�G�V*e���l6I�2C���[�iXj�ˍF���<�&�Ŋ�N����@�O��3�g��'�鶲s���)�����`|������q����%wC�w�wgf�U33�J�<W��?D��YU�1&��H���8-�M2H�>'!�͊Ib:9V�����Hq�����t.�R��n�����zz
a/�h�.�¶=����u$ω��;wb}#���C�������Bކ�Q|~�v������Q*��DM| T�@I� �*!v����fҩ�jz̮�:�A�UkU��
����GU�|E/o����;��4q�pc%���'�r�o""Nt��x����X$��8'�
������p�P%\ta�U|���#b›i�>^�Ǵ�?��������6�pa@���R��Z�?�0���#�}
x�>��8���&���xГ!�oG����w��}H�6��҉^���U���6�6:
:��Kʼ@d��$,�ϗ���B.�E(Q+U�$|�U)UN���Ԩ
r���Ypp�-�t������f�ϖf�j�q���i����->{@`3��T����ǁ�Hs��U��(�>>99��KA���/<��`Ȅb�"��0����0�VOw��L�>���N�-h0X�`(Ɵ#C�"9��1�ꈸ5lrYD�4����A���u���,wɭunj�(&�tѹ\���t�9����T�{�����8����0�~8���;+����/d]���	���,#�w�Ĩ!A�/\�ȡɓ����;a��P�,��/б�s�Yt��!��x`����y��W�y�L��"d4Z,�?�7�ܭ'\X��f
wB�h%�,�ؗ{7DSs��#��R�
�Os�HO��C�Jۇ���5��s�×�*v]><p�Vg��)OoOf�ܐJm83��>�ߠk�Q��}Uc�U�@���t(
]�o�YZt��T��8Ş�����-�yX(�q�g©ʆ`$i �p\���_�"9�"�g�!�9]N��Vy�r�y.�/����@GL�<��W"�i�1���΁�{�Y�K���gUx�:��	�=2��A֐
i�H�:t�ib�ye����~�1k;<��
ѩd|{��Y$�^O�N
�-](K
�d��ɀ��}]��Ͻ�t�<ЪU��_~S�]�E�BI[-�)�}�j��b���i���	��g���adɉ��y!��^���νg���=yk}COߎ!�Nq3���츥h�֐��rd�X���D������#���Tq�'!�_�&
����_��sA�W
5d7�v	j�K�
z�]�H��r`��8��ւ��=��s�<&�ȿ|v X����
�{����p��`~��_�r�+ף2Lx����vV�vѵ���3��GGC��hs�uz����$1j�@ʸ�z���b�Uz�;���DM׆�|�[���8���'踆1:Ǹ���s7�n�%G�µ��j�}};��B�ޠP	]E�h
�6�G��i��	G:�,\��oc�Mͧv���7�?���ά��'�k�vP>������|�n���C�n#��maOǟ�ӫڀ%���m~Bk���|}���6��IϠ�T�2F!F�Y��P�%�Z�L���:|��o������k��6�p���}��g���*��4`E�;��$̏/�~~�ϸ��]x0�{�/�/ֻ#�ߠc��5[ؚ/����+��Υ��g��ש}�<�v�C�yx�(�x��!�pք��R�t�A�QFW���y�,6P.'Ř��{ �#�6`W�����+5x����1�=�������ch�?�y���.�x�)��d��}�Ƚ�P��d���R�z�J�(>�q�o�C�@q2��Zh�ؠ�[�������{׿�kx�;�8G*���S܇�8�yQ۹�����4�с���bZ
�M����L�7ҴN�cxr��z'�dm���嫄�5ֽw�!�MW��ΒWz=����@w���,z�=�|9��77k��(�')}(o7�S�1PJ�O�NU�/��'��/sS�oEg.�����q�)"�>�}߹po�z���a�J �����^V�}�~���s���Mܻ�B�&�����#�=�L��5P��:=����a*T�^�����`_�S$��B�~䦯��(��x������;+0���k��߱{�%$'%����":�7�xh��<�ֹ�q��b��n�p��gз�ߡ�:�y��C����I.!܀���"=�
$��d�Ţqsߛ���c܏��*�l��%�����Q�o跠{1�jbv�F�b�m6+$��ljf�c��'�!zBC�;��:���K��ڡ6����C��֋F/��o;��o�����j�筏"�k�߇�u14x���*m�!T=8QZ�C~?(9�Ӣ_У��cT���F.^�Huͻ�VɄ.Z�U^2��kUz�k4�����7LS�F,6�Qø|�� ����|�I�F�[s���`m���Y�i�^����qҬ�3�Z7�M%
�
�ILe���Ћ``gچ�}/��y��;���Q�0Z������cf.x�7ȶaC�:��k�i�쌲W��[�N�� j_�׺�L������̰gL<��҈�5R����{=�k�tF��G�ͻ�ަ��=c2k�XNt(��E2'�
R=6u&�>c��F=����lU��u�k���m,��Y8i����$���
�O����G�g�tX�[�����G���Se���LZe-��ᚾs�m%��Hq�x���;�ڮrd}�R�_�{�{f����3�hə�>P4�잵I[o�W���{���{���ҿ�O��͌}OU��3��`2ZOgi��+��>�S�]��ru�)ڳ�������3���
�nڲ��`c|���A������=Z���ϻkSe��MW�N\=����}{���m����j`�h)O��"�Dn��Q�v����S�F6��Z��~���5���ϙ���bvs?ñm����B��I=�#u�Gi�M��a	 {_U]z=P�aö:�N.��Ă}i�mŹ�[|a��]��O%?�[���L��[:o�����Td���v^=۫-
��'���9���U��n���.�6�u��ԯ��;qH]�F�p��8���j[�Y��s��C"p��}�P ��3�[���}�a[Ȝ�?��'<�Sג�7e�Zm[��v�x=F�9�����Ǽ��Ӎ�ߐ���zꖮ�g�i�/��)7O������a��䖀Kψ��z?�+��g�������n�2O>��a��w����]2��/��3�y*���I���8��g�Z�g�z`�'
<����k���k�������j��"����V��E:�r��t`��j;��9G+Q�洜Գ���3�Q���f�nc>-�3����D��+Φ�$�t�/؛�d`��&}^G<��+ZM=��u�s�d�Le�Ӊ�rE�$'���k����}ɸi��ŷ���/�Kا�Y���{t<_���Ÿ�`�w���w����k���ck������yZ.�?�54�ǩ����,$7����G8�鴇=FF7Ծ�D�D�);�n����7Nw7�5(~��3�LĈܕ�Xy������1��w�;4���H�}�����ֹ�-9x��š�!�(��}��X=Y>"�t
�j܏���W��\�Zw'<;݂�?&�u��5�-;����z���熞Ǐa̴�&��r�<���Q��!i;L�-�t�~�?��Dp�9��or�hU�P���/_����t�Χ�T����{r�?����JER"ˤ����}o��)쇈 Rs�	�A���P�F���($
?v5I����5�DDh4�m�"��ԇ�Y�%��#�,S�r�1i�Y&�rcʲ�ٙ�N&�o��ɍyۋ/�^X�h���h�~���U�H~k�wK6���
�����i*�=�kA:�T�0�cLA�4��l�6�k܎��FƜ����8�3�C�E�@�E"�A���ڑֶ��&��M�M�®zh�l�P��͵�;:�n��^ժ�&'�7y��M������h�+|�k����WjM��q��z<F�Nϑ�ޠ�R�b�<~��/ze��6C��������0q�-7A�Q�Zj|trO�M|����v~sh�������&6v~����xΓu�X7o/���w3����j)�e�<I/����ѥ
����:L�]a!�-��_Wά'}b��q�B��6^����Ҫn���-$Az�a���h�wd��K��'�)��	}$��v�-u(E�ٺ!o�Od�s��*Nn($�۳����C���v��7ԙ�g�3XH���=;�ڑbw���|�7ѯ0.+|H��1�!�'�!�\��!��kgU�j�}��Y�S˕�&rb�
v]4�NQ~��o��w��F/�Z{x�/��`[&��R�N��!��)p�b���"r�lg,2�e��<��S�-;��|�v�M��P�̾(���Ëo~�[܏J�x���%/��ܥ�yI����_hi���k(.��c���mX�`ҝ��ҭ]��;?s|���ܔbj��Z�n�4����>=t�V7�k��^�l�XHڲk���he>�&8��w|wf��I�{�?�f���/ݚ�=����?y��i�=�|)�w:�|��d��B�p��/W��Jց|��a�����L�g����I��&��d���y|�N6�c*6��'{�Xsg��dg�@۞%b��ct︄��^}~�V|�z?��$�n-�m�w0�cb��Վn96����M�C׺��郘����iKs7ݒ��X����,uN�gIO�n�wfj���\I�=��u
����E�D�':��r�ƶt���A�5��!�~����]�ysp�������bN�.D����୷rB�tn&���?��H���W�wHV���so圫+��V�����gz�'g
�a`\� ÚXPQ���"J�EPYҊ"��������o�sν��{�}��L�����'��ϟ�P(�`ֵ-����:��-I�^ݴ�O�%��Uٱ�V���t�b��s'�f��95U�a~G4�����w	b�m��E_�dQd�2އ�װ2�W�e�U���5�ե��5̳�7�B���fe̖��]5�U��q~/�}���"��؄c6�vfD5�,B!_ͦ�'�Y�3
�DZ)�!��{�N��=�ygψ�6R����Ϯ�.�کH@~�珑�I����43����Jy��}fV9�N���C]��'�9�E� �կƏ,;�Hl?��Ԑ�+y@��d��$��e�r�jY̵.�[ͩ�c@?}l������ŝ`��|��
�0�����q�c�a���>Op�47-�w�����}����w�x�}G>���in��@�
�<Dt���Lj��3�6��)���h������G˝Y�Q�C>r�ܪ��G�"�B���]�6ѐ���W͆2���-��zr��P�i����Wb7؝I�~��m�K���`��c���D	P�'md}CSk������g|�����d!:j&i8Lb��ʋ�8�Oֹe�UͪI��s
���d>;a�[wG����d-[��j�>̈́q����8SE�e|�2'U�ͅ�'薟������%�Z�����k�?r9�yk��&8���,�ՊbA��0���E�e�3�K�}%܇p�_z�{�wT�W����6@����:"HDa�&�Z4	�Bz)������X#�C�![��"�5��bnӀ�]�/�Y�q}�݉���5^���~��h���u��J5��Iv` �A~�u%������G7�i�y�Ĥ<�wK#�(�<`���w
�؅bWx��,�EnF����s�ݠ7�b~�:1�d �L�bK��E#�f,t���x�/�5����39�kIرV��63Y7��VjkJ�-ڻ�F4��m���R�R
�ݸ>�1ߕ8�s�è��=<���;���%S��\x�@�pώ�a�P��W����f}��x
N^̶̔>�A���.�[=^�R�_��F��u��F���T�%�]s�^��GgL�8=uN�?��¼t�z�{-]1i�
�� ��Z."뺮.�$�1�-rJ|�����#�U=��g��\սz�p�����"��a,7��2wIt���mTcEЦ����\n�kUK ��ѓ�+́�9��&H��s���"R��D�Z���y�: I��'n4�!�a�`6������u}�'o�w�Gps���J����:���� ƶ��S�G�VC	Y&�hL���ƣ�h��x�O1ٗ8m��m�\<�+��$����\jP��yP"Wv�a��5�֚8�Xx/Sm�d�Y~�S�_H�����RIQR�1;�Ҹ[�qB�杦�:���/?;��7�~y���z�!P�]�d�>
J,�+)�vH�I�z�b[铏���"��׎㇓w-��_~v��/b�
�tV��T(T�?
�u9��F¡����cO���h�r��><5�u���3z��,A���q?B�ۘ�r���L�ٙf�fM7Wv��
�ہZ�hb�|���<��z,;7��C�Op�P��~��?6,!ͥbk�*k�n��zvf�y���'z{�/���Q|6t<C��!8�3Z�B]_���4^]�G��L���p��A�/(�<��,��kK)Ȏ\l�ևH1��o�:��:a�<��c=�մ�:*�gG�QҮPl�hG^>�d�i���T*-+j��N�7��
�/�G��QJ��>h�q�c5�_��Y�Ysr��͞�PpD�.d1�Y,
�^<��(L���۽�I���F�7�\N~:Q+]ʑ5�c��Q:�7wn#���4�;gͅ�8��5��%�%�}�w	��E+��h�R=;�����t��AO��M
|�7��*{����6���~�����-�!}����x�3Ko�B�D�""�@���T=Y,
�U,�Ӕ��F����+8,�&��ŮEv�&�8�U�Go�FO��^0���o�����}�5gU�{��i�1���Fg��6|��h��5�r�����2;*��g��Y��(*Uf�g6��ߞ%j�=WN��m����Gv�I*�zw�cs����6�W:��oS&RK��*�]�OX�j���@P,���XZOP�V�ի����-l�ʷ��q�$z�j�޲��L��)gO������ioymB������`�>>vZ��Mb�81�|+?��х���t�h�Je�ы��[�C���B�����cg���
����U.N�R��
Yy{��&Hp�碘1�A[�N�[jg�������μqh:P�5����΍ztӻӟ�L0��P+>�^wr��om���'����Fw�����^�XXwu
��	��U�
����I����3-U�t2��άϸ�	р�0;x�hbm��n}0���[����ҹ����Z��|F�����m��j�#_���Op�u���yz8�����PoBv;�y! ���رg̲^*�������<K��xt�g�u�;�#z*J&#E|$A����!���/�M*����2B�����)=�6•d����9B��җ�Ez��l%'��e��ڋ�}�O��>R}��s���`�S���;Й�,��	7��T!O)Vc�L�l�X<n, H��R�r����輦7�pꗿ�B�
$�Q��c �|��D�g�6pڳ"8Gob�L�����D<�T��jB.g��UO�˞�o��e���:|�(��ȋW�8���(�GWE��J"9�N�L��ē,H�̺���^=��F��Z��8mh<�����E�uG~�	��
ӗ|�\,����#Ӳ�b�)h���?�\s=d�ޮ
�so�_ʕ��t-�^�îmc����.�99�T�:�Q���U�`z*!�C�J ��6�"�r9O���-����=�T��`�˨����t4nGg#ޱԈ�S�Z�Ҫ�y��j���b�=��݃��g�n�w8jP�xR�n�1_���k@
P�_(��ާ��ǡd�$��F͚�2Y�dR��zJ�΋ ����.�9lH�X1a[6@��4"��+N5ڸR��왝�?:K��G؊B��~�z���tz�y��Y5>I�F���S�֧t����H{}�JО�^Y_�"�KoA>������I��^�v�h���W5�tq��/m5
;�N([P�V�$��o�@m
���<Զ��T3���%3�ս����Z�ӺH�Vm�[����B~�hd��
��קR�vNܛ�8_UKd�>�w(U�6[DG-��;"�guܴ��'Ԩ7?��N^��sn)19�6��%��g�<�V|b�'��W|<�+>�jg�I��ÇW����p�Ep�P�R,&�2�6��~]�.��IbA�O��i�}�V�_�|YaV���c.Q��RI̷����<n�L��挟[��7kP�6���:4g�?����*y*8.�+<��+�"�W0��B`c����\N[W�@�|�k��P�9
ek���65�@Z��K,j��ն��L�D.4ĕz��Ԭ�
.ֆt�U��XC��2���诳KC�J�ٟE�~t�Pܷ&�j�C=�1G'}ff�>,�����0,��$�wI�
��܊l�qXC���a��4�egb���ܮR��Hj.S����_��Y=sf�wsZ ,�F�ՓK�Z �%;nK��G0�~���w�<]��M����l�z�ƥ8�A�:%�p.�C���$
�!�6���G��q=~>��*����i���u��,c�16�b��l։�Zq#S�N����i!�	<��O*jrE���QN:�s�E�+2�@ �F�^��2�*ÇB�t�eP<�8jޞ�@O�S�L��;
UhM�ˆ�j��od��gþ���'��Ċ1�.���cD�V���;�כm�r�:�흛�Z�O��׫��r�q�IX��e�M|.��i�
|��"l�'�j!���m������7c��l[t�=p5�40���jY�חq���/�>�/�����f_�{`_�Ӹk.�b)t�kX�uu�o����c6�j��|�߂t~��1�b���9���5�`:鸳y
�kEcۃ�$��&��������p"�$�Q�xYW���j��u�vN���SyTaMU���Ҿ��C�y[17ٱm�i�~p�[�6o�dhpO��wER�����‹�<�岥�,y񞱣�R�^�Ѣ8>e{#�U/��fM�!%�L�o͛7�LNړ�9>�������]�xd*5�!�Ǿ�?��ݖ^��j�\��!�&��k]�‡�OJ����qu3��&x֠�PHZ��X�5�8T��41�OV�dldz?.��#FR(Az\�X솚�
�n���5i�2*��k8��ɵ���o�Ŧ��ߛ�g���,�ך��,s[��t餅�����K�"ӧ�%��Niԙ�XY���ƍW!�[yQ�ǛZ�:j�����9P�B��z�fA�0.�;� 4��N�����а��g{�E���Nt�b"�z�$���s�|�ms
����xM����a�g��(+��P�=��Is[�'67�Fn&\�;s3��#G�#�٣m�#MW7h��\�ۢ�D�kX�5h��Naq�d+��&�/���M:_�p%��ĵ�zLǤo��!j�"۞m�N��Gk��A����ax�s��&jj����p�a�k��kp�nϯ8�,��qZ;��f<W�k���;,-�Y�R�T���+dG�B& %��TÚk�VPV�^�Dj�=����imبR;�����瘻��������R�k�)�kE�c.��S��q�ܳ�����Q.������g{�ȩ�]2�U9���?��^
��
�X_o_�|��ص��x��(C_�l'�*2�ڨ�
�9�9�
'�b���G���\N�mĠ�Y�)��}ůg�����k�L3o�r%'���'���X�A�G`7�
&���l�e&��
(7��y�J���S�u���a"okF�@� �q���a�%}
�B-щ}q��_,���=2�%�����D���	E>�7��LI�?"Q(avл�ɉ��k]�<�PK)�<�\�03���#�`��ٷ�v2'-3o��X\�Ҽ��[��/`����@!h��R-��Ca��ts<t�i+NgnC��ч��}�~��xXW��2��|`�Ӊ<�,	��+�*��N��X��Jf#�R[;�w�/ӝ�Q��
S������%�&�M9�~qrc���0�+�M���P���x
�pu:u�lm-(��C���8p�K)���C<�X�mN�Z��
�y���wo��qK@�^OG�2ʔԗ���Xc�r/��)�2c���d���H�+䮸-���8�F�*���|�5<�t�կ�(�կ��!ܿj�SX,���q�P#�˿�[u��|��V��[��9��|��y���8;5�CX:L&�-��wY[�ͫ^�|�(��ONq���9۠�S����Ql$9����^g��_��op<.e}��*��Y��o��x��1��޷�@p��A���O�
�T'Z����O]
�T'��7��Tg�
۰�p�����T�a��m����c�oŊ��Ҹcl�̷�a+_e�K;�,n\�����
���]�FO�8���w;�%r�5�\�����?�;�2�B��'�ᚚc���Ѭ��c~�N�������W�J���裑��:��>��fU<wt`���yk�S��~�����E͚��s�y+1�r5��m����6�w�Bs���<�4����Z�]�0��N�v�7�'u�;�y�~��c��:.��m���M���,��)[q�ĭ�Dq��S7sq�~�[����
����؎�u+�ȶE�/k�/�֭�*�
�,�n���>�߷/]�m�����~�<�}�G���sj
�c��ۇ���K>��FS���n$~�
��|�ԭ ��C]�?5߁?u+�{�i�Z����8�|5z�у㴹�ڑ�UOXQ��K �uO����)ڗT�t�
�P���+i����[���H��1����6=��[��x�0oI�ڇ/4�w����}XI����ڰ��+��>Z#�XA�o��ܶOo�+�V3�S�
� 8���� .j��8���{������k[#˱wn$~���A7b���A���o%^c�nfy��Z÷����:k
�v���0�,�ޫ:�����ؘ�F�v7p��ɵ�i�z�Fqs[�w�ǘCl�1���B���	D�~0�2t�;�ƸB�x<��k��]���H7�c�5��[��\o��1R��X����̷b�<�i��6�|Gm�[��E�[^�Y
�Y�\?��Qk[?&�ζ�ѻC�F��g�֘�p��&n�e0/�-�1�Nc�q}k<ޛX>1�@ G�����ƛ�?ݤ�q�0gy�c�������`�q�V�]y��߽�|H��݁�s-8��
�
\���<�b��F�Q뾃Η+�h>��K`�9
XN��&�����~eдlS,��tn"��mMˎ�'�F��ǩ/��h��x����5���r'��;� ��6�{n%�u��]{�k#��W���n�7sQ��Z�Q8��NңIǺ�B�����+�qhĦ�.N�ڣ�|���pLv��O�O�"�R}��d~ԛ\{RNNŇ#��H���%[�^Q='NDl�P���p$���A�t��tŧ�9Kz]�����w|&�%R�B�S/U�2��5��1�|N��@�B�[8�m2��Ec�_�1c}1�5�n&��]��y��p���L,��<Ҡ��1����Vm{�ŝ�7��ԢJ�\�t�M����B�%��~Uz�&�P�8�������Ǻ*=g�^x�;�W��"G�wa5z�&�H�8�Es��@<�!���*s1�¢���)�k��ٽk=7;M]�m�o�m���m6-h4+�m��{�yx�RYm~Ӥ烲'�U酛�|����q�ߤ����Y�^�I��7{zj������[������
^��#��
���sw��-�#$��X�X? Vŧ
����xo?���ѱ�Y��mMz7��+��o4qIn~#��:�<vM�D�dt�����#
�?���B[�hV��^p�*V�FW�`���Ř�aUz�&��&D/yz/4酉�0=۪�Mz�s��q�ڤ!>��wa5z�&��.�߅�кh�g�u���?���w��Q��\'-�^'��K	����曻��?��
��r���sE�,!�q7Os�/����ˮ��na�#��{�o�r5����[�x5��ks��|K
�?��CĊ��Ė���!}�:�ϻ�I�f8N����2o4�i�_�+�H�\�_�s����+�@y�/8�Z��ë�xmg���5L/�*=a����ǡ�B�^��t�J�٤Ǯ��q�ڤ�z�X�Z�^�I�]ۑ�����0���5�4^ۍ��k}cVZk�����s�k��X��8B`�hG�*��#�:l���p�9:�B��)���B�ε\���
:�5�4�`u�5���`i%�5G�:.��}j��6�,&#G������ֶf�{��v�=��&�)��0ԉ�~hiii`�bz?C5���2z��&���	�G�
��7�XI7��?���RF<N��ܳv��2g�q!$�񝸱t�%����V�y�I�Z�*<��tnk�i�)����F�
��S��>n����6�,~&G�1Wdd�\a�L�O��"�s�\?������Z�����%.����v�
���*q�{�]CAǚdi�YZX����ּ�f���֭h�M�����!j���\G�cu��Ľ��7i�o�@R#@`�K�n�l�HA.�~P�\�>g���k~N�V����������?���K8�>���0?ކ�qH�5`"�?e��S��_���`�
�z�bX�U5��SO<�T|����+�W^�![�W���N:�ēX9�?�0)Ļ��A6��>~���U�2>�de�O[ϧۚ1�j���p{䄡"��Y���,%c%���V�-E9G�Π�����'�$I��h'�p��	Λ�~��\r1���Ϙ@�����΂�#�\*)��<��E�I��&�m���߸�RL�u�O/�C̥��<����nB���d]3�����+��2���.�	�6uM� �	]N��`�D)�6>�L�r�8��7���ݓ=��?HCHė����,K"A��ib;q���w�p�L��ad�&���]��^�Ql�C~���Sp]k��=�m��Z�9��>�� T�`����֘��Xb���0�����������}p�u���5���N5��ٟ[҂������`����?A�fҊ?���	�f;ss�2,-�u�m�0��ڎx ��0^'!�
\�(���X@��I����5����@蝇z��*^~Y��2��и�����	��@�
�>�л�F�ˋw�x���1P'���>��A�[�ڏ<��#Py��3���H~p
��
ý�#G\�jQ�������qE�ة%_M�$����hr�N
?��Oz�^��?�~�k|}Cn�p���7���x��&�ɜ�r$�,���.�|	�����JR,��������CB��!
��c������#�K{��bd���D؟������ <ΪR)ѯ��l�Fu��$���K�;��Pt,����5�@��-��*D�r	��Nu������u��&�3��tf�2�]K��(��_Ap%8��uG[E����Ǔ��c�9pB���F���=*#\������DpD	��^�E3�ڶe41��Yp��.w��ʑV��c�s�mn�3�}�%j6G����8p�7��	�=���`�МO�Ey��]��d��Yp��5�^k!"P
4U�N�4�,h�A^sd�F�2�V��L

tĊ
�^8��P���x<�H���<Y�5��̶������+���>R��ڜ9g -��Θ�+�t�����˥Ѻ�&�V�}TgU*�:�M�aך�ɩܜ��a��=���[���h��|;OG�W�3��F�5VE��{(GB��Ht<>�uۈ+�3��;]yp��m�8��m>o�(�6���9j2G-f8!QW̿�up(��~n���:�G��.�-��	��<�Z�H��F�*�H�ʪ��H�|��^�*��	� 1�A�V��6
���kׂ�7Y�QUԀ�<��4���R���3�xR]��	KpT�~�d9ɖ`B�`p�{�����iW�-�C��Qk$��Ɣo�d�j���pD�f�S��hGĢ(�aM��bξ���GQM5�Z�0:�"���1�$w���E����(�։,���M����r$ԧ��b=��`(�b��!��m8=����8Ln���i�'*v��)3�����x��"P2���[����]��f �;���|�q=��G\������#Y�����o:����\f���A��R��.V(q߂�=g�jcoy8V��⼾����|��'�jƢS۷B>��+��9�3��y����bs�g7�J=pKY"��ނ|��f8N��w�9�{��-��`��k�|.i�:�����9�3>�@l.���\��es�˭�x�]^���΂ٜU���}�ך���o�@��q�� �+�z����X8:ۺmԝs�sn'��u>���X;n�z����r�sogO43�r.]N
ȏN‹+�%QM�p"�i�Vi��sR)O�(M�8W�C������H{�*�r���cgZ�u��y��c(�|�n|�ʢ��+2�n�q�+�_�ֵ
��x6r�=&��E"�("�l��M�"�����s�4s�M�O-1�0�]�*�QDj�
p�|��VB��R�(��N��tEa���y6�ce�.[��]xM�7vQ�	��9�=hO�M�w�]Sag�a�tq�֫�&�F}آ6��l��U4�s�LJ���h��OL��p(�̺\��x�U��y|1����e2�|6�fu��S>c-d��P���IR���u���B�Q׀+���34�o�|��v�}�P��P?PFJ���'�.�AN/	��=_��쥡��Wq&lҺB�D���QYpt4(�@-�]���!E��ط�`k	����8��l���U\���'����D����7�6\rC=c��/rC=������;���1��{|���X���M���t~��n��snSƟ����Jſ��R*�!����#�\o�jy�ڽ�.:Dx��ӡ��N��Ệ�1D�7WR�A��(�Z��.�JEB�1�48-.�F ��d�l��U,oa4�g�J������y����#!R��+��^c,�_��9a�c�r��I��kJ�3��H��ph�c�b�K����37�%�IЏ���� ��<���h����i�v�xA�1K�<��~B/���c)��3�h��o _��2��,>�~Ws;����j2�N�w:N.VN�_�w����x��M��5�g�7A��1�;�<��ş+ G�������ޢ'5K�Gu����n����#_����(�#�Pd䎠����*t��G�w	�BW�x�"0�?�4�Im^�D4��ւ1l9+7z��$�E"WE"���d��/!<��f>�BN��O�e<Y���F��C��Z�md��
�Ó��Aj�y��d���3{�u�#L���h<8�*<JT�T,�+ȺT����f}z��M�^�������"YT����J�PG	�e���0�Uﯨ	J��y��%&�"��w�e]x�9��m�$;����9�؊���x��_���%2Y$����љ������X����ɫ�nS���JW\�DD����i�:��I�p�L���ר�U�ˆ���+�ds�!�����q��4|��Tj�y�'_
O�Pq{��Y�?'{¦�V����k.�/���P�hO�Ao���;���Ե���� �c�[�_Z�O(/%Pe�X4h��({(D�uT��HDAl�[í\���Z�d^[
\�>�
§���M�F�\����I;��sc��������P�MĜ!_Q�S��l9Hgu���4;�+f��p����H8��N���E�
ṇl�;�AQp��A��|v�%�Ҋ	Vj4���2�ćn7n��|�~k�!Fd��%�����'�"q���@w�"��BR���"�Ԇ�\q�n��i!(�`�vY�n\D
Α�I˺Y�K�Z���ۑm�x'�9�d�-O�	\Μ�~�˝�T�0��}<�m	FX^��`2-���R�uz��h��|�W:�TQcu��{|p����/gJɐ*�y��
8�������ٖ��M�6�A߆1�����a�\�^�[m6�� �f�N(�GZ�1d��L��˸�e��(�5�a琁�X�n��s��qr*��
�&�e<ےB���%w�t�2��B��x�J�ΊҠ��pɉ�M���{x�Ո_�B��M����OM�m��G�L�Y]��[��T:��zi�A#K��
�
�>ܨ#O	]���<BUf�8 �$��C��?c�K�r�\R���v���2����}��=��w���T���6�Gw(p�΍�����|�@U�C���Ev�į�(�N��H�;e�h��+��˲�oʁg��@97��fr�����۝G_�nYC�(�$��`Kz.�^��_���=�^����/B-�����8��eP¤+ր9l��I��JBB��K��$�J�I
.!�R��:��"�U򨞡�@C	�.�hx:��	���n 9�KV?����N�5�*VRޒɨ̸mNg4��#MJ�g^���ح!�F�Vk�R_40�J�Z�Ӌe�@(�XQ�N~���С�"T=��H�j�B'S�)T�,�;�!��b�Y���	#�nOn��p�\G~�/I����O,���
W*)
"���$T��#���`o�G@�f~���I"���C"��D��6�RK�]ba�R��p���5�
�|�Fҩy;�����S�'{���
�N��!�f�c����\0��t9��x���l�����|A��P���P	y"�G�����G�uD�b����C����'L��~�[�tN����}�=�]p�*�Ѱ�K��F6
{����r8�v�\?0��D�HT��7Y��k̟H�*��^U��,:�3�q���gwD4f�C��xa�F����'M�P�7��U�T�z$hL��5�痱��N.�}���t���Ulm#�yn�>�p�Y�K+\W\�.�/ຊ ����&����R�p5�m��̺xٽ]�]�6�K[Q���H:>��N�9��y���98I���C������@���z��Ɯ�?pտ_vߖ^G��

S��p-��wx���!x�z�܆�>�D�
tA٢�~2]�d���@��!��C�{��i�)KPu��.T�aW~Yu��̝dQ�x�������*�R!O�����᪝p�Z+�������l��,�s��r�������8�z�3 v��KIT�)�m�,��<$`!ϙ���/�ɗK�E;���	�\��'Q�'�R��]�p��ZJ�D"-�u�_0�/��d>��G�V�h���]����Հ��������
l�w����.����4u�|yp�E$^|�N��^����"�;����3�Dc+�]C!�(#B�D£M+�C�����{��;<��z�����4�)�c���h�vbķ�KI>�q��LR��zy<gWA$
b4
5`�4.���s@XN�]�&-��[ʶ�mu	�䣁�_��f��!h(���r_>������S�pF�]	�=r���79#��!���՚�A�<6���f�c"�1t�lv�nL������ߟ4:3k҆�P��x���eww�q�6�sM�J`�ڎ�.*��tj�Gjv�!*����*�Sjq���DY&N
D>��:Ӄ��1V�7���?Q־L!\�4�ݾ`�(�'i��i��@�2��>8d����"����l~�S`�	��a�2ުo�DR�Ψ�z�D-�I�z��+��b���i1��9;����]E")AQB!OJ$�De������m�k��� �<�����t���R���LB�H;�#�Dȣ|�HL�=�$����+#����WU�;�������A����ծ�p_���[�xB	%�|,���#�9��_eD�z]�3�7�>8;���<�?bT5Cx"%�SbJe�2�|Z�CY��׷�5��o}����H>�\�\	N���a[�f@�{��8o�ў��X��xxp��v�ZW����:;�n�
a&h"U�R�ņ��mv�!M�L	� ��R�e\�n��?�ĺ�4A�6���+?���f=�F�6���̲���GF�����Ґ>���O�љ�ZA�%zwP#�11����%�Q����!|�+�)_�ڕ��0�$u`���Z�6��V-��+퀷����jl�!6���R���gM�_{������R��U�o���]z���
!���n�A[��\[��*s��J�Z�-��68
m���xN��Fp�鵑��L�Mf��/��]^A>^4�]�jPΎ�����Pc�>��*�D|���/�,���g�g�bI�)&� �@F�F��iN�ƍ�|ؤ~�(�2�x`{#�v��]}��|�E�>ՈJ�)��T�_<O�,�z0��E�q� �{Vn.Uv�rm�Z�wy�`O�cYo��o��,��d4�.�1u-x�$.�j�(Ӊ}�oQN��.�T����̦���H��%H�Ƅ�BRZ�"�l��;�Ҧ��a²À�
c�O!��P�i����<m0�H
�R�x��0����T�<	�����*��JZ���k���X#i�w�����g��֤�q$�]�m��wUMr�c�/�k���3��3��oa|��;b̈́�T�m҄�v�ND�L0\�j�]���·=%P���S��&=���VXW`=x�P�W����TDQ| $���+��X�����g4����L��\������ȝ蛫��>��7���x-�3m��o�cRm;�b��

;�)��t���OF��Ha л�eڝEz��X� ��,~�ދ�N(���L)��^wj>ʺ���&Z��j^�
i�C�����(6��E!�8��g�ʚ4��NI= ��ta=�^h-Ҩ�����=��>д��E���ד���S�܌nj00���ն&ש=c^KO���v�+�5�hd4�k4��Z�=fd��1�9[�Y����a�;cCUY�[��K�	wE�����Ư���D�i9�z��ڦv�I-�����W�@��h������Px(mI�χi�$:�3[�5Ȝ����tl
�}}��W��l�c�p��:�T<^�6
�&��6�9�M��KT�-�̃l{�s�|}�j�=�ZM�3�m�]u�njg��ؙ�`l0J�~0�+�=}���y�f�u�k�)ևq/��		T
*Yȼ�1�<�5���/���nFkz��j�!!;"D5���d������|~��;J��|X�<��:���
'$'��1!�3��_p(O®�|��A�e�Kn���L�^[�L.ъ
��=�ZC��=��`ƚ���1��^WN���1� �F@��u�7YR��w"P�э�f�?B�����|>���X��>irr��!�X�;JL����j�Z*
=������>��j��-��\|�ZC>��t��a��S�t9:<�W���[���4�|j&���2���I���b�(�b�E2a�;|Z�o���O�7|�'�?y��}�ff)f&�=�F��"�cj�+Ee�O4J��֋�'��R�ʼn��y�nR��~�ɁGq|�[�	�LZC�+6��@��l���[�F�b�LP�浟F���n���8��γh�K��d8c%w�p�'NmJ
�)��$�vͤƒ)�=3��iрrpC��c����IZ���ު���C^pS��	
��R�T���h����.�c�M;'�F����7��[��|�D�O�'�p\�R��%"�@,"����"�D*�J�|���å�)�U4�ح���/�Ik=RH��˼S�`����H�������~�oR���
���"U�l�*(�M�:*���\�}�%z̬�M�
��M&��W��
�Ų9f�����٢殰�ӡ���ݡA�b,d�Z��i��&k؄�V��)2@x��C*㗱��́+}��9��FO�M׭i�dvM��*�$]C���nr{�o�x�;fYg.�/O�3e�>������G�Q��!����(���\�k��#��{|�Bexa�/2�G>��=i�;v���C5���,0�{�}��B�R�"L��m:
߅������o��'����y�P ���3s4^�4Ą�^>*�T�m+7т����̽������;�Oѥcd���-]	�2Ԓr `�Ǝ��^J[����C��z�ϰ�,�{���;�w_z��x��=���h5�J�}��pl�ϓ���د��ͱ cx,���y<A���=�i��X��J���5{�����+I�1����6WB��3�K�-�5!��RJE�h")�h������G]�����	���=�k��#A�� n+�sJ,���]
����y
�s%P�; �~���0����@������'�w��	�w��}㤗��������Qb�I�%A�y.5T�ѱ���������W_�w3w�if��
�[|�9Σx�h�#�@H�Ā[q^�+KIpY9ngf��^<���
�
�IG<��	X��J���`���{�J{ǂ���k���dz��p��$ҳ�v^bz7\*S���n:�g2���_�
E�K^_e�ۏ���a��^.�;W}cOBN�n9��ά�E&���'mu�\����t$6��!���9�Y'�}� �]Ru�p����u�Z�<m��po{_a�w��/�]�3M̲]�f{��u�{���>+��
��D�R(̠$cWǏ[][{�3�qW1x��'�����:r��jI��?Dc�w8�.�9��R��#[s���E�V��5�U�%,�l�=mޖ��1�
u��3>�)�6�=����RCy:V�N�ֆs;��ۼ�^�EA���L��I�}�@ W,��d
W>J{�������PyY�K$�|���Z����KπW��c��uZ��x�	�ZB.�	J��C��
�
��XXS����1������K�XY|jw����	�b���<�e^p�,$
7���OU�ͽw��F�����ÿ�HS	�j>)��J��э���΄���$�y@��O>㧃��C�
�j��#�>��o�s�/�|R�
�fK�W	y���aޡ�!m��У��>���o~>x���~����3�1�կ��q�AZNHKD���	� d��d�
}o�wex;�s�f���c`#�ׇ6.�;�#1�$���g
�ym���O1�g���2Ɵ���Pݮ[:����(P����$"�T"RP$k�c�18�	:(ѥϻ(]�����ŗ�5�^~���mC�ե$�MR��G�X��������L#o�k�g/~ۑ�KG)ٶ	J%�7�X2)U���]@����D��7CN�$"�ԜS�epv�-tn���[���ء����s��EZcO��m�xz�%�h2����.�]s1��r5vٖ��&�$o�㛆Θ����\�5�uxU# �\�8�_��K���s\�_%�8��~)�մ���Zz�䑏����t�lDPD�
���&����;�����V§��*�u�t�6^�Y���jz����p�8$8�T.mJ�G3�1�r���DϺ��5_]�)uw���16�[�y�CF���p�,2�2
�6ձQ@�s'/���<��z0��)�<�Ol)=�Mw�SQg-?95Y��Y���$��H�;�UX�6�Wm�u��X4��2�X��uE�D[]OT[w�A��(�d�(��U2��j�z�B��H$��@�Y�C� uh�ێ �@y�+�x/�����ے��T���S��D�C؆��
��[�֘տ
�c)צs�~�pf��oj��ʚ��9�-��A$L�R#�l���J����g��4�Ӧ�{rD[�=�/�����<�Y8/��w�~���;��b��5�ĖG:6����n
Y�� ֪ɧG����
f���f-N4Wktq�O����Q�a�)a�(
q�\P׈�u�K����� ��#Z�f���_E�'�f���skk�j}���eM.M<(���[������<�0�L+G����	���V5E�Һ�$��%�!b��j�v�8�n��4��d;p3�j�=�-�Zwwq��Vr��ψ='V��~T�_ڼ~�
J�K[֭�����{Ƌ՚���F�����`��M���.��)�^`VJ=bi��#S~�F'p�am���l�z�vⱢ֙�:�yr?nT�ϧ��t�ij��^�,���`o��,�Z��� �p�o`,B��v	OPWs�BӀ=�"ԣ���d_����ڕ����^�J
ML]9.8e7�~���b��JO��gp��!�\��!l�bd��@P��N��1V}�E{Ϻ�嫸��?7�(�^�~-�&�8�P�k�c�h����qi��2o���^��_f��q���	ψ2ю�- cm��ў�:~^��8��G�% 2BY]A�D;|[f�0.=Sv����ȹ��`"Mύb1����
�ͮ��(F���IJ�e�jU%4P�
DC4(�6<tz�76�˯K$��s�1��$ƙ;�e}�}	Y75��a
 RN���k-]f���c�����ic���i��I[a6_��[�=k��sy�����������ھ���2؛9y>[ؼ7�~wo�����"����#嫨���C1�4g�b�Dh��j&+~�9rX�'u�\�K�9(�Y4���@�b8JH7e^EU��@	���C8(
p1Tw�B%t���k�"�Z��Ϊb_y�glW*�?�L�d\]�1���=Ᾰ�p'uQa0��ޒώ��*[�P���%��&��i�"���x���ݡ��V��<d�r3�B�A���'VDa2=_H�&
'��;ό�G�۴	���d��>g)��)�����/-���J���ĽkfCw���3��	�&�p̴pM�\F(c
(�TL���מ�ʘ(8��|.58�|�60���ǘ\�c`�?�㓐��Ei����ctd�<d��r�76����reqˮ��t">��ϙ+3`�y1m�����W=C2^r�z��tj<��+�KVG�	��YL���Xk_�xZ�E\�i�R1�Y�p�3my��<�噍d���Zl�G��P,l�GmgO�V���G��i�=�hz�*Ξ��O�����m��ˆ�g���K�k��'�b�`c%8nJ~�/l����(�\��|a�<\^�A�hz���"hbe��@�Wѓ�$�9��ey�8T�#\�N
3�����1�1x����H�ۑs*��t���:�egd�vdЯs$1�'��A�p����{[Ol4-�Gz<с���z��<;��:�@ܓ�|5p�?o������]�"�+捂�&��چ[�ˍv6>������VT�i3DlgM���O�]�Ӗ�3���zz�Y���h_:P��g�^:�ƹ4���4����1pηF@��Ņ�<l�z~��P�קq1�8��>��r���3�F�_����8�>��a�y��u�������\�D�7
_��夿�wE{N������t��%�j�oB����콍�t�&�G�%��}�?��� m�߷r�!�gS�����HG1�ù���GW)�8]�/����a�v�9F<�Z���� �7�Uҗ壿���u7����L:���߇�J��l��;�n��*��IGo��p:s�~@:��5�\t8P��a;6Y�2��T��(碿����ܐ���E?�#�}�Sع���HE�[�����Lt����
4��?���Ї׻��
�/@�	����(r�19�mcn����Y�+�6D�1pv,��.u�l�0_�`+�訵1Ь���0Ɩ��+�[4��F���0}6>
���m���i���
�'C6���[ �v�8�fK;�11bni3[Wh��J]���TWh|y]�!����o��B�^W�
�ƹ�+�

�_�+�hu��fG��X���7u���^x�*<n�O]!���2B&�6��P���I[͍�P]����BՏRW�3/�Dw�"E�#��p�2��7��m���O��r��o�]��G�[���8�,�ښh���X:��G��9^Iك~g����H�ʤJ$w�x"���� �Y�ZA~/5�y�e�𗻟"m���촍���#~G�Bz���ĂV�ۏ��,�Sy�j�^���~_ *�xc����l� �����! 4�
�Pi���
�h獐�
�%�i���nG�X_�R����ʖ?���F+����Q��)aŐg��"qQ O�ry[�{����P�,�Ѱ�u
[O�b>��c|�a�VT�,\KQ�$[$����~��^ξI,$�iýw7�pBA�ʭ[�|�p�at]��"փO�y��'z}7�y��^�N!/1�	"���In ^P	���X�09M��
���y�\��w��ϨF<��%�M=ML�9���W��\�Í��
�)9|���_�P��%�^ZZz�\f(!z?�2������|�D���7�!��2��CE�]�D�8���9r��7��%y�Q���2����E�p��#��x��V�nG�36��
l",P�+���G,$�"XG#�)���]�S���TU{�H��(�|�,��*�(�|B��|@9u��x&Ġ�bk�oW�ǹ�*"��*�E�_J�F�E�[�E�
��H���������"}������Gt��I�/ӝ���^�O�D����)ҝ���B�i��U���F�M���w�D��\z$��+���Q�E�Z��n��"�s��:���H_�/�G�#���D�2��"�@�����B��g���ߘ�3ҋ�y��H/Q��M���D��H_�ͥ����j��)�!y�Ak����gXQx�����O�o�V�ئ
�!�,9|߆���Ϡ��@k�� g�u���c-H;
�
�'x�X�_�6�!;b4�3x������:z����&�
�8���Z<��J�خ��X'n�Q)�\Z� I��3��c��P9eOT*vL�ž)��,�ʴa�;�3�q�UVA?�&��!�w�>8���i-+�қ�������ݏV��fb�pt���9G�!�!�� z��Ӧl���H4g^��/�=���k�x���s6�P} 
�³9���NH�L�Hڗ�Ğ�^�%�B�B�`�HS�+T�1���b�#g���{ÕVA���̩�'af�nW<�ǹ�I�tšIQuF�T�x-s��7��Z�
�;�)�ZhzRs=�J|��p?�3C_�,
�8t��~;)wv𧈝}���*��T�- ���0-4c�{2�����FR�)G�`�)��L�zoFô/��KD��5q73v㜴��g���O��������c��TߥL�����4���q���7�Z�I���!,(�x��f*𥜃��|Jc��<+�і=v�� �p��9�o�}�P���z�)D��e�=�5�Hɨ<#sLM&N�U�p܂��L��������K�T�썏ّю��(�S�)82<
�ó��{��\5}�;�nз��s�^q��M�U�=Dj�ѕ|fۓX�L�B�\eǟ��[�y��ץ�D����~��Ƥ�E���
��̜2r��,W�u!�*�]��cS���H!�o�z/2D+A��T���
¹���q��x��.PY]h`��ђjW��
��Ԍ���T��UN\L�
��a̡��DQ�����b�Ҧ���U���5x�FQ&K��Z�Q��+��Z�eb�$09x��1h0�6��=ܑ�х+�m�D��Hy�wd�+�R{'
eV2k�r��sjR�U��PZ��J@�brw��E��ofF��!�j����׎c�5<����rku�͕�*e#s��L�+׬�P��l��&�iVa�OU�N�6J��Y��G���9`c�8U��.vI�{n:a���}�S�w�4�I2{�Z�u��o�M�};�O�}x��wa�v��)�A3sq��<z�!ܭ�ɰ�]h�������D�`!׉*��BZ��8(U�0�6]1�'���{��EYn�\�CV��;�O��["�
�K�z�lc�Ճ�]�on\��o?x�m�xG��2�!���{�XҞ,��%�!�BdY��DT&���{��{���������x�ٻ�yg��4+AB���P���?kL�aVR�h����R#5Q3
������4��ehYZ�F���H+�ʴ
�J����Ik�ڴ�K���mH�ƴ	����)�P�Ώ�!�b�JqJ�f�9mA[�V�5mCIr(Eir)C�h<M���-M��h2M��i�J�h:�ю4�v��4�v�]hWڍf��e�.���`��N���:�����r�����H'r��hJ�у�7�9t�L?�/t]M�ӣt
�S���z���=A��S�4=C�S'�H���t-u�wt<�B/���M_��t8ͥ͡^�"�G%ڃ�Q�*T�*��|���B�=ioڋn��i_ڇ����+����&n�a<����7��#yi��пL�,/ǣ�yy^�W�xe^�W��xu^����7����ux]^���
xCވ7�Mx��M����?�U��a�c��qN�f�9o�[�V�5o�I��>d�S�f�3<�������$ގ'�ޞ���y���x:��<�w�<�����#��w�]xWލg���v�q繓���<��r�r�K<���=����'�)������y!��{�޼���|��|ʇ��|�G��|����|��'��|
�ʧ��|��g��|����|_���|	_ʗ��|_�W��|
_���|��7��|�ʷ��|��w������|��Л��M����.?���?ʏ��?�O��?������/��
�ʯ����o��t&����{�>��G�1Ÿ�g�9�_�W�5���w�=��?�O�3�¿�o�;���_�7�������X2DB� C�Q��Y��pYJF�HYZF�2��,'�eyYAV��deYEV��duYC֔�dmYG֕�d}�@6��dc�D��X�TZ$,��[b�*qI�f��l![�V��l#Iq$%iq%#�d�L����L��d�L��e�*�d��Ɏ2Cv��2Kv�]dW�Mf�v�I��S��[
2G�J��JQJ2O���T�*5��@�e��){�޲��+��r�(�r�*���r�)G��r�+���r��('��r��*���r��)g��r��+��r�\(��r�\*���r�\)W��r�\+��r��(7��r��*���r��)w��r��+���<(���<*����<)O���<+����(/���*����)o���+���|(���|*����|)_���|+���(?���*����)���[��fU�t���A�j�6i��Ẕ�Б����etY]NG�򺂮�+�ʺ�����꺆��k�ں������n��ƺ��ѱ���hX#U��ƴU���ts�B�ԭtk�F��hJ��jF��x��u[����d����:U��tm�u��3u�论����5����k�vi�t����բ�t��e�hUkڧ�u�@7j?�B��Ct�L��JW�#�P��{�^�K�ҽu�W���=P҃�=T��=R�ң�W=F����x=AOԓ�d=EO���t=C�Գ�l=G����|:J/��"�X/�K�2��N�+�J:�N�o�*��.��,������d�]��k�>�_����Qoқ��Uo���S�һ��W���}P҇�}T��	}R�ҧ�}V���}Q_җ�}U_��
}S�ҷ�}W����P?ҏ��T?���R�ү��V����Qҟ��U���S�ҿ���"�-�Բ�!V�j��Z�V��l
��[KY#�����(kkYk9k���������������������������������������������5�kmj�Xa+bE-cMn�4IRSj�BKK��ԉ@�P�hH�fs�R�!h(�^��CY_���R1?�!hs*W(�j��=�͹�vS��T��r�b�)��J粞ˎ@�u��j�`@7�}ir;�g6�#h�
<�}i7 ��A�[�k�//�p$�6�0�{�m�oϖ��z�P-�t�C_& ���_l"-*&JaN���9�� �h�:lnW9�/�d��\hR6W��C=�`�M�&K��5����SoB��Y���
��&������J�j�4�;�n�K�Ů�)H����|>��V�ʖk�=�Zuxi`/45 ��m�f����r ӂ�_��
X�����QŢ���j��t�U��<�Z�ڐA
��|�V.��Լvx������ k�3�8�=s�ݿ��
2\�KӬ�[qᠭ���]*�����ok^�O(�b
k�j�ơ	h���J�����Kp��(�2a(V;
�2�
2Hz+��̆�h6<�)��l�;�K�m�g���F�Q������&�I�MA�P�	4~�0�a����?~�0�a�#�G�O�D���?
~��E
��:�� ?�a'D�"�	�H*��U��s��F��x�/�i�ߞW4m�Ƈw�Js�����P���E��Q�y4������N"@F���C���X�h4xP��%�ģX �
g��6���3H�`��j����3�pI$iZq�P$m���7H�`�l8�
g��6���3�p�`Ù0�a�����U�D��z��Xw�u7Xw�`�lp�
n�|L|lx��e��
6�����hP	
^?
~|�A?
~�(�|�߀o�G�4|�߀o�7��
�|�
�
�
�
�
�
>ʥ������������������G�41�b��V�o�V�ӊx��8xq����K ��M����'�o�&�o�&�O��?~��8��$�I��'�O��?	~||��$�I��'Ӎm�sS�P�7�Y#p�;Q����%��\�
���AL8�19��AL(���E�u�E��(��$�5I��������xaPT��AQ1(*&~
��)���O��?
~�4�i���O��?
~�4�i�]�]�]�]�]�]�]�]�]�]�qp288|||��8`�L���3�g�π�?~���3�g��d�٨A6j���b��ب)6j��a�Fب6j��a�FبvP�nPC뚀��i���&�ՆƠ�P�c~P���b~�UW
ޢ�����(�G1>�u�B����|����k�A�|���m�o�g�g#�ؘoc~�c����o��o��o��o����׊�ߊ�Z���t�Ȍ���|_gt��|�Pi���
���?�	ğ@�	ę��$�M"�$�'1>�|��7�|��D�IğD�I�o�'�r�9�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�O��?~
��)�S�O��?~
��)�S�O��?
~�4�i���O��?
~�4�i�������������������g�τC3�������=z��y�q��B��E�P'�pKSg��V�wԿb��-�_U��ˊ��������V[�c^<E�q��8���/q��'��J=�bo���f�VO��
n%c�y�J�*�	��T��Z��+i���X�� 18`:����T]���5�\ɗ�
�|o�<7��5�+�Bo��V0lc�m�9�]���a��rv���з�V����Ϋ��3���~^�k���շ7����;��f��G+���c+��Dh\]����؞R�g��mCY�z8�H�Óhh�'&���ÓX��Ik��I<4?���k���Uw��ڽ&�5^���N���n�)x����5=^��5E�)y�<���k�^S��Լ��k�{�����f�	��9㦢�,ُ����i�я/�O&����%�׏F�����Gc������A�Ē};=�~rPP��̒}3(^3(3�o�MjP?��Π�LZOg�z�����N��|�4��3Ty<��zC��n4t�je_�/�w�RX���#���%o@��;h�Uj핡�G��|zFS��3}���y��y��q�w���}�o���b��g����0<3`����y\��̀����3��޲��
��`xf�,���������3<k�|�P��>^�G���%�7���ٞj�����\��{l.[ɇ��r��j�Г�oz����R`w�+uDG�\w1��o��˗��\��=���_x��2�N���#�G����Ѧ���?z�!���x��=�`Dg��А�G �N
c�`-���o���m�d�@$�\�՞ClA�9۾�A5j�t��ީ�Z�V�/�`�q���
D�V2�\�0g�=�9r��3���{�>��iSxڭ�{P�U����]D��+��
��&j (����E�ZVb}��ӤcM�86�8T�8f�����L󑩩��2++_�ԌL:�ً�R�D�;��{��=�=�[ ��Yr�KNu��=�����^�ųPQ
Y l[�
6�z�!�\#hM 
���A44���<���d8`HҠ�Xл�`
�Hr��j�jF6�Y�c����k�z��!�W�����r@q���^���Q�X��Y<��Hqa����Ե�R���j�֩Fl�jĆU#6��������L�Rw��
W��(7�����A��	��S��F;da��;)[x&�=�F'�$�.L��	]�L�a��\�'f{q��w��}y����w�K>_\<.`&�Bf\�Lĥ̎X��k��q�nbv�m>_|�b��~ߤ�><�T��ΐ!Y2���|�c�̴�#��sf�-���pa�����0Th�k
��5�������Q�.L����0Z��[	[��
c���	�va$@xa2̆y0r,�����8%p
�C�����
1�`v�$LE����d��s�e|�2\�p3��xO�i���9Ņ�7��~Ʉ�U�5_�"�쨖j�2K�ƒ�e-�k���-�����K��ZN�r��/j�X�2-��jh��S�Z&�wj�f�G����zf�u���?�����kY���Ҧ�lK�r��.-�j��h�g�����m��6}v�t-gi�߱�Пܴ�>�M�	m�Oi+m��>����v�����>�O� _�s�n�^��9H5�i8g�����2}C'�[:I����H?��t���Y:G��y:EG��.*��*�
R5T���j��*��ٟoj���|���mnϷ8��-:@G���t�n�0<=�'���@*G���I
�a$��|��cp�<�g���R����^�+x
o�M��\��n8���
UuT]�•]�S��ⷄ=�k��geB.����6q��#p���TWO�����O��
�V�B��|�P�f��n��sPf��+�I����������nqn�`
[�hUp��i[ש@��N9l�F�(�գ�lݠBep.#(���ɧ��Z���*��J�IO�Aq0hma~��+�KP����ski��5ZM[�p��m<��v܎x�v3ߣ��is�a�t�y��3�Q	�]�w�o�@N�\�����A:�a��0ʈ5z=�}��,rJ?6{����E�\�}��uc�Kx�W��j\Ǟw���\�9��� ������G@cՖW|C�a.Q��E����p�GK�h!�*��o�ʎ����_a�p�fU����۴Ң��wt��>��ByDU�ÿ̘�%>��F
S�3�'�q�H%���v�6
ΐE��Q�x�"U�gۃ]w���33���[ٲ�!��{�B����Lsm���B�(��S.�rWL�=��{�tɆ��/I
T�^�y�;M��H�*M<L͢��&��ۮ�3��4����
�{/U}���o�{�,��7(�m$�K�μ��^�\.g� g~E�prw���'v2�cӎ�Z�K쇬�Xk�s�{�Iַ�$;g$Z�
~N
��"��m�H�����)��yb���U�}��D+z��Y���J#E"�pч�^��s��;���a2;J�٢NJ~�Nn�oX��x�ԽxTչ���l �5����(*� 
�ZQꩭE��N���z�����rQk�9-UDEi�n��kI�Lr��L&3I&����}��;! (��=���|���ٗuy��{���0��ď��y�M���k�C��o-ƈN�*�&��o�n���k�ɯ<���b�+/�������ڋ�:�b��J����+�e�B}>��)�E����o�S�t�՟����t���ѭ�U����x�S��M�S����ޞ/�,�^���0費/˼�Ǘ�.4e���W��w�H�"����2H�5c����b�bÓ��?<W}1e���i�k#o�ws����:��qSǭ���fNH�P<�3'�N��$&
�tߤ���02�[ʈ��S�����7��M~{�����z01�1%�g�M��)��+��]3f�|J��T	�ߐ]��n�\~�>�o��l���=�3���5���X;���=��'����͘4�Eʤ�&O�0r�+��	+̈<�3d���g!癮Cr��y͘	�mx�ƒ�v<��������&����ְ؋?yq�l���b��'
�;��?�|��K���s��a�Is����/�1eҎ6�+��2��˛G���_�ֲ�WS�o_� e�M�RҾ�׾}�}3�>?y���o�a�UcU�G.��u��r���ET������T��5`�������|y͘�9~W=�~K7~��|���g=��e֎�}g/�P<;��N�m'
�i���	#ߘ�����&�À?ܧ����7����Ô?|�fω�o���
of�#'OKI�ϫt��6�7�>��#��Zu�j��#k�z��wT��_R��Z͛�Χ��%T{��
ə���K�Y��n���_۠ک�o����\�U�֜<�gq��f��3o�[��}0o��)�/�w��{���c�0�>���W�?���}K��ݿT���_����o��U/|>e���O�c���{�yɁ���o�?>�b����ˎ/~����VFVծ.Y�a���Z���FL�Z�{KX:��aq���	3S��ޒ�|���%ua��MCŏE��`����K��Ub�<%��,& �d�S�Z<�|��怹`����B��}w����m���.�3d�E��d�1� =�XYj����]����5�'e�1C��g+���H�e"�AT��`��r�+K����
Nj�%Y�#���"~�XV;�ٷ��U|�F��n�GV��d��"]����Ge�9����cna�6Yif�3��9|>
�d�,:�z�r��/�r�&1H֋�dP\'�b��#6�T�~�SDEc�l�f˩U�qH�0ܲը�^�)[�e���lq\*�p�b�z�<,[�fyf(C���U\��^����|1L�����~q��Ї��a���+O�ib"�=)��_����:����9`.��w��b����?�\��g�s��s�`�n�����>pD��ar?����u#eĸ�nc�`�̦��{�^G���p�@9�I ��}�b�AY�g�,ν���n$�F/���ы:��؏^��i������KbzQ�^ԡu�E6z�G/������F/��E6z�w��7}�aʎ���#u�H:R���#��H	:҄�ԙ�Dw3���ٞ��EWrEW��̧�q��'1�F+��7F�1�0�m�݀���<@K?��MA����a�T�O���|~B6��
�p#=,�� �+�]A�
zWл������+�?@~���"�	X�o_��`X�+�J��k�k�Z��g�F���̀V[�6�v�tʹd�]`7���r\���� 8DYs\6�2y���C��'���E�$(e��}*��Y��F��n�Y��M֋�E#���Ro4�Z�������L1�#���p#�	�n����N0����F�.�x4�[�l��!O#���r�Y|�
��cֲ��i��I���8ߝ����ȓ�r�n��ǹ��B���l�B�F��q��J�C�f�쀙I����=A�:� '`	َ5:�]?�	�J8^/������/�/��L�����|�G�3���#���}?����|&ruP~G%�b[5҅�Xa�I���`����	C`�A��&:j��&:j��&:j��9f-r���F��M�c�a�As��\an��f��#\;G6c��X���������,�|圫T�^P���4�F��7�-ؾ!z�+�;�8��c���7� BNENCN�^�R���s�\0��w�
�~9�R�,_�`%XŹV�5`-���U}��.د��a�>�ׇ���_��ó�Y��yyy�ߎ�� ��'���E�$���K6���آ;�Zm����a�6���}��a>l�g\��^�ׁa�*�v��Y6v�hb���6C�0�F>�9fr�,m_�ڶvʿ[�ž�ᳲ�6�rs�;��nl�g�9o�b诩lH6aC>lȇ
���A쨳���|�lG��p���/"�|I�p��2��o����}��|>ƹ���h��>�K��}��
��e�1s%��\'�����>b�t�]�'��C���zb��y�cK���~�����D ���r9Q�@��+�mA�hB�CȈ��VQ�헞$JP\zm�}xg��i�*�{���r	;N:m���4��'��/a�j�����6z�z[��`�;���N�b�KE]��+J	NR��ĭ>J�$f��7�z� ��0���B��@)��6�d�m�$EF��[���,ӑ�}��h�U2@IZ)I��H��DG)Q%�7sa�<�4��/(��=��m���;���H>'�(�-|�E
mQM[,%-!��+i�����ɯ�6<D�3"�G�=�y:��S���<y0O��!�x�Ϗp�l{9�m�!�����I"��`�ĉ*�x�y���s�<0�ޕ�@<D�ч���C��!����U{�^ŰW1�U{�^ŰW>�{��^��W�}t����&ʵ�m[�V�
�� ���`h�@(W�އ܏<�<�<�>�9����'�r�D �.�˃��`�|�.�ˇ��a�|"l�G���@<�^��˃���z�٬��ѕ|��z���I}d>ш&�'�D#1��>����*4�jYlA^���Z�P�uț8f����;U�#��Y���I�^�}"�'�W0i1L�&-&Z����;��sa�M��H�cl׬�6���aG,"���������؜�|���{A����c�l�e�V@4��7#à���iE5��o�H����O#%9� �2�`bם��e>l�[�;.�{7dwY�#��|���G^���(p+���y`�|��a����W�|1,�,_�/��a�|��8�u0��f�}6�
d�(�=~`x�<;Z
:>e�r�g �r
�C�9��)hGNA�~��x�|�'"������O�K�e`9��ؙEy�$�x�<<I�$ώ�<�SЎ���ƥf�a;��@��� �ﻐ�A�\h�A�Y`��������ɩ�$`�V�.�%T�D��!��}y��<x�<�/ї���c�ӛn��s
�ZP�6?�
��n��f�:���Q��n2��t��,@>��I����dՙpyu�%@F�GL�ä��%�x�ms�\0��we��%�`�V�J��I���_�$."�C�Ǹ��F����h�,��
vr�n$�d�72�t3�t��3��u4.�������f������9T<:	�u?X�<@����/z�Zї�T�QPY�u!K�E
�ˣ����
)�
���cf���0��O9~1�|�p�v�����T�g�3Ȣ5�h�,c$5��nc�*��Gi�LZ)SgN3�PZ&��ɲ�d���G�e�h�LZ&Sg+/�,e(-s��ɢe��2Gi���e2i�L�'D���zq
�������}�wQ���Nm���}�~��G)�ݬ<J�G	�S�}�p��G�Q�}�l%ˣdy��;%Rw��Q"ugJݕRw��(M��k���3N�D����y�UP"/%�L�S���f'�٩��Ŷ��љ��4;)�NJ����4;)�aJs��t�ˊ٦�dnYJiS�Ô�/�o����h_�>�84d<�p7� s(�)���n+A�rh�Jw���tG)]1�ˡt9�N��9J�R����(�;J�R�J�C��+�tG)]1�+�tŔ.����s��\+�t�7)]��)뭤t
�����R�0�KP�������(Y%%��d���l]�R�ZJ֕�UR�JJVI�*)Y%%��d�����u�d���������8q<s?�	���H��ָI\�a�fm7N���z�~�ms�\0��w��77<��4�#��8N��8N��)����Fx#B��:N��pF#%�S�8%�Sr7%w��pF#���� N
�A=5��nj�M[�U����k��L���]ρ��f#9� �lߣ������q3�Z����~�>d:��5=FM�Q�c��5=FM��9~;������#�
�j�ya�85>F�Q�&j��fR�&j}�Z7Q�&j�Dm�Q�c�5m���M%}SiN���`Pq�Hj��	�竻�aJ��aJ��aJ��Q�G�S�0%S��MP����n�
S�(�MP�%MP�0%MP�%M�?.��E�Ô8L���O�R'����k��b�Y�e�i�5��c�,��6o�`��S�-�l%�B�
�yu߷�ݠ����m<�HR�-���R��v�\%q�FΪ�r��8ʣ#�<��_uvhe�g��2�3{�d1
��O&�(&S�Z�UK�4Q�M�'�z�R/�]��9B�!z���i�w��&z���i�hq~�8?D/����Em����Dy6���!�cqp�6�Bo5�촉��D�l��T���o"�'�h�M��걅^S~�f�?��0,���q!�pm�K��s��B�e.1[���Bl�M����G����U��8+DXG\�H\�@\�#Dg<@w�ZQ�;D2���ԑ��W`mW�C�J��=mH����+�گ�c�!��7��I���P#.5�h~�#����U���|�jYo*<��؂�Ȗ��f�����f�f���|DP��+�II��qrȄx<�����yd���S\�U�Ui�u�x@d�]�9E�>�udNr.�'%ȑ�G	r�z�l��l\��6b܈��}���[�hp;�S�m�EƑ�߅?��y���3�~����04#��'%Уfc���ft��f�ftIݝ���$Ч�Ԍ>U�O�X�}��O1�)�>�Ч9@�jv����C�b����W>�*�I�,�:�c��X�D�b��^�8���?N�'���'��fz8nnRw"���2�i3���Q�e�f9��#��3U�@������cbC�s}߯�TI�kP��y��9z��p�@���V����,@���#�v�ϝa�.����7���~9g�&�\�mM�<#W�?����u���j͹�l��hf{T?�<�m���f�~��
c
�iP6W:B���<
�Шb�^�5aY�j��ǟ.�^��V1����]�^���ί�~�Š��:��'���f�|	Fɷ��`,���q`��>S�?d�C|~��`*�ENc�c��҉�E�lW5
�7[}��<�>�����oj/��-fb���b&���-fb��q���`!�,��P�/(�R�,_�`%XŵW�5`-X�=���q���b���o[�V�
�� �`�M�����/�k�C�G@D�\��/y��<��E�!�Q����"p��2P�>�V��BV#]H7҃����*}o���1BEaծD��@��A��,3�"�!������!��`p%�J6�]Nc�$��4�"�CGˮ��1n��Q�V0���F�1N���$p/�>�?I�̀��l<�|��?����L�=�s�%ZOc�v��o�_��q�;A1ps\
������A��-|�R�2���@��:�.�̑.�s7dw�t��s_�$��G^���(p+��d�1�cF�̀O3?G�$���e~���f��,��F���#����}�n;>���o��)ߗ�9y��8�	G��<���z�� 8h0�~�����zbQ?��&9I<��xt)��R�9Ye>O����o�|��`%x��ӟa���F�
#m�ܛ�g��N�/�4�On��`'���n�)��܃���>��!p��d��p�6v˵��'�>��BP�	���s�
P	\dm*s��xA-�c�Y��^0����h�k?�B��{�Ͱ��e��9|�\�G�Y|Ѣ�����~� ��i�:�zs���:�^	Z�Gkԛ���{�vHsv29c>_���)�^��M�I�uE�����/UM
�*�მ`oe�W�U�F�p���{��ц�u�WB7��j�V���t���X��R\�ų���^(�VJ�"�{����ޡ$	�� ������O��Ӗ\9ʕ�s�\yWq�\yW^�}o=-Wc�^��W��O�/���J-\��+��к%|��k+��[ׯ�\�g���q�m\�����x�E���h��R4M*����x-x�0ޮ/�õ��R=/��"����o�m�5��|�xW�!�l�[��V1�Uo�[��V1�UL��k5Xւu�ҧZ�S��;��Na�S-�����Y�cr?�� �0�GA8F�O'���IP
�@۫�x��'�a�I�x�0$��-�K�������ճR�Ga�̿握�a�΅�wrN�	��`�0���Æ���i����g�a�����(��q�¸1w
��qðl�
;��1s�<��l?�l��m%��O�~����}�a�0L&�m0S��O�d�OШG�=�M����`�e�iȊl�g-��C+׃�@E��ڹ
�\����-�Sv
�Naq�Y�0۴l���&�f�0��;�]zj�O��?Z�G�؎�°mG����'M�������[&]�M
��K�1�_�֓`q�F�U���8��|��k�}��QW��P*��8sj[6�(�=�N\�r�H��V����D΀~Ml�ƺ~�͎�[9sg��4����T��'��6j�N-�)l���W�5v�*m�t��
f�$z�N��y'=����7�'���=o�Tk(�x���&:�c��"N�� ����o�Fg��M4���'"ہm-Įu5�'es���S�r��K�e�̗�����'��:j��[�G]K-ù��i65=LM�i&5S�v^=�o�*m��L�8�k�_t���(W?LO�mOV�UʹJ�x�v;E��v�@���'��-vц��a-m���i�Bڰ���~%d!�d!��c��E�"q����B\d!.���ֳ�e6��/g���d"A�9�L�I&℣��D��t���>D&&)�������g�`a���o(�k|~S�biYXZ����eaiYXZ<����EF�"#q����H\d$.���>����p|6�M�g���p|6�
ǧ���p|:�ǧw�H�Џ���V2'������K:���M�����������4��4c�Y��l�?�
d���H\��t2� ��ą?H'#q���	��|B:>!���OH�'�����d$.|C���AF��Gd������m�q���]N"+q��8�J�d%N��$��ą?I'+q�S��J\��t�'Y�('+	�g����Cd%��!���q��$�}��J�d%�d%�d%�d%�d%�d%���>���������{��~Y��l|�j|S6Q�NJ'+	�����=d%.���j=L�EV�"+q����]�d%N�'>,���IV�$+q��8�J���t�'Y���NVҌK'+q��8�J�d%N�'Y�����K'+q���}��J�d%N�'YI3Y����IV�$+q��8�J�d%N�'Y�_��g�#�a�,|d6>r5>2�NV�$+q�����d%.|f:YI3YI3YI3Y����IV��f軌�����IV�$+	�K�����Gu��|�?�g������d%�d%�d%�ѓ�ѓz��4�?�?�?z����� $3	�sAx.��=Df���f�c3���;3)���5�o�a��d&�d&9d&�d&�d&�d&9d&�d&��6��T��T��T��T��䐙T��䐙T�p��P/�#q����B\d!.�wYH!YH!YH!Y��,�IRHRHRHRH��ϧ�������V����i��17m,�f���f�R͎���H�n��ӪX�Ky�&�
�l�-�,t4�U[��Nee�ȃX�v�@�u�XyC3-ڬ[tQ�j��a���5�Ƭ�č��2��`��ū��N�w�.��K���;���Q�;
���Q�������q��z��9���>o{�m������2x�^.�����2x�����	x9/'��-����rB�������gZSEɴf���K��x�^.��K��x�/��e�샗��NN��*W�'��2��>.��K��2��>.��K��R��>.��K����>.�����R��>.�����R��>.�{[�%Gow��c:*�J��
��@o��>�..��K��2��..��K��(\EK�pq¸�sQq?�{*�GU���6\n7I\샋}p�.����ζ.v�e.�7�&��2x��M3�e�Wc(�ؾ�mǑNP�|��,^���4� h!�7#à��Q�C&�~H�o��m��·%�m	|�oK�h�(|�o����·Q�6
�F��(|�o��m�-�oK��<��cpl	�c�pl[ǖ��%p��uñn86
�F��28V�*qñQ8���±Q86�8��3��T�x�~-�_K��2��~���n��
���W�\�z����i>����4�F̕z$N|��OK��R��T�рO}X��wç%�h�Y?���e�ވu'AE�-ĕ-�c�X?���e�c)��}�~�Q��?��G����c	�X?���a�b	GVt��հ�^8�YG��#�����8�G�#��YGV��Cqn3,P��/��a�_ؑyض�K��ϱ�/���mK�%݂%u’vjK�����p��s	�Y�V�(�Q<�ŝu�^�~��M��\wf�b�-�+O�jq��Q�w��l�W�O_`�3��w���]��Ϲd/��1��O��p��B�+D�('�:\ �H0ܡf~���=�#l���Sg�=�ŵ�����#���;j��j����R��U��	�8�li@��9ԝ/4G��	2<A�'r���q����{8	JA(�V��BV#]H7҃��=v��������~�d��ez�O��9@im� �S̀>5��5�(�f8��
 I�m3&�;z<Pw��H��1�o���.D��k�4� 0XY��M��X_�ܪf��T��@!�M�b}� l�ӛ��A�Q�L=��5ȇ��{}�^�'7�����S�f?k��Z�j�+ħ�s|
�q�{���!X>��'�S�|>K8�nηt�u�߲A��z>��K����M>�������ar>&j�@�d����A����-�6@]
�j������.��S`܍�����z�}fq�ٜc+2�ﻑ�\�.�~�gʍ���_*��r���-zLD��c
�/eAL�Y�s)p���
>ǽr�k���㨱��6��}�y`���"S��b�?�1�|��{5҅t#=�� x�65>fI����G�Fs:X%����+�{>J���Q8<jf�6_�/r�9)�����>xܧ���`��d����"s�̰_ӛ@��@��{xu���D?ѓh���8���a�{`��/��j��O��y>[gj�Lk9���b�
�	z��U#��>ΒУž�gh�j��>�~�n��
�N~D\�G�[��bm����T�N���Yp/Y�5�k�q
�>/ �좏��
\�P{�ʹ��v�A��cu��x����݁W*���
X�F��R��)�436Lߩ���K���(ך�ط'e:��P�(媂�/c��4�mQ�������O����T�����q�.�#]���h��]���� :w����x�=������r���[�]A5�)E�G9��ʮ]Ԧ��v��j�i�J��C#�j����w�^�~����r����.�;y�FM����~jVz`�a�h�H=щ�<F�cGZ��P͇�>�����4[���]Z�WѪg�ѯG'�����is�d�'WM�Z�}7W�7A�����W�Q�j�cd-���u��Y߃{�Z��VkDu��o�3EkhT=��q�>�G'��}�.o
{ږ�'ty;Z�2��ҖЇ�/��	�Q��F?����'k8[��DI]���b���wk�Y�(#@~����D1��_���mM�m�7��|�xW�R�0>���9�����m���w���⌭`H;�^�m�5+�皕�s��b�9X�h$@$ ����`r�QH�$@� �P�7�Kȣ�P�'u憎�ɸ\�G�����w��Z��M'�K'�{�ߠ݌�$y�5�,מ[��G5��蹛[�;��n$��?��'����|�- &�6r�yM��]�V\C�����t�e�+�������+r�KVi"jQ�y��Ik`�&�	�Q���!�9�;x?t������I��4�f>f��Ԭ��̫��ye��QP��#@� /��ڢ���F;8�F��#��h^ȶ�V��X�*�X�yF��I�qQ��(L\&.
ۣ���Av?L�vk͑�ں��Iz�y��Y_����}>�P�X(�G�}����e`9��+�ݸ�k�:`�����^�֋�z�[/:G_��j��)��z��Գ=/q�z��%�R���Iz�]/��Ew�讗X+��JV"�|�j��3�Fz���+�.{���3?/1�z��%S���>������H��#?���55r�)G���Za�ث�{5t���#B�خF�G:���-�Za5B}���^�ً>{�g/��E���W��j�"�|o�����q�8�{����@/q�z&�%�
[s!e�5��X�O��s@7�5�g/�z��#�Ԩ�3#)J�����Χ��r��9�^b�01U��*LL��Dz�m/��%"hc�6���}OA����i�J���\kE=jeD��X�����|�v���!�k%��D�|���=��~C��j�z�v��j�z�D}����}ߞ�]rV�w�/����%ߐ۵�Q���ZфV4��"s�ֳr�N���jL�xq^X�^�J�Zq�h+^�/ڊmŋ��E[a�8�o׊�k�ρ��V�J�8�V<I+ǂ�x�V<B+���'��V��
�bFC�7�%ݡDw���E�3�o��mF-qHD��E8{5�Y�G�����c_��jޭ_�_�Al�
�k�����r=B3N~�2�D@��b�r�C؉�+ZM�V���n�"vJuR�F#[�S���I���{9^�E,_+ˍ:Ym�e-%�1Ⲕ�s�2D�����8iuG,H�UG�Uen�n3��4�|'G�Q�Sf�,�6�|l4��iñ���z�
�F0��7!o���[����h0��oGށ�9�:��K���
:{��,j��7k��Ueb2-�Ѧ5*�\���P�2���?���#��|�S0����|���u�c�q��	�$��S��֌[�x���
�����jA�Z���O��}�g�_���������o��C�|�O���m1�|�P����?(��o)X��/�
��{5Xւu`=�|6��@�U��!��r|j9>�����r�N�v��즾�z/Vӂ�-�rZ�eXO���[��-�V�{����r|o�P���Sv5��8�S�<��D"���ȓ�d)��Y�����j{�g�=�Z���a?/e��}�:���d=�و"��!d3�#�E=A��=�V�itAO
�6��	�.�qۺ�/AvCvG�@❌^��XL,�/�2�9y�r��~����W �D^��]-+�!�k��C^���9L.1�S���7�#ƍz՟*�&���Q�[��"oC�F�Aގ�y'r��2��Xn�1���n�=��#�Ƙ�LAދ�>l�$�)���j�r�u�4�2͢,�9�=���L]��X|	1L����v�=]�^��,�uZ�|?��8ξ��N5L��X�ZB�Sf�pn����� �O�A���4�zݕr#�c�r#���@�:���s%��q�^������C��ȁ�A��ӫy0��:0\F�[��GKw�ǝ|&�j�r��fXr��a�M�E�����E�ϑ��䷗�w���^ϥ�����������G�=����Уa�,�Dz��)ۖq5*v�v�Df ��G����<���n��t�U[�t!�H��8�G�E�f.7�!�#�[s�^��د�D�L���L!N�9�Tz��z��\V�
<E>�_5�_Y��Y�Ȅ���s��_('.,�cB��猠��0���<#h+��F�V�G�~��(�%&̓x%�l��D��A��A��A�͓��I�2+@%�b�����5�jA��_�$5��I��׊�_�y�=�Ӛ�zfT���
#;�_Wۜ�y��t��K��j��z�#�^I����H�E�M?���}�8J�+��#Ԡ��S�� ��"�r}�H��5��?MM��s��xH7ҍ�t�!�xH�x��j���+_��<{�^��X�)G����[*��R�2�5�zCuv�<b�^9���%h�,��֫��ja:��Bq�Z!�u���͎�k,�`G`0�=��^�)�����G�,z$Kw[+6!��MңWl�#���"�5_gYG�rz���+�k�,�*A/faU	s��4��ŏ�y:���������Bm#��ϞgC�x�]5�>D��Y����@eD7!o��[�m`4P���H�-݉Tc��;��\��w���]��Db���;�MP�-�b��5�%�V�ЊZB+BhE�鹝*��y���o�?�/�`��B�٧�k1�|�]�����P	�I!�(���l;SX>���p
��Ke^*�RW
�jAP�� b�H!����b��C��!B��YZ_;;S���l��6�`�N�1�T�n@��#��o���pK3_�8D�JQs��'O�r�;�kh��G����;�2Ķq�8�����mQ��]e�jL���bE�$�����#��~>��K�Tg��죲�rdT��jf����D*�l㷩|�YNj@��%�g�Yf��"���S���a_�F��Ŝ_��d�*��F��n�I^����"��~/�3���l�<={Dq��A�(��q}��+z�u���g�sh���3[���o�՝��NW}/��݇O%�Swl��[��W�Kfhͣ����k�����8{����|�U���&�ޚ�!�വ������=�F�w=:�C����_�7��v�kka�äz��IP����F�(�.�V)���������Z��a�:qܢ�b�5���n7���(�k'`�����0v�N��j���N�K��q~]�5;Q�)i���|`���a������j�F=L]S���0u=L]Sa�,����t�N��	X:K'�3AX:q�uMKa�n��\g��9��k�c�@!(%����`��q؊q0n�M��*h�u�n�M��	=N[�P�����A�
p��òq6��aV�*aV�*��7"/��j5��b������1����YO��1��f
ªq��J5�����4�&`�qG#�����è	C�+�}`�l��I=��
àa��&��ꝪV��_/� 와5ðf��Q>����}�	�A��Ö�R��R��G���B�yÖ-��)�2[&`�l���oUk���5~ðcvL��	�1;&�:o��p��1l��V���eD��*sA"�"3HDC�n��e#h�ЋzR�����i���%��G���L?������6��&~=ϰ�\B���>��^�!�J���OS�oZ#`7���
����^5*�F�Ԩ��R#��'J��Z=�6��a1��6���՜�A0��]���7�A�%�1)�!z�>�z�~��/����(�z4|=J<��|�xLœ�Rk��q��Z��9�������V��y��x���c�ߏ��G��a��:��t���/�N����5Rx4�`4�`4�`4�`4�`�`�`�`l3������c0�R�i{�q=�\h�5ol��R�${����?G�6j���2e4� �O�)#�2��WI�t�����D������ю��_�v�:��x�ę���z@9��A��o�o��_W�X��e�5��ښ�j�7�A�:��5h/�s�\ֺ�z���b�^1A�+�����Xw�'��Oށ���y�-}%F�;G��"���	ڗ�>k��*�s=���:�fJ/{}�o
3�}����Ů[���+����~���P\v��,]�x��`����=�<oLA�P6�3A1��Ӑ��q<�:7�j/�Ǫl��`!�,��O9�b��|�9��e`9��+�*���k�:`�M���g5~f+���Nv��d�{��r�8��O6�2y���C�3�����"p��2P�~�V��BV#]H7҃��zm�Yzë}d��������y5�p-��_�7��j�;�1
IDf܊$"3F#� oG❍;�*2PQ�������3\�Y�3�ϳ�Z1#�mǁ7���'Z@L����H݀Z�~�{"�_�[�/�}&�g!g#�@�ώ��
��c�sR�Q�����ɸ9I���oތ7oƛ7�͛M��\;k����F5.I�?Q���V���is;��gs?8�]����"@}�R�S�~�x@
����s�z�@_��c���$z���&�d�f4�f�Z�/���Iž���2]�*3��ae��H�S$��E��IB���Vf��'H�$�	T���'H�t�h��	��	��	���I0nl��&��I0m�{&��I�_���>vf��
�%ٙA��7�IMz�1�Z��c�Ο�
�m`����P�F�g�Qmמw���d����U���軇��Ŏ����&�OEp����y����-!���k	,᷶���Ed$����dK�6>&�X�10��su���a��"2�Ed��>&��h	Q�""�%D�K���L���9U~��(x9���ɿ^�Z/�6�쮛��Cъ�g�Pk뵴b��%�!ɴko4$
I�oV����#���nh��ͮ綽m��hR2��l�D�9e��Wu�/OkV�Pق�TAhQd�hV2���f%�Y����7�u{�]�{��au���HF��Ѿd�/�K�w��*40���TʩW��x����I,����h�D>���};����&'c����8�cKw��˲����ΎK�n	U�sk{NMu��V�6�И��V�X��Y��yG�>,����Q��s_�z��`����P�Hն;:��sG�*�s1�V���Z}��F�>`[^۽�d]��z�1g�۽X؅�=��&�ͽڽ��/E5Oy�V�6_�����Z�eI�����J�:pyԶ�δx�v.Om��5�ߧ=g�^Ї�/}�Oe�2�W2�Z��Ԋ���GP��@���O��<��M�OBu����O�T�=��ƶǐj��X�u�B��P�5��K�b
�*�
x��o�Q�yb����g߳��C�|�O�?8�ʶ,��`X	VQ��*wk�:��*�&�L�"T��li@�h�N=v��K�G�P#��菋}��ȃ�C��0�e#� s�G���<=Z������^�Q�C��5*�A��O�U"���Hҍ��,��$"�ZE����@����������L�������ܑ�j��d�h?H�$����6K��K��K��K�
O�<������3\�Y��W��'g���Z�=�8�g'(n���^�c��4� h!�7#à��Q=�H�4���0�t]dYC��>wC��н���������pp=nw�q`�=Q�<�G�q��"��HkV�q������u0�}g�}6�
�9�0�����Q{�O�����#@��>˓�R25B��$2��� �%�w	�?�5�#@�2M�03�sl{�bͦo$�i$�i$�i$�i$�	��9�Z��u|_6���&=�My$5���f��m��w �N=�(n�B�jՑ=Ƚ ��3���=�(nBFZ���ڳ#f��&�j0�e�y���"�>�5�Ɋ�dEA�%���ђɎ�dGA��m~�Q�H�n�3&[���}��胺¦���٪�ؤ�����Uk�ˈ��D�^<�[�!R���f㐔�[:N'e�QJ��;�f���[�_�(+6�2���H�K�D�^"U���bֻ����\�4yt��Ÿ�i{�ZB]�a�c:s�K���1G~׵w�Z����U_�K���-R��{�┲UF���.YD���S��s%�/�׋|Ӛl�O%m��a}�A�髕5�,F�"�t�!J�Kr�`]�+���v�=@/Y�#�=��$}�B�SW5���~��5xCNGk���'�}o���Zm��Y{�UZA�F���5��G�Ӗt=>�TfP�F�n��~XD���
�I!m�V�����O�����0��c���O��W�j-�n{s�]�L-%?�;��$(M��;1���*��+����[����'9s9=r��v��,�8��3r�-Z/�+JG8��Q����g�4�~z�[�o\��UzO�x�'��G|����F��
J�t�B�R��P�Bgf�7���D�&�8=QQk��m��C�%4s�#]��D�Ei�(�I�̕�mG�[�n��:m�v�*|��y���;�j3��Wt�~�R�l�����:��vΊlߑ/��JgF��ҏ�\������/���*bV�ˎÿ�q���#_[Y�U���ڥW{S�����}�9-���@�rT�<�~��BZ���=�J���P���r+:��^�F�/���J�|DK���lѫ��D�v�'>YI|���ڊf������U�*���x+K�#��U�D	��C?���(�O��4#%�$�|��?��M]�u�A�M���~�3N񲯭��V̱W��#���)U\ɭ5��~����Gۇ��}m.hm_
�9��?���m6�=o�Y�T}�>��_{��P�Y��g�~��uS�g���]�9�b�&ZP���k����Z�N?���l�%h������"+��L)՛����G��B}ZM����=C0d�7�c�N
�|UקC�cH�b����A�wP�7�F5ս�Ԥ�k�V��Z��׍r��uO��^ա�!���m�8��m|T{���]��Vb�.Ǯ]�^��ܱT�NP�o�D���2��c��>���o��{��(>�
E\��>�NG��s���E߱?3�Ҟ!�g�����f�=�o1�SZ-���Xc�f�o��NKi��D��ݴu��n���Z�Z���V����ВM_kI��j��i�Mlﳶ�絟�|w��3���=��������3�s��)��g�ߥ.����(�z�t�*>]mox�>Q}�;|Q+�\
s
��>��Z��UYNz�
?ob��V��/��2ۣ�bX��}��h})��.���
��r�V�� �v-8Kw�z�������1}��q����y��fe!e�	Z=l�\aZ=���Y>�͏HJ[KI�u��W�)I�������YO�;��þ1�N��_��Y܄�>�K����Z�G���z����?W�:�r:��a���-
Em�@7��o[_�vU���1��<@���\!� (��C|���H��?��O����?S��Q�4�{9�~-|�l�I�O���Z]�����k-�r�%XV�U�o5Xւu`=�
l�Zaw���o[�V�
�� �k�`P+�dr]�O�����{y�u8�|.'A)(l�.�^��S�%�<��4�fq~;M�B�b8@'�t��F7������\�m0�\Mz
�\�cM׃�Md����`4��	�I�^�g��7&�{������i�,טɹfs�9:�R�E��=�ў�h��=5\�T��������A�&�fd��Y�
C&�~H��0��ha'����E�p$����q	ۺ����ANw)�	z����E�ju����pp=nw�q`"�Q����������s��2���}^����
�{l|$W8>�Nǧ|^��}��#�e<)U���&u!��a�CF�֣���DK�}X�+�J��\+����
s=@��
�}+`����7˓z#��]g��}��f�@��� �ﻐ�A&��A�Y`���������nr	7�Yk�����<�f>�z�凜���W�JP�6��5������m~�W����.`��x�w|wq�����Ag�����%���L�)[ϣ��6Sz�~k���|���)��]�c
��%ĺ�����)�#7iV@�`�]�gj��ڵ�im���`5e���5x�<�Z9��H�*2��q�^1����՞���	x�\��?e���\N�3�Vo��� �7(��4B��0�|~u$Ev3y���^�ډ�(�{8�z�C|~�x�`*�ENc�c�����z��3��+zm=�i��i����;��|�x�X�=���,�E�`=
s�e�x'^Ɖ�q�e�x'^�/S��)���e
:<�Lk^B���T�e
�2x��L^�/S�7cux����0N���e���9��Hb��<��E�!���	��s8	JA(g�
~�D�8�	�7�LJ�#�;U"B�DEg�L^�
/S���2z��}`��~�dd��eȁ�3Xs�#x�"c���"�"�Cv|�{�� O ������@Nc�܉r�p�g���s&眭���Hc�v���t��i��aN�R^�
�T�7��U፪�FUx�*�Qި
oT�7R��OT�'��Uቪ�DUx�*<P��S��)���8Ux�*�M��
OS�����T�i��4Ux�*<M�c�l��8~�x�~^�;�6N�Mަ
oS�ɾ��>���4Ux�*z��Q��
O���T�e�����(�[�#���x��]#ޥ@�y�'�!����4x�q0�5Z���v�od�J�5�Y���Fu�~�V�fQk�l�۔�m��6�x�f�M	ަo�+��4�m��6�x�f�M	ަoS��i�5=x�����F��/�<��Ux���q�
S��)�����w�=�ɰ���u�RP��=��q7��Zcٔ�v�&=wU�ҙw��;����9`.��w��_ε��i��ƳދWg�a�����9�~�>�f�a2`�7�w��Z�+��{Wr�[���9�=gur�^�=h�Fr<i����ݩծJ�%hg�=W�Ξ���v|��W�����*�l���k���k��N�׷�~�]����
h^�ׂ浐�^`.HH�_M�w�;��������9y��<d����1�	߈��깜����n���j���V�Q����\���Q�ъ}�����:<�F��y��jfT#�%!����?���
���U�����Ճ�C�|�O�;+j���֖F�����'$�	|AB����[5o��R��{%�n5K�m�M�j\{��r���C�@+�h���y53
\���j� rľ P3��6\ԜT5U�E���=�}{��͔ڇV���.3�;L�F��v�����	=�t��sM�&�1��>�����=]���}��0�}�cj#53J�d��׽�oP�z}�oD���w�Ջ�,�eX�2�T��R�`Ķ�z�T#�߈�7�j��>,�с�;��;q��WZ��9����F�}X�z+�>,�ˈ�je�n�r�R�,�eXK#ֲki4��w}f��!���
XKk�a-1�%�����}_�E��	o&��R���r��8��,���Ѳ8Z?�������R�^��Kqz)N�$�=�����^E��1��w .�⟺��Y���o]��oVT��C��F(��y@
Ѫ��zM�qD����zO��Z�QG��h5d��T�A�Cz-�W9�7��M��T%���P�o��7T�*�
z����I�)�4%��$ҔD��HSi��4CD�!"��f���MT"�U��*CD�!�J�>�J�H��$����J�HI"z9��Cz�h�^4���IP
�@�^�.�׈V�C����!���_��O����.¢��V��9gUF����T�I"�V[�GlEZk&�Ի����"�4It"����T�"�
e�w�5��L�zO1�I�^'�O�DO�TA�$��BDL!��P��Xb���b�h(D$�fm{�0O�h�G��I>ɇOR�~*�������Ms�^OYԊz4aO�v�2}������Y�d�G����V��ڟ
z�i��!r���~bZD���w�f���^5�i�����Ua�*�V�Ѫ0ZF��B��~5Xւu@�܌���m M�}Z�k�i�Ѫ����^KQ��S��S��3�V5�UMhU�
�UA�*�V��s6�UMhUZՄV�G��[6�6��5��
ar�0�B�\A��{=�
[�a��4�
k�V����v�aj�� �@-[�Fܢe�Ѳ�h�z{e��h�z�,��Ѳ ZD˂hY-�eA=ve�\��;���F��֪�=�N4-���7T��S��P�5?������G��:9A�M�a2�a�O�9ɣ�m+C��ж2����|���h_�ׄ�5�}�m�Mh_��}A�y�h�s9�5���a�-�
�A{�w!X�����߬�g�V��wX}֥��}���h`!D�h`
��A40��@?�G�h�
�۫x��z.�li`�V�
ګ���g�b�h�
�5����~4Џ��@?�?��[�@?�G�h��W����npq3m���+��g�;Z��Yyv�yV�
��jL���G�xK?��Z�;�<�G�B{�٠��l�^y6���@?��+�v\u�V�Qȏ��@?X��?�U�rN�3>f��ԻM/��l�f��J�~4Џ�ů���$<g`��R��h?�v����k�gנ��������eh��q�x�k=jÍ�5�����{��;~��,�E��)�,����w��� �rP	��[������������U�*��j��j��j��j��j��j�eh�4b1i
=���^EZCo�"ά!Ƭ��Wc��Wѣ��+k��������b�b�e��*�e�+ˈW���T�k��Z#��b�b���c��]%n�b�rny��\�G�#����� yt
SS.��.��b�b�b��6�iz)WD�Tq�	�G��azg��9�6��s�<0���3Ec�S�[>��%������0�J��©�Hb�1�l� 3ƀ;�z�y��6Zxv���z��r*-��=Eh�TZ6��M�U�Ѫ۰�6�>�j��J��Ѫy�j�y�~�6Zt�~�<]��ϐ��h�Z��V�7s�<b�|�I������r�ŴN	�SB�l�e��W��N��I�:	Z'A�$Ļ�%��	Z"!�h1-���XL���{۩�vj�0f�}15^L�Sc��,�Ƌ��bj��o��	j�p��׸)�Ƌ��Z�M��VBm�S����˫���-UѯϻDo�g�jt(qH�u�|�B�~:�8w�F�;�_+������`��v&��ڟ���s�\0��w��M*�]O����*�*R8ߺ]+i����JZ-�V[O�����psn҂jE�V�JZq�=B)Jk���m�ڦ�r%����\Ok��5���je���k�õ�4w-�QT�<v71 AED��o�j)�T�֪Ū����^�������+J{{��zM��+�������W6�����lH6�s��?ggg7���_g~ߙ�gfg�8��s�9��EW���U��|6�:;MϬ��
��5w��;A��@�͐��8���N�&�q�z�.�Q+�q%�z`[l�m�5#>fm�z`U�
�M0)&�����z�ތ���fDƌ��Pk�FQ����H�[�_c>d���A�ﴱx-6ox^	�gs�o�E��>Gm�[P�&�|��+��J�|����Y��<��+����/�l��g����f��,�j�f%lsgV��=�
v�3��[�CK���T����c!W��@�/�i���؛�cmJl��DG0r�ҌT���QI3"�r��x�^̔k�L��jJ�Xg����0�gN��i�{��p�>�y|�l${(1� ��c_�]�۔q�`<�?H�u�'�|?�Bg0�cu�R�)�	�g�X?����͗��b4�3}���f�ZhGH�EX����O<	x
�4����y8��7������B�Y<��u�YǬ�cV�i��XO!�.ޅඉ�/4ߔ�}p_n7������
A�:Р4�S�:�`����gc�R�w����nW���C��C��C��
`�����$
�#
�#
�#
�#
�#
���M�6��6��6��6��6��6��6�������T��D��*�Q�(����(���EE�W�����@<�(���(뇑�@�@�
xF曀ud~;d~;�C���L��'���#�QxQxQxQq7��N1d��tK@�֟�ZaP+j�A�l��*�H.d$�ˁl��\�\1��T\.,q�§[malc&(eàl�
��aP6ʆц�І�І�І�@�P:J�A�0(�àt���aP:J�A�0(��A�lP:m�
m�
m�
m�
m�
m�
��.�9hs��D��'���08�
N���08�ͨ�j'��'��D8����	n���0��L�#ِ�\�d.d2�	�mV�C9�P8�Z�6Z.��6Z�6�1��Z�����’,,�r}���"hóІg�
�	.���0���hk���6�+т���5�mv߄]��E׆�6l'�w��
OÆ}	��E�b1��b�}#�D5��ې�|F6��'�m��uJ�+j9F����3��3��3��3��3��3ց�%�����հo����a>x�^ՀW%�U	�F-�F-�F-�F5��:�-|ˇ�x|ˇ�淩��|�+�*�J�;��;��;ցOf�|�|��j�;�^��o�.��X����Y�,�,_�^�L���|8c{Wr��O�}"э��?�5���_���vP|�59>�̄����]�������~��56Sm޼vki����n�K?�;����020�kQ�y^��|��&הty�!9�������?�cp�x46td`��G.���n�a&�=��}���]v��U�5��_.�����Y�/��Jo�_�+�ڹO��T����O��=�R�G��a֦���@�<Pnj͖�:���ۣ���@�<�P(���*y�H)(R
�j�\���FP$��lE6���D)�PO���ȯ�ued����Go�6c5tDZ��b����Z��u�5~�]�R؇հ	
�z-�^���z-�^�`�ycؼ-�z�=`]�ˀuY�aަ-�e�����ˀ�Z`^�ˀy06o��7SK�m��	�\�y-0��)�f�O���/�tq|+������N_�{�3�e���"v^y������,�e�l�
��XF����m�m�\p����{j�J�f���`��'w޷�ow���@�P �9]׃��s�f7o1ك�ֻ��o�$���=}p�딃φ
5����(�r��̱�=�rۃ��4��U�1o9<ƾt
�S�Ԁ:5�N
�SÑF3���i�f
�V�մ�/M�mr涛�l��,��A�rP|?(�7k�uq͚�5	�%[Z9(_��K��9(j8��A��9�rp���;�G��#5�H
G��s�f��푖�#͜/�6g<�3pLJ�����Y	y]	y]	y�b�n&ߟY�9�Ɖ�r��?Ox��U7l��'[�t��՝p��r��rv��\ζvb����$���p6�=.��)��NᬫM�9[F#��2�YWø�mg}G:Ζ�8k��l��OmgW��+����z�.gW��p6b9g#i9{���Dl�'����փkm��!���#1p$���8Gb�H�b�B\��1p!.Ąy��(@_�t�pg=(�7�m��@�(��]��@��fԌ���AM�N��F�zP3j���m�`���f���9��^(g�I��r���^OT�*m���B��8(�b�P���|�8!�f�c��X�l���{Mg8�}���؈�?������wbݖv�])w�$a��UA�g�񬖀�K@�%���D��k5�Z�j	8���G��b�LxVK�g��Yb=��Lܪ.M�6Ẉ]=;1&���`g�c2��Hs=�Bp/�!�ap0�j�U
c��N,o,���O��`�Ȭ�P*�
E��M�D���"`\L��]0+fE�*�"��M��ֱ	ֱ	���kD�E�WW�ٔ���J�_g��V�R+d�|�q'�m����U�46��ݽw�z��f��xf\�>��7>�׀E����~7o�/�%��Y�~}*��C�����;xN� 2��^���<ܡ
��Ƿn���7�#�m�Cލ�G�{���hK`W�\�x"ী��+5�nQ��N�j!���vo3�ݜ������V�vJ�(�\%֬�'���
�~,��]q�/n������/�_#n�~���O��د�������cد����A4��J�I->�A�]l�=��Vy��I���)r��*��C�\9_�$�Gr�\,��i�X��3d�\!ϖ���'+�Z9J���r��1r���c��N^(wHG~OI%�uJ�L9Qe��F�[-���a�?ԙ�,y�:W��w���;r����{�E�by��L]&�.W��Օ�J���Z]#T7�����Vu�|DMV�����|J=��O����r�������S�)��zF=#��ij���zI�*��^S����M���ʗ/���"��*W+�k�B}"_W�TX樭j������m�2Wg�n򟺿>N��92__��+���9OO�W��j=Q.�7�[�b=EO�K�s�9��~Y�,��=S.ӳt�\���ur�ޠ7ɨެ7�&]���f���\��:]'�K�RB��z%u��R)�Q�u�
阎��@�@?u�P#n�������ߢ6���mh™a���a�
Z�=��'��[�1���SZ�9�s���;k�����=�y�|�O��
S���͇N3�w�Ù�':�p>��u�ng����D}�GͯD
�=���i�'�8
�^haᴙ�x�;��,�|�.߹����u�O���|����X����О~x~c>_���g5��n�y'�����4;��g�ᾳ���MrK`�^����r����ʖ󆳌r��^�R���xw&
�
<~e���\?�L
7�%�m	���\bV"��ʽ�5����zz�'�)1O�DS�@�;���*��l���q[;�����{?�U�_9���t������疛�����de�Se�mi�O�v9�%��Uq����S�ltu��DieB��mU��ն�-Ύ��a\�h�VWGS��o?]��!t��L�|ÙòO�ij~mc;��R�g6쟫S_�^�|�9�|w��4�,��c��ؒF��];^;u��Z{:�9��cޱJ���<J�W��
xO���ILw>`Y![�K��/�s�Ѯ����k�`~���~Ǚ�U�'j�|�ԻψK��ۻ&.o���C�7t�G����g��%�����-�Б�`m�W	������Ԗb��v5ۜ�Ztfc�����UQX����
���̿�L}�伛���^Yp��󺓓�)���~ꔡu-��*<��j���s4��ᡬ2we>�֧�Y��i��۳���k)�_R+����駕'k�Le�϶�|�^/qm{-`Z�!pv��q��D��^��8+��|n�qڬ'`�$dW�ҜN����U�I'��{���l[���<i���:�Hb,!/�.�K1�˝��e���C+�Ѕk����=lz�Q��l>�����[r���޲%��o�i��m_�?�����yn����S�sI��]yX��d���W����ʄn��9��u{��wh�|��j��^��p�E��Q�jm;�T��
=9�=l8�2֔��z}�V�����$���ԡ�ߢ��v�1�:+��g�a�O�.|�ya#��ޅ�>Z���&�"n)X����}϶������w���kDx��l{9��}Nm\�%�=�]�7q)�g�%�V����z���hWj؅��}�ސ�]΢��%�Z���7�;���[kן��:ot�]q/>�B����ʿy��v�y��g���=���^
h[����v�)p����^�їء��v6��5�ف�;�©�,+J��I�����!N���ӹ2@|�`�a {���R�*z��q�c1H�}E�ǚ�Ù�Ė)��W8B�����'4�c�Ѣ��u�Eq�=��v�|r��s��,_�{X�.�>�8�w�K��{ۺ'��0+���� �]��;ܬ�����AA�/�U� A7t;0۩8���G����=��`�P�8��
����C_�&����Xp�7�5��:��`�dj�|t���iꦿƽn�1�#P�u���]1*�~�Г�l�z�n�9��Kً{#���Lf���,�z�Cy�1L���s�I,?���2i�Gf�X�폽�у����r�I���D�����]��0�c@�q��i��ϧ�zvBY�x��KFO�th��qyN�6{t�u&��;e8�6��-�7��#��[��Ĉ����T�5����N8�^�H>CI��u���:9��G��i�25�yb�����Ŀ�v(s4!���M�؝%�z���ϙ���J���#��~�k��J�d�t�⡉1�ø�c}��}�o�a��w�aIRi"Uֶ��!��
X�w�4�m�H�d����>H�����2�&4��5�����ǖ}��N���6��uO�'zX$�ɶ���{�LV����y��qHx��Fz�k�G0�Dž�V$0w����B$��ŅP;��ϛV�����i��$��n��H�&݀Y:8
�s}�c��8�f�t����
nMS�п\�:���˶���9��9�Ә��C��	�Gz~��x��W���I��`�ڑ^�1�`�^S�e�`�gΦdf�VjG�'6W�H��α�F�.����	I��ē�� �ڈ��m�6���,��m�U��u�T���I��t��$|����o��E���7��guP�:��$��-UzM}��Z�㾦|�c�kB��%�m���p<5�)��4n��:���Bo�i�h��9
�E�z���t���rL����Md�O����6$��<�2���kk�6��%��[o	��A�	xj��3#��Lh�s��Q�W�c�c�wоƋI���g����yL�까Z=���:Z<!^A�"G\)�!��5b�(����5�Xg0��mƱ�f�|�*v�8V��ı�&���'b�@�VY�]�b�Y�=(��2�h�,F�vc4k�	{oY��(Y%�e�U�ʣ��_F�y��%���e����Ue�ST�:F�V���bu�:K^���+�c5N],�aL�DƴNbL�i��1�?cL덌i�]ݣfd띌l�
#[�ed�}�l�-#[�gd��l}���S�(#[cd���8#[�2��)F�>����GF��7#[����/3��UF������ٚ�oַ�7���|[��<����9r���r�����w�|=_��B�X��?���T���x-П�Mr!#^1�P�wȥz���e��r����f�N3/��M�SЄ���F�<��lR��͚=���3�~`T�^n���^W"ݪ�&��i����j�{�i��%�]
�830*0&0.p)~]������	psw�	<�rOx&�Y�t�^�����
�B���e���@9��
H�j�F���48?TAkk�ԙ���c��]�G"e#�M�X�.
� ������ׯX��}�=���8>�S�����;^r6�}�>1WX��Z�&檽xq0Aon.������W���=C�d�^�y���@{��!;F:7t�Wv����~���r�~��Ͻ�۽�d/w�=N	��+{��=����^�r���!�c�]g_Cyg!����A2C�Fyv���0���4D9
��A%���ڊHl%6�A��@4��W�c����+�N��^n���<gP�3�HX~y�Z���Wa�C,y��똿��_�[�N`�^?��w��!��e���1׋)�DL���:���5���a�1�W=�^��C���U�IY2��Oe�A�cj�W��د|��:������O�~��s��s������y�g�|�CÛk.f:��1��!C�lޫC���),9���&�~Ȓ�n�4�:�%#]�0=�%糞C-�f�NR���e~��F����,�<�{���r��V�ޕkL�%w���Ky�_�>M�G��Oi`�*��]�1�$F'������8��E>��y��6�T��e���'2?�r�}R����D
�3t�6ӝL0=�w����S�+�Dz�{LO��#}��ۙ��[y�g����3��L{2ն�됿�%G1L��=�3?�M�KO�Gݖ }�w���Inj[��?�ȋ��Nf�d����_�1����%�|�X�e�<�Ѥ̟�kNe�Q�[�?��L����y���э'ã�����c�ѹ��<����ÿC�n��T|_�@�P\.�?�U���j�q�2	���~#~'��(|�bY*��}���Qn�5r��/�N�U���UmJ*
��u�^���z��'t�^���b�L/�e�\�Ы�]�+�v��W�c���`d��p����6��jhi�J=�Ux��6Z�xF?��	׃���V@`7`����[�?��}�Ь=ȾQ{�]�ͬ�6�x^�љKH�L72-f:��{W�ә������"���ǹ��}�lc3�^�4�i>�iL����3�N������2��p��1]���^����腾��?���<��4�W��cf�B�#se��mz��ϔ��)l��F���ov����ˡ�؄z�L����1�w$m��I�&���!eO@Φ��}�{�&/��t#�b�ils��դ~򏨈w�8���H_�1��<=�=i�2�]�WQSOUh� �G�g�"K�%��(�ݭ��eeԝS1^��I�7b4�ћSIv�5з�K��`%i �2�����Wʷ�Tp��2���դ'��^#�+tvlib/fonts/raleway/Raleway-Bold.woff2000064400000175540147361034410013355 0ustar00wOF2�`����?FFTM����p`�F�
	�
���� �\6$�4 ���[�N�
�b�n?��z�B#�N	�I�õt�#�1�%��t�Z��չ+��݁y����������ߘLĦ'9�d�L�Cx��tm�n�FP݅�Ŕ}*j61��űH���RJ��Φ_b���f�ֱ&��� 	�����nor�M�ɽ<��R�6f���Gũb'PΒ$(�MFv�у���׵� �����:5{5��U.��\�l[P���w��i�ԣ���3�0�`8�-8���h6
q��˧����*e7u�B2(��`ʏ�w��I9c��A\7j)*�I���YK7ܶ#�F+3P[��ߝ���D/�C%^��O,��l��^����\��f/W9y�[�
�mC������>"�-�a�E�,�B��~Vs�V����:��u�:`+~��3�.ݱy��H��[��O�y��K`��w1b��W1-�+Me��g�m����֡��NJW�MPR����Q��d1KW�lRVwAI=�>Q#J�f����x#�9|�X�]g�y�>*à���j�$|�>��38�-�{���"^�$n��%(�O���Q-��2�srR�jߪ��L䲃%ۑ+O�Pʹzzo%�$s��C@"�9��boc����0&�Q#�`*1�n��R1
l0��#�h@ll����<_���:����4MF^��ED�߲�l�F[��>�b��#~�ο�wZa˦5���t�e��;s�%l�x�K�[ό�F�;Z@҂�G�b�rt���*'ڒ�t����;���J��v�W��	�$�@�00Cn��(��
1'��ɵ���i�i�e�i)O�Oz�L~��#��p�E����iu����
��_�|mQ^���i�n��$�hH0Edh:���6fz��%�h#5MR���i����`l�ߐ�s�fej0�l�����ҕ�y<{س�f?q���9�6�@S��R�|u�G��F��D�sE
#n��������]��g\�����ƲJp��| �d���#I0V!
�0X�cm�9��>�����@��VS�M�t�:`�kD9�'L�S�Ofى���T�t
��k
;��&y

k�?L�t>��Y5g&�P�|��j��qEc�
W�BP��B@D��'��nLQ��˵-q�B�Ҥ���!��M�j�X���q�Vv7�)"��\�����qn+JĄ�}��d#��08'~��°$}���S	-����tj]�YM��|y��uRKN��#t����� �p�m0L1�.W��M�6&�u����E����L�m���R���E�X=�	����޼����������p��mO��V�R�Y.Id��H�e!���@�(uf`
h7S�I��$A���vZ����M:�DH¬A��"l
x�Er¾;�ڛ�[ח�vx��%��o���S6`�s�$u�ȹo�ƹ��L�`ŏbW�p��c��h0K��b�6�D�U�Pe�(��?�u���b(�N^*9���@@=0Z�}��/˰�a�|[�V�~�4�9ζ�d�l���w�\'�2Y0��Ȥ�%�+��TNm��[@K�� ~	ZkZ��LC���];�&:��?��gL8�h�dhU��uL8���:���b9&��%O������1fv�D�� ��� �	�6��Ģ-\��"����U�� �I�iBf����+�M)�h������������>)Jl�`D�J=0T�m��4ƘH�iZ��2�+3�Gk\6�h�;���7K�l��`��}_�Ŝ�:J>ᘬ��� rW��գ>��|E�F�h���iO Fhx��LӺ�[E?��gڰ�l��à�����Zp4t�B���9{�C�
0��f���yt#ə�#�ʤ T
B��Ҕ޷nuw�r)�0��;NAy��_㽹9���ZQJ���(]3��쮊Kӥ��\`P`^`` A�������{m:���R�UK$E���i�����ewȬ����u���Z`���?���%�2!^SD��Pz$T�_ղ�`�X��Ņ�Kt�=%'n�sQ�EO�@��N/A��IN����Nt�Sh��R,��:�qf���4�z:��ZJ��R�Y
��c�X����F3V�ƣ���(j�'%�����2��P��U;�v�,�H�c���'�4����̷3�\�{8[�;�H(F�+�dK����I!�mR"~�!I	)E���
��`��|@-�Z��,�m��
f�h���p��_���
f�lC�hl!+��?��Q���f{l !�%
�"V�V�a*Vd�^�u��?���󸏱-c���h��RJ�2��_ @��"�jEVз�_�~?�����5�aD�C	����ٴ�����ل�R�"�@q"�E���=���"BJ����o�4����TV0�������}9㵿�x��U6��}�B@��օ��s ��LM>�C>��.q�e���%_�eP_) �S��y1�t&�	B2U�F��W(���wd���
��o|��[�@�MZ#g[p
�H�jWb�lfb��ڇ���}(�H��!��FpH�P��	��P@���
8�>>e�o��k�� ��/q�	��Ƴ~&;��,��7�?��v\���E�`�]�\>F	p$��=Lx�݄C���
�I��i���r��a�a�e��������<q�1~�d�G��`R��vj2�c�#!���Kl����#(�~�Ɉo���$�$�R@�*�M��"����3܋�7Iʼc�_�6�[�Xb�@�̠P����a,{l��\NBb_$+��˾���k^u�/�~��-�BķY}�;��J�d<��W�~$��l�<�:��g���NY��wyfFj����Gf���+���I�S��89��%5��^M^a���^��lL�g6� �AJ�/��h�b��*X��-�w(T7
�Y��cV�1z"9ߠ�GP�n���ݢQ~./GnLF��B�}_'�o�u�l�{1B�-28 'T���Tβ�����bAx��*�rUU���|�g����!U���G�üX����cm��r������(a��g�5�(��1ᒡ��?�3F�!i��@���t��ц{:����U�M�{�&lL/�����Qu�d(
춼���W�N��0�ϸ��p̿�y���BT*,e6�v�J�E�7�5������x��܇u��Z�ڕ?��_F"Y��,tY\����cX�����s�{���>�F��]}����ත��_��eY����
��m���ӫ8�yx����vd;x繋�d���(�G^�xp��6�X���?�bs�
�|�O���Yq�ؑ�#׏��RZɜ7��A��	y$2;rBIg�i�j-�=�6ۏ��\�
�Ym��k�+\��%�Dr)H�	z~>�OϨ����3�?f�{+O"����被��3��S�p��l쳏�z}���=���=��T�,.�oJ�Y���f��$o����c1…���,�$s��(A+h�c�T�xbcH��76r�S�4n����4b��I���HwJ�2���g��Ǎj��Fm��\�M�*~3[�e#�TAfB����p�djj��0N���(N���8NO��$eO���B����Bh�o�9����C��BKM
"�vJiPJ����X�A�r cME�*a�2Þgm����H�E���	��
�6��	���;|ٚ��q�ߎ�Nt��w<��T�,ğ'���0�*�����F���w�
��)_U'�ka����q&�6J��b
��e��"�{�g�<�����+��|�bhG����MgVOM��7+�Z �|��Y�y�z��8ReOM��=����yo,��B��Xɱ����RFU4���ƌYsDž��’e+k5���y���|tܚ�۱kϾ�=�SϽ��[�;�;�DN�9w��?�R��)#����<���<��8��MI��[���1�E�ߜ���+\�+�3��,X����Y����L �|<���ּ#��|���u��9!�w�_�U��<H�%/EU�^�ո�k����W+4�i��u(��T��?A��.?o�2[�\��";�ݲ�����������c�i��|�byy}�:A|it�qR�)�����!�.��k�o�.�L������:Q��!xo�I��~B
a&���.�"4ʪ�@س�L�C�N����D�J����XΎ��_�Y��6E8���	=#)��������a"��G�͠��Fx��_�������!H^N�Q1q��*�ώ���e���s��'�eC��<ە�;I��t�qש���c�À��}�9���J�<�+\��:��R��K�UYZ�����P����j.�s� �
D��E:�G�%v�C��`��xkΎ�~:��n�o�T�LB�r��/��H�l�m~�\�U���Zr��w����Ie{��<��N�����q�"�Z�XY&T��҈b
��%��[��!{,ړ��9�[O�t�w�<{�gለ�[���8�~t
l���|))vS�d�}S��\��<0�*��xL�n��E|��Pʺ�r�2���&W��ndo�fy�K��o��>��R��� cS��(�) (P�*c�Z���ZS� JIۆ�	hrx{�b�DN�6�ِr>ł?l2���g�����/�R�X�J�[��P�T�(�j�	��_��i��P�d���!�M������
�ѫ@?�.+jc��vtrz�{��0�U/
�-4seZ`&ժ����������9�k>~A��4/_	����K�䱔���#P���'�-Sk�2c֜��رd��Z�Y�s�֯�ˆ�Ͷ�m��iW��;p��x깗^{�}Gv܉�:s���/�B*�l�"��	��fd��N>D�B3�dCw��0�2lӣ��� ^r�`O���3��Ǎ��3"K�����;��v�Ϭ�a��L�x��]LQ��|�F�w'��	qݹ����K4b{\G�X�_)���ly*�*I��8V�Z�>
�ɴ"m�C}NE�7���۪]
j�6���;��ad�O ��>'��t��zN}[���ݲ���݃�N�/��@��X֐�Ǘfe��s�����9l�VL�V�"�3N*2��Oy�.��u�
��OCd�2�[v9��\'u�{�x����82�e|�7q���*%��YFvr��W+Qy�R��:#�ޒf����70ޘ@"��Y�ԑ��Q�[[K������gΆ��6�m*ɳ@p���`Hl��ْ�6�]i����5ĚM��\������~
�5H��6�a�UAdb���I$����V���us��_6��Cr��UL��H5���˧�fz��@"��I���%���LnJ��wCe�B��ȟ0V(��Q(��q(���I7zf�e`ep%��B�������R[^%�4Ji!tG�i7�7/�h֐�	�]+J�=��C���eK¾;����*��p2�j��Y��j��ݎ�8md����fT\�Vs��™�:�X,��K�ȉ\�@c/��!3;|w���;��ULᅡf�|�+w��SXh�~jS�R�_�����ij렀G�ΰfd��"����7�,����Q1<��(Z�t^j:˙t'�5�V�)!��
���܌p��Ujv�>�m2�3Q$RQ���搅��E�9��ULᅡ�YVm�U~�5��e2���y�f�c���2>_��8��|�X��d2�~>����ݳ�
��a`]�vN��^
����Z�Pc1nr.,�1�}"���w�E��&���BY�6�a���i�̻�O��Ft�$A�}�%h�0a�|��p|[B#���K!�_�q�z�&vN���=3��y&��R��SE�-|a��]""Q8CG��‡$�f{��㶄0+KVGjr�V���̓j#��!� �Cн!9���7��CX�r��_�[���@,��F�&��*��$p��2�a$HPA�������/�qD�"�J��P�,۽Bh:�`�R�E�ۆ�MB؝a�|�L驙��uiHZ*lt)ܗل�,χI���̴	-��Ѣ��'�a�bf��Xs��-LÙ*xJc��L�,	�>D$*hG�V�J��)�1�77p�� �jCs��ڼ�g�5A@p074��0�����仝�
�K����(ԟ�a�* \�T�g@�#S�X;E�X�G����B�+�T[U%��"�[�F�n��T�at][�7����͓���I4dbr	L�Rl%�p�*M�fFU=�	�:��Z�s��sp�Z^;]��C3v��d�JZ]YK�����x�:�x>��;�[;P9
v��U;'?;����<O��|�G�@&b�b�ȦU�0�yr@�\��N�>�
^iS��D�a�O6���a�E'�Fϥ�������{N���tn�oԝ�&��f�
�Ӧ���#��7]�}T�&��"�1��-a�hZK�@�4z5��Pk��A(�Ơ����Y��Ǘ_h�7a��&�����w<�[u�l*	OtϮ�<���ߍ+ɤ*y�O֭�a�l�a�Qd}�0���	�iQ���Q�(Rc�+�R%ȔI��sp�~/�
��31�v��ղIp�ÐPv�w�~�(AC��D�1�0Eɔi�*E�2���O�FR��!R���9ۿ��f���*t]�G��a�:E=n��Ф�,ɺ���j!��,�7��'la���t��'����;9�1|),"*&.��m)i�2���jg�C��l6�-�HnL�,M,M,6�F��ޞ�f�و=b��#�>þ�2
\����B}h�61�F�ff	�>���<O�;~��jW�[�D"�t��+�*N�;�cf޾db�Ҋo�V^����|g� k�1k�a��q�n�S�&���]�*#Yy����r�1�J�5�ھ�� ���vmzBkЈa�VF;FX�@$��۷M�Xޕ����yė�L ق?����eO�~9��io����d��H�J�8]�����F�g�W���Lgq�:n�V)�r
�����c�kχ��B%z�([̱8&!�t)��g��F^P�D�JUԞ_j�
Ĩ�wj�)�u�=��������$D`�|J*i�M��3g�"I��j�
:�3�?��d� X�F�c�B��Ct��Y]��(9�1�}H�Z��� j2c� �!�L��b�u�O� �Q76�$ԪW?��v��-��l�IuH;��#�����.�
X
�,u�}ੲ�P�Z~��~n�>���a-z��L埿��#�gh'��:!�\÷�l�)��g�u�'�F�v5�������j6����܊�ISW����Nx_�J�XS�kA��n���H@������)&�f���s��g1��/�I5B�ц��OۨՒ�9i�Ms��%�X>���J8"�b�)�HI�Ȏ���Ԉi�1k�BZ��E#���کl�.y�� � 2%gN���+z����4���+L��u��ЯcY��`U��t��r�Su1�g��7J�!V�bcr3����SH�����0��|a��u�r���S׊4!f�Uz��w*�~ڋΖ"V�	U��b e2���Y�sk������d�A��%�h���j��=y<�ƇB�B��iA���<�d$��o�(F>�j!��L{ְ����kҍ��!�O��ɦn��dU��:'{g��rT�ӽ�g�o��ç��.�#��5	��|��>^��M��*
���kt���3���OCg�c��9�e�Rc�,qF�!�]���7��ݍt�Уo����U�;C�W�%�BȞ�NM��bj�Q�Q��x�,_0X*�`j0�ϐј�L#�#�P.����� ��0�ȕ�J�ڧ�C�o6Zv�i'u���U)s#��∙
>!�P<.�+5v��c�u
)f,We9`��9��qgB�{pbH��_�D)-�j�{�M�&�Lf%�v�;��Iʮ���s�^'��mo��30�O�c�*WUWu�g����<F�#Q%�y5�BvR����2:!���-��ku�
�l#I�R3�Q�gB��r��ل��Cui�la���:��������{>�ر8�ܓBZF��$n����O&/M�MˌYs�bՒe+k5����ʗ
�ǭ��=;v��w�p�{J��K�������r�̹��������}X�r����.�fd�1\�ffɶ�[�4}�$2hȰ��1�*qx�Q�c&��Ύrr��w���~3��Iޕ�r����7s�*|3QK1Jܕ�2��W��))WS��9�>�P-
�զ'���F���'I_s򺦅Ow����ۃ��<'���L ��m����[f���N�v��-�yGR��H�x��q�qt�c�u�
�F�(���f׮�=V���B�P`p�u�������=��/�
#=�������"	c�*%��YFvrN�U�JTީTE���� 8�~��>�J�lIIi�M��3דԒ\�?�O�4���ߟ`�9V��O?y~<�U�wUE
�)�M��Vq�?vb�">z����S�g��C���1�;j�I�0�(>��f�V�*���|�s��ݍ���*H����* 8��BKωg� D�ϫ�RUdJM����tw��|����U����FB�Y�����Zm$�K���4y���흶�N��Xɪ����#�S"�j��J�R�b�X�}�ZOmLA)�q�i�jǮ=���OYϫ^z��;�;�Sg�]���b?Q9�Z>����A
#ӎ1�T��(43K�}�һ�i�dАa#�aa�Gb<��	�u���5÷�Z}�]�~;�<��� �΄�azw��][�FE1�IP�)���B�NI�ʘ���sm_�c��@�6=�5(bD97��8<�H'��nv�{8�h���S��@����	���D��=9��i���9lDs���%��w�yP*�I}��eb�z�&حB�B�P��s�@1yP޳|>_&$�pE���GY��݇��@����Gކ &K�(�#
�E�Y!�5D��e*y�[%)��5���
��S�l�}!�k��mu�
�D�{.�����ṹn�d=Ex����K&���Q�:�2̺*Zn�������7���|��Y��-�YX�q.N H�G�Ճ�`m*�1�F�1��Z)��
��0S%��J�.~x�;Z@����hPZ���78s�On�*�{�G@P������b9V�ٍ	�f̚��AA�T�	�w�\^z���w��̹��|�_
ӟ
�%ʉ\y��(,Dɔ�<�E�8��2Ūo6�lU;��)�of@�b�G6;I\N�4��z��E����b\c�qO�<({��,�."'��?t��X����U��X�I�d.ȝQ��դddh�b�r.��b^��v�d�U�ˀ��Ю՚����}���v�9p��Yuі-�R�����$��T=�%}h��Bw��YeVt+�e�X%ccF���H�l�r����[��F��λk����Sj�|?Zۡ�cw@n�0����U"�����-aOq4w�}vq,4Z�uK��`u�ϖ:�����eB�i2�V<Tw�fAMit��x�X��Ƣ�(�i�ȣ����9cҭ�gd�|]�	�못�A{/đM�s}4��r�%���'��!��8��uc^	Mqhn�_�%ndt�Q�0:���}�i\^�؆�{J��9ʇ@9�/�(ר�E�0�G�w%$���	B�*�IzYXr������	����-���%�B�3��uM�~h�ٶb.,`HU#��������R��������֬�i�����~�����þ˵U7��1��F��W
�A��:'?Cg�x����Y>H�V\lv:�F��,��g�U�)M��Yn`�1��裀Ji"?�i!ꐞˍ�8�wc�cQ����M���Ϫ��m�@��+�p���6��ݡ:�Q�	�kr-�D��jY>�н��'������e��E��jsd�+v9��j���YX���I�X��e���f������7�zrS�ye���;�d%�UW-�j�����$�'1~)�����/`j�ơͤNK2���e2�L&sw�us����H�PJZFvj� 8e3״˗
���Ǯ�;��SϽ��[�;u�r�z��<�
�aEGw2�����^	��យ�d�+�`��6���i�[>�Џ��Y��d5�a��jON!�e�T»�	�.�w(��k�at���>ȸ��x�ׯ�i�q��#&¤��B�'�5K�EW7��X���"&/�vW�>���b��=���%"!Y�ϧ���M�2Q8�u+�	��|t�|4���@e�� D�ϕ���Sr|��r�³�d��2�M3��9/������P��ZXDTL\"%�R�2�>R(
�Ciݱ!��5Ƕb��ڳ��U�P(
�.��L����K9�r�Q�W���ܯ�͂^�4gJ���mhW�l侸�Q���h31O�<!ܔUa�b��jON!��7��T�i.�p����z��¹C���ֳ���X{���R80�J��Á�m�]b������y�Gj6�P��v��."HD�j}�:�O�/٣2g�v��`b���ll�p[�
Qǂ�~���AD@�b���)�#4M�i��y!B� �{�R�W���wgo�:qj+��JA�B���bNi]�W���5�y��<��bvN��r�
ۯ�Jj<#�h�0�p��8��oM�
�\���5Р,1��v�U�ԛ3����g@�f��@_Ä�W3��Y]�++E�n
��:��>���K=�kgv�1b"fr.8(�p;#�Y���E@
����EQk�@)v����G*�t��K��$x��&c�0k��M06Iޔ"�`>�6��n��P�3:�ap���w�`7���a�_-�ݾ�-@Ô)XaG�Vx]�*An��<�h��:Q�!sL�� �I-�+�*ui�utg��`4YXZY�<�=�Cd7�8�����֭������S_��Q�(���hQ�rr�mP�6�B�(��(M+=��H]��x5{o�V�����I��������d���#�X`Аa#F���x�D�����;���&�m�ݱWdE��k�D��퓹�
$q�<J�
Fщ��B��!�'�u�c��D:���TgR��Y��&�e�yd��A+ª����,t)=�S���p�蜹� �P��n8^)^�Xt	ԓ�(�b:1ss��)���o.�3���� �"h�O�&�@�dD�dߜ�s�?�Q(o���xfpx⟎��+�BoF��q=q��PC��(s>��Y��*u�H�ï�g�g�xf��`�0��������^�`0U�SHh�*�܏M�x-����5�R�*�����4�6�ǐCS��؞��ăR!>HGA0R���
�#�x3{�.Ap����D�x��>>��WU���<��M�u1w�b�g^��T3��.3�c�3�'eDTɐW���%9�~�gTN��]D@g����'�Wܡ����r��0��CX�7��W�C6	(�n2�@�L�}sK�F+�iE�����Z�a~�c
[�98�V��mw$�FDTL\"��"紾���R��٤;[��}�Ic�Hs�<-ܦ�R�W*d��|���V�m�����ik��5;Y��{	�M┹�p��۴q���ZrP�zt(:�k�0���̜�0�2�o4�_�Tn@��ɚ�5kj
"�_�+�#��u�p�Ky,~��v#�3aL��Y��,����c�&F�r����<h��ڳ�D�7)B!�QGFd:�N�Z�&�c�A����D;�6��^z�tz�iz�uy�n�|H��/���Z��nTܦ�Æb�#&��nW�(�e�lV.��T�S����D%*Q�؈�x�4(����s*8��ĂoV�U*�
���j���$�i�7CA����W��;�[�1�3#����`^Oy�~�v�E�УA�Ϟ�w�p�k�L���Ǜ.�׷�g���#�s'pUh�Vx�(:�b�B�}4��\��lG���3=�m�o��?C�f��*ý�x���n�q!R~�)���tC$���2dh�a��
><P�A�!
~(�S A**%��E�f��Z`S�P�%7a*MS@ሔ%(h�Щ���[km� [���`}]7v�$=U���Q����pP�m�]<��_B~�ߕh4�k3��Fk��_�J?51l��DL��1P8"�C
%t*�b���ZDE����`T|-7JS�P�6�x��`$I�����eƂe��6�eǞ��I^Բ�'Uߠ[�-�H��:E+�(�a��9�J�٩*y�|(<(rBqҸnh�ڹF���W���?����GbCF��q`2�Qʹ�"+rpي4�2Q9��q̉�R}B<!ڐeY�e=r��}��B4s���L� g%
˽��^��D�b�[��:�)�X��r�����q��&n��q�ѵ���t}�30���E�z�GzT�d���Zy���,��a���>WC{�?Ν��U�A���?㤔9����=��{���}r�oͭ2��c�>��`��[����:��/�!���]%�ѥ�!�I
�·��:�����=z��Uy~T<�w����2:tV]��j~�4'ӑ�w\(k��k�Ѐ���h@#�=��`��(�ىo3	���#��B�$�(�e��Q	BEŽ4B���rl±�@'�X��VY� �"��2}�⽄.
4F����L���
4n>Z��m�����}�7h�(�	SkZ��X����A�l��;�2[�dņ{���p4��C��g�ӎc:	��~0hȈQr�5q�_5���M P�P !
��z�3�T���	;f�!���bÑ�����jl]�`G���Ș8�G�'Z<�좷�x�ۋg	��f7�`�U1kT��!�eP\��+Pq�J_#�mbE�c��|=_���i�3���|����~��o�@}��� LVKW��FW�-��2��ʳ�@�O��Y���A1�̃�a���q�y:�"�Jp&Ys�-wq��m���l�#���|
*=�SCr�q�.����uS��%��)��
v�(�PH!��Lj�R�i3���-y��(�=��⸓锹�Δ�ٓ��9�~�u�:��J*�U�7}eȉs�{�ט�y\'i�-6��ړSHϠw�hz&�]O��r[O��{�i|��[%S�00EEW�C-�yd�:�xL�ҩ?[
�	��D�\��� *�bJ�%���t-'0�̆�tJ����f.|fx������i�w��
��i�h�&�n��O�A�F�M�JӴP8"��4J�T�Tͭ�6E��qP	.Gpq�JL� �C��u�4��.���F���g�@�|7���)@FȆ޷�M��yw��z��T���F�
�s�Er^�K���3��9R����=��4-�B����|��D�C1��*��wV��V|{H�2xW��QGLֆf~�l6�`�$/�k��=��8U�v6d\Q��_�N�pPi�����x���ξ�����b��B	Ca9:�p�X��*m����Ҁ�15�I�y��Ŏv���_�~�����0��->��GCd��L��;C�\p��׎��t�7�$(�
J�Tbv�b�7J��s����u��c8���nv��jP	ޏԲ���k���78f��X���}�K�9�~{/
o���p$ݳ����
v��9���2������ݖ�`Z�sw���k�e�*�p������Ãs�S*U����A(�����N^�!!�<�z���@V�`��?��� )	�,?^3
�#?v�ӂ!|���HG\�=��1�;�o��
���D�h@g���g�l�X�'|	�}����E�h���A2���]v����i����T��Pna��>�7h�(�	Si��
GL�*c(2efǥt87[;
p�%t*�b4���ƱU�1wP	^�V�8M�[�x�^8ZD��u��S&!i�����V�&ڨ�61��.kj���� z��e~ C]�Kë6J4+�*A7�?7�ur���%pVVVVVV�^��L
�
�
�BE�d󭭭����
��m�3S}LnjYs��Ғe+i5�����~-_6lNn|��=_8�U<�SϽ��[��h�8���م_�UN���j'J��F�M�#Qhf���[zS�ĠaL���(x�LI�v���m:�I��,[[��j���:�/q�'�>��V.ׇ�!l-*S$N#��HV^!���rTF�auGs��+�B�4Ԇ�@�`##�X�@$8�.U��������9	��&r	�c��˗	�eG�مv�76�6�ͺ� o��)��`(�
gc�O�^�x1�'�Br�O���T�Aq:)A<ּ�#�y�>� .�o*��q��Z�"�EV��$����S���^���(a�;<�<ӟ���)��e`8�%H�����!G�
1��H�ER�|��0lt�O�#���?'�P�5��,X/�����Kk9-��JB���XUi�\��l�0���X��v�	�R����`
�5
�\N˽V!Ȥӌ\�i��-&�����E)m���%�B�;t���RyW��
�����X��(�,��vl���@�֯/S:�����67�U �d�ᄎ� 
[���������4k5#�
����܁`(���OD��U)�/��9k.����S6tބ��ȿ�I!�ѼOC�K�k�X���4���x_[R&p!�-KY�C= �ړA���U�B-��݋���ι��GRsƧB��j[��|�j�dʫ�h�@�*�y�
u[uw'�+��ک���,�AT�
�բ��˨�hիV�����i*o����;$�~�X���6��`ƭ����C; ���`�♨��+s)
,Mi��_�I{Jېǐ6P�'j��˖5o��[��:+�ŭ'��#hLUĔ��^����!���p�)��J���1k]�i�J�����|E��{j�-�r�V�sAT�"C���(j�c�,�d��W�<X?%�:���	��'��5�.J��6k���HO&�z���2�y[m�9+��.�5�[��[8�~�K�!�`;
��rV�*JB�~�[��;��+o�.n	k0e��{yۀ�a����5@x�[F�<l���a_U��Z*kc���vlȝ�)@��ȺœE�!׻$D�f����R�f�!k�z�5�h�S,R�+�;a�@J�Z��:��vJG0P��+�&�HS*�%���M$,�g�p�T�"���[���\}�j�K�%NњwiP��7rv�����/]M\yje6P��WF
�1��9U�V��5'k����r}��]�W&��HC�"��P��f��]���d��tOf7��
ď_b�rs��T��@�"��LKQd�"�q�g7�p#��Ҟ����[��WνVC��T%�)J41�2u�I��lқz�%���{TY�cwA
0�쭫�vzy��3����XX�����&�!u����G$�
�Ph�y�R6�I¤fK�i��̵�ٓ��������c$�	)��?N_�D|H-�	��}���K�KAm+ۑ���#�'�V��׫$z���Z��ZA��~��.�TDݔ7��̪j��y���dM���inh-UM��@I�M��������oJ����(���Jӝ��+�hp8Oܨ�o�8Pj��w�+M�e��1wN_��iy�	yOK����[�P��%P6K��i�Wص�>"��Uj���n���7<�����q�w�\DQ�G�v�����6n��q��V�:4�FW8�a�x<�(c�E}�����
yL��*V���4h�A%(���%�R�â�F�M�K��̠3��0ΰ��GFx#��1#FD#�;�Ӑ�д����ܪs�:����gr�;[kۻa�3Q�X&n/q^��2e%�P��$�*cj�:�����@n�Y*�U���^��z7��Fh�ΰ.|���P�tŀ��	D�W]:gӼ��7��p�Q�g�OFA�1�>�ep������[Azt�u���.Y�����E�a�6j7�@a"ġ��s��s^G|O��	�ǟ�O2����H���d�d���d2�1�1�ᢄg<a���~m�)Ft�#���:2�B*���
�֘�Β臭֯-;��B>������]�2��[U1�gi7ޫD ~�,/(��?�}�=l�PTҤ�V�?h�r{�e�kZO��1�q��@���\ʀ]��tI�pY��`([ ɐ-��("T
EWb�b�c)U *U�j��o�6H�$�A5
��]f�dSZ2LoZ�\��Wju�}!ml��,2c�K�z�vN�I�<!/����ɡ�𙰈���DJ���ed�tA���m�㮝�d2�L��]��bE��JYEu��N^���-A�ԔL&�w�	I4�1$2���m����}�;�ޟ/�ɫ�A2H���e����((���>���w��~>.�:h-�Y�8���hL;��)\��ы�s�:�gJ�@��<��_�UDz�8��,�.j��7)Ǐ���&��E���zy#��Co��;�Jc��(�������SEVjr���2��:���2i��X��Q+�Mt��#N')(�njה�\�ߎ/J3G%�%+R�z��-9���Q"�;���vz��Q�hq�~'yS�\UQ���k�Le�9t�*��cq�[����h���E����y����)����-m���n��k���?g���<�c�՗�P��S�nv�0��<��#\a�|~��]fUC=ҭ�u��׾>W��a=�Ùa�DVy��Y���tq�5����-�S����������W|9#�k?'��hL@aZ�
�0WX(,Ś
[v��ه�8rZ9;<�Ļ�m+��Տ%)��6
����T�L�w�IY%9Uףz��P�ƋT�����x�GW��F�w>�'����S~�2dĘI����]dҀ2�l���(�9��j��IP����oE�����j��)��Nnm'��Kՠ��5�_����A��bT�L���\�+X�_6�S�e�_N����y=U4�q�ީ;���蔮�a�=�#��,��T���U�[�XY&�o���R�t+Z���X���R36���h&���C������Z�w!i��bN�V��Mj��Z�>��
�T�N���T��T�����嬇�y�#����he:��ڭ*�_ �P V"aȻpf4�v�BqT�U��/B&V7�bP���F��������./Q���W��5�����J�޾��l,�h��~���Dv/�K�4���q�q���yr�����WXԂ ��͘*�L�lت]�r?�c���
mT��yt�N�ų��B@Fv��;���޼\K[Z�~9Y�-%�L��sE���k��]e���&�Z��c@��Zn>
�4{"�3%)�gsq@_�"z��B6>㟇qxNr3L^��j� zd�B�c�9��|��' ��@�4��4�d���b��9[��
��&hn�y��#����0���#������L��ޒ'
 �v�
��O7�͉c|'�f�m]Й�1v�1�FB�%�a�%ge-s"e��rt���&|]tq�T�
�K�����=�3,���՞,�OK>+��lϸ�G���HL�t(Um$Y����g@�Y��V�-b�(ʹ_�����Hn�a<y������A��*9V�dG�}[�������o]�����3Gn��:|�ԛ���
���Vߎ=��8�.ڲ�R*Hj� p*a�QJ���{������
�@njc,��:�d����'�BO�xs�.�1U��Zɺ�x���]�\���2���up͌+d�iI��QV����0���ej2��΢/�j�O?��tq$z��>���:�Q�=Q���Êu��sprewYxg����M�e�Ua-�A�T�F)-�nR�)�O�z�42S��3�(a>�l��7�y<�G�"�J؟��}�4]j����|�2Ż���5p#xi�-�b������w'c��}|;�Аf�R��NE�(wӀ�����HX�D�#QA�5X��!����J�É�q�hE,��s���e��?F�qq�[�T�7x��U`����S�Cï�P+��hL�A�Y�+�y�C��M�sޗ��K��z�C'c�5�s z �ҫ{Z=Ho���~�i@?w�#Cg�:\���w>��0f�J$�/gl
s�J(��)��Y�V>���F�����lt�h��U���:*���J\�
��˴.�a�,�m�1ӊH�����p�m�5*	_w�W_�=�h}�␹�/O�iq��-��g�]��=k��Q.7�S�3*Z�Q�<��Zs#ф��eو7�،NG��}�B��4�D?!<�*܊!A�
't�L��H�����d�H�=���t2��v佲��89���tP�[ظt�H:C8/����(��p��S �M�k��8��
�;�ΰ
xRd�e<��8f?�C�����Ӧ$~��(9�q}D+b&,:O�ڸy� N�$E���e���D�$�S�ue��3������F�$�*vdρ#'Ϊ��l��
�	'�6c�+�9(�_A���W�
N�w�&+e�i�z.p}3U3t�L<Un�x]���Y�Y��b�6*n��Qt^�XP���Ht+���x~��o@�|�}�O$�ntO�ʖ��~08��Vώ=��8�.ڲ�R*Hj��S	?�RZݤ^'�G"W��iP
�@�+@
\�~�'+y�yqxw�g��S<:��#ZS%�KA7�|��{�*�����0�d��5}�}����	�Cd��
o1
�3ͼն��g�RAB�q����%����Εb�=�t��$#�t����`3|�^9
�eJ>���,��b�.4r#�Qxk�{",I$=�:[�1n��^k��Hc��
�a����G�t�o/	�p�˲��o��z:&�V�3�>#�x��ǧ�ky-��c����Zݞd�[��
�f�;[���Q�g�G�6��,'�,c�y�|��6�wvF�:��!t�V�y�`�x9fQ{#(�T��(���M�}��6KT�#Q�w�ef!���o�B:i��V0��J���E�"�JXJ!Ѱ�b�����`“eA$��D¾�BV?�֍3�*���S��V'�=��W][EBw��'��Y=333s�{݌N_ׇ��%�F#��q��T���y�!"I�L�ZO��N�Q�3汚?Q@�P(J�$)�QٟVJ*=)����DZ���No��+�Rz=�>���d[
��u����D�p׆PG'�V�:��a2j����Yz!��$<��N{R{�p��*�xoA������/s�|i��ߋ��S7O�,�P�.}�p>��bIVZ�!��V�(Oe�J��T^�9��8�7���%���q'���<�{�i�CjG�I���K�vܘq��|R(��Lr6�������jƒ?�4�!Yd��[�\��m�=�Sr�L��*�����.q��ˑ���^����,k6wt���s�<��nJ���P�666666����T����+�6�
�r�x�	���66�n�q(��y�y:�������^�	P��J��3��d0��T�����@QEQEQ%�)�j��A�GL	��.31�`.�	��*�&f��.�t�A��=�Ĝ���q<���}�GQt��eo�=��v�W�Eu^�'��\��{��#=�eg0�O?�U��F��h<�M�sJ��RJ)����RAR� ��Ǎ�ƣ����:�ܐFS��2�Wd��-�2�Є=�ãw����Q�����XG?D�A0��N?1Rɽ�JT�A:/R�<R�p8w'�ù��pd���=6�����$-�{K9���y^A����&��9�͚�|`���z]�?4������B�#K���On�S���S�$@����7$T9.]����e�����/����b�i�Al]*4!r��'g��L�?ϋ�a%	2A68����1��l�Eq"���V	�F�u�m$�]�]��\�qS��w�8B���	f��Ҭ�u���o�;��^�[�;�`���>٣}�����}����6�_v��]�f�B�۳����\xѹ'1��h��*XX�k�?z��ķ\�*5�_���]GO�M_�������$`n���=�\]�B(F�dh��P`Ԇ������_�YR�[[���E0:F�|��s���r��q�MGt:���dXv��Ƽ=�q��wa��fZ�zq�^�Y{e�>��jkŜ9W
�Z9O�5��~���ߟ������hi[�h
`?8��a���-��ǃ�&=\����c7D80^��jRĈ^��T��p���v�Ҟ�-��R4�f��7��M�1s<�7#�-���Q�p�6�խ��+{ɩi{vy����ʃ�O�<��4|%��8��Ez��,j�����/�撪�"V���o%�# ���3+�n
a���:��A.�퉞ʜʀZ���b���NP���{�<����6
�H�~�@��a	�#ښVM�r�@��r-JU
�<uH���HtɵW�0�f"�y��86�k�0�X��\ �r���E��:\�Dsm�x�-���R*[����6j�c��
� #{�d{�7�z��W�U�wTY&Akݫ�S@y�5�"�ui�L"�9H�P�`i"o����+#�̙WԚ����x>m5��~g�E�K~L���j�����p�F����E�3H�)�{6�zm�����Q�@DG1q���PrmT-U,A��R�2�8��׻�A*mdy����O�+���k�',�	|�pl�#*�9dw������2�����R�a�#�d��
�+e��7�E�s)����ڠ܏��б�{�.9e*u�wl�M(K80�����f������>�᳍(O�dX�'�v*B-h��\�w<�򿰷�M9�:�a|fk�ӸуA�uZs���h;���.[GDWT��g����[AOUF#�׭���l&�h�hЫ�v�����7bե+���(s��<��ӕ3u�0�i���Q?�Bz_W��s}j��\V;_Ӷ[\>�0�-{'�ܬ�%!/=��r�_\�r/�?X�d�9tcz��V4�o|�!�1o��z?�:������*�+�&�b�j���1@b��~$YJ��h2���TQ��K6��Qlѷ��Z�,?m�ۄ/�m�2�yPw��2��,�Np��a��� wd�&�
�2�r��4�'-���*s�c�<�O�q��@�\S:�:E��R�W�^q�y@J�����M�%��e%q#QU!�bx4��^ʸ�F]��
���g#D��4r+������wև�\�/���p��s	q���9W��L6P�t�΃>�b�L�t���=KI=my�Iz{=5\\�
��ڔ�Y� �b�˦^��Id&�9�o�VhGX�)��۲�R��َ����
��x�r��Md�A�P(�
�4�B�Xb��l'��Z8vj�eAn޲�"5CZ������s��(<�03��tb�o�;bbgs��a�0L�OÓ����p?Z�<�}"�aa�:X��$ǯ���t�+Zfԩ[��HQs+n`M�W?�u�����c��bJ�'�9:BN���$���9����V�L��B��B�9?\�R�'bW�b��
�1
��R�Dz�CY���֧v['�jI�Bi
���T�`bZ�0h+�-�W-u@�V���{�����έ�䏬'���E4hN���������A(m�\����*��|�'� �>I�UaӍMQ#x�OKn#�N�L̛�S�Q��{6����b�♱�P��i`���ص�A���Gtm^Q����b����D-؜c�	��mΩ���6 �o��Q�����Pw&b31�o�y��
��`��H>KR�A,/W�m��8-��$�5Ft~j�����	�����E`�I~};@�:=[���vF�	s����A�^�X;	�a�Q�赎�K<��Cs���W�q֏��J�IMȋAJ�X�0�����}F#wr8�_׽WB(Z\6�)AM����
�� &�N���__)���}B��;8������Ȧw;xG04�"�5�4k7��=ԟ����#1�����q?E	;��������H�B���:s��:�k8PN=L��2o?k�޻�����Ϟ[�û��۟�ן��_��?�t�H9��"B4;sU��pK���2�h�/����]�%&g[�{�l���w�y�1ɑ�J���2���9W�+O_S�W�����׆t5�I��oPnPQ
9�N�jI���&d��/�=+e*T�Ѡ�~rsk
�,زc�
	��������!�+�,Z.�LU��L�ލ�jp�}aRM��Ijv�i���Ӡ�|_��߯捽�lU�;�F�~>X�AڼV*��bhH��>�u��O���/w�������?m/^x��?���T��+���^� \���|k�׫���P\�xe�ϼֶ
��m��RR�C��Hv:���~e��[�n��`	�u��¾��+��`?���h�D	�����F�a�B�1�g��[-��&�	k�'m��o/v����n���c����&�)���@�F����$�۫�]~�]~���������u��-G�&Z�)�	Z3L�V]ʅL�D�\�J�fV�/7E�5�{�_�}�^*��������©zy���u'�w�Q=��Ex=y�>��9ju���E�U�֠�
g<���l3��g��T�BI�v�a��Զx%��Q(�"��J�_�R��!w_��F���ojs,P@F�qdE��=AD~�8\l��d�3���5��m%Y� ��%:Y�=#��B�7�^�t�UAߗ׳Y�ˬ�4�eK��A��]�zڵ�-"�־�ISIJ��Ze7*�ϩص_���ܠ��Jσ������V�_.ٲ+��I�^1c�Q����ؼ
�H;�,�*A�B�f&���C�\A��ֻФ*b��g(w?ﬣ�B��xr�v�]e��h
�{�I�F	h�V����$;��5N���	�(jS<�WLi)W��l�v�+�d�%�-qrE��#N��Lp�C�qQ]��V�|[[�c��o��'�'B�J���쏄&\��,���
l��7	8�kW�����|���/�2"A�I�.B�T���/]� Fc
kB��-IЊ֔�'�kB�A142��E�+Q�Tt����W�T�Z�15k��~*M
*��2U1C6���#�N�
�p9�Z�̀;�<
x�:�wP�@�	e��I�B�h8��Mh*@��h@�PE@��WB����S'���+����(�ɛR�p��M��`��V��H)�ΝP%TJ�r7�L:��Q��q�(��΁���K�ğO��[�>�^
��=�0��z6���s�c�@]��f��\���K$D�xI�K�*�aǝ��`��\��~���.<��DfF���W�R��K�^W�E�H�fjk�D����e�I���P��i�&�

�oS[���׷/o��܃��,r�M�A��� �z6@u��`��ߌ7�X'�$��[�η�9��F�	P�f�ĭ����_d�C�|����r�A���c(�����(,k��=�b1��#��k�0$?����!�_��_>�����^i�f���\bT5c=�J)LEW1T�*��J���b�H��<�64�D�Ml>(��?(���*���$`��U��U�
8�j".��W�x⋈"����&X���*H�w��`�.Bm���T���b��$n��n�|���%s5��.���w�uk꡵�=k�����AWT��约Zl������U=V�`kMܑ�q$�H"��Z٣g�5�
�Y��gǞGN��0p%;~����/�f�t�Y�d�\u��u����"TDU��W�r_K%R�╬�J�~e��U�:]�Mu(�9�_�>��t@� ����uO
^Jw��4���W�"�Z)�Z�8��HLfE����&����0�Rv;{k�^xy��{5��\�4G����)�JI��&�g{Ai���z�xwm�Ӻ��[��Dl�~�h� ��>1������>�gu;��G���]'����>�i�@�6�Y��p'�\��8
W�����+���8,�\�-�c���������\��/�X4)Nq}ԊđC'��%׸�jZ3�Z�qX�\T�jQ+�2����	���0��B��Y��
չ^y�?�)P:�|�2����R'{ʉ��3�X����
�+��Q���B�U،�=](�*[�{�gJ��9�ym��3�� �">�+ <��i��WBx�
�+�N��7��^�+$C]�P�%�j?w����}���!o����F�u�o{g�}�+qޝ�~���'�K~�x��sQ���`��c��ޕ+��'8B�1��g�4��ip6�q��ܯf����2�|騪T
�:5�Й'�S���#B�u��C����
�+Q\L�bҞ�3��c�0���L43�=�@�1	�M���!��w5���B�0R
�u"4q���u��я�;��?�s��0�JN�(CR�¼Y'~�$��;�0���.(����]���S�`���m��e��-�s�Wx����I��PB�0�Ϛ�^��&r?�0pMGw�݁��p��K����6E��'�0��i�k���Q�0�D�Ƹ;Qf״�|^�!�����._�܈aeÈ��d$fX~yHri�(��_r�-��*�1q�[I}�V�N�A_V&����J��>7�x��(�YN �s%+!:1�j_�]	�A�pb7�+��K��uH@��n/��ʑ��Bs%`���9��?�5���XM�P�7�3��0T?�"J�e���B�O�FL��N�H
�T\�:��A|��\OK:���b4���z�96��ml�lW��[K{�)�eS�i��ncڼw���)����čQ�h���@�)��4&Vm��е;�>�0�r��iЪS�A#q�02������)3N��l%9�oVgr��]���4��6.|�*[r"�sI��5�:�yl�>�N�c����*Q.Z�/�����gʒ#W�)����
�Ǭ��CK6���֋w;�*�'7�Э߰�E�	sI���#Cy-����_l�7#�]<�]]�<
A�G�ZnI{vbflw���:���ئ.�4	���bЩ��I�����ns����z���N��j��.�6h0�j��6�ƚ�U�\���I$��[`E�0k�wR�.�6U�
+}~��лR�d"5�������@TQ����"�eoa��-�o�Ŗp�qR��KS���x�}��Ku�(�b�����k[�2����T�J�Z5��kԠI�.�貫�������⭐�0�)���!ER9,�ylj��I���>�3��|��^32��gms��>����Xi8w�Ұ��`�,�ZKh?�c��Q�v�+�Z�p�˔N8)�qg��._�<���Y6\�N�4;��(3��F���J���6���d�G�S�{�Ȼ6�S�Xu0SR|����!&�I�Y�
	T�YU��p�<�24E8�"0^��;k��V��mE�7��5�Ϫ�*+��JK��
�hA8�}����&P���m׉���Ȏv�v�-y��̈`��@0�j,v4������P`�nť�g��PB�WMy4n�jm���KC�r3
�L��߲���
5l��e�S��N��؄2	�k�я"&�g�[�U٬d��3����J�E�}h�t��3�o�}�pH�9b��@�v����D0���d�`s����&�.��}γʏ�N;��M'U��m$���ws򓐢p˧�qW:�1T.�JW����:�MV<L,;R�^�^�rv[�
_�+�(�`�LXEBI��r���!d��m+�W�Ӎ#�:��cT� �q����~xX�����a1i��d!<��D�Bb��	(c=�d��n�?w��_0X�v�N�N4�8�]�����
�;�&���
�`��)�"�2IxeاU��z�|��H�qg�zdj��i�!�F��$gA�wCz?�	����6a�Uȷ"U]�ˏ
ִI	�(O'�H��9����q˩�T��c�5��k���\c�A=��Y�Cqo�Ġ�Z�*w��N0��tڣqR���|*i�G�}2.�l�k����x�d-�����=xi��ϑ�Pc0A�Y�¦��`f��w��<��nh����-.��w��.�S���L�2��Y�X�Gf���#$f��7�^4�!e�*��z�E���8-�����4L���Mpޣ���8r�4��{������8Oe(��Y\4��]�JI���|��4������$��1���X���L��hs��J�q����Ă�XJ�LQ�V��3��faz��1�0嚇��9�e��^3p��9a���:8�Sxr�f�i�fX�t�9��Kr0����8����|�L�֧C8�j�e�e�XCy)�ࠋ-]��#��ժ`�ۡj�TQ�ܜ�Ɓ̠H�� z����'qť�Aq���5�s�%�&��`�ۚ��'oxYZ{!����Ls��I!���A ��X�8A��"`�f0,0'�6h�5�̓s�Dk41ϱ+uՁ{Fvs,�8젱�w��\BN@�.={9&V�����9�-19��d
��lkI5�:#[i#�� ��˵��Y��&\��x:t�+䢜gP���q\_R��s�9�/��;K���ю�i$w8�``td$�:���"�3"r��b �k`
d��}�P
��jS�?	�
/,�2����J��^�̈́�t�C��a	mK�;-U��`_1\\Ͽ�N+�T�����&��"i
+�@k��b�RK�cY�1vA��^�CO�^�DC���G�J�s�鴖K�ə��V��q& �|aJ��<y�d��aq4��2�wX�=3�
4Q���RX%^��.Ɉ�D��2�V��t�D����2����h�t1'|�,L����d_��GRM\�2)km�)=��h�.ݡ=�����.�*�X��z�k�'����*<D��k�ᠰg�Pt"��w|.�3�C���7wf�lq|��u��.s�q2��������L>��`a�i[m�l���{��k>yV�xSXl��y��0l�]�7��[�ಚ6&n�O�dK���7��6��Nj�O��DLH���6r�r}�^[6SΫ���T�6�ڶ�l�ԝ�aH
��t&Mi����S0�k,yD�#J����߶ub����[�CY����2珅��/�������۲���B�(i�:��|�xנ6sUy�sv�A}t��>�p����̨�p8�P~�j˵�%�����$:t�C�teA�_��d
@���ڀgf�,���
0|&`�?�?E��W!��7�
�[�F( �t!�8h��~�i��2��&<��Lƶl%���7n��aì�Xjs�+6��\��~�#��paʱ���޽�g�y����r��6A@� ���3�JB�"!q��(�R��
��q��҇��呧Ԙ�P,�; &���ĐҼ�P����X'�]�JI����?-�3-�K4�]$�(-ɽMIbߴ
��xa`&���P��7.���4U7��
�0�J�|�I�2�e������"rך�}{&=X���͕���R$�b��Kױ�-����kAw�_�������F)�D�@�ۦי�3`4�)�e3�d����+a)�J?�̵�a���xQD���)l��n�H�Z�:W�H��d;��.s]jCZ�h
�;[�2[0�o��!jD�GqLE�'!X�h�w�P�g�}U]ۮ��WP%�\s>�8�G�x��}H�.�+&<S��$
H�p����N�~6 �M�#�Jkc@!�S�RM��<�_+�)��p�o�igSR�̑@�˳�Je갭U��DlP�
2/���|��ӱ�ySv*.0�$cuX�'��8�ދki�_�쯔��� p6�uzUXa)�z��?3������mUQФ
X3�mO˪衛/
�p�D7��"f*�y�;�=��3�2^�=T�޹�JsE/��	�ZX�\�ص�ҍ6-@`�Y+�:jMu4i�0����ȟ���GVU2}��Y�����v$v�vl����̦��)떖�,j|������ʰ���6����Q`����|���)u_�R������+��.��l~:���~�3���/~�'j"J�kU��
я|�P3�ѱY#I�bݦ	�h�S� �3O�k�~.���x�}�V�}�eo�@@H���� ՠ������h�ن���T����y������Y/��[����ӵ����ϴ��[�b�#�#��}{�*�@o�Ȁ�n\��2�jD��·�VO�0ټ�b 0�'�na2�51������˚��5Vb�����C�&��bd,��\M������ 	�y!���1v��q�����u S5:9	0�3�q���!͙�{� ����Dv�H��8��E���i^��)�������)z�(K��eMJ��\�+�]�U����#�aW��_���š.���T���$gG�+n����d��7.����;H=��t1��`���6yy�4�S��%��|z�O�r��*7n�m���+��P�M������{,��nr�����UB���T]�f�
�Fѻ�DQ��h�9�Ÿ�V�fuMis�V
�?K��˓::݁���ºgVw�:���1��%�d��+4�Z��}
��_��8�ay0;����Q����шbŽ|2\BVv8�-x��G�S�K�iU�])�`*3�B^V�p )�A��;��"�b�?Y������;4P��`�6�S�A�D�
�
Qcꮉ�^�]n@<�͋ Kw ���:O���[L�i�LϬJ��uYқ�&ga�����y��H�9W���Bq�3+&y(rBT�o?�X��lw�b�w�n.�%��>��lY�A`��6d5���߶h:��1��X@/�p�t���	2\ó�e�4SY���f)�Y���
J?T���>a�PM�vF�a�s�՚�pݍ�x7Q8'��e����O8��� +-~V�%a34�F6"]2���eJ5��:(4�
�8���>��h3����KY��cv����w���?g���gP㥠?,��n�Hp['+c�n�
�O%xj�]���P|�;v�]}�
��˷�ۏz椁vx[|2�_�̅��������)C��vl��R�3���E|�+�}�#=D�sN�Xb!J�9(� b�WM�����>O�@X�o0��"C�B��/�������A�WB�M��p��j����	,u���H%����V9��Y��Q��t�m
�]��M^�ͽ�	ҽ�g�v�JN�޿vB��Ս�����a�Z�yOoQ`O�bL#�K�`3y��t��
Q���H���ƈc���T�dz��ˍ��:�X�Pe�
�]Ŧ�/8�K\Ó��\5�7�G�W�
i���"�\����BL��������<��<H���Zae�G�r�q	(��	����B�¢~�K�X�5Ke�<F�$�M�F�x���7+�8����4������%�6�o6��������O����o�����E�I�n��V�Ц�^R,�0R��|��R��Ꮏ���o��t�D�}�/ܦ*tɰ�F
���9:&�eX�GAʵ`�@�٠
��iíU�Q���#�[lG"4j(�}��9��,l�."��`(�4��Ć�YL����#�Do�{q���f[`9zm�����2�]�THj���sU�v��›	��7����m��Z�I����b�^���{^���١�|�����ȧE���g迍'H՛�;r-W~};�%�7�@]�)9c�\��a�B9�T2jX�ec�m\���#$x���{*&IJ[�fJ̍W�m?#ܧ|`�E(�cC��� �u`<��	@ٷ
��W�J�/Q�lK��nh�|�̱��w&��E��3m���ܢ�Y���|^�I:r�k�`�!lZ�O��f0gv������	�a�a0�x/\��i��:�M��0�}����
���ĨY�D��[w¸]�z���T���=��2(У����/<2<3�ǥx��5z��
X�Q3�[�Ҵ^�(Mn�(��b��烈���/�Ƹ�����\o.�pͶ����̏+K��ϸ�Wߩ�>����ZC���1Kv���_1��A�?Ϧ�$RoQ�\,�s��+��NFvZ��t�Р�VM�C���"IQ�-un��` َ*�.�C��瑪�b�IL��?�v54�5N\ ��:Q=��s��ϋ ź�b�*���A;��c��$rZ[�aĪ��+�0猫���RNIK�ƖA�K�&����w*�ӌTt�_�K�t:	��,�ظQ�DE���P�;<w
"#��j�W3=^����п�U��6c�[�3}�G�
��:�?G��E�FcP$Ci2Ep���ަ($��A�O���y�]�����l�
KG3O�d=er
�7Fb*m��40.f��`VD�3���9(5��/qi��Bّ�Ҭ����S�f�Rdj+�� �&Ű^���N$��Թ�:i��q�� 6�\�&}]P���1N�S��uyD��Թ�M�Dz	K^5:1�.0Js��f���X
��Ǡ�F��b�>:L���٫Yh�JLz@kz�G8���u ��VG?f�[�h:�b�[�S�lZ�ƽc'5��@�[�LzoE`�$�	��9�� �Y��>0t����ѿ��ñ(�7����3��z�g��A�L��j��y�І�E/�\�uӊ�`դ�oPA=$�cz�i=N�t��=�a~1;C02��_����%1��
�2@�vR���~�dZ2%5/Q{~kK��W�^s/�>Z�YGd�9��?
�cP��Jq�H��V��G"��"o�h=�)ߓ]l�aƚu�Yz����Y�ݫ�Y�|���C���;�ռ���w���;֥�+
i���^a����^=v

|7�H١�x�w���9���v�e8R@��U�#ُZ���p�a��b�
�G������7:#%X*�+�P祆�8e�
�<4�@2xҜ=���)@����e���XT������kSw�Ww�Ea�нi�r������L���5X�/4o({��v���60�۳�E�����?�(��Jq�%��6��XNa��L�e�5}C�$m4{dz��j����u��(�N��l��/�S�K[��E��@��F�?�.�WȑA���.%c����po&��/L���C%�O�.iC��`�2�3�6xK8H{��Z�-�9
QsIb�r4��+%A�%R�L�f<5��iw�
�V8���Υ/^ރ�y���}@�F��������U�uf�$�t8^�o္���ηY#�oŦk���푵8^�۾c�$K����+n{i����&p�4����9w1�|%��ě�u�.�4A3�(����aE��iX�T� ��-�O��<�����wв��U�H}��^4Ր`K��-K�ߝ�=<x��aD8���Җ	�X�?��
���
��w����k={�����Zro�ۃ�y��CF��Е���f�Ф4�������-%��:N���� P�,�"�J�ܙ���c�Z6�2U��;;��s�3��v��V�b6��[a.L�3I��)A�}�w��{�x8&��^�^��O�����
�Lԍ�W�Q���,�̳?��p��s[{$��e��+�m�3*�r��g����&h�@��8c��"�"�?A�Ձ��.1V�|���Y�J7|A�}�L�A��L�a<J��}��o�
1fL�z5��6!��-n7n=q����}����	jX�O���'�[�2��L�	�h�~�Oa{0-��@���+C	j_d%�ȍ�<��i���R�Z0U��]�weM�Pלc�N��6ܞ��&|$&�e,y ��q�!0�u��l�L&���}i�æ�j�)3�gN�}�I��f4��<'��-�A�'s�Y$|C�F�L�(sL�_����3��D
"Ⱦ+q�����sk���͟�5,e�&���1f��QsK�v� ���
~o�@E{�j�Z9���Ƌ�6��ew[�@��;%���]�u�� 73A~����no�����t��@}����y{j�|~!�M�G�
�-�9/^m����,O3��VJ$��xl���~~�(lH|�h�$���^fV�uú�����K��vE9S�I�?ߛ*~�
�?�dhf��l�����5ɏ*?F���a�<�e��V���3,&�li,Jʴ>�q�Ic��m3+v�IJfŢ`��ѓ7՗'�]�c�aAZ�@}���1���b-���1ȹh�*8�/B�ڹ�ܑ���"��iI���Q�d�w��B\3Ҏ_d�����^�W0u�#�z�h�[燃���}��������F�~`"Gv��ly.��:"X^S�+㺂�_7��z}N3�ۡO��"[/�c��]\-�{Z�k�ST��\̙�o K�a��C�쳀�+�"c�Ƀ�9+!i���l�h�)X��m
"\�����^טGv��څ�Y���,���,���Ɔ6�� ���jy\�yL��qma��.�a�R�K�d�4x.�0��/����bK�D���<�d��@P%���������T�sM�M�A����>��='<߳fEf��RM�C��p��hf%^q9��j��� �֑��
��i�"B�����0�����MN܊�$�#t�
�Ɠ���QC�ɐ4���`_���WXUIJ7�k׮�"	��=���f;
�pHZ�O��"�B�$0
�F�.���0�p���NRL�b�]f3���QE^^=��7���Ƈ�l�7�\�
H`�E3�%�����
�L�~Ֆ�\�l�E�&�!���+"��
rH�rZ�!�5�x���{���X�����=��NB���f�%/�-7�^n�c�kJd=�t�R5��g��}ѹa��Dy�R�mxG\��W�o����D����S|��ˡ����Z�V^+�V�!p5���e�eu��7�<ߨ�ò��%y�Bʲ��u*��_^��解�>�L����rU��W@�)�.�a����6a��B{�M�)A����θ!'���Kdb����<�bl�����
B�@�D�˗����4Lj@���������L<^���_����%.� Y��eĝ�D�a]�o�9f�M���R.!P�����U�b�^ci!�\����"��	�a���iv�V7��h]�f���`PGC��3Ǿ`�*n:�ٓտ��=�T&��7&E_�
)R�:��(�Ĵ���Jyt˺�^�r��/�U����Y��GY�%zh����<шV+%�a�l+��Lw�W[����+ZU��ӛc����3L=%=�u���)T�(v.��"�F��� X1��Oq�C���_��Vz8�Vmz���se����P>O�,���I��&_��ܭBb�h���g�g�XL	�K�*�ʧfo������ݍ�i��w7i>��^֭
��m�ʽ	��go�W�$�VP/"o�@�z��hE�#�$j��������~x3ca�p�ެ���t�ާ���z����RN�ot��P&s�:�u�ž�7i�F�9�r�Zz�x�ю�v�����}2��K%>Q�?��0�b��M���U�0�
��3������s �ñ��V�ݏ����y+
����n#�L�lW}{%Q.�B�A(� �ȣ�,�X}=�,��t��a�t�0��ɷ�b'	ė.H7���.������.�]8J�\*�7���9�7�G�������g8���<�|��+�)z�wKߒ���V��N�OחΧ�[���k3��DŽ��C�Dp�t�>wG����1c�ʺ	��7c�w����S�</�
�W�x�MW�W�a5m(5��V&.�j�6�Q�z��%|N�l�T&G��V}[!Y*��I�.�"�)$(//�@��F��d�K{�E�r�#��eݐK�.�T�r76�%)�j��ӳ�+��y�$hv���`�=��W(��?�Y��v���������p�pɱPk�Ah+�\��hx�Z]�=W��G.�n���]�em=|����\�V�KR�B��k4�у��`h�B��ɩ�:��'c��{?���Jo����6�ưȤM�j�tߜ���5����Bʆ
���f-XaQ4�u}�̓����W���m�4����ŵ����q�D=�;{H�$֤ӡ��YF���(q��_;�!����ȚD��g�ZA�c2�=��f�I'#�3��3I��IO���+���}��E
�78rɐ�-��LY�f»��&�4Hҹ�oUJO)o�����q7��%m7�L���Y�siJ9�U�
���akI�r��wsi$���q���S�5H��e��)�u�"E�Ȥ@Y����Q�E�\�r=7��;���܉�QxJZJ�-yӅ��5���o�G%2r1���p/���-.FT"�Ev��^��0�7���:��,�g��	���6bkFR!SI#Ψ�Ha��I�K�iC��Y����95�(�ȍ���T9y< /"nZ^ a� �=:��9�롦6g�r�Q�&�[]�Y�`��i�p@��t��V��F�~�}�����n�s���?��|�v�>�A�r�kߖOZ�Z�r�I�l��Y�K,�NF��ͨ��C���&�B���|
e	/
�](�b�g�j�����"]o��r_�k�'�N�+sA�t�8@=�+R�0-��
ϢX�".�-9)�j""�_��j������n&Ҷ�S��\표��u�Ȫ��,>F�����bAI'��衋Y�w�Td��ⴣ�-DE�x������g��7O{?hf�h�/�\Ɓ�G�clh-g�)��B�ݠ�ܰ�7��f���q>��=7G�ӕ
�^N���5g�x:�'d0<i7���G�gF��^���D�i���F�4_�`ޕ
:�V�.��cLξDjŊX
�D�A���/.�U]>�.�j
�L���ˬ��5�X����>R�<LNl��{�n*�j1L9��]j���!��Y�_ߛ@�m:�����L���q	e��L�������_��%��VmKo�`���.�������9�qp��(,�vK\���x�ƀS��t]|pӃb��p����K��C����i�)X�X|�2�=��?����)�	�v���:��|�hS^��$,.g�e�Mn>�>���2�T�)8��,.��DOx��q9	��ǩ��8�LF��yw�L�q�a���ato�U���=���Y[,N��oHy�;�D���t�������l��6��'Md�2�FN
�-h,e��rz��$�I�B�"��(�����?i�[êd>����"�W���ɥ��Y���-�G@or�.��Sb��:u�	Ql�M�b�),<��I�e�`g��4�c�{/A&���]%�m����C'���	|�Y>��؉������q>T�i�9�
�w�CV����A�f���#sJ1U~2�zI��G�ڽ�{K����@�)�\�[����	�βM�e�:O�u��'�_@��eW�CV.m�on�<J�Hs11�F��i9��S�2�F�{n�O�1�w��9�D����V�����尢l�W�A޵���q�`���T�����vXYp���=�����Y�C���i���UK�y>�J~Eo�T��9#���v�T�4}Y����������N�mo%��%K!�ݶGKYqz��@�_d����sa���\���n�.\!3ZZ���3 �bq<9�5�%����A��<���1�>!�.?�� ���ԕtZ��S.�_h��_f��ܮ�*:���Nc~
�}�<,�|AZ�G^�E����I�wA��ze����ݙk[�-�3WS���"��������?�G_���~3yz��%�a��z��"���T��.4�ǃf�	>5�b�G;�C�Jm��Z��k�e���r2(b_�c�'�H
�O4���P�n%"��
�u���C��я'K��y���‘��j��4Y?�?{��@uK�  o/���`�Y<*os:d텱.�ї�;;��ТVg�lw=���K��K����В��
̩St�^��Pj��SIG3AU}q"F�}H�C7�S3)���fF�[ۋ�0�sf.s�;ŧ���)Z�)�{���uU�9�`�eu���2��~��8� o)`��L�<�$�.]���B��nuI��@ڱ�c]�����NY�K��.��(�y�)��9�g�;D���x���1;]\V�vq]�<7#)��1��hNˆ�ꑾ����N�.�E��z��)�'��a�'�Da3kO�Ff!��d܅k���EN�)�����{�8���_iy��0|�ԧh���*`��?�0����@�����^`�A8�b�̗1 ���nlX	�D9E��b@)����/�9�_���BL-S����� 7K�)��
_g�C�'�r��MQ�8�T�cQ��QKb*�8U�;Ilk$�ڨ�F!ݖ����X�Z�ڢ�gi�/�e�i�P�É+�x�U6u
s�i-܋��"���Gw��g4w<�p$�Erpv����0��q난�0�3+nB��K}�swI诏�;E ?�K}�m�n� �u�Xi�>}���/���=-}�Ɵ��~|pr��eΌuւ3��� �$�F%?g!f�)�w�N��$�h2YS�RSS[�����uϋUF'#*��k]�m%���G�N�Y�`W� ?��)S�Y�J�M`��{B��U?`���:��P�WyԬ��>G�7�1J��$��ڒG�Z&���*�/!��Y:�y�H����le܋֕lS�q�{����+����3!]&E�#c�Ϧޱu�Xbr�8x�S��u�{�
�g�·�就�h*,hC	��?`w�B*N�	rԚRсu�b(�
����h�	G/mpG%St�-���αׂ�KBw�E�u�J�/�+���*�7�\*�T��魱w
sQ&���Aaj�����ַe�O�`�<a[e�;P)�I�����?���k�P:Xu˼�4���y�x!���I���H��� �0tDc!a�*�����
0�7��j���U�����t͇^[�����6��û(���nYL$%T��>R<�k��pQ㒒(j��e�Ԅg�[�\IM ��ݝ����W��ѨL�qϪ���""ZDl��r��i�Fb��w2wQ�w78�6=��jjE�0���1�ќ�~�W�PΩ�ӹI�UHJ���H1����q�e�q�V�J2��a8�pP�'�֔�[�`���-��D��J	��U2tB�hn�k`"���4�[�u�n��}�t��|�����?�h�_g��JWh[��J�[����3oR

&){'�Pfj0��)�\�lb�N����gsR�280h.K(�A�bL�7d��i"uH�4�?T(%�{�?V������1���G�+���5�o�~���Y��<�6��M�j�,jkB˓ו�V����oJI/��T��1QcEzgCg�q�桋��,��x�[�)_��J��oE�/�emG����p�.�؍��s� ��1���@�R�p�2�``Z|�q9��u��])��!:�3,��W�Ob�RE���f�s��DZ�Dm���'�߆�߆h�9�:X��lW�O1F�/G�@}e=cPHmT�0Ȏ��	���'S��+�Ϧ=#��`�t���=7��0�PT?q<}�	B�NWVVj���t�5=&�7�:��1D����^���f���Ng�s�/,x�s��2�2�'0��3��`��3H�⩳�O?�n�as�����N���6b�P�0/�.��zVzΖ0�b�4���3���rb�nt;��Q>�.��8�WlS�� �d}U����������J��q����+i����a�E"Z
/f)]�#�2?�FA�a^��lho��Mp��e��a����
��#�F�RO���q�&P9P^=��x�eժ��MBῶ����p���XH�|\��V��B16"�>��a[n<V�~2{���ցU����o�PW�"�g�ia��F%g=��wP�>� �C�-�S���=���U3	jo������ef�هtֲ�XL�t�$9R�X���M��S��?��i��PL� �Q�2q���˥�\�r���6Z�sC��&��4u)2?p�zȪ�p���0�	��n��i��l���%-w��uhk�zd���9\Z���D�x����I���>�St
���E�:!�}�F��x�O�)%���㟴�����W��UI]�͚S�TX��/�KX��-?�Cm�f����
6����VNOwLv�Z1,w��l���IdL^�ņ�Dm9�r���µ}�S�M��o���d�cR�%):�WBڡ,n���1�O"/u`�D�Z��]�4JLq�R��X�`i�����eڎ���~c2��z|���:��8Ss�7mڭ�����yr�8Q�v[��;#f�2bR/�k�*I���c�8[���׼)��Ǘ;��
T�G�Q�_���X.)�;ܰ����SrC<|d9"�T��T�챶M�R��7��҉v�I�X.UO�ZPO���hMLD8L!6��2dŒA&
�Q�s�f����<X�ӈ�ҷUx��DX�7& P_�h�o(m��S���o+zSжRt�:�K>d^2���I��eih�t��K�9�/�'���`� �=_��
�D�"��9(1y�;ƈ�@������D�Z�Q]R���@�"Uޢ �"���b)XU$Za60Z�+��q��
J������~�:m�Y��"m�͖�Y�{%M1#S�`���\�hpc'���yk!�M�n����i���@�Rú���㑊��?8��AГx/���j��ͦF�g���:m�fq��+�b���X+���d�I��E�|�+��-�>�5�|�?瑛�[��#H3�D+*�������a>���Jo�|��Ռ8�Ykl�6�4��;
�ky�����ǘy`ׯ�7=��o�����+5?*��,��94�z�.�Gy�Jl��~��=6?�2�
���^.�JV���l �MV?jB�2�̂զe']�m_s���Z��?�j��
;	35䥁�(kE-�,|J��K[�9������!�,֊��0�k��l�V}��Y#r���'��_n�`�qdYZ��Qn6^q�K��c�ܶ�nwd��<��> 7d��'�{�?���BR)��������V6�{�ad0�0�$~�Ԝ��ʎV���\�'�	����	K�nl7nc����쌧�
K�߾���t���*�Fd֑d3�;���Am"��oUͬ�S"�D2L��:fe�Yf��ۿ^�y"65)Տ8�c����KG�O�����WR���-��'%Ttf������*�凣f5k�x������{<�N�V2$W2��L�V(��*s��w�>�F��&��W��p�۠fl�0��p�0#\U�9c'�(�O@a0>K%�^�\�e����Qٽ�Wdb
Ta�/.N *K��!(r��s��v5�;z���4�O8����W2O��c
>�nR���3�����+�k����q�,�B���L���Vp���փ�3_ ��j�iIKSؿ��!hEl��'��d�7�WH���DU���_y�>�1���FN@�?FzH���(�+<7
Pu�`���u�zw���8)���Du��9�O�v�r�}�?�`=pۓ�{v���_ð�+o2��o�_�hs��y]z*w��bS�X`K���u���y�D�q���z���":ۍy��ޔ"��t꓍�z��@1|����u�kln	3����l}66:)PǸv��;�);�z韣���8���[�/|`��9�B�
a�Ff�	hB���)m��A�ъ����Q��Q<�?��%
�ZQ������H���h�G��~ޭ�J�5hy�m#fC{P��&W�n �{��kk�p����z�Ȓ���q�v�\�s����TgR��UQ8�g,�h>������y��X{{P����j�h?���6��[^x��a�c����g~�H8�|�D��+�
p��F�-��?�NW/��3�mc���y�x��>�a�Ԋj���f��k���vӝ���9 /\����6R�u�֢�<5�+��u�/��~a$,��V��"�!����9늁�x��q��l�ڤ���ZN��a�tʖ������|i�Ȥפ^J$��)��f��DÑ@��A�I��i�+Xި'�H��QKEn��Jh��/��T���X"�e,�hR��b47�2
��|�����$�Zꓪ6��JP�e�k�����q#���ٽX�[�/�$����]ijO���H�	�e]��n҃��a��\��{^�t����9�=�qs��a�cF)�*/�W�.�I���^�������"�0�2]{.x�Y`�e����0ْN���Ϛ���Cx�(�^#��$'Gz?F���rˋ`Y���K�zm�v��ꭦ�z'�Z�n��$��T���r&r�r�^ٺ�m]�|�dyA�z�_��WT�^��c9��ee]h��I�D����f�����t�j(Ȁ�7"��ܭӦ�j�	Z��]b(���T�y����˦Mc��h�;ҥ�f��EҜ{�сm�k�����5�f�1c�1�-Rɋ����?�b(U�Ա��TSf(
�r�%���l�7���
�����V������NaEA�{)@��!�ro�p�J�P�������X�hVޠ�߫�ȕ1x<�/�s�3P���}{�q%���5�Rp�k���Zg�Ժ|�"S���g#��d
@N1Y+�ExA��y���yh����v'��2\���$�\1�Ă��d��~��_v�[ WQ���_0<�P�܉�u<��C#��3��!ă�Z�)���<�M�ܬ'��@nwL�;��	˄T�뫰1SB
�8�҆�AG�4�j�G�,Z��)�P�L��5������na?�?"�K����F8L>�;g'w���<?���Q
g�=�֐�$�߫����{��~T�#eC2<�b���������m���m���D%�jC�tx����,�ӗ�����Dʢ���d�Z��" �,?z��~F=drjwT����s9�^��ZQ�.�.)�UѸ_���v}��}����5����������߄4�?PA�&������J�������E�90�ӢH��T��2�����E�<���ޑ�����8lq�Q�Ƒ��oz��d����t�T�Б�y렫b���K¿�e]��B%�A���7�U�]��~��2��A����z0E�E�3�q�V���������=�̨���N+\�˕���f�7I����JH�x����TEu\��:Y�4شaIO�}xE,q�c��eU2����z��T�*@8L
i׽�O�9����Z`m�c�ϑE��f������[�B�O�,Y�G��i�
q�S�wrj�//)�B�wt��)�P�a5�{V�d1C����:K���oMЍ�6��8P|���D��S��.ʙ����E̜���WZ%�!�~��8�>�{�Aw���g�kG�ơQTZ��]O_�����s#��1���6
�}��L8��6̯������g������������W�re��V��1�m)k�zE�VP�I�|w#U�����='�g��r��m��@��2QL���}���_�]�.��#3�s����g���ց���H�ڠP^��{Qom^"�a�}�WEB�<��5�Ui�*��pKF���,��w�Y�ߦЌ�V�X��)��Y���~ڧU���϶t/'^]�u3��~Jek�qn�y�?La!���E�w-:qٴ��Pr]��(j\�kMͽ�e�鷟-kHfʊS�Ί�TT�I���Q���$µ��$1kr)�}Ktܖ	���0�[ߖ�k�̞!!�yy����<=LB�y�!�q���;���C��Ks�貥�2,�����k6>�G֘�ǣ,��}�-�a�&VS_љ�� v�=a!�nVǮ��z�-
�+I�OE���^��.岿(&̺�F�dpp�����0�}v�uXE�ƴx�v⾢��Q��S��7���݆#;(5�A*{��0�CZ�=�o?�ӪC�g[��W+Ğ/tᵟ���e�2��9��=��	ӯze��ҟh]Ž�@=�wt}_T��C38>M���A�NXP��v�,^������H����>�a�AK�}�ιN� 0;�TǜI�4����$^9��v��4����Nz�����@��w�"�>;1��[��~��Fu�x�SH���s�sY+X&GB��sk3l{�_��e/W��c�6v�A���/��R��R��H��87�B�OpD�\��@Ω�V��]�q�5�ך�S����=�����j�W��"��N뤻��7�A��M���e[w����D��S�|�J:���(��kdH\hR��
�1�?44Q�Es�^iJf,TSE�9�Gi�����G�4N.6R�7c�3Ȗ��A���4V�l�J��w�5�5��<<�&_��z�@�nl#�[���Y�Wh�G�4Loߒ��K:*�dr�/$���:I�<v~�;�Tz���+���J(ί#��i�	L�œC5�
K�$C�`f�\A/2�1�v��
T�'9����'J�[(��
~nP�l�旄������-T�-B�
�O��pk2�S
��U9�˘�?yp����T)�9�s6\=��E�a����}�����*�Bx���������G=���嶓F����ު}[�v��io��������[0�[�tUsB�ΣV�?���7�Q#�~h�r�����Q)�`�_8�`E��T����Rg.�G-3�q9Q�f[��orѣ�����N�/�pXܺ�I����S�:C'�UlB���Y���@��,��f�1�4�8
Wˠb|����}`��7v^��7�vE��$�TIp:&�$�iW�茸'Nl�ә�������qHVvQ��:xRHj�1�=+а�������<	��2�F:�ngޞY�eNw<b]|D���r�f	xzyZ�Q3�lI��z�NY̢��Hd�ߏD�mr��3E�� �d���%)�HUh�Pͣ��x�y�*�WD�f�K�o���'?m�"����0%��E�i��O����;�sX��'{�?F!�U�?�\�:s�Y)���2�J�s t���t���
\SWz�V]̉Ź�z�͘0�~΃�> a�o��Uk鰟&�·�7�7��[����Ø�?�ٻGV��Jv�5��8�2���CU�;���N��5o,}�yF�i�w����k?^�4�.�N�s-����{�@�U
#j�8�W(x��gw�.�JET��D|
C��Ԗ�˙�|{-���������ɼ�g�,�eT������9��z�8{��'�v*��.���=�G�,M�v#�{���� �{�D^�IwH�w�L��)w}�M����2z5��8�f�Nn�i�ښ���Jʛ���UX'���eZ�J�]��hEغ{'O�[<����U�q��8�K�f�*Y=����u���ɲ����0V� ���x��._n�U$_S���9�ȯnK,�CM�\���>@@�
���H�BY��|f~Q�h��
Gh�k�`Wssq7��.��k^�+���:}��&Ċ�&��I��Y��k�'�9��0c���*Nn��m���u��ڰ��_�x���zДez_g�7}�Z�ݝ�b�Ҹ|�Gi?$�>�(G��&��i|J�ͥ����Q�\�ζb�?vӌ)_I��.l%8����&�2�����a�C6ׯ�qS��_.],�o��˾�O`�i ��d�b��#�[3T�2��ćO����^��E�IDĘ�	����~=ZoU���9��:��Jb�bɽ�^U����eX�Y��$�s��0u'6��f
4�tՠug�iY��ⶻٰ��w�("&��صF#�Ɔ�*s�~u`(���4A��I�4a�@s �PH������'�EeD�8��e��5�����B#�D���4ˬ�y�nkjs	Ƭ��B��<��ɯ��o�܂�﷌������]Zmz#v��r(œ;)K\�2�����N��x;Ż'I��#��ڒƶ���t��!�����4�uȊN�bʴ?�c�|��\Q��'��5�����i4�I�dyJqT쑐�16�T0
�����V������+lly�D�8�9�)�10sZX��p4`lԾݲ:u���Ϫ�N ���Q_�^f���O�N��G���ڍ|��b�"Ht��_����Ѵ�J�0��7.'��^��'���k���T��Y�S9���&�⾡e��/c4"Xln,k��%�м_�|�@�pv��"4(�_��:��cW������&q"�o�b��s\��P�}w�����5S�F#��O���L���k�<����HP��g��O-c)o:C)i�#�A�-���(�3=;�N����㗦d�s(o�]"5e�r���^�wE+?&xY��{69%-�����Z44�Y(��I�A���g�¯i��� �$��X������M��б_ᓃ�0�snP�^�+�ִ�8u%Z�!�8q�>ڄl
�6I���'~����o)��cb����{DP�6�q��������X�q�V�F�'��p�_�]����oq��.�ڗ���O�v|%˓�K�
mÇ��h���х��+���M�@�oq4s����L�K�Y�c5�U.�(�4�HK8|	�MH�J����1�'7�	�i�ڪ�(L�*������;R�`ZŽ�k[
SMSS����G�Ʈ".n7�4�L�n!Ǘ��=�v�;!�f�Ү�I�������F�T�h��^j-��4|3	���1ґj�b�4�ڴx����%vn<,W�F��4c�9��c���5���E��hVn��F����,�栉Y�'�z��7۬k���m0��i���u�g�^ɔ.���>�J��t!�2�V7�<������KDK�Z�_��+g���RԜ�\ICL���:#�,���Hv�DpDk"�G��i�&V�Azs�d�T��)Xdhښ^�o�HC��.zG�f���,�j�
OqH�:�P�z��V4T����u��iV�3r �*lOkO��/
�_����4��u���-7_�Ϧ9����?���Y�?�N57�d"z�$�+��4��W��X�������Vy���G`��S�)��$Z��͝]����6�;�;�����i����1�V�E ��R~)��/Ϗ�Z{���Q���ܿ��ԭJ��_Y6��Bڬ����jCi3S�P+,�����y�D(���hc��fW��[�v�/��l��!__��XU�fޠ�!	7t�܁.��2��p���8a��/��	Ǎ.����/y�{�6�Ak�^����<���{�Z�h�����!\¦�xI�9H��h�'� ��
6�t�6)Dߵ1���֦s�;�(�N�.�|2+����S0&f��)T�(w�h*�LSX]�T��V�5�0�3�cQ>������~~_�jO��x?���S�IZ���LʥR��t��P&c�:�iu���A-jd�$S!��m��������F�߈r�Y�߇��gkr�N�Ia�z0���d���<�h'l��r G�O�o����:��ճ��
)H�M�ϲ��[�ݷ��\�`/���+!%�g`[�����-�D5�m�G�
�<+�s���>nʱr�
R�[�1bab�}�/�w}�!;����xݙ�d�
/Ng�R�%�친Fb>��"��
�O�?�\h;x��i�SػY�DWj��p3v��;��w�Px6��:�����oST���Y�x������u�_q�s��2���;�L-
�p�΀3m�J|�a���ʧ���j�D�}՟m'^����@{�v���P+ٻ�c����v?�Z����_N��n����뙖��l$$�t6�ʻx�6M�ݔ�ۘ�wp	�cl�E���?��{�{����-J[(A���(�s��1‘�J�!/���*��p�#7���%׾
�����^Pߌ��}.I�;��G��X7N8�\��Q)<��\�����4����������)�h/�~j�bLaӼ�Q�:��i͉��rE���X~,��&zE���q�S-\�v�U����3��0��H)s��K��ø+�\����|����n	�s��=��W:pQJ\�'.g���Q���,�AXN�)�)c���y�S��e@<n7�EE��3t+0'��.��!� �\����x��'���~kE��o�<�2X�]Cy�/M��-!�=K��H�_�U\�-c��X9������G����sJ���n|Xt�j����ԟ�!���B�K��Fw)���"��΃FG��]����v
�u����:`,��&�EN�e^��\n�4a�F��+s�6�pY�����.����ܜp�����I[���B�Hp�[���,S����swg�|���������R���x��<��0��|c��%�}L�t��|!�\f֣�y�9�C� ��HyG�~�d�'��B����-�@�Jh&M�rk��.�������6���F�m��Ǵf�W�pm9�&�׸_���O	FLl�e4�eͯ�_# ^ÅYwB��H�7O
�X�Ճ"����"�Jy�*�(̀�c�����&8���ރ��8Z�n�v٤�)������r�(�=�z�Ī�
$T�m�翺��O	��9��B�r��]Z�!������S䯫P��Z:�zN	c�*\Y�KW%��h5�������M$��a�\����(X^>�ܩZ!���k��ǚE�#���T���
�U��^��)\�0��8e��n��EB���<��jN���̆2�i$�1��a?B�&�E@ӣ���F�>y5ң_)�c��7w���ڻ��a���]��t�޿��z#�ج��r��[�N��z���bs�q���ְ������"�pc�e]���y�`͠�x�z��)\�r��ȧ�C�;+�`�q�#����f5�%m�~rƛ q��V)�:P����nu{����	w�Ku�+��~��J���+Ϸ�[e��_a�b<m���J`.�ab	��[p4GO�[����0T�����f[%��Va���Nϥ�tmr�����FU�'pͺ��P�im	-���h��8ݭ v+>{��P�����>��n�CH���_�~U!�	�ɟͲ@�B�_|����B`©��?��mtg�'�m�e��V�%�폾���N�1��j���7��K��9\,+��];F�/�����
����d���xl���<>��RFF0�#�z
��m]���Nz�m,��3bd�ɠ\t���N�UV3�n\�MHѼu��CQF�WD���nE�^$�q���YRC9=����{��G�N͇�}��'��
O�s�@��?w�=�b��I��;%�צ�,0w^~{8n�z�qbf0&~�����=�z���7W\g$�n�Y�?{�?��\�κ�3��
Ç����Ն��|�Ryu�N�o��
�J���@��z�_�^�=�ɫ���7���q�؀��=〽��K�9
d�W6v슾QQ��,�xy�W�=M���s0I<���aS9(�y����TM#�rE��Ld��Z��x=�6�;���uspr��0�����l�O�H��v÷l��E���Z�A˚�� [������ju�[oӪ�����*���|_w�"�ȁK����ڢ:i�`�1�Y�g���v�U�T�f�`uN!�%โ��}���^&;6˧����2��tf������qyX=!�8|"1r�{ q*�┹�ffm7t٥2�����"D��]�B\�*�y)*֥/mCU_�h��.e�rt�yG�d�-��w��p�6�d�9��Jn/ʛ�M�N�c�@��Ű����w�q6��&s�M�2�-�%c��|܌��٢(1�ͫ��7�<Մ�9T.q�t�
)2�,nD��vqcν��Zɤ3��,����H��ר5UT��8�y$>;��$�d7���2�w��M܌���U��L�Y�63�5#�9�&���Wt+�����l�/`�"�W�1/o,#E��˃"�aݠH�:�b;�Z�KK���>7ns2a`��&?����"��O�%Q�\]�!�m�<K(��G��"O�"|H��GR� Em�Ց�Y��R��|W1|G�K�L�;`�8.�	��-)p2�Ū
�C-�=��֗�n�	���cQ�Q)��8�Ĥ�@�$t4�9�V��\�	j���jDPSF8]U8B�B������Dz8 C�)TgX"I�&�5�e�٠��xC�r�v�}H�?'�|F./�X�
���N���,G4�r69m���r�x��d�6������~p��/�����&��'��}��*_��+t=���Ŗ�m��ߪ�hh���9���A�����`菀�ݎ�����tZ����8��y��
N�~a�s���dQƷ+A�V�~B�y��V�Y�̒W�Z��y�4f=��K��,d)C�N��8/]E��^#+a.q�|�`V���#�K���A]�g��;w��]�4���	��aӘʗ�b��&WGQ�����8kbK
8=e�)�k�����(zK�����
Y#�z�)m6g�J����W�ݚ�b�x�ޜ.U����P���(�@��T�wPK˶�.͗�%�^�v�ɰ^6l�_�v꺮CRE{,�W�|��]�m�+�:gp�M�i>�}/)�I��Y��� �i�E�gb3�F3�ظ)�~TFP��eӒ0�7mSuS�퉑I�T�!:-V�ﻋxT�Y��p��C�������
s��5k+L��t5�SC��L���oʆg�ԝiP&QO���-�Ծs|+wUx��S!SRb�tA9%��Jr��ý�כj����+�Kc1��2�3N������V9KJq��Cm�i�H��_�	^���8�5�4���������$6z ���U%��9��ı��@='�5U9���9�=�cH��`�6-[Sj8��x�0�i�y�y^�I��x?xy�[�m��3޶��w��ȟ��r�>rv�\H)Ukt^{�J���L��~����Ν�qB��SK;ԴZ����S���f�c�@�N2l-�LH�U�rv�^�@;Kk�X���YZ�T�5$P��um�����l���y�Z���jû'�Lq�q�����TՑ��,��~�=��=�
I4��sʾ�+94X�.�s��yMgD�yU-ZƎ[{y��7�[�	��=�b)��"��pd][59H�87��.���7���:g�I��_���"� i����;��D�ܝ�;�dK��5�7Ẕg/��	�_b&�d�4)�̳%�N/M��Z�L�Щb�����Ł����9�f^�f#�R��o��ZQ�%�7-?�vXP����:��z;�*��K�L�v��y��G�;�a�l<�{��!Q���e�vj�M�'�8�n�c�z`��q'Z�gYR�t�/�;��sy9�h��z?-�T��,
�F�ZHQ\	
}׊�S������y;Nޑ1����g+�_+
#��S\$"	%)
���Ěȇ�{�_��#���]=��� 5�T�>
�����D��-�:�8qR���#?��Q�g��0v�Y<F��"C*"+�!Ӆe�d
M�>q��gkul�;��{ִ<�O0_"ĀD����^��f�C�˻�Z�p��A<1pS07e��@�S�>���Gd�8R�촅����ۦ~���F�Y���У��{��}ׁ�w��U	'ܼ�ϫ����Dj�+�–z��^IrT4\yx_�F�8�*�Ճ$31���D�Ĵ������wTަ'A���H_�u��O_wU;��H�f������ʁRwiέ�9*��4�[�� ΪzN,���0vs��͹�jEz-���϶���Qa>J�t'n�(y�*��9V�<c�ۼ�aTBp��Ķy5�[3���k���smm�e�)�+��'.?*
JN��������������ǑHw�Q�,���,

s9��2�ۡQ�8�����~�(�r)˳^���յQOtz4�V��8r�b���,�I!tY��˩�c�(��At�Ŗ�~�F�����os����a ]Ql��t�׼�E�T9Y͓m��|"���L���i�w%�7!���҃��m��
��~�W*ր'�	Ok�1��5�RC���.�ހ�	4��$|��YȲk��)��ţLH���}���U�Ug7�+��q��]�Ԓ�=)���7�i7K�A��e�d`(Jx�5>rJU�a�:�G`��:�L��+y}U�EW/r+�/�����ǒ��J���>އ:*��]�ٿ���T9k6Q�ށyx�0[p�B� ����~�my�F�n���ܐT�#�4�X��M04J�I��-ka�	�
⺂�1体q(N�>��/"��E@/�L�c��CU���s��AR$C-�����DEj��`�� U2�$�
���Q0��U,^�c
ݘxv+��@]�4�����V ��7�ո�	��>��9�,а��4�������v�!��U�b
lj,�F�3
�݂��H��V�M!�8Sa�LӁ����oHGi��)�	��8,�΅ {MJL�Mp�
G��k�������1 �w�䋓�9��fqs3���k��	�(^r
��yEϥf&8W£��6K΂� 1���ZK�$F�܋׎��y�M�.����D�,O� ��e
��驔�r����y�<��O�.&m��b�
�d�R��c#bz!ݺB�p4@���a���e����Ř:v�f%���a��F�Y ����Ή}i]
*�Ɏ�g.����]J��\�Z؃�.��#�KT���Z&�U,�W}�ā�"���ʳ��b�%_=B��	����Ū�$�D{��W�]7�8Xv"&��q�֡�";C68�-݊ɾX��
h3ɤK|�
��x����C��NVqlh�1��F��N�U6^��F��\�=���Í�p>g��|��4H���E��j�F��zy{oOܨ�I
�����(��ӟ+m!um}�X�#�$𔉅JC*�!�1F��$
;���+�s	ꏟ~�����܊��T�?K(��_ߧ��S��X����6Y��r�XIf��?��S��7V�&IS���D��3�9R����Tah�K{�n۫���r�?/]�����7�"�9��̜�S�k/�S~R�����)�b�1�|�69_N�愤��'��ǘ�G<4��E�(�z�q���	}D[�U�9����]�?����nc�YkCk�$����Ū���M����,�*��8Y�UI��M@i'=�`���b�N�H�A�Ft�l��#C�&�a����p��2��\�P|q�c���:'����	s��ȰTI"�wЕ�'�[��^P�\�&<�r,�QI(e>�l���Qj�3fs�nP]�H�dV#A'{�C�^GIŸO�j܇[�De��yC���F�v�f�6ܔ�Kf����|�\�'{�.������O�O�f�f���w�03-[�#k."�I�MO������M�.�~�f=�\I�	��.�}0B�"�p���)GLm�,�`)�7���z6_-c��1��{ܶ�>+9f��k
X�.�M~Ȑ����C�hehaT+�4L�A���z/&�U<�Ek���4�P�G����ϯ�;Um5�����*ĭ�=T��0�Ji��8�y|�42h�q/|���8~��x����p�g�3"I>�_�bN}Q/��.C�~{K�!�E���>%?Dk�+=�̖׎�o֒���B��m�bdg@�U���W�!��Z%Nu(`�n���l���,�?}��3"�"A_���z����)FI�}�0��?)��Ƥ46@���T��vV�Q��0�׏U
�A�r�B��a�B)�e�bSV��h�9��Ś����I��f���}���~Җ�v��W�f5�X�z1=���._M�`؋ &�-��%
f�ⴡ��Ӂd���>4��*8�5��
��s�zMm��$M0�):(N1䒒_4[M�[�~!|���F�<?����r"=���By�wk���ԣ-�N����i��g:k�%�HM	r��v+W���z�p1hR�Dg��U?1�
���|�.�G�%'V,�T|i��q<��.M��2;���ྷ$���zsS��o�=T���{�V6M4��Ya�2�ʒ�Fc�f�'߉��}����yꓨ�巜���r�s�&
B�0��`�(�����ٛ�������/Wꋀ�OI3^M�H�`Q$�`̔��0e��l:&:T
��6	�$�p::��)TFd%Df�����B��`9M#k?ϩ�����ab9dQ˯:X�������gcy�������#�;��o(G��)��Z���d������}P-��2}������LH�Y�8q)lm���c���%����$,&��%���(\U\/PFp��uE!�0�*3gi�i����Q�b��5��$P������w��>�?2`�Q�|��O%�HaW�넠*[��"�"��41<���
h�G�Jiy!Y�m��{(|Ci=H�RI�́�}��iirU���Y���/t��2!�ݰG蹒aWp�`w�pQ+�fdTzʹHt���b���ۖ�=���;���:�6�kO���F�\�C*�5�Ol�-�$#�Jf���bɌ�������W��(��(F��D�G�P���B�mo��d%�:'���6����@U�����a��|!\Q���h���!wjD��[z��Gi3�3�?�&s&HܨAe�t:b�i,fͧ� -�9�V��E2�&���D��`BB�Nh�$lO�H�cgJ#ս�ʬ�������S>\!���jE�2Q ˛�jJl��a�O��v�m�j(�FtiFU�΅U*SP��b������6�>�=ذ&Ue�v}cE`#X9�
�ɱ�8:�]{5�7Ѽ,P�ګ0���(7�5qn�
y��jo��A1�~;����+�#�_����%m�d��'$g�ţ��]��ǡMz�j3!�ةn�Ѿ�
�l?�i��Ebw�=TIƝ��D�(8g�cg�i��-�"�2_0��ʔ6�;�P� �v����i��X�o�!C��pW&�cĄ�m*I�I�*�4��Q�f30�%�֏p�i��Ȩ�C��A�i�.׺A�YM<9�|D!B�D��*MR�?U ��41!�A�c��ECZ��
�5�W�p'��Gh4׭.ji�P�,s���~k�gҠ�1�e"�y�1�ݞ�`�7O�g���<�;�	��"O9�S?�қ�8�h汱�t�qP��({E�P��H~!�E����&�ϮNHϛ���u��y:f����I�0�s�e�t<�X�S�`�aA��)�v�Row)hI�S��O�D�,�b�] �q�Z��ygUV���H�)�{�}���-��!ޛ²Dٻ>�.Ơ�JE(eJ�{��K�u&o�Sa�Kh7D/�Π��q�
Ŭ���œ��d�6�K'��>��ff<ҵ�*'`�fJW���#���,z�J��?�9�q ����d���p�<�(��6`�2u6�wi�-�a-h��������y��nW+�{EȚ�p�pj��
h.U��N�����m?9��R��o��]������A��'3�RO�'i�/!M���Xm��D1-$��E�o@~�͈�0H���p��l
%�ڈ�.&:�4�:��J��vN�A��m���rQU�$�,dgSa�ɹ���xje�3-&O�nD��6C�&X>[�A��I�r���7����+H�oMr��n���ϩ�<{C)��6��O�}s��u�NF�%C�%!.����[ڜh�u���4�7��$�҅�{G��ey%'��lw�w�}{>Ƿ�V
�~@Y[_��Y1���N��}7Ƴ���6D��@�G�~�6Ne#�#�It]�7|>[LC1y.��CI�+մ��l�H�+��է�J��Ϧ�S>�F��Hߺ8�-�xLX�qq��2ܼ:��;�(�4NV��ѧT�b�#��|,Vid9n�ʱ�{c�چ�t��v/��?����6�T8.~��ה'>�+4�ۻ8�gD�
�Izo���
�Z�����L�@mU@�>���{#����� }P�by�+��R;i"�'Q��w��P�-�����`��z��	\��lbV����كt�
��C�X�������BQSr��9�~�=�^��nw�:��K��SӸ4~�P�7���25�D��$F��+��Ļ2��wuӇ��o��vx>[#֩o����݃k�:T�2�n��o��l�S�� ~���(1#~��r�ØMr]Fr,T�e����'�2��v�t�j.�8�(��=71J6�h�(�ੵ�tv��R�2g���+���������w�}8�jVE����Wix&�j��0��3>���P'����'F���b8Ҽ�&=��ބ̰$����xb9ή��<ۄ�ӥ
.�HIp���^wTe��o�̇�A=�`��X�I6ߚag�-ۘ��7(G#�{oF���q4����fnN�_��QMR�M��Ou��F�J_i�ě�<Zٳ�M���n�yeF-GV�y4���Gd����	�#6z�F(B+�œ�j0��>����6��\6}�v����!�I6/�'��X\�țu�FPg��#���²��ݸP��(�B�a���*���lw
y��lKR&qsk;�mg1�l�8��q�}%^�m��*$b�dCqB!|��I[D�
va1�m��Z���bR�HP�~�:|{9��a���:�|���?�}]	."�0�$S��|�����7
����d��(�x��okk�c��>P��F�F�JʬK>O�:]�G��#�I=s��a������km��|��r�x�U�����x(
%&�p�~$W�ym��ޡ�O����M8����g"N�<� so�2���fכw���$���5�w��C�z�_�WYVg��ɣ�G�u�����޳J4�l\76k�/f��ӂVh�wj�:=�b�2����/�O;jT��}�jM���Q����I�1�&�r=$fE��1�.����}�Q`�=1��C���3
�>���m~@��um;=�����Cj�������x[�-wY�<�t{w�P�'e��lA>^]�C�v��:;�kҦ�;��t� (2����g�M�,�N��w���TƂ�ˁ�Jy���j*����u&m�땮.��c���U.++�)�$��y�&���e���~�=�D9W��…t?�%?�fǡC�?���9�U:���m�b��;
��0�����	\.�8�sQ��@�`D��W���5��ii��O�C�"ò"��S�!�Ư���)1zZ"��j9^�����G$��'�'n���=Y���һ9(�|�n���U������;H]�",�j�*dNn�5��呅�-��	]���R��=n�V��\���>™Uig2�W2���������|e>��8H�~��!�H��)q:���9nd���~�B����q3�����XY�ydS�A��Kl^�%�yDd6�P�]D"��R�xP��������2�:�۹�.^�H�{Ml�l*˝�N�'�Ki�Eߍkr���_�8��w�Pqe�OF�����Kv�$�J��LaS�8�`v׌�;Gk�@~��$QBؕ������i���&F;�B���g�՚JG�PXE=�'u�_u�c�i��u�Q�Y5I]'��P�y�	
��>$v����*)`R��/�ir��������\�ϯ�]c��.��_.���<&�Cb2��	�;���T��r|���|�~�_^�Y�'��+���6�E�\̊ݡ)�B��jR�ՂF��v�q�Շ����W�3�+��귞%PC�%х,����lY��7�uy�a��"q�@�c%�H��>�|��^Љf1f�έ�f"�����'�����b'��n5���=��P�':�@� L&�+M��֚��^Sm]�bk�7���V��
ܛw�G��~%��X�j�i4�3��A5�JR���:L�Q���������@>������>�l���"��g����]�&��/�.��'Z�Q�ܶ@����qF�°N���YEJZ�x�>��;�&(�g���t>kL2Q���z�8���S
g�������F�*�5r���Ͷ}���sU�A�Y�ѵ0�^�npN+��X�S[�F�I��@����}��JiM��%sD]\]�=2{�L�F�C*���L�pL~$�a�&DK�B9�w��t����׭@h�1I��V�n,�R�y�7�ػ	SQ��FQ^g�$���&2�G]w�P�(w��<�lWB+��Z�+��խ��#��m*�M�����Q��OSu<b�A^��Η@:�N��U��+i�A/1�I�K&*@X�P���
�E0���T�S��]��R)�Ԡ�+�p;,Džf���Z�Xm'g�Gﺠ�@�T�\���F�L�=u�XZ��L�'�a3�~j��(
�F!�ʝ�1E˨��I���U�u&ni|VW�O�=0�N�����`8H��o��`�p'��Oo㟌���9�'�3T�$�3�C���<�Y��?'>�Dz����]~	���%�/��}��A{Ƥ�ѦȈ��Lj�Zć�o��Tů
(�BE�K*;��Q?���E�Ҩ<)��K@����E�?��W�+
W	�U>�g�,����͊3������es�E��@�
�!�-�:I)��?��h&�6[-�:��Y픈�:Sf����G�L�t��H�ߒ`0�#.�‰��Tjb%*qu�a�7��K�k<,��Q#�7
7E`��R�(=+qq\��p��XtA�\696�	`�(�,I�2�p3��i�����S�WSa7��~f�Ҽ�q�f�
�C�IOZ.9S�4r��(؃j�Q �/�+p'�)[��ŘY ?#Tv8,
AA��d����4�Jz�<g9���7kBd��9���Q�›��\b��sZF�n%��<�KJ�
�ع,[�j`U)˚�ág5Ü<�3M�4ȅ�eD�[���$�@&w3$���x�"�A3��W;l�C��`y⨦��q��G�;ʂ�N��e�d^�S.-�8դ�������e�]+!x
�S���*��+�,@*�k�e�(_���6Ŵjo��lfz^XO�!?H�)A��żr�dU�
���
�uK�Nr��V�?�{�y�7l�y��/��]���KP�2|�{�ZН!V+6����%�A�#Ȉ��O�5�YS~�z�:7-�,�B��Ҽ�啇��� ���w_t3��'|<>�0�z�����{�8��fA�")Yw��ILj>�������$F�܄'g1�7�Mn>�<�,�2�R�Y�O�S�e�_�
%�:eBI�2t=H��Y�3ڇ]Kݥ:�\�� 4�YX��0��ၐ��z��}�5m�F���%,_N�T�I�iz�'vW��N��#�+��o^v`��6���0��,���3VA��i�mM�#e��_��p��,���T(`�f��&�6x��9��/?:	�Gꬹ���z� ��K!���Z�s�nX�1[����\���:��{%R�&lsK�ң���t�&����"��e�ܷ�j�޵s�-kD@�����:�P�O�St�eK;z�q�4�Ay$�?
���>Ft�D��(-^�}�*�–���]E����Ì����.��ȻP��뜅�Dv�8.�湧(ʪ��L'�$ް��;F��r�,�w�%j�6)oYE�jN�?�� =����	�Ԏ�d-7&�hdA(<�j%(D�F_�$�
��4x�8���(���p���]|jo�<�յR���o�Di`#�w{k7�(�i�mͽ���,�+�骯(�E�M۲�=����#�۹��^{�V��G���TҐ��Q	���<���p.b��'٦wz5���/�%����=j�Z��^
����*���RN�Q���\��f��I�,FS�+����j��:	k_?��>lG�m�ND0��d��7W��/U�M^�9֢��b��t��)��j
���\���V��άa��v���߰jD�-t�+��Q3���х�M��T��hx�8��Tf����s�K^۠o�"��ߺ��@9���`+V��y�x�r�RDK=�S�1,
�ƭ�B3U�;[��fP*)D�*A�mӰ8�:iv��)\ԏ�NO��]�1L��d�Ģ�K#��|b,$�9l�1ɶ�.Xcj�ܨ�U����"�p��a���i�-�T0��9��|v�Kh�l����>(%rgL���,c�D� �Q{�/���L%wȇI����U+��j���$gQs����)R�j$��p��9��c�K���^�f�I>����*��%���kA�guR����$)�s�oz���Ԃ��ɿ߬
@��4]�oP��
-�[�ƪ�6v����g�;�H��?��C� �;�s�m�ن�=�HQP�~���Q(��ǰT`?���Ih�&��`?����S�OvR����uw�+���P?
�_I�N�LJ~�4d�	��2��`�<��X�0V��C�Z���ж�Ļ0�3���\��RDD�~��:��z�hh��8��������*����U"�-�������d�FV=��@�Z�?�\����WJ	F|�t{�@��G^	=�+����&�8�Y�2
P�B�s�lhm��y�)�n���1�@��ѳ׬@Sjb��n�$L�4c�	[�B,� �Z"ZNX�U��=�J�]`��i\T��Ih�ڀ�M?�Pᢡ�U��AI���7���ȿ��;N�D1c_�6FB�0�i�&iXc���x@����z��;*-�H��;��p���s�7�s�ԝ�OKP�5O�!,#2.�Y��`�jV�O;����1��V�
Zl,5&A"�ǸHؗd��@��DlZ&�ޖ�	��2���\�0M1GuP�V�h��dn4C�;)_X��{L(W����6�k�M���V?�2 +1�t)g�n�&�����3˨�i
���Q˼y�KP�lK�>�'�wJa���h,�Ͻ�;n
��ߙ�7
�%�7)�rЊ��`���AMk�}>p?&-S�
e)>11D����bC�IKR[lH�<caC>�\vo��Ӎ��c�%0Bn�t
��@G�L'V��F��*so����46��F�0C��4��Ha�F�"�8���= ,E�O�D쬧�Y�1ť�*D|��.��Q!(�O͍zW/���Z���qi��y,V*�9Ӭ�^'�+?�rJ�XoA�l
�#{z'{ܶH���#��F�`�\��5h	��3��äEq�n�,O�dױݮU�E��ȋ)��$Kd7,lP��S�L�U:�뫨�3Zm$�.$Y
O�nrčv���OB�i�t���cOtj��w?\X��fg�Ϋ��H?�1W2�NB����`�p.�4l�숣��\,L#�R7Ȕ�m8
tڧ�:_��:�@+@�q����nc!����ta:U��W�aӳ*��Iq�<��upx�+W`�S\y��n�g��,���4[��xʬ��<W�����N��TO�rOI�:Z�ryr�-
)����
S���d��ZR��iܽ��J
���$��� �_��üK�~�����t�@�B0p���%Ҥ�ᴟ��tD�*�G�ú�uB����A�>\䓑�b�N���z(�=<���~���S��[a�	�tyi�>�Y%A�Ւ$+�ƺ��nxY��Ͷ�-�6[m����%�n{�1��Tcَ�Wc���B�
�S�M4�Z3���e��������;8:9���������
-=#3+;w ����_@PHXDTL\BR*_IZFVN^AQIY�4�<U5u
M-m]=}C#cS3sK��6�v)����a�H��9��"�L���&��h��~W7��>�KDLBJFNAIEMCKG�`q��F@88��yx����Eb���ݸmKg�h̾�#��`l�`㘚?_13����ZӬV?�3��ԜJv8�w�δ����	@3²e���f�X0���J��&��!�<~'�ƽ�`���ƓU5-=#3+;'7/������������������������������`phxdtl|brjzfvn~aqiyeum}csk{gwo������������!�#�X<�L�3�\�P,�+�Z�ѴXFfVvNn^~AaQqIiYyEeUuMm]}CcSsKk[{GgWwOo_������������+��p��|��rv~qyU�����w�V������x2
��|�B<�<��R��D����p�����s .�����H,�����[XZY�\ظDm��ʵ���=x�J��s��B��������+T�X�Re�U�T�Z
�ut��9��453��������w'r0�O��GR�Iv@�L1�ap
	e�c`ba��������S�\%5
-=�52MH�~f�i0��аqje[\bvN.n^>~��ΊEg�\���Sku�U{k`h��Y˨q4�;���� J����S���B�jU��x^߳o��ir_�z�L�Y7_,W�Ͷ����2\����'*���3�^�P��Ʀ8�`>WW�Æ��,�I[��Pe�Cs��N�;�%9&w{)"���N�v@b�$��pJ 9K���[�
f�3dK��D�Œr3
��@�fY�-�h�,V�����|��p��so��+LJ����PD�A2�$DR��E�g�$��.���l���3�f8E�+��9����.�ό��w�]Q�zr,Û	U z���@�1$M4���uɺ3Ż���:H獎��w>NK��0����Ǻ�b���o����#Cc.��h�ݎ�e3�V��
Ř���b�t]��[�j���J/��}��ǫ9��j-����i������p�����ᠻ�y��ڨ��߬�~2�Nq�q!��1��*k��G�#�`�ౘ����WkZ߅��x��Qj%زA�v��G3@"L(�B*mZv�D�ʸ�*:��+ ���N+m�q�;B�ȡ�KYs;߰�k/7	j�;��^8��xj�+q;��>��шJ���DD������A�����Zr��r�t�lm�B!�B!�B�Ȥ �6-;Β`�!„2.�Ҧe�I�0����i�qR"L(�B*mZv�T�ʸ�J��'���N'LBK�!��RJ)��RJ)�TJ)��RJ�N�qk]���|�������w��L������LV�<&�q!�6-;NN�ʸ�J��'@�	e\H�Mˎ� „2.�Ҧe��aBRiӲ��S���f�$��iw�Q�Ҵ�8�B7c%$Ti;N�q�B�Pƅ4-;N*@����D�Pƅ4-;NzHu�G���ě�s����H?��D��%P�LR"mQ�<汳"L(�B*mZv�l�ʸ�J��''@�	e\H�Mˎ� „2.�Ҧe��
aBRiӲ��8�[���=�9;��4gD4��c.����p%����/~�o��C��� �hR�B�&�q�/�r��<sk����0���Q3+��W�	e��=ۦ?��*�2��C�j�\���7�Mv� ҤX��pSr��JH����;�*m�~D3�,���\Ϻ��Z�����R�JP���oӧ�"��]���-9͎E��x)b�O�EvB���84�d�t����o�&-�����y�[�CP�W�v������G��>Q�(���Y�\�~D��I�|	����,W�h��N(V�L�
��tA�jq�	A�
�j�z��*U�T�c��޼��6Ԋ�#���d�Y���%<{��V���#���PŽ��0���&�8P�:���G�vQ���pF8.�+p	����'p	`�>�|�#�3��.ߗ���T�ܽ~F�"�͹���]�?���?i?k��>|�o	�Ё�s��YD�ٸ�=��ܛϐ}�/�gj�ОY��1(�4�Q�)�y��>���u����m�sa���E����l�Cø�tx�s-'h8	��
V�]+Ye����3-c�t$4�T���F���xB�����G�h��g���&['�����R�/ğ{&�B��c�A�ƻ�I�d���@�]ŲE�A��'UR%�jD�UjK�X���+,@(BҀضر!nKB2Ջ��-AR�MՍ���fsn��<s`O��eb�f�qC]�|�#	�s��O��;��Y���|"��	�fa֭�6ض�	n)�#����b۝*RYy��lib/fonts/raleway/stylesheet.css000064400000005554147361034410013026 0ustar00@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-ExtraBold.eot');
    src: url('../lib/fonts/raleway/Raleway-ExtraBold.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-ExtraBold.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-ExtraBold.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-ExtraBold.ttf') format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Bold.eot');
    src: url('../lib/fonts/raleway/Raleway-Bold.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Bold.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Bold.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Bold.ttf') format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Black.eot');
    src: url('../lib/fonts/raleway/Raleway-Black.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Black.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Black.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Black.ttf') format('truetype');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Regular.eot');
    src: url('../lib/fonts/raleway/Raleway-Regular.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Regular.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Regular.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Medium.eot');
    src: url('../lib/fonts/raleway/Raleway-Medium.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Medium.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Medium.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Medium.ttf') format('truetype');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-SemiBold.eot');
    src: url('../lib/fonts/raleway/Raleway-SemiBold.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-SemiBold.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-SemiBold.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-SemiBold.ttf') format('truetype');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

lib/fonts/raleway/Raleway-Regular.woff2000064400000173434147361034410014076 0ustar00wOF2�����?FFTM���h�p`�F�
	�
����B�\6$�4 �4��[#P��D��ڏ�6Y�U�S�$�u@���R/����t�ԩ0�P�a�4���0FY_������������"�ӟ���[@A@P�5��ۚ��� ����S"%�J>+���E��.�em�-IWb��[�ad+D�V���~a�ڕ���u�H�ҍ�J{��,�w8�qp�rW@X�4�H�݉���lc��.R9*�u�7��b��e����o��6h7�����!�+z���:w�i�t��\X��zd���MT1�X�����E|O�NT���j�ֶs�컉72���y�(Th�Os��"�#I�.�%AF�������������[�6�'#��%;G}e�6�d�M2��sf{�M���9m�M���<���H���d�T_^V���Ą���+��[�8��c
����y�=�̵�'>���&��v�lP��{���R^���&��=M
v���3%�]��?1- *ב4��6�f.��?����	eI�d��6FČ
�y�&D&(7k���y5��2��j�y�20�����ݶh�,‹��#�i>�z�E�'Wo�]����
=Q)��) �[�Dz�i�������?�ϭ�d�4����}x���jJC]5�4�B�
��F
k� )v0a�*l'ʙs"�m���z����c�����A[A{!Q�`��l��7L5�������C>����̙��#Ž��F%$O�D�,J��t��P҈-�@2�I���~������+��>T��]O�{U�ug1aQ�F1Y޿�}�ے���yB@Y����mj	Ȅ�[�z9m�L��3a��-	![HX��p����{��W	�p�n&�|S	bAK���{tbu� ��e��������ݮv�"��{�.r���"�m,�$z#$Q�#�%�����A���̛���fWw����%3ss���$�j 6�`�n�dْ-����sߊa���&�'dH[��,���,���D�U�0@6%0$�Ć/D�4G�Y�@�h�wk�����D�4&�<��6��Q�Y�XB� �*�q'��Y�w��/�-9DN��l<'3�ZpJ��Xs��3s5a�/S4�jpL݇�/�W=��H
&�$A�A��X���v�bd��Zy�Q=��w�Z(a�Q��Bt�]��g��%I��J��n�������Ps��m�i%B���)�^i��sho�o��T��S���Su훩��v��(��B��Sѿ�1���)���/L�C����^�nah��Y꣡�V:	2�R/���Y9x�ui�O��7��7����V;
�����*��t�:@��N���ft���(2�r�ee�|��I���s���*}��,#�KhE��n{�Y�AeY�8��ڎ��CTߙv%�0�~N4�~㊟(QY#F
-��Nl����e�@B�j�A-�
�|�e�+�Y�<3;[_�u��	�$�_����<Ͻ�'`dz�m\ì���26�����?2��y�wS� �n&� X�jk+���>�ޗ-��=Lm������(�vG�M�OlK�7
��đ^��|ƋMfڷ��"ֶ&�{
�A�X��5��iS�'<m=�%�#'s�#�aS�	��Cak/�Mp	N�������Ҏ��x
v�J���Gy����J��ޝQ�ҫP3�i�K�i�����%_���4U��M��
��`1ճ���=21�™�w�1�
�����Ëk��L<�N?�/J?����'ɞB7w�qp�!@��%H��,��l�d���p/@)>J��Htx!駬����^���=!'��Wo��M��B,g~�g�2UM5e3E�O��|k~ڙ	���d�iS��{o��|����ۿ������sJGlO�!��!�+����J��JWkdy�޴^�>����g�ɏ|���>��fw�?��?4����F[Tӯ�16�q�Jj�~�e|�b��G��P��TI���e5�o�O�@�Ȗ'O���Rv���ֿ��!���}!��@��	I�,�:��0{ZQ	,U?��Z�]=���P�Ѐ�ғ.I��W%���bq�}搨����ed�\܄@��c�j��/�DZ����Vۤ��[����x�����m3�ѩ}�4��?�&����s��h��)�)d�R�)k����
XOpz�/&|f�ۅ�AhA5���
3�^ �z0B�!.t�y�7��߻������ ��"b7��]�N�?H������U*\��1�Y�Ǘ��Xk�3N��h%J+��g^�o�>�s�Z��6"""J)�˘R
Q[��B��zw?��}�i5:����!(����ß�˕��k�*�IB)�2r��-���s�ݘc6Ě&)�*�����h�R4n�7߰Kx�}�V�[�J3�x�G:x�ש�S�VD�XC�1(F��f�j�l ���� g:��y'�wy��H0SL�A0�`Y@%@�T'��ը&PQU��
���_����b��_;�DE�ǜB"*Qj�3��6
������Ϫ�y8;#�{��D�N�Ġ�T��@��K�������� �ߟ�Fr[�_����Ƿ}�]�_�Ǹ��wg6g�E���9���3�N(�_Dp5�Ǥ8�"�n�	��a�y�-m)�0�9{��� ������nąiU�ߊ�b��@��kCڭ�UƿA<8��L�M�ݦ�f�6/h����,��ڲ�r�r�o�G���:��s�/]}��r-uS�w1L�����y�:�a�,�,�e!�p���ڨ�aPP�3-�cZ.�P�&�weŞ*sUⅈ���>�]��_k�z�5h?_#��{@8�L��ٜz�<7�շEHN�A[�x� �?qm��2����i&p.��2��I�dsؑLN���3��h�n��u�C��B���/6�,�T��r�ܷm����վڲJ4j�Y��X�M�=R�>�<�.q]����Ԫq��1-�9���5�0�o���XM��Z�A�z�{6��)�.��,��6���3X]����򧭲k�t����S�	u����'��5�hL�h%�JC��;c�L�闙q3w�<$�#)��b��(/�^��Y��[C)�di�[W�R�u��0(�#_�iN��E=�ՊF52k,^��qayQ�,]s�Ω�C�L�W<f̯�_�s>����
W�k�0�Fe�0aX3�zL�Բj�}+���9I_�
�
��Ko��rԲj��VV�){P��a/}�>+*vU�]�ɪ����o57Kcӿu/{���)���5��C����f#���Hv�k��]�{V[A�m��(��S���L�Y,ۜc�!���_�;�2Ǵ� B�XRS#�Ο���l��MV�{������0���2��)���Ef�e�l�"��c�(]�8dv�0�+����<�5�:e�ީӜ���7Üe�c�,2� ������LaK�������i&aƑ�NݥA-1C��j}]�o�V��S-���@�v�+�r/��ʇ�^��j�
��*��B	(P؎;���d�>l���:/v�8kq��Z-םf`P(J(:��NN��E��tI�4�W�Ȕɔ�T���%����B����Ah"���*S����`b��M�Vm�ݑ�؎„��~D"�"myDQ�t"Cb��c�E1L�,1�;f-�PK5Ҥ����3ֳ;���e�氵�{�,լ��]R��������0����GZ�8�{��du����_��h��è�+[e��`&`�`:̂��~aQ
K*��
m�ېm8�('�n��~�au)�T'D&
�hD��8��˸��6�C4BS��t@'tA7�z�����Y�y兀瀗�׀����=�z�4Ҕ4
3 �9x
o�4O�$-H��$�|&�xM�_��2�3"2"3
�%	=a$̤2�����u��&]��5i�kO:T�D�G$ik�E�L��MD�ݒI��10S vʬ�@��=w p �|�2� ���O1U%B��ӑP��&��h&��f�\��@TT?��} :�GGZ���Vq5����q��zR=͟�g�Y�r(P[��@���@�p�:�
��B"1L��b�$S����22	YY�l|>g �-��
���<ƃ�R��J�����B�PA�����
��l(0��]�\���3�k3��g�[��]!B	��\i�H,��ڍ�^�J��X�|>��Z�:�|>��?��S�nY1`-�}��ce�k�L����:o�.X�#8����v�яJ)W�uC���"�Mq�f=W��s��:��_�LQ����?��t�c��8e�˾G��M��[���?�R�ӊ���c�/utv���C�+��.Ce��ؽь�Q��n>�F����ޱ��o	|K�
�[T$IVUS��e�#�y
��E*J�Up�I5�1�\��pTAj"�ۭv�����z����g�
����Җ�L�W
�vf+�zQ��\bv|���5����L��Vf�=��k�Pi���Ũ�̨�m7�lʕ/-�i�A#��g����+�f���pQ������.��D�{�m�[��!���.D��y2Y�YUV>�G��sx�������,��/�\jy@�J,�9�Ω*�Z������Йu����P���.f�P���(��K������R\��<�5`�6Z���_��)���8�2111111������/�����-�Y	�Uzo�;N�}�>�N�&˲i��>G����'���9$�.n0ϭ���x���DŽ�tYS,N^�H�(ə�'��g�XJ�+N�>�R�Q��5�<n\ >�˅b�$&��'�ȿL�����T���[B�w�P����Z���W[(�ɇa�<�Ι]�r��|�]�Y]��F�����$���EQ�i�/����w@�U�����tȁ�\`5HE����qi�vB=)��pO?�
!���()�[��(m�55��l�
��B�M�}�D�B�^��)�)��ߴ���쾱�D!rkv�șP�,��O� �>���CT�w$���I-�-��`BP�Ӛ�H3�3���ć|V�S������"�}Q%�x����I*��T��t��y�B�m*JUj���J����^o�c��湬�U����~�rR
��i�jug����~K�m�!��rWM晸+� �%5Ee��lu���R��u���
JKO��E�8���R�F��\1��'�O��+��=��Dm�J��)C��*��ʄ�
A���~�g��.w��P�ܟ�5���7k��g6y³�����0�0���S-�@�8=|��P��X?HA��7,�Lw�^B�t��Һ韾ө�.x�\��>�4�����$�]�4����5z��IZPiF��9՘�`A��g��b��ym��5!-ӡRl*%S����Z�f����Y�˕&�4�<d��^��{��d8��S�i�yx;I��h���:��[��,�\
�ȭU�V�kb��s�s����k��]]]]]]�蚘��,\���t%���0\K���x�[}M+��ӟ%Y�����+��B�H�(�,�wx:�P:����j�cKx��9���o�����&���G�e�@B�Xr=�n�In�Y��³tQ� �u8d��捪j�*�}�0��DvBt�O��j�cK���J{�Ӛ
m�K�n/��w@� d8U�����`M��B�,�
^��
BDb��ԛW@?s�w�c����g%ċ��dw,�-Nf�3/�ԩQ{�0�+N'�O�-�s�]PnTv����{2��� � r� A,"'!��B9@�bM�񔁢��5�\��8��}^u�\6C��s��~Gʜj��5�VatZ�+���2/*�6x�v��C�\�x���m7>�d�[���~аp�s)=�6a�K���u]����P|X �%+�,w��w�a���^��l��\I�����ɥ�ټE��ԝ�F�B��\X�0�r���^�лiE�RMZ���pl��2g��jw�%}�7�C�/h��~Yv$]0��@Œ�Gd �AL3���<��ÅY�x�����hlmb�@rP-ǥ���g
(�@�6��ٕ-���ފ�L����V}���CN��\|?K�6�r~�0Bx��ALT�F���PD\
�M�m��LE����ӭf�QTbe��&���1
SVe�b+6�;��9����a�����b�-6+_DS��iB/�B�^�Vv�1��/
�a�E�xh��x9�̳���G6a�Yb��~��iBKG?5�RN_wI�602�*j�*idTTմut/
�7h�pŴIJ���=���>~!
+��Gʯ�p���ɶH�Xޯ�2��G��C=�&>۔���ʧ	���
�����:g�2���c��f_�V�`���R�]'�������-�E�Ԅ�,�^e?���&a�,�zvh!%��v;ף�"�ʡfI]� �v)-������y�p
��Ԩ'7:դ�O���>>�|�7��:��(��P�a.\׿�KW�(@4_�H,]"C�P�TUUUUU�Ԣ)�(�QѺ���w��}��G�c�z
KS�݃����n��O�t�փ��=*�E�N�T=S�\��쮋
��<7�Qcu�n�L;3��:o�U��;"-��V��J��f����vr噜	��˚b�p4x��Q�3'O
���"�b)Q�L9j��a��T�ԪרI��6@����\.�UITH}JF��)�Q��U�}�5U����9
��87q߷\U�%��m���p"��D���;�݌n�L
'qUu����kd#Q�@\����ōKߦ�U�V�����$J�-��<R�Zi=1����v�8���p�勲�OiF�ۧ���PLd�*�SB�EZ�q��.��i�=g
��W��L�R.���=S�N>!�� �"�YQ�G����J2�p�l��'���Q�t��Zi�h�}�A�����i����
�
��@�8Ju����2r�0��4��?ebyY���,`a�K����Ư[�o����$��[���0���� U�@ʎf��;8�?i�f����=���),���1�T0m�-su�l�_�PH+	��Y�s������Y7��$�����7�}��>I�%��?��ޜ��[��'39�Y�=��w�CgW4[��yO*q�6h5YΛ��v��$l�?��1��o
h��̥���)W�۱�tQ�����fT8��I$c�ueD�,�r��e �&�T�Q�U�l�4�wi�t�tJ�n=8�q�O_��-�fx�sya�L���4b�М��-�K�~5	�Ϗ�$�;R��UE�`G.�.�C���~���u	F��
�PҠW�z,�;����n���7��9j�]�!k(V����D{�m�6Фm`�֞B��eG^ez&���[���	�.g�jE���<���m�}�2�(� I:ۮ(�La���&�P$��OSܳ�JrYΪr����ͣ7�a4�͍cV|r&�8m������Xf���[k��r@�w��Ԑ�R�
���'�琽Ѻ�\F���f�z��?�ZCD���+F�%(���=i�W4�Q�������V��T0ڐ��Ɯ�<�S�߄u�G��{}��y0�Ġ�A���Y��O�Ɣ�_[)T��l	=��>�����o`���v�S�T��zˀK�������C�y�I�s�^��2ޢw��/r�U�p�]G3i��q{Z�?_�y��;R���K]�h�9�bcl��r^u51����ף�7�c6��Ϗ��s2��>\��vj��ݏ#���-*m�N�`��X𿮅GX��<�d-ee�
��LQ�z��0���N��1R��V�l*�L�̤�ˈLY��tsXd!!�(FE�Vr0�0U�V���)�ħ>��J�
EYYYYY����H*U�R�R�b)��Y�,eeeeee�
K����V����Q���H�Yw��D�!G��tYS,N���Q�3'O��
E�K�Re�Qk���Rm�V�FMZz�6��
�\.���h�: �?��E�L	Py�Ah��Y�'@u�;�ua-��}˕s-7n섄95&w>�Ap�ft�`��8����7�p�lU�%�()�Z\K�۔�������H�D�Ѣ�Q��J�Jk�|�~ko���?�hO#.���ED:��n_���
YD���H���)eo��E׭`��ov��&^@KG�t��b�bU��:�I��>2u�L����d2u�:���,�fɃQ�*U�T�J����I]��:TnL0`�+r0	����1��w�O30�!X���F"��:�L�,I6"A�Xm���v!�� ��1�n��\��,_:�<_��m�!�b�@�
�짎~%k#�<ms��η���qj�?=����Ÿ4����y�����]R\�hHAFQ��֭�0LU�ը�*uTl�4��$�{_�.�ѧS�t�)�|<�<f{Z���@�����S�<7�Qcu���vf 4�u��y�̗wD,ZZ/�l�-�:�eM�48*���Q�3'O
�����/%8e�Pk�@e��U�Q�������H���FA�<�U�]�?}��7��i@]�p.w�>WʵܸM�N�T�{]�g�ftR0Ux��U��ԑ��l�\.���rھ�Yp&D�#�Qu�E/F5�U���2O����lg����'������"��)�4�c�T�*�����]�BQr����o{}d4?Z:��`��3�f�b|.{T�7A��RE����e�T��j�)�J����^�C�1��\�\��8���<y7��P���2�5a��ER�_j�m���_T�@i��O��4DtXB]y8,fZ�F%���<`�Є�w=ް)���ʑ�C�.>��!�#����F
ŋ���[*�on$|k�W�H�Y6F3��#�9tHHmG �#��v֎�m|<��1偳�!.�\�•�v��ݓ{�k�k�E��<�	Oz�T�u��Moy��;���T��L���ܗ��׽�|+"�[���y�Ȭg,�*���C�
��Eg���I�>���6�f��� M�<7������]r����{qli���A�4"�����?�4�o� s~��/�
�P�n���?�ԫ:��l��՟|��H#Q�~�+�}� �(FES�L��.ݑ?ɞ�fge�OF�zc��Yl��#"OiΪ�G/��T�2UJ��i��|��Em���!��	ņW��T�,�<����=��o�_�����s�s�~1r�F�;.��:;�p�}��1UM�8�&Lf�.3.n�9;���q7���-��U��	���Y{��_gs��Ƿ�F����Ӝ�����Q��|�[��;&�9`�C�^y�%�����)@
t~#�T�ls���ك���݈�B��(��(�*�y���%��FةH�h\}B�f=��p^H�s)Р�V��oV����S�j�+���y�QOU
��it(O-#[��$�OX����X^ӝ���z�*��;�7�V;X��62�vP�d���Оjj�eV
޹���y0�W;�i%�L8�
�S������DKa�O���--��$���cbZ�D��ߦ�z~]ޱ���ݔ<V���$돬��ߛ�򆄗G�a���VR�x~K���>�����bH��k`04�����p,��((�I�C�e��i�}u���ְӹy�����p
��%6�J��6�i�v*�7E���m���7bӒb9���>�<���дx�	y�jox_]���o�p��$l}ݨ莆)տ�Mf���X�b9d�\`�,n�܅<�w����HH�&l��Lɪ�4�)K���*�z�tӾ������t�K��]�g6�f,讻
D@B)Ep%����}\�il
G�`'���f=�������e��5v���%(�&�J�1���
��H�Zgl��z4`�z��*����i1�	q��)YQ��=Z뢻V��w��ʝ���и����ܠ,��3 ao��n�9Q�ͧﵚ�L��A6�hD������#7��r��ۆ��R�Q�����q�q���rg.���.��3�� u1Lx�/��֑\b�М�y3{�y�#�`�Y��m�# "!�t����gx�Sj��E�'��Uo�� ]�]���r�X(v�R|܂���o*Ҡ�`�V.r����V��ьuQM�єߙ���W�g�S�t?]��0r�?�`Zm�Y�l����gidޏl\�Gf��!��-�pW �G�b�Lb��ܜ�p2&2��2��a��{3[^i�ò^��XgΜI�~3�c�{�w��uOl�#���q}�.�C�_���n4y����|�@(K��r�V���_)�����;줠�jm��%���]��0�}x�S���_uG��Qv�yѢ�!f�17'�O^��5�et�	�c�=�e���I���}��v�n$�u�lo\{�g�h�n��%('P�Ι�DY�e{s6���]��w���+�S����K19o�#�˰1�z`����'�_�2�6�ѐeQh�L��d\1	��of̫��b��ۉ]���<N��?��I]�ٯ4�4^�t#�~��.��=��U�؂s��L�-M��eJ�qG*]2dʒ-��ǔ��;@a-b!*�]�BQ��VJʔ��tW��N+4LT�V���ѱ�k�X���h�3���:�N��Y,kt=q�V�����߀���0�s#^5V�Ae�e*/o��c��Ь9��޽aZ�3sf^1�~3� ���QY���>��o�;�G��s�*�~g����y��$�I���y%���{�
#]��.�	G�G@DBFI�FNr�'_A����B��ʔ�vi�T��1
S[e�b�V�V�z
�4i�ry��6�vW:�ؿ.�E��	EhE|&���s�/E��QYPۢa�p0���A+���~��M��y�b�2V�Evq��IJˉsZ�j�>�i�.\}tW�7n섄9�c<��|���0ͨ� S��'Wq���A!�YW�x� Q���k�m�����pu"��7ݓϦ�
�n�g���c��\�t&��]8Sʗd��t:�~���-�{�7���!�01_~Ļc��l��u�o�q�
�yU/r>t�&�
��!�0���X#k|Wp���g�&/�ҫ�k���o���N�f�{��=�a���3��-{���������;g�|hgX���)�ϝs\����k�بb��+{�Lθ��i�Q2:����|�`�]y�՞Y���`�e�[�tG
�d�2��S���l&uڜ�\xUW��Թ�̈́�A/��Rq��!��l6���8�}{�ҫ�'"�mYշ���kK�!a�DatBo0H`ڛ���:��U9�x&�)fˡ���T�%�tk��8�xn�l�n� ��!B[]�A[��-�9gŦQ�;
hG�"��^��{X:��*j?^/c}N��(Ҕ)��v��?���_d)y�����.P"cb�]|�LƜ%+�l�m��ث�R	N\;%�i\̹r��wGy������Lԛ�Z�-c.�[2"S�l9��y��en�;@a-�[*;��I$�o�ܗ�)K���0oz;�n2/�	�z�7��w�~�l���/��6l6p�>@A1�&Ng2E*�AhA�w,���Se��Tu�4�o5�
���H	�]W�PĒ�ϓ�����견�Dwo��#�-y�߀߲e�9R�S-�>]>7(o�,&:L/$z]��e�
kK�]$7�����ڨ�m�H�5���,x��	�UL`+�ql8�*n0�a/z>�PfCG��+$��D�&��)<*��<�y�p�2�m���G���}S���ij����x�F��<M�6���;a(.����{�`��r��\@>�x�W���o��O�$=p.������d�[^z3䣟BX����*7���g�2��d�fu�wL}��]�]���#`�[�R!��-�"��w%PR"9��z��"6�	E)�1[F3[�$ۂ��l �(T4$Kl�D"�H4���V�v�]�(�Eĺ��t�����d�pc��&��'0����͖ �>��Fe�
ܖYQ�H���Ȕ-W~)�+V�|J�Ta:�*�Q��D͐f67�cK�	`�\�%�S�9il�L��)�Nk]ޞ�K5@��ڲ�#;)VN�C�x��ˮ���: �!��}~g|�	��e(u���10]t��9��(%�9������J1�e�խf�B:��s{�W�u��bnNV�;��Ll̇�OxΠ�<�i�o��7<�o>2�˪1�c܄ɏ�8½	��䞚�w��`�,h�S|�1fz�<��4�i>j��*`���e�D3�N��x��H�'Xk�tq�=�	.�-� M�ji�i�o�HV-..*~��`C
/#��}_���&*b\����汱��mp����@<��a��$+������������.E<��W~��NY�/5�e��i����S�lK6y�+���~������KLL�W���Xa�S�W]M���Ps-Kq���V�ƕe7����%�l<�\y�����7�x�M:j��Uͣd��^	|�Y��o���Ƹ A|r��>�%|?�o��X�(�+xaΤ�,�Gs����������r�9�������֩������g��l�~��'�*�(FEK��)WQ(&�T�Q�XC1�31����2¹O<��	� �Dx���}���0�0~���+'w�(b�S�Ԫx5�khji�zX��c�8��B��Qj�$�PK�Ce�T�15��:�4biҬ%\��%��q
�������X���oNP"M�����z�}-./L8"�Q;Z�b��}l����C�O�`_�g	b����4�����i��U�&�5{�m9��u\��A��Qjz��0
�����:�ze7�!�����Y�YrJ�ƭ()J��I��i0l�`.,��N*B!���������@Q<j�V55Xm��~~��+I���q��'���P{2�E,����fX0���'�s�[\a���Z�+[��RdS�:@�1���G�mK4�WU����r��.�/��z�@.u�3�ò�8�͛V۲{K�[����μ"R�x�����ې-����u�x^,�h�N��{r����7��T`�X6�,JW�߄W9�8��tk�?Q�S
��mɗ��*,��b�X,��d�j������	S\
��UV��S��N�cT������7Q�jI���=䠣�nK��>7q�W�`ɺf�QX.U�U�I%�����%��?=��p!ץРvθ�x}~Ys�ׄD}v+�QU'�"(�������RVǙ;��jx�Y���{Ѐ��:����Zت06�r>��J,��W��4-�˪8�~P��\lN~*ڸ�3it)���^�d�ot���W�Rz��I�B'���%�����}�Xr8e���-~�LțCJ(=컋�"����"`��$�,%��I$��D����<1O��D��






A�3d�A�b�H�$CR3l��5�
j`B�`۠-˷D����;�#��~H�{��#]�����h�zr��I���0(��j�kԤem�
��-Dȭ��$�t}3l�o�6}B�/e	���lع������\K���;!�DN�ŝ�w~�ft�`B<N��N@	E�F�:�H���Y�)�!��P�DQԝ��多��֡�X��|�ٽs~b bDY��"/4Å����YS�� �(�(�t�J���λۅIz� �I�8��b]Y�(
���¦�$�O�i&��� �ݸ�>@���
Gq�c�.�%�T?�kpR���w�\�	��?;���y��F�D-�XdG��F5�d�l�m~���Ai;6]�l˥A��/۔���_;�bV]7w=a}Z��l�����w�Y��J�^a?�f�7}��@�$�ԘK��P���ܼ�Mn"�j#�u|ޝ���G�L��eο§tG5�Ԫc�0���£�ת�Z~٥(ir�G��Ĥ�*�R��Y�m�Τ>�Ѵ34;�(V:1[7G�+�J�O�S�;p�V��V�/�&��N�XD>���)�!��YF�f��d��s=,[������Avs�L�	�8X%W^_�~�y����&�]-���scy�1L��zNJE��v�i)͛������SP�c\mF5q;�S-�e�^�=���
؃��Ǚש�sE��S����>~v:puy�Orq]����g�6�?���#�R~�hmL0�m�Y��Y´�x6�*�2ƞ}MS�G�<.���I���o���K�Fk^�O��)c�O�,�m�'3+����>��a�)D�Dp��:e��m���D{ny�r��Is$�������Q�i=�þ�����.]�gQW%�t����⯇���e`@4��eş{\W�D���Ƒ�LZM�����!���C��T� �2ڡf�ggee��ЎS�:|%�K<?V;�K�%{�{&�3��|�Lg0Y��ᣩ�iN�G{,�r�+�!�]
�R�g�`��K@�QN�1�̅�&fC��.�˿ Z��/�&X����C�&d��`a�Q�s�"�|q��.��pA6X��x�4I{3���>�9����d�@=)$�dj<�Z���D"���)�A��<�Mv\ÀU�t�(Z2�>U����Z_�k}p.�v-\;�cO�F�K��Vhc�C%�Ō�]ؠ7F�aF���1�T��[��X�},�&�������JW��1���	J���t$R|�du�	���@�9�6Q$�}2=�-W�2q�S�Ri.�[���b��c��l��5�]�����*U-ǚ)�_�Zg���}R9���C�yy?>c0˟���~�J0&�Q:'d��7e>Em�XR��m���\&�+o
~.�ӎj��Tn�K��[fy�ʬ��䶕xmw�C�Ɨ��6NT����u��-o�5���7h3����)�G�#�1�e��p�h//�M���z�a��s�m���w��7��^��n�n=&�1_�)챞>�m�.��j5n����HC���j�輕\��b��zI��ɕ.s	�p A��z&!�<������0OD�ik��g��]�sxK���������3��L�,��f�}v�^�[]zs���'P��� ½�g��E<5�6L�T��)9��ˉ�E�r��]]S�t�뗡�Ʀ�]��}�<�8�
�,��Ӄ�.���P��<�ȓ���
#����V�FMZ�m�O����
$jd+��<���V4���p�mN=�s�>�}�Oi��r��ܸM�OH‰�^��|��駴K�\SХ�/*Jii����)���-�!��v�M�!��T�J�Z�Z�myJ�/�/��,6��a�X�߈2��6Q��|��S����Cl��"�[h���E��Oi�����*ū�� � K����	-�a�'5V�Q�?�ח��Ԁ]
ɔ���B���PS(�[�[����t�%mTg��gvg'�s�V��`�y.��%կ�k@��{���} 5��
�4H�T��$*�\�/��m�M*�TR'�Y2���{
B
�!@�(���Z�ĵ��Q�[:O�����~�����횢GCO�Y��20N�z��O.�xgm����?P<xL� e�A����(d
��0d���Y�X\<�G ��4��]2"S�l9�\!$dŨh�&�B�P(
�L&?Jn��U�A&���.��>�g��o�`�o�+ύxa�X&0�铙��:o��3_�Y�h���jU!���eFQ�b��c@G��)�#�	%9s��e�2c���-ƽ�
 W.�o@�䫘BB�z ��&�(Ȕ2*���}7�M$(/6,9
(�]�.��[�*�p�6�NHx������d�E^Z�+��a	�H�*0Ԫע�r����1d��x�he��oLՎ:�s�"����_�EY���L����:8.�*��<s(J�F����,�ݢ�P�a�1�Ba5����^]�A]>)?U��P�[X��^E��Ilr��&94��
C=>������S:TE�R.�Hl'`,Ĝ��p�r�Q��-�F�aH����-�"���Tvu�C�x9�WC���b��@�\ɴI+w�.�;���9�U�A�TQ�� �H
�F;��a����ݒ�dw�.��m'}�:s��l��Qt/�vU[7w�쩣I`��P�M��0
DTe|�f�r�P)&E�]���q�>�y�ٖyόa�HL��#��q�����ճ%�A�#��b{�)P�j��3b��}�ش�|��y��H�>�_����8\�c�@�H�"C>*�� SRe�1	� �`>�|r��3d��g� ��D�
�O8�2&Q|�QF�;lȰ������4���.�!ѷ�|r�A�)�5Uwг��4tՊӪf<���<h��!H�`�!ϐg�l(�Q��!e�K�ݒ���o�_\Uϰ=�/�ҫ�y�RB{���p`��R@�P��s�0�w��W#u�4W"^!(�׷Ŭ|8�'���ɉ=�߬��Cb����pBR�V�X�g:���aP�� u�"t-�p�T�Z�������R�*��'6666666n�����!""�,��,""f""b�dm($�$��(��|c�!d�,�U�+�_�N��hJQ����H�J�R�UEJ�~�6\�G�8G��n���� E�HD��ry��y����8�K5���KjR>�	Sy�[���-�8�a�^5��nbȀ�d�^aF��333Lt�Yg� ��6`fb�O�ۭ����W؄.�謳���O���)rz������CU��9������`n�|���/��m�>�7�g�Ms��$IB!����TF7K'�
�P��0aB!����i;&DmD���
䤏]	9k�����Α�>�f�H:���$OȲF��Wд�g[��N�ՙ�ȱ�5�]�I6�Ыz�Zȳ�C��
�Q�R�OY���t_['<���<Q�؆�GD.4��1K�u�4w[m���ؑCM�a��r
+���+]���>QTD��:c��)��K
�T���fϏ�Bg
�2�87�gJ�Ed�c?Fb|��Ii 8L�Pz2�?�04�g�6ī����V�Ʌz��ą�7��DM��@�,�rNsYq�Js�\����2�f`/���`�� �,Y��U�$�n�"�S�Ũ�o�U�.���=Q���t��A}�K
|`
��r������~�xX��G7�90��7$���lc��eS�d��=��ޛ	� �F��� �.�9�j�����ġ~��_����
�De����IT�R�T�����_;yE?P�6r��>��p,D�`Z
D���B�����g�D|e`���B�M���''!�o��.{�^kOo<����#�2�M��7ۓۃ�{�R����\��#,6=�====�x���K*{
�[O0[�@�z�َ����p�ð&z}`eH��&�;w�0�"Q������c@t�a��qw��u
���Doŏa��ɩk��c�v�X���$`x3��mX*����ʍ�.�h|̤�ɈLY���\����pe�#�.��k�T*�e5�dz(z�.Fvw8���&T��(�n�K�����h=L�N2d奵a��<�q����uL��O��ԉzzN�d�I#��䭝�AA�9��Ӥ��[b媟T�鉲>E��M��5N�*<)���;X�lHРΎ��N9d�3L�?dã�f�g��1�?�S2"S�l9C�u�w}�m��y�.�n�U��c� �M���b$�kU��c��OT�74�T1��>�e���{�>{u��60�I8ǯ�8U��Ö�a'}n2�&��'EBFQ*h�o2T�ɈQo�5�mXxD�Bӏ�Y�e�#W�wt�^1KN����8��i�E%=��:3��w����/��d��a�a�d�J�����Ҟ7�qNms�LMMM�N�oߖ/L={q���%�^ޤ���ސ�����Ҕ)Wѥ۲n�gĨ7扚�6,<"r��=:f��U�N��n���mŮ�
��5]�1�VP���X�rM�u�:RqxG��:c��9��K
|�rM�@�����ݮk��y=>������˞@�uM�u��� >�9?�&V��@Ϥ�ٳ��8^�Õƃ��'����,���U��ƿ)��a�a�,천CM�łkw�敻����t:�N�ѷ�3����hΣ��jQ��؅ÌG0ӓzO=GG_H�zj�=V����o��7��]�qT\��u�:���H��6���#���+b�uCL���\�P[F�BV��e@wELy�2��142�l�4?0a�L0�I�Z)Cw;�W��MOU����uϵ�#��u$C��},��qn� 7���%�B�9˵��]�k�f��:9�yУy1P xS�8����h�(j���	wl��#sC��q<p
�;vl���cǎqǎkh�;666�H
:���T��
H`ls�5��(��b�
`
Y�`ir���=I֓I7�a(Y��\K044t���S3>z�\ofH�����u��F�t'/	��W8�f#Қ��=	���
om8����RF0b�b�&7�@딚�z�<��E���4�"���;_�{A�	����r�#V'��[*��ׁt�["Z�����bn�TN;�\�����^�X�����ѣ�Jއ�p�e���ĩU�jGcWy<��X���'�o���$���R+-:Ȯ��u�t�#:�G�.z�c�v�F/m�W�\KB�����^�=2iMҲ]�ggR=��(�=���?7:���Eڹy����f �!ړp�'}!+���Z1��`�`����zhj�&��G�n"�Hd���m�/x�C{�;��0��Z�V���R�Q��E�.U�ɈQo��������jWĎ�.��f��b��>J�u*v�	B�ڜ��<^6�`0
c��0�}&i��{%#���hU˘�$4�k��L#�v����iR���|O��v���Ƶ�E&��0�������;��B�G?�v�Պ�Q�l���pej���t�0P�bT�;Ov&��k�Z(k'��;o�x�y�iw����9w2�(;.m�Kz�2�I���6�Ȓ��r�3�X���#���ŢY��“EP��x�'��ķ�!�Ċ	!B�1?�Ȏ*��t�_l��{G!��‚
�.����3��eIz��І}mbE��w�ZA��u��:C�[��u�]���dž��=��3YS2��K���?�@����R���C0�G��b��2��%��-�L��V��:�6�`�f�)&L�9�q�d͐}z��B���*do�2��&q��S������������gl���m7s
tPSGYj�$kmA�b��7���/Cj��l{�~v<�\��Ŧы���R���T�
�)]H=�>��oD$6�ћ�Dͤ��ut:��;S,�0�ͫ����֢�FK�ͷ̲݊]�m8sަ�ٮ\���m��<���k��|w��-��K��1��q�DY�� !�EF���2ؼ��v���bTT���La,�Qht�
]b�ݨ�w��գ�N�.��x9���@�.�t�f_Bw��u��v��}��i#�_�0`�a�x��x�3+;���dp�ΧΜBlY6��~R���Q0P٨�Y��L0�;9��uF������3%PP�)���乁�)U��(B(�y�i���l4c���g��o����x��!� u#)��_UѶ);_�g�r@ɬ<ҩ����@��2�D�5+;W��F���"�!����
%�QYdU�#*�T�/��+��:�ZQ��$�8����nS�9�I'���%��2�M���M��
��>����
�8����
�;�\��++��૖�P&w����6��h(��Ig��3K9�hxW:������n����+�Y�3J���μ�k���H=����Ӂك��83МI���N���\�&�]���?6��0wY�/}�-�l5O�2F�O�z���Ź��Զ��sN�`i@>6���R��j�t�߱O��V����<�.�-�C�E\j��R��9�5_���)�tv����SdY}�n����Tn�Ě�f�H*���W�C��ߤ�������u�����t����o��JJev��<A�����Q鳮��j?�o
�y)	��{"��c
�{Vrwԍ��t:w����<[
W�U�\nU�$��<o�q�T�'a���ÊDG���$��1�N��UԐB��ȫr;Z肜�$I@���G>�m��Km�ˮ��S��|?}F��k���⑺��p�֋V�͵�0�v�"-Xm�yg��:�=$��)�{2[0���J|T�
��\���9�'����K��[�����a���T��BF*���� sO�1�K�`����4�������xѷ�~�廵g��WOH��x����Ì�U社�f.^m�XZ�(���\�DT
��c�<���5�,m4�8�'�g�h�S�f�]nݤ���E���R÷uWVɳ�B��(��g"&�%)�X��Rz��=�G���G'l��G�,M<�@{��3����v������'R����'�|��|�eO�(�<�xc:;���\��ﮌ1-9���&b
` 15�K�׳
��R΄��[3�`4�so
(=��;@�7�oef���!���& T��s�A�`P	�Aos� �����3��-ۉݓ���/]����s���a�jhb�G�һ3�Q5���Fx�Z?���dͧ�Yz��.A��oh��1rssl�;bO�@7o��KJ&��#��|bô���[ ��&<z-ag�����qE�I+�V(����sU�S
(�A2���s��;'qzUA}�MgyJ"�[,�<\ )W�޿v�ʷ*��Ƕ?u��\T!h-�X]�-\ȅ^l�:�����"���:�}���|�n���7�="%1ˈ�h�s���ns���Šނ� V�k���n)Rwc�����7�Ҫ��ں� �'�!�M8s_+%J�/j��H�K�#Br0�c
�|[�Hl���m�N�z��R�(���A1�h\h%;F�
@����nE<�"���<�����@.N��������+�幱����?u��bL*5XJ0��,�+Q��W�/��S�����n���]M����@�SV����0�R����ę��H��yKR{�H��(��y�h��1�����۝����'V/�6���t���x�X�C<����	�|��CI�V�z.����;�wEpX�)\ȅ�^ph&�9j�^Z�p�.��	�V{`��	F�_�F�#�~�F�bj4a�����	{�-�r�L
������)�`���FL�[��-��r�?-H"�M�0�֞t���+�7ބ*�$h�EJ��!C*1*�:�l�A&Ts���p2*G�F�f�yD���f�}��f!��'攍�G7"E��%&d�Y���(aÆO�T/[���P>�}Y`�Xe�����5�;��s!y�\��|�$��3qt��K��ͨ��%I�ͧ�����)A<����s��\=O$*�j��T�ӯnl\�Բ���ǎ�8Y*���6W�6.>����_�������MK͐��e����}��켿�CX$�8,7����	~_�/fh\��G�1YH���ԙ�L(��ɳ�/�#���.���u�?&�ݯG/�i{�_Ϭ������~��������R�T8�ຜ��q���-��F�����3)sa��-��hwIȎq�.�+C���w^<8��������Q�:����{��21�zUA�ءq�h�q��Fж0�6u9|�G�u�Ԍ�v,y�긖ʌ���
R�TY��x��<�7v�h�E��I��Wy;~�?G�6�����$$y�$K|��'UNpخw��dg�`B��'JF�ɸ8q‚~��d��
�;(�G©��qry¶�u'����F�"�޵��r]�����]���ɘ��"��
T�X3�X'z$�JC¨dB���`6"w�(@F� U��0;YI'�A
�ŞdR9OJ�R��`W�u$�_%v�3�n�
�����c'�]8�lx+��14X��;{gld��be�6͇wI�Z�v���i�K ���7`�Y�p��-���J��󀙜rD��X���b�_��;p/�>�,��et��[4��*>�&�^��*�;�љ	�����RJ���v���4�SA�4f�W����0"�s�ɇ��2⚽��q�
VP�t��\��iR�Q{�e.tR��!�R��|_+���Ȭ�~M%��V�Ԕ�l���.Eձs��5CM�]YGZ��&�r!���<�h��ܮg���5��_I��$˝@��n�gU�O��G��0�('J�Ĉ#RC-u��H�&RڴK�PF�.�z�
P�1j�c��ՙ>�/Y:&�j�Zu4lԤ��3�l��
�_@",��9��B�dd�jk�P��j�jc�?`��}GN\��Z�����Q�i�E�u��P�A�	���0@`*�����(����ܖ�-�����]�d)sv=9�%�=8�]�\�c�r��o�4������a�x?=���y��y��)_�L��KN�	�%4����ҦI��/��F5�������V�}f���3�)���i&X�TPM#-�d�r���jmw��庋�bSv��f\�"`�6�L�/-~~2���z��K�?�$��C�6��O�#����21�V�j���Φ��8�L1��~�5���֔�|�(��ɸ!�J�CD��H\�6��٩���-�w��W:j43��~K��L�ō����q�G�"��q��t����5ƅw��1�|���ƈ�UK�_��X�1�7�*�����;��������O�D��l�=1O�_{�C6$/�o0E��3�,s؃ey����?Xy����9&���a�"�ߛ#M���+��<�<��n��	0o�nZ�M`��:"`�=.�ƛB��0'�_ӻ&Hy�P\��������
2�!m��x��ʹ�M���b�;���f�{{=8|':q\���#9��=#���v�k;��
�YZª��U�Z7�b"8�FaqV��;�Y��:���s�ȉ3=���}b,��V��v�},-z<1�]Ӿ��`�n��t�8O�ed��6�2Utx�kω��]��O@���FX�,��o����.TϸTv���S���E�Î;-N��\��·lT���|m��&�yE.�k�Av�>�R5>����zc;H���&�aǝ'�EW���n��z����p�:��)��,AE=`��?4�GЛ���r��&�N�J�*��b{�������c��fp x�`*Đ��XB3Hw�CUT�NG�lAG�$;I�4l�D�~a˨�j��T��C-��s��5kYϟlF5�Rcۨ�DC
EBFC�=!�q��C�r[��@�C���|��)JB�&�:�-|����ݱ4�q^Xљ�i�=�s�ζ�k4�68�l#b��a��<�	���u�(
��9ES	��9Z���g-&�P�1�&,��O�&0��,2�����w���N��t���`�u:3��G���G��|�FR�edu��͐��ߥg1�EpA�i�5X�T������jU�uj��y�|��|8���.2
M;��J�����Ԁ�/�ԍt�n����+[��_X�!L���Gh&Q����\��q�Us�"P+��P=v�3f�Ie�}{�ɧ�٨�۬�j(N���K�N�/
�J2�X���ۂE'��;tq�������o[N�dN�t���
��K0i��.>*����Զ���-�1�|����mS�P����T5]�*"c��^@8iR��l���AD���<M\��vGʨ�d�Dא�b���6!�cK��%7BkA"�J
3�1�@cJ)�.���>zF?���G��~D�ң�>=2T��t�s��;�F�.�p9B�5=R?��Ճ�]Ā�0���k�X<���x����?J��Ɏ* lb�� �`i���/��Pr܏�T^�S�g1P�c�j�Q��j���c���fm��{h��
)�܆DG3��<V�K��:�M��s�b��0>���5z��!A�~T�����;
���1)	��&�Jjh����kz���l߳Wv���3�p>P�#�;�;O�B.�sq^��k��O���{`�~�/0r_�Q}�X�5��%���m~�|1�G��OPM���2�)�C�08$�o� 0� ����nj�h�ظ��GWE�eI&����)8�	V����m޶���`�V���ފ�u�D��qւ�"C�%L�

r>D�BMq�!�v����Iۚ�U���iqe�
�Xd�W7�6��֊�"��@tWt[�+��]]���E]�QBT/���Ea�_���d��e�,��Q�	�}^���t�m֒P��;�|��ٳf�1-m������}{:3��yob���?P�d��7R�#f3����b'�měE�f��k5Kj1�|�R|S���>����@�^�m̸E���9��B��
L����Q�V�zl
5kҢU�N���@��%�fK-�*Qv�I�5��թ -�����)r����e$8�Za���ioʝD��m��e).�RMP�CHXBr�S��i��X.�H��ʫ=�DB���-���)P�.2
�1eʕZ�[�p��D��U,�n������̮Ё��b>�����w�b_"D��H'��٭��ls(Fp;��.��-��.m�dRVfF��ׯ�k蚪���I�Κu�U#WKQ�Q��kk��*+��h$
��>���r:������p�9�n��N7L���q��2�z�j���D�x*ݎu.Xvpছ=�V:�2���HA��h<���� 2�������s?(�9��r��T�]b���e4j6���T��O��/]x�cسcY���N�c����%T�UY��5��*A7a �2Hk��p�����l�K"HË�D�����M�M!��0�\v�F&h��)��MK%u�I���U~%�$�B>bID�	����<��Ńi�_	�vyH���Gj�g�캇`�)��*)d8\��ݤ�<&:/�?t�5f�6��Q.��H�w�N��j2>�_q�_�C�-��T����w�ٚ����YJ�M�Tb����kS~v[%��p�5{��nm/�lt3=����FÑ,�jL���	ٞh]p�й�u�$��r�-]��²=�dR�n�C{6zu7p�~.��i`f��^<���Ɖ�yI��8�=��vJ~��<3�)�GI�9?^��-읏����`9���ܥ���/��ޓgv�%'�e3��s��٠n�Ǿ�l�'ٽ�߻�H�-��M߱i�Ƈu�e���3�tq���9'���
HK03v����'�-����|�
GyH�d�':D�di�v-��4��L�nd��M�=g����:2�ȋ蘞�M�%b#p%)�£�E����%d�d�a�T�����1f�V G	�P��w�h�47�j��{YW7�1IY�����篗��F%���d}�/ĜOGR`��ߙ6zI��u��z[͐9���rl2�LB�H18ZS�Y�D�6ɱ �����|+�\Җ{6����j���5��e��^jh@�f��+��ia!��
�E�i�(��ET3s�
0*�.�p�"#m�&X�>��Ɖ�=���b��j�5�&#��䦲��zd�d���d�V!�g�*�'X�ܷo�e|�M�I�fAc�T�&bKQ�*�#�\�᥌�Yr�h.�l�Q�&���a9e�4�rm�����Q�T5O��yي;y��%�� �E�1�$����"l�P�&��ze�� =4z�%�&�:~X�Td�[j.@�t��A[X,��X��r(�������O�0:Ω�a�pL3����CR��ƴ���ڋ�9�e��F�*����[�ѡ���u�^���"x�X�c�KFO3���A�6��<�%(t|�y�P�<M*OO�v���K��5��COc���aiJ����w�ذ��{��C{�;�(m�O���%�d{H>��d���e���H�.؃e|�:�2�-�bD0���,��s�Y�̅�"Uz��E� �2���|��h���*�Y�9fE)����gJ��@��g���2$����"x&$"�����=D�Hw��0�sښ�GN�)A/���u�̨�4�����R	f�A��PaRo�ޮl��hP� ��p���O�+B�>����o64�ئy:�V�G���q?A�|u��%۳�a�!�w�ǛS����x��x���b��G�h5�j�Ƥ7&8����`�0o�e��� ����kװ�ٗ���'z���"N
�k.J$4��fC��.�w���&5�~1~�Y%\R�<�&��'�$!p#�̻8X�ñ
)��J�Qy�G���!�4-�%?G��%0��hF��8����qd���3�r2Ϧ�3�q
�������~��q%��>��5?��kA�h��R�K�c���9�D�,&���AoBs8T�:;��O��{t)v<�ž=�X�)5\�R�G[���͎OD8��H��������hH�� �Ȍo
�����P�(�
���H����B"_��`4�@��N
��FB�6eծ��x.w�:x��2��0�EX1��"���1�f��\B�sP��
���o�ξ��c��U�KΤ���m�����u��~}�B .ނ��)�*B],q��x�S����z�f����ߴ�Fs�
��B�T�	���N*�r���0"0Kmb\""�ym%wI��$����V��<%\��(-иzR�>�Ԋ�CZ��NXh�U�
T��;5�W$�y��D��!mdD��Z�-d��<,HQէ����ӌ�cdL�gۂ�{��>�R-��0����k.��Lq/�VA��~�!�q�Ḣ�v���U�,�������p��fw����2DS3k�iCY۰�fv��u~8�Ã��-���_�%$U�����E��%��z&]o�ԥX����9�x��s-�1�ǁ��-��k�
#�k�D4HҸה�C���da�A"�仫Pe�SҊ�\1*>�5����b�J�o'f��=����վ*1^ջ$"��W�*����=n5�չ�\��_!02�&�������~�����Z�-uS�0��n�h3w�f���#zu󩛵��T$3�Y��x���g5g�˙�k,'�0y�Hޘ���-���u'���T������A�:���P�˽d
WH�dvT�������l��g�M�۴��k#c����rKթ|�ّ��:��׉�۪Ysz�؞ڙax����J���뻩p��ڱ0o�j��/l�{�2kl]r*aPI[�K�,n3c3�0���A���W���&$���ӷa$�
+j��/��@XAn,AB9%��Xt�⣼n��@[�gs��b��꾾x�G|P��Q��5�K~���
���K₨�-`�Q�_˘gs�������H�U��K��:�50ܚ�H8$�x��,��	��0d�Q2φn��'Ҭ��ɝd�-�H��zI�Џ��Y|�`���P�[�k� �~��lM^��z_ո�Ɲ%�-��/��>�S�1i��C"K������P ���U�����Ѡ���=x��2:��ͮ<�����M����m�p%k�����?p���[�(?05�)��;�|�)RԬ�LŌH�qE�A�т�����;��.�P�_��dK]�m���fU�Nuqkf��gqK`8|�Qu���w�(�h־�a�{|��2��Pv֗�~���<8rJ�@AM�xk7���c���kC߄%I�D�"3�@54���|E��]
S�"1�*�u%r߇��2���d���,e���_H*�PgU�F���	%�C��@t�$�2!��Y,�}P�ڔHI�T5FcYL��X�v"��TP��4�8�
=:TB(�),-�47t��Wͥ�{RX���y]��-q�f��	�c�XsR���R�^��,7�Y�l�"�J�����<]/>f%z�R��c��k�$T.	׼�
c?�W�Z6T�^E���4Le��+��Q�V�,5��%�O��|y�-���2@�5�
,�du�CҀ��jD�����XlӒ)�x|>�c���DP�+6P�~-��Q�#
��u�d��޼�P�
���g�����x��jF��UM��_�f�v�>�触[�R�g�#�v?6�wQJ%s�=��ى��	ӝr�\��p��=v+آ��U''����G�z�����b����o��V��Y:n6Sҡ1M2�	��B*�`��[̢5�ԛ����T}�Kh�7v��˖����_�U�9����b��C��gD�#3T�I:lE$Z��&�~� ����@��]ʥ�_����̂+Jz���}bŒ�B�ҿ�'O��↦��R642
�i[>�$��&��V�P�v��c��1�Ra��׀�F��m��Bumk�G��5>q��[g���|�J�#��I�	ʠ=b^(��&�)�F�,?���.��o��'r1)Z��^���b��K^�)K̖���K8q�f�#L���A�j�H� F)l
uB�R�J�μő[=���$�0���vA#�4<�o�1�[����]��NЂ����[�M�1����[p��n㻺��ɿ���ʡ�u]2��NH'd��O5��
��&���H�RNSj�0#3�}�߼jɱ*O��Ĺײ�Fl�k�w:�=f�{vA��t� ݘQ��jX*���>�|�����-c�#S�����f���6�p��S8}�p}vw�L��b�#R����ɂ�T-�8[���h��y��#P�/8���t�qk�5D��i=�^�ຓ&��3�z�M��AnƉ�1�$�R��k̈��K�c�tq��Ы�ӽ9i	��@m�k�x�s�]3�d�N\��*6�" F6�0�q�y6����^DZ7P�FB�gMW�Ѧ?�D��CZ9�Z�U1L;,~8h�4	ò:K��=�MD�T�.���A�{�%r�e��'���CT��!�?v�a֞=�s��ͺU�	��46�&R�s1���Fm�UXwu�w�����_x�˷��!1��c�L�=I�������ߜ&�1��`L)��g�=��2�������.��t�Lr��4�˥��#ic�I�.,�`_6��� ŋ��A2m�xGd�ֳs�ƀ�*뀓���x�k1�޳pZ�PA�ҹ���mM�B,�-���~ǭ��E)
�ʹ��+8�:���p��$�W�Z�%���`�c��K�	���k9�
�5�~�R;v4�������H� r��+�%ԝ�H��z��$�o��� 1�n>s��M��t�N�K�x�j@7F�sVec�\'-�CZMı�Ρ5a��e��Bz?(m�.>��W͐�!xiO��3�����c�!pD
�R���v^B愍�0!��T�&��Kq�(�]�
��.
�׷Y�O��7}0��8߁&P�͕��Hh�l	��±t�6����.Ӫ�&��<:��E���E�M����~�ѷ�p>|,_�Sg��=F�7� ��a3�*`
�*>,ҏR4�=�â�$��~2)-���
�+͢�[�z/�_�s�̋%ex�����6[rDVu��hf�k����8\���i4g��d�h$��|H����ɵVZ:����}�x/+�Q%�K��g�}
+y�{=�[8�uobE�t�V>�(
bc�H4v8P���vQ�y��BN�o|DL�31g��S�:R�'�!��,�>��KSg�PɃ�S*�+�yx��� {.��Nf���~ք�<,�N�T�1���Hb�w��MB�ܢX�Y��0�����9�FI��=���j ���ֲ�4�E�M�~=�l"{:�f&�&XiS�G2)ԡ�`��H��v��}��Lpع4{�}�+0��]�l?���,GS
ZI�.9-��dbƏ���(%�J�������iKlX����E8;��P`t�������;�^��Bw]YQ��eaX�?�!�(��n��A}��n�T�2`�.�|�w�_��`��Et�7.��*o��Y�̂Y�^�$���L9w��8�^<X�]�?�������2z�g5��E�ܯO����Ζwn�y�.qmH��ג"�z&hf
��gG�c���w^P��-�Q��W�|��I�T�:�����F��a��>=mS�r�E��:��8�@�\�AVoj�LǦ,o'J�Kn�'`^����l(,^5(�oN

BQ�
k4Y�������Z��+������o��jey���ғ,`(dx�b�h����e�&��2����	���sf̝�l�z�@R�e����P�i�S׶>�:8.zH!恿�s�$�(؋����
�@b�~l}h�)��7��[
��^N�蝃��¹�]!Nb}{J���t*g���������Hz%I��q�֖]j1��D�w�]���>.�4���~���Z�=�0��o��_���<�d��σ��Se�d�
���S��d�����Vf�!�:��u�	���Z�I��T�#�=D�c= �iL`��2@�������Zp�`C�N��BiK��0y\��)�t�r[�:PD+!�*)�\�(�;��D�����ަ٥)�8ӐÅ�=���+\�vɩ[�S�E���}Ϫ>�\/`߆���x��b# KLc��v�h8t�z����ʐ�z�#��L�M}J�
�S�46=*�@�rے��S�@�d�2�o��l�_�è�L��Mۙ!m��T��1�%�C�x(�܌�)����d�R��0��
]�[\�e${[ߺ��JU,$�N�2qv��v�U�:j��,�I�dҐ��ׅ+eZ�!���ˈ��t�{�@�Gt���"d����NH}��j�<��Rv�m�67Lm�5<0�Kf�ƍ��;�BF��W��X{�Ұ��,l1/�7���7
C@җs���X���(����s�#��Ñ04������>���a������P�ڼ[\+4�zM0-��)�
��{.�E:Ҥ�&�|�1-��<����MU&L�k(��"�7�]���N��!�0P�jo�Ah�Łce�=�I��Dʀ�����(~ř])S�b
�FEi>��[#��wj1ym?�^�Ld�ЂZTR,����,F�=��Օ��z��Amu�˺$n����
��p")!��	����+1�(%�	O�nX��	����z��p߷G:��hf}��L�C���g��ȿ,lh�V6d�(ʾ����P$�Tq`k��y��,-�l����q��7G���ri"�3*#�`3�q�F���Ar�[�i$�Т����󈎈��1�;�8�k&j'��d�p.��l�S��0��8�4|�b���ؑ}��.�X,�>������6vY�*C��;9ٙI�Ť��0ҖR~�-ްj�L
�YniwM�)��`k�6E�;I�\8�h,��,T޲
j{�.��m�� ��<;}>�w·�u��Y��)/�h��}����4�.ߜ_�#_{)o'%Smo �w'�`?;p"~b�o�}�������]���^�Y뮉��D�Lc�+��{��T���Cc���c��w����!%�^��1�e4Ă���'F��X���h
8�W��d��7GTD���k�3R�;>�;v�8�[� �܎��z�'46ٞ+�k䰿�h��A4/�^*y"C�KW���Q�dP����3NO�+�նP��r�����B���>lQ�^:00��]��d��rDw�A-��u���,4�P�`�og8�{$Ah�ƭc��:��w�a'Z\�j�'�!����]�wO���M��ގK�(D!
�bcuM�!_�2���CA�~����Li��p<)#�ŭ�d���@T&��.�����z'u�7�����ʂ__6M�*Op\�%��b�4[� ?-�B��p��T��2��`����P�*.Wp*��
k	�ԎIc䔻���,�{�{��E��Du�&:���)$�Z�W�G�rW�n�Fl�3A�:ao�^�0�Z�A��6�Uxu�S�%!'oT����</��lj��$ o24���[������y��v���րsOOo��-�,���j�W�^@S���h
�z�KT�4���Ͼ�㓘>���ArJ��O:ᲈ)YtM�_BT""�i�s?�^�+�&$4�9Sstk��H{V�ҭ[�4�ݏ��w]pF�П`��rf��������:��#�I���ˤ�t�SG��)?�
��)��ċsĩ����|�%^p�f��E��Q�"���>B�s\9��,c�aIU�F5��\��eX�D��6�jhH�3���Z�9�-vJ�0c�|d;bq-.��x�@�s. �]O$;�'��3��m�W��9�m�My�ۤ�K!i�B�c��3;SpAL\�
�V��uS��A(�xr��~�/�#f1����<%<U\
E��&�G2/���&�!�S���[�|
��BD��"�ym��2��R�e� �(=����Qv#�I���u�L�,ԝ��6�4sA�����&N� �uh��Q���Ov�0�#{�/��o�N���6d��2��Á� ��ZSĘ51M(K��>�4�͈���,!��<<��pty-�������I��N8j��T*U^�j���rM�}����+ƿ�V\,�\��"
�0
���o�gQ�������[m�:Nd��Ev>�?q���.U�E����pK
ڊ&��3�0�8V�]�!���-�kxa3����+��q�$��J��K���f���ψO���;�d��W��]7��^���}��	]�T�6��EML��K��f�q���t�p�!s[�	�(�>��.�:������l'b�M��^Qi�ߍ��,֎gS��L������x9=���4=I���JN�pE���k�*���0�O��B��?_��Y�N����fV��0���U`ʭb�C�j������N�3�#{B�ҧD��:M��K9x5�N�0�4�+��}g����*�<���?�,�d�\	A@!- /�ƙ?���k��\[�)���|��i��t��3,�L,u����?��;A����h�}��P�=.@��)l��`<~��'�Y[J�lE�TDƍ$^�߶~�Ts�U�Z�!jl�.�9s,��\�gs9Oi��u@�X(��%-���8��"u)Q�13^�;�����8��N���N�U�*[��"Lsڥ��/���B�ɡ�{���Q��4ln����Wxx��|�qk���K3�t�oJ1��ѳG\�L�[�+�K��W�{�ʲ�X���
v�H����RgS0_N`�f���.�aܟ��t�@#�,�i��tC�fA��u�T>�\'��h�*=��^V+�r�D���P����r���͒9���o�VW�7Է��'ڜ�����>/��(���+�ҤY}E16z	\������i�~C�I:vHgEz����a�Y&}�
�[��DgY�Xc�lV@���`��z��2<2j�|�AF�'bl͢��`�H�;
�l��"-�����
�#sc�ʍ� k�����7���y��Qdx
�{ޚt�*��u>,zh%��mȨ�k���z���hB2��f��u���1�$�	����Iǚh+��ꌵr8�hQ?Nقk$:C�l�0[
b�l���6S|<�<Qa����ߢ9B�����j�*��A���LD�j�PN�Ɩ�J�z۾�6|lT(v�4�`��-y�O�/���ߢ����,��'�c�;P��6�Y%C9�v��������b�z�'�e���g�$v}�z5����i��z��d&��%�E-@0*���ry۬J 	;e6R7I[y����1�G
�[^4���C�)�����j�`ĝ<e���^�H��i_�Ϳ����i"T�|?���#($#����
P���	�('�W�^��f5������i5k4ھ���xd���j�'����NQ��v}�,�[25R϶�K3_�^��(9��^Gj;��~ü=���t�IR�)��|��2uˁɑ�rƴr��Y�%p��M�	�1d֙-����jf
�*��z���'��jqm�N��u%��x!Z[�G��:���?��uvZ7Z
�>�TVʫz�&�Qп���ZpŬ�P8).�@��fI��Axsx�J�����o�kUq��ͬ�I���5:��3�n.���(<�d:�"@kj�6�N�Ou���NK����+"!���mZ����ٳ5�pH
A�"Bk��P90ff,�PV�̧��J�N$w�j�e"q�2&0�5��^kvG�*��k7f:�)2[���Z~7!�!�ܩi�ؤ+�����-��O�n6��r!Z2�(7���.��z����;`�藶�@t�a44�nĤ<L� ��SKA�ۛL�*�m����pc��M�c��l��ʕ�r��:���W���r/��P<A�)�ڰV_̷�0�R��J�&
�d%,&�߹�ai�����2��3*�!���YO_ �i���.� rњj>�bժ4$�\[���o�
ƒ�+�]^V)a5P��5�����!�%}m�o'�m2�U1��ͬU8u-Θ^�A���l��9����g���ʈ���*լZ�+�W��6l�Lm��TN��ܢU$�����&����B�	����韖C�s̄��v����L��-S�p�j����r��P��"���DB]��IG�,���!q�����n��u�6աrl�������b�%o�&��1C�uѵ��x��~>�~q��Ljr+q
�'�]B�w��y��*CAwP�������ȉ���kF�F�FC�Z�cj�Ι3�>�II�}z��O{O��L'4����tG�,�Q��'������o�sq��Ÿ*�>�>ÿ�)=�W/?��Uk�QO��R����qҫ�����(�&mu:��Z������eZun֪��Vf�[�����5XRb�ߟJ�lY�9���;t69�#�∞]���I@7-.�5=M^{��gr�y������
{�i�<�k�$V�W�2^ԩ��adM!�&T��[JdUT�`[�["����Z��>��G�?���w�\�Xd�1��o���1u�b���R��j�{w���hs�mH�ݞ^L)).r�o:�[4ڪ:�� 2#�x�
I�M�2�����L��,ڜ��C��t�
�#ȑe�e�ﺤ�o�-\�W�f�ۆ����S��l�zȆ�ӏ��~>euP��S��Ж���L�n���O�/e�?�����w�Ŵ��%��Dr>�HɌA֏��6�O��e��D.����+�u��u��>/�����_�l��>�@����ca�T�M�S���G�S�X^۰�R��
쐒O,SCa�Κ�L��;���{�^H�_x�����Xm�[�g?��`P"
,�H�<i�e�MdC�xY���Y���1�s�ʹ��a���E�(�܂v����g�
濫ſ���[6l3̿���P���sـ>����U��7kmҩ�	�������J�Ǹ���ovlյ�o�F�ѫ�q�i��X�������AOv��+8s6�ଭ�^g����Ai=�9KLK漬�D�jn�v㟏K(|���_s;Zk#H��8���~Y�$}�))S�2�Me��!g�Ө�G���ufU�fS�O�_�cӿp�q�(er
��2l:�K/ZSƼ4>��;�%0�veҪ��S!w
j�Z��'Mт-:��Wp�&�%%�
��.���.}���)Q��i|m���dQ3�NLY*�2Q0 U��RqP&��l�n���h�b�2&�i����٬?>�����7����L��<� �U��FWQ(D�w��cH"H�6�lZsO�������-�F���%B����w2-O�̱���*�.�LN"����@��kŢ��0���.z�����7�S���\#Fn�E�i�
8U"�/��ߺWW��o	��pg�>��W��}��}{z�m�F��Hܬe%~�����+��(���Y�s4O�vX��3�'Mer��+�#.���g�ݧ3s���}$+��%U�b2�2ȑ:$�c/G�9e��kW4��&��~-���De��pƷ�M]�\'H92-U[*T��5iL�)Nk�;�zѮ�D�
 ��9"��;A��-��&+c��_��~<��3�#��QӦ/�E���d*EXD����^��]�U٦��HƊX��,��n�h&��R�VY*�-��tzp=��岲�T�
+� ���b�""�g.�F��սU���Ѓ�ci��B��G��+�x�ϪYu�jmx���b��k�M�
�C��t����g��v
�����8���B�RG�
�{�¯�Z�..1�i�6�FXЫ�f����_��x]@p�3P����<ښ��/ņ	��}.j-X�Kq�UJٖ@M�e�ҩ7�vJ��:o4�t:�eϱ�Φ�`4La��0�J8�h,~����}ߓ;"����x���F��O �h?ިk�2�����m6�����SK~��	L|�y{A���p/M�|h��Y ��,!5���~��MRw�l�p�kf{S
�x�-+��vLA�~��jwQ�őB�D��N+ԗV����mSE��B��O�tQ�L�"�@��3�a��Zg �Z�k�h,�ª��s�ѐ�d�(�E�9	P>V򂯆mï@���&��r���&�A���uhu��OUY'���HVIAb/���~k!w�{'	�p�&V����=*�u¶�TOZ�d����vS?h$������0@�F:d���T˶�-���K?��>V��u�c�N���C��W�.�+V�_�*��>,ww!p��XA2�E�ua����K�E}�c��X���W���qc�qآ�H���³��cEŧJ1�O����r1��L�[|��#��
��$9�e�&��HP&W��mY��4@[�����?��9���(�a�����ґEw��28%,3�b�X,1�Qx
�=�Š���6��R���$(T�<�DF%jL���5����EEpS*?}:UC"5���DS
?���)�77�To^]H^jdY��ث�K��BO�4K��IZ�66]��/���F�W֡}պ�
�����G�����|�������}��}/��� ���5�f^{`j��Ͻ�����ċ��5,�[�#�o9�<A:f�zN!bB�ad�RJ*�,�L�%�n9\�oV���7�=�Gs����ؙ�j�������!T�'�~�p�e)�)���,��AY?��=e��rְg�'�U���,WƔ9�O��Ċ�c�J+�-6��h]���dm���dL;
�@�Ǩ
���J�k�[4�K�$�����2�5f���[�mt(�M��X���#L���y��&�f[��3.��~��~z���W��=,����^�٘f,D?�'ˠ�J�ptMi�����xB6�nL�&f�u#T�n�MU��j�V'���^��S-P�#D����*�$��]�n-؛<��e9~��Q)�5d��Z���^�nb��Zq(�-"�ع\b�1b���S���uO�kd�j�X�3�[�D��(�u�q�,�l|m�y~����l��-|1���du��]dJ�~4�O��>��Fo���y<��-��V֫ܿ��x+�ya��c�+A�0�54ZB�R��ߒ:+��φã�0}��b�����p7��H(hO��=��l�ڧ���hA{�g���jx��e��'�������g�3�C
kl��gL��i�F�1.V�iT��.\g���rը-�o�e�V�3�C�FC��Ҍ(�=����"k��o��I�B��@�>^C�ԡ�/7�bc�ţ���O��"\���M�x�;�Y��M�Bɽ�x��v(�*S�d�Ui=1�@�
QL����V��{r�tz��
���ޝ�bp�yq���)�L]0DE��mÑ�#yl����Lt=�o�
�{!��^?L<!��Q��<4D|Ck��׋�R�x'(�:�^�Рu��m�#B���'��y#�U��ʑ��~�v�}�L۰=#�r�o���tC�ܹrˠ]&	t�g�݊Сk�2����$� ���mo2�����HB4�j�Ή%�ȍi�ee+��ِQĺh\ch�"�nEe�'�׿�}]p~��2o����p�G��N�rD��+k�h5�M*��Qs�l�#�����e^�z��98d-zƬ5�(󍑸��1{���oV�s��
�=��v�G����c��H���BH���.��]���i|�5pV
I�o 4�	��M��	����`E1�!kمV�8���ۋ�U�my)Ui˃g���u���K)���i$�}"s�K�ڻ�=���]��'3��� O���'�{�	���v6`t�%��T�D[�V�9�J�y��8`����,��D"���o6l6��O��P.4|Ƿ��o����c�����j+H�N_^���^J���○��B#����!���#�
��߅��S�S��>K<�{��A�~�s�����>�d.[����bTr����H8ݕ�8�$�q
b���<�K�%�g�N�#Q�����l�j�*��Tj5⊠bATQ�=��2������>�9���M�φ�F"ъ5�
d��a˩|�q�s�;�l�n����*��w����>�'ݾ����:�ñX�%�x="�b�\^�J�U,���P���[���n�a
F�P�6��RQ��M�i^_.�(�
e9���>I�T��8\�[,nS�����F-���G��F�-
n~������f���i7�{�`_�ҫJ��*�E\U
(�BPm2	��rs����x6O�U|zʛ�漚w�O1&K����▟j�~?�F'AG�j4INR�И���_`�[����
��7Jz�~@Q�S0P|��Fy����Vc��	M��Ǻm�D[��}H���B).mk��o����.t��!X�qzy�g��Q~W��#�$=$�D�
_˼_��2�vzx���dF��<Q�5�\�S^�[�����W�4ז65���t^�9Ɗ9(����h�\�9��;����F�Fm��}�J)ۡ��!����Ń�Ÿ~!�bς�<@v�~SV��p�)�����V�{���hxn�`���4���=/��}y&�l��S�~瓽�=󎜠)9#�W�W��u*��J��ww�ʶyta}j'�R���uo�
2� �]����=JU�Q�:��)���Ŏ�ᄋ�S�T��B�H����9� �֙��[o8^�5�kY�5�tEx����bU���J8���2�w8ׅ~�
��ln�ުG�����kŷ�ys������iX{YU]]y"".�_���I&�
Μ2��sŜ#�+�0g_��Mu�$+=p������EBMH&��	'�3��뉚�CC�cD/�{9p��_hh��O�>��_m۷�:N�F�a��l�-��s���oh�s�O��ג���^]����x�yg�0A�ȍ���z��{���L�~j��D3iy��W�Ш��FZKh����1x�y�a�|l~�$��x)
G
�.���i)����k�m���23O��o�nc$�)/�@���3
Z(�ѴQd�oxI�����Ҫ��h"*�q�Ó0('��v���i�H��T8�q�^��?��bٜ�T�����Rb]^���J��NE�8�&�^ox#��K�����s���C3�k�X�k��W�����ꥡj{��4&�;�3��J�y�9�f٬ȿ^`ZM�7_�L�gv���۩�ܝ6�_ [�W��Q��xF�]���*� Rƕ�%�*9q�Y��jt�����}^��k���j���p��c-���k�:(E42V�i
��@��$)�qD�@��҄`��^M>���J*�M��or�Lem�q�Ov�23�r��x��S�NY}?��H'W�V`�-bLu���7eo�d�}e{/�7��xd���W�'oaM�Έ�oyF��b8��4��w��5�}_?�ݳa�Ҕ8���!�v���ex�rG��ad8<B=�۸ڸ����s�X�tzf�f�����܆�Z�D3kG�g����D��5�_&�� 6���J���X���#���:�)�Q��3�.��7�z4�z9��UA �C=i�����2|���k�IGYa{�E�?>�f�B�
>��QM�U��\���j��gi���jBd���G�n�uʂ��_��;��D�.Hv�5�&��Ma� ��3N�����i_f��۰6�t���
�M��X�Ƿ[7iW���#��:�r�5���L=1��s[��*�"겍���������l��&���-`���~���j`��2a�տ3:s�|��*m�'0�#���%���-6f��ML#K@/�۷�q�'(���q٥�e�v��̀r=�Ah?!3�1�k��.��q���ٌ
�J�;h*
����U�!Cjʫm��K6�Z��+�W7���CM�"���g{e��h�Z6��m\i{�ە6uJ����R\�}>eP)�b����zó��q��C2Z�
>##���H�y�ł�M/���
���
n2YX�6����J�7����ᨤ�D�P�����h7,0YX$:�V?��/b��d��O��3���K�����}I �>�>��;�?�~�չ�8K!�xņ/0�W3Vh�
!�ꎛ���޻����<k��>}�W�c�Jk>�K�<��O|Չޞ�t4@U>w������eu"�[0%�H���Vw\���4ʲ1�H�ʽ"��J�r���l�����o�����dq� ��tm�!�$����Z/Y@
S�
��9�SoN��.�� �T`5�"���p��V4���w9t:�!㠢�@6׷���r�P䆆3ЦvޢcL��O�ƾ�p��|��2fS~x�s!�?��d��dF SMi��=��'下72�c�gG)
���w��p��c?�����Ao���mz�i��f�znKq�T܂AP���D�DL�)�	�Q�����+\��>΢M����[���vn�M�g��A�N�L�k�۱&���������O��[�/�S�����ꋿd�8�i\�\��X�K�ISe�J)�ua�:�
V�3n��P�ɄE�r�%�3_�lt&!"t�aBc��9Ţ:�)�݄%�h�=	�,¼�6=���J+�6�]��8��;�2��rR�2?W�-�5Gj���(��'��ط_���+<J���O���^�K�v�OI.$�a��9�����*�N��y�#u�H d���-D|f������x)��@�w;IB��2��YA��B�l-f0,��Tʁ�A�x1�B"Ysqx��@
��*|r�����B����	��B+���Q��Lr=�3y"c�s��;+�ު����X&��9�FkyA d�`���|v�y��8�ƴ�:(�.�)�U����$�<ï �ӗ?~�1�"h��5w"R��8�)Yy�ԏ�	(T�sJr� �hT@dO���/��{���=Lj����9����%�÷�7;�����踑2
���yN��W=���2�(��C-�i���"�-���K�Prm��iC3s,��b��D��k_>�qaʎ�DNf�ᱭ,���}����l�QC�2ݧ8��c���S'���45ו[�<�Pzp{ذ�
���7\�Z�Z8-��ѯ�%�~�߹a���"�~R"T�!�.��5�%�jR�y~؏�r�N#���Q�lA�� `�yiN� �S��5�}�jf�2�h�y�v�}LfŪr"�8�o๖��1EZD*�H�:Tb����5@�!֊[�AI��NZTt��$��Rc����@p�|ȟ+���CTO8-����0�^��jT6ՂF�ZIL����^�Aon4k���/�r��Β R�O$�\1q.�d�%����:1_,�f��U+	W	���'H#�Qj�/��ݨ`
��ge��J����8��q�j��5.����I�JE�G�j�+�������:!䗉�N}P�P���
��[��ucE1�\p�%N�.�p*~�a�_�ϧ_
Wk�3�7syx�39��*r}"��9����fӫT`4�8�H5���9�;�)�a��mX0\R;��U\~�F�&�Bb��݄?���;��:2*��޲IRN�l�G�%�
��\[�|�YT!˷�J����Jͻc�%�@,Xا���\2����R�I>�N���,{�;d�N���4�%��=���@����rZ�cV������M6EF~JG�	8l��8���A02����!#F�B�	���, Sl���2�G�]���tz#��&4�is�hO3B���Vnp�ui�uѱy�z)/o�;�˘W�5�����-�s&��{,����k~��Z#����o_䝓�
�F�ae���[=�i=.��<�N�e`[��f	=z�FߔGE�O�O��鈂�ϼ�
ANMF_y�^k%H�P>���r���[�C�
�Ud'�$|�ߕi���ͯW�+�v����`��{qAAN����� �ٜ��ֵw�ܸ��[��s�%��i<���Hˤ�ρTKp�?��<� 2�1��ǵ�b��}1��(qIC���e�0pߊ�=r@|CrO�7�}+<�K��A���t��+��s�h��}�6;"���
�ݶX�;��1T�xz�R�����.�P��y~<���څB�H�s"BA��7o���Z���}�{���l��kx�y�֩�R�&g��I�3��3C+�V8^�#�y�e{a�o�"�#[�(o��5>��X���]�Ҭڝ������9Ln��>��3�E2�ǔNy���-�uֱ��6ظo��J"���o��谂����Z�;y���]oY-����Q��ږA�qB��!S2f��	bI�V��GY��X�T�����(k��b����30C�ڶg�����b=7=���aҏ��&Av��Y�g�Uu$�{/�zN�/7�Ǣ�%ֻ���7���������c�8T�jY~��(+"� Y�.��
�+>���L����n�<�u�6���I&�t&�\, }�������I���Y��#\�`�gp����<�_h������!���Yr���;�
�fk5P9EL�`��11X?!,����!M�����&.����{#Ϋ�!�ߑگj=j����\��XB6ۆ�f�t�آj�a�Tk�P+�B��j5����@�e1	J[/���yIiU@W8�%ã�)3�
t2/_��Zz��*�Fy�l����p=[W�*#�N���YL�{�N��%Ԓם��:&���J
�������t��R�if�Q%L��mL���Ȫ�Z5��ߨ�Р�����°���{
�\�pre�]`����J���O�
8'pK���Y��v.��q�r*�4�ʤ_���3^лݶ}8���n�Y ����Dr�-+��|[e���D���>��E��ڵh�ő�a���3P�[��(DZS;OaU|�`lM����@���JK᠟+�Ì�b7�Ov�`
��=h-��F�"}��0k%�����p��o�2�^��`�N+���z�\��9T�=c(�aX��]_�:��cS��CR̤�O1�y�K�s�@|����Xɋ�P��S���I����Y��a�$�nʞ:�TY�� z�B���!��
�{�M5YlLH]N#&�<[3�i����P��|3P[�v,ݽ�٠�5d?RkV2k��
�HQ�9�q-V��gI5L�����[��4
��ɤFD:���A��ET�a?]���|h][/�{��@��X�`�/�^�L�_
B��f�	��7s��E`����}�לb�JH����kv�A��mĆ��S�&�a�U�oȴ<l}�jabWl�2���51Tp�)!v�8�J5���M�`B��s�5���I�XA�o]�!��Y3K�<���!����^L�����"��#S�굢���B����7�]��;m�wO���<�>����o�!�+E�*��w�%��ѭ_�6K�{)�����{��nD.*�ۋo�ih�U�<���=��]_���
�����ϕQW%RC7�( �œ�O��W5�r`���\���bA��P��TlH�H���+� ����bg`��Kg/����P��ȖS�eǂ���O;]����?8^��M�#r��@`oe��=p�����2�Ӿ�پ��6�yP�g^|p��|�������Q��!��!Ө~�d�:����$�0b*q��[wn�V	%�*+��A�ʪ�9Y	)�)=��*���2��%2-�ΔA�c~�]�����$;S�Cμ8"�p��|��>qRW+�b2�&�;J�s'�q%J��Z�E��<>�kէN_�o�l
b�j�Fo���i��3��k~Փ0��e�!�IԊ퀗xH$���y�^@,�M� u�vb������uȺuT��
�d��e"��g�d2��)J��k1j��o��p�k0��&�Z��k[���oU74*�(	�ʱ�䎓�eTnV_�r�'7	R��թ�3��s��=%6̨Єu��U�ӄ��ʲ|K�	���k�2A{,�3�2�߿�jȵ�h�,+����C����*�g:�jffI�p��M-
V��7eޢA�U$"[�y�h�m��� �f��������E���lթVq��5���Ę{�L��Ў)F�Q�#��.Eƒ��;ɰ�(�r(�=�����r�!�<�R�BlqB���!�J	�a�=���Țf0sgz�[A��9[��u�wSHK��Ց�B�	�UqbB� 7k#�
�6�Q����F�
��~+4+�O�� H1����)�R���Y�΁�
�G�q&b)ѹ�4�
���0K]���~j����@	e��39��ʓ�#�<@�Θ@C�zz]���?�	�UZ�O('Jቀ!��7v�`�D8�)&��2N:-9]��� Ԗd�;�\?}��NQx�\n~�[f�R SxNmh�l��:��#���c�4��^�@\�����*rhK?=� �(�:��I�G2[4CiPy�eAy�\V5���4�����5�=���yM������s#����TP�f&:��>]��&���l�O��1ũs���.a�9�8�Ϩ���6\�tZ^�v�,W�����&�����;M2y�W�'��i�dSdVR~��P�X����7����,N�.(C(r:����6u�qgu�a��B�į�C��F0�w�=1��U6`m��2�׹���ҼI܃�\0T��
{� 3��z��x�e�Q�N : !p+�%�^w�\s��JJ
�9The&�@���
� *}�����K$kӨ�KI��4�+y�	YV����C��.��ܦ�Ov	v6-N����F0�:˰KdmӘ�K)?Mg�����o)P��Ö��b=^j"{lI�x%9�s��h�����}����<m��L�% ��3��[B���F>�ۤ�
ړ.�<9GO^�(�t��n����S#Cs�(b��˦��,�눎xȨ{xg��_˸���e���gE��,{�A
�U�1l�ۊ�Нt�42�
��
f��!dj	К�ߌ�h%
��<��'3�}[��Ҙ���G(�����y2a�v^)3���a�ٰ���T�ұ+���--��Qˢ��]h�"�(_��J��HL���.�;ʮ����a����7��o%S
y7z���4��x\�Q�2���<͇�IF5�
���]�\�`�B2�Vz�{��>{p�ӲJ�����e�q?L����W\u/4.h���;�{�2�M�5&oB�u�&p3
��*�-�e���E�f���
Қ�2�O���`��gG��y/�<�f5�
.���k���
���޼�J��=!�[�`�F���m�����z�����.��(�0g��bM*�r�V�'>:,
A��ĉ�th�t��U��	T�H6��NҵI�@qT�wv�
�
�kto���bZ+��k��F�q%soU�����^`1k�����-�ي�HK%�T��R�ٺJO���Iƣ=�NB�[��ڑ����gT�&�us�54���9��g�g�5*�Ӂ�ơ�U�З�z�m����Z�(0�|í���1��fF����ݨV1	z��Ϧ��[e��2�nӟ�e�2��Sކ��\>���d5j��yC��u�ͅ%i��4(�nx�8��1���Q6�y�{�۱w��BF�ZFV7��{e_d�=V�T�D9*P��# �2<���}2��7�M�>R:nE�
�QOY;Fޥ���)�y��(�Sh�p�|��S�)F(��*��QH�t�|zmP�_,�ы6��~����d?�����l.���R>�����W6�^F��"�x�/���PH���V����Wv�%�4��D�wk�[]>���^�b���b@�W�.��f����,���,8�,���j�/�k<Y�n�1�X�p�W�d�c�����-At*"���n��oW�
i�܅����l�Ug�y/<��}N]ҙ�����u�3��_h�]2��4.���M�?q4"�+�vd��d5�g[�6y,����G��O��u�LιG��Y��Y�JAޥg�2�ټEgr��+��3�6�6��v1���:��f6�q�����)�ǝ���-s�xA!�-�	�_E|1�zGӐ��S�4�Fk�����G4pQ�4��	۠��^f��ڎo�U��!���=mF�r�ԉ�)Kʀ���XtO�(k����^�̎��g�.L|�{,�J����3�H�eqq�PO���y��F�ئC��v�l)��B�uۍ,���l<�n�|O���=��%`w�'���q�X��LW���2�	�=�E�O��eOw�-�c�Y��j�O$��=ۏ]mD�k�^�=�T>b�^������ܦ�8�`�5��g�Ϣ��N��냦K����9kRA��,{xK��<�g��T�8�9�����WHS��?X�6W�d팢c���0/J6���J��q4e��2B�����&gzbV�Iۑ^�䚱Hi3ք���zY��D}/�t���� 1���|�M��(��ܸ�Ŭ�o�,�d���1������^�V
w�6v��[m��0y�6u�u�ې��m���,c�5���_3��iڳ��e�����ێ��M}y�����,�X��a蛴��v)���o���!��'�0~��{
�O=�g�0}Ãl�Eo��nr?8k��y�o3ɝ#s��T�X��S��fY��q���)��2E��Y��6����-�#d�7kij���	��x������
5F�j���Gn\ 7��i��#�U�2�-�1K/��[�<�hmԷ]�[�]D
$�T:u��f��ku
���AUC<��	�szdm��\	޸���!_��w���wp�&	��#�d:��(PŘ��g����rKKG~7�z^hn�U���谜��tb�`�'�.�Y�*��#�I"���\�᳒n��	.\�5�����~$����,w*}"����T%�����P5�Rع���P�+�c�ݷA�#���1*�^t��k�m.���k���G�6����&�]�3�N�݀$_=�?���>�y~^��RMO�~�E����~�5�dӪ%��\��y����a���B��ӿ�yL��;QU0�zL��;6Dk�k>�@;��I�W$�'��@
����o�HY���e&͇ᤂ��sͺ�3��Y����Fh�C�K�Ԭ�8�'�
pxWX���o�����)���ǀ�0:�T�bW�F�m"���9;���z�W�q��'Zx7�#��ϊ!TD;q���f�΅��Lz�Cs��o������u�6�)̆ͩ��\q�|$9�i���8rL��]y����7���X_�#�z�X-�k����"�_��ĵ|<o�?�t��H�mT*iyG�nD�_�S�9�a�����&�)!�f�?B����Z"�B�&q;A�ؘ��SY{�ղW��aԿ����=,���$�iPs>����~�/l��u��k��?�kX��7f~}���j�~�7��BԆ�J�Zշ��j=�oB�T��YL7W5�/&w�tz�(}��g��*�b�T���x
�:�2?Oj���#�%��1-o�Pb\?�^3�D[3*��-�J��������Ԯ�R�H��Qbc
K��mO�$98��$'�j4��Mږ%��%�e�֖�7�i��Ř��T��U��슙j�������Q��<Da'�|�z#���6�V����5נ֨{�*&�\-�S��Ĥ֊��|�l�\;��^��N�h� ��
��)�f����~e�4X�	��T�+&�Y߇�j��i�+
ڈ!����l�q)����'
Y#Vi'W�r��ƹ�$��;В���H�T��]�f��R�>� �іa���h5��z�����Rν�*�=��h؍s@�p��Q֜ˉ��͵�8ߝ�ӳh�<%�Tk1u��~��U4��qرv�0�|Ҡ��ϙ�s|X��gMc��I�M��K$*�5Ypޫ�
�o��ԛ�R�!�|R!��@w������u_�����~�_s�r^��Ӯ�š��5}��V�ʛ������IB�"=֯[���o��5k{�e*+�5�#�܉#�37.��=����4I��<���R(��{�c}e��č-9"���g�H9���۹�+NYfŔFwz7-������
>�b]��F����'�<�ZoGI���!��q��}����_���_�:��P%�$�JL+��1
'*b�*�H�J
X��?2|ַ6�x=�-�b�}1���%�44�8��6E�R���i�J���x.Є����V���SH���f�?��o�#g�	%(��i��w��HrZ<����K���aŞB�(���m���	%(��T!��Q���m_!��FD%��e��a�![���$���}��DS�VEK��ɥ@*uE���l��u�,�~��L�y���D�w�BCQP_�%.�A|�R����*ۿ���{�f��?h��9Q���$�4��!��I�G�z����ߺ0�ۦHC����^�UbI9��oN�	�|��H�S�.+���诘�`fbA��b����5�ԁH�(q��u<���?����!c�ۼ�00�t��̶y5A�&6�]�oO/��1�ME�y%k�$�:T�:g槟����;�����J�o���>?�D��,/'ٕ69�z���l��r;4�`��T��{�����'‹�r��2p��gH�f,c����D0�%;⨧~���U0�2S/Z�	7�#oYP0��k(6��s���U��@O����;гm~@V��,p�e3N�5�鄅�e*�3mC��HG}�N2�&�:���@_���)��۝�HS+&X^�w�Z#J�g�L�
>YG�Pb��dX��7m��6�#�"Vq6�y��>���"s�ܬ,9l]�0���|���x��iU]�3�@{��U"H���rd�b�Ou,�Q�pp�/�����谒���J�R׋��o��[j��u�!-{'�)��KuR�I7o���'�\4��E�DD4��La�u
	�����Mf6��f��
�(YX�Fh#;n���&S.ղjr\��ٮ��G���g`��YQ�x��k5��$�F[��ÕDO:
{6U�wtC�j:�SH�qI�4�ki��lV�6�/4)�EyҊc��ݎ�P����_հTRc0���T��pL೩PIb�������dl��W��inp�j��D�c0s�@�8#`�ch�O$��\�����	:�o��_Nh/�$��q��".ax�*��A�Y�s�:S����DͧP(a��FԠA���� �+�q��ϴ�����M��ە�z�%��8
�m5\rb���FɬsU�!�3�Z%��`$��֤,_�٬�Z	����5���Y%��l��|�
@�̾�F����p��s{Bd[Rq̷��Ҭ�LGd�ujF���k6Y�<�a��V�k�����rh��
�	%��Wg��N�K;U G�a�٬R��X_�N�ȃ����w���c+3�G���D���`���#��F�zJ8�2AS�#���Ŭ�+GAq�3��#}�u�8�������	��:� $�n�侌R���bj�Ϭ�-�t4>V�J��Ɖ���eGi�1Gp���&ޖ���M��Ҩ�>o�f�Qp�NWjᑐ�f}�K�zXMS���=��W���o��������
T��0�CSA;
v9�<��h	�k�c�$��&��L���Ў
����Қp/Z:����s��O�~uO��G�̊����&#m�^ݦP�bU����m����|�������$|�2�Q����W���
�Gj-�o�pg�r��بo�E��~����݋E�ϸS(=Xu��X�#fֲ4�*���k�n��$5�f���=뗏�ė�i��|A��ό�&}���h�
m�w�<���c��A��]�>�)I�-�D�t��,Wfƺ}�P���\�VU?���|>��7E�����U2Ҙ���W��j�X����,g4j :o#��>�L3rh3�a3k2s�:��pE	�
n��ԙ�4�l��}���@g�0
�wJZ��� Ќ1rjA�<�6�9���g��f:�[x=A��i�U!�J�
�-�dZ^W�r�,�����MI���H_��ppLZ`��]��n��Dh�U�r`7�	�e��z�޿����o>X�߷���^��@��&�b��������וn�z��+��lG�))AyTPi4�@�V��ثް]
kD`E��t	)cӋ��j=�����h+�ߛM��dw�	6�Cr�2���?��c
C{,�Ӑ�ץ$�n.�����8��j��76��}����~�Í8_�*����xݘHt!b�PVW�|@>�8y>
��س�H�Cछ��.����|��9�= �?����k�$�����8���^�����
�\ �G9%�v��O��;�j��~C-6Z����]��T�6�H�� D��_�ͷ:��x����M���C~�)�L�h��1��5������؀`Vҟd����s���phC��gT�bDR��`
7����Q��h,Pp��F�!סƊ��c]��=�?���E��D{�H����/Eܗ�];��,��ry/a��d:�I��(�!?Oᡁ�(����9��ظ5^7Y�5�k��͈f�����:�i���5�ʔg0����j�ڱ1gkP�w\Nԃ�K��p��R`��c��Hj�5
i��$)5o��n������`J����tp�f�$<��Ϳ]����_�t�|ԤSC����d4:<��_�G��uY���Y�e�l<1*�xpYY�}q;��L���ñ�����gO�W����Ɖ���4�|�˚�)K�����AL|zo���Q���y����i����iF
��QZ�$+K��^���t��'S�����Q]�Y� ��"���NB!JIy��dbث�0�~Q�( Q硇������R����@�;۹�9_�	�.�&��,7�M=���&#F����/�Q��RR���a{���GH��g���NO9ޟ�c;pg��j�G"��qol&Ђ�)�\�?"�#�"]�'\`p���Hl�-��/_�)�|	���@b�Cp� �����V.І:��uQ�3
A�6����Qo��H��	�5xp2r`H���N3����[-�6 >�[�}����D0w��
ߏ0�ƽ$$��`<"�ك �Z*@ ~u1"M1́�)��n{a@<@4�4�7��4�E�c�]ma
���,:�_�x˷>���G�a#\��vg �Rs`W���ρv��o���<_D*!�n]f��L��v*	
��0ڛO�]l�F��C��?p��
������S݉k�x4��~���b~�_���&��T�b��g|]�ā��zzM�2Q�I^I*?U�ƆF�0#���3S`�F{|-u�'7c�����(�H�4�n-�Iݮ���*b��qd�+Q��w�(�^Pm���OM��!F$H�����Ҍi��X2��y{��PoX��{91�޷25c�~�\D�b��T@�o��-*�A��U;M���8�
�����A���RI�2���n�R�
�D�Us�꛰���V#�
��W7�Qւ#�a�6]0�NCӇ���;��_�yY�L�M�;0u��ꢭ�ף}Wk��-�Ʊ�F�wH�D]����F����ID�F����R\;��طI�;�#�]iq���/�%�xN�9�ؕ�@Uð�uWAdg����F��i�
AL��V3%� BU�)mZq�AH�ʶ3����D)A�a�P�g�;�sQA�bB��1WL�T�$�F!��<��?��v�4��~�y�V�{49Z�F�V���,6b(	1����"�!	�^N#��'�);T=�����5WzK5E�h�V_T�;�v��[�w��H��"JQ-�FD�<���E�	��Ja�.ܱ��ѵ*��:��0}��7�>� ĸ7 �0��1�! �]U�*��0h�q��v5q|quDz�yp��ޝO�~<d���[*��L������{��IL)�4ӓ�ݥ�%B�F�U���9��b�m"�O��|���<Sb#�B��c"��S��G��*�I9�F�اʒe���v*a��v��Iݚ�k+�Y������"�V]d�+Dʲ��<kY���f�4G��Yh��ٮ�U)"#�B����f(jy[\�\���iΡ@��.��րPj)M<�9!*%꺫P���}
�,��j�T!h�B�"g��y�_�nK{�Ϛ�t�P�	j�h>U��N�Օ�'Z>tY*��z{�F�ik˳%4���iH��g��i��dZ�$�&V��
�,E���C�4�`QU!�A6Y��@��0Y8�4���	�y��ż.��ֳ�FW]�*�˅n1#��;s�����!���Q��1-$��B��]d\X։�������A������oCR�֤���V�8���na�T��z8��1>�};]��Bt�$q�Wg�����D�&���F
͵���$ɰt����Ӭ�qF�٩���m���o��>հ�4d#��JBr�@�0�}�(q�wc�p�eJQ.��"�nm�J��G�B�j�]�q"f�U�Y;��`��(	+�����t���d��FBb��)!��h�wk}�y��~��P
��<�S�g(�8N�.���C�u�8: G��󱈯C��K�#��۪��Ce�{�Th�-���WKr�^��1My���:��3B�HW�$��~�wY_W�H7�7V�9u�$�/��q���ƀ�ϋ�A�6�u^���5����U�(]v���k�e*��Gy_.���:�*�#zy���l:M�(�<�<֪?�h~����l��dPK^ܙ5��'��\7��T��ަ䵩��;���<$�=��^��S���y#�)�{�9��ӟHkh{�4l6��1�C� |��3x��P������w�2v�R�ێ�=L�Jp�͐�m�VUp�pZ��_j&��_^����5l���w�a5wn8���.�����.�y�(���6��<�6�|s.��v�lo5�xq���S�;s�Ο��u���R�����Cu����
�������Y�br	�����5�M���
�
��,.�w�y�����6��ddI�~��[`�0�h�����&����js%�C�!�������+�5����㐯����~�e�C�{�z�6��`+=s;�����{�n
���/=w�����r��?��އ�t�r<6���6�9�>�
ν�y

.-� B��+���ٍM��w6}�ߗ�n%�ظ�z>�r��7�:���_�?=���^�Õ=�b{�Y^h��u������¼�ۑ�L�!yz!�-�d}ڔ�ъ��H�v�y�
�����c+�ڟ�p�oe�BYhwk���
�[f�-Ʌ���(J�s���W)k%�z\�Hq{d�ˋ'�ԓ ]�i���ݯ�}ۢ��6G�S}��_̳�J!
W
����fs�á�S�g}���dC�8�ݪ��ka���1_T�z���?*�2X휇���8��gQ���X?�$[��ِ��K��J'�}�Д�ĉ*���/gf����>��}%?�v����
0�$�}�:Ȓ���Tư�Io{?�r������s�ի�k��㬖�t��^�l�3ۉ�C�rU���f㺱��z�X��NS�� ��D���J�ޥ��^<}j}�R�E���Ӫ1�91�9��D�-V���8���?d��_em���k�|�3�u���fl{�꩐��Y麶�^dF%�d9΢��Ԉ��ze1n��R.w]n�O����|(�2�l� ����;��c�d��q��t{k �&����GOP��T�ұV �5u��0�_
D衔���]Ő	�)^�R����?;d��z��,E�!�� ^T܄b��?]-�'�v+�2N���!��)"�J�D��z���F�pP|�"-��8����R��0z��3d���*��=�N�F����M��@����B1��KEE�e+r�T���
�/c��E1ʗc��[�?
H	&C�ɼ���Վ;�6X}C�w�$��v+d�����g�a�Z��\n��2+�Ě�v�呃C��.C׊B9���z��B��i�n���!��JU��|#���߯�/��r���G�YR��0�£q�����}�d|�����t����!������=b�n� y+���W���<f6h�w
��^�3�(��B+�3��[#�cĝ�j���B� �+^b?��z�z��	@��3�C�tk4�ߨ^H�_O�w���e�/�:}����DH��IV	�8\�͢Σ4�1Ck���mn��_��RM�lg�5�A���Jc�S�$��x��ґ�-�š;
��_U���5��ӹ�Bu֌D^GX�19��BZ����#v���*&`L�‡�4n�_�|+���[�z��
�mLlor����/�#�����������2��W���;����s���R<����S����a�jl��-<�g���+������rR(h�m�D�è��F�&�7.���N?��s��g)հb��k����lY���Q��,&�*�;V2��.�0a$Oq��`3�.��ڽ�K�f��M�$�#;X�0�H�6C�ڼ��'x�-p��B(a2n�^�|�`�	I�h���-�&�A�[��R<:�&
�뷅�PoQC	q�ެEq/g
�6	��g Z�m&vF^���Ժ���~U��tN���R5<�lXK5��R4{��8�W���x��>�Q�ށ�$����(�E/��K���,}�Y�zGl��E���՟<U9�*���R���A����L��fRN�.1^�7��OQ��w±�:[-*웮�)��_c��=�T���xd
��9���b�����uj���A��j�*�֊(F�Y=i�psvd�U7f<F���pSC�!f
��X��䘑�+�RH��g��t�M�V�<���t��U�
kg+쯰�f)�<ԛ��ww�B�C?
]�zp�u�8�h"s:i�@��`Vʝ��B���*Ѣ��G�%�"v$bS_�:��1���*�.M��,~-�*_�t=��W�2Sq'Jz�M|�4�A�7�R�LB!�ˠ?���S	���n�ɥf�A�Aq�F�Ty��/��}E��9���fBr��Mp�l��h?=���U8����n�����Qٷ�2Y�@��UI�]��ɤJ�$�6c(�M�~��ͅk|xЛ��l9�z3,��\�7o{��X��Ϫ&{�Q�C��.C����F�;x؉?[\�X>x��"�P5M/r
��/�$B�|�7\h��ݮ1��˸�T��+���C!AT�ތ��
�<�	��'��#��G$ $5��
?�t.�i��0��꼴��e�n@��?�fS���Hh!d1l�a1vQ_?ޏ�_Ce��k0��!�%X�֒��<$R�-_�*<L��(s=�&l̕U�ꙣ���DUq�髈�yxC��H{�5��u��d�Jx7`�0��Pz?�y��S��[�Ix{QO	
(�Y�J�
{���(���v5rA��.P[
��hG� @LM����P���gHm(dA?��r{���4�כ'�T
2!��^�>(R<CH�o�w�	Th�T+sԌU�XM�U+|A�*~�WH�0�1�VJ�QuU2�/�k�h|�]*҂��J���;%?o$�H�X&�U:�D���8����k.M�(��XDWMݎ���gJ��j�Q��u0��)�<�:���F2���:�	 "�#�Ռ�4M�p/�l���oGP[�p
�ᨛw���#I2P&��$(R�D O��x���D e�SM2�RJ�+"�Zطg�w�e37�j�)�K=��=��f��L��r�~����ŀ�Qi=qX{�['���2�s�����R�v[jIh���Z�����&�K*P�� huh7����+|Ǔ��(�ePx��N��>=�pp�i�W2�`C8R�(l���݃g�dm�R&?O�y������N�ٓg�3�W��TS����T?�/�e�+�iHl��}�=�0h�w4�r#k�	򗪐��S)�!�h��\�����r�.W�q#Zj*W3����B�ߔF�
��(dU�~aH�l�%���"^���/��p���ЕOxS%���|�Y��RW�� $?��=��<�'�-��z.�sĜ���/��[�9z���v
��sER�;�AU�"��{�e0���z�L���p�Y/�
Ǣ�5�9�;=��g=�%��e?�Um��h���'C�H_'4u�\H>��ﵨK������AM�Ca�k���!Ꮩ��	,��s����$O]����G��SMWEĈ[^������w,���.�Ս�:t^�/0��j|����?ȶqdQG$�F�fCm���P��/��L�}ZE:Oa�v5���ƨ7e�a�1s� �S`���<�F[yLO�i`}:^S�����������t��A�-O�爦�[
�����TN 7�9���y�R�&(ӵ��m=y�!aw���{�y:%�_�\ս���G����<�N���q�}={)5ûGA{�D�����ƴ�}�z/������꼢��ϞE�	��ȭy��
�W~��̣��4����
'�?���6�0������6^�l7�CE�� �WB�(T���%�Dyo5<��3k���e�k�����1��+��.��%%�}B�^5]���{��S|�)��%��F7�a,�	��3覦O�ʌRp��v5�6�\�NK�׵#�����X�a�r�{�K{�Z��IZkE[E~5�o�]�=r�Y]�,xz5�Qz�D�×�
�\�IO��֋�Wܵ⮩��wVXJ�Z���Q�뚷>s
��+��,�$�/�{��E�/��$���u�J�e�%>�ĚY���	m�l���(R��|��_^�Ak�l�Xq��#��Լ�2N9�;�4@�|�U��Tl�� 0�;�Z�d�Tm�F���H_f�_�F�y0��p%��L&��[�N\�	�v�� �"ҙ?�@sfM�����Ǫs���j�y�=?����G��5�V��5��1B]+hYK�F�+�IP!	`��� �r���q�(`ըf��`5iJ�-C�:�S��&#))�[��8���D�����@B���,��1�Tx�D�+oh�*MKw�ciw�~�T�gb���]a�ΙO�X�ߍ:�����9�S�=�6{����W�qh1���=f�R?/6,�B�
�Jy�����"�4�(Q�J�)�kZlB���*��h2iv�}�ĉ�c�Qqcz�$���"3���R��9H ���
�(G��b�F6V:IQ�
�(�ΧT!T�~�!$J=��K���.���tp�񏟾|Gi4O�yU��uti+v��ꐢ�qlb�:)��%B�J�`�4-��b��J|��b�ȩ�����҄��E8r| B�;2��\1s<�}���D��7X�4,�!\��ZQɃ��K��IA�	J)���zr�%x��w���]z������W�YH�d�j6f��ՠ���p�\�R��ii����B3+Q������ ��y��HN&T2	�em�mT�dR
sj4��P4�e)�ٛ`w�ߜj�p�W�J���i`�p�yp�丷�L�Ǎ��$=Z���:�8�̫K�RB�N%���*Aj���䵴ug�GÒ�����^��)�`%�i^̐�J�L9u�k���ȳQI����n�b>u)Y*x��P|t� Q��;T�%2*�"o�Q�2�XC`�t���l: c�2�\��2�l���R�rx�e�c��L%�������0������0c�j�rXI?���1'�� /��ЋQ,�l�T@:h=��n�.՛�X�rhK�}�BaV�R�&bLJ2�uL?͏�C��FH�@j��(o�Q�^�Ř����h��]=�-�
6!7<��{Y�)&p���Qf_�ES��l�
�/!�^aYNP%2���$�j3�Z%|D��xLucn�����	B��	J��	��z䑻��50.Ȫ����{X��^�B<�������)@2
�^ny�5������1B���8
H�>�h�D1]X��t:�$�X���}��8��T�x�23��jcq3K<�+����\5�Jw�6�0���e>3^�1{��-r�B�]���_
��Գ)]* �V�l�\�(#,��y���IyF}��t���ր��� ����{�ˊi�Y����/����PZؘ�t]q��K����B@H��
�T(��P)]�^$�e�-O�Z��\7湸U��W5ʰ�I�7�_��,w�'�ߐx��I����_}�ISN{bU��Z�jצ��&�S��>O����
�n�����0�u+>���#������ckXy�����*��	Y	
*zY�2L,l\<|B"bR2�XJ��T�4�t��@&fpKFG Qh�'I�t*�B��L�Od���H,���
���������N����
�9��m���R6TK+k��pS�X�c�%[�\y��r�w�S�P:�d;�T%hJ�)W��JLU�ը*�ڠ��Z�jӮC�.�z�����E=b�єjF7����?�M[����PطC?t��{'NY}̽�����Wc�o��n�(mm�T���B�"��c�D�;9�b��z&fV6�������a9^%YQ5݀I���Q��Y^�Uݴ]?�Ӽ��~�0�b8AR4�r� J��j�aZ��z~Fq�fyQVP���f�����h<����j���x:_��;��|�?�Q)�a9^h�ڝn�?�Ɠ�l�X�֛�n8�Η�
�����nD�h,����d� �t&�;��O�L�xʖʕj��h����A"�b���f9�Xo��0�fw8-���1X�@$�)T�L�bs�<�@(K�2�B�Rk�:��h2[�6��	�@ap��`qx�D�Pit���py|�P$�He"��ʩ��������o`hdl�Qk@W���i��
Od���E�4q�XZY� Qh�'Id
��ݦ�L����B�X"���T�5Z��%�)�b�Ƕ�T���E����z��N����Kn�Q�0堔I7۱Hn=b*��櫦���A�F���:s�¥+��5n_��<z�2�+}��STM7`�e;��a'i�g��<}����u�&�W�1&�o+�2��C�<0'di!�೧C��L�Z3��`xj|�d��e1Y��Q�0ݘ ���9I3��>p�Eh�]�l��ۘ)�8�X,k�����V��.�>[��7�ԥ���^=�s'$e�P�(O�!|y\䖑��;���X�_�,��b��t5�H9����Q�B�q����벴WP�zr̄�BU��x�`8�U,��k"��mͺ�we�2m�����S��&��F�ww�F&�Djj��&�Ʉ��t�<��M�6k�fW�]v�Y�8��獹�}sݧ�s�oR}���;�l4/E�}��U��!�L�G��ò�?�aw�
B�-kmT_��-�:E���
�SƅT���U����.����o���E��5Y���!��~Zڧ�ϻ��!��sF����q�l�A�e\H�..mrK�$~���J/;i�-~>�g��5ʹ�q���s������N�f����ӯ���u��f��"���/�t�0�C�E^	EO'���i�m���a�q!�6��->����q�l�A�e\H���ea�q!�6��-=����q�l�.g�o�BH)��RJ)��R*��RJ)��v��o�x��ǯ��Wm�;�n�����ެ	PƅTڸ^�� L�2.����u�(�B*m\/[� L�2.�����a�q!�6�����0Q���2.�����NH�z�"P�Mn�A@���%�U��(�B�˖���^�� L�2.�q�lyH���_=�{��_t��?���_s��0�.Ʒ��-z�&|rI/"L8�xA�dE�ҫa�Q��$+��^��2^%YQ��0�(�Q�UK���2^%YQ��Z|M�Y-_�ɁI��Z��C��&�p!U�5�_J�6W�w���������g�q��8���R!��H�#��}O
��H-�j��wh�-��6�iU�U&�QA���: �nSL����}��4�1J�q�ʸ�k�'�Y߆,ϼ*i�Jll��R2OmG�'��殦��0�p��8���
��ߪO���Gv�.�5V5�R㢱H�[�8�܄p�N�@Y�%�@�
k��|r��-�w�m��x�[|CQ�P�8��@K�B5H!�Z�FY�G�E;���=O�).a����W�Ә���’c�`��U�*룦�>���3�����p����.p�Lu(�Y���V��`?��N���P+�ӹ��g����{��ˤ���bWݠ���[	unK�¾�4�9V:�����H3J��H̢b�X�-� �A0̢b�X�-� ����K��{���f1׹����]��
����'t�E��Ё�=�Z*�Y{$Cߘ�&�C+z&A���ҩ���i���ơ��q�=�G�c6�0)�0�;.l侦��)z�(:B�k�I5���W2')���ARΘN���m%���HhI15�Q�������m�#��Ј~*�O��K��d��T4�hƿ�(6kS�׋�w��/p��ܹ�Xn,۝Nw���bi�9&����w�'˓˜X&٠��Qƙ�Ռ�9n��c��{�%��I5I�!ыQ��FԷ����Ωa�㭃��$
Ͷ{��?�s�Տk����5^���,3�&d�ㆶ�J2�Ǯ�?|����[�W�I!%�~Φ�>1'��>(B��n}�\f|�����2lib/fonts/notosans/NotoSans-Regular.eot000064400002222350147361034410014174 0ustar00�$	($	�LP���_ @)�]}o�Noto SansRegularVersion 2.007"Noto Sans RegularFFTM��5�	$GDEFgQa����GPOSlh�Tp��GSUB*�[X�0��OS/2b��`cmaphNOK0gasp�|glyf��:���thead%�T�6hhea��D$hmtx>hr�IHloca,rB\OPILmaxpuh name����		post������`preph��OH�o}]_<���'6�'A���v
�C-������
�RRyQ��XK�X^2B���@ _)GOOG�
��-��C��� -X^M
H�A�<>?1�5�A,(,')<2)B(Ht
<1<Y<0<-<<?<7<,<1<2H<2<8<2��:�ax=�a,aa�=�aS(��kaa�a�a
=]a
=na%3,
�ZX�J6<&IPt
I<&���(1.gU�7g747Xg7jUN��UU�UjU]7gUg7�U�3ijO���'|'�| <2
H<[< <;<'�;D�@1e �(<2B(@1��7<2^^(oU�7H�^%x �'�"
�q��x=,a,a,a,aS(S(SS��a
=
=
=
=
=<@
=�Z�Z�Z�Z6]awU1.1.1.1.1.1.`.�747474747��L����]7jU]7]7]7]7]7<2]7jOjOjOjO�gU�1.1.1.x=�7x=�7x=�7x=�7�ag7�i7,a47,a47,a47,a47,a47�=g7�=g7�=g7�=g7�aj���j	S����S��S��S(S(Ud(N����kaUUWLaAaUaU
���ajU�ajU�ajU��ajU
=]7
=]7
=]7�=�6na�Una�>na�G%3�3%3�3%3�3%3�3,
i,
i,
i�ZjO�ZjO�ZjO�ZjO�ZjO�ZjO�6�6<&�'<&�'<&�'FUg	�
gagU{ZdRxx=�7�*
g3g7\F,<�;L6M������=:�U\ZS"kaU��Z���jU==h73=M7�
gUna%/�-<&e��i@
i,
Z�O%�Z@<&�'H#H7�"�:0H#�!�$KUP�+�A
Ha�a=7aaU	a�alU1.S��
=]7�ZjO�ZjO�ZjO�ZjO�ZjO431.1.q��`.�=g7�=g7ka��
=]7
=]7H#���a�a=7�=g7�a�a�ajU�1.q��`.
=]71.1.,Q47,a47S����S��
=]7
=]7nW�na�T�ZjO�ZjO%3�3,
i?&��aj���a_7�:T2<&�'1.,a47
=]7
=]7
=]7
=]76�}�U����7�7x=�7
,
�3�'����
a,a47�����=g7n
�
6�1Qg7ggU�!0g7g743433�+�!�!X7��g6g7>7����jQjUjU
LR@$z^��U�U�Q�Q�Uj��jUxU]7`78�6����U�UZRZ/U/U�3��������iij
]eQ����''�������7
=@UX->7}U��	�Ug7���7�77��^^�U[U�NUs��s���7�7���7

k7�L�g�����!!
�(�(�(y(((�(y(((BHBH�(�( �(�(,(�(�(�(���(J�77!X�N�N�N�N�N�N�N�(�(g�(�(K(K(M8(�(�(�(H(((((((����Y��l�0�e���s�������W�������d�d�������������������������������O���s�����������N�C�X�W�d�d�H�l� �1�N�0���o�:���N�C�C�����0�`���H���i���&�0�����H�H�X�Q���������d�������H������@����������~�������������������^���������avU�<�U�'���b�U�R�!�7�!���(���
H�
�



I
L���a�a
,a<&�a
=S(kaa�a�ap<
=�a]a<&,
6K3J5Z�S6o7�-`ULRVOo7eUL-�-�7`UR7LRUrU�7]7�XF�7f7�VO�7R�OAL��VO]7VOAka�UoP"
P�7ZU�=]7x=�7�aa�,0Q��	���XF�7��=�7�]agUx=�a�U]xx=x,a,a�
a�=%3S(S����a�
jabp�aga�aa�,aVL&bbja��a�a
=�a]ax=,
p$3J�a�P
aa�Za�aya1.W9@U�UE47��!�U�UUB�U}U]7pUgU�7���6xUeJ�U�U�
URU�DU/4747j	�U�7�3N����JvUj	U�U�rU��	z	�a�U�<�aU���aQUK�$Z�O=]7{{�=G75=�7=�:��<�7a3�5�8�����H����a�UgR	eagUa�U��aU�L&�!�a-UjaUj
	�o�a�U/a�U a_U=�7x=�7,	�6�6�w(^	��PmJ�P^J�ajUQ�Q�S(V��a0U�K�amU�a�U�PeJ�a�US(1.1.q��`.,a47�;43�;43V�L&�!H#�b�Ub�U
=]7=]7=]7y�p�p�p��PeJa�UZa
U�x&Jg>g7�>�6�#)&y#&�[�a�U�=�7�	�M5�+�J�)&a2U�p
=g7�jaU�2CakU�a�U�a�U��r��{��S�J�����GN�����$�U�))))�����23O�z�����IA3�:�.g*++8;�.VD�����,�(B��V����$�9���������%�g�T���(�j�W�Mg���[�c���N�����23�A3DU��.�.{�W�'K'�'T'Z'>'T'g'&'H'G�@=i������+�D3��?A;��������r�2����t�����3���3�k�T�T.5E�7b7����Uy��z	X1������2���1�P�E����� ���[�3���2)�������$$������3�*�*<*�W8�:)�$''��
-t/���
�`3@

;TVT$�V�!V[2V��VjVz;
#^^^�4'9z;z;�V�TQj&j(��
�'�!���V�
TV�V�5C�=���?�
�?i?i'�(�?�����?U?N?�?�?�(�&�?�?i�;]mm5�$2!�7�$o$o!:>�$�8[7`7�7�$8�&�&�7�
�3�`5JH
�7Q��$f�37�3J�7Q�.�$f�Qg��g7X�����j��g�����Z����i���"gU�7J*�@$Zg
T
]
gUg7X7U(�UjUgU�(�3�����'1.g7g747�+�!�3N�!��jO�!�	8$Y�$?�
����$�5��5������7�7`7`5����7�7�$�#7!����
���5�5J22`D	�$�U�C���H�l�h�l�h�&�&�������\������;�����]�K�n���������������������������������������������}�����m�^���������e�e���������]���H1.�agU�agU�agUx=�7�ag7�ag7�ag7�ag7�ag7,a47,a47,a47,a47,a47aX�=g7�ajO�ajU�aj���%j�ajUS����S��kaLkaUkaUaL����a��a���a�U�a�U�a�U�ajU�ajU�ajU�ajU
=]7
=]7
=]7
=]7]agU]agUna�Una�Ina�Ina���%3�3%3�3%3�3%3�3%3�3,
i,
i,
i,
i�ZjO�ZjO�ZjO�ZjO�ZjOX�X������JJ6�<&�'<&�'<&�'jUi�7.FUFF
�Z\-1.1.1.11.1.1.1.1.1.1.1.,a47,a47,a47,a47,&4,a47,a47,a47S(<S(N
=]7
=]7
=]7
=])
=]7
=]7
=]7=h7=h7=h7=h7=h7�ZjO�ZjOZ�OZ�OZ�OZ�OZ�O6�6�6�6��a�=P5\
��o7o7o7o7o7o7o7o7�
�
y
y
e
e
�
�
�-�-�-�-�-�-�
�
�
�
q
q
`U`U`L`K`U`U`>`?{
�
>
>
*
*
q
r
LBL8L��L��L��L��L��L���

�
�
�
�
�
�
]7]7]7]7]7]7q
{
4
4
 
 
VOVOVOVOVOVOVOVO
�
�
�
AAAAAAAA;
E
�
�
�
�
1
2
o7o7�-�-`U`ULLR]7]7VOVOAAo7o7o7o7o7o7o7o7�
�
y
y
e
e
�
�
`U`U`L`K`U`U`>`?{
�
>
>
*
*
q
r
AAAAAAAA;
E
�
�
�
�
1
2
o7o7o7o7o7o7o7�
�
)LR)�(�(`U`U`U`>`>�
�
�
�
�a�)�)�(L��L��L��L��L��L��SS

�L�L�(VOVOVAVOXFXFVOVO66 

�
�����(AAAAA�

]
I
��(L����M��<�d���+B(B(<(�(�(�('��������gg�gA<xMpD��HHHXX���,��������1-�'�'H'�����Z���6(6'E2�H��aav^B(��ADODW��H<$�^6X')�,]')t�O]<5'64=5�5�5'HH�XXXXX������������^�3^
^^^^^R#R#R#�>��7^^%^^^
^^^^^R#R#R#�>�mo$�$Xo!�7[7�7`7�7�77!�
<$<3<8<-<!�U<
LAS�
Ui7<<<�<<
�=`%x=m�"<O<
*;F
p7<a�� � x2�7= 5A](L6yj7D��"���	ajg�/ A6R
a�_@1D,�a
=h��Q�alaTa*8(^v&��SJLkaF�=k2�[8������a%"x�N�)ca	1(a	al�E6�$C	�	W W�o�c��,����0%%%>�%J[B
%6> >>#>0�%�!d'2R0

��]
na1.i�avU�a/U<&�'�=a�b�.�
a�U�7�5�]7�:����#3A"���������a���������������������������f�d���@����������t�r���}�q�x�x�����{���#�#�5�5�5�<�>�>���5d�L���z;5R���B<2�>�>;2<2'�'�MPMMPM�����(�4545=554�#A�<fHLH)J�<���+B�((��CfL�:>(�1�<�(J(�(�(�(�(Zt
<Ha>R�a�b<,A"�#A"�##-�-�,ZR�ZoP	=�"=�:�����cKa1U=D7�aLU��e�a>T�
�x����Ta�U
=]7	=w58=�7q+�����L��#C���������u�����`�V��BwB��E#3�+�&�!0K�HR���"��`uU"�V��aiUa�UC=�7=]7��7�u��Z(Z(Z(Z(Z(Z(Z(Z(�N�N�N�N�N�N�N�N�N�N�N�N�N�N�M5(e(i(Z(�F�F
H
H
H�(�(zFEF�1�+�aiUB
(O1-.+#n#N�O�(��.��.T�.}.�.}.x�!k
	kaUk
	iaYU
t�=�5C=�7]g��T
f	
=g7�=�7J-� �9B'^��
$�]
g
Zg<aU),����V4K5~"7�UPU U�U�U�A	W5�\�US9S9J0U\�U�\�Up7� �(H�2
Q
Q�a���5EavUg����7jU�
A6	��K�1O+�1X-�JO<�gf�il���#�R
L&�=a��Kx0k,!������^wU=�:�4j.��80�����C7!{x=%3<&�ag7%�(�.2�g#%V]3�aS(_�N�N}Nn(n(n(�C�93�cQ�c��/�(�,���������������������6:::::�9�:�[�Xa)��g�.�:6X
b5���z��UiUiU�,�,C-�6�C�C�5�5oP"WFUPU���xfiPi�P�T�'G��/��r�r��yiPH��7�����U6S[.�Og7c+�7���,<,P�ZZ���UH3�|����������w����������f��)�)�b�a�[..44a�a,aS(�Za�aZ����������\Z
G����<<�������a�a#jU1.47jO�J�E�������B��PJ����cc������
J......FJFFJF�J�J�J�H�J�J�J�D�J�J�JP/P/P/P/P/WJWWJ#%#%#��#��##%#��%#��#%#�����J�J�J�J�J�J�J����JoJoJoJoJoJoJx0x0x0x0x0x0x0x0x0x0x0�0�J�Jx0�J�J�J�J�)�)�)�)�)�)WE�����TETETETETETETETETETETE�����������.2a�a\6aa�f�?#"#I#/#'##0#(# #%#"K6�",8/;?8
<1?/H7�+&<-<<?<7�M:<2<1^^%^^^
^^^^^^^%^^^
^^^^^��89<�5�6q
q�5��<]lNNNN"&"(&&#'NNNN""&&(&#'%'.%%%NNNN%'%%%""#""""'%'%%%??NNNN%GGGGG3%%%%%%%%"%%-****+NNNN_)N�QItD�E�N~N~M�5�Mn;���U������������7U������P
�7W W�o����

�
�
�
�


1a�
�
�
�
�
�
�
�
�
�
X
X
D
D
�
�
��
�
v
v
b
b
�
�
�
�
o7o7o7o7o7o7o7o7L��L��L��L��Z��Z��Z��Z��Z��Z��Z��Z��VOVOVOeOeOeOeOeOeOeOeOmA�7
J�J7�J�WJx0#%�J��JoJ�-x0MJ�J�����0��E�0#%##���x0�0�JWJ�J�J�J�J�J�J�J�J�JWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJ#%#%#%#%#%#%#%#%#%#%#%#%#%###x0x0x0x0x0x0x0x0�J�J�����������������0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0333333333333zJzJzJzJzJzJzJzJzJzJzJzJ�0�0�0�0�0�0�0�0�0�0�0�0#%##���x0�0�JWJ�J�J�G�F�J�J�J�JWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJ#%#%#��#��#��#��#��#��##%#��#��#��#��##��x0x0x0x0x0x0x0x0�J�J�����������������0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0333333333333zJzJzJzJzJzJzJzJzJzJzJzJ�0�0�0�0�0�0�0�0�0�0�0�0H�())L�L�)�L�(�(�����(�(�(�(�)�(��))L�)�L�)�L�(�(�����(�(�(�(8Q�����$�U�))))����U��O�z����I�:�.g*8;�.V�,�(B��.���.[�_���<��IA3�]�.j*f4d��.^H�����(x��<H�.�[�_���<��IA3�]�.j*f4d��.^H����(x���23O�z�2�IA3�(�.g*+8;�.VD�����,�B�,+D�.��23O�z�2�IA3�(�.g*+8;�.VD�����,�B�,[�P_����^�Y��IIAA33�~�.j*�4d�.�H����x+,^HJ.#[�P_���^�Y�IA3�~�.j*�4d�.�H���x+,&&&&,,,,33AA33�G���$�$�$�������%�%�%�g�g�g�T�T�T�������(�(�(�j�j�j�W�W�W��������)))����������)))�����[������RR������IhAAA[[3R�����ulj���������g�8����^���Y����HLHMfM������� ������=���������.�.�.�.�.�.�.�.'X'8'R�����J�����J�����I�����I�����w�
�
�H�H�H�H�.�������.���������������IA3�����IA3����4�4��I�I��.�.��I�.�.�.�.��I��X��9�������.�.�M��-��V���%�g�T���(�j�W��$�����J�������%�g�T���(�j�W���$�����I�I�,�,��s�"<9FsbDb;_I'2.T1H�*'0'W'/'(''@'7','4'4&U&,'2'2'2Gdl�*d6'����,�x6'2�(�(8R8Q�S�Q$H'E'2T1'H������c�K�W� �A�F����
$$����R�)���������.�x@8
~w����/	�����EMWY[]}������� d q � � � �!_!�!�""%�,.R�����ʧ��9���.�k���/������
 �z�����	����� HPY[]_�������  f t � � �!!�!�""%�,`-�@��§��0��.�0��� ���������������������������������������������������Q�B�������F��c�c�c�cmc=b�bi`h�
�
���
	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc���������������������������������tfgk�z�rm	dxl��uiy{n~d���epVo�d�����������<�	-�����{���������������������s���|��������((((((d�����H���� @�� ��L���h��		,	�
�
�8��(���
(
d
�
�p� t�T�<h���(Dt�T�t�@��`x� t�L�`��X��p��44p�8�@L  p � � �!�!�!�","�"�#$#x#�#�$$D$�$�%H%�&�'','D'\'t'�'�'�(((4(L(d(|(�(�(�)),)D)\)t)�)�)�*d*|*�*�*�*�+(+�+�+�,,$,<,T--$-<-T-l-�-�-�-�-�.p.�.�.�.�.�//\/�/�00$0<0T0�0�0�11(1@1X1p1�1�1�1�1�22202H2�2�3\3t3�3�3�3�3�44�4�4�4�4�55$5<5T5l66$6<6�6�6�77(7@7X7p7�7�7�7�7�88808H8`8�8�8�8�99H9�9�9�9�::0:H:`:x:�:�:�;(;�;�;�;�;�<<<�=$=<=T=l=�=�=�=�=�=�>>,>D>\>t>�>�>�?,?`?�?�?�@@@4@L@d@|@�@�A A8APAhA�A�A�A�A�A�BB(B@B|B�C|C�C�DLD�EExE�FF`F�GG�G�G�HpH�I8I�J0J�J�KKtK�LL�L�M\MlM|M�N`N�OTO�PLP�Q Q�Q�RR|R�S SdS�T T�T�U$U�U�V V0V�V�W\W�XXtX�Y4YLYdY�Y�Y�Y�ZZ(Z@ZXZpZ�Z�Z�Z�Z�[[[0[H[`[�\x]]�^h__�`X`h`�a�b4b�b�cc|dd d8dPdhd�d�d�d�d�ee e8ePehe�e�e�fHf`fxgg�hhh4hLhdh|h�h�h�h�h�ii$i<iTili�i�i�i�i�i�jj,jDj\jtj�j�j�j�j�khk�k�llXmm�nnhnxn�n�n�n�o|pp�q\qtq�rr�r�r�s$s�t tXt�u�vv�ww4wxx(x�x�yy�y�zz\z�{@{�|<|�}$}t}�~8~�,��,������0������������(�p��$���������X����,�\����T�������h���������h�����\����H�������������X�����P����L��� �L���� ����L������l���T�����8�T���<��������8�����$�����<�p���\�����T�����4�|���H�X�h�x���������<����������T������������ �4�H�l��������������<�h�����@�������X�t����X�x��������$�D�X�l�|��������T�h����������(�D�`������������ �4�P�d�t����������$�H������,�<�L�\�p����������8�X�x��������H�\�p�����������8�L�`�t��������������$�@�`��������L���������������4�H�\�x���h����4���$�4������D��������������� �4�������L�����$�d°��\ü��<�tĤ������@�`ŀŐŠ�������(�8�Xƴ�������(�@�X�pLjǘǨ�����,�<Ȥȴ����� �X�hɌɜ�����ʀʐ���T�l˄˜˴������x��H���X����tϬϼ�<Ш��рѐ���8Ҥ��DӔ��t���P�hՀ՘հ���,��ׄ������ؘ��Xٴ��xڤ���T���<ܜ� ݰ���������� �0�|��0�@�X�p߈ߠ���p�����@������������$�D�����l��$�X���������$�4����H����@����8��������`�p��0�t����T�������� �D�T�d�t�����L���� ����,�D�\�����P�`�p����T�d�|���D���8�����P����\���$�����x�����������T����l�����D�\����|h�X�� T����P�		�	�	�

@
�d�\�
8
t
�D���8p��@�d�Dp���D���4�� t��H�X��h�D�P��(`��P��(���p� d t � � � � �!!X!�!�!�!�""("@"P"`"x"�"�"�"�"�## #8#P#h#�#�#�#�$$X$�%%\%�%�& &0&�','�( (�(�)l)�**\*�++`+�,,(,�--�-�.0.�//�/�/�/�/�040|11�22|2�2�3(3x3�44�4�5�5�6`6�77\7�7�8�9d::�:�;T<<�=�=�=�>T>l>�>�>�>�?d@,@p@�A�BB�CDDD�EEpE�F�F�GXG�HxI IdI|I�JhJ�KpK�L$L�MM�NPNhN�OpO�PxQQ0QHQtQ�RR(R�R�S SdS�TT\T�T�UU$U<UTU�U�U�V�V�WW4WPW�W�X,XDX\XtX�X�X�X�X�Y�Z�[�\`\|\�\�]�]�^�_0_�`d`�a(a�bb0bHb`bxb�b�b�c,c�dtd�e0e|ff�f�g<g�hhxh�i�i�i�jj<j�k$k8k�k�l`mmLm�m�nnLn�n�oDoho�o�o�o�pLplp�p�p�qqDqXqtq�r,rpr�r�sTs�tt`t�uTvv�w�x�x�ytz$z�{�|(|�|�|�}X}l}�}�~~�4����@�����$�\������l����d������4�l�����H�l�����p������������$�X�|�����$�l�����������p������8�X�����(�x���8�������T���<���`���,�����P���8�t����x����H�|���,�l����D���4�t���`����D�����@�����<���4��������H���t�����(����D���P�����\���<���T���d�������������� �����,���d����(���H���$����x���D���L����H����P�������d�������p���4����� ����`����p�����0�X ��Xð�Ā���0�P�pŐŰ����8�Tƌ����$DŽ���H�`�ɐ��|���`���$�d̜̀��� �X͠���PΈΰ�$τ��XР�(р���8Ҁ��Ӝ�(ԤԸ��� �L�pՄ���P֔��$�<�T�lׄל״������$�<�T�l؄؜�ٴ�����@���,ۼ�������<�\�t܌ܤܼ�������4�L�d�|ݔݬ�����l�����,�D�\�tߌߤ�������,�D�\�t����������4�L�d�|��L�����(��0��������(�@�X�p���������(�@����d����������4�L�d�|����������,��D�\�t����������4�L�d�|����������$�<�T�l����������,�D����T�d�|�����`�$�����8����������|�8�����0��������������d�L��L<\�4Ld|�	D	�
�4��
x8Xx����� 8Ph��������0H`x����<��0l�H�$<Tt����,Dd����4Tt����$Dd|����4Tl����$D\t����$<Tt����,Dd�����4Tt����$Dd|����  , L l � � � � �!!<!\!|!�!�!�!�"""4"L"d"|"�"�"�"�"�##,#L#t#�#�#�$$<$\$|$�$�$�%%D%l%�%�%�%�&&8&`&�&�&�&�''<'d'�'�'�'�((D(l(�(�(�))$)L)t)�)�)�**,*D*d*|*�*�*�*�+++4+L+\+�+�+�,,,4,T,l,�,�,�,�,�---0-H-`-x-�-�-�-�-�..(.@.X.p.�.�.�.�.�///0/P/h/�/�/�/�0$040T0t0�0�0�0�0�11,1D1\1l1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�22 202L2d2|2�2�2�2�3$383d3�3�44P4�4�4�55$5<5\5p5p5p5�5�5�66,6,6�88,8D8�8�8�8�8�99@:::�:�:�;;4;X;h;�;�;�;�<<(<L<�<�<�==T=l=�=�>4>d>�??(?�?�@H@�A�A�BxBxBxBxBxBxBxBxBxBxBxB�B�B�C CTC�C�DDPD�E,EPE�FXF�F�F�F�G,GlG�G�G�G�G�G�G�HH H4HHH\HpH�H�IIdI�I�J8J|J�J�K4KtK�LLL�L�M�N$N\N�O<O�P@P�QpQ�Q�RhR�R�S�T@T�UPU�VdV�W0XHX|X�Y0Y�ZPZ�[[�[�\�]h]�]�^X^�_�_�_�_�`�bhc�c�d0d�e|fPgtg�h�h�iLi�j�kLk�m�n�olo�pPp�qLq�rr@r�r�s,ttLt\ttvv�w`w�y(z�z�||�}$}\}�}�}�~L~�|���\����4�T�����p��h���L�����h������� �L��������0�T�x���h�x�p�,�H�X�|��������x���<���P�`�����D�x��������8�H���t��� �D���<���(�P��������x�����0�l����<�x������t������8�t�����$�p���4�����@����L����8�x�������<�`���T���t��������$�L�t�����L����,��������(�D��� �D�h���������<��������T���$�����X�l��������8�d��� �8�X���T����@�������$������X�����D�t���D�p�����(��������x������l���`�Đ���HŜ���HƠ��x���TȠ���`���0ʌ���Pˀ˰��\̼��\Ͱ���8���`ψϠ�\ҌӴ��Ԉ���0�h���X֠���H�|������@ؔ�ِ�0���4ۜ�<���(ݐ���ހ���8߈��� �|���\������x���(�h���,�`������<�p����8�p�����P������$�H�d�����4�T�t�����,�X�� �X����H�`���L���p�����4���(��,�������L�d�|��� �t���4�������$�L���,�D������\���H���`��|����0t� �� �X�X�8�L��h�D�		h	�

�
�L�4�

�
�� ���|�P��� <X��(t� ��\�|�$�<��(��\�8���Xh�X�� ( L �!,!�!�!�!�"0"�##�$$T$�%\&&�'X'�(H(�))�**@*d*�*�+d+�+�,,X,�--4-\-�-�-�.$.x.�/(/�/�0P0�1H1�2D2�3@3�44�55�5�6<6�747�7�7�7�8�9�:T;;�;�;�<L=<=T=�>>�?X?�@L@�A8BB�C4C�D<D�ELE�F�GG�HlII�JlJ�K KTK�L<L�MM�M�NNxOO�O�O�P�QQ|Q�R$RxR�S8S�TTtT�UU�V,V�W(W�X0X�Y�Y�ZZ0ZHZ`ZxZ�Z�[,\\\8\d\�\�\�]] ]L]x]�]�]�]�^^8^`^`_�`�`�`�aha�b�b�cpc�c�c�c�c�ddd0dHd`dxd�d�d�e8ePehe�e�e�fff4fLfdf�f�f�f�ggg�g�hHh`hxh�h�h�h�h�ii i8iPi�i�i�i�jj$j<jTjlj�j�j�j�kk0k�k�k�ll,lDl\l�l�l�mm4mLmdm|m�m�m�m�m�nn4n�n�n�o0oHoxo�o�pp p8pPphp�p�p�p�p�p�q,qDq�q�q�rrXr�r�r�s<s�s�s�ttxt�t�uuu4uLudu|u�v v8vPv�wwPw�w�xx,x�yy(y@yXypzztz�z�z�z�{D{�{�{�{�{�{�||(|�|�|�|�}p}�}�}�}�~~0~H~`~x~�~�~�~� 0HXh����$�<�X����������������� �0�x����|���(�����h���4�h���<�����p���4���$�8�L�`�t���������������(�<�P�d�x����������|����$�`������������T�������(�P�t������� �L�p��������D�l������� �P�x�������$�P�t������� �L�t��������8�d��������0�X��������� �L�x��������@�l��������@�l��������@�h��������D�t��������D�p��������D�t��������8�d��������@�p��������4�`��������0�X��������4�\��������,�T��������$�P�x������� �H�p���8��������\������\�������,�<�T�����(�8�P������$�<�d�������0�H�h��������(�P�x��������� �H�p����������@�h���������0�H�h���������� �8� �������� �D�h���������p����h����������(�@�����t�0�T�x�����X��������X�h�x��������D�T�d�����������(�8�H��������������������(�8�H�X°���������� �0�@�P�`�pÀØð�������(�@�X�pĈĠİ���������� �0�@�P�`�pŀŐŠŰ��������0�H�`�xƐƨ�������� �0�@�P�`�pǀǐǠǰ��������(�8�H�X�h�xȈȘȨȸ����������(�8�H�X�h�xɐɨ���������� �0�@�P�`�pʈʠʸ�������0�H�`�xː˨������� �8�P�h̘̰̀�������(�@�X�p͈͠͸�������0�H�`�xΐΨ������� �8�P�hπϘϰ�������(�H�hЈШ�������0�H�`�xјѸ���� �H�pҘ����� �8�X�xӘӸ�������8�X�xԘԸ������ �8�X�x՘ո����0�Xր֨�������0�L�h׈ר������� �8�P�p؈ؠ����� �8�P�hـٰ٘������0�P�pڈڠڸ�������8�P�hۈۨ������(�@�X�p܈ܨ������0�X݀ݨ�����0�P�pސް����(�P�xߠ������8�X������ �H�h�������(�P�x�������$�4�D�T�d�|�����������$�4�D�\�l�|�����������$�<�L�\�t��������������<�T�l���������4�T�t���������,�D�\�t����������4�L�d�|��������\�@����,��h�� �8��`�����(�@�X�p���,���P����\���\�����<���x���d���T��������\�t�������������4�L�d�|������������,�D�\�t����������4L�Ph�x��x����P�,�	h	�

�0� ��
,
D
�D�H�h8��0H`x�p�����h������$<Tl���Tl�����\���h��� l �!!(!@!X!p!�!�!�","|"�##�#�$@$�%<%�&$&|&�'$'<'�(,(�) )8**t+d+�,, ,8,P-\-t.p.�.�.�/|0L182$2<2T2l2�2�2�2�2�33343L3d3�3�3�3�4�5t6P7(88�9�:�;�<�=�>�?�@�ApB`B�C�D�EtF<GG�H�IhJPKDL@LXMHN8O(PPTP�QQ,QDQ\QtQ�R�R�SS�TTtUU\U�V<V�WDW�XXX4XLXdX|X�X�X�X�X�YY$Y<YTY�Y�Y�ZZZ0ZHZ`ZxZ�Z�Z�Z�Z�[[0[P[p[�[�[�[�\\0\�]�__�`�a�b�c�c�d�e�f\g(g�h�itjdk,k�l�m�n�o�p�q�r�s�s�t@uu�v�w�xtytz4{T|h}�~���h����X�p�$�������\�����4�D���`�����X�@�X�P������l�(�������L�P�h�h�X�4����������L���������������d������,�L�d���D�\������������<���H�����H�����D�����H�����P�h��������������(�@�X�p���t���p���l���p���t���|� ���d����<�����$���l���`�����4�L���H���`�������� �8�P�h���������������0„�����l�|� ���Hż�D���p������l�ʨ�H�`�x���`���X��(ΰ��h���l�4�(�t��,�x���\����� Ք�@�� �4�D����|���P���`��܀ܘ�<��ބ�d���X���D����0����,���`���0�H����L��4�L�d�|��`�$����p�8�����`�0������L����L�,�h������������L�t���������P����T���H�d���X|����Xt�$$@\���@��<L����		(	@	X	p	�	�	�	�	�


t
�l�,�
�|p�t^��3!%!!^���5���63dH����7#34632#"&�9kt$%%$��l%%$  A�W�#!#�77����l�3##7##7#537#5373373337#���)G)�'F&~� ��(H(�(E(�����C����C�B����B��>���")07.'55.546753.'#>54&'�7h "j3c\gX@5W$ M(BX-h_@63-<@;60A1U�RGJTXWJ
�+?2FW
o�*!(+��+"&'1���%/2#"&546#"32542#"&546"3254�JLIMGKF�tM���&##&MhIMIMGKFL&##&M�ujjwwjju
�6�4QPPR���ujjwwjju?PPQQ��5����+52>73#'#"&5467.546">54&32670P]Q>�!Y0&�wW/tSgzSG 7cR*5&$;30R6=J>@\�QI?X$�Q/@n)�T*4f^M]($R7JRH,'$=%"=($.�� B67B*A���#�7��(�b�
4673#.(GLSFGGERLGz�[^�wt�^X��b�
#>54&'3GLREGGFSLGy�X^�tw�^[�)6��7''7'7'B��wVUMYu����6\�/��/�\6�2oS3##5#5353A��H��H�G��G�)��t7#>73�
1A^i569�4(�3753(��NNH���y74632#"&H$%%$6%%$  
j�	#j��V
�6�1���
#"&54>3232654&#"0hVys/hUxv�~CQPEEPQCfs�Xít�W���������Yc�!#467'73cVL.�I�+4>;�0�)57>54&#"'>32!�(�6J&F84O)/*mDdt.R7�iI�6TQ0;=$ ;#1eY8b_6�-���*#"&'532654&+532654&#"'>32�PDVT:y_8`,-h0`Ui_EFX[F<:R(,&qHpm#HU
XG>a6RKBC;KJ=49"<,d(�
%##5!533'467#!(hU��P[h�����K�#�4I!,��?���2#"&'532654&#"'!!>n��~7a!$g/OaV]H,f��:�ndoSKOFK
QP�7��
�,4>32.#"3>32#".2654&#"7G�e3-E\5R@]r{hDnA�?NEE/F'"D1M�yHK.Ph;#1qhp�D��QUDP'< +U7,�3!5!�%���zPD�z1��
�(52#"&54>7.54>">54&32654&/^x%>%,H+ks|)D'4I8`<7G#<$4GF�JMIMRDBE�XS+@15F1Zie[1H4UB7K(G52%2#>625�(4EE74EI2���,#"&'532>7##"&54>32'"32>54.G�e5'1F[6SA\q9fEDn@�>OCF0F'"D�M�yHK
.Oi:"1qgKl:E��RTEO'< +T8H���&4632#"&4632#"&H$%%$$%%$�&&$  �x%%$  ��&4632#"&#>73F$%%$q
1B
^�&&$  ��4�5&WU#2t	`-5%
	�)��yt�2�N��8��5!5!8�6��GG�GG2t	`7-52y���)�N�2�����+74>7>54&#"'>32#4632#"&�% '+>;1L#(a<_h5$!#F#$$#�&72!,*04F^Q-?5*)�%%$  :��I�?M#"&'##"&54>3232>54.#"3267#".54>32326?.#"I,@,.5F5LS4_A,U
%+K�Sr�Q��=o++kAv�Y:n�ch�]�3+81
(1<e.XG+5"%2fTBe:	�4"3U3]�D^�j��DX�t]�uAV��@:TC}0K~�!'!#3	.'3!V��U[Q��
Q����3*-;�aT�"2+2654&+32654&#-��FB-I*�s��\DS[v�_JMc�Ob?S&F8aj��;:;3�K��J<8E=��Y�"3267#".54>32.�s�{{/T((U;m�IO�nqT$!Q�����NZ�pl�]*La��	+324&+3 ���l�V_��ua"l���P�v����a��)!!!!!�q���#��5�O�N�a��	3#!!!!�Z���"���O�O=���� 3#".54>32.#"32675#��:vKo�OX�u<k."&_3��7v`/B�y��Y�qp�[N��U�I
�a��!#!#3!3�Z��ZZnZM����.(*�)57'5!*��TTTT4;44�����B��"&'532>53$$-Zf�L2-�Agbak�!##3>?3kj�IZZ>�i��U@����"D"��a��33!aZ8��Pa*�!##333#467#��S���Y�ri9�O��I�6�4f ��a��!###33.53�i��Sh}TQ#h7�q��@L �=����#".54>3232654&#"�K�lo�HH�pk�K��ryzppyysfo�\\�on�\[�o�������a*�2+##32654&��5}kRZ�[HfdX�nd;g@���M��BOED=�V�� #'"#".54>3232654&#"�ig���
o�HH�pk�K��ryzppyysf��#��\�on�\[�o�������a_�2####32654&&�*A$�i��Z�fkWPT�ef9L-
��'���N��ECF;3����)%#"&'532654.'.54>32.#"��u<f"$k9PQIA[]:gC;b(%W/CDD:?W-�_jV>5#0)!`S9Q,M9/$0&5J
!�!##5!#CZ��{OOZ����%#"&5332653�<{_��Z]^aWY�JwE�w�1W`gQ�X�#3>7X�Z�^���6�6,M##N-���#.'#3>73>7��[�
�[�^o
~]�n�6�:-	
U.�/�L.V&'\,��N.[#%W/�F�!##33Ff��_��d��_�6��tV����6�3#3�a�Z�bk_�K���&�	)5!5!!�x�����D6PD��P�b0�#3#30���hH�(
k�#`W���6��b��3#53#����V�H��&�3#&�2�N���<g�����f���!5!��@��@(^��#.'5�!%;:1�7499
.���!&2#'##"&546?54&#"'>326= b^@#MDI`~�[:5*L!#`NdM7+DZ!V^��L,*MRPW C4B��83-*KN0U��0�!3>32#"&'##3"32654�P?dyzc?P?X�UBAXHG?";".����. D���bgcijd�7���"".54>32.#"3267,Go?BqH)L@�ML,CA
:z_c|:I	�ag
N7���""&546323.=3#'#'26=4&#"dxyd>OXG
P1UEBYGGG
����.!
3�H"0I]^dkq_`j7��"2!3267#".54>"!.$Ec5��YP3O*)P7LuA;kF?I>"<mI5[_M>{YX~DHQHDU��###5754632.#"3L�X^^\R 5*,+��,�)h[E
;?#7�"+2373#"'5326=467##"&546"326=4&5UFu{vKOwEO6phuusCJIFQJL"()G��st"Q*QF-	Q����JkcciWan_U�3>32#4#"#3�Y4bbWxZCXX(#)*]g��W�e^���N��2#"&546#�AX�������4632#"&"&'532653N8&  *XH���G#1k��KUU
�3>?3#'#3�	�g��j�=WWk4
���5��U��3#3�XX�UV"!2#4#"#4#"#33>323>�[ZWmNCWnQ>XG
U0~&]"]h��YZV��Yd^��I*)Z.,U"2#4#"#33>W`bWxYDXG
\"]h��W�d^��I*)7��'"
#".5463232654&#"'�sGo@�sIo?�kKRQLLRRJ
��A}Y��A{Y_oo__llU�0"#2#"&'##33>"32>54&Tcyyd>QXHN1RCAX1?G"����/4�I#0J\^ck6]<\n7�""467##"&54632373#26754&#"�Q@ay{b?P
FX�SEDWHFG0"0����0#I��/[^fiq__kU�"2.#"#33>O#

)H+XH
R"Q-Q6��b,@3���")%#"&'532654.'.54632.#"�tb8Q [/C<954J(oZ1U%"J'69=33H&�NPP+$  (8,DJF#(9��S�%267#".5#5?33#*
4*G,LM#4��/>C	HA8*#r{D��1/O��#'##"&533265H
\4abYwYE��G*']f_���d^�333>73��^rr^���6126<��".'##33>733>73#�
`d�[J_`\KZ�g/)OO*����+X27.��"PX.���373#'#Թd��c��d��c���������33>73#"&'5326?^tm_�YN$
.9��(I!Q)0��LZF4+G'�	)5!5!!��x ��p��#:�DB�n�b\�.=4&#5>=463\\j?;;?nX4;mm:5�NP�3+I*2�PNH,1�gg�1+�8�3#�II�� �b`�>=475&=4&'53# 4;mm:5\j?;;?nXV+1�gg�1+HNP�3+I*2�OO2	�.#"56323267#"&
$/>0H9.$/>1G;?"N5"M6
H�J�"#"&546323#�$%%$\:l�%%$  ��[����!.#"3267#5.54>753a&EBRMOL,A:'C;W00X:D�I
ehh_
M
ad	<rY[t>	T � 2.#"3#!!5>=#53546N7X"I)9<��*��	+8``o�F;B�Bh=;PJ@BiB�Yd;��B!1467'7>327'#"''7.732>54.#"ZB1B:7C0@#?/C8@0B0AC";$%:##:%$;"a9D/@@/C9?1B/@#@/B9$:##:$%;##;,�33#3##5#535#533�\�|���V���z�]m]��@R@��@R@w�8�3#3#�IIII����;����3A467.54632.#"#"&'532654.'.7>54.'C0$(f_8N%"D0<18LMV.#'sg7R  ^/J8774K'K?P)D>,�2=7(<EC'H<3A5&ELK+*:6%3+"(%.�w��4632#"&74632#"&���1���&?".54>32'2>54.#"7"&54>32&#"3267�P�c66c�PL�e96c�P@pV0.SqDZ�P.SrScb.ZAA:2+;A9B92
6c�PP�c66c�PP�c65.UrEArV1Q�\ArV1Z{eAe9=TJLS
@
 4�$2#'#"&54?54&#"'>326=�AB/8&/8�8*2A7<*3-�6;�*12c!1
�/((8��
7'?'(�?��?�ƪ>��>��$��%�
�$��%�2��#5!5G�q����G��(�31���&4=".54>32'2>54.#"'32#'#72654&+�P�c66c�PL�e96c�P@pV0.SqDZ�P.SrE�RL0tVd>2',(,1
6c�PP�c66c�PP�c65.UrEArV1Q�\ArV1_�@A/7­��(# �����:!5!����B7�u�"&54632'2654&#"�HWVIGXXF0-/.1..�UDDVVDDU;4*,44,*42	V3##5#53535!A��H��H����G��G��GG�3U!57>54&#"'>3232��s))%1#E+@I;8Q��6p'1'  .?71N5M�AU(2#"&'532654&+532654&#"'>�GH+'/TY%@F>40:4992/)5$EU>0(4
3):I
?")#$!7' .(^��#5>73�29:#"j�9947U�#'##"&'##33265GP8'8XXxYD��H(*<)���d^7��%�####".54>3!%:f:'>\37dA?���.l[`m.��H��+��#"'532654&'73�JJ 	$&5&+:$3�057V5(%��L#467'7�G

6#�L�T*		'1\ Y�#"&5463232654&#"YVHCXTIGU�,11,,11,)QYWSRWVS:;;:;99'8��
'7'7'7'7ժ>��>�ǩ>��>��%��$�
�%��$�"��$33467'73#5#533#'35467~�K�L#

6#�IG���I==�} �62*		'1\�T��`4��<`�]81��*33467'73#57>54&#"'>323`�K�L

6#�IG#s))%1#E+@I;8Q��62*		'1\�T��6p'1'  .?71N5M>�(,7@"&'532654&+532654&#"'>323!5#533#'35467�%@F>40:4992/)5$E.GH+'/TA�K�L���I==�} 
?")#$!7' .>0(4
3):I���6`4��<`�]81�@�"+#"&546323267#"&54>7>=3;#$$#$!&,?:2L"(a<_h5$""F�%%$  �%81 -*04F^Q-?5)*��~�&&E����~�&&x����~�&&�m���~�&&�_���~�&&l���~n&&��=��5�)5##!!!!!%3#5���k]S�������:���O�N��M��=�Y�&(|��a��&*E����a��&*x����a��&*�`���a��&*l���(*�&.E���(>�&.xM���S�&.������7�&.l�����
2+#53#3#3 4&=k�Wű�JJ�n��Z"��P�s��:NBM�N�����a��&3�����=����&4E����=����&4x*���=����&4�����=����&4�����=����&4lf�@��>''7'7�2��2��4��4�>3��3��3��4�=���� )#"''7.54>327&#"4'326�K�lpI0=4,,H�p4Y%.=3^��?4Nys�3��E*zpfo�\/D(J1�Wn�\B)Gc�=d%�#���I�:���Z����&:E����Z����&:x���Z����&:�����Z����&:lM���6�&>x��a*�
+#3322654&+*4}mQZZ`�~��iaWbY~<g@��|n�COEC��U��J�6#"&'532654&'.54>54&#"#4>32
**
&%6>gS/HL(70)5?.))G8#=%X:d?awi"3' 
$K;UNO.($2");(,! &*&.+��HCO#J��.����&FEo��.����&Fx���.����&F�H��.����&F�:��.����&Fl���.���1&F��.��-",3>2!3267#"'#"&546?54&#"'>32>"34&326=[A^3��OJ2L&(M2�>"\MIax|Z=3(M!#d1>QT5:C�9��^H3*?U"<lH6`[Mq4=MRPW"A4B)-).HOJET�83-*KN0��7��"&H|���7���&JEs��7���&Jx���7���&J�L��7���&Jl�������&�E���L�&�x$����*�&��������&�l�`7��'� ,7#".546327.''7.'"32654&� As&cDW�tHo?l5OB*�&p.{TKLSSLN�$C69@�z��;mKp�9`&K7@��YSI_a\>Y��U�&S�V��7��'�&TE���7��'�&Tx���7��'�&T�^��7��'�&T�P��7��'�&Tl2y	G"&546325!"&54632!!  ����!!  � "" �GG� "" 7��'6&#"''7.546327&#"4'326'�sI8(:-!�sI:';-"�k
�$4RJ:�"4QL
��!8'>$e@��$8&?#c>&A2l_J1��o��O���&ZE���O���&Zx���O���&Z�d��O���&Zl�����&^x�U�0�&#"&'##33>324&#"3260yc?PXXN@cy[FJRDAXJE
��.  "���-
"0��ee\\ckk�����&^l���~W&&�����.����&F�\��~�&&�z���.����&F�U���$~�&&����.�$�!&F�,��=��Y�&(x���7����&Hx���=��Y�&(�����7����&H�K��=��Y�&(�!���7����&H����=��Y�&(�����7����&H�K��a��&)���7����!.#5>73"&546323.=3#'#'26=4&#"�0
W�cdxyd>OXG
P1UEBYGGG�6957������.!
3�H"0I]^dkq_`j�����7��^�*"&546323.=#53533##'#'26=4&#"dxyc?O��XLLH
P/TEBYGFF
����.!
3=BYYB��H"0I\]ehn``i��a�W&*�t���7���&J�`��a��&*�m���7���&J�Y��a��&*�����7���&J����a�$��&*�7�$")03267#"&5467#".54>32!3267"!.�-52)'LuA;kGEc5��YP3O*(,b?I>t-82,"?>{YX~D<mI5[_M 0(9QHDU��a��&*�`���7���&J�L��=����&,�����7��&L�X��=����&,�����7��&L�e��=����&,�:���7��&L����=�#��&,��7��*7#5>732373#"'5326=467##"&546"326=4&kW!1X5UFu{vKOwEO6phuusCJIFQJL�58	69�()G��st"Q*QF-	Q����JkcciWan_��a��&-��������&M������3#5353!533##!!5!aaaZnZaaZ��n��HwwwwH��M���o	�3#3>32#4#"##535���Z4abWxZCXLL�ZBW')*^g��C�d^��\BZ����b�&.��������9�&�����>W&.���������&�����E�&.���������&�����(�$*�&.�\���$��&N����(*�&.�O�U�3#3�XX��(�B	�&./S��N���&NO�����B2�&/��������*�&�����a�#k�&0�J��U�#
�&P�U
#'#33>?���i�B]]		����6��(L
���W��&1x/���L�&Qx$�a�#��&1�,��A�#��&Q��a��#5>733!�0
W�nZ8�6957�6��PUQ�#5>73#3Q0
W�XX�6957����a��&1�#����U:�&Q����
��
35'737!a1#TZ�$�8�<2���Q?d�P���3'737N3$WX@%e ;8���,;D����a��&3x���U�&Sx���a�#��&3�|��U�#"&S�5��a��&3�����U�&S�d��_�&SF��a�B��"&'532>5##33.53�%&/�mSh}Tf�L1+QFP%�}�� q7t�<d`U�""&'532654#"#33>32�"
&wYEXGY4bbF�G#1��c^��I*)]g�RKU��=���W&4�����7��'�&T�r��=����&4�����7��'�&T�k��=����&4�����7��'�&T�S=��d�"2!!!!!!#".54>"327&�2.�������1o�HG�u{ttz9*)�O�N�O\�oo�[O����!6��~!!(42!3267#"&'#".54632>"!4&"32654&�et��SM5M((N5Dh fBFm?�r?d_<<F<�BOFHONHI!�n5`ZM8778A}Y��8659HNJESfeeifdhg��a_�&7x����U��&Wx���a�#_�&7�H��>�#�"&W�~��a_�&7�f���G��&W���3����&8x����3����&Xx���3����&8�L���3����&X���3���&8|���3��"&X|��3����&8�L���3����&X���
�!�&9|����S�&Y|g��
!�&9�E�����$#5>73267#".5#5?33#�0
W�*
4*G,LM#4��/�6957�FC	HA8*#r{D��1/
!�3#535#5!#3#蕕�ߔ�EJ�PP�J����S� %267#".=#535#5?33#3#*
4*G,DDLM#4����/>C	HA|Bz*#r{DzBz1/��Z����&:�����O���&Z�V��Z���W&:�����O���&Z�x��Z����&:�����O���&Z�q��Z����&:�����O��1&Z����Z����&:�����O���&Z�YZ�$��&3267#"&5467#"&5332653�52 '.��Z]^aWY,,,*k843=	�w�1W`gQ�2?j$2E��O�$&Z�P����&<�����&\����6�&>�J������&^�.��6�&>l�����&�&?x����'��&_x���&�&?�����'��&_����&�&?�Q���'��&_�Uj�"#4632.)/XaP2*�4?��AgUE
	��0�)"&'###53533#3>32'2654#"S?P?LLX��P?dyzpHG�UBA
. D]BYYB";".����Ijd�bgci
��'03#"#.546;2#2654&+2654&+�OEH憉FB-I*�s\DS[v�_JMc�} A=Ob?S&F8aj�;:;3�J<8E����a4��U��0�#"&'##!!3>32'2654#"S?P?���P?dyzpHG�UBA
. D�Jo";".����Ijd�bgciZ��H�".5332'2654&+U]n0Z�dv4x|PG`\{K
8cA���8^9^yMGCE<|NAR��-�"&533>32'2654#"Bm�XP?dy~lHG�UBQ
���";".����Ijd�bg`j��;�"&'532654&#"'>32�;U()S.s�|{0Q!$)jAn�IN�
N����LZ�ql�]=���Z(2.#".#"3267#".54>32546|
/$!M0s�{{/T((U;m�IO�n;:6ZH03N����NZ�pl�]AE7��"�(".54>3254632.#".#"3267,Go?BqH 6=
/@�ML,CA
:z_c|:[AEI0|I	�ag
N�����
��3#"#.546;2#' 4&+�OEH�l�VŰ"��u} A=P�s��M����3�
!"&54>;5!5!'3#"?��5}k\����eRfdYh^8b<�O�6M=H?>7���$"&546323.=!5!#'#'26=4&#"dxyd>O���G
P1UEBYGGG
����.!
3�J�H"0I]^dkq_`jF�/"&22#".'732>54.'.54>">54&9Ho?_V+(UE1K2
& J,*/11XWDo>JQQCMXV":iH`v"%4'#F-
E##!'/[W*Ul4HaJIc `RM^<��35!!5!5!5!<5��#���O�N�O�6��;�����6��&�*2.#";#"3267#".54675.546:Jw(+(SA<L`aafgua[7q.-lBdz7^ZERt�+=":6<GK>DBHR5];LZUIMd��6�"&5473265!!!!yCG
O'{����Y�I=
!/<O�O�q^S����)"&54673265#5754632.#"3#�@OK!^^\R 5*,+��C�F;
&1&)h[E
;?#D��LW=���Z-2.#".#"32675#53#".54>32546�
/"&_3��7v`/B��:vKo�OX�uHA6ZH05N��U�I
�P��Y�qp�[AE�:�""&54673>73'254&'6>(�^��_�!">6"�L9,t6_��,M##O,s��Ap&8MN9I"%EU��U�#"&=4&#"#33>3232653jl58R=XXT0[\~A=Xk
]g�A@e^����(#)*]g��FOD��xcZ��R�".533267�,E(Y%(/
7
IA-��00J	"0�3#!57#535'5*TZZT��TZZT�4�N�44N�4ak�2.#"##3>?>)		
�$j�OZZDz&$�F�kVM����!N$�	U
�2.#"3>?3#'#4�$
	�g��j�=W�I ��4	
���5�q���3#5333#UFFXFFbBT��B�������,#''7.#"5>3273267#"&/.'#�jc""9Amf�%+I	z@ ?G,.!? �6A%,�;9#P'��Z����#"&533265332653#'##"'#daZ:?YLZ;@\GZGd5�+i
gs��FFd^�FFog��6R..d31�����"&'5326533.53##-

 h}Ti��C�L#/��@L ��6Q#h7�RK��U�"r��=����=��%�$#".54>32>5332654&#"�J�lp�HH�pR|)*_9?-��qzzonz{qfo�\\�on�\71L4;dU|�������7���j##".54632>5332654&#"'�sGo@�s5Y -^
::�kKRSJKSRJ
��A}Y��$!M2E]N.eiieeff=����*#".54>32>32#4&#"32654&#"�G�gj�EE�jIp'f7e`Z:?f%5��kpqihqqkfo�\\�on�\/,/,gs��FF=\��������7��"&#".54632>32#4#"32654&#"�mCj=mj?L*PPW\@#��EKKFFKLD
��A}Y��H%#]h��I,@__oo__ll
z�"3#"#.546;2+2654&+�OEH׌�5}kRHfdX_[} A=nd;g@��cBOED��U�0�#12.#"3>32#"&'##4"32>54&�$
NAcyyd>QX�RCAX1?G�I P4#0����/4�a���\^ck6]<\na��_�##3322654&+���ZZk�*A$��WPTXfd'��def9L-
��sECF;��/����)23267#"&54>7>54&#"'>Df:\\@O#RO9k$"f<u�2\?:DDC*N"&Z�,Q9S`!)0#5>Vj_8J5&0$/9M-���"(23267#"54>7>54&#"'>�bg(J44:<C/\Q8�&H34<96C"&M"JD,8(  $+P�+9(#F��&�^�����%23267#".5#"&54>";54&u=E%(/
6,E'-A:7)'�FG�H00C	IAg?13 H
%�S�""&'532=#".5#5?33#3267�
0%C+LM#4��T*
9�I4fHA8*#r{D��`�@E
5�3#"#.5463!#�f=OEH��{0 A=O����S�#2.#"3#3267#".5#57546�)
	-<��/%*
4*G,LMI�IDUD��1/C	HA8*#BJP
�!�"&5#5!#3267pCD�� 


#�KR�OO�6/#LZ��2�>53#"&5332>53�1]%H=8w`��Z_`AO$YiL;/Q7��JwE�w�0V`/S5�O���k#'##"&5332653>53�$G<H
[3bcYwYEX0]`/T8�bG*']f^���d^;M:%����!%2654&'5!##".5467#5!�xpJ] �@XL�ij�LW@� ]KqD�rd�CHO1�pb�ON�bq�1OHB�cr�Z����"&5332654&#"5>32j��Z]^aW &2�<{
�w�1W`gQB' 	L���JwE;�33>32&#"��b��0 
����-I#�����"&2.#"#"&'5326?33>?>��YN$
.;�^tL,"A�LZF4+G��(I!Q)�8)&�37!5!3#!!5#O����ٟz��������PD�G�PD'�3#!!57#537!5�oe�{#�x�p�m��B�F�D:�F�D��#����7��%�".54>7'5!!#"3267Kaz9Cm>�����N1Q/`a2o.-j
=e;Ld3�GP�A C7EPR"��".54>7'5!!#"3267 Or=BpD�����;[o`M;a! `�<hAOf6�@J�=MZGWP��("&54>32654&+57!5!#"3267�QjPISB`[;�����hn/gU@'543QQ�9>!7!:@@4=�J@�^W8Y3
P
0�23#!!5#53>54&#"'>]ld��v�(��>2/G%/'e�`U*O,F��FIF.K*55" ;#1#���"&'532654.+#5!!32�:g-/n2a`/P2|^��*KwE?
RRL2@PP�3bGCi;!���"&'532654&+5#5!#32�:^"]7<SLMZHq�T`)1e
O3:51�JJu+L11U5$����#"&'532654&'.=#5?33#�8Q [/C<.D+([\#4��ENt
P+$(>=Z*#r{D\"	D=NPU�"2#33>">54&K<^6^�kXHJ+L@��G"2cJ_�V�I#0J\^��jDS���33�N�������&���A��3#3###535#535)����N������H`H��H`H���H������a��&)'?��!���a��&)'_�����7���&I'_g����a�B��&1/��a���&1O��U���&QO��a�B��&3/���a���&3O���U��&SOj��~�&&�m���.����&F�H��S�&.��������*�&�����=����&4�����7��'�&T�^��Z����&:�����O���&Z�dZ����.!52#"&54632#"&546#"&5332653��7��<{_��Z]^aWY�GG���JwE�w�1W`gQ�O��D/!52#"&54632#"&546#'##"&533265��7��H
\4abYwYEDGG����G*']f_���d^Z���
"5>73#"&546323"&54632#"&533265389i2:;(��<{_��Z]^aWY�G"
21}��JwE�w�1W`gQ�O��g
"6>73#"&546323"&54632#'##"&533265�9i2:;(�oH
\4abYwYE�G"
21}A��G*']f_���d^Z���#*=.'53>73"&546323"&54632#"&5332653@
,0<88>1-���<{_��Z]^aWY�0/
&&
/0���JwE�w�1W`gQ�O��q*>.'53>73"&546323"&54632#'##"&533265
,0<88>1-��oH
\4abYwYE�0/
&&
/0�A��G*']f_���d^Z���
"5#.'52#"&54632#"&546#"&5332653D8;:15��<{_��Z]^aWY"G12
���JwE�w�1W`gQ�O��g
"6#.'52#"&54632#"&546#'##"&5332658;:15��H
\4abYwYEg"G12
����G*']f_���d^��3���"~�#-!52#"&54632#"&546'!#3	.'3��7��V��U[Q��
Q��GG������3*-;�.���D7B!52#"&54632#"&5462#'##"&546?54&#"'>326=���7�Cb^@#MDI`~�[:5*L!#`NdM7+DZDGG��V^��L,*MRPW C4B��83-*KN0~�!!52#"&546'!#3	.'3�ז�V��U[Q��
Q��GGw�����3*-;�.���E+6!52#"&5462#'##"&546?54&#"'>326=��הb^@#MDI`~�[:5*L!#`NdM7+DZEGGw�V^��L,*MRPW C4B��83-*KN0����5W&��0���.��-�&���=����(".54>32.#"32675#535#533#�y�KX�u<k."&b3��7v`/B����@@4n
Z�op�\N��Y�F
IGNP�G�7�I"$123733##"'53267#535467##"&546"326=4&5UF7?rhvKOw8C��6phuusCJIFQJL"()G��G=L"Q*!GA&Q�}y�Jc\]bP[f]��=����&,�����7��&L�X��ak�&0�������
�&P����=�$��&4���7�$'"&T����=�$�W&4'���� ��7�$'�&T&�r����#���&��B������&������*�&�����a��&)?���a��&)_���7���&I_g��=����&,x8���7��&Lx�a��P�33!332653#"&=!aZ(Z/.0,ZZ_X\����.��-26*s��Jd`O���a�^�2#33>">54&�?b8*_�xZG_<FQ#��L�4lSC��s1��a->N9gE��G�~SS��a��&3E����U�&SE���
(1>73#&54632#'!#2654&#"3'.'0j
.6;
1=0/A]R��N\> Z�TFD..�?2872.
��������8;.����
">I#5>732#"&546"32654&2#'##"&546?54&#"'>326=�
8@?0��/@?01<<1  b^@#MDI`~�[:5*L!#`NdM7+DZ�%$5�713882271�V^��L,*MRPW C4B��83-*KN0����5�&�x����.��-�&�xZ��=����&�x+���7��'�&�x���~�&&�d���.����&F�?��~�&&�>���.����&F���Q��&*�W���7���&J�C��a��&*�1���7���&J�����1�&.��������&�����E�&.��������&�����=����&4�����7��'�&T�U��=����&4�����7��'�&T�/��W_�&7�]�����&W���a_�&7�7���T��&W����Z����&:�����O���&Z�[��Z����&:�n���O���&Z�5��3�#��&8���3�#�"&X����
�#!�&9����#S�&Y��&�L	�)>54&''>54&#"'>32'q�W&=5#L(_v7F>;`-+9yB9fA?4";%cժ^<BL-<F

F.=-3:=("#NC:S2I5]�`*��"&>54&''>54&#"'>32��-(C%X_$92,M%.^17X5/+,?h�~�"mU3;	B/6".1@!I</IMDWvL��a��&-��������&M����a���2#4&#"#33>�t�ZNZn_ZGFR�}��C�]]xh�Y�\.7��U�*7C67.'##"&546323.=3>#"&'%26=4&#"%2654&#"�	SPdyyd>OX$a2=AZh'��UEBYGGG�8.'8 dS:
43����.!
3��5>.;-4J9�]^dkq_`j,':��e�+".5467.=3326=3'2654&#"MN|IOF:7ZINOIZ8;DSF}S_XY_^WX
9lMRccEXXDXXDXXFbcQMl9NWMMTTMMW2��"�*".5467.=3326=3'2654&#"(Go@D>00X=AA=X10<G�qQLLRRJK
:pOTgVP�~OFFO~�QVgSw�I^RQ\\QR^&�:�"&'532=!5!5!!�
0�`x�����9�I4FD6PD�ʑ@E��'�:�.��~�&&�����.����&F����a���&*|���7�"&J|�=����+7!52#"&54632#"&546#".54>3232654&#"��7��K�lo�HH�pk�K��ryzppyys�GG���o�\\�on�\[�o�������7��'D)5!52#"&54632#"&546#".5463232654&#"��7���sGo@�sIo?�kKRQLLRRJDGG��Q��A}Y��A{Y_oo__ll=����)55!>3232673#".#"#".54>3232654&#"�)��1+2.20,2.�K�lo�HH�pk�K��ryzppyys�GG�5=4>�Wo�\\�on�\[�o�������7��'D'35!>3232673#".#"#".5463232654&#"�)��1+2.20,2.m�sGo@�sIo?�kKRQLLRRJ�GG�5=4>����A}Y��A{Y_oo__ll��=����&4�,���7��'�&T��=����+!52#"&546#".54>3232654&#"�ז^K�lo�HH�pk�K��ryzppyys�GGw��o�\\�on�\[�o�������7��'E)!52#"&546#".5463232654&#"�ה�sGo@�sIo?�kKRQLLRRJEGGw�?��A}Y��A{Y_oo__ll��6W&>�^������&^�B��s�3673632#"&'72654&#"$*X $AADA/A	�a6a��A34H$,X$,U���"#.!6754#"#33>32632#"&'72654&#"t$*xYDXG
\3`b $AADA.@	�a6��d^��I*)]h�F27A#+X$,��z�&367#5?33#632#"&'72654&#"$*LM#4�� $AADA.A	�a6=*#r{D�F27A#+X$,���"&'532653&  *XH�G#1k��KU7����!-8"&546323.=33>32#"''2654&#"!2654#"$p}yd>OXP?dyp�8d>IKBYGGI�LG�UBI
����.!
:"��";".����}@=Iq_dfq_`jjd�bgek7��"!,82#"&'##5467##"&54632>"32654&!"32654&�q|yd>OXQ?dyp�8d��LG�VAH3IKBYGGH"����.!
9#��"<".����}A<Ijd�bgekq_dfq_`j��~�!'####37337.''!V�gCgEU[Q*CJ�PCM
�0,��(��Ny��-�'';؁�=��Y� ).'3267#"'#7.54>327"&/!$�$+/T((U;2,C!WWO�n%%Ys�66��7	L��
N
K_(�{l�])s��X�"7�0�� &"'#7.54>3273.'3267#",2)KCU-4BqHMCP

�$,CA�&|�

�� sVc|:��
I��
N`3^
��
3#5333#!aWWZ��8LG7��G�P
��!�!#5##5!733#7CZeF���F.S�E��pVO..O��+��3��";"&'&'.'532654.'.54632.#"3267hRO: [/C<954J(oZ1U%"J'69=33H&k_
3)*
/�LQF	P+$  (8,DJF#(9+KP%,(H	'��".'.+5!5!3267�<L-19# ��p��;>81
!�#F4,':�DB�n
LA,(H��2#>54&#"'>�gv^hZYh>D"X!#f�fYK�1��BnF4?H�"2#5>54#"'>�gj$RFXYa{"N!#\"fY-^U!b�nFyBT�*35#5332#2654&+2654&+3#aRR̆�FB-I*�s\DS[v�_JMc����N�Ob?S&F8aj�;:;3�J<8EVN_
����533!33##"&=326=!
PZsYQQ<{_��Z]^aW��bN����NfJwE�wdgW`gQf��`�Wa����!##7#!733#3#337#3#��AhA1E8kA��w8�"AcKK�..O�N�M���7�0�&+/273#3267#"'#7.54>"37&4&'7$KCR7=�< *3O*)P74,ICS18;kF?Ip5w,�)/"��qN5�
M��!uRX~DHQH��*C�FW0����B�"&'532>5#5333#$$-RRZQQf�L2-6NB��N��gb����#4632#"&"&'53265#53533#N8&  *KKXKKH���G#1KG��G��KU=�	�#223733267#"&=467##".54>"32>=4.kIrG 


CKpP_�EE�`bllcX]$$^�7/\��/#LKRg$.8\�oo�[N����6_?�?`57�u""/23733267#".=467##"&546"326754&?P
F	$6 Q@ay{nHFGISED"0#I��;%C	IA>0"0����Iq__k[^fi
_�2####53#32654&&�*A$�i��ZWW�fkWPT�ef9L-
��'��'LWN��ECF;
�"##5#53533>32.#"+~XKKH
R8#

8X
?G��G�b,@QPC6�##'#53'33737#,f~Ze;EbC�DaF�M�JN���N����ߑ��&33733##"&'5326?#533>?#^C�?_C9T�YN$
.9t[>�����G��LZF4+G"G��Q)89(IQ��"&"&533>323267>54&#"a_@#NCI`~�[;4*L!#_OeL6,C[	V^mL,*MRPW C4B83-*KN07��Y"*"&546323733267#"&'#'26=4&#"dxyd>OF &2P1UEBYGGG
����.!E�^@	$."0I]^dkq_`j��0"*2#"&'##4&#"5>323>"32654&Tdxyd>OF &2P1UEBYGGG"����.!E�@#/#/I]^dkq_`jU��0� +2.#"3>32#"&'##4"32654�%
P?dyzc?P?�UBAXHG�I 8";".����. Dq���bgfjjd�!���"2#"&'532654&#"'>�Gj<CqG+AB*POKPCU"7v_c�=N
ldd`I0���"$/2.#">32#"&''>7&54>"32654&9)L@�
&X/HQ5Q*0Q 
C&ArY!C (J)5""I	�4%%(D62?+ :@hc|:��!'.$ 7���%2".=467##"&546323.=3326726=4&#"8"9#O>dyyd>OX
'��UEBYGGG�IA?3
!.����.!
3��;%C	/]^dkq_`j7��u� -"&546323.=432.#"#'#'26=4&#"dxyd>Oy%
G
P1UEBYGGG
����.!
3O�I ��H"0I]^dkq_`j3���"2#"&'53267!54>"!.Gk;AtM7P)*O3PY��5dEC>I"D~XY{>M_[5Im<HUDHQ3���"2#".=!.#"5>3267�MtA;kGDd5oYP3O*)P5>C?I">zZX~D<mI5[_M��DUQH3��"#,"&5%.#"5>3273267#"&''2>5hui
TD3O*)P7^�j
*< (A"ry/:
��?
�ubADM^Z<,"B8F��H&=I"J;I+���"(#"3267#"&54>75.54632.#"3cI�R<8U!V>sn!6 -7s[:S(!!E/ySF;H\1(MYC(3	;1DJFL,&��!���"�!���"8273267#"&'#"&'532654+532654&#"'6�Lfg
*< (A%4' 6!ov:^"]7<S�H:ES?;,C(T"20<,"B8F	$,	 4)C[O)2ZH%-&&F%7��+")2#"&546"32654&+532654&Mdh6/7#2hP����_Z]\>KLM*ES6"QA45
4),K,���Jhehd/0,%H!0".���"&'53265#53533#&  *KKXKKH�G#1KG��G��KU6�u�-:2.#"#"'5326=4>5##"&546323.=4"326=4&4$
u{vKOwEO6phuug5U�CJIFQJL�I ��st"Q*QFQ����()4H���kcciWan_��7�"L7���"2.#"32675#53#".54>Cn= G �ML$3s�1^;Go?Hy"$L�ag�G��:z_c|:��%"&546733>?3'2654&'�4?&�^f"	f^�"?4�G52\3�� U 66�7;\*4HIBA�����"0<2.#"#"&5467'.'&5>323>?>32654&�
	y$ ?44?""	
	*=	

=,�"E�1B+3==4+D.�C&T)+V "��+-Q� 47##"&5332653#�Z4acWxZCXX(#)*]g]���e^�U� 432.#"3>32#4#"#Uz$
Y4bbWxZCXq�I ^(#)*]g��W�e^��U��+2.#"3>32#"&'532654#"#4�$
Y4bby#xZCX�I ^(#)*]g�?�	I��e^��q�
��2#"&546##5#5353��KXKKX��^G��G���R��6t$#57'5PP�PP4�s44�4u�.#"#>32332673#"'#�	39/
X	28/Xr;E<��:F����T�3#"&54>3233#354&#"�*=7/'
Xhh{#);.0		�yH��qU�=�".533267�,E'W%(&
(�IAA��00C	U�o�"&'532654&+57!#3!f;^ !b:M`o[;��XX��q�Aw�PYMTK=�2��@�omGm=Q��R!"&533265332653#'##"'#[ZWmNCWnQ>XG
U0~&\
^g]��[U(��d^��I*)Z.,Q�R$467##"'##"&533265332653#�U0~&\5[ZWmNCWnQ>XX3
*)Z.,^g]��[U(��d^��U�V",2#"&'532654#"#4#"#33>323>�[Zy#mNCWnQ>XG
U0~&]"]h�?�	I�ZV��Yd^��I*)Z.,��" 2#4#"#"&'5326533>W`bWxYD$<$%
G
\"]h��W�d^��AI	C%;`I*)U��" 3267#".54#"#33>32
'#<$xYDXG
\3`bH;%C	IA��d^��I*)]hU#33.53#UlSm���P006���
34���7��'" 7��,"$25!!3#!!5#".546"32654&0^>`��
��P1Go@�qEWKRQLL"A7I�I�I6!A}Y��Jl__oo__l8���"'2#"'##"&54>"326=332654&�k�Mb]l" m]bK�py�<12.T2-2<|"N�bj�ZZ�ja�OI�rRTJ8��>DTRr�6���!#5.5467533>54&'�PwB�|VOxB�SS\TU[SZTUY FvQy���EwQz�
��	g[[h	
hZZf
��H"&'732>53#'#N"
 
*G+XH
S
Q-Q6��b,@��H�"&'732>53#'#N"
 
*G+XH
S
Q-Q6��b,@��#".=467##"&'732>533267m!9#S8"
 
*G+X
(�IA\3
,@Q-Q6��;%C	U��"2.#"#33>O#

)H+XH
R"Q-Q6��b,@U��" 2.#"3267#".533>O#

)H+$(
!,E'H
R"Q-Q6��00C	IAab,@RH"2.#"#4>�0
&##W(H"
K,0��{BH�"2#4&#"'>h0H(W##&
0"HB��j0,K
U332#'#2654&+U�Vh$9 �f��~>E4>�QM/?#���-.&0�U3373+7#32654&UX��f� 9$hV��~�>4E���$>0LR��1%/,3�9�"7%#"'3267#".=32654.'.54632.#"�tb-#$(
!,E' [/C<954J(oZ1U%"J'69=33H&�NP00C	IA�+$  (8,DJF#(9���2.#"#"&'532654>�&
$<$%
$=�	C%;�bAI	C%;�BH���%"&'53265#534>32.#"3#)%
KK$=#&
KK$<�	C%;@GBH	C%;��G��AI��"".54&#"5>323267�#=$
#!8!
&�IA�1(C	D=�3;%C	����("&546;4>32.#"3#'26=#"!@ODM2$=#&
KK'>- ,(�B47CVBH	C%;��HBIH%,��Y""5>323#5#534&a+
4*H+LM#4��/�C	HA��*#r{D61/�S�267#".5#5?33#*
4*G,LM#4��/�C	HA*#r{D��1/
��`75353!533##'##"&=3265!
EYXKKH
\4abYwYE��G����G�G*']fD>�c[��? ".5467#5332654.'53#-Go@63��0HKRQL"7 �j�
=qNJl'IEuVOddP3\D
EIU�v�Q��"2#"&53326=4&#"5>�/C%otvmXCHHC&%"GB�yyu}0��aKM_�7%	K�#.'##1�^rr^���<6235����"%3>73#.'##.'##3c

`d�[J_`\
KZ�g�)NN*-��,X37��.#PX.���!#.'##>32.#"�^tm_�XN$
 .81)H!Q)��bLZF3,G�#537�X�d������;��'�!".=!5!5!!3267�#:"�� ��p��#
'�IAI:�DB�n�;%C	'��">7#5!5!3>32+72654&#"�� ��p��S)Y=5AJ[a�- 2;
:�DB�nQN>*7D%2�,/�������'2".54632>54&+57!5!&''27.#"�.Y:XN;o5o[;����DpB
&9$!&nDa9.X-/&>�?26D%$
TK=�J@�5aI5(6)"&I4# $��2#>54#"'>�gj$RFXYa{"N!#\�fY-^U!��knFyB��2.#"#.546�5[#!M#{bXXES$j�ByFn��=!U^-Yf����"&'73254&'3�4\#!N"{aYXFR$j
ByGmp�� V^-Yf7��""&54>32.#"3267,|y'E[4)L@2G%#E1,CA��r�['I	?�tu�<
N��=����&4+U!332#254&+2654&+U�9[5</2Jet�7>��BFFD�;328
9<DY<J&#��'/.(�-��!"%2#"&54>75.546";#"32654����xr!6 .7tc�SE*�S>\U"���[C)4 	
91DIJK-%HZ2(fh�7��Q�+2.#".#"32675#53#".54>32546
/ G �ML$3s�1^;Go?HyK5*6�I0�L�ag�G��:z_c|:	^AEU(33!53#5!UX#XX������������'"&54632"&546;33#'26=#"�n<K@I+XKK%;*&#q��B47C��HBIH$+	� �%467##73753#j	�g��j�=WW�4
��3�5�U�333UX��1I7���%2467##"&546323.=4>32.#"#26=4&#"�O>dyyd>O#9"'
X�UEBYGGG
3
!.����.!
34BH	C%;��/]^dkq_`j��23##5#535>54#"'>�gj#NAllX[[Q_{"N!#\�fY-^U!PI��I~nFyB��2.#"3##5#535.546�5[#!M#{_Q[[Xll@O#j�ByFn~I��IP!U^-Yf7����'*"&546323.=3!!!'#'26=4&#"!dxyd>OX���#�2
P1UEBYGGG9��
����.!
3��B�nDH"0I]^dkq_`j�7���2?"&'532654&+57!#'##"&546323.=3!26=4&#"�;^ !b:M`o[;��G
P?dxyd>OX��DpBAw�&UEBYGGG�PYMTK=�2H"0����.!
3��@�5aIGm=/]^dkq_`j7����)69C>7#'##"&546323.=3!3>32+%26=4&#"!2654&#"��
P?dxyd>OX���S)Y=5AJ[a�MUEBYGGG9��L- 2;
H"0����.!
3��B�nQN>*7D%2�]^dkq_`j��p,/��$83".5#5?3!>32.#"#72654.'.5467#3�*G,LM#4*1U%"J'69<43H&tbC<954J(	�/%HA.*#r{F#(9+NFH $  (8, ��1/��-6#"&'5326=#".5#5?3354>32.#"267#�$<$%
1*G,LM#4�$=#&
�)
�/IAI	C%;LHA8*#r{>BH	C%;�����1/��4�6A".5#5?33#3267&54>32.#">32#"&'%2654&#"�*G,LM#4��-1M$BqH)L@�$U7HQ5Q*=d!*aL)5"*(F!(
HA8*#r{D��1/)6Pc|:I	�%%D62?')1I$ "<�
�5"&'532654#"####5754632.#"33>32}"
&wYDX�X^^\R 5*,+�X4bbF�G#1��c^���,�)h[E
;?#I*)]g�RKUU��i�,"&'#332654.'.54632.#"s:a+XXdgVF954J(oZ1U%"J'69=33H&�
 ��z5+$  (8,DJF#(9+NPU4�33!!%!UX���#�y����B�nD;���#'#3737#'#3737�cKQSIbFBTFPFEcKQSIbFBTFPF����P����������P����U��!#5##!#5##U�X�X�X�X�闗�闗��""232653#547##"&=4&#"5>0#;#xZCXXZ4ac
&";2ځe^���(#)*]g�#E���"/2326533267#".=47##"&=4&#"5>0#;#xZCX	$6 Z4ac
&";2ځe^��;%C	IAH(#)*]g�#E7]�3>32#54#"#3p:"?@8N;,99a8>��M=8��7]�432.#"3>32#54#"#7P:"?@8N;,9�T,"98>��M=8����v�4632#"&"&'5326533

%	

9/���+t��-37g2&#"#33>�
	)=9/5g1<0�B;'
�a"&'7326=3#'#3
	(=9/60;1���;&
�a7"&=467##"&'7326=33267� 16$
	(=9�);7	&0;1���$(
7aa
3373+7#32654&79UZBc3D8��R](#-a���*+.1�j �a!.'##33>?33>?3#
	>A`;0

>><0;aC�/

0�A�54��05����La33>?3#"&'5326?=K
	G>�:2%a�+0���.6*+���������[��������������������?�2#52654#1<<1 8821827?�"&5463"3�1<<1 8?822727�
�654&#"'>32#Py%&5<%EH:BA$H'4D2+E4��#5.54632.#"�AB:HE&<5&%$T4E+2D4'H'57�콽hu'YO7'5����COY'uh"	
73#'mm'TT"�뼼
"
#'37mm'TT
�뼼(^z�#.'#5>7�-1>86</,
�75/.47(^z�.'53>73�
,0<88>1-^54
00
45(�x�#xP���(^Q�!5Q���GG��(^��x��(^��E(�4x<7#xP<����(�mQ������(�4��E����(�4��x��H�'37�Y��YY���苋H��'3�Y�����(����
����(����
��������������������������K#53��<(^_�
#"&'33267_QHJK62.'9�<JI=)'(q��2#"&546\�(^1"&54632'2654&#"�1<<1/@?0  ^822771382(�$�3267#"&54>7p-52+0""t-82,6, 5(^��>3232673#".#"(9/5028/51^;E:F(^��#5>73#5>73�
.62 
`�
.622`�:947
:9U"�����7"&''73267�(Ab�
*<�8FD.<,"B��(;���Ja$7"&546733>?3'2654&'�!)�=B		B=�)"

�+ 8�34���#7 +,('
7p�#3p99�!g$#"&'532654&'.54632.#"K@%4<,'#339H;81H'227x/0

0	'')-
*	''La'373#'#�xAYYAyA_`@Þzz����
�2.#"#5.546�";2P@99D6E�'
H+BھU(6=NT�!#5!�nB�PNT�!#5353��B�B��PNT�!#533��BFB(�PNT�!5#533��B�B�PNT�)533T���BBnN�T33!NB����BN�T33##NB��B�B���(�9z�������(W��*5���[��(�v��'373��OXYN��ކ��(�v��73#'(�1�OXY��܄�(�#'57#�����k1kE>?(�#57'5(����E>?Ek18����"&54632'2654&#"�1<<1/A@0 ��822881382��(��E��(��53#.753#.(` 27-�`126.�
749:
"U9:��(�������(�C��������H����(���3##(Ι5�5�(���#5#5�5���5(��3533(5��5(��3#5353�Ι55�(�0��!53!53�B8M9Хcc(�0��!53!�B8�Хc(��K	'57!!#���O����1�;D<E���^���E������^���x�����Y^����1���^���������l^����D�0�J!!���_JG���e^����=����q4������sw��l����N�@5#'>54&#"5632�.#6$+%
%<B�&)5U4,����^p1��l����^����Z���W^����/��T(�#5(P�����Tx�#53#5(P�P�������^�a�
#.'5##.'5�126.O126.�"U9:
"U9:
�d^�L2#"&546#"&'33267�QHJK62.'9Lh<JI=)'�d^��
2#.#"#>JK63.'97Q�H>)'<J�����H��������K��������I��������M��������4e��E�t�������4e��x�t�����&X��353#5#XnBBn]A�A���&X��##533XnBBn�A�A�����!#5#NB�����+l�>53g3<]]hiDCPf��8��"&5463"381<<1 8�822727���0i��3#535!H�H0d<<d���0i��5#53#!H�H�d<<d���i��53533##5iHBHHB�<FF<FF�����br����p�S�O�*"&'532=3u
0O9�I4��@E��*"&=33267u<9O0
�E@��4I���P�	��"&54632������s�Q���l��������p����l�����#@��#5>73@!0WF7859�����d|������$S������4(������N�&���!#5##�dB�B0�nn�C�O���#"'#"&53326533265�>0661<6708=::##::B "B "���X�9�����0�����W�8�����/�����d�G�����<�����d�F���������H�H����� �����l�m�����D�� �f�!5!�@��@���1�"����3���N��P��&�q���0�I������h@%5!���GG�o���'7��%��=��:����#��L@���0��8��2#52654#51<<1 8821827�N�&���!53353���B�Bڪnn�C����!5!!5!���z��
���ȓ^�C�O���4632632#4#"#4#"�>0661<6708�;9##::B "B "��;f77''7f*<;+<<+;<*;�+<<+;<*;;*<��@@b463"#52654.?E:D;#/2$-#03
%,���0�����2����`^)�E�8����^��x����H^���� ����[BO����i^�C������i��<��&P��!#5!#��B��B��nn���0�"����2�����4x��������]��3#5#]�Bx<�x�H9�"&''7.#"#>32732673J$%-$	39/!"-!
28_	=;;E98:F�HA��!-2#"&546#".#"#>3232672#"&546�8/5139/50��m:F;E��X]�\+".#"#>3232673".#"#>3232673G2.31+2.20,2.31+2.20�5=4>�5=4>�Q�%���	7355#�}d}}d\>>\\>>���]��5#7# ;\\;�x__x��e�	'/7?GKOW_gow������53#7535#53"5432"54323"5432"5432!"5432"5432!"543253!53%"5432!"5432"5432!"5432"5432!"5432"54323"5432"54325353!533353���f��g���q�����y��6_5����>y�|���q�g5�66fz�.�6ff66ff6�
.F�����3VF.p6g��g666��NP#5>7.'5I5885.,
D3

2����S?&���d^�H
>32#.#""&54632�QHJK63.'9e�<JH>)'d���!_��77''7_*31/12*31/1K*21/13*21/1���P��.'5>73E6886.,�
D
3

2���P��#5>7.'5I5885.,(
D3

2�H���%#5>7.'5>73#.'#�5995.,�
D3


3(
D3

2�@BB@B@����S?&�����q���[���j��37''7'7#F
>F3883F>&F"B
0*@@*0
B"�@����+2632#"'#"&54632654&#"4&#"326S891<<1871<<�  5  ''7228((8227i��T_#7#73_"3{"3�xCxC�����
"&'332673��*F#�k�)F3��_]6>7=dX���K� 1��q,�!5!,��Xq3�����,��"��_��#".#"#>323267�]G9gdg9<93]H8fdh9<9�C=!D<!�~��O
2#.#"#>��*F#��j�)F3�O_]6>7=dX���%���!55!���}}�za>\\>��hdF$2#'##"&54?54&#"'>326=V#!+s)"+#-")FH�!A

r ��hrF2#3267#"&546"34&/5�K#$4@:0!zF5+J864<!"��l!�2#"&546#5	

	
(�Q����hzF#"&5463232654&#"z=4/?<41>�"$%""%%!�6::65995&--&&++��hoB#'##"&=3326=o!)+,(5(B�%)��3(&o��hgF"&54632.#"3267%0>@1"GEh59;5RP��ho�""&546323.=3#'#'26=4&#"-66-$( $&(   h8778
V��&%(+-&&+��lq�3>32#54#"#33(,-'6)((C%)��4)%o0�^l�F!2#54#"#54#"#533>323>g)('1#'2$( '9
)F%)��3$#v�3(&o�$��l`F2&#"#533>D

*(!%F '!r�'��hRt27#"&=#5?33#0+"#FF�'}.2|��l}B
'33>?3
[*4
3+\l�~
"

"
~���lyB'373#'#S->>,SX-BB-�hPPhnVVa��333#aZ����N��U`333#UX���J�<T�!##!#5#�II�|�.���U9�!##5!#5#zL�Lz����O'@��573'0j_@�
���`�573_;0�
����b�����U-�R���"&=33267�(-N�)"S@:��!���"��7���"&H��p��!���"&�W�o����& �����B��/(^�573(0j_^�
��^�573'"&546323"&54632&jU}�^�
���
��&&EB����H��&���
��'*�B���
'�'-�B���
��'.�B���
��B�&4rB����
�'>�B���
0�&d|B��������Y&tC�g��~�&��aT�'a��3!!a{���O��
t�353%!.'

Q����2��e2Q�*-;��a��*��&�?��a��-=����#".54>3232654&#"5!�K�lo�HH�pk�K��ryzppyysT.fo�\\�on�\[�o��������NN��(*�.��ak�0`�
13#.'Q]�
��3*-;����a*�2��a��3<4�5!5!5!P�X��D�yQQ��QQ��QQ��=����4ay�3!#!aY���6{����a*�5&�355!!*'26;&����?��&G(�J'KP���Q��
!�9��6�>3�"+!5.54>753'>54.'ycG J~^Y_~I I`YZg*/g�Wg-*f[Z4Sa.5bM/DD.Lc60bQ3Z��5X8;\57\99X4��F�=Z��!5.=3332>=3n��\.S7X7S.\�������Vb(�>(bV�ᔓ���'353.54>323!5>54.#"�%F-L�ij�L,E&���>J 2gQPg1 I>OUvJb�YX�bKvUOH,\kBLxEExLBk[-H��7�&.l�����6�&>l�����7��Y&lB���-���&pB���U�&rB���R��6&tBI��O��&�C�7��Y")"&546323733267#"&'#'26=4&#"`zwg8T
F %1S*SECVIG
����.%I�^@	$.$.I_gdjke�U�.�/4>32#"&'2654.+532654&#"U=h@fnS;Lb=iB6C �FR)C&SI9AI3#@(#@�Vg/c\HT
b[D`1��.MF5E#DK=><HD�Z�.�533>53��[aU@W$YP����B?^ߑg��W�-���&2".5467.54>32.#"'2654&'#Gp?_V,(VD2J3&K,*/11YVDo>JQPDLYV
:jG`v"$5&$E-E##"'/[W*Ul4HaJJb _SM^-���")"&54675.54632.#";#"3267tkC.+4h^8[ I+<3I0EEBEE?4MR
YC<:
;0DKI)#.%D1.++N
7�6��'>54.'.54>?"+5!D%&Vb)1X8m/C"xt�:G GHN?� B7M39p{I�C5�NjQ("2&34,E U�"4#"#33>32�sUCXG
W3\a�G�d^��I*)]h��7���
"&54>32!.#"267!(|u0kV}w1k�2HMLG�NJ��G
εz�\˹y�]���������R��6"&533267�OHX* 
&
UK��{1#G��U
����'"&/.'##'.#"5>323267�%
O
\^�;0!M^ �

%�B@$^(��C,,FMV�AU�\$3326533267#"&'##"&'#UXzRDX %1J8':���d^�^@	$.(*<)��333>53��[aU@W$WN��B?^ߑi��S7�6��6>54.'.54675&54>7+5!#";#"D
#(Ie4W?t)C(D"tEuGJYloFS$$PA57� ?2Q>Qcp/=&C>@:3AC+F+/6 ",,C#��7��'"T��w"5###5!#3267&o�Wmgi#
�^�,�DD��#E	F�!"4632#"&'#2654&#"Feu�>mF(L�HOQM�K�����U{AH-�/gakfƢ7�6�"">54&'.54632.#"D#8Ac8�r(J8!WHEC+C'�F"<nX��I
iT8U9
/+%L7��F"&54>;#'2>54'#"(m�F�W�z&*7lO6D M#bbH
��e{8D%gHHyII4W4�VcqUl���".5#5!#3267L.N0���5+/7HC9DD��:.B
O��".5332654&'3CQ)X53HOX�
#AY6/��9M(rxFn<;oJ��7��� 5.546753>54'@OxB�VPwB�|V\QR�ZT���EwQz�
��FvQy��.�	h\\i	
i[��J$'.#"5>3233267#"./�w'!o�^�d!%
	'2%W��u�'.E+'�G�k�-/D2(���O���5.533>54&'3JLq>W+K.VU]WEwL��3tc��KR ��IejEuFCxBg};�A���+".54673326=332654&'3#"&'#>U,4%Z%6<12.T2-2<1*Z(1,U>7FE
DzP_�++�bacJ8��>Dca_�1.�]PzD3;;3������6�&tl�e��O���&�l���7��'&TB���O��&�B���A���&�BSa�k�".'53267#3>73	:0V@)c=Vq�IZZ+�i��&��MG[U@����/	��mywU��J�*7"&54>32#"&'>322654&#"2654&#"M�pG}PW\6S,,P [>>h?Fs+2/*2(FH	PURE<W&F
���_F;.<#]6#+3_BVo5I"%('��[KMO*#`k*��`�3=".54654&#"'>3232654&'.546323#.#"GQ 12'/7Y\|�CS[nzF@;yS
X?++0n
3Q-)M>
4'"Q-*B��
8^:?V��Ii�^�go,&%;#E�33>32&#"��b��)(����&&F �����
�'��B���E�&�l�����7������D/".5467#5!##"&'#'26=332654&'!>U,r.r,U>7FE22.T2-2<�g<
DzP>e(II(e>PzD3;;3IJ8��>Dca?e((e?acU�@
"&'53267'#33>?3=c#T3DV�B]]		�j��(�	=4F�6��(L
���=��!5.54>32'2654&#"P]z<F�mh�I?{Z,ulltunn�Q�PV�ML�WQ�P��{bbzzbb{7�'"5.546322654&#"<\4�sIo?m_,QLLRRJK��	GwP��AzVx��.t__hh__t=Y�!5.54>32.#";W��K�m?e,$%O7ww{{��{V�ILs`aq�7�3�"'"&'532654&'.54632.#"!? 33-&5A]2�r(J8!WH?CGKZ�D	# "8iX��I
iT8Q6@>AIa��3!!!#5#a���V��O�π��a��#!!!#5#�X���V��O�ߑ������+"&546?!7>54&#"'>32!3267�8G
%��:		#>A
6C


<92 �&H>72 `�&I0���,"&54675>54#"'>32%3267�KB
e��d+'<=G^t
 #
�E89%L7#?+E
;.I1�I:��")E��
�!>54''7&''7&#"'>32q �'��(�4H4W*'bF��L�H$!pC�C+�D�$F ��E�J�����>54&''7.''7.'7"&+��
��<�m{ƋJ*%�N�d6NCO$CJECL`Rq��~a�H���"+3>54&#"'>3233267#"&5467`"5#
%NU
X"1(
KR
��%ew?TEEowC ^%ew?XAEpvD��F�!"%1>54&'.=4632#"&'#2654&#"�Ok@eu�>mF(L*SE>0�HOQM�K�2WEى���Nt@/9 $.%CcVgeƎ��7���"H������O��=������7���"�����"���a*����U�0����=��Y�(a*�3333#467###az��yY�J����6�6k"��!l7�RU��33#467#'Uh��cT�H������R3��4���!"&5#534632#"&'#3#2654&#"FBBeu�>mF(L�ˑHOQM�K�TFi����U{AA)FT/gakfƢ����;�J��=��Y�&(+����;�&Jk+��a��&*E����a��&*l�
����"'532>=4&+##5!#32�1+-:F�Y��ٿemf
N
0.@:8��{OO�]XFda��a��&�x��=��f�"!!3267#".54>32.�j�
\��}y1X*Nqt�FP�qAc)%#T�vtN�N\�on�\M��3����8��(*�.��7�&.l��������B��/����#,"&'532>7>7!32+#%2654&+B""T;iz3~���

&?�]X`d0K/I'(��o��6\9^s{J��4C^0XACE8��a��33!332+!%2654&+aZ2[:iz3~�����\X`c0��.��6\9^sM��MACE8��
��#32#54&+##5���dkZ7D�Z��P�\Y��:7��zP��aj�&�x����b��&�E����p�
(#"&'33267#"&'5326733>73�W_bQR/4.5 AXD1.8A��c��_�KMLL6%'4�#G_/Y	0=�w

�a�Dy�!##5#3!3y�\�ZeY����z��~�&a4�
3!!32#'2654&+a���jkv.v�	`NVg_�O�5[;boMACE8����aT�'a��!#��Z�P����D��3#5!#3>7!B[V�V7$A2 O/9 M����>���OQ:���6)��a��*T�	333	### ��dVd��g��V��go[��Z��Z����j��j��&���)#"&'532654&+532654&#"'>32\MZ^��:i-/o1`cthfajiP@CY*+*{Mtx#IUXG^vRHBD>KG<6:"=+db��333#4>7##bT�dT�vd�x!RDO�6�%TF��b��
!#"&'33267333#4>7##HW_bQR/4.5�mT�dT�vd�KMLL6%'4�x!RDO�6�%TF��aj�
!##33jl��ZZ;f��j����Z����c�!###"&'532>7>7!cZ�	
&?3#
#�{J��4C^0K1I$&��o��a*�2��a��-��=����4ay�3!#!aY���6{����a*�5��=��Y�(��
!�9��p�%#"&'5326733>73� AXD1.8A��c��_�G_/Y	0=�w

�3����'#5.54>753>54.'�t�8FvYY[wD9�sP_(gpYtc(^Q�XHwI0_M0nn1O^.GwJX�0S8XikV9S/��F�=a�D��%#5!3!3�V��ZeYO�����z��PY�!##"&5332673YZ:e>dnZ=D;^;Z%]X��:9Za��)3!3!3���ZZ[��z��za�D��%#5!3!3!3�V��Z[ZO�����z��z����
3#5!32#'2654&+���qdt1z�	WRZ]f{O��6\9^sMACE8��a��3332#!3%2654&+aZnds1y�kZ�3VRY\d��6\9^s�6LBCE7��aO�3332#'254&+aZ�dv4��	�`\{��6\9^sM�E8����;�"'>32#"&'53267!5!.�2R!%)j8s�JL�t>V**V0����Z
��K\�fu�\N��Onza����"#".'##33>3232654&#"�G�hf�J�ZZ�J�bg�I��ksukjttlfo�\T�i����_�M[�o��������#.546;#";8�i�&C*���ZlU[X\h(��8
.P?ag�6(U;DBH	��.���!F9��!�+467>73>32#"&2654&#"9jvA|6#XVAL1E,hj>nIo��AP=F,H0
#?B��	Mkq(�kYx;�aTfR_'21\I+U!+324&+324&+326</2Jet��9[5Y7>�y�FD��BF�28
9<DY;>&#��.(�'U�##��XJ�2�F1
3#5!#3>73�NU��T+EEN"5#��2����_�|ED��0���7��"J�###33���d�R�d��`�R�������������!���"(2#"&'532654+532654&#"'6�\m6/ 6!ov:^"]7<S�H:ES?;,C(T"ID19
	 4)C[O)2ZH%-&&F%U-73#4>7#3�lR��mS�00���<43
�@U-�
#"&'332673#4>7#3W_bQR/4.5��lR��mS�KMLL6%'4��00���<43
�@U
3##3�`�f�XX�����������!###"&'53267!�Y�
.L:
6ACϩ�^B��U�#467####3�O�J�Ou����V.�Q�-/���Q�U(!53#5!#�#XX��X�������7��'"TU#!#X��X���3��U�0"U��7���"H�###5!ǯW���2�J����^��6���<���]U�Ff#5!3!33fV�EXXL���2�1J326753#5#"&=3�g2R+XX-W=R[XU\���!VH�U,!3333,�)X�X����2�2�U�Gy3#5!3333+NX�4X�X��1����2�2��32+#5#32654&�nkft����;GB�MKKY�J�ګ(00#U�
3332#!3%2654&+UX�hdbn)X�w9HB>��LLKY��G'11#�U	2+34&+326L�fo�XE>��8I<�KYܝ1#�(���""&'53267!5!.#"'>32�.CF,N\��OLEP(KsAEy
LT[HRL
G
8zd_|;U��
"#"&'##33>3232654&#"
�mf}�XX�|eEj<��FLMDELLF
���y��qxA{Yeiieeff�3#7.546;#5#';5#"vf�:$hV�X�E>~�=5�#?/MQ��դ.-�0��7���&JEr��7���&Jl�	��*"&'532654#"##53533#3>32�!
$wYDYLLX��Z4bbD�H#0��d^��]AZZAX&)*]g�gLU��U��&�x�7���"".54>32.#"!!32676JsBDuI)OCMP��PN-FD
9z`d|9
HNPHYVL��3���"X��N��N�����&�l�`������O��!32+##"'53267#32654&�|iedt�}
.K9 6B�lo:IE�MKKYΩ�^A��ګ(00#U@32+5##335#32654&�xkebt��ZZ��np;HD�LKKY����ګ(00#��	����U�&�x���U-�&�E����
(#"&'3326733>73#"&'5326?�W_bQR/4.5��^tm_�YN$
.9�KMLL6%'4��(I!Q)0��LZF4+GU�G!#3!3##�XX�V�2����~�&.'33>7.'33673#.'�7];] .3a	] 09<I^a\P >4�_��[���3M(4l0T���8w9����4��;���##.'#.'33>?.'33>7�ZVR<vP*N3W(8	
J
X!46J���4�;�C��h_��35�2i1Q��BV�	o�3#53533#32#'2654&+���[��^jx2z�
^T\eTLffL|6\9_rLBCD8��	E�3#32+#535#32654&թ���gt�uu揑;MG�lI��KY�Il�n�(00#a��}�%".'##33>32.#"!!3267�m�I�ZZ�
S�h8d'$"O1k~R��|w/T)(V
U�g����^�OLxqN~�NU���"$".'##33>32.#"!!32672FoB�XX�	DlC)L?LN��	�,A?
4oV��Rg0HMPJ�L��	#####3'.�*_�FRF�]*+#�'�6J��J���X/1Xa;7#'##5##3'&'S�Zc5O7aZ�4�������;.2JI=$a��	#######333'.x)b�DQE�`��ZZ�~+#�$�6M��M��M����.X<#Z`:U#'##5##7##3373'.'#�Yd5O4dZe�VV�_4�����������;9?G2�� #'.##"#7>7'5!��BL,B\B72Z25A`B+KA�����B�.Q8��/4��S4/��8P/�BQ�x #'.##5"#7>7'5!8�6<"?X?
+&Q(+@W?!<6����3�'?)��"&��'"��(?(�3H�a��"%#'.##"#767##3!'5!��BL+CYC"61[17A^F�ZZ[�����B�.P8��23��R3.��Q�����BQ�UK#&#'.##5"#7>7##3!'5!�6<"?X?
+&Q&,
@W?	�VV����3�'>)��!'��&"��(�߬3H��*UU2.#"32>32.#"#".5467>54&+532654&#"'>7.'53>�	5X\aNZd��78#1,>9!,2
52 4<-EM exbYxdfbiiP@=^*,%V5?@<*3U9*!^CIVVG^oU#;#<EBCE;KG<6:"=%A
5.�>��T2&#"32632.#"#".54>7>54&+532654&#"'>7.'53>y
2;E8/ 7"oz43".5]%!&	,"h8;B"RFHXMNF:ES?;'H(:!5@4*3�9&
D419
	4(CX	J
#6!7#)1/*H%-&&F
;
0,��Z��c��O����=����#".54>32%"!.267!�K�lo�HH�pk�K��pr	�	oprq�-qfo�\\�on�\[���rr����yy�7��'"
#".54632'"!.267!'�sGo@�sIo?�JJ8MHMJ��L
��A}Y��A{rQOOQ�gZVVZ��"#3>?>32.g"%�g��^�	P'90!�@F��71N&'X1�HW(J2&#"#33>?>�	
{u�\F!/D(*�z��*?H"�4:����&!�^����&"�)=���6#".54>3232654&#"%33>73#"&'5326?�E�dg�BB�hd�E��emncbnmf)]wk]�ZM$
.9fo�\\�on�\[�o�������+��'H"Q(2��LZF4+G��7�G"&T^I=���2"&'.5467>32'>32>54&'#"&'�%[}@��%$X|CB|X%a$$	\]]\$$[__;b�b��`�bb�a��ss��ss�7��\L-#"&'.5467>324&'#"&'>32>\pc7^vqd!_t[;>@:;@2?:
t�0�us��rQddSSf$f=���	!X4632;#".#"#654.54632".54>32.#"32675332654&#"'>32#"'P=5&IR38XD4@i;!<;f]|=>tP&K"4RZfe7Z8 ef[R3"K&Pt>={]hGG�56>9{
	
"'9�_�om�YC����������CY�mo�_>>:��Nq U2;#".#"#54625654.54"&54632.#"32675332654&#"'>32#"&'�&IR29XC4@<g!=::gk{rd"8)=>NC"4X6"DK?=*9"dr{k8QPq?955k"(8#
	&���C
je^l��l^ej
C����(""(��~s
4#'##'##'5.'33>7.'33673#.'�([Z'7];] .3a	] 09<I^a\P >4�sT2222T��_��[���3M(4l0T���8w9����4��;����
1#'##'##'5#.'#.'33>?.'33>7M([Z'DZVR<vP*N3W(8	
J
X!46J�T2222T����4�;�C��h_��35�2i1Q��BV�<�f�2.#"3267#5".54>�8i)%"S2v�v�-Z|�FS��M�������_�jl�]7��"2.#"3267#5"&54>9(PDSQRP ,X�Cu"I	bii`	��慎d|93��-t'''7'77'7�;Z�"�d�!�Y<Y�!�c�"�t"�Q9Q�R9Q�!�Q9R�Q:R�5:���#"&546;>32#���/h2�8c���2#4&#"+532>�5<?EW83RI�55$?��\� 

4632&��"0:x�#'
	
%��\� 

5654.5432�w:0!�R%
	
'#�H��r2;#".#"#546F&IR38XD4@=r>956��9

)7ESao>32#.#">32#.#"!>32#.#">32#.#"!>32#.#">32#.#"!>32#.#">32#.#"�;<:?/-$&(<<:?/,$&�0;<:?/-$&�<<:?/,$&O;=9@.-$'��;<:?/-$&x<<:?/,$&��;<:?/-$&�5=@2"#�5=?3"#5=?3"#��4>@2!#4>@2!#��5=@2!#5=@2!#�4>@2!#���&4#,5>G#'>7'.''7>7.'%.'5.'7'>#>73AR(��?:	02+`#9)f/�P2q+	-i/�-j.1q,20(?9��9(g/(+`h(9R41q,	-j.�+`#9)f.1?9
0��R(9(9R��(g/),`"::	0(?W-i/2q+a�D�
%"&'3326737#4>7##3333bPQ/4-6SXsMS�udT�cbHKM6%'4KM�A��LK���w!MDP����U�G��
""&'3326737#4>7#333IbPQ/4-6SXH=R��lSl\?^LL6%'4KM��=2/�?�� K��2��4�3#32+#535#3254&���Zl~5���JJ�bf�`�ZN�5\:bo"NZ�����D8	�3#32+#535#32654&����okht�LL掐<LF�wC��MKKY>Cw���(00#a1�'+#32267'7>54+12993G0CWZċ���$27A�_�9dK+]
���n�B*S8+���U�0","&'##33>32'"327'7>54&S>QXH
N@cy.)74?!8RCAX:7=G
/6�I#0��Tu"K)T�\^ckK)OR8eea�]!#!5���ZH]�ʓU��##35��X���,���
!3###53�����ZJJ�P�N��:NB�
#3##5#535��XLLJ�D��D�a�g� "#!!>32#"&'532654&7Z���;��DxN.?>"Z]�:���P���m�FP{xwzU�� #>32#"&'532654&#"#��"�:b<&9:"?CTY"XJ���ay8N
`fic��Du�	3#5###	33K���_V2��V��g��dV�����j��j��o[��Z��Z�G3#5###33�ݯbU0�R�d��`�R��������������&�$�:4&'.'532654&+532654&#"'>32#"'53263\(/o1`cthfajiP@CY*+*{Mtx\MZ^}}*31t4RHBD>KG<6:"=+dMIUXGXs:&,48!�$�"84&'&'532654+532654&#"'632#"'5326�]6"]7<S�H:ES?;,C(Tg\m6/ 6!ag*31t5O)2ZH%-&&F%ID19
	 4)?X9&,48a�D��	3#5##3\��lV;��ZZ;�����j����ZU�F5##333�+�XX�`�Z����������aj�%#5'#375373#'5==ZZ==�f��5lɌ�D����C�b��"���U73#'#5'#375%m`��fz@8XX8�S|�6��\�?����@�
j�53533#3	##
TZ^^;f��Dl��Z&OUUO�Z����j��&	�3#3###535����`�f�XLL�ZA��������]AZ��	###53���Dl��Z��;����j��zP��Zk###5!X�e�V���������H��a�D��5#!#3!33�Y��ZZoYV��M����.����U�Gw5#5!#3!533 P��XX#XO������2��a'�
33!3##!aZn��Z����.P��M��U�
33!5!##5!UX#�X����H�0��a���">32#"&'532654&#"#!#!`7��CwN/>>"Y]ul9Y��Z����k�G
P
|vxy��y���U�B#>32#"&'532654&#"#!#!"FqB5[8$64 9<PS"X��X�18|fay8N
`fic��2=����3?327#"&'#".54632.#"327.54>324&#">�#7 $&'.N#? h�J�� :2tg�j(-0S43S2[/-...$06KAlPO		Z�k��
L	����1�KVm31m_RabOGw& {7��]"2>2.#"3267.54632327#"&'#".546">54&!)
$P?F9%ZCAU9'
#%D2%Om8v
"#$ ("Gne9Z3 W:\VS_DaFJ|K���;51KK43;=�$Y�,4&'.54>32.#"3267#"##"'5326y"~~O�nqT$!Q0s�{{/T((U;)31t8��l�]*L����N8&,487�$�"*4&'.54>32.#"3267##"'5326*"PbBqH)L@�ML,C@*)31t8�wc|:I	�ag
N8&,48	�D!�5##5!#3BZ��V��yQQ����G�#3#5##5ƮOVP�I�z����I��6�>��#533>73*X�\po\�����(YX)&��6�35#535333#�b��a�O���_�KO���3##5#5333>7�ц�X���\nk��C��C��.N!!Q/�Dh�5##3332��_��d��_ݺV��6��tV��������F5#'#3733�(��c¹d��c��N���������	�DG�5!#5!#!33����dZY��yQQ��z�����G�5!#5!#!33l�B���XQ���II�{�1��P�D��3#5##"&533267YVVZ:e>dnZ=D;^;����%]X��:9ZJ�F_3#5#5#"&=332675OWP-W=R[Xg2R+�2����!VH��\�PY�##5"&53353>7Y["F&=otZ@I='H�6#
��Z[��9:��\J#5#5#"&=353>75X8 ;	RXX_;8���yrWG��Y���aj�3>32#4&#"#aZ:l7dnZ=D;^;Z��]X��:9����U�M���#*2!3267#"&'#"&54673;>"!4&�j�;��yyDm.+nP��
7FK6��au�]�Z�g3{�R��?5"1��P|wq���f!#*2!3267#"&'.54673;>"!4&�Fc5��WO:L*)P7s�@EH3

Ad9>J@!<lI5aYL�67 
1Oc/HNKET�D�&.2!3267#5.'#"&54673;>"!4.�j�;��yyDm.'aCW��	7FK6��au�&X�Y�e6{�R����?5"1��P|wLl;�Gf!%,.'.54673;>32!3267#"!4&bZj@EH3
�YFc5��WO:L*#G,V$>J@�o67 
1sn<lI5aYL��NKET��(*�.T�
#"&'33267333	###iW_bQR/4.5���dVd��g��V��g�KMLL6%'4��[��Z��Z����j��j����
#"&'33267###332W_bQR/4.5���d�R�d��`�R��KMLL6%'4������������a���#32#"&'532654.#"#3>?3*��H{N.>?(TeArJ"9ZZ6�k|��n�EPzxPg2����?�U�%#"&'532654&#"#373=d;$75!<N]X0WW�a�Jo>ax9L`gh^����7w�D��%3#7###"&'532>7>7!caHgNZ�	
&?3#
#�P��{J��4C^0K1I$&��o�GH%3#7###"'53267!�\@Y=X�/L96ACJ���ϩ�^C��a���%#"&'53265!#3!3�DwN/=>#\_��ZZoYFn�DOvy	����.U�(%#"&'5326=!#3!53(5[8$559=��XX"Yav6
NYg����a�D��%3#7#!#3!3�bIgNY��ZZoYP��M����.U�G�33!533#7#5!UX#X\@Z>X����2�����P�DY�!##35#"&5332673YWVS:e>dnZ=D;^;Z��]X��:9ZJ�F##35#"&=332675OVM-W=R[Xg2R+���!VH��\�a�D��!##3333#7#4>7#��S��߄aHhOY�rEB�F��I�����CB��U�G�%#7#467####33�@Z>O�J�Ou��uJ���V.�Q�-/���Q��2��(*�.~�
#"&'33267'!#3	.'3�W_bQR/4.5yV��U[Q��
Q��KMLL6%'4�X���3*-;�.����
)4#"&'332672#'##"&546?54&#"'>326=�W_bQR/4.5cb^@#MDI`~�[:5*L!#`NdM7+DZ�KMLL6%'4�V^��L,*MRPW C4B��83-*KN0��~�&&l���.����&Fl�����5����.��-"�a��
#"&'33267!!!!!!�W_bQR/4.5U�q���#��5�KMLL6%'4�X�O�N�7���
%,#"&'332672!3267#".54>"!.�W_bQR/4.5cEc5��YP3O*)P7LuA;kF?I>�KMLL6%'4�<mI5[_M>{YX~DHQHDU;����"5>32#".=!.267!LCq0,kOq�NJ�ij�;zbbz�U&X�R\�po�[[�o"y���}vKm;��3���"��;����&�l;���3����&l���T�&�l������&�lS��&���&�l�����!����&�l�#���#"&'532654&+57!5���:g-/n2a`qiC��G�dc^xRJCC>I�P��#"&'532654&+57!5��DpBAwQ;^ !b:M`o[;��@�5aIGm=PYMTK=�J��b�W&������U-�&�����b��&�li���U-�&�l(��=����&4le���7��'�&Tl
��=������7��'" ��=���&le���7��'�& l����;�&�l���������&�l�����pW&���������&^�B����p�&�l$������&^l�����p�&���������&^�[��PY�&�l0���J�&�l	a�D��	!3#5#���UUZ�P����U�G�	#3#5#��OWPI�z�����a��&�l����U��&�l_�:��"&'532=##53!!3#3�
0YJJ�����N9�I4F:NBP�N�@E�:�"&'532=#5#535!#3#3�
0VLLI�M9�I4F�D�J�D��@E�:a�"&'532=##333�
02��_��d��_ݻN9�I4F6��tV�����ڑ@E�:"&'532=#'#3733�
0-��c¹d��c��I9�I4F�����΅@EF�3333####=��d��`����f��`ם�)����O��6��R�3'3733##'#7#8��d��c����d��c��6����D����>�!"&54>;3'3#"C�w3vcmZ�df_WUg^9b<.�6MD>C<��7���I>��+�'%326=3#"&'#"&54>;3"32>=�940:Yba=MP?ns:~fEZ�_a�/7�95:7��Qj,&%,hfA`6.��>K�1�6��3�"/%326=3#".'#"&546323.=3"326754&,A83Yd^2>%
UKcxw^=KW�FBCFPA>�@J@A��b_+(8����.!
2��jeee\^dj#��.�+2326=3#"&'.+532654&#"'>	nt[GT[3;95Xh^[pjba]abK<:W&-)v�cMIWVJF=;@��aa_kKAII<6:"<+&���"(232=3#"'.+532654&#"'>�Xl3,1=19iW��GGE8AL;7&E&)R"ID19

:4-5���¡1+H%-&&F#�Db�#23#5#54&+532654&#"'>qx`JY_ZV[vkceghO@=](-)z�cMIVXGz���D>II<5;#<+&�G	!$23#5#54&+532654&#"'>�Zn6-5 RVPJMJ;FS@8(L$ *_!JD17
	5)J����//I%,&'F����)%32=3#".5##"&'532>7>7!Q56lXi[9Y3�	
'>3#"u�@8{��aa&VG�I��5C]0K0I'(��o��%32=3#"&5##"'53267!�28eX�]f�/L96A;�?=���_d��^C��a����%326=3#".=!#3!3o5665Xh[9Y2��ZZ[Y�@9;@��aa&WG�����.U��D!5332=3#"&=!#�X38eW�\g��X���@=����`c6�=���� !#".54>32.#"32>5#���l�PT�w;r-"&f4��6mTM[(�r+��Y�rn�\M��U�I9eA7��M"3#"&54632.#"3265#P�{�����:]( T/ggYdXM�"~����Eo`\qSC	��p�#326=3#".5#5�8758Yk[9[5��Q�D@9;@��aa&VG�Q��?#326=3#"&5#5��4825W�[i�H��@=<A���_dH5��%�(2.#";#"3267#"&54675.546=Lo-0)W>CMfdedhwbX=k-V���e[O[}�'@ 97<EJADCCS&o^J]
UINe��+���"�:��*"&'532=###"&'532>7>7!3<
0Y�	
&?3#
#�N9�I4F{J��4C^0K1I$&��o���@E�:;!"&'532=###"&'53267!3�
0X�
.L:
6ACN9�I4Fϩ�^B��,�@E����#"&'532>7>7!3###B#"��_��f��_�	
'>K0I'(��o������6��tI��5C]0��"'53267373#'#'#56Ac��d��c…r/LC������������]a"�33273#+2654&+a�bs3�_��f�!lNRHfdX_[�2eL���X$��cBOED��U� ")33>3273#'#"&'#2>54&#"UHNAVs�c��d�
sY>Q�1?GJRCA�I#0ii�����mo/4�/6]<\n\^ckP�.5463!!!!!!##3#"�&C*�����#��5�t��iFhlU[X8
.P?agO�N�O(��t	;DBH��="")2"&'##7.546;>32!3267.#"35#"ug�
}�f�:$hV�K/Ec5��YP3O*)P5>C?I�t�=5E
rm��#?/MQ: $<mI5[_MKDUQH#�0&.-��=�V��6��7�"V����<��\aj�!##37'773'jl��ZZ�V2VXf�Z3X~j�����S5Ra�V5U�U773'##37�,E=`jJ*IR�f�XX��+EEwJ,H]����������6"&'532654&#"###"&'532>7>7!>32�/>>"Y]ul9Z�

&?3""T7��Cw�
P
|vxy��{J��4C^0K/I'(��o����k�G�,"&'532654&#"###"'53267!>32=&9:"?CTY"X}
.K9 6B "�:b�N
`fic��^A�����ay8a��&>32#"&'532654&#"#!#3!3�7��CwN/>>"Y]ul9Z��ZZnZ���k�G
P
|vxy��M����.U�J&"&'532654&#"#5##3353>32r&9:"?CTY"X�XX�X"�:b�N
`fic��������ay8a�D��5#!#!3yY��ZV��{������U�Gi%#5#!#!iWP��X�J����3�2a�D��5#4&#"#3>323iY=D;^;ZZ:l7dmV��:9����]X��U�Gh�5#4#"#33>323OxZCXXY4bbO��W�e^����(#)*]g����4~�3!3#!#"&'532^ZlZZ��K@!<=��/�6N�wIHI��"&'53253!53#5!#CXXX��D�IZe�����K\�D{�&!33	##!3#5!#3>7!B0Z;f��Dl��Z��[V�V7$A2 O/9 M��9��Z����j��I���>���OQ:���6)�F�#3533##5#3#5!#3>73��X�`�f�X�NU��T+EEN"5#�������������_�|ED��0��@�� '3>7.53>7!3#5!>7#!5l)DKUW&'PW��6U7� z&tg&�&[1
XK��\_�X����G����,0X�F?&367&=3>7!3#5!675#35M%~M#'JQ�u�PKw[�(W1�5=���/6
@�L�0�����8�:l�7�@��%#5###"&'532>7>7!�WT�	
&?3#
#�M��{J��4C^0K1I$&��o���F8%#5###"&'53267!8QS�
.L:
6ACF��ϩ�^B��.���E�
>32.#"7#"&54632��kLHl"ED5:8��eRX_GFKC*���E�4632#"&%#"&'73267�kMHl"ED6:8O%dSY^FFKC�G��>4632#"&�!  !""""N6��4632#"&4632#"&N$$$$$$$$�&&&&��&&&&�Q%#"&'732654&''>54&#"'>3232675#53.#"#".'7326323###"'�[CV�?G+d>&0) D9/%<"M1NSC	&$ 2IG'%

#9/B%+ %8*ohQ.�FD��j{#'%:F,%$ EN;N*

�GD1;7,,"RJG��"x;%#"&'732654&''>54&#"'>3232675#5!###"'�[CV�?G+d>&0) D9/%<"M1NSC	&$ 2IhQ.�FD��j{#'%:F,%$ EN;N*

�GG��"x?%#"&'732654&''>54&#"'>3232675#5!#####"'�[CV�?G+d>&0) D9/%<"M1NSC	&$ 2IhQ�Q.�FD��j{#'%:F,%$ EN;N*

�GG��'��"���n<%".5467>;5!5!##"632.'.5463232654&:/@>1]���n�	.7JbSK?"!9h-;E+FM1�L3(
VGG�!
KAAK

F9 ),!$������&���3n'!##".'732654&''>54&'!3n O$9-N09g_,GCO.)5-(#JG��nG'0Z. U;2D"=�rNwC%1)EF01-
n<!!>32'>54&#"#".'732654&''>54&'!�� O	>"AS#H )#'*-N09g_,GCO.)5-(#JG��nG'0Z.	OE.\/)G(,'%&2D"=�rNwC%1)EF01-
��cnF7'7.#"'>325!5!!>7&546323267#"&5467.'#5/�*=*9)"J,(@>%��c�k"C
*&-
4.1 /"B)LT/.5:PAC�6-J90�GG�	 ,!"+!)!"F
O>(E
������nD%467>54&#"'67.#".54>32675!5!#3267#"&�=C,#3.M1(++R:6:`81I%,I!0D�*ʤ(B=:2 /"C)KU0I0-+?=.#.$&EK142[]55C-
GG�JE)M 
,$"E
N���H8y&�"����H8�&�#3�H8n/#'>7>=#'>54./.'&=#5!8^%Q
�("n?5!H
01W'7O8'�3<0J#)��.:&>$A2(G*-#21"$D�G���H8�&�$3��'y&�"����&�#����&�$����&�%�	n4!632'>54&#"#5#".54632.#"3267!5!	��0EAR#H '#68QG2/S2nX91:@=(,E��	'�2SM.h2) T)/.H���$&M9P^I4/53*#GAnD#5#"&'.54632>54&'#5!267!32675#".54632.#"�Q#S*l�b"%	�A��#:��F>F�c+N%@(/K+`O6%077'��-k}#-";/GG��%8R`TZL'F.IQE,,+)Bn#".546;5#5!##�7&"BhQ'��*<�GG��']n-##5#"&5467.547#5!3267!632&"#"]gQL7M`(.
4]�J8,4M��+"#19'�٦QC4F*G��*'+#!%(F(�n0<%".5467>;5!5!##"632#"&'73254&74632#"&f:.A>1]�o���	.7Jbbcb�;=9wKt1k�L4(
VGG�!
KADVXF1DAN"$s  !!�n"##5#"&54675!23#"3267!5!�hPH2Mc�%$ :G:&2G�/�'�٥VG3HF1/+++#G�nH%2>54&#".54675!5!##"&5467.54632.#"632&"#"(M~K.)"5:!QJ75�9˴3C2]�Rab*/ZI4
#X,"#^>F?lE/>$ 3?S40D	FGGJ
TH:nX4S@-A+<@EA 	FF(&�n"##"'#".'732654&'7!5!5!�Q�)$,)C(5`X*G.d: )=-���'��rP-.>=�w��"(,N@nGG��n7L%".5467>;5!5!##5#"'.'.5463232654&727##"632:/@93`��hQ0	SK?"!9h-;E+FM1�64��	.7*#=�L3(
VGG���AK

F9 ),!$.�!

�n+>32232675!5!##+#"&'732654&#"�AC^	'���gQ(0
>M"U�3E)YB7>9).�D?	�GG��27jr]P4+.(n ##"3267#".54>;5!5!�70@7,G*6L*,c5Em>Do?��'�&A0?J4bFAY.�GXn$##"&54>;5!5!2654&'#"X�PXBnBq�Do>��X��G^:9#J/!_'�qIFW)qgC[.�G��=C0M7'FDPn0%".5467>;5!5!##"632#"&'73254&f:/@>1]�oPn�	.7Jbbcb�;=9wKt1�L3(
VGG�!
KACWXF1DAN##An%0!".54>75!5!##"&54>32'>54&#"3NuBHvE��A�'@E @:!A11?sf7F##,7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+�n####"'.=#5!27>=#zQ�B/],O�4�
!'��'�*:;F6�GG�� ,+��'.��Hn##".5467>;5!5!�Qm==JG6.O/RD��pH'��H+1[94(PV0#8�GG.�x-#5#"&'>54&#".546323267#5!)QP7Uw_M/% QALI5)K0PJ:34J R
'�ٴa]G6233	F	=:89#H8J\$#( GG��n4.'#".5467>;5!5!##"3:7&54632�&*UG+!`;���1:GOR*+-!:"F/O9,?_GG�. 5E#1 #	3#*vx<##5#"&5467.54632'>54&#"632&"#"3267#53vhQI:M_/;R?5G(=	(1#299,5J>�'�ٖQC2G8<O8-/)'
,# 'F)&)(+2G9n!####".5463!5!9gQ�6&"�nG��*6*<�����9n&��Gn#5#"&'.=#5!+3267�QD/(AOG��
2(F'�ٿI@�GG�)0&n$/>32'>54&#"#5#"&'.=#5!!3267�:#AR#H (#59Q@+(@O��()@'�SM.h2) T)/.I���G9�GG�70"In(##5#".54632.#"67!5!3267'IgQM88Y2yb('2��oI�6C0!�)'�٥*K3V\E�'G��43�.�x1235#5!##5##".546;54&'&#".546�%:Ƀ;gQ�*$!
+/9KYLxD>t�GG��%!',i/2G=@;5dn#5##".546;5#5!+3�Q�*$"~d���'��%!',�GG�Sn##5#"&'>54&'#53267#ShQN3Zo><{�=12J�nG�ٳyd
/,0G��11*46l���n!%.'.54632>54&'#5!#�6;hP
"%'$
��h,L1-w*61dX$"<'-GG#:7L54o���n!-%.'.54632>54&'#5!#4632#"&�6;hP
"%'$
��h,L1-w��!  !*61dX$"<'-GG#:7L54o7""!!���n+5!##&#"'67.#".54>3263235�hQ2.M0(++R:6:`81J$,I!:W'GG��c?=.#.$&EK142[]55C8}@n!0?5!##"&'#".54>32>7532654&#"326?67.#"�4D+O66P'I-/M.-P36O':#m!=#*?7%&5��6%&6!<#*?'GGw]J5U0+$.!+T=8T/+$'"r��!#7>@455>5541!$8���wn&�7;n###5#".54632.#"3267!5!;hPK56T1s^
'%
0>F?-4K�};'�٥*K3V\I6230-#G(���x,47"&54632>54&#".54632.'##5!z#/$'2@;/98^]GC/R3E=-T@3S%�QY�#VA8C#FS:3@+U@Eu!'_,,H]j��'GGQn##5#"&'.=#5#3267QhQJ2(AO����22�
nG�ٿI@�GG��/�)0���n&3##"&'.'.54632>54&'#5!2675#KQ:'*]!)o=68cL"%	����'@"�
4'��
	
4n161dX$";0GG�	�.*>�r"n7%>54&#".5467.5467>;5!5!##"632A$.:AEIGF6[c;)���"h�	/6EW)DAE$ &+90:G55G|M&;4"(
VGG�*C&:L�Vg��%53�Qg����%&���@���4632#"&��!  !�""!!*�n*%#".'732654.'.547>;#"�UF.NJ)E&J2$-/+,1.;?]f'	,&-6�BO"RI#ER$%)0"$8/>G
 ($<;n##5!�QY'��'GG����N�$�.546323###53.#"�TK<P:ngQYW=7(*g#@"AS9y`G��'Ghc1+"7�9��632#"&'73254&#"�6:KS]Va�<='FO1j1+M?=N\L+0>J! �����#"&54632.#"3267?9KU\OKpV">6pI342*�

O?9P8[5'SX' &
����#"&54673267C)KUYX:42 /"�
O?8SB,!"���vB&#"'3267#"&547.54673267C)
,% 0"C)OQYX:4-$ /"�

?
K94"/JB%
���Ey
#"&'73267EkMHl"GC597_dSY^FDIC�%g���.#"#".'732632�(&

#9/B%+ %8+gH4;7,,"VM�gg���.#"'632�)2""'46O?gO[&	I3{k�Tg���.#"'>327.#"'632�-+*2-F&, '46O?g(%	E
+&49E3{k����*y&"����(�&#���j�&$���W�&%�M�����
632.#"�DeO"92eD	,3V3)PKg n#3�Q�'��nG����&�PZbg4632#"&%#"&'73267#"&'732654&''>54&#"'>32326?>32#"&'732654&#"#1�kLHl"ED5:9�[CV�?G+d>&0) D9/%<"M1NS%% #F6&F-_P.D 1.#9+!(9/
0&eSY_FFKC��FD��j{#'%:F,%$ EN;(@/80%O?Q`#55647"),%.�[���h#53^GG���c�l����!!�cI��MG�����i'3�rlG����N�i#7qAGi�����*�
#"&'73267!!*dD@cD:/22��H��gO@DK4./4�@��J����
"&'73267��Ad#M==M"d�'B""B'����
"&'73267"&'73267��@d #M==M"g>A`#,O22O+#`�&B!!B'v BB ����	n&�������An&�������Bn&��������n&�1O���@Pn&�S���@An&�/����n&������Sn&���^onX7'7.#"'>325!5!!>7&546323267#"'3267#"&547&5467.'#5/�*=*9)"J,(@>%��c�k"C
*&-
7+,% /"B),% /"B)OQ6./5:PAC�6-J90�GG�	 ,!"+!(
?

?
K9%B":
����:�nW2675!5!#3267#"'3267#"&547&5467>54&#"'67.#".54>�,I!0D�*ʤ(B6;,% /"C),% /"B)OQ6EI,#3.M1(++R:6:`81I�-
GG�JE#7?

?
K9%A*D

-+?=.#.$&EK142[]55C�.�v->#23267#"&5467>54&#"'67.#".54>32>h8&80%#5 ;C8> %!
F#GA.-J+':";:3*6
>
?2(=0.%")J52'GJ)*4�.�v�J"'3267#"&547.5467&#"'67.#".54>32>323267

%$5 <B#$%!
F#GA.-J+':";:%8&+"&$5��
=
=2
',0.%")J52'GJ)*45+
=
�n3#�QQn����n3#3#�QQ�QQn��n��Ky�%".54>32'2654&#":[33Z:;[43[=5D@54D@y3[:;Y33[;:Z2GJ89FJ98F����x*2'>54&/7>54&#".54>HR#RGy(A�jn)#'110?xL9'IQ2`<#51�Dh2  !:>05#T���x$%&'#"&54632>54&#"'>32�@_O#0$&+>A4#<&%S+7Y4F9-W!-�L#O9;<E*UAFl,pZ���x3>32.'#"&54632>54&'#'2>54&#"ZP5PY;0,?:;A#< "0$-"0-52!&<@0&"D#RI=J(B*3ME"*2N#	0$#0G&# >���x+9%#".54>7.5467>54'732654.'�QF+G+,.6A!U7878T
"A3/+�"("(
!  
7J!<(2A/6M:/4J78K208K41E5
*&"/"!/"T��%x'.'#".5467327&54632�&$+RA&T#FJ		+(,-3CKNF2V@.m11]4FG
!1%	^`#g��xA.'#".5467.54632.#"632.#"3:7.54632�"B[.$)iP?-l'#,	
2>F2
)+-2CA=.M-6?,@CFG%
	E*,..
#1%	!U%&1L%#".'732654.#".54632dN=aI3P1UB=)1$:4c\E<:U/uh2wʙ��mRF3X6!FR:5BFzH�x!".54>?32673\:/*�>�.!B03^4$.p$L;>J2�5�7C"3+""J)G��x*4>32'>54&/.732654&#"G)L4MZGA�$@�7(P0&)0/''2�-J+]JAS

t<#51�.P&*36*)55@i.".54>32'2654&#"�)D(%D,+B''B+#++#%*-$?)&?&%>('@%B)! )+!)i��4632#"&i""""N##%%��+y&�"���%&����%&�����&������Jx&�3�����x&�4�9n$632'>54.#"#".54675#5!�*)tf"H:6,)*$$29'�gY0j4)!X+&7S&*!
�GG���n".:F##"'#".'732654&'7!5!5!4632#"&'4632#"&4632#"&�Q�'#+)C(5`X*G.d: )=-����h�]'���J),::�p}�%(G@VGG�DSn%#5#"&'>54&'#5!+'.'3267�QN3Zo><{S��
��
1,=1$5'�ٳyd
/,0GG�E
$411Bn7!##".546;5#5!#!R8�7&"�Bh�xG��)<�GG���n$7!#"'#".'732654&'735!5!#!R�v'#+)C(5`X*G.d: )=-����h��GCJ),::�p}�%(G@VGG��?�x2#>54&#"'>�_jYJPSLG-,< RxeRIb��GG756F
Pn/3".547>;5!5!##">32#"&'732654&!!f@-<#73d�oPn�!$8T[ad`�;;7zO>6,���+

D,/FGG�
	A9:KJ@3:;�GIn"*7!5#".54632.#">7!5!#!327'R?M88Y2yb('2	�oIh�q-C0 �-Gr*L3V[E�	GG��242	�����^R�'�������^
7#/"&54632'2654&#""&54632!"&546322>?12??2 !! ��^;22::22;1 !! �\�F#."&'#"&54632>32%27.#"2654&#"s(67$2A?4%76(2?2��.(($"%% +**\,-?50C)!,@45!3E"!((('D!$��TlH>7#.'553,"12",2�#44#
��rv�|#4632#"&4632#"&74632#"&.`�H��2���''7'77''7'7755#47!75#45
45#56!65#46a55#57!75#55!55#57!75#55����A>3232>3232>32#.#"#".#"#".#"�6+ *)$$), 4;5(&,#&,+&"-#��C?)********<Z/:T********+A"��6��	"&=3648E�4+n_�t����	"&=3"&=3 39E�47E�4+n_94+n_����a(%3#�*7�7(������(
%3#"&5463�j7X(��3c�C4673#.%#654'3�2002�2002� :0@>2:90??2:��cDC#/4673#.%#654'34673#.%#654'3��2002�2002��2002�2002� :0@>2:90??2: :0@>2:90??2:���3���h���kk�K%4673#.%#654'3�k2002)2002� :0@>2:90??2:�T�����!.'##'33>?33>?3#		+-B)!

++)
	!)C/�		y�s#"
yy
!
#s��T�����!3>?3#'.'##'.'##73	+-B)!		++)

!)C/� 		 y�s#
"yy 
#s�5���)5%#"&54>32#"&'>32"3254&"32654&�*WE|�)LkBNO^J+W$ `*\a�3MQ d,J"UG5B69�+H+üT�l<M5@EKT?3S�A4J '�)BG1',.�1
3#!#3>73�NU��T+EEN"5#��Z����bW�qE>�v,a7���"
#".5463232654&#"�^P3M,]Q3M,�'+*((+*'
��6{f��6yfn``nn]]7��A"".54>32.#"3267}c�PR�`=h $X*{spm?_($W
:z_c|:I
feag
N��T�#!5T�Xs���6�JU,3!####U�X�X����2�2��C�32+#5#32654&֔nkft����;GB��DMKKY�J���(00#	E�3#32+#535#32654&թ���gt�uu揑;MG��I��KY�I��(00#1��'�3#"&5467332654&#".�^�]Zz~~zY\�^LQSJNNOO����^n��n^���MdcNP^a������73'���=�6q����������
73'73#���=�6qW==���Յ�����!!!��H��!C2���3#'3#�65Q66������M!!����MG�1���3267#"'#"&'73267�KA5AA6@JA4-'<\F<<F\<'-4�P�����3!!�PN��7lE�E������463#";#"&'.�EL=
��.,�5:GE
,������E��"�V��h��'73�r=�(�-h�(��=� ���h3#'3#hDDxDDh������h3#73#73#��@@m@@m@@h��������[�����.�g�3����'70NOO�RRS���L����4632#"&'4632#"&��}!!!!!!!!�2�L����#4632#"&'4632#"&'4632#"&���}!!!!!!!!!!!!))�47>;#";#"&))73��#>O�BG E>��\�W#.#"#"&'732>54.54632~&%*4`K"	EHSG,E�15P��|3[E(K,R8i��[QX ���8!!����8H����I+53267>54&'&'+&'9?pz&	
"-#"I$"3.+

G0&$�OI;#"&'.54>7>7"#-"
	&zp?9'&*&0G

+.3"$$��O8.'.5467>;#"�*&'9?pz&	"-#"!$"3.,

G0&�����8'67>54'.+5325"#-"	&zp?9'&+&0G

,.3"$�����)3267>54&'.54632.#"+}z&	
)+2M@<\/B;(! %1)+9?p8'!$86!7I?O!26"2)"3/+

��,T8(%#"#"&'732654&'.5467>;Tz&	(,2M@=[/B;(! $2)+9?p�'"$76!7I?O!26" 2)"3/,

3�xD!".54632#"&'732654&#"32>=4&#"3267#"&54632�w�MnV<DMQ
	/.$4;6t^Nj?93#.4	

OSH>SkM�Z�f��H8:OA% qhGzI.Nc6ap 'DO:;E��i�V*�xR!".5467>54&#".5463232>54&'.54>32'>54&#"v_y:3*. (,
:AH=>D)1""TLOV"' %F;AA@;
,($1"!:9z4[8;L)3%") E(82>/B0M/ 4$9&*;$3%38#>+B46(F +& 4 V97Z4*�xG!".5467>54&#".5463232654&#"3267#"&54632u^y:3*. (,
:AH=>D)1"!RI�|93#-4
OSH>Sk�4[8;L)3%") E(82>/B0M/ 4$9&�tMe 'CO:;E�w��*#xFP%4&'#".5467>54&#".546323267.54632'>.#"���Ut;3*. (,
:AH=>D)1"#M>moU\#G;+J.BF#H!��<>)*!�$({�4[8;L)3%") E(82>/C/M/ 4$9&p]3A'6B,k\FA'W))?:'$NR�W��h��7�-�-]<�<8x6B!"&547.54>32.#"632"&#"327&54632"&546326co9,9'TC <.@7)1*3

%A'C?( 1Pg!!  kSO5M8'D*F0""9G4);=
	#"-"!!":���x1=32654#7#".5467.54632.#"3267'4632#"&�0�1"R
DG@B)I-1-9D�n6/LTN< : �
j((-D;7-:C5.HU<[aI;9<5

\  !!)�x+7E%#".54>7054&'.54632.#"'4632#"&"32654&'�@e:@i=:`8(@8;E@) OSo!!!!YO^*C&@R<8�<H 'O<2G'9+*<<,! #&1]�""""o23#,-0#=$���I4@L7>7>54'.+"&'.54>7>7;24632#"&4632#"&�$-!	'F?9'&*/"#-"
	&G*3!
'&+$$$$�$$$$&0

+.3"$:&0	,.3"$�&&&&��&&&&'*��
"&'732672.#"'>Kt!JI4;<OoWKt!JH5:<Oo$a_IHNEgYa_JGNDhX'8��
7>54&'7.5467'ALDHc][e�BLEGb^Zf�?<7LE$tLKsp?;7LD$tKKs���E�
#"&'73267EkMHl"GC597odSY^FDIC-�%'7'77	�D��?��D��@ؾ0��+��0��+/�E�7".'73267332>7#"&'�-A%O!+J ) O%A-,77�&b[DEEXXEEC[b&&..&������gw�������Vg'w����wl��
33#'#73'&'
�M�[A�?[�9
�桡�
�)5##!#3#3%35#��ԩP]|����M���H�G���3��2",7>3267#"&'#".=!.#"5>32>324&#"7>32672x|Z=3(M!#c2>QT6A^3WOJ1M&(M2�>#[MIa[3*?UK^H��9=:C�PW"A4B)-).<mG6`[Mq4=MQ-*KN08zETOJ
6'35#535323##254&+2654&+UKK�9[5ZFet�7>��BFFD��E�;3+E+DY<J&#��'/.(�;���"3267#"&54>32.FQ]VX"E#"D.��>xV+S#"A�l_^m
H
�Q|EE
V+324&+32����~�\d\M>�����d^�v$2+5#535#3#3254&}����88�H��9�d�����H�G�H��d^V�)!#3#3���A����H�G�!���"("'732654&+53254&#"5>32�gT(C,;?SE:H�S<7]"^:vo!6 /6m
%F&&-%HZ2)O[C(5 	
91CJV�7�#2#"&546�X+����2��
"&'532653t!$'XR
G-��xOKV�33>?3#'VY �g��g�+�"����%��
35'7373V#AY`$��:&�7<J�IV�3333#<7###Vw��vX�H��f���H �w�#��V333#467##VT	`T��`��:���+5�k;��? ".54>32'2654&#"=Ws89sW}�;sTVOOUUQPE}RS{E�}S|EGn__ll__n#���"&'532654&#"'632�.D"$D"Q^XW"A!Fe��=s
H
m^^m
E#�Q{F>
%"&54>32"32654&)��A}Y��A{Y_oo__ll�sGo@�tHp?�KRQLLRRJHE�74>32'>54#"#.:z_c|:I	�ag
N�Hn?ArH(M@�ML+DAZ&%"&547'7>32'"654&27%1��!8'>$e@��$8&?#c>&A2l_J1��o�sJ7(:-!�tI:';-"�
�$4RJ���"4QL4��|"!-4"&=!.#"5>32>32#"&'%2654&#"267!
etdSM4N()M5DifBFm?�r?d^@OFGPNHI��<F��<	�m5`ZM7878A|Z��8659IgdeifdhgNJES9���*#".5467.=3326=3"32654&�#)/8xd=c950%%Y2462X�A==AA>>�1EJ8X`+S:9IH.HH.<<.H�955<<559;
? 2#4&#"#4>>}�]OUUQ]9s �}_ll_S{E;��?
#".533265?;sTWs8]PUVO
S|EE}R_nn_V�2+##32654&�ne*aU3Y�:+HE=TM-N1�G�-5/.�7.546;#5##35#"�1ij�XX�fDG;><�#<-JO�����(--1�!"&54>7'3353'35#"ji1�f�XX�GD@<>PI.;$
����G�1--(�!##5!#Y����HHQ��%#"&5332653/aKjmY@AD<X�8Z4m[W��=BH7Y&/H�%#!5!254&#!5!H]h��W�d^��I*)�`bWxYDXG
\+��+!#!5!254&#!"&54632"&54632�G*']f��Y�d^���H
\4abYwYEX�(��J�!%#!5!254&#!5!254&#!5!J]h��YZV��Yd^��I*)Z.,B[ZWmNCWnQ>XG
U0~&\�333>73��YkkY���6126<��
�$333>733>73#.'#��RCVWT	DQ�]T


W��+X27.��"PX.��.:.

/:��'�	35!5!!' ��p��#:�DB�nD!���#"&'532654&+57!5��fWov:^"]7<SLMH���B�	ZFF`O,72,A�D����'"&54675>54&#"'>323267�ejFXCI:9&J!#\4be?OJR<?%S !%a
^P6o'AO527B_P6n'AP517B��� )%3267#".'#"&'53267.54>328'?%2<&6S"%"<(4A,O66O+"5�4*F10F,F)57n70K,,K0&MHV�##��YI�1
�33#.'
�S�]z	z��T).'��V�!###!�W�Y��0��V��5V##5".=3332=3V*dXWVd*Y�W�Ze2\9��9[2���3������!###"'53267>7!�Y�<8


:�5uj&WGH,Bq�N��'##3.'3b8�7;�5��		5�����R6#����#5##!#3#3%35#�E=�:�������&���/�/���?��!2+2654&+32654&#�VZ.+,<VK��<,6;L]>02@�/;&1.2;?��$"#�-�,$")
��&535323#+572654&+32654&#
2�VZ'QAVK��<,6;L]>02@�-�/;2-';?�-$"#�-�,$")?��+324&+32��s��i|>\SL?��ln�khUP��?B�!!#3#3B��Ƚ���/�/�'*�535#535#5!'ɽ��/�/�/�T(��3#"&54632.#"32675#	�%M1lr~r'F>!S]Q^+f�weew
/
]PM`?��#5##3353�;�;;�;�������#57'53¨77�77V�����v�'"'532653
(:B�-)��[>;?��#'#3>?3�E�/;;)}D��'���)��?D�33?;����0?�##333#467#�6W��V:�x?"�����_�T>��?��###33.=3�D�6D�7d?!����E�?��333#5467#?7�D6���Fb�T�!?��(��#"&5463232654&#"�mimijmhm��KNOIINOK�dyzccyxdQ]]QQ\\&��*".5467.=3326=3'2654&#"�2Q/3.&$;/330:$'-5cQ=::>=99"A.1<;*44)55)44*;
;1EL/4./22/.4?h�2+##32654&�[S#QE5;v;.CA:�B<#>&��.�(/))?��
2#'###32654&�VS:#�Ep\;}BE947�<=44����.�)(*$b�##5!#�;�[�}//;��#"&5332653�Y\VZ:==>9:�B[WG��59>0T�#.'#3673>7T{<Z
X;{=HR<U
H�T33�����409��648f&2#'##"&546?54&#"'>326=�@=*2,0>RU;&"2>3A2#,:f48�..114(	'�"-.5Og&"&=33>323267'>54&#"�?=)2,/?RU;&"1=3A2$,;39�./104( 
(�"-/$�g*"&546323733267#"&'#'26=4&#"�ANO@)3	. 4 7-+:...SSSU*�&,88
;AD9:?!g'283267#"'#"&=3&#"5>32>324&#"7>327�:'!2A Q$F@I�b 12 \(;2/@;")71=/��%'Nb'
(34P@ q/
D%/0-/"I)3\7l�!3>32#"&'##3"32654p4)AOOA)4)9c8+*:/.x$
SSST)ȭ;=;?@;z$Y�""&546323.=3#'#'26=4&#"�ANO@)3:/4 7-+:...SSSU	��8+,88
;AD9:?$Mg2#3267#"&546"3.�CL�:4!44$J]UD)/�(gPB79.
TPPZ,0+)2!Kg2#"&=3.#"5>3267�K]UECM�94"34#)+)0gTQOZPA 6:/
�)31+$g'#"3267#"&54675.54632.#"3�0b5'%79(JH.$K;&6-O6-�+7	.
6($"$)-*	.!g%"'73254&+53254&#"5632�C7,O6-&/d6'$=+LMH.$H*

-+6
07(%$"),$�Yg*2373#"'5326=467##"&546"326=4&�G&.MOM14M-3#ICLKL,0/.502g1+��EF10*
1WOM[-@;<?5:B98�{a#2#"&546v9
a��B��7U�3>?3#'#3ppC��Ey'99�
	m��� v�7+g!2#54#"#54#"#33>323>�;;8G3,8H4)9.	8Q<g8?��L63��L<8�B,67�^g%"&'532654#"#33>32	N:-9.
:!@@.�+M;9�B,8>��-3$fg#"&5463232654&#"fXJFZWKFZ��15512550�PWWPPWWP9BB9:@@g2#"&'532654#"'>zEU^E*+43e+7gLUYT	/@<v,&�ve
2#4&#"#46�QV=3784=SeZK:@@:KZ&v�
#"&533265vVRUS=4783�J[[J9BB97�lg"2#"&'##33>"32654&�@OOA(49/3 6,+9/..gSTRU��,-78;@F67B
��27#"&=#5?33#�	")=22"eeD();�DI)�3Za#'##"&=3326=Z.	<"?@:N:,a��+8=��M<8�;|J+53254&+5!|=C��TB=�\/�:;4H6)4*75)a!"&=3326=3326=3#'##"'#�;:8G3+9G5(:/8R=8>��M73��M=8���,6Ja
33>?3��=JJ=�B�23���
>e#3267#"&'#"'53267.54632�)4%#6
'"*>55>/}*+)* !B!+99+"E7�k�-74>32#"&'72654&+532654&#"7(D)BH6&1@W@#,_-6:%6/%*/!))��4>;8+2;6>B	��.*0/(.$%$+)��<a7533>53}};?7)9:4�zF�@9�X>me4|[�!-"&5467.54>32.#"'2654&'�FZ>8'8,1=1)0:8,H)144,298M@:G
%#*	*653A+:-,;91/8$���75.546753'5>54'�N^ZR8M_\P8<45s:7q��VJIW��VIIV���>78>?7o�}b"?'.#"5>32733267#"&/�N	
 Hu=�A
&&8u��*#���|) $m�3��vZ2#"&546#U

*9Zx��B7���72&#"#33>�
	)=9/5�1<0�B;'3��Z�%#'##"&=3326=Z.	<"?@:N:,�+8=��M<8���J�
33>?3��=JJ=�`B�23���7�kk-4>32#"&'72654&+532654&#"7(D)BH6&1@W@#,_-6:%6/%*/!))��4>;8+2;6>B	��.*0/(.$%$+)��"<�533>53}};?7)9:4�zF�@9�X?le4|.�b�4632#"'#72654#".RBLTXD8'^/3gY1�5RQYQMW
+U�=;}wa$��h5.546753'5>54'�N^ZR8M_\P8<45s:7q�VJIW��VIIV���>78>?7o�}�"7'.#"5>32733267#"&/�N	
 Hu=�A
&&8u��*#���|) $m�Q��o"'.%3267#"&'#"&5332653>32'.#"YP3O*)P7Bc#ZGjmXAAD;XF0Ec5\>C?I�[_M.4)6m[W��=BH7Y8%<mI5FDUQH���0�.:#"&'##.#"#>325332673#"'3>324#"3260zc?P?	32)
X21*P?dy[�UBAXHG��. Dx;E9h:F	";".���bgcij7����.;"&546323.=.#"#>325332673#"'#'#'26=4&#"dxyd>O32)
X21*
G
P1UEBYGGG
����.!
3S;E;k:F��H"0I]^dkq_`j����0&#"#>325#5754632.#"3#32673#"'#m	32)

^^\R 5*,+��
21*X;E�)h[E
;?#D�:F����"-6@7#>7533>323>32>73#5"&'#5.'#4#"%4#"U3/-G
U0~&]4[Z20/W=�AW@>XUnFA;~CUmNC>�@�/:
�I*)Z.,]hM/<��
��	
�YMG
	,ZV
��y""+2>73#5.'#5#>7533>"54W`b21+W.`^)X35*G
\&NGA�E"]hP7;	����8:	�I*)JMI%I���0".<&#"#>3233>32#"&'#32673#"&'#2>54&#"U
	32)HNAcyyd>Q21*X�1?GJRCAw;EHI#0����/4K:FI/6]<\n\^ck���",7&#"#>32533>32.#"32673#"'#U	32)H
R8#

)H+21*X�;E�b,@Q-Q6!:F���H"*7.#"#>3254>32.#"32673#"'#R	32)
(H00
&##
21*W�;ENBH
K,0|:F������"8"&'532654.'.#"#>7&54632.#"2673�8Q [/C<94
D3%$oZ1U%"J'69<N0&	2!t
P+$  2@
,DJF#")	+-?
&NP��S�4".=.#"#>325#5?33#32673#"&'3267�*G,32)	LM#4��21*/%*
4
HAj;E�*#r{D�:F81/C	"�$32673#"&'!!57&#"#>327!5��

21*)p#�x�32)+n��B�:F�D:�;E	�DU��0+"&'##4632&#"3632'2654&#"T4VFu{vKOwEO6phuttDIHGQJL
()G!st"Q*PG-	Q����JkcciWam`7ga353#5##p�99�9a������B*�!#".5467'57!5"32654&��O=�sGo@vhb���RJKRQLL@�M/oOu�:mNkxC~J��YPO]]OPY����77.5#5?33#373>32#4#"#3267#"&'$ZLM#4��X�M�E&bbWxZCX�*
4&=Kq:)8*#r{D��H=���]g��W�e^��Z��C	N$##575#535'53KP�PKKP�P?G�44�G�44���6"&=#53533#3267�OHMMXpp* 
&
UKbG��Ge1#G
�f"#*23##"&'###53533>"!.267!TZu86x`>QXKKHN1JE#F>DG��C"qrF��/4��F�I#0JLMGR�ghRZ`
��J"&=#5353!533#'26=!(jmGGYXGG/aHD<��@m[BF����FD8Z4GH7DD=B
��S$/".545#53>7#53!.'53#3#%326545!-Go@-60%��$=&=#�J6,���KRQL��
=qNF-GIEK85PEI;UFv��OddPU�:0�%1#"&'532=#"&'##33>32"32654�9<
0!&?P?XP?dy%"�UBAXHGA@EI4F
. D��";".��Km#�bgcijd�7�:>�$1"&546323.=33#"&'532=#'#'26=4&#"dxyd>OX,9<
0$
P1UEBYGGG
����.!
3�Q�@EI4FH"0I]^dkq_`j�:��&"&'532=##5754632.#"3#3|
05^^\R 5*,+��,9�I4F�)h[E
;?#D�u�@E7��"/<23733#"&'532=##"'5326=467##"&546"326=4&5UF�9<
0�u{vKOwEO6phuusCJIFQJL"()G�c�@EI4w>st"Q*QF-	Q����JkcciWan_U�:�"3>?33#"&'532=#'#3�	�gٲ:9<
0�=WWk4
���@EI4F�5��(�:��3#"&'532=#�,9<
05��P�@EI4F�U�:�"0"&'532=#4#"#4#"#33>323>323

04mNCWnQ>XG
U0~&]4[Z,9�I4FYZV��Yd^��I*)Z.,]h��@EU�:E"""&'532=#4#"#33>323�
04xYDXG
\3`b,9�I4FW�d^��I*)]h��@EU�0"%3#"&'532=#"&'##33>32"32>54&�9<
0!&>QXHNAcy%"�RCAX1?GA@EI4F
/4�I#0��Kn#�\^ck6]<\n(�:�""2.#"3#"&'532=#33>O#

)H+,9<
05H
R"Q-Q6։@EI4Fb,@3�:�":2.#"#"&'532=#"&'532654.'.546�1U%"J'69=33H&9<
0(8Q [/C<954J(o"F#(9+&:a@EI4DP+$  (8,DJ����.2.#"3#"&'532=##"&'532654>�&
�9<
0�$<$%
$=�	C%;�&�@EI4{~AI	C%;�BH�:�"&'532=#33>733a
0��^rr^��9�I4F��6126<�.�@E�:�3#"&'532=#'#37���,9<
0
��c¹d����Ɋ@EI4F����'�:�!#"&'532=!5!5���#9<
0�� ��B�n�@EI4F:�D.�:n!+6"&=#'##"&546?54&#"'>323326726=.1@#MDI`~�[:5*L!#`4b^,
#��DZOdM7�=J?L,*MRPW C4BV^�܇#EKN083-*7�:�"(5"&5463237332673267#"&=.'#'26=4&#"dxyd>OF
#1@&	P1UEBYGGG
����.!E�^�#E=J7%'"0I]^dkq_`j7�u�0=".=467##"&546323.=432.#"326726=4&#"/6 O>dyyd>Oy%
	$��UEBYGGG�IA?3
!.����.!
3O�I �A;%C	/]^dkq_`j7�:K"$+".54>32!32673267#"&="!.9LuA;kGEc5��YP3O*
#1@+L?I>
>{YX~D<mI5[_�#E=J>	�QHDU+�:!"5"&=#"&54>75.54632.#";#"32673267�1@+9sn!6 -7s[:S(!!E/ySF8I�R<8U!
#�=J>	YC(3	;1DJFL,&H\1(�#E!�:�"5"&=32654+532654&#"'632#"'3267�1@"]7<S�H:ES?;,C(Tg\m6/ 6!ov9/
#�=J�)2ZH%-&&F%ID19
	 4)C[	=#E3�:�"&-"&5#".=!.#"5>3233267267!j1@}^Dd5oYP3O*)P7KrCK
#��?I��>�=Jiv<mI5[_M<tU��#EQHDUN�:;�2#"&54633267#"&=#�A,
#1@5��1�#E=J?!�:�")2#"&'3267#"&=32654&#"'>�Gn?ApG

#1@B*PLNOAN":z_c|:8#E=J�
hdagI��:�(2.#"3267#"&=32654>�&
"8!
#1@
$=�	C%;�H=H5#E=J�%;�BHO�:�#33267#"&=#'##"&533265,
#1@%
\4abYwYE�1�#E=J?G*']f_���d^!�:�("&=32654&+57!5!#"&'3267�1@"]7<SLM>���t�e\ov5
#�=J�.42)A�IG�SFKeA#E	lg*2#"&'##54&#"5>323>"32654&�ANOA(3	.!4 7-+:...gTSRU)�',88
<@C:9@$#g"&54632.#"3267�FY]F2)g21,*PUYP,	y:>/	>g +2.#"632#"''67&546"32654&�2*g3=/5#4@(,]R,0#g,	y .(!&% '>YP�$f�*7#"&546327.''7&'"32654&�*KA-8WKGYRG"3+UI P7016612�	( #&qIUVNDCM":-!&�52,9:8%5!g%2#"'532654+532654#"'6�;H$.HML+=$'6d/&-6O,7g,)#$$(7/	6+.
*
��###5754632.#"3�X9==;6#
9X8��>7)I����a7"&'5326=#53533#	

00911/�+�*��*�-3$�Yg*2373#"'5326=467##"&546"326=4&�G&.MOM14M-3#ICLKL,0/.502g1+��EF10*
1WOM[-@;<?5:B95�Za47##"&=3326=3#!:"?@8N;+998=��N=8��8��2#"&546##5#5353U

[19009��*��*��5�a"&=33267�3/:
	3-��+�a#575'5�44�44a 
�

�
 �a##575#535'53�04�4004�4�*l

l*Y
  
Y�����&"&54632"&546;33#'26=#"U
H'1*/9112'
���' !(B��+<)+
7���
7"&53327�+892	�);�
:(���3#"&'532=#pL#�cRP,*�7a3379�B��,7�+g+2#"&'53254#"#54#"#33>323>�;;OG3,8H4)9.	8Q<g8?��T,"L63��L<8�B,65�)a$467##"'##"&=3326=3326=3#�8R=";:8G3+9G5(::	68>��M73��M=8��.���]g2#54#"#"'5326533>�>@8N;,3"	.	<g8?��M<8�;)
($m,7��g%3267#"&=4#"#33>32]#2N;,9.	<!>@�$(
);�M<8�B,8?7da3.=3#7F�6G�B��
1���
�$fg#"&54632'"3&267#fXJFZWKFZ�00�
[20��PWWPPWW*1/`�63i#���#5.5467533>54'N_\Q8M_\R66<67;6;6qeVIIV��VJIW��>67>?6m!�g0#"'3267#"&=32654&'.54632.#"K@1	+8<,'#339H;81H'227x/09();Q	'')-
*	''�����2.#"#"'5326546�	3"	3�
($�n;)
($�;)
��� 7"&'532=#".=#5?33#327�
+22"ee7�,=,'�DI)�:lP�a53533533##'##"&=3265#,:�911.	<"?@:N:,��*����*�+8=)%M;7va"&5467#5332654&'53#�FZ#!T�/15510�UEXQF-@,*
F4/<<0.L*,3QGQ5Oa#"&=3326=3OFIDG:S,(9�3DA7��M+"�5\g2#"&=3326=4&#"5>�-5�LG9+//,g(;Z�FK��:-.9V!-Ja
#'.'##Ƅ=JJ=�a���33�Ba	#57#533����#�)(��ba%"&=#57#53332675#0ɼ��	�);,#�)(�T$(
�Za!7>7#57#533>32+72654&#"mc���69("+0;?Z"!�	#�)(�0/%!)]
6	�.a#"&'532654&+57#5�,H,^O&=?&2>H;&��a'�;+@Q
0	5.3-$�-$_�"&546323.#"267#�PLHTQNI��/21._30�.{mn{zom{RPP��R\[S�Uw�#!2#"&546#.'52#"&546}Z*7,#"T#T
C�Cw�#!"&54632>73#"&54632��`6*K�7T"
T#��,2��'"54>54.54>54#"'>32,W
!3�	



		
�H`��"#"&=332>;�3RI&5=@4DX8�659>�l^��37#��{"���C?K�h^��#'73���"{�^K?C�lT��3'#���"{��K?C�hT��#'73��{"���C?K�&S��'77'I�"v��"vSL?@AL?@�&S��'77Bv"��v"��@?LA@?L���V��2&#"#533>:

*(!%< '!r�'����l���'���M�����N���32673#"'#5�1(&29MDd%��.#"/ENRA�\^��#.'#5>72$r�J<^�PW�Z;*gh\�26
//
&))���<
4#"5>32'>��//75,,"%�1;4.(I 6������]�������� �#363232654&'7#".#"#�>. #/()(0:0$7-)'-?m,
9*.7($�;[�8%32654&#52#"&54&#"3"&54632! 1>=31=! 1==21>�$!!1;10=91$""0;2/=:��t74&#"327#"&546325>?#	-9?12?78�,%!1:10<A?>f0H����^�&������]h�F'-82#3267#"'#"&54?54&#"'>326"34&326=W,3�D""@)#!+n(#,716p�* &F5+K-!A
"">"V �Kh�G'1#"'1#"54?54#"'63263232654&#"326=�=3B?Rp,3%)+971>�"$%""%%!M&), &�6:00@A2 95&--&&++*#!�nh�G('##"&54?54#"'63236?3'326=	$#(p,3 $)+X	
I,w_&), &l !A2LE��h#!��pg�'#"'53254&'7.54632.#"3267JC	!)3@1"GE!	�(
	53;5RP��hy�#"&5467&'72654&#"O:61=96;&,6$"##F"()287//6$(
�*" (J!)��hz�(7#"&546327.''7&'"3254&
4-'<50>911;37%""%H#�	K1994--3&
y$!&K$��po�(2373#"'5326=467##"&546"326=4&1 l5"#6#2/444!@%!"� �\   :53<+(Q#&	,&��hkF2.#"3275#53#"&5462 RE3[+0>FFRP;l59;5��l~�3>?3#'#3!M/bh/T''�H[{dO0��l�#3((l0��ldB5332(nlֹ��l�B53373#5<7##'#s5GH5(E!Dl֤�փ
�����lqF2#54#"#533>,,'6)( )F%)��4(&o���lrB53.=3#'^1}%1{l֬!|֬$	x��l�B
532#'#7254&+Nl'/#D.>:9;@l� ZUUr%G��lpC2#'#532654+'-0B,;4-6-(C \W%��haF$#"&'532654&'.54632.#"a4,%)##(2(&
"2#"&�  ��ld�"#54632.6(,$	
���)"��lbB	#57#533b��z���l����h�F'"&54632373327#"&'#'26=4&#"-66-$ 	$&(   h8778
�&%(+-&&+��h|� 3>32#"&'##3"32542
$,77,$
(D'(@R
8778
0s'*(*SQ��pw+4632#"&'72654&+532654&#"^<+.2&",<,A&)&!!'p43+'%"'%),jy)�	��hpF2#"&=3&#"5>32674@;0.5�K#$!F855<5,J�" ��lk�##5#5754632.#"3R<(**)%	

'<'��)%1��l_�0&#"#>325.#"#>32533273#"'3273#"'#
			(
	
	(�-`p,]�}(zF#"'#7&5463232654&#"z=4)-6<41>�"$%""%%!�6:Ue.5995&--&&++��p|�"2#"&'##33>"32654&-67,%
(!#%(   �7779X6%&(+/$%,��pQ2.#"#"'53265462
$
$��((�m(oB#'##"'#7&=3326=o!)1.:(5(B�Wn
��3(&o�^l�C!.'##'33>?33>?3#		+-B)!		++)
	!)C/�		y�s#
#
yy 
#s���hd�1<4632#"&74632#"&2#'##"&54?54&#"'>326=5
	

	
U	

	V#!+s)"+#-")|		



		


,H�!A

r ��hz�#/4632#"&74632#"&#"&5463232654&#"5
	

	
U	

	Z=4/?<41>�"$%""%%!|		



		


�6::65995&--&&++��ho�+4632#"&74632#"&#'##"&=3326=5				U	

	O!)+,(5(|		



		


0�%)��3(&o�����ip���e^��
#"&'33267�QHJK62.'9�<JI=)'�e^��
#"&'33267�QHJK62.'9�<JI=)'��q4�2#"&546���&��!'3!73���dBFFBڪnn������������'O��.#"#>32
4MZ,DxNA
��b�U�%(+UP H=�]����/.#"56323267#"&.#"56323267#"&")"2' $(#1' ")!3' $("2'Q:$
:#v:$
9$��NP.'5>73E6886.,N
D
3

2�H���%#5>7.'5#.'53>73�5995.,{
D3


3(
D3

2@BB@B@����~�&&����.���!&F�c��aT�&'�����U��0�&G���a�PT�&'�e��U�P0�&G�l��a�mT�&'����U�m0�&G�����=�Y�&('|x���7���&H'|�x���a��&)����7���&I���a�P��&)����7�P�&I�N��a�m��&)�����7�m�&I�h�a���'#"'532654&'7"+324&+3 �JJ 	$&5&)
��l�V��$3���ua"�057V�P�s��;(Ώ���7��*7"&546323.=3#'##"'532654&'?26=4&#"dxyd>OXG
0!$3JJ 	$&5&&UEBYGGG
����.!
3�H&
5(&057LI]^dkq_`j��a�8��&)�����7�8�&I�S��a�+
.'535!!!!!!!>:1i8�)$�q���#��5�12
"GsGG���O�N�7��q
&-.'535!2!3267#".54>"!.#:1i8�)�Ec5��YP3O*)P7LuA;kF?I>�12
"GsGGK<mI5[_M>{YX~DHQHDUa�+
>73#5!!!!!!!�8j29:S)&�q���#��5�G"
21sGG���O�N�7��q
&->73#5!2!3267#".54>"!.�8j29:S)�Ec5��YP3O*)P7LuA;kF?I>�G"
21sGGK<mI5[_M>{YX~DHQHDU��a�8��&*�[���7�8"&J�\���a�H��&*�L��7�H"&J�M��a���&*'|��r���7��&J&�^|���a��&+�������&K���=���W&,�����7��&L�l��a��&-����O�&M�'�a�P��&-����U�P�&M�`��a��&-lR������&Ml�a�%���&-|����&M|	��a�G��&-����U�G�&M�q����Ha�&.������H:�&N�����=
".>73#"&546323"&54632!57'5!t9i2:;(���TTTT�G"
21}��4;44����g
"&>73#"&546323"&54632#3K9i2:;(�EXX�G"
21}����ak�&0x����L
�&Px$�a�Pk�&0�t��U�P
�&P�5��a�mk�&0�����U�m
�&P�O���a�P��&1�V��L�P��&Q�������P�W&1'�V��������P�&Q'������a�m��&1�p�����m�&Q�����a�8��&1�[�����8*�&Q������a*�&2xb���UV�&Rx{��a*�&2�k���UV�&R����a�P*�&2����U�PV"&R���a��&3�!���U�&S����a�P��&3����U�P"&S�_��a�m��&3�����U�m"&S�y���a�8��&3�����U�8"&S�d��=���#
 0<>73#>3232673#".#"#".54>3232654&#"F8j29:g1+2.20,2.�K�lo�HH�pk�K��ryzppyys�>"
--�5=4>�Wo�\\�on�\[�o�������7��'q
 .:>73#>3232673#".#"#".5463232654&#"�8j29:g1+2.20,2.m�sGo@�sIo?�kKRQLLRRJ�>"
--�5=4>����A}Y��A{Y_oo__ll=���-=I"&546323"&54632>3232673#".#"#".54>3232654&#")���4/50-3/51�K�lo�HH�pk�K��ryzppyys��5=4>�Wo�\\�on�\[�o�������7��'R-;G"&546323"&54632>3232673#".#"#".5463232654&#"����4/50-3/51|�sGo@�sIo?�kKRQLLRRJ��5=4>����A}Y��A{Y_oo__ll=���+
*.'535!#".54>3232654&#"�:1i8�)�K�lo�HH�pk�K��ryzppyys�12
"GsGG�?o�\\�on�\[�o�������7��'q
(.'535!#".5463232654&#"2:1i8�)g�sGo@�sIo?�kKRQLLRRJ�12
"GsGG����A}Y��A{Y_oo__ll=���+
*>73#5!#".54>3232654&#"@8j
19:S)�K�lo�HH�pk�K��ryzppyys�G"
21sGG�?o�\\�on�\[�o�������7��'q
(>73#5!#".5463232654&#"�8j29:S)j�sGo@�sIo?�kKRQLLRRJ�G"
21sGG����A}Y��A{Y_oo__ll��a*�&5x����U�0�&Ux���a*�&5�����U�0�&U����a_�&7�����U��&W����a�P_�&7�r��I�P�"&W����a�P_W&7'�r�z���I�P��&W'���3��a�m_�&7�������m�"&W�����3����&8�����3����&X����3�P��&8�+��3�P�"&X�3����A>73#'"&54632#"&'532654.'.54>32.#"#"j29:;�u<f"$k9PQIA[]:gC;b(%W/CDD:?W-47
99��_jV>5#0)!`S9Q,M9/$0&5J3����A>73#'"&54632#"&'532654.'.54632.#"�#"j29:;tb8Q [/C<954J(oZ1U%"J'69=33H&j47
99�NPP+$  (8,DJF#(93���H"&54632.'53>73#"&'532654.'.54>32.#"A
,0<88>1-��u<f"$k9PQIA[]:gC;b(%W/CDD:?W-��54
00
45��_jV>5#0)!`S9Q,M9/$0&5J3���RH"&54632.'53>73#"&'532654.'.54632.#"�A
,0<88>1-�tb8Q [/C<954J(oZ1U%"J'69=33H&��54
00
45�6NPP+$  (8,DJF#(9��3�P��&8'�+�����3�P��&X'�����
!�&9�������S\&Y�?{��
�P!�&9�@���PS�&Y���
�m!�&9�Z����mk�&Y����
�8!�&9�E����8�&Y����Z�Q��&:lK���O�Q&Zl���Z�H��&:����O�H&Z�F��Z�8��&:�����O�8&Z�U��Z���#
 3>73#>3232673#".#"#"&5332653-8j29:g1+2.20,2.�<{_��Z]^aWY�>"
--�5=4>��JwE�w�1W`gQ�O��q
 4>73#>3232673#".#"#'##"&533265�8j29:g1+2.20,2.UH
\4abYwYE�>"
--�5=4>E��G*']f_���d^Z���.2#"&54632#"&546!5#"&5332653�K���<{_��Z]^aWY�GG��JwE�w�1W`gQ�O��R/2#"&54632#"&546!5#'##"&533265��K��tH
\4abYwYER�GG���G*']f_���d^��X�&;�P�����&[����PX�&;�U���P�&[�&����&<E'����&\E�����&<xt����&\x,����&<l�����&\lh����&<�v����&\�.���P��&<�����P&\����F�&=�������&]����F�&=l�����&]l���6�&>��������&^����&�&?�Q���'��&_���&�P�&?�S��'�P�&_���&�m�&?�b���'�m�&_�/���U�m�&M�y�����SU&Yl�y{��1&\������1&^�i��.��7&F����Uj�&C���j�754632.#"7#QaP2*)/j �X2�-�gUE
4?R;8L�Zv
j�3>32.#"3###
H`P2*)/��XHCfTE
3>H��Z����(2#"&'532654&+57.#"#4>hct�?b84mX4]))a,UJVV>�F:\TY:x�WK�1Z@?a8RKD@CA�&)gQ�2�JwE��-���o���P~�&&�n��.�P�!&F�C��~�&&�c���.���5&F�>~�	",>73#.'#5>73'!#3	.'3�X42
441:\:KV��U[Q��
Q�n* 
3_))A""A�����3*-;�.��,	6A>73#.'#5>732#'##"&546?54&#"'>326=�X42
441:\:�b^@#MDI`~�[:5*L!#`NdM7+DZ�* 
3_))A""A=V^��L,*MRPW C4B��83-*KN0~�	",.'53>73#.'#'!#3	.'3�3W':]:2451|V��U[Q��
Q�b3
 +TA""A))�����3*-;����,	6A.'53>73#.'#2#'##"&546?54&#"'>326=w3W':]:2451�b^@#MDI`~�[:5*L!#`NdM7+DZ�3
 +TA""A))=V^��L,*MRPW C4B��83-*KN0~$,62#'>54&#"56#.'#5>7'!#3	.'3�.2$)C:1441:V��U[Q��
Q�"#'?
)}"A))A"�q���3*-;�.��g$@K2#'>54&#"56#.'#5>72#'##"&546?54&#"'>326=�.2$)C:1441:4b^@#MDI`~�[:5*L!#`NdM7+DZg"#'?
)}"A))A"�V^��L,*MRPW C4B��83-*KN0~%-7#".#"#>323267#&'#5>7'!#3	.'3�/).*-/(.+D;03560;V��U[Q��
Q�.>/=�"@!/(@"�s���3*-;�.���s%AL#".#"#>323267#&'#5>72#'##"&546?54&#"'>326=�/).*-/(.+D;03560;6b^@#MDI`~�[:5*L!#`NdM7+DZs.>/=�"@!/(@"�V^��L,*MRPW C4B��83-*KN0���P~�&&'�n�o���.�P��&F&�J�=~�	)#5>73#"&'33267'!#3	.'3�41W JFGG5.+&4�V��U[Q��
Q��5,k<GF=)'�z���3*-;�.���L	3>#5>73#"&'332672#'##"&546?54&#"'>326=�41W JFGG5.+&4Vb^@#MDI`~�[:5*L!#`NdM7+DZB5,k<GF=)'�V^��L,*MRPW C4B��83-*KN0~�	)#.'5#"&'33267'!#3	.'305
IGGF5.+&4�V��U[Q��
Q��,5
k<GF=)(�z���3*-;�.���L	3>#.'5#"&'332672#'##"&546?54&#"'>326=�05
IGGF5.+&4Ub^@#MDI`~�[:5*L!#`NdM7+DZL,5
k<GF=)(�V^��L,*MRPW C4B��83-*KN0~"*42#'>54&#"56#"&'33267'!#3	.'3)-1$)�IGGF5.+&4�V��U[Q��
Q�"#-
'�<GF=)(�z���3*-;�.���n">I2#'>54&#"56#"&'332672#'##"&546?54&#"'>326=-1$)�IGGF5.+&4Yb^@#MDI`~�[:5*L!#`NdM7+DZn"#-
'�<GF=)(�V^��L,*MRPW C4B��83-*KN0~#+5#".#"#>323267#"&'33267'!#3	.'3�/).*-/(.+IGGF5.+&4�V��U[Q��
Q�.</;�;FD=('�|���3*-;�.���q#?J#".#"#>323267#"&'332672#'##"&546?54&#"'>326=�/).*-/(.+IGGF5.+&4Ub^@#MDI`~�[:5*L!#`NdM7+DZq.</;�;FD=('�V^��L,*MRPW C4B��83-*KN0���P~�&&'���n��.�P��&F&�Z�2��a�P��&*�V��7�P"&J�W��a��&*�V�7��5,3#'>54&#"56322!3267#".54>"!.�.#6$+%
%<BrEc5��YP3O*)P7LuA;kF?I>�&)5U4,�<mI5[_M>{YX~DHQHDU��a��&*�Q���7���&J�=a0�	&>73#.'#5>73!!!!!!�X42
441:\:/�q���#��5n* 
3_))A""A���O�N�7��),	29>73#.'#5>732!3267#".54>"!.�X42
441:\:�Ec5��YP3O*)P7LuA;kF?I>�* 
3_))A""A<<mI5[_M>{YX~DHQHDU&��	&.'53>73#.'#!!!!!!�3W':]:2451\�q���#��5b3
 +TA""A))���O�N���,	29.'53>73#.'#2!3267#".54>"!.�3W':]:2451�Ec5��YP3O*)P7LuA;kF?I>�3
 +TA""A))<<mI5[_M>{YX~DHQHDUa$02#'>54&#"56#.'#5>7!!!!!!�.2$)C:1441:��q���#��5"#'?
)}"A))A"�q�O�N�7��	g$<C2#'>54&#"56#.'#5>72!3267#".54>"!.�.2$)C:1441:5Ec5��YP3O*)P7LuA;kF?I>g"#'?
)}"A))A"�<mI5[_M>{YX~DHQHDUa�%1#".#"#>323267#&'#5>7!!!!!!�/).*-/(.+D;03560;��q���#��5.>/=�"@!/(@"�s�O�N�7��s%=D#".#"#>323267#&'#5>72!3267#".54>"!.�/).*-/(.+D;03560;2Ec5��YP3O*)P7LuA;kF?I>s.>/=�"@!/(@"�<mI5[_M>{YX~DHQHDU��a�P��&*'�V�b���7�P�&J&�N�W(*� #'>54&#"5632!57'5!.#6$+%
%<B��TTTT&)5U4,�R4;44��<�5#'>54&#"5632#3�.#6$+%
%<BDXX�&)5U4,����(�P*�&.����N�P��&N����=�P��&4����7�P'"&T�W=����$0#'>54&#"5632#".54>3232654&#"�.#6$+%
%<B�K�lo�HH�pk�K��ryzppyys&)5U4,��o�\\�on�\[�o�������7��'5".#'>54&#"5632#".5463232654&#"�.#6$+%
%<B��sGo@�sIo?�kKRQLLRRJ�&)5U4,���A}Y��A{Y_oo__ll=����	*6>73#.'#5>73#".54>3232654&#"�X42
441:\:�K�lo�HH�pk�K��ryzppyysn* 
3_))A""A�co�\\�on�\[�o�������7��4,	(4>73#.'#5>73#".5463232654&#"�X42
441:\:b�sGo@�sIo?�kKRQLLRRJ�* 
3_))A""A����A}Y��A{Y_oo__ll=����	*6.'53>73#.'##".54>3232654&#"�3W':]:2451�K�lo�HH�pk�K��ryzppyysb3
 +TA""A))�co�\\�on�\[�o�������)��',	(4.'53>73#.'##".5463232654&#"�3W':]:2451��sGo@�sIo?�kKRQLLRRJ�3
 +TA""A))����A}Y��A{Y_oo__ll=���$4@2#'>54&#"56#.'#5>7#".54>3232654&#".2$)C:1441:yK�lo�HH�pk�K��ryzppyys"#'?
)}"A))A"��o�\\�on�\[�o�������7��'g$2>2#'>54&#"56#.'#5>7#".5463232654&#"�.2$)C:1441:(�sGo@�sIo?�kKRQLLRRJg"#'?
)}"A))A"�#��A}Y��A{Y_oo__ll=���%5A#".#"#>323267#&'#5>7#".54>3232654&#"$/).*-/(.+D;03560;wK�lo�HH�pk�K��ryzppyys.>/=�"@!/(@"��o�\\�on�\[�o�������7��'s%3?#".#"#>323267#&'#5>7#".5463232654&#"�/).*-/(.+D;03560;&�sGo@�sIo?�kKRQLLRRJs.>/=�"@!/(@"�%��A}Y��A{Y_oo__ll��=�P��&4'�������7�P'�&T'�W�`��=��%�&dx#���7����&ex���=��%�&dE����7����&eE���=��%�&d�����7���5&e�T��=��%�&d�����7����&e�O��=�P%�&d����7�P�j&e�X��Z�P��&:����O�P&Z�PZ����'#'>54&#"5632#"&5332653�.#6$+%
%<B�<{_��Z]^aWY&)5U4,�NJwE�w�1W`gQ�O��5(#'>54&#"5632#'##"&533265�.#6$+%
%<BxH
\4abYwYE�&)5U4,��G*']f_���d^��Z��2�&sx
���O����&tx���Z��2�&sE����O����&tE�Z��2�2#'>54&#"5632>53#"&5332>53�.#6$+%
%<B�1]%H=8w`��Z_`AO$Y&)5U4,��L;/Q7��JwE�w�0V`/S5�O���52#'>54&#"5632#'##"&5332653>53�.#6$+%
%<B$$G<H
[3bcYwYEX0]�&)5U4,�/T8�bG*']f^���d^;M:��Z��2�&s�����O����&t�U��Z�P2�&s����O�P�k&t�O��6�&>Eq������&^EU���P6�&>�D����&^����6�#'>54&#"56323#3�.#6$+%
%<Bn�a�Z�b&)5U4,��_�K�����5/#'>54&#"563233>73#"&'5326?j.#6$+%
%<B��^tm_�YN$
.9�&)5U4,��(I!Q)0��LZF4+G��6�&>�;������&^�a��	!3!!3TZ8�{Z��P�6��3##53533533###�XQQX�XPPX�HIggggI��H=����%32654&#"5>32#".54>7�Mm9/`Ige^K-.#Lo=B�f_�KH|L�\�bDpBpX\`F	?uPM�LS�\r�j5��"�#32654&#"5>32#".54>7�Kf=NQLLGB &bu�rLp=J�j�(jvw5`v^QP_F�ps�EVg��/
��\�""&54>733>73'32>7�7;;gA�a�
	�^�*FIY&0"5T1
>13M2���7C�Ue,qHG2���"&546733673'32>7b0<se�_{	{^�)Zi$%IW�:3MX�<2<3S��lhrF=5��7��Y&lO���7��Y&l����7��Y&l&OP{���7��Y&l&�,{���7��Y&l&OYB���7��Y&l&�6B���7��Y�&l'O��C��7��Y�&l'���D��
��&&7O����
��&&A�����
x�'&�&O��{����
x�'&�&���{����
d�'&�&O��B����
d�'&�&���B����
��'&-'OS�$���
��'&.'�/�#���-���&pO���-���&p�k��-���&p&O2{���-���&p&�{���-���&p&O;B���-���&p&�B���
��'*�O���
��'*�����
I�'*Y&O��{����
I�'*Y&���{����
5�'*E&O��B����
5�'*E&���B����U�&rO���U�&r�\��L�&r&O#{���K�&r&��{���U�&r&O,B���U�&r&�	B���>��&r'O����?��&r&�d����
�'-�O���
#�'-�����
��'-Y&O��{����
��'-Y&���{����
��'-E&O��B����
��'-E&���B����
�'-�'OS�$���
�'-�'�/�#���B��6&tO��8��6&t�������6&t&O�{T�����6&t&��{T����6&t&O�B^����6&t&��B^�����=�&t&O���������>�&t&��������
��'.�O���
��'.�����
��'.m&O��{����
��'.m&���{����
��'.Y&O��B����
��'.Y&���B����
��'.�'OS�$���
��'.�'�/�#���7��'&TO���7��'&T����7��'&T&O\{���7��'&T&�8{���7��'&T&OeB��7��'&T&�BB��
��4�&4dO����
��>�&4n�����
����'4'&O��{����
����'4'&���{����
����'4&O��B����
����'4&���B����O��&�O���O��&�����O��&�&OG{���O��&�&�#{���O��&�&OPB���O��&�&�-B���O���&�'O��:��O���&�'���;��
�'>�����
��'>�&���{����
��'>w&���B����
��'>�'�/�#���A���&�O#��A���&�����A���&�'O�{^��A���&�'��{^��A���&�'O�Bh��A���&�'��Bh��A����&�'O!����A����&�'������
"�&dnO����
,�&dx�����
��'d1&O��{����
��'d1&���{����
��'d&O��B����
��'d&���B����
�'dd'OS�$���
�'de'�/�#���7��Y&l{{��7��Y&lB���-���&p{]��-���&pB���U�&r{N��U�&rB�����6&t{���R��6&tB<��7��'&T{���7��'&TB���O��&�{r��O��&�B���A���&�{���A���&�BF��7�Y&l'O�<���7�Y&l'��<���7�Y&l&OP'{�<���7�Y&l&�,'{�<���7�Y&l&OY'B�<���7�Y&l&�6'B�<���7�Y�&l'O�'�C�<���7�Y�&l'��'�D�<���
���&&7&O��<��
���&&A&���<��
�x�'&�&O��'{���<���
�x�'&�&���'{���<���
�d�'&�&O��'B���<���
�d�'&�&���'B���<���
���'&-'OS�$&���<���
���'&.'�/�#&���<���U�&r'O�<��U�&r&�\<��L�&r&O#'{�<��K�&r&��'{�<��U�&r&O,'B�<��U�&r&�	'B�<��>��&r'O�'��<��?��&r&�d'��<��
��'-�&O��<���
�#�'-�&���<���
���'-Y&O��'{���<P��
���'-Y&���'{���<P��
���'-E&O��'B���<<��
���'-E&���'B���<<��
��'-�'OS�$&���<���
��'-�'�/�#&���<���A��&�'O#<��A��&�'��<��A��&�'O�'{^<��A��&�'��'{^<��A��&�'O�'Bh<��A��&�'��'Bh<��A���&�'O!'���<��A���&�'��'���<��
�"�&dn&O��<[��
�,�&dx&���<e��
���'d1&O��'{���<��
���'d1&���'{���<��
���'d&O��'B���<
��
���'d&���'B���<
��
��'dd'OS�$&���<Q��
��'de'�/�#&���<R��7��Y�&l�_��7��Y�&l�f��7�Y&l&{{<���7�Y"&l<���7�Y&l'B�<���7��Y�&l�C��7�Y�&l&�C<���~�&&�z���~W&&�����
��&&Y{����
��&&EB�����~�&&<���)[�OR��6P"&=33267�OHX* 
&
UK��1#G)[�'>54&#"5>32m(
,3+[8#)#0��(^�����(w�y'��l���U�&r&{N<��U�"&r<��U�&r'B�<��>��&r���>��&r&�<��
��'*�{���
��'*�B���
;�'-�{���
'�'-�B���a���&-<���)[c&O{���)[d&OB���([��&Oq�����6�&t������6�&t��������6&ty�������Y&tC�g�����=�&t�������=y&t'����l�d��E�&.������>W&.������
��'.�{���
��'.�B���L[�&�{���L[�&�B���([��&�M���O���&��V��O���&��]��A��&�y���O��&�C���F�!&|O���F�!&|����O���&��:��O��y&�'�:�l���6�&>�W���6W&>�^���
 �'>�{���
�'>�B���
��'5�����^�'53'"&546323"&54632FUj&��^�
����^�C(^�'53�_j0^�
���A��&�'{�<��A��&�<��A��&�'BF<��A����&�����A���&�'��<��
��V�'4�{���
��B�&4rB����
D�'d�{���
0�&d|B�������&d<���(^�BL[�.54632.#"�+4+
[0#)#8��{��
3'7'7#�@ll@y��=kk=�H�+�{�
#'73yAmmA���=kk=�!��(�3��(�3(A�5!(�AII(��375!(��NN(��375!(��NN��(��3�������&a�an���"���!5!!5!��a��a�Z@�@���	>73#0A	_�5�5&WU#���	#>73�
1A
^�4�5&WU#����t������	#.'7r	A0�#UW&5�4�[�#'>7##'>7[_0x^/�:�456:�456�[�	#>73#>73[
1B
^�
1@
^�5�5&WU#5�5&WU#���nt����[�#.'7##.'7)A0Z@/�4�:6�44�:6�4A��'#5'37��d��d���
�W��<��%7'#75'75'37'��e����e���U��U��U��U�M�+�4632#"&M@//@@//@mD88DB::D�H7D�%������8yt��H���y'��H���y&'��H��:���{�Z3#迅�'�H�,�{Z#53���'�!���{t�#53#_�_�b������{t�#53#3#_�_�b�'�&�����{t�#535#53#_���_�b&�'��1��h�%1;E2#"&546#"32542#"&546!2#"&546"3254!"3254�JLIMGKF�tM���&##&MhIMIMGKF�IMIMGKF��&##&M
&##&M�ujjwwjju
�6�4QPPR���ujjwwjjuujjwwjju?PPQQ��PPQQ��	-����(6DNXb2#"&546#"32542#".546!2#".546!2#".546"3254!"3254!"3254�6D MMHNJ�tK��~&##&L15D LM5CK��6D MM4CK�6D MM4CK�&##&L��&##&L&##&L�:dAmtwjkt
�6�8NOOP���:e@mt;f@ls:e@mt;f@ls:e@mt;f@lsCMPOO��MPOO��MPOO��'��3#�Z�:����'���'���'�b�3!333��Z��f�Z�v�Z�������������#@�:��������d�'���������'�E'����{Q3#'�(�<vy�A����(8�7'(�?��?��$��%�'8�'7'e��>����
�%��2���#/;"&54632'	7		"&54632!"&54632"&54632���.2��.45.��2.���[��^    ��.65/��4.���.6��    ��H����&�����)'>32#767>54&'"&54632�&(0Z4_l5(!J=
(%C5!�	9[S-A7#2(�/-58�_  ������:s�J��3267#"'@&�JH�&*_��bPNNP��FJ632.#"a��a)&�JI�&\��PNNP�g�3#'>��<_f���������sM�''��=Q�=��(�3�A@�	#@�LK��6�O�b+�#3#3#3+�܍����hE��D���b��53#53#53�����HJFHH������=�'$�$����^�&$���H����&$�$3!5!�%�}���C7�^��L�!2#"&'##^Bc73\>':fw.m`[l.�p?��6&'%"&5463!'3#	glqk�cc&u��u�CmX&I7!2#'3#Xkqlg�cc&�u��uCm��)�9���,��&#"&5463273#.�#%%#q^	B0�$  $&�a#UW&5����J&����)�8��'���m�4632#"&%#4632#"&  e��M&  �   S�6�i   O��u2673#".#"#>32�8?4
oK9zyt37@4nK;ywr3%MN$4%MO$�J��'632.#"@)b��_*&�HJ����PNN���%#''5'7#53'75373�~-~?~,~��~,~?,~��~,~��-~?,��,5����432#"432#"432#"]9::9��9::9(9::9�<<;�<<;�<<<��'��&�'��'�T��4���432#"432#"%432#"432#"\9::9��9::9Z9::9��9::9�<<;�<<;;<<;�<<<5���'432#"%432#"432#"432#"%432#"59::9`9::9��9::9��9::9W9::9�<<;;<<;�<<<��<<<<<<<5����4632#"&4632#"&5    �   ��!! 5��Y�#/"&54632"&54632!"&54632"&54632C  �  �  �  q    �� !!  !! �� !! '����#/;!5!3!!"&54632!"&54632"&54632!"&54632h��ALB����  �  �&  �  TLS��L��" !!  !! �4!!!!H����#4632#"&4632#"&4632#"&H$%%$$%%$$%%$w%%$  �%%$  �%%$  H����#/"&54632"&54632"&54632"&54632�$$$$$$$$$$$$$$$$M $&&$ � $&&$ � $&&$ � $&&$ ���{t�#535#53#3#___�___�b&�''�&�����{t�#53#35#_�_b���b��������{u�'3`�`�����}���{u�#7#`uu`�b������{u�
'77'`uu`>>>�sYkkY���777���{t�
#535#533#___�__�b&�'�&���JT"&54632'254#"�MNJQMOISTT+''�sljsrkju?��OQOP3v�2#"&546#U

*9�x��B
�UO
##5#533'4673U=K��I=� P}``4��]81u�@L#>32#"&'532654&#"'7+�	CZTR FE-550%L7mD@FM

C(+&*��LT)2.#"3>32#"&54>"32654&�#"6>6);JRED]/T
+2(&/)T;)F*F@FP_a/ZH+�-/-.&+�CL#5!O��'��p<1���ET$12#"&5467.54>">54&32654&'�7P*'/SBIN- !&?$ $(%$/!"()*(-&T57%07)8C@8)6+&$17"!�($$&
�IV'2#"'532>7##"&546"32654&�D]-TB% 7<
3(@JRE$/'*+3-V\c/[I,<,G(H@AS9,,&.-*;#�/�5#53533#�ll4ll�o4oo4o#9/m5!#944#/�5!5!#��q33p44>s��
4673#.>/-B/100B+1S�46�KI�70�s��
#>54&'3�0,B1/1/B-/�T�47�IK�64�7]g2#54#"#33>�>@8N;,9.	<g8?��M<8�B,���vJ2�����%�~�*}�����~33v�����vA3w����
�~U-������u@*������vL2������~C*������vE2������vI4�����#��/������#%/Y	����#��/�	����>�K�c	�����K�c	����8�&72#'##"&546?54&#"'>326=�@=*2,0>RU;&"2>3A2#,:�48�..114(	'�"-.$��M�72#3267#"&546"3.�CL�:4!44$J]UD)/�(�PB79.
TPPZ,0+)2$��f�%#"&5463232654&#"fXJFZWKFZ��15512550APWWPPWWP9BB9:@@��L�7'373#'#�xAYYAyA_`@D�zz����!��K�72#"&=3.#"5>3267�K]UECM�94"34#)+)0�TQOZPA 6:/
�)31+7��]h73>32#54#"#3p:"?@8N;,99�8>��M=8��7��Uh73>?3#'#3ppC��Ey'99z
	m��� v�7��ph#3p99`�7��+�!%2#54#"#54#"#33>323>�;;8G3,8H4)9.	8Q<�8?��L63��L<8�B,67��]�72#54#"#33>�>@8N;,9.	<�8?��M<8�B,7�l�"72#"&'##33>"32654&�@OOA(49/3 6,+9/..�STRU��,-78;@F67B!���$#"&'532654&'.54632.#"K@%4<,'#339H;81H'227/0	0	'')-
*	''
���+27#"&=#5?33#�	")=22"ee;();�DI)�$� 2.#"35!#3#3!5"&54>�$G  5;DFO������xt1_�@dXZW�B�B�C�uKs@3��)�%.4%&'#7.546?3273.'267##&#")+#?78vo?*?!#
a)J$$M5?�

]"*2:A,!p�)�Zy�[SWb
H�"JX��5�tRc@8���.".54>32.#"33>32.#">7Xc>C�`6^'$J0>^3I9G;& 
+@3F$L
Z�pl�]HG�Zr�h8"KD8�J-�35#53!!!!3#�UU����痗�AO�OnA�!�&2.#"3#3#!!5>5#535#53546P8W"I)5?����&��	/5aaaa_�E:BXANBACPJ
JFBNABguU��V�&2#4#"#5#54#"#33>32736�[ZWmNCW�F�nQ>XG
U0t*[F?'"]h��YZV�ض���d^��I*)Mň
2�#'+3#535#53533533#3###3'#3'#3'#3'#XNNNNh_vONNNNi_v**^B�C__*@R@����@R@�����|��RRR��tL����,2+##32654&3#3267#"&=#5?҅v1tfW�)\[RHnn)
+ 7@MN�nd<g?���M��CNEDxhC�%(A
CF�($_S���?2####32654&2.#"#"&'532654&'.546�ni0�_}[U�@BB8<i+@ 1"'%6#6R[%CJ0($5#7Y�ef8L.
��'���L��ECF=\C$)*9,FWQ,#)*9,BL
�� 3#53333333###3'7#7#�;J?7P3S:\<R1O5=H6Z<];FF$� <G=K@?��?��?��@��K�������U��
332#4&+332653+U�nhQKD�eQ�LMQ.dQ��|e��2NO�{�1QM�Ag;��7�f^�&�Du��/�02.#"3#3#3267#"&'#53&45465#53>|2X)%K'�%���aR'OK0y�PHHO��H�A

	AU]
N
�vA
A{�<�3#533333##fWWU�b�β�e�8NB:��:��B��N>��*�35'75'75#5!#77�u$�u$���u$�u$��P5idP5i�OO�Q5ieQ5i����/<3332>54.#"'>32#%>32#"&'##2654&#".{Vk	f�G:kJ+`$$n:e�Qg�t�]QPL*XF1

T�-C$"(4
(B�
Z�bFf9GL�^��e�PcR>.[=
6-�,D;#(384��$1"'532654&''#7.54632>54&#"n$''$'3rS>R�PU,%M>>I68-1R>(!�
K,*�wȆz	��[�1URLE=�Yf�WJQKLw,(*6IR
2�#+123#3#+##535#535#3&#3>54#326�drKACQui8SWWWW�F�$5���3;N�JD6		

6=Q�w6Y6�JDDzY
|D =����!'5.54>753.'3#>7u��I�c@:h-"$Y0�3h>��-`Mhr�*<PG	âf�_&#N��F�MzM
:���
_�"3#3##'##7#537#533.#3^`��cLU_S�R_UKb�`.iB����@R@����@R@b$U01T�R���9"&547#53>7!5!>54&#"'>323#!!3267"u~/TCI8��~@D1W"&n4eu7WDJ<	:�{�9k$"r
^_&@!@/5OSU)@!@tQ=��Y�".'>7#5.54>753�2\%$G*)J$"G.@��E�`@@^lee�L��N

GG
Šd�a	&u�xy���L�3#5?33733#3267#"&5#aLP 4� 5��O*5GO��*{{{{F��aD
K[7�-����IR[g5.546323>323>32654.'.54>32.#"#5#"'#5.''54&#"7"5432754&#"q*1 "".B1.0M*O63S2=iB4a1.R)>N(H/8W2QO6"&6 >e/
�%!> 6+")Oy;&+31<6!K*5'2L;<U-H:5(0"3K:F`SIFK	c�%)%96=IY1?(/�!!##5!#�-Z���N���NNO��!53267#53.+5!#3#�PU�
UL��0	��aP�J,.<@82@@'C@IQ�����"&'5755753772>53�*kkkkV����[j.V#O~F%A$O$A$��GAGOG@H��K~NE�d:����*5F7'7&=#"&54632!2#"&/'3267#"&'4&#";3265.#!77�%YNaI8>LO^*10"2UJV[L >%9Fdz&"%+.}!AN��jFP^/K9InAL8DWh5U1>O#PRJK?	NSO�17#)�1$0@p& ZOK;��74>753#54.'##;<�lXd�BY/]FXK]*Y�z�K��I�{��cv7��8va�
�35#535#5332+3#2654&+aWWWW����T��G[eTYZ�AYL\jefsYA�n<NDB��7H/)73.54675363253&'#5&#"#5;!7�Mfqm<<)')'<<�I�Z���N(�p��offmM����4�W�MNa��/"+433533253#5"+#52654&+32654&#a\@"@?A=:(?%OF@7@ZR=KRNhSBDX�eehrOE?S&F8Nckbbb�;:;3�K��J<8E�����h��p ����(A2#'#"&54?54&#"'>#326="&54632.#"3267�AB/8&/8�8*2A�LK���<*3-JEZ]F4+Y+*/-�6;�*12c!1
�6ʬ/(��SX\R	7s7:
<
 ��w�(M2#'#"&54?54&#"'>#326=#"&'532654&'.54632.#"�AB/8&/8�8*2A�LK���<*3-��"8>&%&,18I994',,<�6;�*12c!1
�6ʬ/(�=f
8*,/+2

)2��F� ".54>32&#"3267~o�IO�n0]0PU+K>W)X*/V�S)*
Z�pl�]8"��
;
^S�O{)��7����&t(r &� )5.546753.'67!&��IORFBB./1524,�8,..,�l[Zk
lh3��4wR@R;
PA����(4"&54>32.#"3267	##"&5463232654&#"�Ib/P02+ig03|�tM��UGAWUFAX�'.-''-.'OW>J"
4	rq
4	
K�6��QWWQRVVR2@@24>>(����/	#	"&54632.#"3267#'##"&=3326=z�LK���EZ]F4+Y+*/-=&<@AH@2'�6��SX\R	7s7:
<
 ��+1:@��G95���6��&�T����;����7S�&t+c���{Q�2ET".54>?#".5467'>7>3273>732>7>54#"2>?	!*5S_W"$3$%
A
#;#^:)'.v�'B.
3T6N;KX}!B;"01-#�"51O/BF=&�{",!DA9+
G	)88@
&D"):!(@��:5
?I�'TI-�7T,"J (+EPN;

��-O1�(3;@!����:���".5463232>7'>?>7#"&54>54&#"'>3232>7>7>3232>73#"&5467>7>54&#"�9A1"$ 1+8J>$?P8G( O?;;3	BL%8=:

1CKH
 -" %. %\db+"%4mX/- +0,!#/43!:+$m<Yy#NE,
/G.*
'6/	(7' 
CwMA.,
C�M0*
(+ .O3@7"
 
2<?
"DPcA
D�k@#!\b%	=wcD
(,$
(1-;B){E"3k]9�@MICG$P����e"&'7326'..#"'>327>54.54>732>7#".'>32�)4#8=/7F �$
""+*(&2&%8</	64!	=S=9
)20"*:>

:E"|E��^f)<8:	 �%(%KVZ*@;2!@5	'3F.	")&TRCz,04a��3333##'3#3#a���xCC�CC��:�6[��5`��`�333>32#654&#"xX#X0Y_7W638VS,��$('LK
��W.1e^��&�"3#73733#3>32#654#"yH	JX�	�$^AHQCX@_WZ6_>[[>S$(++CF
��?Uaa�������>O".54632#"32>7.54>7>3>54'77>7�5?
1"$#22+D=-:;�oA�73A00 "?)!A5`�|CPa=:=pX3'
!22(7' 
&5];
5C8ld)<j�Y'
+G5 9:19iB�;��r+Mci0$& ���I>3232>7#".#"".''7>3232>54.54>7 *3<<6)"	
HN	*66$<)�.)	1h
%24
$30""	:6$.�	1=9&77-=�+|"."3S/-]Q&*#'	<OO&DB%��&�LZg".54632>7>7.54>32&#">3232>7#"&'67>54&#"267.#"�";%=%&T)	BR+4[u@---):cI( 27=DLT-+&/UqCG(!<!HBAU2&E +WBB<?,%<20�x,9$I)4$3
%#  H+

*;>5`K+		.Nb5,8 
<}qZ4*$gl\3CY&D-#M4B5We0Dq���"6����"*%2673#".=5>754>324#"67#53KI)F+0.?4:E1V6'S<&z:-:RY!LAq;�)C(MFAkP�2;\3)�@���%2"&'#####53533533#3>32'2654&#"@7T>�WLLW�X��P9irr{GKJGSAB
-&IX��X?aaaa? B,.��|�Ifae`f_
\aa��	
333#%5aL�5M�:�"��6�5b�c_��+/333.53##%"&54632'2654&#"5!_eEOb���@TQF@URD,&&,+('V��DE��6NGF�t�XRRWVSRX:97855879�EE1���&1:".54>32'2>54.#"'32+532654&+�P�c66c�PL�e96c�P@pV0.SqDZ�P.Sr>�RLV>RF',(,E
6c�PP�c66c�PP�c65.UrEArV1Q�\ArV1_�EDCL��%*(#,��O]>7>32#"&5463232>54.#"#".5467.54>74.'326�)3
(Z(R�'?S)$FhER]+%*@(3B(.'.i50Z%50C61O.$!)=@$6&6q&PaA56]"F<CnB7p]8SC26 	))4PSB7;*6,(d6&IHI'@R0T52k0+]4<eP7��)OQ++S#/B#"a\�3!2+'3#3#>54'a�xBk>cxCCx���$/S�m[>_6��5`��1��@<k=�V�")/.54>32!'27.#"%>54&'3'u��K�mk�K[I��YM7A&N87-.-.��.--.6|�
(
æn�\\�n��&��H��?)�UU�))�ST�)�~����^��".54>54&'"#"&54632>54'#".546332>7>7>7.#"32>53#"&54>7>326732>7p%!.0"01<(![U9A1"$ -$>PB) W>4"6#=q[;@-$#K@)9O04:-A?8�[(C98om
!# $3>
#EF=
.C-^ NcuA)@h>&5.	(7& C}XC�L%.#	,AN*)(.Rm?1%PF+44+QE1!.	N)@h+"JD
() 	
5=,��K�r�.#"'>3267>54.#"'>54.54>7>32>3232673267'>54.#">?".=4&#"�  40
!49-&'%
%!

,=&)I48L1#&
#
	5Z2,!% �D/%<><�C�
.*	6%
	!>fNKg@(((+('
%$)/(

' +E)E2%&-&	��tz9+C<
LP 71t
E#*,3-Pa��
!3!2##'3#3#>54&'3a�xC=�ÿ+xCCx���$/*)DJ��c[B]��=��5`��#��<<79
��a_�33273#'#7'#254&+a���LE98Ufh[AFTsN�f�^YY�ffEc]Z��kk���s�J:��a�o_i &27'7#####3023&4'>&/'�y*A$�i�f7h`Z�fk=�0752�=44Do*�9L-
���S����N���I�A8c��%:"&'532654&'.54632.#"733#5467###�57'(((1"G;3-E)(47M�^^a[@e5`c	5	*"00	1	
2+,34`�����/��(�j�#5!#33#3#3333ve
f�Ӕ���B?�j*66��`6Z6d6`��6j��33#5467###!#5!#E^^a[@e5`��e
fj`�����/��(�*66���oXi'7>73#'#3_���_�Z=7T�^��:3L��#@#N-�6R�<�u&O�	
35!5!!%3#&n��	��]�IjG5`55��55`���!'"'532654&+57!537!5!��~?xSqN/^-[YeqB��i������<�g`Ae9"PSDACA�K�L<�����dS����'##".54>7#5!32>54.'5�&E-L�ij�L,F%�>J 2hPPg1 I>�OVuKb�YX�bKvVOH,\kBLxEExLCj\,H��V"&'4&#"'>3232>54&#"'7>54&#"#".5732632>32�5,70C)VF"2/62 &:00
$!K
&/&0!10.0#0>$8^vq
;0
	
&@KKEK
A,:!!
	l
*2'A3%/2o�T#���2#4&#"5>cOHX*  &UK�~�1#G��ak�0��~n&&��=��C��".546332>7>7>7.#"32>53#"&54>7>3267#".54>73267>54.'#"&54632>54&'�3<
1"$ +$>YL)*9)4"6#=q[59'$#K@)9O04:':98�[(C/'7Q(
%&,HR' -1-
7
!!1#	1<(![	.2(7& Q�X-SY2%.#	$5F*)(.Rm?1%PF+44+I:(!.	A)/H4$9)'QE*$
,=!*395$Q7		:V23NcuA)@h>=��z�K".5467>7>7327#".''2>54.547"32>78r_9=;<D8
/*
	!7V/#/0!T�c-;�)*QuKQl4% 	&*#0=>*@&
&+A3.\Nb�H
m2��8"".54>32!3267.#"!5Tt;.K\.JuD�lN-IV"#;TTL41H#N~HHhD C|U�%<6%>%�&"�����(4".5467'>7>3232>73'>54#"�&1	,!!7�C%!
:fO
NR#R\-;L+2-%
),$5
(&AN ::2(+L/)V9�<@42KO��e�dp".54>7.54>32#"&546732654.#"#"&'32>54&#".54>32254.#*�=Y0EqC
;e?0<"
0%"$#-'"1!./K+5#9#A3 3(M?&$8%%?(%#(EX{ " 4\;=hF	4*-R5.2:))<
0 73,36aC	

7NZ/556H(%'.N/
$(B(#--O:!�

����P�7�".54>323267#".#"32>54&'7".546332>?'>7>77>7>32>7"�!':\�S3@.."%#
	%1&DCF(6mY6 2,#3Jk.;!1"$ -',G= 8R3J.7RA
%&
	GN `�5%$
!RSF+
+!.Oe6&%#7A<
<!D>'��)+#(7& 6]<A1':e_/
$Ze5$	8,&0-
T�L��	3!5!5!5!LZ�q5��"�6O�O������{"&5463232>7>7>7>7>732>7#"&54>7>7#".54>7>7�=I3(!).
*$7_VW/?|i# #9?>,="8f062"$8?@@"(&,'/40#UyG=Y#3GF00$!SYP(QWg
J:*;#(	"=e~@V�k

5HNG2
8NUOUfd'<O$<SSc`&JTP@.F"
#I27HKPK<9>8(E�dV�5-=&4]�lFC2Zki'6whA����#;".5467'7>32>73'267.54632>54&#"�%0	,PLS&+.3"/1*@*;)"
 +M7+
),$5
_$B)+UZ%.&'1'
1o+%]kS.'%��@Y.'#>7.'7>53&_i7@4ICO&I 6A�C'1N$@./P!5�@X�P^�c+I4=�V.jg(7|x1<m."�E35!4&+5323"6EZ��Td,M=)XJ=+fY��=��EP7>=4&/5#'7D%
T1
;G(%�1!0+5'�! 
D)G@j+Ӵ"=[�E!!5!#"���M==����N��N)�� 27#".54>2654&#"���"��\�om�\[�o��������ig���
o�HH�pk�K��ryzppyysab�&!'##3!##33#!#3#%.'316�6`�X��g}a��drsa��YK����7����3 ��rX��
�����M�M�CC�1���!4"&5467###?!#327%3#26?#"&547#<Q
;�f�fsOyl;<�JC\CK
1	:A<3
E;5��#5��
|;��E%*'��+&(�!4>73>73>7#�
���~	b9�
�Do	�T])��%	��(\W",4M�7;1
a�	3!!'3#a���xCC�5�k5`a��3!##'3#3#aG��xCC�CC�6��k5`��`�l�5	5!!!7#!5!=��6�������-�K�U�?b�77�q����1���>E���� #>32#"&'732654.#"3<�:vKo�NW�u<k."&_3��6w`/B�R^Y�qo�[N��V�I
���#!5�Z���6zP��)5!3��n8ZPz6�#3#�a�Z�b_�����G$��	
332#'3#27&+%>54'$����a���C�CK[Gq1Kj�2AB%ʌ�|�o5`��"#��H3�^`8	����#+"&54>323#773#2>54.#"�@Q"Bc@4DB���'R�C�B��/Q<!0-	5"=&	\[B�mA7(6�e4::��h>bo2 ;&VyL.;
	���""(/"&54>323267>?&"#">54'�mr*SxNH`��'.-^-+ZI4%	+{$)/�9A
m]@}g><>Bd�
?4	��-'%)�H'< V
"&54632'2654#"3'3#�"-2/L; �q�rnC\CP&%*<G372�~��1��o�V
'-"&54632'2654#""&'7326737>7#�"-2/L; ��(.
��y%?]47
iBP&%*<G372��	5#/�� JC*MA<�c�!##3532!>54&#
hB�B����A��ofbs��$LL^mcu�<YFTKJ����)5"&5467'#>7'3>32>54&#"2654&'�P]R=�!Y1%�wW/tShySG 7b*6=J>@[ �*5&$;31QI?X$�Q/Am)�T*4e_L])$R7IS� B67B*��,'$=%"<)$.,��v�`r���".5467.54>?.#"327#"&54>3232>3263:.54632#>54'>54.#":7'"&#"767.'2654&'"#"&'+30H+@!	"$	
") 
	#
2C,F2
$
 "e=
2�	-$'&
,a�	
	 xt$![0�40
)*f&
$:!Y5*( )�

)
 �/GU'BO)4$**%27X!:$�)A:%)> 2���_	" 
��4+
V92U+4����:#'##3#3&'32.#"#"&'532654.'.546NE#y$D�? I�I�B"Wp;5 (:)ND<>"*$8(;rbbX�6�c	^�
50)+5
	=
0#)6_	3535#5353���YH�H����N\jx"&'#"&'#"&'+53267.546323267.54323267.5432;>54&#">54&#">54&#"7U !V67U !W66V !R5#E#?>~$!H$"G"}}# G$"E"
~}$!D#�		%% �M	
!%%Z		 $$ 	3
"X['sm�&YV%

"W\'��&[W"

$XY'��&[W"
3M#ROOR#TRRT#ROOR#TRRT#ROOR#TRR��%�'}�~'�(��`��%���'}�~'�(���`��%����'}�~'�('}��`���`����933467'73#"&'532654&+532654&#"'>32f�K�L

6#�IG�%@F>40:4992/)5$E.GH+'/T�62*		'1\�T��
?")#$!7' .>0(4
3):I��-�F57>54&#"'>3233"&'532654&+532654&#"'>32s))%1#E+@I;8Q�K�L�%@F>40:4992/)5$E.GH+'/T6p'1'  .?71N5M>���6
?")#$!7' .>0(4
3):I��%����'}�~'�(���`�����'v�~'�c��`����=�'w�~'�l���`��
��$�'��~'�^��`��%����'}�~'�)���`����$�'��~'�g��` ����)5B33467'73#"&5467.54>32>54&#"2654&/n�K�L

6#�IG�IN- !&?%7P*'/SA%$  $(*(-&
!"(�62*		'1\�T��@8)6+&$257%07)8C!"�$&
($����(,EQ^"&'532654&+532654&#"'>323"&5467.54>32>54&#"2654&/�%@F>40:4992/)5$E.GH+'/T^�K�L�IN- !&?%7P*'/SA%$  $(*(-&
!"(
?")#$!7' .>0(4
3):I���6@8)6+&$257%07)8C!"�$&
($#����";GT33"&'532654&#"'73#>32"&5467.54>32>54&#"2654&/��K�L7 FE-550%�	CZTsIN- !&?%7P*'/SA%$  $(*(-&
!"(�6

C(+&*�7mD@FM��@8)6+&$257%07)8C!"�$&
($0����
#/<33#5!"&5467.54>32>54&#"2654&/a�K�LI��'��IN- !&?%7P*'/SA%$  $(*(-&
!"(�6p<1����@8)6+&$257%07)8C!"�$&
($��%i�'}�~�)��!���"����G�'��~'�gw�`2�g!!2�=gI0*"#/;GS_kw������2#"&5462#"&54632#"&5464632#"&%4632#"&4632#"&%4632#"&4632#"&%4632#"&4632#"&%4632#"&4632#"&%4632#"&2#"&54632#"&5462#"&546)
J
�
��

<

��

�

�T

�

�T

�

��

<

�
�
J






I


@


J


J


@









��35#535#5333#3#!aWWWWZ����8�GYG��GYG�P
��35#535#5333#3#UKKKKXKKKK�GYG��GYG�����32673#"'!!&#"#>323�
21*	$��	32)Zk:F�PT;E/
*�3#53532+2654&+3#aWW���5}kRHfdX_[���N�qk@kA��OEVMFpNpa�_�#2##3267#"&5#32654&&�*A$�i�� 


CK�fkWPT�ef9L-
��'��/#LKRN��ECF;.�0�� &.5#7.546?&#"'>3273#'##4&'7">=7�CA/:eh2		*L!#`4DCH^@#MD�)JP>BY�74)��K>HU�B��#���L,*m$/
�@�KM0r$
�3�0��"#.5#5?3373#3267#"&'7hCQLM#4[GCJw+*
4(	F�5#8*#r{��9��C	����a�D��OU�Fh�3>323#5#4#"#3�Y4bbOWOxZCXX(#)*]g���W�e^���a�D|�%#5##3>?3|V%�IZZ>�i���P��U@����"D"���U�F#�3>?33#5#'#3�	�gٰNW)�=WWk4
�����5��&�D�5!5!5!!��gx�������D6PD���'�F�5!5!5!!X�� ��p��#��:�DB�n�=����#2373#'##".54>"32>=4.kIrGGpP_�EE�`bllcX]$$^�7/\�6\.8\�oo�[N����6_?�?`5a�@�!#"&'5325467####333^V("h�K�R���~a_Is�(P&��lNW�9��T���!73#	>?#^VU[��Q��Q����3��*,
;�b����#"&'##33>32'2654&#"�IrGGpP_�EE�`bllcW^$$^
8.\�\/7\�oo�[N����5`?�?_6��"��)2&#"#.'#3>73>7>�

�[�
�[�^o
~]~R6�I$'���:-	
U.�/�L.V&'\,��N.[#%W/E=7*"0333>733>?>32.#"#.'#��[J_`\
20%hg\	`��+X27.��"PX.�.#A�\.:.

/:��
�'!,23>73#'#5267.546"654&�5F>:w^�e[5$I3
@'=58W06126<��I 9;?D!
+ Ba��33!!aZ2����O��U�!!#���X�J�7���"$"&54674632'>54&#"c��:,D%-/N.UI>X0O�13R0=/,
��Q�6/1kFIV'([^CwOa�AK0\F^c0?5���#%,%#"&'#"&54>32!326732654'"!.�?;+%I/z�:lLir��XR1O.!#
��?O@�"2E��VF�o4[b" 6SQG]��J�!#'##"&'732654&#"'>32JEN8"

DU#/#8PQ^17ScOW12D	MY7��'"
#/#".54632>54&#"4546324&#"326'�sGo@�sIo?�LRRJ<1/@7  
��A}Y��A{�	T7_ll_4R2772:{3535#535#5!:����AH�G�H����vZ4632#"&"&'5326533

%	

9/9��+t��-3��#3>7��:�=i

h�T���./3� ��A.#""&'3267#".'.'.'532654.'.54>32�.S)>M'H/8W3f
3$$/5A)" 

,f:FV*L23S1<iB5`1a:5(0"3K:\f

9%	
K	#>("-V>9'2$1L;<U-"� !�35!5!3267#"&'.#"����y?F#K#1;O_"(=?N=��>7=+
J	O7#'��hx�&467>73>32#"&2654&#"c/59@"	(//=12;p# )�FO
	
+-6+56D'") & 
/��lxB+5324+324+326p".4hh&4(4>6<>;< #�#;?"E��lbB##5bk(B����"�B
3#5##53>535`#&�%$nB�hJJh&a1)X��al�B#'#5#7'3537�dl-h%i-lc+b%bBhnmmmmnhhhhh��hdF%2#"'532654+532654#"'6)1 255*%E %7&F% 
$��l|B
3#'#53H+gp.m((Bgomm�h��ifB#5##"'532673f(G	''�l�eW\a��l�B#547##'##537�$N"L$5LMB։���֬���lsB353#5##57�''�(BYY�``���hzF#"&5463232654&#"z=4/?<41>�"$%""%%!�6::65995&--&&++��lpB#5##5p'}(Bָ����p|�"2#"&'##33>"32654&-67,%
(!#%(   �7779X6%&(+/$%,��hgF"&54632.#"3267%0>@1"GEh59;5RP��llB##5#53lO'N�%����lyB'373#'#S->>,SX-BB-�hPPhnVV��"�B#5#533533�&�(}'""Jָ����lnB326753#5#"&=37.%(((%)(�$
\�`
"P�fl�B!5335335���(h'iB�ָ����d"�B3#5!5335335�#(��(h'iB�gJָ�����hzF#"&54632'"3&267#z=4/?<41>p@�@#!��6::6599@@�$#G�@h�C"&546;##5#"3267R0>@1�O'�G#"h59:3��O&*��hdF$2#'##"&54?54&#"'>326=V#!+s)"+#-")FH�!A

r ��hrF2#3267#"&546"34&/5�K#$4@:0!zF5+J864<!"��lrC53533##54#"#54675KA'@@),'A@(,(!! )&*(88(*&( ��hl�%"&5467.53>73'2654'')()$$!)',h#'#&!&823F"(% #�l��3#32+5#535#32654&%LLDa.4j55g@A" �Z;<$�Z�E�th�F#"&'##533>3232654#"�91.9=((>8..;�A#BA�6:31`�Y./95S*)Q�rh�G&"&547##53354#"'632#'#'26=,#(Z((�3 %
)+X$ '$&)h!d�X2L� !#��l�B#'##5##73'&'"f(-#,(f	
;
B�^^^^��}l�B#'.##5"#7>7'5#zI$
'$	'$H�}?BE BAddABE=�ql�B ##'.##5"#7>7##533'5#�I$
'$'	C''zI�}?BFBAddAB	`�YE<x|�#!#�5��5x|�#!#4632#"&�5�K�5��t�#7�5��:|.k�t�'7@��k.|��{o�77"&54632{���-:|.k��34�x�'7'"&54632D�ڷk.|�ƅ#��##5!#5����55#��##5!#4632#"&5���G�55�5��1=.5463232654&'.54632#"&'.#"7"&54632�(9
&#	G;'3
	'	9�"
"(.85?	 07 ;$�5��1.5463232654&'.54632#"&'.#"�(9
&#	G;'3
	'	9"
"(.85?	 07 ;$5��1".5467>54&#"#"&54>32327>32A.9	(	
4&;G	"&

9$; 70 	?58.("
"<O��!!<{��O{��F��>R��	7���%SRT$��>R��'b$S%R%S$��(
5@KOSWf47#"&535!5!4632!!#"&547!5!&73654&#"32654'#5!5!535654.54632�n6-������W%$��E$%�7�*+�����¶,n5�O 
	'#�++�++�++K$$
+
%%+		m
		�++�++�++�N 
	
#�l�!5�`44���!'7#5�}����`4�/�4���%!5!#���}����44�d���2#52654#d1<<1'D8218'#BLI�3#4632#"&4632#"&>�@=Z�6���?�9%#"&'.547327�.(*L#"'"-��|45S'"#L*(."54��|-z*t$7'&#"'632'654'��45".(*M"#&"-*�-"&#"M*(."545/�4632#"&5-54632#"&����|����;��;�&�JB�7'%'%4$$��$$�5�5��5�5����)2#"&54667#"&54>7>=3Q&(0Y5^m5(!J=
'&C5��l	9[S-A7"3'�/,49�H]�7"&'>7.546327.546327.56327.546327.546327.546327.54632>32>322>322>322>322>32>32232>32#"'�"


		

	



&%/#)
%'!,F
-,!11'%%+!
.'( 
">:
	5/!)%	
 (%	/%+"9
1
+
	#


	

%				
#
		$
	
		


���(�&l�z���2	�&c���_>���&7���%SRT$��>���&'b$S%R%S$2	E#4632#"&.#"56323267#"&�"$/>0H9.$/>1G;�"N5"M6
2}	�#.#"56323267#"&4632#"&
$/>0H9.$/>1G;O?"N5"M6
u��u�33#�7����$1�$����#533J��7��1�P4�#3#�@��:��#53���~:�HP�b433P@�����:�b�3#53�@��H:��3!!".54>3!!")EX/��4hT32Ug5��/XE)b,/0B<<B0/��75!2>54.#!5!2#�/XE))EX/��5gT32Ug5�0/,,/0B<<B��(�b��'
�
���b��&��5����432#"%432#"432#"59::9W9::9��:99:�<<;;<<;��<<<5����432#"432#"%432#"X9::9��9::9W9::9�<<;��<<<<<<<5���432#"%432#"432#"%432#"59::9`9::9��9::9W9::9�<<;;<<;��<<<<<<<4���'432#"432#"%432#"%432#"432#"\9::9��9::9Z9::9��9::99::9�<<;�<<;;<<;;<<;�<<<#����+%#54.'.54632.#"#"&54632/F""$5h_<a("L2:?,&!$#$$#�)*5?-Q^F40*,!27�$  $%�ua�5>54.5467`#B@$AA�"$'-=2##',>f��%".54>32'2>54.#"3T22T33S22S3#8""8##9""9�2T34S22S43T2<"9##8""8##9"��H��+L��t>73#L0A^v569�5��H�����)��J����	>73##"&54632U0B	^j#%%#�5�5%XU#��%%$  <"�	#5'3Y��Y��	�O���}�	5'37'#�X��X�5��O�	+��37'#7+�d��d��
W��B��� -467.54>32.#"#".732654.'B2'(%2U5YO%F%7:D4.O0[JE`1KDL,)D=(�*@6"/;":&%"&(8+CM+G4+>/$"
.��(�X3'�����(�
�3'�0'������W��''7'77V34$44#53$23c43$34"53$33C�2�h#/;G"&54632"&54632"&54632"&54632"&54632"&54632�$$$$$$$$$$$$$$$$$$$$$$$$� "%%" �#%%#�#$$#� "%%" �#$$#� "%%" L��NK75>54.54>54.54>54.54>7�,,6];AQ,,,,,,,,,,6];AQ,,,,,,,,-#2?;,#,$&,+%%+-"3> ;,#,$&,,%%*:����&<FL33253.'>7###.54>72675'"&54675"2327&B=21="?1;: =24=y�CxM8It,4q2pzYG9_97v�/+�m/>�@EL	F���
����
��OpB	�
&

\g[j
	;aCEi<���P�z:T��(�'�1��t?3#.1^A0i4�96<��t	?3#.?3#.<^	B0�^	@0i#UW&5�5#UW&5�(���7"&546323!�[Y+!(��UC-,#	!N(��"�'7'7S+�G�+�G��*���*(�_T
%.#"#>32(9'.26KJHQ�')>HJ<(_
"&'332673>32#.#"�JK62.'97Q�KJHQ79'.2�I=)'<J��>HJ<')(�_T
#"&'33267_QHJK62.'9T<JI=)'(�_�"&54632"&'332673�JK62.'97Q0bI=)'<JZ��2#52654#2#52654#Z1<<1'D1<<1'D�8218'#B�8218'#B
j�#&5467jr	nVz	g��#��G #<��375'575'37'7'7'�������e�������U�
U
�U��U�
U
�U�H����2#52654#4632#"&d1<<1'D$%%$�8218'#B��%%$  a��	##7�/��ZZ��P�����P��>���s#"&5467332674632#"&�1#($8 
�$%%$/+4+
��%%$   C"&54632'%'%"&54632A$$$��$$2��5�5��5�5�aX�x737'aT��X�T�bX�x%#75'3�T��TX�T���,�3!5!�%�}���C7�m"�'%�">3232654&#!5!5!32#"&#"G
:6F?;-6?������{�LX&WS>dH�$ !=?N=��%@+;L
#�)�">3232654&+5!5!32#"&#"3&$(-!+?.G�"��w��|kVTP7P!.
�	"$6�G9�gHD=G

"�'%�*>3232654&#!57#537!5!3#32#"&#"G
:6F?;-6?�ʫ�����屈���LX&WS>dH�$ !=�L�N=��L�%@+;L
#�)�*>3232654&+57#537!5!3#32#"&#"3&$(-!+?.G�i�n��wxe�{|kVTP7P!.
�	"$6�@�G9�@�HD=G

-����)74>7>54&#"'>323267#"&--W?:DDC.W&)b:Df:\\@JRO9k$"f<u��8J5&0$/9M,Q9S`!)0#5>Vj-���")74>7>54&#"'>323267#"&-&H34<96'J"&T1Zo(J44:<C/\Q8bt�+9(#FJD,8(  $+PP,��s�7'533267#"&{O�O&.#6LQ��55�!1/F	M��R��6tZ��53533##54&#"#54675��Z��quZ_]Z`ZzpLaaLa
�m��`da_��p�aP53533##54&#"#54675{�X��ZcXFIIGXbX�ASSAN	f`hdHCCHdh_f
N=���� 3#"&5467332654&'#5��a�ww����ww�c1pxyn]\Za[���sUd||dUs�CPPC?J��M"���� -"&5467.53>73'2654&'�U\<>-: 
X2.*7[%G525)O:+602&+6
WE7aB)EDM26MD,.YsTU�q:,JD%,H+C0)+O,'8,+3=����6".54>32.#"32675332654&#"'>32#"'S]|=>tP&K"4RZfe7Z8 ef[R3"K&Pt>={]hGG
_�om�YC����������CY�mo�_>>:��N#4"&54632.#"32675332654&#"'>32#"&' k{rd"8)=>NC"4X6"DK?=*9"dr{k8QP
����C
je^l��l^ej
C����(""(��p�4&#"'63232+72654&+�$2&.>TUk������VWaV_5<GTe|ibeoL@HL4��l#4&#"'>3232+%4&+326�!-$4PO��kn�bB>��<Ax.5EM];�MY�1#�0+�3#5!32#!3%2654&+��j����[Z�ETW^V`|N��ibeo�6L@HL4��3#5!32#!3%2654&+�����kn0X�y;CB>{�FۘMY��E/11$�a�333533#32+#%2654&+aZ�Z��j����ɓVTW^V`�```J�ibeo ��L@HL4��U��333533#32+#%2654&+UX�X����knޛ{;CD>��iiiE��MY�,E/11$�=����&4>3233###".%4.#"32>=D�h^�K�ZZ�H�dh�E.`KJ`--_LK_.fm�]N�_.�6Nf�W]�mV�HH�WW�HH�7���"4>32353#5##"&%4&#"3267<jEe}
�XX�~fm�~EMLEELME
Y{Axq���y���effeeiia��33!3###!3'.'aZ&y]\y�{\���w�+��5�3J��J���pE+*U���#*"&547##3!54#"'>32#'#'26=�L[+�XX�p%M',^1`c?%Q'GUOT\5
RN=&��#}B]a��P/+FQI12;+-��	!3'.!'v�u.F�C�F�E�3�TD��D����
133'.'#!'�d���		65.4��QCD�����$%##5##7>7'5!#7!"!.#F�Q�1[F/J:�A�:I/H[������0>)�(>0�����:P-�44�-M9����01.1^!%##5##7>7'5!#7"!.#�H�)Q=AC��<C=Q�����)3<7>uuuu�BG�--�?H�ء��
!- a��33!3!!3'.'!'aZ&y]�u���w�+F^�\��5�3J���pE+*���T?373!7##3'.'!'��]d��^�X�
�	Z@3A�����@D56C
�~��%#.'####"&'532673�]n	Y	&&7. ##�]@2S(��p,b-t8Y3J>F�!#'.'####"'532673\N
	X
!32	�`�(?��T6&gLCH3��D��733!3!#WYeZ��VO{��z�6��F#33!3!LXX�E��2���Dx�!3#5!#3>7!x��ZV�V7$A2 O/9 M�M���>���OQ:���6)�F�#3#5!#3>7353��NU��T+EE�t"5#�F�w����_�|FD��0�����!###"&'532>7>7!!c\�	
&?3#
#���{J��4C^0K1I$&��oM���####"&'5326735��`�
.L:
6A�F�-ϩ�^B��aF�!##33!!#467#��S������Y�ri9�O��IM���4f ��U�##467####33'��O�J�Ou��F�-V.�Q�-/���Q���=����&447��'"
%".54632'2654&#"7"&54632-Go@�sIo?�qQLLRRJKV
A}Y��A{Y��Io__ll__o�=����'3".54>32'2654&#"7"&546323"&54632�o�HH�pk�KK�lzppyysr�
\�on�\[�oo�\N���������5��B#
%1#".5463232654&#"4632#"&74632#"&B�NuB�Qu?�HU]\UV\XY+�
��D}V��D}U^op]_mi[��=����'4/'44&44��7���"'
b�
b+�yG�1=IUags������������%#"&'#"&547#"&546;&54632>32232#"#32654&#"32654&#"4632#"&'4632#"&3&'32654&#"32654&#"32654&#"'"#673"#674632#"&%4632#"&74632#"&23&'2#3&'232654&#"32654&#"7"#674632#"&'4632#"&�KG/>?,KHKHHKHK->?.GKGKKG�36622663�36622663J���36622663�	36622663�36622663�`�	����36622663�36622663�_�JY$  $ZI?)ZIIZ(?IZ$  $YJ>)YJJY)�<EE<<DD<<EE<<DD:



Y�<EE<<DD<<EE<<DD<<EE<<DD+e





Z�<EE<<DD<<EE<<DD,f



��@�
#"543!2#"'�&((�)('n./33/.���$D#/;GS_#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373X89FA44A�89FA44A�89FA44A�889FA44A�89FA44A�489FA44A�89FA44A�89FA44Aq\\neSSd�\\neSSdo\\neSSd�1\\neSSdo\\neSSd�'\\neSSdo\\neSSd�\\neSSd�L���,#5!#5!!53!5�H�(Hh��H�L�����
����l�#'+/3##5#53535!!5!5!!5!5!!5!3#3#3#��0��0�~;c;�';c;�';c;�200��00�00�0��0��'0000�0000�0000~��;��;��C��'#7'373#73'7#'#3D�EE�DC�FF�C-c22c--d22duxyuuyx,NVWNNWV��hjF"&54632.#"3#3267'2AB2$

CvwF
h4:<4?F��ltB73#5467#53;�1%�1&�!��~
#����lJ�4632#"&74632#"&#535				U	

	((|		



		


�����p}�33>?3#"&'5326?i+41+h
(#
�z
 y�$�ul�B32+5#5#32654&Bb.4jM�AB BX<$�uE��l�B	
5332#353'2654&+(>\,1�(� 9l�X<$��E��lwB	2+534&+326^-2n(~CD!�<$�X>E�`l�C#.'#.'33>?.'33>7�L%
5$1'$!(!Csd4a(p?:_
;*1`(#_7�V��
#"&'33267�QVUOB/4123@=6##$"��ku'#7#"&=3326?u4>	%(?
 
'�F)/)(	>��w��
u!���k�'
v!�D��3#5!#3>753!B[V�V7#?2!U/9 M����=���M��Q:���6)�F1�3#5!#3>7533##�NU��T+@EP�v!5�2����Y�s��2�D��3���+"&'532654.'.54>32.#"�=d&(c7J\.L..T5>i@;`++N)AR*H,1Y8@q�V XQ2G:DbJJk9ITM5F5!G]DRs;+��#)#"&'532654.'.54632.#"�og7W#&Z*AE <)/K*sX/T*E):?;.,J,cqLE:+;.8N=_bAB4(3*8O&����5333	####"&'532654&+532654&#"'>32*%�Z;f��Dl��Z�E��:i-/o1`cthfajiP@CY*+*{Mtx#0F3��Z����j��N.V^vRHBD>KG<6:"=+d!���"423533##5##"&'532654+532654&#"'6�\m�X�`�f�X�ov:^"]7<S�H:ES?;,C(T"ID-��������2$C[O)2ZH%-&&F%K��#!##"&'#"&533267&5332673�Zma2P@~5bkZ?F2V7	Z?C4R4Z)0[[��;=#��<<YHg#326753#5#"'#"&=33267&=344,P)XX*[6k(/f:RXX44,P)X^72��� G!&VS��72��9g�/7%2#"'532654+53254&#"!#3>7!36!�/?: #CC<+1$*R'&N#(��W5-L4	\N&�z*4W\&#2 %15

(,%
�
R��r�� @���9.�>�.4%2#"'532654+53254&#"!#3>7!36!.<8#@A='0#(O&&J�'R'>C3;%��82U%"1$.3

'*$�Y�.|s�Q����%4&+##5!#32#"'53265C;?�Z�����RV0#*1�=1��|NNŶ��Se
L	8;��##>32#"&'5326=4&#"##5Ӳ#W8]aEI( $9:5P X�F�!\_�EUH'.�A:��F���7#5!#3267#"&���3-!/S^��NN�IF;Le���7#5!#3267#"&Ʊ��). 
1VK�6FF��81GY`�(��%"&5463!!"3!2654&#!3!3#�10//>��11D09�XZaZ&(#QF�,%&-5&+#-��|�m@))D(U�(^#"&546;#";254&#!3!3#�10//��%�r+;��XX!NE�,%&-5V#*�/�9%)D(�>�"&5467#5!##"3267�/?G6��60+8	
�848EQNN��-9<�>�"&5467#5!##"3267�/?D4���/0+8	
�846E�FF�--9<��5!#32673##"&=�CG5_@ZZBq5dl|NN�;=Y�6)[[��326753#5#"&=#5!# 553Z/XX.e=S[���^72��� VSzFFak�4632.#">32#4#"#adW&
#/9@m2elZ�4[=Z�miO=G_[[��x��U�#4632.#"3>32#4&#"#UNF1#""V=ZaX:<WGXcQI	E)&N2.)_e��FHCaa��a�(��'"&5463!!"3!2654&#!3!3!3#q10//��Y%�1D0:�%Z[ZN#QF�,%&-5&+#-��|��|�l#V)D(U�(j'"&5463!!"3!2654&#!33333#910./q��%e7:+;��X�X�X<!OE�,%&-5,*#*�/�/�"K)D(��=���&446��7���"&TT�=����##".54>32.'!35!#>�K�lo�HH�pk�Ka^]���]_`_�_`fo�\\�on�\[�Bh
��~�n����7��'"
2#".546;&'5>7#0Io?�sGo@�R=?��r�{B>>�"A{Y��A}Y��LPG��I���
XL�a32+#5#32654&�`�BK�o^`'.+a�\-5-�f7`a	2+34&+326؈CH�9�-(ac$/�\-5B�_g�u$��#5.5467533654'6B@8&6B@9%%*%&)%OO^910:]]911:Vt)%$*JI��h�F!"&'##533>32.#"3#3267`/?>((>>-"
BttE
h04`�Y1,?F(��2�"&546;#";�CIHD~~__~bE@AC*Z[*(�'2�"&546;#";5!�CIHD~~__~�bE@AC*Z[*w**��(�2�
�	��(02�
�	(�2�53254+532#(~__~~DHIC�*Z[*DAAC(02�53254+532#5!(~__~~DHHD~�*Z[*DAACw**(��2�72+53254+5�DHHD~~__~�DAAC*Z[*��(�'2�
���NT�!3"&54632B���P?NT�!3"&54632B���P�NT�!3"&54632B���P NT�!3'"&54632B���P�NT�!3#"&54632B���PNT�33"&54632NB���P@NT�33"&54632NB���P�NT�33"&54632NB���P NT�337"&54632NB���P�NT�333"&54632NB���PNT�!##N�B�B��NT�3##���B��B�9�NT�3#33#�BB�����BNT�3##���B��7B��MS�333MB����B(�
�##"&54632
I4����(0=G#"&54632'7���4�5�3�(^AG#"&54632!5!�Y���I(S2�5353(�5S5q�FH��##5#�L�����F:�z'3533�L�:���HH�e#34632#"&�9kt$%%$F�'%%$  HR�o#"&546323#�$%%$[9k+%%$  �����H���
��V(���	5''5'(f�5a
��:<sr&�(���I	%55���5a5����$sr<FB�##532654+532#532654+532�:KmLRVT'UX
8Ki49UN$Q�*14YCOC)F*�a*,6UCPA'C)F!T"#53254&+532#532654+532�$c509=PNCF,0b#&LLBU)P#!BG9!:$��*"(@BB:3G1	��"&546;#";L��y}ib�v^	}gewP�RX2+�`'%".546;#";.`r1vzEA�kU�5[7ZmL�KF.a�@��"&'53265!#3!3�)#48��ZZlZd�L;F?����.�HmeU��""&'532654#"#33>32�( $vWGXXW=YaE�H'.��ba����9.)_e�MEU��
��&9�����-%267#"&5#5?3!'"'532654&+57!*5GOLP 4<�x?vSlQ.]-ZXbq<�3?D
K[7*!v{<�veFn=#Q`IIQB��a1���!"&54>7'572.##"3267I��?j?��Gp1!.W,�Sfha_2k1+h
ocCV-�CxES�CD>BHS.�#%'572.##"3267#"&546&��Kj1/R7�Fub\]2k0U����ťCv BS�DPBDOO)teem#����%#"&'5326=!53467#3�KD%
!&��O_W��WVK)./>��:u$
,����#"&'5326=!53!5467#�HL*!")��R[���VEUH'.Q>�/�:u$
+#��h� +"&'5326=!533#467#3#5>73B%
!&��O_��K��)2
X
K)./>�HK&WV�:u$
,��}%T"
7:�^ +#"&'5326=!533#%!5467##5>73�FM*!"(��R[�����')2
XJI]H'.Q>�/HH�:u$
+�T%W$
9;O~	3#!#3#�L/���@�?(���"'%#"'532654&'.54632.#"�hV^<#M+3=D7$?&aO)K%#=,75$)A%�HOH,(**%;-DM=)&#'9����&&&#.��8#2=H26?54&#"'>32#'##"&'#"&54?54#"'>326=326=`c>i[:5*L!#`4b^@#MD7T3>,P\�bp%M',^MT\5.GU
dM7+DZ#]aE C4BV^��L,*-.!(RN�}B��2;+-QI183-*KN0��L�(7#3>32#"&'732654&#"'.'3�Qb]X��k�KK�l��Nryzppyys�Q�����p�[�oo�\|j��������<@�.��y#!-82632#"&'##"&54?54#"'>32654&#"326=~,ByIo?�sEm fFX^�bp%M',^�KRQLLRRJ�T\5.GU#ONA{Y��>::>RN�}B��_oo__llh2;+-QI1����"&/!#3326533'.'�m}(	��Qb]�0G7\]Z��d�P
dj��8J%c]�2w�3�<@.��L#(3232653#'##"&'#"&54?54#"'>326=`c9=WGXF
[=@W"_<P\�bp%M',^MT\5.GU#]a�HCb`��H*(2350RN�}B��2;+-QI1}�13>73#'!3'.']�	
�]��cP��Qk�P�/=;M�6��)�<@.��#"-!'##"&54?54#"'>323>73326=�%Q?L[�bp%M',^1`c
�a���T\5.GUP/+RN�}B]a�83;V��2;+-QI1��1333##3'.'>?#aq�p]��go�u�.�,�"���A�6?��|}<@��@?Q"b.��#&1!'##"&54?54#"'>32373'3>?#'326=�%Q?L[�bp%M',^1`ct_a��0
)Y�T\5.GUP/+RN�}B]a��O;U]8�2;+-QI1�}�&#"'5326?'!#3>73.'3l#n_;*16<L��Pb]�	
�]��Q�)afR
7?4���1=;M��<@�.�#/:'##"&54?54#"'>323>73#"&'53267326=�%Q?L[�bp%M',^1`c
�a��*?0!"*)JT\5.GUe/+RN�}B]a�830h�u":#K	,*T2;+-QI1����;�&JT-��!���"&�W�o
k�53533#>?3	##
TZ^^>�i��&j�IZ&OUUO�"D"��mU@��&	
�3>?3#'##53533#�	�g��j�=WLLW��k4
���5�]AZZAak�%7'#3>?37#'ceIZZ>�i��gc)f�jrb|Q�@����"D"�ɎR2TњQU
�?'#33>?37#'�EC=WW	�g�Ih'jzjQEi6[5���s4
��`Q1R�m5
k�%7'##53533#>?37#'ceIZTTZ^^>�i��gc)f�jrb|Q�@��&OUUO�"D"�ɎR2TњQ	
�#?'##53533#3>?37#'�EC=WLLW��	�g�Ih'jzjQEi6[5�]AZZA�4
��`Q1R�m5aN�	%!!37:�lYZYNN�#P�#U�7#3�XXXX�!�#�!���
3#53533#!aKKZmm8+MRRM�%P��3##53533#�XFFXEE^@ZZ@��	�#53>323##".'"!.267!>L�id�O::N�gk�KJpr	�qpsq�-sJFb�QP�cFg�TU�f<�tt����{{���t" =3>323##".'7"!.267!H
�jd�@?�mDkB�IJ6LHLL��L�BrzzrBz�;rQ�UMMU�gaTTa��=����&4t35���#&2".54632>32#"'254&#"2654&#"*Ho>�x7U7(:A5':n�;�PKLPLON
D}V��#%F8 :$OyDjB##%��p]_mic^o��=���&446��7���"&TT�*�75332+3##5#32654&Q���5}kRddZ�[HfdXuK
nd;g@VKuu��BOED�0"+5333>32#"&'#3##5"32>54&SHNAcyyd>Q��X�RCAX1?G�AgI#0����/4;A``h\^ck6]<\n{�$"#.546;32+##32654&�+'JJT���5}kRZ�[HfdX) 
<Thnd;g@��f��BOED��#)62#"&'#.#"#.5463233>"32654�er6hJ1MX
!"LEL		I
Q)SD/;JH#��S~F&/�%#=K�J'-J_^�m_�
!�!*"&=4#"5>32;32+##32654&,RU=&�*."���5}kRZ�[HfdX^SqPG�t82hnd;g@��f��BOED	�/#+8%.=4#"5>3233>32#"&'#5&32>54#")AJ=&�4@IR;erA�d.Xs0IY(�SDCcHmPF�yPW�J'-��T�G��7^<�_=�T��(7'"#".54>327#'32654&#"pf6
o�HH�pk�Kig-�mO�({�ryzppyysq(@\�on�\[�o��#/5:+S/1�������7�d"*535467##"&546323733##5'26754&#"��Q@ay{b?P
FRRX�SEDWHFG�@D0"0����0#I��@aa�[^fiq__k=�7��(4%>54&#52#''7'"#".54>3232654&#"�ig/-##&<F59�W�$qkD
o�HH�pk�K��ryzppyysf��#1�9!!)6F5:K$�[*I,EO\�on�\[�o�������7��")64&#'2#5'7467##"&546323737>26754&#"�+)@M&�X�&�Q@ay{b?P
Fb&�jSEDWHFGD%)5F9#4.��ﺾ%�"0����0#I�R`&4�[^fiq__k-=�2##53254&+'���MD�f��x�]YlZ�ffI_��(K�J:L �2#'#532654&+'�bk<2�b�tc8@=:dXPM:K��A2.0+D9�vu�#357>54&#"'>32!533##59�6J&F84O)/*mDdt.R7�UbbUI�6TQ0:=$ <#1eY8a`6���P��'�u6" #5!57>54&#"'>323533#�S���3F.%<<0#R;LXE=g�Tbc��>�4W2%+3:'OD>a;i��I��X�3>73#'#73L9��_�Z886R�^y�N!,M##N-�6��������3'#7333>73�:5R�^]x8�r^�N����h�IF26<�����,#"'5326?.'#3>73>73� y_7)16A�
�^�ZpsZ�xZwnR
6@8�20L��P0^&#i4��5$W46�
��3"'5326?.'##33>733>73�$ 
.5
Z


X]�ZL][XJX�:I�	H@A#&,1)
	)2.����1_>2,��+[a9��[f)�,"&54632.#";#"&'532654&+57�hjdP"6#/<BM��}���=h+1k2b^jtC��]YS^@		65;:<�dffwSP?>IC����+"54632.#";'"&'532654&+57��^S$9'-<CE�Ճ��{8]&,Z.WY_kE�f�P^
=	74:.7�f\]qNE@<F>�
*�35753732+72654&+cYYZ��n�~��`KaeV[`�-H-�bWIWiddsx�?QEA��
�0�!.575373>32#"&'##4&#"326
KX��N@cyyc?PX�FJRDAXJE�I*��iIi-
"0����.  "���ee\\ckk(�73##5#53332#'2654&+�mmZYYZn�~��]dV[_�7A@@AInjcerG=RDB���0�!.##5#5333>32#"&'#4&#"326e�XMMXN@cyyc?P(FJRDAXJE[>WW>S�-
"0����.  "Kiee\\ckka�@�3>73aZ
'�e�{���`1b R,��+�U�
#3673�XX�f�	�� 801I,����(#"'532654&+532654&#"'>32�NGPT�vzO*e+RbfbTUdUL<3T*$/pD_v#FWXGem)QEFA@LB=6:  @%'^��#&4+53254&#"'>32#"&'5326x�ML�J9TM ,f>7Z6BBJQ�|:\)\[U[
�G�<@7A!)TAD\^LmyP/S����'354632+#"&'5326=#%2654&#"�VPHV\T:[U-!2.�,-% ")�4JdN@LR�g^N8C�J,&(27.����&#"&'53265#5354632+72654&#"�KV0
!!.)xxUOMP\S:7,-% ")INYG	28�G/JbKACSG*%&18)4���!"3267#"&54>32#52654&$KKDC 1:)`n9kJJqA���~L�ZKGLH
tgHn=D�i��K��r�5�#!"3267#"&54>32#52>54& HIFA/8'`n9jJq���Wr8O�gXSTKztRxB����HM��z�"�\g"3267#"&54632#52654&�//X$>HRIIVosTS4;>5d	-IEJWc_��+k~IO7�c�,"&546323.=33733##7#'#'26=4&#"dxyd>OX8CDCz�CED`
P1UEBYGGG
����.!
3�P��H��H"0I]^dkq_`jU�c��
%33##7#33+DCz�CEDtX;�H����PU�c?"+23733##7#4#"#4#"#33>323>�[Z+CDCz�CEDcmNCWnQ>XG
U0~&]"]h�뜜H��YZV��Yd^��I*)Z.,U�c"23733##7#4#"#33>W`b9CDCz�CEDqxYDXG
\"]h�뜜H��W�d^��I*)U��3.'#7#33>7�A2,	6@B?AKXFS9��S¿
^G��^14U�c�!3323733##7#'#2654&+U�Vh$9 h6CDCz�CEDL��~>E4>�QM/?#���H����-.&0�����#.2+##3267#"&5#5?335462654&#"4>KUUX�P*5GOLP 4�K32"!�G9?P�-��aD
K[7*!v{"G`�-$-4$A��*2+532654&''7.546">54&�SY/&.=vp��GO;1�9�=JaP+/66).�UL7P&9D.XfO2<2>�>�'RBGYE.*,8 '7$)1����2#".5467#52654&#"�l�HI�nm�I<=�yynssxq1g�]�nm�]]�n\�/N�p������W�H5��"�!#".5467&'72654&#"�-/�wHo>~y�U<>/)bxQJLPLOK�*gF{�?sNt�[d$;&!F�GhUPf`YRh\�1��2.#"3##33>�%

%Zh��YDg�QekfJ�/�f1?U��#2.#"3##33>L"	
 CV��XFM#SbP�E�	^179���,#".54>7.5467#5!#"2654&'_;T,sFl=;\27+���a+	GM>>,Q2T� FX=m}4bEG\5#7($
JJ<�LTL?L%*J;FP9���,7.546323!53254.">54&�;T,sFl=;\27+��M�a+	FN?=-P2S�!EX=m}4bEG\5"7)$
JJ< �SM?K&*J;GO0 !357'.54632!2654&#"R�O=�sGo@vhb� �RJKRQLL@�M/oOu�9nNjyC~JjZOP\\POZ��#!5�Z���6zPU��#3�XX�	\�;
�%3267#"&54&#"#33>32xM!!5LJOPi`ZEmMuw�]J[M4^Zyj���^26~�U��#4&#"#33>323267#"&5�;?SGXF
\5^cA(GBNHC_c��	H+'_e�PGQC\�1��2.#"#33>�%

%ZhYDg�Qek��f1?U��#2.#"#33>L"	
 CVXFM#SbP��	^177��R�5!#"3267#".54677�Z�I{v,U+(Z7g�KiN|NNM�X�MU�gp�( ���"&5467#5!#"3267-v�:6��q^kVP%D F
�yPoHHkjWeN��(�.z�����HV�&4632#"&4632#"&H$%%$$%%$�&&$  ��%%$  2���5!!52[��~GG�GGQ���7#3�9k��Q���3jk�9��a��	!#!3!3�Z�:ZlZN|��.���Q��(#"&5463233#327#"&";54&�1>??3Xgg$,/QE9#+
3<.47�g6��/1	FV.'E��4632#"&E/'&//&'/a/,,//,,a�7��!###33.533#�R��Sh}T@WQ#h7�q��@L �����U�<P"!#4#"#33>323#�<xYDXG
\3`b7RW�d^��I*)]h������Y�53>32.#"3#3267#"&'?S�iqT$!Q0k�	��	zq/T((U;��
;Lc�T*L�wLr�N�����" =3>32.#"3#3267#".'GDkB)L@���MH,CA.El@�ARg1I	�AX]
N7qY7�:�"&".54>32.#"3267#"&'532=,Go?BqH)L@�ML,C9<
0
:z_c|:I	�ag
�@EI4@U�:E�$"&'532=#4#"#33>323�
04xZCXXY4bb,9�I4FW�e^����(#)*]g��@E
�� )27.546;32+#"%2654&+32654&#EH̆�FB-I*�s�&\DS[v�_JMc� A=0Ob?S&F8ajO�;:;3�K��J<8E6�r�$13632#"&'##327#"&546732654.#"4X-1j9sl<O?NYVD+(6g|�wX?UEL'XI1,��H}O��1!H�&�sdg
F����*�ijid<[3��4��"&'5325#53!!3#/!<rr�����K�IDmMMM�M��IH��###535#5754632.#"3#=xX]]^^\R 5*,+��Q@��@�)h[E
;?#D�1���/".54675.54632373#'#'26=4&#";#"9OwB[YOKoZpNIlKkpsnOPWg)*�j
0]BG[
QESe?+`�6a*AKv}rum>2?BJ�HB+���#2".54675.54>32373#'#'26=4&#";#"�4Z7;C277S+7E)E@W.ZDKS8<AFGDH
 D53I
>,2?'K��M'0Hd]j^*'()B2,+21����)"&54675.54632'2654&'";#"B��[YOK�q�II�r|vuyQSWg)*�1S
naG[
QERf[�nm�]N����=5=AJ�0;��-��!"^J���#"&5475.=3;#"32653#'#:p��6O,[iu*�[IisYIl
g[�
*PC��XKJ�=Av}��6a*A<���%".54675.=3;#"32653#'#�3R11718S?KC8>4XFTAU
#E13FB@lf@8B2,+2d]��M'0����&32675#5!# 57>32.#"%���+D�5vF��<C[�g:k. )\0d��		��
�N���
>U�IKgYp=�_"%,67>323737#"'5326=467##"&'"%.4532654tg5UFMMu{vKOwEO6p\p
8@I%J[��H>QJ
�()G�?��st"Q*QF-	Qqg
aY6F>�7NSWak�573>?3%##^Z>�i���j�IZ>d��"D"��I=@��U@��)�?37>?37#'#5RW
�g����j�,WR��s
,&��1?+���&����"73737##77'#3.=^hɱTZZiեS^�����Ok����>��J��!~"�#h��@L ;f"?33>327##5"%54RG
\3`bMMW��XRGWE�I*)]d?��4��`[4�i�!###5753277.+27_g��Z^^�w�GAHC)[JYf�	�����
=�NN
>	Da�4)��{&U���"'733>32.#"7#5WH
R8#

)H+��XW�	b,@Q-O50?0���� �/7.54>32.#"%#"&'532654.'&'�'(:gC;b(%W/CD6C�@C�u<f"$k9PQIA
�`M79Q,M9/07;>&QD_jV>5#0)0���"+7.54632.#"7#"&'532654&'{$'oZ1U%"J'698G�s#&tb8Q [/C<3I�7+DJF# '*?8+NPP+$++
��!#!##"#.546;!3�Z��Z'+'JJT�nZM��) 
;T��.��&����=���#3"&'5326=467##".54>323732>=4&#"X?x8;|>eghR_|=E}UNeN��9N.h_bd)W�Vds2.CX�`n�P;/`�i��j(BS*8ux�}JuC��G�%!#"&54632533#4&#";G�d4>?B3$ZggZ$-MM3?.58��6�/2&;�)57'5!;��hh*hh4;44��0�uHE#'"#".54>3232654&#"HOR�rp
	Zx;;xZ[v:�DU[\TXX[Ug���J�XW�JJ�Wdxxdhsw
�373##j�IZZ>�i��@�6`"C#�7"�33!53�Z�����OO���<�7&'#"&5463233267&#"�(8B/8EA6*&Z�)!"$1G)"!&<45<���)' ��|�$23327#"./#.#"5>d#*i�`�)(0$f�`z	 �0'�_�@��(*B"I:��b�&*.C	^�J�#2+#2654&+32654&#1�~J@JQ�t�Z�VLWVw�VRV[�[Y@QOMgg����<;;8�G��GC=A��U�.�m��=����
E��:��N#
F4����'7&53537#"&'%326q=K%Z	j@=><{_;]"w��0ZaW(^?X�1'�Q )M��JwE��n.g.��C6'7&53537#'##"'%5326c58Y75.H
\4O.(�4YE&,B+F_��@@-6�-G*'�l��d���"#3#'##732654+7323'.'#)�^XX�t&	3:O;:A?V?�*�6���)*"4B9,7O��&\#&W,0��&I%7#732654+732"&54>32373#7#'2>7>54&#">&	3:O;:A?V�@Q'F`:5B CrF
"\%G:4,'B2,^)*"4B9,7O��]ZK�g<8%S��c,AI6\91/<1Ul;66����3?'73#732654+732/
UzL
�
VzM
��&	3:O;:A?V1@22��1�)*"4B9,7OII#732654+7323�&	3:O;:A?V�rXr^)*"4B9,7O��������)"&5467332673#732654+732opm\Y]EDYWcYdEt�B&	3:O;:A?V
g_2��L28@\Y�)Nr=�)*"4B9,7O7��&I,#732654+732"&5467332>?3#7#I&	3:O;:A?V�=IFYH	!%"OD1WrH3C^)*"4B9,7O��DA)G��+ %0jX��c3"���E(@%.'#3>7>73>32#"&32654&+532654&#"#-12Z�^�&L(
D9S7#(V/qu\MZ^��4_6J@>VYoc4/edP@?d)
J�SI�d�6,M#��GY�DJYdMIUXG^v���HBD>KG<6:85G��Nf+D"&'#&'#33>7>73>3232654+532654&#"}4SC)e�^r%> #F!O3Wh6/ 6!f��!!>"4G� AM=5?U!
Q|0sB��61k�7Al,2?ID19
	 4)C[I=x4
)2ZH%-&&98=�:Y�&"3267#"&'532=#".54>32.�s�{{/T(9<
0-<m�IO�nqT$!Q������@EI4DZ�pl�]*L3�:��7".=32654.'.54>32.#"#"'3267�,E'$k9PQIA[]:gC;b(%W/CDD:?W-�u:2$(
!�IA�>5#0)!`S9Q,M9/$0&5J8_j00C	&�:�"&'532=!5!5!!�
0�`x�����9�I4FD6PD�ʑ@Ea��	+32%!.#3 !�Ű��l�V��
�wua�~l���P���yr��7���#"&546323.=3#'#"!.267!dxyd>OXG
P2@F&DPRF��F
����.!
3�H"0�[ORX�fWXT[���053.54>32.#"3##"&'532654.'&'Z:gC;b(%W/CDA7�b"$�u<f"$k9PQIAOAE.9Q,M9/#0%AD2_jV>5#0)���"-753.54632.#"3##"&'532654./@oZ1U%"J'69;G�Ctb8Q [/C<95�A.DJF#"&A/ NPP+$  (��!#!5!3�Z��2ZMO.{3#5!5!#XX�����J2���73!73#'!24;44���TT��TT��#53533533##5#535#???;�;??;���:+GGGG+����C#Ef#/2#3267#"'#"&546326"34&"32654&�BK�62"32#[))YDYUJ)A'PP�'��3..43/0fOB:6.
CCWPPV" B+[)2==<?=<?=V�)33333�sK�J�K�(�(���	!!5!5!5!L��"���/O�O�63��3##".546";?�ZRk}5��^YdfH�6@g;dnMDEOBa*�3.53###33��S���Y���i9��6I���I4f q(*�)57'5!*��TTTT444��P�)33>73>73#.'#.'�bo
sY�
yY�]�
�]io�P0^&#i4��5$W55�6�20L��6g#%_0�PN�n3#NQQn��Ngn3#3#QQ�QQn��n��N/n3#3#3#QQ�QQ�QQn��n��n��(�Gn'3��nP�O(�Gn''3����nP�OBP�O(Gn'''3������nP�OBP�OBP�OC���7"&54>32'2654&#"�H['I32I('I3*-/(+,.�VD)E*(E++F)F/%$/0#%/9V�o7"&5467%'2654&#"�I[%52.\ K%5C'I3*-/(*-.VWC*?)�:I7N9+F)F/%$/0#%/�c�D�y32>54.'7#"&'�2&Yb(Q@yb7hD�_N��7>��IH�f;�c�Qy32>54.5467#"&'�my2"+"�rXg"+"L�p"	�7X39c\]3XeK?:(T_l@+^R3����4632#"&732654&#"�:./::..;1 G,77,,89*�/����(2'654&/7>7654#".546�&*&4;
'Z$
!#
#�%1#+	H	&�(����".'#"&54632>54&#"'632&(
 !&--<'�2 *// 21�,����/.'#"&54632654&'#'2654&#"'>32C'-
)+.7�#

+	*$!
 /�����$."&5467.547>54'7'3254&'w#0#%"	2'&0#")I"!
�#$$",
	
&$%&	
	
 * #	#F	���$.'#".5467323&454632*
		4!
1?
$�-//*4(>F�����7.'#"&547&54632.#">32#"323&54632/
58#7*"	7
#�.4#&  +	)#!�����#".'732654&#".546324)+@)
1.3%	/."%*5/72,l`bq#!2	*+ J�����"&546?3267|(@!e'n/=�'*+%t }-
�����)>54&/.54632'2654&#"?	}0''1"
=~�
c'..$%.���� �:2675#53##5#"'#"&'732654&'#'>54&#"'>32v

%�10
	/#/C"*0"
# !')+"UO,,��
"!>F28**
&$������"".'732654'#'654'#5!#z 4.*1'(I�,
%0�>84@,)
,,*'$$���.�0#632'>54#"#5#"&54632&#"32675#5!.�",)%1
!#78+	9
���R'&0
$&xK,,'.,+�,������!##5##".546;5#��!10U
���,��
 
H����#5#"&'.=#5!#32675*0#!
'(�
!��W	


"U,,Eo�����.'&54632>54'#53#E-G	
w�2/!/>�$C	
,,%.
1-���C.75#"&54632&#"32675##5#53.546323#3.#"E##67,	
�0-+92Cl'01���$H- �H
,,'.,���,	
&=0,�B !����##"#"&'732654&'.547>;-;#+$%9 )' %!1�	*'%7'
$��6a�9������:0�9'����*=<��:��9'����'*='����:�-�9=4632#"&%#"&'732672&'#"&54632>54&#"'>�kMHl"ED6:8�Qi<1'J:RD ,!$)5=0 7#$G%dSY^FFKC��MO7U M +h9
;+-,A
:���9M4632#"&%#"&'73267"&54632>54&''2>54&#"'>32.'�kMHl"ED6:8�%.", .(+*!-<;-# ?!M5GR.(%32.75%dSY^FFKC�<	"$@
A
<18 6!'>-+#9:�S�9C4632#"&%#"&'73267#"#"&'732654.'.547>;�kMHl"ED6:8`$)$+2QAAe5<#F1!)-(*-+9:W%dSY^FFKC��	-/"7@EQ 4=%*'49��B%2>54&#".54632#"&5467.54632.#"632&"#"6M~K.)"5:!QJHD.K-2]�Rab*/ZI4
#X,"#^>F?lE/>$ 3?S47H'M;:nX4S@-A+<@EA 	FF(&:a�-72>54&#".54632#"&54>32&"#"�MK/)!JIFG[2]�R`bG<
_>F?lE/>$""0"3GXW:nX4RA&A(FF(&�[x��373#�LWWP�0�����X'on5!X'GGh��)#".'.'732654&#".54632�ufDqm>):+,\@7XW5P=),12
XOBA9J$-_f.YB-/E
?E:N(F8)<E	H1+A1N����:HT"&'73267>=##".5463!5!5!.54632&#"3#"&'73267'"&54632Q�69,f>.7�6&"�I�ZH 4"-(0kg%`VC]@715-D[HEE:007GCb6*<�G3VW	E/@0G��LT!�RXB@E>^Lh���H8�&��3�g���,.#"#".'732632654&/.=7�+60B($
  0%
 7.F$)1g-25085 
35,31��[
7>32#.#"zGSy5YB4`�MCGI)/)/��Y"$+2"&'#53>323733#3267#"&'#"!.265!`w46	v\>OFEE &2P2?E&ENUE��G
��>ux.!E�>�@	$."0�XLOU�f][X`.��O#)4;"&54?54#"'>32>32.#"!#"&''26=265!�M_�an%L'+^1|(bD5R*.N2QXrqhBj#c;DRNR[5�D@��P
RN�%w@],1Hc[4o�><==FQI12;+-^FQS:����&'7.=46?33267'7654/�$E-	�`�",' �dF


%E<� r�	�$
�yJm��3#!'73454>32!!!3267#"&'#"!.2:lLdr����cV@1O.*R5g�9$k 

=�

VFzo7@@Hg`"m/>���".574632>32!3267#".'.#"327#"&"!.SD0
~_Ec5��YP3O*)P7KrC*%0##$	DC�?I>�=Gly<mI5[_M<tV  #
BDTQHDU
<��###5354632.#"3L�Xcc\R 5*,+��h�Gh[E
;? 5�
#+9E%.''.546326=467##"&54>32373"32>=4&267.#")
<
M;W^WN7Y
V8eq1aHm9
K�KJJH9CAk3?J/2,4TA+
:799!$%!&,*�{MxDSIAcXZb-O4Ua�y#����2!#.#"#"&54632332654&'&5432#"&'�X
!
3H.
X

2?3
�#D9<9
��"
B88?z�7.#"#>325.#"#>325332673#"'32673#"'#�
3<-
3<-X

3;,

3;,X$>C
p	%>D
��$@B
o	 #@B�j�3#5.546753'54&'>�X6DE5X6CD5�%$�$$�
U=<T��
V:<U
�#7
�7##6
�7U���#/9"&546754&#"#4#"#33>323>32&''26="�1@IP56ICXkKAXET0|'X4Y[2;M8#
753={FBXY��Z_c��H))Y,-]g�
6OT=&.!U��g#!+"&546754&#"#33>32&''26="�1@IP9=XFXF
\<Ya2<L8"
753=xHCb`��H*(_e�
6OT=&.!U�V#%0&'#"&546324&#"#33>32%3267&#"B08EB6)':<XFXF
[<Ya(��*!#�)"!&<45<tFAb`��H*(_e�{#2Ga!)),����)#.'5>=4&'732>54&'.K&2N)1K,	�-,+&
�+"C(+OR.%�)�� :%.J$,���"+67#.''7&'5>=4&'77.'.4&'32>K	<%H&2N)/#,%%	�-_W
t)*�	\n"C(+OR.C9%�)�$�,� :-��/ (7.#"5>327#"''7.'%4'326z�.(F E.Q7'3* �wK7'3)��#5PK�0-N(4%8$c>��&5%85aF1��p6~,!-4%"&'#"&54>32>32.#"!%2654&#"265!�=_d?r�?mFBf hD5N((M5MSdt�OIHNOHF�A<��F9568��Z|A8787MZ`5m�IghdfiedgSEJNC���+)19@"&=!.#"5>32>327#"''7&'&#"2654'267!etdSM4N()M5DifBO:!4'�rD3'4+^��$;NH�OF� ��<F��<�m5`ZM7878(/#8#b>�� 8#>59[29f��gdJ/��NJESC���$!(/6"&=!.#"5>32>32#"&'"!.267!267!etdSM4N()M5DifBFm?�r?d^>GI+HFIF��I��<F��<�m5`ZM7878A|Z��8659�VTTV�gWVWVNJES5��v#%1".54632&#"3267&54632#"'72654&#"-Lo=�u,&IPNR$=!�xMm;�wgA@�PKLPLOK
G}R��Gjc^nBZ��D}U��??Jp]_mic^o5��v9.7@".54632&#"3267&546327#"''7&'&#"2654&'-Lo=�u,&IPNR$=!�x5,7-0�w8.7@N�$LO�PK�
G}R��Gjc^nBZ��'($uM��'*?/MVi��p]2N��P7#546753#54&#"�XbXXZcXFIIGvvz_f
��	f`zvHDDW�]'3267#"&=4&+#32#32654&�B'GC?HQX�bi6//2�cd9>>VPGQC�MJ�NM7CPG��2.0+U3#33>73>HXF>1�bI��^,4UB#2&#"&#"#33>32>"
-7!:!:#XFI,&A#S
,O4��^53/!���# *2.#".'#"&546733>"3265�"	
 CV2:E1@IOFM�8"#SbPM
6	OT753=C^17�x!&.���#,62&#"&#".'#"&546733>32>"3265F"
-7!:!:#2:E1@IOFI,&@�t8"#S
,O4M
6	OT753=C^53/ �x!&.c#3267##"&'VR!W.X"+T)#

���

��_#&"&5#"&'5326763274&#"326�Sc"+T)VR!W.)91J))L)4))45('6
hX

F

��++J-0L,�)79)(97��f�7#"&'5325432.#"�CI&B�&
B�BTGPڔGPP��#'##"&53326=F
[=YaX9=WGG��H*(`d_��HCb`E��d353!533##'##"&=#3267!LXXPPF
[=YaL�9=NI����((B�H*(`d#HCONP��F#.2#"&546"&53326=332653#'##"'#��ZZX47ICXkKAXFT0|'X#  ��]g_��FBXYq�_c��H(*X+-T��J#".2#4&#"#54#"#33>323>"&54632�ZZX47ICXkKAXFS0|'W�#]g��QFBXYq�_c��H))X,,����Q#732653#'##"&=4&#"5632�9=WGXF\<Ya! !,>G�HCb`��H*(`d�*&B
JI���J����x !-"&/#'.#"5>323>3274&#"326�<FH�^�]
 1-N�\�Q4";HF%#$%�FP�����"D1.�$���H6:J�$$$#��) .5332>?'.#"5>3233267#"&/#8}a
1,O�\�]&!
':;AY&.%�O	#'�"D0/�'���+8D
JF��2<��i""&/#373>3274&#"326�-:j�c��e��c�H4%7CA""""
)�����fC36Ez!"#"��373#'#Թd��c��e���c������<��j"373>32#"&/	4&#"326�U�d��c�I4%7CA:-;g��J""""�����fC36E)��<`!"#"�y�5332>7373#'#�8
׼e��c��e��+-"�O%#Y
�������.=P�"#"&'5326=467##"&53326=3t{:b*,g9JF7zYaX9=WGXoyROG	*U`d_��HCb`V����
#"&'33267#.#"#>32�QHJK62.'9779'.26KJHQ�<JI=)'��')>HJ7�]� %"'5326=4#"#33632
M8/99#P:?-�+�Q;:��}"49=��)3���.#.#"#"&546325332654&'&5432#"'�9		"/9!)!		)"$"��

'""%��.#"#>325332673#"'#^
!%9 %
9�#)��#*��g326=3#'##"&=4#"5632�M8.9-	;':?+	
).�T;:���+:<0',,Up332+!#!254&+�X�h\fn��Xm�x=:��QIOW�3�,_2'�S��"#2!3267#"&'##33>"!.&Ec5��YP3O*)P7n��XX�~_?I>"<mI5[_M�}��m{HQHDU.��(#.52>32!3267#"&'#"&'73254&#"5>"!.�Bi b>Ec5��YP3O*)P7Fn!!lC(M@�ML+DA�?I>#2414<mI5[_M4351I	�ag
NIQHDUO���#)632#"&'#"&53326532654&#">bMn:�xElbNgcX:FCQ[KQPKLPLO)3E}T�?84Cad^��IEYa ��^rs]^qk7��Y"*23>32.#"#'##"&546"326=4&?P2& FO>dyxrHGGGYBE"/#/#@�^E!.����Ij`_qkd^]+8#!"#53.54>323#5>54&2OWA:܆5?9mOOl9?5��;AW�dS\wAA"y[Cj??jC[y"AAw\Sd7�:��'47"&546323.=3!!3267#"&=!'#'26=4&#"!dxyd>OX���#0
<9��
P1UEBYGGG9��
����.!
3��B�n�4IE@AH"0I]^dkq_`j��9��5I3".5#5?3!>32.#"+3267#".=72654.'.5467#3�*G,LM#4*1U%"J'69<43H&tb<$(
!,E'�C<954J(	�/%HA.*#r{F#(9+NF00C	IA H $  (8, ��1/���,32673#"&'#'##"&'732>=&#"#>3253H	32)H
S8"
 
*G+21*X3;E�b,@Q-Q6!;E��`!3>?3#'.'##'.'##3�
	>A`;0
>><
1;aC�./����64��05�A<���353#5#<d<<d>H�HP���##53�d<<>BH�H����&KKX��
�&KNX���&KQX��e�&K'KXN���]�&K'KXQ�U����'".5#575.#"#4>323#32671*G,LM?'<6X5[:Mj��/%*
4
HA8*#`=6��ABS'91{D��1/C	3��2�R"&'532654.'.54632&54>323#3267#".5#575.#".#"�8Q [/C<954J(oZ&$.L.GX��/%*
4*G,LM
.!+.
"J'69<24I&t
P+$  (8,DJ 6G$90{D��1/C	HA8*#`4(.F#)9+NP�|K
>;#"�|"t�Vj�)KCR'A:A��K�
2#.+5W�t"F)�k'RCA:A�_�
.#"#>322g9<93]H8f2~!D<`��
32673#"&'2g9<93]G9f2�!C=���$!5$��AA���!5��AA���Y!!����NA�w���
3;#".�wF)�jV�tB@;A'S������
+53267�"t�Wk�)BBS'A;@���������� ���
32673#"&'2g9<93]H8f2!C=���$�C!5$�׽AA���C!5�׽AA���Y�C!!����N�A�f��	#"543!</9^�34A���-	5!632#�9)/"�A&2)�E��+;JV^bfosw}����53#%53#5!53353353#53#53#"&5463272+"'5326=3%32654&#"2654+#53#5332654&##53#53533!5353!53!53353)�^֔5�d�;�:��55��66G>BB>>BB>}575.e	
=6�� "##" G+�T66j55�B$�55��6666^x_5������;�Q�6^^6�^666666�㄄��BQQBCPPL ) "',��2��1.�-33--33?���6K�򄄄���_55_�555555)�d��+	467>54&#">32332654&#"��5�6�!++\P*X"(!>!%!gt())(��6�6�d#=1CJW#7'�##%b�Bv�#"&'532>54&#"#33>32�%&/LZHQ!ZG?K%q�l�L1+�[P5`?�N�\.tz� d`��a�B��[��o�%"&=3326=4&#"#33>32b��ZYY\RLZHQ!ZG?K%q�:w
�w

W`gQ�[P5`?Jb\.tz�JwE.Zb�	#/>73#"&'332673"&546323"&54632�W410FI70*#6	9Q��L,
5pF7!7Fw.Zb�	#/#.'5#"&'332672#"&54632#"&546�14QDFI70*#6	���,5
b7FF7!�4Z\�	
%#5>73!52#"&54632#"&546*41W2��7��5,�GGf4Z\�	
%.'535!"&546323"&54632�4W�(��A5
,eGG���a���&1|���a���&3|���$~�&&����a�$��&*����(�$*�&.�/��Z�$��&:��a��33aZ�6��a��_�&���Z#�&�x2�����*�&���������8�&���������8�&����������&�������&�l�n���
"&>73#"&546323"&546323V9i2:;(��Z�G"
21}���6��\��&��4���Z�P��&�����
��&�E���G��#'>54&#"56323�.#6$+%
%<B�Z&)5U4,�R�6����*�&��������#W&�������<�$��&����<�$��&������G�&���������HF�&��������B�"&'532>53�#55-ZfL
2-��gb������&�D���a��N�&1��a��:�&3���#���&Q|��U�"&S|�.�$�!.9"&5467#"&546?54&#"'>32#'#3267326=-52I`~�[:5*L!#`4b^@+--dM7+DZ�2,=MRPW C4BV^��L*F)-8�83-*KN0��7�$"&J��O�$&"&5467"#"&5332653#'#3267D52"abYwYEXH
$//-�2,<]f_���d^��G!$@!-8J�<33JX<���E&
��k�����&
��P���� &
��O�����&
��O��B��&
�������&
��U��J��<&#�����
�&
��X���$�<&
�����0�&
��Q��<"&'532653w,)).)WV		I34��p_V�����&#
��>13#'#.'3�c�`9�<�8�>�£��0.���&%
����&%�F$��"&%�;$���&%
����&%
�����&%�M$���$>&%�8��U&%�v$���&%&
��
����&%�+$���<%##!#3#3!#3[�Ea�������'r���<G�F�G������&0
�]J�<2+2654+254&+�sh<18As_ŸA8�Yj}@Dc<JG4@	
=?RS<�-,V���e,2�.���D"3267#".54>32.FZb]^%E!?YYv;C}VXKB�wegu
MJ�XV�K$G��.���&3
�-��.���"&3�g$��.��D&3|���.���"&3�i$��.����&3
��J<+324&+32������[fbSH�%��<��hi�V<35#5332#5254&+3#J>>������fbShh�A����I�hi�A���J"&9�P$��<:J�<!#3#3!JH����<G�F�G��J�&=
����J�&=�-$��H�"&=� $��J�"&=�"$��J��&=
����J�&=��$��D�&=
����J��&=�4$��J�$�<&=�{J�<	!#3##JG���W<G�G�/��C%#"&54>32&#"3275#53+g9��D�aeLFNejhd=-����V�L#G!zbmp�G��/��&H�}$��/��"&H�r$/�#C'%#"&54>32&#"3275#53#5>73+g9��D�aeLFNejhd=-��!0W��V�L#G!zbmp�G��7859��/���&H
��J<#!#3!5W��WW<����<��S<##!##5353!5335!SFW��WFFWWF�����[��?XXXX�__��J"&M�]$%�<357'53%AA�AA2�44�I2��%*&P
������-&P��$����="&P��$�� �&P
��k��%�&P�9$�����&P
��q��%�b�<&P[#����&�&P��$��%�$�<&P�����J&P��$���b�<"'532653,.)WV�
D34-��_V�����b#"&[��$J�<3>?3##JX
�d��e�@X<��"���3�J�#�<3>?3###5>73JX
�d��e�@X!0W<��"���3�F7859J�<!!����<�
I<��J�&_
��qJ�<!!#5>73����Y0
W<�
I<
6957J�#�<!!#5>73�����!0W<�
I<�~7859��J�<&_�����<
%!5'737���3%XWv&�II�";7�M:c�J�<#4>7####33�R�L�Oy��<��g1*
� �
+2��<�0�J$<###33.5$k��Ok!<���Q ��<�2N#H��J$&f
�-��J$"&f�p$J�#$<###33.5#5>73$k��Ok!_!0W<���Q ��<�2N#H�~7859J�b$<%#"'53267##33.53$WM-(*��Oi#O_V
D),�Q ��<�HO#1��J$&f�Y$0��HE#".54>3232654&#"H:v[Zx;;xZ[v:�DU[\TXX[UX�JJ�XW�JJ�Wdxxdhsw��0��H&l
�1��0��H&l�x$��0��H"&l�n$��0��H�&l
���0��H&l
���0��H"&l��$��0��H�&l��$0��HT!*#"''7.54>327&#"4&'326H:v[U:"0#(';xZ,I&/'&%�D�)<[Wb�%=]UX�J#1"1'sIW�J48&qG.LUxc/H��y��0��H&t
�3��0��H&l�]$0���C%2!#3#3!#".54>"3267.7.5�����-Vu;;uZXVUX%
%CG�G�GJ�XW�IIufhu�J�<
2+#2654&+�kjplGW�AK>AK<XTUb�<��.=55�J�<+#3322654&+�plGWWNkj�AK>AK"Ubk<nX�.=55�0�xHE#'#".54>3232654&#"HMU�vlZx;;xZ[v:�FT[]SWX[Ud���J�XW�JJ�WdyxehsxJ�<2#'##2654&+��6;�c�gW�;BDAG<�7P���<��047-���J�&{
����J�"&{�2$J�#�<!2#'##2654&+#5>73��6;�c�gW�;BDAG�!0W<�7P���<��047-��7859)���D'%#"&'532654&'.54>32.#"�nb7P"M\5BCAHN4Y8/S#$G 1;;)-F'�J\P$-*++FE2E$E*'$(;��)���&
����)���"&�$��)��D&|p��)���"&� $)�#�D'3%#"&'532654&'.54>32.#"#5>73�nb7P"M\5BCAHN4Y8/S#$G 1;;)-F'�!0W�J\P$-*++FE2E$E*'$(;��7859E��,D$#"'532654&+57.#"#4632}^QmbT6B%7F?Yn
6*>CXrfWb=TGJ[L0-248~ $MJ��hhsKF�<###5��W�<K��K�<#3##5#535#5��ssWss�<K�C��C�K���"&��$����<&�|q�#�<###5#5>73��W�!0W<K��K�~7859E��<%#"&5332653xpmuXIFDGX�gushi��IMMGg��E��&�
� ��E��&��g$��E��"&��\$��E���&�
���E��&�
�
��E��"&���$��E���&��n$E�$<$3267#"&5467#"&5332653p-52.!(muXIFDGXF-,t-82,$Cshi��IMMGg��p:;E��E��U&���$��E��&��L$�<33>73��`|
|a�<��#28v���<.'#3>73>73#�
b_�VV	
[U]	
]U�_k ;9��<��#PC(Y��"H,*
n�����&�
�x���"&���$����&�
�\���&�
�b�<7#373#��b��`��a��d��'�����<#53�Y�`��<����b�����&�
�����"&��$����&�
�����&�
���<	35!5!!/�����78�I9�FI���&�
�����"&��!$���&���$2J��!!2�6�Z��a������&�l�n�����B���a���6��&�*#".5467.54>732654&h�O?2cj�qGp?dY!8!O���)M1QIMRO� 0w^r|5hKZv$1#4B(
��
,O@HVWMJV��a�����a������f��&�B�>����&�l�n�?z�3?;��T��"&'532653X"
#(:B	.)>��>;��"��#����Ih#�2��/�#���'�S�#�
���X#����0�S�����(������� �]����%��������"�T�#��6��#
".54632'254#"$Pj4{vPi5yw���J
G~S~�F|S�J���dj6#!#467'736Y	 c+�J>'K
I;�,�#)57>54&#"'>32!��6�4?;>)T).3oA\g#C1�?G�%1/ ,4 "=,%UI-D<"e�S�#(#"&'532654&+532>54&#"'632ƋSN�v?Y'$^4SYg[=>0O0H53I+(V~\uw� 
RJdoOJD>:J9048<E[�X(#
%##5!533'467#3(mV��IZm�����:�5�,M)
1 ��;�S2#"&'532654&#"'!!6k��}7_#/]/Q_\RD!(j��?ghqrPHLGG		UN�8���'462.#"3>32#".2654&#&8��,.� Y4dnxlQm6�CKGB(H,%D/��I��./thm�P��URFO&=#,U6�]�!5!s����nM8�}1��
�(42#"&54>7.54>">54&32654&'^x%>%,H+ks|)D'4I8`<7G#<$4GF�JMIMPVBE�XS+@15F1Zie[1H4UB7K(G52%2#>625�(4EE73E!I/�T#(%#"&'53267##"&54>32'"32>54.��03t�VAam7gFq��DJGC(F-"C���I��2.qgHk<�RVLHM!<(-R37���
#"&54>3232654&#"0hVys/hUxv�~CQPEEPQCfs�Xít�W���������#�467'73#�L.�IV�+4>;��6&��357>54&#"'>32!&�6J&F84O)/*mDdt.R7�iI�6TQ0;=$ ;#1eY8b_6�P-���*#"&'532654&+532654&#"'>32�PDVT:y_8`,-h0`Ui_EFX[F<:R(,&qHpm#HU
XG>a6RKBC;KJ=49"<,d(�
!5!533#467#!k��P[hhU
 ��K�#O��4M2��?���2#"&'532654&#"'!!>n��~7a!$g/OaV]H,f��:�ndoSKOFK
QP�7��
�,4>32.#"3>32#".2654&#"7G�e3-E\5R@]r{hDnA�?NEE/F'"D1M�yHK.Ph;#1qhp�D��QUDP'< +U7��3!5!d%���zPD�z:���(5"&54>7.54>32>54&#"2654&/)s|)D'4I8`=^x%>%,H+j4GF:7G#<!IMRDBEJ
e[1H4UB7K(XS+@15F1Zi�>62552%2#��E74EI74E2���,#"&'532>7##"&54>32'"32>54.G�e5'1F[6SA\q9fEDn@�>OCF0F'"D�M�yHK
.Oi:"1qgKl:E��RTDO&< +T81���
#"&54>32&#"4'3260hVys/hUxv�~"\QC)��?3PEfs�Xít�W��,$e��7+��::�����J���`��%��}�`��3�v�`����A�w�`��
U���`����@���`����L���`��C���`����E���`����I���`��J���~��%��}�~��3�v�~��A�w�~��
U���~��@���~��L���~��C���~��E���~��I���~���B
74673#.<:N;99:M;;�e�FJ�`^�LD����B
7#>54&'3�<;L:77;M>9�d�CL�^`�JI��>26=467"&=4&',2I^+1',*)1+^I5)�$%z>=A$s.21/v#@:Bv'$� >%#5>=4675.=4&'523 )4K],0*))*1+\L2+�$'vB:@#v/1/1s#A>>z&#<��B3#3#<�kk�B>��=��B#53#53�k��k>�==5���<3#4632#"&9aC<�m}6�u��#"&54632#3�aC����
��ZD'7467>54&#"'>32#4632#"&t+#!	4):E)L.PZ21!D�,=$!&'#=JC4E!*+}�ld�'#"&54632327#"&5467>=3,#!	4):E(M.O[21!D��,<%!&'#=JC5D!*+��5��f<'���*��'57�ff;��a��!��*��?'7hh;��K��"�
�]���#2.#"3##"&'53265#57546� 4)+)��WP# *(iiX�D.>ED�*aOI,;�)AhN�R�5!!5!		#!'!�����6��=��K���9�U�N�77���?���w�:>N��!#533�����BnB�-�PN��	!'#5353�����BĪB���PN��	!5#533�����B��B��K�PN��	!#5353�����BbB��P1�373��?�C�� �P��373#��=��BB�� �P���3733��?�sB���n�P��	3753#��>��BB���?�P���	3773#5��>��BB���z��P���	3753#��>��BB���0�P@"1�3'753��,�CĻ1���P&��!'773���-��BU��/���P"��!'73���,�nBƸ2���P(��	!#'7353���0��Bɳ/���P&��	!5'73���(�kBsK�4����P&��!73���.:B^.��2�P1�3573��<�Cw!�x��P��!73���<��B�x �x��P��!'73���>�hB���iS�P��	!753���>��B���},W�P��	!5#733���;��B���7�P��	!773���<��B$��I�1�P1�373��8�C$i#��
�P��!73���4��B/��i&��
�P#��!73���:1B�!��&�P��	!7753���4��BƤi%���P��	!5'73���:�yB��]"��y�P'��	!#733���8��BFG#��(�P1�3'3#S?�CC��P���3'3##V?��Bs��Pn��3'3#K=�BB��� �P���	3'53#'X>ԠBB�����P�z��	!5'3���>�Br���w��P��	3'3#'X>ԠBB�����P�N��3533#N��BB�Bn�P�-N��	35353#N��BB�Bf�P��vN��	35373#5N��BB�B��P��N��	35353#N��BB�Bq��P��1�3'53#N<�CCRF�P���3'73#U>נBBh���PSi��3'3#N<ܠBB� �x�P���	3'353##N;զBBw��P���	3'3#5P>�BB�����Pa-��	3'3#'N<٣BB��$�P1�"1�3'73#5N,�CC1��P�"��3'73#N,éBBn2��P��&��!''73���-ȠB��/��U�P&��	3'753#N(ȠBBk4�Ks�P��(��	!5#'733���0��B��/��P&��!'3���.hB2��.^�P1�3'3#N8�CC#i$�P
#��3'3#]:kBB!��P&��3'3#N4ҢBB�&i��/�P
��	3'753#P:˭BBy"]���P�y��	3'3#5'N4ҢBB�%i��P��'��	3'33##_8��BB�#e(�PF%1�3'73�.�CS�3��P'��!#'73���/��n�0��P.��!'73���'ɗB7q2��*�P%��	!''753���-ɠB���2����P%��	!5'73���)ɠBr�x3��s��P%��	!'73���*ɠB9�3����P1�373��>�Cv�G�P��373#��=��BBu�C�P���3733��>�mBv��n�P��	3753#��=��BBu�9�?�P���	3773#5��>��BBv��z��P���	3753#��>��BBv�!0�P@N��!#5373�}æ�BTnB��PN��!#533����vB�B���PN��	!5#533�����B�OB����PN��	!'#533�����B-�B�#�P1�3573��:�C������P��!73���9��B�|�#����P��!'73���:�mB���xcS�P��	!753���9��B���"��@X�P��	!5#733���:��B�����P��	!773���:��B2������P%1�3'73��.�C+�1�&�P'��!'73���/��B/���0�$�P%��!'73���-�jB2�1�� �P%��	!'7753���/��B͠�/����P%��!573���.;B�i1����P"��	!#'733�Ȥ0��BF�-�(�P"1�3'3�<�C���P#��!#'3�t�;��n�9�P"��!'3���<̠B�� �P"��	!''53���<ɣB���p�P"��	!5'3���<̠BM����[��P"��	!''3���<̠B*���P'1�3'73��-�C�3�S�P%��3'73#��-}�BB�2s9�P�'��3'733��-��B�3�n�P%��	3'753#��-��BB�2y�^�P�%��	3'773#5��-��BB�2����P�%��	3'73#��-��BB�2�8�P1�3'53�:�C���N�P?��!'73�m�:��BSc��T��P��!'3���9ҠB���#��U��P?��	!#'353�r�:��B�c��P��	!5'3���9ҠBXo��#�����P��	!''3���9ҠB%��#���PN��!#533�kե�B��B�PN��!'#533�����B�B�N�PN��	!#5353�uˣ�B��B0��PN��	!#5373�����BB�B��P%1�3'73�.�CB�1��PG��!'73�j�,��B ɰ0�2�PG��!'73��l.��By1���1�PG��!'53���,GB��0ip�PG��	!5''73��},��B���0����PG��	!#'733���,��BF�0�(�P31�3'3�6�C2�%6�P%��!#'3���6��n��$6�P%��!'3���6җB�$6�*�P%��	!''53���6ɠB���$6���P%��	!5'3���6ɠBr��$6�s��P%��	!'3���6ɠB#�$6���P1�373��7�Cd%��0�P��373#��7��BBd%��P���3733��7�{Bd%��n�P��	3753#��6��BBd%��r�P�����	773#5��7��BBe%����P���	373#��6��BBd%���P%1�3'753�.�Cٜ2�x�P%��!'3���&iBY��26�P%��!'73��p2��BЊ-�\�P"��	!#'7353���0��B�-ň�P%��	!5'73���*ɠB�9�3�����P%��	!''73���-ɠB9��2���P-1�35'73�-�C��2���P*��!'73���.��B���.|��P*��!73���.6BX.��T�P*��	!'753���.��B���.�5v�P*��	!5#'733���0��B��-��P+��	!'773���-��B/��2��&�PN��!#533�qϧ�B �B(�PN��!#533�����BFB� �PN��	!#53753�vʯ�B�|B���PN��	!5'#533�����B��B��P)��WC*4"&5467.54632673#'>54&#"267'�YfA=##UIEQA7�'U
-rm?&VA)0)!$)!)C�'4?UI;K!!>(;DA=1F�3L4]#o?"%e0"#$ 0���/,.4����4632#"&74632#"&���Q���"&54632��tu^.'53@;q+.u8877�r�#5>73�29:#"j9947�u!
>73#7>73#�9g686�9g696�P,83P,83~r�#&'#5>7\@#:;487;,+
P&/:=,58~r�#.'53673�-*
h@#;86::67 P&
4<,�p��
#"&'33267�SGIQ86,)7�BKJC-+�Y�7#"&546324&#"326�A24@@42A7""!"�4<<33<<3    nt��#".#"#>323267�>,'$"4>.'$#�BB!#AC""�z��!!�0���E�$�3267#"&54>7Y-52+0""t-82,6, 5������:s��U�����������$�&������"&'53265#53533#&  *KKXKKH�G#1KG��G��KU����"&546;33#'26=#"(<K@I+XKK%;*&#�B47C��HBIH$+���pa7"&'532653	

9/�+t��-3������7��p�#3p99`BU�:;33267#"&=#�,
#1@5�1�#E=J?�a##5#5353�19119�*��*������a7"&546;33#'26=#"'1*/9112'
�' !(B��+<)+
����H8&������P�P�&���
�3#5#53533#�XKKXKK�G��G7pa#p9a��B ?33'3# q�rnC\C��1��o�?"&'7326737>7#A(.
��y%?]47
iB�	5#/�� JC*MA<���p�"&'532653	9.�+t��-3������&&N��
����&&7&O��N���
����&&A&���N���
����'&�&O��'{���Ny��
����'&�&���'{���Ny��
����'&�&O��'B���Ne��
����'&�&���'B���Ne��
����'&-'OS�$&���N���
����'&.'�/�#&���N���a���&-N���
����'-�&O��N{��
����'-�&���N���
��t�'-Y&O��'{���N>��
��t�'-Y&���'{���N>��
��`�'-E&O��'B���N*��
��`�'-E&���'B���N*��
����'-�'OS�$&���Nq��
����'-�'�/�#&���Nr�����&dN���
��q�&dn&O��N;��
��{�&dx&���NE��
��4�'d1&O��'{���N���
��4�'d1&���'{���N���
�� �'d&O��'B���N���
�� �'d&���'B���N���
��g�'dd'OS�$&���N1��
��h�'de'�/�#&���N2����B���
Q�'��O���
[�'������
�'�Y&O��{����
�'�Y&���{����
�'�E&O��B����
�'�E&���B����
G�'��'OS�$���
H�'��'�/�#���
s�'��{���
_�'��B��7��Y�'EQ'>54&#"5>32'53#"&'33267"&546323733267#"&'#'26=4&#"�(
,3+�_j0QHJK62.'9v`zwg8T
F %1S*SECVIG�8#)#0�
�<JI=)'�����.%I�^@	$.$.I_gdjke�7��Y�'EQ'>54&#"5>32573#"&'33267"&546323733267#"&'#'26=4&#"�(
,3+@0j_AQHJK62.'9v`zwg8T
F %1S*SECVIG�8#)#0�
�<IH=)'�����.%I�^@	$.$.I_gdjke�7��Y�'EQ.54632.#"'53#"&'33267"&546323733267#"&'#'26=4&#"�+4+
�_j0	QHJK62.'9v`zwg8T
F %1S*SECVIG�0#)#8�
�<JI=)'�����.%I�^@	$.$.I_gdjke�7��Y�'EQ.54632.#"573#"&'33267"&546323733267#"&'#'26=4&#"�+4+
10j_JQHJK62.'9v`zwg8T
F %1S*SECVIG�0#)#8�
�<JH>*'�����.%I�^@	$.$.I_gdjke���7��Yi&l&�f&OH^{�^��7��Yi&l&�f&Oh^B
^��7��Yi&l&�f&�0^{�^��7��Yi&l&�f&�O^B^����6�&t�����6�&t�����6�&t������6�&t����6�'7'>54&#"5>32'53#"&'33267"&533267#(
,3+�_j0QHJK62.'9OHX* 
&�8#)#0�
�<JI=)'�UK��{1#G��?�'7'>54&#"5>32573#"&'33267"&533267H(
,3+@0j_AQHJK62.'9OHX* 
&�8#)#0�
�<IH=)'�UK��{1#G���6�'7.54632.#"'53#"&'33267"&533267%+4+
�_j0	QHJK62.'9OHX* 
&�0#)#8�
�<JI=)'�UK��{1#G��6�'7.54632.#"573#"&'33267"&533267C+4+
10j_JQHJK62.'9OHX* 
&�0#)#8�
�<JH>*'�UK��{1#G�����6i&t&��&O�^{L^����6i&t&��&O�^Bm^�����6i&t&��&��^{X^����9i&t&��&��^Bw^��O���&��R��O���&��R��O���&��RO���'@'>54&#"5>32'53#"&'33267".5332654&'3�(
,3+�_j0QHJK62.'9xCQ)X53HOX��8#)#0�
�<JI=)'�#AY6/��9M(rxFn<;oJ��O���'@'>54&#"5>32573#"&'33267".5332654&'3�(
,3+@0j_AQHJK62.'9xCQ)X53HOX��8#)#0�
�<IH=)'�#AY6/��9M(rxFn<;oJ��O���'@.54632.#"'53#"&'33267".5332654&'3�+4+
�_j0	QHJK62.'9xCQ)X53HOX��0#)#8�
�<JI=)'�#AY6/��9M(rxFn<;oJ��O���'@.54632.#"573#"&'33267".5332654&'3�+4+
10j_JQHJK62.'9xCQ)X53HOX��0#)#8�
�<JH>*'�#AY6/��9M(rxFn<;oJ����O��i&�&�q&OS^{�^��O��i&�&�q&Os^B^��O��i&�&�q&�;^{^��O��i&�&�q&�Z^B^A��6�$1".54>32">54.4&'326;;]@"/O_09Z5!4u<p>=4"as;!3v1+*rL%F5SN
"S�p|�V!%K;'_+*�Do@�=ye	*8<(/�18K 	hm)a7��"*5.54>74632>54&#":JuD7';-0/N.UI>X0K{H3R0<0"��:xb6hV2zFIW(4[TAoEk�A�/3eP^O,*��>%��J�<2J}<3!#J3�<G�>353%!.'�c�l.w	3��6IC0.��J�<=���<���J<M0��HE".54>32'2654&#"'53=Zx;;xZ[v::v\\TXX[UU�J�XW�JJ�WX�JKxdhswddx�NN��%�<P��J�<]�>13#.'�c�`�
�>���0.�u��J�<e��J$<f-�<5!5!5!Bc������GG�FF��GG��0��HElJ<3!#!J�W��<���
��J�<x���<
��<357'5!#*'26;����?��&G(�;��<H��I���<����<�0�<%!5.54>753'>54&'5Of9/rdWer.:fMWaKR�[OK_H*BM%9c@77>d:'MB(H�7SCFVWEDR���<�Ep<!5.=3332>=3/m}W%B,W,B%Wuu�vw��?J]��J?��wv�0TD%353.54>323#5>54.#"0w.E?yUXx>C/w�-6&N><N%6,I!pYO{GGzOZp!ID)FM2:Z44Z:2LG)D��%�<P�� �&P
��k�� �&P
��k���<�����&�
������&�
����0��HEl��0TD
���>%��J�<=��J<MJ�@�<"&'53267#3>?3=c#T3EY�@XX
�d��(�	=3B3�<��"������>%��>%��>%��>%��>%��>%��>%��>%��>%��>%��>%��>%��>%���>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<���J�<=��J�<=��J�<=��J�<=��J�<=��J�<=��J�<=��J�<=��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P�� �&P
��k�� �&P
��k�� �&P
��k��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��J�<x��J�<x���<����<����<����<����<����<����<����<����<����<����<����<����<�����&�
������&�
������&�
����0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���%,&PBU$�� �&P
��k��e,&PC�s$���,&�B�$����&�
�����,&�C�$��0��H,&lB�$��0T,&
�B$��,&%B�$��J�,&=B�$��J,&MB�$��/&%O�$��/&%�p$��/&%&O7${�$��/&%&�${�$��/&%&O@$B�$��/&%&�$B�$���&%'O�$�*��&%&�x$�+���,&%{b$��,&%B�$��'&%�+H���&%
�����&%
�����>&%<����,&%&{b$<����,&%'B�$<����/&%'O�$<����/&%&�p$<����/&%&O7$'{�$<����/&%&�$'{�$<����/&%&O@$'B�$<����/&%&�$'B�$<�����&%'O�$'�*�<�����&%&�x$'�+�<����'&%&�+H<���J�/&=O�$��J�/&=�W$��G�/&=&O${�$��F�/&=&��${�$��J�/&=&O'$B�$��J�/&=&�$B�$��J�,&={I$��J�,&=B�$��J/&MO�$��J/&M��$��J/&M&OY${�$��J/&M&�5${�$��J/&M&Ob$B$��J/&M&�?$B$��J�&M'O�$�L�J�&M'��$�M�J,&M{�$��J,&MB�$��J'&M�MH��J�<&M<���J�,&M'{�$<���J�,&M'B�$<���J�/&M'O�$<���J�/&M'��$<���J�/&M&OY$'{�$<���J�/&M&�5$'{�$<���J�/&M&Ob$'B$<���J�/&M&�?$'B$<���J��&M'O�$'�L�<���J��&M'��$'�M�<���J�'&M&�MH<���%�/&PO%$��%�/&P��$����"/&P&O�${`$����"/&P&��${`$����,/&P&O�$Bj$����,/&P&��$Bj$����I�&P&O#$��������J�&P&�$�������,&P{�$��%,&PBU$����J'&P��H����3�&P
��l����)�&P
��t����,&Py�$$��e,&PC�s$����I�&P'����l�p$��0��H/&lO�$��0��H/&l��$��0��H/&l&Oi${
$��0��H/&l&�E${
$��0��H/&l&Or$B$��0��H/&l&�O$B$��0��H,&l{�$��0��H,&lB�$��J�/&xO�$��J�/&x�\$���/&�O�$���/&��S$���/&�&O${�$���/&�&��${�$���/&�&O#$B�$���/&�&�$B�$����&�&O~$�
�����&�&�[$�����,&�{E$���,&�B�$���'&��H����&�
������&�
�����,&�y�$���,&�C�$����&�'�
�l�$��0T/&
�O�$��0T/&
���$��0T/&
�&On${$��0T/&
�&�J${$��0T/&
�&Ow$B$��0T/&
�&�T$B$��0T�&
�'O�$�a�0T�&
�'��$�b�0T,&
�{�$��0T,&
�B$��0T'&
��bH��0�TD&
�<���0�T,&
�'{�$<���0�T,&
�'B$<���0�T/&
�'O�$<���0�T/&
�'��$<���0�T/&
�&On$'{$<���0�T/&
�&�J$'{$<���0�T/&
�&Ow$'B$<���0�T/&
�&�T$'B$<���0�T�&
�'O�$'�a�<���0�T�&
�'��$'�b�<���0�T'&
�&�bH<���>&%P��,&%&{b$P��,&%'B�$P��/&%'O�$P��/&%&�p$P��/&%&O7$'{�$P��/&%&�$'{�$P��/&%&O@$'B�$P��/&%&�$'B�$P���&%'O�$'�*�P���&%&�x$'�+�P��'&%&�+HP��JV<&MPW��JV,&M'{�$PW��JV,&M'B�$PW��JV/&M'O�$PW��JV/&M'��$PW��JV/&M&OY$'{�$PW��JV/&M&�5$'{�$PW��JV/&M&Ob$'B$PW��JV/&M&�?$'B$PW��JV�&M'O�$'�L�PW��JV�&M'��$'�M�PW��JV'&M&�MHPW��0�D&
�P���0�,&
�'{�$P���0�,&
�'B$P���0�/&
�'O�$P���0�/&
�'��$P���0�/&
�&On$'{$P���0�/&
�&�J$'{$P���0�/&
�&Ow$'B$P���0�/&
�&�T$'B$P���0��&
�'O�$'�a�P���0��&
�'��$'�b�P���0�'&
�&�bHP���H��&���( ��B��)��O��)[�O��L�����L��&��{���)d�&O�B����L��&��B���(��'Oq�$��(~��'�M�#���^�y���^�C��(w�y'��l���( ��{��( ��B��(^�����)c�&O�{����(^�B���^�C��)[�O��)[�O��L[����)[c&O{���L[�&�{���)[d&OB���L[�&�B���([��&Oq���([��&�M����^�y���^�C��(w�y'��l���(^�{��(^�B��(���$��Q���/�����&�'#�2_����x&�2_����x&�2_���6�n&������6��&�'�������@3n&�0���@n&�0����cn&�A���B�n&����H8y&�'"��@���H8�&�'#3�@���H8n&��@���H8�&�'$3�@����'y&�'2_"������&�'#�2_�����&�'$�2_�����&�'%�2_���^on&=A���:�n&>����+y&�'"�2_����]n&������@�n&�S�����n&������@�n&�l���6n&��������n&�$~���@n&�2���@Xn&�A�����n&����1Hn&��.���x&������n&�L��*��vx&i����Gn&������In&	����.���x&
E�����dn&�����O�n&q����;n&����(���x&�V����Qn&�����n&3?##"&'.'.54632>54&'#5!2675#4632#"&KQ:'*]!)o=68cL"%	����'@"�
4��!  !'��
	
4n161dX$";0GG�	�.*>��""!!�"n7C%>54&#".5467.5467>;5!5!##"6324632#"&A$.:AEIGF6[c;)���"h�	/6EW)DA��!  !E$ &+90:G55G|M&;4"(
VGG�*C&:L�""!!.���xEP##"&'327&54632.'#".5467.5463232675#5!654&#"oQG22S /24/(),&:1
;Z2E1,.QL>Y.)+.O&Y��*!K"("*'��E
5$) 4 
))=)G+7IG.5H:;0B�GG1!51:$"���n*%4&'7!5!5!###"&'.'.54632>U`h�)�hQ�".
<69-J"!2b)6F+(-�/JCnGG��rN03B

F< #.�g�.54632.#"�YB 6&(*g#L$CC
B	-#!?$�.����73'�.�(�;uӥ��&��wn,#>;#"#5#".54632.#"3267!5!j�6'@3.4QG2/S2nX91:@=(,E��j'�G��$&M9P^I4/53*#G�n%@%#"&'.54632>54'#5!!3267'#".54632.#"3267�)bIl�b"%����	F>F�c3X/N./K+`O6%077*#:J*k}#-";4)GG.R`TZ!K'F.IQE,,+)�(n#".546;5#5!�7&"('��*<�GGv�n)3267#"&5467.547#5!#632&"#"�8,6I) bIM`(.
4n�+"#19
*'+<4QC4F*GG!%(F)�����n&�*�v�n!!#"&54675!23#"3267��f�5I0Mc�%$ :G:&3InG��'VG3HF1/++-�nF5!2>54&#".54632#"&5467.54632.#"632&"#"�]M~K.)"5:!QJHD.K-2]�Rab*/ZI4
#X,"#^>'GG�?lE/>$ 3?S47H'M;:nX4S@-A+<@EA 	FF(&PKn!!#"'#".'732654&'7!K��<�)$,)C(5`X*G.d: )=-nG�P-.>=�w��"(,N@��WnI%".5467>;5!5!##"6323267#"'.'.5463232654&:/@93`��u�	.7*#='%3
4)	SK?"!9h-;E+FM1�L3(
VGG�!

	E	AK

F9 ),!$v<n(!!>3223267+#"&'732654&#"*��AC^	(+
>M"U�3E)YB7>9).nG�D?
M27jr]P4+.(����$n&�*�����Xn&�*�����Qn&�*�����An&�*���n7"'.=#5!#'27>=#�],O�=B14�
!�;F6�GG�*:G ,+��'.��|n!!467>;#".k��-RDlY==JG6.O/nG��#8G+1[94(PV.��x%.546323267#"&'>54&#"�ALI5)K0PJ:33L%%aCUw_M/% Q�	=:89#H8I^##( C-a]G6233	����in&*�*g�x4%#"&5467.54632'>54&#"632&"#"3267�%[GM_/;R?5G(=	(1#299,5J�,QC2G8<O8-/)'
,# 'F)&)(,��n!!#".5463!u���6&"nG�6*<G��n3267#"&'.=#5!�
2)G$(S;(AOB'�)0(D(I@�GG�n&#>;#"#5#"&'.=#5!3267r�5(@4.4Q@,(@Or�.(*?'�G���G9�GG�70#v�n%!!#".54632.#">7%3267'��`�%`A8Y2yb('2�
��C0!�)nG��,*K3V\E�43�.�x)-%#".546;54&'&#".5463233#L*$!
+/9KYL4%:Ƀ44�%!',i/2G=@;5D>tGtG��n3##".546;5#5!#���*$"~l�AG%!',�GG��n%#"&'>54&'#5!#3267�&]AZo><{W�o=12L�-yd
/,0GG46l$11+��n5!#"&'73267�  P,B}H8f76G('GG��$%C$��,n(!!&#"'67.#".54>32632��2.M1(++R:6:`81I%,I!;WnG�?=.#.$&EK142[]55C8?�n.=!!#"&'#".54>32>3232654&#"326?67.#"�%�+O66P'I-/M.-P36O' G.0M.��!=#*?7%&5��7%&6!<#*@nG��5U1,#-"+U=8T/+$/ ,Ta!#7>@455>5541!$8v�n!!#".54632.#"3267��j�%_<6T1s^
'%
0>F?-4KnG��,*K3V\I6230-(���x,7"&54632>54&#".54632.'z#/$'2@;/98^]GC/R3E=-T@3S%�#VA8C#FS:3@+U@Eu!'_,,H]��n#"&'.=#5!#267�%(VB(AO��92�
E+I@�GG���)0���n/267#"&'.'.54632>54&'#5!#q24*]!)o=68cL"%	��z
4BH
4n161dX$";0GG.*>�r�n/%#".5467.5467>;5!5!##">;�9<&GF6[c ;)E���E�	F8��
2:G55G|M%:4#(
VGG���Kn*6B!!".'732654&'7!#"'"&546323"&54632"&54632K��65`X*G.d: )=-�'#+)C��qnG�T:�p}�%(G@GJ),:yY��n!7"&'>54&'#5!#'.'3267�Zo><{W�
� U#
1,=1"4�yd
/,0GG�W!�
$411
.��x=H#"&'327&54632.'#".5467.546323267%654&#":+2S /24/(),&:1
;Z2E1,.QL>Y.),"7��*!K"("*9
5$) 4 
))=)G+7IG.5H:;0B
t!51:$"���n&!!4&'7!#"&'.'.54632>��OU`Z�".
<69-J"!2b)6F+(-nG��/JCGN03B

F< #.����wn&��������n&�������(n&��������n&��������n&��������n&������@�n&�l����Kn&�1O���6Wn&�������<n&�$~����$n&�������Xn&�������Qn&�������Wn&��������n&�����1|n&���.���x&�������in&'*��L��*���x&�i�����n&��������n&��������n&��������n&�����.��x&�E������n&��������n&������O,n&�q���w�n&��7�����n&�����(���x&��V�����n&������n/;267#"&'.'.54632>54&'#5!#4632#"&q24*]!)o=68cL"%	��z
4��!  !BH
4n161dX$";0GG.*>��""!!��n/;%#".5467.5467>;5!5!##">;4632#"&�9<&GF6[c ;)E���E�	F8��g!  !�
2:G55G|M%:4#(
VGG��""!!��	n8?.54632.#"3267!5!!>32'>54&#"#5.�6JnX91:@=(,E��	��9#AR#H '#7Q�5JQFP^I4/53*#GG�SM.h2) T)/.%#������AnC7.'.54632>54&'#5!##5267!75#".54632.#"�H�L"%	�AhQ���#:��
F>F�e�@(/K+`O6%077.Dfa#-";0GG��S�^.R`TXS$'F.IQE,,+)��Bn'%##".546;5#5!##5�/�7&"BhQC�Z��*<�GG��z��]n-'7.5467.547#5!##5'3267!632&"#"v/�>G(.
4]gQ�8,4M��+"#19AT	I;4F*GG�٩d*'+#!%(F(����n&�� ���n$'7.54675!23#"3267!5!##5�/�:G�%# :G:&2G�/�hP
AUM<3HF1/+++#GG�٧����n&��L��n%'%5#"'#"&'732654&'7!5!5!##5�0
�&)C(O�?G.b<!(=-0��hQC��A'(5~�qt$>@nGG��{��@n;Q%".5467>;5!5!##5'75#"'.'.5463232654&7267##"632:/@93`��@gQ�:�(D, 	SK?"!9h-;E+FM1�*D,��	.7)#D�L3(
VGG��p�8�
AK

F9 ),!$.�!
��n0'%5+#"&'732654&#"'>32232675!5!##5|0
:#
=N"U�3E)YB7>9).AC]
#4��hQC�U

27is\Q4,.'H
D?�GG��{���n&������Xn&�����Pn&�� ���An&�����n''%##"'.=#5!##5%27>=#L0
�B/],O�gQ��4�
!C�Y�*:;F6�GG��{^ ,+��'.6n7'7.#"'>325!5!##5/�*=*9)"J,(@>%��6gQAC�6-J90�GG���.���x-?.'>54&#".546323267#5!##5i�Je_M/% QALI5)K0PJ:34J R
gQ��)a\TG6233	F	=:89#H8J\$#( GG�ٴ���n3?.5467>;5!5!##"3:7&54632.'*�,L/!`;���1:GOR*+-!C&��M	-N;,?_GG�. 5E#1 #	3#""F�*��vx<'7.5467.54632'>54&#"632&"#"3267#53##5�/�<G/;R?5G(=	(1#299,5J>�hQ+AX
J92G8<O8-/)'
,# 'F)&)(+2GG�ٜ��9n'%5##".5463!5!5!##5�0
�6&"�9gQC�\6*<�GG��{��Gn?&'.=#5!##5#3267-�6 OGhQ��2�
1'H5d	 I@�GG���4�)0&��n%0?&'.=#5!!>32'>54&#"#53267,�0O��:#AR#H (#59Q��E()@5e
"F9�GG�SM.h2) T)/.I����3�70"��In )?.54632.#"67!5!##53267'9�FXyb('2��oIgQ��C0!�))S
TDV\E�'GG�٨�743�.���x5'%5##".546;54&'&#".5463235#5!##580
�*$!
+/9KYL4%:Ƀ;gQC�,%!',i/2G=@;5D>t�GG��{��dn'%5##".546;5#5!##5#3�0
�*$"~dgQ��C�,%!',�GG��{����Sn'7.'>54&'#5!##5%3267#]/�K\
><{ShQ��=11L�AaqZ
/,0GG�ٲ{11*46l������n&
�����n0%'75.#"'67.#".54>326325!5!##5�9�
2.M1(++R:6:`81I%,I!;W
���gQ4<�h?=.#.$&EK142[]55C8GG�١���n&����;n#'7.54632.#"3267!5!##5h/�FWs^
'%
0>F?-4K�};hPASUEV\I6230-#GG�٢�x$07'7.''>7.546325#5!##5>54&#"�0�:^&+[/0)M%5)UIBV-#,x6LhQ��".!%("/(C�9D+&H'5LI;+E�GG���66" "��Qn?&'.=#5!##5#3267-�8"OQhQ��<���22�
5c"I@�GG����4��/�)0���n)3%'75#"&'.'.54632>54&'#5!##5'35!�0��4C,)o=68cL"%	��hQ���

kD}4n161dX$";0GG��ן�./#�^:n<?&#".5467.5467>;5!5!##">32'>54'��&LCQLH6ah;)��~:g�	6 S^(F�Sv99 @M35J�P!C4#(
VGG�6R**K-)?�9n'?.#"#".54675#5!!632'>54'��6*,)7&$29��*)tf"H"���K%5!
�GG�gY0j4)!X+
���n%1=I'75#"'#"&'732654&'7!5!5!##54632#"&'4632#"&4632#"&�>��!%)C(O�?G.b<!(=-0��hQ���\3��@&(6�qt$>@VGG��q"D��Sn%'7.'>54&'#5!##5#'.'3267]/�K\
><{ShQ�
��
1,=1$5AaqZ
/,0GG�ٲu�E
$411.��xIT%75#"&'327&54632.'#".5467.5463232675#5!##5654&#"��(a2/]!02/+(),&:0	6S.E1,.QL>Y.(/@_+�>hQk��*!K"("*>�h
5%) 4 
))=)G+7IG.5H:;0A"|GG��x�!51:$"���n.%4&'7!5!5!##5'75#"&'.'.54632>U`����gQm:��".
<69-J"!2b)6F+(-�/JCnGG�ٱ|9�ZN03B

F< #.���j	n&�*����An&������@Bn&�����j]n&�*��n0<HO%".5467>;5!5!##"632#"&'73254&74632#"&4632#"&73'f:.A>1]�o���	.7Jbbcb�;=9wKt1k�E!  !�(�;u��L4(
VGG�!
KADVXF1DAN"$s  !!��""!!n��&�����j�n&�R*��nHT[%2>54&#".54675!5!##"&5467.54632.#"632&"#"4632#"&73'(M~K.)"5:!QJ75�9˴3C2]�Rab*/ZI4
#X,"#^>�!  !Y�(�;u�F?lE/>$ 3?S40D	FGGJ
TH:nX4S@-A+<@EA 	FF(&�""!!Q��&�����^n&�1���6@n&������Zn&�$�n ,3##"3267#".54>;5!5!4632#"&73'�70@7,G*6L*,c5Em>Do?���"!  !�(�;u�'�&A0?J4bFAY.�G�i""!!c��&���Xn$07##"&54>;5!5!2654&'#"4632#"&73'X�PXBnBq�Do>��X��G^:9#J/!_�!  !<�(�;u�'�qIFW)qgC[.�G��=C0M7'FD{""!!Y��&���Pn0<C%".5467>;5!5!##"632#"&'73254&4632#"&73'f:/@>1]�oPn�	.7Jbbcb�;=9wKt1��!  !�(�;u��L3(
VGG�!
KACWXF1DAN##�""!!n��&���An%0<C!".54>75!5!##"&54>32'>54&#"4632#"&73'3NuBHvE��A�'@E @:!A11?sf7F##,��!  !4�(�;u�7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+�""!!b��&�����O�n&�����6n&�A��.�j�x&�\*���Pn&���*�[vx&�?���@9n&����jGn&*���jn&*���jIn&*��.�@�x&����@dn&*���jSn&!*����n!-4%.'.54632>54&'#5!#4632#"&73'�6;hP
"%'$
��h,L1-w��!  !@�(�;u�*61dX$"<'-GG#:7L54o7""!!���&�����O�n&q���n&'��Z���j;n&
*���r�x&2���jQn&	*���n)3?%'75#"&'.'.54632>54&'#5!##5'35!4632#"&�0��4C,)o=68cL"%	��hQ���

��!  !kD}4n161dX$";0GG��ן�./#��""!!�:n<H?&#".5467.5467>;5!5!##">32'>54'4632#"&��&LCQLH6ah;)��~:g�	6 S^(F��!  !Sv99 @M35J�P!C4#(
VGG�6R**K-)?��""!!��wn.'7.54632.#"3267!5!#>;#"#5]/�6JnX91:@=(,E��j�6'@3.4QAJQFP^I4/53*#GG�G�����n$?7.'.54632>54&'#5!!74632.#"3267#".�H�L"%	����
F>F�e��pM`O6%077*#:N./K+.Dfa#-";0GG.R`TXR?��IQE,,+)A'F���n#".546;5#5!'%�7&"_�/
)'��*<�GG��C�:���n)'7.5467.547#5!#632&"#"3267v/�>G(.
4n�+"#198,6I)AT	I;4F*GG!%(F('*'+>���v�n&�� �����n&�� ���n!!!'7.54675!23#"3267��f�/�:G�%$ :G:&2J(&nG��AUM<3HF1/++->����n&��L���n!!!#"'#"&'732654&'7!'%m��^�&)C(O�?G.b<!(=-0�0
)nG�A'(5~�qt$>@�/C�:���nIM%".5467>;5!5!!#"6323267#"'.'.5463232654&7:/@93`�����	.7)#D,*D,(D, 	SK?"!9h-;E+FM1��+��L3(
VGG�!
I
AK

F9 ),!$��4����n(,!!>3223267+#"&'732654&#"%h���AC]
#5:#
=N"U�3E)YB7>9).q
)��nGj
D?T

27is\Q4,.'���:����vn&�������n&������vXn&������Xn&�����vPn&�� ����Pn&�� ���vAn&������An&����Rn##"'.=#5!27>=#'%�B/],O���4�
!n0
)'�*:;F6�GG�� ,+��'.�C�:A�n!!7.#"'>32��tP�*>)9)"J,(BD*��nG�]�6-J@9C�.���x%'7.'>54&#".546323267�/�Je_M/% QALI5)K0PJ:34K%Aa\TG6233	F	=:89#H8J\$#( G����in&�*�*���x4'7.5467.54632'>54&#"632&"#"3267�/�<G/;R?5G(=	(1#299,5J%+AX
J92G8<O8-/)'
,# 'F)&)(,F���n!!#".5463!'%��q�6&"�0
)nG�6*<G��C�:���n?&'.=#5!#3267-�6 OB�
1)G%��5d	 I@�GG�)0(A����n'?&'.=#5!#>;#"#53267,�0Or�5(@4.4Q��E()@5e
"F9�GG�G����3�70"���n'!!7.54632.#">73267'��`9�FXyb('2�
'��C0!�)nG�S
TDV\E�A
�743�.��>x)-1%#".546;54&'&#".5463233#'%L*$!
+/9KYL4%:Ƀ��Z0
)�%!',i/2G=@;5D>tGtG��C�:���n3##".546;5#5!#'%���*$"~��0
)AG%!',�GG��C�:���n'7.'>54&'#5!#3267]/�K\
><{W�o=12L&AaqZ
/,0GG46l$11+E����n&�����3n(,!!&#"'67.#".54>32632'7��2.M1(++R:6:`81I%,I!;W�9�#nG�?=.#.$&EK142[]55C8��<�;����n&������n!!'7.54632.#"3267��jh/�FWs^
'%
0>F?-4K+nG��ASUEV\I6230-D((x ,7'7.''>7.5463253>54&#"�0�:^&+[/0)M%5)UIBV-#,x6L[��!%("/"(C�9D+&H'5LI;+EM>GG�6" "#6���n'7.'.=#5!#3267�%N��/�-O��.
22D3�BcI@�GG,�)0��Sn+/#"&'.'.54632>54&'#5!!;'7+�4C,)o=68cL"%	�:��

 ՚0�(/4n161dX$";0GG./#��D}:�����n&*���n!-9E!!"&'732654&'7!#"'7%"&546323"&54632"&54632m��6O�?G.b<!(=-0�!%)CN�,����qnG�l�qt$>@G@&(6x�9�2Y���n!?.'>54&'#5!#.'3267.�K\
><{W�
�
���
1,=1"4)aqZ
/,0GG�T�r
$411
.��xx=ALP267#"&'327&54632.'#".5467.546323#654&#"7�A^+(a2/]!02/+(),&:0	6S.E1,.QL>Y.(/Y����*!K"("*
�.�l#[
5%) 4 
))=)G+7IG.5H:;0AG1!51:$"�*�<���Kn&*!!4&'7!#"&'.'.54632>72��U`��".
<69-J"!2b)6F+(-p�(�nG��/JCGN03B

F< #.S�=����jwn&6*�����n&7�����@�n&8����j�n&9*�v�n0<HO]%".5467>;5!5!##"632#"&'73254&74632#"&4632#"&73'.#"'632f:.A>1]�o���	.7Jbbcb�;=9wKt1k�E!  !�(�;u��2eD	CeQ!�L4(
VGG�!
KADVXF1DAN"$s  !!��""!!i��&���?<H/H%���j�n&<R*��nFRY5!2>54&#".54632#"&5467.54632.#"632&"#"4632#"&73'�]M~K.)"5:!QJHD.K-2]�Rab*/ZI4
#X,"#^>�!  !Y�(�;u�'GG�?lE/>$ 3?S47H'M;:nX4S@-A+<@EA 	FF(&�""!!Q��&�����^�n&>1���6�n&?�����Z�n&@$�v5n ,3A##"3267#".54>;5!5!4632#"&73'.#"'632�70@7,G*6L*,c5Em>Do?���"!  !�(�;u��2eD	CeQ!'�&A0?J4bFAY.�G�i""!!c��&���?<H/H%�vZn$07E##"&54>;5!5!2654&'#"4632#"&73'.#"'632X�PXBnBq�Do>��X��G^:9#J/!_�!  !<�(�;u��2eD	CeQ!'�qIFW)qgC[.�G��=C0M7'FD{""!!Y��&���?<H/H%�vPn0<CQ%".5467>;5!5!##"632#"&'73254&4632#"&73'.#"'632f:/@>1]�oPn�	.7Jbbcb�;=9wKt1��!  !�(�;u��2eD	CeQ!�L3(
VGG�!
KACWXF1DAN##��""!!i��&���?<H/H%�vPn%0<CQ!".54>75!5!##"&54>32'>54&#"4632#"&73'.#"'6323NuBHvE��A�'@E @:!A11?sf7F##,��!  !4�(�;u��2eD	CeQ!7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+�""!!b��&���?<H/H%���ORn&I�����n&JA��.�j�x&K\*�����n&�'*����*�[�x&M?���@�n&N����j�n&O*���j�n&P*���j�n&Q*��.�@>x&R����@�n&S*���j�n&T!*���O3n&Vq����n&�'��Z���j�n&X*���r(x&Y2���j�n&Z	*��Sn+/;#"&'.'.54632>54&'#5!!;'74632#"&+�4C,)o=68cL"%	�:��

 ՚0�(��!  !/4n161dX$";0GG./#��D}:�""!!���n<JV?&#".5467.5467>;5!5!##">32'>54'632.#"4632#"&��&LCQLH6ah;)��~:g�	6 S^(F�UDeP!92eD	��!  !Sv99 @M35J�P!C4#(
VGG�6R**K-)?�;3V3)PKB""!!��"nO2'>54&#"632#"&'73254&#"'.5467.5467>;5!5!##"6GW'>; '9AMCBCKS]Va�<='FO1j1+YL;)���"h�	/,(@$5DC!"&6(3:"M?=N\L+0>J! (6f<#93"(
VGG���"nN"&'73254&#"'.5467.5467>;5!5!##"632'>54&#"632-a�<='FO1j1+YM;)���"h�	
/9GW'r 7EJD87KS]��\L+0>J! 1`@/0 (
VGG�
$:!^$A *%,2M?=N��8nQ2'>54&#".#"3267#"&5467.5467.5467>;5!5!##"6GW'>; '9AMCBDAdN =7oJ331*9KU-)@7;)���"h�	/,(@$5DC!"&6(3:"9V1'SW& &
F

O?'@,X3#93"(
VGG���BnQ2'>54&#"232.#"3267#"&547.5467.5467>;5!5!##"6GW'r 7EJD54KpU"=7oJ331*9KUC:4;)���"h�	
/,$:!^$A *%,07[5'SW& &
F

O?I&(S4/0 (
VGG�
�^5nF23267#"&5467.#".5467.5467>;5!5!##"6EW)<62);!KT:<>=FHI>6a_;)���5{�	.,*C&!
( !	EK;'L(&:5&DI/5M�H'@4#(
VGG��XnX23267#"'3267#"&547&54>7&#".5467.5467>;5!5!##"6EW)=51 *;!
,%*9!OP64){FHI>6a_;)���5{�	.,*C&!
$
A

A
K8$@1'N:5&DI/5M�H'@4#(
VGG���"nO[2'>54&#">32#"&'732654&#"'.5467.5467>;5!5!##"64632#"&GW'r 7EJD<;#LTZIHp6./V3.35&0gY;)���"h�	
/�!  !,$:!^$A *%.3N>=N/20*%%! 
6eD/0 (
VGG�
��""!!��}nR^2'>54&#"632.#"3267#"&5467.5467.5467>;5!5!##"64632#"&GW'r 7EJD;9KoV"=7oJ342*9KTLB;)���"h�	
/�!  !,$:!^$A *%-27[5'SW& &
F

O?.-[;/0 (
VGG�
��!!""�5nFR23267#"&5467.#".5467.5467>;5!5!##"64632#"&EW)<62);!KT:<>=FHI>6a_;)���5{�	.�!  !,*C&!
( !	EK;'L(&:5&DI/5M�H'@4#(
VGG��""!!�XnXd23267#"'3267#"&547&54>7&#".5467.5467>;5!5!##"64632#"&EW)=51 *;!
,%*9!OP64){FHI>6a_;)���5{�	.�!  !,*C&!
$
A

A
K8$@1'N:5&DI/5M�H'@4#(
VGG��""!!��:nT?&#"632#"&'73254&#"'.5467.5467>;5!5!##">32'>54'λ&EEOB<KT]Va�<>'FN2i0 *
gU;)��~:g�	:"P_*F�pg21 55"M?=N\L+0>J! ;kD;2 (
VGG�		3M('G*&;u��:nS?&#"632#"&'73254&#"'.5467.5467>;5!5!##"632'>54'ڪ&@NF9O"!KT]Va�<>'FN2i0 *RR;)��:h�	3>Qa*A��^1)#G'M?=N\L+0>J! *MD30(
VGG�.L.E$(+
v��QnV?&#"32.#"3267#"&547.5467.5467>;5!5!##">32'>54'λ&EEO?9KpU"=7oJ252+9KTDD:;)��~:g�	:"P_*F�pg21 34 8[5'SX' &
F

O?J&.[9;2 (
VGG�		3M('G*&;u��QnV?&#"632.#"3267#"&547.5467.5467>;5!5!##"632'>54'ڪ&@NF3G
KpU"=7oJ342+9KT;12;)��:h�	3>Qa*A��^1)!D%8[5'SX' &
F

O?D'!<830(
VGG�.L.E$(+
v��An3'>54&#".'.54632>54&'#5!!632!H!"#"H+-w@6;hP
"%'$
�A��5J(.W%)E##*!.4o161dX$"<'-GG#:
I��!nD%"&545.'.'.54632>54&'#5!!>32.#"3267�<P%<#-w@6;hP
"%'$
�!�A1=]H?.X7+(*,�N?#4o161dX$"<'-GG#:%$7]9"VU+%C
��6nL67.'#".5467>;5!5!##"3:7&54632#"&'73254&#"('+*UG+!`;���1:GOR*+-
38]Va�<='FO1j1+ /O9,?_GG�. 5E#1 #	'G3=N\L+0>J! ���nO#"&546323.'#".5467>;5!5!##"3:7&54632.#"3267�9KU\O
*UG+!`;���1:GOR*+-
Ig(>6pI342*�

O?9P/O9,?_GG�. 5E#1 #	*g>'SX' &
��;nF"&5467&'#".5467>;5!5!##"3:7&546323267�KU8-*UG+!`;���1:GOR*+-%(1.2 /"C��O?/B& /O9,?_GG�. 5E#1 #	;#
)!"E
��4nK?.5467>;5!5!##"3:7&54632#"&'732654&#"'67.'*�,L/!`;���1:GOR*+-	47QJSz7=5A.).&"$!��M	-N;,?_GG�. 5E#1 #	%	J6=NWQ+)?#'#"A
"����nN?.5467>;5!5!##"3:7&54632.#"3267#"&546323.'*�,L/!`;���1:GOR*+-
Ig(>6pI342*9KU\O
��M	-N;,?_GG�. 5E#1 #	*g>'SX' &
F

O?9P 
���;nE?.5467>;5!5!##"3:7&546323267#"&5467&'*�,L/!`;���1:GOR*+-%(1.2 /"C)KU8-��M	-N;,?_GG�. 5E#1 #	;#
)!"E
O?/B& ���An3?'>54&#".'.54632>54&'#5!!6324632#"&!H!"#"H+-w@6;hP
"%'$
�A��5J�.!  !(.W%)E##*!.4o161dX$"<'-GG#:
I��""!!��!nDP%"&545.'.'.54632>54&'#5!!>32.#"32674632#"&�<P%<#-w@6;hP
"%'$
�!�A1=]H?.X7+(*,�1!  !�N?#4o161dX$"<'-GG#:%$7]9"VU+%C
{""!!��6nLX>7.'#".5467>;5!5!##"3:7&54632#"&'732654&#"%4632#"&F
*UG+!`;���1:GOR*+-	77QJWy4=/V='0)$!��    !/O9,?_GG�. 5E#1 #	&	L4=N\L+IB%%! J""""���nO[#"&546323.'#".5467>;5!5!##"3:7&54632.#"3267%4632#"&�9KU\O
*UG+!`;���1:GOR*+-
Ig(>6pI342*��!  !�

O?9P/O9,?_GG�. 5E#1 #	*g>'SX' &
�""!!����;n&��L�|Pn0<U%".5467>;5!5!##"632#"&'73254&4632#"&"&'732654&#"'632f:/@>1]�oPn�	.7Jbbcb�;=9wKt1�!  !I[�878d@/.-(17ENU�L3(
VGG�!
KACWXF1DAN##����L>0<9CF84G�{Pn0<V%".5467>;5!5!##"632#"&'73254&4632#"&"&54632.#"3267f:/@>1]�oPn�	.7Jbbcb�;=9wKt1�!  !FOVFEgP">1dA..-(4�L3(
VGG�!
KACWXF1DAN##����F84G2Q0'HN	D�|An%0<U!".54>75!5!##"&54>32'>54&#"4632#"&"&'732654&#"'6323NuBHvE��A�'@E @:!A11?sf7F##,=!  !I[�878d@/.-(17ENU7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+���L>0<9CF84G�{An%0<V!".54>75!5!##"&54>32'>54&#"4632#"&"&54632.#"32673NuBHvE��A�'@E @:!A11?sf7F##,=!  !FOVFEgP">1dA..-(47gIF_1iGG�<):J(*"<%%<"FW�%!-)"+���F84G2Q0'HN	D�Gg���"&546323#�BQQ��g��4632.#"#.53�XB!5&(*P{Q�CC
B	-#!<$#Lo���g��$4632.#"#.5374632#"&�XB!5&(*P{Q��CC
B	-#!<$#Lo��m���&�����&�����&����$�&�Q,�$0�-#53.#"#.54632>32.#"13##YYW=7(*PTK,>B, 6&(*
ngQ'Ghc1+"7#@"AS  
B	-#>$G���$0�-9#53.#"#.54632>32.#"13##"&54632YYW=7(*PTK,>B, 6&(*
ngQ�'Ghc1+"7#@"AS  
B	-#>$G��������E����g.� .'#"&'73267632.#"�:$E^"F9-1/;(? 6&(*g:Y^FDIC
B	-#!?$��g.� ,.'#"&'73267632.#"'4632#"&�:$E^"F9-1/;(? 6&(*g:Y^FDIC
B	-#!?$m�%g���!.#"#".'732632'4632#"&�(&

#9/B%+ %8+     gH4;7,,"VM�""""�%g1�$.#"#".'732632>32.#"�(&

#9/B%+ 
P5!4&)*gH4;7,,..
B	-$+F�%g1�$0.#"#".'732632>32.#"7"&54632�(&

#9/B%+ 
P5!4&)*?gH4;7,,..
B	-$+F;�gg���.#"'632'4632#"&�)2""'46O?!!!!gO[&	I3{k�""""�gg3�.#"'632632.#"�)2""'41<e 6&(*gO[&	I"+M
B	-#
/@�gg3�).#"'632632.#"7"&54632�)2""'41<e 6&(*@gO[&	I"+M
B	-#
/@;�Tg���).#"'>327.#"'632'4632#"&�-+*2-F&, '46O?!!!!g(%	E
+&49E3{k�""""�Tg3�,.#"'>327.#"'632632.#"�-+*2-F&, '4.Be 6&(*g(%	E
+&49E#*M
B	-#0=�Tg3�,8.#"'>327.#"'632632.#"7"&54632�-+*2-F&, '4.Be 6&(*@g(%	E
+&49E#*M
B	-#0=;����*�&������1�&�����1�&����(�&����(4�&����(4�&����j�&����j6�&����j6�&����W�&����W6�&����W6�&�����&J����G�&L����G�&M�g�.54632.#"'4632#"&�YB 6&(*g#L$CC
B	-#!?$m���&���������&������H8�&������H8�&��3���H8�&��3��'�&������&������&������&�����+�&������&������&������&�J������&�'��2_���6��&�'�������H8�&�'�@�����H8�&�'�3�@���H8�&�'�@�3����'�&�'2_�������&�'��2_�����&�'2_�������&�'2_������+�&�'2_����in/.54675!5!5!!>32'>54&#"##"8.N/���-i��9$@S"I'#68Qe15IG(PU1.
H�GG�SM.h2) T)/.I��H+1[9���xZb%"&547#"#5#".54632.#"3267!5!#>;632>54&#".54632.'##5!�#/.4QG2/S2nX91:@=(,E��2n6'1'2@;/98^]GC/R3E=-T@3S%�QY�#��$&M9P^I4/53*#GG�=VA8C#FS:3@+U@Eu!'_,,H]j��'GG���xEks%"'#".54632.#"3267>32>54&#".54632.'#".'.54632>54'#5!!327##5!�C'/K+`O6%077*-#'2@;/98^]GC/R3E=-T@3S%#)nDD��I"%�W��E=K�]qR�QY�
'F.IQE,,+)
VA8C#FS:3@+U@Eu!'_,,H]} ,l_&";4)GG0QaYV3���'GG�e�nBN".547>;5!5!##">32##"'#".546;5.'73265474632#"&fD*;#:3_�s���(
=PZL!,+4!",N >>�=<5:F*.
>GG�?8 4��	�'8Y7%1D32f    �V�n>JQ".546;5&'732654#".547>;5!5!##">32#5#4632#"&35#"'�4%P:>>�=<5_D*;#:3_�s���(
=PZL�0��!)42�'7{%B1D32F*.
>GG�?80��s"    ��\�n@S_%".5467>;5!5!##5#"&'>54'.#!"632#"&'73254&267!32%4632#"&f:/@>1]�o�hQB&Ov9B

%&�~	.7Jbbcb�;=9wKt1�&>���6=17:���L3(
VGG��cac'"
!
KACWXF1DAN##TpV/1<+�  !!�n">!##5#"&54675!23#"3267!#"&54675!23#"3267�hPH2Mc�$ :G:&2G���5G.Mc�$:G:&2FnG�٥VG3HF1/+++#��&VG3HF1/+++anHc!##"&5467.54632.#"632&"#"32>54&#".54675!#"&54675!23#"3267a�3C2]�Rab*/ZI4
#X,"#^>4M~K.)"5:!QJ75���$Y?Mc�%$ :G:&/DnGJ
TH:nX4S@-A+<@EA 	FF(&?lE/>$ 3?S40D	F��1VG3HF1/++(���an&����nZo%2>54&#".54675!5!##5#"&'>54'.+"'#"&5467.54632.#"632&"#"323267(M~K.)"5:!QJ75�9�hQC*Hv:B%&0' 2]�Rab*/ZI4
#X,"#^>#�6=17:$)CF?lE/>$ 3?S40D	FGG��gac'"'1:nX4S@-A+<@EA 	FF(&�J/1<+!g�n;!###"'#".'#"'#".'732654&'7332654&'7!5!�hQ�)$,)C(3[U)A)$,)C(5`X*G.d: )=-�/g; )=-��nG��rP-.>8kP-.>=�w��"(,N@��"(,N@nn0K5!##"632#"&'73254&#".5467>;5".'732654&'7!#"'n�	.7Jbbcb�;=9wKt1.:/@>1]��5`X*G.d: )=-~)$,)C'GG�!
KACWXF1DAN##L3(
V�)=�w��"(,N@GP-.>�nG%"&'732654&#"'>323267&'732654&'7!5!5!###"'#"&'#"#,U�3E)YB7>9).AC]	"F.d: *=-���hQ�(#-)D(=l239
=Mvjr]P4+.(HC?#'��"(,N@nGG��rP-.>Qb27�n<%"&54>;5!5!##"3267#"3267#"&54>;5"m�>kA
���K!EXC2S)9K!EXC2S)(l3m�>kA
�YX9I#AGG�	
#7+Ks	
#7+KYX9I#"�vHnV%"&54>;5!5!##"3267#"3267.#"3267#"&5467.54>;5"jz:gC���`9OD;U&1>`9OD;U&J&;XD=7oJ331+9MS87Q[:gC�ON4B ;GG�
/%Ko
/$K
	3I)#GL	F
G8*?
MC4B �-n1A".54>;5.54>;5!5!##"3267'2654&'#"Go??lCjz>kA
��-�K!EXC1T)A#LX@mEGZ88)%?W�%N=8I$#YV9I#AGG�	
#7+K
0[::I!G-0#:&12�vDnIV%"&54>;5!5!##"3267.#"3267#"&5467.54>;254&'#"jz:gC��-�`9OD;U&8GLX_N8TA=7oJ331+9MS76V\?j@�882F)�ON4B ;GG�
/%K-R4DD	
4F(#GL	F
G8)?
	KE3C!�M0	!Sn2E5!##5#"&'>54'.+#"3267#".54>;5267!32gQD)Iu:B%&�70@7,G*6L*,c5Em>Do?�*C�'�6<17:'GG��hac'"-&A0?J4bFAY.��c hV/1<+�Xn'7G".54>;5.54>;5!5!#2654&'#"2654&'#"'Hq@@nCGn?@nC��X�M[^JM[AnGI\:9*&AZMI\:9*&AZ�%N=8I$#%N<8I$BGGH[:GL/[::I!�-0#:&12��-0#:&12wn)<K#5#"&'>54'.+"&'#"&54>;5!5!267!!22654&'#"QC)Iu:A
&&�#6<BnBq�Do>��w��)B��5=08:�G^:9#J/!_'��_ac'!!b;FW)qgC[.�GG�Z q^/1<*9=C0M7'FD�PnJU"&5467.'732654#".547>;5!5!##">32#"&54632'23254#"Nw�seL�3>>�=<5_D*;#:3c�oPn�(
=PZ=A>(P<:KMFEkov=*'�ZXJJ	F;1D32F*.
>GG�?8-C?	$-1)=>':Gn<'�PnR".547&'732654#".547>;5!5!##">32#"'>32#"&'732654fC+;R:><�=<5_C+;#;2c�oPn�'<O[_f%#;O[_fZ�<><�=<51F+$%D1E4 4F+/
@GG�@99K@99KIF1E4 4�vfnn%".547&'732654#".5467>;5!5!##">32#"'">32.#"3267#"&5467.'732654fI(8O::AD<5_I(8:1g�oPn�!APZ^g"!APZHM7QA=7pI342*9MR>=Gy.:AD<5	
B( #@2B1+
B(!

4GG{	
:56D
:5/A3F'#GL	F
G8,B
C22B1+jn@S%".5467>;5!5!##5#"&'>54'.#!"632#"&'73254&267!32f:/@>1]�ojhQC*Hv:B%&��	.7Jbbcb�;=9wKt1�)C�1�6=17:�L3(
VGG��gac'"!
KACWXF1DAN##T!gV/1<+�jn@SZ%".5467>;5!5!##5#"&'>54'.#!"632#"&'73254&267!3273'f:/@>1]�ojhQC*Hv:B%&��	.7Jbbcb�;=9wKt1�)C�1�6=17:�E�(�;u��L3(
VGG��gac'"!
KACWXF1DAN##T!gV/1<+�љ�&���An@KV"&54>35.54>35!5!##"&54632#"&5463223254#"23254#"7x�BuLu�BuL��A�>)P<;KMFDEE>)P<;KMFDjov=*'v=*'�YY9I#!YX9I#@GG�	$-1)=>'/Am	$-1)=>':G�<'�o<'an5HS!".54>75!5!##5#"&'>54'.#!"&54>32%267!32%>54&#"3NuBHvE��ahPD)Iu:A
&&��@E @:!A11?s�)C���5=17:�17F##,7gIF_1iGG��U`d'!
<):J(*"<%%<"FWw!zh.2;*%!-)"+���n.54675!5!5!###"U.N/���hQt15JF(PV0-H�GG��H*1[9���n!!#".54675��t15JF6.N/�nG�G*1[94(PV0-H���x-1G#5#"&'>54&#".546323267#5!%!!467>;#".SQP7Uw_M/% QALI5)K0PJ:34J R
�F8��-RDlY==JG6.O/'�ٴa]G6233	F	=:89#H8J\$#( GGGG��#8G+1[94(PV���x,08N%"&54632>54&#".54632.'!)##5!467>;#".�#/$'2@;/98^]GC/R3E=-T@3S%�<<��{QY�JRDlY==JG6.O/�#VA8C#FS:3@+U@Eu!'_,,H]�G��'GG��#8G+1[94(PV�Z�n9Y"&5467.54632>7>;5!5!##"3:7&54632''3267#".'&#"632&"#"
Z`&+YI!`;�ٞ1:G/PS
*+-"UF9Tj�9+P�3	2fM
[,"

),�L:/:&9?%7_GG�?5E#1 %
��)G,�##\KC9<D!�Zn>".546;5.5467>;5!5!##"3:7&54632'#"&'�2"&1!`;���1:GPT
*+-"TEU	+�&6WP<,?_GG�. 5E#1 %
����Z�n5AJ".5467&5467>;5!5!##"3:7.54632'7"&'>7327'�9V0G="`;�k��1;GPT	*+-"TE:*pY1f%�/
�� 5�})G.=R%-,?_GG�. 5E	#1 %
��0G�!�3$")��Z%n]#"&'.546?'.#"3267#"&54>32767.5467>;5!5!##"3:7&54632's*"!''/@(963$�4_;!`;��%�1:GPT
*+-"TEJ;

T)+?<0(189X9*SD,?_GG�. 5E#1 %
���Zzn3C".5467&5467>;5!5!##"3:7&54632''32>7#"&'�8T/B9"_;�uz�1:G.OT
*+-"TE9*m�C+,H;
0c%'4})G.;O%0,?_GG�>5E#1 %
��0G�1)&: 	0�ZynCVf".5467&5467>;5!5!##5#"&'>54'.+"3:7&54632'%267!3232>7#"&'�8T/B9"_;�uyhQC*Hv:B%&�:G.OT
*+-"TE9*m)C��6=17:�_C+,H;
0c%'4})G.;O%0,?_GG��^ac'">5E#1 %
��0G�!p_/1<+_1)&: 	0�Z&nf'#"&5467.54632'654&#"632&"#"3267#".5467>;5!5!##"3:7.54632�E9TjAZ`>OM<2C;&&; (
(-9+Q�4
*WI-!`<��&�0;GPT
)*-!��)G,L:#F=9K5+.&* $
D!##]J/N9,?_GG�. 5E	#1 %
�Z$nv�.+"3:7.54632'#"&5467.54632'654&#"632&"#"3267#".5467>;5!5!##5#"&'>54267!32|%&�;GPT
)*-!UE9TjAZ`>OM<2C;&&; (
(-9+Q�4
*WI-!`<��$hQC*Hv:B])C��6=17:o. 5E	#1 %
��)G,L:#F=9K5+.&* $
D!##]J/N9,?_GG��^ac'"�!p_/1<+�W*nG.'#".547.5467>;5!5!##"632&#"3:7.54632�&
<h@!(:*q��*��	2C*"@C.G#*+-
 �!F$K:;+=)(
VGG�$I7++,	#1 #3#�W�nWj.'#".547.5467>;5!5!##5#"&'>54'.#!"632&#"3:7.54632267!32�&
<h@!(:*q���hQC*Hv:B%&��	2C*"@C.G#*+-
 �)C�Vl6=17:�!F$K:;+=)(
VGG��gac'"$I7++,	#1 #3#!gV/1<+���n&8".546;4&+"&'&5467>;5!5!##5##";23d*$"$ B+3&@-;���hQ��-) S).�&,) 5!-VGG��a$!(�
1&���n:"&547.5467>;5!5!##5##"632.#"3267Uf&:*D���hQE_���	0?
&#
,>>;0Ov4PC6(<((
VGG��q4$2�#
H-)*(TD��7n7"&547.5467>;5!5!##"632.#"3267Uf&:*D�����	0?
&#
,>>;0Pv448J]PC6(<((
VGG�#
H-)*(WD<93!.n<7".5463!67>;5!5!##"632#"&'73254&#".'#�6&">1]��.n�	.7Jbbcb�;=9wKt1.:-?��*<
VGG�!
KACWXF1DAN##H06���.n&	���x;?#".5463!>54&#".546323267#5!##5#"&'!!�6&"N@/% QALI5)K0PJ:34J R
gQP7Os����*6*<(D1233	F	=:89#H8J\$#( GG�ٴUQDG���x;?#".5463!>54&#".546323267#5!##5'7.'!!�6&"N@/% QALI5)K0PJ:34J R
gQ��/�Ea����*6*<(D1233	F	=:89#H8J\$#( GG�ٴ�AaPIDG�x<@N##5#"&5467.54632'>54&#"632&"#"3267#53)!#".5463!�hQI:M_/;R?5G(=	(1#299,5J>��j/���6&"'�ٖQC2G8<O8-/)'
,# 'F)&)(+2GG�6*<Ggx48F%#"&5467.54632'>54&#"632&"#"3267!!#".5463!%[GM_/;R?5G(=	(1#299,5J�#/���6&"�,QC2G8<O8-/)'
,# 'F)&)(,yG�6*<G���x<@N'7.5467.54632'>54&#"632&"#"3267#53##5!!#".5463!�/�<G/;R?5G(=	(1#299,5J>�hQ�#/���6&"+AX
J92G8<O8-/)'
,# 'F)&)(+2GG�ٜ�G�6*<Gvn)7".5463!5!5!###"&'.546?675#�6&"[�CvhQ�'%!!TUI��)<�GG��p"EF16���x;?G#".5463!632>54&#".54632.'#"&547!)##5!�6&"'2@;/98^]GC/R3E=-T@3S%#/��K���QY*6*<>VA8C#FS:3@+U@Eu!'_,,H]#DG��'GGGn!.3"&'.546?>7&'.=#5!##52675#�/+%,OGhQ�
$F'G�
$

HB�GG���s+	%߇)0
�x<@W_##5#"&5467.54632'>54&#"632&"#"3267#53)!#".54632.#"67%327'�hQI:M_/;R?5G(=	(1#299,5J>��?Z���(`A8Y2yb4)���C0# �)'�ٖQC2G8<O8-/)'
,# 'F)&)(+2GG��",*K3V\E�43��n$0#5#"&'&'##".546;5#5!3&=#!#3267:QD/(A�*$"~��-���
2(F'�ٿ%!',�GG���)0&���n#/%7&'&'##".546;5#5!##53&=#!#3267��6 �*$"~�hQ������
1'H5d	 %!',�GG���N��)0&�n&,3267#"&'&'##".546;5#5!3&=#�
2)G$(S;(A�*$"~��2��'�)0(D(%!',�GG��mn17B>32'>54&#"#5#"&'&'##".546;5#5!3&=#!3267':#AR#H (#59Q@+(@�*$"~m�b��,()@'�SM.h2) T)/.I���%!',�GG�ſ70"�x-B235#5!##5##".'##".546;5#5!6!54&'&#".547#�%:Ƀ;gQ�.&�*$"~y�5
+/9KYixD>t�GG��%!.%!',�G
��i/2G=@���nT263267>;5!5!##"632#"&'73254&#".545&#"'67.#".54>�,I!<X>1]���n�	.7Jbbcb�;=9wKt1.:/@3.M1(++R:6:`81I�8VGG�!
KACWXF1DAN##L3?=.#.$&EK142[]55C����n&����gx-1V#5#"&'>54&#".546323267#5!%!!&#"'67.#".54>32632QP7Uw_M/% QALI5)K0PJ:34J R
���2.M3 (++R:6:`81I%/N$8O'�ٴa]G6233	F	=:89#H8J\$#( GGGG�=92&.$&EK142[]55C"-�n1=2.#"3267&'>54&'!5!##5#"&'#".5463267#�
'%
0>F@1,U><�/�hQN31N9K34U2s6=12J��I6230-)$+
/,0GG�ٳ&"'*K3V\�11*46l�w�x4@#5#"&5'%32675.''>7.546325#53>54&#"_Q3G@Ya/"#0)<F�7+[/0)M%5)UIBV-#S|@��2!%("/"'�PO%PDDC�=()!%�%9D+&H'5LI;+E �GG�6" "#6�w�x;G#5#".54632.#"32675.''>7.546325#53>54&#"_QB)1M,cQ9'3::,%<F�7+[/0)M%5)UIBV-#S|@��2!%("/"'�PL'F/HQE-,+(�%9D+&H'5LI;+E �GG�6" "#6��-x?K5!##'67.#".'.''>7.54632>32675>54&#"�`hQ5BM0(++Q:58]96V#+[/0)M%5)UIBV-#= 1=+J"7X�4".!%("/'GG��c@M.#.$&EK14/XY19D+&H'5LI;+E
#,3~666" "�x3?!"'.546?>7&''>7.546325#5!##5>54&#"B&%!7/N"qV+[/0)M%5)UIBV-#,w7MgQ�	$d!%("/"
$
&&9D+&H'5LI;+E�GG���i+�6" "#6Wn!$+!".547.=#5!##"32675#67'<Bj>=!TWhA6<L2*E(4W')l-�78L�#M?E*@/�GG�>
6&*Ld�q/7�[n3FIP!".547.=#5!##5#"&'>54'.+#"3267%267!32%5#67'<Bj>=!T[hQC)Iu:A
&&mA6<L2*E(4W')l�)B�Mv5=08:���78L�#M?E*@/�GG��_ac'!4>
6&*L� q^/1<*��q/7����Wn&!�\n#5!".5467.=#5!#5#6;'2654.'#",7hD!T\m(%0=l+�74G��HS 0!$=*F#J=)=?.�GG�#C/9G!d�r-4��=,1 *
&%,un*=@HZ!".5467.=#5!##5#"&'>54'.+%267!32%5#6;'2654.'#",7hD!TuhQC)Iu:A
&&�(%0=l�)B�3�5=08:���74G��HS 0!$=*F#J=)=?.�GG��_ac'!4#C/9G!� q^/1<*��r-4��=,1 *
&%,���\n&$���x>[%.'.54632>54&'#5!6323267#5!##5#"&'#"&'7267>54&#".547#|68cL"%	�� )K0PJ:34J R
gQP7Ej08*]!)o2)E(?5/% QAL�
4*61dX$";0G
#H8J\$#( GG�ٴA>
4n�	@-233	F	=:.*>��yx6S%.'.54632>54&'#5!6323267#"&'#"&'7267>54&#".547#|68cL"%	�� )K0PJ:33L%%aCEj08*]!)o2)E(?5/% QAL�
4*61dX$";0G
#H8I^##( C-A>
4n�	@-233	F	=:.*>���n/>J#5#"&'.'#"&'.'.54632>54&'#5!2674=#%#3267�QD/(A;(*]!)o=68cL"%	��%= �
4��
2(F'�ٿ#	
4n161dX$";0GG�		�.*>�)0&��Xn7F3267#"&'.'#"&'.'.54632>54&'#5!2674=#D
2)G$(S;(A;(*]!)o=68cL"%	��%= �
4'�)0(D(#	
4n161dX$";0GG�		�.*>���n.=I%7&'.'#"&'.'.54632>54&'#5!##52674=#%#3267ѩ6 ;(*]!)o=68cL"%	��hQ�Ώ%= �
4��
1'H5d	 #	
4n161dX$";0GG���O		�.*>�)0&���nAP[>32'>54&#"#5#"&'&'#"&'.'.54632>54&'#5!2674=#%3267p:#AR#H (#59Q@+(@;(*]!)o=68cL"%	����%= �
4
()@'�SM.h2) T)/.I���'	
4n161dX$";0GG�	�.*>�70"�)nFP.5467.5467>3!5!5!#!">;2#4&+#"'.=72>=#BY, ;)�����	6'�S Q#5%I")#L>@o�=hg;"G5#(
VGG�#?��8r+218+b	E+OW8�)os(.�)�nG".546;54&+".5467.5467>;5!5!#!">;2#5#Y0"�"�76)'VD6Ia1 ;)�M����	6'�UQo"&6.
E+LW;4>gg;"G5#(
VGG�%=���0�)/n2D.5467.5467>;5!5!##5##".546;.#"##"632Ia1 ;)���/hQ�)$"5><L'VD+��	+1_^�>gg;+C5#(
VGG�P�$"',/:=A+LW;�� bO�)!n+G.5467.5467>;5!5!##5#"&'>54#"7267##">32Ia1 ;)���!gQ?)Js9Bf�'VD�':��	7!4U29/;�>gg;"H5#(
VGG�Db\^!7~+LW;��	8+25%�)nV.5467.5467>3!5!5!#!">;2#5'67.#".54>326754&+"BY, ;)�����	6'�WP/A
!AI-K['<!#5 )#�76)#L>�=hg;"G5#(
VGG�';���	;>4%	
!*H438l=(3
E+OW8�)�nT.5467.5467>;5!5!#!">;2#5#"&54632.#"326754&+"BY, ;)��%��	6'�O 
Q;'FZZL2

%0/2+#8#�76)#L>�=hg;"G5#(
VGG� /!��VL=@KB&##"�
E+OW8���n22675!5!#'>54&#"'67.#".54>�,I!0D�*ʤ(B;'E#3,#3.M1(++R:6:`81I�-
GG�JEFt53)`7-+?=.#.$&EK142[]55C���@�n&3�����n&3������n&3'���D��LxKW2675!5!#'>54&#"'67.#".'.''>7.54632>>54&#"N,I!0D�x|�(B;'E#3,#3.M1(++R:68\:6V#+[/0)M%5)UIBV-#= 1=��!%("/"�-
GG�JEFt53)`7-+?=.#.$&EK14/XY19D+&H'5LI;+E
#,!6" "#6���n..'#"&54632>54&#"'675#5!###-7%0$( +C@2%=&=C��hQ�CQG8/#;">12.FLGG��'N
RJ>[0���n*.'#"&54632>54&#"'675#5!#-7%0$( +C@2%=&=C���CQG8/#;">12.FLGGN
RJ>[0���|�n&8�<���|�n&9�<�����n&�*6����6n&�'l*����v�n&��L�v�nHT[i%2>54&#".54675!5!##"&5467.54632.#"632&"#"4632#"&73'.#"'632(M~K.)"5:!QJ75�9˴3C2]�Rab*/ZI4
#X,"#^>�!  !Y�(�;u��2eD	CfP!F?lE/>$ 3?S40D	FGGJ
TH:nX4S@-A+<@EA 	FF(&�""!!Q��&���?<H/H%.�xD235#5!!>32'>54&#"#5##".546;54&'&#".546�%:Ȃ��:#AR#H '#69Q�*$!
+/9KYLxD>t�GG�SM.h2) T)/.I���%!',i/2G=@;5��.���x&@E�.x;235#5!#>;#"#5##".546;54&'&#".546�%:Ȃz�6'@3.5Q�*$!
+/9KYLxD>t�GG�G��%!',i/2G=@;5��.��x&BE�.���xH-5##".546;54&'&#".5463235#5!!>32'>54&#"#5�*$!
+/9KYL4%:Ȃ��:#AR#H '#69Q�+�-%!',i/2G=@;5D>t�GG�SM.h2) T)/.I��z���.�@�x&D�.��x?-5##".546;54&'&#".5463235#5!#>;#"#5
�*$!
+/9KYL4%:Ȃz�6'@3.5Q�+�,%!',i/2G=@;5D>t�GG�G�z���.�@x&F�X���q,.'#"&54632>7#"'.=3326?b#<&1$+ &1.<F&Q'7Q A6=C2O#QC(A4��*(��s�J#8���U'%>54&'.+"'&5467#5!#;2e		`.+,(���11
>)+7-('J6k8HH9o.&
*"4R���m2%>54'.+"'&546732654'7#"';2n2b,+-E3B$Q6AAD >D+7-(%L/�`%!
3D).Y'(
*"4��#53.54632#&$#"3##YYP���+�Se������mgQ'G0!SXJPel6A+G��;�#53.54632#.#"3##YYRdUs�=P5tI7<mgQ'G7HY��kg7/0G��m�#53.54632#.#"3##YYRi[}�CQ=�P<D
lgQ'G6J[��jh900G����#53.54632#&#"3##YYPta��OT��FOlgQ'G2N^���;3-G����#53.54632#&#"3##YYPzfh��8U��MVlgQ'G1O^F~U�;5,G��)�#53.54632#.#"3##YYP�mr��<W[�qU\lgQ'G1O]FTgj;6,G��]�#53.54632#.#"3##YYP�s}Υ?Yb�|\clgQ'G1P\G~Tgj:8+G����#53.54632#.#"3##YYP�y�ޱB[j�dhlgQ'G1P\H~Sfk:9+G����#53.54632#&$#"3##YYP����E\q����lgQ'G1Q[HRfkt,G����#53.54632#&$#"3##YYP�����I_x��sulgQ'G1RZI~Rel8<,G��0�#53.54632#&$#"3##YYP����Ma�թ|zlgQ'G0 SYIQel7>+G��d�#53.54632#&$#"3##YYP����Pc��ô��mgQ'G0!SXIQel7?+G�����&K��,����&L��,����&M��,����&N�:,���&O�j,��W�&P��,��~�&Q��,����&R��,����&S�,���&T�S,��8�&U��,��m�&V��,
�-#53.54632&54632.#"#&$#"3##YYP���GzYB 6&(*X������mgQ'G0!SX^MCC
B	-#!?$el6A+G����,#53.54632>32.#"#.#"3##YYRdUAk,
O6 6&(+P5tI7<mgQ'G7HY/../
B	-#!'kg7/0G����+#53.54632>32.#"#.#"3##YYRi[K{4
R: 6&(*V=�P<D
lgQ'G6J[5344
B	-#!?$jh900G��C�*#53.54632>32.#"#&#"3##YYPta[�AU@ 6&(*V��FOlgQ'G2N^B;>?
B	-#!?$�;3-G��v�*#53.54632>32.#"#&#"3##YYPzfg�GXA 6&(*V��MVlgQ'G1O^F>BB
B	-#!?$�;5,G����,#53.5463254632.#"#.#"3##YYP�mt�NXB 6&(*U[�qU\lgQ'G1O]I@CC
B	-#!?$gj;6,G����-#53.54632454632.#"#.#"3##YYP�s��TXB 6&(*Vb�|\clgQ'G1P\LCCC
B	-#!?$gj:8+G���-#53.54632&54632.#"#.#"3##YYP�y��[XB 6&(*Vj�dhlgQ'G1P\PECC
B	-#!?$fk:9+G��A�,#53.54632&54632.#"#&$#"3##YYP����aXB 6&(*Vq����lgQ'G1Q[SG

CC
B	-#!?$fkt,G��s�-#53.54632&54632.#"#&$#"3##YYP���gXB 6&(*Vx��sulgQ'G1RZVHCC
B	-#!?$el8<,G����-#53.54632&54632.#"#&$#"3##YYP���!mXB 6&(*V�թ|zlgQ'G0 SYYICC
B	-#!?$el7>+G����-#53.54632&54632.#"#&$#"3##YYP���4sXB 6&(*W��ô��mgQ'G0!SX\KCC
B	-#!?$el7?+G��
�-9#53.54632&54632.#"#&$#"3##"&54632YYP���GzYB 6&(*X������mgQc'G0!SX^MCC
B	-#!?$el6A+G�����,8#53.54632>32.#"#.#"3##"&54632YYRdUAk,
O6 6&(+P5tI7<mgQ'G7HY/../
B	-#!'kg7/0G�����+7#53.54632>32.#"#.#"3##"&54632YYRi[K{4
R: 6&(*V=�P<D
lgQI'G6J[5344
B	-#!?$jh900G���C�*6#53.54632>32.#"#&#"3##"&54632YYPta[�AU@ 6&(*V��FOlgQ�'G2N^B;>?
B	-#!?$�;3-G���v�*6#53.54632>32.#"#&#"3##"&54632YYPzfg�GXA 6&(*V��MVlgQ�'G1O^F>BB
B	-#!?$�;5,G�����,8#53.5463254632.#"#.#"3##"&54632YYP�mt�NXB!5&(+U[�qU\lgQ�'G1O]I@CC
B	-#!?$gj;6,G�����-9#53.54632454632.#"#.#"3##"&54632YYP�s��TXB 6&(*Vb�|\clgQ2'G1P\LCCC
B	-#!?$gj:8+G����-9#53.54632&54632.#"#.#"3##"&54632YYP�y��[XB 6&(*Vj�dhlgQe'G1P\PECC
B	-#!?$fk:9+G���A�,8#53.54632&54632.#"#&$#"3##"&54632YYP����aXB 6&(*Vq����lgQ�'G1Q[SG

CC
B	-#!?$fkt,G���s�-9#53.54632&54632.#"#&$#"3##"&54632YYP���gXB 6&(*Vx��sulgQ�'G1RZVHCC
B	-#!?$el8<,G�����-9#53.54632&54632.#"#&$#"3##"&54632YYP���!mXB 6&(*V�թ|zlgQ�'G0 SYYICC
B	-#!?$el7>+G�����-9#53.54632&54632.#"#&$#"3##"&54632YYP���4sXB 6&(*W��ô��mgQ0'G0!SX\KCC
B	-#!?$el7?+G������#53.#"#&546323##YYV&S>.1
P"ZObz0mgQ'Gib4,!7@@DU��G�����#53.#"#.546323##YYU0jE49
R`Um�8mgQ'Ghc6.!5<!GW��G���J�#53&#"#.546323##YYQ��@J
Tn^��IlgQ'G�92!17 L\��G������&|�D,�����&}�>,���J�&~�0,��0�*#53.#"#&54632>32.#"3##YYV&S>.2
P"[Oe@I/!5&)*mgQ'Gib4,!7@@DUI$%
B	-#

+8G����0�+#53.#"#.54632>32.#"3##YYU0jE4:
RaU>b)
N5!5&)*ggQ'Ghc6.!5<!GW,,,,
B	-#<"G���I0�*#53&#"#.54632>32.#"3##YYQ��@K
To^S�:U=!5&)*ggQ'G�92!17 L\<79:
B	-#<"G����0�*6#53.#"#&54632>32.#"3##"&54632YYV&S>.2
P"[Oe@I/!5&)*mgQ�'Gib4,!7@@DUI$%
B	-#

+8G�����0�+7#53.#"#.54632>32.#"3##"&54632YYU0jE4:
RaU>b)
N5!5&)*ggQ�'Ghc6.!5<!GW,,,,
B	-#<"G����I0�*6#53&#"#.54632>32.#"3##"&54632YYQ��@K
To^S�:U=!5&)*ggQ�'G�92!17 L\<79:
B	-#<"G��������&��=�����&��=�w��"&'732654&#"'>32�Sz7=5A.).&"$!4CIQ��WQ+)?#'#"A		N>=N���
���&�_���
���&�_���H��& ����H��& ����H�vB&!����H�vB&!����.�v-?�����vE&?�������vE&?�������v�&@�����.�v�@�����v�&@���������
632.#"4632#"&�DeO"92eD	�!  !,3V3)PK""""���@����
"&'73267%4632#"&��7\D56C[��    �'B""B'0""!!�����@����������
'"&'73267%4632#"&"&'73267��7ZD56C]��    B7X&F+,F%X�&B!!B'""!!m BB ��������b�n.:".547>;5!5!##">32#"&'73265474632#"&fD*;#:3_�s���(
=PZ^gZ�<>>�=<5:F*.
>GG�?88JHE1D32f    c�nH%2>54&#".54675!5!##"&5467.54632.#"632.#"(M~K.)#3<!QJ75�9˴3C2]�Rab

(,ZI4
#.*+"$	Y�2U6$2'
?G-)<-GG0H=1]J,G8"6$57DF3:�n#"3267#"&54>;5!5!#sK!EXC1T)(l3m�>kA
����	
#7+KYX9I#AGG�Xn&%".54>;5!5!#'2654&'#"'Hq@@nC��X�M[AoFI\:9*&AZ�%N=8I$BGGH[::I!G-0#:&12bPn.".547>;5!5!##">32#"&'732654fD*;#:3c�oPn�(
=PZ^gZ�<>>�=<5F*.
>GG�?88JHE1D32�An"-%"&54>35!5!##"&54632'23254#"6w�BuL��A�>)P<;KMFDknv=*'�YY9I#@GG�	$-1)=>':Gn<'�n -;5!##"&'#".54>32>7532654&#"326?5.#"�4D_Q6O& I./M.-P36O&:#W;"*?7%(2��6%&6:"*?'GGRRAG]&(&K61J)%!M�*-24*-23+--*-j�n22675!5!#'>54&#"'67.#".54>�2L!0F�*ʤ(B)E ,#3.M/(+D:-GT#/D�+	XGG\HA,Y62&G)*85%&/4$<*JI&/:���n.:F".547>;5!5!##">32#"&'73265474632#"&4632#"&fD*;#:3_�s���(
=PZ^gZ�<>>�=<5:�_!  !F*.
>GG�?88JHE1D32f    ��""!!�����n&���/n+#"3267#"&54>;5!5!#4632#"&sK!EXC1T)(l3m�>kA
�����!  !�	
#7+KYX9I#AGG�B""!!Xn&2%".54>;5!5!#'2654&'#"4632#"&'Hq@@nC��X�M[AoFI\:9*&AZ�!  !�%N=8I$BGGH[::I!G-0#:&12�""!!
Pn.:".547>;5!5!##">32#"&'7326544632#"&fD*;#:3c�oPn�(
=PZ^gZ�<>>�=<5�z!  !F*.
>GG�?88JHE1D32�""!!&An"-9%"&54>35!5!##"&54632'23254#"4632#"&6w�BuL��A�>)P<;KMFDknv=*'��!  !�YY9I#@GG�	$-1)=>':Gn<'�""!!����n&��������n&����x&>7.54632.'7>54&#")M%5)UIBV-#!g:&]T+[/�!%("/"+&H'5LI;+E
H
9�6" "#6�4����!"&'732654&#"'632''73�X}747^@-*+'13N�.�(u1$(S��F7375
Ca�B�� 8&1D�4�v��!"&'732654&#"'632''73�X}747^@-*+'13N�.�(u1$(S�vF7375
Ca�B�� 8&1D��v��-4632#"&"&'732654&#"'632''73�!  !$X}747^@-*+'13N�.�(u1$(S ""!!��F7375
Ca�B�� 8&1D�I��6� 73'"&54632.#"3267�I�(u;X��CMQEBcM"=._>,,+&2��'n��C51C/M.'DI	C�I�v6 73'"&54632.#"3267�I�(u;X��CMQEBcM"=._>,,+&2���'n��C51C/M.'DI	C��v6,4632#"&73'"&54632.#"3267�!  !-�(u;X��CMQEBcM"=._>,,+&2 ""!!G��'n��C51C/M.'DI	C�.����73'#"&54673267�.�(�;u�lC)OQYX:41#1!��'���
A4/OB�.�v��73'#"&54673267�.�(�;u�lC)OQYX:41#1!���'���
A4/OB��v��&4632#"&73'#"&54673267�!  !�(�;u�lC)OQYX:41#1! ""!!Y��'���
A4/OB�I�v���+73'#"'3267#"&547&54673267�I�(u;X�LC)Q 0"C)OP7YX?/+& 0"��'n��
,
?
C3"<+CB�.�v-�C%73'23267#"&5467654&#"'>7.#".54>32>�c�(u;X�8&=+)5 ;C8> 6F
#GA.IY':"::u�'nn-&0<
7,#5#7
!;+25X7$-�.�v��T%73'"'3267#"&547.5467.#"'>7.#".54>32>323267�c�(u;X�m

!'5 <B!6F
#GA.IY':"::&8&+! '5u�'nn�

;
8.

"'	#7
!;+25X7$-.%


<
�.���73'.#"'632�.�(�;u��2eD	CfP!��'���?;H/G&�.�v��73'.#"'632�.�(�;u��2eD	CfP!���&���?<H/H%��v�� 4632#"&73'.#"'632�!  !�(�;u��2eD	CfP!;""!!Q��&���?<H/H%�I����73'"&'73267�I�(�;f��Ad#L=>M"d���&~��'B!!B'����� 4632#"&73'"&'73267�!  !-�(�;f��Ad#L=>M"d*""!!=��&~��'B!!B'�X�v��"73'"&'73267"&'73267�\�(�:b��=]  I:;H!c;=[")K/0K)![ho�+iiy%??&h??��v�� .4632#"&73'"&'73267"&'73267�!  !T�(�:b��=]  I:;H!c;=[")K/0K)![*""!!%o�+iiy%??&h??���9�v��������v���������v�� �����B%"'3267#"&547.54673267jQ 0"C)OQYX?/+& /"C�"1
4&#!32
0
�.��-;'2"3267#"&5467654&#"'67.#".54>32>h8&80)5 ;C:@ 5F
#"BE+I[':"9;$&	1
-#+

.	.#*(F/%�.���I"'3267#"&547.5467&#"'67.#".54>32>323267

!%5 <B 5F
#"BE+I[':"9;&8&)$ *5�0
-%	
		.	.#*(F/%%
	
1
���M�v��[*���������:3�n����v���n4���*nB.'#".547.54676;5!5!##">32&"#"3:7&54632�@k@&*Qq��*��%=%#�.G#*'1$:8?2+"3((
 BGG�#
GJ!!. *.��<nZ"&'.546?'.#"3267#"&54>32767.5467>;5!5!##"3:3&54632'T(!''/@(963 T@P%  Z4��<�1i0/PS
*+-"=E=�N


J)+?<0(189N#

OH,?NGG�6.;"1 %	��i�g��,.54632.#"7"&54632"&'73267�SB/"(&$d2J7="$
<Gg$K$CC	B
, B'oR<CY*7L:�Vg��4632#"&53&'73267#"'�6
@715-D[GR3Tھ'B@E>^L=���&4632#"&##5353&'73267#"'3WQYY6
@715-D[GR3gT���'G�'B@E>^L=�G�����(4632#"&7#"'#"&'73267&'732674�VCU3Z;Bf"G=.31@3-1)
W"XIF?5PV=:?9
=<A9�%gX�.4632#"&.#"#".'73267&'73267#"'�(&

#9/B%+@715-D[GT�H4;7,,"B@E>^L%5�gg��'4632#"&.#"'63273267#"'`I)2""'42$9715-D[G+!T�O[&	IB@E>^L,<�Tg��64632#"&.#"'>327.#"'63273267#"'`S-+*2-F&, '42$9715-D[G+!T�(%	E
+&49EB@E>^L,<������&��([�74632#"&##53.#"#".'73267&'73267#"'3w3QYW'%

#9/B%+@715-D[GnT���'GD1;7,,"B@E>^L+G�j��04632#"&##53.#"'63273267#"'3�QYX)2!"'42$9715-D[G+!nT���'GLX%	IB@E>^L3G�W��?4632#"&##53.#"'>327.#"'63273267#"'3�QYK+**2-F&, '42$9715-D[G+!nT���'G$#
	E
+&49EB@E>^L3G���N4632#"&##53.#"#".'732632654&/.=7&'73267#"'3�.QYB)60B($
  0%
 7.F$	@715-D[GWT���'G(25085 
35B@E>^L,G�94632#"&#53.54632&'73267#"'#&$#"3##3�&YP���=x3@715-D[G)!$Ae������mgQT��G0!SXVG)]B@E>^L3el6A+G����74632#"&#53.54632&'73267#"'#.#"3##�BYRdU\G@715-D[G P5tI7<mgQT��G7HY/
B@E>^L	*7kg7/0G��"�84632#"&#53.54632&'73267#"'#.#"3##>�YRi[8a*@715-D[GQ=�P<D
lgQT��G6J[B@E>^L+5jh900G��f�74632#"&#53.54632&'73267#"'#&#"3##���YPtaI�8
@715-D[G$ T��FOlgQT��G2N^*' B@E>^L+4�;3-G����74632#"&#53.54632&'73267#"'#&#"3##���YPzfV�@
@715-D[G(#U��MVlgQT��G1O^1-(B@E>^L+5�;5,G����84632#"&#53.54632&'73267#"'#.#"3##��oYP�mi�I@715-D[G&-(W[�qU\lgQT��G1O]<6%6B@E>^L
-8gj;6,G����84632#"&#53.54632&'73267#"'#.#"3##�HYP�sp�N@715-D[G-(Yb�|\clgQT��G1P\;4$4B@E>^L+5gj:8+G���84632#"&#53.54632&'73267#"'#.#"3##9� YP�yy�S@715-D[G/)[j�dhlgQT��G1P\;3#4B@E>^L*3fk:9+G��J�74632#"&#53.54632&'73267#"'#&$#"3##f��YP����Y@715-D[G1+\q����lgQT��G1Q[=5$7B@E>^L*2fkt,G���84632#"&#53.54632&'73267#"'#&$#"3##���YP����b@715-D[G6._x��sulgQT��G1RZD:'@B@E>^L*4el8<,G����84632#"&#53.54632&'73267#"'#&$#"3##���YP���
h"@715-D[G:1a�թ|zlgQT��G0 SYH=(FB@E>^L+4el7>+G����94632#"&#53.54632&'73267#"'#&$#"3##�YYP���$p*@715-D[G# ;c��ô��mgQT��G0!SXOC*QB@E>^L2el7?+G���$n�54632#"&.5463273267#"'3###53.#"���TK,!+715-D[G

ngQYW=7(*T�#@"ASB@E>^L&1G��'Ghc1+"7��[�44632#"&#53.#"#&5463273267#"'3##wYV&S>.1
P"ZO4)3715-D[GmgQT��Gib4,!7@@DUB@E>^L%/G����[�64632#"&#53.#"#.54632'73267#"'3##wYU0jE49
R`UF7@715-D[GmgQT��Ghc6.!5<!GWB@E>^L&/G���J[�74632#"&#53&#"#.54632&'73267#"'3##wYQ��@J
Tn^Br2	@715-D[G lgQT��G�92!17 L\&#B@E>^L	(2G����g��"0&54632.#"!53%"&54632"&'73267P?TB0")%#��Q1K8*!!%
<GgHKCC	B
, B'��oR<C.+*7L:������&���g��*8&'#"&'73267632.#"7"&54632"&'73267�'(6E^"F9-1/&$50")%#d2J8*!!%	=Gg-0Y^FDIC	B
, B'oR<C.+*7L:�%g��$0=.#"#".'732632>32.#"7"&54632"&'73267�(&

#9/B%+ L5/"(&x2J7="$
<GgH4;7,,,,	B
, -VoR<CY*7L:�gg��)6.#"'632>32.#"7"&54632"&'73267�)2""'40:=*/"($|2J7="$
<GgO[&	I ($$	B
-#5MoR<CY*7L:�Tg��.:G2.#"#.#"'>327.#"'632>"&54632"&'73267C/"'%
U-+*2-F&, '4-@
=�2J7="$
<G�	B
-#@&(%	E
+&49E!(%$�R<CY*7L:������&����(��&����j��&����W��&�������&N�-9F#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���@xSB/"(&$X������mgQ�2J7="$
<G'G0!SXXI
CC	B
, B'el6A+G���R<CY*7L:4�+7D#53.54632>32.#"#.#"3##"&54632"&'73267YYRdUxUI1/"(&P5tI7<mgQL2J7="$
<K'G7HYR*(	B
, 1@kg7/0G���R<CY*7L:e�+7D#53.54632>32.#"#.#"3##"&54632"&'73267YYRi[Gu1
N40"(&#U=�P<D
lgQ}2K8=!%
<G'G6J[/-/-	B
, B'jh900G���R<CY*7L:��*6C#53.54632>32.#"#&#"3##"&54632"&'73267YYPtaV�>N=/"(&$V��FOlgQ�2J7="$
<G'G2N^;689	B
, B'�;3-G���R<CY*7L:��*6D#53.54632>32.#"#&#"3##"&54632"&'73267YYPzfb�FP>/#(&$U��MVlgQ�2J8* "$
=G'G1O^?9<<	B
, B'�;5,G���R<C.+*7L:�+7E#53.54632>32.#"#.#"3##"&54632"&'73267YYP�mn�KS@0#(%#U[�qU\lgQ22J8*!!%	=G'G1O]B;>?	B
, B'gj;6,G���R<C.+*7L:N�+7E#53.54632>32.#"#.#"3##"&54632"&'73267YYP�s|�RSA/#(%#Vb�|\clgQe2J8* "$
=G'G1P\F>BB	B
, B'gj:8+G���R<C.+*7L:��,8E#53.5463254632.#"#.#"3##"&54632"&'73267YYP�y��YSB/"(&$Vj�dhlgQ�2J7="$
<G'G1P\J@CC	B
, B'fk:9+G���R<CY*7L:��,8F#53.54632454632.#"#&$#"3##"&54632"&'73267YYP����_SB0#(%#Vq����lgQ�2J8* "$
=G'G1Q[MBCC	B
, B'fkt,G���R<C.+*7L:��-9G#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���fTB0#(%#Vx��sulgQ�2J8*!!%	=F'G1RZPCCC	B
, B'el8<,G���R<C.+*7L:�-9G#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���lTA0#(%#V�թ|zlgQ02J8*!!$
=G'G0 SYSE		CC	B
, B'el7>+G���R<C.+*7L:K�-9G#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���-qSB/"(&$W��ô��mgQc2J7* "$
<G'G0!SXUGCC	B
, B'el7?+G���R<C.+*7L:�$��,8F#53.#"#.54632>32.#"3##"&54632"&'73267YYS>5(*PTK,=A- ."('rgQ�1K8*!!%
<G'Ggd1+"7#@"AS'!"	B	-#0BG���R<C.+*7L:����)5B#53.#"#&54632>32&#"3##"&54632"&'73267YYV&S>.2
P"[OeAD0-!")%mgQ�1K8=!%
<G'Gib4,!7@@DUI$%	B-#

+8G���R<CY*7L:����+7D#53.#"#.54632>32.#"3##"&54632"&'73267YYU0jE4:
RaU>b)
I5 -")%ggQ�1K8=!%
<G'Ghc6.!5<!GW,,,,	B	,"!<"G���R<CY*7L:�I��*6C#53&#"#.54632>32.#"3##"&54632"&'73267YYQ��@K
To^S�:S:0")%ggQ�1K8=!%
<G'G�92!17 L\<79:	B
-#<"G���R<CY*7L:�I����,%73'"'3267#"&547.54673267�I�Kj;X��Q 0"C)OQYX?/+& /"Cy�&mn"1
4&#!32
0
�,��+�8>%73"3267#"&5467654&#"'67.#".546?67�I�Kj080)5 ;C:@ 5F
#"BE+I[�n3*"-y�$"&	1
-#+

.	.#*(F/ 
UF�,����FL"'3267#"&547.5467&#"'67.#".5467'73326767

!%5 <B 5F
#"BE+I[�Kj1)$ *5�n3*"-�0
-%	
		.	.#*(F/ 
y�& 
	
1
F����734632#"&�k[$%%$����%%$  s���333�osn�����"kx7#537#53733733#3##7##%7#�}���"F!�"E"~���"F#�"E���B�A����A�B����9��x%/"&546323#254#""&54632'254#"�GJELHKF"M�NKK&""�HIELIIEMKK&""`UV^^VU`_��Nvu:;:<��aTV__VTaAtv;;::s���3�o���D�['@
&54673�KFELQDIHF�g���fj�����m;�[@
654'3<DHGFRKFFK�j��mg�����eI%�7'7'37'�v��d�
�xWVMT�^6��6^�/��2a�$#53533##スI��II��I�.��t>73.a
0�;�45~71#R3#1��RRH���y74632#"&H$%%$6%%$  *�Z�A3#1R��SA�0����
"&54>32'2654&#"sp-dRtq-eSK@@KK>>
ít�W��s�XL��������W[�!467'73H/�I�*e!;<��6/��?>54&#"'>32!!/�1E&@3.K"2'g@^n,M2�P�CL�5TR19>&:#1fY7b`5�Q(����)"&'532654&+532654&#"'>32�5_)+b.ZSdVAAPTC74P$-%lDilUEVZ�
SKBB<JK<39!=+dMHW
YG^w�
%!533##=4>5#U��D\hhVɠN�#Q��%QG4��@���� "&'532654&#"'!!>32�2\ =BMWVRC,Q��7Ag=�
TJOGI	PQ�/]Ep7����-".54>32.#"3>32'2654&#" Aj>(FmN1+BU1H:\oue;I@A,B$ @
D�k>xkS/L.Oh:#0qho�KPUDO'; +T7,��!5!#�����_yQG�}4����'3"&5467.54>32>54&#"2654&'kuQ90C8\57[7I7&E,9dB/B=64=A/EFIM=?A
gYI[U@9L&&L:AR5G0<X0�=5233279��B70G$L64A4����-"&'532>7##"&546322>54.#"�0+BV0I:\oudBi>(Fm,B$ ?0:JA
L.Oh:#0rgp�D�k=ykS/['<,S7PUDOU���&"&54632"&54632�$$$$$$$$� $&&$ �T $&&$ ,��&"&54632#>7�$$$$
0C� $&&$ ��5~7;�42M�85%
2��g1�N��N2���!!!!2�=�=�II2M�87-52g���=���N�1�G����+754>7>54&#"'>324632#"&�% '96(J"(\/[i/#!$[$$$$�&72*0"/:G`V+@6)(	�&&$  l�Z.@3#3#l�rr�@F��F*�Z�@3#*RR@�6�Z�@3#53#6qq��`ZF�	�3##�2�N��O�=g�����b���!!��aZD,�ZQ@26=467.=4&#,<?aI)0j460)Ia?<r)1�KAH.�b
:3�.H@K�1)�Z2@3#�HH@�6�Z[@"5>=475&=4&'53[<>aJ*/jj/*Ja><()1�K@H.�cc�.HAK�1)2��6323267#".'.#"21H (%(<0I '$'<O5

"O5

"(�W!!(��\WR(�W!!(��hWRR���'>73Y/C�5~7<�4Q���#>7�
0C�5~7;�3S���'>733'>73Z/C[/C�5~7<�45~7<�4Q���#>7##>7�
0C[
0C�5~7;�35~7;�3H���z#"&54632!"&54632!"&54632�$$$$��$$$$�$$$$ $&&$  $&&$  $&&$ Es�'7'77�2��3��3��2�3��3��2��22_�."&54632!!"&54632!!!!��=�!!!!� "" MI� "" ��1#RH�n3&'.+5!#3##'7326767#H�+&B����	TT�f�
,12��$
GG(H?O��G"��������&x1x�{�������&�y�������.�&�z�����c����&�x�4���K����&�y�#���W����&�z�+��� ����&�{����A����&�|�-���F����&�y�������&w"y�������C&�2��7��
6%�&����$6�I'�����$����&�������,��'����\�W.#"'>54.54632~&%*$^YY?SG,E�15P��|DmCK_Ui��[QX �R�r�7'7'37'�Gpu>uqH433�a7 vv 7akk���x4@#"&54675.''>7.546325#53#3267>54&#"�C)KU00B�:+[/0)M%5)UIBV-#*q4@�g:42 /"�>!%("/"�
O?)D�	%9D+&H'5LI;+E�GG��B,!"-6" "#6���HN�&�J3�g�,8.#"#".'732632654&/.=7'4632#"&�+60B($
  0%
 7.F$)1!  !g-25085 
35,31�""""�g��F4632#"&.#"#".'732632654&/.=7&'73267#"'+�+60B($
  0%
 7.F$	@715-D[GT�-25085 
35B@E>^L1��gD�%;.'&/.5<?>32.#"#.#"#".'732632�*7/F#

P7!5&(*�*7/B($
  1%
g315..
B	-#!?$-250<9��gD�%;G.'&/.5<?>32.#"#.#"#".'73263274632#"&�*7/F#

P7!5&(*�*7/B($
  1%
�g315..
B	-#!?$-250<9m��g��$:FS&'&/.5<?>32.#"#.#"#".'7326327"&54632"&'73267�07/F#
L6/"(&$�*7/B($
  1%
�2J7="$
<Gg7;15-,	B
, B'-250<9oR<CY*7L:n:!632>32'>54&#"#".5467.#"#".54675#5��YtPa,#G>P
.6&"L27%.${nGCA<1R45_'E*2? 2(8##U(8&
PG�h�n<G!632#"&54632#".54>;.#"#".54675#52654&#"��/*&OyDV;jA;3
JIJEseIqAK�XiQ)(*$$2�8G##,nGW0aH
(996:%(3MM2CW1\@EX*MGS&*!
eG��#-'(<n#4##5#"&'>54.#"#".54675#5267!632<hQ@&Hv:B'>%)(*$$2&=�M*&by17:nG��^ac'"	S&*!
eG�sW=J1<+&�4j	��
M
{�"Q	�
0y�
��
-;�K
	h	�	�	6�	")	_	 �	D�	*%		(g	
`�	>9	<�	
"�	4�		v]	"'	�Copyright 2015-2021 Google LLC. All Rights Reserved.Copyright 2015-2021 Google LLC. All Rights Reserved.Noto SansNoto SansRegularRegular2.007;GOOG;NotoSans-Regular2.007;GOOG;NotoSans-RegularNoto Sans RegularNoto Sans RegularVersion 2.007Version 2.007NotoSans-RegularNotoSans-RegularNoto is a trademark of Google LLC.Noto is a trademark of Google LLC.Monotype Imaging Inc.Monotype Imaging Inc.Monotype Design TeamMonotype Design TeamDesigned by Monotype design team, Irene Vlachou.Designed by Monotype design team, Irene Vlachou.http://www.google.com/get/noto/http://www.google.com/get/noto/http://www.monotype.com/studiohttp://www.monotype.com/studioThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFLhttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFLiota adscriptiota adscriptAccented Greek SCAccented Greek SCTitling Alternates I and J for titling and all cap settingsTitling Alternates I and J for titling and all cap settingsflorin symbolflorin symbol�j2R	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a����������������	���
����������bc�d�e�������f����g�����h���jikmln�oqprsutvw�xzy{}|��~�����
��� !"#��$%&'()*+,-./0123��456789:;<=>?@AB��CDEFGHIJKLMNOPQ��RSTUVWXYZ[����\]^_`abcdefghijklmnopq�rstu��vwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~������������������������������������������������������������������������������������������������������������������������������������������������												
			
																			 	!	"	#	$	%	&	'	(	)	*	+	,	-	.	/	0	1	2	3	4	5	6	7	8	9	:	;	<	=�	>	?	@	A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	[	\	]	^	_	`	a	b	c	d	e	f	g	h	i	j	k	l	m	n	o	p	q	r	s	t	u	v	w	x	y	z	{	|�	}	~		�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�









	























 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������









	























 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgNULLCRuni00A0uni00AD	overscoreuni00B2uni00B3uni00B5uni00B9AmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflex
Cdotaccent
cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve
Edotaccent
edotaccentEogonekeogonekEcaronecaronGcircumflexgcircumflex
Gdotaccent
gdotaccentuni0122uni0123HcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJijJcircumflexjcircumflexuni0136uni0137kgreenlandicLacutelacuteuni013Buni013CLcaronlcaronLdotldotNacutenacuteuni0145uni0146NcaronncaronnapostropheEngengOmacronomacronObreveobreve
Ohungarumlaut
ohungarumlautRacuteracuteuni0156uni0157RcaronrcaronSacutesacuteScircumflexscircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring
Uhungarumlaut
uhungarumlautUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacute
Zdotaccent
zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188Dtailuni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191fhookuni0193
Gammalatinuni0195	Iotalatinuni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornUpsilonlatinuni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9
Aringacute
aringacuteAEacuteaeacuteOslashacuteoslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217uni0218uni0219uni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236uni0237uni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240Glottalstopcasedglottalstopcaseduni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269iotaserifeduni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BBuni02BCuni02BDuni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8	macronmodacutemodgravemoduni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EAuni02EBuni02ECuni02EDuni02EEuni02EFuni02F0uni02F1uni02F2uni02F3uni02F4uni02F5uni02F6uni02F7uni02F8uni02F9uni02FAuni02FBuni02FCuni02FDuni02FEuni02FF	gravecomb	acutecombuni0302	tildecombuni0304uni0305uni0306uni0307uni0308
hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni034Funi0350uni0351uni0352uni0353uni0354uni0355uni0356uni0357uni0358uni0359uni035Auni035Buni035Cuni035Duni035Euni035Funi0360uni0361uni0362uni0363uni0364uni0365uni0366uni0367uni0368uni0369uni036Auni036Buni036Cuni036Duni036Euni036Funi0370uni0371uni0372uni0373uni0374uni0375uni0376uni0377uni037Auni037Buni037Cuni037Duni037Euni037Ftonos
dieresistonos
Alphatonos	anoteleiaEpsilontonosEtatonos	IotatonosOmicrontonosUpsilontonos
OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsiuni03A9IotadieresisUpsilondieresis
alphatonosepsilontonosetatonos	iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhouni03C2sigmatauupsilonphichipsiomegaiotadieresisupsilondieresisomicrontonosupsilontonos
omegatonosuni03CFuni03D0uni03D1uni03D2uni03D3uni03D4uni03D5uni03D6uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0460uni0461uni0462uni0463uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471uni0472uni0473uni0474uni0475uni0476uni0477uni0478uni0479OmegaroundcyomegaroundcyOmegatitlocyomegatitlocyOtcyotcyuni0480uni0481uni0482uni0483uni0484uni0485uni0486uni0487uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048Funi0490uni0491uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8uni04D9uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni0512uni0513uni0514uni0515uni0516uni0517uni0518uni0519uni051Auni051Buni051Cuni051Duni051Euni051Funi0520uni0521uni0522uni0523uni0524uni0525uni0526uni0527Enlefthookcyuni0529uni052Auni052Buni052Cuni052Duni052Euni052Fbinducandradevacandrabindudevaanusvaradevavisargadeva
ashortdevaadevaaadevaidevaiidevaudevauudevarvocalicdevalvocalicdevaecandradeva
eshortdevaedevaaidevaocandradeva
oshortdevaodevaaudevakadevakhadevagadevaghadevangadevacadevachadevajadevajhadevanyadevattadevatthadevaddadevaddhadevannadevatadevathadevadadevadhadevanadevannnadevapadevaphadevabadevabhadevamadevayadevaradevarradevaladevalladevallladevavadevashadevassadevasadevahadevaoevowelsigndevaooevowelsigndeva	nuktadevaavagrahadevaaavowelsigndevaivowelsigndevaiivowelsigndevauvowelsigndevauuvowelsigndevarvocalicvowelsigndevarrvocalicvowelsigndevaecandravowelsigndevaeshortvowelsigndevaevowelsigndevaaivowelsigndevaocandravowelsigndevaoshortvowelsigndevaovowelsigndevaauvowelsigndeva
viramadevauni094Eawvowelsigndevaomdeva
udattadevaanudattadevauni0953uni0954candralongevowelsigndevauevowelsigndevauuevowelsigndevaqadevakhhadevaghhadevazadeva	dddhadevarhadevafadevayyadeva
rrvocalicdeva
llvocalicdevalvocalicvowelsigndevallvocalicvowelsigndeva	dandadevadbldandadevazerodevaonedevatwodeva	threedevafourdevafivedevasixdeva	sevendeva	eightdevaninedevaabbreviationsigndevauni0971acandradevaoedevaooedevaawdevauedevauuedevamarwariddadevazhadevaheavyyadeva	gabardeva	jabardevauni097D
ddabardeva	babardevauni1AB0uni1AB1uni1AB2uni1AB3uni1AB4uni1AB5uni1AB6uni1AB7uni1AB8uni1AB9uni1ABAuni1ABBuni1ABCuni1ABDuni1ABE
wbelowcombwturnedbelowcombveroundedcydelongleggedcy	onarrowcyeswidecytetallcytethreeleggedcyhardsigntallcy	yattallcy
ukunblendedcyuni1CD0uni1CD1uni1CD2uni1CD3uni1CD4uni1CD5uni1CD6uni1CD7uni1CD8uni1CD9uni1CDAuni1CDBuni1CDCuni1CDDuni1CDEuni1CDFuni1CE0uni1CE1uni1CE2uni1CE3uni1CE4uni1CE5uni1CE6uni1CE7uni1CE8uni1CE9uni1CEAuni1CEBuni1CECuni1CEDuni1CEEuni1CEFuni1CF0uni1CF1uni1CF2uni1CF3uni1CF4uni1CF5uni1CF6uni1CF8uni1CF9uni1D00uni1D01aeturnedBbarredsmalluni1D04uni1D05Ethsmalluni1D07eturnedopeniturneduni1D0Auni1D0BLstrokesmalluni1D0DNreversedsmalluni1D0F
Oopensmall	osideways
osidewaysopenoslashsidewaysoeturneduni1D15otophalfobottomhalfuni1D18RreversedsmallRturnedsmalluni1D1Buni1D1C	usidewaysudieresissidewaysmsidewaysturneduni1D20uni1D21uni1D22Ezhsmallspirantvoicedlaryngealuni1D25uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2CAEmoduni1D2E
Bbarredmoduni1D30uni1D31Ereversedmoduni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3ANreversedmoduni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43
aturnedmoduni1D45aeturnedmoduni1D47uni1D48uni1D49uni1D4Aeopenmodeturnedopenmoduni1D4D
iturnedmoduni1D4Funi1D50uni1D51uni1D52oopenmodotophalfmodobottomhalfmoduni1D56uni1D57uni1D58usidewaysmod
mturnedmoduni1D5Buni1D5Cuni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni1D6Buni1D6Cuni1D6Duni1D6Euni1D6Funi1D70uni1D71uni1D72uni1D73uni1D74uni1D75uni1D76uni1D77uni1D78uni1D79uni1D7Aiotaserifedstrokeuni1D7Cuni1D7DUsmallstrokeuni1D7Funi1D80uni1D81uni1D82uni1D83uni1D84uni1D85uni1D86uni1D87uni1D88uni1D89uni1D8Auni1D8Buni1D8Cuni1D8Duni1D8Euni1D8Funi1D90uni1D91uni1D92uni1D93uni1D94uni1D95uni1D96uni1D97uni1D98uni1D99uni1D9Auni1D9Buni1D9Cuni1D9Duni1D9Eereversedopenmoduni1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5iotaserifedmodiotaserifedstrokemoduni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1phimodlatinuni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1DC0uni1DC1uni1DC2uni1DC3uni1DC4uni1DC5uni1DC6uni1DC7uni1DC8uni1DC9uni1DCAuni1DCBuni1DCCuni1DCDuni1DCEuni1DCFuni1DD0uni1DD1uni1DD2uni1DD3uni1DD4uni1DD5uni1DD6uni1DD7uni1DD8uni1DD9uni1DDAuni1DDBuni1DDCuni1DDDuni1DDEuni1DDFuni1DE0uni1DE1uni1DE2uni1DE3uni1DE4uni1DE5uni1DE6uni1DE7uni1DE8uni1DE9uni1DEAuni1DEBuni1DECuni1DEDuni1DEEuni1DEFuni1DF0uni1DF1uni1DF2uni1DF3uni1DF4uni1DF5kavykaaboverightcmbkavykaaboveleftcmbdotaboveleftcmbwideinvertedbridgebelowcmbdeletionmarkcmbuni1DFCuni1DFDuni1DFEuni1DFFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute	Wdieresis	wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1E9Cuni1E9Duni1E9Euni1E9Funi1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1EFAuni1EFBuni1EFCuni1EFDuni1EFEuni1EFFuni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200Buni200Cuni200Duni200Euni200Funi2010uni2011
figuredashuni2015uni2016
underscoredbl
quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2028uni2029uni202Auni202Buni202Cuni202Duni202Euni202Funi2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B	exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni205Funi2060uni2061uni2062uni2063uni2064uni2066uni2067uni2068uni2069uni206Auni206Buni206Cuni206Duni206Euni206Funi2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni2090uni2091uni2092uni2093uni2094uni2095uni2096uni2097uni2098uni2099uni209Auni209Buni209Cuni20A0
colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9uni20AAdongEurouni20ADuni20AEuni20AFuni20B0uni20B1uni20B2uni20B3uni20B4uni20B5uni20B6uni20B7uni20B8uni20B9uni20BAuni20BBuni20BCuni20BDuni20BEuni20BFuni20F0uni2100uni2101uni2102uni2103uni2104uni2105uni2106uni2107uni2108uni2109uni210Auni210Buni210Cuni210Duni210Euni210Funi2110uni2111uni2112uni2113uni2114uni2115uni2116uni2117weierstrassuni2119uni211Auni211Buni211Cuni211Dprescriptionuni211Funi2120uni2121uni2123uni2124uni2125uni2126uni2127uni2128uni2129uni212Auni212Buni212Cuni212D	estimateduni212Funi2130uni2131uni2132uni2133uni2134uni2135uni2136uni2137uni2138uni2139uni213Auni213Buni213Cuni213Duni213Euni213Funi2140uni2141uni2142uni2143uni2144uni2145uni2146uni2147uni2148uni2149uni214Auni214Buni214Cuni214Duni214Euni214Funi2150uni2151uni2152uni2153uni2154uni2155uni2156uni2157uni2158uni2159uni215A	oneeighththreeeighthsfiveeighthsseveneighthsuni215Funi2184uni2189
minus.devauni25CCuni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C6Duni2C6Euni2C6Funi2C70uni2C71uni2C72uni2C73uni2C74uni2C75uni2C76uni2C77uni2C78uni2C79uni2C7Auni2C7Buni2C7Cuni2C7Duni2C7Euni2C7Fbecombcyvecombcy	ghecombcydecombcy	zhecombcyzecombcykacombcyelcombcyemcombcyencombcyocombcypecombcyercombcyescombcytecombcyhacombcy	tsecombcy	checombcy	shacombcyshchacombcy
fitacombcy
estecombcyacombcyiecombcydjervcombcymonographukcombcy	yatcombcyyucombcyiotifiedacombcylittleyuscombcybigyuscombcyiotifiedbigyuscombcyuni2E00uni2E01uni2E02uni2E03uni2E04uni2E05uni2E06uni2E07uni2E08uni2E09uni2E0Auni2E0Buni2E0Cuni2E0Duni2E0Euni2E0Funi2E10uni2E11uni2E12uni2E13uni2E14uni2E15uni2E16uni2E17uni2E18uni2E19uni2E1Auni2E1Buni2E1Cuni2E1Duni2E1Euni2E1Funi2E20uni2E21uni2E22uni2E23uni2E24uni2E25uni2E26uni2E27uni2E28uni2E29uni2E2Auni2E2Buni2E2Cuni2E2Duni2E2Euni2E2Funi2E30uni2E31uni2E32uni2E33uni2E34uni2E35uni2E36uni2E37uni2E38uni2E39uni2E3Auni2E3Buni2E3Cuni2E3Duni2E3Euni2E3Funi2E40uni2E41uni2E42dashwithupturnleft
suspensiondblkavykainvertedlow kavykawithkavykaaboveinvertedlow	kavykalowkavykawithdotlowstackedcommadbl
solidusdottedtripledagger
medievalcommaparagraphuspunctuselevatuscornishversedividercrosspattyrightcrosspattyleftTironiansignetuniA640uniA641uniA642uniA643
Dzereversedcy
dzereversedcyuniA646uniA647uniA648uniA649
Ukmonographcy
ukmonographcyOmegabroadcyomegabroadcyYerneutralcyyerneutralcy
Yerubackyercy
yerubackyercy
Yatiotifiedcy
yatiotifiedcyYureversedcyyureversedcyIotifiedacyuniA657YusclosedlittlecyyusclosedlittlecyYusblendedcyyusblendedcyYusiotifiedclosedlittlecyyusiotifiedclosedlittlecyuniA65EuniA65F
Tsereversedcy
tsereversedcyDesoftcydesoftcyElsoftcyelsoftcyEmsoftcyemsoftcyOmonocularcyomonocularcyObinocularcyobinocularcyOdoublemonocularcyodoublemonocularcyuniA66EuniA66FuniA670uniA671uniA672uniA673uniA674uniA675uniA676uniA677uniA678uniA679uniA67AuniA67BuniA67CuniA67DuniA67EuniA67FuniA680uniA681uniA682uniA683uniA684uniA685uniA686uniA687uniA688uniA689TewithmiddlehookcyuniA68BuniA68CuniA68DuniA68EuniA68FuniA690uniA691uniA692uniA693uniA694uniA695uniA696uniA697	Odoublecy	odoublecy
Ocrossedcy
ocrossedcyuniA69CuniA69DuniA69EuniA69FuniA700uniA701uniA702uniA703uniA704uniA705uniA706uniA707uniA708uniA709uniA70AuniA70BuniA70CuniA70DuniA70EuniA70FuniA710uniA711uniA712uniA713uniA714uniA715uniA716uniA717uniA718uniA719uniA71AuniA71BuniA71CuniA71DuniA71EuniA71FuniA720uniA721uniA722uniA723uniA724uniA725uniA726uniA727uniA728uniA729uniA72AuniA72BuniA72CuniA72DuniA72EuniA72FuniA730uniA731uniA732uniA733uniA734uniA735uniA736uniA737uniA738uniA739uniA73AuniA73BuniA73CuniA73DuniA73EuniA73FuniA740uniA741uniA742uniA743uniA744uniA745uniA746uniA747uniA748uniA749uniA74AuniA74BuniA74CuniA74DuniA74EuniA74FuniA750uniA751uniA752uniA753uniA754uniA755uniA756uniA757uniA758uniA759uniA75AuniA75B
RumrotundauniA75DuniA75EuniA75FuniA760uniA761uniA762uniA763uniA764uniA765uniA766uniA767uniA768uniA769uniA76AuniA76BuniA76CuniA76DuniA76EuniA76FuniA770uniA771uniA772uniA773uniA774uniA775uniA776uniA777uniA778uniA779uniA77AuniA77BuniA77CuniA77DuniA77EuniA77FuniA780uniA781uniA782uniA783uniA784uniA785uniA786uniA787uniA788uniA789uniA78AuniA78BuniA78CuniA78DuniA78EuniA78FuniA790uniA791uniA792uniA793cpalatalhookhpalatalhook	Bflourish	bflourishFstrokefstroke	Aevolapuk	aevolapuk	Oevolapuk	oevolapuk	Uevolapuk	uevolapukuniA7A0uniA7A1uniA7A2uniA7A3uniA7A4uniA7A5uniA7A6uniA7A7uniA7A8uniA7A9uniA7AA
EreversedopenuniA7ACuniA7ADIotaserifedQsmalluniA7B0uniA7B1uniA7B2uniA7B3uniA7B4uniA7B5uniA7B6uniA7B7Ustrokeuni1D7EAglottalaglottalIglottaliglottalUglottaluglottal
Wanglicana
wanglicanaCpalatalhookShookZpalatalhook
Dmiddlestroke
dmiddlestroke
Smiddlestroke
smiddlestrokeHalfhturnedhalfhturneduniA7F7uniA7F8uniA7F9uniA7FAuniA7FBuniA7FCuniA7FDuniA7FEuniA7FFuniA830uniA831uniA832uniA833uniA834uniA835uniA836uniA837uniA838uniA839uniA8E0uniA8E1uniA8E2uniA8E3uniA8E4uniA8E5uniA8E6uniA8E7uniA8E8uniA8E9uniA8EAuniA8EBuniA8ECuniA8EDuniA8EEuniA8EFuniA8F0uniA8F1uniA8F2uniA8F3uniA8F4uniA8F5uniA8F6uniA8F7uniA8F8uniA8F9uniA8FAuniA8FBuniA8FCuniA8FDaydevaayvowelsigndevauniA92EuniAB30uniAB31uniAB32uniAB33uniAB34uniAB35uniAB36uniAB37uniAB38uniAB39uniAB3AuniAB3BuniAB3CuniAB3DuniAB3EuniAB3FuniAB40uniAB41uniAB42uniAB43uniAB44uniAB45uniAB46uniAB47uniAB48uniAB49uniAB4AuniAB4BuniAB4CuniAB4DuniAB4EuniAB4FuniAB50uniAB51uniAB52uniAB53uniAB54uniAB55uniAB56uniAB57uniAB58uniAB59uniAB5AuniAB5BuniAB5CuniAB5DuniAB5EuniAB5Fsakhayat	iotifiedeoeopenuouniAB64uniAB65dzdigraphretroflexhooktsdigraphretroflexhookrmiddletildeturned
wturnedmodlefttackmodrighttackmodf_ff_f_if_f_llongs_ts_tuniFE00uniFE20uniFE21uniFE22uniFE23uniFE24uniFE25uniFE26uniFE27uniFE28uniFE29uniFE2AuniFE2BuniFE2CuniFE2DuniFE2EuniFE2FuniFEFFuniFFFCuniFFFDEng.alt1Eng.alt2Eng.alt3uni030103060308uni030003060308uni030103040308uni030003040308uni013B.loclMAHuni0145.loclMAHAogonek.loclNAVEogonek.loclNAVIogonek.loclNAVUogonek.loclNAVI.saltIJ.saltIacute.saltIbreve.saltuni01CF.saltIcircumflex.saltuni0208.saltIdieresis.saltuni1E2E.saltIdotaccent.saltuni1ECA.saltIgrave.saltuni1EC8.saltuni020A.saltImacron.saltIogonek.saltIogonek_loclNAV.saltItilde.saltuni1E2C.saltJ.saltJcircumflex.saltuni01C7.saltuni01CA.saltuni013C.loclMAHuni0146.loclMAHaogonek.loclNAVeogonek.loclNAVuogonek.loclNAV	i_sc.saltiacute_sc.saltibreve_sc.salticircumflex_sc.saltidieresis_sc.saltidotaccent_sc.saltigrave_sc.salt
ij_sc.saltimacron_sc.saltiogonek_sc.saltitilde_sc.salt	j_sc.saltjcircumflex_sc.salta.sc	aacute.sc	abreve.scacircumflex.scadieresis.sc	agrave.sc
amacron.sc
aogonek.scaring.sc
aringacute.sc	atilde.scae.sc
aeacute.scb.scc.sc	cacute.sc	ccaron.scccedilla.scccircumflex.sc
cdotaccent.scd.sceth.sc	dcaron.sc	dcroat.sce.sc	eacute.sc	ebreve.sc	ecaron.scecircumflex.scedieresis.sc
edotaccent.sc	egrave.sc
emacron.sc
eogonek.scf.scg.sc	gbreve.scgcircumflex.sc
uni0123.sc
gdotaccent.sch.schbar.schcircumflex.sci.sc	iacute.sc	ibreve.scicircumflex.scidieresis.sci.loclTRK.sc	igrave.scij.sc
imacron.sc
iogonek.sc	itilde.scj.scjcircumflex.sck.sc
uni0137.scl.sc	lacute.sc	lcaron.sc
uni013C.scldot.sc	lslash.scm.scn.sc	nacute.sc	ncaron.sc
uni0146.sceng.sc	ntilde.sco.sc	oacute.sc	obreve.scocircumflex.scodieresis.sc	ograve.scohungarumlaut.sc
omacron.sc	oslash.scoslashacute.sc	otilde.scoe.scp.scthorn.scq.scr.sc	racute.sc	rcaron.sc
uni0157.scs.sc	sacute.sc	scaron.scscedilla.scscircumflex.sc
uni0219.sc
germandbls.sct.sctbar.sc	tcaron.sc
uni0163.sc
uni021B.scu.sc	uacute.sc	ubreve.scucircumflex.scudieresis.sc	ugrave.scuhungarumlaut.sc
umacron.sc
uogonek.scuring.sc	utilde.scv.scw.sc	wacute.scwcircumflex.scwdieresis.sc	wgrave.scx.scy.sc	yacute.scycircumflex.scydieresis.sc	ygrave.scz.sc	zacute.sc	zcaron.sc
zdotaccent.scuniA7F7.saltuni0406.saltuni0407.saltuni0408.saltuni04C0.saltuni0431.loclSRBuni04CF.salt	Iota.saltIotatonos.saltIotadieresis.saltuni1D35.saltuni1D36.salt	zero.tosfone.tosftwo.tosf
three.tosf	four.tosf	five.tosfsix.tosf
seven.tosf
eight.tosf	nine.tosfzero.osfone.osftwo.osf	three.osffour.osffive.osfsix.osf	seven.osf	eight.osfnine.osfzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lf
zero.slash	zero.dnomone.dnomtwo.dnom
three.dnom	four.dnom	five.dnomsix.dnom
seven.dnom
eight.dnom	nine.dnom	zero.numrone.numrtwo.numr
three.numr	four.numr	five.numrsix.numr
seven.numr
eight.numr	nine.numrparenleft.sc
parenright.scbraceleft.sc
braceright.scbracketleft.scbracketright.sc	exclam.sc
exclamdown.scquestion.scquestiondown.scexclamdbl.scguilsinglleft.scguilsinglright.sc
fhook.ss03summationDoubleStruck.miruni02E502E502E9uni02E502E502E6uni02E502E502E8uni02E502E502E7uni02E502E9uni02E502E902E5uni02E502E902E9uni02E502E902E6uni02E502E902E8uni02E502E902E7uni02E502E6uni02E502E602E5uni02E502E602E9uni02E502E602E6uni02E502E602E8uni02E502E602E7uni02E502E8uni02E502E802E5uni02E502E802E9uni02E502E802E6uni02E502E802E8uni02E502E802E7uni02E502E7uni02E502E702E5uni02E502E702E9uni02E502E702E6uni02E502E702E8uni02E502E702E7uni02E902E5uni02E902E502E5uni02E902E502E9uni02E902E502E6uni02E902E502E8uni02E902E502E7uni02E902E902E5uni02E902E902E6uni02E902E902E8uni02E902E902E7uni02E902E6uni02E902E602E5uni02E902E602E9uni02E902E602E6uni02E902E602E8uni02E902E602E7uni02E902E8uni02E902E802E5uni02E902E802E9uni02E902E802E6uni02E902E802E8uni02E902E802E7uni02E902E7uni02E902E702E5uni02E902E702E9uni02E902E702E6uni02E902E702E8uni02E902E702E7uni02E602E5uni02E602E502E5uni02E602E502E9uni02E602E502E6uni02E602E502E8uni02E602E502E7uni02E602E9uni02E602E902E5uni02E602E902E9uni02E602E902E6uni02E602E902E8uni02E602E902E7uni02E602E602E5uni02E602E602E9uni02E602E602E8uni02E602E602E7uni02E602E8uni02E602E802E5uni02E602E802E9uni02E602E802E6uni02E602E802E8uni02E602E802E7uni02E602E7uni02E602E702E5uni02E602E702E9uni02E602E702E6uni02E602E702E8uni02E602E702E7uni02E802E5uni02E802E502E5uni02E802E502E9uni02E802E502E6uni02E802E502E8uni02E802E502E7uni02E802E9uni02E802E902E5uni02E802E902E9uni02E802E902E6uni02E802E902E8uni02E802E902E7uni02E802E6uni02E802E602E5uni02E802E602E9uni02E802E602E6uni02E802E602E8uni02E802E602E7uni02E802E802E5uni02E802E802E9uni02E802E802E6uni02E802E802E7uni02E802E7uni02E802E702E5uni02E802E702E9uni02E802E702E6uni02E802E702E8uni02E802E702E7uni02E702E5uni02E702E502E5uni02E702E502E9uni02E702E502E6uni02E702E502E8uni02E702E502E7uni02E702E9uni02E702E902E5uni02E702E902E9uni02E702E902E6uni02E702E902E8uni02E702E902E7uni02E702E6uni02E702E602E5uni02E702E602E9uni02E702E602E6uni02E702E602E8uni02E702E602E7uni02E702E8uni02E702E802E5uni02E702E802E9uni02E702E802E6uni02E702E802E8uni02E702E802E7uni02E702E702E5uni02E702E702E9uni02E702E702E6uni02E702E702E8ampersand.sc
uni0308.sc
uni0307.scgravecomb.scacutecomb.sc
uni030B.sc
uni0302.sc
uni030C.sc
uni0306.sc
uni030A.sctildecomb.sc
uni0304.sc
uni0328.sc	macron.sc
idotlesscyjedotlesscyiogonekdotlessjstrokedotlessjcrossedtaildotlessjmoddotless
yotdotlessisubscriptdotlessiretroflexhookdotlessistrokemoddotlessjcrossedtailmoddotlessitildebelowdotlessidotbelowdotlessistrokedotlessimoddotlessiitalicDoubleStruckdotlessjitalicDoubleStruckdotlessjsubscriptdotless
uni1FBC.ad
uni1F88.ad
uni1F89.ad
uni1F8A.ad
uni1F8B.ad
uni1F8C.ad
uni1F8D.ad
uni1F8E.ad
uni1F8F.ad
uni1FCC.ad
uni1F98.ad
uni1F99.ad
uni1F9A.ad
uni1F9B.ad
uni1F9C.ad
uni1F9D.ad
uni1F9E.ad
uni1F9F.ad
uni1FFC.ad
uni1FA8.ad
uni1FA9.ad
uni1FAA.ad
uni1FAB.ad
uni1FAC.ad
uni1FAD.ad
uni1FAE.ad
uni1FAF.aduni037F.saltuni1F38.saltuni1F39.saltuni1F3A.saltuni1F3B.saltuni1F3C.saltuni1F3D.saltuni1F3E.saltuni1F3F.saltuni1FDA.saltuni1FDB.saltuni03B1030603130300uni03B1030603130301uni03B1030603140300uni03B1030603140301uni03B1030403130300uni03B1030403130301uni03B1030403140300uni03B1030403140301uni03B9030803060300uni03B9030803060301uni03B9030803040300uni03B9030803040301uni03B9030603130300uni03B9030603130301uni03B9030603140300uni03B9030603140301uni03B9030403130300uni03B9030403130301uni03B9030403140300uni03B9030403140301uni03C5030803060300uni03C5030803040300uni03C5030803040301uni03C5030603130300uni03C5030603130301uni03C5030603140300uni03C5030603140301uni03C5030403130300uni03C5030403130301uni03C5030403140300uni03C5030403140301uni03D0.altphi.saltalpha.scbeta.scgamma.scdelta.sc
epsilon.sczeta.sceta.sctheta.sciota.sckappa.sc	lambda.sc
uni03BC.scnu.scxi.sc
omicron.scpi.scrho.sc
uni03C2.scsigma.sctau.sc
upsilon.scphi.scchi.scpsi.scomega.sciotatonos.sciotadieresis.sciotadieresistonos.scupsilontonos.scupsilondieresis.scupsilondieresistonos.scomicrontonos.sc
omegatonos.sc
alphatonos.scepsilontonos.scetatonos.sc
uni03D7.sc
uni1F00.sc
uni1F01.sc
uni1F02.sc
uni1F03.sc
uni1F04.sc
uni1F05.sc
uni1F06.sc
uni1F07.sc
uni1F70.sc
uni1F71.sc
uni1FB6.sc
uni1FB0.sc
uni1FB1.sc
uni1FB3.sc
uni1FB2.sc
uni1FB4.sc
uni1F80.sc
uni1F81.sc
uni1F82.sc
uni1F83.sc
uni1F84.sc
uni1F85.sc
uni1F86.sc
uni1F87.sc
uni1FB7.sc
uni1F10.sc
uni1F11.sc
uni1F12.sc
uni1F13.sc
uni1F14.sc
uni1F15.sc
uni1F72.sc
uni1F73.sc
uni1F20.sc
uni1F21.sc
uni1F22.sc
uni1F23.sc
uni1F24.sc
uni1F25.sc
uni1F26.sc
uni1F27.sc
uni1F74.sc
uni1F75.sc
uni1FC6.sc
uni1FC3.sc
uni1FC2.sc
uni1FC4.sc
uni1F90.sc
uni1F91.sc
uni1F92.sc
uni1F93.sc
uni1F94.sc
uni1F95.sc
uni1F96.sc
uni1F97.sc
uni1FC7.sc
uni1F30.sc
uni1F31.sc
uni1F32.sc
uni1F33.sc
uni1F34.sc
uni1F35.sc
uni1F36.sc
uni1F37.sc
uni1F76.sc
uni1F77.sc
uni1FD6.sc
uni1FD0.sc
uni1FD1.sc
uni1FD2.sc
uni1FD3.sc
uni1FD7.sc
uni1F40.sc
uni1F41.sc
uni1F42.sc
uni1F43.sc
uni1F44.sc
uni1F45.sc
uni1F78.sc
uni1F79.sc
uni1FE4.sc
uni1FE5.sc
uni1F50.sc
uni1F51.sc
uni1F52.sc
uni1F53.sc
uni1F54.sc
uni1F55.sc
uni1F56.sc
uni1F57.sc
uni1F7A.sc
uni1F7B.sc
uni1FE6.sc
uni1FE0.sc
uni1FE1.sc
uni1FE2.sc
uni1FE3.sc
uni1FE7.sc
uni1F60.sc
uni1F61.sc
uni1F62.sc
uni1F63.sc
uni1F64.sc
uni1F65.sc
uni1F66.sc
uni1F67.sc
uni1F7C.sc
uni1F7D.sc
uni1FF6.sc
uni1FF3.sc
uni1FF2.sc
uni1FF4.sc
uni1FA0.sc
uni1FA1.sc
uni1FA2.sc
uni1FA3.sc
uni1FA4.sc
uni1FA5.sc
uni1FA6.sc
uni1FA7.sc
uni1FF7.sc
uni1FB3.sc.ad
uni1FB2.sc.ad
uni1FB4.sc.ad
uni1F80.sc.ad
uni1F81.sc.ad
uni1F82.sc.ad
uni1F83.sc.ad
uni1F84.sc.ad
uni1F85.sc.ad
uni1F86.sc.ad
uni1F87.sc.ad
uni1FB7.sc.ad
uni1FC3.sc.ad
uni1FC2.sc.ad
uni1FC4.sc.ad
uni1F90.sc.ad
uni1F91.sc.ad
uni1F92.sc.ad
uni1F93.sc.ad
uni1F94.sc.ad
uni1F95.sc.ad
uni1F96.sc.ad
uni1F97.sc.ad
uni1FC7.sc.ad
uni1FF3.sc.ad
uni1FF2.sc.ad
uni1FF4.sc.ad
uni1FA0.sc.ad
uni1FA1.sc.ad
uni1FA2.sc.ad
uni1FA3.sc.ad
uni1FA4.sc.ad
uni1FA5.sc.ad
uni1FA6.sc.ad
uni1FA7.sc.ad
uni1FF7.sc.adiotatonos.sc.ss06iotadieresis.sc.ss06iotadieresistonos.sc.ss06upsilontonos.sc.ss06upsilondieresis.sc.ss06upsilondieresistonos.sc.ss06omicrontonos.sc.ss06omegatonos.sc.ss06alphatonos.sc.ss06epsilontonos.sc.ss06etatonos.sc.ss06uni1F00.sc.ss06uni1F01.sc.ss06uni1F02.sc.ss06uni1F03.sc.ss06uni1F04.sc.ss06uni1F05.sc.ss06uni1F06.sc.ss06uni1F07.sc.ss06uni1F70.sc.ss06uni1F71.sc.ss06uni1FB6.sc.ss06uni1FB0.sc.ss06uni1FB1.sc.ss06uni1FB3.sc.ss06uni1FB2.sc.ss06uni1FB4.sc.ss06uni1F80.sc.ss06uni1F81.sc.ss06uni1F82.sc.ss06uni1F83.sc.ss06uni1F84.sc.ss06uni1F85.sc.ss06uni1F86.sc.ss06uni1F87.sc.ss06uni1FB7.sc.ss06uni1F10.sc.ss06uni1F11.sc.ss06uni1F12.sc.ss06uni1F13.sc.ss06uni1F14.sc.ss06uni1F15.sc.ss06uni1F72.sc.ss06uni1F73.sc.ss06uni1F20.sc.ss06uni1F21.sc.ss06uni1F22.sc.ss06uni1F23.sc.ss06uni1F24.sc.ss06uni1F25.sc.ss06uni1F26.sc.ss06uni1F27.sc.ss06uni1F74.sc.ss06uni1F75.sc.ss06uni1FC6.sc.ss06uni1FC3.sc.ss06uni1FC2.sc.ss06uni1FC4.sc.ss06uni1F90.sc.ss06uni1F91.sc.ss06uni1F92.sc.ss06uni1F93.sc.ss06uni1F94.sc.ss06uni1F95.sc.ss06uni1F96.sc.ss06uni1F97.sc.ss06uni1FC7.sc.ss06uni1F30.sc.ss06uni1F31.sc.ss06uni1F32.sc.ss06uni1F33.sc.ss06uni1F34.sc.ss06uni1F35.sc.ss06uni1F36.sc.ss06uni1F37.sc.ss06uni1F76.sc.ss06uni1F77.sc.ss06uni1FD6.sc.ss06uni1FD0.sc.ss06uni1FD1.sc.ss06uni1FD2.sc.ss06uni1FD3.sc.ss06uni1FD7.sc.ss06uni1F40.sc.ss06uni1F41.sc.ss06uni1F42.sc.ss06uni1F43.sc.ss06uni1F44.sc.ss06uni1F45.sc.ss06uni1F78.sc.ss06uni1F79.sc.ss06uni1FE4.sc.ss06uni1FE5.sc.ss06uni1F50.sc.ss06uni1F51.sc.ss06uni1F52.sc.ss06uni1F53.sc.ss06uni1F54.sc.ss06uni1F55.sc.ss06uni1F56.sc.ss06uni1F57.sc.ss06uni1F7A.sc.ss06uni1F7B.sc.ss06uni1FE6.sc.ss06uni1FE0.sc.ss06uni1FE1.sc.ss06uni1FE2.sc.ss06uni1FE3.sc.ss06uni1FE7.sc.ss06uni1F60.sc.ss06uni1F61.sc.ss06uni1F62.sc.ss06uni1F63.sc.ss06uni1F64.sc.ss06uni1F65.sc.ss06uni1F66.sc.ss06uni1F67.sc.ss06uni1F7C.sc.ss06uni1F7D.sc.ss06uni1FF6.sc.ss06uni1FF3.sc.ss06uni1FF2.sc.ss06uni1FF4.sc.ss06uni1FA0.sc.ss06uni1FA1.sc.ss06uni1FA2.sc.ss06uni1FA3.sc.ss06uni1FA4.sc.ss06uni1FA5.sc.ss06uni1FA6.sc.ss06uni1FA7.sc.ss06uni1FF7.sc.ss06uni1FB3.sc.ad.ss06uni1FB2.sc.ad.ss06uni1FB4.sc.ad.ss06uni1F80.sc.ad.ss06uni1F81.sc.ad.ss06uni1F82.sc.ad.ss06uni1F83.sc.ad.ss06uni1F84.sc.ad.ss06uni1F85.sc.ad.ss06uni1F86.sc.ad.ss06uni1F87.sc.ad.ss06uni1FB7.sc.ad.ss06uni1FC3.sc.ad.ss06uni1FC2.sc.ad.ss06uni1FC4.sc.ad.ss06uni1F90.sc.ad.ss06uni1F91.sc.ad.ss06uni1F92.sc.ad.ss06uni1F93.sc.ad.ss06uni1F94.sc.ad.ss06uni1F95.sc.ad.ss06uni1F96.sc.ad.ss06uni1F97.sc.ad.ss06uni1FC7.sc.ad.ss06uni1FF3.sc.ad.ss06uni1FF2.sc.ad.ss06uni1FF4.sc.ad.ss06uni1FA0.sc.ad.ss06uni1FA1.sc.ad.ss06uni1FA2.sc.ad.ss06uni1FA3.sc.ad.ss06uni1FA4.sc.ad.ss06uni1FA5.sc.ad.ss06uni1FA6.sc.ad.ss06uni1FA7.sc.ad.ss06uni1FF7.sc.ad.ss06anoteleia.sc
tonos.caseuni1FBF.caseuni1FBD.caseuni1FFE.caseuni1FDD.caseuni1FCE.caseuni1FDE.caseuni1FCF.caseuni1FDF.caseuni1FED.caseuni1FEE.caseuni1FC1.caseuni1FEF.caseuni1FFD.caseuni1FC0.caseuni1FCD.casetonos.scdieresistonos.sc
uni1FBF.sc
uni1FBD.sc
uni1FFE.sc
uni1FCD.sc
uni1FDD.sc
uni1FCE.sc
uni1FDE.sc
uni1FCF.sc
uni1FDF.sc
uni1FED.sc
uni1FEE.sc
uni1FC1.sc
uni1FEF.sc
uni1FFD.sc
uni1FC0.scnullCR_1space_1	uni02BC_1ashortnuktadeva
anuktadevaaanuktadeva
inuktadevaiinuktadeva
unuktadevauunuktadevarvocalicnuktadevalvocalicnuktadevaecandranuktadevaeshortnuktadeva
enuktadevaainuktadevaocandranuktadevaoshortnuktadeva
onuktadevaaunuktadevarrvocalicnuktadevallvocalicnuktadevaacandranuktadevaghanuktadevanganuktadevacanuktadevachanuktadevajhanuktadevanyanuktadevattanuktadeva
tthanuktadevannanuktadevatanuktadevathanuktadevadanuktadevadhanuktadevapanuktadevabanuktadevabhanuktadevamanuktadevalanuktadevavanuktadevashanuktadevassanuktadevasanuktadevahanuktadeva	kassadeva	janyadevarephdeva	vattudeva
kaprehalfdevakhaprehalfdeva
gaprehalfdevaghaprehalfdevangaprehalfdeva
caprehalfdevachaprehalfdeva
japrehalfdevajhaprehalfdevanyaprehalfdevattaprehalfdevatthaprehalfdevaddaprehalfdevaddhaprehalfdevannaprehalfdeva
taprehalfdevathaprehalfdeva
daprehalfdevadhaprehalfdeva
naprehalfdeva
paprehalfdevaphaprehalfdeva
baprehalfdevabhaprehalfdeva
maprehalfdeva
yaprehalfdeva
raprehalfdeva
laprehalfdevallaprehalfdeva
vaprehalfdevashaprehalfdevassaprehalfdeva
saprehalfdeva
haprehalfdevazhaprehalfdevaheavyyaprehalfdevakassaprehalfdevajanyaprehalfdevakanuktaprehalfdevakhanuktaprehalfdevaganuktaprehalfdevaghanuktaprehalfdevanganuktaprehalfdevacanuktaprehalfdevachanuktaprehalfdevajanuktaprehalfdevajhanuktaprehalfdevanyanuktaprehalfdevattanuktaprehalfdevatthanuktaprehalfdevaddanuktaprehalfdevaddhanuktaprehalfdevannanuktaprehalfdevatanuktaprehalfdevathanuktaprehalfdevadanuktaprehalfdevadhanuktaprehalfdevananuktaprehalfdevapanuktaprehalfdevaphanuktaprehalfdevabanuktaprehalfdevabhanuktaprehalfdevamanuktaprehalfdevayanuktaprehalfdevalanuktaprehalfdevallanuktaprehalfdevavanuktaprehalfdevashanuktaprehalfdevassanuktaprehalfdevasanuktaprehalfdevahanuktaprehalfdevakaradeva	kharadevagaradeva	gharadeva	ngaradevacaradeva	charadevajaradeva	jharadeva	nyaradeva	ttaradeva
ttharadeva	ddaradeva
ddharadeva	nnaradevataradeva	tharadevadaradeva	dharadevanaradevaparadeva	pharadevabaradeva	bharadevamaradevayaradevararadevalaradeva	llaradevavaradeva	sharadeva	ssaradevasaradevaharadevamarwariddaradeva	zharadeva
heavyyaradevakassaradevajanyaradeva
kanuktaradevakhanuktaradeva
ganuktaradevaghanuktaradevanganuktaradeva
canuktaradevachanuktaradeva
januktaradevajhanuktaradevanyanuktaradevattanuktaradevatthanuktaradevaddanuktaradevaddhanuktaradevannanuktaradeva
tanuktaradevathanuktaradeva
danuktaradevadhanuktaradeva
nanuktaradeva
panuktaradevaphanuktaradeva
banuktaradevabhanuktaradeva
manuktaradeva
yanuktaradeva
ranuktaradeva
lanuktaradevallanuktaradeva
vanuktaradevashanuktaradevassanuktaradeva
sanuktaradeva
hanuktaradevakaraprehalfdevakharaprehalfdevagaraprehalfdevagharaprehalfdevangaraprehalfdevangaraprehalfUIdevacaraprehalfdevacharaprehalfdevajaraprehalfdevajharaprehalfdevanyaraprehalfdevattaraprehalfdevattaraprehalfUIdevattharaprehalfdevattharaprehalfUIdevaddaraprehalfdevaddaraprehalfUIdevaddharaprehalfdevaddharaprehalfUIdevannaraprehalfdevataraprehalfdevatharaprehalfdevadaraprehalfdevadharaprehalfdevanaraprehalfdevaparaprehalfdevapharaprehalfdevabaraprehalfdevabharaprehalfdevamaraprehalfdevayaraprehalfdevararaprehalfdevalaraprehalfdevallaraprehalfdevavaraprehalfdevasharaprehalfdevassaraprehalfdevasaraprehalfdevaharaprehalfdevazharaprehalfdevaheavyyaraprehalfdevakassaraprehalfdevajanyaraprehalfdevakanuktaraprehalfdevakhanuktaraprehalfdevaganuktaraprehalfdevaghanuktaraprehalfdevanganuktaraprehalfdevacanuktaraprehalfdevachanuktaraprehalfdevajanuktaraprehalfdevajhanuktaraprehalfdevanyanuktaraprehalfdevattanuktaraprehalfdevatthanuktaraprehalfdevaddanuktaraprehalfdevaddhanuktaraprehalfdevannanuktaraprehalfdevatanuktaraprehalfdevathanuktaraprehalfdevadanuktaraprehalfdevadhanuktaraprehalfdevananuktaraprehalfdevapanuktaraprehalfdevaphanuktaraprehalfdevabanuktaraprehalfdevabhanuktaraprehalfdevamanuktaraprehalfdevayanuktaraprehalfdevalanuktaraprehalfdevallanuktaraprehalfdevavanuktaraprehalfdevashanuktaraprehalfdevassanuktaraprehalfdevasanuktaraprehalfdevahanuktaraprehalfdevahaudeva	hauUIdevahauudeva
hauuUIdevaharvocalicdevaharrvocalicdevahanuktaudeva
hanuktauudevahanuktarvocalicdevahanuktarrvocalicdeva	haraudevaharauUIdeva
harauudevaharauuUIdevaraudevarauudevadaudevadauudevadarvocalicdeva	daraudeva
darauudevadararvocalicdevaranuktaudeva
ranuktauudevadanuktaudeva
danuktauudevadanuktarvocalicdeva
dddhaudevadddhauudevarhaudeva	rhauudevaoevowelsignanusvaradevaoevowelsignrephdevaoevowelsignrephanusvaradevaooevowelsignanusvaradevaooevowelsignrephdevaooevowelsignrephanusvaradevaiivowelsignanusvaradevaiivowelsignrephdevaiivowelsignrephanusvaradevaecandravowelsignanusvaradevaecandravowelsignrephdevaecandravowelrephanusvaradevaeshortvowelsignanusvaradevaeshortvowelsignrephdevaeshortvowelsignrephanusvaradeevowelsignanusvaradevaevowelsignrephdevaevowelsignrephanusvaradevaaivowelsignanusvaradevaaivowelsignrephdevaaivowelsignrephanusvaradevaocandravowelsignanusvaradevaocandravowelsignrephdevaocandravowelrephanusvaradevaoshortvowelsignanusvaradevaoshortvowelsignrephdevaoshortvowelsignrephanusvaradevaovowelsignanusvaradevaovowelsignrephdevaovowelsignrephanusvaradevaauvowelsignanusvaradevaauvowelsignrephdevaauvowelsignrephanusvaradevaawvowelsignanusvaradevaawvowelsignrephdevaawvowelsignrephanusvaradevarephanusvaradevaashortanusvaradevaiianusvaradevaecandraanusvaradevaeshortanusvaradevaaianusvaradevaocandraanusvaradevaoshortanusvaradeva
oanusvaradevaauanusvaradevaacandraanusvaradevaoeanusvaradevaooeanusvaradevaawanusvaradevaashortnuktaanusvaradevaiinuktaanusvaradevaecandranuktaanusvaradevaeshortnuktaanusvaradevaainuktaanusvaradevaocandranuktaanusvaradevaoshortnuktaanusvaradevaonuktaanusvaradevaaunuktaanusvaradevaacandranuktaanusvaradevakatadeva	kashadeva
khashadeva	ngagadeva	ngamadeva	ngayadevacacadeva	cachadevacacharadeva	chayadevajajadeva	jaddadeva	nyajadeva
ttattadevattattauudevattatthadeva
ttatthauudeva	ttayadevatthatthadeva
tthayadevaddaddhadeva
ddaddadevaddaddauudeva	ddayadevaddarayadevaddhaddhadeva
ddhayadevatatadevatataprehalfdeva	tathadeva	tashadeva	daghadevadagadevadabadeva	dabhadevadavadeva
davayadeva	dadhadevadadhayadevadadadeva
dadayadevadamadevadayadevadayaprehalfdeva	naddadevanaddaradeva	nathadevanatharadeva	nadhadevanadhaprehalfdevanadharadevananadeva	nashadevapanadeva	badhadevamapadeva
maparadevamapaprehalfdeva	maphadeva	mabhadeva	laddadevaladdaradeva	lathadevavayadeva	shacadeva	shavadeva	shaladeva	shanadeva
ssattadevassattayadevassattaradevassatthadeva
ssatthayadeva
ssattharadeva	sathadevasathaprehalfdevasapadevasapaprehalfdeva
saparadeva	saphadeva	hannadevahanadevahamadevahayadevahaladevahavadeva	ladevaMARlanuktadevaMARlaradevaMARlanuktaradevaMARshaladevaMAR
shadevaMARshaprehalfdevaMARshanuktadevaMARshanuktaprehalfdevaMARchaprehalfdevaNEPchanuktaprehalfdevaNEPcharaprehalfdevaNEPchanuktaraprehalfdevaNEP
jhadevaNEPjhanuktadevaNEPjhaprehalfdevaNEPjhanuktaprehalfdevaNEPjharadevaNEPjhanuktaradevaNEPjharaprehalfdevaNEPjhanuktaraprehalfdevaNEPfivedevaNEPeightdevaNEPninedevaNEPivowelsign00devaivowelsign01devaivowelsign02devaivowelsign03devaivowelsign04devaivowelsign05devaivowelsign06devaivowelsign07devaivowelsign08devaivowelsign09devaivowelsign10devaivowelsign11devaivowelsignanusvaradevaivowelsignanusvara01devaivowelsignanusvara02devaivowelsignanusvara03devaivowelsignanusvara04devaivowelsignanusvara05devaivowelsignanusvara06devaivowelsignanusvara07devaivowelsignanusvara08devaivowelsignanusvara09devaivowelsignanusvara10devaivowelsignanusvara11devaivowelsignrephdevaivowelsignreph01devaivowelsignreph02devaivowelsignreph03devaivowelsignreph04devaivowelsignreph05devaivowelsignreph06devaivowelsignreph07devaivowelsignreph08devaivowelsignreph09devaivowelsignreph10devaivowelsignreph11devaivowelsignrephanusvaradevaivowelsignrephanusvara01devaivowelsignrephanusvara02devaivowelsignrephanusvara03devaivowelsignrephanusvara04devaivowelsignrephanusvara05devaivowelsignrephanusvara06devaivowelsignrephanusvara07devaivowelsignrephanusvara08devaivowelsignrephanusvara09devaivowelsignrephanusvara10devaivowelsignrephanusvara11deva
dummymarkdevaiivowelsign1devaiivowelsign2devaiivowelsign3devaiivowelsignanusvara1devaiivowelsignanusvara2devaiivowelsignanusvara3devaiivowelsignreph1devaiivowelsignreph2devaiivowelsignreph3devaiivowelsignrephanusvara1devaiivowelsignrephanusvara2devaiivowelsignrephanusvara3devauvowelsignnuktadevauvowelsignnuktaleftdevauvowelsignnarrowdevauuvowelsignnuktadevauuvowelsignnuktaleftdevarvocalicvowelsignnuktadevarvocalicvowelsignnuktaleftdevarrvocalicvowelsignnuktadevarrvocalicvowelsignnuktaleftdevalvocalicvowelsignleftdevalvocalicvowelsignnuktadevalvocalicvowelsignnuktaleftdevallvocalicvowelsignnuktadevallvocalicvowelsignleftdevallvocalicvowelsignnuktaleftdevaviramanuktadevauevowelsignnuktadevauevowelsignnuktaleftdevauuevowelsignnuktadevauuevowelsignnuktaleftdeva
ngaaltdeva
chaaltdeva
ttaaltdevatthaaltdeva
ddaaltdevaddhaaltdeva
llaaltdevalaaltdevaMARnganuktaaltdevachanuktaaltdevattanuktaaltdevatthanuktaaltdevadddhaaltdeva
rhaaltdevalllaaltdevalanuktaaltdevaMARshaprehalfaltdeva
vattuudeva
vattuulowdevavattuulownuktadevavattuuudevavattuuulowdevavattuuulownuktadevavatturvocalicdevavatturvocaliclowdevavatturvocaliclownuktadevavatturrvocalicdevavattulvocalicdevavattullvocalicdevavattuviramadevavattuviramalowdevavattuviramalownuktadevavattuuevowellowdevavattuuevowellownuktadevavattuuuevowellowdevavattuuuevowellownuktadevauvowelsignlowdevauuvowelsignlowdevarvocalicvowelsignlowdevarrvocaliclowdevalvocalicvowelsignlowdevallvocalicvowelsignlowdeva
viramalowdevauevowelsignlowdevauuevowelsignlowdevadadaaltdevadabhaaltdevarephcandrabindudevaoevowelsigncandrabindudevaooevowelsigncandrabindudevaecandravowelsigncandrabindudevaeshortvowelsigncandrabindudevaevowelsigncandrabindudevaaivowelsigncandrabindudevaocandravowelsigncandrabindudevaoshortvowelsigncandrabindudevaovowelsigncandrabindudevaauvowelsigncandrabindudevaawvowelsigncandrabindudevaivowelsigncandrabindudevaivowelsigncandrabindu01devaivowelsigncandrabindu02devaivowelsigncandrabindu03devaivowelsigncandrabindu04devaivowelsigncandrabindu05devaivowelsigncandrabindu06devaivowelsigncandrabindu07devaivowelsigncandrabindu08devaivowelsigncandrabindu09devaivowelsigncandrabindu10devaivowelsigncandrabindu11devaiivowelcandrabindudevaiivowelcandrabindu1devaiivowelcandrabindu2devaiivowelcandrabindu3devaoevowelsignrephcandrabindudevaooevowelsignrephcandrabindudevaecandravowelrephcandrabindudevaeshortvowelrephcandrabindudevaevowelsignrephcandrabindudevaaivowelsignrephcandrabindudevaocandravowelrephcandrabindudevaoshortvowelrephcandrabindudevaovowelsignrephcandrabindudevaauvowelsignrephcandrabindudevaawvowelsignrephcandrabindudevaivowelsignrephcandrabindudevaivowelsignrephcandrabindu01devaivowelsignrephcandrabindu02devaivowelsignrephcandrabindu03devaivowelsignrephcandrabindu04devaivowelsignrephcandrabindu05devaivowelsignrephcandrabindu06devaivowelsignrephcandrabindu07devaivowelsignrephcandrabindu08devaivowelsignrephcandrabindu09devaivowelsignrephcandrabindu10devaivowelsignrephcandrabindu11devaiivowelsignrephcandrabindudevaiivowelsignrephcandrabindu1devaiivowelsignrephcandrabindu2devaiivowelsignrephcandrabindu3devavatturrvocalicUIdevavattulvocalicUIdevavattullvocalicUIdevaexclam.deva
quotedbl.devanumbersign.devapercent.devaquotesingle.devaparenleft.devaparenright.deva
asterisk.deva	plus.deva
comma.devahyphen.devaperiod.deva
slash.deva	zero.devaone.devatwo.deva
three.deva	four.deva	five.devasix.deva
seven.deva
eight.deva	nine.deva
colon.devasemicolon.deva	less.deva
equal.devagreater.deva
question.devabracketleft.devabackslash.devabracketright.devaasciicircum.devaunderscore.devabraceleft.devabar.devabraceright.devaasciitilde.devanbspace.devaendash.devaemdash.devaquoteleft.devaquoteright.devaquotedblleft.devaquotedblright.deva
ellipsis.deva
multiply.devadivide.deva	uni2010_1uni20B9.devaone_onedeva	two_udevathree_kadeva
one_radeva
two_radevathree_radevafour_radevafive_radevatwo_avagrahadevatwo_uni1CD0	vi_radevavisarga_uni1CE2visarga_uni1CE4visarga_uni1CE5visarga_uni1CE8uni1CE1.alt	uni20F0_1sharvocalicdevaayanusvaradevaayanusvaravowelsigndevaayvowelsigncandrabindudevaayvowelsignrephdevaayvowelsignrephanusvaradevaayvowelsignrephcandrabindudevamarwariddaddadevamarwariddaddhadevamarwariddayadeva�����n��34/045����
%&)**+-.45<=>?@A\]jkklmnvwyzz{������������������_`��	@	A	A	B	�	�	�	�
g
h
h
i
l
m
v
w
�
�
�
�vw������������������������

�vw����������������23347889?@@AGHVWz{{|~��������������������������67ABEFFGGHIJNOQB&4---
;w
;w��(����!"%**..//0234?@wy{{|�������������w���������������{{������������7AGGJN��h�����
 #%)  +##,&3-bg;jjAlmBbbDjjEopFt�H��]��h��i��k	�	�l	�	��
m
t�
�
����������*-.1u}��	���

!"!"#$%%'3'044]a9hi>`a@cnBq�N��v��w	�	�x
h
h�
m
v�
�
��������-���'()*+,-./0123juwz{|}�������������	�	�	�	�	�	�	�
p
��DFLT&cyrl\dev2
devazgrek�latn��
"#$%+-./123457MKD FSRB z��
"#$%+,-./0123457��
"#$%+-./123457��
"#$%+-./123457MAR 0NEP P��

!&()*��

!&()*��
!'()*MAR .NEP L��!&(*6��!&(*6��!'(*6��	
"#$%+,-./0123457.APPHdCAT �IPPH�MAH MOL 4NAV hROM ���
"#$%+,-./0123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
 "#$%+-./1234578aaltRabvsZakhnlblwfrblwfxblws~c2sc�case�ccmp�ccmp�cjct�cjct�dnom�frac�half�half�half�half�haln�liga�lnum�locl�locllocl
locllocllocl locl&locl,locl2locl8locl>loclDnuktJnumrPonumVordn\pnumbpreshpresppstsxrkrf�rphf�rtlm�salt�sinf�smcp�ss03�ss04�ss06�ss07�subs�sups�tnum�vatu�zero�FHKLMO1?4��������$&AB9:;<78�' �.�/�	
0#!CEDE���352(+%:*8+6,4-"=>?)�PX`hpx���������������� (2:BLT\dlt|����������������$,4<DLT\dlt|����������������$,4<DLT\dlt|����������������$,4<DLT\dlt|����������������$,4<DLT\dlt|�< 0p��,J\n�����"&�� (,4Vrz�����@v#4(v)
)>)B)F)J*8+�,�,�,�/�/�/�4x4�4�4�8�<b?�B�E�H�L�PTP�P�R&RBU�WWbX�Y�ZZZ$Z�^�^�^�edh�ln�q�tLwy�|8
��� �v����H���������������@�������l�4���������4������������������������������8�@�H�P�X�`�v�������b�f�J�d�@�@�R�V������������L���������¤¾�����z�~ĦŤ�D�
���239=GHM]_efxz{���������239=GHz{���������
��*&(/)-06D>AB:kqmovpt�����y�*&(/)-06D>ABVQST:kqmovpt�����y�++''4477855;;<<EE??CC@@JJIILKKOONNZXRW\^^``aaccddgghhjssnnrrww||~~}}��������������������������������..11uu	����[
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�cQ	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�����
�
�����
�
�
�
�
��������
���

%&'()*%&'()*-./01234-./01234DEFGHIJKTUVWXYTUVWXY^_`abcde_acenopqrstunopqrstu+,56LMZ[fgvw !"# !"#;<=>?@AB;<=>?@AB|}~����|}~����$98:7C+,568OPQRNSOPijkl\]hmijfg]zy{x�Z[vwy���
��
�
�
��bi,F� !"#$����������`$$'-035@BBGLVW"Z`$bb+ee,ss-��.��;��B��a��m��q��~�����������������������!�$%�(5�8B�VV�������������������������

�,,�aa�vv�������������AA�CG�IM�OT�Va�cd
fln���&��/��0��2��567mm8||9��:<66=DD>HH?��@$C==IggJijK��M��O�L�R[�_f�lx|����� ��!	�	�"	�	�#	�	�%dd&��'(P\-��:,y�,:HVdr�������������������
"(.4:@FNTZ`flrx~��������������������$*06<BHNTZ`flrx~��������������������� &		�		�	�����	��}��	��v��	��w��	�����		�����	
�����	�����	�����	
�����	��		n%�P[~ln%M	�P�[]	_	e		f	~lx		�	 V�QST�,,�FF
Z
X�R�YY
�U�W\�bb�ii���j�����������Rb�M
��
�L
��N
�
�
��
�
�D
�E
�F
�G
�H
�I
�J
�KTeSd`r]oagWiYk
�L
�MVhXjZl[m\n^p_qUf��������������������������������������������������y
"&./4FMNOPQRSTUXY�����������������	
"#&'67BHNUbem����������MOPQ\]^ghijkyz{����������������������������������<D�$NO�
,av�6DH�j�	�	�	�NO��

,,aavv��66DDHH��jj��	�	�	�	������		


 #$$%&'3.��
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�NO�
,av�6DH�j�	�	�	�.��
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�NO�
,av�6DH�j�	�	�	�^0:DNj|��������$6@JT�����������d�s�6������������e�t�7��!�:BJRZbjrz����������������
��
��

��
��
��
	��
��
��
��
��
��
��
��
����������������������������������
�
���:BJRZbjrz����������������
G��
F��
E��
D��
C��
A��
@��
?��
>��
=��
;��
:��
9��
8��
7��
6��
5��
4��
3��
1��
0��
/��
.��
-��
2�
<�
B�
,�:BJRZbjrz����������������
��
~��
}��
|��
{��
z��
y��
x��
w��
u��
t��
s��
r��
q��
o��
n��
m��
l��
k��
i��
h��
g��
f��
e��
j�
p�
v�
d�:BJRZbjrz����������������
c��
b��
a��
`��
_��
]��
\��
[��
Z��
Y��
X��
W��
V��
U��
S��
R��
Q��
P��
O��
M��
L��
K��
J��
I��
N�
T�
^�
H�:BJRZbjrz����������������
+��
*��
)��
(��
'��
%��
$��
#��
"��
!��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
 �
&�
�
�,
�F
�Y
��
�&*.4:FJNTZ� �����%=P��n&0:DNX
����
����
����
����
����
����
����
����$.8BLV`jt~�
����
����
����
����
����
����
����
����
����
����
����
����$.8BLV`jt~�
����
����
����
����
����
����
����
����
����
����
����
����lt����������67����"#&'����"#&'���	
*>1Q_{1{Q
{_{Q{1c{_MLN�Nbm�MLN�Nbm�����2										
			
										 
"MPQRSUXY2										
			
										 
"MPQRSUXY$		��}vw������		
"S�������������������&F4Tn~n~&4FT
��.����������������������
.������������.����������������������
d/�
����%239=GHMP[]_eflxz{������������
��*&(/)-06D>ABVQST:kqmovpt�����y+',475;<E?CF@JIKONZXRYUW\^`bacdgihjsnrw|~}�������������������.1u��
�
�
�
�
�
�
�
�
�
�
�
�bcQ	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
������
%&'()*-./01234DEFGHIJKTUVWXY_acenopqrstu !"#;<=>?@AB|}~����edro+,568gikOPLMhjlijfg]mnpZ[vwyqf���/
$&'()*+,-./0123456789:;<=>?@B`bes�����������������������������������������������������������	 "$&(*,.02468:<=?A�����������������BCDEFGHIJKMNOPQRSTUVWXYZ[\]^_`abcdef��!#=���������������������������������������������� )*+,-./09:;<=>?@HIJKLMOPQWXYZ[\]^efghijktuvwxyz{�����������P�
������%239=GHMP[]_eflxz{������������*&(/)-06D>ABVQST:kqmovpt�����y�+',4785;<E?CF@JILKONZXRYW\^`bacdgihjsnrw|~}������������������.1u��[
�
�
�
�
�
�
�
�
�
�
�
�bcQ	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�����
%&'()*-./01234DEFGHIJKTUVWXY^_`abcdenopqrstu+,56LMZ[fgvw !"#;<=>?@AB|}~����$edro98:7CgikOPQRNShjlijkl\]hmmnpzy{x�qf���bi,F�P
$@BFGHIJKLMNOPQRSTUVWXYZ[\]^_`be�������������������������������������������������������������
!#%')+-/13579;>@B������������������BCELghijklmnopqrstuvwxyz{|}~����������� "$�����������������������������������������������������	

!"#$%&'(12345678ABCDEFGMOPQRSTUV\]^_`abcdijklmnopqrsyz{|}~������b.����������RTS`]aWYVXZ[\^_U��������������������	BB
MMOQ\^iky{����6"(�KQ�KN�Q�N�KKq	���V|;��

��	
����
��������
�
�
�
�
�
�
�
�
�
�� !"#$;./����������������AHUe����m|����gi��������ghd�PQRSTUVWXYZ[\V����������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP
��c
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�������������������������������������-./0123456789:;<=>?@ABCDEFGHIJKLMNOP )09@LL[[��$8C'y�3��?��K!,W
38@HIJABCDEFG�HKL����?i�9x�������������",6@JT^hr|�������������&0:DNXblv�����wxyz{|}~��������567����8����9:������;���<���������4:A	�
%,.=>3OO5336887@@8"
�*�*����*
XO��������(4@LXdp|����������$0<HT`lx����������� ,8DP\ht�����������(4@L�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
*
'*
*
*
*
*
*
*
*
.*
*
	*
0*

*
*
*

*
*
*
*
*
*
 *
!*
)*
-*
*
*
*
*
*
*
*
*
*
*
*
"*
#*
$*
%*
&*
(*
**
+*
,*
/*
1*
2*
3*
4*
5*
*
*
5*
6*
*
2*
D*
E*
�5<%UW-��034I88K::L@AM�*
*:JXY[\*
6*
6*
6*
6�
*�M����������",6@JT^hr|�������������&0:DNXblv������������� *4>HR\fpz����*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*9*;*B*C*	�5<$VW,��.34G88I::J@AK~J�����������&0:DNXblv������������� *4>HR\fpz�������������$.8BLV`jt�*�*�*�*�*�*<*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*=*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*B*C*�5<$VW,��.44G@AH�?�������������$.8BLV`jt~������������
(2<FPZdnx�������������*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*9*;*����	58;<"VW$��&��'��+��.34;88=::>�<~������������
(2<FPZdnx�������������",6@JT^hr|��������6*7*8*9*<*=*>*?*@*I*J*K*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*]*^*_*`*a*b*c*d*f*g*h*i*j*o*p*q*s*t*u*v*w*x*y*z*U*{*|*}*~**�*V*{*	������	�
#"$(&4+56:�9x�������������",6@JT^hr|�������������&0:DNXblv������*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*B*C*��������
58;< VW"��$��%��&��'��*@A7�8v������������� *4>HR\fpz�������������$.8BLV`jt~���6*7*8*9*<*>*@*I*J*K*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*]*^*_*`*a*b*c*d*f*h*j*o*p*q*s*t*u*v*w*x*y*z*U*{*|*}*~**�*F*G*
�����������

!"#"$$&4'DE6�O����������&0:DNXblv������������� *4>HR\fpz�������������$.8BLV`jt~��������������������������������������������'��������.��	�0�
���
������ �!�)�-������������"�#�$�%�&�(�*�+�,�/�1�2�3�4�5���5�6��2�D�E��5<%UW-��034I88K::L@AM�M����������",6@JT^hr|�������������&0:DNXblv������������� *4>HR\fpz���6�7�8�9�:�<�=�>�?�@�A�C�E�G�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_�`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~������Y�~�>�?�F�G���99G;=HBCK&<s !**?@@�
t6n���Hh�*�*�*� (0�*��*��*��*�*��*�*�
$�*��*�*��*��*�*�&0:BJRZbjrz***�*�*****�*
�*	�*��*�Q*P*�O*U�*�����U�**28BLf������
6����0:\����������������������"(������������
�������������"*28>DJPV\b����
�	����$*06<�
�
�	�

��
 �"(.4:@%�"�%�$�#�&�"�!�
,+)'"(.421130/.-�$73 ������������������������E9J
 2<Vhr����(������������������"(.4�
�
�	�

��
,+)'
�������������X(2<F*������*�(������P������������()OPQR�w{������������������������()..OR��ww{{������������GGGGGG
$2GGGG�:@FLRX^djpv|���������������#���"�#�$�"�#�$�%$%�"���,��x#z��"�#�$y"y#y$y%x"���������()OPQR�w{��������

*8 �II!�JJ II!JJ�� 
 �=�!
!��&HZdnx:�7x
@w?�;�8�<�9�=�>�A�����xyz{|���&R\fpz������*T~���&Pz������
(2<FPZd������������������$����������$����������$����������$����������$����������$����������$����������$����������$����������$����������$����������$������������������I�$N�M�L�K�J���������������������N��M��L�&���������"#$%&'(),OPQR��w{���������N/V\'�K�����������556677889<UUVVWXYY[\����������������������&��!��%��#��%����	����$��
����������
������"������������%��������������&��!��%��#��%����	����$��
����������
����"�����������������������

!""#344558899<<AB#EH%II!JJKKLL$MM
NNOOQQRR%SSTTUUVV"XXYY%ZZ[\%^^``%ccddffkk#mn%oo!ppqqrr$ss
ttuuwwxx%yyzz{{"}}~~%��%������������������������ 	
 !#$&&))+,-./0168899::;;@ADEKKOQ%LV`lx����������� ,8DP\ht�����������ssPQRST	U
VWX
YZ[\]^_`abcdefghijk l!m"n#o$p%q&r 	K~������������		


557799::;;<<UUWX[\����������������������������������������������������������	

  !!##$$%%&&''(())**++,-../011223355����������������������  !!#$&&--..112688::@ADEKK&2>Jyz{|}~ 	�Kw������������������	
557799::;<UUWX[\������������������������������������������������������������������		

  !!##$$%%&&'*,,--..00113355OOuu����������������������!!#$&&..2688::KK&2>Jyz{|}~�Kf������������		
557799::;;<<UUWX[\������������������������������������������������

  !!##$$%%&&''(())**,-..113355^^��������������������!!#$&&..26KK$0<z{|}~�Kh������������		
557799::;;<<UUWX[\��������������������������������������������������

  !!##$$%%&&''(())**,-..113355TTzz��������������������!!#$&&..26KK$0<z{|}~nKb������������		
557799::;;<<UUWX[\����������������������������������������������

  !!##$$%%&&'())**,-..11335588cc������������������!!#$&&..26KK$0<z{|}~tKc������������	
557799::;<UUWX[\��������������������������������������������������

  !!##$$%%&&'*,,--..113355������������������!!#$&&..3346KK$0<z{|}~PK]������������	
557799::;<UUWX[\��������������������������������������������������

  !!##$$%%&&'*,,--..113355������������������!!#$&&..36KK$0<z{|}~hKa����������������	
557799::;<UUWX[\����������������������������������������������������

  !!##%%&&'*,,--..11335599dd������������������!!#$&&..36KK$0<z{|}~�Kh��������������������	


557799::;;<<UUWX[\����������������������������������������������������

  !!##%%&&'*,,--..113355����������������!!#$&&..33KK$0<z{|}~VK^����������������	
557799::;;<<UUWWXX[\��������������������������������������������������

  !!##%%&&'*,-..113355MMss����������������!!#$&&..KK$0<z{|}~NK]������������		
557799::;;<<UUWWXX[\����������������������������������������

  !!##%%&&''(())**,-..113355ZZ����������������!!#$&&..KK
".{|}~$KV����������		
557799::;;<<UUWX[\��������������������������������

  !!##%%''(())**,-..113355JJpp����������������!!#$&&..KK
".{|}~KU����������		
557799::;;<<UUWX[\��������������������������������

  !!##%%''(())**,-..113355NNtt����������������!!#$&&..KK
".{|}~KR����������		
557799::;;<<UUWX[\������������������������������������

  !!##%%'())**,-..113355����������������!!#$&&KK
".{|}~KS����������		
557799::;;<<UUWX[\������������������������������������

  !!##%%'())**,-..113355KKqq����������������!!#$&&KK
".{|}~$KV����������		
557799::;;<<UUWX[\������������������������������������

  !!##%%'())**,-..113355XX}}����������������!!#$&&33KK
".{|}~�KK����������	
557799::;<UUWX[\����������������������������������

  !!##%%'*--..113355<<ff����������������!!#$&&KK
".{|}~�KI����������	
557799::;<UUWX[\��������������������������������

  !!##%%'*--..113355UU����������������!!#$&&KK
".{|}~�KM������		
557799::;<UUWX[\����������������������������������

  !!##%%'*--..113355QQww����������������!!#$&&33KK
".{|}~�KK������������	
557799::;<UUWX[\������������������������������������

  !!##%%'*--..113355����������������!!#$&&KK
".{|}~�KH������������	
557799::;<UUWX[\��������������������������������

  !!##%%'*--..113355����������������99;;KK
".{|}~�K?������������	
557799::;;UUXX[\��������������������������������

  !!##%%'*..1155��������������KK
".{|}~RK3��������
5577::;;UUXX��������������������

!!##%%''))..1155SSyy����������KK
".{|}~>K0������	
55::;;UU����������������������

!!##%%''))..1155����������KK |}~�K%������
55::;;��������������������!!##%%))..����������KK |}~�K����
::��������������!!%%..����������KK |}~�K����
::��������������!!%%..����������KK |}~�K����
::����������!!%%..������������KK}~�K����
::����������!!%%..����������KK}~�K����
::��������������!!%%..IIoo����������KK}~�K!������
:;������������������!!%%..VV{{����������KK}~�K����
::��������������!!%%..ABkk����������KK}~�K��
������������%%..LLrr��������KK}~�K
����������..EHRRYY[\``mnxx~~��KK~JK��
����..KK~ &K�����	����������������	


5566	778899::;;<<UUVVWWXXYY[\����������������������������������������������	������������	������������������	



		  !!""##$$%%&&'*++,-../01122334455��������������������������	
	





  !!#$&&))+,--../0	112688::@ADEKKOOPPQQ	
 *4>HR\fptuvwxyz	{
}~KKKKKKKK	K
KK(�@KVG��	���..
5<UY[\��
��
�����������������������������589<<ABEOQVX\^^``cdffkkmuw{}��������������������������	
!#$&'))+899::;;@ADEKKLV��OQ.>N^��������	��
�*:JZjv�������������	��
���������	��
�f$*06<BHNTZ`K{L{M{N{O{P{Q{R{S{T{U{V{KVKVKV$KV�KV�KV{{{{{�����L� **//|��������
����
j���1XY[\������	 !0�������������
#&-./01256P& !!**//	34?@XY[\|�	��	��	��������		!00���������������

##&&-256PP���	�������"\rz� *34	���-2PP **34s������06<BHNTZbjrz����������{�{�{�{�{�{{�{�{�{�{�{�{{�{	{{!{${3{3{������	 !0�
#&56������ *34�.bhntz��������������������� (06<DLRX^djpv|���������������������������������������������������	�
������������������������������U*�.������	 !0�������������
#&-./01256P����J�������
5789:;<�����������������������"#$%&'()*+,-/123�!$4:@ADE2��������
5577889;<<?@����������������������"$%%&&''(())*-//13��!!$$44::@@AADDEE�����	����75789:;<V�������������������"#$%&'()*+,-/12354:E, !345577889:;<VV����������������������������������""#-//1122335544::EE�$�����������l�=����������������������
"(.4:@FLRX^djpv|�������������������������������	
������������	

358@D557<��	!""-%/51448669:::AA;EE<J$*06<�4�3�@�?�!� ��
��?@x&Lr����������4F
 ������
 ������&,2� ����� ����H 
� ���! (08@HPV\bhntz��{4�{3�{*�{ �{�{�4�3�*�@�?�!� ��������� 
� ���!"(.4�*�@�?�!� ��� ���� &,�4�3�*� ����
9:����{J�(������!?@�������!$�����������!!//?@|�������������������!!$$����������������������4��������������������������!?@�������������4 (.�������������!$B$.8;�B�D�F�H������
4.��������
��.
��.
�� Vrz�����3������������55::;;������������������������		!!%%))00���������������,,-.17@ADE������s$���|���������}���������~���������:BJ�0�������!**==?@���������
''�������������������������		
 ""%%''))+,�����s
*8������*
E�D�C�B���*4>HR\fpz���������e�k�l�m�n����*�*�*�*�*\*�*:�A�C�E�G������9:���5�����t7stu	

 !"#$%&'()*+34v5,-./0126G

$@D `d%��*��+��,��-��.��0��2��4	:	:5	A	A6
��DFLT&cyrl6dev2FdevaVgrekflatnv������������abvm&blwm.dist6kernHmarkPmkmkX	

'(*,Zbjt|���������������$,4<DLT\dlt|����������IRV���0�  �< �(V�����
X.�V���
2FZn���^����Pf,�����34�8w�7E2��������
�?.��� Q>�.���=n[�.���%UC�.�������.�����:.���=n[�.����&X.������.������.���b���.���b���.����M.������.���
=+o.���V�t�.�����/|}~������"�8������������8���/|}~����������������������������/|}~�������F�F�F�F�F�F�F�i�F�F�F/|}~������&��������������������������������� (8@w�7Esw�7EG):DL34��������34sL"�����������������������������������������=�����������������������=��wy��w�7AGG!lVv	 &,28>D
��
�
�V�
�
�
�
�	*-.1u}��	���"(.&"^vf�$*06<BHNT�n�n�n�n�n�n�n�n�n�n�nCL.wyx$�Vn�#n�$n�Vn4\~��wy��w�7AGG!wy��w�uu7AGGwy��w�7AGGs+++"*L�������������������BBbb�����		


 #$$%&'3
0B�V�)TZ`flrx~��������������������� &,28>DrB�B;��B|BmBy�p��B^B�tBxBT���Bm�z�sB8�+�|B�BdBbBh�h��B��|B�BrB�B|B�B��mBxB�CrB�Bt�)'()*+,-./0123juwz{|}�������������	�	�	�	�	�	�	�
p���$����v��i�*���/|}~������B��������!()**?@DDFF��������������		!00;;BBDDFFHH\\���������������������������

##&&-25566��������������������HH//|�����s .<JZjz<�:P���.������������������������$%()��������
��	��
����
����KVWb{{|~�
��	����
���������
��..����������������..����,>Rfx��������
&4BP^l!"	#
$%
& ��A��������������������� &,28>DJPV\bhntz����������������������sJ�"BJ1�{��s{J�s�{s�{���"
Z�����(��M:G�H�XJ{ JJ@	����A�������
5;U[���%)���������	!$,-.1237@ADE����������OP!**?@������25�������$*06<BHNTZ`flrx~����������������������V�V�V�V�V�V�V�V�V��V�V��V��V���V��V���V�/�/��/�/��/�/��/�/�/�/�/��/�/�/�/�V�V�V�V���V�/�/�/6.e��������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$++�_�<\$<��
����vww
�




�,\�$,���



��>9����$4<��Bq7���!!22G����<\$<<e�������������
5;=DF���������������������	���������������������������	
!#$&,-./012��������/34|}~�����������NTZ`flrx~������������������
����s�x����;��������������'X����Xf|������6H���06hn�Ljp�������������������������������������������������8������������)��*+��3�������������������������������������������	������������8��������������������������������������������������	������������8�����������3��&�������������������������	��
����������������8��;����������������������������������������y��3��������3��������������������;��3�������������������	������������8����������3��������3��������������	��������������8����3�������3��$�������������������������	����������������8��;����������������������������������������q3�����������y������������8����3������������������������������������������������	;������3�������������	��������������3����
�������������	������8���������;����������������������	��������������������'������������������������������JQY�(*B$���$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��4�4�&�&��0�0��*���Y���P�Q��#��$�4�&�O�9�8�G�F�H�m�f�"��&��O�"�4��%��!�������o�%
lll	llllll��ll	l
l��������J�����,������ 
l��m
lp
l
lp
l
l
l
l
l
l
l
l
l
l
l
lll
llm��(��p
p��(	l
l	ll�&�
l
ll
"
l
l
l
l
ll	l
l��pl
l
l"
l
ll
l
ll
n
k
l
ll
l
l;ll
ll��p
l
l
l
l$Ml�����
 #%)  +##,&3-bg;jjAbbBjjCopDt�F��[��f��g	�	�h	�	�}
m
t�
�
�������
 #%)  +##,&&-bg.jj4lm5bb7jj8op9��;��<��>��?F &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|������������Y��������������8������H�������3�8����,���j�28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz�����������:nMnMn~n�n�nsn�n�n"n"n�n1n'n{nnnsn�n1n{n~n�n�ninRnRnRn�n�n�n�n�n�n�n�n�n:nMnMn~n�n�n~n�n�n�n"n"n'nsn�n�n"n"n�n1n'n{nnsn�n�n"n"n�n1n'n{nninininin�n�n'n'n'n'n'n'n�n�n'n'n'n�n�n1n1n�n�n�n]n]nQn"n"n"n"n"n�n�n�n1n�n'n�n6n�n6n;nonpn�nnn�n�nnn�nn�n�n�n�n�nXnnnnn�n�n"n"n�n1nn�n�n�n"n"n�n1nn�n;nMn��������������59:;=>[�������������z|}~����������������	 !%)0����������������������������������������	
$&,-.1234567@ADE������������������2���"#$%.012���������������������������������JKLMN2���������$*06<BHNTZ`flrx~��������������������Ln�Ln�Vn�Vn�Ln�Vn�Vn�Vn�Vn�Vn�Vn�Ln�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Ln�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�VnLB�>p�� &,��|��s��� &,��|����F� &,��|����"� &,28>D���|��T���31��� &,28>D���|��T���11�z������4
=3F04f]jklmy`�{	A	A�	�	��
h
h�
m
v�
�
�����������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������		
				"	(	.	4	:	@	F	L	R	X	^	d	j	p	v	|	�	�	�	�	�	�	�	�������|����6���������������v��i��Y��������=�������������������������8�8����`�����������������H���������������������������j�d��3����j����$�8���,�8����,�����6�BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������������������J�������516�������L��������b����?���\&H&��O
BB
�
B
BB������BB��t	B	B��������
��
�7FH|CC##��������������������
87�BI
F�
�
��
B���
�
B
B
B
B
BD
B!�
BB�B.��
B�

B
B
�
�
�p�����CCCDGCCBCGC�FCBBBCDG��CGGC��GGCCCGC��CCBC�F��

!"!"#$%%'3'034]a8hi=`a?cnAq�M��e��t��u	�	�v
m
t�
�
����

!"!"#$%%'3'044]a9hi>`a@ciBknIq�M��u��v	A	Aw	�	�x
h
h�
m
v�
�
��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz�������������������|����6���������������=���������������8����`��������������������������������j�d�����j����$�8���,��hrr|������������4b||���h�����h��||||||�����������������||d�����z�����������z������bbb|���������|��b||�|�|�||||||||||||���������������������������������rr������������������������������������h��@N@@@������jjjjjx���	�
��9��;��<��>�����&��(��*��8��:��<������!��#��������������/ZO(������/2�������������������������=��/<������1����$&��Bb������������������������������?��A��C��E��G��I��K��M��O��Q��S��U���������������%��&��'��(��)��*��+��,��-��.��/��0��1����������������������������������������������=�����o�����3��4��5��6��7��8��H��I��J��K��L��l��m��n��o��p��q��r��s��t��u��v��w��z�������������������������������������$������������$�����$������������/_��$/29��;��<��>�����&��(��*��8��:��<������!��#��������������/d9��;��<��>�����&��(��*��8��:��<������!��#��������������/n[P\P������$P�F/2.=2��������������������������������#��$��%��&��'��(��)��*��+��,��-��.��/��0��1���������������������#��$��%��&��'��(��)��*��+��,��-��.��/��0��1��
��� �������������%��&��'��(��)��*��+��,��-��.��/��0��1�������������������������������������������������������������������������������������������������������������
����������������%��&��'��(��)��*��+��,��-��.��/��0��1���
����������������#��$��%��&��'��(��)��*��+��,��-��.��/��0��1����
�����
���3��4��5��6��7��8��H��I��J��K��L��l��m��n��o��p��q��r��s��t��u��v��w��z��������
���[\[<\<[<\<���������������P3��4��5��6��7��8��H��I��J��K��L��[Z\Zl��m��n��o��p��q��r��s��t��u��v��w��z�����������������������������������������������
���������^��_��`��a��b��c��d��e��f��g��h��i��j��k��l��m�����������������	��
������
������������������:���������������������������������������������������
���
���
���������^��_��`��a��b��c��d��e��f��g��h��i��j��k��l��m�����������������	��
������
��������������������������������������������������������������������
&'()*+,01456789;<=>?@DH[\^`e�������������������������������������������&(*89:;<=?Ads����� !"#$?ACEGIKMOQSUWY[]_acekmoqsuwy{}�����������������^%&'()*+,-./23456789:;<G_`blmnopqrstuvxyz�����������������������
�
�
�
�
�
�^_`abcdefghijklm���	

l&RP_,p^��������(������������������������������������������������������(����������������������������������������������������������������������������(������������������������������������������(���������������������������������������������������������������������������������������������������2���������������������������������������������������������2�����������222��������������������
����
�������������������
2((������������������������������������������������������<F��F��<F<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������`(��������������������������������������������������������������������������������������������������������������������������������F�������������������������������������������������������������������������������������������������������������������������(����<(������(F��������������������������������������������������������~��������������������������~��������������������������������������������(���������(���������������(��������������������������(�����������������������������������������������������������������������������������������������������������$##=<=&&((-))
**00F11*44
55Z66
995::;<'==F>>???FFGGJJKKQMMRSTUWW:YY1[\]]I^^ooNM������-����
��
��
������Z����������������������������������-��-��-��-��
��T��
����������������������������F��I��*��**T**






:::&&5''1((5))1**5++1,,..0022446688'99::;;<<==????AA?dd)ee$ss(tt"����������
����5��1BBCCSDDFFII@JJMMNNSOOoPPQQRRUTT@VV[WWZZ[[@]]Y^^U__m``aa@ccnffgghhii	kkllmmlnnPooppqq_rr	ssavvgwwxxPyy`zz{{f||~~dc������j��������������[����,��+��6��,����!��7��4��+������4������\��6��+��!��������,��,����E�� �������������� ������������%��%������R %R		

;W%67H7HVV4  !!!"";##!$$;%&''(())**++,,;--6778899W::%;;\<<==+>> ??G@@OCC>DD.EE4GG>HH.IIJJKKLLMMNNOOPPQQGRR VVWW6YY+ZZ [[X\\J]]X^^J__>``.aabbccddii]jjkk]llnnoorrssvvwwzz{{}}7~~E7��E������������������4������������������!����!����!����+�� ��G��O��>��.����.��A��3��A��3������A��3��A��3��3������������'  !!'""##'$$??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffkk
llmm
nnoo
ppqq
rrss
ttuu
vvww
xxyy)zz${{)||$}})~~$)��$��)��$������(��"��(��"��(��"��(��"��(��"��������������������������	��������	
 !(	18AGHLRV	WXlopqrstwxxY|���<��#��=��#��=��N��M^^
��Q%/38&9<]^L_`DaaCbbDcdClvzz��9��9����0��/��8��B��B��B
�
�
�
�
�
�
�
�
�
�k
�
�h
�
�
�
�^
�
�

�
�
�
�

�
�2
�
�K
�
�b
�
�
�
�i
�
�e
$T[
\]2^m����
�����
2)77=.9.&&((,,4466992::;<#>>??;BB=FFGGHJKKLL-MMPQRSTTUUVVWWXX,YY+ZZ[^__5bb=ooDC����P��������������������������������������������������������������������������-����-����-����-��������

,##,&&2''+((2))+**2+++,,--..//001122334455667788#99::;;<<==;>>5??;@@5AA;BB5ddeesstt������P��������,��2��+BBDDII<JJLL
MMPPRRHTT<WW[[<^^H__[``aa<bb]cc\ffgghhjj
kk	llmm nnEooppqqQssStt
uu vvXww xxEyyRzz{{W|| }~U��	����Z��	����
��	����	������%����$��%��1��3��$����"��$������J��1����&��%��"��!����������'����������������*��������/��������'������::	
*

803"&  !!N""8##N$$8%%&&''(())**++,,8--..88990:::<<>>??0BBCCDDEE"FF'HHJJKK0LL:MM%NNPPRRTTUUVVWWXXYYJZZ[[I\\?]]I^^?__``aa%bbcc&dd/ee&ff/hhiiOjjFkkOllFnnooqqrr$ssuuwwxx&yy/{{}}3~~!3��!��3��!����K��!��K��!������"��'������������������"��'��1��*��1��*��1��*��&��/������0����������M����M����L��@��L��@��$����������%������$����������#  !!#""###$$??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVXXZZ\\^^``bbddffkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~������������������������������������������������������
����	����	


	 18HL_d
lo	pq rs	tw|���9��7��.��7��.��.��D��C__aa,��>#$A%/01G2238
9GHL
MO[\B]klw
xyzz
{~���6��6����)��(��4��>
�
�
�
�

�
�	
�
�
�
�
�
�
�
�
�
�
�
�T
�
�
�
�Y
�
�V$T[^m�����������-8�&&(*01	469?FGJKMMRUWWYY[^ oo$%��&��2��3��8��?��F��J��M��R��S��]��^��_��`��c��m��n��o��p��q��stwx

y

z{���&,�..�00�22�44�66�8=�??�AA�de�st����������BD�FF�IJ�LR�TT�VW�Z[�]a�cc�ft�v|�~�����������������������������������������������������������
�	
$%-&7@6CE@GRCVWOYdQil]noarscvwez{g}�i��m��n��v������������������������$�?f�k���������������#��)(=18cALkRXw_d~lx�|��������������^^����%/�3<�]d�lv�zz����������������������
�
��
�
��
�
�
�
�'
�
�+
�
�,
�
�-
�
�.
�
�/
�
�46:$;TmT��n��r��s����<��	YJ�J�J�J�J�J�J�J�J�KKKKKKK$K*K0K6K<KBKHKNKTKZK`KfKlKrKxK~K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�LLLLLL L&L,L2L8L>LDLJLPLVL\LbLhLnLtLzL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�MM
MMMM"M(M.M4M:M@MFMLMRMXM^MdMjMpMvM|M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�NNNNNNN$N*N0N6N<NBNHNNNTNZN`NfNlNrNxN~N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�OOOOOO O&O,O2O8O>ODOJOPOVO\ObOhOnOtOzO�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�PP
PPPP"P(P.P4P:P@PFPLPRPXP^PdPjPpPvP|P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�QQQQQQQ$Q*Q0Q6Q<QBQHQNQTQZQ`QfQlQrQxQ~Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�RRRRRR R&R,R2R8R>RDRJRPRVR\RbRhRnRtRzR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�SS
SSSS"S(S.S4S:S@SFSLSRSXS^SdSjSpSvS|S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�TTTTTTT$T*T0T6T<TBTHTNTTTZT`TfTlTrTxT~T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�UUUUUU U&U,U2U8U>UDUJUPUVU\UbUhUnUtUzU�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�VV
VVVV"V(V.V4V:V@VFVLVRVXV^VdVjVpVvV|V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�WWWWWWW$W*W0W6W<WBWHWNWTWZW`WfWlWrWxW~W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�XXXXXX X&X,X2X8X>XDXJXPXVX\XbXhXnXtXzX�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�YY
YYYY"Y(Y.Y4Y:Y@YFYLYRYXY^YdYjYpYvY|Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�ZZZZZZZ$Z*Z0Z6Z<ZBZHZNZTZZZ`ZfZlZrZxZ~Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�[[[[[[ [&[,[2[8[>[D[J[P[V[\[b[h[n[t[z[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�\\
\\\\"\(\.\4\:\@\F\L\R\X\^\d\j\p\v\|\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�]]]]]]]$]*]0]6]<]B]H]N]T]Z]`]f]l]r]x]~]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�^^^^^^ ^&^,^2^8^>^D^J^P^V^\^b^h^n^t^z^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�__
____"_(_._4_:_@_F_L_R_X_^_d_j_p_v_|_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�```````$`*`0`6`<`B`H`N`T`Z```f`l`r`x`~`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�aaaaaa a&a,a2a8a>aDaJaPaVa\abahanataza�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�bb
bbbb"b(b.b4b:b@bFbLbRbXb^bdbjbpbvb|b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�ccccccc$c*c0c6c<cBcHcNcTcZc`cfclcrcxc~c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�dddddd d&d,d2d8d>dDdJdPdVd\dbdhdndtdzd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�ee
eeee"e(e.e4e:e@eFeLeReXe^edejepeve|e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�fffffff$f*f0f6f<fBfHfNfTfZf`ffflfrfxf~f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�gggggg g&g,g2g8g>gDgJgPgVg\gbghgngtgzg�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�hh
hhhh"h(h.h4h:h@hFhLhRhXh^hdhjhphvh|h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�iiiiiii$i*i0i6i<iBiHiNiTiZi`ifilirixi~i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�jjjjjj j&j,j2j8j>jDjJjPjVj\jbjhjnjtjzj�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�kk
kkkk"k(k.k4k:k@kFkLkRkXk^kdkjkpkvk|k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�lllllll$l*l0l6l<lBlHlNlTlZl`lflllrlxl~l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�mmmmmm m&m,m2m8m>mDmJmPmVm\mbmhmnmtmzm�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�nn
nnnn"n(n.n4n:n@nFnLnRnXn^ndnjnpnvn|n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�ooooooo$o*o0o6o<oBoHoNoToZo`ofoloroxo~o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�pppppp p&p,p2p8p>pDpJpPpVp\pbphpnptpzp�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�qq
qqqq"q(q.q4q:q@qFqLqRqXq^qdqjqpqvq|q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�rrrrrrr$r*r0r6r<rBrHrNrTrZr`rfrlrrrxr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�ssssss s&s,s2s8s>sDsJsPsVs\sbshsnstszs�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�tt
tttt"t(t.t4t:t@tFtLtRtXt^tdtjtptvt|t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�uuuuuuu$u*u0u6u<uBuHuNuTuZu`ufuluruxu~u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�vvvvvv v&v,v2v8v>vDvJvPvVv\vbvhvnvtvzv�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�ww
wwww"w(w.w4w:w@wFwLwRwXw^wdwjwpwvw|w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�xxxxxxx$x*x0x6x<xBxHxNxTxZx`xfxlxrxxx~x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�yyyyyy y&y,y2y8y>yDyJyPyVy\ybyhynytyzy�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�zz
zzzz"z(z.z4z:z@zFzLzRzXz^zdzjzpzvz|z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�{{{{{{{${*{0{6{<{B{H{N{T{Z{`{f{l{r{x{~{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�|||||| |&|,|2|8|>|D|J|P|V|\|b|h|n|t|z|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�}}
}}}}"}(}.}4}:}@}F}L}R}X}^}d}j}p}v}|}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�~~~~~~~$~*~0~6~<~B~H~N~T~Z~`~f~l~r~x~~~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~� &,28>DJPV\bhntz������������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Āʀ��ր܀�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������́��؁�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ȃ��Ԃ�������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ă��Ѓ��܃�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ƅ̄҄��ބ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������…��΅ԅ�����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ĆʆІֆ����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ƈ̇��؇އ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������ˆȈΈ��ڈ���������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʉ��։����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̊��؊��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������ȋ΋��ڋ��������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ČʌЌ֌܌������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƍ̍��؍ލ���������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������ŽȎΎ��ڎ���������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ďʏЏ֏܏����������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɛ̐��ؐސ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������‘ȑΑԑڑ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʒВ��ܒ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɠ̓ғؓޓ���������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������”��ΔԔ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʕЕ��ܕ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɩ̖Җؖޖ���������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������—ȗ��ԗڗ�����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Ę��И֘�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̙ҙ��ޙ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������šȚΚԚښ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ěʛ��֛����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɯ��Ҝ��ޜ�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ν��ڝ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʞ��֞������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɵ̟��؟ޟ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������������ڠ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʡС֡����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ƣ��Ң��ޢ�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������£��Σ��ڣ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʤ��֤����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƥ��ҥ��ޥ�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������¦�������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ħʧ��֧ܧ����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̨����ި����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������ȩΩԩک��������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʪ��֪�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƫ��ҫ��ޫ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ȭ��Ԭ�������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ĭ��Э��ܭ�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ʈ��Ү��ޮ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������ȯίԯگ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������İ��а��ܰ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ʊ��ұ��ޱ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ȳβ��ڲ���������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ijʳ��ֳܳ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̴��ش��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������µ��εԵ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʶ��ֶܶ����������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ʒ��ҷط��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������¸��θԸ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Ĺʹ��ֹܹ��������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƺ��Һغ��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������»ȻλԻڻ�����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ļ��мּ�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̽ҽ��޽����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������¾��ξԾ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Ŀʿпֿܿ����������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~����������������������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z����������������������������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|‚ˆŽ”š ¦¬²¸¾��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ÄÊÐÖÜâèîôú������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zĀĆČĒĘĞĤĪİĶļ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|łňŎŔŚŠŦŬŲŸž��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ƄƊƐƖƜƢƨƮƴƺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zǀdžnjǒǘǞǤǪǰǶǼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ȂȈȎȔȚȠȦȬȲȸȾ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ɄɊɐɖɜɢɨɮɴɺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zʀʆʌʒʘʞʤʪʰʶʼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|˂ˈˎ˔˚ˠ˦ˬ˲˸˾��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~̴̢̨̖̜̮̺̄̊̐������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z̀͆͌͒ͤͪ͘͞ͰͶͼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|΂ΈΎΔΚΠΦάβθξ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~τϊϐϖϜϢϨϮϴϺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zЀІЌВИОФЪажм����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|тшюєњѠѦѬѲѸѾ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~҄ҊҐҖҜҢҨҮҴҺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zӀӆӌӒӘӞӤӪӰӶӼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ԂԈԎԔԚԠԦԬԲԸԾ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ՄՊՐՖ՜բըծմպ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zրֆ֌ְֶּ֤֪֒֘֞����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ׂ׈׎הךנצ׬ײ׸׾��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~؄؊ؐؖ؜آبخشغ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zـنٌْ٘ٞ٤٪ٰٶټ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ڂڈڎڔښڠڦڬڲڸھ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ۄۊېۖۜۢۨۮ۴ۺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z܀܆܌ܒܘܞܤܪܼܰܶ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|݂݈ݎݔݚݠݦݬݲݸݾ��������������������������$�*D>��;B�v�t|�d�Vi���me,1��*��������ps���se���?����V����JT�W�,��l�e���w�||���������e/=�I���V����H7�Z�����eln���+/�D������%$�6��"�)"�(��BR���$�)�4- ���|�*�)+6���5������������qH��������u552-/?/��LI�4+~���������H�&52������	�^�����������|��D>��D>��D>��D>��D>��D>n����t�|�d�,1��,1��,1��,1�����?����?����?����?�mm�||���������e������e������e������e������e���ln���ln���ln���ln����"�//�<<�����������1�����-� -� -� -� ������������//�55�2-/�?/-/�?/-/�?/-/�?/-/�?///&5�2&5�2&5�2&5�2^����4�4�^����D>W���D>����D�$>���$�t|�d���t|�d���t|�d���t|�d���Vi���me$�)�4mm�55�,1W�-� ,1��-� ,1��-� ,�$1��-�$ ,1��-� �����*�)�+�����*�)�+�����*�)�+��#����*�)�+ps���se6���5ss�5�����?������W?�������?������$��?���$�������?���2�B2�������V�������J�#T�W��#��qH,��l�e������,�#��l�e��#�����,��l�e������,��l�e������,�����||���55�2|�#|���5�#52||���55�2{{x|�B|�5�52��W���e-/�?/������e-/�?/������e-/�?/�����H7�Z�~���H�#7�Z�~�#��H7�Z�~������������������������������e����H���e����H������H�ln���&5�2lnW��&5�2ln���&5�2ln���&512ln���&5�2l�$n���&�$52����������"�^�����"�)"�(�����)"�(�����)"�(��������44�mm�44�44�>>�22����t|L�mm����44�44�.� .���rr�&&��{�M�xB���������������66�������|�|�5�F������-/����WW�4�4�7��7�������������  ������rn�%5���hh��������$$�$$��������$$������&�&���pp����������me���meYR�4�B��e"���e�����B���y�����D>�������?����������e-/�?/ln���&5�2ln���&5D2ln��&5g2ln#��&5q2ln��&5g2D>��D�D>��E���W������4�4�����*�)�+JT�W���qH��$�����e-�$/?/��$�W���e-�$/�?/$$�����������me��meYR�4�����*�)�+���K�K�||���55�2@@�����������//�D>����D>����,1��-� ,1��-� ���?�������?����������e-/�?/������e-/�?/H7�Z�~���H7�Z�~���ln���&5�2ln���&5�2�#���#���#��e�#���H�����S�ps���se6���5s�s������PP�**�)�:"�(��:�D>����,�1��-� ������e-/D?/������e-/D?/������e-/�?/������e-/E?/W"�^�������uu����������D>��t|�d��0��,��l�e��e���������EE�ln���00�,1��-�0� ��B����������4�4H7�Z�~���"�^�����""444444���

4�4�)�44������,,����4�4�*�)+�����5� 5555�5�5��������������������I�I����R����u5�525�52<<B//����k�k����H�����������������������������������"Y"����O�&52//33����������������������������������������e  ,,�??����� ���4�4���������������������E��������6�?����nn����''�:�::�:�U�\�������T���R�a�a��a�a���a��a��a�a=��a?aR�R<���aTT���T���aa��aKa�������BJ��������V�����L����u�eb���k��e��������D�;B�v�,�)"�(�p��se������e�?�JT�W����w�||�������e/I���e"�%$�6�ff����?��"�##����##����-/?/&�&������-/?/�������������������//�4�4�t|�d�&�&���t|�d����,1��,1��ss�1�BB������?����?����B����������ss�55����88�n�Dn�D>��44�;B�v�1�Z�DZ�,1�����&�������5P�bb����w�ps���se������enn�/=�I�t|�d���e8F����%$�6�s�Ds�]R��		�ZZ����AA�=���@@��,,�  ��#�F#- wu��BJBG�	!!uu??-/?/88��LI���^���k�k�	�8�F83+����\\��))����-� -� 5�5��������������������������55�		�BB�^����9�G9�����RR�>>����		VV�II���mm�@@rr�&�*&U��>�����}�}����//>8�>>��b�b�$�$/��������B�B������D��J�GJ�33�))�33�4�4

]���		���F�F���D����G�&�$&���$�O�DO��F55�		55���[[�88z�Dz�?�G?rr�??��������AAt�$|�d��$��D��G��"��������<�D<��F��D��j�Gj`�D`�7�F7]]�//]]�6���5����D���G���?����ww�\�\��h�Dh�&�G&n�n�7�7z�Dz�K�GK]�D]�3�F3�D��z�Gz���?�D>����D>���������,1��-� r\�rr�����ww�&&����$$������WBB����BB�������e-/�?/���//��//�==���88W^����88�^����88�^����]]�33�	�D	��G�������	�:	��:�<�:<��:%%�		44�$�)�4�����������=�D=�
�G
����������||�AAff�HH''��d�:d�%�:%������������������V�����4+��������55�		�������"�"����u�Du�8�G8m�Dm�A�GA�n�4n�9�9��D��A�FA]�@]�*�F*h�@h�,�F,#�#��z|�����=L�>��,,�cc��  ****������7��u���ll55==//4��(//;;//��=
===
����**55>���5��5�J���dd��������������Q����������������������\����D�������������nn���Y�Y���������������''�A����������������������|���������\��������//�P���fLa��gOg��gg���O����g�����gba��g��g��g���giaZ�Za����00g?a���gma��gva����g���e������g|avv��v���ama�;�Ju,00a)a��a=a��e�������a������g���bT��TZ�Z�����������m������=����������)?P'��'�5524��40��a������LI//BR��$�)�4���|�*�)+�:��qH�}���LI44��g��g+a��g�����gpp���T�Ta�a���gia���aZa��TT���qqahhahhaT�T�T�T�T�T���a0�0g?a0�0a���gma���gma��axa��g�������gT�T�v�v���ama��a��a��g��aJa��aa���a���a���a���D��>�����;B�v�BR��;�PB�v�B�PR��;�mB�v�B�lR��t�|�d����Vi���me$�)�4V�Pi���me$�P�)�4V�mi���me$�m�)�4V�i���me$��)�4V�8i���me$�8�)�4,1��-� ,1��-� ,�81��-�8 ,�C1��-�G ,�1��-�� *������|���W��*�)�+ps���se6���5p�Ps���se6�P���5ps���se6���5p�s���se6����5p�Gs���se6�G���5��H��?���H������?���gJT�W���qHJ�PT�W��P��qHJ�mT�W��e��qH,�P��l�e��P�����,�P�Wl�e��P�����,�s��l�e��p�����,�8��l�e��<��������w����u���w����u��P��w��P�u||���55�2|�P|���5�P52|�e|���5�a52|�8|���5�852��#���e-/q?/�����e-/R?/������e-/�?/������e-/�?//=�I���L�I/=�I���L�IH7�Z�~���H�P7�Z�~�P��H�P7WZ�~�P���H�g7�Z�~�o���������P���P�����������R��P���P�����e��Y�H��P��e�P���H��q��e�m���H��8��e�3���H�o�Qn���4�Q52ln���&5�2l�8n���&�552ln#��&5q2ln��&5R2,,�D�����,�P,�D���P���������������������������������������P������P��%$�6�	��%$�6�	���"�^����)"�(�����)�P"�(��P��)"�(����6���5��R�H���1�^��1������������cc�..�D�P>���P�D>��5�D>��,�D>��,�D>�g�D>�s�D�P>���P��D>��L�D>��L�D>�n�D>�q�D�P>���P��,�P1��-�P ,1��-5 ,1��-� ,1��-, ,1��-, ,1�-g ,1�-s ,�P1��-�P� ���?���5��P��?���P������P�����e-�P/?/������e-/5?/������e-/,?/������e-/,?/�����e-/g?/�����e-/s?/��P�����e-�P/�?/���44����44����445���44���P��4�P4l�Pn���&�P52ln���&552���QQ����QQ����QQ5���QQ���P��Q�PQ�"�^�����P�"�^����"�^��5��"�^��������oo�((�..��################{>��H�>�>�*��*��q4�r5��������q��q�q]�q]�����������������g�	eq�e�*��e�*��e���e���e�]��e�^�e����������������T��^����������J��K��-/?/-/?/-/?/-/?/-/?/-/?/�]��e�g��e� ��e� ��e���e���e����������������������������������������������������####��������-/?/-/?/����################{>��H�>�>�*��*��q4�r5�����������������g�	eq�e�*��e�*��e���e���e�]��e�^�e����������������������������������������##�##�##########D>��D>W��`��L�D�����������������(��+eu�ep��se�����������������?���W?�v�b����&�&&�&"�"�������������������
e�k��e������ff�UT�����ama�����L�����b�����v��A�����K��������Uh\h�A���Th��T��Th�hTA2��7�?�����m�T���|����������d+��vA��u55������&&�=��g��V�H7�Z�+/�D�ff�������JT�W�D>n���������h4h4�A�>����e�����e���)*)>�����//�7�7��0���0���H�z�Dz�6�F���5J�DT�W��F��qH�D��F������@��@��@�������������������kk''���//���TZ�Z���y�1�"����(��65����������r�Dr�@�F@Z�DZ�#�F#bb�!!���w�uu������e���Z�DZ�#�F#����;�(;��(������a��a5�4��e��W�u�e��)������"�����JT�W���qHJT�W���qHJT�W���qH,��l�e������������e<>N>������e/=�I���LI�����&4�@���V�����4+��V�����4+��+/�D����4�4�4�4�$�*!���f$�)�4��������u552-,����e��������||���552t|�d�'*��6���5��������|�,,*�)+JT�W���qH||���552~����������A��e&�=�u==g=<66�
��"�e���ln���&52������U]�D���H�m��3��[ht|�d���)"�(�Vi���me$�)�4�����

������������33a������//������*�44���<��|������������������"��"//��,~,���+�+��$�$�������VY+�����������{{���g88/"4��4"Y"222������a (������)��i�Bi�|�B|�cc�:���l�e��|���D>��,1����$��?�ln��������������������������������������������������P���������������������Y����$������$�����������H������������e�������?�52�$�-�$ &�$52vv<�<v��<vy��<vy�<vx��<vx��<v@�<vw��<vv<�<vz��<��<O<��O<
<�<�<�<"�<��<�<��<�$<�<U�<��<�<^h<^^<�<58<�<58�<58"�<5�8<�<58"�<58��<##<2<###<##"2<###<��<�<���<���<��"�<��"�<����<���<���<����<��$�<�<��<�<GA<<<GA<<GA"<<G�#AC<<GA�<<,,<C<,,,<,,"C<,��<<��<��<��"<���<��<��<�b<���<��$�<<��<v�bv<�<v�bv"�<
<�<
�#<�<�v<�<��v�<��v<�<��#v<�<��v<�<���<pp<�<88<[<88[<88"[<8�#8<[<8�b8<88[<<<<d<<<<d<<<<d<<<<"d<<<<�d<<<<d<<<<"d<<<<�d<<<>=<<<<d<<vv<��<�<��<<�x<<d<��<�<���<��"�<��#�<�<��<�<���<��"�<��<�<��"�<�#�<�<,,<��<�<���<��"�<���<�<��#�<�<�*+<@<**@<**@<**"@<**�@<**@<**"@<**�@<*�$*<@<**U@<**@<��<�<��<�<���<��"�<����<���<��<�<��<�<���<��"�<����<���<��<�<���<��"�<���<2v�v�*������������������������������������]]���r�����n�)����Ab**)�7)��������$������Ta��V��T���:�UTa�a�Ta��H���P���UTa�a{�@���T���D�{>��H�>�>�*��*��q4�r5�p��seg�	eq�e�*��e�*��e���e���e�]��e�^�eff�����������������������������%q�/{��4��4�� �� �g�h�G��3�################�������������������������������
<�<<�<��<�<��<�<,,<C<,��<<
<�<pp<�<88<[<<<<d<<��<�<��<�<���<�<��<�<AA<��<<���<���<��<�<����<����<<<<d<<AA<
<�<��<�<,,<C<,
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<���<���<���<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<����<����<����<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<,,,,,,,,,,,,�<�<�<�<�<�<�<�<�<�<�<�<��<<���<��<<��<�<����<��<�<<<<d<<AA<
<�<��<�<,,<C<,
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
��<��<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<���<���<��<<��<<��<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<����<����<��<�<��<�<��<�<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<,,,,,,,,,,,,�<�<�<�<�<�<�<�<�<�<�<�<�&?F_nn4~~5��6��M�|l��-��.��/:;4=?6AA9DD:FN;QVDXYJ[[L]]M_`NbbPdlQppZrr[tu\zz^||_��`��a��g��j�&r).�7��nv���������	
%((00;_�L?R[�_h�lx|���				 	&	&'	,	,(	E	E)	I	K*	a	a-	e	e.	h	i/	k	m1	t	t4	{	|5	�	�7	�	�;	�	�<
3
3[
=
>\
@
@^
B
B_
D
F`
N
Nc
P
Pd
Y
ae
c
cn
y
zo
�
�q
�
�r
�
�s
�
�t
�
�u
�
�v
�
�x
�
�z
�
�}
�
�~
�
�
�
��
�
��
�
��
�
��
�
��
�
��
�
���
�����  �)/�22�66�:>�@D�HJ�OX�[j��������������������������������������� ����
�
��
�
��
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
 �,�,�9P	A
�
B3K04k]jplm~`��	A	A�	�	��
h
h�
m
v�
�
�������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������							$	*	0	6	<	B	H	N	T	Z	`	f	l	r	x	~	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�������|����6���������������v��i��Y����&"^����=�������������������������8�8����`�����������������H���������������������������j�d��3����j����$�8���,�8����,����դ'�'6�'Alib/fonts/notosans/NotoSans-Regular.woff000064400001037034147361034410014350 0ustar00wOFF>	$(FFTM>��5�GDEFGP
�gQa�GPOS���(��lh�TGSUBK`Mu��*�[XOS/2�``b�cmap!�hNOgaspGHglyfQ ��t��:�headl56%�T�hhea�!$��hmtxH�IH>hrloca$-
IL,rB\maxp� uname�[		���post�ZG�`����prep$h��x�c`d```b<�/�66���+7���=uv3(�w�2���@.ur@�x�c`d``�w���[����-\�"�@(���x�c`d`
bda�`�d`c�#Q��XK�X^2B���@ _)GOOG�
��-��C��� -x��	�Uŕ�O�}M7����,�6[�7�M
���4  �*�5FQǠ��a"j5�(��[4.QGLb25˨�(�ˈT� n�w~��zݯ�63���}�;�֭[U��Sg���g�|��&��\*���u7�H��2)��K�^˻2��b��w�<�Kw$e�y�ɧ�?8�}@+0���V��t�k0�����29�/�WI�_"��� ��R��_��a
e��*Z�ڄ��z:e]e ��7e��-���~��|)�I77N�蘡�v�t\�
����H*�;�y$C�lif�'S�e����]WFwK��ӷ֯�z�V�m��n�4��d�����o!�Z���tw� E�q��}�=�s���j�%7D#��[ �.Ʃ�{+��r����r0ha�r㹆�o�ה�n����U:E���_���z��&��A&��GV��r��aTe�	�2��1N�{=����Š�@1����>7���
ճ��L�,L�J�{��lʷ[�{���������ʟA�AU�텢��/Pa�
��x߹^��~m
��d��@+�I�=��2GLOu�����2Ky��:2�J���6�/T���l�|
�a�
ٍގ��R��:-�h��:7�H��6o����m?��w�s��7=�{�ԍ�y��C�l_H;'�4��d�E"㨧�h2�'c_���Y�7O�����m&�Ù;w�[�d�锖�n���_�����)<k�;ߒ!��\O�����`�›>6��Ə�����j���t��������9V:�!�3��[?-s��P���'0�)r��R�y�P:�zC���MGJ*S
������1�<L�~�j|̚ojot��6��}����ͅ�3ǜ~/���nH|����u��i'{������>�Hϻ��q:s�V��ݾ5[��#��a3j�yUt���0��Ȯv<6�=λ�8����$_龗�&z�:/��Lۮ�蘎G}�΃gŻG�W��o򬊺��Oۓ8��t޻�:��~-2�4��C}K�lQ��@������_f�-�:�V��{����oSMf���w2͍�.��q�����Z�S��o�,I|2����J)�m��J�ڜ#�/�����>�!�����f{�@��}:�.�
��jU?�>�+�A[��������c��_��߁Mh�	qCx'z����ʣ���<�oh��syw������:��&^�-W��o8��Xrᝓi�4VZ�{���*y� �N
Z�&n5~����Aa��{b��
y�g�5��4:��)���b��p/;������k�l�l�يf5~l�(v[��n�*&L��6��ֆ�=4�i@k�!�-�S"�1�V�SA?���M�r��`x\!��k�I?��pK�������pc~&'�x�I�׳�6���$p�Ɛ�wlsG�?�c��7A���>��+~���<>�?6�{1xt��'���Tp'}����5��p�K�,��#�<�^�J�^\�)�V�~|����%~9�]�o�{
�{.�a���R)wKw�;����q��y�MR�g��Cm�lB�W�
�9�/c��W2�A��o͏Ʃ�w�s�
���lg��i���o���Oa7�y�?S�B�[e������h6��$��x�9�q��)g0�?c'�g�c�L�e؝J|�k���N�9u�4�k=��ry~vR�Ŀ?�v͖1�C�Rw��&6�w�'����V���L��{.��3���˜;1v��͑���7����m��9�iK�
���O�w�����q���|�{��Cܧ��x���0�ݟ�~����t��c��#�a�W�<���3Z#.��P�d��?�8�M��X|wU�;�G�&ڋf�*��ֵ���>8G�m���\(_ی�$�3�O2%Մأ׏J����}��nm~|��~����---���=5�G�7A/
9͙�#,/u���s�i�S��[ �K�Wq��D�����h����5����o�7g9��&���k>���cYȏЩ�F)�Z��Oxv�4�~�wm��}[��;����K��u�r?�l"eqj�/��s���dX�h�j0ϯ�yt�
9���eR�>�*���lj�=���/�Hep��
<ho�:�|Z m�y�ʷ�u�.Jt��p�}�Uƃ����i�29�q�׸�/�=b��UF����ao���d1�B
=�)FF�i����)�4�:��Mr��r���=P�s�U�W�~��\O`\���q��1���:���6d��iO�v:'�<F�@k�J�%��i�ZC�1hӺTu��'��h#�R}�9cz�����
~����|y���Iy�LJ�ӝ�����o
���a�\�ڹ���D/���y������U��ļ�u����^�I��$��2�A�= ����
��l���J�>��ώ_͹P��fn?�}�θ�O�COoO��$�ހ(�vn3�|@lUB�F|��к��D�I<3�=����lO��:�u񞚣2��gv�'���U�G��<�	E7'�w�/z�5�֑P<61?�x��,���{���1_W}x�P�t���|����7]Y�uro�\Ꝙ���L����/6�~�}˨Z�R�D�.�_a���p1���p�tc����#�0Y�)7�A�7�mL�J������1��.
��ـW7���`��q=0ģJO��P��~��>�}Y���}~���d�k�$3�q��oZ��x��$V�g�S�x�����]��'��I�zmx;j�����"=�2驱�?���E�����t�>ɉ�?�O<s��^���7Ç�?y<��:�3Cf�.�O2��&ZB��IiEN?��8��<������D��A��0{��5���׊v5���䝓�6 ���iޫ}�KN��֓��a,��r�}9�*��cw�M����	��_h�=.륭�<~�<l��D��Σ��+�����KG`'��i��ӰM+��Ʋ�r��0��"W.��L��s-�|�����<����+���������i��ʍ����'b�v�5�[H���z����V��NI�v��>�`9����x+y�V�ֻ[���!��-�7��N���ǣ/�S���H��W͡�k��gK3b�!am��f=}������!W����g'k����+C,��u��&��ᡌ�b~��pi%�H������d0|ȕw��6�5��!ȧ�_�$�6^^b|_x�>�������R~�[F�� �WF1�e6�*C�\F��-�y����<��F����/Ucu�c�pzȕVhδ<�f�� �Q�C>�
��M���]��0F}~Q(�58-�awd�h7�|9��՛���0>�k␫B\�Mw_[�;��5�\��˩��N��AXL��v@�r�&]��:��P���ZnE��z�&���q����'��'������w6��z�����k~��)M뮽��K�M�\���Z�����qo��j_�r��%4�ָ�u|��b�ӂ_����l��@��??����������Þ�����@'�C�=��<�)��w��O���[��ƶg��o����<�~�K�2��_P�Yɏ�Xp?x�|v����{/R�g%�5�`B�}9]��O�����ٶ�|$�*���߃?�]��p�6��ݐ�`��Ԡ��	l
f/��x�	/��A�WA�Ѡ:`S�T0���k���77�u����v��r������Ez�u�=�v��V� ��M֕3Ɯw��7��:�a-Q�-,ט:�Wo[������4�X�C����
��S+��Fg�C��4Y_�:&k�^uR�5��q�˟������Aj]��‘7F��i��Dȯ��t�G�E��$���^v.�H;�PLŴa F�ĭ��k����}	���hPb����-���LEO��el��Ύ�U_�����W׀q�n��
�|D|~��v����x��������Jwtd��F�OS�=���+�S����4I�6�b|w�{�F��G?J�l=#�Ho�K�v�H.�=����sdpt}�ʠh��[�E�Ĩ�q&�b���ɷec�_�7/��n����~>:4��b>�5��\�ΆL#f
���4�����H�Ɂ��9��+��-��\��k�����ƻ2����oj�P��'�H��o�y^ig+ʌ��@�h�]2���s�ã���>{s����w�<��'6�z�o���[m�Jch�N:���O�0�
fn�����>:��Q�}�N�N������e��Z�)��;#�;OJ�i�;��n��gs�Q��5�\̷��T�Y�������Q���r+Ѵ?�ؠP��\�N'�i��im1���#���7������JQ4�1�J��2l�;�U�H'�N�['�b�5�#�D�k(��/9�خum��2��Рv�
�ry�60K:�Y��A9ѯ��k���%�=&�S��gQ?�������ri]�(�z<t.�u$�sܗ��r�TNY�t��}��Zt��d��Ӥ��I�^/1�.�����1�xS�]um�jh_ӓ$���R��'�Zr�1d	��I������w�FN�JR�$�[x��=)�Љ[�^�����'��'��"#�iȇ{{+C��������{^V_�?�&�=��<�Vga�\p!��08e�\�* ��(��f��I���r
��A�i��Ow~*waӚ�y��>��9��rx{?�)m�^�u����f)�a̗A�)��ަ����U��w�0�'�Z���®�{�7:X�]�5����B�9ܕS�U��{�L��s����7T��� 9�T�5ӽ'p��7D��uWB;�l�Ko�G����0�1�N��p����(�	��M`���T+���sUQ��<Y������{-/��'�����CK� Z!
�&l��(�FrS:�o����ߟ'�s��v�{�3�Խh�z�~T�W^��w�p	�7���W�#�<p��o���ޖ^�k�[���'����x���خwk'��Gf;�����}4���(�9�>4b��Je�Q����~�v�R�}2�+�q�^�����a"�]��š��2Ơ�W��(
~�^]����|�٦b��dlb�^�HK�u:t�p��N)N1s��JRWB�΀�!%3_^]h�׽J;�rJ�7�]'H�����zAk=���`���W
N��6��x�3�:ɉfH�h�4�ٟ�g�[g����}OC��Տ�/h�Ǵ�G�]����d�-�ϑ<h��@|V��|���5v���oē����w�St0r�2��:��g��)~�!>xu?�y��Og��f����{�ReM�3m����P�;�D�*T6��+�;:J{�(��ؚ����	���77�?u�{� ������yG�s_�_��_ڂ�bp�DnU\ͼ����q��0_M�-�a?��ܡ�x���8�<x�%ɗ1�_����.��C�E���=��ԡ���伕�Gֽ��UW9[��T�oj���޳}��QW���y
�5"]H'͈+'�w'�����'�E��.9�
�OtS��5�X�ڋCl�ZaO>�a�-���~
l��9Tc��� �������]�<�\��̎a�T%�S�[�l[)ߣe�m=�V�u3�����	�ʝ��[cjlgp/����3�ѳr��>|P[�M�e�5�G�׏h�q����!-ig
H��0��e�E�?:���7���.����AA|���_��,�cفN<�Ϳ�-���0%��Đ*����Ͳ3Yz����������9	�R�սj��?��o�s.��z@FU}ޞ�Ya�i��
�[��̥�$`���5|�:�sں�����*(��6�1�A�"h��<�&��P�k��į���"Et�T�n�5��6/u�+9_0]F�'�k�%�!�GB�Gv<���5t�;��<���x���h�\��[��l�)P���ͺUs�S�O���a峰�Pי�����ڒ���]�M�?����7<^�/j�����/>�m����{��u�b�z�w�v�2��@�2z��\�e�ᶊsa�fc��˄�v������<)
e ^���I�3�;K'0��A��AG���L��k����/��Ç�'�%N�O;�ߔᴡ礟$ꅭ�>2�OĞ%�[���~֓��h��;�9�˜�e��,�A�;�yy�WrSW����X������	����4m@#�VAy'h7��8\w��Z�+m��鹥��΁��s�I�mBm3���nm�v;�1t(�h��W��_W��tM���o�B�8:�q(-
�CF�]3�)��sc
(O��5msxh;M����?:��C��C��!�S3ތ�}�=��+{�8�$�	�=Տ�s�(y�\ae�5L��`�z:������۹���?'F�k5�������@�OC�)��۳������%�\�Sm��k�4��N[�z������x�g�R��O��~v�����j;�^D���!�87�{��<���}�	�yE�q�g�9�����
�ʷ�Y�_��&#�a��ï���!�	�I�F�?j�կ��=��3�}��ퟘ�}��v���Y�~j���F�'��+2d�ck��:��|�.�� ���n���Z~@��ؗON��z}��d�wB�g�����q��q޾t�Y?�c�g�3�|���1&�
��&��O��w�OݫI��z$�u����l�.���ַw��r��A�6������:���?�/8WZSO��>W�}�����C�ΏޕuVtUX;��/��W�J<-�(����~u�q+�h��N�Z�����,=��#+�'A��u�7���	���m���ߍ�r��/�З�{�wVs��5���i/g}��䙞u���oq=g}�x�7��S��_Ǫ�^������v�{����r�R+�:���<��$c�OzL�q�춀�f������/$�\�T�N��z~<�u��{g�:�q�mL-��- ��wԾ��=���Y��s� GQ{F<9'�F�F�kk;'�5�x3�HΏWoO`�ȋ3Γ�1+E�}Sak�;���3����ޟw"�Z���e��bKS�����d�h�юDR���'H�M�|�v�kt�\"t z%���w�o=�z''�9��Q߯�7�C�����
ף��<�Q\��3R�n�[�D��1�!�	�*Hi^���LUP�sb"�U�?Zo�o����	c�7��D��jyM�2�F�wK�g�>S�-R��'��}w;�1L�����`�AT�<�g]
�2��o���tu���Y(	�WH�W#�]�3a��L=��� �}<w�Z=(@����ϑQ^������A^=�C	u�5�'�9��씯�O���7�*ջ2���ؓ��ںZ���7�Ugؼt_��v�?�W��
�n�\�vȷ��ST&��1�mw��G��d��� �-q3����=���Nl�]f��@�w5#���2�nR	z�9�4�G�$�j;�R����0ݟ����S��g�|��#���1.��Ԩ��7g��c\�_�����>��f���U=�g�~�@�3���6��O3[���z=���j�ЖJ�؜x�œYL�W��}�w�QKg��/,�Vk�}ߵd��X��6�nhDD�Q��efPq�E����Dk���ޘh�T-A�ze|𭏞�{O��;9���p��#\G�����J��@��Uk̟�T3��2��!��Ԩ�t�KW��ZFJ�*���r��-����!o�
���G�Z)�R+�ʷʬ����茘�1��nvM���+��ہ^�8��š�Zj�km��m��I�-��
3M��̓f�������[�ݸkd+i�r�;r�\+����]Y)�˗�<k��cy5���I��|���/	�{��P�&[��Z�M���оa����v�}�.��|\��*��)�*Tj��S�j�ڥv�j��Q[���2U�JW����֩�j�j����^i?��rX�#O�'ϓ�Y�雜�� ��w"*"Jß�=v�X�������}s`�[��7�هJ}NF��_Cј&4�͉�-i�GD�V���H��hbhC[�ўt���BWb�#�>�����AO��^|Ao�З~��:� 3��c8#�(F3���c<��$&3��Lc:3��,f�%s��D��K2�:lf�؋���G?���c��8�i�p���"���5�R�u`��Bq��{9S�O�V��I��?��i?�f��n��_)���|�w����6��*��B��s�p��D�8$�(�>񫣏�����?��bV��'.��l6��,�����}c7�)��F���#�(0���(2
��?p<�����xڥ�gt�e%��-(vT��ޫ MTTTP�@�0`�ETT�"��t�R��J'!	)�'Ԁtl�����~̚��Ǭ�uV����g�}�r�����%��Hq%B�� �O�G� �M4�G��;�~�hAQO�)A��,��� ����%��=>���/�gUOT���ށb[�WC�p���Q�������B<�x> �9���� xH�z
��y������>�z?��ð�?;������ϡ&ǜ �IoN�r�}��Hb<Jã�E/�1=��XF�7r��-'�L�y�AC���%���{�SA���ó|��q����ɯo��&((� �
�ޅ`µ�p�s���"<)"�(>Ei,ʋ��3�bz���J�-�DKAK	�%p/����+�KIK�Q��%{:K�R�'�`��Q
F)�`��Q
F)�J�)�����jJ�)�ޗ�̝�x�5𲸗5���P�r���ܝ���_��P9Z��<_ʛO�����<�+�>�W�_^Ex�U�WѾV4��׃��*�S��̫�J0+����J0+ìl��+
>V�ce��S��*tW�����
��*�Ui�JoU|��S
�j�Tç>��{³'<{³'��'�_u���W��Uw^��Uǯ:~�'��_
�j�W���>5�ϓ�<��I^>��'y��ښ�j��鬦��v���i�jzj�_K�Zz�ҳ���ԡ�V[^��xP��:�Թ�L�:z�1�:��s#�ڙ�v����˻���˻����)gO��ԝ�x?�w=����zv��]�g��٫z���ۧ�$O3���»����i��	¬���Ӽ|�����/�Q��������:��>����s������>
ph@OZ�cC�hȟ�~�y���/��/���`�Fz4��e�_�����د�*�^��Xrc^4��	�&��������=����SS���f�o��nox�.o�9���x���S�=l���z5���\�󪹹6�)�O�|��S����3�c���+/n�Z��B�v�--̫%�Z�ߊWo������5�־�����
m��h��;Y�q~����8�g�q���'?N~[ym嵕�V^[ym嵕��v��ç.��.^�(�x}�i��=^�x{o��<��M�ٶ�>��i{;��lڛY{^�����jo���=-h�`o;�������`��`:��ǎf��t�q'~tƧ3�.8vq��.޽.���̺���n��~w���з�=p�{���sO���S����9}`~�!����|{y���`�#�~,�c=>�'�	�y��{�~���ԗ�}�L?�������@��?�����<��Oy:P��zn��?� s$�g_�9��x
�k�!��s(�f1��_��%�a4
��0����t
��+Ͽ��+�F�a#匴#Վ��_��7�Q�����ݣpm�F�5F�;3��c�;��އq�8�qvs<.�=O�x='��	�f�~���t~�׉���D�&�v���O��;��8�B�T3�Ɵi�L����N��tg3虡�:gš�n��ߛ��{�6��Y����,3�E�,�0�,g�6�l�f�e�g��̡g�9���y����9���\Z��1�\���q�ܹ|�k?��0��/~����?��A�y�i�ݞs��q�o���.,�}��`-�|!��<X��Z�|���[H�B�X��">/�y�^��ZD�"~-�9����>��|�M�!~^��,�k1]��{����Z̯���[,�Gy?��#�?�G��؟%vt	�K�~��,1�%�,�g	�K�/U��\�Ұ�ƥ�/�u)�e0��\�v��eΖٹe<X��evf����Ӱ��-��ry���r3Z.o/Vข�+䮰C+�f��vl%��f���vv%�V�j�ٯ��2�U|X��*|V�
�O��I�����՞��g��kpY�Z�~-�����Z���\g?�y��<֛�z^�W��G�qX/o^���]�w�l�m��MxlR����H"���'�/	�$z��M��I�%�J���|3^��l�����6�~3����7��d��p��'�C2]ɸ'{���J1��J1�<RpH��bƩz��H�-U}*�Ry�jF���.ջ��-�m�w���j���a������վl�������,���w�}�I�N�4ם|م�.w��
7�ݴ�B�/8�m��챳{��U��>���ܧf��������w��W>ip�������:��A|�>��!}�v������MG�q�Q�|�Q:�ڃc����c��8�>&'��t3H��n�f�n��zf���,�3hΰ?���븾ǽ'�<�oN��_'��I��I\O�;�S4�vvZ��x���4���<�3j�8?c_���~eڥL3�4�L=2q;��Y�g�v����8�����~�a����i8�����/:�Ȼ�t\4���w�G�h�ģK�_r~�{qI�%��p��w�ޗ}�"�
���j�W�]��\���f��p���5�^3���
�o�3��`�N��j����
�O���/|������Λ�v�o���˿��WͿ�ހ��7���v�&�����nBA� �B�lb~�DE��)N�hA�Tȍ&���ݝU7�P��B�=��3R�G�н��'����8���zz���)V�Q_���}�C݄����l���0��Ĥ �#�P�C^��b���ӳ��r��	둪�G��G�yT�Gqy4%=�Px���\�J�͏��P8y�ϋ^:�N�P�����'��A�qg��{|i��,?����R@m<�X���Կ�0�� ��+���Q(A�(��¼,�0
�UX�½��tƷ0�E�+Bc��[��"�)�k}��ST���U[��bfR��b�V\m��e������gI��:	�J��J�\��28��Q�粸��]�~��r���Y��
�*��@w�WгNͨ�]�d��̶2͕}�,���*0��\�L�­ʿ���F[5?��	��驎�;{�:�5�I��s�j��	��}�-��� Tg�PW�Y]���W�8�5Ϻ8>��/�a=�����6�]�ڑ�8ח�zN�sr��y�k���������z���ųA�%5/�QQA��<z�W��9���W�k�	-M����6�KM�;k�5�Ə�pvo
���^W�צ<i
���f�s
5�-hn�k3����w�
�߄�����Û�ބÃzc`�׆bp��'1f�c�96W�gg-ͤ%�-崄�
�Vv�-���m=[��Z�p��9�1�6����F}z���6r����5N�8���m�G;��/�ػt��o<����qs�����ޑr�C��ѻ�����ggs��H���zu1�.�w�C��򠫹tկ��j�]�u���t�s���Fkw����n�#C�q�AC�졮�����=�{��S��������C=zٯ^p?��1�ۛO���ͷ޸����>��g}�����n�3�~��?N��.��?����>0�O�S���gv�33���<��7����8n���j��;��}��j�9�!xQ?�|��7ϡ�6�P�_z�%�/a�o�]��0:��>�p��W8|ef_���^|%gF���t��l$�_��k��1�op��Q<m���{>F��j��x��q|s���>��s<��aNP��@�}k���>�7�O��$}&�;�\';���d=��w�}��)8M�s����O�|�����o=3����o���0��0g�9�9f7G�\s�k��G�<�1����pػ��_��/��B	�XL�b�?�Yb�K�/�w)��M�e�.7/���
�\��pV��~Z�=Xſ���'�?��3M?������Y
�wh���V�ƌ�а�k�q�	��k^��X��8l��n�c��h6z_7���M|I�Q"?a'�I�?I��J(ɹ�J�]%��̧����w�P2}�&�}�BC�ީ�S�n�e�=p�m�|+���o�g�~����vܷ�/����wпC��w��oh��]rv��}"��>�K�~�>큷��^�G��u/N�`���>z������U���O�it��Sw�P�4޻c��`�_��; ��; � ��7B����F��8l�i>�O����:b����#|<��yG��wT�QyG�(�Gyu��G�=�:��Q�w�c��㐮_��J��;v:�t�����e�ː�!/C^��y�2p�!��8��8�q8��q��p��N�x�,N�:coΘ�{}��طL���<�'�f�i��"S^��Ly�(�����sW	�3�s��_�:��y>��Ͻ$t��]��~��y���.�|�G��E�.�|�>\��2ݗ�L�e���^�{��W�^�{��W�^�{��W�^�{�N\�W�󪝸jWq�j'�ڇ���*߯��߯�pM�k���p�	�ׄ�kB�5����w��p������_�������u�:���7���-��-:o�|�Ƿ��� �r��b�8�CqA8�Yx|�4�E�p���'j��"%���U������;g�&&�{�=���s� |�>�
��1��g����q%?�U�j,�E�S6�ن��b��+.���xg�(��~v���g��~�s�ɡ&gT���I	�{�E��G���b���Qu����)�
��1���D��\ps�&ݹ`䂑F.���KNn9���
#7�ܼ�-'�����'�>y`䁑�<��O���F^ya䅑�L�ꓗ޼�䕓ON>9���'��|���'�>�_��y����<�������q�<.'����䇑F~3�/'����Ч�>`�Q����?�(��B���� =�pႸ�IAo�B|+�k!z
�(��B�2���S��p
�UX^a�
�*�Oa�
�WD�"��W�"��8w����>E�)��(-E�(���btñ���O1g��fqu��eq�U�O�y��0��,��8�PW��%�.�$̒0K�,�kI�J�\��R|+�c)K�X
^)x����VWfi<K;/
�4��rʨ/�?�(CO�e�z�_Y�xY�e��5����,���b��WN^9�O9�C9�A9��y�٧r��������%E=�=.�M�,�<��0�ì��
0+x�+x�+x�+x�+��R��V���5\���W�[Es�ȃ���h'*�*�}�h���t��+�S��|��_��pe�+�ie�Lk���w�U�b�U�~�JOU�J�{t����V3�j8V���[�̞��e��k�Q�����M
�a�5��p���=���\���k���e�k���m-3���}��ֆ]ۜj�W���fX�:���w>֡���©K�;{�)�R���h�g���ܧ��3���gp}γ�~V�g�<��x��c}�<ǃ�|~���y����=x����������l�j��j�iȏ�z4��!�
͡!����ν�_���h�/���p^��%u/���mijF���;���W�x���W�U5�ͥ1]M�h�y����k4����~6�Ӕ�f�5�����|�����
�}o+V^,m-̺��jZ��
n+[�-���m3}�Go�{�O��{m�cn����>��k��<�ǿ=�����YG�;zg;������w7u���>=�a�z��C��̥����'z��������Ϗ���f�1-��do���>fч�>f�F_����O}8���3@��3�����O��>���>�T7H��}������{1�yCy5��/�×<��v�K^
S7��`��m����F؃����ڜ��{�y��h�}��h^��y�����#g���2���ٻqp��6�_���������|�s"�'Ÿ��d��d���4����ά܅�Sx�>��|
�S��T��1��S��i�O�l��ip���tz�;���x�7�g��Ls�����Yt�R?K�Y��e��h���l�g�8��s��\=��=�<�<���l��y��}>�h[���[D�"��$�!�7	�/��b���b{��7��{���G~4�q��%j�಄�K�]�R����2�-��]<�L�r���Z�\N�
}V��B�
�+�2Cw��O<��7?��n�	ϟ�̷���y�Z��yؽ<��5�����k���wm�Y��z�����m�+�܈�F�����y��D�M�CI|K�y�ϛ���[��d�)8�x�›T��~'l�/[�ق�V��Uϭ|ݦ�6��6}������o��>�e'��4���_������z����}��>3ߏ�~>엿�Y�iޣ4gi�.
�|<`���tRH���0m��aw��Q>u~��cv���ԧ㖮w��3ˀ��q���=��	3;��v�$������];E��j���<��i=O��i�O�zڳ3����}q�
gҖɿL�3帳��zO�ڃ�t��Ggឥ���s�3�s��_���W�~��W����<���]�s�x_�\Tw��Kx\��]恻j��4�n����f�����`��w���y��'�?�W��_����_������u��7=����c��[�؟�ɿ|�����&�����zw�HPQ�+�H���/v����A$#���,5İ rW6�Hȿ�z�;^��Z_�	"��/<sόܛO����������@�-�<�󃓂��e��C�H6��z��A��@4���� �]~���찲{����+����sz�S�GZ�A�Qx���NJ��A$�zw�H�� �[��^$
y�p����E��
"���7U�r���*��Ok~}�\�z��>)�PY��B4�u!��gE`���~E�
}��W��⧂H	�%x\���_J^)?K;/]O�	|K����2t��[V�;E�!R����s^��r���_��8D*�[An�+�"�+�Y���Z9#�Tѯ��Wš*]��V�G5XO��	���Sݳ�zT�K�yU��'�[M��m����Z��o�H������ݪ˧�pJ}=��4�1�g�V�g����>���yN��M#
�4�Dv
"/��}~����K��d��6��e9/��2�^��+�x՞�ʋW�z��p�����4��5��&�5|_��u\��ij�Mi��7�
���훾ǘy�=i��� Kk�g�|�m-`�Šů�ږ��7�hi�-�����{Պ�V���V�[�{+�Z��Խ��۞�ַ5/[��;�{Ն�6���M���ٽ���S#��Nj8����3V�~q�G[��m�ikg��l�G[;�V�v8��E;�j�g;�o��v�߅�.�w�k�z���G��z�;��sƳ���=��l�g{�a{���ݞ���`>̷�Yw0�r:��`W:��Q���t��ь;��)��y'���{҉ם�G'uֳ3
�i�LCg{��v�S����wg����E^>v���]��JSWz���*��n4t����n|�Ʒnzv�_�~�w7������λ��k\{x?z���{փ������`��'�=��IcO�x�,�7���{����x�����p��p��}�����ү�`d��"�]�ٛ��l�?v���������Op���Op���O�.��Ho8�������V�^���_���'}q��Ǿ|�k7��՗����^�K_?9���'���~���k�;gp��M{џO���W�_w�H��_�����c����o�~p�T�Oy�)����|��@���s�?�7H�At����s��4
�c��{"C�»!r���|��b�}�v(.C�?T��0���P���P�P���{S�K��/��0u������c�������]_��+��c����7���z$F�:���f9R�Hܾ�c_���ޱ�=����#�8�a�o�.v�|c���(��䏒?�ߣ叆?��Ѹ��|4�18���z��:�wc��X�6�\ƚ�X�X��k,
�`��5N�qz��{��y8�Ύ�u���i��&x>��	�O�{������o��[��]��g�O�y"��O�?�$�O�|�&��$���O�3����'˟l7&��m��m��m�y>��)�N�3E��S�L�|���j�S�O5s���4{=��x1����4ϧ˟.��e�=��t{1�w3��3��}22����?Ӿ�4���3�w3y7�w3��{�~���qrό̂9�,�f�5[���f����>�\��y.�s�3W߹vx��s�y.�~�s?��A�����w�̓;�?�𜇧;id>��q�o.���|���Yk��/��Y�^@�B�[H�B<�u������"�/��H�"��Ip��g���	z&�@W��,���YLÏ~��F�е�R|�y����]F�2���L�r\V�_��J�+�u�����U|\E�*�V��	����j|V�p5����Z��w����i�ڵp�z��Zyk�^k���Y��u8������pZG�:�^gG��[��z��ӽ�.�w��7�� �hؠ�z7ҽQύ�6�ۨn���m�o�9l��F���jm�x���M�m27���&�l��&=6�ݤ�&u�hJT�?Q~"�D���$�]�(7Q�D}�'ꓤO��$}��IR��O�>Ij��I2�$�I��'�O��f���٬�>�Y�f>n���W��n�}�>�r��I�'Y~�>�$�I�'Y�du�$듬6Ym�����BW
�R�J�-��R�K�/�)z��
?RԦ�“T���Sէ�OU��>U}��T}Sզ�J[*oR�݂�����-8o�y�[pޢ�|��E����٪�V�[��*w�[�ت�V=���6���ކ�6����Ƈm�l�6:�᲍��xl�;�q߮�v���]��o���;�ߡ��w�C������;�ߡ�N�w�S�������;�ߩ�N�w�S�]����]�v��.9��ݭ�n}w�[�n}w��n�v��/����q�>��߃�g{p�C��{��Q���=r��W��r���+g���r���K�>8��쓳O�>9��쓳�������~Z�Ӱ���w��K�oQ��4�>�љFg��4<��H���z����r@��8 �����sP�A9a�� .y{�����~���s�!8��=$�݇a��0����:,�0^�q?,�NG��8B�XG��sD�9G����uvT��t���1����/��<Fs���ӝ��3�t:��P��[��p3�f8;΃��}��Ύ�=��8�N�=��pO8;��	����I������I��O�=|���v;�o����<�~���٧�SjN�9���S�f9��7N�w�S�N�;���~ϟVsڿ�������8���������)N��紞g��{��3j��wF�3���sƿg�8�G&^�8e�Ʉ�	7�L<2�=���Y9g���8��w�z��uVϳz������O��w�9��`��W�ù`.xv��/¿(�Y\�{�l.��e�W��W�]�s������kfz�>\�7����ov�w3�ݎ�����a���O���_<����zݬ���o������w��7|���&�7齉�Mu7��I�-zo�{��[�ނs��[xޢ��[����m���6oü
�6��0oü
� �?��'��FA4��A4�8�Fr�xq%�F��^bd͢&�ڻ|�����@�[��3�hֲ³{�߳2���^��U�A�b��D��@}�D��Ay5��l��!���ps���,Gk��sv���#�����G��G�>�M�
��F����uD��}�(*j������Fny<��Y�aB�<��� �W�|-ũ ��T���z��/���)���
�/x=�£PIQO���\H}!��A�ނ�Ex]��">�_�y1��Q����S�����[R}I�J��J�P�g-'�Y�YYgeͨ�圗ǣ<�a�ק������+ï̇�tT�_���P��鮢OZ�؟*��W��UxX��U̡*_����yP��5pzR��f^�\j˭����O�YO�Ӹ=c����Ϛ[}�>�y��� �P���Kv���e;�

�����44ƽIN��&r��	�&�󚞯�z��>7����f~6�׌�7�}��7վI{���1���C{�b�&V�1v-Ʈ5��9?��h�Ksڛ�gsb�s�ޏX��w,ͱv;֞�z�b�G�ޭX��������O9-x�V�-��t��V����h�D�cfm����/��fߎ�w��.�xu���@KG>u�M'u�=�—�p��Qw�{ؙ���=���^�����?���ۜ��������j��}J�g<�L�@��ہA�
��>�3��C�ʣ�޿/q�v�����/#�e�F�ׯ��7�}C�(�G�9ڬ����X1N�x��M����щtNR?Y�wf3�����tt*�S�1�ib:���2ݞΰ?����fx>����=�;��|=�x4�G�y9�N��s��ϥg�>?���}�����ϓ;�sw��|9���]��>-��]���a�y�����YH��lt!�Ef�����/��b?�G��8_�~�]v�.���iYaOW�ߕz��K?��Oz�cu���٬�g
?�x?��v
?��[��Zx�䬇��z���
zm��n�k]�rw��;F7���c��1��uw�n��q�h�߄�&��$�a�^I洙��t���?ES�P4U�{Mt��r?���D�O�[y���m8�_D�뽃�;��i�
�;�{��ݴ������=�����|���;<�O�}|�xt��oi�����>
�4�q@߃����Q�F�q�#�8‹��?��1���$N���y����F�����y��<:ͷ3�3q�4��0��=�_��J��z���s�hf�x�q���%u��2�+ޣ���f^��\E���'̿<�˳�o8�����|�<��
}o�r�xޢ��6�[����-�nٵ[����m���Y��bj�%�� K���d�wK�H��<� Y�1��/V�q#Ȓ��,=Ů �]E��DK�����z��n����nuYk�Fv�q癜{���B�=p��&`܃����ܣ�=g�,��{���}�� �e��yׇ�g�)����D^�xڜ}`�Ź��$Y���dyhZ�mY�Z޶<$y�c�v�&���`$�2B%-��--}-Z�ZB-MX-�ⵅ��B������϶���������'��q��7<+
$�On���qp7�5�^�g�>8#����ǂH�L� d�����D�V%Y̶o�e��n�g��g�/B��>?//�j4
�(���v��"4��Ӫ�
h�7x���_�o����d��"���W�G�|���w
7�^-����?j���#����8@��p���_�?���Ρ?u�O#����g��@�A+q{ h.�C��C��y�M��ȥ@��h�ը�;�7���G�k�lc��n�x~�6�+���z�^ ������hs�xp�3�3���E5%���M���(ʤ�O*2��2�#�����P
�	�~��7��^�X�؜� ��b�o�\�O�[�ڢ-�����c��6�����Hs+�'<�c�ڝ;׮ݑ��g�]����.�X����u�i�PX��ϣ�(�n�Y%�j�I�Dk�K
C�`��DK%$X�C��9�U��ޔ6$��N�po���5���6k����j��5��]M5��0t�k7��[�osX�C��1��Z�o�rX]�ύu�P]a.	Ӗ�4�-BY�9�B�s,�R��;���I�8��=�h���5
{~?2�����/���ψ���X��<D����h4҃?�����;��=�� �^H1Ն���.���!�ԩ��>����mh�w�Ϫ�炣���{�}o�h�9��%�M0���D�jK{��?�Y�����r�f�����Ɉ~�FX�<��Յ����5�����C�G�>�Lَ���ގ��Y��s�x�8f����볬A��A*����o
�A�����b���yEt��d�TET4��B�Ŝ�<���v]A���ll���������<��'O�r�'�C��4>] 0Y�h� �C>0��L�ju=�>)���4���	N�YF�;��ڊ@���J��
�6�d��`�-R��(pnh������4=���TTY����U��"<n1Z��[H�bjz��m��+n��|��Ά��������y�dߚ����H�����m�m�-�>�(u0Z=�k�5Y-u�-�U�2��2�9�q�F��e�*� ӄ)|r��Ă6^h���>�a�92����ui������ޣ,�LJg&�
�O
Y�YA{��,�@�4�M�j��:�?4e�ι;���rbg6���(����n��t@��A�vDZR�9���a2��Ch���<���j�0�U���P�c6M�ZfV|"�@(;zp��'SkG:a���vl�����k����x�n��[��\��h���o>�p�ڮ��N{���/D։fF�xV��n3`
���z�O�w�Ά�=��1ͦZqp|
��p|�|	G������i,=�����]���Xсu�4�M��������F^iF<��AV��
��z��@�;�f��7�W�ՅZ�@I~�E���(���1�o�'�4Ѹ,A0&��D�
��BTC���)�v��0�LΎZ�
����HP�4=��-e��
k?�x2����[2\k���-s-���^���؁��[*��|�Z�A9N!O�5؟�}[^�
�j�G���x֏�X�c)	�!_�`beu�J�x<>�#�C�@����a
��{\��S��:uؽ�����?y/�a��M���т}���T���џE�����jq	؍{�*��o����zO�?_C{��C�9�$`3)�	o��2�"Eu���bpLUN���&KzDk��h˶��*�69�<�,yD�3�U\��),ȕ���|�[�&D�5��8M�A��$�x�@0r
�q7B�
͛k�Gؤv�:]�$�"h��O��}�T��e(Ҷ��z�랓U���օ�xp�|���(����+J�p���z��5-
��Kf{�V�g�����;>�ء��3ko�7[֠���>���ӏՖ��_)J�ua�D�$G�n�X�/��3m4�S��.���J3DER�o�
������tC��
��Sh�^���̜�BKrE@�d�u.�3\_{C�����m���hC��7O4����cUMO�X��)t�Q��(��Zh�,m���*t>�-��?��G2�,F��ۮ޻���p�Ul8��q��-�VS��k��[�ޞ)���g�
[3u4��5�BkH��n�_��g��~���~�����vL3X����λ��隅_a���E�4|�G���-�&�%`�����~��/-l���f�3�v,t���>9��P�(1p�g�W�l�Z����\fۄ��M�+&�u٧��_�:�e�#U�\w׵}��R%�hX�avt��9VH|��0ubxlmԷ�v�
\Z��Bv���܎��D����`o�_	+T~�j�J�u���:�w	}$��
�E�$�Y�2�*�8gx�YIR�(IUR�s!<���\�>+Ű	%�jP|�[��4<�Wmx~
�G�WK��x��`~�z���'�b�a�%���A)������u Έ4#$a�ѕ�?9�~,Bp�_EBQ�5��{���>�[
kʨ4�`�B|�?k\����4��	����:�k��D0�g\)Ba/�̇�-h�'d��Fp�� ��_!�.KS�L�n6�9��W-'�o:��ܼ�D��/��޳y�����3���ܴ�ё3�����뮻��8}�{��n^D���œJ�w�`��u��O��fg�ٍ3s��_��6�Ou�
��F�H��X�Exy@��=r�HRFRBh?my�>�`�	��ڸ���-K@�]s�0l}aͣ7?7�n�q�ճe���s�N�	϶S�5�G*�-~
>Eg�IuK1�x&:V�<>=��r�l]W�ٕ�+���X���p�7�5���hb�B�/�W,��i���˩Q��4en�Ǧ��iy��z$�!�Rm���������o�A������NDD+�N\stxl|j`�杍������s]�e�y��AZ~H'�)�R�����d�D#;M�T��f��#5�|}Fx����,�$�A��o{v�h�,��g�7���bU���R�X�H߈'�rˋS2�\������G��1��5bA���s"AFX��,J�/��02��s�3���o� ul��@G���['V����>!��d���G����B���q_ꫦ�,�U�djB���noR׃�`	�g�;��I��L����w��W8[pX�l��"�l�
P����}��*��ch/	���#G�}����k�<6�5�,��5+��m�J���� 
�@U�9
��H-΂g���#�T-x�Z��q�? ��̃Z��Z�4S~f��ܛ)MȯLW��)Rər!��w��gJn��$��E*%+�T`\5^+Y��&�)���-��3m���a$#�S'[��mݝ"��ޟ%�SfS�J}Ņ-�2o�k������N�)	��\�0�G�P��ٽg��S+Q���W�Ea��Bnv=r���/QﮚM�Y;��S��A3�
�˯ɸ���M5u[b��l]mνm����pj����}����KSs��vi&�[)�f<*���U�>&��c<ܡI�rf��ꎬ$ �f�t�޾ƺ�h4���>�2e�2_[H��=Mc㲙u[&&ײ:@�kiM1IK&�^�	7H-���tcm�P���N_GaAg�uG�b]��I����+74F&��6��z���XW���'�|.����%b�C��\t��^78>>�m(��B���:p�r�sy���4I�8���B�+Cx1#h�-i}!|�[�DY�A�2SAP����{�h�����(�y~ǎm��M���VhvD.l�n�*슨ӋS�N>xG���5S��^�! �Ⱦ �b	
��x���8I?�_�j`�p�� �rX

��o��C�Ǒ�p������{����E�\�2T���� |/;7���~q�Hˌ�/.ʘ�f/խ��9�yz��,�4Ө4��C��d�/K�QQ���-|���Y[Pɞ��t�ٱY�oB J�e�<2��k��j`�����y�ԧ�H���O�'��G�߄D��=�Pp����훉��8�i	6�wx������]Ո��Y}��6q�4��#L��@?fƑ��k*,v9��1c���A��hW��Qf��C� �MÎ�`�[��\!`د��T{�M5Ժ������f�q͉�C���;4�i����4�!>dF4c�[c,��1���)r6�;��.m
��E�vow=zkQh>r���_�;ar���<:.�^���;4ߠ
G�8�@��"�B;�7�
��]�S�����ԉ2"�_�i
�H4Mᑛ=�}x,M_\�q��-븳n��Mf)��#Ӓ��a�Ċc�"}74�]BQqW�z�V9k��ѓ�|�.��x��U�]㈻�RS�7;6
{�����`�����nm�T�:e�EV�ѨR9J�
�JyD���i�*���-Cs���t��yL�(D�j|#%�
3�~]a���f��}��Z"����� �вuou���ҁ�G�*�I��ç��J��e��UC;��n�h�}l��:83����@c ��ÂD؄H����d�T(e*%[�u���W./	�A���iH��@ZFس�)z�oX�Z�cJ�H��NΜiNS�D�4�dbr4M-	��-÷�wA�F�QH��~�`��$�.�Usgn֠�iѼ
,4 ��L �iC>!��sߟ9r��2s��i�Ig�R�S��Y'X�
}ݛK���[kߞ�K%�&��3Ԯ�f��2Y�G�)��x�m#P�/�����ch�%�w#��������ꨍ�� �k�N����;��@5��!�@2�D������������8�ذ�<p/h�<�+j�%�v�ǀ�{�2I9w�[�V(��b&�?��ߛ��/��F4�$=���
���x�D*�gN��؉�a��2�	4Ip�����L����I�� �^�'dXݚ�j�'�[沺չ�:o4�����Y�t����v�f��|�w{Q�%H�|����g��0櫧)��t���t�iW��o>A7K�p����5f�u��m�ΰ!��^_1���7���<�)U�z~~B�і�	�fR*��l�N�%�D�j�o�v�,�l2�Md7����A�!������(ԃ�TJQ���&������u�U���ں5u�ah�� ��:�/�]������J��{�0�b7��T�����
+eu�:m����{j3U�w���P��e�zs�5��b)ϷV��T^���]+W(䵨W���[箕),��:�/+�hͯ�X�R���Dt�����K	}!-%�ۣ/��;��מ���
`�������!�
�e�8�JhjU��i�:�w�0��� YwA��i<0�c�?c:�8'�W0�Jc4^��=�cv��=?������r-�ms�n�q��\���-���N�� ��:�	��Te�B��Fef�Ti�ɱ���*}a�2`kl��Z2�E9��JUX��%K��Y�|�ą�x�	�������ݖ�T��f�Ɇ�Z}���~a&�m%�kj��{+T���^���.ȸ=`�5�j%�%���v:�������e�g��~��gK���NW�֞�U��p�<���"\�H KW�����?�����ޮ�������eyU���֞���T)�c#8��U$�X�܉$֭��ĴqM�p�;]Ujs��[Z��S���á���,_1|5X�Bu��d:	jL��4o��;А��u;�d>���^G�&��Ҏ�@~8�9v��|��رꇁ�E�#�俘A����a2���6]`r�����x&*X\d���$|� ���~A�W�]�c|��V�{������`w�'o{�Lu���pz�r/&�S�aw(�Ǐ>�W��b<B����>��_P�3*	|/�9�v��L�,�E��Y��k������`�S�vy].p__CCCC_����;�ķ����~�/�6�[��8�[�up�:/<%w��>a��M	|�I�Hq+����� �}�ޒ�XT�TQ�p:���k�F�ʕ�W��C _a4���zhk��J�`=���ݽC��y�j���_VV�.�5���Fa_���OJ|�M�5������j�K�_f��B	��a���2]y�Ŝ���*ҕ����k��G�C_���uV��G���R{�J���H���\�Q��RT�#L��y�鈍��G�UA�;�?�����g�3���Q_h&�5_<n�]�G&7���@���BB$�"��#=���
��
�w�!�皛���<����뭾���8��,�N�Hv�1�i�Ea+��)�<�Ũ��2�����T/P��)��w��!C���|y��!���X�`oS��s����_��kh��{����������eG��<�B��G?�y�3��!��!^��+b�:�Hƅ�{�i�V��a<~@n���E�Iގo~>�|��j���k��'�Ӧ���_	�ؘF�i%�r�^�I?Ȧ>���gL]�K��1�G��`�.L8s��$��y�[��P$8P��Щ����8!A-��=L>���4_��	O��9�a�pm@�����%6�/W 
t���"[-�%�[enI-�Dh�BPW��Tm��ds*j�KZ͜��lN�p����c1���e��5��0�$�G�?R��†�2��Qp�����%j�Gx�p���c�8��o���W� �� ��0�h+�u��X$�y����}�n��S꿁~����~�v��Ⱥ����2�> &��H�/d�{�gy�.�]���N�ڏq�ף��$�����w1���j^�.AiG/艷�#�o�vl�����o<�h&���6�B�ا�ɵ���3�6P��ށ�>���o|��a`�{N�=�=P����!ȹ�z��o>f�N���_���g��v�]�0Q;��wy�p��>�ۏq�̢�t��Fr@5�
�E����<�P�#��?�!X�{�a�C�~��BU��_�� �l�vڋG�"�=	_8FK0+���ħ���S�w:c'7���]U��_hu��߾{8�7��L�|�G����Fu꺂��U3��'�;�;�D�+Twc�"�$��ro/��.o����N�ڏq��3�B�0�5CG��`}�D"�Fl�T��4��a���
]�Ó���\35�j쯜���ݷ��;�?12����9A2��6;-�hl��N��6������d���s=�^��y
5�삂�h��*�|�fj'\c�ٍE�&7��R�׮�u��.���\P�08MF[v�M�*Zx��;,���
�?�֟$h�$HЎ���D������t9��-n���x�B/;>�W�I�(j#�D�:����كI�6|��6q\߀#�q��h.i�9�J�W�Gۚ�v���9�Lٖou�Z�(�_*��6���As�Xpr�����hǐ9����T���W�����u�A��Z�a�
ZO�揂�t;��`|5��&HЎ�\���H+��[�8� 턂N����u�?�P��wY�o���y�nG�R2���8ɳa/ N����2&��11��`W��(ښ7���m�醁k��6�X�Љdu�W�6�]ڽ�-�==��p!Ӫ���pύ7Ulh�|0'�M�ZB���t��C=MS��CdM�M�XMc�q��ɚzqM�]�W�#��ǹ����䷿Ŷ�K���n�E�.��x����
r�&�Vk4Rx�o��˹F�^o6�������;�x���
ec���1�m�X�p`!F;v%4�:ʋ
�k�5��+�s�Ժ���Y��͠\�;���{L��j���kn���j,�նp(�Z?��^�nBk�m�G�N�\,o�%x#A;�錀��.X���i{-�?Όs� �߸�ncv�X[�D[RsnW	}�iZ����5��$ ����t�ӻG"��
0<��2n��e��i�
?xWZ�a��~���Q��u<X�b`A0�×�8����3h�v��u�G��o��#�����=}L�E+�]�<��F+�oh�x�ׁ���>�C�r0w���O��)����(Qt>��)��U���$�0����<�p����(3>�O#���_Cw�����ў�	LX:�^
��W
i�2=��48@M_�o
���iҕ�����>lZN��"	��,�G��b�t���=�_�2>���??����{1<�H����0Ȫꆆ��������89�&.Wpr�q�v��8���'<9�v��=�A����!~��\�S��x��c�%�c�?�ɋ/l���<?V��'1bwM�Ԏ%1U�k
� �k���di�*PR�e���(/.�ᔭbB��A�H\�4�hEtH#`�8`�H�_e�����8��H�;�3���>q�V������G�k^�?p��Y����
�����x~��o���\����}@�Ag���3"���-�K�K�b�I������RM
>6���`�l&x,f�x?^'ҾН-|��1���w���? �Z��>$�%{��,lŜ��¡��;ul�N���N�'��/�	��D��R�8
D�J5�YM��x��9!L���蘊�Vxi�n@i���Q��؅O�Ѻa�'h�UDעu�Ӌ/�5�E�eDN�e���{�&:���⇤�߈,v����?�i$�D��g�O��Q{�%��=����3�"�_g��E��9BK�t�'L�;���?%� :!W���U����<sV���n�C�iG���{2z|����!8�\�%d����>M��'2&����x������i��g�K���iO��c2h�̅�0�[��K�]�x�ؘ�uʳP�!u����U����.{������&��DŽ.��v��]Fo�G��wox�"x���E�#Y���$�i$�:~s�X]�	�rڈw���!iG�x!�}�"�_&!��늏�ڧ�=��/1���)`�~H�ʠ^���<B��p����~�H�Dp"QRmROy-��7X���T��C�w�jf~׉}��oi>tR����}ց��� �XQ
���pV4Ps6��Y'���;���q���d
>�8��":U��x
o|N�X:>��
�8\���jO��_L�4��;�xQ1/� y��|f"��o��2�F�6PDP($Q�BQ/���.e�3�����-!�}�rfR�����,VB�
MtDgΐ�(rm;��R1���\d«�#�ǩ�"!FcsTwK����p6�コܝg'|��g�o��I�"|���a?���u��q[�}q9o�u_����󈳓L
-goT�����)$���J\�*�=�N���5^�����-;�n߾����Oæ�Q��77mz`���뮻[M2��h��Є$G�`/$�\`��S�F��&�i������=��-��p�捆ٺȆ��[kf�r'*+#H����:"���X4��&ց�P�4|���7�e����0�z��ٙ����;Apbh�-�V��wL�I�,L��bh>Fګ_�������O8>:�d|�t���ݟď������I��I�p	<��{�5A���e8>���f��I?�/�w !<���𧢳d"�)c�i���{ �������u2~3~#���X��O�.ṗ��z-Έ_^��gˑD�\��LV�!��d�n����p뭠�����m�~@�
6�̸$���;8�h��W��@�u�D<�l_�͞�=�zg'=-�����/pz<kc��p����?�?���v��=��y�����g��������O��L��	�ˆ'���C�7��%XI^�
k)�jʒ,ć%R^թY�Ĩ��ش��Y�.7��#~��J��Ob�Jj�ZKۇ�B��A'i'y
�J�LڧA��a�G���4gW�٨Q{3��XbCAg�%�?�ٴ�/~N��<2N
s�J��6<��~#����d����G�7�s㣳֕`|t���ϵp�H=L�.���NC	����,���Ғ�t@
���m	b&�S��}�`���A���:x�<��]6}u�T�?��<.H�i��K$B�5�?@��X�E瘎Q���bI� ���#@��A�zC�D�!�4�����So�WfkeI�1=\��"w�B�I�BH-p|ߏ��g��'hq\0�|�~&���	q�yS,��ً���,&K��;���F3�m�_;s�׾����ޖ���0�D�Z:^6��-Z�X��=L��h�bӐG�Y����m8<�¼=��+����A�4�љ�]A�kWd���	���IE���ǵ��}{=]&k����[��O�J3��e8�R�٪��ٲ�����p��Yl�z.X����DT�)
����jj�,O�(
���1���k��-K�JÍl�4�s�X�#ˆ8|0Vf�ȍ�`B��	7&����I$�D�1|>Dt�Œ���@�	��}���?]o�OO��v�i�8T۰#�B,��$�g�]� `
��vv:PC2�F�'��?Z�=;34?^���B�B�
��XMu������
;�˳`�o�3�I�9ּ"�Y̆n$��p��R%�&{(�i��V�%P@YlS�D��(����m)ɰ���n����i�T���U�6���kb�W���~�%R��Km�Yt��d׻G
��cS�M�F�dw.׃o����C�6��J��F��K��b;F��og�yE��B{Hކ6��?P��P}0D���;E��pe�����܎���W�=�������\��*�\���T7���4�M`��u8]����6��п/JI�\9�H���l�1��w�GS;�9�l;�K]R�㡏��r�t���R;�頶����>Y���9*`�#�!�	�� �tUm�`���f]W�q�"U�&�%6/�-�8jXx�u��F|�8!�`3�KS�	�x�9�KҢ�	ӱ0�?����xڴ\Nx���`99�\NX��()d�9�K���`�#�o���z�$[vl�o&su�,S(3�[˜ۃp�:��1;�`���ͶҶ�2m�9�Qc�a���>t��=irb�a8=b��](�'�z=#���U��R��N�k��tBԩC��@}�4��
��\m-s;qt����1��и3���ܦ0,^���#5KR�g���!vIPK�|�U�!"[���wx����wx֯��}Q��@�����z���ٽM����]
a�\�"�I���?�k?��7��ɲY�D���S�@�<K}��n�ݐ���-['7>�,K�򿬴bR�dA�$�
.��7R����)��-��:�'��� ��E"��XUz����%1��#:΃�T[��s�$p!"J����EH
Iҟ�k��Rs�";MjV��u���V���\y~��)Y-�Rr�{���X��S�`T(v�L5FJ��X����Li�Sf�\�e3+=�y�/L�%�3S��5C������h�8g&pu�8oM��6�9��̌���Ms��`��5��ұ��Bg�����%�d�˙�yUR1Za�&�`ds������hdq���� �N���ʰ�(�eI­q���Ƃc@uDU--���be��e�^i>�~�	��޽��P3!I+�)^��={6mܳw/�>�Mk��U�h���|�kﺋ�C��ki,	`g�Lf[`�X��d���8ŭ������f5I�J��Ԇv��5kV���e�&<��\�h��}ʹl��G�έ=��xlm�f�a6�z�l~`�o�6oY3�e�:�b�N�sn%��T�^�%��o_�\\��j�΅esKn�_[u`��}kag�hm������%iim�˷��/|6p�N��L���q��h��A"��u��.|01—��"`W@ 1I��}��Ip�в�f:Tٯ\�U�
�]9��üÿdzYNө��-^���1근LCbG_���J��Bha���	�].�������%��
t����O���h�6\-������.�����Ja\ ���@f�l��hm����l��<[��H�hMyC^C}a�9�6�9��z&M��%Pm��˴k'J�Z��cu�idm

]���6>��J�^1��W�9���rMe�{�`�*}��+�eAC�9����
�R�
g!Z��e�2ŽEe�*נɳ�����Én8Nr|/-��h���|�R1M�`A�Hr�U��%�;���rm�@#�Q�Up!]��+[��:W���c�L�"#7��[[�`�?V���TI� �&Y/���h�U��0��b��I���[�&%���6��`��3�OI���Lh��*�P�{߁{=�V�p
gWô�|F�[�"^�d�k+�۝ϳ�51���Gl||�_]s'���UbY��I���l�o��3��Mj��bK7|�	�nK��5I��2�b���B�|ia
R���I��cU�;'��ixb2�a�k�[+��]�4��l�
O���'^�瘾ב���+�L}j</|!���	�#�U�8�tГ='ݽ�j�x:N=�O5�m�x����M�~�EI��
�`���u�67�㓵��'֬=�:P�0��li8�u�X���ͫn�h�yՖ������ꍜ#��K�}�LYD��2<�Ae�e�诫ܛʳ��ٍi)�i�7SO#Lq5:*�Ch��o5�p��>Z���*�Q���P���j�}�P�'5%[�Ǩ��y�HF23�*.+Y�����b��?�s���d�&�{��
��
&y5GڪrB�D�B}��'�B=��fiS���"�Yx!����
q���������<�0���?y��
�.
:@����*'�0.��?J����M��؋��]Wm�o���;y����������c>$:��-�X�&a�0i�K�����=e��~H}����.��T�&W��Ԫ��3>�R��l�Xj��B��������hl~~��ckU��߂;��[1�i��b�d��X9�
��Y�IU�pt@�����畁���FO��o�1ʒ4o�׻�:�z�&G*�G}��`~�{����rr�.�U�B���Z�7�k����u�6�3C�դ\ �lh�"�65�o_5/���֫�fn~\A9�y����w4�m_
&�
;��CQ�	�"���@���T�u1��L���HQ%�;5k�G�\�{c�Ԥ��d�8x����egćTR~������:;����֯��c��}�,w�ͭ��f�7��
�PeOk�ply+�w���:U���}��3��;�Z�޾�يƽ�-�e��i��a3G�&���#��vQ�۷�2��Eu�0�_F͆�����NV>�F�VF��1����B.�-5-���3�pimsQk�Qh.�n���_�'��»���6�`�q�+LMĬ��K�謠v�0�׃���}�-Yo}�	]G��&����Пv�

��Q�i�����ˊ$\�����(|\F���5HO%vz����)��-���l�HC~��~���!�wYL��t���3�2�<���;��>W��(�q%xΐq|�8��q���q|�8��q���ô�M���21q�c؏Ƹ8�%�#G�ܑ1�GO�?��h,��$�Yer���H܂@�����&����ky�]|��+Tۂ��!e6�;~Y���B?�+�%�4�^��Y�z�s�ƕe�,������h��ŕ���/`!lH�+�Z0xe!P�d���B>5v��c�}��'�(Ֆ�֤��k+tbv���'��>>�n͉�S%^ŕ|��υ,G��9���D�,^�MK�~�Y��	ꁰ��?K!�k�f�����a83����N��R_��]��Vz�ӏ|&�k=ne�ܖ�m�g(��U_��8�ma`��?���%_�R��+�^��D4������N0h��jI!����cQ�9����(R��㜈F����L�pK���Kp��؏hV$�\Rߞ��,����q��U`��+Yϝ	�&�_�XQ/V��/��0$��r�$��Ju�����ˊ�%d�weA;��"�kIE�e�'���L1�K���_��N���7�����[#����޲y��{L��@���j���W���s���r��uVn�X�����9��Hu$�ٷġ�����S��iakܮ�<F;sN�<�R
6�c��o��*���*�*i��w�=(�
X�d�O�X�bkס��������5_^�.T#�:�#�K�ӿ���u�~�j5w�Ѱܖ�u���75O�����͎%��?z�����u�������`���d��ILnբ�ؾY9��@�ȣV\_���_<��eV^<����$�3�>��E�p\$�i�{�a���J�#�"y�Wx=��q,	�Y����D�%�.������v"gs�%F����J�
v����q;�`�Z?v�~R]��d��7�|j8��.�sxxbp�z�����VqI�l��7�Lv|��6m���qx^ ��5�A�.��Uie蚚U���������H��Z�y����kn�I������F��{z��y��W��4�w>��t�Kd�8�aa�'B���
��L�G�6��Tdx�<�^�X7�f�(��2�t���z%��d�D�5�$K]�̷�kJJC%W��ן{^���f��_Q�fgW��Xh�,s�V��d"��X�
��{C<�ZZ��A���][��VVz��Y��K���i���de@s<������yz}���U\�㉏�<���<�H�<�34���ô14{�э~�$'s���8�@W��5	s�΃��v�=���Z��8� /��'̧:�	�p{.�8'���~Ex�}�=��q���~���#��~�C	u��G蚸�/a��yp]�o��0yK��H��8eԮ����?B�/���y�ń��o�	t_�>�0~�<ؘ ~���;��k��㼍�L��G��k�8b/�����[a
�GҒ$}�F�K˲�|$�-�ت�V�|�P��b���lw]�l��o�ȟ>��xne]kqeD��N�d���}冼*���^_ޓ++i
��,$�
��rL�tx����Ty��)v����'�e%ζ�<׸74p9k���>�>_�*]�R�u�.�JU�W��*�M�궆�+Z�	s��^&��(���8�v\��j��8@pr�����z�F��+�.��g��v�SC�Q�+��u��ĉ�L7tŸ0�}i�Q:T��J
h��|.�/��Sr�H���9����Z�J����:�<	ҏ��.��RWv��T!5��KsR�>^��k��j�f�(��� ������v�����)\MrK�X�/A�rr_|�u�@[����Hyh����i����'re������`j���i�n�qp���Y����j[_�>������6�Lr�
�j�%e��#�������
������u[芴-��;z�4��C�;"������嚹��W5�ww��vu�3g���4�|e�T�����5�a^����/�3����p��b9�A(��\<������8���]�sW��0��r5�	P��NV�,"��_��}�+�+:�b���.%zAL�qN�, �/�^��0��J�=QAK&Օ�J1���8̢�#o���ʉ��>�_���A���[�S�R���ǙU�RkI���`�h�t�J�����Zj �"�v,{~����]��pC"4…��=���}���O'�~���O��m,�i}�����UTʪ�`�2x�+���r��=��_	ǗQ"�҃̄$��婚Dx�s�\��q^��.W�x�'%��mĿ���� �m�|�����X��p�!��S����6�
y0g*��O��1k�ܩ�Ӡ�au?����-X�3�b�˲�r�e�ۭ�\�q��*znW�2E�|n;�s��c��#%��%W^��S�ֹ���M���.;��ZHd0���߈O�����S"����ҵ��˪�k�E�/.-O׃ކ�Ą�ҕ/���(ٗޟ&&Q�e��Wrw=�/p`�
�93�M-��o�h��Ml<w�����+k���L��⻝��^���#�p�y'�oy���J�HF!Ɇ4���y�n�G�E�" �t1���P� ���1��A3a��/�+e���&2P�Y\|
�G�ï���W�,B�~õ�%J��O�h�h�?9W?�H�yy�����6QF�P�H���|�z8ކ�l�}n�w���t�=
��"�yO�!4]%LB,^t�T��•ӆ$t(���JS�5]/}�ZDg?�8�������6��K��]�@/�R���4���RIDj˄㱽�ό���u��Uf����p������M�[�P�UZ�YR�R�W���f��w樲S�2�϶�t�����M��E��}��%�M�d!u8�$Dդ�3侮���xY�O=00��à�FA�z1�E'�3�pfB�ʰG�d	H,J�k'��Z�ru���<r|CQ�z�6�&��;\��<(��VR�^��诂�������Ҟ�K���*E�L��e���M�e&e�
�i]�8E��Z:�,_�t$�cb:�ڎ�}	�lZ��F\����bi�����U�����zU���EK��3e�S[�NG_BƇ��=H7Ssu`�GH�h�����`��2����I�r6F�5zmL�ǽ!n&op1{jl�!<�k��;284��܎���١��>Ӫ��P���:<y阼'��+�ӯ��b�Ouw�"avح�>�~}ټ���	��>��&���k�#1�'U-��R;�������+�:V�=�'��>K\G3s�q4�ܭ��$��S�O!���ᑍ�?�,gh��B���c��+�Anz8��X��@�U꥝�����--�,��틠���9�"#Gx�l~	�26$͸I9)D�HL�bH�M���L�ц�U�i��U�Zi,�ߘ�;��{���;3�i;���O�74��0gK{����-=wѴ��~t�k���z�Ȁ�:�� �ꖽ����=���A�l;��U��+���+�˿�/2��
������ﰀ��oF��х���L�m:�����+Ƭ��'	 ]w]��qf�T�QԷ�8gs��5���M�Z�~zp�j��B��/�̄/�t�)�rW�����~�u������f2��/v�sf��vL���=ʙJ�s#@E?/�˒�%)�,C�Ƚ<�1�6�WG��ciZ8]��F�VsO�4�wG�$\��%�^�N]4�[m�^k�V0����&��h�X6#�1Z���m�Ϛ�2����K�7W9k�K'���nN���Ȉ���јv�`&Y�sv�������09�v'ln�3~M��џ��q�2r�$&7в�D4���%Z����Lԗ�ް���#�O�'5T7h2uP��OD���A���>��*(-s0��v-~�'��}�]�Z_��q�L��e�ȧ&�u���X�+�ĺ=ѱ�5�I�VX�Aϯ��/�y���Zv.�	(�Ft�d�Hb��J�V�6R�,��X]KR���)y�'�ɜ�=ƋT�p�e��z�sK�d�l�ܬd��7d	a�8�ⶸ��#����c�W�K�`VJ}Y�OG�/���̃fl�钇Ͷ�~�jnv-����s4{������ѵ��[�E�윺�Ύ�Μz]���CWLL�ʔ�g(���LJӛ��x]��W�?�����Vi�Gu�
"��8��En��Z�m��
tz�����4}�-�u�Tot4��L�����w4Kjr�Yʢ,��<�v���I��e5(���]��|�o�+X߀Ʌ�.�iWj.��ARVG5�X���4HR���̾_D,�&ӗarō�_<ǰ;�^����w��/^�Q�}�L�/O���R�e�a;�1԰p��X��u�߇[J!�}8Yt]Ex{[������9�[3��ՈH���a����j9���#��
��>t[/�#Ni$͗KO��O�v\p�a&6��@u=���z�0�ƜBN=���c�!���I�2Y�=<]g�.��j#*���d�6���a�ZyF�ZU�T�*���ڼu��</��H\�z͎U�2�pN�Ӝ�^'ӔF��>�U5��+�[QP��<�c�3pWf��>��;��;�+K�L���mMAcqh�Hy��djt��بס����C��!E,��64��LU��F�d�^3����o�}�4wY�,F�o�s�~i9�������ȗ��Ơi�l���ƞ�
g����%��8bR��4Q��_P?B��J�c��6�\ɏ��"������+�~�{�63t�,%��\s��c��-�m�9�=Ah�
�"Q�������[��W�ϸ=���cv�v�K��.���%;�R���J1�$2�:��l����δ$-�4~!?����-���s��<t��a�?X޾p�-��l�R��Q�����K�2o�)�pL�����<�(��gP���h����j��l{�;^�T�
��V��9��d��X���9�
�Y�kҲ9�Z�y��%1�,��-���Y�Y�rM��/
��F�T*4E%�>��?�}FU0���-�ǚ�rTuCX��'�T��!��,�lz^�/�€`������w�sD[�2T)byrz�f��X�ט�dYҔq�Z�W�S%է�Rs2��ΧdjMf�F��Q#���+�UU��\��Q ����<[��@!/R��Է�E:�V�����Z4����5�Њ<�<#N��OM�N:��QZ=��w+�]��_�XYv�o�)���e�/{Ӓ����_.�p��,	ʨ�_Y6�n�%M�+��Ȍ�&�9�"B
��<���c�.��dڥoi*�һ�}S�>��w5�q"����A7�� �Y	��yįO޴��q4~t�tv^��:���&�����1#�����b!�,�M<�]n�%E���I|Ie��`�"Y�%)I*uK�`�H��[�(�ԝ���1�}���O���ݛ�ěɨ�BgR���*�vۥ٩���{-�,�,T�� �vǨ��4�A��Ȥ�T�������|�ܖ!u`	F��9&�������ZyL�
)��ۀيq�iUy�䦑��R�!���o�\�yQ)���z[�>�J�wk�)ٴ!�����O��hL�|1�(� K<)�ۡ���P|�Hp�8�m���P2���a彚�2�.>!�\$��ޔ�IH�#î��K,��[�N��h$~�; �{5~F~��Tt����U3�V^|����GS��VM~Z�!�`X�|�}��I�H�_'�C�4M��/��\QCf��T��Ri�;ObqC8���y���sC��D~\	�o=P!��@} �:�S������_F��r��YYC�D0��%Z:��X�M.��/p�x5��>YX��N/�mi �/h��N6=�4��ӫy=�5��*Es���R�l=�����%y��ӟ��u���[o7��j�}��WoIqI�>hn�i����Ç�N���t������Ç�z��^ElX���=�#103/0���G_sZ:S�n��Yw|_Ǯ��zzF{�Fz�{���Q��k��i| i�ٵ���7�)s##�)���ó�|"�D�4F����'�t{V�3�ҴcFa�<
�Փʾ�%/òc\���ZH�Ɛ��@pXVhu���:�V��`���i5��Qt��
,k�bx��{����p�q���Yv�Vju�
R�^���]���)z" �F�b$_���V�ď�|��(�2l�ˀ�IMj�9=Ե`o],���`Lf?���!���{b��%ۖ���@sn�n�6�փD���T�v.4�=��u�ي�>ή�w��Zf�s��U����7A]W��ƒ��� ��e�<!X>�����Ƀ@!���G������2�|����T�o����ߓX�=�ݟ?��w;�w���;�!�b�z�q��*q���
_�>qRv|[����
H��]VGf)�F���Ɩ��X��ǵ�Up�a��x�^����+��In:��HA;pK����N��Qy��F�����K����^��d>3�kJn��E-�O�oZ����i��T��Tj2�yɩ6|�Y��`/����?�������\ɲeI�^�lK���-Y����+vdyŎcg8{H�$̄���f
J�m((PB���R
<��9�^ɒ�����u�=���}�~��2D|�u�~�x�zJ���Bz�9`SUGm�3�)�^����kp����5�o�1�4������A�׃:��RĶåJ�E
U�$�F3��J��ɱ<�D�HG�P~��{\�"�0��7�1�{�4�ȳ�w��"��"��	�IX�TX���b��nx�k�&�?���P���X��͘�X�3�>�D���*yh{�Y؈7H�7���w�W�7Oٛ��k�:��;]��⺦���v�|�P�E��p�1�V��w7�VPc]�f��`MccM�--Ub�fCC��^
������\�&����8�@a�	��(�ڦ��Dh1ej�S*u���s�%k;���qY�ѫqF�ˈ�F�V��|1���Gcm�"k[����<�]�i�y���ܠA�򪱅��Ӡ����zOӉ���[F�O`:6p�1����Y�OfEY�q�y�qJWnC4�S�$6�8�78�t��+�"6����~KEΈ�	��F��s�����̼4u�c��n⎆�Ϭ]��	�$y���,�Ml�Q�wH��$~� J�)�{OV���y`T.�"/C�Nu�K�ib�����lo��y8]-��px��?�|�?ю/Q�hT��5q`I����y����x#�z���K��ip^�ޭ]�6�?�d[V;����*�+��Zkf�V�e���x��&�[+wh<Y�f[S�%=C��{�={���_�{�=�f�KbN�q^�;��h^Q�eH��/�SZ�e�X0Xד�N����e�zPn���uB��5�?S��g�q��.���|�͛G���ݙ��麀:uc�R��2�H6D�$#��	�;�(g�
r�l��
s������~|�䋫
؉¿rߚ�{ˈ�GW$ƞ��x�^���E��+�X��p���eC4Q~������ټ`�z��b��@}}��P�+u9}B��_V�ʚm����������6~�s~��՘#(�j	���ܹa�ɓ��]3��:C�����^h���7
�dg$���ڦ�<kc��X������_��E/�N���	/��kqg{8L��R�%
W�qr��Փ`=�WEoX�A�=����Ͼ�� ���s�|b#ӑ��u��]�F�ї��T5堭	XK�5�֢�+�ks��Fvi��͙92noN
g,ė[	�ў���^\S����>��7�>i�"1
���O��9��(>��B������4wvt�c�Y��#�9�y|����oN��
�1x(r`nT<Ì��]����0����D}����ꩩ�@��,���t�Xӥ1�c�ngэ�����H�@pj���KC.�9wrT$b;x�=���$;��3.>0�s�6��0��S.��̇3g]o�FAm�1bǐ~��Fr?_�u!g��>�;N�!9w����.�)T�gl�s�8�W#k�U�����:�6'h�9��P~�u��ˋT4~�����
�E;���x[��ʴ�/h��m�k�����̊�.�	O"^7�D�b�\�l�\�&�⍕¼��G�	"E�fF�*+F�֚1�’�,�bį|������3�B�<C¼៥$>��`�V��Uf1��Վ���~W�<�R��|$F�<K|��iF>kMH���U���'�~���E��Q�y0��<1[��3�Yw�>�x��1*O���2Ձ���#w���%g����QК�6g;�Ma|�,������*�[�	�=+��	����e�n�Ƹ���XaMy�C􍉼/���R���}I��/����7�`~g"�Dc�.B�=)�c�Y��Zj��%�9��d_�E$�mB�*����/����i/��?���Ȯ����z#tn#^y�,!h�����D�[.����79�"�L�o��i�̩אָ���'�_��3蜞ff��o*R'�#�_�%&�	�|�%{���wA�O~~�g��_rXjfVO4�lqG��8B���BK��cqgZF�8=1��R�)r�u��7�a�c]����q$Vi�e̶M�x�1Vi-:�.�qV%�sS��ৄ��G�p�h��y�se���4�Z�N�x핶rߝ�1y���Ĝ�������i|yrzl��9|:������SWS��;hF�^�v[��)b�R���JuIB�X��/���I�2�o�3�C�*#X�\����L�I�W��-�^�TO	�I�<��_ �27����_Vx/���l�	��z��������=ׅ�W(�Z�:y�E�2O��ڸ���A:z��7�02&+n&$|�QD�Mf4W�\��\�U�MJOL�Er?���C��o�O0�#:F�c�{C��i�Zߑ}�CKݶm� ;'���F�!�S2�Y�ֽ�R;�C#���_�h�4�EI��JŐ�ł��2���P�XX:Z���Ņ��A�=z�LR���oT�������K+*OO�g��-B)��PRCō��T�(P���d9}T��L)�=�\��a6��Vn�7�;0NY���5 ��g=����S��d�`%���cޕ;�u��4�Y�G�}�"�Ө�R�g�q��ǥ���]~&}"x�!�-0qq$X�K�F�M�F�b����$P
3S�vԧE�3���+Q:.|jf��UJ�lej�ҭ�Ya�be]��V�r����:h|ToD2���U	4���O>	
uk���(�v�F%�=��_š�~�Z�B�4�$Z̦qiyW,5,�ϙ�_|��$����4@`�c�O��h1�P86�6�q�h�����4-�+RT�}��}�� ����V$KRS�e��b�����,�'�����0�;bYajj�L�(vk�<�j���@���Nx�9��w���L]����6^"��
y�a�5���'e�]/ɷ�˖�N\
��˱�5���+��~C��+�soͺ����h���	ɃK�
���j��?�`?�r��g�����\�=F����R׃���2;��{�G�Q�Qg�t�Cj7��{���wݻ�ݻ�]��@�B�	f~�1H)���9?&qYZ�bu,`��������v?~\��T����#ﭤ�&�{��� gY1cS�Z����E�MF���u=^�C����f�0^�����`�0�z��P9�TN#+�i�9�B�9v��ɕ�d��m�~@��z�:�i�Bg�ap��Z.�3��2r��tU�Et�b������S��.��+�S�΃��J�r�-!�e�5�s�k����eX�b�;{��vG�jL��y�ݾz]m~�|����w�@*���Ɖ��͈�slo������1S�V��<����	�@�N�:�,L�E��kr2��4��V�Rȋ�2_Y�������!��Ų��V ��_��`HXlgt@����ht�X�Y���f]�Re-V*��r����X���*UE�F;�`CA�PX�$թ�zT�=+O$�NJ�+5r���JQ�x�K&���`�h�bCu�ƭ�#��n�t�m�pzJ/F<�r�^���̥�ҩ��k=u�_r�],m�	HO=e�ux��J;���&����s .Lw�>�<��]nN�\�)p�$�@Y$M}8.��;&�/�����d��a~z.��"��Dϥ�rѢ=���2o�Xn+wP��Pz0p��C?�~G��%�s�r�p.x�N�
o��i��<Y�R�.�5ޏ4�<zuG����3���>��K����W�Tg���;f�X]Ai��j���;�8��hI]E��47�Dw����nI��`���>'��']����'���O,�i;�_�
c��{�j�K'hK${+���r�KNː8�޼��dE*�ړ���
��_"�{���?�K�#��Ԁ���q@��?ɽF�9�9x�Ǜx��W_�~�'ر�#�x��p�7����>O��>7~�����w�sB��~B�zF��(O�#����x��M�!#��	�@������ǥ�GҰ)v�ѱ��j�1���Ő�x�w���;��,�YZ[F�1
8�2ij���� �60�{�~�܃�+�E\:I���8��n
��'��k)��������fL�0���(3B7�#��??&��˹<^F�d1�P�o9��W��~x
G�c�g�d���pZ'���؁�b�:?��L|:��2s�qj��Z��lY����F+��8!�-� *]��,����{���
��{sѽ�޾p׮���nY����\ǎ!9q���bh�!��<=C��h~O���n�B���Q,JK��RvR'wD~@�����-#�Ux��0݊֊.����s'��8&�n�pg�����8��[�����s�W��.�qc~���ѯ�L�OJ��B��at�B���Eqϛ��#躍}~7�>����7�\�ayǘ{�{�nw�mT0�1�]��t�%�,X6T�T����~y~�{� |�z����h_�x�������9��Qt$�ˤ�lH Z%��$wN�P����/�-��4�2����>��P |c��Z~��	o	hٛ_o,/+#q�b�d�E���:�܀���dA4�Ž�1������������*|+����+�Ҟ�0�,�l��%�����k9H���,�M�Xz���;�p�"���2G�T�(L����M�	t����pg8)�4�#?fG`�T�����W��&���]����>w�]�a#�"|�]��~O�t�BU�}��D��*��$/L�I��z�ק��~�No
K�q6�5��~��P)8B�.|�6�O��ۈ�iRF;�/r}�i��Ӂ»�-C�k��S�j�?c�&��\DK�~?UQ���=Ee�.�ЧK//)�XJJf�?.7�Sw��!����s�>�D�mBS�>7P��/zXv�s�^=��g9F��}F�5��G�´7�q�_,�
/���}�i/��P�3����FiLn�i�
<}s�WEa3�j��s�]�k��B=	:I�6f%�W �hB�	�ya2�7Q?���
�ku�T�M���H��\N=J]��g�\�X�9T~yV~�z�@h&����[A��ܫt!y���z7��$Q5Fܸi�1�� s��)<n���z��KaB���If��<�����;��^A&������'g��K�1�����S$ʢVkX��.+�)+�)-�.���*�.#sVQU��"ă==w���ʺ$5jKї��Z
�j�$3Oo)t��2k.x���4C'�Ρy�vg�{:�a츾��E����+2�������<����qǕ�zJ���d��
.�{h}-
�/M�˰���N����tx��)�p�y5£@��g�晓�g�+�u�ztށ�
?�鲀P����ހ�5B?�(�#z]V΋� �עi�"Sf�˜���R�y�d���M�$�<���HN�,���FX��9��#�P�ٻiL�l��ؖ�����5#�$O
��F�C��T�J�"wY]sQwуhn`���E�\�n��� >S�]�/�f�{���+l����H��.
ڙT\2~�%�[+*ч��q2n�bY��=7�tp��̆�4vZ�0J�q�(�9�NP^��j@\j5��&���zj+����������8dD<�JC�D��]�r����o��5g�g�_�.r�U�&��b�8}뇓G�é��+��Z�a�E_ �چmD_�{�{���V��"��M�-���I���3��V��31�#B� U��ˏ�����{��\���<��c�g�[&=L��S���"i,sE�2��I�i�>�2Y�o0�*i�P��&ht�.�V,ш�dm�{�Jچ���VF��F�K�G�a(51|��/e����
|����1�#���Ѱ�	@��z;��**(r��l'�v�o2O�E�3�6n��ؘ�P�~U�ƒ��Qpm;�5M/t�4�V�f�!�_��@��݈�x��a�@.\�XU�}J�_��G�}P�סl�d�8U����/�1EU@�	T!a8`0T)g����H޽�Y�b�,l���kq��]�h��=�R/�P׻|��>W���Vo�����3��U��߇?�,���Dg�%D?cp����K��������T#�g��R3U�n�۽N����"V����r�\#t
ѹ`H�K0bv�7���
5�g�փ�ᷰL�����]{2��rd��Y��?}22��������@.��.I�yļW�\x��Gr��A�҅ӿ��A�Q�L�I��pl�����5u�3d�l�h��?9>�/�\��F��B���)�k�&Cm��ʾ���2������x�	����w�v�ц�@�
n@�<��%71�K.��4�	9��G�Bj��G�4K}F0c�̬�Af��PjI3���k��4ǒg�*Ӳ����d�tS5
ĩ*� U��
�UrYZ��]�Py�Py
r�F�f�<�=ߦ�&)p�-�B��-�*)4��M�ޝ�nN�>Oq��d4�Q���S��>��B�,Y1�Ibq�P"1:�ɢd�O���[�.�Q]6�����8IA̬�T^\PYV\T�9�j6[�&������ݶ�<�-'��1(��t��1��U���P����u��t�-�Tj����a[���G���.����V��kaEU�܌�o5�)�E"#\���FZ�ݙ�Oǧ�ɲ�.G��#=��|�^�Ǔg�L�td$��L�-����Ȁ}^�O.�+��W���fMp��F��JRE_����ȡ�ͳ{���F*��P��gY���Fy����
���c��&��"K�ݙi ���2(Fӎ�e�e�з�2i�B��_Q��P���&z��fZ+��bC��ă�V�f@�i�[v��}�iԏ����׫b�cco*%R�!�l�j��Up'/5!�~�L��LݢP�<nB�_��^�����x ��/�����A8�֥b�Ph_��;��6����"�xIO^EEnO0/ȃ�vv.\��G��U�΄�4����W�v��<��؟�MC��|�!����.f:��J&�t�֨[d ��&�m�n9
��OO���W�l�d��M�h�vS+��u���/�86�ڼ#���!:S7�~���#�J��a��O��mT��s�Hi�/��d��PY� q>�g�`��<�s�O�'�C������x�ґ�.�&���d�{�$r(�f�N��+�H\lS-��J�9�WfEL:NG��e������3�&O�H���E=B�D�Ϩg�ęv;p��E�
Al8����[�\F|5ؾ�H��`[�{	'O|�ٲ�""J���ѳ�e����QHr��V�
n��Cu���X�p�� <)Ŗ��(.5{����y������oc���MTf��2q>"������_����[b҇ϡ���6�S�%���2�e�xJn���v*��Nd4�M*�llf>�'q4����2z��5�TV�bD
�������_���@���8���\\j/���M��1h��,qr�GƘ��'��鳣;���b�Y��Qi��P�3X�'�۹sy�
��?{�\Fc|�CmGt�5��5��]@0� ��7q�l����f�v�ı �.��2bww��\�Yta�}:��6��g�Ʈ.�
�y�����������#4;����~�0<9큛�wre�uq��ıK�
�g�������w���R��G����HZ:�R��@Wd�H~����
�6�BZ�ũ��4v���i����p�cl���#�8k�1����K�2Қ���MfL�?w2/{b �{F��cm�����u�`������A7M{��`1d����TO�T���Eקظ'�>,T,�k�'Hv8V���?���
z{������7��0���|x��w쾀��9j'�V�X3���f�yنE<K4*ݭ�<6zmn��滊��dW�dQFSE��w]������Z�:s�Z7��mh
,��bb#/�?��
�%��,���1��S��	S�&�OH>8��o��?�ĕ'�Wq�#�	^E�� ���֧�������5?��R����d�6�����c�>J�Z�,�d����55���sM��)I-3�id2a|�'�h��|8�xB��h8g̨�
[.!� �F	v{N���&������/
xj2�����4���\�*���
�&�6��c���R�,�o�w�Yj[�+�Rk��\Ý
�O���h7���˻�8J����Z��[57���`:�6P�����ߜ��
��ۣF�E��Vt��z/iX�X{`iXQ9ҧ�58�j��.�-�%7�@.-*��3�.�h��m���,n��Μ��e�婍�uZ��"�����ٽSō���c���6ǟ�!4����o�ƺ���YR��S�p�7`4d4唹�
��uu��m������1_RZXۢ�6�UY�|kmQ~N�T�.�>\�'�CىB�R�r0�p�����2]���7�U�-�Ԙ7�57�4dh�+����B�HTx�\�������b��.��i��]Źu�D
�s�?YB~�����I�u
���
�(�Q�h@c)��,�m�Z�B�)0�Y�-k��]��h���7��6ho���a���l���6�7~�g�NF���CW�<���x�8���;��-�&�E�:��Ȓ�k�"����9n���vR�@V��=�L1�1���*�H�(�<�Q<8��^ZZ(OM���m�O%��%�d�PoES�J�9�`>����\�����J��f/��A#E��2�vDQ�{���k�q$��g/Q� }�Nd�Ę(�����)�eYG"~���<�5k�>�T�
������7�쉙������k3��G.~5Y1+OM�^hq4-(�[�&�ơ�5��5���
�S��{23;��^�N~2�Ґ�U%J�]]�e	��dȫ�H�*qU����x2�"snjn�%—��#8��G�$q7ܜ�C\�yh[��ܥpr�^)�-�m`{0��2wYRxu�$D��/���0}��xw��Pp��@��k�W,�w��^���ն��r�{w�ݻ�Z��6�]
&G�L�p�N���?���8d5��,��=�͆T��4�QSW�Sc�)N���f�(�lY�})�&aʢ9�^�T�+ȱ��E��z2�Q�P�G)x�o��>Y��~��o7ٲ�S�ڌ6��X�p��}����ƍMM�s����_�;����$�[�Q�ٽ
Z�������QH%�����G}�jI��H�<��{&�3ʨA���7���ʒ�nWc�4%(�nZ��=��y���X��~YY����"���6���G�XTB-c�YH�AUdž�[�Xp����_���&
��v�qه�.J.xL�bv�f�J�/K2"8�@�gP�1W_h�W�F�B��T��M��5�6YŚ��4��iU�}�X��=?����s쟀f�_�
hPK�5N�#�;d�w�r�"qmض���I;�\�Hݠ�ue�ܜ����!�t�4�n}�Oiך�@�|�ҝ����nJ\��nm}͆��%��Oq�m4��������D
���*zs��!�'
�S�r�Vx�e|i��vS��99{�F�7�����?:��(�P�ZWi��w?�~*"�!o�F������Y��7cc� ^���l��{�>i����z�x�R,E��98N{��~�*\I�����J�5��o�d�)��(�Z�ش7���mr}��b��'�_(� ���t�z2/�T3�o�HT�Y�"�6�����M�����Y�pI��AOOnng�D�+�W�8���z��1�����l��ꅏ=������2�Qg�Xr\#���n�dV��\=hi�ȶ�[���b	�b�7��0��fD�+BQQd
]�T�KTȋ�N����?��jz�m��WP��G���)\&tu�e��4�D~E���n���8��S�.��yGSrjʢc�����6k�%�;�૘gq�hW*��I�i��_�=v�:�!U'�d"�� �1G��f���iE��.B_���+��_TA��r}%7'���'��'З�~S��k	cA,z�)�/��@�*2�,���b��J��.'���JfR�-�+�b���ɱ��[3M;o�+�r�ñ�rt~��
�:ŏLg;�X���FE���W[�j�D���x&���Z�һ��S��%��<O@�>G�R��|�+�ͧq[�̀O�7H<j,i����pZ�C���^���ܵ͡SSk�.[vYb�e�}��Zw���֙x�˛��6m�<�l'xH�(�B
б��e��$F�ґ\.Hי%5����M}����Y�pdd
�7���VF��s0`�U�[.�\��i��_�ys�
�7n��ޤV��ԫ獮<�a{�ւ}���s���L�i.�+��r���ʚ����	���$K�ޜ��[��wy$Ҫ�ꦨ>�VK�Y�۠l�d���'�f�/ۘ�8��f�4��ď���K@��=v�c���ψ����&'"�T�76�D��$�l	d���א(�2'K�Ize�6I#�(*����	�jb &,�˜[�O�ɵ�~c��‹n��������?�Q�K�w+X?��*XU4�f����0G�%��N+����0�F$�gXdz�8�L���}�ЖJMN2�X�Ok*z���yܜe��t��ƇDk�M?��
������v+3��S�S�W�������c�GiHo��1Ӵ�f[Mξ��i�zc�g��]�̞!�Mb�L�=�ݹ����:$��ٖ��}��V�&?�<Yvli���5g[ϴ?:n���k:2kҚ�jZ�)�5+O�}�蓍�<�#:~#$�)W|�D�ڮ��� [�<�Y嶈�Īk�MUPnV9D:�}ʖ�D!�u���9u����O���N���Y�.�6���]�>ڊc�F8]��2�J$��k��a��e�4K��1��$�����Ͽ-�e'�� P�[���].o_S�Q�3$4��/�&���}�^�
��1z���g�S����x�#/=���`��4��Q���ST���o��
�@=��t투[�/��F.�K���Hoh����jtӧ�/6��h���_�o�H\�N{���%ff+�n��2�Q��2N�"C����b��.����s���V�|�M��.��_)�5�����q�'�5Y`�Y�9�w�8�祗�"Ϝz�(*�Tg�ω�z(r.�,���dž�'�'��ظ�
j	�?Ö��v�����?z�J�ľ�(��Q���H�H@[�H�*r2����E��u^ZI�o��o��K'��v��0������;:�
֏�r�}��A?���}����3�h>��(�*'$X�â�o�A�v�%����+���<��z~��2�\��}�^���8x|���Ze�L��r���xM����_Dw:�	Ǿ��ގ���kf��x+���$�	�r����,I6H����D�A�.��t��u��V	~
�/L�[���&��g�3�{�ë���;��k�|�V��p��S�h��h�&Y���p���g^Λ_�F��Jm�Cm��I�2�
6��쎎=`�f|I�[�D�8<��`������7uF�b2�/rc�%�k�̑�������C*��
�.JLF%��mT1 ����⛁sGƺ����|7_�Q�5)��:_���j��|	������jikm�X��Ӗ���DARra9T0���t!�O��ZrN��^	�ۥp㇃���'��'�w�M睙�cA�j�_6�Up#a�GG��<�xɺ�u���M� F��@��r��/r��{�����;���rT��Dި���_)�"F��t�
ګ����U�7�ڙ���#��p;��x�*n>qwGW�u�����p�o���x1Tp��,xg�q ��q��6�|��|6	���Nb?�5`1s�p�]����A3W�0n�Bz���m��k�)Y�W��h�5'F/ꬪ�����ܶf�4��x�`��:��[�k�V�4�yJ̩��9�\ؑ�d�����X��@���94�u�hql0u�Ja�>vX�ԧLߏǙ��x��f�S��q3�Y:������
d���z�D�F�O1O�B�t�9���w�q�wA�	�g�q���B�Yd
��#IM����%�R��I���QjC(QQS��s�/r^=�����q��?���":���S���ta��)�KY��L�}��6�	���	*1�B���Ǣ�#ɧ��������5�w��qL��_3�1����M�#m�p�2X�1�߰����_p�����S/p��Ы,��M���W��?�t�����D�P�D&;�F����ѯ�Pɂ��e�������*uCA`dΔ��
����=l�Y�+}�{�=�H�J��#�Bw��?���=��	�T��.ZCHPA�W�V��g����+��m�<inwhh1�N٥h2w~$uN��O���g�������.ڸ,	1���A�������@M�7fO�$OE|�vg$�]�늷]����|�v�:����"�cbc��
Tc��9�M֬ž��7�ZSї��Wx��<�8	/�;5)-J��щ�wJRړe{�u,���1��>��X�|�[qpa��x�����'�5�N�B����M^�4���k�,^�f��?̹y�n�ȕmQ#���^}��� ��H�SټS"��e��آ?�j�w�ch�w 8�8���O��Y9:�ș��A�wd�l��|�'��l�i���,/�8�iN���DbH��/^W�œb	��W��$Eu�W,kZ�������B��R	�z^'Q'��SR�%+î%�J��3�=bwʊ�.��8�7�!�*`,:5�_���b,�~o�ލ;S�k/���FA1$c��r�|ǽ������Ux=�Mj�'6���"\��O1�����]���G�̾99uu��gv[��Z�ɜ{�q��ϖ��kw��3�]@���^�`1����x-
ڥ@�(��������3��{����%�2g�G�6�s쇊��z�����J�_��.���h<M�E~��#�}���э�D�iҧ��GK{^J�0T���%f�^-���o�y���	�w�e��L�,��3]`�.��h���ϳ���3�/�Ÿ�1.O�G�+��{w,�_��*�o-�$O�Ԁ����0�@��w����� F:&���vА~��n��X{�^�%ܧ�W3]��>T�+GSEѴ��ca4�M���9"~W��C��[dPd���^f\�] +��z����}����F��{x��8�+�Ѹ�\z����'�2r-��"�|���둌I�şٶ\p���U�����B�t�r��1&]�B�}�ٝ��-���t�'�W����?��@�r1[�b�t�tV���g�7��Їԭ���a@˸}1�NN{p��}�)b��b^$��nGv�"�XT��B�eK&�|q8x�҆������#s�Ga�����o�|� �sy�m���྅�c�@V�Y�oTlC������65؋�,�rk͈�J"��䈩�!������	m]�7��@�M8��߂��B`D_��Rͬ����ޓ_cL��m�3g�@��j�K�;-���6
S$�"�����V��A,�m�R��4�ősj
�B����i��$�	�&oYP����^��V[��Z�;�۶��Vn��ܿ`Ѣ&&8�FÚ�M�7�}�-v�y�Q��&�����[�*.���a�����k��7���0J��
�HiU�*�Ɵ�ޟ���;I#�,�az>�a��y&~�L��V�Db�45s}mkk��!��C�cc�g�F^��ܸm|�a�Pu(TT�d$�dkoĆ�o���iN�>��ev,����1�	��ՁڵMY����֙�Y~g{^}��V��4o|�_*nL��w6���E���/�~�AB?���p���v�����������;_����`ZE��M�k	S㨼]V/mY�`|�K���[�)|D�2p��򒦺�;�ʰ�П~]j��mI�-���A�"Z��
K��y��P����V�6�B�{�(cL�?� �'js���u�_Dm��d<>���[o|����6j&�����c$�ٸmO�o�7�½�{��3�g��h���p�֙p�,�\�+�����@�� ��ci��g�a����?��|Q]i���#&�=r�+
0��w�4a���������$�3
�^Y�vfT�v�G��e�>��els �o�p�}Ǯ����^f���x��R�r�P@��H1�N�r�VB��ԃ���iA��;�L��3��ś����Iq�H������4��:�����K����م#�^�һS�w.*��@�WW�1�c�|F�7��ϓ�n?th��������	��.����[��2�
	>����ͳ�@���r�l!1S��'n|gr͗k�~r���m
p�T���K��,2��Q.Ar���	��N.��ብ�4�B��X��g�;��\*�̽�-��d9����'Y1ex_�^�*�oX�~�>��=E�J}��r���h��2��L����`�ک���T����ڞ(&�t(��h�/��K�{�P&B������ac)�2�
kǸ�ϴh0��˞�e {dO}w��!���K�'Z�ړ�X���#�OS
���Qc)9S@_^2�$��("�&gi����C�����G��q�Q��7�/�?�-�w67�gr�ᣑ9S77

F|�u�@���ڮ�=�
}zi�@-���H5ۘ�"VaL+��楗DqX��o����:�-�-���;��C���o�8A���ݐ,��|C�A��ӥ
je�щ��1
�/�vI"q�,�|��a&��X�ew�M��ρ�\Y`0 I�:CNw��z^@��R�G�:s3�~�/��޻�*�>У*.x�=_g�L��oX����@�g���4�,��2sJe�R��c�r��$Us+��2���r��+��u�^�u�v�M���R���c�J�>W�Q�_Q�������h҄���k_
���j�kR̞��"o��z�^��z(�C
<��o^~'j��%g��jW��v��#�e���1k!q�lm'��+<9����T1jn�2���>�r4���
�d�]��ORj��!B�����H6Tҽ�G�BRbC�S���h�3o$�E�v����G�ɐ\�HҸ5������>��(��o�uJ�ngFqY^][Ƃ
c��'�-�*�ε��u��*m�N��{��y�&�pMS��'�k^·):��@�ɉ��2H[J-eu<:PSWQ3묂�j�X��k���p��o�R���D�c��A莜t���n��b�ک.��dx��7�d�|���dKJ�՘�Jzsw}c�����FGzz�I�VVi�
���&�X��(�-&�wz��&�D���𓓚��|��`�Z�**ȎH�bO_Jp35�F���|'�	�|Ά��١��g��	���ce�6Ӭes��������I�W�Z���%�����e�V]6�Ԟ��D짱�g?M�z��<
��K��^�c�a�����'hklk�3/�[1KO��Uo^�����L���B���!�*A��RV�LB�Bn�٪�}�	�!�&%�R:5v��$i᮪z�B��[�n����:t3��歃F���
����]�pF�L����/nMQBO�\/3@#����&�ݒ])Q5�O�h����!|��3_����_��<3w?�/)���WY/��[�v�O�v/�U7�,X�l�ز�0kh}�F��J���j�q��pAw��e{�Y���X^��#�5@���a��a�q����Y���'+�v�,aa� �/�u�;Blu�`�\Ru��Ր�)n�	l	
����zmf����`b�N��802R�3J�n��*�Vk��;46vh4ŨۥQ(4ʃ�W@�j�u�W��g�a+Z	y���H�"G*����"�������5��׭��&�Ț��
�Q�OK�*)�JH�9E�%@��JY�:U�o��2�J�*ۿ�k\���T)�==)JYf�Ddm����g’`�E'��
q���L
h�,�X�*r�g����'��r���ە������juz��TV:1���bM��%ͬ.6v�&�{u!�/c��@�ѥ1���:�T�oZ��@����T�fE�8I,W(�F�_2�0rb�ң�ZU�Lyh��۴���M��m��CJY�J�t��#��Y	js;��9�ݏ��}�٦����������<8�5�)H�kPs�&
���vr��U�f�.M��,�h�1������\��I���6/�u�:镈5�)n����X�q�Hn;w��{��Ij�ŋO��1ꦆ,'�Hd���q��lv���H�jD��~��4����;���T�J��E���q�s���e)��RϠzͮ'��Vm1Մ��A�H%O����p��l�3��8��I�$�H�#�EYVs�sݞu;uy�Ж��{n�o��mR�ͻ.��/`��d���Swq8�H�>��+�E�%f�����u�ƞ��Ό\ep뮚��LBZ .f�(�y���W�o�s�#$ۯ!<���Е�}�M��������y?\c>��ﺷ��u��H������n
0nX���C�Rb$�g9s���T*��i��@���Z�N��h��*�����w���!`pcS^q�U��us}�	��&���-�TД7�w�ZH�����tD�D�"s��P�Ֆl�/,v���H�;1����^�(O�G+��`�/u�r���2;k�q]�W�s�<:PK���U,�Iq{��/�S����R�,�K�Q=��_>��we�����3�_���y]ZVR�+���2m<�e䒗�/���{HwХ�*:��g̴�瞎K�$���̶�����UN�\f����҅D�2WT9Mr�%�y'6)p���G�/O1�A]L%-��rSTE)0tf�؛˒|tǎ���fѪ�㨇*�Ӭǣ����D�Nl�x��"MBw�ȡd~�Z�/I��ig�<�dM��t��I�[T@��[�_�2׉;P:��i?pL8r恅�e?΅.F)�P�˸��pR!z�y9R�?���
���;�\�%��l碒P��yn-Mч�²`���5%�͘��h�u����/(���{���zh�1k���4���i��
��Z��U?v[[t� �s���V;�w2�x�K�}拕��m^q�Mq7��ðL�� H���ìv���c�\�,Ha*C�nj�4���L��^��K)H��X�UT�$#�~w�Xh�R����77?16�y�d�}�{�dl94���˙��Z_T�eDkY�Ss�ĺ���/Y�����O������]_�0XU+j�O�4���E����jh���p�8*"��}D�`���w5��
=��2�U���6�=>���[r��̿��e?B��r�2�D���)�8�Ÿ�r��h���!R�
�Tti /�(�i۫�o���W�|�5�:���x�5�aA��#�;��d)�bߜ�斬9"�a�%	-Y�n߂[�iz���[3�L3O�@#=��7;0�wr+|�MGtnp뿃���fr���Lbk����΋�9u�����_y%��Ov~�μJ�A�����n!g߬�a4����w�lm��棵�^�g�N����V����q^AQ�24��)!p�;Ei���k7��W�+̡�m����Qu~��=��z��S$ڼa�&�SLg٘��N��_�@p��2�|�2�_�)1W��闚e�|���}`t�/E�.�͛X4��}9#h��e횓6jvs�u�;�����H����K�X�a�/�4���XӻH�
��Og��>���������汋���™Ć�GĂ�5ދ��D"�cSbФ\���a{�K.�e���Sez�n�����M��8ÿ��DE�-�8��װ�	��>Q
��E�\����&�8�9�Na��b�����m�gY,̘3T����a����MM�x������驾Rָ
�q�CnxY��v9S��n΢�L�N�|�s�?
=�xĪ
�g�\�΋��������������Py�&�w�{�O�o�e��9>�󈙹��x�b�u	T�]5�!�.����MU�`������罃�*�Ufc�pu�Tz�#j^*�f-k��#�u�v<���kI���9'��Y��2���&�=��?YKD<Ά��GqgpC�����J�!T��H��n0�r7uά/9��ђ8�тMhY�yv����s��f� K��Fv�s��~�!���Ld��~�Z4����xbF�-v#�i
�O�}��"6�݌N� v���c�� ��6~v�&s��*��y�2�X���-�sz.6:�ei2O���
�{����L�7�p4�>G���8��BLp�«��h����4D����N��)���!�i���\� N�LoY�a#�c^��wÓ\?$���f˚mg7C���R��~e�=���h������Yd� xA�o�D,���?�&$jNy�o�4|�ra<"b)��� 
D�Գ��Y�kq�l�f�djli�2�ݢ��Xxm�%r�ȩY3�m�F��+�)v�8
����3=��z�S+HL�HH�k��B�/����V~ґ����]�ҷ�U�t�{t��a�-c3�k�!:�ĸ/ Υ�y�Z�6��3�CM�,�B���L��˴�����ۅi)i�"��ZkT9�K}��l��e8ҡY�o��-�\|�1�d��g�v4��(���T�DQ�m�_�.jQ)[�]���!�c��and����	Ȥ���]e�9��K;n^�rN���p��͛�8��4�fE�u�/M���SLJ�[S�7��y��!*}"���L⛘_�LD�H��g��;�b�T����U��e�/_�H9:I�Cǖ��h����Ŵ�[�2}��"
�i�o�Jn/p6F$���^�����>�mb6�/M�a0a�,i$�<��cո ;�������.|���PϜr��t�,`��$�;��#��O��.����z��G�>p��-�aZwǔKx�(�S>8�ڮ��{^\&�x���%����j1}/��d�*�h�⡾Z����5�h[�r�O�|����y�qLK=�����Z�^�T����~���S���곎����+������- 	'O2?���롱�"囸������?�Șa;�ȸ�g"e�zo�	�n�(�]��kb6c{4���ި�H���8������Z|s���nFma1?���q�^7�v��d-ܰ�gn��=�-ިXtk�������Ѹ��
��m��ׄ�������"V�o�.4�k�/9q������]"�����f�L�TN�fꆉA�/����������i��q��p�~��}	��O����ul�E���Pɔ7j*���wq�1i�_�d��ΰ66mD~K
�@���`�������
$ϱ��+�0�	�ӯo/��)q��ڥ�9�:o�S���'&���Lyt���Dp�|3tˤk���[�z�p�[i	�eE��ܲ~�v�wN@��ˏ��@��H�{�给k�܎���N����Dl��
���	@^MeSM��~��U.۵x�����c~Ac{K���Z��wnv��H7䃸~���̽������g;��o�߲�CzB��?*y`|o�N��X
�?�d���;q�'���)�.-��� ��?��,
�}�l��$ۗ�t��e����_��H��/ĶUؗ���g{L��[řT�p!O���/�s9���<kηwƕ�c�Ux������Y�|�.���J�5<[u�퍛��X阳�zU�ٯ
�4�kK���W/�����6tN:�h]�f�4|��P�hj��"�niJ��K3���T�>�*���������
~b#:orᰀ�7�=w�K�]����9�����x/�O5�8�~q��ND�/�WEl�`#��8��Ȫ���%3I&�L�{�f&3ɔd�{�d�f����EX���X(
JE���6PA��
|bCł�o���f2��Z�?����s�=��sO?+c�D���n]n.3{K�0��w��B�[��ã�.q{�_�i�r1�Uq-V����3z}ּn=�f��^Uhoio?ph��,mLm!�.�u��p q:Jɢ�d�~��9���Ύa�xn�����ί�|!f�
(m�_��<�P+JO]߹�9+�5M�`���u��,�� e���pسr�9+�8�%z�ܨ�����@�K�:'��s�تsrz��<�֣��5�$��^���f���q*;Cl�%�g�i"I0q䵦7.�ط}d�
�G��*�Pt	���C�3��1Eo���5:A����[�e�?@Z�J8��s�Љ9ҨJ;�{�<Lv"7�؍<3�a�j'��X�LΙ�5��1 ��dK������9��k�*����d��rb�1y��W�5VW��T^/��d󦥜��<T��p����kШ6o�2w�W��K�K����Li�(�=5�fS"�u
Vb+.�y�66^�c+�Q�q���+ӯ>AF1M/��C�^�|w����i�<��F�	���jJS���j�Y`�_�F��,��*0�ɸ��k�F硘����+ƒ�Zbn4<�D�����]��~A��N����G�K�CbQ����
}c}$>q��;��@�UT�X��Q��Z�*�4�{z��k��OW�ޱ��4�睻iӹ<z
J�*D�B��;N�w����L�\z��C��k1��q-j-�5���#�J�w������?0�9�Q��o��_��g�TTS���8���U���|)t�/���~�f\�糢H��eCǍQ�?����R�^����
���}E��״e���8��ۛ��(�)����h���",Ї~Z8�'p,�d0nJ
mط��)�CB���)����'#�
UsC��?U�3��}�J��ܘX�;j���+��1-���nG�?ap4�-�(�޿�^�֎��$s�T�F�<�&C�������݇൳�sQ�&�'�{��� |���s?S���yv�L�]&���$	�ĕ=���v?���p�Oj�sv��x�W��o�|��~����~��a�/���~&�	���&/�����0�$��LM�
/#�噺�|��4���߃�a�Ȁs�pN.��U����!����3p�j
�i����kdG2Tt�(�]o�R�B���SL��� ��q��k�~{-�g����(��c	����9=8�߿�Ρ:��ީ�V���l)b#�G��5Pm�߱��_o�r���Z�¦�v���ۻb����{�(��#,
H&��4H��p���9sñ-_��o�t�+�?��ςۀ��
Pү��aL��6ʝc`0� �/!nN\|+B�K?��-�{/�7�y���_~����g�"lÂR��V7�;\:L�ޫ�l�3�Ėm�g��������xl�B���ݧb�g31}YxN��Z�#��^R�[�X�G���L��d$��۴13D)G���O]��8���_MFS�߾;��c�z�o�o�}qv�>��,3��P��c�B�5m@ȕа�� <�Dxn�R(k��M
l>��Rf�₦�ߖzzK�y�}:W��o�y�z�[�H\q��W��!����ܺu�%і��9A���b��S�Xi�F�U媱Z���P�\ �NFg�/-���M7n�J�ؼ�ċ���gP�s��I�^��ƍ�w
���Mեw��v��&ߗ��evw��D0�c��ǹD�\L��q[Ѧu��2~�Ro��
7󶠻�=����&8gs㜵��R��k����P�[??�p`����Gr�E��y.��4v�Y�3�,�\4mV�ɡ���V��t꩹O=���{c^}�0>=Z��K��c�bp�'��B0��ܪ�:+�!�����]�·S�3y�_'��VR�TZ�X4�{v�Br.��V�,�Y���]�TR@���s���K�M��7�?4ڻ�L./��b}\p����26V�V뚿%��>����Fm3�Xw��o��-@^W9��ϲ�8��(��ջ}�X.=8�}�V�{"�d�m�|}������:�T-�YF�P̆[g[�L��3��;r��6l��;ՙZR���A~{c��kBVBG��@y�m�o���`��ɶ-r��b{&�_g�?��;��{;�#��ԥS�'��ٜFb�	$g�e
}�Vy) ����]|�U7M-:t�I���ܖ١ہ�t�G�^t�'���@�oú�'z��M�Ɖ�9kא�	&���Gs���W�g��"��286��OC8݌]a5�G��wG���;�"}�LW�&���>�|>o�4t��M\]���6[�d�yΙl�ж-[�l?�i6��;���]�uad��]�S��b%_��U�&l��*�mM���ᭌ���7�̮gcR����g�)���It��SZdV���e�_ʈx龜4��A׎ߘ��O�Ϯ��or�i:��pc3[[QK���̸g
 ����6$v�}�&��,��9.ge.�%�����U�X�`��D�e�!��[��3 {�b>���=$�<v��M&,{����u"�?��
������_����h�=<޷m�����_`lgu�m��g�X���I���P�%��džG�خ�/^��	W�T_{�b8?�_�1��5�瘨����r�J�G���=4����׋"��l�k�^(��B!G�D�S�"�umL�lV�y�C�)��d(mG�Qj�Q�Z>�K��	ZQ�(�	!������Z�ʦc��e'����� e&�Z�����lJ����U�zd{����3�d�Ŷ3��Ħ���e���l>oMךfk;�X]Ke3d��ƿC���i0u�@�%�}�*��x���G��d���ӡ��m��^Py��Dt|��ѩ�Vǝ�x��㵲�_z��
;+��q\]�0x�],�x�W�l\��.��
ckjϲ��S��zD�U�~�5������aX�pj��f�X���9螓�'3�NEo�y#2�#�V'���?7F�5$���
Rcl�Mz&����q�fܓ�r���3�ɣ9,�L<G��v�9����
�=c�t�>�?�$�P�U�+ϭ�ؙ�daq���yB����?¸Nk����݊u_�	b��(��,�����&�p���=#�ur�>G$];��3�9�Aj��X�;�`e��PQ��j�Ed�z�M4r�|��l3W5ٴi�G��E[��w����0�
��@ P}�!.`���^6X����y��@Nn��ܕ!y�x����A��Ű^�|@O(1���Q�H���\��,�E��@;;K���zx��������uL��B�y�֨�V-��3�NV������OZ�.H2���-��I�2u��c�،k1D�H2��NV���Y6���
2A��+�f���L$�o���jH��0h$�A���_�l�'	�Q�(�'�ݔS\���ښ�}t�����_�l8��\ڎ�m!�1;T��I�?5{���ǎA�)�A�6�џz�,�����n��(���X�m�
(ۡ�.��QY���RD�1��[F6�~�	�Տ2�Q��=�X[�A:@�s�L|&��ͻ�ZBg�o���k���xpf�"���c'�.fxh�H0>���6"16�VL+U9��а���S$�6�U�K�
�?}�b�`�nSQU����uR�}����ϮW�K�.�V+��*�|��9Ro�k�2�6��V��j�v
1�R	!9"�h4떉�%E	�grZ��3Շ�,�s����2(��lR�L
��k���b��6�-j�>lQ*-���fS��������|ƐN�]�J�����`��b�%�h���>��W11�8�P^^蝾���ޒ��������]&�j(8<��o�Y!UYh�v�:�I��Gdubk�%ڷ}L�S�T�?)U�<�l���͠Dx��TT(��î��f.�r!H��q��i2�W����ͤ�S�#q6'�����1@�W���k�������/Ѽ}�%Ƅ��5҅�{�$���k��i��H���ĕ�E��S��ds�A�6E�sR�
.�O��>�W�vj��xe�Ā��dLn���j�ԭ�KC�ס�6�8:D����g��v���!�����m%URCj
r�LI8=F��!\��b[���:o���ƅ� o��QvŹ���؍Dx�aĒ����=eM���:t��JYGѷ{����0�L���P��E=�5�y;�q�v�v�~ΌK��k/��!C�ӏF��V(��'t�>��i��x-��V)_N�}�Nm��[�6ٿķ�:��[�p�tC�0�_7n��(Uj�{U����������ʸ4I��T�8rY+�r3���+ks)m^�T���G|A��oR�z���~_Kg�0�R��{?�
e!�L~^.�N�r�2��cԘZn���i4�;ť�H�Qw�۸�@��m6��Z�Y8�\��z�Z�=_id������7ήh����i�/dz��Y���ڥTP�p��S�ԆD����7
��x�vG�B�I�Є��^�.�/��^��;���r��VFB��h�^��]X._�^):�m�I/;d�ؗ]�#�9p=���f�g��u3f���9�Q�>4	�N���_Qefnv�b����n�F"��)��	�v�o�R�iow�(�렄��=.�@�{�]T�[i�����{��lziJy���%��%Z�&DM��;��iAx"�v<�_0�"߬_��f�z��S\����~'[!"��[��ؚ�'���Ep�����8�jvs,1�(�����T��+JR���S��W�a�τ&�|�CNä�����Prt�GB�:⏆]:`.�5��<�K�V%��.\a��~G�`L��pm�c������٤�LJk����4��_2�d�R�����a+�s��FD1��*���{%�]��^��DI%i��/-��oh%�Ӛߠ���R�����kn.6q=���O{�<P�pQ����ǞS�+)Uܦ6)/$z��v�[*��KCi�1�[�i��2%�
�#AE��Fj�ų�༉��1�`|h�T��E�E���D�����n�ƬsyBn0����f�W�JJ.=U�oq��Z`V��fQlN>�q�%��r����x�`��SΗgO�}�
6�r�6o�t:�<8pfp�N.ס<�ԃ��r���R��6Y�3B�q�G�eW�Z��Ɛ<�[���˶���BC����Uli�R�-TV�~R��n��
�>P
��nD�2;�}�"u�K�f��ڋ�5��S�o��|C��&m4e�ģt�x��poh��:�.�|�(��e����W����l�{wџ�(
aA75	ZK�r�c�/�w62��y�Ҽ�+��(/�5���J[�^f��'�}�i[�P%KԚ�ʱ˜B����n�u�}[Rgƫ��߆`�`t�����̕��^arx�5��efW�#I8V�3x�uľ/���⡸h���t`EzJ�7�O��1e@+U��Tr�|,�d}ݹ̚�jQ�����,W�\��u���:���X~�*B3�e�$vN"�0�\��JtL�W�.�65)�BH���Ж2M}4\t�ijI��G����֖�ba����;�P/�F�>��_�<8��k,iؘٕ�(���h<��➲+6�R{6G�{��}��:�aF�i��uJyE��l*��|�x31����R�_Z
��O,������s��}Y���P^J%��Ƹ��_�;��4�<}�w�q�'���B#��KvN���s��,���{r.sJ	�w�a.fs���sɊ�1֊^5 ”����F�ڥT�)���Y=}��sD��=WT��T�1v�o�Kf��_�/����WD"I�3U8\�.+�XJ3��ש3�Y\~�߃�ݱ�4���XV��cM�A�y�sǎ�IJ��G$!~N+"R>6��W�kW�R��T)�]x�}� �z��	Ō������Kv^�F�F���d2E���2�x�0}|�v��\HF��sB��>�8����|��������Y���C8Ǵ�񩃲�C~��0֒�:�*�T�
���D�qQZ���
*�ZjͤIs_��Nk1;@ZÃS}��32Q3,�f�
�:�Z+���l��N�T٭W7���%�7Se�\92�m�q]J�W+o7*S��� e����[�U�/�� v��"�v��A��ܪ�=]�> }�N&0��QY9Sj�������b�?=�-;2�V�J���:3_��qE͡d����E��A��U���r�k$�;�m�S�1�b��!N����P�<L22��U�e+���I.�=��1(�=}!���p�4,�|
��o#b*1�U%x�s7�����]�u��Y�n�1�*xcL[�;�2�b�(?���O�%%�Г�Z���}�\��3��S6e]�!��k���4�-��|_�2����M�)rnGN������W��gN�B� ���oH4Z����N��d< �Lj b��q�cO�y�,^�Σ��\�yL=�H̅��$p�\iH)T"�ܯ�����Ώ;�<#ֺ����&���1���#an�5�~�\oA_B����e_)��C�~��s�5%SO_��cOk��E�6j�R�Z�O��
g˔�B��_����V�Vi�H���P�N%���27�KGY:l�t��2�V�;�08>��VG��&�Ė�_{
�r4��5>�1����k�R!���ꉉ�c���>A���w�4U����5��X{Ζ�G��'�A��"���w�1�(j���d���� �W���G)y�K�6��ۅ�����+�2��[D%�v�)og�lN����>,G�͎�Fjn���Ũ��5{�?�l�J(n3g�C��#bE�cC��Q��c�E
�CA���7�f��;v6�SԉCL|��a:��P�"q����͋GI�a%0�0`7`�%yE
�XlԮ��|��plĮJ���1cvuǭ���~)f��(9I��5����Jt*����Lb���MMg�_�6��l.��g��H��d�$X�A�;�uB����M�9�O��W)0�u��������Y��B�(�C��nx�j��G�J���t���A�N���/�ɹ��z��خ��~�N�L��˽��p1����V5���9 ~ܬ��:)�t>ѫ�:�
�ĝH�s�\�,�}��ӷ�k;�@�d&wc�|���0�f����@"<���c�J�a���>�S*�
ɟ�v�=��HSc�����p/�G�K�ql�p-��N��;����ȉ�1m��Z4J��}�Xb�\�gm
�����'�9��ymQ�Bm��N~?�7ذː}A���W-�/�|:WVƯ�%g&�3q�'y1�)38��ŗ���r)��Y����d�v^B�H����$c��+�8�"�b���}������e�i��,շ]��Ԡ�n����I+zcd4,�{�X~�	&��H+\�j��)@�g�UsUM�A��n`L�}5�s�
Qq\�v8w�h�H�b�J�ip_�x(n�*��+΢��x%~�'(�I�݋��V��c�ƨ�������q�U��,	�"�t�������t�kz��yȎ�,���b1rs�\˧9FsEØ<��(Ύ\ٷ��B��K="Ot��T{���f4���%��)?�<g6��o�Mq$��I�x�Q�o��C`���o������+�2��HpgP�v�ک����Aw ��
|>���u-�OV�JT�Z�ҭLj�֍�6m��N�GBz�K�綎���hb!j���l:>jC��Ts�(Wy��Mխ�jl읛�"����Hwb����Vj��°�0��5�sv��+ux��\4�Α1�B�G�Z�(�"�F����!H��ˆ�_i�i�*5�Ժ��i��j�HVy1��ﲬ�&�Br=�,�3>K�
���{��|_��B�m�_�-&��"u_��k��%@��Z��.�3d��
{$6ҭ!�Gl����y��s��sڕ�� �UPP{�*�K��BZoI�$�y�
���uX��Ŷv���$-�"�_�VQ�6�C�{���	s0k�~݌�6��s�u{}f�u+��Cp��X�_D{^��=@)[GL���B�����;GH��4�=���ɰ��G�~�[�ciV�ſ�EB����&�^fk4��{M�'�GV�讗r�5�t�����E+C^uv�׽�I��?i�
�B�A�3�b��w���`R>�9�6j
�<�� �s޶ubn=������#'�SZ"`��`�De�h,79=V"[u����혗C^�T.�<
��������f��ЛA?�?Cef��T�"w�g�a�g�.�<�~���=�*���g���/�;�8�%�j��(���<4�K���۬+�S�PH@�����#�€"��G�ϡ���J����i^yr���=e�d�L
���ٕ=J�	�������:�k�䭁��b��Y��7�)�H(4�V�7�`S���F�z� �QI������~��+b[�Y��.�u�~���������=������W#�,��!s�rF�����4{}��)s��^�sj����ٲ��!�^og�?���9��}p����9Od��ϸ2v?�=N����}d�3���~P�COA7<:���@����Rb��W�;�m�3����I���~��7:B-����T�S,\=�b?�|
w*���+j�˛�Z�F%@3$Rv�x�yW��C#<�s�!<sQ�l��1�N��=մ䍚]lW%l"d.�¬�H��to"��5��VcG�/�ez}9��V��ƔV�S�K��z�B�ޑmu��hU�Olմw�T�J4d/W���.5�S�j���b��'��
�Ldr�LA[���,��RBi̝�S�n��u�l�	�T��|
N"�&̄:v��#:�,QwO#����X�&�H��k���9����1�)��㿡*��$�����~����Ip8瀟-�>��Pi��Ʉ<M��B8<�J/D��h!�r�R�px!���+�d��L�n��������bs� a�O���'x��H�����sz�</�Q_kڹשכ��`0��&�L��B�]f}T��I�:ɍ�����Qȍ��,PG�=���k�x�C�|���R�1$�Zn��JeX4�Ν�G�]6�u����������&��
�#�t�PR��]S��n��48�|�q�M8^���a�bVt�5�Q+�:.�����\:��N�Ҋ��K�5� .R�)������2`3�ĸ@џ�8$=��LW4�Bú&�N�iZs��e6��L^!
ކx�Q�a�J�Pu����7Y���q9��#xl�}��c%w������F~9���7��0��~7��&��Ѧ7m�+�.�:��džR~�]-蔊�H%�I%�N�RHD��h��e�v��&��ļ��	+�ӎ�餽f������l]�P���4�I��Tim�5�^��
S�ځ�d��oOP\��ʀ�0�:��U�����/�qup�<�X�
wJ�k]�I�5�(��+�{|����1��p�^�n���hZym*Q([
q;�$�T��z� ��U�3R|C^uL*��z�M�&^Yomk%�".���$\d��Y[�SV�V)'Hp�A\Y�1v�����VIp�g6������S�(5�TD�y]�+5�����>sS����³15%6��R�x*�S:����3�����^s�Qx]J�w=�}�g�	��"�i���>[	}��{Ma��TQ;�,W�':!<��H���*�Ɔ�k�
�9����|9ϧگ�@��D�{q�h����xr��J~��'l;S��3�����1�3�2_����Aɿ�/9k����{�f��luye�vںm֬Þ��8��[gD-�9;!�u�
�g�A�aRb���V��*����ސn��&�;����|da�S�?bu��X��1<�j׫�Y����?Xu=��c[��gP����PX1�3єϻ�gnӛ��z*�8�2�[BB��p��;#N��׵L(�
�K�1v\��iM��ؘ'���ȂF����j����B�����Z��H�E���-o���ӓҤ.9My���(�r��2-���L����L艮^C��(�<�o��r=�S���6cq�N����x�m������i&h��B����\�V�C�i��Aq;gUܛq��qb(�q$e��T������e���J�9վ���+�~μ�T/#�-@��8��q���ۏ�o�x@�+�~�Y=ON��~}�ι���`����+
���[�7	鿃2(ǣ1���![�?�q{a��
��Zm����ő6	�is���L��[p<���y'�PM.lܲ��t:~�H6��/�n��ަ,x��NA�\����Zy-�dj����:�B�r�~��]��'�ԡ����:wt�u։���[��>��0h/����\��������Z�{FB�P�Z��釈%0N�B;q9}%��q��p�����8��7#�f�)�Nh���Ɔ� �����Cj�Q�2�I�J�L���?dR��XJ�B�T(�4j�Q�14���J�T�Ůժ�X�%Y��>đm���3�������b7�~GL.�[B��5.���nm����!u�� tV��풺�u���
�:�ZO.���E�ѡU;�Vk/-L��Qb����Ö�zPU=3S����"��	�!���"�S<3Q�#���h;
�s��|���rx
��|�d�~0eR�7jW�>�f���"Q
U��g�ǘ|�N�����Q�>5G�FȺ#Q���!f��_b���Q�UV�3vG!�W��cHVY.Z�Y�/`vH��Ɇ�}�mp�UZ�B-Q8-�B�Rȴ*��Ik�(�a�tJ��l�(%
�L!Q�m&�N���f1\���n����6~��ɵ�y$SV���8��oP]�TK��EE�����*%�iv&��
|������ԃ�3�p>sO$^�ԟL� ��_�
����_w�o!��C��o��@��W2���Y�F*S�$���%*�J�QcQ
�9�'{�wH��(����<3\訮���P R)�M�o���<�ˆ��N��p3R)���Nl���0�Oq��z}��jߎ��?D@2���5\s�_���׼��痱�mg8
��[O�Ϯڈ����'T'�9�V��|�*Ӊ[@��T��\�7�Yą7�j��q�m� ښ�ngs�V����H�ڪ���~���o�8�#��,�
�p�ch,�
|�}e��x�E��c����X�
������j2c���#0�c��~�I�f''Z�aWb�L��XfI�4d���8��v���spW���R�=c� F�
�u�)5c�-��iJ#-G{bɣ�>����fw�P4W
&��b�x+*;��=�݃BB8������R��.�MېdxBj!=O��[`�����L�￀kq�C�ڮ���\�4�,��U���p�]v�q���yێ^;g��
��]\���&�8�$=�WJ`�C���~Cf�Am�u����=�����Թ�2��۶�u��y��$�A�@�%�(�<<��~
�&Wjyޤ�ɷ
c�0�M��f�-T\�fG����3�
}_ꍺ_>�w׶3߹��h��C��.�/�U�
_j}�?�� ��Z��p�L��g%	�5�RH�%�n|�^ztq��.8wn��K�c�����B�Jt����.ۻtX��:�e����Fx�|�|��Ϧ�P�Z����O�.<����U����&�����i���3��9�ɐ���o��^:�8:��$_���Ɉx5@��;����؋�"��<���$�����.:�����.s����xh�_��t������
���ŋ�R�Ԁ��|4���c��
�Q�U �ڻ�֕��J뚺��3�hUQ���4ZS�aT�����n\�.�t����(��)V�e�}��8�i��y\��W|�Dtm4U�(Z��\nQ���<����9��sb��s����l����N(�C��u�7�ۯq<xk�QqK�g�i��q��g{�pv�@n���E�}������ʘ��~?�ۃ��w��P�V?�q�,��XW9��w �#\p�7>>�ώc��ת_g��)�jzە���C�ш��H�C
�̧���!_U���0�N�	�Bj��^�����9��x���j�|�Y-�̎��h;�f.ߠ���.?��_#gpP�������J�K
\ �)�.�L�0 0�R}�O%�M�=E��$}�G�����Ďg��06�G!��?pZ@����j�W �LCՋ9�s�#�_%q��!`�L1f_;<�n9ꕔ$�}ڹ6mk[��k6�b����tnAGG���+(6=�K��y�0�A-��a�����g2{M�m�Z۹�u'�r��n�\
�S��)�����!p�T��Ij�q˖�`�I��	+��+2r�U��Bh˥,�r��Q� �� �������W�����3��S�J��E�ra	���*�������ht%��?$��j1�
e��-��X�8�Z�t��C��u�}�a4X�N��y ���n�$b�x��13)�!�)�W㗂�~���pN�g�F<�jO�
�$����ACgء-!44���f�Fa7Y�++�����#��'�F�^FS��u�/]��WDԴ�U�)V}�8x�����ИL��h��>�*����4��[��̾_��֡�L�e'v
}j��m�_ӗH�p�<AZuZ���y�s�}ÛcMO3h5v�(4#�t�+v|f����{�����2'��],	�nc�vm����I�]z�Ϡ�:<m���/�-h�A��4982m��
�N})��+s�6�C��u&c*ynd!�t��V�SM)
d��HhBY�.0�7D,��͕VZ�V]8a�g�=U�-�%�v��~:����ο�X�o�bU8�p�YK���q������F�b^{�Bļ�{��)]~��V���$�{���_���1�9�P�Qk��S�2�����-D
oE��^�L��>Ŕ�C�=�ڧ֙�iw��SҘ��F���,p�(�G�y��jz�:mz�-J�y{�dzk�����8�T7H�����I3����߼8Ż�K�b�]�	���4�qz�ږ�HǬ/Ą��k�3 i|������}���%}T.���mҖ.�k��{�T�A��G���h0��j���������LIE'e��8ә��N��L��2���J�������/�X��ͫU����hz2�Nm�5�����■I�o+�s=�~oЛ,\�W6S~���p�!e�|���6B���$���{S�ި�O)��Z�����ܔNvE�:֭$��w���o�Veu8�D#
��
����F\y��G��^nk*�#�ڐ�)�\"]��N�Lf��#�j���Ȓ�ז�J���g��t�ʐw�52u�����
f�PjS���&�Z|����/6{�ހ9��o�s�ex&G89��ς�CnթL5��!\_�v�5���Idy��V���p���{�6v��ÒW����U�V�O
���xڧV�.�u�X/�X���9.�����ձ?+eR�V�
�i�h�#�.�j���/���߀e�ze�pQ�<�߸^U)��g1�8��gO�8��Ћ
ܵ�}�͋[�c=�Ųr������]�AM�r��~8Mܝ�j�3�+��~+�0��tٿ�Wlڷ:^����D'�	�Z
Q�e��wt�pS�/�^}"�ݏ>��Ӹ֨��-����Ptx��B<�ּ�aT���M#�Ȩpk�
ip�
b��潞�X��m�Bs��(������M6��gclFJ����䲘�?��Џc��Kĭ�irYh������F��Z!�D��Ɓ:,H��t;�#<xm�����v���ɶf��%T�}�moUj:��Oi�?.����Q3��u��ᨙ��~��E����@}Ty�m����{?�+l�F���a�x�>�bF��{C]xs�^<c��
\L�A��}�|&�2�͛C�1�j2�_
�b��9�BWf�C�®���$3��fp1��o�3u��^��kO9�a�;=��e�ɦĹ�ɑ
Ļ
��B5�t�/��{�O%C�⡌bKʦ~�\��$�%�t��#��eGzJ���.��L����b�[W�]���?�>ǽh�����=��Y���p�����h6|�/ʞ=�0�4y���K{m}�O\8v~Q,*vH�w�0B�т�yl�`(����.��+]�e�P�9 ��e��ҋ�,�г��v����	A��g�r}��oJ$n����s[ ��>vٯ��)��w�,1{
	�72v'�W��~���O�b�
�����ӁkW�W� e�b����8�\��;z=��b�黎���I��:��3�c{ڬ%��f�Z��CN�pD$^�uD
�M�`oө�<�#�^AѲ�Њ��k�nt�I�zd�����Z�}0�!�oӷ�J��.�|��(�h����6���{����#,=��<�z�0FXT�S6='5�>���7�q�?�L-��C��9<�v۷1
��C� 1�u���%o�+Jـ��xW�:퉏0}��lS���=D�2������7����
|�[�Od��eB�r��V7\�azV3�H�yz� A��&@�l�0~�LQ��[Uлpo��n��Zey<!�*3�?��?s���鑑���Q^���y�M�_,�]�~����Z����Q6ԩ[�V~�+�,����)�5���(�����k�YZ�#�(��9�qs�D�hb���CP�%�Ѣw�.h��5�����ۇ�~ty_�ș}�u�O��
��36O%��
ϣY�WҞ��m�>���UW���oow��>�P�렻�Q�_%9b� �;�5�0�L�h&����1Ƽf�.�[1e�G�3&�Y��ܑk,	[�ys֖W��r��J��!�O����#����ٟ���Z���g��x�~���)26�ƏT�J��(ʫ������8X��nmx�͸��tl=l!&�"��P��C���S��}��[t�%�)�G����w���?�Z/��0�y6
�ʟ?�5�X4ٿ�e�m[�/��Jq��{I�.ރk�ր��5!��n1��y�/��ӟ8{Kfs2�Z�B�Xh�X>���Y�|�(W���d�D�����uu��>LF�]]�h�r��s�5�̴�(�/{�E����	�
��2����D7�@��d�0��
����S�#�n���ݻ�����J��dET͢���[]��sק�}�����%�'�Q?�W ��E(z�MEi���[~�~MP�c筳�Wlͅr:���孌��W����<� nS��(w��57m�bv��r!ו�-m����^G��}��ڲL�F ��"����}}o�t#���5?P�
�B���;�����'�=`��b��/��82?����&�a������B�-n�?f.�g�ۄ���|æ���
��f�:F�s��_��8_յ`�5�k�h��"|.��6�60w���kU�R)*�_�~_G�j]d㦹�s�Y�D��H$��4����qT�$*�U8�v�V�r4�
��܅������}�����=ý3{Dzh~ʩ��f��Z~�l�.�ѓ��Yu}�ɹ]-B��$�v�}r�o�cA�(����o�g�,�|��>�g���I�jR�ȫ�����d�o�N�L�J�W	�0���I���hm-3p�7ݳZQ(.>�ǦQ�r�t��iR��6JC���/�����&�(��SF��i�/�9>U�V�ſ��s��f�H-�q���ㄢ���Ri�D8"Ty�!O�(��	a~�8�k����O�!#k�!|}���lo*i�h��u�M[�G*�]��	�Ѻ�mi4�Ϟ��DCq��G�]?���j����B8�o!B=	V�~�7������	{�H�i�[ŲP�-6a[۹&����{Fb��)�و��T��D�@��㖈g4�7�x���y�S���l>�|�9�Q9F�5�]��4�	�ȶ�&��x.�����\���:�>;}_
��~�ܪ��_���t��Z��C1��a�G��i��櫨{)�QOVԂ��vm����⚻b���`kh]�曓��z�?��A�����L=u#[��TjF%M��s7�:;[�]	�^�i��;�"IH��g�͔�x-�����x(��?�s��@��!�z�M���釢=J����d�z�?r�G��X�R���a�S�	9�,��̳%�u4�?_̼R�s���G>nÀ�_����2���r1��k��a��5�F˖4{z��tM|��.O,=��
�rij��-�Br}�t7��k�Y�1�=2�s:�7�1�-�Wp_x,��t)����:2=oˋ���oy��O�T�v�&��w�X��p���<��/�z��u�ݏ�w����>5J��g{��Ggl�Sz���������܋�c�����?
H���o�'�:t%�����e�!]��pQ3h��:�}�g�K:�2k�X[ҹ���c>��֭;�m���C�Mrj8�Ź��6�\��4��=p�C�{U@�&��9٣aOD}��x��v0��w�c{�8_���CY�n���D�
����#��/Ѥq���l���:�����(8���tZ�*<�?����)����<
�9�������3���%��<�N�w�_��z�E�%"h��$�����u�)��O�-�6��@P��I��g%�e�:ݾ�h&q����‡h��J�&H�E�m�=�s���{���$��q�b\��P�k!���$�ז`=�{c����Qњx��1�
Ն��^ܳcώ�{����rι�7�s����ű�u����]�a��O*��j�p���jh���,i8HY����L*��$�@i��]�iW$�F���+�ّ��?�"�ڞێ�թ��G&�c�h�@�כO�t���/�{}w9������@�|�Qf��ʓ�)���i�҇z��H�x�+���?�t��Ჰ�= �M�f`e�����~#�+���g�� :�[��Mϧ2�l2�ֳ0SR��h22ԋ��I���E��h�_�Pc�$���uͷ����e6}^���O���]Sm�Md;��x.J�2��Vӿ�����<��OML&�h@3��� �qԘ{�B��I���z.��T�ȎO�m&uH&���|Ȭ���m��O}j�/��ġ�l���%L:���Ӣ1�@F�evLȶ搭6��}sZpw��'�nf̠\De��'
T�$��1
�m��¤�c��8Ϗ�1���7ኇW�����h��5�@~x$��V_'��2��#;#��ם�~=111����!�$�
ޠ�j=�D[:_H���eJB
ǶsB���k�4����c���[Rv�*$��1������d*U!�:��si��f���}�G�652��#�No������!S�3���8��n�7������hn(���3\�4@:8�##yg���ݙܜp�R~q���&�@�L��N�/�3d�;�>�}sxӪ���	ӗ���L/�o9	�[��{5͙q� ͥ8�����pXԨ�D��{ 1��bKeq���78���}<��m������p�
p�@��6
&|.���ũb���d����N�3�D,O��̏�
�~�u����p-x�p$2��
Y�[Rc�T�7�MQ;
�N:*}>��2���Tr�W7󂟹�:�����sXL-d�E���]��>��2�Ǵ�7Q�ܷ�ZS-��޸L��B�6���ݒ�������,}@)w��yՔ;�St�dq���B���Nc�������s)�fEϚ��S�4�e��
F��ayb��'�E!b9�)��Ae��Ss�3#C�\��;�j�IrX��8�On�=���RA�TJl�����e"�X(�DLL#��Sp���;�+~�-�U���{Ս�s��X��M���[�\��
����
an8w#�����s
��Z���t:Q{}g��J
�1e���XNt��X���
v%�z<JeL���!m� |=��Յ�5��2Hp�8R-��v�j8�M��HQʘ��n"�$)��P:�Ndi����6�_��f+�����<�a0
���86:33�>ɞ�d*�[Yw�*vP]f��s�SKE�K,vk"�b�P,�˃Ss��-~?�u����cjo�1p�؊�q�v��scәp<�L[���y|����lX�80=>5���ap���PAh���x7ę�[+L���)�}C��r�-:"B(-&�-�0l�y�;�����)����_~���?�+��=HJ�ψ�I����\uXc����H[M��L(D��n��-���u�������2}"'i<׼�K�Gz��x�y_+!�2u�R�)Z�n�ȼ��PW�Nl[ip>Q��c%���8?��7&{2�u~�|%���ŜW)�c��yN8��v³��!�~ޝN�%�N�����W�������
���$�H?Q[��n�e�G�l8'/�$Si�$)�U2� ��	i��3,y�~��/�µb�ϱB�h��e|�*��vq�P-�X�1�Z�$o봫L�l4���Cze�jQ���Ѥ0{��d�m*���.�m�.�N\���)�ۀd�T�����;
Ξ��-��ə=���X��[]~#�TSΫ�"YM:��Hn:�������;|�E�v�j9g��.H'����:��G�C���-�f2�LR��m��}�8yd6�gk�|�^p�Νd������k4#�۱��xi>��쪄'�iWJ��VH%Ğ>g0�	�ʥ���Y�RkZ]�2�@�ShbQe8�w����D��QT$:?�|X�Q`_x�-�f�d�(��Ǒ�/͏'�֯MtE��S�ӯ��;]�i��G���Ӽ+�+7Od���>��W;��	��n�Lh6�>=@���?�j�]"jo�u4q�Y�O�rEK'�'��$�����(M��J����|�����?�o����;s�Y�m��Zly�%Y�}w'��8;	��!,
���

4��M�J�Fi	e�+e+ek!�G[裁B,}3sGWW�����l�gΝ9s��Y枙	B�����H�(�L!�Z,�'��ud�
��ڲz0�R���q��$y��GdL�9�BE���P �i��UR��}aX�T�0�h���^HކZ}��K�V/����G�z�;�<�nUƴ#�
T`3����s��3�I7hB�#�O3�Nυ�-��P������F��g�pf Ι/Lr傎�E�]u~��Ȇ��� �`|�����:����]]\�p�>*�(ؘ�m�U�?=�Fm\�˶1���l:�l�'O�ۡ�����ĩ=��p�����9АI�<�X�1L�n�:����8i��^[�]G�5�w�2��z����[	{�m��>�w�'a5��삦֞D2\k�u!Fs�X#��)�ARa��k[njRM��@��K"⚠R>Y���5�p����b�X�}ˮ��h���ʃ�*�]�<��n�~��no����ʫ�z~��ڳ7q{q�������D���,��k5K�X��P2�'e)2��B�i,<�ݱ���W~����+]��ⅬS)n�,�T��O����WL��m>g�Md��?��ep����	����k�v�Aύ;�gk���#�OO/_�i��2C�|fFZ(��M1K�uU�ıq�B�-�7�z�g	Y�?⽬��_O"��`j�R���Q|����&W�!XOmOk�V�7 &�����oV�BȪ*ү�VD�M��quՒ��K�.n��zڥ�u���#�-ھ�Z5U
�os�Vl�X�UM�]({�ÂB0�^<�
BO-�J!�GD;�G��,��@��J���荑�5KV�1iD5�p���U�I�Fı2��7�+i?�
�+6���xc��߈��ק$6C]C��ā�~i���D�[I��d�&�
#�����mZ�0��J-,��Z��nM]�	 �-U��9�R2�u�b<�"���>x�Uא�S%D�@��H�~]C�x�R�1���Jd�(�PD�2Ej�O.�,�+�*
E��re��"���?Yjc�qVT1^�"���Anwy�\��	[_ ╄B��Uk�>��#��%R�0��g�KE�P�T����U�$�j�.3�2�+=��2�Y�%dg�[u�粪�&c}����0#�J���S�������iQg�Ԉ\v�n�F5���{uN�N\l�״�KB]ZuO��S�Z��MyEk��72F�<	�q��ѝ��X5��|�����zC")K�%*

{����8�'�JVU�++,���}��,��2��]?��H�u�*��SZ@l����������.�+�!H���7�Z9mO����yW��(C�a[�3h�x
��5��;]
��0E�wq���3���r�^�!�t��*�[��m���K�ʞ=�����=��
�ظg�����!y �]�v����z�ʊ��.;p��k�^�Z�u]�؀||فH.��k�;����������^K�GȔ��o!9[.�cF�����
�V����h3�@ڻqͯᄎ`�� ASۭ�U�G�h�:��<I�㢁��K�FW�[�zW�{)�kq�sp�SiP�g�EX�2������J�S*
' ��{�K�o͚%���?��D,L:��y�mC��H7iAh~��Ĭ��bɳ�7����H��H�#d�l�Z�.Yo�cC�߶��Wz`�rl���?TG���ި�F57r�#ٯ���(_6�E���ܱ�̩s���kz�x�w}�#����{R9��Ƚ�z�>�Vp?59�6m\��řN(_4�GQW+>o�s'�tK�G����+J��vB�9;{\F���[�H�
�.Hlظ`j��M��(�YW\o\�QW�E.�ٴ��w)���U�����6��e=/�=]uS�޾xWWs��$\H�bU*7�i.����§>�H�uHK���\:P�䮢VQ]z�'��"�+j�|r逡64���ij��sFDlOE���[=X+��o��aٽ3�F׭A������S�ł%�f�^��׼��`���>uC�����)���}/��u������	��;8���缽u��� Z����5�>������O�7�c���A��9>S�l >�O`c�]��|:B���X�J�W�J��؃(�b@�9��*r���eNw�g�*��	�4��{c��ܳ�s���O�F
4����m!�t�g�.ݶ�ܝ��hlܩ�^H�{�
Y�}�"��\�І7�5�8�l^�lVE�������*��_�~���r��7�wM���v�#�a��/g��5��9:�nuc_\,|2�F�K�3|b=i�-�uG�&ea�W0�9ӹVlL�>���ğ�MG$�e�r�e>�-�j��=AB\�<w9��V�5w���˭�o5c�RM�rW���n�$vP�S���x����&>)�N����I2��JBM;���%~)t���W�lB�(Y�E�C�4p�JӇ�q�P3�˼r=����Y�#�>��“�	R��>����z�]�
ԗ�t�Stu�D�P�C�!���/I��J�N=Gg�ٝA"^z���J����T��m�J2G���m���N���1�{*E�����@�3���N���Y�H+$R�������;e�"V$*�JwN;�bf�a�r��;jC�����9Ԃ�F����6=΅7ܴ��O�;x�������W�H�'�����qwO�J�Q�g�p^!_i�78�y��m��5�C��U5�mЅ��ڔ=�^?57��9�����U���j�g���E�-k��
���U�5�!�Yi��=���F�
ǟmh
�
/��a���v��Ӊ�f<v	�-����(��S}?!{1b60N���o@qX����zLj�FD��"�}s�awb�a�K(I�qQ�?� r6jY�h��	����FR�ɼ}��Q��y�eݾ��ާ-�Kmj��dV[�����O��őBW%o�G�����mo,%~+�J��p�����K;p�U�L&JX�{�C{�7�v��%����Ҽ+j�5h���_:yQ^P��m��|k)��r[�hp!bT�$tcQ��d߿>{t�{��]�\�Ί��e
.Wwվ�=u��,h��pQʞ��.�D��p׀N�S�
�����}�:.߶���Q���C��2���?s��1�
�6��{k_C����Pg��h��U�Z���Ui��WY�5S}�>�Z�S���/8���e�<EY�o�"�|x�˻:�4�"�!M�ɇ��mENw��������N8���7�K�� ���콩֨�vO$�M�A4Ȍ �4�P���~�ɒ��R�á3�����"��Y�6��n}.�������.�kמ�(��5-��m��;zU��t;������Q[��j�nn#�u|�G5׭�P��W�Sv�8�
d�!�ğ���s��c}���0Ʒ}%�ǩ�E�{74q7��bJ��o�*��Y*��G&B�P��V&�?�ny�6q{�\�r�]����<4�rW�+���˷�Ōi9~He���ۯ��=�.�\/���2$/���$e욣�)3���>2���a:w��B��7,Z�_���C��MO�x��:��s<4W 3�5ݿ_�,]�c�QiTA͆��=�є����1�4$)��Т�V�
�<tZP}N��"]�1��i���T����֚b��L�Ai��y����T)��+B:K��c����ʀ�ħ�+�E�R��e�؟t&�A�Х�)>���h�ǍR�1O��!,���1��e�As{Eݒ�ޥz��(�N���αxu��6\?.0(N����#]��j
p7+\>u�b5�����Xv�O�8�}L�KN]����-qT�
�����uU���Q{Ȭ��
���#ee^o ��*P�Kj�
�J���Hr�9Eރ�����9ͯO�777��<�ňe���.q�MmK\*
��~���|�����&��x2c�ER�2�u�zkuu}8\��k�M�e�����������
�J�2p����ׯ�Ly�H�np��Ս4��׃��d�k��Gp
>J�">����d�o|+��X�z��,\�x�H�G����Dܠ9�qDKq:G#5�n�T5X�J���̑��>��Y�J���Dj�QJ���'�ѻ�Q��)����@��\-�k���X5z��o�m��m)[*w:�K6�K2޸��LQ>/�;I��t�cȹ]��Ũ�}�pY�
I��kL*c!�33b�?~�+:O�7�
�R���^���	�~;�+l̑����kL�˵�F�y����pcja`��.�ψ�v؇�z�X�px���cb����$�qk�ň?|nz��;8i%�q(E���!C�W�'x��"U�b�‘'�,��l�ܠ8GV'�ג/w�%���ɓ���Q*y�-��i���Ԝ��SIl���|\��X��Ԥ=j#�s��i��KTm�N��D3�^n��CcP�b�lE�`R��su�R��6�dǁ:�L/V�=5��zR����s�A�`�W�)յ�y}`⏊������:���`k{�@F�TaX�d�i�ʐ��[|�9u��:?NL�I�C:���j�q���j�y	�WW�Z������:�'3G���N^|r���#ґ���q"���ڦ�xcmc�9p=M!H�<"i���L�ڭJ��1�����'�?ǩ��=��`[�!���
���:]SI��D�u&�>l�����yU�"u�D�`�8�&�E��JyY�¯3j�~*7�O�]1-λzB��������y����9)Il���� �;v-ɽs
�K3��xX�S���Qd*�q�xq��Znn7�C~��� �2�p:��&����Rҧ�V:�H�C�4��(�[�L�G����e�"	9����8�A�w/��������y��[\G��Lϔǵ�VG�άv�6�=	��=m�PYaO�����rHY������`��o�JsN�v0����۰0�7D���/�4\�~�>g�I~?7�u�u��c�2~U�i�����*�7��23�h���g�Ǐ5TT�/v�P���g��}6�s��
4_����FH�� 9�`B���K�1�0%����O�8<'��ϸ}�ׂ5�@�g�Ӹ){(1O�s�1��@'V!"�/��W���!���v��W��Ժd9�H�c���2�Z\i��>�.�nlU*��"��T�FF꯮*5��F�
m����Z�h�DmX�w�0�^ROخ	���G}�zC������w�o�j�
����m\!�.P�*#�*�.Z�摂ѐ�$��\^�+��v�����?�QUM�re��T����}�~�.K��`���8Oc��<�zP���?N��=9�[*�^���4:�eJfQ��⪐�jբ�c���?�Q�^T��,r�;S�N'j秂v�{�qv9\\�;�Z|�7j��U�JUk/�
���*q��En�c�G� }�L2��$_���E��G�n-
G�H�jCK,��f2�Er�*b6�?���B!IDry�B,�[E%*�L"(r�X$�F'��*�Q�&�-�)ӫ��ڍ@�_���Xs[��5Y'�����z���{v�f�?¾A1��k�������:��7��r��7Fn��j��k��`k'��"����F��C�ߦ�Q�M\�փ����Z�.dބ��K�Î��׻�^�~�¡ֶv�'�;��������Z����{.�1�8��G�>�{/ڠR�me�*J���];_�k�����d�K凇�������#x!f?�#��=r�0��;)	|5�z�p׺�S�J���{dA;w~�r8
�į-��,c1�������Mӏ�-y|��l�������Z�*��J'/��*TǭМlb�d�X�OȣGx$NVY��mU<
�Kᑰ�Q$�V�K���䌦�$m���TR֑H�"�dҐt2�o��Dȍ�0u�D�M?���suK���
�&�àT7T{�A��BպU���z�U�חUƍ%�=��.c�e�H��g���s8u��>5��.��ᴄ[�#�f��鰆��k�-�%��e�����p��m���k����7"Ϳ����>�0��<����c���ȺW���u��X��e��H�"�!\����rVquQ�ۇh�J�_U>x�g������
���ۃ�wι�|��BN�„��s#����O���$�
t�j���fU=��m�Q�)V�BƸ����U�4jm>�'V��IRi���p���Ȣ�K�R��mk��C�^�.qj	����g�^����~x���/�.��p�	��oB!���H��ں`G(�(-
�����pˏ��R����5���>�zmCuu�EY��h��������+//:��e��\�m���-%d��� ��~i��A���[�y��0	@Aa�ܕ\�[�Z�ˑjy�۠3��|u#�,�����A�WJG�v"��N'g���W:�Y$+(v�Ԛ`�-�q+�
���[�P\*#�V�F^�:ıHcL"���c2�CԢb��o���c��n��
�&3y�R�k$�z}Cm�����gU���P�����ـ:h���WU�o�Hn,.�����������;;�'�c]h�j�^l/��+��Xur�Pf�6�x��C��a�X
�`��>ZQ1����`Q�y]vߠ����ފ����Fگ�6G�_�Μ(la��-1�����k���h�����ft��\^�T;�2��u6�"M���W򑱼�y3�s�ϏY#�'���ZT�,Z�m3F��-�-=lOQ�D�`L�h�"�����4���-�E��^��I�Y��\����5��~8+���zI߲���==_��g�ZU�$�[@5W���l�A�!��k��W����èl��Ia�'��’"�^�ɮX/��vuA���W/�Jn�]R$���/���mVLM�9��KN	Tٞ�࡫��W�jCy��ىh(�h�vh{��������C���2��W�z���z�z��R/�!�эl�Wy�]�-
��&[�����S;K���\���zv����T1���g+��ƎPc��l����N��D�|	r�J��$�Q��T�	�ڜ���h�\ZTԗXMO�&`����+���~�S*uJ�"�F�4[�v��&�Y�T
���{�������j�V���E��L�^�7�8t�Y+2J�9̯5�_�Y�����߁���=V˝t>md�A��`M�f�9ƶL�kñ������U@�S#���(�Px
>�=�t:�ƺx�NSh��-�"m���+�ʱn&mއڼɯG�t�����@(��C�x�2{��o����&i��6�w��@�l�8��.�#�AT?j��@̻����N7�W�,�PS�\R����>���2��v�D#�R�[D��`H*ݴ���p�JL�?	~WZ@�ވ���O齷��4�Smk�������k���e{�b��XH? ���$߰�����g�xnFr@֧�j���@YY��؈�A�ob�?��Z���X���%H~�0+`q�G3��fa*MX��#/(�H�Ъ��Db����K��-������*B�1�X�CbA!�[���0��H�{�xRO*SX���
�+̵������_?��^���>��H�<�=���x�V*g��{��1�`<��*�:�$��#).�!)�������ujt
Q����kJ}A��E���+�Vlʀշ�c;��F�M�b���3�#��ASX_inb��M�2.�V�=t0��,�g�~�1�iアJ
�
79�����=���h�~�;���c�#�a�3���JZ#<�!ϩ
��Ya���pB�}QjۥP�)q��
ZLZ7rO�=n��$�^�((P��?�껡D�&�i��sOw�S�]��u��V�`�S(�sɛj�V�fH��n�mh��S�#ߍh�Ni)����o1eA��L()�$�('�!"�Tc)A���d2yx�9��HQL��D/�Gq��W�y�NQ��
�j�5��z1�k�@s�`���&J��g���?��Ş'}��|��F�aW<r,qd]G��t���m(N��-�������O1\����&�cV1���C3@�8:<�:oD�.��kn���QR��)�c�>�N�Isw�42HF�I���`7n>���.�����i��jO}堮��
�Q���eFU�G�W�w�W���0a�X����X�֊��T����d���*4�6[HG���Kb��#JcQ�����/�b~�|�Q�o��F}ī�"[L���UG�S["��b�Fc}LG�����Kl�("�V��\	І̊��TXd,�1k�:�Ǝ6�R�a����}�‹�~3�b�3���G+��B����������K��7"����Μ`�!8�o��K�_0�b��\��'�zR��W�/y|�C�����f.�-&�[3�3WxsR���Gpk����<��9�]x���`��q�̃\9�8ߟ�I�ݠ�>wjH�i�s;�/H�>@�#����O�#|������q�f6΢��0>��4GU����0�"�hT��O85%E^_�T��-w,��J�7�×�Y
�WW��q�j��x1<>��]w�P�(���|��T���)û,�9�S)�o�}�V�7���P��vY�m>Y��rY��'��>�C�儏u|<�\~�M�Ǻ>d�zE]h\���rFΝ�R�G/���Z|r���ʳ�u�WAЛ8\�xx1�6M�F#w�ڔ�z{O����3�dDD6{���ae�.�ȜK�@�\���ÂԹ�X���м9����AA6�P�����髖[�F#����ԛ�5���� ����}�^�\S����������o	�f��~"h?oW99�9(�㽌��>@��	|u�/�(3t�c�ߗ��&p4�����닟��#�Δ>A��>�G��6���+T���>)�z�%�>7�2�Y��;���:	�a� x���v4�^"������_A���F�L��0�����H�+�^��׿f2o�)|���C)|f�ן<I�2��lI�&��":�K���FO׏��yܛA��{��F��͠�s�'���o5����)y�S�yo��!���}�c$�8��YdF�j wV�U��|׺�9�.|��nc��lEM��1�dk}���Db�"-boJ��'��S��ja�.��Z�ޟ�w��J��L�aQ4�����I�~^
f�ǩ�t7�XM��DN�4�B�m�p//'�	���<��夐����x�&�?�\��i!�af��Q��	~�ֳ��3�c%��<D��y��>�/I�S�T�g/����H�3�?[3�;��t$���A{������e�S��|�������
R�e��5��X�A���(|j<��)|4o7��K�#�7(��2BO
��ǩ�@�n�������R��y��_H�›���-����>�^p�'�J~��������-�?��K�3� �����2됽=��ȃ�I�ו�'\\��S�z ��g�!��۝
�p���R��Hk��!sM�ޠ���oز�ƾ�wl�ap�w;���cǾ}��m-hfUThŚM&�!ڂ��1�d��˗߷}�=˗ݻ}��ߞ���V2��}����ΆО�n��B��q:�����W���ޚ؜:��;7�ߟs�WL�,"1mӌ�&�G���|r�~� �m��ےhUI�Zo4K+$�*[,l0���<�3��<�y��AL�`�S#����>��ߟa�.�94���;9����?�����7�	�˟��r�_�h=�.���dӑ�k�F@ņ����mGsp"2=��І'Sa��<������C����'��列|��9�@u;gkb�f�Kcn��ۚ	
����>����K�#�g<�J���R�\C�P�7y۱��8�;	���k�n_Bm�i|b��Ԗ虜�|��ܽ�9?��y#o{��f[�1���'IlO$y�$���t������H&3�Aퟄ��'`9?F꟤pK��(T����i�R	�4����e�y"�mdwFv_Q�ǭ�Ĥ��`9���,�ws��xI��
:�l�K�:�J�Z�T�6m4n�k��5�z��y�&�j����T��U��CͰ�P_������`"E��L�Ͼ����Z���k�v�Nem���R����������I�ذ��#�_R�"����N�o/Uk�,ufk��E�P>r������XT[���Z�Յ�h�8��3�ԘF���?�)��|��G7�~|���G���SjN�s��ͩ��8&��~nn	�$���E������������[9�Z�t���z:W�\��Yo���P�����)�;TH�l�f,.G~�� �M�Y�.�d�>��~��	|��Є�S���}B|x�9D�#F\���=>���d�M��?�L���)d�P�:r��u����Og������ӫ�,��I�}������K����0^IJ?�h�S:zzZ�������6!��&���=�Q�>9��/[�z��d�q�rqME'�4�L��0J$:�����ٛ�	���i��*��L6-���ZZv�.�Ȃ9l��
��d�Gr�H�r��O�r�|����y���7��I"��tN��x�=��p�+�`|��<Md�t?�_�VJ|���y''�y`wN��@H�����|_��&ŗ0[62�S�(��+�/U?�Wr�(N�&�o����@p)4�'�\���C�o���9R?�=I�_A�������M�����I�o�����
$H��~����	?[�'��}E��+��p����I[i�������p�ߚ��YC��_!�a�J�ΐ^L�3{0�ҿ̖�>fj\�0��;��%��4����9�+�܊���K
/���	EL>�I�s�0��&8Kr�O���j�Z*_=����U��'k�
�n�PȺ��h�ƺ���k#{
i}z|wa�{!�y
���tu7�0�;�ZDꊴ�%��kR�Ww�WH�����ӝ��Os!<x�2ظv���5uѭ���������-G�=
�-m8��d��jk]]�6,0���:���7�'j��HS!>U�v
pV%a���]�^��F�<&x��᝼|^Ğ��_�k���q�1��Bt!��{���0�T?����S�A��Z��W�닾���&
QK���X�氹����`\��`b0�C�}��P$�H��g��˜r{D�R4�j����n�+O�������*��F��\��e�Άm�\���6)9�,���t���C�5k����1�n8^�5��Mx���čs��H�O�����_-9_����=����{�1,QY�~D�
Dd
��3�����F�˝�f�"�@Gn>�j�L�;m�3��y(>:/{���Ӳ7�_���2^��ڔ_����XzwKJd�p����ka�b{�UoT*;�ᴄCN���n��.񷊋5�B6�^��"-#���xN�%�Bs~�uF4������It��`7�ߟ��P�E�ܺR��3����I��\�|��ۢ����L��K+�Use�Z��t�Ց���\mn4����b�l1���f��jw�]�2�
{��Ԯ��ͅ]��v�v���>�Ay�zS;����ߧߜnXRv��!>'n���vj�=IP��8���0;��FƁs�~��Ps�ģH݆���%N�@Oo�(&�,�Eŗ��a'l1��rln��i�,�S����x
z"���<�a�:7�����lb~Z������;�ixi/�j��1(�����)�����g��Y����>s 3s�R���3��繉����Csh=s^�����gGs�R��v:
V��f�3m%V�B+Q���+Һ=6�DW!.V�!�����n#���7F���L�W4o���my;rC����NS���s���
Bn��������P�D�c#�}CcOWs�h�`>]��矜	�g:��A/�	����ӧ
^����#��̱91�_yd���5��T.��I��<a��	�D��s���C�3��Cr"kdsD��&���J��V�-/�Ze�Ҧ���e=���b�/�QI�D��'���yL�|�" �-�zK3�F���TS��7t$L��-O�Q��,�7��R��������u�|���4��-C<��<�/����|�����q�<s��l޸f^�}#Q��Dz<�L~�Q9��8��#��{t^������[2寀�*ML��*�K�w�%66sO��v���;��$|�~��=7����7I�����f������3 �f>v�v<���)[B⍲������o�MI�Gx��ݙ�8Pƾ�l�3��K��P�i�gنS2�!^Yf>#��D�g�m�~��D����s��7@�/�[� ���#A��	��7#~����Qjc���Ol�E�Lr:����/���'�#����N�`i~G����yiʛ�rG6EW����fyB47ۃ�PTFօ����)��<��]ylzbm.�q�>JmU��/�љ�wy�\���ylz�{��r�r>�>/O�����e[���A"^�Kg>^^����r�2�������G�mIg�^9W�z���}��{:'`����qq>A
Y{9�>��'��A �O�$<���q>@��S8����{&K����y��7��?�"��ߙ�!���Lz��9�8���yx��� J}�c�7x��
��7XD˗p�HW1�l)~���=|w~��y|����yy���7�'R�(�}8��ߡq��H�=���_P�;Ŕ�)���R��⟀��m�p_�	8I�S.�Q9o&�Q�8��rrgۑ\���2,��6��승^�Hvf�y��k̑Ln�n����l{�ٜ4
�G'�2ƻ�Lȹ�<��g��2��̯r�w3S<E���5�x���4A�:�����nv'���+��Ҿ�sW]y���U�޹lN�D6Ԩ��+�O1�z񪪅1����Kx��.��5��M��8�M�ʼ�Mx�E֬�#0Ym]1g�[��N�XÍ�t�<�F�p���S�E��oߡ�E��
H��2vQ9>��3psj,|T���T�s9�TN�=�Ι�%��ӕ�a �g��I~�@Z?k{�����Ɗ����������ǚ��H`����'P\���|��r��k2���l�n5q���b�D$�m]y¶t��-T8ԕ�*��	�x)��2�A��CSb�������y^e�}��8���4�n�!<Έ��+.$](LF���)P7�
��b��8�H�/�y4z�V��M�����䃓cc�¾�
�_��㰏;����e��A���>K�կ��8�nxk}ժ�
��Ju�gh{s�g��z��!D��+�t���1�|�X�#)h�36|`h�
�w޻Ʉ��D��,9?����OpI5v��Y��d{;NE�ϲfϥ;�v4\�	>ش��ت���c+�������x��V���ɵ��Hn���5����*������
ퟭ�Oe��
J�N�����ɠ�U�c���pd�FH�i����F`Oh&և��Z�}��O�dR�Ќ��N۬�M��ZN����]��r���-��~=8u�Ie��|��T�7�4E����lܩ7�z�1�ڴ�p)���-X�d�̏r�g��r�}��1\�g��,�	�_>��������U� -�#z��y>G�s=-�"�8�1�����h��F�%���3ގ�3O�p�<�3>�+��~Izti�9�ѓ��2�|-�0�<�Q�r�|F�C�E\*h�&�x���OZ�0�<��#=�JzH�?�|%���:��"�ʄ��nfr��5����]>S4�h#7~��)����?e��!
��2t�h��98X�g|2��O��w������{M�IvR�^E�
����*���<�����*�If�Od?�b����R� -��4C燁̏֌r�:��H}u�3�GE���
���8x���,�;>����'�|���S�?"}�p��Ӂ�$������.>�	�'�ʀ#j�K�/�e�*��6]�A�sO�2�c:W�̭�QY3/����%~7^ɗPy��|�s����x�WH�+ɉ!��oS����	o��`k���*�3��2Z�4�xf��Ox��g%8�{<���;s�'�+R���_�vE���32����|��#a�L����|�|�wd�#߃��?"�]�a����o˰W����(���9�Y��B˵��gNy��BMd���#4VȄ�0r�Qk��>���.���_N�DͿ�=_���AZ���!��>�.�a��n�O�2"o-�g�_pppu��-?7��7-�Y9nGt�C��
��C��
�aN��~��>d��t����y�G�gNR7�y�����.���>f��0	Z���n,��mY~���e�m`9eׁp��Y>w|~O��y�Nf�\�c�����3-_�GO-eeԏEVb��M�q{o�*���_��c�����ar�1>�?@Bl���w����d�َ&�^��t?�3��Q�桌�3T�N&�,�'/�D#̅#���q���sPy�z9�I�����3~.�Ia����ϙ��8���9��W;^v\���9�Ȏ��\|$��wl�㤔�7��%� ^JIP��s�M~n��_��5��y��77��s�� �/'^��ʇ�'�����_a�����\��C�,�_����	�������qr�~�ϋ��l��1���}�+��X���O/�%�0�_aܐ��[���@��zN�,9�͍'����e�Q/g|������g�r�A��*��b�N�a�YN�<圝�sv|�zn=#<��9�>o}wσ���9?`<��s���S�/HK�2�J�i�Z/(��'�$^�|���
B���˖//����q/�?���i��r~<�R�W�)(��YB�"���C����B��L;�z��)帽w���v
�K�}����3��=[��/�ᇙKǃ�qvj)�+�O�����w���Ծ`?j����p�׭��Iֻ����ywƬ��6�7Y��9�}�'�HD�b)�NN�!g�^(�����FK��H$6�C�r�̠p�
E"X������]����#	>/��}.��ݧ��soûa�������iȸ��a�R�9�OPNl��ܸr�}������d��q����D�0t�o�H����…��3���c�Ej�ZV�� ������p�ǻ(�!>>���0)����4�d�p�Ŏ��[����ᇟ��d��Rپ$�9K�B�i8ۙ��k8�w��}L�ƕ��ɪ�md��:Bo�n2��#����2[�\����=5�I¿J�w�|�S���!~�>�P�q�X���Y�����	�p�[,��	�8�a��g���H�ί9x�=�5�'r�g�C�v���=� �_*�'kd6})|�v3������=���-T�L���:	_[�Cr���W3�'>B,��ʰ�7�|�+cČ�����"F�?��_�gb����O�a�p����9��.�&�[��I��-�/I[H?�vfVn���eo�Iܕm��;[e�s�9..�(Gq�o���Rp�O`2�Iv1��\!�1�wp�c;��󾋳��uYcR�	�ͨ�Gq�'��ꖿ�t0��[����T��woУ�u�M��h��(!�n1��2u5R�R��EE�CA�=�$��yôH�?��+�Q��l�n�bm�w9|�ٺy��y�{�,G���c��~_�u�Vk�]��Ǜ-�7[�g]����D4|zB��x�A;ԁ��.��K����~�na�߁.���{>����p�[�Ս��^r��$��}�K4�o��Wo��RI$��v��X|���ȍ~����;�g��6Ҿ���'w��\A|l�����^�S�W�wcb�%�9��u��]6�˵*�4�Y����r$/f~��F��NF;� ��=�h�Ir�b����\]$��=K|�K�
�n�eWFn%í��E��/`Y�M�RZTm>}��U��񆙨"vq-���1��)�RTKS_�2D�\�OC�����k������K��Mc	�z�I}A���tm
}i3WI���LC큨�~p2���~�����֣�ƌ��4~��y���;M����'
��/)����Q���g�3�&��~�'����G�zȴ��z��/=���x��'�&���)�(~�I�k�5�|���y���`�۪�����UW���Ѐp���A��l��Z�D���J��1��jw���C����3Z�v���×܇�&��ˢ�
���!�h�Hq9����ºS��YV�>�����|
��J�=14U���~2?Q�!T���R�jЯ�h��p�+��ޑ���q��� ��_>�X��_������z�L8yR���p�3���tg��# ���J\B,����P�p�`�'v�C�o�<�0��?L��>�%�/���|�W�l�t6���"�ם呂��ֱ���r�Q_
�M�%�"�ƵHF�If
����.��K����EAgk����}#В�=�z{�͐(�r
�:����(�
�+�J�N}I>��|�Wֵo�}�ͻ	�FFGǾs�[
�۶�n<�mˮ\�:��FG�]��?�-�H`�a=L���'�5���IdO+A�x���5�)���A���0s�ԝ��Я��םH�~��}~��k�
<l�%
w�D�-*�H{?%+��pp(��d�%��ߛT���8�f�Q�z�R��w����'~��眭���5��E&����>���>�P�s������t����-��מ+|����5��X-�#GKc�|�_��X�@,���8��w��f��bI<Z	j/T�(�U&~j*/$�5����%%p���.E��N���ڜ�wU��3V�xD+�'�CY��ᰦ>�S�)�� ⧏������%�
nGs�����%-�v���[ �����/PR=]��\���Bk�T�sY��W�ꍦe+��v��&����ਪ����ٕ%���t��q��_�/��{�"��QH��e��`b�70��.��W����ה�����z�Ç=p�5[�o��W�W?��� z���.�)~㫐�l7��[@�ł��ohZy֧���}��?��_��%F~��)&�2�3�a�q��'�s�MIl�89/@*�%���8�Qۣ�5�}E��=�0�P��[�ѿ;؍݉G��0�)�����5"�?���|��>0���N}����/���h�{����p�}�o<��6ަ]G�,x�/	/d�C#�`�RP����x��O� ���%p�q�c���g�83P=
4k��-jq�Y��Vn]�lK�X������µ���	� Jrk4�(�ڏz
6l9g3�]�ַ��+�$�:q�zf=ӟz&��V?3	��ٲ�=��מ+.��=�c�d=8�|��2r?,�'�|�����wLo����G8����RZj�xΑN�պ�S5x��tz}h�Vp�?�;�h��2�v�)���Oڅh,��<��y����v1��R�dExג�i!��	�'N�/�7��YR�D?�D͞M�"c7ʼ�{�\�?>�w@�A]�2*�>X��ݑx�"��6ظ�ܝ�)�ym���Q��yhA��"���j�y�ɕe�K�.���+�oO����~)A��Zb8|A��H���E�^��?D�Z/]t�O�/p��
���?�!���%?/��<~�OQ|G��-�+����� ��#MM�I��uS}�l�`݇m�lr��{'�$H��2��,��t�m�4��������b
�i:�A}be���=��j΂�H��Hϑ߯��9��I�Tb������俙��ʐ:��Ŕ�͑�٧\v�����¿��*Z56���A'm���B�|A?�9�Y�y���M?Ϥ�!^���O·�6Y�F:�f6�3�����!Бx:�U���藄/��~уEC`a②���=�ΨÁ�9�O$�H�2�')�#����k������疖��"����_�O4F\;i_%�d�3�~�������6�y���wg�4NY�"��4��c(�}ґ��E��h�m�� ^9õq5�߃�I,�BI�~�ǫ.�������6
�7��W�ك0ּ�Z�M��!+(x�D��R��oii��Z�y������x<�o�¾�zvU�c������E���!�բ�ῆGƇG�.ZT�o�ڲi���(�9�����1��p0{�ĎdDeFd~'
u��b�����R���O�����	v��-p7vj#�?Z�v�h�կ����@�T�]�U������
}�IV��lC	���C��q���M�i����]�9�h���`�T�bՖ�b���o��������N�6P�+��t/:u�WC�W6⑦�ϐ?*��5m�F��g��O�<
�[[�beEE��Ɓ�]+4U�
�kt�_U�]$bE�`O�����3�ru�T_�kSUIE%�06ģN�7	�U�Ď>�g��w4��c�dF�u#�L�c
�w�
��7��5?�v���{�ߏ�����v�T8._���
��K�U.w X��b��j�*��l�֪u�>o�Ga�[�p�,��U����}��gjDS?���o�QTS7�qQ��) �T,�(�(��x��#�6�6o���<R�.^��jYH�$��zZG_[��P�WYa)kD���
�E|��&��[�D�lǷG���1�Gx[S�����('�P�=ܺ.s���9������y�����%�
f-r�Z�*:�����ax��ˣ�W��W_����g���#��)�T�:�U᪎�*xɢ+����k���8p�p�ܻ��{Z�ii�i�W��&�����/7��:Bf3�5�ɽ`�h��/f�m+M^�|
ʐ/z!3%/B�-�`{y�=�N`��09›�����І�}��t��!���<̆��$x�x��u�ٌv�A�<̓��b~�`I���1��T#�w[�`ɿ#�uxXKr�y�E0�`�Ӽ�A�c9���m��9�dև�z����6	nc�I[s�kB�-&}nk�^cl���x졆Ѻ?UZ͕�pBm�Q\�W�����+*�M/js����a/�kSp(�!�H%x�s��!�Z�Q���`��|4���+�
�����Puy�&U�Y�^�g�
b����gM�L-�J�'��k�6l[�d��wt�7���u��Q0Đ8���=잃�/]ھ���ں�8��;�9p��Ʌ��ߙ^��c�w�����'�~��'X�}�h|tj��Y۠TT��	Fœ.�#:V���b�uT�f̈�H��n�D��&��\ׂfDs�}�_��C��H���+��vt^sK�>}��r�B�(�z��{Q�yfzI�?P_�*���.���;�3�+
\�o�Xcc]o$T�
⩫�s��Eꦏ�}i�6r쥡�$��Z�}G�kSR2��(K
�%��<��9~�;���6:���PR_%����6��*+?Z�h��M�p(��;��W���m=��L'{j�Ko�<���2�V��JB~O$R���3��as���&.��VT���E��JyY�¯3j�~�y�64�����:i�wШ�3<l�����55F����Fi@$	6�Ĭ��>i��u|����`�`կ�\DW��_�����4�l�]=�@��?������"u�R�nrj�Ww|��=�j�wK<������;�K}��j�,{�E4�Jn��ҙ/�h��a
F+#�{���x����V��L�iթ]*��X�:8��4��k
r�|�����=��6xpj��e!\�F\(�+D	�J9P\4	�g!L�R�G��k�<�K��fćJ|i�5�}K	q��md��`r��-������{m�-ӑ��^)�j�)����Yy[����Oݷc˽+��bS�eS;�5��uv7��D]u��b"��k1<��_�?L	ǥ��+��8q�-��C��ף��/%�3�?���dR?�x�"^�"�k��ꖸ��`������J��DAUl5������.�5tL��t�w���=#����&�7���m�-r�7w�w��hc�;?�� ��;�M-�:ҹ�ʞ���L���ջ˖����{����`��S���(�����uӉ����,8��+U$f���k_�(^� �
i�H�ߏ����C�Ʋ8R�{���H?'Gп�+���ϳW�ee"�tI�;�ʕ"���m_��#����Ŀ,X��j7��!$#�u@9��[�-��X��.�3/mƸ�ߗ�
�>˱�@в|�зm��Q�+˝��<�m]ӆV���É;G�����ri@"j��;{����b&O�fDC�m�<
R-�\6�س����mg;���W^�l�muM���6��������Zǂe��&〣:�y⎥��*?���P��ݝ=���N��k�KP��Y�R��,!OI�D�����@��E�rc�'¢���-��X�:��F��{�qϵ����†�M£��ک��==ޛ�M����@k�����c`�\�^�y�/���A�"j�E0HZ"TV���8�"���d'Nl�8>�uh���C����߅�/X�xԌ�?���#ř0����R�%�r�V�Y3͌&ǝ�7���Y6/y��
&�0�
��}�	����0l0��l|�}�3�0��UUK��y��ը����[o��_;A����&🂭ko��[!��?�Z��s뺺7�܃�=H�q�Mf'`�E3�����B ����B$�	���_���S�q�g$}�,��3���:���KeT)��٭�vL�\^�ƠU��]'>��%R����em�!�P�������3����0�
�·ѧ[x�u@u0(�^/����?<&P,ǟ?������\��o��o7��h|���¾=��c��u�į(wHև���<�E�(�t=�0z�)B�0���6�:ybn�r����v�����ɽ�=���NN�F���T�Pyf�3����y�Z&��҇w������~�e_�s�Į����v��-&n��6>�k�ی�F�n ��E�R���HA"ư�:M�'�bd�yI��?�C�ܱ鎩[&f�MCŖD�8�6�mV����j���/;�;��[?������h_�GW��wO#����h����!��8n�(�`�z/(��Zd!>�_�k���v3�t@=��Z���ϝ����� ��rmc�SýE�Q�uh�퓿��7
��_T۴�z��xj�J�i�
R�1�P;��p��C����PN(x%�����;�z��jy5���?ɭv��ؾi����h�61����V�^Vy`a�,!�E�m$���7ߤ"�}��@%G}@�2�Q7�����j!#����ðHc�,O��w\��5:�<������Nץڞ���>��}�"�uH^�?��w�gә�oM��[
���qk-S9���,�
��&!�h9HDuQ��;�uj��3Ԣ��(�jof���+W��
��%܊'��s�Tۖ����gg�U��M�q�uz�1T
>�IV���s\�.Z�E�.<#�����o,��a��-�{ 
�)n Y������W����C�@��Q��X{2(cZ-10��ֽ�?�C<W��.��N�3��Q�6��B���%Qgj� ��1:����-�u׸5j2<㷃���_��J�K�F6�����nY��/p��$S�͒���`�2��6���!�Z
8rd��2C>Z\�,����x�h4�������nAg,���x17�m�םߑ�$�"c�T�|vr������p�Iih��d����YK������-mA{����9'��}#�B��dG�*�	�y�1��4�Xr#���!)�!5�]8ԑ�N�ZTh����w��)�c�Mc�&��8�h�C�LAK��牧�֮/c��KI�k�&>��Vo���"���',��ןT͎Z�=O��W]A�*�'+Ֆl��M��o����nX��\�h��D����Ba��IG����?s���g%��Kd$�]�q��s��
��\2�w��2�ߺ�7��!�/�J
(s)TBU]�gN ��X�F\1�C�0��
�D���%��@`Qm�1��1
�b|[4��zvxθy��h��}���l\ ��>��]c�k�Y��R#�C��F[z�W���q�5NL
�t*�c��8�#Sr����OƟ�	z��G�5�
�_%�:�$�8��'Oc[�����^Lm�_�]��������O|�]�d�_�L�rގ۱���#�=5iK"��q�L-��a�/_y�������=3�K�u-��-g�Y9{��:p�2��
�?@Y(�A2�����q����,�9���Z�v�dm��+}e��у��Z*�P$T1ll�ꡫ��^��X��#�?h;���A�n��������O�_�iǚ]����69H��[C=nQ$o��F��+��5��߱����ή�r�30�_����T�����tw�d`�����}���o�E�߹s'���ܖ�Ո�6\i�}�-��o�U�g �&9�yX/���@�璄q�QWV�X5kʰ+SS����U5�������L���u9���������+Q�-��}K[��y���ы��=ea��m/E͎Lv�����zuFkP s�C��acSav�G�[�4ʒ\}v��UUT���o�a�?2���j��ƙ��8�O��s�M\��p�x�e����4Y�N�+�W���	�+jU�Fo3�6��bjMV�5�����"�Q?���H�8E��C��O�N�K�64~ס�ִ}b66�阏,DSs��D���V
��1��3��M� �M�3~"�8�C~�p������ðe"��
]E@���,"EF����)t�
��O�ww'iKʞ)d� .�ē�u6/��X%,9�����8LU�t�M;״���J�8Kp�f�j��
��4;\PMJ�ڙ�H;�F��1�����a�'g��g��~J&B�D2.���T��\y쨊�+U`{C�dr~~rjnn
�l��������^9�%vB�����Mq��q\��;δ�Ri�R��fC�����w��W�l,S��䅁����!���r0S��A���I1O=ā�tӺ�.���N��FIV҇NL3"t���y�EF{�$����u��H&��#�N
GLf�V'��J_�)L/�;9�?�tfm��os��ʑP�gB�I�I��)��F.�u��igNg��x?W��ƩTw{�#���_oWkL;��X#-G���
�r��/\�`���s����P�R��s��p�ob�M�UW$�3w��p����D��;�oH��HnB� X����cZ����':�fLG����R���C����1������f�?��5�x��t���.'���Em7Rl&�2���-a�w���֖3�m�E�4u�t�����f��h�]����U��5����;c\ p�Iٝ	/
�:},�Q&�O�sf_9�?�&}e�BB�s9���8�W��lT*���RH�u��R���s�&�˩c�q���M�t��0i�1���%�sjw�ęY��Ͳ^�ʝ�t:�\�Į.�^�{�*�sl�P���w���ZG8�W�™���;r���*d��[[��dj���i�F�����`�*�!��,��JeC��$�v-P�F.I�u��*1�L�j�Ɋ��Bh�-l��.A^��/2S^og�x�S�~��&���,u��Z�)�˹XTo	�)��-���)�Ϯ4�O˘�V��er��H6�ɨh�á��`��>Ns���ǘ/����wٮ�R�]6�Jъ@��1+�}dn)ꩶe}R��a�
}�`�+ա��ҟTr���԰&�̔��x<�ge��b]�^ԑ���
;��ώ�_{���.��w��@��mP^+���b�ڽ�v��ٰ�-�]b�ـ�a�"y�n~'m,�B&w.��	�4_$s-sӺ8��/�!Q���`�hHf�l�K�٭����$�×�LE�(����܊��A�q���S�B-�o��$�=U��H,wl��1��b=�Z7-|t��;vo�8)�4�I
��q�n܇P!JX����F[<T�Vn��-���pg�ӣB;�g�,���z�݉����]��r]�Wf��Έ�(��
��W^����n+��Gr��ʗ���h������MU���aY=Y9����^(��J�-�匮u_��ۮ��XL�W�7�ڗ��"=^����B'V0<7��6Q���W�Q!DV¦O1�%��`<ќ�^�c�Sj�t�h�h�W"�{Ɉ2cX��HRm	��y�J�ϥ5�S(�rџ􀷕��֠�earc�d0�VAnv(b��d.��S���vu0�+h{�VV�ǝ���c8V�5�4L2*Y��1�`����$�:�DXcj���r���9 o���c��#�ņ}#�hg"���*��S1}~��DB���w
����h��IĂ�٣=�m �X}��V��5�
�yc󠻻��ۘ@%�.����CGޟS1;��1�"�m����ҨL��,�[�Z�r�ѥ|���{`�-׳袭���o�یVt;��=i��{�F�:���Y������
�e��6:���(�5F	/,Du�h^,(Ksґ�H̒�ړWg�ܗ�+��+A��r�<���:����(=��HOxS�	��l!ݒ�<WEpG�5r�=@�f6�)���p�fSӦ�92p�Z��SƎ��GG��Z��'HB�h�w�؉����.ЭJ������Nd���]���趡�{��,���h��>Ӥ�X ��@�w��+l���ѝ����̅�@؅d�epOc��Jh)����:p�7U��
�P�yy�)1�S��� I���duv�7�c���}�����n�lܘ}��!�s�������B���R(��Z��ׇ������AI�y�a����R"�E�,nl��
��P�GfW��뚉ѫ����ꑹtr�h�ҍ��c�M��uL����x�
=��G߅�챾�cs�����e�ޞя��@4̋~�zRG\1�Vt�M��"k���DsmJ�B<��/��'�qȥTCDLLj��[	��E�	/��nuNG���}S[c�;j'��\w���-�Pr_!��Ҟ�bf<�w�|��*���k�Ȳv�hpbG��`/n�+=��KG��L�d��� ��H$?1ݭ֕ڢ�xxw1848�N�g
����|e�DI�Ο#㓱�4���9��`nK�����3Dm�A�6���]н�c$��pÓ��4����E��
ς��2]��wJd���9R�k:#"e���|��P�Dcm	�>G�8��r(�;8������lzAxyqS��k)*�L$���D/�N֫�x��}[���ʏ������\k�;;#W��^!"WL�\y�)��/DK�Aؼ�!}�s܆�Ţe�$����
��'J5��ZT]XW�	z�sQ���D�Z��<!F�8�	�>���Za�Pj�Z�Ls�L%���
��KgO����c�;��z�ȷ��ԷU���T#z���:�Η]�L�ݛ�=N�]��+Z[��I�M��x��0P�\���ӎ��v�� ���:�ZAZ�=�m^�خs����,$!
�"�6HmNS��=w��IF!�u(�]c�H89u�Ӑq&�c�|l�/��%�J��&�m,R]��b��5�kњ��W�T��hOZ��$G �C��Yq��0�p
뻯A�	�����D$��Њ���I�,�0la��AB&8"Y��w�N���e
�|ڠ�8�Ee��|�V�9�vݎP@mP�g�i����`d(�fZF3|��ӧ�U��R���l�����KP�=P����d������T�]�d��R�X�zg1`u�t��ױ26��괆m�p8f��!��HY]Z[�q�Ra�6�E\}Y[ �slj�՚�Iy��}�qEk��b���	�����T��ױ��#�c�n�����
���!��k`�h�>CL��S��_�5pA4�;�i��xj���I�.|a��^�]��Z�k'#'6�l#ې�Я�D��W)��L��}�F�Z[fWV7w�Ϝ=���On[\$�ZY���n]�����R����k����c뇉er���xE?�*ɨ�E^
x�n�OgsL�͇������%��/�v��������'���+ҥB�xJޞ����:�@�v�0
E��1�M@�/r�F�%���"~I<y�2��n�?��N@��9�x��	6�#7�vh��
��ak�hs��z&a닄�M�m۶cs��=��R@�]JE��9X�]�d�\:�Vf�ڬͪ3��<�z�ާ)
�2���G�E��Hd+�D*��9:�p5�R���=@�r��]w�mݝ7��d�����Rqw�bQ"�ٞE<�3!��iX�Z���!��`�g����$p}��paI��qhq=�c��O
@s���Sý��K����׷�@�S΍��_u�c	��ԯ@���ka�o�`�x���>	�J�N�Up
�� x
k�
5yӾ�����C���[t �m�zJ�B$�x꿯�t^0}t,�-�yq��_������U~B��޵�pff�������G+Oa�T�GcA�b,�v��_'~��~�"qi�rG�\0/��P���=����κu4���t{��{3ޡ�q�ܹ#;�Z\�k��ys���ݣ�]0�s֖� ���L�H �mKu�4�7�I����{C3��Uj����=Im���Z
����}��2: ]�tO�U�sY�&���`Y�Nk�>�#US��/��$ӼTnw)�~]˶�R���Vɨ�f�E�6����Ȉ�o� �v{��s�dR-�<���
���fC]���$�IeM�o���8-���M���J�Yt�[�x�� �.Wgx�l@F�y9���SF�$���P#��=�%�~һȋ|dC�7�A�a3j�i]�)��52X]��N��,ϝ��[�`6䦘�cq4b��F���Bk�4n#Tn=��H�J�aU h�N�\^�:�јn��^rY�A���&���L^ij�w��d�t:�1y�Bbz1��o����7���&~��I
捤��	M�Em~�*��5ќ�ik-�'Kn����2�����\֜36�=�|
o�!_2R�d�$^b�B��eE	����M~M��3]�66 �@�i˱�V����f�ѕ�-�cX�΢Ч�*�ϣ���z]i.%��xm��Ri����6��cƈ":y��䁼1�U2���R��GmQ0>m�����V�2��tźrf�N��2��A�[k>(%��D�B|�mp˜=���)�	F��>P�9�-9�%9|n�p�2���x�mf��gY��c���z{.���M����)ȱ׉��
e��DH
ڑ6�h���?Ę%!�8W�D0�T��q��瓗��	�Tlye�R�h��oqOmI���h�-������7��p���{�l�����㈍�"s���T�y�#;2��\�b�c�ndGd뻥!���)Vv��S�ާ|�^
�M�!LH5K=p:���(ڣ�l_L��Ѻ�t�+�֚p~>!cBv�����HL�(�N�i5�]9�7�o����F)�xu�o����i�R�-m�J]>��*�=Ė#��bT�^�����,�=,
�F�Ae2�JcK�B��)���XJ��K�~c�;�'t��ܨ�T`t
{9A�DR�\�-,X1-j䊵�@�0�p?Rr��Rz��u�<�7��҆�A���>��@G���e��˦s�d��ZZȸ��=���Ţͫ�f㼉��h�-7�?���K�L�P|���m���5�ᤳ4ե
Y�%�e���u�R�!��6�`��{���`�U����ԨS�bn(�%��5_�@	��\���#$<��x����X�[+]Tƥ1�<dy�rJ�_�S�J*����"U��A�¤:R5s�(�Y��c�@
r�]����s�!������@W@u���nu��WFAP��K�`��ٻ�4����!-�D{�3��ǰ4yE�P.�c#I�������S���
R���XH)��2kkg�3�ε��i:]�5��cR[:�[�j�¶`<�ѧ�i^n��p�}�w�L��:�oL��r���;<9�W5\���&6,j��s�﹤:w�~�JU�*T-c��.����Pe�_�6�ӻ�m�3UZ���T�P�4���̭-a����s�TH��e���=Y�ui��P�ծ��?_��;d_��L��P�Z�l��t�6���fӗisM�G���$��q�T�a,�j���f"&��3j)o̮sm*�6�ײ�;⊙]�K)��L��y��ԨL2s80n�?�A8	��Q%���g�GǸJ(\�(�"��}�j^:D����Ů[{Bۘ�_M�&|�¥�V��®ؐ+��\���Ed*��"���}�}�Y��g�(�-]~���vYn��,
�l��)���	���	�)P`�`�xB��ހ�⚹4�T�����_:V��󪜽�@�,S���vz3�`ş�}�P�&�(Lp���M���}�-����y�B>l�iD�&$>S�Ëlkf�di昙&�(���ǸG>
�<p��MI����{���!�<C
ĺ^M�����\���!�2�c|X�$�@DB���[07���2������xf�ŗ�ĝ���������ȟ~�#�T��t��}O?M|o-�p����g�>!�H<�i]��KL����>����a�}�!�+�])!ɞ�;����ECv�@��Jȅq*��ʤJ�v���+gKlj�ڤ2+mg�LE���Ftn%�x�宊T�S���
�\�WF� ���R���(ExD�#A �dC�oL16F�"[7$��XB��I�p�(�QE���(�ɳn�}^��/^B��������-�0�>�{Xiw��?8g�F��.�&�
(�^o��@\�w�M�2��������s}��ᑶc��_��k�E�n�&I�'�a�S��@�9r�H܎_��"�v8�6M��D�}>ʖ$	��څg���
?�1�ֈ�"����,����#�π����'�[����y�9iXݨ\�t�s��f����w��?pne�.�.��x��T��#`
lc���=|�f�3�>|��C*�ц
N�9����8�$|�ĩ�#�'�C�ei�8���c=�Xja����bN9�,||���h�q.Q�6#O�Sw6A�d�%��C�Z���_���=���l8�9�r���O��}�0�}�p�k���ݶ�E�w+�]��X��v-?�[Y�=(� �v�ȼc�v�2pWu���U�����Ö���z��-ܓ��� Ŗ*e�=h5)�l��`W)�k�=�r��um�c�ᬷ-��<w�h�M[���/�󤅑�|�/8�,��$�p�<��o��E�/�~�=!O2�-!�-
9�lv���N�#��vY���[���tt��}Ee�t2&�'�����fC�2"��*&��i�*���q�n4#J���-.�M��y�6���<s�S�A|@L��@���Z<�@�]BX�^̀Gи��m�ش��h�1F�_9�E��I�sю��O]H:���%��wu᝛(eA��Sĥk�z�{��L]�:�=�P�,�a†(	����'2OP"=���Ov�z�u���Y�Wv�M\/X��趃���T�"�?32��;��:���@�Sh��:]�؆�f��(��`�<4�u��I�O�h�n=>u�������h�}����/�B�ߖ˨'�:��{&S]#7�D�{�G�F�S��ip���Xꎺքx���*?$�rI҆� ��.9&����H�l΂p�U�"�`kbP=%oÖ��\��\�D}Xb4FdI��$ѓ	G,VQe8�xz�RB͆D�����s��͇=��P��`�꣕�_�׫�J���\����]�JI���d�$oR�*�=��H��V�ʯ�:�ܞvJeɾ �+ل?������
�Qiph����6�?�Ok����##F�!h$���3-Ѱ7b��"өh��"n�GͲ&Fg �^�z�R���P�x�J��l�z(�e�@V]Z�}e?�
a�]�@��k̺H���!)�2c�J��WN9\*�7��v�";������!��$�_c2 M�E���f��f�--��/�^���
	�$E�nq��i�`rڽ�rd��Y�M6.��[�m��Ν`y��RZ5�l�CZUA�ћX��IGb��]�3X�FFcJ��Z��Q�	A��O~�8xr�gk�"�7�f���-��$��y���cγX���E���y�m�L�D��8�{�!�J�^�\��/缾��N��^��q���c�܀���.�X�{�?���^r����򺷕n�ۥ�޵MJ���V�XR��}���U��,~���^�-l�}����\@E�?緄^~9�y�C��&~j����g��f���U�Ɍ�'_,��_b)�a���a{-��[$8c�Ce�>C�7�Q�˾I�� �K������y�ȡ�]8|J���&���^�)J1���+�s#�(K�U[�_T��t9�ښME\�����K�ܡ�fM���YiV�2[��Z}'�R��u��$k�H��*��E�C���[d�xӻ~]��d�����$�����HDp�3v�����L~�<p��p�@I������Yʌ6u�DS���5z�����m��:"��x�9�QfW��/jehX��9�Q�@��Z��
���(�F�̶Z�W6`���i���2��q����o7�쭕�1�'��]
�E�>3LmP�3RW��&(�����P3�Z�.��;P������g���p4@��ϠH4?��gd8
�J��6���$.�L����V5��y�߄�m"X��X�&���F���@k�������M2����ھ;NR�)��?���+�a���K��k��HL��L¯��q����V�d�ڸO��<�!1�����pM��4��״�)q_��r�'�('��X?o���~��-9����4{�:�K�'��B;؋��$iI��gS�ɴdY��+%7K>,��g%_��OOPM׹�x��%������^�i�"j�Ѫ���#�oA0��KP�_	�7��ո7Ӹ��3ܻ��6��im�@8�,e�_Կ�6.�w�������O/�>��F�bL����g��4]�C�g�g�>	@���L�+��iBR_�V-_�ޟ�?��[�]����-	X_���V���G5��~�F�P��Y��d���LT�~�
��l�C<"�ȗ�~��U0f�U[A�T�� :˯� `~��W?G����/+\�jpe����[o_{���.A�}s������5��_c�ߛ#Q4ǿ(lD���/�>/��h-*���3��3(�D��%$\����Q952E�Ƅ7�z�ې,�\O����"o�$�x�F(�
:��{�
G�b�a���x�d�AJ~gOW��g5�TFG}~{�H��n��R~S�giCdx��:��%&c)y��H��n`3t3���>8������
�
�F6��9��Oirh^��w�~zpnz��8M�y�ivB����3�эn��z���1ST��[�aZ�L�-Q�؉���U��MI{(%E��~�s�g���	���9�f��U�6�lj2#��B#B�{X&�/�w���`�ga����Ht�^�5�����!�!F�_��(�P%$�*�q�(��ֆ����'�	���	�/_�U��S½\/�c�߅'��a���-�N	�(wL�?�	�r�Myr�O�ul>�x��<�o�3
�G��_����·`
@�}2�b7|u�|U�.n?�W|�˽Dq�w�)����O���1��Y����������n�P;G���q�j���(�Ek�*�����`��1�L?0��9�L,_��w��Z��o#^(����$[����}���ڻ�˝wun/Hjs]%kg�}Mt���4a�1T�{ۜ-��9㪔��v��R��e/�/_�c��
I�g�g���ۉc�B+��3xL��by�FQ�}�:�������f�7��o����H-��R��~��#���WE4����?m�;�|�>?u��Z�QSw�!����<?���Z�[����JM�S��g�X�m�.眘
�Oϡ�� ˚�C6<)����G�Z��@��`���Uݲ��AEFw��'���2�I{��Kt&�̨����!�?��m�Pjg�B
��hr.��ƒ���|
�jq!` �<qrb�9lV�:��}��S^GP�=�<�6I�R��Z޾Em�JI�*�Nh�ZF+h;��w� &�@�Wn'��/c.:[����n�e[H�(�S�.����- �,'U�T�)<_�5
;���Q���\�!����Z�L�n_(�w��
���J�F�۾�g��`5�
j�P�jҪ�V"�^h���-�Mg�fPY{�
)9o����ק�ż�n��w-�%��B�m��
(��ƅ�b<=�)�@�c^��È�.�_�1{�Sw�k����4���`�|u	�v�tO9�H�ƒ�C��2��t{�W]��k��������7o�9|��]#��m�ҝ8n�Ŀ<�G������Z��(p�}I@ܩ�ls�������;&��2�I�����w;�����s�>�`�o�b��k�7��6'(NOlc-���5�#����F�Q�id���Wi=��Y>��^�b��ܖ)��4)�5�3Y��W�ܴ��)80�Wm-�t���Q�D5�����
�"t����ל=t��f�����L�Z�Z�^���ګo�x��[�N��T�gJ�,�ry�T���n��CiO������]~��?}t
>4p��ګb��u��<�˝ɽI�C��9F/F�
lJ�Ikv��@+�r����������nJ�M	x�5�w���\�@���}*�L�W��f�C��I�9���r�^�ċ(��AH`��F(�E����� &���HǦ�3��tE���26�}�-tEh�U�U�r�\t4���T�u�g��AE���P9���j�R�a.a�Q�9����S����׽�O�SQ�N=��ȷ��U�
��…��~��fLL�k|�c�žv�s�}�	iG�=�P
+��%>d@~=!V%����� �<���;괈�lC �S�+Up�Z)k���Rv�R�l�7��#��C��?��)�R%��jk1V(����7�U�Sn	��)�l���c7�X�q�YV�*q�-\2��̇��
��VqyI��"%���_dyW['�g@>1�ºwºQ~63
�s��v=�"�-p?]	�iq[�`P	�	�$*l���Oz�Cd����ë�Gd��X�X�g�Z#�u�.�\��@���} �ؗ8�+�3{�z� �9��~�'�\�&���4�w�
��"�X�fo�Pp�6G��k�J����~��a�@�����RL~����N��p�1�ϋ`?U(�M��9�`l��0����|q�'��'Y�k!a�t`A� 
=+�e(��d�ͥ�q�=��k`�:��
�=#�g{��hͱ��$1ƍ��0���~�}z�C�׽��C�ݏ�wφ�":�O܉�P�2�voq�����z}��q8g��z�0	����J>����@�G��X.���`"�b����6��6)����#��ak/>�(j����O�qI��=.�-Q,ŝ	��OF�yK
{�^�R���P&�(�t�+��c) ��E8��pLlS��ӂB�Ռ�Sk�.�@��h\�j��� ��HjjB!���hL�1��I�Z�;0�&x�1|�a����<7���M'::�������Չ��Css�����q�X�����sK�;�C�
ùz��~�ĵ'q���,�JI6��æ�#	�kT[^ܮ�r.�gf}��p�
���D�a��jh\�ƣ������l�ݺQ�$�"������;d�P,�f�	qT.H�HK����o�����Q�g�z���P��}��Ag�Ō
m���Sh��]9�s&wm��9�������B���5�y%&��=�:��\a�ݾ������C�OpV�;B���i���Z�YE9(�1�b6�n/#�wl�l�A^Xb\˻C:烺T�~b
njߚ���Ny�I�b�a塨�b�������T#وl�7	B\���HW�Z��C]�p<L*�>��KF��pKK8K�����;@�
�
�w2���c����9,��au(�p:\���r��}l$�X�v�J��K�a�_��l��9G��8���:t�	�y)�e�M�@<�IO=D�߁����Y���j���w/��*n�c��g�&F�:��a8�F���Ƶ"��L5|�pk&�J���Җd��d���B��lq1�j-LG#�xN��:�#$ND�1��X%��B)gjpB�=C�|�Y
����(�(�o����X
������ћ�
��d�k9�|\��#��(RnH�XdC�J8a�m��
+Wj۴jܤ��ϋ���rY�b=�z>�!��N� /�$Φ�l�<b.Bp~��C~��r)Lv�Өt��j��Sw�ݦ>�k��2�w�֛���i��َ�?
�6�ߋ���G�����|���Y��*e=���O�IOSSJ��l�y��	\$�81�c���>o~��e���t������#V��f3����;�6��.����s��X��ڿ
o�/J�?�9@Y7hP�����k�"�۸'�q�Q%t��UsVw��j5%j�
�������W���/�М-��־�^�#h��+����c���D����
_>��P�9e��R�3U{c�i���QS�!(�A��kċ���e��������p�������p�K�U1:k���J�@[(g��Jc3�C:��`k=Y�
�9�����\ؔ�9Z�N֣Qr��㵦m֒���ҩ�����_��P��i�5K�u�q������6�B���V
eP�|�m��T�8gЪgTZ����浕������+�'�Y�=�%Maά��
gG�Y��|�n}4��
8!<h��p5�~��7��b
|��7����C0
o���O}΄���`
ACG����RR��u�I
��dD2.���KVP��Y.�A��9d�<
�������Lln�aX�0��ƛ�(���I T
�����M�<�/_�^{�xQ���~)�$�R���%��r�&�at:}41���ŵG����!~�`�XMv��q����*5�m,vU,vS,6��QZyL��l��M��it�RIúj!����⒰��cN\��fL�x����he�'#_}Ǻ]�C�	��g~&C���W�.�h{���ϥ�~w9���,���ŵ��W�~Sx�s��ո��u���B�<+�����3�J��յd3-!HQ�o0Cx}qn8�CF�3[�u�Pmw;-���Z�`�~���/ m�����x`?n�t�#Z���E�����g�'f	�[2�␉S'�Un�|��6�8~4Nrn[!�o'԰��(q�G��B��I����%�;��*T����ATm�K�9,��^g-ϛ$EP8/����ڔBd����nfm6�l�\%\~ <�dLNt���
�4�������*��]�Nd��n�[q/�B�O�t~�O�;��
���,�Y<���zD=��)6y
�:(P�Yd�ė�(1�ba��Ę����@��x��v�)5&��Bbj̸#�J�0��DJ[%�����?�M3[O�?=�Ӄ4�'Y6E���3<�aA�R
T���5���Կ�����L��J=�ds�G�	��O4�Lo����*E��k%�Z�\�P@���R���Ȥ����R��+���IP��F��Je����R.#	��0j�U�XU*�+����.J��R
���hTrS��T��!��������Z��dF�
h�F.&��d*��5�0m��
R)�5pV����3Z%[0���H@)��4r��t����@�Sj���Q��Nu���d��*f4kuj��(x�J�V�yQ�MZ�m"�*B�2 �TJ���H�V�D��)^�RJ�B���5r#�']�J��Q*I(����
)%	�A/�5���HB5P����
�~x%q���v&���ˈ��
|1�۠352s�s�NgD2C�����ul-�L
��p��f6��&���,�kz�՚�̮kf��Fh����v~ڠ�lc�	}o*��Y�ń|L̔ޣ~���Ҟ���z@�i���q8Q����oᜰ�ݜ~�t�$#�3��_<�\.���bۃ�;�(���/����I&���.���+��{���vl�(Y�=�u<q�+��%ea?�X�	������wxT�����Nɚ�����'P�va���yɓ�� ��t��zp"t�#��-��[�e~u&���[@ש���O1dZ��T�]�4ɤ�:_�u��:K_=�$|�s���*@���^��'Q�S*s��1����J~��hky�v��ĺ�"X�I���%�7򀞞/��g�~Xnm-7rb�}���]u��ȵ	p5?;-�&���XS��\��ٳ3d�\���;���+|z.��{g#�S�9|��Ԥ��P�Y��4��AN��7l�w�5g�tM կ�8���\��p��r�1�,�@+�+��:݅���6�������h��Ȗ^@�[7�+�s�\��|�K=
�F �)��v�cr���~��n��"��r�h�2'��Y��1�|��D���~O,�=�3|�aejd�-x����fgr��lv:Ƿp\Ϸr\��f�����o<�y��K�Mp�Q��ĜY��J~%9��+w�Q]�ڥs*��W���zm�+���߅\���k�4b;9��1��?�׈{%J�7R<=N���YX{��D˶�U�^%��
��Y^�5���̠�o$A���2<C�P�zf���^��)(���q��O�{%��X,�`ђ9��1�0.�7O?��J\)�?	�"}'K�HX��KT�m����&=������~Z���-�x�xG��ge�|ߝF&	J���!�Ά�laq���ʽ��xz�p��H�h<��m�����*c)r�6W6�4��XϦ�@>֑r��Y��xS g)�&�ٜ��V�A�O�q���H/�NK�׿�s$���({|�-���|�g6�+�������$�lJ�zV�Ur���8G�{]_���n}W.�W�\��
pޯxxt�{�����=V�����N���%��j�$O��i �b9��}�+w��uM���?g| cVw��vz�mT�t����aM�������h��P).��%Q)�K,eg�&��q�����������B�
��я$1����4O��	�ډq�P��-�G{��!�[���	����d6��u����is8��l��›{.��2tN<4{��@�rk鼛��<s�~0�A�U����u�~J#�.�5���r῁F&�Pi���n� 7h�Z-زw�Y�[m��ӷ�>#>%�ǭ�l���'�梘��j��%���#�N���� CmS8u]��>u����X��~)��S"\�J�\鍋J#W�Ixe`�U�6Ε~Y���ۃ� �^DحYa��>�K�c6�'3��W~=ۓ��x�E��D|^�w��D}
�f$�L�>;�,��߹�;��_�Z;πe0�8���=�AX�JfeE����왐��F�/,1�eB�q�^�9����c��e^����iQ�M�Ze%��k*���+��#k�2,܄�E��� ��k��e���F}`�2,VP3~�^�+l��M�����<�)=i���p��Ν�N�:�`�~$��:�5��?�jj���Q]]�RCo!�����;%����a���)��CsǕN�^�)����e��zy)0���7�"�	Q#�)�T	����O[|���|к�z�$}םƓ'����?���^����}7�u
���Y݇�ܡ<��W�qZO'�$8Ե1�zjmpE}|�K����n�/p�rL=�<N�f.����7���$���n�_O>��w����qK%L#�J�n�*5w�w��SD��,�WuK�;)W,�Y�T���YZ��F��p޽�����^{N������>tY�X_���}dk��G�6Q{�Ѻ6�W��	J����(1��@;hz�~�Mz�@�&�������b�/.(	��Eg�\P�#,�#��Jr���  \~!������v����,�a~
�f��Snh���P����ζD�Sx��+r�х�t�n�gP����;�>�Y��@5�6*רj����.ak��߬ޘe���[�	_�39�
�?��/�?73Q�𙒪(5$��<�"�{�U�;��> W���}טp�(�J�F����|����}�/�{��	����o�������_�aJl���y�B#�`ϭ'�8֯U�`?Y�t}�8���P���rМz
m#dN��6���,��{{��Agdg�w��eKu�=5��S�Tν��-��L�S��&�%>�:���F�|��n�3�j����G۵����+��bh�sg2K���|�R�Im�x&[v�s[�5̘\��7�if�7�6��^�?�0L���8l�l1^�!��)N�'��&M<�+�����
��IQ�~J�I��L�:��� '�uB�M\�D�����z\Ȑ�饇>z���֥�KǏ��;Fwh��o߽c�3_<�>��s��|l�k}'n^�馥]�CC;��]��]cʕ�{zw�.���j��O�<�^��lN��Ft�I�}l�7�?���������^K�z�duY]V/bɽ[���e{�,,�v)˒	�= $$@B
��P	<�@^h	$�4H!�?s�,o��{ג,ifΜi�9�;w�yǝ{�<�&�u���1�0P�w�]z���1��Doo"��9~��E��fț�H��22���XWRS�@��t�9�?
�74U�9i��i���E������mnq�7��ʹ:Sɮ`�+���:���Ӟ�z2������k<Jw��P�
����җ'T~�s��
�v6����ig��CoV�u���yCL�����u!�Y�a���Ըbm[o��-�n�P$$򛎞�r��W�/�8z�\�PT�޾i˽SM�F����`����l��7��>g�Q�+��Ʀ�9��i��dG�Q�RԵ��7��Uj{y���D����OnTko��N�qr~���J�\q�Z���``���
���,�T�Qҥ���+����P6���48���C��������Vi(c�I�/]7;���9�&>�s�uo��]U7�/K;@X���`�AS��J�T�u�=g�{��lk�ɫZ�^o��Jqʺ&��5zw������pn�3��4���_H���0�?t�0������i��n�,"]�ȅ5"�r\����<5VU�x���H#��}��֦���!q�z�ݔ/�z� ���Z��\���g��R�s&}���IJz=�}vzz��I�q�"�t^�e�0���u�[�b(wK�߿R��-`}"�t;�nݺ�
�f�K�SB3Z?cg!����Ө�����ZC�>$O��<�Q��|�A<sbn��&�Nw�OWWOuvLy�¦�&���ޥ(�^�ed��MÇ3�C##��0���x6P��jQ�>� h��\�֧�/�]��]�9��� 8���L�:�R@0��e�7��˾�g��/,�ϯ[G��ϰ��Ȫi�sY�A2���$�"g&l�&�b|ߛ��A�nϽn��I�Hp��h'�M�~q�<U!t�(����s8�
�Dg|h$(yv�d)K�q�Q��:��?��'[�]v�g20�&.cZ��mC=��^w��_��ז��V�jb�����N�e8�wW�90O����j`p�	�s��^�����]@����/'8����vžT&���<I܅�٨�dp
��
6# �(�<����ܫ�g�ej.��p��
�YD}��N�T_�i�E�g���[�dO���v$��1���I��FM^̂��{ 0������Z�����1�__'��S��M����u�լ����Y�]��_y�����dJ#�&!�
��M���]���jC�_�su�g_��%�����>��+���3d(
�X�.�sgk����G�♻������d�6R�M�⓷�ře*�U�m����k��JO���WM��z���a����8�'���P��D�-Va��"`��Ӊ�W��4�F��Q��p|�� Ԃ��{o��?�S7��D�@�����y$X>�}{� V�Ƙ\�@�\ �0�Չ�bUw��QmR[�+7�J��R�	������V�l�Κ����d5�1���bLG�4&9�d��(�!�&t��)����2���TWKW��h����s�(�I�-v&�2L,d�輣IR�<���d`�E12
��K��`���c�,E@�R2��+ �u���P��~A�ϗ�����I|/)C���I*�V��L|/�\~�PǪZ�Ff��5�.�ٮ����������{���;s�5Q�I�K2H�Y�	:i��]��B��`g��=D�t�R�G;��寘:M�!>��s�o��t�~p%��?� �:�k�[sJƑ�5)Lؚ�J%_`��6|�JΜ2U���<����/��~���	d�l�?�������/�f%E1} �I(����ӷ	��uu[ȉ�HHz��/��$�lŰ�бnPiNS��M��ن��,T����8s��k̷�W�wFY���vúZ����]KG�w�ƥk�:ᙈ���
����?�ÿ�~���k*@8��*�>�j�V�^J�G2��Y�
ImbCX �*VF�<IY�R?���'��5P]��9�����t�#3z�Lv�
���r�`5b0t�^)vF�T�]jwn���O�;�l���+I��Nw/r^����l�n�k���"<q�*����_���c��y�F�J<�K=�b�>4�W^޽>��������ܨ�R��hT����J�ޘ�l��
�ˆ&�l��ڴn񦲒|@���b.cg�vF�12<��U�G�l|3��Yp�G���
��>�
���/g�c���q9���&�]�o2c<��U�;�?0�	�i]��.�E�kڅ#X�E��p�4��Խ�^z����U�7Ky[��kW��H=�.�P:� Yy�B=�.BZ�K)�~���k�H㞎��Ց�t0ՙ��&�$�m���x[GG��,���h�����|���Vxq#�p싅o��
�q��1�G.(Ӆ�������~��$_�p^U�G�b��y%���J4��;��l����ߣ�M���Q'x�!�jhH&��:�@ �b�y�	�8�K�g7���ϟS��g�&�n
Tj�o����kL�ȶ��A��C&���9�;N�`���P��e0ʖ��x�“�a^0dTz2|�u�������V�nх�ږeF��3%,Ք����������m����^�����D��7���:�L��D'�&x����@�P�$#IL�pfɑ��~���*�y��[�_��['O2xK�G����MXwn䳝ʝ��S�3�	�I{s�z��?�����1?��t�ck@�g���D��'�����1������[|8@<�F�B�#t$���2821
���B�+'��S�ԩd�T:}*Q�&\S]=�ݮ��v�ڷ��=<��=2L�>��e���d��j��d�m�`KkPZU��	��=̴� ��Ẇ0��c��4���⍾�md��qp9���yH�dȷz
X|�aO���z��ɘ��`�v�4ٿJ2����_�喣ߡ�2�@�-+��R>�������Y��ʸ�����
��!ʯ����`�;��Ý��	��
�����5~�%b��g���
Z�R-T�wAz�!c"�d�H1>��l����w}���Ҩ�[sd`�.*._>�_�#\S%'C[.�]�^�\�h��9��1굵�ƗQ-/��E��Ș��`={�zP�MEH�*�iԓ�͎m"�6a��&XXy3
�>�'H
�ͱ �E�*pi�u�Av�U�-�Ti��Y%Ř�l�
�A�&O�S�+f[�uS��_/w���o�<��a܋��^'[u�w/�ox�����A&�
57F-�*Gt�؅�ɨBa-�V���+�$�TVG\$���4���9
	��D�{�3�Y�%��v�Et?�܀��{���(���"䢆�MS�5 �3�8`�c��`�M�!VQoX:N�
��q��]o��Dq���6e���X/�6
(���)��9�����Rm��F���砎s%H^w��W���R��9������9�cM�}���F��5�O���ngK�+�	��4o�P��0�muzCr��}C�V�U��"���6���Q��U`�߂r$�!�|���=�omY��XlyWK����u�v�|��J}�Y��{=��mri�D��s�{�ښ�ƩYeE�L�v�\�ʚ�%�1�F�)�rH_�J����9@��M�8.��yP�@<����N��[W���^�s���u�͉Q�۵�k�^��O+A��䉻��z�����-Q�+ՙ�dSG[C��\�hp�!�LPN=��p1��d!\f��m�<���$F;�I!�#����}����M��-��&
�X�M���@�ޓp1s6���N|�A|�ć���U�1��G�q�k��&�������gc!u�ۓ[}�KI!�i&�[�| 2�!O�c�|<��ӯ�jcc���G}�L���W

%����^�<Pvr	�i_��c�%��Þ^g.��np��s9�<&cA�w��7��l�O|?���'�5[�y��1�'	��&��QP*ՒPP+�C_��hI$��@e���n���,���G"՝a.���u�����,A��+�y�'P��@&��_|w��Q!fl����j1/��H��0�P3�h6�����D��ކ����Ѯ�k,���]��{��)��z+�hYM`CVs�c4U^Y�'�K�ri��{�~t��Kw<�N��'�b�V����K�+tI(�HEK�ǿ��|�~�?���-�������M<30�����Sv1v=�&�֠t�S���;�/}�2R31��*B�Nl�����sC���j��_RClv�ɶ{�j�3(^/�)��ê(|�������߼�������Z��O����D6]�fv��3h����%H�����|����G�^�Q,H�;n�t�8[`2ۘ�QX~zف=	۷�i �`������T�
��>h"~.�H H�k�\��mK_�U��V˅6��%G�K�6I��Τ��ar��QK�=[���A��=�Z��u�Dqv����Zhs��;E5�/[\���	���J5C�䫺xHs���i���ۢ�����k�5\��G5����^:Zm�e�
L��&�����������o�Jꋦ��?!׫W�LJ�c�$#�ja�����S���D[d�9�o��ۈf�c��r%]�gE����m���h��9����S4F"��/���7�=mEz-�
\�N�b�x�oh� (\ �0^�efnDc�,r_m�����Xc�ֱX=LVc������+�{(��ƖV��3UVR���C�i]@,[�f3X���L��a�-����r9)�i�V�^��<q/Hg33�G,+�	�/��2�/0��/����S�ab�*Q���̮[��n���Ź�_5���F�0�v�����q��m��m��^�F|�*U����nϽ�{/�`�Y��Wq��_����蔽�����Ka,J���K�cf�� �� ���%_����\�Sg�
�����)!c�U��:�l,�f�&'�����*cMOѓS�`a�]��]���y}�?������1�e%� \Z(�'�\=���*�ܥ-���$�Oc�}�G��O��omjb�̤���Yvrz�NIo�~I����r��*p;6C�2������<<}uk�M[{r��uc3Gǫ#@Q�ͅ
�NA��:�a�z��Dy��D��oW;f�T���|��)�b���d؅U1N���u�a��l��#�	�
P\�]mm����Z��e�9�==�$N�:���6�c�ĝ�*�iϢ4�WB]�v��(����U�i_or8��M�2sy9_'h����L����O�<�2˷� ����ګ��Él&y��ԁ�TsK•s|3�t���]a��2r+���rQ~����rx7���{~�����m��HpR�pt�|r��$3��U�liIP�Q�P��[
e/���Ja�����7�J�&��4?��������tt��!�-%��R�����M^a0`.�b���\<�����)k�x��Ţ(g�x���)���R���Ӱ�%Y�\�Cu���r����\��N�]�\��V��9X(�"1����
�O�b�.�Y�9�Ə����'��i%j��|'D��=���؃ī���A"�� b�w�ut���
_���_:ӊ�v𛩾!i�S%$Ȇɮ�Q�o&��SZ-9����o�2����8���B��?���r�gB��e'A�˚"��
eGQ���?�R��{ÿH���o��l ��n�Yˀ��W �T��4����'�+?|�A~^?����N����cu��#2�'�y�Po�Z�Uo؉��Qx<fi¾�׋�ò[��'$�<Y(7+��t��ߣ���?ObO���;��az�|\C�ړEX
���+`���{�ʺ���4O���5 ��˲FT
��7Gf"���O�OT�o7�tB�����IiE$��w*Du�:���C9���c]�v���|��&zδ��qy�C��{�I�a�af���I�m���ҭ��k{����R���Zl���`��k1��՚ꪈ�]fGskk]��>b��~��X�9��t^{վ���~}��p/[�����\��y�	�v�BE��*���}I��
C›"c����#i/�����V	b��D�5�ȁ��j�Pj��k�/��`c~�	��ɮO�8�-�]	�K�M�~%�2�'T�ӕ��л�QV}����buI�#��3�i]|�����}Q]K��]�!:/��1��H�d^�tY
��Y�������6]4c�D�.�,bh���5���?���6�y'���m
�'Bq+��u���˴{�g�����P��Sʧ�پֿ�ϐ�,c�P�1�r8�{�#K�����+N���_x�mk�����kg��-k�լ�	�¤䒁�ɦ�L�j@���x!�Ť��z�
��7_�X0��c_e�]���
��Ç�<��]��jcke��������ǹs~~u�Z�~�"�3(�j�7���)�V� ��x�#Ya�tB����L�01&[�x�_w�sXL���kOo��xt�){�<u�~�����D�S�ILb�j[�c��e���q��	���݁Zp�?�[�W2�Ⱦ�:�z�x��Wz��Ky��U�9u���С?�;�A�H��x��t�F��#��]f4�:����;�8��d�•ޮ��D���W��؋��g'V1!���@ZG�x��z�3��{�%�^�~K'�}�,�n~4N�� =Һʸf��5�����K�;Ԙ�U�m3=����h�Ĵ�*g���LOeF$�8\.��Z_�쒈E"�MkQ�$�ZF!7�v�y1���a�,�/��5�u�шl�Y¢��m+���+»џ�V��X+/�nzMӺ��
�>KC�����&O�fi�Į��m��b�d�L̤t8nL�IH��I��krH���`��W��
�ؗ
0�5�jWG���c�cf'ԁ��'Ԣc��I-X��P�[�P�,�L�4��X}I�]H�����9}������W.]�Φ��5h�Ͳ�
���i��d
�]
�T
�W�_�SD)xZ��Jrj�hҹ�"�>��\|�Yz�I�����i�>��Bz��-p��G�����0\�>�G��Ċ���!�`��t��K��d�#J[l|"���;�Sxs�+ W]M�u�x���^�8�B��p �"rvQ���J&�7�
ͤ�Fx��,�Xc��<�p��A���Lbv(��˸�P���}{���{�d������� ���n��
݇�~�+3Y*��&��5��}
}��)��]z��k�g��d��r�w3:1M|��m�2^��ۑ�n�s�����W�!��K�Ͻ>w�`O��_��W����]��?D�1ʑ��6D{(�8tOe�v ����	��-/�z�{��#+�(�V���8�r�P&�!hY�B��0֥��&�Q6Ǖ�>�la
�~������܁��-<(�K�wN������\��g���,��9|�x/��x?G�e���Ɓ�0��	�*l	�F��z�2PmP+:��zg��A�{`b��9��wΙQ?�,���(N�'�;5�$_|�������
#�_�F�Lp��C�+$
�˩h�ؤ���DQ�+�ڥ]�:������
��ya�g{=�K�
�S�m�AP]�dž����V�������gI��b|�Tb�`~r�N�l뗲y��34��:��&*�������	��ђ�2*����BI^����q��s�;�)��@<��:L���-E�7I�5f/M6���H,Y�^3��rbq�s��g/�bUډk���/��W�-�	g�lBR������T�qdd���Z��K���E�P�	bG���@��"d����ZV���K8|�^!��ϖ"�+m\�$�/����@wh�wS����r�XC�����hw7��z?��
X�,����9�~`",�*���SI�3ϐ��b��#�i���]��]��Ρ�"*�J�W�J��@.�ΥR�ds>�L�8�
(;C�$��5]RС*~�N�4q:�Y7wu����}��k;��}�v.x�l���XD5khOϞ��=�&�x���M���Ν��?��)�Ml'�
QW#��h�/j�Bs��j2�;�~�8�9�>�)����q�����Lg'��	����/�d{�%G��3��5D,����,�[؉�h윏���U	��`��q�ה�:�gY�����we�4�2��u-ڈ])��6���P���>����������Κ�1�U�ʞ}I��Ug��tV�-�
w���=��ɐރ�ˊو�c���4H�G�#���?2�r��x�����;v��ʈ߷����N�~86:ғթ*Ŕ�������$0%6�)gVt��ٷo��O�Ƙ�>��Kk�↶�-�b��?y��k|IXV�2=�������h�L���I�|��L�Xh;�J��")��n;ogr�Et����(�,���
�`-�Q��tG�\�ד>3�b�%�\a�![,ũQ��J���o��mtA&Ǔ���lf'����J�Y(�9��z}{�\}��Fd�)�V,�F��K;7�۫ۧ&�ő�6M=iC��&R�w�V�F@��4H��G���Q���TW���s�29����lc�}agM�Œ�\(C�0�u�!N`維*p"��38l2$A��Ү�)9nf��B���~~{ˑ9�W��ܡ�˲��k���Ě�&HW�Uv������!C�:>x�
�>�'�^���d�O����A�O�4V�nf[V9�x��8غe���u���T�z9����ms4���G-�H�{����D�؉�9r}��A��+fZ�߈Zvt�]�->�٪��}�g�LA��?�ŁH�d�m�6'�~����ɫ����M�33?��.��65���s�ف�t׬�Rx�:�)�\^���c/�[�j��֐��#���i7$KY��'��~�>]��䌦#uUw����T�
JyR�}HƤ�u������bM�U��Q�4w�m������a��5k���I�3������c�_����ma%��<����
��J�F*n���B	�
�W�''�v%��Э{�ݘǞ]X�N������u��y���_���m,���u�����솆�Gv��in���a�ޮ������I������.��-('ȅ"�E���'�O��tM���smJ����(�fg���E��u�U�K`~�ff:z=�ԩޓ')Z�˻�(H3����K��b]�K�=W��^kC���_ߙK5.�78��ԩ�Sᑠ����{�M3����R����r�K� ��
I�p�;�@g�r���Q��2�������?�{��6y�,��j��w^'�����9v9�/����@�Br��tu���&'��|�vb�d��?�cp9��YCZQțD�>p�:��s�t��V��i㾩��A-
�aV9g�9�&�o-W�Y���|㗳��{6#M(�\~)�E�N
���s��fYw���4���)����CF��C�/R�*��g���������r��<A937qS�S(e�la9>1���2Q{�fM]�Cng6�X�M�	8y\g�+"�����SZCS�<�+�1�|�T,�fl�I�(�4�8Nf�:?��(8�yJ���׮��5G��
��������p�U�k݁
���;�/M�L��\n4R_��snaa�B6���7e��E�M�H�/Ҽ�m?���<;9PU��(��D�g�'��L�<y���ԆԳ`�?{'�y�ܲX��{,�OlQ�L�jnH7=S��E�Sr���p"�8��c��0�5����}m�'�Lw���M��Vg�OώdG�uss;�>�K����2�'�,��Y��ZWn1
����Gnݼ��c�a
V�P�Z7C6��8�n�OBѪ=�ʺ��v]v]��Z`�_u��x������o����ek6l��W�����	�NQQpr�|Ӧ<�"�A�����ԣ����,�y����m���V���Ҿ�Jj�`�@i�������y��b�ƚFF����ZX��3@��l��R�ho���<��ؕ���?ĿGLf
����,�W�k*���[��R�B��PØL����q.񌱦� K� _ou��?z!g�nw[��ݗ������CsC�
�AW�okrj7fI�qa�m~��O�N�[�;[�uFc��>�(�O��ːe��I�vF��BI�}�����.�g�)���������n�9>64ƻ��dCs��`r�$�%,�d�}
y�o���?���"+�,T��w����Z�T\;ܛ��U��M���Z`�T[�f'�k�}�����O��f7�U�x��c�9�1/�<>��{{�����nDHv���Js����&�׹w�POW�@]�j,�=�a�q�5�_m��َ��@�˪�j�Y�z�~
�^���)FF(����#�0�:����
���Zx�؁N�|G[����v.f67&O�;��_��C$�?�[*�F^҆��~�y<c&�n�d@Qc���o�v�o�l���Z�
��|�%;����忼���K� �%Ƶ`[$}^��ak���r2C9Vi�2�����a��)2��Tsʲ���5S���7��xk�22��m%���)"��,�<��n,���5�r5�d⒛�䴀Y�J�������5	B���z��̭�f��Ĥxnö����\��#ܻb[�Q��w���AE�O�h�,ÌC��Mit�T/��ɔ�������k6u'F6�5��,�����U9��'� ���燉W���$�V�u9�^�6.&u���M�	F�gk�m�;�D-i�K�9T��h'�#�]2�=ġ���b�1p�%��(�Qusk��#�����woL|��?�!o���
���)�
D3�[��Bz(Z8�U��(&7�pxmU�qm�@}����R�k���._�RvI�ٳ@_��I��{�-�{�z�]"�w��ֹje}cᦎ�!}��ҫ��;BA�^k0a�m�����%�U7���V�TU��*D�#�?P�#����I,��^�ԧ���t`�g�6�wo}𞶞��-�'�gzݾhԩ�bg�:c�6}mқ[�	6�74�������.O���rH>��8Rg�RA��D��aI�Og��m�t]���>�o��;�n,bg'�ܼ��7����{i뗎]y�GFg��D6-3�2��юS�#s\BI}���jߡ=�-M�j�l�9g���#�U8�ZL�:��{�	ll�J]o3����C�ӣ�k�|_��I�#t�W���9~Ī���?�q4)fi�_��0l~�B;��oZ�����{���\R��PQ��,�
�����ϣ)���,d����I}�s'1������9j�E�]�y��h��R`���=��Hol���J�a�ЗgDnn[WS��/8~mL�7]�M��G�-1��J��ޠ����x���j�O��4,C~I�P�`@�6%=sP�+:���6q�����%��"IHw��{�1�J(0ǜJ�<4��!
ڨ}��x5���*
G�����=����O����k�M]�-=��n�^���0h��=���=y
�>�_�wd��"�<��]�K�-���җC�
�9w�q�o��x���W�K��.�Il�t���Χ�lݦ�]{�<�a��ƺ@x2�o���k'���
��
�?8�>(�p����������V,t(�ZAw&1�f�_87�O��8���¼���{�s~��_����.-��+��sf��G��H?�~*.���0A8+{J��6,��g����Ow��F�]�s�_#v�DC7/n�"�7B9�Y*���L��R��݇��}�&7�Z�F]�w|_�]&�a�ȼL�-Ѿ�^p��ϥ�$����c��$f��A��
JJ^g
�E�����z[��X�\�r)|\
��qs#&f��q8��v��
��:�T~�T��w���O�|��+|&�C�z�5����6��{��X��u�c
t�K���7�_�}�$�MtHP�x.�	�����+\p����LW�[\����|��/U��X�n-������b�x��Y�aL�U�+%^;E
�����%�K��6��f������zQ{��4Y@ ��D�oX����a&�X.cl��,kc�6���)n�4��$�m�eɛ�����(�����
1P�y����;^��w��#Q�5�o���8V��q���m�2��7�y�%�|��P��w�@}�]���{:��w��߸��'}���_�n	[O�:mp[YrC������Y{J�/�]OB[��Mmlf���1 )�rŷ��&��n�(�m�A��:�C؆���eS�$56�m��n�Э���	[�m�xe�_ë�djͥuds��,J_mN�1�8;��$�_���|�*�?��W�Sd�')������|"�c�5���YO��T�i86��+�M���X$�pes
�
d��#É��b��_�~���uv��t���(��TF��W�[���c;>S��Ɠc�OO�w���X���=��rǖ��Yz�b������R{C
Kψ.o���~H,�U^Fg�(Yjd�"�>p�U�_^�ccC��-�w�'�q�r��{r�T�=�
x�O��d.�9v&`ʀ�l7�[�YeW9��u���5���ȹ���0��OEI�7�����ɕ�)L|�Vܰ};��x��?�d:����@W�2����l���G�%򬢰��ݱ��2$�ƽ������~cD��������\k>��֎�9)�>nIA|C����5�A8��f,R��B&��ն��/����:6��q���V=��;+ck7vlغcsO�Ȣ�uv=�?��6&�E}����{z):�j��}�]�����ÙVr��p-~
�;-�M�R:
�����0���'��؀;�r���fK1��';jZ�BM[2�3&#���%l��:�]ѱ�n�ݟ��P��t��֠�d��b��d�<�v_"�UKE��#� ��|����/ݽk_�Ɋ�o�͊�������}�+o��Ɩ��z-<�a�&�,ec���N��M!F�=[�dJ��@�փG{<c�v\gDz�v�f�pHx�c��q��7q��\G�5�-�/7�c���Iޫ���"�KZa����B��@,P3�(�'j�¹�`����YR�PZ��6o\h�!�974$�iܴ��B��FbI�X�\�FdK-ه���Vq'�����4q_CB4v�b���9�;���
��{�|�3��#
%8$hʪr����F����܇�Pގ"
ڕ F�XK"��܂r
�op�G��T��2��a�s12�g����v���ѳ'Ճft�VA
�6g��Z�>F���4���w�
g�C¸�xq�Ns��/�(��m[���h4��<��A��8�ߢ ��Eg��C�ᓴ+λ�����5)���\����2�7����T�}Q��Y(�e�BQ�ݖY�"����#�
��_|��'�?T��_�����������Y��~!�0a��Ȼ2
��E��L�X�@� 9�p�ɵ?��`>���]��<t��&�=b����h����D�A�^I�L�f�/,k�G��Q_A�n��8�Jd=A=*Hd��
9l�0�_1��F�?�A�H
!|$i̡QyH�o�\��ca�!*_jci�&c7Mm���N�����
U0�R`S����ON~w�!q[�$��c�_��6xP�(|�����M�(>;�\�߆�4�|����=V�	5���@��l$�cj�kD_`:3�w�ɍ,Iw�ӌ�}8��'����7\_F�o!ԣ�0�U���@�v�
��n1Q?��ZG|�d4�4'N�jX0Wm����g[����^����(�]be����o��S��a��)b�;UL&��!=�5��&[�ͷBN�B�E���U�-���Uon�Gkk�^�a�휭�3�|��P�
��P���v�$-�[�F{�+�TԸ�{��^q��
��nF�o�o�D�����$��-O��ۋ�"��<�"�.w��2�^R?��z�G� ���/�l�I�W�!�kC����+�N19�,�+v�\|oM��M�8`V�ퟺ�1u�P���U�}�M��^�ک�9�ȇrհF3�C�ʼ��Mӛo�M/�;}=X�hp���{�e�P��F�O�=#�GZ� }u�����X1n����*�y�NSY������7R��o����_ЦW�u�|��p@� � �Mp�@=��ڵ��vmX����a��S2�ΰ��`)
oPW�拺dz�Om�������͏�#�Ccヹ��0,^���H������c#s{�έݱ���
�z'B2�X�]��6A%�,q3P,E��9ayĊ�f*ױ,D���Ͽ��P�9�C�J��Zn�'P���EGm�U	
�C}x�㨬�孾�TK�e˿���99&����2��N����4Ȱ|�{��iW�~�78�.�g#�=��"��@D>��p�鼀M`��҉�=2��%j�TZip:�U�N�%������Y��9�"��.1��ܜ�������Lv�ͥ��I�v;Ӧ!��b<��q,�y<�<����w����
w��j�x{vl����,��Z\D�i?o��������-�؂td{�bKb6���{�ZO��7��.f���
/�{��z���F�Q�H�Ŧ����5���Ú�͚Ʀ��S�f��xܟ�18&�9�3"`7�'���.�=)}����]$���K`Q(�.��o�Fp�КH�jҘ&�����p�8����l�Vw��47뫣Du�ˮ��F⃊9�#�;%!�[:;��5���1:�/FiQ�4�	�N�r��ڸ�P]O���%>L��\�R![�o�7�.s�����
�q�m�C���W6<�C�'�P��i����.�?ᖘ�JW����M�M���Ϟ�����Y����i���Չ�Xa��5X�&��,}q"�qb���:���OK6:^�(|
�����(e'�-��	rO�2�8���!��G��7tI'�S��%]<��R�r�Yʖ��JxA�!X+Ȓ<@�9�q���K�ze{n{i��U �H'���H�nE/@�Q���8�~�e�&6{|t��N%GGdkF�ĩ�Dki���)IP�At�����Q������_�	��N���b#I��=.��G(����ј�0ӣ��j�I�#�3|�,�X5l��S	ڈo�+�V��ܻp�*BfF!f�x��`4�٦��̊��U.&�-�m��\髮�٘�:����˓���[�C���Yþm�ƻ�Ǐ�����Mã[ք}�s���9�@����spW�z�,W?�6zG�}�R5ו*g���&wK���ި(�}�D�E���(�$�3�b+v#o����h9����/6vYx@�%dR�z����eR!δ6ٖʴAf�	�����Q��ɤi2�ۮ5J[�#�!�I�}��w�bē�h@���X�F��V(��@���5���1�m��	�`�5r*Gi#����^mQZ9j����qt�~ߠ�hS�n�t&�s�f�~�����[��E�R�,�֍wM %O���H���/6�9p;�_�������rl�T��'��#�'w���@hzZ�m�� U��V�*�M����L�/��f�å�A�(({f�
��9Ʉ��+t׉i����q8\�y%�hor���S�و콷��^��F��U��x�(3a�>��3�m�m�ЃC�S{v���86>����[n�þ�K/�>���P'�}�ϻ1'O|�k����6t?lN������Ocī�t�=yY��o���爅����I%��/ѝ�,��0�F�i�y��t��-�wg�U��T��+�c�[-�dp�Z�c�
�	���(�E�9J��)�M�L^�Է�(�P�h������P�
̶���X�	P�"@��c��)��(�	x8O���߃�����ݏU�9�I�Lj	Xr9�3�B�_��w�����?�T8i�2q�%"��$��Ar߁b�o��H�Z*r��Oa*�i/���=��O�u�6��&���O��@q�@���ޥ#���(�R{��
"�2sBa�h�	����h��T-cN�hrt���"�����g'�y��Ϗ-��|���K$Fz{���V��3��?�0���ƿ�@>ao/��x�����9���Z���n������N������׳ԳD�d���t�9�~��H@��|���"�09:��AbP6/��m�J�zZ��g��(�
�a
H;@X�tl����~���v�úZ�ͥ(�]�+�Ȇ��6Fq�����\h��`�e�
����16�^�>�B�x�BR���I����"��IG�7)�+g����1����α�u�
[Q��|g�HD^����<�W �Spgt�b���LƗ�����Dw_���T��Z���Y�`N����'Է�o��{�����+��WJ�G�_�z)�6P��XH��9���pO!��+�����o��m�����K��篔8��겭��{���WPo���9/�̘=
f��U�s�=�{��Δˑr��δ�Z��[�>ҿ�1��maH�Ba�Ĭ*}����׳c�zǍ�H���U�I���?�e�1uyw��&���f9	w�}h=q��E''���A��C��Iu���}�ʘl-?yt����1iӭwf3G�9L�.1�uJ�"sO�
��*o�6������+r��Y�y�V���U<�ծ���U�x�cpjc�{�?�$3��?`�G��B�.�߭�����N�6��j���y<5��
�A]�C��?��s���i�z�]����b[�,A	��.��\�p�L$�ۅe�y\U%0Yb�P��Y���V�P'k��B1G�͈�|�����XZn�F�īe~���a�PƑ[U�6[�/d�ԃr��!+/WU�E<�X�1��&�����P���?V�2L&�H��J��$>�1(���ৗ߅m���W7E�
.��q���(U	�AX.Tjd��
�])���j}�Df��N�۫Q�cZ~Zi�T"����J��
���2���`��2��R��O�}����*�E�h��TE({��#E=���8���_b���x����T��Un1��Lg�l*W(��-:IU�٣��e<���jry\Olt��Ғ�Vr+r5�9~-�M-�i�ȩ
�l�L�pu�*�.W6	��8�c@)�(�T��׊�}R ��Ta�P�P7�ؘX��d������V�W-
ۋ��Cl�ӻB��e��MI�$�R�+W�];R���\B3窄�J�J������f�\���K4�Ur�[�R��h�17���\H5pJ�29�#RhEbn11�����O�����*����)���f'/P�
��*���y�VW��=��f�Y��.�[�1B�fY�c��wEa��@U�d@���,3��7����
����ݥr[w/�U
��Z #�{)~r��u��)����
�Q�e�J.��,�{�^��f-K�jTJ��J�T�R�w�ep��Q���Jo-�˘^�^*V��H�����#l�����^�$e�"��:7��r��R`=��U<n�g�%�.��{*�p�V%4�D���6��R���x<��0P�3��Ҳ`�H\��3]@"�Ů2�MW�`2�`H���1�er)LD
z"�m
�}�1�ոT;��b)��|�=<�D�ǿ�n�����r����#�xDR�Jh�VU�v��v�.`Q��Ry�)�)n+:*�k:��z3���Y�����j�|-�%���*���(�~�ݦ�kT�*�M���\��ؽ8�a�Ur���W��2)�����W�z��S�?$�u2���̗=��PJ
�H ʐ�"ބ}�0Qnm-��i�#E�Bcͪ(�]~�E%3��v�x��(�&>��F�O`6y<)}E_V�e���]~֫��}�>o'���S�mB�P&�q��_�>��	��*!�J�J>�L-�=�����WA����MѮr��	*� ���xt�/GZ"�R�ܢ�Dc~%�%�k�Z����,Nm0�����P��6�odx�����|���+l�~�g�U�7��u�����a��^�ӇhQ[Y�$x�փ�z�L��h�U�Z�SlW�*�UZ�7����eRE�Kk�[cr�],U*5UR���Av�(���j���⻔��o��𽛉�9,��.\���ҝb;��a'�ߌ�C)�n�}��޸��J��P�^<#8����zxC'W�t
�Ն��FsJ���Ոo�[���k�Z��c�H�t�H���TT�ae
�VZ�F'+��񷮞�P����^[�2h4�r���]�)��$��r��K�jJ�h�l��o���C�׬�z�^��e�f6�˫-Ƹ�B�i�:��`�W�EԺ�i���G�\YQ�b�fQ�T�	Zx��@�Q5ٛ��j��R�b�c3P�c��QF��JmG+��NS@ξ���5]�-���U��e>�`ILNi5���nim�ȅ��A��U�+tj]��kN�Í�To�h]vUX�/G����	��hE�o�������>F�m�k�*7S�3Ѯ^�Y�3��g�ގ�����Y����g%a[hQ�<f��_�a�E�ɦt|c��T�6��q�@8��w��m΅��Ry�����J19-:ci�v��|���H7���н"!��e��ϻ.��9M:M;_�M��!��g
m
5�������Z��jˍ r�[l-����ǰ����7Gy�p�]�##�W���O�Y�fǶ�z)ܻs�{�Wq5���m�ھj��Z��*�m*��*�b[�$7����۸���
��NH ��Mc0L(1��=���)o߾]������wN8�һsߝ{��ܹ3o�^����P�,�߀`��|��=���A����/�sTk��i
��oo�Ù��H�	6VuXAɌy���%eZYKJ}Kuwak�#�%��JZ��\ō�n����8<���f�ptI����&:o�ɖF���{Zx�o���pt@A�X�m�*缺R�2[wX���䚁�m�%Sڌ��\RX.�,�o�3��o��o�]ޒ�f��6UN�
���T����r]�i�//�(���{8����HMnQ�5�˳B���&�k_M�Z�tC�䨔99JU��n���M���q,��}$`���KHN2/Z�B�����q�]-�c�#N�Qy�6͠4�ʵAu�5ݨ0����s���V�@�ӕ���2+�Y�"u�ט�7�H�no��r�R3�n�K�Ł?N����>w��B?�j�.���z�����]M�vG������I�h�PLcy�<z�͇�玕�l�z�6�̵�/yʹ��lqFkKK�"I)��xS��%	H[�'��o�C)�7խ^Wjj��n�![���R�5;8�g;o�����P=$�����"I�A��4:���'�䶕P���㬥�qv}���B��f����X� �(�2��yB���^�ps���7��B��U�4��N�\ݦVΙ�9{]��6�����������w���'���M\�L�|r�/�\���$Y�+�L�8�Y�H�ݨ>9,�*2�.==���2�(_�K�$�&�ͳ*��Y�!C�4E69����M���qRO�V��4&�)�L��i�U�7nx��݃����9��
��Ң	�[�U���RRj�OI���z������РP���g�:�O�Cu���N)�^�F��1@L�g��I�9V��8������g�����^wO���߹�	f���-�*9/��	|R�.
P�dmH�[X��:C��R*����h̳�Œf0q|[�$2R�9#��W#GD㎇�q;������@(z(��żI�$�Gӂ�^D�`�
��x7i��`x�&{H�|^iE�3)JI@�.���O֧@ �W�]�ն�J��ygmUMy���rmGY��#��(/V���S�Y�jU�Io���g�
]���N�]��QL�5�>K�c����r�����&A��툞��][�^Ffƒ�TSnR�.-#��V���� iz���WԻ�r�"�E�a�@+xysU�J$)�"�Y�Ч�y���z���c��?��W��l!���<p���dy��y��NQ��senq�D��=��JѠI�S����V�,)�Zה�L��o�kN���L�d�6SΗ%-
����<�O�,B�)�)w4���[�#�%��JS��5�x}M���m�|러z����j3�szu`R�M�+i~�ŗ�r����]G�UE���pܺ$Wrȉ�ﵖ~�'\
�^_{�������nb��viΠg�Ԋ<�>��+WSiѤ �k�Z���ٷ���3���m�dg��W&��Ҥ=kJ�&�J��9��[S��G��\��0WU�����P`�,ċ!70.W]i�xY�#3&�
g���?
���mx�.�=j4����Nآ��!S�
�W�}{u��"͙�x�沟��"��b0|�D�Z,�,��Yj�Ñm��8��?�l~�t2rK��"� G�K��/SDb��U"���H�N�Tt;��ә�Ew�8�*U�*H���H�L[�an*,�P������/ɵ�Z�P�)�?j��j[i�VoE}�~�j�&�E��|��|;�@���O,2�2��I�,	��@��2��f�h(o3����I�E�K�a�"iZ�R�s��֔]%�F9�`�@���l����XM�PI�3�	�#���թ��[����Gz��n�����4V��[�����~��Ho�dm'�á�K�u�-�����$C�Tt�3=�J뜺M���J��0��ž����gDC'���3YEËҹs�ga8ӜS精���_��~Ikp������]X����`x��io��ik/7؟����뫼z�+��~��TSfz�lm��`x�¹��A_K��LS�C�NX�z�Y�2�j�I�)�c���*5�B��LC��q�Lh��]�a_������m^h0��T�<�<Ö�n��83U?tw�֚�=��SF�p�U��m]�9�̴����2K�ev�֫���:��[��V���y�+�;���Ԡ������/$���5ߘr�) 6^�ٸo]R�eE�p�~ԅ�%�X����*aߔ��'r�xᔭWW���O������̒���5Ķ�b"�	7�
�7A�e��>pɸ�k���u��y����٦M뺖�l^;���Ѯ3%tф�d��Es����SHF�M���;�hv���⧊�5���Q�@�BR���0�^�Ư))߼��T��J�
�*Ց<븞z;5�#�D+���]����Ei=Еu����k˦Wt�we�y�
x���iSɌ����gN�3���Z���R^{-y��ִ57c[1���g)���O�#0�}r�(������3��PS}���f/�U�2g����?r����w`vw��I%�
����@S|�740i�wL|w]�V�]�'ų�I$�G����s�RɶS9�.��t8��(Ü��_��瘪M�rQ�ݩ.��4�몲te���C�{�Ҥ�<6�DuIL;�K��G<7�ȼ�?�v�b+�LCFu��{��ch���{�]hΕ&�z&��4
���:<��Fx��N.�P�1���ayak��"��m`W	x�2�=� �Q�#Ʌ� QTьj\>5���i�tPk�Ot@KNz��{�X���“<|3�{9�Vb��{�F�U�7�������͡�iG������8o�ݗ�`h0�VT�mqqGI�8�]���ʏ�oP�΃,����*<����kS�� �������|�;8Q*����ݽI�k�5k����g��PMccO�5�#e��rjf����jA:#��.��ĬqG#�qk��^����z��7Bv��U���R�K`�����{��E���Ӎh#�D�H���8���b�t�(,����׉l�!��7eʠ����-�meك�5����1g���H��~��ېWt#��
���D�G����I8G��h7[�"	_ׇ���󗓟-�糷��|�O=�t���k�,r��;����T��HjI/���<C��g�-�Mκ�	���}��@"	�w��՝��[ϕKE���? �y4��rYTdI����T}$x�4��h�o;2����|�2+Өp�Ȼo���x��\��*BZ�ؾo�}�}��7s��Y"u������9m��-z��`�Z���ě�/����qG3�m�NRdh孭��2���f!FY��˩�~���S�&-�^]��89�����z�-�o~�����
�쎏�+!lN�h����@.���G���0sz�YTt'6�2�*��,�f�G�^vٜ�m���Ql��3����;@�/��4/���\�7��z����7"�T_*�?��QY�r���/�s�ɹW�o�A�N*~���@m��Y�Q�#�I7�I�\;宺�F=��#�p�5`i
��>6f
�\��%h#�cj���Ҵ,�[��{Ŏ9>1�����%f��4�L鯾ʞa��:�Bim>�Orb�̣roD�
�T��P=��9���U�8�5�t�z�|�J�JVi&E�W?j���v�"���#m����*�`/A^��o���$��*��/���VH|�Ύ���/���Z�6��>i��:���F?�L���{�6s�wj8ȭq��ɪ�Ux"�����
�,��%�d�P�����;����ROU-�������@�q���=�%%�v�Ϊ�L�F)I�T(�e��*E�J!I�+�&�)C��!Ԥ%+�2���,��^�:-E)�HQ��f��I�[T�>~���2$M�f�%&�͐�Z%M���Ȗ��ZF�H��8DG��JK��4�
6����6���E-ݵ]��U%�"E����8Y���;J�uk��b�ggU6���=���Q^����Fv�C
��l&
Q�O�Y0m��wٿ
�%���Vo���o���n��:gT����� �fz���$Y$ˢ�.S`A��ҫ�W
�N�x�Y	͂}��}��_���nP����B�OUcl�rkS�9������r�Tp��0�.��֥&�yM�]�X	��y���O�
��#������32�	���!�-�|
�	�^x�%PU7�ki��u-�t�����nm?�s<]�l��墉�Wz�f
�!�p{��Y��~?�b����N��H�`�k����h���+���p��Ԋ�Q&V&)�Z3��=u��׭h�B��-�\f)�$I�(���J�����f�X�xX>4���y1�RN��DψG�Y�4�\E�@c�����%==�U�{���i
�M[�kl4��ڴ��~Q����F��i}���{��gx�n<x�3�̻��.{L�.�K�)�<��X��9I)U���,�����Pp*�� ��r�T�.Njih�	"'��cU�%x
���ƫ�H.��W�����Ҁ��jd�q��WQ�9���i�"t='�q����n9�8[��	vOGa��2����YVl�H���Z�^�*�*�n5p����6#9ծ.�t*��)W���'a�%��m���2��a��@hA[Z�F#uK*�4i[�8��2Ӝ��nL/
���5�
��(#u�%z}M�����<�g�b�������p&��JC�֓�n�R[&��r���RZr]�̚r��D鲺���'�jf5�_g�fd�ef��:�'��є+2�y�8l`3��vz����ZÁ�0�k{����3_s��E�kTꂨ�����	���N?��o��$'D�-�K��Q�h.�S:�=�O�+���|<�o�=�#4�2�~/�۸Ӹ��ϡ�t3y�=��N��Z�=x�̦.J���TYd��˫�����>{�kC3�����5���(���0�J}�
~�0�fK���������O)�f��+

�y��饦��tUd�Tx�V��n�N��!5|!kU�@^�\O��T.*�
�fd/���D$�qkд@�Z��ͫ�K$�~퀝M�ո���`+�U�O�|��;����q�bD�>���"�!5�>���]���U�*�;mz[�
xq�ʔ�P��o@p&�> ��;�N�
��~�����xzXO��<Z���["Y#��4|�Ȇ�M�2	_���B�M��3iL��nT��ֆ�>�Q,���D)���"�����`CM����l?�!���f@z����W��H���N�XӀ�7�1�Vzᛕ��?3�/O��^a#�>�e�$��icTd�Nk�xa$��OD�:�qgI��ʌ������;��O=��C����"\9r,M��X�)�C�y���!�/B��^TB�&ɩmURGY�>�XP��ǠU�#�":?a$$c)�ѓ�ָ�L
��3C�lfs>��Y�\�lav0;�]��=6b�L��?�����I�-l�z���		����D�h"��9��lo�����Hݎ�C�{�#�[k�Uo;������`��\��4�|o�\��������BF�C��b0X�F�)���D�O���e��,�2�@��|Cp�/{﶑D������؏�n�qp��`So�8�#�(���v'�gߗT�"�٧]�{J���)��7n۶�שQ����m���3��{��?�����"?CDZ�II<>?>�_L��.�[&L��8�zY�Bm*.��[4h.4���sL6�U��\�#W_ϰ>���pv~����ԑ�Ph�ty��|�]��Ŗ�O���p��q��{����/�����l[��@�Sf7�m�iJ(S���-�~�Q�t�X�r�?M�άg��K��٫.`��3ɜ2յ����R�T4����q_"�Q��naF+�u�7o�2y�	quW�Mٽ6%}`��;�lZ�k[�7�R8�ݏƋ��HSỳ|�V]���.l0	s@_����zr\��I���"�/�*i�M��<��K�����e;
)y^��V�I���o]������dgG~��2��q�+�Y)�*b����S�r<Z N�e�(��+�wn��~�3;U��K��o�,�2�c~<��i��t�DY�n"%aۥ�P�U�US��폯�N��T��+C�y�*MP�
��Ɗ����j����H�c��x�7bI��sC�KF)��A9�=�$Y�?s!��7�o�}��3+����rp›���|M�8�\�H+("�R�›�h.�)��&����c�1��YS�@B�8��M��e=���Έ�WrpfS�<��#���E���	��+��p'��/��ž��8��dn�]��{^x)� #&gW�l4���~\A�e��!9�uU�պ�B��܍�sso�"ڛ2�(+\ʋt99YY9����_~��z������њ�A��^�i�g��g�ќ�Q����'��ࣛ���e�x�B����*�]��/��Of-���&)m��)���$�$�N�%��#u�2��mT[���T�۟H�
��+ï�a+�!�3�3j�gƀ��FtB��<�C�	���m�U ���o�����$�\�7��4�R�W���g��M����:.%M]QU#�ϟMx���zKˤ��i&<��)�&��]��4n\� �&p7?C���+<���x,s���H�c����/sy���31D��p6'Q�[���s��yK�y�LE�̋��e�U)�KJ���<Mc{��i��]zı�l�2�Z%bX)����kI>3+��n\?H�u�k�ڶ���١�~\��4{+��"Ѭٓ�NnlKk�ee�C�Z {�<�e��Ѝ|2i�
&����j�"v�cF�E��`K.R��#�ӷ��>�>�Gx��h�`�+n�o��g.�_����Ϙ3���qpi�%��>��$�H��o	�<���$�s�4�%��O��x��a�Nբ1�8��P��~9�O��a��17�O���u-�wm�S�p�:��e��*�`���Gu�w�-���/�f�֡�89.'�j��9oά�S�y�B"�L���y�����Ҭ�i�f('tm���0����"pxC�U7���kp�{Jg��B:��8<�ӹ����eH��*�Й��ߴF���� ��o��l�>A���P��|�b�?W�6��
�f�Y�W;��6��H�,&v�>y�4��}�u���_�����%4��ʩ��s���	m�U4n������V.�*W�x����͓]��<:B��dQJm��>����[vd����C��6�x�1Y�c“�N�=}��b��<yMM�E���zC��v�ՙ�]����vZC�J�'B��⦲�0�9�;�[9��M|>!���Q8�?��!�����*	��HD��$�qW@�MW�|��L�7���
`۽v�\���'1��w���yp"8�jq{v��!
7]���`�ύ��u����,X�H�t�c:��**c/噣���U���=�>�-N�[:@�7}�
�(�="4���Z��O<)�7�кp���	��h��o�/7G�{�x��7�$�/����8�X���5<����dR�Wz8�hn�Cl�߼��u�� Y�K}��H�'C_Q�����M���Mx�9z�����Uۮm�>k��ז\��\�j߮���,!���,�_�<�DwmTwQ^)���/_A�8�[8�g�B�]Ao��ϕ�l��<I�F��^��Wj��*�_�����#��i�����$����ؿ5������*��
~ㄜF7�zɶ^���V�zk+"0�z#�wp;0a�Q���4cF���uQM��l�eʓ���p�[c㻍�r�H�Ǔɶ�+
�q��}z��~D��.��]N�v	�
�kI�~�3����n$}�����|Oy!}���XE�|B�Kx9��ϓy��Ӧ�A�H��t�|���[��<�f�O���~�!�������mt���٦h{gV�>��7�4�$n,����;��2O�2��ʏ��(-�gE���3������[��}�yD�
���3��A��:�w�-ܻ9�ޖ�]7�`�=6�f���R�!�E�Ծ�	���W��a���H���|���
n#�)"oFY!4�d�.?�\��JX��R��*m�����r�������)0����G�#m:��w_�pH��N'Q;qVL�Z'Ӏ[�{ܶ��57��h������<ύ�k�;::>q�F�E�G��v�@t���E���
�5��ծ��>L)�б7"^�k���"�
BS�-n�u1�g1�,&D��z-w���=�P�鶀��ص�6�37S�9�;�Y#z���'�U`�b�!�hVbTOcj�&���-фl���P5]%x��ٗq}�A��������oD�j��X�K(�����d*_9��8j&9��F����Z�fj����:FG?�u�D��Q]���ް�*��y��Kpb�(��!
ߒ�$�#��0בy��9�ïd61V���H�HE�I�D�����ȩ^	9ҋTC�2��\n)�#�8�e�۬R}�L�ժ/m�ө�,.�˾�iJ��*��J��$��9em9�y�	���
���
2�x��i��ch^�"3
�xu������+�7��Q�o��)���Dݿ��f����I�:[F�
6�E��C�Bb�k������`�DIdo��E}5%��6&���-;/4pmcg]c'N�4���RZ�K#����#$��,&2нx�'�0O���>+�S^G�/�k����wM�t�y��^�:q��ҋ���l�����.X�.��^U��B�������9����&������j��ϑ�ߖ{�%/F��d<l�m�}�o����
�TX����H���j�Z�8�Z�xv�+���)nE� ;g"Ki.�B���֥����i�`Sc[�greY�%�2�j�k%���:�ed�ZK���u9�--Vuf�\Qd�[s��";���d#��یn����|+�c>#p��e��/7���@:�r��mɢF��2n�*�\�_FU�4n��/k4�Ylf��ur$\44~�쉾����Z?9i����ipż��*P+�ꘪ��Z^R᩼�h��`�Vv��X��aԏd�\��{�g��f�o:N&���W�ܕ+V��7�9��p'�9y��|;m��F���&~�v�F��8JEmA�P	8�*�4�nK���,���L���r��u˖�lom
���z���=����1o�]��v�f��PxRo���n��O�ɜD�l�hx���(\��s�2'Q:�y�W.�r2Z���؛���@b�Z��2�s��V��
#h-q�*��J���im�%	�XV]���<���&f�72�P����E&v�q�Q�^ye�i�R�2��Y'����R��U�zQAb��}N.�`�l�"�.)]$NM�=�@�R,�L�:iz�BSRE�']7,6�貫�X�~f����
�d�vs[��Y���*��N��i{����s?@d�<~��o�&����-���D�_�5��?�����v�S̼��YG���3`�w�e?gO�{���0��9�;ON~r�W!qn��`6N���w�7R�?������Q8��o~^����[^��c�������A{\��+���Ulk;�Ap	/�R^>��)��Ý&�.��x=��0�t�_���lZ�T���O���1���;��"���2G�Gr/��w~G�n�����"��D$�8��P�`o���b΢˖���O6U�z���5��kB�?Mm�W�
��k�V\�]�9eM���x����)������~&�,q��y�3'�(�?=�7��s<A�}}
0�߰I;*A�T�I��,�u��L�*��:����RY�Ա��ՠ��HOǵO���1����D�A�"�GE������c)�Y����O�?�,���菐�D�O�����`��?�A�~,<�����!�LD��{�H;"�h���#
i��F��?k�"φ5����^�ooGJ�⾋��^ط񺎓'N/�b���4����{�v4�&�`�Q=���Pg��I��h�9Ht��)���ɥ1UI�KaD#LBg?��g=�y5u���R�����[�\;��ʌN��\�Mj/i����z��ӈ.�-L{��;@	;�}ݗ���l�y�&ϟZ[W�S��u��_<m5X{�Q�2�c�|��G���\Wݑ]U���Z��7�>o)�,�N�l�Ad"7,\��>ڧ,y��2�����=V
�f�/;��.#�5�5�>�o�"��� l�-���mW_�a)�^6~ƴ	�fSa.X�~������Ъzu�m�B��d���4�k%jw9�#�M�w㴺��c� 3{)�������tN��4���q�gx���/�}��
�9m͠�I�T¾SZ�j����W�4���Z��|x���$��at����v���mpiW��E��Ņ��V�p:�Ě�F����������wm�C�lu6g[���+/t4�=�3��%`��Z_��j�����S�}�
.���ꚲp�TW�G�?)��,y+l���W�e=--~w�)��ۯ���}�¨�K���1�vs$*?>X	�~u{n������������.�]sG��������OK�e��T�.�߶8pÄ�qm]�@a�7wn\�$'<��t������|A���e&�[�^�4����w|���g�]u��S�]�g��={�Dr�Z�Kx쪢#WayBy�z\�S��bO�\���ه#5{�%�b]�IS𸯣�����(+Z�<��t��Z���	����5�Vc��5wr���k�\�n�M���զ&�9~��B_�6�O�^?�r��dA��Ig��Nm
TO(t,o[�Z�&e�SCu�|
�mvg������Se�	�;�q�"��ߓt����K��p�����ީL�P�bL=�[;�����V�+[U�ɾC�'r��ݙ{���Zzɕ�g����zf�O�k�:s�<���<�t���jUⷧ�3E���*Jb���t�+׉[�f� �������cnh�\�[�,ѵL�f���	
�WlXм����V�����]�&�tJ���PC-_�lS���Oj��œh�c}��D��M��0��������#�p?B7���{~���#[�R��������Z~X/B�h������kp'�dD�W��=-9Ҽv��E�%E����x��e�`��97�y�ګ��Z����T��8myռ��
��4��E^�)�t���,�6����<��e�	�{
�"'VF�]*���;�u���i��*�"�i��F�C�~)�w��ǹ�
2����/f����M�$Z�w��JY�?�����F)c.�a��8�`kx���H`ky>_=	����4`zI?�05zw��g�s�4�_xX6�k!x#1������a*�E���T���T���sdD���ߠrp0z������7	�B��`��L�����q�ޟyXz����ò^������r`C��%��0H�yȡI.Q�!P�]SUU�US��G[;�9�и�#$�>z�O�;jrOz�|�@͸j������ᇛ�=44���;Y�@��w~z3Q���R;��yN4�r�=�Y�>T�;���v��	[m�բ��[W�V$�d��5�<�P\c���F`��m���e�rK"�^r�T�F��s�����(rOWQ�����`�eM�K&J*s���ƺ�
,tn�72� ��]��i	Y��֍<ZKq����?���͋�Y�u#���nz�dn"g{�7���2�!̪Y�M*}�N��e��jq�E��l}nNí{V37�G��o|��?�)���7��|��[��ы#o����t4&��f���47m�&=��Ϊ�b�)��n18ƕ�N�p囚3"�s��eYM���V��h��Eũ<�8��y�"?���sQ9~e�6�4�1	���\n������k����H�]�=SI�`k^NN"�3��٢�{�I�#�y0 ����y�Z�o����!؂��L'�{�ΛW�c��s���Ի隹�y���#OD���,@8�;w��N��Й���-�F\̵
�3�7zTZ�CS�رm�We��4ʋ
.��2d͒�Һ�f�hV�D�.�8k����8�r�S���g4^P�.��-��d7�{�7f��>�UP����g��b'}}'���~6����cײ�uL$'x
ޏ�P�uT��W�~�CW�� [���8|!��g�}{���{�{����F	>�<n�G@�Hol݄���y�
Ls6H��6B$ނ��]���z��`�^���ތ�'�d������:�Ds�`\�����T�s+��"���������}#"z@����1nN.M��T�Û���/���`F�F螪���˂r�uЀq͜�W�����������v零�P!CH~��C/�<���-۳���,lk�F��W�8__�?Z�<�&�f���5·�!�I�<x��о 8�P١;͂����
@A+/|sqp%�<�y�cpO,�8���)&{�T��5Tʞ�+r{�F?8Դ���u�R!/{* -��G�Hv�]��h�c\;�����U���C�\V��q�+���D���ݍ��}	�r؋�s��W	�`�z�ꁗj���|����D�e\oW�N��� �������Q+��.ޮD}�
Z�A
G7'�.n}݃uQ�~p؀ج��2�Mqm5p�.�Ȼ� �f�W/G�7{Q��,��\s%��� ��{OT?�>��^0��z=8Ip�1������*��� da����ǿg�Q�տ�Ԥ��'���_��J����{. �x:k?@&�^k#�cԮґ!j�;��7!� ��/e'L�T@I��rO�LJ�+�FV��ص��:�����f���z�7q��@"��{��Al��lI�-�x^���q��4a^ή�G͔�{�=���=�ّ^����#��A�|��e?��v��8�Ԕ'�"���q�p�^!�T�wA.��j���qc�oD�O4��� ��2��
�7���]����,(G|7�"4��޺O���s��}��Y�d.鼨]����̂Y�+������e;Uc���&��X��y^?�v�g~.�x<��}þg���.,y�Ppߞ����x[���e݅+��st�D�e���K�D�*?�`�[ˎ�bhR�l���`AT��J��Od��*���ʷ��,`!QMJ�]q��,<�,Mpj�x;mg�뷢v.�oa!��m?����Ľ��z3�~�V�zr}�1K�N	﵁��c�_y
ŵ�"�eF屻���0��J��GA����M��*���؅:��F�F:�.���!��R�܋P��{d���� �/�x�-��-�ג�Y\u��㇂��]��ۗ�%������X�~�]	�}��ŽW���.Aȟ��\9���Su���-�Qۜ���:U��]��ئD6U�w!�Ǘő��~��Q�7R�U��߅�����P&����S!ߔ4�E��y}N\�4އ�����5A�i��;⟎��{��ۂ�AO�
s�CB_��޷O�%�iOC���k�������=]b魪w!d/wZ�7�>��h��W�_\���&�]7�����H�^����g�'��f4�7r���>�=�U?tI�.�Veo!V)W�#<U}�*���^�mq~2���҃M���� (��9��L�}���`��廰�W��qk����U�����(�;�+�����]���
�}�����b[������&x5X�b�O��Q��`�x{��{��p�-�;�E�F��5����M�i�Ȣ}�.SE��U�~_��'p)[����5Bԕ����H�����[t��hQ7	\���ۂ�m�2�}����}�[�„����=Y�[v*�=��m�ڃ������1'?)�o����_(�����\w�mS7m}4���\t,|�b%�Bc��q���i{��#��isB����w��z���v˨��q9u���-w�~pt�w_�
���0�&P	2�l~�E����@��M��[����1vLD�/pՒ���5�氏䃉���sl�߽��u��c��p=;	���g}��N]0pՊ۪�\�,�T>�si;!h�ۯń�����p8�]!���c0b{�}���C�/���Ķb��o�q0>`_R��5�d���؝�bۯ"��>qۍAp�GAP���`�Q{��p��$~��ۊ���N�qǾ>�		e�߾��pޅ�n���]����W�p�a��Q�k��t���$�'N
������e1�ӵ��tf��kw�?�<G39��`�+�r�٦����&w���m�6��M��=�%���m��.�#�b?������ѽ�}�#*�y�q�F�P�m�{���PW|���5ڇ�߷�G|��_Ɣ�5��G�o��~��O���#ȩ�8?�
�
M`���Src�(j��yڏ�}�}5h�Q�'���?�c��E}��_'b����5!��g�x%�g���>����"\0��~|#�k����t��+�{�-�.���J���H�熊��bu/�'�O�e@Nf�Q1V�s}��eG�X{��?�Ӡ4��A�'i�Q�|٦�K��t�?��/���7������ɫ�O��Q�J�~7=U��i�S{�7�q��"7�Xz�� ����*En'OQ���J�/K�?‰qx�<M�<[��� 8�~�D�f�]C�)���x����"k�`ɍ��x�oC�gJ�!��?Q��Z�^%�L�_��:d��
rFa��LUy��'7!�<�9V��+�g�K��O_�nW�:j����k��	^��x8F�8��|$���w͕E^�p!:�=�kU>��|�|��Z�eR{�F��vդ���%����r���0�;���=�I��k:M��š��ZW��J�8�t��f��-7,V���}67�&m��ԃ���;��%�W+�R��} G��?O�h����ܬ�윜l�7��x��y~G�^
�4l��T�ܒ�������!�Up5i�>Ω�·:
��n�Q-�(.U����Ju���q�ޅ+�m"%����-��*�:�bN]$JRVU)�T��u3\
M�~
9[�ǒ��ݬ���W�*����_
_��7e�:�r+������Q�@ug�3�:�g�#�i�Ku���_�t����ނԲ�Zg��[��+�D&A���()J_�j���+�}��H�_g�-H�y��7��������� ����TJ}N�_G��M%zC1�^w���i��|���������h�sr̦�3<�	�n�k4������px�!���������:��n5+U�GRW���(T�2x&��hL��&��l���6x�s�"�4��r�5x����
[���&]�d�p�0�?��/V���!d�ϙ�i�һ�����Z)eV����0=�@c
����L�sQ�O��\��~Gc�b�30˭����a��j�P�*cQg�`gg��2�����w�	��v�x��[8:r<�QPC��k,�D}�-R�lh/Ft���H�W�eQ}�`���m�v}��X���9S@�4��Yg�>�;��!�NNQ�kr��v�E�"�FV�W��GɎ�߆1˘�Hl1�½��j&��|ՠ�"gBcR�!v�:s��re)����X��^*j�Jk;��[��s�/5�j�W��U�\t�E[� �<�丅��I�
�&��**�C/�
{�2K�K�e7�
A�=ZpksR�i
.fD�
T��������{ý�>Eេ�r���>�$߼��F=����
ɄuN��Z˪�,�(��fDXr��MB"�[e1.�o�Ҧi�]x_���	��d3��t�2D�:�,��Buj�^�[�r�}�e���|���ײd�4�R7��j�h*�R7��/�6�m8:V�
j�	�_�� �t��G�����G��
7ҳ �w
�3򂤞�&�3_�#-o��;���'���ߢr;���`O�\&���c�aJo�(��ާQz� �7w<B/!�G�$�����/l��C�������o��N�"x�rqj~�85%�?����_��\D5)��?Εb�m��KV�r09��uc���Q�7��kI�Gq�xqz��E�X�H�G�r�n�ޕ��(^��}�Q,�o�DÜ_��—
�X#�oh�:�[��*�������/�?F��>a�b���ś��
'ԣ��[���M��
>Β�>�6�?����_>��"p��C5�����+a9�8�W�p��~&�r','�ǔ�p�B��~%���۸���	��ɵ�G,ףD�
E��o�pQ�	�G-��s�Dx�*��P�!�M���x`���x�>>��0��
]NFJ�X�S8��7�XT��~���ί��#No�$ٴ�Re�}E}-M��!xF�jPh3İ��Kyơ���t���#ʝ�]zu����SoZK�g̗/Z<�%���s��E��*�'�r6�/�����x9�nJ9���Q9U�����ɧX�D����=��{�:�ɚ�S\��3�?lOE9O��gh�T��=�-�=?��Ӆڳ�)'mώ��"͹�$qѰ��"|?�^9�ؔ�!bs�����`��r���g��t�'����؉�=���R�3�-�6������	<Ү���)��y.�z���jCfz�9�ˤNp	��e��C䲾8�Ⳟ�'��̚�l;���y.�0��F��?�B>m��1�<��N��s�o��\c��|�
�8>Q�=E�\(�����d��zϴ��7�qN�Yw	�y?!Ύk��(���8:k	�edm��q�����'и���2�J!i>���\�;q��i�#cP�u���3��K�9
-��}��=U�U�b]��@���y���'�;�y��\cr4���g�]��{|&�s��z?�h����o����q#8!�8�ck[�����d>g%�5g��QC��l8S(3Ĉ�F��#���r�:�5jI�B�J��:���"7ed���Lo0���(���5yV���k=fѬ�5j�{���h�8����םb�۳���M����⢫��o�Gյ��&Ur˴���S�6&/X���5�Û����3/w�[G/��>��L��5�2Pݱ�9�o�))/�.��^7X޹��=�<P�2���L\�n�oAN����B	�L��x~�����@��=�w�'�Y���C�9��Cﰂ�Yv�
�V�4Ep����J����?ٰ�g�/C*�Jc3�h����s^b��ke
�L�솩#g|�F���F�ޓ�[��Oi之��}2DnVGR�����؁Z>hN��i4�Ӥ�o���9��::I���uG���1�H��<�?���|�_��i\�UN\��9'f^"˔Hӓ��(�����h,�k	����V�y�
c{�ܟ��}M�I#�7��O�a�*�~p�!�Gk+�S(�džjA4��c�A3�M�Y�{t���D�M��y�Ի���9�_|l�ώ��~;��R�:���W4�[�k���w�X*�U͗o��@;[���.�뀟o���M��c=���"��q�0�Z�4v��E�^oϼ*]يၹ+J���u
���Ԟ�m�(�e����~P7\m�
¶ˁ�5���D-� 恋u�x���(A<,C<d��I�$l)��$9|�$R+([rр-�pm�WY{�H}�Lgo3t�9�v�d�ހe���<� 6)�[�:M��Җ�����5��=]��*�t۲|�vӲ�=B�z�,3�7;Z�*��x<S�+ƅ͉��XqǂǴǹ�n$���7�LeG}',��kO��;v<�q
`���$z�G5T�A������Lt�L�x�a0�������;���>������h��Dp����yx�~���9گ�/<#=��XW]��/\����ן��yb,�(����9�w�N<��_����1��y����h\���L����ؙ΄urnL���pdD�$.x�/\G�M�6˹~��[����X���/
N:{�z�g.�/5�W���4~����;�Q���#�RQ�Ia�ig$4�������p�>�8B�	�����ing$7���a�wq��E�$�07&�K�v,�b���z�V��6��|����=
V��Gc��OT~�+�_�2V|F�)b�1�����#y�Qz�&m�mM�����2m������ҿs���;�Μ{���[����&(�S�F�_&�Ǎg)/�혀~l{�i{��뿃���N�����gËoo;m�Qrƶ���{z��,��SN�OYd����
�U����7�8�7���c\m�+��SlyG��v�ߏ�Q�C�����=<��E���XB�fO8�o2�h�1�;�g/�!��X����'*?ɕ�����x�/�\ϕw	�y��8�zV{H�v>�ʡ��s�/y:vJ�rZϨ�2�|��ZN�e�r�>v��VB<�N�n/;m��ӫ?^|��i���#��G�Eڧ�OL}4�LYd^O�Y�w��yg>��x8������V.ל�l�ht����{���#Z�.*k'rr�YHo
?H�'.OM�|��ᇸ�KI���
_X���p�삼7�?��)n2�ry��;�/w��������#�8y�'i}�J��~'��N$<Jb/�� ::��C�&��`nMGz[H�Ha��S�|G���{VX�S9c�ߓ�������+�k��F�-�u�|�%��~8M��o��7	���%�G��P��8��|Ǐg/'�q��X�3��OF߿�Z��S�c*-ψ)��
-��8��cW�PF�`?d���/}A�Or���|5������~|�/��9��HxT.e�;a��k`=Q���)����`�JGz[J�i&���[���{��~�=����ʱ=~��/g��2�|�[�|���_��u�Y�)n���f��{?��c���.�8��2�|��ZN�e�r�>v��VB<�N�n/;m��ӛx6�����%G|;�i;�‹�On���κ/#r�c�-�4A9�n�{�L�n��[���-�Y��/f�r6z�u����φwR>ƺ%NΓ��Q���u�����C�b�ӱ�#�i\y�<�?���O�(��O)VB���,x1����՟
�|�4N���1��8<�<�?�w�}*��vo�r�$��2y�����{c���=��/��/��ij᝔�a���8)������1vOP_��y(iN zW�INw�]3�N��#�%Zep�S�#�T��ǡ�I�R���|�
?���0GxC��N���//�~|��/[�hV%ss!��_!Rw�-��\����$���?��8�ւ���J�%��{7Gc�E�>�@�BDg?|���pr̉ʁ޺%��1O���	���h=Ne�&�;"�`�(��C}�["x`�������Q|��D�Ļ�rOE���/g�2��1�]B��\��^�60L=�K�{"�_�K�a���(��2z�+|�(U�IY ��u���,�lX�̈��u\y\�A�����.E�P8x/�cN�p{������&�}��+��Di�Y|�h���H�Ax�����!���J���߉�f�����|_n��������5�=�';��cRN��͢�"�g��i�E�gA��嶸r&<$:�-���S5����b�ۻ��K��~G�u8���NΧ�=\��#�9�>��^���?9��y|�Ng8��8|�HD�?����{��÷2std�\���>�9���C"7��]�m�z�
C򑟆W�~.�����|�+3��¿�k���/arz|����밝��9��^��B�ptZ�;	��p��r�_"��=��gr�˙L�~
�+c����G}������|u�O���\�0nKaQ���RY>��J��?wN�dZ���
��k�NOA0�9^_m/�nRg;ί�U��զ曳m���d�q�{��`�P��Rx؟MZ�ѨӚ�}���,�LMO�,u�\Ã�U�2�Ԫ�����P蓤�S���:M*�Q�ٜ�m2�3�L8��~�S�0��_��C�ׁ���-|u��E�2�$@������]j�M�c�Q���Vv?4/8e�I�Tg��Z͍��"��Z��U�����`�UU�x�W��r~�cWN]���Su��azzfz"3��a�8HA�c@( a#A�*�auwǴ��D��uE�]��{��^��X����{�=��s�=�z�\�l�e���R��Q�~X"U�.�&2(�j��Ÿ�
�����E.��r�L�PkuB�V��0�fS w j�Ț�K�j:��N�
٤\.	Y�1��J��FaW�w��S�����j"����UL��Ոg��Fg��Z�ґ�1�m�N�e�v��[î+����”�QM�&K���Xd���ZMyr�T����g�Y;��@�
��C)@�b�G�0��9f�0��<�t�7����i�'}(���Y�QW(��i��j�y�w�fF��l���ƭ>�a���߆_�'��&d7a&h��/�#��
�B�_����*�#݊��3G^��
��l�
��B�����N�����y<p�]t}8~�N=���!y3�r,�x;�������L��p&�u.����r��.���hR���@(6�$߁��g�����)CO`���_*�I��\&��|UxR��`?|3Bͼ�`t�=�3T#�V��_�:��Cv-}�5/�w�7K�''>xnfWRh�O$g��,h�*�گ�-"��q���z_\o��p6\���m�ض�{fL��DbjI,Ib�hءе���Bv4
�z�-���Zؼ���ɯY��~;a�Z���	�e�w�p���6�~���c�=!
x����S������9S(!�b�~j�z�>�N"�HREL	F��Ҩ=k�OD\D�j��Cb)>���7�*�FF��)�`Z0	�k8�Ccp HҜ'm�Hk��>@^���rS�s�Z������]���);~�Jާ�wT
>�M���h�A�!���1��/Ҝ>O��_H�>~�(��4ILM�O�K侹fa�#W�,MO�%f��}�l;xH��$wOi�J��g��:|r�T"Q���j�t
O�X����-L�ʥc����Ƹ�P��C�K+wW7�M`��a�A88):�}� 3�
(�����g֟��okzb��P�]�j⼒;<w��>!t.��΁w\e��o(6oG�o��`�)p*�ylk�\ 
��i'z(�v���00��9�7p��OAa�$�)���Ҕ
���3�!��x8^�Y
Q�J>1���Jn���٣�*%�n�xW��d���&ل�h:�&�т�cpP%�-��,Dь���駚QJ�j���y�U���������`��9��m����Ha��$@śU��!�tN$ILG.��[�F!��&�=�,�%��\�,�,������A�W���.�ܜ�~����	�g�R�\�i4R�����/��-`?��#��A.}�K&��*���W"%�b�����7�Lh5:�7��]��g�觧�&	���."���Ǝ�����|b!	��K�>���*��hjO1Z�A鰄�p��snz��G)G���%���N��3���D)��u��GW�2�K�-�%��R_�7�7����ܣ���}�j>�1��?.��t��5��,c	�N�4�s�j:��I�������mC�jh@�m��C����ۤR�V�.c�i��\��Q[ڠ���/�œ᠌��m1�;�v���C1;M{������F�f�����[vœ�sb���v�쫌�8�=�����s�=+,�(�D:\��ˡ��b^�F���^��Y��!��65���=	�iC�9�[KYn��b(���/{�ȅ���fñа�b\�/#
�!��Qk�*+����09�ůW�_)�j	�
��sp���<���e%j��R<>���Sl	J����`���S�[M_}H
�%��Š�M��"�8ګ���R�W,2�ٱW([+|X��re3���܍�|���3?����@�֛x��0 a���f}��d�8drC�fO�fVg���IG�ps6��~����u��i��j�;�U�p9g�����bW0v�n�Q����?�����=؋�y�7`G?�U��_�̃߸{��xjWt���s�}���U����Zl�-�ㆁTz�]W���ɘ�WW�f�G{R�(m[��2+��cz��t[-�^�{16r����B�B�
����^X=�ǸzZ�^qJ��Bm|��z�	i����q��0��9��H9C��R�tN_j���w�\r����s§3%z�3�lzϾ\n������@0����A�Z��-��͓���iUE�j�F���xݏ�]�����xr._����j�w.A�(�=��P�ș���	X�E��<�sn%�Žѕ����hO��~P"��
���\N1��eS�����N�Ɠ�*���G������+�~�X�KNų3���|f�@{�Vz���v/81�K{��_%k�y�k|��.�L��.��اݿ�:�ܖ�ow
g���/�\�������όOH�K������Xlr�SL�<(k��V��|�_��Ru�=�ЎZ��tњ6�U��G�F~N��$oC��֙�޽�g#הe�K>{��ԕ�wY����z��נ=6"O�Em����s�<~��vre�k��.����m���}���+��At�y��ԯ�J[���CŔ��_Ȼ��OpN6N��gD����V�{Y�T�iA��7wz�X��C�=��Eã��N��A��a0:���࿡�n/�r��N�j���p�d��e2�\F������[���HvnA�� �P��υ����d#���Q�2�3r��ki*��7k���M���4z�E�P�dU��VI�+0pV�l�гV�9q
�T�v�0�ނ�<M�(�b�bK�	��
68A��3�������D'>K.P��7��M@f~�'��"t\�*軩��r���o�=�?L��&�8���`�z��������o�wS�݌�
~��'��oՏ��o��X�$��,Pq]x��j���O��������7�;���;kw��,�PX�x}��`���80�����80ϧR>5���x0��{�.�[�ۂ�/п�]�?������'�3u��>�����F�����Џ�_���F`�+u�_�~	X�.�|���W����@�4Z�Z}��N��O��fh���9�fч�C�["n��c�T�3wl��!f*�L۪�YX+.НY.r���#F�Yh��vX�����F����G�5�Aw5�8��n�>
��g,E_e��7iq}��}�ˠ�cnZ�4Q���@X����a��p2��'%*�4=�&�~p��_��L��1.��-���c��Y���{a���.���d$��&'�w�}�p�.T��]p��D"�~f�l�C���0���.|�Ge�G,��7�u%�~��!f	qx4�)���.��K������kh����Fx#���x���E2O$�3X�B����%�/�������2͕��S�Zs����"�����C�\��~w������@���ұ��D�p�}�*��`f�j#����2seE1��	hBH TK%N.�1�!$P�[ �s�`a��1i�vS/���K�
�GC�U��=!���/$ K�f�C9�
w[.����$�Q^�ZF��+�K�#�p�`�ж1��QC��.�(^[zG��X��n;�ld,��F�>�?��~撷��6�d�E1�PatTH�X����m[��`c���*�K>L60_R����>�H�����Wd�t�t��ֽK�X"��O��cCz�g�i�sr���?�r���\��Ś�@�-�Ή3�u-{�~��oa���>N������Y��[`�1�"���q�.wxa�TБ�@\�sÏT�(O�B��WS"�R����"{1l�N�BÃ~��x~m�2��|\c���b����K�.w�<N�}n�Q�$�eU셏N�����]�Xdvڽ
��
�ڻ��9N0�齎_ȍ ��щ_��s8'��7����O��5�-�#���&]�9e1y7ݛ��dY�&QH%K4�0)<�Qc@A�&��ϗcC&��@���J�N�s�A�s�n_�9��z'lw�8��a�^�_�U;�¦��V�$?�_� :�߇���]���!Q��Ґ|b�k��'97*���ǀ�=�FG���<L{�铌҂�X� �	TCX�'�b(�L�4~:ﶘ�*0�/c�?€B*8iɝ��"
�g�{�R�Ӏ��m!]�ڂ��&΅Y��=�}��e1.u�Ӗ�V�|��HD�f�P����2�cN_4s=�)r�B�<��^��gz
�䆙@���QyJ�g"��wO��ER�Z�8>�����$�jxY�}�
�>��aAH�G��ǰV��ⷁ��h��ad�u�>���FX�2�zl�0�+�0Pt9��
slDT��@f�v��\��֖~�S�f�g�G_��||[�t��~��Q:@$�%�٫D|�ۯ
�Ԭ�y��rPq�n&��~�sצRf��nll�uÊ=��cJ�<�ĵ�oR���/�j�]t��a���$�t�	�*��sm)��a!�2Ԋ�὏�5Bd��������N_M5�0YєN�����$��ˇqse�ke�ɴQ�����_�
�00�xR�!jg�<��Zi �'�����+S#;�؛�:��p��dh�n�]c/��Qc`2���*G�mZ����*aRs�jʻ�n/�s]��t�J`m��"�0g��}^����������ҏ�4�̝��e4�W��gɿ'	&������2�DP�v�K�Vgr��w�>���(��ٚV0����K/��ʔ��ƮΩhq�\?��,�D$}8c��%[?¿�2�ZC9t��җ��]��N��;�[������%"�^��['�&����b�=<��Mߴ��6�D�E"3�cȢR܄|�EAJ��Y�FT��ǘ���h�X�uz�0�wG�W\��NZ��S}H�뚱8�9��Q�Y��Y���{$���eD����h�>%��z1��f�=�z+�o�{����>��x�-.�+(��
�
��N�?���s��,ÁP�vc�r�|�K����k�
�:������L3���g����2��og�=9]��Į4~3�iu
SW&0%��A!���ʐ^�j1[쁇C��}�޴.�tI9A�^M7��/'ؠmȘ4��<�t�4���a��Ҟ�7��b8?v[q�E^�u�߄��åj�`�+Q_c�ne�י=��S��kK��馥f������mc�G`FP�������*������8X���kږ�jr�I�!��s���@��&T�0��x	�
�ڰ�m4Qze0��A�{��iN:t���W�\���IB��L��Hā˨m6�P�2S۱k"5V���\N��0�:���h�Qm���h����L<�]�`ݤ҉���R�$mB����#��K�gF7-�z�!�*E�	~=T�X�D�:��>�IQ�M4I���B�ޛ@4y���;��a��׺��n蛃����w+MC)�ch�)+'��*%L	R��)��X5����b���/;>��?å��!��"|Q�Tz��Ӵ��=4QYM�\]��F�\�t���](�=�����(L�J6a��W��F��\����B�.�����o:i��a?���K�&v�/]�A��h�ٮ-'Ʈ��\e��i�H��ѳ8}�'���x���#?�xКՐ�TFwR��{�w�h:W�{�C��PM'�~�A�#6� 3���q�;x������.�=�Tj�u��„���b�Y
����āva���V�.M�Bo�����v������Oh�L��T��l���_�c+`�5޻��)��_ͼ�K��E��_M��N��w�P��j����+�tu��FР��;
V��P�P�ׯS�4�;܊���}��ygp+���Ј���2Z����+����#����V�/j~�"��R��w�m�0)���I��=rX�Mů"�0r�bd��
�A"<`_�0�3d�h�}�Ͽo"����O�S��?�t�M��=h��zD7��e����,�����FA�wӶ��=a��n
\����`(������7�=b��$�\�x�x�Ac�׋�*T/��ދ�%����M�T�B�.�BQi�����aN��a�
�6�Z�8�(B�o)m>�Q��䛙4���d��^�B��7�G�Y�mC��=�����Bz*��=��e��*�A?���?�XS��%��ύ>Pb�L}�T]։���}�/��*��SO��S��2u�'x�
O3�{��A�!��������=t
oˬ`���sRRL}}z�R̰��T�1�p(x�(�.��EQw��
q�++�~��͓Q?템9V}�1E&!�P
�ך�5�<<�*ٍ�f��@K���&_�%�b��X���-�G�j�($]
�T�\ԗOg?)`�f�^2�ye��O������M4��SQ����|��6m��B�O>Pz��G�V�i&���k��]?��ay��K1�-ڏ��kc�����;Z�~�&���s�X��:z�}��kYZn���}�p7d�0^f�҉}����H�l^�� /�E~���3-��
�v�?#}&�\F1�v�ſE�Lrkd,08V%�1�-�pq�L,�����OZ'���'[&�f\~s�m.�ʯ�W��z��2��g�G":��;L������u��f�P�`�"/�U�3��VZO~�2���כ�ⴜZ{1�1�F�G��p��'����2��+tL�$����[f�4=ĭ�o�bj���A]���:�5il,��֡���
� ��+�vj�?��z�����N�x-$D��A��>��*{Ķ���wݵr��r{��Sv���ڪ�^��W�?�;�Q]�=�o�k�✵|���T��AM����tٳt��'�̿
�
p�D'���`���'��-~ɷY�=���ʵZN����h�)��6}��K؛'~��wҘ���#!<d̎�:m3>Fa.cs�f-�={��R�o�L�6X��K%y|�<�sFu�Z�����/MxiM�`�����'?錫�R�z�cM�0�X��sE��R&1����(]c�QTɾ镍���1��G���J������}1�%����K�_Ǯ/1��C莩���^H`>��E8}��,�(,�~����r�Eby��H�7�?�(�}���A��R�o#U`~��Ũ҉�7=W|&ݶ���#L�y�„-2�I����$���'������d���b�q��"Tg�&Tg^̢��I�g�ŀZ��.������2��y���\�p��Ͼg����'#��?��g�7�N��*t(.xz�e:��*uq�á�n^����ؘ�I��������x��}�11�&]S��/��=��_�{�3b������g`���S�F��K���7���dž�q|R���X�:|M?'�!bs�]�6�����Y����{�g:��w]����~x�4��u�
��:��sr"$g96�Q9�l_��������R!\	���nNNd��"u�l)GҀI�)����;/�yX:����i�R.E��o�Z!7Zn1������i����.u��M��,�߆��T}>���t}>�zw����c�/u{���n�|'F��:��=Ի�\}^ށ��|�
B�n4
���F�X��`}�!/3���V���w)��\�����h���24�P?4͎����4�����j�{�\��y�ޤ�ݐ�`���=h�4n��^���S��e6G d�kp��;^g���x�?m1��BX��_��sD��٧C��̎LxqF��0H��4�-��jz�x�%V3�H3"��i�+�^�,��ben�82���,��q�����ԑ��5jVg������^��b��ܘqT�{��)y񹡁�����AǴ�-����]��K�R�Q���6{�o|��͉��X(V�lf-Q��N�,\Tea|z��W�Y	�W9(8S�;�Z]����S��)y��T����ci��O��ԊgN�I���m�kc������әL�e�-֢mf%.l�o��Tpyg�p�e2��PpXەلw#\�PL7�k�Xv�$�}.+�\��m�r��m�V,�c�!�k+���Q�
���-X[�ӄ~�D��ԣ�:�u�h�����|�e;,��gf{�_4801��<��
⓻��3��b�р£��k�j\��)g�@)�J��n�MT���C��iv��#�"�[�l �r�#v��N���m��(z�ys6,����io�S�f����.eE��U�U&��T3}vsϰ)��w�5�A�eV�5�R�yB�æMr/�\y5��5>���S�����D&��j�k�-��{�U䋭1�q�����to���ԥ̟?�Bj�w1v��z��6����[���PK�
��9s|u\�i�-b�Z����F���V)O;�
'מ���[�v@ �f�>��ްS���N�#5��hs��3~��)o���<�
tx�G�Cm�a��v��x�NSc	�3����H��2�8O��Ņ/�u����XlZs��V�K���@
��d͔N�s9���{��/s�	]�/�Z���;3
V#k�P+�d�1�s����5�x�
Qi,���Dq��iDR�m��j֚�"o�K�Oa�\:�:*z���'�kRa_5�U��&27�ret�^I�\��M�{B��S�<�������h�N�P�u8�9���J����:fh&�kW�����=�YJ�_S;�]8;�f�J�_e9�Si]������tǂ��>Kg�ej�*ԛQ��d���f�.�8&
���2MF�W
7T-�rC��\�i,����>_��I��S��5J���`��*@���h#b
���Q�7��}�zH�Fn��*��}���ĮB4q�Z�%���!!֥�	��%�~�Dn�)�+zw�D�~�X:*��2��
�|�ɔl�}.�z����Q�N���#+�hۇ�2B�髿f*�"�[��Ʌb맼��YQ�����#�Y��L:sV��5�78+{p\�!zV��Zh0�����ֵ)z��մ6�!�[���P�J`�X��ə���I�	2*�5�J�]��b%_]J�h����}re��u�u�JS
�,�cf���F��Tn��g�݄:[X�^��0��U�D���Z�r�t��:?�=��߹
��>�W]���^����o�~7%��� f��n�Z��M�B�V����-��o�X:A�/haJB7ǂ/h�t�A����m��YY^7�-X2�:�[�1�����Ҷf�6���goy���Y۠kyx��h�ܨH�#��.�s�P�U2mGʻۤ.m����@r�@�7���?si�-Kq�G���
��g��JM��;�z"�n�8�V�y�o��;v��
{��n:�C��x����=��_��W�"Ƚ��"9LL��l��������w�p2��B"U�_�$���n��l�g{��.��,��}�*]�A^����ۼ�l�;'vL��-zS�Uk"�'�[�G��Ropr�eu��c&�뽎��l�,��Ҏ8�It�-{;���-�E��5|w�~|[qxK7g�1n�`��7����“�@
D�[��1��lu8���%��a4��F��q�{b|M����XX?���K`�\�xr׈'g��rX�E���%�kc9�{����_��@�^O�/r놚|�Q���m.��af�j�|&�
�4�}���	�V��-���7z��8��߱%AL���^�O\ �r�	�b���Bmuu�}��T�Z��ؠU;c'���ckKx�z��T�[p����e���qŬ�=�3ok0�
��#	�@t�w3���?ȶ����ID?�$^�3���ٍ�y
��:�xPc�K=�D1�J�ʡ!�[�a%V��'ƦF�v�0��O����m)6�c�O�ޞ�CN����O��e
ц��H{p7��&PZ��b�0��GUn��/�s3��6��M����;�^`�#H�}z��R'��h��jP.�<Y��1���f]��_�T�����p�G�:�}�:���P�k���k��$�Gk�	�S�å�ic8�5yUf��0d�%��Wk{��)U�ڋ^f�B@W�]A|����/@;·S�v���`:-�qot���,9,�ᦿ�d.���6̔7ߕC5��v�n��)�ZR�1[<j5DV"�O�E�@�ev�����rE��L
�٢�K2����i�cmvo�Ek#9p���C��w��
Gߖ �reP՘�te�>�x Z�f��V�ҳ����~}��_
��v-Tg?�Y�r�?�b����|��������u�y�����[�?A��W
�ںn��Ï�z��>�b}��Z�G�j>��{꧓qlDݘ��i�3��k3@�PTv�3�S��:���0����l\��4]����ٕ�;�LL�^�i	�gZ6Y�L���j��h
/���,�&��G�[���8߷��u��:v*E��Y�����x��١hfhKz)z��=J��}��ѓ��Gkt�����f�(��kto��q��̖e��|�s&R��T\C���<-Cj�K/֗�OZ4wb�$��a���e�w��
��}K�rzb��-���	%>��&m!�Iz(S����$�-8D��
��c�&v:�n�9�C����v�_��)L��'�`�_Z�t_�l��`���E�#�o�Y9H'�H4o�"��"m��1ca6E^Jjk;h����9��6�h��p��=Q|�ccc��:���#�I�S�t|`�}�n�M�5�uk�Vۦd���=@��Bm�}�uuG{��!�����������q�43�u�8P�A#�3g��-��1"R�K������-dP���׬��Z{�c�Zc�����J̨̫��&"	�Z9X��En�8]�>wVK��a���X��>�h]�����Ӟ�������A�4��#XXk�_Gآ梼�(�$���Y���X,Q�h�*a����e��3�p6}g�`֚���P�7G�ޫ%�s��a��4n��R5kK ��oX�,8в�wm��g��]'�+�ԣ]J�|Vrq�O^��N�#J�?@��4,��"0h^�����F]�`.�_b�P��\���Ҡר�K���[��%;Z}�H���O�O��yg¿Zx��k3�M�ی����u2
�Vގ�j}5��׾���.WMP#-���&�H�3j�����<�u�V�J�+:�z��K���o�����v��-�o�����O�L��T�}k�G~ĕ�#da�Cz���G�7����ӟ�v���W/�Q5锠��Dp�	Ic�<џ/9F#�'�����
�u����_�oЧ
D�'<jn�Fo�̚ր�ߤ�K�`j�b?�u��Lj�Q��E_A}��S���m9�4�kE*���%f(if�J��l@�zr�Lρ����]F�+��&�K�u��c���?����O�����8+��E� ��`��ϲ�@��b��G[�a.ZUUz^��O�*�ΚN@�y�W-���ާ±X���R�ޫV�& ������Eџ�B_<<8��EB��	��I�bt��}Azf�4���!U���:l�Qo�~��l�ͣ�5���y1��'/�����xƭ���r�f.:�Z�c�h��Eᝫ��S�J���n���(Dm��Ary�'�����_8�OR�e��4�)m���F@w��ڨ!p��hҚ��+[j���k:P�5�d�mQT�?��WX��z��#�r�zS�Bf7%�V��I~�@${�J��;3�Ug]6�Y�=!�W�"C
��(��.䫙�8�5��k�=��>��� �c��::����P�i�%��a����5|�xuw__�?D��;�����;x�4JzM{J�)O5��+��
E��J�|�	|�y�K�ޔ5D��F�å��\��Ugw���^q4���߱w�ȰTx___z"l�5c�E�oˎ�u˲!>o�C���̨�s�^���cY��6�7�z$4�P��b���H���O]I�w7��=5���i�G]��j�%���.y�ۈ�xW�;~3��

P�q%�񐂒3a�����.8y���Qa���|����=���T�U�����@� ���8������V'��Ug�IJ䰯pe�|+O�*��Z���6y�l����0C��,R����Tw�|�|?�5��*�k���*��>��j�������C�9T��G���w.�o��w"�"灲��0?
��b�l��O��8h�O�����N]~��[3���sQV��mg�2Zt��%����E�Ub�H�7�wMOK�'���;�Q�P�F�c�����`�T=F��.�&-�� K�-]�|� �c�73�3JD˖m������G����q�
*�߹��~��aTe��������XE{����x�mϢ���j�69��H�3\�c���~��e����sM�˷G�����(�)"�gZ(�*7�A��:���ZC����*�
��5��b���+,U����\�m�^���ԭ�[GBn�7�IY�Q�#ᑩ��j��n��
�P����r���J�<3���؈L1������#��[�=��ɯ4���\|2u����s�~~�{.��y��hfq��m���g��x���[G���I��ED��E�)��}�L���|;�&��6-G��t�ȕ�W���H#eV��ll|���F�1*nu8E9�����WeɊ��z冽��y�VrB66�LBɮ��i���*�`N�0�Vr#:xx��*��"�^W���=<jY�����N�.ɩ�ܬ�Y���9/�L.m,��
0���F�>A��ƈ����%�B�����>^0}%1�4k�ΐ���+`�|zBZ��k��P��d&ZC�
�S���
�w�LwU��1��f؟H-�A/O���ҟʲ[0�ڄO��d)��͆��a�4���@./9+W[/{m�#���Ǝ�����|b!	�������5^�K�>����	�է�U�/Ѽ�^A���25��L(k����s��~���'�0��t����>[���M��Q_�3@������]�T-�ժ���鑕t%PL�`�������$��RՄ�������H&�BU�ue���~����M�n�$}��Rg���2�T"V�±�͖LI��(	�=S��ʍcF�U��~j�7\�����0�hQ�oqu�0lc��M(Ή�7��lV��F�
~��H{�.s �P����������5��-�Nb���Ԗ�0\,>Mب����
�ex<-��FC��^�S&�Z�%�.��h�/��"��{S�A�-�q�R���~��~GR/ӑ?v�v�=�����6�?ހI�^ʢ��������>cŰoX�u;A�@�x��G0�>�Q�{���𜹰B��q)5��\!qt�ު3��Z��`�XM*�^&�CE�3�1��M��(SL\Q�o���]�0Ur�S#'�d��Q��0������7�2���]qdy�{_f��5��h{��8vX��z��y��۞)j]���+�k�
���_��&�f�N�{�?��l,/h���]���o��I�%7�Y]ݽ���-��?
<�Zb��F��&Z�I��|_�;M1ƻ�+f��؄�g�s���!�r��@�-;�#%�@@1Ԓuaw�!Ϸm'������C�Y�}�\>�0ן�����ݮҠ
q(^�.���#;��N �" ��G_(G?l��=��!5:[�4����L.�O�Z��q�{t�iT�ϷoÍ�bE����=�&'����Rk�A$� �(b���܈����S�S�}u���ը(ϒ�I�E�D2�n'���bN����!Yi*�sv$��1�P:���=���"��_�#�>oBV UD.�y�GU�H.
�a�J��g†�=3�r�4� ��y|`�QY�������X70��I�%�dg��v
�l�I�k_[��M.�M������MQ�2�GYAhN��`�`���1�����u�b��s6�by��&�tĤ�Qxg��yT[hG�{$���e8^&����ҽ��a�{9��j
�a����4�'��({<<�a��hQ�ԩv#���C�D��M���럶�=��Z��e ^����?sx�?���<0z���L�����ޅY��h>d��4����l���Χ$�"�PGB�Ǩ3�W��,���-x�JX!���o
��l��7���&���73���*LQ����2B��C5�7K�(�w�0�&M~��[�K^��͐Jn�����̬��[�M��&�8��#�~U�o8��N�����N8�jy��{�;�[�7Ʌ�-�1'�,�4��Rm�^�+K�X��za�Zew3�l���-���A�����߇fc�j&^��d�����;��*��hj�kG�$�=y+����`[�t�6;̀��ք8������/�q���S��u�Ϲb��cWsQ����<���`��X�z��:��>�KHW�'�yC��Y�Zi���"�)�=�(~��ҭN}�o����i��ԟ��ϿE��K����wI�vBe׍O��y����m��>��S�i8���
��qmV���%��۱�	��`$�v�7����jp���DJo�y�8M+S��ě�L�U��ȉ^?lJ�f�3*��b6z�KfY�D�j���=Z�¥W�D'�٭�#wA
���Q��dǺ���-�kW(d(F�-�;a����,Xc�*�UJ��mI�a�ɇ��C�T�V�W2d5]�`��fГ���ު�!?�Ef2;����2?�6س9�	O��o�ԋ�Z4l�!��<��+�Ғc,���6�Cx�z�'؏q���Є���f���s:^���F�,�����`����d��
�`o=�wׁrx�|�75hR�I��d��s/c�<h�ܞ��OCS��)3�Q��;\����?L�!<Af͘=Ԍ0l��bT'R�@(��oβ�a�R�U�9}�wȗ+.����a�������=�6T�?��;Lff���17���_��3#dX��b�P煞�4�=\+�-��0��_p&�\m�:���^���3�g�8b�,�Vžx��Ѧ��>[tSs�\�/ߊMy�w�b	t__���Un]���d �q��O(�si�Ú����瑟k�k5�f�"�5:/��l�"�L�	6M����Ҋ[��2[2n�H��|O߂�%�4m�3�i�hN>)���HL��it�������[��D1C ��ڠ��Tlť���#dRx��}>�����3��J�r,g
M۞w`��L�	�Dk���9^SЂ���Tā�����7�¿�|�a�S��K�~N�\�;&"竛��X�T�W&1��g7�Z�Ɖ;ucx���;�����/.���F?6@�Bְ�o���on����z�7��{��}k��cK(�G©�عK��J�	�3�R��o��Y�!8��D�3��X4d��T.����!T�D��M�@���A��BNl�9xط�s/�Fp�ͽ�/�r}���_6��<5�N{�ֳ��U4��+��*��Քªn�L���bF�=#�!o�[)~��C��<^���߫rx���c�s���Kw�y��0��ז�6w��G3Ǩ�1)-�5���M|�3���:a�n�p����N���L�P�&�����|R��A����ճ�y���#��Π-|4��a�}�774!��7W�ge*"�hl�Y�;�k�&Z-��w����Ʉ`
�Q���IYa\�jA�9�+b��p��9w�V��@#*�2�,���j�~��I�؉l�����ߍ�E��l���1��l�J�◱ *7D��T�݉a���1��pl�^��~�`0g��'�1���zz�52�LC���->�h�X��\�jU_ b)w�&�)�?��31�W�"@�&amN��XD�܆1��!��Ϭ�R��!�2w�Xt��hֱ�F��Y�i@�n/�]�;���)���=�ZL�n�B.��z��"
>�o����5`�����Ə8z�"�<K�x:<�1>��R�^��4� k&�v��Jy�د%���x�{Ъ�	gd�(��^
�ϣ����'�@�3�.����Y�<���8���`������/�8��NDҦ��H˂C#���o�o�*��Q��4N��n�V���G-�H���-�Pi:��W��n�s4N����n�P�|�ٝ�l0���n{�`��B�bWw�b�}�whN��+����5���l�w�w�s��ao��s/��sy�V�rϦw߭K&�R|I�K�U�}ѓ�=S�]��]�܄�]]�_g�F#�
���"[YǤv����Sk"]����'L��+O��Dif�2����ln�uUƜ��B���)�-�1�Ųۺd��J��OyU*�C���	�q��^+{�v`����C�KX���,�����/zH(�v�Gv�}�[�_J��v͸g�%P3h����ؤ�t��7���^������.�1��:�b�|���~�����y�ŋʜNB�@��,g�Z��w�/��k�2<J�w"c
<��[������غD6f�m�G�0yx�C�>����`�,@�~��\M�/�WotԬ������/�H�*-̉=J
(p+4��=h�R��5���!A�ƾYs���98x֖�����Dq��K�OS#Ԧ�܇�Isa᝴s�;����/��7@>`��B��n{_4��-L�u^vl��x�5:�D,
|q�;3��ׄ�O�w���˝Nbњ�W��]��T��3{��_��}?�2	�P��t�ɗ~�]4e��2�52���e�z�Y��e$g��T�J��a\�D�o�m0��ǿ�1�i��Z�QN��=kH+%J��7�����ߓ����$=��
���D<"�|>�]�Y�T���Q����c�D�z�����B#��/�
�����[��W�2�s
�h�@��y�|g�g
�^v�2g���h���Q���
B�f��9#�I�N;Ǵ]��)����&������[jk �I_�;"W����wg���)�נ���������Y����������C���p�?��>�
�+�K�>kҨ��"����Z��tB��p�g�(k5/�6=��B�)8��Hpt���6���;%'��h����a����Z��
j��u�U��p]�wz�s��u+̳�7�Q��?B��	8ו�{ڧ�Yv.�K���v�]���uN|� ��j����`�#%/X�4}��A�@XΐIʨ�଎Q:���h�V��4$:�Bi�o���O��Ҡ/_\�&p"=&���s�r�
���~�����Vb�;�#fF��!'����D���u�
v��D>8�I䜛�pF��,�����ۂ��ý�ċI� �m^�nI�.L��lkN�$z�%��u�)j�'͓��LO7�1o7>� J�ڢ���O��6Džf�5�h���3��a�Ɨ��Œj�>-H�kJ���
��H��;,�@
hԨ;�R%�'&ӒJn:
F��[Sɻ������t:�V�Ҩ%DT�o�9R��w����6�k����X�^�WA�Ѩ"�k�.D1�#��B �*����a �IDc���/�$�R�тA����j�N������t�������D@oS��7K׵n����/~N��-���k\� S�
]NC�P,ό�X
�%�0_��9�*����bSH������{lF�I�v*3c��j0��r��z]�#<	c�T7]����zh��[�.*ԧ?�����$?��;n�).Fm{M���]�7.�4_1G5�U/UCSߵ񾋺��?�M�>o��,殘*�3ߴ\���㢵B��kB��o^��7/�s��K�/���G�7-y��S�9\�u�8�||�Z��@�W|Ǐ����Ă^A}єv�����g\[���7��5��}+�����)���V�W�9b���p��7�=y�e_�`��=߹teo��}7n_;R���������wo����Z=��������
໥>{���S�~��W��ώ�9򗷞w�����/��T������gO���_�{)�?�~��Ҟ��]p��XMN��h
k���Z��ԁ7�����+9_ݶ{�m���?K���N�Շ����������ý��թ��?Z�rΕ�N���{>���x�����&�y��;dAߥz��>
�'jg��ߢ�	b�:~Z������@�s���?��yj]Xbօ.��@�a�w��Ez�~v���D����?�ַ��f��/��;�uQZ�N�/�먟�v�^��]���ן����X��}Nѝh�?�P���U����j�E����֩�J떯R}�y����ts%[�(�\�3D:m��L$���'�Q���G���J�\��m+q��Q;�2�l
{��f�(�?���t��V�+���4�Hyp��{M�3{�8����`��UlW��w����ͪz�G��Q�ڃ+������F�05,�];���7َ���~����F#2;*�!`-
��TM�t��ۯ~�o�`|���x�����0T����7F�߃u 4Z��L��
�=�����o=���p>M�؎I����m�Cg
Ç�$湸�&ouJ����?�3g
��:��\ȃag�wF����6�tm#m�[��͠�2��58Pg��Mgα}[�|;�f��N-�̄��d�0R���5���&�e�Föf� α7�-i�&��>�p8��q��9��u���:}�����L5�v���m�����3'ʷ^5�ko��q��ہEk��u������&g��yŭZ��[@�97�����A�ľ-Z��[H��\1lg*�u m3_���̂
_��b;S��Co��YX�:����3o��Y`Q/Gۛb��'j�F-���C�H;;˃��A��ݽp�^��_x(����c+�����S�l-�L�\�=2�-��4�sV.>�w1=�*�����~Ou��S�9͇1��Koyxxڤܮ���צ(���bړ2X�ٽw݄����z=�k�a���� Z�f�o��{�ݖ�#=S+Ҝv���iH�=�k���=�7�(;�㧹�TF���yz�h�Ӽ�t/!�\<V����-��.���]�^Ư'���:��h���;J�����9�/K�����Dy� �͸�c֎|���Kak���)�xC��p��>r�����m�Et��ncc�w��@��ۨ���@�u �WQ��V�.ͤ��R76��ZF���W�󠻻��tJ�ͻ�^b�ׁ��`�&Ёu7X��-l�~B0��=�'�:���$�!D������7�!3��������a�:���w�[����wo�(!���j�P�����"�6��I'�ę���w���߿1���oQ�s&�x3�W�k#�c����l�C��L�{2h�x����pZ��]�D�~誮�O�
~�=�'�n'���}w;�}��oe��F
�\D`"��]����X=+CC�q��0b5�#7�������;�fr$`O��v����ٿ��v6J�ozr�nr��K�.�m���
U�@%��Ƣ�2c����у�4ݫ��+���]gʆ�x�_�V{��}ӱj�֫��{r�hL$6F���'0,S��w���.�Z�e{v�v9��7ۈ5<�>��v�RE="��aM�I�=�Z��h8�t~�[>W�OpZ<�I�x�[;7�G8B�[����7,�H���ܱ�D�H�P3��N��;�r�(篺�ioы��]D�D]Dۇ����ۤ;���n��������3�95ƙD�ڌ�`@�P�Dv�R~!�J$����o[ɷ��*{#C(M~1��	���۰m�m�꾀+���S�a����1bs���H<������xv��k�K�zz'��;{x�m����ZS����J��v_r�����U��ULVb��t��
G�}9�ߥ1l�d��?2=H��~	eu����Fg������\G�/��o|����~����kPF��v��(���,�M�9R�
ɩ��鎵�ȫ�Ƹ����긹����![�A��n�Q�k:g��h`uLq�Z����K�Mt��i���  w��r�7��h�'t���s����/��&p��B�Xf
kP��<x2�9ţ���&�o�%�'�(S@�╄*	񤄰��E�W�u�d�!?�Mn6x�J����gw]_���#Q�1�3�2�?
]��	-��N2���l3�e�&�#���V�Rc�^'�^�7d�m��I;��
n��x��Τ�̞�@�i���n�W?9h,�Ӫ�Tm&�r�;9>_��G��GΝ�$�bQ+Й�mw����h.5
LRpl�N؍��Q���G���s�q�	�#���@��P�Yc�i�]Y���mϐ���o�� �ZY|�l��U�d��\=j
/,��)�/�1~���S�V�*��hD��
j����	�m����=-����M�/Д~Mwb)�k�%C��V[S2��;D�(� ��귧�����%w��b,���d4V(�҈��1�zHi͘	ot�a L*���/8��Q�ʎ��~��`��Ψ��/J1�ܯA���$־�V5u�Moȹˣ}�r�Ֆ7L��]���VS����[��J�+��D�x��k�l:�F.�i
1_N�ә��Na���6��M�vz�F 7�x�ᱽ��7h�À���	����K��e2��4C��G�:�j�A�����M�W(,��	�z�LY�i�*��k���V(	?&�p�B�T��޽*p �
5�՚���_+N��'�����h�96^�������Yx������
'��E�U�::G���\]�
�ss��/|�r�������N�v_��
Z���~K��/suh�쁆��^�������r)��/�N�=�ց}n�=U*OzL�s�{�Dx&�;6y�>���^�7Y\.�8���
�މRdڗ�1��uPt18o���6`ml�E /��w�$b�������w��]�翁�m�?�o��߀܏�H�%u�	��=��!=iF�Zcv1�2�XF��^�<%�d�mW�Vq�߼'Y��[�-�l�:,)�%[�m��ߎ�4���W��6)%��GY(�n��@K��B��\��eK�[���B�]βK;3�=i$�N �$r��ӛ���7����H\Ʀ(�j�X+�9�kA�^p-���c��j�s�5�N�7��ؕA��e�2�Kkqf[��yt���"�ۮ���
���!\/��-b�B�2�)*Q�Fcjs��v�G�R*�%�WC�y��5\�8Q��R�{=���z��`v�lk�F>����H��F���KB��A�`֨�
�5$P{��@!���a��?���E�l������"!:�{/�+�@����^Ӂl��3γ�)��ɉ��)���<��ME�%��;�6�E�ޓn�{���$�`��6S��Ә�RC��l�Ẁ����.����iq*�(��.���I
.�L����&	P(m�6��!
����o3I|�(�=������Yݣ�Y�ٜ5`F�Wk�j]�m����Fkz��pl��|�I���8"5�*J��r�̮�����8����̾?����Z{5:�x.wC�)�֭W8ma���p��]8�?�E�^�.cQʎ�L����x;%�4�ۧ3�v�^�T��n�v�^��贪Ȱ6aI9��"G/�G�����X��g|��J=zM%�U��z����s�� 	&C�FQ,J�At�4m�Ƌ^wŕ��!�����T��Q�Lj��ǭ>}&=�c�:���}�^���3NrO���,��k���+��\X��k�TY�U���{D�_�Q������q��J�p�v.�_i�]_�ڹ�٨qsw�Lgΐj��&�0����2f^�بR��M�lolbN������d{�M�u�	��V�Sܶ�I��*��<
lZ�I��l�fT��Y!�z�K�Ҳև:h}w������W퉱x�!�K1_5����q�#�k�8�Ny��#��,hiR*�6.z�y�N�խlM�uϔ�׮�����@2m���������������H�
�bi����l����}�
�̻ѳt�s&�^]��1v�ܔ��am�D�	�zQ�'y��Ʌy�ϳn���½��=�ն�:+��b�c�Ƹ�^1����Dp5�m�4�l�ze�*P��<��6b<�%<���9A��B7bj	O��k�u��k���q?�q�W�fj�5�ȣ�O;@L���vPeZ乣�_�M.d��:�]m�����-s�!�Tfv�mY�r�K���$����E$�23�
1��j�ј0�Y�����3Bm�*W�A�|��~T��2� A���C/�8H��	��M�>+I+#�a@s��O� �QɌ�cI���5�VyΪ�9�#-d���-9����0��W%�*�� 	����:1�
kbԟdO	���}ݰ�(�F�����(q��ͪҔ�%F�,X�g�@��0V�җ�W~�ƿ�m��n���v��t��B`>��G(j� ��O�K����ݘV�����*��*0�P�p��'�HR68�?;��~��6v�}�F5�k�	�_%J��O$�8�R�@0;X��2FFU�8�FĞ{|ܠ�Pd�O�0Nl��pw�$�l��1v�0:؈�OMW`lԵ7$����Fa J�CX���ɐX�̒�|���=��#��zm�� 4VA�\L��	� !�#ƃC�������8{㻧�uH�!�F$�PNm��y�u��a���8'�d	���د�N���u�I�e��^J���"i(Η��F���}��
�	�.���DR8W����<R�!b"�*h���b���y����e�AW�Ɯ�Tꙑ֦�2@�^&ۻg��T����iW��7�T��
�'�<#��L�q�.͗;��P��!k�,M�m����2D�R����VqO;�����z�x�N��"J8���n
�U��HHk]�O{1:���\c05� �'G�g΋H�٤�d�T�"��2�K+OP�+\���SSzʉ���8�XT�ެ(�����Bx����ޟn�B�n���<����aq�xŖE[޳(����z�5�^cVބX��XmTy����C9�J	�>�?>�ՙ5t��r�;F�߮���Z�m���R{0dY�ژ��ukl�p�gqh��j�i
)��S����yխ�!tw�^�ܡ�(䣱��I���Qi�@ hm�P3tp��^���	1[�f��/��*t�`��(�'��,�T�E��ڋk��6~�c���X-���Œ��H
�k�?���0�s}�N<��6D0m���֒�9��Mi��=�&��}�j����m�z���2xo⟈�׹r�p/Q�W>_U�G���",�\�g�^/�x"�Sa�T(��I>��-�
��k��!ٔ��H/Ap&��e��(\��@�,�@Y%	^S�U��%9h��$S����~�gVN��i8M+kI�ʰ���a�Z�]��ò����.�,A��LI�-)�Ss��`{���rm����l��j��`i��x��'����Zք���
�e	��ڦ���_��&Ci�ḛ�ߕL� !�.,�M�HG�"���L���d���gr>Wk�aϢ1s�4x��T)ġ���p��Ncc�B���x2�N��j����I���+[�� |���c�o"Ǒ�/~j
L����qr�T�k�\^"^-)G����8���)�lW���.i��ђdћ��H�ᴀt�qt��!���#{b6�,�
r��
oo���튤�>��j���\� �.)
O0]��ʍ}�S�*���?��37%�D!��+��H�g�N�׉*G���u�c��o$ϭ_��3}d�KqA�Z�R۠���`CC�<%�������>P�g*8�g��F�m�����$�*yx����5�����	(p��jq��=1������Q�t���N�}Z�y˓O�^��r�����}�&'��>�օ2k�́���L�P�z,H�$�*'V���S�lA�����a	���ӓJv$��*�#��_�'y_��S�$XE���A-����ĵd��P�Fhu6�4��j����{�"TS+��J�u%��Yrk �����[8Ư��h8���B��#��7��u���.�}p�	B��B+\y�@��G�����`d�-t2�P&�s{�g�En�I�B�٬�d��p�ĝ�F?z4T<�E�W�B1X
�d�LZ�U`�����sr1QPÁK��A�D�
��j�+��pPPT��2$5��=�E����M��i�R��c�y�����Z�y�]����Q�9��{��3�P@/|-"��Sf��K�^�_Q~�\��J�����3W�/�ڙm:�t~�*��cά������{37�}��)s��u�
���{��`	��Hy��dQ�Ұ�D�#>�J��
��d�s�pp\=2�u:��C���|~p��Uq���֭s���m+��Evuw%w-��m�67��w�E��]]@��~�u�5���j~6P\>&M�(���9��<Ԇ_�dG'�C�;���ʣ+g�.\~��r6�g�~��}/��uо�^�:Qr`(���fG��
��Gs�r�+�*���m��@�!h�_T�0�h�+/���a�vݣ�쟟3�˷�y$�U~{�=���F�%�.�zž/�EQ|؟z(����{����b����@Ԧ0��D���s�G:$��&�ua@��z�w
������C�K��:��!�gCn���1���*P�>��{�v���L߇Fhg��{�}�%�1�X&aq�9����wL���##==�Ǿy��������4z�Ǯ��رc���^�"�#R�jR�֒�[�P�C�?ʃ�M*��;yl%������w�#����w��tM��m#Έo9�uo�X�
0Q��alf*���v��g.$N?-vL0��������πi1�
SJ��r_�mkn9�m������DDŽ;�9k`�Y��s��U�i�q$�I�$��M���e��м�/�~�_�.���%�t�7�@T�
!��c.���-<���9�0�I��K����g2��t�
��LC����e�	��Q)��O�-}*c���2�k[�`��F���-�.k�3
�dxc.� ���ɧu�<� ě�u�/ԓ�XV�Fir�rZ�uěw��ow�Ÿ={\V�Zt�ٰ���um9���t_k��H����ٿg�] ��k۸��ڷ�ύL�l�u;Zf����q�儮��Jh�_*\�,���>0�[�����h�f�GE9�e2�Chd1�A��O�2��{.���o�K,&�	�`k�L{&�H��f�c��>��B~�b�Mw�z��]}Sm,Jn
���X$�$:Wf���:���m�����dm=t�U>�����&�B��A�i�Hu�3��VR_o�k�O,�Tw�򹇠FS�F��/io�N MB��/���B�3Tzt�x���6/p���ټnGa���
}{/m�4�[����o�B^��/�N�!�"��P�jb��"��߃e`	�1~�m㰾�C�.x�Q"u�]�¯'���JAL�F�2�����#�;V��X}�G�YH��g�i+ G��r���Sw��N�K��.C���-_��ڛ��́���˨�i��͵��vk���p=+=��gA���뻑8����{�Ig?�3���iֿW`
����&�Y���z���!���\�}�}�4fs]���)�@?��ո$��ya���7��@�A�P�X(�n-މ�A�����f���x3��u�;�S<�����B�v���jM�.�C�;��Ro��~m�K۫����+mz�N��nF�~�;�˦r�>4�J���gV̸�Չb�(��D̋�C}U�ɞ��@����ᥞ$�jӰK�+gh��3^m�@}l��>�.8�F4
(�.Ju�.�	i~�ǯ�$
���᳻}s�l�	e2��i,�A����<����V��p}�3��3�w�M���7�����3тH�{�����H�0�G&ᵯs��=�g�-"�yܟ.���=
^w�kUĝ����|���⫤Q}�N����ſ��u/�A`a�\��5�)�s\�Of�S��1�s^�}P�{#�=H��XG�p��{�i( �����-��o��rk��/E�����_��rK��E�m�_�Ṯ��Є�E>vCS���G��?�_��V��lv:�c����,מ�����
�o���cCe@P�F}�΄�-������-���A�^x��
33Ϟ���5Q�D?/�5Rq.'��z7J�KN��:�3���#Ţ�E�W�?L)E���O�rsw�=��j���,Mr��[��5��
����#|��>�������#�7*�]�|�����S�\���:\��\]Q~q1�˳�o0��Y�E�2s7eC�?�d�?��c�A����>T~Y1�u/���Vz/I��
�s&QnX~�W�/QO�|>W���߂��j��(�Y�?-��Ql7���
_5nK{qx��G���g��!����v�����	�t��^�n:�:h�_�j±��~���z��'[��dGcCq�y�:O���`*��s��_(�^X�o�#e~�$I8.�ȑ�,Y��g(ޡ����.Sfck�ׄ�v����<��Yc��l(�����x�����ˢ������,�p,�?��{��o6xL��aR�E��˭���69�
5,3�q.�!z=��?���8F�H/Sf>�#sr��\�r�V��׋n�6��"�QG/M�2K�Q}X�|)K��8^&{n��Gh���3ם~up�����(�Q�P($�ʯ�,Pb�A��0�X��Z�����Fn�S�v�j�U*�M$�4�s�U�Ď��.����eC�dR��S� �F�D(hk+�g,ˤKbnS�9wj��u�ǒ�N�	_U���oVJ��y�᠜3�8j�c���U!��^��N6'/�kM�ު��VJ*�d�`k��C��5cd��F8F�_�?^�/�����?��L ��)�\1Ƹ��r���(�XjuisSτBƴ�^�Y7Ѩ
c���4�7�����:b��>�` �FGĿ��h�w��Y���z�9�˝�W �$�2%��]��YV\�$6L��	�~�N���n<0@�sݻ�������;�F�l22�&��F:L�9nTlȹ,�V�}�.�4$�k4���.����χ��7�r��Fk�7��4�v�V.qك>����d#n��C��s7kAeO/Lr�9��Hו�xtt�7�XxO?N� ƕ�*T��p���P��hQ����R�ᤶ͛��Nm{xڍUMo#E��c'�]��A�V$>��?�ˊ!E�byq�J冠=�O[3�X���9q�7����Ώ��랊�,�Ѹ_wW��~]�CD�z��G��}�أu��q�V�W�ezӫ1^�
�q�j�׌���U�*�������Z�9�{�(�1�Oo���[����ye��Cڬ�Q`��Vw{�W}��D����V}�{+���*,��U��q	��0.�G��
my0�Ц��*	�ƫt��x�>,��x��/E��ї��ߧO�3~@���e\��2~H�*?��\�`��e�s�%ڪ�ǸM���4�9eS��Ԣ5�1�8�Ԇ��EB
�.��1��=]�箧�*�^�?�%��<����F��N��j���Q�D�{�$�v>�*W٥
�A
^A}�����i�E_��6LDS$ �NU4M$@x����i]q]1��o��Ɠ�v��޳Al���?3�����׹!�8>�Fft��<֩pQ鿳���b���k`*����s�����Kw�H:΅&����B��ͭ!:v��`s�u�8��S��~J��;֩6�����4�4���Е�-��z���*��T�)�ћƶ�
@$�
�h
�n�3�Rgu�D
P�#�"�
�`.)�E
)l�N�R%����'W�Aw��g�a�E�@#x}�:���hd�d�^��f~�=�G��\�_�?����9ƦX�����c^����4�1��f��qem�� �tJ]UU�6p��8t�m9�>����%��ö��X4����O�3[�{]�xc����6���N:q�@<�2g)s���n��*�e����0�C�p(�tjD_�Lfʞ�$T��N�i�2aFJ�;]ћ��0����x7��/���v)�Dp�f����iv�ݸ;�Y<1��lj����;��.���.�;	cWI҉.R��2,�������D������,�@�v�ԅ��2��,n	��0n�S�=�mi��O�S�C�[Z��W6�?9�m�N�a;|�b�ثg?1*K�Q�����jlO���N '"W�`�Cpk�C��8]�$�Jt�"��:������x�t�x���Ō.lۥ.s��ƴlД���u7q��Y�i�.3333333333�g[�i�����پ3����H�����pL��.a<��/2���p,�����H��(��h����X��8��D�!�Pf3�Y���dF1k2k1k3�0�2������
�
�����M�M�͙͘-�-���1���X&Z��Ę8�`�L�نَٖٞفّىI3&�䘀��8f<3���Lb&3S���4f:3����bf3s���<f>��Y���������,bvg�\����͜�|���ɜ�\�\Ċ���Ȝ�ʬ�ͪ�ã�;�Ɯ�\�����\�\�<�<�\ô1��qL�$S`c�`�e�b�f�a>g3/2�1�3�2��w���+�K��L�%�5s8��)2K�n���0�1ef���0U���1˘���
f%���������Ɯ���������|�|������ڬ��úl��e�ev;�]�e��Hv�&��6��.;�]�]�݀����ݐ݈ݘ݄ݔ݌ݜ݂ݒ݊�n͎e����̫,acl�M�I6�n�n�n�n�����Ħ���!�esl�Rv;���Nd'���)�Tv;���\�\��dg���9�\v;�]�.dwf�d�b>b>fwawewc���y��mg;����d��"��]ʖ�n��-���̝l���5������]�.gW���JvOv/vovv_v?v��@� �`��P�0�p��H�(�h��X�8�x��D�$�d��T�4�t��L�,�l��\�<�|��B�"�b��R�2�r�
�J�*�j��Z�:�z��F�&�f��V�6�v��N�.�n��^�>�~��A�!�a��Q�1�q�	�I�)�i��Y�9�y��E�%�e��U�5�u�
�M�-�m��]�=�}��C�#�c��S�3�s��K�+�k��[�;�{��G�'�g��W�7�w��O�/�o��_���8�8��8�S8��8�38��8�s8��pC���0n8�7�ɍ�����������Fs�q�sprqs�p�r�q�s[p[r[qc����\��8�#\��s	.ɥ�m�m�������4��\�8ʍ��s���$n27���M�s3���,n67������s�����.ܮ�n�"nw.ϵq�\W�s�\W�pK���pe��ۃ�pU��q˸��
��[������������������������������ϝ��ȝĝ̝ʝƝΝ��ɝŝ͝Ý˝ǝ�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]��������������������żƼ�����������=�=�=�=�=�=�=�=�=�=�=żɼżͼǼμ�=�=�=�=�=Ͻ��ȽĽ̽½ʽƽν��ɽŽͽý˽ǽ�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}����������������[�Y��y^�E^�e^�U^�u��M��m��]>������~$?�_�_�_�_�_�ͯǯ�o�o�o�o�o�o�o�o�o�o�oŏ����Q��}��1>�'�$������w�w�w��|���9>�)?��O�'��~*?�����g��~.?���/��;�����<�Ʒ�|�_�w�]|�_�/�K|7�×�^~��W���/��+�~~%�'��7��/��? 0(8$4,<"2
*:&6.>!1s&	)9%5
-=#3+;'7/?�� ��0��(��8��$��4��,��<��"��2�
�*��:��&��6��.��>��!��1�	�)��9��%��5�
�-��=��#��3��+��;��'��7������	� � 	����	�`�`	����C�a�pa
a�0R%�)�%�-�#�+���66666666����[c���	�@��BRH	��
�	�;;
;	i!#d��T'�&�I�da�0U�&Lf3�Y�la�0W�'����]�]�݄E��B^hڅ� ,:�.�(,�
%�[��B���P�BM��	˅B��R�S�K�[�G�W�O�_8@8P8H8X8D8T8L8\8B8R8J8Z8F8V8N8^8A8Q8I8Y8E8U8M8]8C8S8K8[8G8W8O8_�@�P�H�X�D�T�L�\�B�R�J�Z�F�V�N�^�A�Q�I�Y�E�U�M�]�C�S�K�[�G�W�O�_x@xPxHxXxDxTxLx\xBxRxJxZxFxVxNx^xAxQxIxYxExUxMx]xCxSxKx[xGxWxOx_�@�P�H�X�D�T�L�\�B�R�J�Z�F�V�N�^�A�Q�I�Y�E�U�M�]�C�S�K�[�G�WdDV�D^DQ�DYTDU�D]4DS�D[tDW��Cġ�0q���8B)������G���������������[�[�[�cĭűbT�D_$bL��	1)��m�m������ŝĴ��bND*�Njĉ�$q�8E�*N��3ę�,q�8G�+��ą���.��n�"qw1/���b�X��b�X��KŒ�-��e�W�C��U�&������
�_\)�)�%�-�#�+�'�/ ($,"*&.!)%-#+'/� �(�$�,�"�*�&�.�!�)�%�-�#�+�'�/^ ^(^$^,^"^*^&^.^!^)^%^-^#^+^'^/� �(�$�,�"�*�&�.�!�)�%�-�#�+�'�/> >(>$>,>">*>&>.>!>)>%>->#>+>'>/� �(�$�,�"�*�&�.�!�)�%�-�#�+�'�/~ ~(~$~,~"~*~&~.~!~)~%~-~#~+~'~/� �(�$�,�"�*�&�.�!�)�%�-�#�+1+q/	�(I�,)�*i�.�)Y�-9�+E�!�Pi�4\ZC!��FIkJkIkK�H�J������
�
�����M�M�ͤͥ-�-���1���X)*y�/)&ť���R�6Ҷ�v��Ҏ�NRZ�HY)'��I�	�Di�4Y�"M��Iӥ�Li�4[�#͕�I��BigiiWi7i�����ڤv�C*H��N�K*JK��RI�z���+�!U��T���e�ri��/����������������������������������������N�N�N�N�N�N�N�N�ΐΔΒΖΑΕΓΗ.�.�.�.�.�.�.�.�����������������n�n�n�n�n�n�n�n���������������������������������^�^�^�^�^�^�^�^�ސޔޒޖޑޕޓޗ>�>�>�>�>�>�>�>�����������������~�~�~�~�~�~�~�~���������������9��Y�%Y�Y�5Y�
ٔ-ٖٕ#�y�<L.�!��Gʣ�5���u�u���z����F���&��f�����V�yky��=ٗ���rBN�)yy[y;y{yyGy'9-g䬜�������y�<I�,O�������y�<K�-ϑ�����y����������H�]��mr��!��r��%�%�R�$w�=rY��+rU��}�2y��B�W�{�{�{��������ˇȇʇɇ�G�G�G�G���������'�'�'�'˧ȧʧɧ�g�g�g�g������������˗ȗʗɗ�W�W�W�W���������7�7�7�7˷ȷʷɷ�w�w�w�w��������ˏȏʏɏ�O�O�O�O���������/�/�/�/˯ȯʯɯ�o�o�o�o������������˟ȟʟɟ�_�_�_�_���������?�?�?�?˿ȿʿɿ������*��*��+�"*�"+��*��+�b*�b+��*e�2T�W�PF(#�Qʚ�Z���:ʺ�he=e}eeCe#eceeSe3eseeKe+e���2V�*��+D�)q%�$�����������������V2JV�)�B�q�xe�2Q��LV�(S�i�te�2S���V�(s�y�|e��P�Y�E�U�MY���6�]�P
�b�S�R��e�RR�����*{(��Ԕ>e��\Y��++�=�����}�}�����������C�C�ÔÕ#�#�����c�c���������S�S�Ӕӕ3�3�����s�s���������K�K�˔˕+�+�����k�k���������[�[�۔ە;�;�����{�{�������������G�G�[�[���ǘ������Ǚ��C�'�'���+���g�g���������G�W�W�הו7�7�����{�{�w�w�����������O���O�ϔϕ/�/�����o�o���������_�_�ߔߕ?�?������UFeUN�UAUI�UEUUM�UC5UK�UGuՈ:D�S��k�#ԑ�(uMu-umuu]u���������������������������:F�Z�FUO�U��Ը�P�jJ�F�V�Nݞ�U�A�Q�IM�5���@��8u�:A��NR'�Sԩ�4u�:C���Rg�sԹ�<u��@]�����.RwW�j�ڮv�u�کv�Eu��T-��j�ZV{�=ԊZUkj��L]��P�Օ��^�Q���>��~����A��!��a�����Q���1��q���	��I���)��i�����Y���9��y����E���%��e�����U���5��u��
��M���-��m�����]���=��}����C���#��c�����S���3��s�����K���+��k�����[���;��{����G���'��g�����W���7��w����O���/��o�����_���?����񚠉��ɚ����隡���ٚ��ZD�
Նiõ5��Hm�����������6Z[O[_�@�P�H�X�D�T�L�\�B�R�J�m��բ����bZ\KhI-�m�m�m�m��������rZ�Qm�6^��M�&i��)�Tm�6]����fi��9�\m�6_[�-�v�v�v�v�i�ky�Mk�:���X�Ժ���D[���n�G+k��ZE�j5�O[�-�Vh��JmOm/momm_m?m��@� �`��P�0�p��H�(�h��X�8�x��D�$�d��T�4�t��L�,�l��\�<�|��B�"�b��R�2�r�
�J�*�j��Z�:�z��F�&�f��V�6�v��N�.�n��^�>�~��A�!�a��Q�1�q�	�I�)�i��Y�9�y��E�%�e��U�5�u�
�M�-�m��]�=�}��C�#�c��S�3�s��K�+�k��[�;�{��G�'�g��W�7�w��O�/�o��_��Y��y]�E]�e]�U]�u��M��m��]=�ч�����}�>J_S_K_[_G_W�����o�o�o�o�o�o�o�o�o�o�o��ѷ���Q��}��1=�'�ҷѷշӷ�w�w�w��zF��9=Щ>N�O�'���}�>M����g���}�>O��/��;�������ަ��zA_�w�]zQ_�/�Kz�ޣ��^}��W��ާ/ӗ�+�~}���������������~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~��������������������������������������������������������������������������������������ss�������������������������������������������!�!�����a�a���1�C�a�pc
c�1�e�i�e�m�c�k�6�3�76064626661656367�0�4�2�[c����A��7F�H����;;;i#cd���g�7&�I�dc�1՘fL7f3�Y�lc�1טg�7���]�]�݌E��F�h3ڍ�`,6:�.�h,1�%���1�F���Q1�F��3�ˍF�����������������8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8�8߸��иȸظĸԸ̸ܸ¸ҸʸڸƸָθ޸��ѸɸٸŸո͸ݸøӸ˸۸Ǹ׸ϸ�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x���������������������������������dL��L�LєL�TL��L�4LӴL�tL׌�C̡�0s���9�i�2�4�2�6�1�5G���������������[�[�[�c̭ͱf��L�$f̌�	3i��m�m������̴͝�1�f�Lj�3Ǜ̉�$s�9ŜjN3��3̙�,s�9ǜk�3�̅���.��n�"sw3o���f�Y0��f�Y4��K͒�m��e���ì�U�f������
��\i�i�e�m�c�k�g�o`hdlbjfnaiemckgo�`�h�d�l�b�j�f�n�a�i�e�m�c�k�g�o^`^h^d^l^b^j^f^n^a^i^e^m^c^k^g^o�`�h�d�l�b�j�f�n�a�i�e�m�c�k�g�o>`>h>d>l>b>j>f>n>a>i>e>m>c>k>g>o�`�h�d�l�b�j�f�n�a�i�e�m�c�k�g�o~`~h~d~l~b~j~f~n~a~i~e~m~c~k~g~o�`�h�d�l�b�j�f�n�a�i�e�m�c�k1kqo	�hI�l)�ji�n�iY�m9�kE�!�Pk�5�Z�a��FYkZkYk[�X�Z������
�
�����M�M�ͬͭ-�-���1���X+jy�o+fŭ���R�6ֶ�v��֎�NV��XY+g��Y�	�Dk�5ٚbM��Yӭ�Lk�5ۚc͵�Y��BkgkkWk7k�����ڬv��*X��N��*ZK��V��z���k�aU��U���e�rk��o����������������������������������������N�N�N�N�N�N�N�N�ΰδβζαεγη.�.�.�.�.�.�.�.�����������������n�n�n�n�n�n�n�n���������������������������������^�^�^�^�^�^�^�^�ް޴޲޶ޱ޵޳޷>�>�>�>�>�>�>�>�����������������~�~�~�~�~�~�~�~���������������9��[�%[�[�5[�
۴-۶۵#�{�=�n�a��Gڣ�5���u�u��z������F��&���f�����V�{k{��=۷���v�N�){{[{;{{{{G{';mg쬝������{�=ɞlO������{�=˞mϱ����{���������������mv��a��v��e�%�R�dw�=v���+vծ�}�2{����W�{�{�{��������ۇ؇ڇه�G�G�G�G���������'�'�'�'ۧاڧ٧�g�g�g�g������������ۗؗڗٗ�W�W�W�W���������7�7�7�7۷طڷٷ�w�w�w�w��������ۏ؏ڏُ�O�O�O�O���������/�/�/�/ۯدگٯ�o�o�o�o������������۟؟ڟٟ�_�_�_�_���������?�?�?�?ۿؿڿٿ������:��:��;�#:�#;��:��;�c:�c;��:g�3��w�pF8#�QΚ�Z���:κ�hg=g}ggCg#gcggSg3gsggKg+g���3։:��;ĉ9q'�$�����������������v2N��9�C�q�xg�3љ�Lv�8S�i�tg�3ә��v�8s�y�|g�����������Y����6���p
�b���r��g�Sr�����:{8��Ԝ>g���Y��;+�=�����}�}�����������C�C�ÜÝ#�#�����c�c���������S�S�Ӝӝ3�3�����s�s���������K�K�˜˝+�+�����k�k���������[�[�ۜ۝;�;�����{�{�����������G�G�ǜǝ'�'�����g�g���������W�W�לם7�7�����w�w�����������O�O�Ϝϝ/�/�����o�o���������_�_�ߜߝ?�?������]�e]��]�]ɕ]�U]��]�5]˵]�u݈;��s��k�#ܑ�(wMw-wmww]w���������������������������;����F]�]��ܸ�p�n��������������M�7�����8w�;���Nr'�Sܩ�4w�;Ý��rg�sܹ�<w���]���������.rww�n���v�w���v�Ew���-��n�[v{�=܊[ukn���]�p�ݕ��^���>��~����A��!��a�����Q���1��q���	��I���)��i�����Y���9��y����E���%��e�����U���5��u��
��M���-��m�����]���=��}����C���#��c�����S���3��s�����K���+��k�����[���;��{����G���'��g�����W���7��w����O���/��o�����_���?�&�F�"bD��%�F��1"fĊ�'�F"�!���a��5"#"##�"kF֊�Y'�ndtd���
"F6�l�$�id���-"[F����l�F��!�X$ID��Td�ȶ��"�Gv���)��d"�H.Dhd\d|dBdbdRdrdJdjdZdzdFdfdVdvdNdnd^d~dAdad��.�]#�EEv��#m��HG�Y��Ι<��Δ�z�cǦ�"���B��^��-�G�!��tw��R��a��m�²��o9]�,���0��b���{q��Bo_Uֲ�Z����S���R�=�8eGr���kr��P��Z��D��� �B� <c��q����ԸU��\u�Fã�����}�kUYߖ�]��	�b�� �A�����B�1�	ȴFn�D��D�8Hcɪr��GLK;+�BO)��Ql�&��j��8$���&�]Pjar�}B���45�TϠO�b\�~�'츞|o�Z��{�
|���z:�ih^͛6��洮���|����龎�5if�\�C�b	if�\	ì��j3�uO���ǥ�����õ�ͳ�ָ@s��^�9hAZ0'lA_3�s*ŞN���9g���
��sp!�p�����A������°�+�A[��V\9PK��jغ�X�("Z��	"�e=�L &�\-_,��F���"�D��SQqqW��5_���Η�b6��	��oA�$b
)��B
)��B
)��8��\�ˍ�mi4>�Ƨ�4�F���NC;
�4���NC;
�t �ij�5�5��V��K1�Q/�/�$�q3�A$�A$�A$�A$�A�3�,�?����~�Y�g���~�Y�g���~�Y�g���~�9�砟�~�9�砟�~�9�砟�~�9�砟�~�����@?�I��1������P�@=�zu
u
u
u
u
u��S�����4���J����t�|!�UK�jWX.�*7���E�}D�C�#&��)�4b1��C���ЏB?
�(�ЏB?
�(�ЏB?
�(�ЏB?
�(�=�{��=��=�{���A߃�}��=�{���C߇�}�>�}�ߞ}�>�}�ݞ}�>�}蓱θR�Vd��ro{�Z�p:��G"#���y� #��2"Ȉ #��2"Ȉ #��b�z$��A?��A}/��cЏA?��cЏA?�8��Ї#��ЏC?�8��ЏC?�ҋuxU���VƑC9đC9đC9$�C9$�C9$�C9$�C9$�	�A�	�'���~�����x����xI�'���!xp���!xp^
�)觠��~
�)��x��{�x��{ॠ�����>,���"x�,���"x�,���"x�^�i�g���>���!xp���!xp���!xp���!xp���!xp^6�����ܡ4��(tV��M����+��
<����+��
<����+�@y��@y��@y��@y/���/���y���y���y���y���y���y���y���y���y�B�B�B�B�B�B�R������6�y-��>��6g-���b1��4=�V^6�Si�b1� �}��>(��>(��>(��>(��>(��>(��>(��>(��>(�{�Q��J���@��@��@��@��@��@��@��@��@��@��@��@��@��@�O�O�O�����������������������������������������������������������~�������������������������������������	*��=��Q,T
�b�Y�ҥޮ|���{ʵB�P�A8mnV��7&�͒1�����ʜAkӺ��An�欦%6��L���s�0�:��',����z��zIh���yir���#�M��q�22���]eqV��;����Ȇ��U���W��L:eL���[u-?�Fap���[�ڷ�G��5?/�5��h��Q(��2�%�l4����lZ�d��f�Jͦ�If�\O��(���r�'��f#k�F"�������Xn�1����i�_�����<p٠���A_�A_�A_�A_srsrsrsrsrsr��Ak��Ak��i��|@O��AO��AO��AO��AO��AO��i����`^L0/&�p����$�&���`^L@Lb����$ &1	�I@Lb����$ &1	�I@Lb����$ &1	�I0/&�����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%,	`IKX����$�%��$RF�T�r_OG{�Q\	V��ʭ=��j��³`>L0&�̇	���a��0�|�`>L0&�̇	���a��0�|�`>L0&�̇	���a��0�|�`>L0&�̇	���a��0�|�`>L0&�̇	���a��0�|�`>L0&�̇	���a��0�|�`>L0&�̇	���a��0�|�`>L0&�̇	���a��0�|�`>L0&�̇	���a�'�O�	��<1'xbN�Ĝ`nL07&�Й��t&�3�	�L@g:Й��t&�3�	�L@g:Й��t&�K̥	��si��4�\�`.M0�&�K̥	��si��4�\��
�7@��� pn��
�7@��� pn 7���
��bp1���@n 7���
��bp1���@n 7���
��bp1���@n 7���
��bp1���@n 7���
��bp1���@�KAO����x���4K�%���`	b�1X��G�bOG_{�����(,��a���Q7�=}�e�p���X�W:�e-_�*Wj���� �A,6+�f���SU����b{�RT���
��[��<�^tLy�1��Phis���+�(�T��rOX���j;�ZV����c�֌J��ᆎ�֑=�	j��ׁ�Q
RzZG���{��-�����0)l�\	c}�Ӭ�¨�P���۫ȫZ
7#�[�raYyy�T��4�N�?Ԟ��aK���|g%����fW�����V��V�k��m^�����Xm��X]t����sZ�_�)���s�Փז+��5�>)��"���G�u�k���YU	?����ab���ӄ��\���l��]�eR:Q�V6��1p�V�cqX��-�2��h�����U*���jG�
aS;�Jee��n��B��Xެ���J��EY\���jqE�jaY!<{���U�A��DC�m�7@�uGY�ie�h"��W
R9<i���dy8�[��hu�+��"���ʰ��B~�J�̷囉�KZ%���Z;�CgU�QD�G$�1�8b1��BL#f��9�@[>���Y^��k`�����慺;�:
�[�T��lT�rO�R�֯���m�P+��R{�]/4�W�X����F����ƭ�(�}K�z�J�P��Q6�V�E�}D�C�#&��)�4b1��Ci���@?�~������@?�~���)�)�)�)�)�)�)�)tCOͅ��J�^W#S��*��jw���� Ɣ��5xGBǧʽ����/��1&7� [Z���5��U���զ5��ܤ���;fy��j�;��}��&�\,�)�Z���b��V���ݍ2v&����3���!�W��U�Zn_�)]k���*
�Н��GO	V�6��[�{�X(�:J�J}d�C3�`�GL &q�<�����XW���&	�Q#h5|�N��G>�𑅏,|d᧍���dY�b�ޱ9�L�&|6S����p�T$��n�UېA.���Rh���A�����O��b�(��b�R�g��-�8�h�1tQiŒ��R?H�f,�^���b�r�#�8r����Tq\�8.UyđG�G��q�ġ�~�q�ǡ��~�	�'���~�	�'���~���;�}�p�d��s�_��v"�$�I"�$�I"�$�I"�$�I"�$�I"�$�#��H"�$�#��HB?��S�OA?��S�OA?��S�OA?��S�Sh}�V���H$�D�H$�D�H$��w��C�O��:'�K#�4�K#�4�K#�4:'�΁�e�zoW�~ځ�#�ې�HN$'������Drp"98��HN$�A�EY�K���~�Y�g���~�Y�g���~�Y�g���>|H>$������Cr�!9��|H>$������Cr�!9��|H>$������Cr�!9��|H>$������Cr�!9��|H>$�����hl�Һ�]�o��Pi8��Ƞm��Mv���A�Q
�X��V��u3�Y�g��A
�^��K���JȘ"c��çB��'�
գ��#�b1��DL!�3�Y�b��(�ЏB?
�(�ЏB?
�(�ЏB�%�B?
�(�ЇE	`Q��=�Ò�$,IK���$,I�A߃�}�p$�}�0#�H3��0#�H3������!|H���!�>�>�>�>H�������p\G�Ġ�~�1��ipA�1�Ǡ��apF��apF��apF��apF��apF��apF��apF��apA�	��W	�'���Ҽ�+V��0���by3��Z_]�*����`)X��"��`)X��"��`)X��"��`)X��"��`)X��"��`)X��"HA?}8�N"���$8� 
�4��Їk����!�k����!�k��"����!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�c�8��!�chTZ~��[����[�x~�E@�N�����?�)�OA
�S���?�)�OA
�S���?�)�OA
�S�����=�)hOA{
�S��t��;�)�NAw
�SН��t��;ݩ��C�@w
�S��t��;�)�NAw
�S��t��;�)�NAw
�S��t��;�)hNAs
�S��4��7�)�MAo
zS���6�i�u^�:S��t��3�)�LAg
:S��t��3�)�LAg
:S��t��3�)�LAg
:S��t��3�)&�|�	>��b�O1���1�)hLAc
S��4��C{Ac
S��4��1�)hLAc
S��4��1�)hLAc
S��4��1�)hLAc
S��4��1�)hLAc
S��4��1�)(LAa

SP�����0�)(LAa

SP�����/})�KA_
�R���/})�KA_
�R�����-m)hKA[
�RP������,e)(KAY
�RP������,e)(KAY
�RP����p�y8W)xJ�S
�R𔂧<��)Oi�Sol��z�"z�>"A�!��I�b1��E�!�ti�ЏF���ξJ�#_��&HF�fcQ*�������G_�6�t
��t�o5��{J�|�CVcIqUG!y�{H�C�������=$�A͏J�Ş����=��G����G��P���g�Š�R���&l��:�Dp�.�E"P"P"P"P"hA��G�>]]�tcЍA7�Z�~�1�Ǡ�~�1�Ǡ�~�1�ǡ�~�q�ǡ�n�q�ơ�n�q�ơ�n�	�&���N�L@/���K@/���K@/�$��K��I�3	�$��OB?	�$��OB?	�$��OA7�tS�MA7�tS�MA7�tS�MA7=�l/���S��+���	�b%�
$�q��P��*�PH���rO��U�؂6�Ѧ4�4��eжږA�2h[��-��e���rmˠm�-��3��G^tl+F=D� ��	�$b
1��A�"��0�(�h�Q�G��>F�h�ф��P���J�Z�6�EQ�Eќ�[)T�+����\lD"񐈇<$�!	`��b��b��b��b��b��z9�P���5@!�a:�Cه��.��(l�HK="�Q��G>2��������������%��0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�_r�G�c�b���j���|��h����z�%���9��s��Y4�����i���B��e1�g1�g1�g1�g1�g��S=��I�b1����!�a�Y d�O@DȂY!"dA�,��� BDȂY!��J[�/=��e(��]�M�M+6�l��Q(�Z��V�',�el�m}�Pi�(�Z��p>�Vm���T�jk�^�jo����*ֿ�8Vn�U��cI��,,�u$�;+�ޮ��8u����X����R�V+�����V��m<xc�s�b�a��Ê��#+FV�<�yX1�b�a��Ê��#+FV�<�yX1�b�a��Ê��#+FV�<�yX1�b�a��Ê��#+FV�<�yX1�b�a��Ê��#+FV�<�yX1�b�a��Ê��#+FV�<�yX1�b�a��Ê��#+FV�<�yX1�b�a��Ê��#+FV�<�yX1�b�aŨ�Hc���X���m���X�4�}�ƋKu~�}�.l��-K���-�
Z�t�n���U�֧ �
v���XZ�ߔ��L�Z.;�������:7K�����P1���Xj���+��kR�{�z�k}�B����ԧE=�jW8*.+֧9v{�\���k�������h�5�X)���W#͟IK��ީ�(��蛹�ӭ�~�cp
���IĔ9g�W���Z�@m�r~�o�Z��JO��n=J�J���Y���V���z��ڂ��᷿�op�Xз*i�PE�00��5����>r����PS�����~��ˌ�3�����P^�3#��{� Rsvup��ה\�Z^\k����B�U�[[P��v���J�J��U���T�L�(���5��H��l
s�#���x�S�S�S��z$�1D�C	�C	�C!B�1��A�"����~�I�'���~�I�'���~��Tdv���.vt�
������$�J�$�J���J
���J
���J
���J*��4�m��i�os�N��E|���I
���)Ӊ��E�}D�C�#&��)�4b1��C��~�Q�G��~�Q�G��~�Q�G��~�Q�G��A߃�}��=�{���A߃�}��=�{���C߇�}�>�}����C߇�}�>�}����A>�A>�A>A�O�O���=��=��=A�O�O�O�O�O�O��~�1�Ǡ�~�1�Ǡ�~�1��2�̾�J�����}R����!�8R�#�8R�#�8R�#�8R�#�8R�#�8R����8�1.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&0.&��OB�a�a�a�a�a�a�a�a"��_�̗c��5��f��}���Q�Z%��E��aTӅe�R��o��(M(�JsJ}�R�A���Y���3i�L=�FϤ�3i�L=�N���@����5�G�Ni����D�d�H�d�H�d�H�d��޾
�4~NNɷ
Z�b�0�U�CA����,��=ym�@���"��EZ8h��	f`v�V��Z�:���ϗw��Y�]��a�(:��s):�ⶣ��(��ⶣ����I��I��I��I��I��I��I��I��I��I����p��p��p��p��Z�K#f��9��ЧЧЧЧЧЧ�G&џI�g��D&џI���៺���G]��).��͠{3���7��͠{3���7��͠{3[`�l�-�t���l�-�e����2[`�l�-�e����2[`�l�-�e����2[`�l�-�ebЏATˀj�U���]��dGm�,
R���\_9<H��c�;Vv�ӯJ���k�zq�;�V�_�#��{�ղ�K�-���1�lLh�e�9�D�_�h�X�oQ��oIn���_���œ�'O$(�HP<��x"A�D���	�'O$(�HP<��x"A�D���	���(VG�1�=�c�Z�U�Z�T-����O��>�?��~��Q?3�Tn/MI����u�{�>5=��S����҄1�z��ͨOh��r���e�ܬ8V�������d�bMh�B9���p�bO�m�A;�i�5_�#9���Q~^��Q��"4
'mއ�S�6+R�`g�jK4�\	�q)����z�?]]�O�o��Z\Tm����U�fǷ�C��Rlms��Nnm��v�y�ڪj�%���ߦ_UG�
|��k��:�!K�o.B~L�]��Ʃ�p۴[��}�n�W���p�۵|�֋��ٮ4�^0W�Lr�c���b>�p��Khk���8�}���@�Kz�g:��R#W�}���A7e��Q�G*Ժ�h}�^j�4�7�;��Z�U������.j�Y,�z���
� ,��]Ys�H�~��2`�ݵvW�����G�ELܸ=�>W�5�d��G��E)���g��ɣ�vPe���246�������
��;�?�pz$No��A$<��'(��D��������d+�H ����H��z#�n�4�'�� |*\R�Uj
�4g^1 ���T�*�v�� �랺'�8�rB5�6�L��u�l2Z�O���Cv7�2[�FfһE�wK������ &�Y,3/����k�Ǒ�e(K%S9Y����'4�O���Er������U�7"�wg5Sg���H��(��s[��-�E�m�r^�&N��O�Fn�ֳ�ߋ����/4���bb����"d�y���y��?�������O|�]��gx�}�
��y��pk�=y���ϑV�ۭ\�Q�Z�2��&��L�;�d0ČJ�!�M�v�N]%V�EI���XI6��	�J���)������*R�F��	�P�(�4��+"@�H|Ixa#Ѕ���FZI����#p�b6��Dh���^A�B,$`�WS��Sf��v�0��Ѕ�*��Di'�H;H�*�4��$%c���QƐ��!C�*��Di'bH;C�*�4�1u}����(1=%#���\��QIƨn��>ke[�F��5��-��Y�"�2��	y*�
�u��4q�o�x��oR��
L���P����}���vr���l[��|̗O�vɱ��}�E��2>h�}#��\�3>d<�ƶ>������.d�!�v�����;`��v��q}#s<1�g|��?b��Xn��gX>��w؇���X2�a�;t�cl\��a;`�����g��g��g��g��g��|#�9�>�C����x>�YnX2��a�,��Ᏹq��v������3d�+d�+d�+d�+d�+d�Îz��!�16���ϰ}�}��.|,<~�r�X�
V���>^+`�+`�+`�+`�+`�+`�Îz��!�16���ϰ}�}�x��u!�vȰC��x^s^'>6�q=���S�d�~�ݐ���n� {f�0�r�d,0�> �,���%[|�>����vm�[���[�k�f��������l���%;k�.9��Q�����6/ؙuE��=�j������L�	I�����$9�%��Qm+Uw[>���J�櫦�7d@F@�@��Dn �@�,9�BD"������ D!f`C�B�"�1r�1��E�k�1�J�!f"�Ęaf��	f���q&m����������C�c2�a�1;ρ�9�<���"q�н����v��7r�7r�7r�7r�7r�7r�7*�w<,��ʼ
�ec#2n�9�8���x�ώ���W?�\9���Q&��-*��� �f�q��mF?��[m+7��$S���jw�&�e~$���E��$����k�/!x{|̬�X�Y���Bu��Re�x+�_�]�?�\�˯&eG�I�vB�Iˇ�!��LQ�]��E!��ځC��.DG���m~�Ň�]�0�5��ԛXhR��~ {@���9�p�
w�#0!�6�F8��B�
!Dn�o9������A���A���A�l��np�`�G����>��G��l�`;�1D�[�E�Y� D�
�E-���@ �B �B �B �
�H' �@�	�@�	F�n�y�恛�zh�@F����l�mцmц�0D0�!�N���O!�O!�p}p��7�|�ׇ|}�G����Xr�3��A���!�2��6��Af1D�!3����Q�C�
\���0'/V��G�B�R�!�|�$:��sL�I����<#�̈��<#�gD3#܌`�H���<c�gL�b�S�gL�if��÷z�l��^
?�n�ʜ���C��/�U<($�  �]�4�D�@��It�ldmx,�|��}��1~�x���?`�G���Gܞ�7b��X�!�^�C�r<6������c��X>=�O���c��X>�����}���,~���z�|`��3�1�?f��^����E�?b��c�E,���o��g���|,��g���|��L0���',�	�w��|'�cx�����<6~��������,�!�o�������Y}���Č�|����;e�NY�S������|��3<���g�Y�>����Ϙ��ş��f,���/f㋙��c�����b6������e�W�GP,�Ee��1t��"�,
ʩ�E�r�q9�q9��<ƨ<ƨ��#F����#ǀʢY9⬜׬�D\c\c\Ɗ�c|y�qy��c@Xtm7��M�r9?���f�� f6E�k�D��1F�`f��ħ�5�gF�~nj�\���,o��Y��N��	�c0� [�9�)�E��`;C!��O<�4}3��G���0_���G��G��6
�;M5�ĺn& N�.�Xq���$)�t�VRV�^�L�(�ɸ_�2�9u����i9�9C��<"f�A�Y"�[m��1�307b3d�G�g샬Z+�Xa��d��F;D��~F'��鄬0��Os��Yc;�[�]ׇG)z���r'�������L����ٛ
Qn��vO�7K�\R�-QnЅ���@l[�^��Z��E��$�BӬV�*)΁���(T�#�͑p)�I	{�L�':��Hc[�Qӟ���ݻ��#'�����4C���ǒ��)�m�f���]wY6[:"l�f[W�KYf�y${��>6\�ʆ��+ʾ����1��#����P�<8<e���lW�K�M�`iY�}.��e33���=���n��b���~F�1���Ȯ�F���[#ڂ��P���h��q4����go����XYW+���;X�ˆV�3�I��h��X���2����u2JK]����?��F_��iyI�V�j��[s!��
Qn��vO�7K�\R�-QnЅ����;���Z����d6`{�L�iV+
L��@L�tA������H������y&��9�-�i[�v�~�H�
3�0�ΞYt����ץ>Ke���(&��3�:�y�;u���#��ȓ�\�W%$uy�w�2��r���47��a���a��`�xV���)L����N���+
��<w����E\8pW_ɰ���!�p]æ���e���e��t�.���.ӭ;��%��"��GWGlIl���$�ޕ�ٙ�sl+g
NSg�����_�LNӝK�*�C�M]҇g���YV�(c����Q��(���Mq�W[�7�db�Z���8���9�wro�"s�6�ə�7ԣI�)�\9ڄ�i�+�}�҂�ܮH���7W�#H2�#��z�U+2�Uy�M�e��"u���G#������#�y'��d�cV�9�~�j�>�}�IJHnSb2l��s��˕65��_؎�$m�3��;���]�n�f�k*6����Q�yMŲ��eU��*��T,sW쏬�b�5>s�,+�,��Y^Q��Q����Ł�R��Ⴎj�b�m��z�҉S��S��ᕕ�n2����1n�5f��o�/�l�|e'yI�w|�\d�ɪ@27H7s��e�yn��}N�}�xDӤx��Xjg��i,u#`�|4]c�큋ilMUo{/�[�[�����1Z�y4�dI+�h(\�ã5�݅�n$QV���`�^+R�X
�tW;���S[��Q�Xg[��|�h�C,�nau�:LA\�V�nI�b,W�r��!.�|Nڋ��wKR��b�mI�Ju܎�LK
l�eo�X�F�0W��A�+}�	'W�X;S�FjNQ©I��VI,�a�gK��R)5��3�a�(F�`$�癦/�3��GGR��v�n��(�'[����Hoo�G���b��϶:ş����E?nl�t�
�CZ��ږ�`�����|�6�i���;��‘�"����;:ʅ��w
�G�Y�hnUf�ƿ/�ݶp�xm{��UB�u䳭�G�=`p�
F!�U�t�Q��	z\��x\0��.� b�ϴ'3}�~6�X����*ŠJ�U)�U
�JT)�*ET�Pr)�Ȼ��*R�¾K8p	=�p��.a��.a���s���gr�JU�JٯS�^�rX���A�2�SF5JU�*eO�+��ElX�NNtvrA���嘮U�~�B�Fv�]¾K�Y�@�:����w{s��db%��Ϗ��E	�
�ϦOQ���V�/�j�?����R���������ծ��ʀ������8G\<�kWy�n�_s����ʾY�s�SE��,��4��iF\<:�x�7�45䵥�s�i(kQ�<�޴{5߱�^���Q��l��.%.�̸ʏIr�� S5u���ߴ���iZ[��'I�/�v�ą�-��`��"�2J��-Ej����u�TdC�q��m?2L?=hb���pڛ�%���ɪ�#��Ǵ��SZ��!5袉oc^��wB�u�I3��z����~����3՗�Z�o92�W�(d�O���QK���^����̪c�ժ�J��D�85�)�Bׯ�
jt^�nX��ktA�.��E�:�pS��oJ�J��,�U����\�Z��y#�f�;Կׂe]�i�r��cg���z�K�����+��T��_�^�{�臯�W�+��}T�W�K�^��k�J���_�_�г��ɩ_���^��
_	[ziHy���+���n�>����>��r�TyS��r�7�i�]��|~aV�����y}LNO��w_���)�8��~$��*V���d+e���Ui�E>E�M.�);�/Jb�fj�OI�E>e�O,�)��"��n��^�Se$��P��w	�
��v�;��*]o��y14S@�����-ʩ�p*x�Y�S}�}Z&z�fUF�Z#�%@�Ws����k@j�]�A�B~l���ޯL���ҷ��!T[m[�;3;�E�H�q.�ܒ��'���<='��b�
�T-��?z�z�]eR��j�5�#�#�_���Ǔ��~��|�XX��D����t14���g�d�����7�|o<'ڬxY:͏���L���?d|�R{bݙ���GO4l���B��,�i�3�y�]X�
~
�Tv}�2���O"u_��%���I��/��L��x�e��SUU��Z��[��8g�1AP�( S�R`��^�%���I6��J�F1�A�
�L��U�@�t��5�I5y){�f���e�z�a��9������o�"M)D����o�m�CRz�+��2RJ*R�$�l�,���%�RbĐ�{$N�8*1؊�CY	�J*��I�JV��Δ<8_
�B)���.�K6�xƒ��R�J�<	�f�EZ�V��I;���;�0|Dz��&�'��'d�1x\&�I9�6O�2O�Ibsʫ"�U{��^�7��o�{I��~#�����v8��'�ax$�z�x�K
��>����!�dp�|E:���ׂQ�����IH']L��5����(��G�HG��3��3�ӤcoŦ�cӱ��wb���f��|Ζ���������-v��,�h�m\o���p��$�]�%T�#��Z�ʎ�)T��YT޵����~������E��E��M{�eo�����Yu!%��T�9D�Úp'�a-*ua*��è<�
C*kH�ҕ�I�TI�"�T�]����6�7~׿D�uZ�_G������ȦF*�q�A6���c	\*�p���H�v��.wˉCϤK�Q鑗Qy��o9w�%.��D:���r"Nu��m�T�;O�NR�3Q��Ot]�~+�i�z�\w��k���uQ�����+D�}H��z
YҿQD��D�9�d�b�!�r*�S��L*�,΢"��\���6K��mҌ��v�XcL=d�M3�4Ϛ�Tk�^�7��A�mF�5�13NMfsւ���Vo�ՃI:@��
��	�B)�w���S����B.��h���f�ÌP���8QV,t/��S:�p�2x#+����ky-�p6�`G�qv��_�j���졭�(M�ӿ���3�
{y��.3jF��L�	��o��n���܏��N��4��	>�5�k}�W�-��.�
n�\���+С�&n:L���n�M�y�6��v���3��0���w�һ�-���mY��x��}	�U��Yf�3���3�u��ŵ�k��l!ɾ��dK�$$!I�%I%I�J�$�$I��R��)iS�JB��|��c�b��<�����~�{�{f���|�g9��B	!)|�kڬu'R���C���Q���MG]=�k��A��f%���ѣ�$1b�8�%�H*)MʐtR��O*�ʤ
�F��$��$��OX�VM�H�K;6I#��
�Np�u��ٮ"�*��'�s��8iiwL#U�^�>���k��F81I
�H�Y��#�y�b��:��	"���{y�{�*�Zc~��ߏܭ"��ǯ���k���5���x?e�W&V�훓~5�F���x]����(iӮu�l۸Kб]�4:��o�3�ߢgpN�38���S��)y礝�:�{N;��3b�����>�n�O�"	t۷���tJ��î����n��tn߁}���H��|�utE�����5z�O�#݄�[�?L�����tנ�7^G���� zDRf MA�#-�4
i9�H�#���!Ҧ�o�v8k	���_	�r��~�Y�!�2�al�!C�
�F�vh6~��ٽC���M|`��fp6c�u}���ÆU����d��b���fK���g[1��!�ؚ���F�~#�l�UC�g�����>�H3Ҝ���܆�#���jH/D�	�&w�{Ƚ�2�<L!��t��r�1@�B��i��0_ah!E������#���H� }iy�iH�!M"}ϫ��*�R��:H}�	�q�6��U�DZi	���z��1m�)'3�l2��Y���#���|�����'������Z@3�{�Y������x�����yaUP �r�mO��^tBG�q�n:�N���\��.�+�t=�D����N��f3�bi����&�5��z�~l�ư	l"��f�9l>[̖�Ul�6��l;��q�;<���<�g�)o�;��ć�1|�ȧ�|���e|_�7��|+���C�a8F�Q�H72�L����hmt2z��A�pc�1��hL5fs���bc���Xgl06[����i���j3��3Ӭo65[���f?s�9�cN0'�S��s���\f�2י���Vs���<3bN,5V,�ˈe��ǚ�Z�:�z��ņ���&��5��!ubh[h��2K�����!*]��/5LO��PiK��P���:EDž���U�*�E�;����Pii��S�8�~���4M�T���e�3�wQG��t��e|�gՑ*�L���%|�6R�0-��F��p^J�^C�6Qi3�*�T���?����dl	�*��U��tO�f�O@�w�}���_´��0��'L/\�M�����i�%a�zfX7�;�����x�gôc9�6	�γ��2��>�y]_��-�����ĐͶ{zx^�%a�����{�V�φ�U��t��0����a:�u��D����a:�N�ޚ���
�	iaz�0�{M��g�����u���CK���/���a���0}|Y�>�(Lg��yre��O
�ٙ*��O�
�9�:���Ϫ|Ϫ�<���I*��R%G/LW�L��V����t�J�T��K�z\�><���ӗ�ܿ�\��U�U���)U�K�]��V�o��e%���,���2�E��������1���.�ܼ9+<��6��+���;��o/�H���P�bj����U�]�{��L��9*]��M$&��rW��jTx�UcU���za�$���g�s~s�;5���%Ns��s�s�s����rF;�:w:�9�8�:3�'�����/���<���ls���;;��N9��S�9ϩ�Tuj9M��Nc��S׹ֹ��ι��q�;����$�g�s�s�q���tp.u:���Y����-�ڰ�qj�V���]ۅ�][#�Z����N+�����NW��s����	[/�z���~�]
��:�`�P�n�mlca��q���m��
�]�=���m*l�lO�6�y�g`��.'p�q*�V
�acNܙ۽�]�>�>�Nqrow'�w�����w�����{�;ܻ܉�g�^�K�b�,���rvqu����;ܝ��.w�������s�r��C���gx6�I<3�Y��:o�:S�G���n	�G����p�s�:�;/����y�|g������;�����y�i�M���vb�t�)�)~�<Ox�xI/_���^9��W�;ϫ�
W�*{U��^5��W��̵�Ի�k�]�5�Zx-�V^'���Ż���uˆ{zWz���^���ϻ
�z���]�
�n�zü�ލ��S���^�Wӫ��xݽ˽�����&��W�+��ҼR^i�L��z^}���л�k�5�������n��y�y��s��
yE��^Q����{�4���:^]��w�.Y������u��z�"���]�
�zxWx��p_��
o�w�7��M�g��q����ݝ��v�pg�O:�:��ǹ��p�99���N��S�)�pJ:iN)��S�Iw>u>s��lp>w6:_8��:_���M�lүN�c�q�*���
�z|�FD@���K �)F�����秓>��O��-�������d*�6����[F�#��Z���|B�"7�-�2��H~%�o��G~�m"����>�&���A��ar�L���d*MP�̠��"3i:-K^�hM�
�C��whڅ�����Gt�D>�ч�'t9}�����:��~L?&_�������f�2�|�2X��z���6�� ߂g�>���e��O�c����v��7��o�"~	�[�6d7o�;����M��M� ��|��o��r|
�B��Y�)Z���_�����4 `��p�im�:�:Z|�1��ss#�c1F��j�j��7�
c�c�酱c�FVI+�^d5�����մ�u�5������6֓�g����ݚ�nw�/��W��Q{�=�Y���j�c�d%�U�*�f��R����t��}�L|e|%+�����%$��N>� ��wz�J�W�VQ��An&�)�6�h	�A���P��P��&�t6DZ�b�b�5P�A���n���.��aK���+�JC�U�eB�Ո5cm!���z��y
e#�Xv7���t6�=��"��-�ZZ�ֳ��}϶���� 
K�B��ayU^"�&�9o�Xw�K��G����'�G "�����-�+���>㛠���_�N�"3f؆�Y#�(Gx<gΏ��s�'���>J,{���Y㬏��⾂�u���^<�o3�p;��-h�_��MΫ�qZ���r^s����B�����·�h����Ag��.�����r�p>�;Њ�����R��-��;��|��/��P� .{;e	Kr���r82��u�i/�O�+=(u��ze�(Ы���
��x�y��x	���K�3��r���8S�R�܁(!����_��_N3���Nw�)NW8~��Hx–p���n�d���~9�\�wz��W�4�Ϲp*P#�{bg�g �}�3��H�8��F��A�!�]PR�Qȫ,� �K�q�~�pk�0�<�V��<����<�.�}˻�r���]t���;^�+=�R�w�Vp�N�*���~@{��@���-�z��ҋn�Zȿ�k
t���t�v�,��>���u@{��@{�!@�7�,�Ci�9k���t��>з���p�}��Jg�w����r>���"<�<w1��*����:���}�]��)�%��e@8o-�,Z�yhag�"�;@�:+�s�Z�Y���,���%�I~R�$�TV1R{G�aoe&iFڐ��iO:���R҉t&]I72�<H�������|M��d'�Ev�=d/�O�����C�iZ����hm��;�>�*~�����am�>�6Z_X��Z_�m�vv{���þ��i_m������7ۣ����]��W�O�^���x���m�;��w�������|�u>t�99�d_��5��pփL}H�s1�C}Ҕ`4B��ʧ�
),�>��	6���u�@{����a<�=iI<�v����-�h�(�2
vb"ik���!TZ�`Y��e
���:B���@P�`��pG�+�p?и�c_�����p��F�M��8��8����>����.ȋ.�A��b���O�e��t�ey9��y
�-���{S�%
��&�_��?�Aw��ϧJ�7��us��3B鴸|�Lc=A���P�m�@2��	�=�����Lwpb$�t8�Q�e�������6k���I��p�Q��Q
ڇ}�t�0�i-}�}���l�zY]�%��U�k
�k��:��-`��BT��	i	-�;x��P2��'�B˝Nf�ydx�+���|I�'��3��Q�p�����|��t��`�����y7�|�gc:ߵ0���0}�51}�G�̓|�.�t�K0}�9����aH_d/8�0���t�s���0}����o/��?1����E�<�<�:߅V9�}�op�őf�#+�4U�Hq���H#őG*�4P��8RWq䂐n��n�n��n͐nf�	�F�	�Z�	�j�	�J�	�r�	��ϻ���#M$G\����#�*N�U��Eqb���hʼnQ�7+N�T��Iq�Fʼn�ÔlU�Aq�ző��#�)�R�Vq�ő�#W+��W�Jqd rdJ��K��ɑ�JF�(��V��8s����3=G.W�8�Mq����e�#]G:+�\�8�Qq���H{őv�#mGZ+��Ri�8�Bq�-r�r�'�H�ɑ�G**���8RAq���HYőt%+egJ+ΔR�)�8SBq���L1ř��3�g
)�T�)�8�_q$Uq$��HRq$PIC�(��(�|�#҃���ND�L�n=�P~�*���6��;}���I���*�4�Hl;�Z�!���L��i����l[�Sh��!�/��Z�V�Z���Wh��"�o�B��>EH:���mk҅�Nƒ���;m�w�B�i����N���Y֝�O��sV��Z�~�h-�X��h�.��D��}�K�.�7�D[t���%ڬ�Y��+]�/u��N�h�8���Ă(*?DO ?��_-��.��A7ӯ!��F�A��{�_ ���T*��=��/��"��S�T#�+1��7G㘶�l�:�17z�"DD=`j���ǎs}�Z6��o�q�ZX�6�։��7����~�	~�$��[�aF���狋��ŭ���S≸w�D΅�E�E�����%�%�i8�|�襍�W�h��q�t"�,��>rAn�����C�a�H��
��8�5/�\�� j�p�>�^d�^�5��+/�p���0�&{�B��^�+G�H�>u��qto�s��˫�\�$���@�e/K�<��S$�	�[�KY-���c$�"�pVDj^�\^qF*x����ȳ���軞b���8[z��h9����>�S{�r=�4��L'K:�Q!9"���A5q�bj��?-p�'ķ��Y���r���F���q�18�#Gw�;�9�����8�#Gt��Y8�3Gon�c6��}"�4$;q��n;ɘK�X�a=�pw�(�Ay�#%�3r����Z�5*���*�O��W�kĵ8���k#��bб�q�,�u7����xU��$P��C�ɚ˘�ܾZr��O�s��Y:�����*2��N&�; ���܍���#�dΎ
�z��,�G�4��}3�d&y��"O����K���#��@6�M�n&[ȷ��D��W��G� ���QʩI-�v	�Q�&i*-@�"�-A�F����@+�Z�V��i&��:�.�O�ic����+��na��j���|-������m�M�E�)��7���o�[�6`�����/�xgޅ_ƻ�n�;����W�Jދ��՗��W�^��U�*e��XZ�Ys��y��|�Ek���������z�Zj�k��V[k�������9{������֏�O���N�k�u�:d��XGmbS�م�"vQ��]�.a�������v�]ɮlW����u�zv}���о�nd7�[�-�Vvk݇v����fw�/W�iW�#=j����M�Hշv�=޾ݞ`�!{��h��
�س�}D�I�t&��谿?�������Z��egC���c��'�d��X���m�8v�dj�Xi����r��Q�S�wzV�<=�yj�5��"#�J����c���H+�=(uZ3r	iNZ@���ك-�L��֝\Nz�+HOr�҃�����y�<G��!�}��'/��%�����+d1y��F^'K��.#o���m���1�d5y"��G��)���|A�I�������H�E~&���������ñ�#�1j@�l��PA���iaZ��%i)�����<z>�D��j��Ik�h=ڐ6�M����.��Ѓ'ԅ��j>�_��k!������!�>��X�F>���G�(>����V>N����~�������)V�U�J��XOZ����������Y�%k�����z�Zl�i-�޲�[o[+�w��և�:�#�c�k�����������b}c}k���f�l�b�jm�~�vX��=֟�^k����:`s۰M;f[�m��;a;�k�a�v`'�|v���.`�٥��v;�.k�����jvu���i״kٵ�:vc��}��Ծ�nf_��fG�R�����v/�����k�S�s�}�=ؾ�b�`��)�9ƾ�k�j�;�?�|N���)�"骜�+:�N�R�K\!z��D7�Et��墇�)����{��`$z�P�MH
<O��g�@x��D@�%I(�h�_���v5��0�3!���WHl��Ӷ��p��ρ�Ml�
�Ic����9o����.�{��8��Jq���IIu��8�j��P�Mg����3�f�8�cଘe�[�r�mw�����}�]��Yǝk%���P������I�!��~��g���m����j\g���rtߺں&�8��D���~��H��l�e`w����\��“����y/x���K�B�eo�����{�{�{�[��-���yoy˽���;�J�]o���[���}�>��yy{�x�O�ϼx�Ͻ���&�ޗ�W�f�ko��������������������������~�vzx�����Oo�������z����� �
&�0�)b������p�'��E �"�H�EQP�EQT�E	QR��R��(#�EYQN��y��8_d�J���"��j���!2EMQK�u����'����P4�Eq�h*.��%��h!Z�V��h#ڊv�������Vq.�|g_�)w���;�}�}�}Ν��s_p�/�ܗ܅���+�b�U�5�uw����ԝ�>�.�������������&z�{����ރ��!o�������7�{̛�=����fzOz����������Y�9o�Y|6��4B�׫Jl����֤�p�����A�UM'E��^Dʃ]�@j�Ԭ#B�JZA
d�uc2
jr>(3��O��D�(h�Z��&�EA���Yp�|��8`67[���b�� ���׀QZ1�H2��G�ן�oy82^�Nrl��zi��k�jI;ўtJ��;�d:�Ρ����э�[��C�0�%Y1V�UeuYS֖ue}� 6��c���l&�+��MP�ˆFjt�F�4���n�h�F�j4N��4���M������,d�Ԩ�F�u��4���M�g����h�Fj4E�q�Fu��i4U��5zD�G��1}l�>VO{L��=�����ӿ���}�	�fj�F�4zJ��5�G�{�P���~�1"���w�I�i�.)��3i ��fCR�lg�#5�m� ��:�BjC�h�﷔�vS�5�p������i����-������bܵ��tp7jtOsx�ˠ�l��w;X��b�fB�hM��~t����T:�·������u���a�X:����9��zA��&��l�����mb[�Nv��<���^b�����|"����|�o����|�a�Q̨`d���X���ٰ�X���#xg���"xw��?#xo���W��|(�G�>z�$��G0�`�<��6#8�VW�`;��\5�S"8�N��Epj��\4��"�T���"XD��A��B\8��Dp�.�%"�d���2��e#�\W��|~gDp����#�FgFp�NFp�c8��	j��#�
�F��
3b�@��&hܲfg�2RI�z�*�L��X��.h�֠�C��Q�Du��!I]��tW��y����9�	�^������;�}�l(Ͽ�w`��2�}׳/AS�`�9�/��"��
���ڲ?Ļ� ��ħay�U2�s���y��i�F�5zQ����B�^�h�F�h�X�W5zM��5Z��}��R���h�Foi�\��5Z��;���_���*�Vk�F��4Z��G}��?4ڤ�?5�N�5z_�4�D��}��gm��s�6j�F_j�F�5�Z�-}�����V�~�h�F?k�F�j�]��}�Gm�+hTO�&]�H�L�L�Z�(j�t�h��2�Q�\�Z�j���e ��cA�L�gYBVB4���_ �>Bm����J�Ҧ�-x>}� :������3�Υ��2���/�V���g��,�Ud��!x@Y֟
a���Ħ��l>{
���l�¶�]�Ÿϋ�t^<�&�5��{�|��m�A��k�=�:h�?�U�t�vk���fb��m�9��ȅd�D���d>y�� k!J�B��]��A�R������T��^t N�B�2�Π�҅t)D+�M�{���x%����~~}֌�g�Y?6b��l"{��b� jY��g����'��Z��[�����-��[ѩZ�����Lj���OB�}��|	9.�g ����r�f=h?����C������ɤ�xH<L��jKX-a��
�]m$��,52�� �B�"�M�{�����BSi	Z�V��i3ڞv���`:����#t�G���}��L�;�f0�b�Y���������l��Mf����-a+�:�je=�_[�:in�ڦ�Z_�
5�P�F�Ш�F�4j�Q[��i�^�u��R�:i�Y�.]�QW��i�]��5�B��]�Q/�zk�G���Ө�FWk4@�k4��
����i4\�5��M���f�F�������jt�F����,�P�&v"v���/F�#G}�8��$E��˗�KCT^�/q�AM�p��3>}���ّ�dG�klF~����>b�8�"���B[���"ڊbh+��V�F[���~RVL�Q-Fy���
��YR�� �Ƚd*�I�EdYC֓/�V��짌:�M�i&mH�ӎ��O��Qt�D���t>}���k���n���!c>+��YeV�G��z��l8��;��8C���,�I,���Z?h��%�%�Z��b1�^�1�Z����&���~QR�/��A:Z��rtQ�
�8&��?���>�?��1&�Q#"Y�w�vj�F�4ڭ����h�F�4گ�_��F�4:����f!�hT^#�ӈkdhdj��Ҩ�F�Fq��j��QB#G#W#O�T��kT@���iTJ��4������(Ш�F�4*�Q��iT\��Ԩ�Fe4Jר�F�4��QE���(C�*UӨ�F54�Ԩ�FI��e�@�
�Y�:�W�jt1�3u����q��Fu4�@���ר�F
5�P�F5��"�.���Zh�R�V�֨�Fm5j�Q{�:h�Q�K5�Qg��ht�F]5�Qw�.ר�FWh�S�+5�Qo��h�W�~]�Q���h�F�h4P�k5��u
��z��ht�FC5��p�n�h�F7i4R��5��h��ht�Fc5�U�qݖG��3-���Ii��D�j���?&��䒠^Ѐ4���H+\�)A��l��X*��>���f�Y
G��w0/4�qC�@�F8�(��X����p8R���dYHր�;@��^��;�;L��8�b�L,@�HR��p�Y��!@�1�a�:��?�o�{�Nu�0�3�9����
G�
{T��`�qƃqT]a��u�:*�S����Vl�����WKQD�
g$�p��YN�D0�p�B�g2���솸8䄏�  RQKv�O�K�l���Q.�YrUN��k2G��P���/\�F>�.��;��r���Ia�.f�[d���M��xh���#���x_���㿾���!��,�GR}��eX��6��7�nb>c�1 �a�l�9�j>�~P3��Qd�*�W���\0�
�2��D8 �)i��w�i�JJC9`J
��2 �d���|:<7���әe�4�H���� �I҃����u����+�`(偡40����PJC` vXj���
�~ g[���1�@�BG�#���AB�1�^�_A\>ꄤ̍(�̋ܐ:�XPH�7�ɴ��|��fZYO������+��u�*iX��rbPB>OP�V�^�z3�QP��2<{iHB
��3H�uHk_ =���;�w��6��'�y>��<YΠ�,��߳�T�2T��T��U��U�*ci��4�jA�i��)^���=%�A�>'��|�xI,/�E��x]�!��eb�xG�+V��b�xϿt0�-�ڭ:h�.d葉d��=�����[��5�X�v������_z�,%�(�8J٩�׹����6��U��}��,���_���%�+ ���q��x�#c�W�Qd����M�*I~i =���\w���-��o +�qm�u�K��ʷ]	��"�wƏ�/Ư�o��wc��Y�<�lg�7;����h1N�&n��Nq���HR�-�b�ߐ\�;B�:?���k�̀�U^0\xW�S٬L,�zGB'K~��	�h1Z���r����;�Vq/ܓ�9bÀ���UY/�g�#��յ���y���]y��a�5�1g�Q������P������`y������!dCƓ��$\�pX��dYQ�*����|o�1����v�4�2H������G~PG@�E%Z�PiA�� �y��#����\1J^_��9��A*�›���x�fu�,�U��%#�m婙]��Ep�v���4!�ƅ���~)ܗ�����B�_a������&��-xn�x%<j6������z�B���/�|�~�Ӎ�Gb�ĝIЖ����mR�&ޔ�4qw�怸+1^�S�@���]�]���G�P�ƈ�6�!p~���\O�J�Lܜ����K����ru���cTd�{#��"ğc�\�=�e{6�؈�:��������f�=����X��f��i�Fh�V�5Z��G}�(ja@W��ٞ
�ڟ
R2�*W�m��#�,�|s�ɕ��s>�9�b��r�s~�9�c�0�\9���`Η0��b���b��s�|s.̕s;�s��9c�Wr�
s~�9�`��1�k�r����obΥ��\9ǜ0�r��\�+�N�9�|s���o���܈9Wa�w1�J-�h�^�O5�,%[�v���v���jR��I���I��g�C�
}��F���h�F���K���h3��(�-�G��m0�F�&!W8/��V+h2����2f�Y�,g�G=�qL�%�K�)��ȴj�bῊ=�5�i��UQ9���	1V����d����ˀ���m얞���_�A��A4�U�rnvMS���o��6k��o|\ ��`v����]L9�q��p7S�m�y�\�'&}@�
"S?$��S�S�g�!��o)��b��ϓxA/�T�^$�������%R|҅���J/�I	�]^%q��2I�b^'�b	�<.�3o�֥�?j) �o�b��,')�m�,�B� ���z��/�]�|�U� ����>����{��x_�w�@|@bb�XK��Ň�1,>�#��(��S(�?�?���(���s8k��e�$�	�K�%��+��y��e�Z|
e�"�@���@���B���C�?@����P�ŏP��OP�mb��g�3�����W�+�v����M�%!v�h���M�{��7�A�?$g���=9s�e߳���~R����rƾ�_�q��x���Y�K��~iُ엑3�L٣�ה��:~b����_߯�zc�	)�_�7'e�~R�o�$�o�"I��ߚ��m�6��m�������w ��~G8�R�RR���w"����L�]�.�����J��n���ߝx��~�=��$��{�����Ay����<��By��ï��Cy��C�<7�7@y��C�<�aP��p(ύ��P�����<#��p���P�Q�((�h4���(�X,�z�+�d��!���_�E���e�������6�^�;��8���'_�? ����C��8:������u`�>� &��= �
^Z�QM d�����$D�<�'㕠��M�b2"	�C�ǃ4�EyP"U����ɘ$8_F)A%�)yPEF�A59���9��žs�������x�
�M�KvSV��5|�	d2�A��d���V���6M�i4�֡Mi{ڃ���8:�N�s�B���O7�o�v�_��I�0DW�	�,�G.q�uK����R�6�N��;#NA�q�e��]���!�wG,_��G�q��
�I�=�C|%�TĽ�G�q�}D�q!�F|�Z�H��"�Z��$���_��⁈K"�q�A�K!�qiă�A|=�t�C�E|�r��ʵ|�q�BDZDc��`��B��,�%{��a��4��=2��X�ELn�I��f���qx̴Mp܌N1S�m& ����/�BfG�f��3�N5S��f~��ҙh�L�q1�n�k֕����x}�w1�w&Z�ڸظ�@�Kg��3��M�#����#��΢x�4��.�[<.<C���xt�L1��I8>K��XI�����a��M��@�]��-��刬��=o�C��9�#�G�9�*�����2}�?}�3���帪�~�%��m?GR�ȓ���1�&Z���C!���FX`JʑO?
��Ka��(y�t���_V�,�������
~�y��~E���ý2�J�+�7�*~U8Rͯy�����C�c���P��P��c
Ա���Xu�
z��?샌�G@��P��P��Qmԟ��jK�e�R�3c�3c�3c�'+��ʠ-c�'����Bmi���QCڨ!�PCʾk쉯NB���	�Ya9"1Ja�'1Za���1
�~�[�}6c��6��8��&lm1hm{��i�	�m�jy��m���b��H��s�?��f��gk���Ű��r�6�'��,�����<Q����}Lʳ��y�9�ڬHk���Ű���92������;Нb'\���vA��y�?�_۟�����f�&�X���uk�E�Y,��b�΀o~Ahm�`��"y�9�\ۜ������g�iaUu�E�V}1��vf�B;3#��>N;3�hg�mYض,l[�*ۓ��=��6$cT���<[P�ګ�ګ��
mT�^��v)�H�-
�E�����X���	�Ϳ��D-Lh[�VE��4lˉ�JN9�nCB�ڍP�eoI!𮪒��������["���)yJ��,{���dZF���I�=8O���7%�d2;#���%���!�O�O&���J�\�O&��=ٯİ7�td�?Wj��)�}Qj�ӔZ��1��q�9���'7�O. O�8���=���+���a�h���S���q4q5�	r���}2�dr�S��sK�Cj-\(d�S�m���^�c�3��95���ʱ����b�3����y.�r@�r�}'ү��ϑ�'pz2���)��+�r���ԉ�-N$�gCR�^�I�ɨUb8��G���b�,y5#}t���@j�9�yʮy\�@��[����Sg�L'��{��${�Kv�r����r�tV/�>���x�R��	��3�r�W���H����N�WM�	�N���)�=������&v筃c'��ʫ��2�]ρ��yG����w��&�>�tZgE:+>�\ʑz����oh�S�ѳ-�r60`���k�uM�ͽ�c˙�yj�Pc�S`bO��{
rjר^��_`���2�RB�l^m8�&�T���K�ja8[$�EM�G)�R�qtf(�1��3�߂�EI���<z��`�{����3/�R�{���Ҍ�����R�.M*GdrtD&�Dd�LF�0=9쒭����Ǘ����[#���5�3����8k����
%��dL�Zb8W��-���%]%��gE��FO��U��U��"W�lr%g�1�k��!WNr���J�k�7����\ɹ��T�Ӓ��ۇ~2�:��s!KgO��yHѥ�%E���#�#3���,?r~.�Y��?\���G�d���FJvN�'m�[�J�Rg8��T�*v��*v�r%gm3�1}n�*9k�E��C�ZGS�yJW\y�g���D~rK�|���;
�'9RZbgYZ�����K�7�p������e�N&�9�
���T�7?���aG��&�<��ϲ>6�`�8c�gk,�ԥB�5��=�죝gS6bgM6��B��o�)Y��{ϊ�8}9�x�r"ߙc�.Z�~�?Ή�8+��w��ϽY��l4?�;Dz�_$�8��ñ�(	��OA�S�����QO�@�Ӕ����;����<d Z�a�����<j<ZקZ�fX�y��٫ӎy�i�lu�fX��M5�o��p�<Nݩ��5ef��h���FL5�NƏ�V/9k��~�0B̫^�۽ߩey�αz1U����H%E$�
s�DU�kp�r�j�j1���Ϣ�z���#u`�1�Ђ�w��������z��H>:�V���:ȫo:�ң#at�|WZO�F!���	���h��D�~K��N�C�8]Vy�QN��*���W37_�q4�|˟�{�'�e��'�\�g�O�s�p
yr��'�:,�Ӈ�>q�Yç<��3���-�|���|�˲=�\��*
,�����Sx2�o?�\�D�Ey��\r,͈H��=��1�ϻ�qj,�8wXcr%��\2\I�س�y����?�z�>E�����ٗ=W:`��$Kr<I�J\�g���0\���ے\��
�4�Ʃ>�9��T�r�RǕ�
��R���xN�

��E�f�G��E�Y�͓=�\����'{�p]�3y��S�r�+��~���L�!r.juj��J
�*�<ٞD�y�p��'�����V�q�W��r�Z��hߙ��IUF�^Õz���p5���0U��Dr]��0\Ʌ�.Woa�J�UW���p]�,
���J-U�l���ٲ�=�%��1\�'[y�{�4R�8��	�UzF�B��R�y#2���1\iɎ�.3T{�"`��i���<^�8C����d8w7f�f�f���}�8�7ړl�JNq�\��Ƹ/�E=+ǭB����l��fb4a�
OƃΗ41*4p�zW{�#�=Y'��E-r�Aib�h�z�y���~E��~؟`��a�b�Q�w�)]%�:�cc�J#Mg���K��S�	y� ��l��凫"Y���F,2[�Ę�2,;�F�+dX��B��=��d�Wn�J6�Z�~�O���S�4
\])�ѓ�s�L|�#�_���b~1�U~�Ž̝�R������o~���yt&F���a�x\�2\K�B���4,�	1p
'��և�q�ytFd�"�+J�{�1�!�I\��V3���E�^��"VRH<H.I�U�Rp�]qA� I�A~8^0(�PP���RpM�䰰/�ľ8��L\�(��%p}�p>����q��pU��*�Ub�J���tXz�v�N�O�'�d�dǘ3�T$��!i��h�Z�h�^��FDR���ބHz�#���7#�q>+�5�d�pE"�s�G$5�<�*=#1�`�F��`+���GpJ'�~�+�&�k�K2�'��\�5�뾚�-�k����q݀�q�m�mp|��$I�o4p\�5&�����[W`�
�'K�7��W1Ļ�C�%(���T~
��[�U&�d�
bjC���%�@~��/�q6���N~w|��
6�w�
�<����'���u���`�n�k�Wc���2��j���_?�?��o���8�z_�@��%}���\ыC��T���A��kv�Wkvq��������\F��PCre�A��:]��(A*�D����͓�
v�{�/�v|d_���})�"�R��P��EHi�+��_��NB˸�L�8c9YN�j�גuu�f	�=�!z$�G�Hx��H�'�������	舶�<m/�Y�e�%m��-�vH�#퀴#�K�vB�i�`t��ɖ���/�c?=�s9�'fk�R���ڤւV���㯖+��2Q��V�ʵ�7(a�u��7�YŔߥc�z�	5aN5��u�(���ݐ��ӭ
>�\������|�Y6_�Z֗����l�?��H;	V��_U�H�Gh��nA˃vw���>	�*z)AiG�5����I����� h|F��s�f)�xP��l|��Y�̄�����xD��S����q�xF���m�ˆ��p(o!�Epm�pUE�O�K��G�E(j������E�H�uY��S�@[/��BZI�WF��WI�#�_;�hטZ����R�����mӤH4`��Gs���<�01r��}
ۈeT��P�n�D\���Y�L�K~��J/V�W�Q��)>��-|f��I�	ï~Ț��Gx5�m��b���~,ij�cT�Қ����}��$�����2|/�B���d�G���^ي��H!=��ң��>Pn�5c�_��TzX�GTz4L!�)󷢶�#�#�#I���������?a�[�l!Rfd-ł�;��`M�^�~�Z�tX�>d��(ЊwB]f�2��5�H6���6���!��1��$-B�hZ�֢�iSښv�]iO��:����ϐ߂	�@:�Hg!}
�l�s�>��Y��!���y��$����yfZ���B��
��e/#]$��T~��į"�g�nƑ� M"5�3�73pO~?�
,'��Η_<�C~.V����H�'W�j"M u�
�p��i���<��7^(��7�"?͘������n��U���w��_�E�VAtj��Ն(���d֗�Pd�(cD!B|8��G �X"��!|"�'!�;��5h@\TX�<�N�s�B|Sޯ��W��"�h�A$S��<=����y���9��7Ƿ�Z�X��0�S=P������u�F��.��,#��Aa�K1�e��7F�#_��Ѥ�2x�'���b\��h���S}&Wu��Q��(~��bd�0��8���-�c8Q	p�
�j���'�ȈO��(��N�7���Fp�1������ȭ�ը�������{(�;%Sq�����i�Y�������vΚ7��ϫ�j}�$�i�yM�oY��?��K�N*i�$~��F���R�W���eɠ^�a��>z�z���^��
�FUe�F8
N�#�؋���b?�D�T>���Ժ��α��؞óW�_Ճz5";W���)֫��U֢�kIF|�u.�~`8��$SoE۳s�r�;j��#Y��mݧ�s��b� \�l1�A��O>&ȗ�[��Nv���5h
�iZ��KP�fҺ�m�����n:�N���,���t]B��Ut-]O7���{*��k���E�"QI� ���G1���#"݋t�H =����xAJ�2����BG��4�T M"͇4UR��ߑ�D�%Xr�eX6�%X�%�D���R�X*K�c�|,����cH��},��%�>r�w�z�J�A��H� m�����G�Jrh����$��_徤�
kq��^d�&��2]'��(�uQW�C��������;R�ý2�ǀ�@�m��`��NH0I~;$��m��Z%���>�^^�M86��r�Y]2�	<�qt
��-+�2Y3���"$͇n6K�O`ZR�G��X�Y*ד*ד�k�1x���Rݟ�9������iJ�Sd���%��[I��ȃ�Wudy��o04��{&��rߟ���y��o���[u�i�����1o.xl�h��[���Ĵb�*�i�"LK/aZ"��52
k�Q#S�^�`�<��r?��}X/wc�����kf䩞�#��H֗��g�������Sރ9��}��9��_C�`�^ǒ��%{K�K�"�,뮏��+?)�$<2��:M�y�V��ȉe�	��z���2^}��G_}�N�N� �),�X�j��0�/�/��/���\AY�B�/�V�d�?���O���w�r��.��A���_D�/�p�TƼ����0��al��6��hH�{L:	��ý~��ޡ�[~���~�lg`��]�m/�`1�Ä�-��K�C��%�=%B��G!},���:�c��֣�@�H&)��fO��������`�����������$K�2AI��9�J�8�'���]L�'IC��2���*�L���vO�2f>V;���P�Zeh��%rN���h�T�f5WȄ�TO����_�ĞK�`t�P�y�?�{%ao��;y��?ٟ��<�X�#�!�j	l�>I�]�\��Q;�����?�/��yp<�T*׹a8JFqL�*���V&�8~�ч�7�=t
zo�W���e��^���G��Q�ө��eo
U�Ð}6�l(�T�f!��g�1��O��/�Fz����h����ޗ!�=x�d`�Me8R-�����Օ��Yܔ��s�����@�G�"�����}Of�Ә�����R�����`|pG�58�Gm���ۃ;���89�������4�����k�����8o�!����kW=2�[�I�,��k�A�����8��¯��_%�c�+�-���{�k�~>5'�����A~��Ǽ~��j�w��q���w������ƿ����/��r�T�ŧ򛩺/_�v���}�q�r��}j���hPh��VP:(
�lPh�ʆ���d��`%��`�����/��l5���ײ����t���o_��^��c�@�(�| 	�ǜ���}I�7������#cѯ��FV����$�y�� ���hp�3��b�������z�6j�E��	�M��Zo6��"�.����پD+��D�Ġ��-?��&���f2���v2�LI&�N�MzI��A2�̗LM�OHLJNIMKO�H�L�%K%K'�$ӓe�����%+&�O�Hf�ɚɌd�d�d�d�d�d�d���B�P�)��1�t���`�z�~�,��ǡfބ�|6��#�4{�d?n� ��Y�S��=�~�T��Hf�n�.�ooLj�?Z��Kx��}	���������ޝ�eA.aAD@@DDDD������ """QDDDD$�� n!��	?$�	� "N��DQWE��Ͱ�\�G}ޫ���u�W��[ݳ� �@�C��m���x�w��r�_0�/�ϡĢqeTX�3��&�B~�xH"(��pM$H;�u���rr'TP���*�W~��Y��JY�3��b*�*�(�h�v[q��
�rRK���Qw�s�$�¥#��zP*�R)���4����V�jZG�h�t��0"�
%L&ڋp�C���p!�E���b��,���b�X$���b�X���Kc?Y�*�#��N�mq�ӹb�V�q�h��Dǎ�bI_�gX�O�d_�k���m��c�7[�5�6S�5��ޚ���u�콖�����w��gx�3�����<�w��}}�_��+}�4_<����^㋷��}����]6_�=��o�d��]=�׺�yـ~� ͳ��eW�5z?��+=讠�D�ׅ�B����ꃡm��mѶj۴�ߐ�{{E07Z��K�O_�?{���(b�q��n�"M,i�u���l��#��I���.��x�}!��"��{����К��k�Cf��ri.MŬ8�{�E;a��ޫ��i�h�l���ëDU��Ń�s��t�Ҭ�yq�~�>Y��>E�W��߯O��g��p�=��D�C�~`!�4��[s�J߅�:X�Ӫ1���j9��}'���,�qR(��g|�+�:<�=���9��B�O�r�}�=�2g���W��s�v����M�������9�=�Ц3�q�5J��ӑz+����+���4��s��sS#]S�0�R�(�����/�
\�����z�%|>�ȁ<�N
ϟe����V����Ir��w�
���u���)'�v(��b�����x
Aj���<Џ'6I�����){�>�;m����x����Wڷ襵B��uuY��&�y ��y��܉�Ln��+���A��5�7���4�FR�����u�V���ۢ�7�^�`&b�&���Z�:����'=���3O�RB����������94��E�q��N�țH�|ZcI��F��ɲX�q:ۺ�Wݰ&i�)�N�;[!�fVA_�f��;[�խV-���C��7Χa�� ��a�RۤՒ����E�����		'd�@9HC�N�.	O*�d+ȗȶ���v��K���2y䎲3�p�����+�5����F���f�v�-�I�xG��� ��vx%l.��a��4�&B��iv��i�[/�*�jhmƞk'��>�cM�ǾK����W[��]���+`
�f�8i�v*�A�q�X�̼���r�X�9%�y�|<���{6��������)8�U\�d�z��2/��rqcK���_a�m�;�sV���uy�)}�y��ƺ�+�7��=�w\-{�>����V
/r�m���dx����l�m3l3mó<b�c{�6��m^����o�-�����f��m��}��w�e��R���Z	�?h�yt5b�5xw�5j�:�> M}�>�S��5@�[�H���v��txZ��~%��zw�ߨE�pk�>B���p�ä�;����)�g����Cs|�8�ZE4g�3��3ĉy�l�lM��։Y���D-��������91���NX�s���s�s$x�3%Ls>
y��I�N�ع�:�ο8��Z�:���������Xo�u�:�;�
���[g�{j�."��\
<�H�����RW�tvu�������/���k�����p�t=���1�'\O���z	��U
�;��׸�/rmpm����>!=T��:ҋ����1�����[{}{E;��#V��4
s��&��]>�
���D-�ﮘ�,�wғֵ��ֵ��cA��Cъc�[N0�m����9��;��2��G�zO�G6�1,Ϯ>Q��]o���U]�_
9\�nY��q��~����9�A�/8_�@��_Sj���ڠ��9uB~��z�+�4W�+:��ut0�5��{]�Q�k��A
@��$�j!���r��O�A
�����#��!T�'��'Z�KǺ��b���r�4���V���q������M��Z�{�8x�4��+ع�t�6P����'���)���qm���&i�SOh��O��)�s9��r����jL�ԗ�?��۝d}֕�xՁ���+kg4^]�E��+k��x��ڡ5^�[�����xea��ƫK�C�Z[��ƫ�M����/�ZY;�xӅ��b�(�E�(>/&��b��-�b�X&V�j�F���]�{�~qPԉ��+Ѡa����G1�ͼ�a~�}����=�=�5����yD�&%�qj9�<M����X�i��*�u��N,�GX{�S�����%,w�}X�uN�d>�K���o�z�G2�t�O�dNi�<�����~)^>�s�(M<�)��y^��<�7���^}��Uߩ�R��z���]��� =AOs�w|�hpjN�3���y��]krpr~������Zg\�K\m\���]=���r�q�u]��5�u�k���"�3�Ůg]K\Ϲ��~�������p�Wd�X�Z��*a`%z^�%�2�ye�Kע�V���ܠC�#��AǼ@ج&�����u��@�A�A�5��Q�x�+�A��r�8�D��t�,�,@,-�ZZ
�m��@�@;A��g!qt�	:�]��jvP��S���3��)M峿{�ow^)W�c�3��tmc��ľE��w+���9�VZ{���M��jC�Z��%k�Z�V���&h��i�L�m��P[�-�Vj�hk���][��vk{5�vH;�}��$mҔ�����$�U<W���_����q�S�=��3���p��K���_�����D	�򫥅���w��`.� ��_���޺z�h-5����[뭫��o�ǽ%�=1V���0�zN?�ǿ�z���~-��dT���?�]�ng��%h^�bν�~�|�܏�=��w���^�/O�:�_�x�6ІK�*PՇ���R�+A+^n2�������O��'�
��4;�A�`}���K�W���x�0��B��;p�p>��Q��c�0uno\?>�
r���nj9u5	�-V��XS��V��]�ye�_M��X{u�
��5z���е���k��i�_\[Ȳjx|��'kE�������[%���.��O"씈�5�%Ž���<>�M���C���:�=l�
_�̻�7<��&=Ә✟3�4ܯd���wWP2�lx?�V$�B1^�V֦û��r��!��Ū�ꯊU�Z���z�>V��/җ�/��f}��G�O��Q����F}�yW}
���
�-��r�<o���]z6��Ϻ�k;(��nz�����Zzj��
��{����q|����7\Wzj\X]W!�ƳH�3�:��JۂR����Q�(a��מ/P�. x=dz>�SG=_#��ʃ��;���c��5h�o��(�e��u��V@�<�E@k���</�����u��YD�~S}�٫�A�:�B}ǭxGy<_8���Ca��
��
�C�@
�QC}�xx6����o�u��5��X�ف1���c�<&�X=��['!�X)]Q�.��g1j�E�֢�Mh�.��-�j}���Zw遞E������ى�w�a�["n�V@�y^w,��v�r�y3���Kз��
�����u�4��~�\\?�y�E��]��Z��Bԗh0|�.|z���FM}�;�}��X7uz+��)�-V��t|�N��A<:(#���
��M,�Sop�u�?������z<�O��������{��w֣۬��]��r�!�a��Z��<�(�C��!�e~�2����r�2?��A�uN��5�X"���#��¹ş�f0�Q�v�u+�hl�MԴէ�W��W}=p���-�A����J|
5n�X�
���A�h�7t�t��z�z
�z�9�ȫ��Ѣ���Mϟ�l��������?��u�͞��h�Q�S�Ї���Ax���ûh�V�+ʨG�B�`k[ѦCh�A�W�����Fa5U��,{�/T�Zv��FZ�[9n;~��~�����K�}BY��<⳩�q'���%�?�m(�M��hc�x}݂v�<�M�q��.����Z�snK�x�jɆ��l�E�9H5ڱe��[��&�XP���|\�珰� ���y	�w���q/1;�'�m���
8����
�r���v����e�j��kk�:j�9�9��X�c��u�Fǟ�o86;����x���}�(g�3����j���������|�%�E?&�Ew�[���01RD�x�*��Ɣ�qb��"��Yb��/���E�J�5b��,���X����Dԋo5M�k!Z��V�u�zh}��m�6J���t-W+�*���$m�6C����h��e�
�Z[���6j[���.m��_;��iG����d�t�V���$��^��(��2B��d�)�e�+'��r��)���B�D.�+�+r�\/7ɭr��-�J�<$����1EʦL�Z�*\u�us��F�(�RU�*T�j�������i��_#�<]��\�ro?ޞ�v�j���:�L�x��=1|7������\&�Uy�9�D���zN��V�#���,�ܩ�=�+�}c9�=^��y���5�����}�'��e�z~	?����2b�\2o�'{��d��_~o9�[W×\K��A��Fy.����;O�
�����y:/��f�I��
c�r[����~�r��k�t����
��W�X~���^���Wkޑ��+�'w��V�:����7�ioR��I�P�\�-;M�N�AMҽ��cN�e���5���Mf�����h���K�Rg~�E^*;Е���HW�β3��]�5�S�Ջh���t�-זK�l��R��VeK�m�m3i�m�m�ٞ�=E��Ŷ�T�9`�
��~X8�|2p=�ք�wk��ZӋ[�O/�+�Zn�uܦܦ��lO��`n͐�}D7�,@��y��
V����A��7�Dp���*A�A�@SA3@�A��bh1hh���\)���>�.���E����&��VP]k��i�A�@�@�@@��@�P��E��@ɠLP>�444|��=�ZZ�n@[	z���	�	�5I��XNad��O��NW�8S��pq��}�ҙj�4���o�|��S�"X}��/g�2��ad�z���٤��{�q��6xk�-��=<�h�^�����bw��?�Nv�����a��Q2^��lY(��89QN���,��r�\*_���jY#7��r��)k�>y@���z��Ҕ]��0�VuT]U�W
PC�p5JŨD��r��W��T5C�Vs��X-S+T�Z��Yo,�+"��滙?��1��N~ܛއ���8�g������sR]޻%��N�t���0�'�C~�����]�64��:�g�?�gK����������IK��m揜�2Ï�6�K���i���j����^|� ����eΚ��\,>��e�Gr��XV,���&\&sΖ��ѸOS��+���l��@�;=mzv�}�v�>��O��ig8?���c��^�4�L�C�َG�9��SOV�a��ζ��˜�����|�:�0���u>��|�9��s��)�B���E�g����:��r��/g��c�	�gg8�=q��}���u�����-s=�Z�z����׮��Nh��w�{�K�Nzg�[���[���ӧY_
�w,s>�\�s��7ΕΗ���/7��b�k��-���C�G���W��BG�F�F�F�uj���?�M��D�7��_2�MSN��>��}�G�"Z��Ś����XZJ��)!~��
z�~H�|2s��wX���������'Fh�m����}E��o{�{�9�=�����6!��wB}X^��Ͽ�>~%MB�4A��j��+!�}	�;�S?ds�C�#ToՏ
� �2F0w۲�Q�	�)�&�n��^,,�w��&�^�M�����+��}:FBYopm ,�Z�:��UwPo��~w0hh$(
J�LT��
3Qa&��H��((�D���0f��LT��
3Qa&*�D���0f��LT���0f��T�=��B�2�w�m}�D���н�44��4
D���@dz.��A�X�L"�o�/�f���t 2�L"�W ��4�L"�7��m{i}�Lߏ� �L?��7��)P �	jj·u��

�E��@ɠLP>��P��M�ـȀ��D�L6 2��["���ւ��z�ض�n�^�o��mп
���~HE€�
�߀�
xb�؀�
�߀�
�߀�
�߀�
�߀��TP6�T������ZZ
z�
�T����	�����oI�1K�@��oo���C�v�ߎ���ۡ;�o���1�DP:��C�v��>4	�ۡ;�o�ZZZ���ՠ5 �;�o����п}��C��:�o������@����@����@����@����@�@����@����@�+���0{>�8i,ocY���F�,��p�wN�'��='�k��Vx�c��t�������ݳ�Sn�Oo�~ϩc�_����4ω�MO|w���s�U�3����<�˽���UZ�񳈦ڼ�p������7h���'ۘ�o��9�����F�����fd:U��e��~=�o����-\����Ss���,/b��o�|���7�>k�����Sftxc:�;����N�8M	g}R竅-X+��?v�K��M`�o�,5G�W��R��Z�V��AmV��NU�{@V��z����;^��Y�����X�`q9��Yg�&��<��k-_���:�/}����#�H���v�g�v��(g+�5��2Ǯdz����W�1NW�1O�J��X�r��l}s.�ej���~N��-�o����}��wQì�۪�S�u99�
�7���a�yC��~�ۻ�%�4
Z�l�r)��zG4�P��,���;7r��:q��C,��Ùk�{��a�Z�����i��J�ڥ��ڸve�9�p����z;����
�s�/�ˏ��g�=�LJ������\����l,��A~e��֨�&%�9����Z��B�[-��|�Q=�g~k��a~��]��>���9�5y��d؆9��-�㷞�%M��(����վvjԊ-IR���F��_E���Cv�_B^ο��$/�����]����
x�k��s
Ћ���9�n���*�&��U��Y�T`[\5�����1�~9���b��������s;�p;��%4�V��܆�,@k�v����.n�DF��?�m����:���:R�ր�5�j
�Z��Z�F�)�Wk��p�����WWK�j	\%��%p<
� �*�6�C���$p����"�4�ŠJp���SA3@�A��r�.�el{$�A���Znam��A�@��r?� �Z}�M)P �	jj����
�Ł�A��|P)h,�JW)�*\���p��RK@�A��
�ZW���M �j�t���ܠC�# �˳cޟu����:p�n����44�ݯ����A��r�8�D��t�,��|�"�RЋ �^_
��u�_��u�_��u�_��u�_��u�_��u���۠�o��mп
��A�6���۠�o��mп
��A�6���۠�.٠�o��mп
��A��h�A�6���۠�o��mпm�O�_��5)�	��������5�VO��N��N����CQ^�䳇�CK���0P�
$an)��!L�fiK���ӵ%�m�\ڪ��\5YM֖�j�V̈��
�7h+�P<{"T��j_X�����B.=��a�>�k��붂>�⾧�ц\nG
Za�+��Y\�
��M�>:�M'���pR��N
���G�ʽ�����W��j_Xc�[��`��6�Q +,1�ve/m����+�w�����_�@-�z�&䩣��!7=�q���M��;h��ND�`�>�&�2O�q9�3�1��x��I<��ՔJ�ԍ4�AO�9�SKi}q��Ut���Zx��KA�A�p}<w��N�[����S~7�B;[��!wE�a�sA�!?��4�hh3hڿ�Sg{�t�f�-�[A��F�"AѠX�P��m܄6nB7�O��uAO���u]	��
���t5��g���kO
�h!�To��&Zh���|��,h	�9߈l��M� \cTL��m�
c�:r]���thh$�6�(�hP�T��ys,�v�8���;A@w�&��3���C{���:���lhe������6�El�T7<P��j�U2���u,��,�0�Q���ρ��,c�;̲!Xj,��Z�g�u��:Xj,���R�`����zXj}K�J�G��(э�(�%֢�Z�X�kQ�%֢�Z�X��(э�(�%֢�Z�X˾�*�4�1�A����}��Fp����ެޅ�	�E�ͻa�nءv�����pP<�t��JPw�U����^��A���>Vk|��(�eW��j�]���Qv5ʮ>Ge�<-�R�P�5s�PjJ�;ǖ֣�z؞ew���z�]��$h�)�B�ӧ�7-�@L���?�ڽV�i+n��&�m~l�#Xl=4�F/?e�4��:���C/���:���C/���:���;�K�<n�Pb-J�E��(�%�i�|J��5�TGm~h����?R���Q̇,
�4���R�~$�Z�F�()��Z;#;�hh>l�6�M�an؄��E+k��Z����
��S"A
��2AY�lP(���
AE�bP	�T*U�V�^A���A�@P��B@��q��`9�0PKX�@�����n�΍ޱ/B��л:���C�,mY�=t��n�Ѝ�����5x��=u��n�ԍ���S7z�FO��=u��n�ԍ���S7z�FO��=u��n�ԍ���S7z�FO��=u��n�ԍ���S7z�FO��=u��n�ԍ���S79�ӷ٣�D�hȫǦ=m���m����(�\�
u忄z%u�����ޣ]K��:@�� ��
4�n��4�FR�S&eS�K��tz�fЃ4��Y�0ͦ_�#�(ͣ��$-��h!-��h)�N�M����V�F�i�i�Z�C{i�c�y���BN*�D+�Ut��q�(���q��I�;�z�Al�l���ˍNFg#ܸѸɸٸŸո�mD�F�1�H0��#��0��#�(0ʌ
�ʸݸøӸ˸۸��q�q�����K�Q�1c��1�x˜o<i,�/�/�o�4��]�+�n�fw�*�����e^m�5�1��ך������@s�9ؼ��2��\�ܬ0+�*s�y�9μ�o�iN0'�w������L�!s�9�|�\`>e.4�6�Ϙ��g�%�s�A�Yg1?
��Q��o��n�!*D��
��	�
��)))
))	)
))�Y�R�*��a8�G�#�a:�!���p9B-a����w�S\LV���C����N����v�%{�����\NOm3i�t�y����6߾��s/��b�ď��Lm������R.�͜��/dD~�����j���4�wl�}qf��m�����.����\'�Oͅ��"��7So�����'��|��Ǫ�>}s�}1ב��d��Ш�ݴ�-�S{�f����VQwz�^|�p�����*ǻ�3��iG�{��������?݊y����|Vzws��bݩ���~������Yv������f��S�g~���F�bԌu���x��������R=��#q�~�{j�g�7�i�z��r{�O�>���ɟ�,���m3�����'wG�>{!��B��ܞ�9��)��^DO������drN>��*��)�Iy��gN��~
�����?�J{��>[��f�מּ���������8j�����~�a��cb=sQ��4�J�҇��f�q<>��k?�P�R���?il9�5�����0����C91�ag�?�w5�g<�'���9��t�����Wԝi&�<�O��'f��u䇘����I�jϼ֜�T�a��P�����7�n��g��O�qF?>�g������#��l�V?�m:��:�U�>�4�5�`�:�U6��>y/�wgS#
�{W�wV_m�6}�f�_���uu���#��֝��;�l�kFK^l��\��'�Sw~=:�Gݏ��.����?̮��s�s�g���=L��.<�I����w��g~����"�#�g�Ǩ��u�������g��訦��v�+5'�!���f�/�;�#�^!̻����r>�]�����\����Ⱥ��O^�ϼ�6ŭ��	,���n��|g��7u�7�cwz�Ӟs������.������Yj�o�/F�?�'���_���
�O��H�x:�C���(}^����7���j�;;����n�����b��3��s���s��)�<QZ�ٗqn};��zv5X_ԝOoy�n��	���ͭ��̺��8������f���ٟɳ��c����6����s������3y�&�ۛ��$�_��ʰӌ��4�W����zg�n�/�=�=����~�G�q?��?��w}�y�s����y��O���`O��S}�'��� g��޹���>��Sw!m����?�u�߿�h�Sh���?������{�u�et����O����V��F�K�ٝYߪ�v�g�>�{lo��ۛ�'�ͮܵͮ���'��g��M�_��ɷ�级�rfk>�mg��+������L����`���`���vʙ��w�͟�'b����/`~���G�K�1�~_F��c��Z�Olugo-���?E.��=���r�R.��?����m�o��9?述���_����W�|{��=~�?zO�>��^�^������㟶}�5�)��8���k�;������c�f��O�������=��6����Ű?�o�Osoy��63��0��q�k�wM'�3��Ʌp�"�7PW� x�nԓ�D��&�FA}�S?�@�!��#���@�P��W���¥t#�݊��(�F#�R$�Aq4<����0�R���6uR�m���*�(�!���Ch�,�F�I��Q��i>-_�H����9�Ki)B*-�_������_��Q{Z����_����Nڈ�џ��	!��@0h3B���-A�?mE�I�z�v����'�D���iB �F0���"���� ���F{LzA�}&����G}�О��О�!��on�������?pMh/���u��ۅ�(��E0�C8���I��%\��P
��h9L�An)ZBn%Z�).�@n#��@�N��T\
�Ut�k��
�#��n��WB�.�C�J\���A�����[��+�����������B\/�'�(ҥb�y��q�(��7��|�R�
w�;��/�S'�^�� �'�'�n�؀��.^G�7����[�-j/��}h�{�=�#��ad�7˛i�.�C!GPky�����Qr]"#e$ңd�D�h��12)�29�d%�x���2��d�L��T���i2
�2�Rd��D�,�E2[f�����y2�*e�,DJ�,"]�bj#Kd	�2YF6Y.ˑ^!+�\V�J��U���+�"���vʒ��8�C�A9r��@E�.y��('"���nʖ��$<u���
�d9�9����^ʓS�T�u�����4*����2]NG�9��A�3�L�ɇ ϒ���9r����CV�j�J�V����5r-R^��R[��|�.�����䟨�� 7 ���u
��F�Mr�"��M�&��_�_)]n��Q�[�-��!w���r'�-�Ƴ��n�˿��������w�t��/�SG��|�ZH�t�e���N~(?����ȏ����F�O�'�A~*?E�Qyy>����zY�����ȯ�����7��l@��8e�1ߎ
����)��(��#=@P;����
V��R!*�)�rP�r*'r������]��T�T-UKȭT+ȗ�K(Q�Qm�۩v�OuP(D]�.CiUGȗ���r�IuBɝUg��*r��^��@�n�r^����]u�|��
r�9{��h�u�:
S�j��Wף��@�p�D�j���nP7�Uj���ިn�[�P5�����f�����KݢnA;oU�"e�����m�V�R�0��h�*r����� G�h��bP{��E�q*�$�Dԛ�������SU*��T%�t�N�T�ʀ��2!g�,ԛ��Qo��A��*e�<�*r�*�U�J�2U�� ��rȕ��RUh�85��Pw �5�]�.ȓ�$��{ �B������-�^u/�j*�ijJ����?��8�P3ЋՃ�g���R��Yj�zX=�{\=����<�}B=y���I�$�j��S�����VOC׋�"h����j1�gճ���%��~�[��a�^P/`T_T/B_�V��(�P+0J�Q�AKV���_V/�M�ZU�5�귐_Q�@���z�Z�F��~��5j
���y�Zy�Z�'�'�ܠ6P۳�g)ȶĶ��v�vjo�g�G�q�q]at4:�Ӹܸr'���Fg��F8��)��k��&�&�Ìa�o6n�<����#�@�[�[!�4FB�͸
�(c���h�F�H#r�9ڈ�c�@�5b!�q��c ���ȉF"�$#�L#�H&�H1R ���ӌ4��F:�#r��	9�Ȃ�mdC�1r ����<�F>��r�Q��(�@��(�\aT@�4*!WU��c!�n�y�1�����!�i�	y�1�]�]�'!�m�MW��In�c�y�1�/�_@�bL�|�q/��T��A�fL�|�q?��?h<H݌��L�d<d<y�1���Ðg�!��%�G�G ?j<
y�1�c�ct�1ט�>n<y�1�����!?i<	y����rҍ�Ud7^6VS�F
�6^36R�񎱟��q�lƿ��t��q��]��v�n�6v�n�{��Dz�=�lv��	�eo�<m��n���
y�� �&��Hi�@z�=�I�djm/�W�ٱ�ۑg�����w�%�����b�l������`��s�پԾ�n�/�?y�}9���S�}�}#EeeR`Ю�]kv1��V�5��j^o&��afR����i��c���f��9�̇\nN@�I�$���ޜi��|�Z�O�OSo��9��\j>O��h����!�G�G4,��২}��࿒�'�ق?��D��CT�Q�GT|8�0R��(3�H�
�4�S�|��/�����_M������o��!�]�wT��@!2D'b�Qp�=�N"�	�ICJzH�
��@��!��_y�
�-����CR0�G��:l��XX5�J�6�1���Bn`�Ӌ��pz1�	a�cP��H�`$ӗ����Lg�0���a70�1ɴ���H�2�@��x�%�ٴdT�}~<�$ Q"��Q2B�9W��"%
�e!\K�70��h�fF;!�vb��pF8##���6�P��6&����?��#m@]�i���%���jB՘�jB՘�jB՘�jzAclc�_4F8���1�1�4�9�
A�!/��/��"�������'@0���t��z2�iI� �d�D
-��ϵd��R(��-��'��Mc��~����6��	bl$.�Q�Yt�N_F8W1����*F8}�\��%z��x��9.q����v\�����<.q����|\�Zq-d���u�:�
��(������Z0
j�(h�"��XXh�*�B�� 1L�l�"�q�Ƹ�Ÿ(�qQ�"�qQ�"�q�!�,����w�_�ett�yq����Q���@.�b!�d4؇,�3�1�H�<i~�g�̕����'��(F>�e�,E��	`��td�s#�ȧ5#�X�<c�x9O�)�DN�$3�����?q��$�?�/���?��T�?��|@>��-�(H1

`��(�?]�����p���#�>�|�a��h���Nr�܂�2�	e�3�qN�9��.���2��l�OY��r���dlӖ����My@�+�@8R��p�#y��v�hG�#�d�\ʘ�;cc�6�y��\~NW�/�|$#�K�W@>����G2�q0��GbR
r�ذ�4��$���@A��-�]�
�2c�P�B�V�*�
��QP[�?R�Um�-��I]�.���|B�8�D1���'��� �.�����'���O(��P�?���^��-�#��f�3���d�#��V��0��iǘ�
c�Nj�AW0摌v$��ތv2���h�R�9��T�*<A%�
�q0�	U�*��yF1湔1�m�ynd�sc��c�ӆ1O�<�2��ʘ�jU�
 �B�Ū5Z((�Q�FAь�F0
j�(���]a��X(��P[u��)�j���2�Vw�LIFD�0"���5��.W��� [��r�E�E�]θh4���c\ԆqQ'5[�ƨ�QsP�\5�BJ�����B)9)�2Rr0R��H�
FJ})ug�ԇ�RwFJ})uWϩ�З�j)�b�%�����j��x��6���1^j�^R/Q�Z�V�F;E2vr0v�`�4��Sc�����;�e�$ի�U��F����kН��.U��z�Xh*��T[�M�Mj˘*�1��h*��TgFS-Muf4Ղ�TgFS-M�0�2M�0�2M�0�2M�0�2M�0�2M�0�2M�0�2M�0�2M�0�2M�0�2M�0�2M�0�:���ʋ���ɋ��Hɋ�N�#�~���CG�:2�Бᇎ?td0:���4FG�#�ё��Hctd0:�����t����\�cd)�)1Rr1R
b��b��H��H)�����R#�����3Fj��=c����3FjᇎZo;��,\���"ň��=�H���#�FDʇ�,�|�'˞���	`�ӑ�O��X�G1��0�u�yzٟ湎1O/�*�*p�g�ssPVPiA9A9����.3������p�ɇ�z�}�V��i�ϕ.
.*3G��#�h�if:�L�Y�ܼ�ͻ![�(ؼǜ�^s:u`�ԟ1R�Ha���d�ԍ1R?���iH����=�ȸ(����X�BAN?�d������'��O"##g��d�cy dR,�cc��l�|��yl�����M�e�C�|�r�(�;����]�@2!@0z�r	#�6�*	Ԗ�I�$�1��$�H �GQ��v�/c�k�<����(�z�2�^��(����7�3�Yh!�qB&#�,�I�(�vc��ǻ�
~�Q��1��=�X�뿣�
�BI��]����{�����$��/�{x�>�w��[�أ��y�����g?�;��[�@��)�1/�^����.y<=���Fz��,��=z{����
X���(�
v�q��qW�D�q/S������U�ˮ�^v<�	��ɴ]N���o�/tc_�[�'v���A���䟰��^p��ϼ?�]�Q�W�>���m�R�ƞ�k��}�{��;<�uz-x?'�uz-t��>6Y/�A�k����)N�4Z�a7 ZZ{/��.�h�=�%�2�DY�[�*�EuP=EWu�*�cOs��nUq�f�E�D4��"{�r���A��n���&��D����EX���kuX��X���	�Wj���t����q��m�mb>V�
�I�dK�Sֹ�x�Z��"�d���U��W�7-�*��.�ŗ����Y�N�wL��.�ݴ,/���o�Ghe�8{�v��˴)�e�����<�6߾ľT{ʾ̾\[?�Q{�:�ў��f���?�~4X[_����N_�
���޴<��
��	�O�ށOy^�o��hY'.�a��E��u����ho> ��,�������,���YdO˳�^�_#����A���&�[~D���?R!��;^���א�,�!��h)g�x��}�I���̀�Q[G���h��Q�Q����cdf�F��CG��at8����=�?����8jt����٣G���뉣����x��9��#^4z��G��zt��
��<z�蝈kG�}`��џ���-Q�a�A�6�#�="�"1$bxĨ���Ĉt\�FGT"1)b*��#�"^�8b��k�����]{�8Q��h�W
�TF:#[E����
q��~��������ȱ�O��9�#��"F.�\�2�\��\�	�����#�F�#E���Ǣ�lQfT(��Q�0~QݣzG��5,jd2D�G�Fe#.�*��EM����5'
��(jiԋ�WE��^�G�Dm�xsԶ(�cTmԾ��G}U���h-�N�q���=��`==$zx�(�1щ������h�g��I���ѳ�1���Gc<�WDWGc<��Eo��xFo�����}�˫�>�����gL���1�b����30fḧ������̘��Ҙ�1b&[��L����y1c� ^�2��6f}�3fk̎�c����#�P��?�9�8�k�b\c[�v�Ÿ�v����;,v��8;��z.�<v\�D�Sb���B<'v~�"�Kc_�]�xulM,F6vs�6ο3�����{��ñ�p\���iq�8�k\X\۸�q]�z��7$nxܨ���ĸ�ܸ�ʸ�q���͈�ǿ��[�8��"�:��.nc�5n{ܮ8�k���q�Ӹ�q_q��1jL ��Vc�#�4�ۘ^���8f(�c"��!N�9�:�t��1��1��L{�Șyc"^2f����_�v�zě�l���1{�`��sd�爏�S��(ތ�o�!><�{|���Y��q||j<�6�0�<v?1~J<�6~V��x�m������U��ko������_�������o4�{BHB�	�"��7�0$ax�5!&!1����P�{M�0)��0#avF6aA��e	+��$�Kؘ�%���Iؕ���	0�	Gx\�1����V�ub��N������ġ�#G$�%&#�L�O,E<6qߟ�8�㙉�p</qa"�8qy�J�~%qm"�9qS��D�s��Ľ��N<�x$���c�\ْ̤Ф�I�“�'�N�48iX�Ȥ����Ԥ�¤�qI��$MO��4'i~Ң��I/Z�$�Jb�T��!i3�mI;�`�I��$F�IR},5YK�'�N�Ò�&ï&wM���< y��|���Q�1��ӓs���+��'OJ��<#yv���ɋ��%�H�N^��.yc���ɻ��$�O>��_%M��LnHQ)�gJ��iJ��n)�Ӕ~)S`�)#R"R`�)�)�)�ӔҔ�)ɔ�)�R`�)���K���,IY��Ly%em
�/eS���_�)�ӔC)GR`�)�R)Ֆj����N���=�wj����RG�F�Ƨ��f[�J-L-O�:1uJ��T��9��S1�S�����y��:�&�>us�T�����}���S?I�?M�6MK�?MIK�?M��5
�4�oڀ4�`��Qi��Ĵ�\��i�i�OJ��6�촹i/N[��quښ�u�7�mI����Jۓ������JkHWD���tXfz��NV?һ���_�@����:�#��8NN�8=?����l����N�g�����K_��t�r-}e�+�M_����Hߝ�Mw���#�s|,�2�2̌Ќֈ;d�[��3zs�?���1,c$�Q��f�>2
3�9�1��)�9��1���[���l��2��3j2x��؜��9cg��}�3g�Ψ�`���e�9���2�fv�kf��f�z�9$s8ǣ2c8N�L�87������Oʜ������\����|]����u�9ޒ�'sW&�����^f�e��+�RY�����Y쇲�g����e����e����f���"�X�Y�Y��,�w��,�;krִ,̦�G��eA�YK��ga6e���6��ڔ�5�)kw��,^W�e�y�1+Φl[��84�uv���ݳ���٬��a�#����S����˳�eO̞���ٳ����ً��"~1{U64�]��!�){[��lh,{_��l���O�볡�-Ǟ����6�����3 �+gxΨh&'1'=�+�8�2ə��ș��ș�����9�8^�S����٘��5g{ήh"g�x���9_�4��\gn����r����;0wh�܈ܸ�d�����|�Ks�r<!���i�3s1�r��.̅��]��2��ܵ���n���ݑ������q�=�{$3(�X�a��y�Vz^�<��w^x^w�{��xp��y#�x�͋�K���+�+��z�71oJfNެ�9yXo��-�Ì�[��:�mކ��y�)y;�j����;���W���#_˷�c������u���=����?<T~L~b~z~n~q~e���I�S�g�c����/ȇ��/�_�_�xM��|X|������ߟKϯ�?���!��@����
�.t*�V�.�W0�`h��������̂��ケ�
&L+�Y�H����K
��,`?U����T���S;
x����
���*8VH��B�0�~��Cax!F��wa�BXr�‘�Q�񅩅م����
'N)�^8�pN��E�K_,\U����pC���m�;k�(<\�Ia}�EZ���WVԶv[Ե��o���!E�W�F�_)J,b�R�[�~���h|�$�S�fa\��-(¸-+ZQT]��h]�Ƣ-Eۋv��(�_������G�WE�?�U1��bgq�b�oq�b����Wq�bx���#�#��=g�=��=O(�x��Ű��y��a��ˋWcċ��/�~�xk�b�t��b���C��7�?/f�QB%6�����%J�2�t/�u����Xt�����T��Kx^R^2��%�[ג�%�8�S2�+B��^JV��.�}�l(�\�.�Y��@ɾ^J�|RR_�m�V��4���i�Ҏ��W��(��t@)�J����8�4����\��K+9_:���tF)��ҹ�J���e�+Ja��kJו�K��n/����)�����h)�Jʔ��9����ڗ��/�V�~��_����e���"��ϗ%���/�/�Q6���G��2^��f��^6����%e����,�R��l}٦��e;�v�a=/s�*���>/c��S9��,-�<)�P^�yR޻�9�I��r^�ˣ�y/O-�u�������q弎�O)�^���)�_}�/-g}��*���|C���m�;�Y_��Y_��y�.�/g�T�U��*B*�*�*:Vt�����C*0�*FU�H��yU�[�󪢲���I�>T̨`�Ṷ�bq�+*����5�8�X�����8�S�z�8X�z�8Z�UEC���tZו�*�WB���*{U1T�Z	�UFT��*�+Yo������i�*'W��*gz�ůd�UΫd�U.�\^���ʵ��+1�*�V��|��[鮄_�<R�~��X?]e�29�j]��*��׏��U����*̵*h�
��
���l�ʮ*��֪0Ӫ���)Uӫ��*��U�x�U����V��q4WUS��
�w�Z��U�U����*��U�T�W};Vk2�l,�5��خc�	�;`,f���cG����bv���	|TY�?^K(�
Ј�iDd"�42� �L#� "2L�4""� "�L��$d�}�}�}��!k%  ?D��t�?�[��^�K�`�������]N�w�{�{ι�{����愒9Y���������9�cN�7�X�dsB�<���W�7��]����"�rs�a~�x�?5�]�/X��,���b����-�-vX`<g��b?·,��|���Y��-�-l-�-�-��E�E$���8g[Z�[�Z4[`O���bD���${�c��,[b/,�da�+,�-�,��[n�^�;-��[�Z���<ly̒�<m	;��h	;�����$�h�i	�hjmI�Y�[�ZV����[b�jٍ���Ӗ�,	/ˇ�O,i<c��JdEf��j��e��
�e��
�eeb�hu�
~���
~�����%+�E+k++�0+o+ؗU�U��E�L+��V�V����ڭȲ���`WVr+�hu�
8Z=��V��Zj
��Yo�&���j��z��^�և��Z�>e
���`}ٚ����v�&���������N����.������n�&Ĭe��z�8YߵƸ��5���
г���l������m6��l�� �9`s؆l��
�1�s6��l�ؠ���A?f�i�oC�em��I��}��/���`\c�m�q�͘
���-�G��6�6�m^ڊl�mW٢?�]o�ɖ���n�˖"�}��7l�ؚ�b�gl���%۫��ml�m�m��m�-��m�-��m�-�ζ��ж���v����m���}[�f��vޖ";=;�!f��vggl���a���k�ߎ���Q��v�؝�C�aw��܎z2;';xE;_;�C�H;�C�T;�hWh�j��G;�p����vw퀣�c;�h�ݑ�^b���G�����~�=p��c�أ�?f����=���=����
�;�c�j�o�q�}�=�O�����Ӿ�x�w�O�1{�i�x�?�������]]#k�����k�ïm�{������5�㵃�`��̮����|�]�{�f}�g�k�8^C��Z�d�3��.��^�]^k��q��k�^��8���k�3�=��8��5ęz�3V;`����V�/��8�w@��p����)ث��/��_�����pw�t���ݡ��;�: �w�t@��0��0�pׁ�wx��́"G�#����F�	q�m���q�#�v<���9o�ӎ���#�v�tގΎ����x;F;o�tG��X���[�����-G���8;>w�N"'}'/8�u�N�����v'��d���:g'3'��t�	8;]r�N�N����	8;:g�X'�����J���S�S�Y�ӐӸ!�t��Y��S�y'B���u�u�����~�_��^�q}�uB�뇮S�y��u������~�:�����o^w��~�z�u��㯣߼�}�����kqn�����:��u���a��_�_�,p�8�p^�l��y��6g���8:p��ǜ���ig��|�8:[:GgggOg�1�C���D�tgBй��9�;�:S��<��y�����;u�_�������*�׺G�M.��e�pt1q�.]����pt9�].�\u�vqpqu~.�.��%���d�?�R����;u�u������N]n��N]��N]�]`��z��S�ծ�S�
��S׭��S�ݮ�S���Sף��S�S��S���SWsWة��+����v��
;uMu�v%d]�]k]�B];]e�����+E@�\1>t}�q���
���
��f�8�m�� ��n���L��v�8���W�sn�_ݮ��u�wC����x�-�
��%����V�s��"�V7�Enn��m�
8��s�nO܀��Kw�����׺g�M��}�;pv7q��݁���;pv?���/��^ݭ�a����=�x�Ǻo�Lw��^���݁�{�;�vw��݁��#w��>���!�X�΃,���v�����^Ļ�<�z���z����z\���z�z�~=�=`���_�x�T����d����=F<�=�<�z<���<����8{��ΞF���s��6O�`�=��_���=	a���=�r=/z^��t���$D=C=�=��z�{�z��������ݞ�c��i=oy��$�<�x>�$�%��Z��k��&/B�k��./����y!.�:�e�u���y/���zY{2^�^�^y�{�z%{ez�{�z^�^�^�7���ƽ��^���oz=�B���x�[�ڛ,�{����V�޻��z��yC��ǽ!w�ސ��eoso�,o'oؕ��w�7I�;�;՛��]�]�M�n���y�xOz�?z���~�
���G�C��Y����g��f�m>$_�=>�>dA>�}���g�9�s·,������v�����	���$��n|r}`7>�>�>�t����L�����������_}_؉�Z_؉�&_؉�v_؉���>_B�����/Y��_؇�%_؇��/�����ۗp�
�E\���K��[�[�������;�K�����/Y��#ߧ����p��#�6���m������׏��;�<�����~��ﲟ�������G���G�/�/ۯЯܯُ֯z,?��+�I?��w�x�=�~/ N���q��ĝ��7��������o���z.�c�'�ɳ����O=���?�+g�����;���w���#��/���'�����?��?����?E��_B��'`m�	�|����}�O����'�L��������L�k�w�@+ 3 ?�F
���z��y���%�Q�Ӏ���@�@i��u������7p����O�
�x9�<�6�)�=�708020>050;�0�<�6�9�3P888x7�$�8�Y y� A�$�$�&�(�<K��mA��A{�L�H�"�:t.��>�J�eI6�9�3� 


�"�����U���u
�$���n�z�$�y��`Q�~���7o	��+�$x_��#�f�'����|5�:�!�5�;808<8689838?�4�:�1�=�7x(��,�L�	~�4��6x!z"
YBz�!�8�<xȎ��!�C��9Br<�T��!B.����
q
q�
	��I
�))�
i�����L�̅�
y�8�YȋPA�$tE�P�Ѝ��C����jJr
=z,��z:�\(�)�J�e(�)�9�3��Jr
M�
%9�V�և��B�CBIN�ӡ�B��>}J� �e�(�F2a��ֆ���m
���λ�L��;fv2�L��KaWì��\ü����bÒ�2���Jê����zÆ����a���=
{6F�M�^�4����u����÷����.|o��p�d�'�?~!�"�p�p�p�����}�)r	����4<;�0�F����d���p�������?Nz!��D��E��0� =���-��,bO�i�/�pı�_��s$��+�$�����Ј�Ĉ�܈�ʈ��ֈ����[�"F<�x�2R��*rm��M�["�G�4��y0�"�H�ȓ�g�|>�R$y�H�H�H�GzGFR�I#����H�"#�#�������*�v�H�"�F�G����Q$��uQ�H~Q[�vD����F�"�E�:E�:u!��eeE�r��"�EEF�G�����
�H~Q�Q�Q$�(Y�H�/j.�n�/�qԳ(�_� ZM�^mM���-���'�4��}8�X4�/�t�h�_�h�h�_�s�g4�_thtt4�_tztn4�_tet}4�_tw�@�X�t��{���D?�~C~.F?fU�Z:���C.f{�[�Iⴘ�1��b�b�Ŝ�A?s)�j�5�b\c(B�	�	��(&9&3����Ҙ�F:����PD3#��M�1�b(���Y�%K��Ʈ�%;��kKv�#vw,�q��C�dDZ�cOŒ�^��Kvk�K@�olp,���񱩱��Ɩ�R���K�V�H�d,�8�wc�R��,�E=w�$nEEXqFq�h��-ng�0q�q��;w"����sq��������?�3�?�z����8���r��h$W�G=J�@�X�Wq����Q|�$�y�W�x�x�I��Ư��D�-���I��&���?�||��3�$�K�W�I���������������������C��������?���_H�K�&�NX��!�8akŽ��	{�'J8�p<�T�ل	��l��|�"�R�
�j�:d	�&�O'�M@?��8�t�ŧR%���$��Nܘ��P�D�3�$"NM<�x8������)NM��x%�"�D�D�D���O'F'����D�Ӊʼn_&�'"�؝�|P�X"����'H|��<A��D�	�DI�I$礵I�H�I[��'���L��%����$�%�'�I:�D�t��$�$꧓\�����N
OB������^R~�zI�I��%�'!��4���^�<	y���I��%=MB|�����)Y��|l�d����1�Hޑ�qF2�x2�W��C�Iϓi4�L~$�t=�"�d�%ɤ��c%�?I&�O�8+�|J2�}r|2�����$�'#O�ܜ�<A�,x&O&�du$��dɄh2����P,�B���M��)�sRєm)�3eO
�L9���Aʱ�
RN� o�r1y���a)�)��R����D��)�)�)�R*S�SՔ�S�Sn��)S��P_��2U�J}a�Ե��S��$uK*�Sw�b~8u_*�%�GRa7�'S1��z>�ԫ���J%lS�戮oJ%|S��©��©�R	�T�R	�T��R	�T�U��p�<�v��G�OS�S��Ҥi��֥mH3Nۚ�#mw�޴�i�Ҏ�O;�v6�B�f�f�FX�����Ni�i�i�RZvZa���ڴ�4B'M�6�6�\��������^`8!H�����פ���7���ҷ��t�Y�L:�	�L:�Z:!�N�+��I��\�-ӁK�s:pI�O�ݥG������aw��鰻�t�]zw:�.},v�~+v��0v��<v�!��cƪ��3�g��-�-cWp�ؗ�2�d����-�|p˸��22�o����ψ�H�����(ͨ΀f�g�3�2`���a��a���a�B&�0S�	;�\�	;�4΄f�Ȅf���x?��0��0��0��0��0��0�p�$;�$;�$l3�3�3	�L��L�dƙٙ����L�afs&�0S�	;̜�ޙw3�w��L�"xg�f��Z�Ehgm�ڜEc���Y{��Y��߬Y��۬�YW�ȗf�g9g�Y�Y�Y�Y�3+=xfgϬ�,�՝<�Ʋ�g֭,�0xf=��٢l�*xf����[��g��l�/xf���'��g��l�}5xf;d�l�l̟d�g��f'g��f�g�f�
f7f�g��dلl6�bلl6�لl��l��\s�9�5g]p�1��94z�!dsȿ��9�k�ќ�9�i�ٜ9�g�y�m�S�9�9���D� ?����<zNa��9�9ȣ�t��rɜɜ��9�b��B1�|i� ��������"��9y�ܝ����"O�{8y��������������d��w����Ks�js��$��A���"ߐ[��<]nk.Ƶ����ʹ�r��R,��$�y��<����0��[��qmަ�-y�lޮ<�<�����#D�N�ɣx$�R��<�<�<�<�<B0/<��%�e����U�5������ϓ��λ�Gx�=͛ϣ�9_/_�OH��ߐO�s��������?�O��<y�����	�|�|�O��O�o~p>�Y~|~j>!�_�_�O�ߜ�ʗ�þ�'�a_�w��.���_�$+
�����A��, $
L��,8Vp��t����W
,��<H����$��E��
�`O������S���S�Â'ԗ�,��*\[9n*�R��pW�I�B���#�f���)D<]x�y�B�B�u
]��,,/$�&fR�UXZ�|gac!򝅽��w�"�Yx����G��w�"�]�W��v��"䷋6!�S������E{��^�-"Xt�y�E����9"E�E����"�KQj쥨��RT[{)�,¼S�H�EsE�{=(B޳�Y�łb�M�b�M�Q1�xs�b��#�(>P|��X���ň;�/�+�,F�V�\���ؿ�[qt1�aqz1�aqq1�+�/~����x�X���[��?)&��_��J�KV��-Y_��dK���JLJ0.*9X�qQ�Y	�E%gJΗ��+�Zb]B���x������ĖP�Q�Y�_B�FIuIc	!W�[2T2^"/�]r��Q�Ӓ���R�Ri���u�J�K���(�]��t�R���㥧J	����K	�R�R�R£Է4���4�4���(-,-/%�(m.�,%JGJ!�ҹһ��J�>+%ɗ	� ��e�{�Q�^����lgٞ2Ӳe�ˎ��(;]v��bI�̲̾��R�gwe�e���IJ�ܲ�ʲ�2�pYw�[6V���*�WF���I��2�i�E����ז�/��|K��r�p�I����G���O�S�R~��R9YF�u9�ܻܵ��Z^[Nr-�,�/'��W�7��\�{ˇʩ�(���.'K(T���z��
�
�����*6TWl���W��[���P�ъ��*�V\��\a^a[��~�{���������W�W�V��WtV�*�ULV�U��W<��~W<�x�(\��rE%I�Ҩrc%���m�;+�T�V�$�Sy��D���s�+�TZV�W:WzV�d+C+�+I�+�+���ŕ�����J�����ӕ�_Vޫ|XI=y��ʗU���VUQ^��jS�뫶WA�L���U��T���:Yu��<Pե��U�UU�U�;U�U�U�U�U�U�g�*��ߩj�j��~�j�j��<N��U�﫞V�W���֫���^]
?S��~�zk5�]���h��U�>^}�~��B5�Ϫͫ���ݫI��Ց�$���j������j�W����ղj��������W?�~Q#��� ~�YS���fc
��m5;k�Ԙ��9\C=p͉��5�Qj.�\��~�ƾƹ�<I�Mh
ivMbMz
!PS\SYC=mMkMw
iv�X�t
I��^���{�󚗵$�Z��U�$����jI��kw�R�T���`-y�Z�ړ��׵�k/Ւ^�Z�:�R�T�]XKc�����Z��j�kKkIⵍ��$�ڡ��Z�w����$�ڧ��J�U�W'�[]��nC�q��:�t�u�����#^w��lųu����H�uNu�u$ߺ��:�o]j]v�u]y]m�u]g���$[7Y7WGz]���q�:u/���9�Wԯ�'��o��\O�~g��z���ד\�Oԟ�'��_��ROr���w�'��ׇ֓\����I�����$���z�k�X�t=ɵ�^��z�k��
$���-
kП6lj��@qKî��膃
GH�N6�i }n��p��"��������G�2�J�0�hho�mjo�7`�p��Q��
�
�i6JW7�&7nh4n��qG��F������/7o<�H�x��r#��F�F�F�ˍ������SIs�Is�;�/7�4N6R��x��A#y��g�/��M��Mk���66A_��5�l��d�t��pɵ�D��&�k�Ŧ+M$�&�&�&�k�Shɵ)�)����T�T�DrmjmB\�4�4�D���Vӽ&��MO��7�n5�7�d��6�o&?ܼ�y{3y�f��}��4i6k>�|��|�����ͮ��́��ͱ��͙�ͥ��͍����55�7��6�n��Lz��y���E�E�Bq`˺�
-�Z�����n��Bz�r��h��S-g[.�\n1o�mqjqo�m	n�l�oIm�n)l)o�min�l����L�̵�my���YˋVA���޺��޺�us�֝�{Z?�h=�J�k=ъx��\��V��Z-[�[�?k�l�o�ȡ5�5��"�����V����$�ցֱV�_��{�$��'��[I~m�6�6�_�ڶ�m$��-m'��j3i��v��H�Gm'�δ�o��v�ͺ͡͵ͻ-�-�-�-�-��<l[i[uid[{[oEtm�m�6�ȶ�m��H����Iۥ��I�7���>��h��N�ؾ��P;�c��S���/��>�۶;��>�����>�Ƿ���>�����>�7�w��>���O��>��m�N����E=w��cE�_F;H#;�u���ô�@�_�:Nt�D;�u\� yvXv�w�<;<;�;H���$ώ܎��gG}Gkɳc�c����q�qs�Î'wu�L;��;i�Ir�\۹���ڹ�s{'�e�I�N���#�f
��y�=�a����%�|�=[�g��ʞ��s {�:���N�3���D��Yډ����qwgo'����N�ݝ�;ww>�D��9�	�ܥ�%�"��Zׅqj�qƩ];����ۅ�Cס��]䧻Nu�?�Ѕ��˼˶�"�.°��uE�]�c��T*�e��.����.��]�3v�]俻(��"\�ȇwQ��E�v=�z�8�nI��n¶ۨ{c7a۽�{g7a�m�}����>�}����>�}������&l�=���C��u'vc<ڝۍ�hwe7ƣݭ��;�݈S����t��ƺ��'�X7��G�CX��=�o��w�!�{���!K�!�{���!�C��P�C��=�x��CH��=�p��C�x�Ϟ��W{�{�o���A^�������~�g���y����=�'�<�Aޡg�y�^i/���z�g�q/����<{����C��7�=ދ�m��^̛�^���^�^ė�/{�{�~�7�y���^�z�{��6�"��"����x��n/�I��{�O�}�'��oEߚ>�}�6�Q�ܷ�oOy¾}������;�w��"��J�e�����<�(����/�/����������������w��a��}�^��Ne�2�˲���2�M�E�]F��Ld�d����LFX�����'�U���0��ʼe��pY�v&˔��Y��QF&�
��er�m�}!!{*���E��K�	��u�����ڿ��$߿��!:�?�O�?���,�߼߶�$�����O����O���/�'���o�'��G��V���D��?�qҀ`@2@=���!
l�6@�ҁ=��|x��	:�87@��2`9@�p� y�D�<�r�B*�h|4�=00@�10=pk�<�Á'd/E�d����-n�2Hv0�k�dp��#�f�'���4xu�z�a�u�{0p0|0v0y0s0�t�z�q�}�wphp|P>x{�����CzCҡ�C�6m�1�{h���CCG���:;ta���Ӑ���P�P�P�P�P�P�P�P�P�P�lhdhrhn��Ѓ��Cφ^�%�+��
o�<�mx��a����
�>=|n��2|e�r��2�<�9Lr�&����\�+��I.����$����[�$���O�I.�/GD#$��U#kGH.#�F���\Fv����o98rd����ɑ3#�F.�\!0�0�:�=8>;�<�9�?R:R=�8�>�;242>"�=r���ӑ���Q�Q����u�F�G����=�wt�(�����㣤W�gG/��^���ڎ�^������^�F�Ə�^�f���^�֎6��^��FGFI�F�F^�>}6Jz5&���^��3#��<�m��jlϘ�����cc�Wc��΍��Ʈ�Y���Ɯǐ��C�c,zy���1�NJ�0N�C�c�{��1���n���{8�����1�}o�n �{c�
�}o�����-7���uy��n �{��
�7N�@�{�
�7��@?{�����7�U��w.oIJ�d��ɞ��3�7<nT��F��Ξ{�3�w@n�wߐ���͞�g�o|�xʞ��3;~�c�R���=�c���ǍǷ�S�:�{|�8y��C�Gǩ�?5~v�<���q�qW�;����G��O��/���y�s\6N||r|n�������I&�	҇�5F��'�M�>L�0� }�8<ql��a��Ĺ	҇�+����dO���	��dO����dO��&���O&Ȟ&^N�&	��U�k'ɞ&7Mn�$�'wM�L�=M�<2IO��<3I�4yi��$!;�0�:I�d�d�$�8�<�9I�M�NVOJ�퓽����|�p��?�h��>9?�0Er��N��"�Nm�2���sj���)�_��O�::u|���٩S��̧l���ܧ|���"��R���
�ʧj���:�dS#S�SsSw�L=�z6�bZ0-�^1�f�hz����m�;��L�N�><}l�����s���L[N�O;O{N�O�NGO'N�O�NOWN�O�NwOL�MOOߚ�7�p�����3���U3kg��l��2�}f׌�̾��3Gf�fNΜ�9?si���e�a�u��28>Cr�I�ɜ!�̔�Tϐ\f�gzgH.3�3�����G3$����9�E.����\���r��|�|���"�/?$�HB~\~JN�������"���IN1��W,����S���By��V�,���#�I�����������Ŭ`V2�bvͬ����ͳ�fw��5�=0{x��,�����s��W�Wf-gI�f�g=gI�fCg�gI�f�gsgI�f+g�gI�f�gfI�f�go͒^�>�}2Kz5�rN4Gz5�jn���ܦ�-s�Ws��L�H����#��;9wf��j����9�ߜÜ��o.p>b.v�a.s>a�t�`�q>`�w�?7>���=k�{4+����u�Ի	����&��憛�G��z�ϛ�o"us�M��y�&�u�<uq��7��4����M������{y�7���f*{�fυ친=ײ�f�����2����������g��|�}�[���=�a�F�;�6�g&�+�q�H&��3G�7A9�-(֠8�r�����nP>����A�gЍ@�e��1�(�t�b�(��X1�	�#(�b��/Oŏ�>��=�k�� D�
�<[+8�b;Н8�u_P|@�(>��k���wt�I48����E�A�(�@YǑ�:����UP��APd�@>�`P������@�(Ơ�
ꢭ��	ʛ"#:.�x��y�3G�g~�q3(��[��-\A�bߑxD��� �)��e��W3O����=�qGk�Gko3�	<@wݡ�c�1�r)BC����B|���)�nx�)<�/�;�mp߷AyO��b��P����$nx棠��V����}�_�@y¡Ԁ2	J�(��w�Ux�-�O"x�ʍ���>�AˢP@Y��Ǹ�,��!(O��oA)�P��Et�%�
����ť*�J�ȣ\UQ�@�P�O I�?a��b�ڔ@%E�1��x-J��"�-��x_
/�'�z������EW胯³)<��ymJ���z�(<��ԞGh��)�X�7T~�u(��Q���?�(���(~��p}���,(}�kQ�*O����W��9����I~��$��䯦�R]�E��ڃ��ʂ�^�"W�"�WYPz�n��s~��~U�{*{W����T��㹧�Y܌hdP�
��b�h�N;������Z�x������[�Z4��f��Rc�T:�������D�x�y Un��O�p��%�-ߦ�X<�XN��/��z%O4���'��sGͳ�e���/6���p"Ie�!��o�ԑ�EL���T}������{�_�8�F�~���9scZ�(ܘG�B��w-`�h��`�R��̻+bcU����H�'2n�����j���%9Q�2�b$�kmGk����//���u�r���ˣ��KU���<�Yq�o�_�GPq�=��e���j�6���{Z����giy~%��{:�Ku�k�D#���s��ʎt�F:�HxA�
Cb�ѐ�����_�v��T1��*Bx%H�3<�upb�Wj6��	&�?�gG|/�����qw]ce����%�{<�,O4����W�<L���S�kGmWпpG�[@��?;�e�aG��ЂjċW��U�<�ڣ`\�Q�j���%�x"x<wx<�Ў �	D�����I��W�eZ<����.�wAC�����l��('�X��(u�E�v,nb�x�堯�di,A�䠹E�[�>����@�g�E�3��	J�X�X���7@�)
���/�*���c-��o@+�L]$V����Jֻ⌣}8�Égc��hg=�9�6׾E�����w��b�ҿ	?�Fz2���A���R�zc��M���*\[��9~���*'��6�.�~�c_�\��
�����F��\�fu6�[�	O�'�Ʃ���c-�?��?����[�[@�=h*b6s�E���:�����b�⧈F]��?�.؝��CP���H[���(u� 2f�A�Vd��*r=c��ᾫ�_�����Z�7�gEx#�%��q�k�ů�cY��<_}P�G�M��x<_��X�V;�)�z���sm�1Ϧ5B�
���*E���"KP�1f2��v��#6���ԞG岱�/z+~fX1n�����X��׎�XB��^i�1��
�xV�o��&�3�_��_������(w?(�����9H�r�ZP{-п��W��W�!�ʸ��џl��<�{m�~�H��"p�'��sO��:^哢D!�}���Z�:�,9y�(w�����?t��_7Ƈ>+���1�C�W3�c��v������Ws�D�[���J
��i��⎚ٕ�Z�%�ϗF{)
y]�uG�ot��m-~e��/�R�D��B�cF�z;W�7̰��>��-��2��Q�g$�\܉Hx^���5�c�;$�W+�F;��r��h��h��ܼ:'��	�N�<��>�>̫��u�3�n�9/!��+�_��6�g������"��G�^cD�Ɯ1���:�6�^͠KA�jg��9O�U�x@��!�A]��D=�E�#�x��w8>|;�nj-�k<���_µ_�i���5�QQ�]�ͷ1JR�R?��@����ǜL��K�`v�⍖SQOE�	�&D�%��(�P�]�}-���������$�u\�������C9��n�l����5��/��/���S	�:��ƻ���V���^�"EtԅF���v]�N���XG]��j�#,F�����O�)����f����:�_�i�b���?��	���Q��E�>3o��򡶷��Z�r��k����C�u5E�Q�2��?�j_��aB��+ǡZ����^�B�[RŌ<lD�7nï\?ɱDv����E��7�{`�,�B���	K_�����h��z2z(�d�=��[�K�	a,�*��Ո@_�+��E�{�䜺@F�
~ �5Q�0GA��G��'zH�U�:���1��5Q�>��}(^`F���A�U
J5��Q_@W	���8�A�(����t��2G�O��xNO�i��C��X�P
@�(����֊1���(֊�L��o���%��ǣ����˔��cꟇf�G���~��¯�ǵ���]܅�u���M�v�_毖A��g�X#��Jv�U�+�>�;bW�Z;�^��s�W]墎u�L�A�2�ȿ-S�;��4Ғ�8c�׽�;ߤc7k�q�P�C5ڜ��L|B�:�ase�5*�>Kj5=''�Ǔ̃�#�4�ZS�����c�Y�%��jN�__am��\�D��Z�W����񵈬���u���q�ɮ’-5�*|Ϡ�0����n"�e|��AU�?
�f��v-QG���h紎h��B��K�s���z�3rTx��:l\��F���r2��5�|m��2<�Yo��?XA2
D~̮���>S�Ug"�$���$"7a��.��@C��U�v�l�H�*De��f4"��#�s���!���<�qƘ�Q�C��#��wD�U��>�?���sƪܘG�?a5Vi���x��K���F��~BH���*F4m����gP?�:2TB7�L�[<O�z:/��T��ż
��ʸ^��B�?b⬹Z��*"�,�Ѐz���N���
S��������/��a�
t�9�`m��Wۅj�Γ�Y�nGi؈zE�IE?�ζ@8��#�)2���;��0���aN�9�#�-�ۘ����/���8V�ү�뢏�扸��}��2t�b�X�.��W�׉6��Ym"�"!Z�j�.��P�e���
�M��U+߁�>猹d�עs3$l^B�c�x���2��2��%*�i�h��L:�<��y0�'�Ea�jV�XÃ������<����)�<�6����G��t��:�}E���Q�"�-�k��d�K�&��x�r�{��[�{c��K3��Yk�:<�b��c��l����]�U�n��Lq����";Tz	��A?�9п�o���~��s.]��s���;��k�{�t<�wv@�QD"EOd�=�:î�2Ty�Kh��}G�^�U��Uo��{���@W���!
�%������~O��i��r��y3/�<��ܜ"���)c�\�l�sU�a�S2�yCV�m*�r��9Җ��*0tU�P�{F[y���)�8�@]�	k�u����{��`.�\;	�a�l���ʨ���2�_�\����t��2�u�M�������Iظ�O*��"�+"
/�/����t�u�ς��E����Q��5��w��	�v�څz����w�.���+a+A���+�u�:�����~�?��䌲��<r���7�-�9(��?����+W�i?��ǡ���[=�֢^��.��$��%�����'�y��#2F_��$T�^���!E_�+��@WD>��"S��[��O�MT��j�^�2�N�.���|�6��m��ݯ��AWd5?����B�)V+��{��{
�b�Сo�^l��U���q�roG]u}��ˮs���ԙռ�V]���l&�&�_�rwL�֢
sĵ\+�&�or�v�h�Rz!��p<�h��K�o�ރ ���Z���v�=�G�Ru��E�g<�A�J�S�J@CJ�^����B&�4e�)A�	&�#�QcTr��y��(�y(�T
0S)�u�n,ΓF�Ga�2�/�g�
E�%�.ǯ���<�1(C�|(�#�ǿ�Y�~�Z��,盘_E��P~�߃g��0�]�*(�8�PP�Q��Q��g(l���1�iM���W
�&C����;���sA4�(KAa�J��.�w�'P�x(><	(e�G��MMR��%h&�f�O��"F���!����<�����)���
�_kQ~�RZ��ע���"HB=	��S�#篸��q�iA6sD�o]��<��q���d�E�9�>�Ї>��w�b�R�obv���(C������<N��Wي���<Q3#o����'�&(G���|$�o�i�G���d�0�A���d��L<� �>���<��4ވ��#��-*P��gf@S1r�����o���e�m1��Q9C�O(�҂��G�?bZ�ag��K�d���+����K�?ݍY��̜�h'f�!�a�w�x��,�e�[�~^q�+��5D,��o��<�uџ�|Κ��p�K�U�]�P��ޟqd�ME=tsH��p<�β1-x�ȷ�>z3��fu��3/������,�s	�^��Op�u̩	rU�`��;�
�(K�#�2�ֆp���ͪ4��o"�
�U>#%[�VɷDekL��ݎz�=h�k�G�k(q�)(�(�R�-�z:��l�o���Lߴ�;����p�l&+�l9s�\}�梙V��(�<�x�h�;�����ݦ��}����$���m�͠/���t���Z��~�%����P�h�o�d<��g��	oՓ������|�dzZ{�&��N���v�a��ҳ1O�z6�:�x�`�x�#t�-l���S�����D�I�~����y����ۇ��Β�[�_<�ۍxx�݈�Jo͕��J�WZ;}R��{h�����]��Z<�q�R{͖���Gng	~���JG��:�7�o�$?;?��M��A�*T���<<�;jȓ;�8
�KN��͚+��p�9��9�i�sdP��y��c��1Yzo#�,���b�zz:���X��#/wK��K�z�]�*M�|�b�w sM�;*��޺�;���f���f�{'<�f�<Y����O�v�{#x{�p�N��Vw��{'Y`��à�y/��R?�rOe��{*�?��S�6�Zyn���E���7���%��s�Z��w�µ�W��j�|{�v^i/��縊��h�y�="�j~��^
��p���E���0��6����uxy<rO�玚Ϭ���eWM@�pr�ˡ�k��x�*�j��z�;�l�+�T�rw(<��9��d�H�W��vt\KoY�a��w�����aX�F����xZ�������*/��m�;�<��P���̔��k�m�(�g�_ã����3��NJ�3�N�{�:����ѿ�G�<��<�u<�3G󞙳�
�x�L�wE��c/-�0��<�Q^;�`���3��NJ3N1��wƾ�oO��K��h܌��i�~�E�K�C4[z"��u�Qo��������^��g:��t�[�]�-����;�|��E��Zx�\M��Q��8��T=�/�˛�V�\A]��6��y���*v�����r5ϯ��q����S)V�|��w������ȵy�T�<a�v~��a��9k���\����'�[QߊG��0t1�t1o
�ߢ�oˆ_x��C>�=yu�m�>��-��Yr�:11g;[�i�U�M��bg]��b^]�<?֮k����EX�+��b
����<�gA�c(z��h@;S�1|�
"^=�;.���?���������u�	`��r�?(�J�B^]�}�X^yVe����m�71������Gj]����q��v����b�P�Q���}�:f�E�p�l�E��L��P�JE��wo�ߢ�]��[x�<g����"^�,�u�������s���=#�𺺤]���������;�zΧ�1�3���L�3������4z"Ī*�o��11�
��
L���x��T���:��U�_��}�Qh��rv�(�!*��N=�<w��m�:wO�.�Z,��;]ܝ��s-�ͧ�5�u�.��Jȟ�����K���?�ͳ+W��k���++�b5E'(u���P�@��K�.�k�п���r�e��@x�Y�}���]�P�c9kB��'N�.�.�Ӛ�[�ʐT��!'0��	�D�$��EP@� �*�6w�E���L��ⰺL��mR�l��~� p���z��乫U�G�.>���⟗���7��Ʈ'\��և�^q.��[qD.�„̮��
o�w�)V���h��c:A*�_P�{_�N��0��}+������5vh~�
�wE��"�9�P��r#w}�f���G��9�yHk�s#x������F��X�ڪ�1���rW��E!I�)r���9�F�L;s��i�
���rg���
7�M�k���<#YsV"q��[j��9���ݳi�Am
�أ!�Z�ʋ��`A��f͕�?¾$�N�<F�y���^�ߒ��!�n,�=��}����]��ݠ�}��v�r�:兀=	<��)V�,ne��=���i'Pp2�܆z|���O��E/�v�*W�3��=��B��CO-��
k�ڙ�o�0�&�Y�Qv�9�$!�s���ٿ�a�|����e<��Ua]������>��C������K��S�{�b|�#z�|�~����x�5�}q��b��L���έo�m�0
ź������������Y-�^��*C���M�9d�#��h��^�����b��
]���_�����yI��&�%��L�WY��4_E�_ὖ�����=�BEO�+h�b��������0�H��a��(4n��H���n��E:=9��[����D��3��W��<?V���_DBc�A4%����#��M��Gh���
 �7Ft�5%]+_�W��{���6_2G�}_���GP�9b��W�Uvzx�l^Ԥ�-�ّ$ަ��PU�@��$����A��:/��7�����F��Y9���n���(��Y�.�(�hiօƋ����F�}�9
g�+͈��3;3G��Efdw[Dq�8�9�O�le3֖����� �e�2��(B +ė����C(V)3�� s?�����Aw�����W��&�]&6�!�7��U+շ���;��m%�7�/qǏ��&���(_X�=$��.�[��R$������o/��lϝ��7���
��o���}ޗ:�=�o��<m�\���G�Т�a��_����MY���{�bV�������+������p��S�W�(aX���Q�M��"#ĥ0O�������ku=��xߚ�%���}^���V�x�i�Bf���<���c/��G��e��sZ;Q���<xw%����)��)�ǪPؽlR�_r(��Ѥ��(��潴x>���SS g�%�%�G�(gٯ���g��ٵO��%j��4LP̥�_�b��@����X����R��OSh(�48te�iG;B�=~-�R�̚}�/S��&�2�s����X7�	���)rz��;�>eF�\
�iR��|��]ѿj�0rf)ʈ�i�_ȐCW�4�� � �
<9K�l5)�<��6���Yƣ|NI._<��OU}j~Hu�g�(�L���R�gSP��3��WP UE��?�-�s�K�[����W�u�ã#$�Ó(����8���ZE?�R��Ѣ�)x;�� g
~��W��GM-��F,�Z����n�4�э%�?����-Iߧ˰�~�Sk��rl�9~��QL�5%��^�)V�p(�M�����^�Q��W��q)hG�b����_�*.ϗ5y�~����/A/TP��ʯ+�yn�M
�6�ZܑGg���ۏ_���(M�>�b�M��h�|���SS��n[�y~����U>����8*����=���ҤkS��<�SRb���z�iM���P�'�cm
��&��T�h�_��Pв&ŘGY���"{bư��O��}>!��]��~�	m�s�c��~�=�8Z�R��"F��\E��-D�>�H����G������o����%Ĩ��������s�tn}g_-�~R1G��,7v/�g��}��Ղ��Lqw3U݃�Y���Hݏg�
2u���!�k�o�������ۭ|���W)�-��`����C	���u<�h�v]���VHu�/�|�������簳KX�����?�
�
X����6���7�[b�����q�Q�ī:b�%�.]�	���o@�~҈�?6�Pt���>TM�9s����#8]ى�S��Pt�.��P^%W�w����E��R>|�_ʙ�w������_���R>|�ޟ����.׫|ڣ8�i��_��M��h�����_AY��	�b�dN�
�=�;����ߐ�åD��|���
��<�p)�����G���A� H�E��M�C����ҿ�g����S/�#H��M�(r\ҿ�ҿ�LQ��k��o�v��K�G���]ѿ���������)���������#��$:*���Ǣ�D|NtL|^|^d&� �"���\l.:-�[�~$�ۈΈ���b'���'bW����S�'z_$�L�"�]��mY꽥�C�D�zs��ˮ.�'.K]�%�Zַ�Oܿl@�L< ї�I$���z��Ւ�z���K��VH� ���*ɗ$����V�V=#�N�N�7%ߔ�Do�$E��޷��hه�?ѿ��#�+�������d�������@�~�`��&�z�-[$_1�n�]����ߖ�e�]��I��o��~j�S��K?�|��H���Z���I򶁇�����odtHL�_�~]�#�;�}�3��������HJI�I�I�I�Cj&5�\��P����������A�RW���B�-��XJ}��+i�4Tb-��FHl�Q�h���U�&��H�$���tL:&q�NIoI\�w��G�#���@��%!��I�JB�Ϥ�$�ҏ��(�tAc(0Hb
�
WJ��0|C�b�Y��JR
�4\/I3�h�Q�a��p�$��-ïI�w��1�#)2�k�ORl������I����4����0�0V2a�`�$�4L1L��f�K���$w
k
�%�2�4��70�<25�<1�1�K~o�;��K�`�����Š�H>^���fŦe˿��銧�KV��X^�2x��
+����]���ڕ�[�D��+������+���_X��ʏ�7�|���_\��ʏ���rq�TӪ�<���
{c�~����dQ+E��e�X*^#8 ^+���{z;�v~����.̗]Y���YrN�,p5x��h1�6�?�V�%�%�m�R[�i�4V�[�9�ߒW%��mm�K�PODE��**k��g�%@e��TvQ1����A*G��Q9I���T.Q�*�YzT\�xS	$Z8�X�'Sɤ�O��J5�F*�Tz�Q�"�r��}*��<�2OeA X�GEJe5�uT6P1��U ^���n*{��r��G��r��Y�p�*���S���Dŝ~�L%��O%�J6���J9�k�4S�˨�P��2G��ѲTL����@ !�,�PYA�5t6����鼍�N*{��ϔ�r��1*'���r��E*W�XR���Lœ�?�P*�T��SɥRL�WR���J����1�m��-�ߣ���?�/y),'����	��r�9῜�_N��r�9῜�_N�/?B43*��r�9῜�_~��5*�T��R	�K%�J&�|*�T��4Ri��Ke��89��T�SyD�)�y*��)��T�Q�@Ř�V*;�즲��~*���Q:����>��΄�>�O�����T|�S!��	}�_?�J!�_���'��;�Ȩ�P��B��ߥ��c*����1<��o��
�o@�Pk@�����o@�����o@�����o@�����o@�����o@�����o@�����o@�����-�p_eA�פ�?rA�7����IU�_�X���Y5�`��W�qA��g�})dv����8�[,��`�αPD�,�N�s�^�_9�����E�Z0�U��"����8*�%���۰o�EԍQ?�I�Ֆ�b'(�p鼷[Ԗ$���Nk��_�G�Dݎ��ó�~�E�,L�n�8�����P,"
\���[|���_�������<��p���G��
<Kc��/�,֖_���Y-O�n/Qh��>�SG9o�}6���A�E����}���	q���O��L���U2d�Qx���^�*-�ެ�+��j/�g\�UE-�6�
]��g��J{��)��x�c```d��K�9@�=uv3(�2�9lib/fonts/notosans/NotoSans-Regular.woff2000064400000552464147361034410014442 0ustar00wOF2�4	$��?FFTM�,��v��d`�
��h��:��L6$��H �	��`[�מ��o��/�yIy��?��ȯ��ⴵ-��ߙ���mp��U_x2��amH�4x|���#k�f����J�]�^Q���k�������������������������h�Dߦy훙��ٽ�~{w����QP�� ֢�X?�b��Ġ��Ik0jc�4�I�_��
X�к�#���:C2�,�ɂ&ry�@i(�J)#
�r��"���B�`��(�"���Eq/R�8��8�G$s`1�c�o�h�̤'���2{��3LfF�0�F�R�
�8^��''X|?=I��I��@W7s�2��{����C��1Ŕ��i�3&�q4_�.��@��b���j�z=n'G3ni�20XZQX;
��/͉_�Zl��'��6��
�f&�If�!��q��i��,�49:���Z9�
�ӫ�3F����9P�	�#}h�!�u��:�"��1q�����Uk߱<2#�nP�ޝ��ז�M�500D2}��(�-rq���{J�}��
b��Kݹ���p��A1"�If�M�7��O(��$\�4hu�uu�-��C����a8�,�C٭��3���BJ�d����Skg��<�)��I�Ӄ�`ݝ_���9H�A��f2N �EHA���UC�)7�~�B'�����&ꢇ�Hk�>L#�s.F!�Zҹ�K3x�:n�n��I^/"�U�Œ3f�>;�6�v��l�'�W�{�7+�@��d&�z[8��1�����p��
3f̘�U�f�
�Z,��
J?>�2Ǟئil��g|���
]Ć�u����Nk���$�nUI�p}�\DJ�T/ΏZ�p̸�� O��P���@?ş1��=%#�
�MPz[�=��v�R4��|JN1�2�N���Lo��f�8��f�.<g��!��fC/�&_L�W��`WHn���'�Ÿ/�ff'������@��a�,m�ݪ��OI��.��a��x��$�L�h�~�_�o�8p��7'��a��զ^5�В�t",�������	'��f�����j�N�=�S�)Ɍ�$IL���Z[#"M2�}�0�P��H�?�!(Tv9�:Z�@�I%���b�X$��g^��[�/N���Z���3q	3z��BJ�4MSS��Zk���Ȑ�b_k�{_o�c��Zk-�$}�EX�R�T*�Zk�%��^�3$��|>�{�k��D$��X��
���G���vճEJ����M��5f�b�)!�S�F�j�@99[^��T��j�D��s4B�$�)_˕M�L)9�H��$�\�����#4ʤ�3ZˏΌU)'�b9M�ͦ�������G(9
3R}�/6(�!c��\���r���cf���ާ�]�	����
zk!M0b��j��v�&Y�o�	��	3f�X!��FXG+�����#�9r�?�aC�}�ȭ�������[[���(N�',��8�.�M���l�h`J+VV�kF�h�0(`��Z������G���5����w:}�X��4�;4�����ۥ�P��j���dCY� o�9ȝ��*8-)ky95�98�u!/�)<�$��?ݡ8�=d臇����nqAFH�����&!�(	�#�r$�/x?�y�f~,���7P�7�(�+�rcyW��gh-�>ɂ��������
�/�[���0l��1=p
ǚN��/YK��RҘa\�=�)*�e4��fvVQ#J�a�M�A��<h�E���_�]��[xW��
��W���B���f�������)�mЉ�X�� 	
���7ԐH��2'�����PeC��$p6���
�E��(�������-zU@:����u�����ɯ����*�X �@/d��y�\
��@r���:QJ��F1i�b�,bU5������K<�-��9�?�_��u����
�����t�R�;�*Y�����MI��B[�A��s��l͹�y�>�E�*����S4���]�;��i�J\��'��23�l6�ݐ��� G�
�3�zߥ'F��P�*�w�X�ᯁ�^d��[�|V6�	L%��������$�5E�$E��J�P	L�Bj)Dž�"��24��t6u=��q&uE�zA�Pk�Gy�G�}�9O���?�;q:�k���d~��O��LD�>�*��y#�iӐ��D��z/ދwƍ�s�N�o�d�℩u�7B�w�%
� �a��w��6�m|$)0���"�,�ʬ��u.���[� 9
����ABt���C&3*ꤩ�����q8��DЮ��#�����������@�c1���;&a2��j5(�|PS��"���=�̦���ZU��1ݕt���&���0��WWU����W�*\+�b���B�a��+<��:_'�`a��ͼ��An��Ym�H$EC�Ik�<��������M���)��q@���0��ȈO��,�Э��MB����.J�HR�d�3�Y�����K+ni���
v��ػ�v��
=��0�To����ͥq:t�fm�Ea$+sm�*���Ad iD���1n��tC0�����`Q����b�6Y���(
&&V`&��o<�o��F���t��K��h)�B���dD�L&���f"�X�6�C
�P�/PXV)�9g�LX����9a�(c�T��8Ʀ;%BF��P���rl����+
������B7��VU�n���ry�3Q�+���p��mw_*O*��TY�,�*:�&*$ �7�ӫ�JIe�`�
yy��1~Q0�;-��c��ngg	�,���0`b��fY�NL"K���}�-�����o������儇�z���|���L
����Ja@�
UWUePh@�	����Jx�I߫�\�:)���D���Cł��H�i�S�������+�6�A—����;�������x�L�L�B���d���$>a�X^94ԝm#|�O}���*��Yِ�t�y����_��ߥ�vz��*�
`/Hi�L������C���CũC��}��of��Q�̞B�d
�
e8�������:3���J�mYF�@U�<�5n�A�9��N��E4�󲲮Ʋ1����=�^��1�_z��2g�qwB(�bb��쮐������=�K�ѾZ
I؂���y_U�H���_�-��jw�\����9P�������v:>�!@}wՑ���UJ�J$�������Ҁk
PB�ƀP�uن���P'�h��ϻ��G51�����(q�R�R�p����Yg��9v� N[��բac9�.����HR���T��)��R�4«��1��5�����D���@xb~ɥ'���hT&�W,����
�!!����t܏����E�/~T:*-U:�$CK�yz9(�J�R�T*5���O����������(�p��vt�����S��^�߽����.�PQ��t��PQ(](
�BE�PQ(�҅B�P�(�.��J]� ������������5�J���
��M������4������`AX0M2�L�e�TO����S�)�41���Ԩ�5�q%�o�kO��i��{uE�
�..Υ|�`��V�ڨQd
����X���Yk�����m.����m(!k�P�f4���^��ٴd2
�������.���햷�v���pt-X�� ����U`���6��&�0����!C�ЖxԔ3�썘0�	Ӛ�0aZ��0QQm�i+LT|„�
Ӛ0Qm�&Lk��D������
Ӂs�)�3D�O���ɉ�&KY*�JK����<*��Ȩ��hT:ϋ��4$�X>Pb:�F���%�|�7z��b8.���d� 1�����,~S��,��Y��[�Ef�AP�m�2��Z*b/0�	�̴�������=�S��d�Ld��m
js�*�0�L�	��d2����0�9��H]t�E]QQtE�PQtхBE��P(���J
�B�PQQQQQQ��r�_b�C;hѣ(��v=I�$I�Da��–8F%Q�$�E�&�T����'�2�	�ن�}3i���[	�*�D�랝��}��@3��4�9��Bcz��ih�G�i4b��X�����sg��/%Ki8�ӁC�����i,�O��"�ÁV�A�Z�TK�q�s���?N�i��,��{sg�,��0F$;�Ou���$ٙ`���83wr���!�[q��V�~]m�ã�>�� ��Jj&��rHh<
�Ȉ˹��?�ar��(�z��ࣹ�9��Cp��0���/���z��rh��J��@
�x�J�
���l���{��K�${�=�l���^""bt�@�S��������r|�pGA|1�L�Γ
��7r�D2�Ǐ}�)�F�A��Q�_iT��{l�a�T��K���J��Ƙ���p	�i`���%tZb�\"�p	k:�!l%wB;�?��(jDQTp{�M��RJ)�կ}n��;�y��B!?�ޅ@�j�,\d�l�/�F��+B�)ZJJr�����I�2�Mq�h�3!��_�~�\y��w"�	��NwAf:�SB.B��d|�9?7����w�n(���H ![��1�y״g/���* LF�*̦
}�N���U���;`�d�8d�P�]dE}��ӹ.���~�_�w�A���5ӠA<X{��O�����U�Ӌgܮ�v�}oa`�7T::�GIxD�!SR�H�R����մ�[_�+��lc��!W�ǤP)4��H<|�8��,|?�4��L9N���O�Ck�*EJN�J��*�*�1��iS*W�tkwnݹ�rѶ��p�l[�3�u3���1����GH�(<<��~�ځ��'Љ�H;�7'|C�-�T��,I�
WM�W�V��*��9��G�57w�@�'s���#2�"2���,̬�,"��,���32�Td��-��y 8�֐j�}��yPf�T[�:w��I}۞����Y#��1r��R����.Q�p�����KB$�}1W߹)E��E��D���T�]I?�H�I��v�ri7uh�o[���B��l����4�q�NZ�h��aS�{���+BY%X`b�*���P�WKlSG��:���(��J���i;�x>�N;�?b��|��qB����i���m�?NL��?��b�����~���o�U�/�5]_��j,k��=gW\�JZN�B���z��)@h�*I�ڰ�6І�
	�5�4ή� �J�8ƸpM�|h���.w�l3���D���|���k[���ʫ���H�Y��*鿸�4KW�Vr�I����j٥�r"/`E�B���P��!@�L�d�����]�wc)��:N�:<\y���"�]ɪ,�?�,u�-����s�X�Aa)K���%�<�/kv��m��~�����Mh�uuacP'Q5iv[�<�~��x�B�����H�x�����ջD�A���#����u݂"�h��U%�b�u�Mٟ��4��s�FLj�.3zۣ�+[������H�uL�9�ak�ف`z���Ղ�C���\HU��/Q�����'�EžY�C�Bg
�
�B�v��[+���������n�U@�(�5��U���	|����S�1�p�4�sfb͟�qX�"fɎ�$��ܼ�^u
hYr6'�X-a��j�Dۍx����?��V~5�f��7�da&K���n(�ߦ��d�铪���w�S��jt�3y���^�v�@w�Oo޼��d�#��jh
�*'�7e���W'r;s*���E-,Ti/�`��[�D*�"ޘN
t��(�������t2DJ�d��Xi������sr�ٛ$�e7T��� -�U��g�L�8E��.d����q��.�2*�B9�k���代�:�L:��=�r=x௩7;Z��-�y��TAU�摂#ہm�)6�w*a�����1&�0i0Y��;?��J�韷��Ӟ1Z����%JԖR���Z��+���ZWbQ�Q��e�����w��{>��#I�$9��H�m�f��|���ή��uIkk�0%�a!�!�[��gΔJ�z��Z��Ř`L0AaDD�����'ZF����e�u�^	�ou(��H��ߟ):_{_��GH����� "2H��s����>!���䀋B�$�DI	$�@��˾i���{�-�}���� ADDD��	r��,4���í�s|�3*j����O��6b"*�J���W��V���(H3��x�ݏ8�_vNG����$Y@O`���/��k�DEv!�˾`�(�0����
���s��Nj���ɭ/&��T"���v�9��O�F�HG�n�U�����5M�8���]�qѺ`�܅	�) �"�98���m�bM�n��_v�&���#)4��&�e�8@v���;G���wӸ��I����������;��d���0W���=N�<y��|���|�)� 9�Ȕ&$����!ysѠ<��"
X��jX|Jnd)-(=��RY

�f#�F�o&�o����&V����UU������h~[��V%�ՙ�.��砍yl��w/{[�$|��-	��.AtK�G��>zD��w;�:|�
%Y���c���x�w�8�Q�}�
���;�.��2��\f�=�r˕Qv���ZV�n�fÌ�/�V�%S��)Β9�,o�
C�
+l��D��dzo_��"N2:�(6.��Kl�|?�c�0�U�X#��c"���%��U O"�|!��Ph�[��/^w,��]6X99S�"����~��E���?w8E��%��5��g<���/�L�$���1��t)�!�2���	��	œ�l��m5=����ș1�/��γ�	'<�q6���FG��vQ�P�7���H�蕈Q�(D�9�~�@;�a��Л`��wO��.Y��	g7D'��K�!�4��H2�	��ad��jȶecx[�	8Tc8��e$���ꗽ���ܢ���9�����]�~������,�	S�9��9��^Xk\�����q���1,c���ݎl�Kޜ�(Dc	����D���2���$cѼ>�
��2)`5��,��`h[�}�[\�g����*�m�}?�C�4��������G�������YS�&��$;9���~�w��/}�}�=׶S�5lԄIS��!F�I��J������"ň��ha�vU�W�yϴ�9��#3�i�L���_�B	�D3&���g����K�N����g<
1W^3
q�n��Z�/
�s��b���,.)�4�uV�<�տ�T}yf2����l��3�x�Ǿ���5QrM��j3@x�&�r$�7�d�Xm�R�:�Ԗ@4�؇�З��MU,t]4��I��`>��89��C�U|qb^y����^>�*c��S�:�p�[�BǷ�6'��Zx��6�oL4Ú���1/��ZGWA���ɵt������1��[K#ON4�Ca�p-�w�Ӻ��'�r�kns�;��>c"|��DD��$���ݢ�/��n6ȣ{�P�Xt��8�I�ݤ�f��v�f2�`��o�gB����þ�KLse��0��ݻ{���M尛�P��;��mz���iWY~�5�����FPV�Hn$�$6c��zgH�,��:��e��=�
I�����5�ƾf>�x�P�qv�O?�G��s��_��a������^��w�Ag_|�Bk2K���L��|��$�����/C�/vk���[�rC����`��hބf?>%�k�*&�A��;����@�h�6kL{�5	�C��@�R!�Rp���QTӶ��w�^�S�*�����C���v���=�~�D5�x �������Y����`p	��K˫j�'^2��	�1�!�"(ɀ�M�����1d�2�	�
�B�
qqV��y���j]j�(04N�7̾p�a$��͊W6���y�-Qi&��	��#�r�u��K����S�"~6c刿�x��OR�4h�
hsp�Ks����1|�7��3E$�E1C4s�1�P�O��[1]����%hty��|$>u?�.?iZ�\A��$��(�����A`�B�O��;|�'��k����PC}HF&�Q�*��d��<�&�i�+�����M�<�k�?��=
T�����yv����
*LUJ	j�����ٿ�¾�.��T�d��W����.΢==}���d�7O�p[�8KE45/s�5�w:�`��t�K��A?�ӓ��G���~?��_yJ��p��<�
�7]9ѐ
��+�V��&l&ҘHK��+���SQA�Y�=ip���2��H�I@YP��сrl�(��d9c\�+��v����
y��|�!E~����kR�?$�OI�k	-٪#;���"�huD�IY�&��K�1M*��E�U�̟w���JX��ބu a.8f����2\�~�e2|�1��Ҿ�O�xz�P[U?�WXNSO��ʥеA#�G�>Xۢx�v2�.�"ӶG�����S��=�H���}ER��`Q[�i�7�5���-P��bDI01��=q�&��Ms��4gb����쐞;W��G%�RW:�׫�s�.ԝ��H�f*j�f����Y/�R+tW���5_����Zb�|�j�>���B�A��Q4��Bu3偭�q�%���n�%����e��0(�`�C����՜Ñ�4���t��uƁ��;��.�!	#O��� 0����Ph�=TtUcM_75�MK��:򮢧�o����X�o{Ƥ�4C���!��P"1	)9%����A���3021��¤MӁ'��O�E�;b��.����>���PR���E�e��'��))rB�Z�Z��T�m�VO�>��`ifZ�l�a���Q���'�Q�y�A���Y(R"���0�6���4p��#G!5閦��!�Pbx�)�#[K��rZoӃH�+��X�̓#KcnRdP#��c��[v�9�aC\�����w��D�
9�D�5&�B,~�S��@�BU���-��o~���?r :�.$Ѓ2�C(`#��0�9,`	%�`
l`5�`8�	8��p�;��'�!2w���P1�>��>����\�$0��>��W�,��N����!܀��؉„2.��ƅT�3VHWi�Y���ݷ��U?�7��<�>Ɠ<�]}��7#�>!�V?'w	���\���R����S�f�K��"�ӭ:pK� (Z����Z������?����z(Pb�8�}��٫��m�
Sa�_�;��DD��)�^>��Z�5��_P�m��4��;�Q�nLc��V�������OĢ:��\�c8^�a�h.�O�dzԲ���@ �6�j���l�FU��$����%ֳ�>���hL\B���}�o���_~�������'�����ݟЃ�с�P�Tf%��V�S��r�#���l��of �(�)=�Q�a�7r�YHj��H�Du���|�[��v����e�*Pw2լZP��ġX#�DA8TWá:!�D�2&�n�+3
:��$��e*E�E�"Y*8q`n����D�B�D��z�yW4	/���&�x� 
ƥ4wl#$�V?2#���]�����D�0�ᬳ܈`�h֎��4����B5;qT)�g���� � 9�kf��	�W�~ۛ":�&	�w��hŗ�-�؃����ZX`��W`57kw�+�R���I�o��#���z�n�
sO�/��5�A}��;j����+~������
^>��)=@u��R}�i@��/���P9�c�b�bRHXO����v(E$��\w����n0uMC�#x���Iy�~���^��!l-�v"��&!��f�-j>>�J�!G���;�LC�E��q��L͇�}�1�ϰ������6�-H���0ʚ��o��/~����Mi����f�j�:|W��2#u�`��Ƒؙ��m$l�jCW���|Р�8�n,���G�Ƥ��2�֛�;2�$c��!K�8S�<�LÝG��u�
Z�Z�§��9K��l@E��y�&L����N_��D�xx ��hCbl7C��H�6x( J4N'V�UcE�ۑ�������`�ofbh�r8�烡�%@�3��?�	�گ�Ǟ{�wަm�E�Vo�Vfe����������K7&���t
���˩L_n����RT�5Z�(Ɋ�Yt��dvJ�Fݏq���C-����XO�o`(5�����[Xʭ�J����������EY�n�!�ܕڢ8I��(붋�,/ʪ�5mQv��鵥1�M�2�\���5&|x���-�`c�k�Ϥ��+F�P���R��S��W%][�����z44�01����z��>
Q�,:i�8����y)m��!4�+@8`���K� ��6Oq�䍢d4�cr@)%��B���Wթ�\'�R�B͇����2_���as��R�ܶV~+�)�a�}-�y]�"�j�:]��M/����a��e�^��0��)H���a�j�jb"=��
�J�9JO�>ur���
�^�.�O0ZGn���5e����*w���ͿLv��9�Z�B.�\���*4�/!'�M�),»�_kH
��pa�Q&�Her�W�	RCiuz��d�Xm�o#u�%R���R��5Z��Fn&,V�w�
7�q'
��uC���z�Ft'�&�80� ��^R�>.P��f��?��<v��s?i8��rY F�ɖrOݫ���K�TAj��A��f%qu��ID�%���.V�����.�'�����&�Y���p^$��0Z����IiYyEe��:��I��F�=�#��K<�q\�j%�	'8�8��ф���bfL��s�<�~��'s�,�f_�y܂$n�o\�}�O"f�����:��U�%9A¦#�B��)�Z^+1y�0\�(����!�:�Q"�%LR���V��I��s���<ҹ�shR_����Ehq���eC���iY8����e���4�@$kc�j��}�W1$��H��`-��~��I��L�6}��Y��̝7_�6?io^.��ђ@�-K�뽱X"��J��Ͳ�}�r)�[M�%��4)�
��*�ɔ1�'Yء���E+W�^�v�b*)��W����:�_�g��E/���	��.-�bEb����}�/@���d���a�#��39��d�ih�~��b&�{�i����������y���~,}&x�n��裲��-��,s]m�\��+V�ﲲ���W��/_@n���IJf�F���~\Y^�Hh�'C����7�����ɟ=�~�ş����p��q!��	��_&W��y,S�)����
Fc�Xmv�ᬻ}��L���L;�!�Åh�ю���&�v�"�8�R�X#�]C��p�]�4�L33K[m�=��b�T&!�T!j�V����7M�9bݶd��f�#��(�c`������'qp�!�Bӓ���H,���
%�RS-���&�l����Yw�F��`�p�A�9����Q&�Her�W�	RCiuz��d�Xm��Hwg�%R���R��5Z�~��`4��u�R맶�/.�,I����8l)G M��W@��
��/C��	�]ʫR
y��l��U�r+p��6E�3��.�(��+�����'�ot$g���Rb�}�T�����h�gCG��������p��څ��3��7"IS����1\0@1�� )�e���WMRVB��ց?��S5��C@z�
S�}�K2������Ի����|�"�}��tI��Ty�9O�I���?d��x2���ˁ�ec�&�f�@8�1�D���=
R~���7�QV�ڐu+
�d]ch�R�'�u��4}�h�'
~��F��D�:fLg���H=�l�#E�ȺL
A1(0]��^�,pA?A���*�e��F���������b��,��T�p�_:5�85OnY����G��1�_���
�f���=�)Z�8Ӷe�إ�p[��U*��6I�j�C���(EWsC��'ON7F�v�BRP����%8��2��NJc;x�+�1��U���Q}�^@�Iѝ�-����],\��r9���(X�6�#�Ĝ�\�����
�_X�y��$X�]���X�tpUv���Kv�!4?K�q8�+n����{굏�ށ1��Џ� *�i�ItRe�3]!�rV
�X�a�m�8�S.������j.Ws�/��LB
X�B���c�	7���p�Ͱ/G����"<��B(K�2�BI�ԔFK����1[�6;�p��>��`�,����<�/�"L,���
%�R�������=����^�f��vp�w�F�TL�[@���m�GI��G8����n�|ܭC��{���=�{�c�S�+��5E���e�_M�?�;�C���W:'�F�S�d�y�B&.���\]�Kw��ɢ�:�W�k���^$�j�ߪ�֠o�*�ap��QH�|��{����U^D} �pQ���/�f�
���?��i�ٽB������U��?��]7��g�G$&&�&��I���҃~d~���1ݶ�H�Zh�i�
��x�2\G�\�6v��(�G������|$�"kkŖ01�Ј`�tk<�g8`���q����J+pkp��]�@'N�8�ᙔ�/���U�ذ����nC����*��U�2�s,��B��s�>P'�d��k���% �U�؍���qM�ޑ��Ĥ)�3d�~�Ci�����6���c� )�a��W�������տj�V��{}�?VV�`�"(\R}���_u�*��H݈g��.5��� ���Z3DoL����2�� K7�p���_��(z��'�NvF[�<�A?2Wr�	�i%_/Yhs�/�Fd�$��zr��#�j�u?�m�φH��e�3tkA�]�xʢ"G�LR�_��@Z�%Z�5ڠ-ڡ=:D�i\�0�~��*rD�\m�G~�:����DcW	^����۱;q�q'_�S#�܏�c �"�5�O�l]lkV'nf�<��8�����k(��^�>�)���d2��u��B�^�!��n�<�f�MȂ�^Vz�R�%�ܻ�s��Fo~�Գ�����f�Ʉ�q"���7=b�Ix�!��x��K6�)E���W�i2d��ɑ�@�e*Tk�/��Z��ya�L�����xf.������#N�y��ś_~�$X�PE���W�i2d��ɑ�@�e*Tk�,;���M�5񂌻w=dM��к���i���EA�CR�jDڨ�����*M͸�����	�
)Q�U���s��`��K��Z�v��-[/��]\��=<=��}|����V**I6�L6W�7"(�$�G�_���i$/�+�*5�C�08�Bsrq�`��b�\���f��k0
�#Id
�F�/|�7��Z��`4�-V�����Nx�`I�2�B�Rk�:���-(�@Rit���py|�?�l���_�-��ר�GFfVvNn^~AaQqIi���u!3+;'榒|g�y���|�H;��	��Mb6�B�M묈��-�*�rt�=���Y
7���E\�~w`j�6XCX�_�7<�=��gS|G�r���۳&˵c���*^K�Ï
J�F�,_���5�Y���ӄ^�T�x���������P���3��,.)�E�%���8�ۉ�1Nk�S�GپΨZ*��@:#���(�~����X�N��'oR���[�$�0��B�'�+�|vx��+����/�$�&�3�h���'��p�6/�%����)��+��j��s�؊۾]d��X����BB��ye�	��j<$�іa:X����2�S��y8�È~�N�0�S���!��rA�㷘�I[����IY�_��L��gtkI��O2��N�%
�T&ʋ�+���u������
��@r�W4$�nKo&�&˟��/*kc��y�-�����č��%<{a�V��N� Ӓ ��*��ؚ�#>��h�
ymbB=Z�#aCe�_�=MqQf9��%��5\��w��Dف{�A��$��N�%������)��M/�i�_��k'�����R�˽���#�9��/�!8����lL�5�M�U[^x������4.�p0-����L^�yƗ��H{�v o���J����ݹZ�{������?��N<�/��w���isTr�Hؾ�K9�P��	qh*�(4b4�'���w����_0
��FPr�:�z����%3��>��C�=->g���t�u酱Y�8�Ҩ겁�eF�m~0�ف��ϳ5��(���?��"��׾<�"�w��]��v����2���~_����L���D�ak����w�x5�`JӮE�C�����*�������Һ�?����e��?}o��;�Gg�	�}Ml9�]����&�=!���(I8��q�٦�ξc�~�:@\��^X��p{�O
Ն������5��nIX
���}�/����nfSo��L{�~��Y�;x��u���2��+m^ŵ�a����}e5:}�U2x�5ke�.����洿1<��e��E��2�<��qˇ���<1��;���gB��
R��~���rE�y	�'�ݔ<Dy$T����so�-_J�y�~K)���hu�ѴYi��ȚZ�,�d��22C)�LpZ��ଊzS�Д�2#yuPg2#�
{�<'��-�8��ܐ`��Ү
D�]�"ю����1e��!���ҥ��[�#4u��^w���o���P�^�h?�8�٣IjN�&�E�:��)�Uj�v�:��+��ƪ����AGn	6BF�gd�M�i6C�`S��Z~��w�~��{���
��s�~�_H%�TC ���`�r��D��k�|�#S�J=6�8�V���AZrb��ɑS"�FNK*bz�3���d%�vDu�maa�Wop�&��.�[�n�����&2�A�f �7�3$ap\���G�-N9����EJ�]f|\9%��O�'3!�D	��A
�[�\��@?P��{���h�w�8Tp`�@5o��:^L�lE#�ėy-@�v�E'�ŵ�VJ�(*�t��t=�X��b�¢��KKB�n<KG/E}X10�P2V�c<�w=%V��i�<	H+H�xG�{L[�}!��6���vI�Y�����_��	i��t���V�~�@a$&���)$��*8K���X�Uª��*���($N������q�u�-�;$�$!��&�
�T���C$kT$D�
6e��#,�-샘 RA����
�QŒ+s�Y��u,&!��!�H�I�/[|%bbK�H�B�!]�,n%H�)I�j
�|�"���J�MU�n�k�UǪ钆~�s��k%ֆ5�X�|*]Ժym���jb#Xk��a�'6�U��/:+K&s3���^�����
��ys�l�����|�e^�^r��w��Ej7_�^�[���+����EO��w�����p��q�II�����!��H2������D�D3��$�H,��8Fr��~��& .̍x0/��DD�H"!,�D�(�$��4!����a"�a�2JCƙ[�H^!,�(�
G��Ѯ�ϕ�[�H��Ć8��M��I[R��m��g��T��JѪ
�P�^��bgծ����z�[��WJ?�+��J��a��S̷��UD����94
F\��f���,TlS8�S4:1�D�d�
Q��2����<B�6�����*O*�yZy[U��
U��͎u�Vǻ�����k붋�/������3�;4�[[y��x㫏�s�R�m���2�`Fj8�Lu$�v"c��q���qg����8yWD�1ז=5�hi���)��.������_�(�d���B���8�!P!�t�6w!��B)�H�h��pB� b�������H�K�p��:�qO�so|ɞ�IGL���T�M���=8�4�^q	 {CZmqሞFR�X����w�D�#��sp�IJ�ѣ2��0:���*�����I�b��::��$�a�`���Љ�c��8K�p�L�@�8Wn��I�B�߄��ƞ������I3:L������to��m(ܯ��|!�Q�TWb%Vb�#�L��gЌ��A?$�甙5���)s��n�0g�,X�,Y��X������l��ʔK�|�6n�d
��85N�S#K[
E��,�*U4�h��D�K9�$X�#%�R)��H��TEJ�ً 1�nd&T��=��a�:l�6���@�3���
�ߵ����r���E��_����=oG�l������r���� �'��*&����Gi1�q���s>L�ǜrc���i�x�Ƹ��4=g�7R�LW=��H�׶��R�fK��!����6^lk�e��"wd-�0^�~��ty��
�#���/���["�3b~���~�--P:DR�y���)�hz]K���L�O#d쎖=4dO�޹����+H �!���8��-��z�u-X1�_�YT6��HgL�7�(�h���E�ܱ%f�Ԧ)�K��t5�X5�J�eٷf�ټ'$բ�Q!ӛRe4Y�K��l��m�m��]b�l�
�DC4DClYuu�%^R2QC5z@k`ʚJ$N.�8�n���.�cf�L*L��+h5�`H�b1
!%�b]�+��Ya��,5KY!�B!��,��&��$��S�1����	�೸�v��E�c�)�$1-�Ŵ���T#�H5?��/��S��Lb�xX�(D�%�6�ޒ>�4v=
z����
^C��-�r�krct��D��YI��'᷎2
��ar��H���2��ҕH�&���lK��ڼ[o�5ywHG�>�u9�E�u��C��⑪*�j���?L�Woޘ��c�@湌ݠ��\G���<�.׹s�ٿ]����r]��4�Ղ��k����5Q�<�tL���\r���Pd\j�9�������!����4�&�ر,d�����Oe�.oP�:�b��h�����"H�����*��ʚ�W^���|�?�P�63%��TPiUYo��thaa�2�]����Z崵�ck������K�:Ϭ�n��7��=�s����LE�z��善fs`�&H��Ǒ��ߺ��杙��~��c��D��s�ǵ��E�����|�������w��?��R[����|�3Ȫ=�k�$��{Y3og�$���Golˉ;b����+�kp�}�'�3.��Xس	b�2ٹ2�o�Sx�F�!,vP|�Ys���R��Z��Fi�����̾`��+O�}�S��n��U�kmk��.-�{�g(AY�;��mުs.�R�sW�������n���e�>���/{	���/^-.�*����ym��iWː*�d�L&0-E�IZFS4��#�Kq����ċf�.pw0��'�d�Y٢��t��d��Y��Y]�bP×���.�+Bč�0D2�^Cùu�W)	#��)�쿜[ECM|��|��y��w�\����q�{a��л���3���Y���,Rhh*�����zX=c�t�2_,13�[�MN�̵*z��b�2'Ӊ��%M�$)ґ<�O�J��#����!cVH��Tp��3���+]���oX�X<�L�e�dEFE����KH�QE��k)T:$P�Ke���J��P-�V*C�Шd�*��5��$��8UQ�Uj�v�^�Ah�(��F}�<�q4/W�W�U���-��J�]�E�����4�u�k�νw��g�=�6�'��lY�پ�2��efr�/���^���?'�'���)�ry�O��ro�'�"'Hg4%2A@KЖd3��t2�E�Es�M;S�\r˒5[��H��U7
�@eZ�K��qp�}3]a,$f�Cd��X{yc���?'MGaZ��<
�e��x�^�Nb�"�T��P(Z�ګ��Te�E�@$F��2$�+P�� �S�~Iɠ����zl���-xg����ou��?��1_{�����?޺���9`ʫ5�
�q���b�+7q��7?}�l�G}��/���3@.�
H^n���|!/��}��1Q2�G��y�^�n�P*W�]�VS4e��fhB���Y��X*W�5��:Pa��v6+���*:�o�ĦGdgM�%�T��U�Z�z�z�8i��,/:ebʥy�ן/�.��R������O�Z��_�ߏ�~�:��*�-�:zVV���UWߠ�+�w����h<�o-V�0�Q��L2�Y�>de�	��V��Œ5.c#�&�lf�^�+�#7�ܸ����mGڮ}����
�ۮ?�E��������p��?p�?�������.�á+�W�W�������Op�'.q�5n���'q��g���4��'�����Q��#�	$�/@��
�P�A���� �������o��3A"쿑�@�/G"�d%E��*5T�e�P�n4�
�
�(j�@9V@�v��(n����^�����"�����(�����a�
��3؅Y��a�����8�>��]�.�͍���6�
w⮰���}b������&L�p�m0v
&L�v���˧/���?���hŊ;;�~xv�y����[���ah�,g@W�
�;u�Ho] �[w�����	c@��ykoC��>�T?�'��妟[\Y��u�I��:&�i�e�B��c�vf>��nl��n�.���= ���{� q	�Q ~� �0H�+�d��@ʼ�H
�6#}<A��$YB���93��\�e8�e{��{��QF2t���L3����m��sr7&�����0��)���zut����D{�X�8��j��: �2uC�b�U�����U�w5��Q��U����׷_�T�Tk-�F���*�N�W{P[��h�sX�p\#p{
x2p�ـ�Ng�8W�g���q6�gs��<�=�ک���t�8k
�x�Tv�)�{(��
�/��vk��N�T�.��i��N:�^h���~T��MM�����Z:�C`�#�1cs`|�����]KW��{V�X5���g����M{K�`�����f�f.�ژ����%F�,x+`�M�؛�%o�v,c�����ܚ��u�h��l؞3v�t���V�U{b��X�?�}�q��9&�غ��vrjz��ܼ��B�����(笄��d{P ��I$5� ��Rʢ�^rD�"��,G"�d%��UjE5�����w��—
�t���
�sP�eE��(^%������(Y��u@%�(]n�m�1����z�^��/���v Z����Xf���V�ݞ�U,]�q�λ�ڗ���M�mv/&�}q���-�����C�h|;�?������g㗾��^�wo��?��ˁwz����t����u�s�������E�!N/������^:�~�����ӻ������|��IB$�� ER��Ҳ�J��d�2U�k�,u��U�GdD��������w�8� �P�X�Q �S��P� R��� n�	������t���+����A�D����S�T�I�H���ޙ���-ȝ�yd|�#���g\��8
��]������h�̀$�B��)I
I'�eԦ�PZu�EY�So}�����QNbA�ɇ\Q��'*OfeY6e_�R�A}�O���+�*��v��zQ�>h���m�m���:S��;�'���)�Ξ�7��4��;m��M��S@�o���}͠�-�em�+��0N0z3F�����i0p����O`�9f�p�
��`����`�����~r(��0��0�0�F՚�hV��A�n�FF�f���F��8���A�q�}r��&�[�����_������8�' "H�/$���	D��1��	ѹ!}^Șb��%@���@���!�B��4.�	�Do��@���&Pq��
�o�;@�N�4$4��h��C�@�I#$�!(E�#��	H��}B_��w � �M�6�d	r&���tF|6e(Q���T���
���M��f}�E�}�u
mzBuoh�:��k�
t�@m��`@2}L�CM0g�K�,V�K��2�dX��XƗ����
0�re�8ٴll#�4�֤D��M���g�|m��v?A����/��o��_��?�����l����껨Cp���`4��a|���}a�~�l�X`r��X�k7���{l^��5l�Ž	vY#�A�L'�	$��na۶��gH��o���� j'��!S�,Yd���X4X<`��;�&�H�j2���R�1:��*�	&h�6z�عX�^���aa��"N"$��(�g!A
	cH�@���H�E���y�t��yA�<Ȝ��iȞ�2�W�EPXDQu:Q�DI!РPZ�MJ�f�@�"��(h]T�U%Ѯ@�
�t�[I�82%�� E��a�D�&�tI��"CȔod�o��敷�$D�"&��<$$ J �8��B�q�	DDb$N$I�Jg����w�ӌ�旗L�e��9(��TB
	���6n�\X��&��ˑ+p��깸F5-ڴ���K�h�K�'.}����&x�|����?�H'�v��w��Ӿ���<��{��+�҇/^�?w=����/ƻ�C�܃���s�/�\xvp����׸�W]��=��{���n��}q��[�o8{w�!��Q�CM0g��5�W��U�X5��XV�2V�V�]
�5꩹F�Ŗ�}���^x����%38ao�;Nn��q�'n<q��;?N�.��~��/3\����+W��B�VE���i�Ң�����tP�wh�Ͼ���[е
ݻ==;�BC��@�	�M}قTQ1�
�.��׸֗]��\���8j��+�QqdFq.I�P8���t6'E�4��d��')?2*:&6�������\�Q�q�
�2%J�j
�: ��i�z@�>��(UhUk�:�qJ�S0#��N�CᔴH4O�4jܤ��m7kޢ��� $c��%Ⱦf�;�t�\V�GcF�3�.����U��54�����NNM����/l��1�Lf����¡���Ĺۃ��X9>�ڷ���?6N^�l}���i0s
�̘��\��+k��l���ԹK]��ֽG?=W�8��f;v�?�f-'�w��V��b��F�u�A�V��ԅ-zԱ]S��宙��vo�^CZ�&!�y*T(Z�:$��UҌ.i_p��Yt��,�Ē����IJ��U�Xg��<��n����0�7G�����z����O�w`��g��֣L��cʫ5���$�Q5Mʊ潆]�V�*m�
J�]:��+��]���=�������:��������8�	cI�!��"s9 *�	ѹ�@�|��I�B:���<�Sh���P�qb�H���*�L�1���[��{�����%pPg���	�4L�Fh,bIF�j�&���QG��Xc�u�x�_�J�A��c0w0�XMI�LY���
��M�-:]Z���M�^ЮO_�ؿ�έB�N����r�\�ܾ}r�|s�<|�pv���g��)sL�{����|�u?���~��|��>������������lڲm�ܞ������o����������16���ŋ�e�������5L���6�f��e��
��s�F����
�����F�Q�GBBќ��p�4#44?v��qC�G4�XlAK�	�n�c�M�h�Ĭ� ���E��Hd+�9�C��H2��\@��<RBn��m��h	y�.Hu�@��d�-A~ RdY����q�#�sԱs������\�eWp�
����9u�{8}�q�}�Ǚ�+n����݉��<�n>?p���߸���=
?����^�����\�w���|�盥*��g��dE�t���p�ɏ� �S���Y�*����С�8<8��;�c�p�8�q.�%��]��
8y����רN��Wܨ	g.�n���w�����|����7�ƽ7��<\
<Z
/O��/Yc��˖�X�}��7>��w��(h4)ѬFa�Zj�Dkm��N���t�Q'�:�Х��7z��&�[�����/_�L�k$�b���P*�{e�	
J�l-ڱ�ת���t
V���l� �>1�bI�2�4pJ��8�
��7�@78�8�8�o�8p\��0O�ý��18�o������
��pN����4��X,�lƠ!+[i�dj�|at��a�0�L쉭{a���s�4�Z�3o��F�Bu
%%�VQ�
Zа�Дf4�-�����
m��:��/t��-�J�N���1&`����d���%#�1�&��拝�^��wV�����xϛ��i^6l������(�JmQL$j�h
�:��+ר��Mj�}u��) ���<��p
08&C��6>�	�F�h019������FM��kn�~^���L��l3�ع����GI�%�1II˙;3'g�I�N���J�(92D.�1o���5f �`�<���_��˨�RX���Z�ֽ��a#+U���`��.lf�z�y5�ޮ	��V��:`���X]�=e��+�7إ͈
��3at:7���d6,��l+60���{��=0��}`�~0��-`�f���=��}Ǐ��8~''�pz����G��7>���>Ǜ�|ɻ����=��m���������?����I�?���3�sß�K���	�J�3�j���{,�pr�Uy�{3O'�"
�9+�J�2*&>C^j�,x72^YV�{����&�y�7�9^_<qdo>�R9�bǪur��vo[U�á}kĥ�ܕ:�û�ܳ^T���k-.��:t�Q�&����a��0�n��dʚ�b��nl��NL�}��w;'����enXX��xP6��
��Ƴ�S)�G��gHHʜ%{&xeY�6/��	���L�H:�~E��VҊ��6|��
�}'��M��{�
i�'|vc�?];���]�n�{��>�/�o|����Z�O����Ep�	�������ON�p��^���=�t���=�z�{���%N_]�ܻ�)L���]�[�����ZYc�M6��f��=�z��m����w?�i�&�,�쾻Ǟ�)��EV#!��&��(��(J3J����_���� �gE}L4���h�,��q^��������۝w�7g�����w��������~^^q}s������<D��1
G�sV���HI��ē��$��%;HAP0���0AxHm@ �KG~EŐ���*P�"P�J��v7ixo[Q�]�(��B�]�hQ��(Q�ק��nk�ť��J��A�z����^���u���0�����8|�
�c����x��������X,;���10��b�b%�;3��X���`�:�=��
LнX���ecL<9��+���κ}r��ï���o���|g�z��a|���3�������9��^s�|D�'��$Y��!��)s�����C`p���`H\��]�4�;��G�gM`�Ș�'0�p�3��2�Ȩ馌�qr����e�y��㌩�E���6mIm���G����Plo]����|�.nF���a*`�	-A
=�	#�	3A
+���,�Y�6T[�t���my-�_U��^��:QC�Zs-�F�ū�eW�^U[+%��քꬍkS(q����-T5�7h%���C��zj��n
w}4
�
�:4���"�8�~��g]��-�[�n��h�~z���^�$EJ"Y��)2 e8�c@���B2��p2A����� '�DM��OB
�׶diٲ�]6�Z��bæ�-[���jqiۮb�-�a;���[�u���a�{�xS�L�d"�r	�G�|
($J1�)��2�c�l@U9�t���{�����5о�-(h4)ѬFa�в�T�6u�]h�:��S
:7�K��A�.T����~��_4ɼ�0��ybi�����P��\�	I�0�Ē����J��*��hu�S�N̘��p�ٳM��k�W�LY<_�l4�lL�ճ9kv�g�����˛�ul�ɋf-'�w��VM��f���6�'��lY�پ�2�����o�]�@0�
��F��)	c�$�P�tFd.(*K�!�$&Iɚ_b�F�������C��f�Id6
�Fg�����ƅw����M�p�-�|�p�F_�N]���է��()�꧆�t鯖��4�I�V�]z������%���o0��v/��b3N3��=a�3����6���pF�8]^ݞ[�
ߋ��p�9�ܸ����t��ۅ�۝�?����}�?~�]�f����=_�f���e��3�+�U��b��E����r�w�W,��b���E
�R�PRZ�+o�4��4K���=�.�M�5���cj��/t��}ѳcyD)!z+��f#�iN� �4o'�p�"Xh�A� �@� oA>��@��
 @�BD�i�� k ��0�l�F��1�{�>�L����;/��\'��
nJFs�I�Ƽ�yΦ�t�f�,˾\˻��Z`�]���d-V׭�Ɩ��r�=�~{v����KڲU׶�ͷ�w�lsկư#պ:�ʪ�۝�2����0�ۉ��,�ٱ���
�<b�o���kݶ��so��O�b���ρ?7Wn��y��o˗�����[����3]��3eΚ̑+O�t3���>׼�$Ar<�(�"(	)�a9����#)��CiM�6���.�(�Ԓ4�)�DT$
��ɢC���}������)���������c8rz�^\��w�xrv~qyu}��������}�W�v�{pt|z~������ˣ˯o��;t���+n�����ʭ�������^!O���*���d$en���Y��X1��)������X�'6�M�b�ض-��1np*w���Y߃s�|��;�����.�2��m��cq��p�^����Wp����zn�&�pR���%pr��x&x5�:�[��E�k�@��L�P$@

�\i3 �EN�����"�
��{H@r	�ER�>(ҴQ�݀��NP�@��QP�M���DWP$��(��)(Bi�H1A�9A���E�I���Hw����<o��Y�4j�K'��հQA^��M}��
���Q��s18	�n#��"v����'�`�v[�I�W�hUP�EGQ��~c�Ѓ�u?�ҡ>W��x����Aޯ�du"hC͘�H_t�YwE�G�†eU��Ueᙖ������Y�pR��Īr�F8�Z�{�T�P�i�.�������A�"�B��4���#e �5�'�G���3ͩ����W��8��f�oV4��|�3yr��|�h�zd؊��
���hXd���:j�JE�|��'
��pX؊���w;�St2����0�`
K�x�."�{���lP���Q72^3SqS��!�%��#A�
�)<P�q������T�14�F]8�ˆ0�ƭ�̎��H>b�ڈlWD�lЀoJZ�6(��ղEVȠ�B�2ٚ	y�[��Y�P���R�5N�q!\u^���b8R;&,שCy�"Z
�O�)�J,�T��O	�J.0��ֹ̎�]�,��a6���\�+�B����yA[�]m���ژ%��X(+�;"w���@�fi���B��TVh���_�5�܈�{Ha,�iV�%@b���e0/{撢��j>�P􁐩>�>2��a|���⋥v9��V]�1�1�]"�@LD�vB��
���9f�]��1Oc]_�~�45�'�
4p���ڈ�s��b���Eg�ّ3A���v�"���Y�N���<�]R�1`���-����c��0Ś/�!�~�k�
�Yìؑ�mD���Ѳ{K븦tl	��2�AQ^�Ʌ�R��L�\qB	�����U#3�VO<A���5<�@���b��u����
k,�yh��D��Ӱ��<pG�o�z�4��Uz���d�Ss!�p!���G:�<���.-#}@��=ZB���ru�M�B�ɀ�6��Ӝ��AY��_y�_QcC�T��}|�$���:�vt,x[HE5D&~}?Bd�C��C<������c���,2��=R1Obj�d���C;�(5���S����M���S����pVm���c.�xs�%�p���Yې4�&T��}��	��(½ðr~D�q'Š1�p�
.m�OG���L��C��)	��	�9`��}��F1�)��oc�@#��
.�
�^巺4)�0��18�)4�8��v�j����;<�`�3�vӌ��[wˬ�b7��1N�k�4�ه)f���)4�>���A�cю�xG�aP�k7�m	*$��:e��b����1�4d��W,>R�JCi��s,xָ��4�]m�P/h�B����6\�A���E�M�'��HK_Gǹ�\�`�����/�a20	�)N�C�BS�;8+g_D�[@���iZ��fVu�U���/-qhL���ġȡ����#�.�9Rnn�@"m�e�)�,����Thd�+#J<KB�K�7Ȫ^�#���H3h3cB�jꙹ�
�N�47P����L�xi���(�nڛQ�:+u8�
���8z�T��t��9=	ҰLSŇ��'`�����)���(����<�4�4�;}e�
�BܣҦ]�4ϗ.lQH�O�x��Њ�U�f���a���yu�i�bL��ь�w�CנqK���.CW�X���g}5�T��8e7���
��U�%.�����Drh�Q��Ȯ.|j��n}�~U~f�n��..|�&՗Z�N�N{��H�-�R �^^�c��
І�4��������V�~��3����q_�&�k�
&x�_ݓp���jqͺ*�{B���I�	�-ĵF1����f�T�q��fEA��_�ț�,l�dt�����V�a!�j�I�$�"�'�����bpC�?m s��
y�S@�=�@-�M���]����١��*�K��*�f�~��涎b$= �Q�s��x"oH��d���qHoI�O��у(H4�om�|���]=88�1�΃E�����]��N1�������/:�E�7p~�t���S>E4�gX�5��س>/&>s��*ݼU�VK��R/�uvY/}�@w�?�ٝш���!vHl�ya"�ԩ@��tOK}�L�K�$��)ߎ��ʣ�F�m���ո����i{'�0~���@)�x,پd4��xD�9�����7���ī�ɽ����o�ॼdK�` ��@�$b�����r)i���}4w����z#ߕ;�x0��&
�E�"YS�y��(���Np��_��$�1���\� ���
��2���>�$$�U��R8>t|�^�K%��;�����`G��%�[�G-��7��:�oY�I2�r�ѣ�d:.Q���D3��螐�ܽZв��
������-���3?�"w3W9�H����=��Ǎm~��㼷˛�xL�>�x���]�Fx��TP���c.��d�`���#y}��
<�B1�Yb�0�U=@��<��캕�/7S���# =K�'�"��w��/ԅ�-[�qiɪ�$�2ۚs�;@�"(���*�hЩ�os�]]�f&B%��%hkjl�)�cm�jM_9��ׄ�M=P<�as�^
�l�{�O˗�t�m��l��"3�f-l�,�,��D6S�Tz�«I��E�d���
�U�ǯy�K�%f"� ��v`��Y��rH:�Wy�23)2a��ݼ�r��P��������[#��!�rqХ��}vy�h��_���D�����r�$;Bq}gQy��ѓ<X+k�:�:f�ԙs>�\�&y��y�ifn��+�+[���U��_r5���r����0)B���᫄ܞ�T��W��i�t(���M���u�HM=C=X+��2����6n����(��uh_#�BZ�\�pv8>��C�u=��m��V)�g���zzP3��0�:K����`��.��+	aRB����R���U�+���R.Tn��<x��K�_��_�7s	�\F1�F]��h,��������zN#
��u�!�Fc*�N\������.��=�����O'���� b�Z?����x�
u��~��>|�/���fbK������Ywh�,JPW)��:�����
+�b�ba���_O-�v$��M\�4�[�e���Mo{��h�(�s��6K�	�C�.ܨ��#�%0(���<<�f�Fe�1;3�a�0�4�o��ྕ�Ov�Ѝ�ː E��<��0���}1�� O�<��y��P'd���PǓ�Oȫ�DF6F6�9G��R+�b~��
��b��@(�Q�(�!��l_	=ȩ88!����r6��I�`���*�G�G
���Իjbu��zy�x%��F�C�pG��"'�"lB�g�L�<��}� ��*����� r9�8��Ŗ��A�A���~2��F�KA9�#l�]���(�2-�#�(��c
�J���P_� �(�#�9r�`'mvV�Z��.~�����u6f�m	<�Yo�zX�hwN��~
_�3`�������@��K�ud�u�)Oμ�ԺO��%V�<�^=�8���
��ڤ�����L�Ed�Zjk+V���������ŕ��U�-y<��G
���`��szs`Si�E�?�����'��{��s,��B0��F��/�w��#T�0r����T/����p��uOr�;�
���Gב�.�D�l�����WQ��}��������)R8�<��S�Ӿ�']�"����oV����Շ�sjr*����P;T����>���[�rQǻ�D����兘5l���Os��0�U��v�œ�B頏��B��c���><|��(]�.1���(�7�c�Pvh��cM���Nya2�D9z�^eQj���¢�o��+�u
�5~,p�U+gw�'�D,�J%�
6���ɘ}V�X�aQ��%je��U&B}����!v�"N=k�X ҄�
�Mb4�B/�����#a�+�x�HRj�Gt�B����C�6>Dw��
���,��}��.?��P�pt��+�䝔Sb�tXƃ�L�0"��yo�Id�xƠ?O(p_y�<,�GZ��n@$ cb���E��1Oĉ$u���m>�/R��Ѥ<!�S��uc��q[ua�;�,��>(�=���/���Qr'H�1�T��
Dr����Ï�8CP0�fS]�^��7Ά���yX}a��Ud�Yb��‡� _�>��e�
�bX6]�[�h=&'��a���n	���*����U��y�2��F��֔��[6�[���\��l=�|�K��#�ŷ��������%J�z�#��_�.�R/Qo(�Cz}�S@�!y��|�O��ʼ��d!H�|�`K���p������4�l����3��ځ�_�r���"(��s���<���p�+�.
K�#��a���`My�� �Yz��쿐atC���y$C�N1"n���)��'�)�����}��/�$�P�}���UW��}���c�����.g,���$�h(o��1nq؍}+i$K8<�}L��{@wj�k�Ő��q�[�a�UkZ������+��-j_�Z�ӹ�Х�*��C���Ivi?���yS������/e�Sm�D�z��
SF�D���t�/C�%�
���C\���	J,z��Q?|�کu�'[�!�Գ_S���p(�����ef����2�lޱpurPlL�'1K���X2k%�`�0Ʋߴw2�5T����e�G�g����1<G9�q&l��t�b��}�L^%W
�}H����Z,�WoR��@��"3U��'��K�.(^M���dx��,d<!:�p�~�a'�CԡlR\�1GᄖM�s��ޱ4�	���Wv�]e?hk�W�8^��MЕ�m�ѱL!�|j�|Zw�,�S���~��L۽���i�b�b!���u�B ���ײ+/7^�;o�(7G�yY�����y�l*YHq��s��~N�*�k�ȃ����h�v\y����}���s��$)��Nd;cȢ�/��
�&,�%���S�i!�H
�*q��&s��3��>kI�>�E�d�n7__�)�玵����}�6�R�cB���>�"�n,��.�#��񈏨ى�#A��Q�&�N�=���^�``ү��J������D�:Tr�~ckcw�r���yWm1�*ҿ�B��]��/he�Eϩ�|��l�I=�_ڑ�����y��Pt���:�݉���ivn�@�*����Z7վ�R�L�Ȓ`h���׮)}A
���&9�*���e�K�|ks�k�<�k��7I�>Bzql���_
��ѯ�� ��d��!��}�	t��>�v:�01zk�H4.q���zv���0��{|W�t��%�ۙ�ɍ\e���V{��&&�#���){9���O�,�EX���A%͖'�}�4
�ɘ[�1��k�~hc�T�1�����z�tOg:i
�Q�?����]���hv���r��s6#�"0�Jנ��3��1�����ٻ�
�t�,s�Lx��_��fcq���܍�`xa�������F�cg槑�͞��(/�;��(k��l|�^�rK��suʹd%n{��t$~qB��
;;���[z�"A�>]~i��~װ8R
�j��1��-F���L���m�"u�g�CEc���3��%.�_7���R�c�x>��שR�g��n��K��l�{�vg�=�J��U�U_h_���N3�H*����b"D>ɁiΠU���8w��L3ML)=	*��{�����Ku�OD@d'��3�]�g��"~.'�g夥�����ig<��D��y?c��j�U�93��ɘ��iaDFһ��h�J���9�/u��^*&BD�\�zF�O��F;��2R��/��S���
��+ꚻoIQ1�2=J��7/�ԥ�z�А�ԓ�K�^�~��2<���܉ƻ�r��c@Ȕ$���ˣ$=,t�)Շ�|J��&i)����o�T/���>����Ϭo�[ޔ@���G�!^'�CzF�T��M��R���&��'H\wOY�j�M�T�R��]0���ō�4�_ۗ��Q#���"�A;�U
��s(�;��5)V�[z��$��By���H�"�i �
	h�Z�HT�2d�AňQ��q�x}��������d�,��*Ӊ雧I�L;�,�pQ�ܦ_�6�L�0��S���3��iڭ�+�z�R<k���i�p���H�2mImL���q6nWM-�=�m�E�l9�y��Z�,LGF����|�l`�񈍳�As(��7�9�0C!�="{��A(���c��R��F�˜�ȗ_��n�
:dn��.�I����+W��H���WV�摕��{�6�O�Y�ϕ|��S	�����Oc�E�Z��f�!WV&J!�D�D�$�!�E�y�e�]d��7jE�ʡߊ��R��+%�?��� "����?��c�㔴 �? C=�Sj��:�Ǘ_�)}��:���U�v�!벭N���D�۵:��v���n���Iy�=�/>ī��t��[�5�8�LC=:⹞�n>��X/�)��	م��=
�#�c`���)!���wu��r��umR�[����>ޛ>�Gq>�/���o�������N%+�w�W�g���أ,�d��x3��~�3���{�G;�|�@D
��$Q�˪��П������������g:�<@�����l�x_�a"�>A���DcRCiJiZS���T�O{�֙ɑe\��=1̲6T���sUW-��&+��bM5�
寥�2e��j@���d:�	��i�']h��=�8�z����T�^�t�^����ӥ���e�����k�����k{��N���n��须e��kz0f��e��i
;�T��zG�f�[7�1�����d*�vf:�wn�v��`�f;ҏv}�뻻����p��eD��������6��,[Uo���q�2��6o�p��l��?Z+�*f��߻��{,��/�8^ퟙ���:��5���w��`?�L���;��*8a�Ch��OE��0g}^��^��ן�1J��_�@�����հ�t
�:AQ��4����i��#�'��%�q�}�#��2p��M�O��B[�z� �+0���`�
��pn�	�� h 
�@|@�R���
(�]�j'�t�S�u����F7��-n��rQ�L�$RY��B
8�|�N�.��c�M��2Y�[�����9���1k�rq�u�K�p�~�l�s����B�X"��JR��4ZZ�>�`41�,��-�����o�階1`�,�=��!�+��hbɤ��
%�R�������l��j�E4�D*���>K<�-�C�0��3M���Xmv���h��x�������"<��B(K�2�BI�ԔFK�����1g|t�^�'��kbW^��ߠ�ٳ�غ��?�d��`�	��G���l�_< �٧W�[�����QY9c
�J�*4"�33G�'�D?�eFm�3(]Nם�0��������\!�$���#"I5"��¼�ţ|�R�
9�!��,�涪�����9��[�Ws��>���@�0:*@ϼ�/�S����8$`�������hu��Mٮ�������ў��qf��'�vx�wvhW'dG�W�:�^?�⿝�(I��\~��;��o���97�{߀���סU���>F���'�l�y�Jv�c����A$qdQ��@�b�9���r��R�{c��~�R���w׽�y	ݝ*`�<���y}`�U���u<.�4�P�t�o����^E(�!j��l9\�˅1��x?~��U�փm?n��Mn��(#���[PT��jcřl
-V��p�}�Esͷ�Rˬ�F-g�
�x�d����r}!�0?`E�ʕhfR�
(���	�kۧ,ddbN4t2�m�,f�FF�m���rT2�&I�g�jgVu����
�&�*�淕��\��@
�������|��lQ�R5�����ȝ�/�Q��Y�Q��Y�7�{z{�k}�������Ҋ����s<ۻX�4/��4/��NLN�]�q��y�$5$5Q���jk4��;QqIi�Y���Rr��<�(��PE��2A��!�֥2�.���u!@W�z�;��-�%�>����U�B�U���~u����J��s���շ<y��щa������|J�f��?�|~���-@KS4Csl_��K]uk�/q��C_���T��D�旰?�,#vdԃh�d���=^�\�d�ml�q%�v�'����X���;�hO%�iDFf��G�^3h�ǐ{�Ƚ�ڭD��Lc�o���e�3oU-����ZB�98|,���Y�;+_��5k�`�c����4��(��3l8�F�o��Ses����D+�F��&m�.�C ��D��4v�F+N:�����Y���{���$����r�98:���(Q�N�x�I�|����D��]�D��E#$�bD�^�U�$n��z�|^���3GB:���_�ތ�l>e}��o���UFWJ��(����Lf��QT�#�W���W�������/��z��b�<��G@����u
�O�X��e�*�D6|��+�'�x'<�'^E"��a��t"��`0��`Ej�ʃco�Y F!b�o��$�����~䉞�#�����XDE��@C;�{q���s�u�n*�M�I�o�!�Y�889���4�˾�D�f�5\ܮ�oPA;���_�ժ�W��WT-�\eu}�*���zOp���.��,֞�n0����7M�cZP�0����' $"^�;�������n
�#�(�����;��BWsg��0hH��������q3s�\�vk1�
�;�^�d)�L�枲�>�f@��3��P�q������$�e���5/�
�¾��-���`�Y��q��������񾫳v���3�W�㌿�WK�N��H��D�=F�X����z�w���4�iM���?q�-� 'F�8V�,N��<:+���S�*�R�T���+�)�r�b��c�tתU�V��;�\�}\����'�z�/'��?����R��ʹ��s�>�C5X 4�>0n�S��Zx&����\�s�%�r�J��B�jqx�nu�i|�I��y�ջ�����g��]�׻����F���fOxWc��,��rv1�n�qм�p-#a��$��<13R�$��!�EF�7�2���i��"DH,C+-�_SR�_[�s
�K�N�0IY6X:��p�ե�G�������Z��kl�51TO�����|ݛ���y�<�_�����Ycr`z8i}g윰f]ì�U3�e[��Sk},ٱ[q�O���Ӣ�a}�>���-��H��4G�	�B)&�C��Ԍ����`<�a��n�uʃ�>|?p�*xi��(xy�*H����a��=�&F1�k�=��&G�߫��65��~�4x��Q���u>2��fFկ��Ȃ͎��=���G�UzQ��6?���2�#kaT��G<���U:A1��P��!�wCL1���#���M͒�;�?�j�ҷ�=e�+�;�M��'~8�1�ьR`�:{
%v�΋��N~�]�~r�;�,�5�o�ί*�o����`��o��؂:ߛҫ@���Ū����w�י!t&�<M�.~a&�ݡ%�ݰ�XP?�W��(%�_[�{y�,4��X���jd��
[-��WYg�z��yt_?O1n��ےi.�4<�*^���;R�J�'ぬ�*��Tkmsm�cցU�����Ʃ7>^�
d��JU�ըU�^h�1�=r;�b�DŽ{\�'=i��D:`��E{��;�L���n�Ul�*٨�D+����� Q�d)�eXd�V��
_�����2�5Yi5}�w-���H8mrg}6�y^)��B.�E����P�05��1ϊa��#��듐4n¤�����ml�����7�bs�<�/�� #�.�E4H�_û�ǰ4mv��g��q�T*�H�)1!�|e����'A��Iy8E̻}U�R!p����!/�SYE�K����l_R��:�ڨ9��<P��3#M�\�E���;����շ�^+J�*��=-u��\�WB��|�V�Y:�=��mo�y���u�
���Ē�W˰��D����9��>�������cW_��I*Yy�|��SL1�S��1ih����+U�O�	�q�:��G{
�TǁER�TzY���8:'�l������l�_��a�G��w�0R3�=L��M��݌�^.��sW�oh<O�$�Y�B6��zo�j_��^V7�֪��)�t:��&Ҏ���~�ć�s�z�B6.\�3z��Ç���V����C.r��Ld �Q�]�#(���I=/�)7�d5�e����dt�My'�]�aQpC�t�V��%����J�"�|$AFJBLD(_.&:ږ��Wp#������`oK��MF�N�Q+���R�XMjB[T�DN��pI`��c���+�v��������K��Z3�����㘑d���`[3LE^ɮt��ϐ�5�ڭ��kWs�I��X�^p�v^�6^����V��rj�L�j���*��n�u�!R)d��x
pR��/�00��l;dR[KSC]��͆��UyLj�]�'�R���@|�������u}]��~�e����hiJӚAĶ��9������>���X@ZaY�g$�jH�>���?n�
�?j���}�hm�oɺ����4���w/zY�j;���̭��Ls���'˧s�~��0�-Xmv�ӣT�5Z�ހ ���Z���[��<�����
h�����?���w��}���~N�c��W	z�X)�����	pط�WEvX��¦�_�'/iG�'��c|��:t$Fga2x�B����g��>FZU�9�k�*ݙ=s�|ٟ��5�Y�=+��G0LV���;Do�u���ϧ�Y�eK-��1u���0�R�#=<FȱA�"���Q��G����8dpp\ϲ��x8��8fGE2�at�C4Ns��37�H�f:E͛�WPWɯB�Pͅ�h�0(��SXkL���`9C��OQ)lP?~�*}�܃�I������]�ed��F�5��N�8q!��>�"�5u�˜�^�;���!�ͳ�Z׉
���vw��]�� ��lx�>j���12A�,VM���}�X*W�e�X�l�;��`K�1kD�S���X\�K�T�K��H3+�
�΁�s�T�qc��E�	`�|�����b2Y#�+�*�Fkmck��w��BQ�k7�̤��a�θ��C�Fo�8I�|�yY��2.��7N��>���󥑖��iћ�뇶��k kA]�
f"��
�mI`0�'<��Z��Aa�U[E�x�$�5�5�B�bw\Yt�Ln4��Nu``Aw��^Ay�Y��
TX��")�љ����U���~�Y+���?aɒ�d
,�f=;'7/����������2��/l���ohjf0Y��x~#��EU7m?��v���� 1宴�&�"lv�'Id
�Fg0Yl�8���[�,u�4�J{>�|�P$�Her�R�>}���`4�-�%�J�h�C�08B z�:ky|�P$�Huz��d�����ba�� #�LChuz�����oӂ�	���ˍ�����g��e;��eU7m�� �����C����y=Ӳ�O�,� #ݨ�u��n�6��J��_B��@X��d�;?�'����K$�~:���t~�,�����Ũ{[��w2��'�T�uO�	��hH������0wr^�;�:���PB/s�@(w�?��F�m�㧇p�5��{�R��J��r`Yпm���A�O�`��J*�t��e؝2AɃ�;b�Ӵ��X沶e��Y��:.��RR��|�a�]����⿯.|q+�fߕ�w�����3�s��eo8��r��ame�ֆp��PW��:��)_�BY@��J�2�*T�R�F�:�4jҌ���O�6�:t�ҭ_�>�2L`Ĩ1�&L�2mƬ9�,Z�lŪ5�>ٰ�3�-N.n�<$^>~A��QUSW�1������������������O@HDLB*���������N�8�$�K�,���	�@ap�ffań��o(�7��>��0��4�˪nڮ��z��w{��h(�@��,O ��*��`��.�/���L�/nW�d��(�.��p�y"�'f*>�ǝ��gt��Þ�b���e�V�T�k0U�T���0`D�Ԉ‹(��e*H������ ���s�jz�M�ͷ3R�A�ENTc�56��sn���~�����pd�uh)�D�5�)-(Ux�U�:��-�f���o>y�J|RPYl��S�Nw��@b>� bV�&�R��dSL5�t3�4�lsjn�<�U��B�,Β�
-��r+��G��Ve5X��fT�}V���V]Jǘ���q��f[�3���U�$#3�S�r�d�*V�22�+'5�x���Bt-UP��
�:ђ$3c1t7ͭ�%K�lߞ�Fku7D�̆R$�[
7�k�θ�c����B*
Q��VVS:�t�U�:qէI�j��)��� =9��)�y�SMp���r�G��-��g3Y�ql	o��e&�����4�=C��F.
�_��TՖ�ZM��/�����?����%YQ5�0���bԺz�ܛB�J-4Z����ѣW#���������������O��x��g_��7&���T�:��?��=�1�m��/@2��'�f��A����YKR�6�����������-�;
J���ELhW{�H���s5�}og��#�V�.>�p�[��q/��ā
0�Ŭ�dv��7�d3��Im�(m�3q�\�<�|��B�"�b��R��2�r�
� 0D
�+)#Qh���������D�Bg0YjZ�:z�F�l�[��"P��!��ri���q.�'�o����bVσb�Z�Ma�5�s�%o����$W;�Z;�)�Β�H2Wntt'��cj
Qv ��$1i(�f�u�YOx���3�E�1˝�W��8��d沌��:|�I$��jV���T���&e�(���T�}��u��+�?��y63W懺0�Np�*C���]bv�z{���w�M�f
��˜��ogfY"��y^JR�yk��+�[����~�o	��ʮ[g������{6��)�L���1��N��^�y���8P�D��h� �'�ϚT���!�_����������}oۏ3�Zf�I�%�;	������h*_i��n<S�=��j�6	#�	+1IIf�R�����ș\I�+���Փ�G	
-#3����_@PHXDTL\BRJZFV�FM�e�㡛 b���u�N��J�՘l�����V����l=�~�Om����fX�����AĆ��:$�2FkE���.�>�|��#��%T���ԓ���vP���<�A��<�-C��E|���6��k
/����>�x����'��?�*_;��K�+Oa�&�.T�X���m�YD&.�(��;��t�(�<;2��ò��"��j�5����P�)U�O5���Cd�q?��(���/�������f_BrRƇLz6b2�F~լE�6�n�ЩK�����_=AD� yz���G���e��`ttqb�B��huz��b�989���^@�	�c������8Cۭ��k�O�R��321��X�9��<�|��B�"�b��R�2��5hԤY&���M�d��
Q�k:e��E�V��dSL5��G7���g\L�eg��Ʊ�����@�3fݿ����`:nh��tܞpDK�퉠�;���CP�&�1�]h9ӷ�=
#��pu�����3�uf����g��Q`S�O��֏��>~�{�I��S���
S�l^q~m� ��8f��kc�o��;��g�?�N���B�Tf����-�8n3���� >��]=�b
���MlC���f�DX}Ax<{��C�X�ܽ�y���{�̘�;0qymt�/�yx�W��x��Oe���5�ol��[~M#Q�+):�/5�_��^�n}}���O��3M�a#����d��ne��_-]��4�oƌo:X��UF��mitw�c�zç:*l�1�5�0Fk�h��h�0�1XB��w�X?�Y]��ڨ�ؼ�'�I�-���񘰌��BCh��$4Fcd��P�W
�*�!mqTڞ���Ƒ�ws�����7�駃ػ�f���i�z]J{Шf��Q����u��m9��"�oX@� ��c��R��Ǫ<W!���A��<�`;�āΡ`���'�W��[u=w�_h���0��������8t�N����i�6�7�"�ɣ�)�t��U۾�e��p�ɹLS�~���t}{w��|��nc�Ӫ��v��5��Τ�F�1񆱎<�I��0���8�N��F.�\�<���[�#j��"w�TH�q�Vd7^
5�f�.�j�Wu�=�R&�e:'���'/�DZ3*�Q���[�pK�۾�2	�ǵT�6�s	k��0)��f���:=�frf&b�1�3����ʃ��p{��=����N�*���*HU��w�&�qo���3;��8hVW .��(�QT�PU�;w@Ԓ������j��º��V���_FW|�R���B����F��U|��G������z���W�+���Ek3�:4~�F�t��'��,���&�?05�ҏ-�da;�Ҭ3�l��7ڦ�I��NR��yR�N�1��k;:��E�g=�v����;��t	 ��pH�x|7���p[�e�V���^��'�+�^����V�n��/��LY�hb���w���3�;�x}�L�Xe@�UÜ���/��ON�����U��5�&�Ժͯ?�6�x+�)�d�	�;0�}zP�c�<�����3�1���b=��ĝM� �y�|�P$�M���2��X��o��ё�}�{S�b�+)�(���2_��W���(�<���Ҝo�uu�۬l��|������~��ɤy��kHd���%��>�����W-�^���^2L>�
�
S�&���@����ޫS�{R�[�?(��nE�(igg|)��>�z��4�oU:ԥ�o
�]�Z�ܑ��&��+�a<�וu�:�t�j�h�p快��]����Y�t(�'�F>`��QX�H�a@���<�B?�8�����$;���#|wuޔ�vп
��������?^GZ�8��I>)�4n>� Ϧ�YD��`(�',��YUUD��`F�2���O�&��K�5Z���nRX|j�u�|�A�M����1�2��lV�鄜�I�%�6l�~+�_q?"�e�Q�BA���(,,
���G�PPTtT-6���Rn����N���5����E����K#	�DQ1�L��U����t#%�6�
�!4}��졇�6L�L1�go�$�������4��L�Y�ٓ�Mѷ���MJ�z��,<��}�6|�'����C�0b�����y�����bf	hҟ�i�z�P|1ѵ�����R	Zx��9Z�J���|��և4�N"�@��Γ�eM���%o{��	���
���&�@B���Q���(:&�ФYc���3����!lB��؅s����9!"� �E���&`������D�EQ�P���K`HbJaIc���Ǖ�3����7��kh�	����Z��e��kɻ��l1��])���qJ�.uh���[�P�Hm/ �A��ځ'�����.��@��\�[�P�{^xsY���NVYf����������:�z5$6��$�Y͖�d����ݷů�3�k�H��X�,�cH/����wa�%�2�a-v��8�,��LP5Y�h�Z@���!�Xm�q[��X�k������qJ�&)M���;Bj���I݌-�sL���&��Eꖰ�l6)�
#"cwQ���[x�&��$M��)iR�z��Z��=��ȅ<
kEN
)��MG�c����J�m���zoǩ	&��*SXmk,�d�ܔA���٦�9�X��
�V]�.q���{�%]�b�b�FFlEo.g܆kk]�/W־WgU�ծQ�aq3�W�<��Z�n������y�6�e�<?hEs�#Vm�M�f�{��qCxE�k4�Z糭��{�d&�a�V���*�2�N�2P�(U������m�_��U�gR�=�Qy:�dͨ�!;���䓡�xv�M��C_4?��2�P<�C����	�*�Ѷu�[��zuU�@�Mi�y��]x���g�<=3���O���u�.���#"o���mݰRDN�6U�6�o:Y�Ps�t�'W��ōΥ��[@��(�,ۘ�P�_G8��V9�M����u��r��6?ҷ�X�;%�rl��U3�g��"�q����(���4f'4�m�aTXYD�:>�"h�I��
���T��1Ww��(�kϋ��=N������P�[:j3K�FW87i�{Rtu���.�†1O�I�"��<B��������%��=ި���ui������6��|�r��������W[�U��8W�N�r=��J�%���1u�*�?�I~,G�mO9\yq�H�x����.�J��B\��~	K-N~�H*��E�x����]�����WW5������j8
��W_v6�ctk����GW���cz�lb	�	�F��A����߅g���*٥|ٜxrfؚ��^Y�*�͹O Oy6�,�N*�3�(��&mo�
�"���n����1)���F����sBH~G��]L��@Z:?�Xjd�]x�'j5�1��A��脡�)��6q�ă"fõ��gH�Ou���Q�,=e��<}@�:ӆB�]�l��w�#48k�ٽT�{L� 9u�e��B��9Sn'N�_���ѹ����Cۢ��k�x0��ΝM�=Ģd�גQ`�n�]�RP���e�.-��Q��m���~�H�"A$��؋J0��!B�
�R�Yx���Qj
�*�4*��ċ�i��ў��4�4]���>��T��0"3��Ԏ�|����{ZƳ
dM���]]n�]wտ�I�r��
rB��Q-�r��/�Zh!ra��\jmj�(�|�8˷H�C/�eWW<�T-�f��@g>&}�íy��v�>rh����\�,�_�z�V���4�`5sR�k���d�G�|�G-+�z��m�Ç����h�,�.�f�JTjR�IEE8�J~��
é�&��D�ɐF*�Y�#焄�r���}^�J����Q��F�����U�AUIы�o���?:��Vf��|uj���3�7�D@����:��C�/T��I�W�%��
p@�fp~�~΋У�fN0�um��s^�
�q=�@zp�8$f��H�@\|n-p���Tq����x�'$�񶕲vg�`!��2,��ב�hA*ѝ����OT�3f�R��e0.�1��#0�6sLd�t�����,��C�Āj�)�g�D��Z��D���ȑ�2詺-ٿ����� C��"1w1G6����9�*�@����a�o���H
5k`
"� @ �J�
�VuՊ@Y ����)�x7�F��W��`_�d�x�SH�h$"����z�j��)�"-GD1%b�x�~EF�0��a	ffd��jNln�s�K�^Ĭ�8BˆE��H #
@��-��p���J����<t_'�ԝ�0Q���3!����&�3Sia�5U6���ɶhʣN|�j1�?�%�6�ù-|��\4�	�]��S�w=@�2$�U��դ���ս�ŬٞAom�K�صL�2�ݢ��Ǯ�
y��{�MO�g����s?#�n��]Ş�w	_4�UΫ�w%
�Cz�Ɔn�>���/G�j��/��~�g�"�/�/�/��`/�4�����v��M���r�}�uW�^�2ED�!�zH.�� �����	��?��O�v��p���_{<ø����f*Q�V�s^�~�["<����Є�&$4%,����BQ��Y�i*]��ِ�������<|���`�D1B�+N;r�Ž5����wB��Ӳ;t-�k^�B9/@�I&0v
b|!�1�NZ&r��<���/��w~6�mW�hV�e���(h���O�oƻܒ���=�v:��@t/-~���0��-5�#ZnIt�]��2ƉSN��� �:��*2XXظ��:�8W7��y�����5&�����|],=%�����Drޣ��Wvv��MSh�O�&�Q�1밆�U�$C2�x�3���zT���m�@a��E�ņ�I��4K����w�
&T{gih6^�9����y{�٨��8�%��6颗>����������aW����G
DaM�j��I1�YN���w���ѻ�o_/F�q/h��깬��Ƣ6�t{���Y9�9e�3����O}]��ݿ��S�z�KB�J����J�X�?��F4��?�
���&6���4��vv��]�����9C��瞸��3�_��?�����6;Q� ��	��.���N�8��b����6�v3v^�����>�7�
	@�Qh*�6ۓq<l�r]���)_#y=L}�U������Ҽ���q~9��z
0D��+'��3���N�qC��!yS�ɮ[�>��!bT��q1!&ՆN�iq��<EbQ,���Q��,�	^��l�12o/'�c���F7ӀGmW�"�1�
K����"(b���0��	D��9��=1����} �Y�X�Q�s�2f[�M�@t�Ί[qb��E�Ptb�Qr�d��֘�J@�&�Eʯ\��*�`p��G�Ѩ�
��2���Y��T]W��ڧ���&��|D9�͓L-)�B��k	�xycah�^�Ōj����a�D��72�/8l�덵�/i�c�!�y�h
9_��lZA�wf�"jb�|GP�B�c���1���0ĩ��^|!P[����w���e$r�Qj��+�EY�
��z�%3�R����vKfj���kLj%d���/�m�r
J*Z���x0b̄)V��p��%�F�~����S���3��`Ę	Sf�Y�b͆-�`���(dD0:e5�A�H��g$��/��	�"[��JT�bzL��PϪy�M�U�z���ڶ���XH�-I�k�4���O#n���c_.ھT�}���s�c�rʬ�1�W�E��m�x���V,��bhևHC6���p{2G�}5�^��s3����܁�E�p:�8ܺ8����3qQ��KCֵ
�$-�î
�X�M�D��L�L:�aj�������ԝÄ́8�."�H��U2����n��r��\��~�\n?��o.7�
Y�}mI8�\�%\�φ����;GL�t��̓n͐������)�^J��!��O���3ꆨ\��.]-��K���aJ�����g#��g�"N�}a/IW�z
e�g�4Q�*��w��(Q8?�zMX�Uů�<z��mS#_����4�D5�ʢ���X���c4�<
�r�*gX��ĹH�K����YY�=�(Ȇ���6�εO�uP���N��w}J��Ma<+�e�
�W��O�r�U�,xw�#�<n��݆��e����Ê���
�h�:����˭�j-�؇r$�*���V��>T{�!�*�:��IA��N���zBq��m�i�]V}���3��$O��j�3[1�6\m,����#Vr�t4�8��3���G�c��YL�>o�b=��~oO7(*�`�#n�Y�{
Ҿ��a=^Q�J,}��:ek����i		���:�#Tj����L�rL�4(z��7d�<	�N��`�9��O��=O
4�*eK@�ZH�m"ƒt+)w��K���?M�FH�6�'^��Oq`o`���55]s�Pz���A���jJ͂a�t"C��	h�<�a�S�M����h�N}���v�fȾ5*��ݜ[��	�v���N�P9�xP�H=�T�&��f����B᛭�?lӦ�X���D��*ћ��y��Upv:��H��0t��eH�1'F����7�`�%����p���
N��-������aq7��]���'�<�N�k�\d���4�3Lח��5���,,��#�_9>��?Q�]���.� �`�Z��|�+�4m]=]���iiF�&��j���H$���Ъ9���o*
m�����P�}�C�}1f”��TAQIYEUM]CSK[GWO������L&?jnaiemck�uaL��Sq�F��^�ݢN�W��Ҵ9��qώ#m�l'�>^�S��߳���Kȝ$8�21^���:������U�&�;IB
"�'.���	��D�{��	�����Rx@�}�/��@�,��#�C@=�5�M��5�,��C I"����aMU�#6�:lMXC�P04
dȩeW��]^���셾��7���-��u%���ZI�^��nKy�w���i��&��i�Qj��g��� �$���V
���i��}P�
��p�u��4p�kr�w�t�^�}��8�G*)?�Nۑ��m+�ܷ�rj�1����]Z}E�
2�Ԝ�Rc*^����f���3�=�24U�%���$p���QA~1�����n�+��mI���m��'�j��Q#�F�B��)��񪮃z��c��(������I�bp3yX$2�򼷆�E����a!Y��~M�����?Y>Xb��…[��f�l����W�}�;�C;�cN8�s�:����i��?L���4{��p�z�!�C��U�a�9c��+z�S5~���3�؏m�N��{67v;
x���ˉ�1׭�%���
5T�K̶Ԣ&ͲlہK��3��`��}+�3���
<�ʻ1��M���4�;S�`O��u������A
�������Z�+Y`�̦	�s�w��ϖ*o�A\�"~1�͙�K�.c�e�2,��8|9�K	Hʴl%����nY�a�ytgV��x"�7���,�%���rlm�	���ڈZ߀�S�j�>�:ϋj�|�h�F���[σ��؍o�yV�J�̌�<����l��J�������g���*ʲޟ
�J��䰢^2�:�����	%�E*���Li��aH j�/b%�}���|��b�H�Nu��'�O�I�q�Y�G�u����&�x�����Hk�a�7�z�T�;ݙD��ǵW�|i���]JHC0��������[�[;Z���Dh�e��f�$�C�a�6�U �bw��󖨰o�����8誥=-���""�ě�C�hR�JJ�1������N(�+���$�f墒p�bϜD��h�?Y�v�$;�c�3u6�nOO�5���9%<&>�j;��@:�ߠڇSk��V]�q���m�G:�b]5u�
/|nŌ�u��)�ǡ�U�D��-&RZ�pЁ��
�39b�T$Cj��d"�\�?^�R�
�o����/��$�z�J]siE�El�+d]z ��Ձ��"QĎ��y
�>џڛ$��A;�B[�����ͱ䲨���==��*��������c{���t�N�j|�譏�lh�ưF͚�S���n�p��){Ԃ`'�j\m_��=�&2,�i,7�2��d2�"mK�y ��i
�
9A6�	&/�
���0�lֻ�C1�ޡcPMC6�c��%G?:L<��y.�wF�C=�}� #�?k�zhLEt���y� !c�@`�C# ��7�����I��)j��M�m}N�CF�X��d�nM���
��k�8/�+�_myzE��i�j/xoʤ)���畩��sJ�,7�#I�A_�"��<�z����]�m�Z�S_��~xE����_�m�ݴ�DW�ْ���[P������|0ʙ�|�8��[s�
�^K�7�l�f�D�gg
Ϸ���A��Ȕi�s����6�*v�06~$����9�����~�ÒG��l�F+ ��ʏ��%z/&g�A
j�"k#HY��U�[��[��_�B�R�J@�@��:@f��I�f�T�'4:���Eo���-�
ƟJ�fԪ��M��r���iYiΙO�$TQ��8'�%��HZbpd�BJ+�]�B��2�3'��x�)YC�'�nܻ��"��9aea���:�
�ľ�q]�zԨ�bcy:�zN�uS�k�C�-�"O@J��@��iz/(jLM��v;��J�N ��G<���`@��.l(�K�׋n���'
�v���w��2i��D���&�U�kU�;әQ7���(����"��������x�y�zǤD�yν_�Ǒ��n�:]�;7ײ,�A��XH�\�X{������9��Z�M��o�rg��c�d�r���2�9OS"��vd���B0&8��f�1�eD�5��I#�9�D9�`BP��#�D/�Qj��_�I[*,�������)�`�1vx_G9�%"�VRV�E��q:x˹;���c�MVz����0���B�"Fq.׶�li��[���ְ�9�����u!<�� 	��d�B2˓cb�z��HMR��#�羔��5�����V(/��v�n�-���Ź弪���ĽK�7vo���ijmb]GYx[�̋T:['BX;�!|�E>���3/��
�3����ȫ�/\�؋��Dl��,_���V(�h[�BԭRm[�I���\��zj�bl��x��2�����e����@Q�y/Z^
^p1��~��/��o|M��=�P<a��>��!z�t����KH��A>��1M�LQ�\E��{�pmY��
Qg��,Yk�K�w��Ἶ��×�����0�iPj���~YA���װܢa02apc;w+YΉ�⇅���Oǯ��K��q�}�|���y.d-���(�!�PY�A�	�G� #^"��ܪ�ÉA�P�����Rn&L�Lɱ20��&��A��`2����B:
@im0���]�<��p6�ow�D
���y�I5˻��?�Y{����h9r�V�4s�4ov�x����ɬ���=�?�cg�Q���3p�p�&�}�Ξ���}�X����P��!�T��#�[`����!ӝnQ�ĂwV�թ���C0U1�ƪgo-DRi^�8M�T�<H��I:8�_\�M�>���i3��ꐲ��i{�/�Q�B�n��WD��2d��
�b��~"8�,CF��l��̆#<|%�X��y���{_Ff5#�-���&.�Z��R�Q��S�h��)�j�¨W�ď�$IP�
�/��c��8'sW-�����ߒ����E)M>�57���~�T�o�"��b������7���+8}����z8���i��"]V�ךU�$���U���������Y3��(��T�Z�Xs��M,��l�X&���������X�>�E%;J	"��IE��dD�ךH넥|P�Sb�L������̱�#��H%��!ޓ�oj�3���îJ �����i�BTz�
�~�͗��8.�eɦ]
@S ��+?~i]�q8�*\�w�1�1U�?_~n3�FE	�͠<���))�BU!����P8'��hp����T*!j��1����W<~s%���t�m�D�y�&� 
�9w��y85h�D���
;	EPԷ@"��Ea�rK�9Gf���X�/U�ZՁ��Ր�3��֧"����7��(�]R�-UU�r8��f��ٙ��9���GZ�R>�WkV%��8)��4�J�s��/Aux�����syԉ�5����Λ��%,�)獆��m��L�bZt戓��2f�z��d�w?��}�=M�`�+K���	�`��E+I����Tuy1��u�r5�PgmȲe�o\��s��=ԏ�jq^�#�^)^r�8K�T�qs,.�}��C��&<uP�'Z��Rp�W��B���SHt{���M��r�t�hq�+�'�=�;/.��'�?�Im��f�G1�����|�]ʬ���UE5ʬ�g�9�����]���y��L�{믓��hm�	���)Ř�,��$���)l�I��bF�]�)ґ�z�g�iz�(�P�[$	Z�R��hid
3���p�ڹ�u����9j�U������BZ;B�/��
���z�s)T,Z{#�B���V��Ppe����>�j7t���py�C���.��u�/b��P2��HX����N(�̭�t ���z-8��jo�_�gϯ[�����P�mZKa{C�j4��DyC�Vj���k�����k���
ź}
O��n�_���ۚ<���N���a�W|[ߟ��A�!jl\.�|���:�uTѷ�VJ,Q��<��@}�rj�k{KH�J�<iR1A�,}e[����?o/��S�� �ӡ����~��dR���`_Х��~n`1{�|B��4\�B
Կp�a����u�p����7��
���s�7٧���/�xv�6�҃s�4����?Y�_J���~�ꖲ�+���o!��}5u��g�7��'M���}��oȾ�=}"1��E��1��3ӷ�g7Z����E�ƴ��/w"9�;�|�}�>Fx�#|9��P�|�\�_�L�]����_��/��ڦ���m����|��n�&��|�s���j��Q���V�7�w��[C���}���1�;Tu�c~�՛1�ܣc�/���g��d�O�J��NG�
�X��5��.�(��4xz�1�bJ�����+L���p��;��
s'{c����p|������AF��'�ǡ30��ȗ:�z�*�.#Rs-�6z�+�q���`>��%����}�q���i5����b&�b�Q�,����C���pG.V�v(N�2�[y�
�_�3/@~���wNB�oA ����S�M�ay��8�,�(!;�	�~3�?]������ߜ�̽|�A��|�*(�C@xdN.��\	�(B�,΁i����$������
�`�zNpv��
l��cݮ8���"�𻁢ȱ�����u�Ke`�U��I'vtJ
o"��Z�#Ȏ	�x=m6�dhl��C�js#%��y��z����ӥ=;�O�r=�|�&�A�I7�*Jl��D��e�a�jiI[l`�!�.V�0_ɧp�-=br떒�
U?����,�+hYv��$@ЙA�|p�5P���]ώXB��Ii�H����p���.x�c9;y�߀���7����`�A0���j=���k���m��ͯc�V�hN�rjPU��C�/͌;�7*����E����4���jW����-���(�@�E�]�n����Њ��lr
-��.��c�..v5�f�!k)��ȯhH)�Nj �z�eZ��0���-�̊�I�G�`�GŪ��܍	��g��Ò��@�@o=0���������%'ߓ��[;7�]�>{6*Mخ�����<�>U�pt��q���Vf��+�s���}T�T�L�K˺�U�y\f�q:�[��&^*z�h�F=�<4%��A�&�n���r����WJj����;pHFN�ǫ%䨸" ��w(��ɳ��_v�P
*���R��3��@fr.��vz�WiZ����o1Ph�)d�8�rw%�t�bE>�;���[c̥�kا�r�'(�l���lEq�ܥU��(�I�U�E�+�3�!�Ȏ�YgmL��p�+
���\`�w��b箣ۗ�,�E: !'�e-�՛��K��e��.��&�cU?�b���T{R|�Nj*��v��x˱n�9�
��?E��wLv��T�
�f�J��	]��Ђ;��!��.r)櫊{ܩ�1�pbjey�cW��Z��zk�����;���޼b��z�OK��(��dفM��Oר�I����P'�r���O�+
�s�®<{a�طu�@�!��1�ѻ϶%���w8N���H[���4�5��l�O��2=��RN�3�KXf��r�[;�`ȇ�s���֔Hh�Ĉ�ޘ�j��:��o*Te0��Ԙ�r"-����P���g� ����=:�����;Jeb�%�p~\[������C�·�*�܈�����?�o�pp+JM��L~�C�GxK�]DN���-��#��B��6����Ž��F-���R��5N�|#��:u��3L�����&��%jw�P�1�M���.�%-�t��]�"8�=��!E_-�m2�	��]!}�T��%dȰ7|@�A��[��6N$6	=b�"	Ȉ$�;4D��Z}�--��r�0mx�)��#��p� {�¢ҙ��~��m�s3m��f�Ir'-d����!�G���ks1$������F����Mc��9�o觪�E"S���8�1��K>7�17���+$�X�K��OW�Yj�Z�Ŵ��U	�[�hg�sdb��%�i��9�U����?����4i�Fl�Ѵs�˯u�d���߽�'�A}���
o5��"��o;�)�wPLsy�&�J4�2:�%ҷ�8�e�R�1*����U��Z�̫�4���b���c橙h���k��rg�lu�o�d.��<��6�c�Zqǯ+�"�;�!3��d������ǔ�"�ppyf�e��H�K/�"(x�#+34�!W�� ��6v�az�p�X[��^�ڟ,yh|�2*�3W���~�?��p����4F���b�!}������N���[�$��4%r%4J�mJ�!9���ʏqӋ%�R�%�6$��`��+��zo�Q=,�e�~�h�T&�+	��X�*R�B.\�,՟��4�d�d�,y�qQ��������a��L�I.M�^,Tc/�3�-�=>{��%P�2/�
����&'�
Ĝ��6�u=���q]�V��I�xy�ԉ���SI.a
�G�&�?�ٰ�j�CH��ޅhe�U˺�\�b���-`�0�Vӥ׀�/ZI�D_��x��	� f(p��y6i��O��J�L`u�ߧQ�ӄ��:���(.�ܪ:�Ǯ`�'���p��~i�]�c}��,��y
��2ӄw���^\G\���t-Dxo[�RR�ͥ�$�pg�'��$Hz}�za��� .�l��C�Z��]�H�����'�q���{��V���S,���c�{�1s\��y{�f�p��A��!B�Sܮ�*N� 'gw�0������v[�#�yt��>�Zٌ@��s���ysb��^�#^,��8&\���f��l�{�@2��s���yMq���V��F��X*���%��Ù}*«�5N�{��X��� [P��D�~B���|A�:2�=�w�QF����̴��JR�e.��d��ֽN&��&�	H<�jb�2T����l!ĦQ�Uw΁�A8y��q�$V��Lf"�?���Yǎ�Bs�i��LSPr���
����q��ZO
�	�>.���7���)_��Q��gt�.�L���'J�2�K^_�" fm(�ؒ�c�?ڊV�w4���
d�����:?q�N����5�^��%}4�L%�a�s��я5Q�s�%4L��=s ��a�8�퍭:"Z@���y��%b��2�Y&nͅE�#g=�ķ��#�4_�/�k.�w��?c}�|��
$h%J,���V���E�j$ì�p����~�ٜ�1T�t�u������г91)
&��v|Q���Q�@���뇥�yȌ�dji�F�D�u4F/�Ӡ$Q��]�%,k>���?}с5�W]�s��w,(t��@5{�V�n�n�_g׋:J�B!�s�ė1?S(�;�Q�]G
�H�;�ϒ�#��<�o�mo$
Z��lF����P����VId�׾�,1��0�b���@�>\H~����c%6^�ܖv9�~Nv��t*��w.Nl��LMo��?�f<��B(���b���W���0]��u��r,��iu^��Nt•����:�M|�R��vѥ�d!Y��.���mI]'U��H�ʧ"�(An��]e>B��U����)`�������'�����VB�l���w�8ԡ,uY��.f�z��������*
Md�8f�e?����ӣ�6l����1W�a@øl��$Eg�������\a���uև�����x`^.�vd5C
m՚V���S�T�`����B���]��M}T*dX�iI�v:{�F��̅���@�鸓�,*ѕ��~c\��P�…�9<�uR�X��Q���zC�>��m�vc��ဌ��j��(T<��]��<!�-�0�K��[_h�Y���C2v;�D����l\Ǜ޴:ZĆ9-��)nhD�Hd�4�n��9�K:
^4f��t���u�����;��b�Z���&L�1����%�s������s�.NJ��*���딑n@�ҩ������_E�P)E�$f���p2�<�sޓ�4����>�j̰ШC�;������@A�,sA��*��Hd>o/��e{�K	ZXw�bE���1/1
��{"�54�Z�Z[�+o�4�Z��Kz�ݛw4��I��Bq�
ZM�mţX���7���Hg���h��z��]������,op��#`r�a��_<����_Q��e����Is��)���GÊ]�v�xj�����G�3¹`�X��>nV2��.)’u���6�N��8"��BI7+S0����9:'U�.��M�qt�ǸA�_��@z�,�}`��vy��#��LW}S8:�0�#U�C�_L�| �񞣦8��dW)ί�4�Ѕ���2(d���ъ�}��q��V'C;7&������‚;Dv{�D���r�l��n�d��@f�:0�Ks�$�鈽&���*�'$�^%S����D��
m���z{�P_��$�F0�",��E�t�h,
�Bz6������T�2�Vp$H�_�'i���`�;&�}�L�4���	b�)G�����6�X��9�Ѯ���Gn4��e��K�"Q����h6�b�����5?_�A�F���O��m|=)3��.�2�Ν_�&+m��I���}����f&Lr0y�9)'a^�%�kY��g��}�7��d�N�ta��;\/�EG��]�Y��c�}���ͨaM�Ƭ�rw^#X�N]�I�=��x�.Y�c�m��@�.�o�"EIcc����\��H�x�B*�[��� rL�lLu�w^Ro��r�cT2�d�):�pج?�	��7��b�7���T&��Ø��ah�G!��Oŏ�qi���B�-Y|�X��YЌcV���x��pL}S3c����`n�l_�/8u?:qvf���I��_Y��h39�|���C��\gHyM0���~G逽�u4�wiفR��DI�JȾ��s��{L���.%�fb��%��Ni���E�݊�^D�!TΒpB

:ޞ��ce���5!��`9���M	���ͳ�:��lFK�6�(�
E�2'����mQ���֚����H�i���03��mM�Ɍ�@^m9AiN������t��^�
v��>:\�3��y˛t�CC�aGͭ��o����-
�W�?�k�3�S����(�Y����
ҟ�����b���,`�7Ɨ�.L�v<���0�PN�������U݃x��dYX �a͛!�z��)��Z\I��4+�.J`�S�ԕ�U�rY������g2�����c\RswɊ8Fw�C�u���1?�?�~tx����ᑡ�љj�"F0����\
�\�^xr2{V��^mh�K{?�>�ګl��%��������Е~B��^]��@��C���
�,���N�&>����3�b�'���0_�"<�"�v��--g&�N��'d׳v��؉�`(f��7ݩ�_Bd�g.����	*��L�b�~�$R��aJB�R�������
��w�s`P�~>��9�1��*v�+��?���z��޸L�0�PљP�
�����b|꥾�S��1�qeja�~L���3K�rG�/WC>-VL�? |-�:M���&'(BF�>����P��MI0G҄م�
��
�PFqiuܥ���a��]�(���):��?���@q�I��������U�>J�q]�����b�	.�?t��Z��S��w������iJ�y�6G����t8��,�&��}ĉ�
����2�5r�EZ59��z����M����� @���M�?�q�nC��UdZ��D3��}&�a!�pD���zf�keھ�!q(/'�b�fbt�!~(b�U�"J��r՘7�����9A4�3'�)Ѷ+}ޘ�<8��\��A����Ŧ��H�>����=���c�&u�aS�p&55�)��x	��T�Qev��S/l��&hjB���w]�_3v�M�h
>֏�q�?4�鸞D������Kx,�/+�
�\0�,�y���@��Ubzcb�ӝ`a2t���ʂ�3�G̟/@Ys��M�X! L�5�PK���$�a�J�p����9���8ŒX/E4�)f��ʐB
�%:$�t^��@R`����S��F��R1��͋�t*�2�s�O;>�
��W{��6�	0����M���=:�,��{�g.�z���f1��p���k�����%\�[d�
��-����ΥjJ�`nKkr˟I������s��l��hRO���7���U�;����[�>�t,�F�i�e���s�N[4����y�=�4::�%r;x$,�D)P�pΥ��$�h�/��?�0o<֕;ij�&��
��u�c��I���	�HjC�,��e��1���93�9åjԍ�'��*J<p�&�W��(�M�>��G�=0�[f*=T�
O�Qݒ�Нv�c[��/�÷O��Mߒ[W�����:�r�$�z�s��<��6\b�>
��f�i���Y�d�Q6�C��;��
����}10G="H6��F���C�h�H���
ٕ7]1mpL�J����Q�9>g�k��qJ�$ש��W<R�"�[7S�ʹ��b!hǒ�f��)�`l��Ҟ��Ƣ��4�]Zq����"�R�]����-��x
���]^T!TyF�01�G�C�2�-��K�?D;����忻4��jVh�xk�{%�{��קe�c���E����q��/��$*'����LE�6B��B�Cr>���
/�5��(k����sb0G�.1g|v��=0v�;�� +��5��p�I�2�r�s��z�i��.-7y�4�O�o�ʸ.�$�8�.>�=QG���EUFi�Ĭ��+�LvmV"�_ǘ�4��]@r���n�<oN�ܥ��a�xdU�e�t�J�¡��;s���\�hxH���{ְN�L�c�ƙ:���0z��ost�5:��OoBz�m���4�)f���Z.#h(��ιC�F������8C�LtӤԁs�5p
���3��ܱ��h�S�Ax�۟���1;���ԡSm]ٓ���:���2]r�.��rc�1����ب��e<Ѝ�M�GG_���Sa�k��*G�r��4<w��3g�Xm/�D�.���2�7�#'Eg�΂u�O�_h=�~~1��`�^�5�D�����"+Eċ�����\c6�_wA���L����V��5�q\SqS�E�_r����{'ߘ�	?�E$����g��J����%�+�ĖnSV u�Y=�J�њ^n.�,|�U4�m?
�������'׏Ti���UW�r�L����n-%��8jҠ�V�WkGj.�
~0M���Rei(A�!�:7���`o��9�kZ�j����D����g���n�I��h6��L�^-��X��ϋ�������v'��^A�X�>��~�`�!EIV��M@�W³���!��4��[bk�������d'i���vOP3�8��Z.�>�~G��1�s�-�����W��N����mx�	�0�L�w"�(t�/¿u#4<�_B�ux��'p�QL��^�g��o����m�r�<q�/<{�`�"�O,C�Pۊ�"#�5��6�prڍ͖a�)ļ�a�8���_k��>�6d���4�zTǟ��g%V��2��~�MmaNpI��@�ϖp��"ͯ!v���E�\��q���[�A㡛��C�O��[��'�F�92$����a����/���k�(�6d�C=�/�g��Pө1ɃJ�L���+y���DZ�;��F�ÂĢ�s�.��McTN3�@��J�m�ܽ���*R�:$�3�s-
�}�s�B�A�����Ĭ]u�W)���9�jj?�,���ۭ�B�b�r(8��Y�Z\��b�#�L�ϏN����Z<=�J���\�5���f��jY�(����b�ā(�+�d-ԇRBT����#�b��$����"B��ˆ"m:,��Y���Y�ʰ�I������Q���h��;e�M>d�ř�q k=�?J�=a�1Xʹ�lp1jr��ȨQ��9Ly �j���Oj�dw�u�zy��c�y�|�n;�3�?0��3�x9������A{I��Չ�-!_@v���:碇Ą���R���
Deu����Z��2,	�駄y��e^�7\hqۆ0���{;�G�6��eR��mR�A��{	�F��!�%�%�[Q�I�X>_�
�{�G4�L�}8�u1w���M�#�A�U8���\%s]�i���~��1��Un^�?���a���,Qכ���`F�]�#S�o�.Ć"
�ZGJx���v�&��qL��C�I�p�J�!P��PwVB��L���c��Z�1�6a������m�����,�}��T��g�u'~T���]C�ŷ��e�h�����drC\��3����c�\x��,ڿ�^Y"hk>~���sxi��)K�[�~k�%ۜ�����ѻ�8DuBSw��rTzD��h̩A�Ӱ�
�NB�un�!�$v�
2��=�j���u!�&.WV�7�4J��m�<l&g�Nq̀�:PZd�
veX�hW��{�nG�8�K�5��Cn�Fl
����a�w�pFd�B�ڦ�4h��(#,�e�~Qq�2��������X����"#��"�Z��*<6(nBfc��3D0<��-b��0����L�i�]78�oGs�;��$A��ui��zh~���f�vA^m�b3B31��Ӊ��p����2�0GSm~4�+���h
���v_"@�)��x���As���NJo��ß�7"sK�����;uxEh�T�ʽ	��������5�,���V)L�56��u~�]=%���.$MZS�3� ��p�M�R�/��Ep+f�ʂ�$?vc�u��9�����d%Z����ɒO��h:e����-F���yr�dn�J��y̓�o��$�>~�d�S�ՂPҾx,��H�h`p�A�ݣi�x.�������~�ey��w��y�%���BĜ���2�g4b~��R��2�6e�BJ,��؂�����zt!����zU���.{47��Ob���S�*�6^����,ÿu�1��;��D�4ƺ��@J�:������>�W��0�T��}&��j���+���/R`�h=�<2�g�e��-6gf��g��>'T�,�“y��2W���FFT���F�b�A��]�>�ըX/spB��"���=l�
tC��v�����Z�;;�eI�	�
ƥX�=ܳ�,�>>�PJ�q�8U���pZ&�f��
����W�o�8��<X���� �����1.ߝ��;KRĆ3]�SEu��k]L�x/�F�!>5�g!����r�l�:�Veg���iG��S��CnuR@����#�/�z��*�&{Q� �#nyQ��y�sf ��"VS4��(�Fʻ������Wi!�
�*�^k,���$�t�G�msҝ��dC��f7qY�ؚ����r���bF�5?b>��`��mcާ
��	���~��H
Yu��t�N��Q��T�~��
V%��_e�:�u�(?��]:�e^�{(�p�]RKA�b���^�ұŲkzBb�f��ⶱ/�!="�^�u6��
V�2���Tނ޾�B,��]>��ظw�x�Gr��AASVJo\o��;�.�(J�a���s{g]�y����(���t��v��c�.�/2ǫȅu�'��ˍ`f���Wn�?���Zi���\IB�yh��!u���|J��M��bSnW�Q"8`L8���w�W��8x�<+PmB��B]m�p��aڪb�:����i�k\����+�m��CB�,�z⭛��F�d�0@BKy&���K��>B�u4ui���2uE�6�j}�R���}�<8�P5�T���1�����i{?��J6C���XN�zx/Ŷ��
Q�9�8������AFˮ��N����su���b�8G�vu���Ҭj�T�j1+�|)��oV9F�w*��z��20�ڴ'�؂�j��c���#���G$�\qj��FL{�FuF��,淠�*�+�_�/@/�!)M8X����ޅ5�t}�ݧt8/������	zpv�w�����L-������3���a�}�����؝�8�<0�=o (Y'ႁ"U�gxs�ݔ���cgzC�c����#��-�
��j�_�)VWE(>��(Z��<1��'���2����l�� �Ts�����al��P�
"�Mf�^�`��&ˡV�L����؜�/��ʣ�Dh�_��|������ehP������\	fr�W�7F�f�3C��g2�]�:?Bf��8^�H�ޠU\��xM�R�^0w���ޒlC�ٶ]i6�Th���k�K@ǎ�̀2�Gq����ё�ã�߇L�Л��ȈV�>�R���{�x����a�}FGb���~#�~k�E� &�����b|�"�mb>�7��
w<z�nl����	9���_��$�1�m'�Z�>��7�nD�0�W�"�ǂة���A �������~�f���=�3� d���+�E��CW��]����ex���RZ�6�(*],��Q���GY�w��%��*;�Ԕ*���ɞ'pQ?�Jo\���x��֋p1�:�4Zd�Ҟ�%��#�=C��n;��r�x��Z����O8C�I��R����R��@
!VC^��>�%�u�
��9��i��۸����x.��g!e�ΗĄ(
�m�oG-���k�w�������RT�3CP�+�<�®5�m{:��{�Ǝ˕T�Ah��[�ρa�a�N�\I�PF�~	$�)]d�TD�
B\���B��*
� �<��w�˞7+
��u9���ɶ���YZ�Q�hٯmse5����6#��t�(�1�+�e��o��L#���+��u���ifG6�����xp����"b�)L:�t�qP��/c�V�N��3{����Q�*��QQ���s�	�X�	b��*�݈|�����*��d��f��l�|I�_6,3�;ȳ�('6��l$�����L/��@<r��8�%�?�rj�)�˿=�钨Gn}�%
N���V�wV�i�g{�'�S�)�ږ�T��/�P�|�jr>U, �q���·�p��B��5�Op����u����x�m]e;ufD�x1�,��A�D�s��5-S������N��>���=B��h?��>�~��A�~�߂B��R}2^>���XY���s��1	�3���c���
C�'��*>�#AܫZ/O.i��M�h�4<�o����ḱ��0��H��ђy
�1�:��6Q���`�b�0sTŪA�ƮZtb�=$��0�kn�4N��YV�۶;r���in`�
B�[	��&}�]-hn
x@}5#o�f2D���p�r���[�/X��n�SC��) ���ѯ�bCLߥ��Z�{��߸?����v2�ܚ���mO�L�'�#���`#u�"1奖�x���H�/���)��?H���A�n��P�Q³S��&A�퀐o?C7c
��l����[&����dDGC���y&�uĪ��z�7گY��W2g���r>�?c_L(��Ƃ1�[�M�e/�EoN�!<U�S�A�.!:�˵�'���NxM�d[��±( r>)E�#�$U��O٦T���eN8�`�l�" َ�xS��K�[��0Jlaƃ��Y~37���	ć�D�N#�Z�����Pv�����W�SQ�/����IG��r��X�Z�)q�������WT����p4R3v�;��QcgJ�:���=��	�B�+�v�\��e�����d�y�}(�Ю#�&~VE�e��w)ݚ/���	[���
Y��r��+ς�$}w8~��Xʈ�\KK �
5��Gx52��Jދ�#���@�Ƌ�#>TQ�^�Ҍb�d�Qx��f&�W���=�-h� ��ߌ�1Hyꗽc�3��"���x��+HE-�����ʣ�������o
���?v�M�,�>�D���
�J�^��ͧ6Ǧ��ۮT T��a�{h�C���lg��zl�]oY��~^j
���y�[�����E�,ջO�n�S�a�N^�w��JI�fzU���IV;��7�u���5<��l�Wd�U�'�{n9�j���M�}8��������]��(=S��3V�7.����Ȫ��qu��iوZ�\�-�-).�-��z��ܹE5�Zv�ќ��U�pihӸ�n�Zsә�˓笋�����?}�A%B�Q�^6gl�r�.��D�r�A}�OQm�a�<��S�u�W�!Ϊ\s}���[_EǙ�i��4'9
�M���MS���^��
C���M�?d�i|���!�Bm�W�Ѭ�H�(ԭ>��x�����f��A����Zq�QYB$m�2�Y�`'\�g�bB�n�bV��/��n3#3O���P��׭]�|�rDv8ۺ����{.�!F ������J=}��B35��Η���{���f;���E�Sy�`�?{ET�a���MN�d�:��:uf�$�+z��L��j���z�`��p�m}MNJg7T(S�v()^�Ϥ�#��jQ=8�G�4�e�'��@��,WńN�vl�]�5q�u:6=�cJKP�YuY1.��^gL�?���n"G���T�TXP?�<k�IW�MQq8>��kwsq֛Z�cc-����ɦ&w9	x�c��V�MX���\&(�|~���#�(���I�Q0�(�|������J�����b0�[��1rh���Б�Naukk-�L�
�J��[�������<��*�&T��z����z��f��U��1���)�%������,tb$��a09U'"����
�5��o�|5�d�����l��?��R�fQ㞟4(�
�]
|�Oc���ԍ�+c�����D����.I"zQ$��:������6�W��S�Ƽ�N�
5=;�
3tD?� ��48�jm���R�gn���?���jQ��H2����A��z���yfP�I�h��bMZz��1��@����w�F=�1���R
���_��D�>Ѽݜ	Ox�҃u�}"V�Be6�W��蝩Z��f�w���A�6w��	j3"eOj'�SҤ�ܧ��b����b�C������vQ���
ZO�ny�SΡ�d������a�7���4�I{)���!�����e����2�U�#��T>�Bf�E�Z�[�]�j���Y\����H��C��X7��q�����@I��s�/���mw�0#ދ��!�U��'l`�	�F�n����%(���J��K��,^ǖ�ֈ
�J]�F;t���`�����-F���Sr?u�����+n�*F��z�0�O;����~�
�U~\Q������]V-��~�;/x!��e!�63�*�.@�#hˈ�̦�r=��a3ZLx
G��}?P�
Oc�z#
��>\C�5�k|�jŧ5�E~�o0i~�T�RkҌ��]����AdV��-��F�?�(����JP�*G��:�}:�DI�isZ�ЮI8?�წ�#-�^,�Y"�;i�M���,�2��M�>��c^/��~��b��_����K@�_��PD�d9p�X?�}gc&^�ݪW~H��dFk������2�1�I�*��>9�8�����/�"�!	S�E����!�&��<��ZLG�?��5�
�a;m��'��X�x�{�|�n�y�D��*~�
]Sm��s!�q]�PgYWn6��������9��'m�|�J�`cz����U��o�03'��:Z���ۢКR4��W�%'�k�
��6�I�C�խrg)��<3Y�ܼ�,w��h��Jr��N@��������5p5���4\��^��t(B�f,3�6\t�ڨ�{a��Z�a���-�7J���������N5�M�Lp~�[�ʋ���K�N�CX�"�"�^N/^���.y�u����nJ	��+0��B8��m<�ϲ�␆���3��X�cN�=%�����y�lz`��C���>��צ�b�pg?6`�y�Ҵ��b��L �ɮ����}�䵂P�L���e�V������l�a����0B7�Х=�8�>-w�ģw��Q��k�g�k�q)Ǟ��Ķ�'�6qyB2�6$g��~��H�I>�>���"�ǫ�-LZO2�����|�a�Xx��|���Sm�v�|�W�1ć&:�1�+$�$+|&:��3E��g9�1�c�H�?|+�����\���-�[�9���W��ś�L�nz�n'�-���\���γ�&$c�Dp�T^,�/J3Da�ȿC��5�_�̶h��T�p�"3�nJ7�ŋh����ޥ���F�{w�=|�cT<�ύ���n'|N�h|+!9��3'ɪ��L`�*K�Of�	��Tkx��!�� 3����]�m�Y��#+�K�8��{���y���T"�H�ml�a-tFC1�ĺ!�f��~�B'�N��LM>9���m�(XU�a7�47R���0����6���G��? ��DX@�#X��x�I�X�h��`�b�����]w�sG!��$�9
JQ;�NgTIes=x
��'-�Nzg>k���C����K��l�BbT0�?©�����?��]6�W�G��9��8��i���8�|�,
��$Ӽ[^G�71x`����G��N�[e���Y�HǞ�'�B����]�ё!�8�A^䒶S��[ȁ�
�����0Y	��^U��jl�z�^��-"ʝ�7�:�Acv�v�,{Q�'gL��ENĿt�qW9�D)� ��&F�`<�J6��Xsv�6əy�/�	����=�1W5����c�I�Y��H�
(�nh u
�	>]�_(4��+��6��3%��*�HKk*�0������|P�d;�"�g�5U�)Ud���:�&�2�$3L���[��+?�\���)/dΤL����n耬���\ X@q��\��Tbo�pn��#E��UP_�X�l���ZJIB5���!d���jl͚�\��[�;����Z®
nPt_���� �*kp��ū�Q�
�
�DB�Ǝ%P=$��̿�S�ᣬ�?�x�?HID���<�v��d��W�`��,I��_�J�c���!_d�_`"W�1Z"P�b�?���.+$�it"�Bq	RٌbK��*�Pu���O�=����bB�
E��*�R���_w�G��CC���c�X�,n���b���RcJ;���nfv��V	�S�3��<�
1���S+�Z��b$����1M�ͅ6��=diQ�-�_�e���":]��~7�O[2��=����q�E2��<S�'�����
\ЊdS;�)S�uh
_EM�(ݤBc�_]���^����T�3ڥ.x�c6p��ϐ^咟y�(ܶ/�pU�l(ϿN�v�����R�f1���~Pp�5h.�8/QT�<�o����Ю��Hz���7׋�#�sP멖.��p�aP�q�q�V��^l�L�qvf�ɷ"�ΑQdKٝ��tGY/Fy��v��xbK�|��Éٞ�;���
�VA�B�%=�ގq
��(���HS���S�zW�@$��M?�Vg���ǻ��y�PYCݗd[,ϗc��,�%��u�����ŌeZsʦ�o��T����rb ��'".k�j�ރЖ*<n_;y��jQ%���[h+9�װ��I�$*�Q=�<{�����O$�q�i�6.g�������EN6��8Sn�����e���)�-a�:k�d�و4t���dS�������#..��X{���C�����!��ݟ���yym����b����\�:\��'�7�Nd�� �l{1Xk��~Y�Ə"�[���G�W�i�v&��۹�x�����VÛt��6N�M���KI��Kh��ZM��Pq����w�aM�TR��4��1�m3�
�kSL<-�G:|�b�h���ʖr����$�}a����$o��/��;�ֈ(�;��?Ϋ�o��NF����D�WFs�t�D�Hȃ���uy�8	q
QŊ�"���lR��x�����w�Y�U��u|
�A�s
��N�56�6�:׼5�X��r��L�+ɫ7=�I��|O�6l�9�u�h|�+_�ga��%�޽���{�Wh�o���0GH��I�`;#ܝY$����-�u_���N�����`uH���!gL���7H��ׅ�l*�z��#�8%.��/�[-;�B���m�ǂ��\�9[��l��o�C��?r}nk��G��Y����JC|�-�\�X
P�yN[�9�U���qj�?�T��y���Y��[��q�K-�H�qo�T���Muk�ᅦr�[�cx��&.��H�i؏J&�%��ʬ�*���S�A5�<k��]���S��`
�a�
� ��Y]��|.��ׄ��W���fÑ������N�����a�םaWڝ2�뽘ȽŌk�e�h��	������ꝅ�ڻw�q���J���-��j�3��Moi�:;�F��/�i���SW$#�t:��S��8�&�8D�94�r��ͮ�6w&����,��~p��ho���}2��(�2�R�g�iN?�$P�x��_��_]��c��`�� ������id!�3G={�K��t�J_�^m�w09|�d��_�ͬ��4�N��ߦ�7=T��`��X��*߼��]�E�3W�{-���_�ƥ8a��q߇KS�N,�+	H�Z��-..�ޜ)d;D��yS���]�’���b�o��y�s��4\����r���=����J`���1���Nf@|/�cQ��'ɢo2$D�|�n��_Hp�f�U)�PiBk/��o�
��Ӄ��=�n1%�����M�]��1�8�-�T����J��k̤��[���c�U��e��ڍ
� ���������y!/#9Q{��hֿwI&�����ݗ)��{�m�PK^A����V�J0����'+T�f|$�>N"��d�K��X��D젫��zE�
���7�j�n�Ҩ�;��۫�,\g����[�F����n�d�6���g	�$p��ɀ�d�1f��ͷ�2�Dz�a/�y��'ߢ*�b0P�8�P+*t=e��T�Gћ��E\[<=ܦ���KO�I�9�b�K#Ȳ�f�"(���Y���C�l�|��c��qZgu���X{��jʃV�Oz(oQ��f(�Qed�t��!;�R�1�XT�;z�=|A	׬�������j�)!����5��z������m0Lox�  ����k��[��ӓr!�.���ډ�M!v0�Y�Yd�Ch�Ӫ��kz�̞���zc	d�h	M�h������p��q	�a�*�T�/�Kr�~�2=�|x�C�x�a��კ	�L��Z�1}V1�"��t��{���������q�K�Z+����\�V�T�-}5�O0^/�~|e���ϔT??$�s�v�ȫe��\�}[��L��6��u������.�'���\ʉ|�$I;Z���isjZs8�tO�)1���$S���
�S���K�zt�J
~+g2�#q�-ۉn�e@m;4-���}7]cpnZA���4�*ap['��.�Nj�ύ΅�t���h{<�
�mbW��[w��.����n��>�����T�ܹ{�S�L��Ug�{Q���ÒR`�~�A%t�Q7o�A�C��!R5��y0����F������m�d\qs�7���n]`����{�e��y�%��ʤTR�22Ƈ;-4�� ?
���]j�J>V�r9P��q�� �h�7m���h�&U/(�����n����>�f���EGH�A�(b(��� ���)������C;}��C8�7��1��	�PeK�,��[����˻y]�K�;06hR���
�VN>����,D��VNr?�Dű�RE%#�\��,�R�M�5�>�����u
�V�}X���-�2��߃,)�<r�3�9�ge,�=DPnʽ��q��:���,���1��Q1�=����I"b-�g�S�� �%�y�kĦ���;A���M"��B4�����7������u�I�ZA�<��x��E��E�f��M���u7��2&
�ySb,3�cH�{X1����)��6�˫��0]�v#>�7R�'ر䧯+L�Fq�5�٫�w"6����T�H����R�g���Pܪ����򍢌O�F�G�/��Ă^a&<�d�u�rkq������=�q��P!|�+��}��f���F�rJ�/,
B���M�9�[;~�w����(
����uN��7xH�o	W���
T��dH�EM��H�֦� %3� ���:��$��:`g�,�l؎?����¨�c�ƊBѡ�k'�S�a"u��+~�Hь�����һ��l$
�9A�i�x��J�����xT�I#�ƞ��e�)�)�f��ݲ��S	��+����Q�$�o*�S�{�8���{C�3kt-����)W�$0��2����ԫH�㍮���:��ԕ��S�%Q��E�~���L�R&a{��l�:]'b�8$��Œ2�t���lڧɼ�V,���?'�J_���>�G���Tk�;G�!� �xl��qm���՟�Vf��V��ݲ��}Vf�+�z����6cҏ����xyz�Hlڸ�$��945i�;Q�<:-�BG�h	�zcY	�w0�e���'�](\�
;cn
��#�_�l�c֡-x��{(OM4�c�g�u�^��;�S/M|w"Ŀ�v2�6��2�o��}tmU����
�U(80=�f����c�$zs�6���T�34��X��<�_�3"?�(|T��zĉ�v�;����i�B�Y<v��R۔µu������/������T���S��AWr�����l���h�gU}��5u�r�Z�5�g�
�f�BavY)��3���s�e�=oiِ���('%%��A0!ƞǮ��^D8�ķ&�B
>��� �U$:��gI�����­4̩�ނ�kx1:��C�h9���t��J+b`ؗ���H���Uk���G�'}�h�g��-O��.
��ei�[ڒv�M�9à"��	Z^(�l쉶G����=�f����
�
�V5-��
`nB�}�G���v�AOB1E`����gJw|Op��W;?ZBU�-su���{����[Z��'`eS�8��ڿ�[j�ڰ�5��f�������`�C�3�	\B4�-���1Ԉ*�}�����C�/H-���ă�~����_e�Ad�l��!���L�&d7�&ֽ�Ou����٩a���q�c4������5O��D�3��Z�������"���b+�����ۈ��X�+s���gA9�n@��}ӫ����#�Y!w_�{�B�.�xmO��k�褃	�ݴ��
c|�=�2��U�N.����1ueh9����$de8
�oJ�c�ɽ�G���
�$n���Wܸ��F�9�F�n���x�݁�x.�V��M=���&~�ȀQ��~�3ө!�R�Dy�~������y/B]ETEq�k� ��dI�{Ax�㔝��3����E�m���IɋVX���%�_���&�UnNJ�+X��h5i;��m���e����ia�@�?�Q�Zf¯o�W?b�-��\��c�Q�2��A!&��h;�S:n�;�?LqI_��Q�1�$��r%xf9wQI�״�����f�8����EP��sG!r�&Oo�����>��4���.�Z���NF[_�Khj����]�,����D5�m�5pE�/�\�m�ԸLK����l��5YF�jBsئ�n� �����h�j툐����pn4���_µMt/I���<���_��fY�-����·���3�cL���-��6$iG�6�i�f�T�su�g\Kx?��!���aف��:/������P��$I���ļ�^|�!gi�	�}�k?V�ؑM�����K��4��
sǥ�e �q�mu�'[�Ȩ�C��k���Y�Jw��ˡ=�}��Ē=qͤ3�1�9|��;5�/�u��f�/fK�|�:��J<��#�L�Bjc���C#���".�[��)&�:A.P���_eB6��"��sA�SĘO�T��K�i���Wa�RJ��3�52$�������\\9�b�k�y�%��{5`]ڒ�^6��Y
��n�B�������2´�*���A�G���L�!\�Jr�1IXS�lXd+�3k ��C9�~��s*����꧊Eu���b�8�u(��B��cD��ca0���a/�N�N��F;B��Y�k�2P���P����H)~Y���>^ή�q�K�p[����Ў���@�=�	�m�8�1�,��"��U��.�RY~ عvz�x��$��gy��I�-1_c����͡��'�gV�%�q�53�M
�)��x(�C�*w����;$9����
��R��5t8���^��Gԉ�E�_��%<������sK��aJ�����J���OyB#2��!u%І�{T!b�@!��]��j�m	�~���M+�Z�Z8xE��L���DhO��'A�0��)��!�s��͙���C[U8�q��Vcx]��?�7>($�$>j�h��$!�Bm�4��aJB7S��L����Bn �c��J�vZ��a]��y(
�ߙ��w��.H����'0�͜�14a.��d�|@��Z�9̠�'��#��	��F�#�Wo�[�!2�+�c�Q�C�D���kj��"�!�{Q�����d%���A�F�'Hx�
v+�a��ʰ���2+7�swi.c����D�i�ܒQ��t^HO	@�9
�|�KO�U��!��s
��xr`�I;*��P`��'�� I�L�ds!�ž v�N���
��4��Ч|�ICx�x��A�bJ���a���b
����ܳ`��CW�1��\�a ӕǖg,=�M_١{W�)��)|0�V�,���40�n�D��M!�N����1;�n�D��Θ�sf���
H6p�RZ�C7�ڨ���,J�t1���&?F؄Zu���2Շ�K���k]��jJ-��vg�\p4�aV�#��/�Z*��f7�t�3[�M~_�q�A}�޻Q�sƧ�ڙ/�#�Z.�#C�뒖�8���o�_g�������ya���3���������F,̓�rU40ˇô�E�
b�5M��mL�@JBMVVA)T���1a�U+'z~�P�\7eG��>��t!�
�:\���K8t\�J��Q(=>Vo'��dvx(��l����fCQ�����9s����k�>*[���}��tܙ��Il1>��Ԏ"[Ġ�j{�C"���0\Ipf�@�v2B���9 ���,��S1�6�{�nLZ��mE��X�m�&�	R{�A��GD��G�	�c��b��6�6�U�J�cX
��hqۇ�ʟ;��p�}u:�1t�Z��O-Z��t�=7^�7(�֭��3��+�;���`�~�����J�+��Y�p�ӹPS�"�]���x�Z=K[�x3��(�f)�כ��yϋ ��jl�xtRk�����\�m�f_|Qr=�6a�� �8a�H�@���z�Vt��L
D@v;|C��9���@���U����m�j���S�K��e���j��mJ�ư�)�[MМ�B�y�*�J,t��\��4wr]�8���eZ�d���2FB����/\��v��I�l�(.�/�#���8\&lA�k��J/���X�R+�F�u��F�5�!�_��.ޏ8�
9���䕠[�W�=��BĿ�P��dny��ǘ<���9��|��HMɸ���T�J����Q�7�_>GO�q����C���!\4�T&r5@"�+����Yr��ͧ�Z��bM���q�[�W�t�MjF�~�O-ԁ�/`#.G:�٦��Y?]����]�m���I���B�:�\�C:1,pnV^/�`<'�l�=2���m�F��ڻ��m�+���o�0�i�oN�K��������#ƒ�6
UB��urP��VN���k�Ϩ��)C;;F�}��bs��\��`���þ�#�b�5��b���W�����������7��������wX["�O:��W㌃NY��u�
�����{xDn��vo���&Օ���3�3�Hٍ��xsF���
5�k@�ܟ���Y��d{����ؿ����X���Hv�30����5!x�K�(�;�֞7�)���+۱J��8�+?G��y�p~�x�m���'�Zx0�������*ȥ�z�x>V�����I~PX�O�OkBhh�J�$���-[\���(7	U��)�!Pƍ�/Ϥ��O>{Drb��|��||
tE
wL#���C���@���H�w��)�]�E�i&BS��^,Ze.�KAC�~��5u�GWFœ�ef{���Sk�ɜ۽�g��c�VP����$�(��>y�x�!��vSΡx���s۰hiH�>�r؇Ĝ����h9��'��>x�\->j[��
lf�*��8U.@���� ���ʔ����ĊCa��~�p�=º&b$�5,�%���qʾߴ�xg�]�{;nZU(��8�X�m�#�:
h�{E�����H?� <�m�/5�(�[��H�A@��U=�;M��n�+�6�VE �`7�~�I��.s���>��G����c�ҖB���,U���=g�y4�on�s����8`�Y"s�Qe� ���j{ �`���2j��ؒ�̥rZ����\����`_p�e���W��E�Gr@��ޑ�d
��^��\	����y[�Q2��!��Jj���׺H�I[��QOx���r9�߽& ӱ+�sq��7=���Wb�ۂ��\n�1caz�H�"���R�B�0����F(J���,�}�C�kq��q�,�Uk�+k6\tm�"��\r��۷,��8��=:������q����aG��D�`���������di	Gl�
i8�0��GN����
�R1���ʇ���h�����&
���.���I�c>,�2Ʀ��'�D�>p	�.�CY��h����'1)~�7�|	|�uu��ώ7^'��X�\��Xli�ٴ%\����v�;��`ǎ�/�uV.Ÿn� �3�+�8��F4P6*��͎Я��
����|䗴�7�y��[_������V,��
�D=�W�f�d�%��-i�S��$�Y)CpC���΁�ɝm�:����t�IH>�N-<�j��8a��Q=���ɉ��+�rf�K?bj,�Jҟ�'��i�Ε"�*�a  ;X=�	e��`S�3i0�����k}��,��@wb��B�%2�o�&�v�7��� ��7C>�J��(jZل�h4*N7�B}7>K���]��U�F���/K�(�!�&�.u�1u�aShCq>蝧�����
�%��us�ZŜ9����c��>�c�%n@LA?�X>QPjk�Y��%�b�Å�ێ�>N�7\�	\uv9�K��s�8Qѻ���AH�x��Ptx���/(�`f�+2�<�K��\5��ZS��Z�{[�;��S�DȢ<�h2�
���٘�;�ך_}e�3�1!���-�y�>�Ҝ�B3?�<�>̛JS���阄z*"�#;�t���)�ws������Ӽ��9d�r������m C���1�잎:��{m�=�/�z΄�$���
�Ƴ|���ӭH��I��Z2��e�jlg����
I�2���s��Z_|��	Z�2��&�4��e�A�H92�h�|I�����JT����^�@�SH��k�8JQ��H����n�gdz�d R_��9�Dm��EE�m���t͂MR�2�ʴf���oi�U.�JQ�lHW� zd���+e�j
ZV����n��j_��6)TB����,U�5�8iu��<j�
ž��n�(b0�m�ڇ4{S�,��^�j	����Cj���4�c	�I��C��� ��N��v�
��ЁXx�:Î�
mw�M�=rŢbl+�V/7K�9\X�P�H��bΔ��_aY!F��+�|��,�$.A�z�7�V�j2R�+h(e��5O�AP�#����ʍS�4��rB���C��>��W_�Cl�Rd�t�Y���uw�n�[��vom Ea�+M��i�'��L��W�X/�	�
��0�6@K��@nS�h`X8�;��R3qi�F�鸮%�-�e%����� rK���mn�֙c�.�y�t-+9��n��d�B��EZy5e+��HK������6>�j��X����V$���&j�'醇��wU�	�j�\�"��G�G���Ʊ�C)2�a7�6c|&q�ob���Aw:�m���p�40�&����ۉ�������{��b�8� t�%�2;b�yZ&����l
�{��| �\�z(۬�js�f�_��z�'��z�9l���y�թ���)�7y:cX�.�d�ނ
��w�p����j��	|ab���b���炄��g�d�~5��#�H�le��m�t�<^�s@���5�cyވ�g�V�!5��,(�O��S`�.7��1$�����n*�;
�!,����M�+�3c�ޑc��TGe}������ҫ㤌�Q|�ّ�х��ޥ�<*�Ak-t� �cq:>:�CI9-�*W��l-Z6"��֞PX8eߑ��%��bk�4)��+�y�BCЂ�/'>)-(���?^��
���X"N�����酅FQf�Ls�+ڱ�%&[�'ʤ��e�n���K՟"�RX���î�r�g]+��sx����O����(<Q�^Xj�T)Y���c�(�� ���(��l���}�qm�bJ���Q_�P�z)l�X���w���S��ԟ���*�q��Q��+Z>z?��� ;�
yU�
��UAr@hI݁���:A�C������1���.�Z�b��h�;�O�>/XpMlT��zpL�,�2)\�P�A��c!Kا;ɺ�	�;�t1>:=D�I&ع�Y[�:��(�2
��BT �~�����,�V��2��
(��l^׸�@�3���EX��hp����-�$���/�g}�ټt4�E7��ƹ��m�66B����F���q���8BQ�|�Fg
d
�ؚ�a�p6��]�bF#z^�<f
�:���ݶ3n���\��뭜θ�?4��V��b8T���_���}�JCi�5�x{z���	sh*�}�_���r��|m��
�H&�����0���'���
@T����>\"9����BgZ�4t-@��v�*�*� ,5�&����uP�9%sq"�*�2�2\p�N��c����
�$���
��7�~��0���5'���m�*V_���TU���h?2�z�I�"%��2����8���=��3-�
H�O �/�����
��g7�P�$?�؞����,�w*�o��T��l�=bx��!�c\3q<�ܻޞ����ld�m��08�--���<�_Dr~��2j6Ąu���l��:�ͣ@����,/@Z��&Q�
�r�����CE��N+��s�f�9��~Q��`���Q���&��.�Š��x�Oޖ������~���S$@6�.�e��މ˜|�e�����`"�%�H��%�l�/dȍ�P��ı�9+��� ��I~�5UE�
�FXX�y���!�I����I6
D��c���yp��{����t&�PHr(F�Q|�L0ZvXM<�h��l�[��^�d���1�ƽk_Xׁ�c�=
V��a�k���Iu��x��G9y��w�Y� Ӌ@!��s�n/����@������LJ��4���a�����d6��l�.����>����j�
o�{_�����C�mۉ��`�=�^�����r��¯D^�v�ϔq�ݳ0�/�T��13�L�>d+�~�R���^�r��4�<yh�∂��)�ٞBRl�Zx�:*�������O���*���ؐ�<���ә���^�X.8R���s����LTmTd�-�F�Y#~&��r�,�0:nN//��u)��U��:�e����T�����\�J����
��J��_!z�1��mY3?��P�:(������M��zp��9�"0��a�ܕ�H2�.�ѐ�̀�BT����?��Bk��6n�`
!-✩U��q���6j�2~�p^�I5^��qn���7���`�fx��`�D�r��֤��Sqx����]%o�\T�B�2�U!�T�}b��X6n�ms�
�ƒ�^&�H��v��B�j����Q�L�w�Ee�e�b���^P6��*˰�L~h�-��" �_��R�!��c�Ɍe'�A�W
{`BIH�'��ď����g��=d�?U���o�+��C�:�1��g�.'�1؍:]t��K�جf�{⛊//% ,��˯���\�lHN3�rOv�z�|��F����o��V���xU�f�`�2Ja|��e����Z{^�†G7b�'�qk���r􂩭�Wajh�!x�ڵp)�ݫpY�8�%�%Յ�y�I;|��	H-��}�Rt�3���9S�*��s�qa1Z�����ְϋ��T��Q_����(����=��� %���-�H����_�v\U�o��s��k��^����Z�S+�e���g'��rjL3��	�v���ڇ���d��W4gɽc��Y
֋��
5��ߖ�-�d�l=L^D��J>b*��8���LD�?aa��2M�q]��I�NU�r')��Ă�ת�J���^�5eK�Tvl�cT�M�4w�r��{���.��1�An�������V>b��T��rWZ-�|�ۦ�[���ڦK�T����/�0�e�7IW��(�u����"��/��h�̎!����t/��=o�KL�*sW��C+&
�a1ܮ�-r�8�d������V}���*7��9„T�0gO%���4t1���E%gfriL3����By
؅>�+副�j�9'��+��*�E_�a��-�Y�GT��+6��0a�1*_�3
�zJ/Fcm�ra�:�.��˓�~��||��
��,I�9Î������1���Xq\��+�8Y�l�cdj.���sZ��5���P��}�n�{���k��E����E�H�`�6�9{�cGM�w"�`�5�{Aeؽ�?>���̅�7�n;���w�6~˨� .���_u\CUӨP-#���VV��8�?���=`ɨ̣����#��zAm�6/j��{�Ǿ��]��tu)W�_�Kt^��6J�%��r��he�X�R���Wv��3���.��;�=ta[t�r�w���N���-��K���$}r����o��9�,G���>����R���n!�R���E9����3n#����,�W�.ft�I{́�ET���ᛋ--o�8g.o�xX��цNfyP'�"5�>ݳ V.����nP�M�DI�؅���ْ���OJ�3�6"[�q}��a���쇆�Vwng�:�wڜ�X��M*�W4!=%�,_��<[��*�W��W�w���5^��@-me�4�8��s��|t��2)���A�7
����7
�3�Q/*b��̇f�,?o`���_q�J?=�"�^(5���XL]��U�W�����^�ل��8��ɢ��'��FH'�"�mοl8o1F�/X�YB[G�ǘ���zU8�dS��6^&pצ���
�W�"E=��Z)�Ǡ��Jj����&S�8�<uB5�;.,���17e��O�(��k҂��o$c:ŷ����F�	08��kY�"L'�s���E
�`�.�@*G�;� �}n�a�w��Z tj�!�w�"�:FQ#,ll!���xT4�QW�H7s��1�`�Q��ܴi�w��ű���<Ǻ�,-wo��Zp5	�kJ��k�x&�=��:��aYEEy��z���e<]3�����y<dbb�I�/�L��湚����U�����ή�W�G7�")�7w7���׋�\Pl��}�?A�P��F3�0Iw|c�����.�����\D8���w���ݐ^T\'+�@l�R���
�����>+����B���ߩ��8�ޝ|]��qb�6J����;���t[3�գ{O�m�;���R�(˜�Ee�2sX�!}� �C��y������Z0�6ЧuM:����ʪ+~�M�mc\6�w�CVʅ'�va踨gF������PB1��k�y�ȧT���"uS�}̬��$�隂>B�^Dk��t+D��O�Ϥ!�Ҳv��@��)$d�����w��2)�j+����q�a�X6�3�V8�7pv�$�y/��iH1h���1M�
�J���5{Y$<�K6`圡M�uZ��NJs��Ҵ�Q��u*�`5N���մY�\��ͬ�-^n�m��Q�7N�Z�?r�]���Ȓs3��+��bH튚����I7�G+�Q�����ѮU������ң�p�$J�ؓ�=����(�~�8	w2�"5������͘,�����c��r>�淗J�O�#�ό-X�Є/Viԧ���ញAa��T��f7sQ�R����*8�8>�iـ�y��/I��c�G�Yb�ln�8zF(ϔj����"�X��A�ޱB�C�ބ��C
|�
 ��X��U&�s;��7���4��Z�-�3��'��ӈF��Rܢ�΀ ۿ*zi�a�za����]�׏��bũb���^{1˼�xW�n�j�	Q�TE*qg#�Iڳ� �����線��3|��*��D��j&.�X�ؔ\��
+�S�K�,��e��&T�o2m)&7`���q�^
�5gY�.�c�i,X��c�Z�h���q�<mZƓ<��U�T�h�	�0b>FS��@���º8*8�b1�H�I 
7��
^�v�}@�鉷k(Q���9���]y��]�F����3�e�Z�*��gn�¿�=�������Я�I�T+���M��SW�CkC�swr��l������ˏ�ֱ#�T���C��{������>ЫV0��W������Ì��/>s��ک����2�6�|;�wd,rY�ܵ����WW\�.�+Sy�Ñ�̟u�-����f�]���2u��
����SE#�l�d�1Ϡv"����}{�D�Ac�]�s�\mz�H��*��7~�?��[�.��0�Q��ӹ��c3U�[��[(��O�g�r�8�s�Q|��@��43���43#�Y-m��0��-��=O�N<��)b��'���w�e/�m�gҨ-V�/���h�=���<o?pk�LezE�]y鎞�Y5?�la�q2���	3"w���G�m�cY��tq0�$���r*#�C�W@�	��ae���,���~Ѳ5�/,�i�������7ድG>L��%�����qFd>�n��b�bP�_��'�ƞ�%i��Ԯn�wDYۧ�mu���_3�K�n+~��va�&^�m���5l =�NЪ|���:�|�
�u�5�3�A�%�@���k���K����2~�O>R��mwB��p@"������Ħ�Il�B��=�^dODYP+��G��@�)U�ߡ�8����†�VD�g��Bu��lV��ƿU}��@(~ԸU��J��T�g�ɝ���%b�+��`*:����~3�W��B�p��5g��H�Ȓ.X25�;�����+��b�l�9fl�b�~�5��[��%ݚ�6br�,����5�L�3��ҴŒ&�a��	��mlT��/=a���
��_&y>"E{��A�J.Z����'
�� �7������,=��߉$'��%�+�3��3"��N�q�lΈ�����M�mJMt���� ::�諜]m����k�?n�;� �&����es7�bA:W,�5V�6$X�bz&.m�و�cy!�e}k_��X��n���h
%t�[�L�ق�MX�4�-���"��;0���W
�qҋG�ԝ�Ϭ��+3�T�*��)�괧�L$��U$�,`��cs����C��3���O�*�'.�Of;>ӆp��<�j�t1?3��P�q�]���{��[m�a��ڝ�b���I����pI�y�����c��������SwJ���!Sp��0r�>b���w�a��W��Sf����|@cF�Q�D�`�V�,M�%���P�#oN:�^��i�K�XV.�^���f֋��k<�6�����+����o2Z��Ue���@�1�CjG|��%�;D9K9��1��"��()G�'���m�c�C�e{M�V&��^fn�Mܶ��X��;��)/!K��g��5����4po	|b�d��H�D��O
ֿ �?`Y��;2E���/7��m�rc�?o�<���q��C�~.�t���K�C��t��
4���v`>�f�
I
N�V`�z=��h
�����}��J���M��0��yJO��	u0�d&R�#MP\��P�Mh�N�Q������N��{�z6qVȰ�'����G�����5�y����:y36��I��I+ʑ�2�Xp�&�ɔ���.�q~�zr�4)f���ڙmU�������a �NL��4d8����q0lEڝ�>��6f�����> :/T���io~��E	�;e�Y���d��Ʌ��-&$f�k<M��ƥ��j�ǫ\&�ܩ<E�v�	�+�h�oV[tw�f֭ȑ���teZU��nb!/��Z���(E_��)�~ك�ab���Q���`8�V[�U5+�<�c�
�S�?m�@�l"��^_�_�.Pq�b%���,RΜ����S���G�z7�h�ܳ�Lو��^0ȼz�s�����峵�wĖz�G��k�Dd��Ug!�%@S��K
\���K�L�D��F�U���_Ԋ��X���c��L�?xA�]�Z�r0v��
q&��:��H�R"W>�Wr��71��[ O�V���j��ZɎ�<�9��m��l��,5��Y� )z�1��E�T�3b�;Eu�9�-����xKRoW�
yv�C�/�Fh�>G�7���VMT�G+�����H��
r-+�I�{#�[�E��_�>�g�ߋ7�Wr�+J���4��0���ӽ��;��8�p���2������ޡ�b�Ja���ji����B�?$�(�,oK�WJ��[��^]	�X����oP�^!Q�!�UZ�-@/"՗|�Cq��~�9��99�P�U�56�X�G��بA)+�R��_B��ԑ��[�P��-���!���
���Z&ߢ 3|Q]c�7��e8��Y��J�,����r)_�]�D�'���Ņ�U������*+�
������3�}��ӻ��]Hg�hE���լޛ�޳��sZ�NV���u����Z��-=�0O�gNfe��Ya����KM�Y��4-a�%�B!��y��z}�]�u6�
-U#d_�/���
I��ۆ���&�� ��Ak/=z|,��+?'� J���=+"��T���3�U�Z���>�KN/��u]���/B�E�V�E���ڂY܉n˞��"o�~���[���6���B��KT=�x�t�lr�T(��e�A?<�
�����?�FW�y@~�!��f(�D�g1z�Q�<����o�vfLe��=G�G�ܾ5���F�-������ӆBo����pK4���� Rm'��P��Pice4��Զ<f�B�#p�IK���
��VK������hh����Gj�1n
��ӰqG��O	P4J�Ԧ�q2�Dx^�t2�e�g��(�bC��ތ5hP�/vuU���9:Fx���#
���.E�W,l�&\���hpa��je��g(G*��f
��c��M�B�\�jf/�`z$��b�A1��گ��*<�����_���=���ͨb��p2�rl���Y4NvZ��̮��N47��� "
�q�F��A�6�\[��S������
�),����ז�Q)���7(���id�<G�㭊�k�E%.R�|�������s̘�PQ��ι]�7�ޗ�����?D`sv˝f�io��tM�-&��)SƦmkܞ"�eTX��C:��.؜�
���<�(����<߹�����1�g����2ݴ��d2�ڨ�$QI�%��ϴM9��Y�L�)�7SzTC*���.uGL�<�y�:����]i�_`A�*��P�B0�zR?"�7��׊G��7�{v��N�J�l��~��ؓ
,��5)R����Ń�v�5���qK�G\qM��n�d�c�pw�0�Iuc9�y��Ϲ0`N
��6'\� �]lU��>cD9}qE���E���a�--ި�r͔K�X.�Ս#�IU����`���� ��1'1g~(:p-٧}-"�޽�4�<w=]�ڜm}�2h��%���3�]��a���LǙ�}�c��k�
^K�$y��~5��BWs���)m�)�e��}��s�.�ucm�)��T�����,%s*�;���WA�yf���:3wka�E׺������
8F��Ak��d�'���g�Q��;<��)�P�_Y�U�LY�}`�I}(��"�ߏ�X��lƙ�F|�x�"�-�ӤR	�FKFҞ���v��X�Óը�-*��;��>�?��}j����>W���K4! I���J،�o^�Hk6���E�,t��|��H9�3.�?�7[M�yW�Z�:�[��6������ߗ��&�bG������ߖ�i�[K|kj8�o���8���~L�d��1Rc�e�[�#�a�B��ng;G��<����%�L+�
ۺ=�O�ˠ}r`M�Mp�����p�6��j��HҮ�/�U�m
mm�Y��2^jj9���ު�/vP	
��c�#Nc�H��v82K\�RҠ�tDҡ�D��ڞVX�w�C	P��[ɊNl�n���c�)y3d[2,o�+���lO��
]�����}Җ�!Qq�[
.�N?Y>�=�Ԇ�,�|��˹��Y��Rz)xnrG�z��cG�i�ƽ��#s�P�|���c5T��9���Z��@T��|�Wb�!�0��J��&���( ��F=:���ܚ��)�=�@�N#�'2�L��aZ)w�-ȐǞ�(���YkV���[����h��4dz��(�ƺ���0��~g6@!\N��s<��)�|so�XO,�nkO	��-���'*ssV$��{��Z�pss�[��4s/�p#Dk��ׇs@���bI�叕�:͕�p\�!'og�<�9�$D	��2����MW���*�te�`0�t�1�вl֋�(e�}��$7�d45��V^\=��a�D|fƣ�L;�q�ۇN�,�sH@{��fy��?eݗ�&ϣj�_��^"͐w�޴�j@��[?{����$hsgB��[7�Q@��Vr��w�س�p�'@�~��uG`�;)��jY8�yq�
{֯]��2(��9Cr�Y�Mb�(���r�X8Y��!��r5�_�ŷMԽ/��p_mkB,�!�ӆ�Q�Q�9C?�C�(��ͫ��'�dExSеDd���L�(?�D�k=�x������L1P\Ϳܺ�������
�kl�.�����I�2�Vei'���6��}Ho2'��&�����.����f�~��f�Q~r�Dm=�Ur��(3���M|_%���i?HѮW�J�B��[bK�m��rb�vK⭪��K���ߛ�7��	�g��&�n�����9Um1�`'(�n��^�?�nU�91��2�䬦ܠ�9��6di��3��ۡ��Oe�Y:Vۺ>�]�=}G�U�`e�ǿX�+���w�Xf�U��Bt�C�K�Cj����������$y�dp��Z	'�֎���Ϥe�'�Z&�rM<D'�����δ�U��Q�K�k��6�><I#1����a��0$�#qТ��ۇX��B�mOܗZ0���?���0)�~_��,ƕ���%o��*�Jj`�=�1,�o��sA���lҫ��"8�V8&�T���b���tH�E�D�h7��L�����=�|ą�-G6,��c�s{�]��+xد�ל��ԸC��]d�2��P�͕2r�ݍ��>�Y"���xp�"�u��9њ��炵\�E.I��6_��C��W>1�kU�:	��ۂ���@P6E�˩�q���[��$h�]��q�S�f�Ǐ3�^`�����G/�IK,�C����U���W��⎱9Mh{Nr����Ì�̅*G���{�6Wʠ�����[ߦ�t�1����9
��"��Z�H8�G��vn�(ج����B��YO"��g��M�D�U���;c���O�B+�
�?��M,�R����5y~e���1��)'q�� 4��j�h��z�A��S'�~=����ЮW��A�P��A����O>���|R��c���_�.y�\�j���o��T�h�5N���I]?}�B򚺺މ��gmw�JW�p��'0���؇L�L$�����Pu��w~��u𸄺R�k^�O�
������K�
�����B*f����B���/�d�Q&��B���5	���������h
(s)[�3E��e����]6��C��[2BĒ2)����E�����`�A����\��;ݙg��)�TQO��ih!�>����X�Ȕ&�q{2�m�=��$����GL6�f�b"U�3��;��E�yʚf�J���:���P�XN�1�|�z)r2���>.S�|
.�(ѐ' �C!P�@Ƶ�ml�EyI4�Vs*oWxMzb4�Dzu��S	1�q���ܕ�u�̈�.>�L#�D��k�
�
��i|F��ɫr�v�Q(�JQ����ݣ�_ʝ��!���S���J�y]њ&!;���QD�jw<l��Fi6���:���l,�@�pkk�%
r�{���'VF�3l7�{*
fX9_7���;�d�e}��UG]�gKd�뤋R�q�W��˓"�;V�d
�_�Tf���k4��
�@f:jB�cڪ�@�͸1�\�J��&c��P.[bt�`f��������ŭ�2g�z���6(��.XX�tP�D��)�I�tZ�ސ�륭F9!/��]�.RLx��4_������ %�]k���Ǝ?K��9�E�N���KY��t�r¸v�g'{�LXy�M�G���ɧ/.���ʜoo���Ξ�.-�)�O�|��ލ������};<q�N�#2bg�ؚ���t�2�2�|
|�[�M����h��K�_�^���ɲ���������c���e��ZߟG�3hf���e��4?���Nb�k��?�Q�3�d$	IR4��p�+�Fo�f<����Nࢄ�
Ta��j���r�W�G}�fl�<q\�(U%�Go�(��I�?W�#�7�B�hV�T��0UaSP�[cI�:��IK��2wVvo��N�Į��U4�/�*O��Nn��W(�I��;B�ϒ~��k/?흂���'�k��lX*�����X���?׳_�6b��Z���5��	�֯Yq���>��_G+:m&UvV�l>�ljs�h��]�������檟�ܯ��ՋOКN!��8g��b���<���d��P+`Q�3�<q�9���k켆��}5!���ģ���3��^*$���ƌ�>N��)u�Q���I���hm�*���f�S��$���)*��TĽIx�"���hUA*u����8�bK-�/~�tB��Ŵ����S��4���׶��}TS/�����{���q���U�s\+�A���E�<�w�;`'��(��l�0n�i;��<�n��m�*�C�T3��
;�Fd��N>[��ű$j���D@e�F�n��B��O?>
�s�O���;C4�M�l��	�"'�����.�������Ӄ��l2di7&�fu3���G�� 	g)̵��N�Q	ARw�`zcքޅ=�*�'w*ĩή8Է�
Q*B����\S�7�H\.�\E>��"���:��]���U��\�
~���o@߉� �,)oi��]?�3Jܧ����.G�g��mHh��t�'j��^�3OR�䛥��&�W&���e�@��Q��m����d��stÒЁMD�߮
�Y�16�T��w|ub���f˲���n�>�^�ٚ�l"ʂ�.�`k�w�H1�l�K�̥�Þ�z1|�
�H:�d��`i�߅.�����^B��ʉp=�2�1_����x�ñ���(8��M*M��7Y��`K����-;u��Ey��Ү�Ҿ�rtŅ=��MH���<b_��3�9ᮾ��-����완i�L���v2��6�)�Ը�'sߒ?awɔ&���7��RX�^T=�T[�0���9T�����/p^Z-�?B��ꖄ�-%5�6Hd��~��(����]%�B[n�0�_�����YGم3�*�r�������A��Y=��^��K�q������Xf�t�$�#Y��K|�B��(��-*︗9H1I��U��.F��t
��/��)�Y]�v���z+��겻)�H-�mK�J��~��?�;��L~@$�C&�K~�_RR&&T����D��"�������.Sܗ����>����D�w{`?'�O.����zEF�����ME9wL��N���Tsn_{��M�����1ҞsET
�sW�7xZʹ�����cg�peMno��9AB�~�V��L��+�D����s8c�?a���,%M5��9��Έ���g)&2���&��z	�r�ȂU	A��1���z�n��E�w�(�2��h�W�A��w�������u����6��H�����'�Z��[�q�Ŋ;��~T���2�j3#�)E�/9y�Y�K"o7��<p��`
:��+$�Ь�ΪqZ���`�0����ەa]h,��(k�<,Kxl,�S��
����h�w6ax�ֵgO���߼���k*}��6<C4�T_�V�:�}��BS�'&��o��K�y$���~g�I�þPL{_q��rҕ6oP���]g��J;ll��e
���پdM��D��}���xĵ�+\��|�5"];dl�Y8Ǡ|Fd�2����­�τ|�q�mV?��hgs��l0EC�
�ت�.��q,-Ƅ�ɬԶ�����f�F2��	����O��̳�3hC%�����mH6�;-��.���y��p��NV���)v⥫�W|쾷�?|�k�Z}��� ���\�&��the��7Q{Ec�>�r5�R�*.�`J&��;����~� ���b4apY������{"IȺ�c�5]A�W2�
o�L��'A�B'�g4{(s�G�!��&y._�.g�lnF�뉃��$��m!��/�=���+�Zż�Og�y�'OPW��I��!t^8��t�n�
��J���@�ݯ�:��YqQ�C��R�P�5��n;�I�e:�렦LW��VfC؁T���+�<d|��O+/�p��H`�/��ZF8�J�ilfW�4FJ��[Tx9R劮ct|h�x�[=�7���N��>��ῗ�����yK.Lu����UN�p��3þ���!�<J�BH��.�D��ٓ�ec^�<��HZ�^�E�A{�:`Mn��bk��x-��z1�
�	DZ"�l�V��DF٩ۭ���dcۘ �b~x�i�����_l�&���s��f�ibo���T<��A0��@����i��"���Xu��yTO/�wb��r�>��H\���G����@�
�K���@t�'V����j��i�+B}�~���oܪ��ˇ�^M�_��c�>K�Ufa�!s�~�K�/0�+��	�<{��!=6��<��i�=�`܏@�������R����l�K0�A>�fL��B��7cc^�q�>����p��>>nj���5 j�\f�^ä6h��j`T��=�3��p���2[y�
2�Q����9!��z	�z�P_���?Ŷ����ar@�꯴��Io�Ӱ4K+ЈU_�7�i`��%�F�U��`�ΨŎ$���8=�mM�d��2p/���r&��~M5��϶P�Rb�4������j�*�G!�ʀ��LMu����0%_�ds�`
���F,�1����yr�tOi��KU�������w�B��zy�
J����4���! 5q�M
s�����>��<6 @
���sف�Q£�`G��
"\2��a��#����p�uGB��MO��{D1߱���f*U�Ԉ�w
Bj���n���1�b�9.<����Z�2\߼l����E�ސW�K��:?�8#RFG%" ^��8������f-r(�:��E���Y�����<��lA�ϳ���`1�)� 9�`1�"69��S�]*9+��������Ɔ����NW��+Ͱ����V�
�(ip�)�O�ݢg� ��@�
��JA��:k���O���$�m�c���5B���]�%�FG��"$��S��������{lA�R ��F/3�$���_�T¹�i��5��F{/������a�g(hY|P�2�^�1S�aj�1W��˚�z����CR�Iu�[!V��5NI�"C��^1)�нb��Yj��o�6\]��!b)�<�%f�-mt:�\t�8�zH'�
��Cv%J�o̎�Q���-�����<�Ӣ���
��x{������J�����y����=�U�z�X���Gv�?1f|mh�������x^L8��b��X�R/R�H��^1����E	藍,��@�4� M�{��/گ�rZJ��LbN����I���;�`�ֳ�GS�s���t�cz���V�G�����lQ�:*������8�]$7D#���`�_���d��/�V��d��#����:�����l?��q��k��u�L����Z|V�;�����ܣv'(�|���z�L�!/|�Q�ݳ�rk�<�B���rH���E��<�j�[�gU	��Ԗ)�NKN��a�T1R�mIg�C�$g�8����O�L��n��}��ΫM�j����m1��(u�����6�$�u��9k{o��%q�M����JC���H(~Մ��i���i�|ɻȋQ%WT\2`�7f*#��0�2�ݶ�#ń3���t���kZ�}3����F��n3w%�X���N���ɿ
+}(cl=Hy�y ?��w����U�܂�L�&�,�ju1u�A���u��3o�S�@�h,����=����R�[�k�BLwmVm���֔%����
�2��e;]�ˍ�r{;R���&Z:�5���U"@�����$�gܤ��<�����0�S���
�����Z��!�_���T�!�]�Ij�g�hi��BǢn��շ/����	s�3b%z^+�Ad�6��h�����J��*��׸�@z���
�5��4�F�R����I�E=Xg�k�ieە{6co�C�C����������Z;��,rI����]�9qS�o�mWe�<��2Ŝ>
���})���U7��=pB�5\��ˆ����	)�?���cF�a6��:�|�� ��nYIi�b���Cg�t�G!?�
�wk��v!WlXHǴ���|���$b'�1�0��[F[+
�Pc^��Mu�c��H����7K�"s},
`�6�)�����M
�����;)d�G���\��Vu,>U�x�2���n&D�Ea���	W��f�� !�9�8�̠����~V[s���@��7�>�SN��e������
~��"�O�Vīe4�>��qG�i�tV+�ua�[P5MĞ���
��(�y�7#y��f��M;/6k��҆�/�r�sx&$�~z�
����摼���!j�6�2��K��LC�y�ψtCaV����9���<��m�;�?c�Yx��/�h�3e�<E���5���t]�N�ɚ��E�)^D���묝P
j��(�Q[�7�g��\���EՌ��Cܖҕ@������ �I���f��;n�P�?~ҔV�o��d�H���W�1x�+���ԏ���a��%�.�&/����]����gE�K�IB	��;6�G����C[�?՞���oG�<���FUj�[������gsI�q<--7u��F�o�^Tn��~�nT�%��6�5��`xg��"m��\}2����垖-'��3�Ꝋ�5�~6���	u,LY���-Х��$J�M����]���5���k�)��2e�'��XG��d�Z���Y����q��N����n� �A�7�~���Uv���m̳��ij���^�A��CA�C�r�?$�t�[�}_#��)$��bWC��U7'u	t�6�\�Ƭ2+V��a;R�_��B�l	y�	��A�T��y;�H �F��u�*�֪��29oѬ@�4������ɫ&n�R8W�<=p�&�=��RZmAO�v�|�K���r>��֜�=�	9˸����3�3�X�܈ǃՎ*�`�
��o��PR@���N.�|,Q+�3[��g`��~Mgx���ZNI)�2<q|?�m��"/�����d��أf0�X�9��ZL}�����Ť���G'WON7�3��&MA����.
�
q�����W _=k^^H�$	���+�ӥ�x������Bc�TRBrppCШ!����mƜ����)�&�3�n�
����kmF��,�U��3SU��b���]@����N���p�\�#��$����I�lA[~�M��}ߛ\�35m�}�.�uW9��79?��O�5[�W������Ad�Y�"��=�A�A#(�
L�N$�K!�%������T��S;�7G)>۩k�=�v�v-�p�v��.T�?�D��α޸r��_�4h��S��^cp�D�k�k�	�7�E]��"���5͚*��(������������&潝�cһ�*�ww�M�8����
Zm��wC���`+|�1��1��
��ނ��R>[���t?�;���ӱ.�Fl�]����7�9N#+"��ۣQD/����*�C����y��A��lQN�h
�
�
v���cj�|���H���͛�SJЙ4��l�Ix8:�P�?�_`0�ï���NK����ϡ�g�X{�Hs��iֵ�"�?��Ҩ�O޺���f^�%[��5�c�U�3H�2�,1�ig"Q�.�[ݻ������3��R`M��&��h��Ű�:��,�sfyÅ�}UU�{O�2���k}`ꊞ1ÂZQ����Ys�yD�C�p�!�,�a
�8�u�nH��ӺG��]��+"(jU���g�V�����:�r-Y�[Q�B�"Y��W��Nf[��
)D�ݡ�|�Q�7꺺T�.v\թ��~Z�
�����I㈾TM�}���
,����,M�h�,��Y�e�0
X��\۴4��Gr��Ķy���!��E.v��[E4Vl���Z��$ٸe�5�Y�Y�W���?�8V�,�?	G�:�ʒ���c�M���$ʕ�O}`���EW�h�4\R��}��W�bmIj�ۡ�iS��L��"&���
����V݉����ԥ���88tI`�����{>��V��_�(/T�"<��@�҆�a�Y;X��ܶH�"������*�	W3��1u{/q�A��j���5�t�e���-�5�5D\D�/F�~�#~��.sA�>�VJ�U��ȮaS�X6��b��P��7�p/Rp�s�Dz`�>{�j�u�_e��󳧌�	��ǃ'T��h�"�l
/zH�����wY������~�E�=\���p_��]e
q�\�%7N<�],c^`�۝E^w3ĽL�ϝη��ik�
r�k���ԍΣ�˵��*�/��@��H��>���[-w�]3�ـ�W�W�3}WP���|A3�K �IBf�)h

#]�t�5n�Z1@�.��+i幓��=��o|H�#�ݟ���sU��o�~�[]��C�_�6P���	��l 'рa�%�"xH?z����@���S5�r�=�[���nU�R��S9L(��N�rW�����`���z�_�57y:���qt�F�xW۞����d��Jy:]����c�(w��jY[~:�3�K
�<�aP�̫vEʚ�*Z�������jG#��V��ڂ0���r��#��^Rkg;e/i�3„Y�������s�N��У��BߖH��Ա�GԒ� ��P�@��A@�|�Ar�L��s���	�\*�y��ṓcD�C������ɝ�����}��^��AJ�bgGYofDT�jD���Yy�u�|yHc�U�>�@� @��b:�ڠ�tЋ��G�}��k��;lj���
_W�F{�[;� ��GkF
�_�q���ޙwk�����(_ ��^#ʬ> ^�>�@�W�{`�{[�����q���]%<�8�>��~tbb����ʽ�T�}���J�Hc��,�%ut��"����<�Z
�\���:�	�|��W����g�ؔh�c_����-j�O��%'�H��^=Ş��p*���+q#�Z�G��� �4'�����Z�\��jJ��]�R���;rce���o��SZXLt��?l�A���1r'��5'n
\넻�|B��}�}���jq��5|$C6Gmo�b�ϐ�@���<~�G�y��+��" �)���T��k�yj9�]�	��H���p-+�GY��d�VU�"d'��������M���i��:�s�.�E�pC�ԏ�ML�@�
ҠJ�RMl���œ�ɫy��'T?eY���5+�tֵ����'�N�7�
^����}~H H2�S���`Ʒ�N<C0ڜ�Ho�*�pW,� �뜓pܡ��
[�<rP�"xE@y��M餉iy�gb����{����׮�%�s��խ-�K���O��v�j���_�����Z@�[Ņ��a��P����H``�5��� ����B��)�t�7[���[dz�L����'��=?�lP�IJ`Α����!U5-%փww�_
�-%����6g�Zq�VN��NH%/��A����d����_8,�+�MR%�[KLI�[�&�<5���?��yjH�^J��=�S��֎���	f.���cA���c���<5�4Ny	�#�i��k��1eJ���G�j�˃"�#��1es`BG��C��+5
��A��l�T(R����6 �2����F�de|D���>��䌷`�E���6�I��j%��:A4P�]���W�DU�h���2y�Q�勭�t�䐡�~��p��Ae��=��s���4�zӬ��r�3�!��^��k�^�!d|�*:�^5/Ku��Ըi��3�ns�ʫ��q��!qu䓂����]�ٽ���bh��c[I)�(�S8�ݥ����ó�nQ�1�+Iҭ��p�ȁ�̼�uA��͞fu�i�>;)g"L����`zh�ׇe����,故����q��koQ

A1N̾#��h�2��j!9;H�ӷW���,Ś���Dv��s��Y{���E�>��6'�˺��փ
���M��fkJ���/��DÂ?�#b�e�г�w�G�J�pt�g\g�u'����E�-�p5k�L�`��Mj�Wq<��<��+	+��hG�y�m��M~�q1��xZ\�A�7�T՘��i��_&z}*���A������J?���]�7�O��r��jF�	�Og����KN�Un�LX~�*;�����=ho��q������ɹ[KxU�?�ZO�Q�l|�)޵�qKL�`���V;.�Q�Xf�|~ʲ!Ճ*��▵x$�
��4%$L�7�b�-45Ma�e[>�$�o�`�=�̎���!��L�1Q��gq�r�j	�1&l>tjyIfW)[������dKX^�s����F�S^N���V�f��i�X�(W{�u�[m(��D�GM}�e��9X�3����POA��}�޽#��O��eJ&�����:y,=�+����e7�'Y��������lV���S2�J�ƺ2!+4K���j`��/zW�1���"���ؾW� h3�L�gu�3��ޢO�~�j�*#�[Ï?�r�B$y�4�7�8�8+����V��3i7�n��z�l�H;�:OdH'.q��a�]HKA��g$ ��]��7i.Ht�9(����D-$y��a�>�N���dP�f>i��b�*2�Jv=��nvΰL�1�N�,�1S���]My�=EN��F\%�(�3/4
7A�_p|�f3ʚ5~�"V~eyƷ�L{a:û��Ei�P��^>Q��t$���E�x��/�{���
R�܊��!mw'H�Q�:���B�S�&���GC@��9<m�c~[uC��ˇ�L��<pՅ�ȓ�̞��M}	�
�T���ɀ����R�$(�>����mx�Z��*�i����v�����Z)���J��nO�h$w^Y�=P� ���iEy��-�?'�Mu�WI�W�f�JN��-��E
�Q�R�I I�]�B�����J��P��T
6�Orv?y{�?.X�p��x%�
�[��r����H��Ʃ��zL��!.yCgf�lԷ8ep΢t�Wh3��z�ۻ/R��(�����-�dy��<�,(��p��ϲҎ�����(�������D3�ܦH���^��P	b�t�+�2ut�O;Qo8�W���(hK���ؒ��b;�8{��Լ�io�+)I��C��|^ok�--3ZO/f<�b�[�91o|�{5�D)*��JU0]��&ϱƌ��˺[awρ�v��=4�����e5����h��\�F�Њ<�O;�)m/���V�ɳ7�jœ�2�q)�O�4�@�����	�)�U��!�[
n��y���M�#�����7�JnB��� �1SߏÝ��I�~�]#�����~dĈʳ(�;����μnp����5�����)*EH僗�&�����U�M�x��:��/v0��D��*o���-I4�c�[6n�P�bp
	H�9��:g��[�,��6�w��_�"S�Χ.0�LTR�+\��s��=�p2E2�1�F \)/���<P�G~��?��.,��^�MSTD�}���>�f�P��#�Z����V�Q42��a	9f�dV�y�&���J��?�*Fl
t0�6�F ��l�wH��@֞/գ������Q��:�1�zG��԰O����^��Ka����bd�N�AA�h�3���"H�6C�H��4e��/��I�]�2u��n��Ch��Zol,'օ��LJ��r�[%��H䴑v�㎈�U��1	������@/RX����dN��*�Q����?h^�ѥ�A����D��-L�EtsFV�����{ji��z�s��~ϊ}QWg�g��
V��(�#�:��5%'LQT@�=�3�̝wN��D�q`�r8?%6����p�d��8�o��w���/�ra
r���U�g���r�}�St�
sr�����G���G9
ȹ�|�	����K�j��ta�D7��})z�פG\O����D
���+f!��iCۍ�f�\��s�O�Y�C��t:�Zz3s<C��\�Q$F{dY]�ԁ����yG,���n�m�5��r_]�DN}�߻�?�ǑJ]�	�z��Շ�jح/OX`�m�6� �f�n*H�8�k������:nPY�m�O��1;_��M��y^�^��;{��^��~z��} ���?�
{�jj��I�D�䍧�I��1F�9L�>)H@_UgZ��>�&��;�c����ν��q���ZۘD�͌��LYd���������Etz�K�;4�F_V�۾	�1�>����e�����"�=[�l]�̃��Ͼ�B�����$ܛ��j�f�]����)��t�AO���{�%n��� )��$���y�8k�1���x��R�s����M	f6ϣX.�m� �?8W��&,�d�Ύ/�A������=�=���~�P�G
���}nG�n���9���*���������(�  +�[F���w�s�L-̙ϙ'Դ�~V3U�)�x�L��<g!�J|D��u���b�����b����;�`�A55������8ȹ	[��N�6_0f��ze�	��~� �My�<����y�BSk�XU��V�YB�ۏ`t�G��
v��0�	(�h�L��\�<��� 4zW9�@��G"�ߠl+(��+��׬���
fo�U\��)�
�?
���Q�f2�2���O��Od�@�:t���.�$Ϟ��2d�s��0;�8S�����\<�x�
�VUk�)D����q��J��$�X�����T��R��x�M��W�4�<M�|{�rL�Y��7�w���-�T�Е����޴˼s�ޭ�� >���~s�@�vK\F��'7U'��SS���)�͹T��� A�H�_W\�=)�WI�I���k���S ߹$)�l��r�#/����8{8�Lw�BʏjD�-��TmwҎؐ>���l��U��/����x����%LQ�E$�vE���'�-�������soN�W^-j^���>[,f�<�km�nj$��Ҟ>���5���`�SG�]�-ұ{fs��"��	�g��5/T)|qT�2b�Hl.��	�E�t��W���.˱�~��e�]yE�Vva�Yߴ�-��*��J{۴%K���C4'�*�[+�͋�OR��zLح���
�-U�s"B��s܁�TlƉ�F�d8�ef�V���W�;y�/�Y�EtW�w��"x�������V�	�=�Iͨ�t);���2	D0� j9
YB0���}}6��x+•����e�
?�S�c��D����H7O��+>�M������K}���Z�y�Z���&����D�DN������(K��*��� k����d��Y;E�AϘ��n��d
x�F��Xk��+j�p��\�Q�j
Z�h��/F��LR�^M]H��e����?�%���O�t�A��{�&Ei��A�K���k���Q���H��)�<����[�3�{�j"�R�j=�e�'�{LMs��֎5��;�
�lOro�~[����`�0~gB�Y��W�aݙ����	��.Ig͔�qMk:���eb��ҕx½۬{�z8��5��C�3y�G!���^@�k��1�[�s:2����!�t�ej��N�d[I�	�|ƥ'�a<���q�������5�/%��~,]�^�&��+Sf��s5='ў�^�������,�l�C�!��#��U��N�~���/ƫ���6����U�o�h{���
y�?�d9��{�����6 �2DpU`��Ai�I�;qn�Gk����Q��U:O�&�S�v���kx��Bq��`���Nj)�/[�W�i)��A����B�G3/׿�b�/v:������).�蝶��l�#+'Yھ?zs�����3����8f���Ae�����2v�q����]���'b$М_�L�ql*��ު{�rDHI���T���ʒ�k��v΢GysU3Os.L
N�i��2��|�"�J��x��$�u	FiY��т����C3�8�	�y�1�̯�9��>��<�:pV
�-�O���W�ƶ3���+�7C������͝�?�\}��ʃIؕ:�+�_���D�������#��p΂��Тf�Q�~X�=N�pg��"�u�'\�Ϧ��'�Z�g0�</a�38�
�������~./�l��_�@�����U�j�͜Ay�����pq	���iz�p�h��~�z�]F�~rd,7�*��$(=�w���aQ�a�uz4 ���k�,������g
�7�/~�ZҾ*F�������5���k�b?���S�j	�ޜmc�8m���@VO켣���;nY���G����T֟ٶf�X��Z�U����C]t�µ62t(k��.z"��kB_�� ���`Es���]�.h��l�
���ޙ�	�Ch�J��,���Q*�c��շfZ�|g��Uk�<��vR�D�2�aмe^9l���^>��h��V��C��x&��~���-�Ͻ��<I�K����R F%�и����q�����sm�u��9�
}R��оY����qQ?PU��7�؄jzk�<��-��-QN�z�xW�(������m���x������������.L�&i�[-ϧ.�A�n�K�2��|*:��=���K�Y̺P����ص��.�$�to�ݙF�}=�E�ԏ;��WF�J�D<vC|B���?z�����A	����Aj۹qۥR����(�ښ\�[U1_IL�܉lͳ=�f��R�4�p#Y�n-S��OO�j�(s�k��&͂ibW�Z����I
V�����1ӌ-o��} �j0��xo-S�賱�P�6��t�%+?fzX3��rv��6wn��N������t�K�@)Ob�ը��g>�E
y�Te��ؾ]�&qm��X�!��{��{r�7���Ϭ��P�V-m7n�޼�����Ct���XLFgNK�)��ŗ}�xp�qr��P78@'��FS,�	[W^I"������7�L1�����!�u}>�y�"O��Jb�/L��;�+���a�צ��i�:RF����>����qx|�XL�Z��2=ں@��4�댩���á�N4E��i�|���.���+�=<(�/7�	������!xDe�A����%:��]pEUJl��}]r����
�ϋG�Y���.��~S�fp=���_�����7�:M�mwb��/!ο��#��9�m9+c���K�sҨ��R���Jlp|ju�F�[R�a�˛ِ��4�H�xRs��؉/{�`R��ސ/�{�K-�/K��.���CG[����0�iV�<c%x�Pm��M�V�4FK����
���[�g4��c���h�cjF{\��|���f��u^Fd�f~%��<�k��GmĎMUQ�ۿ�c0��2D��e��m�-sz����H�!�=�_���H7��~�S��>A���ep45*�f�t:�2��$���9���e�@P��mUH�%��i��u�s�F,��6���U�L�5�.'_:��}��)�2�{��z��)�	7�n��
���F�Ft��se�_�� ��/5�/�5j�ΨOԦ�,/��L��;�oC��)��=sFD��/���\|؉+��{g8ہ
Q��x� �)�	�#6@ņ
6��(��-K�}mD$�5��2�3��Y^��3ܙ8�������v���~�vEj��ߵ\/ZJs�U��,��z��W�=�K�q��a��պ�FxL��`4��w�Z���S�K��9���}Vܚ?/O�۟Ϣ@�E,�W]*Hģd	��l|Yx�F�-ڎ
�OʐB����lX�<�|�L�R��_\%+W�T���";�s���C��Rf���n����e̚��ܵl��~dt(�;Ju�˷�tuf�^!hZd~8�����A�J�+��e����?����r���h��!�Z��H1�OSw�������Sh��p��G00	������y=���A�Ra�
��^��{U7r}2���UvW2�Ԍ�W��+5,2�Xgc����4�`� ���E�� 1Y[H-ꔷ�N>N~�Y/��s\@�>b$b"kb0�I��C�U���2.(E�M~�^�;���=g��OJ�'g�NJ}�=Ρ��\�U]A	d6����@X"�G�Bw�8[W���,z�k��A��!�d������a�?�0�Fr3뒱�+�¿�����3�voq��n�����n5BC�sZ�™���"�������|��&L�i�o@ڛ�����`��bEc�8jE��mk��./[!V�!\��d��i��c��f5�;�]î�p;zN�`�_��'��8��KS�0���.u�h= 
1���v�̙����b�Wj�˞��">/�QΈ[��=�'��ˇ9�gJ�x�����������^�����YXJ�h�`F�"��'n��֊�`�ٱV����ܟ�P�P�e��=��r^��zV���3��?��^/��ut<�.��-�(9�6�ʅ��'bӠ�/�	 �
�2�{%�����aҗ�mtTmv�J�D��p���{�}h`��:�,�p�q��uyo�_mVH��&7��D�[>�*�ZIKvT9�w	�>�e�����u6��m���N���Q�՜3��}���&Z��	������^�p�EGR�p���U�ə��Έ/uI*ޣyͼ0�=wsŒII�y/��ȅB) q�Cz7yA[Q��ť��"J�
z�O�a[ca�?x��5����x�/�AbZ�VŝYk�������]���\!
4����Ҽ��0ȥf�4~��q���E {l���g��Y�����\F�W�t��n�U����A�1p���b���a�
;8��#��A�xEl�m���b�)�T�/~�-��,�
��e*���1W���X�ݱ���Z���d0_�H֭F,�
��2˧���}p.n
��
�Q�6̎���~I��>�*-��s�bKس:��8OS�R)LH
Kꠔ~7G�§�S��N^����2.��`��&ZV��<W�b!E{�ཡ��Ԍ�:�V�����\�,��+�A�e�.���x�w�,eg��	�Z�@	�����_L�����<�P�:֞��1�Ɣ��Y2�.4А�^�$����^�=%�Zx�8��bpS&��~��ޖ�S1��l��+�w5��V�o�,7E5ǥ;��;�O��X�o�����[��P�X`y��H넂jpM�D�E �d)�[٤��Mʪ@�8�]O]d��)d�(2FEN>m���p�D<.T��+8��Z�F�b-A*�_����W�ݮ�/��[��x[�S�	�w��q�;1�ȫV}�H����:d՜�ιv��������<�"8���ۤ�R����ǹn_
t��3͞>�䖈=@b��!}xwD)ՙ�G���Sj�"z���|uzKK�z�vPfs-n��t��&�c�#��K
��ʐ"��	��KE�$^�x�����+D�\����$�T�9�1�A��D���<��K��E��cL%�4���ǩ�,-��?_J)�������7��_�*N��t����jT#� �i.Hd�D��� T��b��gC�U����׹ȩ���U�~���e��EH;�>� w;����eMpm#K���L�f��Ҕ�eo0ڥ:�b��WC�F;�ls��5v�	{K���`��k��N�n�$u�c�
�����@͹��3!%u�1n�ʔ�a�F�y��Jȣ���~���s>G�V���H(ʪ���+-��$�=+��zgx(����0�,5��F��⸔��x>�w��kw�@���R4��͸�F�ϥ�?�>Ծ�0��ȥ��9�*��!�k=���ҶV�I�]�K�`�t#�yd��(q���t�WS�$CH���OoP&����bj��BDIF%g9Ir��<�s2��ts��:HzOc�NFs'شF���iD�1���J S�1�σ���ה�Z}��t�h�T��ߪJ�?�g�.N�PG=L �V��r����L�?v�L�
$�2�z/��������ZYK@���%�F�B&0Uq���ѿ�9X��/��G��&�]�����w�qS�q9<�S���m�V�|�E]E¢;6�	��J�\�y6c�P���>�7�'���nOķ�:�b]�bzt�X�&�F�fG��rG}99��,��C�|�A� T�6��D�>|��}�Z�*����"opJy��w���O��s�w��T�>ܹ]=���lUy09�x�i&��|�f��7��_�W������ʼ�Q���W��*�M��(�n	�������.L����	8Զ3:�^�Q��Z��=D�"��/�0i�A�B��o����������Ɇ6�2�_�`�m!않_��Fr��vRU��ԩH�f���k����V�\�:F�.����&�-��n�LKɴj�&	�wB{Zs���� ]��Y�0_�����~����A�H�ǁA���10�Q���~I%˥�B�v�t��!r#�dA���,�C8����
����a����6o��q;
�b��4T��v�לO�[�K���1�	�`����/5Z��Q�r9����u�����:v���є��wo�e�;l���:k��5��f/������hAUӺ�L��K�u���������Y�z��0:1�AҎ�B��si���f,��ͲRtq����x�A�n�i�z]���.c��;W���߅Y	ވ�b*�'ZV�'zO9M���S[ɠlq��ΙTW,`����!M<���MJ�j&��^�
ȫ3M8�oE�I�%�̏�W(@�� '0�>�;}b�����H_[�2�9�d^�q��D��e�K��b�r�`��t:�ٛ�Q��l��ŖG��&56��T1��[ǀR�&7��{����[��eq$K�c�O�)r1��~�[b�9���h��%Jo��Qf�je��v���H?��n�+z#>�D������%�������
���@`����:a�%���Wܦq��4X��){���%ϲ_��򅩰,>�|��v>>j���*L���Z�T��:�M�����r��6������ZS���@0~��
����'����4:1J'�4��DcROo�a�4��>nu[ѐ�8�͞�!ǰ�ݍߙ����O0u
�=f�Fe^�Y���G}Ic5����Beg�d�|�)��Pz�;DA��I>5dp�$��� Yo�Lf�p�-O�����6V^��w|3����"�R~z6��w��ORٽ�3+;N�VW'.��{�F�Q#B"f��M��<:&(�@Aa|�ՙ��4p��`��so\,�_�3ry�ޠ�I�Q�<�"ϠW�fdF�����R�*���Q���8lTU�%��4�{&cJ�Az�%Y����>�%��a0$D�����
��'�{ќ4�:2�]��n.����Ii:����O'9l� 6��X]ξ���@�͕^�ʗBL��-|E�{���īM�`����IT�	��ku/�����J��G�X:�Zr�.�^!��p;��w	1��rt5T�:ޥ��p��hE�t�`�0?[v<EPHB�Hje���7��dx���S��?�$~$ceBbr��Qܫ������eE�vP���g=Ǥ��V�k�_���m��!Ly"�[D����-5t�B��7C���0��[��{R�e�\��Tf�C#}"L(g���3ӟ��D���)�
��eȸ�Td�	���跙�~���]�%�о
�hk�|�^e���x*@��3u.-F��������nb(�|���V�I�>��a�0��Wz��+oh<4{�^��7�oy;��C9� ���/� =���̜�c��YB��n��i����X�M�R:�<P�IM&a�$,�&��P4��3-�����9�l{�6�tZi�X���(�s[�:���N�[�8�'�4Q�u��F���.f�z�)JV��׸�؁��G�^=��=�bl�eOv�9�
>�X��Zf�TB~��Œ/�[���(�U�Pr�d��~�/&�"���D?�^�$8cW��h��&�_�V�_���q�Zܕ�>{��5*�J$��h�'��2�o5�
f�D�0�hwu
*y�i�����s2)��t�O{�3�;�֌��
5��y�.�/��e�97M��\�39�I��lTLLj*��9��J�I&e����2�&�U�����T���)?�~@>(G~��D���u�I��p!��a�\斀�w��FO��`V)�MJVuȘ��_k���U2�E6L���(�� ��J��"�t8P	;��Ca�_1xΨC-PH��X,��x�[�c��D�����PC&���)G2	�ş��5�iz�З���2��M4v�;sl�V"�򒿎05[)�bU
'ʮ��y���S4��j<o�6>��%�1� �%�p�����eƒ��-hK��\ݴ\�uhl;!,��V�t��L�.ŀ���U?
q�T�:{h��=��,�{�n\4��c�?�F5�~�		��DH�l�x��z����C��z�w�o59�4����.K�u�s�"�6��<
�4�C�?s��y���A"�'���N	W��z
�@���A�2	��ɠ�>j"��#�_�����Hf���F� #�
ct�T�G8̣
ieq�$B�U�H8n���Tۦ)���u^P8٧��-���/�)���n�Ń��z�_�˔ϋ�NmjO__b�B�Mv�e�q�-C��F�)Q��O�Fg�= sPE�k���ˮCL��zD���wC/��Ұ�C�TzNQ��%'N]�P���E"{\mᨻ5�7��f�w:��s쒏҉�/���~��\~��&��#ε�h�j}��u��S��P�

��	���*�F�Ś���G9@�,���S�+���B�ҙ�m��'�poE|!�����8B���U�
��ttՖS��'LJ��ՆSP�ɂy��"`O>�s<��'E3q�&#vÑ�ڜY�+�;"�A6�L��c�Ay֛Ǥ�(HkTr�	LXf�Xs�>���_�+py
G�[�jr�hVX@�k{p����Ñ$,t��f��mޞ�o�E�w
��Hi���OLY�Id��@�+Av�AD�]8�4����.����5���a���G�Q����|��MU�R��Q��]N/�}o��F��#d�j�d̚�iV��B�[�X4i��<���!�I�r���~m�]F`{�K?��U+%�;3��z�1vX��l�w#F�ƠR��5TI��^C	�:����V��ܪ�WF)j$T�ee�v�>�Ro�Ee��h��,�㉠,e�[����M��W�������#X�'���d����)�W�x��B��|A��D���������`��2���k�I;�Q�Өu%�ZEd\�Ѧ�v����V�ss/��,a)�=>���[J�NJ̯���G7n7N�~�=jږ����n�����$p},�`��$����q�.�Z��z�[�Nc=9����
3��=��W��M�g��8t�	�u����öG��CPcҗ���Pc��dpI�pYgZ�
�n�lF�G[i�7��~5��c�I�� ��~"�h򟅓v��	h�e�(RL 䑣4�?m�UhS����F�@��������>��EU:�_i�o�6�Z[e/�1��\u�F���T7
����/*��k
�f7�W9P��];B��f[G�3�+��9HB��#�X}�
�<�
�[�̷����1�'M��̂�E�՞	�JN��Ε�!�A�
�R�ѽ�� ��`�Wٻ����G��N�F{�4���]�N�)ƚ{�F�݋���c4��������A��e{Ku�E�#;@pT~��-�ޣ���O�ް�����kN��D��%O���"�9& G��~�����q����R��V$�R;��C��*�s"�Y�ވuc�T#���δ����4|�rrӕ3��P@��_��gD
)��$wp���N��ct�:23>n�4ߓkZ�5QDMƢÃ�N�zBuqR=��Us�*�yIII�RB�����K��4���'�|sM�u����%c���W�[eM�4�׼�1A3׷6��5�,�~����Fm����d�.0��"�
ߦ���<�*~M�s�i��p�
��Y� ��k��i�����A7Ԑ���@h�'�nDH���T��C/�;0��(Q�h����#��N���kf[���_�^�1�:y�bQ��%���F^Ӏ���u\{j��B��+acԑ���QLL����FS�1U9b8�b�DE�|FĮ�6
;����U�Ga;�[ҒdIr��$k�w��K���nH��3嬂0g�gUG5V�f�(<���S�)}zaoK	��?�K�O֐�-CIR�b�$�O�ȁ����I�ri@�Qm+�2��d�nF�ϰo�@�gH����Yoŵӡ�BД㙯|ZkM�1PIO�!4XTz
�<[Bƒ0����R���Y�ݽ���ɳ!‚�h8���Z�r�*���������d)�m�k#z����
��4�FV��b$���ӡ�3V��P�U�䗀��d���9��	⓬i.qk�
��ͭ<sG\q&�\K�:�8ZT�s`W��;��nK�dꪸ�F���:%��H�* �t[���y��^dY�-�|�L�F�^�]��O�Q�R�ȥq���ۛJy�.��b��jX�Nʻ���wA�CE6��Ȃ+��k#t�U��ي�!��j�M/�G"M��N#�e�7q:��y�.P�\&��6L�G�fҵ�����%D�W=鷋���O��{��w`N"b۽�<)�wznObbk2�:�{`�/�Ë
�־k+Q���g��-@ Pw(����t=�E3?���+�#�!Dp*�|L�s�Yg�#���H��p����R���"�k�Y���`��xV��݊����i��1w�א-�P�&�:#��� �WR�<\
ȥO�Y��)�֧��8r!��FD��a�=�#Ҳ�<�+��O��� 3���mS��M
�����dGcwpR��~����8�2)1�*ݒ0�����{
����ØU��(P*�,�� ��������tY[�{)����ۉ-�7�FI�m��;�����o`�6��ݐ�A��ٻ}S�����F�o��y��u��}�o�n&#�	�Z�j��k8��S�;�r��C��z��ڮ��j�qwY�W��A��;�ʏ.90��Ka���z�45}��+Q֏�wt��8��-}�ʨ��CM�5;1��`�(������ܟN�61�}�_e��4A̚�H�8ޞ��d�t���/?ߐk�&g�f��C���Ɵ���g4-c�e�.�te�Kc�@ KG�"�m��d�k�6��h$�B��}�ط4�5��ԲO����\nv���tOmk�2��?y�-���p���,�M�|�b�X&�[��k5�gj�"M�F��p�#s�zCb�|��;9i�\�����Ȍ񱜪݉�F�6��G"�6+b0i�[�Y_-؝�m|��k�V(.�E�V��%��GSN�>�N�8=N{>)y��2:�����|6!�TKohٛd����H��y�kx{���@���x;��(T�W*��X����A�;�}w�[
A(:EH�.���)��Ck�B�+�bCP�#27���|�K%�*�&��{h�?�bO��)��y�������O��b����8Ƭ�?pɲ��n����Dϝ�g�d�תm��w Me��.�2��cܡ����B���%Ԡ��[��(���p���D�1������O��D����mI�&�L�?Ll�բ��"���[b�i�fo�F�!�G�J�"��u�GC�X�.�v�okծ5|7�i���q��d�|s��h�D�&<&Q�ij�VcJ��!t�*.���95M���O�:��xŤ,�G�;�KѼ"r��-�W�k�9uWs�;�X���|������Gm��`����)�<"�82e�ڽ��ߓ�
�?��d�&"�a����
:��F)@�:��cLc�}e碃�1G�Nƃ}���)�㮹a�A���knD�<nc�I��y#�0��-��a�yhz
x��Oǯ,�hx�����ҙ��ǕN�B��׾{S荗U*�Q�gh�?���y�醨��� �o�j�Q�ݟl?ւ���x�k��c�R�\�4�tff"�H�cҩ��ʨ��P �bV��F�O��!��>��@<qg�<ƪ���VU-l�E��'V��x3���8B�H<l�e���OI7�y���6�w�	�_)��kڧ)�߇�������7�y`�.���kX5C�;�$��*��FBaA��ݘ�>:<H����G�ڍ�b���L3�1���ΐ��'xɢ%��Sf<k��JuU�;@��|�L{)����pb�ڜ���P'�|�ҧ��\	k�+���Us���.�k�j����^D�@i���3�<�J���5�
WWm��9��o�;_��I�D���,ԉ����K%��}7&O$	o�o��DŽ)	��YWw���ۤ�G�5�C��\?��5��]����	����D�����7eȢG\�y9����xⅉ�
4Z›lS��v�%oN�����L�0�L�E��S�D	3&�.��NV��Jl�
�fv�Fm��I�G����R��Z[��t\cQTc[I�R�^r֩;K�_���z�b��Y��=2�l 2��!����:�eO������v���k:�<@���T�P
Kf��†�:6�IQ�@'\��R��F�\�׮�����_�����J�p����gv�䁿ߜO���]�ս-z�c���_)�0�A
�j�t�^O�È��z��GmE���Tru�E��W�,��'���J��oݬ�@�*vu��c�V�Z?�~����D*�xw&G:wpi�w$݃-����p;��=T�πڃ�dR�j��Z��_�[y��T������}��Q�GpC��O�M�i+���A�_��yaf٨"��˂����1���቎�-Ϛ��Dyà=�Ow9���h��{�">v��~tɚ��𡧕�_v��*�]�I�w������V���b�w���k���S�E�t��F�w};Vϴ�����XFi�$�GcJ|���N�KY	��XI/k��V���t�O(�R�f#D�(����Y��ت��d޴��J�O^�xa�X��k��x�3�Χ8���uBF�4c�7ķ
(و�Ѧ������:��|.\��W2�¤�{`���2�L�i7�1����ssMM@ Y(�d�]���s��|츎Fބ��a�5��@5	I�Ccl�}r�W�����¾����M��PP��yЧO�7-Cuɇ$@��PH�0r\�����f��}����O��UxE�^X]��c�Iu�>�Z�~�۞�E~���%�U�D���N�q���桶ٶI�� ���J�R��%U����%U��'��0������\�lb�ˇ�!<��х�`������;�,EU{��_��[?Qٗ����Jm�v}洄�>�C}!��g,O9���?�LG�g����Wbx���*e�d��3u�i�m$Do�u/3��r9��X)TS:7�/���=X��eBe.�vOVY��q0�����d�������/��2m.>j�\*^fN�qsnCd�;h�o{��&�n�I��7�-�?�Qo�h\#�XN���>V��\�a�ǧ���c�:�~oh��F=w2n�X����z��[��A
d��3����X�Y9Z?��[���Rm�۳��:���x���*�o�>7;4u���
H~��;�>Nq�Y�G���F�<�d���]�����R���~'��I�{�ѶT0���H�����US�T%�/'�N5�����S8z��$����TÌ�#�ݷR:��|�����TA��`�_�
'g���Al�;��{��a�`�-s��
�0�z���T�p�."���ԉ��GS
B_��
�j�o�<��:AN��B"��d��^���!�����D<�Iޠ���\ۋ�O�J�H��+�s
��=�])V��y�c%j�ÔQ�n�4Ѿ���^r`��>�/�ra��XZ�$�τ�i�q�<�S;�Ke�^�3�2&I&�B����srO�k�� �	��vc/�2Y��T��&(���JF��C���z�ï��TD��}!x�����Y�Bk.��s΃0u��J�:��pJpT;}��#da��S����D7���q�
��y+�f��M�"��c�ܡ����>po�N�
���8�į^�� +0�=x����D��L�k�p$���Tωo�/F�*���R
B3=
)���hU��:W�v�B�f�N]o�n`�T3�U�&��)�f�|J0��4�/Z�A$�֭�J��>s�M�0�c0���Շ]�1!����П�Ҷ��}m�mJ���q�O����#�����C.�$, �,�WfUJ�Z-\!����/�f:�a8iij���pA��	�<Q�4����:6d�,pۜ�C����G�j�\pL�|�Km�҆Ah�a`J��r^��]�F�f�J�|N�^���W�����on��mi�	�9[�^Ob}NL9p$��j+��d�[���=v���!d�N��~d�n��v��ϝ�}.�}�i��X�?uh�vr��o#W!�����q�#6��!��4��/!�{t��HL�]d�&%5~ ��Z.��ʞ鶓3Z�K��f��w8\�S���`6�t���=0ض��p"!U�.<ZM��3-4���^SQ�n�����֞�F�T39I҆'���sZL5˜k\OIk���i�U^x�\#k{k��>ɲ��[�hɩY�[�~�L�ǻ^7�
��4]���w�ׅ���_u�l�6�X�/��y�	�!Y.�[1����r���r
?q�-��\��8�eX���GLƳqHĥ8�ߙީ�e��!�����"��RQ�o�J��J�e���Rߒɏ)
�E���Jy�UI�d�/d�},n�2�QөT��T%,f]�,�Q��hm�:	n)����e��þ��-��6!��	h�K��XVs��3LY�&����K)�c��G�j��`kH:d�݅P��ks%�)Wc����-
�'r�L��� ��D�Ac�4%����M=�X,u��kӫAj��\ь��B��@�S�j}.�C�6�[��"_�S��˧��eo?t -�v��f
86O-q+��r>!��_|�LקU܌���T�P�����Ĺ�),,���9�D&��*��y��_Ee2u9-<$����kՉz:L�X��)m����$==�t���n��V|�U	�B�Ã4�L,i�tM�D�xR�s�B���=�@Â/�lۃ�봃����e9˼>	�l�jh<n��k��E6~oXt�x��c"��-V?�GUb��Ŧ�>�1���Q!����g�cV��R�bHh�.���0R�$�e��.}
�,�!��B|V�?(�SL�ЌIh��h7���J�_%��k��"�>ۮXg@���0?yA4�Ц]g����� +�4i�FS%�*�C[hR�y��8HxAh��A�#��_"��h��A�<�a)ip��Bk��f��T�
�F ��^|~���V�U!��t=�|:AKh��S�� D*���!DSxQ哗5cJJ�D<��Ϋ&l������`�oaK���0�b&b�t�?����h�D����b�X+�zi��di4�B�i4�#T�ܹ����!i�?����!�^��T(�>!L ��&Wl���&JuC�X�FY�}O���}���&����_z>"�<v!<�B��7��(���oT��LHf5��z(v���?�&�٤q�
C�Oj�Vk`��m/���
 {�>lz��2��#�X�[��ʺ��u�0�
[����
���[E���p15��t��ڋX��a-����k>��o87^	|4��+홆�+h���TI��}�X+�G5�wB�����
��M��yp�Y ����왕��kQ�
����Z�nT[sB$��rû�Ld�t�a
@���)�9�l�A��z�ΟGu�R;��M�m~�hb�SV��5���7��X���n\E誌��$T�<ql���:•0}�����Ή=�o�!��M۬a��D�� Io:��R	=N'ڂ��1C�8�Bj.�T��2�4B4�	Pj0�檘]�6ߞr^wD�^xa����#i���)怺��֐9}U�橜+�"xg�w�Ԧ�"�m��1��'���IX�Ӕ���N׆�Qd�w�ʇ�5w|�<�1����՞���J5��EQүI)�Qӧ���n���f�u<+W_����E����';y�!n�O��@�^Q��hQ\�13��Rߢ�V ��BO?Gok����?݅���삒�98?����શ�E�6%a�3�&E�U�f�s�š��Ei'n�Q�p�=�=���Q�y7t�*ڣ�]�>��h�Ĥ�"��"��%
<�7���l��ҝ3�
fڢ�6|����f��u���~x�oQ,�g��p��Wٴ^���]N��qE���q:��#��d?��������q����K-�^���T�*��	���	�P�S9"��(�6,���~v���7����Ա���O��ݏV���p°��S���X[Q�� ��;
D�q
��G�A�� m�;&��7�}\P�^��\ �Ü���2��T~�էTK7	�������j�5�ḿ�{��ɏ�|sDu��xs��U������V�YN�^��~��3�6�Kz$	s���?`�p�%������!�mYD0��W�#����]���5���I�,�٤�?�����@<c��Qd�{|�&z)D����"5.p��$+�n��pN9���aw�+յG�/r����T��Y��2�x����jJ�74y�'��B~���!�u�Bא�e��5���j�ՠ�����1N"������>oC8�j��_o�� �N��4|��a�!�qV����%52�	�ە�w�*y�����mCOpʹk�蛇������S�	\�rFkr�R(=���&�Q�(����i��֥��G��Q�D�u���!�Jv$�(���]gRI
�	���3v��lg'��{V�ۆ82u9�6!o��T�*�	'^�T��Vv�\�G5�8���su�}�/~����������{���+�n����6�Y�ʰ�,��%o�h]�ɪ����K�CFJ�]���&��8E�v��u\�t/�(��p̫sQ�8��8�he+����ڀ�/v/
�c\(o���+ðPf#�7oA�U~^���	�*gB��ҡ2�D�*Yԍ�����؎�U	�*���<	8�8K�,�?%�/ v���?��>��χmIJ���*n}#89�$�Ɩ\�~<,AӮ�j�CP�|+8`s:��Vn��xo�{�X<�k�M�-��2�l�3+��7��
h��4�M_S	�{F��_�������L|�;dؾ�W�+��9�\��lP�-��.}p%�$����§
�I�Lyϖv��p>�	�6�I�UT�*m���Uxk{��,�cA�iV�ϕ#��h7�4��9j�b��ůK#�M}n{+rMI��s��1O�XS�~�Fe�����<���H贇�G@p�����Aq�>�A��������jӈ�bS��������x?�H�R��U�%-c.#.c/��.z���h��	��/�'<���n������=]}�V3����(K��t����
J��??cKK��(�窾��BSNI�s�޸JH�`�?�����V�
�*�$��t�7 zH�3/ܞ��Pc}�h ��_)fj̔r*y
s����CY�̳P�)�q���.T�w@qp8�<*iB����Oq޵��V�5�u�u�@��*(���
z�
�/`���z�%3�^�ٴ�͛�$&�B$t8�3�P:^Pn�I���e�Z��+��u�A�w�J��D��ڪ�֣��!�G['���
$��<1��\�}�S�X��&�Į�O*n%	�iq2ƙ�-s���&ެ�����[�YS��{��)�����\�$a�h�uJ�E!X�ev�߼��L%�A��2�L�9V{vJ����uA ẋ0V�Y���q��x�%{�����^���4d@�4[�,K"<N� �`�-%�_=���
�磷[b�WIN^��$O��i@mV���vtZG�ʮ{SH���1{H�ސ/�#{�
��A���̃��ڈ�D��Z�?}U¯}F7�H#7!;�Q|�A���c���@'$z=�vtF�D�m��1ۿ"5oٸ���q!7f0�XXQ���=�I��`6�ϕ��~��iʲ�\EYpi�jRa�m�q���eZ��o��K��b��x�4F��g��~Kh�P�S
�1�%�h;sUb�C9��+ �$j��%ˈ�7�x�i\�%hLa�z$�
>hO��ٔ���~��k�����w0>ru���o�e{��Fx�3:�]����vtW禩��F=�w��,�'��K���h������2OX�-�F����)�<ݕ���<��,�C�Kp�I�V/n�����lH�siw�V��Rz�ژ�;4�����'-��)�U�?�.��e��ɕ"�Ů=��xM��ɥ�8nM3��ob�8�$n�	x�G$�P5��T8O��M|��^ğŹ��4p��_��]S�0L11g��o����0��^�D�/�kr��| ���ZX�Պ��}�|���F^���Ӻ�ś�3V؇m��y�d��]��ㅥya��sL�I�'O�3I���ɂ� l4��2ϻ=�X�:�۽�Ic��n�<�̚F���QE���M+�f�e9��C�<^O�eͿ�J�TI��4T���q�yO�����O�I�3k�~f�7>�z=�^m��Q���`�H�A��!=���Ӡ�8�.���cv���K�d_fNF����/����;�L�)�η�M�����Z�
�CGq6�����>�Dߪ��Y����0o�ҩK:�&����rC�g�:my�49Uq=�O]뿑�m;޲�?d��w�9�Mj���a�	�r�'��7�l��O�U��SB>�JVv�*<�&������C���;T%���6���ļLR�"埃�&muX)x�-���L
�+�h��B�G\{��55}|R�l����Zc�F��q�ޙ�'�>�Όx����C��<Q�	3ZNj�^!�êK��a�?n/$�ٽ��"-}c�]��1}�o����dZ~�1~�Ů����
��
?�b��O#"��zS�f3�wt+R�c ��L��k���Q�5�S�S��gjM���(�Q��o+(��c�F�p��v|�����ɂ��`Yx��L��oK[i�2ب���
�,(��Iu/�C�n!��ɠY{�%�_�	"��K�Y�85[%�����[���u����E�R,a��r�Y���E�Z?�f���.Q���'�U��)�k1�eb�����i�1(�^A2m�r�f�i��O�'�[�;6�8�n =�
W@S�i�/?5�認M�k�c-�ɨ�ѽ��lL��ɼ�1��bS6W�;����<�_��Ά+��$�y�d�U��l�r���;��Tߺ}W*:`^R;g�Vv��'�[��5�U�L*�	�A哗y�J�9��@�b�}�c��
}x�i��7=[�I���X����k��k����j�|@8r��{��x��P�=d���T���*Ao[ �i��
��+����s�2^Lf��L"G�!l�œ��W=�9�j�-
��LP�T*�g��FZ��
��%=i�b%ATUU��&zN�5�4Xw{��d(�oR}�3&�ѡI�I-�%@�Q�s����Ds]V$z��M ��[�A������r���{Ǔ��r�C�N`�B����y�#7bn��"�ތ9� �����”`��R6)�Y�ޯ�~�e#zcd�왫S��>(�F/�
��%,F<�H�CD�7��!X� �4��A*�h��-���L���kCw�9��E/҃t�tD��m�9�2����(�޷c#���1�J	���,;�6Rh'��c���	�?���uԗ~z2�x0��o'=�e���u��ػ8�6�������ۖ@6���Ƽk�y���Z��l��0�9|+�� ���N�VJ���<�zx��@lןl%�7��j��#�p�nj<ocjtr��Ģ!�r@$��0#3��c���I�ύ� %t�z����V��˜�x�j���AT$�o;���85u�k2�16�,KoϣA��5s��0*/n�􊣈�|�Z��Ζ���j}ԛ��sUI� ���d��Q��Is�㩯p�N��&g�W�"!�A��G!�n���ߑ�>*?+��[�iǙ�{��{�f��glw���&=��U�̲\t �Rliy�7��G��|�ηg���l������6Hk�B�w���g�Ҳz�VKVd�����}�i�({)l�����y��=�ύªڧ�iLGe���7�S��\]|��oq��"z���1��jk�ky��
ǗCp�f�V7(u�|�LR?�UL*r�?�)�������r�
S�Y�X��JbydqV�ON���;#��玶��	)��X�r�TOv,7"�.�Xq}�
#>��L�S��"��Rvs�C�K��e�d�2{3t.��j�c1�6c,�z�#M7R�zk��>ٓ�E���D$�I��Ս��y&�%sr٢Yd�XTߊ0&t�����zr����okV����5fG뿊W\M�4�9�v�������6�V߷0M��g�5�h� 鑬vL���Tt���c�'��s��on�9���͓�'��`W��n�8v�6�QI��E6�R��
�)Arq��=�+�5�������dF��#��#Qq�צ4���WQxtq�[�mǮ��1��`&��'�0?f����0_7/Қ�����R4e�\$:);�ӷ�}�J�����H�{�rٻE�4�N�Kf=���%L��t-̲ڧV[@>G��� <ڝ��Z��^�%���ep��.��h/�Y�Ejydo�t�O������I�{���Fo�/|�I���;|���7n�oꍬJ�a��>�R <*ܠk��SO�E���8��C�/:Qsqv�g9������5����	D	�"�z��J�y��w�������l���
$��D*_B�"�VsS��|T.Y�d����w�,ãggmNH)Li�1�`�V��I�d?	0��C C��l�Cv?��:���֠`U���ě��
Y��X"����9����Έ���v��Wӟ�(�����*8AL�gh"���.�VyK�N�H���l���DUə��t9�+��vc�<��œP��H��e��T��,��<ף�6&z�m�K�f�cy��#���}�R0&t�:�VC�8 �K���W4��Y�ۅ���Ǭl�I�1&0M��;)����2�f��M��|A˼��wf��/{��Ҝ\�;gW$�s �z�&���U�v�Uk5��N���'VA��
H3�i�:�u ��<L�ؼ�Y!���9h3N5$i���X��k�W���3�W_n���~>OCfzD�0��R�)(c���@�T�.D A�{^�[|�\[ɾ��u��y�`,�sݹȞ�&���
���h���"���|5%<�-�U�b�2�].�oJgS���Ȫ����$o#ѻ3�|yҧu������=0<��p��qx;e�T~h��cC�u�IK8��oB�u���yqY1a��[`���z��򒂖ɗ��*���-!�0AP�T�-:v�S��T�����C1��j��d.�ި��C��Y\�������3*o��k�����52lI8d՝��}��.W��K:n�Q\�0��4��c�mǾ�C)F5�
h;��^kl��
����t;dB({�ʙVM�:sl5�!uI5|�s��D����6�W��)�(|�SLd)����P�IhS�Qx	�\�ԡ.	��/J��^��D5fk��W��R?������[��K���M��oz�/����]��&jx��qY�Oh���v6�z�T�{$��i���B��?��OVD@��2��B�M��1l0o�����d�����K�����^HT'trd�.�q�� ��o�r�]=���������u����y���Ze�@wt�I���s�jv��YK	�˾�b\WV�O�iV��3������)��@�}a�Bk��)n�?�
i���U�l0��n�_����3�>z���Rb���;�B���1�M�=Մ�ӝ����$j8�=���_��B0lk�P�xU���%?���M�8>��9��,T/��TGϬͪ(F��U�s�L�1�k)&zm���Ϝ�*n2\ 8����,5��~�x�����B�t$��-(^��&���B{
�T����E���CC����{Jfr���=6fV�D��.�){&��I�-BV��WW1�_�FO�xYJ\۹�Lɾ�f��-��V�„a�"��x�ѳ9=0P��c���~~�ۆ�N�(�O�2�_�ْ�h��.9%�������"����E�p��"=j��z�n-�*x��?D�l�3
����,%��^z��\i��9v>�R�ԴD�k-�뫹˂�,5�<��/)4��eX��z߃��g��	8�I��N%���P]����&����a]$�L7E�~r���=W�N7v`۫mtg5W�/Jz���?��7А_�p]6��L%�Env�Y�G�uЄ���I��7�B��X��u����Ͱ��hh;ewK���cu����+�\f������>T��<j�i'0�)d�N�Xĭ�󹵭���׎L��1��i4�����ŧ�Rg���H��W�^�U㯉��QE��aj{�`L;��}�4�?�j�5Uvv3�5A�B�b�ٹfS<�Ȇ1��&xXA���gO_�s�	�c�hHO�q�)��UQ,���u��S*qJl������_-����2�G�8��8��-�ɯ�Rb�4�{�<l����[.�E���$a�S?x
XkL�}������`b�����Iś�9�%v����j֬�'�;z�܀�9�2��7��M����{6v� �IБ��7��T��s�}�s�)��cVC��J=ŏ�v�[�\
�|'�XX|�y�ڹ���N#�|��5���
Ev� �}b5]ӽx��r�|~{�X~�r�|��L�s���wՔϢ��P8&R
l,2R�
�_+��`���)o|="��ץ6ᅽ�T�	9Ը�����Ǜ�Sw�F���J-f�I=���C����+�OL.�����R�E���i�l�A(e|�o��Z�<�Mnf��(�V�R!# c�M3��O�F�(���Z:\B������w7h�bc���"�B������i���>^�O"������a,�Y����Kܨ�Ϝ��0�*�[����U܈iZ�&�
��םg~�]��_�����!�9�R�ä\F�Lr uY�Q�``���z<��y�ܠ� ��w�B_������ͦ|.Ҿ��<�2Z�r:�7Q~�]d����ڦ�Z��gD���"�Ͷ'�Vc���5?�J�ⵈ��W�a���Ӟ�_���Ӻ%�6�{v|�D��%>�{�#�i�4:΃F���-@�\���6�V0��Z�kw\�M���-Cun���Q��Q�����x�=L<}�]����<�y�1�̩�Ƽ-�1�U`,����qQE?2��=���G�s�Dx�
$��!�v�h%"n$@�H8�����cX�en���3���z_��XʞN�O���|���� �ʡ��ՐN665����bv��-3�<
&�S~�����@�<�V�N)�F��b/5�TS�
5'�9ۢ�J�ԇ���	�a�ѫw�lxW:��,������xh�řK*�ԧ���L�0�(�'ˁ������h��lq,�N�]H]|!�h����j�C{i�R�.e%��~¼9"�G頼���^��7?1���u�o��q\��K��ű�ϐL��Ȣ�2�9ȏS!�H����1#�<O0f�7�������k�:��"�qmVy���	3C=��zl���imvY4���y�DN��D���9E~Z�mjr��j�,ÿ?��۴�b�ޙ�O{Q=9��uu�*`Ho��T�<�8�`3U��6��
�0��c6V�}�Q�u�7��
T0|�aeVIל̉�o���a]a;���k�Î��y?ܻ�Q��uu�Wtfg�<7P}�v��c{o�#�v��M�w�9H�*��'�9��=K�O�]�Q���`�x9�i/E���X ��Q�$!�#B �7�B���_����9�����|�54�!M�y�(/���'z��Y�C���Ž�`��D$O�${���2���1ҷ@���w:�iw��ni��0?"P>��瑬_T�s]+��Υiq�'�Ğ��|s�#~Q�R�<Pu��;,.���̢�h_Db�'��%�e�j�P��}�=���m�+�TJ�TGnλY���{��*�W^�/zzʬ��y~��T�@��%)��_�w���<������i
"�s�"
b��{�#��*��Q��.a���_�x���7��J"�Z����_�C�aw�d̦�qcC���	��>'�m��.�0�Cm��_	�$?{1��m��_�����Fn�ͼ�)k���fb���W��>`�L�4����fǣQ1�&�o�'���_�m7N�蕫(b��	�r��W~㭦��&
���
�����`����3����E��2H��r��~�Ea~��mN�$���Y��.,�������s�[�l1PW��RQ��%s&g���s�zF6jFA�[KD�]�F�i,&�F��)��r=pZ�����H��S_EY����V��#ͿN!�B�4-Hі��I���J6)�����T媕���G�~��w��
:��2�#8���ݚ0�8���}��U��b�g,/٭S	;�����gut�G�:q��C�}q=���50V�]��\�� kO%Qo��t�n�I�J]cb�!U��d��䑁���S����g�❜h��=9���6\�Ē�
�*n��Ю�t���*�<Įa���L���;/�.��5C�x����r7[=��LN���D���0����p��L}�j��'�{�^"���}�ۀ��T��7 ��`
t���Z�-]ݬ�.8ּ2
f�3��H�j�W�ϗ�(^\��N%3�05���!wA��$����p/�Ae0�M{x?��(#CH�	%�@�d���@<[ٮ�z:wP����
Ĵ��\�eA�FK��<S�S߄���@YL�N���P����0|���¾	}eb�6WFp�깗�%�d�$��`��2,Au�j����t�S��>�c��d�iec�v�=j~o�Ix��L�fJ�۽l{�� �d��K�N6�rXD����qFH����3L#�G�o��=�K��_�$�p���*<yJ-fE߳�D
��<7�gp�knjj��Ҵy��!��L�b~��t�J�dfR	��0�l�(oڢɰ2��mV �g��v�a�W*5�{�t+VW�Zs!

���U��Dj�ĕ��DA!wS���/oLaFq�_YL1r(�13����R�N5p���+�v�%ʄ���	�򗻐c���,�f�eA�4���{��K{ X{�i�87���p����X���K�pgܶc� E�v�vŝqzТ�9m��X+Rk�y���ua'P�R�tD�]{�E��K��M���Ŏ{覥'�G�0�l
K��?f�'[��l�W"�OFE|�웍�7�	���Hdv�o��/>p倸��I�8z�C"sbM��Õ���N�#V�6���k�}�E�x(�E>B Nv��צ�N'�����Q{$Jo*#;���%���:'���!9 Ij���xVJ%��d;��&��q�%�q�0��L�+�/.�C���PH6R�-�ԡ��>ɦT�Z���X��̴�d��R�S��Ǒ�����7�G��{gl��-�k�q�n�����%���l���/$�n���	Gɤ�����7����K.p�.v-���s�P�Iځ�����z-�w0:�Ceܟ��a��
����3�ę��U�۷�J����|O>��"�fpˀ�oMd�&���AA0G~�`�$�}�0��!&��������h/Ec��l:꟎ɯI�#h�_X��C�����ջ�kO{�Z����/3e����-��wջ���m�Ce���P����C�[¿�߂.�\D��ynRإ$�gX��#����@֏_C��������{������]}�+Bv������r�J�`�e�unCZ��ȫ��Dh0�@eݩC������M��[PI�NM)"2�ڸ\��he��[�һpإt�
,nk��J��>mm��n� ��+ͽe�=@�z*l�_���p�Y�z��1qG³>p��gP����2��',�d����k�
2�r�Ѩ4�(��cLyv����"5�8�C&#�n�%k�#���l}=l
�51a�J��ؒx{ʟ����k�l�bCS�H�$�y������L�X�Dy	�
:��|��ɕSH)\^��b���bQ�u:\���*�_ڴֆLP!p��3d��R��8+��2g�B�E�i&09�fC�D'N/.J�Uf�;F�գS��`�QR�=,1�����$�O菹CO���U��K����O���A����Qs�Xe����3�&9r���
�.�ZQ�؅<����%��Xb�<�&���Q�&��	*y�\{�	 Ӌ)W��,C�f��fr
��'��<v
�(9��#'��M�%qՎQ��u}�b�4G�ŃG/sTE�5�
�>	�p�K\���=g���{^��.�����[]XO{�0���9�Ş������{.ܮɐ�
�&���'Y߀�'�z���+?X&!���$����N�ih��W�%ux����,�ij�+��qaʧ%hK�Nu�$�����P�:ߚ��[�ϒ2�"��q���7�$�,�0�w�͎Q@C��w[�S1�h/��� ���4���Ҟl���!O���b��P���	���D��������ƜIP�t�%򩱔O�Õڞ�
Jy�����t���7,��T�sO�,����G�5w!"s"z�$��a�~	"���;~i���;��9��y�C�∦����{���|�q�j	jN���w�s�0M�5�GI?A$����	�j�8<�P�hd ���sN�ƾ�DW�.��Q.���Ce���9�
�)�E]�x� �OT�$0$�v][�=
.�TjY
a�}g���4�v�	�\I�T��a�6�b�gܵ�����-��wA�
�`�O�E-��p�L��O~1{�j�+�J/E�	~�ʼn����*����C!R���u9�ľU����g��YA��l+��@�Y�Ǯs]#|!
�������YY���;o�ts�"�sK~�toA�|C%�*������l���t\㈉ P�R �\�m�}V-�ێW�q�իW��Vq#�#��m�>��[���VH_�n����H��-d�xDnh6YOF:h�2fPJ����7V��ȣ��%��'�J7��r�@��&h�	$rb�ւHZ�N^0�W;�"�A�O�U�>���쑩�B�:52�i<{�+��ߝhZv���ũ�.95�}굗�X�B�C�@+ül��H��ϱ�޽�ԩ��̜lQ�x�!�|�9�^n��M��vS�E�h�X&�2���yL�r*E����w9��)*�T�uG�}�tpd���su��*`V���V:���<�~XW�Ï��깬�N9�&T�%/�
[�&S(R�Z�D-s��ֹ@�,���c�#��c���NjDm.	3av��5�TZ:�>������
��=Fـ;[0�}g��~Nj�sԓ�ōmD�d�wE�
������_Ĥԍ?\&�|�6��@!^V�Z��a�x��||���ܲ@n$_i����n����1x�$�A�r�}U����A�W��h���
h5ɾD;O�%Sw+��^�v�|�-������-Ĩ<�m�!�	���U����+~���k�L
�._9�1�	ሰq;��l���<�Yq�)�l7��]Y�z��U�E�G����Pk��C����o����_�^�_!`
���o�vJ5��I�f� �V侴lV^�~��>}rqS�pq��&kx5+�U���ι.���/���=����bHFNnFx�!�^�M���
#���5�`�%���uL˜&��z������~`yѣ�1�3�[��祔�c����w�����Y���5����|�yc��c�Y��Pg�g@�S��Ԁ͋�T����f��nr��G<C���V6
�`D?�q�?��˴+n^���O���	�ԋ�	o\ep�6}Qk�D�uF�c,l�W�yơ@Ql��>6���O����<a)����߲�|	�@[��9=)Xr!��T��n˦��{w�io����.0���잔Ǽ	
��m�C7}�fTY�j��hT�1'��/�'n�;��������.{�r�1f�ZӉ�݀�W�����r����v�F}�qj��\(��ڍ���9X.�p����)�u�{^|���ƒ"�\(���5�|m���ک�tE������|8�x>:?shh�g�B{<��
�.p�W�9���	T�NUL�TtNt)&��HT�KӞՇ^�]�@���L�PG��[F;�,�lY�8'/7I��6Y\�hC�o�|Y���B�7*�h�m�F�Ʃ��6ܽ[�3�(fxtX�� ob	d�`��G7oP�pPB
$�C�����A�/�Ƙ�o}T�"��K@+Ô����E���0:m�e��.�27�\�ޫ�:(�E!_���[q�����93MؗT��A��<s�0W���њ�C��N<��&7~̜�'��kr&3��fQ�,�x��2ɿ�(1J�('���xc$�!�Q$���r6��.M^�\��
v?��Ͽ��6�s)9�;��^���:�[稠�`3s�f2�IL��Xbr+M��&�r�ͫ�� îl�xL��Z��D�Es��y�pԯ�Ya�Q�n��wD,��z�{P��p�&��u��D��������S��F[R�hՓd�g�*^B�Q�=��^j� 
�J"�󲂱�s,p������<j|��ٝ:��\���&qI�KZ�A��/�tUYo&KΔ&�k��1m+9k%�1+�8en%��4R/e��9�����:����>=���zk�`�
���_J�rT+ ��Ij7n��Q�0�t����*�A�4�lDz#�R����������b�Z�B��߲�`���[9.�W��ØԪp�C��p�l>�YW��J��|�?=H��c�)��F��>aX�J_n��6�N�͛�'�m��g.���'���W��Dp���?$̢k��M?:1wդK�/��:�#������ԅ6��}�iei���"T�{�ayFC;8�_��v̶_�&C��|���I����x���Z&
���)�f���=~�ż-32�|�<��cU���>����:,�|11@L}J���Ï��DL������_h�l�h�Z�,���t#>�`�~�8��^:�C��>�1۞��� �p%M4aU#��ܼ���z�ZUїɞ��5V�"��}ZVҭ
�)#�N{�v̶x�(�N�b'�_�a�3�ŏ�	�ʾ����ti��f����8���[��� ����DS�Y�8WڌI�?p���@�nc��B����=#k�dng����dD�Ʊ�C��K@M���K�~;���Q}[�ܚL�>ﺏ�'>�(j���%P��G��+$�9�kC��o��1~, 73�*4�v�����e��[��<F؛ڒ�,�ת�n�lSd��P�;���K�|mJ�i|��
�ܖ�P�}4�1fTȤ����nCd�O�Ս���ե�
�4�P�i��i��؄��ت�N�4���H�m�O�<	��p�`�L�YMn�4~��x�)��ٝ� �7A�s��r��y�a�G��Y��Kq��t���:�qdo㲚���_5�wY5��D�u����F���Y�
��O��VF�
߆��YǾK_�x���qO��D�2��5+����c_��?� u:�R篬%,Q]	��&.ٴ���lj樂d�V�#8��^�^Dr��=?����w8���T�c�_�̢*7!����LO�A�A+~e�G�L���-P#�kL��\���=2�.�뙶P��ʣ���!��f
�Qe�5��3���>�B��6��kT)�.��v�dF�F��1�džJ�b���N)�I3�̤�Bifd#�f?p�2j�U&��UNs�,Ł��祅A)/şo/���F�/��%��BS�Y�\#L���`�}����i��ӍƇ--,/�R�$M�.�
_J��2I� ̀�v��9E�BG�&
��{Z��x!�A9�[����L�1����� ����z������w����RFߎJ�w<�f]��1"y8`5�����{P�0���8=2�.։���u���d+%�$́��
}^	<?i�$�O�M��
Ϩ�c�_8�_�	�����<'X�븯�эIz�
�����<����3�8<��x�(�S��I�P��0{˩��S��Ū]�%���w-�h�S3-����+P������_G3mm�[��ӄ�l�~j�,v�*�\���ړ|��<-��
�Ϻ*em��?`-ڎ�|o_M��+���)����{�q駱�m}����V1�V��j���c���d�0�[	�|
��Y���<~H�U���Ϝ7�c])�?�=�:��Ù[
xCkB�=�-=T�]�E�nW���>�t��o�����wgnj]�6S��oO\eظ��%:�F�12����н^(�ٰ�b��_
�۶����ܴ��p�}��Ĕŗ	ڐҌ�D0�6U-�&*W#.���^����djt&���N�{Fk��n�l'u�ל[��2�hb�o5_p��K��׫n�y "��N��A��XN`���H5;ݰu)��
l��w��o��X�iݾ.�?�'SiX��-�0�U��4����i�z�˛�V�	b�O�6�A�����T&|�X�:W��f����)��y6�ǖ!S_��Hr�������`$옟�!�$�� [�(���+��P�cO`�Y�t+��ʕb��S��M��7#B`s�5�n��@��+T2N,�f��8�:�Q.}^ky9?3yT@_�����#�z�Wt���ㆲ�Ъ+Ж�E�_8u]aSev�@�A!֤/�lm�#&T֑UܯO�4�jfX!����*~D���@�@������ㇷUzȩ��Ip��⃺)�ﳢm�/ɔ����B�~�D����0]ΰ�_��:s>L�����ӕ�S�U����]4�aܾ����i�匯�����xt(�;�U� t�>������cd��:�!;}��U�;�n����1�JI�O?�19<�:�94#l���uG!Q��������H�g`��.��E�%C%k�N����ܶ�V$m���2t�`%�;�{��8͘�:F�	��sdUѧ-���׌�\o�w�z9
Ɠ����Fꛄe�͗�E3�_������Uu|�.y3|�C��|�~�5�!p���
�����6����F��G���5���F#׳��E�7�
�<�LD�T4�mk1O9� x�L�RzS&s/
?=��cVZ��d��ヘQ�p;=I��wQ�>��k5���g�M7Kp!�#��=	�Ha�8�]������zybw*7���nl�wK�w�8]��,�}�l�/i�u���U/�	���B�q?r�mb�@%����;�¿��TT8��~ݞ��o}�^P�Q�۳�ҩH��c|JZ�?q��7�
VϽB�>姮dd��X8#���eC�T�}�h����*�D`���W������{�1�Z���mc�<�MG��MȌw�'�FC���v�zA6�p���`���!R��]���Sgy]��������5Xu�oc��?2��=Z�ۅ{������6X��$A�>���s�>{���3w����Dη�/~<L�JI�
�@D"�1pUb&N�`��љDt�>��>H�e�4�!�!D�X��5�T�O*U���3x��A�u���T:��ZO(�:EV0���T�r؁���i���2�w&3[��*l6s5�4g�HŠ"AwX$v�u�����0ܻ���r@:X���~�go�Jo��l��#����O!�����M�1_�Es�&,
�
*� ��ƈ�5Fsa�Q��ꌊ(���0��a(��S,
����E�Ҡwҝ̚4W��F����f•�酊U7�+k���,@�_���CΙ
���P=��m��E˯�_�:��g�T�Θ.��I���qX�Y<7��)��vO,`5[I#�a�*�Kx�Eu�s"x���AwQDAQ��.�恡���x<Y�p(�ڦK���3;�3���F;b7����7��X��#90�z�܃�T�-��SŞ������Զo�0�N2�B�x���qMk�w,��Gtf
�a�B_��/�B�,�d�f#���<�O��[,�=5�ı���
g������Pb����V�.��SDW�v1!x���f��A���[�j�~c����X��s!u啢%T���ߢa��uRN�V_���B�KT���`���T�85)���YGaw�/�L/�l=E�0�`���ɦ�뮼O�4Kno�&�ԗ41%S�rM�z����Xe���E#��͢��p�rJ�障�)�ft��@n�B�V�T�����9J��x��P��H.���&��b��(�,�NF�����'���2�KRa�eQ��ϕ����y�)�{�h3=��'5'M����d��ʼn��Y�u�1*�G�I�R�T=|Yo'�i��&��\O���Z��g�D{}���\��+z;�,֬7{>X��	G, aR��]a$�Ǻ����a��k�`n"b}1(?(g~�����n��1�b���D�}�d,�9��4��8���l��K���SZɄ�jl#�qq�?S��Z�V���F�ʭ��Z�./PX%maR��'����*6��\�ûV	��2�gY�@
e���\�`���PL$N.���1���d"b����(`6k,��瑄} ���#	0)��ۚ態	��`��{��{��YjsfX�D"R��V?����J�bM����7�%��{�{I�n6�{жDH)Qo(J��3f_c��$�BKAj��A~����ۦW��<��\9_�4���ݢ?>�Q���D��I�Ͷ��]�d3�8�K����k���D}v�n�к�щ��e_{[�p�o-�K�1��cE�A@
�Y����lK�?%띅)f�����B��:�-��X�E�����l��/5��,�L���G�xX��$�ܲC@v���ۛ'��y�|�
��sh$bAc[R��7?��g�� 8e��z�v!l:�����u�����4���9X�L��Le�V�ܒ��=�K�YF�4i�ڮR��F���P>)h�E� �t�N�+ �Ep
���z|vś�\����N��#4/�Sz@���L��RWJ��$����tw��T��ʔ��.[@I�-�����箝�yv� h_�����pyt%O�f �opx��"�<���'P�R�L!u�[��=j��a�����>U��!߮ъ���`�=��q���^���=lSq�ؕ�������3#�LU/�"�3_f%m_�a��
��!LԞ�d`�5�q��6��g7fT�b!ĿJ�*%Ѵ��:!��B��Q
h{�p���H%	1=���
��� ���w�eƶ9��<��ەy��7R�Y�����Kv�]�H������_�'��$&q銆����6�hmC�Z��K{q�~z�ܰ }a�b�
�uIt�S�N-�L�ȤCRoEa#(�<l��>��(������)��.*�9~S��ץ��|���^��[h���,JT_I,��2uQh )�}�f���#M�vUF����k��s�Y�>x�@�J�x>����v]�YF�ꒂY�dj�����X|�^�MG��oihw���˧��OƎ'�F�;:CC��ks��3�4��lJ��5�V�/�'��u�eE�9"+6��N�����Zz�Ą	��/+�?�UV��n�gRe����O����h����.������vQW�$�n�@Q������P-�T��in�0�\pP�r�z���p�9(x#`Q5�پ��\��3���.��g�R+K�u�*Ƞ�Gޖ&��R�d�i?�r���ϻ��՘���ng�f'��'�����m)��Nu+^iS����p��j�.���6�ͱ�����&�j�!�IL����#䡐6y@��#��"<-��D�q��ӱ�)�8䤮������IkR�k/*�\ŵh��Ƽve�^����c���e�ԝQ�� ���h����f�2h(�EY�����WL�Ceڐ��D�M�^3���2^7U���!��*���Z�>P�*K��f�]˥�e���KB�U*����@^!�O�x1k~��->s�aW;9nL;����$5�(��7�-��1I�52�P�8Ҽgk��9Iګ����K���b�vf,b7�t��.�,"�n���޳5)��,,AJRa�[-`���l�>d��m�]�
�9wW��p_�=��f��q�%#Cf���w��-��Z4K��H��h۔^IG[�Y�4�ȠB"�g��ܭ�i�Q������t�5m���}{ɏ�&�-�.jnt�z�D��7~�tq�UN���?PYb�	i�(��������ظ��{d�B\{����,LXi^�I�g���M�~EWay��[��TL77]ٗ�]����N��'����&���C��F�<�um��K�ɴ�K�n
�G+��D;�2v��}+�h��fѺؗ��
���F�6`NPv�*1Q6���3&
�Dz����q=�M���w�`�����g1�O��A1�\ז��a��Z��`Sh�tγ��������F�?`j�{��U��W��9�d�+����d|tQj��+;
�ӧ�
B�!c�^a�� �q�@��QϤj����NR�����H���<$���Z�,���!:m���c��a��z��W�}�
�4�7Ɣ�Q͗�g��Rnd;�F��pۉ4ȝ����c.���^4��CM��,���0�k2+
���"�
;���Ofo�f��9לJ�j��F-��1EՊ�d���A��)���BW�����+RU�۫=�[3����(���j&7xmKxdT5U�ڀ�r�p�L�H*],�m� ^!��'�H/�^�]�
�'��/6�����	}�vɀ�4O�D~�Óo-˹H��h�a�� �E�Q0�W�*�O��3�0���s?<�����F1�-Ԯ��L��D���D�Ca�$�ufUr�������W�a��w4�c$��BH����̶XGE��s,���1]���LvX)%��|h�_�2'��F�	�?��S���PHt�TP���F��w��3���,�gR�,6��_�.��-C�Ұ�֖F�=2hI��h�ŇEiЄq����"��X�H�MXW\V3����5&"Ӱ���t2�'֤����b�8�b�������=�M��@��E�y��.�?�H.{�t�~��ݷ}�o�L4ڂAW����Y����%�*�)&�)�E4%��q�&S�um�'2-�,��{�����E2��
�!�zi\�Y�aƝ̸���ˣ�F,m������$�t%Zl+�r�ܲei���>�5�c�S�����6�uB�A�I.,6^B@�^i;$���Y�M�2���p�iyT�U�\�	�]��[@�U!��|y7#�#J�[k��NWa![A�j���]�+)�<���^�������G�T��qHN��9C��k'����A,a/��7���-F*q��3���}�!�P�
i�����N1�m˖D��<-XBel��|l��A��FF�~pc0�;����~j�_���5����T�3K�Uv���NF'��锈.)�u�j��U�l�ރ���†ßn��	���H��H@��r��C����
�����ZNj�MW�Ȣ��{K���B�73n����Y��v�2t�c5�X�T4���->"4��3���}�+h�v�=l��@�v��<��1�X�cw�R�e����$��l6������c��Tj5ܣ��0P����dm��S�l\
�7��'vt:�E�)�u��^��f~��ғ�'8*�ѩ�͐RF��0,’]�f�	��U�2=m^`�]u�Rg����m��:�%��/��q&b"�@�8�-�o�Z�}pװ�.�֫bz���>LI��7�TR�-;[���]���,A_VA����x�4��Q�Xmi�+�b���F��r��3�
 B,��l��K�vR�Smpt��
Q��l�&n�eJF�	n՘u�#FN��f�_9�ι��t˞�X�\��4K̿9�R���eۚ����?�J �у,/����x�xN��-R�*\9�qӏ����9yÔC��M=���2�����2���ϼ��4��>o<�ݦ�[��J��M��'8�!�}��]Q��UW��ms��C���_�bU�`'�x9�}dj^C��]��u��Pk�Ѫ�yCPM:&���_��
�f&���_� �&Lir���:2�בy?�6�+2��G���_G�dfONO��M��K9��z�lz#�J��nڳY��&>KФ�g��XX\0�R&O[9�p�G:�َh#��}��n�@�]��	�iJt&�ܻH��$�!Q����x���R�Z,r�.T�q$Ue��Z1|�)X�2�,j��q4�BS��WjļS��m���^�6%�DR������79���5��
��ƍBt�Y�|���6�A�=f2Z��[Վo���o�
��칻�����˗t�"(?j�c0o�MiU�m�47����۪SDg�=�:�+�N.˖*s3�]+	Gx�~��>#�*��1	7�A��!�������$N���z�^HK���o�i�[Y�:+0�&*���AF�]C��m9�#$��L��T�s����{񺭫�Wk�
d��H��=������Z��l������{��,��+Lg��C��"X:�N�/�6G{�>o��r���QgF�/��!�`0�Y=�m�*׉�)p�h��
�<yܱ�<�q��	�,��kM!�oz�U!O?XM%%kO\j����m��M�7������0�ʏ��[U��+/Y�306�����0�X�x$�D�Fy�Y���։�E��Y����-�˰�.�KW��Fd��a2H�� �S%�\���eg1�l�Xcly�0���{�)�L#��B*'�g�05�fFd������z���Ds��9��ɚ���Ҭ���i)�4�֍���C�}������������\�,k	��;�x�����5�.��=�y�qE�01&���pAƄ0Ab��5�	P���u+΍����kU��r���� �tW�AU�b�u��uV=P�W "9~N��}�k�j�����E
���`���.���Kβ�~�Y02�,B�<B���$x�J�p	mɹ�|ߟf���ĉ��D�]��>/�����O�	��=�[/��H���u��\�����S��iy\��I��[�x;Q�G��e�9ԃH����al����RX,xb�����䦸�"��/�}��7�K.J���i�����߾�I{c�`C���C�Q�E��$�72��f,��Nh��B�և���-�tm~<c=�6��<dm�R�e���WmF>f���F�sw��.���I���a&9>��������
���K����30ܫw�oi��Sk�4��J�+r$"HAM�����S��{z�{��3a/�c��U$}`��\��N��׻�N�q�Bٛn�%�lbg���6oq��q��l�N%��8��f�VC�U��(
M�b&qpӥ�@�i�YX��+�xo
D�KK�j�*�q�<���!p;��R�\�`I��F��KmKi�u��:�_:�=��<`���M�ZP�$�Ȱ�y�l�%/���s��7�&�,��Eਈ-X�Rj9��w���N?�֡e&
]q	�1x�zE���G�8\�>��}C`�}QS�~&�%mx����?h��X�\��vހ���Y�ЊfE^�쀙~�:1�5%�'"�����~w�M����]��q�TP_�Sy7��$��6��1�5�g���ܸ2%��C��}�'q���+`5˿�Q]�����э������-�f��t
t�Bs�\_�W�f{_y�vhA�>ke�a�����
RRw�Mi�Ă��(Є��!P�)U�l9��,C[���ţ�[,�����NL����dc"��,�$*�*�YP��%4����pa����!��0rw׆����=��`0���=�)�oƮŖy�|��~�e�y�p~��7Ns���׫�����
\���(���N�P��#uL�x�y�<�w8��3��}��9����lq��A�W��}����^mMM�H�N��Q���'e�.0J�u�;4����I�Ŏ���>�]+��ŝc��1r�{�XA�|gۘ�,&Q��e�Er!�;�W�\
Ћ�}8P7���8�Y,6dъ	8O+��u�2��������zp0�(f,�Ü��3�d�FΆ�U��Z>����_�����P�D��5Z�����8O"'Ng�Ca�����tN��[�����f�sՂP��-G1ח�ؐ
�B� �т3��!aȞϿ��x�5EN����_���'L��j���`~)}�d��2AT��T�޺��a�g[C�
��p���؍���Ú{����z���<?f��m�ԛIڷm(S��@{�`��d,'�
�ݨ���g�S���̢��pa����;EД��,����ɲ_z<�����YX\��*GJhl�+7��Ē�k���5|BO&h�z�8�ULFp�ZR2�‘��^�����rgj�x�^\�ퟃ���B�%e�*l�������#ڸ�z��
\A���!�B�EN�;�bF����t��ćd�#�?nhҘ��y�E�;�쒞&p��}=����}�LYfz�<S�������C4�{͋>N�H�nQ\8�s��kF2�d�rnj�ؐ�~��vG�3RF0�o�F�{��x^�&Q_r"�kAmc���߉~�d�ʔ"��<��
 �n/qV�;z
��%��Ổ�_9#���|���d�� �X�%2�J��9�WӒ�+ٚ�]���ȑ�+`�*G"1oN�uT�^J$Äj�Xh����YMq��3x�5+��b^�X.�R�ǃ���W��7�jx�.?ڕ[څ���
R���
_��H��^����~�O���a�[84�+$̷2����rV:�ƃ�XX��S}��Ftz��/��ܘ,�,�$���ד׈�%�}��J9�"c��2ٲ	�M�*�bMB�+�^�iw����D�l^�(Ɋ�5M�¿��×U׿_��_5�t-���q~�i�/�ϫ��*�T_E����/ֹ4�}gO��Tt���#�X 7F��	 [0�>��l��mA�Խ��\�����|r�Ɂ��G?���a� ��.I��6%8sk@�
7E+>3���8�{�]dA@�tJi��j����I�G�q����
[��2k��"�a�Ÿb=1��h ؎�y"mCl���/�U�7(7?�D��>.11�U�H5����.�;rB����	2�G���tp����(f����jR]�2^�H�&-����7�]��;%�[�_�3}k`����y|�h$��R����[��U�퓿�:^d���4��J���
��VgCq$��d�=����C��z�U��&��H�‘��J"X1�aq��ݩ^�=Brﵣ3���j��ѐ��cd�t���87�S"��v��|��e��Ȉ�F�r��{�|}���SL������/���e.jm&\fy.��
����(��XL�&��u"�F]�7�E��p���y���GBr����3Ѡ'��F�B�2#��Nĭs�Ac�?*s^Ϭ�)߲��~�[�n���?O=�yղy�[�]���������aeʒ�J3@�&>��^)~3�
�e}u��d�������qq�`u!�/3wyݡaagN1p��^q_ctY��� ����7����:�>���	�ﲱ��<�^o���Yh��辉3e�8"��[.��^:�q謊���͜\:j�����W'���
��'�8^�6���`��>� Zv�:�K���r�K�g���!M�>U��j +�)�u�&�Y �!U��!�N��ysn��>�p?+
�"=�w�0�鑟{$�����1�%C=p��V�X��KBJ�yPv��H��&�k)E�=�s���+���"�^9��W�O�>0O����R֞��t��S�}�EX���auȁi�#H��7Ztp�+�/�pt��oRW5q�r�~�D_kK*�{{;ծ���xD��q����3\Qm����2����?���b�I��x��E&�|�2�M̟�v�E��C�!=�t�lJ=)�O1=�F�2��Nu�e���RJ���|)�dUԇmk�ݱ	h�>�j�>]i8o
����%E��.�ޮ?�_V&�|:�zQ��pB�߄h�=)��bF�
�HFp��[A��G1K���m�c�4��ԂQ6��z��(��贕�����������H@�Ճ�uH�� ��%؟T�ΗV�3�gPO	�i��0YJ��ߦ;F�
�V�5��鑭h��%X�]8�/�+ep$pKdzK:�{6FZ߱��c��l�g�h�8f�3�^i��Js���H��$�d������쏤���Zۀ��f,g�b�9r֥Y��Oa�"/�Mړ��t\�`�g��Q���9v�+.�m��U<�QƗ����[����T�͡Xe� l����������|Cn�Qc�t{���+A
���	:�2��3���3�V�i��f�7��@nh���grW	�5`"�P�iQ���T�%N�RnWC)5͢�G�0m�||�f�(�][���zK�qEeŞ׈�^�$�,�gC�=>N�E���ުB�_��%��i�P�߄Ɔ�`�yMJ��߬��U�ֈ?�ZG;�1�5��w|ui��5�:ڨ�ުd���{׹�.��q�2�V�fv�*C,'9�(�o��Bb![5�$X++*���u�X}{5��<���S�%zXՃ'�e�����T�R�^�H3��������K�ml6~xC��_�P0�A��?�%��;O�>{�
i�C�n�}]���C&��;��Pii������3��ቛd�Y�
 ���;?}��4پpCc*(|U,�yH����.����*��g4�U���,3�"��\�mi@�^vm���2ۖ/����m�3� �(�=�g���Sˏ`I���@E�&T�>I|��Q�+k���((9s-(��zF.�<�ew��T���~DIZ�$4
H1]���{�b]t8M$
���U�b)daU�N����c�@����On�&a�����~y 1i��no}�z`@�]zqmG�T���w6)^��.d����ڏ����i������𵙱}�s	�\!z�X���ֈ6�֎>U����ښ:�|,1]{k]�;4��#3�������n�-6ī��N�|o<�;�q�ˑn$��Ad��7�Ḃ#qGqM�ӧ��x�j�s�0!�P{���M���O��o�HY�3q��htW�
�:i\��X�G�;D_$�vmu�����ܶ��¡���@�Q�v;�D�Sj۷~���JJi�K"��c�i������͸Zk
;3�ir{m��K�f�W�͍�y���0���O&c�G~(3s;�3���V�=T!�Gl�ENl۬e����g�
v�ڶ���Ty��Kq��t���U���e��O}�레_�k��)�0X�������݀�"�S���%��J������]��]�KO�-e�䐌_�?��U��õ$���������Hf�����k&%e1Ie��0i�t>pzrb��j��w<yx����a��	Y�l��(.Et�5��8J�4��'6�f���|U#�eWfWcʀ��r��t`�p�Gu䈁��M^��$DӶ���c{��x��_=�����Q��+i��|MbV�L�M_b�A�L�#%�Ț,�ՂF7jZ�6���TĻ�C~G�ۋɞ�#�`�Ttx驕;t}Ye��@@����Z,���FJ��u��[w`�p�5�e��������^T��[Sq)g�ˋjаbT&�Y#��J��ʘ�yޥ�v�3�dg���eho��������:�}�Ϫ�d��I��%�L�7W��Lʞ��_)���2i	��8q�w��(=�ߕ�y>��:Nx��]�h8�1
��V9����"r�hX}�f��'��8hz��U��#~|���o�i`�tf��j�w++I<;|E��p֮cL���;�W_/�5�M�A���VӨ�V2�LfP�Q2<����ª
�y���7$���Ca���)�V)ȑ7�ҢJ�@(~}��9E`J-���6��`��^;+�J#&��
����/h���o�3�v���un���6v�WD���iT�YR�|(@
CO?���!���?�:j���{:�4���)�S#1}�N*n]:���R�(o�e�<�Uq�w�*S�Juÿ���5Q^��T�?z�U�_z���dj-�k�Ƌ��e6ҥ�uJ���,�O�=aI�����1�%E�D�)B$o�y���f��R��wrU�f/|��7"�>�UM�R�{��*�r�~�EM~,�6'!ɠ�ϳ��罐s�rIE���b�b༠��
��^��_�����+���].H5��o]O�.'��H{{l2�@ڻW��O�J�Ψx
'�M������,�ϴ���_J���k�]|[?�q��������@kȩi�xK'+���X7M;h�(*�sn�����qd-�-�q��]��<HZ���	7�l}�d�O�Zk������.�r0{���&�/Fv�?q���iS\��d�ij0c�|�����Z��y�~�Y�Q������u�~ʖ�>֔���O|w'el�?�8�@eđ�i���6�����o�p��\(�*�Ͽ8.6.A_�G�[���T�|�Ş�/�wE&�re6�Ƃ����U>�gN���r�:�,
�^�k�&)k�7�1Bv7���M�jS��x���]þq��#U��K��Vl�a��Jd��q�q,�Mo�=e���UƢ|<w9�����v��1��\�u�(`�X}��<R��7�T��<�~O�"=i�в��l$�$�s�s��*nυ�\n����
��QB���w�w��]��oi#�t��/������	�g1�C�6е9?����q���FHB�I`�}\����dkyb�ԀF����h����$$�k%��Äi�#�#h��>���h�NSM���@F�;�Zw����k
4�ƅ<:��'�ɋY	����3�`��*�j��<g	�<=�1�[��fȮ�� ���;A���m�]G?u�
�'K�Aپ�@eZ��Z��ac4���X���E/%~���y�5�\
����o�;E�B+�L*	/��2�^`t�]��팢��h�i��1��`jt6�(h�C�t"A9j�dc6��z6�8%�A��M��u��.�X��2T�,�C\W4�O�k_��2�Q`,N����n�2=η��q��qs��gh�J���OQ��b�:{� ��-��Q��p_�?��rҚ�����m$��7��7F���j���]2{?ދ����R�ģ�L��u�~Y3���e�c2~�=��n�ܶHb'�^,�歬�!�ܾn�X�6�q��S9>N�N���3�V�;���fۭ�ur�r��o����`st�َ^U�jv��ۍ[������V��m�f�nȮ�Y��-q+��J��2��k�&6��ͅ�	wq�/�H�c9W��Xfs��3D�Z�jNh��� �Mek�oe<z�3p�SL$�wɄ�6���e�X;�����k��F��!��s
���b�+�->�	;�^,%�Ȧ,vňͥG�~��H�y���̱�9A�g=�T�ժQ���
u��:VH�Bes����`�*����m\ׂZs)�XW���O2%፸���w@���$uBE>&�@��^�H����\R��0�X�>��v��2���C�T��.[MSU`��N-��;��RMBuRr�UUW|�b֊>M�ˇ��)��p�"W�.��U������?���u��5��$�^�O��?\�������鈚o��ذ��Y��T�[M��9��}����3c��G:���KN��ǭ(��/��9�&6�I�N�
8�p>~>�J���e����yq�����b��sT��G����hJ���^J��p!w'��`�2�����e���������jy��ܗ#�]�1V�wtk��!̕�+/���S~j�Y�ޤ����;]nXkvw��ȦkO�+�&��m/��*I�6�8~>��j����m�u��7<�p����@��Us5����F\
�Ѝ�'vle�	��SMd�w��g�cV�b-��܇#3�ɷ�oa#U�k@�H'ck[�as��f�\^�-���a�KB�J������R�:�+�n��
gh��7~�=��g�Nv��cr����DK�q�6lλ����ܟ�$l���)&j��c�܈+�0������nja�K-�y�D�x�
�v:�>L����T{ƽY��R�p<�$To��3C�Y4�i)��N�F��S��ē���-�W�n��Da��̛��2S��N����4��΂6$;8�{�*uw�p�~:h�87�{��g�(�~Ҏ�_�ԖM�T���g7�;�
����j,���1���![M��L��r�C��~]��3�k?-�'�kV�D�e��d���2��NΏ\��B��kub)�9���ٕ�V6�yO�ٹ��]_E�3��B���v
��l��O?Z콈/1��ޝ�<��8"�K7��I@%<}�GNbU��#bj���d�4b�s���,,��D"����c�ʌ��n~��{7#����UgA=\{��e��&7��1��4�ZgUT�V&s���N��Q6�U{��ئ�޵�7W7
Ҍ�p^|���5��؛oX�H�,�/�0��D��a�ݞu ����d
���Ȯ���:��
]\�XG�08ʌ��v+��.���7��.|���r,��	6��ə*��)�� ���7	ˠ>��^�4:Ì�k��=��S%�w�M5SS���K0Yu�ڜh.�w�����ad�֎��i�^���+���ˏ�(|MP��MA���F�.�oO0{jG�Õ��F���c���v�}�����B�q��O���ɏdP����gR��^�km�²�r4*�ī/q5�c�͂p�XO�ӕ�c��W��ˢ�{���$q��%���8�bM��:�nF�۱f_�B���
Y��EOG��C��i3��$.>B4<n��Wp�C<ʒN��g%��h)/2 ��z�3΅'�����y���{W�;�7�r�ndH��mf�B�屼l��0�U��!z~iʜĎL�_3k�5��Ǿ��sq��]"�+�f.y��D���jAi���q��OEΕ��wG�d:������ym�ݟ���ug?E^�g�g��:{�$�z5�653K��Q����a��<7���m��ܙ�Jɾ�Nы��P�)�q�lv5ˉU�ya�N��k*f�;-ϚԵ{ۿ��~y��Y�s�qі���WS��<2(�}�*�ը)�AI�ܕ��o���Yv�.O��X*���]�3�S�^���a5���1�N�\5��d�8�>X�����j�+�����nahS�����p��c�0j�/^x�۱��b`ʒ
�p���1�ɘF�Ba��E�%������ukCe
�qk�|��\�v��υ̥���uKH���Ι˕���]�%�Ə�?^D��Yۂ���yX�
Sל�V�V<��R�&����P�N_M�b� ��g�!I�ͷV+��u!�� �!:�3�����‹ɓ1�+��?���ܪs�q�Urߨ�݇q��h��[��j��vrJV�=-vĭ&�<��C��JxD �%>��<bgp���l	�D��W07;�5ahz��ܦ��Q�-z��0��wj��/���l�V��r9;e����淊o�稄q\�Y�7<��B���ὕp)�|��D&�,ɸ&#%��Zڳm�Z�G�IzY9ԧ���
���S����~s��q�!wx �m�w�^�42�
V�F�����!g>�{��ꯛ�c7r�
��g5ު��d2G�i���.k�>��,��xh'�6��7�c�xE*������sFY��L�� ��s�~�9�3����DwG�=<���|%׈Ŧ SOj�?���XJ�G�ߟ	��\��\���	�c2ʬ�A��=7�=����N�!�k����]�X�#���y��#�҂eJ9��N"P$�;��0Y� vCӉt��&,GQp!&]����W�=~�P��1_2���XBPW\�$l��ͧ<�ՙ�#a����lW��Tsy��+_,H۪.6��/��M=Ei���N��f-s�ٝ��%ݴ�<�@Յp�����<�_1�����<����$0_N���tڸ`���dJ�Iՙ�8,�ʦ��."&�ՂP���C�[�&�l��NjƵ.2���m�y|e=�`_6�J|�`�j���򖭦�~��|�7hL8�L�>�Н.�X6Ӂ�c����'�sD1���ʌj��99%�H�����d�z���
�w@����T��d���{��n������ڭ\��>�40I��k�%����fq{�J����=dn�Vt��P�n��;h�e#H��'��'2`H^H���ԁJ�=Q��?�1hE����A��c��b��\mIu!Y�H�>�䔡������eXK�lx�}�t�Q���-6�o�GH��i���cFL�u����\9
��j�J���fG0ٜT�X������91b��~o���76�B�ʎ\}_g�zb
=�A�� :7wQ<��?�/T��#n1Z8�^�֙=&m���i�����I��>җ]�,�\h��R����>��Ow��P�;���.���̒���엦�Jb\�dX�h����f( �Gt��k���;�
���M����C�=M�Z5f5)l�!iu�g��R'f�Į���^��bmb�����"������xL��ӞDZ��:f���b��p
����2=��u����d��z'5_(�,�%�J��6P��2��c�W�����=j��.�g񗣙�|�C�y�w���ͮ�
�i���Z�m�ا�Ft��]��2yMn�g��^�
�fڂrs�]w�Yp�ћ�Ҕd���s9f������w9L��Z��@����QzN��TQM�[���N?Wg��`Y�N�{)�⣒A�>U9��:,>K��F��V�{3]|����b]C���{Δ��Htbyz@�4�QV;Vc�ҳ�g�
�YR�!�_������\Y���L�DF�2��}i�JWh�b���)��M���!��t�!�[a��	�Rɹ���	���$�)W�ӧ��UBjK�)�AOFA���Ě�`GO���ʘ�9�:+2�᫝f���Bퟁ��E)�q#��[n�%C��)��5x7k���Aо�[�b+��^��&\[��/$������G�l�-���T��&j�
V1v�U� &�uIq)e��{C�l��틸E&ʼ�6�,5�Ԃ!����?բ�0�5�k^��a�T���W�<�.��8�ɗRC�ʇ�!�y�^=^�N��cvc#uo�u4�7|-�֗��͇�X*��a��9��f�z{�8�%�9�*Ϝ�PU%�g;������WR`6��v�VGŽ��Ҡ�GÄ�#R	��؃g����̈́Z�<_�Jlb�-|�W_郩T�ڧ���g�(!b��Y�jU�-����1~[�}�hn4��l�Q6�L�L���#��0�h8�>�6Zt�F�/�#��C�o
a�B��I1�K�8MO����M���>�k�\�Ml0V+nҩEGΰ�=H֦Y�m��jW�����Ri�
�v֋�s�Ce�@�>6uki,��c�	?�7��i���E>�o�%3�����;�9M:��(7)�He��$�H�4z�so�r��e!�4�d�v�½*��!b�G'|�4c���3��1�4�,n����YK�����-��^�j���P~�s9y2J_Ŵ8�ؙ�<J,�t��9a����+N�����D2�׮	v�glj�䮭�/2C����:�s���XL5~�Qg�sOV��08�:M�h"�$�e�j�M���&f���}�,-OsY��+��L��z����HM+dV���lv�$*��R�G��F����0��)�霵!v�AB�=�x��;)��ç���ᛔ��Oq����/5'?b�����-��^4�%O騗���W�X�B�b���#Udzq�h���5�)�d��Y
K�U�af�{q�e&Սr���wڞ��v���3��н1�N�usݻ�6��ob�ϐ�%G���8r�6^gc	u��0�s8I�G1'"-x����D�3�{��s�0���f/�]�S������
�Í�Ƽ7�v�5sn��tzt��(|��H`�[���4Q񙽇�^9��~/g�,k�(�)ޑz>6dc2K�|9_gRrS�`�mLNy�/9�z>o�q��l�K�7��I
��nٳ3H/<�
���;��u���iAO9�}�߾�s]`����!�g�JU�o;o扻_8�%����xZ��E�G�j��E��`&ךQ��rE�s��-7�)�n��|Ѧ�6߃���D�=���ӑ�L���Z�	�wG~q���L@���<5�A��_�{9�)=��Fv8�
M ��>�U=��9�A^�{�`(t4��6�v*w6���,���̟í���G�6}�s�|�B��vpϴbyJ7[`� ��0f���N�b�T�X�;��m�e�����N��#: ����='��^�O~����KR)�d��K��/�Q<����G_7|�gњ0q���(J�#�� s��ޛ�-s����%�����z&��yjc��=`O��� �Z�*>���X���,R;�;��",?~\�$�|�����	d���P��k�v�so�(݂'�텚U1�nq��-`������D������țE�&\��o�)GD c~����^��n��Y��	�D#i���	���Ҹ+��w\�nF~���ꑬ=й��G�+�'��y���� v~OH�k:q&��-�<�S8�5���_��~և����g��<�p��=x��R��
ul�bpv�(�I��(�H��
��{î	�e���q�'r�3�rn`0̘�td�ߌ��U1�Yyv`/Z� �UU�$�ˌ���h��5L���<7��mIY���YV	#͛�b9J�"

�qE G��%�C��2���2��Z�`lW<a�GSs��܏|5�u�F���nk3��4E;=$%vU��T�n�>Y�UH��W�G�sٗ���&����2Z�
�Ӷ������SY��R���M���o`��z�_��9��7,22�C���(�%�%�Нo{�?Yݵ��Z���h�������pEc�}y������w�������o��NM���-{��15>^��ۘ�#����?f݅?�w����#ޟ
�X��D�s[�k����t�q������$�q���u�����g7v���r��Xs�z�<�_?���O��٤��҉e򓊐��Ԟ�N�eГ���?���d�*��t��-߽Ѿ㼻�r�K3���+3e�k��i��:��2G�X�کC���.���vҜ��C���~=9=E��-��;
ӺN	������51����텮�� 5b�21�k��ZC��t>��d�P��M�m�D�\�o�ުІ��rO���2��>��?,�k�N9�%�\���	j'�uq�+R4�٧�E���$*����~��$���*;��-vX���:rS�L��Tk�V��{����^%[�nՕ�:����B������"���i}�fth���
.-�~��hK�Ƕ��w�4�c�n�rc��v\�Kwvg�3_�6u��=K�|F�VJg��l.th=���5���ӓ���K�-M��Kwݴ�Gt�Ԇ�s&���/�r�׫h�ukexg���.��Mf:��ijz5������yεcBr4��yό�V��*^���c߷�:��t��;��J���Z�M^[����&Z�����~A�+��܎�ߩgf"����}O�1�ҿffl͙��e�/�2����j3Y�B�e��^���1+j[X��;�ަK!��dK�M[�T��/29	9��W|�J�Xmal�ЎE�&m6�Ӕ�~�ޕ)�J��e�2���t�.�l&`t�Z���ٜx��䙳ca
2�Gz��tEm�!v� +Ǥ�ތcB�EJ��/	%�bP:W�osd��\v�|��̜~�Z��"��:�CG���y��%�M���z�\�~�p
�g�~�9�����&�3pz&h��͈��
���d�
�ZR��d�u�y�A�߫}>>zR��_{ۓ"1`�AO
�p{��͵X��i1��R�9ұ`���Y��⒮�V�r��e�(�o)�ޔ���;}{��.l4�j�,���5<�=�m�j����rN�ǀL����JXnB�ys"�	7;l͙�[�/y*s`��Wy•f;�,qQN@g��{_�c�ƹ�-Ǚ������n-ь��&�_JZ:���+�mul>���V�3�^%��J"n�y�7�n��\�)�kv:�~��'W�2�k������+�Z�n�W�8 l\\q���{���q}��<d���sM�B�0n��W�U<rT�M�I�,�wϗ<,���W�r��j*�j �|�'[L�mĝ�›J�퟊s�z0,�D
%�'
K )8E(	Q_̡oa��t��&��Qm�h��X`r �<�
 ����d[���:�j|�PŲW�ȩ�IS��2�5>���I<L��-�W��aq�f�"��.�O�ܓ8rW�"���T�A�_3��Br�B��7���;�!qoc�U;��O��^
��Y�u3��/3)�ɫ5��8J'r�Q+q�h�m�m�O
���� ^�S'���A�\��ղ!��Q��z|����@g��Mz\�3��)�lPB�-D�z2��Xe*P���í1֛��#VE%�f��홏�M�~�J*�
[���7d�o����>�J�9m�b���a��1��Ʉ|B��*��-�D�U৤�Z�[�u�OK��{7���]7O�e!�R�uY��*��AF�|]+?��"�(w����wm�YLЖ(��賗[	���FA�M]����^>�
,w;5��k�mCC���lb��[��b�I��n0���7�C�ߓ)�j'�{rڟ|�o,˦���:�����~=��h]�bh��P2���53���=5b���L�v���w��G5�rB��@���i-ӓt�W�e��W�)��ۂt��ml���m����	����k�����M�n:�"?k�.�|�X��0ȝ�`ii���ic���7|F�D{MQс2��ʔ�b;1����G��'m���򫡢Ql?�/r�RS��R�Q�Z�Y9�dn�ӻ��|�_�9��dJ�[�4\�/q�����61c�t�IȤ-���zC�8�Ί'>z`�h�(r0^t2N	�b5�ݶ�h
�B��"��S��*f4
Y$b-��}]|rs�ZԖ��z63un�;�|�o/��K�O%in�`���7�Hl��y��h�j�i�9gX�m7!|������l��P5KI�H
���\Ȁcf�;�8�T������2���?��?��V��y`���PY�[�̫�V�ìQ��.ۣ��{�W��mapX���Yg��l��8c1>Z�O�q����q*���P�h��m����)#~�n�˦��L+�`��;�t�ϲ��FD�(��d�H����D�@��'��bTt���;�G�q��\������p���j䟋ݞ�|�Rh8	��K�3fj�ek��ƭ�*v��$y�tw;��k��s��oߌL�s����L뮊��
c��,�-
0�MTڅfl
��&q�~O��wI��w��%�@�h+R�.�4�/�Qbr�3��$4��)�Gӻ9Y�2���}�d��`�t�*b
�3pU���IGI�c��.�Ǩ1g����4����34��m�n-Is�.�_OhՅ�
IH� f�g��O�2�9S��@\uI9(13�A�yN�\���Kyud4sQbnϫ��Ī07��ˣ9���'$!��M�(�������XG�N�a(b��3�ty����o�d��$S\'ss����(��Ü�5�Y'�2R5,����?B��W�F�H_ ��Ţtd�Eث��x�7��Z��R��f!��Nڐm3�י��Ǚ%h[=��c��Z}�;��+1����О�S�a���R�ej���X.���ƴ��jS��iO�i̴��0����n�_���{�Q���H��,E��(e�h�_湟�[O�X�f�W�8]�z�i�*%��R04����q�I�7�
1O�~��ڼ@� ˱����r7�t��b�%��9��7�r`�Ķ���S��]�Y���ʹ�36+�3��]Nɞ�P��A�A��eU��X�[�#S�s)���l��R��r����Dq�U�P�Q;
�5dz���Fw9�����_��Z��+�D���� ۺ;٪5x
���'{�
O��	�?bL:��B�ăo�zQ�Zv��]����A��V,N���稠��3�8�&`�e�Ҿb��D�Au��̢#]K��,�;��DL�n��Dr�;f�5?DU�zP�׽����3����kC�����Ӑ���b���heט��IL�sE�3lֹU�����/���40�*��a��l�%�>|�iV��ijS}�C��xd�1Z��%�g��D��q���Y9�3��b�J���q����j�Ǯ�L8���z D�\��X�)�������-��s���c�=s{��O�:дfu��ߣ^_qV���50�ی?�oБ����]5�l`{?��ծ&"�;�Plx�xHj�p�`�����gj��l��:�#;��9$X���{�?�
����+�����W;M�x�G㤏����?����SuD��|6I�iy�
Tn$H�Dg�ܪ�g �]=��6��O�B�6)D�o�c�;�@���Y��M�EW�NU�]{���Bq�T�ǎ����O
��/3��WC���ݚ�o�k��i�į�g.��?'|����"��5R�v�,�8���K|��	�\��[�}v�D,E�W

įf0��b׀�K^�*�!3����d����a��_��â[;;��t�%����%�P.�I������5J�8!M��:a%����(lZ�2Hם��49z�!3���
�D}��G���Ά�M�����~����j���S�O{����b~�)~�3��'+���.[Q�[6��-���/���6c�3;_�i���U���:�T[���[ce��JU]�� X����s3*�	r�>`m���t-�;8����Ť)�!�$�"���x�A��fkU�K��[[��.�Q�lk��~��Q��W+ߗk �x�1ʥ���>k����k���[%t4"5��æ�o��VT�#�7��6Є�Ƚ�;�8�����kP��2Ca@� ��2.g�d�@���x���=��a���w���֟�{��a\7U��I���<tׯ,�
�X:�v�Hڀ=F.r��#6�p�^Mq��|�>�~[~��
�?E��e�od��)P���ךU\�V��=���{�~cH#��	H��,�ޝC��w�-k[A�e�=��WSi %���]�O��:�.������������*�{��Zo��J2�p��O��&Lg�}Sƚ�*ZR=�;����p����%�]���7׿��5����u����ژ�U]�
��g@B��O��O����V�mٟ�k�o��O�7Q�S{���
��w^�V���gW�Fd~�D��o0	���⼸Ƹ���_��.9�}YIyii\iiI���zJ�F�+��e_�y���8�>��ؗ!�ب�@�,��%�=aOK�R���s�VR���&>ڇ`��Vҫ��*���Ŵ��y:�f�"�N<��՜��N/5Z�(}lA�¡���8m[�5W$�fu�����Y�	O3���p�z�>V���)�43�Yz��ȶ#nJ� �T1�.�����o�L�`�t���L�$���3��XL��_M�wR/�B�10�
��0&8��ތoB`��թ_�>�U�}	�]�Q>Bd;��!�<S�\��5N��#�X��Z��.!�*�0���1����Q�L��fek^`Ό_
cZ�h<c;yb��།@�NoI(������z��U�{!���f����٩̨o5Q@�ʊ���ǐ��:P��
.b'��إN*b�J����(�P�4��~��z%ՃH����]�H����KM�-l��@6���!�)�9#8
�ǫ9H=`����`s��o��lo*z-7��t�����T��̼�����n���ِ��J�z��@͍b�m��-"2���l���	!��,@�--42��|۠��YL��v��Z.,r��S5�sC�%����1S��P�jfA�J���F��6�-7�´�_�.��o��0Ω��G��S�,�<�J��T��u,J]�o�?Zb��6O�gڂ�섣~���(�9��:Ӽ
����g��)+�
��>P����wP��f���eN��r4R����S�g������C�b�
x/сN�Xm�D/�S��q~p���L�1cRe�O��N(��$j"K�0i%�R
lS�B��X%�$����M̳��Em%�1��/,�"R���-r�T�\I��T+�R�L3�>�(��)U}Y�O��0��i;e���d܀qjC@�W�P'�ف}�Xy�u�M?i�j�im�2�o`;��T�����ll�w����ʷ*#����o?q����n��#Z�̚<~�w��F��e�zX
K9v�©lF9�m�F�����Bnɿ�f�(�H��D�T�ό�aٔGFy�5�_-u�k��(�PL�2f�����Q+sZ�?���<��x��!��ܱAV\�hx�x�Zͣn��ѵ6���X� 1��eW�*{��p��(�Lbg��tyY�5�R�<�1g��(-�IƁt������(s�51H�P�=Ø��f,�N�P��ä�~:]�1m���t��ʻ̚H����C$�T�G��~M�:D�� n?�-�m����U���dd�mGЩ�h�C�f��k�5I�c�[`Zbv2�b�W���B諧�89�nC�PH*�<Pq���4?d�b
���u�������ܻ�'J��r̽�n�4��":,y�rs
;�#D����
ޖ����k����l�j/�*k9D���b��8��g�9���N�NybC�2������l���T��T��6x��9��!Y\��]g5�dl�K�4��FF��3�n� ]h�Nh����I�f��R=Vz�-H�|����Rf��Q�x����E�:a�)O �y�ud�Yr��[Q䡸�����$���#~I��ByTų̓���H�gð?:��:����C�@y�/J�eȳ���w��%|v���(�,���W�e�����C�Y3�U���w^�� H��"űG��s����e�� ���EhW�ks�~��<�]�?����ҙS��7�
_Ղ)�{$��V���!���:'�
Ԃ3�X:'�`njG�Kn3x�|z��g�c&�(�����	� �~9��r���i���g�YV
zj�ࡑK@�21Fa���m د�M�M�$���'�1���&}�*-> �
��?�v���m?��Z�g�
�Ufb}ԯS��H����R�C=�5���9?b��%��h�#���Hθ�K��y��$>|`��x�~q���������ס�q~}+�w��J���7�o�w>/O�S|��v�:��1��M
%�hi��3h>�s�@�������]�
h�2��+u���H
���2�CZ�@g����i��s����"��u]��J��b�B��cŚ{���m�n@�@��#���� 	@�4�g`����@��F��TG��n�y���XA''�ȒQ�T8cs��I���Z>=i>�P"!B�y��/f�LC�!�-%���qĵ|Q��I^m�7�5�~?`��Vp-��C`�"s�ud,�>�ɩ=�ON�M+�J�j��^>zd_�@9��C�z157g��8�aDAxn�7xB^ݩ.���n\S���|d�������)�q$�c�����<����S�F�(-��S,����D�D?I7*^��G0�@.�nCnR~o��^Ԅ9���'��'q��:f@�FiѸ�P~bVGiDxΐ�iJNɅaH�:eNp�a˩����~���B�Brg��G<fX&�喰��(�Ox1b��P^3r��."����F9��+ȑh�]�`I�U�P�|D嘕�C(*�w��IM*��
O�,	�T#O��d�W��N~C�&��V��)`�
I9R�k
�za���x��O�FU���0m�.b�a�.�b#߱��1�q
:M��i����a�x�Sp��tC��)�74�f-@�� Iw��2#�*�<PB��K���7_�x)��T#v��4el�,��@����������y���,����b0T?��4?�J��r����!E��k��Ny�[��|�qg���B>�jo*�K�\�I��?h�$���� �i$d�d��b�3��\_]U(���g-�7���K<��(nd�B�(�+4�r�%�;�j����&}�ڧk*hwUW��$&g$!M�Y�3sr}�+v;�*�t�qo�V3�ƚ�#���ѯ��HG�d1�-A͸N��ɃdM�D�.�d���Xڑ}���S�Z����u�B��V���]��^�CU���%~��1籫����
iʲ�%'�3��{z�A�)���Z��y�s Q�{n=��\iPd�;%����\���p.����Z9���Y{�m�+��9��v�d���>�%�X�Y��+������L'Q�>e<�)��ދm�'X�:�Pi�J��'K;�l�آ��ל*�Vj����ȁ+�",�"B��Shm��œ��g�7��1�:<�b�t�&��s�f۱t��혏
)�f��/ss�\1{�+��5��XZ3 ����'W�Օb�:���1[���!@�*)��F�V�w��I��Q*��X��!�;#UL�B8��[_=�����_�J��H�:GsB!�<o�i�
�O���e. ]�뼪S�Җ:����T6��
=�42��k�H7��4��VR��:nO�r���-�
V���zbi=
!�է�A�/�s���Q|
�1��6R��)],&]d�o_j���Q�S-Kpo�2 }�
�w��u�.k������p���N�<�&��\�ɐ�0�.�B��N�E`�Aq2|��(A��^^��$iH�7��I�l�U�{�J6�}�IЭK��MB��N��&��^�����G�{&Y�n��Nb��8��� ��<}׵4��$T��~�VMb�Ke��͚Į-ESl�&1��P9ڰW�*��8|K
Ѐ�\��D!�G�p�D�%��N��k���=�0��5�H�Bӧ��bl�e7��{�wy�Ћ��`_n�}8�3[���Y>w�rS{���F������,:b�����9�h"���,�I�"��v#G��*�l�Î�(Czʘˋ;.�%d�.{�2Cu��	���"��p��Z��XE�2ј5O��Z�%M5�˜����r��K]/�$���PEy͹d�̵���\>H�f�����uw9���x�	~�-�HFXsx[
��rn(Y�/v|��I݂8���!����Se���\�xߜ�NP�;���H)~{+���^):�M�O��OD�x!�c��j{��(��G��������L�Ge�=��D�9J����m� -zu��tM�.Ek<�\�#"a:��I�-��^�L�[ߤ�9�Z��͟��҅Z,S�.ӂ�؆�؁.�Ŀn'@KR8?>.�&"bi�w�S�����L��؎(������/ z@����8�Ɠ/���饋i��<U�\����u�O�v�3G�:�>���'KH�k��"ڞ���۴�L��MW�k�|@�9ɧq(����l��(3e1��B��ܶ���C(���0��h��`W~E���7d^�1	GwLY�3�^�
w�������T��n�\�޶dU{�dB�&@�TB�}��*	�^3�bV`
e�W�Nv������$	�!�e<��ܠ��]1�X^�b:����z��4��m]�wk��ܚ-
�������x�����$�uȿ�Z#�َ
(�p\~z���XA�LMH���['���8��s� x*v��ry��>�/�h�
k_��D:ȧ.�?@1�ԋ����,�:)� ˼*0a��emNb,�Z�U}r�&�<�#Շj�ҳv�s^���=����VIe��K�k�/-�X�o��Pl~����=��E7=��+��>=�`�]/�h[��ǫ/س�xX+���E�?/�9�D��3�tS��Zϧ���N����فm�m��{j��6�֯�W�Q��(����=��O���3+~�Â����3,7-���Q<�͸�Y�y�{���W;d����6ŝ��r���t�ut�#jox9�G�+��}�aol&!��V�����P��ڶ<�Ӿ��h�P�@��%m��M��ޒ��,�V~]�xr��1�l�9��$b���nŌl<7�0�������ꞁ���_�*������>"ъ9�B���\�T�_�jק5�[�_��/��2�c���´��e/S12ጻrUltn�B߯�!zm��JSʕmgPN5���&/۝Ww�S>򉓚�s��\�u��:��2��||Z�U�b�<��?�&ť��U~r�9�G#�1b����ؓ+�%�tk{�i}v�@;�S��2�{<�������c�����2]��J��KG���>��c[�u����3Ml_I(���T�th�&�&�8���d���xÓd)_H�T�,N���L��!�[�a�h��]�I��>$X�	�z:/���������x�RV�d�=Hҽ!�$;�!�d�6K�[oa��!�Da
�ͯ`���a۞w������D#�
s�m��Z51m�w�ڇ�P�ʼn����]�F��������D�Ϝ.umߜr��b1�dC���O74�m�Q�j'(VѾ�9�;�2Q�m/�(�(�&�?�C��
0`JK�-�Š}�;µ�
-t�]w�"O	#W���)��:���Q�,Lޚ�5-��ԞU�k���k��5n����ٶ�w���&�J�:��u�JKw��BgE&�g��//��*�/��>�h6y��{�r��3[�y����I�4��EX[߱n�#j]%Z-t��P�DnW�|>ֵ���:�����c}�,��#��G�x��SU��Y��IpFt1~ȳ�>�{ޟf�'t,�/l&Y_��"fŤ"���efI�"�Qo?k&�T��S�\]?:u�5¨�4�6]5Ө[Z�o��1T�vϯ?��3�
(�E��q�z�U�����l1�/�H�~
�]�[Ri�.��:}�A� �H�xYЩ��O�����GG�Y2)�@�L*�Ȍ=��1l�I���F��S|m��X�v�}�9D��X�q�,ކTA�CA*Q�ɟ^����r|+>��B��\?w�Ճ�UڴӭU�(��*��&8*`k�cU��:n�=Eϥ�*[�:]���e�8,:�u��KR��r�T#�Y����JT�{�Srd�f�<
�9���(/��g�宣<��둕}�9��[���uB!�}�
�1t0�����F%�QyҜP(�I[3�9,d ɋ
�U.\��# y�eA�"r>�Ĭ�T�<��gɤh�2��5����w�68nhlt�	A�44���F��ABF�I�4��a�pl��$@�0
`s4���VĞ2�G
�t	�������<�$��y/��'���ʔy;�Į=���&��c��T \*cBdd=ѳ�m����E�B�%NYP���}����O8߶x�T��Ժ��y��\)W~[��s��|���A�\�+���j�I��3L^�C��(n�D���^ɔ�O��I�g
��I���pb�����o��O�~(�u}�kN�ۀ��w��3��2ޣ��݃��2����E�	��B��&��ą�7�{��&�_r�������D_q���`�rr����;z���3��;��tή������p�9��q���<��z�y�z������?&�ҥ+d&>>Q�6���?�y��M�l’I�~6S�+u�bg
��\���>ꯁUB~��ȴ�S������|X����4J#C�S�U5~&yy��!y�U�����q��H���?je���LJ��D���v������"���!"�F�*��EFY��KWԐ�(�Xl�nrݯ�W�[�F`�2�l�~��N�K�Zr������<���؝�;B����,?���U*��-Ý��t2c?�-�>H��Y�pC���يXˈ������'2�lF������Y���o.�b.�r����VOԧ��K�_���s��v�������vӅ����&�c~:�;�g��C�w�=yoޗ���`>��#c��H�,Zpwc�_+��x��o����D1�&�ߒ���W�o��w�������88d�����C��P"I"�	
����cPL8(�C�w����NӘXHf�IwxO|�dH��}�K����ݤ|ڇ"X���Cp��x/�_:��c�Q�ƮI�qc��)MY�9Y�6g�[o�^���s��y|��tA��.�CW�E��L]��IuD�*��T'K=
��t�Ss��>���&&~ʭW�~����n���t����Qv�8�z�.������B���Gn�{~}�����0O�W�%_�M�D�&��-g���"�o�G����ճ��➻խ�ۥï�(M�5@�,ϑ���c�a���y�޿"���%_�����s{�J^S�XG%��o�T>�X�2�N����/��C۬�mA?�i��?��%������^p��=�"�/�.�l��.����uR�c��#����S���nzS�~�\��A|��������-/��f5�o��ؔ�֐�����ܯ�s��GE@��l�k~�{o+��0� ʹ!0���o�}ʏ������)oʗ��w���[%��ǚ��x3{�}/�W?�z��T'GP�I�lb0���`�|q���=�����d�/��+�R�r^�@6��5�/'��5�U�]�W�k�u�\�V�|{���W��/p�|4/�>����!��K�K�y�1���
�� �'�:n�>N��2u������Xg^U����!��٦|��@��Ef����8�?�B!�_�M��{�禋��w��V�]��{�<���5�d�xԱa
AIǖ���|�I>���_��s%[C��c��}[�F�dX<�.�=A�/�$Œ�q~]ќ<��)�h
��Mw�$���ق\IAl�i��&���`��[N�V��B�%W���q�[�oNO0wՀ\�TJ������5�.�0t[]�+Ro$��J9�z<Hu[]�+�T0%�y>�[�$w�����/�5>.�e���)��m]Qw}dԑof��G�f��dAW���€˳{X'�ZѢb{Ƙ3����`M�r�$P�$�bR歡��
�	�$nE�(�r�|�� W>�I^s-lt趺2WT��؎r�ss`�h��ۉ-RW,�&1�K�H�.�\	a����WG�[��%l%�H8�Z�2Uu���� �I`V@\�MX�!luj�0��$��~*�}%���K�0�vTP����$��ԁ�ӝ`B�u���ݹ�S�^��|F�WO�����
�EJ�X�8;�3z:̴����5sZkz�|3W�����(��Z!밹���{�<�Z�� 2c�,��CQ[k
�HP��"�f���\0��$'����"˚�S�H����Kzrػ��Z�@<u.�Zm����d��q�HH�*�K��&55g?�(
u��"%�+��崀#\�>#"S��A�*V��g`���,�	��ܣ��K��7WM�CLO�G]�)�)pݵ~�J>������ �-��K�V�_�:U��U:p;v�ٳ��f��Q��񞙳�Ox���T�gA�9�E���[#[���J��-.�x�Mqd]���`I���>`LWt��Vf��w>���o����M��;�E�K�x��#�	�o���d[�)u��w��E��M?6�i�����~�bǍ��ڜ�n��i��w3np��k��@�х���m{7�##I�7��H��DS%�f{�?)Q�5�A���[�3n���ğ{엫uj��K��G�>+q�%`�M0�4{���5=8�Ĝ΢DOv��.��I��BX�RFt9bgG�|1梯?���Ԡ�a��Q1,c��ė(m��l<Zhm�3���{a&�˴�	�A@ws����H"p��@� Vy�7}��VY��Pā�lc,I�Jxbt�C3;�-�(�U�{C���t:#�`�~
�d�5X���d����N@���G99k���ܐ�ܺ&�8��Nҥh�C��gi�¡~R(5�yuX�k;r~��R�;�D���(�{��.�Ԙ{S���\ �����2�Ł`�x���V��A�c���З����=p$�һK#H����D�1>�''�#"n�XN�V�\����1��a�y����>[�T,}=F�.�oŰ�-ЋJ�ڮ)�@��F�h����(���F����ޖ���L��-��� ��R�:܄�H�]����%\
ԦV]~���2��ky���RQ����<�8h�X�?�5RR�C-�u�M� ���h����j>����T^K�]|>1境�.�����%�0�^�Ʈ�����P��g��z1�ˠ7���J�T���[��id;�CY�,нz
�3c��jԺ�Y��>��1Z�`�����03>�)j���4�Z
]�e��Q�a����	г⦙��y���9]�#䓦x��@tMc�IO�&1x�gP�.vH�$�D���X�=bN�vs��SK���
'�y���P3�7��.V]���A�
rj�=���ڋM5�!����E���Е�=,��]�e��R.�\�9W�H�ۥѹX+f���r ����	�Ù��TGf��\t�zD`���D�#��E��O��X*���ZɋY���\�e�&�7����l�l�R	���I���]���%Ը�	���*�a�s���#�h�%���7��!�vy�:I�ظ+ǖ0�wIU	��ԫ�Z�{v�,�~�O&�80�=l��\=�F*�X趎�t��;o�=�,�	��-����0Ϗ<.Z�Y@����j���^��p��H=,�A"�F-F���� �e]g��;[9��@�9���������B>KFͅ$�zW,��x깝�ẝ�w�~tw�G�!�P��>�j><���y�dc�.V����1΍�س�kh^O����Y	��3���]���ۮ%?G;�v%_�Iɛ�-�4�B.i$�)觛�LZ,$9��-��G�dYHr��_�=��A�����:�ΡbE�J4�5D���|4��B����F��$�z�L+T�M�����Dh�{��g@��aڀ]���N�F��!DX�iB�� !H5	!�48���������i��mM�=� ���R	���P��H�R}����O$�FK�ú�D�.l��&X=ٜ�N�;-:և�=i$�dK-����&��R^?g�5�����2�*�I�w�Y�'K� �%W\ڣ|.՘,��NhE�u]R�G���!�!�i�l���,�0�m����xn��U�&���>kձ-
*}ޱ��M}u.������>�1��yK��w�Ifd8݋�rW�9�Bs��=-�'�Y�F}3�)�bW��"���Y��*\[�"�W�&pl)�s���|!{^�7<8K���:�([B��N3{+�`�Y�v
?w�=�ɟ�L�w����ހ�׭ǃ{I�S�Hui�a3Y.u(��H����ׂ�H��sm���`m�xq��7'�+�;�^�駱�		�Rˌ�H�����Gh!�����<6X_�T{�����l�"fфvQ7���/�L���Ȝ���b����ގS8��7�Ԣa��V�rީ�e�_�wZup29�Z���G��U��5";{k�:=����!Ugr�7f7d�z�OT��vl��k�ٺ��U�|�՞�1�;<`��N+c�Jڍg	����I,Kpy����sk�#���f!�JMޙ���9�I���Y�z���W��)x\��Գ���?��3F�z�$v��<����Y��Y��C>�k��9�#�iO+�h�ږ2�e]g`nUT�\W�"oiwl�����{�!3	���x�R�Q�8sC�i"����NQ��7�D��,�Z���_�5��&{K�,h�䑨�,rR4+�Vru��6�;���W)���R���/��>3m�qGb�����ua�(AXveث�#b�A�����d���46�KFt.�2�Z������T�@���~C����"?�/�)�
s!�}2X$�##_P��Մ�-J��KO���^�G�8;+HT��J��� ��s�MA�
#�q�T@�JH���Ga%x8L��u�T Q!$w�6���K�n��AU�c�/��E�P�9��xI�EX�z<�[�Z��*�m�_�f���na6�����
�oH��q�泆�^
�O�7%"��GE7�?(�oº�ҘX�S�myݤ������R�%`b������"�p��ā���XS_�'`znA"���@�v��[��>�P�C�gTe^6�9
��L�	�BP^��h��{��a^l"}��?�ٝ�Y݁��܏���QP>w�\��=�u�I{
��_�q!T��w�9r!3�Ն7��q+l����;|P
Q�г�ϕ�&��E�+N��5�fN-���ce�V{?M�~�Te��/�4���ڳp	�^�9>���Eh�����$k���H�6�ϯ��:Rr��q��T���
��[}��$ ���I���@��cQ9Z%-�9Y|�:�"2��"A�	 �o�b�/q�I��d#=��
`�7���H��]
p�
�.���B���N��]w�<�uS�����O5��ڤ�?
�5�jf���Y��f��ZL'!�d��D8�*H�'6��32K+8�ug�["ݑ��~��R��;��\���[HC_��f���B��AY�w.̘���2�������ik���Qak��Uc��bk��X�@�5
u�Q��[���?�,oZ�gfW�����ף�CU�|PZ�!����d�S*��-��N�{C	�n)<$��^���vJ	sm ��^����>�����.���s)L-�'�
rLǰg���.�ՎSxF�ծ���س��ˣ��J�
R��n��R��$?�3��ҽy����{��dV��=�����KSJ�I��4���{T>�9�������Q�ީ�|<����(F�D!~����)��Y&>O�Q�z���'�r��̙p8@�-�A)��TV���|�E�8u�}�HF^�8�N��斕l�CH�8���<)����e�.���&�l�5��hJKe���z��86Ǻ$U��9�5�mu�:uŽRI*���ǘ]?4�"8Cm�1�0#g�֨
�<�`)���.8�wP:68^p�V��PB��6�ta6d\�(?���
l.g���Ǝ���ӑ�7=��azW�Q��N�Zb�(0`��c�P���s�3׀���.��Tbe�sc`U˫��rlfX��XY�
�K3��Q����֓h�
��x&��V�2�)�dHK��$�tքR� ����O��+�Ut��cݚ�*+狋}jϯ�W0�J^>��ܱ@��_�y���K����
*��lZ<@W�x`�����b��#�,gȾА�.��3r����u!qf}�oР6�U{|���ph����l�ٵ�w/��0�$Y<����������'�5���w�K���YDtRā`�ñ����� +�IR���#�?�<��i⌶$�[�17��ז�$U���H�����ٙl"���?
|9�*n�cX�o��ٖ���Z:��u�p�=~;�E5ex�kA{MZ�'S��
�T���J�hc�o/Bvi2����a䑅h6se��
0C���ϳF���3
,�Rl � ��*�`5�=4G9��9�`��&C�-h����<�oč�f��	�$I��r_��7�@��"'�Τ�½I�����X	��RK�m��jrl��H�K��"��"� �,�%�Az*E��6>�r�kރû�hĶ�$8].�u
P C%j��ޯ9�B���Sx�H��̧���B�����ܽr����j���|����eJ5���G��T�	u��긅�y�;�TtC�qHE��T��{V�'�HP���r����!����brs��@)���>����K؁Y��RE_�"l(�0�5��X�$�(%S:R
��$��@'֡�־�U��8'B/�j�Hm�j�����--��b;D�J-Ӌ�T�f�T��vSP�ny�v=}�e-��-&`-�W���V,��3�)�����4ɌM�4d��bv�]�xi����[�������M8
��"yx�I��Lڹ��
��sX]�ZcHdK�2��/��=�<n�������0��5~]
�T�}|ၸt"��Ťj P��
H;��jbP�Ǟ���n�n����~��ӳՔ֨v��
�݆�Ӟ�`~�AT��ٮ��P���Rϖ-��V��
���r�K�}�5%~����-��_�o(-���yD�źm,�0׶����G3��Z^�*U�[)�JQ%Q���"���{�?�9C-�U��S!�Z+s�|v���;o��'�kuV��
���.��,��r���1�<��Bf[�z��Il+���A)��]���ˤ�+�%�	����
�S�����<M։N<��T��u�,�z��'�˰����(45��a��$��f�۱�tЍ�}^$�.�۩Ϭ#����K���(�Ql��v��M�ux�I7M�'��6%.
�rH��ΪF�gY��Ks�p'�����Ą��
�8�˝��a���p8H�	y��T��)̹���H|+zO�wi?�Ѳ��ix��*��\A�+sw�a*܈l�Z9�2l�x�Z�T��-�y[�T�"I�p.@:�sq�-BD�):d�Ǫ��v����؁q�=~�G���ksQ���f����Z.�l`���GT�ٻ ؉�pS,�dd��\��]e���kd����20c7e��$���W���\�Ph
w��튜v/gX��R6�><+�"���ݥ�z��3����V�Hi����l�|D��u��*��|H�&��2("��'�%9��	71%}3�*P�:�3I�M�s&�uzB,T�G᡿ϣFhQ
�і�������b��p�l��s��hZ������w�v�qfxw�h��a�J�d�kf�@ry�;=�rUt���A��^�	�쟾�{ʻ���� ��ʐ7j����v�KPD�����z�A�G.u�x3O�{���g��
�����g�X���ځ�ֵȦڧ,�S��n�~t7��ǚ�AfK�Q,g��AN��T;U��J7���=q��i%�{&.2E���UJ9����S����stC9Ƌ��J�t@7b�Ǵ�3\��I��췪��y���b�^��u[�W�%I"�y�6���g�4�97�N�N���S�Ncӯ�[3
.�w_id��Woe����99Vwpq̠3��,�����#(|d
K}��Z*\ƹ?���y�<��$���6��Lk4�mӫLS
�сq��|��$�ר|�W����YESrq
���L��]i�6�0�?Հw��b@>��k���|���Fv�M?s^[�+�Z=v2�5���jT���p�%7e�]�c�\=�1���;F�J�J�J*�|�@g~p�Fir�x&E+��-b�X�����v���ϴ�y,'f�6zj�?wh�d���#�nr\ށT�"��~I��{��lM���x����^�5�m�����I�%��[1���̬��!�,9]�2vҏ���8�ߢ?����[@|����~���29�5������,-�)�g<��^Mv0�u���c�Da��	~yU=�O �KT��D����Wq�����H���p$?~-7y��<;��#L�O��8����	b\&�s��4tI��Ơ��S
�,�vA�a����W�&�H���C�J\��؍7�yh)4��,tprU���|�{2�qZ^ؒ��_�I��ŧ���1Ie��)�؊3�}�~�$����e_Ռ��`���oS��`&Q��xk7֡���(a1.�Ã�%���(��W,���*=Cro�:�{��t����8�QL���P��`8ַ��6t^K��<b�$��[��s�:FR�N�k��gi�^^�o�H#5��53�q�yH�:Fpp��JB�kWu�L��dcS�c��h�ydՖ`���U.����[w�$`a
�ֲq^Y��
	�Nu��G�
1��d�ȹVE~�0�Q��]����Bt?�*��x�v�D}H�i���/�����S�cw��r�/<?�%i:��;���0�I����K\W��5W%�L�{�?��z��3j$�|4�%4��ݧ%uo!�%�o�^�����z�y&�V:l(iL	������[�������s1��L-���$�5OEGqx�,�>!��"�b.��E����V�Aq�gl�t�oըU�c=3mC����7X�Vn%ئ1�0)b
�]�˂Y�Y�W¿��#������*y�i��s}�1к3�qM<f�g���=}&6�[kul��Nj�;x�F�H�a�B����_�-�gd��̷�|�`�h��r0�fN�+�1�}��%,�kΰ�����l��v��+[�pyP���g�K��e���I���g�@A��F2����	��Nj{ݘ�EJ���Č�/X@EQp�*�qÜOu��#v����:���Υ�3�H;����Ce���Q����V��S;>�y#��T���.h3J,|��j�=�Y�����F���!�$+=���g'G���
]Ek��IeV�>l���̤�Z�*ACXպ�ϫ����*&���l�Qn�Dp�����i�=�0n��:�B�G|�lE�S���f��
E�5b�5{���E��&`/��i�9d2�JeY�eN�ˠ�G��}p~���[|���hg.�5'��3)7a����rӔ�c
_ߚ��O�`�o�s�x�����c)�R��O����(و�����iz���Ӿc��ӫ�Z.ͬ�Tg�⳵�>�3��Y�	����<n%X�@`os#8��#�m�̀=�}�X���ē*Z�֗�s��͝�{/A�L��C}/m�u���&��Д�`:o�$J�S`33�X��mй؇G���&�B��{�;*��τ)��ē�{���L���E�4,RL<b�V��$Ģ&{�au����Xw�=�P�w�v$�ʘ��Z�f�xo1�?SPu�хR�T��J�[�Oa�wb���ϳz[�
���M�R8F�z
(p"߳$�ŎdC;��Yu'�Lb�ݥ�%��'�X�O�L�aV)�Z�T���(��82
�%�h��[<�*�{�(ʛ�5�F��TpokvP.�O�EH����Y-��.�m)M<��$*��K;�i�
��d���v)��h���!��@�9��>���{
��u�,&�F3	�u�=��w�Ĵ3'7�6j��Pb���ZmIU�����n�
5U��&�El��RT ���V�]���&
�{�`p5���5MB�(%LB1�ǿ|��g�A5��f�}Q	k�}bZ
��!��7�Yӌr�?$��Y���2N0��r����I�v���n=o�Y�N$5��Z��LH�-�9)1���tm��_G{����B3b�g0N�Q�,WQ,�	�p�TT[�
���j�[��Ȣ��i<��::�p���5y�>���zpO%E��r͆����Vc-���v�
VkW[Q�[��72�{&N��n�
�C��Q�5z5ھ���+���lۣ�����B3Ż�݂6���[ai����?����t_�U�<��.f��	�f�vo>��\uՍ��TR?������@0�9��5_R�K�W$��d
$��LJ/Dڒ��k��fow�@Q����B�������7�R5�/c��Q=�g�6�j�zֈ0��hS�CT�����\�؝�x�a����
�%���#G� ����|����[Toٙ�B�A޼��7_��M+��1J�h�V��]9!�#��4�C�A&�_��"�lko�6�gd�X,�a�{ݼe/���I�L�^�m`��Rv��k��տ�VuV+��I����y<@��J��5C��ac���V3���|�J�@��?[��t�s��z�X��XDH�cg�]Ӆ�#n����*�5%�؜����Pdy���Nh}�%�#n��
���D��a0�1�b�j�o���Q�%�X�Z�I�Z�J� -[���XnA�	L�.2
$��N;T%$~c�x�(��?��i\�_$��tf��nQmXM@1G�wv����aX:^��{3af7��kS�~>�NFg�"Z �Puy���a�jZ��;��@z�s������F�'\e�Ѭ��V�Ov;�7�Ybc��L�ƒ&�m�l�7�[�-@�Yޜ���hѮX?���p}%�s\�l9�K�[���c�/�`�-�8
�c5�J�U���GbX���:*�z/�lUB�Δڼg�íeGn����<��0lJ�q�T��#AB��
,�U-_�z�+�����;��g���d�)M�eb�/���$�5�0m5�[꬏\��E�G`�se`@��T���^�B�?����d��6�k�TQ:����E��j]zLcW[���,K��o)�n�X1Hv�<:M���S�.�֙��0W�u��`u�5��z��D�NX��M덶w���xnWgh�s.)bw¡87�7Li�G���q����6n{;�B@���#��#{ۂ��k׀!E;
eŘ8���,�*&�	� �+�;\#�{�Գ��vK��ir�OK�@W;
���<ca����-��Ŵ\
��T1�G��,��ޱ��yb\ͧ��{-���ez#Vo�磨�fq⧍4�G�����'E����9�g2��^��Mo��'�֬����ȋ���Iϸ���!��G9��e9!�1���)߿m�������Ƭ�H�g�T�y@<�| WuX@�B40�1�`@*�&q��F���GDF}A�yu��_M�~���ۑ��^�s���+�U	�W����2+�����H(��i_�0��*~�BCS=P�� ��iw7�z_��)Tpj��ȡ���C�
�=�xC�����Ҷؽ�3A�}j��׫�%��3Χ����<\��pY��!,A	0��?ܧ�0qI3��EW����4��8��k!%D���b�,U'WyI��õF\�ƃ@��5�$�Os:��pA<ܗ���y��􉑁v�9J�FՅ�9@Dy4	bc~u�cDd�ε��bt�!3��p�,h0�����	I��n-�x�	:ߵ�숍��f�#
�.��͚��]�N�%5&�}=�p\���@�Y�p�d�n��Ny�t����j�]zzQ��"��D{��<����z��������w7��~-*���@p�!'�9O	�����A��q����f�b�Ş����AT�K'�np��;J��Eyn��%M�����Y`B'����|��xa3���N9�����Ѫ�V|��θ�
μ�|Dfh`���ٴ�(~������Sډ1��쓖�Vy�Vݺ'���듨
,��!N�Iò�9�v9]�M:�t��]V��m�biO�
�F���u�<&G
̋��<�6����J���?����ދ���/g�=�4��$�~��p��6_��x`.���&r���ȳ~�Nb[ۧ�-�R�r���n��XM��s8%�k�Y �may��Z��%1�%
^NU���
�A���լE���[��v
v��LE|{2�,�yo�n�q�;�bM�^��k��j5�ٝ�^��e����5�i�?IZ����+��?�����tE+e`g�M��m�zd
�wX�~<�?n
(F�T�(�N�=_i��n��=|m$�a�v��\>��n�������yV�����dz-W>��`�)����F�'�ٮ4�@�������6��+��ۆ�=�x<�M�-��}�3tm\-�,����P�I�9c�8��xՂ��m4�1P�v~���!k+�����q#H�=���S�r�>�!���P�C�,t%�zؼ��	Jw*�>%c1����e���OU�b�PK��6��}W�|���waM��Ǿ*֘�� ��[��Y�q�h��Y���|u7\kV�oOˑ��]�����Ơ‚	h��DZ�Sx��N
��t������0�����GW�8zlo+�/3öl������1�$O��յ�o�	��fh�t1GV~/�$->m����%�+�D�!��� `�S���O����߱��Z�UF��B�#Fh���

h��*p�j!�Ќ����i�s��Ĭ��´Ϩ�������Н�v>oc�E�Ъ�cQ3�:�5w��M�x�Q�uY��4A ���
Ml�B"�6�u	�݇��Κ�qN����.8P���7�[��ٵ��^�J��H$����=�Z�,S���k��q�,��qХH�Ҁ�C?�
��(�B<��1���Z���!{w��I�����.RY��.�p��i�@����t�.��u��6�������t�ML�Z
IU�h�^m��˗���l�H���m;9�J
Kԙ�Z�L7��u����	ވ�� ��H�Ւ��SL�KԬ����)�
%�-��4`��d�k���f�2q�;_e�N-�����֥��P�'�.'ylvF�0��'�{��X
�?������d*�{+�R�y;�����5<E;$~�W�e~2Y;�1߄|w�w?WEƾҬ}�t��,����Z�I��rR���t3pU�/�"2��␛�:#2�ʭ5I�Y[�<�Ha2V��/ք�z�I�"4��mB���R����a��7U��x=N��4(����V�Y���h�8����wS�K��u��T���D�S�8���Ә���	��Z�-yԐ�?ݶ��=���p��
9;>M��:���#�CP����h�/Jض��6��.L�]P�`I2
r30�T���/�΋)��`�8�v _��Z)��A����ݨ�15k�F	�9���js����
'�{i�e��Y�t��;!�-���5Ȧ�
x�Yv�P	x.�=..�V6	�/���-�������M��D��!��Pt�|�ϣ�!xb�"�!=�5�s�%e�`����!	3�)�`q�<�}�la�@�M�ߤw��x������tD �ǷW��W��Z|��)(+'/W3�����������U�յ5�(�"6nu^v�P5�^P:e��n.�C�@(K�2�B���;�huz��d�Xmv�ӕJ�,��0a
v��XKA�(�@��,O($}�D�Pit'g�6�
u��݃�d�9\_ �%R�\�,�7�m=���
F��b�� ���$
����"�L���&�����H,���
�J����������lg�����bC�0����*�@��,O ��*��P�Q
M-m]=}C#c���Ys@7L"L(�B��	�J�3�,6���3�,6����"�D*�+�*�F���&��j�;�.�`�p��h7C�08�Bc�8<�H"S�4���������bs�<�@(K�2�B�Rk�:��h2[�6��!P�D�1X�@$�)T��d)���[(K�29��6���
F��������q2�7g�ͱn�N��Oc�A�2o��%��Q�R��q
���
F���Xmv�]ntô *:���TJ�X�6���r{�>Ff��qX��/(,*���Z�{�k�U:g5�#Q5��G�uJO������#����������������_PXT\�oiYyEeUuMm]}C#"C;ڴmn׾C�N���de7r1$/`dPX$4�#襁ъ�b��p��W465'[Z�ڳ�`7���ړ	�f�D��'BϙM�1܋x8V-��HȐ��ŔPJ�2
�SA%UTSC-u��@#M4�B+m���Dg�Еnt�Gz����aBR�!A1� )�a9^%YQ5�t�\o��aZ��z~Fq�fyQVu�v�0N�n����N�Ͱ/�����n����Q��Y^�Uݴ]?��j��λ��x:_�v\�A�a��YN��b5oD2cR�8�!ԡQ����T����yׂ����P�72=�
�U�����>.!͐�lDž�=�81��ж�q��u�o��m��� ]�=��A`G QhI��L�����[?7w���py|�P$��U&W(Uj�V�7M�<�`�npD~��ER4�r���˓�
���>f�fa'i�eU7m��Zo��n8�ΗŲ�~F1D�$i�Ӣ�X��v�0N�\�m?ԩ��1��\H,jYv3�<ó<�x�7�E���jo���a`��٢ABơ���v&6.>!1	�2r
J*jZ:���K�H/I�F&��H���Æe��9	\�<�|DR�Z4��2,"*&�OBRJZF�����1j�x�v~�L�nW�HQ�ň'R����TRfV�L���h��KBFAEC�-G�<�
*R�D�2�*T�R�F�:�4jҌ���@ap%eU�D�1X�@$�)T��d��khji�����ML͚�aZaBR����L��\��1�,6����"�Dڈ��Vl�:��h2[�6���@FP'H�v� 0
�#�(4���$2�J�;9����{0�,6����"�D*�+�*�F���&��j�;@��H���S�jP�����rQ!G9��rT]TH�Q��E����.�rT(w��H�BP�q�xQ!3G��rsT�zQ1;Gy݋�5�"jБ�"*ё�"*�Q��EE,+'H�fX�DIVTM7L�8!��-(���TO��EY�M��8�֛�����e���q|��X��M�0A�����0���*��D*����T�05�!��+���`4�I���?���v�=�1����{�,���l%G]ncI��C��J��(�*�F���&��j�;�.�`�p���� ���$
����"�L���N�.�n�&����Wi"N�er�R��huz��d��l?�� ���8�����	D�B��L����B�X"��J�Z���
F�������������bs�<�/�� #iAz5q���xGz�-�No0�̤�j�;('�r{��&�q!�E�tz��d�b��N���py|�P$�Her�R��huz��d�Xmv�����N��A`G Qh�'Id
�Fwrvqus�`0Yl��Eb�T&W(Uj�V�7Mf��fw� 0
�#�(4���$2�J�3�,6����"�D*�+�*�F���&+k[�����������py_ �AF$R�U(U��Z��`4�I��fwPN��0@7L"L(�Bbۋ�1�Ȑ�@�
�����a0Yl��Eb�T&W(Uj�V�7Mf��fw8]���I�n�@ap��`qx�D�Pit'gW7w���py|�P$�Her�R��huz>u�j�� ��୩�W���$2�J�3�,6����"�D*�+�*�F���&+k[�����������py_ �AF$R�U(U��Z��`4�I��fwPN�]t��snQ�0-�0���t�����+N�ۣ^��wDI>*i�Q��R�;B�����")	�!PW���@��,��#��	|�p�$�M�/JH�̕G�}9[�6���E�1�$O �Ȕ��&
Eb�T�#V�hu��!�A?�K�LY��ȕ'_�B��~&��Z��l�#���iA�	e\H��E�얗��8}|���`��.�/���L�P���No0�����p���	������I���(Ɋ����z�?Ӳ��0��4ˋ�����q��u���$���q	�"��QƉ�<1NOk���5�<N�$�A?�"L�4�iQV��h�~�Y.�2�I�}bH�Ka���6����eLb$�)l&չ�&MJFjo�5i~��M�$h��Q�D�MzY�L��IN����Ħ{,�<'������d8�[����D��
�΁�s��JfF����S>?,"*&�OBR���o��ASBhĨ1�&L�����a`no��RL>
�!(�
��i�3JF{����%�ב\D��#��v}�@¡���ر��������������[��[��[��[�O�q������`R�yN��
�X(��b5xy��1��G�
��X�b��B�PVJX�`
6�%�t)a7����;ٙ����6O{��>���I���(Ɋ����z�?Ӳ��0��4ˋ�����q��u�����p��7��f��Jzc��6:NR�D���V�������e�l���Q�ѳ�$i�Ӣ�X��:'
�!%�1�m?b|���F9}0���er�L,�����V�F�:�')�0"�J��d�K�vt����|�)*��s�^�<x��-oN��O�.�fX�DIVTM?�/��a����Q��Y^�Uݴ]?�Ӽ��~ #(�$E3,��$+�V�^�ʀ+Mݴ]?��j�󈳓��x:_�8!����8��!I�y���<����X��v�0N�\�m/.�S���\H,j�X0�t'Rěhd&�;m����������	��(���o�$2�J�;9����{0�,6�˓V���_��ne~�%Ly�׹@�"! �o�����n�}�C����O2�w�q]��O�����`)��W��\��>v
����]t	�7���q����$-�)�:e|J���M�b�o�|J�7x��2�s�QD�Bz���'�"��٬s�=�q��#�9���Y�/f�猓�,ޓ|��мg�
wT���}��H��A��D�����r��D��!�%��M�w"�YY�[�����9��/YCQ��ߥ�x,���5�#iѥ�E��9J_���E�����}�|-m�4���L4�ݷʩ�Z�ኦVit���	j�.�kN6����ȶ�{>W�?=#e�N^K�fX��E�}�m�V_ր���ã��׍"�66W	_����<��S���m��~1K;΄T�6���a��>�$��yQL(�B*O�W��U��6^kS�p��|D1���<ml� „2.�򴱹�ʸ�����j"L^ӏO��6�MK��Zk�sέoa�q! �/�v)��7`��M�S@룥��yR&	
h�$aBRy��\!@�	e\H�icsE&�q!����D�PƅT�66����mK������?:,�lh_�B!�BZ�RJ)��RJ)�"L(��i~uU���oڣ��\9@�	e\H�ics&�q!����UD�PƅT�66WaBRy��\=�ʸ�����"L���űﻧpX��ˡ�o�����cֳp�m� „2.�򴱹:�ʸ����
o\�:�N�q=��=V���$��e�i|s|�`����f,�D�PƅT�66W�S��� �g2�y�1�c�1�c�1�c��B�	e\H�ics�&�q!���͕D�PƅT�66WaBW�6����'�e�5�ǯh��-�4a����g��3Q��Ťn�,�I� �k@:�~T�/���1NQ��]Ϩ1����;9�5N��G9�з�D�X��ͱ�p��.�f�w�`.�"���ĕ��xu�<%/��90���q�0q���:�S��LQ�W�*^�t�Œ).��y�N��2Bf#�	�J�b�s��ּ��v{��zMC�j�PTk*�~F��cAE�ٖUYWX7̥h�c�1}9�1�c�'���!L(�B*O���w�Kb��9D�PƅT�66�{J� „2.�� 0���T��,t}��ZzB��B��f��D�PƅT�66WaBRy��\-@�	e\H�icsu&�q!������J)��RJ)��RJ)��RJ)��RJ)�t��|=��ܿ0���H�<m�h�K���o���S���K���h��o΁KT��#DNJ0���/1�VZ4/�c��2�7O$I��Jȳ{��H":��,�SSm�����#Ii*��	���80��2e�ETY��(Ӥʚ8���d�M��Z�ˬD�,>V�G��qD��"�ɇ�h�~�"9|����k�%뱫���hx�u*a&,a��]�K��6M���^7�	��P��5�;ƃ+]9h;�N���`��z�Х�Ec��Qf���DiHt^Wf�jjWg����_nq��0f�h�DC�,o��C]��]�5t���h)�yY�'���ElK)~����y™ �S�'|Snu���	X�	�V�e�-O����?�6bɄb�j|�fS����0o�~
�D�[.��A������Q6�c2��z�_�~��'�~��_~��7�O��{���:?�a!:-/�����s���vՉ�1�SPG�O����B�,���H�/p��H�whێ咣�#5+�0��q H�fXN��2y�Z�AR4�r$��S�1��Y���3/ bF@u:U�������]�$��F�N�S� d��p^�T&��=v��Ze�� ڎ崘,B`�A��Pt��P�������?s5]�ɅA
��Ҋ�����p-�SN��tllVv�Й���V�S0U�0���\ۼ��-	vA?��e�!��ge�Ry_�w�)H��e��6N�~=e��B)�B�I}�="mln
��%���ߊ~d�d�<��� T��6����In��%�賐*j>e�%S5.}_7�q�d�G�ҧM�]��!„2.�򴱹r�ʸ����R�m;��:_���CnP�0���<ml� „2.��yc���Fu�	�b������o^��M�?#��$H:2.OQ�}̿��ꗞ�m��Ͱ�Ie����h��$H*���Sc�1�c�1�c�1�c�1�c���敟��۷ޠ?�����ne��=L������nN��sy_��$�Q'��:I��Y+�R8�|��N.,"L(�B*O�+�0���<ml� „2.�򴱹b�ʸ�����J"L(�B*O�+�0���<ml�O.�s���x�ս�y���b�tt�B,a�x؁@u�ǁ )�a9	���)�1���� �L��O���|�
��i�Ъs�9�s���ʸ����B�"��t���9�s�9�s�9�s�9�s�9�vRy:S
aB��ɕD�PƅT�6��s�9�s�g��9�s�9�s�9�s�9���H��RJ)��RJ)�y���9�s�9��Y�a9	���)jͰ���)jI��I�����@�fXN���M~
&�q!������D#�e�dJ�px��s����p�}g��9�爿�w��Vc#��}��вN8OE!�z��#
�>@1k��q�����t�yS�x
P�0e\H�ics�&�q!���͕D�0.�򴱹r��2.�򴱹
�ʸ���&[	aBRy���⩗pkڗ�\<m��3G��}����
K��&e	��
��}p�@�	e\H�ics��"@�	e\H�ics�&���uRu���.��I5џ�׵_B�+�-:hMDŽ2.����ƿ����y�aBRy��\	@�	e\H�ics�&�q!?�/�{ܠ�Oq�^�M�A������a8-�^��Ys�f	�l�ڀa�ʸ������"L(�B*OKdq/��M�/�ѡ<5јb��.re����=)ӡ�U
p���W�.Gxj�]b�g��2�\��4�q; 8��%H>�0���/
Z~���
����˜�����k썽�w�˱��I��ز@��EWX@��.4詞u��ǃ>�N��^��a�j��,_���4?�l:&c�6�N�=�c޵ܿX��@��Q�$�=����}��㱞B�2��,���guyg3�v޷��O��u�z}���s!�<��z�v��ג�8o����cq��n�����hɸ�/�)|�k�Ӿ���݃f�H���*[�F�?�37���NWR������韮��Y�Q<;���
��-���L���G�s�2�:
dzz;����M�#�~<4Ŗ[�m���������S1}�彥���#!5���xe�)]�vIu���?��J�����U�2Y�
������X��H� „2.�򴱹
�ʸx'��7�$�޾�bo��B)��R"�ҿ(|�}k����Jt�}s*�#e򤁅C�	e\H�ics�&�q!����D�PƅT�66WaBRy��\	@�	e\H�ics�&�q!�7ޗ/v�C������S���A�	e\H�ics�p�9�s�9�\!�B!�BJ)b79��}}�d��u\E��-�G��	ܤ��d���!=���ඣ0�,�Z���3a��h��~��hی��&�sw���s���zP"B!3D����]壻{����9�t�����3�F_�s_=�Ƙ�VP�_�xp���j�e_3}$?��0��ޓq��!�4g�����n�e�ʸH�D�PƅT�66WaBRy������8
�w{�0�0���<ml��j!�B!�B!�B��ic��������N��b�\G��L<�,���÷~>�z-��S���m�XM�z��t���y5���t6�V��1Yy5��o�f�0�ǁ?���!�T��]��aBRy��\
�?�WGSy���?Z��8��24�B��@`�d�9�/����/�(�}���߾��Nys�Z���|���r��+�
ī8�i����ú�r����}Ҫ�$���Me�~)�Z�[�;��8	�w�k�����
1[��	�܌C�#�_��v�K�:�(����޵��o�ɱث��謬Z�XQeڵ��Z��)���g�An7��:�b��<�̋=@��p�����n}j�����-=���̶��FV�X7���SHY�&��s��h�ټ�s�JY��g#���c��Z"�}�nt�@��<�P�S���y�=$I1qsĜC��l�8k�ۡ":�hJ��5auz����wp�S��v��_?�S��.r��K&	��j�4gӜlF-LP�9�
��5�f�:��8�P� vO�а��)c��踌�:B� )��9�%�6���Tχ	S�Ҹ�l�R�����1O��^�94��^�S�w����3� �xu��nGG=4�=-�	���C+th-�c�Zn'��ƾ/���(q����Q\Ι9�ӓ�&�F����!�9\5�.鲡4�0�`��˵�2��^JYlǂ_\����jE\@�#�u�1�)ȕ��2�c�@d»�m�>���P�t��3�4����.*
�+���
���`���Nt��yՎ�[*���������<<��+

At�~7�t<

A�R���kj��б5�sl���գO�`�f�̔K�_�v0�ɿY��P�M����c7�g���`f�&�o�ռ/�M�$1������ ��Ʃ�����.w��n��P�]{�n�M��B�L)�T*��a�+��~�;�q%Bѥ�9�u]�뺮�B,�߼���U�3�N���'B�!�ȔRJeJ)�~!�4�>�Lt�:SJ)�J)�L��R�Rʳ���P���.�zo��a�|�����w> �����ȶNC`���=Z$^���ޕ`7��~0h���S&z
澛C��Q�ִ~��?���7e��i���LY���g��]5�ke������i��j���î�~�
F�)W�^T��跺�B���s������;���7��x4��=�� )Ͱu�#EQEݮ���G���ó/2*^tL�7L�F�t\��yS�o��ǭ(�9��$'�� �d�����"H$���%J�(Q��F�#��ea#,,c�-]�XM�U=�՛�!5νϋ�G�(9
N8�L!�C��f��8r(D�����(hO�=��!\��2kq��‹�'��z�V�`�tb���B$���d��J��e�̾	ZVk���Y½��ѵ��6���r;(���*�ZOЗq��v�B0�b�Ca�4�%��+�u #��SqGB0�bs;#����%��+�;�[8���F�2�������V�T�B0�bs�P�X�eY��>@FPl�*]�nP�+$
]�-�ǧ�w����9$&%�����[$B�	�I�)�i���DȱX�D���R�i�Z��G�Wvn?���^M�g�
�y>Z�/[h�.$��D���r,����l��F?�"�D*�W��i1q	�
����W!Eb	�rWB�X"�m����!!@V	B�X"����P$�Hew�i4��	�J@(K�C]�|Z	�JA(K���Q�i�Z�V��!�%Rٶ�j̺��Y$$��a�#��zS8�P`��h@�@@@��F;�	Z��@M�ew�N�K��?S�Ŀ�L��qf��ˉ�#�b�f���ظ��!�] ߸�$����ī���O;ks�ĐSL��l�+�r���g�<?L�A^>��Fz�>��g��՗��v�Wީ�&�1c{�.g1�"�U1��	���JHβQ6�R���U�����+�{�+/�J�/�S�����U�p�@��	�s_f�<�[?��WrA4�6���0�<m��F���)�[O�jF�Sf�~$d���%�e��L�Z7����0�N�"y���uK��Z%�H��íDu�ܽ;�ۺ��͹{�^㻽+E�{���]"|,z���CG�8n}L�}��;!BDt��t�^��I{f媓�JY�X70��P��ZMȡe�X�AE8�N��*+
�9H��Y�w+l0�_��\�4��Ǭ���K�gi�H��0��Fh�� 
yY�BSZ�C�l؊��[S�u�^
�6����Iz�{te���Ŝ~,x�At��c[8�	�=�h%��-��=h�X�&Ú��5�v�Y�U��tM���uCM���,�:�1g���Ƕ?�
z�~���<W\��6�
E�H�S��?*�|�cT�Sj�բz�g]jMES�(��R�X�X�X��R'J����j�*Y)G:jO
F�Tfe9��=����U8u�ss��.ZT�Mu�^���c�&�w�6Aaꑊ�R�ۀ�>�X�hQT��j��D�v>��
vp���
�9g#��4ػ�1Y�aY��+��CM!4��F��~�/�V0(���Y��:��M;{e\;�r�Y�W�.�DK�#�V�A���۵ȴL;���AY��8�/���=���ꪅ7��
o=~��3���^F��g�d�:��myV`��$b�@����eUc�ЦfP���q&�h��U�|'�m�e�e�K �[X��0$��DcD+W8��������"t�FW���aV_�S�Hh���� ���������~�X�÷��/�ȍ
8��%���t�p�7�8�i�[�8��:Gdw��K4��S��}�����x省U�t���N�ܜ, �<<�2�%C4"�5����E��Ȥ�}ͮ�o#�B�Eu��^�CT���D�,%{�m4\���hU�*Mvҵ�+��^��U��hK��&�L�pp�i�%�~潌�V��^KF.�0��7�L�1Cr�#nB[�_Q�ͭsG!�c�}��
iw�۪Ɂ躁9��Mkk۟g�2rd��2����~���f$��߆�6U�^�Җa[*w�#��*�۷�~
OԻ�:<[�=�Ğ���AQ����tQ%��b�rXz������
�K6c��>�a� zñ&��*��P��3,.�K)�7��E,f	KY�rVpr%3̬�T�� C$�P�B�e����\���f�b���V����\����4E;����w{�c��HT{��W[qY����MD���Բu3�qݑxbH]E7Df����!�WV���y���0��1��ۚ����~w�������Vc��~�7O�Kfݵ-<2����mG?MJ(7�e��qOUE�x��OB����lrͳS�
/�|�UU�@b/�.����Ԓ�ዯi:|'ɄN���˕C����3R���^�S�~Ħk�:LmV�˺���G�|2Ll2�6��,����ʵ]Gi�M��m�֖���{ۻ��uC���EL���C[[Mk˂G{�Eq?xm���n�>VR��M�7#��m�_&�M�����*����*�'xf����bU�[6��\��\��\õL�*g�]Ŏj혹�ᔃ�H}����6ɾa�f�`�_V������g|*u;�#��|�#|����>��z��l��s�-�>����ٱ9��o$��݊&�54D��̬LXF��?ףS��C��[k���j�x�1���Hٴ�v��9X�k~裟�o�8���ϥ�a�z�o{>����L�2�(�>©���y0��;UZ7��z�ޕ>��΅Ǐ��Zܑ�
�6r�n���}u�f]��'_sh{�O�cN��]#�Μ�ج;s{���ߑ��|�����g���m�j�fX�jej��;(��Zg���}=�*���ƙ��	9�g��
�z���Q����w������ �x梺7S�1q������5�ո�M�œ^z^��y2OMl���}��؟����v�~�u���be$��+��\���uV��O4���$�lib/fonts/notosans/NotoSans-Regular.ttf000064400002222050147361034410014177 0ustar00FFTM��5�	$GDEFgQa����GPOSlh�Tp��GSUB*�[X�0��OS/2b��`cmaphNOK0gasp�|glyf��:���thead%�T�6hhea��D$hmtx>hr�IHloca,rB\OPILmaxpuh name����		post������`preph��OH�o}]_<���'6�'A���v
�C-������
�RRyQ��XK�X^2B���@ _)GOOG�
��-��C��� -X^M
H�A�<>?1�5�A,(,')<2)B(Ht
<1<Y<0<-<<?<7<,<1<2H<2<8<2��:�ax=�a,aa�=�aS(��kaa�a�a
=]a
=na%3,
�ZX�J6<&IPt
I<&���(1.gU�7g747Xg7jUN��UU�UjU]7gUg7�U�3ijO���'|'�| <2
H<[< <;<'�;D�@1e �(<2B(@1��7<2^^(oU�7H�^%x �'�"
�q��x=,a,a,a,aS(S(SS��a
=
=
=
=
=<@
=�Z�Z�Z�Z6]awU1.1.1.1.1.1.`.�747474747��L����]7jU]7]7]7]7]7<2]7jOjOjOjO�gU�1.1.1.x=�7x=�7x=�7x=�7�ag7�i7,a47,a47,a47,a47,a47�=g7�=g7�=g7�=g7�aj���j	S����S��S��S(S(Ud(N����kaUUWLaAaUaU
���ajU�ajU�ajU��ajU
=]7
=]7
=]7�=�6na�Una�>na�G%3�3%3�3%3�3%3�3,
i,
i,
i�ZjO�ZjO�ZjO�ZjO�ZjO�ZjO�6�6<&�'<&�'<&�'FUg	�
gagU{ZdRxx=�7�*
g3g7\F,<�;L6M������=:�U\ZS"kaU��Z���jU==h73=M7�
gUna%/�-<&e��i@
i,
Z�O%�Z@<&�'H#H7�"�:0H#�!�$KUP�+�A
Ha�a=7aaU	a�alU1.S��
=]7�ZjO�ZjO�ZjO�ZjO�ZjO431.1.q��`.�=g7�=g7ka��
=]7
=]7H#���a�a=7�=g7�a�a�ajU�1.q��`.
=]71.1.,Q47,a47S����S��
=]7
=]7nW�na�T�ZjO�ZjO%3�3,
i?&��aj���a_7�:T2<&�'1.,a47
=]7
=]7
=]7
=]76�}�U����7�7x=�7
,
�3�'����
a,a47�����=g7n
�
6�1Qg7ggU�!0g7g743433�+�!�!X7��g6g7>7����jQjUjU
LR@$z^��U�U�Q�Q�Uj��jUxU]7`78�6����U�UZRZ/U/U�3��������iij
]eQ����''�������7
=@UX->7}U��	�Ug7���7�77��^^�U[U�NUs��s���7�7���7

k7�L�g�����!!
�(�(�(y(((�(y(((BHBH�(�( �(�(,(�(�(�(���(J�77!X�N�N�N�N�N�N�N�(�(g�(�(K(K(M8(�(�(�(H(((((((����Y��l�0�e���s�������W�������d�d�������������������������������O���s�����������N�C�X�W�d�d�H�l� �1�N�0���o�:���N�C�C�����0�`���H���i���&�0�����H�H�X�Q���������d�������H������@����������~�������������������^���������avU�<�U�'���b�U�R�!�7�!���(���
H�
�



I
L���a�a
,a<&�a
=S(kaa�a�ap<
=�a]a<&,
6K3J5Z�S6o7�-`ULRVOo7eUL-�-�7`UR7LRUrU�7]7�XF�7f7�VO�7R�OAL��VO]7VOAka�UoP"
P�7ZU�=]7x=�7�aa�,0Q��	���XF�7��=�7�]agUx=�a�U]xx=x,a,a�
a�=%3S(S����a�
jabp�aga�aa�,aVL&bbja��a�a
=�a]ax=,
p$3J�a�P
aa�Za�aya1.W9@U�UE47��!�U�UUB�U}U]7pUgU�7���6xUeJ�U�U�
URU�DU/4747j	�U�7�3N����JvUj	U�U�rU��	z	�a�U�<�aU���aQUK�$Z�O=]7{{�=G75=�7=�:��<�7a3�5�8�����H����a�UgR	eagUa�U��aU�L&�!�a-UjaUj
	�o�a�U/a�U a_U=�7x=�7,	�6�6�w(^	��PmJ�P^J�ajUQ�Q�S(V��a0U�K�amU�a�U�PeJ�a�US(1.1.q��`.,a47�;43�;43V�L&�!H#�b�Ub�U
=]7=]7=]7y�p�p�p��PeJa�UZa
U�x&Jg>g7�>�6�#)&y#&�[�a�U�=�7�	�M5�+�J�)&a2U�p
=g7�jaU�2CakU�a�U�a�U��r��{��S�J�����GN�����$�U�))))�����23O�z�����IA3�:�.g*++8;�.VD�����,�(B��V����$�9���������%�g�T���(�j�W�Mg���[�c���N�����23�A3DU��.�.{�W�'K'�'T'Z'>'T'g'&'H'G�@=i������+�D3��?A;��������r�2����t�����3���3�k�T�T.5E�7b7����Uy��z	X1������2���1�P�E����� ���[�3���2)�������$$������3�*�*<*�W8�:)�$''��
-t/���
�`3@

;TVT$�V�!V[2V��VjVz;
#^^^�4'9z;z;�V�TQj&j(��
�'�!���V�
TV�V�5C�=���?�
�?i?i'�(�?�����?U?N?�?�?�(�&�?�?i�;]mm5�$2!�7�$o$o!:>�$�8[7`7�7�$8�&�&�7�
�3�`5JH
�7Q��$f�37�3J�7Q�.�$f�Qg��g7X�����j��g�����Z����i���"gU�7J*�@$Zg
T
]
gUg7X7U(�UjUgU�(�3�����'1.g7g747�+�!�3N�!��jO�!�	8$Y�$?�
����$�5��5������7�7`7`5����7�7�$�#7!����
���5�5J22`D	�$�U�C���H�l�h�l�h�&�&�������\������;�����]�K�n���������������������������������������������}�����m�^���������e�e���������]���H1.�agU�agU�agUx=�7�ag7�ag7�ag7�ag7�ag7,a47,a47,a47,a47,a47aX�=g7�ajO�ajU�aj���%j�ajUS����S��kaLkaUkaUaL����a��a���a�U�a�U�a�U�ajU�ajU�ajU�ajU
=]7
=]7
=]7
=]7]agU]agUna�Una�Ina�Ina���%3�3%3�3%3�3%3�3%3�3,
i,
i,
i,
i�ZjO�ZjO�ZjO�ZjO�ZjOX�X������JJ6�<&�'<&�'<&�'jUi�7.FUFF
�Z\-1.1.1.11.1.1.1.1.1.1.1.,a47,a47,a47,a47,&4,a47,a47,a47S(<S(N
=]7
=]7
=]7
=])
=]7
=]7
=]7=h7=h7=h7=h7=h7�ZjO�ZjOZ�OZ�OZ�OZ�OZ�O6�6�6�6��a�=P5\
��o7o7o7o7o7o7o7o7�
�
y
y
e
e
�
�
�-�-�-�-�-�-�
�
�
�
q
q
`U`U`L`K`U`U`>`?{
�
>
>
*
*
q
r
LBL8L��L��L��L��L��L���

�
�
�
�
�
�
]7]7]7]7]7]7q
{
4
4
 
 
VOVOVOVOVOVOVOVO
�
�
�
AAAAAAAA;
E
�
�
�
�
1
2
o7o7�-�-`U`ULLR]7]7VOVOAAo7o7o7o7o7o7o7o7�
�
y
y
e
e
�
�
`U`U`L`K`U`U`>`?{
�
>
>
*
*
q
r
AAAAAAAA;
E
�
�
�
�
1
2
o7o7o7o7o7o7o7�
�
)LR)�(�(`U`U`U`>`>�
�
�
�
�a�)�)�(L��L��L��L��L��L��SS

�L�L�(VOVOVAVOXFXFVOVO66 

�
�����(AAAAA�

]
I
��(L����M��<�d���+B(B(<(�(�(�('��������gg�gA<xMpD��HHHXX���,��������1-�'�'H'�����Z���6(6'E2�H��aav^B(��ADODW��H<$�^6X')�,]')t�O]<5'64=5�5�5'HH�XXXXX������������^�3^
^^^^^R#R#R#�>��7^^%^^^
^^^^^R#R#R#�>�mo$�$Xo!�7[7�7`7�7�77!�
<$<3<8<-<!�U<
LAS�
Ui7<<<�<<
�=`%x=m�"<O<
*;F
p7<a�� � x2�7= 5A](L6yj7D��"���	ajg�/ A6R
a�_@1D,�a
=h��Q�alaTa*8(^v&��SJLkaF�=k2�[8������a%"x�N�)ca	1(a	al�E6�$C	�	W W�o�c��,����0%%%>�%J[B
%6> >>#>0�%�!d'2R0

��]
na1.i�avU�a/U<&�'�=a�b�.�
a�U�7�5�]7�:����#3A"���������a���������������������������f�d���@����������t�r���}�q�x�x�����{���#�#�5�5�5�<�>�>���5d�L���z;5R���B<2�>�>;2<2'�'�MPMMPM�����(�4545=554�#A�<fHLH)J�<���+B�((��CfL�:>(�1�<�(J(�(�(�(�(Zt
<Ha>R�a�b<,A"�#A"�##-�-�,ZR�ZoP	=�"=�:�����cKa1U=D7�aLU��e�a>T�
�x����Ta�U
=]7	=w58=�7q+�����L��#C���������u�����`�V��BwB��E#3�+�&�!0K�HR���"��`uU"�V��aiUa�UC=�7=]7��7�u��Z(Z(Z(Z(Z(Z(Z(Z(�N�N�N�N�N�N�N�N�N�N�N�N�N�N�M5(e(i(Z(�F�F
H
H
H�(�(zFEF�1�+�aiUB
(O1-.+#n#N�O�(��.��.T�.}.�.}.x�!k
	kaUk
	iaYU
t�=�5C=�7]g��T
f	
=g7�=�7J-� �9B'^��
$�]
g
Zg<aU),����V4K5~"7�UPU U�U�U�A	W5�\�US9S9J0U\�U�\�Up7� �(H�2
Q
Q�a���5EavUg����7jU�
A6	��K�1O+�1X-�JO<�gf�il���#�R
L&�=a��Kx0k,!������^wU=�:�4j.��80�����C7!{x=%3<&�ag7%�(�.2�g#%V]3�aS(_�N�N}Nn(n(n(�C�93�cQ�c��/�(�,���������������������6:::::�9�:�[�Xa)��g�.�:6X
b5���z��UiUiU�,�,C-�6�C�C�5�5oP"WFUPU���xfiPi�P�T�'G��/��r�r��yiPH��7�����U6S[.�Og7c+�7���,<,P�ZZ���UH3�|����������w����������f��)�)�b�a�[..44a�a,aS(�Za�aZ����������\Z
G����<<�������a�a#jU1.47jO�J�E�������B��PJ����cc������
J......FJFFJF�J�J�J�H�J�J�J�D�J�J�JP/P/P/P/P/WJWWJ#%#%#��#��##%#��%#��#%#�����J�J�J�J�J�J�J����JoJoJoJoJoJoJx0x0x0x0x0x0x0x0x0x0x0�0�J�Jx0�J�J�J�J�)�)�)�)�)�)WE�����TETETETETETETETETETETE�����������.2a�a\6aa�f�?#"#I#/#'##0#(# #%#"K6�",8/;?8
<1?/H7�+&<-<<?<7�M:<2<1^^%^^^
^^^^^^^%^^^
^^^^^��89<�5�6q
q�5��<]lNNNN"&"(&&#'NNNN""&&(&#'%'.%%%NNNN%'%%%""#""""'%'%%%??NNNN%GGGGG3%%%%%%%%"%%-****+NNNN_)N�QItD�E�N~N~M�5�Mn;���U������������7U������P
�7W W�o����

�
�
�
�


1a�
�
�
�
�
�
�
�
�
�
X
X
D
D
�
�
��
�
v
v
b
b
�
�
�
�
o7o7o7o7o7o7o7o7L��L��L��L��Z��Z��Z��Z��Z��Z��Z��Z��VOVOVOeOeOeOeOeOeOeOeOmA�7
J�J7�J�WJx0#%�J��JoJ�-x0MJ�J�����0��E�0#%##���x0�0�JWJ�J�J�J�J�J�J�J�J�JWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJ#%#%#%#%#%#%#%#%#%#%#%#%#%###x0x0x0x0x0x0x0x0�J�J�����������������0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0333333333333zJzJzJzJzJzJzJzJzJzJzJzJ�0�0�0�0�0�0�0�0�0�0�0�0#%##���x0�0�JWJ�J�J�G�F�J�J�J�JWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJWJ#%#%#��#��#��#��#��#��##%#��#��#��#��##��x0x0x0x0x0x0x0x0�J�J�����������������0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0333333333333zJzJzJzJzJzJzJzJzJzJzJzJ�0�0�0�0�0�0�0�0�0�0�0�0H�())L�L�)�L�(�(�����(�(�(�(�)�(��))L�)�L�)�L�(�(�����(�(�(�(8Q�����$�U�))))����U��O�z����I�:�.g*8;�.V�,�(B��.���.[�_���<��IA3�]�.j*f4d��.^H�����(x��<H�.�[�_���<��IA3�]�.j*f4d��.^H����(x���23O�z�2�IA3�(�.g*+8;�.VD�����,�B�,+D�.��23O�z�2�IA3�(�.g*+8;�.VD�����,�B�,[�P_����^�Y��IIAA33�~�.j*�4d�.�H����x+,^HJ.#[�P_���^�Y�IA3�~�.j*�4d�.�H���x+,&&&&,,,,33AA33�G���$�$�$�������%�%�%�g�g�g�T�T�T�������(�(�(�j�j�j�W�W�W��������)))����������)))�����[������RR������IhAAA[[3R�����ulj���������g�8����^���Y����HLHMfM������� ������=���������.�.�.�.�.�.�.�.'X'8'R�����J�����J�����I�����I�����w�
�
�H�H�H�H�.�������.���������������IA3�����IA3����4�4��I�I��.�.��I�.�.�.�.��I��X��9�������.�.�M��-��V���%�g�T���(�j�W��$�����J�������%�g�T���(�j�W���$�����I�I�,�,��s�"<9FsbDb;_I'2.T1H�*'0'W'/'(''@'7','4'4&U&,'2'2'2Gdl�*d6'����,�x6'2�(�(8R8Q�S�Q$H'E'2T1'H������c�K�W� �A�F����
$$����R�)���������.�x@8
~w����/	�����EMWY[]}������� d q � � � �!_!�!�""%�,.R�����ʧ��9���.�k���/������
 �z�����	����� HPY[]_�������  f t � � �!!�!�""%�,`-�@��§��0��.�0��� ���������������������������������������������������Q�B�������F��c�c�c�cmc=b�bi`h�
�
���
	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc���������������������������������tfgk�z�rm	dxl��uiy{n~d���epVo�d�����������<�	-�����{���������������������s���|��������((((((d�����H���� @�� ��L���h��		,	�
�
�8��(���
(
d
�
�p� t�T�<h���(Dt�T�t�@��`x� t�L�`��X��p��44p�8�@L  p � � �!�!�!�","�"�#$#x#�#�$$D$�$�%H%�&�'','D'\'t'�'�'�(((4(L(d(|(�(�(�)),)D)\)t)�)�)�*d*|*�*�*�*�+(+�+�+�,,$,<,T--$-<-T-l-�-�-�-�-�.p.�.�.�.�.�//\/�/�00$0<0T0�0�0�11(1@1X1p1�1�1�1�1�22202H2�2�3\3t3�3�3�3�3�44�4�4�4�4�55$5<5T5l66$6<6�6�6�77(7@7X7p7�7�7�7�7�88808H8`8�8�8�8�99H9�9�9�9�::0:H:`:x:�:�:�;(;�;�;�;�;�<<<�=$=<=T=l=�=�=�=�=�=�>>,>D>\>t>�>�>�?,?`?�?�?�@@@4@L@d@|@�@�A A8APAhA�A�A�A�A�A�BB(B@B|B�C|C�C�DLD�EExE�FF`F�GG�G�G�HpH�I8I�J0J�J�KKtK�LL�L�M\MlM|M�N`N�OTO�PLP�Q Q�Q�RR|R�S SdS�T T�T�U$U�U�V V0V�V�W\W�XXtX�Y4YLYdY�Y�Y�Y�ZZ(Z@ZXZpZ�Z�Z�Z�Z�[[[0[H[`[�\x]]�^h__�`X`h`�a�b4b�b�cc|dd d8dPdhd�d�d�d�d�ee e8ePehe�e�e�fHf`fxgg�hhh4hLhdh|h�h�h�h�h�ii$i<iTili�i�i�i�i�i�jj,jDj\jtj�j�j�j�j�khk�k�llXmm�nnhnxn�n�n�n�o|pp�q\qtq�rr�r�r�s$s�t tXt�u�vv�ww4wxx(x�x�yy�y�zz\z�{@{�|<|�}$}t}�~8~�,��,������0������������(�p��$���������X����,�\����T�������h���������h�����\����H�������������X�����P����L��� �L���� ����L������l���T�����8�T���<��������8�����$�����<�p���\�����T�����4�|���H�X�h�x���������<����������T������������ �4�H�l��������������<�h�����@�������X�t����X�x��������$�D�X�l�|��������T�h����������(�D�`������������ �4�P�d�t����������$�H������,�<�L�\�p����������8�X�x��������H�\�p�����������8�L�`�t��������������$�@�`��������L���������������4�H�\�x���h����4���$�4������D��������������� �4�������L�����$�d°��\ü��<�tĤ������@�`ŀŐŠ�������(�8�Xƴ�������(�@�X�pLjǘǨ�����,�<Ȥȴ����� �X�hɌɜ�����ʀʐ���T�l˄˜˴������x��H���X����tϬϼ�<Ш��рѐ���8Ҥ��DӔ��t���P�hՀ՘հ���,��ׄ������ؘ��Xٴ��xڤ���T���<ܜ� ݰ���������� �0�|��0�@�X�p߈ߠ���p�����@������������$�D�����l��$�X���������$�4����H����@����8��������`�p��0�t����T�������� �D�T�d�t�����L���� ����,�D�\�����P�`�p����T�d�|���D���8�����P����\���$�����x�����������T����l�����D�\����|h�X�� T����P�		�	�	�

@
�d�\�
8
t
�D���8p��@�d�Dp���D���4�� t��H�X��h�D�P��(`��P��(���p� d t � � � � �!!X!�!�!�!�""("@"P"`"x"�"�"�"�"�## #8#P#h#�#�#�#�$$X$�%%\%�%�& &0&�','�( (�(�)l)�**\*�++`+�,,(,�--�-�.0.�//�/�/�/�/�040|11�22|2�2�3(3x3�44�4�5�5�6`6�77\7�7�8�9d::�:�;T<<�=�=�=�>T>l>�>�>�>�?d@,@p@�A�BB�CDDD�EEpE�F�F�GXG�HxI IdI|I�JhJ�KpK�L$L�MM�NPNhN�OpO�PxQQ0QHQtQ�RR(R�R�S SdS�TT\T�T�UU$U<UTU�U�U�V�V�WW4WPW�W�X,XDX\XtX�X�X�X�X�Y�Z�[�\`\|\�\�]�]�^�_0_�`d`�a(a�bb0bHb`bxb�b�b�c,c�dtd�e0e|ff�f�g<g�hhxh�i�i�i�jj<j�k$k8k�k�l`mmLm�m�nnLn�n�oDoho�o�o�o�pLplp�p�p�qqDqXqtq�r,rpr�r�sTs�tt`t�uTvv�w�x�x�ytz$z�{�|(|�|�|�}X}l}�}�~~�4����@�����$�\������l����d������4�l�����H�l�����p������������$�X�|�����$�l�����������p������8�X�����(�x���8�������T���<���`���,�����P���8�t����x����H�|���,�l����D���4�t���`����D�����@�����<���4��������H���t�����(����D���P�����\���<���T���d�������������� �����,���d����(���H���$����x���D���L����H����P�������d�������p���4����� ����`����p�����0�X ��Xð�Ā���0�P�pŐŰ����8�Tƌ����$DŽ���H�`�ɐ��|���`���$�d̜̀��� �X͠���PΈΰ�$τ��XР�(р���8Ҁ��Ӝ�(ԤԸ��� �L�pՄ���P֔��$�<�T�lׄל״������$�<�T�l؄؜�ٴ�����@���,ۼ�������<�\�t܌ܤܼ�������4�L�d�|ݔݬ�����l�����,�D�\�tߌߤ�������,�D�\�t����������4�L�d�|��L�����(��0��������(�@�X�p���������(�@����d����������4�L�d�|����������,��D�\�t����������4�L�d�|����������$�<�T�l����������,�D����T�d�|�����`�$�����8����������|�8�����0��������������d�L��L<\�4Ld|�	D	�
�4��
x8Xx����� 8Ph��������0H`x����<��0l�H�$<Tt����,Dd����4Tt����$Dd|����4Tl����$D\t����$<Tt����,Dd�����4Tt����$Dd|����  , L l � � � � �!!<!\!|!�!�!�!�"""4"L"d"|"�"�"�"�"�##,#L#t#�#�#�$$<$\$|$�$�$�%%D%l%�%�%�%�&&8&`&�&�&�&�''<'d'�'�'�'�((D(l(�(�(�))$)L)t)�)�)�**,*D*d*|*�*�*�*�+++4+L+\+�+�+�,,,4,T,l,�,�,�,�,�---0-H-`-x-�-�-�-�-�..(.@.X.p.�.�.�.�.�///0/P/h/�/�/�/�0$040T0t0�0�0�0�0�11,1D1\1l1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�1�22 202L2d2|2�2�2�2�3$383d3�3�44P4�4�4�55$5<5\5p5p5p5�5�5�66,6,6�88,8D8�8�8�8�8�99@:::�:�:�;;4;X;h;�;�;�;�<<(<L<�<�<�==T=l=�=�>4>d>�??(?�?�@H@�A�A�BxBxBxBxBxBxBxBxBxBxBxB�B�B�C CTC�C�DDPD�E,EPE�FXF�F�F�F�G,GlG�G�G�G�G�G�G�HH H4HHH\HpH�H�IIdI�I�J8J|J�J�K4KtK�LLL�L�M�N$N\N�O<O�P@P�QpQ�Q�RhR�R�S�T@T�UPU�VdV�W0XHX|X�Y0Y�ZPZ�[[�[�\�]h]�]�^X^�_�_�_�_�`�bhc�c�d0d�e|fPgtg�h�h�iLi�j�kLk�m�n�olo�pPp�qLq�rr@r�r�s,ttLt\ttvv�w`w�y(z�z�||�}$}\}�}�}�~L~�|���\����4�T�����p��h���L�����h������� �L��������0�T�x���h�x�p�,�H�X�|��������x���<���P�`�����D�x��������8�H���t��� �D���<���(�P��������x�����0�l����<�x������t������8�t�����$�p���4�����@����L����8�x�������<�`���T���t��������$�L�t�����L����,��������(�D��� �D�h���������<��������T���$�����X�l��������8�d��� �8�X���T����@�������$������X�����D�t���D�p�����(��������x������l���`�Đ���HŜ���HƠ��x���TȠ���`���0ʌ���Pˀ˰��\̼��\Ͱ���8���`ψϠ�\ҌӴ��Ԉ���0�h���X֠���H�|������@ؔ�ِ�0���4ۜ�<���(ݐ���ހ���8߈��� �|���\������x���(�h���,�`������<�p����8�p�����P������$�H�d�����4�T�t�����,�X�� �X����H�`���L���p�����4���(��,�������L�d�|��� �t���4�������$�L���,�D������\���H���`��|����0t� �� �X�X�8�L��h�D�		h	�

�
�L�4�

�
�� ���|�P��� <X��(t� ��\�|�$�<��(��\�8���Xh�X�� ( L �!,!�!�!�!�"0"�##�$$T$�%\&&�'X'�(H(�))�**@*d*�*�+d+�+�,,X,�--4-\-�-�-�.$.x.�/(/�/�0P0�1H1�2D2�3@3�44�55�5�6<6�747�7�7�7�8�9�:T;;�;�;�<L=<=T=�>>�?X?�@L@�A8BB�C4C�D<D�ELE�F�GG�HlII�JlJ�K KTK�L<L�MM�M�NNxOO�O�O�P�QQ|Q�R$RxR�S8S�TTtT�UU�V,V�W(W�X0X�Y�Y�ZZ0ZHZ`ZxZ�Z�[,\\\8\d\�\�\�]] ]L]x]�]�]�]�^^8^`^`_�`�`�`�aha�b�b�cpc�c�c�c�c�ddd0dHd`dxd�d�d�e8ePehe�e�e�fff4fLfdf�f�f�f�ggg�g�hHh`hxh�h�h�h�h�ii i8iPi�i�i�i�jj$j<jTjlj�j�j�j�kk0k�k�k�ll,lDl\l�l�l�mm4mLmdm|m�m�m�m�m�nn4n�n�n�o0oHoxo�o�pp p8pPphp�p�p�p�p�p�q,qDq�q�q�rrXr�r�r�s<s�s�s�ttxt�t�uuu4uLudu|u�v v8vPv�wwPw�w�xx,x�yy(y@yXypzztz�z�z�z�{D{�{�{�{�{�{�||(|�|�|�|�}p}�}�}�}�~~0~H~`~x~�~�~�~� 0HXh����$�<�X����������������� �0�x����|���(�����h���4�h���<�����p���4���$�8�L�`�t���������������(�<�P�d�x����������|����$�`������������T�������(�P�t������� �L�p��������D�l������� �P�x�������$�P�t������� �L�t��������8�d��������0�X��������� �L�x��������@�l��������@�l��������@�h��������D�t��������D�p��������D�t��������8�d��������@�p��������4�`��������0�X��������4�\��������,�T��������$�P�x������� �H�p���8��������\������\�������,�<�T�����(�8�P������$�<�d�������0�H�h��������(�P�x��������� �H�p����������@�h���������0�H�h���������� �8� �������� �D�h���������p����h����������(�@�����t�0�T�x�����X��������X�h�x��������D�T�d�����������(�8�H��������������������(�8�H�X°���������� �0�@�P�`�pÀØð�������(�@�X�pĈĠİ���������� �0�@�P�`�pŀŐŠŰ��������0�H�`�xƐƨ�������� �0�@�P�`�pǀǐǠǰ��������(�8�H�X�h�xȈȘȨȸ����������(�8�H�X�h�xɐɨ���������� �0�@�P�`�pʈʠʸ�������0�H�`�xː˨������� �8�P�h̘̰̀�������(�@�X�p͈͠͸�������0�H�`�xΐΨ������� �8�P�hπϘϰ�������(�H�hЈШ�������0�H�`�xјѸ���� �H�pҘ����� �8�X�xӘӸ�������8�X�xԘԸ������ �8�X�x՘ո����0�Xր֨�������0�L�h׈ר������� �8�P�p؈ؠ����� �8�P�hـٰ٘������0�P�pڈڠڸ�������8�P�hۈۨ������(�@�X�p܈ܨ������0�X݀ݨ�����0�P�pސް����(�P�xߠ������8�X������ �H�h�������(�P�x�������$�4�D�T�d�|�����������$�4�D�\�l�|�����������$�<�L�\�t��������������<�T�l���������4�T�t���������,�D�\�t����������4�L�d�|��������\�@����,��h�� �8��`�����(�@�X�p���,���P����\���\�����<���x���d���T��������\�t�������������4�L�d�|������������,�D�\�t����������4L�Ph�x��x����P�,�	h	�

�0� ��
,
D
�D�H�h8��0H`x�p�����h������$<Tl���Tl�����\���h��� l �!!(!@!X!p!�!�!�","|"�##�#�$@$�%<%�&$&|&�'$'<'�(,(�) )8**t+d+�,, ,8,P-\-t.p.�.�.�/|0L182$2<2T2l2�2�2�2�2�33343L3d3�3�3�3�4�5t6P7(88�9�:�;�<�=�>�?�@�ApB`B�C�D�EtF<GG�H�IhJPKDL@LXMHN8O(PPTP�QQ,QDQ\QtQ�R�R�SS�TTtUU\U�V<V�WDW�XXX4XLXdX|X�X�X�X�X�YY$Y<YTY�Y�Y�ZZZ0ZHZ`ZxZ�Z�Z�Z�Z�[[0[P[p[�[�[�[�\\0\�]�__�`�a�b�c�c�d�e�f\g(g�h�itjdk,k�l�m�n�o�p�q�r�s�s�t@uu�v�w�xtytz4{T|h}�~���h����X�p�$�������\�����4�D���`�����X�@�X�P������l�(�������L�P�h�h�X�4����������L���������������d������,�L�d���D�\������������<���H�����H�����D�����H�����P�h��������������(�@�X�p���t���p���l���p���t���|� ���d����<�����$���l���`�����4�L���H���`�������� �8�P�h���������������0„�����l�|� ���Hż�D���p������l�ʨ�H�`�x���`���X��(ΰ��h���l�4�(�t��,�x���\����� Ք�@�� �4�D����|���P���`��܀ܘ�<��ބ�d���X���D����0����,���`���0�H����L��4�L�d�|��`�$����p�8�����`�0������L����L�,�h������������L�t���������P����T���H�d���X|����Xt�$$@\���@��<L����		(	@	X	p	�	�	�	�	�


t
�l�,�
�|p�t^��3!%!!^���5���63dH����7#34632#"&�9kt$%%$��l%%$  A�W�#!#�77����l�3##7##7#537#5373373337#���)G)�'F&~� ��(H(�(E(�����C����C�B����B��>���")07.'55.546753.'#>54&'�7h "j3c\gX@5W$ M(BX-h_@63-<@;60A1U�RGJTXWJ
�+?2FW
o�*!(+��+"&'1���%/2#"&546#"32542#"&546"3254�JLIMGKF�tM���&##&MhIMIMGKFL&##&M�ujjwwjju
�6�4QPPR���ujjwwjju?PPQQ��5����+52>73#'#"&5467.546">54&32670P]Q>�!Y0&�wW/tSgzSG 7cR*5&$;30R6=J>@\�QI?X$�Q/@n)�T*4f^M]($R7JRH,'$=%"=($.�� B67B*A���#�7��(�b�
4673#.(GLSFGGERLGz�[^�wt�^X��b�
#>54&'3GLREGGFSLGy�X^�tw�^[�)6��7''7'7'B��wVUMYu����6\�/��/�\6�2oS3##5#5353A��H��H�G��G�)��t7#>73�
1A^i569�4(�3753(��NNH���y74632#"&H$%%$6%%$  
j�	#j��V
�6�1���
#"&54>3232654&#"0hVys/hUxv�~CQPEEPQCfs�Xít�W���������Yc�!#467'73cVL.�I�+4>;�0�)57>54&#"'>32!�(�6J&F84O)/*mDdt.R7�iI�6TQ0;=$ ;#1eY8b_6�-���*#"&'532654&+532654&#"'>32�PDVT:y_8`,-h0`Ui_EFX[F<:R(,&qHpm#HU
XG>a6RKBC;KJ=49"<,d(�
%##5!533'467#!(hU��P[h�����K�#�4I!,��?���2#"&'532654&#"'!!>n��~7a!$g/OaV]H,f��:�ndoSKOFK
QP�7��
�,4>32.#"3>32#".2654&#"7G�e3-E\5R@]r{hDnA�?NEE/F'"D1M�yHK.Ph;#1qhp�D��QUDP'< +U7,�3!5!�%���zPD�z1��
�(52#"&54>7.54>">54&32654&/^x%>%,H+ks|)D'4I8`<7G#<$4GF�JMIMRDBE�XS+@15F1Zie[1H4UB7K(G52%2#>625�(4EE74EI2���,#"&'532>7##"&54>32'"32>54.G�e5'1F[6SA\q9fEDn@�>OCF0F'"D�M�yHK
.Oi:"1qgKl:E��RTEO'< +T8H���&4632#"&4632#"&H$%%$$%%$�&&$  �x%%$  ��&4632#"&#>73F$%%$q
1B
^�&&$  ��4�5&WU#2t	`-5%
	�)��yt�2�N��8��5!5!8�6��GG�GG2t	`7-52y���)�N�2�����+74>7>54&#"'>32#4632#"&�% '+>;1L#(a<_h5$!#F#$$#�&72!,*04F^Q-?5*)�%%$  :��I�?M#"&'##"&54>3232>54.#"3267#".54>32326?.#"I,@,.5F5LS4_A,U
%+K�Sr�Q��=o++kAv�Y:n�ch�]�3+81
(1<e.XG+5"%2fTBe:	�4"3U3]�D^�j��DX�t]�uAV��@:TC}0K~�!'!#3	.'3!V��U[Q��
Q����3*-;�aT�"2+2654&+32654&#-��FB-I*�s��\DS[v�_JMc�Ob?S&F8aj��;:;3�K��J<8E=��Y�"3267#".54>32.�s�{{/T((U;m�IO�nqT$!Q�����NZ�pl�]*La��	+324&+3 ���l�V_��ua"l���P�v����a��)!!!!!�q���#��5�O�N�a��	3#!!!!�Z���"���O�O=���� 3#".54>32.#"32675#��:vKo�OX�u<k."&_3��7v`/B�y��Y�qp�[N��U�I
�a��!#!#3!3�Z��ZZnZM����.(*�)57'5!*��TTTT4;44�����B��"&'532>53$$-Zf�L2-�Agbak�!##3>?3kj�IZZ>�i��U@����"D"��a��33!aZ8��Pa*�!##333#467#��S���Y�ri9�O��I�6�4f ��a��!###33.53�i��Sh}TQ#h7�q��@L �=����#".54>3232654&#"�K�lo�HH�pk�K��ryzppyysfo�\\�on�\[�o�������a*�2+##32654&��5}kRZ�[HfdX�nd;g@���M��BOED=�V�� #'"#".54>3232654&#"�ig���
o�HH�pk�K��ryzppyysf��#��\�on�\[�o�������a_�2####32654&&�*A$�i��Z�fkWPT�ef9L-
��'���N��ECF;3����)%#"&'532654.'.54>32.#"��u<f"$k9PQIA[]:gC;b(%W/CDD:?W-�_jV>5#0)!`S9Q,M9/$0&5J
!�!##5!#CZ��{OOZ����%#"&5332653�<{_��Z]^aWY�JwE�w�1W`gQ�X�#3>7X�Z�^���6�6,M##N-���#.'#3>73>7��[�
�[�^o
~]�n�6�:-	
U.�/�L.V&'\,��N.[#%W/�F�!##33Ff��_��d��_�6��tV����6�3#3�a�Z�bk_�K���&�	)5!5!!�x�����D6PD��P�b0�#3#30���hH�(
k�#`W���6��b��3#53#����V�H��&�3#&�2�N���<g�����f���!5!��@��@(^��#.'5�!%;:1�7499
.���!&2#'##"&546?54&#"'>326= b^@#MDI`~�[:5*L!#`NdM7+DZ!V^��L,*MRPW C4B��83-*KN0U��0�!3>32#"&'##3"32654�P?dyzc?P?X�UBAXHG?";".����. D���bgcijd�7���"".54>32.#"3267,Go?BqH)L@�ML,CA
:z_c|:I	�ag
N7���""&546323.=3#'#'26=4&#"dxyd>OXG
P1UEBYGGG
����.!
3�H"0I]^dkq_`j7��"2!3267#".54>"!.$Ec5��YP3O*)P7LuA;kF?I>"<mI5[_M>{YX~DHQHDU��###5754632.#"3L�X^^\R 5*,+��,�)h[E
;?#7�"+2373#"'5326=467##"&546"326=4&5UFu{vKOwEO6phuusCJIFQJL"()G��st"Q*QF-	Q����JkcciWan_U�3>32#4#"#3�Y4bbWxZCXX(#)*]g��W�e^���N��2#"&546#�AX�������4632#"&"&'532653N8&  *XH���G#1k��KUU
�3>?3#'#3�	�g��j�=WWk4
���5��U��3#3�XX�UV"!2#4#"#4#"#33>323>�[ZWmNCWnQ>XG
U0~&]"]h��YZV��Yd^��I*)Z.,U"2#4#"#33>W`bWxYDXG
\"]h��W�d^��I*)7��'"
#".5463232654&#"'�sGo@�sIo?�kKRQLLRRJ
��A}Y��A{Y_oo__llU�0"#2#"&'##33>"32>54&Tcyyd>QXHN1RCAX1?G"����/4�I#0J\^ck6]<\n7�""467##"&54632373#26754&#"�Q@ay{b?P
FX�SEDWHFG0"0����0#I��/[^fiq__kU�"2.#"#33>O#

)H+XH
R"Q-Q6��b,@3���")%#"&'532654.'.54632.#"�tb8Q [/C<954J(oZ1U%"J'69=33H&�NPP+$  (8,DJF#(9��S�%267#".5#5?33#*
4*G,LM#4��/>C	HA8*#r{D��1/O��#'##"&533265H
\4abYwYE��G*']f_���d^�333>73��^rr^���6126<��".'##33>733>73#�
`d�[J_`\KZ�g/)OO*����+X27.��"PX.���373#'#Թd��c��d��c���������33>73#"&'5326?^tm_�YN$
.9��(I!Q)0��LZF4+G'�	)5!5!!��x ��p��#:�DB�n�b\�.=4&#5>=463\\j?;;?nX4;mm:5�NP�3+I*2�PNH,1�gg�1+�8�3#�II�� �b`�>=475&=4&'53# 4;mm:5\j?;;?nXV+1�gg�1+HNP�3+I*2�OO2	�.#"56323267#"&
$/>0H9.$/>1G;?"N5"M6
H�J�"#"&546323#�$%%$\:l�%%$  ��[����!.#"3267#5.54>753a&EBRMOL,A:'C;W00X:D�I
ehh_
M
ad	<rY[t>	T � 2.#"3#!!5>=#53546N7X"I)9<��*��	+8``o�F;B�Bh=;PJ@BiB�Yd;��B!1467'7>327'#"''7.732>54.#"ZB1B:7C0@#?/C8@0B0AC";$%:##:%$;"a9D/@@/C9?1B/@#@/B9$:##:$%;##;,�33#3##5#535#533�\�|���V���z�]m]��@R@��@R@w�8�3#3#�IIII����;����3A467.54632.#"#"&'532654.'.7>54.'C0$(f_8N%"D0<18LMV.#'sg7R  ^/J8774K'K?P)D>,�2=7(<EC'H<3A5&ELK+*:6%3+"(%.�w��4632#"&74632#"&���1���&?".54>32'2>54.#"7"&54>32&#"3267�P�c66c�PL�e96c�P@pV0.SqDZ�P.SrScb.ZAA:2+;A9B92
6c�PP�c66c�PP�c65.UrEArV1Q�\ArV1Z{eAe9=TJLS
@
 4�$2#'#"&54?54&#"'>326=�AB/8&/8�8*2A7<*3-�6;�*12c!1
�/((8��
7'?'(�?��?�ƪ>��>��$��%�
�$��%�2��#5!5G�q����G��(�31���&4=".54>32'2>54.#"'32#'#72654&+�P�c66c�PL�e96c�P@pV0.SqDZ�P.SrE�RL0tVd>2',(,1
6c�PP�c66c�PP�c65.UrEArV1Q�\ArV1_�@A/7­��(# �����:!5!����B7�u�"&54632'2654&#"�HWVIGXXF0-/.1..�UDDVVDDU;4*,44,*42	V3##5#53535!A��H��H����G��G��GG�3U!57>54&#"'>3232��s))%1#E+@I;8Q��6p'1'  .?71N5M�AU(2#"&'532654&+532654&#"'>�GH+'/TY%@F>40:4992/)5$EU>0(4
3):I
?")#$!7' .(^��#5>73�29:#"j�9947U�#'##"&'##33265GP8'8XXxYD��H(*<)���d^7��%�####".54>3!%:f:'>\37dA?���.l[`m.��H��+��#"'532654&'73�JJ 	$&5&+:$3�057V5(%��L#467'7�G

6#�L�T*		'1\ Y�#"&5463232654&#"YVHCXTIGU�,11,,11,)QYWSRWVS:;;:;99'8��
'7'7'7'7ժ>��>�ǩ>��>��%��$�
�%��$�"��$33467'73#5#533#'35467~�K�L#

6#�IG���I==�} �62*		'1\�T��`4��<`�]81��*33467'73#57>54&#"'>323`�K�L

6#�IG#s))%1#E+@I;8Q��62*		'1\�T��6p'1'  .?71N5M>�(,7@"&'532654&+532654&#"'>323!5#533#'35467�%@F>40:4992/)5$E.GH+'/TA�K�L���I==�} 
?")#$!7' .>0(4
3):I���6`4��<`�]81�@�"+#"&546323267#"&54>7>=3;#$$#$!&,?:2L"(a<_h5$""F�%%$  �%81 -*04F^Q-?5)*��~�&&E����~�&&x����~�&&�m���~�&&�_���~�&&l���~n&&��=��5�)5##!!!!!%3#5���k]S�������:���O�N��M��=�Y�&(|��a��&*E����a��&*x����a��&*�`���a��&*l���(*�&.E���(>�&.xM���S�&.������7�&.l�����
2+#53#3#3 4&=k�Wű�JJ�n��Z"��P�s��:NBM�N�����a��&3�����=����&4E����=����&4x*���=����&4�����=����&4�����=����&4lf�@��>''7'7�2��2��4��4�>3��3��3��4�=���� )#"''7.54>327&#"4'326�K�lpI0=4,,H�p4Y%.=3^��?4Nys�3��E*zpfo�\/D(J1�Wn�\B)Gc�=d%�#���I�:���Z����&:E����Z����&:x���Z����&:�����Z����&:lM���6�&>x��a*�
+#3322654&+*4}mQZZ`�~��iaWbY~<g@��|n�COEC��U��J�6#"&'532654&'.54>54&#"#4>32
**
&%6>gS/HL(70)5?.))G8#=%X:d?awi"3' 
$K;UNO.($2");(,! &*&.+��HCO#J��.����&FEo��.����&Fx���.����&F�H��.����&F�:��.����&Fl���.���1&F��.��-",3>2!3267#"'#"&546?54&#"'>32>"34&326=[A^3��OJ2L&(M2�>"\MIax|Z=3(M!#d1>QT5:C�9��^H3*?U"<lH6`[Mq4=MRPW"A4B)-).HOJET�83-*KN0��7��"&H|���7���&JEs��7���&Jx���7���&J�L��7���&Jl�������&�E���L�&�x$����*�&��������&�l�`7��'� ,7#".546327.''7.'"32654&� As&cDW�tHo?l5OB*�&p.{TKLSSLN�$C69@�z��;mKp�9`&K7@��YSI_a\>Y��U�&S�V��7��'�&TE���7��'�&Tx���7��'�&T�^��7��'�&T�P��7��'�&Tl2y	G"&546325!"&54632!!  ����!!  � "" �GG� "" 7��'6&#"''7.546327&#"4'326'�sI8(:-!�sI:';-"�k
�$4RJ:�"4QL
��!8'>$e@��$8&?#c>&A2l_J1��o��O���&ZE���O���&Zx���O���&Z�d��O���&Zl�����&^x�U�0�&#"&'##33>324&#"3260yc?PXXN@cy[FJRDAXJE
��.  "���-
"0��ee\\ckk�����&^l���~W&&�����.����&F�\��~�&&�z���.����&F�U���$~�&&����.�$�!&F�,��=��Y�&(x���7����&Hx���=��Y�&(�����7����&H�K��=��Y�&(�!���7����&H����=��Y�&(�����7����&H�K��a��&)���7����!.#5>73"&546323.=3#'#'26=4&#"�0
W�cdxyd>OXG
P1UEBYGGG�6957������.!
3�H"0I]^dkq_`j�����7��^�*"&546323.=#53533##'#'26=4&#"dxyc?O��XLLH
P/TEBYGFF
����.!
3=BYYB��H"0I\]ehn``i��a�W&*�t���7���&J�`��a��&*�m���7���&J�Y��a��&*�����7���&J����a�$��&*�7�$")03267#"&5467#".54>32!3267"!.�-52)'LuA;kGEc5��YP3O*(,b?I>t-82,"?>{YX~D<mI5[_M 0(9QHDU��a��&*�`���7���&J�L��=����&,�����7��&L�X��=����&,�����7��&L�e��=����&,�:���7��&L����=�#��&,��7��*7#5>732373#"'5326=467##"&546"326=4&kW!1X5UFu{vKOwEO6phuusCJIFQJL�58	69�()G��st"Q*QF-	Q����JkcciWan_��a��&-��������&M������3#5353!533##!!5!aaaZnZaaZ��n��HwwwwH��M���o	�3#3>32#4#"##535���Z4abWxZCXLL�ZBW')*^g��C�d^��\BZ����b�&.��������9�&�����>W&.���������&�����E�&.���������&�����(�$*�&.�\���$��&N����(*�&.�O�U�3#3�XX��(�B	�&./S��N���&NO�����B2�&/��������*�&�����a�#k�&0�J��U�#
�&P�U
#'#33>?���i�B]]		����6��(L
���W��&1x/���L�&Qx$�a�#��&1�,��A�#��&Q��a��#5>733!�0
W�nZ8�6957�6��PUQ�#5>73#3Q0
W�XX�6957����a��&1�#����U:�&Q����
��
35'737!a1#TZ�$�8�<2���Q?d�P���3'737N3$WX@%e ;8���,;D����a��&3x���U�&Sx���a�#��&3�|��U�#"&S�5��a��&3�����U�&S�d��_�&SF��a�B��"&'532>5##33.53�%&/�mSh}Tf�L1+QFP%�}�� q7t�<d`U�""&'532654#"#33>32�"
&wYEXGY4bbF�G#1��c^��I*)]g�RKU��=���W&4�����7��'�&T�r��=����&4�����7��'�&T�k��=����&4�����7��'�&T�S=��d�"2!!!!!!#".54>"327&�2.�������1o�HG�u{ttz9*)�O�N�O\�oo�[O����!6��~!!(42!3267#"&'#".54632>"!4&"32654&�et��SM5M((N5Dh fBFm?�r?d_<<F<�BOFHONHI!�n5`ZM8778A}Y��8659HNJESfeeifdhg��a_�&7x����U��&Wx���a�#_�&7�H��>�#�"&W�~��a_�&7�f���G��&W���3����&8x����3����&Xx���3����&8�L���3����&X���3���&8|���3��"&X|��3����&8�L���3����&X���
�!�&9|����S�&Y|g��
!�&9�E�����$#5>73267#".5#5?33#�0
W�*
4*G,LM#4��/�6957�FC	HA8*#r{D��1/
!�3#535#5!#3#蕕�ߔ�EJ�PP�J����S� %267#".=#535#5?33#3#*
4*G,DDLM#4����/>C	HA|Bz*#r{DzBz1/��Z����&:�����O���&Z�V��Z���W&:�����O���&Z�x��Z����&:�����O���&Z�q��Z����&:�����O��1&Z����Z����&:�����O���&Z�YZ�$��&3267#"&5467#"&5332653�52 '.��Z]^aWY,,,*k843=	�w�1W`gQ�2?j$2E��O�$&Z�P����&<�����&\����6�&>�J������&^�.��6�&>l�����&�&?x����'��&_x���&�&?�����'��&_����&�&?�Q���'��&_�Uj�"#4632.)/XaP2*�4?��AgUE
	��0�)"&'###53533#3>32'2654#"S?P?LLX��P?dyzpHG�UBA
. D]BYYB";".����Ijd�bgci
��'03#"#.546;2#2654&+2654&+�OEH憉FB-I*�s\DS[v�_JMc�} A=Ob?S&F8aj�;:;3�J<8E����a4��U��0�#"&'##!!3>32'2654#"S?P?���P?dyzpHG�UBA
. D�Jo";".����Ijd�bgciZ��H�".5332'2654&+U]n0Z�dv4x|PG`\{K
8cA���8^9^yMGCE<|NAR��-�"&533>32'2654#"Bm�XP?dy~lHG�UBQ
���";".����Ijd�bg`j��;�"&'532654&#"'>32�;U()S.s�|{0Q!$)jAn�IN�
N����LZ�ql�]=���Z(2.#".#"3267#".54>32546|
/$!M0s�{{/T((U;m�IO�n;:6ZH03N����NZ�pl�]AE7��"�(".54>3254632.#".#"3267,Go?BqH 6=
/@�ML,CA
:z_c|:[AEI0|I	�ag
N�����
��3#"#.546;2#' 4&+�OEH�l�VŰ"��u} A=P�s��M����3�
!"&54>;5!5!'3#"?��5}k\����eRfdYh^8b<�O�6M=H?>7���$"&546323.=!5!#'#'26=4&#"dxyd>O���G
P1UEBYGGG
����.!
3�J�H"0I]^dkq_`jF�/"&22#".'732>54.'.54>">54&9Ho?_V+(UE1K2
& J,*/11XWDo>JQQCMXV":iH`v"%4'#F-
E##!'/[W*Ul4HaJIc `RM^<��35!!5!5!5!<5��#���O�N�O�6��;�����6��&�*2.#";#"3267#".54675.546:Jw(+(SA<L`aafgua[7q.-lBdz7^ZERt�+=":6<GK>DBHR5];LZUIMd��6�"&5473265!!!!yCG
O'{����Y�I=
!/<O�O�q^S����)"&54673265#5754632.#"3#�@OK!^^\R 5*,+��C�F;
&1&)h[E
;?#D��LW=���Z-2.#".#"32675#53#".54>32546�
/"&_3��7v`/B��:vKo�OX�uHA6ZH05N��U�I
�P��Y�qp�[AE�:�""&54673>73'254&'6>(�^��_�!">6"�L9,t6_��,M##O,s��Ap&8MN9I"%EU��U�#"&=4&#"#33>3232653jl58R=XXT0[\~A=Xk
]g�A@e^����(#)*]g��FOD��xcZ��R�".533267�,E(Y%(/
7
IA-��00J	"0�3#!57#535'5*TZZT��TZZT�4�N�44N�4ak�2.#"##3>?>)		
�$j�OZZDz&$�F�kVM����!N$�	U
�2.#"3>?3#'#4�$
	�g��j�=W�I ��4	
���5�q���3#5333#UFFXFFbBT��B�������,#''7.#"5>3273267#"&/.'#�jc""9Amf�%+I	z@ ?G,.!? �6A%,�;9#P'��Z����#"&533265332653#'##"'#daZ:?YLZ;@\GZGd5�+i
gs��FFd^�FFog��6R..d31�����"&'5326533.53##-

 h}Ti��C�L#/��@L ��6Q#h7�RK��U�"r��=����=��%�$#".54>32>5332654&#"�J�lp�HH�pR|)*_9?-��qzzonz{qfo�\\�on�\71L4;dU|�������7���j##".54632>5332654&#"'�sGo@�s5Y -^
::�kKRSJKSRJ
��A}Y��$!M2E]N.eiieeff=����*#".54>32>32#4&#"32654&#"�G�gj�EE�jIp'f7e`Z:?f%5��kpqihqqkfo�\\�on�\/,/,gs��FF=\��������7��"&#".54632>32#4#"32654&#"�mCj=mj?L*PPW\@#��EKKFFKLD
��A}Y��H%#]h��I,@__oo__ll
z�"3#"#.546;2+2654&+�OEH׌�5}kRHfdX_[} A=nd;g@��cBOED��U�0�#12.#"3>32#"&'##4"32>54&�$
NAcyyd>QX�RCAX1?G�I P4#0����/4�a���\^ck6]<\na��_�##3322654&+���ZZk�*A$��WPTXfd'��def9L-
��sECF;��/����)23267#"&54>7>54&#"'>Df:\\@O#RO9k$"f<u�2\?:DDC*N"&Z�,Q9S`!)0#5>Vj_8J5&0$/9M-���"(23267#"54>7>54&#"'>�bg(J44:<C/\Q8�&H34<96C"&M"JD,8(  $+P�+9(#F��&�^�����%23267#".5#"&54>";54&u=E%(/
6,E'-A:7)'�FG�H00C	IAg?13 H
%�S�""&'532=#".5#5?33#3267�
0%C+LM#4��T*
9�I4fHA8*#r{D��`�@E
5�3#"#.5463!#�f=OEH��{0 A=O����S�#2.#"3#3267#".5#57546�)
	-<��/%*
4*G,LMI�IDUD��1/C	HA8*#BJP
�!�"&5#5!#3267pCD�� 


#�KR�OO�6/#LZ��2�>53#"&5332>53�1]%H=8w`��Z_`AO$YiL;/Q7��JwE�w�0V`/S5�O���k#'##"&5332653>53�$G<H
[3bcYwYEX0]`/T8�bG*']f^���d^;M:%����!%2654&'5!##".5467#5!�xpJ] �@XL�ij�LW@� ]KqD�rd�CHO1�pb�ON�bq�1OHB�cr�Z����"&5332654&#"5>32j��Z]^aW &2�<{
�w�1W`gQB' 	L���JwE;�33>32&#"��b��0 
����-I#�����"&2.#"#"&'5326?33>?>��YN$
.;�^tL,"A�LZF4+G��(I!Q)�8)&�37!5!3#!!5#O����ٟz��������PD�G�PD'�3#!!57#537!5�oe�{#�x�p�m��B�F�D:�F�D��#����7��%�".54>7'5!!#"3267Kaz9Cm>�����N1Q/`a2o.-j
=e;Ld3�GP�A C7EPR"��".54>7'5!!#"3267 Or=BpD�����;[o`M;a! `�<hAOf6�@J�=MZGWP��("&54>32654&+57!5!#"3267�QjPISB`[;�����hn/gU@'543QQ�9>!7!:@@4=�J@�^W8Y3
P
0�23#!!5#53>54&#"'>]ld��v�(��>2/G%/'e�`U*O,F��FIF.K*55" ;#1#���"&'532654.+#5!!32�:g-/n2a`/P2|^��*KwE?
RRL2@PP�3bGCi;!���"&'532654&+5#5!#32�:^"]7<SLMZHq�T`)1e
O3:51�JJu+L11U5$����#"&'532654&'.=#5?33#�8Q [/C<.D+([\#4��ENt
P+$(>=Z*#r{D\"	D=NPU�"2#33>">54&K<^6^�kXHJ+L@��G"2cJ_�V�I#0J\^��jDS���33�N�������&���A��3#3###535#535)����N������H`H��H`H���H������a��&)'?��!���a��&)'_�����7���&I'_g����a�B��&1/��a���&1O��U���&QO��a�B��&3/���a���&3O���U��&SOj��~�&&�m���.����&F�H��S�&.��������*�&�����=����&4�����7��'�&T�^��Z����&:�����O���&Z�dZ����.!52#"&54632#"&546#"&5332653��7��<{_��Z]^aWY�GG���JwE�w�1W`gQ�O��D/!52#"&54632#"&546#'##"&533265��7��H
\4abYwYEDGG����G*']f_���d^Z���
"5>73#"&546323"&54632#"&533265389i2:;(��<{_��Z]^aWY�G"
21}��JwE�w�1W`gQ�O��g
"6>73#"&546323"&54632#'##"&533265�9i2:;(�oH
\4abYwYE�G"
21}A��G*']f_���d^Z���#*=.'53>73"&546323"&54632#"&5332653@
,0<88>1-���<{_��Z]^aWY�0/
&&
/0���JwE�w�1W`gQ�O��q*>.'53>73"&546323"&54632#'##"&533265
,0<88>1-��oH
\4abYwYE�0/
&&
/0�A��G*']f_���d^Z���
"5#.'52#"&54632#"&546#"&5332653D8;:15��<{_��Z]^aWY"G12
���JwE�w�1W`gQ�O��g
"6#.'52#"&54632#"&546#'##"&5332658;:15��H
\4abYwYEg"G12
����G*']f_���d^��3���"~�#-!52#"&54632#"&546'!#3	.'3��7��V��U[Q��
Q��GG������3*-;�.���D7B!52#"&54632#"&5462#'##"&546?54&#"'>326=���7�Cb^@#MDI`~�[:5*L!#`NdM7+DZDGG��V^��L,*MRPW C4B��83-*KN0~�!!52#"&546'!#3	.'3�ז�V��U[Q��
Q��GGw�����3*-;�.���E+6!52#"&5462#'##"&546?54&#"'>326=��הb^@#MDI`~�[:5*L!#`NdM7+DZEGGw�V^��L,*MRPW C4B��83-*KN0����5W&��0���.��-�&���=����(".54>32.#"32675#535#533#�y�KX�u<k."&b3��7v`/B����@@4n
Z�op�\N��Y�F
IGNP�G�7�I"$123733##"'53267#535467##"&546"326=4&5UF7?rhvKOw8C��6phuusCJIFQJL"()G��G=L"Q*!GA&Q�}y�Jc\]bP[f]��=����&,�����7��&L�X��ak�&0�������
�&P����=�$��&4���7�$'"&T����=�$�W&4'���� ��7�$'�&T&�r����#���&��B������&������*�&�����a��&)?���a��&)_���7���&I_g��=����&,x8���7��&Lx�a��P�33!332653#"&=!aZ(Z/.0,ZZ_X\����.��-26*s��Jd`O���a�^�2#33>">54&�?b8*_�xZG_<FQ#��L�4lSC��s1��a->N9gE��G�~SS��a��&3E����U�&SE���
(1>73#&54632#'!#2654&#"3'.'0j
.6;
1=0/A]R��N\> Z�TFD..�?2872.
��������8;.����
">I#5>732#"&546"32654&2#'##"&546?54&#"'>326=�
8@?0��/@?01<<1  b^@#MDI`~�[:5*L!#`NdM7+DZ�%$5�713882271�V^��L,*MRPW C4B��83-*KN0����5�&�x����.��-�&�xZ��=����&�x+���7��'�&�x���~�&&�d���.����&F�?��~�&&�>���.����&F���Q��&*�W���7���&J�C��a��&*�1���7���&J�����1�&.��������&�����E�&.��������&�����=����&4�����7��'�&T�U��=����&4�����7��'�&T�/��W_�&7�]�����&W���a_�&7�7���T��&W����Z����&:�����O���&Z�[��Z����&:�n���O���&Z�5��3�#��&8���3�#�"&X����
�#!�&9����#S�&Y��&�L	�)>54&''>54&#"'>32'q�W&=5#L(_v7F>;`-+9yB9fA?4";%cժ^<BL-<F

F.=-3:=("#NC:S2I5]�`*��"&>54&''>54&#"'>32��-(C%X_$92,M%.^17X5/+,?h�~�"mU3;	B/6".1@!I</IMDWvL��a��&-��������&M����a���2#4&#"#33>�t�ZNZn_ZGFR�}��C�]]xh�Y�\.7��U�*7C67.'##"&546323.=3>#"&'%26=4&#"%2654&#"�	SPdyyd>OX$a2=AZh'��UEBYGGG�8.'8 dS:
43����.!
3��5>.;-4J9�]^dkq_`j,':��e�+".5467.=3326=3'2654&#"MN|IOF:7ZINOIZ8;DSF}S_XY_^WX
9lMRccEXXDXXDXXFbcQMl9NWMMTTMMW2��"�*".5467.=3326=3'2654&#"(Go@D>00X=AA=X10<G�qQLLRRJK
:pOTgVP�~OFFO~�QVgSw�I^RQ\\QR^&�:�"&'532=!5!5!!�
0�`x�����9�I4FD6PD�ʑ@E��'�:�.��~�&&�����.����&F����a���&*|���7�"&J|�=����+7!52#"&54632#"&546#".54>3232654&#"��7��K�lo�HH�pk�K��ryzppyys�GG���o�\\�on�\[�o�������7��'D)5!52#"&54632#"&546#".5463232654&#"��7���sGo@�sIo?�kKRQLLRRJDGG��Q��A}Y��A{Y_oo__ll=����)55!>3232673#".#"#".54>3232654&#"�)��1+2.20,2.�K�lo�HH�pk�K��ryzppyys�GG�5=4>�Wo�\\�on�\[�o�������7��'D'35!>3232673#".#"#".5463232654&#"�)��1+2.20,2.m�sGo@�sIo?�kKRQLLRRJ�GG�5=4>����A}Y��A{Y_oo__ll��=����&4�,���7��'�&T��=����+!52#"&546#".54>3232654&#"�ז^K�lo�HH�pk�K��ryzppyys�GGw��o�\\�on�\[�o�������7��'E)!52#"&546#".5463232654&#"�ה�sGo@�sIo?�kKRQLLRRJEGGw�?��A}Y��A{Y_oo__ll��6W&>�^������&^�B��s�3673632#"&'72654&#"$*X $AADA/A	�a6a��A34H$,X$,U���"#.!6754#"#33>32632#"&'72654&#"t$*xYDXG
\3`b $AADA.@	�a6��d^��I*)]h�F27A#+X$,��z�&367#5?33#632#"&'72654&#"$*LM#4�� $AADA.A	�a6=*#r{D�F27A#+X$,���"&'532653&  *XH�G#1k��KU7����!-8"&546323.=33>32#"''2654&#"!2654#"$p}yd>OXP?dyp�8d>IKBYGGI�LG�UBI
����.!
:"��";".����}@=Iq_dfq_`jjd�bgek7��"!,82#"&'##5467##"&54632>"32654&!"32654&�q|yd>OXQ?dyp�8d��LG�VAH3IKBYGGH"����.!
9#��"<".����}A<Ijd�bgekq_dfq_`j��~�!'####37337.''!V�gCgEU[Q*CJ�PCM
�0,��(��Ny��-�'';؁�=��Y� ).'3267#"'#7.54>327"&/!$�$+/T((U;2,C!WWO�n%%Ys�66��7	L��
N
K_(�{l�])s��X�"7�0�� &"'#7.54>3273.'3267#",2)KCU-4BqHMCP

�$,CA�&|�

�� sVc|:��
I��
N`3^
��
3#5333#!aWWZ��8LG7��G�P
��!�!#5##5!733#7CZeF���F.S�E��pVO..O��+��3��";"&'&'.'532654.'.54632.#"3267hRO: [/C<954J(oZ1U%"J'69=33H&k_
3)*
/�LQF	P+$  (8,DJF#(9+KP%,(H	'��".'.+5!5!3267�<L-19# ��p��;>81
!�#F4,':�DB�n
LA,(H��2#>54&#"'>�gv^hZYh>D"X!#f�fYK�1��BnF4?H�"2#5>54#"'>�gj$RFXYa{"N!#\"fY-^U!b�nFyBT�*35#5332#2654&+2654&+3#aRR̆�FB-I*�s\DS[v�_JMc����N�Ob?S&F8aj�;:;3�J<8EVN_
����533!33##"&=326=!
PZsYQQ<{_��Z]^aW��bN����NfJwE�wdgW`gQf��`�Wa����!##7#!733#3#337#3#��AhA1E8kA��w8�"AcKK�..O�N�M���7�0�&+/273#3267#"'#7.54>"37&4&'7$KCR7=�< *3O*)P74,ICS18;kF?Ip5w,�)/"��qN5�
M��!uRX~DHQH��*C�FW0����B�"&'532>5#5333#$$-RRZQQf�L2-6NB��N��gb����#4632#"&"&'53265#53533#N8&  *KKXKKH���G#1KG��G��KU=�	�#223733267#"&=467##".54>"32>=4.kIrG 


CKpP_�EE�`bllcX]$$^�7/\��/#LKRg$.8\�oo�[N����6_?�?`57�u""/23733267#".=467##"&546"326754&?P
F	$6 Q@ay{nHFGISED"0#I��;%C	IA>0"0����Iq__k[^fi
_�2####53#32654&&�*A$�i��ZWW�fkWPT�ef9L-
��'��'LWN��ECF;
�"##5#53533>32.#"+~XKKH
R8#

8X
?G��G�b,@QPC6�##'#53'33737#,f~Ze;EbC�DaF�M�JN���N����ߑ��&33733##"&'5326?#533>?#^C�?_C9T�YN$
.9t[>�����G��LZF4+G"G��Q)89(IQ��"&"&533>323267>54&#"a_@#NCI`~�[;4*L!#_OeL6,C[	V^mL,*MRPW C4B83-*KN07��Y"*"&546323733267#"&'#'26=4&#"dxyd>OF &2P1UEBYGGG
����.!E�^@	$."0I]^dkq_`j��0"*2#"&'##4&#"5>323>"32654&Tdxyd>OF &2P1UEBYGGG"����.!E�@#/#/I]^dkq_`jU��0� +2.#"3>32#"&'##4"32654�%
P?dyzc?P?�UBAXHG�I 8";".����. Dq���bgfjjd�!���"2#"&'532654&#"'>�Gj<CqG+AB*POKPCU"7v_c�=N
ldd`I0���"$/2.#">32#"&''>7&54>"32654&9)L@�
&X/HQ5Q*0Q 
C&ArY!C (J)5""I	�4%%(D62?+ :@hc|:��!'.$ 7���%2".=467##"&546323.=3326726=4&#"8"9#O>dyyd>OX
'��UEBYGGG�IA?3
!.����.!
3��;%C	/]^dkq_`j7��u� -"&546323.=432.#"#'#'26=4&#"dxyd>Oy%
G
P1UEBYGGG
����.!
3O�I ��H"0I]^dkq_`j3���"2#"&'53267!54>"!.Gk;AtM7P)*O3PY��5dEC>I"D~XY{>M_[5Im<HUDHQ3���"2#".=!.#"5>3267�MtA;kGDd5oYP3O*)P5>C?I">zZX~D<mI5[_M��DUQH3��"#,"&5%.#"5>3273267#"&''2>5hui
TD3O*)P7^�j
*< (A"ry/:
��?
�ubADM^Z<,"B8F��H&=I"J;I+���"(#"3267#"&54>75.54632.#"3cI�R<8U!V>sn!6 -7s[:S(!!E/ySF;H\1(MYC(3	;1DJFL,&��!���"�!���"8273267#"&'#"&'532654+532654&#"'6�Lfg
*< (A%4' 6!ov:^"]7<S�H:ES?;,C(T"20<,"B8F	$,	 4)C[O)2ZH%-&&F%7��+")2#"&546"32654&+532654&Mdh6/7#2hP����_Z]\>KLM*ES6"QA45
4),K,���Jhehd/0,%H!0".���"&'53265#53533#&  *KKXKKH�G#1KG��G��KU6�u�-:2.#"#"'5326=4>5##"&546323.=4"326=4&4$
u{vKOwEO6phuug5U�CJIFQJL�I ��st"Q*QFQ����()4H���kcciWan_��7�"L7���"2.#"32675#53#".54>Cn= G �ML$3s�1^;Go?Hy"$L�ag�G��:z_c|:��%"&546733>?3'2654&'�4?&�^f"	f^�"?4�G52\3�� U 66�7;\*4HIBA�����"0<2.#"#"&5467'.'&5>323>?>32654&�
	y$ ?44?""	
	*=	

=,�"E�1B+3==4+D.�C&T)+V "��+-Q� 47##"&5332653#�Z4acWxZCXX(#)*]g]���e^�U� 432.#"3>32#4#"#Uz$
Y4bbWxZCXq�I ^(#)*]g��W�e^��U��+2.#"3>32#"&'532654#"#4�$
Y4bby#xZCX�I ^(#)*]g�?�	I��e^��q�
��2#"&546##5#5353��KXKKX��^G��G���R��6t$#57'5PP�PP4�s44�4u�.#"#>32332673#"'#�	39/
X	28/Xr;E<��:F����T�3#"&54>3233#354&#"�*=7/'
Xhh{#);.0		�yH��qU�=�".533267�,E'W%(&
(�IAA��00C	U�o�"&'532654&+57!#3!f;^ !b:M`o[;��XX��q�Aw�PYMTK=�2��@�omGm=Q��R!"&533265332653#'##"'#[ZWmNCWnQ>XG
U0~&\
^g]��[U(��d^��I*)Z.,Q�R$467##"'##"&533265332653#�U0~&\5[ZWmNCWnQ>XX3
*)Z.,^g]��[U(��d^��U�V",2#"&'532654#"#4#"#33>323>�[Zy#mNCWnQ>XG
U0~&]"]h�?�	I�ZV��Yd^��I*)Z.,��" 2#4#"#"&'5326533>W`bWxYD$<$%
G
\"]h��W�d^��AI	C%;`I*)U��" 3267#".54#"#33>32
'#<$xYDXG
\3`bH;%C	IA��d^��I*)]hU#33.53#UlSm���P006���
34���7��'" 7��,"$25!!3#!!5#".546"32654&0^>`��
��P1Go@�qEWKRQLL"A7I�I�I6!A}Y��Jl__oo__l8���"'2#"'##"&54>"326=332654&�k�Mb]l" m]bK�py�<12.T2-2<|"N�bj�ZZ�ja�OI�rRTJ8��>DTRr�6���!#5.5467533>54&'�PwB�|VOxB�SS\TU[SZTUY FvQy���EwQz�
��	g[[h	
hZZf
��H"&'732>53#'#N"
 
*G+XH
S
Q-Q6��b,@��H�"&'732>53#'#N"
 
*G+XH
S
Q-Q6��b,@��#".=467##"&'732>533267m!9#S8"
 
*G+X
(�IA\3
,@Q-Q6��;%C	U��"2.#"#33>O#

)H+XH
R"Q-Q6��b,@U��" 2.#"3267#".533>O#

)H+$(
!,E'H
R"Q-Q6��00C	IAab,@RH"2.#"#4>�0
&##W(H"
K,0��{BH�"2#4&#"'>h0H(W##&
0"HB��j0,K
U332#'#2654&+U�Vh$9 �f��~>E4>�QM/?#���-.&0�U3373+7#32654&UX��f� 9$hV��~�>4E���$>0LR��1%/,3�9�"7%#"'3267#".=32654.'.54632.#"�tb-#$(
!,E' [/C<954J(oZ1U%"J'69=33H&�NP00C	IA�+$  (8,DJF#(9���2.#"#"&'532654>�&
$<$%
$=�	C%;�bAI	C%;�BH���%"&'53265#534>32.#"3#)%
KK$=#&
KK$<�	C%;@GBH	C%;��G��AI��"".54&#"5>323267�#=$
#!8!
&�IA�1(C	D=�3;%C	����("&546;4>32.#"3#'26=#"!@ODM2$=#&
KK'>- ,(�B47CVBH	C%;��HBIH%,��Y""5>323#5#534&a+
4*H+LM#4��/�C	HA��*#r{D61/�S�267#".5#5?33#*
4*G,LM#4��/�C	HA*#r{D��1/
��`75353!533##'##"&=3265!
EYXKKH
\4abYwYE��G����G�G*']fD>�c[��? ".5467#5332654.'53#-Go@63��0HKRQL"7 �j�
=qNJl'IEuVOddP3\D
EIU�v�Q��"2#"&53326=4&#"5>�/C%otvmXCHHC&%"GB�yyu}0��aKM_�7%	K�#.'##1�^rr^���<6235����"%3>73#.'##.'##3c

`d�[J_`\
KZ�g�)NN*-��,X37��.#PX.���!#.'##>32.#"�^tm_�XN$
 .81)H!Q)��bLZF3,G�#537�X�d������;��'�!".=!5!5!!3267�#:"�� ��p��#
'�IAI:�DB�n�;%C	'��">7#5!5!3>32+72654&#"�� ��p��S)Y=5AJ[a�- 2;
:�DB�nQN>*7D%2�,/�������'2".54632>54&+57!5!&''27.#"�.Y:XN;o5o[;����DpB
&9$!&nDa9.X-/&>�?26D%$
TK=�J@�5aI5(6)"&I4# $��2#>54#"'>�gj$RFXYa{"N!#\�fY-^U!��knFyB��2.#"#.546�5[#!M#{bXXES$j�ByFn��=!U^-Yf����"&'73254&'3�4\#!N"{aYXFR$j
ByGmp�� V^-Yf7��""&54>32.#"3267,|y'E[4)L@2G%#E1,CA��r�['I	?�tu�<
N��=����&4+U!332#254&+2654&+U�9[5</2Jet�7>��BFFD�;328
9<DY<J&#��'/.(�-��!"%2#"&54>75.546";#"32654����xr!6 .7tc�SE*�S>\U"���[C)4 	
91DIJK-%HZ2(fh�7��Q�+2.#".#"32675#53#".54>32546
/ G �ML$3s�1^;Go?HyK5*6�I0�L�ag�G��:z_c|:	^AEU(33!53#5!UX#XX������������'"&54632"&546;33#'26=#"�n<K@I+XKK%;*&#q��B47C��HBIH$+	� �%467##73753#j	�g��j�=WW�4
��3�5�U�333UX��1I7���%2467##"&546323.=4>32.#"#26=4&#"�O>dyyd>O#9"'
X�UEBYGGG
3
!.����.!
34BH	C%;��/]^dkq_`j��23##5#535>54#"'>�gj#NAllX[[Q_{"N!#\�fY-^U!PI��I~nFyB��2.#"3##5#535.546�5[#!M#{_Q[[Xll@O#j�ByFn~I��IP!U^-Yf7����'*"&546323.=3!!!'#'26=4&#"!dxyd>OX���#�2
P1UEBYGGG9��
����.!
3��B�nDH"0I]^dkq_`j�7���2?"&'532654&+57!#'##"&546323.=3!26=4&#"�;^ !b:M`o[;��G
P?dxyd>OX��DpBAw�&UEBYGGG�PYMTK=�2H"0����.!
3��@�5aIGm=/]^dkq_`j7����)69C>7#'##"&546323.=3!3>32+%26=4&#"!2654&#"��
P?dxyd>OX���S)Y=5AJ[a�MUEBYGGG9��L- 2;
H"0����.!
3��B�nQN>*7D%2�]^dkq_`j��p,/��$83".5#5?3!>32.#"#72654.'.5467#3�*G,LM#4*1U%"J'69<43H&tbC<954J(	�/%HA.*#r{F#(9+NFH $  (8, ��1/��-6#"&'5326=#".5#5?3354>32.#"267#�$<$%
1*G,LM#4�$=#&
�)
�/IAI	C%;LHA8*#r{>BH	C%;�����1/��4�6A".5#5?33#3267&54>32.#">32#"&'%2654&#"�*G,LM#4��-1M$BqH)L@�$U7HQ5Q*=d!*aL)5"*(F!(
HA8*#r{D��1/)6Pc|:I	�%%D62?')1I$ "<�
�5"&'532654#"####5754632.#"33>32}"
&wYDX�X^^\R 5*,+�X4bbF�G#1��c^���,�)h[E
;?#I*)]g�RKUU��i�,"&'#332654.'.54632.#"s:a+XXdgVF954J(oZ1U%"J'69=33H&�
 ��z5+$  (8,DJF#(9+NPU4�33!!%!UX���#�y����B�nD;���#'#3737#'#3737�cKQSIbFBTFPFEcKQSIbFBTFPF����P����������P����U��!#5##!#5##U�X�X�X�X�闗�闗��""232653#547##"&=4&#"5>0#;#xZCXXZ4ac
&";2ځe^���(#)*]g�#E���"/2326533267#".=47##"&=4&#"5>0#;#xZCX	$6 Z4ac
&";2ځe^��;%C	IAH(#)*]g�#E7]�3>32#54#"#3p:"?@8N;,99a8>��M=8��7]�432.#"3>32#54#"#7P:"?@8N;,9�T,"98>��M=8����v�4632#"&"&'5326533

%	

9/���+t��-37g2&#"#33>�
	)=9/5g1<0�B;'
�a"&'7326=3#'#3
	(=9/60;1���;&
�a7"&=467##"&'7326=33267� 16$
	(=9�);7	&0;1���$(
7aa
3373+7#32654&79UZBc3D8��R](#-a���*+.1�j �a!.'##33>?33>?3#
	>A`;0

>><0;aC�/

0�A�54��05����La33>?3#"&'5326?=K
	G>�:2%a�+0���.6*+���������[��������������������?�2#52654#1<<1 8821827?�"&5463"3�1<<1 8?822727�
�654&#"'>32#Py%&5<%EH:BA$H'4D2+E4��#5.54632.#"�AB:HE&<5&%$T4E+2D4'H'57�콽hu'YO7'5����COY'uh"	
73#'mm'TT"�뼼
"
#'37mm'TT
�뼼(^z�#.'#5>7�-1>86</,
�75/.47(^z�.'53>73�
,0<88>1-^54
00
45(�x�#xP���(^Q�!5Q���GG��(^��x��(^��E(�4x<7#xP<����(�mQ������(�4��E����(�4��x��H�'37�Y��YY���苋H��'3�Y�����(����
����(����
��������������������������K#53��<(^_�
#"&'33267_QHJK62.'9�<JI=)'(q��2#"&546\�(^1"&54632'2654&#"�1<<1/@?0  ^822771382(�$�3267#"&54>7p-52+0""t-82,6, 5(^��>3232673#".#"(9/5028/51^;E:F(^��#5>73#5>73�
.62 
`�
.622`�:947
:9U"�����7"&''73267�(Ab�
*<�8FD.<,"B��(;���Ja$7"&546733>?3'2654&'�!)�=B		B=�)"

�+ 8�34���#7 +,('
7p�#3p99�!g$#"&'532654&'.54632.#"K@%4<,'#339H;81H'227x/0

0	'')-
*	''La'373#'#�xAYYAyA_`@Þzz����
�2.#"#5.546�";2P@99D6E�'
H+BھU(6=NT�!#5!�nB�PNT�!#5353��B�B��PNT�!#533��BFB(�PNT�!5#533��B�B�PNT�)533T���BBnN�T33!NB����BN�T33##NB��B�B���(�9z�������(W��*5���[��(�v��'373��OXYN��ކ��(�v��73#'(�1�OXY��܄�(�#'57#�����k1kE>?(�#57'5(����E>?Ek18����"&54632'2654&#"�1<<1/A@0 ��822881382��(��E��(��53#.753#.(` 27-�`126.�
749:
"U9:��(�������(�C��������H����(���3##(Ι5�5�(���#5#5�5���5(��3533(5��5(��3#5353�Ι55�(�0��!53!53�B8M9Хcc(�0��!53!�B8�Хc(��K	'57!!#���O����1�;D<E���^���E������^���x�����Y^����1���^���������l^����D�0�J!!���_JG���e^����=����q4������sw��l����N�@5#'>54&#"5632�.#6$+%
%<B�&)5U4,����^p1��l����^����Z���W^����/��T(�#5(P�����Tx�#53#5(P�P�������^�a�
#.'5##.'5�126.O126.�"U9:
"U9:
�d^�L2#"&546#"&'33267�QHJK62.'9Lh<JI=)'�d^��
2#.#"#>JK63.'97Q�H>)'<J�����H��������K��������I��������M��������4e��E�t�������4e��x�t�����&X��353#5#XnBBn]A�A���&X��##533XnBBn�A�A�����!#5#NB�����+l�>53g3<]]hiDCPf��8��"&5463"381<<1 8�822727���0i��3#535!H�H0d<<d���0i��5#53#!H�H�d<<d���i��53533##5iHBHHB�<FF<FF�����br����p�S�O�*"&'532=3u
0O9�I4��@E��*"&=33267u<9O0
�E@��4I���P�	��"&54632������s�Q���l��������p����l�����#@��#5>73@!0WF7859�����d|������$S������4(������N�&���!#5##�dB�B0�nn�C�O���#"'#"&53326533265�>0661<6708=::##::B "B "���X�9�����0�����W�8�����/�����d�G�����<�����d�F���������H�H����� �����l�m�����D�� �f�!5!�@��@���1�"����3���N��P��&�q���0�I������h@%5!���GG�o���'7��%��=��:����#��L@���0��8��2#52654#51<<1 8821827�N�&���!53353���B�Bڪnn�C����!5!!5!���z��
���ȓ^�C�O���4632632#4#"#4#"�>0661<6708�;9##::B "B "��;f77''7f*<;+<<+;<*;�+<<+;<*;;*<��@@b463"#52654.?E:D;#/2$-#03
%,���0�����2����`^)�E�8����^��x����H^���� ����[BO����i^�C������i��<��&P��!#5!#��B��B��nn���0�"����2�����4x��������]��3#5#]�Bx<�x�H9�"&''7.#"#>32732673J$%-$	39/!"-!
28_	=;;E98:F�HA��!-2#"&546#".#"#>3232672#"&546�8/5139/50��m:F;E��X]�\+".#"#>3232673".#"#>3232673G2.31+2.20,2.31+2.20�5=4>�5=4>�Q�%���	7355#�}d}}d\>>\\>>���]��5#7# ;\\;�x__x��e�	'/7?GKOW_gow������53#7535#53"5432"54323"5432"5432!"5432"5432!"543253!53%"5432!"5432"5432!"5432"5432!"5432"54323"5432"54325353!533353���f��g���q�����y��6_5����>y�|���q�g5�66fz�.�6ff66ff6�
.F�����3VF.p6g��g666��NP#5>7.'5I5885.,
D3

2����S?&���d^�H
>32#.#""&54632�QHJK63.'9e�<JH>)'d���!_��77''7_*31/12*31/1K*21/13*21/1���P��.'5>73E6886.,�
D
3

2���P��#5>7.'5I5885.,(
D3

2�H���%#5>7.'5>73#.'#�5995.,�
D3


3(
D3

2�@BB@B@����S?&�����q���[���j��37''7'7#F
>F3883F>&F"B
0*@@*0
B"�@����+2632#"'#"&54632654&#"4&#"326S891<<1871<<�  5  ''7228((8227i��T_#7#73_"3{"3�xCxC�����
"&'332673��*F#�k�)F3��_]6>7=dX���K� 1��q,�!5!,��Xq3�����,��"��_��#".#"#>323267�]G9gdg9<93]H8fdh9<9�C=!D<!�~��O
2#.#"#>��*F#��j�)F3�O_]6>7=dX���%���!55!���}}�za>\\>��hdF$2#'##"&54?54&#"'>326=V#!+s)"+#-")FH�!A

r ��hrF2#3267#"&546"34&/5�K#$4@:0!zF5+J864<!"��l!�2#"&546#5	

	
(�Q����hzF#"&5463232654&#"z=4/?<41>�"$%""%%!�6::65995&--&&++��hoB#'##"&=3326=o!)+,(5(B�%)��3(&o��hgF"&54632.#"3267%0>@1"GEh59;5RP��ho�""&546323.=3#'#'26=4&#"-66-$( $&(   h8778
V��&%(+-&&+��lq�3>32#54#"#33(,-'6)((C%)��4)%o0�^l�F!2#54#"#54#"#533>323>g)('1#'2$( '9
)F%)��3$#v�3(&o�$��l`F2&#"#533>D

*(!%F '!r�'��hRt27#"&=#5?33#0+"#FF�'}.2|��l}B
'33>?3
[*4
3+\l�~
"

"
~���lyB'373#'#S->>,SX-BB-�hPPhnVVa��333#aZ����N��U`333#UX���J�<T�!##!#5#�II�|�.���U9�!##5!#5#zL�Lz����O'@��573'0j_@�
���`�573_;0�
����b�����U-�R���"&=33267�(-N�)"S@:��!���"��7���"&H��p��!���"&�W�o����& �����B��/(^�573(0j_^�
��^�573'"&546323"&54632&jU}�^�
���
��&&EB����H��&���
��'*�B���
'�'-�B���
��'.�B���
��B�&4rB����
�'>�B���
0�&d|B��������Y&tC�g��~�&��aT�'a��3!!a{���O��
t�353%!.'

Q����2��e2Q�*-;��a��*��&�?��a��-=����#".54>3232654&#"5!�K�lo�HH�pk�K��ryzppyysT.fo�\\�on�\[�o��������NN��(*�.��ak�0`�
13#.'Q]�
��3*-;����a*�2��a��3<4�5!5!5!P�X��D�yQQ��QQ��QQ��=����4ay�3!#!aY���6{����a*�5&�355!!*'26;&����?��&G(�J'KP���Q��
!�9��6�>3�"+!5.54>753'>54.'ycG J~^Y_~I I`YZg*/g�Wg-*f[Z4Sa.5bM/DD.Lc60bQ3Z��5X8;\57\99X4��F�=Z��!5.=3332>=3n��\.S7X7S.\�������Vb(�>(bV�ᔓ���'353.54>323!5>54.#"�%F-L�ij�L,E&���>J 2gQPg1 I>OUvJb�YX�bKvUOH,\kBLxEExLBk[-H��7�&.l�����6�&>l�����7��Y&lB���-���&pB���U�&rB���R��6&tBI��O��&�C�7��Y")"&546323733267#"&'#'26=4&#"`zwg8T
F %1S*SECVIG
����.%I�^@	$.$.I_gdjke�U�.�/4>32#"&'2654.+532654&#"U=h@fnS;Lb=iB6C �FR)C&SI9AI3#@(#@�Vg/c\HT
b[D`1��.MF5E#DK=><HD�Z�.�533>53��[aU@W$YP����B?^ߑg��W�-���&2".5467.54>32.#"'2654&'#Gp?_V,(VD2J3&K,*/11YVDo>JQPDLYV
:jG`v"$5&$E-E##"'/[W*Ul4HaJJb _SM^-���")"&54675.54632.#";#"3267tkC.+4h^8[ I+<3I0EEBEE?4MR
YC<:
;0DKI)#.%D1.++N
7�6��'>54.'.54>?"+5!D%&Vb)1X8m/C"xt�:G GHN?� B7M39p{I�C5�NjQ("2&34,E U�"4#"#33>32�sUCXG
W3\a�G�d^��I*)]h��7���
"&54>32!.#"267!(|u0kV}w1k�2HMLG�NJ��G
εz�\˹y�]���������R��6"&533267�OHX* 
&
UK��{1#G��U
����'"&/.'##'.#"5>323267�%
O
\^�;0!M^ �

%�B@$^(��C,,FMV�AU�\$3326533267#"&'##"&'#UXzRDX %1J8':���d^�^@	$.(*<)��333>53��[aU@W$WN��B?^ߑi��S7�6��6>54.'.54675&54>7+5!#";#"D
#(Ie4W?t)C(D"tEuGJYloFS$$PA57� ?2Q>Qcp/=&C>@:3AC+F+/6 ",,C#��7��'"T��w"5###5!#3267&o�Wmgi#
�^�,�DD��#E	F�!"4632#"&'#2654&#"Feu�>mF(L�HOQM�K�����U{AH-�/gakfƢ7�6�"">54&'.54632.#"D#8Ac8�r(J8!WHEC+C'�F"<nX��I
iT8U9
/+%L7��F"&54>;#'2>54'#"(m�F�W�z&*7lO6D M#bbH
��e{8D%gHHyII4W4�VcqUl���".5#5!#3267L.N0���5+/7HC9DD��:.B
O��".5332654&'3CQ)X53HOX�
#AY6/��9M(rxFn<;oJ��7��� 5.546753>54'@OxB�VPwB�|V\QR�ZT���EwQz�
��FvQy��.�	h\\i	
i[��J$'.#"5>3233267#"./�w'!o�^�d!%
	'2%W��u�'.E+'�G�k�-/D2(���O���5.533>54&'3JLq>W+K.VU]WEwL��3tc��KR ��IejEuFCxBg};�A���+".54673326=332654&'3#"&'#>U,4%Z%6<12.T2-2<1*Z(1,U>7FE
DzP_�++�bacJ8��>Dca_�1.�]PzD3;;3������6�&tl�e��O���&�l���7��'&TB���O��&�B���A���&�BSa�k�".'53267#3>73	:0V@)c=Vq�IZZ+�i��&��MG[U@����/	��mywU��J�*7"&54>32#"&'>322654&#"2654&#"M�pG}PW\6S,,P [>>h?Fs+2/*2(FH	PURE<W&F
���_F;.<#]6#+3_BVo5I"%('��[KMO*#`k*��`�3=".54654&#"'>3232654&'.546323#.#"GQ 12'/7Y\|�CS[nzF@;yS
X?++0n
3Q-)M>
4'"Q-*B��
8^:?V��Ii�^�go,&%;#E�33>32&#"��b��)(����&&F �����
�'��B���E�&�l�����7������D/".5467#5!##"&'#'26=332654&'!>U,r.r,U>7FE22.T2-2<�g<
DzP>e(II(e>PzD3;;3IJ8��>Dca?e((e?acU�@
"&'53267'#33>?3=c#T3DV�B]]		�j��(�	=4F�6��(L
���=��!5.54>32'2654&#"P]z<F�mh�I?{Z,ulltunn�Q�PV�ML�WQ�P��{bbzzbb{7�'"5.546322654&#"<\4�sIo?m_,QLLRRJK��	GwP��AzVx��.t__hh__t=Y�!5.54>32.#";W��K�m?e,$%O7ww{{��{V�ILs`aq�7�3�"'"&'532654&'.54632.#"!? 33-&5A]2�r(J8!WH?CGKZ�D	# "8iX��I
iT8Q6@>AIa��3!!!#5#a���V��O�π��a��#!!!#5#�X���V��O�ߑ������+"&546?!7>54&#"'>32!3267�8G
%��:		#>A
6C


<92 �&H>72 `�&I0���,"&54675>54#"'>32%3267�KB
e��d+'<=G^t
 #
�E89%L7#?+E
;.I1�I:��")E��
�!>54''7&''7&#"'>32q �'��(�4H4W*'bF��L�H$!pC�C+�D�$F ��E�J�����>54&''7.''7.'7"&+��
��<�m{ƋJ*%�N�d6NCO$CJECL`Rq��~a�H���"+3>54&#"'>3233267#"&5467`"5#
%NU
X"1(
KR
��%ew?TEEowC ^%ew?XAEpvD��F�!"%1>54&'.=4632#"&'#2654&#"�Ok@eu�>mF(L*SE>0�HOQM�K�2WEى���Nt@/9 $.%CcVgeƎ��7���"H������O��=������7���"�����"���a*����U�0����=��Y�(a*�3333#467###az��yY�J����6�6k"��!l7�RU��33#467#'Uh��cT�H������R3��4���!"&5#534632#"&'#3#2654&#"FBBeu�>mF(L�ˑHOQM�K�TFi����U{AA)FT/gakfƢ����;�J��=��Y�&(+����;�&Jk+��a��&*E����a��&*l�
����"'532>=4&+##5!#32�1+-:F�Y��ٿemf
N
0.@:8��{OO�]XFda��a��&�x��=��f�"!!3267#".54>32.�j�
\��}y1X*Nqt�FP�qAc)%#T�vtN�N\�on�\M��3����8��(*�.��7�&.l��������B��/����#,"&'532>7>7!32+#%2654&+B""T;iz3~���

&?�]X`d0K/I'(��o��6\9^s{J��4C^0XACE8��a��33!332+!%2654&+aZ2[:iz3~�����\X`c0��.��6\9^sM��MACE8��
��#32#54&+##5���dkZ7D�Z��P�\Y��:7��zP��aj�&�x����b��&�E����p�
(#"&'33267#"&'5326733>73�W_bQR/4.5 AXD1.8A��c��_�KMLL6%'4�#G_/Y	0=�w

�a�Dy�!##5#3!3y�\�ZeY����z��~�&a4�
3!!32#'2654&+a���jkv.v�	`NVg_�O�5[;boMACE8����aT�'a��!#��Z�P����D��3#5!#3>7!B[V�V7$A2 O/9 M����>���OQ:���6)��a��*T�	333	### ��dVd��g��V��go[��Z��Z����j��j��&���)#"&'532654&+532654&#"'>32\MZ^��:i-/o1`cthfajiP@CY*+*{Mtx#IUXG^vRHBD>KG<6:"=+db��333#4>7##bT�dT�vd�x!RDO�6�%TF��b��
!#"&'33267333#4>7##HW_bQR/4.5�mT�dT�vd�KMLL6%'4�x!RDO�6�%TF��aj�
!##33jl��ZZ;f��j����Z����c�!###"&'532>7>7!cZ�	
&?3#
#�{J��4C^0K1I$&��o��a*�2��a��-��=����4ay�3!#!aY���6{����a*�5��=��Y�(��
!�9��p�%#"&'5326733>73� AXD1.8A��c��_�G_/Y	0=�w

�3����'#5.54>753>54.'�t�8FvYY[wD9�sP_(gpYtc(^Q�XHwI0_M0nn1O^.GwJX�0S8XikV9S/��F�=a�D��%#5!3!3�V��ZeYO�����z��PY�!##"&5332673YZ:e>dnZ=D;^;Z%]X��:9Za��)3!3!3���ZZ[��z��za�D��%#5!3!3!3�V��Z[ZO�����z��z����
3#5!32#'2654&+���qdt1z�	WRZ]f{O��6\9^sMACE8��a��3332#!3%2654&+aZnds1y�kZ�3VRY\d��6\9^s�6LBCE7��aO�3332#'254&+aZ�dv4��	�`\{��6\9^sM�E8����;�"'>32#"&'53267!5!.�2R!%)j8s�JL�t>V**V0����Z
��K\�fu�\N��Onza����"#".'##33>3232654&#"�G�hf�J�ZZ�J�bg�I��ksukjttlfo�\T�i����_�M[�o��������#.546;#";8�i�&C*���ZlU[X\h(��8
.P?ag�6(U;DBH	��.���!F9��!�+467>73>32#"&2654&#"9jvA|6#XVAL1E,hj>nIo��AP=F,H0
#?B��	Mkq(�kYx;�aTfR_'21\I+U!+324&+324&+326</2Jet��9[5Y7>�y�FD��BF�28
9<DY;>&#��.(�'U�##��XJ�2�F1
3#5!#3>73�NU��T+EEN"5#��2����_�|ED��0���7��"J�###33���d�R�d��`�R�������������!���"(2#"&'532654+532654&#"'6�\m6/ 6!ov:^"]7<S�H:ES?;,C(T"ID19
	 4)C[O)2ZH%-&&F%U-73#4>7#3�lR��mS�00���<43
�@U-�
#"&'332673#4>7#3W_bQR/4.5��lR��mS�KMLL6%'4��00���<43
�@U
3##3�`�f�XX�����������!###"&'53267!�Y�
.L:
6ACϩ�^B��U�#467####3�O�J�Ou����V.�Q�-/���Q�U(!53#5!#�#XX��X�������7��'"TU#!#X��X���3��U�0"U��7���"H�###5!ǯW���2�J����^��6���<���]U�Ff#5!3!33fV�EXXL���2�1J326753#5#"&=3�g2R+XX-W=R[XU\���!VH�U,!3333,�)X�X����2�2�U�Gy3#5!3333+NX�4X�X��1����2�2��32+#5#32654&�nkft����;GB�MKKY�J�ګ(00#U�
3332#!3%2654&+UX�hdbn)X�w9HB>��LLKY��G'11#�U	2+34&+326L�fo�XE>��8I<�KYܝ1#�(���""&'53267!5!.#"'>32�.CF,N\��OLEP(KsAEy
LT[HRL
G
8zd_|;U��
"#"&'##33>3232654&#"
�mf}�XX�|eEj<��FLMDELLF
���y��qxA{Yeiieeff�3#7.546;#5#';5#"vf�:$hV�X�E>~�=5�#?/MQ��դ.-�0��7���&JEr��7���&Jl�	��*"&'532654#"##53533#3>32�!
$wYDYLLX��Z4bbD�H#0��d^��]AZZAX&)*]g�gLU��U��&�x�7���"".54>32.#"!!32676JsBDuI)OCMP��PN-FD
9z`d|9
HNPHYVL��3���"X��N��N�����&�l�`������O��!32+##"'53267#32654&�|iedt�}
.K9 6B�lo:IE�MKKYΩ�^A��ګ(00#U@32+5##335#32654&�xkebt��ZZ��np;HD�LKKY����ګ(00#��	����U�&�x���U-�&�E����
(#"&'3326733>73#"&'5326?�W_bQR/4.5��^tm_�YN$
.9�KMLL6%'4��(I!Q)0��LZF4+GU�G!#3!3##�XX�V�2����~�&.'33>7.'33673#.'�7];] .3a	] 09<I^a\P >4�_��[���3M(4l0T���8w9����4��;���##.'#.'33>?.'33>7�ZVR<vP*N3W(8	
J
X!46J���4�;�C��h_��35�2i1Q��BV�	o�3#53533#32#'2654&+���[��^jx2z�
^T\eTLffL|6\9_rLBCD8��	E�3#32+#535#32654&թ���gt�uu揑;MG�lI��KY�Il�n�(00#a��}�%".'##33>32.#"!!3267�m�I�ZZ�
S�h8d'$"O1k~R��|w/T)(V
U�g����^�OLxqN~�NU���"$".'##33>32.#"!!32672FoB�XX�	DlC)L?LN��	�,A?
4oV��Rg0HMPJ�L��	#####3'.�*_�FRF�]*+#�'�6J��J���X/1Xa;7#'##5##3'&'S�Zc5O7aZ�4�������;.2JI=$a��	#######333'.x)b�DQE�`��ZZ�~+#�$�6M��M��M����.X<#Z`:U#'##5##7##3373'.'#�Yd5O4dZe�VV�_4�����������;9?G2�� #'.##"#7>7'5!��BL,B\B72Z25A`B+KA�����B�.Q8��/4��S4/��8P/�BQ�x #'.##5"#7>7'5!8�6<"?X?
+&Q(+@W?!<6����3�'?)��"&��'"��(?(�3H�a��"%#'.##"#767##3!'5!��BL+CYC"61[17A^F�ZZ[�����B�.P8��23��R3.��Q�����BQ�UK#&#'.##5"#7>7##3!'5!�6<"?X?
+&Q&,
@W?	�VV����3�'>)��!'��&"��(�߬3H��*UU2.#"32>32.#"#".5467>54&+532654&#"'>7.'53>�	5X\aNZd��78#1,>9!,2
52 4<-EM exbYxdfbiiP@=^*,%V5?@<*3U9*!^CIVVG^oU#;#<EBCE;KG<6:"=%A
5.�>��T2&#"32632.#"#".54>7>54&+532654&#"'>7.'53>y
2;E8/ 7"oz43".5]%!&	,"h8;B"RFHXMNF:ES?;'H(:!5@4*3�9&
D419
	4(CX	J
#6!7#)1/*H%-&&F
;
0,��Z��c��O����=����#".54>32%"!.267!�K�lo�HH�pk�K��pr	�	oprq�-qfo�\\�on�\[���rr����yy�7��'"
#".54632'"!.267!'�sGo@�sIo?�JJ8MHMJ��L
��A}Y��A{rQOOQ�gZVVZ��"#3>?>32.g"%�g��^�	P'90!�@F��71N&'X1�HW(J2&#"#33>?>�	
{u�\F!/D(*�z��*?H"�4:����&!�^����&"�)=���6#".54>3232654&#"%33>73#"&'5326?�E�dg�BB�hd�E��emncbnmf)]wk]�ZM$
.9fo�\\�on�\[�o�������+��'H"Q(2��LZF4+G��7�G"&T^I=���2"&'.5467>32'>32>54&'#"&'�%[}@��%$X|CB|X%a$$	\]]\$$[__;b�b��`�bb�a��ss��ss�7��\L-#"&'.5467>324&'#"&'>32>\pc7^vqd!_t[;>@:;@2?:
t�0�us��rQddSSf$f=���	!X4632;#".#"#654.54632".54>32.#"32675332654&#"'>32#"'P=5&IR38XD4@i;!<;f]|=>tP&K"4RZfe7Z8 ef[R3"K&Pt>={]hGG�56>9{
	
"'9�_�om�YC����������CY�mo�_>>:��Nq U2;#".#"#54625654.54"&54632.#"32675332654&#"'>32#"&'�&IR29XC4@<g!=::gk{rd"8)=>NC"4X6"DK?=*9"dr{k8QPq?955k"(8#
	&���C
je^l��l^ej
C����(""(��~s
4#'##'##'5.'33>7.'33673#.'�([Z'7];] .3a	] 09<I^a\P >4�sT2222T��_��[���3M(4l0T���8w9����4��;����
1#'##'##'5#.'#.'33>?.'33>7M([Z'DZVR<vP*N3W(8	
J
X!46J�T2222T����4�;�C��h_��35�2i1Q��BV�<�f�2.#"3267#5".54>�8i)%"S2v�v�-Z|�FS��M�������_�jl�]7��"2.#"3267#5"&54>9(PDSQRP ,X�Cu"I	bii`	��慎d|93��-t'''7'77'7�;Z�"�d�!�Y<Y�!�c�"�t"�Q9Q�R9Q�!�Q9R�Q:R�5:���#"&546;>32#���/h2�8c���2#4&#"+532>�5<?EW83RI�55$?��\� 

4632&��"0:x�#'
	
%��\� 

5654.5432�w:0!�R%
	
'#�H��r2;#".#"#546F&IR38XD4@=r>956��9

)7ESao>32#.#">32#.#"!>32#.#">32#.#"!>32#.#">32#.#"!>32#.#">32#.#"�;<:?/-$&(<<:?/,$&�0;<:?/-$&�<<:?/,$&O;=9@.-$'��;<:?/-$&x<<:?/,$&��;<:?/-$&�5=@2"#�5=?3"#5=?3"#��4>@2!#4>@2!#��5=@2!#5=@2!#�4>@2!#���&4#,5>G#'>7'.''7>7.'%.'5.'7'>#>73AR(��?:	02+`#9)f/�P2q+	-i/�-j.1q,20(?9��9(g/(+`h(9R41q,	-j.�+`#9)f.1?9
0��R(9(9R��(g/),`"::	0(?W-i/2q+a�D�
%"&'3326737#4>7##3333bPQ/4-6SXsMS�udT�cbHKM6%'4KM�A��LK���w!MDP����U�G��
""&'3326737#4>7#333IbPQ/4-6SXH=R��lSl\?^LL6%'4KM��=2/�?�� K��2��4�3#32+#535#3254&���Zl~5���JJ�bf�`�ZN�5\:bo"NZ�����D8	�3#32+#535#32654&����okht�LL掐<LF�wC��MKKY>Cw���(00#a1�'+#32267'7>54+12993G0CWZċ���$27A�_�9dK+]
���n�B*S8+���U�0","&'##33>32'"327'7>54&S>QXH
N@cy.)74?!8RCAX:7=G
/6�I#0��Tu"K)T�\^ckK)OR8eea�]!#!5���ZH]�ʓU��##35��X���,���
!3###53�����ZJJ�P�N��:NB�
#3##5#535��XLLJ�D��D�a�g� "#!!>32#"&'532654&7Z���;��DxN.?>"Z]�:���P���m�FP{xwzU�� #>32#"&'532654&#"#��"�:b<&9:"?CTY"XJ���ay8N
`fic��Du�	3#5###	33K���_V2��V��g��dV�����j��j��o[��Z��Z�G3#5###33�ݯbU0�R�d��`�R��������������&�$�:4&'.'532654&+532654&#"'>32#"'53263\(/o1`cthfajiP@CY*+*{Mtx\MZ^}}*31t4RHBD>KG<6:"=+dMIUXGXs:&,48!�$�"84&'&'532654+532654&#"'632#"'5326�]6"]7<S�H:ES?;,C(Tg\m6/ 6!ag*31t5O)2ZH%-&&F%ID19
	 4)?X9&,48a�D��	3#5##3\��lV;��ZZ;�����j����ZU�F5##333�+�XX�`�Z����������aj�%#5'#375373#'5==ZZ==�f��5lɌ�D����C�b��"���U73#'#5'#375%m`��fz@8XX8�S|�6��\�?����@�
j�53533#3	##
TZ^^;f��Dl��Z&OUUO�Z����j��&	�3#3###535����`�f�XLL�ZA��������]AZ��	###53���Dl��Z��;����j��zP��Zk###5!X�e�V���������H��a�D��5#!#3!33�Y��ZZoYV��M����.����U�Gw5#5!#3!533 P��XX#XO������2��a'�
33!3##!aZn��Z����.P��M��U�
33!5!##5!UX#�X����H�0��a���">32#"&'532654&#"#!#!`7��CwN/>>"Y]ul9Y��Z����k�G
P
|vxy��y���U�B#>32#"&'532654&#"#!#!"FqB5[8$64 9<PS"X��X�18|fay8N
`fic��2=����3?327#"&'#".54632.#"327.54>324&#">�#7 $&'.N#? h�J�� :2tg�j(-0S43S2[/-...$06KAlPO		Z�k��
L	����1�KVm31m_RabOGw& {7��]"2>2.#"3267.54632327#"&'#".546">54&!)
$P?F9%ZCAU9'
#%D2%Om8v
"#$ ("Gne9Z3 W:\VS_DaFJ|K���;51KK43;=�$Y�,4&'.54>32.#"3267#"##"'5326y"~~O�nqT$!Q0s�{{/T((U;)31t8��l�]*L����N8&,487�$�"*4&'.54>32.#"3267##"'5326*"PbBqH)L@�ML,C@*)31t8�wc|:I	�ag
N8&,48	�D!�5##5!#3BZ��V��yQQ����G�#3#5##5ƮOVP�I�z����I��6�>��#533>73*X�\po\�����(YX)&��6�35#535333#�b��a�O���_�KO���3##5#5333>7�ц�X���\nk��C��C��.N!!Q/�Dh�5##3332��_��d��_ݺV��6��tV��������F5#'#3733�(��c¹d��c��N���������	�DG�5!#5!#!33����dZY��yQQ��z�����G�5!#5!#!33l�B���XQ���II�{�1��P�D��3#5##"&533267YVVZ:e>dnZ=D;^;����%]X��:9ZJ�F_3#5#5#"&=332675OWP-W=R[Xg2R+�2����!VH��\�PY�##5"&53353>7Y["F&=otZ@I='H�6#
��Z[��9:��\J#5#5#"&=353>75X8 ;	RXX_;8���yrWG��Y���aj�3>32#4&#"#aZ:l7dnZ=D;^;Z��]X��:9����U�M���#*2!3267#"&'#"&54673;>"!4&�j�;��yyDm.+nP��
7FK6��au�]�Z�g3{�R��?5"1��P|wq���f!#*2!3267#"&'.54673;>"!4&�Fc5��WO:L*)P7s�@EH3

Ad9>J@!<lI5aYL�67 
1Oc/HNKET�D�&.2!3267#5.'#"&54673;>"!4.�j�;��yyDm.'aCW��	7FK6��au�&X�Y�e6{�R����?5"1��P|wLl;�Gf!%,.'.54673;>32!3267#"!4&bZj@EH3
�YFc5��WO:L*#G,V$>J@�o67 
1sn<lI5aYL��NKET��(*�.T�
#"&'33267333	###iW_bQR/4.5���dVd��g��V��g�KMLL6%'4��[��Z��Z����j��j����
#"&'33267###332W_bQR/4.5���d�R�d��`�R��KMLL6%'4������������a���#32#"&'532654.#"#3>?3*��H{N.>?(TeArJ"9ZZ6�k|��n�EPzxPg2����?�U�%#"&'532654&#"#373=d;$75!<N]X0WW�a�Jo>ax9L`gh^����7w�D��%3#7###"&'532>7>7!caHgNZ�	
&?3#
#�P��{J��4C^0K1I$&��o�GH%3#7###"'53267!�\@Y=X�/L96ACJ���ϩ�^C��a���%#"&'53265!#3!3�DwN/=>#\_��ZZoYFn�DOvy	����.U�(%#"&'5326=!#3!53(5[8$559=��XX"Yav6
NYg����a�D��%3#7#!#3!3�bIgNY��ZZoYP��M����.U�G�33!533#7#5!UX#X\@Z>X����2�����P�DY�!##35#"&5332673YWVS:e>dnZ=D;^;Z��]X��:9ZJ�F##35#"&=332675OVM-W=R[Xg2R+���!VH��\�a�D��!##3333#7#4>7#��S��߄aHhOY�rEB�F��I�����CB��U�G�%#7#467####33�@Z>O�J�Ou��uJ���V.�Q�-/���Q��2��(*�.~�
#"&'33267'!#3	.'3�W_bQR/4.5yV��U[Q��
Q��KMLL6%'4�X���3*-;�.����
)4#"&'332672#'##"&546?54&#"'>326=�W_bQR/4.5cb^@#MDI`~�[:5*L!#`NdM7+DZ�KMLL6%'4�V^��L,*MRPW C4B��83-*KN0��~�&&l���.����&Fl�����5����.��-"�a��
#"&'33267!!!!!!�W_bQR/4.5U�q���#��5�KMLL6%'4�X�O�N�7���
%,#"&'332672!3267#".54>"!.�W_bQR/4.5cEc5��YP3O*)P7LuA;kF?I>�KMLL6%'4�<mI5[_M>{YX~DHQHDU;����"5>32#".=!.267!LCq0,kOq�NJ�ij�;zbbz�U&X�R\�po�[[�o"y���}vKm;��3���"��;����&�l;���3����&l���T�&�l������&�lS��&���&�l�����!����&�l�#���#"&'532654&+57!5���:g-/n2a`qiC��G�dc^xRJCC>I�P��#"&'532654&+57!5��DpBAwQ;^ !b:M`o[;��@�5aIGm=PYMTK=�J��b�W&������U-�&�����b��&�li���U-�&�l(��=����&4le���7��'�&Tl
��=������7��'" ��=���&le���7��'�& l����;�&�l���������&�l�����pW&���������&^�B����p�&�l$������&^l�����p�&���������&^�[��PY�&�l0���J�&�l	a�D��	!3#5#���UUZ�P����U�G�	#3#5#��OWPI�z�����a��&�l����U��&�l_�:��"&'532=##53!!3#3�
0YJJ�����N9�I4F:NBP�N�@E�:�"&'532=#5#535!#3#3�
0VLLI�M9�I4F�D�J�D��@E�:a�"&'532=##333�
02��_��d��_ݻN9�I4F6��tV�����ڑ@E�:"&'532=#'#3733�
0-��c¹d��c��I9�I4F�����΅@EF�3333####=��d��`����f��`ם�)����O��6��R�3'3733##'#7#8��d��c����d��c��6����D����>�!"&54>;3'3#"C�w3vcmZ�df_WUg^9b<.�6MD>C<��7���I>��+�'%326=3#"&'#"&54>;3"32>=�940:Yba=MP?ns:~fEZ�_a�/7�95:7��Qj,&%,hfA`6.��>K�1�6��3�"/%326=3#".'#"&546323.=3"326754&,A83Yd^2>%
UKcxw^=KW�FBCFPA>�@J@A��b_+(8����.!
2��jeee\^dj#��.�+2326=3#"&'.+532654&#"'>	nt[GT[3;95Xh^[pjba]abK<:W&-)v�cMIWVJF=;@��aa_kKAII<6:"<+&���"(232=3#"'.+532654&#"'>�Xl3,1=19iW��GGE8AL;7&E&)R"ID19

:4-5���¡1+H%-&&F#�Db�#23#5#54&+532654&#"'>qx`JY_ZV[vkceghO@=](-)z�cMIVXGz���D>II<5;#<+&�G	!$23#5#54&+532654&#"'>�Zn6-5 RVPJMJ;FS@8(L$ *_!JD17
	5)J����//I%,&'F����)%32=3#".5##"&'532>7>7!Q56lXi[9Y3�	
'>3#"u�@8{��aa&VG�I��5C]0K0I'(��o��%32=3#"&5##"'53267!�28eX�]f�/L96A;�?=���_d��^C��a����%326=3#".=!#3!3o5665Xh[9Y2��ZZ[Y�@9;@��aa&WG�����.U��D!5332=3#"&=!#�X38eW�\g��X���@=����`c6�=���� !#".54>32.#"32>5#���l�PT�w;r-"&f4��6mTM[(�r+��Y�rn�\M��U�I9eA7��M"3#"&54632.#"3265#P�{�����:]( T/ggYdXM�"~����Eo`\qSC	��p�#326=3#".5#5�8758Yk[9[5��Q�D@9;@��aa&VG�Q��?#326=3#"&5#5��4825W�[i�H��@=<A���_dH5��%�(2.#";#"3267#"&54675.546=Lo-0)W>CMfdedhwbX=k-V���e[O[}�'@ 97<EJADCCS&o^J]
UINe��+���"�:��*"&'532=###"&'532>7>7!3<
0Y�	
&?3#
#�N9�I4F{J��4C^0K1I$&��o���@E�:;!"&'532=###"&'53267!3�
0X�
.L:
6ACN9�I4Fϩ�^B��,�@E����#"&'532>7>7!3###B#"��_��f��_�	
'>K0I'(��o������6��tI��5C]0��"'53267373#'#'#56Ac��d��c…r/LC������������]a"�33273#+2654&+a�bs3�_��f�!lNRHfdX_[�2eL���X$��cBOED��U� ")33>3273#'#"&'#2>54&#"UHNAVs�c��d�
sY>Q�1?GJRCA�I#0ii�����mo/4�/6]<\n\^ckP�.5463!!!!!!##3#"�&C*�����#��5�t��iFhlU[X8
.P?agO�N�O(��t	;DBH��="")2"&'##7.546;>32!3267.#"35#"ug�
}�f�:$hV�K/Ec5��YP3O*)P5>C?I�t�=5E
rm��#?/MQ: $<mI5[_MKDUQH#�0&.-��=�V��6��7�"V����<��\aj�!##37'773'jl��ZZ�V2VXf�Z3X~j�����S5Ra�V5U�U773'##37�,E=`jJ*IR�f�XX��+EEwJ,H]����������6"&'532654&#"###"&'532>7>7!>32�/>>"Y]ul9Z�

&?3""T7��Cw�
P
|vxy��{J��4C^0K/I'(��o����k�G�,"&'532654&#"###"'53267!>32=&9:"?CTY"X}
.K9 6B "�:b�N
`fic��^A�����ay8a��&>32#"&'532654&#"#!#3!3�7��CwN/>>"Y]ul9Z��ZZnZ���k�G
P
|vxy��M����.U�J&"&'532654&#"#5##3353>32r&9:"?CTY"X�XX�X"�:b�N
`fic��������ay8a�D��5#!#!3yY��ZV��{������U�Gi%#5#!#!iWP��X�J����3�2a�D��5#4&#"#3>323iY=D;^;ZZ:l7dmV��:9����]X��U�Gh�5#4#"#33>323OxZCXXY4bbO��W�e^����(#)*]g����4~�3!3#!#"&'532^ZlZZ��K@!<=��/�6N�wIHI��"&'53253!53#5!#CXXX��D�IZe�����K\�D{�&!33	##!3#5!#3>7!B0Z;f��Dl��Z��[V�V7$A2 O/9 M��9��Z����j��I���>���OQ:���6)�F�#3533##5#3#5!#3>73��X�`�f�X�NU��T+EEN"5#�������������_�|ED��0��@�� '3>7.53>7!3#5!>7#!5l)DKUW&'PW��6U7� z&tg&�&[1
XK��\_�X����G����,0X�F?&367&=3>7!3#5!675#35M%~M#'JQ�u�PKw[�(W1�5=���/6
@�L�0�����8�:l�7�@��%#5###"&'532>7>7!�WT�	
&?3#
#�M��{J��4C^0K1I$&��o���F8%#5###"&'53267!8QS�
.L:
6ACF��ϩ�^B��.���E�
>32.#"7#"&54632��kLHl"ED5:8��eRX_GFKC*���E�4632#"&%#"&'73267�kMHl"ED6:8O%dSY^FFKC�G��>4632#"&�!  !""""N6��4632#"&4632#"&N$$$$$$$$�&&&&��&&&&�Q%#"&'732654&''>54&#"'>3232675#53.#"#".'7326323###"'�[CV�?G+d>&0) D9/%<"M1NSC	&$ 2IG'%

#9/B%+ %8*ohQ.�FD��j{#'%:F,%$ EN;N*

�GD1;7,,"RJG��"x;%#"&'732654&''>54&#"'>3232675#5!###"'�[CV�?G+d>&0) D9/%<"M1NSC	&$ 2IhQ.�FD��j{#'%:F,%$ EN;N*

�GG��"x?%#"&'732654&''>54&#"'>3232675#5!#####"'�[CV�?G+d>&0) D9/%<"M1NSC	&$ 2IhQ�Q.�FD��j{#'%:F,%$ EN;N*

�GG��'��"���n<%".5467>;5!5!##"632.'.5463232654&:/@>1]���n�	.7JbSK?"!9h-;E+FM1�L3(
VGG�!
KAAK

F9 ),!$������&���3n'!##".'732654&''>54&'!3n O$9-N09g_,GCO.)5-(#JG��nG'0Z. U;2D"=�rNwC%1)EF01-
n<!!>32'>54&#"#".'732654&''>54&'!�� O	>"AS#H )#'*-N09g_,GCO.)5-(#JG��nG'0Z.	OE.\/)G(,'%&2D"=�rNwC%1)EF01-
��cnF7'7.#"'>325!5!!>7&546323267#"&5467.'#5/�*=*9)"J,(@>%��c�k"C
*&-
4.1 /"B)LT/.5:PAC�6-J90�GG�	 ,!"+!)!"F
O>(E
������nD%467>54&#"'67.#".54>32675!5!#3267#"&�=C,#3.M1(++R:6:`81I%,I!0D�*ʤ(B=:2 /"C)KU0I0-+?=.#.$&EK142[]55C-
GG�JE)M 
,$"E
N���H8y&�"����H8�&�#3�H8n/#'>7>=#'>54./.'&=#5!8^%Q
�("n?5!H
01W'7O8'�3<0J#)��.:&>$A2(G*-#21"$D�G���H8�&�$3��'y&�"����&�#����&�$����&�%�	n4!632'>54&#"#5#".54632.#"3267!5!	��0EAR#H '#68QG2/S2nX91:@=(,E��	'�2SM.h2) T)/.H���$&M9P^I4/53*#GAnD#5#"&'.54632>54&'#5!267!32675#".54632.#"�Q#S*l�b"%	�A��#:��F>F�c+N%@(/K+`O6%077'��-k}#-";/GG��%8R`TZL'F.IQE,,+)Bn#".546;5#5!##�7&"BhQ'��*<�GG��']n-##5#"&5467.547#5!3267!632&"#"]gQL7M`(.
4]�J8,4M��+"#19'�٦QC4F*G��*'+#!%(F(�n0<%".5467>;5!5!##"632#"&'73254&74632#"&f:.A>1]�o���	.7Jbbcb�;=9wKt1k�L4(
VGG�!
KADVXF1DAN"$s  !!�n"##5#"&54675!23#"3267!5!�hPH2Mc�%$ :G:&2G�/�'�٥VG3HF1/+++#G�nH%2>54&#".54675!5!##"&5467.54632.#"632&"#"(M~K.)"5:!QJ75�9˴3C2]�Rab*/ZI4
#X,"#^>F?lE/>$ 3?S40D	FGGJ
TH:nX4S@-A+<@EA 	FF(&�n"##"'#".'732654&'7!5!5!�Q�)$,)C(5`X*G.d: )=-���'��rP-.>=�w��"(,N@nGG��n7L%".5467>;5!5!##5#"'.'.5463232654&727##"632:/@93`��hQ0	SK?"!9h-;E+FM1�64��	.7*#=�L3(
VGG���AK

F9 ),!$.�!

�n+>32232675!5!##+#"&'732654&#"�AC^	'���gQ(0
>M"U�3E)YB7>9).�D?	�GG��27jr]P4+.(n ##"3267#".54>;5!5!�70@7,G*6L*,c5Em>Do?��'�&A0?J4bFAY.�GXn$##"&54>;5!5!2654&'#"X�PXBnBq�Do>��X��G^:9#J/!_'�qIFW)qgC[.�G��=C0M7'FDPn0%".5467>;5!5!##"632#"&'73254&f:/@>1]�oPn�	.7Jbbcb�;=9wKt1�L3(
VGG�!
KACWXF1DAN##An%0!".54>75!5!##"&54>32'>54&#"3NuBHvE��A�'@E @:!A11?sf7F##,7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+�n####"'.=#5!27>=#zQ�B/],O�4�
!'��'�*:;F6�GG�� ,+��'.��Hn##".5467>;5!5!�Qm==JG6.O/RD��pH'��H+1[94(PV0#8�GG.�x-#5#"&'>54&#".546323267#5!)QP7Uw_M/% QALI5)K0PJ:34J R
'�ٴa]G6233	F	=:89#H8J\$#( GG��n4.'#".5467>;5!5!##"3:7&54632�&*UG+!`;���1:GOR*+-!:"F/O9,?_GG�. 5E#1 #	3#*vx<##5#"&5467.54632'>54&#"632&"#"3267#53vhQI:M_/;R?5G(=	(1#299,5J>�'�ٖQC2G8<O8-/)'
,# 'F)&)(+2G9n!####".5463!5!9gQ�6&"�nG��*6*<�����9n&��Gn#5#"&'.=#5!+3267�QD/(AOG��
2(F'�ٿI@�GG�)0&n$/>32'>54&#"#5#"&'.=#5!!3267�:#AR#H (#59Q@+(@O��()@'�SM.h2) T)/.I���G9�GG�70"In(##5#".54632.#"67!5!3267'IgQM88Y2yb('2��oI�6C0!�)'�٥*K3V\E�'G��43�.�x1235#5!##5##".546;54&'&#".546�%:Ƀ;gQ�*$!
+/9KYLxD>t�GG��%!',i/2G=@;5dn#5##".546;5#5!+3�Q�*$"~d���'��%!',�GG�Sn##5#"&'>54&'#53267#ShQN3Zo><{�=12J�nG�ٳyd
/,0G��11*46l���n!%.'.54632>54&'#5!#�6;hP
"%'$
��h,L1-w*61dX$"<'-GG#:7L54o���n!-%.'.54632>54&'#5!#4632#"&�6;hP
"%'$
��h,L1-w��!  !*61dX$"<'-GG#:7L54o7""!!���n+5!##&#"'67.#".54>3263235�hQ2.M0(++R:6:`81J$,I!:W'GG��c?=.#.$&EK142[]55C8}@n!0?5!##"&'#".54>32>7532654&#"326?67.#"�4D+O66P'I-/M.-P36O':#m!=#*?7%&5��6%&6!<#*?'GGw]J5U0+$.!+T=8T/+$'"r��!#7>@455>5541!$8���wn&�7;n###5#".54632.#"3267!5!;hPK56T1s^
'%
0>F?-4K�};'�٥*K3V\I6230-#G(���x,47"&54632>54&#".54632.'##5!z#/$'2@;/98^]GC/R3E=-T@3S%�QY�#VA8C#FS:3@+U@Eu!'_,,H]j��'GGQn##5#"&'.=#5#3267QhQJ2(AO����22�
nG�ٿI@�GG��/�)0���n&3##"&'.'.54632>54&'#5!2675#KQ:'*]!)o=68cL"%	����'@"�
4'��
	
4n161dX$";0GG�	�.*>�r"n7%>54&#".5467.5467>;5!5!##"632A$.:AEIGF6[c;)���"h�	/6EW)DAE$ &+90:G55G|M&;4"(
VGG�*C&:L�Vg��%53�Qg����%&���@���4632#"&��!  !�""!!*�n*%#".'732654.'.547>;#"�UF.NJ)E&J2$-/+,1.;?]f'	,&-6�BO"RI#ER$%)0"$8/>G
 ($<;n##5!�QY'��'GG����N�$�.546323###53.#"�TK<P:ngQYW=7(*g#@"AS9y`G��'Ghc1+"7�9��632#"&'73254&#"�6:KS]Va�<='FO1j1+M?=N\L+0>J! �����#"&54632.#"3267?9KU\OKpV">6pI342*�

O?9P8[5'SX' &
����#"&54673267C)KUYX:42 /"�
O?8SB,!"���vB&#"'3267#"&547.54673267C)
,% 0"C)OQYX:4-$ /"�

?
K94"/JB%
���Ey
#"&'73267EkMHl"GC597_dSY^FDIC�%g���.#"#".'732632�(&

#9/B%+ %8+gH4;7,,"VM�gg���.#"'632�)2""'46O?gO[&	I3{k�Tg���.#"'>327.#"'632�-+*2-F&, '46O?g(%	E
+&49E3{k����*y&"����(�&#���j�&$���W�&%�M�����
632.#"�DeO"92eD	,3V3)PKg n#3�Q�'��nG����&�PZbg4632#"&%#"&'73267#"&'732654&''>54&#"'>32326?>32#"&'732654&#"#1�kLHl"ED5:9�[CV�?G+d>&0) D9/%<"M1NS%% #F6&F-_P.D 1.#9+!(9/
0&eSY_FFKC��FD��j{#'%:F,%$ EN;(@/80%O?Q`#55647"),%.�[���h#53^GG���c�l����!!�cI��MG�����i'3�rlG����N�i#7qAGi�����*�
#"&'73267!!*dD@cD:/22��H��gO@DK4./4�@��J����
"&'73267��Ad#M==M"d�'B""B'����
"&'73267"&'73267��@d #M==M"g>A`#,O22O+#`�&B!!B'v BB ����	n&�������An&�������Bn&��������n&�1O���@Pn&�S���@An&�/����n&������Sn&���^onX7'7.#"'>325!5!!>7&546323267#"'3267#"&547&5467.'#5/�*=*9)"J,(@>%��c�k"C
*&-
7+,% /"B),% /"B)OQ6./5:PAC�6-J90�GG�	 ,!"+!(
?

?
K9%B":
����:�nW2675!5!#3267#"'3267#"&547&5467>54&#"'67.#".54>�,I!0D�*ʤ(B6;,% /"C),% /"B)OQ6EI,#3.M1(++R:6:`81I�-
GG�JE#7?

?
K9%A*D

-+?=.#.$&EK142[]55C�.�v->#23267#"&5467>54&#"'67.#".54>32>h8&80%#5 ;C8> %!
F#GA.-J+':";:3*6
>
?2(=0.%")J52'GJ)*4�.�v�J"'3267#"&547.5467&#"'67.#".54>32>323267

%$5 <B#$%!
F#GA.-J+':";:%8&+"&$5��
=
=2
',0.%")J52'GJ)*45+
=
�n3#�QQn����n3#3#�QQ�QQn��n��Ky�%".54>32'2654&#":[33Z:;[43[=5D@54D@y3[:;Y33[;:Z2GJ89FJ98F����x*2'>54&/7>54&#".54>HR#RGy(A�jn)#'110?xL9'IQ2`<#51�Dh2  !:>05#T���x$%&'#"&54632>54&#"'>32�@_O#0$&+>A4#<&%S+7Y4F9-W!-�L#O9;<E*UAFl,pZ���x3>32.'#"&54632>54&'#'2>54&#"ZP5PY;0,?:;A#< "0$-"0-52!&<@0&"D#RI=J(B*3ME"*2N#	0$#0G&# >���x+9%#".54>7.5467>54'732654.'�QF+G+,.6A!U7878T
"A3/+�"("(
!  
7J!<(2A/6M:/4J78K208K41E5
*&"/"!/"T��%x'.'#".5467327&54632�&$+RA&T#FJ		+(,-3CKNF2V@.m11]4FG
!1%	^`#g��xA.'#".5467.54632.#"632.#"3:7.54632�"B[.$)iP?-l'#,	
2>F2
)+-2CA=.M-6?,@CFG%
	E*,..
#1%	!U%&1L%#".'732654.#".54632dN=aI3P1UB=)1$:4c\E<:U/uh2wʙ��mRF3X6!FR:5BFzH�x!".54>?32673\:/*�>�.!B03^4$.p$L;>J2�5�7C"3+""J)G��x*4>32'>54&/.732654&#"G)L4MZGA�$@�7(P0&)0/''2�-J+]JAS

t<#51�.P&*36*)55@i.".54>32'2654&#"�)D(%D,+B''B+#++#%*-$?)&?&%>('@%B)! )+!)i��4632#"&i""""N##%%��+y&�"���%&����%&�����&������Jx&�3�����x&�4�9n$632'>54.#"#".54675#5!�*)tf"H:6,)*$$29'�gY0j4)!X+&7S&*!
�GG���n".:F##"'#".'732654&'7!5!5!4632#"&'4632#"&4632#"&�Q�'#+)C(5`X*G.d: )=-����h�]'���J),::�p}�%(G@VGG�DSn%#5#"&'>54&'#5!+'.'3267�QN3Zo><{S��
��
1,=1$5'�ٳyd
/,0GG�E
$411Bn7!##".546;5#5!#!R8�7&"�Bh�xG��)<�GG���n$7!#"'#".'732654&'735!5!#!R�v'#+)C(5`X*G.d: )=-����h��GCJ),::�p}�%(G@VGG��?�x2#>54&#"'>�_jYJPSLG-,< RxeRIb��GG756F
Pn/3".547>;5!5!##">32#"&'732654&!!f@-<#73d�oPn�!$8T[ad`�;;7zO>6,���+

D,/FGG�
	A9:KJ@3:;�GIn"*7!5#".54632.#">7!5!#!327'R?M88Y2yb('2	�oIh�q-C0 �-Gr*L3V[E�	GG��242	�����^R�'�������^
7#/"&54632'2654&#""&54632!"&546322>?12??2 !! ��^;22::22;1 !! �\�F#."&'#"&54632>32%27.#"2654&#"s(67$2A?4%76(2?2��.(($"%% +**\,-?50C)!,@45!3E"!((('D!$��TlH>7#.'553,"12",2�#44#
��rv�|#4632#"&4632#"&74632#"&.`�H��2���''7'77''7'7755#47!75#45
45#56!65#46a55#57!75#55!55#57!75#55����A>3232>3232>32#.#"#".#"#".#"�6+ *)$$), 4;5(&,#&,+&"-#��C?)********<Z/:T********+A"��6��	"&=3648E�4+n_�t����	"&=3"&=3 39E�47E�4+n_94+n_����a(%3#�*7�7(������(
%3#"&5463�j7X(��3c�C4673#.%#654'3�2002�2002� :0@>2:90??2:��cDC#/4673#.%#654'34673#.%#654'3��2002�2002��2002�2002� :0@>2:90??2: :0@>2:90??2:���3���h���kk�K%4673#.%#654'3�k2002)2002� :0@>2:90??2:�T�����!.'##'33>?33>?3#		+-B)!

++)
	!)C/�		y�s#"
yy
!
#s��T�����!3>?3#'.'##'.'##73	+-B)!		++)

!)C/� 		 y�s#
"yy 
#s�5���)5%#"&54>32#"&'>32"3254&"32654&�*WE|�)LkBNO^J+W$ `*\a�3MQ d,J"UG5B69�+H+üT�l<M5@EKT?3S�A4J '�)BG1',.�1
3#!#3>73�NU��T+EEN"5#��Z����bW�qE>�v,a7���"
#".5463232654&#"�^P3M,]Q3M,�'+*((+*'
��6{f��6yfn``nn]]7��A"".54>32.#"3267}c�PR�`=h $X*{spm?_($W
:z_c|:I
feag
N��T�#!5T�Xs���6�JU,3!####U�X�X����2�2��C�32+#5#32654&֔nkft����;GB��DMKKY�J���(00#	E�3#32+#535#32654&թ���gt�uu揑;MG��I��KY�I��(00#1��'�3#"&5467332654&#".�^�]Zz~~zY\�^LQSJNNOO����^n��n^���MdcNP^a������73'���=�6q����������
73'73#���=�6qW==���Յ�����!!!��H��!C2���3#'3#�65Q66������M!!����MG�1���3267#"'#"&'73267�KA5AA6@JA4-'<\F<<F\<'-4�P�����3!!�PN��7lE�E������463#";#"&'.�EL=
��.,�5:GE
,������E��"�V��h��'73�r=�(�-h�(��=� ���h3#'3#hDDxDDh������h3#73#73#��@@m@@m@@h��������[�����.�g�3����'70NOO�RRS���L����4632#"&'4632#"&��}!!!!!!!!�2�L����#4632#"&'4632#"&'4632#"&���}!!!!!!!!!!!!))�47>;#";#"&))73��#>O�BG E>��\�W#.#"#"&'732>54.54632~&%*4`K"	EHSG,E�15P��|3[E(K,R8i��[QX ���8!!����8H����I+53267>54&'&'+&'9?pz&	
"-#"I$"3.+

G0&$�OI;#"&'.54>7>7"#-"
	&zp?9'&*&0G

+.3"$$��O8.'.5467>;#"�*&'9?pz&	"-#"!$"3.,

G0&�����8'67>54'.+5325"#-"	&zp?9'&+&0G

,.3"$�����)3267>54&'.54632.#"+}z&	
)+2M@<\/B;(! %1)+9?p8'!$86!7I?O!26"2)"3/+

��,T8(%#"#"&'732654&'.5467>;Tz&	(,2M@=[/B;(! $2)+9?p�'"$76!7I?O!26" 2)"3/,

3�xD!".54632#"&'732654&#"32>=4&#"3267#"&54632�w�MnV<DMQ
	/.$4;6t^Nj?93#.4	

OSH>SkM�Z�f��H8:OA% qhGzI.Nc6ap 'DO:;E��i�V*�xR!".5467>54&#".5463232>54&'.54>32'>54&#"v_y:3*. (,
:AH=>D)1""TLOV"' %F;AA@;
,($1"!:9z4[8;L)3%") E(82>/B0M/ 4$9&*;$3%38#>+B46(F +& 4 V97Z4*�xG!".5467>54&#".5463232654&#"3267#"&54632u^y:3*. (,
:AH=>D)1"!RI�|93#-4
OSH>Sk�4[8;L)3%") E(82>/B0M/ 4$9&�tMe 'CO:;E�w��*#xFP%4&'#".5467>54&#".546323267.54632'>.#"���Ut;3*. (,
:AH=>D)1"#M>moU\#G;+J.BF#H!��<>)*!�$({�4[8;L)3%") E(82>/C/M/ 4$9&p]3A'6B,k\FA'W))?:'$NR�W��h��7�-�-]<�<8x6B!"&547.54>32.#"632"&#"327&54632"&546326co9,9'TC <.@7)1*3

%A'C?( 1Pg!!  kSO5M8'D*F0""9G4);=
	#"-"!!":���x1=32654#7#".5467.54632.#"3267'4632#"&�0�1"R
DG@B)I-1-9D�n6/LTN< : �
j((-D;7-:C5.HU<[aI;9<5

\  !!)�x+7E%#".54>7054&'.54632.#"'4632#"&"32654&'�@e:@i=:`8(@8;E@) OSo!!!!YO^*C&@R<8�<H 'O<2G'9+*<<,! #&1]�""""o23#,-0#=$���I4@L7>7>54'.+"&'.54>7>7;24632#"&4632#"&�$-!	'F?9'&*/"#-"
	&G*3!
'&+$$$$�$$$$&0

+.3"$:&0	,.3"$�&&&&��&&&&'*��
"&'732672.#"'>Kt!JI4;<OoWKt!JH5:<Oo$a_IHNEgYa_JGNDhX'8��
7>54&'7.5467'ALDHc][e�BLEGb^Zf�?<7LE$tLKsp?;7LD$tKKs���E�
#"&'73267EkMHl"GC597odSY^FDIC-�%'7'77	�D��?��D��@ؾ0��+��0��+/�E�7".'73267332>7#"&'�-A%O!+J ) O%A-,77�&b[DEEXXEEC[b&&..&������gw�������Vg'w����wl��
33#'#73'&'
�M�[A�?[�9
�桡�
�)5##!#3#3%35#��ԩP]|����M���H�G���3��2",7>3267#"&'#".=!.#"5>32>324&#"7>32672x|Z=3(M!#c2>QT6A^3WOJ1M&(M2�>#[MIa[3*?UK^H��9=:C�PW"A4B)-).<mG6`[Mq4=MQ-*KN08zETOJ
6'35#535323##254&+2654&+UKK�9[5ZFet�7>��BFFD��E�;3+E+DY<J&#��'/.(�;���"3267#"&54>32.FQ]VX"E#"D.��>xV+S#"A�l_^m
H
�Q|EE
V+324&+32����~�\d\M>�����d^�v$2+5#535#3#3254&}����88�H��9�d�����H�G�H��d^V�)!#3#3���A����H�G�!���"("'732654&+53254&#"5>32�gT(C,;?SE:H�S<7]"^:vo!6 /6m
%F&&-%HZ2)O[C(5 	
91CJV�7�#2#"&546�X+����2��
"&'532653t!$'XR
G-��xOKV�33>?3#'VY �g��g�+�"����%��
35'7373V#AY`$��:&�7<J�IV�3333#<7###Vw��vX�H��f���H �w�#��V333#467##VT	`T��`��:���+5�k;��? ".54>32'2654&#"=Ws89sW}�;sTVOOUUQPE}RS{E�}S|EGn__ll__n#���"&'532654&#"'632�.D"$D"Q^XW"A!Fe��=s
H
m^^m
E#�Q{F>
%"&54>32"32654&)��A}Y��A{Y_oo__ll�sGo@�tHp?�KRQLLRRJHE�74>32'>54#"#.:z_c|:I	�ag
N�Hn?ArH(M@�ML+DAZ&%"&547'7>32'"654&27%1��!8'>$e@��$8&?#c>&A2l_J1��o�sJ7(:-!�tI:';-"�
�$4RJ���"4QL4��|"!-4"&=!.#"5>32>32#"&'%2654&#"267!
etdSM4N()M5DifBFm?�r?d^@OFGPNHI��<F��<	�m5`ZM7878A|Z��8659IgdeifdhgNJES9���*#".5467.=3326=3"32654&�#)/8xd=c950%%Y2462X�A==AA>>�1EJ8X`+S:9IH.HH.<<.H�955<<559;
? 2#4&#"#4>>}�]OUUQ]9s �}_ll_S{E;��?
#".533265?;sTWs8]PUVO
S|EE}R_nn_V�2+##32654&�ne*aU3Y�:+HE=TM-N1�G�-5/.�7.546;#5##35#"�1ij�XX�fDG;><�#<-JO�����(--1�!"&54>7'3353'35#"ji1�f�XX�GD@<>PI.;$
����G�1--(�!##5!#Y����HHQ��%#"&5332653/aKjmY@AD<X�8Z4m[W��=BH7Y&/H�%#!5!254&#!5!H]h��W�d^��I*)�`bWxYDXG
\+��+!#!5!254&#!"&54632"&54632�G*']f��Y�d^���H
\4abYwYEX�(��J�!%#!5!254&#!5!254&#!5!J]h��YZV��Yd^��I*)Z.,B[ZWmNCWnQ>XG
U0~&\�333>73��YkkY���6126<��
�$333>733>73#.'#��RCVWT	DQ�]T


W��+X27.��"PX.��.:.

/:��'�	35!5!!' ��p��#:�DB�nD!���#"&'532654&+57!5��fWov:^"]7<SLMH���B�	ZFF`O,72,A�D����'"&54675>54&#"'>323267�ejFXCI:9&J!#\4be?OJR<?%S !%a
^P6o'AO527B_P6n'AP517B��� )%3267#".'#"&'53267.54>328'?%2<&6S"%"<(4A,O66O+"5�4*F10F,F)57n70K,,K0&MHV�##��YI�1
�33#.'
�S�]z	z��T).'��V�!###!�W�Y��0��V��5V##5".=3332=3V*dXWVd*Y�W�Ze2\9��9[2���3������!###"'53267>7!�Y�<8


:�5uj&WGH,Bq�N��'##3.'3b8�7;�5��		5�����R6#����#5##!#3#3%35#�E=�:�������&���/�/���?��!2+2654&+32654&#�VZ.+,<VK��<,6;L]>02@�/;&1.2;?��$"#�-�,$")
��&535323#+572654&+32654&#
2�VZ'QAVK��<,6;L]>02@�-�/;2-';?�-$"#�-�,$")?��+324&+32��s��i|>\SL?��ln�khUP��?B�!!#3#3B��Ƚ���/�/�'*�535#535#5!'ɽ��/�/�/�T(��3#"&54632.#"32675#	�%M1lr~r'F>!S]Q^+f�weew
/
]PM`?��#5##3353�;�;;�;�������#57'53¨77�77V�����v�'"'532653
(:B�-)��[>;?��#'#3>?3�E�/;;)}D��'���)��?D�33?;����0?�##333#467#�6W��V:�x?"�����_�T>��?��###33.=3�D�6D�7d?!����E�?��333#5467#?7�D6���Fb�T�!?��(��#"&5463232654&#"�mimijmhm��KNOIINOK�dyzccyxdQ]]QQ\\&��*".5467.=3326=3'2654&#"�2Q/3.&$;/330:$'-5cQ=::>=99"A.1<;*44)55)44*;
;1EL/4./22/.4?h�2+##32654&�[S#QE5;v;.CA:�B<#>&��.�(/))?��
2#'###32654&�VS:#�Ep\;}BE947�<=44����.�)(*$b�##5!#�;�[�}//;��#"&5332653�Y\VZ:==>9:�B[WG��59>0T�#.'#3673>7T{<Z
X;{=HR<U
H�T33�����409��648f&2#'##"&546?54&#"'>326=�@=*2,0>RU;&"2>3A2#,:f48�..114(	'�"-.5Og&"&=33>323267'>54&#"�?=)2,/?RU;&"1=3A2$,;39�./104( 
(�"-/$�g*"&546323733267#"&'#'26=4&#"�ANO@)3	. 4 7-+:...SSSU*�&,88
;AD9:?!g'283267#"'#"&=3&#"5>32>324&#"7>327�:'!2A Q$F@I�b 12 \(;2/@;")71=/��%'Nb'
(34P@ q/
D%/0-/"I)3\7l�!3>32#"&'##3"32654p4)AOOA)4)9c8+*:/.x$
SSST)ȭ;=;?@;z$Y�""&546323.=3#'#'26=4&#"�ANO@)3:/4 7-+:...SSSU	��8+,88
;AD9:?$Mg2#3267#"&546"3.�CL�:4!44$J]UD)/�(gPB79.
TPPZ,0+)2!Kg2#"&=3.#"5>3267�K]UECM�94"34#)+)0gTQOZPA 6:/
�)31+$g'#"3267#"&54675.54632.#"3�0b5'%79(JH.$K;&6-O6-�+7	.
6($"$)-*	.!g%"'73254&+53254&#"5632�C7,O6-&/d6'$=+LMH.$H*

-+6
07(%$"),$�Yg*2373#"'5326=467##"&546"326=4&�G&.MOM14M-3#ICLKL,0/.502g1+��EF10*
1WOM[-@;<?5:B98�{a#2#"&546v9
a��B��7U�3>?3#'#3ppC��Ey'99�
	m��� v�7+g!2#54#"#54#"#33>323>�;;8G3,8H4)9.	8Q<g8?��L63��L<8�B,67�^g%"&'532654#"#33>32	N:-9.
:!@@.�+M;9�B,8>��-3$fg#"&5463232654&#"fXJFZWKFZ��15512550�PWWPPWWP9BB9:@@g2#"&'532654#"'>zEU^E*+43e+7gLUYT	/@<v,&�ve
2#4&#"#46�QV=3784=SeZK:@@:KZ&v�
#"&533265vVRUS=4783�J[[J9BB97�lg"2#"&'##33>"32654&�@OOA(49/3 6,+9/..gSTRU��,-78;@F67B
��27#"&=#5?33#�	")=22"eeD();�DI)�3Za#'##"&=3326=Z.	<"?@:N:,a��+8=��M<8�;|J+53254&+5!|=C��TB=�\/�:;4H6)4*75)a!"&=3326=3326=3#'##"'#�;:8G3+9G5(:/8R=8>��M73��M=8���,6Ja
33>?3��=JJ=�B�23���
>e#3267#"&'#"'53267.54632�)4%#6
'"*>55>/}*+)* !B!+99+"E7�k�-74>32#"&'72654&+532654&#"7(D)BH6&1@W@#,_-6:%6/%*/!))��4>;8+2;6>B	��.*0/(.$%$+)��<a7533>53}};?7)9:4�zF�@9�X>me4|[�!-"&5467.54>32.#"'2654&'�FZ>8'8,1=1)0:8,H)144,298M@:G
%#*	*653A+:-,;91/8$���75.546753'5>54'�N^ZR8M_\P8<45s:7q��VJIW��VIIV���>78>?7o�}b"?'.#"5>32733267#"&/�N	
 Hu=�A
&&8u��*#���|) $m�3��vZ2#"&546#U

*9Zx��B7���72&#"#33>�
	)=9/5�1<0�B;'3��Z�%#'##"&=3326=Z.	<"?@:N:,�+8=��M<8���J�
33>?3��=JJ=�`B�23���7�kk-4>32#"&'72654&+532654&#"7(D)BH6&1@W@#,_-6:%6/%*/!))��4>;8+2;6>B	��.*0/(.$%$+)��"<�533>53}};?7)9:4�zF�@9�X?le4|.�b�4632#"'#72654#".RBLTXD8'^/3gY1�5RQYQMW
+U�=;}wa$��h5.546753'5>54'�N^ZR8M_\P8<45s:7q�VJIW��VIIV���>78>?7o�}�"7'.#"5>32733267#"&/�N	
 Hu=�A
&&8u��*#���|) $m�Q��o"'.%3267#"&'#"&5332653>32'.#"YP3O*)P7Bc#ZGjmXAAD;XF0Ec5\>C?I�[_M.4)6m[W��=BH7Y8%<mI5FDUQH���0�.:#"&'##.#"#>325332673#"'3>324#"3260zc?P?	32)
X21*P?dy[�UBAXHG��. Dx;E9h:F	";".���bgcij7����.;"&546323.=.#"#>325332673#"'#'#'26=4&#"dxyd>O32)
X21*
G
P1UEBYGGG
����.!
3S;E;k:F��H"0I]^dkq_`j����0&#"#>325#5754632.#"3#32673#"'#m	32)

^^\R 5*,+��
21*X;E�)h[E
;?#D�:F����"-6@7#>7533>323>32>73#5"&'#5.'#4#"%4#"U3/-G
U0~&]4[Z20/W=�AW@>XUnFA;~CUmNC>�@�/:
�I*)Z.,]hM/<��
��	
�YMG
	,ZV
��y""+2>73#5.'#5#>7533>"54W`b21+W.`^)X35*G
\&NGA�E"]hP7;	����8:	�I*)JMI%I���0".<&#"#>3233>32#"&'#32673#"&'#2>54&#"U
	32)HNAcyyd>Q21*X�1?GJRCAw;EHI#0����/4K:FI/6]<\n\^ck���",7&#"#>32533>32.#"32673#"'#U	32)H
R8#

)H+21*X�;E�b,@Q-Q6!:F���H"*7.#"#>3254>32.#"32673#"'#R	32)
(H00
&##
21*W�;ENBH
K,0|:F������"8"&'532654.'.#"#>7&54632.#"2673�8Q [/C<94
D3%$oZ1U%"J'69<N0&	2!t
P+$  2@
,DJF#")	+-?
&NP��S�4".=.#"#>325#5?33#32673#"&'3267�*G,32)	LM#4��21*/%*
4
HAj;E�*#r{D�:F81/C	"�$32673#"&'!!57&#"#>327!5��

21*)p#�x�32)+n��B�:F�D:�;E	�DU��0+"&'##4632&#"3632'2654&#"T4VFu{vKOwEO6phuttDIHGQJL
()G!st"Q*PG-	Q����JkcciWam`7ga353#5##p�99�9a������B*�!#".5467'57!5"32654&��O=�sGo@vhb���RJKRQLL@�M/oOu�:mNkxC~J��YPO]]OPY����77.5#5?33#373>32#4#"#3267#"&'$ZLM#4��X�M�E&bbWxZCX�*
4&=Kq:)8*#r{D��H=���]g��W�e^��Z��C	N$##575#535'53KP�PKKP�P?G�44�G�44���6"&=#53533#3267�OHMMXpp* 
&
UKbG��Ge1#G
�f"#*23##"&'###53533>"!.267!TZu86x`>QXKKHN1JE#F>DG��C"qrF��/4��F�I#0JLMGR�ghRZ`
��J"&=#5353!533#'26=!(jmGGYXGG/aHD<��@m[BF����FD8Z4GH7DD=B
��S$/".545#53>7#53!.'53#3#%326545!-Go@-60%��$=&=#�J6,���KRQL��
=qNF-GIEK85PEI;UFv��OddPU�:0�%1#"&'532=#"&'##33>32"32654�9<
0!&?P?XP?dy%"�UBAXHGA@EI4F
. D��";".��Km#�bgcijd�7�:>�$1"&546323.=33#"&'532=#'#'26=4&#"dxyd>OX,9<
0$
P1UEBYGGG
����.!
3�Q�@EI4FH"0I]^dkq_`j�:��&"&'532=##5754632.#"3#3|
05^^\R 5*,+��,9�I4F�)h[E
;?#D�u�@E7��"/<23733#"&'532=##"'5326=467##"&546"326=4&5UF�9<
0�u{vKOwEO6phuusCJIFQJL"()G�c�@EI4w>st"Q*QF-	Q����JkcciWan_U�:�"3>?33#"&'532=#'#3�	�gٲ:9<
0�=WWk4
���@EI4F�5��(�:��3#"&'532=#�,9<
05��P�@EI4F�U�:�"0"&'532=#4#"#4#"#33>323>323

04mNCWnQ>XG
U0~&]4[Z,9�I4FYZV��Yd^��I*)Z.,]h��@EU�:E"""&'532=#4#"#33>323�
04xYDXG
\3`b,9�I4FW�d^��I*)]h��@EU�0"%3#"&'532=#"&'##33>32"32>54&�9<
0!&>QXHNAcy%"�RCAX1?GA@EI4F
/4�I#0��Kn#�\^ck6]<\n(�:�""2.#"3#"&'532=#33>O#

)H+,9<
05H
R"Q-Q6։@EI4Fb,@3�:�":2.#"#"&'532=#"&'532654.'.546�1U%"J'69=33H&9<
0(8Q [/C<954J(o"F#(9+&:a@EI4DP+$  (8,DJ����.2.#"3#"&'532=##"&'532654>�&
�9<
0�$<$%
$=�	C%;�&�@EI4{~AI	C%;�BH�:�"&'532=#33>733a
0��^rr^��9�I4F��6126<�.�@E�:�3#"&'532=#'#37���,9<
0
��c¹d����Ɋ@EI4F����'�:�!#"&'532=!5!5���#9<
0�� ��B�n�@EI4F:�D.�:n!+6"&=#'##"&546?54&#"'>323326726=.1@#MDI`~�[:5*L!#`4b^,
#��DZOdM7�=J?L,*MRPW C4BV^�܇#EKN083-*7�:�"(5"&5463237332673267#"&=.'#'26=4&#"dxyd>OF
#1@&	P1UEBYGGG
����.!E�^�#E=J7%'"0I]^dkq_`j7�u�0=".=467##"&546323.=432.#"326726=4&#"/6 O>dyyd>Oy%
	$��UEBYGGG�IA?3
!.����.!
3O�I �A;%C	/]^dkq_`j7�:K"$+".54>32!32673267#"&="!.9LuA;kGEc5��YP3O*
#1@+L?I>
>{YX~D<mI5[_�#E=J>	�QHDU+�:!"5"&=#"&54>75.54632.#";#"32673267�1@+9sn!6 -7s[:S(!!E/ySF8I�R<8U!
#�=J>	YC(3	;1DJFL,&H\1(�#E!�:�"5"&=32654+532654&#"'632#"'3267�1@"]7<S�H:ES?;,C(Tg\m6/ 6!ov9/
#�=J�)2ZH%-&&F%ID19
	 4)C[	=#E3�:�"&-"&5#".=!.#"5>3233267267!j1@}^Dd5oYP3O*)P7KrCK
#��?I��>�=Jiv<mI5[_M<tU��#EQHDUN�:;�2#"&54633267#"&=#�A,
#1@5��1�#E=J?!�:�")2#"&'3267#"&=32654&#"'>�Gn?ApG

#1@B*PLNOAN":z_c|:8#E=J�
hdagI��:�(2.#"3267#"&=32654>�&
"8!
#1@
$=�	C%;�H=H5#E=J�%;�BHO�:�#33267#"&=#'##"&533265,
#1@%
\4abYwYE�1�#E=J?G*']f_���d^!�:�("&=32654&+57!5!#"&'3267�1@"]7<SLM>���t�e\ov5
#�=J�.42)A�IG�SFKeA#E	lg*2#"&'##54&#"5>323>"32654&�ANOA(3	.!4 7-+:...gTSRU)�',88
<@C:9@$#g"&54632.#"3267�FY]F2)g21,*PUYP,	y:>/	>g +2.#"632#"''67&546"32654&�2*g3=/5#4@(,]R,0#g,	y .(!&% '>YP�$f�*7#"&546327.''7&'"32654&�*KA-8WKGYRG"3+UI P7016612�	( #&qIUVNDCM":-!&�52,9:8%5!g%2#"'532654+532654#"'6�;H$.HML+=$'6d/&-6O,7g,)#$$(7/	6+.
*
��###5754632.#"3�X9==;6#
9X8��>7)I����a7"&'5326=#53533#	

00911/�+�*��*�-3$�Yg*2373#"'5326=467##"&546"326=4&�G&.MOM14M-3#ICLKL,0/.502g1+��EF10*
1WOM[-@;<?5:B95�Za47##"&=3326=3#!:"?@8N;+998=��N=8��8��2#"&546##5#5353U

[19009��*��*��5�a"&=33267�3/:
	3-��+�a#575'5�44�44a 
�

�
 �a##575#535'53�04�4004�4�*l

l*Y
  
Y�����&"&54632"&546;33#'26=#"U
H'1*/9112'
���' !(B��+<)+
7���
7"&53327�+892	�);�
:(���3#"&'532=#pL#�cRP,*�7a3379�B��,7�+g+2#"&'53254#"#54#"#33>323>�;;OG3,8H4)9.	8Q<g8?��T,"L63��L<8�B,65�)a$467##"'##"&=3326=3326=3#�8R=";:8G3+9G5(::	68>��M73��M=8��.���]g2#54#"#"'5326533>�>@8N;,3"	.	<g8?��M<8�;)
($m,7��g%3267#"&=4#"#33>32]#2N;,9.	<!>@�$(
);�M<8�B,8?7da3.=3#7F�6G�B��
1���
�$fg#"&54632'"3&267#fXJFZWKFZ�00�
[20��PWWPPWW*1/`�63i#���#5.5467533>54'N_\Q8M_\R66<67;6;6qeVIIV��VJIW��>67>?6m!�g0#"'3267#"&=32654&'.54632.#"K@1	+8<,'#339H;81H'227x/09();Q	'')-
*	''�����2.#"#"'5326546�	3"	3�
($�n;)
($�;)
��� 7"&'532=#".=#5?33#327�
+22"ee7�,=,'�DI)�:lP�a53533533##'##"&=3265#,:�911.	<"?@:N:,��*����*�+8=)%M;7va"&5467#5332654&'53#�FZ#!T�/15510�UEXQF-@,*
F4/<<0.L*,3QGQ5Oa#"&=3326=3OFIDG:S,(9�3DA7��M+"�5\g2#"&=3326=4&#"5>�-5�LG9+//,g(;Z�FK��:-.9V!-Ja
#'.'##Ƅ=JJ=�a���33�Ba	#57#533����#�)(��ba%"&=#57#53332675#0ɼ��	�);,#�)(�T$(
�Za!7>7#57#533>32+72654&#"mc���69("+0;?Z"!�	#�)(�0/%!)]
6	�.a#"&'532654&+57#5�,H,^O&=?&2>H;&��a'�;+@Q
0	5.3-$�-$_�"&546323.#"267#�PLHTQNI��/21._30�.{mn{zom{RPP��R\[S�Uw�#!2#"&546#.'52#"&546}Z*7,#"T#T
C�Cw�#!"&54632>73#"&54632��`6*K�7T"
T#��,2��'"54>54.54>54#"'>32,W
!3�	



		
�H`��"#"&=332>;�3RI&5=@4DX8�659>�l^��37#��{"���C?K�h^��#'73���"{�^K?C�lT��3'#���"{��K?C�hT��#'73��{"���C?K�&S��'77'I�"v��"vSL?@AL?@�&S��'77Bv"��v"��@?LA@?L���V��2&#"#533>:

*(!%< '!r�'����l���'���M�����N���32673#"'#5�1(&29MDd%��.#"/ENRA�\^��#.'#5>72$r�J<^�PW�Z;*gh\�26
//
&))���<
4#"5>32'>��//75,,"%�1;4.(I 6������]�������� �#363232654&'7#".#"#�>. #/()(0:0$7-)'-?m,
9*.7($�;[�8%32654&#52#"&54&#"3"&54632! 1>=31=! 1==21>�$!!1;10=91$""0;2/=:��t74&#"327#"&546325>?#	-9?12?78�,%!1:10<A?>f0H����^�&������]h�F'-82#3267#"'#"&54?54&#"'>326"34&326=W,3�D""@)#!+n(#,716p�* &F5+K-!A
"">"V �Kh�G'1#"'1#"54?54#"'63263232654&#"326=�=3B?Rp,3%)+971>�"$%""%%!M&), &�6:00@A2 95&--&&++*#!�nh�G('##"&54?54#"'63236?3'326=	$#(p,3 $)+X	
I,w_&), &l !A2LE��h#!��pg�'#"'53254&'7.54632.#"3267JC	!)3@1"GE!	�(
	53;5RP��hy�#"&5467&'72654&#"O:61=96;&,6$"##F"()287//6$(
�*" (J!)��hz�(7#"&546327.''7&'"3254&
4-'<50>911;37%""%H#�	K1994--3&
y$!&K$��po�(2373#"'5326=467##"&546"326=4&1 l5"#6#2/444!@%!"� �\   :53<+(Q#&	,&��hkF2.#"3275#53#"&5462 RE3[+0>FFRP;l59;5��l~�3>?3#'#3!M/bh/T''�H[{dO0��l�#3((l0��ldB5332(nlֹ��l�B53373#5<7##'#s5GH5(E!Dl֤�փ
�����lqF2#54#"#533>,,'6)( )F%)��4(&o���lrB53.=3#'^1}%1{l֬!|֬$	x��l�B
532#'#7254&+Nl'/#D.>:9;@l� ZUUr%G��lpC2#'#532654+'-0B,;4-6-(C \W%��haF$#"&'532654&'.54632.#"a4,%)##(2(&
"2#"&�  ��ld�"#54632.6(,$	
���)"��lbB	#57#533b��z���l����h�F'"&54632373327#"&'#'26=4&#"-66-$ 	$&(   h8778
�&%(+-&&+��h|� 3>32#"&'##3"32542
$,77,$
(D'(@R
8778
0s'*(*SQ��pw+4632#"&'72654&+532654&#"^<+.2&",<,A&)&!!'p43+'%"'%),jy)�	��hpF2#"&=3&#"5>32674@;0.5�K#$!F855<5,J�" ��lk�##5#5754632.#"3R<(**)%	

'<'��)%1��l_�0&#"#>325.#"#>32533273#"'3273#"'#
			(
	
	(�-`p,]�}(zF#"'#7&5463232654&#"z=4)-6<41>�"$%""%%!�6:Ue.5995&--&&++��p|�"2#"&'##33>"32654&-67,%
(!#%(   �7779X6%&(+/$%,��pQ2.#"#"'53265462
$
$��((�m(oB#'##"'#7&=3326=o!)1.:(5(B�Wn
��3(&o�^l�C!.'##'33>?33>?3#		+-B)!		++)
	!)C/�		y�s#
#
yy 
#s���hd�1<4632#"&74632#"&2#'##"&54?54&#"'>326=5
	

	
U	

	V#!+s)"+#-")|		



		


,H�!A

r ��hz�#/4632#"&74632#"&#"&5463232654&#"5
	

	
U	

	Z=4/?<41>�"$%""%%!|		



		


�6::65995&--&&++��ho�+4632#"&74632#"&#'##"&=3326=5				U	

	O!)+,(5(|		



		


0�%)��3(&o�����ip���e^��
#"&'33267�QHJK62.'9�<JI=)'�e^��
#"&'33267�QHJK62.'9�<JI=)'��q4�2#"&546���&��!'3!73���dBFFBڪnn������������'O��.#"#>32
4MZ,DxNA
��b�U�%(+UP H=�]����/.#"56323267#"&.#"56323267#"&")"2' $(#1' ")!3' $("2'Q:$
:#v:$
9$��NP.'5>73E6886.,N
D
3

2�H���%#5>7.'5#.'53>73�5995.,{
D3


3(
D3

2@BB@B@����~�&&����.���!&F�c��aT�&'�����U��0�&G���a�PT�&'�e��U�P0�&G�l��a�mT�&'����U�m0�&G�����=�Y�&('|x���7���&H'|�x���a��&)����7���&I���a�P��&)����7�P�&I�N��a�m��&)�����7�m�&I�h�a���'#"'532654&'7"+324&+3 �JJ 	$&5&)
��l�V��$3���ua"�057V�P�s��;(Ώ���7��*7"&546323.=3#'##"'532654&'?26=4&#"dxyd>OXG
0!$3JJ 	$&5&&UEBYGGG
����.!
3�H&
5(&057LI]^dkq_`j��a�8��&)�����7�8�&I�S��a�+
.'535!!!!!!!>:1i8�)$�q���#��5�12
"GsGG���O�N�7��q
&-.'535!2!3267#".54>"!.#:1i8�)�Ec5��YP3O*)P7LuA;kF?I>�12
"GsGGK<mI5[_M>{YX~DHQHDUa�+
>73#5!!!!!!!�8j29:S)&�q���#��5�G"
21sGG���O�N�7��q
&->73#5!2!3267#".54>"!.�8j29:S)�Ec5��YP3O*)P7LuA;kF?I>�G"
21sGGK<mI5[_M>{YX~DHQHDU��a�8��&*�[���7�8"&J�\���a�H��&*�L��7�H"&J�M��a���&*'|��r���7��&J&�^|���a��&+�������&K���=���W&,�����7��&L�l��a��&-����O�&M�'�a�P��&-����U�P�&M�`��a��&-lR������&Ml�a�%���&-|����&M|	��a�G��&-����U�G�&M�q����Ha�&.������H:�&N�����=
".>73#"&546323"&54632!57'5!t9i2:;(���TTTT�G"
21}��4;44����g
"&>73#"&546323"&54632#3K9i2:;(�EXX�G"
21}����ak�&0x����L
�&Px$�a�Pk�&0�t��U�P
�&P�5��a�mk�&0�����U�m
�&P�O���a�P��&1�V��L�P��&Q�������P�W&1'�V��������P�&Q'������a�m��&1�p�����m�&Q�����a�8��&1�[�����8*�&Q������a*�&2xb���UV�&Rx{��a*�&2�k���UV�&R����a�P*�&2����U�PV"&R���a��&3�!���U�&S����a�P��&3����U�P"&S�_��a�m��&3�����U�m"&S�y���a�8��&3�����U�8"&S�d��=���#
 0<>73#>3232673#".#"#".54>3232654&#"F8j29:g1+2.20,2.�K�lo�HH�pk�K��ryzppyys�>"
--�5=4>�Wo�\\�on�\[�o�������7��'q
 .:>73#>3232673#".#"#".5463232654&#"�8j29:g1+2.20,2.m�sGo@�sIo?�kKRQLLRRJ�>"
--�5=4>����A}Y��A{Y_oo__ll=���-=I"&546323"&54632>3232673#".#"#".54>3232654&#")���4/50-3/51�K�lo�HH�pk�K��ryzppyys��5=4>�Wo�\\�on�\[�o�������7��'R-;G"&546323"&54632>3232673#".#"#".5463232654&#"����4/50-3/51|�sGo@�sIo?�kKRQLLRRJ��5=4>����A}Y��A{Y_oo__ll=���+
*.'535!#".54>3232654&#"�:1i8�)�K�lo�HH�pk�K��ryzppyys�12
"GsGG�?o�\\�on�\[�o�������7��'q
(.'535!#".5463232654&#"2:1i8�)g�sGo@�sIo?�kKRQLLRRJ�12
"GsGG����A}Y��A{Y_oo__ll=���+
*>73#5!#".54>3232654&#"@8j
19:S)�K�lo�HH�pk�K��ryzppyys�G"
21sGG�?o�\\�on�\[�o�������7��'q
(>73#5!#".5463232654&#"�8j29:S)j�sGo@�sIo?�kKRQLLRRJ�G"
21sGG����A}Y��A{Y_oo__ll��a*�&5x����U�0�&Ux���a*�&5�����U�0�&U����a_�&7�����U��&W����a�P_�&7�r��I�P�"&W����a�P_W&7'�r�z���I�P��&W'���3��a�m_�&7�������m�"&W�����3����&8�����3����&X����3�P��&8�+��3�P�"&X�3����A>73#'"&54632#"&'532654.'.54>32.#"#"j29:;�u<f"$k9PQIA[]:gC;b(%W/CDD:?W-47
99��_jV>5#0)!`S9Q,M9/$0&5J3����A>73#'"&54632#"&'532654.'.54632.#"�#"j29:;tb8Q [/C<954J(oZ1U%"J'69=33H&j47
99�NPP+$  (8,DJF#(93���H"&54632.'53>73#"&'532654.'.54>32.#"A
,0<88>1-��u<f"$k9PQIA[]:gC;b(%W/CDD:?W-��54
00
45��_jV>5#0)!`S9Q,M9/$0&5J3���RH"&54632.'53>73#"&'532654.'.54632.#"�A
,0<88>1-�tb8Q [/C<954J(oZ1U%"J'69=33H&��54
00
45�6NPP+$  (8,DJF#(9��3�P��&8'�+�����3�P��&X'�����
!�&9�������S\&Y�?{��
�P!�&9�@���PS�&Y���
�m!�&9�Z����mk�&Y����
�8!�&9�E����8�&Y����Z�Q��&:lK���O�Q&Zl���Z�H��&:����O�H&Z�F��Z�8��&:�����O�8&Z�U��Z���#
 3>73#>3232673#".#"#"&5332653-8j29:g1+2.20,2.�<{_��Z]^aWY�>"
--�5=4>��JwE�w�1W`gQ�O��q
 4>73#>3232673#".#"#'##"&533265�8j29:g1+2.20,2.UH
\4abYwYE�>"
--�5=4>E��G*']f_���d^Z���.2#"&54632#"&546!5#"&5332653�K���<{_��Z]^aWY�GG��JwE�w�1W`gQ�O��R/2#"&54632#"&546!5#'##"&533265��K��tH
\4abYwYER�GG���G*']f_���d^��X�&;�P�����&[����PX�&;�U���P�&[�&����&<E'����&\E�����&<xt����&\x,����&<l�����&\lh����&<�v����&\�.���P��&<�����P&\����F�&=�������&]����F�&=l�����&]l���6�&>��������&^����&�&?�Q���'��&_���&�P�&?�S��'�P�&_���&�m�&?�b���'�m�&_�/���U�m�&M�y�����SU&Yl�y{��1&\������1&^�i��.��7&F����Uj�&C���j�754632.#"7#QaP2*)/j �X2�-�gUE
4?R;8L�Zv
j�3>32.#"3###
H`P2*)/��XHCfTE
3>H��Z����(2#"&'532654&+57.#"#4>hct�?b84mX4]))a,UJVV>�F:\TY:x�WK�1Z@?a8RKD@CA�&)gQ�2�JwE��-���o���P~�&&�n��.�P�!&F�C��~�&&�c���.���5&F�>~�	",>73#.'#5>73'!#3	.'3�X42
441:\:KV��U[Q��
Q�n* 
3_))A""A�����3*-;�.��,	6A>73#.'#5>732#'##"&546?54&#"'>326=�X42
441:\:�b^@#MDI`~�[:5*L!#`NdM7+DZ�* 
3_))A""A=V^��L,*MRPW C4B��83-*KN0~�	",.'53>73#.'#'!#3	.'3�3W':]:2451|V��U[Q��
Q�b3
 +TA""A))�����3*-;����,	6A.'53>73#.'#2#'##"&546?54&#"'>326=w3W':]:2451�b^@#MDI`~�[:5*L!#`NdM7+DZ�3
 +TA""A))=V^��L,*MRPW C4B��83-*KN0~$,62#'>54&#"56#.'#5>7'!#3	.'3�.2$)C:1441:V��U[Q��
Q�"#'?
)}"A))A"�q���3*-;�.��g$@K2#'>54&#"56#.'#5>72#'##"&546?54&#"'>326=�.2$)C:1441:4b^@#MDI`~�[:5*L!#`NdM7+DZg"#'?
)}"A))A"�V^��L,*MRPW C4B��83-*KN0~%-7#".#"#>323267#&'#5>7'!#3	.'3�/).*-/(.+D;03560;V��U[Q��
Q�.>/=�"@!/(@"�s���3*-;�.���s%AL#".#"#>323267#&'#5>72#'##"&546?54&#"'>326=�/).*-/(.+D;03560;6b^@#MDI`~�[:5*L!#`NdM7+DZs.>/=�"@!/(@"�V^��L,*MRPW C4B��83-*KN0���P~�&&'�n�o���.�P��&F&�J�=~�	)#5>73#"&'33267'!#3	.'3�41W JFGG5.+&4�V��U[Q��
Q��5,k<GF=)'�z���3*-;�.���L	3>#5>73#"&'332672#'##"&546?54&#"'>326=�41W JFGG5.+&4Vb^@#MDI`~�[:5*L!#`NdM7+DZB5,k<GF=)'�V^��L,*MRPW C4B��83-*KN0~�	)#.'5#"&'33267'!#3	.'305
IGGF5.+&4�V��U[Q��
Q��,5
k<GF=)(�z���3*-;�.���L	3>#.'5#"&'332672#'##"&546?54&#"'>326=�05
IGGF5.+&4Ub^@#MDI`~�[:5*L!#`NdM7+DZL,5
k<GF=)(�V^��L,*MRPW C4B��83-*KN0~"*42#'>54&#"56#"&'33267'!#3	.'3)-1$)�IGGF5.+&4�V��U[Q��
Q�"#-
'�<GF=)(�z���3*-;�.���n">I2#'>54&#"56#"&'332672#'##"&546?54&#"'>326=-1$)�IGGF5.+&4Yb^@#MDI`~�[:5*L!#`NdM7+DZn"#-
'�<GF=)(�V^��L,*MRPW C4B��83-*KN0~#+5#".#"#>323267#"&'33267'!#3	.'3�/).*-/(.+IGGF5.+&4�V��U[Q��
Q�.</;�;FD=('�|���3*-;�.���q#?J#".#"#>323267#"&'332672#'##"&546?54&#"'>326=�/).*-/(.+IGGF5.+&4Ub^@#MDI`~�[:5*L!#`NdM7+DZq.</;�;FD=('�V^��L,*MRPW C4B��83-*KN0���P~�&&'���n��.�P��&F&�Z�2��a�P��&*�V��7�P"&J�W��a��&*�V�7��5,3#'>54&#"56322!3267#".54>"!.�.#6$+%
%<BrEc5��YP3O*)P7LuA;kF?I>�&)5U4,�<mI5[_M>{YX~DHQHDU��a��&*�Q���7���&J�=a0�	&>73#.'#5>73!!!!!!�X42
441:\:/�q���#��5n* 
3_))A""A���O�N�7��),	29>73#.'#5>732!3267#".54>"!.�X42
441:\:�Ec5��YP3O*)P7LuA;kF?I>�* 
3_))A""A<<mI5[_M>{YX~DHQHDU&��	&.'53>73#.'#!!!!!!�3W':]:2451\�q���#��5b3
 +TA""A))���O�N���,	29.'53>73#.'#2!3267#".54>"!.�3W':]:2451�Ec5��YP3O*)P7LuA;kF?I>�3
 +TA""A))<<mI5[_M>{YX~DHQHDUa$02#'>54&#"56#.'#5>7!!!!!!�.2$)C:1441:��q���#��5"#'?
)}"A))A"�q�O�N�7��	g$<C2#'>54&#"56#.'#5>72!3267#".54>"!.�.2$)C:1441:5Ec5��YP3O*)P7LuA;kF?I>g"#'?
)}"A))A"�<mI5[_M>{YX~DHQHDUa�%1#".#"#>323267#&'#5>7!!!!!!�/).*-/(.+D;03560;��q���#��5.>/=�"@!/(@"�s�O�N�7��s%=D#".#"#>323267#&'#5>72!3267#".54>"!.�/).*-/(.+D;03560;2Ec5��YP3O*)P7LuA;kF?I>s.>/=�"@!/(@"�<mI5[_M>{YX~DHQHDU��a�P��&*'�V�b���7�P�&J&�N�W(*� #'>54&#"5632!57'5!.#6$+%
%<B��TTTT&)5U4,�R4;44��<�5#'>54&#"5632#3�.#6$+%
%<BDXX�&)5U4,����(�P*�&.����N�P��&N����=�P��&4����7�P'"&T�W=����$0#'>54&#"5632#".54>3232654&#"�.#6$+%
%<B�K�lo�HH�pk�K��ryzppyys&)5U4,��o�\\�on�\[�o�������7��'5".#'>54&#"5632#".5463232654&#"�.#6$+%
%<B��sGo@�sIo?�kKRQLLRRJ�&)5U4,���A}Y��A{Y_oo__ll=����	*6>73#.'#5>73#".54>3232654&#"�X42
441:\:�K�lo�HH�pk�K��ryzppyysn* 
3_))A""A�co�\\�on�\[�o�������7��4,	(4>73#.'#5>73#".5463232654&#"�X42
441:\:b�sGo@�sIo?�kKRQLLRRJ�* 
3_))A""A����A}Y��A{Y_oo__ll=����	*6.'53>73#.'##".54>3232654&#"�3W':]:2451�K�lo�HH�pk�K��ryzppyysb3
 +TA""A))�co�\\�on�\[�o�������)��',	(4.'53>73#.'##".5463232654&#"�3W':]:2451��sGo@�sIo?�kKRQLLRRJ�3
 +TA""A))����A}Y��A{Y_oo__ll=���$4@2#'>54&#"56#.'#5>7#".54>3232654&#".2$)C:1441:yK�lo�HH�pk�K��ryzppyys"#'?
)}"A))A"��o�\\�on�\[�o�������7��'g$2>2#'>54&#"56#.'#5>7#".5463232654&#"�.2$)C:1441:(�sGo@�sIo?�kKRQLLRRJg"#'?
)}"A))A"�#��A}Y��A{Y_oo__ll=���%5A#".#"#>323267#&'#5>7#".54>3232654&#"$/).*-/(.+D;03560;wK�lo�HH�pk�K��ryzppyys.>/=�"@!/(@"��o�\\�on�\[�o�������7��'s%3?#".#"#>323267#&'#5>7#".5463232654&#"�/).*-/(.+D;03560;&�sGo@�sIo?�kKRQLLRRJs.>/=�"@!/(@"�%��A}Y��A{Y_oo__ll��=�P��&4'�������7�P'�&T'�W�`��=��%�&dx#���7����&ex���=��%�&dE����7����&eE���=��%�&d�����7���5&e�T��=��%�&d�����7����&e�O��=�P%�&d����7�P�j&e�X��Z�P��&:����O�P&Z�PZ����'#'>54&#"5632#"&5332653�.#6$+%
%<B�<{_��Z]^aWY&)5U4,�NJwE�w�1W`gQ�O��5(#'>54&#"5632#'##"&533265�.#6$+%
%<BxH
\4abYwYE�&)5U4,��G*']f_���d^��Z��2�&sx
���O����&tx���Z��2�&sE����O����&tE�Z��2�2#'>54&#"5632>53#"&5332>53�.#6$+%
%<B�1]%H=8w`��Z_`AO$Y&)5U4,��L;/Q7��JwE�w�0V`/S5�O���52#'>54&#"5632#'##"&5332653>53�.#6$+%
%<B$$G<H
[3bcYwYEX0]�&)5U4,�/T8�bG*']f^���d^;M:��Z��2�&s�����O����&t�U��Z�P2�&s����O�P�k&t�O��6�&>Eq������&^EU���P6�&>�D����&^����6�#'>54&#"56323#3�.#6$+%
%<Bn�a�Z�b&)5U4,��_�K�����5/#'>54&#"563233>73#"&'5326?j.#6$+%
%<B��^tm_�YN$
.9�&)5U4,��(I!Q)0��LZF4+G��6�&>�;������&^�a��	!3!!3TZ8�{Z��P�6��3##53533533###�XQQX�XPPX�HIggggI��H=����%32654&#"5>32#".54>7�Mm9/`Ige^K-.#Lo=B�f_�KH|L�\�bDpBpX\`F	?uPM�LS�\r�j5��"�#32654&#"5>32#".54>7�Kf=NQLLGB &bu�rLp=J�j�(jvw5`v^QP_F�ps�EVg��/
��\�""&54>733>73'32>7�7;;gA�a�
	�^�*FIY&0"5T1
>13M2���7C�Ue,qHG2���"&546733673'32>7b0<se�_{	{^�)Zi$%IW�:3MX�<2<3S��lhrF=5��7��Y&lO���7��Y&l����7��Y&l&OP{���7��Y&l&�,{���7��Y&l&OYB���7��Y&l&�6B���7��Y�&l'O��C��7��Y�&l'���D��
��&&7O����
��&&A�����
x�'&�&O��{����
x�'&�&���{����
d�'&�&O��B����
d�'&�&���B����
��'&-'OS�$���
��'&.'�/�#���-���&pO���-���&p�k��-���&p&O2{���-���&p&�{���-���&p&O;B���-���&p&�B���
��'*�O���
��'*�����
I�'*Y&O��{����
I�'*Y&���{����
5�'*E&O��B����
5�'*E&���B����U�&rO���U�&r�\��L�&r&O#{���K�&r&��{���U�&r&O,B���U�&r&�	B���>��&r'O����?��&r&�d����
�'-�O���
#�'-�����
��'-Y&O��{����
��'-Y&���{����
��'-E&O��B����
��'-E&���B����
�'-�'OS�$���
�'-�'�/�#���B��6&tO��8��6&t�������6&t&O�{T�����6&t&��{T����6&t&O�B^����6&t&��B^�����=�&t&O���������>�&t&��������
��'.�O���
��'.�����
��'.m&O��{����
��'.m&���{����
��'.Y&O��B����
��'.Y&���B����
��'.�'OS�$���
��'.�'�/�#���7��'&TO���7��'&T����7��'&T&O\{���7��'&T&�8{���7��'&T&OeB��7��'&T&�BB��
��4�&4dO����
��>�&4n�����
����'4'&O��{����
����'4'&���{����
����'4&O��B����
����'4&���B����O��&�O���O��&�����O��&�&OG{���O��&�&�#{���O��&�&OPB���O��&�&�-B���O���&�'O��:��O���&�'���;��
�'>�����
��'>�&���{����
��'>w&���B����
��'>�'�/�#���A���&�O#��A���&�����A���&�'O�{^��A���&�'��{^��A���&�'O�Bh��A���&�'��Bh��A����&�'O!����A����&�'������
"�&dnO����
,�&dx�����
��'d1&O��{����
��'d1&���{����
��'d&O��B����
��'d&���B����
�'dd'OS�$���
�'de'�/�#���7��Y&l{{��7��Y&lB���-���&p{]��-���&pB���U�&r{N��U�&rB�����6&t{���R��6&tB<��7��'&T{���7��'&TB���O��&�{r��O��&�B���A���&�{���A���&�BF��7�Y&l'O�<���7�Y&l'��<���7�Y&l&OP'{�<���7�Y&l&�,'{�<���7�Y&l&OY'B�<���7�Y&l&�6'B�<���7�Y�&l'O�'�C�<���7�Y�&l'��'�D�<���
���&&7&O��<��
���&&A&���<��
�x�'&�&O��'{���<���
�x�'&�&���'{���<���
�d�'&�&O��'B���<���
�d�'&�&���'B���<���
���'&-'OS�$&���<���
���'&.'�/�#&���<���U�&r'O�<��U�&r&�\<��L�&r&O#'{�<��K�&r&��'{�<��U�&r&O,'B�<��U�&r&�	'B�<��>��&r'O�'��<��?��&r&�d'��<��
��'-�&O��<���
�#�'-�&���<���
���'-Y&O��'{���<P��
���'-Y&���'{���<P��
���'-E&O��'B���<<��
���'-E&���'B���<<��
��'-�'OS�$&���<���
��'-�'�/�#&���<���A��&�'O#<��A��&�'��<��A��&�'O�'{^<��A��&�'��'{^<��A��&�'O�'Bh<��A��&�'��'Bh<��A���&�'O!'���<��A���&�'��'���<��
�"�&dn&O��<[��
�,�&dx&���<e��
���'d1&O��'{���<��
���'d1&���'{���<��
���'d&O��'B���<
��
���'d&���'B���<
��
��'dd'OS�$&���<Q��
��'de'�/�#&���<R��7��Y�&l�_��7��Y�&l�f��7�Y&l&{{<���7�Y"&l<���7�Y&l'B�<���7��Y�&l�C��7�Y�&l&�C<���~�&&�z���~W&&�����
��&&Y{����
��&&EB�����~�&&<���)[�OR��6P"&=33267�OHX* 
&
UK��1#G)[�'>54&#"5>32m(
,3+[8#)#0��(^�����(w�y'��l���U�&r&{N<��U�"&r<��U�&r'B�<��>��&r���>��&r&�<��
��'*�{���
��'*�B���
;�'-�{���
'�'-�B���a���&-<���)[c&O{���)[d&OB���([��&Oq�����6�&t������6�&t��������6&ty�������Y&tC�g�����=�&t�������=y&t'����l�d��E�&.������>W&.������
��'.�{���
��'.�B���L[�&�{���L[�&�B���([��&�M���O���&��V��O���&��]��A��&�y���O��&�C���F�!&|O���F�!&|����O���&��:��O��y&�'�:�l���6�&>�W���6W&>�^���
 �'>�{���
�'>�B���
��'5�����^�'53'"&546323"&54632FUj&��^�
����^�C(^�'53�_j0^�
���A��&�'{�<��A��&�<��A��&�'BF<��A����&�����A���&�'��<��
��V�'4�{���
��B�&4rB����
D�'d�{���
0�&d|B�������&d<���(^�BL[�.54632.#"�+4+
[0#)#8��{��
3'7'7#�@ll@y��=kk=�H�+�{�
#'73yAmmA���=kk=�!��(�3��(�3(A�5!(�AII(��375!(��NN(��375!(��NN��(��3�������&a�an���"���!5!!5!��a��a�Z@�@���	>73#0A	_�5�5&WU#���	#>73�
1A
^�4�5&WU#����t������	#.'7r	A0�#UW&5�4�[�#'>7##'>7[_0x^/�:�456:�456�[�	#>73#>73[
1B
^�
1@
^�5�5&WU#5�5&WU#���nt����[�#.'7##.'7)A0Z@/�4�:6�44�:6�4A��'#5'37��d��d���
�W��<��%7'#75'75'37'��e����e���U��U��U��U�M�+�4632#"&M@//@@//@mD88DB::D�H7D�%������8yt��H���y'��H���y&'��H��:���{�Z3#迅�'�H�,�{Z#53���'�!���{t�#53#_�_�b������{t�#53#3#_�_�b�'�&�����{t�#535#53#_���_�b&�'��1��h�%1;E2#"&546#"32542#"&546!2#"&546"3254!"3254�JLIMGKF�tM���&##&MhIMIMGKF�IMIMGKF��&##&M
&##&M�ujjwwjju
�6�4QPPR���ujjwwjjuujjwwjju?PPQQ��PPQQ��	-����(6DNXb2#"&546#"32542#".546!2#".546!2#".546"3254!"3254!"3254�6D MMHNJ�tK��~&##&L15D LM5CK��6D MM4CK�6D MM4CK�&##&L��&##&L&##&L�:dAmtwjkt
�6�8NOOP���:e@mt;f@ls:e@mt;f@ls:e@mt;f@lsCMPOO��MPOO��MPOO��'��3#�Z�:����'���'���'�b�3!333��Z��f�Z�v�Z�������������#@�:��������d�'���������'�E'����{Q3#'�(�<vy�A����(8�7'(�?��?��$��%�'8�'7'e��>����
�%��2���#/;"&54632'	7		"&54632!"&54632"&54632���.2��.45.��2.���[��^    ��.65/��4.���.6��    ��H����&�����)'>32#767>54&'"&54632�&(0Z4_l5(!J=
(%C5!�	9[S-A7#2(�/-58�_  ������:s�J��3267#"'@&�JH�&*_��bPNNP��FJ632.#"a��a)&�JI�&\��PNNP�g�3#'>��<_f���������sM�''��=Q�=��(�3�A@�	#@�LK��6�O�b+�#3#3#3+�܍����hE��D���b��53#53#53�����HJFHH������=�'$�$����^�&$���H����&$�$3!5!�%�}���C7�^��L�!2#"&'##^Bc73\>':fw.m`[l.�p?��6&'%"&5463!'3#	glqk�cc&u��u�CmX&I7!2#'3#Xkqlg�cc&�u��uCm��)�9���,��&#"&5463273#.�#%%#q^	B0�$  $&�a#UW&5����J&����)�8��'���m�4632#"&%#4632#"&  e��M&  �   S�6�i   O��u2673#".#"#>32�8?4
oK9zyt37@4nK;ywr3%MN$4%MO$�J��'632.#"@)b��_*&�HJ����PNN���%#''5'7#53'75373�~-~?~,~��~,~?,~��~,~��-~?,��,5����432#"432#"432#"]9::9��9::9(9::9�<<;�<<;�<<<��'��&�'��'�T��4���432#"432#"%432#"432#"\9::9��9::9Z9::9��9::9�<<;�<<;;<<;�<<<5���'432#"%432#"432#"432#"%432#"59::9`9::9��9::9��9::9W9::9�<<;;<<;�<<<��<<<<<<<5����4632#"&4632#"&5    �   ��!! 5��Y�#/"&54632"&54632!"&54632"&54632C  �  �  �  q    �� !!  !! �� !! '����#/;!5!3!!"&54632!"&54632"&54632!"&54632h��ALB����  �  �&  �  TLS��L��" !!  !! �4!!!!H����#4632#"&4632#"&4632#"&H$%%$$%%$$%%$w%%$  �%%$  �%%$  H����#/"&54632"&54632"&54632"&54632�$$$$$$$$$$$$$$$$M $&&$ � $&&$ � $&&$ � $&&$ ���{t�#535#53#3#___�___�b&�''�&�����{t�#53#35#_�_b���b��������{u�'3`�`�����}���{u�#7#`uu`�b������{u�
'77'`uu`>>>�sYkkY���777���{t�
#535#533#___�__�b&�'�&���JT"&54632'254#"�MNJQMOISTT+''�sljsrkju?��OQOP3v�2#"&546#U

*9�x��B
�UO
##5#533'4673U=K��I=� P}``4��]81u�@L#>32#"&'532654&#"'7+�	CZTR FE-550%L7mD@FM

C(+&*��LT)2.#"3>32#"&54>"32654&�#"6>6);JRED]/T
+2(&/)T;)F*F@FP_a/ZH+�-/-.&+�CL#5!O��'��p<1���ET$12#"&5467.54>">54&32654&'�7P*'/SBIN- !&?$ $(%$/!"()*(-&T57%07)8C@8)6+&$17"!�($$&
�IV'2#"'532>7##"&546"32654&�D]-TB% 7<
3(@JRE$/'*+3-V\c/[I,<,G(H@AS9,,&.-*;#�/�5#53533#�ll4ll�o4oo4o#9/m5!#944#/�5!5!#��q33p44>s��
4673#.>/-B/100B+1S�46�KI�70�s��
#>54&'3�0,B1/1/B-/�T�47�IK�64�7]g2#54#"#33>�>@8N;,9.	<g8?��M<8�B,���vJ2�����%�~�*}�����~33v�����vA3w����
�~U-������u@*������vL2������~C*������vE2������vI4�����#��/������#%/Y	����#��/�	����>�K�c	�����K�c	����8�&72#'##"&546?54&#"'>326=�@=*2,0>RU;&"2>3A2#,:�48�..114(	'�"-.$��M�72#3267#"&546"3.�CL�:4!44$J]UD)/�(�PB79.
TPPZ,0+)2$��f�%#"&5463232654&#"fXJFZWKFZ��15512550APWWPPWWP9BB9:@@��L�7'373#'#�xAYYAyA_`@D�zz����!��K�72#"&=3.#"5>3267�K]UECM�94"34#)+)0�TQOZPA 6:/
�)31+7��]h73>32#54#"#3p:"?@8N;,99�8>��M=8��7��Uh73>?3#'#3ppC��Ey'99z
	m��� v�7��ph#3p99`�7��+�!%2#54#"#54#"#33>323>�;;8G3,8H4)9.	8Q<�8?��L63��L<8�B,67��]�72#54#"#33>�>@8N;,9.	<�8?��M<8�B,7�l�"72#"&'##33>"32654&�@OOA(49/3 6,+9/..�STRU��,-78;@F67B!���$#"&'532654&'.54632.#"K@%4<,'#339H;81H'227/0	0	'')-
*	''
���+27#"&=#5?33#�	")=22"ee;();�DI)�$� 2.#"35!#3#3!5"&54>�$G  5;DFO������xt1_�@dXZW�B�B�C�uKs@3��)�%.4%&'#7.546?3273.'267##&#")+#?78vo?*?!#
a)J$$M5?�

]"*2:A,!p�)�Zy�[SWb
H�"JX��5�tRc@8���.".54>32.#"33>32.#">7Xc>C�`6^'$J0>^3I9G;& 
+@3F$L
Z�pl�]HG�Zr�h8"KD8�J-�35#53!!!!3#�UU����痗�AO�OnA�!�&2.#"3#3#!!5>5#535#53546P8W"I)5?����&��	/5aaaa_�E:BXANBACPJ
JFBNABguU��V�&2#4#"#5#54#"#33>32736�[ZWmNCW�F�nQ>XG
U0t*[F?'"]h��YZV�ض���d^��I*)Mň
2�#'+3#535#53533533#3###3'#3'#3'#3'#XNNNNh_vONNNNi_v**^B�C__*@R@����@R@�����|��RRR��tL����,2+##32654&3#3267#"&=#5?҅v1tfW�)\[RHnn)
+ 7@MN�nd<g?���M��CNEDxhC�%(A
CF�($_S���?2####32654&2.#"#"&'532654&'.546�ni0�_}[U�@BB8<i+@ 1"'%6#6R[%CJ0($5#7Y�ef8L.
��'���L��ECF=\C$)*9,FWQ,#)*9,BL
�� 3#53333333###3'7#7#�;J?7P3S:\<R1O5=H6Z<];FF$� <G=K@?��?��?��@��K�������U��
332#4&+332653+U�nhQKD�eQ�LMQ.dQ��|e��2NO�{�1QM�Ag;��7�f^�&�Du��/�02.#"3#3#3267#"&'#53&45465#53>|2X)%K'�%���aR'OK0y�PHHO��H�A

	AU]
N
�vA
A{�<�3#533333##fWWU�b�β�e�8NB:��:��B��N>��*�35'75'75#5!#77�u$�u$���u$�u$��P5idP5i�OO�Q5ieQ5i����/<3332>54.#"'>32#%>32#"&'##2654&#".{Vk	f�G:kJ+`$$n:e�Qg�t�]QPL*XF1

T�-C$"(4
(B�
Z�bFf9GL�^��e�PcR>.[=
6-�,D;#(384��$1"'532654&''#7.54632>54&#"n$''$'3rS>R�PU,%M>>I68-1R>(!�
K,*�wȆz	��[�1URLE=�Yf�WJQKLw,(*6IR
2�#+123#3#+##535#535#3&#3>54#326�drKACQui8SWWWW�F�$5���3;N�JD6		

6=Q�w6Y6�JDDzY
|D =����!'5.54>753.'3#>7u��I�c@:h-"$Y0�3h>��-`Mhr�*<PG	âf�_&#N��F�MzM
:���
_�"3#3##'##7#537#533.#3^`��cLU_S�R_UKb�`.iB����@R@����@R@b$U01T�R���9"&547#53>7!5!>54&#"'>323#!!3267"u~/TCI8��~@D1W"&n4eu7WDJ<	:�{�9k$"r
^_&@!@/5OSU)@!@tQ=��Y�".'>7#5.54>753�2\%$G*)J$"G.@��E�`@@^lee�L��N

GG
Šd�a	&u�xy���L�3#5?33733#3267#"&5#aLP 4� 5��O*5GO��*{{{{F��aD
K[7�-����IR[g5.546323>323>32654.'.54>32.#"#5#"'#5.''54&#"7"5432754&#"q*1 "".B1.0M*O63S2=iB4a1.R)>N(H/8W2QO6"&6 >e/
�%!> 6+")Oy;&+31<6!K*5'2L;<U-H:5(0"3K:F`SIFK	c�%)%96=IY1?(/�!!##5!#�-Z���N���NNO��!53267#53.+5!#3#�PU�
UL��0	��aP�J,.<@82@@'C@IQ�����"&'5755753772>53�*kkkkV����[j.V#O~F%A$O$A$��GAGOG@H��K~NE�d:����*5F7'7&=#"&54632!2#"&/'3267#"&'4&#";3265.#!77�%YNaI8>LO^*10"2UJV[L >%9Fdz&"%+.}!AN��jFP^/K9InAL8DWh5U1>O#PRJK?	NSO�17#)�1$0@p& ZOK;��74>753#54.'##;<�lXd�BY/]FXK]*Y�z�K��I�{��cv7��8va�
�35#535#5332+3#2654&+aWWWW����T��G[eTYZ�AYL\jefsYA�n<NDB��7H/)73.54675363253&'#5&#"#5;!7�Mfqm<<)')'<<�I�Z���N(�p��offmM����4�W�MNa��/"+433533253#5"+#52654&+32654&#a\@"@?A=:(?%OF@7@ZR=KRNhSBDX�eehrOE?S&F8Nckbbb�;:;3�K��J<8E�����h��p ����(A2#'#"&54?54&#"'>#326="&54632.#"3267�AB/8&/8�8*2A�LK���<*3-JEZ]F4+Y+*/-�6;�*12c!1
�6ʬ/(��SX\R	7s7:
<
 ��w�(M2#'#"&54?54&#"'>#326=#"&'532654&'.54632.#"�AB/8&/8�8*2A�LK���<*3-��"8>&%&,18I994',,<�6;�*12c!1
�6ʬ/(�=f
8*,/+2

)2��F� ".54>32&#"3267~o�IO�n0]0PU+K>W)X*/V�S)*
Z�pl�]8"��
;
^S�O{)��7����&t(r &� )5.546753.'67!&��IORFBB./1524,�8,..,�l[Zk
lh3��4wR@R;
PA����(4"&54>32.#"3267	##"&5463232654&#"�Ib/P02+ig03|�tM��UGAWUFAX�'.-''-.'OW>J"
4	rq
4	
K�6��QWWQRVVR2@@24>>(����/	#	"&54632.#"3267#'##"&=3326=z�LK���EZ]F4+Y+*/-=&<@AH@2'�6��SX\R	7s7:
<
 ��+1:@��G95���6��&�T����;����7S�&t+c���{Q�2ET".54>?#".5467'>7>3273>732>7>54#"2>?	!*5S_W"$3$%
A
#;#^:)'.v�'B.
3T6N;KX}!B;"01-#�"51O/BF=&�{",!DA9+
G	)88@
&D"):!(@��:5
?I�'TI-�7T,"J (+EPN;

��-O1�(3;@!����:���".5463232>7'>?>7#"&54>54&#"'>3232>7>7>3232>73#"&5467>7>54&#"�9A1"$ 1+8J>$?P8G( O?;;3	BL%8=:

1CKH
 -" %. %\db+"%4mX/- +0,!#/43!:+$m<Yy#NE,
/G.*
'6/	(7' 
CwMA.,
C�M0*
(+ .O3@7"
 
2<?
"DPcA
D�k@#!\b%	=wcD
(,$
(1-;B){E"3k]9�@MICG$P����e"&'7326'..#"'>327>54.54>732>7#".'>32�)4#8=/7F �$
""+*(&2&%8</	64!	=S=9
)20"*:>

:E"|E��^f)<8:	 �%(%KVZ*@;2!@5	'3F.	")&TRCz,04a��3333##'3#3#a���xCC�CC��:�6[��5`��`�333>32#654&#"xX#X0Y_7W638VS,��$('LK
��W.1e^��&�"3#73733#3>32#654#"yH	JX�	�$^AHQCX@_WZ6_>[[>S$(++CF
��?Uaa�������>O".54632#"32>7.54>7>3>54'77>7�5?
1"$#22+D=-:;�oA�73A00 "?)!A5`�|CPa=:=pX3'
!22(7' 
&5];
5C8ld)<j�Y'
+G5 9:19iB�;��r+Mci0$& ���I>3232>7#".#"".''7>3232>54.54>7 *3<<6)"	
HN	*66$<)�.)	1h
%24
$30""	:6$.�	1=9&77-=�+|"."3S/-]Q&*#'	<OO&DB%��&�LZg".54632>7>7.54>32&#">3232>7#"&'67>54&#"267.#"�";%=%&T)	BR+4[u@---):cI( 27=DLT-+&/UqCG(!<!HBAU2&E +WBB<?,%<20�x,9$I)4$3
%#  H+

*;>5`K+		.Nb5,8 
<}qZ4*$gl\3CY&D-#M4B5We0Dq���"6����"*%2673#".=5>754>324#"67#53KI)F+0.?4:E1V6'S<&z:-:RY!LAq;�)C(MFAkP�2;\3)�@���%2"&'#####53533533#3>32'2654&#"@7T>�WLLW�X��P9irr{GKJGSAB
-&IX��X?aaaa? B,.��|�Ifae`f_
\aa��	
333#%5aL�5M�:�"��6�5b�c_��+/333.53##%"&54632'2654&#"5!_eEOb���@TQF@URD,&&,+('V��DE��6NGF�t�XRRWVSRX:97855879�EE1���&1:".54>32'2>54.#"'32+532654&+�P�c66c�PL�e96c�P@pV0.SqDZ�P.Sr>�RLV>RF',(,E
6c�PP�c66c�PP�c65.UrEArV1Q�\ArV1_�EDCL��%*(#,��O]>7>32#"&5463232>54.#"#".5467.54>74.'326�)3
(Z(R�'?S)$FhER]+%*@(3B(.'.i50Z%50C61O.$!)=@$6&6q&PaA56]"F<CnB7p]8SC26 	))4PSB7;*6,(d6&IHI'@R0T52k0+]4<eP7��)OQ++S#/B#"a\�3!2+'3#3#>54'a�xBk>cxCCx���$/S�m[>_6��5`��1��@<k=�V�")/.54>32!'27.#"%>54&'3'u��K�mk�K[I��YM7A&N87-.-.��.--.6|�
(
æn�\\�n��&��H��?)�UU�))�ST�)�~����^��".54>54&'"#"&54632>54'#".546332>7>7>7.#"32>53#"&54>7>326732>7p%!.0"01<(![U9A1"$ -$>PB) W>4"6#=q[;@-$#K@)9O04:-A?8�[(C98om
!# $3>
#EF=
.C-^ NcuA)@h>&5.	(7& C}XC�L%.#	,AN*)(.Rm?1%PF+44+QE1!.	N)@h+"JD
() 	
5=,��K�r�.#"'>3267>54.#"'>54.54>7>32>3232673267'>54.#">?".=4&#"�  40
!49-&'%
%!

,=&)I48L1#&
#
	5Z2,!% �D/%<><�C�
.*	6%
	!>fNKg@(((+('
%$)/(

' +E)E2%&-&	��tz9+C<
LP 71t
E#*,3-Pa��
!3!2##'3#3#>54&'3a�xC=�ÿ+xCCx���$/*)DJ��c[B]��=��5`��#��<<79
��a_�33273#'#7'#254&+a���LE98Ufh[AFTsN�f�^YY�ffEc]Z��kk���s�J:��a�o_i &27'7#####3023&4'>&/'�y*A$�i�f7h`Z�fk=�0752�=44Do*�9L-
���S����N���I�A8c��%:"&'532654&'.54632.#"733#5467###�57'(((1"G;3-E)(47M�^^a[@e5`c	5	*"00	1	
2+,34`�����/��(�j�#5!#33#3#3333ve
f�Ӕ���B?�j*66��`6Z6d6`��6j��33#5467###!#5!#E^^a[@e5`��e
fj`�����/��(�*66���oXi'7>73#'#3_���_�Z=7T�^��:3L��#@#N-�6R�<�u&O�	
35!5!!%3#&n��	��]�IjG5`55��55`���!'"'532654&+57!537!5!��~?xSqN/^-[YeqB��i������<�g`Ae9"PSDACA�K�L<�����dS����'##".54>7#5!32>54.'5�&E-L�ij�L,F%�>J 2hPPg1 I>�OVuKb�YX�bKvVOH,\kBLxEExLCj\,H��V"&'4&#"'>3232>54&#"'7>54&#"#".5732632>32�5,70C)VF"2/62 &:00
$!K
&/&0!10.0#0>$8^vq
;0
	
&@KKEK
A,:!!
	l
*2'A3%/2o�T#���2#4&#"5>cOHX*  &UK�~�1#G��ak�0��~n&&��=��C��".546332>7>7>7.#"32>53#"&54>7>3267#".54>73267>54.'#"&54632>54&'�3<
1"$ +$>YL)*9)4"6#=q[59'$#K@)9O04:':98�[(C/'7Q(
%&,HR' -1-
7
!!1#	1<(![	.2(7& Q�X-SY2%.#	$5F*)(.Rm?1%PF+44+I:(!.	A)/H4$9)'QE*$
,=!*395$Q7		:V23NcuA)@h>=��z�K".5467>7>7327#".''2>54.547"32>78r_9=;<D8
/*
	!7V/#/0!T�c-;�)*QuKQl4% 	&*#0=>*@&
&+A3.\Nb�H
m2��8"".54>32!3267.#"!5Tt;.K\.JuD�lN-IV"#;TTL41H#N~HHhD C|U�%<6%>%�&"�����(4".5467'>7>3232>73'>54#"�&1	,!!7�C%!
:fO
NR#R\-;L+2-%
),$5
(&AN ::2(+L/)V9�<@42KO��e�dp".54>7.54>32#"&546732654.#"#"&'32>54&#".54>32254.#*�=Y0EqC
;e?0<"
0%"$#-'"1!./K+5#9#A3 3(M?&$8%%?(%#(EX{ " 4\;=hF	4*-R5.2:))<
0 73,36aC	

7NZ/556H(%'.N/
$(B(#--O:!�

����P�7�".54>323267#".#"32>54&'7".546332>?'>7>77>7>32>7"�!':\�S3@.."%#
	%1&DCF(6mY6 2,#3Jk.;!1"$ -',G= 8R3J.7RA
%&
	GN `�5%$
!RSF+
+!.Oe6&%#7A<
<!D>'��)+#(7& 6]<A1':e_/
$Ze5$	8,&0-
T�L��	3!5!5!5!LZ�q5��"�6O�O������{"&5463232>7>7>7>7>732>7#"&54>7>7#".54>7>7�=I3(!).
*$7_VW/?|i# #9?>,="8f062"$8?@@"(&,'/40#UyG=Y#3GF00$!SYP(QWg
J:*;#(	"=e~@V�k

5HNG2
8NUOUfd'<O$<SSc`&JTP@.F"
#I27HKPK<9>8(E�dV�5-=&4]�lFC2Zki'6whA����#;".5467'7>32>73'267.54632>54&#"�%0	,PLS&+.3"/1*@*;)"
 +M7+
),$5
_$B)+UZ%.&'1'
1o+%]kS.'%��@Y.'#>7.'7>53&_i7@4ICO&I 6A�C'1N$@./P!5�@X�P^�c+I4=�V.jg(7|x1<m."�E35!4&+5323"6EZ��Td,M=)XJ=+fY��=��EP7>=4&/5#'7D%
T1
;G(%�1!0+5'�! 
D)G@j+Ӵ"=[�E!!5!#"���M==����N��N)�� 27#".54>2654&#"���"��\�om�\[�o��������ig���
o�HH�pk�K��ryzppyysab�&!'##3!##33#!#3#%.'316�6`�X��g}a��drsa��YK����7����3 ��rX��
�����M�M�CC�1���!4"&5467###?!#327%3#26?#"&547#<Q
;�f�fsOyl;<�JC\CK
1	:A<3
E;5��#5��
|;��E%*'��+&(�!4>73>73>7#�
���~	b9�
�Do	�T])��%	��(\W",4M�7;1
a�	3!!'3#a���xCC�5�k5`a��3!##'3#3#aG��xCC�CC�6��k5`��`�l�5	5!!!7#!5!=��6�������-�K�U�?b�77�q����1���>E���� #>32#"&'732654.#"3<�:vKo�NW�u<k."&_3��6w`/B�R^Y�qo�[N��V�I
���#!5�Z���6zP��)5!3��n8ZPz6�#3#�a�Z�b_�����G$��	
332#'3#27&+%>54'$����a���C�CK[Gq1Kj�2AB%ʌ�|�o5`��"#��H3�^`8	����#+"&54>323#773#2>54.#"�@Q"Bc@4DB���'R�C�B��/Q<!0-	5"=&	\[B�mA7(6�e4::��h>bo2 ;&VyL.;
	���""(/"&54>323267>?&"#">54'�mr*SxNH`��'.-^-+ZI4%	+{$)/�9A
m]@}g><>Bd�
?4	��-'%)�H'< V
"&54632'2654#"3'3#�"-2/L; �q�rnC\CP&%*<G372�~��1��o�V
'-"&54632'2654#""&'7326737>7#�"-2/L; ��(.
��y%?]47
iBP&%*<G372��	5#/�� JC*MA<�c�!##3532!>54&#
hB�B����A��ofbs��$LL^mcu�<YFTKJ����)5"&5467'#>7'3>32>54&#"2654&'�P]R=�!Y1%�wW/tShySG 7b*6=J>@[ �*5&$;31QI?X$�Q/Am)�T*4e_L])$R7IS� B67B*��,'$=%"<)$.,��v�`r���".5467.54>?.#"327#"&54>3232>3263:.54632#>54'>54.#":7'"&#"767.'2654&'"#"&'+30H+@!	"$	
") 
	#
2C,F2
$
 "e=
2�	-$'&
,a�	
	 xt$![0�40
)*f&
$:!Y5*( )�

)
 �/GU'BO)4$**%27X!:$�)A:%)> 2���_	" 
��4+
V92U+4����:#'##3#3&'32.#"#"&'532654.'.546NE#y$D�? I�I�B"Wp;5 (:)ND<>"*$8(;rbbX�6�c	^�
50)+5
	=
0#)6_	3535#5353���YH�H����N\jx"&'#"&'#"&'+53267.546323267.54323267.5432;>54&#">54&#">54&#"7U !V67U !W66V !R5#E#?>~$!H$"G"}}# G$"E"
~}$!D#�		%% �M	
!%%Z		 $$ 	3
"X['sm�&YV%

"W\'��&[W"

$XY'��&[W"
3M#ROOR#TRRT#ROOR#TRRT#ROOR#TRR��%�'}�~'�(��`��%���'}�~'�(���`��%����'}�~'�('}��`���`����933467'73#"&'532654&+532654&#"'>32f�K�L

6#�IG�%@F>40:4992/)5$E.GH+'/T�62*		'1\�T��
?")#$!7' .>0(4
3):I��-�F57>54&#"'>3233"&'532654&+532654&#"'>32s))%1#E+@I;8Q�K�L�%@F>40:4992/)5$E.GH+'/T6p'1'  .?71N5M>���6
?")#$!7' .>0(4
3):I��%����'}�~'�(���`�����'v�~'�c��`����=�'w�~'�l���`��
��$�'��~'�^��`��%����'}�~'�)���`����$�'��~'�g��` ����)5B33467'73#"&5467.54>32>54&#"2654&/n�K�L

6#�IG�IN- !&?%7P*'/SA%$  $(*(-&
!"(�62*		'1\�T��@8)6+&$257%07)8C!"�$&
($����(,EQ^"&'532654&+532654&#"'>323"&5467.54>32>54&#"2654&/�%@F>40:4992/)5$E.GH+'/T^�K�L�IN- !&?%7P*'/SA%$  $(*(-&
!"(
?")#$!7' .>0(4
3):I���6@8)6+&$257%07)8C!"�$&
($#����";GT33"&'532654&#"'73#>32"&5467.54>32>54&#"2654&/��K�L7 FE-550%�	CZTsIN- !&?%7P*'/SA%$  $(*(-&
!"(�6

C(+&*�7mD@FM��@8)6+&$257%07)8C!"�$&
($0����
#/<33#5!"&5467.54>32>54&#"2654&/a�K�LI��'��IN- !&?%7P*'/SA%$  $(*(-&
!"(�6p<1����@8)6+&$257%07)8C!"�$&
($��%i�'}�~�)��!���"����G�'��~'�gw�`2�g!!2�=gI0*"#/;GS_kw������2#"&5462#"&54632#"&5464632#"&%4632#"&4632#"&%4632#"&4632#"&%4632#"&4632#"&%4632#"&4632#"&%4632#"&2#"&54632#"&5462#"&546)
J
�
��

<

��

�

�T

�

�T

�

��

<

�
�
J






I


@


J


J


@









��35#535#5333#3#!aWWWWZ����8�GYG��GYG�P
��35#535#5333#3#UKKKKXKKKK�GYG��GYG�����32673#"'!!&#"#>323�
21*	$��	32)Zk:F�PT;E/
*�3#53532+2654&+3#aWW���5}kRHfdX_[���N�qk@kA��OEVMFpNpa�_�#2##3267#"&5#32654&&�*A$�i�� 


CK�fkWPT�ef9L-
��'��/#LKRN��ECF;.�0�� &.5#7.546?&#"'>3273#'##4&'7">=7�CA/:eh2		*L!#`4DCH^@#MD�)JP>BY�74)��K>HU�B��#���L,*m$/
�@�KM0r$
�3�0��"#.5#5?3373#3267#"&'7hCQLM#4[GCJw+*
4(	F�5#8*#r{��9��C	����a�D��OU�Fh�3>323#5#4#"#3�Y4bbOWOxZCXX(#)*]g���W�e^���a�D|�%#5##3>?3|V%�IZZ>�i���P��U@����"D"���U�F#�3>?33#5#'#3�	�gٰNW)�=WWk4
�����5��&�D�5!5!5!!��gx�������D6PD���'�F�5!5!5!!X�� ��p��#��:�DB�n�=����#2373#'##".54>"32>=4.kIrGGpP_�EE�`bllcX]$$^�7/\�6\.8\�oo�[N����6_?�?`5a�@�!#"&'5325467####333^V("h�K�R���~a_Is�(P&��lNW�9��T���!73#	>?#^VU[��Q��Q����3��*,
;�b����#"&'##33>32'2654&#"�IrGGpP_�EE�`bllcW^$$^
8.\�\/7\�oo�[N����5`?�?_6��"��)2&#"#.'#3>73>7>�

�[�
�[�^o
~]~R6�I$'���:-	
U.�/�L.V&'\,��N.[#%W/E=7*"0333>733>?>32.#"#.'#��[J_`\
20%hg\	`��+X27.��"PX.�.#A�\.:.

/:��
�'!,23>73#'#5267.546"654&�5F>:w^�e[5$I3
@'=58W06126<��I 9;?D!
+ Ba��33!!aZ2����O��U�!!#���X�J�7���"$"&54674632'>54&#"c��:,D%-/N.UI>X0O�13R0=/,
��Q�6/1kFIV'([^CwOa�AK0\F^c0?5���#%,%#"&'#"&54>32!326732654'"!.�?;+%I/z�:lLir��XR1O.!#
��?O@�"2E��VF�o4[b" 6SQG]��J�!#'##"&'732654&#"'>32JEN8"

DU#/#8PQ^17ScOW12D	MY7��'"
#/#".54632>54&#"4546324&#"326'�sGo@�sIo?�LRRJ<1/@7  
��A}Y��A{�	T7_ll_4R2772:{3535#535#5!:����AH�G�H����vZ4632#"&"&'5326533

%	

9/9��+t��-3��#3>7��:�=i

h�T���./3� ��A.#""&'3267#".'.'.'532654.'.54>32�.S)>M'H/8W3f
3$$/5A)" 

,f:FV*L23S1<iB5`1a:5(0"3K:\f

9%	
K	#>("-V>9'2$1L;<U-"� !�35!5!3267#"&'.#"����y?F#K#1;O_"(=?N=��>7=+
J	O7#'��hx�&467>73>32#"&2654&#"c/59@"	(//=12;p# )�FO
	
+-6+56D'") & 
/��lxB+5324+324+326p".4hh&4(4>6<>;< #�#;?"E��lbB##5bk(B����"�B
3#5##53>535`#&�%$nB�hJJh&a1)X��al�B#'#5#7'3537�dl-h%i-lc+b%bBhnmmmmnhhhhh��hdF%2#"'532654+532654#"'6)1 255*%E %7&F% 
$��l|B
3#'#53H+gp.m((Bgomm�h��ifB#5##"'532673f(G	''�l�eW\a��l�B#547##'##537�$N"L$5LMB։���֬���lsB353#5##57�''�(BYY�``���hzF#"&5463232654&#"z=4/?<41>�"$%""%%!�6::65995&--&&++��lpB#5##5p'}(Bָ����p|�"2#"&'##33>"32654&-67,%
(!#%(   �7779X6%&(+/$%,��hgF"&54632.#"3267%0>@1"GEh59;5RP��llB##5#53lO'N�%����lyB'373#'#S->>,SX-BB-�hPPhnVV��"�B#5#533533�&�(}'""Jָ����lnB326753#5#"&=37.%(((%)(�$
\�`
"P�fl�B!5335335���(h'iB�ָ����d"�B3#5!5335335�#(��(h'iB�gJָ�����hzF#"&54632'"3&267#z=4/?<41>p@�@#!��6::6599@@�$#G�@h�C"&546;##5#"3267R0>@1�O'�G#"h59:3��O&*��hdF$2#'##"&54?54&#"'>326=V#!+s)"+#-")FH�!A

r ��hrF2#3267#"&546"34&/5�K#$4@:0!zF5+J864<!"��lrC53533##54#"#54675KA'@@),'A@(,(!! )&*(88(*&( ��hl�%"&5467.53>73'2654'')()$$!)',h#'#&!&823F"(% #�l��3#32+5#535#32654&%LLDa.4j55g@A" �Z;<$�Z�E�th�F#"&'##533>3232654#"�91.9=((>8..;�A#BA�6:31`�Y./95S*)Q�rh�G&"&547##53354#"'632#'#'26=,#(Z((�3 %
)+X$ '$&)h!d�X2L� !#��l�B#'##5##73'&'"f(-#,(f	
;
B�^^^^��}l�B#'.##5"#7>7'5#zI$
'$	'$H�}?BE BAddABE=�ql�B ##'.##5"#7>7##533'5#�I$
'$'	C''zI�}?BFBAddAB	`�YE<x|�#!#�5��5x|�#!#4632#"&�5�K�5��t�#7�5��:|.k�t�'7@��k.|��{o�77"&54632{���-:|.k��34�x�'7'"&54632D�ڷk.|�ƅ#��##5!#5����55#��##5!#4632#"&5���G�55�5��1=.5463232654&'.54632#"&'.#"7"&54632�(9
&#	G;'3
	'	9�"
"(.85?	 07 ;$�5��1.5463232654&'.54632#"&'.#"�(9
&#	G;'3
	'	9"
"(.85?	 07 ;$5��1".5467>54&#"#"&54>32327>32A.9	(	
4&;G	"&

9$; 70 	?58.("
"<O��!!<{��O{��F��>R��	7���%SRT$��>R��'b$S%R%S$��(
5@KOSWf47#"&535!5!4632!!#"&547!5!&73654&#"32654'#5!5!535654.54632�n6-������W%$��E$%�7�*+�����¶,n5�O 
	'#�++�++�++K$$
+
%%+		m
		�++�++�++�N 
	
#�l�!5�`44���!'7#5�}����`4�/�4���%!5!#���}����44�d���2#52654#d1<<1'D8218'#BLI�3#4632#"&4632#"&>�@=Z�6���?�9%#"&'.547327�.(*L#"'"-��|45S'"#L*(."54��|-z*t$7'&#"'632'654'��45".(*M"#&"-*�-"&#"M*(."545/�4632#"&5-54632#"&����|����;��;�&�JB�7'%'%4$$��$$�5�5��5�5����)2#"&54667#"&54>7>=3Q&(0Y5^m5(!J=
'&C5��l	9[S-A7"3'�/,49�H]�7"&'>7.546327.546327.56327.546327.546327.546327.54632>32>322>322>322>322>32>32232>32#"'�"


		

	



&%/#)
%'!,F
-,!11'%%+!
.'( 
">:
	5/!)%	
 (%	/%+"9
1
+
	#


	

%				
#
		$
	
		


���(�&l�z���2	�&c���_>���&7���%SRT$��>���&'b$S%R%S$2	E#4632#"&.#"56323267#"&�"$/>0H9.$/>1G;�"N5"M6
2}	�#.#"56323267#"&4632#"&
$/>0H9.$/>1G;O?"N5"M6
u��u�33#�7����$1�$����#533J��7��1�P4�#3#�@��:��#53���~:�HP�b433P@�����:�b�3#53�@��H:��3!!".54>3!!")EX/��4hT32Ug5��/XE)b,/0B<<B0/��75!2>54.#!5!2#�/XE))EX/��5gT32Ug5�0/,,/0B<<B��(�b��'
�
���b��&��5����432#"%432#"432#"59::9W9::9��:99:�<<;;<<;��<<<5����432#"432#"%432#"X9::9��9::9W9::9�<<;��<<<<<<<5���432#"%432#"432#"%432#"59::9`9::9��9::9W9::9�<<;;<<;��<<<<<<<4���'432#"432#"%432#"%432#"432#"\9::9��9::9Z9::9��9::99::9�<<;�<<;;<<;;<<;�<<<#����+%#54.'.54632.#"#"&54632/F""$5h_<a("L2:?,&!$#$$#�)*5?-Q^F40*,!27�$  $%�ua�5>54.5467`#B@$AA�"$'-=2##',>f��%".54>32'2>54.#"3T22T33S22S3#8""8##9""9�2T34S22S43T2<"9##8""8##9"��H��+L��t>73#L0A^v569�5��H�����)��J����	>73##"&54632U0B	^j#%%#�5�5%XU#��%%$  <"�	#5'3Y��Y��	�O���}�	5'37'#�X��X�5��O�	+��37'#7+�d��d��
W��B��� -467.54>32.#"#".732654.'B2'(%2U5YO%F%7:D4.O0[JE`1KDL,)D=(�*@6"/;":&%"&(8+CM+G4+>/$"
.��(�X3'�����(�
�3'�0'������W��''7'77V34$44#53$23c43$34"53$33C�2�h#/;G"&54632"&54632"&54632"&54632"&54632"&54632�$$$$$$$$$$$$$$$$$$$$$$$$� "%%" �#%%#�#$$#� "%%" �#$$#� "%%" L��NK75>54.54>54.54>54.54>7�,,6];AQ,,,,,,,,,,6];AQ,,,,,,,,-#2?;,#,$&,+%%+-"3> ;,#,$&,,%%*:����&<FL33253.'>7###.54>72675'"&54675"2327&B=21="?1;: =24=y�CxM8It,4q2pzYG9_97v�/+�m/>�@EL	F���
����
��OpB	�
&

\g[j
	;aCEi<���P�z:T��(�'�1��t?3#.1^A0i4�96<��t	?3#.?3#.<^	B0�^	@0i#UW&5�5#UW&5�(���7"&546323!�[Y+!(��UC-,#	!N(��"�'7'7S+�G�+�G��*���*(�_T
%.#"#>32(9'.26KJHQ�')>HJ<(_
"&'332673>32#.#"�JK62.'97Q�KJHQ79'.2�I=)'<J��>HJ<')(�_T
#"&'33267_QHJK62.'9T<JI=)'(�_�"&54632"&'332673�JK62.'97Q0bI=)'<JZ��2#52654#2#52654#Z1<<1'D1<<1'D�8218'#B�8218'#B
j�#&5467jr	nVz	g��#��G #<��375'575'37'7'7'�������e�������U�
U
�U��U�
U
�U�H����2#52654#4632#"&d1<<1'D$%%$�8218'#B��%%$  a��	##7�/��ZZ��P�����P��>���s#"&5467332674632#"&�1#($8 
�$%%$/+4+
��%%$   C"&54632'%'%"&54632A$$$��$$2��5�5��5�5�aX�x737'aT��X�T�bX�x%#75'3�T��TX�T���,�3!5!�%�}���C7�m"�'%�">3232654&#!5!5!32#"&#"G
:6F?;-6?������{�LX&WS>dH�$ !=?N=��%@+;L
#�)�">3232654&+5!5!32#"&#"3&$(-!+?.G�"��w��|kVTP7P!.
�	"$6�G9�gHD=G

"�'%�*>3232654&#!57#537!5!3#32#"&#"G
:6F?;-6?�ʫ�����屈���LX&WS>dH�$ !=�L�N=��L�%@+;L
#�)�*>3232654&+57#537!5!3#32#"&#"3&$(-!+?.G�i�n��wxe�{|kVTP7P!.
�	"$6�@�G9�@�HD=G

-����)74>7>54&#"'>323267#"&--W?:DDC.W&)b:Df:\\@JRO9k$"f<u��8J5&0$/9M,Q9S`!)0#5>Vj-���")74>7>54&#"'>323267#"&-&H34<96'J"&T1Zo(J44:<C/\Q8bt�+9(#FJD,8(  $+PP,��s�7'533267#"&{O�O&.#6LQ��55�!1/F	M��R��6tZ��53533##54&#"#54675��Z��quZ_]Z`ZzpLaaLa
�m��`da_��p�aP53533##54&#"#54675{�X��ZcXFIIGXbX�ASSAN	f`hdHCCHdh_f
N=���� 3#"&5467332654&'#5��a�ww����ww�c1pxyn]\Za[���sUd||dUs�CPPC?J��M"���� -"&5467.53>73'2654&'�U\<>-: 
X2.*7[%G525)O:+602&+6
WE7aB)EDM26MD,.YsTU�q:,JD%,H+C0)+O,'8,+3=����6".54>32.#"32675332654&#"'>32#"'S]|=>tP&K"4RZfe7Z8 ef[R3"K&Pt>={]hGG
_�om�YC����������CY�mo�_>>:��N#4"&54632.#"32675332654&#"'>32#"&' k{rd"8)=>NC"4X6"DK?=*9"dr{k8QP
����C
je^l��l^ej
C����(""(��p�4&#"'63232+72654&+�$2&.>TUk������VWaV_5<GTe|ibeoL@HL4��l#4&#"'>3232+%4&+326�!-$4PO��kn�bB>��<Ax.5EM];�MY�1#�0+�3#5!32#!3%2654&+��j����[Z�ETW^V`|N��ibeo�6L@HL4��3#5!32#!3%2654&+�����kn0X�y;CB>{�FۘMY��E/11$�a�333533#32+#%2654&+aZ�Z��j����ɓVTW^V`�```J�ibeo ��L@HL4��U��333533#32+#%2654&+UX�X����knޛ{;CD>��iiiE��MY�,E/11$�=����&4>3233###".%4.#"32>=D�h^�K�ZZ�H�dh�E.`KJ`--_LK_.fm�]N�_.�6Nf�W]�mV�HH�WW�HH�7���"4>32353#5##"&%4&#"3267<jEe}
�XX�~fm�~EMLEELME
Y{Axq���y���effeeiia��33!3###!3'.'aZ&y]\y�{\���w�+��5�3J��J���pE+*U���#*"&547##3!54#"'>32#'#'26=�L[+�XX�p%M',^1`c?%Q'GUOT\5
RN=&��#}B]a��P/+FQI12;+-��	!3'.!'v�u.F�C�F�E�3�TD��D����
133'.'#!'�d���		65.4��QCD�����$%##5##7>7'5!#7!"!.#F�Q�1[F/J:�A�:I/H[������0>)�(>0�����:P-�44�-M9����01.1^!%##5##7>7'5!#7"!.#�H�)Q=AC��<C=Q�����)3<7>uuuu�BG�--�?H�ء��
!- a��33!3!!3'.'!'aZ&y]�u���w�+F^�\��5�3J���pE+*���T?373!7##3'.'!'��]d��^�X�
�	Z@3A�����@D56C
�~��%#.'####"&'532673�]n	Y	&&7. ##�]@2S(��p,b-t8Y3J>F�!#'.'####"'532673\N
	X
!32	�`�(?��T6&gLCH3��D��733!3!#WYeZ��VO{��z�6��F#33!3!LXX�E��2���Dx�!3#5!#3>7!x��ZV�V7$A2 O/9 M�M���>���OQ:���6)�F�#3#5!#3>7353��NU��T+EE�t"5#�F�w����_�|FD��0�����!###"&'532>7>7!!c\�	
&?3#
#���{J��4C^0K1I$&��oM���####"&'5326735��`�
.L:
6A�F�-ϩ�^B��aF�!##33!!#467#��S������Y�ri9�O��IM���4f ��U�##467####33'��O�J�Ou��F�-V.�Q�-/���Q���=����&447��'"
%".54632'2654&#"7"&54632-Go@�sIo?�qQLLRRJKV
A}Y��A{Y��Io__ll__o�=����'3".54>32'2654&#"7"&546323"&54632�o�HH�pk�KK�lzppyysr�
\�on�\[�oo�\N���������5��B#
%1#".5463232654&#"4632#"&74632#"&B�NuB�Qu?�HU]\UV\XY+�
��D}V��D}U^op]_mi[��=����'4/'44&44��7���"'
b�
b+�yG�1=IUags������������%#"&'#"&547#"&546;&54632>32232#"#32654&#"32654&#"4632#"&'4632#"&3&'32654&#"32654&#"32654&#"'"#673"#674632#"&%4632#"&74632#"&23&'2#3&'232654&#"32654&#"7"#674632#"&'4632#"&�KG/>?,KHKHHKHK->?.GKGKKG�36622663�36622663J���36622663�	36622663�36622663�`�	����36622663�36622663�_�JY$  $ZI?)ZIIZ(?IZ$  $YJ>)YJJY)�<EE<<DD<<EE<<DD:



Y�<EE<<DD<<EE<<DD<<EE<<DD+e





Z�<EE<<DD<<EE<<DD,f



��@�
#"543!2#"'�&((�)('n./33/.���$D#/;GS_#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373#'#7'373X89FA44A�89FA44A�89FA44A�889FA44A�89FA44A�489FA44A�89FA44A�89FA44Aq\\neSSd�\\neSSdo\\neSSd�1\\neSSdo\\neSSd�'\\neSSdo\\neSSd�\\neSSd�L���,#5!#5!!53!5�H�(Hh��H�L�����
����l�#'+/3##5#53535!!5!5!!5!5!!5!3#3#3#��0��0�~;c;�';c;�';c;�200��00�00�0��0��'0000�0000�0000~��;��;��C��'#7'373#73'7#'#3D�EE�DC�FF�C-c22c--d22duxyuuyx,NVWNNWV��hjF"&54632.#"3#3267'2AB2$

CvwF
h4:<4?F��ltB73#5467#53;�1%�1&�!��~
#����lJ�4632#"&74632#"&#535				U	

	((|		



		


�����p}�33>?3#"&'5326?i+41+h
(#
�z
 y�$�ul�B32+5#5#32654&Bb.4jM�AB BX<$�uE��l�B	
5332#353'2654&+(>\,1�(� 9l�X<$��E��lwB	2+534&+326^-2n(~CD!�<$�X>E�`l�C#.'#.'33>?.'33>7�L%
5$1'$!(!Csd4a(p?:_
;*1`(#_7�V��
#"&'33267�QVUOB/4123@=6##$"��ku'#7#"&=3326?u4>	%(?
 
'�F)/)(	>��w��
u!���k�'
v!�D��3#5!#3>753!B[V�V7#?2!U/9 M����=���M��Q:���6)�F1�3#5!#3>7533##�NU��T+@EP�v!5�2����Y�s��2�D��3���+"&'532654.'.54>32.#"�=d&(c7J\.L..T5>i@;`++N)AR*H,1Y8@q�V XQ2G:DbJJk9ITM5F5!G]DRs;+��#)#"&'532654.'.54632.#"�og7W#&Z*AE <)/K*sX/T*E):?;.,J,cqLE:+;.8N=_bAB4(3*8O&����5333	####"&'532654&+532654&#"'>32*%�Z;f��Dl��Z�E��:i-/o1`cthfajiP@CY*+*{Mtx#0F3��Z����j��N.V^vRHBD>KG<6:"=+d!���"423533##5##"&'532654+532654&#"'6�\m�X�`�f�X�ov:^"]7<S�H:ES?;,C(T"ID-��������2$C[O)2ZH%-&&F%K��#!##"&'#"&533267&5332673�Zma2P@~5bkZ?F2V7	Z?C4R4Z)0[[��;=#��<<YHg#326753#5#"'#"&=33267&=344,P)XX*[6k(/f:RXX44,P)X^72��� G!&VS��72��9g�/7%2#"'532654+53254&#"!#3>7!36!�/?: #CC<+1$*R'&N#(��W5-L4	\N&�z*4W\&#2 %15

(,%
�
R��r�� @���9.�>�.4%2#"'532654+53254&#"!#3>7!36!.<8#@A='0#(O&&J�'R'>C3;%��82U%"1$.3

'*$�Y�.|s�Q����%4&+##5!#32#"'53265C;?�Z�����RV0#*1�=1��|NNŶ��Se
L	8;��##>32#"&'5326=4&#"##5Ӳ#W8]aEI( $9:5P X�F�!\_�EUH'.�A:��F���7#5!#3267#"&���3-!/S^��NN�IF;Le���7#5!#3267#"&Ʊ��). 
1VK�6FF��81GY`�(��%"&5463!!"3!2654&#!3!3#�10//>��11D09�XZaZ&(#QF�,%&-5&+#-��|�m@))D(U�(^#"&546;#";254&#!3!3#�10//��%�r+;��XX!NE�,%&-5V#*�/�9%)D(�>�"&5467#5!##"3267�/?G6��60+8	
�848EQNN��-9<�>�"&5467#5!##"3267�/?D4���/0+8	
�846E�FF�--9<��5!#32673##"&=�CG5_@ZZBq5dl|NN�;=Y�6)[[��326753#5#"&=#5!# 553Z/XX.e=S[���^72��� VSzFFak�4632.#">32#4#"#adW&
#/9@m2elZ�4[=Z�miO=G_[[��x��U�#4632.#"3>32#4&#"#UNF1#""V=ZaX:<WGXcQI	E)&N2.)_e��FHCaa��a�(��'"&5463!!"3!2654&#!3!3!3#q10//��Y%�1D0:�%Z[ZN#QF�,%&-5&+#-��|��|�l#V)D(U�(j'"&5463!!"3!2654&#!33333#910./q��%e7:+;��X�X�X<!OE�,%&-5,*#*�/�/�"K)D(��=���&446��7���"&TT�=����##".54>32.'!35!#>�K�lo�HH�pk�Ka^]���]_`_�_`fo�\\�on�\[�Bh
��~�n����7��'"
2#".546;&'5>7#0Io?�sGo@�R=?��r�{B>>�"A{Y��A}Y��LPG��I���
XL�a32+#5#32654&�`�BK�o^`'.+a�\-5-�f7`a	2+34&+326؈CH�9�-(ac$/�\-5B�_g�u$��#5.5467533654'6B@8&6B@9%%*%&)%OO^910:]]911:Vt)%$*JI��h�F!"&'##533>32.#"3#3267`/?>((>>-"
BttE
h04`�Y1,?F(��2�"&546;#";�CIHD~~__~bE@AC*Z[*(�'2�"&546;#";5!�CIHD~~__~�bE@AC*Z[*w**��(�2�
�	��(02�
�	(�2�53254+532#(~__~~DHIC�*Z[*DAAC(02�53254+532#5!(~__~~DHHD~�*Z[*DAACw**(��2�72+53254+5�DHHD~~__~�DAAC*Z[*��(�'2�
���NT�!3"&54632B���P?NT�!3"&54632B���P�NT�!3"&54632B���P NT�!3'"&54632B���P�NT�!3#"&54632B���PNT�33"&54632NB���P@NT�33"&54632NB���P�NT�33"&54632NB���P NT�337"&54632NB���P�NT�333"&54632NB���PNT�!##N�B�B��NT�3##���B��B�9�NT�3#33#�BB�����BNT�3##���B��7B��MS�333MB����B(�
�##"&54632
I4����(0=G#"&54632'7���4�5�3�(^AG#"&54632!5!�Y���I(S2�5353(�5S5q�FH��##5#�L�����F:�z'3533�L�:���HH�e#34632#"&�9kt$%%$F�'%%$  HR�o#"&546323#�$%%$[9k+%%$  �����H���
��V(���	5''5'(f�5a
��:<sr&�(���I	%55���5a5����$sr<FB�##532654+532#532654+532�:KmLRVT'UX
8Ki49UN$Q�*14YCOC)F*�a*,6UCPA'C)F!T"#53254&+532#532654+532�$c509=PNCF,0b#&LLBU)P#!BG9!:$��*"(@BB:3G1	��"&546;#";L��y}ib�v^	}gewP�RX2+�`'%".546;#";.`r1vzEA�kU�5[7ZmL�KF.a�@��"&'53265!#3!3�)#48��ZZlZd�L;F?����.�HmeU��""&'532654#"#33>32�( $vWGXXW=YaE�H'.��ba����9.)_e�MEU��
��&9�����-%267#"&5#5?3!'"'532654&+57!*5GOLP 4<�x?vSlQ.]-ZXbq<�3?D
K[7*!v{<�veFn=#Q`IIQB��a1���!"&54>7'572.##"3267I��?j?��Gp1!.W,�Sfha_2k1+h
ocCV-�CxES�CD>BHS.�#%'572.##"3267#"&546&��Kj1/R7�Fub\]2k0U����ťCv BS�DPBDOO)teem#����%#"&'5326=!53467#3�KD%
!&��O_W��WVK)./>��:u$
,����#"&'5326=!53!5467#�HL*!")��R[���VEUH'.Q>�/�:u$
+#��h� +"&'5326=!533#467#3#5>73B%
!&��O_��K��)2
X
K)./>�HK&WV�:u$
,��}%T"
7:�^ +#"&'5326=!533#%!5467##5>73�FM*!"(��R[�����')2
XJI]H'.Q>�/HH�:u$
+�T%W$
9;O~	3#!#3#�L/���@�?(���"'%#"'532654&'.54632.#"�hV^<#M+3=D7$?&aO)K%#=,75$)A%�HOH,(**%;-DM=)&#'9����&&&#.��8#2=H26?54&#"'>32#'##"&'#"&54?54#"'>326=326=`c>i[:5*L!#`4b^@#MD7T3>,P\�bp%M',^MT\5.GU
dM7+DZ#]aE C4BV^��L,*-.!(RN�}B��2;+-QI183-*KN0��L�(7#3>32#"&'732654&#"'.'3�Qb]X��k�KK�l��Nryzppyys�Q�����p�[�oo�\|j��������<@�.��y#!-82632#"&'##"&54?54#"'>32654&#"326=~,ByIo?�sEm fFX^�bp%M',^�KRQLLRRJ�T\5.GU#ONA{Y��>::>RN�}B��_oo__llh2;+-QI1����"&/!#3326533'.'�m}(	��Qb]�0G7\]Z��d�P
dj��8J%c]�2w�3�<@.��L#(3232653#'##"&'#"&54?54#"'>326=`c9=WGXF
[=@W"_<P\�bp%M',^MT\5.GU#]a�HCb`��H*(2350RN�}B��2;+-QI1}�13>73#'!3'.']�	
�]��cP��Qk�P�/=;M�6��)�<@.��#"-!'##"&54?54#"'>323>73326=�%Q?L[�bp%M',^1`c
�a���T\5.GUP/+RN�}B]a�83;V��2;+-QI1��1333##3'.'>?#aq�p]��go�u�.�,�"���A�6?��|}<@��@?Q"b.��#&1!'##"&54?54#"'>32373'3>?#'326=�%Q?L[�bp%M',^1`ct_a��0
)Y�T\5.GUP/+RN�}B]a��O;U]8�2;+-QI1�}�&#"'5326?'!#3>73.'3l#n_;*16<L��Pb]�	
�]��Q�)afR
7?4���1=;M��<@�.�#/:'##"&54?54#"'>323>73#"&'53267326=�%Q?L[�bp%M',^1`c
�a��*?0!"*)JT\5.GUe/+RN�}B]a�830h�u":#K	,*T2;+-QI1����;�&JT-��!���"&�W�o
k�53533#>?3	##
TZ^^>�i��&j�IZ&OUUO�"D"��mU@��&	
�3>?3#'##53533#�	�g��j�=WLLW��k4
���5�]AZZAak�%7'#3>?37#'ceIZZ>�i��gc)f�jrb|Q�@����"D"�ɎR2TњQU
�?'#33>?37#'�EC=WW	�g�Ih'jzjQEi6[5���s4
��`Q1R�m5
k�%7'##53533#>?37#'ceIZTTZ^^>�i��gc)f�jrb|Q�@��&OUUO�"D"�ɎR2TњQ	
�#?'##53533#3>?37#'�EC=WLLW��	�g�Ih'jzjQEi6[5�]AZZA�4
��`Q1R�m5aN�	%!!37:�lYZYNN�#P�#U�7#3�XXXX�!�#�!���
3#53533#!aKKZmm8+MRRM�%P��3##53533#�XFFXEE^@ZZ@��	�#53>323##".'"!.267!>L�id�O::N�gk�KJpr	�qpsq�-sJFb�QP�cFg�TU�f<�tt����{{���t" =3>323##".'7"!.267!H
�jd�@?�mDkB�IJ6LHLL��L�BrzzrBz�;rQ�UMMU�gaTTa��=����&4t35���#&2".54632>32#"'254&#"2654&#"*Ho>�x7U7(:A5':n�;�PKLPLON
D}V��#%F8 :$OyDjB##%��p]_mic^o��=���&446��7���"&TT�*�75332+3##5#32654&Q���5}kRddZ�[HfdXuK
nd;g@VKuu��BOED�0"+5333>32#"&'#3##5"32>54&SHNAcyyd>Q��X�RCAX1?G�AgI#0����/4;A``h\^ck6]<\n{�$"#.546;32+##32654&�+'JJT���5}kRZ�[HfdX) 
<Thnd;g@��f��BOED��#)62#"&'#.#"#.5463233>"32654�er6hJ1MX
!"LEL		I
Q)SD/;JH#��S~F&/�%#=K�J'-J_^�m_�
!�!*"&=4#"5>32;32+##32654&,RU=&�*."���5}kRZ�[HfdX^SqPG�t82hnd;g@��f��BOED	�/#+8%.=4#"5>3233>32#"&'#5&32>54#")AJ=&�4@IR;erA�d.Xs0IY(�SDCcHmPF�yPW�J'-��T�G��7^<�_=�T��(7'"#".54>327#'32654&#"pf6
o�HH�pk�Kig-�mO�({�ryzppyysq(@\�on�\[�o��#/5:+S/1�������7�d"*535467##"&546323733##5'26754&#"��Q@ay{b?P
FRRX�SEDWHFG�@D0"0����0#I��@aa�[^fiq__k=�7��(4%>54&#52#''7'"#".54>3232654&#"�ig/-##&<F59�W�$qkD
o�HH�pk�K��ryzppyysf��#1�9!!)6F5:K$�[*I,EO\�on�\[�o�������7��")64&#'2#5'7467##"&546323737>26754&#"�+)@M&�X�&�Q@ay{b?P
Fb&�jSEDWHFGD%)5F9#4.��ﺾ%�"0����0#I�R`&4�[^fiq__k-=�2##53254&+'���MD�f��x�]YlZ�ffI_��(K�J:L �2#'#532654&+'�bk<2�b�tc8@=:dXPM:K��A2.0+D9�vu�#357>54&#"'>32!533##59�6J&F84O)/*mDdt.R7�UbbUI�6TQ0:=$ <#1eY8a`6���P��'�u6" #5!57>54&#"'>323533#�S���3F.%<<0#R;LXE=g�Tbc��>�4W2%+3:'OD>a;i��I��X�3>73#'#73L9��_�Z886R�^y�N!,M##N-�6��������3'#7333>73�:5R�^]x8�r^�N����h�IF26<�����,#"'5326?.'#3>73>73� y_7)16A�
�^�ZpsZ�xZwnR
6@8�20L��P0^&#i4��5$W46�
��3"'5326?.'##33>733>73�$ 
.5
Z


X]�ZL][XJX�:I�	H@A#&,1)
	)2.����1_>2,��+[a9��[f)�,"&54632.#";#"&'532654&+57�hjdP"6#/<BM��}���=h+1k2b^jtC��]YS^@		65;:<�dffwSP?>IC����+"54632.#";'"&'532654&+57��^S$9'-<CE�Ճ��{8]&,Z.WY_kE�f�P^
=	74:.7�f\]qNE@<F>�
*�35753732+72654&+cYYZ��n�~��`KaeV[`�-H-�bWIWiddsx�?QEA��
�0�!.575373>32#"&'##4&#"326
KX��N@cyyc?PX�FJRDAXJE�I*��iIi-
"0����.  "���ee\\ckk(�73##5#53332#'2654&+�mmZYYZn�~��]dV[_�7A@@AInjcerG=RDB���0�!.##5#5333>32#"&'#4&#"326e�XMMXN@cyyc?P(FJRDAXJE[>WW>S�-
"0����.  "Kiee\\ckka�@�3>73aZ
'�e�{���`1b R,��+�U�
#3673�XX�f�	�� 801I,����(#"'532654&+532654&#"'>32�NGPT�vzO*e+RbfbTUdUL<3T*$/pD_v#FWXGem)QEFA@LB=6:  @%'^��#&4+53254&#"'>32#"&'5326x�ML�J9TM ,f>7Z6BBJQ�|:\)\[U[
�G�<@7A!)TAD\^LmyP/S����'354632+#"&'5326=#%2654&#"�VPHV\T:[U-!2.�,-% ")�4JdN@LR�g^N8C�J,&(27.����&#"&'53265#5354632+72654&#"�KV0
!!.)xxUOMP\S:7,-% ")INYG	28�G/JbKACSG*%&18)4���!"3267#"&54>32#52654&$KKDC 1:)`n9kJJqA���~L�ZKGLH
tgHn=D�i��K��r�5�#!"3267#"&54>32#52>54& HIFA/8'`n9jJq���Wr8O�gXSTKztRxB����HM��z�"�\g"3267#"&54632#52654&�//X$>HRIIVosTS4;>5d	-IEJWc_��+k~IO7�c�,"&546323.=33733##7#'#'26=4&#"dxyd>OX8CDCz�CED`
P1UEBYGGG
����.!
3�P��H��H"0I]^dkq_`jU�c��
%33##7#33+DCz�CEDtX;�H����PU�c?"+23733##7#4#"#4#"#33>323>�[Z+CDCz�CEDcmNCWnQ>XG
U0~&]"]h�뜜H��YZV��Yd^��I*)Z.,U�c"23733##7#4#"#33>W`b9CDCz�CEDqxYDXG
\"]h�뜜H��W�d^��I*)U��3.'#7#33>7�A2,	6@B?AKXFS9��S¿
^G��^14U�c�!3323733##7#'#2654&+U�Vh$9 h6CDCz�CEDL��~>E4>�QM/?#���H����-.&0�����#.2+##3267#"&5#5?335462654&#"4>KUUX�P*5GOLP 4�K32"!�G9?P�-��aD
K[7*!v{"G`�-$-4$A��*2+532654&''7.546">54&�SY/&.=vp��GO;1�9�=JaP+/66).�UL7P&9D.XfO2<2>�>�'RBGYE.*,8 '7$)1����2#".5467#52654&#"�l�HI�nm�I<=�yynssxq1g�]�nm�]]�n\�/N�p������W�H5��"�!#".5467&'72654&#"�-/�wHo>~y�U<>/)bxQJLPLOK�*gF{�?sNt�[d$;&!F�GhUPf`YRh\�1��2.#"3##33>�%

%Zh��YDg�QekfJ�/�f1?U��#2.#"3##33>L"	
 CV��XFM#SbP�E�	^179���,#".54>7.5467#5!#"2654&'_;T,sFl=;\27+���a+	GM>>,Q2T� FX=m}4bEG\5#7($
JJ<�LTL?L%*J;FP9���,7.546323!53254.">54&�;T,sFl=;\27+��M�a+	FN?=-P2S�!EX=m}4bEG\5"7)$
JJ< �SM?K&*J;GO0 !357'.54632!2654&#"R�O=�sGo@vhb� �RJKRQLL@�M/oOu�9nNjyC~JjZOP\\POZ��#!5�Z���6zPU��#3�XX�	\�;
�%3267#"&54&#"#33>32xM!!5LJOPi`ZEmMuw�]J[M4^Zyj���^26~�U��#4&#"#33>323267#"&5�;?SGXF
\5^cA(GBNHC_c��	H+'_e�PGQC\�1��2.#"#33>�%

%ZhYDg�Qek��f1?U��#2.#"#33>L"	
 CVXFM#SbP��	^177��R�5!#"3267#".54677�Z�I{v,U+(Z7g�KiN|NNM�X�MU�gp�( ���"&5467#5!#"3267-v�:6��q^kVP%D F
�yPoHHkjWeN��(�.z�����HV�&4632#"&4632#"&H$%%$$%%$�&&$  ��%%$  2���5!!52[��~GG�GGQ���7#3�9k��Q���3jk�9��a��	!#!3!3�Z�:ZlZN|��.���Q��(#"&5463233#327#"&";54&�1>??3Xgg$,/QE9#+
3<.47�g6��/1	FV.'E��4632#"&E/'&//&'/a/,,//,,a�7��!###33.533#�R��Sh}T@WQ#h7�q��@L �����U�<P"!#4#"#33>323#�<xYDXG
\3`b7RW�d^��I*)]h������Y�53>32.#"3#3267#"&'?S�iqT$!Q0k�	��	zq/T((U;��
;Lc�T*L�wLr�N�����" =3>32.#"3#3267#".'GDkB)L@���MH,CA.El@�ARg1I	�AX]
N7qY7�:�"&".54>32.#"3267#"&'532=,Go?BqH)L@�ML,C9<
0
:z_c|:I	�ag
�@EI4@U�:E�$"&'532=#4#"#33>323�
04xZCXXY4bb,9�I4FW�e^����(#)*]g��@E
�� )27.546;32+#"%2654&+32654&#EH̆�FB-I*�s�&\DS[v�_JMc� A=0Ob?S&F8ajO�;:;3�K��J<8E6�r�$13632#"&'##327#"&546732654.#"4X-1j9sl<O?NYVD+(6g|�wX?UEL'XI1,��H}O��1!H�&�sdg
F����*�ijid<[3��4��"&'5325#53!!3#/!<rr�����K�IDmMMM�M��IH��###535#5754632.#"3#=xX]]^^\R 5*,+��Q@��@�)h[E
;?#D�1���/".54675.54632373#'#'26=4&#";#"9OwB[YOKoZpNIlKkpsnOPWg)*�j
0]BG[
QESe?+`�6a*AKv}rum>2?BJ�HB+���#2".54675.54>32373#'#'26=4&#";#"�4Z7;C277S+7E)E@W.ZDKS8<AFGDH
 D53I
>,2?'K��M'0Hd]j^*'()B2,+21����)"&54675.54632'2654&'";#"B��[YOK�q�II�r|vuyQSWg)*�1S
naG[
QERf[�nm�]N����=5=AJ�0;��-��!"^J���#"&5475.=3;#"32653#'#:p��6O,[iu*�[IisYIl
g[�
*PC��XKJ�=Av}��6a*A<���%".54675.=3;#"32653#'#�3R11718S?KC8>4XFTAU
#E13FB@lf@8B2,+2d]��M'0����&32675#5!# 57>32.#"%���+D�5vF��<C[�g:k. )\0d��		��
�N���
>U�IKgYp=�_"%,67>323737#"'5326=467##"&'"%.4532654tg5UFMMu{vKOwEO6p\p
8@I%J[��H>QJ
�()G�?��st"Q*QF-	Qqg
aY6F>�7NSWak�573>?3%##^Z>�i���j�IZ>d��"D"��I=@��U@��)�?37>?37#'#5RW
�g����j�,WR��s
,&��1?+���&����"73737##77'#3.=^hɱTZZiեS^�����Ok����>��J��!~"�#h��@L ;f"?33>327##5"%54RG
\3`bMMW��XRGWE�I*)]d?��4��`[4�i�!###5753277.+27_g��Z^^�w�GAHC)[JYf�	�����
=�NN
>	Da�4)��{&U���"'733>32.#"7#5WH
R8#

)H+��XW�	b,@Q-O50?0���� �/7.54>32.#"%#"&'532654.'&'�'(:gC;b(%W/CD6C�@C�u<f"$k9PQIA
�`M79Q,M9/07;>&QD_jV>5#0)0���"+7.54632.#"7#"&'532654&'{$'oZ1U%"J'698G�s#&tb8Q [/C<3I�7+DJF# '*?8+NPP+$++
��!#!##"#.546;!3�Z��Z'+'JJT�nZM��) 
;T��.��&����=���#3"&'5326=467##".54>323732>=4&#"X?x8;|>eghR_|=E}UNeN��9N.h_bd)W�Vds2.CX�`n�P;/`�i��j(BS*8ux�}JuC��G�%!#"&54632533#4&#";G�d4>?B3$ZggZ$-MM3?.58��6�/2&;�)57'5!;��hh*hh4;44��0�uHE#'"#".54>3232654&#"HOR�rp
	Zx;;xZ[v:�DU[\TXX[Ug���J�XW�JJ�Wdxxdhsw
�373##j�IZZ>�i��@�6`"C#�7"�33!53�Z�����OO���<�7&'#"&5463233267&#"�(8B/8EA6*&Z�)!"$1G)"!&<45<���)' ��|�$23327#"./#.#"5>d#*i�`�)(0$f�`z	 �0'�_�@��(*B"I:��b�&*.C	^�J�#2+#2654&+32654&#1�~J@JQ�t�Z�VLWVw�VRV[�[Y@QOMgg����<;;8�G��GC=A��U�.�m��=����
E��:��N#
F4����'7&53537#"&'%326q=K%Z	j@=><{_;]"w��0ZaW(^?X�1'�Q )M��JwE��n.g.��C6'7&53537#'##"'%5326c58Y75.H
\4O.(�4YE&,B+F_��@@-6�-G*'�l��d���"#3#'##732654+7323'.'#)�^XX�t&	3:O;:A?V?�*�6���)*"4B9,7O��&\#&W,0��&I%7#732654+732"&54>32373#7#'2>7>54&#">&	3:O;:A?V�@Q'F`:5B CrF
"\%G:4,'B2,^)*"4B9,7O��]ZK�g<8%S��c,AI6\91/<1Ul;66����3?'73#732654+732/
UzL
�
VzM
��&	3:O;:A?V1@22��1�)*"4B9,7OII#732654+7323�&	3:O;:A?V�rXr^)*"4B9,7O��������)"&5467332673#732654+732opm\Y]EDYWcYdEt�B&	3:O;:A?V
g_2��L28@\Y�)Nr=�)*"4B9,7O7��&I,#732654+732"&5467332>?3#7#I&	3:O;:A?V�=IFYH	!%"OD1WrH3C^)*"4B9,7O��DA)G��+ %0jX��c3"���E(@%.'#3>7>73>32#"&32654&+532654&#"#-12Z�^�&L(
D9S7#(V/qu\MZ^��4_6J@>VYoc4/edP@?d)
J�SI�d�6,M#��GY�DJYdMIUXG^v���HBD>KG<6:85G��Nf+D"&'#&'#33>7>73>3232654+532654&#"}4SC)e�^r%> #F!O3Wh6/ 6!f��!!>"4G� AM=5?U!
Q|0sB��61k�7Al,2?ID19
	 4)C[I=x4
)2ZH%-&&98=�:Y�&"3267#"&'532=#".54>32.�s�{{/T(9<
0-<m�IO�nqT$!Q������@EI4DZ�pl�]*L3�:��7".=32654.'.54>32.#"#"'3267�,E'$k9PQIA[]:gC;b(%W/CDD:?W-�u:2$(
!�IA�>5#0)!`S9Q,M9/$0&5J8_j00C	&�:�"&'532=!5!5!!�
0�`x�����9�I4FD6PD�ʑ@Ea��	+32%!.#3 !�Ű��l�V��
�wua�~l���P���yr��7���#"&546323.=3#'#"!.267!dxyd>OXG
P2@F&DPRF��F
����.!
3�H"0�[ORX�fWXT[���053.54>32.#"3##"&'532654.'&'Z:gC;b(%W/CDA7�b"$�u<f"$k9PQIAOAE.9Q,M9/#0%AD2_jV>5#0)���"-753.54632.#"3##"&'532654./@oZ1U%"J'69;G�Ctb8Q [/C<95�A.DJF#"&A/ NPP+$  (��!#!5!3�Z��2ZMO.{3#5!5!#XX�����J2���73!73#'!24;44���TT��TT��#53533533##5#535#???;�;??;���:+GGGG+����C#Ef#/2#3267#"'#"&546326"34&"32654&�BK�62"32#[))YDYUJ)A'PP�'��3..43/0fOB:6.
CCWPPV" B+[)2==<?=<?=V�)33333�sK�J�K�(�(���	!!5!5!5!L��"���/O�O�63��3##".546";?�ZRk}5��^YdfH�6@g;dnMDEOBa*�3.53###33��S���Y���i9��6I���I4f q(*�)57'5!*��TTTT444��P�)33>73>73#.'#.'�bo
sY�
yY�]�
�]io�P0^&#i4��5$W55�6�20L��6g#%_0�PN�n3#NQQn��Ngn3#3#QQ�QQn��n��N/n3#3#3#QQ�QQ�QQn��n��n��(�Gn'3��nP�O(�Gn''3����nP�OBP�O(Gn'''3������nP�OBP�OBP�OC���7"&54>32'2654&#"�H['I32I('I3*-/(+,.�VD)E*(E++F)F/%$/0#%/9V�o7"&5467%'2654&#"�I[%52.\ K%5C'I3*-/(*-.VWC*?)�:I7N9+F)F/%$/0#%/�c�D�y32>54.'7#"&'�2&Yb(Q@yb7hD�_N��7>��IH�f;�c�Qy32>54.5467#"&'�my2"+"�rXg"+"L�p"	�7X39c\]3XeK?:(T_l@+^R3����4632#"&732654&#"�:./::..;1 G,77,,89*�/����(2'654&/7>7654#".546�&*&4;
'Z$
!#
#�%1#+	H	&�(����".'#"&54632>54&#"'632&(
 !&--<'�2 *// 21�,����/.'#"&54632654&'#'2654&#"'>32C'-
)+.7�#

+	*$!
 /�����$."&5467.547>54'7'3254&'w#0#%"	2'&0#")I"!
�#$$",
	
&$%&	
	
 * #	#F	���$.'#".5467323&454632*
		4!
1?
$�-//*4(>F�����7.'#"&547&54632.#">32#"323&54632/
58#7*"	7
#�.4#&  +	)#!�����#".'732654&#".546324)+@)
1.3%	/."%*5/72,l`bq#!2	*+ J�����"&546?3267|(@!e'n/=�'*+%t }-
�����)>54&/.54632'2654&#"?	}0''1"
=~�
c'..$%.���� �:2675#53##5#"'#"&'732654&'#'>54&#"'>32v

%�10
	/#/C"*0"
# !')+"UO,,��
"!>F28**
&$������"".'732654'#'654'#5!#z 4.*1'(I�,
%0�>84@,)
,,*'$$���.�0#632'>54#"#5#"&54632&#"32675#5!.�",)%1
!#78+	9
���R'&0
$&xK,,'.,+�,������!##5##".546;5#��!10U
���,��
 
H����#5#"&'.=#5!#32675*0#!
'(�
!��W	


"U,,Eo�����.'&54632>54'#53#E-G	
w�2/!/>�$C	
,,%.
1-���C.75#"&54632&#"32675##5#53.546323#3.#"E##67,	
�0-+92Cl'01���$H- �H
,,'.,���,	
&=0,�B !����##"#"&'732654&'.547>;-;#+$%9 )' %!1�	*'%7'
$��6a�9������:0�9'����*=<��:��9'����'*='����:�-�9=4632#"&%#"&'732672&'#"&54632>54&#"'>�kMHl"ED6:8�Qi<1'J:RD ,!$)5=0 7#$G%dSY^FFKC��MO7U M +h9
;+-,A
:���9M4632#"&%#"&'73267"&54632>54&''2>54&#"'>32.'�kMHl"ED6:8�%.", .(+*!-<;-# ?!M5GR.(%32.75%dSY^FFKC�<	"$@
A
<18 6!'>-+#9:�S�9C4632#"&%#"&'73267#"#"&'732654.'.547>;�kMHl"ED6:8`$)$+2QAAe5<#F1!)-(*-+9:W%dSY^FFKC��	-/"7@EQ 4=%*'49��B%2>54&#".54632#"&5467.54632.#"632&"#"6M~K.)"5:!QJHD.K-2]�Rab*/ZI4
#X,"#^>F?lE/>$ 3?S47H'M;:nX4S@-A+<@EA 	FF(&:a�-72>54&#".54632#"&54>32&"#"�MK/)!JIFG[2]�R`bG<
_>F?lE/>$""0"3GXW:nX4RA&A(FF(&�[x��373#�LWWP�0�����X'on5!X'GGh��)#".'.'732654&#".54632�ufDqm>):+,\@7XW5P=),12
XOBA9J$-_f.YB-/E
?E:N(F8)<E	H1+A1N����:HT"&'73267>=##".5463!5!5!.54632&#"3#"&'73267'"&54632Q�69,f>.7�6&"�I�ZH 4"-(0kg%`VC]@715-D[HEE:007GCb6*<�G3VW	E/@0G��LT!�RXB@E>^Lh���H8�&��3�g���,.#"#".'732632654&/.=7�+60B($
  0%
 7.F$)1g-25085 
35,31��[
7>32#.#"zGSy5YB4`�MCGI)/)/��Y"$+2"&'#53>323733#3267#"&'#"!.265!`w46	v\>OFEE &2P2?E&ENUE��G
��>ux.!E�>�@	$."0�XLOU�f][X`.��O#)4;"&54?54#"'>32>32.#"!#"&''26=265!�M_�an%L'+^1|(bD5R*.N2QXrqhBj#c;DRNR[5�D@��P
RN�%w@],1Hc[4o�><==FQI12;+-^FQS:����&'7.=46?33267'7654/�$E-	�`�",' �dF


%E<� r�	�$
�yJm��3#!'73454>32!!!3267#"&'#"!.2:lLdr����cV@1O.*R5g�9$k 

=�

VFzo7@@Hg`"m/>���".574632>32!3267#".'.#"327#"&"!.SD0
~_Ec5��YP3O*)P7KrC*%0##$	DC�?I>�=Gly<mI5[_M<tV  #
BDTQHDU
<��###5354632.#"3L�Xcc\R 5*,+��h�Gh[E
;? 5�
#+9E%.''.546326=467##"&54>32373"32>=4&267.#")
<
M;W^WN7Y
V8eq1aHm9
K�KJJH9CAk3?J/2,4TA+
:799!$%!&,*�{MxDSIAcXZb-O4Ua�y#����2!#.#"#"&54632332654&'&5432#"&'�X
!
3H.
X

2?3
�#D9<9
��"
B88?z�7.#"#>325.#"#>325332673#"'32673#"'#�
3<-
3<-X

3;,

3;,X$>C
p	%>D
��$@B
o	 #@B�j�3#5.546753'54&'>�X6DE5X6CD5�%$�$$�
U=<T��
V:<U
�#7
�7##6
�7U���#/9"&546754&#"#4#"#33>323>32&''26="�1@IP56ICXkKAXET0|'X4Y[2;M8#
753={FBXY��Z_c��H))Y,-]g�
6OT=&.!U��g#!+"&546754&#"#33>32&''26="�1@IP9=XFXF
\<Ya2<L8"
753=xHCb`��H*(_e�
6OT=&.!U�V#%0&'#"&546324&#"#33>32%3267&#"B08EB6)':<XFXF
[<Ya(��*!#�)"!&<45<tFAb`��H*(_e�{#2Ga!)),����)#.'5>=4&'732>54&'.K&2N)1K,	�-,+&
�+"C(+OR.%�)�� :%.J$,���"+67#.''7&'5>=4&'77.'.4&'32>K	<%H&2N)/#,%%	�-_W
t)*�	\n"C(+OR.C9%�)�$�,� :-��/ (7.#"5>327#"''7.'%4'326z�.(F E.Q7'3* �wK7'3)��#5PK�0-N(4%8$c>��&5%85aF1��p6~,!-4%"&'#"&54>32>32.#"!%2654&#"265!�=_d?r�?mFBf hD5N((M5MSdt�OIHNOHF�A<��F9568��Z|A8787MZ`5m�IghdfiedgSEJNC���+)19@"&=!.#"5>32>327#"''7&'&#"2654'267!etdSM4N()M5DifBO:!4'�rD3'4+^��$;NH�OF� ��<F��<�m5`ZM7878(/#8#b>�� 8#>59[29f��gdJ/��NJESC���$!(/6"&=!.#"5>32>32#"&'"!.267!267!etdSM4N()M5DifBFm?�r?d^>GI+HFIF��I��<F��<�m5`ZM7878A|Z��8659�VTTV�gWVWVNJES5��v#%1".54632&#"3267&54632#"'72654&#"-Lo=�u,&IPNR$=!�xMm;�wgA@�PKLPLOK
G}R��Gjc^nBZ��D}U��??Jp]_mic^o5��v9.7@".54632&#"3267&546327#"''7&'&#"2654&'-Lo=�u,&IPNR$=!�x5,7-0�w8.7@N�$LO�PK�
G}R��Gjc^nBZ��'($uM��'*?/MVi��p]2N��P7#546753#54&#"�XbXXZcXFIIGvvz_f
��	f`zvHDDW�]'3267#"&=4&+#32#32654&�B'GC?HQX�bi6//2�cd9>>VPGQC�MJ�NM7CPG��2.0+U3#33>73>HXF>1�bI��^,4UB#2&#"&#"#33>32>"
-7!:!:#XFI,&A#S
,O4��^53/!���# *2.#".'#"&546733>"3265�"	
 CV2:E1@IOFM�8"#SbPM
6	OT753=C^17�x!&.���#,62&#"&#".'#"&546733>32>"3265F"
-7!:!:#2:E1@IOFI,&@�t8"#S
,O4M
6	OT753=C^53/ �x!&.c#3267##"&'VR!W.X"+T)#

���

��_#&"&5#"&'5326763274&#"326�Sc"+T)VR!W.)91J))L)4))45('6
hX

F

��++J-0L,�)79)(97��f�7#"&'5325432.#"�CI&B�&
B�BTGPڔGPP��#'##"&53326=F
[=YaX9=WGG��H*(`d_��HCb`E��d353!533##'##"&=#3267!LXXPPF
[=YaL�9=NI����((B�H*(`d#HCONP��F#.2#"&546"&53326=332653#'##"'#��ZZX47ICXkKAXFT0|'X#  ��]g_��FBXYq�_c��H(*X+-T��J#".2#4&#"#54#"#33>323>"&54632�ZZX47ICXkKAXFS0|'W�#]g��QFBXYq�_c��H))X,,����Q#732653#'##"&=4&#"5632�9=WGXF\<Ya! !,>G�HCb`��H*(`d�*&B
JI���J����x !-"&/#'.#"5>323>3274&#"326�<FH�^�]
 1-N�\�Q4";HF%#$%�FP�����"D1.�$���H6:J�$$$#��) .5332>?'.#"5>3233267#"&/#8}a
1,O�\�]&!
':;AY&.%�O	#'�"D0/�'���+8D
JF��2<��i""&/#373>3274&#"326�-:j�c��e��c�H4%7CA""""
)�����fC36Ez!"#"��373#'#Թd��c��e���c������<��j"373>32#"&/	4&#"326�U�d��c�I4%7CA:-;g��J""""�����fC36E)��<`!"#"�y�5332>7373#'#�8
׼e��c��e��+-"�O%#Y
�������.=P�"#"&'5326=467##"&53326=3t{:b*,g9JF7zYaX9=WGXoyROG	*U`d_��HCb`V����
#"&'33267#.#"#>32�QHJK62.'9779'.26KJHQ�<JI=)'��')>HJ7�]� %"'5326=4#"#33632
M8/99#P:?-�+�Q;:��}"49=��)3���.#.#"#"&546325332654&'&5432#"'�9		"/9!)!		)"$"��

'""%��.#"#>325332673#"'#^
!%9 %
9�#)��#*��g326=3#'##"&=4#"5632�M8.9-	;':?+	
).�T;:���+:<0',,Up332+!#!254&+�X�h\fn��Xm�x=:��QIOW�3�,_2'�S��"#2!3267#"&'##33>"!.&Ec5��YP3O*)P7n��XX�~_?I>"<mI5[_M�}��m{HQHDU.��(#.52>32!3267#"&'#"&'73254&#"5>"!.�Bi b>Ec5��YP3O*)P7Fn!!lC(M@�ML+DA�?I>#2414<mI5[_M4351I	�ag
NIQHDUO���#)632#"&'#"&53326532654&#">bMn:�xElbNgcX:FCQ[KQPKLPLO)3E}T�?84Cad^��IEYa ��^rs]^qk7��Y"*23>32.#"#'##"&546"326=4&?P2& FO>dyxrHGGGYBE"/#/#@�^E!.����Ij`_qkd^]+8#!"#53.54>323#5>54&2OWA:܆5?9mOOl9?5��;AW�dS\wAA"y[Cj??jC[y"AAw\Sd7�:��'47"&546323.=3!!3267#"&=!'#'26=4&#"!dxyd>OX���#0
<9��
P1UEBYGGG9��
����.!
3��B�n�4IE@AH"0I]^dkq_`j��9��5I3".5#5?3!>32.#"+3267#".=72654.'.5467#3�*G,LM#4*1U%"J'69<43H&tb<$(
!,E'�C<954J(	�/%HA.*#r{F#(9+NF00C	IA H $  (8, ��1/���,32673#"&'#'##"&'732>=&#"#>3253H	32)H
S8"
 
*G+21*X3;E�b,@Q-Q6!;E��`!3>?3#'.'##'.'##3�
	>A`;0
>><
1;aC�./����64��05�A<���353#5#<d<<d>H�HP���##53�d<<>BH�H����&KKX��
�&KNX���&KQX��e�&K'KXN���]�&K'KXQ�U����'".5#575.#"#4>323#32671*G,LM?'<6X5[:Mj��/%*
4
HA8*#`=6��ABS'91{D��1/C	3��2�R"&'532654.'.54632&54>323#3267#".5#575.#".#"�8Q [/C<954J(oZ&$.L.GX��/%*
4*G,LM
.!+.
"J'69<24I&t
P+$  (8,DJ 6G$90{D��1/C	HA8*#`4(.F#)9+NP�|K
>;#"�|"t�Vj�)KCR'A:A��K�
2#.+5W�t"F)�k'RCA:A�_�
.#"#>322g9<93]H8f2~!D<`��
32673#"&'2g9<93]G9f2�!C=���$!5$��AA���!5��AA���Y!!����NA�w���
3;#".�wF)�jV�tB@;A'S������
+53267�"t�Wk�)BBS'A;@���������� ���
32673#"&'2g9<93]H8f2!C=���$�C!5$�׽AA���C!5�׽AA���Y�C!!����N�A�f��	#"543!</9^�34A���-	5!632#�9)/"�A&2)�E��+;JV^bfosw}����53#%53#5!53353353#53#53#"&5463272+"'5326=3%32654&#"2654+#53#5332654&##53#53533!5353!53!53353)�^֔5�d�;�:��55��66G>BB>>BB>}575.e	
=6�� "##" G+�T66j55�B$�55��6666^x_5������;�Q�6^^6�^666666�㄄��BQQBCPPL ) "',��2��1.�-33--33?���6K�򄄄���_55_�555555)�d��+	467>54&#">32332654&#"��5�6�!++\P*X"(!>!%!gt())(��6�6�d#=1CJW#7'�##%b�Bv�#"&'532>54&#"#33>32�%&/LZHQ!ZG?K%q�l�L1+�[P5`?�N�\.tz� d`��a�B��[��o�%"&=3326=4&#"#33>32b��ZYY\RLZHQ!ZG?K%q�:w
�w

W`gQ�[P5`?Jb\.tz�JwE.Zb�	#/>73#"&'332673"&546323"&54632�W410FI70*#6	9Q��L,
5pF7!7Fw.Zb�	#/#.'5#"&'332672#"&54632#"&546�14QDFI70*#6	���,5
b7FF7!�4Z\�	
%#5>73!52#"&54632#"&546*41W2��7��5,�GGf4Z\�	
%.'535!"&546323"&54632�4W�(��A5
,eGG���a���&1|���a���&3|���$~�&&����a�$��&*����(�$*�&.�/��Z�$��&:��a��33aZ�6��a��_�&���Z#�&�x2�����*�&���������8�&���������8�&����������&�������&�l�n���
"&>73#"&546323"&546323V9i2:;(��Z�G"
21}���6��\��&��4���Z�P��&�����
��&�E���G��#'>54&#"56323�.#6$+%
%<B�Z&)5U4,�R�6����*�&��������#W&�������<�$��&����<�$��&������G�&���������HF�&��������B�"&'532>53�#55-ZfL
2-��gb������&�D���a��N�&1��a��:�&3���#���&Q|��U�"&S|�.�$�!.9"&5467#"&546?54&#"'>32#'#3267326=-52I`~�[:5*L!#`4b^@+--dM7+DZ�2,=MRPW C4BV^��L*F)-8�83-*KN0��7�$"&J��O�$&"&5467"#"&5332653#'#3267D52"abYwYEXH
$//-�2,<]f_���d^��G!$@!-8J�<33JX<���E&
��k�����&
��P���� &
��O�����&
��O��B��&
�������&
��U��J��<&#�����
�&
��X���$�<&
�����0�&
��Q��<"&'532653w,)).)WV		I34��p_V�����&#
��>13#'#.'3�c�`9�<�8�>�£��0.���&%
����&%�F$��"&%�;$���&%
����&%
�����&%�M$���$>&%�8��U&%�v$���&%&
��
����&%�+$���<%##!#3#3!#3[�Ea�������'r���<G�F�G������&0
�]J�<2+2654+254&+�sh<18As_ŸA8�Yj}@Dc<JG4@	
=?RS<�-,V���e,2�.���D"3267#".54>32.FZb]^%E!?YYv;C}VXKB�wegu
MJ�XV�K$G��.���&3
�-��.���"&3�g$��.��D&3|���.���"&3�i$��.����&3
��J<+324&+32������[fbSH�%��<��hi�V<35#5332#5254&+3#J>>������fbShh�A����I�hi�A���J"&9�P$��<:J�<!#3#3!JH����<G�F�G��J�&=
����J�&=�-$��H�"&=� $��J�"&=�"$��J��&=
����J�&=��$��D�&=
����J��&=�4$��J�$�<&=�{J�<	!#3##JG���W<G�G�/��C%#"&54>32&#"3275#53+g9��D�aeLFNejhd=-����V�L#G!zbmp�G��/��&H�}$��/��"&H�r$/�#C'%#"&54>32&#"3275#53#5>73+g9��D�aeLFNejhd=-��!0W��V�L#G!zbmp�G��7859��/���&H
��J<#!#3!5W��WW<����<��S<##!##5353!5335!SFW��WFFWWF�����[��?XXXX�__��J"&M�]$%�<357'53%AA�AA2�44�I2��%*&P
������-&P��$����="&P��$�� �&P
��k��%�&P�9$�����&P
��q��%�b�<&P[#����&�&P��$��%�$�<&P�����J&P��$���b�<"'532653,.)WV�
D34-��_V�����b#"&[��$J�<3>?3##JX
�d��e�@X<��"���3�J�#�<3>?3###5>73JX
�d��e�@X!0W<��"���3�F7859J�<!!����<�
I<��J�&_
��qJ�<!!#5>73����Y0
W<�
I<
6957J�#�<!!#5>73�����!0W<�
I<�~7859��J�<&_�����<
%!5'737���3%XWv&�II�";7�M:c�J�<#4>7####33�R�L�Oy��<��g1*
� �
+2��<�0�J$<###33.5$k��Ok!<���Q ��<�2N#H��J$&f
�-��J$"&f�p$J�#$<###33.5#5>73$k��Ok!_!0W<���Q ��<�2N#H�~7859J�b$<%#"'53267##33.53$WM-(*��Oi#O_V
D),�Q ��<�HO#1��J$&f�Y$0��HE#".54>3232654&#"H:v[Zx;;xZ[v:�DU[\TXX[UX�JJ�XW�JJ�Wdxxdhsw��0��H&l
�1��0��H&l�x$��0��H"&l�n$��0��H�&l
���0��H&l
���0��H"&l��$��0��H�&l��$0��HT!*#"''7.54>327&#"4&'326H:v[U:"0#(';xZ,I&/'&%�D�)<[Wb�%=]UX�J#1"1'sIW�J48&qG.LUxc/H��y��0��H&t
�3��0��H&l�]$0���C%2!#3#3!#".54>"3267.7.5�����-Vu;;uZXVUX%
%CG�G�GJ�XW�IIufhu�J�<
2+#2654&+�kjplGW�AK>AK<XTUb�<��.=55�J�<+#3322654&+�plGWWNkj�AK>AK"Ubk<nX�.=55�0�xHE#'#".54>3232654&#"HMU�vlZx;;xZ[v:�FT[]SWX[Ud���J�XW�JJ�WdyxehsxJ�<2#'##2654&+��6;�c�gW�;BDAG<�7P���<��047-���J�&{
����J�"&{�2$J�#�<!2#'##2654&+#5>73��6;�c�gW�;BDAG�!0W<�7P���<��047-��7859)���D'%#"&'532654&'.54>32.#"�nb7P"M\5BCAHN4Y8/S#$G 1;;)-F'�J\P$-*++FE2E$E*'$(;��)���&
����)���"&�$��)��D&|p��)���"&� $)�#�D'3%#"&'532654&'.54>32.#"#5>73�nb7P"M\5BCAHN4Y8/S#$G 1;;)-F'�!0W�J\P$-*++FE2E$E*'$(;��7859E��,D$#"'532654&+57.#"#4632}^QmbT6B%7F?Yn
6*>CXrfWb=TGJ[L0-248~ $MJ��hhsKF�<###5��W�<K��K�<#3##5#535#5��ssWss�<K�C��C�K���"&��$����<&�|q�#�<###5#5>73��W�!0W<K��K�~7859E��<%#"&5332653xpmuXIFDGX�gushi��IMMGg��E��&�
� ��E��&��g$��E��"&��\$��E���&�
���E��&�
�
��E��"&���$��E���&��n$E�$<$3267#"&5467#"&5332653p-52.!(muXIFDGXF-,t-82,$Cshi��IMMGg��p:;E��E��U&���$��E��&��L$�<33>73��`|
|a�<��#28v���<.'#3>73>73#�
b_�VV	
[U]	
]U�_k ;9��<��#PC(Y��"H,*
n�����&�
�x���"&���$����&�
�\���&�
�b�<7#373#��b��`��a��d��'�����<#53�Y�`��<����b�����&�
�����"&��$����&�
�����&�
���<	35!5!!/�����78�I9�FI���&�
�����"&��!$���&���$2J��!!2�6�Z��a������&�l�n�����B���a���6��&�*#".5467.54>732654&h�O?2cj�qGp?dY!8!O���)M1QIMRO� 0w^r|5hKZv$1#4B(
��
,O@HVWMJV��a�����a������f��&�B�>����&�l�n�?z�3?;��T��"&'532653X"
#(:B	.)>��>;��"��#����Ih#�2��/�#���'�S�#�
���X#����0�S�����(������� �]����%��������"�T�#��6��#
".54632'254#"$Pj4{vPi5yw���J
G~S~�F|S�J���dj6#!#467'736Y	 c+�J>'K
I;�,�#)57>54&#"'>32!��6�4?;>)T).3oA\g#C1�?G�%1/ ,4 "=,%UI-D<"e�S�#(#"&'532654&+532>54&#"'632ƋSN�v?Y'$^4SYg[=>0O0H53I+(V~\uw� 
RJdoOJD>:J9048<E[�X(#
%##5!533'467#3(mV��IZm�����:�5�,M)
1 ��;�S2#"&'532654&#"'!!6k��}7_#/]/Q_\RD!(j��?ghqrPHLGG		UN�8���'462.#"3>32#".2654&#&8��,.� Y4dnxlQm6�CKGB(H,%D/��I��./thm�P��URFO&=#,U6�]�!5!s����nM8�}1��
�(42#"&54>7.54>">54&32654&'^x%>%,H+ks|)D'4I8`<7G#<$4GF�JMIMPVBE�XS+@15F1Zie[1H4UB7K(G52%2#>625�(4EE73E!I/�T#(%#"&'53267##"&54>32'"32>54.��03t�VAam7gFq��DJGC(F-"C���I��2.qgHk<�RVLHM!<(-R37���
#"&54>3232654&#"0hVys/hUxv�~CQPEEPQCfs�Xít�W���������#�467'73#�L.�IV�+4>;��6&��357>54&#"'>32!&�6J&F84O)/*mDdt.R7�iI�6TQ0;=$ ;#1eY8b_6�P-���*#"&'532654&+532654&#"'>32�PDVT:y_8`,-h0`Ui_EFX[F<:R(,&qHpm#HU
XG>a6RKBC;KJ=49"<,d(�
!5!533#467#!k��P[hhU
 ��K�#O��4M2��?���2#"&'532654&#"'!!>n��~7a!$g/OaV]H,f��:�ndoSKOFK
QP�7��
�,4>32.#"3>32#".2654&#"7G�e3-E\5R@]r{hDnA�?NEE/F'"D1M�yHK.Ph;#1qhp�D��QUDP'< +U7��3!5!d%���zPD�z:���(5"&54>7.54>32>54&#"2654&/)s|)D'4I8`=^x%>%,H+j4GF:7G#<!IMRDBEJ
e[1H4UB7K(XS+@15F1Zi�>62552%2#��E74EI74E2���,#"&'532>7##"&54>32'"32>54.G�e5'1F[6SA\q9fEDn@�>OCF0F'"D�M�yHK
.Oi:"1qgKl:E��RTDO&< +T81���
#"&54>32&#"4'3260hVys/hUxv�~"\QC)��?3PEfs�Xít�W��,$e��7+��::�����J���`��%��}�`��3�v�`����A�w�`��
U���`����@���`����L���`��C���`����E���`����I���`��J���~��%��}�~��3�v�~��A�w�~��
U���~��@���~��L���~��C���~��E���~��I���~���B
74673#.<:N;99:M;;�e�FJ�`^�LD����B
7#>54&'3�<;L:77;M>9�d�CL�^`�JI��>26=467"&=4&',2I^+1',*)1+^I5)�$%z>=A$s.21/v#@:Bv'$� >%#5>=4675.=4&'523 )4K],0*))*1+\L2+�$'vB:@#v/1/1s#A>>z&#<��B3#3#<�kk�B>��=��B#53#53�k��k>�==5���<3#4632#"&9aC<�m}6�u��#"&54632#3�aC����
��ZD'7467>54&#"'>32#4632#"&t+#!	4):E)L.PZ21!D�,=$!&'#=JC4E!*+}�ld�'#"&54632327#"&5467>=3,#!	4):E(M.O[21!D��,<%!&'#=JC5D!*+��5��f<'���*��'57�ff;��a��!��*��?'7hh;��K��"�
�]���#2.#"3##"&'53265#57546� 4)+)��WP# *(iiX�D.>ED�*aOI,;�)AhN�R�5!!5!		#!'!�����6��=��K���9�U�N�77���?���w�:>N��!#533�����BnB�-�PN��	!'#5353�����BĪB���PN��	!5#533�����B��B��K�PN��	!#5353�����BbB��P1�373��?�C�� �P��373#��=��BB�� �P���3733��?�sB���n�P��	3753#��>��BB���?�P���	3773#5��>��BB���z��P���	3753#��>��BB���0�P@"1�3'753��,�CĻ1���P&��!'773���-��BU��/���P"��!'73���,�nBƸ2���P(��	!#'7353���0��Bɳ/���P&��	!5'73���(�kBsK�4����P&��!73���.:B^.��2�P1�3573��<�Cw!�x��P��!73���<��B�x �x��P��!'73���>�hB���iS�P��	!753���>��B���},W�P��	!5#733���;��B���7�P��	!773���<��B$��I�1�P1�373��8�C$i#��
�P��!73���4��B/��i&��
�P#��!73���:1B�!��&�P��	!7753���4��BƤi%���P��	!5'73���:�yB��]"��y�P'��	!#733���8��BFG#��(�P1�3'3#S?�CC��P���3'3##V?��Bs��Pn��3'3#K=�BB��� �P���	3'53#'X>ԠBB�����P�z��	!5'3���>�Br���w��P��	3'3#'X>ԠBB�����P�N��3533#N��BB�Bn�P�-N��	35353#N��BB�Bf�P��vN��	35373#5N��BB�B��P��N��	35353#N��BB�Bq��P��1�3'53#N<�CCRF�P���3'73#U>נBBh���PSi��3'3#N<ܠBB� �x�P���	3'353##N;զBBw��P���	3'3#5P>�BB�����Pa-��	3'3#'N<٣BB��$�P1�"1�3'73#5N,�CC1��P�"��3'73#N,éBBn2��P��&��!''73���-ȠB��/��U�P&��	3'753#N(ȠBBk4�Ks�P��(��	!5#'733���0��B��/��P&��!'3���.hB2��.^�P1�3'3#N8�CC#i$�P
#��3'3#]:kBB!��P&��3'3#N4ҢBB�&i��/�P
��	3'753#P:˭BBy"]���P�y��	3'3#5'N4ҢBB�%i��P��'��	3'33##_8��BB�#e(�PF%1�3'73�.�CS�3��P'��!#'73���/��n�0��P.��!'73���'ɗB7q2��*�P%��	!''753���-ɠB���2����P%��	!5'73���)ɠBr�x3��s��P%��	!'73���*ɠB9�3����P1�373��>�Cv�G�P��373#��=��BBu�C�P���3733��>�mBv��n�P��	3753#��=��BBu�9�?�P���	3773#5��>��BBv��z��P���	3753#��>��BBv�!0�P@N��!#5373�}æ�BTnB��PN��!#533����vB�B���PN��	!5#533�����B�OB����PN��	!'#533�����B-�B�#�P1�3573��:�C������P��!73���9��B�|�#����P��!'73���:�mB���xcS�P��	!753���9��B���"��@X�P��	!5#733���:��B�����P��	!773���:��B2������P%1�3'73��.�C+�1�&�P'��!'73���/��B/���0�$�P%��!'73���-�jB2�1�� �P%��	!'7753���/��B͠�/����P%��!573���.;B�i1����P"��	!#'733�Ȥ0��BF�-�(�P"1�3'3�<�C���P#��!#'3�t�;��n�9�P"��!'3���<̠B�� �P"��	!''53���<ɣB���p�P"��	!5'3���<̠BM����[��P"��	!''3���<̠B*���P'1�3'73��-�C�3�S�P%��3'73#��-}�BB�2s9�P�'��3'733��-��B�3�n�P%��	3'753#��-��BB�2y�^�P�%��	3'773#5��-��BB�2����P�%��	3'73#��-��BB�2�8�P1�3'53�:�C���N�P?��!'73�m�:��BSc��T��P��!'3���9ҠB���#��U��P?��	!#'353�r�:��B�c��P��	!5'3���9ҠBXo��#�����P��	!''3���9ҠB%��#���PN��!#533�kե�B��B�PN��!'#533�����B�B�N�PN��	!#5353�uˣ�B��B0��PN��	!#5373�����BB�B��P%1�3'73�.�CB�1��PG��!'73�j�,��B ɰ0�2�PG��!'73��l.��By1���1�PG��!'53���,GB��0ip�PG��	!5''73��},��B���0����PG��	!#'733���,��BF�0�(�P31�3'3�6�C2�%6�P%��!#'3���6��n��$6�P%��!'3���6җB�$6�*�P%��	!''53���6ɠB���$6���P%��	!5'3���6ɠBr��$6�s��P%��	!'3���6ɠB#�$6���P1�373��7�Cd%��0�P��373#��7��BBd%��P���3733��7�{Bd%��n�P��	3753#��6��BBd%��r�P�����	773#5��7��BBe%����P���	373#��6��BBd%���P%1�3'753�.�Cٜ2�x�P%��!'3���&iBY��26�P%��!'73��p2��BЊ-�\�P"��	!#'7353���0��B�-ň�P%��	!5'73���*ɠB�9�3�����P%��	!''73���-ɠB9��2���P-1�35'73�-�C��2���P*��!'73���.��B���.|��P*��!73���.6BX.��T�P*��	!'753���.��B���.�5v�P*��	!5#'733���0��B��-��P+��	!'773���-��B/��2��&�PN��!#533�qϧ�B �B(�PN��!#533�����BFB� �PN��	!#53753�vʯ�B�|B���PN��	!5'#533�����B��B��P)��WC*4"&5467.54632673#'>54&#"267'�YfA=##UIEQA7�'U
-rm?&VA)0)!$)!)C�'4?UI;K!!>(;DA=1F�3L4]#o?"%e0"#$ 0���/,.4����4632#"&74632#"&���Q���"&54632��tu^.'53@;q+.u8877�r�#5>73�29:#"j9947�u!
>73#7>73#�9g686�9g696�P,83P,83~r�#&'#5>7\@#:;487;,+
P&/:=,58~r�#.'53673�-*
h@#;86::67 P&
4<,�p��
#"&'33267�SGIQ86,)7�BKJC-+�Y�7#"&546324&#"326�A24@@42A7""!"�4<<33<<3    nt��#".#"#>323267�>,'$"4>.'$#�BB!#AC""�z��!!�0���E�$�3267#"&54>7Y-52+0""t-82,6, 5������:s��U�����������$�&������"&'53265#53533#&  *KKXKKH�G#1KG��G��KU����"&546;33#'26=#"(<K@I+XKK%;*&#�B47C��HBIH$+���pa7"&'532653	

9/�+t��-3������7��p�#3p99`BU�:;33267#"&=#�,
#1@5�1�#E=J?�a##5#5353�19119�*��*������a7"&546;33#'26=#"'1*/9112'
�' !(B��+<)+
����H8&������P�P�&���
�3#5#53533#�XKKXKK�G��G7pa#p9a��B ?33'3# q�rnC\C��1��o�?"&'7326737>7#A(.
��y%?]47
iB�	5#/�� JC*MA<���p�"&'532653	9.�+t��-3������&&N��
����&&7&O��N���
����&&A&���N���
����'&�&O��'{���Ny��
����'&�&���'{���Ny��
����'&�&O��'B���Ne��
����'&�&���'B���Ne��
����'&-'OS�$&���N���
����'&.'�/�#&���N���a���&-N���
����'-�&O��N{��
����'-�&���N���
��t�'-Y&O��'{���N>��
��t�'-Y&���'{���N>��
��`�'-E&O��'B���N*��
��`�'-E&���'B���N*��
����'-�'OS�$&���Nq��
����'-�'�/�#&���Nr�����&dN���
��q�&dn&O��N;��
��{�&dx&���NE��
��4�'d1&O��'{���N���
��4�'d1&���'{���N���
�� �'d&O��'B���N���
�� �'d&���'B���N���
��g�'dd'OS�$&���N1��
��h�'de'�/�#&���N2����B���
Q�'��O���
[�'������
�'�Y&O��{����
�'�Y&���{����
�'�E&O��B����
�'�E&���B����
G�'��'OS�$���
H�'��'�/�#���
s�'��{���
_�'��B��7��Y�'EQ'>54&#"5>32'53#"&'33267"&546323733267#"&'#'26=4&#"�(
,3+�_j0QHJK62.'9v`zwg8T
F %1S*SECVIG�8#)#0�
�<JI=)'�����.%I�^@	$.$.I_gdjke�7��Y�'EQ'>54&#"5>32573#"&'33267"&546323733267#"&'#'26=4&#"�(
,3+@0j_AQHJK62.'9v`zwg8T
F %1S*SECVIG�8#)#0�
�<IH=)'�����.%I�^@	$.$.I_gdjke�7��Y�'EQ.54632.#"'53#"&'33267"&546323733267#"&'#'26=4&#"�+4+
�_j0	QHJK62.'9v`zwg8T
F %1S*SECVIG�0#)#8�
�<JI=)'�����.%I�^@	$.$.I_gdjke�7��Y�'EQ.54632.#"573#"&'33267"&546323733267#"&'#'26=4&#"�+4+
10j_JQHJK62.'9v`zwg8T
F %1S*SECVIG�0#)#8�
�<JH>*'�����.%I�^@	$.$.I_gdjke���7��Yi&l&�f&OH^{�^��7��Yi&l&�f&Oh^B
^��7��Yi&l&�f&�0^{�^��7��Yi&l&�f&�O^B^����6�&t�����6�&t�����6�&t������6�&t����6�'7'>54&#"5>32'53#"&'33267"&533267#(
,3+�_j0QHJK62.'9OHX* 
&�8#)#0�
�<JI=)'�UK��{1#G��?�'7'>54&#"5>32573#"&'33267"&533267H(
,3+@0j_AQHJK62.'9OHX* 
&�8#)#0�
�<IH=)'�UK��{1#G���6�'7.54632.#"'53#"&'33267"&533267%+4+
�_j0	QHJK62.'9OHX* 
&�0#)#8�
�<JI=)'�UK��{1#G��6�'7.54632.#"573#"&'33267"&533267C+4+
10j_JQHJK62.'9OHX* 
&�0#)#8�
�<JH>*'�UK��{1#G�����6i&t&��&O�^{L^����6i&t&��&O�^Bm^�����6i&t&��&��^{X^����9i&t&��&��^Bw^��O���&��R��O���&��R��O���&��RO���'@'>54&#"5>32'53#"&'33267".5332654&'3�(
,3+�_j0QHJK62.'9xCQ)X53HOX��8#)#0�
�<JI=)'�#AY6/��9M(rxFn<;oJ��O���'@'>54&#"5>32573#"&'33267".5332654&'3�(
,3+@0j_AQHJK62.'9xCQ)X53HOX��8#)#0�
�<IH=)'�#AY6/��9M(rxFn<;oJ��O���'@.54632.#"'53#"&'33267".5332654&'3�+4+
�_j0	QHJK62.'9xCQ)X53HOX��0#)#8�
�<JI=)'�#AY6/��9M(rxFn<;oJ��O���'@.54632.#"573#"&'33267".5332654&'3�+4+
10j_JQHJK62.'9xCQ)X53HOX��0#)#8�
�<JH>*'�#AY6/��9M(rxFn<;oJ����O��i&�&�q&OS^{�^��O��i&�&�q&Os^B^��O��i&�&�q&�;^{^��O��i&�&�q&�Z^B^A��6�$1".54>32">54.4&'326;;]@"/O_09Z5!4u<p>=4"as;!3v1+*rL%F5SN
"S�p|�V!%K;'_+*�Do@�=ye	*8<(/�18K 	hm)a7��"*5.54>74632>54&#":JuD7';-0/N.UI>X0K{H3R0<0"��:xb6hV2zFIW(4[TAoEk�A�/3eP^O,*��>%��J�<2J}<3!#J3�<G�>353%!.'�c�l.w	3��6IC0.��J�<=���<���J<M0��HE".54>32'2654&#"'53=Zx;;xZ[v::v\\TXX[UU�J�XW�JJ�WX�JKxdhswddx�NN��%�<P��J�<]�>13#.'�c�`�
�>���0.�u��J�<e��J$<f-�<5!5!5!Bc������GG�FF��GG��0��HElJ<3!#!J�W��<���
��J�<x���<
��<357'5!#*'26;����?��&G(�;��<H��I���<����<�0�<%!5.54>753'>54&'5Of9/rdWer.:fMWaKR�[OK_H*BM%9c@77>d:'MB(H�7SCFVWEDR���<�Ep<!5.=3332>=3/m}W%B,W,B%Wuu�vw��?J]��J?��wv�0TD%353.54>323#5>54.#"0w.E?yUXx>C/w�-6&N><N%6,I!pYO{GGzOZp!ID)FM2:Z44Z:2LG)D��%�<P�� �&P
��k�� �&P
��k���<�����&�
������&�
����0��HEl��0TD
���>%��J�<=��J<MJ�@�<"&'53267#3>?3=c#T3EY�@XX
�d��(�	=3B3�<��"������>%��>%��>%��>%��>%��>%��>%��>%��>%��>%��>%��>%��>%���>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<����>&%<���J�<=��J�<=��J�<=��J�<=��J�<=��J�<=��J�<=��J�<=��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J<M��J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���J�<&M<���%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P��%�<P�� �&P
��k�� �&P
��k�� �&P
��k��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��0��HEl��J�<x��J�<x���<����<����<����<����<����<����<����<����<����<����<����<����<�����&�
������&�
������&�
����0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0TD
���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���0�TD&
�<���>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��>&%P��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��JV<&MPW��0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���0�D&
�P���%,&PBU$�� �&P
��k��e,&PC�s$���,&�B�$����&�
�����,&�C�$��0��H,&lB�$��0T,&
�B$��,&%B�$��J�,&=B�$��J,&MB�$��/&%O�$��/&%�p$��/&%&O7${�$��/&%&�${�$��/&%&O@$B�$��/&%&�$B�$���&%'O�$�*��&%&�x$�+���,&%{b$��,&%B�$��'&%�+H���&%
�����&%
�����>&%<����,&%&{b$<����,&%'B�$<����/&%'O�$<����/&%&�p$<����/&%&O7$'{�$<����/&%&�$'{�$<����/&%&O@$'B�$<����/&%&�$'B�$<�����&%'O�$'�*�<�����&%&�x$'�+�<����'&%&�+H<���J�/&=O�$��J�/&=�W$��G�/&=&O${�$��F�/&=&��${�$��J�/&=&O'$B�$��J�/&=&�$B�$��J�,&={I$��J�,&=B�$��J/&MO�$��J/&M��$��J/&M&OY${�$��J/&M&�5${�$��J/&M&Ob$B$��J/&M&�?$B$��J�&M'O�$�L�J�&M'��$�M�J,&M{�$��J,&MB�$��J'&M�MH��J�<&M<���J�,&M'{�$<���J�,&M'B�$<���J�/&M'O�$<���J�/&M'��$<���J�/&M&OY$'{�$<���J�/&M&�5$'{�$<���J�/&M&Ob$'B$<���J�/&M&�?$'B$<���J��&M'O�$'�L�<���J��&M'��$'�M�<���J�'&M&�MH<���%�/&PO%$��%�/&P��$����"/&P&O�${`$����"/&P&��${`$����,/&P&O�$Bj$����,/&P&��$Bj$����I�&P&O#$��������J�&P&�$�������,&P{�$��%,&PBU$����J'&P��H����3�&P
��l����)�&P
��t����,&Py�$$��e,&PC�s$����I�&P'����l�p$��0��H/&lO�$��0��H/&l��$��0��H/&l&Oi${
$��0��H/&l&�E${
$��0��H/&l&Or$B$��0��H/&l&�O$B$��0��H,&l{�$��0��H,&lB�$��J�/&xO�$��J�/&x�\$���/&�O�$���/&��S$���/&�&O${�$���/&�&��${�$���/&�&O#$B�$���/&�&�$B�$����&�&O~$�
�����&�&�[$�����,&�{E$���,&�B�$���'&��H����&�
������&�
�����,&�y�$���,&�C�$����&�'�
�l�$��0T/&
�O�$��0T/&
���$��0T/&
�&On${$��0T/&
�&�J${$��0T/&
�&Ow$B$��0T/&
�&�T$B$��0T�&
�'O�$�a�0T�&
�'��$�b�0T,&
�{�$��0T,&
�B$��0T'&
��bH��0�TD&
�<���0�T,&
�'{�$<���0�T,&
�'B$<���0�T/&
�'O�$<���0�T/&
�'��$<���0�T/&
�&On$'{$<���0�T/&
�&�J$'{$<���0�T/&
�&Ow$'B$<���0�T/&
�&�T$'B$<���0�T�&
�'O�$'�a�<���0�T�&
�'��$'�b�<���0�T'&
�&�bH<���>&%P��,&%&{b$P��,&%'B�$P��/&%'O�$P��/&%&�p$P��/&%&O7$'{�$P��/&%&�$'{�$P��/&%&O@$'B�$P��/&%&�$'B�$P���&%'O�$'�*�P���&%&�x$'�+�P��'&%&�+HP��JV<&MPW��JV,&M'{�$PW��JV,&M'B�$PW��JV/&M'O�$PW��JV/&M'��$PW��JV/&M&OY$'{�$PW��JV/&M&�5$'{�$PW��JV/&M&Ob$'B$PW��JV/&M&�?$'B$PW��JV�&M'O�$'�L�PW��JV�&M'��$'�M�PW��JV'&M&�MHPW��0�D&
�P���0�,&
�'{�$P���0�,&
�'B$P���0�/&
�'O�$P���0�/&
�'��$P���0�/&
�&On$'{$P���0�/&
�&�J$'{$P���0�/&
�&Ow$'B$P���0�/&
�&�T$'B$P���0��&
�'O�$'�a�P���0��&
�'��$'�b�P���0�'&
�&�bHP���H��&���( ��B��)��O��)[�O��L�����L��&��{���)d�&O�B����L��&��B���(��'Oq�$��(~��'�M�#���^�y���^�C��(w�y'��l���( ��{��( ��B��(^�����)c�&O�{����(^�B���^�C��)[�O��)[�O��L[����)[c&O{���L[�&�{���)[d&OB���L[�&�B���([��&Oq���([��&�M����^�y���^�C��(w�y'��l���(^�{��(^�B��(���$��Q���/�����&�'#�2_����x&�2_����x&�2_���6�n&������6��&�'�������@3n&�0���@n&�0����cn&�A���B�n&����H8y&�'"��@���H8�&�'#3�@���H8n&��@���H8�&�'$3�@����'y&�'2_"������&�'#�2_�����&�'$�2_�����&�'%�2_���^on&=A���:�n&>����+y&�'"�2_����]n&������@�n&�S�����n&������@�n&�l���6n&��������n&�$~���@n&�2���@Xn&�A�����n&����1Hn&��.���x&������n&�L��*��vx&i����Gn&������In&	����.���x&
E�����dn&�����O�n&q����;n&����(���x&�V����Qn&�����n&3?##"&'.'.54632>54&'#5!2675#4632#"&KQ:'*]!)o=68cL"%	����'@"�
4��!  !'��
	
4n161dX$";0GG�	�.*>��""!!�"n7C%>54&#".5467.5467>;5!5!##"6324632#"&A$.:AEIGF6[c;)���"h�	/6EW)DA��!  !E$ &+90:G55G|M&;4"(
VGG�*C&:L�""!!.���xEP##"&'327&54632.'#".5467.5463232675#5!654&#"oQG22S /24/(),&:1
;Z2E1,.QL>Y.)+.O&Y��*!K"("*'��E
5$) 4 
))=)G+7IG.5H:;0B�GG1!51:$"���n*%4&'7!5!5!###"&'.'.54632>U`h�)�hQ�".
<69-J"!2b)6F+(-�/JCnGG��rN03B

F< #.�g�.54632.#"�YB 6&(*g#L$CC
B	-#!?$�.����73'�.�(�;uӥ��&��wn,#>;#"#5#".54632.#"3267!5!j�6'@3.4QG2/S2nX91:@=(,E��j'�G��$&M9P^I4/53*#G�n%@%#"&'.54632>54'#5!!3267'#".54632.#"3267�)bIl�b"%����	F>F�c3X/N./K+`O6%077*#:J*k}#-";4)GG.R`TZ!K'F.IQE,,+)�(n#".546;5#5!�7&"('��*<�GGv�n)3267#"&5467.547#5!#632&"#"�8,6I) bIM`(.
4n�+"#19
*'+<4QC4F*GG!%(F)�����n&�*�v�n!!#"&54675!23#"3267��f�5I0Mc�%$ :G:&3InG��'VG3HF1/++-�nF5!2>54&#".54632#"&5467.54632.#"632&"#"�]M~K.)"5:!QJHD.K-2]�Rab*/ZI4
#X,"#^>'GG�?lE/>$ 3?S47H'M;:nX4S@-A+<@EA 	FF(&PKn!!#"'#".'732654&'7!K��<�)$,)C(5`X*G.d: )=-nG�P-.>=�w��"(,N@��WnI%".5467>;5!5!##"6323267#"'.'.5463232654&:/@93`��u�	.7*#='%3
4)	SK?"!9h-;E+FM1�L3(
VGG�!

	E	AK

F9 ),!$v<n(!!>3223267+#"&'732654&#"*��AC^	(+
>M"U�3E)YB7>9).nG�D?
M27jr]P4+.(����$n&�*�����Xn&�*�����Qn&�*�����An&�*���n7"'.=#5!#'27>=#�],O�=B14�
!�;F6�GG�*:G ,+��'.��|n!!467>;#".k��-RDlY==JG6.O/nG��#8G+1[94(PV.��x%.546323267#"&'>54&#"�ALI5)K0PJ:33L%%aCUw_M/% Q�	=:89#H8I^##( C-a]G6233	����in&*�*g�x4%#"&5467.54632'>54&#"632&"#"3267�%[GM_/;R?5G(=	(1#299,5J�,QC2G8<O8-/)'
,# 'F)&)(,��n!!#".5463!u���6&"nG�6*<G��n3267#"&'.=#5!�
2)G$(S;(AOB'�)0(D(I@�GG�n&#>;#"#5#"&'.=#5!3267r�5(@4.4Q@,(@Or�.(*?'�G���G9�GG�70#v�n%!!#".54632.#">7%3267'��`�%`A8Y2yb('2�
��C0!�)nG��,*K3V\E�43�.�x)-%#".546;54&'&#".5463233#L*$!
+/9KYL4%:Ƀ44�%!',i/2G=@;5D>tGtG��n3##".546;5#5!#���*$"~l�AG%!',�GG��n%#"&'>54&'#5!#3267�&]AZo><{W�o=12L�-yd
/,0GG46l$11+��n5!#"&'73267�  P,B}H8f76G('GG��$%C$��,n(!!&#"'67.#".54>32632��2.M1(++R:6:`81I%,I!;WnG�?=.#.$&EK142[]55C8?�n.=!!#"&'#".54>32>3232654&#"326?67.#"�%�+O66P'I-/M.-P36O' G.0M.��!=#*?7%&5��7%&6!<#*@nG��5U1,#-"+U=8T/+$/ ,Ta!#7>@455>5541!$8v�n!!#".54632.#"3267��j�%_<6T1s^
'%
0>F?-4KnG��,*K3V\I6230-(���x,7"&54632>54&#".54632.'z#/$'2@;/98^]GC/R3E=-T@3S%�#VA8C#FS:3@+U@Eu!'_,,H]��n#"&'.=#5!#267�%(VB(AO��92�
E+I@�GG���)0���n/267#"&'.'.54632>54&'#5!#q24*]!)o=68cL"%	��z
4BH
4n161dX$";0GG.*>�r�n/%#".5467.5467>;5!5!##">;�9<&GF6[c ;)E���E�	F8��
2:G55G|M%:4#(
VGG���Kn*6B!!".'732654&'7!#"'"&546323"&54632"&54632K��65`X*G.d: )=-�'#+)C��qnG�T:�p}�%(G@GJ),:yY��n!7"&'>54&'#5!#'.'3267�Zo><{W�
� U#
1,=1"4�yd
/,0GG�W!�
$411
.��x=H#"&'327&54632.'#".5467.546323267%654&#":+2S /24/(),&:1
;Z2E1,.QL>Y.),"7��*!K"("*9
5$) 4 
))=)G+7IG.5H:;0B
t!51:$"���n&!!4&'7!#"&'.'.54632>��OU`Z�".
<69-J"!2b)6F+(-nG��/JCGN03B

F< #.����wn&��������n&�������(n&��������n&��������n&��������n&������@�n&�l����Kn&�1O���6Wn&�������<n&�$~����$n&�������Xn&�������Qn&�������Wn&��������n&�����1|n&���.���x&�������in&'*��L��*���x&�i�����n&��������n&��������n&��������n&�����.��x&�E������n&��������n&������O,n&�q���w�n&��7�����n&�����(���x&��V�����n&������n/;267#"&'.'.54632>54&'#5!#4632#"&q24*]!)o=68cL"%	��z
4��!  !BH
4n161dX$";0GG.*>��""!!��n/;%#".5467.5467>;5!5!##">;4632#"&�9<&GF6[c ;)E���E�	F8��g!  !�
2:G55G|M%:4#(
VGG��""!!��	n8?.54632.#"3267!5!!>32'>54&#"#5.�6JnX91:@=(,E��	��9#AR#H '#7Q�5JQFP^I4/53*#GG�SM.h2) T)/.%#������AnC7.'.54632>54&'#5!##5267!75#".54632.#"�H�L"%	�AhQ���#:��
F>F�e�@(/K+`O6%077.Dfa#-";0GG��S�^.R`TXS$'F.IQE,,+)��Bn'%##".546;5#5!##5�/�7&"BhQC�Z��*<�GG��z��]n-'7.5467.547#5!##5'3267!632&"#"v/�>G(.
4]gQ�8,4M��+"#19AT	I;4F*GG�٩d*'+#!%(F(����n&�� ���n$'7.54675!23#"3267!5!##5�/�:G�%# :G:&2G�/�hP
AUM<3HF1/+++#GG�٧����n&��L��n%'%5#"'#"&'732654&'7!5!5!##5�0
�&)C(O�?G.b<!(=-0��hQC��A'(5~�qt$>@nGG��{��@n;Q%".5467>;5!5!##5'75#"'.'.5463232654&7267##"632:/@93`��@gQ�:�(D, 	SK?"!9h-;E+FM1�*D,��	.7)#D�L3(
VGG��p�8�
AK

F9 ),!$.�!
��n0'%5+#"&'732654&#"'>32232675!5!##5|0
:#
=N"U�3E)YB7>9).AC]
#4��hQC�U

27is\Q4,.'H
D?�GG��{���n&������Xn&�����Pn&�� ���An&�����n''%##"'.=#5!##5%27>=#L0
�B/],O�gQ��4�
!C�Y�*:;F6�GG��{^ ,+��'.6n7'7.#"'>325!5!##5/�*=*9)"J,(@>%��6gQAC�6-J90�GG���.���x-?.'>54&#".546323267#5!##5i�Je_M/% QALI5)K0PJ:34J R
gQ��)a\TG6233	F	=:89#H8J\$#( GG�ٴ���n3?.5467>;5!5!##"3:7&54632.'*�,L/!`;���1:GOR*+-!C&��M	-N;,?_GG�. 5E#1 #	3#""F�*��vx<'7.5467.54632'>54&#"632&"#"3267#53##5�/�<G/;R?5G(=	(1#299,5J>�hQ+AX
J92G8<O8-/)'
,# 'F)&)(+2GG�ٜ��9n'%5##".5463!5!5!##5�0
�6&"�9gQC�\6*<�GG��{��Gn?&'.=#5!##5#3267-�6 OGhQ��2�
1'H5d	 I@�GG���4�)0&��n%0?&'.=#5!!>32'>54&#"#53267,�0O��:#AR#H (#59Q��E()@5e
"F9�GG�SM.h2) T)/.I����3�70"��In )?.54632.#"67!5!##53267'9�FXyb('2��oIgQ��C0!�))S
TDV\E�'GG�٨�743�.���x5'%5##".546;54&'&#".5463235#5!##580
�*$!
+/9KYL4%:Ƀ;gQC�,%!',i/2G=@;5D>t�GG��{��dn'%5##".546;5#5!##5#3�0
�*$"~dgQ��C�,%!',�GG��{����Sn'7.'>54&'#5!##5%3267#]/�K\
><{ShQ��=11L�AaqZ
/,0GG�ٲ{11*46l������n&
�����n0%'75.#"'67.#".54>326325!5!##5�9�
2.M1(++R:6:`81I%,I!;W
���gQ4<�h?=.#.$&EK142[]55C8GG�١���n&����;n#'7.54632.#"3267!5!##5h/�FWs^
'%
0>F?-4K�};hPASUEV\I6230-#GG�٢�x$07'7.''>7.546325#5!##5>54&#"�0�:^&+[/0)M%5)UIBV-#,x6LhQ��".!%("/(C�9D+&H'5LI;+E�GG���66" "��Qn?&'.=#5!##5#3267-�8"OQhQ��<���22�
5c"I@�GG����4��/�)0���n)3%'75#"&'.'.54632>54&'#5!##5'35!�0��4C,)o=68cL"%	��hQ���

kD}4n161dX$";0GG��ן�./#�^:n<?&#".5467.5467>;5!5!##">32'>54'��&LCQLH6ah;)��~:g�	6 S^(F�Sv99 @M35J�P!C4#(
VGG�6R**K-)?�9n'?.#"#".54675#5!!632'>54'��6*,)7&$29��*)tf"H"���K%5!
�GG�gY0j4)!X+
���n%1=I'75#"'#"&'732654&'7!5!5!##54632#"&'4632#"&4632#"&�>��!%)C(O�?G.b<!(=-0��hQ���\3��@&(6�qt$>@VGG��q"D��Sn%'7.'>54&'#5!##5#'.'3267]/�K\
><{ShQ�
��
1,=1$5AaqZ
/,0GG�ٲu�E
$411.��xIT%75#"&'327&54632.'#".5467.5463232675#5!##5654&#"��(a2/]!02/+(),&:0	6S.E1,.QL>Y.(/@_+�>hQk��*!K"("*>�h
5%) 4 
))=)G+7IG.5H:;0A"|GG��x�!51:$"���n.%4&'7!5!5!##5'75#"&'.'.54632>U`����gQm:��".
<69-J"!2b)6F+(-�/JCnGG�ٱ|9�ZN03B

F< #.���j	n&�*����An&������@Bn&�����j]n&�*��n0<HO%".5467>;5!5!##"632#"&'73254&74632#"&4632#"&73'f:.A>1]�o���	.7Jbbcb�;=9wKt1k�E!  !�(�;u��L4(
VGG�!
KADVXF1DAN"$s  !!��""!!n��&�����j�n&�R*��nHT[%2>54&#".54675!5!##"&5467.54632.#"632&"#"4632#"&73'(M~K.)"5:!QJ75�9˴3C2]�Rab*/ZI4
#X,"#^>�!  !Y�(�;u�F?lE/>$ 3?S40D	FGGJ
TH:nX4S@-A+<@EA 	FF(&�""!!Q��&�����^n&�1���6@n&������Zn&�$�n ,3##"3267#".54>;5!5!4632#"&73'�70@7,G*6L*,c5Em>Do?���"!  !�(�;u�'�&A0?J4bFAY.�G�i""!!c��&���Xn$07##"&54>;5!5!2654&'#"4632#"&73'X�PXBnBq�Do>��X��G^:9#J/!_�!  !<�(�;u�'�qIFW)qgC[.�G��=C0M7'FD{""!!Y��&���Pn0<C%".5467>;5!5!##"632#"&'73254&4632#"&73'f:/@>1]�oPn�	.7Jbbcb�;=9wKt1��!  !�(�;u��L3(
VGG�!
KACWXF1DAN##�""!!n��&���An%0<C!".54>75!5!##"&54>32'>54&#"4632#"&73'3NuBHvE��A�'@E @:!A11?sf7F##,��!  !4�(�;u�7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+�""!!b��&�����O�n&�����6n&�A��.�j�x&�\*���Pn&���*�[vx&�?���@9n&����jGn&*���jn&*���jIn&*��.�@�x&����@dn&*���jSn&!*����n!-4%.'.54632>54&'#5!#4632#"&73'�6;hP
"%'$
��h,L1-w��!  !@�(�;u�*61dX$"<'-GG#:7L54o7""!!���&�����O�n&q���n&'��Z���j;n&
*���r�x&2���jQn&	*���n)3?%'75#"&'.'.54632>54&'#5!##5'35!4632#"&�0��4C,)o=68cL"%	��hQ���

��!  !kD}4n161dX$";0GG��ן�./#��""!!�:n<H?&#".5467.5467>;5!5!##">32'>54'4632#"&��&LCQLH6ah;)��~:g�	6 S^(F��!  !Sv99 @M35J�P!C4#(
VGG�6R**K-)?��""!!��wn.'7.54632.#"3267!5!#>;#"#5]/�6JnX91:@=(,E��j�6'@3.4QAJQFP^I4/53*#GG�G�����n$?7.'.54632>54&'#5!!74632.#"3267#".�H�L"%	����
F>F�e��pM`O6%077*#:N./K+.Dfa#-";0GG.R`TXR?��IQE,,+)A'F���n#".546;5#5!'%�7&"_�/
)'��*<�GG��C�:���n)'7.5467.547#5!#632&"#"3267v/�>G(.
4n�+"#198,6I)AT	I;4F*GG!%(F('*'+>���v�n&�� �����n&�� ���n!!!'7.54675!23#"3267��f�/�:G�%$ :G:&2J(&nG��AUM<3HF1/++->����n&��L���n!!!#"'#"&'732654&'7!'%m��^�&)C(O�?G.b<!(=-0�0
)nG�A'(5~�qt$>@�/C�:���nIM%".5467>;5!5!!#"6323267#"'.'.5463232654&7:/@93`�����	.7)#D,*D,(D, 	SK?"!9h-;E+FM1��+��L3(
VGG�!
I
AK

F9 ),!$��4����n(,!!>3223267+#"&'732654&#"%h���AC]
#5:#
=N"U�3E)YB7>9).q
)��nGj
D?T

27is\Q4,.'���:����vn&�������n&������vXn&������Xn&�����vPn&�� ����Pn&�� ���vAn&������An&����Rn##"'.=#5!27>=#'%�B/],O���4�
!n0
)'�*:;F6�GG�� ,+��'.�C�:A�n!!7.#"'>32��tP�*>)9)"J,(BD*��nG�]�6-J@9C�.���x%'7.'>54&#".546323267�/�Je_M/% QALI5)K0PJ:34K%Aa\TG6233	F	=:89#H8J\$#( G����in&�*�*���x4'7.5467.54632'>54&#"632&"#"3267�/�<G/;R?5G(=	(1#299,5J%+AX
J92G8<O8-/)'
,# 'F)&)(,F���n!!#".5463!'%��q�6&"�0
)nG�6*<G��C�:���n?&'.=#5!#3267-�6 OB�
1)G%��5d	 I@�GG�)0(A����n'?&'.=#5!#>;#"#53267,�0Or�5(@4.4Q��E()@5e
"F9�GG�G����3�70"���n'!!7.54632.#">73267'��`9�FXyb('2�
'��C0!�)nG�S
TDV\E�A
�743�.��>x)-1%#".546;54&'&#".5463233#'%L*$!
+/9KYL4%:Ƀ��Z0
)�%!',i/2G=@;5D>tGtG��C�:���n3##".546;5#5!#'%���*$"~��0
)AG%!',�GG��C�:���n'7.'>54&'#5!#3267]/�K\
><{W�o=12L&AaqZ
/,0GG46l$11+E����n&�����3n(,!!&#"'67.#".54>32632'7��2.M1(++R:6:`81I%,I!;W�9�#nG�?=.#.$&EK142[]55C8��<�;����n&������n!!'7.54632.#"3267��jh/�FWs^
'%
0>F?-4K+nG��ASUEV\I6230-D((x ,7'7.''>7.5463253>54&#"�0�:^&+[/0)M%5)UIBV-#,x6L[��!%("/"(C�9D+&H'5LI;+EM>GG�6" "#6���n'7.'.=#5!#3267�%N��/�-O��.
22D3�BcI@�GG,�)0��Sn+/#"&'.'.54632>54&'#5!!;'7+�4C,)o=68cL"%	�:��

 ՚0�(/4n161dX$";0GG./#��D}:�����n&*���n!-9E!!"&'732654&'7!#"'7%"&546323"&54632"&54632m��6O�?G.b<!(=-0�!%)CN�,����qnG�l�qt$>@G@&(6x�9�2Y���n!?.'>54&'#5!#.'3267.�K\
><{W�
�
���
1,=1"4)aqZ
/,0GG�T�r
$411
.��xx=ALP267#"&'327&54632.'#".5467.546323#654&#"7�A^+(a2/]!02/+(),&:0	6S.E1,.QL>Y.(/Y����*!K"("*
�.�l#[
5%) 4 
))=)G+7IG.5H:;0AG1!51:$"�*�<���Kn&*!!4&'7!#"&'.'.54632>72��U`��".
<69-J"!2b)6F+(-p�(�nG��/JCGN03B

F< #.S�=����jwn&6*�����n&7�����@�n&8����j�n&9*�v�n0<HO]%".5467>;5!5!##"632#"&'73254&74632#"&4632#"&73'.#"'632f:.A>1]�o���	.7Jbbcb�;=9wKt1k�E!  !�(�;u��2eD	CeQ!�L4(
VGG�!
KADVXF1DAN"$s  !!��""!!i��&���?<H/H%���j�n&<R*��nFRY5!2>54&#".54632#"&5467.54632.#"632&"#"4632#"&73'�]M~K.)"5:!QJHD.K-2]�Rab*/ZI4
#X,"#^>�!  !Y�(�;u�'GG�?lE/>$ 3?S47H'M;:nX4S@-A+<@EA 	FF(&�""!!Q��&�����^�n&>1���6�n&?�����Z�n&@$�v5n ,3A##"3267#".54>;5!5!4632#"&73'.#"'632�70@7,G*6L*,c5Em>Do?���"!  !�(�;u��2eD	CeQ!'�&A0?J4bFAY.�G�i""!!c��&���?<H/H%�vZn$07E##"&54>;5!5!2654&'#"4632#"&73'.#"'632X�PXBnBq�Do>��X��G^:9#J/!_�!  !<�(�;u��2eD	CeQ!'�qIFW)qgC[.�G��=C0M7'FD{""!!Y��&���?<H/H%�vPn0<CQ%".5467>;5!5!##"632#"&'73254&4632#"&73'.#"'632f:/@>1]�oPn�	.7Jbbcb�;=9wKt1��!  !�(�;u��2eD	CeQ!�L3(
VGG�!
KACWXF1DAN##��""!!i��&���?<H/H%�vPn%0<CQ!".54>75!5!##"&54>32'>54&#"4632#"&73'.#"'6323NuBHvE��A�'@E @:!A11?sf7F##,��!  !4�(�;u��2eD	CeQ!7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+�""!!b��&���?<H/H%���ORn&I�����n&JA��.�j�x&K\*�����n&�'*����*�[�x&M?���@�n&N����j�n&O*���j�n&P*���j�n&Q*��.�@>x&R����@�n&S*���j�n&T!*���O3n&Vq����n&�'��Z���j�n&X*���r(x&Y2���j�n&Z	*��Sn+/;#"&'.'.54632>54&'#5!!;'74632#"&+�4C,)o=68cL"%	�:��

 ՚0�(��!  !/4n161dX$";0GG./#��D}:�""!!���n<JV?&#".5467.5467>;5!5!##">32'>54'632.#"4632#"&��&LCQLH6ah;)��~:g�	6 S^(F�UDeP!92eD	��!  !Sv99 @M35J�P!C4#(
VGG�6R**K-)?�;3V3)PKB""!!��"nO2'>54&#"632#"&'73254&#"'.5467.5467>;5!5!##"6GW'>; '9AMCBCKS]Va�<='FO1j1+YL;)���"h�	/,(@$5DC!"&6(3:"M?=N\L+0>J! (6f<#93"(
VGG���"nN"&'73254&#"'.5467.5467>;5!5!##"632'>54&#"632-a�<='FO1j1+YM;)���"h�	
/9GW'r 7EJD87KS]��\L+0>J! 1`@/0 (
VGG�
$:!^$A *%,2M?=N��8nQ2'>54&#".#"3267#"&5467.5467.5467>;5!5!##"6GW'>; '9AMCBDAdN =7oJ331*9KU-)@7;)���"h�	/,(@$5DC!"&6(3:"9V1'SW& &
F

O?'@,X3#93"(
VGG���BnQ2'>54&#"232.#"3267#"&547.5467.5467>;5!5!##"6GW'r 7EJD54KpU"=7oJ331*9KUC:4;)���"h�	
/,$:!^$A *%,07[5'SW& &
F

O?I&(S4/0 (
VGG�
�^5nF23267#"&5467.#".5467.5467>;5!5!##"6EW)<62);!KT:<>=FHI>6a_;)���5{�	.,*C&!
( !	EK;'L(&:5&DI/5M�H'@4#(
VGG��XnX23267#"'3267#"&547&54>7&#".5467.5467>;5!5!##"6EW)=51 *;!
,%*9!OP64){FHI>6a_;)���5{�	.,*C&!
$
A

A
K8$@1'N:5&DI/5M�H'@4#(
VGG���"nO[2'>54&#">32#"&'732654&#"'.5467.5467>;5!5!##"64632#"&GW'r 7EJD<;#LTZIHp6./V3.35&0gY;)���"h�	
/�!  !,$:!^$A *%.3N>=N/20*%%! 
6eD/0 (
VGG�
��""!!��}nR^2'>54&#"632.#"3267#"&5467.5467.5467>;5!5!##"64632#"&GW'r 7EJD;9KoV"=7oJ342*9KTLB;)���"h�	
/�!  !,$:!^$A *%-27[5'SW& &
F

O?.-[;/0 (
VGG�
��!!""�5nFR23267#"&5467.#".5467.5467>;5!5!##"64632#"&EW)<62);!KT:<>=FHI>6a_;)���5{�	.�!  !,*C&!
( !	EK;'L(&:5&DI/5M�H'@4#(
VGG��""!!�XnXd23267#"'3267#"&547&54>7&#".5467.5467>;5!5!##"64632#"&EW)=51 *;!
,%*9!OP64){FHI>6a_;)���5{�	.�!  !,*C&!
$
A

A
K8$@1'N:5&DI/5M�H'@4#(
VGG��""!!��:nT?&#"632#"&'73254&#"'.5467.5467>;5!5!##">32'>54'λ&EEOB<KT]Va�<>'FN2i0 *
gU;)��~:g�	:"P_*F�pg21 55"M?=N\L+0>J! ;kD;2 (
VGG�		3M('G*&;u��:nS?&#"632#"&'73254&#"'.5467.5467>;5!5!##"632'>54'ڪ&@NF9O"!KT]Va�<>'FN2i0 *RR;)��:h�	3>Qa*A��^1)#G'M?=N\L+0>J! *MD30(
VGG�.L.E$(+
v��QnV?&#"32.#"3267#"&547.5467.5467>;5!5!##">32'>54'λ&EEO?9KpU"=7oJ252+9KTDD:;)��~:g�	:"P_*F�pg21 34 8[5'SX' &
F

O?J&.[9;2 (
VGG�		3M('G*&;u��QnV?&#"632.#"3267#"&547.5467.5467>;5!5!##"632'>54'ڪ&@NF3G
KpU"=7oJ342+9KT;12;)��:h�	3>Qa*A��^1)!D%8[5'SX' &
F

O?D'!<830(
VGG�.L.E$(+
v��An3'>54&#".'.54632>54&'#5!!632!H!"#"H+-w@6;hP
"%'$
�A��5J(.W%)E##*!.4o161dX$"<'-GG#:
I��!nD%"&545.'.'.54632>54&'#5!!>32.#"3267�<P%<#-w@6;hP
"%'$
�!�A1=]H?.X7+(*,�N?#4o161dX$"<'-GG#:%$7]9"VU+%C
��6nL67.'#".5467>;5!5!##"3:7&54632#"&'73254&#"('+*UG+!`;���1:GOR*+-
38]Va�<='FO1j1+ /O9,?_GG�. 5E#1 #	'G3=N\L+0>J! ���nO#"&546323.'#".5467>;5!5!##"3:7&54632.#"3267�9KU\O
*UG+!`;���1:GOR*+-
Ig(>6pI342*�

O?9P/O9,?_GG�. 5E#1 #	*g>'SX' &
��;nF"&5467&'#".5467>;5!5!##"3:7&546323267�KU8-*UG+!`;���1:GOR*+-%(1.2 /"C��O?/B& /O9,?_GG�. 5E#1 #	;#
)!"E
��4nK?.5467>;5!5!##"3:7&54632#"&'732654&#"'67.'*�,L/!`;���1:GOR*+-	47QJSz7=5A.).&"$!��M	-N;,?_GG�. 5E#1 #	%	J6=NWQ+)?#'#"A
"����nN?.5467>;5!5!##"3:7&54632.#"3267#"&546323.'*�,L/!`;���1:GOR*+-
Ig(>6pI342*9KU\O
��M	-N;,?_GG�. 5E#1 #	*g>'SX' &
F

O?9P 
���;nE?.5467>;5!5!##"3:7&546323267#"&5467&'*�,L/!`;���1:GOR*+-%(1.2 /"C)KU8-��M	-N;,?_GG�. 5E#1 #	;#
)!"E
O?/B& ���An3?'>54&#".'.54632>54&'#5!!6324632#"&!H!"#"H+-w@6;hP
"%'$
�A��5J�.!  !(.W%)E##*!.4o161dX$"<'-GG#:
I��""!!��!nDP%"&545.'.'.54632>54&'#5!!>32.#"32674632#"&�<P%<#-w@6;hP
"%'$
�!�A1=]H?.X7+(*,�1!  !�N?#4o161dX$"<'-GG#:%$7]9"VU+%C
{""!!��6nLX>7.'#".5467>;5!5!##"3:7&54632#"&'732654&#"%4632#"&F
*UG+!`;���1:GOR*+-	77QJWy4=/V='0)$!��    !/O9,?_GG�. 5E#1 #	&	L4=N\L+IB%%! J""""���nO[#"&546323.'#".5467>;5!5!##"3:7&54632.#"3267%4632#"&�9KU\O
*UG+!`;���1:GOR*+-
Ig(>6pI342*��!  !�

O?9P/O9,?_GG�. 5E#1 #	*g>'SX' &
�""!!����;n&��L�|Pn0<U%".5467>;5!5!##"632#"&'73254&4632#"&"&'732654&#"'632f:/@>1]�oPn�	.7Jbbcb�;=9wKt1�!  !I[�878d@/.-(17ENU�L3(
VGG�!
KACWXF1DAN##����L>0<9CF84G�{Pn0<V%".5467>;5!5!##"632#"&'73254&4632#"&"&54632.#"3267f:/@>1]�oPn�	.7Jbbcb�;=9wKt1�!  !FOVFEgP">1dA..-(4�L3(
VGG�!
KACWXF1DAN##����F84G2Q0'HN	D�|An%0<U!".54>75!5!##"&54>32'>54&#"4632#"&"&'732654&#"'6323NuBHvE��A�'@E @:!A11?sf7F##,=!  !I[�878d@/.-(17ENU7gIF_1iGG�<):J(*"<%%<"FW�%!-)"+���L>0<9CF84G�{An%0<V!".54>75!5!##"&54>32'>54&#"4632#"&"&54632.#"32673NuBHvE��A�'@E @:!A11?sf7F##,=!  !FOVFEgP">1dA..-(47gIF_1iGG�<):J(*"<%%<"FW�%!-)"+���F84G2Q0'HN	D�Gg���"&546323#�BQQ��g��4632.#"#.53�XB!5&(*P{Q�CC
B	-#!<$#Lo���g��$4632.#"#.5374632#"&�XB!5&(*P{Q��CC
B	-#!<$#Lo��m���&�����&�����&����$�&�Q,�$0�-#53.#"#.54632>32.#"13##YYW=7(*PTK,>B, 6&(*
ngQ'Ghc1+"7#@"AS  
B	-#>$G���$0�-9#53.#"#.54632>32.#"13##"&54632YYW=7(*PTK,>B, 6&(*
ngQ�'Ghc1+"7#@"AS  
B	-#>$G��������E����g.� .'#"&'73267632.#"�:$E^"F9-1/;(? 6&(*g:Y^FDIC
B	-#!?$��g.� ,.'#"&'73267632.#"'4632#"&�:$E^"F9-1/;(? 6&(*g:Y^FDIC
B	-#!?$m�%g���!.#"#".'732632'4632#"&�(&

#9/B%+ %8+     gH4;7,,"VM�""""�%g1�$.#"#".'732632>32.#"�(&

#9/B%+ 
P5!4&)*gH4;7,,..
B	-$+F�%g1�$0.#"#".'732632>32.#"7"&54632�(&

#9/B%+ 
P5!4&)*?gH4;7,,..
B	-$+F;�gg���.#"'632'4632#"&�)2""'46O?!!!!gO[&	I3{k�""""�gg3�.#"'632632.#"�)2""'41<e 6&(*gO[&	I"+M
B	-#
/@�gg3�).#"'632632.#"7"&54632�)2""'41<e 6&(*@gO[&	I"+M
B	-#
/@;�Tg���).#"'>327.#"'632'4632#"&�-+*2-F&, '46O?!!!!g(%	E
+&49E3{k�""""�Tg3�,.#"'>327.#"'632632.#"�-+*2-F&, '4.Be 6&(*g(%	E
+&49E#*M
B	-#0=�Tg3�,8.#"'>327.#"'632632.#"7"&54632�-+*2-F&, '4.Be 6&(*@g(%	E
+&49E#*M
B	-#0=;����*�&������1�&�����1�&����(�&����(4�&����(4�&����j�&����j6�&����j6�&����W�&����W6�&����W6�&�����&J����G�&L����G�&M�g�.54632.#"'4632#"&�YB 6&(*g#L$CC
B	-#!?$m���&���������&������H8�&������H8�&��3���H8�&��3��'�&������&������&������&�����+�&������&������&������&�J������&�'��2_���6��&�'�������H8�&�'�@�����H8�&�'�3�@���H8�&�'�@�3����'�&�'2_�������&�'��2_�����&�'2_�������&�'2_������+�&�'2_����in/.54675!5!5!!>32'>54&#"##"8.N/���-i��9$@S"I'#68Qe15IG(PU1.
H�GG�SM.h2) T)/.I��H+1[9���xZb%"&547#"#5#".54632.#"3267!5!#>;632>54&#".54632.'##5!�#/.4QG2/S2nX91:@=(,E��2n6'1'2@;/98^]GC/R3E=-T@3S%�QY�#��$&M9P^I4/53*#GG�=VA8C#FS:3@+U@Eu!'_,,H]j��'GG���xEks%"'#".54632.#"3267>32>54&#".54632.'#".'.54632>54'#5!!327##5!�C'/K+`O6%077*-#'2@;/98^]GC/R3E=-T@3S%#)nDD��I"%�W��E=K�]qR�QY�
'F.IQE,,+)
VA8C#FS:3@+U@Eu!'_,,H]} ,l_&";4)GG0QaYV3���'GG�e�nBN".547>;5!5!##">32##"'#".546;5.'73265474632#"&fD*;#:3_�s���(
=PZL!,+4!",N >>�=<5:F*.
>GG�?8 4��	�'8Y7%1D32f    �V�n>JQ".546;5&'732654#".547>;5!5!##">32#5#4632#"&35#"'�4%P:>>�=<5_D*;#:3_�s���(
=PZL�0��!)42�'7{%B1D32F*.
>GG�?80��s"    ��\�n@S_%".5467>;5!5!##5#"&'>54'.#!"632#"&'73254&267!32%4632#"&f:/@>1]�o�hQB&Ov9B

%&�~	.7Jbbcb�;=9wKt1�&>���6=17:���L3(
VGG��cac'"
!
KACWXF1DAN##TpV/1<+�  !!�n">!##5#"&54675!23#"3267!#"&54675!23#"3267�hPH2Mc�$ :G:&2G���5G.Mc�$:G:&2FnG�٥VG3HF1/+++#��&VG3HF1/+++anHc!##"&5467.54632.#"632&"#"32>54&#".54675!#"&54675!23#"3267a�3C2]�Rab*/ZI4
#X,"#^>4M~K.)"5:!QJ75���$Y?Mc�%$ :G:&/DnGJ
TH:nX4S@-A+<@EA 	FF(&?lE/>$ 3?S40D	F��1VG3HF1/++(���an&����nZo%2>54&#".54675!5!##5#"&'>54'.+"'#"&5467.54632.#"632&"#"323267(M~K.)"5:!QJ75�9�hQC*Hv:B%&0' 2]�Rab*/ZI4
#X,"#^>#�6=17:$)CF?lE/>$ 3?S40D	FGG��gac'"'1:nX4S@-A+<@EA 	FF(&�J/1<+!g�n;!###"'#".'#"'#".'732654&'7332654&'7!5!�hQ�)$,)C(3[U)A)$,)C(5`X*G.d: )=-�/g; )=-��nG��rP-.>8kP-.>=�w��"(,N@��"(,N@nn0K5!##"632#"&'73254&#".5467>;5".'732654&'7!#"'n�	.7Jbbcb�;=9wKt1.:/@>1]��5`X*G.d: )=-~)$,)C'GG�!
KACWXF1DAN##L3(
V�)=�w��"(,N@GP-.>�nG%"&'732654&#"'>323267&'732654&'7!5!5!###"'#"&'#"#,U�3E)YB7>9).AC]	"F.d: *=-���hQ�(#-)D(=l239
=Mvjr]P4+.(HC?#'��"(,N@nGG��rP-.>Qb27�n<%"&54>;5!5!##"3267#"3267#"&54>;5"m�>kA
���K!EXC2S)9K!EXC2S)(l3m�>kA
�YX9I#AGG�	
#7+Ks	
#7+KYX9I#"�vHnV%"&54>;5!5!##"3267#"3267.#"3267#"&5467.54>;5"jz:gC���`9OD;U&1>`9OD;U&J&;XD=7oJ331+9MS87Q[:gC�ON4B ;GG�
/%Ko
/$K
	3I)#GL	F
G8*?
MC4B �-n1A".54>;5.54>;5!5!##"3267'2654&'#"Go??lCjz>kA
��-�K!EXC1T)A#LX@mEGZ88)%?W�%N=8I$#YV9I#AGG�	
#7+K
0[::I!G-0#:&12�vDnIV%"&54>;5!5!##"3267.#"3267#"&5467.54>;254&'#"jz:gC��-�`9OD;U&8GLX_N8TA=7oJ331+9MS76V\?j@�882F)�ON4B ;GG�
/%K-R4DD	
4F(#GL	F
G8)?
	KE3C!�M0	!Sn2E5!##5#"&'>54'.+#"3267#".54>;5267!32gQD)Iu:B%&�70@7,G*6L*,c5Em>Do?�*C�'�6<17:'GG��hac'"-&A0?J4bFAY.��c hV/1<+�Xn'7G".54>;5.54>;5!5!#2654&'#"2654&'#"'Hq@@nCGn?@nC��X�M[^JM[AnGI\:9*&AZMI\:9*&AZ�%N=8I$#%N<8I$BGGH[:GL/[::I!�-0#:&12��-0#:&12wn)<K#5#"&'>54'.+"&'#"&54>;5!5!267!!22654&'#"QC)Iu:A
&&�#6<BnBq�Do>��w��)B��5=08:�G^:9#J/!_'��_ac'!!b;FW)qgC[.�GG�Z q^/1<*9=C0M7'FD�PnJU"&5467.'732654#".547>;5!5!##">32#"&54632'23254#"Nw�seL�3>>�=<5_D*;#:3c�oPn�(
=PZ=A>(P<:KMFEkov=*'�ZXJJ	F;1D32F*.
>GG�?8-C?	$-1)=>':Gn<'�PnR".547&'732654#".547>;5!5!##">32#"'>32#"&'732654fC+;R:><�=<5_C+;#;2c�oPn�'<O[_f%#;O[_fZ�<><�=<51F+$%D1E4 4F+/
@GG�@99K@99KIF1E4 4�vfnn%".547&'732654#".5467>;5!5!##">32#"'">32.#"3267#"&5467.'732654fI(8O::AD<5_I(8:1g�oPn�!APZ^g"!APZHM7QA=7pI342*9MR>=Gy.:AD<5	
B( #@2B1+
B(!

4GG{	
:56D
:5/A3F'#GL	F
G8,B
C22B1+jn@S%".5467>;5!5!##5#"&'>54'.#!"632#"&'73254&267!32f:/@>1]�ojhQC*Hv:B%&��	.7Jbbcb�;=9wKt1�)C�1�6=17:�L3(
VGG��gac'"!
KACWXF1DAN##T!gV/1<+�jn@SZ%".5467>;5!5!##5#"&'>54'.#!"632#"&'73254&267!3273'f:/@>1]�ojhQC*Hv:B%&��	.7Jbbcb�;=9wKt1�)C�1�6=17:�E�(�;u��L3(
VGG��gac'"!
KACWXF1DAN##T!gV/1<+�љ�&���An@KV"&54>35.54>35!5!##"&54632#"&5463223254#"23254#"7x�BuLu�BuL��A�>)P<;KMFDEE>)P<;KMFDjov=*'v=*'�YY9I#!YX9I#@GG�	$-1)=>'/Am	$-1)=>':G�<'�o<'an5HS!".54>75!5!##5#"&'>54'.#!"&54>32%267!32%>54&#"3NuBHvE��ahPD)Iu:A
&&��@E @:!A11?s�)C���5=17:�17F##,7gIF_1iGG��U`d'!
<):J(*"<%%<"FWw!zh.2;*%!-)"+���n.54675!5!5!###"U.N/���hQt15JF(PV0-H�GG��H*1[9���n!!#".54675��t15JF6.N/�nG�G*1[94(PV0-H���x-1G#5#"&'>54&#".546323267#5!%!!467>;#".SQP7Uw_M/% QALI5)K0PJ:34J R
�F8��-RDlY==JG6.O/'�ٴa]G6233	F	=:89#H8J\$#( GGGG��#8G+1[94(PV���x,08N%"&54632>54&#".54632.'!)##5!467>;#".�#/$'2@;/98^]GC/R3E=-T@3S%�<<��{QY�JRDlY==JG6.O/�#VA8C#FS:3@+U@Eu!'_,,H]�G��'GG��#8G+1[94(PV�Z�n9Y"&5467.54632>7>;5!5!##"3:7&54632''3267#".'&#"632&"#"
Z`&+YI!`;�ٞ1:G/PS
*+-"UF9Tj�9+P�3	2fM
[,"

),�L:/:&9?%7_GG�?5E#1 %
��)G,�##\KC9<D!�Zn>".546;5.5467>;5!5!##"3:7&54632'#"&'�2"&1!`;���1:GPT
*+-"TEU	+�&6WP<,?_GG�. 5E#1 %
����Z�n5AJ".5467&5467>;5!5!##"3:7.54632'7"&'>7327'�9V0G="`;�k��1;GPT	*+-"TE:*pY1f%�/
�� 5�})G.=R%-,?_GG�. 5E	#1 %
��0G�!�3$")��Z%n]#"&'.546?'.#"3267#"&54>32767.5467>;5!5!##"3:7&54632's*"!''/@(963$�4_;!`;��%�1:GPT
*+-"TEJ;

T)+?<0(189X9*SD,?_GG�. 5E#1 %
���Zzn3C".5467&5467>;5!5!##"3:7&54632''32>7#"&'�8T/B9"_;�uz�1:G.OT
*+-"TE9*m�C+,H;
0c%'4})G.;O%0,?_GG�>5E#1 %
��0G�1)&: 	0�ZynCVf".5467&5467>;5!5!##5#"&'>54'.+"3:7&54632'%267!3232>7#"&'�8T/B9"_;�uyhQC*Hv:B%&�:G.OT
*+-"TE9*m)C��6=17:�_C+,H;
0c%'4})G.;O%0,?_GG��^ac'">5E#1 %
��0G�!p_/1<+_1)&: 	0�Z&nf'#"&5467.54632'654&#"632&"#"3267#".5467>;5!5!##"3:7.54632�E9TjAZ`>OM<2C;&&; (
(-9+Q�4
*WI-!`<��&�0;GPT
)*-!��)G,L:#F=9K5+.&* $
D!##]J/N9,?_GG�. 5E	#1 %
�Z$nv�.+"3:7.54632'#"&5467.54632'654&#"632&"#"3267#".5467>;5!5!##5#"&'>54267!32|%&�;GPT
)*-!UE9TjAZ`>OM<2C;&&; (
(-9+Q�4
*WI-!`<��$hQC*Hv:B])C��6=17:o. 5E	#1 %
��)G,L:#F=9K5+.&* $
D!##]J/N9,?_GG��^ac'"�!p_/1<+�W*nG.'#".547.5467>;5!5!##"632&#"3:7.54632�&
<h@!(:*q��*��	2C*"@C.G#*+-
 �!F$K:;+=)(
VGG�$I7++,	#1 #3#�W�nWj.'#".547.5467>;5!5!##5#"&'>54'.#!"632&#"3:7.54632267!32�&
<h@!(:*q���hQC*Hv:B%&��	2C*"@C.G#*+-
 �)C�Vl6=17:�!F$K:;+=)(
VGG��gac'"$I7++,	#1 #3#!gV/1<+���n&8".546;4&+"&'&5467>;5!5!##5##";23d*$"$ B+3&@-;���hQ��-) S).�&,) 5!-VGG��a$!(�
1&���n:"&547.5467>;5!5!##5##"632.#"3267Uf&:*D���hQE_���	0?
&#
,>>;0Ov4PC6(<((
VGG��q4$2�#
H-)*(TD��7n7"&547.5467>;5!5!##"632.#"3267Uf&:*D�����	0?
&#
,>>;0Pv448J]PC6(<((
VGG�#
H-)*(WD<93!.n<7".5463!67>;5!5!##"632#"&'73254&#".'#�6&">1]��.n�	.7Jbbcb�;=9wKt1.:-?��*<
VGG�!
KACWXF1DAN##H06���.n&	���x;?#".5463!>54&#".546323267#5!##5#"&'!!�6&"N@/% QALI5)K0PJ:34J R
gQP7Os����*6*<(D1233	F	=:89#H8J\$#( GG�ٴUQDG���x;?#".5463!>54&#".546323267#5!##5'7.'!!�6&"N@/% QALI5)K0PJ:34J R
gQ��/�Ea����*6*<(D1233	F	=:89#H8J\$#( GG�ٴ�AaPIDG�x<@N##5#"&5467.54632'>54&#"632&"#"3267#53)!#".5463!�hQI:M_/;R?5G(=	(1#299,5J>��j/���6&"'�ٖQC2G8<O8-/)'
,# 'F)&)(+2GG�6*<Ggx48F%#"&5467.54632'>54&#"632&"#"3267!!#".5463!%[GM_/;R?5G(=	(1#299,5J�#/���6&"�,QC2G8<O8-/)'
,# 'F)&)(,yG�6*<G���x<@N'7.5467.54632'>54&#"632&"#"3267#53##5!!#".5463!�/�<G/;R?5G(=	(1#299,5J>�hQ�#/���6&"+AX
J92G8<O8-/)'
,# 'F)&)(+2GG�ٜ�G�6*<Gvn)7".5463!5!5!###"&'.546?675#�6&"[�CvhQ�'%!!TUI��)<�GG��p"EF16���x;?G#".5463!632>54&#".54632.'#"&547!)##5!�6&"'2@;/98^]GC/R3E=-T@3S%#/��K���QY*6*<>VA8C#FS:3@+U@Eu!'_,,H]#DG��'GGGn!.3"&'.546?>7&'.=#5!##52675#�/+%,OGhQ�
$F'G�
$

HB�GG���s+	%߇)0
�x<@W_##5#"&5467.54632'>54&#"632&"#"3267#53)!#".54632.#"67%327'�hQI:M_/;R?5G(=	(1#299,5J>��?Z���(`A8Y2yb4)���C0# �)'�ٖQC2G8<O8-/)'
,# 'F)&)(+2GG��",*K3V\E�43��n$0#5#"&'&'##".546;5#5!3&=#!#3267:QD/(A�*$"~��-���
2(F'�ٿ%!',�GG���)0&���n#/%7&'&'##".546;5#5!##53&=#!#3267��6 �*$"~�hQ������
1'H5d	 %!',�GG���N��)0&�n&,3267#"&'&'##".546;5#5!3&=#�
2)G$(S;(A�*$"~��2��'�)0(D(%!',�GG��mn17B>32'>54&#"#5#"&'&'##".546;5#5!3&=#!3267':#AR#H (#59Q@+(@�*$"~m�b��,()@'�SM.h2) T)/.I���%!',�GG�ſ70"�x-B235#5!##5##".'##".546;5#5!6!54&'&#".547#�%:Ƀ;gQ�.&�*$"~y�5
+/9KYixD>t�GG��%!.%!',�G
��i/2G=@���nT263267>;5!5!##"632#"&'73254&#".545&#"'67.#".54>�,I!<X>1]���n�	.7Jbbcb�;=9wKt1.:/@3.M1(++R:6:`81I�8VGG�!
KACWXF1DAN##L3?=.#.$&EK142[]55C����n&����gx-1V#5#"&'>54&#".546323267#5!%!!&#"'67.#".54>32632QP7Uw_M/% QALI5)K0PJ:34J R
���2.M3 (++R:6:`81I%/N$8O'�ٴa]G6233	F	=:89#H8J\$#( GGGG�=92&.$&EK142[]55C"-�n1=2.#"3267&'>54&'!5!##5#"&'#".5463267#�
'%
0>F@1,U><�/�hQN31N9K34U2s6=12J��I6230-)$+
/,0GG�ٳ&"'*K3V\�11*46l�w�x4@#5#"&5'%32675.''>7.546325#53>54&#"_Q3G@Ya/"#0)<F�7+[/0)M%5)UIBV-#S|@��2!%("/"'�PO%PDDC�=()!%�%9D+&H'5LI;+E �GG�6" "#6�w�x;G#5#".54632.#"32675.''>7.546325#53>54&#"_QB)1M,cQ9'3::,%<F�7+[/0)M%5)UIBV-#S|@��2!%("/"'�PL'F/HQE-,+(�%9D+&H'5LI;+E �GG�6" "#6��-x?K5!##'67.#".'.''>7.54632>32675>54&#"�`hQ5BM0(++Q:58]96V#+[/0)M%5)UIBV-#= 1=+J"7X�4".!%("/'GG��c@M.#.$&EK14/XY19D+&H'5LI;+E
#,3~666" "�x3?!"'.546?>7&''>7.546325#5!##5>54&#"B&%!7/N"qV+[/0)M%5)UIBV-#,w7MgQ�	$d!%("/"
$
&&9D+&H'5LI;+E�GG���i+�6" "#6Wn!$+!".547.=#5!##"32675#67'<Bj>=!TWhA6<L2*E(4W')l-�78L�#M?E*@/�GG�>
6&*Ld�q/7�[n3FIP!".547.=#5!##5#"&'>54'.+#"3267%267!32%5#67'<Bj>=!T[hQC)Iu:A
&&mA6<L2*E(4W')l�)B�Mv5=08:���78L�#M?E*@/�GG��_ac'!4>
6&*L� q^/1<*��q/7����Wn&!�\n#5!".5467.=#5!#5#6;'2654.'#",7hD!T\m(%0=l+�74G��HS 0!$=*F#J=)=?.�GG�#C/9G!d�r-4��=,1 *
&%,un*=@HZ!".5467.=#5!##5#"&'>54'.+%267!32%5#6;'2654.'#",7hD!TuhQC)Iu:A
&&�(%0=l�)B�3�5=08:���74G��HS 0!$=*F#J=)=?.�GG��_ac'!4#C/9G!� q^/1<*��r-4��=,1 *
&%,���\n&$���x>[%.'.54632>54&'#5!6323267#5!##5#"&'#"&'7267>54&#".547#|68cL"%	�� )K0PJ:34J R
gQP7Ej08*]!)o2)E(?5/% QAL�
4*61dX$";0G
#H8J\$#( GG�ٴA>
4n�	@-233	F	=:.*>��yx6S%.'.54632>54&'#5!6323267#"&'#"&'7267>54&#".547#|68cL"%	�� )K0PJ:33L%%aCEj08*]!)o2)E(?5/% QAL�
4*61dX$";0G
#H8I^##( C-A>
4n�	@-233	F	=:.*>���n/>J#5#"&'.'#"&'.'.54632>54&'#5!2674=#%#3267�QD/(A;(*]!)o=68cL"%	��%= �
4��
2(F'�ٿ#	
4n161dX$";0GG�		�.*>�)0&��Xn7F3267#"&'.'#"&'.'.54632>54&'#5!2674=#D
2)G$(S;(A;(*]!)o=68cL"%	��%= �
4'�)0(D(#	
4n161dX$";0GG�		�.*>���n.=I%7&'.'#"&'.'.54632>54&'#5!##52674=#%#3267ѩ6 ;(*]!)o=68cL"%	��hQ�Ώ%= �
4��
1'H5d	 #	
4n161dX$";0GG���O		�.*>�)0&���nAP[>32'>54&#"#5#"&'&'#"&'.'.54632>54&'#5!2674=#%3267p:#AR#H (#59Q@+(@;(*]!)o=68cL"%	����%= �
4
()@'�SM.h2) T)/.I���'	
4n161dX$";0GG�	�.*>�70"�)nFP.5467.5467>3!5!5!#!">;2#4&+#"'.=72>=#BY, ;)�����	6'�S Q#5%I")#L>@o�=hg;"G5#(
VGG�#?��8r+218+b	E+OW8�)os(.�)�nG".546;54&+".5467.5467>;5!5!#!">;2#5#Y0"�"�76)'VD6Ia1 ;)�M����	6'�UQo"&6.
E+LW;4>gg;"G5#(
VGG�%=���0�)/n2D.5467.5467>;5!5!##5##".546;.#"##"632Ia1 ;)���/hQ�)$"5><L'VD+��	+1_^�>gg;+C5#(
VGG�P�$"',/:=A+LW;�� bO�)!n+G.5467.5467>;5!5!##5#"&'>54#"7267##">32Ia1 ;)���!gQ?)Js9Bf�'VD�':��	7!4U29/;�>gg;"H5#(
VGG�Db\^!7~+LW;��	8+25%�)nV.5467.5467>3!5!5!#!">;2#5'67.#".54>326754&+"BY, ;)�����	6'�WP/A
!AI-K['<!#5 )#�76)#L>�=hg;"G5#(
VGG�';���	;>4%	
!*H438l=(3
E+OW8�)�nT.5467.5467>;5!5!#!">;2#5#"&54632.#"326754&+"BY, ;)��%��	6'�O 
Q;'FZZL2

%0/2+#8#�76)#L>�=hg;"G5#(
VGG� /!��VL=@KB&##"�
E+OW8���n22675!5!#'>54&#"'67.#".54>�,I!0D�*ʤ(B;'E#3,#3.M1(++R:6:`81I�-
GG�JEFt53)`7-+?=.#.$&EK142[]55C���@�n&3�����n&3������n&3'���D��LxKW2675!5!#'>54&#"'67.#".'.''>7.54632>>54&#"N,I!0D�x|�(B;'E#3,#3.M1(++R:68\:6V#+[/0)M%5)UIBV-#= 1=��!%("/"�-
GG�JEFt53)`7-+?=.#.$&EK14/XY19D+&H'5LI;+E
#,!6" "#6���n..'#"&54632>54&#"'675#5!###-7%0$( +C@2%=&=C��hQ�CQG8/#;">12.FLGG��'N
RJ>[0���n*.'#"&54632>54&#"'675#5!#-7%0$( +C@2%=&=C���CQG8/#;">12.FLGGN
RJ>[0���|�n&8�<���|�n&9�<�����n&�*6����6n&�'l*����v�n&��L�v�nHT[i%2>54&#".54675!5!##"&5467.54632.#"632&"#"4632#"&73'.#"'632(M~K.)"5:!QJ75�9˴3C2]�Rab*/ZI4
#X,"#^>�!  !Y�(�;u��2eD	CfP!F?lE/>$ 3?S40D	FGGJ
TH:nX4S@-A+<@EA 	FF(&�""!!Q��&���?<H/H%.�xD235#5!!>32'>54&#"#5##".546;54&'&#".546�%:Ȃ��:#AR#H '#69Q�*$!
+/9KYLxD>t�GG�SM.h2) T)/.I���%!',i/2G=@;5��.���x&@E�.x;235#5!#>;#"#5##".546;54&'&#".546�%:Ȃz�6'@3.5Q�*$!
+/9KYLxD>t�GG�G��%!',i/2G=@;5��.��x&BE�.���xH-5##".546;54&'&#".5463235#5!!>32'>54&#"#5�*$!
+/9KYL4%:Ȃ��:#AR#H '#69Q�+�-%!',i/2G=@;5D>t�GG�SM.h2) T)/.I��z���.�@�x&D�.��x?-5##".546;54&'&#".5463235#5!#>;#"#5
�*$!
+/9KYL4%:Ȃz�6'@3.5Q�+�,%!',i/2G=@;5D>t�GG�G�z���.�@x&F�X���q,.'#"&54632>7#"'.=3326?b#<&1$+ &1.<F&Q'7Q A6=C2O#QC(A4��*(��s�J#8���U'%>54&'.+"'&5467#5!#;2e		`.+,(���11
>)+7-('J6k8HH9o.&
*"4R���m2%>54'.+"'&546732654'7#"';2n2b,+-E3B$Q6AAD >D+7-(%L/�`%!
3D).Y'(
*"4��#53.54632#&$#"3##YYP���+�Se������mgQ'G0!SXJPel6A+G��;�#53.54632#.#"3##YYRdUs�=P5tI7<mgQ'G7HY��kg7/0G��m�#53.54632#.#"3##YYRi[}�CQ=�P<D
lgQ'G6J[��jh900G����#53.54632#&#"3##YYPta��OT��FOlgQ'G2N^���;3-G����#53.54632#&#"3##YYPzfh��8U��MVlgQ'G1O^F~U�;5,G��)�#53.54632#.#"3##YYP�mr��<W[�qU\lgQ'G1O]FTgj;6,G��]�#53.54632#.#"3##YYP�s}Υ?Yb�|\clgQ'G1P\G~Tgj:8+G����#53.54632#.#"3##YYP�y�ޱB[j�dhlgQ'G1P\H~Sfk:9+G����#53.54632#&$#"3##YYP����E\q����lgQ'G1Q[HRfkt,G����#53.54632#&$#"3##YYP�����I_x��sulgQ'G1RZI~Rel8<,G��0�#53.54632#&$#"3##YYP����Ma�թ|zlgQ'G0 SYIQel7>+G��d�#53.54632#&$#"3##YYP����Pc��ô��mgQ'G0!SXIQel7?+G�����&K��,����&L��,����&M��,����&N�:,���&O�j,��W�&P��,��~�&Q��,����&R��,����&S�,���&T�S,��8�&U��,��m�&V��,
�-#53.54632&54632.#"#&$#"3##YYP���GzYB 6&(*X������mgQ'G0!SX^MCC
B	-#!?$el6A+G����,#53.54632>32.#"#.#"3##YYRdUAk,
O6 6&(+P5tI7<mgQ'G7HY/../
B	-#!'kg7/0G����+#53.54632>32.#"#.#"3##YYRi[K{4
R: 6&(*V=�P<D
lgQ'G6J[5344
B	-#!?$jh900G��C�*#53.54632>32.#"#&#"3##YYPta[�AU@ 6&(*V��FOlgQ'G2N^B;>?
B	-#!?$�;3-G��v�*#53.54632>32.#"#&#"3##YYPzfg�GXA 6&(*V��MVlgQ'G1O^F>BB
B	-#!?$�;5,G����,#53.5463254632.#"#.#"3##YYP�mt�NXB 6&(*U[�qU\lgQ'G1O]I@CC
B	-#!?$gj;6,G����-#53.54632454632.#"#.#"3##YYP�s��TXB 6&(*Vb�|\clgQ'G1P\LCCC
B	-#!?$gj:8+G���-#53.54632&54632.#"#.#"3##YYP�y��[XB 6&(*Vj�dhlgQ'G1P\PECC
B	-#!?$fk:9+G��A�,#53.54632&54632.#"#&$#"3##YYP����aXB 6&(*Vq����lgQ'G1Q[SG

CC
B	-#!?$fkt,G��s�-#53.54632&54632.#"#&$#"3##YYP���gXB 6&(*Vx��sulgQ'G1RZVHCC
B	-#!?$el8<,G����-#53.54632&54632.#"#&$#"3##YYP���!mXB 6&(*V�թ|zlgQ'G0 SYYICC
B	-#!?$el7>+G����-#53.54632&54632.#"#&$#"3##YYP���4sXB 6&(*W��ô��mgQ'G0!SX\KCC
B	-#!?$el7?+G��
�-9#53.54632&54632.#"#&$#"3##"&54632YYP���GzYB 6&(*X������mgQc'G0!SX^MCC
B	-#!?$el6A+G�����,8#53.54632>32.#"#.#"3##"&54632YYRdUAk,
O6 6&(+P5tI7<mgQ'G7HY/../
B	-#!'kg7/0G�����+7#53.54632>32.#"#.#"3##"&54632YYRi[K{4
R: 6&(*V=�P<D
lgQI'G6J[5344
B	-#!?$jh900G���C�*6#53.54632>32.#"#&#"3##"&54632YYPta[�AU@ 6&(*V��FOlgQ�'G2N^B;>?
B	-#!?$�;3-G���v�*6#53.54632>32.#"#&#"3##"&54632YYPzfg�GXA 6&(*V��MVlgQ�'G1O^F>BB
B	-#!?$�;5,G�����,8#53.5463254632.#"#.#"3##"&54632YYP�mt�NXB!5&(+U[�qU\lgQ�'G1O]I@CC
B	-#!?$gj;6,G�����-9#53.54632454632.#"#.#"3##"&54632YYP�s��TXB 6&(*Vb�|\clgQ2'G1P\LCCC
B	-#!?$gj:8+G����-9#53.54632&54632.#"#.#"3##"&54632YYP�y��[XB 6&(*Vj�dhlgQe'G1P\PECC
B	-#!?$fk:9+G���A�,8#53.54632&54632.#"#&$#"3##"&54632YYP����aXB 6&(*Vq����lgQ�'G1Q[SG

CC
B	-#!?$fkt,G���s�-9#53.54632&54632.#"#&$#"3##"&54632YYP���gXB 6&(*Vx��sulgQ�'G1RZVHCC
B	-#!?$el8<,G�����-9#53.54632&54632.#"#&$#"3##"&54632YYP���!mXB 6&(*V�թ|zlgQ�'G0 SYYICC
B	-#!?$el7>+G�����-9#53.54632&54632.#"#&$#"3##"&54632YYP���4sXB 6&(*W��ô��mgQ0'G0!SX\KCC
B	-#!?$el7?+G������#53.#"#&546323##YYV&S>.1
P"ZObz0mgQ'Gib4,!7@@DU��G�����#53.#"#.546323##YYU0jE49
R`Um�8mgQ'Ghc6.!5<!GW��G���J�#53&#"#.546323##YYQ��@J
Tn^��IlgQ'G�92!17 L\��G������&|�D,�����&}�>,���J�&~�0,��0�*#53.#"#&54632>32.#"3##YYV&S>.2
P"[Oe@I/!5&)*mgQ'Gib4,!7@@DUI$%
B	-#

+8G����0�+#53.#"#.54632>32.#"3##YYU0jE4:
RaU>b)
N5!5&)*ggQ'Ghc6.!5<!GW,,,,
B	-#<"G���I0�*#53&#"#.54632>32.#"3##YYQ��@K
To^S�:U=!5&)*ggQ'G�92!17 L\<79:
B	-#<"G����0�*6#53.#"#&54632>32.#"3##"&54632YYV&S>.2
P"[Oe@I/!5&)*mgQ�'Gib4,!7@@DUI$%
B	-#

+8G�����0�+7#53.#"#.54632>32.#"3##"&54632YYU0jE4:
RaU>b)
N5!5&)*ggQ�'Ghc6.!5<!GW,,,,
B	-#<"G����I0�*6#53&#"#.54632>32.#"3##"&54632YYQ��@K
To^S�:U=!5&)*ggQ�'G�92!17 L\<79:
B	-#<"G��������&��=�����&��=�w��"&'732654&#"'>32�Sz7=5A.).&"$!4CIQ��WQ+)?#'#"A		N>=N���
���&�_���
���&�_���H��& ����H��& ����H�vB&!����H�vB&!����.�v-?�����vE&?�������vE&?�������v�&@�����.�v�@�����v�&@���������
632.#"4632#"&�DeO"92eD	�!  !,3V3)PK""""���@����
"&'73267%4632#"&��7\D56C[��    �'B""B'0""!!�����@����������
'"&'73267%4632#"&"&'73267��7ZD56C]��    B7X&F+,F%X�&B!!B'""!!m BB ��������b�n.:".547>;5!5!##">32#"&'73265474632#"&fD*;#:3_�s���(
=PZ^gZ�<>>�=<5:F*.
>GG�?88JHE1D32f    c�nH%2>54&#".54675!5!##"&5467.54632.#"632.#"(M~K.)#3<!QJ75�9˴3C2]�Rab

(,ZI4
#.*+"$	Y�2U6$2'
?G-)<-GG0H=1]J,G8"6$57DF3:�n#"3267#"&54>;5!5!#sK!EXC1T)(l3m�>kA
����	
#7+KYX9I#AGG�Xn&%".54>;5!5!#'2654&'#"'Hq@@nC��X�M[AoFI\:9*&AZ�%N=8I$BGGH[::I!G-0#:&12bPn.".547>;5!5!##">32#"&'732654fD*;#:3c�oPn�(
=PZ^gZ�<>>�=<5F*.
>GG�?88JHE1D32�An"-%"&54>35!5!##"&54632'23254#"6w�BuL��A�>)P<;KMFDknv=*'�YY9I#@GG�	$-1)=>':Gn<'�n -;5!##"&'#".54>32>7532654&#"326?5.#"�4D_Q6O& I./M.-P36O&:#W;"*?7%(2��6%&6:"*?'GGRRAG]&(&K61J)%!M�*-24*-23+--*-j�n22675!5!#'>54&#"'67.#".54>�2L!0F�*ʤ(B)E ,#3.M/(+D:-GT#/D�+	XGG\HA,Y62&G)*85%&/4$<*JI&/:���n.:F".547>;5!5!##">32#"&'73265474632#"&4632#"&fD*;#:3_�s���(
=PZ^gZ�<>>�=<5:�_!  !F*.
>GG�?88JHE1D32f    ��""!!�����n&���/n+#"3267#"&54>;5!5!#4632#"&sK!EXC1T)(l3m�>kA
�����!  !�	
#7+KYX9I#AGG�B""!!Xn&2%".54>;5!5!#'2654&'#"4632#"&'Hq@@nC��X�M[AoFI\:9*&AZ�!  !�%N=8I$BGGH[::I!G-0#:&12�""!!
Pn.:".547>;5!5!##">32#"&'7326544632#"&fD*;#:3c�oPn�(
=PZ^gZ�<>>�=<5�z!  !F*.
>GG�?88JHE1D32�""!!&An"-9%"&54>35!5!##"&54632'23254#"4632#"&6w�BuL��A�>)P<;KMFDknv=*'��!  !�YY9I#@GG�	$-1)=>':Gn<'�""!!����n&��������n&����x&>7.54632.'7>54&#")M%5)UIBV-#!g:&]T+[/�!%("/"+&H'5LI;+E
H
9�6" "#6�4����!"&'732654&#"'632''73�X}747^@-*+'13N�.�(u1$(S��F7375
Ca�B�� 8&1D�4�v��!"&'732654&#"'632''73�X}747^@-*+'13N�.�(u1$(S�vF7375
Ca�B�� 8&1D��v��-4632#"&"&'732654&#"'632''73�!  !$X}747^@-*+'13N�.�(u1$(S ""!!��F7375
Ca�B�� 8&1D�I��6� 73'"&54632.#"3267�I�(u;X��CMQEBcM"=._>,,+&2��'n��C51C/M.'DI	C�I�v6 73'"&54632.#"3267�I�(u;X��CMQEBcM"=._>,,+&2���'n��C51C/M.'DI	C��v6,4632#"&73'"&54632.#"3267�!  !-�(u;X��CMQEBcM"=._>,,+&2 ""!!G��'n��C51C/M.'DI	C�.����73'#"&54673267�.�(�;u�lC)OQYX:41#1!��'���
A4/OB�.�v��73'#"&54673267�.�(�;u�lC)OQYX:41#1!���'���
A4/OB��v��&4632#"&73'#"&54673267�!  !�(�;u�lC)OQYX:41#1! ""!!Y��'���
A4/OB�I�v���+73'#"'3267#"&547&54673267�I�(u;X�LC)Q 0"C)OP7YX?/+& 0"��'n��
,
?
C3"<+CB�.�v-�C%73'23267#"&5467654&#"'>7.#".54>32>�c�(u;X�8&=+)5 ;C8> 6F
#GA.IY':"::u�'nn-&0<
7,#5#7
!;+25X7$-�.�v��T%73'"'3267#"&547.5467.#"'>7.#".54>32>323267�c�(u;X�m

!'5 <B!6F
#GA.IY':"::&8&+! '5u�'nn�

;
8.

"'	#7
!;+25X7$-.%


<
�.���73'.#"'632�.�(�;u��2eD	CfP!��'���?;H/G&�.�v��73'.#"'632�.�(�;u��2eD	CfP!���&���?<H/H%��v�� 4632#"&73'.#"'632�!  !�(�;u��2eD	CfP!;""!!Q��&���?<H/H%�I����73'"&'73267�I�(�;f��Ad#L=>M"d���&~��'B!!B'����� 4632#"&73'"&'73267�!  !-�(�;f��Ad#L=>M"d*""!!=��&~��'B!!B'�X�v��"73'"&'73267"&'73267�\�(�:b��=]  I:;H!c;=[")K/0K)![ho�+iiy%??&h??��v�� .4632#"&73'"&'73267"&'73267�!  !T�(�:b��=]  I:;H!c;=[")K/0K)![*""!!%o�+iiy%??&h??���9�v��������v���������v�� �����B%"'3267#"&547.54673267jQ 0"C)OQYX?/+& /"C�"1
4&#!32
0
�.��-;'2"3267#"&5467654&#"'67.#".54>32>h8&80)5 ;C:@ 5F
#"BE+I[':"9;$&	1
-#+

.	.#*(F/%�.���I"'3267#"&547.5467&#"'67.#".54>32>323267

!%5 <B 5F
#"BE+I[':"9;&8&)$ *5�0
-%	
		.	.#*(F/%%
	
1
���M�v��[*���������:3�n����v���n4���*nB.'#".547.54676;5!5!##">32&"#"3:7&54632�@k@&*Qq��*��%=%#�.G#*'1$:8?2+"3((
 BGG�#
GJ!!. *.��<nZ"&'.546?'.#"3267#"&54>32767.5467>;5!5!##"3:3&54632'T(!''/@(963 T@P%  Z4��<�1i0/PS
*+-"=E=�N


J)+?<0(189N#

OH,?NGG�6.;"1 %	��i�g��,.54632.#"7"&54632"&'73267�SB/"(&$d2J7="$
<Gg$K$CC	B
, B'oR<CY*7L:�Vg��4632#"&53&'73267#"'�6
@715-D[GR3Tھ'B@E>^L=���&4632#"&##5353&'73267#"'3WQYY6
@715-D[GR3gT���'G�'B@E>^L=�G�����(4632#"&7#"'#"&'73267&'732674�VCU3Z;Bf"G=.31@3-1)
W"XIF?5PV=:?9
=<A9�%gX�.4632#"&.#"#".'73267&'73267#"'�(&

#9/B%+@715-D[GT�H4;7,,"B@E>^L%5�gg��'4632#"&.#"'63273267#"'`I)2""'42$9715-D[G+!T�O[&	IB@E>^L,<�Tg��64632#"&.#"'>327.#"'63273267#"'`S-+*2-F&, '42$9715-D[G+!T�(%	E
+&49EB@E>^L,<������&��([�74632#"&##53.#"#".'73267&'73267#"'3w3QYW'%

#9/B%+@715-D[GnT���'GD1;7,,"B@E>^L+G�j��04632#"&##53.#"'63273267#"'3�QYX)2!"'42$9715-D[G+!nT���'GLX%	IB@E>^L3G�W��?4632#"&##53.#"'>327.#"'63273267#"'3�QYK+**2-F&, '42$9715-D[G+!nT���'G$#
	E
+&49EB@E>^L3G���N4632#"&##53.#"#".'732632654&/.=7&'73267#"'3�.QYB)60B($
  0%
 7.F$	@715-D[GWT���'G(25085 
35B@E>^L,G�94632#"&#53.54632&'73267#"'#&$#"3##3�&YP���=x3@715-D[G)!$Ae������mgQT��G0!SXVG)]B@E>^L3el6A+G����74632#"&#53.54632&'73267#"'#.#"3##�BYRdU\G@715-D[G P5tI7<mgQT��G7HY/
B@E>^L	*7kg7/0G��"�84632#"&#53.54632&'73267#"'#.#"3##>�YRi[8a*@715-D[GQ=�P<D
lgQT��G6J[B@E>^L+5jh900G��f�74632#"&#53.54632&'73267#"'#&#"3##���YPtaI�8
@715-D[G$ T��FOlgQT��G2N^*' B@E>^L+4�;3-G����74632#"&#53.54632&'73267#"'#&#"3##���YPzfV�@
@715-D[G(#U��MVlgQT��G1O^1-(B@E>^L+5�;5,G����84632#"&#53.54632&'73267#"'#.#"3##��oYP�mi�I@715-D[G&-(W[�qU\lgQT��G1O]<6%6B@E>^L
-8gj;6,G����84632#"&#53.54632&'73267#"'#.#"3##�HYP�sp�N@715-D[G-(Yb�|\clgQT��G1P\;4$4B@E>^L+5gj:8+G���84632#"&#53.54632&'73267#"'#.#"3##9� YP�yy�S@715-D[G/)[j�dhlgQT��G1P\;3#4B@E>^L*3fk:9+G��J�74632#"&#53.54632&'73267#"'#&$#"3##f��YP����Y@715-D[G1+\q����lgQT��G1Q[=5$7B@E>^L*2fkt,G���84632#"&#53.54632&'73267#"'#&$#"3##���YP����b@715-D[G6._x��sulgQT��G1RZD:'@B@E>^L*4el8<,G����84632#"&#53.54632&'73267#"'#&$#"3##���YP���
h"@715-D[G:1a�թ|zlgQT��G0 SYH=(FB@E>^L+4el7>+G����94632#"&#53.54632&'73267#"'#&$#"3##�YYP���$p*@715-D[G# ;c��ô��mgQT��G0!SXOC*QB@E>^L2el7?+G���$n�54632#"&.5463273267#"'3###53.#"���TK,!+715-D[G

ngQYW=7(*T�#@"ASB@E>^L&1G��'Ghc1+"7��[�44632#"&#53.#"#&5463273267#"'3##wYV&S>.1
P"ZO4)3715-D[GmgQT��Gib4,!7@@DUB@E>^L%/G����[�64632#"&#53.#"#.54632'73267#"'3##wYU0jE49
R`UF7@715-D[GmgQT��Ghc6.!5<!GWB@E>^L&/G���J[�74632#"&#53&#"#.54632&'73267#"'3##wYQ��@J
Tn^Br2	@715-D[G lgQT��G�92!17 L\&#B@E>^L	(2G����g��"0&54632.#"!53%"&54632"&'73267P?TB0")%#��Q1K8*!!%
<GgHKCC	B
, B'��oR<C.+*7L:������&���g��*8&'#"&'73267632.#"7"&54632"&'73267�'(6E^"F9-1/&$50")%#d2J8*!!%	=Gg-0Y^FDIC	B
, B'oR<C.+*7L:�%g��$0=.#"#".'732632>32.#"7"&54632"&'73267�(&

#9/B%+ L5/"(&x2J7="$
<GgH4;7,,,,	B
, -VoR<CY*7L:�gg��)6.#"'632>32.#"7"&54632"&'73267�)2""'40:=*/"($|2J7="$
<GgO[&	I ($$	B
-#5MoR<CY*7L:�Tg��.:G2.#"#.#"'>327.#"'632>"&54632"&'73267C/"'%
U-+*2-F&, '4-@
=�2J7="$
<G�	B
-#@&(%	E
+&49E!(%$�R<CY*7L:������&����(��&����j��&����W��&�������&N�-9F#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���@xSB/"(&$X������mgQ�2J7="$
<G'G0!SXXI
CC	B
, B'el6A+G���R<CY*7L:4�+7D#53.54632>32.#"#.#"3##"&54632"&'73267YYRdUxUI1/"(&P5tI7<mgQL2J7="$
<K'G7HYR*(	B
, 1@kg7/0G���R<CY*7L:e�+7D#53.54632>32.#"#.#"3##"&54632"&'73267YYRi[Gu1
N40"(&#U=�P<D
lgQ}2K8=!%
<G'G6J[/-/-	B
, B'jh900G���R<CY*7L:��*6C#53.54632>32.#"#&#"3##"&54632"&'73267YYPtaV�>N=/"(&$V��FOlgQ�2J7="$
<G'G2N^;689	B
, B'�;3-G���R<CY*7L:��*6D#53.54632>32.#"#&#"3##"&54632"&'73267YYPzfb�FP>/#(&$U��MVlgQ�2J8* "$
=G'G1O^?9<<	B
, B'�;5,G���R<C.+*7L:�+7E#53.54632>32.#"#.#"3##"&54632"&'73267YYP�mn�KS@0#(%#U[�qU\lgQ22J8*!!%	=G'G1O]B;>?	B
, B'gj;6,G���R<C.+*7L:N�+7E#53.54632>32.#"#.#"3##"&54632"&'73267YYP�s|�RSA/#(%#Vb�|\clgQe2J8* "$
=G'G1P\F>BB	B
, B'gj:8+G���R<C.+*7L:��,8E#53.5463254632.#"#.#"3##"&54632"&'73267YYP�y��YSB/"(&$Vj�dhlgQ�2J7="$
<G'G1P\J@CC	B
, B'fk:9+G���R<CY*7L:��,8F#53.54632454632.#"#&$#"3##"&54632"&'73267YYP����_SB0#(%#Vq����lgQ�2J8* "$
=G'G1Q[MBCC	B
, B'fkt,G���R<C.+*7L:��-9G#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���fTB0#(%#Vx��sulgQ�2J8*!!%	=F'G1RZPCCC	B
, B'el8<,G���R<C.+*7L:�-9G#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���lTA0#(%#V�թ|zlgQ02J8*!!$
=G'G0 SYSE		CC	B
, B'el7>+G���R<C.+*7L:K�-9G#53.54632&54632.#"#&$#"3##"&54632"&'73267YYP���-qSB/"(&$W��ô��mgQc2J7* "$
<G'G0!SXUGCC	B
, B'el7?+G���R<C.+*7L:�$��,8F#53.#"#.54632>32.#"3##"&54632"&'73267YYS>5(*PTK,=A- ."('rgQ�1K8*!!%
<G'Ggd1+"7#@"AS'!"	B	-#0BG���R<C.+*7L:����)5B#53.#"#&54632>32&#"3##"&54632"&'73267YYV&S>.2
P"[OeAD0-!")%mgQ�1K8=!%
<G'Gib4,!7@@DUI$%	B-#

+8G���R<CY*7L:����+7D#53.#"#.54632>32.#"3##"&54632"&'73267YYU0jE4:
RaU>b)
I5 -")%ggQ�1K8=!%
<G'Ghc6.!5<!GW,,,,	B	,"!<"G���R<CY*7L:�I��*6C#53&#"#.54632>32.#"3##"&54632"&'73267YYQ��@K
To^S�:S:0")%ggQ�1K8=!%
<G'G�92!17 L\<79:	B
-#<"G���R<CY*7L:�I����,%73'"'3267#"&547.54673267�I�Kj;X��Q 0"C)OQYX?/+& /"Cy�&mn"1
4&#!32
0
�,��+�8>%73"3267#"&5467654&#"'67.#".546?67�I�Kj080)5 ;C:@ 5F
#"BE+I[�n3*"-y�$"&	1
-#+

.	.#*(F/ 
UF�,����FL"'3267#"&547.5467&#"'67.#".5467'73326767

!%5 <B 5F
#"BE+I[�Kj1)$ *5�n3*"-�0
-%	
		.	.#*(F/ 
y�& 
	
1
F����734632#"&�k[$%%$����%%$  s���333�osn�����"kx7#537#53733733#3##7##%7#�}���"F!�"E"~���"F#�"E���B�A����A�B����9��x%/"&546323#254#""&54632'254#"�GJELHKF"M�NKK&""�HIELIIEMKK&""`UV^^VU`_��Nvu:;:<��aTV__VTaAtv;;::s���3�o���D�['@
&54673�KFELQDIHF�g���fj�����m;�[@
654'3<DHGFRKFFK�j��mg�����eI%�7'7'37'�v��d�
�xWVMT�^6��6^�/��2a�$#53533##スI��II��I�.��t>73.a
0�;�45~71#R3#1��RRH���y74632#"&H$%%$6%%$  *�Z�A3#1R��SA�0����
"&54>32'2654&#"sp-dRtq-eSK@@KK>>
ít�W��s�XL��������W[�!467'73H/�I�*e!;<��6/��?>54&#"'>32!!/�1E&@3.K"2'g@^n,M2�P�CL�5TR19>&:#1fY7b`5�Q(����)"&'532654&+532654&#"'>32�5_)+b.ZSdVAAPTC74P$-%lDilUEVZ�
SKBB<JK<39!=+dMHW
YG^w�
%!533##=4>5#U��D\hhVɠN�#Q��%QG4��@���� "&'532654&#"'!!>32�2\ =BMWVRC,Q��7Ag=�
TJOGI	PQ�/]Ep7����-".54>32.#"3>32'2654&#" Aj>(FmN1+BU1H:\oue;I@A,B$ @
D�k>xkS/L.Oh:#0qho�KPUDO'; +T7,��!5!#�����_yQG�}4����'3"&5467.54>32>54&#"2654&'kuQ90C8\57[7I7&E,9dB/B=64=A/EFIM=?A
gYI[U@9L&&L:AR5G0<X0�=5233279��B70G$L64A4����-"&'532>7##"&546322>54.#"�0+BV0I:\oudBi>(Fm,B$ ?0:JA
L.Oh:#0rgp�D�k=ykS/['<,S7PUDOU���&"&54632"&54632�$$$$$$$$� $&&$ �T $&&$ ,��&"&54632#>7�$$$$
0C� $&&$ ��5~7;�42M�85%
2��g1�N��N2���!!!!2�=�=�II2M�87-52g���=���N�1�G����+754>7>54&#"'>324632#"&�% '96(J"(\/[i/#!$[$$$$�&72*0"/:G`V+@6)(	�&&$  l�Z.@3#3#l�rr�@F��F*�Z�@3#*RR@�6�Z�@3#53#6qq��`ZF�	�3##�2�N��O�=g�����b���!!��aZD,�ZQ@26=467.=4&#,<?aI)0j460)Ia?<r)1�KAH.�b
:3�.H@K�1)�Z2@3#�HH@�6�Z[@"5>=475&=4&'53[<>aJ*/jj/*Ja><()1�K@H.�cc�.HAK�1)2��6323267#".'.#"21H (%(<0I '$'<O5

"O5

"(�W!!(��\WR(�W!!(��hWRR���'>73Y/C�5~7<�4Q���#>7�
0C�5~7;�3S���'>733'>73Z/C[/C�5~7<�45~7<�4Q���#>7##>7�
0C[
0C�5~7;�35~7;�3H���z#"&54632!"&54632!"&54632�$$$$��$$$$�$$$$ $&&$  $&&$  $&&$ Es�'7'77�2��3��3��2�3��3��2��22_�."&54632!!"&54632!!!!��=�!!!!� "" MI� "" ��1#RH�n3&'.+5!#3##'7326767#H�+&B����	TT�f�
,12��$
GG(H?O��G"��������&x1x�{�������&�y�������.�&�z�����c����&�x�4���K����&�y�#���W����&�z�+��� ����&�{����A����&�|�-���F����&�y�������&w"y�������C&�2��7��
6%�&����$6�I'�����$����&�������,��'����\�W.#"'>54.54632~&%*$^YY?SG,E�15P��|DmCK_Ui��[QX �R�r�7'7'37'�Gpu>uqH433�a7 vv 7akk���x4@#"&54675.''>7.546325#53#3267>54&#"�C)KU00B�:+[/0)M%5)UIBV-#*q4@�g:42 /"�>!%("/"�
O?)D�	%9D+&H'5LI;+E�GG��B,!"-6" "#6���HN�&�J3�g�,8.#"#".'732632654&/.=7'4632#"&�+60B($
  0%
 7.F$)1!  !g-25085 
35,31�""""�g��F4632#"&.#"#".'732632654&/.=7&'73267#"'+�+60B($
  0%
 7.F$	@715-D[GT�-25085 
35B@E>^L1��gD�%;.'&/.5<?>32.#"#.#"#".'732632�*7/F#

P7!5&(*�*7/B($
  1%
g315..
B	-#!?$-250<9��gD�%;G.'&/.5<?>32.#"#.#"#".'73263274632#"&�*7/F#

P7!5&(*�*7/B($
  1%
�g315..
B	-#!?$-250<9m��g��$:FS&'&/.5<?>32.#"#.#"#".'7326327"&54632"&'73267�07/F#
L6/"(&$�*7/B($
  1%
�2J7="$
<Gg7;15-,	B
, B'-250<9oR<CY*7L:n:!632>32'>54&#"#".5467.#"#".54675#5��YtPa,#G>P
.6&"L27%.${nGCA<1R45_'E*2? 2(8##U(8&
PG�h�n<G!632#"&54632#".54>;.#"#".54675#52654&#"��/*&OyDV;jA;3
JIJEseIqAK�XiQ)(*$$2�8G##,nGW0aH
(996:%(3MM2CW1\@EX*MGS&*!
eG��#-'(<n#4##5#"&'>54.#"#".54675#5267!632<hQ@&Hv:B'>%)(*$$2&=�M*&by17:nG��^ac'"	S&*!
eG�sW=J1<+&�4j	��
M
{�"Q	�
0y�
��
-;�K
	h	�	�	6�	")	_	 �	D�	*%		(g	
`�	>9	<�	
"�	4�		v]	"'	�Copyright 2015-2021 Google LLC. All Rights Reserved.Copyright 2015-2021 Google LLC. All Rights Reserved.Noto SansNoto SansRegularRegular2.007;GOOG;NotoSans-Regular2.007;GOOG;NotoSans-RegularNoto Sans RegularNoto Sans RegularVersion 2.007Version 2.007NotoSans-RegularNotoSans-RegularNoto is a trademark of Google LLC.Noto is a trademark of Google LLC.Monotype Imaging Inc.Monotype Imaging Inc.Monotype Design TeamMonotype Design TeamDesigned by Monotype design team, Irene Vlachou.Designed by Monotype design team, Irene Vlachou.http://www.google.com/get/noto/http://www.google.com/get/noto/http://www.monotype.com/studiohttp://www.monotype.com/studioThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFLhttp://scripts.sil.org/OFLhttp://scripts.sil.org/OFLiota adscriptiota adscriptAccented Greek SCAccented Greek SCTitling Alternates I and J for titling and all cap settingsTitling Alternates I and J for titling and all cap settingsflorin symbolflorin symbol�j2R	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a����������������	���
����������bc�d�e�������f����g�����h���jikmln�oqprsutvw�xzy{}|��~�����
��� !"#��$%&'()*+,-./0123��456789:;<=>?@AB��CDEFGHIJKLMNOPQ��RSTUVWXYZ[����\]^_`abcdefghijklmnopq�rstu��vwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~������������������������������������������������������������������������������������������������������������������������������������������������												
			
																			 	!	"	#	$	%	&	'	(	)	*	+	,	-	.	/	0	1	2	3	4	5	6	7	8	9	:	;	<	=�	>	?	@	A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	[	\	]	^	_	`	a	b	c	d	e	f	g	h	i	j	k	l	m	n	o	p	q	r	s	t	u	v	w	x	y	z	{	|�	}	~		�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�









	























 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������









	























 
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgNULLCRuni00A0uni00AD	overscoreuni00B2uni00B3uni00B5uni00B9AmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflex
Cdotaccent
cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve
Edotaccent
edotaccentEogonekeogonekEcaronecaronGcircumflexgcircumflex
Gdotaccent
gdotaccentuni0122uni0123HcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJijJcircumflexjcircumflexuni0136uni0137kgreenlandicLacutelacuteuni013Buni013CLcaronlcaronLdotldotNacutenacuteuni0145uni0146NcaronncaronnapostropheEngengOmacronomacronObreveobreve
Ohungarumlaut
ohungarumlautRacuteracuteuni0156uni0157RcaronrcaronSacutesacuteScircumflexscircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring
Uhungarumlaut
uhungarumlautUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacute
Zdotaccent
zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188Dtailuni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191fhookuni0193
Gammalatinuni0195	Iotalatinuni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornUpsilonlatinuni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9
Aringacute
aringacuteAEacuteaeacuteOslashacuteoslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217uni0218uni0219uni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236uni0237uni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240Glottalstopcasedglottalstopcaseduni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269iotaserifeduni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BBuni02BCuni02BDuni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8	macronmodacutemodgravemoduni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EAuni02EBuni02ECuni02EDuni02EEuni02EFuni02F0uni02F1uni02F2uni02F3uni02F4uni02F5uni02F6uni02F7uni02F8uni02F9uni02FAuni02FBuni02FCuni02FDuni02FEuni02FF	gravecomb	acutecombuni0302	tildecombuni0304uni0305uni0306uni0307uni0308
hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni034Funi0350uni0351uni0352uni0353uni0354uni0355uni0356uni0357uni0358uni0359uni035Auni035Buni035Cuni035Duni035Euni035Funi0360uni0361uni0362uni0363uni0364uni0365uni0366uni0367uni0368uni0369uni036Auni036Buni036Cuni036Duni036Euni036Funi0370uni0371uni0372uni0373uni0374uni0375uni0376uni0377uni037Auni037Buni037Cuni037Duni037Euni037Ftonos
dieresistonos
Alphatonos	anoteleiaEpsilontonosEtatonos	IotatonosOmicrontonosUpsilontonos
OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsiuni03A9IotadieresisUpsilondieresis
alphatonosepsilontonosetatonos	iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhouni03C2sigmatauupsilonphichipsiomegaiotadieresisupsilondieresisomicrontonosupsilontonos
omegatonosuni03CFuni03D0uni03D1uni03D2uni03D3uni03D4uni03D5uni03D6uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0460uni0461uni0462uni0463uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471uni0472uni0473uni0474uni0475uni0476uni0477uni0478uni0479OmegaroundcyomegaroundcyOmegatitlocyomegatitlocyOtcyotcyuni0480uni0481uni0482uni0483uni0484uni0485uni0486uni0487uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048Funi0490uni0491uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8uni04D9uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni0512uni0513uni0514uni0515uni0516uni0517uni0518uni0519uni051Auni051Buni051Cuni051Duni051Euni051Funi0520uni0521uni0522uni0523uni0524uni0525uni0526uni0527Enlefthookcyuni0529uni052Auni052Buni052Cuni052Duni052Euni052Fbinducandradevacandrabindudevaanusvaradevavisargadeva
ashortdevaadevaaadevaidevaiidevaudevauudevarvocalicdevalvocalicdevaecandradeva
eshortdevaedevaaidevaocandradeva
oshortdevaodevaaudevakadevakhadevagadevaghadevangadevacadevachadevajadevajhadevanyadevattadevatthadevaddadevaddhadevannadevatadevathadevadadevadhadevanadevannnadevapadevaphadevabadevabhadevamadevayadevaradevarradevaladevalladevallladevavadevashadevassadevasadevahadevaoevowelsigndevaooevowelsigndeva	nuktadevaavagrahadevaaavowelsigndevaivowelsigndevaiivowelsigndevauvowelsigndevauuvowelsigndevarvocalicvowelsigndevarrvocalicvowelsigndevaecandravowelsigndevaeshortvowelsigndevaevowelsigndevaaivowelsigndevaocandravowelsigndevaoshortvowelsigndevaovowelsigndevaauvowelsigndeva
viramadevauni094Eawvowelsigndevaomdeva
udattadevaanudattadevauni0953uni0954candralongevowelsigndevauevowelsigndevauuevowelsigndevaqadevakhhadevaghhadevazadeva	dddhadevarhadevafadevayyadeva
rrvocalicdeva
llvocalicdevalvocalicvowelsigndevallvocalicvowelsigndeva	dandadevadbldandadevazerodevaonedevatwodeva	threedevafourdevafivedevasixdeva	sevendeva	eightdevaninedevaabbreviationsigndevauni0971acandradevaoedevaooedevaawdevauedevauuedevamarwariddadevazhadevaheavyyadeva	gabardeva	jabardevauni097D
ddabardeva	babardevauni1AB0uni1AB1uni1AB2uni1AB3uni1AB4uni1AB5uni1AB6uni1AB7uni1AB8uni1AB9uni1ABAuni1ABBuni1ABCuni1ABDuni1ABE
wbelowcombwturnedbelowcombveroundedcydelongleggedcy	onarrowcyeswidecytetallcytethreeleggedcyhardsigntallcy	yattallcy
ukunblendedcyuni1CD0uni1CD1uni1CD2uni1CD3uni1CD4uni1CD5uni1CD6uni1CD7uni1CD8uni1CD9uni1CDAuni1CDBuni1CDCuni1CDDuni1CDEuni1CDFuni1CE0uni1CE1uni1CE2uni1CE3uni1CE4uni1CE5uni1CE6uni1CE7uni1CE8uni1CE9uni1CEAuni1CEBuni1CECuni1CEDuni1CEEuni1CEFuni1CF0uni1CF1uni1CF2uni1CF3uni1CF4uni1CF5uni1CF6uni1CF8uni1CF9uni1D00uni1D01aeturnedBbarredsmalluni1D04uni1D05Ethsmalluni1D07eturnedopeniturneduni1D0Auni1D0BLstrokesmalluni1D0DNreversedsmalluni1D0F
Oopensmall	osideways
osidewaysopenoslashsidewaysoeturneduni1D15otophalfobottomhalfuni1D18RreversedsmallRturnedsmalluni1D1Buni1D1C	usidewaysudieresissidewaysmsidewaysturneduni1D20uni1D21uni1D22Ezhsmallspirantvoicedlaryngealuni1D25uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2CAEmoduni1D2E
Bbarredmoduni1D30uni1D31Ereversedmoduni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3ANreversedmoduni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43
aturnedmoduni1D45aeturnedmoduni1D47uni1D48uni1D49uni1D4Aeopenmodeturnedopenmoduni1D4D
iturnedmoduni1D4Funi1D50uni1D51uni1D52oopenmodotophalfmodobottomhalfmoduni1D56uni1D57uni1D58usidewaysmod
mturnedmoduni1D5Buni1D5Cuni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni1D6Buni1D6Cuni1D6Duni1D6Euni1D6Funi1D70uni1D71uni1D72uni1D73uni1D74uni1D75uni1D76uni1D77uni1D78uni1D79uni1D7Aiotaserifedstrokeuni1D7Cuni1D7DUsmallstrokeuni1D7Funi1D80uni1D81uni1D82uni1D83uni1D84uni1D85uni1D86uni1D87uni1D88uni1D89uni1D8Auni1D8Buni1D8Cuni1D8Duni1D8Euni1D8Funi1D90uni1D91uni1D92uni1D93uni1D94uni1D95uni1D96uni1D97uni1D98uni1D99uni1D9Auni1D9Buni1D9Cuni1D9Duni1D9Eereversedopenmoduni1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5iotaserifedmodiotaserifedstrokemoduni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1phimodlatinuni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1DC0uni1DC1uni1DC2uni1DC3uni1DC4uni1DC5uni1DC6uni1DC7uni1DC8uni1DC9uni1DCAuni1DCBuni1DCCuni1DCDuni1DCEuni1DCFuni1DD0uni1DD1uni1DD2uni1DD3uni1DD4uni1DD5uni1DD6uni1DD7uni1DD8uni1DD9uni1DDAuni1DDBuni1DDCuni1DDDuni1DDEuni1DDFuni1DE0uni1DE1uni1DE2uni1DE3uni1DE4uni1DE5uni1DE6uni1DE7uni1DE8uni1DE9uni1DEAuni1DEBuni1DECuni1DEDuni1DEEuni1DEFuni1DF0uni1DF1uni1DF2uni1DF3uni1DF4uni1DF5kavykaaboverightcmbkavykaaboveleftcmbdotaboveleftcmbwideinvertedbridgebelowcmbdeletionmarkcmbuni1DFCuni1DFDuni1DFEuni1DFFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute	Wdieresis	wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1E9Cuni1E9Duni1E9Euni1E9Funi1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1EFAuni1EFBuni1EFCuni1EFDuni1EFEuni1EFFuni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200Buni200Cuni200Duni200Euni200Funi2010uni2011
figuredashuni2015uni2016
underscoredbl
quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2028uni2029uni202Auni202Buni202Cuni202Duni202Euni202Funi2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B	exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni205Funi2060uni2061uni2062uni2063uni2064uni2066uni2067uni2068uni2069uni206Auni206Buni206Cuni206Duni206Euni206Funi2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni2090uni2091uni2092uni2093uni2094uni2095uni2096uni2097uni2098uni2099uni209Auni209Buni209Cuni20A0
colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9uni20AAdongEurouni20ADuni20AEuni20AFuni20B0uni20B1uni20B2uni20B3uni20B4uni20B5uni20B6uni20B7uni20B8uni20B9uni20BAuni20BBuni20BCuni20BDuni20BEuni20BFuni20F0uni2100uni2101uni2102uni2103uni2104uni2105uni2106uni2107uni2108uni2109uni210Auni210Buni210Cuni210Duni210Euni210Funi2110uni2111uni2112uni2113uni2114uni2115uni2116uni2117weierstrassuni2119uni211Auni211Buni211Cuni211Dprescriptionuni211Funi2120uni2121uni2123uni2124uni2125uni2126uni2127uni2128uni2129uni212Auni212Buni212Cuni212D	estimateduni212Funi2130uni2131uni2132uni2133uni2134uni2135uni2136uni2137uni2138uni2139uni213Auni213Buni213Cuni213Duni213Euni213Funi2140uni2141uni2142uni2143uni2144uni2145uni2146uni2147uni2148uni2149uni214Auni214Buni214Cuni214Duni214Euni214Funi2150uni2151uni2152uni2153uni2154uni2155uni2156uni2157uni2158uni2159uni215A	oneeighththreeeighthsfiveeighthsseveneighthsuni215Funi2184uni2189
minus.devauni25CCuni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C6Duni2C6Euni2C6Funi2C70uni2C71uni2C72uni2C73uni2C74uni2C75uni2C76uni2C77uni2C78uni2C79uni2C7Auni2C7Buni2C7Cuni2C7Duni2C7Euni2C7Fbecombcyvecombcy	ghecombcydecombcy	zhecombcyzecombcykacombcyelcombcyemcombcyencombcyocombcypecombcyercombcyescombcytecombcyhacombcy	tsecombcy	checombcy	shacombcyshchacombcy
fitacombcy
estecombcyacombcyiecombcydjervcombcymonographukcombcy	yatcombcyyucombcyiotifiedacombcylittleyuscombcybigyuscombcyiotifiedbigyuscombcyuni2E00uni2E01uni2E02uni2E03uni2E04uni2E05uni2E06uni2E07uni2E08uni2E09uni2E0Auni2E0Buni2E0Cuni2E0Duni2E0Euni2E0Funi2E10uni2E11uni2E12uni2E13uni2E14uni2E15uni2E16uni2E17uni2E18uni2E19uni2E1Auni2E1Buni2E1Cuni2E1Duni2E1Euni2E1Funi2E20uni2E21uni2E22uni2E23uni2E24uni2E25uni2E26uni2E27uni2E28uni2E29uni2E2Auni2E2Buni2E2Cuni2E2Duni2E2Euni2E2Funi2E30uni2E31uni2E32uni2E33uni2E34uni2E35uni2E36uni2E37uni2E38uni2E39uni2E3Auni2E3Buni2E3Cuni2E3Duni2E3Euni2E3Funi2E40uni2E41uni2E42dashwithupturnleft
suspensiondblkavykainvertedlow kavykawithkavykaaboveinvertedlow	kavykalowkavykawithdotlowstackedcommadbl
solidusdottedtripledagger
medievalcommaparagraphuspunctuselevatuscornishversedividercrosspattyrightcrosspattyleftTironiansignetuniA640uniA641uniA642uniA643
Dzereversedcy
dzereversedcyuniA646uniA647uniA648uniA649
Ukmonographcy
ukmonographcyOmegabroadcyomegabroadcyYerneutralcyyerneutralcy
Yerubackyercy
yerubackyercy
Yatiotifiedcy
yatiotifiedcyYureversedcyyureversedcyIotifiedacyuniA657YusclosedlittlecyyusclosedlittlecyYusblendedcyyusblendedcyYusiotifiedclosedlittlecyyusiotifiedclosedlittlecyuniA65EuniA65F
Tsereversedcy
tsereversedcyDesoftcydesoftcyElsoftcyelsoftcyEmsoftcyemsoftcyOmonocularcyomonocularcyObinocularcyobinocularcyOdoublemonocularcyodoublemonocularcyuniA66EuniA66FuniA670uniA671uniA672uniA673uniA674uniA675uniA676uniA677uniA678uniA679uniA67AuniA67BuniA67CuniA67DuniA67EuniA67FuniA680uniA681uniA682uniA683uniA684uniA685uniA686uniA687uniA688uniA689TewithmiddlehookcyuniA68BuniA68CuniA68DuniA68EuniA68FuniA690uniA691uniA692uniA693uniA694uniA695uniA696uniA697	Odoublecy	odoublecy
Ocrossedcy
ocrossedcyuniA69CuniA69DuniA69EuniA69FuniA700uniA701uniA702uniA703uniA704uniA705uniA706uniA707uniA708uniA709uniA70AuniA70BuniA70CuniA70DuniA70EuniA70FuniA710uniA711uniA712uniA713uniA714uniA715uniA716uniA717uniA718uniA719uniA71AuniA71BuniA71CuniA71DuniA71EuniA71FuniA720uniA721uniA722uniA723uniA724uniA725uniA726uniA727uniA728uniA729uniA72AuniA72BuniA72CuniA72DuniA72EuniA72FuniA730uniA731uniA732uniA733uniA734uniA735uniA736uniA737uniA738uniA739uniA73AuniA73BuniA73CuniA73DuniA73EuniA73FuniA740uniA741uniA742uniA743uniA744uniA745uniA746uniA747uniA748uniA749uniA74AuniA74BuniA74CuniA74DuniA74EuniA74FuniA750uniA751uniA752uniA753uniA754uniA755uniA756uniA757uniA758uniA759uniA75AuniA75B
RumrotundauniA75DuniA75EuniA75FuniA760uniA761uniA762uniA763uniA764uniA765uniA766uniA767uniA768uniA769uniA76AuniA76BuniA76CuniA76DuniA76EuniA76FuniA770uniA771uniA772uniA773uniA774uniA775uniA776uniA777uniA778uniA779uniA77AuniA77BuniA77CuniA77DuniA77EuniA77FuniA780uniA781uniA782uniA783uniA784uniA785uniA786uniA787uniA788uniA789uniA78AuniA78BuniA78CuniA78DuniA78EuniA78FuniA790uniA791uniA792uniA793cpalatalhookhpalatalhook	Bflourish	bflourishFstrokefstroke	Aevolapuk	aevolapuk	Oevolapuk	oevolapuk	Uevolapuk	uevolapukuniA7A0uniA7A1uniA7A2uniA7A3uniA7A4uniA7A5uniA7A6uniA7A7uniA7A8uniA7A9uniA7AA
EreversedopenuniA7ACuniA7ADIotaserifedQsmalluniA7B0uniA7B1uniA7B2uniA7B3uniA7B4uniA7B5uniA7B6uniA7B7Ustrokeuni1D7EAglottalaglottalIglottaliglottalUglottaluglottal
Wanglicana
wanglicanaCpalatalhookShookZpalatalhook
Dmiddlestroke
dmiddlestroke
Smiddlestroke
smiddlestrokeHalfhturnedhalfhturneduniA7F7uniA7F8uniA7F9uniA7FAuniA7FBuniA7FCuniA7FDuniA7FEuniA7FFuniA830uniA831uniA832uniA833uniA834uniA835uniA836uniA837uniA838uniA839uniA8E0uniA8E1uniA8E2uniA8E3uniA8E4uniA8E5uniA8E6uniA8E7uniA8E8uniA8E9uniA8EAuniA8EBuniA8ECuniA8EDuniA8EEuniA8EFuniA8F0uniA8F1uniA8F2uniA8F3uniA8F4uniA8F5uniA8F6uniA8F7uniA8F8uniA8F9uniA8FAuniA8FBuniA8FCuniA8FDaydevaayvowelsigndevauniA92EuniAB30uniAB31uniAB32uniAB33uniAB34uniAB35uniAB36uniAB37uniAB38uniAB39uniAB3AuniAB3BuniAB3CuniAB3DuniAB3EuniAB3FuniAB40uniAB41uniAB42uniAB43uniAB44uniAB45uniAB46uniAB47uniAB48uniAB49uniAB4AuniAB4BuniAB4CuniAB4DuniAB4EuniAB4FuniAB50uniAB51uniAB52uniAB53uniAB54uniAB55uniAB56uniAB57uniAB58uniAB59uniAB5AuniAB5BuniAB5CuniAB5DuniAB5EuniAB5Fsakhayat	iotifiedeoeopenuouniAB64uniAB65dzdigraphretroflexhooktsdigraphretroflexhookrmiddletildeturned
wturnedmodlefttackmodrighttackmodf_ff_f_if_f_llongs_ts_tuniFE00uniFE20uniFE21uniFE22uniFE23uniFE24uniFE25uniFE26uniFE27uniFE28uniFE29uniFE2AuniFE2BuniFE2CuniFE2DuniFE2EuniFE2FuniFEFFuniFFFCuniFFFDEng.alt1Eng.alt2Eng.alt3uni030103060308uni030003060308uni030103040308uni030003040308uni013B.loclMAHuni0145.loclMAHAogonek.loclNAVEogonek.loclNAVIogonek.loclNAVUogonek.loclNAVI.saltIJ.saltIacute.saltIbreve.saltuni01CF.saltIcircumflex.saltuni0208.saltIdieresis.saltuni1E2E.saltIdotaccent.saltuni1ECA.saltIgrave.saltuni1EC8.saltuni020A.saltImacron.saltIogonek.saltIogonek_loclNAV.saltItilde.saltuni1E2C.saltJ.saltJcircumflex.saltuni01C7.saltuni01CA.saltuni013C.loclMAHuni0146.loclMAHaogonek.loclNAVeogonek.loclNAVuogonek.loclNAV	i_sc.saltiacute_sc.saltibreve_sc.salticircumflex_sc.saltidieresis_sc.saltidotaccent_sc.saltigrave_sc.salt
ij_sc.saltimacron_sc.saltiogonek_sc.saltitilde_sc.salt	j_sc.saltjcircumflex_sc.salta.sc	aacute.sc	abreve.scacircumflex.scadieresis.sc	agrave.sc
amacron.sc
aogonek.scaring.sc
aringacute.sc	atilde.scae.sc
aeacute.scb.scc.sc	cacute.sc	ccaron.scccedilla.scccircumflex.sc
cdotaccent.scd.sceth.sc	dcaron.sc	dcroat.sce.sc	eacute.sc	ebreve.sc	ecaron.scecircumflex.scedieresis.sc
edotaccent.sc	egrave.sc
emacron.sc
eogonek.scf.scg.sc	gbreve.scgcircumflex.sc
uni0123.sc
gdotaccent.sch.schbar.schcircumflex.sci.sc	iacute.sc	ibreve.scicircumflex.scidieresis.sci.loclTRK.sc	igrave.scij.sc
imacron.sc
iogonek.sc	itilde.scj.scjcircumflex.sck.sc
uni0137.scl.sc	lacute.sc	lcaron.sc
uni013C.scldot.sc	lslash.scm.scn.sc	nacute.sc	ncaron.sc
uni0146.sceng.sc	ntilde.sco.sc	oacute.sc	obreve.scocircumflex.scodieresis.sc	ograve.scohungarumlaut.sc
omacron.sc	oslash.scoslashacute.sc	otilde.scoe.scp.scthorn.scq.scr.sc	racute.sc	rcaron.sc
uni0157.scs.sc	sacute.sc	scaron.scscedilla.scscircumflex.sc
uni0219.sc
germandbls.sct.sctbar.sc	tcaron.sc
uni0163.sc
uni021B.scu.sc	uacute.sc	ubreve.scucircumflex.scudieresis.sc	ugrave.scuhungarumlaut.sc
umacron.sc
uogonek.scuring.sc	utilde.scv.scw.sc	wacute.scwcircumflex.scwdieresis.sc	wgrave.scx.scy.sc	yacute.scycircumflex.scydieresis.sc	ygrave.scz.sc	zacute.sc	zcaron.sc
zdotaccent.scuniA7F7.saltuni0406.saltuni0407.saltuni0408.saltuni04C0.saltuni0431.loclSRBuni04CF.salt	Iota.saltIotatonos.saltIotadieresis.saltuni1D35.saltuni1D36.salt	zero.tosfone.tosftwo.tosf
three.tosf	four.tosf	five.tosfsix.tosf
seven.tosf
eight.tosf	nine.tosfzero.osfone.osftwo.osf	three.osffour.osffive.osfsix.osf	seven.osf	eight.osfnine.osfzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lf
zero.slash	zero.dnomone.dnomtwo.dnom
three.dnom	four.dnom	five.dnomsix.dnom
seven.dnom
eight.dnom	nine.dnom	zero.numrone.numrtwo.numr
three.numr	four.numr	five.numrsix.numr
seven.numr
eight.numr	nine.numrparenleft.sc
parenright.scbraceleft.sc
braceright.scbracketleft.scbracketright.sc	exclam.sc
exclamdown.scquestion.scquestiondown.scexclamdbl.scguilsinglleft.scguilsinglright.sc
fhook.ss03summationDoubleStruck.miruni02E502E502E9uni02E502E502E6uni02E502E502E8uni02E502E502E7uni02E502E9uni02E502E902E5uni02E502E902E9uni02E502E902E6uni02E502E902E8uni02E502E902E7uni02E502E6uni02E502E602E5uni02E502E602E9uni02E502E602E6uni02E502E602E8uni02E502E602E7uni02E502E8uni02E502E802E5uni02E502E802E9uni02E502E802E6uni02E502E802E8uni02E502E802E7uni02E502E7uni02E502E702E5uni02E502E702E9uni02E502E702E6uni02E502E702E8uni02E502E702E7uni02E902E5uni02E902E502E5uni02E902E502E9uni02E902E502E6uni02E902E502E8uni02E902E502E7uni02E902E902E5uni02E902E902E6uni02E902E902E8uni02E902E902E7uni02E902E6uni02E902E602E5uni02E902E602E9uni02E902E602E6uni02E902E602E8uni02E902E602E7uni02E902E8uni02E902E802E5uni02E902E802E9uni02E902E802E6uni02E902E802E8uni02E902E802E7uni02E902E7uni02E902E702E5uni02E902E702E9uni02E902E702E6uni02E902E702E8uni02E902E702E7uni02E602E5uni02E602E502E5uni02E602E502E9uni02E602E502E6uni02E602E502E8uni02E602E502E7uni02E602E9uni02E602E902E5uni02E602E902E9uni02E602E902E6uni02E602E902E8uni02E602E902E7uni02E602E602E5uni02E602E602E9uni02E602E602E8uni02E602E602E7uni02E602E8uni02E602E802E5uni02E602E802E9uni02E602E802E6uni02E602E802E8uni02E602E802E7uni02E602E7uni02E602E702E5uni02E602E702E9uni02E602E702E6uni02E602E702E8uni02E602E702E7uni02E802E5uni02E802E502E5uni02E802E502E9uni02E802E502E6uni02E802E502E8uni02E802E502E7uni02E802E9uni02E802E902E5uni02E802E902E9uni02E802E902E6uni02E802E902E8uni02E802E902E7uni02E802E6uni02E802E602E5uni02E802E602E9uni02E802E602E6uni02E802E602E8uni02E802E602E7uni02E802E802E5uni02E802E802E9uni02E802E802E6uni02E802E802E7uni02E802E7uni02E802E702E5uni02E802E702E9uni02E802E702E6uni02E802E702E8uni02E802E702E7uni02E702E5uni02E702E502E5uni02E702E502E9uni02E702E502E6uni02E702E502E8uni02E702E502E7uni02E702E9uni02E702E902E5uni02E702E902E9uni02E702E902E6uni02E702E902E8uni02E702E902E7uni02E702E6uni02E702E602E5uni02E702E602E9uni02E702E602E6uni02E702E602E8uni02E702E602E7uni02E702E8uni02E702E802E5uni02E702E802E9uni02E702E802E6uni02E702E802E8uni02E702E802E7uni02E702E702E5uni02E702E702E9uni02E702E702E6uni02E702E702E8ampersand.sc
uni0308.sc
uni0307.scgravecomb.scacutecomb.sc
uni030B.sc
uni0302.sc
uni030C.sc
uni0306.sc
uni030A.sctildecomb.sc
uni0304.sc
uni0328.sc	macron.sc
idotlesscyjedotlesscyiogonekdotlessjstrokedotlessjcrossedtaildotlessjmoddotless
yotdotlessisubscriptdotlessiretroflexhookdotlessistrokemoddotlessjcrossedtailmoddotlessitildebelowdotlessidotbelowdotlessistrokedotlessimoddotlessiitalicDoubleStruckdotlessjitalicDoubleStruckdotlessjsubscriptdotless
uni1FBC.ad
uni1F88.ad
uni1F89.ad
uni1F8A.ad
uni1F8B.ad
uni1F8C.ad
uni1F8D.ad
uni1F8E.ad
uni1F8F.ad
uni1FCC.ad
uni1F98.ad
uni1F99.ad
uni1F9A.ad
uni1F9B.ad
uni1F9C.ad
uni1F9D.ad
uni1F9E.ad
uni1F9F.ad
uni1FFC.ad
uni1FA8.ad
uni1FA9.ad
uni1FAA.ad
uni1FAB.ad
uni1FAC.ad
uni1FAD.ad
uni1FAE.ad
uni1FAF.aduni037F.saltuni1F38.saltuni1F39.saltuni1F3A.saltuni1F3B.saltuni1F3C.saltuni1F3D.saltuni1F3E.saltuni1F3F.saltuni1FDA.saltuni1FDB.saltuni03B1030603130300uni03B1030603130301uni03B1030603140300uni03B1030603140301uni03B1030403130300uni03B1030403130301uni03B1030403140300uni03B1030403140301uni03B9030803060300uni03B9030803060301uni03B9030803040300uni03B9030803040301uni03B9030603130300uni03B9030603130301uni03B9030603140300uni03B9030603140301uni03B9030403130300uni03B9030403130301uni03B9030403140300uni03B9030403140301uni03C5030803060300uni03C5030803040300uni03C5030803040301uni03C5030603130300uni03C5030603130301uni03C5030603140300uni03C5030603140301uni03C5030403130300uni03C5030403130301uni03C5030403140300uni03C5030403140301uni03D0.altphi.saltalpha.scbeta.scgamma.scdelta.sc
epsilon.sczeta.sceta.sctheta.sciota.sckappa.sc	lambda.sc
uni03BC.scnu.scxi.sc
omicron.scpi.scrho.sc
uni03C2.scsigma.sctau.sc
upsilon.scphi.scchi.scpsi.scomega.sciotatonos.sciotadieresis.sciotadieresistonos.scupsilontonos.scupsilondieresis.scupsilondieresistonos.scomicrontonos.sc
omegatonos.sc
alphatonos.scepsilontonos.scetatonos.sc
uni03D7.sc
uni1F00.sc
uni1F01.sc
uni1F02.sc
uni1F03.sc
uni1F04.sc
uni1F05.sc
uni1F06.sc
uni1F07.sc
uni1F70.sc
uni1F71.sc
uni1FB6.sc
uni1FB0.sc
uni1FB1.sc
uni1FB3.sc
uni1FB2.sc
uni1FB4.sc
uni1F80.sc
uni1F81.sc
uni1F82.sc
uni1F83.sc
uni1F84.sc
uni1F85.sc
uni1F86.sc
uni1F87.sc
uni1FB7.sc
uni1F10.sc
uni1F11.sc
uni1F12.sc
uni1F13.sc
uni1F14.sc
uni1F15.sc
uni1F72.sc
uni1F73.sc
uni1F20.sc
uni1F21.sc
uni1F22.sc
uni1F23.sc
uni1F24.sc
uni1F25.sc
uni1F26.sc
uni1F27.sc
uni1F74.sc
uni1F75.sc
uni1FC6.sc
uni1FC3.sc
uni1FC2.sc
uni1FC4.sc
uni1F90.sc
uni1F91.sc
uni1F92.sc
uni1F93.sc
uni1F94.sc
uni1F95.sc
uni1F96.sc
uni1F97.sc
uni1FC7.sc
uni1F30.sc
uni1F31.sc
uni1F32.sc
uni1F33.sc
uni1F34.sc
uni1F35.sc
uni1F36.sc
uni1F37.sc
uni1F76.sc
uni1F77.sc
uni1FD6.sc
uni1FD0.sc
uni1FD1.sc
uni1FD2.sc
uni1FD3.sc
uni1FD7.sc
uni1F40.sc
uni1F41.sc
uni1F42.sc
uni1F43.sc
uni1F44.sc
uni1F45.sc
uni1F78.sc
uni1F79.sc
uni1FE4.sc
uni1FE5.sc
uni1F50.sc
uni1F51.sc
uni1F52.sc
uni1F53.sc
uni1F54.sc
uni1F55.sc
uni1F56.sc
uni1F57.sc
uni1F7A.sc
uni1F7B.sc
uni1FE6.sc
uni1FE0.sc
uni1FE1.sc
uni1FE2.sc
uni1FE3.sc
uni1FE7.sc
uni1F60.sc
uni1F61.sc
uni1F62.sc
uni1F63.sc
uni1F64.sc
uni1F65.sc
uni1F66.sc
uni1F67.sc
uni1F7C.sc
uni1F7D.sc
uni1FF6.sc
uni1FF3.sc
uni1FF2.sc
uni1FF4.sc
uni1FA0.sc
uni1FA1.sc
uni1FA2.sc
uni1FA3.sc
uni1FA4.sc
uni1FA5.sc
uni1FA6.sc
uni1FA7.sc
uni1FF7.sc
uni1FB3.sc.ad
uni1FB2.sc.ad
uni1FB4.sc.ad
uni1F80.sc.ad
uni1F81.sc.ad
uni1F82.sc.ad
uni1F83.sc.ad
uni1F84.sc.ad
uni1F85.sc.ad
uni1F86.sc.ad
uni1F87.sc.ad
uni1FB7.sc.ad
uni1FC3.sc.ad
uni1FC2.sc.ad
uni1FC4.sc.ad
uni1F90.sc.ad
uni1F91.sc.ad
uni1F92.sc.ad
uni1F93.sc.ad
uni1F94.sc.ad
uni1F95.sc.ad
uni1F96.sc.ad
uni1F97.sc.ad
uni1FC7.sc.ad
uni1FF3.sc.ad
uni1FF2.sc.ad
uni1FF4.sc.ad
uni1FA0.sc.ad
uni1FA1.sc.ad
uni1FA2.sc.ad
uni1FA3.sc.ad
uni1FA4.sc.ad
uni1FA5.sc.ad
uni1FA6.sc.ad
uni1FA7.sc.ad
uni1FF7.sc.adiotatonos.sc.ss06iotadieresis.sc.ss06iotadieresistonos.sc.ss06upsilontonos.sc.ss06upsilondieresis.sc.ss06upsilondieresistonos.sc.ss06omicrontonos.sc.ss06omegatonos.sc.ss06alphatonos.sc.ss06epsilontonos.sc.ss06etatonos.sc.ss06uni1F00.sc.ss06uni1F01.sc.ss06uni1F02.sc.ss06uni1F03.sc.ss06uni1F04.sc.ss06uni1F05.sc.ss06uni1F06.sc.ss06uni1F07.sc.ss06uni1F70.sc.ss06uni1F71.sc.ss06uni1FB6.sc.ss06uni1FB0.sc.ss06uni1FB1.sc.ss06uni1FB3.sc.ss06uni1FB2.sc.ss06uni1FB4.sc.ss06uni1F80.sc.ss06uni1F81.sc.ss06uni1F82.sc.ss06uni1F83.sc.ss06uni1F84.sc.ss06uni1F85.sc.ss06uni1F86.sc.ss06uni1F87.sc.ss06uni1FB7.sc.ss06uni1F10.sc.ss06uni1F11.sc.ss06uni1F12.sc.ss06uni1F13.sc.ss06uni1F14.sc.ss06uni1F15.sc.ss06uni1F72.sc.ss06uni1F73.sc.ss06uni1F20.sc.ss06uni1F21.sc.ss06uni1F22.sc.ss06uni1F23.sc.ss06uni1F24.sc.ss06uni1F25.sc.ss06uni1F26.sc.ss06uni1F27.sc.ss06uni1F74.sc.ss06uni1F75.sc.ss06uni1FC6.sc.ss06uni1FC3.sc.ss06uni1FC2.sc.ss06uni1FC4.sc.ss06uni1F90.sc.ss06uni1F91.sc.ss06uni1F92.sc.ss06uni1F93.sc.ss06uni1F94.sc.ss06uni1F95.sc.ss06uni1F96.sc.ss06uni1F97.sc.ss06uni1FC7.sc.ss06uni1F30.sc.ss06uni1F31.sc.ss06uni1F32.sc.ss06uni1F33.sc.ss06uni1F34.sc.ss06uni1F35.sc.ss06uni1F36.sc.ss06uni1F37.sc.ss06uni1F76.sc.ss06uni1F77.sc.ss06uni1FD6.sc.ss06uni1FD0.sc.ss06uni1FD1.sc.ss06uni1FD2.sc.ss06uni1FD3.sc.ss06uni1FD7.sc.ss06uni1F40.sc.ss06uni1F41.sc.ss06uni1F42.sc.ss06uni1F43.sc.ss06uni1F44.sc.ss06uni1F45.sc.ss06uni1F78.sc.ss06uni1F79.sc.ss06uni1FE4.sc.ss06uni1FE5.sc.ss06uni1F50.sc.ss06uni1F51.sc.ss06uni1F52.sc.ss06uni1F53.sc.ss06uni1F54.sc.ss06uni1F55.sc.ss06uni1F56.sc.ss06uni1F57.sc.ss06uni1F7A.sc.ss06uni1F7B.sc.ss06uni1FE6.sc.ss06uni1FE0.sc.ss06uni1FE1.sc.ss06uni1FE2.sc.ss06uni1FE3.sc.ss06uni1FE7.sc.ss06uni1F60.sc.ss06uni1F61.sc.ss06uni1F62.sc.ss06uni1F63.sc.ss06uni1F64.sc.ss06uni1F65.sc.ss06uni1F66.sc.ss06uni1F67.sc.ss06uni1F7C.sc.ss06uni1F7D.sc.ss06uni1FF6.sc.ss06uni1FF3.sc.ss06uni1FF2.sc.ss06uni1FF4.sc.ss06uni1FA0.sc.ss06uni1FA1.sc.ss06uni1FA2.sc.ss06uni1FA3.sc.ss06uni1FA4.sc.ss06uni1FA5.sc.ss06uni1FA6.sc.ss06uni1FA7.sc.ss06uni1FF7.sc.ss06uni1FB3.sc.ad.ss06uni1FB2.sc.ad.ss06uni1FB4.sc.ad.ss06uni1F80.sc.ad.ss06uni1F81.sc.ad.ss06uni1F82.sc.ad.ss06uni1F83.sc.ad.ss06uni1F84.sc.ad.ss06uni1F85.sc.ad.ss06uni1F86.sc.ad.ss06uni1F87.sc.ad.ss06uni1FB7.sc.ad.ss06uni1FC3.sc.ad.ss06uni1FC2.sc.ad.ss06uni1FC4.sc.ad.ss06uni1F90.sc.ad.ss06uni1F91.sc.ad.ss06uni1F92.sc.ad.ss06uni1F93.sc.ad.ss06uni1F94.sc.ad.ss06uni1F95.sc.ad.ss06uni1F96.sc.ad.ss06uni1F97.sc.ad.ss06uni1FC7.sc.ad.ss06uni1FF3.sc.ad.ss06uni1FF2.sc.ad.ss06uni1FF4.sc.ad.ss06uni1FA0.sc.ad.ss06uni1FA1.sc.ad.ss06uni1FA2.sc.ad.ss06uni1FA3.sc.ad.ss06uni1FA4.sc.ad.ss06uni1FA5.sc.ad.ss06uni1FA6.sc.ad.ss06uni1FA7.sc.ad.ss06uni1FF7.sc.ad.ss06anoteleia.sc
tonos.caseuni1FBF.caseuni1FBD.caseuni1FFE.caseuni1FDD.caseuni1FCE.caseuni1FDE.caseuni1FCF.caseuni1FDF.caseuni1FED.caseuni1FEE.caseuni1FC1.caseuni1FEF.caseuni1FFD.caseuni1FC0.caseuni1FCD.casetonos.scdieresistonos.sc
uni1FBF.sc
uni1FBD.sc
uni1FFE.sc
uni1FCD.sc
uni1FDD.sc
uni1FCE.sc
uni1FDE.sc
uni1FCF.sc
uni1FDF.sc
uni1FED.sc
uni1FEE.sc
uni1FC1.sc
uni1FEF.sc
uni1FFD.sc
uni1FC0.scnullCR_1space_1	uni02BC_1ashortnuktadeva
anuktadevaaanuktadeva
inuktadevaiinuktadeva
unuktadevauunuktadevarvocalicnuktadevalvocalicnuktadevaecandranuktadevaeshortnuktadeva
enuktadevaainuktadevaocandranuktadevaoshortnuktadeva
onuktadevaaunuktadevarrvocalicnuktadevallvocalicnuktadevaacandranuktadevaghanuktadevanganuktadevacanuktadevachanuktadevajhanuktadevanyanuktadevattanuktadeva
tthanuktadevannanuktadevatanuktadevathanuktadevadanuktadevadhanuktadevapanuktadevabanuktadevabhanuktadevamanuktadevalanuktadevavanuktadevashanuktadevassanuktadevasanuktadevahanuktadeva	kassadeva	janyadevarephdeva	vattudeva
kaprehalfdevakhaprehalfdeva
gaprehalfdevaghaprehalfdevangaprehalfdeva
caprehalfdevachaprehalfdeva
japrehalfdevajhaprehalfdevanyaprehalfdevattaprehalfdevatthaprehalfdevaddaprehalfdevaddhaprehalfdevannaprehalfdeva
taprehalfdevathaprehalfdeva
daprehalfdevadhaprehalfdeva
naprehalfdeva
paprehalfdevaphaprehalfdeva
baprehalfdevabhaprehalfdeva
maprehalfdeva
yaprehalfdeva
raprehalfdeva
laprehalfdevallaprehalfdeva
vaprehalfdevashaprehalfdevassaprehalfdeva
saprehalfdeva
haprehalfdevazhaprehalfdevaheavyyaprehalfdevakassaprehalfdevajanyaprehalfdevakanuktaprehalfdevakhanuktaprehalfdevaganuktaprehalfdevaghanuktaprehalfdevanganuktaprehalfdevacanuktaprehalfdevachanuktaprehalfdevajanuktaprehalfdevajhanuktaprehalfdevanyanuktaprehalfdevattanuktaprehalfdevatthanuktaprehalfdevaddanuktaprehalfdevaddhanuktaprehalfdevannanuktaprehalfdevatanuktaprehalfdevathanuktaprehalfdevadanuktaprehalfdevadhanuktaprehalfdevananuktaprehalfdevapanuktaprehalfdevaphanuktaprehalfdevabanuktaprehalfdevabhanuktaprehalfdevamanuktaprehalfdevayanuktaprehalfdevalanuktaprehalfdevallanuktaprehalfdevavanuktaprehalfdevashanuktaprehalfdevassanuktaprehalfdevasanuktaprehalfdevahanuktaprehalfdevakaradeva	kharadevagaradeva	gharadeva	ngaradevacaradeva	charadevajaradeva	jharadeva	nyaradeva	ttaradeva
ttharadeva	ddaradeva
ddharadeva	nnaradevataradeva	tharadevadaradeva	dharadevanaradevaparadeva	pharadevabaradeva	bharadevamaradevayaradevararadevalaradeva	llaradevavaradeva	sharadeva	ssaradevasaradevaharadevamarwariddaradeva	zharadeva
heavyyaradevakassaradevajanyaradeva
kanuktaradevakhanuktaradeva
ganuktaradevaghanuktaradevanganuktaradeva
canuktaradevachanuktaradeva
januktaradevajhanuktaradevanyanuktaradevattanuktaradevatthanuktaradevaddanuktaradevaddhanuktaradevannanuktaradeva
tanuktaradevathanuktaradeva
danuktaradevadhanuktaradeva
nanuktaradeva
panuktaradevaphanuktaradeva
banuktaradevabhanuktaradeva
manuktaradeva
yanuktaradeva
ranuktaradeva
lanuktaradevallanuktaradeva
vanuktaradevashanuktaradevassanuktaradeva
sanuktaradeva
hanuktaradevakaraprehalfdevakharaprehalfdevagaraprehalfdevagharaprehalfdevangaraprehalfdevangaraprehalfUIdevacaraprehalfdevacharaprehalfdevajaraprehalfdevajharaprehalfdevanyaraprehalfdevattaraprehalfdevattaraprehalfUIdevattharaprehalfdevattharaprehalfUIdevaddaraprehalfdevaddaraprehalfUIdevaddharaprehalfdevaddharaprehalfUIdevannaraprehalfdevataraprehalfdevatharaprehalfdevadaraprehalfdevadharaprehalfdevanaraprehalfdevaparaprehalfdevapharaprehalfdevabaraprehalfdevabharaprehalfdevamaraprehalfdevayaraprehalfdevararaprehalfdevalaraprehalfdevallaraprehalfdevavaraprehalfdevasharaprehalfdevassaraprehalfdevasaraprehalfdevaharaprehalfdevazharaprehalfdevaheavyyaraprehalfdevakassaraprehalfdevajanyaraprehalfdevakanuktaraprehalfdevakhanuktaraprehalfdevaganuktaraprehalfdevaghanuktaraprehalfdevanganuktaraprehalfdevacanuktaraprehalfdevachanuktaraprehalfdevajanuktaraprehalfdevajhanuktaraprehalfdevanyanuktaraprehalfdevattanuktaraprehalfdevatthanuktaraprehalfdevaddanuktaraprehalfdevaddhanuktaraprehalfdevannanuktaraprehalfdevatanuktaraprehalfdevathanuktaraprehalfdevadanuktaraprehalfdevadhanuktaraprehalfdevananuktaraprehalfdevapanuktaraprehalfdevaphanuktaraprehalfdevabanuktaraprehalfdevabhanuktaraprehalfdevamanuktaraprehalfdevayanuktaraprehalfdevalanuktaraprehalfdevallanuktaraprehalfdevavanuktaraprehalfdevashanuktaraprehalfdevassanuktaraprehalfdevasanuktaraprehalfdevahanuktaraprehalfdevahaudeva	hauUIdevahauudeva
hauuUIdevaharvocalicdevaharrvocalicdevahanuktaudeva
hanuktauudevahanuktarvocalicdevahanuktarrvocalicdeva	haraudevaharauUIdeva
harauudevaharauuUIdevaraudevarauudevadaudevadauudevadarvocalicdeva	daraudeva
darauudevadararvocalicdevaranuktaudeva
ranuktauudevadanuktaudeva
danuktauudevadanuktarvocalicdeva
dddhaudevadddhauudevarhaudeva	rhauudevaoevowelsignanusvaradevaoevowelsignrephdevaoevowelsignrephanusvaradevaooevowelsignanusvaradevaooevowelsignrephdevaooevowelsignrephanusvaradevaiivowelsignanusvaradevaiivowelsignrephdevaiivowelsignrephanusvaradevaecandravowelsignanusvaradevaecandravowelsignrephdevaecandravowelrephanusvaradevaeshortvowelsignanusvaradevaeshortvowelsignrephdevaeshortvowelsignrephanusvaradeevowelsignanusvaradevaevowelsignrephdevaevowelsignrephanusvaradevaaivowelsignanusvaradevaaivowelsignrephdevaaivowelsignrephanusvaradevaocandravowelsignanusvaradevaocandravowelsignrephdevaocandravowelrephanusvaradevaoshortvowelsignanusvaradevaoshortvowelsignrephdevaoshortvowelsignrephanusvaradevaovowelsignanusvaradevaovowelsignrephdevaovowelsignrephanusvaradevaauvowelsignanusvaradevaauvowelsignrephdevaauvowelsignrephanusvaradevaawvowelsignanusvaradevaawvowelsignrephdevaawvowelsignrephanusvaradevarephanusvaradevaashortanusvaradevaiianusvaradevaecandraanusvaradevaeshortanusvaradevaaianusvaradevaocandraanusvaradevaoshortanusvaradeva
oanusvaradevaauanusvaradevaacandraanusvaradevaoeanusvaradevaooeanusvaradevaawanusvaradevaashortnuktaanusvaradevaiinuktaanusvaradevaecandranuktaanusvaradevaeshortnuktaanusvaradevaainuktaanusvaradevaocandranuktaanusvaradevaoshortnuktaanusvaradevaonuktaanusvaradevaaunuktaanusvaradevaacandranuktaanusvaradevakatadeva	kashadeva
khashadeva	ngagadeva	ngamadeva	ngayadevacacadeva	cachadevacacharadeva	chayadevajajadeva	jaddadeva	nyajadeva
ttattadevattattauudevattatthadeva
ttatthauudeva	ttayadevatthatthadeva
tthayadevaddaddhadeva
ddaddadevaddaddauudeva	ddayadevaddarayadevaddhaddhadeva
ddhayadevatatadevatataprehalfdeva	tathadeva	tashadeva	daghadevadagadevadabadeva	dabhadevadavadeva
davayadeva	dadhadevadadhayadevadadadeva
dadayadevadamadevadayadevadayaprehalfdeva	naddadevanaddaradeva	nathadevanatharadeva	nadhadevanadhaprehalfdevanadharadevananadeva	nashadevapanadeva	badhadevamapadeva
maparadevamapaprehalfdeva	maphadeva	mabhadeva	laddadevaladdaradeva	lathadevavayadeva	shacadeva	shavadeva	shaladeva	shanadeva
ssattadevassattayadevassattaradevassatthadeva
ssatthayadeva
ssattharadeva	sathadevasathaprehalfdevasapadevasapaprehalfdeva
saparadeva	saphadeva	hannadevahanadevahamadevahayadevahaladevahavadeva	ladevaMARlanuktadevaMARlaradevaMARlanuktaradevaMARshaladevaMAR
shadevaMARshaprehalfdevaMARshanuktadevaMARshanuktaprehalfdevaMARchaprehalfdevaNEPchanuktaprehalfdevaNEPcharaprehalfdevaNEPchanuktaraprehalfdevaNEP
jhadevaNEPjhanuktadevaNEPjhaprehalfdevaNEPjhanuktaprehalfdevaNEPjharadevaNEPjhanuktaradevaNEPjharaprehalfdevaNEPjhanuktaraprehalfdevaNEPfivedevaNEPeightdevaNEPninedevaNEPivowelsign00devaivowelsign01devaivowelsign02devaivowelsign03devaivowelsign04devaivowelsign05devaivowelsign06devaivowelsign07devaivowelsign08devaivowelsign09devaivowelsign10devaivowelsign11devaivowelsignanusvaradevaivowelsignanusvara01devaivowelsignanusvara02devaivowelsignanusvara03devaivowelsignanusvara04devaivowelsignanusvara05devaivowelsignanusvara06devaivowelsignanusvara07devaivowelsignanusvara08devaivowelsignanusvara09devaivowelsignanusvara10devaivowelsignanusvara11devaivowelsignrephdevaivowelsignreph01devaivowelsignreph02devaivowelsignreph03devaivowelsignreph04devaivowelsignreph05devaivowelsignreph06devaivowelsignreph07devaivowelsignreph08devaivowelsignreph09devaivowelsignreph10devaivowelsignreph11devaivowelsignrephanusvaradevaivowelsignrephanusvara01devaivowelsignrephanusvara02devaivowelsignrephanusvara03devaivowelsignrephanusvara04devaivowelsignrephanusvara05devaivowelsignrephanusvara06devaivowelsignrephanusvara07devaivowelsignrephanusvara08devaivowelsignrephanusvara09devaivowelsignrephanusvara10devaivowelsignrephanusvara11deva
dummymarkdevaiivowelsign1devaiivowelsign2devaiivowelsign3devaiivowelsignanusvara1devaiivowelsignanusvara2devaiivowelsignanusvara3devaiivowelsignreph1devaiivowelsignreph2devaiivowelsignreph3devaiivowelsignrephanusvara1devaiivowelsignrephanusvara2devaiivowelsignrephanusvara3devauvowelsignnuktadevauvowelsignnuktaleftdevauvowelsignnarrowdevauuvowelsignnuktadevauuvowelsignnuktaleftdevarvocalicvowelsignnuktadevarvocalicvowelsignnuktaleftdevarrvocalicvowelsignnuktadevarrvocalicvowelsignnuktaleftdevalvocalicvowelsignleftdevalvocalicvowelsignnuktadevalvocalicvowelsignnuktaleftdevallvocalicvowelsignnuktadevallvocalicvowelsignleftdevallvocalicvowelsignnuktaleftdevaviramanuktadevauevowelsignnuktadevauevowelsignnuktaleftdevauuevowelsignnuktadevauuevowelsignnuktaleftdeva
ngaaltdeva
chaaltdeva
ttaaltdevatthaaltdeva
ddaaltdevaddhaaltdeva
llaaltdevalaaltdevaMARnganuktaaltdevachanuktaaltdevattanuktaaltdevatthanuktaaltdevadddhaaltdeva
rhaaltdevalllaaltdevalanuktaaltdevaMARshaprehalfaltdeva
vattuudeva
vattuulowdevavattuulownuktadevavattuuudevavattuuulowdevavattuuulownuktadevavatturvocalicdevavatturvocaliclowdevavatturvocaliclownuktadevavatturrvocalicdevavattulvocalicdevavattullvocalicdevavattuviramadevavattuviramalowdevavattuviramalownuktadevavattuuevowellowdevavattuuevowellownuktadevavattuuuevowellowdevavattuuuevowellownuktadevauvowelsignlowdevauuvowelsignlowdevarvocalicvowelsignlowdevarrvocaliclowdevalvocalicvowelsignlowdevallvocalicvowelsignlowdeva
viramalowdevauevowelsignlowdevauuevowelsignlowdevadadaaltdevadabhaaltdevarephcandrabindudevaoevowelsigncandrabindudevaooevowelsigncandrabindudevaecandravowelsigncandrabindudevaeshortvowelsigncandrabindudevaevowelsigncandrabindudevaaivowelsigncandrabindudevaocandravowelsigncandrabindudevaoshortvowelsigncandrabindudevaovowelsigncandrabindudevaauvowelsigncandrabindudevaawvowelsigncandrabindudevaivowelsigncandrabindudevaivowelsigncandrabindu01devaivowelsigncandrabindu02devaivowelsigncandrabindu03devaivowelsigncandrabindu04devaivowelsigncandrabindu05devaivowelsigncandrabindu06devaivowelsigncandrabindu07devaivowelsigncandrabindu08devaivowelsigncandrabindu09devaivowelsigncandrabindu10devaivowelsigncandrabindu11devaiivowelcandrabindudevaiivowelcandrabindu1devaiivowelcandrabindu2devaiivowelcandrabindu3devaoevowelsignrephcandrabindudevaooevowelsignrephcandrabindudevaecandravowelrephcandrabindudevaeshortvowelrephcandrabindudevaevowelsignrephcandrabindudevaaivowelsignrephcandrabindudevaocandravowelrephcandrabindudevaoshortvowelrephcandrabindudevaovowelsignrephcandrabindudevaauvowelsignrephcandrabindudevaawvowelsignrephcandrabindudevaivowelsignrephcandrabindudevaivowelsignrephcandrabindu01devaivowelsignrephcandrabindu02devaivowelsignrephcandrabindu03devaivowelsignrephcandrabindu04devaivowelsignrephcandrabindu05devaivowelsignrephcandrabindu06devaivowelsignrephcandrabindu07devaivowelsignrephcandrabindu08devaivowelsignrephcandrabindu09devaivowelsignrephcandrabindu10devaivowelsignrephcandrabindu11devaiivowelsignrephcandrabindudevaiivowelsignrephcandrabindu1devaiivowelsignrephcandrabindu2devaiivowelsignrephcandrabindu3devavatturrvocalicUIdevavattulvocalicUIdevavattullvocalicUIdevaexclam.deva
quotedbl.devanumbersign.devapercent.devaquotesingle.devaparenleft.devaparenright.deva
asterisk.deva	plus.deva
comma.devahyphen.devaperiod.deva
slash.deva	zero.devaone.devatwo.deva
three.deva	four.deva	five.devasix.deva
seven.deva
eight.deva	nine.deva
colon.devasemicolon.deva	less.deva
equal.devagreater.deva
question.devabracketleft.devabackslash.devabracketright.devaasciicircum.devaunderscore.devabraceleft.devabar.devabraceright.devaasciitilde.devanbspace.devaendash.devaemdash.devaquoteleft.devaquoteright.devaquotedblleft.devaquotedblright.deva
ellipsis.deva
multiply.devadivide.deva	uni2010_1uni20B9.devaone_onedeva	two_udevathree_kadeva
one_radeva
two_radevathree_radevafour_radevafive_radevatwo_avagrahadevatwo_uni1CD0	vi_radevavisarga_uni1CE2visarga_uni1CE4visarga_uni1CE5visarga_uni1CE8uni1CE1.alt	uni20F0_1sharvocalicdevaayanusvaradevaayanusvaravowelsigndevaayvowelsigncandrabindudevaayvowelsignrephdevaayvowelsignrephanusvaradevaayvowelsignrephcandrabindudevamarwariddaddadevamarwariddaddhadevamarwariddayadeva�����n��34/045����
%&)**+-.45<=>?@A\]jkklmnvwyzz{������������������_`��	@	A	A	B	�	�	�	�
g
h
h
i
l
m
v
w
�
�
�
�vw������������������������

�vw����������������23347889?@@AGHVWz{{|~��������������������������67ABEFFGGHIJNOQB&4---
;w
;w��(����!"%**..//0234?@wy{{|�������������w���������������{{������������7AGGJN��h�����
 #%)  +##,&3-bg;jjAlmBbbDjjEopFt�H��]��h��i��k	�	�l	�	��
m
t�
�
����������*-.1u}��	���

!"!"#$%%'3'044]a9hi>`a@cnBq�N��v��w	�	�x
h
h�
m
v�
�
��������-���'()*+,-./0123juwz{|}�������������	�	�	�	�	�	�	�
p
��DFLT&cyrl\dev2
devazgrek�latn��
"#$%+-./123457MKD FSRB z��
"#$%+,-./0123457��
"#$%+-./123457��
"#$%+-./123457MAR 0NEP P��

!&()*��

!&()*��
!'()*MAR .NEP L��!&(*6��!&(*6��!'(*6��	
"#$%+,-./0123457.APPHdCAT �IPPH�MAH MOL 4NAV hROM ���
"#$%+,-./0123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
"#$%+-./123457��
 "#$%+-./1234578aaltRabvsZakhnlblwfrblwfxblws~c2sc�case�ccmp�ccmp�cjct�cjct�dnom�frac�half�half�half�half�haln�liga�lnum�locl�locllocl
locllocllocl locl&locl,locl2locl8locl>loclDnuktJnumrPonumVordn\pnumbpreshpresppstsxrkrf�rphf�rtlm�salt�sinf�smcp�ss03�ss04�ss06�ss07�subs�sups�tnum�vatu�zero�FHKLMO1?4��������$&AB9:;<78�' �.�/�	
0#!CEDE���352(+%:*8+6,4-"=>?)�PX`hpx���������������� (2:BLT\dlt|����������������$,4<DLT\dlt|����������������$,4<DLT\dlt|����������������$,4<DLT\dlt|����������������$,4<DLT\dlt|�< 0p��,J\n�����"&�� (,4Vrz�����@v#4(v)
)>)B)F)J*8+�,�,�,�/�/�/�4x4�4�4�8�<b?�B�E�H�L�PTP�P�R&RBU�WWbX�Y�ZZZ$Z�^�^�^�edh�ln�q�tLwy�|8
��� �v����H���������������@�������l�4���������4������������������������������8�@�H�P�X�`�v�������b�f�J�d�@�@�R�V������������L���������¤¾�����z�~ĦŤ�D�
���239=GHM]_efxz{���������239=GHz{���������
��*&(/)-06D>AB:kqmovpt�����y�*&(/)-06D>ABVQST:kqmovpt�����y�++''4477855;;<<EE??CC@@JJIILKKOONNZXRW\^^``aaccddgghhjssnnrrww||~~}}��������������������������������..11uu	����[
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�cQ	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�����
�
�����
�
�
�
�
��������
���

%&'()*%&'()*-./01234-./01234DEFGHIJKTUVWXYTUVWXY^_`abcde_acenopqrstunopqrstu+,56LMZ[fgvw !"# !"#;<=>?@AB;<=>?@AB|}~����|}~����$98:7C+,568OPQRNSOPijkl\]hmijfg]zy{x�Z[vwy���
��
�
�
��bi,F� !"#$����������`$$'-035@BBGLVW"Z`$bb+ee,ss-��.��;��B��a��m��q��~�����������������������!�$%�(5�8B�VV�������������������������

�,,�aa�vv�������������AA�CG�IM�OT�Va�cd
fln���&��/��0��2��567mm8||9��:<66=DD>HH?��@$C==IggJijK��M��O�L�R[�_f�lx|����� ��!	�	�"	�	�#	�	�%dd&��'(P\-��:,y�,:HVdr�������������������
"(.4:@FNTZ`flrx~��������������������$*06<BHNTZ`flrx~��������������������� &		�		�	�����	��}��	��v��	��w��	�����		�����	
�����	�����	�����	
�����	��		n%�P[~ln%M	�P�[]	_	e		f	~lx		�	 V�QST�,,�FF
Z
X�R�YY
�U�W\�bb�ii���j�����������Rb�M
��
�L
��N
�
�
��
�
�D
�E
�F
�G
�H
�I
�J
�KTeSd`r]oagWiYk
�L
�MVhXjZl[m\n^p_qUf��������������������������������������������������y
"&./4FMNOPQRSTUXY�����������������	
"#&'67BHNUbem����������MOPQ\]^ghijkyz{����������������������������������<D�$NO�
,av�6DH�j�	�	�	�NO��

,,aavv��66DDHH��jj��	�	�	�	������		


 #$$%&'3.��
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�NO�
,av�6DH�j�	�	�	�.��
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�NO�
,av�6DH�j�	�	�	�^0:DNj|��������$6@JT�����������d�s�6������������e�t�7��!�:BJRZbjrz����������������
��
��

��
��
��
	��
��
��
��
��
��
��
��
����������������������������������
�
���:BJRZbjrz����������������
G��
F��
E��
D��
C��
A��
@��
?��
>��
=��
;��
:��
9��
8��
7��
6��
5��
4��
3��
1��
0��
/��
.��
-��
2�
<�
B�
,�:BJRZbjrz����������������
��
~��
}��
|��
{��
z��
y��
x��
w��
u��
t��
s��
r��
q��
o��
n��
m��
l��
k��
i��
h��
g��
f��
e��
j�
p�
v�
d�:BJRZbjrz����������������
c��
b��
a��
`��
_��
]��
\��
[��
Z��
Y��
X��
W��
V��
U��
S��
R��
Q��
P��
O��
M��
L��
K��
J��
I��
N�
T�
^�
H�:BJRZbjrz����������������
+��
*��
)��
(��
'��
%��
$��
#��
"��
!��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
 �
&�
�
�,
�F
�Y
��
�&*.4:FJNTZ� �����%=P��n&0:DNX
����
����
����
����
����
����
����
����$.8BLV`jt~�
����
����
����
����
����
����
����
����
����
����
����
����$.8BLV`jt~�
����
����
����
����
����
����
����
����
����
����
����
����lt����������67����"#&'����"#&'���	
*>1Q_{1{Q
{_{Q{1c{_MLN�Nbm�MLN�Nbm�����2										
			
										 
"MPQRSUXY2										
			
										 
"MPQRSUXY$		��}vw������		
"S�������������������&F4Tn~n~&4FT
��.����������������������
.������������.����������������������
d/�
����%239=GHMP[]_eflxz{������������
��*&(/)-06D>ABVQST:kqmovpt�����y+',475;<E?CF@JIKONZXRYUW\^`bacdgihjsnrw|~}�������������������.1u��
�
�
�
�
�
�
�
�
�
�
�
�bcQ	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
������
%&'()*-./01234DEFGHIJKTUVWXY_acenopqrstu !"#;<=>?@AB|}~����edro+,568gikOPLMhjlijfg]mnpZ[vwyqf���/
$&'()*+,-./0123456789:;<=>?@B`bes�����������������������������������������������������������	 "$&(*,.02468:<=?A�����������������BCDEFGHIJKMNOPQRSTUVWXYZ[\]^_`abcdef��!#=���������������������������������������������� )*+,-./09:;<=>?@HIJKLMOPQWXYZ[\]^efghijktuvwxyz{�����������P�
������%239=GHMP[]_eflxz{������������*&(/)-06D>ABVQST:kqmovpt�����y�+',4785;<E?CF@JILKONZXRYW\^`bacdgihjsnrw|~}������������������.1u��[
�
�
�
�
�
�
�
�
�
�
�
�bcQ	

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�����
%&'()*-./01234DEFGHIJKTUVWXY^_`abcdenopqrstu+,56LMZ[fgvw !"#;<=>?@AB|}~����$edro98:7CgikOPQRNShjlijkl\]hmmnpzy{x�qf���bi,F�P
$@BFGHIJKLMNOPQRSTUVWXYZ[\]^_`be�������������������������������������������������������������
!#%')+-/13579;>@B������������������BCELghijklmnopqrstuvwxyz{|}~����������� "$�����������������������������������������������������	

!"#$%&'(12345678ABCDEFGMOPQRSTUV\]^_`abcdijklmnopqrsyz{|}~������b.����������RTS`]aWYVXZ[\^_U��������������������	BB
MMOQ\^iky{����6"(�KQ�KN�Q�N�KKq	���V|;��

��	
����
��������
�
�
�
�
�
�
�
�
�
�� !"#$;./����������������AHUe����m|����gi��������ghd�PQRSTUVWXYZ[\V����������������������������������������������������������������������������������������	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP
��c
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�������������������������������������-./0123456789:;<=>?@ABCDEFGHIJKLMNOP )09@LL[[��$8C'y�3��?��K!,W
38@HIJABCDEFG�HKL����?i�9x�������������",6@JT^hr|�������������&0:DNXblv�����wxyz{|}~��������567����8����9:������;���<���������4:A	�
%,.=>3OO5336887@@8"
�*�*����*
XO��������(4@LXdp|����������$0<HT`lx����������� ,8DP\ht�����������(4@L�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
�*
*
'*
*
*
*
*
*
*
*
.*
*
	*
0*

*
*
*

*
*
*
*
*
*
 *
!*
)*
-*
*
*
*
*
*
*
*
*
*
*
*
"*
#*
$*
%*
&*
(*
**
+*
,*
/*
1*
2*
3*
4*
5*
*
*
5*
6*
*
2*
D*
E*
�5<%UW-��034I88K::L@AM�*
*:JXY[\*
6*
6*
6*
6�
*�M����������",6@JT^hr|�������������&0:DNXblv������������� *4>HR\fpz����*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*9*;*B*C*	�5<$VW,��.34G88I::J@AK~J�����������&0:DNXblv������������� *4>HR\fpz�������������$.8BLV`jt�*�*�*�*�*�*<*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*=*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*B*C*�5<$VW,��.44G@AH�?�������������$.8BLV`jt~������������
(2<FPZdnx�������������*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*9*;*����	58;<"VW$��&��'��+��.34;88=::>�<~������������
(2<FPZdnx�������������",6@JT^hr|��������6*7*8*9*<*=*>*?*@*I*J*K*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*]*^*_*`*a*b*c*d*f*g*h*i*j*o*p*q*s*t*u*v*w*x*y*z*U*{*|*}*~**�*V*{*	������	�
#"$(&4+56:�9x�������������",6@JT^hr|�������������&0:DNXblv������*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*�*B*C*��������
58;< VW"��$��%��&��'��*@A7�8v������������� *4>HR\fpz�������������$.8BLV`jt~���6*7*8*9*<*>*@*I*J*K*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*]*^*_*`*a*b*c*d*f*h*j*o*p*q*s*t*u*v*w*x*y*z*U*{*|*}*~**�*F*G*
�����������

!"#"$$&4'DE6�O����������&0:DNXblv������������� *4>HR\fpz�������������$.8BLV`jt~��������������������������������������������'��������.��	�0�
���
������ �!�)�-������������"�#�$�%�&�(�*�+�,�/�1�2�3�4�5���5�6��2�D�E��5<%UW-��034I88K::L@AM�M����������",6@JT^hr|�������������&0:DNXblv������������� *4>HR\fpz���6�7�8�9�:�<�=�>�?�@�A�C�E�G�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_�`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~������Y�~�>�?�F�G���99G;=HBCK&<s !**?@@�
t6n���Hh�*�*�*� (0�*��*��*��*�*��*�*�
$�*��*�*��*��*�*�&0:BJRZbjrz***�*�*****�*
�*	�*��*�Q*P*�O*U�*�����U�**28BLf������
6����0:\����������������������"(������������
�������������"*28>DJPV\b����
�	����$*06<�
�
�	�

��
 �"(.4:@%�"�%�$�#�&�"�!�
,+)'"(.421130/.-�$73 ������������������������E9J
 2<Vhr����(������������������"(.4�
�
�	�

��
,+)'
�������������X(2<F*������*�(������P������������()OPQR�w{������������������������()..OR��ww{{������������GGGGGG
$2GGGG�:@FLRX^djpv|���������������#���"�#�$�"�#�$�%$%�"���,��x#z��"�#�$y"y#y$y%x"���������()OPQR�w{��������

*8 �II!�JJ II!JJ�� 
 �=�!
!��&HZdnx:�7x
@w?�;�8�<�9�=�>�A�����xyz{|���&R\fpz������*T~���&Pz������
(2<FPZd������������������$����������$����������$����������$����������$����������$����������$����������$����������$����������$����������$����������$������������������I�$N�M�L�K�J���������������������N��M��L�&���������"#$%&'(),OPQR��w{���������N/V\'�K�����������556677889<UUVVWXYY[\����������������������&��!��%��#��%����	����$��
����������
������"������������%��������������&��!��%��#��%����	����$��
����������
����"�����������������������

!""#344558899<<AB#EH%II!JJKKLL$MM
NNOOQQRR%SSTTUUVV"XXYY%ZZ[\%^^``%ccddffkk#mn%oo!ppqqrr$ss
ttuuwwxx%yyzz{{"}}~~%��%������������������������ 	
 !#$&&))+,-./0168899::;;@ADEKKOQ%LV`lx����������� ,8DP\ht�����������ssPQRST	U
VWX
YZ[\]^_`abcdefghijk l!m"n#o$p%q&r 	K~������������		


557799::;;<<UUWX[\����������������������������������������������������������	

  !!##$$%%&&''(())**++,-../011223355����������������������  !!#$&&--..112688::@ADEKK&2>Jyz{|}~ 	�Kw������������������	
557799::;<UUWX[\������������������������������������������������������������������		

  !!##$$%%&&'*,,--..00113355OOuu����������������������!!#$&&..2688::KK&2>Jyz{|}~�Kf������������		
557799::;;<<UUWX[\������������������������������������������������

  !!##$$%%&&''(())**,-..113355^^��������������������!!#$&&..26KK$0<z{|}~�Kh������������		
557799::;;<<UUWX[\��������������������������������������������������

  !!##$$%%&&''(())**,-..113355TTzz��������������������!!#$&&..26KK$0<z{|}~nKb������������		
557799::;;<<UUWX[\����������������������������������������������

  !!##$$%%&&'())**,-..11335588cc������������������!!#$&&..26KK$0<z{|}~tKc������������	
557799::;<UUWX[\��������������������������������������������������

  !!##$$%%&&'*,,--..113355������������������!!#$&&..3346KK$0<z{|}~PK]������������	
557799::;<UUWX[\��������������������������������������������������

  !!##$$%%&&'*,,--..113355������������������!!#$&&..36KK$0<z{|}~hKa����������������	
557799::;<UUWX[\����������������������������������������������������

  !!##%%&&'*,,--..11335599dd������������������!!#$&&..36KK$0<z{|}~�Kh��������������������	


557799::;;<<UUWX[\����������������������������������������������������

  !!##%%&&'*,,--..113355����������������!!#$&&..33KK$0<z{|}~VK^����������������	
557799::;;<<UUWWXX[\��������������������������������������������������

  !!##%%&&'*,-..113355MMss����������������!!#$&&..KK$0<z{|}~NK]������������		
557799::;;<<UUWWXX[\����������������������������������������

  !!##%%&&''(())**,-..113355ZZ����������������!!#$&&..KK
".{|}~$KV����������		
557799::;;<<UUWX[\��������������������������������

  !!##%%''(())**,-..113355JJpp����������������!!#$&&..KK
".{|}~KU����������		
557799::;;<<UUWX[\��������������������������������

  !!##%%''(())**,-..113355NNtt����������������!!#$&&..KK
".{|}~KR����������		
557799::;;<<UUWX[\������������������������������������

  !!##%%'())**,-..113355����������������!!#$&&KK
".{|}~KS����������		
557799::;;<<UUWX[\������������������������������������

  !!##%%'())**,-..113355KKqq����������������!!#$&&KK
".{|}~$KV����������		
557799::;;<<UUWX[\������������������������������������

  !!##%%'())**,-..113355XX}}����������������!!#$&&33KK
".{|}~�KK����������	
557799::;<UUWX[\����������������������������������

  !!##%%'*--..113355<<ff����������������!!#$&&KK
".{|}~�KI����������	
557799::;<UUWX[\��������������������������������

  !!##%%'*--..113355UU����������������!!#$&&KK
".{|}~�KM������		
557799::;<UUWX[\����������������������������������

  !!##%%'*--..113355QQww����������������!!#$&&33KK
".{|}~�KK������������	
557799::;<UUWX[\������������������������������������

  !!##%%'*--..113355����������������!!#$&&KK
".{|}~�KH������������	
557799::;<UUWX[\��������������������������������

  !!##%%'*--..113355����������������99;;KK
".{|}~�K?������������	
557799::;;UUXX[\��������������������������������

  !!##%%'*..1155��������������KK
".{|}~RK3��������
5577::;;UUXX��������������������

!!##%%''))..1155SSyy����������KK
".{|}~>K0������	
55::;;UU����������������������

!!##%%''))..1155����������KK |}~�K%������
55::;;��������������������!!##%%))..����������KK |}~�K����
::��������������!!%%..����������KK |}~�K����
::��������������!!%%..����������KK |}~�K����
::����������!!%%..������������KK}~�K����
::����������!!%%..����������KK}~�K����
::��������������!!%%..IIoo����������KK}~�K!������
:;������������������!!%%..VV{{����������KK}~�K����
::��������������!!%%..ABkk����������KK}~�K��
������������%%..LLrr��������KK}~�K
����������..EHRRYY[\``mnxx~~��KK~JK��
����..KK~ &K�����	����������������	


5566	778899::;;<<UUVVWWXXYY[\����������������������������������������������	������������	������������������	



		  !!""##$$%%&&'*++,-../01122334455��������������������������	
	





  !!#$&&))+,--../0	112688::@ADEKKOOPPQQ	
 *4>HR\fptuvwxyz	{
}~KKKKKKKK	K
KK(�@KVG��	���..
5<UY[\��
��
�����������������������������589<<ABEOQVX\^^``cdffkkmuw{}��������������������������	
!#$&'))+899::;;@ADEKKLV��OQ.>N^��������	��
�*:JZjv�������������	��
���������	��
�f$*06<BHNTZ`K{L{M{N{O{P{Q{R{S{T{U{V{KVKVKV$KV�KV�KV{{{{{�����L� **//|��������
����
j���1XY[\������	 !0�������������
#&-./01256P& !!**//	34?@XY[\|�	��	��	��������		!00���������������

##&&-256PP���	�������"\rz� *34	���-2PP **34s������06<BHNTZbjrz����������{�{�{�{�{�{{�{�{�{�{�{�{{�{	{{!{${3{3{������	 !0�
#&56������ *34�.bhntz��������������������� (06<DLRX^djpv|���������������������������������������������������	�
������������������������������U*�.������	 !0�������������
#&-./01256P����J�������
5789:;<�����������������������"#$%&'()*+,-/123�!$4:@ADE2��������
5577889;<<?@����������������������"$%%&&''(())*-//13��!!$$44::@@AADDEE�����	����75789:;<V�������������������"#$%&'()*+,-/12354:E, !345577889:;<VV����������������������������������""#-//1122335544::EE�$�����������l�=����������������������
"(.4:@FLRX^djpv|�������������������������������	
������������	

358@D557<��	!""-%/51448669:::AA;EE<J$*06<�4�3�@�?�!� ��
��?@x&Lr����������4F
 ������
 ������&,2� ����� ����H 
� ���! (08@HPV\bhntz��{4�{3�{*�{ �{�{�4�3�*�@�?�!� ��������� 
� ���!"(.4�*�@�?�!� ��� ���� &,�4�3�*� ����
9:����{J�(������!?@�������!$�����������!!//?@|�������������������!!$$����������������������4��������������������������!?@�������������4 (.�������������!$B$.8;�B�D�F�H������
4.��������
��.
��.
�� Vrz�����3������������55::;;������������������������		!!%%))00���������������,,-.17@ADE������s$���|���������}���������~���������:BJ�0�������!**==?@���������
''�������������������������		
 ""%%''))+,�����s
*8������*
E�D�C�B���*4>HR\fpz���������e�k�l�m�n����*�*�*�*�*\*�*:�A�C�E�G������9:���5�����t7stu	

 !"#$%&'()*+34v5,-./0126G

$@D `d%��*��+��,��-��.��0��2��4	:	:5	A	A6
��DFLT&cyrl6dev2FdevaVgrekflatnv������������abvm&blwm.dist6kernHmarkPmkmkX	

'(*,Zbjt|���������������$,4<DLT\dlt|����������IRV���0�  �< �(V�����
X.�V���
2FZn���^����Pf,�����34�8w�7E2��������
�?.��� Q>�.���=n[�.���%UC�.�������.�����:.���=n[�.����&X.������.������.���b���.���b���.����M.������.���
=+o.���V�t�.�����/|}~������"�8������������8���/|}~����������������������������/|}~�������F�F�F�F�F�F�F�i�F�F�F/|}~������&��������������������������������� (8@w�7Esw�7EG):DL34��������34sL"�����������������������������������������=�����������������������=��wy��w�7AGG!lVv	 &,28>D
��
�
�V�
�
�
�
�	*-.1u}��	���"(.&"^vf�$*06<BHNT�n�n�n�n�n�n�n�n�n�n�nCL.wyx$�Vn�#n�$n�Vn4\~��wy��w�7AGG!wy��w�uu7AGGwy��w�7AGGs+++"*L�������������������BBbb�����		


 #$$%&'3
0B�V�)TZ`flrx~��������������������� &,28>DrB�B;��B|BmBy�p��B^B�tBxBT���Bm�z�sB8�+�|B�BdBbBh�h��B��|B�BrB�B|B�B��mBxB�CrB�Bt�)'()*+,-./0123juwz{|}�������������	�	�	�	�	�	�	�
p���$����v��i�*���/|}~������B��������!()**?@DDFF��������������		!00;;BBDDFFHH\\���������������������������

##&&-25566��������������������HH//|�����s .<JZjz<�:P���.������������������������$%()��������
��	��
����
����KVWb{{|~�
��	����
���������
��..����������������..����,>Rfx��������
&4BP^l!"	#
$%
& ��A��������������������� &,28>DJPV\bhntz����������������������sJ�"BJ1�{��s{J�s�{s�{���"
Z�����(��M:G�H�XJ{ JJ@	����A�������
5;U[���%)���������	!$,-.1237@ADE����������OP!**?@������25�������$*06<BHNTZ`flrx~����������������������V�V�V�V�V�V�V�V�V��V�V��V��V���V��V���V�/�/��/�/��/�/��/�/�/�/�/��/�/�/�/�V�V�V�V���V�/�/�/6.e��������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$++�_�<\$<��
����vww
�




�,\�$,���



��>9����$4<��Bq7���!!22G����<\$<<e�������������
5;=DF���������������������	���������������������������	
!#$&,-./012��������/34|}~�����������NTZ`flrx~������������������
����s�x����;��������������'X����Xf|������6H���06hn�Ljp�������������������������������������������������8������������)��*+��3�������������������������������������������	������������8��������������������������������������������������	������������8�����������3��&�������������������������	��
����������������8��;����������������������������������������y��3��������3��������������������;��3�������������������	������������8����������3��������3��������������	��������������8����3�������3��$�������������������������	����������������8��;����������������������������������������q3�����������y������������8����3������������������������������������������������	;������3�������������	��������������3����
�������������	������8���������;����������������������	��������������������'������������������������������JQY�(*B$���$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��4�4�&�&��0�0��*���Y���P�Q��#��$�4�&�O�9�8�G�F�H�m�f�"��&��O�"�4��%��!�������o�%
lll	llllll��ll	l
l��������J�����,������ 
l��m
lp
l
lp
l
l
l
l
l
l
l
l
l
l
l
lll
llm��(��p
p��(	l
l	ll�&�
l
ll
"
l
l
l
l
ll	l
l��pl
l
l"
l
ll
l
ll
n
k
l
ll
l
l;ll
ll��p
l
l
l
l$Ml�����
 #%)  +##,&3-bg;jjAbbBjjCopDt�F��[��f��g	�	�h	�	�}
m
t�
�
�������
 #%)  +##,&&-bg.jj4lm5bb7jj8op9��;��<��>��?F &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|������������Y��������������8������H�������3�8����,���j�28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz�����������:nMnMn~n�n�nsn�n�n"n"n�n1n'n{nnnsn�n1n{n~n�n�ninRnRnRn�n�n�n�n�n�n�n�n�n:nMnMn~n�n�n~n�n�n�n"n"n'nsn�n�n"n"n�n1n'n{nnsn�n�n"n"n�n1n'n{nninininin�n�n'n'n'n'n'n'n�n�n'n'n'n�n�n1n1n�n�n�n]n]nQn"n"n"n"n"n�n�n�n1n�n'n�n6n�n6n;nonpn�nnn�n�nnn�nn�n�n�n�n�nXnnnnn�n�n"n"n�n1nn�n�n�n"n"n�n1nn�n;nMn��������������59:;=>[�������������z|}~����������������	 !%)0����������������������������������������	
$&,-.1234567@ADE������������������2���"#$%.012���������������������������������JKLMN2���������$*06<BHNTZ`flrx~��������������������Ln�Ln�Vn�Vn�Ln�Vn�Vn�Vn�Vn�Vn�Vn�Ln�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Ln�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�Vn�VnLB�>p�� &,��|��s��� &,��|����F� &,��|����"� &,28>D���|��T���31��� &,28>D���|��T���11�z������4
=3F04f]jklmy`�{	A	A�	�	��
h
h�
m
v�
�
�����������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������		
				"	(	.	4	:	@	F	L	R	X	^	d	j	p	v	|	�	�	�	�	�	�	�	�������|����6���������������v��i��Y��������=�������������������������8�8����`�����������������H���������������������������j�d��3����j����$�8���,�8����,�����6�BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������������������J�������516�������L��������b����?���\&H&��O
BB
�
B
BB������BB��t	B	B��������
��
�7FH|CC##��������������������
87�BI
F�
�
��
B���
�
B
B
B
B
BD
B!�
BB�B.��
B�

B
B
�
�
�p�����CCCDGCCBCGC�FCBBBCDG��CGGC��GGCCCGC��CCBC�F��

!"!"#$%%'3'034]a8hi=`a?cnAq�M��e��t��u	�	�v
m
t�
�
����

!"!"#$%%'3'044]a9hi>`a@ciBknIq�M��u��v	A	Aw	�	�x
h
h�
m
v�
�
��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz�������������������|����6���������������=���������������8����`��������������������������������j�d�����j����$�8���,��hrr|������������4b||���h�����h��||||||�����������������||d�����z�����������z������bbb|���������|��b||�|�|�||||||||||||���������������������������������rr������������������������������������h��@N@@@������jjjjjx���	�
��9��;��<��>�����&��(��*��8��:��<������!��#��������������/ZO(������/2�������������������������=��/<������1����$&��Bb������������������������������?��A��C��E��G��I��K��M��O��Q��S��U���������������%��&��'��(��)��*��+��,��-��.��/��0��1����������������������������������������������=�����o�����3��4��5��6��7��8��H��I��J��K��L��l��m��n��o��p��q��r��s��t��u��v��w��z�������������������������������������$������������$�����$������������/_��$/29��;��<��>�����&��(��*��8��:��<������!��#��������������/d9��;��<��>�����&��(��*��8��:��<������!��#��������������/n[P\P������$P�F/2.=2��������������������������������#��$��%��&��'��(��)��*��+��,��-��.��/��0��1���������������������#��$��%��&��'��(��)��*��+��,��-��.��/��0��1��
��� �������������%��&��'��(��)��*��+��,��-��.��/��0��1�������������������������������������������������������������������������������������������������������������
����������������%��&��'��(��)��*��+��,��-��.��/��0��1���
����������������#��$��%��&��'��(��)��*��+��,��-��.��/��0��1����
�����
���3��4��5��6��7��8��H��I��J��K��L��l��m��n��o��p��q��r��s��t��u��v��w��z��������
���[\[<\<[<\<���������������P3��4��5��6��7��8��H��I��J��K��L��[Z\Zl��m��n��o��p��q��r��s��t��u��v��w��z�����������������������������������������������
���������^��_��`��a��b��c��d��e��f��g��h��i��j��k��l��m�����������������	��
������
������������������:���������������������������������������������������
���
���
���������^��_��`��a��b��c��d��e��f��g��h��i��j��k��l��m�����������������	��
������
��������������������������������������������������������������������
&'()*+,01456789;<=>?@DH[\^`e�������������������������������������������&(*89:;<=?Ads����� !"#$?ACEGIKMOQSUWY[]_acekmoqsuwy{}�����������������^%&'()*+,-./23456789:;<G_`blmnopqrstuvxyz�����������������������
�
�
�
�
�
�^_`abcdefghijklm���	

l&RP_,p^��������(������������������������������������������������������(����������������������������������������������������������������������������(������������������������������������������(���������������������������������������������������������������������������������������������������2���������������������������������������������������������2�����������222��������������������
����
�������������������
2((������������������������������������������������������<F��F��<F<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������`(��������������������������������������������������������������������������������������������������������������������������������F�������������������������������������������������������������������������������������������������������������������������(����<(������(F��������������������������������������������������������~��������������������������~��������������������������������������������(���������(���������������(��������������������������(�����������������������������������������������������������������������������������������������������������$##=<=&&((-))
**00F11*44
55Z66
995::;<'==F>>???FFGGJJKKQMMRSTUWW:YY1[\]]I^^ooNM������-����
��
��
������Z����������������������������������-��-��-��-��
��T��
����������������������������F��I��*��**T**






:::&&5''1((5))1**5++1,,..0022446688'99::;;<<==????AA?dd)ee$ss(tt"����������
����5��1BBCCSDDFFII@JJMMNNSOOoPPQQRRUTT@VV[WWZZ[[@]]Y^^U__m``aa@ccnffgghhii	kkllmmlnnPooppqq_rr	ssavvgwwxxPyy`zz{{f||~~dc������j��������������[����,��+��6��,����!��7��4��+������4������\��6��+��!��������,��,����E�� �������������� ������������%��%������R %R		

;W%67H7HVV4  !!!"";##!$$;%&''(())**++,,;--6778899W::%;;\<<==+>> ??G@@OCC>DD.EE4GG>HH.IIJJKKLLMMNNOOPPQQGRR VVWW6YY+ZZ [[X\\J]]X^^J__>``.aabbccddii]jjkk]llnnoorrssvvwwzz{{}}7~~E7��E������������������4������������������!����!����!����+�� ��G��O��>��.����.��A��3��A��3������A��3��A��3��3������������'  !!'""##'$$??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffkk
llmm
nnoo
ppqq
rrss
ttuu
vvww
xxyy)zz${{)||$}})~~$)��$��)��$������(��"��(��"��(��"��(��"��(��"��������������������������	��������	
 !(	18AGHLRV	WXlopqrstwxxY|���<��#��=��#��=��N��M^^
��Q%/38&9<]^L_`DaaCbbDcdClvzz��9��9����0��/��8��B��B��B
�
�
�
�
�
�
�
�
�
�k
�
�h
�
�
�
�^
�
�

�
�
�
�

�
�2
�
�K
�
�b
�
�
�
�i
�
�e
$T[
\]2^m����
�����
2)77=.9.&&((,,4466992::;<#>>??;BB=FFGGHJKKLL-MMPQRSTTUUVVWWXX,YY+ZZ[^__5bb=ooDC����P��������������������������������������������������������������������������-����-����-����-��������

,##,&&2''+((2))+**2+++,,--..//001122334455667788#99::;;<<==;>>5??;@@5AA;BB5ddeesstt������P��������,��2��+BBDDII<JJLL
MMPPRRHTT<WW[[<^^H__[``aa<bb]cc\ffgghhjj
kk	llmm nnEooppqqQssStt
uu vvXww xxEyyRzz{{W|| }~U��	����Z��	����
��	����	������%����$��%��1��3��$����"��$������J��1����&��%��"��!����������'����������������*��������/��������'������::	
*

803"&  !!N""8##N$$8%%&&''(())**++,,8--..88990:::<<>>??0BBCCDDEE"FF'HHJJKK0LL:MM%NNPPRRTTUUVVWWXXYYJZZ[[I\\?]]I^^?__``aa%bbcc&dd/ee&ff/hhiiOjjFkkOllFnnooqqrr$ssuuwwxx&yy/{{}}3~~!3��!��3��!����K��!��K��!������"��'������������������"��'��1��*��1��*��1��*��&��/������0����������M����M����L��@��L��@��$����������%������$����������#  !!#""###$$??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVXXZZ\\^^``bbddffkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~������������������������������������������������������
����	����	


	 18HL_d
lo	pq rs	tw|���9��7��.��7��.��.��D��C__aa,��>#$A%/01G2238
9GHL
MO[\B]klw
xyzz
{~���6��6����)��(��4��>
�
�
�
�

�
�	
�
�
�
�
�
�
�
�
�
�
�
�T
�
�
�
�Y
�
�V$T[^m�����������-8�&&(*01	469?FGJKMMRUWWYY[^ oo$%��&��2��3��8��?��F��J��M��R��S��]��^��_��`��c��m��n��o��p��q��stwx

y

z{���&,�..�00�22�44�66�8=�??�AA�de�st����������BD�FF�IJ�LR�TT�VW�Z[�]a�cc�ft�v|�~�����������������������������������������������������������
�	
$%-&7@6CE@GRCVWOYdQil]noarscvwez{g}�i��m��n��v������������������������$�?f�k���������������#��)(=18cALkRXw_d~lx�|��������������^^����%/�3<�]d�lv�zz����������������������
�
��
�
��
�
�
�
�'
�
�+
�
�,
�
�-
�
�.
�
�/
�
�46:$;TmT��n��r��s����<��	YJ�J�J�J�J�J�J�J�J�KKKKKKK$K*K0K6K<KBKHKNKTKZK`KfKlKrKxK~K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�LLLLLL L&L,L2L8L>LDLJLPLVL\LbLhLnLtLzL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�MM
MMMM"M(M.M4M:M@MFMLMRMXM^MdMjMpMvM|M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�NNNNNNN$N*N0N6N<NBNHNNNTNZN`NfNlNrNxN~N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�OOOOOO O&O,O2O8O>ODOJOPOVO\ObOhOnOtOzO�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�O�PP
PPPP"P(P.P4P:P@PFPLPRPXP^PdPjPpPvP|P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�P�QQQQQQQ$Q*Q0Q6Q<QBQHQNQTQZQ`QfQlQrQxQ~Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�RRRRRR R&R,R2R8R>RDRJRPRVR\RbRhRnRtRzR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�SS
SSSS"S(S.S4S:S@SFSLSRSXS^SdSjSpSvS|S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�TTTTTTT$T*T0T6T<TBTHTNTTTZT`TfTlTrTxT~T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�UUUUUU U&U,U2U8U>UDUJUPUVU\UbUhUnUtUzU�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�U�VV
VVVV"V(V.V4V:V@VFVLVRVXV^VdVjVpVvV|V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�V�WWWWWWW$W*W0W6W<WBWHWNWTWZW`WfWlWrWxW~W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�XXXXXX X&X,X2X8X>XDXJXPXVX\XbXhXnXtXzX�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�YY
YYYY"Y(Y.Y4Y:Y@YFYLYRYXY^YdYjYpYvY|Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�ZZZZZZZ$Z*Z0Z6Z<ZBZHZNZTZZZ`ZfZlZrZxZ~Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�[[[[[[ [&[,[2[8[>[D[J[P[V[\[b[h[n[t[z[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[�\\
\\\\"\(\.\4\:\@\F\L\R\X\^\d\j\p\v\|\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�]]]]]]]$]*]0]6]<]B]H]N]T]Z]`]f]l]r]x]~]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�^^^^^^ ^&^,^2^8^>^D^J^P^V^\^b^h^n^t^z^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�__
____"_(_._4_:_@_F_L_R_X_^_d_j_p_v_|_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�_�```````$`*`0`6`<`B`H`N`T`Z```f`l`r`x`~`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�`�aaaaaa a&a,a2a8a>aDaJaPaVa\abahanataza�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�bb
bbbb"b(b.b4b:b@bFbLbRbXb^bdbjbpbvb|b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�ccccccc$c*c0c6c<cBcHcNcTcZc`cfclcrcxc~c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�c�dddddd d&d,d2d8d>dDdJdPdVd\dbdhdndtdzd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�ee
eeee"e(e.e4e:e@eFeLeReXe^edejepeve|e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�e�fffffff$f*f0f6f<fBfHfNfTfZf`ffflfrfxf~f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�f�gggggg g&g,g2g8g>gDgJgPgVg\gbghgngtgzg�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�hh
hhhh"h(h.h4h:h@hFhLhRhXh^hdhjhphvh|h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�h�iiiiiii$i*i0i6i<iBiHiNiTiZi`ifilirixi~i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�jjjjjj j&j,j2j8j>jDjJjPjVj\jbjhjnjtjzj�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�kk
kkkk"k(k.k4k:k@kFkLkRkXk^kdkjkpkvk|k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�k�lllllll$l*l0l6l<lBlHlNlTlZl`lflllrlxl~l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�l�mmmmmm m&m,m2m8m>mDmJmPmVm\mbmhmnmtmzm�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�m�nn
nnnn"n(n.n4n:n@nFnLnRnXn^ndnjnpnvn|n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�n�ooooooo$o*o0o6o<oBoHoNoToZo`ofoloroxo~o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�o�pppppp p&p,p2p8p>pDpJpPpVp\pbphpnptpzp�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�qq
qqqq"q(q.q4q:q@qFqLqRqXq^qdqjqpqvq|q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�rrrrrrr$r*r0r6r<rBrHrNrTrZr`rfrlrrrxr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�ssssss s&s,s2s8s>sDsJsPsVs\sbshsnstszs�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�s�tt
tttt"t(t.t4t:t@tFtLtRtXt^tdtjtptvt|t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�t�uuuuuuu$u*u0u6u<uBuHuNuTuZu`ufuluruxu~u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�vvvvvv v&v,v2v8v>vDvJvPvVv\vbvhvnvtvzv�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�v�ww
wwww"w(w.w4w:w@wFwLwRwXw^wdwjwpwvw|w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�xxxxxxx$x*x0x6x<xBxHxNxTxZx`xfxlxrxxx~x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�x�yyyyyy y&y,y2y8y>yDyJyPyVy\ybyhynytyzy�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�y�zz
zzzz"z(z.z4z:z@zFzLzRzXz^zdzjzpzvz|z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�z�{{{{{{{${*{0{6{<{B{H{N{T{Z{`{f{l{r{x{~{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�|||||| |&|,|2|8|>|D|J|P|V|\|b|h|n|t|z|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�}}
}}}}"}(}.}4}:}@}F}L}R}X}^}d}j}p}v}|}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�~~~~~~~$~*~0~6~<~B~H~N~T~Z~`~f~l~r~x~~~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~� &,28>DJPV\bhntz������������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Āʀ��ր܀�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������́��؁�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ȃ��Ԃ�������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ă��Ѓ��܃�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ƅ̄҄��ބ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������…��΅ԅ�����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ĆʆІֆ����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ƈ̇��؇އ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������ˆȈΈ��ڈ���������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʉ��։����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̊��؊��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������ȋ΋��ڋ��������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ČʌЌ֌܌������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƍ̍��؍ލ���������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������ŽȎΎ��ڎ���������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ďʏЏ֏܏����������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɛ̐��ؐސ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������‘ȑΑԑڑ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʒВ��ܒ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɠ̓ғؓޓ���������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������”��ΔԔ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʕЕ��ܕ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɩ̖Җؖޖ���������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������—ȗ��ԗڗ�����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Ę��И֘�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̙ҙ��ޙ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������šȚΚԚښ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ěʛ��֛����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɯ��Ҝ��ޜ�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ν��ڝ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʞ��֞������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ɵ̟��؟ޟ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������������ڠ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʡС֡����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ƣ��Ң��ޢ�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������£��Σ��ڣ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʤ��֤����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƥ��ҥ��ޥ�������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������¦�������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ħʧ��֧ܧ����������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̨����ި����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������ȩΩԩک��������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʪ��֪�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƫ��ҫ��ޫ������������ �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ȭ��Ԭ�������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ĭ��Э��ܭ�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ʈ��Ү��ޮ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������ȯίԯگ�������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������İ��а��ܰ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ʊ��ұ��ޱ����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�������������������������Ȳβ��ڲ���������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ijʳ��ֳܳ������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̴��ش��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������µ��εԵ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�������������������������ʶ��ֶܶ����������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������Ʒ��ҷط��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������¸��θԸ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Ĺʹ��ֹܹ��������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�����������������������ƺ��Һغ��������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������»ȻλԻڻ�����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������ļ��мּ�������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~�������������������������̽ҽ��޽����������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z�����������������������¾��ξԾ����������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|�����������������������Ŀʿпֿܿ����������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~����������������������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z����������������������������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|‚ˆŽ”š ¦¬²¸¾��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ÄÊÐÖÜâèîôú������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zĀĆČĒĘĞĤĪİĶļ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|łňŎŔŚŠŦŬŲŸž��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ƄƊƐƖƜƢƨƮƴƺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zǀdžnjǒǘǞǤǪǰǶǼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ȂȈȎȔȚȠȦȬȲȸȾ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ɄɊɐɖɜɢɨɮɴɺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zʀʆʌʒʘʞʤʪʰʶʼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|˂ˈˎ˔˚ˠ˦ˬ˲˸˾��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~̴̢̨̖̜̮̺̄̊̐������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z̀͆͌͒ͤͪ͘͞ͰͶͼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|΂ΈΎΔΚΠΦάβθξ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~τϊϐϖϜϢϨϮϴϺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zЀІЌВИОФЪажм����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|тшюєњѠѦѬѲѸѾ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~҄ҊҐҖҜҢҨҮҴҺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zӀӆӌӒӘӞӤӪӰӶӼ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ԂԈԎԔԚԠԦԬԲԸԾ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ՄՊՐՖ՜բըծմպ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zրֆ֌ְֶּ֤֪֒֘֞����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ׂ׈׎הךנצ׬ײ׸׾��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~؄؊ؐؖ؜آبخشغ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�zـنٌْ٘ٞ٤٪ٰٶټ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|ڂڈڎڔښڠڦڬڲڸھ��������������������������$�*�0�6�<�B�H�N�T�Z�`�f�l�r�x�~ۄۊېۖۜۢۨۮ۴ۺ������������������������� �&�,�2�8�>�D�J�P�V�\�b�h�n�t�z܀܆܌ܒܘܞܤܪܼܰܶ����������������������
����"�(�.�4�:�@�F�L�R�X�^�d�j�p�v�|݂݈ݎݔݚݠݦݬݲݸݾ��������������������������$�*D>��;B�v�t|�d�Vi���me,1��*��������ps���se���?����V����JT�W�,��l�e���w�||���������e/=�I���V����H7�Z�����eln���+/�D������%$�6��"�)"�(��BR���$�)�4- ���|�*�)+6���5������������qH��������u552-/?/��LI�4+~���������H�&52������	�^�����������|��D>��D>��D>��D>��D>��D>n����t�|�d�,1��,1��,1��,1�����?����?����?����?�mm�||���������e������e������e������e������e���ln���ln���ln���ln����"�//�<<�����������1�����-� -� -� -� ������������//�55�2-/�?/-/�?/-/�?/-/�?/-/�?///&5�2&5�2&5�2&5�2^����4�4�^����D>W���D>����D�$>���$�t|�d���t|�d���t|�d���t|�d���Vi���me$�)�4mm�55�,1W�-� ,1��-� ,1��-� ,�$1��-�$ ,1��-� �����*�)�+�����*�)�+�����*�)�+��#����*�)�+ps���se6���5ss�5�����?������W?�������?������$��?���$�������?���2�B2�������V�������J�#T�W��#��qH,��l�e������,�#��l�e��#�����,��l�e������,��l�e������,�����||���55�2|�#|���5�#52||���55�2{{x|�B|�5�52��W���e-/�?/������e-/�?/������e-/�?/�����H7�Z�~���H�#7�Z�~�#��H7�Z�~������������������������������e����H���e����H������H�ln���&5�2lnW��&5�2ln���&5�2ln���&512ln���&5�2l�$n���&�$52����������"�^�����"�)"�(�����)"�(�����)"�(��������44�mm�44�44�>>�22����t|L�mm����44�44�.� .���rr�&&��{�M�xB���������������66�������|�|�5�F������-/����WW�4�4�7��7�������������  ������rn�%5���hh��������$$�$$��������$$������&�&���pp����������me���meYR�4�B��e"���e�����B���y�����D>�������?����������e-/�?/ln���&5�2ln���&5D2ln��&5g2ln#��&5q2ln��&5g2D>��D�D>��E���W������4�4�����*�)�+JT�W���qH��$�����e-�$/?/��$�W���e-�$/�?/$$�����������me��meYR�4�����*�)�+���K�K�||���55�2@@�����������//�D>����D>����,1��-� ,1��-� ���?�������?����������e-/�?/������e-/�?/H7�Z�~���H7�Z�~���ln���&5�2ln���&5�2�#���#���#��e�#���H�����S�ps���se6���5s�s������PP�**�)�:"�(��:�D>����,�1��-� ������e-/D?/������e-/D?/������e-/�?/������e-/E?/W"�^�������uu����������D>��t|�d��0��,��l�e��e���������EE�ln���00�,1��-�0� ��B����������4�4H7�Z�~���"�^�����""444444���

4�4�)�44������,,����4�4�*�)+�����5� 5555�5�5��������������������I�I����R����u5�525�52<<B//����k�k����H�����������������������������������"Y"����O�&52//33����������������������������������������e  ,,�??����� ���4�4���������������������E��������6�?����nn����''�:�::�:�U�\�������T���R�a�a��a�a���a��a��a�a=��a?aR�R<���aTT���T���aa��aKa�������BJ��������V�����L����u�eb���k��e��������D�;B�v�,�)"�(�p��se������e�?�JT�W����w�||�������e/I���e"�%$�6�ff����?��"�##����##����-/?/&�&������-/?/�������������������//�4�4�t|�d�&�&���t|�d����,1��,1��ss�1�BB������?����?����B����������ss�55����88�n�Dn�D>��44�;B�v�1�Z�DZ�,1�����&�������5P�bb����w�ps���se������enn�/=�I�t|�d���e8F����%$�6�s�Ds�]R��		�ZZ����AA�=���@@��,,�  ��#�F#- wu��BJBG�	!!uu??-/?/88��LI���^���k�k�	�8�F83+����\\��))����-� -� 5�5��������������������������55�		�BB�^����9�G9�����RR�>>����		VV�II���mm�@@rr�&�*&U��>�����}�}����//>8�>>��b�b�$�$/��������B�B������D��J�GJ�33�))�33�4�4

]���		���F�F���D����G�&�$&���$�O�DO��F55�		55���[[�88z�Dz�?�G?rr�??��������AAt�$|�d��$��D��G��"��������<�D<��F��D��j�Gj`�D`�7�F7]]�//]]�6���5����D���G���?����ww�\�\��h�Dh�&�G&n�n�7�7z�Dz�K�GK]�D]�3�F3�D��z�Gz���?�D>����D>���������,1��-� r\�rr�����ww�&&����$$������WBB����BB�������e-/�?/���//��//�==���88W^����88�^����88�^����]]�33�	�D	��G�������	�:	��:�<�:<��:%%�		44�$�)�4�����������=�D=�
�G
����������||�AAff�HH''��d�:d�%�:%������������������V�����4+��������55�		�������"�"����u�Du�8�G8m�Dm�A�GA�n�4n�9�9��D��A�FA]�@]�*�F*h�@h�,�F,#�#��z|�����=L�>��,,�cc��  ****������7��u���ll55==//4��(//;;//��=
===
����**55>���5��5�J���dd��������������Q����������������������\����D�������������nn���Y�Y���������������''�A����������������������|���������\��������//�P���fLa��gOg��gg���O����g�����gba��g��g��g���giaZ�Za����00g?a���gma��gva����g���e������g|avv��v���ama�;�Ju,00a)a��a=a��e�������a������g���bT��TZ�Z�����������m������=����������)?P'��'�5524��40��a������LI//BR��$�)�4���|�*�)+�:��qH�}���LI44��g��g+a��g�����gpp���T�Ta�a���gia���aZa��TT���qqahhahhaT�T�T�T�T�T���a0�0g?a0�0a���gma���gma��axa��g�������gT�T�v�v���ama��a��a��g��aJa��aa���a���a���a���D��>�����;B�v�BR��;�PB�v�B�PR��;�mB�v�B�lR��t�|�d����Vi���me$�)�4V�Pi���me$�P�)�4V�mi���me$�m�)�4V�i���me$��)�4V�8i���me$�8�)�4,1��-� ,1��-� ,�81��-�8 ,�C1��-�G ,�1��-�� *������|���W��*�)�+ps���se6���5p�Ps���se6�P���5ps���se6���5p�s���se6����5p�Gs���se6�G���5��H��?���H������?���gJT�W���qHJ�PT�W��P��qHJ�mT�W��e��qH,�P��l�e��P�����,�P�Wl�e��P�����,�s��l�e��p�����,�8��l�e��<��������w����u���w����u��P��w��P�u||���55�2|�P|���5�P52|�e|���5�a52|�8|���5�852��#���e-/q?/�����e-/R?/������e-/�?/������e-/�?//=�I���L�I/=�I���L�IH7�Z�~���H�P7�Z�~�P��H�P7WZ�~�P���H�g7�Z�~�o���������P���P�����������R��P���P�����e��Y�H��P��e�P���H��q��e�m���H��8��e�3���H�o�Qn���4�Q52ln���&5�2l�8n���&�552ln#��&5q2ln��&5R2,,�D�����,�P,�D���P���������������������������������������P������P��%$�6�	��%$�6�	���"�^����)"�(�����)�P"�(��P��)"�(����6���5��R�H���1�^��1������������cc�..�D�P>���P�D>��5�D>��,�D>��,�D>�g�D>�s�D�P>���P��D>��L�D>��L�D>�n�D>�q�D�P>���P��,�P1��-�P ,1��-5 ,1��-� ,1��-, ,1��-, ,1�-g ,1�-s ,�P1��-�P� ���?���5��P��?���P������P�����e-�P/?/������e-/5?/������e-/,?/������e-/,?/�����e-/g?/�����e-/s?/��P�����e-�P/�?/���44����44����445���44���P��4�P4l�Pn���&�P52ln���&552���QQ����QQ����QQ5���QQ���P��Q�PQ�"�^�����P�"�^����"�^��5��"�^��������oo�((�..��################{>��H�>�>�*��*��q4�r5��������q��q�q]�q]�����������������g�	eq�e�*��e�*��e���e���e�]��e�^�e����������������T��^����������J��K��-/?/-/?/-/?/-/?/-/?/-/?/�]��e�g��e� ��e� ��e���e���e����������������������������������������������������####��������-/?/-/?/����################{>��H�>�>�*��*��q4�r5�����������������g�	eq�e�*��e�*��e���e���e�]��e�^�e����������������������������������������##�##�##########D>��D>W��`��L�D�����������������(��+eu�ep��se�����������������?���W?�v�b����&�&&�&"�"�������������������
e�k��e������ff�UT�����ama�����L�����b�����v��A�����K��������Uh\h�A���Th��T��Th�hTA2��7�?�����m�T���|����������d+��vA��u55������&&�=��g��V�H7�Z�+/�D�ff�������JT�W�D>n���������h4h4�A�>����e�����e���)*)>�����//�7�7��0���0���H�z�Dz�6�F���5J�DT�W��F��qH�D��F������@��@��@�������������������kk''���//���TZ�Z���y�1�"����(��65����������r�Dr�@�F@Z�DZ�#�F#bb�!!���w�uu������e���Z�DZ�#�F#����;�(;��(������a��a5�4��e��W�u�e��)������"�����JT�W���qHJT�W���qHJT�W���qH,��l�e������������e<>N>������e/=�I���LI�����&4�@���V�����4+��V�����4+��+/�D����4�4�4�4�$�*!���f$�)�4��������u552-,����e��������||���552t|�d�'*��6���5��������|�,,*�)+JT�W���qH||���552~����������A��e&�=�u==g=<66�
��"�e���ln���&52������U]�D���H�m��3��[ht|�d���)"�(�Vi���me$�)�4�����

������������33a������//������*�44���<��|������������������"��"//��,~,���+�+��$�$�������VY+�����������{{���g88/"4��4"Y"222������a (������)��i�Bi�|�B|�cc�:���l�e��|���D>��,1����$��?�ln��������������������������������������������������P���������������������Y����$������$�����������H������������e�������?�52�$�-�$ &�$52vv<�<v��<vy��<vy�<vx��<vx��<v@�<vw��<vv<�<vz��<��<O<��O<
<�<�<�<"�<��<�<��<�$<�<U�<��<�<^h<^^<�<58<�<58�<58"�<5�8<�<58"�<58��<##<2<###<##"2<###<��<�<���<���<��"�<��"�<����<���<���<����<��$�<�<��<�<GA<<<GA<<GA"<<G�#AC<<GA�<<,,<C<,,,<,,"C<,��<<��<��<��"<���<��<��<�b<���<��$�<<��<v�bv<�<v�bv"�<
<�<
�#<�<�v<�<��v�<��v<�<��#v<�<��v<�<���<pp<�<88<[<88[<88"[<8�#8<[<8�b8<88[<<<<d<<<<d<<<<d<<<<"d<<<<�d<<<<d<<<<"d<<<<�d<<<>=<<<<d<<vv<��<�<��<<�x<<d<��<�<���<��"�<��#�<�<��<�<���<��"�<��<�<��"�<�#�<�<,,<��<�<���<��"�<���<�<��#�<�<�*+<@<**@<**@<**"@<**�@<**@<**"@<**�@<*�$*<@<**U@<**@<��<�<��<�<���<��"�<����<���<��<�<��<�<���<��"�<����<���<��<�<���<��"�<���<2v�v�*������������������������������������]]���r�����n�)����Ab**)�7)��������$������Ta��V��T���:�UTa�a�Ta��H���P���UTa�a{�@���T���D�{>��H�>�>�*��*��q4�r5�p��seg�	eq�e�*��e�*��e���e���e�]��e�^�eff�����������������������������%q�/{��4��4�� �� �g�h�G��3�################�������������������������������
<�<<�<��<�<��<�<,,<C<,��<<
<�<pp<�<88<[<<<<d<<��<�<��<�<���<�<��<�<AA<��<<���<���<��<�<����<����<<<<d<<AA<
<�<��<�<,,<C<,
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<���<���<���<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<����<����<����<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<,,,,,,,,,,,,�<�<�<�<�<�<�<�<�<�<�<�<��<<���<��<<��<�<����<��<�<<<<d<<AA<
<�<��<�<,,<C<,
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
��<��<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<
<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,,,<C<,��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<��<<���<���<��<<��<<��<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<<<<d<<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<��<�<����<����<��<�<��<�<��<�<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<AA<,,,,,,,,,,,,�<�<�<�<�<�<�<�<�<�<�<�<�&?F_nn4~~5��6��M�|l��-��.��/:;4=?6AA9DD:FN;QVDXYJ[[L]]M_`NbbPdlQppZrr[tu\zz^||_��`��a��g��j�&r).�7��nv���������	
%((00;_�L?R[�_h�lx|���				 	&	&'	,	,(	E	E)	I	K*	a	a-	e	e.	h	i/	k	m1	t	t4	{	|5	�	�7	�	�;	�	�<
3
3[
=
>\
@
@^
B
B_
D
F`
N
Nc
P
Pd
Y
ae
c
cn
y
zo
�
�q
�
�r
�
�s
�
�t
�
�u
�
�v
�
�x
�
�z
�
�}
�
�~
�
�
�
��
�
��
�
��
�
��
�
��
�
��
�
���
�����  �)/�22�66�:>�@D�HJ�OX�[j��������������������������������������� ����
�
��
�
��
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
 �,�,�9P	A
�
B3K04k]jplm~`��	A	A�	�	��
h
h�
m
v�
�
�������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������$*06<BHNTZ`flrx~��������������������� &,28>DJPV\bhntz����������������������
"(.4:@FLRX^djpv|���������������������							$	*	0	6	<	B	H	N	T	Z	`	f	l	r	x	~	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�	�������|����6���������������v��i��Y����&"^����=�������������������������8�8����`�����������������H���������������������������j�d��3����j����$�8���,�8����,����դ'�'6�'Alib/fonts/notosans/stylesheet.css000064400000000000147361034410013203 0ustar00lib/img/icons-small.png000064400000007132147361034410011023 0ustar00�PNG


IHDR�+�PLTEI��Hm�]{}Ht��S4H{����%%$$���@z�*IKSSSBbdOki5!C���P;�>\ty���BY��U1GFG<�)J����v�Ү��kkk&��=EE  ��v�ӏ��U�������J�N,��,Y�x�B��~��%T������e\mmR��ev�}��}��1GKr���ʬ������Md��#]�4|�/�!j�6�7��T��/�$Yc�7t����Fp�-m��L�TY�${�h��X�f�ľR�Ծ��y����G�.���I�H�mmm!Eyiii�:GvJ0���L�wOdm�.}1����J���SSSg�ښ��Q���������������������������������;"�Jwww�������.}2
G������܊����э����XX[.�``c"�������ɱ�׈������򫮮��ϲH	������y��������S!���LLO�P
����֪���e���QRV���A�͒�ʖ�����H:M���ˇdesP�R'���\�3��l������u������U�ۥ�Ӏ��p��o��ѧ�(c��f�ʛ��P|�k�i�9M��`��U��I�����V�A���r�޷0�#
2��y���Ϋ8����eA??@����Е����ŵڶ����+���Iq��ܗp�nKxl-XR��E88:ऑ�skA�Ex�����Ɛ;�qv��_�t#���ttRNSk��g���gt�$fdh'��F��<��K��������qH��������c��RF��̮����é�����4���ȝ]��?������¿��p����͹��\@*��Ɏ{a ����yq����e��
�IDATx��kHSa�_�Ȗi�A��Z:$X�Zf���t�nч��ͭ�&,oc��,L��N]�i(�i�3�R�>��4!�|�y�y�񌂂n�OD��y����<{BHDCA:�V
��&H�h��ϿV���ף"BM�jb�xA/tjb���C�|���|^3+���"��t,z�.����(�ߎl3�*A$*.�C���@�7�H��HFq�r����9Q�Q����X��Q)��:��(�������@��B�;m	^."x1�P�:��E"��N�g����ԕ�0����.T��l�1?<��8
��rݕ�<��(�'/�MX����*6#ԕQyY`x=<G��l��U�?T�X,�g�D������,,|���juu�ի��Q�%�
��.A�L� L"�0����&t�M�
��E"B� I��|+�`!�P�0�m����msT)0G5�m6[��G���Fܓo煮�z�6-/�&l�0G�K���`�$<v�Qv{���Q��̲���&��9��
�Ӈn�\����"L-��G�Uz�)E�''{�z������f,޽�����ז��MXhށ�ܵ����Q�֮ׯ{t��]��*�h��=['w9�h�
"�t�������$Y�#!Yv��&�òm�x� �;A<G(;�@���\C,d;�^�X(��m;ĝ9II��D������NM�y���#��l��W���Q(��$R*)�.m!H�#�����tH#Y�Ί{�v
E/`q���Z�(�W���ӱi�-pRO�=�cEzjttj
&5}+R;;�0����J��eI��:@`b����Nh��:kSHG
�͍{�2��F��/(剉����9����B�+��*�7�J��(p�&��G?V��/_F?�m
��T0|	�^Z_�g/:XQ~�_KЉV��O|�ZaZ�������4f`�Q�33#c��������3ݐDNL<}?6������&�8ϊ�8>�-^ʜ�G�:���̠�I���}b����$jۃ�#c̰/GK���s�q1�z^<��d���ӑD;�0���%
Z���޾�e�Dqb��b�0
�(N|�bn=�c�u�h.z�(ʜBs���_���+�ي1a\�7Y��P�u�Ľ��J�W����ΖgA��98���Uq�*���VP�gf(�+:2�lV���J��B�{�T��ͪf�7ǯ:*0��ot�́��7����J�F�n���E��w��̤�����>e;4a{Tii�EZF���Y�iPgfA͑����ެD���3_�/��V�'�!&
��ka�@0D N��X<+!�"������b^,�^�
��X�Y�	�Ps�̋<�%��5���bK^�����		lf��K7¦ta�PM��,bx��b1o���B������yh�h�(4@4@�9MM�[����N�33>==>
�Y�xq�j��):�������j�8�l�8%hMt�Eku#�-kMp؉[��Ya�4A��۷- ƛ��n(Y!w��� �����;`��>��Bר��_�LQ�/�%<��S��6j&L��Mj�4K"E�I�,ƿ�;f���Ϳ��ic��
����(FI�,�Ͼ�g�|g�-vVM�~wv��w�{眇��霏�����+ʱ���9kU�<���R���������W����j.W�Xg�%�͗�0T3���ښ����T*J@E��EE��	i�Ĺ�&�d$�n��7ԍ��.C���`��["IC�ܒ�k��["FR��F���ڹE��be[�4�A<tR��	imB"�������*�*���Q+8�N�Ý��S��܍�Sq��u�����R�����l��-� F���u�/0N\����`��S޻{���ޮ1�H/�i��l�����,�=\H!�sD�����.�s��%�AB&��Eǧ \<�����O�{����-�7������S��Ò-NmzY<����̏ץBD��L8��fK��Пg���E�#�Q*�"Z|�E%�
�RD���E�PIoP�@ئ�g[>A�"SMA���b��7�$�9��Ʋ��i��|_���	;�����ח�s����2>
�%�c>�^|��K�%�r����k��m�xq��ÙU�̝���Xb��<.3%+�06i3��-Ƭ��y��p�H���W7��z�<x�p��a�
�>L�O���$-\8ڊn)t�>�cʇ�?�61������'��[_���o}@��!�J����pJ��$�&f_�朎����Yh�7�u�ׂ0t����ۍ����PE��8��d84$�O�)X��\ N�p��892q
�+ ֟b��\١D����7s�� n낯�-�{z��n�E��Ζ z1ע!�^�DN��5(D.���sR�Q�*B��a\
H��>�����9�%L��NP#�j�������K��x	�Ic@Qע���+�!Ƨ
��R��K�`'����@���	5Fq��0Ÿ@�5���U�9�V4�x�񂸯^.m�x<H��f5xq�ꘆ�X�!O���-{'��^03Wr����{������)�0�x�f�D�a�J��H�D#��P���W�gIEND�B`�lib/img/edit_tinymce.png000064400000000362147361034410011255 0ustar00�PNG


IHDR�a�IDATxcP,��@���r0H� 6@���z��Ǥ��l�x�m۵��[�7�f��|`j6���?t�M0VF��L�A�ط��%+�=�_��>�w<d�4@�%���W������mZ��o��$��(��r�h�rfch�g�!��	�0�k�#�f2��Y��*�=3�m|TM*eIEND�B`�lib/img/spinner-mini.gif000064400000002632147361034410011173 0ustar00GIF89a�XXXzzz������666���hhh���FFF$$$������!�NETSCAPE2.0!�
,@p�ɗ(uJ�:�S"���$�G�J�����"S�a0	���%��$R��A��d��C��-Ðד)L�XwVrP5�g��*"A`��	
:1
o!Y3�  �!�
,]�����%�<C�IE�8c�D0ap'CaF�IC�0[�֣�X��@@���7i,��O�h$���(� �U��%s!s�j#!�
,Z����X"�XJE&9@�%��TF�5�!HAр��ơ=� #
���R.��p�|���V�}�����%	���(�ā�!��9���S"!�
,\��)	�2����!�&
B��!)���%֠���!`�%����
b0p�r�a�(��a|P��D�}��BIB��&�-��!�
,EɉB�Xi���!(^G�0�QX^O��a�J��� ��C�rɔ>C�@�9N�"BkJf�PE!�
,k��鄠إ&U���%�(�ˆف�1��Ј
aE�,��@!HL����8�Ă`��U
X(���� ��C��A6O	0x0&�C�1�fJPh#il�~!�
,[��ΡX
I���x�JJ2>K�Y���H�-t�L�A�&�$��@��LcQ(N@#��<1P�x$n���x\y�ĚH�;�1(�)!�
,V��#��M�Z�@��]��$�vPN8�HɁ�A�n����� @�5��H+k�ñ�
�b:[���W� Q86����4�c!�
,]��R�X�w�v\G�T�u��a�e	��L x�/�(
'����a0���`�M��a(x�b� 0��V(�z�	#�~>Ƿ !�6J9!�
,Z���R��ji��Z�m�v��N�"\TI�2���Ba���J����r�&	D�)a��Eá8ICF,�-LSp���F`u,�5�F�E!�
,X��I_�x�S��E�R���	��M�ZFӉ�g���`��Dc��U��D�p>
���# $�D 7��7`�&H��&���!�
,Z�I1���
ò���|R����i㕰�Y+)Ų(���`����%xp��c�i(�N "0lN��d PH��N]@<̏F`}q���/)�D;lib/img/edit_pixlreditor.png000064400000001562147361034410012155 0ustar00�PNG


IHDR�a9IDATx�m�`a�wLj�)"��mi�f۶m۶m۶m)�����B m	���j�%��z�"���'oj��Q���K<E�W�����R�J��؀���D=��)���
���C|)
�G�rӻ�A��s�R��$�'YS:��m���*��f�3}���أ����D�X
ŵ��^{}Gξ�����u�F��IS���VHHRn���~�u��FpV��(�:����sȲ�9G�`J�!���3�v�3�I����8p��(���*��3$[y�W�/�>�m<K����"�[׵h껜��b*d�iM�U�;��t��p�'Ӹ���5�|fb"Έ��[Jip����T]�Q��I�w��u���IAF؛�`фh�?�۴(�� ��Q���<|�{Vh�L]�j���H�� �5��(o�����fh��X�(�;�ZD�m����6h�}	�.؇p�4ƍ�o�)-1	�a;1p�t|7���Y�қ>����'�I$�7f��C!��~ܭ� ^���Z:�x���ڏ�ϝ��8��OÞ�<`�O4�-8�xϐ`���U���jtGh:�3��n�us�r�d2�p���&�R/�T�Y���Y5N�-��p���6����+�
��Q]�.��wy�w�-�P�����|��n�vAk��H�VbM�0���)�Z��x�!Γ��X�YMw�����Sa'�W�$pS�Oh�~>X'ɷ�X'R����3�ωޕF�IHgY+�-�ǭJ+�`��I�E��px
��?ӭ��$�-Ր����! ��r���Ue OZ �Q�Ͻ�,@�	IEND�B`�lib/img/tui-icon-b.svg000064400000046440147361034410010570 0ustar00<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-b-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#555555" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-b-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#555555" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-b-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#555555" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-b-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#555555" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-b-ic-delete" viewBox="0 0 24 24">
    <g fill="#555555" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-b-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-b-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-b-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#555555" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#555555" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-b-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#555555" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-b-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#555555" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#555555" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-b-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#555555" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-b-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#555555" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-b-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#555555" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#555555" d="M25 3h1v9h-1z"/>
        <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#555555">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-b-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-b-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-b-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#555555" d="M25 3h1v9h-1z"/>
        <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-b-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#555555"/>
        <path fill="#555555" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-b-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#555555" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-b-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#555555" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-b-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#555555" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#555555" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#555555" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-b-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#555555" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#555555" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#555555" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-b-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#555555" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#555555" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-b-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#555555"/>
    </g>
</symbol><symbol id="icon-b-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#555555" rx="1"/>
    </g>
</symbol><symbol id="icon-b-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-b-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#555555" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#555555" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-b-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#555555" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#555555" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-b-ic-text" viewBox="0 0 24 24">
    <g fill="#555555" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-b-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#555555" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#555555" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-b-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>lib/img/volume_icon_local.png000064400000000545147361034410012274 0ustar00�PNG


IHDR�a,IDATx�ݐ�YQFﺻ����`))9
�����t0��#��!��~�}皚�G,..V�o�W=;;�x<3�z�1i<�ht�d2��T$"C��7h4zj6�̽VN�SO>�/�;�Z�x�gp�q/�K<�X,ǃ�@ �7����UN&_,�a�׀�>_8
W=���p8�r��f�{�7wv��~�g{�N�\$г���s����2P��	T�����O����=��D�!=�5�ii}��{��fcc�\.���ҫ:�M��r�.���9��^}pџ�|p<d�W�G,�hIEND�B`�lib/img/progress.gif000064400000001233147361034410010423 0ustar00GIF89a�p�(a8��TS��N�� t�
Q�h�7��3��*��g�3��?��5��3��D��h�`�/�څ��p��;�H����n�0��_��g��f��Z��>��j��b��f��)y�p�4�肣�jΏ��n�w��}�]�.���!�NETSCAPE2.0!�,[��j%$O��R)p4N�U�Z��C��>
%�P
	�aXߝDzA_�a���� ������-(*�*����������A!�,P`&Vg��'�@[<B,?Nk��$�R�-��Q�GG�\24�a1�."V�Ex�^�1&7Ȓ�fc�<��|`���C!�,Y��p(�X8�$�h:���`J}8�O�4��*�MG� (�Z�r�;B$�0��b.�4����
�
�����������A!�,b@��c����e(L�t*9�X��P*Q���C��R"
C�}�\�i�{�2���

����������������A;lib/img/tui-icon-c.svg000064400000046440147361034410010571 0ustar00<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-c-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#e9e9e9" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-c-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#e9e9e9" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-c-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#e9e9e9" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-c-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#e9e9e9" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-c-ic-delete" viewBox="0 0 24 24">
    <g fill="#e9e9e9" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-c-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-c-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-c-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#e9e9e9" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#e9e9e9" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-c-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#e9e9e9" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-c-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#e9e9e9" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-c-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#e9e9e9" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-c-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#e9e9e9" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-c-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#e9e9e9" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#e9e9e9" d="M25 3h1v9h-1z"/>
        <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#e9e9e9">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-c-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-c-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-c-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#e9e9e9" d="M25 3h1v9h-1z"/>
        <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-c-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#e9e9e9"/>
        <path fill="#e9e9e9" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-c-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#e9e9e9" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-c-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#e9e9e9" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-c-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#e9e9e9" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#e9e9e9" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-c-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#e9e9e9" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#e9e9e9" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-c-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#e9e9e9" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-c-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#e9e9e9"/>
    </g>
</symbol><symbol id="icon-c-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#e9e9e9" rx="1"/>
    </g>
</symbol><symbol id="icon-c-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-c-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#e9e9e9" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#e9e9e9" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-c-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#e9e9e9" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#e9e9e9" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-c-ic-text" viewBox="0 0 24 24">
    <g fill="#e9e9e9" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-c-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#e9e9e9" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#e9e9e9" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-c-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>lib/img/black-search.png000064400000002067147361034410011123 0ustar00�PNG


IHDR
	��tEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:527720D6467011EB9138DD03EEC09B46" xmpMM:DocumentID="xmp.did:527720D7467011EB9138DD03EEC09B46"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:00E09FFF466E11EB9138DD03EEC09B46" stRef:documentID="xmp.did:00E0A000466E11EB9138DD03EEC09B46"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��}=�IDATx�t��	1�����d�V��<l���_5X�G��s:�.<�%��!�1K�2�Ą�97�
�x��?KV�1}�:�G�9U;�qӵ���k�['}�-��N��3
䷆�.yp�J41�	�<h��3������R��`]lȇ�:5�JU��4�ݯ��'��Ϡ&IEND�B`�lib/img/volume_icon_zip.svg000064400000021372147361034410012020 0ustar00<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1" width="96" height="96"><defs><linearGradient id="i"><stop offset="0" stop-color="#2f2f2f"/><stop offset=".4" stop-color="#fff"/><stop offset=".6" stop-color="#979797"/><stop offset=".8" stop-color="#505050"/><stop offset="1" stop-color="#e6e6e6"/></linearGradient><linearGradient id="h"><stop offset="0" stop-color="#ededed"/><stop offset="1" stop-color="#b0b0b0"/></linearGradient><linearGradient id="g"><stop offset="0" stop-color="#a2a2a2"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="e"><stop offset="0" stop-color="#b4b4b4"/><stop offset=".2" stop-color="#646464"/><stop offset=".5" stop-color="#fff"/><stop offset="1" stop-color="#3c3c3c"/></linearGradient><linearGradient id="f"><stop offset="0" stop-color="#fff"/><stop offset=".5" stop-color="#8c8c8c"/><stop offset=".5" stop-color="#cfcfcf"/><stop offset=".6" stop-color="#fff"/><stop offset=".8" stop-color="#c8c8c8"/><stop offset="1" stop-color="#505050"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#818181"/><stop offset=".2" stop-color="#f9f9f9"/><stop offset="1" stop-color="#dcdcdc" stop-opacity="0"/></linearGradient><linearGradient id="c"><stop offset="0" stop-color="#dcdcdc"/><stop offset="1" stop-color="#fafafa"/></linearGradient><linearGradient id="a"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="d"><stop offset="0" stop-color="#b4b4b4"/><stop offset="1" stop-color="#dcdcdc"/></linearGradient><linearGradient x1="19" y1="74" x2="87.5" y2="27.4" id="t" xlink:href="#a" gradientUnits="userSpaceOnUse"/><linearGradient x1="6" y1="73" x2="24" y2="73" id="q" xlink:href="#b" gradientUnits="userSpaceOnUse"/><linearGradient x1="6" y1="73" x2="24" y2="73" id="r" xlink:href="#b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1 0 0 1 96 0)"/><linearGradient x1="38.7" y1="65.6" x2="38.7" y2="5.8" id="s" xlink:href="#c" gradientUnits="userSpaceOnUse"/><radialGradient cx="90" cy="90" r="42" fx="90" fy="90" id="p" xlink:href="#d" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 -1.08503 2 0 -90 187.7)"/><clipPath id="v"><path d="M66 6v55a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V6h-4v2h-4V6h-4z" fill="#fff"/></clipPath><filter x="-.2" y="0" width="1.3" height="1.1" color-interpolation-filters="sRGB" id="w"><feGaussianBlur stdDeviation=".9"/></filter><linearGradient x1="68.8" y1="59" x2="75.3" y2="59" id="u" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -1)"/><linearGradient x1="69" y1="54" x2="73" y2="54" id="x" xlink:href="#f" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -1)"/><linearGradient x1="63.5" y1="64.2" x2="79" y2="65" id="M" xlink:href="#g" gradientUnits="userSpaceOnUse"/><filter x="-.2" y="-.1" width="1.3" height="1.2" color-interpolation-filters="sRGB" id="N"><feGaussianBlur stdDeviation=".5"/></filter><linearGradient x1="69" y1="17.5" x2="75.1" y2="17.5" id="P" xlink:href="#h" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1 0 0 1 144 -2)"/><linearGradient x1="68" y1="17.8" x2="76" y2="17.8" id="O" xlink:href="#h" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -2)"/><linearGradient x1="68.8" y1="59" x2="72.3" y2="59" id="Q" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.12627 0 0 1 -7.4 -49.5)"/><linearGradient x1="69" y1="54" x2="73" y2="54" id="F" xlink:href="#i" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1 0 0 1 144 -4)"/><linearGradient x1="45.4" y1="92.5" x2="45.4" y2="7" id="j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.00587 0 0 .99417 100 0)"><stop offset="0"/><stop offset="1" stop-opacity=".6"/></linearGradient><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="l" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="m" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="n" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="o" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="translate(0 -97)"/><linearGradient x1="32.3" y1="6.1" x2="32.3" y2="90.2" id="k" xlink:href="#j" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0238 0 0 1.0119 -1.1 -98)"/></defs><g transform="scale(1 -1)"><path d="M12-95A10 10 0 0 0 2-85v71A10 10 0 0 0 12-4h72a10 10 0 0 0 10-10v-71a10 10 0 0 0-10-10H12z" opacity=".1" fill="url(#k)"/><path d="M12-94c-5 0-9 4-9 9v71c0 5 4 9 9 9h72c5 0 9-4 9-9v-71c0-5-4-9-9-9H12z" opacity=".1" fill="url(#l)"/><path d="M12-93a8 8 0 0 0-8 8v71a8 8 0 0 0 8 8h72a8 8 0 0 0 8-8v-71a8 8 0 0 0-8-8H12z" opacity=".2" fill="url(#m)"/><rect width="86" height="85" rx="7" ry="7" x="5" y="-92" opacity=".3" fill="url(#n)"/><rect width="84" height="84" rx="6" ry="6" x="6" y="-91" opacity=".5" fill="url(#o)"/></g><path d="M12 6a6 6 0 0 0-6 6v72a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6V12a6 6 0 0 0-6-6h-9v3h-6V6H12z" fill="url(#p)"/><path d="M6 56v28a6 6 0 0 0 6 6h12V56H6z" fill="url(#q)"/><path d="M90 56v28a6 6 0 0 1-6 6H72V56h18z" fill="url(#r)"/><path d="M6 82v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".1"/><path d="M6 78v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".8" fill="#fff"/><path d="M6 76v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".1"/><path d="M6 72v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".8" fill="#fff"/><path d="M6 70v2a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6v-2a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6z" opacity=".1"/><path d="M12 6a6 6 0 0 0-6 6v56a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6V12a6 6 0 0 0-6-6h-9v3h-6V6H12z" fill="url(#s)"/><path d="M12 6a6 6 0 0 0-6 6v56a6 6 0 0 0 6 6h72a6 6 0 0 0 6-6V12a6 6 0 0 0-6-6h-9v2h9a4 4 0 0 1 4 4v56a4 4 0 0 1-4 4H12a4 4 0 0 1-4-4V12a4 4 0 0 1 4-4h57V6H12z" fill="url(#t)"/><path d="M66 6v55a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V6h-4v2h-4V6h-4z" fill="#252525"/><path fill="#4d4d4d" d="M70 8h4v49h-4z"/><rect width="6" height="4" rx="1" ry="1" x="69" y="56" fill="url(#u)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6"/><path d="M66 6v55a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V6h-4v2h-4V6h-4z" clip-path="url(#v)" fill="none" stroke="#000" stroke-width="2" stroke-linecap="square" filter="url(#w)"/><path d="M69.5 51c-.3 0-.5.2-.5.5v3c0 .3.2.5.5.5h1c.3 0 .5-.2.5-.5V54h1.5c.3 0 .5-.2.5-.5v-1c0-.3-.2-.5-.5-.5H71v-.5c0-.3-.2-.5-.5-.5h-1z" id="y" fill="url(#x)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6"/><use transform="translate(0 -6)" id="z" width="96" height="96" xlink:href="#y"/><use transform="translate(0 -6)" id="A" width="96" height="96" xlink:href="#z"/><use transform="translate(0 -6)" id="B" width="96" height="96" xlink:href="#A"/><use transform="translate(0 -6)" id="C" width="96" height="96" xlink:href="#B"/><use transform="translate(0 -6)" id="D" width="96" height="96" xlink:href="#C"/><use transform="translate(0 -6)" id="E" width="96" height="96" xlink:href="#D"/><use transform="translate(0 -6)" width="96" height="96" xlink:href="#E"/><path d="M74.5 48c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-1a.5.5 0 0 1-.5-.5V51h-1.5a.5.5 0 0 1-.5-.5v-1c0-.3.2-.5.5-.5H73v-.5c0-.3.2-.5.5-.5h1z" id="G" fill="url(#F)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6"/><use transform="translate(0 -6)" id="H" width="96" height="96" xlink:href="#G"/><use transform="translate(0 -6)" id="I" width="96" height="96" xlink:href="#H"/><use transform="translate(0 -6)" id="J" width="96" height="96" xlink:href="#I"/><use transform="translate(0 -6)" id="K" width="96" height="96" xlink:href="#J"/><use transform="translate(0 -6)" id="L" width="96" height="96" xlink:href="#K"/><use transform="translate(0 -6)" width="96" height="96" xlink:href="#L"/><path d="M65 6v55a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V6h-1v55a3 3 0 0 1-3 3h-6a3 3 0 0 1-3-3V6h-1z" fill="url(#M)"/><path d="M69.5 10.5c-1 0-2 .8-2 1.8v10.9c0 1 1 1.8 2 1.8h5c1 0 2-.8 2-1.8V12.3c0-1-1-1.8-2-1.8h-5zm1 9h3v1.8h-3v-1.7z" transform="translate(0 -2)" stroke="#000" stroke-width=".5" stroke-linecap="square" stroke-opacity=".6" filter="url(#N)"/><path d="M69.2 9c-.7 0-1.2.5-1.2 1.1v10.8c0 .6.5 1.1 1.2 1.1h5.6c.7 0 1.2-.5 1.2-1V10c0-.6-.5-1-1.2-1h-5.6zm.7 8H74v3h-4v-3z" fill="url(#O)"/><path d="M74.6 10c.2 0 .5.2.5.5v10c0 .3-.3.5-.5.5h-5.1a.5.5 0 0 1-.5-.5v-10c0-.3.2-.5.5-.5h5zm-.5 7H70v3h4.1v-3z" fill="url(#P)"/><rect width="3.4" height="5" rx=".6" ry=".5" x="70.3" y="7.5" fill="url(#Q)" stroke="#000" stroke-linecap="square" stroke-opacity=".6"/><path opacity=".3" d="M70 16h4v1h-4z"/></svg>lib/img/volume_icon_sql.png000064400000001074147361034410011777 0ustar00�PNG


IHDR�aIDATxڍ��A��͸�TKqm)�m۶m�x�m_�g����җ�
��F��b�ܹS�;�T�<�`ڴi˳��III!::�����|��Ջ����K &&���
���u�aC��*�h�R�H����Z���7���cX��k���	�ʅƂ�M��lw�	�ryy��\�K��g,h߫g-" 0Q��͵��ܹöm�~(��:A��ӑe�'�?#�"7���@��c�IM�5��9�\G�߆)IIIF���J��O+0���tBCCy��.>�ԵG\������<����e#AC�B���Z9��ԣc��j�:�^�a�`�ڵk����u�.\`�޽�ܹ��r��Y˗�-L�2��'�u��ݏ�|r��_�cC�KOFk~�Ǐ_��'''~����/����>��'��݉�c�0a�
�;���k,Y�A���pD��={��b~w���{�o�
p�'֏���X1G�m�T���p]]�q���aÆ"G��j���?�|䊃˫7IEND�B`�lib/img/ui-icons_ffffff_256x240.png000064400000007257147361034410012655 0ustar00�PNG


IHDR��IJ�PLTE�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������)[VZtRNS�3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�#�-�IDATx���v�8�a��ϼ�1�ȩ����&0���0w���7w@���VT���q�- &�j���b�[0�}+��9��fz����)d�m�^�&�����?�k0�<r�
h
����%FAP�b/��
�!�W���a�ax�;��׍�wT���P�e}�%Y@���ܯ�T��CY_q#��3��*��]ŕ��pu~f�~|=����5瀹
�0�0<=ޗ
�}_�@�vG���eA�����e��mCnj��0~ߏ�C��@l{!
�]A� �����;�;����A``9�u��%�k�f��,����j;B�q}AgHʹ�W�w��`
�0�0$E�w�+8р��W<V�
h��P��YI�t����Uzs�~��
����E*��D�}�9�������g�Yd�+XN
�{��?F~葟2��l06�A�
8)�t
/ɴ��+��h�X�!PԕC�?�+"N������$��Qs�i)�W��9��#�A����a�a�Ϥ�f�������=T�暇�L��Z6L�P�g�Ů��,�{�{aH�~ld�H�N��q͌Y��"��(�)�Bm?_���Ѣ�6�ZP�B��g\c@dD�����O��E��(��x@��!��r=���9^��>g�an�ቮ�����}��u��LlS�����^�u,����N2���a�!���hܧ{����l3�_ǀ=����r/t�v�����8�Ǭ���A�+�-�Z?�ӛɎ��s@�����p������V�����8�e�z"���a����C�m#���w7c�A�J�3MJ�1����?��9X��f�ж��z�:�@* 궹�8�>����~��k�Wb�Y�~UP�M ���{��Ÿ��-`%�_�%X P��$&d/f�M�^��;+t{��uQQTE��

f]1`r�-��u.p��;$	P���4=E�r�2P\�@qp�i��L(����H8,����`7��3r@I�C��sDw�8l8xp�N?��p�u��`x$
�0
���@���i�D9e�R�(������>�3E��"��qI��{$�Ƚ F��t4B�<?0��PN��4��$�7n��A�=� ��j�Is�s�
��9���͛Pd; N�r�.<����QŃU��u�B+x�CP�
��X��hO��Z�(r��D2N	�t�ɪ��+*�.���nj�������_lt�	0�ٓ����ۼ{��&Pk{�؜������~��50000pex�i� (H�~"Q+���H�'+��۳����,(����!�K�4i�1�	��*���	L���f���$�3��~���
\�1�	�L4� ��]�@3o�6���x������$&����^2�������a�j�ir;0i}��T�3"@$��F/�x���n�I�����^�5^�@�r�Tꅊ�_�b �z{O�&���&\ȵ�Z.	����
�&����@o�-�]��u@�J�u@C�Z�$������wd����biMi<��釫�?!��.���c<�*r��9�L�nG�?=�<E�9P���p����େ���ʧ��[�I�2�!`���&0�@�$����,ϤH�CxJ	k]�~���H����i����
�gy��Q:����u�����a����$��Ӡ�
��t�����A�Z��k������;I	���<�H����M`)iI��#hx�O?��3>Jvg���s$-㥗xl�yޢdE�ܿP�]�b\��w��@C���Xj�����_"�eI���ܸ�Sd�~!����P�f����s���K��m_}��'_��KQ7�(@���6퓾���	$�2=%��e�
#W��^P)M �?�
�3�L�
0��=@�9��)�dB�Rs�0���J�XTU��d�_Q.������^��#��{���,�a���#�d���G^ye�ʂ#��s��x{������jy�\�a���@瘟���'�|��1`�8;�Q�yY���=��/��P%,�2X�s�$���d؋tx�էk��P��b���ip�g�c��겜L�i�ZԡM��G�ʞ��i���(�`��V��%l]Q�$�<(�'6���F���)����H,��u�����$��I��������v(�D~���tu�	~��3+~�U�Q�GW������~j9jm��]6@X���뺿}�RSg�셼3��fn��l	k�W�|�P�}p���7�죠;B�Z�&������ϔ#hB��&���;@͊:���/�d�՟
 tZ�BR��"�ٌ����I�`�o�v?�!`5|���
l�V�������x9;���o[g	�I�n��z��M�.���7��;�2�x�%���wHl�k�|�x�%�"	�xB:C=g���7�|r1S����Z]G^��+�Et��v����i6=@W����6�d���Tn�4�n��8��K���+�t��ǀK{���,0\��
�}$8
W�~�⯚ ����J��?���R��-�K%�1>�ϸ�ߕ^����B���kLPm!�aQ�~��C{��u�^P`~�9�GD����3L�MG�|�ht�6�)��Ng�M�;;@�hDž%��M����~w2���0�*��.�K;V���P����[>��T??U�z����?D��������u�ݦ�׷_�`�������_�.���sH�w�~_���{s��t[�۞��;}&)u�Z�Z����K��.k����7]¹����?���: -`����q~�~w;,z�/�w~������[���L����6w�ؠ����MӷC���X�!=�B��`���5��RxWfzf��w�����5�4�׷�e�2~}��<�����ۉ��[�{�3X�;�� uPB�V@��|@H��Cc�p���нB����?ҽ�H����L�W��^�f0��L�zQ�/��n�#_?���V?���@d�*g�L�W�:��'ǀ������9�����h@IEND�B`�lib/img/resize.png000064400000000123147361034410010074 0ustar00�PNG


IHDR
e�t�IDATxc�̛3�̙3�`􈑤tfV�A]KpIEND�B`�lib/img/volume_icon_dropbox.svg000064400000000470147361034410012667 0ustar00<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48"><g fill="#1e88e5"><path d="M42 14L31.4 7.3l-7.4 6 11 6.4zM6 25.6l11 6.5 7-5.5L13.5 20zM17 7.3l-11 7 7.5 5.7L24 13.3zM24 26.6l7.2 5.5L42 25.6l-7-5.9z"/><path d="M32.2 33.8l-1.2.7-1-.8-6-4.5-5.8 4.4-1.1.9-1.2-.7L13 32v2.6L24 42l11-7.2V32z"/></g></svg>lib/img/quicklook-bg.png000064400000000107147361034410011164 0ustar00�PNG


IHDR'f�nIDATx�c`8�$09�xL�IEND�B`�lib/img/volume_icon_network.png000064400000001550147361034410012670 0ustar00�PNG


IHDR�asBIT|d�	pHYszz2��tEXtSoftwarewww.inkscape.org��<�IDAT8�}�KHTQ���s�Ν��5�1LgLō-j1FXF/�E��0saJO�PȠ'-"�ME�Z�b(�\�B&*�H)(�$��dN��{Ϝ���p����s~ߏ�;����:�VZ������M�F�ͻ�o��@ ��d�JO�پ/_>'��rvvV��ݓ��e0�<6;;ϼ��a颣�pCs�����'O�9���
��`��D�q5/��&S@��ڢ�}ފ
������/�׻ɤ�H���q$���*����w���.46n�s:s����O	!����ӧi�v�����ۺu��]�|�������������FH�R��ͦ!7w�v;l6
YY*(�8���)+�:���}�Pۑ
B�"�X,�x|�iY`Lc
��pL���`���t�@��uC�4�P
EY�?���R���P�|�s]�A׳!���(
 ��r��SQ�NÑ𳩩I$	��	M�ar2Ø����##/�r��eY�,�x�2�2�l(��]���t�;N(,̇�B�����DMM������B�Iz�sgN�].W��<_KXU>��eڜ��߼-��oP(�i�g4:�uj����7�f~�%yx���[��cH�[}/}��Z�M��; ����d�z>v����
|>�,�VPPЫ�z�"�V��so7�O1&fff^�qVU����0_"����1���1K�㔚T�S�SK�Lp��H�i�@`4�|�"�c�,IEND�B`�lib/img/edit_simplemde.png000064400000000220147361034410011555 0ustar00�PNG


IHDR���RPLTE��a���������������������3IDATxc������WCH�`��%�bii�P1F\��HII���JR�HF�IEND�B`�lib/img/volume_icon_trash.png000064400000001302147361034410012313 0ustar00�PNG


IHDR�a�IDATx�}��-G����~;�mEuPFUT�Qm[���ն�cc�~�J�I��~ϐ!c�}�?pߥ������li;�ҲRi!x��ދ����`�I����G/���Dp��W������N!�z�BA5;m��(D��H7-���}[o����_���<brll����Kכ�_[*�(B)��Z��sH�Ӵ���<��n��1�w磒a��u����kl|a�<8��v��eZ��~1�e ����Z{o���^�-̣X�C��XT���luP�7�lw`X�;B��\vΩ��o���j��W���r�F�A]*l��l�7ԡ�B<~�Y'7SA��Ԥ=>1�4���>���@���< }�ON�wiX2c�w���n�����R�C�3��\ſ1��!�<߇��h�B��Bp���߂�Ԝ����2yJ)�T(�q���(���i�$H��%������
$PJ�@��LHz�<��	B�s��,E"�s
Ԗ<5�����זevV._�H���J�C
����N��22���S�����TJc`J
JᚦQ�����G|�Kq���l����jժ�ȱ�f��@�G_U��^~��*?��!�7�#�X�-[IEND�B`�lib/img/volume_icon_box.png000064400000001155147361034410011770 0ustar00�PNG


IHDR�a4IDATxb`
e�Y?W2�R�h�����b9�ٷ�&fI� �O8۶m۶m۶�l۶m���;yS��{���V�7�PD4A�ЀB��!�B�W^yX�.�ކwи��s��[@��C�ӑX;��c��u0��Ũ{�\@�q��Ij��>���kh�:�SD6�K6�#��5�;~���Pk�V]��5�X���E`v@�T3-��ˮ�Q"��(o�f�F���ȁ�DrӼ0��v=��K}���;'�V4�����J��c�ٿXu���b��,���a�Kԋd��"S2�r�	�b���	�Tki����92���j�2���~`�;�"<@(W���#����6^�j�0M:��QG���V��D}�>�����
����eMb��1��+��1�}�p\�鏁�~b�5:%4J����
�6���Kf����ݯ\�]�Dlj�V)�1@a���h�r��M���e*
_��c�e���ږ6��i)Qʫ��Ե��)�s��G 8oݽ�e�������7����@�w2������pe�IEND�B`�lib/img/volume_icon_zip.png000064400000000733147361034410012003 0ustar00�PNG


IHDR(-S�PLTEGpLɆ�̈�|�uƄ̈�\Â�y�r�f�l�ciF�}`@www�����ߘ���׏���ԋ�Ї���υ������۔�͂���ˁ��|�ڒݾz����ǥ`���v���������ϭi��K��W̪f����.�����A�����AtRNS��a��������
z�,��f�3Q��<��IDAT��N�0���P�
��7�q����znB�������A��T�u�j�^A�yk8�5� BX:.��%@�	 (�,O�YW ��6���ز^ȮS^���n�~�NO��[��X͒[�"���'�C
��&[�0K����Ҡ��K`(���O��:��v<QOH-�w�IEND�B`�lib/img/volume_icon_ftp.png000064400000000563147361034410011773 0ustar00�PNG


IHDR�a:IDATxڍ�D�p�w�v�)����
"t@�s��+�@�"@����mX�7�m��?��{ϳI�&��f�I]��y�y^�n3��� �cͶm�u�����@{0�r䬼��bE�8�S����a����(�
�q��@���r)̚������L�JӴ�t:M�pV�X�6���0�l�.��\����Y�SY��j�`�5��v��ݓ������#e�m��7�"�=���څs��3|�%����]%�72����(��d�v�p&�'y�Z�7��1@:?=��])XVIEND�B`�lib/img/crop.gif000064400000000503147361034410007521 0ustar00GIF89a����!�NETSCAPE2.0!�	
,
��k�TL�Y�,!�	
,��j�^[С�쥵!�	
,L�`����bдXi}�!�	
,��`�z��bh�X�{�!�	
,
�	�k�TL�Y�,!�	
,D��j�^[С�쥵!�	
,�a����bдXi}�!�
,��a�z��bh�X�{�;lib/img/win_10_sprite_icon.png000064400000002601147361034410012271 0ustar00�PNG


IHDR�<LꩼtEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:7A59BA79476211EB8B75839F21D6E908" xmpMM:DocumentID="xmp.did:7A59BA7A476211EB8B75839F21D6E908"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:7A59BA77476211EB8B75839F21D6E908" stRef:documentID="xmp.did:7A59BA78476211EB8B75839F21D6E908"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Z���IDATx��=K1��]�D�-��.n.�:I�
������.nn�����U��x�U�#���r�<���.yh���I��01Crrrrrrrr�!�T���7�h
S�2]�j�ߛr�h��+��F��������b�|\�g��Q��᫑����!G�r�e0ɂ~��5*%GQ�0�^�Y9��כ%'TBʰB�AB�Le�c��N0���w�~{m��T���%Ir�_KVm̥��g&�Ln�&�[���������(�~�ǧgzmZr��V�z�����=ǰ����������͕�N�Dv~i,o��f�#޷�+��m�z�w}�/Z�œ��qI-�.��;�d��xW���&�H�� E1l�*Ps9L��#rA���$>��L���QN>mI*D6�ؒO�\��Y�$G�cM>��y�*��:�8���Jp�``��t��
        Ԟo:�L!�[#IEND�B`�lib/img/fm_close_icon.png000064400000003050147361034410011374 0ustar00�PNG


IHDRr
ߔtEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:D34731D3212C11E8953292F3C7C28D8F" xmpMM:DocumentID="xmp.did:D34731D4212C11E8953292F3C7C28D8F"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:D34731D1212C11E8953292F3C7C28D8F" stRef:documentID="xmp.did:D34731D2212C11E8953292F3C7C28D8F"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>���IDATx�̖�K�A�9S%n�JG�E,h!�8H@S�s6�T���@R�n�M�d
.AP��":�V��}�pw�_�i�r�����ݻw/��=h��Bs�4
����jP���&�Q,��6�OP۞�;>�>����M��;&���g�t]@�l�Ơ(M�}Z���t�B?�U��b8m=�l1��mh�������#�d��0�^�m�8�G���	���Z�A�hZ��uh�,3�
^h�n3-�$D�,t�r�Y&M�W=˘p�,�\6sy�Ő(�C�:�&=�_<�P�z����\Gs���{���s��$����2����e{d�)~Y�C����\C5l��0��LJ�=gn|b�,c��ٮai��!�/�VL�wF���ꙶ��y$cP����&�0������¾PH��Kƭ�}c�o���7
:FƵb8��Bɂ�{Z���}פC��g�ӹ�G�j��@��O��G���oxSO��&�c�ud��:�eR�/%H��Тq6а�o����>5����Y�M���)��箮s�M^aY �}���-[\��K�~���l�,1�q�r��\�<a�Y��j)x����x�Kq��ٴ]D��2���U��K�,��
0J��8��g�IEND�B`�lib/img/volume_icon_network.svg000064400000031444147361034410012710 0ustar00<svg xmlns="http://www.w3.org/2000/svg" width="160" height="160" viewBox="0 0 42.33 42.33" id="svg8"><g id="layer1" transform="translate(-48.98 -204.72)"><g id="XMLID_16103_" transform="matrix(1.05625 0 0 1.0371 44.78 200.04)"><ellipse ry="1.9" rx="14.6" cy="43.1" cx="24" id="XMLID_16108_" opacity=".15" fill="#45413c"/><path d="M43.3 27.4c0-2.5-1.5-4.6-3.6-5.6.1-.6.2-1.1.2-1.7a6.8 6.8 0 0 0-9.4-6.3c-.8-4.8-5-8.5-10-8.5-5.6 0-10.2 4.6-10.2 10.2v.7a9.13 9.13 0 0 0-5.5 8.3c0 5 4 9 9 9h23.5c3.3 0 6-2.7 6-6.1z" id="XMLID_16107_" fill="#fff"/><path d="M37.2 29.2H13.7a9.1 9.1 0 0 1-8.8-6.9c-.2.7-.3 1.4-.3 2.1 0 5 4 9 9 9h23.5a6.06 6.06 0 0 0 5.7-8.2c-.8 2.4-3 4-5.6 4z" id="XMLID_16106_" fill="#f0f0f0"/><path d="M43.3 27.4c0-2.5-1.5-4.6-3.6-5.6.1-.6.2-1.1.2-1.7a6.8 6.8 0 0 0-9.4-6.3c-.8-4.8-5-8.5-10-8.5-5.6 0-10.2 4.6-10.2 10.2v.7a9.13 9.13 0 0 0-5.5 8.3c0 5 4 9 9 9h23.5c3.3 0 6-2.7 6-6.1z" class="st4" id="XMLID_16105_" fill="none" stroke="#45413c" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"/><path d="M30.4 13.8a7.68 7.68 0 0 0-4.1 6.5" class="st4" id="XMLID_16104_" fill="none" stroke="#45413c" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"/></g><g id="g3965" transform="matrix(.81344 0 0 .81344 50.86 206.3)" overflow="visible"><g id="Layer_1"><g id="g1182"><path id="path1183" d="M36.05 41h-8.6a1.5 1.5 0 0 0-.73-.64v-8.69h-4.88v8.69a1.5 1.5 0 0 0-.73.64h-8.6v4.88h8.45A1.5 1.5 0 0 0 22.4 47h3.75c.7 0 1.28-.48 1.45-1.12h8.44z" opacity=".2"/><path id="path1184" d="M35.86 40.82h-8.59a1.5 1.5 0 0 0-.74-.64v-8.7h-4.87v8.7a1.5 1.5 0 0 0-.74.64h-8.6v4.87h8.45a1.5 1.5 0 0 0 1.45 1.13h3.75c.7 0 1.28-.48 1.45-1.13h8.44z" opacity=".2"/><path id="path1185" d="M35.67 40.63h-8.59a1.5 1.5 0 0 0-.74-.64V31.3h-4.87v8.69a1.5 1.5 0 0 0-.74.64h-8.59v4.87h8.44a1.5 1.5 0 0 0 1.45 1.13h3.75c.7 0 1.29-.48 1.45-1.13h8.44z" opacity=".2"/><path id="polygon1186" fill="#616161" d="M11.95 40.44v4.88H35.5v-4.88h-.68z"/><linearGradient y2="44.64" x2="23.72" y1="41.11" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_20_"><stop id="stop1188" offset="0" stop-color="#cecedb"/><stop id="stop1189" offset=".19" stop-color="#fff"/><stop id="stop1190" offset=".48" stop-color="#cecedb"/><stop id="stop1191" offset=".75" stop-color="#b3b3c6"/><stop id="stop1192" offset=".99" stop-color="#828282"/></linearGradient><path id="rect1202" fill="url(#XMLID_20_)" d="M12.62 41.11h22.19v3.53H12.62z"/><path id="polygon1203" fill="#616161" d="M21.28 43.96h4.88V31.1h-4.88v.37z"/><linearGradient gradientTransform="rotate(-90 -256.9 586)" y2="868.38" x2="291.57" y1="864.85" x1="291.57" gradientUnits="userSpaceOnUse" id="XMLID_21_"><stop id="stop1205" offset="0" stop-color="#cecedb"/><stop id="stop1206" offset=".19" stop-color="#fff"/><stop id="stop1207" offset=".48" stop-color="#cecedb"/><stop id="stop1208" offset=".75" stop-color="#b3b3c6"/><stop id="stop1209" offset=".99" stop-color="#828282"/></linearGradient><path id="rect1219" fill="url(#XMLID_21_)" d="M21.95 31.48h3.53v12.11h-3.53z"/><linearGradient y2="39.69" x2="23.72" y1="46.44" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_22_"><stop id="stop1221" offset="0" stop-color="#cf0000"/><stop id="stop1222" offset=".99" stop-color="#ff6d00"/></linearGradient><path id="path1226" d="M27.1 44.94c0 .83-.68 1.5-1.5 1.5h-3.76a1.5 1.5 0 0 1-1.5-1.5V41.2c0-.83.68-1.5 1.5-1.5h3.75c.83 0 1.5.67 1.5 1.5z" fill="url(#XMLID_22_)"/><linearGradient y2="49.63" x2="23.72" y1="37.07" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_23_"><stop id="stop1228" offset="0" stop-color="#fff030"/><stop id="stop1229" offset=".99" stop-color="#ffae00"/></linearGradient><path id="path1233" d="M21.84 40.44a.75.75 0 0 0-.75.75v3.75c0 .42.34.75.75.75h3.75c.42 0 .75-.33.75-.75V41.2a.75.75 0 0 0-.75-.75z" fill="url(#XMLID_23_)"/><linearGradient y2="43.82" x2="23.72" y1="41" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_24_"><stop id="stop1235" offset="0" stop-color="#fff"/><stop id="stop1236" offset=".5" stop-color="#ffe3a9"/><stop id="stop1237" offset=".99" stop-color="#ffc957"/></linearGradient><path id="path1241" d="M21.84 41c-.1 0-.18.09-.18.2v3.74c0 .1.08.19.18.19h3.75c.1 0 .2-.08.2-.19V41.2c0-.1-.1-.19-.2-.19z" fill="url(#XMLID_24_)"/></g><path id="path1242" d="M25.25 1.28L12.14 9.87l-.04.02-.05.04-.04.03-.17.2-.02.04-.04.08-.02.04-.03.09-.02.04-.02.08v.05l-.01.1V33.51c0 .44.28.83.7.97l9.76 3.26c.32.1.67.05.94-.15l13.02-9.77c.26-.2.41-.5.41-.82V4.22v-.05-.07l-.01-.06V4l-.02-.03-.02-.08-.02-.06-.03-.07-.04-.06-.04-.07-.04-.05-.04-.05-.02-.02-.03-.04a4.33 4.33 0 0 1-.11-.09l-.06-.03-.07-.05-.07-.03-.06-.02a7 7 0 0 0-.08-.03l-.05-.01-9.67-2.08c-.27-.06-.55 0-.78.15zM11.69 10.53" opacity=".2"/><path id="path1243" d="M36.14 4.2v-.05l-.01-.05v-.02l-.01-.02a.87.87 0 0 0-.05-.13l-.02-.04-.03-.04L36 3.8l-.03-.03a.94.94 0 0 0-.07-.06l-.03-.03a.83.83 0 0 0-.04-.03l-.04-.02h-.01l-.03-.02-.05-.02-.05-.01-.03-.01-9.67-2.08a.66.66 0 0 0-.5.1l-13.1 8.58h-.01l-.02.02-.03.02-.02.02a.71.71 0 0 0-.11.13l-.02.02c0 .02-.02.04-.03.05v.03l-.03.05v.03l-.02.06v.03l-.01.06V33.5c0 .28.18.53.45.62l9.76 3.25c.2.07.43.04.6-.1l13.02-9.76a.66.66 0 0 0 .26-.52V4.22 4.2z" opacity=".2"/><path id="path1244" d="M25.06 1.09l-13.1 8.59-.05.03-.05.03-.03.03-.18.2-.02.04-.04.08-.02.04-.03.09-.01.04-.03.09v.05l-.01.1v22.82c0 .44.28.83.7.98l9.76 3.25c.32.1.68.05.95-.15l13.02-9.77c.25-.19.4-.5.4-.82V4.03v-.05-.06l-.01-.07V3.8c0-.02-.01-.01-.02-.03l-.02-.08-.02-.06a14.21 14.21 0 0 0-.1-.2l-.05-.05-.04-.05-.01-.01-.04-.04-.05-.05-.06-.04-.06-.04-.07-.04-.06-.03-.07-.03-.08-.02-.05-.02L25.84.94c-.27-.05-.55 0-.78.15zM11.5 10.35" opacity=".2"/><path id="path1245" d="M35.95 4v-.04l-.01-.05V3.9l-.01-.02-.01-.05-.02-.04a.34.34 0 0 0-.02-.04l-.02-.04-.03-.04-.02-.04-.03-.03-.03-.03a.33.33 0 0 0-.04-.03l-.03-.03a.83.83 0 0 0-.12-.07l-.05-.02-.04-.01-.03-.01-9.68-2.08a.66.66 0 0 0-.5.1l-13.1 8.58h-.01l-.02.02-.03.02-.02.02a.71.71 0 0 0-.11.13l-.02.02-.02.05-.02.03-.02.05v.03l-.02.06v.09l-.01.02v22.79c0 .28.18.53.45.62l9.76 3.25c.2.07.43.04.6-.1l13.02-9.76a.66.66 0 0 0 .26-.52V4.03v-.02z" opacity=".2"/><linearGradient y2="8.67" x2="14.03" y1="26.92" x1="32.27" gradientUnits="userSpaceOnUse" id="XMLID_25_"><stop id="stop1247" offset="0" stop-color="#585868"/><stop id="stop1248" offset="1" stop-color="#494949"/></linearGradient><path id="path1252" d="M24.87.77l-13.1 8.6-.05.02-.04.04-.04.03-.17.2-.03.04-.04.08-.02.04-.03.08-.01.04-.02.1-.01.04-.01.1V33.01c0 .44.28.83.7.97l9.77 3.26c.32.1.67.05.94-.15l13.02-9.77c.26-.2.41-.5.41-.82V3.7v-.04-.07l-.02-.07V3.5l-.01-.04-.03-.07-.02-.06-.03-.07L36 3.2l-.04-.07-.04-.05-.04-.05a.3.3 0 0 0-.02-.02l-.04-.04a3.78 3.78 0 0 1-.16-.13l-.08-.04-.06-.03-.07-.03-.07-.02-.06-.01L25.65.63c-.27-.06-.55 0-.78.14zM11.32 10.03" fill="url(#XMLID_25_)"/><linearGradient y2="28.05" x2="33.41" y1="9.81" x1="15.17" gradientUnits="userSpaceOnUse" id="XMLID_26_"><stop id="stop1254" offset="0" stop-color="#7d7d99"/><stop id="stop1255" offset="1" stop-color="#494949"/></linearGradient><path id="path1259" d="M35.76 3.7v-.05-.05l-.01-.02v-.02l-.02-.05-.02-.04a.34.34 0 0 0-.02-.05l-.02-.03-.02-.04-.03-.04-.03-.03-.03-.04-.03-.03-.04-.02-.04-.03-.04-.02-.04-.02-.04-.02-.05-.02h-.03L25.57 1a.66.66 0 0 0-.5.09l-13.1 8.59h-.01l-.02.01-.03.03-.02.02a.71.71 0 0 0-.11.13l-.01.02-.03.05-.02.03-.01.05-.01.03-.02.05V33c0 .29.17.54.44.63l9.76 3.25c.2.07.43.03.6-.1l13.02-9.76a.66.66 0 0 0 .26-.53V3.72v-.03z" fill="url(#XMLID_26_)"/><radialGradient gradientUnits="userSpaceOnUse" gradientTransform="translate(19.5 19.5) scale(.1875)" fy="47.28" fx="105.2" r="139.09" cy="47.28" cx="105.2" id="XMLID_27_"><stop id="stop1261" offset="0" stop-color="#fff"/><stop id="stop1262" offset=".28" stop-color="#cecedb"/><stop id="stop1263" offset=".64" stop-color="#bdbdcf"/><stop id="stop1264" offset="1" stop-color="#9a9ab1"/></radialGradient><path id="polygon1272" fill="url(#XMLID_27_)" d="M12.33 10.22l9.76 3.26L35.11 3.7V26.5l-13.02 9.76-9.76-3.25z"/><linearGradient y2="3.36" x2="23.72" y1="13.22" x1="23.72" gradientUnits="userSpaceOnUse" id="XMLID_28_"><stop id="stop1274" offset="0" stop-color="#cecedb"/><stop id="stop1275" offset="1" stop-color="#eee"/></linearGradient><path id="polygon1279" fill="url(#XMLID_28_)" d="M25.44 1.64l-13.11 8.58 9.76 3.26L35.11 3.7z"/><linearGradient y2="38.24" x2="22.17" y1="16.69" x1="15.04" gradientUnits="userSpaceOnUse" id="XMLID_29_"><stop id="stop1281" offset="0" stop-color="#fff"/><stop id="stop1282" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1286" fill="url(#XMLID_29_)" d="M12.33 33l9.76 3.26V13.48l-9.76-3.26z"/><linearGradient y2="28.48" x2="17.78" y1="35.2" x1="16.64" gradientUnits="userSpaceOnUse" id="XMLID_30_"><stop id="stop1288" offset="0" stop-color="#fff"/><stop id="stop1289" offset="1" stop-color="#bdbdcf"/></linearGradient><path id="polygon1293" fill="url(#XMLID_30_)" d="M12.33 27.4V33l9.76 3.26V30.5z"/><linearGradient y2="16.36" x2="20.09" y1="16.36" x1="13.81" gradientUnits="userSpaceOnUse" id="XMLID_31_"><stop id="stop1295" offset="0" stop-color="#7d7d99"/><stop id="stop1296" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1300" fill="url(#XMLID_31_)" d="M13.8 16.16l6.3 2.1v-1.71l-6.3-2.1z"/><linearGradient y2="18.78" x2="20.09" y1="18.78" x1="13.81" gradientUnits="userSpaceOnUse" id="XMLID_32_"><stop id="stop1302" offset="0" stop-color="#7d7d99"/><stop id="stop1303" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1307" fill="url(#XMLID_32_)" d="M13.8 18.6l6.3 2.09v-1.71l-6.3-2.1z"/><linearGradient y2="22.93" x2="18.67" y1="18.9" x1="14.63" gradientUnits="userSpaceOnUse" id="XMLID_33_"><stop id="stop1309" offset="0" stop-color="#7d7d99"/><stop id="stop1310" offset="1" stop-color="#cecedb"/></linearGradient><path id="polygon1314" fill="url(#XMLID_33_)" d="M13.8 21.02l6.3 2.1V21.4l-6.3-2.1z"/><g id="g1315"><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="477.59" x2="271.32" y1="478.92" x1="271.32" gradientUnits="userSpaceOnUse" id="XMLID_34_"><stop id="stop1317" offset=".01" stop-color="#fff"/><stop id="stop1318" offset="1" stop-color="#b6b6b6"/></linearGradient><path id="path1322" d="M19.78 33.41c-.46-.12-.81.1-.81.5s.35.8.8.93l.49.13c.45.12.8-.1.8-.5s-.35-.8-.8-.93z" fill="url(#XMLID_34_)"/><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="477.72" x2="271.32" y1="478.86" x1="271.32" gradientUnits="userSpaceOnUse" id="XMLID_35_"><stop id="stop1324" offset=".01" stop-color="#b6b6b6"/><stop id="stop1325" offset=".37" stop-color="#9d9d9d"/><stop id="stop1326" offset=".74" stop-color="#898989"/><stop id="stop1327" offset="1" stop-color="#828282"/></linearGradient><path id="path1331" d="M19.78 33.6c-.35-.1-.63.07-.63.36s.28.6.63.69l.48.13c.34.09.63-.07.63-.36 0-.28-.29-.6-.63-.69z" fill="url(#XMLID_35_)"/><linearGradient gradientTransform="matrix(-.9659 -.2588 0 .7765 -840.35 -606.85)" y2="528.08" x2="-890.74" y1="529.26" x1="-890.74" gradientUnits="userSpaceOnUse" id="XMLID_36_"><stop id="stop1333" offset=".01" stop-color="#9f6"/><stop id="stop1334" offset=".24" stop-color="#68de56"/><stop id="stop1335" offset=".48" stop-color="#3bc147"/><stop id="stop1336" offset=".7" stop-color="#1bab3c"/><stop id="stop1337" offset=".88" stop-color="#079e35"/><stop id="stop1338" offset="1" stop-color="#093"/></linearGradient><path id="path1342" d="M20.83 34.4c0 .26-.26.4-.57.31l-.48-.13c-.32-.08-.57-.35-.57-.6 0-.26.25-.4.57-.31l.48.12c.31.09.57.36.57.62z" fill="url(#XMLID_36_)"/><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="477.65" x2="271.34" y1="478.52" x1="271.31" gradientUnits="userSpaceOnUse" id="XMLID_37_"><stop id="stop1344" offset=".01" stop-color="#3c3"/><stop id="stop1345" offset=".36" stop-color="#1bb433"/><stop id="stop1346" offset=".74" stop-color="#07a033"/><stop id="stop1347" offset="1" stop-color="#093"/></linearGradient><path id="path1351" d="M19.78 33.8c-.25-.07-.46.03-.46.22s.21.4.46.47l.48.13c.24.06.45-.04.45-.23s-.2-.4-.45-.47z" fill="url(#XMLID_37_)"/><linearGradient gradientTransform="matrix(.9659 .2588 0 1.0353 -242.05 -531.04)" y2="478.35" x2="271.32" y1="477.78" x1="271.32" gradientUnits="userSpaceOnUse" id="XMLID_38_"><stop id="stop1353" offset="0" stop-color="#fff"/><stop id="stop1354" offset=".09" stop-color="#e8f7d6"/><stop id="stop1355" offset=".23" stop-color="#c8ed9e"/><stop id="stop1356" offset=".36" stop-color="#ade46d"/><stop id="stop1357" offset=".5" stop-color="#97dc46"/><stop id="stop1358" offset=".63" stop-color="#85d627"/><stop id="stop1359" offset=".76" stop-color="#79d212"/><stop id="stop1360" offset=".89" stop-color="#72d004"/><stop id="stop1361" offset="1" stop-color="#6fcf00"/></linearGradient><path id="path1365" d="M19.76 33.71c-.2-.05-.36.04-.36.15 0 .12.16.3.36.35l.52.14c.2.05.35-.04.35-.15 0-.12-.15-.3-.35-.35z" fill="url(#XMLID_38_)"/></g><path id="_x3C_Slice_x3E_" fill="none" d="M0 48V0h48v48"/></g></g></g><style id="style3713">.st4{fill:none;stroke:#45413c;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style></svg>lib/img/volume_icon_box.svg000064400000001256147361034410012005 0ustar00<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48"><g fill="#0288d1"><path d="M25.6 18c-3 0-5.8 1.8-7.2 4.5a8 8 0 0 0-12.2-2.9V12c0-.8-.8-1.7-1.6-1.7-1 0-1.6.7-1.6 1.7v14.5C3 31 6.7 35 11 35c3.2 0 6-1.8 7.4-4.5 1.4 2.7 4 4.5 7.2 4.5 4.6 0 8.1-3.9 8.1-8.4 0-4.7-3.5-8.6-8-8.6M11 31.6a5 5 0 0 1-4.9-5 5 5 0 0 1 4.9-5.2c2.6 0 4.8 2.4 4.8 5.1.2 2.7-2 5-4.8 5zm14.5 0a5 5 0 0 1-4.8-5 5 5 0 0 1 4.8-5.2 5 5 0 0 1 4.9 5.1c0 2.7-2.3 5-4.9 5z"/><path d="M44.8 32.4l-4.3-6 4.3-5.8c.5-.7.3-1.9-.3-2.4-.7-.5-1.8-.3-2.3.3l-3.6 5.1-3.6-5c-.5-.7-1.7-.9-2.3-.4-.7.5-.8 1.7-.3 2.4l4.2 5.9-4.2 5.9c-.5.6-.4 1.8.3 2.3.6.5 1.8.3 2.3-.3l3.6-5 3.6 5c.5.6 1.6.8 2.3.3.6-.5.8-1.7.3-2.3"/></g></svg>lib/img/arrows-active.png000064400000000230147361034410011360 0ustar00�PNG


IHDR"�H�L_IDATx���0��A��+E.ЛO���P��6��P«]
�� s��ɣ��C�]�3���]� 9S@M���֮���q��M�rO;�l�9yIEND�B`�lib/img/src/dialogs.pxm000064400000132217147361034410011036 0ustar00PXMT_DOC�HEADER �@N�2Cp�p�METADATA��]streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_IMAGE_ZOOM_�����NSNumber��NSValue��*��f������_MASKS_VISIBLE_RECT_�����{{0, 0}, {0, 0}}�����_DOCUMENT_SLICES_�����NSMutableArray��NSArray�������_ORIGINAL_EXIF_���������{TIFF}���������ResolutionUnit�������������Software�����Pixelmator  1.6.5�����Compression������������DateTime�����NSMutableString��2011-07-06 14:57:18 +0400�����XResolution�������H�����Orientation�������YResolution�������H������{Exif}���������PixelYDimension��������������
ColorSpace�������PixelXDimension������� ������*kCGImageDestinationLossyCompressionQuality������������PixelHeight��������������
PixelWidth������� ���������{JFIF}���������
IsProgressive�������c������YDensity�������H�����XDensity�������H�����DensityUnit��������{IPTC}���������ProgramVersion�����Pixelmator  1.6.5�����ImageOrientation�������Keywords�����������ProfileName�����	Color LCD�����DPIWidth�������H�����{PNG}���������
InterlaceType������������XPixelsPerMeter�������������YPixelsPerMeter��������������	DPIHeight�������H�����
ColorModel�����RGB�����HasAlpha�����Ơ�����Depth�������������_PX_VERSION_����� 1.6.5�����_DOCUMENT_WINDOW_RECT_�����{{620, 85}, {408, 670}}�����_LAYERS_VISIBLE_RECT_�����{{0, 0}, {239, 240}}�����_DOCUMENT_SLICES_INFO_���������PXSlicesPreviewEnabledKey�������PXSlicesVisibleKey��ņ����__OLD_METADATA_FOR_SPOTLIGHT__���������	colorMode�������layersNames���������trash_32�����	search_32�����	magnifier�����compress�����pencil�����Untitled Layer 4�����arrow_up�����
bullet_add�����Untitled Layer 2�����Untitled Layer 5�����Untitled Layer 3�����Untitled Layer������keywords��Ғ���
csProfileName��Ԓ���resolutionType�������
resolution�������d�H�����
canvasSize�����	{32, 432}������_PRINT_INFO_�����
NSMutableData��NSData���z�[378c]streamtyped���@���NSPrintInfo��NSObject�����NSMutableDictionary��NSDictionary��i����NSString��+NSHorizontallyCentered�����NSNumber��NSValue��*��������
NSRightMargin�������f�H�����NSLeftMargin�������H�����NSHorizonalPagination������������NSVerticalPagination������������NSVerticallyCentered�������NSTopMargin�������Z�����NSBottomMargin�������Z��������_MASKS_SELECTION_����I�[73c]streamtyped���@���NSMutableIndexSet��
NSIndexSet��NSObject��I������_ICC_PROFILE_NAME_��Ԓ���_LAYERGROUPS_EXPANSION_STATES_�������������_STATE_��Œ���_ID_�����;18DCEA49-EC76-443A-A8F7-C33B7F0ABE40-38719-0000A622FFF83A76��������Œ����;B04E2227-A8FB-445E-8507-715014398607-38719-0000A5FC7D711AD1��������Œ����;0828C7D6-460F-46D8-A0A3-17F76E305E18-37040-00009A59C66DC784��������Œ����9566ABCBB-01BE-4C4C-87D1-0B342B8B69DE-876-000009D534597ABC��������Œ����997AB2E81-9E27-4462-9760-F6AA01B147B3-876-000009B8F9D8ED23��������Œ����992F51EF2-97FC-4217-9109-D7BCBC694246-876-000008D641B063BD��������Œ����944BD8AFF-ECBA-439E-AE3B-DCF4874F4791-876-000008CD62DBA8BA��������Œ����9606B053D-0A88-4C9F-B995-4A1465F464A3-876-000008AF7D200E79��������Œ����9A308625B-DFD4-4F42-B24E-7647D1E32544-876-00000897A3BCCCB3��������Œ����93DED5A86-9E91-4497-8896-05443D45274C-876-000008E8F68B3C6B��������Œ����9B488B5C0-15AF-492B-9E78-BF75A597D20B-876-000008D39490AF11��������Œ����9ABC8B5FA-F536-49F3-A247-199BBC422425-876-00000892F8AC9460�������_DOCUMENT_LAST_SLICE_INFO_���������PXSliceMatteColorKey�����NSColor���ffff�����transparent�������PXSliceFormatKey�����PXSliceFormatPNG24������_IMAGE_VISIBLE_RECT_�����{{-125, 1}, {377, 628}}�����_LAYERS_SELECTION_����8�[56c]streamtyped���@���
NSIndexSet��NSObject��I�����GUIDES_INFO0	COLORSYNCLAYERSa��lU$'+�/�2�5�9.A�GxMT� �trash_32d';18DCEA49-EC76-443A-A8F7-C33B7F0ABE40-38719-0000A622FFF83A76���x��{L�e�_���TK���*B�tk�E�r���V�b�G���;(��M74��-CJ�@G8�A��U 8r=p8�� �s~�};tDnK�}�����y��}�hc���^�\��f>͸g�h��կ����N��Vm�g�޲`����9�S���<��޲�^uݢ��k�
$������)
Ě�~S�*��0�^Z���k�Z�*���f�O�Q����FͶ�DZق>�9s�|��_���>��[<��5{�g[<�����3�A`;�����l�߳�-��jC���?X���1[�c�l��5_C�$Ye2^�V�%��؊�x����ی�:+�_��>��9�g�l��S�o��o����k9p�N�8���x���MHll�(111�������hw�f��*�����…(,,���3G��x��AF����w����<���H�'''#<<�F4����w̮��Fgg'���W�\�h4��؄��}1?m��BK�M�DZ��&Ecc����M��>���2D3a���o,..�Y__���\�vMq��ջ�I�#y�x<7H�S�:[w��"���244�x{{Gj�����Szzz_mm-����k,�^3���C���p���2;s�퀥Ǣ��EAUU��-77�
���d����`ppP�Ʋ��>�^(tY����[,�
��� ,�c�r�r��uTVVB��s~���dߗ���ק����Wa�nG\�.����W��8��"���������
�٬��A�ɓ'�%~ʊ��8��������g�.=炝j�O��[��,n�[�_�!��*7�3�����J���<<<��������l���|a$��g���r�\?-�.:?,���è������ދ��J��)����5++k��̍7���du���ǥ���
�n�l��N��6�#��gϵ��@��P�������ȷ���qr�����@<�W*���н5w/�_�DFS)V��bU�8}9W�+** ��m�u?�:v�X=�|���v,�R}�=��c�Ut[��Ԇ7s�`u�W8X���e�u�pK�A�!Y�?�^�׏p^=�����Ν����#2,����<-�s~�+IP�]#����U��t���W�իgG���Yb�]۷o�)//Gkk��C��r#�Y����}sv$Z:Z�%++Ź^�72ñ�\|����淗~Y�Z��v�]��C�׷�����^�^��dR�����e����{��_�x�{���N�������
p�X�V�}�-������
��aII	�~�ĎWƒ�<�Q�	�YX���d����~YG���*��e>=�z~�	��焗ŏ����G�<��̧�>z�k�0_�����h����:
x�_��=s��\��#>��o=�O�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53����	search_32d';B04E2227-A8FB-445E-8507-715014398607-38719-0000A5FC7D711AD1���x��	P����iܢ�D�h�2mj�]2c%c��Bj���5�hY��T@T�ME	�
��B$��lFEQ,MP�I¾\�\���}�~��$�)X��y8�پ�=�?��F�Q�T?�6�?Y[���e���Yc����k�R��-�2�����3�D�g�r$x����DnA�)W�<�e��v�_�ֶA�s��Ǐ�������o�2�	��0���0��XLJLh?�Bk�;.쳇7}�<��4�+&M2���[6u��Н��*��_�&���ƛ	(�.�
1��6d��a�G
�-�]�]���=PD�{����u�ԑzzh �0��a��B�?��Y����!����
9?�w�v�0����1[��u��{&����9j�]�_8�T/��Wޅ�e���s�=��o+��U�n?߹��3��(���߈Cu"�'ؿ���D����	�q^���#�x\����j��8?�z�E]9s�^{�y��'4Y;y&Lh�z(g�7�}y�X`������C�����2�Ɣ)O/�wYE-�a����coE�#��)�
mɄe{���
�w���l/����D��I{�/<���2��K/��P��R;PA��9/���Ptڒ\���HpUh�wAk��O'=*�E�9���	@|���~I�a�7]�K�R��烸��Pg�65�ܨ㊦�W4~�84R[�6�Қ�]Y�|�M����t�
��2��;���}S[<h��#c����N
wj���

�7�Oc����[�=���Y�	���>r+���2Æ=�皼��큾pz��-)�hJ��5{�
�;�)ioN�B[F�>ڋ��`��^%W�߃ao�(3ll|����}�/�қ��9��qv�3њ��t��R}M���IH��nڳ��+;ݹ�\G(�!\{t�!h���̰�j���4�R�d��9�����GW^:r�+7�P�?Agv(	��{lg_A8��&��s�
@W�[�A�
�ܡ̰ak3/����rz/>���HE"�)�s�tF���4%R��V�J��X���G�[��C�W�DA�N��Z�Sfؘ={���`'~�N���Qh/#G�|���(h/��<
�eR���.��p<QJֵ���Z,tU����O�ac̘ѓ���Umӕhe������`��W�K� ��w)�4N�8����1进����y%?eF�ń;�� �����/�B��������� 7�\g��W
�9�U���E*�%�p�$/�?4��u/7ZcC*j�a�~���`��$�1�3�u�A�	lj�@
�_g��e.������g��?#����lh�9@[���x;�b��cY��Hj���9�2ƺ4�5h<�/����a���y#�Xgx�5���PM�:�2#���6;-3|^�3��t$�u����o�X�WI@3��gL4f�&7��m�b���/v��Lj��wL&ΰ�̈!� ߌ�S��.4�@O
�W
45`�]�'�}���	H�rdž
�V���.�fTmʄ]�Ƀ��&fӭ(3b��=1ˆ��-���靨���r�����UqO��Tܯ�B��غy9d�����s�JtU��ؒ��!N֘<L����O�����q)�yO�o�u�J88,�=Ϧn��_��8�8�mQ�x��{�x���ËQlC1v�ɓ'?iI������s�Ͱm��J���E~��a^�-]�r��3�E{��2�Ø�x������aÌ�Zs�K͟�'+��\,Y�b��#�c�q2��'f�)bA����'*�j��2��^4g��+��K^Qxa��K��]�ˎ&��bN����9�7Ē,$�%KTO��gH;6��ܸ�}��كq�	2����)��!�K��Y2���b��J�/i��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53����	magnifierd';0828C7D6-460F-46D8-A0A3-17F76E305E18-37040-00009A59C66DC784���x���KSa��65�����b��i�i�C�uA��FE�QYa�QDDt�e�D�(u�VVn.un:u:��[hJ�~����(��d|���<{���L��"""�
�be||��������c)�"�T:#66vEF�����e���5�>�_��<.w͌1��(�gb?�F�)?�p�I�UWC��珼}��C��W�wo�[W�\֠�sZ�9�P��\�AokeI���=C�ث�;��y�n����5U��SN�L̛4?5��o2�-�ў��z��h!Jr�|͡����ʻz�	6�5�z�Z�%�����^��7Z�yڬ5}�N[?���a}����֢�(���o�(����ޤ�i�����4Օ��-DI�՞h�)��/���`������h!J8W��+.{���%�̩*��Z�����vִ7T��/�u7�g2k�+�;^`|�Z����0�na�ENj�~�3����c��I��v(I��k�B�d2Y����
k+{]�Qg���?���g�t���y>l�h�����E�(��cbb�322V[,����u�-/��8LJ��1��=��~o������@�C-Ν� D��������LS����tո��*Eɡ����G>}��8���n+<vĥ�j�I$�-(����ݓ��er��%%Y�!�����1���Vƀ(�[�T*��K��|]]���dzFH�U�֪T����lӈ�LMI�`
Ҁi��\�Z]�,'��SS�}�80�»�h�ҥ����t���g1��d�����@pqZ�/`,�O�li��F����<������jA�D����g܇�`�3���)R0U�|�؟��O
��1&�d�,@�H�LA��
٢P�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��� ncompressd'9566ABCBB-01BE-4C4C-87D1-0B342B8B69DE-876-000009D534597ABC�ex��	L�G�m�Q"U�5i�ƪ�P5QK�I�ZE�[EnQ.O��r�}XPN�E@	�h�)g+U��P9D@WԦ����`#T�����������73j��ڛ���tCr��Ҥ�t���HM�f����(<�h��
J�X[��X?���xSS�5ٜY����lHK3 -I�D	8O&����F�]9��w\��~<�%��ٖ,�$�&��Nj���&-���T��"�׮�����n��k�u�	q'����&f�Y!��
罔#��	�{��)�h���AZ�N�֥?\+Iq~��"�s?�O$�Fk9^�Ot����J�#�9�3��uh;=�0n�����<q�Qԕe�UZD5)�ER�VI������.�ٰ�&����Z�9���A`�@��̏h�~t]s#��0Wk5G�3z�!��9B]�k���j�����x�v�ɱ6����ȕ�`Ax-�k��<B��/K�Fk�U4�"��	���~b�G�!�/�S��-8��N����k�-pi���p{B�P#�vު@[}	|L�c�����fH�ل&�c�\næ�M��Z^`��KaY��!�*�;����
{?�%��̐s��CV�����c�L�w��[r:�<�	+���� {�!����Ң�ZS�&��򲇇�6���`�9���|��n��*����W�?���mu�B���'��Plh}�R���vlL��
�mC�qγ�}
�A�p�'�p�
�?���Q�8,�A�gC��EQ2XP
tB����ӵ�T^>����}����,�R�vca�z���G{�A`?�����	�����q�w�������/��V���'X~�
��n��a�8�m��7��Z�0��:b���H9&Կ��˜7d�g������ן�rc(��0���G�u�/뫚�N
�o]��y�1�
<���c*�u�D}���?�44=�&�V��
eq����8�J�'�,O��@VS�����A��]y�Lxg�[y|/�[Q~ꤟ�D��%E��kS^����(�J���&4J��S��|	�����Ȗ��;��u�!����]-x�و�tN+�����L�w�N8���\U�f���4W�9b}�Y��Mamwn**Ɋ��O�x̽�U�Ҿ}=�����sB����ـC8������n)fMBa����ڏ�¹�s��x^���H������L
/D #���Έ�>�%�s�Oմ�5}��fN�!��	5Ba���ǖ&��!II8��L�^���������9��'#E�0u�x#��&��i�:���M�� �zĊ7���T�<3n���d����M�o�������)_o\v!���u����mB�"k�>�?K����"�e�oZ@>�Hm�8��~�H�&�Z��qZ'W��	9���;�1��i��>�O�A ��1t����/�����"�[M��X?G������#5
��	�=m�l\�8�|��5�ۊӢ���
G+�b��8�snK���ϵ��X��\���B������1��\��r#5����1�T	5�}���c��>�ڎR�2G���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53���  Jpencild'997AB2E81-9E27-4462-9760-F6AA01B147B3-876-000009B8F9D8ED23�gx��Ol�q��x�bXL���]&!�(���@��A��m*E4���v�j,���֕[�aF�Ŗٚ>�&6�n�4��&t:���o�����e��}x���=}*�f�����V욒j�+�{�Z�=��ڳ��T��5�s��^���1LD'�em�ðK�V�{�59���E$��ϣ��e�DG�u��~:%Ƹu�^4ۯ"	��O��fFg�x.�a/�f��J��.��S~�{(�Ѓ;.',3�WΡ����MT��?m���Q�K�Qy6��"�
Zf�R+�D�����Q�X����Y�.���."{)���e#���}���,�s�
ɱ��v�m�l�_[ߟ;��O��?�{G�I���ܒ��w�ْ?󸝔�|ƞ���r�ko�ԃ]ɱ勲7k�<F�0�
8�B2�M�����i��0��Z@e��N��Z�W�D����w���'��l`v��6�֔�֌V�$��L�ȷتmۖɹ���
tT
�M�*�Sd����-�h6m�:��C{�OW����R32K��m�jj	%��6_�W@���[>'u/]��,*�RPrJ�-�����Jj!�ΛBI1f13��MI8�������streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��8Untitled Layer 4d'992F51EF2-97FC-4217-9109-D7BCBC694246-876-000008D641B063BD@�@x���K�q�\�Iupϝ++A:Qi?H�A��T*���]ZӃ*�DK3�K�dkY�q��{O��y7�o
��<����W�`l��:�����<;���s�Sh֕�U�>o*�ۡ{ϽO#��Ι>=4}�hx���ȫp�Z�Ӧ��;��'�>��ݜ5�2����ɣOc�
����ƴ�~����ɣO�}�]���Vy�K���'�>��ߪ�L/�l٣�ɣO#����i�Ȗ=�<�4b�V1-��
O}��m����e�hx���.��os����%�hx��;���c7<O�n���"�������K�&��2
v����y�Fk�M��GÓG�w~����rی&v����;�f8��H�N��Ӎ3[��6t��Ʈ���k��w�s�GN�����o�Ѡޖ	=�����'Ó��e<����mjk�������#{ƣ~+}�n��=��t��d|߮���8U��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��,�arrow_upd'944BD8AFF-ECBA-439E-AE3B-DCF4874F4791-876-000008CD62DBA8BA@�@x���K�q��n��s�JK�TjJB�~�`�D'
�`-�C���
D�C��i���K��,���k�=����,�H~k`f�}YQG�z���A����T�F��&�-�󗹆��ߨl'���Ζ�X�u����J���=�,���<��]��Ԁ�*~0�?1�t�@9���|F��^��l֮�L�c�W��u�Gϝz�����zx�4�e�{�k���W6|��FÓG�w~/��Z�[�5e[mt�ۜ�?#W���Ka<G�q���n�;���أ�ɣ������
���7����ѧ�����lٿe��'�>����e��أ�ɣO#���<ۜi�=�<�4b��m��=�<�4ط[_�i��*4<y�id�������|�<�4b�Xzn*��/
O}ݿl�̛6�M�
O}u�ٴ���?t�i���)x��{ϽO����ǿu��=�~��|}U��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��=P
bullet_addd'9606B053D-0A88-4C9F-B995-4A1465F464A3-876-000008AF7D200E79@�x}��K�a��`��h ����\�Ǧ1�ݸ���"]d�A�XΘ�1J���n���hr�d�e+	�3n�y_��;�<��FG�PM�:7��kn�ffGs�����X�o���M�l��n03;2���)e��_��a�-�볝Y{e��ffG�ט���5x�;g�mt�.GL�}���v(fvd0�޹��i��Ҭ]ٞ4�<3�K�ތb;�``��X])�l���.�V�)��������vd��;�+]T����ɳ~�OL`���%e�[Meʴ�‰�X�.�=0}c�6h�xiZ�7}}�tsؑ��ҡ�3tݨh��m;����l<�fsؑ��ҡ��&3z�6�GM?ޚJ��x3�9��``�Ѝ� ���yM��v�Lw��5�̎�N�&����_�D��?oeܴ��ffG;t����z�u^�S�ϗ3����`"K��k�$5��$5�Iq�Rd���)��8Ζّ�H�I���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��j"����?Untitled Layer 2d'9A308625B-DFD4-4F42-B24E-7647D1E32544-876-00000897A3BCCCB3��xŘkPTe�l
�&o�6�L���h3&ݿ4MS9M5��Sh~i��4�d�
�WXQD.��(`
&�������J�,�]v��s���{�a�C�i�w������y��b����fN�:���?�h�����"Xe^�O<�ܬ{�>h������o�4��i!5Iﶶ�]O��b��KW��1t�j���퉣�Y�ݏ<��,7�1��??��O�d�?���SBr7�:/}K=�Je�TI��trI',$5�I��Iұ`Y���h��fy
Y>}�	��o�g歠+��lmv]�V�+A��Lq5�*��E��\!ا��(���Ji)I�[
)"��/'�4)  ��M�r���N�xW`�Ā��'M�{J04^
��Dn."�i�l?�B��t����8�l��PA�y<�z�*��_�ys�_GR�^=�����Mk~�K_{�Hꚫ�)���
�u���-�6}|9~�m(��(lΛ�Br����d��a+9�8��>��Y5�}E��r���j��z+uL��4�L��PF�Z�6���h����a���M{�y*�m��}��!���˂�>�k�i�l�Z��%��e~�`�a�a[��Aw_���{c
տ(,�-י�4Ԙ�<�Fv�#��bp�j�Q�L��{
֠oa����a;�Pg�taW��2|�<>'����Q?��F���=	�>�)��6��g�GY]�i�_{r�J��<r��7�
��Y|��	����y�F����fT����u �.�0T?����si��.ԏ��޼��v�
�5���9-&�U�W��녲���v��h�sÇO��~b�<x8
{c�
��B؃��V� &@\�s�z��a�յ�Ͻq���?6Z�۷��^��=X����Ga�3�Ԩ�`5��xT�Aǂ8�7�Y����1T?���n��E����C�h�0���
�a�b\�P��9�/�mV�Ͻw�$P�V��/]:��N<�%�W%�?�:�-��+�������:�u�����,n�N�u�r�F�g�_X���h
����
����`�1���ʳ� z�,��s_d�~����'v�@m���b#�W��d�����Gb�ԧ���#s�����є����f����B�:�-�N�{$P_y��'
ezA�A��@�9ư
D�ᘀ�B1_U�qh/��"�����2?4T����2E��l +z�{��8���p��1���W�@������
�H����4�n�D�m�^�*�>�6�6�
Sʠ~��^GM����Ŷéd-O���������'�#l�hj-F���V�������;�����/��gI:� ��QO�G=�[��8���X{������i���M[�7Z�b�	R��fa,��G� ���m��<�^XA۞jڼ�`��Kl���^���Y����}PF���#~�������ae�<�"ؿ�C?�����Yj÷��(�-aO�Si?��Ƿ�<�I�[���M䘱6�s����9�I{��_�������Zv�r='J�n�T�aT�
v�63�6['7Jiω�F+�lkt�v䅝
���ʍ�u�5�gr�f��� d�_�Itc�:�=g-u�E��ȍ�!��,�1��e�҈�?vG�˟��=���k��?���W��_ǝ3&=W�FKW�:�-;�~7G��o������h͍����Y�^k|<���ç�?�̀<090 ,x���fN]��;`%`]8���t��4m�i+fϘp�S8�ǿ��L���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��� %Untitled Layer 5d'93DED5A86-9E91-4497-8896-05443D45274C-876-000008E8F68B3C6B���x͔�o[U�-��ش,�a��x�'q<f����P�g�ر��c�V��.A���4aX�b;i��g��{�uߓ�����O�{�9��~����x\�\σg��b

$7�G
2>�Y_[�ɉqUߺ�Ź��_%�H�C{R_�R���"ҵ���G�{M0��-��s�8?�<��= ҵ�
yY_]Q��e��k�,��?���/JO�j�L�:	��Yή҃~^�f!ҵF�9���,��+`gu>��}99����PԜ��xO�1ZP�?����5��Y�t��|V�Vemy	��������™Ϟ�F�O�*#�l[~!��եE�|�����<��M��*�3�B���9�@MCyqA��H��gӲ�0���>8�|���s�'��W�ACY�t�\:%�s�63�|���ך��7���	�Tg>�:�|��x̌�2���LjH�g�d~�L��I�~[�
���Ƽ҂��|�B&-s�txg����C�2;U���\��=�=�7>�Z��s��sU�ҩ����L����$(�%��|>i��x<c�k���Ԥ���?��Z��~)'��I@%g�F�Y���Z��>)N�*n~��4��l�E��B�k%�ze���ѼX�b5v�uք5a��̨���5AM�,D�V"��Ŭ����#�I*�lZ��CUoÙ��Tb���ч,D�V"�|fX��go��P��aMX�������;��Do�-?��Կ�f��;�@-��G�Z���[�Ǟ:�β����n��X�-?����R��w�
�zOڳ�7a"]+	�@��Y�'V
ԷUݬm����V3�Y3�<O�\���{T�cɄD{��{�A�o�0�Y۲���b�US�>�L���o�VބY�t�p0 �xDz�Q�T�]�lڴj̍rf�9U���Q���E�P�-?��%��*ؔ�=��j��gMx�=U��+�hXBA_[~�����z�k���6@9S��5稕�o�=bf����I�ߞ�uK8�ǽ��Y�2�����$��������,D����%�W�<�х�3f��Z���q_]�<{���s��q���ċ��}����M�.a"]�˗68'�w���M����W�4��A���\���y�{<�ο��J�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��� Untitled Layer 3d'9B488B5C0-15AF-492B-9E78-BF75A597D20B-876-000008D39490AF11���x͔�o[U�-��ش,�a��x�'q<f����P�g�ر��c�V��.A���4aX�b;i��g��{�uߓ�����O�{�9��~����x\�\σg��b

$7�G
2>�Y_[�ɉqUߺ�Ź��_%�H�C{R_�R���"ҵ���G�{M0��-��s�8?�<��= ҵ�
yY_]Q��e��k�,��?���/JO�j�L�:	��Yή҃~^�f!ҵF�9���,��+`gu>��}99����PԜ��xO�1ZP�?����5��Y�t��|V�Vemy	��������™Ϟ�F�O�*#�l[~!��եE�|�����<��M��*�3�B���9�@MCyqA��H��gӲ�0���>8�|���s�'��W�ACY�t�\:%�s�63�|���ך��7���	�Tg>�:�|��x̌�2���LjH�g�d~�L��I�~[�
���Ƽ҂��|�B&-s�txg����C�2;U���\��=�=�7>�Z��s��sU�ҩ����L����$(�%��|>i��x<c�k���Ԥ���?��Z��~)'��I@%g�F�Y���Z��>)N�*n~��4��l�E��B�k%�ze���ѼX�b5v�uք5a��̨���5AM�,D�V"��Ŭ����#�I*�lZ��CUoÙ��Tb���ч,D�V"�|fX��go��P��aMX�������;��Do�-?��Կ�f��;�@-��G�Z���[�Ǟ:�β����n��X�-?����R��w�
�zOڳ�7a"]+	�@��Y�'V
ԷUݬm����V3�Y3�<O�\���{T�cɄD{��{�A�o�0�Y۲���b�US�>�L���o�VބY�t�p0 �xDz�Q�T�]�lڴj̍rf�9U���Q���E�P�-?��%��*ؔ�=��j��gMx�=U��+�hXBA_[~�����z�k���6@9S��5稕�o�=bf����I�ߞ�uK8�ǽ��Y�2�����$��������,D����%�W�<�х�3f��Z���q_]�<{���s��q���ċ��}����M�.a"]�˗68'�w���M����W�4��A���\���y�{<�ο��J�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��#� �Untitled Layerd'9ABC8B5FA-F536-49F3-A247-199BBC422425-876-00000892F8AC9460�">�}x�tU��/`Ci*�_AB��Ho�{i"M�P��*"]:	��i���AZB	jB�!
����K.$� ���z��9s�|{Μ�937��%��!���y�Ր�%�x:T��
�0^�����\����,������?��������5|7-3V�c��G��K�,��D�X��9ݿ���]�P��A|Zj�yՕ�"��Z\��!8O���]���2�����Wl�oa�;0�7��4%-{_������I��Z��:�&�.�e5v�<��sb���(�>�r�D�[F�T�{h���N�âu���1��m*79����'I���i���L�����ԝ�$���C�w�P��~~��ݳCi��W���i�ѳ0}9��`�js	����7y��Z��:?i��ü�/�
C��ԤF��(��D��(�4�x����P�.�
��|&���P����?i���{�k���^���n@�ֽ�R�[���61)�Џ��!Uŕ�<�-݈mc�[}�Y+�f_��\ݓ]�E�Z�W_�]�8ǭ�����:4��}ٗ����	ey]�������W��TƊ�K�?:���@�f>(Y�8/�H�X�5�1�o9�5֦�$����GŖ�v86��3����)My*����Q��1|�c|�{*��y*��%Mb׋4W4�~�~�v���J���STh����hoJS��<M���>S]��
���HMJ�2q]��ŕ}?~^<�r޴Bն��Y� �@E{S��T�i��	b_b����@�z
9?l5Z�$3�T/g�kn���i���>Փ�J�`���M4ŕ�<�I���S���A�J�(T�U� 3y[k����ԯ�9��=@���S��>� \��@e�W��T&9��y�P�0�W�"J��&����摡_�5׋�!��E�(�|�8u>�ʦ)�4�Lr���b�.�WԦ���4�K�q-�ޖ���z]������*+6�P�4ŕ�<�I�T�,r�`��-�S�b���!����A��Ǽ��°j�}ŕ�<�I���s8&/r|�2���S��%��;�N�p4���_&O��,�㣨l��JS��$��t�0�����aĜH,��7#ѤG$��L���"1�G�DS\i�K��_E�U�(�����Ԓ�ݸw���1���c�(��2�zF�?���"
W��R�Y�(��/�D���P�������jF�.^� ���c��f[�Ѻo���g���W��R�e�h8O�;��]|\�r}�z��If��e�g89�W�ǰ�C���YZ����!6yij�MS\i�S��i��N�F��v��R5j�-+m�5��OJ/�޲�u���I#m�Ƣ}�X�Şv�ĢQ�X�ڛҔ�2Oӎ~FLc��A�S�}��v]�Dڲ|'6�;��L]��~xL�8t��:��x����)My*c�#���>�		w�{��4���.�ǽ��g�ϰ
���B���p�G���2�D�6}�u�#����Ҕ�2Vt�͘�;�[�
U8�<�K�H�j�d%%ʯ��Ƌ���n��I|'
J@�	�6�;L`_'�e/ŕ�<���C�@���W�/��!HDZ�Ljz����X��E4�~��>&@�a���#ݿ�Gi=�3�5�1F�����W�ڕ��7����3�
�'�*��~�2�L_:�cr�,`�D���aj�����ܣO7�5�"���9��1j��O"��x�)_�*}X`�6�������I�|=�!&�?&-~Xc_�P��Gq��]4ƹ�Z�B����O�N�����$�j'��|�gҾE{�����;4g��GOd��ɱ�i�k�=a�vt�Q]� �%�i1=��$��b)��	�L��n�л�J��\f׵�*�:$���!_/b��I���Q_�"u�Bi�S�U��@^�e"����\D}��)OeT����X�5*�Ɛi
�z�o���e���r`Z�l����+���˰9������o��f���
Έ9��n�;ょ�#����9
�W������57f4�q^u僼�e���b��\�\Y�l��B���@�1����x���m�Z�������,�/�{uI��GFWE�٥��]@�I������:�Ș2�; �:�M$��-�K��|h�����C�߹4\[��+�$5�ꢦY�y/�	\���wQV�����'�s��(�C#���cZQ�9́z��踲=9��6��X���!7��|����Ϧ�{���}��b8<��4�L�0OeԦC����x|s����_?~���>�����-��c���Ն��_���E���+�c��plY�^R�f�%�Q����.xt�w�ƞA�ѫ|Wi�����73�X�9��}~77ġQ%pl�#�O�h�}y�-�q�8�d�'�Y���X��Y�(~dL)\[�ϯ�ե����{��4��^��0�׍_�nmC�ׯ�ǒ8�}E��T���J���iuv�4w�v���o�2�X6i��Ƴ	9:�{'���Z���m/iø^|��9ί�:A��8��g|f�HuR��*�sa{*=�<�c�
F�nu����Fܥ5��>pgH�ҲL\�F���	��C��%�犬W�~�e2�N|��@X-��2.�u�E�/z�k��%��F�.��q�!p���8��K�q�7GK�d��峺?pon�w��)�qzZ��������'�=N�c�*8���U1���c��	eX��Q��_Sk�!��4>�ʘn>���m�ݡ�;�ss��˟�U�	3�q�յCp�nl���S��\�gu���2��Qٴ�?�Ǚ�>t�9�	bί�����97�Mr�yd�ӣlg
�o�ss١4�8����z���HUӢ�|ض�|W<�cv�C�]���u��K�zg�~؁��:~jF�Acx�k�ML�vv}����� �>�K+{2��YΨ���_�M�A}�s���s d�d ��>�����H�����ZH�
��iq���K/xR���d��o�s?7B,ׁ+�����ɾj��paQ�hM�f��q(UM��gZc��{��R݅����
_�NC�w�e8߭{p�����K�h�5G�9w*�vs��YS\XҖ�*�,ʻ����/Y�x7K����w�kQ�]^��;F��v���S
t�E����iT6�ں��3?y�\:�����>{9`F�w�J����!�#�!��L��u��k{�7:���.�Й�:�?���ٵ
.,lf�����^n���î����̐6�̽]Y�������ޫz�N\Y�YVt�V{���wn��JS�Q�).��ʵ�"N�gߗ�{7c��;��j�3�!��lD�_�+˻��/_›�`;V~�ˮm�joJS�Q&)��U�����˿��>Ƭ�9�9���ĝc�{Yw�\Z�������>6�W�•e��hoJS��<����s4��L�ށ����?��VF�Ot>��ޅ�z���{`Q���	�7�>��>���k\_��	�޿�@��UMS\i�3�|�kk��w�D��Ail����]ZD�V�^ +)��Ꝡ����o���xg]���p泾�	������@q����H� ����*`g��X�6w�4������,4+-n�N��ѕ�L;!��RDqN���L�N���D�qMt}s�@�noq�8��>�������y��*w���-�
��Wg�}�{[��v8�w�
�M������C�4�=�9�q~ŭv�ˋ�=���6���ȷ4�g�W�J|V�4^�Qgَk+�B�:�f��ZKc<��̱-�=�=n�}��qϛY�O�l���3T�YM���̹�G���]���2O����>���L+�5�<��;z���c>9���I>�|�gZL�(+�o�Y��E�Y�g6~���w��1�f6�yCeTVuH~��C�^�2͓D�E���E�<�Ҕ�2*�:�����D2�ٹ��4)JS�ʨl��[��[��[��[��[��[��[��7����ى��:�ŕ�<���^�E�m;�f�Q����>&F���._$��U����`h��7�_Z?ɥ���]�L�����]2��~����W.�w�_[O�iiCn�����6ܿ��W��Sy�ƁD]e�
+�����~�f���@���dO*�m��md����{�W��6,��=�~�������A�}d*�g��I�ѣxD���
��B_�wb�S�{�*y�Q�
�}�#���`*��m����LmP?D&>����9��6��nB���H*8� �������1��[Ǥ�&5r��̦|�(�9F��
��
�Ś)���4HJf�p�B��.w�J%'�:n��1�B�D&�� )�M?��)c�h�
�yB��|K��d6�������9zL�~���D.�K��<=�M?"��"
�
��v��I�l����AW�´䍇��}�D\�G`Ϩ�Yd����i&�
Ą��Q�:��!��"��6�N�~T��4͹v�p��~|��,ca[�dB��T�\Y�R'���M?�����,��Ć���ɰ�T����,�CX�{�`��#�t�o�kK�b.�J�l��G|SE|�?���t�(X~n�9\����;��3��o����c��ȹ����J���`ӏ�
D�1����r��C׏�=��<�~�e�3,[Гi�+-��i���:�����թ��Y���c�H(Q�2�c�e�8T]�v�0��k�c8,d�=����Ƽ����c�a�]�05_#V�Ϳ{7��k�?�}Z�uX�U��Ww���μ��l�KO�)n�)�e������ړ[���Y�_��~Ώ{��W�K�@j�g�wU�����{(k?�,���3���2���u.��M_�������q���ү��N̓e�H�~��̇�P���6}�/�Ն��6<��K�����|˾Ѱ�ˮ����F��M�����F��[��z��^j���)�yb��B5���l�����5@�FГi�i�;��3�_��Դ�=���eFSXNL��$9�#��3�4ō4坘�u�%,y�w���[7�p�a�h�<�O��v�~G�eC�)�`Y���f�r���}�d��Ҕ��GZZ�L������a��y^P�W���~����7�fŷX洆e���lX<�(��9����#� �Hb5��!yI��SR�����WO�sl�q��ҔgjK'y����-i������o�XIM���Q�b�巘������Xۡ���%W��T&���ܯsĿ8�'gi>��<��g���s��;��5Qf=O�?��k,��l��<��,�J��w
MgL�d:_�H�?9�����γ�؟��c#����+�a?��|��Q�
z��x�ՙ��Sd��y�2�!��^��C*��)�M?�{�`o{��l�a��>:�[��:4/�+I���Cxf�Y�<�>�C��O��w�/�V��?��k=ϲ-F(g�d[�e�{�-�NXQ��r��O����M�<������MB���܇��!9�x���\L�+���E�6
��s���(��"���l�:?���i��m�k�\��"�6��*�"�t��\M�za�����F�9!�P�	s��
�J}޿LmHa���?�H����ȤƱ���lC���~lT�}:��Ցm��ƃ���?����V��ы ���ט�l�?������s�F��j�hԑI?:�1�uŠ�V�B&Mi��L>��˳_�`YՑI_�!��\���z�Tߺ���Ԝ{����Ȥ����&$ϓ�"�~Z�_ə�\��hMx2�9i�4�{Xo��W��l1�<��b�4�=�gB���XRœ�#m�9X��&uRA�c�҃9_��?;J\/��k
RO
z���c#��`�b�]�1�LH�BJ��,�~Z��Ŝ���"���`
S��e�k�k
�HO���/�V�����5�XR˪�L>䋤�^�z!�E�j/e���"i���F����Z/�BuT�g���sqZMs5-�Er� �HV�VK�z��oi�B���ʕ*�ԫS���"�ѽsG4�_ψ>�ㅈ�������a�T���dɢ��3�Ϝ1N��X����zaڵic��om%���ڵ����n�/:��u��
�a�aFhb��(^�T	*��F�!���iQ���֪��_t@�NI�5�uz���[�����B2�4�:䊡۠nm]��L�z��~�П�(iguj�@��йC{��m�]����թ ���E����}ү�:5k<�_�Fu|Ѿ�A'b��uP�9�`�/���Z�'C���A���Z��+�ڵ��(ig�jTC���mX�<EN�I"
���Z�Yw���R�Z����ժ�]떉����: ฉ�	��0�Ia�¤���g��Z>��5�WyF�z��hӢڴ�m��Q��?BI9��#6��T_��v�jh-�I|W���~�ʟ�e�&hټ	Z1�<QĖ-+q�������jU>{F��gѼI#4oL�4$
ECTgy�O�Dt-O�W��f��yݬq�?���_Z���*�*�I���1Q(��[C�\�2�(ig�U,����l]�	��_*[W�p-�R�Z�����ˡ�M������\2�(.�'Ś���Bq���iQ��*8��XZ���&�p�B"��5��q��ҬX�
�/"��(O-Jڙc�2�U��A���Ua�CŅ���VtmEת'ߵjT�c�2��-]����	�,��u�x^�~�k3L�����5��FY���"�sn�reJ=�_�kG�q���'I��x^^"�-�EI;+]�8*U(o������~wF���]'��LS^�`��U^�ҍ2
�j�U���%��/Y�4���ىY�~�����Bif�0��(��y÷�%�D��p,[
���}</�K8r.[���Pi�rIC#�!�\�c��%�}F�x���s)S�$�<�9$$�L󴋛$�V\�����J7��.���
?�_���J3��Ub�g�0����W��Jg�y�`�	kI���E�"��)\%�aۊe�����3D��8�X�,+�ŋ��(ig�
�h-�L��'cKCZ��3�Bخ�(LT�����y߅���
�l�ڑmJ��C!�/iQ���˝�E��2���|��y><FI�}Dʒ����%jZ�ȉ��-��-��-��-��-��-��-��-�3}�@�V@��w��Z��O��lys��P�Z
�U���5�y�i���.Ţ/�>ș��YCz�]>��c��~��~M�x,CF��p���md�]�w[�3{��Y�ڜ�mW�xG?����'b��!��b��!��;3|�{".z�ed�]��Rm�1[Î�G���=1{f!f��D� fa<��y�?��l\�9�[o������|�A�����q�Y?�u^��6�'[�Y2�̔1c�ߵ��<x}��y��3�}�C#.��lC����?�^���^۽4�g�ʘk{�Ey��4��K#���K��.�ȫ���5���az�XD�d��>�6��w��A����6)��c���G|����s���`�<�=W�ǭE�����6��L3S��ѻ񆨓���5���K�v0����id��򘁈��L��h#�(��6�y�Qۧ"l�Tx,z�ɯ]�6�qx!���MS�>����
�}�u��/�����1<���\{���k��`��;	�<��c6v�p�]�wK�x�{;k�\og{?[ַ�Q�2󛖛���2wV���Ucqk�p��2
	�ww���^�yH�{�n�]�����d+b/n!�/���Yo#���ǁ'WE��Zp�-*�/>'�My��~�7��	��#p�m���(�t��?���ʥ��D�������g�&�xR�w`��xΣ�sqs�D���u_�m
�]�q�m8���쇈�\9���\���t�,-D���d`띔�����o�x\Z0W���c1���,c�,��qw�DTp�[�Bs���{�G���8�	����\�����1�y��м
�9;&���)ccMZ<��������{�I�:�p�!�Gp���p�,�];�>wLi�f�o���}�o��&�@�����>�ۧ!|�O/���1
��{�L��h��kn�6��n���`DwE��a?�m��vL��l���-?���qpj^���l����2��5�=�sǜ�oc�`�x��%��'�	�|�'g��)k�������2�w�:?��_5���G��O0uV�ŝ#���͔��E#�Zse��.rBԎ鸽���F�1��գ��h�e���T*�Q=J��|�Vký"���27]� ��U=a���Z=~+G����vx�Ӕ{��k���gyb<�t���!�c_�.n�w�\��o�7�<����l��m���A�gl��n;c�n
���2>K�ƢAl��M^��߼'��O�O��ʵ;�;D�ߊa��hHd�7��I�g�m��s��K�qH�:q�' Ν(4���ħĖ�E��d
��?�R��$�e͘!�G���ޜ9��y7�м9���0��3�����{/G���y��#
͒�ҩHq�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53��MASKSPREVIEWC� ��C{�x�\���k���kw�]k�k��k#6���-�-��`+؅(*��JwJ_�u��AP@0�����zr��̙3g�ό�tZ�����c'�b6ٗ�u�j&�xiR��y���>���
�.7��髯��k3�
�/��觘��K-b�roLv�b��h�1�”Ua�?���uD���[����� bY~�u���.�p�7��6���d�	-�v�z�e���]��Q� �<������n_$#�U�*�=�{S+j�v[SWF�����?�u�/B=7����`�hl���D��>��J�<�!>Iz��*�u5��O;�;S*�uG��/Q��K����5wO��f��_�J[����V��x4�����w�$-��D����F��^�Q�5�Q��*�Ґx�$.y��˵pG�&��uLV���9r��
���x�1k��A�nﮣQ��;*�o�6���V�b+O�wG�z�<)S�n��l��ix�o��F�f78Ƙ�Ij���V�Ly�[9�;��wb��`_z�z�7Te�L3Ol��I\�L��tE�G��������\ϋ2�I���x�skLc��'�w�B���ɨ���ؓ��M�L�$�}TaL6��@�S�?P����he�/~�sEα�ԯ�՗��vg_��5��E���TLn�'eR�mj������ъ}@��Ԥ�X�kF2����g��A�v<o:������G'?�n�C��&yR&uަn?��/��r��\�[(P���h��S
9��S��a��S��?�@ݿ�Q��/"^S4�$.yR&uRB��}t8FN�D��(Y�L�Av���2�n�~�ށh�5�{�L�n<�~x�<�ʚI\�L꤄���7s��Ty�ʍ.B�IA�������t�|�#M{����h�[1T�L�'eR'%���~�
�6?�M�/H
��^K�p.o�7��;��L�^A��)�FRY3�K��I���҆���?�����G��Ш{0Z�
A�~)Ӝe
�c��7��<)�:)!>�������ڣJ�K����?{S���5��V�B�f@ʴ��:�53�ʚI\�L꤄������K�/�SV�a�!���������i�/�r�'��%O�R��0t�����*mr��{����1�(�u��א�i?(���c����IYj��&�`�A8~,{���9�6�.������㈙�"9���W����R�<�h�#\!qɓ���8$�x
h�
�V����;/m���oU�g3?k-��##��k���t����5[ǰ�5���I��y�.��1:J�}�RQ��%���6�9�p�ʛ�u��WFb�H�aQ�6"�mIN��к_U���I��y���3e	��C�
����D���X^^��5���m��ع�ԏF�QѼxC�����TLn�'eRGOҝۏ��1�b9��}-�$z�k�/�7������˷�y�^�c�{L��Րx�a18v&���I\�L�����1cP��#��yE~k)ZD4�&��H�R5�5������9`0�פ���;.�����X�u,:֐��I��$>f�v�N���M��s�O4�h�fR�c!�c�R5����!������4)��?>9�������1u�����JԮ��W|���L�
$uJ���/�kux�4�0X���ˁ�s��S����Mo6�z�y�n��k�ˏ��=��Uj��D|�FZ&�R�v�c��~�j�����m��`��ט������NB��?.����P��C5�e�)9�J|�)��cRO��"�jOޯ��=�ܷȽ�ϼ~�5��������=Ƕ���~�z]閮n�"ۊ"��gFL�Q.RL����|і�L9o>�k��*�r�4�8�m���
)��|���LDΓ�D�2D��1i��'eRG��6�m&�),�Nd�.H�O�"yR&u��'����r�.�������t˃�]s'"���bI���K}c�u�L��ɧ�Lrd�ͤen��}
�����!"om@��9�����������a�1�,����yd[�A>IJ��c��Z���\�^g��+�x`���8����Y��q}��=��ȹQ|���W����3������W����������*8;�Ύ.�@�ͨ�Gf=�y)�a�����D�7����<�'I�}��].w�-��}�?;�?���Uq~|q\�X
������H��1�,.N*E��pŸ*�n�A�Ӄ�>9����߹�o���~{&js���A�%�l�*q�+s_��ˤ����Ēp�5�G�i5
7�	ӎ��\�����vz=�?�P�N;����[W������Z8�*�P/)����H����-}��/�Ù��1�FN3�"I-S�o3���y{#��2\���ipuVu\�SKcv
�-�q�2�dbq��m���f%֯��%��^	Ow�k��p����~�M��l&��8>��/�f�ǝ�NJ�:��ϫ��6��Ҿ���]o�#���½�]X��&ݮ�:6�WV���<\���Z�(�D狟,{D��6�Wש���cV�4 ��]-د�F���~]W֭��Ѷm��qۤ	����%�@4)-��s����m��w7��kq������Ƣ��>�:"|]��0��x`�� ������ڬ�j�-�ɸ�����8d�s��Ц�F�M�s�tt�	����Ѹ��n/i�67S�Z��>�->6�u���\�3��V��/X�ٵYU�Mc�������!���:0юAv���A�s�����v��w��xò�<��i��/���Y���>�5�~6���u�:�ʚݘ[w�&�!i��m鰍���p�BmRP�av�9�^a;�~K�[�:�'>��8Jxwy��
�f~.l[=^+��%��)��byS�}�f����<~kiS�Aدi�m5X~wE�l��0?���G����VOm������7�5���Bnyxv>�w����׶�ú�R�>��]���T�,:��w�=�֤������5�8\�S'�>����Y��E�U����Bg�dzC��Yt�7���>��Ajۮ��~���pef�d�{���ɼ���#^�l삇��R�+����,�����,�Y;<��7˥λH�c�����UԵY�IA�}N��#���:17uţ�=S��}/O/��fO���#�k�)�h�n���Ύ-��m�;�6��u��K��#�vB�Ѭ���xk��M�ٟ�pEŃ��U�V���h�{���pCW�VL查�M��ޮ�e���ai�<�݃�M<��]���V7��?�=�L�'e��[<�֗s�`�^_˾��~j�M��_��gwLZ#�n"���־p�1μ'c�<6����M�L�Iʎ����&p�:6#~��v�Y���֒c�yKD>�
o^����k�S���8��'[zR1�I��I�7Qy'��wfΎ)�k�ȟ#��Od}�7��2�FN��c��e�P�>;/��λ��ٞ�x��_
Ɲw��@Gk�j&qɓ2UG1O����)�����ql�OR3��h�ԛ��"�:��b\�w
A��~u�z��_��>��H
��Yp_w�WH\�\�J`$�okc�}Ÿ&N-���
"Z����X�X{�_�|m�j�D����9�vĐ~G���h�	U�H����^5�8Z�>��˓*��"0�T(C������G�ĝ%��$5o�p���q��j2\-�%`�#*��,��8b��Gű~��.���'ߢ��I�ԫ�ce%���*��v<�>>�� �����e.����5���\w��ۯ��Rj��pۡ�r��k�����s9�s�f���]���U8�*�~���J3�$����g����s)�#KO�Aė�̈�1�E�鸖�|іs��em�?��;)�}~P�ղ��K�+ېb:͇���D�<�Kd�(C�/��o!yR&u��l#�f"i���[�t���K7���R�$�Z֫X�]��%;.�O��B�3e�A�
5��,$]��K��?��Nc^s�8GN�\&��܈�N#�/��e�\^m�]���ո�.k��Y3e�e� c�\0_��%�^9�we/��,x�~�����o���
d�/��%���"l��Lj�	exr���F�8��}p����(>�@|̽��1w-��;����퉏�?�i�Ӯyߧ��ٿ��7��ȓ3G�|W$o����u�ٿəߒ�fϕ�Fy]��^D\3�;�6KN"l�!ⴰ<^�>���;�^�{fF�'�<�Z4���c�m���\2���Ec��$�G�Y��j�dz�Yw���m��8��/�E�5��Dˆ�qN�ή�k;sx�<��Zx[.��1x5�ב%-�H({�C�G��B�x}�<6̚�K��l��L�����f;I[/EԝC�y~>>�alԃCox������hxaC쳝�sc�mMcCN� �}f��*�jy�_�0�!��a�U\�)pJʈ
�f<�f9^��M��1׷Rߌ�,����M*ԣ�R�^���ҷ����1׶ B�/C(˥�����F`:)M��l"ej;�Z\��w?8�#��9�/o�>��eR��^��������4���Z���kH��۫PҬ/��]��xD]1C�ōq!'LX��S	�X�P`<�HzJ`���z�L�=C�f<�HZ�VKK�D�~�8Dۚ"�ؐ�KX�4��7�<Ɖ��<�y���
��_0��R���"��&��[l��'�܄�	�C���$y�	��
�$�a}�>.��ԗ���?�k�"��F��]tl!������*L
۫ŒD������1���!6+ゎ.��A�1"!	�Z�pC�U��%$*��RG��>O����?!l��}�qw�h�^܀`���G �(�]�:�KT<1o!B�VHI�K���I�2��Y=�y.7�88���#��<
$�R��D�K� q��H�Ṱ�9	�Vv�nQs����x��]a�c�Y'��|�����+GrL.C��Eq��g��mH���m�Η�����o�tE?[3�}q�w�<)�:~f�����b$�8��,���g�`6�aO �H�`��ޙh��
l�
���σ�q�:�a
�K��I�>k��>��V�@�%�yq~{��k��τ�>c�=*$���X�P#!�펚�A�5ݰ���]�IC莍��$.yR&u��
�qs9�9�Ή�_��%IC��3����=v��I'��e����f2t��j4�5���c�ԑ�չ�U�����?+��b:|��
)�G$L�m��=3������ZCw�����;:�ʚI\�I먺���������~�X�᳛���l��'����4��[�p=�;=�ji��Qu��ͬ��wF�}�>��Pϛ��*��o4��V(|{tg�R!m�:�.����/>�r>^n��b:>�u�xW3C�͂�vc܍q73A������ŭ��[��9Н3���ɩ1T�L�*Oʤ���66� ��|x��b�^m1$���|�
�`��,��['(���籽����k�PY3��<)�:�[a�_84�G�ńnN��'��t<��jl&I�x���գ`b��U����&�]]H��T�L�*Oʤ���ĩz������M͒��)�C�~�i�'��}��I�"ſ��/���^厎���\�mr��ye���%O�X���Un��W�����|�q��M*�:��ҭ�݉)�[��
�K��I��m#�~
��T>RAW$�p��:��QƸB�'eRG�+�|Jy�螺N���Ho��ʤ��&�)�DC��sA�'eR'%�j�+�Չ�q|ZvX}ǧ�Ĵ�9-�ɨ��5_�3����C��>.(�-��9
���ދ��|��-�(��O�����gF�PH�P���������zR_��B���Ya��o<�+�K�v��ϳ��L:8������|�q�)�a���Ɲ��"�D}��g�9�Ω�b���@��6s���Il�ݝ��"i������y��^$��E��<���Ť
�a	�BƤ�a^j�ՆD}?���w�%v�~.��pw_5���Ǥ����KR�D}�#��J�����-S79��AR�D�������wyu3��P���ڣ₤���
��%���R�G�qƐm�H?���
��%�{�K��#��1c�!�	<�Hć=fL?�q$~����-$5Kԗ�6��	�0cD�9�S�#�����������&�<�0��䂸��t�D��_z��`�~��@��s?&�7�'������M�݌���ڼ���Y�:��$�G�WD��t�uc�<�� ��������].c��-�
W;�5�7\��:�3�VJ��D��!��#]ĄyS;�L�}}'����>|{f�Z����d��6�Q��6$�G��"�׏H�gZD����gW�~/��e��s�/k~�I\�u��4�f�c��L�����#E��nCt�����^Y㫵>�z���c�~��RÖ�و��?����x����>-�5tƵ1����Ԑ5�����כ�U����~�OM�'����6�9O��y=�����&\�q|�C��ܧ��uږt�OM�/�[���z=��i��?��~|k�ZۿϤ�~�/�Do��j�q��
i��6Ļ��~=�q��\kik}���&q�'ej���;���o9����O��G�����05�-�o��qn
=i&q�'e	�ݐZ�����?t����v\g�hk|Y�sͯ7��<)KX�s-ڇ�����߇H�i�!�u��[\1΍�qm�][��Z_���$.yR�?��G�WL����{ê��|5���AF��!뿺���Vv���旵� q�K{�/�Ʋ./J~�~#Uد����H��%#d%җr<��t�ꤑN�]��H���i���|�D�퐱-� qɓ2���2��u�G��S���e=��k���u�'�dH�D1�zJ�szd����~H�w�����Z���&��%���1�^OL���2��O��e-�iY�&'�;&*�����6�t��S3�CO�׾�����}���A}�!���b2ұ�N���x���#��(9W�[��}t�5��x���Z�~ ׬���ִo��� �ۧbr�&�HF-Q?�u�~=˶�P`�m;:)3�[9ȷj��#���0�7uR;6��ښU��R��yO!fi���L�Gc4Q?��a��D�>��q:>��o��6_��,,Q_֏[wju�s�e��<;��|�B�އ &�/cB;W34_$���z�A�sB�8&�sU�p����IR�/�_��ݗ��`����Z�=_$�G��q�'k��#ۈ���9W�|�|�sS��~,��C}�_u^�
�/d̋� q1m�w��z8���� 7u>j�m�d��DS��1��]�����6b�/�!��@�R��|�T_�!�ҳ��#ue1я�392'�̛�"�~F�R2���Ȝ�b2�D[�к������:5�ɼ/�]R
ѯ�L�ώԼ��9!~D��9X�4!M�A�3rуv���{�%�I�e�6H<=��k�XLT��&:�p�E?�τd^H
�#�D?���E;_����ӉاЗs_�9�Ǜ�B|�/�Q����U�5�֕m�ć�"�O2_��E2j�d��d�
��}�l����-dٖk^[��uqFM�Ռ�)ѐ�#�HF-��EJ�~�vV���Ԯeڼi4oژ4A��=ЦEs��=�A���B����C�)�/?�3gN�d&�˖�`��
���cb�?��]�(��׷�����&�ѿW�ۿWO�~��=�A��U�B
-OC�+UHD�J^k�!���v�%�Y�ƍзWw��كtg]M_ҁAN
⽥���q�S�'J�e�&
I�N��j~�ПhQ2�5m��{tE���vK��ü��W�����Z�ٔ>�~UH�6j��~��
Ы�ߊ�D�/i?�{�����Ǵ��%OK�1L�/i�o����ӳ��-J&��
�ߝ��K���M$L��0�,���9�=�C��iD-J&�F��k�	���/i�k����s]�'��&՗�7����B�u��oP����]:
�/�+���\a�]"R�T_ʅ&
ꣳ�L�A�w���۷E�mщ��'�������A4d�*�I�_��w��QڶF�6�m+"��

X_��~�o�$.y��5�t�6	���Ѣd2�[�&ڶj�.�	����i�?6�w-���KyjQ2��Q�Z�h�8�gb}0Q^��.�vM���X���/Zr.hռjS��ɬV�jh�qӢYc��71>��/
�$�}^��Nj�7�V�^(v�
%]hl��_�(��jV��y�!d�sp&Oa� �ĸ>��J' y��'hd>:�.x��3��ec"*�Bc�z�*��W�Z��S�ʾs�*�~`�!qA�ɉp��W�
�>�=�淉oL	C�U>��P�o�hU+W�y���Xo��~H��a�1�Ч�0!���ȷ��־ݜo��}[�wV�
g̴P`�*g=]��'(�x�S�sG]���}��8���[X���vЙ�V�]7�>���P�}���P���ʥ����U�T�k�P��YY��og$��ұ�Nc�'e1���*n����fعa1t���ו���^i�-��KG�⿊vE"RV�B9�D/��N��0�i}\B�\p@�^���E\:�C�Q���S��J3�l�R([���G�eʕE���P�*��c��<�ݽ��ׇ����$�u�J�l��Կ@}�*�reJ�B�����ʗ-
U*UD��=���$hy���I�p��!�4�*�gԦ�E�3Ti�)]�˕~G�,�+U,����D�wU�P��K��%�q2}��A�c���%�_�>C�f~ɒ%TP2�I�*�+ö��|�����;D��ܿ��/�~L�
��R��J3��ߋ�>�d2+]�w5.ʖ-�,3>��#�*�Y�t��7�3Ti�Ʊ/Z�Lf��/eJ���D�|(�~3��]��U��U���*[�Z�Y��C)�Kڑ{A��k�����u�'��>`���/�[q�%���
�J��u��d�t�x�Ι��D�4�+^E��JI��L��F:���'`��Ϳ|�)�^n��a���W�V)"ڟ�
�T�UZZ�AҒ/���"�ۆ�i$-�R�9-+
��BI���K��]˔)��}�n:�5��>��AW�L3�?uˤkZ���!t!�p-�u��?�#�����[)�w-��A���܉���Z������أ�*��o[�RMT�|�Yi�����;���G�F��&yR�_!zٲ~Me�lF�(��۟1ѣ���]���Kj���;�>���)!zIMҷ�&a
����C�K�ۓ5T<}\BA�P���%5I���'o��
�ߐ�H�&�$�G����
��$eRO��'�#zIMҒ�_!zImN�}*�B�R0��K�.Ů]��v�Z�^�:UV�Z��ʕ+�d�Ν011��I��)���l���W>��/�ʕ+�t��;H���z?���ԣ�p�
.\�������<�|��J<xӧO�O�T�W�^�ŷ��=^�z�gϞ)�>}����3�8;!��X�96���ߎ�����I��������'�:u�)ʤj*Thdgg�����p>C�S���&c���$<7�LF��_=ª�G`�|���			���}�6���3S���ȑ#���������”�ۼ��@��ԝ��V���(��!J����'��y�����R���{��xƖ/_�!e�4�������J�m��.T��w/O4�8�����LďLJ(ͤ��ݻ8q�D��%�4������M���V?:���0��B�O�����D�S�rK��z���*.>D�޽nt�^�1c��/www�!��鍶�V���ij�:;	��cj�=�ԛz{'��.Sڂ�]������]���j�jȍ7�e˱�c��U/�D��Ա^x��磦��סWף�	?1�/��n@@�:'d�͝;�(ݿ׊-Z����ar΄��*��/��˜���|�B4�Ⱦ;�rA�,g��P�{�K�xnO���Z�̙�r���d�>V�d��OO@E�)�r��GJW�v��a�k�r���VcQ��(xpN�߹s<��K�,)��N����;���gn(F�_m�����V���hwa!��tE˳�P��8,�{�78OL@������A��666�_t�.�5ࢌ�w�����ǯ���۩�a��0�j���)ie���E������:v����t����W޺u...j\^�@�s3��"t�j�sߛ����/\��L��f���t4:�w\.�[�l�̽��t��t[�j�Zq��}�������$c�m^�|����"�{rC��9#�y/�_�~]�!�M��͛��cǎ�������=��������)d�H^�zU�D�Mɲ��D֦��D�A(�{�nї�C}�#���lG��W��N."�9���ɏD�IT!���O��ѣO�?"~ſ舞�~E�}�� ��2��L���DŠ��{(IJ�b:m�E��O���N��/F+U�P�%~j\�"�k�(ܨ��B�>�d�B�X���O���[g���:s�����P�-Ӊ�`k�i��ͧ�sj��~{��)����1[:_C4�cG=��(�s�zb�(�[E=��7������S���&��6ϛ~,��ZD�Y����yf9"ϮH`%"��E�G_\�˻0�M}�<9���w����`���Z(o��L�ȕȏ�r��7g�YҸ���;f�Q�������9~g�C��k�!��Vx�=
�S[�����rn{��3[m6�>��&8[��9�2
s"��f������_(��-�`��mx}�ߘT�^ԓ�E�B�`�1w�!��#��.��ۍ8���Ҽ?��^Dݵ��.�d�,�;�tH���7�>~N�(�WT�`fm�%D�[g���zl����Dˆ���ޚ|SJ�x�q�[j��'>ϚI�u�ɰv�Bm���\�^_�d!|�]1��Kp֔�G_�����:�٬E�5�YCV��ZX�S+�
�3�?I�fމ8�t�?毘�ۯ��]�_
~���ܹr䦼nٿ�X��a�����j��m�/~K36��_��p��΍3�4��yt���1D=<J,y�淁&p ����7v�{ܲ��l�{mG�ˍ}/(�[1���3��u
\����j>�����{�H�)d�%C�"�ǹU�J@�I���k��y{a5\���u�&���c�Φ���9�Ŵq<��f�o�q���jD��OE����
l�$�u�3G�<4�֍œ���x�xr,��0�x[�΁O��s����k�*�HG3�?~���8����&�c�C�+Cٷ�'9�y^~*伒o@��7�A�̙Ԝ��h؞W�������p^�[~���"��Cy�}���߳}�w��Y}����y��'xfrܜ�|/��󻄖��D~�ъ�L��W؉%��v\p��Y�����k
�o�ob�C�5~w��|q��𻌜>�#��o͹[ct�zs)�h&��c��hw�s0ǜ7�ph.~�����`BT�y~�l���6t�S�Q�4�7�J�{7�9��j��x仅>����mS�nd�#�Lf���d�h8m��&x�ِ��3"����"����vLU�K��?7�d2[;���~�:�v'�L���Ԁ�ۛ����|�]?��S�o�a�䞷)����a_��;�~���e�<�W['k�Z���R��#T��~jN�R��?�{�L�w2��V?�����i�o�vh�2�~󞸱�foxaƹ;��DB�m��h�AX�o����;�w�����K�c����#�mI$T�N���8:�?4�O�A�b�(%��$�\�3e��p��#��;�H�<��3Y��#��3�h�<��ϛsud��Po���b_�=��K�yƇ��_޿��Eo�k!�I��;z�/�_|y���oޥ$->��I\�$��kh��yϢ�9���]�fDBIK���/]n������[Y0c���9߿�||u��~o)����t�qM9����/�Kו�����m�T�D
jQ2�}����p��M���u��J�y�B5���O6��cgժTzG_~{/�^�NE2��]�ÔH(�u�uR��u����
���R&i���%uR������r�w�?�	��7����ۿ���,D���L�?��� �������?��_����0/��Y\:�U�m�ލ�<��4�/�w0~��H6�Lމ��/��"������2w1S:�}�3�?K}�*�"���E�~"�(e����1���>�Ik������N�6��*�|U.��~}y��߿������ʺ9�bo���Fj��ӟ���T���_���o�����]�є�k����F:�����g�k�zߐ��Qi��zT��zMH)"ڟڲ�
��}Ky�2�*_�?�im�s��	��w�Uק���J��&�6/��(ʗ�/o����Yw	z}��s����/�_ć�/�_�<��%�Lf���Ӟ�>sQq����<K$->��I\�$��kh��K�PH)�9����1S�E�O>����P�����D���Lֽ��KbZBAo���_�HZ��e;�ݸa���E�Y�꫺�����_�B|�E�d����H(����	e�9V�V���EK�r=ʷ Z�Lf��VFT�<	�P�Je��|��!�$-���|�r>�(����z���}I�K����K��I�F�+�˗/��%����/��X4D���L�{|��tR���ߟ�iQ����]{��}��t ���E>�/�C#9�/�ž��lg��f��{W����e;?��,_��i7�]j�*�A3�|n˶g��]��3_�BtH4�X>�Q��[���,'�˲���;7���/<����3\Yl�K�b�H�������M�Y�߮�{�k�s��/����8;��{M��Y䧶l5����]`��O�W��p��nٌ9sf�h�!L��#ڵȧ���0�>�4�~ذp�1��1i�hѮO��Oy��i?�9���2����)���@jO�7�́jcv���?	Ԯ?����h0�{�\��5�I��7�MN�cϱ��v�m����~��s턱&�y�'h�O��/ڢ+l���5f�@��v漥����96�NA��R���X��#6xnq�Eh��n4�[���?����ś��y������ka�y<��D��sj�e�>tޑ�/��:�b֭(L������h�ϭ�˜���D�qS�����~�**�ϕ���lڴ,��YӻMt7�������#�_��!�[�ϥ-�s��T�2�D毾n�tu�)@����sZnR�T EI"��_��&Z������=����e?���u3�o�q�ٿnd;ٞ|�eտ�G����ޯ���Ӈ�pt�	���a��!��ct:fw|����Q8�Z�~:�z�/��)�X�
�p`��T��Cf�`0���h��ڽt<�����<^�O?������1<�i
O���z��<I�+?��غ�P�i2���Q�aطp�,H�c��0�?g����g��68�!Z�$E��eK���l�Xї��W�'��)8��N��<D´�:y����c���9`@�fgw���+���p�}rA��ݿ��T�tt�6�%��gOy1��e>�"�7,N�Wx0��Z�6<?�I���Zڮ1��c��Aa��`�6��3�M`8���{���6��/��t[,x�;��{��K�3>�������&�"iHZ^9�n/��l^<���䓦�!)G��_�Ϣ�����{��ORG�[�v��xT_}�=�Jr��<�\��G�Xl8�����C�/o��,+N
i�ԕm�
�B}#�84��z�P���H���7�y,��z�n��0�8'���+����8�:)�D3%S��Ţ�IO4���@ʥ��s��zW�Ժbi�����1gT�'e)Y�b��8�Db��t�zc�Q�����/���B�?�`���:�,u�v�(m�����Whw�e�H���0
�S�e��`ɄA8�������诶�SLq��$g� �̜1�}Py�=�L�h�;�:�����%�O���jl�"Qs�3^DC��) �R^���F������x|�����`�_���c��}�_����aꄚi �R���TX�n���1+����+a��H���ۧ�^��_|�t��D�;�5��&]�E��jG�+�Ywk~h
�U<�e�	2.���3P�WO�5���j��W�@�g0��H/3� {������;7ٻ{�8?�
?�g�A���3|<�U\�q�ƹ#������%C�w�PX�B��ݬ�s�Pl�3��v���9�:\�N���
r��|����#�2�I?����!|G%��)�=x�N��N��5�녣���}�˽�p�=����˽s������E_���
������X�Gڬ�7=8Q�ٝ3�ph#��LĶ��}�$�X6;�' �e�c|�.�E��M�Aő���x��B]�eԾ�ٯGW��B���l�<�\8�G��b�tl^8u��[^�B�~-���ߋE��$ћ��*�c�����D��︁_��I��Ƿ��e��1�q�h��}�n�/N~!EH^"�I-)@*���i�����i�Ƕ&�/�C����ȻYHjk[i���?vo�t́
s �ݦ�b��Z��5����e��]�6�'u���/c���C-��U��pn�B��w�E��0w��1m���H]A��|���q~n�z�֥`�j�E�qb�җ�s�f�o[L&�N�E_���Z��-��4�?B�f�-��'ia8��eK�8�y!&�uY�ȟRG�
�-�>F_��4��@"c�gR�4L@�'eRG�
����P�Bd{�!���$�<A�'eRG��V���b)X�L�,�lY�N�u:Իս{�W�����[��F)�z��I�dɢE�hdG���
ƃ�#�i6��������|)�ѣ����fmٳ�C۶u�L�	7�
C�Ɉ=;�8�g"�<��ql*�v�҂A��v�v�=�|��˗�r�nM�vM�P˩�-�E���@�;���!��Nĝ3F��4xn� ۋ�ːI����.���ӕv����,D�q%n�%��I����W�5f_M��j|�?�M����;0 �Oӗ��sk=�}����lK|�S�=اt����
s�>�X�_��/�S�飻 �j��#�1<��7�>���B̵Ո��
1�����M,��X��������s2�Fu��?���4M�صk�珷p��ԣ/�ʘ���4���0ˉaG&�����4DZ�����l�B�>5������Iվ���z�c���Ї�!�f"NLSZ��
�g��߂0�c�~6@�C��m�����֢��I����>��I�j�*�������wI��l��������
�]c4v�S����5j�	bUlD�>�qr&v��?�(��2��_ջ��Ҏ>3�}:��&Q��
�3��Ǔq��n�mc�-M
ɓ��Y�G���&������2�Z���g��-m�8n���M͝��0��6^�ɴ'��M�r_����X89������i��I�q>����ss}v.^[�F�a#���]��ϓ�9�cbb(H���T���o����}�yԟ�|���A�ڀ2�Z�~�BCO/@���h��F����G���C�������sj�t�=3�-�5��l�[!��u�|#���8����Q���j>�?eR���n��u���<_��.�7��#�fB���S&�{�O.A�E�ZB�M������^�+��)�1�m#Ϛ �n���s��3eR��M��w��
�~~%�ϭ&k�j����^s�Y~�ߍ� i�;�᪌u�.C��~_�����;�8�q"�6���2�Z�R?�0�Mx}i".�'�_�a��̿���$$��cZ�-��B�#��nD�6G�s,�1��4�<�2�Z�l_����6QW6��	\c�
��6��f�Y��ڨz�5SF�ڌ�g����J�_�O�4M���F!���a�olF�usD�6C�]��}?�{u�L���蛬�mb�lA��^�>څ��C��{M�سg3��K�q�w ��V��7C��)b�}��i␀=a=э{�{����υ��]nYc�2}��4��6�}�����v�;mCܓ͊x's��'q����<��p��~���p9�C���2�?�w��u�5�y��?T�L�&�p�����* �>�I��=v"��ĹjĿd�}7����^��,�}�2���6������;��6�,Z�2i����̦ �����"/q>$��X�~�`;���N�^k��}[����Q��x݀CxJk�[km�U�ʤi�r}[�	�Q#:��։xy�?���>������Ć�����b߆	�oGH�ܹs���?����ldnn�s�Mj�>�ڐ�Hm�z�(��&��R�_�
���O��szܘ.<���լYf��c������~�lqb6>�D����@�����ϟ���K(��S�\E��jKn�6|UoF�6T]�jc�����?���s�T�%i������Z��rq�S��J�A*|���w��u9
�L�yJ6"���E�y��)B�����.��}D����ҮӼ��B��WY�]����|Cr��D��=)M��j�.i@���j��6?`�N��'�N���OFlib/img/src/quicklook-icons.pxm000064400000023453147361034410012527 0ustar00PXMT_DOC�HEADER �@N
�[!�!�METADATA
Y�
%streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_IMAGE_ZOOM_�����NSNumber��NSValue��*��f������_MASKS_VISIBLE_RECT_�����{{0, 0}, {0, 0}}�����_DOCUMENT_SLICES_�����NSMutableArray��NSArray�������_PX_VERSION_����� 1.6.5�����_DOCUMENT_WINDOW_RECT_�����{{472, 130}, {401, 696}}�����_PRINT_INFO_�����
NSMutableData��NSData���}�[381c]streamtyped���@���NSPrintInfo��NSObject�����NSMutableDictionary��NSDictionary��i����NSString��+NSHorizontallyCentered�����NSNumber��NSValue��*��c������
NSRightMargin�������f�H�����NSLeftMargin�������H�����NSHorizonalPagination�������������NSVerticalPagination������������NSVerticallyCentered�������NSTopMargin�������Z�����NSBottomMargin�������Z��������_LAYERS_VISIBLE_RECT_�����{{0, 0}, {239, 240}}�����_DOCUMENT_SLICES_INFO_���������PXSlicesPreviewEnabledKey�������c������PXSlicesVisibleKey�������������__OLD_METADATA_FOR_SPOTLIGHT__���������	colorMode�������������layersNames���������Untitled Layer 6�����Untitled Layer 5�����Untitled Layer 4�����Untitled Layer 3�����Untitled Layer 2�����Untitled Layer������keywords����������
csProfileName�����Generic RGB Profile�����resolutionType�������
resolution�������d�H�����
canvasSize�����	{32, 128}������PXRulersMetadataKey�������������PXRulersVisibleKey�������PXGuidesArrayKey�������������PXGuidePositionKey������� �����PXGuideOrientationKey��������������В�����@��Ғӆ�����В�����`��Ғӆ�����В���������Ғӆ����������_MASKS_SELECTION_�����I�[73c]streamtyped���@���NSMutableIndexSet��
NSIndexSet��NSObject��I������_ICC_PROFILE_NAME_��Ò���_ORIGINAL_EXIF_���������*kCGImageDestinationLossyCompressionQuality������������Depth������������{TIFF}���������ResolutionUnit�������Software�����Pixelmator  1.6.5�����Compression�������DateTime�����NSMutableString��2011-06-11 22:33:32 +0400�����XResolution�������H�����Orientation�������YResolution�������H������PixelHeight���������������{Exif}���������PixelXDimension������� �����PixelYDimension��������������
ColorSpace��������{JFIF}���������YDensity�������H�����
IsProgressive�������XDensity�������H�����DensityUnit��������{IPTC}���������ProgramVersion�����Pixelmator  1.6.5�����ImageOrientation�������Keywords��������ProfileName�����DPIWidth�������H�����{PNG}���������XPixelsPerMeter�������������YPixelsPerMeter��������������	DPIHeight�������H�����
ColorModel�����RGB�����HasAlpha�������
PixelWidth������� ������_DOCUMENT_LAST_SLICE_INFO_���������PXSliceMatteColorKey�����NSColor���ffff�����transparent�������PXSliceFormatKey�����PXSliceFormatPNG24������_LAYERGROUPS_EXPANSION_STATES_�������������_STATE_�������_ID_�����;2862F1CC-E29C-40CD-ACEC-4C3C2F52B266-14332-0000DD7C8ED79D78�������#���$����;1C716CD5-CB6A-4036-AA01-E604F1295CF8-14332-0000DCDFA064FDE4�������#���$����;149D0829-DE43-4377-AC40-B2887BC1CF57-14332-0000DCD72B273396�������#���$����;F643CD27-63E6-467B-8CFE-484EBF8C5E59-14332-0000DCD3C28B36D6�������#���$����;94E82950-90A4-41FD-95B0-0E9E14581547-14332-0000DCCF3AD120D4�������#���$����;DF66A535-7BA6-44E8-B005-A067A1A05212-14332-0000DCCB983B93B5�������_IMAGE_VISIBLE_RECT_�����{{-113, -7}, {385, 654}}�����_LAYERS_SELECTION_�����8�[56c]streamtyped���@���
NSIndexSet��NSObject��I�����GUIDES_INFOP @`�	COLORSYNC00appl mntrRGB XYZ �acspAPPLappl���-appldscm�desc�ogXYZlwtpt�rXYZ�bXYZ�rTRC�cprt�8chad,gTRC�bTRC�mlucenUS&~esES&�daDK.�deDE,�fiFI(�frFU(*itIT(VnlNL(nbNO&ptBR&�svSE&jaJPRkoKR@zhTWlzhCN�ruRU"�plPL,�Yleinen RGB-profiiliGenerisk RGB-profilProfil G�n�rique RVBN�, RGB 0�0�0�0�0�0�u( RGB �r_icϏ�Perfil RGB Gen�ricoAllgemeines RGB-Profilfn� RGB cϏ�e�N�Generel RGB-beskrivelseAlgemeen RGB-profiel�|� RGB ��\��|Profilo RGB GenericoGeneric RGB Profile1I89 ?@>D8;L RGBUniwersalny profil RGBdescGeneric RGB ProfileGeneric RGB ProfileXYZ Zu�s4XYZ �R�XYZ tM=��XYZ (��6curv�textCopyright 2007 Apple Inc., all rights reserved.sf32B���&�������������lLAYERS_��}�� Mf  @Untitled Layer 6d';2862F1CC-E29C-40CD-ACEC-4C3C2F52B266-14332-0000DD7C8ED79D78�x��
�0�LA��93K�3p��#�P
&imzᝊH�-HR���,B��!���M(}�+�P^�M�P��,u]�-�<{@�,^=�t6��4�i(��Zc���1�JF�n�V�������z@�-��U�8nc�f������-�l9�a����^�a����?�F�V�fqy+��=�]�B��x&9��<��������5�pi��]��vل�f���}6a�~1���*�S̕��.r{�P��I��5��Mn*��W0�Li���o�^��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6���  `Untitled Layer 5d';1C716CD5-CB6A-4036-AA01-E604F1295CF8-14332-0000DCDFA064FDE4�<x�ˍ�0E鎒!�X�fK�@t���܃�L>`^2�Y�l"�;b��~�.����j~�i��-�<���s�y~я\�d(��)C۶��k7?������e	���0�t̖as��n~����
һ���XV�w��+�w��5��I�`� }2�4wkm�-n���ou���w��]�_��-I3�<�0����ϛ���ҧ�r��GI�)��Mc��I�└T�D�*m����;�����k�*���o�e��GS]P��[͕��}4̅G�F,g^
q!�n���W]�����ϲ��6��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6��aCUntitled Layer 4d';149D0829-DE43-4377-AC40-B2887BC1CF57-14332-0000DCD72B273396��
x��
�0P�� g�93K�3p����PJLR�Jq����Pa۶��"�-b�Mh}�*��^d�M������[>Y΀�E�f@�b���{�����	�c����=Ch�6fH��j3�ݑ���n�y��ڧ��4�8��ߒ�[�fX�%[oe�������y�u��)���K��J�]���Jnf��
�yN:ÞM�T��.�gp�l�R5̐�9��L
�Į�e�jg�u53��D�(5��Hz֮�T]i6�\U����%jj�	�ޚ���^��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6��� !Untitled Layer 3d';F643CD27-63E6-467B-8CFE-484EBF8C5E59-14332-0000DCD3C28B36D6�cx��;/�Q�FH����&1���'�XmF��hS?;�A""�&T�7ui��y�7���9�-}�9O�?}oOs�����i���ѵ;��b**ѩ�1�،�X�BdO���$(Q}�3��`��*J��&�(��ϔ(S��=���k�Q�C;fq]�FZJ��d�~���(YGl�K�|���K�4�)Ӽb8g����Ӷ�3x̪�Q�m'}ۣ^1�S]�Bl��l)�;V���[�m���ӑpYRZkMY«�xK�.�Cܿ��P���W����&�vP������ʂ��(	JT���������)1�M��R�TT���,a�����#�}$��or�/�BhK�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6��� Untitled Layer 2d';94E82950-90A4-41FD-95B0-0E9E14581547-14332-0000DCCF3AD120D4�dx��=/CQ�!a&6F��h0Z���o`��6�IL������h��^/�s�4i������{�yz��7��ijvp�.�_��j��6CѬq���Q�QAdSAMq������bR�ψJ�����|lf8��y�x�F�Z�eJ)��U�uY��ζյom�(����C>1�;s\�2:K�q�Ӊ�3�6�q�埬m4}����,��;v�HUSQ�Jb�����lGE�=�F����smZt����UoXvu[cMYN\_Ӝ��#� ���7E�4�M��������-��R�,��a:���W�j%
���[����}%����h_i�H��jhK�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6��w �Untitled Layerd';DF66A535-7BA6-44E8-B005-A067A1A05212-14332-0000DCCB983B93B5�+�Bx�����mH@�XA_�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6��MASKSPREVIEWC ��/@x��?OA�qB4��H��v&������5}H*h ���ĄƂi�h4�TZ�A��!~�	���������Es�vwv~�����C��1�];&p	6���
���+��bS��)�Ad�L�,��E3�xb
���#|^4U�%�}]4WӁW�j�.�pK�8��G8�>��8q��ti��V�Ջ��P|�:/�����m���q��ނ_��w�4��ft\��gm����<">��CQ�H8$6�!6�as<����х��I�/���s�)���7ş����G�)�v��u�� �b�x���ES3=`J�&��L��G��&�n�5����h��j�*vG��{D;��>>�����/7�k�0}��%"^����_���W�	���|��r��
��NvEEt�R�gJ�
�,7�)
<�PD�D0K��MLU�R�;J�43C�%�o�@SD���U��s�b��k���?�N�X�L=d�zī�W��˯m�+�<g��K��^��Bq5x�\��%������~��((-|���Kl�W���e[����_iP}I%�7�����MA��-����JL[+,��p����)�m7os��+
>�JO�M���9J
���+���S.�3^��8��S�1�}�_p�J	�))t��n�PB���p�STѵ��9��g45AD!��mJ=43CL.J)ܥ�)�jPxM�����bJ��)1�d٣�Ϯ�����%��lF����~m
�7��t�1$���	���� ق���t�e�-�����L��/,�@�A��@�dCCC�c�۔\k��#�9M
]:�=66�����9�1�]�ͦSo���iۿU�]����dM�?�{��amm��������k~�--��kU�Y6��{��ܻ���w�7J�Iy�� ����W��C9[��B�w���+����9^�-8M���$�����1p��F�@s�c��	Y�T_kyh�.4[�\U��]��i4[p�C�4Y]]M�}����3�߶�������q��
�{��(�Ռaff&U˗ϼH�$�!$/�����%����P�ī�����lA�j����E�j�hdī��1o�/B�@�Y���t�Z�C�I~H� ^=?4[��_�l	A�j~K���&��5��"���o������t�e�-��9M�Q45AD]�c�� Vc��`2�ş�۔\k��#�9M
]:�-sy�:J�}8Uݥ�l:�� �>4SQ�]�����D��ْ7y��PT�'���ュ���flib/img/src/icons-small copy.pxm000064400000145400147361034410012566 0ustar00PXMT_DOC�HEADERIN]#��m�~METADATA���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_IMAGE_ZOOM_�����NSNumber��NSValue��*��f������_MASKS_VISIBLE_RECT_�����{{0, 0}, {0, 0}}�����_DOCUMENT_SLICES_�����NSMutableArray��NSArray�������_PX_VERSION_����� 1.6.5�����_DOCUMENT_WINDOW_RECT_�����{{712, 4}, {200, 874}}�����_PRINT_INFO_�����
NSMutableData��NSData���z�[378c]streamtyped���@���NSPrintInfo��NSObject�����NSMutableDictionary��NSDictionary��i����NSString��+NSHorizontallyCentered�����NSNumber��NSValue��*��������
NSRightMargin�������f�H�����NSLeftMargin�������H�����NSHorizonalPagination������������NSVerticalPagination������������NSVerticallyCentered�������NSTopMargin�������Z�����NSBottomMargin�������Z��������_LAYERS_VISIBLE_RECT_�����{{0, 147}, {239, 240}}�����_DOCUMENT_SLICES_INFO_���������PXSlicesPreviewEnabledKey�������������PXSlicesVisibleKey�������c�������__OLD_METADATA_FOR_SPOTLIGHT__���������	colorMode�������layersNames���������Untitled Layer 8�����Untitled Layer 7�����Untitled Layer 6�����blue-document-zipper�����blue-document-flash�����blue-document-text-image�����application-terminal�����
script-php�����Untitled Layer 5�����Untitled Layer 4�����Untitled Layer 3�����Untitled Layer 2�����Untitled Layer�����script-code�����script-code�����globe�����blue-document-office�����blue-document-pdf�����film�����
music-beam-16�����image�����blue-document-text�����application�����
blue-document�����Layer 1�����dir�����
dir-opened�����file_extension_mpeg�����file_extension_exe�����application�����Layer 0������keywords����������
csProfileName�����sRGB IEC61966-2.1�����resolutionType�������
resolution�������d����R@�����
canvasSize�����
{16, 1280}������PXRulersMetadataKey���������PXSlicesPreviewEnabledKey�������PXGuidesArrayKey�������������PXGuidePositionKey�������c�����PXGuideOrientationKey��������������PXRulersVisibleKey�����������������_MASKS_SELECTION_�����I�[73c]streamtyped���@���NSMutableIndexSet��
NSIndexSet��NSObject��I������_ICC_PROFILE_NAME_��ے���_ORIGINAL_EXIF_���������{TIFF}���������ResolutionUnit�������Software�����Pixelmator  1.6.5�����Compression������������DateTime�����NSMutableString��2011-07-02 16:15:43 +0400�����XResolution����������B�����Orientation�������YResolution����������B������{Exif}���������
ColorSpace�������PixelXDimension������������PixelYDimension��������������*kCGImageDestinationLossyCompressionQuality������������PixelHeight�������������
PixelWidth������������HasAlpha��풄��{JFIF}���������
IsProgressive�������YDensity����������B�����XDensity����������B�����DensityUnit��������{IPTC}���������ProgramVersion�����Pixelmator  1.6.5�����ImageOrientation�������Keywords��ن����ProfileName��ے���DPIWidth����������B�����{PNG}���������XPixelsPerMeter�������������YPixelsPerMeter��������������	DPIHeight����������B�����
ColorModel�����RGB���������Depth�������������_DOCUMENT_LAST_SLICE_INFO_���������PXSliceMatteColorKey�����NSColor���ffff�����transparent�������PXSliceFormatKey�����PXSliceFormatPNG24������_LAYERGROUPS_EXPANSION_STATES_�������������_STATE_�������_ID_�����;92352D33-BEFB-4A00-B68D-0F5820D3E342-34139-0000E0B12CF05B8B�������8���9����;B5A88CD4-059B-416C-8D3C-29E0248EFCD8-34139-0000E0AF0B615888�������8���9����;6F8BFC21-2EB3-48E7-B6E0-94AE9AF57B08-34139-0000E0ACB5DFA933�������8���9����;94E65854-C0A3-43CE-B5A9-193CA1076463-34139-0000E0A9F5D631B6�������8���9����;B8FDFB16-BEDA-481A-AA0B-EC14C0FC4102-34139-0000E08C1EBDE397�������8���9����;1877DB60-E816-4460-B972-EDE51DEEE0B4-34139-0000E0861C377A66�������8���9����;FBFD89FC-7050-4E67-8997-4DF17F3B4C29-34139-0000E0600B7D2A44�������8���9����;4B50D76C-C380-4B7F-9C44-F1BC0E7CCA19-34139-0000E029DA4EADC1�������8���9����;4871A4F3-8357-4229-A29B-A40DEFCF3D65-34139-0000E0149A668852�������8���9����;978681AD-3906-421D-A009-EF9632EEAFD4-34139-0000DFFC4D2F017B�������8���9����;AEEEE2D6-0935-40B3-80B2-9D5FD83AE151-34139-0000DFF8EFF6C027�������8���9����;1C8CFD11-5BC8-4921-A2C9-BFC435022388-34139-0000DFF5ED5BB5E0�������8���9����;B5E5BCC3-F31B-4396-81FA-126F4627B037-34139-0000DFF29ABF2DAF�������8���9����;D528B246-64CB-48B6-8888-A691D6D873B7-34139-0000DFE82FD68418�������8���9����;DCE88FCA-1ADB-4C55-B4A0-146CFB06E63B-34139-0000DFD44D2BE287�������8���9����;3ABE6755-1173-49C7-87E7-ADB8EE87D090-34139-0000DF64928BD4D5�������8���9����;0B88DA97-EAD9-47D2-B4AB-BACEBD348E6F-34139-0000DF3786A7F25A�������8���9����;DD69E198-0D36-4EB6-9C1B-6DA63FDAC3D3-34139-0000DF24AAA0FBA2�������8���9����;4287CBB1-6C2B-437F-A970-A3C40E157AEA-34139-0000DF0B7C478B03�������8���9����;1FFB0EDF-BEB7-4304-BA21-460EA78D0511-34139-0000DEF3D95AC235�������8���9����;D01D764B-05D3-4F17-8BF7-9904CD516B4C-34139-0000DED378FA8684�������8���9����;B870949D-8C3A-428F-906A-BCB7830D1D24-34139-0000DEB42B147D41�������8���9����;B3C032D4-132E-4F16-A7B7-729D4677FCAD-34139-0000DE9ECE3BBF03�������8���9����;DC77C90A-5C7B-471B-AEA5-1238F7E1FB7E-34139-0000DE575AE40F3C�������8���9����:B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3�������8���9����:2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6�������8���9����:E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825�������8���9����:006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F�������8���9����:942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A�������8���9����:9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265�������8���9����:C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5�������_IMAGE_VISIBLE_RECT_�����{{-61, 0}, {169, 832}}�����_LAYERS_SELECTION_�����8�[56c]streamtyped���@���
NSIndexSet��NSObject��I�����GUIDES_INFO8c	COLORSYNCHHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  ?�.�J��`�<_|}��cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m��LAYERS��$D'�*�..1�5J8�<~@
CMF�I�MPWS�V�[^�b�fh�l+o�ruw�{~|��W��J�Untitled Layer 8d';92352D33-BEFB-4A00-B68D-0F5820D3E342-34139-0000E0B12CF05B8B@�x}�IH[Q�_����`����"�qHU�(�E�Tp@A��b��7.��]H6.*�\W�l�ԅ��(���9�g&_�@O��W�?.	��%wp�Sk�E.9��i.M�:��3&=%)���o>g~�	�u�N��U�x<�z�>X��_�NzJ��?IMI��|�̽Y
n�V�ur���G� ����N��/�sQ�ɑ�5�"�`N8���~��4=6p?�΂QF�Ԗfw�/��2�x�4���]F�ԕ�ꉛ;2�<��dm��]F�4���M0>\��ƺ�q�	�]F�4���K\�)|�$�}���<�#j,��(i���O�v)r��ā��-��(i���f>z�"��^p�a�m��(i�z��:�Gѳ�gx#�2���:o|�|M8$+�"�tQ�!�&�O� ��gxc�2���,���bC8$+�"xc�2������]� 80؋t�^p�x���ˈ�Ɗ���z��c���>tyM�J���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��J~Untitled Layer 7d';B5A88CD4-059B-416C-8D3C-29E0248EFCD8-34139-0000E0AF0B615888@�x}�IH[Q�_����`����"�qHU�(�E�Tp@A��b��7.��]H6.*�\W�l�ԅ��(���9�g&_�@O��W�?.	��%wp�Sk�E.9��i.M�:��3&=%)���o>g~�	�u�N��U�x<�z�>X��_�NzJ��?IMI��|�̽Y
n�V�ur���G� ����N��/�sQ�ɑ�5�"�`N8���~��4=6p?�΂QF�Ԗfw�/��2�x�4���]F�ԕ�ꉛ;2�<��dm��]F�4���M0>\��ƺ�q�	�]F�4���K\�)|�$�}���<�#j,��(i���O�v)r��ā��-��(i���f>z�"��^p�a�m��(i�z��:�Gѳ�gx#�2���:o|�|M8$+�"�tQ�!�&�O� ��gxc�2���,���bC8$+�"xc�2������]� 80؋t�^p�x���ˈ�Ɗ���z��c���>tyM�J���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��JLUntitled Layer 6d';6F8BFC21-2EB3-48E7-B6E0-94AE9AF57B08-34139-0000E0ACB5DFA933@�x}�IH[Q�_����`����"�qHU�(�E�Tp@A��b��7.��]H6.*�\W�l�ԅ��(���9�g&_�@O��W�?.	��%wp�Sk�E.9��i.M�:��3&=%)���o>g~�	�u�N��U�x<�z�>X��_�NzJ��?IMI��|�̽Y
n�V�ur���G� ����N��/�sQ�ɑ�5�"�`N8���~��4=6p?�΂QF�Ԗfw�/��2�x�4���]F�ԕ�ꉛ;2�<��dm��]F�4���M0>\��ƺ�q�	�]F�4���K\�)|�$�}���<�#j,��(i���O�v)r��ā��-��(i���f>z�"��^p�a�m��(i�z��:�Gѳ�gx#�2���:o|�|M8$+�"�tQ�!�&�O� ��gxc�2���,���bC8$+�"xc�2������]� 80؋t�^p�x���ˈ�Ɗ���z��c���>tyM�J���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��Nblue-document-zipperd';94E65854-C0A3-43CE-B5A9-193CA1076463-34139-0000E0A9F5D631B6@�x}�IH[Q�_����`����"�qHU�(�E�Tp@A��b��7.��]H6.*�\W�l�ԅ��(���9�g&_�@O��W�?.	��%wp�Sk�E.9��i.M�:��3&=%)���o>g~�	�u�N��U�x<�z�>X��_�NzJ��?IMI��|�̽Y
n�V�ur���G� ����N��/�sQ�ɑ�5�"�`N8���~��4=6p?�΂QF�Ԗfw�/��2�x�4���]F�ԕ�ꉛ;2�<��dm��]F�4���M0>\��ƺ�q�	�]F�4���K\�)|�$�}���<�#j,��(i���O�v)r��ā��-��(i���f>z�"��^p�a�m��(i�z��:�Gѳ�gx#�2���:o|�|M8$+�"�tQ�!�&�O� ��gxc�2���,���bC8$+�"xc�2������]� 80؋t�^p�x���ˈ�Ɗ���z��c���>tyM�J���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB����blue-document-flashd';B8FDFB16-BEDA-481A-AA0B-EC14C0FC4102-34139-0000E08C1EBDE397@ux��_H�Q�}��97��$�m�e�MM#$	� ����|�z�`eI���L"S��FF�L)��4���-�ι�5׬���?�t�p/?���{�&�U�J^e4���J�l��S��2�Y��>!�0�u��.s#�ξ`�D�CqA��:�������!(� �C��AVЋ���~����"��3ΦKE��r�lj�(�J'�,s"m�8R��P�����|���qE�c~;�\��הA,���)>�o�R�m����택�T���P.��%�y�H�zh]:��t� �I^''lB㏔e6ʕ��
ya��_�&;�w��b�]x���Ok�g�'�K�}ȳ�K���l�l��dM�T���
�^�ȾH(W��{|�s�(1=4�Bg���\�۰#�|sCB���幗���P��i�c�����MR�FbV�\�BGxy'�.ʵMVcN�i�un��)�܄��k䫨?g��c:�+S8Y�6�S�47~fZ���2����.�!0?����#�u�e	���ʼ�hp!/��-:6�gYB�Tk̷0������`YB�To�?��u0��p��"¼��gl]`YB�t�\��P]�?fYBH		�t��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB����blue-document-text-imaged';1877DB60-E816-4460-B972-EDE51DEEE0B4-34139-0000E0861C377A66@Ax��[H�q�w�w]d��$�"��bD�B:CQ��(򢠛.�� ���EG1b�4�Vk�ت�÷���t�y�m�mZ��4��E<<�?��S׬i�l]����JWU���}���.�"�M����|܃L̍tTV�����Ғ*�/S��s�� �aCVL��ww0�x��1~�&����K�	�_��B>B2j_�
s獢�h�:��Xў��'�3|0>��������p�A�6\�'�!���	Q�{D<o��<g	th��+���N��uX� �>�������L9K���;+�憑���T܅��C��1��C�֭셳�:�\}��A�ޥ��[F�+Yy��3�-g	t����[��F�+���|M(u,�Gn:�"�ĮM7�aT\����Ф�P��O���@d�%����,!�N�|vƇ�i��)/2ecAsq/9��"�Ԟ�3x�=�L������l�!(�#��ۢ�g	���=g��l��+���q�A���f��7�܋b�)�w��#g	t���N�A���YB�H��
���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB���
Sapplication-terminald';FBFD89FC-7050-4E67-8997-4DF17F3B4C29-34139-0000E0600B7D2A44@C@x��MkQ��)��FD"�?�&Z�F��8�Ə?�ILS��,�.�Z"�H A$Y��Z��@,
�_N�k�]�����h4�����v�]�1�+u:���r����X,xx|�|>�t:�d2�d<�7�w�~�~ŏ�_>zb��f������������~�^���������5��.����n��j�pyy	�NǺ8���8�C(B0D �������ss[N'^om������8d�l6C��@�VC�ZE�R���P1A@`gy	��#�'�˔$	c��^�C�4
Ȳ�h�]��$"aH1��>x��x��z��F#\\\@��}7�M<���.Ľ=��<r�8�t
��L^�O;��ҝx<�|>����X�}�*�1(�@�p�W�TD:[������!��"�JAE�#>-D��'PΤq�ˢZ,�T-��@�L]o6�O=���樯QL%qH�o)�TęV�9�LY�e��d:w�݈�<ll��5)�7J�XfY]1�_[[����E﻽��Gq�HF�����F���y�@�
CM�׫t~��z��_|�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB����
script-phpd';4B50D76C-C380-4B7F-9C44-F1BC0E7CCA19-34139-0000E029DA4EADC1@@x��]HSa�gۈ�ڇ��VJ�}Bޔ�7Q
�����Q��,&�}*YV]$�.�HE�z��JL+��̌)L�[�8�lkn���/���y����C�^[_��ڴX�r��dyt:M����\�l��>�th��m��x5I�l޴Ɣ�p`�PA�ig���T�ekI���lE�ͦ����V�����Z\�N|{�
��Y&�
��M$˳�B���,��V;�:;����n��ΌS���^I�+���|r:�yڃ]�+�y���	*���RK�.�Q���n�K�o�6�"瞤��VU�io6�u<��lj�{6���wZZ�3�rl:�r�WjՍ��Clߥ��|����'0<Ћp�GMpa��Ӟ�L!o0���=n���؏�C�9�߸���Qh4K=�Z-=�[�	���gI"@���^XH �����gI"@��c�yD"Ar�y�b���,�őL2H�8d2�I/6��"�m4�?y?������e�'�0=5�
���</L�ϐ>
�Jr�dyH[S[��y���\.�B9X�Ze�%{H�G")�*)��X�2�x/�"��9��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��?�Untitled Layer 5d';4871A4F3-8357-4229-A29B-A40DEFCF3D65-34139-0000E0149A668852@�x���K�`���2�i�Ȉ��Swp����?��]
�a�A<��8���? ���N�"/����S[�ۙ�MӴ]M���!������<�O�B⻒����u��!)��Q���ܧ/��B�e{6�;�_�x��l�O��'cT۶`��g�M�߽N��[�H����>�j�?;�,3̒"dp�Z1Npz��Yf�%EH��nլh�N�<����w7L�?�;�{�fI�(�U�Z��B��[H$���3�x�����iWkV��������XEQϹ�3�x����Dn��z��KH&Q.��w�0K��p8������b���V�{��g�c�YR��r���E
�Z��6��(�Y�|��a�!��6�s�J��9���?�V˰�
�u���K�����m�SSϗ�m�#��ď�-��K�(�M�B�5z^��o��D(�@�r���{2����8�*�`���WI�1I��@����+����$�+�����)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��? Untitled Layer 4d';978681AD-3906-421D-A009-EF9632EEAFD4-34139-0000DFFC4D2F017B@�x���K�`���2�i�Ȉ��Swp����?��]
�a�A<��8���? ���N�"/����S[�ۙ�MӴ]M���!������<�O�B⻒����u��!)��Q���ܧ/��B�e{6�;�_�x��l�O��'cT۶`��g�M�߽N��[�H����>�j�?;�,3̒"dp�Z1Npz��Yf�%EH��nլh�N�<����w7L�?�;�{�fI�(�U�Z��B��[H$���3�x�����iWkV��������XEQϹ�3�x����Dn��z��KH&Q.��w�0K��p8������b���V�{��g�c�YR��r���E
�Z��6��(�Y�|��a�!��6�s�J��9���?�V˰�
�u���K�����m�SSϗ�m�#��ď�-��K�(�M�B�5z^��o��D(�@�r���{2����8�*�`���WI�1I��@����+����$�+�����)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��?�Untitled Layer 3d';AEEEE2D6-0935-40B3-80B2-9D5FD83AE151-34139-0000DFF8EFF6C027@�x���K�`���2�i�Ȉ��Swp����?��]
�a�A<��8���? ���N�"/����S[�ۙ�MӴ]M���!������<�O�B⻒����u��!)��Q���ܧ/��B�e{6�;�_�x��l�O��'cT۶`��g�M�߽N��[�H����>�j�?;�,3̒"dp�Z1Npz��Yf�%EH��nլh�N�<����w7L�?�;�{�fI�(�U�Z��B��[H$���3�x�����iWkV��������XEQϹ�3�x����Dn��z��KH&Q.��w�0K��p8������b���V�{��g�c�YR��r���E
�Z��6��(�Y�|��a�!��6�s�J��9���?�V˰�
�u���K�����m�SSϗ�m�#��ď�-��K�(�M�B�5z^��o��D(�@�r���{2����8�*�`���WI�1I��@����+����$�+�����)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��?�Untitled Layer 2d';1C8CFD11-5BC8-4921-A2C9-BFC435022388-34139-0000DFF5ED5BB5E0@�x���K�`���2�i�Ȉ��Swp����?��]
�a�A<��8���? ���N�"/����S[�ۙ�MӴ]M���!������<�O�B⻒����u��!)��Q���ܧ/��B�e{6�;�_�x��l�O��'cT۶`��g�M�߽N��[�H����>�j�?;�,3̒"dp�Z1Npz��Yf�%EH��nլh�N�<����w7L�?�;�{�fI�(�U�Z��B��[H$���3�x�����iWkV��������XEQϹ�3�x����Dn��z��KH&Q.��w�0K��p8������b���V�{��g�c�YR��r���E
�Z��6��(�Y�|��a�!��6�s�J��9���?�V˰�
�u���K�����m�SSϗ�m�#��ď�-��K�(�M�B�5z^��o��D(�@�r���{2����8�*�`���WI�1I��@����+����$�+�����)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��=�Untitled Layerd';B5E5BCC3-F31B-4396-81FA-126F4627B037-34139-0000DFF29ABF2DAF@�x���K�`���2�i�Ȉ��Swp����?��]
�a�A<��8���? ���N�"/����S[�ۙ�MӴ]M���!������<�O�B⻒����u��!)��Q���ܧ/��B�e{6�;�_�x��l�O��'cT۶`��g�M�߽N��[�H����>�j�?;�,3̒"dp�Z1Npz��Yf�%EH��nլh�N�<����w7L�?�;�{�fI�(�U�Z��B��[H$���3�x�����iWkV��������XEQϹ�3�x����Dn��z��KH&Q.��w�0K��p8������b���V�{��g�c�YR��r���E
�Z��6��(�Y�|��a�!��6�s�J��9���?�V˰�
�u���K�����m�SSϗ�m�#��ď�-��K�(�M�B�5z^��o��D(�@�r���{2����8�*�`���WI�1I��@����+����$�+�����)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��:Xscript-coded';D528B246-64CB-48B6-8888-A691D6D873B7-34139-0000DFE82FD68418@�x���K�`���2�i�Ȉ��Swp����?��]
�a�A<��8���? ���N�"/����S[�ۙ�MӴ]M���!������<�O�B⻒����u��!)��Q���ܧ/��B�e{6�;�_�x��l�O��'cT۶`��g�M�߽N��[�H����>�j�?;�,3̒"dp�Z1Npz��Yf�%EH��nլh�N�<����w7L�?�;�{�fI�(�U�Z��B��[H$���3�x�����iWkV��������XEQϹ�3�x����Dn��z��KH&Q.��w�0K��p8������b���V�{��g�c�YR��r���E
�Z��6��(�Y�|��a�!��6�s�J��9���?�V˰�
�u���K�����m�SSϗ�m�#��ď�-��K�(�M�B�5z^��o��D(�@�r���{2����8�*�`���WI�1I��@����+����$�+�����)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��:�script-coded';DCE88FCA-1ADB-4C55-B4A0-146CFB06E63B-34139-0000DFD44D2BE287@�x���K�`���2�i�Ȉ��Swp����?��]
�a�A<��8���? ���N�"/����S[�ۙ�MӴ]M���!������<�O�B⻒����u��!)��Q���ܧ/��B�e{6�;�_�x��l�O��'cT۶`��g�M�߽N��[�H����>�j�?;�,3̒"dp�Z1Npz��Yf�%EH��nլh�N�<����w7L�?�;�{�fI�(�U�Z��B��[H$���3�x�����iWkV��������XEQϹ�3�x����Dn��z��KH&Q.��w�0K��p8������b���V�{��g�c�YR��r���E
�Z��6��(�Y�|��a�!��6�s�J��9���?�V˰�
�u���K�����m�SSϗ�m�#��ď�-��K�(�M�B�5z^��o��D(�@�r���{2����8�*�`���WI�1I��@����+����$�+�����)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��G&globed';3ABE6755-1173-49C7-87E7-ADB8EE87D090-34139-0000DF64928BD4D5@�xm�yH�a�v��GP���XEX X���䅖G���F�������y4[PyfΣ�"���n6�M��iӶ��Nܷ�~��y���|�?~��%�\ea��f�t�9�0rs�#��K��L��`��i��� �^��c}�vR�dN�j2�LvύH���T���)�G��.᮵�����X0(���t���]0��47ec�8�(���J�K����4_ZY��E�O�UA�cvB�]/L3`�ك�ڛ�S���'+NA̞�����T���
��db�u�Z,NI����*,j�1?����~��	�e���F�e���O	uC��g����s
�����m
������t�#:�s�o��jTC�ˁ���� ��}A ��;��0��Yn$�>���Gt&��N�(�1�
O�=�ҬC�e�,��r��@�CMĉ{��9��L?��΄�inM;fl���tO�2��o��xB�������X��H9�H=�3��ְO.��O��E�(�8��皫;����C�\c�te��Gtf��%7%hӠ�������*�Pi>��c�$�"�-�8Xh�`���[�Gtf�
�����!q�v�x_�����T�BSo�t�Ȟ��D���-�Gts6جtM�8�x#8������uW�k�]�
s��HY4:��h��:��<����*�8��"Q�v��
�OT&
��&��\�MM��#�����ލ�\��:���csv���v:�{�'ؒ0�o���-�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB����blue-document-officed';0B88DA97-EAD9-47D2-B4AB-BACEBD348E6F-34139-0000DF3786A7F25A@mx��]HSaǽ�;�.��4�$Ȓ
qF)�����
��Ax J)�)"�‹�$�����C"3�n6�t��>�>�>��=�k!��9p���+�/����*
�w���=��O�O��#��|?߰"&�!ꚁ�6-��
�'?/��g����ΞN(��2"�<����!O�m�����ּh8Yضon	��8�1��c(�b��o[I��1��
�|�����
$�ݡ�X�8�n�zޅ�FZjD��:x/��t�*��;n���}��PM���;�:v�¾�tQ'��0�:�\v��ù����[�О�{��^v΃��ҙ�wH�Q�F	�<�X�}��6�ۆ�TY|/W��{H� U�Pk	Bo
b>�G��n��=�Zd!���5T��#-�DT���$��]��6���5���6\�)�#-�D}jg�:�ˮ~���.�����~�p?it��Q��� ��N�Em�}Hż�+K�D���q�\�cҲh�=�,]�^z���3zþ�t�sP=�PקEF�|�%%����'��]3��%p/)Y�7�3.�3�6U�vEV��
/#r`+�������'+?�Oq/)DN�aCSG�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB����blue-document-pdfd';DD69E198-0D36-4EB6-9C1B-6DA63FDAC3D3-34139-0000DF24AAA0FBA2@�x��[H�a���Ĵ�m I���L�si�R`HF-��3R�/"ꢛ,K�n�PC(*�J2"3�n�\sj꜇y�暦�����{�>��*��9i�
�J�h�����&�p�9��<�CX��m3�5i౶��D�c�.YX&K�L�M�,�R�ҔfH��p��S�`l���;����8R9��@x��V��BXz?d�v�?A��-�}�h~~W�圤ZR9����3!2���?h�;�!4�#D��1cl���Y�2v��ʑ�|�;w!L��QLC\�@���w%����Y�`����RR9�{!Mm���R2�KEftv;�}���~�UGڅ
�Nu�c���'��Н7`l|�����Ĝc�7z����x����˙�[�rv���;NNm���(��!F�Q|B���!���a�}���ۤrB�ϨGQ����R��
V<EPL9Vl�†wނ��wH�l��ʂc+�G�
�?��#(�>���j�ޅa�;�,#Տ٪�?]��,��:O����� \3pM�
��K��$Tn�'�Y��w��5�Y�?
r�j��cɲ����X�?����y�`,�Yx�߱β2���Ql�m`]R�8���(9��OX�" �7�t��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��H_filmd';4287CBB1-6C2B-437F-A970-A3C40E157AEA-34139-0000DF0B7C478B03@�x���nQ�y�7�Kcz��J
"�m��X(�@���A���
J�K���ؒh�I�&��r�r�7zѕ|9�d�3P��7W�]��TU}O��a)�A12S㈘�����!pGt���;�}n���:Y/:��6�x�K��dtg�ΊY|A{?�tG'��fj��'0�9$��"�"����F�1��P-�CZC��so 9��U�]&v:�|�~7�E+�F�ۇ^!�O�<���
�M��;g�0����-����4�hg�hd#�hİQ��Wx@��db��Bg�j�N��b�Bσ���n���B�8��Qҍ��}��{�w��/�ʬ�d�v���lO�N�tG���*�ۢ�$2����0�/c�/a��t�Z��f��C2�L���iN�8�t`�_D�{�g���,�sz';pGtsD�F��8�81�qsự�󊎋V�Ty?"�e2e�ͶG�t�pcJ�Q���]�ү����.梨����������/�zC�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB���
-
music-beam-16d';1FFB0EDF-BEB7-4304-BA21-460EA78D0511-34139-0000DEF3D95AC235@�xc@����e��+��UB9�Y���D��"w����Z����ԯ����@�QW�˪�]�f���Y���`�~nM��ta�E�N;٘Av��J�o@2+�6��?H���k����ߞ�uQ�#�,��	��i�Wa�N�o��i���l�we�屁���X�Af�X��}_�U�O��+������E�x���g�!갿�ԗ~����}u��0N��E��f���6%��q��׽���{�
�?�z���Xl����O���6���|P'��&E���@���OsRԟ����P����ÖZ�S/��L��V��:X_l����ߏ����#�V'��C �ݛ����GZl��ZJ�:p��)�)��/\� ��}���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��6�imaged';D01D764B-05D3-4F17-8BF7-9904CD516B4C-34139-0000DED378FA8684@�x��]H�q��k�n]TTd�4{��^n��4�@2�
�\�A��)D��b�PB�R,j���AITk�ʢ����ε���ϫ.�s���7/��)3��&–��m̲�--ɳ뺆ty3ҕr��mH�*��Z�lE�X�o�G��P����"��%�y5MF�:�{�7.�P;��F��jCy܌��=�-Aa���֪j�����{P�OQ��F����9`�����D}<�0��έ��4��Ԟ��_����ݏ/F����(��7�q��	�v��%�%��EXlk�۰�λ-<{���p���;҉O�3���	P�#��ŎߙqvZ�a�ȧ��8����p9��n�M��F��#����<�G#l��G3�IZ����m�ֱr�ށ�B/�"�}���%�^w��؃�%�F؂�
��?�{��G�{�w�0x���;N��w�\d2Ԇ�a��͝{Rʦ����W��dʩ�?oι��dʩ�څ4�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��~�blue-document-textd';B870949D-8C3A-428F-906A-BCB7830D1D24-34139-0000DEB42B147D41@.x��]HSa�w�w]d~$�7}��#�XHBD]X^t�M�D�MA]E��02�4��v��y�N�ù��͹��6�ٴ������2��������y��Z,{�����*7Ԙ�ѱ�՗W�3�(�}X��#Q���
~�{�*+j�^��}�W��$2���A���^��=Pz�6�m�XQG����׊� 2�ѿ�|~ǨK��g�jݿ�����ߊ�}O᱿���k{p�{	t������� ��G�c+�<{	t��%����3r�?>���+������Ag��,-~G|JB,8T�Cu� �|�υ��:�Tw����2���r5����7�i�ϖ��:�\{��dx	ux�Z2�"��w�s*<�7��ٌ�c�zEz���a/!�.i��|z։T�a��ž!7�F6:�ň�v����xt�Õ���.x�N��>L��#z�Am�F+�?(����XJ�?Hx��c�%D����~��\|��My.<[ޏ���K���M
��O���O���52��^�!��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��n
�applicationd';B3C032D4-132E-4F16-A7B7-729D4677FCAD-34139-0000DE9ECE3BBF03@%@x���g�`��ޞ�[.Q�H�_ͮ�_f��e��V�R!D$�f�e�4��S
�HIHE�|�?�������i�ZJ�۽P�'2��r<�6�
~�k�a��r� �><σ7���~�/��VdeY�u]��mX��4af���)t]�d2�h4��iPU���F��\��G���ݜN'TU������,q<�"CV����(��9Wd����e�4��N��x8���"C��n?%I��n���(>�q��v��� �О(��"C�1�o6������^��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB���
blue-documentd';DC77C90A-5C7B-471B-AEA5-1238F7E1FB7E-34139-0000DE575AE40F3C@�x��;H�a��s3h0�.v����T��`HB
"�������%�������$j�,M�L+/�����{):��}�=p��y���Uc�V�Z��TR&�`�M6[Hx@x��L��~�|VHz-�q�e�q=��m��	�;��� �:�����/��d>�q>�P��\܀
à�z!uB�{�g�io�{f4�]Tt5�l��>s���ʢ�0�Y����C��� ���0�t�-��O>[��E�a�[��{}�d��A{�,*�ꆕ\�RA��vKYT&zW��_��B��E�a��i=�tC:�����,*S}�
�3;�C��,*��[��2Q�_N�eQa�k�;����1ʢ�0�k9���:h�_��oJ{���}��|@YTFՊMð��?CYT~ }�K1T�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��u
Layer 1d':B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3@1x��Qn�PE�K��}�՘��ƿb���K�w�C�+P[%�6������'�<���1�}3��2
UO�P�:���ߧ^��p�I��yT�?�/�g���j����A�"I��G���Q�.qI�������,K��4G�{7Ԙ�s�rK��0Q�t�R�q���՘���s���3Qv�0�ƌs>�WyV���I��!��1�6�u���U%��1��_���3��(v��3��,�V~�������3xp<�ph}��1���k��z�|S��lM���W�Fu{���y�TU���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��{3dird':2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6@;�x��]H�a�
Zf�
�dwAQ�mt�PT�E7%��"!�i.���u�:0�l�}X�ln*L�,���hQ79�g{�ٴ�w�Ţ�^�q����y��:al��]�`S��Z��j���~��s���vl�-�"��C�fl�O[��Ej�1��M��/:


K�de�*K�d�{e\Y��ݻv�">Ü�NlNt�n|�x��t>�?Aȥ����aO{:�ԤV\��v�㠀1�F(�Բ�S&$��ĈD����W�g�T{�<��L~�[��z�E���		��7���:H$�k��e�:ݷ���Bvel#�ɧ�4b�#d�L��W�w�ƌX25��])��zću���ü�P���h��ozn��61�mClHM4DK4`^�\���j�������6�(
���yq@E���s���\���l٪�2W��{�����Z�����l�
�:��Z�%�}sB�o�_�
p�v�K���3�"�c���9������S�<�MFP���&v��A������5՞K��ݿ��sם>�̱Ѫ��+���f��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��mf
dir-openedd':E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825@&x��]HSa��cW]�����F��	Z�-*hj7}@�lE])��4�؜l�ڪ55��͕-��6g��ZQb$*km;�g�#�ӻ�E%=�㼼�8��T���"{j��
�*{�����TF��><�Ә�c�/���n$�LU��Y"(�W��eޛ�-�)��Z�v��u$�ު�/��a�ӊ�S�D�)W��N�n��8sc]�Mؽ�w����Y䉄K����[&hE�GZ�-0i�70����ݫCl�����
볊vn+�4�㟌RLu� ��o`�����{l���v�k	���X�I>;�t��RlB#�G�e�FuH
���.Jk�E�u_ü��g��ם�h��I|!��"o��4�vE���J�l���NG1O���v4�~����C�=�c��(_�(�y����+G�~ò�O1��&�m9Nrjʡ���)1�Q���"�溿�J�{�1c����H�-<n��L�ž:�����N����GK��I�m���ڊ��H��*��\I�p����}UF��d��ڶ�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB���
^file_extension_mpegd':006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F@8x��MOQ���@�?���Y#cܘY���J[m���UAB��ݸ35�%�R�$��F&��4%��i
ƥ}9g0��҅Orr�����L�f��v�v�����>mZѕAvX�K@^�C^g��>��z����S��
�^�d����Y$�	������X#m;��n��߬��8�6z/\�"�z����]X�K�;��qh�3�iH��+��M���p�a�m�وlċ�@�z�H�+Q/�>�ip>���Z�X���'iS�&��#�Ȇ�'v,
��r�����49��ψ��d�N٤P( �D�
y0y��O�tq�Jg��o.U#��s��"����^�y�݋���[��"��I(��/�tg2�Ol��1tӁ}`~IB�\�?�i(�
���U�_ۣz�SL�煇G񮳆, �c�ۈ�[��yfx�=�)�!���-t�{d���l�:s��=�)�����H
d����c�b�����߈��D|4���>{�SL��HM��d:Wj��۔��Ǿn+��(����mR�
�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��K
�file_extension_exed':942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A@�x��Kh�A�5��&�;����n�u���nܨm@�֤��u�*4��EC��[��E4ŶI#���.*�Ֆ�9�L)1�\�����\l]p;�
y�+���Q�7�4@Y|f���3����3.P4�y�:�<�סsPz�7�ί�fL&�lg'�S�y⌬��R:H���	{L׌�	��0�� աӸpls�1���2r=-,/�W���4ae"�l��.I&�=|`̢y�G��|O3r�7"ـL�z����M,���G�˅�yW�,�/���Vy�[ֳ0���M������rQ����fc
W[�'�1����W�����v�.��e�f��<��Y4/�����nZ|J��(���Y�˓ϘE�׷�(��w��;��ækڗ'�1���h7*�#��}y���e�����8�����w�˓Ϙe�k+jca̿lg�Ü������ڗ'�1K����[�Y��;k���%���S"��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��R�applicationd':9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265@
�x���J�`F�i�.E/��tv�"��R.A�n�$iuo@�T�djli���=u��9p���9!ͽ����V�%��~��7{>�S�<�=mh��+�|�Q�dM��us�mc[�NkI��A�喒�m%�;�ec[�NsAe�
�vI�(R�5D3e�h�����K�b-B:L���d�a��eʲ��l�6���%�D�x�m���[*��K�@6*v����Z�����G^�5�mKCA��,gP�o
���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��#���Layer 0d':C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5@"x�ox�}XU����X���Kl�-��\�1�������^� �hb��{C�"*T���H��׻���!`��=߽7��Y̞�w�̞3�2{�8r�H���q��ْ6z'%��?�={vE*�@�_���̜9�(��W���	�=UC�,,�'.eXRbi���?��!�j(q���DEE�J׎���R��ܧ ,4�a��CC����X���r���q��N/u��� ..V
�c�����CH{)�C��S�z�j�89����HJL������M+@�)�C�Dڦ���LKK�S�))�HH��U�4�H]��.��HW����
W898"%9�V�륞��l��ٙdr����dee�m�=ezH\����U�Vᄛ��L].V�=wvrBFF�
�����g��a���L�<4������n'N��ŕ)�4W����L�;o��L�%K���4�B{{]Xe쉽b��d�����j�q�����p]��˪�p.�f�!���\q]ݗ���8��<ω%�Ȕ(v$��2(W\W}�8��h������+8�M^ҏ�e�c��Nʩ����@�s�z�[��5��_p�w{�PC�\\�����ԛj�����:�;@�/�f�VԶۉ�;���w���_i�R��P�]�ߣ��v��Xtr3[oDK��j(q��e�B�K�B������5����]�FG�g�3O��Q�R�h?��#�O�b�٭��g9>>�M�`�Y��y��C :�_���%	ؐ�@�T���*M���b����\���\݇�W`i|�VD�N��P�/v�Q���[��C�
�|r��]OoBwO](q�;��(W\M�c��o.\�Ƈ�0)!)�b'�l�n��-DG9�����\1��9W�)g�缲��I;�߻�[��'�Wޖ�ɿ���/�V6�{�-�gt	>������a�r�t��j��܏���ۍ��f�ί�Z��K��Roa�
As��e�L/$��A��<9���ɧY�8�`����/�m�ޛz��p_�	N���{�y��j�78��3M;�N�^�	VK�b���oW�7����0Ӵ���z4���I��%��'�e�4 �J>�B�"_��GdE�(�Nj�Ba�/�ϓ_�|�z��d[.���bl�u����zk~��� �k�J��4f���X���c���oC�LJ��ޞUʵ�1K�\K�R�P�%�Y*8Vr�ͻ�Ժ.*��v���mi+eJ�B��4f��R�T˥�s�sL�J���0K�%�`�,[%���O� [���Z�TH�V,ӎe�:o�o)Kʔ��r-it���h�|���-�'6b˨$}�<d(~`��?�~C��ǁ�ᧁ<h0����Øv�7���tN����˔�M��o.^����#�
��Ч�p��F�:�9^k�n�Z��a;���#�������3`8z!�}6�ίF��
d8����OCis	bK�F��v��R�:Y'g#�u:�\g ݞ�a�?�ڈ-%�4){�`ں
�/��\������^8d�j#��`�Q9|8��F��m����oz�8
���Gc谑i4bK�ƍ��^1h�8`_�X7����l�g%ל0h��xAl)1���c0��ζi�d���|��9�?��ԏ��#!��`⸱8w��Qo�Ӱ�t�?hm�{Al)1��	�1v�X9�}7��Yj�'J�ۍ��c訉���Rb�)'�~/�3��ߟeG��dk�o���LRmĖL�<	S'M��I�1n�4�?���8f�45M��Fl)1�w�}{~洩�ѣ����B��e<?����da�<��wx�wx�w���w��:}XH���Q�_XYZ��r���!�����pDFF�)���D����@}4�e���H��Ga�����=�	�p.X/��y�Ԥ8�{�����I����.����1�LK�21�ή��}�n�-P����gjj�������6�R�)��ca*�s$��4�R�>55U���d�!6>����g��(`Z�N��p�s���(Z�di����td�9���]���\"FP?<0
х#�����4����ONN�J >���b�#���j8�Ǘj(���v=Aن_}#s'?Z���.7���ȇ$�ou��{IxW�㎺.cJ�aoo�S��hjv_���Wkn�d�x����/�YȚH�F�S�ÿ�c�M��L�դ\V�6$�\W~�C��EҴ@��u�z�?U.�J�������8��L�#ɜ�	D><��?T����v
"�Dd�iD�Q����FNv*�t�0\�j��g��E^$���<S��v�Z��������c�� .�
�R��A�1��I��	�אv����ϴ���z
Ğ2=$.H��K�+�L�P){�� 9&��@I� Ğ2=$.HO#�Ɉ(�a�*\p�w�z�ᯔt�Ğ2=\Vԁ@l��ɸ��L�|��S���I]���N�+��a>J��Ğ2=�d���S�����I��+�0J�؉�b����b�/�~���ĬYo�~��:�?{��Ŋ���ܧ@֋�n�(q����`��E�b2n1�{)���/�^�u�F��ZJp���}���1ʕ.[����c,���_m\P�J~�}�JU
篦�5c~ʙ���TL:r�?Ѝ���7A�R��R�B�˺1/������߷o��	I���p��e+�hѢ�nC��{�(�=2�M���7�z��>hh޴�V�L�^/kG�r�<��|��rua�!̚�j?D�R����QB aJjm�Y���y�rmG�C����k�G֎��</��#���K� �e��Ҋi:l�GZ��3Կ���MY(s� (��0u�cp(�Ї0�)4|���~�M��܋=�S��0��&�:C�HGe�,L�&�6��Q�L��GN��4&��R���!f������..+�k��{EE�^�a����ngv�h��{=ά��!��m�Z�&�e\B���x��/Xb�|WV����-��a�!�}���p�|��`w���\^��fPB����)���ÿ��jR��)��r'c.s�{��B�hG�󙍉�����|zi�����!S�+���vt@��돍�7�/��&�F�({4}�%�l�S���P�vb�EW̦�r�aq��S������JGn�6���q���%l7~�8�G� q_#,v닒ז�u�+n�U�zi*��x�� �y*&��D�Qj�B	�
%�n�uF�ƈ�^�m��j�=\\_�'� �&d�X��k�$�A�>H���0�g*,Z��� dgԿ2^�j��3�LzD�B��H??	)�#�$�C����2X?��D���x��Y��b8����w^V-cÕ)8qa�z"��h�D[�zCǀ�<S�q�� tG<�\�ay�ʕ�����1"m�B��N���0��z˘�߇�'B��0��`,q�^,��޷�������Zx|�9ߙ��s�6;�
���"��5��~���ߡ��0�޸`VK�^�TѪA�i�qo}<;�O�7��}��G
��:��������ᷲ2>�=eyQV�pg���VwwV���+!p[Yl+��}��]���,���fzߊ�v�jg����skk���pbY��ٽ�[K>)v���W+Rl5J\��!�S��W��~~�jZ;�~)���GFF"2*
���d"�LJ�b!�~)���A�\�����l$��)��KLFL��LYF�<�q{��<pp�@�-'�\P���;�}�Ǹ��)�OHD|b��㩦���@�{��w���8��!��w��}�4�Ҳy.7#��,�YbYS��Nn�7�#��pY�A���1�:�_Cm�o�i�v�uyla;5ػ�����5��-��b,���UmX2x!Z�cf����N8���p�@��	.k�����0��̙e���@8O+G������J�Ղ���C���/4r�_ACqf�Ljy~�<�x��_�0�>V+�S;g7����*������xvd�V��%����	�	�h�W88�J�H�V��s�c��_��ׯU�Z�������쵹��v066>KY^��O�ߡ��~�ŝ_�{o/xm��K��Ÿ�����p3)w�ʨV��A_��T�,��%?�W#�b���գ�|�����.���<��2[O����?�p��o���ᳯs92��������枾�iQx����?���+Y\���bs9�R���IJ������?+~�KB������uT�g$� =1I:ʵ܇������9Qb���ϋ|t
�i�H�DVr �����e�{�#:��%��m����>CF|뺃��n�J�[��UY�Z>���M��J>�:�
�Gw����Y�N^�Թ�6H�5��4�4n�D�o�-�G9d}P��
�v�����.��ܤ+�U�{�〃�@떷�2N���e9����OP��}���@��w��]X�k"Ѹ�5�u��/��ĉ���5k��$s��X$�;�p��ƚ�Jbd��q�k������M�U���=c?b	�Q�a F��]�^��O��N5u�>P�ƭڵ�.�oS�B��2�V��	�2\����F�?
�t�Ѥy�Q��IA�f�0s��NK
J�r��m{�[�h�m�]�-�&;����`˖��]]����)64-��:<�3f��O�@�?�3�/��)C�		������2$_ k��ܼyC-C(��2=$.�=������{�� �k��Q ���!q��;�����~zcN���U^������)����_����Y�C��}A�S��e�A�k����߹�������@�ž ���z


�b����c�S��̙�$e�����jڛrR��'9�*:��?�������Nϟ���m(�C�S ϛ�4J\��g��y���Ȟ�@�7���(�ί�����I˺_=M��*T�s�3�̡������3&:�V�R374��a�R�W/�^���Z��������1��h[M/�
c��eɎ��_жG��x�uE)���Ca��z�P>�]~H@ӎ���2����CALOOen�<�P�q8�w�A�f!(��O��w��y����yn�D�o�ѬC:�':��B����?h�8S�ll9�buBP�u��v�2w^��3�i�Zmb0aq���_�7�B搴C�E���
Ν�X+������ƥ�1o�L��)�򦬫���~���o�?`o��#9%�W�1�x����Wб�=�Wt����`��XH��oi�xJ����-e�^�ަ@��*�Yy������ͣiU�^|T~&$�r��7�X��HW��k�z�S���J��x���*Ebp�8{�X�z�Sy)g�rr�p�'U�h��&&����Wi�3x�|���c�X��Á���^,�K%�J�h^=�+_{��5���Y�ޕ�
JZ׉a���9��m��B��{����1��������F�O�Q��^�$���<���H�md����i�P�C��)���Ͱ��?��wn'�1���������.]�e˖�S�o�R�����ߋuӛ��B��>�@ΏD�D�툌��[�J�'�#*2\=�!�{7���j?��A��'~/.&
��q�ߺN;���r��6��+a��½�/�O�YI�h���y��WPFh�;`��zR�BӋ�KL���O@���aƝ�):�	�.�ǃ���V�
M/�.%��.+	���� ��BU�~��rƾy�zhz�yi�y�IU�7�������~';�zhz�{�i�y9�x�>��������~(��s��U�FJUhz��ܬL��d�|8�\����nS�Ǜ�_����r��&��e����)����R�;��ؽ�y��܋F�NN�p�T�$<�q�ϫs�F
�c!i�ğ��)�*��5˵�k���?�}j���,�+��Z��?�ё���@�<�j�N��g!�d��!cU��?a4�5��ZUTj싪]�ְ44Iǩ��g�^������lonV*6��;�����{�e����4�~0'U;�ō��f�qI���=9�;}'�+��(�F��M4��?���I@��!8���x\�3�L_ބ@�/B6+�Ӻ�ޤ��i����Pg1��g^�wj��sB*�Y�A��	|)�=�V�5��?�id6�15eM�����C殰���'�?����I�r1
����Q:���z��K��[�����1.�'�O#$�g�R�օfOs`}����m��l���^ł}�}rp��EL�c�n.k�~g�B���g,Qj�x(�S�\��E&�����?~���	���S�KK��׭5�i���UXZY��Q�x~��E�2�y�g$שr%53�9��w?_�>�����ᙑT\�:VC��C��v�����0�,�L����oj�OH���œ��8��:W�75&%%!�.�z���{���[�:�#$G���3���ojL���U�V��آ�~����C�C/،ҥ;L-�׋�Ԙ���z,�o��q���Um�8�"<LZ��L�Y�������333�)���g���i�W^-+1$��,wBIu��Ϝ���b�G���h~��D/s�0X����`?�L��SΜػ��Ѽ7�'��}��C��������Bo�?�%�����z��O(q�����/ez�x�/SSd���������
�Wt4�b�M&�H�d�����^��Ƅ�x�fBYP����0�b�	J��E�u�r4��-�ɉ�\neSWO|��ď��P�6�[�5xr�WX�O��-�)��Ȧ(?Fk�i�x|�W������/E+�G������e�,m�N.��+J���k���V��B~����X���,�y�ʮ�
��vBU�"m��_<$�j�����
��c��+��Go,���̾V�!s�0(�
��l�"��PԴ5��j�b+[c�Uy{�چ�����-\�7L=�N�\:���9��Z�XbU[TX���,mx[�U��P���m�/$$�d�=���oL������֔�!�)'~O}��EbL(S��{�Ͽ�|�u<�p�5(�Cƫ@�RGJBz����c���?Ԛt5'���u&��ь��t�U4�r^���_|l�������2��Y*#�	Y�$c���ٜ��|���Ͼ�	jݢ�?��Oֱ�to|��M�]�9�X��_��'T�}��Zu���o8����5��vK��բ�8�O�ԋ�����O��cX����Pw�5|f|-�ݢ>ޠ~�yŒ�4�2���>
�o3n�f���f�^�5���I�Gg_e���hn����1M_�{�CD�����rIB�!Է�5�����t�kI�MW�2w
B����gG�RB�v����_~�'�:<������̺���#?�^�6�y�o�~�W1y����n�,�oV��HK���o0�B۶m������O>I�w*�>�D�b�`cc#�עq�С�
�VQ��+W�'�����ѣ�^a6�S�|�7ҷ'���Ê)"��&&&�:u��?���J�z%F���[�n�v;�kz�̙+nnn��&�gõbA�~v(��[������]�U�V�����,Xp�y�D�~�ХK�1��ٳ�Lz+ԬY3�}���Xͨ�~(�ϱ(/�6l�����F�[1�"/���(U�FY�v{�[���f!>�;9���V{��%�0����G���[�O/�~s�>�e�[������=�b�hU(Jh�}l���f�e~�E��'P.��*qr%�~ͷѬP|z`vz��S�ʅ���,{��3J
G�+;P�{�M�3hV(jr/�`�.�s����ԧ�d�'���%([��f����I(s�֨[T�7��=`gL�Ks�C_�/1���K���ܖ����W<נ���Ӭp�*�;�s��g��{�����E*^�Ptې\�v�޴z5ZT�_dE�0�f&��Ӹ_<E��4�2��o���[)M*�+���E��	�ʌ;f�	���pw�uws��%�ٯCщ��Yܺq
W�Wp��\��%]��BQ�F͎�\�����T�T��p	�?+r�G���:ҬPԮ�~��a��,��d�8ݒ��-��Ƶz���2�PT�f⯣�{`�:���N3/�y��]���[s4u�.OT�2ڌf��� ̹��;�?���];�}%�~5�ng��^9:�໘84��m>Ygm˪��JV}���'���^�o���=���c�7p
�']�Өn�!�����[�4+�l���~���D�҆�P~\����E��W2Zl��J}���h[�:,�¾G��v�ϭȰ�Uhn��Y�ͷ\}e��.rJ��P�x�*���j�l��8��8�ӬpT�=@��p�R������)q]�Gh��������P����t;T�˩ܢ�Y����L~#�ml���l��
�ip����V)����.R��~-�����5}���@�_�P��O��ZH���S�KT3���3��(����q{�����d,�MB���~-�4����KY���K"Qd| ����.Ro�1��e_�}*m����VQ���B{�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB��MASKSPREVIEWs@_@x�T���M�$Q�k��Q�h�&���K�=�%�D�]#���XP�APD,bG���P@+b�Ы���u�(�������3sf��73ǵfg��D-T���Z�Su���J�S�im�\�
d޿��H���Ը0���t��+XSݬL})�=ZԞ�������{Q>��sGp+�0Ž8� �XW�B��Ģ�g�:��/�����پ��wk�M,:z��;5+)�q!��q�\X+}�ԛ���
���A?kŢ��g������b{�V,:�}wAv�U��	/��kŢcP��f�!��b{�޲V,:�~�:G�i�#�� ����.�I�����)��#���Q���?=!����a�Xt�����HO��o1=�c�Xt���ĉ����b{�;�Z��ԫ����x��s�$ה����ߏ��8�V,:�i��nj����#֊E�P(
��I��j�^=y��e�,��iɘ�N+-��^4��-U�ު)%��{���HpA��R}��w�6b�e�]�z��{�t��eߨZ���˿Y�U�2UK��j�k�[rD�5�;�N����"���OlC���X�e9���s�]�f��Ɋq�ɺ���m�DǺ�
�6"���V�V#�{2�W"���:���D���G�[�4�p���<ߍH����<�!��2���=��:U��%��0��㗔�S��iGW�ȶH\y���w����8����L�H=��ҿP�~�K��3�m�4ٖ!=B7�h��f��~�)����lDKa8$�T�gS��A�������X�_��/�C�ߐ�w��h�Aq�(��gm�"�X��5�
���'�,@��������=?#Ez��h��87)y�|$�H�TI"��B�N4�:�JN�1T��k2~���?!Y�qN�k�O)�[xZGM��2��QKu�W�>kT{�e�'�m�������%un���ol�O�ժTn��R(
�B�P��G��v��{�~�8w��c�-��kٷ�\�\\?�ɀHw�ێ�'�Vd�u�E?�-?|�C�6M�ujѸח-��ҺI�Ο~���%���e�_R
N�!��jd�g�}� �S��}�v�w�k�ה}�I���n�bՈ�a��*��	�Ll8�	�H=#^�$��H;!���Zd��C��=�to�����>���G�/m�J�s�����!5xE@N�3r���r�䟭"�A��(��^�\ڃ[Vbv.L�\n����"�o�[#K�&oj��l5�_�\�5X�}��s/��rYr
���e�8�H�I�X�&������0p�8����2�Ar�a��3�r��a\f9)��ę%c6Lж%��[2�&��Q�{~�m��E��b/q����{n�q{�T$I.H�>�z Jp��{N��t\�X5�
�߄�y����"q���SyIn��0�C��b����M��~h��S�1�?9R�����wXǦ��U�P(
�B�(S�L��5k�W��ŋ��"�gg�+W� :&���GHH���??���zX�YD��i�z�ԩc���
///xzz����8p�<<<���WWW�ܹ...ضm�l����C�ϱ��_�޺u������_H��+�.77���/$z�U�ք��,������W�ᤴ�4$''��衷F�S^H��[�Z�iIII�s���z�T�2����{!�C����\���ݻ/$z�}���ǔ,Y�"z�;�P(
�B�?���Q8�#��zo�E�=�u�υ�b�9��q;�$⣎#.�n^��8�g�XtpN�?����?���#���;�̾u�5e�XtpN�ܽrw.���8��Fl��v_X+��ya��8wfg�8B
�����e�XtpN�*<�����9�?��q1��"��#�Amagvi��w��b�9�'�
BB\��q�]p�����8�!{q=��B��n��c����_�P(
�B����o�hެ���"z�}\����K�q�w,
!gMW�톜�=���/r�}��̓��},r],�'?���n��ަ��G��u��\��R�yg6"��B�y���ـ<��a?
��ѝHy��z?jRwb~~6N�_&�f/�O ��qYǣ�e���"?�����ѽh<�z�mҸ����t���oύ�?��.��� �6
�n��pɠ��?�=%''m5A��c���غ�'}\{�8�‘~��Oof2��
z�}�Q�iY�ѿǻ��=��>Ӿk�ySͱx~o�Y���x���#������x}��ۨa���޲6O����n�^�G���? R~�-N~�+)x+2c�"�=8z�mРڬ�{:�ۂ�8�dNٍC��T\��!7,ƃc��q���A�u�T�)';i�w^H��kfVjL�*e��+�
�B�P(�����e�������_�WJ���ީ���|~n�`�$��"��y��ۥ�`^c��W��w8���O�b�94�����̎��|�eS�5�]+��O%ssW�n�Q�~��
�3�f~Q�K�g��%��[�ƴ���kI�������F���������4#˹�S�ɲm]����ݟ�ԣ�O��M�JN��eP�΁�9nC��:0_6?���:�����>�?�~ӑq|"ί�+��I��.:��iMSo9�E�SDٙcX��d�3��3P��Ҹ�[��O�� �g�Je����:��.�ޖ>����P�=��i����=Y�?��|~�X�=	�vms/\����~����{~Oұ�?�T3uŀZ����
�B�P(�Ƌ���<�XK����f���9�u�eW���,
�a���+�b��>��Z�0��H{C���~N�R��n�����\5���"�RFVH�}���k����Oz�n]�͋�n\f�����Q�
��"��l��v?�k�x�΃��
��g�C`�]��XKY=s�L�<�go��ʸ���:�t݁c���o�t�5��#3kM�hM���s]#�k9�\�ጣ5�o��	��8l7�7ͧ�������ӧO�/�c͛7��j׮}Q>�<ENJj׋�l*�O��B��[�連����+p�D�/���)QXK��6m{���a����c��?(t�,���ڋ�8�?��6�ÅMs��JS��❍��?�5"�"q��e������s�~@����f	������w^�՚��K��.��3"�f���i�\?�\��M�;-?�v� �a"�RF�M�<��,�^��
W�X�\m�R�탛p��Y�������#6"��{�)�ңP(
�B�E�)�?pl+��q���^[t=8�kŢ�sB8$��	��\�oܸ�q��Z�����َK�����f�>�!��Z횲V,:8'�s��8ׁ�%x=8�k2�r�^�V,:8'��Z����zo(Z��j=8��e�XtpN�:4�2_��a��T������z����SlQ�:��}�7��%H~s�靈8��G�6o�v������G<d��1\t�Ո��ۍ��C�>wa����B�P(
��Q����*��E�O�D���I*7�E�}P��~��=�?+C��j�pTk��m.�Z�HTmqU�����מݙ�2������P�E�F�(����!L�p��ه�9��i����qs �~z��G "2�~�F��O�B��0�`w���GGP��i9�/���1�d@��g��n(��Y�CxMM3D���=������ض�6��w?3慠l]��}1���ߡ���\�m������O=`��3�5t�[��r���i�(�p�ԉm+TC'��vܲ
6��wl�b��d�(Y�����q֊�~��o�[)Z�I��b��W2�ݍ=�,C���*C(
�B�P�����+!��˹��L��缋ڳ2������g�+�������c��U�e��s`�<�]�g�+H�	�r�Q���J�w���LE�I�ev:�i&�-����z�s1�V�{62M\��]��_ ��v�/pvF/m�s��4X	�_юKo�E�q��]��$�9_\<Z;��55�A�q�Nb��#�V�|*�הف=x_L������!I�{"	`��l,��١6Ȕ����{k�?���K�	ZB/�5Y)w��O�b%4^��8�Ko���ف=��?:�~^�
��L@��O�r��#[暧'��wJ��X+�B�P(����^y��g��iv�����Ξ��ys����R�T��{��U�7��upQ��]��ў��e�ܚpĺk(����T-�j�e��y:M��t��R."9�I睑u?9򻜲��⑥wX�E���K�~�T�o���g� ��i<R�1��u/y��(H�����8��.��{���K���,���I��&R�]q��r�<.<���"搵lwã�G�wk�4��O�%�5}k��5��/:����<
1���u�~�f"t�%��EV��x�Wݧ�Ě�����e=o쟛��W�#lSO�C��!x]o�I��EH96A�z����8�nP.}b/1��[�G�:��:~��d�EG���̻脳�d}�9.���8�f6G�m�Y�u}b/1��7��Y�-�������u��廸��ðsMk�\����42�>���ި�]S[΋/t�[�%�V�#ܮ��s��^��;�}/�����=
�D�ʯu]ܧ��h�d��
=k���p�q0b7D�&�K̑��U�^�O�%^�W�R#Z�u><�eB��no�;;���I��6E[�sԚo�w�
~+{%��>�kTz��z��+{��j���:��B��H>����c�ix��.U�X/6��|���/*:;�� �⚁�{{��ZP�%?;�m������d�Z��Z����ׯ�]ٿz �����/e
�B�P(�_�v����w�Z<��x�Tu�iT�^������}�(�Xݺu#��N-�V��b�h�a�����v�P�Qnn&N��\�2��1�7zۂ�S���+Ŋ5�����W�HM���KŊ5���zu+Z�޹S�X�Z��U������1�X���b�Q����ܿ��@,Z�׮Fh�:�qkX+�+����H��(̙3�OCR�-M\�6�c
kŢ�B��-��ػ�U���f����t�6�c
kŢ�|�W�����]��ѣq��Q��I���m��֊EGٲ�|������T���`��R]׹��X�Z��([��)))	���x�����C�[�dd���kLCvv�����<E,�y�՗>07o�z.�$�B}��1a�q����D��$�w�_�?M��(W��b�o��
k�^��\ ?�W��̛;�T�R��,V�W^y���٫��W�J��Ml
�B�P(�����3�3��un�>ְV,:�)�%[0c0k0s��۸�5��f
�[ff
ff����}�a�Xt0S0[0c0k0s0{P\�6�c
kŢ��B��B�P(�*���Œ¬����Bq�۸�5��f�l�&�(�*�,��6�c
kŢ������Y���م�:�qkX+�$�&�(�*�,�.׹��X�Z��`&Q�E�P(
���P�A�ffff����}�a�Xt0dK6`F`V`f0�qkX+�����
��׹��X�Z��`&`6`F`V`f`v���m��֊E3��
�B�P(�YT�P���Y���ك�:�qkX+�ْ-�1�5�9L�m��֊E3�-3�3��un�>ְV,:�)�-�1�5�9�=(�s����b�L��B�P(
�?eʔ�W�f�A��ճx�S����q��D�� 22a��		A@@������@�9Y8���`8m�Ao�:u,������OOO>|��������ꊝ;w���۶m���-ppp���=d�˸V�Z�G�����+t��
]�vE�.]йsgt��	�۷G�-Ѷuk|Ѷ->�%�u��O_pp0lll0u�TL�4	���3fF��>�{�˿����Wo�=����&=���c2~r���ְ����Q�0t�P�������=0�Oo��
z��U�����ɓ����r����l�2���=��ѷ{w����ØAa9l��Z��5�d.5����ȑ#�qp<<'���о}0J�9n�L9?����h�ݢF�S���K6D߾}�S��G��z�ˆo�c��A�n�0L�v�����,0T�B�jզu�����Go�N<�W2ޡ���ہ0^�9Q�9e�n13�K
���W�ReF���ϥ��b�`|?b8&�c�hS�fffsy���m׮����G?�1�W/�s"�f���cTo�_�dɩ����Y��WD��A�P(
����C���;���;�����m��֊E�id˻
�����0�qkX+|��{�w|�w|�Aq�۸�5����ໍ�L���8��
�B�P(�����ժ���M���y82o:�~���v��#�셹è'�G��5��O���o�������<�'j�è'�U߯�/8;"j�N��}�n���������[�̸�����-]�|'�.�ԓ�c�y���M�錳kmuKnw�3M�F=�?�V,��n��?ׂ̈́Y��ώ�"���A�zZ����m��,j����v��Ü�wR���Q��?�7�kX+���ʼn5��f
�?
�B�P(���S�a�`�`�(N�a�Xt0S0[0c'ְV,:�)�-�1�kX+���ʼn5��f
ff���;�����m��֊E3��q�]�y0oP\�6�c
k��"[��q�]������X�Z��`���;���;�
����}�a�Xt0S0[0c�]�y���un�>ְV,:�)T�P(
�B���ѲA��>�5ΨV
��ςK~�����=���ږ��ȼ	�w#�q�Fp^�)7Cq��+XSݬL})�=ZԞ�������y9�sn�F�d��jT(�Xt�lYgrV�e<������ի�?���l_�X�5�&�Zם������>�w¼�υ�b�ѷM�Y��^�A?ϝ�{Q>�{��Z����;s�şr;T�A/�����qa`�Xtl����H������e^c���`�Xtj���l�5�޽���������_4�������s�0��|
֊E��
��\Gڃ�b{�;�Z��թ�j����F��\�=2�;�Z�������7��(��bz�;�Z��׭��I�Z��x.����V,:&�j~(?=�A�\�=x_xo���K�kŢ���k�k��^zi)�O��bQ(
�B��[Q�C�>�>+{�z{�޲V,:�)T�P�C�P(
��yQ�C�>�>+{�z{�޲V,:�)T�P�C�P(
��?��/*��9��Y�؃��؃���b�L���/
�B�P(��x2C<M/�!����]>3S��ejX.���YT�4H�*��rs_T����z�ڳ��2k��G��Ѩ��2���D��Q�����Q��~�ٝ�(�Q��)��9�2�WԹ_����*6=
�ݵgw��8x.�����é��.�>r\9�W��$*49�vk����f��A�f�aHy��c��ڒ��>tC�F�ڳ����i����^���<�|9f��[��v�m�=�{�f������x�V�x�e}v��®=q(��o��N{v7��5��n�:Q�m�j�$rԎ[��f������n��d�(Y�����q֊�~��o�[)Z�I��gwc���O>�{�H�xZ������"B��2ij�Z�(���%����lib/img/src/icons-small.pxm000064400000155566147361034410011651 0ustar00PXMT_DOC�HEADERIN��$(����METADATA&��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_IMAGE_ZOOM_�����NSNumber��NSValue��*��f������_MASKS_VISIBLE_RECT_�����<{{6.95324e-310, 6.95324e-310}, {8.39912e-323, 2.22546e-314}}�����_DOCUMENT_SLICES_�����NSMutableArray��NSArray�������_PX_VERSION_����� 1.6.5�����_DOCUMENT_WINDOW_RECT_�����{{712, 4}, {200, 874}}�����_PRINT_INFO_�����
NSMutableData��NSData���}�[381c]streamtyped���@���NSPrintInfo��NSObject�����NSMutableDictionary��NSDictionary��i����NSString��+NSHorizontallyCentered�����NSNumber��NSValue��*��c������
NSRightMargin�������f�H�����NSLeftMargin�������H�����NSHorizonalPagination�������������NSVerticalPagination������������NSVerticallyCentered�������NSTopMargin�������Z�����NSBottomMargin�������Z��������_LAYERS_VISIBLE_RECT_�����{{0, 348}, {239, 240}}�����_DOCUMENT_SLICES_INFO_���������PXSlicesPreviewEnabledKey�������c������PXSlicesVisibleKey�������������__OLD_METADATA_FOR_SPOTLIGHT__���������	colorMode�������������layersNames���������Layer 1�����dir�����
dir-opened�����file_extension_m4b�����file_extension_jpeg�����file_extension_htm�����file_extension_zip�����file_extension_hqx�����file_extension_gz�����file_extension_flv�����file_extension_doc�����file_extension_html�����file_extension_bin�����file_extension_bat copy 3�����file_extension_bin�����file_extension_chm�����file_extension_ptb copy 5�����file_extension_ptb copy 4�����file_extension_ptb copy 3�����file_extension_ptb copy 2�����file_extension_ptb copy�����file_extension_ptb�����file_extension_ace�����file_extension_rtf�����file_extension_pdf�����file_extension_mpeg�����file_extension_mp4�����file_extension_txt�����file_extension_exe�����application�����Layer 0������keywords����������
csProfileName�����sRGB IEC61966-2.1�����resolutionType�������
resolution�������d����R@�����
canvasSize�����
{16, 1280}������PXRulersMetadataKey�������������PXGuidesArrayKey�������������PXGuidePositionKey�������c�����PXGuideOrientationKey��������������PXRulersVisibleKey������������_MASKS_SELECTION_�����I�[73c]streamtyped���@���NSMutableIndexSet��
NSIndexSet��NSObject��I������_ICC_PROFILE_NAME_��ܒ���_ORIGINAL_EXIF_���������*kCGImageDestinationLossyCompressionQuality������������Depth������������{TIFF}���������ResolutionUnit�������Software�����Pixelmator  1.6.5�����Compression�������DateTime�����NSMutableString��2011-06-29 00:42:06 +0400�����XResolution����������B�����Orientation�������YResolution����������B������PixelHeight����������������{Exif}���������PixelXDimension������������PixelYDimension�������������
ColorSpace��������{JFIF}���������YDensity����������B�����
IsProgressive�������XDensity����������B�����DensityUnit��������{IPTC}���������ProgramVersion�����Pixelmator  1.6.5�����ImageOrientation�������Keywords��چ����ProfileName��ܒ���DPIWidth����������B�����{PNG}���������XPixelsPerMeter�������������YPixelsPerMeter��������������	DPIHeight����������B�����
ColorModel�����RGB�����HasAlpha�������
PixelWidth�������������_DOCUMENT_LAST_SLICE_INFO_���������PXSliceMatteColorKey�����NSColor���ffff�����transparent�������PXSliceFormatKey�����PXSliceFormatPNG24������_LAYERGROUPS_EXPANSION_STATES_�������������_STATE_�������_ID_�����:B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3�������6���7����:2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6�������6���7����:E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825�������6���7����:2B6314C0-94D3-4C2D-9EB8-2547D45A688F-7317-000022DE03747F72�������6���7����:86178D35-500B-4623-A85A-DFB323809A81-7317-000022DE0373DCEE�������6���7����:B6072A85-4E32-4313-9BFE-CA12E71CDDE9-7317-000022DE037336E4�������6���7����:141ACB82-8C5E-4C2A-B4DC-B8D953D85190-7317-000022DE03725503�������6���7����:0C889008-D40C-41E0-9823-0527E71BC619-7317-000022DE03719715�������6���7����:93651A65-B373-4406-A096-8E0C60F71A91-7317-000022DE0370F224�������6���7����:7D161273-35F6-481F-BD4E-5F76C12E4EF0-7317-000022DE03703387�������6���7����:DF7B7D00-9D58-40FF-AB9B-C0B4E116D0BE-7317-000022DE036F8E95�������6���7����:E4915B50-BCCF-4E3A-A2A4-88DDFC85C7C2-7317-000022DE036EAEC3�������6���7����:A2222DE8-C779-4E62-86DF-E7A4A005933A-7317-000022DE036DF68D�������6���7����:DB8A1109-C165-42F8-A602-A93EC4310B9B-7317-000022DE036D5323�������6���7����:B50AC766-400F-4253-9654-13294B38B1A3-7317-000022DE036CAC73�������6���7����:FCA3C5B3-B773-48CA-A969-4C7CC08BE446-7317-000022DE036BC544�������6���7����:45A3A36A-1062-4E1A-9E54-753C7A61F5BE-7317-000022DE036B1DAE�������6���7����:68EE54FD-1991-449B-9898-B1F93AD70339-7317-000022DE036A4C08�������6���7����:0A8227E9-EF9C-4910-83B3-6C6DD3B1E89A-7317-000022DE03699079�������6���7����:7B043E90-924C-45F0-9A91-914255DA508F-7317-000022DE0368EB2E�������6���7����:FF8D7603-C25D-4431-80E6-6C25E00BBE5F-7317-000022DE03682D54�������6���7����:587F6844-CF89-4FFB-9E2C-2412F64E6630-7317-000022DE03678849�������6���7����:B7C4F623-D892-486B-90FB-A99EA25A8EA9-7317-000022DE0366DB1F�������6���7����:7A7AE012-6ED6-4941-ADAA-B810F40DDE18-7317-000022DE03658E24�������6���7����:151FF549-750C-485C-9255-3469B07D2FE6-7317-000022DE0364E54C�������6���7����:006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F�������6���7����:B87DDA57-9B11-452C-87CB-C71D10DCE80E-7317-000022DE036371D3�������6���7����:0675C424-B6A2-4128-A197-5E9EC0E334B4-7317-000022DE0362C35D�������6���7����:942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A�������6���7����:9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265�������6���7����:C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5�������_IMAGE_VISIBLE_RECT_�����{{-61, 0}, {169, 832}}�����_LAYERS_SELECTION_�����8�[56c]streamtyped���@���
NSIndexSet��NSObject��I�����GUIDES_INFO8c	COLORSYNCHHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  ?�.�J��`�<_|}��cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m��LAYERS�^$�'.*�.1�5t9.<�@CC�G^J�N�Q�U\X�\J_�c�g$j�n^q�u�yA|��^���2����t
Layer 1d':B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3@1x��Qn�PE�K��}�՘��ƿb���K�w�C�+P[%�6������'�<���1�}3��2
UO�P�:���ߧ^��p�I��yT�?�/�g���j����A�"I��G���Q�.qI�������,K��4G�{7Ԙ�s�rK��0Q�t�R�q���՘���s���3Qv�0�ƌs>�WyV���I��!��1�6�u���U%��1��_���3��(v��3��,�V~�������3xp<�ph}��1���k��z�|S��lM���W�Fu{���y�TU���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��z3dird':2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6@;�x��]H�a�
Zf�
�dwAQ�mt�PT�E7%��"!�i.���u�:0�l�}X�ln*L�,���hQ79�g{�ٴ�w�Ţ�^�q����y��:al��]�`S��Z��j���~��s���vl�-�"��C�fl�O[��Ej�1��M��/:


K�de�*K�d�{e\Y��ݻv�">Ü�NlNt�n|�x��t>�?Aȥ����aO{:�ԤV\��v�㠀1�F(�Բ�S&$��ĈD����W�g�T{�<��L~�[��z�E���		��7���:H$�k��e�:ݷ���Bvel#�ɧ�4b�#d�L��W�w�ƌX25��])��zću���ü�P���h��ozn��61�mClHM4DK4`^�\���j�������6�(
���yq@E���s���\���l٪�2W��{�����Z�����l�
�:��Z�%�}sB�o�_�
p�v�K���3�"�c���9������S�<�MFP���&v��A������5՞K��ݿ��sם>�̱Ѫ��+���f��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��lf
dir-openedd':E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825@&x��]HSa��cW]�����F��	Z�-*hj7}@�lE])��4�؜l�ڪ55��͕-��6g��ZQb$*km;�g�#�ӻ�E%=�㼼�8��T���"{j��
�*{�����TF��><�Ә�c�/���n$�LU��Y"(�W��eޛ�-�)��Z�v��u$�ު�/��a�ӊ�S�D�)W��N�n��8sc]�Mؽ�w����Y䉄K����[&hE�GZ�-0i�70����ݫCl�����
볊vn+�4�㟌RLu� ��o`�����{l���v�k	���X�I>;�t��RlB#�G�e�FuH
���.Jk�E�u_ü��g��ם�h��I|!��"o��4�vE���J�l���NG1O���v4�~����C�=�c��(_�(�y����+G�~ò�O1��&�m9Nrjʡ���)1�Q���"�溿�J�{�1c����H�-<n��L�ž:�����N����GK��I�m���ڊ��H��*��\I�p����}UF��d��ڶ�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
-file_extension_m4bd':2B6314C0-94D3-4C2D-9EB8-2547D45A688F-7317-000022DE03747F72@jx��[H�a�?��j˔l��:6��M#�� �
"/")�H�A�͡6���"�� �Rt �6��N��!F��p�\92�x���-죋~����|߃>!Z
,��4�!�z�^7���#5��\ԃT:^�sO��=r�҅w�¹}�u����n����!X�ӫ��`���n�C�G�e�~"�Ԥ�����b�|��h��܄�#����d�^t�,�E�,��G\�PW���G��@{-[!��"�n�!5��bF8
��T�"Z��"����!�f����j�z����W3|�ߏ��u�?��OC�v�:���А�dئƇ���~bkrk���yds��#&{�����Y�����_��/YMx߿��2J	dW.ـД�y|6�&�;�x{o�O�,l~sgB]���!:r���8�2�m*L�ު���xus3���X�1Kfёy�7�
/ol�E�U�E�F�N������}	����>���j�W*�Wy�xs��3I6�g�^�O.�*�z�9[H^��/۫0�[��y
��&oezes��t�.Q�1~�̧Z��{J$v&ӽ��L1Q�4�;�oX
�W���r�����_�_
�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_jpegd':86178D35-500B-4623-A85A-DFB323809A81-7317-000022DE0373DCEE@Ix���KTQ�]�6�(�E1�A��*pѦBhhԦ���&(a�1��!j�Ge������91N��8��3���i��{��%.z��{Ϲ�s�sϹ/����A�4�@I���$��e��'�����S�gX��_DaqDU0J<���e_#�/��\�b�o.@��ht�L�j�|�`�"��4~t��
Y�.���y��alrA��%�lv�b��av4��	.��p���l��Wh���TpL}���t��%����
��S"�z��zb������|Zt��Y2��}�Oe�BTBo9�a�k�M�]:�A���2�C1Kf~�������/��|���qle����ԿS�����֯O�U�f[�O��Ȫ�Q�e{Ւ�w���b�Z5fZ��_��S.���S�}�թ1��i�})f)�=��o����lК
-Գ5����gc<��+f)�����$��&)�([
�����Ԣ���d�g�����C����dTN�"N��USd�M`�7}�_1Ki���;԰(�V��>ï�%[��o�\�Gu=��~�Vk������~B�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
'file_extension_htmd':B6072A85-4E32-4313-9BFE-CA12E71CDDE9-7317-000022DE037336E4@hx��]HSa�w�]�3?(�s�m�Q�A�ՍTWQ	7Cj�9E2���VD4������,7�4u)n�����������=Չ����y�����[�u�ڼ�rT���ON��$���m^��]�>L��*0tmeЗ�ݥx
N�lEoe풃ױ�ra��]'7�1s�����$�Z��m��&}z^�Bg3�`/O��*@��9
ぬ���~-9
jjx�
���>ƚv�Rt�Ii>G�Ɓ4�6k/j���Wa��S��~&.#f/G���
V\����#�k���kPb���~}ƭ������`y�=��nƲ�<�#M��)��{>�d��ӗ&��^�|������W�S�16��n)�0�T#c=�
om�]G�W%�.��;�ߔ��}��;>�����Iq�Ԙ}\���,,MQ�/��߸��;�����g9�'M����`�%�x��t�o��}E��
c�d��`o�_]�H�..gQH�|�b�F[6"К.�sM�	��{�`y�D�g
�!h�c�-��L�[����U��M�*�[J�;��򤉘mu�{�\�n��]]�Z�cyI22��Q,���;��H�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
file_extension_zipd':141ACB82-8C5E-4C2A-B4DC-B8D953D85190-7317-000022DE03725503@Hx���K�Q���!�(b�=N��)m.*�D�K~1�QW-ͽ�Y(�W��
��[ε�Ɯ�2��P4Ÿ��gv`DP?�x�}��:���ORw���J��ΊxVZ|����݁5���'�W�{+��%���}���ױ���0���_���toG:����s;8`~L+�r��}�m#T���N�Gsw�=�8꘡4�`�l����Ap5T���T��p,�D}oZWJg�x̭t�G)�M� �ӑ��&�h�緡uG��A�����sEG3�f�`#Y3e�r[�;SM�}K��s�
& �����C��(�q:7�'
s�8O5�{�;�C����ԟ�&�I�A�&d����}�q�j�Z����y8Ez��I��%:���gI�7%�8O5�7�?��XM�iZ�f%��L�q�
��9�SM����ˏ0�2h{�x�5+�h͞q"+�s�����+�M�L���U
{&�"N��r��ThA\�|��e��,C?Y@�Ģ,^�w��X��<�u�C8��Ъ���j��[��<�5�̳��9�A�㼢�=��!��P�tR*h�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��w
~file_extension_hqxd':0C889008-D40C-41E0-9823-0527E71BC619-7317-000022DE03719715@)x���nQ�y��
���T�Z,���0J;@�����/�L�-����3Է�O`�{uR�q%+s�>��s有���TM���Š�BVȲ,�
9�|u�E������x��y��^��A�
���aN�sD�k�w^���pw\.8��`�&X�F
~�F@�y	��cBf���&�/��%�u�)
�
��'�4�N��p��	��y���++�R�EX���F�v�s���A	�v
�0[���%	��e"��e!�P�g�9k��n��7��#�G��|�N���y����	s�.���"��]��}���EB!"�ө'�։Q�2�F�x��:�����������%ub�R�H�X��	��s�QG6�F&�����Z.�E���<a���k�O��~����/WWD����
;9a�q�0[<?���[@>�%jV��v�(�=9�f��㷨Vʨ��b��G����1ת�gœ�<a�4-�:�߼<�k�3���9�y�ly<��Z"Au�ߦ���A���/9?Mg��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
Mfile_extension_gzd':93651A65-B373-4406-A096-8E0C60F71A91-7317-000022DE0370F224@Qx���O�q�_��͖�5C�Upfi�Y��*g�EĐ7Ǜ�B��8�I��+2�đ�x_Wu�M7�t�휟�ٜ��w;�;��9ϳ�.��G���(����T:�=t�<c�.�K�}��C�	[�=l:>"g�Ev���m����MCUњ �H��r�T;�.<:eG&Tgٰ���&:��*�͐r(�o���P7�r�����g,��qŒ_�I r�5��%I��~ּ���}��G_��o��TG�YeA�I32e�H��5S��IX/N�('���&��V�w��q稯pa��vUC�0L��ȅ˴��a��v)D�X1��_җ�PG�]��(�dy�aQDϥ����'M
�����4Nã���\��;�ؔa��6%Ĝ9�I���k#M3�$`U��܏�&�6��˳b��I���o�ǰz_J������Wx�绒��jRp̓&��֍��-�0��'�pƨ7A��֔�'M
���m x=�����/1֐�g�o���<iR�u��) ޞA���5D����Y�}]p̓&���=�==�gǼ�p�QU�G1��7�i�U�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��u
�file_extension_flvd':7D161273-35F6-481F-BD4E-5F76C12E4EF0-7317-000022DE03703387@'x���KSq�GB^,_�"��Z�.5�5T����CI(�F
��BJ��PVT�ºP�?���/�%̗l2&Jʖf����X��E�/�����-��tFr�4k��KS�o�,��C/a���Wu�x�p��ĞA��$}g��� %)�-y̬�}}�`As�'���~p؂8f� O����Q�?K��hkR�hf2Ŀ��I\Ώf��Nᩙ��0�v�(��F����{9��=2�s �+���0�GV���3mpʋfF�[��v�Pp8l��
s�c^,����Z��3��hfl)�:�07BI�,�y��dEĄ��*����gG�{�͌�ׯB��9*��)+��͘ؿS�3�S^43v�/u�����)=��؇5fB�t\�q�����{�͌=5��v���RU��|nt.Q]�De��U�ʨ�)/���Z�S���W�b�x�;�ǖ��Y��v��5K�����l㊘09���n�&�7��6���VWZ��:8�-���~�|޻���F��L��F���U9�E�3�Ҽ���?c��N3�9�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��_
�file_extension_docd':DF7B7D00-9D58-40FF-AB9B-C0B4E116D0BE-7317-000022DE036F8E95@x���KSa�􂛶t� Ӽ�ƛ�&"z�./�� (ċ3� ��p���EeZ[`�K�H��S���l�dHL�(g�i��wN<f���y~�|��9��s�?��^�&xV�ql�t3���f2�gTd�:�L�
/߆���{��1�b_�`�h*2�x��"�7�x��S}�xnh�ۥ2l�XU�Y��@�;�9�YSH�[o;�6zU�
:-����0P��Yxt&����s#��k���b�������x⳦0�"���l~,$��w��Ǒ]Nsg3(��g��4�i�;'����'�����0��X���)dN�#rq] �Lp�ɮ,��R
/�u�_η<�YS�)P��K�ٰ�k�j3��Q>�W4��5��+���RD�����]������+.bm&Z5��5��3]%�_-@��nk�mn�]���5
��u�yO|�2��܃D��ψ'>k�!�ӝ^����_"���5E㑼'roȷo)�������G�������streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
Xfile_extension_htmld':E4915B50-BCCF-4E3A-A2A4-88DDFC85C7C2-7317-000022DE036EAEC3@�x���KSq�O��ZuvqA��_��"�|DFWkG�ܚ�� $��
�lR�Z���
7�a�iⵄ�MݲY�.�}{~gqbH/������wα�����C�H+�V��o;Ņe���n�
��*ڳu���: p_�K��f<��*:%�ڌW�r��A��|N�῁��k��m*�A��LJ�_��B�^�!_\Yo
�Od!�D fA���OI�}o9JZ4�U��k̃�R�_n�\/�gd�eI��t6H�p��X�@�Q	�|F}z9�s1fރ��<��	���_��q��[ཛྷ����v,�
 �kDȲ�Ζ�qb�3hi���=���Ad���@�
�X���JЂ/֣�U��˓&!�,t��Π/�"�s��"�p\���|��u�;L�&�wR?�Q�����Ǧ]�kދ�����MY��,˓&���1תE�v-�Q�i?�Hg1�f�ԥ�f�9�'M���[
0lހoc��L�����H�N#���}��cy�$�e[���Fne#:�Bv��DŽH{1F��mP�9�'M�U�
�l��5��q�h��^��i�n��~��a�J��r,O���F��*K;�FN��<v],ʱ�,��T;��X�2�o�@�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��7
�file_extension_bind':A2222DE8-C779-4E62-86DF-E7A4A005933A-7317-000022DE036DF68D@�x���K�a���/tA'����d��oK�TF����q҉�V�
:	�&s��Z���e��������{��z�g��8E�4�n���Z�&R��`����_f�]E��a��,��L�K����S�|��Z��sq����?����J�m(�ڭK���t����7����GN2f���a��X�=���q)q�Ka,������1߱9�3�cV�f�����z��N<cV�7�f��b�����8ʉc�|�j5�����Ϙ��O�3Ẍ́�r1�M;R]�1�\�xƬTק/��%�
3ӎ����c�+Ca��E9�N<cV��SiT����j�l��w�Z}�ʼng̪�v����F��:�7gڌ���yq��<�N<cV�?L�P���j^��u���YÉg�J���$֯���U>b��]xs��Z�xƬ��q�x��r�nk.N<cV�G=R�-��ߵ�޿��)��;�)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
Rfile_extension_bat copy 3d':DB8A1109-C165-42F8-A602-A93EC4310B9B-7317-000022DE036D5323@4x���K�a�W�D�5�
5�(H�>UXH/Ӝ�l�Eo�`.&{q���2"ʆ�k���$J�Pd��X%�7�o}=��X��C׮�:���x�o���s�n�X�P��#V������H��t__�i�/SA���~Lƛ��V2�x��V!�G���x�ϩ��8ʑ����C�pl/IY&�	�m;V���ڨ�?�u÷���K��p֭zJ̔��O�'�8Q�$�8^�XG%�e�p�B�qGϾR�_�n f*�}s�N� �8Y�Z���J\k��A�.̥��:G��£KE���Ëdk��&|�� Դ���C+��F�
qO�x��#fJ���Y�<UKv�T�
oF��n�)O̔��{�q���ʘ>���h�Z�J:�\9剙R��ޭL.)vt���W�+�<1S�:��w �3	|z�B�m3��s͕S���H��I;��m���ҹ��)O̔�l܉!�v��\���I���u��r�3um�x������m��/���6�z�k����L�ׯ��YD��K�!�U���\9�-�UF����#��7�a��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��7
�file_extension_bind':B50AC766-400F-4253-9654-13294B38B1A3-7317-000022DE036CAC73@�x���K�a���/tA'����d��oK�TF����q҉�V�
:	�&s��Z���e��������{��z�g��8E�4�n���Z�&R��`����_f�]E��a��,��L�K����S�|��Z��sq����?����J�m(�ڭK���t����7����GN2f���a��X�=���q)q�Ka,������1߱9�3�cV�f�����z��N<cV�7�f��b�����8ʉc�|�j5�����Ϙ��O�3Ẍ́�r1�M;R]�1�\�xƬTק/��%�
3ӎ����c�+Ca��E9�N<cV��SiT����j�l��w�Z}�ʼng̪�v����F��:�7gڌ���yq��<�N<cV�?L�P���j^��u���YÉg�J���$֯���U>b��]xs��Z�xƬ��q�x��r�nk.N<cV�G=R�-��ߵ�޿��)��;�)��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
file_extension_chmd':FCA3C5B3-B773-48CA-A969-4C7CC08BE446-7317-000022DE036BC544@ax���KSq�tU�`mmg;gV^t]J�Etԥ$��QD��%S4�Y�E�E���٘���%�PY&ED�?���X��t��}��y������"�rۊ��$۪��Zt���_���\��\3�O��>T�S����)��T7���t���[������V�R����O�F�Ά��Q�S��#ւGG�XX������k�C�&��5#P�'�|D��Lj����Uz���� LS��h�|�Mv�NY0Zo@��ӝ�X~R���	,+n���u�";��G�/ �d�ˇ��S�w�1�1�~�BǠ�}�iRd��J��
������ �����9��y|�H�X�����W����y�RgL�ِ=�
I�q�����ͥH�7�q�0Ma�?�ߏL��X�N��6��W"����n7#Cs�q�0Maى��{��1yމ|��0	<�XN�L�,G��	���ۻ1�+�p���|�	sC.仌�
�i.��9�y�4�k���NL��d��@!���\�_��j��i��nū��1�/b�_R��U�_1����s�q�0M��L�Ej����Zd�q^W,y�����k��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_ptb copy 5d':45A3A36A-1062-4E1A-9E54-753C7A61F5BE-7317-000022DE036B1DAE@Ex��]HSa�w_D�M��}aAC,/ꦻ(bDA��L�(b}��B"���s�lkM%"y�"���}9ې�����v�����Kέ�x8�}y~�����15�Ɩ�`���68B�7��!�6��C��n�����.+��:ϓ�%���@у�g���x�u�g`Y3�S�;Y���!�	��X�:�RW���a�~4��O�����(+VI��7��4	^�6�"0?����;ֶFP3Tx'��iK��2�<1Mb}����&�ֹ�8�5�CR��_����}����ٙ�$�ˬ[�G��첰|�$.��/����IfR�Ta�f���#���4G�Vq�s��4	�����D2+��.���/�x�@{x6������L��]fX�D��*�b(��04=���l�9Ώyb�����\
��1�x:��$v�8G����$���a��\Ay[�w�c���0w�}�3��J�֛ϋ~������yu���T���y��S�[�F��[����?�V��6�/��4�:�(�=��][�'�4�&g"�˕�6��E~^:��jG��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_ptb copy 4d':68EE54FD-1991-449B-9898-B1F93AD70339-7317-000022DE036A4C08@Ex��]HSa�w_D�M��}aAC,/ꦻ(bDA��L�(b}��B"���s�lkM%"y�"���}9ې�����v�����Kέ�x8�}y~�����15�Ɩ�`���68B�7��!�6��C��n�����.+��:ϓ�%���@у�g���x�u�g`Y3�S�;Y���!�	��X�:�RW���a�~4��O�����(+VI��7��4	^�6�"0?����;ֶFP3Tx'��iK��2�<1Mb}����&�ֹ�8�5�CR��_����}����ٙ�$�ˬ[�G��첰|�$.��/����IfR�Ta�f���#���4G�Vq�s��4	�����D2+��.���/�x�@{x6������L��]fX�D��*�b(��04=���l�9Ώyb�����\
��1�x:��$v�8G����$���a��\Ay[�w�c���0w�}�3��J�֛ϋ~������yu���T���y��S�[�F��[����?�V��6�/��4�:�(�=��][�'�4�&g"�˕�6��E~^:��jG��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
 file_extension_ptb copy 3d':0A8227E9-EF9C-4910-83B3-6C6DD3B1E89A-7317-000022DE03699079@Ex��]HSa�w_D�M��}aAC,/ꦻ(bDA��L�(b}��B"���s�lkM%"y�"���}9ې�����v�����Kέ�x8�}y~�����15�Ɩ�`���68B�7��!�6��C��n�����.+��:ϓ�%���@у�g���x�u�g`Y3�S�;Y���!�	��X�:�RW���a�~4��O�����(+VI��7��4	^�6�"0?����;ֶFP3Tx'��iK��2�<1Mb}����&�ֹ�8�5�CR��_����}����ٙ�$�ˬ[�G��첰|�$.��/����IfR�Ta�f���#���4G�Vq�s��4	�����D2+��.���/�x�@{x6������L��]fX�D��*�b(��04=���l�9Ώyb�����\
��1�x:��$v�8G����$���a��\Ay[�w�c���0w�}�3��J�֛ϋ~������yu���T���y��S�[�F��[����?�V��6�/��4�:�(�=��][�'�4�&g"�˕�6��E~^:��jG��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_ptb copy 2d':7B043E90-924C-45F0-9A91-914255DA508F-7317-000022DE0368EB2E@Ex��]HSa�w_D�M��}aAC,/ꦻ(bDA��L�(b}��B"���s�lkM%"y�"���}9ې�����v�����Kέ�x8�}y~�����15�Ɩ�`���68B�7��!�6��C��n�����.+��:ϓ�%���@у�g���x�u�g`Y3�S�;Y���!�	��X�:�RW���a�~4��O�����(+VI��7��4	^�6�"0?����;ֶFP3Tx'��iK��2�<1Mb}����&�ֹ�8�5�CR��_����}����ٙ�$�ˬ[�G��첰|�$.��/����IfR�Ta�f���#���4G�Vq�s��4	�����D2+��.���/�x�@{x6������L��]fX�D��*�b(��04=���l�9Ώyb�����\
��1�x:��$v�8G����$���a��\Ay[�w�c���0w�}�3��J�֛ϋ~������yu���T���y��S�[�F��[����?�V��6�/��4�:�(�=��][�'�4�&g"�˕�6��E~^:��jG��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_ptb copyd':FF8D7603-C25D-4431-80E6-6C25E00BBE5F-7317-000022DE03682D54@Ex��]HSa�w_D�M��}aAC,/ꦻ(bDA��L�(b}��B"���s�lkM%"y�"���}9ې�����v�����Kέ�x8�}y~�����15�Ɩ�`���68B�7��!�6��C��n�����.+��:ϓ�%���@у�g���x�u�g`Y3�S�;Y���!�	��X�:�RW���a�~4��O�����(+VI��7��4	^�6�"0?����;ֶFP3Tx'��iK��2�<1Mb}����&�ֹ�8�5�CR��_����}����ٙ�$�ˬ[�G��첰|�$.��/����IfR�Ta�f���#���4G�Vq�s��4	�����D2+��.���/�x�@{x6������L��]fX�D��*�b(��04=���l�9Ώyb�����\
��1�x:��$v�8G����$���a��\Ay[�w�c���0w�}�3��J�֛ϋ~������yu���T���y��S�[�F��[����?�V��6�/��4�:�(�=��][�'�4�&g"�˕�6��E~^:��jG��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_ptbd':587F6844-CF89-4FFB-9E2C-2412F64E6630-7317-000022DE03678849@Ex��]HSa�w_D�M��}aAC,/ꦻ(bDA��L�(b}��B"���s�lkM%"y�"���}9ې�����v�����Kέ�x8�}y~�����15�Ɩ�`���68B�7��!�6��C��n�����.+��:ϓ�%���@у�g���x�u�g`Y3�S�;Y���!�	��X�:�RW���a�~4��O�����(+VI��7��4	^�6�"0?����;ֶFP3Tx'��iK��2�<1Mb}����&�ֹ�8�5�CR��_����}����ٙ�$�ˬ[�G��첰|�$.��/����IfR�Ta�f���#���4G�Vq�s��4	�����D2+��.���/�x�@{x6������L��]fX�D��*�b(��04=���l�9Ώyb�����\
��1�x:��$v�8G����$���a��\Ay[�w�c���0w�}�3��J�֛ϋ~������yu���T���y��S�[�F��[����?�V��6�/��4�:�(�=��][�'�4�&g"�˕�6��E~^:��jG��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_aced':B7C4F623-D892-486B-90FB-A99EA25A8EA9-7317-000022DE0366DB1F@jx���K�a�'�N�r�fbK�0ù�e�`��3p(�ʬ��L͑m���u�}hn�m�܇���X��AY`�*�J:	:���~�7D"���{?��ޫڔ�>N�?)K���,S��+��o���Mݕ�_g�2�Ɨ�~|������������:Tf�ݤ�C����q�A�@W��u�Y��zhM���
dz���A��2��[���'v�G�D6��m�B�����'m���o~@5	�/E�5���V�[U��{�doG��5��^$���&|���T����k8���>}�i�^���5H�Z��a1��N8ɧ���K�{r�Nec�a<��x5r�n�v�1��,x�H�;ֿO�!`��l��\��&�:�g��\<4��1��v�O5	^�{Ԃ�My|
��u�
���^��W!pAMgy��>�$}
�M5k4��FI�U�
�^�����c�j�~3؈'m�1jVae>J�UxmV��B1�O5	^�
1y��jj�e�� �#�Q,z�SMB(O��Lۏb�Z�IK&��bx����g�ا���b'���T �*G̥G�[��yO<���>�$j�F\i�
{��֒D������*���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_rtfd':7A7AE012-6ED6-4941-ADAA-B810F40DDE18-7317-000022DE03658E24@>x��Kha���"�$�$�ͣ&$�u���•RPՅ��`��R3Ƙ���Q,TT�"�U뢢����dL�HR�,]�P�

�H�x��Lb~p��;���y<:�*�����G���%/0�	�B�˔���ǧ;����^A���Hx��B\�@�D=�i3A�o;:[L�������PN{�
6h=Əa�݂���"��C�i�}
(��!p"�")�J5P��#�ǚ1�^���8v�]1�!3�8z�7,�
XQ����CX9����U�cLC�5��㽘8S��
�"qa:��t؍I��>�o��{��
S=&�U���2Q��Z�	�!]Oߞ�|·_�伎[K��<�ɜ��>�gLC��m��K6d�Us�j�D
�و^�����ܮ���1
�ڊ�+6,'w�ȓ5��'0�cW}�ϘFBj»���:0�F�{r��[���F��Pf�:U��3���6��f�_��_���	��p�>�gLC9�`��P�[�W7͔�2�pˊ׷��s��~�4�[트&�K<[��gI�/I�\��_WN=��?$���K9�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
�file_extension_pdfd':151FF549-750C-485C-9255-3469B07D2FE6-7317-000022DE0364E54C@@x���K�a��B��b�� L!�RKSI3�̴eDp"ˈ�ŋ��B2E�!�R�00"����𢚂0-SƲ��Ŗ_��D��>�}~���=q&�8�7�w�8�<:a������	~[s?��+cD-k�z���@l�K��%G�"Frw7D����h
�C��.H��!5y����d��%c�xp�B�Ob�:�9�mH0C��w�CZ�0������V�����l+sQZ�s�K�˞�6о`��[.��T'�����}�nnʎ�)��L�#�̴�`O����|r2ޱa���xO����<���^{�̐%��S��=Ka���fy0���k�,ֹ�\ﵧ}�in:E]�ϓ��b��"��^���vQh�� ���c�|��ƣ��p��M��h�r邗�67�G��3<��Hh_0CIqꡬ�Î�����p��Ge����_��{؅��`�4��˭~y
N��}��e>��}��꣢T�6<_U! ?�����El����mO(�"~��������5�>(�]	��P�����t↓=���R�����d�	����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E���
^file_extension_mpegd':006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F@8x��MOQ���@�?���Y#cܘY���J[m���UAB��ݸ35�%�R�$��F&��4%��i
ƥ}9g0��҅Orr�����L�f��v�v�����>mZѕAvX�K@^�C^g��>��z����S��
�^�d����Y$�	������X#m;��n��߬��8�6z/\�"�z����]X�K�;��qh�3�iH��+��M���p�a�m�وlċ�@�z�H�+Q/�>�ip>���Z�X���'iS�&��#�Ȇ�'v,
��r�����49��ψ��d�N٤P( �D�
y0y��O�tq�Jg��o.U#��s��"����^�y�݋���[��"��I(��/�tg2�Ol��1tӁ}`~IB�\�?�i(�
���U�_ۣz�SL�煇G񮳆, �c�ۈ�[��yfx�=�)�!���-t�{d���l�:s��=�)�����H
d����c�b�����߈��D|4���>{�SL��HM��d:Wj��۔��Ǿn+��(����mR�
�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��j
_file_extension_mp4d':B87DDA57-9B11-452C-87CB-C71D10DCE80E-7317-000022DE036371D3@x���KSa�_��us/n;�`RHЧ>d_�(�"�$ej�L2�9b�#
�
2��Ȝۙ��|m�Az� $�"���l>%�.ι���g�^�}�Ы�^%���c�K�U�.
��.?�#s�ȟ�9Ѝ�}kz���܁\R����Jd�h��A0�������1��D��Ze���~�����@ẵ	�V�$;.��z0�#��v�o�E1Z��M�9x���
�)݉��#ލ|;3)��<�@ᢇ���%/L���5���2G�$�؅-l����ӈ�.{��O|�2M��Nz���L%��Ӆ�>k/���)݅/��xy͋�+���R�(^E��^<�YSȼ���]>��ncc�w#Lv�ě~k/���)d�������.;[e>d;0s+��~L�|j�'>k
Cw��=��k��9����	b6����ً'>k����(�P��}��wva�O�\�FE��Ϛ"r��`��+	05XH�=�c%܉'>k�����ۿF|�~e#��Gį`���0�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��b
�file_extension_txtd':0675C424-B6A2-4128-A197-5E9EC0E334B4-7317-000022DE0362C35D@x�S]SRQ��z��z�%�fl0��,�@�eȕ˽(4�H�]���5�������c3=�Z���2�5���c���9��x�M� ��|l@Em����w
|>���j���:>�h7_��l}=�\ʻ ��M��ىAH>��G~��m@��B�Ӹ�sy��3�=����a��#*�dw�{���Of����]yK���Y���03B�F�9�D��U��>@�n�����md.���0�!�
"7PqU�����Q���2Zo����z]��C���c*�Vc��/�u��E�Lj��;a��"זx.щ�6:{=pl��V,��<ةQ�=md�_[��F�w_H�R�O��a�/:���A�U�����6��'d_t��̓�w�<�FQNE��6߯�qIE��Z�S��=mt��U�Q5�ҍ�L���Ɣ҉�6|�m��}:V�|5��I��3���=�t���C���B<����*�?�")�v�7���y�?(�S�|���r�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��J
�file_extension_exed':942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A@�x��Kh�A�5��&�;����n�u���nܨm@�֤��u�*4��EC��[��E4ŶI#���.*�Ֆ�9�L)1�\�����\l]p;�
y�+���Q�7�4@Y|f���3����3.P4�y�:�<�סsPz�7�ί�fL&�lg'�S�y⌬��R:H���	{L׌�	��0�� աӸpls�1���2r=-,/�W���4ae"�l��.I&�=|`̢y�G��|O3r�7"ـL�z����M,���G�˅�yW�,�/���Vy�[ֳ0���M������rQ����fc
W[�'�1����W�����v�.��e�f��<��Y4/�����nZ|J��(���Y�˓ϘE�׷�(��w��;��ækڗ'�1���h7*�#��}y���e�����8�����w�˓Ϙe�k+jca̿lg�Ü������ڗ'�1K����[�Y��;k���%���S"��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��Q�applicationd':9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265@
�x���J�`F�i�.E/��tv�"��R.A�n�$iuo@�T�djli���=u��9p���9!ͽ����V�%��~��7{>�S�<�=mh��+�|�Q�dM��us�mc[�NkI��A�喒�m%�;�ec[�NsAe�
�vI�(R�5D3e�h�����K�b-B:L���d�a��eʲ��l�6���%�D�x�m���[*��K�@6*v����Z�����G^�5�mKCA��,gP�o
���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��#���Layer 0d':C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5@"x�ox�}XU����X���Kl�-��\�1�������^� �hb��{C�"*T���H��׻���!`��=߽7��Y̞�w�̞3�2{�8r�H���q��ْ6z'%��?�={vE*�@�_���̜9�(��W���	�=UC�,,�'.eXRbi���?��!�j(q���DEE�J׎���R��ܧ ,4�a��CC����X���r���q��N/u��� ..V
�c�����CH{)�C��S�z�j�89����HJL������M+@�)�C�Dڦ���LKK�S�))�HH��U�4�H]��.��HW����
W898"%9�V�륞��l��ٙdr����dee�m�=ezH\����U�Vᄛ��L].V�=wvrBFF�
�����g��a���L�<4������n'N��ŕ)�4W����L�;o��L�%K���4�B{{]Xe쉽b��d�����j�q�����p]��˪�p.�f�!���\q]ݗ���8��<ω%�Ȕ(v$��2(W\W}�8��h������+8�M^ҏ�e�c��Nʩ����@�s�z�[��5��_p�w{�PC�\\�����ԛj�����:�;@�/�f�VԶۉ�;���w���_i�R��P�]�ߣ��v��Xtr3[oDK��j(q��e�B�K�B������5����]�FG�g�3O��Q�R�h?��#�O�b�٭��g9>>�M�`�Y��y��C :�_���%	ؐ�@�T���*M���b����\���\݇�W`i|�VD�N��P�/v�Q���[��C�
�|r��]OoBwO](q�;��(W\M�c��o.\�Ƈ�0)!)�b'�l�n��-DG9�����\1��9W�)g�缲��I;�߻�[��'�Wޖ�ɿ���/�V6�{�-�gt	>������a�r�t��j��܏���ۍ��f�ί�Z��K��Roa�
As��e�L/$��A��<9���ɧY�8�`����/�m�ޛz��p_�	N���{�y��j�78��3M;�N�^�	VK�b���oW�7����0Ӵ���z4���I��%��'�e�4 �J>�B�"_��GdE�(�Nj�Ba�/�ϓ_�|�z��d[.���bl�u����zk~��� �k�J��4f���X���c���oC�LJ��ޞUʵ�1K�\K�R�P�%�Y*8Vr�ͻ�Ժ.*��v���mi+eJ�B��4f��R�T˥�s�sL�J���0K�%�`�,[%���O� [���Z�TH�V,ӎe�:o�o)Kʔ��r-it���h�|���-�'6b˨$}�<d(~`��?�~C��ǁ�ᧁ<h0����Øv�7���tN����˔�M��o.^����#�
��Ч�p��F�:�9^k�n�Z��a;���#�������3`8z!�}6�ίF��
d8����OCis	bK�F��v��R�:Y'g#�u:�\g ݞ�a�?�ڈ-%�4){�`ں
�/��\������^8d�j#��`�Q9|8��F��m����oz�8
���Gc谑i4bK�ƍ��^1h�8`_�X7����l�g%ל0h��xAl)1���c0��ζi�d���|��9�?��ԏ��#!��`⸱8w��Qo�Ӱ�t�?hm�{Al)1��	�1v�X9�}7��Yj�'J�ۍ��c訉���Rb�)'�~/�3��ߟeG��dk�o���LRmĖL�<	S'M��I�1n�4�?���8f�45M��Fl)1�w�}{~洩�ѣ����B��e<?����da�<��wx�wx�w���w��:}XH���Q�_XYZ��r���!�����pDFF�)���D����@}4�e���H��Ga�����=�	�p.X/��y�Ԥ8�{�����I����.����1�LK�21�ή��}�n�-P����gjj�������6�R�)��ca*�s$��4�R�>55U���d�!6>����g��(`Z�N��p�s���(Z�di����td�9���]���\"FP?<0
х#�����4����ONN�J >���b�#���j8�Ǘj(���v=Aن_}#s'?Z���.7���ȇ$�ou��{IxW�㎺.cJ�aoo�S��hjv_���Wkn�d�x����/�YȚH�F�S�ÿ�c�M��L�դ\V�6$�\W~�C��EҴ@��u�z�?U.�J�������8��L�#ɜ�	D><��?T����v
"�Dd�iD�Q����FNv*�t�0\�j��g��E^$���<S��v�Z��������c�� .�
�R��A�1��I��	�אv����ϴ���z
Ğ2=$.H��K�+�L�P){�� 9&��@I� Ğ2=$.HO#�Ɉ(�a�*\p�w�z�ᯔt�Ğ2=\Vԁ@l��ɸ��L�|��S���I]���N�+��a>J��Ğ2=�d���S�����I��+�0J�؉�b����b�/�~���ĬYo�~��:�?{��Ŋ���ܧ@֋�n�(q����`��E�b2n1�{)���/�^�u�F��ZJp���}���1ʕ.[����c,���_m\P�J~�}�JU
篦�5c~ʙ���TL:r�?Ѝ���7A�R��R�B�˺1/������߷o��	I���p��e+�hѢ�nC��{�(�=2�M���7�z��>hh޴�V�L�^/kG�r�<��|��rua�!̚�j?D�R����QB aJjm�Y���y�rmG�C����k�G֎��</��#���K� �e��Ҋi:l�GZ��3Կ���MY(s� (��0u�cp(�Ї0�)4|���~�M��܋=�S��0��&�:C�HGe�,L�&�6��Q�L��GN��4&��R���!f������..+�k��{EE�^�a����ngv�h��{=ά��!��m�Z�&�e\B���x��/Xb�|WV����-��a�!�}���p�|��`w���\^��fPB����)���ÿ��jR��)��r'c.s�{��B�hG�󙍉�����|zi�����!S�+���vt@��돍�7�/��&�F�({4}�%�l�S���P�vb�EW̦�r�aq��S������JGn�6���q���%l7~�8�G� q_#,v닒ז�u�+n�U�zi*��x�� �y*&��D�Qj�B	�
%�n�uF�ƈ�^�m��j�=\\_�'� �&d�X��k�$�A�>H���0�g*,Z��� dgԿ2^�j��3�LzD�B��H??	)�#�$�C����2X?��D���x��Y��b8����w^V-cÕ)8qa�z"��h�D[�zCǀ�<S�q�� tG<�\�ay�ʕ�����1"m�B��N���0��z˘�߇�'B��0��`,q�^,��޷�������Zx|�9ߙ��s�6;�
���"��5��~���ߡ��0�޸`VK�^�TѪA�i�qo}<;�O�7��}��G
��:��������ᷲ2>�=eyQV�pg���VwwV���+!p[Yl+��}��]���,���fzߊ�v�jg����skk���pbY��ٽ�[K>)v���W+Rl5J\��!�S��W��~~�jZ;�~)���GFF"2*
���d"�LJ�b!�~)���A�\�����l$��)��KLFL��LYF�<�q{��<pp�@�-'�\P���;�}�Ǹ��)�OHD|b��㩦���@�{��w���8��!��w��}�4�Ҳy.7#��,�YbYS��Nn�7�#��pY�A���1�:�_Cm�o�i�v�uyla;5ػ�����5��-��b,���UmX2x!Z�cf����N8���p�@��	.k�����0��̙e���@8O+G������J�Ղ���C���/4r�_ACqf�Ljy~�<�x��_�0�>V+�S;g7����*������xvd�V��%����	�	�h�W88�J�H�V��s�c��_��ׯU�Z�������쵹��v066>KY^��O�ߡ��~�ŝ_�{o/xm��K��Ÿ�����p3)w�ʨV��A_��T�,��%?�W#�b���գ�|�����.���<��2[O����?�p��o���ᳯs92��������枾�iQx����?���+Y\���bs9�R���IJ������?+~�KB������uT�g$� =1I:ʵ܇������9Qb���ϋ|t
�i�H�DVr �����e�{�#:��%��m����>CF|뺃��n�J�[��UY�Z>���M��J>�:�
�Gw����Y�N^�Թ�6H�5��4�4n�D�o�-�G9d}P��
�v�����.��ܤ+�U�{�〃�@떷�2N���e9����OP��}���@��w��]X�k"Ѹ�5�u��/��ĉ���5k��$s��X$�;�p��ƚ�Jbd��q�k������M�U���=c?b	�Q�a F��]�^��O��N5u�>P�ƭڵ�.�oS�B��2�V��	�2\����F�?
�t�Ѥy�Q��IA�f�0s��NK
J�r��m{�[�h�m�]�-�&;����`˖��]]����)64-��:<�3f��O�@�?�3�/��)C�		������2$_ k��ܼyC-C(��2=$.�=������{�� �k��Q ���!q��;�����~zcN���U^������)����_����Y�C��}A�S��e�A�k����߹�������@�ž ���z


�b����c�S��̙�$e�����jڛrR��'9�*:��?�������Nϟ���m(�C�S ϛ�4J\��g��y���Ȟ�@�7���(�ί�����I˺_=M��*T�s�3�̡������3&:�V�R374��a�R�W/�^���Z��������1��h[M/�
c��eɎ��_жG��x�uE)���Ca��z�P>�]~H@ӎ���2����CALOOen�<�P�q8�w�A�f!(��O��w��y����yn�D�o�ѬC:�':��B����?h�8S�ll9�buBP�u��v�2w^��3�i�Zmb0aq���_�7�B搴C�E���
Ν�X+������ƥ�1o�L��)�򦬫���~���o�?`o��#9%�W�1�x����Wб�=�Wt����`��XH��oi�xJ����-e�^�ަ@��*�Yy������ͣiU�^|T~&$�r��7�X��HW��k�z�S���J��x���*Ebp�8{�X�z�Sy)g�rr�p�'U�h��&&����Wi�3x�|���c�X��Á���^,�K%�J�h^=�+_{��5���Y�ޕ�
JZ׉a���9��m��B��{����1��������F�O�Q��^�$���<���H�md����i�P�C��)���Ͱ��?��wn'�1���������.]�e˖�S�o�R�����ߋuӛ��B��>�@ΏD�D�툌��[�J�'�#*2\=�!�{7���j?��A��'~/.&
��q�ߺN;���r��6��+a��½�/�O�YI�h���y��WPFh�;`��zR�BӋ�KL���O@���aƝ�):�	�.�ǃ���V�
M/�.%��.+	���� ��BU�~��rƾy�zhz�yi�y�IU�7�������~';�zhz�{�i�y9�x�>��������~(��s��U�FJUhz��ܬL��d�|8�\����nS�Ǜ�_����r��&��e����)����R�;��ؽ�y��܋F�NN�p�T�$<�q�ϫs�F
�c!i�ğ��)�*��5˵�k���?�}j���,�+��Z��?�ё���@�<�j�N��g!�d��!cU��?a4�5��ZUTj싪]�ְ44Iǩ��g�^������lonV*6��;�����{�e����4�~0'U;�ō��f�qI���=9�;}'�+��(�F��M4��?���I@��!8���x\�3�L_ބ@�/B6+�Ӻ�ޤ��i����Pg1��g^�wj��sB*�Y�A��	|)�=�V�5��?�id6�15eM�����C殰���'�?����I�r1
����Q:���z��K��[�����1.�'�O#$�g�R�օfOs`}����m��l���^ł}�}rp��EL�c�n.k�~g�B���g,Qj�x(�S�\��E&�����?~���	���S�KK��׭5�i���UXZY��Q�x~��E�2�y�g$שr%53�9��w?_�>�����ᙑT\�:VC��C��v�����0�,�L����oj�OH���œ��8��:W�75&%%!�.�z���{���[�:�#$G���3���ojL���U�V��آ�~����C�C/،ҥ;L-�׋�Ԙ���z,�o��q���Um�8�"<LZ��L�Y�������333�)���g���i�W^-+1$��,wBIu��Ϝ���b�G���h~��D/s�0X����`?�L��SΜػ��Ѽ7�'��}��C��������Bo�?�%�����z��O(q�����/ez�x�/SSd���������
�Wt4�b�M&�H�d�����^��Ƅ�x�fBYP����0�b�	J��E�u�r4��-�ɉ�\neSWO|��ď��P�6�[�5xr�WX�O��-�)��Ȧ(?Fk�i�x|�W������/E+�G������e�,m�N.��+J���k���V��B~����X���,�y�ʮ�
��vBU�"m��_<$�j�����
��c��+��Go,���̾V�!s�0(�
��l�"��PԴ5��j�b+[c�Uy{�چ�����-\�7L=�N�\:���9��Z�XbU[TX���,mx[�U��P���m�/$$�d�=���oL������֔�!�)'~O}��EbL(S��{�Ͽ�|�u<�p�5(�Cƫ@�RGJBz����c���?Ԛt5'���u&��ь��t�U4�r^���_|l�������2��Y*#�	Y�$c���ٜ��|���Ͼ�	jݢ�?��Oֱ�to|��M�]�9�X��_��'T�}��Zu���o8����5��vK��բ�8�O�ԋ�����O��cX����Pw�5|f|-�ݢ>ޠ~�yŒ�4�2���>
�o3n�f���f�^�5���I�Gg_e���hn����1M_�{�CD�����rIB�!Է�5�����t�kI�MW�2w
B����gG�RB�v����_~�'�:<������̺���#?�^�6�y�o�~�W1y����n�,�oV��HK���o0�B۶m������O>I�w*�>�D�b�`cc#�עq�С�
�VQ��+W�'�����ѣ�^a6�S�|�7ҷ'���Ê)"��&&&�:u��?���J�z%F���[�n�v;�kz�̙+nnn��&�gõbA�~v(��[������]�U�V�����,Xp�y�D�~�ХK�1��ٳ�Lz+ԬY3�}���Xͨ�~(�ϱ(/�6l�����F�[1�"/���(U�FY�v{�[���f!>�;9���V{��%�0����G���[�O/�~s�>�e�[������=�b�hU(Jh�}l���f�e~�E��'P.��*qr%�~ͷѬP|z`vz��S�ʅ���,{��3J
G�+;P�{�M�3hV(jr/�`�.�s����ԧ�d�'���%([��f����I(s�֨[T�7��=`gL�Ks�C_�/1���K���ܖ����W<נ���Ӭp�*�;�s��g��{�����E*^�Ptې\�v�޴z5ZT�_dE�0�f&��Ӹ_<E��4�2��o���[)M*�+���E��	�ʌ;f�	���pw�uws��%�ٯCщ��Yܺq
W�Wp��\��%]��BQ�F͎�\�����T�T��p	�?+r�G���:ҬPԮ�~��a��,��d�8ݒ��-��Ƶz���2�PT�f⯣�{`�:���N3/�y��]���[s4u�.OT�2ڌf��� ̹��;�?���];�}%�~5�ng��^9:�໘84��m>Ygm˪��JV}���'���^�o���=���c�7p
�']�Өn�!�����[�4+�l���~���D�҆�P~\����E��W2Zl��J}���h[�:,�¾G��v�ϭȰ�Uhn��Y�ͷ\}e��.rJ��P�x�*���j�l��8��8�ӬpT�=@��p�R������)q]�Gh��������P����t;T�˩ܢ�Y����L~#�ml���l��
�ip����V)����.R��~-�����5}���@�_�P��O��ZH���S�KT3���3��(����q{�����d,�MB���~-�4����KY���K"Qd| ����.Ro�1��e_�}*m����VQ���B{�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E��MASKSPREVIEW*�@*�@x�}wTWW�5﬙w��3��ݨ��"v���k�I4�b�^#bQA���PAA,�b)���E�+b��~�O��$�Ǜ5�;{��s�s�>�r1k݇S�	�cJ���:80����Ү#�׺Oi�/N��-�� y-�Q�i~@�R<
��ˇR^���^�7�:Ǫ�k��#e	v�*������B-F80��8#nfm$��C�]}���bϘ����w�
���l�M��?4�3��L�k��sj�u�-N����=�"�9��:�Mǁi�xqp&��!١ٛ"qv�������l���g1�Pk]�cm����H�o����s�ǥ���d[�����$�p<�t�X�E�>+Yd�#�Ƚy��#�#>������Z��k��[�7�zx���.fH[\�<��H��7�9�
v��l��i��QT_�0��.���q�*x��)���m��ZGY/:�Ӧ#ֺ>�E����uqҷ>Nx��%U��7g_ju�Iщ�6��������8��ח��k
NxTũ�uX_Ok��i�;�2�[�슺d=��������j:�Ӧ#Φ!�oh��k��ҚzZy1�6.��J��֋N��X��8���n�X�ZiD�DobS��A�+(((((((�G���Z�L��t�'�eT�`�����zot�Ӛ��}\���E�Fϫy'v 7%9�������kq{�
���%�/��_)�Ϗʔ��?��Ge?��G�e>.U�������Y��#��<~)s�e�?^�C� dƄ��%�.E�^�p/<��5���%6-)����~=iӒ��I+�t��F{�>�����(L^��ëY��@<O	«�58l�}u�c΋�|��*�=n���\2o�;�����w|�M��0�'��!w�r�z�G�7�kr)%)}��a�g�})�1+�rv�!����]R�%c�ԑ��{�>�-��}m�⬼���d��J.!]�����7��ٹOy�G��e_
u��������D�)�
�-��X�wBn�ҖN�>l�({�<<��@� >�<O�g�Ϥ�s�me���a��7���|DfoY�#^��/���� �‡a�k|�cC9Y��t�s��'H��,��O`�{����{�J�Mvk�/<��uL��
"��i�Eg��I��������<�Z��C�����������¿���{/��=`?&"��*b����q}�ز�p-ze6�D�e�z�L��Z<M^��}��٢~��Z5����?ۢA�n-�ҵy����}L���������܄���6G��ubrV!Oc��gɫ�(u:V�ԃV
��rr�.�����V"/ur�cN"��Gn�?��-CVR��ʳf���|Ө���O2���J�5rR���t
��Ca�z�!�֒̃R�	�~*8�7�<�/lX�u�}4nlZ���e(ص�G4�z�G/����<n)�N�v"h��T�a�ǟ���@r�<^���<�ꌆ5*�L\2��a�1ȋ��r�l�����'Q���&t��X>>��я/,���=�d#s�r]�Y����ݿ6����JԲ��[��8
��<XoW,�B�9�6��c.Ъ�AʺlZ��[����7����#��>�
�,:4��U�_���է���ݚ���l��ѺW���G0��D�����������b_9k�cy�_�(�`�
3˕��J�������m��z��������k��{f�)Jy�8���&H���|"lX�����>������Ⰳ	R�i�Ji���u�_� ��vN���F�v�/�q6#ͩ���!�"��3�:��΄!}e{D�^"H�Y��Q����0����g8��c�;}��åU\u؛���]��'�jϕ6�yb
��G���ˢȺ��Ο�ű�b�/<�'=>��d�p���DO��]�ˣ��wڷU�)�*��fZ)�@�E'z�tH���W~E%ˋk���ڎZ)�@Jщ�6�&/�ej���p9��VJ,�vщ�6�$:�jXw�J���N���ىqk�0dl�������.:�ӦcςJ�IZ��6�t��~G�R/�=m:,��I�.�
Hщ����J�U}(E�����������3�^��Xqm���w��������;[I)ߒ��ȥ���Xi��E �ߎ�E���gZ�8���|��D�I�M~?3�	s� �~��ۡ��A���}�=p;�#hl��t���$�
E�AH�e�1a���#��=�?�>nmvӞm:���Iv�9B�8d?XӉ�6glr�����av?$�쫕��Z]��P�]t��M��7��<�y�H������(�=m:$��a!�xP�:���8<o i�]�/��n��6NӉ�6_s�ޑ	8�5��1�$�zi��i�g3
WC�q��c��񞝇h<�6
'|&r_�d��4��i�!�u�8�3������j��M'z�tH|9Ė{U�Y:�|�i��3˧r��4��=m:�gp��ٸd�"%S�E'z�t����}(EO��`bbb�o����������Ÿ�]�Yq����8��c� �
c�b��%Ο�����5�2y��	��Œ�m<>	�!-��?�q��2�>��@-Gf��gװ{Q7V�Nm���VE�O�/�,h���8��_'��b�󏸗�����ӛ�h��h�D��T�
���$^�<�'<��8�����9��X�?Ɗ��'<9��E��ڟ��N�1���u���I��QpV&� r5'����ߋ���L�}��u_�qZ�}ЦC�?=���d��7B0c��>A�Տa���;Oq�c�(��=�7�[�ey+�_���4��e>*���'��g�\��2�����&d��6��Nh�c�'� _��8����$��-�w�O��oG����o^K�,��M�g�n��~�S�|�|S�g�o���MTr��/��C%�L�q�@C�DO�����.h�
W?z���hm?A�5Yh�PӉ�65]Σ����|��;C��N��0uLˑ���I)K�v��>�2/���������Ÿ��S̳b���\&���Z�,�X���4�{Ҹ/Z��}�ܻ}ؕ\�����W������I�BDO1��R�y>��VFO6EV���.��5��G�"������w��?Gν�����?1ţ��7�<<cĥ�>p���Q����O���o�5G�}^�"fze�;�\����3�c�*��1y���U�<��n�x�[�<?�}u��:�8��zr��p+j����,���7������6�m+R]���{s|���<��]��ДDž���gTy�O!#^��wb��7v����8��I�5�/?�4�@̌� f��=݄�v�ʶ�=m:$��-�WE��2����@,��=��W�;���t.��yT�7�A�s�(ȦҀX[øo���_8ފ�H��*�+u&�+$����w��o��x���Y-�����7,�?������	բ��"ٽ4�!��3��L�e��6�6�p<�:�VT��O�+�����\c��*dU��ӦÉ�aI]<����Y|>R�Og���4~C�nћC�cI^���������Ÿ�M��d�N����;��ԼnRċ�y���k(�R�;�c����~_a�E c e��s��p�7�ɳ�w|�D,-��h:���C��L��G�
�'}�W�H�
��ҦC�'M��>R"yn�8�z~C\^��|;#f�����y��z=�:8���6`��{&έ�#̹�!وk���E'z�tH�<n�H5�ޗZtp!�G]�q
Rc���.:�ӦC�g1�qܝ:�oq)Ԓ�F��W�]t��MG��<7�?N�4�c��z�(��m���N��8w_/��o���ft���$N��_i�=m:$~��;uMq��]�?�+�[��+\
lƲ��=m:�<��;�ŕ�M9mdN'��+����յ_�jp3��.:�ӦC�;:�f���	�E�CƆ����)n�6�)�=m:�l�V��6#�sM!�#[�#�D'z�t8�Tm��}(EO��AJ^���������Ÿ����oX�w-Jb��%��0?�G;�j[�����z�p>�����-pl��a���V�t�ÐRJ��b7��!���b�?4�d~/�����)17n`����C2���~�^F���Y5pp��1����e���F���V�;�s�Ge��;��3���=�g{��S�#�C¬*8�ۆm��l�P����2m:b������戱����́j!�9M�Cm$�y�,8�q� qNT�8|�C�J#iF)$�)�}#��H�W�{�����-��i<�ڃ��8�)s���8��M'z�tH�`KW��|��2�r�!uA�,�gRZ�;��ۿ�t��M��w7w�>�/�>ҝ��,��;"�=m:$�����R�g|��E��<�`qi�'P�yWe�����t��MG,���6�~�/PNyU��߯��=m:���p�\-�ѯ�<�Y��ļ�
�#R�4|KDt��M�|D���g���w��@�{D'zc���W|(E���������B����C�O�g9��'��MJ�xCÀu롕o)qp0�/=�Rw+2w!(W���.��9T�􂁥��S��_MN���r+��/_T�p5�]E�*W���^��?����H`��q|R�=�6��侓j�Լ�Z_\����>�]�K���䣳���tDO���]]�z53��ǽ��9X�>�k�D�:�Є��k��t��M���s�D�L4ox�}���lX
y��;Z�P�E'z�tT���f-�C�f�Ѭ�=l�(@|�34������]t��M��6Ӏv_?D�o�E��8~�9���1qt�i���>B�&1�ע���'��m���-���5K��1���
�a�3l-��Q��i�Q��9�tm���s�q�V�*��Mzv���_���"7b����M����g��w��c'z��W���]zt�c�E�^=h�k,�~��ݞ����SQ��[�_���?�70��#���r$٧' z�t|���^��~���=m�C�3$��P�^AAAAAAA�Oæɍ2����s��ȍ�_7)�-�5���r�N�����Ñ�s
l{T)�;b�ϋ�ysN�p}�J�������8�տ�>ğ5��-�x�UC�	s��C8�R��+��ܞՍ��?���u9��@���:��'=:r/D���Ⱦ���M��G��7ο�!��<����j�W�`��Z��DO���9�q?�;ޝ�9w��b��
>�^=���ûq��E��6v��
k�ή�ׯ?�`�p�:�J�4>�t��M��w7v�EUj���g�_^�x���r������DO��3�;�����0�^�r�׀��G�UOӉ�6q�_�fh�oT�xpb==���N��L,S�U��_��t��M�����亂�7�>5y~Um^��5�!�������4��i�!�Ր�x��|#��):�Ӧ#��<�J��^2�]t��M�C��{�.޶��k����!���J�+(((((((�i�1��_q��[��h�=��(������ʼn�\ �w��+H^Ky�q��,�7�Gs�Uy����8���H�¾)�9V-���ki1R���Q�&ʽ����B�W\��+;�6����R��Z)17dc�o�����]%�C��1cQ_�=$~�`�����G�]���[����O���Lz�oı�ɭ�>�0ߨ���-�=D�c{��Y�d�N+�\\?��X�{D�rIM����3Ap7-�W����fWB>ד�p<�t���}V�?�_`�S˿�Oj�{y�oe~�}�o�_Ov["չ&Ǯ@�W�M�(x��9�q�;�����uB���+͵:�t��xYT��3���6���^�8��
�2ө�1W�/#m~)��瞌�	�w$��U5��i�!q��\c�9s%~�rE���^<E��_�����E�\ה��s�*T�(��~�e��|ƵW����Lqv�2�[j�h�!k���5f~aXu~��,������;�pquҜ�'��ō�5T��TR'�ʽ���s/B�DobYO%yŇR�







�k���~=�?s�CseHm��?t`��?Td\r��4�L����b�P��7��W[�
SQ3
���X�"���C�������W��Ž4����=xoՐ8������W�2�*���gȿ����i�^���a�R]Ӊ�6�d�ȟ�<�����Ã��90�q!
Ɏ�SWB���s�w����q/����n0����C�Ked�[O1��l��-��1F��T�t��M�ę;p������Ҁ�[��o>	�vL��=�l���DO�yo���?���]	Y�7�m@~"�+�Ւs̍~/`^pq
s� �!�{���+�mp��k1`�vщ�6�H���r�b��r��^#u�71���|(E���������f�,�WQ}�#~����]ŗ�i%��]yX~X��I�s�R��`ʌ�
�������@��X5؟�{�>d�ĠX�1��H�!~_�Q'�:l�7�3`��:����.�{7�0,.�,3�?�/�F�n���h��6�3a~�'�V[�T�%�3�"�����M����7����"���s�F�=ļ�X���^澂����$�gJ����w1)�1�x쿕{���_��f�j�!��k��~�o��;��n>��ט�|��J���;Ο3����0��~ڟ�^�y�qo.�g<Ǭ�B��_d|Ƴ�-�gQ�},��y�C��-�>ą�Xs�������M����\�C�u7�S�
vi��?����ҦC�gB
�D��yh�-�?K���ŗ��,b�/&�ҋ��~&��WTE�~q�0$���_��^��_�����Cߣ�#Y?.�5&���,޿�i���8��߃�,��ܟ�iJ��
ћC�	�+>��WPPPPPPP����_T�����((((((((�_A�*�P���?>*P���T������������ͳ[��yP#:
2�����`߷�����.g�޹�t�R�S;��vGr>�<���(c��6���Zl)�aa��8��v=��-�p����?��ȹpZ�#�ê�VJ��Ŗ��VD>��H�~�lg��\�G6�ƒ�1��Cz�n
��p8|VNk��a��Ƿa��x��3�7%l&���۔exZ5�۰�X=�3�LBb�T�WZ7��_�_b�5��x
p2.N��n���T���X2��#�}�x������׌�w{��lj؍�ὉN��8:`<�N�K��R����upu�H���N��x��Q�ԂJ܇����-�]t��M�Ļ�F�9�����T�(��k�me����vщ�6.��"�g�fv¹C[�.
��vщ�6o�D��4�#ΧlòI_���X�]t��M��z�p��N}���{ t��X?�{��X�]t��MǰN_�I���}hKRJ-&�.:ћC�	�+>��WPPPPPPP�Ӡ�?����P�







�)P���_T������qq6V�����qL��&%@�w���
��o�v�R܉�A�~��m�o���ۑ����@�LK�g�=тoq��\DX�}����^�~�|��ۡ��A��~��:��1�{�<F���x �n(�B�,�	3 }�Xq��	�q��qk���<h�!���O��J�!���N��8c�+�;�ox���0��f���d{K�.�a��.:�ӦC���Hs��E#9�;H��2N���N�����Hw��u,=�qx�@�B�N_2G�Ƴm��=m:$��c�p�k"�c8�;H,��.:�Ӧ#�f����	o�=���޳����F������,'i:�ӦC�+�����'}&���M�t��M�ėCl��j�N��i��3˧���t�N�鈟��Cf�6��Gɔvщ�6=;��i{�=r�>��WPPPPPPP��E{�mY<����>�{ö{���@�[/�R�xW�3� r�
�{\|�w�e,W\�c�l���-d��׀��9�>|�d7/B�r�%,��+`�L�Y�)2�!����o�,�CK��9�r�"�~�F�vy�XL��D����?�{�ץW��]W&��҃X�|
���g�1|���ϒ�/!z�tt`�r�9��JB��Ch�@'�k�~��‰\t���jϙ6�_x��_���A�U�L�$ڮH�w���7]���tDO�y��N<ŏ���1$���	��D��#Z]w���N����x���=FGǵ�X����kҵ���N�<��DO����e����~m��G�7h;z������=m::1�r�~�r�6�Br�:
8�k��qF��DO������[��-�0�
��϶��=m::y�U�]��y}�.�ǭ�]��r-u��&��i���;��"�����)uo):�Ӧ���qR���H��M�!���|(E����������S����M��d�%�A�l��Oi=��C�I'��~��'q�8b�#�11N�[|�c���̢�Cƌ�Ǧ�+�uô��hx��e��	�����ö��٠"���c��®�7�v��̖T;��c��DLj���c
�z�v�?�(��t8|��n��m��Q
l���%=WcJӅ���웗�=#�tH�w~*~��~X����	D���C��>��k垹���;�a۝�bq� ��1A��������ӏ��v���9'�=��^�ba�:�8����*�έW0��h:�ӦC��������j�����K�V��7Tk��i�!���։��ϟC��c�,��^��e��.:�ӦC�-Sbi�M��WS2�4�J�-x�ί�f�
ج�DO��ܱٝyb<�F���Mt×u�ٶ�b��=m:$��(��
~�"��c�F�����Q�M'z�t����1���#��{��
�Z�-d�~M'z�t�k42N���?$u�71���W|(E���������ưaó�F�����Ƒ#�0b�H�1B+G����K�Fѻa}06�#<,���`��U
X��A��&�NЮ]�b�s}�t���v�vm�`���,_�~���s	��о}�"����(�W��?��~B�.]��<ʊX����`��yR�s�.F���׭	B�^�Яo_���׮���/>^�n=
Z`���Z�#y���������r�@��ٓN $8cG��<�,V�#p���Ձ+0�r0������
a���wo4H��Ⱦ�yѦC���{_c��laA'�)<\����z���@�
���H�r�&��	��bİ!زq#{�~�!�1q�8L�0Ak��i�!�e��:y&O����B�R7m��O�t��M��������2��N�����:y"fL��Qt��M��~>���=6Ӧ�e����=�sfi:�ӦCbOw,p����-�̴�LދP��n��\��=m:F�
_ֻ-v���y��Nڄ�=m:�u�7j�h֏�cR'zcH> y��R�







���T'���
�����#�Y���%��,1YN���0�9�w���vJn&�F�
���<��VM��V��_��-j�Ԁ����*R6�0.�ۏ�y�cNժ|���߲6nq�����殴4�Huƥ����Q9����c1���F���o�c��&��A#�y�'��('l��-�._�?�ŵ�=m:$����#l�7S�N =�;�uÕ=n����wK�e�Ӧ���W��k+l�n��	Mp2�0��nl}l���S�A��渲۵�|��v8#bF;D��MS����;�iב3;`묎��iG�DO��/ns�v��dDX��׏=[�}�(�.�aߕm�5��i��?����]ݰs޷��ޜN"��b�v;��]�i:�ӦC�3�6ط�;��낻�
sO�������(:�ӦC�S�"֥'籺�e��߱�gĹ���DO��!�82	��pЭ7��~���]5�A��Z�Pt��MNJ�uq*x,�VEڊ!H]1��-
��im��DO���ŭZO�(:ћC��K>��WPPPPPPP�_�B����C�O�g9��'��MJ�xC��u롕o)1�³��G����;.(W����J�C�O/�8 ���i�܊�C�˗�*\F�jWuV�x+W���Y$�S���R�FyLy��=�Zծ�n�:ͪ_G�nѺ�������3�!z�t�����s�jf���-����B�7ѽ��=]�i�M'z�tH�i4����
�hlR���Dp��K̷�f���N����9�}h�Z7��VM�=:���_�F�;h���.:�ӦCb�i@���c�Gh����~��Mj�=m:*2�8��M6��}�6_e���d�z��Vy����[=��E'z�tT,s�F�w�E��yX�#r���|tm��:���d�\M'z�tH<�S>�;�cw�:����+|߾��������y������	\��z�_���1��-�T�缀�xN��<g���z�c�$�P'z�t|���^��~���=m�C��K^����Ÿ
��wȃ_lib/img/src/trashmesh.xcf000064400000001650147361034410011362 0ustar00gimp xcf fileB�B�G
gimp-commentCreated with GIMPgimp-image-grid(style solid)
(fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
(xspacing 10.000000)
(yspacing 10.000000)
(spacing-unit inches)
(xoffset 0.000000)
(yoffset 0.000000)
(offset-unit inches)
��背景f	

i}�000�1 ��)�H��8%�8�$1
レイヤー�	

|��0�0�0�0�lib/img/src/editor-icons.xcf000064400000033652147361034410011772 0ustar00gimp xcf file�B�B�=G
gimp-commentCreated with GIMPgimp-image-grid(style solid)
(fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
(xspacing 10.000000)
(yspacing 10.000000)
(spacing-unit inches)
(xoffset 0.000000)
(yoffset 0.000000)
(offset-unit inches)
�Z	
�s����$p(]+\.�2�6{edit_ckeditor.png�	

����m`SRlle^WSS�q�ubgfhaXSRQSS�hd�bs�Ubi�lQPSS�rh_t�cN��4�MOSS�n_|gUo[b��VNN��RkJZ�T�}Mb�NLNN�dx{~eE��SE�IKNN�pL_VUR�U�I�AKNN�pjt�TRJ��t}wIJN�pcU�ORQ�s�<�HGN�p]W�IQPH�S��CFN�pYT~yPNMY_�@GENSS�H�IE��^GFE6RR�P���w?EGFECCPP�OMHKJIHGGO�MLLMM�����������������������������ʵ�̻���̿�������ŵ���ٻ�����ͿIJ�����뻵��ι�����ҽ�Ӳ�������±��佳ޮ����ε������ާ���������»���ľ�������������٢������潽����̝�������͹����ۜ������൯��٭�����������������������������������������������������������������������������������������������������؏���������������������������������������������������������������������������������������������������������������������������������������������������������������T���h��������� ��	��n�h�	�����
����	��?���	����;�	�����	���	��[�c�	�����	�����	��������H�I���և;���Xedit_ckeditor5.png�	

)9��	�����������������������������������������������������������������	��DD	DDD��DD��LDDD��DD��DDD�DD��DD�DDD��DD�DDD�DD��DD��DDD�O�DD���DDDD	DD��	�����������������������������������������������������������������	����	��
�
�
�
�
�
�
�
���	��edit_zohooffice.png�	

 
	�	�	���	�����<,����aI,���aI,���aI,���aI,����aI,�I�_�_I<�px�0���i�B��<�i���	i�B	
�L	L�KdXJLL�LKMT�}PKLL�Jd�Q�D}�lKLLLd�s�Q�DKM��\MJ��s�Q�DKK�g�LJ��s�Q�DKK�g�LJ��s�Q�DKK�g�LJ��s�M��KK�g�LJ��t�MK��Jg�LJ��K��GQ��LLd��KP��G[�_LLLM��D[��JJLL�LKT��JTKLL�JdgKLLLY	Y�UYYY�XAUVYYY�UFXBZVTWYY�YUQSHXBZYYVT[YYLOSHXBZYY�^kYYLOSHXBZYY�^jYYLOSHXBZYY�^jYYLOSHYAFYY�^jYYLOSDYYOALY^jYYLOYQAJZXIBXjYYUBFYYJBPZWDXYYY�QAJZWFDYYY�XJBQYXYYYUY	Y���%�������X���Z�"����+����
����
����
����
����
����
����
��������N���N���������"edit_tuiimgedit.png�	

0
�
�
�����������������	����������������������۽����������ۻ���������۽�빷����������������ǹ������ǻ���������÷����������	����������������;�.;;�!�!..;�.�	��.;;�!�!..�!�.;;�.�.A�A;;�.�.;;�.�.���;4;.�.;;�.�.A�A`�4.�.;;�.�.;;`���.�.;;�.�.;`�`4̿�.;;�.�.`�`;;4�.;;�.�S�S..�!�!;;�.�	��.;;.�!�!;;�.;;tinymce-16x16.png�	

@=����������	����������������~�è�����~�����������g��k�������{��������{�������|�����}����~�	������������ï��	�¯���¯����¯������ðδ�������̬�������͜�̬�������íδ�����®������®����®��	�í�������������	�������������������������������������������������������������������������������	����������
�������������������������������������
��edit_tinymce.png�	

@,@P�!""!
"!
"!"�#��""!"�#�4=�""!"�#�4""=�""!"�#�40UU#=�""!�"#�4"UU�M"=�z"!!"��""UU�M"/�&"!!",<�"0UU#0�%""!!""�;�""�0�%""!"�;�"0�%""!"�;��%""!"�6$""!
"!
"!�uvvu
vu
vuv���vvuv�����vvuv���vv��vvuv���~��v��vvuv���v���v�ƪvuuv��vv���v~�xvuuv|��v~��v~�wvvuuvv���vv�~�wvvuv���v~�wvvuv����wvvuv��wvvu
vu
vu�����
��
����������������������������������������������������������������������������������������������������������������
��
�����
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��edit_simplemde.png�	

P
g{�#�����������������������������������������������������������������������������"�#�����������������������������������������������������������������"�#a�����aa��a���aa��a�aa��a�aa��a�aa��a������aa�����a�aa��a�aa��a�aa��a�aa����a�aa����a"aedit_aceeditor.png�	

`���5�NJHMHn�mFFQ�M^^]]�^CCL�ZeeTO�TTSL?KQQM\\�^`�uUw`^g[PP<QSVV����U`��SOCK�����[�]��R�KH��\\�ֆ�^�MNH

LT[ckople]VN



�BORSSRPF/5�NIHMG�����eeQ�M������CCL������񆆅zYKQQM�������������P<������ߊ����}Cx���������ᄪxu��������~u

}�����������		

�]uxxwxvd/5�NHGMG�Ԉ�Q�M�����BBL�������װxKQQM������������P<������������C���������̮�������º�

�������		

�kvv�p/5�����	�������������������ُ���������������������
����a����М0edit_pixlrexpress.png�	

p	����a����P��ߏi������E����ї�����P�i��f���ӓ��:��w�����e��m�������홹�>���������Ř�n�����tR���Вځ������q]>���Ց������qz{�ij����hQ�ԇ�Bm�����lȿ6���(Om~���t��B�ьHTr��p��*�I�Ӿ�����?��9�����θ�-w�oAhyxe9]�v����e��ߟ}������U�����~���b�|���bS���K��d����ib��w��[�ƚ��eЎ��N������}��Ϡ��|�����yclϹ��쎷�����P>�е��싛������{�������tb�җ��ɥ���s��B������՟��s��R�ܐ����}s���5�W�߻������J��G������Ə4��zLu��pDg�����Ȱ~����������k����ۙ�����n���9F���t�شb��<���λ���֜���<��ϲ���ۗ��\���������Һ��|����z`���ǑΈ����O@���Ƒυ������㑚��˵��qv�ї�����ſы��E���������ϖ�܄a�␞��ݪ���7�c�⸚����ޣI��P�����ѻ�4��Ou��mCb�2����8�%�����3A��������Y*���������;���������7�������Q�����������������Ӿ�������Ԛ��������D��	����_���������@�������Kl����������sH�������I�	_��׻`	edit_pixlreditor.png�	

� J ^ n����E��
(��,.!'O>��& ME-|�)J�s *Wn�W*$ա�%%21Q`X(��- #$3$u�_?9=2�8
4H&7*�y		
*.+��


��

	
��b����e�i
���)#�;��/HX1��	@pWYCU"�XBc����:��[�t"Xz�΂&�؊Yk�!-Z{~��wɪ���@y EZmY\"I����Y".Tb�$6vZ�m9"P��ϕA���JH-[���C`�RwM,^an��g`cK);X�<�qKoL3�LK��R8)ń�]�E�0'�" �.'�@�%B_"[M#+K[�n%h\x4H>_�ˤ��:��sE'J6z��ݍ)����V>0F����� `����B3[2^n��{7���J0Am���%8��X0855u����I .gnB2}���m �?M�r"?p���*J�~a8W~�Q,3z�pI�$og�T-{U"@
�V�s�&8<�$(0&����ӆ*��75��3n���o��m����%e�����)Z�����.���Vu�����G�������:�������������zj�����������#a�����������+0�����D����������k�����\������NBM��(sD��9�'edit_onlineconvert.png�	

�%/%C%S����������������ЙP=BGFETW\`eik�ϖ.,06:>CFyϖ1 #78)DHzϖ1 !-$)FHzϖ1 %;FJ{ϖ1&3KLNN|ϖ1/E+DQPPN|ϖ/:OM7QPPN|ϖ38PQ)-OPPN|ϕHNQB.R3JPPN|ϙ]OQ%MQD
GQQO|ϚbQK9RRJ
;LCB{ϚU2.'-UΙA!!  !"]Ο��������������Є���������������ѡ��������������ѡ����u��������ѡ����zc�[��x���ѡ�����812�sv���ѡ�����`'c����ѡ�����o������ѡ�����o
�����ѡ�����6�����ѡ����fq'D�����ѡ����r�{"�����ѣ���`:���,�����ѣ���0����,�����ѣ�~BvMdrnѝM"%"!  !]ϡ���������������פ��������������Ҡoabd]Uffghiji�ўZCDE3-EDD�CDBuў[EFG2'7!FB,EDvў[EFFA:+,GDvў[EFFG%
$AFDwў[EFFG+1GFFDwў[EFFG(<GFFDwў[EFFB1GFFDwў[EFF#(FF�Dwў[EG:(I,AFFDwў[EG!DG=>GGDwў\FA3IGA4B:9vўP*(!'SНB ! !!�" _Ф���������������edit_photopea.png�	

�))+);5	����������������
�
�
�
�
5�	��������������������������������������������������
���
���
���
���
�5�	��������������������������������������������������
���
���
���
���
�������������������q{�������`�=���%u��G���]1�������	���5����������C������_���F����V��j���W�z����X��|h���Z�	����[������\�����[�����	pixo.ico�	

�,,
,!,1>�;c��b;>>>�;y��x;>>�<i��h<>>�<h��g<>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;r��q;>>�=P��O=>	>�=��=>>>�;mi;>>>�<88<>>>�;33;>
>�<99<>	>�<f��e<>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;r��q;>>�=P��O=>	>�=��=>>>�;mi;>>>�=FUUE=>>>�=JffJ=>>�=H_^G=>>�<g��f<>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;y��x;>>�;r��q;>>�=P��O=>	>�=��=>>>�;mi;>>�G���D���������������	����G�
���A�������������������ء����C�
���=���������������������>����ט;edit_codemirror.png�	

�//�/��,AL=))--�����0--�K`�����'.�.%�����3-�1*�����%+�����+������7-����;-����_d4+-����t�|)�����e���<������9���a%���u*FS%M����7-�����8)�����TV0���q-?u�p(*����-,-+--�*?J;&'++�����.++�L^�����$,�,#�����1+�/(�����#)�����)������5+�����9+����Ya4)+����D]G*�����fZie0������*ghi>(���s(DQ#4hh�j/,�����7)ehhi`99,���p+2DMC)*%����++�*++�,@K<((,,�����/,,�M_�����%-�-$�����2,�0)�����$*�����*������6+�����:,����Zc5*,����MoQ*�����fj~y3������.|}~D(���t)ER$:~}}�1,�����8*y~}~r>?.���p,5NXK*+$����,+,+,,�&�����)�d����������*�������������������U�
���k�
��������������W�
��%�
��h����������y��=edit_creativecloud.png�	

�3q3�3�������������������������������������������������������������������������������������������������ſ��������������Ļ�������������������������Ŀ�׾�������Ȼ����˹�����ٽ�����ӽ�������������ͼ���������Ŀ��������������������������󨧦��������������������  �  ��!     !" #%$  #8BSJ;, "34<n����N1*Jn�r^I!(��H% H��d��'�v0.k�S�/R�4-�l�<J9V�2.|�W�1	�l.&J�~Z�`0;��A"2Q���=���xC+-8EOC6D=3%�! "$" �)*�+**�)((''))**��+*((*)('&())*+,*&,.-&%('&((*)%%,@JZQB3#(&')%,<=Et����T9"'($2Qt�wdP*0��N,$&)O��j��/(�z7!"6p�Z�7%X�:#"5�q�C
P@$[�8"!4��]�8�o4",P��!_�e6A��F'"% 9V���C���{H0##$ 3>JTH<IB9+#""�$"'&(*'& #!!""#"!�"#"!!"! �背景�	

7*�7F7�7��7b7n7z7�������������p8lib/img/src/toolbar.pxm000064400000147300147361034410011055 0ustar00PXMT_DOC�HEADER@@N�#\����METADATArp>streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_IMAGE_ZOOM_�����NSNumber��NSValue��*��f������_MASKS_VISIBLE_RECT_�����{{0, 0}, {0, 0}}�����_DOCUMENT_SLICES_�����NSMutableArray��NSArray�������_PX_VERSION_����� 1.6.5�����_DOCUMENT_WINDOW_RECT_�����{{370, 43}, {460, 821}}�����_PRINT_INFO_�����
NSMutableData��NSData���z�[378c]streamtyped���@���NSPrintInfo��NSObject�����NSMutableDictionary��NSDictionary��i����NSString��+NSHorizontallyCentered�����NSNumber��NSValue��*��������
NSRightMargin�������f�H�����NSLeftMargin�������H�����NSHorizonalPagination������������NSVerticalPagination������������NSVerticallyCentered�������NSTopMargin�������Z�����NSBottomMargin�������Z��������_LAYERS_VISIBLE_RECT_�����{{0, 0}, {239, 240}}�����_DOCUMENT_SLICES_INFO_���������PXSlicesPreviewEnabledKey�������������PXSlicesVisibleKey�������c�������__OLD_METADATA_FOR_SPOTLIGHT__���������	colorMode�������layersNames�����'����	magnifier�����plus-circle�����Untitled Layer 24�����arrow-in-out�����Untitled Layer 18�����Untitled Layer 23�����Untitled Layer 22�����Untitled Layer 21�����Untitled Layer 20�����Untitled Layer 19�����Untitled Layer 17�����Untitled Layer 16�����Untitled Layer 15�����Untitled Layer 14�����Untitled Layer 13�����Untitled Layer 12�����Untitled Layer 11�����Untitled Layer 10�����Untitled Layer 9�����cursor�����Untitled Layer 8�����Untitled Layer 7�����Untitled Layer 6�����Untitled Layer 5�����Untitled Layer 4�����open�����mkdir�����	arrow-090�����home�����Untitled Layer 3�����folder�����lock�����fwd�����back�����Untitled Layer 2�����dropbox�����astersk��Ғ���Untitled Layer������keywords����������
csProfileName�����Generic RGB Profile�����resolutionType�������
resolution�������d�H�����
canvasSize�����	{16, 576}������PXRulersMetadataKey���������PXSlicesPreviewEnabledKey�������PXGuidesArrayKey�����!��������PXGuidePositionKey������������PXGuideOrientationKey������������������ ���򆒄�������0���򆒄�������@���򆒄�������P���򆒄�������`���򆒄�������p���򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄�����������򆒄�����������򆒄�������� ���򆒄��������0���򆒄��������@���򆒄��������P���򆒄��������`���򆒄��������o���򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄������������򆒄�����������򆒄�����������򆆒���PXRulersVisibleKey�����������������_MASKS_SELECTION_�����I�[73c]streamtyped���@���NSMutableIndexSet��
NSIndexSet��NSObject��I������_ICC_PROFILE_NAME_��⒄��_ORIGINAL_EXIF_���������{TIFF}���������ResolutionUnit�������Software�����Pixelmator  1.6.5�����Compression������������DateTime�����NSMutableString��2011-07-14 21:32:17 +0400�����XResolution�������H�����Orientation�������YResolution�������H������{Exif}���������
ColorSpace�������PixelXDimension������������PixelYDimension��������@������*kCGImageDestinationLossyCompressionQuality������������PixelHeight��������@�����
PixelWidth���������F������{JFIF}���������
IsProgressive�������YDensity�������H�����XDensity�������H�����DensityUnit��������{IPTC}���������ProgramVersion�����Pixelmator  1.6.5�����ImageOrientation�������Keywords������ProfileName��⒄��DPIWidth�������H�����{PNG}���������XPixelsPerMeter�������������YPixelsPerMeter��������������	DPIHeight�������H�����
ColorModel�����RGB�����HasAlpha��4����Depth�������������_DOCUMENT_LAST_SLICE_INFO_���������PXSliceMatteColorKey�����NSColor���ffff�����transparent�������PXSliceFormatKey�����PXSliceFormatPNG24������_LAYERGROUPS_EXPANSION_STATES_�����'��������_STATE_�������_ID_�����;CD8727C2-6F67-41DA-8C2F-CE505FAB2C7A-33087-000042107C96E923����������������;073F11BF-5069-446D-96FB-EF109F02CCFA-36602-000097AE2DC51F2F����������������;C1363BFB-193E-443A-AD0B-8511BC409A6F-29548-000069B198A631CA����������������;E356DD92-C0F9-4B5D-A211-BF39349433F9-39289-0000E9437ACCF231����������������;AE2104D9-B13E-4B14-8BAB-AAC3D8FC40DC-35862-0000E8AD7D2189BE����������������;011BEE3A-A0BC-4226-8CA7-E8E364BF9B8F-39289-0000E916B841A7B5����������������;75D3E968-C599-48F5-9D1C-F977157F4291-35862-0000E8D3F98A5DCE����������������;E8447E0C-376F-4BE1-88FB-A14AC09960E3-35862-0000E8D1DEA7B30D����������������;B4F89CDE-801A-440B-969E-B64590186D69-35862-0000E8C65BD08A75����������������;1B3A2DB2-462F-4AD2-8E63-A511531582BB-35862-0000E8B73E50FC4F����������������;3FFF6F4D-C0FE-4904-98E1-7827D4FEDCF8-35862-0000E8AD3A5FD212����������������;D0DA8E89-B9D2-4998-9F23-95DD3F815B1C-35862-0000E8A6A074A808����������������;00D96706-BF0C-46D4-BEE4-2857CF789063-35862-0000E87E2F6439E3����������������;32208EAF-B655-45DF-9226-55D78F3FB892-35862-0000E87BB790E53B����������������;0B7C488D-95A8-4049-8BAA-8422C47BB507-35862-0000E8715334DD1A����������������;51CC2D6E-18E6-45EF-99A5-4FF6D23BBE55-35862-0000E86BF410B247����������������;1721C0AD-21A6-4934-9A35-C0AF5A6197E9-35862-0000E8582FC09B33����������������;67CB2F1B-C59B-4391-BFEC-460CA1DAC141-35862-0000E8437DFE65C3����������������;E49BA826-F158-444C-AFBF-1CA4D6D6540B-35862-0000E8367BC6E02E����������������;016B29D2-3E17-4160-82DC-006092961693-35862-0000E82491257109����������������;07FA941C-3EF9-4B08-844F-07C031BE3E26-35862-0000E80BBC6B937E����������������;2EE02F45-7841-41A0-A750-018CA401B0C2-35862-0000E7FB5A9FB437����������������;FBE60D08-3EA8-45EB-A97E-8900D766368B-35862-0000E7E7482B1C1C����������������;44E6515D-E251-4175-9B8F-8294CF5BCF3F-35862-0000E7E14671DFD3����������������;39BD2F4E-7D1A-40E3-B817-17E9E855E914-35862-0000E7D3E6BF9068����������������;F76A522F-9997-4CF4-A4D4-EC5F801548BF-35862-0000E7B6F42BCBA3����������������;4432BA72-5B16-43E1-8FAE-C9DB651AC51B-35862-0000E7ADCFEA1C98����������������;949F4C82-6AAC-4CDB-A190-63EB00C81A5D-35862-0000E78DF34A65F5����������������;37C2B011-5587-42AD-B6F5-E2FD07E267E8-35862-0000E6D9B27AA223����������������;50233FD7-2823-4014-A50C-15D5CED50E6C-35862-0000E77FA392AB78����������������;1D033B45-E2B1-4EFE-92B1-5DE8681F61F7-35862-0000E6DE7A0CC3B3����������������;7A84FC86-36E9-493B-B9FB-A28B63C1F9C5-35862-0000E6FDE0068401����������������;9F7F1C9B-8752-4969-ACB6-46386249F9BA-35862-0000E72809E9F8C2����������������;AEE77F80-5E50-4A57-A909-0A342561B8F1-35862-0000E71BC4FCE99A����������������;259ABD1D-DCA0-411F-85F3-2554EE05CA0B-35862-0000E71385F4E1E8����������������;79085DED-F38C-4141-B3C8-ACCE9C02F7B3-35862-0000E70831DA0DFC����������������;E6893B39-1C08-487D-BC79-EC6F986BFCA4-35862-0000E6F3C79F84A3����������������;7888F9F4-C832-4179-880A-C90CA687A5BC-35862-0000E6E7B2620386����������������;D91B76BE-DBDA-4627-9D50-7A221D5C4584-35862-0000E6C9040FDCBD�������_IMAGE_VISIBLE_RECT_�����{{-167, 0}, {429, 779}}�����_LAYERS_SELECTION_�����8�[56c]streamtyped���@���
NSIndexSet��NSObject��I�����GUIDES_INFO8! 0@P`p�������� 0@P`o��������	COLORSYNC00appl mntrRGB XYZ �acspAPPLappl���-appldscm�desc�ogXYZlwtpt�rXYZ�bXYZ�rTRC�cprt�8chad,gTRC�bTRC�mlucenUS&~esES&�daDK.�deDE,�fiFI(�frFU(*itIT(VnlNL(nbNO&ptBR&�svSE&jaJPRkoKR@zhTWlzhCN�ruRU"�plPL,�Yleinen RGB-profiiliGenerisk RGB-profilProfil G�n�rique RVBN�, RGB 0�0�0�0�0�0�u( RGB �r_icϏ�Perfil RGB Gen�ricoAllgemeines RGB-Profilfn� RGB cϏ�e�N�Generel RGB-beskrivelseAlgemeen RGB-profiel�|� RGB ��\��|Profilo RGB GenericoGeneric RGB Profile1I89 ?@>D8;L RGBUniwersalny profil RGBdescGeneric RGB ProfileGeneric RGB ProfileXYZ Zu�s4XYZ �R�XYZ tM=��XYZ (��6curv�textCopyright 2007 Apple Inc., all rights reserved.sf32B���&�������������lLAYERSvN'$
'V*�-�0�45�9';�>�@�DGMI2K�N�QCT�V�Y�\�`Tc�f�j�n:qxt�wnz�~��s�W�������q���(H1	magnifierd';CD8727C2-6F67-41DA-8C2F-CE505FAB2C7A-33087-000042107C96E923@x���Kq�o�֮坧�\��c� S�Oz(H$H�G&C�'>����F��&����͘5��R���ٔH1�����z|�u*����y}v�n撰,[(��]���)�r/�ҙ�h_��<�����xx���-�?�7�|�T�>�sC��(eOF�=�����nj�gvk����C�����"B���)�%2�I%b�4�7)ua��as�<�8�Nhl A��~zT#�9'�$��I�3���/���y�M�o�~=�v�,��A7��p�kom�U���������EɃn��f��咑��7��0�ˤ��"�$����j���Y7z�Q]�:|�������A�������~/���B7�n�{�gϗ��:��J^���;��0�Q/��.wn{<���.�4J��J�y�~mu�ۓ�w��$E�z�����cݭ(�mD��a�q�qܯ�:P�@p�R@w�}��+`�dPn:�SD ��:�h&�a��a�J�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���!plus-circled';073F11BF-5069-446D-96FB-EF109F02CCFA-36602-000097AE2DC51F2F@Q�x}��KSq���6���l&
	������mJ]�C-	r7�
� �n"VDuQ*�jEP(QPi�p7y3e7p�9w��}�∬���>���S�[v�k=x��L4���83v�q�16U��"N�c>�����HW�����:\��T!��p��O������*����ǒ�hh��^7�ZA��b�^��eH���M���~���;��/!�:Ӭ�aU��]>�īʟC�qT�ds+���O���U�*b�P�0��ć��܀���K������N�;��v����n'�>���*b�lH������:���Q:��L&C�����f)�������u�#�S�êHeȞ�-�ڞy)�JQ2����������ǽ8��𗏵/4酇���-�w]�bǠc{ح�aU��4���r�-����9�p�\��mS;�R�*Rj2X�#���OoY:G�L�k�p�Θ�
�����b�Ֆ�G�l+Rܯ�*��d�y�3h��tt�eeG��ˇ��(5����7>͹,���W����0�.Ci���f�۲vK`�7�8�*�vJ�2�����x�p8%%��(^��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���

Untitled Layer 24d';C1363BFB-193E-443A-AD0B-8511BC409A6F-29548-000069B198A631CA@y@x���k�PƓ�&%�c���:q2���$��Ip�"d�V������"+�A7ġ'�Mr�.�Bi��������wy�BA_.���N���h4��p8��xL����3h�vg�6�#�L&i�^�I"��Q�ֲ��f��u�6T6���f�E�`0�_��t���n��r-\b*��\쏃v��R�ոƇ��~�^�T*u���&�	��s�E����p�j��c~�|~B.]��+�
�{�r�s]�:�ΛeYO���<�v;�G��aHUUo�ZQ��w� ��h<���j�^F����b0C� �b�_p� ����L�|�#�_�$)c��,��K����7t|��bA�R�@(`��{�E���x�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��!arrow-in-outd';E356DD92-C0F9-4B5D-A211-BF39349433F9-39289-0000E9437ACCF231@�x͏�KTQ�]h��
�(àLiH	�4A�1��Q*�`�(�F�&"��T���Z���1
Q۸p!��$�H���g��߁;0a�x���;s��Yq����o���Dėgr����>����龠cÖti�Sf���_/e��x�Ϧb�˙�{���ذ5�����[q4�w��
�О:�!���K���f���57T<Sy&x{�6��B��
��v�j;�͍t���'b~����f�T������P8��V�6v@�E������v��Noc4YD���N��M)����͂�m��7D�^s9[;��&��x�w�?���zcB�ʰ�m��˗D��<7��>٦��t6��c��҅K�6ӹV�$\8-�&�|ǡ&�J6^�F4�a)/�B_B��/XFЩ��ڷ�
:6�~	?��~0�o���x;�tl"fb���@��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��)�Untitled Layer 18d';AE2104D9-B13E-4B14-8BAB-AAC3D8FC40DC-35862-0000E8AD7D2189BE@�x���KSq�7��w]��F�у��0�Й�_Pa��PQ
�]�$�ʼn�EV"Hk�}�=�bZ�R��z*��t�W./�|�}���{�C�n&	�^��U��|>3[�Ba�R��\.������
��Ul�����mk?�v���w��QG�fo���}��h�T�C=����y�	�V�`<�
+����!3Zٶ]�d2�FzWZ�?|���K(�J����Z�dF�G�$���q[���*5�Ë0�̢�o�חq~,���H�n�Z�6�C�z�����Bf�����Ԡ�d�B������3���H�n��N����H<E��)�^���Et�� 3Z���h�H�q"Ul�{��q�(w
��`0h���ܟ�i�a�l6[���z�=�6r���	2I�d��g�1yF����ݾ_=:�~n�W�$��~/i$�$FZI;�:�D"}ܛ$B(��7P
��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2����Untitled Layer 23d';011BEE3A-A0BC-4226-8CA7-E8E364BF9B8F-39289-0000E916B841A7B5@d�xŋ�
�0��VQ��P8�j�
�$'��#	�-�fDl���-:�7����+�J_AU���
��E�s!*ݻ���"��4����\i�����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��Z�Untitled Layer 22d';75D3E968-C599-48F5-9D1C-F977157F4291-35862-0000E8D3F98A5DCE@�x��OH�a��/u�Px(��-sA#����E6d�T�-c�?�S�F��b�Ny+��
]b˜��Q�?Lp�
FA��>=�/n��0�/x��yo��amj�N�p%��WEc��~ˍJe��C�W��_}!��d��kH=�d�O[tnT*h4�z�ͬ����w9��f�Q��{/ſ?�c��)>]=��%��X*�nT*�UIq�����+
���aUKC}�3�7*�����ROf�G�&/��� �$�I�zC�?Y��r�]<nhma������z$��qY1t��`3�fg19���1�(#���F��@��rb�ݎ��=�9+���0��&M�r�^���ʮ�z�8�Z�a��*o��&�l6�V
nT*�,����uн������3ߙq�R�o'%VBuX���{j�e|�;3nT*s�>{�ǍZ�ʹY��:lYnT*;��|[���?���U�B�M�f���Jy�뉬����l	},���[n�U��e�R
�򀾛�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2����Untitled Layer 21d';E8447E0C-376F-4BE1-88FB-A14AC09960E3-35862-0000E8D1DEA7B30D@�x��AK�p��]�7���{���E��{"CEEE�"��h��O"
�(((���?�	�������\.��OA���_{�H$:�~߽��.�v��C�4(����;득
Mŗ����k�l0��T*(�ːe�R	�B�\�l�t�T
�d�x�$!�"���8�%�^dC���~��I����F��݊v�9�VdȲ����-6���Ȑ
7�����je�����j�ڟI�2d�7�[.����"C���=,l�[L�S��u��ysRֹ�j���Ȑ�z�������Vd�z<���dQ1��d�d�
�j�z�X,����Ȑu��ϴ�x<��<χ���e���u�:�3���TI��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2����Untitled Layer 20d';B4F89CDE-801A-440B-969E-B64590186D69-35862-0000E8C65BD08A75@��x��MKQ���;������K�"�E�C������ ��M�dN��`��b��X���sh-؅��p���˵�l~�۽���	9�f4�5
(�:dY�s��J�I�P,Q��ýȣ���^+������zw��<r���,2���4R����8b�"���0B��� L&���.r}>��|>G㳅��
���(�c�|ꘅ��n�@�I�����l��d���#�0&��t��WKf�EQ����x���)��;t:΢�ΒC�x�C�o8.r�u�\ǣ�O�����m��8xWx~���<?�r�N��`0@�����
S�> �U��n�W�����\.3�!��p��z=�J%$�I�?�E5�%�\��~���R!�\�ټm�X��p������.ᘬ���F��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2����Untitled Layer 19d';1B3A2DB2-462F-4AD2-8E63-A511531582BB-35862-0000E8B73E50FC4F@��xc��T���g@4�K2��eP�.�|3� �hPp$��Fc0N{��~���:�\�Ĺ�~��������P� �ޞ��f��>�o5A�t�K���������K�������G�7m��PL�~�{A
�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��)�Untitled Layer 17d';3FFF6F4D-C0FE-4904-98E1-7827D4FEDCF8-35862-0000E8AD3A5FD212@�x���KSq�7��w]��F�у��0�Й�_Pa��PQ
�]�$�ʼn�EV"Hk�}�=�bZ�R��z*��t�W./�|�}���{�C�n&	�^��U��|>3[�Ba�R��\.������
��Ul�����mk?�v���w��QG�fo���}��h�T�C=����y�	�V�`<�
+����!3Zٶ]�d2�FzWZ�?|���K(�J����Z�dF�G�$���q[���*5�Ë0�̢�o�חq~,���H�n�Z�6�C�z�����Bf�����Ԡ�d�B������3���H�n��N����H<E��)�^���Et�� 3Z���h�H�q"Ul�{��q�(w
��`0h���ܟ�i�a�l6[���z�=�6r���	2I�d��g�1yF����ݾ_=:�~n�W�$��~/i$�$FZI;�:�D"}ܛ$B(��7P
��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��H�Untitled Layer 16d';D0DA8E89-B9D2-4998-9F23-95DD3F815B1C-35862-0000E8A6A074A808@��x��OH�q��֡0�PХ�Ӧ��t�F �(k�+�C�ilRm� �
�0��ꚒҡV���a�^�(a�Tl���>����A���><��G–M���n
�h�nM�7�E#�"ߡq���p������6�r�~�8�uh$U�N��=��]l׈w���~��SD#�2r�f<��ڈ�2u�$�`��4��c4�*7hV���˥��R�3v��;���
'��:��ˑ��񸷖�v��g��<v�Z�<}�(��
���r;��,�Zy*����ZN&��J�x�[��}u�S�C�FR%ZGs���<���7�����_�sh�N�u��t梋�H�\��wF�/����&u&Шm6��;ӥ�ÌFRe���W���r[~�����:cg��Jx/-d��x}�c�)آm�P�;�h$U��Ћ�����z+�]�u����Kh$U��S8�̬G����s9q�hّA#)��L��J�:v��U��-�b�X%�O������\�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���yUntitled Layer 15d';00D96706-BF0C-46D4-BEE4-2857CF789063-35862-0000E87E2F6439E3@��xc��T���g@4�K2��eP�.�|3� �hPp$��Fc0N{��~���:�\�Ĺ�~��������P� �ޞ��f��>�o5A�t�K���������K�������G�7m��PL�~�{A
�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2����Untitled Layer 14d';32208EAF-B655-45DF-9226-55D78F3FB892-35862-0000E87BB790E53B@X�x�ѿKa�q�V�%hh��� Zggq�3�ApDH��[""��_d"dX6x45IX�Q�����x��>�4��]���q����Nm���Z-����h4����8<��T*5�����!�l6+�rٜá��z���l
esT��%�N��y��]K��c��8�Q6ǵZM�ɤd2s.Υ�iw�+�;��e�l��jU\�]	]6��R�H�X\	]6����}YD�C����J%Y,�2��"ѡ�F�����%�Ht�Q6���,� x�D�.es���$�����9�l����z���I$:t�(��N�$�X�[]ņm\����M,���c�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���qUntitled Layer 13d';0B7C488D-95A8-4049-8BAA-8422C47BB507-35862-0000E8715334DD1A@X�x�ѿKa�q�V�%hh��� Zggq�3�ApDH��[""��_d"dX6x45IX�Q�����x��>�4��]���q����Nm���Z-����h4����8<��T*5�����!�l6+�rٜá��z���l
esT��%�N��y��]K��c��8�Q6ǵZM�ɤd2s.Υ�iw�+�;��e�l��jU\�]	]6��R�H�X\	]6����}YD�C����J%Y,�2��"ѡ�F�����%�Ht�Q6���,� x�D�.es���$�����9�l����z���I$:t�(��N�$�X�[]ņm\����M,���c�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���
cUntitled Layer 12d';51CC2D6E-18E6-45EF-99A5-4FF6D23BBE55-35862-0000E86BF410B247@h�x��1Hq�;�[j�p�/p��!jh�;
:�!(�p�hth��tj鈠���Q\���Zz}ߥC-=������ߓ�-��Gx��;ޒ�wT؎���a�\�}�V�c�4���7f�v8P�d2Ͼ�D:��4�M����xc�Yv��
M��`0�FB�nW87��Q(�f�$�eE7b�vUU�-�˯a�L�X�'�-����E;�f�aWQ#������ �Ǒ�鉜F��7b�va��M��m��ކá�Z-9�m��8���o�0���Qa=�H��_�5�^�^��m����NǍY`�3)Xv��
��r��
o�����,/��?�Yt��7�T��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2�������PUntitled Layer 11d';1721C0AD-21A6-4934-9A35-C0AF5A6197E9-35862-0000E8582FC09B33@3x}�OH�q���-Hx0hY��Y
��0lcelBQ��(�СAv��E�A�u�67f8�r:WZ:K]�?9�wZ����Ź<��{>�o����;7�dJ�r���i1�R��� 1�
��>�^D�DF{��owr�

�W`ڭ���@h�A��N�y�m��e���	po�E>)��6_���~N��l�O�A��	U�y�´3��U7�=�,�%E�yϖ�Bh�@w�
��K��겭W��G~�d��ߔ��H8�O}-9���ތ���J��gkn�^��^![�Dy~]2��qoƍ!O;*�*�u�a�S]m'U����s��&���asw��������;�B=�"�ޞ�#���N��6���[q�?���\.ג��̡mwُO��ذ{?���&��Ƨ8f��	g�E���ăt�m8��`ii��
�awwI�Pc�6�?;�=��;��]t

Mx�z�c�%e�,J�Ū�������r��
_l�{�ptw���ߨ�e�®�R�/�{Tk�u,=Gё��I�/�y)ܥ�e2��?�-��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���AUntitled Layer 10d';67CB2F1B-C59B-4391-BFEC-460CA1DAC141-35862-0000E8437DFE65C3@��x���	A/�{
>./�&r��A��=��L�*��aYWƂ�g��ae���b��*�������	�;4{�#�ޢ�s�7��{��s�H���<0Â�zo�Xpޣ���=���΄|��*���bڱ;��I���$��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��&����0Untitled Layer 9d';E49BA826-F158-444C-AFBF-1CA4D6D6540B-35862-0000E8367BC6E02E@�xc����|�L�ұa)!.����T>����������??����oZ�$'-̭T�`�V���w`���;����c�[&��t������?s�<��@-(d6.{�l��¦��v�q���b�0 ��˛���;�lf��rP+�b�%`�p[�:�V0��[��=8�����_^?���]X���W�Q�j-@�`h�X������A1d�콰���X'�.�V0��ǻ;�?<9�a���[����\4'���/?������f �{zu��[�ܴ����/?>���90ܰ��l�5��z�?��`P+�������+X�@�wb�ó�`���F�s�Z���䗟��
wX�@���p3P�1�/�>=���5�f�
@~����� w��
P����^m ��� 3Af�� 5@��Ƨ5S�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���
 cursord';016B29D2-3E17-4160-82DC-006092961693-35862-0000E82491257109@jx��KKQ��qd.*i^����$��ܸk#��"B$��&R����E?@B�~���E��N�I�8��0�{��9'�N�D�Q3�&�Ba�q�sM������.ض}A�Ei%r��!�3,˺TUu�]׏h�c�f�����f;���0�>�K����Z�^+���%�T*u�ݗJ�r#�r`F2�<���r�|KF
�/�D�ۜ�d�ɝ�b��.V_��m�h4����C>�v���D����[*��8��p8|c�)�vX�Q �S�X,އ�aG�7��n��z���%��E���I����}<O��RZ��$��
f0��gFp3�̃WC�)h�P�����G�j���4�C(���[�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���Untitled Layer 8d';07FA941C-3EF9-4B08-844F-07C031BE3E26-35862-0000E80BBC6B937E@wx��kH�Qǧ���&+����Xin��%+��B��L��m��t�V���P��Vtі*�/}�"P�PA !]�P�5����yN��A?����x�Ñ�ETTtLZZ�,;Ik�ã�8g�@�Z#��	�����I iM{tF�]���X�d�}��5o�����k�85ť5�љ���]�������]y	�uWA���X��v��߂��� �����ri�.F�H(h`�cPu�	lo}�����㝒�3�������	C�ڙ���yjT��~�A���|30뙆��Aa��\��Ę��ge5�B�������0?������|��o�`���|�C.Vb�#�0�]�r�K���8
���|?��C��
��������i��Pm���(�/���
�A}xg�A��tb��m`ێ݇|Sh�=\��0���4Un��rb��X��
Zs���Z'�BA|�Q�f�:'���XE+kvc[�8����!�^�^�چQ΢�J�k���u�6�!����A3
�8��v�r�W�|���dQe���R��/))BGRR��D�e:��u�Ͽ�q68nK�o�-�e��R�C	UTL�;Z(d�#ݥ�T&��~����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��RUntitled Layer 7d';2EE02F45-7841-41A0-A750-018CA401B0C2-35862-0000E7FB5A9FB437@�x�NKhQ}���O3i2��Z'�i�Hn�݈B�Pۺ(Ժ.�(h�GW%V\�ٹ*��"�X�X�"C! �ВՠA�n��1�k=px����	 �L��F�&��9�16a��MF"�mo��,�&b��].��av8��u��1�f<�+���d2v0�t�;u��A��7��pG��i[Q/×��>$O�LM��j�*u]��@�/w��m����p]WZ���T*y]갷D�O��(��&���C��\j�V�����TN-R���y�|�/tu~2�����oK�z�|����~T����N�9��C]X��#�������g?�?��}9'���rw�r�~�؞��K�<{������[����	�c�H���-�r�N�7>/�d�ݯ�Xz�N��|V�5C�]�1XMp���xû�i��/�`�A����a�5���s�_�N�Y��3�d�������޶����"�~�L���0
f�_`�y���-L�	P;A�����kP����^�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��#�Untitled Layer 6d';FBE60D08-3EA8-45EB-A97E-8900D766368B-35862-0000E7E7482B1C1C@�x��[(�qƿknD)��J�Y��S��BJ+�)\�q�F9J��W�H͍h� e�֖��0
�>�9���Z�o�SO��>���s�ܤ�jyVl����Cp�OUeK�?���`��;����҂Y��/&"T�cAU��鱟�����{p��������c���$Um���t
��Cư�,�ac����P���ȏ�z�&���O]AB�۳\�ZƠ���&��9΀��1�Q=	����]�U���Q��"Y���x��1�*��]�ڃ�Pg�25�$��.���"C�9�}��F��L�Ҕ	ʻ�F�Э�B`!Í7��ej�H����ޏ&�Ю
A`!Ã�B�1��Q����1h����.bz�Q��,C:ۭ���j+��<�"��>��:c���BG��\��D����6�g�&�Ì���һ|��@38+�_}�\�)��8��v�48�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���Untitled Layer 5d';44E6515D-E251-4175-9B8F-8294CF5BCF3F-35862-0000E7E14671DFD3@�x��]HSaǝDb&�ЎzQt��Vv�7EDwI��}0!���&fB]K��M]Y�3S7)?V�N.�Μ��<�pn;gskZ���@��y�E�"�ß��<��yy�y�E��ׄOx���8VRRҔ����

vu���҅������BO	yyyykYY�	@D:TI�^�YYJ�3o2�y73�l�|��i��džնŹ�,�"����+��v&�c>���Z(��\�t�}��D�ÕęgcBA���|��e_N=
n�iAi7�iշ�V+��, "A�,m���mg~&�����iF�Z��"�Ũ�r��, "�"��'F\��ί�(�%%D3|�9�J�{���q���@['9Ӱ����~��M�'��w��GA���ۍ�)J���7"RMq�2j�H �pپ���B���/�y�aԑ�mf��Y@D���6٬N���$����k�����#?�8��-�]���m��a�D$�5�Gn-��7|����:�_�D�$fu�
��̀�t�Zz�6c�4d�����f-Ia-�Z�B�e�Z�����g	j�Gj���?�oj�N��H�����Y@D��n�(
�t:��j�J�B
���r�T*I��=����h$�B������ �eY�p8Ђݎf�h�z�h�y^ϡز}�Ed�`��Rp5X&�Hn™s�߆^θ'�W��;�'�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��P�Untitled Layer 4d';39BD2F4E-7D1A-40E3-B817-17E9E855E914-35862-0000E7D3E6BF9068@x3W�2�KLJ���TpoS��_����/ϯ�����O�.����<�:��?H���*P9�5�����w�O�s����va�'g��|f�������:ian5��o����ͭ����jƁ�]p�᥷�X*}{���Ggp�r�/ �@-( �J��;�?<9���~�Z�j�\������x��)H-P
��U�����.�5/ �@-( �^��LJ{�?=���P܂����G���@��_^�iF���~�c�;�Z�jAqN�??���0��0�{E���'�
;_���D�I �_^_�0�ps��%a�=��/z�_���R�����@�`��=�ק����_43<�O�S��
L���A���"���oo`���:�ی�����]��]a�F&��h�*����<�2�A~c`����.���]��Ud����kN.
1?�[��T��"��	00!(O�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��:
�opend';F76A522F-9997-4CF4-A4D4-EC5F801548BF-35862-0000E7B6F42BCBA3@�x���KSq�G%�<�"�@�@�A�EVӴ_ԅ]T�+#(�Ғ��F%!j�,m�/�eiYs��E,
us��)���E7�O�s.|=7�������g[����<��Jdֶ�=y��P;���
?D:�ǟ�ſ�A0+�U� 9څ���x�T�����ٯ����|���{̏�r��9��X��O�>�RQp�k��?��_r~z�%o�VLO��RQ��{q�s#�
9{�'��T�!���T�t�w��%C9�V��g�߾��kvJͤX�jyc�r�TC,��₼�y���ӵ���N97_,�t�kq~��fR�ku��N9�=����'`^j&�Y�)yw4�fȹ��aL�m��u�y���׳��>>Ɣ�cȹ��&�ܷ�y��*X�M|h�d_�!熳1hUL���&�j��Lv�dVW��#��+K�~�6�
�Gt{�r�����
eέko�.��{��dB�ݲ�o��Wm߱9�BaNf�mE�l�x��`�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��"�mkdird';4432BA72-5B16-43E1-8FAE-C9DB651AC51B-35862-0000E7ADCFEA1C98@�xc�ui�Pce�Bb0H-P
0Q�)zys�Wv�� 5 �@-(�D���	P���x1H
H-P
0U�){|i�['��� 5 �@-(�L�����o[��Ԁ���s��g6��~x9^RRԂ�b5�N����R��ѹM �5@-(�\��������[�?������
������*O�m��.횇���{i'�
R��<���O_�����ց%�7ή��-UyZ���@��y�����_�:����8�J����A2Bk�R���:�E��;����yQ��m���w��zJ�m���	�ΠP`r&�N�t�0���
����9�����֪<=@���3e�Ϩ��
���߮��㦄�?�n_�>��,8�V�{2P;(g�q���߶���30���mH�Ը��2�������&�0�wj��w�T9��Æ2��������streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���
�	arrow-090d';949F4C82-6AAC-4CDB-A190-63EB00C81A5D-35862-0000E78DF34A65F5@��x��M(�q�wɅ�˼���I�2�K!�<��0��PR�8Ɋ�֒��ppP��_����"Y)ٓ���w���ԧ���ׄ�ޠ����_���./Y��+�k'��L�*jreO�A��x�A�r����T�$�+����|�O��p�w���"+^v�e���r�7_���;��\'�-z�N�ioO�C�_�Ɖ�	�vN��u��vg��=}��ה�n��z�m83���Ρ��dm�8vYp8!�;��T�f�*M\�p4U�g8S��QI'|�ո��n���V�`q����*�Eg�U�oԊ�G��R��L�j��qBٔ����x��꿈"���8=z�+/V|ș{2��!�Ajɔ_L"#�4�w�U��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��dhomed';37C2B011-5587-42AD-B6F5-E2FD07E267E8-35862-0000E6D9B27AA223@"x}�_HSq��������)���V>,�-�%F�i�3�|����p"Z$�`�A� �R�H,X)F6�Ejɔ��Ʒ�ҍ�{v~���l*����xu����O���t�w��G��b���O.m"����m^����ҳ�t��̹����y�����#���Y��2j�>��֫\�Gz>o\M�/������Jho��.�%�ۡ[
��7��swi�O�G�3trm�H6"���ƌܨo������\P�G�A��m�f��c�Oq~�Y�ד_ܹ�oP�G�Al����y'B�4�%���R-�+?~[�wS?���W�l��t��A)��U��Uz�eI����|����.O�71����d7�ٛ�T���j{%����rj��~�����k�����qA2��<1(!�Z;^'��/�H��Wz��K*�@�A�'�ޟ]7�M��u��|H�K�<2��<1H�Ju���c@�v�kQ;�5S�K`�gwy�R�?
S�L�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���Untitled Layer 3d';50233FD7-2823-4014-A50C-15D5CED50E6C-35862-0000E77FA392AB78@Ȁxc@|\�����z=k+nop935�|Y��J���P	C��\Lg��L ȉp)e�hT̪�YvbE��g�|�}s�Ǻ�^Z��xU���@��-��g@�D��%���{*#&�����º�k�O��ye����~~�����Pew��`�
X��,�E�3"r;�&��ߴ��cע|�kJ���v�������� 6H�Dx�$���R�s[s�&�y�t�h�x���"Pcʲ�3�N��|G��w�z���@)0��T��RI�5�I�ШP��1
����X̂,�3�z_�k�G{��Ā�` �Ϯ`�+g�j���@!8(�Q�9+E�:��� �Mn�x�3�$��Uq.cY{q>6(�P9�|g��������� 1
��4(�rE�+TĹk減ʇH
�����#X�̋MI�-
��jG�?�F|
P
e����E;��'&z���h��	p1K����O�̻-Q���L��j��{I���x����8�]�ʬ7�$�LH���Ց�rffb`j�:O�3_�'�џ��������M���l��l����S���1�ҙi4�N�/��a7T���a��rW���*��Y�Ǯ����~��a}�.Le���7�P
�4�i*�+~&);%ΜS�ee�Bg
�����H��r�2
���"/x�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��folderd';1D033B45-E2B1-4EFE-92B1-5DE8681F61F7-35862-0000E6DE7A0CC3B3@;�x��]H�a�
Zf�
�dwAQ�mt�PT�E7%��"!�i.���u�:0�l�}X�ln*L�,���hQ79�g{�ٴ�w�Ţ�^�q����y��:al��]�`S��Z��j���~��s���vl�-�"��C�fl�O[��Ej�1��M��/:


K�de�*K�d�{e\Y��ݻv�">Ü�NlNt�n|�x��t>�?Aȥ����aO{:�ԤV\��v�㠀1�F(�Բ�S&$��ĈD����W�g�T{�<��L~�[��z�E���		��7���:H$�k��e�:ݷ���Bvel#�ɧ�4b�#d�L��W�w�ƌX25��])��zću���ü�P���h��ozn��61�mClHM4DK4`^�\���j�������6�(
���yq@E���s���\���l٪�2W��{�����Z�����l�
�:��Z�%�}sB�o�_�
p�v�K���3�"�c���9������S�<�MFP���&v��A������5՞K��ݿ��sם>�̱Ѫ��+���f��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���@lockd';7A84FC86-36E9-493B-B9FB-A28B63C1F9C5-35862-0000E6FDE0068401@�x���+�q�7��ӌ�b�y�{7�(m�a5��"5��P�Q.�0���YQ[�9�fWRs؅B"=~�_-{m/�SO��|��}���E��n��:\�տ�չ:ʟ����펋��юE$�Rf����G�<����=�[�6\��w���=���=�����u�,��QyR�#���r�&{A��.�2�I�����UD��9��cЏ�+���n\x]\��P�UD������g4]����,�� o�>ɿC3�<�{|R�UD�&!��,�!]���	�A(�L��-~!q�	ڪ&dk�"��j��+*���,�#��
��/�w���փ��h#�
M>
�V�x>�2퇪���>$��l��JoDN��.�W�DD��il|�+s|FӢs�OʲJ89�]��E�ab�dߏ����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���
�fwdd';9F7F1C9B-8752-4969-ACB6-46386249F9BA-35862-0000E72809E9F8C2@[@xc�:�gY���d�-�g@8�B�,36Tڞ��x��o&M��J,��:������>ƒfT��\�gz�zv�����1�?��i(�bƼ�3߁v|>�����wA����v�������`����� ��z�p3f$������m(�wY�+s��������`0�����
���|�����6��3����I�����h]�˂��]��Ϸ���w��۟� 9�+D�.�y[�k���ķS��%Z�e������ ��
/�zA��K�����A��"7IzA��U���s��"
�f��r���,��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���
rbackd';AEE77F80-5E50-4A57-A909-0A342561B8F1-35862-0000E71BC4FCE99A@q@xc����b:�g�$�@٘-�g@�%	��I�l��=�Ɋ� (D4�1��YUby����^���
<
�c�䙞��`���;7�?��W����]O4f^���_w������k���X�OG;�<���6>���� �@�`0#I���[��R
��6���,������fj0�طWe��jGM��	�jg�_������W��ď���.���5�����pU��+�?^�����c�B�|;Y��Z���w���q�I��a�F�7��_���	��	�b�I���1�^�g~����B$sy��*W�3 �Le9b"
�0��	�����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��9aUntitled Layer 2d';259ABD1D-DCA0-411F-85F3-2554EE05CA0B-35862-0000E71385F4E1E8@�xu�kHSa�ϙ��q�m��r--�vqZ� ��a�5����*�������4�}0�K����("�T*5Mf�ι��V&Q]�N�߳��?�}.����=����
V��	(�g
��}��~�ϻ�í((g��jj�,+լM4=t�O~���Y>!��'��k�_��W[%���,+�*
��џ�FH�$�����)Bv���p	�o���{h�_�b�d� Q.�Zd���׿��hؕ����e��l~�U��[;u��1��QQID���ȚWДM���K�����kY�tG&��tK�;Z9
.����"�ܶ��*'t��@��ԺA�wϰKW;	�i�;۠�aAD��fܰP���ufq���m�1� /�Q�R����&�A��������~�l����Y
v��8�
���!Akx��)��V��}�Pd^v��Wh���~�΍@�?�	0�vWp�o���P��H�;N����k�j�"��U3�]�`R��k�<ˉ�N����6���[��j������ҽC-���b���U�e��;�C��o�wz'$��8J�‹�Ħ���H3{!ϴ ���-�8p~iu/�6X M���YT�!r��D�'��m�Sz��=�"�>;��ȡ7M�4�1�T�Z`��UF�?aI�/Q.?�'��m�lC;d;�'w�_w��fF"O����4����M�b�+�a%+H::��뎣�Hr�JI^$�a~L=S�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���Qdropboxd';79085DED-F38C-4141-B3C8-ACCE9C02F7B3-35862-0000E70831DA0DFC@=�xu�QH�Q�/&=䈰'�e�0l����#(�˴�K(5B��d��F/��!Զ�b���0�[�m�+[���6��ሆ�w~��Ѷͬ����.�لs?���p�
�/e
N}�s���Px̶��Ȧ�g÷;W]�!ܰ���x?^���v�.�wPl�J�`�0�OޅF��w*��H^�_��M���V9|��BN}�?A�BF��t�<�-r����2f�9kGZi��)���zN�2:80|���Ua0���&��k�+��no����$�b1zܤ�����O�zvΰ��Bj6�d�N&����MO�U)��t�^���C�D�f�jr��`8*ԧb�>���F�$I-���F�l*��Y�>zݮ́�PG{��qX^���EkU�]��x<��Щ#O�Z�Q!�v�x�P���=DRO-y۫Xt�����X�Q���Lyi{��>����U#����,2:��U��G��(X�5
[\�hH'�L��5����46�r�@�[�q�.�fҤ�!9��C���7l�tC�����s��=2�d�02:��?1�Ȯ{��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��)
2asterskd';E6893B39-1C08-487D-BC79-EC6F986BFCA4-35862-0000E6F3C79F84A3@�@xc@��ґ΀0�N@P� `��R` >�Ϯ�?��+:�$P�� -�4ɐ�g�<;6s�[��؁�>�w���/LD��Aj�ZP�D��3������J�ڛ ��w�V�)�ѱ]9k�M�
���}�$Ԃ�}���Yp�����7=��������-���������'�Ar 5 �@-(�ML�Nȡn�Jƪ�u��8����yŽ�v�o�i�H���+`�0�q�9c�z����k�A����J�Va
;A�2��+���yc1����wLk��z����H
H-P
�m:c5��O�7��κ�_*p�M��#_���Abf���7�r�'H-P
��=c<����s?%|&��7*خ7��O�Ew���@b 9���KX������H��*���
��k���8L��j�����ť�~�`�ݿ��.��Rˀۇ�`0L��ν���J8�����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���#opend';7888F9F4-C832-4179-880A-C90CA687A5BC-35862-0000E6E7B2620386@Dx��\xwm�t��D�����}����p�����03P+��<2���P�|z	�X��¼��@��L��7������5���*!�o�/�o�.��%)�,��.{��ц��7畁�_�~ �
�ޘ]���r��_N,���b����?U$�����������?n�qkQxqI�1`0\�U��@w�������(�|e��4�v�k@w?�2�-�߭m&
�H}	�
 �N,��nc���w[{��Ǻ�jS5�����^��M>՝������,��@��/x���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2���XUntitled Layerd';D91B76BE-DBDA-4627-9D50-7A221D5C4584-35862-0000E6C9040FDCBD@@�x�
 ��op��r��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2��MASKSPREVIEW4�@@4��x�	X�]�wi If2{�4)�2f3f�L�<���B��S%$c��T*MBBf�B�����߽k�z��=��~�y��^�Z׹�a�{����+��jj�'����k��W�7�\-@�-�w���0��m���Ura�I�H��ٺm?]��	PF�^��^a	�Tâ�NT!�����ܼ���'��ܥ?m��K&�399�4۲��"��d/ڱ��e��ֶ]o�Z���ٞ��W��,�ž��w��,L�2bhCN���Hx�4;H��n/Y�A�ߌH�����e�r��Oo�{���Y�L-���/t'��|�L�e�r���B4l=.�U݋}[ �A.[�T���%��Wz��`ӡkT��tʈ� �-J�e�j�w��ы�U�u4h�uʈ� �-J�w���|���Z���p�γ|D �lQR5�f�>e��}X�6wX�O}�����D �lQ�A}�Y/��)�}��z�'��q����J=��r��%U��h޻�z��-�u�C-'��@r٢$5�:�jZR Q��T]��q�b��\Fm�e�?E
�ְ�<e�)�q}��c���=�o���Q�V.�W�S
��ئ�ia��z�0}������E_����@Or��[]MM]_W�\�Һ����/SJ�(�W�r	-M��{�����JY�b�S��m�q{7��r��O��w�5#�䆌���ƜX�-�o���۴������n�~ɝ�Li����M�qg/e���.�(��nʹ���_���g������薗WJ;�J�LZ�.���o<�P�Y��G��d�E�)��&�~�2�`ʠﯗ7S���#�?
�H_ι��'\>���ĘT��s!3������vv
���e�1�u�|���W]�/g�S:/���ӓ�/��귚>�\E�O�f~MO�ep�"��RϬ%��)�Q�}L>��>_�,+�N,����I�Q{|�콈>x/�Œ��I�YA��&%�����E>a�@V�������?�����N���"k��(c�O��(~׬�f�knߥ�-�O�kn�#��j8�gP��c:�\�QA(�B���i|�}�>�(7j<$r�o�5�~|{O_��F��>�C���[��O��C�J�x���rw/%�~R�T�*l�SWӌ�5���x��
��1���C-�7�R�mْ�գ����{��2S�:����w΢��sD�iw��8��C!�?� ðJY�(���:��]���ĘQ��{�7�$j�,��ޙRn�Ͼ�$����ؙ�Ǽ�/���z��ta��f�[�
��|�}�]K��7��Og7ПC�{�UȦn�!Q{��m�P(�w�,UBۚ�2�M��U��m���JA)������3�A���n��3��H�1�+�CB�9��5qp��SZ��3%j6u@���/����YSđ�%U��!�q�3u�{�a8�'��W?�������֜���DL�Ӊ�?�آ�J[��Ff�=�:���:��b��%��!�u��c:��$�!�lQ�VE��e��1w���z?��G�R�1b�ڐ�\���ve�N�ۻJ-W�Hm��1�C���f9�e���{�/}��� �tw���.�Pg����A.[�T��riS�Ȍ&^�d��1��c��fz�}OD��;������EI�����^1d��aF�n�1�N=o�0��xBbhC�lQ�v�Υ,fHK�9�Y��S�]�9�>'�e1��˖<R�,%�n��
���c�Wx�N�q�)�$
}+g]�Ia�X�:�n��ڶk9u��y1� �M�����0䇆ݢ���(#�6N�W
,�z̝7��A��WD+h9��p�t7�2��y��rՂ8�rpH�6oY�xї6l\�JB,�6�<wl��W�	S�*	���dB[~9���yxl���%!�(�6��O����{,x�.N� �-JB�1z"����{ ��e��;yꠘ��xq[L��%��;H�ސ��026��|�H�#Ynj'�_i�@-�L#������ٓ��t}�Y�N&#g��O�Rj����ŏd޴e�E��j��}�I5�ē��	d1u
U?��jK$��S���ed���yo?�i��;�8.����?,��e��.\<��<�?]�Z��$�'Kv,k 9PFm�����tZ�P���Mc�֎N��cV�ϙ�qkF����Er85��8����ucR_oG/֎��}(��X����t�#�-r�rUYlU�?f��ԸN�l=��@2���—H]d��[��V��95�&.j�@
��Kpgrv�ʈ��E�訣i<lr�C�%���޴.$�sz��=�x�{ף�=�����/�Uh���B��A٘���)��Y��S�����ɓ't�w]z|��y�N9�Y����UhF=I�E�sn�kANҳ'�����r��� 3�8�2�

�)�4�>���t~��|��|�R�E��QVt��q*<ljQN2no��O#&7��	�te�E/bh;[�
[��4$U&J�m��|Fz6��i%����;�2
��U����.��K�I{��
�{c�(�б�i�A.[��HG�udu�%�6U��٤}\�&��ڐé�������dBDz�C�$7ʈ��S����JU��c7k]��ם�^w��Ԋ�NI�͇LV�.]��򑚚F��+��o�2)����#�z�L#�m���^��� ��Ff��KjjZu{3�������T{j�EՇ�R�Q����j��=ٻ~��"��di�&����7���z�G��$�iŭ�������,xK���RY�+�մ��p��N���g��j./h���,��">珙/�jaU��jN|I�Ӟ����i�,�?��[�/�jr�e��.��*7�I�բ$*3"��Gޠ2�R��I�����"Ta���]���5�r���YZC"3��L���Sc�
�Nc����x*3��g�
��]iD4-�R�{�����S{��,I�����ש�p*7�1�9�H�P�>���}L�&G�����C5&� I�؜Z��L�G���G��LW�J�=Qvp$՛M�g'P�Q�H�9�j
�,Ӫ�/���z}���Z	iTkׯd�{Tg|�Ē�S4Y�	�"�f��Y��*�+�J8�!u}���b�ŵm�Nhv�M=BH��C2LӶ�����mi��4�T��mҬ?v>����Y^�r�[��R��v�t�<"����ȟi���x��w�>�L��&;��T�>��͖o�F��Ҵ�E��oS�w�x��j�+N��k5��zL5F&-}��,%jŬ%j����x��	��\
��o��Mk8�n���"��mu'�E�R��"�G�N�結�<J�r���f]���L;iN��x�I(s�P�lU���di��|u}}�N��ǂ��ۦ�E���,�����9�OW����_ۿ�'_�\����˝u�|�
y�4�f��w���>=������|��I���wl<��V���8�
�+����M�ģ��9�xj�89�^�L	�Q±��ݟO:��*W˺���9֖~
����;�}���z~���"_���rZ٣�4��pʺԋP�p�dW��Ӓ.U�YW��*����q�߾�p�oɦzq��Vzy��0`,�����1��E��Ϙbl�P��1 #҃����+	�2��H�&Ƅ��]bL�X�6��/�y��ƻ��-�����D�	 =d��1f�U�2���(h�0Wi�Ǿ��ˈ�%9h��0�^��$���po���E�t�Y�3�*�}�t~���sL�8P�	+�V(a��NY����c�-�Y{��c��$�cW�,����N=���;�V�)W���V��|&��0~a�:��n
*:y�XK��ӗ��(;�/Bqn.P��+8�@����� '#���G;��T�rN^�X��^��t�ZB;�8]Im��8mh,���>]�K���ˣ�)|s_z�} E�Aa;�Xzv!�l�kb�����J	�F������"�g[�Z�PK�h�@���
��>�:��e��Ic�zQ�ږ��;���Bka�*�W�:����(qOGB�Å֬�����;���muZSm�K�{��o������:��	��H3N���#�(û5����I�1f��W/qx���T�3�LIF��<cP�-�_"=M���U
�p��gt~i;�qMog8��~q�?��5���q�f<wǼn�����֔�/�x{]��#���m}uV/�U��Z�1������]�O�Z�\�
p;�y��Ʌ���ݔ��A�C�ҷ�-�=|;���R��d���MH����]��m�
���fJw���\�)p��&A'f5�^���Iڃ-��J� �g�P�RZU�Z��>�g�I�&vq���pMs��]�Ihn/㭇�6��<�LIK��mWB�����+aԥi]���&��d<�����ܴ�Y{]J����J��[��7U.�]�ּF+ƾn�����5�[��ͥ�A����t��uX}in�f��*�XۚU��5�ު��V-�/m`(M�0�}]�.$���cT�
�nUk�Ў�'v���XE_ˈ�Bk�Ԓ��I/��w�	�Q�+m�&!��%�nRa͒a��#:MjnR���N�*�$��{5�'�A��zw��|pJ�'�/�b�n�I����V�0ss�Q�YU�����,�\Y�~u$a�zΑ��:P�������etO���񱅍�׎o�ֲ�ް�%�1oh^��R�ìԪ9�+^=9�a�}ӿ��w�R�4Y���p��s˗,V�-JR<Ɨ.�nвN���m��n]V:�e��^溮f��Jh��sʿD����k���€\�(����#�y��C��zi%���WJ���L�e��86�	ag)��a�qb5�4���T�e�y�g�EI6������`�����'�x��#�-Jjl�;/!�E�>&@y���,�J$<�#�EI[�\z��n��sAOztH�g��e����.~�m��P���@W�+�8!�\)
�5�]�6����х��C/��&����J��P�2�#��ߙ��k	�l�������6�-��o�C�|��լn�1�ܡg=(ogO|���q�!�mr57*�)��zx�/��Ǵ ��y��I�g�\����||a=8�E���~�C��]�܊��5f�\Vմ�`rf�O������4�a��m�J�
rْG��hvl\���~�j���p|̹�.��K���V֜ذ��RI!�}�va@.[���t��؇9�e����|��q�Or��%a��>�}� ��\�(��ɹ���r��%51ԝ�}�~A �lQ�b�Ǿ_/����1�<���H�����}��*�v��F�xh�(#�mrY��|��#�=:L��x�s���{�0]�"i���~OO����)���rӺ?Ǐ*L<�̱��_�������A0j� 1�xp|�\y��Qɵl�Ԛ�H:��\ʍ��.b����Ȇi�r3#]W�K*�4��b%5���]�)�ҵ�`�־$=�&�?]��uKna�\�X~��B-V��Ln�/�$���Dپ��n��M�
mk�U�W�S��5��!ƙ�P5�4�WѡK�c ��!��TW���3���׷Q��I�/ї���"��~��cP���w��ל��}��L0}��Eo_�ס���yJ��������7����J�e��z4�5�ۇX��p_e���3����(��]���>����|��r`]��%�iZg��OO(������lQR�f���W!��m�\�(i@�%�?�S�����\�(i`��+�'?�/I�
��-r٢$���d�?�mD�}L??���r"�Yv!lQ��6�2R�Q�;����Gף�	c�՚�oآ���o�?��<}L;3���G��%�
V�z�1c[�Fu0ݞ�����s��i�#aL�
��
��b����y��r|"u��E�$��s�>`��V��=��f��$��.ަ�\�ٶs�A#L�7Nf������e�c��a7��[�afiU;�q�-J���a���1��oU�R%}}}guuuFm���Ɵ-[�*QB˫dI��ܶ�s�V�Vmj�ʕ{�EI6&�߹�kÍc{���{��ctx���G��ݺ*�خ
7}��_�s�lr٢$�9]�ػeٽ�����=~�<�I���	�{�t�����%56�4��gtTh�s��?�x�܉��n�����G�{ܗރ�lQdž�F�޼�ދ�{_x-�z�a=w����u����lQR�J#���l��{U����W	�o��9������`�#�-J��Ƞ@��c{�Þ�
L�q���g�I�O�
	zv�ȶW�wI�G�EI���F�����������#8R���Ϥ���X���Nװk'#��%ٚVt���k��{��o��Na+F���M��fd=��}����\�(�c����}l����~�ډ^>{�&�qh"�;7.��s�DZEIvf]��Fz�.�r�F����	Ob^�F�&D��{���#���G.[�ı��z�������}E0��]�?�N��C.[����1��޴s�N���M�6�…i�ܹ�t�Rruumȩ^��x��T��X�T�				Fw�ޥ�7o҅ӧ(��(�����W�����i<q�$xx�2f�55��<��Jn���)<�x�/�/S7��.8���?�5��|��q�|��:^+�{�Z�d���7))�2�| ?棝��ǩ*�Ӷ�4q�N�y�zruE�m��ۧ�Y;�����c��q���:����>}�.P<v�_����h�/I?�w��o!,�E��v���f�}��8N|y.���w~,K�>�X�3[����c
�U�#���Fq}r��%1���l�x��>�|7���EUi�M��l���Ǽ�_�͐S��qˢ����:�UhBw���c'�#��1Ų���
֙�P�
k�ާ�u��[��ˢ����:��g�02Fw2;�e��O�>��`�9W��s�����)>��//9��Jy�G�k{q�?MU�Tq(]�t.�V�C>�jР�|�c[�}��%r�*W�2e懄�����%K��q�#�RT��e�����՛_�D	�>PG���R�/�>bcc�N�:󵵵E���r��|Ԡ\�r�q,�Q���ŋ;b�:�hg
����>����aÆ�׮]^ĹY���IJZW���h��b���Gs���k���=Mi]���z>��y�g��]�u湏l|=l���.n��:h�Zܡ�'��hG��c����V�M�l� g�c��c��/'l�Q���q���#>�S��o�o���%�LJlU�>�]E��^7��ٟ�%���8��G��%���f�3�OO�����3��:��W��Mr��x��2�G��E9�q��U�b��G�L�20����>��y�8�c�/��|�8,�.&im_CcGﺚ�k�M�9c��d�2՘:L}n��<���1�@�*L%���I�e�
Ley2��O�jU�Z�w�ڵ���|U�~��M�H�����ѓ]_?��:@1��EI�O���J�����w(*4�^>}*@1�9o{H�e���l&JG�ߣF#w�٠-Ԑ߽�w&؍�G6�vQ�!Q��^4|�]B.[�T�z�t��;�"u�uR�w�r��*g��jUn>6�-Jҵ+uZ�z,:'g�7��F�����'JK}C׃��Q��	eʔ�g+�n������.s}�������Rz�gJM�@�>��sg�de��K�2�u�*�k>B�e�&�UO�Ŕ����}�"�����G��l�1*�2��xPlC�[�=�
MNN&ed�+���HO{C�&�U���`i��>d9t;Y8m�:��Y������afZs[��
���|���y�i7d2����됙�lS���f�U����V����f��R?x���N�f�UH�V/)޳������ˁu���6�����Wq[�4�u~۱{���O֝�)ӥ?Y$U����|y��l�*j�k)��rDl��P3��r���	����0����i�<���HZ�S�QR����i�ſ%�q���ttt�V��`<op233[�}�r�H��
�Ѕ�8����EꃯOLb�\&&&K�l�B�bŊSئ$cc�e���ߊ��4����X��,8�@�1~������J�R`��h��+CC���G��!��\N��;��g�q����8U����|�QLL���ݻ{s�F�}ASS3�y*��������M����^��<�)ܬ�(�����νX�b�|�\��C�4bĈ�����9��5࢐��F��G�>}���W�{�~'5F���]����?�]�T�B�-�1�L~Rg�3ط�3�x���b/W�#���ʵ���&�O�ޜ����;�$�^
�>���b.�E��(��e��:�x�<����%���qƍ��[N8o��΅�o��Fzz�[���쏹l*�|/y��[-f��瓟�ߣ��w�mT�����ו�y�Z�]�V�^v�g�|�����d�����X�!m�ױU�sJ����ˡ8߇>kŹ3����U��Ҕס*�P���Ź�H���V!��o�:��>�+=�V���t�<�V!�΍�9��>��>�5����u\�p�uگk���P�������#���<���o�2a]��y]�=�M�(��2�|eB�� �éJ�'ks��0��@��#�I���;����Ȅ�@ӂ��~�QT�*��EE宫�b�FQ��TPNS�b���J�9��L(�f0-H�k/�☢J��g�Sa
 L�)<��7A%cCQ�^�1� 
:�w��^�벲c��9��9����|�]&���X��׆���lQ���x�{�������N}#�S�%��%����8�<n��Ǔ� �Ԭӵ�I���>^�{���$�û�����7�X��q�
���ޡ>��h�t�oht��[�M���_xt��;/�]��^�O�EI���������m]xp���%����O\�.�ә[��o�EQU�_�s��RPW�C�0X�[��0%Ȍ���}E8N��~ܧm8�2��mfLY�?MzLwf+s����C��[jL>_�oݺu���קd�iӆʈ�
9�e�3��ׯ�ʕ+�YYYt��aq�׶I���ڊڐ�\xx;5j��Jbbb�ׯ_	\�|���vs��7�n:����hȅ^>G�������L2ڶmK������`��a"�6�+�?ߵ����{�޽{G�Ϲi��)4o�Xʈ�
 xm�g__8���:))����O���]�WPFm�A.<�2�c�������	77��+W�2�@1[nC��sx�bL9�.c��ᾧ1K�5�@y���c�1�3:�U�߀��<�W?˟P��w9�mLsFQ'�3�1c���ŋ�4&:�"����:t���LKF���a�<y���I�t��
�1L�/_N�02��Y��={��9��n\����b�"F������ؠA��4��%�u!@� �1�!F��Y�f���]�@.<�L�O�N�Ǐ/ȅ���
�_;�Q�G� ��02M�0���g��=S�GQ�
�9ȅ����رc9�[Jl�ҬO��Ƴ��A.<�L��ܾO����r��t�־��}��3~`-j���`F��#G�������9��5��I��Pk}y�22�a���>O��	�S�}��/̨��	Y��A����s�I*[Vk�*�z6 �gd��>�?�Z�\xK3��M*�g ٬j@×�|E�����1د�`_Wژ���ad���Ar�ad*p�W9ȅ��I�
� F&���*��\x�T�@r�a��y&�?7�e��p%�tQ�����%%�V���7��Xm%�\�A.<l�oG��[&}K�=�I^s1��\��m[��J|�'|�{�	�w��y�n�7x�*�����;~F0���'�	e�d$��a��s�U��x����O&���j��V����k�kG���ɸ5��Gz��w��/�mE�H~i��$(z�P1���P�Pk�?)�w<��{�dmD�Uh��$��Hx��E'�?�&���cQFLƕ��[�fՕ\�۝�?��\�����QFLƝ16[��In��n/��'�.��ǏE1E�a���?$7_�k/��'�K���(#�<lYCr&vj��xǟ"x�@Y��I���a�P�Ғ�m��=��{��T���D?�Be�����H��('	�_Qr� ��\x�eJ0��Ex����!�υ����{|=ưL�2·�y��	EFFR$?'LR>����۷�9?��.6��&���w�l�6�|�t��|P^��)�͍|�z�&J�b�l}@v����#���[�6N�9s�9s���k9V�kI��[K/^�o���8E��|?ۚ�J*i6\j5l#�����, �����@W~�h��S��W5<?����W�w��p����6N)p�x����Z!_~�C���j��U;K����q�UT��l��q.�8���Qm#�q�|��ʕ�3�
Vg�l�*J蛞�g������t8kii9�5�Ϗ��=��[�l)����UQF�8ƅ��Lap�?����g�o9���"	�j�F����+����m�4S����g,e���O�rݐ��!����������eת?��~�����m�!�?���e��T���X���3��?
R�|��ΑH���Ru
��T���%��\h)^�j~RcT���������:���@�	E�_�������C���oW�wP�o��[�(�y��P~���>�􈀷V�Z�����:w��9s�N�>M'O���Ǐ?�%��8p����K�w�]�va;`Y��O�%xk׮=.''��|J���iқ/4uN��f�s�������)<���dffRr����@LSS�)2*IL3���H1MMM���h1�^�ۀ����8���ׯ����
'��ϟ?	x�����~��g��c�(�ӏϣ�c�
�c
�|���������b���K�{/VL��]�]1���{��x���ٸ'q��:q�����ȅ^>.�gŽ����|�X~�p��A���,�෸A���5��?��dgg�
�^�e��e��%��2��_�x�Q�^���������!��իJS�O?0F`��~�:����)��>|(�e�/��ۊ<�b�X�q	�
Ƈ[�]��ae����)r<�b��`L(
�1c��A������cBQ���p-���[]��u?E����ޗ[���q���Igt�G��^�<�n��ӻE(��#�����_p�W����֧s�����S��@\����'8;�T�d����(+R���vPFLx�*�ky����PFLx�*�ky�ׯ��o�Jē�%�����E[��yo� �(�Uy�w��<^�zA�T�\�*��*�rU�^�8U)��y�<Q)nʓ����W\�#nRj�*��pU��?E���x�M���@��*�6��@�wZ)�ѝ�I(�U+�qI�І�ƒ���'Qv�f
�;�5�&��Kލ�2bhCr��l#���<�1�5�
�5�5ꀭB(�a^�E��Xӳ^e�C�K�m�:��2ʎ�w�p��B(gG�'�!ux��f!�
%���7�fE���-�2��PΎ�DY�+D�V�K�ʞzՒ�@��B(#&u�[iD㊞+;W��@��B(#&u+�f-�E����S�mB��B(g^I���D�hQƳziM빭*K�M7�y}e�&ԹY�̳=(�bB��;�Y)�l�:��@�u�V!��2��r&7)'���DG���z�Q���i�Ǥ�|QFm�A.�
���<�L7��%�
Ji��-�І�N�cmD~w#]ϱ���2P�T�Brd���+�k׮��}||�.]�$��e��HJJ�wn߾}��;w�]%�7��.�_S(����<�e˖!����q���71��8Υ�����v�?r��+�r1��T`ccS����kl޼y�gLp��2��3;�liiY���_{>�],w�n�r�y�|��{�����YܦR�:u4|�p�������+���8�r�J7��w‰kܮR��2yBM�6���|���._̟6m�ϸ��{sU�x���������r]�4x�[�h޼��o���Z�!H��j�7��x·����Q%~�M6�/?�L�L����;fr���׿���i�ni0���N��	PFm���t��:T�fy�v_�DǛc�G�O��7G���횈6�pj阖u�����1_ߟ@�o��.gP�B��F}�5��r�"����W{_��ו���pjw�{~
e���8����U��]前<:&:\��{��Ց^�)�]�;��涉�U�|_�#�|��9և���&���(�Sa_5^ݜ�l&0Yӂ���K���B�FԿ��������}���߿/��Ễ�.>>^\�����on�[�*5���P�����:wUz1���"ӿ���V!��G���n��o����Vr/�"� ���tx�*TҲ��?��%68э̏u��� ��/ʈɨ9�&�
���0(����_�qނ1;�Yx��(#�����Ux�*�v�R�{`z��W��}Ȓ1��Q�209�+r�˖<�(W�A�}����X'�xwN�r�(#�6�pjni0�S5
���UJ.ձ(\�I��e���9���#�]��X���|�ϿT|(*�u�:� �1���87(��Y�F��#����c��S���9�k�Y�~�6"�vNS)�_�z��K�9����x���7/�?(��;�`
n��<N�#~V�m�7�k��'�݅O�>�����y��G|�|���'��O�%~ȓ��d
�\aD.���[o!����mk������@��?��y@�n�}v��q���W"�������y�ץ

�,ؽuݕ+~G��w�]��{/�L>���t%��&�����E����د��3>�7C�o>�?�sk��!ޥ���ׄӕ��&1���“Ǽ��+8d���~�;�����:�+2J�u��S���k�I�T)W1��������[ĝ�T�|��x���W%��|�(�jV�����8T��q;^ߕ�~�&ހ1c�C�&S��:��g4%�����gZlib/img/src/icons-big.xcf000064400000440753147361034410011251 0ustar00gimp xcf file0x�xF~L���R���X&���^,�����d2B�B�A
exif-data�ExifMM*bj(1r2��i�
��'
��'Adobe Photoshop CS5 Macintosh2011:04:22 18:30:18�0210�0100��0��gimp-image-grid(style solid)
(fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
(xspacing 10.000000)
(yspacing 10.000000)
(spacing-unit inches)
(xoffset 0.000000)
(yoffset 0.000000)
(offset-unit inches)
gimp-metadatalGIMP_XMP_1<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>

 <rdf:Description xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Adobe Photoshop CS5 Macintosh</xmp:CreatorTool>
  <xmp:CreateDate>2010-09-19T17:17:49+04:00</xmp:CreateDate>
  <xmp:MetadataDate>2011-04-22T18:30:18+04:00</xmp:MetadataDate>
  <xmp:ModifyDate>2011-04-22T18:30:18+04:00</xmp:ModifyDate>
 </rdf:Description>

 <rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>
  <dc:format>application/vnd.adobe.photoshop</dc:format>
 </rdf:Description>

 <rdf:Description xmlns:xmpMM='http://ns.adobe.com/xap/1.0/mm/'>
  <xmpMM:InstanceID>xmp.iid:FD7F117407206811B1BA95E37140A3C2</xmpMM:InstanceID>
  <xmpMM:DocumentID rdf:resource='xmp.did:01801174072068119109C4A19543BAD1' />
  <xmpMM:OriginalDocumentID>xmp.did:01801174072068119109C4A19543BAD1</xmpMM:OriginalDocumentID>
 </rdf:Description>

 <rdf:Description xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
  <photoshop:ColorMode>3</photoshop:ColorMode>
  <photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
  <photoshop:DocumentAncestors>
   <rdf:Seq>
    <rdf:li>xmp.did:F77F117407206811B1BA95E37140A3C2</rdf:li>
   </rdf:Seq>
  </photoshop:DocumentAncestors>
 </rdf:Description>

</rdf:RDF>
</x:xmpmeta>
<?xpacket end='r'?>
icc-profileHHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m��w&:;�I�]dr��D����������Y����H)9<�Q�c�v+������ʀ����U�/h&0text�	

	F"$&08&0H	�������ÿ��������ͯ����������˺�������
���ƹ�����������������´�����������������ƴ����^	�����������������ó�ƺ��g����������ͨ����Ù�ξ���g���������������ž���Ŀ���^�������������������û��������^�����ˤ���ˣ�𤢢��������������������¹�������������������������������������½�c���������������—���������þ�q�������������ú����������Ŀ�q���������������û�����������ſ���������ț�暘�������������ٿ���������������¾����𖗘�����ƽ������������þ�����������������������Ɨ��Ɨ������������������������
���¼���������������������¾��������������������Ĕ��ђ������������������������������������¿���������������
�����������񿽽�������‘�Ñ	���������������������������������������������������������������������	�������������������������򽼘��������������������������������ÿ����
������������������������������������������������������������������������������������
��������������꼽���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ��������������������%��
�
������������������������������������������������������������������������������������������������^	�������������������������֩������������ܴ�����ة����������������������^�������������������������^�����������򾺶���������������������������Ƿ�����������������������������ȴ��������օ�����㼻�����������ಭ����������ՙ�����������������ɼ�����������q����
������������������ӭ�����������෵���������������Ю�������������������ѹ��������������������������������������������嵴���崲��������컶�������������������������������������������
������������������������ʲ����������������ժ����������������������������������������������������������������������ݼ�������	����ެ���������������������������������ߺ������������������������ݹ����	����������ݹ������������������޸��������������������޸������
�������������������������������ู�������������������������
�����ḷ�������������������������ḷ����������������෷������੨��������෷�������������������	���߷�������������������������������߷�����ߨ�����ߨ�����෷���������
�������������߷����������������߷��� �߷������߷������%��
���������������������������������
�������������������������	������������������������	������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������������������	������������������������
�������������������������������������������������	����������������������������������������������������� ���������������%���""�#%'$��������������	��������r��G��"������� ���!����!����"����#���'��DHH�LHKHH�D..0image�	

�
&�.0&�.0'������ͯ������������˺����������
����ƹ�����������������������������������������Ų������������������������������������������Ŀ��þ�����������������������Ŀ����������������������Ž������������������������ļ�����������u�����������Ž�����������u��������������������Ž���������½�u���������������ƿ����������þ�u���������������������������Ŀ�u������������������������������ſ�u����������������������ƿ�v��������������������������������ƽ���������������º�����������������������	������¼�������������������������
��þ�����������������������������¾�����������������£����������¿������������������¢��������������������¿��������������������������
�����
�������������������������������à��������������������������Ÿ���������������������������������򜜝�����������������򶧭���������񢣤�����������������񴧭����ؿ�����������響��������������̯���zﱧ�����������e����ε��������ԭ��������������������~N������lx����Ʀ��ý�������������ս�����됡�������\������������뫦������������߾������Ŭ�����߯������������骦�������ڼ��������蝽�=��ym�˓�����������試��������������������rO��K�Ԕ����������姦�������ۺ������Ʀ��Ё�z����}~�䥦�������ۼ����������������Ƨilpx}���oim}⤥���������޶������i�� c���kafih{�o���u{ࣥ�������ܵ������c:u��«yf[Y]d{�u�t�`�_ޢ��������ݴ������ba[H9@ETn_STofg���lpmܡ������ڻ����������\;;9<;?HO\Viha^qv��lW}۠����ߺ�����YGFBqhILQXQr~��e���~^ؠ����������������������������@����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������μ������������������������ͻ����������	w������������������ͻ����������	w��������������������Ͻ����������	w���������������������п�����������w�������������������������������w�����
������ý������������w�������������������������������������z����������������������ɰ�������������ϵ��������������������������������������������ź��������������������������������������Ǽ�����������������
������������½�������Į��������������������������������ϳ����������������������������������������׵������������������������������㿿�������������������������������������������㽽��������������㽽�������������������������������Ŀ��Ū����
���������������������ɶ�������������ỻ�����������������˵�����������������⹹���f�����̛�������ڿ�Ե��������
�����K������i~ѵ��ɭ���ս������������멱�������Z���������������������������Ḹ�����������߲��������������������������ͺ>��ym�̝�����������������������෷�����pN��I�Ӣ�����������������������෷���ҭ���ύ�����������������	���߷�����������ť�������ņ{�������������߷����� a���hv������������������������෷���}5���¯�vXi�����������ޢ����������������߷����zoUFDA\�gbt����������ܡ������������߷����xHA5HR>EJ`g���������z�ۡ�����߷����pPMB��JHMUk�����������٠�����߷�������������������@��������������������������
������������������������������	���������������������������������������ﵵ���������������������������������������������������������������������������������������������G::����������������������������G::������������������������������G::������������������������������::������������������������������:���������������������������������������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������l����������㿿�����������/D��������������㿿�����������n4[-���������������⽽��{������������ܡ��y������������T������w���͸����������
������������m�������~rLXC������������������c������ïf���m���D0q�������Ḹ�h��F��u�Է�al����12=�����������ᶶ��{Y�׳W�ז���[qc[]�\��������ᵵ�z����虿ԙ���vx;����������������ᴴ�]�������ȯ9EDA>25(PbeG������ᳳ�!k�ĥk���y9��������ᱱ�#>W��Ģ0Dk?ޢ��������ᱱ�#*3,>NEP>�ܡ��
����ᮮ�#47=,!CR[T7۠������ᮮ�2<=A !FU]d)' "!"##!!ٟ�����᭭�����	���������������@����������������������r��G
��"
�������
 ���	!���"���#���$���%��%��%�%�%�%�%�%�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+��*��@2�@AABCE@@�20#folder_open�	

����l<�0#<�0#<����ss��}}���������~}|���m������������������}}���������~}|���m����������¾����ٌ������������~}|���m������
����������������~}|���m���������������������~}|���m����������������������������������������m��H������������������������m��_T����������������������������&
mm��[~������������������������������������{&
mm��]}����������������������xuR
mm��_}������������������������������pmjimm��k}��������������������������������Ʊ|}�~~}~}}���������ƒ~�{{�z{~�������s�~�xx���������|���vuvv�x�������v|��~�tssts�������y|��~�qqpqq�������x||��~�llnn|�������v||��|�deik�������z{{B�|�]`do���������shh��z�Y[_��������|xhh��z�VW]���������ryy��z�UTy��������}uyy��z�TT�����~�sxx��z�Tj��y~�~y{rxx��z�S��yw}}�xzrvvz��`�qy||�{tzohhz��ȗwn{{v�rshh�{{����oityyz{�zpyktt�zz���{htt�qrtpttv���ztkjjkklmnop�qxmqq�l}qwy{{�ol�Ij!j�i6���������������������������������������������������������������������������������櫨���������������������������ÿ
��ı����������������������������ÿ��ϲ��������������������������̽�����������հ�������������������̼������������������ਢ����_x�˻�����������������������������(#���t�˸�������������������������(#���s�˴����������������������q#�����ɫ��������������������������ɨ����������������������������������΍�ȥ��������О�ȣ�������ÿ�����ụǟ���;���﫣�Ѧǜ������Ľ���������ƙ���ν���ﯠ����Ɩ�����Ź�������Œ����λ����ﱛ���٤Ŋ����ƶ�������j��Ă���̹��������������}��ȱ��������������{{�ù��������������yx�ƭ���������������xw���������������x�����������������w��������������Ά����������������ڽ����������������������������������������������������������������������������������a�!���(6�����������������������������������������������������������������������
������������������������������������������������������������������������������̠�������������������������}����������������������������������������������������������������������������������������������Կ������������������������������������������Ӷ�����������	�
��������߻���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!��:6�	������%���
��������������`*����"������#��*���#��i���#��i���#��k���#��|�	��*�����+����*�����*�����)���$��)�����)��Z��(������(������'������'������&������&������%���M���%������%������$������$������#������#������#��e$����Q�!���0 �$99:;;=99�=;;:99$&./js�	

�J[./Jo./J����������ͯ��������������˺������������
����ƹ�������������������������������������Ų�����	����������������������������Ŀ��þ�������ぁ���������Ŀ�����~��~󐽳���������	|��||��||퐼�����������u��{z{z�{�{{����z{zz�{z{�������������u��{z{z�{�{{�z�z{zz�{z{�����������½�u��xyx��xx���xx푿����������þ�u��w���ww�x�������������Ŀ�u��
v�uv
v�z��������������ſ�u��v��������
���������������ƿ�v��vv�����������{uu�y�~|uromkkmq����ƽ���vv�������������º������o��s��������vv�������������¼�����n���n��������vv�����������þ�����i���k��������vv���������ń���¾�����n���o��������v��������ń�ꃂ�~{z��x�����������������������Ä��������¿�����zy|���������������������������������������„�Ä��������������à���������„���������������Ÿ���������������������������	������������	�����������������������
�������	������������������������������������ÿ��������	���������	������������������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������
���������������������������������������������������������������������������������������������������
�������������������������������������������������������������� �����������������������%�.�p�����������������p��������������������������p�����������������p������������op�opoppopp�opoop�o���������	m��mm�����������i�jiij�ijiiji�����������f���ff����ff�����������d�cdd�dd�ddcdd��μ���������a``aa��a`��`aa�`��ͻ����������	w��_^_^�_�__�~��^_^^�_^_��ͻ����������	w��_^_^�_�__�^�^_^^�_^_��Ͻ����������	w��\]\��\\���{\\��п�����������w��[���{[[�\���������������w��
Z�YZ
Z�d���ý������������w��Z�������������杞��������������������z��ZZ�󼹹�����������ꐟ����������������ϵ�ZZ����֪������������������������ZZ���������������ź���������������ZZ���������������������Ǽ�����􄰴������ZZ������������������½����������Į�Z������������ꢡ�����ɕ��ϝ�����ϳ��������������������������Η���������׵�������������������������������������������������������������������������������������������������㽽�����������	��������������������������������������������������ỻ�������������	�����������⹹�����������������������	�����������	������	����������������������������Ḹ���������������������Ḹ��������������������������������ߣ������������������������������������߷�������ҩ��������������Ҫ�ߪ������߷��������ҩ�
������������������������
������������߷�����������������߷���� �߷�������߷��������%�.��������������������������������
����������������������������������������������������������������	����������ﵵ����������������������������ぁ������������������~��~�������������	|��||��||�������������G::���{z{z�{�{{����z{zz�{z{������������G::���{z{z�{�{{�z�z{zz�{z{������������G::���xyx��xx���xx��������������::���w���ww�x���������������:���
v�uv
v������������������v�������������������������������vv��������ʯ��갽������������������vv�����������������������ȿ��ȯ�������vv���������������˨��ʨ�������vv�������������������̣��ɦ�������vv�����������������������ת��Ӫ�������v���������������꿾���������������������������������������嵴������������������������������������������������������������������������������������������������������������������������	�������������������������	����������������������������������������������������������������������������������������	��������������������������������������	����������������������������
����������������������������������������������	�����������������������
��������������������������������������������������������������ſ
���������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2.0zip�	

^.0^$.0^4����������ͯ��������������˺������������
����ƹ�������������������������������������Ų�����
����������������������������Ŀ��þ��������������Ŀ��������񘘗��󐽳������������������퐼�����������u��������𕔕��ꕔ��������������u������𧒒����퐽���������½�u�������쒑�����������þ�u��
������쒑������������Ŀ�u��
����
�쒐�������������ſ�u�����������
���������������ƿ�v��������������������������������ƽ����������������º������������������������	������¼��������������������������
��þ����������������Đ������������¾����������������������������¿����������������������������������������¿������������������������
�����
������������������������������à������������������������Ÿ������������������������������������������ș�������������������������ə���������������ٔ����ș����������ᨬ�����Ǚ���������������ߴ������ƙ�������������������ݴ�������������ř��������������������ߴ�������������Ù�������򼽽�������������������Ù�����������������ߵ���������������������������ݷ�����������������������������޷����������˿����������𶻗�����ݸ��������������ʾ��������������ݸ�������������ɼ�����������������ܹ�����������Ȼ������񻺺���������ܹ����������Ǻ����������ϔ���ϔǹ�������������������������������������������ŷ��������������������@�q�����������������q��������������������������q�����������������q������������pq�pqpqqpqq�pqppq�p���������
n��nn�����������j�kjjk�jkjjkj�����������g�g�g��gg�����������d�cd�d�d�ddc�dd��μ���������a``aa��a�`�a``�aa�`��ͻ����������	w��_^_�}�_^�_�_^_�_^^�_^_��ͻ����������	w��\]�{�{\\�\��{\\��Ͻ����������	w��[��\�[�[[�\��п�����������w��
Y�XY�YY�c���������������w��
Y�XY
Y�c���ý������������w��Y�������������杞��������������������z��YY�������������������ɰ�������������ϵ�YY�������������������������YY����������������ź���������������YY����������������������Ǽ�������������YY����
������������½�������Į�ll�����������������������������ϳ�ll�����������������������������������׵�ll������������������������㿿ll������������l��������������������������㽽ll�������������㽽llk���w���������������k������
��j�~z�����~}}|�{yy��~~j���������ỻii~j~~�j~i������������⹹hh||�LQQ�T�||h������
��g���Ucc�[�uug��������e�~�Uss�����ss�c�ssf��������������Ḹee}}�U������j�rqe���������Ḹcc||�Unn����oo�b�ppc�����������෷aa{y�U������m�ooa�����������෷``xx�W{{�{�j�ll`�����	���߷�^^xx�W{||�������}}�l�kk_�����������߷�^^wv�Xggil�����lii�a�ji^������������෷\\uu�Xxyyz����Ӄ{{�n�hh\����������������߷�[[ss�Xqqr����́rr�i�ggZ������������߷�ZZrq�Xll����ll�f�feZ����߷�YYqjq���qjfY�����߷�XXllkj�ihhgg�fee�daa�W������WWmkmjihhgg�feedc�ac``W���UVWVUVVUWVVUUVU�WUWVUVVU?��������������������������������
����������������������������������������������������������������
����������ﵵ������������������������������������������������������������������������������������G::��������������������������G::��������������������������G::�����������������������::���
�����������������������:���
����
��������������������������������������������������†�����������������������������†������������������������������������������	�������������������������������������������������������������������������������������������66�������������������������������������66�������������������������������66��������������������������������66�����������������������������66����������������������������������66�a���������������66X�=��������������55XX�`����������44C@FHFFDCBA@�?FCC4���������������44CQCC�QC4��������������22BBJ##�$JBB4��������1D�I%//�)I==2��
��0C�I%;;�����;;�/I;;0��������������0B�I%FF�F�4I::/��������//AAJ%88����88�/J99/��������..@@I%FF��FF�6I88.��������-->>H&AA�����AA�5H66-������������,,>>H&AA�����AA�5H66-������++>>H&1148���ϼ844�.H55+�������))==G&>>�@K����LAA�7G44)����������((;;G&::�Q���Q::�4G22(��
�����((::F&66�^�^66�1F11(������'':Q:XX�:Q1'������''665421�0//�'��	����&&:6:55442210/�.2..&��%�&%%&%%&%%�&%&&%?�����������������
 ���	!���"��r#��G$��"%��&��&�����%�����&���"���#���$���%��%��%�%�%�%�%�%��8�'��8�(���)�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+��*��@2�@AABCE@@�2./xml�	

�sM./sa./sq�~��������ͯ���~�����������˺������~������
����ƹ������~�����������}~�}~}~~}~~�}~}}~�}��Ų�����{��{{���Ļ������w�xwwx�wxwwx��xxww����þ����t��t��t�����t�tt����Ŀ����r���r�ύ�r��r�rr󋽶����������onnoo��oo�on�on�o�oo�n�������������u���onnoo��oo�on�on�o�oo�n�������������u��ml�ߟ�m�mm�ml�l�ll�mlm�����������½�u��j�އj��j�jj�kj�j�jj틿����������þ�u��iji�j�������������Ŀ�u��
h�gh
h�m��������������ſ�u��h��������
���������������ƿ�v��hh�����������������������������ƽ���hh�����������º�v����������������hh����	������¼������������������hh������
��øj����������������hh�����������™z���������������h������ž�����~������������������������������ij������±t���t{���������������������q�����‘�����q�������������÷�q�������u�����¨|q������à���������q������������|q����Ÿ�������|q���������������vq���	����䶑qv���������q����������q�����������������qv��������q����	�����������q|����v�������q����������������ÿ����������������������	����������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������������������������������������������������������������������������������������������������������������������������������������� �����������������������%�.�~�����������������~��������������������������~�����������������~������������}~�}~}~~}~~�}~}}~�}���������{��{{�����������w�xwwx�wxwwx��xxww�����������t��t��t�����t�tt������������r���r�ύ�r��r�rr���Ļ���������onnoo��oo�on�on�o�oo�n���õ���������	w���onnoo��oo�on�on�o�oo�n���Į���������	w��ml�ߟ�m�mm�ml�l�ll�mlm���Ŭ���������	w��j�އj��j�jj�kj�j�jj���ǰ����������w��iji�j���ɴ�����������w��
h�gh
h�p���ʽ������������w��h�������������棤��������������������z��hh�������������������̰�������������ϵ�hh�������ظ�����������������hh��������������ښ�����������������hh������������������������������������hh����
�������᳑��½�������Į�h������������������ᕶ������������ϳ�������������Ѡ������ω��Պ�����������׵��������צ���������ʙ����������������׬�����݌���ē������������ܲ��������쾘�������㾓������������Ⓡ������������������Ѝ����㽽������֫���������Ї��������׫�����������ܱ������⫫��ܫ������������ܫ�����܍�����⾇���������ỻ������������֥��ᾙ��������������⹹������������������
�	���������ə�����	�������������������������Ḹ����������������������������Ḹ���������������������������������������������������������	��߷�������������������������������߷�����������������������������������������
������������߷�����������������߷���� �߷�������߷��������%�.�~���������������������������~���
������������~���������������~�����������}~�}~}~~}~~�}~}}~�}���������{��{{������ﵵ�w�xwwx�wxwwx��xxww�����������t��t��t�����t�tt������������r���r�ύ�r��r�rr��������������onnoo��oo�on�on�o�oo�n�������������G::����onnoo��oo�on�on�o�oo�n������������G::���ml�ߟ�m�mm�ml�l�ll�mlm������������G::���j�އj��j�jj�kj�j�jj��������������::���iji�j���������������:���
h�gh
h�s������������������h������������������������������hh�����������������������������hh���������������������Ѧ���������������hh��	�����ﱷ���������������hh�������������������������������hh���������������Ǧ����������������h������������������������������������������������������럨����������������������캛���������߮���������������������������ڧ���������������ƛ��������ӭ��������ӧ�����������������������桛������������������������������������ƛ����������������������������������ӛ�����������������Ӯ������������������������������������	�	�����߮����������
���������������������������������������������������������	���������������������������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2	php�	

���	�	��������w��w�����"w��w���"�w��w�D��w���"f�w�"��"f��w��w�"��w�����w�"�����"��"��"��"	Layer 2�	

��F	�Z	�j�������|z{z{xy�xwwm�ijiifd�`aa^_^_\]�\[[�������|z{z{xy�xww,�	Layer 1�	

��|	��	���������|z{z{xy�xwwm�ijiifd�`aa^_^_\]�\[[�������|z{z{xy�xww,�./pl #1�	

���./��./������������ͯ��������������˺������������
����ƹ�������������������������������������Ų������������������������������������Ŀ��þ����	��������Ŀ�����~����󐽳���������	|��||��|�||퐼�����������u��{z{z�{�{{��z�z{zz�{z{�������������u��{z{z�{���z�z{zz�{z{�����������½�u��xyx��xxyyx�xx푿����������þ�u��w�x�ww�x�������������Ŀ�u��
v�uv
v�z��������������ſ�u��v��������
���������������ƿ�v��vv�����������{uu�y�~|uromkkmq����ƽ���vv�������������º������o��s��������vv�������������¼�����n���n��������vv�����������þ�����i���k��������vv���������ń���¾�����n���o��������v��������ń�ꃂ�~{z��x�����������������������Ä��������¿�����zy|���������������������������������������„�Ä��������������à���������„���������������Ÿ���������������������������	������������	�����������������������
�������	������������������������������������ÿ��������	���������	������������������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������
���������������������������������������������������������������������������������������������������
�������������������������������������������������������������� �����������������������%�.�p�����������������p��������������������������p�����������������p������������op�opoppopp�opoop�o���������m��mm�����������i�jiij�ijii�j�jji�����������	f��f�ff�����������d�cdd�dd��d�dd��μ���������a``aa��a`a�`�aa�`��ͻ����������	w��_^_^�_�__��^�^_^^�_^_��ͻ����������	w��_^_^�_����^�^_^^�_^_��Ͻ����������	w��\]\��\\]]\�\\��п�����������w��[�\�[[�\���������������w��
Z�YZ
Z�d���ý������������w��Z�������������杞��������������������z��ZZ�󼹹�����������ꐟ����������������ϵ�ZZ����֪������������������������ZZ���������������ź���������������ZZ���������������������Ǽ�����􄰴������ZZ������������������½����������Į�Z������������ꢡ�����ɕ��ϝ�����ϳ��������������������������Η���������׵�������������������������������������������������������������������������������������������������㽽�����������	��������������������������������������������������ỻ�������������	�����������⹹�����������������������	�����������	������	����������������������������Ḹ���������������������Ḹ��������������������������������ߣ������������������������������������߷�������ҩ��������������Ҫ�ߪ������߷��������ҩ�
������������������������
������������߷�����������������߷���� �߷�������߷��������%�.��������������������������������
��������������������������������������������������������������������������ﵵ����������������������������	�����������������~�����������������	|��||��|�||�������������G::���{z{z�{�{{��z�z{zz�{z{������������G::���{z{z�{���z�z{zz�{z{������������G::���xyx��xxyyx�xx��������������::���w�x�ww�x���������������:���
v�uv
v������������������v�������������������������������vv��������ʯ��갽������������������vv�����������������������ȿ��ȯ�������vv���������������˨��ʨ�������vv�������������������̣��ɦ�������vv�����������������������ת��Ӫ�������v���������������꿾���������������������������������������嵴������������������������������������������������������������������������������������������������������������������������	�������������������������	����������������������������������������������������������������������������������������	��������������������������������������	����������������������������
����������������������������������������������	�����������������������
��������������������������������������������������������������ſ
���������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2./c++�	

��q./��./������������ͯ��������������˺������������
����ƹ�������������������������������������Ų������������������������������Ŀ��þ��������ᇁ���������������Ŀ������~���~�󐽳���������|��||��|��|퐼�����������u��{z�{zz{z{{�{z{z{�zz{z{�������������u��{z��{zz�z{{�{z{z{�zz{z{�����������½�u��x�y��~xxy	x푿����������þ�u��wxw�x�������������Ŀ�u��
v�uv
v�z��������������ſ�u��v��������
���������������ƿ�v��vv�����������{uu�y�~|uromkkmq����ƽ���vv�������������º������o��s��������vv�������������¼�����n���n��������vv�����������þ�����i���k��������vv���������ń���¾�����n���o��������v��������ń�ꃂ�~{z��x�����������������������Ä��������¿�����zy|���������������������������������������„�Ä��������������à���������„���������������Ÿ���������������������������	������������	�����������������������
�������	������������������������������������ÿ��������	���������	������������������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������
���������������������������������������������������������������������������������������������������
�������������������������������������������������������������� �����������������������%�.�p�����������������p��������������������������p�����������������p������������op�opoppopp�opoop�o���������m�����������i�jiij�ijiiji�����������f�m��mff��ffgff�ff�����������d��dcd�dd��ddcdd�dd��μ���������a``aa�aa��`��a�`��ͻ����������	w��_^�_^^_^__�_^_^_�^^_^_��ͻ����������	w��_^��_^^�^__�_^_^_�^^_^_��Ͻ����������	w��\�]e��d\\]	\��п�����������w��[\[�\���������������w��
Z�YZ
Z�d���ý������������w��Z�������������杞��������������������z��ZZ�󼹹�����������ꐟ����������������ϵ�ZZ����֪������������������������ZZ���������������ź���������������ZZ���������������������Ǽ�����􄰴������ZZ������������������½����������Į�Z������������ꢡ�����ɕ��ϝ�����ϳ��������������������������Η���������׵�������������������������������������������������������������������������������������������������㽽�����������	��������������������������������������������������ỻ�������������	�����������⹹�����������������������	�����������	������	����������������������������Ḹ���������������������Ḹ��������������������������������ߣ������������������������������������߷�������ҩ��������������Ҫ�ߪ������߷��������ҩ�
������������������������
������������߷�����������������߷���� �߷�������߷��������%�.��������������������������������
�����������������������������������������������������������������������ﵵ�����������������������������ᇁ�������������������������~���~��������������|��||��|��|�������������G::���{z�{zz{z{{�{z{z{�zz{z{������������G::���{z��{zz�z{{�{z{z{�zz{z{������������G::���x�y��~xxy	x��������������::���wxw�x���������������:���
v�uv
v������������������v�������������������������������vv��������ʯ��갽������������������vv�����������������������ȿ��ȯ�������vv���������������˨��ʨ�������vv�������������������̣��ɦ�������vv�����������������������ת��Ӫ�������v���������������꿾���������������������������������������嵴������������������������������������������������������������������������������������������������������������������������	�������������������������	����������������������������������������������������������������������������������������	��������������������������������������	����������������������������
����������������������������������������������	�����������������������
��������������������������������������������������������������ſ
���������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2./sh�	

S�4./�H./�X����������ͯ��������������˺������������
����ƹ�������������������������������������Ų��������	������������������������Ŀ��þ������������♁�����Ŀ�����~���~�󐽳���������|�||�||��||퐼�����������u��{z{z����{�{z{�{zz�{z{�������������u��{z{z�{��{�{z{�{zz�{z{�����������½�u��xyx��xx�yxx�xx푿����������þ�u��wxw�x�������������Ŀ�u��
v�uv
v�z��������������ſ�u��v��������
���������������ƿ�v��vv�����������{uu�y�~|uromkkmq����ƽ���vv�������������º������o��s��������vv�������������¼�����n���n��������vv�����������þ�����i���k��������vv���������ń���¾�����n���o��������v��������ń�ꃂ�~{z��x�����������������������Ä��������¿�����zy|���������������������������������������„�Ä��������������à���������„���������������Ÿ���������������������������	������������	�����������������������
�������	������������������������������������ÿ��������	���������	������������������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������
���������������������������������������������������������������������������������������������������
�������������������������������������������������������������� �����������������������%�.�p�����������������p��������������������������p�����������������p������������op�opoppopp�opoop�o���������m��m	m�����������i�jiij�iji�ijji�����������f�����f��܃ff�����������d�cۂdd��ddc�dd��μ���������a``aa�a`�a``�aa�`��ͻ����������	w��_^_^�~��_�_^_�_^^�_^_��ͻ����������	w��_^_^�_}�_�_^_�_^^�_^_��Ͻ����������	w��\]\��\\�]\\�\\��п�����������w��[\[�\���������������w��
Z�YZ
Z�d���ý������������w��Z�������������杞��������������������z��ZZ�󼹹�����������ꐟ����������������ϵ�ZZ����֪������������������������ZZ���������������ź���������������ZZ���������������������Ǽ�����􄰴������ZZ������������������½����������Į�Z������������ꢡ�����ɕ��ϝ�����ϳ��������������������������Η���������׵�������������������������������������������������������������������������������������������������㽽�����������	��������������������������������������������������ỻ�������������	�����������⹹�����������������������	�����������	������	����������������������������Ḹ���������������������Ḹ��������������������������������ߣ������������������������������������߷�������ҩ��������������Ҫ�ߪ������߷��������ҩ�
������������������������
������������߷�����������������߷���� �߷�������߷��������%�.��������������������������������
�������������������������������������������������������������������	�������ﵵ��������������������������������♁��������������~���~��������������|�||�||��||�������������G::���{z{z����{�{z{�{zz�{z{������������G::���{z{z�{��{�{z{�{zz�{z{������������G::���xyx��xx�yxx�xx��������������::���wxw�x���������������:���
v�uv
v������������������v�������������������������������vv��������ʯ��갽������������������vv�����������������������ȿ��ȯ�������vv���������������˨��ʨ�������vv�������������������̣��ɦ�������vv�����������������������ת��Ӫ�������v���������������꿾���������������������������������������嵴������������������������������������������������������������������������������������������������������������������������	�������������������������	����������������������������������������������������������������������������������������	��������������������������������������	����������������������������
����������������������������������������������	�����������������������
��������������������������������������������������������������ſ
���������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2./rb�	

!�./�./�(����������ͯ��������������˺������������
����ƹ�������������������������������������Ų��������
������������������������Ŀ��þ����������⚁�����Ŀ�����~�����󐽳���������|��||�||��||퐼�����������u��{z{�z�{z{�{{z�z{zz�{z{�������������u��{z{�z�{z{��z�z{zz�{z{�����������½�u��xyx��xx����xx푿����������þ�u��wxw�x�������������Ŀ�u��
v�uv
v�z��������������ſ�u��v��������
���������������ƿ�v��vv�����������{uu�y�~|uromkkmq����ƽ���vv�������������º������o��s��������vv�������������¼�����n���n��������vv�����������þ�����i���k��������vv���������ń���¾�����n���o��������v��������ń�ꃂ�~{z��x�����������������������Ä��������¿�����zy|���������������������������������������„�Ä��������������à���������„���������������Ÿ���������������������������	������������	�����������������������
�������	������������������������������������ÿ��������	���������	������������������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������
���������������������������������������������������������������������������������������������������
�������������������������������������������������������������� �����������������������%�.�p�����������������p��������������������������p�����������������p������������op�opoppopp�opoop�o���������m��m
m�����������i�jiij�ij�iijji�����������f���f��܄ff�����������d�c�ۂd�ۂd�dd��μ���������a``aa��aa�aa`�aa�`��ͻ����������	w��_^_�^�_^_�__^�^_^^�_^_��ͻ����������	w��_^_�^�_^_��~^�^_^^�_^_��Ͻ����������	w��\]\��\\��|��{\\��п�����������w��[\[�\���������������w��
Z�YZ
Z�d���ý������������w��Z�������������杞��������������������z��ZZ�󼹹�����������ꐟ����������������ϵ�ZZ����֪������������������������ZZ���������������ź���������������ZZ���������������������Ǽ�����􄰴������ZZ������������������½����������Į�Z������������ꢡ�����ɕ��ϝ�����ϳ��������������������������Η���������׵�������������������������������������������������������������������������������������������������㽽�����������	��������������������������������������������������ỻ�������������	�����������⹹�����������������������	�����������	������	����������������������������Ḹ���������������������Ḹ��������������������������������ߣ������������������������������������߷�������ҩ��������������Ҫ�ߪ������߷��������ҩ�
������������������������
������������߷�����������������߷���� �߷�������߷��������%�.��������������������������������
�������������������������������������������������������������������
�������ﵵ������������������������������⚁��������������~������������������|��||�||��||�������������G::���{z{�z�{z{�{{z�z{zz�{z{������������G::���{z{�z�{z{��z�z{zz�{z{������������G::���xyx��xx����xx��������������::���wxw�x���������������:���
v�uv
v������������������v�������������������������������vv��������ʯ��갽������������������vv�����������������������ȿ��ȯ�������vv���������������˨��ʨ�������vv�������������������̣��ɦ�������vv�����������������������ת��Ӫ�������v���������������꿾���������������������������������������嵴������������������������������������������������������������������������������������������������������������������������	�������������������������	����������������������������������������������������������������������������������������	��������������������������������������	����������������������������
����������������������������������������������	�����������������������
��������������������������������������������������������������ſ
���������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2./py�	

���./��./������������ͯ��������������˺������������
����ƹ�������������������������������������Ų������������������������������Ŀ��þ���������������Ŀ�����~����~��󐽳���������|��||��|��|�||퐼�����������u��{z{�z�{z{�{{��{zz�{z{�������������u��{z{�z����{{��{zz�{z{�����������½�u��xyx��xxy�x�xx푿����������þ�u��w��xxww��ww�x�������������Ŀ�u��
v�uv
v�z��������������ſ�u��v��������
���������������ƿ�v��vv�����������{uu�y�~|uromkkmq����ƽ���vv�������������º������o��s��������vv�������������¼�����n���n��������vv�����������þ�����i���k��������vv���������ń���¾�����n���o��������v��������ń�ꃂ�~{z��x�����������������������Ä��������¿�����zy|���������������������������������������„�Ä��������������à���������„���������������Ÿ���������������������������	������������	�����������������������
�������	������������������������������������ÿ��������	���������	������������������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������
���������������������������������������������������������������������������������������������������
�������������������������������������������������������������� �����������������������%�.�p�����������������p��������������������������p�����������������p������������op�opoppopp�opoop�o���������m�����������i�jiij�ijiiji�����������f���f�gf�ff�����������d�c�dd��d�c��dd��μ���������a``aa��aa��a��`�aa�`��ͻ����������	w��_^_�^�_^_�__��_^^�_^_��ͻ����������	w��_^_�^����__��_^^�_^_��Ͻ����������	w��\]\��\\]�\�\\��п�����������w��[��\\[[��[[�\���������������w��
Z�YZ
Z�d���ý������������w��Z�������������杞��������������������z��ZZ�󼹹�����������ꐟ����������������ϵ�ZZ����֪������������������������ZZ���������������ź���������������ZZ���������������������Ǽ�����􄰴������ZZ������������������½����������Į�Z������������ꢡ�����ɕ��ϝ�����ϳ��������������������������Η���������׵�������������������������������������������������������������������������������������������������㽽�����������	��������������������������������������������������ỻ�������������	�����������⹹�����������������������	�����������	������	����������������������������Ḹ���������������������Ḹ��������������������������������ߣ������������������������������������߷�������ҩ��������������Ҫ�ߪ������߷��������ҩ�
������������������������
������������߷�����������������߷���� �߷�������߷��������%�.��������������������������������
�����������������������������������������������������������������������ﵵ���������������������������������������������~����~���������������|��||��|��|�||�������������G::���{z{�z�{z{�{{��{zz�{z{������������G::���{z{�z����{{��{zz�{z{������������G::���xyx��xxy�x�xx��������������::���w��xxww��ww�x���������������:���
v�uv
v������������������v�������������������������������vv��������ʯ��갽������������������vv�����������������������ȿ��ȯ�������vv���������������˨��ʨ�������vv�������������������̣��ɦ�������vv�����������������������ת��Ӫ�������v���������������꿾���������������������������������������嵴������������������������������������������������������������������������������������������������������������������������	�������������������������	����������������������������������������������������������������������������������������	��������������������������������������	����������������������������
����������������������������������������������	�����������������������
��������������������������������������������������������������ſ
���������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2./pl�	

��./�./������������ͯ��������������˺������������
����ƹ�������������������������������������Ų������������������������������������Ŀ��þ����	��������Ŀ�����~����󐽳���������	|��||��|�||퐼�����������u��{z{z�{�{{��z�z{zz�{z{�������������u��{z{z�{���z�z{zz�{z{�����������½�u��xyx��xxyyx�xx푿����������þ�u��w�x�ww�x�������������Ŀ�u��
v�uv
v�z��������������ſ�u��v��������
���������������ƿ�v��vv�����������{uu�y�~|uromkkmq����ƽ���vv�������������º������o��s��������vv�������������¼�����n���n��������vv�����������þ�����i���k��������vv���������ń���¾�����n���o��������v��������ń�ꃂ�~{z��x�����������������������Ä��������¿�����zy|���������������������������������������„�Ä��������������à���������„���������������Ÿ���������������������������	������������	�����������������������
�������	������������������������������������ÿ��������	���������	������������������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������
���������������������������������������������������������������������������������������������������
�������������������������������������������������������������� �����������������������%�.�p�����������������p��������������������������p�����������������p������������op�opoppopp�opoop�o���������m��mm�����������i�jiij�ijii�j�jji�����������	f��f�ff�����������d�cdd�dd��d�dd��μ���������a``aa��a`a�`�aa�`��ͻ����������	w��_^_^�_�__��^�^_^^�_^_��ͻ����������	w��_^_^�_����^�^_^^�_^_��Ͻ����������	w��\]\��\\]]\�\\��п�����������w��[�\�[[�\���������������w��
Z�YZ
Z�d���ý������������w��Z�������������杞��������������������z��ZZ�󼹹�����������ꐟ����������������ϵ�ZZ����֪������������������������ZZ���������������ź���������������ZZ���������������������Ǽ�����􄰴������ZZ������������������½����������Į�Z������������ꢡ�����ɕ��ϝ�����ϳ��������������������������Η���������׵�������������������������������������������������������������������������������������������������㽽�����������	��������������������������������������������������ỻ�������������	�����������⹹�����������������������	�����������	������	����������������������������Ḹ���������������������Ḹ��������������������������������ߣ������������������������������������߷�������ҩ��������������Ҫ�ߪ������߷��������ҩ�
������������������������
������������߷�����������������߷���� �߷�������߷��������%�.��������������������������������
��������������������������������������������������������������������������ﵵ����������������������������	�����������������~�����������������	|��||��|�||�������������G::���{z{z�{�{{��z�z{zz�{z{������������G::���{z{z�{���z�z{zz�{z{������������G::���xyx��xxyyx�xx��������������::���w�x�ww�x���������������:���
v�uv
v������������������v�������������������������������vv��������ʯ��갽������������������vv�����������������������ȿ��ȯ�������vv���������������˨��ʨ�������vv�������������������̣��ɦ�������vv�����������������������ת��Ӫ�������v���������������꿾���������������������������������������嵴������������������������������������������������������������������������������������������������������������������������	�������������������������	����������������������������������������������������������������������������������������	��������������������������������������	����������������������������
����������������������������������������������	�����������������������
��������������������������������������������������������������ſ
���������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@2./css�	

Y`./t./��~��������ͯ���~�����������˺������~������
����ƹ������~�����������}~�}~}~~}~~�}~}}~�}��Ų�����{���Ļ������w�xwwx�wxwwxw����þ����t���ߏt����tt���ߏtt����Ŀ����r��rr��r�rr��r�rr��rr󋽶���������onno�oo����oon���oo�n�������������u��onno�oo���onno�ދoo�n�������������u��ml��mm��m�mm��l�lm��lmlm�����������½�u��j���݇j���݇j����jj틿����������þ�u��iji�j�������������Ŀ�u��
h�gh
h�m��������������ſ�u��h��������
���������������ƿ�v��hh�����������������������������ƽ���hh�����������º�v����������������hh����	������¼������������������hh������
��øj����������������hh�����������™z���������������h������ž�����~������������������������������ij������±t���t{���������������������q�����‘�����q�������������÷�q�������u�����¨|q������à���������q������������|q����Ÿ�������|q���������������vq���	����䶑qv���������q����������q�����������������qv��������q����	�����������q|����v�������q����������������ÿ����������������������	����������������������������������������������������������������������������������������������������������������񾻽����������������������������	���������������������������������������������������������������������������������������������������������������������������������������� �����������������������%�.�~�����������������~��������������������������~�����������������~������������}~�}~}~~}~~�}~}}~�}���������{�����������w�xwwx�wxwwxw�����������t���ߏt����tt���ߏtt������������r��rr��r�rr��r�rr��rr���Ļ��������onno�oo����oon���oo�n���õ���������	w��onno�oo���onno�ދoo�n���Į���������	w��ml��mm��m�mm��l�lm��lmlm���Ŭ���������	w��j���݇j���݇j����jj���ǰ����������w��iji�j���ɴ�����������w��
h�gh
h�p���ʽ������������w��h�������������棤��������������������z��hh�������������������̰�������������ϵ�hh�������ظ�����������������hh��������������ښ�����������������hh������������������������������������hh����
�������᳑��½�������Į�h������������������ᕶ������������ϳ�������������Ѡ������ω��Պ�����������׵��������צ���������ʙ����������������׬�����݌���ē������������ܲ��������쾘�������㾓������������Ⓡ������������������Ѝ����㽽������֫���������Ї��������׫�����������ܱ������⫫��ܫ������������ܫ�����܍�����⾇���������ỻ������������֥��ᾙ��������������⹹������������������
�	���������ə�����	�������������������������Ḹ����������������������������Ḹ���������������������������������������������������������	��߷�������������������������������߷�����������������������������������������
������������߷�����������������߷���� �߷�������߷��������%�.�~���������������������������~���
������������~���������������~�����������}~�}~}~~}~~�}~}}~�}���������{������ﵵ�w�xwwx�wxwwxw�����������t���ߏt����tt���ߏtt������������r��rr��r�rr��r�rr��rr�������������onno�oo����oon���oo�n�������������G::���onno�oo���onno�ދoo�n������������G::���ml��mm��m�mm��l�lm��lmlm������������G::���j���݇j���݇j����jj��������������::���iji�j���������������:���
h�gh
h�s������������������h������������������������������hh�����������������������������hh���������������������Ѧ���������������hh��	�����ﱷ���������������hh�������������������������������hh���������������Ǧ����������������h������������������������������������������������������럨����������������������캛���������߮���������������������������ڧ���������������ƛ��������ӭ��������ӧ�����������������������桛������������������������������������ƛ����������������������������������ӛ�����������������Ӯ������������������������������������	�	�����߮����������
���������������������������������������������������������	���������������������������������������������� ������������������%�.�����������������
 ���	!���"��r#��G$��"%��&��&���'�����&���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*�2@AABCE@@20/html�	

'�0/	0/�������ͯ�������������˺�����������
����ƹ��������������������Ų������������������������������������������Ŀ��þ����������������������Ŀ��������������󋽳�����������������������������튼�����������u���������������������틽�����������u���������������������틽���������½�u��~��~~�~��~�~~�~~�~�~~�f�����������þ�u��}�h�x���������Ŀ�u��}�m�������������ſ�u��}����������od{oxqqrp��������������ƿ�v��}}���������|x���i�������{|tqqhq�����ƽ���}}������ࠌ���u���������oltrsh{���������}}�����߷���������㺙��x�|rppe���������}}������ߌ�����¿���آ�w��vpnjm��������}}������޺����������լ��}�ZZeese��������}}�����ܞ����������ѳ���s��s��x��������}}�������Ê��u}��������ѷ��y�������w�������}������ㄌ�����������̹���ϼ�����v�����	������‚������������Ĵ���ʺ�����t����à�������ރ�����������ȹ����ŷ�����s����Ÿ�����������������������������r������
����ނ������������������������y�����������������������������z}������������
���������������������󈊋{�����������ÿ����s�������������������v��������������{�����������������}�������������������w�����������􅜇x��������
����������l���艆��}{|~���w������������������l����~|zyvv|���}����������
�߾���������tq��|{yyz}���kv������������������mq}����ylm�������������
���������廥��{nojjlo|���������������
�������������������������������������
������ﺶ��������������������
��������������������������
��������������������������
���� ����
�������������������%�0�����������������������������������������������������������������������������������������������������������������������������������������������������������������������μ�����������˽�������˽����������ͻ����������	w�����������������������ͻ����������	w�����������������������Ͻ����������	w���������������������퀢�������������w���탧��������������w���퉴���������������w���؝����������������������������������z����������������������������������������ϵ��������­�����������������������������������פ��������ϴ��������������������������䰼�����¾���㻪�����������������������ڪ����զ��������|~���������Į������������©�����ȶ��������������ϳ����������䮵���������̷��������������׵��������ਮ�����������������ÿ���������
�����㦳������������˾����ÿ���������	������⦷������������ź����¿���������
������㣷�����������ǽ��������������㽽������ަ�����������ý����������������⼼�������൷��������������������������⻻������Ϥ������������򮭹�������ỻ��������☱�����������񭬶��������⹹��������������򮬪���������������������ﭬ������������������������ѐ����譪������������������Ḹ����������ᾐ�������������������������Ḹ�������仗�������������������������
�������ݼ�������������������������
�����������ı�������������������߷
��������������ҿ�������������������߷
�����������������ǿ�������������������
��������������������������������߷
�������������������߷
���� �߷
�������߷��������%�0��������������������������
�������������������������������������������������������ﵵ��������������������E�E����E��E���������������D����D�����������������D���D����������������G::������������������������G::������������������������G::��������������������������::�������������������:����������������������ع�����������s����������������������������о�ZG@FZ������Ͱ������������������������U?Jq�`������Մ��������������������^?;;TG�������û�{�����������������@=89VF8������FEMewu�����������������I?:8N>k�������ڔ<DS[mt�������������B>98R��������8H����_���������������wBIDi������P4@ABP~����������������V�����������e05:=AEe�����
������[��������.26:=@BK��������������t{���������/36:>ABB������
�����������������248<?ABA����
���������������������g69C>ABD������������������䄯�gBBQ����
���������������CBl����������������CA������
�����������������cBQ�������������������MA������	����������������������?o�����	������������������������b�������
������������������������������
������������������������������
��������������������������
�������������������������
��������������������
��
��������������
��������	�����
�� ��
����������������%�0�������� ���!���
"���	#���$��r%��G&��"'��(��(���)���*���	"���	#���$���%��%��%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%��!�$��*�2@AABCE@@2(/office�	

�)�(/)�(/*������ͯ������������˺����������
����ƹ�����������������������������������������Ų������������������������������������������Ŀ��þ�����������������������Ŀ����������������������Ž������������������������ļ�����������u�����������Ž�����������u��������������������Ž���������½�u���������������ƿ����������þ�u�����������������������������Ŀ�u������������������������������ſ�u�����������������������������ƿ�v�����������������������������������ƽ������������������º�{wrqnu��������������������������¼~yzvtmn������������������������þ~z���zl����������Ĥ������������¾������r����������ģ�������������¿������|���ٳ������������������������¿������~�����������������������Æ���������������������������»�����������à�����������������������Ÿ���������������������������������������������������������������������������������������������������ÿ��������������������������������������������������������������������������������������������������ᄑ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������$�(����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������μ������������������������ͻ����������	w������������������ͻ����������	w��������������������Ͻ����������	w���������������������п�����������w�������������������������������w�����������钑�����ý������������w���������揗������ܑ������������������z����������搝�����⑎��ɯ�������������ϵ����������⏎�ث����������������������������⏎�ڢ�������������������������咜������Ꮞ�ۣ���������������������������������ļ�½����������Į�����䐗�������������ɱ���������ϳ���������䑐������㛖�ޫ��ά����������׵���������������⏏�䭭�ذ���������������������������������������������������������������������������������������㽽��������������������������������������������������������������������ỻ�������������������������������⹹�������������������������������������������������������������������������������Ḹ��������������������������������Ḹ������������������������������������������������������	��߷�������������������������������߷�����������������������������������������
������������߷�����������������߷���� �߷�������߷��������$�(��������������������������
������������������������������	���������������������������������������ﵵ���������������������������������������������������������������������������������������������G::����������������������������G::������������������������������G::������������������������������::�������$�*,,+()(+��������������:�������$�*//.+*)*-������������������������$8�����+)��������������������'G����)%�������������������������,G�������$%�����������������������,F�����$$������������������������,E������$$��������������������������+B��������������������������������'8���������������������������������*'=EEBB�A9���������������������������&'('$$���$%�����������������������������������������������������������������������������������S�+&��20��&%&5��������������	�����������������������������������������������������������������������������������' ��+)����������������������������������������������������������������������������Ib`^`H���-+����������������������������������	���������������������������������������������� ������������������$�(����������
���
������
���	��r��G��"������� ���!���"���#����#����$���$���$�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*2@AABCE@@20/pdf�	

�=N0/=b0/=r����������ͯ���������������˺�����������
����ƹ�����������������������Ų���������������������������������������������إĿ��þ�����������������Ŀ����������������������Ջ������������������������������Ҋ������������u���������������������ҋ������������u�������������틽���������½�u�������������������Ћ�����������þ�u����������������ϋ������������Ŀ�u��������	��ȋ�������������ſ�u�����̓�����
�鎌��������������ƿ�v�����͍���������椣���Ļ�������������ƽ�����̧�������������ʺ������������������������	��������ͼ�����������������������������;��������������������������������ɾ������������������������������ſ�������������������͢��������������������¿������������������͠����
�������¿���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ÿ���������Ͽ����̿��������������������便����������ӿ�������������
������������о��������������������������󾽽�����������������ҽ��������������������������������ӽ����
��������������ƾ�������������ü�����������ʼ���������
������������Ѽ�������������������
������������Ӿ������������������
������������ɻ���������
��������������������
����������Ϻ�����������������
�����������
�������������������%�0�x�����������������x��������������������������x�����������������x������������wvv�wvv�wv	v�wvww���������s��ss��ss������������nonoonnonnonnoon�nn�nn�onn�����������j�kjj��j�j��j�����������gfgg��ggf�g�gf��gg�gg�hg��μ���������b��bb��b�bb��cb�bcbb��ͻ����������	w��b��bb��b�bb��cb�bcbb��ͻ����������	w��_�^__�_��^^��__�__^_^_^��Ͻ����������	w��\]]\[]�\]\\�]�\\�\\�]\\��п�����������w��[�YZY�Z[[�Z[[Z[[�Z[[Z���������������w��Y�XYXYXYY�i���ý������������w��Y�XYXYXY������������棤��������������������z��YY�XYXYX����������������lo��ɰ�������������ϵ�YY�XYXY������y~�������������������YY�XYX�������������~�����ź���������������YY�XY������������������}�����Ǽ�������������YY�X����
����{�����½�������Į�YY�����������xy��������������ϳ�YY����������������wz�����������������Ե�Y������������w�����������������Ե������
��wy����������������ص������������������ww�����������������ٵ�������������������xv���������������Ա������������肃�w����������������ײ�����������w��w���������ٲ������������|��v���������ٳ�����������������x����w�����������޵�����������x����߁v���������߷�����������y���ͫ~vv�z�����෷����������y�ۮ�wvvwyxvx����z����Ḹ��������������w��vw}������vw}�~{���Ḹ����������{vy���������ҧ�}������
������ߝyw�������������
���������{z|����������	��߷
�������߷v}�x������������������߷
��������vy�w������������������
�������yv�x���
������������߷
�������v�y����������߷
������}���߷
�������߷��������%�0�(hh�������������������������(hh�
������������(hh�������������(hh���������&'�&''&'&''&'&'&'&&�'&''���������$��$$��$$������ﵵ� � � � �  �����������������������������������������������������������������������G::�����������������������G::����������������������G::���

���
��
�
�

��������������::����

�









���������������:���



�


�




�,������������������



������������������������������



����������IG������������������



�����������������YDN��������������������


���	���KOoz�������������������

�������������KQ`��������������������

����������WGO��������������������

���������������kBE��������������������
����������@E������������������������������@O���������������������������������@D������������������������������A@������������������������
��D@i������������������������������TUaA���������������������������A��A]��������������������������������_I�y@������������������������Cr���OA���������������������lD���R@S�����������	����Ee����כN@@�FPi������������fD��]B@@BEC@Do��sGU����	��������BUYAALv����TABMUNI�����
�������H@Dd�����^MV�����
�������EB�������
������HHKU�����	���������
�������@LnD������
�����@E�C������
����F@�Dg���������
���@WEd������
����OT����
����������������%�0��������������!���
"���	#���$��r%��G&��"'��(��(���)�����(���	"���	#���$���%��%��%��	%��%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%��!�$��*�2@AABCE@@20/rtf�	

�
R�0/R�0/R�����������ͯ��������������˺������������
����ƹ���������������������Ų�����������������������|��||��||�Ŀ��þ����y������y��y����Ŀ����v���vv�vv��vv󋽳���������s�ߎss�ss��ss�r������������u��p��pp��pp��pp틽�����������u��p��pp��pp��pp틽���������½�u��o��oo�o��oo�r�����������þ�u��o������������Ŀ�u��o�s��������������ſ�u��o������rrsr�q��������������ƿ�v��oo�����������������������������ƽ���oo�����������º������������������oo�������¼������������������oo������
��þ�����������������oo����������¾����������������oo����������¿������������������oo�������������¼��������������o�����
�����
���	��������������������������à���������������������������Ÿ�����������������������������������������������������������������������������������������������������������������ÿ��������������������������������������������	�����������
�����������������������������������������������������
����������������������������������������
����������������������������
�������������������������������
��������������
�������������������
��������������������������
���� ����
�������������������%�0�������������������������������������������������������������������������������������������������������������궥������������������������������������韟�������μ�����������诜������튱������������	w��������������ͻ����������	w��������������Ͻ����������	w�����������튴�������������w������������������w���웡��ý������������w���؛�����������������������������������z�����������������������ɰ�������������ϵ���������������������������������嵵����������ź��������������������������������������Ǽ�����������������
������������½�������Į�������������������������������ϳ�����������􊉇������������׵����������������������������
������������	�����㮮����������������������
�������������������������㽽�����������������������	�������
���	�������������������ỻ������������������������������⹹�������������������
��������������������������������Ḹ����������������������������Ḹ������ࢡ�����������������
����������������
���������������������	��߷
�����߸��������������߷
������������������������������
�����������
������������߷
�����������������߷
���� �߷
�������߷��������%�0�������������������������������
�������������������������������������������������������������ﵵ��������������������������������������������������������������������������G::���������������������G::���������������������G::����������������������::������������������:�����ߴ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ii�hgfee�fgg�������������������������������������
���������������������������������
�����������������
�����������������
�����������������������������
�����������
������������������������������������������������������������
���������������������>��	�����������������	����������
��������������
��������
�������	���������
����TT�7������
������
����������
�������
�� ��
����������������%�0��������������!���
"���	#���$��r%��G&��"'��(��(���)�����(���	"���	#���$���%��%��%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%��!�$��*�2@AABCE@@20/txt�	

�	dV0/dj0/dz����������ͯ��������������˺������������
����ƹ���������������������Ų��������������������|��||��||�Ŀ��þ����y����y�yy����yy����Ŀ����v��vv�ߐܐv�vv�r�����������s��ss��ϣss�ss튼�����������u��p��pp�Ρpp�pp틽�����������u��p��pp�ދދp�pp�r����������½�u��o�o�oo�o��oo틿����������þ�u��o������������Ŀ�u��o�pr�������������ſ�u��o����������������������ƿ�v��oo�����������������������������ƽ���oo�����Ǘ��Ǘ���ꖔ����zyvvwyz}~������oo����	������¼������������������oo������
��þ�����������������oo�����œ������Ŕ�������|zz��{|}������oo����������¿������������������oo���������������������¿������������������o��������Ð�������������������������	��������������������������à������������������������Ÿ����������
����������������������������������������������������������������������������ÿ��������������������������������������������	����������������������������������
�����������������������������������������������������
��������������������������������������������
����������������������������
���������������������������
��������������
�������������������
��������������������������
���� ����
�������������������%�0���������������������������������������������������������������������������������������������������������������������������󴢢������������������򟟱�江��󉱪������������񜜯�ݾ������ͻ����������	w�������ݽ������ͻ����������	w����񚚭�筚��퉲������������	w����񬙙������п�����������w������������������w���엉����������������w����������������棤��������������������z�����������������������ɰ�������������ϵ�����������嵶����ا���������������������������������ź��������������������������������������Ǽ��������������������峲�������������������Į�������������������������������ϳ���������������������������������������׵����������䯮���������������������
������������	���������������������������
��������򫬬�⫫����������⫬��㽽�����������������������	��������������	�����
������⩨�������ỻ������������������������������⹹�������������������
������ᥦ��������������������������������������������Ḹ����������������������������Ḹ���������ᢢࡢ����������
����������������
���������������������	��߷
�����ߠ��ߠ���������߷
������������������������������
�����������
������������߷
�����������������߷
���� �߷
�������߷��������%�0�������������������������������
��������������������������������������������������������������ﵵ��������������������������������������������������������������������������������G::����������������������G::�����������������������G::�������������������������::������������������:�����ܟ������������������������������������������������������������������������������������������������Ľ�������������������	���������������������������������������������������������������������������½������ӵ������������������������������������������������������������������������������������������������
���������������������������������������������������������������
�����������������������������
�������������������������������������������������
��������������������������������������������������
���������������������������������������	�����������������	����������
�������������������������
��������
�������	���������
����������������������������
������
����������
�������
�� ��
����������������%�0��������������!���
"���	#���$��r%��G&��"'��(��(���)�����(���	"���	#���$���%��%��%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%��!�$��*�2@AABCE@@200video�	

_v�00v�00v�������ͯ���	���������˺������	����
����ƹ������	���������������������	��������������Ų�����	������������������������	�������������Ŀ��þ����	�������������������Ŀ����	������������������Ž����������	��������������ļ�����������u��	���������Ž�����������u��	������������������Ž���������½�u��	�������������ƿ����������þ�u��	�������������������������Ŀ�u������������������������������ſ�u����������������������ƿ�v�������������������������������ƽ��������������º�������������������������	������¼�������������������������
��þ����������������������������¾����������������������������¿��������������������������¿������������������==VV�V�=������
���<V�FHHGHHGHH�IV��<����������������à�;;TST�
��T��;���������������Ÿ�;;TST���������TST;���������������:�SRR�
�R�S:�������������������������99SRR�
��R��9���������8O�P���������P��8����������������������88OOP�������POO8���
������7�NMN�
��NMN7����������������������6�NMM�
��M��6������������򽾘�44JIK�����������K��4�����������������������33JIIL
LI�J3���	�������������33HH�H�3���������������������1H�F����������F��1�������������00DDE��������E��0��������������󼻻����..DDC��񊉉����CDD.��������������������--BB��������BB�-����������--BBA���������A��-����������++>>?���������?��+�������������������**>>��>�*��������))==}~�}~}~}}�~==�)���������))==;>
>�;��)������''!!:~
~�:��'��!k!�&I
���������������	������������������������	��������������	�������������������	��������������������������	�������������������������	�������������������	���������������������	���������������μ���������	���������������ͻ����������	w��	����������������ͻ����������	w��	������������������Ͻ����������	w��	�������������������п�����������w��	�����������������������������w������
������ý������������w��������������������������������������z�����������������������ɰ�������������ϵ������������������������������������������������ź���������������������������������������Ǽ������������������
������������½�������Į�����	���������������������ϳ������������������������������׵�EEii�i�E������������������㿿DDiihXVWW�Xh��D�����������Ce�f�
�f��C����������������㽽AAee������ee�A������������㽽@@cc�������cc�@����������������?c�b��������b��?���������>^�`�������`��>�������������ỻ==^^�������^�=��������������������⹹<<\\]�����]\\<������������
��:\�Z������Z��:���������9W�X�������X��9�������������������Ḹ88WWZW�8�����������������Ḹ77UU�U�7������������෷66UUR���������R��6��������������෷44MNP��������P��4����������	���߷�22MNN������겳���NNM2�������������������߷�11KLL�����L�K1�����������������෷//KLI�����I��/����������������߷�..EEH�������H��.�����������߷�,,EE�����E�,����߷�++BCB���򧨨����BCB+�����߷�**BCAD
D�A��*�����))""?�
��?��)��"�"�'I	�������������������������	�
������������	������������	������	����������	��������������������	���������ﵵ�	�����������������	�������������������������	�������������������������	�������������������������G::���	�������������������������G::���	���������������������������G::���	���������������������������::���	���������������������������:���������������������������������������������������������������™������������������������������™���������������������������������������������	���������������������������������������������������������������������������������������������������	������������������������ڙ������������������������������FFjj�j�F����������������������DDjjiSPQQP�QPP�Ri�D������������������CCffh�
��h�C��������������������������CCff���������ff�C�������������AAede����edeA�����������������@@edc��������c�@�����������������>>__a���������a�>�����������������������==__�����������_�=�����������������<<\]]��������]�\<�������������:�\]Z������Z�:�����������9W�X��������X�9����������������8W[W�8��������77UU�U�7���������66UUS��������S�6��������55NOQ�
�Q�5�����	��������33NON���������NON3��������11LL����LL�1�������//LLJ�������J�/�����������..EEH����������H�.��������--EE�E�-�������++DCC���������C�D+������**DCAD
D�A�*������((!!?�
�?��(��!�!�(I����������������������r��G��"����
��� ���!���	"���	#���$���%��%��%�	%�-�-����)����)�-�-����)����)�-�-����)����)�-�-����)����)�-�-����)����)�-�-����)����)��*��@2�@AABCE@@�2,0audio�	

-��,0��,0��������ͯ������������˺����������
����ƹ�����������������������������������������Ų������������������������������������������Ŀ��þ�����������������������Ŀ����������������������Ž������������������������ļ�����������u�����������Ž�����������u��������������������Ž���������½�u���������������ƿ����������þ�u���������������������������Ŀ�u������������������������������ſ�u����������������������ƿ�v��������������������������������ƽ���������������º�����������������������	������¼�������������������������
��þ����������������Ĥ����������¾���������������ģ�����pu��������¿�������������������������p�~�����������¿������������������������p�x���������
���������p��������������������à�������p��x����������������Ÿ�������p���{���������������������p�������������������������������������p�������������������p����š���������������������������ÿ��p�x����¥����
���������p�vv�������������������������������p�{�~|��������������������������p�{���v����w���������������������쿻��p�{����v���������������������龻��p�{�����v����������������������p�뽺��p�{������|��~��������������pp�vp�����p�{������u�}�������������������pp�vp~uutrp�z������t�u�����������������pp�v{�������z������xz����������������ppt����겉��w�����~xs�����������������pt�������u�����tt���������������t����ə���w����zq��������亗�r�����”���w�����p��������䵺��q���������{z����r����������s{����xu����z���������pry���~yra�0p�trqrpX#�0����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������μ������������������������ͻ����������	w������������������ͻ����������	w��������������������Ͻ����������	w���������������������п�����������w�������������������������������w�����
������ý������������w�������������������������������������z����������������������ɰ�������������ϵ��������������������������������������������ź��������������������������������������Ǽ�����������������
������������½�������Į�������������������������������ϳ������������������������������������׵�������⪹������������������������Ӷ�������������������Ϊ���������������������������ͭ��������������㽽���������й�������������������������DZ������������������Dz�����������ỻ�������Ѭ�����˰�����������������⹹�������Ѩ������Ʋ��������
�������Ѭ����������
����������Ѭ�������ͪ��������������Ḹ�������Ѭ�ƺ����ϸ������������Ḹ�������Ь���־��Ϳ������������෷��������Ь����ڹ����������������෷��媣�����Ϭ�����ڨ����������	��߷���媣������ά�����ݦ���������������߷���窯������Ǭ�����˪�����������������෷����������ê����߯��´�����������������߷��������������Ц���������������߷�������»����֫����������߷���������­����������������߷���������µ����ǥ����������������������������������������	�F��������2	�F��������������������������
������������������������������	���������������������������������������ﵵ���������������������������������������������������������������������������������������������G::����������������������������G::������������������������������G::������������������������������::������������������������������:���������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������!=������������������������������������`1�����������������������������a)�����������������������������;E������������������������������99)�������������������������������6J-l������������������56E>�����������������������3�#b9������������������0�"Fl;�������������������������.5:@t=����������������������,&%48:C`R����������*/�I088N8����������(/�Ɂ.5*A)�������������������&/��Ъ,<���
���������#/����C`���	�������������!/����BIU�������������.����$M9x��������������F�.����$X%�����������#-&.����3BO���������#BDD�0(���FG"��������������!DD�8 ���,&�����������2DD�C

+����9 z����������CDD>

���ڎs����������


3���� w�����
�������

�.����P���������

�����������������������
��r��G��"��
��	��� ���!���"���#���$���%��%��%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��B�$����$��3��&����'����(����(����(���(��*'������H@@�^J@@�2���J .0application�	

��{.0��.0��������ͯ������������˺����������
����ƹ�����������������������������������������Ų������������������������������������������Ŀ��þ�����������������������Ŀ����������������������Ž������������������������ļ�����������u�����������Ž�����������u��������������������Ž���������½�u���������������ƿ����������þ�u���������������������������Ŀ�u������������������������������ſ�u����������������������ƿ�v��������������������������������ƽ���������������º�����������������������	������¼�������������������������
��þ�����������������vv�����������¾����������������vv����������¿������������������vv��������������������¿������������������vv����
�����
���v��������������������������à�vv����������������������Ÿ�vv���������v�v�����������������vv���v���������v��BAA@??�>==<<;:�9�v���������������vv�Ueedcc�baa`__�^]]\[[�G�v���������v��Qb}{a`__^]]�\[[ZYYXX�D�v��������������v�M_y}x]\[[ZZYYXWWVSKHH,�v�����������罾��vv�I\[v}uYXXWWVUTKC:66��v��������������vv�FXt}srr�UTSNC866��v��������𼽽����vv�BU}qp}}�QG=66��v����������������v��?RQQ�njb86
6��v��������򺼗�vv�;ONNI=6
6��v��������񼻻����vv�7LG=66��v���������������vv�0<66��v�������������vv�66��v�������������vv�66��v������󻺺�����vv�66��v��������vv�66��v���������vv���v������vv�����v��v@����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������μ������������������������ͻ����������	w������������������ͻ����������	w��������������������Ͻ����������	w���������������������п�����������w�������������������������������w�����
������ý������������w�������������������������������������z����������������������ɰ�������������ϵ��������������������������������������������ź��������������������������������������Ǽ�����������������
������������½�������Į������������������������������ϳ������������������������������������׵�������������������������㿿��������������������������������������㽽����������㽽����������������������
����HGGFFE�DCCBBA@�?�����������ỻ�\nmmllkkjihhggffeddccN��������������⹹�Xk�ihhgffeeddcbaa``�J�������
���Tg��eddcbbaa`__^ZROO1����������Pdc��a``__^]\RJ@<<�"���������������Ḹ�L`�䂁�\�[UI><<�"�����������Ḹ�H]���XNC<<�"������������෷�EZYXX}yo><
<�"������������෷�AVUUPC<
<�"������	���߷��=SNC<<�"������������߷��5B<<�"�������������෷�"<<�"�����������������߷��"<<�"�������������߷��"<<�"�����߷��"<<�"������߷��""���������������@��������������������������
������������������������������	���������������������������������������ﵵ���������������������������������������������������������������������������������������������G::����������������������������G::������������������������������G::������������������������������::������������������������������:���������������������������������������������������������������������������������������������������������������������������������������	��������������������������������������������������������||��������������������������������||�������������������������������������||�������������������������������||��������������������������������||�����������������������������||����������������������������������||��������������||��|������������||���|����������||�HGGFEEDDCB�A@@�?�|������������||�\nnmll�kjiihgg�feedccM�|���������������||�Xk!jiihggfee�dcbba``�J�|��������|��Tgh!geedcbb�a``_^[SPP1�|��
��|��Pece!da``�_^^\SKA==�"�|��������������|��L`c!baa�]\\VJ?==�"�|������||�H^!``!!�YOD==�"�|��������||�DZYY�\XP?=
=�"�|������||�@WVVPD=
=�"�|����������||�<TND==�"�|��������||�5C==�"�|�������||�"==�"�|����������||�"==�"�|��
������||�"==�"�|������||�"==�"�|������||�""��|��	�������||������|��|@����������������������r��G
��"
�������
 ���	!���"���#���$���%��%��%�%�%�%�%�%�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+��*��@2�@AABCE@@�20/swf�	

�����$��0/��0/������������ͯ���������������˺�����������
����ƹ�����������������������Ų������������������������������������������إĿ��þ�����������������������Ŀ����������������������Ջ�������������������������������Ҋ������������u����������������������ҋ������������u������������������틽���������½�u���������������������Ћ�����������þ�u���������������ϋ������������Ŀ�u��������	��ȋ�������������ſ�u�����̓��������������������ƿ�v�����͍����������������������������ƽ�����̧�����������º������������������������	������¼��������������������������
����ļ������������������������������������������������������������������������������͢�������������������������³�������������͠����
���������������	������������������������������à�����������������������������Ÿ������������������������������������������������������������������������������������������Կ����������������ÿ������������������������������������ҿ��������	�������������ɾ�������������
�����������������������������������������������ʽ������������
��������������ѿ�������������������������������ż���������
���������������˼����������������
�������������˼���������������
��������ƻ���������
�򼴻�������ƽ�����������
�����������������������������
���� ����
�������������������%�0�x�����������������x��������������������������x�����������������x������������wvv�wvv�wv	v�wvww���������s��ss������������nonoonnonnonnoonn�nnonn�����������j�j��jj��jj��j���jj������������gfgg�ghg�f�gg�f�gg�fg�gg�hg��μ���������b�b��b�b�c�bb��bb��ͻ����������	w��b��bb��b�b�c�bb��bb��ͻ����������	w��_�^_�__^�__��^^��__�^_^_^��Ͻ����������	w��\]]\[���]\\��\\]�\\�\\]\\��п�����������w��[�YZY[Z[[�Z[[Z[[�Z[[Z���������������w��Y�XYXYXYY�i���ý������������w��Y�XYXYXY������������棤��������������������z��YY�XYXYX�������������������ɰ�������������ϵ�YY�XYXY��������������������������YY�XYX����������������͝ukkj������������YY�XY����������������������ɀpligg������������YY�X����
��������|tpmmlk��������Į�YY�������������րwvsrpoz�������ϳ�YY������������������ywtru������������׵�Y�����������yy�z{�����������
�����ށywxx�������	���������������xwwx������������
�����������������vvwx���������㽽������������vvx�y���������	��������uuvv�w�
��	���������uuv������ỻ���������������tuututuutv�������⹹���������}ss�vww�x�
���������rr���
�������������urr�t�������������Ḹ�������������ߓsrsr������������Ḹ��������ٙrr�v����������
�������{rsqqr�������������
��������rrq����������	��߷
���������ssrr�����������������߷
���������srr�w����������������
���������sr����	������������߷
�������������������߷
���� �߷
�������߷��������%�0�(hh�������������������������(hh�
������������(hh�������������(hh���������&'�&''&'&''&'&'&'&&�'&''���������$��$$������ﵵ� � �  � ��������������������������������������������������������������������������G::�����������������������G::������������������������G::���

�����

��

�

��������������::����












���������������:���



�


�




�,������������������



������������������������������



�����������������������������



�������������������������������������


���	�������\RTU�����������

����������������XGJMNN�����������

���������������I@ACFHJ�����������

������������������N@?@@ADS������������
�����������h@@??D����������������������������@@�C��������������
�������������O@@�A����������������������������@??@y����������������
����	���Z??�@�������������
����������??�@BB�D������������������x??�A�������
�������������A??�A��������������������??�A������������
��������Q??�DEE�F�������	����??�������	������E??�B���������������	��������v??��������
������>??�F���������
�������N>?>>��������
����?>�x�
���������
�������??>>�w������
����?>>�E������
����>?`��	��������
�����������
�� ��
����������������%�0��������������!���
"���	#���$��r%��G&��"'��(��(���)�����(���	"���	#���$���%��%��%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%��!�$��*�2@AABCE@@2.0rar�	

�#�,.0�@.0�P����������ͯ��������������˺������������
����ƹ�������������������������������������Ų������������������������������Ŀ��þ�������蚭����������Ŀ�������笘�������󐽳��������������������퐼�����������u������𔕔������ꕔ��������������u���������撓����퐽���������½�u����𑒒������쒑�����������þ�u��
����
�쒑������������Ŀ�u��
����
�쒐�������������ſ�u�����������
���������������ƿ�v��������������������������������ƽ����������������º������������������������	������¼��������������������������
��þ����������������Đ������������¾����������������������������¿����������������������������������������¿������������������������
�����
������������������������������à������������������������Ÿ������������������������������������������ș�������������������������ə���������������ٔ����ș����������ᨬ�����Ǚ���������������ߴ������ƙ�������������������ݴ�������������ř��������������������ߴ�������������Ù�������򼽽�������������������Ù�����������������ߵ���������������������������ݷ�����������������������������޷����������˿����������𶻗�����ݸ��������������ʾ��������������ݸ�������������ɼ�����������������ܹ�����������Ȼ������񻺺���������ܹ����������Ǻ����������ϔ���ϔǹ�������������������������������������������ŷ��������������������@�q�����������������q��������������������������q�����������������q������������pq�pqpqqpqq�pqppq�p���������n�����������j�kjjk�jkjjkj�����������g��g�g����gh�g�gg�����������d��ۂd�dd��c��dd��μ���������a``aa��aa�����`�aa�`��ͻ����������	w��_^_��^_^�__��_�_^^�_^_��ͻ����������	w��\]�\�\\��\]��\�\\��Ͻ����������	w��[��[\\{��[�[�[[�\��п�����������w��
Y�XY
Y�c���������������w��
Y�XY
Y�c���ý������������w��Y�������������杞��������������������z��YY�������������������ɰ�������������ϵ�YY�������������������������YY����������������ź���������������YY����������������������Ǽ�������������YY����
������������½�������Į�ll�����������������������������ϳ�ll�����������������������������������׵�ll������������������������㿿ll������������l��������������������������㽽ll�������������㽽llk���w���������������k������
��j�~z�����~}}|�{yy��~~j���������ỻii~j~~�j~i������������⹹hh||�LQQ�T�||h������
��g���Ucc�[�uug��������e�~�Uss�����ss�c�ssf��������������Ḹee}}�U������j�rqe���������Ḹcc||�Unn����oo�b�ppc�����������෷aa{y�U������m�ooa�����������෷``xx�W{{�{�j�ll`�����	���߷�^^xx�W{||�������}}�l�kk_�����������߷�^^wv�Xggil�����lii�a�ji^������������෷\\uu�Xxyyz����Ӄ{{�n�hh\����������������߷�[[ss�Xqqr����́rr�i�ggZ������������߷�ZZrq�Xll����ll�f�feZ����߷�YYqjq���qjfY�����߷�XXllkj�ihhgg�fee�daa�W������WWmkmjihhgg�feedc�ac``W���UVWVUVVUWVVUUVU�WUWVUVVU?��������������������������������
�����������������������������������������������������������������������ﵵ����������������������������摦���������������������奏������������������������������������������G::�����������������������������G::����������㈉�����������������G::���������������������������::���
����
������������������:���
����
��������������������������������������������������†�����������������������������†������������������������������������������	�������������������������������������������������������������������������������������������66�������������������������������������66�������������������������������66��������������������������������66�����������������������������66����������������������������������66�a���������������66X�=��������������55XX�`����������44C@FHFFDCBA@�?FCC4���������������44CQCC�QC4��������������22BBJ##�$JBB4��������1D�I%//�)I==2��
��0C�I%;;�����;;�/I;;0��������������0B�I%FF�F�4I::/��������//AAJ%88����88�/J99/��������..@@I%FF��FF�6I88.��������-->>H&AA�����AA�5H66-������������,,>>H&AA�����AA�5H66-������++>>H&1148���ϼ844�.H55+�������))==G&>>�@K����LAA�7G44)����������((;;G&::�Q���Q::�4G22(��
�����((::F&66�^�^66�1F11(������'':Q:XX�:Q1'������''665421�0//�'��	����&&:6:55442210/�.2..&��%�&%%&%%&%%�&%&&%?�����������������
 ���	!���"��r#��G$��"%��&��&�����%�����&���"���#���$���%��%��%�%�%�%�%�%��8�'��8�(���)�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+��*��p@2�@AABCE@@�2.0tar_bz�	

"�.0�.0�����������ͯ��������������˺������������
����ƹ�������������������������������������Ų�����
����������������������������Ŀ��þ����������������������Ŀ�������瘘���߬�����񘐽�����������������𩕕𩕕���𩕐������������u�����敕�����𔕔𔔩𔕐������������u�����擒��𒒓���𧒒�����������½�u���������������쒑�����������þ�u��
����
�쒑������������Ŀ�u��
����
�쒐�������������ſ�u�����������
���������������ƿ�v��������������������������������ƽ����������������º������������������������	������¼��������������������������
��þ����������������Đ������������¾����������������������������¿����������������������������������������¿������������������������
�����
������������������������������à������������������������Ÿ������������������������������������������ș�������������������������ə���������������ٔ����ș����������ᨬ�����Ǚ���������������ߴ������ƙ�������������������ݴ�������������ř��������������������ߴ�������������Ù�������򼽽�������������������Ù�����������������ߵ���������������������������ݷ�����������������������������޷����������˿����������𶻗�����ݸ��������������ʾ��������������ݸ�������������ɼ�����������������ܹ�����������Ȼ������񻺺���������ܹ����������Ǻ����������ϔ���ϔǹ�������������������������������������������ŷ��������������������@�q�����������������q��������������������������q�����������������q������������pq�pqpqqpqq�pqppq�p���������
n��nn�����������j��kjjk�jkjj�kkj�����������g������gg�g�g�g��gg���g�����������d��d�ddc�d�΂d��d�dd��d��μ����������a`�a����a�`a�`a�aa��`��ͻ����������	w��_��^�__^�_�__��^_^�^^}�^_��ͻ����������	w��\��\�]\��\�\\]��\\�\\�{\\��Ͻ����������	w��[��{��{�\�[�[�[��[[����\��п�����������w��
Y�XY
Y�c���������������w��
Y�XY
Y�c���ý������������w��Y�������������杞��������������������z��YY�������������������ɰ�������������ϵ�YY�������������������������YY����������������ź���������������YY����������������������Ǽ�������������YY����
������������½�������Į�ll�����������������������������ϳ�ll�����������������������������������׵�ll������������������������㿿ll������������l��������������������������㽽ll�������������㽽llk���w���������������k������
��j�~z�����~}}|�{yy��~~j���������ỻii~j~~�j~i������������⹹hh||�LQQ�T�||h������
��g���Ucc�[�uug��������e�~�Uss�����ss�c�ssf��������������Ḹee}}�U������j�rqe���������Ḹcc||�Unn����oo�b�ppc�����������෷aa{y�U������m�ooa�����������෷``xx�W{{�{�j�ll`�����	���߷�^^xx�W{||�������}}�l�kk_�����������߷�^^wv�Xggil�����lii�a�ji^������������෷\\uu�Xxyyz����Ӄ{{�n�hh\����������������߷�[[ss�Xqqr����́rr�i�ggZ������������߷�ZZrq�Xll����ll�f�feZ����߷�YYqjq���qjfY�����߷�XXllkj�ihhgg�fee�daa�W������WWmkmjihhgg�feedc�ac``W���UVWVUVVUWVVUUVU�WUWVUVVU?��������������������������������
����������������������������������������������������������������
����������ﵵ���������������������������������������������������叏���ܥ��줏����������������������������������������G::������䋋�������������������G::������䉈�����������������G::����������������������������::���
����
������������������:���
����
��������������������������������������������������†�����������������������������†������������������������������������������	�������������������������������������������������������������������������������������������66�������������������������������������66�������������������������������66��������������������������������66�����������������������������66����������������������������������66�a���������������66X�=��������������55XX�`����������44C@FHFFDCBA@�?FCC4���������������44CQCC�QC4��������������22BBJ##�$JBB4��������1D�I%//�)I==2��
��0C�I%;;�����;;�/I;;0��������������0B�I%FF�F�4I::/��������//AAJ%88����88�/J99/��������..@@I%FF��FF�6I88.��������-->>H&AA�����AA�5H66-������������,,>>H&AA�����AA�5H66-������++>>H&1148���ϼ844�.H55+�������))==G&>>�@K����LAA�7G44)����������((;;G&::�Q���Q::�4G22(��
�����((::F&66�^�^66�1F11(������'':Q:XX�:Q1'������''665421�0//�'��	����&&:6:55442210/�.2..&��%�&%%&%%&%%�&%&&%?�����������������
 ���	!���"��r#��G$��"%��&��&�����%�����&���"���#���$���%��%��%�%�%�%�%�%��8�'��8�(���)�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+��*��@2�@AABCE@@�2.0tar_gz�	

M!�K.0�_.0�o����������ͯ��������������˺������������
����ƹ�������������������������������������Ų�����������������������������Ŀ��þ�����������蚭����������Ŀ�������ꘘ���笘瘗����񘐽�����������������𩕕������敕�������������u�����𕕔�𩕕攕�𔔩攕�������������u�����擧��𒒓����撧������������½�u��������������쒑�����������þ�u��
�������썑������������Ŀ�u��
����
�쒐�������������ſ�u�����������
���������������ƿ�v��������������������������������ƽ����������������º������������������������	������¼��������������������������
��þ����������������Đ������������¾����������������������������¿����������������������������������������¿������������������������
�����
������������������������������à������������������������Ÿ������������������������������������������ș�������������������������ə���������������ٔ����ș����������ᨬ�����Ǚ���������������ߴ������ƙ�������������������ݴ�������������ř��������������������ߴ�������������Ù�������򼽽�������������������Ù�����������������ߵ���������������������������ݷ�����������������������������޷����������˿����������𶻗�����ݸ��������������ʾ��������������ݸ�������������ɼ�����������������ܹ�����������Ȼ������񻺺���������ܹ����������Ǻ����������ϔ���ϔǹ�������������������������������������������ŷ��������������������@�q�����������������q��������������������������q�����������������q������������pq�pqpqqpqq�pqppq�p���������n�����������j��kjjk�jkjjkj�����������g���g���gg��g����g���g�����������d��d�ddc�d�ۂd�dc��dd��d��μ����������a`�a����a�`a�``a�aa��a`��ͻ����������	w��_��^�__^�_�~__�^_��^^}�^_��ͻ����������	w��\��\�]{��\�\\]|��{�\{�\{\��Ͻ����������	w��[�{��{�\�[�[[��[���\��п�����������w��
Y�XYY�Y�X���������������w��
Y�XY
Y�c���ý������������w��Y�������������杞��������������������z��YY�������������������ɰ�������������ϵ�YY�������������������������YY����������������ź���������������YY����������������������Ǽ�������������YY����
������������½�������Į�ll�����������������������������ϳ�ll�����������������������������������׵�ll������������������������㿿ll������������l��������������������������㽽ll�������������㽽llk���w���������������k������
��j�~z�����~}}|�{yy��~~j���������ỻii~j~~�j~i������������⹹hh||�LQQ�T�||h������
��g���Ucc�[�uug��������e�~�Uss�����ss�c�ssf��������������Ḹee}}�U������j�rqe���������Ḹcc||�Unn����oo�b�ppc�����������෷aa{y�U������m�ooa�����������෷``xx�W{{�{�j�ll`�����	���߷�^^xx�W{||�������}}�l�kk_�����������߷�^^wv�Xggil�����lii�a�ji^������������෷\\uu�Xxyyz����Ӄ{{�n�hh\����������������߷�[[ss�Xqqr����́rr�i�ggZ������������߷�ZZrq�Xll����ll�f�feZ����߷�YYqjq���qjfY�����߷�XXllkj�ihhgg�fee�daa�W������WWmkmjihhgg�feedc�ac``W���UVWVUVVUWVVUUVU�WUWVUVVU?��������������������������������
�����������������������������������������������������������������������ﵵ�������������������������������摦������������������菏���奏収������������������������������䌌�������������G::���������䊋��䊋������������G::������䉟������㈟�������������G::����������������������������::���
�����������������������:���
����
��������������������������������������������������†�����������������������������†������������������������������������������	�������������������������������������������������������������������������������������������66�������������������������������������66�������������������������������66��������������������������������66�����������������������������66����������������������������������66�a���������������66X�=��������������55XX�`����������44C@FHFFDCBA@�?FCC4���������������44CQCC�QC4��������������22BBJ##�$JBB4��������1D�I%//�)I==2��
��0C�I%;;�����;;�/I;;0��������������0B�I%FF�F�4I::/��������//AAJ%88����88�/J99/��������..@@I%FF��FF�6I88.��������-->>H&AA�����AA�5H66-������������,,>>H&AA�����AA�5H66-������++>>H&1148���ϼ844�.H55+�������))==G&>>�@K����LAA�7G44)����������((;;G&::�Q���Q::�4G22(��
�����((::F&66�^�^66�1F11(������'':Q:XX�:Q1'������''665421�0//�'��	����&&:6:55442210/�.2..&��%�&%%&%%&%%�&%&&%?�����������������
 ���	!���"��r#��G$��"%��&��&������%�����&���"���#���$���%��%��%�%�%�%�%�%��8�'��8�(���)�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+��*��@2�@AABCE@@�2)#folder_closed�	

:)#)#/���ss��}}���������~}|}�����������������}}���������~}|}����p
p��������������~}|}����������¾����ًy������������~}|}������
���������ꆅ��������~}|}e�����������}e�����������������pp�S�������������������񼖀_e���������������撑������������u�n~������������������������������������t�i}��!��s�`}����������������������������r�k}������	����������������r�x}�������������p��}��������������������~oƜ~�������������������������~o�~�������������������������~n��������������������
�����~m��~����������
������������}l��~��������}l~��������������������������}j��z�����������
������������|i��z������������{i��z������������{h��z����������������	��{h��z��������������{g��z�~�~~~�~~~�~zfzz��~~}}~~�}~~�}~~�zfzz��}}�|}}�|}}|}}�{f{{��||�}||�}||�}||}}|}zezz��||{|{�|{{�|{||{�|{{yev�kkjklmnop�qxzel{!{�oz\;j!j�dW(����������������������������������������������������������������
�﫨������������������������������������櫞�������������������������ÿ
��ı��������������������������ÿ��ϲ��������ؽ�����������հ�����p�׼��������������������¦_}�ջ�����������������������򽼼���~�Ӹ����������������󻺻������z�ӻ!�����z�Һ�����������㻺�����������������������к����	�����������������Ϲ������������Δ�͸�����������������󹸸��Ц�˷�����������������������������ụɶ������������������������Ѧȶ�������𶵶����������������������Ŵ����������������ij!�������²����������������������������������������������������������������������������������������	����������������������ˡ�������������������	�����ˠ�����������������������������������������
������������������������������������	�����������������������������������𦥦��������������������������������������!�����N�!���r(�������������������������������������
������������������������������������
���������������������������������������������������̏����������������������}����������������������՘�����������������������ղ���!���Ӿ���������������������ӹ�����������������������������ӽ��������������߾����������������������������������������������������������������	���������������������������������������������������������������������������������������������������������������������������������������
���������������������������
���������������������������������������	��������������������������������������������������
�������������������������������������������������������������������������������������������������!���p�!���(�	������%����������������`*����#�����$����$����$����$��
��$���%��
��$����$��	��$����$����$����$����$���%���%����$����$����$����$����$����$����$����$����$����$����$���$���'e�!��܂$$99:;;=99�=;;:99$//Layer 5�	

,�//�//������
����Ҵ����������
������	����ü���s���������̽���%�x�������	��������x������
������������Ҽ�������x�������	�����ü�����̷����s��x����������̽�����ů������r�������	����������ª������������
�������������Ҽ�����§�������� ������	�����ü������̷�����ħ������������������̽������ů�����ũ����������������	�����������ª�����ܭ��������ڸ������������������Ҽ������§�������������������������������̷������ħ�������Ϭ��������ݸ�������޶������ů������ũ�������־����������������������������ª������ƭ��������ڶ����������������§������ӳ���������£�復��������������������ħ�������Ш���������ݸ�����������������������ũ�������ֿ����������������˹����������ƭ��������ڷ����������������������������dz���������¤��復���������������
����˷����������ݸ�ﹺ����������������������̾������������������˹�����������������÷����������������������������ƺ�����祦��������������������������ý���𹺻��������������������������������������������˹�������������ֿ����������������������������վ�������������������������������������ս�������������������������������ս������������������������ֿ���Ӿ�������������վ�����ҽ���������������������������������ս�����ѽ������������ս���н���������������������ֿ����Ӿ�����н�����������������������������վ�����ҽ���Ͻ�����ս������ѽ��׾�����ս����н���������Ӿ������н����������������������ҽ���Ͻ����������������������������ѽ��׾�������������������������н���������������������������н�������������Ͻ�
�������׾�
���������
����������
������
������������������
������������������
�t�������������������'�y�������������������������y������
���������������������y����������������������������t��y����������������������������s���������������������������ս����������
�������������������Ժ������ ����������������������������ֻ�����������������������������������ؽ������������������������������������ս��������������������������������������Ժ���������������������������������ֻ������罹������������������������������ؽ�������֪�������������������������ս�������������̱������������������������Ժ��������������׵������������	�����ֻ������軽��������������������
����ؽ�������װ��������������������
�������������͵����������������������������������ض��������������������������������̻����������������������������
�����Ҿ��������������������������������������ɻ���𲴶��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������
��������
�������
�������������������������������
����������4��~���������������<�������������������������������������������������������������������������~��������������������������}��������������������������:#(���������������������������������������2U����������������������������N���������������������������������������������������������������������	������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������
����������
��������
�����������
������9����������������������������������������������&�����'�����(�����)����*����+����,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���%��&���%���%�������������������(/unknown�	

0(/0,(/0<������ͯ������������˺����������
����ƹ�����������������������������������������Ų������������������������������������������Ŀ��þ�����������������������Ŀ����������������������Ž������������������������ļ�����������u�����������Ž�����������u�����������������˳���~z��������½�u�������������ʛ����yw��������þ�u������������ɛ��샂�{y���������Ŀ�u������������ɭ��뛹�������������ſ�u�������ޒ�������������������ƿ�v�����������Ä���������uom��������ƽ�����������������º���pn�����������������	������¼���mk�������������������
��þ��plr��������Ĥ���������¾�zrr�����������ģ���������®~{z�������ٳ�������������������������¨�}z��������������������
����������	��������������������������������à��������������������������Ÿ�����������������������������������������������������������
��������������������������������������������ÿ��������������������������������������������������������������������������������������������������������������������������񾻽�������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������$�(����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������μ������������������������ͻ����������	w������������������ͻ����������	w���������������н���������������	w��������������湣�����������������w���������繣�좡���������������w������ˣ�����Ȥ�������������w��Ǯ����������氣�������ž�������������z��������������⣣�������ɰ�������������ϵ������ϣ������������������������������������������ś������������������������������������ӽ������������������
���������ɗ����������Į��������������͜�������������ϳ�������������������ǟ���������������׵�����������͢������������������
�ߧ�������������������������ţ������������������������������������������㽽����������񴣣�����������������������ⴣ������������������������ỻ�����������������������������⹹����������ڣ����
�����������٣�
��������������٣������������Ḹ���������������������������Ḹ��������������������������������������������������������	��߷�������������������������������߷�����������������������������������������
������������߷�����������������߷���� �߷�������߷��������$�(��������������������������
������������������������������	���������������������������������������ﵵ���������������������������������������������������������������������������������������������G::����������������������������G::������������������ֿ������������G::��������������������������������::�������������������������������:����������������������������������������������������������������������������������ϴ��������������������������������ڽ������������������������޻������������������������������׫�����������������������������൭��������������������������������㹶����������������������������༸��������������������������������������������������������Ŀ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	��������������������������������������������������������������������������	���������������������������������������������� ������������������$�(����������
���
������
���	��r��G��"������� ���!���"���#����#����$���$���$�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%�%��!�$��*2@AABCE@@2lib/img/src/icons-big.pxm000064400000424246147361034410011274 0ustar00PXMT_DOC�HEADER0F@N��%1����METADATAg�3streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_IMAGE_ZOOM_�����NSNumber��NSValue��*��f������_MASKS_VISIBLE_RECT_�����{{0, 0}, {0, 0}}�����_DOCUMENT_SLICES_�����NSMutableArray��NSArray�������_PX_VERSION_����� 1.6.5�����_DOCUMENT_WINDOW_RECT_�����{{695, 4}, {200, 874}}�����_PRINT_INFO_�����
NSMutableData��NSData���}�[381c]streamtyped���@���NSPrintInfo��NSObject�����NSMutableDictionary��NSDictionary��i����NSString��+NSHorizontallyCentered�����NSNumber��NSValue��*��c������
NSRightMargin�������f�H�����NSLeftMargin�������H�����NSHorizonalPagination�������������NSVerticalPagination������������NSVerticallyCentered�������NSTopMargin�������Z�����NSBottomMargin�������Z��������_LAYERS_VISIBLE_RECT_�����{{0, 0}, {239, 240}}�����_DOCUMENT_SLICES_INFO_���������PXSlicesPreviewEnabledKey�������c������PXSlicesVisibleKey��������__OLD_METADATA_FOR_SPOTLIGHT__���������	colorMode�������������layersNames���������image�����folder_open�����js�����zip�����xml�����php�����Layer 2�����Layer 1�����pl�����c++�����sh�����rb�����py�������css�����html�����office�����pdf�����rtf�����txt�����video�����audio�����application�����Layer 4�����swf�����rar�����tar_bz�����tar_gz�����
folder_closed�����Layer 5�����unknown������keywords����������
csProfileName�����sRGB IEC61966-2.1�����resolutionType�������
resolution�������d�H�����
canvasSize�����
{48, 1350}������PXRulersMetadataKey�������������PXGuidesArrayKey�������������PXGuidePositionKey�������3�����PXGuideOrientationKey��������������撄����d���醒����撄���������醒����撄���������醒����撄���������醒����撄���������醒����撄���������醒����撄�����,���醒����撄�����^���醒����撄���������醒����撄���������醒����撄���������醒����撄�����&���醒����撄�����X���醒����撄���������醒����撄���������醒����撄���������醒����撄����� ���醒����撄�����R���醒����撄���������醒����撄���������醒����撄���������醒����撄��������醒����撄�����L���醒����撄�����~���醒����撄��������醆����PXRulersVisibleKey������������_MASKS_SELECTION_�����I�[73c]streamtyped���@���NSMutableIndexSet��
NSIndexSet��NSObject��I������_ICC_PROFILE_NAME_��ڒ���_ORIGINAL_EXIF_���������*kCGImageDestinationLossyCompressionQuality������������Depth������������{TIFF}���������ResolutionUnit�������Software�����Pixelmator  1.6.5�����Compression�������DateTime�����NSMutableString��2011-06-29 00:43:24 +0400�����XResolution�������H�����Orientation�������YResolution�������H������PixelHeight��������F��1������{Exif}���������PixelXDimension�������0�����PixelYDimension��������F�����
ColorSpace��������{JFIF}���������YDensity�������H�����
IsProgressive������������XDensity�������H�����DensityUnit��������{IPTC}���������ProgramVersion�����Pixelmator  1.6.5�����ImageOrientation�������Keywords��؆����ProfileName��ڒ���DPIWidth�������H�����{PNG}���������XPixelsPerMeter�������������YPixelsPerMeter��������������	DPIHeight�������H�����
ColorModel�����RGB�����HasAlpha�������
PixelWidth�������0������_DOCUMENT_LAST_SLICE_INFO_���������PXSliceMatteColorKey�����NSColor���ffff�����transparent�������PXSliceFormatKey�����PXSliceFormatPNG24������_LAYERGROUPS_EXPANSION_STATES_�������������_STATE_��B����_ID_�����:E79DCA12-B4EE-4736-8A6A-A627325955EA-7379-00002316C56B276C�������g�B�h����:3922FA03-A14E-4351-8F90-4D4F209DC60F-7379-00002316C56840C4�������g�B�h����:19A73FEE-6F06-496B-9B66-0A245313ADD2-7379-00002316C565ECE7�������g�B�h����:A893724F-8BC4-454E-A572-93FDDAFC24C5-7379-00002316C56334CE�������g�B�h����:4D59E174-172F-49CD-B4DB-377EB6023F59-7379-00002316C56027CF�������g�B�h����:08376F99-D214-4BC8-89DC-53E300E92EC7-7379-00002316C55D7573�������g�B�h����:B2F945CC-6F8A-487E-AFBA-B0FD7884F14F-7379-00002316C55CB926�������g�B�h����:6562DF83-49EA-4C9D-8D0B-B12C0B490733-7379-00002316C55C2533�������g�B�h����:17587334-6891-4DC1-A036-A42C0CC05C44-7379-00002316C55B76EB�������g�B�h����:ACA63C41-62AE-451F-BA69-B732F1BFF96A-7379-00002316C558BA74�������g�B�h����:2EBCE85B-E4A7-4CB9-B899-402CA4328A32-7379-00002316C555EE1D�������g�B�h����:60DC7AD0-C861-40FC-B081-42AA0BA0CB0A-7379-00002316C5530CFA�������g�B�h����:E33C04F3-412A-4A76-A66D-D95AF23D97D5-7379-00002316C55048B9�������g�B�h����:ED0B4412-A7A6-4C29-9A10-D44162B75FFF-7379-00002316C54D92D2�������g�B�h����:E5A8CC16-4FF3-4C69-99B6-A8FB275E098C-7379-00002316C54AC95B�������g�B�h����:025399F3-BC6B-4021-83FF-D387659B52E7-7379-00002316C5480746�������g�B�h����:11295678-5AE8-49D6-A613-6E33D9ABFC95-7379-00002316C54520DA�������g�B�h����:E63A58F9-684D-4FF4-9040-9E5DE0A697E3-7379-00002316C54281D1�������g�B�h����:84295360-D2E0-4633-A5EA-07D523556162-7379-00002316C53FA9D3�������g�B�h����:D5FA1E74-21AF-4747-93B2-823D14673F93-7379-00002316C53CC7A2�������g�B�h����:81E977DE-E02B-4AD1-AA6A-7675B4567DD0-7379-00002316C53A1EA2�������g�B�h����:54F1F62E-9C05-4B55-811C-C1898599B2AE-7379-00002316C536FA9C�������g�B�h����:B05FB1FD-5F2A-44FA-B5AC-17BCA248584B-7379-00002316C534334D�������g�B�h����:B49D7B18-ECA8-4770-A48E-FE64CB968BB9-7379-00002316C5317201�������g�B�h����:CE265196-51BF-4C08-BA8D-06EF79150A40-7379-00002316C52C5E22�������g�B�h����:785F9AA0-2E04-4E5D-A83E-CF741050C650-7379-00002316C5297D4A�������g�B�h����:B0B847A9-6FD0-4740-B48D-A08479CA1F3A-7379-00002316C5269294�������g�B�h����:5AF3D56F-0F22-47A2-A385-5F0264522DFA-7379-00002316C523C5C4�������g�B�h����:F05830E5-724B-4560-9AB3-C00DC08A6E6A-7379-00002316C521112D�������g�B�h����:DE846D34-473C-4162-8C9B-57AAE55E0EFD-7379-00002316C51EC013�������g�B�h����:D178F1A1-DEC4-476D-BB2F-37B457F2FB7B-7379-00002316C51B6508�������_IMAGE_VISIBLE_RECT_�����{{-61, 0}, {169, 832}}�����_LAYERS_SELECTION_�����8�[56c]streamtyped���@���
NSIndexSet��NSObject��I�����GUIDES_INFO3d�����,^���&X��� R���L~	COLORSYNCHHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  ?�.�J��`�<_|}��cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m��LAYERSp�%�5�>�J�Xdff?g�i�u��c�Q�A�5��l���I��/��(7A�N�[�iLv�"��(.0�imaged':E79DCA12-B4EE-4736-8A6A-A627325955EA-7379-00002316C56B276C��$x��yp噇�YLv�j��8�c7�lm��J����s��k���]��Q�b�|߇�X�OY�}�4ݒu���ktK3��ht��d�{����X$^lo��z���V��t�3^�gGsƉ��Hd�rFA�O�������21Z���
f�j��.�����wu7��ڄW�:6�u��=���9b��	�n#���[�go���]��7e�5��`�mPg5&��0bʂ�<3�YiLu���ڃ�ǻ��k��h8�V��dL��򺙱Ua���թ<�i���FOU�8sז���7+�9܎N"���\��d�9P�k��Oٌ��,E�����3�9�x���9�5���?�n܎**XScF5j���߈�^#���w�ǘ��@���<��LGr�|�����e�A����f4ǯB���>z�ꩀ���M���o�H����=\R=L�g���OB��ݹe�ހ��?�G��ЍH���S���t�l���c����h/�EGQ�����)a�����lZ���<��a�.��M�'
�@_U��K�� �r��?�U�a>zkSђsN���6U������zx����Cߑ�k��:|�^t�0��*~��5g�V��Ŭ��ҿ���-���\�x���p
5�i`�[[{(T=L�f�Y������d��8�2s�t��d��D5�����Gw)F�פ(���@����=\�<�rw��hN���7��m-CF��OW?aG����?�c�k8y��:����ޒ��:��"`L�����[҃�kO�`-�=����4Pᶮ�ac�ڷ�K��F�˝��UdM`.q���=e�����T'��5�����3����s���=hs��Q�?��=U&�_�W%]��I�c�������D|��eptr������h�.⋩A�[���N��|��{�s���gnmH�U�V���ܧ��.n\��u���kQ�k�51����Y�aS:�ca΋�3#�bz�=�pm��=��X���87Ͱ���$yW��?�1X���G��(xr� �7���O�5e��4�L�X09�Go=�pX0�S��^�����;��w�8��A�[^�bqu�^y�x+��r�F+WA���X�8���TW!F�9�V�P���h��Ea��Da�!�Ai�q�O�)3����;����T{�2�,�����vK�@i4σ�Se�\9	�7�eD��ɝ����8�f��6�Q��~FΣq�(��#9���?��1��I���6������;�XS�#OTQ햖��(^�|��3�z��uw.�Z/�1#�4����Ry^�p%;5�3Z	~��QEg�.�\W�z�)��y�.��Π�R(�]xϽ��Kq$���� ~Bo)�!��r��%�:A�2�LsNo����4�g�
CC�9TӵJ��a�ZC�g�gu#1Ρ���p�}{?����WAy6�:���S���	��g,Ep�_�ЕL�T'��8mEQ���`�ga�V4�+n̹�j}K~8�
#�U��$_y����W���U�.�K'q1��w.�U�j�����y4]=l�ɰT&�(����ž:=�d�!C�
|�K��=K�55�����g��8{����V�\� 5���1�H��	��y'(�$��l�G�a�J:ɠ[2=
�/������L�����Ĝ��G���ﴳ��ߛ���g]Q�^N{��א�kEp��v2�����D����;�!��ni���|�9����/GY�E
9����~
%���Nr�F�5a������t�<�s>T�s�]=���=�k׏�����rL�ڶ�l��*z�XEY�ܽN��v�RXX�����JvN�Og�"Ћc�U]`.u��WF�ލlo��ٿ����w���Ltr�1��U>��gB'�\$'9���mm�7��bb��� �� LG�E��`��(B݄i��c�Ϻ����oK�0^�Q��q�Ծ��ӕ�1�n�/�y
�F�ޓs�&���|8ͥ8\y(J�$�e�,Z1Y�&��5��12�I�(�˓1Y���8�N�ſF�Q{Ծ
��_���gԐ\ܤfadM�׷uq<�+vؕ���W�EaL ��)~'�2�0�ߠƫS196�ak7,M��\�n��C�/~�kt��/!��ۑ���O�|��޸,����]��֬s7�����>fG_a4����o,EW�	]���\��pu2ϟ�M�tC&���a,F����&�Z�ho5!4?�|VN���5�����ǐ���;ő>N�%姜���V���~~�\�
���=����et47��f����c�@gG�{�f���,ԧŢ&SϞ��RY���(�Ko��-�{N�BPWk�>F���D�(/!�H��]�&����37��dgaxx'���+%g+sq���n�}�}�hi2c��E~�id_@��S�� 6+��p�(v��c�Y�"�o��y�qq�		�%��t�s�W:)O3��$r�]/�:�VV&�h-C|C)ޭN���Lt
��p`tl�]]��b�����
��H_�?�](�d!��>N���r����KAj�qqq7�_�߯T�bΗ�$'.�.$cK��33�>80�
�A��CNv6^\��LJ�����[��-�vw�TmDF���`�[lN�����8߀øpb�-��ݏg������Y���X���&��Q�3V\ϵs�峝Z�d�쟞����>Ԗ��d�?�[/�
�0��#55o��種���ф�0D݋�#{��kR���Sx��k�\܇�/��]X{~���p߽����9��ǟEε���1ӑ��|�il6��D"�ry/���015�k׮a`|g��!󬩮g}� ��~����m��/>?sO�}����D����ȨHͿ���N!��{#u�9�i������oH��b����\6_AqQFFF�c���$�_;::�QQZ]d4�ܳ�n��>�J�ϱ��<�rO$�?�ᕃ���ޮ-x���ۊ���Gj��'��ڜ�;��ӭ�*��?U���n�ވM�|����=D���7�w���\���b�Mx�uXrt=�وo߀GC�㱄�x,�<��G�G�h�Q,	�K��s����>��aT9�S-|ob>�J
�-��X��]�x���ƞO
�.Y�����l���Ǧ7��'�¢�o�#����X���̓X|�,M8������U����W�z��K���$'S-��uIhoo��m��]������_|+^x/�\�Uk_�ç��W�-V��X��kX�<��������c?�.,�݇E���(�C,�ۢ��U�t�O�_�uw?r�L�SU>�RR"��ڰ������O�'��W?�e�>��W���Z�5?�^��Z������c��<ph8�,:�_���������mo`I�������R��&���+���܂�?|O�����X��s���GXvh^��O��_��_���M|wӯ�O���;�ăX��~��!,����#X���
�.��4#����O��
�D>ۛ��s7�β8���wR�.t��ߒ���|�	�q0��w������w*��-'N��<Գ���"��,X��9�<YE�]pg�c�e������streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��	0#����lfolder_opend':3922FA03-A14E-4351-8F90-4D4F209DC60F-7379-00002316C56840C4��@x͘kP�����$Sl1���2�L2�|h2��L?t:��th'�3ՙz�(��^"r���\8�*���Q��]v�lX����}�β�4m��}��<������[����/,Y�}Y����5��-�iW��U�Q��t�35iȧ��x�UI�E=mE���b?}]�OZ�"�hF6�U��Zt׉> �bF�F�H�C�Py������5] o�9�aj$���:����T�$ٺ��ٜKM���|2��!L@S�XM�4�^��g����p2��{���˟_�g�����?���	��R�PB�2��x�di+&��L���%4����~�����\.Ҁ�\f�l"C]6�?�tf��3�f��6�t5�5�BZ�*��*��k��KYὐ�XS(�X{��Z��՘�2t!��g�i�\���@�rHrc�`���]�~6��F�L��+�2d.h�]�T��Gc��V�?�2��l/bCLҌ�37�<�]�_�Y��ޅy ��P�m�)�ol��ͧ_h,���"��I���lH���'b��jH�s>�w���7<Zw����X��r~�ߖ�\�i��w�߽�A��:��U�E�*��e�^+�[�8@�S�d?�J��)�%��9&��e�(�r��8��?
�ϸ�/���_�(p��s�GR�ۯmR���T��k<��j�b�ۮ��z/������\�|F�Z��xG�(�#�x�<�M1<��p]N��3�gD9���f��gm�u��;��AK�	Z:��}jQ������M�����4���=$Y��Mr�H���>�l=睵瞎�1-ξNЁ��yͭ�y�p^Wp6����{���/��9xzh�xv.=
$
_%�|ER*�_�^���v�����o1 ��i-�$M��A{5y.���nT�"P���yh���2��#2�/�)�@e,Y�K�=u�qr��t+g��
�J�6����a�-��+��g>�x��p2r�~��۰��z�b&Y�� �����p�T:�z�"�v���-yB;�q��ߑ�w�Ր��J5��|�煁S��#���rs�c�f/'���%}���RJ|��rB�C�H�خ��}�L
��12�-��?���_!]�+��84���LL�V���J���b�l��:�3&���C.F1Z��9 {�0}����	��:jK^O�R7���Md��͆��gپH���ɲb(�I{>z'��
ï�7q���R���j�ZjM\��,m%dǙnA�v�-��d����L��C'�̅�i㼮 |�	�M1!ti����ޏ�\�@�	6��qd?�d����%�,��#�����G��kYs.��|�B�{>$�V�s��X��V�OFq������rB�/-�	$?b�?
��C��>5D����(1���r���ӆ�n�nq9�N�s�~��Ct�"�`Χ����]�1�K�|,���ف���_]�'ȝc���Fx\�s��wdl$���{�H���g�j�S����5Ԓ�qR4}A��%�x�,�s��ˢ�nIݯ�����H�Q�������x�\�tE����o�8��c��� ����Ƙ�����Ԛ����24}Q�䤱�����y�b� }�V�������]�v*�~#$>ֺ����ܮ�/+�^��	�I�@�B�Ai�!����If|׹h<v�
ܾ�/�˔MR�K^����?��%�����۩� ��0Y�yۛ���a��~�h�ya������a��	s�+sub/b8=m��9買<����i�1gc������'7���v�3�К�~��h�i���<�f�����"�q�lt &h� �I���jŻ�S6�Gw|p�ŋ^���@`���r�3�
��_O�&xk��.�_��s?��e�a]��c�t��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���./�jsd':19A73FEE-6F06-496B-9B66-0A245313ADD2-7379-00002316C565ECE7�
�@#x͘YPT���D'��*w�IU*��er��I�R��\�.�S�I��R�I�q+uft�%�(AqGQvh��7�El٥�Mvd�>���~�9MCDZ��O}˿��Y�>�6s�'�`�0V�0�%����v��X&[e�v�<�˔��F���
�^�~��_A�/�M�{���~y4�)�&�Bt�>��0�!��v	����[2|�#�
9������<bMv����h��p��ޯ���"	Ԧ�Bo���s�(�k��֦��yYT��K���@�Lw��pC.����<��6
	/Ԏl;"G�zTq|ǒh�81m4�E�\�n�<쭖������C���탌���7�L̨}�{kd>P'S=����{�)��>�a��H�S>�E���v��p�/�:0vpbZ�O�}Ѵ��L_�����}<����
T���a��P��
�����������{���O5f~zbZsϢ��d��LF���]~Uz*R%<xSB�*�P�5�u���>$���}�쓕���j���ZB�$z�J�:&c�mlʕ�%i/�(��m	գ�j	����b��͟���庆=o�=�l���r\�;���wBcͯ���+xw��N~�X�~��-�ᖄjPC��0�Y ��w~i���?����"0&�	���)�q{�⌡upb�\�	^��l�ߘqR��6��;b�|
��5x���ͯm�ڸ>�^�	}B�~�>7�����T�O�����ܺ���n��۬5��FSC���?���V}�v�n�D��;���w��%��0�;Vs��s��Lu��!O:K/ICV�<�	�{�5�3��0~��P�9���9���g���o?�g196��x�����2Ӌ��N�t�]��yg���|[QC�~'Y��5�4��ųi�%��\��w�n���@ܰ���ծ����c�_.c��[yU�}��da\�̏��y<݇:�ߩa�lZ@
�
�Vz
�X��ZI�a��~^��&IՕD)�/%��p�NJ�l���~4v�}���!��h[��U�IOm�̏���H��v�L�/3��
6� ��F�NG�M󽥨;u�_�,׭6����Kk��"�XO���a����g&I�wK���Gֱ��;��^)L�#yǑ��qx�\�l���,W��O�H摿Iͥ��VxNz��������Is���u뾺�\���+�|�j@�X6�㏵JM�Q�eL�G���ݯ�ꑡ�l�,K�;7N�-��ui�Rz��\;�M��8��KC�	iʌ���X�����m��zHs�F�R�,6��{hjX��oȎE
�S����
T�<�Ouzq�⺦�]�yi�I�R?�*e�G�fz�c��~�U��ל/���9�4g��y	�SrA^_��u�[�
W^ƙ�s���V�`�X[Y���<-�c�%�8��J�?_��ڽ���)i�<)��'��'�ߐr`�4�m�K��V�Ak�)�C텃�q�76Bުm����
@�
}'G��y����/�W�Lw���-�`C�tW�JWE
΢�xG��]:��Aދ������Q�,]嗥�ꊴe��w�U*O�G�<��`�Z���1}�O��Sz�)��1Τ�R�w�F�nɏ�%MY�3]�N�Q�7��7:G<g��샖\����l@���u�t��߉��-��>j��OK��T����Z`��� �	*d��d���2v�(��,�%��N)H܃:H��j{�w�^(�dza~w~�k����q�o�b��v@L���7��GkA��3f�>-��N^��9~a
BM��
��k�kU`쏵�[�9��O��m4f�����jWkb����?�~��:� �Z�rc���G��4~(Pf�-Gf,1�3��Z��X��� �U�5�9��r]��ٱ�o��#�
������u>|Ӈq���%?�;�^�����%k8X��H����w��{bϡ�Za�Z��:�� �U�ƳX�y��]�o����:D�Y�]���Y�ot/��`q�{��$\���gJ#k��/��|7���w,�5��71|���c�8�k�E�sJ�뚁�~��+���w������>\S}��Skӏ{ʹ��������8X��~���#�>g���7���QQ�@?�/j� >@�ܟ��-��Z�屳��L�몍`�	�c������w�A��g�o|ñN?}��_��B���=�-�зlk��&Hs��1�
W����Z�;J�z�`c��u���ǯM?��Po�YO��Ϭ���W�S��"f>|+��u]{L��Xj�4W�cY{�ǣs��Fp��_s�ְ֡`k�&Hs�8�넺�`y�V1��{D��d�g�}"�c���U�>��&F����8gL�,P֥&Hs�8���w��58�vګ�^��y�>c���>�<Sb�ѧs���W
�	�\5���s�����55�����;�s-���gV}e�:�j�4W�c�����ӹ\G��]r�w`�Yp��</�"k f��:�}�i��r�l;�^�{����k%0f�]�}��������\��	�\5��ٶ�/�BM��q,�,t�~��8��� �U�X~?�N���
п%�P5A���}��2m?���7bbb~j�3�&�9x#��Bmh11������streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��
6.0zipd':A893724F-8BC4-454E-A572-93FDDAFC24C5-7379-00002316C56334CE��$x��ipS���4�K�L��?:�Lې�
j(M
���Lg�$��J!{�$M�4$�Y0&�ٌI����U��M�mْ-`��"e��=WW��� �3~�[��9�wt�NJ��6ܘ+C`�	+�0�%����#[�3�tM��,;&c�V��쫿;k֬����).kr���g:�A�|6c�>��s�I|�Nﭗ�J�1IWU
j��/��A�I�M�?i����S%g;J��>KܖDk˒~{�%\t
�|�i�Y.�IY2��f�[!C.��T�b��e��$��O� �Z�s�Eg����[b��a�s�X�o��i+�k���9�􏷙Ğ��2.�{�y&N�e��eϗ��Ru��`�Y<����xG��a�5K��?�����^�[t�=�GY�:zL��8�3R�� ���rʑ/���eGe�]��T
�-�������_ۼ&VB1�7<	=�[#�o'��Ld��*��kϔ�i-L_W��{�QC��a�9C�Z�� �j����W�P�CY�k�q(2c���
]թҔsP����[#��
�P"��![հ�7���®�U���Oa����H��u�gTL��P�?s'���.�ץ��{k-j���5�U
g]�|�ǐV��ۄ��Ht�$�#J3}�u_���c=�����[��~k�v�rj�?�'���!G�4��o�WC�9ۻo#���U����J-�n��	E֮(lʕn[�4��ʣ�x?���fU�j5��L��H�;�}��C�%��C@#u��hÁ�3}�ϴ��&���Ru|�|>��y�54j�I��]e�Aۛ�)��į��Ż_um| J�a�);�����j�ߵY�۰�ԥKs�a�I�#_����ʃ��9��WPC�
5L�M�k����k��烦?
��r�>Cڊ��37A��/F�P�W>jG
.��k�؛�PCOU�JW����b6I��8)9�K������|���٢YB�H �>�����Ȓ��O�Ւ&���r��E���d�c�aw����d�g�><ӆ�i�-u'A��v�����D��:��k�;|;,c��*���ĭ�I2�n�~g��ˏ��v��@��'�}���Q�{ߑ������R��fqd�O�4��>O����-cw�W~}���zKc�L����'��R���>���}0�Q�=�$����*����l�]�>�"�	Q�#);���ĭR��M��EKu������1����j������w��0c>�S�V�úKd�]9؃R���H�)N�)1Z
G�J9I��
h�<�]��gK�!5�;�}m[�fiH��ּ}rլ+���s���C�Ӱ/S����9֦|����#����bOjΓ��tu�s����R�ԝ�
�5*��Z�-m���]m�i�b�~˾
2��o͆�s��ƒ��wc1���a��D�v��:e�%O�2�Su\Z���0{�~<3q`��8s������l>$�Ňő��ﵰZ���|��=�Z5�XK��gl�������i��`9�GO�w����t�'�\t�[*��)�)�N֦J_]�}��E�̻R�����Ğ
���)RZ��"���9_����z��3A���>8�d�9:]N5��v:��\�2ħ3e���8���ҏ|��y���w���+?�_��?P�|:�u�~
�`�����3O�6��
�*�3� �ia������.�X��c���}���|Z��?fX�����
�V��j1������ͅ~��X��{4=�@L���95�]��1pk�^���� V���}�i����߸��{�Z���Kɪ�b-�֑�|J�.��U��g�V�
���zo��i����xH.��d�j�w��x�]@bM�n	}@�X]Ե�ޜ��g���\NVn(�t'��$�`�3M'���0���5M�
Y��&Y����M���S���hR��?�A���ĵN��5G�e�jP,}�^����[�18.�\W��7�}�iɇՠOm�:����kv�Z?�ז�9V��V�R���94��4=Щ[#��<��>��6�wg�Nӿ�I�܊�#wm�ޝ ?Yq��=�j,�I"1���G���s�)}J3�����D�����)U���v���4�����l5�-�U,����\@k$������1����xI�sc���k����O�̇�5p,��'J&��m]�I�d_��������<q��_��C�5�~>�|����{�ۀG�C�΢ƺ����M�=^4I���JYA����]�qg�i��.R��kS�ҿ���iTW�V�f���Y�`�_��X�z�Z�9&���(�NJ	_[{�o�lg�t�sW��{��{ӱ����pwo�v�?̇b���j���Z�cB��eF��Ԯ��X�I�P�o\Y K^�+���*s�ːe�g*ΦVq4�a�|(��X<C�1I�Җ
h5�*6�<m��5g�3�!����<��ܱ�mB?�'�R�$�N���c�R�exv�,\_��Z�T���G���jR�sA�ȏ�N(?���Q�Ku��uj��ܟ)��+"ז���S� UU�I�l�*�~^gd�5�B�����1I(:x��*�HS��C���G�����/y�^��Ҡ��o:�V�&��	��V��-'�+��~�L�+��r���@�/Ц���2f�F��`M!�_�w
�hr��-��� ���7j��
g���+ިE�&$�k-j�k��=�=E?t�1�
�zx�u�*?��M�����4���[C��F�ħ�*�x&�?Q�ƚ��E�?n�~��M�a�-g)�L��}@[o��hy޽p,��8���u�I?�w�q��A�3H��^&�'t��kl��Jeު� �bO���J#~�Q����-)ϣ��s����2���B��y�K��]U"�Ν�>���R�7�`��?���4�DŽ>�s��-�0G�<}��t��i	}L�4�Ұ�҈��en��҈K纄-"��B#��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��[./�xmld':4D59E174-172F-49CD-B4DB-377EB6023F59-7379-00002316C56027CF�@#x͘[P��i���3}�Kg:�c��>��t��O�dǎ��u�LݸMg;�ė�6�c6`b��	�&q�Z`a$��X�/�r��vW�)��&��~s.�����jE�c��h�,�� ,`�>,aLK,_���H�,�ea�Ft�����g�gϞg���-�ֱl�OW�哥q�dq�y����˜�AI�
��T��=�Bo��!�k׿4��☤��w$�NI�K��L6C��T��—�a�޽�����u��*�$�͙^Y�I���F�a�D{o-C—o���X;vL�|��O���sv�K����j�C�U�p�B�'C	4\
C�}�=*_KKKjwb9�!�n�v�n�5(��T���9Y/
�9]h�����X���j-[X1�c�%��s��HV�=1�؝�t�J2҆����	��8R��q���355%�N�R��1����LL��?}�tf�v'j��/����`�#S�2�Z"�X�$���E{X�_'���Ð��>,vrrrT��2O}~�_c���g
}+�U����
��Z�h/�`�5I�
Jj�=tHrڋ��~��?@��^}�Uy�W�$;;[�ѨZ�daaA-�v�-��T������D�-�[sY��<[��C��f:уO{X�����'��4G�ڃ�'�M=��	cZ���[v;���_�����p�o���~8b�pW��~��e��(�������Y�{�8t萐�_~Y9q℄�a���SM�9O��X>��ۭ�5O[]�-KcM��Ɏ2�+�����w��@�F�V|&�1R#����b'
����էeL��h	��f|��	�5�h���n	w�J��t%���I�0j�'q|WǺу�lZ
T���K/�$O�����\8�+!>�2�S.������[E�CHߓ���=���ֳia��s��^|������ۧv7��χL�>I���B�M%��fB>ۘG3��r=�C���ֳi=�o�]�)�}�4꯼-�������l�ͳ�.z��R[xҰ��3�9�Կ��0�r��r�FbZ��&d%6&+р�D�d-ꗍ���=�6B-j+Y��� ��h/Α!�Ml*�e������a�uhl˜5��RY�d��R���F��_O|�/�����k�JG�I�uFF�y�%x�OE;e}�I�uW��~��{ �ј븁��T'蒴	}��	��'�S�֧Z��Ȑ��g�&wk?�>\�n\�Β��t|Z㾲���9�S���);+����;��H�x���4Gc���․q
��aϛ>5�X1l�oп4�(���-uWߑ{�|��5z(�@zHه��}�����d����9��>#�\�2�\ ��y��{∷ᙆ�25P�u�`�؛���i9G�Y��g�=�����=l�&C���Z{������:���2���v]��+W�
ޖ��s���1�Z��nl�lB����l�`7�}s�U��/J�K���%r��Ϣk2�k1��S�I��@��Z��I�����>��5Gc�w]>��@�i��H�gl��u5�l��YsC��sǤ����Z|��H���L����@(����U�U2U�]޹+��x�y�xO����T�M��g����H��b/W�qp_1{d�OF[e�_)W�="s���Z�{�=*��B����{u���e1X�,���[�'F�w�D�E�c-�8�=����Z�J�$�����\>�񕞕��fԡ7�i��*^<��g�<�
����o鱜�Z��<���|'��� �ш��Iz�k�b�VX�g�D�N�����g��5[�����CM���^7�^"7>����-=��iu�g�a�:�kv��	��<�cqhW�=�YuA��2���<IG}�E�֞�h�&e�o�k�0">��Qk�Yg��s2k��Z��!4A��1�t����>mf���s_��>�P��Mx�P��#��pM��'�y>
r^�=x��	�g��8�߈�">��5#�z/s}�3�H�W�OE�����>X���
�Z�eM��ۋ�qk]Oq6��@�5��E-,5A��m�6���Y�������d��^�MK�M�Eߎ���y��k:���v��6\v��s��3���d�H�ߢ��'�?�Y��?�G��si�p��:-�3�s彣��ߪ��Q�8�x7�#�K�_׌�{	k�
�i�q�eK�)_s��x�[u�U=����T�"=��>\[}��"��v���U�\��
c}#���"G�c|�b���G�s���yb��.������oQc
�h�&܇0�F������5��m�fk��`�ݹ��ָ�8����:�Zb�Y����f�9����腾au+G��i�q�P�9�up����Y��'vߎ=O��'v_i�6��i��i�_������M������>����ȩ�؎��:b�ʖ��5ɐa�	�
ֲ��G��J�y�}Z�j
6M
�i�k�N����ׂ���XqƢui���5g�1��M��a��A6��R�9��>㵺���{�s��Ds�rfL�X>��x�ݚy��� ��`-�^��5��X���d�o�����=�>��1C5A���Z��Q��ut�G@N��=�x��Ec�\f
Ĝ#�4`�� ��`-�]�e�8�kf��"P���}����� ~��&Hs4X�c�F��P5A���Z�y��o�S�9�����9���$j�&Hs2~��o#�K��+�|VV�oM~^��g}�PFV�|�ʰ�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���	�phpd':08376F99-D214-4BC8-89DC-53E300E92EC7-7379-00002316C55D7573@�@x��[�0DQS�`)�P0�R�R�P(�Rp���3J�I��G�j׏rA�
�_���oءD�!^���f���^m߿���Xߘ�K���U�cfRY�����*��Fޘ��t��a�*yI�%�'O,�<K�j���`=yI'm�[�y��)�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���	�Layer 2d':B2F945CC-6F8A-487E-AFBA-B0FD7884F14F-7379-00002316C55CB926@k@x��K
� �g�P
-t�VAo��.�*^�z�ҙ���M�b��KYL�z)��߾R���nqU�bx��-KY�
X;�*����A����^�jZ�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���	�Layer 1d':6562DF83-49EA-4C9D-8D0B-B12C0B490733-7379-00002316C55C2533@k@x��K
� �g�P
-t�VAo��.�*^�z�ҙ���M�b��KYL�z)��߾R���nqU�bx��-KY�
X;�*����A����^�jZ�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���./�pld':17587334-6891-4DC1-A036-A42C0CC05C44-7379-00002316C55B76EB�
�@#x͘WpT���b2���d&�<�1y̓O&O�C����Ό㱝8�6el�`�'@I�t,$����ժW�
b��:�U�Bew]��ιw�R\�a�~�/�}�[�^�p��p��d���(6>�P,+\��ٹ�R�vc�F!&��2ڂol{�[�n}�Kl�⑶�.?>�;���z���=����]f���Bx�w�c�#�y���3���:}��v#:��"2֌�;���(A�!+%��GX�Cװ��s������D����p�{�0֜��_�������P��+�r�/���Z�7��G�x��/
_�݁:���a�F���!Pzz�2>�}��~<3�ޏ��z,1�_��\ރl�V�KP��A�ͷ}/�˻~�X�.n,�x~f��x�O{Ik1�Y�;|���Wְ�rS�r_1�����͵���6�0?=cvrWR��<��ޏ�S��lo%���JGu"#�ղ�
S�Ro^|���RҦjx빷�o��Mc���.�S�Ʈ�ߋⓇ1�߆��|t�/���<��7mb
uU��RS�3?���(�s
{�݃=��o�tʺ�LL�X��1�����0�]i�Y���d�gk;k���p=k�25,��;��(�S����~�+�b!_ȟ��3�ebd��I��r�.n,[��?��ߒk�d�@t�ө�&�<�"�
N
~ܽ}_��W���6�/���b!_ȗ~i33H?�n��j���˖��\wF�
p��"�_9���>D��ljc-��`5�	~t������7����4ȏG�e������F�><���
~?���"�s��B������/�[=����4�/%޷���:�4H��͢���#X�s����p��4>]��U�5���da
�m�a�l�i��27��?��گ_�v�j���a�s���0�Wa��5��*Kç+�ty�5�A��C�n
�g�
kk�ҷ�d�:��ʓ���Yԥ���R2�.&���1��G�?}�Z!?'�>�������u�o(�����0ҍ�P�v,�ڰ<�o�I��qg��@�N���'(�sk�p����(�DR���"@?@�8`�.�);�ލ�;����;Qvf/߃7Q��G����:�
.��2���tr����}𯨿x��g0Pw3������W���SC[�|y+�yj�u�x�NՓD�ן�,F}�!L�*��#|��T��a�5=���y�C\�9ژqg���WИ~����
�Y�њ}��G�KF����E�}�&J���kS�,� �{hkX��o�=���/�Qcm���:,S�\��gP>�kn�΢%/�Ԑ��˨�p�2��>C�/��}m���������h�:�[I�/?�'�ny����j>��sY�U�Ա��T[�}�[_yY�	�:K�y&��c"Ph����~�$��O��;/�)�8�[R�����m�h�ou�t�D��ν�mO}m�=��V_�~�6�jv����+�Z#�]����j,�c�V1B�9�ICou*Ϣ�|G^�t� |/n�v�ϙ������ЙuT�k��h�|<�3@Z-Q^���W,_��K���T���Ͻ�3i/J�_Mڍ��]n�еL��F�k��ot|��b�v�=�7�ݗ�a�<�\O�	�+��8�d�EB5�'�5�e�r5F��o,��	�pH��X�98���wt!�n]%EԖcj)8�E�{X�>���v��}']Ř�8�
��
�=��8���hQb,uE\K���-����F�?��G�+/_Vq�|7o�or�&�B�(�S�8��h#ת�:ܟk���s��!�x�k�+�Z��X��ܻ��2��yh����h��Z�v�q��=�V:s���+�|�llal,�s��'M��
����5���j]��sb���k�X_<ʫ���Gk�7���>��u�P����S��O�Y�]��K4T��s}�^��8sd�V��,cw3�V�(�S�~�g���4w-f=��U�ٟ�%�/���1��Na�(*M�ߗ�k�w����W�|���NY�w-�M�D��3oc�f>sʯ�q��X���A�I�߬,'�Ə���~�\�^1��9�":�v�i|�����{�����������8Z��~����3�>w��[����oRI�P?�/j�eD�(O����G�3�Ⱥ��ݵ4_�bsZ��6?T��]?��{ȹZ����Ɩ9�[ߌ�X�_�r�_��"��7{�9Y��u���!M��
%r���[�h�͢wT���1��ń{X�'��cP���?qs����J�z���욦6��挍�x;��VǛu�1�k���<5�U��~���v�M��~��XcL�ZV
�Di���j�po	���*�ub�f6}���'f5V�}Z��G4���3v�GM�;�+�u���<5��>�=W��/;M�u�VkP^���9'�O4����|������
��<5���K=�f
�Ҡ�^~^tݥ]ki��=#��'qv��j�&J��4V���3W�=d��ɻ(w?4�g��bk0V��O����}�Di���j�b�^�{����k#8f�]�1}��ü����Ů|�K�yj�9��y_�E�(�S�X�Y�e���8q�4Q�����~�7��[�c��-�AZ��Ҽ��j�j�>yP�y:!!��?!ϐ���/�Ɩ��?S����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���./�c++d':ACA63C41-62AE-451F-BA69-B732F1BFF96A-7379-00002316C558BA74�
�@#x͘Wp\W�ġ$���3<��<2O�=��q����č�mlK���ȲuɒV�˲��%�K�j�d�쮝��}�ܻ�Z��*Orƿ��Ӿ�-g���1m�V�b-Ql|Z�XV���'���e��*���E�ݜ�Չ6|��'��iӦǿ��-i[�)����7߇{s���/���Et���.,�\���[�Y[ɇ����w��E�vǧ���V,�4b����,��b6Xe	���g~�L^vj6uYY��Yk�B_
&[x�� �ry�>U;�����A��Vx}�Ʋ^��\��y��5`�-3�s���P��SÔ��þ��Yj�J��5_��=�Ad��԰:X���w�X�m��ya\��[ƺ(vqcY�B}^:K3�8\���*��5��H��5T�VJ����gY�m����7����{1�?�����Xy�e��?�6Vx�^�N�s�՘
�`��k3��H��5T�����⳿x��6T���v"i���ƺ��t�
w��潔�8��6�����z��!6uщ�Ѐ�h5k(35<�����|װ������|"��(����&�����J9��J���4Ħ�<[;Y�5D�YC��a����7�Ki�ڶ�o����q��7�������][��G׿-��o�>��L�S�
�x>Eǚ��q��|�+_~��ڴ��^.#�#�r�e��)��\��|�ص�i�0�[���Bܪ��k����b�m65��6[C����?��@y}�����[���6zdw<���h�����1?P��B�U]@kn2�/���1�nY�b����ͬ��M�R����_�Ð!�h^ �0�x��(B�E\/<��o��*���wRl�����ְv6����2?����|�k�z
~x����v=���Q
f��1Tw	=�`u�L��1�_f
}��ְv6�����l}+}�|dj�)���4\JC��T�\HF噣<Ϗ���k�|/NN}���.��tw)�21�T���Q,M
`q��� C�X
w`e��|�|�=g��P��X��/R���t�n�g���"IGW�6�� � ��黈��4�{2����ڂ�ӻ��@I�vf {�˸�w32���K��ۛ�s�h�p�%�1�pw�

7by��'G{�K�(�W�j���w��4!� _��Lw	3b�V�P���s�<R�34���<�U��ƕwq��hs�T�ه�^F�C&�y�oh�>����h�:�`~*���.F��P��6U��g�
1�C[CN�5�k(6�4nj�}Ɔ�B��}�<�
x]3q3pm�)����_B�����u���(2���v�u$�z^2:r��#�0n�`��,�����6Y��4��� �b���'�ڪ��a��˪O(�Y��3q����E����:��@k�q��Z��Q�%}ϋh��Q��N�VIW�	����[x�>Iym��_������9!�ʻ��HhW�}u�����Y�pk.�2�_�γ�ߑ��.�6I&ߋ��=�gMo�y�׼����>��5_m��<�M��VK��2Jb�˗~��*?��s�@���<�v����m(Jފ��\�^�B�7�m��Ɏ�F�#pr�how`�F!���0ƚ'��+8�_5�'[��h��������P��hT]�%v<�	뛠K<�z��.���+���rM-�Ƿ�8u;�܃P�՞R�蠟���a��@Q�o��Ugx��-"F����c�U�E5�>��G��h�b���*��w��&�o"�!���|��ӈM4s�Z���V�U����� ��z�k���8:Fh�vcm���J���*��硙�k൱p�����=��=�	U;sk��+�|�llal,�s��'M�櫍U���5���j]��sb���k�x���O�գ5��m�Ѻk�_Vh�X�I���O�Y�_��K,\��s}�~��8sd�V��,cw3�V�(�W���g���4w=f=��U�ٟ���sl"f���|�S�x=ʇ�����Z�]�X�*�F�Uq_嶺S��]�~�'�Q��ۘ���Ϝ�kc\�6VkoD(p��7k�*	��=0�ׯ��[�/F�3GV�F��5�O4>Tzbc�yO5W��Z[����/ߎ��X�'}^8>s�s�ۼEy��m����p��v
QAd��D�k�|�9c��Kb쮥���Ӻ�Ʊ�ђ��9��C��z���]G06����f�ƺ��3���V�����r���cm\	i�4_m�8�sx�w��:D�m���.F��<!&���r"�:���'oL?���P�]���Ϯij�o,a��8�װ��q�ذ6ެ댉Y+M��i�j��\���m^����Ƙ:���:���|5��:��RZ��U���̍����O�j��9����h���g�ꏙ؋;���u���|5��>+}W��/;K�
���ՠ�`���9'�O4����}���^����Di���j��"���kiP
z/?)��Ү��ftD����.�Z
�Di����_�Uh�j���:�3y�>�	���Ă����'��^j`�4Q�������ÿ��p��k��(8f�M���>ʼn0��gg�����Di���j�Rw��i�&J��4VsV�Y?����_�(�W�X}?��-�3��-�AZ�����h��j�yX�>y*))�G?&O�����>[��-)�^���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���./Sshd':2EBCE85B-E4A7-4CB9-B899-402CA4328A32-7379-00002316C555EE1D�
�@#x͘Wp\W�E�CI��fx�^yd��7z2$̄L���8�����lIV�Y��.Y�jիe�+��U�]�.��n
�w���JX�U2���/�}�[�^+�m�v�R/-Ql|Z�XV8��'��J��c�F)�Z�6ށo<��7w���Зظ�g�{���N,�]H������Ed�K#�1qÃ��"�V�1�������t":ю�f�T Ԓ���
���,�S��//����gECn."|n�F۰��D{1�)"��ۮ,R§j��?��9lp|NJd_8�l2�%�\��e�:�5a��37
��Ȑ���Ô��Ág`�,�,�šf��Z�0X��Bރ|DF�L
k���z����������?�i��b'����7V��P_2��Xn�#|�C��#j`
զ�Ձr���9��k���5܋�72�B9Y�i��[Qy�?��Ť�u�1X����5D���԰�_�g������^}�Ul��?�E�?����M�07=g�p��ߊ�G0�߆��b�y/���<b�7oc
M�kYC�����g�庆=O�����D04���5nnj.�D|7�_�!�^��ݕ�����M�x�v��눎6��:S�r�����Gi���?���]	�"uo*F#�w�M^ze�'�;8�l����G��ߑw������|����k�����W��0�ݷi}���B~�?l
��&�N,[�y}U�*����~*��o��ALt�B�|'���/��9z巯 ����i�/f�f
#}#&һy��Vx�=���~?� Ps�i�p)��A�p����ke
�lZ����Y�˿y�C���y�̣X�s����p��4>Z��U�5���ta
�]�a�l��.��2��᩟?x��/�
/��Ec�þ'wQ���LO�.��*����i�0��YC����Ϧ5�0ў�o�ȖuܭU�D�g�t9��2Pw1
�gSy����1k��d�9�)��;���
7�`����A,O`i�Ka�B�Xwau��|�|��Φա֝�H�P���r�nys�Sq�d��C�ɂ���V���]B[~&�9_�?
��Dՙ}|��<}J�2���w�y\y�Y���ɕ��E������a���`��
�

7ce�
]e��>����M6]�u�;�LZ�#_8����9�1K�X�Oȏ�9X���xg!�Y�y�]\�9ښs5g�ʁ��z�������3?����+�@���2x�W��j��Y|;�=�5l"�o/<�ʌ/�1cm���&�R�B��3���5�<g�Q�nj�~�9�^8�k������~�9t���8
7
��Up]yGq�$����Ў�������x��\�icM���s����~歯����b�%�<��1�+5�p����z�'p�і{��-Y��A�خ�t��GzJN�G�-���#�ʻo��H��ml$�G��ү��z��v��ׂ�X���r��0А���,�E�<�w�Gr�^ܢ�3�}5�_��/��wL�k��x�|0�3@Z-1^�(��W,_��K���Ԝ��^癴|����Fi�.�v x-%�_�Q>&���]ϩ}����.���~�b�5O0(>�^-�'ڌ�h��������P��hT]�%v<�	뛠�<�<��.�̭����
L-%'v�,c�܏P���
�路���a��@i�k�c5gy��-"F����c�U�E5�>��G��h�b���*N���
�MN�D\CH��jc5go�Z�\��s��V}�B���3$��]c�|��QBk�kc��U��?ZE�<�\^�d�Y���O?)����#���:�$d�
;_9[���I��j�U��~��z�Zנ���?�k�D_2ʫ���Gk�7���>��u�P���ѪS�{O�Yoܰ�C,\���s}�n�����j���Y��f,�4Q���|��b#�i�F�z��|�?�Cr_,n7c��Y�ou
oD�pe�{��L^����$ֈ�&���ttʚ�c�o�$�ϼ���1�S~}�c��j���yN�f�P5�5~����w���#+b���hM��U�ܞ~�S͕��֖���w��o��r����1/�>s�s�ۼEy��m�6�W�s��v
QEd��D�k�|�9c�����YK�e-6�u�M`��t��9��C��z���]G06�*�����u��+g�ul-�~���������q5���\�`Y����J�u���.zGe��wSL���^"�:��{y�Ӷ���hd�ҮgH�Ϯij�o,a���ױ��qI�a}�Y7>&2d�4Q�����=2�1s6�Mx7��k���X�Z\�4Q����Z'�_A�{��*��C���O_1q�IX��3G����ͷ1��1'㌩Ě4p]i�4WMc��j�YC�eg������vs.�'�gk`L>���d�
��\5���+�R���kiP
z/?)��Ү��ftD���I�]����\5��{�r����:f�
0g��������Ă����'䓕>j`�4Q�������˿��p��k&��
��`7�|B���0�C��ro���\5�՜e�i�&Js�4Vs�Y?��8�_�(�U�X}?��-�s��-)��H��i���/"�}r���hJJʏ�<F~JM�|�6����ݮ��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���./!rbd':60DC7AD0-C861-40FC-B081-42AA0BA0CB0A-7379-00002316C5530CFA�
�@#x͘Wp\���I���-/��$�yL^�@�d���a����2�.!��l5܍,˨K��Z�jY��ʒե]�.��.%_���b�W0��o�����k%l�VnWb�����Ƨ�e��~"��S���2,�(�LK6&��G��]����B�r��ÇK��p�.����}�"8ݍ��똺�D[!k+���p�K=����t 4Ն��&�w��ߜ���r��B,�s����O��⋢>'A>7�X��T[�	�#Z�,S��jG^8��?jp|NJX_8�l,�Ţ\��m�:�7b��s7�����#���á�a',�-������o��P-�x��45l��"�f�;o��$��Ϳ�i��b'^�]4�P|7�KWyVF0�S�Q>����׳�*S�`R��࿝����Cz��H���X�'���vT�z�5���a��2�����`��5T��J�쓿y��vTÁ��^��~,�.`l`����\|,_v;�ҏa��
E��^Do�y��o 4���a
���~��_Q���=���� ?����8p�B���s�旬/8�,M���+�7K2���l�b
�ob
����R�����j{��bϟ�DQ,�K���:�PN�e���eKy�t�����ܓ�Dj��0ϧ�xs�/�ܾ�o�S�}����A����/�x���MN���d�X�<���*1�Y�ەq��d�>"��fS��j�5��N��w����?��Xv�q�A����7�A��55���"io��o���X��C1��/�-?����1�n[�b���-���MK��Q�5��Wp?�A��)���8��a�?7K0Ps	7�O��~[Xð�N
�v�0��6Ϧ���O(�5<��_���p�K�}�؝p�=���k1�]��������x}�5�����O�N
�g�k�j�շ��uܭU�F�g�x9
��P{1Ug�y�'�{:�Z!?�HN}�����lO9F�1�\���1�Nbe�+V�]X
tb}��|�|�cΦ��j֝�L�P���|�nys�]~�d��C�Ʉ���V���]Bk^�ه_���v���A��Q���Ǚ����=�������er��w�h�x=eg0�x����6X���Sc>��]��M7^�u�;�D�� _8�\O���b�V�P���s�6Z�3ԃɎ��d���p��hKv��•C/���1��O��@G^2:r��+LC���=��VJsզ2�,�#�{hk�#�o+Hb
�Ɨ氱��X#֩���3���5�<g�^�jj�z�y�\8�k9ɼ���z�yt���(7
RЙ���q�8CU��Ю�������y��\�i���Dr���B"��W^V}B�Βu���U��o�^�yt]MG[�I\x��朠~Kf�h��Y��.�V�Hwq:|��|�M<������ɺ�ԯ��B��;9!��;l�Hh7�}c�+�U��U�@[>�0P�ɳ�<ߑ�.�1�H6ߋ[���s����j��H�%��&�w�U�����tH�%�k"a���K�|i�O��7Pu�u�IQ�w�j�^���xG>Ʈ�ī�6��Tg��9uӴ3]E��Y�����)�N��_��ĩV�-��>i��/+��7U�|c�O��&��*��>��K0w�*)��|SK���(M��:�o��[���a��t6,�,Is���,��5�E����r`,��귨�'����W��|Yű󝼁��雈ki�4Wm��“-\���p�o���/��
=C���5��W'�F��6V�D�{��������5���@�����cr�{Z?诉̭eL�v��󕳱����ϱN�4Q��6^y���|�'�u
Z/��#�������;z��|3����8Zg
��
��<�^�����-k8�5Ѽݟ1ח�Id���
��e��a��J��j����,6p��nŬ���7��:��#63&��|�S�x+�*2��d�Z�]弰�:�F��Q_念S���~�'�1��ۘ~3�9�7�8vs��މ~�'��7k����c`l�_׷�[���Yۺ��4>�xy����j�􅴶�����|;��c����y�S�3��-�[ll�w��<�s����k�J"K�'�_����Kd�cg-͗�؜�56�͏����ϱ�r�����:�������o�h��/_9�obk�o��=��,��G��� M�檍��p���]�h���wT��1x�b�=��Y�1"��럲3�|F��v=C�~vMS�|c	s�FQ���Oߌ��
��ͺ�1�ak���\5�U�!���u���??>�S�����i�4WMc�Np��V�@kU�G0w3��b����g�>���#�oc�;��&��S�
i��Di���j����f
͗����ˇ7kP^���\$�O4���D}����6�7�K��j���K��!�A5���K��Қ�Q=#��'1v��j�&Js�4V���b3W�=d����;(��ϋ�s�5�O�'k}�>i�4WMc5w��/�=�|׌�u/8f�����>��0�C��jo���\5�՜՞¯�"M��i��l�~�2q�4Q�����~�7��[Η��[Ri�&Js�~��_E����~�'�ф���G�y���<���"ml		�v���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���./�pyd':E33C04F3-412A-4A76-A66D-D95AF23D97D5-7379-00002316C55048B9�
�@#x͘WP��ʼnc9��L��L���5N<�<%yK�'v2��v��EedY��J�H�$@u#�LK�Q���b�&@Qv�99�޽˂U>���w���r�	�i�+0Ozh�b��
Ų�����u�a�����fsV���'��-[��x�m����Gs}�h�.�����[��� 4م��1qŇ��|�V�J�]�\���^Dnv|��h��F�t�"Д���R��,�3���/���N��â.+!>7+�-��Dk�B�>[.�S�gj�^����78�Y��ƣ\<ʅx��F/�P&��1}%��
��/;>L��>�yq6�C�X4cn���y�9ݨ05���,��&��o��'��_�6֡��bY�⻡�x:K3�0\���*���h��@k�45,� y�?N���\{�Oo�~���Ƙ��Cڞ4�w��?�6��e�FY�1�_�I	j�c�6�K�YC��a��/<��W(iS5��웸;�����ngS�I5cd+7J��4���[~=e�����xkh@h��5�����FY�k����x:��
H����)�)���3�d+�	�_�"���+�W�R���l�d
�md
5��žb|����yj��b���P,��Y���.�ӳHޝl�b�q�X�����[��ߖ}���h
W�m��P���/��_��������r(�դYH��O$����[�*�x��eKS`�����^q�?<���D��ljm��@-�	~t������7���m5��-���|�${?|���@�
�Wu��I�x!��A�p����kf
�l����[��y�#^��xf�fq��#ƿ��K=��!�?W��_}W
����M~[YÐ�N�Lu�0��Φ[�y��y����s}���5x��_�j�f��6�?@�5��*�P�y�Td����,O��Q|<?����հv6�����l}+=B�Y��Ze�^4~x
�SQ.5g�Py�0��C(?~�Z!?�hN}���6��Tw)�21�T��,N`a�A?�Xv`y��|S|��Φ�*֝1O��P���t���g���IG��֗?}?�b��;���T�g;2���	rlEʼn]|v�$y
2��W���e\x�Ed&�����;/"g���xv?�KN`��n�>l��@:��F}��[(�S�l8��w��4!E�p�tw	3�c�V�P���s�t��g���y�N�Ջ��2����C�:������L����њ}�9�ўu����1�]��n�4Om�>��b"����
D�y�XC��9b��36Ѐe��+�T�뚉k��h�O65d�����ǥ�ü�����Khg_GA��%�#�:��Za2+O�-�>Fylu�L�,
�*�X��T[��D歯����b�%�<�+q�_d��z�O���1��ř�ϣ%��[�_@�؎�t��O�
��O�M�����	�{`�=K��m�'�E��	�WޱV#�]����Z,Tb�Z	�����@m:Ϣ�|G^�t��'�|/����2��Ug�_���ϡ;��~�<��3�hBg��Z"��a��X��˗V��:�OT���3iJ�_Lގ��mm��ȥ,y��F9��(�ot>|i�0I{��SW�ݗ�Q�<�\_�Q���8�b���u�'�u�e�ruF��o,��	�PP��X�98���wt��]$�Ԗkj)<��);Xg"-|W{J�����p�ΆY�E)���U��d��1�����/�~�j�}����x��˗U?��
�MN�D\CH�yjcU'o�Z�\��s��V}n!�n���Ǯ�~���(�5ڍ����*����~��f.�A��k�el���[���@utn
c�c�����-���|�u}�Di��h�q�_󹞬�5h�hl����#������hM�f>}��q�n
��
��H�<��z��5�`u,o�g��{%�{�#���&Gd�=�XZi�4O-X�>��z�������V�fZG|_$j7b�DY�ou
�G�`Y�w��T^���	T���*���t:eM�Y��<	��g����)�6�ٵ�Z{3��cF�Y3PIh�c{�*����btE�Ȋ��}����J�mN?��J_XkˏC���q����ϋ�Ϝ��|��(o���ߤ��dΡ~�_Ԯ!*�,Q�h�#��0g,�ul��Z�/k�9�kl�)I���c�=�\�ǿ�ucc+��[ߌ�X�/_9�ak�o��=\N�c�G��ƕ�&J��F��8���W��C��f�;*�0z�b�=�-'��cX~9�����

����5Mm�%�C�v>}3..6��7�FDŽ���&J��4V��}f�c�~���q��Ƙ:���D5H�yj�uB����Z����݇�9��O�j��9���G4���3v�#&�Ǎ)Ê4p]i�4OMc��r�E�����P{��k5(/�g��\4�O4����|����6�7�K�yj�������!�A5���K��Қ�zFh�O��R�� M��i����f��1{Ȯ�9�w(w?4�g��bk0V��O�z��}�Di���j�b�^�{�����^p�:��c�o���zv{
�/M��i��,v�!�i�4OMc5g���s�牻��Di����A�p�o9��oIQ�E�(�K���~�����'~�'�)�S�d�狴�%$�f���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���./�pld':ED0B4412-A7A6-4C29-9A10-D44162B75FFF-7379-00002316C54D92D2�
�@#x͘WpT���b2���d&�<�1y̓O&O�C����Ό㱝8�6el�`�'@I�t,$����ժW�
b��:�U�Bew]��ιw�R\�a�~�/�}�[�^�p��p��d���(6>�P,+\��ٹ�R�vc�F!&��2ڂol{�[�n}�Kl�⑶�.?>�;���z���=����]f���Bx�w�c�#�y���3���:}��v#:��"2֌�;���(A�!+%��GX�Cװ��s������D����p�{�0֜��_�������P��+�r�/���Z�7��G�x��/
_�݁:���a�F���!Pzz�2>�}��~<3�ޏ��z,1�_��\ރl�V�KP��A�ͷ}/�˻~�X�.n,�x~f��x�O{Ik1�Y�;|���Wְ�rS�r_1�����͵���6�0?=cvrWR��<��ޏ�S��lo%���JGu"#�ղ�
S�Ro^|���RҦjx빷�o��Mc���.�S�Ʈ�ߋⓇ1�߆��|t�/���<��7mb
uU��RS�3?���(�s
{�݃=��o�tʺ�LL�X��1�����0�]i�Y���d�gk;k���p=k�25,��;��(�S����~�+�b!_ȟ��3�ebd��I��r�.n,[��?��ߒk�d�@t�ө�&�<�"�
N
~ܽ}_��W���6�/���b!_ȗ~i33H?�n��j���˖��\wF�
p��"�_9���>D��ljc-��`5�	~t������7����4ȏG�e������F�><���
~?���"�s��B������/�[=����4�/%޷���:�4H��͢���#X�s����p��4>]��U�5���da
�m�a�l�i��27��?��گ_�v�j���a�s���0�Wa��5��*Kç+�ty�5�A��C�n
�g�
kk�ҷ�d�:��ʓ���Yԥ���R2�.&���1��G�?}�Z!?'�>�������u�o(�����0ҍ�P�v,�ڰ<�o�I��qg��@�N���'(�sk�p����(�DR���"@?@�8`�.�);�ލ�;����;Qvf/߃7Q��G����:�
.��2���tr����}𯨿x��g0Pw3������W���SC[�|y+�yj�u�x�NՓD�ן�,F}�!L�*��#|��T��a�5=���y�C\�9ژqg���WИ~����
�Y�њ}��G�KF����E�}�&J���kS�,� �{hkX��o�=���/�Qcm���:,S�\��gP>�kn�΢%/�Ԑ��˨�p�2��>C�/��}m���������h�:�[I�/?�'�ny����j>��sY�U�Ա��T[�}�[_yY�	�:K�y&��c"Ph����~�$��O��;/�)�8�[R�����m�h�ou�t�D��ν�mO}m�=��V_�~�6�jv����+�Z#�]����j,�c�V1B�9�ICou*Ϣ�|G^�t� |/n�v�ϙ������ЙuT�k��h�|<�3@Z-Q^���W,_��K���T���Ͻ�3i/J�_Mڍ��]n�еL��F�k��ot|��b�v�=�7�ݗ�a�<�\O�	�+��8�d�EB5�'�5�e�r5F��o,��	�pH��X�98���wt!�n]%EԖcj)8�E�{X�>���v��}']Ř�8�
��
�=��8���hQb,uE\K���-����F�?��G�+/_Vq�|7o�or�&�B�(�S�8��h#ת�:ܟk���s��!�x�k�+�Z��X��ܻ��2��yh����h��Z�v�q��=�V:s���+�|�llal,�s��'M��
����5���j]��sb���k�X_<ʫ���Gk�7���>��u�P����S��O�Y�]��K4T��s}�^��8sd�V��,cw3�V�(�S�~�g���4w-f=��U�ٟ�%�/���1��Na�(*M�ߗ�k�w����W�|���NY�w-�M�D��3oc�f>sʯ�q��X���A�I�߬,'�Ə���~�\�^1��9�":�v�i|�����{�����������8Z��~����3�>w��[����oRI�P?�/j�eD�(O����G�3�Ⱥ��ݵ4_�bsZ��6?T��]?��{ȹZ����Ɩ9�[ߌ�X�_�r�_��"��7{�9Y��u���!M��
%r���[�h�͢wT���1��ń{X�'��cP���?qs����J�z���욦6��挍�x;��VǛu�1�k���<5�U��~���v�M��~��XcL�ZV
�Di���j�po	���*�ub�f6}���'f5V�}Z��G4���3v�GM�;�+�u���<5��>�=W��/;M�u�VkP^���9'�O4����|������
��<5���K=�f
�Ҡ�^~^tݥ]ki��=#��'qv��j�&J��4V���3W�=d��ɻ(w?4�g��bk0V��O����}�Di���j�b�^�{����k#8f�]�1}��ü����Ů|�K�yj�9��y_�E�(�S�X�Y�e���8q�4Q�����~�7��[�c��-�AZ��Ҽ��j�j�>yP�y:!!��?!ϐ���/�Ɩ��?S����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��R./Ycssd':E5A8CC16-4FF3-4C69-99B6-A8FB275E098C-7379-00002316C54AC95B�@#x͘YP[��i�Kҙ���3�����k�f:}�'�}J��I�I�nܦ3�p��6�c6`b���I���Bd�]R������+���KSO�
�9�w��ϽWWW�<a,���X����ƴ��u�>6�Q��������17$?x���ر�oa��t,������|v����	}�{�N�$5?*����H|������g��A�#��㒹�
ܔtbPV��%9�(ў
�7J2P�F_���;wV˳��U*)�7���4��`-���"��__���4�{�=�8p�b��%v�X1���0��_���p�$�jdq�J���	4]�@�|���/Ϛ�H��G{a;ea�	נRR�-���T�4��A��x�w���w�Uk��Ši-?
�ٹ�R"�О�J�f�D{�%�@����[��+B���طo��9v�D"I&��e��<s���Al�YǼ��+�;^�;���*�j/�t�OR�N�Ц=��i�?��{!i[=�ݻW��a�$///[�Š-k�5&5�����p�Lv�K��d�%=׏�$5�EM��+���� �qo������
���E�[�ͅ�MMMiL��ȑ#��s�a�kj
�@��u2�q]n�]��B���0 ��n���V'�'?��� �Ѱ�A�S�����B�ڙ�el��j��{8�s~�u�qF2�A��[�I����fY����;/B�SǞ={����
�/cr�СllYr��a��zZ�z+�lmQ�<o��H�LuU�@��~������2z���3���`�@�S�ݻw����^Z�V�9�5Ϙy��V\���M�o�%�S.�Ug���(�7��Ø��$�]�EƳ�A��ߐ��v��%O����u.���0�?n�a�%�b�.ޭb�!��I��Q���a��to��K�|l�����믿.Nx���n���i���'� ���$�R&_l$��0+�/E���[=l>�6�Cb�ߕ����Q���⫾ ^|�Zq�6_;)�<ϓ��<��v��S�
�b���2��䌬�O�r|\�cY���j�/�q��-�3m{6���$�Q���A���YzTF��d��\��V��+��e��9��	c��w��e-��j��j�W����G����_��+8(�KWI�\?!Aw�����=�çcݲ6�"���3�?����h�w]�y�g��HƄ>y���O��i�k��x�zd�}IJsߖ[����k/�iw�qpLz?=��@�)�qZnV~,7+NJ�����q?� ����!�ј�,Ž8$\C��-��O�F/V��?�h���K�mO���=���>R��C�@���9�Y�>��uZ�7N�mW�L��;��:%x��L
�G�]��9��>�|Z��|��㙸p�-���[���B͗e���Bk?uW��~�<_���uNF�]���p�KO��ҋ�{	�:�ڋ��ߍ��M�[9œ����o̴KO�9)=�7�
V�=�L�YtYFq-F=J�6	5�x>C��t^���^s4�|W���j���L�|�v�ZW­���55�_;}@p�/��㻬N"��e��Bf��@�$��xǨ���ypw�Vn���]��}��'j�8���{b�_��c�%3���0G:e�r�!�E�G��T�]f��r��>��)�����>);�_Ƽ�m��e��w�P�ro�ܒD>d�-�u�돷���j�+m�Ğ��<�p���+?)�S��Co��Z�]�x&z1Ϙy���Wȍs��Z�q/�u���z�aBM��h��
$3׋�ڱO;,�3l2Ԡ�䱩?���<�g�l���
����n��L������-?��i
�g�a�:�ou����<Ե8�+��9���2���<��|�E��1�%�zY*��7��aD}���̳���d�엵F
�Ch�4Gc�咡��?mv��<�y\��>��:���6�Gl���5O��|}[���^�MX?�rѹ�f|�ٴ����y�!�'�OǼ�:�����j�]�l�X�B-k2�
�^܏��zJs��
y�p����i�F�	ڠ��oez������G�%�D��ߴ�}�D]��h
`_��>��s�m�m��X��=p~�9úL�-�GZ�6�W&=���ޚ�LJ~���x.��!o�Ӧ=s���C��f�e�Z������W��g�K���m ΀dЅ�+��B���o�YV���>�wM}����������6�ߞ~�s\���7}�F^}��E����8�'���T3��70�Ĉ��m�o����oQc�h�&<a>�8�)�Sck~�^Y��P���ϸ��G�q
�����>�Zb�Y�ڕ;�f�9����腾a�V�5�3�5�V�&Hs4f�b
����݇�'vߎ=O��'v_i�6�����_�����M����죘>����ȩ��؎��:b�ʦ���5��a�	�
ֲ�ԔG�_�y�}Z�j
6L
�i�k�O���4�����Xq֢u���5g�1��M2�a��I6��R�9��q�'�u���{�sz���̘>�|Z;�q�ݚy��� ��`-��6Q�{(�C�|�%��V�s�b�����f��

�i�ky���\����1h9�[0�$X�1��	r�=s��k�Ѐ9j�4G��\���x
��{f��8P��
�Y}����y�;�!�>�OM��h��kV�5���� ��`-�l�A�X�ub]j�4G��|�;��/�k@��dB-�iN�OY�M�~�6~^�����o�+��圯j������streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���0/����'htmld':025399F3-BC6B-4021-83FF-D387659B52E7-7379-00002316C5480746�[@#x͙ip��u���r��M�If���N��?ڎ�x�ĵ%Y��v�I�6?��&i�&���Z�ŔlI�d�"�})�$H��o���/ (��N����}�!�������s.>��9�;�~��`kCf�Rk��|Vez�|/�����#���pt�p���s�㧟z��O��C�VmuЄ�֧��b���'���ER��1���A8�6�{W%l�ZƦ@��:��@%\��pݳ�?ԉ{;6&���g�ts!��
X�-�a�q1_��KN��l+V�����r�upNTb���*Q~#�ZG4>/99���mXo��C��.��w�W�ט:A��|�v7��_b�}����Z�h��tV�j1�V�{P�YŰ=f�1;����w�jS�%&~���"1��i���D�1�\��8��C��akT���3���ٟ6�[b�tg��Zg�]��O�#&e��^�~�2±<R��^=Fk�0V���]8gC��as�o�����S��^���l;�8fIW��,^L�HL�K1�&�k����6-�|6�:K1l�Ġ�6\�]ؙke�pN�0�������>5�g��ر�TU�y{�����x����/�`�0˵+�=�$�z��v3�6��61�ZÆ�����D��&�zKL�Gb�^$&^$&^$������(Q�E�p-��������LX*�}��"�c�O*/�[b�=�"1�"1�"1o�_��!X6c�R�!s&�
��|���f����a��k�����<���}xKL�Gb/�)����y��ʸ�?�}=�h����|�6���cr��|V�Z�{oZ������W��y����͹����=�<�Ӯ��=��fø:'��(�0oa��&Gw��~,��&�ea�+�5�*���p{	���,>Z�`V�{bx�7m3{{����D},�_g��k�-IB
�[s֔��p��(�U^w;�Ao#���0?D�zA'Q":M�;p�G`�$c�3ea���m�X��c�
+�ؘ�`��3�״�޴5^���U��X>[Cv�k���5�e�@W}U,,[��sU�Eh�����v����ꇿ��(��^C+s�?'K剰G`</)~�$^Dn���<��p��sBO�1+mw"1�����;p��3ӄ�Q3,)SO<����7�pdM5Q�p�I�"{]�C�ﵹx�*�T����"֘���b�S��.#�ks�0�`N���`�]E�����n1���S�y:�P뇶�(�Š�8��7ѫM�LK�*P��J4�l�!����;�GZ��X�e���K�|�.�n���::���
�v���8�5K%�e	��E}z �Q�s~�{
ע�Ah�;�]=���ptj�a)�CWI,�X�"�_���t<y�'���f����}����J�F�ӈIM(™LJMQ���j*��.�pʉW��p�����`s��<ŵ8�E>������^
;�W�b���>�s�7�H
~���А��v�Y�K��%��������S�4�>���2�/����-ڰVb0�C|�:M����p����?��#�fu	
�j��?�^#�4���X�-��&
��+����r�p����_Ǐ���D�q�I<
c�qt0�M�4��puFj�0ѐ�����\���j3�k�=@��rq_�צ"�簣��x�*�7hp��?Ȼ���}�r9�`g�1l`w��=��-���'a*7���񏑧�����@ǜF(���24��і~��K��S�s_	f�5�[�����_�s��Uq���s��?[���`��E�hE0���.��]�/2�b}��W�q�An��uƲƽ}��)�Xm���"�ف0$_��*4�u�,G��p�$�+	��w��-��{t��X�Ҁ�,��|�1?v�w��E����V�V��V�!	M�����>r̺c`��_[`�p���b�ZM&Vʢq���i�7[L̿;j
1��+�!8�Ao�Y�;5�1��~�&��d��[p͵������Ku���-�Ə1ȩ滕)

��"����:ؽ7�]���1�0����V�5�fc��ˊg�[�\K%���a�%�?S��g0�X�L*c
��o���L~��-�㧲��R�3��3�bՔ�=>��Zu�V�3�k�;�p�`���7`�2Ŧ���_ok�s��V].^�N�c���&�Ɛ![UpM3�+��|�Ys��_���*�C?�q��q�f*&�W�2�[�fl��c�s��[��N6���jNNJ.��X<�\�oܭơF-^�>�9��7�C0��Oa�"��]�A�[f�)��R�^�f�V�{4��aA�UC"V�)��6��s�Z���Z�R���b^�s�����h{Q~���j
�6
/����H�)�c�ѓr���wJ��wM�c&��d3�d�ޣ�>�d�
8J#C4�b)ƠO�}Hš1�q�q�f�eN�Je"������8�
�la��Cq�%4�\�ϴnv���d��j���Q�V�J3�$��#kFڹ���l)��˥7��D��q��~<T��I��K=�F���D��y�~�y#�o��8�̫�1�Ǯ�z�l�Ӝ7��Q�p����%7��9]�F��K�Y�����,Z*�;���a�k(�<A��!1�,s?	���|n�cR2���U��d��9'm�̃��ٚL��C�(�T��|vh��)n�#����c>���q���~�%t��<\�+�o�{��1E����6䟔��)�U�L8��v�=^K��g�|]�ڲ�b6�[YWԵq��C����y-<{�[�pNx�s�)}��+�Ⓐp�#��bw1�"�R�(�2�ޒ�p3(�i��N�1��G]�T���q/�gݗ��x;���Q��'b�R�3S%�2�O�]a"�O6�'�l��+�T�=IY��H�-�L�{��0��̭�
�d�E�������&��5y�"�r�U���A�ϜK�,�@7�g��YX���{������l��{�8�^%���.�C�g[��`0��b��_�'�8��1��F�.��c��b������&��ϢS�.m4�|���q�V�͙��qd��|2�+�;ٗ�}���<���-��"O`�qL޾ļ��{E��sm,�z���݈hϾ�ΒhX�a>�}k�~�.s�E�xa"�O&u���'�@����W���ˉ�,����5�w#����9�o�+�
�2��������N��M4db�ZNN�X"�����1��h>���-�+}H{�*��;5�\��R�V�q{tq���2':5"aݓ*��9���o�۲^�?����X&��dRW7�:Շ�P�=%�yc��=Ři�(c晫G�4dJf��b�%��;�H��y��"�v&E��ӟ��v3�|2�+s�9T��J?j�G���{�3ydNׇt��Bij�����]9��}�s.R���>e<����a2�;a"�O&u���ݒ{��n�χc=N�#^�.��T�z��!�}L��7����`�*�|2�+m6��a"�O&u��6ﵴ�"��D4�L��A�p.������lO�"LD��J�.�lC}�=K>p�=�^�^��Bu����<A�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��
(/�officed':11295678-5AE8-49D6-A613-6E33D9ABFC95-7379-00002316C54520DA��@#x͘yl\W��Ҕ�(���@*��	T�T$������+�_�UQP�tO;M���f��%ޗ�=�oc�3�=�����s�||�}�쉻M�D�U~:�w��y�&Nc��,�4��%��V�/+�\'�S�L�b“���,D���wܹnݺ[ob�7�Mw���l�S�X�����|��.��;n��@�<ň4氶�eʿ�|Ű&�`��\͈5bn�<�ۋ�=�hƽ�q�pCk��z�F3��8�c�06,�>�㾉�/`�ۅ��\�|��]89�enX��P�ѰBBc�ȷ-u�Wܱq���M�;��>܀�~7��r0��6�c����s��&�縇��#	�50f���/����P��,�0��B��,�Abe��h_J�n�e�w}�D��w-��qh�����f>T�
�|�֝B,X��M
������X�]�6���"��i$�FdWrb�.اv1��\��=����u}U���#�a
������y��^��[r��G}�d�kb�ZM\����t�����
��\t�FG�A�x�s�5�T��Só?���\���0֜�ű��EMü���}mkn�c�IĤ-B��Z���;���ݕ���ݰF�|gZYdžϳ��a��|���s�kn�M���u�g-+z�]6N����S�{$�?3�Ƅ��Y����vXc�D
m���&j(�l�9|�/�A	��F�l��b
Zi4~����[�o��>��1�U���<t�Fé�x.��һ����!X�w��?|���k�Gc
g�ܺ�F{[g���˘�/��b!tS�������h��ĥ� o���\�0��F��5�gӔ7�2e|�F�O�QW=���&�z<�+lH��d,6�G��<�y	7[���Ӗ���c�����[�XC?�h~�G�	k�w���9�&Z�.S�g�a��$��9QGxX�'�ߐ��m]2��H�bҿa�O�~���_}eDZ���(k�Ҵ�5tc���gdz)������������~>W����Ē�owH\�6cc�ۼ�3���"����6��
�b&���^�[1j�B��EF�N'�M����4��LY)���'�8�%=���d
�R�}d�e<�'�kv|��3��3X�C�.a���xG	��Yh�چ�c�Ps�M���׾���>�&�G�A��t�
���}�
�3�[���=�[n��:JK�
���>�:Oj�&!_h�K�|�9����R����?P�3���o����h�w�����M�����+�oA�h8��g��9�=4�΀7g'B��1�+@�w/PZJm��(�"��|�v
W"��4��O�H�]�y�{�=��2����_���@�WP��o��xUo�U(��q�����9gZr3�9����mh9���y;�W~����V��6T}�g�ej1�D�
+L���ޏ_9�S��rgI�y&N����Ы�x�~����.4R�{�+��O�������󵉴��D+��^Ҟ�^�=�?������m��0���XC�9�|�t�<�;fb�85ʞrw�hU��*��c�� ��{�[}=UGy���Ѵ�%��o�>\L�Qz�\�8���k��w&Cߵ�ڠ���V��r�X�>�ia6���5�
]w��j�����+�9z�|���ԟ�����"N���!2LFZs1ږ��}gn�6�������D~��'�6Z�p5}�sƫ�_쌛}$�<Dc[��j<M�g��Ua��`��k��F��i΂��[��7���QO6��BLv&:IG!�/`ܧ8��LY�b?�?�Y�!,b�j S���[+k�zW��`���|q���<�&�����6��&y�9o#Θr����YS��B6�Di)�H�>��q�E4�Z�k���z��d�\�UX���<�%�)���u��0�U�m�G�S�.�~��f,�A����&�"9����ǂ��x�9ʳ�v�P�����N?qM�(-�.�k��x�'�y
����F�@k��ZWP�����ƶy<��o�ָ'j���5�^i�+���[�����=['�9�K����pٞ����s�ʱ���4qi�?�]�K�ݳ���xo;�|n�cqs�+qw�;����Pӝ��\�po�&c�r��X������Di)�P�܋<{��+1��wR�jP��f��]��IBuI��B��(*ٝ���ݼ|�8�
�l0Vsɯ0�ר_58:e�~c�g�$�ϸݧ�@��빬�8v5Ws_��`�.���,'��_�.�"�A��n�Z\���|����X��Lj�F�p�[�+�I�S���]W��{Nc�/���'q�η[��7k�<Z��S��Y�z��J\:�E�+�1ҼW�v�䓫�_��c�@�ʈ,a\�G�_��-�e��ލo�����(��'ϥ��J,1�*v<P�#u�̵�!�j>�]��G�O{�iM�<T��(��g�_��/3:���&#���q�r�[	k��!M��Rdru��J+�����]�u�8���w�ߠ��bL��L>�V��k�� �A9�׶�D�u��B�
3�N?�h��Ğ�y����>��u�]����㱟�P�*�X�1��V}���~�߶�Di)5�X_�{]�}��$L�kMh�&JK�)W��z�h�4mҼ��b��<K>����`���O`�~2�˖ *
�W�(-��\���}�̡�f/��YCqab�C�D_�p|�d��d��
��Rj�����f�08~���Z?�>��Z�$;�ek�&JK�)W�z�3ό�<f
�+`���$�Sl�������	�d��xM�(-��\������c�o�9W�8�s�]�+��_�5�w�:r�/M��RS���r�H�4QZJM��a��y�<i����r��A��,�-��@C��"M��J��r��P��i�	�TZZ��	�!ϒ��Si�/�	--��8�
�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��,0/�pdfd':E63A58F9-684D-4FF4-9040-9E5DE0A697E3-7379-00002316C54281D1��@#x͙i�T���qQ˲b*�ԤR�*�_�o~��h�1Q�k4�%ZR�)7�
* �(8,32��/=���3=�ҳ��ݸ�y�s���1e�)���s�w�}�s�=�L3/�2֘�Q2�%��V�.+��ّ�l�30�Iő�L�������s�9����^�h _�w��H3�
���v�B��PB���c����,��$1���(�{�?Ґ��p�G����`����L�b�=���S��9\qǶ����}�>�3\7�=Um.DM2�?3Y�:0J)ߩ\�\�y���6���'�X�g}r2��+f8��=�o/E�+	�CF�L{|�;:(���Wϴ����3t�X����{�v�b*X���BtW'r0әkr�n�Dv�{�L���/W=Ո+W4B�j�M��-k�5ۅ�{%�n�U��-_1��ߺNq���݋��4䣓�?X�9f���!��0՚��o�+�	�_t�g��d���OX�Bu��&�������c���}h-�mE���Lw	s�79L���o�Ң���G�q�#��"k!��;u�2�n�>���<f�'}��6��&�)gٻ>�A���9�b���9d����w�(�9\���>䵑/��⫯i}����S�k�����n�s�"i�ԟ�����Mݎ�Q��:�P�POs(49L4��+.�%%��8���/�kq�;u�Z�qF������E"�H��J4�]�h�s�"�)�Sn球��4�?��������`����HK$j�W,�/�."}�G�Kh�c�`�)}�4��A���}nE��f���wY9��N�ѐ
��utѽn,���^�C��-�~}�8(F}"2�iwbfa�B�-e�����=�9�_�y�hc��~��ouos���_�הz��S��,XN{��X�w��v���jQ}��n�eI��S�廑��k��MEKA<);�������C�9'���	s8�f����į(�9\pKB��.�%��i�/����Fk�~cOlw|�:���
[!��h/���}�rz_Ne=�b��94S����i�9����t�F�*i�W�0q;�nD�g��>�򵆴=��#��Էg�ػu-�8ڐ���h+O��`&�b��	c�>��0���T/�|G�NG�MS��{�(�EYQ���PW��s�������톛��Vu��#�n�:c6l݇��L���V�`0��`e܇6�<�=��~�1���7Q��-�z�{ע��z4d�D{���.�dk.��t�}��ϡ�����8��ީ2R���|q�_F,_�_��KW6�/��)��{h�j�\o�Ǩ�>Z���#��u�^}�C��oBm�F��_�6t��1ܐ����W��By�-�Kb�]s���n��m�R��_��m��c�z^���Hs��d��~�g}
W�V+��?D��:����ͨe�;y<�[8_��_����hˋ�E/���N[���rO�L-F��-e>�nSn�'�/���W��O���o�x��.F[�pėj�p��]�K�5�Z%�7Q�E5�Wq�lC��>�O�>�/�y?��e?��Ӗ��=ԯoc	�f�N�P[$N�w��Dz9��p0�c�y8Z���Ch-އ��X�E���\��v|��&�c���w��p/:J����w��w��W���H�E��r����K��P�뼸�\�ҏ��R��q?d�ߝ��玊�!�؎�� ��x�x�^W�x��b�9������j����_e􄺋��pO1}Y�6Aߴї%�ߝX�E�Q�~~��0�}p�)���Tԧ��.���Kmҭz]uҒ>�+��$�u7�OCk�6�+�*���r�+�&�RgȁuǪ�B9�Hs��۫>���0�o���t�E�8�O� }�/�����o��~��Q櫘!�G��~�n9�;�"�)�����,k!�V���/]Y�i�-�����5eb�:���y�9�d�v�pc��]��Y?���ɥ~���0҆�-k�Ed�r��]�\��a��g��BLv�b�5��*�_j��4e`�u��8����k��v�Ԛ��������hC���f�B>u;}��`���l=������gHG&��0�<&9m<��斋�l�3+/�9�\���y�N�0z�9�p�s-S��D�.8�]u�FS���u��ڇ��k��=Ŀ���M3�cZu��)���X��L�?��\�h����(�Gy4'm�Zw��|7��P�\�DZ��E}���F�;\h��������CDVH��h��H�Xy(�L�CsR��ߝ�������Lc�Q~~��v;Y�?�vnz��{�ܩ��[�f��Rݺ���r��-�?�Ź���ߔm��ZjI���`�GF��
�Z�G�z���Xr��K���ȿEXw���<���XwtG�n'�X�crh�j�F{��3ӯ�l�����#�4[��gܓ�<|o��X�:�S��_�y��v����qΓ�oֽ����|�:;����`�Vދx��i�Kd��m��(0�������	����@�9O+�E���qn����=���u|6��P����+�A���0�����},X7V���ԯ<�xތ���{[�랓V��q	�H�5W+�ך����3k���]���0���A�(-���\5�!��4{!_D���]h���]��Ժ��[V���&����2�!-���,�W���[��5G7��s�H��p�+]я���u;�Fϲ�}��{*���<���i|5��� >����Fq'p�ZcY���cs\%��\ݺʋ���CU����P�e��Ң*�U�3mY�ړ��m�'�\>3~kbx^e���xcO��a��ZL���Ң*��}fZ2i5��}_Wy���Vo~I���خ����|Z�}�,��v�6aS�D�٘��W�(-��X=g�9��C��j-&��l̵���ԺZ��>tx�VL�++�{���e#Q����v��@_�(-��X={�9���{��\L�Z3)�%X�u�1�'���~$j;�Z#��'v��� M�UQ��z�1�\���7P��k4�o,l�!,wJ�e�Sl������d5�O�(-��X];��e�^���wq�?�.�l�&zn���g��>��h�L��/M�UQ���hH�e؟��V�q�+�XSl�WH�4QZTE��f����g���Ң*��Ag��~�0�%�H�4QZ4�����~CNW�%��͛���:��\O�A�w����streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��=0/�rtfd':84295360-D2E0-4633-A5EA-07D523556162-7379-00002316C53FA9D3�	�@#x͘Yl\W�CI��"���G�/*�;��C[@��Ht���Y�fO�I�8��Kf���ocǎ��63�x��I]>��{�k'_��?������s�g���x�
d���(6>�P,+\���� �+0�Q�ɦ|�����>��}��=�%6≶��J|�4���x8��y�B��lR3�HNtcq����Z�X[�ǔ������Cz2�?ЎT��#
�龅hcֆna��8�>u
W����do�4K�9H�Y�7c�?�Dk1�)��Ěo,Pʧj�yoa:�3��I��[�4T�D[�;X�'��
���]_��k�a7�/��28���Q����p=V�M�#�R�k���H��am��W5���o����ݰ�<k��éQ̖�0�N�W]��p�{�1�?ڔ�d�6k�VT�����M\�+2��4�����pr��=��E�N�^:���LtU�A�ks���d��5T�V����J�UC"�/�����a�Ų.��L]8�i��ڋ�W�!z����@j��5�#9Z����~�Sގ5$��HOc&����"�Һl�3�u��G�è��/4];��T�O'khA*�¦��r|���%fl�g��L�/N�S��B��Y���Bs��n�Dz�ǩ�.�ܟR�F��J,�/�׿��g(�����v};ř(�>���*�GJp��C����|7�D�����3�RP�'�G�g��L}�.��|�w������w�/���K��b������/|W�5��7�w��R[���(�_�s�5W�Qr�+������!󝔞�&�a"�6����)����u��~��{���tw9�n_CoU��f��:��ha�5�S�[��޴��7���y��L��ܛ�C(�8�׎���as/\8� _�����7&Y���H�	4�E�Ճ�
�`ibc}��e1օ�h'�c��EX�i�޴:Tͺs(�)����Bg�ut�먺��m�"�#��#����A���
�Xc�7��|D
N���!��9g�G�{j8�m>�Q���x=Y���Y~çb
XyP�H��{�~y��j�Wy�L5�F�䋭~���/�x���r
`���5Wp��}�pm�~
9G�����%�=��<����h�;���3��c���ˇ�)�W����{�
i^C[C:JOY�N�uQL����g���+�?L1��u�\@[�i[C�{�#x�6SsK�I��/R�u
9��"7�Ž��e��}{���[�e�iܗ�[��a���'�ڌO\_V}B���U�!Lv��o��ʋ�,;�Vjm���oi)8�6)9���s�"�%g�E���ij�|�Y�۱��~H�z7�jv���r^6k$�kԾ6Z��!Lݫ@��n�`��
������d��=���l��W�g(|�uW�s��k��x�&�H�%�s�"i������
�s��V��`5���>Zf�����C����#)�;���d��SwK��W�8kV�����5�NL4=��m��w[wρ�v3^~�/�U�_�ċoT[�Q�8�_�7���[�G��W���
���o�c�x���"M��Ӻ0v��-<ﴛ�Z�x�5N���e7bb|'o�or�&�B�(�W��Bz��k�r�km��֢��>/�´�-�q�5��\��ڼ���?�?^E�f��\�٦��-�^?�{��z�o���sĬ�6k����X��w����|�x�y�_󹞬�5h=7��y��>/ʫ���Gk�7yA_yYw
��������:�e��|/�X�ּb�����
�%���k��c�|"�،'f,�4Q����{�{��k��v�9D�o��Z!_0s�X=۱:����|,xο��9�>g���Vo��2~��g������]��(}�mL�A��c\�9Vk�F4p��7kFC���������o�F��zI�n=�wM���:�;����+})�-߃]��o��2���ߚ�Ϝ��fZ��ؼ���ߥ�[�9�����]#���>StLK	a���k�!��.`���_c4���W����*�Zs7'�1�ӎ�q�Di��h�)��u��J����{������*��w�(��4R<Zqjw�y�&��v=��B��u뻘���
4N�'��9�ֵu�Mߞ3�'���&J��4V�'f��G�L�1�n�e�� M��i��Iܢ�5�Z��u
n�a9����i
n������6��e�X��+M��i����_f��_V$�8x}�Xl�X��4�5kח��܆f�:y���4Q����ҿ�_j�0p
��{��/��^�{#�Gh�O<v��j�&J��4V��3W�c�n�9�wQ.����sk0V��OV���}�Di���j�ro	���|��8�'�1[�v��Чx;�;�н��[l|i�4_Mc5g�����H��j�9k���?O��/M��i���
g~�0�%9H�4Q���]��"Bm�';����{���O��g�=�+{��/=�$�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���0/�txtd':D5FA1E74-21AF-4747-93B2-823D14673F93-7379-00002316C53CC7A2�
b@#x͘�S[���Ğ,v��T���<N^�0�T*���s���&53��$;��0����+�E�@��f̾J�� ]����l��I<�.~uN�>�;���W�9h+�>Y+}��}���i��q@��[-�=���鑙GŲ9�.?8|�|�[h��km�}5��:!ϖ����������t����J��+�me���K��z�b,�1��D�M�ƛd��J��E�9Z%�ݮJ��5����x_��nV[�J��f�E�ksa�=�J��2�|�6W��~
�:q�z�UVG%�^&s��
��^鮾>9��9��LR����l*��g�ݏPE��T_���i{x^F�$>�S5lWH��3�(��L�I�ڂ��؂~�����X���e��Q�����֬�R�O�-��Y��P^����OTv�}A�dkiF�l.��K���YY����Jܓ��]IL>�x�5�U
�C�?��}HsTC,�I�ꂲd��Α1m���e|k)��~䦿/m���t���矐���bLwJb�54J|�5T���/~y���⯒��ye�\�YE|$$K�7U�(���Q�{R�k$��n_u�<�\c�{҅Z%mB
U��`����?�$�lS9�TP?���H�,��O�b��G�S��g�d{����?�k��D�O�h�YC��������C����uSa�?[t
��ew���O{Y�<��!�����=���x6�H�]��;���^�@�K+�TP?���Bh�OX��”��
w�)Y��-��[�V�%[+a�o���~����|��ٴ�]�H}a
\��wJVFq�<��P��t_��3l5�F�{�1�P�t5�M]�_B�s54�� �~�g�Õ)-���f:΢�����wc5D�C
��oհs6m��X�C�+���#U+�zT�Vm�%��wA*o��Y~ZQ~˴��3�1�������*k�/#�n٘����aY���H����d-���j�w�v6m��e���2�Y�[��3�Uw_:}��M鬅���e?�ƀ꛰���PS���d��Z�%TrY��gq��t	�8.���ِ.�����y�̕����w�D�Iև}x�6q�B��6�x���Th�ʳ4˸���t"N8N:<�q�\�ꕆ;'�w�T]�L�?�Ҍ�$�Xp���:��5�Y����?���t�]��9{+�[p����۸��g�k؃=n���P��Æec<(K�58�\����{gj���Y��<&�O[�/I+�����؃�L	��;[Fj���ކ�}[��g�ej�>2وz�cm��O�1�>ϒ
���C�2��Q�p}5���Qhm��L�״�|m!��³��s������C�;y����-�糱@3hs]�v�%�n_C�5�o+�^ľ^��	����JEΧ��:"�̏�e���O���Td"}�|��;(���;���k��T�<���~���L>�v�������9��?~���\O�zD;Jd�qދJ@��B.�
����4��r���Lv�J��D�]������(=�H��bD����|�Ot>��� (k8�x�����rPm%������_诔ž*�B?諔y��{���c�����J1@�G	�k)>�����>cŦU�����O昨8`���1^3�w"��&Hs�&��x��A��e
�-Ǵ��zz��,}�=�>s4�E����>�'k���硚�=�[#��f��c;��~<\g�
��:�0_ŕ�@_Y��7Ǩ	������X����ii��>i.�%��#�YV��g�Ċ%�O��j���9�_s
�A|1������q��~B�e	r���C�:k�Q����|�ra�	��H��q����Q��w+������E�<��It7�G��:�j����_��p7}NH���^zҷ�q��&�.�N��5}^S_ۯ��U�9Jb��k��m�o�+k��k���cL쾎}M懫r^M?>SΥ�צoC����Wy���z�wlj�#�1�V�5:Nt_�����ĺ~��k�J����1p\�#�X��bA���F��@�1���,`�5�|���De�s��՟!�Bg����%6�9̵b�S�z_�k��a�h�C�0���
5A��6Q��'����RrB��};�8}B��}E
��a�L`�>0���`��^M?��h�^��݅?���>���1ǟ�}�xr����i��>�b��Qm�	�5���W���}�M��~)��45P�9j��:�*X~\ֶ���'-r�gЇUXc��8}C��0N[-�Ԁu�	�5��:��j
�����Z=��3g/��r=��z/��U�S�9j̥��A�ZC�5�o��>���a�E���U>����� �Qc.���n5��k��1�`,���E�	b�5�����c�i�s9w��/�g�������@�.�ē�����5x���OM��1�s�z˾P5A���\��B���&�>j�4G��|�;����	��$ZB-�iN�O��M�~�k�w���~e�k��
x7퍒����pI�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��
s00_videod':81E977DE-E02B-4AD1-AA6A-7675B4567DD0-7379-00002316C53A1EA2�2$x��Yp������[^R���&@���e0`��Y\��-��@�b	��
�7ɖ7I�n-�b�m�6k�f$K�#�hf�����i���6S���t�{�s���G�;�W�L�L�@"`��0g$���q�9O�sd�>S�*Sd�l���+>o޼+~�������|�l�W΍�ɹ���]�&�6��i��`�z<2P�+��i�-�ؿ�Ǜs%:�*ѡ��V"�2�S.#���[qD����HCz-\�Ʊ�9�_�����AF�:��f��L��@u:�?S�ݹ�;yh�\��XC6��Q���6>�Y�c��`
����yd��Lj�d�>U���r�!��n,uIއ��,\��ʐ��Q���戚����t�GB�J�,��(ރ	�hӝ�$oߦ
4��5z��[�˗1�^����&諔@w�7J�o�a	{O����C�#G������]��h}����~���À]�q��I��R�z+d��Hr����t�$I��J¾R�P�=۳�ŧ�
�^�F������!�5�Z�f��{�{���e2���ti�O���=8��De�-By�����������497�_�d3�}�?\�Ƴ��]���}����9�/}����̏%�o�g�z�ؾr�P�=L�e˯~��k���FjR���l���Ad�Qs���52����(����I�,��f���8��Wa��/�g��?�ѕ�pA/�'����@�G�V�i������y�[&�r�.C�$���/wH��-�@p�i�|&�ќ)�pA�Ѱ'Y��^�w����\#j�1�_!!_��w�!C�
�:u�|��y�=�5�|o�W�sooH�l|��U�����
^��ɀ�o+���������t����O�����|��h|�z��3��4z����z�:�9y���bENo1�qjy�kb�O��X�����i)H�ϧG��=��g��
k�=pM�w�7M����d>+]���P�A9g��>�Db�(�vc�x�9�Ob���Ǥ��tVdHh�W�;$��*_���d�W'�~<���vݛB]��;i�/���~
��sC��#��X=���?��\��-���<���bi�oU�ԥn�����t�R��
)���|]N�yC��ϡ��9g�t��Q<�G�	vH]����/��<X;��`�~�?S�B=j2S��	5���:����+gk�J[�>9���xp�<���'�ޑ��j�9�T'$�)J��!m����1֜-��o����z
��õ��T����Y�떦gӋ�#b�C�?ޖ�{P:���4������H9򡜄gO�f�ű��-Rtޯ��.�=i��*��w��.����5p"�ܗ�H�V����f�1œ�����e�!S��Z�ȩ��R
�'��G�o��Z�2��)|W7�ƌ����_�����U�����%	����R��v���&�#@�����	tS���S��D����ýh�4�h�ݩ4�&����z��p��'Jw�~iN~��k�j�X���>p�D?����-�����
���h�~�զJo�<�����ٺ4�4C���:�}G�=�ޖ���m���&ܓ7'8�
{��3��N�;���LP"S�����9:S���@6���g>�]�|�L���SFπ�A}��u<gns�߳j�����B�����p.��xf���`�#ڏ�S3:9Pm�h��s���]����Ŏ~��d��{d�c����ɽ`��S�ڰ~�}�1�gp-�E�X�΀�O1"�����y��>�h�&���1�+W����{D�t.p=sn�E݆�Y�[�谷H�1�+F��~x��5� ����ֱ�����+��}l�_�(����D���"��c��\��{��Ě3���Dm���a�:�=���};�+�/�g�� yf=�z	z�:�@�0��k�c�n�e�'�Z�o�u��EF��YG�'�M$Ԁ���\ľ������t�3^/SU���I�8����3��\��k�7-�Q+�F��'1�LX��}�x^�t�����:	V~*S;]Xy�N	2QǹCϜ�sQw���[��X�u�C[P�q�c�ع���%K����:�*�D&I�'�;,����&*��1f�C¹����5�*�Wt�=��e���c����!O>�V�z�Ayꩵ2Y�]�:c�q6ñ��s�<sp�|p=j��/F�Ҩ�zF4u�����3�/Zt���x�A	o�I����m�94��s�U9u{q�D�s��چ�y��0��j�1L�7g���;os�ƍH�pجLZz���۰�1��y95���ƚ�{��1L/�&F�3��PG�h���u�_�p�<����>�O��c�_8���^�Pj��
~_ita�Ӌc� ��1������裫�sޙcùb���w`�ƪ�y�ʕ�6{ot������o�����#��o+cٛt5�M�&`E�CϜ�sQ��_����s�]�a�3W���n���^�J�2�+co!;*�k�A��C�\�sQ��3���(�cTp�w�uj���nXg̓�c�7��[o����Ck�e�ڕ2������4��7���h�r�ѱ��s�{���Z
�V��&�ft�Ǻ�U�e�v���e�w˚5����e���2J�S_��yM�s��98���pM���
k_E�D������o��FG��
I~�
_�a`�U;bA
8��#���E�F��9A����������o��G�^�L���
�%È��0r�as���c��r.j���0#�u��٠n��kg�%]�����/�V-u�xy&���/�16���[v�Ts�%a��n�^��^��Nqh�?���d(�%�'�u�<F�Gd�c8�sp�K�?Ԇ�����w�
�~��_:'8���w�E���_,�oI|u���k�l�"�-�xp�#���v烸���Z�4������5�]��p���8\:w��`X�����+.�e-��streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��R,0-audiod':54F1F62E-9C05-4B55-811C-C1898599B2AE-7379-00002316C536FA9C�$x͙ypU�Ǒ�EDQhD�U��Ju�Z�B��m�ig�WG����qWKEAA�-$aK�ld__^�H^�������{	�7H�ދ˷��9�%���w~��;���{���L9�1t"��P
-%e�ӊ�,V�U=%v�:�U&�'�� �'K0��Y7̘1c�U<��=k2�V�
�a���/߫�Z�{k���P�
�f�'07ӷĿ��fx�k��*����Q��-��J���Ѧ4���L��0���)%,ZnJ�|�X�X��L�wqތ�a�΂��D�2\�f8����+v��S�B1��`tS�kKN��Z7c�����?�fé�<t�$��<N�̰��kfWW�>��S8��O�.C��J��2�*�J��Æ�vFh��i��=���%S�0ژ���-V&���{�U�b��4�$s�u�ܜ7��5COu6Z8�Qp9�2�,��H�	�7���w����$�q��b�l��quxcR/b����n���>�v,h�
���.�1搭r�O�?_y�-v{�r�-K$5��I�-"���Ȫ��K��H�]2��?՜���KQ�q5�!lS�6E�!��搮rX�����eɡ�4c=��E&�:9���y��m:&�G.ak'����s�D��
{er<�v>3́��3���t]*��r'��䣷$���<gk���bݴ�������Oƿ$^��삧��ȡ��9mV#��:��뮹z.���j~�x:(ZaT�ae��5�U�rs�e�;�0P���eI8�y��\��gKrq��|&���N.i��bԵe,�!�Y8�ERV�1}��v+F��h��!	uهP珯��o42���C����צ{�w��9tFq�+�UH�`�b�R�Fy�%��G>����T&�>'�I���p�VN���5���*�9t��{�]��*�%ʏʡ���)�DEC��mB�^|m�^K��(��P�=U�h:���p|3ڋoF��C�lfu�˛���{ǵi�9t��^i*uQytY#1���8*Z������:)�)�wu��"�hM�Ho+Nw6`��CN;�8�,�H;�"�|�}֦��l�>H��Ě�љ���r���<VL'��h��XE�lH��FIJ�����֤�Q���]��m������	�����S
ل�Ûa;��M�єw}�û��7d�,uo����fmRGg^�A��|ʪ�D����)�����<n��j���x�儢2el\G"�!?|+�%
"���-z;�cv�4vJ����'��թ0���h�::��r.��{�s8K�q�f���L��!�@]נD�k$���$a��!j;
E�;PDf[�.���,���_;Q��'�FcV0fΘ>�x?xt=̵��0��=��PFLrS>��J�Hʲ��pM��B�=Y��j2BP��b�	w�N�kٸ��PeI���NU%�N~k�\?�������C�w�1�̆��D��D��(�G[s1Ԑ���&8���p4���\�BP�{Qeޯd����V���Qo9��ca���&�I'-1&�QŪu��7�$�]�&n�*�9��������Ρ�O5f�7X���.h+�Cka4�EqT,:�_<Y�@��N��"ݕI�ţ�9K�.q��s�O�;Kx�Σ�E�_���/cװ,19+}��nO�w9eO���\�k��G'��x
�J�8r&���2��N��_���w��1����j�s��0i������"�P��#�E�DQ�~4r�Z9>�z-�a�����G��;^��oĕ諘�x
�0mRG{�~��\�y�bൄ�	�><���o!Z�{P�Dҟn�+�?Z�|ۉ/m�k�hu\�.K}{���2��P��1+��*�aYi��Y{�X��<N��aۉ>��r�װ�L9t[��Wqe�bYY��o�	�&u�e��r>�'V��܋���BI �^��R6�m*��6�Cq��������5�Wq}���^C���m�{'ϟ��� �2ϕ�E���/z�<Ϥm�Sq��]gbgi+V�~)��h�)��i�$qmE�SbYV�)ՖV��6�Ù��s�k�:WK�����ڇW�X���/����Þ-��{Ҝ"]>Sw�M��ı�s��<�lu
��r����0<;��׬�x"�#����r��8O���|��W���6^;�V��b��@ů��Ȣ��C{p[�Jܜ�%����t��?O���a����Da$��u.�c����G���i=b
I{GZ����ʹ�����O�{�)嗹	��J�㽙*���x)aZ��>diu>���3&u��Vǵt\�˺�"��v��A_C��_�_D�Fv�?�?��c?�Îx�����x<q=�f���&9d�s'X���3e�|����V���󳭾�<W�G���/�\�.�3�$�=<�xDͥ�[c�[���E���a��İo�Ƅt.�k����IJ����r��h�:ZS�y��+y�#��T*�"��Wνbdf ����XP���'M�૔�h,���hJ�2(�>�ie����Y������s�����(Ύ��OTl-���W���� ,�|�w�撝X��/G�U96��|_��%��޲҄��L��&m��h�:����j4�sE¿ė�*���n��>JۊE�by�&<���\��9!�]?�o�qd�J�!��Z��0mR������h��	���C��$������䏱,��X�e�h����<i'b[�5�򨲯$.6���'LD����/6f
�Ȳ(�
{������"�*�7��Pז~M�;��5a=��w���&��8��J�To[e}%�qf��:>?���9~���������U�6E���+ކy�[�g�)�@�0��>DѶ,�t��U�c�z${^i�S����9�"s�V�����ܣ!�K,]x�M�]���|��-��m	���	�[?�-G7�^������R�k�o��Y�.{.|%�}���(H�G��ê�H���N��*�3���R'��M�5���
�
���@�{��6cN�ǘK�`�wpN%�{F~���s�����=�k!�P��S�j�V|D�����|�7�s�&Q�����M�M��#퉊�W+F
�W��9�0;�#ܘ�?�x���m��
�{w<�q��q�M�J�\��w�~~�:���8��N�$]������s-��gP��-zj���Jw`6�f[����-��cs�ȋ٦8����~۴YŪ�����(��,Z�)���m!�=DzV��MV�*v�Vۗ�c��0N�9��ɫ�|��5e/l���d�Eנ;�6�o�	�-/�j~��S�y.߁~�Է$C��9��[_������d^_1�9�� n%
}qAka\�������
�b7�:�+��>GQ���V�lU�]n�~�c���0�u��07�c��{qC�ܜ�~�۹����2m����)���6�oW]3������c��k��ye��[�k���o|�0䍱����G�νNR��ǔ)��~�u�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��7.0�applicationd':B05FB1FD-5F2A-44FA-B5AC-17BCA248584B-7379-00002316C534334D�
�$x՘gp\�Ǖ��ɷ|�$>f�!$C��E��6`c�168	!L��!���PmS����b�.�d5����m�zo[��?��jm�B`�$o�s�yO��ݻ�=)j�c�![F�h="`[sD�6#	�z0�e�Pm�V%KoI�x����^�E�]�9�bA���,y�)S�M254�u�y��F�ԋ��VF;��]�!�e	[ڇ�_p��	5J���
�w��w�@m���c�ۖ.�D?���cFS�_�b�S�� l�>��炌4٤�,�,��q_83�n�r�¿ABX�~��Dx"g=���{ʱv��c���B�.O���x���e�#�vt� �Ð#k�pPz-,G�
j�F�6)W�]��v�t��p�M�s���ב�c�K���1���1XM�zu�(�1\�.xc�L�Kd������Jֿ��\C��a�%M>��a?�wV%�����c��`��	�p'�w�Ps��8Ҥ�vJZ�O���T|��C��a�9U�n��qt;oc�L���d��j��U��YGN�������P��l�H�Ƭ�R�y�T�C���yC��!z�V��yCE�L�_����`^�um�����n��w�{��Ӑ%|w�^������Tc�]O�`�1�7�ʷ�������G?𹜐/����1j�^�/���P9���Կ<v���1��ż��C��5��W���k�pEG�=��%�
騹9�v@�?��|�U(Í��U�$
�G�~�U��-�w�c X{:W>�x��K(\�:���9��na<KC����5����Y,��"n��C�4��������g�t��Y�1��iؑ�oh|�1����.�r2�
��jO_}&]E2چ��&Y��NHU�;�D/ޭ�C�h<�j�Ѓ�>���4X}�C�|�1�=�O��XЦ�4�<sy�5��m�Im�������w@>���<�H;�Є��c`���7y1��X�+}|�q�����?�Q}I0��X5�c��c����ti/<-��I29���l�Q�CF]�2�N����;�7M��b�'G��yh��):%S�U��:V��b�D�Օhۂm^C����&���*����R|�9����v�y������y^
��C�g^���C�VxF���g�%[*S�v^u�AmNGO�	��SE�X�sri^LN��~����|��UqN��KM�[b�>Zr�e):�"����zQ��W�,�5��{U*b^G����;�P]�d������9k�T|�f�^�r:��ۈ��I�7eaJļ����Jy�A3���H)�yU.���_*p�2�T�;���5��}I.&�֜�r��������ǰ�`_��Hg!��Ǧ9�<G��^2�=q�9Gz�W�uD�Sސ2�^�w�k�7ر���ʤץ�j�MzC�/>��\{͗����]�G��g�yg�a-��1D/ܽ�|mɑ��i�.�����Ҝ{���gQ�qHq���Y��|c�{�l;&��OH]��|���貽'S|���!���r��s�2�Ϲ��Xk.���>���OE�8Kc�^��]�	�	�z���&	�}�ă1�ޔ��yxO�3�>~w��<�	k�֐3s=@�s� _Ʊ5f�=:Y�/��T���3	��]��`C�է+�
�>MP�c��ɯ�ٿ3�]�?�Ip!�^� h#�8��Z��1���m֙3��@s�� �߉pB'�����=��{<~Op��#ϙh`�\8\?6D����j�hꌦ��9s��d����.� <��'`�Ixm�O��\y����.s-�Z�m�<��:G'�]r��'峀N~u!�B���	r�u��zނ�{�ߞ�d�kAa|>��N�w�?8�C�0�h��ZDO��1�G�AG�;�ȳ|.�xӾ�ݙoF���j�2e�ʥr��%ʊ��Xq�DGߨ,_�8�2�t��Kbɒ��ه���s
��ƺ߉�5��
�=���M�ʾ};e�c;��vȣ�n7��.{�n�={��#���[d����-vm�]���;��M�c��}��;W�ه���3�	8sԕ9c�т׻�߈�~���m�Ӳ����0O�m�Fٶu�l[���z�
�7����p��ߕ�~�h�S'�m���n����t?���=	<C��/�͛�6�����&k�E������ǥ�$0�c�:cSw���fͭ�Jϝ�>�c���_O{x]7?x/��:��mu�,�z�q�/�뾩�f!���k6r�~�5��+�v���"��~�Ju��'�}�%[��x�����}��)�o��%7�X=#��}�1��/�1�_�mgځ���8�t��_ʖg~�y�
�~܅��
�=t������`[���ܛ��f�35�?�Ǎ�
�VW���}���=����>v�gbf��5�5��g���}�}w�� �>|�������	
m��:c�x���;���/��G�n��r�'\#�1�?<�1�B�V��M)����
ߓh<G��|�&:�F5aq�1Y�����OxOޛ}L���z��5�3��s�9�hLB��K=�4���n��kg�>Q�Mʛ2^����l����B�{��צ�ߤ����%Y�}4�?�F"�y�����ԟ}�P���g�Z5?|�K����Y,��f�4j~a_�xDE�c�QI�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��V0_ULayer 4d':B49D7B18-ECA8-4770-A48E-FE64CB968BB9-7379-00002316C5317201�@Gx�\	x��֖�INN�����'		I$�y*��hͮ����E�j��{�(EUCKkb��UmU
UEo]5E���LHʽ���{�����q��^{�}i�����4xzx#8��f��8P�<�5s&B�(��f��U���a�Y�ςa��P��g)P`B8��깰���T}�W���70��5T���g!��k�8йSg4�oC�I�E�'Q�I_�F���ѣ[w��`<��z	
8�XƐg�B~���˭p��]\�z�W�B�6�P,<B�M��G�
��
�ɦ�ܝ�W�\An���o���!{m���������/�p�ð����SN�m�Fͅ��M�_�b�Ja���X�`ظ�S���Rc�v�V~���G����#2��җ��MѻȾ7c/Kk׬��lSv�4��UĹ�~b�q�me?��/�J�O�?Z��������Tv�{����K���ZN|��CeRF���{�{v�Fb�D�l�R�ٲ%��y����tP�B�B�Z\���[��[7o����x�"jT�I�gQesSto�:������ive�H���˖17'Ο;�ұeP�L�B˟�f��پ}l)'&O���/���dG��e�g.��C�x�J_/儢'G�:����d������̓��/����Vr��ѯ�oxԚ��E��o�U>щi��@U&;e>d��={����[x�Ys57%���.�?�V�޽��ѽ�T��Q�Nր��w��f�R�Pd���4�q�nܸ��

%��ߥ�y׬�e�Ѣ�RG��G�'���;,4kO�N�=ߺ�w��c�"��2w�q�{��
b��6En'E.�����b��3����/�/����An�e��m�8�?k焔u���I���_��<�M7�9�qH;�̅��(�1�zޘB�W2o�*V-��"_҈����O�Rg �Ѫ(~9;�ܹ�b2ɓv
B��b_=�Vr�ҥ�j�j�MY77��/���r�!��ā,g�܈_)�x ��q���Y��jC�*EWR��Ç�B^��>���'v�49�MߵV��]�C|��|͜�(��b��C;����I[ҧ�y��"���[�r�ٛ7S~A�CXhq��d�e_̎��/�%�d�`�[/�`ͼ��\�X��z���/����`�X�h���!��e?��O�_d7�Y�㦕��?�:�j�e��zN>N~�?�/6���iD��Q��)�����
�d�HY�SlD�:e�y�/�Z�xNt%6*���I�/KIa+91���Z���\��x�Q�͉k׮��:�F|���i���_�~��Wd�u(ur�I�/Y��-��իW�y�:ndf>`f�u���{�@��hSRF��ޯ�QkF�A��'�Y*/���#eE�G��4xm�k��G�<?Ȝ�P֌ؘ�(>I���y��i ��Z��-��I�w�� ��$���sت�w��۸�� �w��Q�}��U���^b���u��M���x4�j~�$��IbW�+͚4{,�w���
Y�W��mҸ���d=N�<��9q�F��߹�EiG������/���1��(>P��ș���N��8O�rù����c(~@b�E��+��QA(eŷ�F�K�߳o�^�~�$��?-��.k�ȑ�c�����չ�?-�أ��S�N�i ��g+�A��!>)��b?SI�$�2cϞBS�əL�dY[7
+�Ąr��<i2��=oOy�L}�F�R�L�rB�W��y�n��d=�����W�^#�!� ����V�2�)iҿ���z�γ������w�(�gL��B�G��濧�r��G��N��(�s<�s<�s<�k'������HNNƁ��3�I�#���?�[�n�KLʃJĶm�vԨQ�ƽ�9D��<$jժՀ���Ã�޽{����.*[�����7drT ��T�\,XD0+���z����Ƶn۶-��mhٲe��q1��R�5��{�����r�5bʔ)��Oxzzbݺu��Er�Q�z�w��%�j�!�[4m������w�[L_yUn
�ǿ h�B�*Y����=Q�x�>|�ح[���XQ��TLLLӾ:t����\��n�4b�r�`+�K��:�s��P�F�i��X~�z}��Z�m�
X��ͷ�-��!�����+Æ
;��>>>J�^zv�������\�rhժ���ӧu�/.W�P=�²����S�(Y
�%"����s�x*�OC�F��zxj�1�m�y�=X�k��>�;�`�z%ov���c�u��Q=����
`�tf�`�||	��`6��m�&�ebcc�ԯSg���?L#W���2��S}X�l�u�g��Bz�W�#d���@�?�����n�>0�f,[�:v-��'��8�o����ʲ���h������=��_2`��6��N�	�2�������8l�3�W�\(�>`RR.\��fSiN�X����+Q�9p糷�$l�w�*s!z���DQ���QQ�X�����f��dM9	k`���?#�nG��/Q��l�{���/?����|�,8A����-Q	�
Wa[p^��&�x�a4���`�|v��:a��i���DdD7K�L�G��|Z?�}�F���?������s,.0^[��(�W)��R?�|c������C��[a�~�������t�ڕ��wWw���Zc�w�t�ꖲ��X�b�J�ڧ��	���0��^!aJ6��X�f�z���v���e�F��������|?q���?�a�8�v��"v�ה8K��K�ŷ�~��e�L`��`M�:Xun��]��x�
�h��3Z��7h>�iƐ�?u��U}	j�O�M�7w����M�R�,�w8(���%ֵ?ö�kh�CT]WW7t��Æ���<�a�.;�����Q�F�;͛7�e�6Ăy�n���i�a�9��-T�9��q�"d�{�+�&��M���b3�f֬Y�8B��<z%۹��J�����q,�+`�gv��nw`{Zڙ*��Þ={��h�§t]X6eº�;h̪��Y��,�v�ok�JwR�T��Z'�>3�n�撕礔	l�E�+�y����z/�ƹs�.4"X��`�0�p�
�/��He�!��5�β��Vi����P�}�^����g��4ZΧ<�_g�=�`�t~q/���E��q,�%���dp�/չs�YS'�����%-�>��o�h��r�<�3F%�P{�ɓ'���Q��t�&�UR&;)��S�2ظ��ҝ��c洩�ڷk��N��f�#Q:.�����g��r�T	���k�Yѻ��`�<�ԛ�-�:ڋ��j�e�|�n�Z曫��i��[7m��=�w��իW#��_�:�-4�
[���S�7����Y�z���JM�i*���½�,���CXٸ����"a|�c�>���?+��N��;\�W�M��So�J��y��?��a�,
�ʍ�[�6b�V��9�!شi��+�#�\�g���M�a��$
j<��,ڷ�w5cޞo��C�Ղu��[�j�b��1��'��ڢ�6�;_�oNe�����Ǐ�s�1+�����c%��ͷa����+`��	�e#2�~3Ժ�~U��J�ULA�2����g;�o?��woƥ�`#LSӲ�H������p��M��v#��z(�*&��W��S�N�
���M����}���U|L�e��w�űc���������u��a�99���+�U�b�tG�ί��P�
����
�e�)]I�acb���1f�PL;����cG#���{h�ܹs���uDŕ�i��0o˒�I˦[J7�M�a��	���QQ�8p v�ډi�'b��Q�8ftNf��۷�_@,��ȚچZ'�p|�0��XUb%s*�SNC��ԍ���������v�Z����DW�qͯJ"w�}�S1�oo��T��⺂�q���m��!m�6܀Gd%�HY��Q%ش��y�~�Whi��Ҷ�"}�v�ڞ����������,\�P}�Q����s.ٖ�|�Ҷ�i1��|�e�:�
�O|/��;;�oS�f��];���}��0�,�ٮȸ�����Vc�_g��Q�r_yx>�����أ�V
��1�g]x)�CA///��Ջ�t�������٭�Y���Y��á�i~ˠ��Q""������_�s����!�{��1�e3�J��|f�rݱcǡ�<��MR{��7Y+vڬ����1t%���W��o���X,��'����9Y�_[�r�7p�y��3��q�f=�"�0]�����cwҼ�z�<��A�-w�)���
�wp�iMT쥖-Ǹzh���d�)��:���X�˒cІ8�v��ԩ��A����	���1ڢJcܘ���C٧lN|���wV�R�^Q�ȇb;��f������Ĕg��B��W��i;�ƿ�c٩M9�Х'9/�!�H�jY�9�WػOo\�w~�}���`>^���s�)�T�*+�����'��m[w�K�W���Y�����2f<�k���;�j�F��<`��##?6�[K��F�C�����X��if�3+��a��~k1[��˗/��K��t��
t�����2/Σu�]�<�i���e���!��"�
��p:&**I��hY�0�1c���/Q���V]Q�nY	�E���������cp��~'�����Z������
�ߠF=P4[̑��u��.g��{��ԩ�$}҄�x��"�QBBK>aχk�/[ξ]���eF:<��n�mg���LCއc7�_�94���۷/7n��[x� ~ɷj3U��eх�rSv$1���$�AtT�į繶:�Px�?��zP��3dȀ�1��oE���mU�`�.�q���
�<;�.g|�u�`R�rS������[�'ۉ0����رc�w��ڸ:�����oi�xj4�:��T�B/ʦ��꟡���zj1 q��KE�.L��P΁y��{��0*:
իU�?;=p�b�`���_�C��X���ɣ�+��r�	b;_qO�ɳos�W�fͨU�o̖�gW�a~mB���$=?�������A_-�,��jq��!uW�{*�g{×���0x!}�.ժU�)��۫���<�}��W_�=I֜Gr����ÕN�k���������:[�}mÆ
1q�D�
JJ�ƪ�26߰X�ɋ�/���5qL�=f/^}ϝ,м��w��s��<�����A��)��Yż��%����c�~@�i[�	�+�<TU}���L���eǥ_E�-TCH�aj���y.��C;�����`_��S|�e�*ɛF�y!����ZG���3�"}��Cۥ-������r0��gVUkC�c9wW�����ĉjߕ2Z_Xg�A�v�Q������%n�}�/�Ҩ{��x����M���,S(T�\�NtD�t7�X'�����6e?��j����v�yog�;��n�5j�g��;�jի�g)�W�T�S��"�|L=��L�%�,�c׽;��c6�,�+4��Z�*��Q0��X�Ab��{�W��O��J&'�L"�ҥ�z.Y���s�E�Uyv2��TuO(1���6�W����lؠ��{*8���u��vw�@�ضޅ9��:/g#:"��V\h�|}�b�+W�`ƌX�bG�[�������]�v���7�7�a�wD�m��k/‡��:�ύ5��	h���_|�]Ϻ��s�y���}�+��P:@��JK�U����
���m�h�*oΜ9���\^���|%�*{�	hJV��l��r�|wUn�ȤufC0|�6��j�o�2����猪����U�I�c��0q�l޼y���l"#c������=���$jU�$s��e�9��_��@L�H���c��)�lc��s�n�9%J�P��$��ƽuѢE���/��9,�K�ş��..^���
��L�XRǟ�fÿ��b�'O�[L��A\f���Ͽ�d	��֮���E8�<E��/�bL�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���0/�����swfd':CE265196-51BF-4C08-BA8D-06EF79150A40-7379-00002316C52C5E22��@#x͘yl\��SJhIE�j�
�**U���[�$���J��J �PB��@U)k
Y��d��xK������K��;v'��m��~߽���N ZW��{��}�͛��gFc�هA2�DK47>��\V��Y'��C�8א����8U����՘s��[fΜy��8x�/t6���.|t���޸|!��l"M�o�ЉJ��f��*��e|L�_���,Dϵ z*�?P�H_�O�`�!ݥ�0֑��`j�-|�n{8!yɞ|Ѽ�܈q^7c=l���*��?�YW���5�Zَ�VX~�0�;k��|�'W�^��Z1��?�S���N���#F�xG��[;)�?�,;��i#���Kb���`g1F��p�ݏpe2?�$�����3����R6����m���5C�N��Z�ŭ5п�q�|��._kDq���h��1��}�SN�o�:�p&������b���=�F�2�Ƌ���b�}�	ӹ��h.����6�

Ž��X�s����@���"�[��p{�3=�?��|�J����O5b��S!�h�-;w	�5s�˹0��X��aLs��,��S>|g�l�IEK�N4eoG������]��!���?����íOq���B����/�r����)�oQz�ݕ���͈���Z�*�)a~��p�1�q���S�g��E���t�?�'���N6��o@�L��Qޟ"=�N9��|����ٔ���[����w�VC���K����+.n!fθ�|�*7u��8����@�};Qyp��m���lz}ն��~'��Je~�ut���y���Z�y���!7?Q�(f��4�Y�Õr�0&?m;����!
�y;Qud#.u�}��=4[������2�`�M�)�P�{��X
�2�Q��k5_l�P����(������Z�Bkʷ~i<�C��ԧ�x�Ԧmť�S|�
���=�@�C�=Lޛ��%L���p�/�Zg=Z
1�B;�v֣U�ubĵ�;5�u���e�~?�4CG�>4�����.��f=�8��Z���a��4����]�:rY�5�n�'�ɛ�{h���A��ռ��c8�ӱB�'�5ͥ���P&:����4
�]�o�Po��Au�a8�h/�N�;�7�v�c�e�<�v�������w�ַ����;���<`ֈ�;h������c�)��Iـ�=�h�[�o{�_�?��(�&�w����#�����8�w�H�#m>�m���Ϥ��F��}�JH)���T��X_��#�FN����5�h�ߍ��phK<6�gV���֠l�{(ۿ��֢��z�$�C͡5�$ �w�s�c�ڵ���b�E�y-V#���0
o�����i���F��[s�U���[R��xh�n�f�v���Dl]�r^��\��5)��nDm�F~^�8�>��ў�
7̼�ʻ��+��{��� }����'�ތO\_VkBs�KFyO�+��W�p��9x�/�����S;�6l^�@��
���V�@Z����MR���7�DyW'vR���E���1����	��������E܋�����}�����K#q�N4d%"H�r��^�-y��w��hB����8�߁��t�VK��2B��5���*+L�Y����Aĭ�ü5�[V��JL����󐜔��@*��)�)�'��Rq�>��}��:b⭩bן�ľ
�'.4Z�=��e�b���ї%6����",y�q/����^�ƼJ�py9^�/@�/�:�l�e�����L��fҔ��B��;=!f��y�-"J�����պE=�XRf��R#iB��MX�Jy����'���2�71��-�Di1�޼DDO��V�Ъ�T�5k-:�]+�`G!~���{e�V�0���T0g2O��Z�!�6.k�Z�͍]���y?4{y�6�[�̅7�c�O�0��V�K	�\�3��
�GLLօsc�N�Y�&J�i�Z���z��kP=w.+��Z���y��h����U����\�QM�v����jȚu��Į?g�u^�ܫ�^��q�Y?ҝO�(**��=đ{ك�B~'�n�1V�'���Lj:si���F8�^�����S1�����hmՆ�[�`��+1%�3w�S�Tgo�]�f�~ϸ/ڝ7Q#b�<�ϸӋlOc�/Z�Vȧv�ҿ��{TG��.�c
ŭeM�D��Ew�&�����%���y�h�X�����yiu0>5�@�����z��Pݙ��M??S핾�j�`�۸���<��|�.�F�u�J�z�}����=F3��c�qa�v��g�s��Q[C��,Q�A�	{�|�f�w�Y�5��N�5�cMc'���3�~�ܫz�]���+��Y��E�yϤf�{y�t1�u���"�Zs7&��Q��y.���b]�6r?7��4QG��Ӈk�̵"����D�?y�"����|��B�wel�6����;�m=��5ϵ�ⵄ
�C��l�V�!���7�ɽƺsäoϙ��;��&J�i(W���g���9�^�7���W�v��{�VO�|2ߧ�7�G����P���1G�4QZLC��3~<�V��j�:uu���Z݂�iW��
&���̜q�Q3���l6Ƥ�ױ4QZLC�:�h�QSC�e͵H��-�~+�}��9N�jL��e�(6�ٱN�h�/M��P��=ҚnjX�@�2��e��ڲ��u��u�'�{Q�J��5Bk|�#-V�4QZLC�:�#�if��cȒ{�_��?�^mtw�隝\�t��e�3��ڂs�	�d���&M��P��7�2}�oaM+��smb�q㮝��4��<�|];�M�Ɨ&J�i(W{�C)_	�E�(-��\�;���������b������o9_�$i�&J�e|O�_E��G�j�n7cƌ���d���2��¥T�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��
E.0�rard':785F9AA0-2E04-4E5D-A83E-CF741050C650-7379-00002316C5297D4A�$x��yt���S+v����?z�sڊK+Jm� �[==��k�� �m��֊�b]�	 �J�H2Y'�>I&�I&��d!�@���}���o2I&zO~�]�=����D|A�ː>���Շ%�i��k?��u�ə�9]�$'���PG�|k��ߞ2e�U_A�%.k�s�˧g��^�|r&�y�����z�8e��F�[K���"�e�-�sȿ�{��I�EP!��29�Z =5��.����T�'�P�Eװ���YvY�rQ�*øo��%��JgY�?I�[,�)��.��xn���|~�b��%�>1c�P���a����T�6�Kgy���<����-bO��_�{�|&J.7}�2�.��&�xJ������a�)UҢ�+D���y�.1���n�&�M̘քq8�JU�a�oɓS�,i��.:*��\Ԑ�56�H��ً�wam��2}�j;��F��>󄹍O���KڮMr�![��)�h="M9���^,Þ<Ԑ�54$�SK��$]P
<)�=�
�rp�Q��ӚP�˶�%渱��X/��nh�H����L�'��J�u���|n�F
iZâ_��vȚt
�.�"�.	@?�ޓ}��#�x]��sVa??G;v\�l��t��٥�ꤝ��co�B
������pΕ,?��w~i�j�yt��w��1�.3��v�&��cbƴ�X��\��8�_�U����ŏ���-Ԑ.g�N�7����!���7J(�I�O]�&����galډHݹ^z�3�Ö(u���f��ŏw��@:ˍ�9x&p�p$	�>z�
2�]}j���~5Zk0�cm8�9ˇӘ��C���H��m�i��&�Pg�'�xW��co������~յ���2�����eпs��7c��N���CR��[>8���54�9��]PC�
5��M���>��	k���_�V9U�,͹GęqX>���Q�W>�kA
.�7kٛ�PCgY,�JW�	��2#�I��(�?�S�m�m����FI߽Ѱ�~(��S�Y��#UZ�?���D�i�s]���^/�����&��8�u�ٛ��P��>ȿ�&�
������I=���k�;|;,c���0���)/VZ���Lw�1��*��ޓ���u�:�F�랷$w�:�?���~�A){�9�c9�3��S �bK��v�_�i�j]���|�
@���'��`��>���}0К�=�"q�ʎ���l�U�>�(�׃���z�Kc6IY��8�Y*b6�=~�xp�8�H��K mR�+/�b���5�!4�٨Ōa�2���t�A	X׏��%��F
G7I1��,%�\zl�T�ϖ�M*���"��
R�)M�{�)W^y�m����a_��#�r�M}`���#���bO�kȔ��$=�9�IՉR�%���
J���[�v�»�jw������Wc*䝷u��~��4�o�s���`��}�-G�3��6E<eǥ1��4�Dc/ڇg&
�Q�6�3}���g��Ai�;$�؍|�M�uX��'�������?|ơ>��͙}nC�٦,���}��ǥ�8���t����.p�*A��q�/jfޕ�u�qN�,Q=>O�j�{s���|���x��3A���>x�ނst���=���8t&��e�Oץ�g�r�8S���8'm�����(��j!~��|&�M�~���֟�3O�6�y��x&��� mR�=k��;�0W�1�X�>��zF_(����
B�������1��3'�ߛ����X�P�z�����F�i����g����K8^�jM�e?�@5Aڸ6��7λ�=�sW�ɥd��)/2֑�|��@b��'��Za�?�{3v���^t��}r9��%�Q����w=�
ݦ%�-bt,�7}�����]��\N��)�t;��X�`�3C'1��0�I�9N��%��_����r�j�ܱک������.Ȣל�[�����ʂWkd�+�����+�U�G��,X��Ƽ�
9�?ϼaG��տ�H��x�f��sN^�п����
�ߖ�Z��ip�;u�8���,�[�~�um�ˏ�(~|O���9�l\���F��3U�j�5�F���^���zo�;�j�k�M��r.��Jӹn�k�2���d�P9���6��oK�������k�T�/_�Gk�WZZ=A3��蓛��я��u�&���������5�Lq�՟��!�Q?�[>�4�x�;���1{e��u�6��y��x<w�����z�G��㶔m���X����k]��L�8**lJy�a���2�Y�aƟ�t�_<W����zԚ�2�ko��͆mK��Rkp��]soְa��v�
҂���p�}�X�l��k��7�Lך��5YԆ��l���]�cM�L�/Y���8��Q��1�ᘃ��s�Ax�Q�U[�5�k
�i2Ԑ�Ϥ���G2U;�cm�~�O$>�^j�.G�A|�K��	eΪ"�k�S�ʍ�f�G�jR
sA���N�N�O���j���j]�i�����y��2oU����JYY�(l�*ͳ��B��4[皃w��%�k���V�#��;P��~8��?��{4��MC���kd�+�
��[�[M��F(�7��o8�]a����gJu��O+�ƈ~�z�@�r�O˘}�>�O�����5ܣ��o6B��yA��ůWJAΒ�v��_�B�2,�W�\��)�=�6F?t�1�zx�s&�V��\���7�sW��呵6�N�R�x"f>Q�s�|�Pf>^��M�a�%��_���_����<k��{)�\��5��Ѕ�"��߹Ǎ��g��9�LxO�P�8��+�K�\�=͖�C��[��.4I�<�����構T+��Jf,�2}i���;w�����/�|6�o��#�/ѰfL�#?�>��bs����3���%�q��,��8f��_�0��`�-Xqi�.a���� W�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��
q.0tar_bzd':B0B847A9-6FD0-4740-B48D-A08479CA1F3A-7379-00002316C5269294�/$x��wpT��Ib�b2���?2�L�B���I���;��!��`ܓ�q���q�W�	0H���U]���VڕV}wUBTv]r�}��[��ň�7��)��߹��}W;�K���4�}NX�X}X˜�����G�tW%ə�9Up\�J�ۓ���ĉ��
.LqU�^g�|v�E>�qɧ�a��'�M�Ԋ��)CU��\,��i-�EmI_@�U��㰈��V��l�A���K�\s�tU%�;?J����C	�]��?�c�e��Eqt���I��*�%qX�j����h/$\ֵ��}b��雖��ČiCa.憰���b9ۘ+�r����j��=ewd\����N�U;z�d�] =
V���;8.C�iZ�`C��D~���w�צe���B��gw�o��Či��?l�"���5��iG�4�w�!w6jH��dۻ݋�wq�%;���/H��Q�Vߡ>a;1}�цƦO��\ʮ��]�)�$�������k-�!Oj������E|�.�����&�sѶֵ�%.���֗5�U�4�j�V�<�iM؏����c��ƻ��,NjS�3e��;���V�re�%5�h
��� k�5��h���p������<"^W��u�U�<-��|1�	c�=i;����.�W&��{kj(�75X��s�D���#H��'6�|�=�I�3&���oZ�l�Ok�$�#���X�3\���_�E���*ŏ����Ԑ*gkNʷ��� �׻�m�h��7��m�MK�Θ0&��=+�O�w����4i��KM�)>�	��z��ݬ5��R�w�	�?	y���yt����^e��H����~��h����𳖏����!^\���V��ύ�Fj�1�v��[P��7��c��_Z�+��p�yx����}��b�p1��\/}��*�.����O�l�A
�zN�wV��aC
�{ә��/ �5��~���J���#�L;,�v�����+��6��5�M����$�g������J߶V�EH�sh�Xl��M��7H��
�%�C	��Ƙ��b�;�Ҕ��4���@W��먗��Z��إ�]!�<6hř��t��4И���B�W!k�W��uR�%Uɇ@�TY`-�b�o�el�6�q��C7�DK�U��)�.<.�[$�����=��]+ֈ5b��d�[+�ߗ��ő�Gs����}�<�O[⮖k���DH�Ց{�g*�?}2���O��>���Y�C-�V#��H�<�1Φ[��
�wx�H
��Ӹ8j��Do��㛤,j��c��g�nG�X~Xi�:r"q/��ߡQ�(B����Z�֝+���J��u�D�-R�ͨ��F)$Q�����o�2���Jy�V|_���^��IC�^�v�5�B�����Ӱ/S���\�9֦>0}Z���K�'�֥�){��ᜩ����)��"�����_K�-~�T�]mU�;���{Wˤ�9	�.x�e�~�s4�o�s��`�}�%K��ӥ�:I<%'�>���eEb/ڇg&�Q�:�3u���f�:�Ai�9$��
|���j��O۹P��k�~��C}j�%�3�܆��
�,��I}x�NHKa�E'�qi���+�TE�tV���#^�̼+n��g��^�z|�l��fç%����O�����g�,9�}��ւst���>	��t���e���$I�3Y9S�I҅|��y����[kFֿP�?P]>Ħe�k�e���~���O�����_s<aBM�6��5c���
0V��k�e�a
8��
�+,}��~���9/�5�F�����A?�C�,� �=� &���9
ȝ��1p}	�k^�	b�l�h�&HsM��-�o�O���%r%Y��HJ�u�&�j!Ѕ���	|�i�VXm��޴]c��<�q�\
n�nԀ�@�x�]@bC�i	}@�X���M����w�s�����x�n�>
��zFc�$F<�=);�蟱�H�V�Z�\咻W9�޹�V��k��Ӊ�N��
G�y��V殨����p�Kf,+T�5xZ2`
�S���<���GV���c��Mj�$昜�п����
�ߒ�Z��i��;y��ӟɗ;�~�޵-�ˏ�,~r���1��a�Q#���O5�y#O��h�ڒ<�7�=�4�����Y��M���X���B��9F�'i�6�@���
b�[�����S�����5
��W������+M͞ ��k�X�ɭO����ƺB��d��Ѣ}�q�������pͨ��-��P�<��G�ᘱ,_Ǻ�e���M�>�=B�0��JmA�h���]�qK��1��.���ܻ�Y��~�pee6��԰��v����0�/:�/_,S8�H���f�����P�a[�ꟲ���f�?��5�C��x�4�a>��+Աf�P�p�a����µ�v��
���߲0S�fW�^� �L�y�g4��q��a�|8f��X<C�1B�jK�~�Ca�6E�񙔰��x�j'w�i֏���f�J��e��1��r�<<;��\^�c�z�X�剌���AMjCa.�9`��I���)��Z)s�^�k6��$��$G��4Of/ϓԜj)))��V�y��_(Se�X3�n���H8���h�=�>���	���c��G���6��y�J�^��\�U�U5��n�R{�����|�x�Xǚ�L��9��C'����~Z�l#�Am<�%����M�z���u��=,XY.y%8K���.XY�|yXf,�ױ�/)Pn|$e�~�
�c<����9�S?��G,���η�������56�L�P�|L{:Oǚ�t�L{*�-���òK�9b/����ac�y֢�y�J��8&k�������|�q�s��
�� �s�{��0�>�q(�>�'S��{�-~����]h��oIx
����m��V�K�J�.�
2eQ�L�;w�B��sp�+$��߷�	<oX3&�L��l1�9�X��	�������j�+�t`^��N�0a^�;�|�;0w•�s]�k„�ױKK�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��
�.0Mtar_gzd':5AF3D56F-0F22-47A2-A385-5F0264522DFA-7379-00002316C523C5C4�G$x��yt���S+v����?z�sڊK+Jm� �[==���T����V-.Ŋ��aAI I&��g�L2�L���BY �j�>��7�$�D���w�����w��~w&�K���4��X�X}X˜�����^{��T'ə�9Ux\����{�����I���.LqE�>G�|v�U�:�|O���	}�3u��v�pg��HG�E�JcQ[�����-���)�%P.ގR9ג/����*����d��yQ�%װ��/�X�dɕ�$:Y�q�y��ϙ%�qX�n�����>H��k���d��7-	����\0�
c�<%r�)O:�b�t�	�?�d[��f�ڟÎg��J�ה/��B�m�wI>��2ܒ�55&KJ����~mY�GH�鳲���061cZơ`[0�ɑ�ߜ+��҂��UxL�]9�!]klH��c?
��W�6.�%}]��7t�O��Dic�7����\ʞ��S�)��$i�:*�ّ�m+�aw.j�����%y��R
=�C��l�RK>\�=��m��ë�iL���C����KڵAN���V'u��đr@|��m/F
y2ܚ�R����՝�5�>X�U>X�UzO�	�o��]���*f��m�˘k�>A̾�&���I;�?U<xv��*a���l�[+QC�x=��!Kk8�L����?��	]�}l��{��-j��v�G�'��v�l#�I����g{"�׿,F��Eo�i���*�a�z
�5���ړ��o�ZȻ��#��p~Zλ�o�eߪ#�#̛��=��Hq׵k���6�̛>m��
�[�&��x�M;$%Ƕ�� >����Qf����3��=A �ѻo��٧�]��>-5P�ُv,f�6���c�2p~�g�!)=�]>�w�шj
����B�`�M���A����ϯ}p�L�5�>Rk�}&�C�h�Xvo��&�?U	R�yD*����p�r��&='���j财����Le��y�^�w�S�c�O��b�q��7e���Di�9*��H�|�[>�B
���58�߬adoB
��<+].XG�+}�:�?.yGwK�uh���o�~�IR�n2,��?�6����eO��O�� ^�[�\g���I��&��J9��`�|]x���������WAք����&5J�������Z"���ئm@c?�ه n̍���,�v����XOl��#�%����d����}�J΁u�w�)�t�ؓ�ISާrgx�;_�Ě���꫿9	�&tu��:����C����������@K6�P���Lj33B�N~���6)�d��GnI��
�Dm���R~|��Gm[�Nq���cO���!mBWgn��2��34jCp��S�Q�ú�d�{��؃Ⱞ�H�%\�bw5�,E$j�Cs��mR�6k�v��َ�k�X�7JM�iL�/�L��Ȼ�Ցs{�ej�>Җ�z�?����O�6˜{� �ľ�t9eK�3�#��T��%��ZL�Q[�ߠ�k���J��m�:~�ؠ�`��|�w&C�E���C��wc.�f?��a.�����fKC�t�$���4�DJ}v��xf�>�j�8R�k{]�A��:,͹G����	]�Y�|�j5�a-���q�O��Dsf����1�R����w�����E�\t�k�ѱ���	NU�IWU<�}1�A��;�M\&ΉŪ���Q->O|Z���9������y&Ȗs�{�,8G'�隓 �N@g<�|/C|�6Iz�ʙZ�H�n�����s��2±�E����Z�� 6-�
XCp.[�X�c�<}�@�����cj��	]m���^���1��Xc-�k����`x�d��7�G�}��X#Ok�loK��~O�c?��[������$872���2���������5���Z���Q���&���97ݷ�`��R��,Y[,e��:R�W��BL_�>�Z+���aOڞq���}�'W��^�5�3P=n~Ѓ��mZB�"�@��zR�����J�xM!ާ;�FC렞�:���yw��q�g�(�o�ɼ����r�j��;ުS����t��Cn�`�k5ʼU�2�U����q��E���#CK�}jc�ۊ��3oؑ�>�!�//�9�آ�rb��9��
=�i�`|�骕>������w��?���G�Y�*?�7R~���%��bt,�IfbS�����JW}���yb�F{h�ӗ��A�~�Y��?^�-;$n|8EǺퟕ��1Z?I���s���6��oM�1N�-O����6��߾T1��V�4��0f>��c�'�<�7��/�
M��1|3G�>�}~k���
�?W�C�5�~>�|��ilvWn͇b����r�V��D�(�#�� z�F���֤���O[����g]���l�8�˭JY�a��l2�9��`��3t��<_�p��
=j�X�7��&ö&��?uIV`��]wְ~-�6�	Ќ���P�~�Hǚ�\��9F�Z.ך��5ZԆ���L���M�kM�Ly Q棞�8��^��1󡘅��c�A8�(��-��4�y��O�����G�U;�kmӈ~�O$6�N�N{�Al�S���	f��Bk��%�͏e����jRs�~��:O�J�/���*���*]�)��d��\e��|��2_Rsk���lVk����~�L]��c�»}��b��􇢅��� ��%�J�����M�|��?��j��j��sşV��Z�$��l�r��|VX�1���k�SE
���@�h3@��i���u񰖐�o���{4���O�=/�@��
�/�Y�¦v�[��W�d��kƲB冇R�臮�>�cA�_�s�8�C�Ȃ9�Z�x��?{eYH]k���J��/��'�u��O��'
�ߢ���-{�=�kq!��?h�7�Z�<�^8�d
��R�:q�_H?�w�q�A�$xy/�&��5���eڒ��cO���Z����M�-�ϣ��s����B�J�u��iK�L]�'3�Ν�>���r�7����u�֌	}��'8[La� �<}�~�5�>��vy�̋������~n�����續WX�r�Lo�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��E)#:
folder_closedd':F05830E5-724B-4560-9AB3-C00DC08A6E6A-7379-00002316C521112D��@x͘[lTe���+��H4ʋ�����������
�@K���P�^i�VA
	b�����L�ը��i;�Lo�l���g�H93N�e���Yg�9�Lrͼzڬ��^uS�̘�w�.�u�
3n>SW,��K�sG�t��R�%�^�"z�jI(�V�?T/O̙}�mXsI.�^�R��{��R[<�U��j�[��9?&�p�$�wFg����_I������{�H��C�n6���o��X"�[��,º����S�����7���u���$�w�tV-�`�y���y�U�,��4�2��Ƚ�ޅ����ZV�O;�����2|�Q��J~?�EO>��</>�
�$&ڛ$��Z9R��b�����e��Y�0fm�������¿Ew�R�ŋ^>������]�h�+��k����,�#�+$���5
���?v�R��w���d��n&���K�X�t�f�����SC5K�㭻%zh
(�s�n�g�3�$x�G�.l���j����v����zF��9��PuA|�e�X%Cͫd����,у��2:�j/���y�~P�s��Re�1�P~wZ7�������͙�ʏ�ÿ�qy�Ͽe����M����@ƾo��F��A���s��s������SQ3�ρ*rº�0��AWm��lx��?�?�����Ǿm�C��u����՚���ZRѯ�
���3��9�8�Mm�t�d��wg�����?z���p�{+67���{�=��&���n|��U������?�J~�G�����J+�M��ns�2N�ԁU�=�1}���Ml�{m��f�|��%O�������慪
Ώ���ȧe�-S�P�K���Ԙ�:r��5�����1�%�9g4�C�߮��?䄶�O�����~��/�A� 4�)15c�u�5���'cK�����DϠZ�ΗIW5�W���W���؉1Wb�W"�T���A(�:s�}�ѣ9c��Gcw����⅌���?Z<�b�~�2�0�I��}����:���J*A���mt���y���w-z|�~�B�U��œ�c/l��ŀj��V	�M ߔg��wP�V��6�@�����H�[�T�@q��S�s�Xq�b�qa�)������o�D>[/�]�\@��wU���T�։�ї<�{�;���~��Q�hp[�|�깬�����
9��m	*�1��S��5ós�\�{֩�&��W�O�7�˹�[�jj�F@u�bc���AMՍ�p?G9c��Se�f���5r���IRg̡
��>˜48�5b�T�$g��5�5��`�_)���v@�l/��
c˜�b�-�'�8�9��<S���,}&�^���7��=�H_}���S�z/�66�sԡ�!���z(�8��AYw�g=��"�����oY0�S�]�U
p�:�)R=��AY'v��`���Eͪ�_����-o������@��r��,��T7�v�s\�-�'	n],'��߹u�D��e����|��IZ�~��S�����gNL�+��,w�.������5��,F4v�y/�1ω�*���:���;ܳ�;G�IN�������û�˙�ϧ�Z>Wa즭b���{!���/&�L'X�R!�_��k�+�Go�Se�Ʃ��$ܰ��������8^�p��sf?u�l�\.��4��=w.��[��5�����p���>����>��e�Џ�5eʟ�ڵ�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��
�//Layer 5d':DE846D34-473C-4162-8C9B-57AAE55E0EFD-7379-00002316C51EC013�	{@#x��[S�����:��C^�ߙ����N�>��9��666`.!�� `$Fw�2쬵{Z����V��ݣ��w�	{�7����n)�R/��%���9#Ŝ�yq+P�'���z6>����Ý��wm���9�hO�'�>Μ�	�H�s��/�\�I��'�Q>����~�3��nm'��i���u����ʅϩ1��b��OHe+ �ڸ42��;���,�]Zzu�q�[�������=��v��E${�7���&�'9Jϋ��̫�g�􍵫<^�F�jQ��l~��Ϊ��s�x��H��ڃۭ��o
9���ՏRژ�vq]Z���7�n��
g]�8�F셤T�Q��,;K���MK�����0zc{�i��p�?�ť����g٘y&���[Ũ�YZwq���n���;qbJ&2-���	��N�򦸅��NH��!�lW�����8=M�rc���5��]�����=�͹W����s)�=�KNX�Ĵ�K�M�[k_N���!q����H��/�O���]i���bBZ��d�S9��l��o�k�7�y�����es���(�Bm���{���+�U�~�n��
Ծ���lJr��^����6�rz�g_�G��UL�&emr��s-�:�%��<�+?CN�*�]�_���կ�۸>[�K�^���Q�����Z{�^�E�S��b؝�w��u�;2��ԯ��D�od�"���$8�z(kc��|"��wXcFN2k"���劉���E??��'އs컨{����z<�����df�G�y����G���,=�+��?�ڻ���}&��9�~u/�����OI�g�|XQc֙�s��ǘ�7}���)����=�x+�/�����{�����ޓUh��]	��+ɉ������i6���ϓa���H�S�����ߧ�5ٚշNj���_$-��E��Hh~�8�:�S���**@��ǿ��wr��=�������[�w����4�ugyLv�dgeL�Beg��o���w��_���U��䌮�o����]�MJ���x!9+��%�%��E��3��ʟZ|�4���M0Y6+�m�j��8�6����G��m��<�,D���S9�e1&���?�4�i�`r�I�ܒ�l�o�(���'�/���w)��/�q��]��l"T�o7>+��7N#�6�͒�b��.r����C�w��7O)������%z���dv��f�g�]��ᆩ��k��`���esF�UJh�8N���\T*;�OHtbd �38���޶:�q�\p���]����~����>�O#����űV1�ߜ������HjaT�><�/�7<���zx�2����Ĕ�o̽t�ͨ�#�¼22�l��>s���G�!����Ilꩄ�.����ה�Ys�q�q�]�1��������ϝF���l��5��[�O1����l�VǙ��p���|;.�N�-x��Pw2_�����<���b����>�.�O6Y#�3�y�*����dx&K��`^
�s^r��$>_�o�)�/�����q}%>����g���o��/�q�1���nD�8�b#��>�u��^��7Y-�_���u�aU�?�	��)�?��`]rٜ��h�6�ǹ�g�h��Z���y-�+k@��X��߰��V�q�OL����3�ڌ�#�?��︉da��k���~����Z��C��Wb����ze��e����u+�)7��b�"����g�q�ZnQk�3�IL=qjx�̹����;O��t�����G��q7��y��*�	�߫�ԯ�_�z�?Ώk���^�Qݼ�8Ŝb�p�F~����V���U���;�5b�D�y^.���b���\5�c�`Ծ'���xތ�y��7ź2�+�;;���AqU�?���ة���8;#ss?�)�F����Ⱦ��c�������8Y�w�oL�]�a�/⼺��5:�$g42�4��C]5ǜ�c}�Y�D��d�]8��/�!�(>��9�]�~Y~����o��:C��Ȩg�	��
���w���\Ϻ����l_��{�Yu�����U!�{��=����Қ��Q�wɏuoK�=/�������ÎUb�b��ߥ;��yʬ��J�1�>i�¸?���F�1D��^�SO_��_ՔgA��ε!���a�`\��5R�{�c�#�s��}�q_������W��k�����ڔ�#bG��~&��^�j���y~�B~��)�ǯjZ��/���슮�{��^T���k�c�5������Z�?��{��mk_��o���ۄ޻e
���Z>�欒������^���׵�'?E��G��֠���

�I^]A�streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F���(/unknownd':D178F1A1-DEC4-476D-BB2F-37B457F2FB7B-7379-00002316C51B6508�
�@#x͘�sW�E��bS�/TQ��#��HQ���9R.(*I11�.����}��K�H��m���g$�i6��X��i���}�v�Zrb�c��[��9���;ݷo��%5�,+ ���KX�%���v9䕥�,��lO�d��;~�}��7���%^iY	7ɣ�QY_���/��O�;,�In!,ٙIM�ez�Q�������r�ˡF���Ě|$7�/��]�0� ��2�Dd!X�C
�4�e�����r��� 6C�:��ž�$�de�]��kp��$;�(��,���R��GUC[c�7:�3��b�����O'��0��@��U��l�Q��3X�܇��-�a�e��֨VAL�Z'՟��K&闵X�,?h���
��B��͚C�A�x��F�{�eq��ê�I�Ư�{>;��7�x��&:e>�*��������F-���}����y$���W�je�����<�N��uh'�D��F�e�^��=r���<�&�d�d�ȡUsH߫�w��.,��rX����Q�!G�WcZ5N�q��ڳ���p�'�x7$jd�钄��g}���O��6�����/��_J�ղ>���aו����f��Ѻ�R[���xn�wF�$�g���ԝk.�gf9`l�9�k�����gX���B����l%��is���j�3�#\�ԤOy�U�?P~L�������Ht�94���[��~g$�P��W��bMXjT߶�~j�u�L
�H����^�D����S������)��b��b{Os�u��G�N �Ѽ�\��T�6Fgo����I�ᤴ]ܣP����?�S�����4��D�b��x�p>c
e�dr0g�r����s�뽉��zU/�2�@u�u�sk'���3K��������>y��ŷU9DpF�?7���{�w�ٴ8\��|�f{K1'ω}6�Ի�i���T�sY7H&�T�]�=7�wi�t�8"�3�xm9$���r�ZN\�?Φr��/�����!�~�W�	K�"���&��k��8�?���\�A&|7$�rSR�e)��I|�ƃ��
�j|P֒���3�:��"��}m�߀���L�uY�RV�[uZS��
`YwrXÞ�n�s�b�C�/��vY{%�[!��Ǥ��H��?I�����ni?�7�l�KJ�sV"�Rܿ&�Ż$}�Y�OG�m��vH+����:��ݪ��'nj�R����Fؖ�>HOv�m���*o���a���_���@{׵�J�ϥ��!����2PqD�I�����ͱ���˟�AZAe��
�b@,�C���qۧfK�S��_����&�S��zC�'?���~O��yW:��ޛ�����A���T��`M�U�~���r��D���7�o{�Y�o_ƙ�s���$}��1�>p|Z��y�p��k��`���/H�އ�?��OwIu��~���X`����]#�'$���%;w|o'�=�Lu\�~�;4��wb�179��g����"�8��?���vIف]xV�H�9pV	��6���X�E��~Y&:�J���k������w��j�p-s��ϺۧVZ�1�-f���Ҁ�𭒏4�@�1���ỨT�4���a�e���ܝZ|�UI��R��i��6|'�E=��m�b%nç%���OL?�w�5i:�[<'���U�e�n=�UBg-��_���G��� �� ��B���x�����p��΂b�Еs@ݱl70���T�L��<�H�we�Z��W�k��D��� ���l=k�x����j�f���6Cz�E:����.k�ݏ>�KX�5u�'[
ן��#�C�k�V��X�N�1gM�n�z�#֎63}	�k\��j��n�&H+�$�����h9���:-��5�m �)Q�$9P�1G�o����:sh�
�'�O���4�:�2�r�+޶9�:���ڀc�p�Q�$5�1cЗ},�ݎ%�-��h_Xj���J�{
{g��݌·�[�o���֟�4i�h�'0:��o��d�O�Z�9�8+֚�#�~��G��K�q�:� ����÷���$�DZ}9���5�P�:g����u�]��}�U=.�Ɗn^�='��N<�~�S�������o��k?X�R�-���ĉ�}9F5Ú��ĉ������P�1Џ�E����m�a�B�65vKu;8����c��960�(�3H+�����C��|�]��CPWK\>��/b��:��`�&���N�}�[�5��&H+�D�1�m»1�Oܾw�>�Oܾ�3I��Om�߅X�z��O?�h6�5�)�G�}̩��WS��u7vL���l�:��'˳�� ��¾�=��QǾxi����v������ ��¾�'{����s���U�zޢ�Y�a��A�ӷ���qZ�d��R�Tؗ묍��98�V�",�t
Ɖ�1�N�8>��8�m�j�OM�VPa_����9̡8���d�/c�{V}�i�e�	�
*��k��ձ�Gנ�bw`�i�O��/Z'���@�m�>H�Aڨ	�
*�˱��Z�?��̙_�@�Mv+�����5�wV�5�S�TؗcVC����� ��¾����1�u��j���
���p�[�k@K��j��B�O����<���UTT�k�߀��o�[E�j{J)*�? 	���streamtyped���@���NSMutableDictionary��NSDictionary��NSObject��i����NSString��+_PARENT_LAYER_ID_�����:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F��MASKSPREVIEW��0F�����x�x��q˗f;��4�I��iN�؎��^�7\�ި�w�w�	!�PEH �P	��ջD;��=�{�*����;��93;��޽{��v;�X�w�H(π��KX�%��퀶tg����Kqj��(5����~�{�]v�7.B�Z�2��XE�-͔�%���'�m�wK]Q��J��=�r05R�o
���O@~��/�)�%���p�Y�,u�J�
R�!{7.���)J[U�%t�J1�Q՟��PL�	b�hmX�kq����"e�qrp�*�P�͋��-��0M�����пK5��4���B'|�m[�Xݡ$;��j_�T�&��`)L]��ks#%-j^��ס$-�0�C�r��ҨVAL�Z'I���`���O�꽛�4'N
��J�]CMN�D-����-�ۨ?C�����<�k@7����MR��^
w���{7H��uX�]Cuv����7��W�SC�(��c�
�
к8h��NP�vR�o�T�o����r(-\��JN�����,�뱆X]CU�j��?Ǵ���Uп���PG�WcZ5N�q���k�"/A
�ٰ?y��^$Q�'}�`
	R��k��5t��/b�vYCar�-�]�ds���p\͉&F렖�C�F�oq�슖}x�R����R$
�mX�ݷk��5Tf��|��1�Y����Џy��).��N[��֡��H
���)�O
R�I+�I}�Nk
���c�Fk
�R�+L����$�U9�h�CK�AK��[��O�U��z�H]%;c�K��!�`�D��/�g�uGI�b/������-�����5��{�;C��8*L\�cs_�v�s�˯#���"i�e��P���x���$|zo	��S���c�{q���5�9����ؿ	k0�Ҵ�q�k8�9�;tmV���uP�۪��S;����(3�J����`��:�k��!�h|�IX�!|�ḳ�M�ۂN@�����e��M�,�Q��L����نk)Έ���	R�'���%a�(��?E�����#X�>9V��5db.{
����j���[W�Z�bpZ�8��_���NXb���>H\9Iu�܍~��8�W䮕#;#$/�_v�	���RR�!�{pmZ�&�{�IeA�T�ǵ������X�]�W�C���І�r�p��߿Qu����u{
�8f��l
�����8)ʈ���%e�4	����,���$q�G��ۉ�&�����_��l���IY=7��K/���*�|����6�&B�8�)+U;Ɍ��6¶:U{�q���A��v	�Ce٨Oe鈏e
�o�/��N�M��$q�dٺb�$N���$-x��d�j�\<n��U�_�c1I���54��|j�Wk�a�����43�aVa��K���;�#Y2�Y�;V6L��˧�hN�&�3$e�tI
���k����(;BfH�o��e�~��,�-�9�ej�>�?�V�kS�>-��<��*�Z#��B%#f�,�)�(^���^>�
�+�KH	�)��Y��CfI�o�&�η�ym�񋠟���4[зc�1'
k�5�^�/��kd�ɡ���q����2Q�#��J�a��k��#Yq�%o���\1��kn�q>r��F������g��S+-јݶ��/HZ!���Wא�j��o^�뢕 P�z�@J0l�����#�Cp�$����x&��4�ʁ��N�g���S-����%���OL�� �~=������&K��ж:C�2ԋw�K	>3H�.�.E��d�ߡ3�ֿ?v�?>������Ug��m�n�b����0�M$7aI�mh��V\��1^aj�4��������lj�f���6CU�Y�;ҥ?7a�Ɲ��s[b���Ӛ:��q_�>\?�|��b8m}A��V�8c���K�ԟ>�8����/a���A]-��[m�in�}1�~n��h9����:-��9\m -|��'���k���1��|�i�1�݂����u_�\�8��-�wR_��q�u�_�w-��Z�ç�vR�n�A_��G��m[BТ������&Hs�D���s�n��[�7����_��1�}N��$����f��?r6��gخ~o�k�:�c>�^Z���nu��7u���ض�/�>�{#g�~s�������:�ڛZ��N�������F�:=�xM�-��ql��&����E�K�qcc��ꃾ�F5Ú��ĉ�����1�@?���1H��[p�x=���T���ހc,V������*{�׼�ؖ���f��Z��ه}+���mL������:��E���5�5BM��V�_=��uˋj��'N߉3N��'N_�9I��O>��z�]����駧�hmn�O�8��cL]}�1�.XwbŴ��J���Z}jy&Hs��/�^��۶܏���}�]����@M��Va_�S��׀c�:�U�ˢ��ӇU�6�#Nߢ^�N���j���in��<ՙa:���c�m:�Dc�U�Ol��	c��i��j�OM��Va_�]��c(C�}�%�IS�	cͱ�����a�p.�OM��Va_��]!�-��9h���mk
��4Nj�	b�1Pg��vCڨ	��*��m+3B�a��ހ1]s��4�MAܥ��� n�c�2c���in��6�;�/��� ͭ¾ܦ&������&Hs��/�x
��9�ߒ,��� ͝r�^�@�͠�r+�ܩS��,����~й���<�S<�S<�S<�.W_��k���w�.W~����f��+����Z�%�ce7�B}�����d,!#�Hفz���'o���0票v�ђ1��3&m��:u^�.��'Jvm9^/'K�@��,�)'�[q�	�ؿIN�7����	|�;�a�ߛj����H���ŋ��p��s��wU��!��SN����$;h�d��,�<�/�_}�w���叮��\}�wPo�� ��bHs��	q�����~R��L�g- x��#�zt&�Z��<��'��
���IR�f�j���Y}����,댫�3V�#V�VN�B{��;�߿Z,�p���/�4g��2��:z�0@�R����R
��1�j@k@�kb��I䉝�߀���:i.���q���$wI[�/���K.�F��'����	`"��;��
k"�I
`[
`�~5֯ց��l�u�}a�C�=��U��/��of/�w�>m�����ʈqR9����*���:r��Q�V�Vk_�#�unO��V���K-���屳c֗���/���.�v���'�B��€�?m�m��7���E��~�2�	R�}X	�1�X�5u�:a��,*�
��ĚE�ԢN��w�AΒ�6��V������O��1*#8����UF��:ảsY��c�ֆm6v��(�&6^r�����o~��P]���B�V캱��rk�R�Q��r���M��u�s�_�-�uIK���_@K�+xO�
�ئ���+� l���O]jA��lG�׎�,�/ۦ~Ҫ~?}�˾����xm�"�X=ێU[A��Ԣ^I�71�Muՠ1�>�G������G;�Qp�O�Ҷ�K.����_���#a�>�K�a�a+V3�3h��.��՗��'��1����J�"�q��Y.�9(ǧ�њM��C���h�cl�rX�����	��G�Ӈu�Q��黶ԟ2��6��zq�wߺ��yR2�e�<d����V11�q�~�@����vD�v��<��6��$�Z��9R�j����6���v?�60��v�\H�Ķ��tI>^���YR�qI!��m4Ԏ#�[1m'�+�,����9E�&��m���5�GmE�T)Y1�JWS[BHK�i��:��ښ�nl��1hK���f-�Z��{�-��_5Y���@Kl��u0�ZCk۰�x��wnk�	ޓn��)�"�1Q��A��Ph],�؇�>��u��Z'�|��66ԟ8�=���᳤h�r2�EC���E�>��c�
q�چ0F4NK�ܞu��^:�Z��`	|�>�O�n;��vZ��>�����x�ۦ~��sz֗�����o���
��B�m�X�#�m������~�D��,����Z�G��y�-���+Y9ca[����e���>�n�e��۵�`�t[�l��G����^G�q>+��'G�pl�P�5�ubb-���c|��s���}e���3�>V�|0���%_c�Sa�4��_�|Z�8-1k�O��+�Ͷ3k~����8Y�mm��Է@{!�>ۉցm�F�P���r�Z�v�d�(����ђ�e��c��N2&x
��|Ԉ�S?v�9�1Y�>iD6�Ve�3�39��O��+�(%�}/Ұ�,��J�p�k�\	~}ˍ�u�<�?r����糟���K�Z�����;�?,��u�����O�O�O�O�O�Oi��_�o���]��K�	���G}���j�W��;J��X�6g�|�[�0g�l��3��s��W�s�����~b�,��|+��"�,�l��9+�?�&���Ln�e�q�}�윥݁��L���{Ť�O�]�'Ȯ�=6V2�v���t���&�ȅ�6�_̜��g�ͅ�����K~�����].A�s�J�9��a���N�kÚ|b�"�yF�MRc�~f[X������v-%/v��}Hl��7���$��7_�V��}(\�\�j�X�e�,s���/��u11���iu_�j���c�e�>�;�ʋ���p�@f��K.��l�B	~+.�o/����3ǂ���\[b
�
b��/�0�o��a���gu`�DLam�n�6�����0���fHm�0g�93e���!�vvh�9�l�
 C�~<�|*��Ѻ2���-[�o��q`�f[�q���i9~��O��o���_��o]{��
@���R�2���~������oT�O{���,�),'qoߓ�{@��,����=|O➭'q�ГE;@>�R��x��9q��6�|����̉}qx���P����fG�
�?����䡄�����^����4G
���J?��~.*�ϕ�Gk�>i�ԭ�z^�x��@>��Kq��;^�{|���|Z�>j��w��$o��>�8��
秔i_�Gʆ�o�-��{5K)�e�|���qu\�yd�'A���
�<j��g��!�s����=,�����%e[�I����p�Ο6��y�o�H�ќ��
�d��/��?����d;؎�u��C�#d����C�\?\�����9�3�����,a��=�#7�|�?2�'��%H���պJh�>�CI#�5�1�c��o���l-C~�𪰎�E���ɟV@����x��^�Կe�۲ի���{_�M�@Jp�V�ץ�je!���u^���#�^{p
d�
v��xMj*�ϐu�_�
�^��Qoc�"%[�LJ����yh̯;pn�d$O��h���3�
�c��(q^�����CA#��	e��+p.�q�8)�1��|-�z1��g��{��}�K�
zU�P/�1���q��~^(�5��R�}v�.�1$7*8~4g�j�t��D�zV����9]���B�5�k�� ���/����rO)�����K�G�|�8)��a���t�-A��#�p���O�|rO)��9W�?&�i�q��5�/�m�q�Ct�Ἔ������?Ő�ba�Uu�|FJp��~���,��䲜�#o� �3����S���s��d���3��|����֯y,����{�|��q�Љ��FAf��9WG��KM�&���������mќ��@��ʮ��˼O����V��m�7+��~7rV��_��bx��~�-]�Cx]O���}w6p�,\qލc?8y��CHl�@�q~/�^;K��6�=ɟ��y��m��%�_*zX����fa����u�2�s��oE�;a�US�g儹V6̳r�<+'̵��s��&~$���!��œ�<�gL�{vQO���>�/�sM��Ѝr-r��b�Ӆr����	�~�	�s�Z*?7~���N�(r7`����p^��Pׯm�r)�O�O�Oi���|Aۇ%����v@�y��ϳ|ϳϬx�E�8n<�"<��y!�{�Ex��l�EH�y�W�M���1x�Q��Y$�Sp^��s�����=]r�xn:��"d_�ik�,��
R��g��|��H��9Y�.�g���PO��
x��?�C%k����̻ �EH�X�xL�Y~|aa�j�]��� �E�Š��u�w>�0gc�T�K�l)߿[.�g2�u�!�7�,x��z���|�����̻�u��E�=l�$�<�gn����E�#r�$�0k�s	��͉��y
��P��͒����,�#;¥`�J�^�'Y�Kp.Z(�x-���A�vXdD_X�"�ȉ�w�h�G��`����,�Z��8���ut(�;VCۅ�,B}��?���8}ZW�o���5� �in����q>�9۩��Բ�X�3mNx��V���賏1�Қ8����\?��Я�3�̶x.��)�F�_�jmPW�v�V5AZ��r.�&}��]���8��8��V�-ؿ�gr첊
����^\Ӛg
B_h���%�-�~����gr��+v(����"�A��G=M1:��7����DZ9�Cu��Oy��r��*��w����n�K��\�:�C�;]�{�:6�P��~�i[Ч6��i����з�grl���+���w��?�.}�|��[�ޒ>xS��7��{��{�[�}����w^���ۯ��o�,o�ex��ul�a��5z�ӶN�sv���S�s���؜��R�7��'��T��8t��7�|I�|�Ey���.y����9l�|���9oԧ�aM�`���M{�}�1���޺�wG�j^'�N���K�
^{�yy��g䙧�'�xH��oѱ9Gc�$�:�b{�o�Y��s<��ê�:��kx{�W
:	t�Z_{�9sϪ�G�*��x����5��?����9\���_c�{6�"�؜�|@5�5�K���/�A��x��}��g���G�*��s��l���7��Wj��>�3�Xo�Y��s��}J��L^�6/��ޏ�p�6whY�ѣ֮+
���o�Y��s��KOˋ/>�Z�+�>�z�G����6�us4��hi�kjWk��s�`[��s���B�
������hQ�j���h
�l�F0N��96���˳�S?�c�5��Ԥ�	c.͖��ՙa귦���$]�9�yۋ�7�}���ڳ96��\��=��s4�N����~Z��F�֞Eȱ9���	��؜�蟣:��A�MA�Z��֞Eȱ9���	��؜������g�	��[{!����#�؜���#��;)�.�&��$^����ߑȞ��v�c&&ũ~��@��U8��Su��>�
�B�s�N��D�t��Ν���)���)yU�KX�%���֓�uv�B���Zhmr�:��-~ȇHB.A��`.*����9XG��Z�xU���8^vXm[���%�Qs%��yܸ᷸E�M��`Ug�>��Ë�Z�xe���8��m����s��D���R�O�[2I}r���h�^mc�5B}Ƶ{��=�5�W�%�Ap�3�@�ZƏ�T��G}.[����q��}�$�wSg�Ù�`�����"��0p�R��"�k|4FT?l[���9Xf����:��I��o�ɱ�j�"h���ؾ9X�5���,�9rY�����')x*r�#gc������l�/�yց��HkP?��#��p
�NJh��Y8��s�8�"��@w�j���!����
�o#���USeK��¹h�9�
�=D�0�|��Z:I—�ù�K	[dYB߉c���#k����m����,>�����)���hк��CP��p��`��!7��Xƍ��#�T�	�Ir�43Sp�����%f�0��9PB&����e��`bOY5�׈�O�'�3�{r�x^��#�[s}T�\����i�FX��B�ںj�$���4�
�F�[����د�d�����V� �g
���_K��>��"
�W�S���e���jO��a�
�h�����������g�х����#�Hm	����{���@�jl<����w���8`��Z��d>��@M��V���{r������ʾ�yF?��x��y�@K蓍��Z�vn�1��m�?|�a��1�6�S;���j�0�Iߛؖ�;�G�T�8��9;ZWK�}裯���ۨ%�-��h_Xj�4�JA��8�趍���~S�m�;�m��9���zco.���R9��3l�!���oT��uj��Q.߶
��G[�qi�V_��f�X���o�,�_���ׂ1��u��]����U=�Dsk�8�sL�o.������r[�c���&����E���o'���T3��L���i?M�3�
�㻨c��-Ƶ�2׶xĈ�o�ٱx�Z#~�0�-b�Z��v�b������Ra��y
�-tj^}u�����1���߀ٯ��9�-��7y@@m�9X-�^�׌���!��w��'��W������r�Z*��hmn��]8��.�����c�Xo��ע/�����o��α���r�Z*�˵�Z�O��#mkh�/���r�Z*��qj���|l��1�b�]}Я�>�b��hq��S��i[�j��/�a��1�A
hmL��>M��a_�G��%쾪>5A�[�}����C���;-�O��Nk���Mlk9X-��jW�n�qt�F �q�Z�}"��u��k��F��r�Z*��m+3�2��ހ1]s��4�MAܥ��� n�c����
�r�]P5A�[�}�MM֏��'��OM��Va_^?��9P��-��P5A�;�&�����A[�Vй��k"]@G�6u�tzP��xJ��S�l��NKl_��'���ʅ�{�N��
��"��{�N��
�q�x�uf�s�+�/���L��W<�<����3Z��W�a��|�^y�e|��<�Wv��o�cN�`=����^�K]̻RP�-�
\�3����c�q���:Pߊ+�5�k"�A�	��*��+��̽�������%2
�A����@��5N�3N�k��v�o.�*n�Z����PV��K.�E�
Es����	41��XBТn�׾���^�����
)��#�|�\��qx�4���<EP��x[,4���2|�U�_$�b�m�<Co��~�?B�S��ˡ��H�����zco.w)66V��ˍ�u>�CI�&-|�ʍ~K�r�R)N\%�E����X
7���-ˤp���$�$ݖұCBB��-�~�&e�Om�k�H>,b�6�m)�*6+./U=
�W�EI˕*|'�J�*�
�l�*�,)�½{$g��پU�����I�W���r����>R^Z*AAA���:m�Dsj�8,����\�RLt����ʁ8_�NwY�h�LK��]钗�)�;��pk����}�R���Jej��$��=��d�/3C�3��;v��ᳲ*=Rz�N�!S���DV��3��z��B}���
&NLݴ7�?���b��_�}�q�ٵK��'E�E��ȡ��$7'Gz���L��KʷEHj�RI
ƚ&���d��%���9Xo�:\��ȴ����1�q�пġ� �D�+�к0��r��"#���P��{@����-�s7K�[RZZ&��;3䣗^AN�t��7U�fN��icei�2	�=Q��-��M�σg�?�&�QS�k���������A[��_�Iu�ߎѢ}WΔ��s�""�����R��A�mK������p�;|�r).)�=yy��J��N��x�]6Cz�G�犏����^|��?�٥����c���7���_�u�ҋ6��9�7�{��C���2%)F�"#�{��e��+{���>�H���#�[e���2t�Ty�->�#~S�d��T�4u��7D��?Ln]:T�*y��΂���.��m�
=j���}o��r��BC��6y����K�O?�B�sr$�䠬Z�J���u��HK�i�ȢуeѨA2i�yy���w����/�"��,���Wf#g���_����8�QG�p_S�ZCM+�W�!!�o�>��X�m� ��^Lߑ.UUr��19TV"3'O�g�SRe��A�p�P��#���SK���qs�k����O���/K�ӱ/Yl�o��6\Sз�\�F0N�z�UȪ`��ϗWWN��;d]|�I�������Trr�eS�	\�+wz_���t��7���3���4Nn[>Z~�0W�����}�>�#yp^?��W-Z���~�&�Nsi��g����
�={�妑�����*��c
�,���ߒeK|%&*ZR����{�=ސ�G�#?�����=��w_�i�p���O�ѓ�'���'�F�s����y�x���4��{x�����ܫ� |����/��%��v��k�W���+��+u�ɟf�n=ޑ^xY�}�E�v��Qo�u��
ˆ�u����r�CyC�0�����x��5x�3�^�p�����W=^�l�~Z��F��r��WHvv���ϛ��o�͟�,y�!��;�n����_yV~8�cy���=o>#���\7�����f�rC�p�c(���a��v҇r�O�������ޖ�������ĭ���i-�jŊ咕�%�������q��o�Cny�.���H�{�H^~�	y��W���>/7�y_~0�=�z�r�������uszȏc��
�U��}�%���{��Ɋ�����5�LhQ��ٽk���rד�ݏ=���v��M�Ln�<�����C��W{J�~���Oɯ�|.?[�_~�|���?T~2�;���1򋕣�&���は��ݻw�|���Fk�W��پ�<	��n���A�r�[��G����_222:�y�����$�\e��r.�T�;�������䇑.��r�8���(��S�>,a��ؾ�ZO���O���ɽ:��ɽ�n7�ܫ3+��+�/؈�-�O��iO��!O����<�W�a���ߓ{5ד{���|j6k����ܫY��+�#<��+�{�@��yL�h�n�k�_�W�za��9�?��T��i���3��Bɽ��7������-xA�_>���n����W.�O����_c�&��� ͭ�\���#m��6L����ك�l#���u��90���賏�̽��;�ϓ;�g�k�t��ٲ\ۘ[�}�4~G�^�T�����m�\�:e�<�4K~���|�ﶫ1>�`Չ��`���m=���	|�i�1�݂��˽j�0�Iߛؖ����O��:[�)��$G2�ч��}i	��g����B����u��/,5A�[���^Q�_��/��ɛg�A�$[���iٟ�F�M�>�`tSo���.�T�����i��m��,_y�4^>�8K�<D����kwnWgm�>rw\�Ҹ���W�6��8�z�(��1�"�cP��͑�l/?��ێDɝ%k�sY�|���m�d~�E���8��qX'�Sc�a�i-ؿ�ܥ����k�mU?Ʀ�[��W~=���1�䯇#�]CW��t�0ك<%~T
�=�b���M5Ú��ĉ�����1�@?4�1����͖?��������O{�t
��X�}�`�=�p\�H�m�o�s�i0��r�Z*�s2�!��x�A����o�g98Z~����!g�K7��}8��ֿ�������c4`�B�X�ÎѢ}��Ԯi6�����)�����J�8��m�T�\�fC_*��cfɍX�-YK���}}W�p�6Ar6�I)��c4Zрց݇yK�Ak�W-Տc�y�+�E��?t�jۃ��;CdŚ���r��)�$�Ŏ���sя_k�=j���}f��r�Z*�˵�ZyO��or��H���V���
�� ?�Z�D���W��ˎ��_	~�09Km�}�]����@M��Va_����߈c����|\�/��Сr��~�y4)�s%g���q��~}�1m4���Ӷ�{�\�������Fh��R��x����Ӡ��l�w:����yJs��K������M�d</.�о��c�U�1�f�Z��L�෥��k����Iݳ~����_l�*��
�_�,���N��6��7����?�}�~�A�'.��ິ˲>����i�I�5/��k�h���Mlk�Wv��k�râ���y�t��$�j���Ӿ`�r�(���1rݺ���U?���~s�w���A�^��%_��xo�2]��/�~���`?�Nj�	b�Zg�Z˽b��{߹��oJ��z�r��H�"~�\	�7T~�cjK���9�ԏ�צ��-8v~�cma�4ٹ��ų�Ͼ�˴O����zS���c���+��z?~M��u�*��k�f�q�L�|� �<~�|?j��niO�8@NR�7��$w�٢ϤO��o
�����߫HY:�ꑃt6���z�Oꮌ,7��T��M�)�w��)r9�.���`�\���x�����T'��[3Y��_�{i,��i�s�/LA�=�?�[ɽb���O�]7P���q=�m�\�8^���>_�8�_�}Mh_�?��ư����﹉���s��pn�7U�]�����ma�s��ѿ%Y�Z�%�?��f�Ua}�Z��	�pE� �ve/�Ò�d��9k�$������o�8RvN�D�1�e���+&�|�
���Ko���oX�I�5�z˕k�ϱ��Z|/��� ��ܰ��W��5��%?��;Y\�ë^���x�~�sǭ�r��ߺ�7�L�~�GU?��
?=z��w���m�.����x�O9�rJn����i��k;���a�]��a��<�3+�<,��q���:���Â�O֙O����<�3\�'>,�{�<yX��[>5���uX�O֬�syX;�fK��������?��u��nX�w�����Ú9s�8��ߵOn�k��f���;:��������%����XF��L�kP����ʫ"�i]u��W�k��D�8�u�������ȓ�?$O��<�'�ox������8}�ƪ�<~�{����gbn�au����;��>=�
5sl�E?�3�"5�i������N�g�3��KU�"�E��՚�
`Y�V�nco˱���Չ9�������a�����v�w�a��N��3�[O�>�{���U[�;�m̶��2��\��1`^`|��/��8,41n,�hQ�@��:�:�{���ͧq�%o�j�m
��n�m��sq,�ԯs�;-��=�m��9���zcw�1�s��.��ן��M�po������RE�E}�
5sl�E?[���j����gN�߂��W�6��p����߯=a�T&�=���9��Z�*���b���s��±�?���9����a�h~��e.�����yLw�wy����W�W_}\*�g)����m
���c�~\sp.��p>���,�
���T3��L���io���;���_z�1��m�Tج��{��ҷq��sjf.Ǣ����s>j0֦i�9.�:�b�
��3�;���_x�Q)�?�c�)�_���n�8��f�˱�S�ܘ�>��`��Z�{&yX���׿+/���ӂ����o�G����+�~�ց݇9L�AsyX��_�9�kƦ4|�i�ml8V�~��]��Ċi?bՕ��{�7��������?��R�z�R�z,�F�&l,�,�܆�9.Ǣ��Qo�G���>Ю�P�L�m�������%!^���
�jmPG;��f�ñ�~��9&�����y��n������ǻJ�QR��-��^Pv�~1��qԹ�n�18���0/�R0�j�}b��N�NkřKCߩ�������.���pϹ��RL�h�2\۹��18�K?��j	}'�5�~�&��<�?��.���C�0@;T
��Vl�}�m���-��K�@'��E�1�e�m�>h.�����{�Ȳ�`���Q7�6֏��6��q9}�����6q�>֛���;��a������qqd�����p�E��ch�QG�T��~�[���n|w��}�)G|��a��r��G�m�2�m�-��X���<��o��˿ߟ�u���6�̿�p,�����B��d��Q�����.��{�ľ�>>
�
�#��\�7�N7��&q�c�����ͯ�q;w:7�jѹ�.�l�}�1=�S���Se���uZb��h=�WgW.�+߾���f ������\�$��o�U!�#���#��u���,QkS9���U�-ʐ?��W�-����b�6G��Kq�T��"9f��w�ա���5�WKQ�d�~��M;�N�6��"�h���{Hk�(¹#O}�:�M�zk/��%�c��9_Hk�ʓ��q����kӴ��G.[����e�$����G�C�OC���]r?��O�5����i��A���q[����ꭱ�{L��_�����ꃵa��'N�-�I���g�c2B�wr�,�8�"������;�cw4y�����!o���_��"qA�e
��G-�$�K�鱰`�}b�j��v�����N�-d���h�Iš\)C�U	>[:*�j����m����=��#�k`�H
�X�S�
h݂u�!�g!�*/N<�Wg����(��"Zց��+8�x�f��˿j�>X��q�U�O��Dcv�^�����*���1[O�щ�ި-����x�>(Z��5G=J���w��ʻC�N�����
s���K-���n[���abȅ��g?��O����_c�&��� ͭ�?v>�i7a�x���1VS�6c
�ϴ9��<�
�~��ǀ�>k⴦�vg�U[��Nz����V�3X8��Ý�Ѷq�XS��>�uL�YB���6��e;|��� ͭ��}�8����:-��9\mNg;|[Ǥ�q�qZ{m�`g�U[��N|�:ǰ�G�T�8���:ZWK�}裯���ۨ%�-��h_Xj�4�Js��JX:Z���k�f-�OF�N������ø3����}��ש���wp�jܶv;�C��߂��W�6��ا�_�#�:&r�8����<#��ub�7���a�h^��u��������k�m���7�;0㛸��1�G�q�X>blSͰ&n0qb�4�G�>R<o㻨c��RpN��:��*�u2�!���w3A]-q��þv�>c�7`�+}cu;F�>�MP�8�����*�����J�q}��8��	}��h@�6���������1�֚��e�7d|�Y��}�jG��9�Yi��>3~s�Wm���k�ܧv����5���54��Va_���ZǸ�]wY�A��οj��/�a�
��φ�^N��N���u��1���:ḁٲV\5��&Hs��/�W1�c(C�}�%�IS�	c�|���m.���¾|�W�
�m9��A��4n�Xk�O�9^�Ns��:�}�\�U[�}�meF^?��0�k��@�F�)����ĭ9x�4��Va_n��j�&Hs��/��������~��	��*���^���r���$j�&Hs��ľ"�v3h��
:w2�M�8��Ν�j�O��rJN����i��k;���_�]���~��̠�|������C�~�3G~���k�o��W����Y'�o[��W��"KN%ж;�jm�֝cuD�Ս~�KhF��n��qc�?C��?��~�q��l7۱�tD����!ͱ��h#~���։�۶в��uݻ;�w��;��:h��uc�׊���п)��ȿ���4������v9v�$l�\�֮�֫5l7��>�Zo�v	�?���W����A��߮��`�S��ϸ֛��C��6Q^���1�>���q����߃��+^I��_�x%U.���Z�@�
��c�>l#�~v���}.�b!�?y<�!�^������B.�y���,�y	u�	���_���O.)�Xഄm�o�+	�����f~��$!�y�~��/n���5�]m�����7Y�/���P/%l�e	}'V�m�f���3�p����l�&��?�?	�����^�.�z�����%[pm����Q ���\�U#�q˧n��
�h������T�3=��򯮸��WB^��l��C��C^�]F-Lj���믽�G��f9p��W��.��k0 M��nn���o��7�ym��Ϳ�`�v��k���;]���|98�gDjU��M˰_�y��� P�➑`؟(p͑�u���1�
��[�s�W��di�o��1����}��J���'�E��� ��@�~h�n�nc�,8��
�u9d<�wv.�g&��'��w�x���91�C>��u$=Lsè�>-�Ÿw�Ŋ�/V�����u$�ߡ�OC���ο��n�wh�U5�W���B�#�\$h�ۧ��L<G&3���%�L����~:���N<R��9���Zu�q
5���ܡk��õ�8�ʋ���(�Wj��f�����R������8���y�ڹ��P�?��	��J�^��c��?~�+��z䭑��5R�uT��5?Ɏ��b�"+
ǙY�Y���R������돞�c�2�P�w��&�
I�7p���P
���AN�Q�u԰����ըW��~o�́Ś�qL���:2�������+�7���¶��	�yؼ$�޾N�WGl�Z����
h�%|����!Bא�?�����&��{⺓���S�8��c�u3�A}��k���3k��:j�2'J*p,e���~�_�~��<�e|�3ψ�j��]q���S�]u�?��:x�`
�ۺ�h^���zt
�8��G�:����Xֱ0.Ǧ�h6q����	�xߦˁ����|zP����d�6j�����73����[���=��?�4��|c����X��ݽp�\Ե�EFR��^�Y�����=�m�I|޽?6U��anlg�b���/�:�5��(hd.
�1���4��@w7��:�q��b3޷ۤKOj5����5�f�V�LLֵ�Y�(_LI����5���9�vl�UVJ�j�/�&�A�}���_��$��%#�}m�"p��}��c���=ܗ�����\��Ϳ2y-��1&�vp�y�q�r��=&UV�n�y�
�5�a[����+�|7�kx��]��M�$����˿�m��Di���x�z�A���}�F���ȿJ����!��~��3@���]��W�<�W���
��'$�=�&y�q�h�KKПc�|b��N�Nk�U|j�4�
�r�W	�.�v3!�+��)K�=�jW��Nk���Ml{�_=���׀��]/��q�ЯU�'�/Z'���@�m�>h�����cT��p~�{4�?��MAܥ��� n���N{�_����'��ȳ�e��:��+��� ͭ¾�Ɠu��ߒ,��� ͝�ɿ�8��S<�S��S�l��NKl_��'g��ʅ�3�N�<3�K$��3�N�<3�q�x��xf���D�/�<3�L�癉<�.�g&�r���y�I�e�	�w�7���f�q��z��=s��)m=3����O�'W���1�y�q��D�?�9cm=3��o�~9_<n���f'��&�ߎ?�sй�k뙉��pR�[�6w�:���݌�������s��Z9c�!q��O��uꧯ�J��	�
��k���sœ��e�%mv_�:��$L�\��~&qc>��I_�&?�r� ͭ�V��?��Q��P�Y�s�k6����ܳ+wa�1��$��#���������1I��Dzy�x�r���]����ه�O˾��8'2g,ק�d��ϱ����i}����7ޭ����g�3]f�j̉�Fڀ�LY��
�]�/���y�r�R��ɟK:֓�\����A�[���1�o�^/��ߌA3,a�ݯ�{v�M��_�-��f�U�ݳK�,]<�s
wϬ��� [���\
�wL��g��۷l���#i��pr������%ǻ�I]��8sK�'�� �0/�9W�b����,��3�+h�~~���n����������y@ئd�p)�l��uZ�J<Kf�H)	#u���P�뜼&*0P��U�#g���U�?�?J1����(9�?Z�!71���{vٖs����k��̷2�����F�_�jmPW�v�V5A�[ŝ��gv����u����
�O��n{��j;>#07��u�d��IR�c%%g��j��_@{[�����S;-����g��`qU�1�V�	�"◝�s~�\���1O�\��K~ �j}f�\7V�[;V-a柩���XS�&Hs���3�=h����ԷlS�����'�5��ӹ�;9cW@?�`�e��բ�Ɓ� n��-�S?_��>�m�˱OG��\A�����a��J=*߇~�3GJ�-�1���W���`���n�����`��_��8�sL�?�{^Q?�9nK}�R�p�h[��:���E�*�k�n�qW�:���6��g?;NL]����1�@�noh�<~��9a�~fb5��{�j�F�����u�X�q��b�
�x{߳�z��1T��!�ڇ}�^�\���x����	�sm�۲/}�Cњz���K��ɛ;���൝�>��i@�6�_?Q��m؇�
h��]�������8���{������!�ۀٖz��u��7���3v�p?Ҷ���v��K5A�[�}9NK9c.�ˢ�]�9c�l�9'�Ĭ:}b��N�Nk�U|j�4�
�r�9c��;-�O��Nk�(��Ml{挩mb�a�5�'�/Z'���@�m�>h��1�t�����6q�>֛��5����;�P5A�[�}��'g���ߐh	�P��S<9c�y�I9%7�a	����z�ή\�yL?9�B���tM�9tT�5��Ԃ��),��B۔�����Ɗ
mSXh݁��)q�+��-6,�o[$��+��Y���B�1���)q�+���
��u�-�[��iYh	����a����)q�+����n���',NKX�>,���i����b��6,�6,NKXh	-aqڦtĽ�X��(6,�6,NKXh	-aqڦtĽ�X���/6,�6,�e�}Z�BKX��)>ߑ�e��ي߬��p���'炀!��>�ᒵp�7z�Fܫ�=�8��`娏�8d�X>R2}Kz��s��1w��j-�okp�F#�%|����mE�p����D|�-_��+S�{y���Q�I�����M�CA�%�o��D/���9R��#x�`qv���&�{�;��Z3�k	��K^� .$�g�F���d�2o�l���9KE���8Ar�����}e嬯�o�2c�g2}�9�=����1�G.�r/y.�O�]3C	� ��J�E���K��:9\�Sqφ8_)��+VN�\<whǂ�2t�'2s܇2k�0�s9�	�b��='yL帏G΢��^�{c��?��?6�˳I��٥2��Q9Q[�-,��ܳ(d��-��u�#%jr/5u��񵌜����xM�TBw��~�:<�i�J/��s�d�;v�ܾ!D�HI���k�x�}M���.�U�8���^�%����+cg
����L��f��SzHO�j��2{�$|�G��T�)�#�a�p�߹n�ܾ%N߱G�Y2Q>�
��Ե��OԔC�^|��)X9Y2�ɔ��.������/�ˣ��G��˗������%	�PG�1��'�q�%�K�Y3K�X�Rn�_-O//s����d}�����*�˾�mR�	��
�-�~��9�塉_�Ϣ��h�N�B��������zI����c�_1Zz�N�.�G��s��n���KŞ�r��>���
������Mʶ�����ɞ%#%bNoyr�J�+�2W�Y ]��ɓAC�����8���juD������W{���?b�Tn���X9z K��3k�������oQ��!�kIi��q��)9En���o���$�G���x�J��r0y��so<�?j�4�����1�Y2X�WM��#��o,�[E/���R
}��ȑ.؉��<���o/�r�[ �[�s�T%�H9�1Q����r��-�M�пT�w��.�(H����`��&����#�)�)]=M��*}��I�
+�HՖ`}
j3��X��O��<�3j7�/	�V� e�s$0�W���&IL��m\-w��=��徨	����BvE��j�^��r~j�4�JKyL�>����q04`�j�~�k�}\�-Fjv w��&
��J��ʍ+�,�[JC�ʪ�ir��8���X�=!X��y�ޘ��?^��1Z��\v����]���|��=�rp�P�p���!��,j.ְP*��Y�1P*7c-��rS bK�v�/�g�c���C�ok����u��'r"�U��BG�������;e���<�MM��Vi)�iϪ�R�j"�0���!|&^��R5�X����!f��F�BߩR<A���ٷ|���#�>�d�� y7�h'O��}�Ɍ�/���)�y����j)��$%@�q�P�j�%��
����b��IA;���hkwRD�zĵuW7��o_I�(�8��p�.�o�7���cJ���G��0��8�Wں��L�V�;=��P��М������Q2kn��e�|nD�9��i�Q?�9n����}k�J��RL}�:U/`�x�X�$�Mt��ø�8�t���o��}��?��?F2q�>�����G �_;��h�H�̞:���2E˱�U�pջ�`ٷh�a� �=3G�!��z�zm���ګ"3\j��ȹ�y�3��p[�$N�P�#5r�:�a4U�{�w�5��_K�wُs�!�7f�|���˓eG�,9��k���ޙG�U�w���q�3�ē�O�Lb;��8�[Ǝ�x��3�86bG,�0 ����@���F�Z���j�[-�ԭ�EK�$!w���}�ի�V���Zd�=��r��^ݮ~U�U�~p����]~ӎ����N�?��aס�o\[��vi�w�t�k}�n�}�@�C����uL�������ܿN��mz}�k�Y��W�=u����Aπ&��:&�ئ��5����jگ���M5�zi�۩{��1w˿G�r�����S��nը�n�O��7�q����t�~�5c-��ρ,5���c9�Ӛ�c����W�ֿ�[��פ�h�>�+��܁)B��c�v�����9�m����4�W'Z���k]�yU;�\�烥&�VTc,��c�˶�W��
z�X�� �����+n�5���G�w���+ޠ��Q��6i�3�j'I�3Wu��@s�����k�n��q7�y^�A�[�'6��a~t�u?���=���4Ol�y��ԤҊj���RtL<�'[�=��g�����V�K��6�y�ض�E��nߚ�z~�=��o>���q����|	[m?3\����
н�1G�7G}s5F�t����М����tL<w��R8-bK\��uC�h
�N�c�s���&�VTc,��á#��j�&�VLKuL���Җ���n����1�o���z�.v��+��5i�$W)Ξ\1���s�����>���\r��_�
�*ͱ����:�V��_����hw�y��u�]fāc��/ɦE��@�wm[�ς�r�h��~�K��O���6�����d����ȑ#]��g�$Aչ�Ƶ�y�l�+ڭ����ڵ�,�1"��
�8�@n���^��v�i����?�P���v�M7�o��?t��\�W
�۹s��1�=���Lc�'aL�_��ZW���c�t���q��ha
��l!B����NK�?��/�־Z6�m��n����K�>�hÆ
�8�ǒ�Cl�_h��`�ke�_����:�j�q��<9���r���=���M3�=R�]w�;����q�o��3ߵ��Y���+�_{������p�����=F��=�ސ�a�E������$��GL�'t�5���ͬ�H����o�q;�-x�M׿�m�0fI���ۃ�F� |�T��n��ۃ*��֓��H�#�����Xv���T?�#5�ݼ����\��,����R̹�/����y.�{���}����5iO��o�V�r@.I���)��0�~k����=��ۃ*��VH���8�S�]���|�B�_��g����{����|��>}�徍3����뫫�H�{j]�֚=~��8��������rc�ݮ��0��o�{�v7��An��Izm��e�YU�{���X3y�3T�G7�)wr�b�ӹi��5���zN\�~b�۶�5���!v,}�E�A���Hs5���Z!���y����Կ_ן<�1N�Ə�Cc��bH��^;�My�^�k�'�:m������_���Uo>ok�_:��Ef56��r�(]�k��Ds�x�{����3.�פ#:_�1ڇ�I�����_a1�|�auG�G���z��� ��1��F���?���_u5͵����q���统����f�z�~����$�\��D��ڏ�yk&�qo(���+KM*��VH�V�z���<�/Ƀ��״��Tu�'�1��yxL;Tw�˅|)��B��3�/1�DkM�>{��.Z_�s�����t��~�%v�7[�J��3c��c�˩��Q�%u5����q�x����ø`�YƷ��n~��:
��m�ฒ�Kԯ=DZV?s�'��6NV9jo��8�C�+G��,������_0JǨ~��s�t!f���|�T��i����?Cb��(�9��|9�W�B�g�ƞ@/b��ș������F�a5�k���������>$}c��&c�.�t���_1���Y����$Q��A���TRU\GlO��n��5P��)F�m5F����V�|jRiE5Ʋv)�+�!�OB.�}B�����gS�Š\<�b�_�*��(�G�����T���+��OM*���X�����r�{/)�Z�I��R�U堶�������*��@���[�����޵�����^5�ѯ�veX��k�_=v�c.0���F�!�&!��\%�W�x������^�v�3\���W���{���q ��q>�KҰ`����W�!���DZ�cn�ν���_��X��>f��x���MU�¬��]!�b�Y8�u�,P;�c
1����/IU�¬��{ݽWE������Ӻ�x��g-�|!�?4�����h�~&�����>�=t�l���9@�
�;O��U������Zb�����b�_0f��Џ��hw�X��w��n?��������z��E�_�V�x�g�r��;$�i9t$���T��1OJ���}�^��w�?_�}��b���;̖���G��T��;~�G
s�f�w+��q�SF�e��w��?����±Oy�I�}�ԏ����o���j���ܖS�d�Cdk&�F���č�7E��1n����awt㍑w�E���`7Խn��ʍ�ս>�&���n�C׻i��G�����VM^U��!i+V��� �?��ꐖd���Y��%�u�>zS�����mU�_m����a��Ԍf	|,�'��:P����t�{2������N.�tL�y�����Z:�!�OK�\������)��pI����sI��䇮������2�(d���x�bӐ�ꯦ�Q?K��t�\l�������?�%/��-�𠞓�F
vsG
rs��Dž��7�ٻto��_ռ�@U�W��y�~����(��#-5����+�V�u�����v�F߫�|HW��VIEL�X�=���ÚH���������Cސo9�4P�J+����
���>��=�M���>����ϯ/?�ˬ����?���=���x�
}ԤҊj��W�k0_���q_����0'�/�i�l��~,0����@�;~�~}Ś�XL�e.�>�eVqX���R�J+��������֗
$��as�1��}���lȗ�_*F��g3ԉ�|�근0-��>�a�+G>3&��X�.�~�/�~�S:��~��-��/�+:����X�4_0�$���1�X�Cc~���q��z��y�|�������Ǿ����_�>�y�Wf6���8��9�5���_���oc��ə�������9���{
�0[��
?�؀�c,̉���v���<��)��*�����
߬P�lq�|����x�7SN�U�z%��{|n�;��r�VM�'�+�X�ub�X��|Y#�	����C����"�)���K�����-��5ȃ����E1��8�E�ώM�(o5ȧ&�VTc,k��_Q����u�v�bN��5rl����x���*��d�\���#�E�h
�N���s���&�VTc,����{9}���A-ԤҊi���rP[��V��MS|Y �B�_`S�U�Z��J�W�k�zC1���Y�~	���$}���ZE9x��3��U?�'.6������q�鯰�7�� s1�:�wZ�c�a!�^,�+j�Ý�ݴ�Y1�1�@�������@?�'��C�Pu�
Ǧ��T��R�U����P?�@��l��J�W�D��m������{8߇5�����c��LJ�!�r�i�&�VTK�W�T%_cR������V|[_6��Cs����Dd��u���!_�~)�_������Dy,s�/_�~����r,���1?��8Y�e=��<D�r��}�C��c�_b�����������ok�Vc�H�M�W��9����
���g��˷q��Ȍ�y�1���ǀ����4;��Nl˞�/k�>��>V^q���4Y�1���9��9�sy�pݩ�����>a���t�:ޣ9�
�1Y6��sQ>Z����}Ex��I����p�^N`�%EP5��bZ���Ԗ��U�u�T_��|��Tջ��R����Js1��A_���_}��1hM^z�%���k��~l>�RE]��v�#cl��|>�RE��@�G?4�4)�%&�
������>�}l�
ܨG�%fL �ؾ�_Ѩ��z��<o�O,1�!������I�|�	�5}��J�O�(��_�K�W��*�_���T�9�~��9
�T���dU�(C1�c�p�k:�����'�yC��'�@M*����<���J�Ƥ�+�ͧ׭���l ه��������gC��R����+:����X�4_0�$���1�X�Cc~���q��z��y�|�������Ǿ��S���ə�������9���{
�0�꯲��sڹ�ʙ�!��o���o�FcR��sy��iv,a��2�='_�}��}���P��i�cR�s���s���B�S;s1��}�96�_�u�Gs�kBc�l.���|�{'�_�9���S�J+�1����콜>��K��jRiŴTU9�-mi�h릩
�,c!��/����w-�_����5�Q���[
��
�>烾$}���^�� g-7�z��=ї�����/C7C.7��D_��%4&�@�5t�1��1}�����cC��@��}��
��c�۷���O$G��1�/�W]�]f�O���C{K��]?�=QӇ�+��/�K�W��*�_���T�9�~��9
�T���dU�(C1�c�p�k:�����'�yC��'�@M*����<���J�Ƥ�+�ͧ׭���l ه��������gC��R����+:����X�4_0�$���1�X�Cc~���q��z��y�|�������Ǿ��S���ə�������9���{
�0�꯲��sڹ�ʙ�!��o���o�FcR��sy��iv,a��2�='_�}��}���P��i�cR�s���s���B�S;s1��}�96�_�u�Gs�kBc�l.���|�{'�_�9���S�J+�1����콜>��K��jRiŴTU9�-mi�h릩
�,c!��/����w-�_����5�Q�R��b�_a�0a��A_���_�59l�>Ɛ/D_��W�U
��B�j���F���84?��8·��Rh��4ml�<�b��&�@��}���g��瀟���!���
�Z���&�_<��S����D9���?�_���nD�T���T%�;J�WjRiE�T�O�W�5&�_yl>�nŷ�e�>4G�\lLD�x_'�8��R�U�X]�1X0]M��2����%门_�)�R��0Xߏ��X����C�+G_8��=�=>��%֟꯼O��\�}��F�a5�k���T������
߬P�lq�|����x�7��x���L�c��Ė��9��F��c���MO�E�ꯘ��@
�?�
םڙ�9M��ȱ��J��=�3^��esQ>��8�5�;�����W�ǟ�TZQ���?pg����^R�P�J+�����AmiK[E[7MU�e���~�M�W�k��*�_�����4��*@���T[5t�P�$�;{�,1�y,��?�|�j믨��
�ub!��d>I��Wԁͅ|.�ͅ���b�d.�XH�'-y| ��+�J�1�P'6�%��V[u�����6�;����/��/��TU��N�W�O��#��T�꯺�S�U����R�����(�_y�I��R��?�_�טT���֗
$��as�1��}���lȗ�_J�W=cuE�`�t5Q˜�Ɨ�_�~=�K}�o�O��a}|?NVcY?;��}�x�������X���>9�3�s����!��|�fS�U�z~N;7|�B9�1����m\"62�m�hL���1`.�72͎�"�[Ʋ����Op���W�7=MaL��bCs5p�\^(\wjg.�4�OX#Ǧ�+����h�x�BhL��E��>�\���`�+?G_jRiE5�r��=�����{I�BM*����*��-mm�4U��b,�6�_�����Tu��>���Z��j��/��A��~�a���_�:�;�O��[4s�;���;��ie�ŅƒORm���o��j�-nò
n�kݑCGܰ����OL��5?��ORm��񁏛��x}ֹ��j���{�F8;��;?Fc����-����Ƶ�n��e�_��j�^�����߸Ώ�sb�����oۯ��׶�=�!�qݒu����3��1�%��V[E{���,PK���<���r�����6�a�5���%��¸�AE-��?��J��w-�y��+>�|~��J�W�Z��I��ߍ�B5G�P?�@��l��J�W�D��m������{8߇5�����c��LJ�!�r�i�&�VTK�W�T%_cR������V|[_6��Cs����Dd��u���!_�~)�_������Dy,s�/_�~����r,���1?��8Y�e=��<D�r��}�C��c�_b�����������ok�Vc�H�M�W��9����
���g��˷q��Ȍ�y�1���ǀ����4;��Nl˞�/k�>��>V^q���4Y�1���9��9�sy�pݩ�����>a���t�:ޣ9�
�1Y6��sQ>Z����}Ex��I����p�^N`�%EP5��bZ���Ԗ��U�u�T_��|��Tջ�q�_]q��&M��*��ٓ+����\`��F�!�&!��\%�W�IP�=j6���ݞ5������Ou�,=⮻�	�
B�
��%ٴ��_um[��[�Uu��$����'�0K��ȑ8���#G��|̙��_un�q�k�(����[ouI�q�+i�S_]]�����r�xs�p闤����Zkg�(�q�ꦛnr7�x��Çw{��5K�6˸|~��0��qz�+���9���ղ����M=Xb �2.�l.����
�Rk�e�_
0��
7�`<�裮��͍7�j"��g<~�B?��	�Mu�a�۹������ڵ�
:�|,1>�a��믏�����U��滶�3ʪ�������/�����S�r�kg�Uu�Wn���k]1\s�5fKᶛD�/�g�Y��4
��_-x�a�l��T?o��gJ�3����|��;i����$��GL��5ר���Z���ɏ����]�4���&��Ų�'�:�u��u�',� f(ޱj�{�M׿�m�0fI��[=�qW;�1�l�0�l�#nٸ�n�����WF���>YU���Ɏ=�I�U��n��Y��USG�'b��מ���ʈ|j��b�=�S��f��7��{2��53�vk!�_������+�E��1�%��.={פ=��_��n��^�z=�VSE.I��l�_�~k����=��W[�Xl��
�ֈ���_�ZO��g��+�����?;ح׾?�e�~��qmk^5�վ�o���
�U5�W�Zk���n��s$/�;�W7ˍv�i��ո�nwS��-���z]&���m���_uiΚ�#ܘ���e3�r'w�s�:7����4>zN\�~b�۶�5��!v,}�E�A���Hs5���ZO����y�&kS�~]���d8�s?���{��!9n{�T7��{m��3���y�g��~�VuB�GV�����~���N����̚�]���k��Ds�x�{����3.�פ#:_�1ڇ�I�����_a1�|�auG�G���z��� ��1��F���?���_u5͵����q���G3��u,6���l�V}�����XƘ�':��93o���:�
�C?Vce�I��z�_�T=�f=g�q�ڗ���kZ�e������y��<<��;��B��R1���5�쭎�h}��9rn\K��q�y��9s��q�X��3c��c�+��Bg��4[�o�k\4�r@}�0.X�G��mk��0]Mԏen�Ǖ�_�~�9����?����ͷq��Q{�P�q"_9��fY���<���X��Q:F�뵨��1+�G��Gնv����@�ϐ�+&�i�1>_	�U���=�^�b��3?�?|om���j��	���_�\��$�I�X(�	��K�q9�W��לvn�f�rfc��D9Qld|�7SN�U��:b{�ƨv��rꯒ�!���h\!��a����ɂ<���+ۋ����r�[.��!��$�86i��� ��TZQ����O�I���'!��>�?Ǧ�+����h�x�BhL��E��>�\���`�+?G_jRiE5�r��=�����{I�BM*����*��-mm�4U��b,�6�_��}�W7|��Y5/-�y��__PQ��7��cn�h?XH�blrI�UR5���X�:a�T*��W�����~��q ��q>�KR��z�\>�<�E��d�C�Y�����'~9��7�x�,5��d��J~�Ո�?�F\�����c���>�w���8��_
�ٳ��31�0��iV3>��K��!�V���S.ɰ�<m�4��’�`�$�䣒�5�GO�|}�X�H��[W�i����u�?
�ȕ#]1<��'�Q��b��/T���}�Յ�_
���.DU�_��!f(�Y�z��ڳv��<_�U��8��}���EU�>.��B��E��魠Ql�h^X}�,����O�\��`�<�W�.��e>V��B>�������a�~.�Lq��W�������Ph1y|l�!�r�i�&�VT�I,}�zX�%a��s|�=�q���(W���B2�Y�=}��-o6��,��>jRi�ڿ���������_�a�+'?d�۸�_Gj��ե�� �<��U�#�oQw�RT���x�U����џ��'���[�X�6^�X�|��?���լSI�zx�~�����몃�\|���l���/]�������[nw�~��췆��|`[�7�o��fw�}M1_�w��o���n��s0/\��տM��|-|.�6���y��f��_]v�[�{��1[Nœ�����Q��&1]M�ˢa2_0>�~��kW��u��;�v�O��T�߾7�W��g�\�	�i�P?:�A�B}V���{||����kV�ހ���_f��by����ms��
ƥZ#�~���l�(�׿fc|>���W����?>�����w�}�>�־7��|>8�‡/�je�~��௫j�:��Vc�H�ͯ���յ�s\3��疟�$;��=	�Z>��_ms��u�oo�s��zEV���l��^��t��W���
{���k���r��nl�Tgl����͍�+7�/���%6��ܼ�`��}=fCld|�ߓ��s?_?�q��_����F���b_L���||y�Z��+7m4X#S��� \kj7��I��W-u_�����;ݧ��羮�ɥ�e�kji�!&��/i�0��Y�[mhL���dA۳��~��j�o?�+S������mi��iJ@,�\��}]?;I�t����ׯ7��g��V�x����&!��(��?_�I�wnv_�ٮ٧0�}�Z��V��ܰ�-���6lؘE]]���g\��|��%�n��u�kd՟�>��"a{�_����s4��C���޵�}�����&W�e�۾#��Ɲ�~ݬ�J�<��~�z��k����_u
�/�ͣ�c��|ѓ��]�s4��C���=���(�7�ޭڠ{�F��Ҡ|}^.�n��u�5k����UW\q.�G����I���hMըZ��k_��oؘ��>R�&�i0K\�/�j���_�v_�z�꯱�t�j^2=҅P���\�7�ZX�w�s1'����'��g��y�놞7�~A?��e`O��k���\�>��ژ��9�n�n��˱�����K��~4_�<_��5V+�Bj��be��~��]�߹��J�`
�.*�/D�}�g�W\1������[|�(�<>h\�!�|-���p�
��%^#��J��X+m���n����1�o���z�R�U��:_CUi���:v�D7�q ��q>�KRi���qG�;�1ࣳ��8�!�%�MB��+�¾�v�,$�U�;�W�a1>6���B��+42�h��m�0M�<�>�s��Ō��K5�Wԇ^
K�;a�4��ǧ��V���+�DznR����;��m�|K>��c���BScM������㰹�<6	��TP��+?�Ψr�K��y���.�_��+�T��W]q��J�W�Z�����*�_��ɪ.�Q��`�p��r}�(4��<>6���Qސo9�4P�J+���+~����1�u�/E����H�W�8o��F���a�I��5|�|=�3�$��	yY4L����/����+��q���T�k)ך��zR���Z��*@,R�Uz��}����JZ�!���J�W^�T*��GE��ka��-�Ŝ�k�T�)T+��
����T��������E��J[�[7MU�e���~�M�W�k��*�_�����J�.��Q��$��_��ꐶ��ӇM��$䪩�
�*�*|l�6�Uw�?bL�jc����Q�/��C5�W�N���
ӏ�
1��
1�}���7S��'b���
����B𩁚�8,�?Xb��8�������R��n�R���V諂��8�_���B-�_	�T���dU�(Cq��{8�dn�>GGL��(oȷ�D��I��R��?�_�ט}��뗢�S�U��+�Q��~i�X��ڰ�$����	��l�Մ�,&����R�UwR�V��8�_A����kM�f=���k�Lw ��*��j��H�T%-ϐz�]��+�I*�B����v���bN΁5zS�����]R�U�\*B��w��^��"�_��׭��*��@���[�����޵T�����GU�j� W;E16@���TZU�G�i����YO];&��ͥ��|U=��R�c�4Z��R
����-�i������9�;.F���_��
u�K����1�c���
��|���ca���-D5�W�@?��;(��X�sm>8�&�_<��ԟ�R��j���l����S�U��J��C�%ɜ��M�W��
��HVu��2K��sH��sD�q���q,̏�|�qO�9��TZQ-�_y�S��|�ٷ��~)�=�_�@����y�6�5��
[Nœ�����Q��&1]M�ˢa2_0>�~)�_u'�_a����S���+_KA���n֓꯼��tWb��"��VM�W���7�U���R)T?�(j�^�n9`.��X�7���+O�Z�U�ߨ���~��KEh��.��+�\������u�T_��|��Tջv�믮���*͓��VL�遺�����;3�Yű/��$�*�����v�lZ���Ï�&�:֦��*����M���q���M-�a����ʁ�?Q��O��'��Z��?Q�t��i�+�_�q�f���C҇|��,��'�3�7�_}�W[�'�i[mm�'���߬b0?+�d�*G���������/I�Sf�տ�����h�>�~N���Edm���a�{s�c����+�x�:�Y�,]�J�~�g
�w*diXC�s|�~?��<���X�$�S~��}k���>�:g���}�G�:ߨ�w~R�~��u1�l���w�#�r��_V����Y��?ڤ�7�߾R��u���[`|�G��1��?��HZ���ޯs�u���������~�ʍ~�B��d��
��r"X���f�l�������c~���K��ɿ�s�c��~�(G1�����v��a�tW����E]�b��]��:Y�:�G3�X5�ߜ�j���k/�r/<�ͣϹ�G?���_��8�=�қ��w�p�����׿��87��Q�.IǤ�/V�U��e�Ժ�y���
��?_7�}���b���h���֮��a�ֻ~��s_�y��ƀ��[�o�<�s��nܘI��jo�J��]�;��nr�n[�ݺ���7-r��%n��9�W]|���{jݵ#7복&տ�}��k��v߼c�{`�r�v�[����_�\���~�>��Y��4�ojrKV�y�80?�ːo9�z�I��z��:�k��_C�����w�1{�:�Ɍ��X�r��j��uV���_�ݣ�շLc�X`<�o���/?�&�VT۷h����5�y
�1�}��~�������C�����MzN�X�aN|��O�X�`|>�U����~6u,�'y_��<��G�C\[��ם���\���~&|�:�,��Ⰶ��~դҊj{�~Q{Q�%vl66�^���B�]�mr_�c�Gu���w�~����gC>�~�P�[3F�B?g:�P���q �+�v�����w4��c����n�1���3�������]J�{j^��mNi���	�3�߬=m���5�|�l6B��6�$����ņ9��ȧ_*Ԭ~=�K}�o�O��y�c;���ݧ߳����T�/�g�htߺK��:�j���x||�K��(���Z��҅��#XFO]�߯�9�����J}�c3$抉r��l����_j{4�?�:�����m^�=g����'���ߎ���ﭭrX��� a6���P�J�3z_)��!�j[�>���
u{��=:N�O�qY��P`�1h��EO��B��׾?��m?��y��לGZ�!�׹��^j��ŷ6��[t���"s���_3��*�˹���O��1g�6v���_���Wo��O���i�˂��	���zz�_j�e��h�Њ�x�Ѽ\c�V_7�vٻ�����`~��Ǐ0=M�=�
5Ʋ���x��EY�7X�	�T�'[5&����&!��(o5ȧ&�VTc,k��}��ahC��n��^��^���:v�~�I���O�ϱ=�
5�r���6ێe[+����y�ꑍV���l��0����bP������IU�1�cO6�2�ќZko�"�-�K����q}Ĺ(�5��;=�
5�r���j�&�VTc,ǜڡ���}Ix��I����p�^N`�%EP5��b�e�ňj�q�v��w��4��R��~�����c޶���s�}�飻�NX>�!��wm8}h����l^r����'��W���O������j۳e��������qټ'�����~�q�:[\���s�B�v��G�4m՚^Wu��M������]�Y���&8�ܙC-z�q��O��;:6���_Y����@SW���/����N�VM:8��sl�c��R�������F׹e�;Ѿڝ=X�V�5�VS�����O�ѩw����{����z}f��j|��Vi�t�U��c;�:���6���z
���}px�;w����r��3��|W�יê�k�;y���g��^?�j^�>8�M�A���xS�Ρ�{��;zT�{��c{�;�V�+f��͋݇'��7�9�d�Y-��V�=���{���i���شh�۽a�Ӧ���՝���lg�;��p\%��z����=Ξ����:�}�=~�S�O��ز\��Mq���r�X���N�����5�-�;Uf�V�m�^��b���}
����m}{��^;�i�h���9�q���8׵�ul[vP��m���gu��׾9����6wP}M�����s�.�;�kc�C8�߳i�I�ۭUj�ѵ/f��^�۾�5׾q�s���a��{��g���΁��MqǷ��%ӻTrVk�_�y����9��:�:�������gt^���4��y�S���G���~>��>:u@�ȹ�9��v�V�گ���V�������_g>���g�Z���gԹ��f��Hg�ໃ���%3\����c�{��ѹ�;�;��K�f�N֯�b6�`�Gl�5]�b��I�Y�?Դح���[1��b��ާg����K�c]��]H3����&lV��������>�1��@��s���?#���7E��S��ЎUE��=�u��Ŭs��8{���;�ՋMo�(��n���;�m����[fS_��]�^,�̧~]�b���]�n�ji��ㇵ7Ι�6��s�����k�P5.���=�X{�g����{T����f�s(a�i��Ԣ���
�]�h�z\wo�q{���&�o֠��Wʹ�w��3z���ӟù�;b{6{v���wW�i'��ǻ�׺�m��s�Z׸��;�X�;���|_���yS5���n��rFu�{�����w�<퍗moz���wI��u�y�����+���u���sǵ'T��A}g��:�)�}@����?�suI���6�﹓t���\&Ωfo�Q��+���5s:�lv�y�ׅ
u�p��
|A�Y=ן�=ϑ��ڣ�J��m��۲���泇�Z��,}pt�;��_��ճ;�t*L{���
���sGZ�y�:�����o^�O/ijY��n��5{;��ǭnퟳ��ڱmV�ˣ��R�䨟�>� ��9 w��6�sn�sP�;м��\;O��e��E	�[{�7����$��?޲��߱���Ӻg����F|�,1>��U����
�~��6Ը�e��=���þ��s��?��9ۥ�r�[u>[T�������3t��Ϧ��~����v�z�|_��ݎwD����ڷ�{��K{���}Nם���s��w���W���׿4����C��<��`���cC?תY��^��g�H�=�]��s��R�~'t��<�k����T�j�p.�5�ض%V��ڙ����{��p���߻[�i=gd��"|L�A�JL_���jN�8��=���ԿU�/��]�_�w�({[�@�RW�y<�!6o^��������Xֳ��Z��o9��G��מ����߲\����1��X�?ޟ�-6�-�`A�Y�t}���~�i�S/�س��s<��U�_Ҳb�꯳�V��X+�c~���6O@9������D��a�So��[]k��f�Z���<��os�
�:�㙤�<X_�T��ԯk�=~�PC���o���٫��������~=]��&s�����Ƙ嘰?�����8���n��䞓��?����:��ů#� ���$�Q����76�����o�b�+�;5�u�|��}*�����:O�ݐ�_��ǯ��#|O�������(�z���z�mf�S+��CX�_�������uz�2k���R|��_O�>]W��g�c�bj0FV�q,5�ާ�K�d��C�K�-��ޞu:_�
�W��V��
��B�q^�h�I�/�q��>�����]��\ߟK��ʗϗ�}�#�߶/T��5�'��ɶ��xWi���=ԯy+��Ͷ��T��K�oY2�3�M`�y�+��t\�~~�[W9�	,��'}�>�19Y���>�ӹ���տ{����Ν�sc�Z�|��X�Y�ϓW.�<9�j㼨ώI�o���ZT�)]����47��(�X�y?�|c͂���� �|��{��f�_�
pFs�W��5����Wl6�rјB����Z\����i=��4%���5��to�ޫ0����Cus>:ֲDߍ����E���|�v�s[�-��}7�\�)u�-m�i�\��lib/img/src/icons-big.svg000064400000205207147361034410011261 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="48"
   height="1800"
   version="1.1"
   id="svg373"
   sodipodi:docname="icons-big.svg"
   inkscape:version="0.92.3 (2405546, 2018-03-11)"
   viewBox="0 0 480 18000"
   inkscape:export-filename="V:\osc\elFinder\img\icons-big.png"
   inkscape:export-xdpi="96"
   inkscape:export-ydpi="96">
  <metadata
     id="metadata377">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="1303"
     inkscape:window-height="745"
     id="namedview375"
     showgrid="true"
     inkscape:zoom="2.5600001"
     inkscape:cx="-98.302751"
     inkscape:cy="1243.6181"
     inkscape:window-x="55"
     inkscape:window-y="-8"
     inkscape:window-maximized="1"
     inkscape:current-layer="g144"
     scale-x="10">
    <inkscape:grid
       snapvisiblegridlinesonly="false"
       type="xygrid"
       id="grid4855" />
  </sodipodi:namedview>
  <defs
     id="defs9">
    <linearGradient
       id="a">
      <stop
         offset="0"
         stop-color="#85b1d9"
         id="stop2" />
      <stop
         offset="1"
         stop-color="#dff0fe"
         id="stop4" />
    </linearGradient>
    <linearGradient
       gradientUnits="userSpaceOnUse"
       y2="12.5"
       x2="20.200001"
       y1="35.700001"
       x1="20.200001"
       id="c"
       xlink:href="#a"
       gradientTransform="matrix(1.2384623,0,0,1.2384623,-1.2075,27.023125)" />
    <linearGradient
       y2="7.4000001"
       x2="21.9"
       y1="35.400002"
       x1="21.700001"
       gradientUnits="userSpaceOnUse"
       id="b"
       xlink:href="#a"
       gradientTransform="matrix(1.2710547,0,0,1.2710547,-1.2075,-24.184375)" />
    <filter
       style="color-interpolation-filters:sRGB"
       inkscape:label="Lightness-Contrast"
       id="filter4723">
      <feColorMatrix
         values="1 0 0 -0.2 -0 0 1 0 -0.2 -0 0 0 1 -0.2 -0 0 0 0 1 0"
         id="feColorMatrix4721" />
    </filter>
    <filter
       style="color-interpolation-filters:sRGB"
       inkscape:label="Color Shift"
       id="filter6724">
      <feColorMatrix
         type="hueRotate"
         values="87"
         result="color1"
         id="feColorMatrix6720" />
      <feColorMatrix
         type="saturate"
         values="0.6"
         result="color2"
         id="feColorMatrix6722" />
    </filter>
    <filter
       style="color-interpolation-filters:sRGB"
       inkscape:label="Color Shift"
       id="filter7038">
      <feColorMatrix
         type="hueRotate"
         values="207"
         result="color1"
         id="feColorMatrix7034" />
      <feColorMatrix
         type="saturate"
         values="0.700521"
         result="color2"
         id="feColorMatrix7036" />
    </filter>
    <filter
       style="color-interpolation-filters:sRGB"
       inkscape:label="Color Shift"
       id="filter7265">
      <feColorMatrix
         type="hueRotate"
         values="203"
         result="color1"
         id="feColorMatrix7261" />
      <feColorMatrix
         type="saturate"
         values="0.7"
         result="color2"
         id="feColorMatrix7263" />
    </filter>
    <filter
       style="color-interpolation-filters:sRGB"
       inkscape:label="Color Shift"
       id="filter7301">
      <feColorMatrix
         type="hueRotate"
         values="135"
         result="color1"
         id="feColorMatrix7297" />
      <feColorMatrix
         type="saturate"
         values="0.7"
         result="color2"
         id="feColorMatrix7299" />
    </filter>
    <filter
       style="color-interpolation-filters:sRGB"
       inkscape:label="Lightness-Contrast"
       id="filter4723-7">
      <feColorMatrix
         values="1 0 0 -0.2 -0 0 1 0 -0.2 -0 0 0 1 -0.2 -0 0 0 0 1 0"
         id="feColorMatrix4721-9" />
    </filter>
    <linearGradient
       gradientTransform="matrix(1.00625,0,0,1.00625,2.9837097e-4,2476.3194)"
       id="a-5"
       gradientUnits="userSpaceOnUse"
       x1="41.000408"
       x2="7.0004101"
       xlink:href="#b-7"
       y1="47.001949"
       y2="3.0019529" />
    <linearGradient
       id="b-7">
      <stop
         offset="0"
         stop-color="#18a303"
         id="stop3" />
      <stop
         offset="1"
         stop-color="#43c330"
         id="stop5" />
    </linearGradient>
    <linearGradient
       id="a-7"
       gradientTransform="matrix(2.9999,0,0,2.9991699,-327.98767,-2928.2902)"
       gradientUnits="userSpaceOnUse"
       x1="123.66695"
       x2="111.66655"
       y1="991.70453"
       y2="977.03375">
      <stop
         offset="0"
         stop-color="#535353"
         id="stop2-2" />
      <stop
         offset="1"
         stop-color="#7e7e7e"
         id="stop4-0" />
    </linearGradient>
    <linearGradient
       id="c-4"
       gradientTransform="matrix(2.9999,0,0,2.9991699,-327.98767,-2928.2902)"
       gradientUnits="userSpaceOnUse"
       x1="123.66695"
       x2="111.66655"
       xlink:href="#b-0"
       y1="991.70453"
       y2="977.03375" />
    <linearGradient
       id="b-0">
      <stop
         offset="0"
         stop-color="#a33e03"
         id="stop3-7" />
      <stop
         offset="1"
         stop-color="#d36118"
         id="stop5-5" />
    </linearGradient>
    <linearGradient
       id="a-1"
       gradientUnits="userSpaceOnUse"
       x1="41.00082"
       x2="5.0008202"
       xlink:href="#b-0"
       y1="46"
       y2="2" />
    <linearGradient
       id="c-7"
       gradientTransform="matrix(2.9999,0,0,2.9991699,-327.98767,-2928.2902)"
       gradientUnits="userSpaceOnUse"
       x1="123.66695"
       x2="111.66655"
       xlink:href="#b-7"
       y1="991.70453"
       y2="977.03375" />
    <linearGradient
       id="a-18"
       gradientUnits="userSpaceOnUse"
       x1="41.000408"
       x2="7.0004101"
       xlink:href="#b-7"
       y1="47.001949"
       y2="3.0019529" />
    <linearGradient
       id="c-6"
       gradientTransform="matrix(2.9999,0,0,2.9991699,-327.98767,-2928.2902)"
       gradientUnits="userSpaceOnUse"
       x1="123.66695"
       x2="111.66655"
       xlink:href="#b-6"
       y1="991.70453"
       y2="977.03375" />
    <linearGradient
       id="b-6">
      <stop
         offset="0"
         stop-color="#0369a3"
         id="stop3-2" />
      <stop
         offset="1"
         stop-color="#1c99e0"
         id="stop5-7" />
    </linearGradient>
    <linearGradient
       id="a-78"
       gradientTransform="matrix(1.55551,0,0,1.66668,-315.98991,1319.0732)"
       gradientUnits="userSpaceOnUse"
       x1="230.14426"
       x2="204.42923"
       xlink:href="#b-6"
       y1="-762.63782"
       y2="-791.43756" />
  </defs>
  <g
     transform="matrix(9.9378882,0,0,9.9378884,0,-8369.388)"
     id="g371"
     inkscape:label="g-main"
     style="display:inline">
    <g
       id="g4874"
       transform="translate(-0.217187,1066.6249)">
      <path
         style="display:inline;fill:#ffffff"
         inkscape:connector-curvature="0"
         id="path11"
         d="m 42.2,-212.05533 v 35.2 h -36 v -46.7 h 24.4 z" />
      <path
         style="display:inline;fill:#788b9c;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path13"
         d="m 30.454999,-223.24783 11.27,11.27 v 34.31312 H 7.009375 v -45.4825 h 23.546249 m 0.60375,-1.30812 H 5.5 v 48.3 h 37.734374 v -36.225 z" />
      <path
         style="display:inline;fill:#eef0f2;fill-opacity:1"
         inkscape:connector-curvature="0"
         id="path15"
         d="m 42.2,-212.05533 v 0.4 h -12 v -12 h 0.4 z" />
      <path
         style="display:inline;fill:#788b9c"
         inkscape:connector-curvature="0"
         id="path17"
         d="m 31.100937,-222.45644 10,10 h -9.9 v -10 m 0,-2 h -1.4 v 13.5 h 13.4 v -1.3 z" />
      <path
         style="font-weight:400;font-size:8.5px;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#000080;stroke-width:0.2"
         inkscape:connector-curvature="0"
         id="path19"
         word-spacing="0"
         letter-spacing="0"
         font-size="8.5"
         font-weight="400"
         aria-label="?"
         d="m 21.2,-186.55533 h 4 v 4 h -4 z m 3.8,-2.3 h -3.6 v -2.5 q 0,-1.6 0.5,-2.6 0.5,-1 2.3,-2.4 l 1.7,-1.4 q 1,-0.8 1.6,-1.6 0.5,-0.7 0.5,-1.5 0,-1.4 -1.3,-2.2 -1.3,-1 -3.3,-1 -1.5,0 -3.3,0.6 -1.7,0.6 -3.6,1.6 v -3 q 1.9,-0.8 3.7,-1.3 1.9,-0.4 3.8,-0.4 3.6,0 5.7,1.5 2.2,1.6 2.2,4 0,1.3 -0.7,2.4 -0.7,1 -2.4,2.4 l -1.8,1.4 q -1,0.7 -1.3,1.1 -0.4,0.4 -0.5,0.8 l -0.2,0.8 v 1.3 z" />
    </g>
    <g
       id="g4867"
       transform="translate(0,916.1634)">
      <path
         style="fill:#b6dcfe;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path21"
         d="m 0.60375,20.99625 v -39.445 H 13.685 l 3.82375,3.82375 h 30.1875 v 35.62125 z" />
      <path
         style="fill:#4788c7;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path23"
         d="m 13.48375,-17.845 3.82375,3.82375 h 29.785 V 20.291875 H 1.308125 V -17.845 h 12.075 m 0.60375,-1.2075 H 0 V 21.6 H 48.3 V -15.22875 H 17.810625 Z" />
      <path
         style="fill:url(#b);stroke-width:1.27105474"
         inkscape:connector-curvature="0"
         id="path25"
         d="M 0.69908212,20.938069 V -12.109355 H 14.299368 l 3.813164,-2.542109 h 29.615576 v 35.589533 z" />
      <path
         style="fill:#4788c7;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path27"
         d="M 47.0925,-14.02125 V 20.291875 H 1.308125 v -31.7975 h 13.08125 l 0.301875,-0.20125 3.521875,-2.314375 H 47.0925 M 48.3,-15.22875 H 17.810625 l -3.82375,2.515625 H 0 v 34.2125 h 48.3 z" />
    </g>
    <g
       id="g4861"
       transform="translate(0,916.4759)">
      <path
         style="fill:#b6dcfe;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path29"
         d="M 0.60375,70.99625 V 32.5575 h 12.779375 l 3.723125,3.723125 H 42.765625 V 70.99625 Z" />
      <path
         style="fill:#4788c7;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path31"
         d="m 13.08125,33.16125 3.723125,3.723125 H 42.2625 V 70.3925 H 1.2075 V 33.16125 H 13.08125 M 13.685,31.95375 H 0 V 71.6 H 43.26875 V 35.676875 H 17.408125 Z" />
      <path
         style="fill:url(#c);stroke-width:1.23846233"
         inkscape:connector-curvature="0"
         id="path33"
         d="M 0.7740397,70.988537 5.4801965,44.980829 H 18.855589 l 3.715387,-2.476925 h 25.016939 l -4.706157,28.484633 z" />
      <path
         style="fill:#4788c7;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path35"
         d="m 46.89125,43.123125 -4.528125,27.16875 H 1.509375 L 6.0375,45.63875 H 19.018125 L 19.32,45.4375 22.640625,43.22375 h 24.15 M 48.3,41.815 H 22.33875 l -3.723125,2.515625 h -13.685 L 0,71.499375 h 43.26875 z" />
    </g>
    <g
       id="g4881"
       transform="translate(-0.217186,915.6874)">
      <path
         style="fill:#ffffff;stroke-width:1.00415802"
         inkscape:connector-curvature="0"
         id="path37"
         d="M 6.2029106,125.1172 V 78.1226 H 30.704365 l 11.648233,11.648232 v 35.145528 z" />
      <path
         style="fill:#4788c7;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path39"
         d="M 30.454999,78.828441 41.724998,89.89719 v 34.41375 H 7.0093749 V 78.727816 H 30.555624 m 0.60375,-1.308125 H 5.5 v 48.299999 h 37.734372 v -36.225 z" />
      <path
         style="fill:#dff0fe;stroke-width:1.00415802"
         inkscape:connector-curvature="0"
         id="path41"
         d="M 30.302702,90.272911 V 78.223015 h 0.401663 l 11.648233,11.648233 v 0.401663 z" />
      <path
         style="fill:#4788c7;stroke-width:1.00415802"
         inkscape:connector-curvature="0"
         id="path43"
         d="m 31.005613,79.428005 10.04158,10.04158 h -9.941164 v -10.04158 m 0,-2.008316 h -1.405822 v 13.556133 h 13.455717 v -1.305406 z" />
      <path
         style="fill:none;stroke:#4788c7;stroke-width:1.33887398;stroke-miterlimit:10"
         inkscape:connector-curvature="0"
         id="path45"
         stroke-miterlimit="10"
         d="m 15.54158,99.61158 h 1.506237 v 6.02495 m 6.527027,-0.60249 c -0.702911,0 -1.305406,-0.70292 -1.305406,-1.40583 v -2.71122 a 1.3556135,1.3556135 0 0 1 2.711227,0 v 2.71122 c 0,0.70291 -0.602495,1.30541 -1.405821,1.30541 z m 8.033264,0 c -0.702911,0 -1.305406,-0.70292 -1.305406,-1.40583 v -2.71122 a 1.3556135,1.3556135 0 0 1 2.711227,0 v 2.71122 c 0,0.70291 -0.602495,1.30541 -1.405821,1.30541 z m 0,4.01663 h 1.506237 v 6.02495 m -8.13368,-0.70292 c -0.803327,0 -1.405821,-0.60249 -1.405821,-1.40582 v -2.61081 a 1.3556133,1.3556133 0 0 1 2.711226,0 v 2.61081 c 0,0.80333 -0.602495,1.40582 -1.305405,1.40582 z m -8.033264,0 c -0.803326,0 -1.405821,-0.60249 -1.405821,-1.40582 v -2.61081 a 1.3556133,1.3556133 0 0 1 2.711226,0 v 2.61081 c 0,0.80333 -0.602494,1.40582 -1.305405,1.40582 z" />
    </g>
    <g
       id="g"
       transform="matrix(1.0107447,0,0,1.0062525,-0.27626287,915.961)">
      <path
         d="m 6.5,37.5 v -35 h 18.3 l 8.7,8.7 v 26.3 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,124)"
         id="path47"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="M 24.6,3 33,11.4 V 37 H 7 V 3 H 24.6 M 25,2 H 6 V 38 H 34 V 11 Z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,124)"
         id="path49"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <path
         d="m 24.5,11.5 v -9 h 0.3 l 8.7,8.7 v 0.3 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,124)"
         id="path51"
         inkscape:connector-curvature="0"
         style="fill:#dff2fe;fill-opacity:1" />
      <path
         d="M 25,3.4 32.6,11 H 25 V 3.4 M 25,2 h -1 v 10 h 10 v -1 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,124)"
         id="path53"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <g
         id="g57"
         style="fill:#4788c7">
        <path
           d="m 27.5,17 h -15 A 0.5,0.5 0 0 1 12,16.5 C 12,16.2 12.2,16 12.5,16 h 15 c 0.3,0 0.5,0.2 0.5,0.5 0,0.3 -0.2,0.5 -0.5,0.5 z m -4,3 h -11 A 0.5,0.5 0 0 1 12,19.5 C 12,19.2 12.2,19 12.5,19 h 11 c 0.3,0 0.5,0.2 0.5,0.5 0,0.3 -0.2,0.5 -0.5,0.5 z m 4,3 h -15 A 0.5,0.5 0 0 1 12,22.5 C 12,22.2 12.2,22 12.5,22 h 15 c 0.3,0 0.5,0.2 0.5,0.5 0,0.3 -0.2,0.5 -0.5,0.5 z m -4,3 h -11 A 0.5,0.5 0 0 1 12,25.5 C 12,25.2 12.2,25 12.5,25 h 11 c 0.3,0 0.5,0.2 0.5,0.5 0,0.3 -0.2,0.5 -0.5,0.5 z m 4,3 h -15 A 0.5,0.5 0 0 1 12,28.5 C 12,28.2 12.2,28 12.5,28 h 15 c 0.3,0 0.5,0.2 0.5,0.5 0,0.3 -0.2,0.5 -0.5,0.5 z"
           transform="matrix(1.33333,0,0,1.33333,-2.5,125.2)"
           id="path55"
           inkscape:connector-curvature="0" />
      </g>
    </g>
    <g
       id="g4891"
       transform="translate(-0.217187,915.6874)">
      <path
         style="fill:#ffffff;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path60"
         d="m 6.204375,178.84969 h 24.552499 l 11.6725,11.6725 v 35.21875 H 6.204375 Z" />
      <path
         style="fill:#2ea26c;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path62"
         d="m 30.454999,179.55407 11.27,11.06875 v 34.41375 H 7.009375 v -45.68375 h 23.546249 m 0.60375,-1.30813 H 5.5 v 48.3 h 37.734374 v -36.225 z" />
      <path
         style="fill:#e8f8f1;fill-opacity:1;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path64"
         d="m 30.354374,178.84969 h 0.4025 l 11.6725,11.6725 v 0.4025 h -12.075 z" />
      <path
         style="fill:#2ea26c;stroke-width:1.00625002"
         inkscape:connector-curvature="0"
         id="path66"
         d="m 31.058749,180.05719 10.0625,10.0625 h -9.961875 v -10.0625 m 0,-2.0125 h -1.408749 v 13.58438 h 13.483749 v -1.30813 z" />
      <g
         id="g74"
         transform="matrix(1.3416633,0,0,1.3416633,-2.5499998,178.14532)"
         style="filter:url(#filter4723)">
        <path
           style="fill:#79efa8"
           inkscape:connector-curvature="0"
           id="path68"
           d="m 28,29 v -3 l -5,-4.8 -3,2.8 4.6,5 z" />
        <circle
           style="fill:#b5ffc9"
           id="circle70"
           cx="26"
           cy="17"
           r="2" />
        <path
           style="fill:#b5ffc9"
           inkscape:connector-curvature="0"
           id="path72"
           d="M 26,29 H 12 v -4 l 5,-5 z" />
      </g>
    </g>
    <g
       id="g96"
       transform="matrix(1.00625,0,0,1.00625,-0.2515625,916.2296)">
      <path
         d="m 6.2,273.9 v -46.7 h 24.4 l 11.6,11.6 v 35 z"
         id="path76"
         inkscape:connector-curvature="0"
         style="display:inline;fill:#ffffff;fill-opacity:1" />
      <path
         d="M 30.3,227.9 41.5,239 v 34.1 H 7 V 227.8 H 30.4 M 31,226.4 H 5.5 v 48 H 43 v -36 z"
         id="path78"
         inkscape:connector-curvature="0"
         style="fill:#7bad2a" />
      <path
         d="m 42.2,239.2 h -12 v -12 h 0.4 l 11.6,11.6 z"
         id="path80"
         inkscape:connector-curvature="0"
         style="fill:#f2f9e7;fill-opacity:1" />
      <path
         d="M 30.9,228.4 41,238.5 H 31 v -10.1 m 0,-1.9 H 29.6 V 240 H 43 v -1.4 z"
         id="path82"
         inkscape:connector-curvature="0"
         style="fill:#7bad2a" />
      <g
         id="g94">
        <path
           d="m 24.9,260 v -12.6 c 3.4,0 5.3,1.3 5.3,1.3 v 2.7 c 0,0 -2.4,-1.4 -4.7,-1.4"
           id="path84"
           inkscape:connector-curvature="0"
           style="fill:#c9e69a" />
        <path
           d="m 25.5,260 h -1.3 v -13.3 h 0.7 c 3.7,0 5.6,1.5 5.7,1.5 l 0.3,0.1 v 4.1 l -1,-0.5 c 0,0 -2.4,-1.2 -4.4,-1.2 z m 0,-10.6 c 1.5,0 3.1,0.5 4,0.9 v -1.2 c -0.5,-0.3 -1.8,-1 -4,-1 z"
           id="path86"
           inkscape:connector-curvature="0"
           style="fill:#7bad2a" />
        <g
           transform="matrix(1.33333,0,0,1.33333,-2.5,225.4)"
           id="g92">
          <circle
             cx="18"
             cy="26"
             r="2.5"
             id="circle88"
             style="fill:#c4e490" />
          <path
             d="m 18,24 a 2,2 0 0 1 2,2 2,2 0 0 1 -2,2 2,2 0 0 1 -2,-2 c 0,-1.1 0.9,-2 2,-2 m 0,-1 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z"
             id="path90"
             inkscape:connector-curvature="0"
             style="fill:#7bad2a" />
        </g>
      </g>
    </g>
    <g
       id="g110"
       transform="matrix(1.00625,0,0,1.004158,-0.2515625,916.607)">
      <path
         d="m 30.6,277.3 11.6,11.6 v 35 h -36 v -46.6 z"
         id="path98"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="m 30.3,278 11.2,11.2 v 34 H 7 V 278 H 30.4 M 31,276.7 H 5.5 v 48 H 43 v -36 z"
         id="path100"
         inkscape:connector-curvature="0"
         style="fill:#788b9c" />
      <path
         d="m 30.6,277.3 11.6,11.6 v 0.4 h -12 v -12 z"
         id="path102"
         inkscape:connector-curvature="0"
         style="fill:#eef0f2;fill-opacity:1" />
      <path
         d="m 30.9,278.5 10,10.1 H 31 v -10.1 m 0,-1.9 H 29.6 V 290 H 43 v -1.3 z"
         id="path104"
         inkscape:connector-curvature="0"
         style="fill:#788b9c" />
      <g
         id="g108">
        <path
           d="m 18.9,313.9 14.7,-8.3 -14.7,-8.3 z"
           id="path106"
           inkscape:connector-curvature="0"
           style="fill:#8bb7f0" />
      </g>
    </g>
    <g
       id="g144"
       transform="matrix(1.00625,0,0,1.00625,-0.2515625,916.129)">
      <path
         d="m 6.2,524 v -46.7 h 24.4 l 11.6,11.6 v 35 z"
         id="path114"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="m 30.3,478 11.2,11 v 34.2 H 7 V 477.8 H 30.4 M 31,476.5 H 5.5 v 48 H 43 v -36 z"
         id="path116"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <path
         d="m 30.2,489.3 v -12 h 0.4 l 11.6,11.6 v 0.4 z"
         id="path118"
         inkscape:connector-curvature="0"
         style="fill:#dff0fe" />
      <path
         d="m 30.9,478.5 10,10 H 31 v -10 m 0,-2 H 29.6 V 490 H 43 v -1.3 z"
         id="path120"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <g
         id="g142">
        <path
           d="m 36.7,507 a 12.4,12.4 0 0 1 -24.8,0 c 0,-6.8 5.5,-12.3 12.4,-12.3 6.9,0 12.4,5.5 12.4,12.3 z"
           id="path122"
           inkscape:connector-curvature="0"
           style="fill:#c2e8ff" />
        <path
           d="m 31.6,516.7 -0.4,-1.3 a 8,8 0 0 1 -0.6,-1.7 v -0.5 c -0.1,-0.4 -0.2,-0.9 -0.6,-1.3 l -0.6,-0.4 h -0.2 c -0.5,-0.3 -1,-0.3 -1.4,-0.3 -0.8,0 -1.2,-0.1 -1.6,-0.6 -0.1,-0.2 -0.1,-0.4 0,-0.8 v -0.3 l 0.3,-0.6 0.3,-0.6 v -0.1 l 0.4,-0.8 0.5,-1.3 0.1,-0.6 v -0.3 l 0.6,-0.3 h 0.1 l 0.1,-0.2 c 0.1,0 0.3,-0.1 0.3,-0.4 l -0.1,-0.4 c 0,0 0,-0.2 0.2,-0.2 l 1,-1 a 29.8,29.8 0 0 0 1.4,-1.3 v -0.5 c 0,-0.1 -0.2,-0.3 -0.4,-0.3 a 3,3 0 0 0 -0.4,-0.1 l -0.3,-0.2 h -0.1 v -0.1 l 0.5,-0.7 0.5,-0.7 0.3,-0.3 c 0.1,-0.3 0.3,-0.5 0.5,-0.6 a 1,1 0 0 1 0.7,0 12.3,12.3 0 0 1 -1,19.1 z"
           id="path124"
           inkscape:connector-curvature="0"
           style="fill:#bae0bd" />
        <path
           d="m 32.4,498.2 h 0.1 a 12,12 0 0 1 3.8,8.8 c 0,3.7 -1.6,7.1 -4.4,9.4 -0.2,-0.3 -0.3,-0.7 -0.3,-1 v -0.1 l -0.1,-0.1 c -0.3,-0.5 -0.4,-1 -0.5,-1.6 l -0.1,-0.4 c -0.1,-0.4 -0.2,-1 -0.6,-1.5 -0.2,-0.3 -0.6,-0.5 -0.8,-0.5 l -0.2,-0.1 -1.5,-0.3 c -0.8,0 -1,0 -1.3,-0.3 v -0.6 -0.3 l 0.3,-0.6 0.3,-0.6 0.4,-0.8 0.6,-1.4 v -0.7 -0.1 l 0.5,-0.2 0.2,-0.1 c 0.1,-0.1 0.4,-0.3 0.4,-0.8 v -0.4 l 1,-1 1,-1 c 0.3,0 0.4,-0.2 0.5,-0.4 v -0.7 a 0.9,0.9 0 0 0 -0.6,-0.5 l -0.4,-0.1 0.7,-1.2 0.3,-0.3 0.4,-0.5 h 0.3 m 0,-0.7 H 32 c -0.4,0.2 -0.7,0.8 -1,1.1 l -1,1.4 c -0.1,0.2 -0.3,0.5 -0.1,0.6 l 0.3,0.1 0.7,0.3 c 0.1,0 0.3,0.2 0.1,0.3 l -0.1,0.2 -2.2,2 -0.3,0.6 c 0,0.1 0.2,0.1 0.2,0.3 l -0.3,0.3 -0.7,0.4 c -0.2,0.3 0,0.7 -0.2,1 -0.1,0.8 -0.6,1.3 -0.9,2 l -0.7,1.4 c 0,0.6 -0.1,1 0.2,1.4 0.7,1 2,0.5 3,1 0.3,0 0.6,0 0.7,0.3 0.5,0.5 0.5,1.2 0.6,1.6 l 0.6,1.8 c 0.1,0.7 0.4,1.4 0.6,2 l 0.3,-0.2 a 12.8,12.8 0 0 0 1,-19.7 l -0.4,-0.1 z"
           id="path126"
           inkscape:connector-curvature="0"
           style="fill:#5e9c76" />
        <path
           d="m 24.4,500 -0.1,-1.1 0.1,-0.7 c 0.1,-0.4 0.2,-0.8 0.1,-1.3 l -0.1,-1.2 v -0.3 H 24 l -0.4,-0.1 H 23.3 V 495 l 0.2,-0.4 a 12.2,12.2 0 0 1 4.9,0.7 c 0,0.1 -0.1,0.5 -0.5,1.1 v 0.2 c -0.2,0.5 -0.5,1 -0.8,1.1 -0.3,0.4 -0.7,0.8 -1.1,1 l -0.7,0.6 -0.7,0.5 a 2.7,2.7 0 0 0 -0.3,0.2 z"
           id="path128"
           inkscape:connector-curvature="0"
           style="fill:#bae0bd" />
        <path
           d="m 24.2,494.9 c 1.3,0 2.6,0.2 3.9,0.6 l -0.4,0.8 v 0.2 a 2,2 0 0 1 -0.7,1 l -1.1,1 -0.7,0.5 -0.6,0.5 v -0.6 l 0.1,-0.6 c 0.1,-0.4 0.3,-0.8 0.2,-1.4 l -0.2,-1.3 v -0.4 L 24.2,495 h -0.4 v -0.1 h 0.4 m 0,-0.7 H 23.4 L 23,495 c -0.1,0.7 0.5,0.6 1,0.7 l 0.2,1.3 c 0.2,0.7 -0.3,1.2 -0.3,1.9 0,0.4 0,1.2 0.3,1.5 h 0.2 l 0.5,-0.3 1.3,-1 1.2,-1 c 0.4,-0.4 0.7,-1 0.9,-1.4 0.1,-0.3 0.6,-1.1 0.5,-1.6 a 13,13 0 0 0 -4.6,-0.9 z"
           id="path130"
           inkscape:connector-curvature="0"
           style="fill:#5e9c76" />
        <g
           id="g136">
          <path
             d="m 20.5,519 a 12.4,12.4 0 0 1 -2.2,-1 v -0.5 l -0.2,-0.6 -0.2,-0.8 a 18.7,18.7 0 0 0 -0.6,-1.4 c -0.2,-0.5 -0.5,-1 -0.5,-1.5 v -0.5 c 0,-0.5 0,-1.1 -0.3,-1.7 h 2.9 l 0.3,0.1 c 0.3,0.1 0.7,0.2 0.9,0.4 v 0.3 l 0.3,0.5 c 0.6,0.7 1.3,0.8 2,1 l 0.6,0.2 c 0.1,0 0.2,0 0.2,0.3 0.2,0.4 0,0.9 0,1.1 l -0.2,0.3 c 0,0.3 -0.2,0.7 -0.4,1 l -0.8,0.4 -0.8,0.9 -0.4,0.5 -0.1,0.1 v 0.1 l -0.5,0.7 z m -5,-8.7 -0.6,-0.3 c -0.3,0 -0.6,-0.2 -0.8,-0.3 -1,-0.6 -1.7,-1.5 -2.1,-2.2 0,-0.2 -0.2,-0.3 -0.3,-0.4 0,-3.5 1.4,-6.7 3.8,-9 a 12,12 0 0 1 3.5,-0.7 h 0.7 c 0.4,0.2 0.8,0.4 1,0.7 0.3,0.3 0.7,0.6 0.7,1 h -1.2 l -0.6,-0.6 a 1,1 0 0 0 -0.4,-0.1 c -1,0 -2.3,1.8 -2.4,2.5 a 2,2 0 0 0 0,1.4 c 0.2,0.3 0.5,0.5 0.8,0.6 0.5,0 1,-0.4 1.5,-0.9 l 0.5,-0.3 0.4,-0.3 0.2,-0.1 h 0.2 c 0.9,0 1.5,0.8 1.7,1.6 v 0.5 c -0.3,0.6 -1.4,1.1 -2.4,1.4 H 19.6 19 c -0.9,0.4 -1.8,1.4 -1.8,2.4 l -0.1,0.8 a 1,1 0 0 0 -0.6,-0.5 c -0.1,-0.2 -0.2,-0.2 -0.4,-0.2 l -0.4,-0.1 -0.6,-0.2 a 1,1 0 0 0 -0.5,0.2 c -0.3,0.2 -0.8,0.8 -0.8,1.4 0,0.2 0,0.5 0.3,0.7 l 0.4,0.2 h 0.3 l 0.2,-0.1 h 0.1 v 0.2 a 56.9,56.9 0 0 0 0.5,0.7 z"
             id="path132"
             inkscape:connector-curvature="0"
             style="fill:#bae0bd" />
          <path
             d="m 19,497.7 h 0.6 l 1,0.7 0.3,0.4 h -0.5 l -0.5,-0.5 -0.1,-0.1 h -0.2 l -0.4,-0.1 c -1.3,0 -2.6,2 -2.8,2.6 -0.1,0.5 -0.1,1.3 0.2,1.8 0.2,0.4 0.5,0.6 1,0.7 0.6,0 1,-0.4 1.7,-1 l 0.5,-0.2 0.3,-0.3 0.2,-0.1 c 0.7,0 1.3,0.7 1.5,1.4 v 0.2 c -0.2,0.4 -1,1 -2.1,1.3 h -0.4 a 1,1 0 0 0 -0.5,0 c -1,0.4 -2,1.5 -2,2.6 v 0.1 A 0.9,0.9 0 0 0 16.1,507 l -0.3,-0.1 a 2,2 0 0 0 -0.7,-0.2 c -0.3,0 -0.5,0 -0.7,0.2 l -0.1,0.1 c -0.3,0.2 -0.8,0.9 -0.8,1.6 v 0.2 c -0.5,-0.5 -1,-1 -1.2,-1.5 a 7,7 0 0 0 -0.2,-0.3 12,12 0 0 1 3.6,-8.7 c 1.2,-0.3 2.4,-0.6 3.3,-0.6 m 0.3,13.7 a 16.4,16.4 0 0 0 1,0.3 v 0.2 l 0.2,0.5 0.1,0.1 v 0.1 c 0.7,0.7 1.5,0.9 2.1,1 l 0.7,0.2 v 0.9 h -0.1 v 0.1 l -0.1,0.3 -0.3,0.8 -0.7,0.4 H 22 l -0.9,1 -0.4,0.5 -0.2,0.2 v 0.1 l -0.2,0.4 -1.8,-0.7 v -0.4 l -0.1,-0.5 v -0.2 l -0.3,-0.7 -0.2,-0.7 a 8,8 0 0 0 -0.4,-0.8 3,3 0 0 1 -0.4,-1.3 v -0.5 L 17,511.4 h 2.2 M 19,497 c -1,0 -2.5,0.2 -3.7,0.6 -2.4,2.4 -3.9,5.7 -3.9,9.3 v 0.2 l 0.3,0.4 c 0.4,0.9 1.3,1.8 2.2,2.4 0.6,0.4 1.7,0.4 2.3,1.1 0.4,0.6 0.3,1.3 0.3,2 0,1 0.6,1.7 0.9,2.4 l 0.4,1.4 0.2,1.2 v 0.1 c 0.8,0.5 1.7,0.8 2.5,1 0.2,0 0.8,-0.8 0.8,-1 0.4,-0.4 0.7,-1 1.2,-1.3 l 0.8,-0.5 c 0.3,-0.3 0.5,-1 0.6,-1.3 0.2,-0.3 0.3,-1 0.2,-1.4 -0.1,-0.2 -0.2,-0.4 -0.5,-0.5 -0.8,-0.3 -1.7,-0.3 -2.4,-1 l -0.3,-1 -1.5,-0.5 h -2.9 c -0.4,-0.2 -0.7,-0.7 -1,-1.2 0,-0.1 0,-0.4 -0.3,-0.4 h -0.7 -0.2 l -0.1,-0.5 c 0,-0.4 0.3,-0.8 0.5,-1.1 l 0.4,-0.1 1,0.2 0.3,0.2 c 0.4,0.1 0.5,0.7 0.5,1.1 v 0.3 c 0,0.2 0.2,0.2 0.3,0.2 l 0.3,-2.2 c 0,-0.9 0.9,-1.8 1.6,-2 h 0.7 c 1,-0.3 3.1,-1.2 2.7,-2.4 -0.3,-1 -1,-1.9 -2.1,-1.9 H 20 l -0.7,0.5 c -0.4,0.3 -1.3,1.1 -1.7,1.1 -0.8,-0.1 -0.8,-1.1 -0.6,-1.6 0.1,-0.5 1.3,-2.2 2.1,-2.2 h 0.2 l 0.6,0.6 c 0.3,0.2 0.7,0.2 1.2,0.2 l 0.4,-0.2 0.1,-0.3 c 0,-0.4 -0.4,-0.8 -0.7,-1.1 -0.3,-0.3 -0.7,-0.6 -1.2,-0.7 A 3,3 0 0 0 18.9,497 Z"
             id="path134"
             inkscape:connector-curvature="0"
             style="fill:#5e9c76" />
        </g>
        <g
           id="g140">
          <path
             d="m 24.2,494.9 a 12.1,12.1 0 1 1 0,24.2 12.1,12.1 0 0 1 0,-24.2 m 0,-0.7 a 12.8,12.8 0 1 0 0,25.6 12.8,12.8 0 0 0 0,-25.6 z"
             id="path138"
             inkscape:connector-curvature="0"
             style="fill:#7496c4" />
        </g>
      </g>
    </g>
    <g
       id="g164"
       transform="matrix(1.00625,0,0,1.00625,-0.2515625,916.129)">
      <path
         d="m 6.2,374 v -46.7 h 24.4 l 11.6,11.6 v 35 z"
         id="path146"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="m 30.3,328 11.2,11 v 34.2 H 7 V 327.8 H 30.4 M 31,326.5 H 5.5 v 48 H 43 v -36 z"
         id="path148"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <path
         d="m 30.2,339.3 v -12 h 0.4 l 11.6,11.6 v 0.4 z"
         id="path150"
         inkscape:connector-curvature="0"
         style="fill:#dff0fe" />
      <path
         d="m 30.9,328.5 10,10 H 31 v -10 m 0,-2 H 29.6 V 340 H 43 v -1.3 z"
         id="path152"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <path
         d="m 34.2,347.9 h -20 a 0.7,0.7 0 0 1 -0.7,-0.7 c 0,-0.3 0.3,-0.6 0.7,-0.6 h 20 c 0.4,0 0.7,0.3 0.7,0.6 0,0.4 -0.3,0.7 -0.7,0.7 z"
         id="path154"
         inkscape:connector-curvature="0"
         style="fill:#800080" />
      <path
         d="M 28.9,351.9 H 14.2 a 0.7,0.7 0 0 1 -0.7,-0.7 c 0,-0.3 0.3,-0.6 0.7,-0.6 H 29 c 0.3,0 0.6,0.3 0.6,0.6 0,0.4 -0.3,0.7 -0.6,0.7 z"
         id="path156"
         inkscape:connector-curvature="0"
         style="fill:#ff5555" />
      <path
         d="m 34.2,355.9 h -20 a 0.7,0.7 0 0 1 -0.7,-0.7 c 0,-0.3 0.3,-0.6 0.7,-0.6 h 20 c 0.4,0 0.7,0.3 0.7,0.6 0,0.4 -0.3,0.7 -0.7,0.7 z"
         id="path158"
         inkscape:connector-curvature="0"
         style="fill:#008000" />
      <path
         d="M 28.9,359.9 H 14.2 a 0.7,0.7 0 0 1 -0.7,-0.7 c 0,-0.3 0.3,-0.6 0.7,-0.6 H 29 c 0.3,0 0.6,0.3 0.6,0.6 0,0.4 -0.3,0.7 -0.6,0.7 z"
         id="path160"
         inkscape:connector-curvature="0"
         style="fill:#808000" />
      <path
         d="m 34.2,363.9 h -20 a 0.7,0.7 0 0 1 -0.7,-0.7 c 0,-0.3 0.3,-0.6 0.7,-0.6 h 20 c 0.4,0 0.7,0.3 0.7,0.6 0,0.4 -0.3,0.7 -0.7,0.7 z"
         id="path162"
         inkscape:connector-curvature="0"
         style="fill:#550000" />
    </g>
    <g
       id="g174"
       transform="matrix(1.00625,0,0,1.00625,-0.2515625,916.3302)">
      <path
         d="m 42.2,388.6 v 35 H 6.2 V 377 h 24.4 z"
         id="path166"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="m 30.3,377.6 11.2,11.2 V 423 H 7 V 377.6 H 30.4 M 31,376.3 H 5.5 v 48 H 43 v -36 z"
         id="path168"
         inkscape:connector-curvature="0"
         style="fill:#c74343" />
      <path
         d="m 42.2,388.6 v 0.4 h -12 v -12 h 0.4 z"
         id="path170"
         inkscape:connector-curvature="0"
         style="fill:#ffd9d9" />
      <path
         d="M 30.9,378.2 41,388.3 H 31 v -10.1 m 0,-1.9 h -1.4 v 13.3 H 43 v -1.3 z m -15.9,40.4 c -0.9,0 -1.6,-0.6 -1.6,-1.3 0,-1.9 2.4,-3.3 5.5,-4.4 a 38,38 0 0 0 3.5,-7.9 c -0.8,-2 -1.2,-3.7 -1.2,-5 0,-0.7 0.1,-1.4 0.4,-1.8 0.2,-0.5 0.8,-0.9 1.4,-0.9 0.6,0 1.1,0.3 1.4,0.8 0.2,0.4 0.2,1 0.2,1.6 0,1.2 -0.4,3 -0.9,5 a 26,26 0 0 0 3.7,6.2 c 2.4,-0.3 4.4,-0.1 5.5,0.3 1.3,0.4 1.6,1.2 1.6,1.7 0,0.5 -0.3,1.9 -2.5,1.9 -1.9,0 -3.8,-1 -5.2,-2.7 -2.4,0.3 -5,0.8 -7.2,1.5 -1.2,3 -3,5 -4.6,5 z m -0.2,-1.3 h 0.2 c 0.7,0 1.8,-1 2.8,-2.5 -1.8,0.8 -3,1.7 -3,2.5 z m 14.1,-5 c 1,1 2.3,1.5 3.3,1.5 1.2,0 1.2,-0.4 1.2,-0.5 0,-0.3 -0.5,-0.4 -0.6,-0.5 -1,-0.4 -2.3,-0.6 -3.9,-0.4 z m -5.7,-5.5 a 40,40 0 0 1 -2.4,5.4 c 1.7,-0.4 3.4,-0.8 5,-1 a 35,35 0 0 1 -2.6,-4.4 z m 0,-8.2 c -0.2,0 -0.3,0 -0.3,0.2 l -0.1,1 c 0,0.8 0.1,1.8 0.4,2.8 0.2,-1 0.4,-2 0.4,-2.9 0,-0.7 -0.2,-1 -0.2,-1 h -0.2 z"
         id="path172"
         inkscape:connector-curvature="0"
         style="fill:#c74343" />
    </g>
    <g
       id="g184"
       transform="matrix(1.00625,0,0,1.00625,-0.2515625,916.129)">
      <path
         d="m 6.2,474 v -46.7 h 24.4 l 11.6,11.6 v 35 z"
         id="path176"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="m 30.2,439.3 v -12 h 0.4 l 11.6,11.6 v 0.4 z"
         id="path178"
         inkscape:connector-curvature="0"
         style="fill:#ffd5d5" />
      <path
         d="m 30.3,428 11.2,11 v 34.2 H 7 V 427.8 H 30.4 M 31,426.5 H 5.5 v 48 H 43 v -36 z"
         id="path180"
         inkscape:connector-curvature="0"
         style="fill:#e64a19" />
      <path
         d="m 30.9,428.5 10,10 H 31 v -10 m 0,-2 H 29.6 V 440 H 43 v -1.3 z m -18.2,22.5 14.5,-5.3 7.9,2 v 22.4 l -8,2 -14.4,-5.3 14.5,2 v -19.1 l -9.3,2 v 13.1 l -5.2,2 z"
         id="path182"
         inkscape:connector-curvature="0"
         style="fill:#e64a19" />
    </g>
    <g
       id="d"
       transform="matrix(1.0107447,0,0,1.0062525,-0.27626287,915.96)">
      <path
         d="m 6.5,37.5 v -35 h 18.3 l 8.7,8.7 v 26.3 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
         id="path186"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="M 24.6,3 33,11.4 V 37 H 7 V 3 H 24.6 M 25,2 H 6 V 38 H 34 V 11 Z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
         id="path188"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <path
         d="m 24.5,11.5 v -9 h 0.3 l 8.7,8.7 v 0.3 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
         id="path190"
         inkscape:connector-curvature="0"
         style="fill:#dff0fe" />
      <path
         d="M 25,3.4 32.6,11 H 25 V 3.4 M 25,2 h -1 v 10 h 10 v -1 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
         id="path192"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <g
         stroke-miterlimit="10"
         id="g196"
         style="fill:none;stroke:#4788c7;stroke-linecap:round;stroke-miterlimit:10">
        <path
           d="m 25.5,19.5 2,4 -2,4 m -11,-8 -2,4 2,4 m 8,-11 -5,14"
           transform="matrix(1.33333,0,0,1.33333,-2.5,525.3)"
           id="path194"
           inkscape:connector-curvature="0" />
      </g>
    </g>
    <g
       id="f"
       transform="matrix(1.0107447,0,0,1.0062525,-0.27626287,915.9588)">
      <path
         d="m 6.5,2.5 h 27 v 35 h -27 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path199"
         inkscape:connector-curvature="0"
         style="fill:#ffeea3" />
      <path
         d="M 33,3 V 37 H 7 V 3 H 33 M 34,2 H 6 v 36 h 28 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path201"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <path
         d="m 20,30.5 c -2,0 -3.5,-1.6 -3.5,-3.5 0,-0.6 0.4,-2.5 1,-5.3 0.1,-0.7 0.7,-1.2 1.4,-1.2 h 2.2 c 0.7,0 1.3,0.5 1.4,1.2 l 1,5.3 c 0,2 -1.6,3.5 -3.5,3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path203"
         inkscape:connector-curvature="0"
         style="fill:#fffae0" />
      <path
         d="m 21,21 c 0.5,0 1,0.3 1,0.8 1,4 1,5 1,5.2 a 3,3 0 0 1 -6,0 c 0,-0.2 0,-1.1 1,-5.2 A 1,1 0 0 1 19,21 h 2 m 0,-1 h -2 a 2,2 0 0 0 -2,1.6 c -0.4,1.8 -1,4.6 -1,5.4 a 4,4 0 0 0 8,0 c 0,-0.8 -0.6,-3.6 -1,-5.4 A 2,2 0 0 0 21,20 Z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path205"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="20"
         cy="27"
         r="1.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle207"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,19 H 20 l -1,-1 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path209"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="18.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle211"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,20 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path213"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="19.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle215"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,17 H 20 l -1,-1 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path217"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="16.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle219"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,18 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path221"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="17.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle223"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,15 H 20 l -1,-1 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path225"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="14.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle227"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,16 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path229"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="15.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle231"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,13 H 20 l -1,-1 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path233"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="12.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle235"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,14 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path237"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="13.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle239"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,11 H 20 l -1,-1 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path241"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="10.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle243"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,12 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path245"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="11.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle247"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,9 H 20 L 19,8 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path249"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="8.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle251"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,10 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path253"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="9.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle255"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,7 H 20 L 19,6 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path257"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="6.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle259"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,8 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path261"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="7.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle263"
         style="fill:#ba9b48" />
      <path
         d="M 22.5,5 H 20 L 19,4 h 3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path265"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="22.5"
         cy="4.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle267"
         style="fill:#ba9b48" />
      <path
         d="M 17.5,6 H 20 l 1,-1 h -3.5 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="path269"
         inkscape:connector-curvature="0"
         style="fill:#ba9b48" />
      <circle
         cx="17.5"
         cy="5.5"
         r="0.5"
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="circle271"
         style="fill:#ba9b48" />
      <g
         id="g275">
        <path
           d="M 17.5,4 H 20 l 1,-1 h -3.5 z"
           transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
           id="path273"
           inkscape:connector-curvature="0"
           style="fill:#ba9b48" />
      </g>
      <g
         transform="matrix(1.33333,0,0,1.33333,-2.5,974)"
         id="g279">
        <circle
           cx="17.5"
           cy="3.5"
           r="0.5"
           id="circle277"
           style="fill:#ba9b48" />
      </g>
    </g>
    <g
       id="g298"
       transform="matrix(1.00625,0,0,1.004158,-0.2515625,918.5902)">
      <path
         d="m 6.2,1223.9 v -46.7 h 24.4 l 11.6,11.6 v 35 z"
         id="path282"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="m 30.3,1177.9 11.2,11.2 v 34.1 H 7 V 1178 h 23.4 m 0.6,-1.4 H 5.5 v 48 H 43 v -36 z"
         id="path284"
         inkscape:connector-curvature="0"
         style="fill:#f44336;fill-opacity:1" />
      <g
         id="g290">
        <path
           d="m 30.2,1189.2 v -12 h 0.4 l 11.6,11.6 v 0.4 z"
           id="path286"
           inkscape:connector-curvature="0"
           style="fill:#fde4e3;fill-opacity:1" />
        <path
           d="M 30.9,1178.4 41,1188.5 H 31 v -10 m 0,-2 h -1.4 v 13.4 H 43 v -1.4 z"
           id="path288"
           inkscape:connector-curvature="0"
           style="fill:#f44336;fill-opacity:1" />
      </g>
      <g
         id="g296"
         transform="matrix(0.95940958,0,0,0.96490954,1.0802584,43.498552)">
        <path
           d="m 10.6,1195.9 a 3,3 0 0 1 3,-3 h 21 a 3,3 0 0 1 3.1,3 v 21 a 3,3 0 0 1 -3,3 H 13.6 a 3,3 0 0 1 -3,-3 z"
           id="path292"
           inkscape:connector-curvature="0"
           style="fill:#f44336" />
        <path
           d="m 12.8,1195.1 v 22.6 h 22.6 v -22.6 z m 12.9,7.7 h -3.8 v 2.7 h 3.4 v 1.8 h -3.4 v 4.4 H 19.7 V 1201 h 6 z m 3.1,8.9 h -2 V 1201 h 2 z"
           id="path294"
           inkscape:connector-curvature="0"
           style="fill:#210403" />
      </g>
    </g>
    <g
       id="g328"
       transform="matrix(1.004158,0,0,1.0147059,-0.2008315,905.2505)">
      <path
         d="m 22.8,1262.2 v -34.7 h 16.9 l 8,8.6 v 26.1 z"
         id="path300"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="m 39.5,1228 7.8,8.3 v 25.4 h -24 V 1228 h 16.2 m 0.4,-1 H 22.3 v 35.7 h 26 V 1236 Z"
         id="path302"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <path
         d="m 39.4,1236.4 v -9 h 0.3 l 8,8.7 v 0.3 z"
         id="path304"
         inkscape:connector-curvature="0"
         style="fill:#dff0fe" />
      <path
         d="m 39.9,1228.4 7,7.5 h -7 v -7.5 m 0,-1.4 h -1 v 10 h 9.3 v -1 z"
         id="path306"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <g
         id="g316">
        <path
           d="m 12.2,1267.6 v -34.8 h 17 l 8,8.7 v 26 z"
           id="path308"
           inkscape:connector-curvature="0"
           style="fill:#ffffff" />
        <path
           d="m 29,1233.3 7.7,8.4 v 25.4 h -24 v -33.8 H 29 m 0.4,-1 H 11.8 v 35.7 h 25.8 v -26.7 z"
           id="path310"
           inkscape:connector-curvature="0"
           style="fill:#4788c7" />
        <path
           d="m 28.9,1241.8 v -9 h 0.2 l 8,8.7 v 0.3 z"
           id="path312"
           inkscape:connector-curvature="0"
           style="fill:#dff0fe" />
        <path
           d="m 29.3,1233.7 7,7.6 h -7 v -7.6 m 0,-1.4 h -0.9 v 10 h 9.2 v -1 z"
           id="path314"
           inkscape:connector-curvature="0"
           style="fill:#4788c7" />
      </g>
      <g
         id="g326">
        <path
           d="m 0.7,1274 v -34.7 h 16.9 l 8,8.7 v 26 z"
           id="path318"
           inkscape:connector-curvature="0"
           style="fill:#ffffff" />
        <path
           d="m 17.4,1239.8 7.7,8.4 v 25.4 h -24 v -33.8 h 16.3 m 0.4,-1 H 0.2 v 35.8 h 25.9 v -26.8 z"
           id="path320"
           inkscape:connector-curvature="0"
           style="fill:#4788c7" />
        <path
           d="m 17.3,1248.3 v -9 h 0.3 l 8,8.7 v 0.3 z"
           id="path322"
           inkscape:connector-curvature="0"
           style="fill:#dff0fe" />
        <path
           d="m 17.8,1240.3 7,7.5 h -7 v -7.5 m 0,-1.4 h -1 v 9.9 h 9.3 v -1 z"
           id="path324"
           inkscape:connector-curvature="0"
           style="fill:#4788c7" />
      </g>
    </g>
    <g
       id="e"
       transform="matrix(1.0107447,0,0,1.0062525,-0.27626287,915.9598)">
      <path
         d="m 6.5,37.5 v -35 h 18.3 l 8.7,8.7 v 26.3 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,574)"
         id="path330"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         d="M 24.6,3 33,11.4 V 37 H 7 V 3 H 24.6 M 25,2 H 6 V 38 H 34 V 11 Z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,574)"
         id="path332"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <path
         d="m 24.5,11.5 v -9 h 0.3 l 8.7,8.7 v 0.3 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,574)"
         id="path334"
         inkscape:connector-curvature="0"
         style="fill:#dff0fe" />
      <path
         d="M 25,3.4 32.6,11 H 25 V 3.4 M 25,2 h -1 v 10 h 10 v -1 z"
         transform="matrix(1.33333,0,0,1.33333,-2.5,574)"
         id="path336"
         inkscape:connector-curvature="0"
         style="fill:#4788c7" />
      <g
         id="g346">
        <path
           d="m 2.5,3.5 h 35 v 33 h -35 z"
           transform="matrix(0.74402,0,0,0.74402,9.4,593)"
           id="path338"
           inkscape:connector-curvature="0"
           style="fill:#ffffff" />
        <path
           d="M 37,4 V 36 H 3 V 4 H 37 M 38,3 H 2 v 34 h 36 z"
           transform="matrix(0.74402,0,0,0.74402,9.4,593)"
           id="path340"
           inkscape:connector-curvature="0"
           style="fill:#4788c7" />
        <path
           d="M 3,4 H 37 V 9 H 3 Z"
           transform="matrix(0.74402,0,0,0.74402,9.4,593)"
           id="path342"
           inkscape:connector-curvature="0"
           style="fill:#98ccfd" />
        <path
           d="m 14.6,24.6 c 0.5,1.1 1.3,1.9 2.2,1.9 2.1,0 3.2,-2 3.2,-4.5 0,-2.5 -1.2,-4.5 -3.2,-4.5 -1,0 -1.7,0.8 -2.2,2 m 10.8,5.1 c -0.5,1.1 -1.3,1.9 -2.2,1.9 -2.1,0 -3.2,-2 -3.2,-4.5 0,-2.5 1.2,-4.5 3.2,-4.5 1,0 1.7,0.8 2.2,2 m 3.1,9 a 20.6,20.6 0 0 0 0,-13 m -17,0 a 20.6,20.6 0 0 0 0,13"
           stroke-miterlimit="10"
           transform="matrix(0.74402,0,0,0.74402,9.4,593)"
           id="path344"
           inkscape:connector-curvature="0"
           style="fill:none;stroke:#4788c7;stroke-linecap:round;stroke-miterlimit:10" />
      </g>
    </g>
    <use
       height="100%"
       width="100%"
       transform="translate(0,402.49997)"
       xlink:href="#d"
       id="use349"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,50.312475)"
       xlink:href="#e"
       id="use351"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,100.62497)"
       xlink:href="#e"
       id="use353"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,150.93747)"
       xlink:href="#e"
       id="use355"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,201.24997)"
       xlink:href="#e"
       id="use357"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,251.56247)"
       xlink:href="#e"
       id="use359"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,301.87497)"
       xlink:href="#e"
       id="use361"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,50.312475)"
       xlink:href="#f"
       id="use363"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,100.62497)"
       xlink:href="#f"
       id="use365"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,150.93747)"
       xlink:href="#f"
       id="use367"
       x="0"
       y="0" />
    <use
       height="100%"
       width="100%"
       transform="translate(0,1157.1875)"
       xlink:href="#g"
       id="use369"
       x="0"
       y="0" />
    <g
       id="g7085"
       inkscape:label="g-pp"
       transform="translate(0,-201.25)">
      <g
         transform="matrix(1.0769231,0,0,1.0769237,-2.1587077,-191.44614)"
         id="g6504">
        <use
           transform="matrix(0.92857141,0,0,0.92857089,2.0045142,1205.579)"
           height="100%"
           width="100%"
           id="use4677"
           xlink:href="#g184"
           y="0"
           x="0"
           style="display:inline" />
        <rect
           style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.08322811;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
           id="rect4915"
           width="26.162498"
           height="28.031126"
           x="11.348264"
           y="2469.7346" />
      </g>
      <g
         style="display:inline"
         transform="matrix(0.86666666,0,0,0.86666666,-55.209583,260.76704)"
         id="g6397">
        <g
           style="display:inline;fill:#000000"
           id="g4913"
           transform="matrix(0.83854167,0,0,0.83854165,71.44375,2545.5703)">
          <path
             id="path4881"
             d="M 41,10 H 25 v 28 h 16 c 0.553,0 1,-0.447 1,-1 V 11 c 0,-0.553 -0.447,-1 -1,-1 z"
             inkscape:connector-curvature="0"
             style="fill:#ff8a65" />
          <g
             id="g4891-7">
            <rect
               id="rect4883"
               height="2"
               width="14"
               y="29"
               x="24"
               style="fill:#fbe9e7" />
            <rect
               id="rect4885"
               height="2"
               width="14"
               y="33"
               x="24"
               style="fill:#fbe9e7" />
            <path
               id="path4887"
               d="m 30,15 c -3.313,0 -6,2.687 -6,6 0,3.313 2.687,6 6,6 3.313,0 6,-2.687 6,-6 h -6 z"
               inkscape:connector-curvature="0"
               style="fill:#fbe9e7" />
            <path
               id="path4889"
               d="m 32,13 v 6 h 6 c 0,-3.313 -2.687,-6 -6,-6 z"
               inkscape:connector-curvature="0"
               style="fill:#fbe9e7" />
          </g>
          <polygon
             id="polygon4893"
             points="27,42 6,38 6,10 27,6 "
             style="fill:#e64a19" />
          <path
             id="path4895"
             d="M 16.828,17 H 12 v 14 h 3 v -4.823 h 1.552 c 1.655,0 2.976,-0.436 3.965,-1.304 0.988,-0.869 1.484,-2.007 1.482,-3.412 C 22,18.487 20.275,17 16.828,17 Z m -0.534,6.785 H 15 v -4.364 h 1.294 c 1.641,0 2.461,0.72 2.461,2.158 0,1.472 -0.82,2.206 -2.461,2.206 z"
             inkscape:connector-curvature="0"
             style="fill:#ffffff" />
        </g>
      </g>
    </g>
    <g
       id="g6555"
       transform="translate(0.02515625,-201.25)"
       inkscape:label="g-excel">
      <use
         x="0"
         y="0"
         xlink:href="#g6504"
         id="use7040"
         width="100%"
         height="100%"
         transform="translate(-0.0251562,50.312521)"
         style="fill:none;fill-opacity:1;stroke-width:1.00625002;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter7301)" />
      <g
         transform="matrix(0.92857143,0,0,0.92857143,-34.001055,187.54397)"
         inkscape:label="g-excel"
         id="g6497">
        <g
           style="fill:#000000"
           id="g4819"
           transform="matrix(0.78263889,0,0,0.78263887,43.84088,2508.9039)"
           inkscape:label="s-excel">
          <g
             id="surface1-4">
            <path
               id="path4776"
               d="M 41,10 H 25 v 28 h 16 c 0.554688,0 1,-0.445312 1,-1 V 11 c 0,-0.554687 -0.445312,-1 -1,-1 z"
               style="fill:#4caf50"
               inkscape:connector-curvature="0" />
            <path
               id="path4778"
               d="m 32,15 h 7 v 3 h -7 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4780"
               d="m 32,25 h 7 v 3 h -7 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4782"
               d="m 32,30 h 7 v 3 h -7 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4784"
               d="m 32,20 h 7 v 3 h -7 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4786"
               d="m 25,15 h 5 v 3 h -5 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4788"
               d="m 25,25 h 5 v 3 h -5 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4790"
               d="m 25,30 h 5 v 3 h -5 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4792"
               d="m 25,20 h 5 v 3 h -5 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
            <path
               id="path4794"
               d="M 27,42 6,38 V 10 L 27,6 Z"
               style="fill:#2e7d32"
               inkscape:connector-curvature="0" />
            <path
               id="path4796"
               d="M 19.128906,31 16.71875,26.4375 C 16.625,26.269531 16.53125,25.957031 16.433594,25.5 h -0.03516 c -0.04687,0.214844 -0.15625,0.542969 -0.324219,0.980469 L 13.652344,31 H 9.894531 l 4.460938,-7 -4.082031,-7 h 3.835937 l 2.003906,4.195313 c 0.15625,0.332031 0.292969,0.726562 0.417969,1.179687 h 0.03906 c 0.07813,-0.269531 0.226562,-0.679687 0.441406,-1.21875 L 19.238281,17 h 3.515625 l -4.199218,6.9375 4.3125,7.058594 h -3.738282 z"
               style="fill:#ffffff"
               inkscape:connector-curvature="0" />
          </g>
        </g>
      </g>
    </g>
    <g
       id="g6568"
       inkscape:label="g-word"
       transform="translate(0,-201.25)">
      <use
         transform="translate(1.9241986e-8,100.62502)"
         height="100%"
         width="100%"
         id="use6508"
         xlink:href="#g6504"
         y="0"
         x="0"
         style="filter:url(#filter7265)" />
      <g
         transform="matrix(0.72673611,0,0,0.72673609,6.7083334,2567.5529)"
         id="g4774"
         style="fill:#000000"
         inkscape:label="s-word">
        <g
           id="surface1">
          <path
             inkscape:connector-curvature="0"
             style="fill:#2196f3"
             d="M 41,10 H 25 v 28 h 16 c 0.554688,0 1,-0.445312 1,-1 V 11 c 0,-0.554687 -0.445312,-1 -1,-1 z"
             id="path4740" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#ffffff"
             d="m 25,15 h 14 v 2 H 25 Z"
             id="path4742" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#ffffff"
             d="m 25,19 h 14 v 2 H 25 Z"
             id="path4744" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#ffffff"
             d="m 25,23 h 14 v 2 H 25 Z"
             id="path4746" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#ffffff"
             d="m 25,27 h 14 v 2 H 25 Z"
             id="path4748" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#ffffff"
             d="m 25,31 h 14 v 2 H 25 Z"
             id="path4750" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#0d47a1"
             d="M 27,42 6,38 V 10 L 27,6 Z"
             id="path4752" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#ffffff"
             d="m 21.167969,31.011719 h -2.71875 l -1.800781,-8.988281 c -0.09766,-0.476563 -0.15625,-0.996094 -0.175782,-1.574219 h -0.03125 c -0.04297,0.636719 -0.109375,1.160156 -0.195312,1.574219 l -1.851563,8.988281 H 11.566406 L 8.707031,16.996094 h 2.675782 l 1.535156,9.328125 c 0.0625,0.40625 0.113281,0.941406 0.144531,1.609375 h 0.04297 c 0.01563,-0.5 0.09766,-1.050781 0.222656,-1.644531 l 1.96875,-9.292969 h 2.621094 l 1.785156,9.40625 c 0.0625,0.347656 0.121094,0.84375 0.171875,1.507812 h 0.03125 c 0.01953,-0.511718 0.07031,-1.03125 0.160156,-1.5625 l 1.5,-9.351562 h 2.46875 z"
             id="path4754" />
        </g>
      </g>
    </g>
    <g
       id="d-6"
       transform="matrix(1.0107447,0,0,1.0062525,-0.27626314,1871.8975)">
      <g
         id="g4793">
        <path
           style="fill:#ffffff"
           inkscape:connector-curvature="0"
           id="path186-8"
           transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
           d="m 6.5,37.5 v -35 h 18.3 l 8.7,8.7 v 26.3 z" />
        <path
           style="fill:#ff5722;fill-opacity:1"
           inkscape:connector-curvature="0"
           id="path188-9"
           transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
           d="M 24.6,3 33,11.4 V 37 H 7 V 3 H 24.6 M 25,2 H 6 V 38 H 34 V 11 Z" />
        <path
           style="fill:#ffe8e1;fill-opacity:1"
           inkscape:connector-curvature="0"
           id="path190-5"
           transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
           d="m 24.5,11.5 v -9 h 0.3 l 8.7,8.7 v 0.3 z" />
        <path
           style="fill:#ff5722;fill-opacity:1"
           inkscape:connector-curvature="0"
           id="path192-5"
           transform="matrix(1.33333,0,0,1.33333,-2.5,524)"
           d="M 25,3.4 32.6,11 H 25 V 3.4 M 25,2 h -1 v 10 h 10 v -1 z" />
        <g
           transform="matrix(0.71901056,0,0,0.72222041,6.9103468,540.33326)"
           id="surface1-5">
          <path
             inkscape:connector-curvature="0"
             style="fill:#ff5722"
             d="M 6,10 C 6,7.789063 7.789063,6 10,6 h 28 c 2.210938,0 4,1.789063 4,4 v 28 c 0,2.210938 -1.789062,4 -4,4 H 10 C 7.789063,42 6,40.210938 6,38 Z"
             id="path4766" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#1c0802"
             d="M 9,9 V 39 H 39 V 9 Z M 23.691406,31 22.929688,28.089844 H 19.011719 L 18.253906,31 H 15.214844 L 19.65625,16.78125 h 2.628906 L 26.757813,31 Z m 7.160157,0 H 28.078125 V 20.433594 h 2.773438 z M 30.550781,18.753906 c -0.269531,0.28125 -0.636718,0.421875 -1.097656,0.421875 -0.464844,0 -0.828125,-0.140625 -1.097656,-0.421875 -0.273438,-0.28125 -0.40625,-0.632812 -0.40625,-1.054687 0,-0.429688 0.136719,-0.78125 0.410156,-1.054688 0.273438,-0.273437 0.636719,-0.410156 1.09375,-0.410156 0.453125,0 0.820313,0.136719 1.09375,0.410156 0.273438,0.273438 0.410156,0.625 0.410156,1.054688 0,0.421875 -0.136718,0.773437 -0.40625,1.054687 z"
             id="path4768" />
          <path
             inkscape:connector-curvature="0"
             style="fill:#1c0802"
             d="m 19.640625,25.695313 h 2.65625 L 20.96875,20.628906 Z"
             id="path4770" />
        </g>
      </g>
    </g>
    <g
       transform="matrix(1.00625,0,0,1.00625,-4.1397213e-4,2452.1696)"
       id="g4497"
       inkscape:label="g-oo">
      <path
         id="path7"
         d="m 6.4379114,0.0136375 c -1.37515,0.262398 -2.46216,1.598638 -2.4375,2.998047 V 44.99997 c 1.5e-4,1.57031 1.42931,2.99985 3,3 H 41.000411 c 1.57069,-1.5e-4 2.99985,-1.42969 3,-3 V 18.81832 c 0.018,-0.79196 -0.29252,-1.587065 -0.84375,-2.156245 L 27.344161,0.8573875 c -0.56932,-0.550947 -1.3641,-0.862103 -2.15625,-0.84375 H 7.0004114 c -0.18689,-0.01799 -0.37555,-0.01799 -0.5625,0 z m 26.5507796,0.0098 c -0.99843,0.319797 -1.33417,1.839914 -0.56445,2.554688 l 9.03515,9.0820315 c 0.83473,0.795587 2.49704,0.114553 2.54102,-1.04105 V 1.5370745 c -9e-5,-0.792623 -0.71736,-1.513582 -1.50586,-1.513672 h -9.03516 c -0.15569,-0.02399 -0.31509,-0.02399 -0.4707,0 z"
         inkscape:connector-curvature="0"
         style="fill:url(#a-7)" />
      <path
         id="path9"
         d="M 7.0004114,2.9999995 V 45 H 41.000411 V 19 l -16,-16.0000005 z"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
    </g>
    <g
       transform="matrix(1.00625,0,0,1.00625,-4.1357189e-4,2502.4821)"
       id="g4503"
       inkscape:label="g-ooi">
      <path
         id="path9-5"
         d="m 6.4379114,0.0136375 c -1.37515,0.262398 -2.46216,1.598638 -2.4375,2.998047 V 44.99997 c 1.5e-4,1.57031 1.42931,2.99985 3,3 H 41.000411 c 1.57069,-1.5e-4 2.99985,-1.42969 3,-3 V 18.81832 c 0.018,-0.79196 -0.29252,-1.587065 -0.84375,-2.156245 L 27.344161,0.8573875 c -0.56932,-0.550947 -1.3641,-0.862103 -2.15625,-0.84375 H 7.0004114 c -0.18689,-0.01799 -0.37555,-0.01799 -0.5625,0 z m 26.5507796,0.0098 c -0.99843,0.319797 -1.33417,1.839914 -0.56445,2.554688 l 9.03515,9.0820315 c 0.83473,0.795587 2.49704,0.114553 2.54102,-1.04105 V 1.5370745 c -9e-5,-0.792623 -0.71736,-1.513582 -1.50586,-1.513672 h -9.03516 c -0.15569,-0.02399 -0.31509,-0.02399 -0.4707,0 z"
         inkscape:connector-curvature="0"
         style="fill:url(#c-4)" />
      <path
         id="path11-4"
         d="M 7.0004114,2.9999995 V 45 H 41.000411 V 19 l -16,-16.0000005 z"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         id="path13-6"
         d="m 13.000821,20 c -1.108,0 -2,0.892 -2,2 v 16 c 0,1.108 0.892,2 2,2 h 22 c 1.108,0 2,-0.892 2,-2 V 22 c 0,-1.108 -0.892,-2 -2,-2 z m 0,2 h 22 v 16 h -22 z m 2,3 v 2 h 18 v -2 z m 2,5 c -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 z m 3,0 v 2 h 13 v -2 z m -3,4 c -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 z m 3,0 v 2 h 13 v -2 z"
         inkscape:connector-curvature="0"
         style="fill:url(#a-1)" />
    </g>
    <g
       transform="matrix(1.00625,0,0,1.00625,-4.1357189e-4,2552.7946)"
       id="g4546"
       inkscape:label="g-ooc">
      <path
         id="path9-9"
         d="m 6.4379114,0.0136375 c -1.37515,0.262398 -2.46216,1.598638 -2.4375,2.998047 V 44.99997 c 1.5e-4,1.57031 1.42931,2.99985 3,3 H 41.000411 c 1.57069,-1.5e-4 2.99985,-1.42969 3,-3 V 18.81832 c 0.018,-0.79196 -0.29252,-1.587065 -0.84375,-2.156245 L 27.344161,0.8573875 c -0.56932,-0.550947 -1.3641,-0.862103 -2.15625,-0.84375 H 7.0004114 c -0.18689,-0.01799 -0.37555,-0.01799 -0.5625,0 z m 26.5507796,0.0098 c -0.99843,0.319797 -1.33417,1.839914 -0.56445,2.554688 l 9.03515,9.0820315 c 0.83473,0.795587 2.49704,0.114553 2.54102,-1.04105 V 1.5370745 c -9e-5,-0.792623 -0.71736,-1.513582 -1.50586,-1.513672 h -9.03516 c -0.15569,-0.02399 -0.31509,-0.02399 -0.4707,0 z"
         inkscape:connector-curvature="0"
         style="fill:url(#c-7)" />
      <path
         id="path11-6"
         d="M 7.0004114,2.9999995 V 45 H 41.000411 V 19 l -16,-16.0000005 z"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         id="path13-7"
         d="m 12.000411,18.99805 v 1 2.99999 1 3 1 3 1 3 1 4 h 1 12 V 41 h 11 V 30 h -2 v -2.00196 -1 -3 -1 -2.99999 -1 h -1 z m 1,1 h 6 v 2.99999 h -6 z m 7,0 h 6 v 2.99999 h -6 z m 7,0 h 6 v 2.99999 h -6 z m -14,3.99999 h 6 v 3 h -6 z m 7,0 h 6 v 3 h -6 z m 7,0 h 6 v 3 h -6 z m -14,4 h 6 v 3 h -6 z m 7,0 h 6 V 30 h -1 v 0.99804 h -5 z m 7,0 h 6 V 30 h -6 z m -1,3.00196 h 8 1 v 9 h -9 v -0.002 -1 -3 -1 -3 z m -13,0.99804 h 6 v 3 h -6 z m 7,0 h 5 v 3 h -5 z m -7,4 h 6 v 3 h -6 z m 7,0 h 5 v 3 h -5 z"
         inkscape:connector-curvature="0"
         style="fill:url(#a-18)" />
      <g
         style="fill:#43c330"
         id="g21"
         transform="translate(-203.99959,-80)">
        <path
           inkscape:connector-curvature="0"
           id="path15-8"
           d="m 229.9993,115.00025 h 3 v 4.99992 h -3 z" />
        <path
           inkscape:connector-curvature="0"
           id="path17-4"
           d="m 232.9993,112.00025 h 3 v 7.9999 h -3 z" />
        <path
           inkscape:connector-curvature="0"
           id="path19-5"
           d="m 235.9993,117.00025 h 3 v 3 h -3 z" />
      </g>
      <g
         style="fill:#ccf4c6"
         id="g29"
         transform="translate(-203.99959,-80)">
        <path
           inkscape:connector-curvature="0"
           id="path23-7"
           d="m 230.9993,116.00025 h 1 v 3.99999 h -1 z" />
        <path
           inkscape:connector-curvature="0"
           id="path25-0"
           d="m 233.9993,113.00025 h 1 v 6.99996 h -1 z" />
        <path
           inkscape:connector-curvature="0"
           id="path27-5"
           d="m 236.9993,118.00025 h 1 v 2.00002 h -1 z" />
      </g>
    </g>
    <g
       transform="matrix(1.00625,0,0,1.00625,-4.1357189e-4,2603.1071)"
       id="g4503-9"
       inkscape:label="g-oow">
      <path
         id="path9-2"
         d="m 6.4379114,0.0136375 c -1.37515,0.262398 -2.46216,1.598638 -2.4375,2.998047 V 44.99997 c 1.5e-4,1.57031 1.42931,2.99985 3,3 H 41.000411 c 1.57069,-1.5e-4 2.99985,-1.42969 3,-3 V 18.81832 c 0.018,-0.79196 -0.29252,-1.587065 -0.84375,-2.156245 L 27.344161,0.8573875 c -0.56932,-0.550947 -1.3641,-0.862103 -2.15625,-0.84375 H 7.0004114 c -0.18689,-0.01799 -0.37555,-0.01799 -0.5625,0 z m 26.5507796,0.0098 c -0.99843,0.319797 -1.33417,1.839914 -0.56445,2.554688 l 9.03515,9.0820315 c 0.83473,0.795587 2.49704,0.114553 2.54102,-1.04105 V 1.5370745 c -9e-5,-0.792623 -0.71736,-1.513582 -1.50586,-1.513672 h -9.03516 c -0.15569,-0.02399 -0.31509,-0.02399 -0.4707,0 z"
         inkscape:connector-curvature="0"
         style="fill:url(#c-6)" />
      <path
         id="path11-9"
         d="M 7.0004114,2.9999995 V 45 H 41.000411 V 19 l -16,-16.0000005 z"
         inkscape:connector-curvature="0"
         style="fill:#ffffff" />
      <path
         id="path13-1"
         d="m 12.001791,17.99801 v 2 h 8 v -2 z m 10,0 v 10 h 13.99805 v -10 z m 1,1 h 12 v 8 h -0.002 v -1 l -2.49805,-3 -2.5,2 -3.5,-4.5 -3.5,5.5 v -7 z m -11,3 v 2 h 8 v -2 z m 0,4 v 2 h 8 v -2 z m 0,4 v 2 h 23.99805 v -2 z m 0,4 v 2 h 23.99805 v -2 z m 0,4 v 2 h 17.99805 v -2 z"
         inkscape:connector-curvature="0"
         style="fill:url(#a-78)" />
    </g>
  </g>
</svg>
lib/img/src/icons-small.xcf000064400000103453147361034410011611 0ustar00gimp xcf file-��@r���xB�B�gimp-image-grid(style solid)
(fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
(xspacing 10.000000)
(yspacing 10.000000)
(spacing-unit inches)
(xoffset 0.000000)
(yoffset 0.000000)
(offset-unit inches)
�"
�b�fLj0m�q0u�y�~0��
flash-old�	

�
����IJJ�G�K������ϫKL�����������IJ������Ż�����H����ù�����J�����������I����������I������������H������⟖����J�������������I�������������H�H����������H�I����������I�H����������H�H����������H�GHH�G�����������|�14554310v̷���379:8630-ͥ��t26��T�30,����14�65�1.+����}/2��P�/,)����{,/�00�,)'����z*+�,+��($����{(())((''#����z&%$$##""m����w�w����������w�v����������v�t����������t�q����������qm������������ڶ���~����������F�������������B�������������������
���

�n�����������������������������������������������Mgg�$�i���i%���	��l&�������r���v���z�������������
��������������������������������icons8-adobe-flash.svg�	

�������*
�������������������!!������!!!!�����!!��!��!�����!!�!
!�!�����!!��!��!�����!!�!!��!�����!!�!!!�!�����!!�!!!�!�����!!!!!!�����!!������������������
�**
C�C@455�4@C�C4�4C�C5�5C�C5�5C�C5HHJH5C�C5HH5C�C5HH�H5C�C5H�H5C�C5HH5C�C5HH5C�C55C�C5�5C�C4�4C�C@455�4@B
C**
6�64+
+�46�6+�+6�6+�+6�6+�+6�6+::<:+6�6+::+6�6+::�:+6�6+:�:+6�6+::+6�6+::+6�6++6�6+�+6�6+�+6�64+
+�46
6**�I�
��H�J���H�������������������������������������������������������������������������H���G�H�
��G)icons8-adobe-illustrator.svg�	

����h|�*
�����
�����
�����
������ !������!�!!��������!!�������!�!!������!!���������!���������!������
�����
�����
������
��
�**�WXX�XRB
B�RV�VC
�CV�XC
�CX�XC�
�CX�XC�
RS�CX�XCS��CX�XC�SSS�CX�XC	OSSS�CX�XCSTSSS�CX�XCS�OS�CX�XC
�CX�XC
�CX�VC
�CV�XRB
B�RWV�W)*�$"
"�!�! 
� !�"
�"�"
�"�"�"�"� !�"�"!��"�"�!!!�"�"�!!!�"�"!!!!!�"�"!�!�"�"
�"�"
�"�"
�"�! 
� "�!#""�#")*�Ow
w�N�N���M���������������������������������������������������������������������N���L�M�����L)icons-small.png�	

��btb�b�b�b�R;���#Y&K)�/�4H7�;?AD[GLhP�T�X�_Q�IJJ�G�K������ϫKL�I��������IJ�J���������H�J���������J�I���������I�I���������I�H���������H�J����������J�I����������I�H����������H�H����������H�I����������I�H����������H�H����������H�GHH�G1����||{|{{㤴����������yyu�������������������������������������������|����������|������������{��������������y���������������v���	���t�}~~��t�}}~~}}�~}}�~�t��������|�����������|�������̷����~������ͥ��t������������}����������}�{����������{�z����������z�{����������{�z����������z�w����������w�w����������w�v����������v�t����������t�q����������qm2�������	�������ɺ��������������ƾ���������Ż���������ˬ�ĺ�󸷷��������������������������������������������������������	������������������Ÿ�������������������ڶ��������������������������������������������������������������������������������������������������������������������������������������1�����������������������������������������������������	�����	�������������������������	�������	����������������������Mgg�$�i���i%�l���l&�o�����r���r�v���v�z���z���������������������������������������������������1�9�����������
��������������������������������������������������8HB	B�DH+O�������	�򤮥������������򊓒����������SSڇ������������g]��zs��������������f����������|�`��������pog�������ypml��������{rp��r~||�}yyur��|����i�:LIHH�MF

��JcYXXZ�[b9O�������	�������Ǵ��������������������mmذ����������ņ�㯢������������׾���Ŷ���������������������������������������������������ƭ�����������Sidbb�ia

��j������QO������	��������������������������������������������������������������������������������������������������y�����������������^O��®��{����w@TPQUR�
��M�
���,?�����������9�������\�
����
��u�ɸ���Į�pSUS�Q������������˷QN��������������T���TQ��
���QM��
���MG��
�GC��
��C=��
��=7��
��72��
��2%��
��%��pSUS�Q������������̸QN��������������T���TQ��
���QM��
���MG��
�GC��
��C=��
��=7��
��72��
��2%��
��%��pSUS�Q��������������QN��������������T���TQ��
���QM��
���MG��
�GC��
��C=��
��=7��
��72��
��2%��
��%��p�"Yf
f�Y"[�
���[i���fg���gh���hj���jl���ln���nq���qs���sv���v{���{d���d���IJJ�G�K������ϫKL�I��������IJ�J���������H�Jۢ��������J�Iܿ�������I�Iܦ��������I�H���������H�Jޫ��������J�I���������I�H߮��������H�H����������H�I౯�������I�H����������H�H����������H�GHH�GA�]\\�][���[U�IJOSMLYei����US�sy����������S������������|�������̷����~������ͥ��t��ż������}����������}�{�˼������{�z����������z�{���̼�ż�{�z����������z�w����������w�w����������w�v����������v�t����������t�q����������qmB�{||�{x���xu�������������up����ö��ù���p�������������ڶ���������������������������������������������������������������������������������������������������������������������������������������A~�{���{w���������wr����������r��Mgg�$�i���i%�l���l&�o�����r���r�v���v�z���z���������������������������������������������������A�Mgg�Mh���hi���ik��k�M������Ӽ�����MJ�PX�����������JF�.<K���������F@�$&.?GQ\ht����@;�>DJTap�������;5�>DJS]gr}�����5&��
��&�Tl�klf	�l-AWiklf�l,0AWjl�dQdlM,.l�I..;Nblfl�2*-.:Ki�+�*-Q�9�8�M�+�TWY[Y�3�FcumV�H�3SUGI�X�$',1�HNSWX	�8]tjM	�'PQ<=	�"(1�l�������������lg�}����������ga�Yhx�������a[�MPYjr}������[W�iov���������WS�iov���������SA��
�A.,,�.T���	��{��������{����������{|���||��������w{|������w{��������������������Ž����y�������fipw������	��ĸ�	�i����	�[^ai1�n����������nj�cm���������jc�=M^��������c]�UYas|�������]Y������������YS����������SA��
�A..U�����	�����������������������������������������������������������������������������	�����	������	�����1�m���mo���oq���qs���su���ux���x~���~d���dT���U
	�����U
��:������U
:��������U
���+������+v����������@����������������l���p��m�@���	�����	����l	�p��m1������������������{������_S���~z|�~[R�������u]��������x}��==%�����qnn�mk����yy�x���|{��}yt��uplik�����wsy��������������1��������������������������xj��������vj��������x������������==%����������������������������������������������������������1���������������������������Ľ����������ƿ��������ý�����==%��������������������������������������������������������1��h�����h����������������������������������������������������������������������������ò������Ɵ������ʴ������Ц������ݶ������ �IJJ�G�K������ϫKL�I��������IJ�J���������H�Jۡ��������J�Iܾ�������I�Iܥ��������I�H�����˸���H�J�����̟���J�I�d���μ���I�Hߐ�´ϣ���H�H���������H�I఼�������I�H����������H�H����������H�GHH�G������������|�������̷����~������ͥ��t��ĺ������}����������}�{�˼������{�z����������z�{𭭯��ĺ�{�z�H��������z�w�qw������w�w����������w�v����������v�t����������t�q����������qm�������������ڶ����������������������������������������������������������������8898������2AgW�����!%:3���������������������������������������������������Mgg�$�i���i%�l���l&�o�����r���r�v���v�z���z����������������������������������������������������"�IJJ�G�K������ϫKL�����������IJ������Ż�����H�����ù�����J�����ؿ������I������ǭ����I�����̞���H����ð�������J�������������I�������������H�H����������H�I����������I�H����������H�H����������H�GHH�G#�IJJ�G�K������ϫKL�����������IJ���������Ɋ��H�����wYAܷ��J�����Pߺ��I������i�c��I����������H�����y������J����x����I����xf����H������������H"�����������|�14554310v̷���379:8630-ͥ��t2689�@30,����145G�p1.+����}/23rm�Q,)����{,/_ߧ��|'����z*+�Y5*($����{(())((''#����z&%$$##""m����w�w����������w�v����������v�t����������t�q����������qm$�����������|��������̷����rOW�����٥��t�O��n��h�����W�����v����}��n��ޅ������{����������z�̾�������{�������z���Ϻ�����w�����������w"������������ڶ���~���������*����5�g����jd�D����Uݣ��v�����O#�����
���

�n����������������������������������������������#������������ڶ�������������I"Y������̣���0��ͽ�����"�}��������Y0}K������������������=FS�l�y�����4�F���e����-4=�yeS�������������"�Mgg�$�i���i%���	��l&�������r���v���z�������������
��������������������������������#�Mgg�$�i���i%�@����l&��
�����
��r��
��v��
��z@��	�����	������	������	����@�����I����������I�H����������H�H����������H�GHH�G$� 144�1 �0/O���ӯZ/0�(1{�Ӯ���ݙ1(${��ӭ����Α$<nw����Lj���7j[Zainwi\��qf}TGORTQn�|PF[FW>BCDBGPg3HNK;>@AA�>K[2`b�<@AEGIIGKBP^T$IIOUYZXTGkk/<U_hnqnhV�W�Dlx�xef!�3^u�u^0�!!���v����������v�t����������t�q����������qm%����������􀇞����ڨ���x�������˂xUn�����������nU]{��ؾ������x]T������������TK��������Ƽ���KE����������w��ED������ɇ��s��DGGy������������GMM`�����������mM99T���������ǛT99�Za���������cZ9�bey�����web�Uikll�kiU�����������������������������������$��������ݿ��������������������˿�������⵪�����������������������˓������������˅~������������~|����������|�������������ف��������������������������֔������������٦�������ྭ�����������������������������������$�D�����D� �����ϙ � ����� 	�����	G�	���G��	������	������	�������	������	���I�	���I	�����	"�����"�"����٤"�	I��ɹ�I	���Y]	]�XUU�������sRP����N�F����F�<����<�2����2�+����+�!��Ɇ�Ԇ���!���z���z�����������c���c���
���Z��Z��
����������T����������0����			�
���y{	{�vtt�������sn���j�g����g�]����]�S����S�I����I�A��І�݆���A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"���}�vtt�������sq���q�i����i�_����_�U����U�K����K�A��ц�ކ��A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"����9f	f�9�����zf����$�f���f�f���f�f���f�f���f�f���f�f���f�f���f�g���g�k���k�q���q�+����y'�����F"�	��J���Y]	]�XUU�������sRP����N�F����F�<����<�2����2�+����+�!��Ɇ�Ԇ���!���z���z�����������c���c���
���Z��Z��
����������T����������0����			�
5�Y]	]�XUU�������sRP����N��y{	{�vtt�������sn���j�g����g�]����]�S����S�I����I�A��І�݆���A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�5�y{	{�vtt�������sn���j�}�vtt�������sq���q�i����i�_����_�U����U�K����K�A��ц�ކ��A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�5}�vtt�������sq���q��9f	f�9�����zf����$�f���f�f���f�f���f�f���f�f���f�f���f�f���f�g���g�k���k�q���q�+����y'�����F"�	��J5�9f	f�9�����zf����$�F����F�<����<�2����2�+����+�!��Ɇ�Ԇ���!���z���z�����������c���c���
���Z��Z��
����������T����������0����			�
�Y]	]�XUU�������sRP����N�F����F�<����<�2����2�+����+�!��Ɇ�Ԇ���!���z���z�����������c���c���
���Z��Z��
����������T����������0����			�
!�g����g�]����]�S����S�I����I�A��І�݆���A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"��y{	{�vtt�������sn���j�g����g�]����]�S����S�I����I�A��І�݆���A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�!�i����i�_����_�U����U�K����K�A��ц�ކ��A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�}�vtt�������sq���q�i����i�_����_�U����U�K����K�A��ц�ކ��A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�!�f���f�f���f�f���f�f���f�f���f�f���f�f���f�g���g�k���k�q���q�+����y'�����F"�	��J�9f	f�9�����zf����$�f���f�f���f�f���f�f���f�f���f�f���f�f���f�g���g�k���k�q���q�+����y'�����F"�	��J!�Y]	]�XUU�������sRP����N�F����F�<����<�2����2�+����+�!��Ɇ�Ԇ���!���z���z�����������c���c���
���Z��Z��
����������T����������0����			�
�y{	{�vtt�������sn���j�g����g�]����]�S����S�I����I�A��І�݆���A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�}�vtt�������sq���q�i����i�_����_�U����U�K����K�A��ц�ކ��A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"��9f	f�9�����zf����$�f���f�f���f�f���f�f���f�f���f�f���f�f���f�g���g�k���k�q���q�+����y'�����F"�	��J0SUS��Q������������˷QN��������������T8MMLJIHFD?79=9QMˋrnid_QCFJNDML[ňfa\NDHMQVIGJ�w_��OGKOTX\NCGT`[LMJNRV[_bR=E]XSOMPUY]acfT7BUQLKSW[_beffU2@NJGMZ^adff�U%8?>>GMPRTUU�M��0SUS��Q������������̸QN��������������T8MMLJIHFD?79=9QMˋrnid_QCFJODML[ňfa\NDHNRWIGJ�w_��OGKPUY]NCGT`[LMJOSW\`cR=E]XSOMQVZ^bdgU7BUQLKTX\`cfggV2@NJGM[_begg�V%8?>>GMPSTVV�M��0SUS��Q��������������QN��������������T8MMLJIHFD?9=A<QMˋrnid_RHLQWJML[ňfa\PJOU[`OGJ�w_��QMSX^diUCGT`[LMQV\aglpY=E]XSORY_ejnsu\7BUQLL\bhmquvv]2@NJGSfkosvv�]%8?>>LTWZ[\]]�Q��0�"Yf
f�Y"[�
���[i���fg���fh���fj���fl���fn���fq���fs���fv���f{���rd���d�B�Y]	]�XUU�������sRP����N�F����F�<����<�2����2�+����+�!��Ɇ�Ԇ���!���z���z�����������c���c���
���Z��Z��
����������T����������0����			�
%�Y]	]�XUU�������sRP�����N`f|u{�����F\s�����z�����<b�������|����2d����j����+S�������s���!:\wxx�we�����:2<^U]t����B�y{	{�vtt�������sn���j�g����g�]����]�S����S�I����I�A��І�݆���A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�%�y{	{�vtt�������sn����jiq�|������gcz�����������]h������������Sj����q����IY�������z���ADc~�~l����7D;Fc\bz���0B}�vtt�������sq���q�i����i�_����_�U����U�K����K�A��ц�ކ��A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"�%}�vtt�������sq����q����������i�����ƹ�����_�������Ҳ����U����Ӧ����K�������̤��Ap�����������7pip�������0B�9f	f�9�����zf����$�f���f�f���f�f���f�f���f�f���f�f���f�f���f�g���g�k���k�q���q�+����y'�����F"�	��J%�9f	f�9�����zf����$=���fK�	��f�
��f��
��f�
��fK�	��f�=���f������
���
����������T����������0����			�
%�Y]	]�XUU�������sRP����N�F����F�<����<�2����2�+����+�!��Ɇ�Ԇ���!���z���z�����������c���c���
���Z��Z��
����������T����������0����			�
��*���*�$�����$""��������""�j��������""�!G�����!"	"�%�y{	{�vtt�������sn���j�g����g�]����]�S����S�I����I�A��І�݆���A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"���*���*�$�����$""��������""�j��������""�!G�����!"	"�%}�vtt�������sq���q�i����i�_����_�U����U�K����K�A��ц�ކ��A�7��z����z�7�0������0�*��c���c�*�$���Z��Z��$""��������""�j��������""�!G�����!"	"���g���g�k���k�q���q�+����y'�����F"�	��J%�9f	f�9�����zf����$�f���f�f���f�f���f�f���f�f���f�f���f�f���f�g���g�k���k�q���q�+����y'�����F"�	��J���IJJ�99JJG�K��ՙ��ϫKL�I��Ż�w���IJ�J��ɻ�w����H�J��˻�w����J�I��̻�w����I�I��Ι�w���I�H��ϻw����H�J���ϻw����J�I��һw�����I�H���һw����H�H��ջw�����H�I���ջw����I�H��׻w�����H�H���߻w����H�GHH�HH�Ga���aa������登��|���ۻ�w̷����~��߻�wͥ��t�����w�����}��⻙w����}�{����w����{�z���w�����z�{����w����{�z���w�����z�w����w����w�w���w�����w�v����w����v�t���w�����t�q����w����qm�mmb��������������ڶ�����w����������w��������w������ﻙw��������w�������w���������w�������w��������w������w��������w�����w�����������w��������������a��Mgg�fgg�$�i���i%�l���l&�o�����r���r�v���v�z���z������������������������������������������������������a��IJJ�99JJG�K��ՙ��ϫKL�I��Ż�w���IJ�J��ɻ�w����H�J��˻�w����J�I��̻�w����I�I��Ι�w���I�H��ϻw����H�J���ϻw����J�I��һw�����I�H���һw����H�H��ջw�����H�I���ջw����I�H��׻w�����H�H���߻w����H�GHH�HH�G#�IJJ�99JJG�K��ՙ��ϫKL���aa������登��|���ۻ�w̷����~��߻�wͥ��t�����w�����}��⻙w����}�{����w����{�z���w�����z�{����w����{�z���w�����z�w����w����w�w���w�����w�v����w����v�t���w�����t�q����w����qm�mm$��aa������登��|��������������ڶ�����w����������w��������w������ﻙw��������w�������w���������w�������w��������w������w��������w�����w�����������w��������������#�������������ڶ���Mgg�fgg�$�i���i%�l���l&�o�����r���r�v���v�z���z������������������������������������������������������#�Mgg�fgg�$�i���i%�I��Ż�w���IJ�J��ɻ�w����H�J��˻�w����J�I��̻�w����I�I��Ι�w���I�H��ϻw����H�J���ϻw����J�I��һw�����I�H���һw����H�H��ջw�����H�I���ջw����I�H��׻w�����H�H���߻w����H�GHH�HH�G3�IJJ�99JJG�K��ՙ��ϫKL�I��Ż�w���IJ�J��ɻ�w����H�J��˻�w����J�I��̻�w����I�I��Ι�w���I�H��ϻw����H�J���ϻw����J�I��һw�����I�H���һw����H�H��ջw�����H�I���ջw����I�H��׻w�����H�H���߻w����H���ۻ�w̷����~��߻�wͥ��t�����w�����}��⻙w����}�{����w����{�z���w�����z�{����w����{�z���w�����z�w����w����w�w���w�����w�v����w����v�t���w�����t�q����w����qm�mm4��aa������登��|���ۻ�w̷����~��߻�wͥ��t�����w�����}��⻙w����}�{����w����{�z���w�����z�{����w����{�z���w�����z�w����w����w�w���w�����w�v����w����v�t���w�����t�q����w����q����w����������w��������w������ﻙw��������w�������w���������w�������w��������w������w��������w�����w�����������w��������������3�������������ڶ�����w����������w��������w������ﻙw��������w�������w���������w�������w��������w������w��������w�����w�����������w������l���l&�o�����r���r�v���v�z���z������������������������������������������������������3�Mgg�fgg�$�i���i%�l���l&�o�����r���r�v���v�z���z�����������������������������������������������GHH�HH�G�IJJ�G�K������ϫKL�����������IJ������Ż�����H����ù�����J�����������I����������I������������H������⟖����J�������������I�������������H�H����������H�I����������I�H����������H�H����������H�GHH�G�m�mm�����������|�14554310v̷���379:8630-ͥ��t26��T�30,����14�65�1.+����}/2��P�/,)����{,/�00�,)'����z*+�,+��($����{(())((''#����z&%$$##""m����w�w����������w�v����������v�t����������t�q����������qm����������������������ڶ���~����������F�������������B�������������������
���

�n���������������������������������������������������������@�P(ow.png�	

�cgc{c������v����R����4����!�����������
����
��
�
��	��



���
����

	����
���
��

	������������������������������������������������튀�����݀|�������������{��
��y������~|{z��w��
��u����~}{zywv��s��
��q���|{yxvu���o��
��m~�
��k|{yxvusrponlki�������������������������������������������������������������
���������������
����������������
����������������
�����
�����������������������������?�����;��	��e=��	���B���%������
�
�
�
�
�
�
����
���oc.png�	

�f�gg�BA@?><;:936532A����55320?����j200/>����P0.-<����<+�:������.)8��321/.-,*��'7��2��.���)��&5��0/-,+)('��$3��.��*���%��#2��,+*)'&%#��!0��+��'���"��.��)(&%$#! ��,�
��+�
��)(&%$#! �����������������׸���������˸����������������������곳������������ޯ��������������������������������������������������������������������������������
�����
�����������������/.-,*)(&$""! .���~# ,����[*����?)����)�'�����%�� ��#���������!���� ��������������������
��
��
��	�
���
��

	�������������?�����;��	��e=��	���B���%������
�
�
�
�
�
�
����
���oi.png�	

rj�j�k����������������������������������ɽ������������칳�	��������������������������������������������������������������������������������������
�����������������b`_^]\[YXUVUTR_����VUTSR^�����TRQP]����lQOO[����\M�Z����QLX�	��KW��ZTSRQPON��IV��X����L��HT��U�P�NM�K��GS��S����I��EQ��P�M�KJ�H��DP��N���G��BO��MKJIHGFE��AM�
��@MKJIHGFDCBA@?=����u����P
����3

����������	����
��
��������	����
���������
������
�	����
�����
��

		���
��
		�������������?�����;��	��e=��	���B���%������
�
�
�
�
�
�
����
���oo.png�	

@n�n�n��~|{zywvutwqpnm|����pmnmkz�����mlkjy�����jihw����sh�u����igs�	���cr�
��ap�
��_n�
��^m�
��\k�
��Zi�
��Xg�
��Wf�
��Udca`_^\[ZXWVTS�~|{zywvutwqpnm|����pmnmkz�����mlkjy�����jihw����sh�u����igs�	���cr�
��ap�
��_n�
��^m�
��\k�
��Zi�
��Xg�
��Wf�
��Udca`_^\[ZXWVTS�~|{zywvutwqpnm|����pmnmkz�����mlkjy�����jihw����sh�u����igs�	���cr�
��ap�
��_n�
��^m�
��\k�
��Zi�
��Xg�
��Wf�
��Udca`_^\[ZXWVTS�������������?�����;��	��e=��	���B���%������
�
�
�
�
�
�
����
���icons8-pp.svg�	

����vq�q�r
/�����	�������������������������������������������������������������������������������������������������������������������������������./�UIIM	�3GIJJ�LJ�w����J�z������J����骊�J���JJº��̊�J��ZJ�ƣ����J��UJ���ي��J�݆JJ��㡊��J��wJJ�~������J��uJJ����͊�J��������J��������J�w�����3GIJJ�L�UIIM.0�
��Oee�d��Re��eef������ef���߃���߾ef��a��.����eef��`��'����eef����e��ކeef��S�Wkee�f��O�����ef��j����ef�������ef�Oee�d��./�*[	�+^���@�q�������\�������������������������������������������������������������q�������\�+^���@�*[.icons8-excel.svg�	

�����v<vPv`/�U1-+	�3/..�0�-..�DLL�K.�ELL.������nL.��DZ�X.�y���bL.�4�Ȱ..�����iL.�o��@..�����fL.�t��D..�����fL.�<�ѹ..�����iL.��5b�`.�y���bL.������nL.�ELL�-..�DLL�K�3/..�0�U1-+./�U�~�	�f}}�|�|}}�����~}}�����~}}�����뾯�~}���}����׹��~}�����}}����弯�~}}����}}����޻��~}}����}}����޻��~}����}}����弯�~}�ꁞ��}����׹��~}}�����뾯�~}}�����|}}�����f}}�|�U�~�./�U123	�3/112�42�HPP2�IPP2������qP2��H]�[2�|���fP2�8�ɲ22�����mP2�r��D22�����iP2�w��H22�����iP2�@�Һ22�����mP2��8e�c2�|���fP2������qP2�IPP2�HPP�3/112�4�U123./�*[	�+^���@�q�������\�������������������������������������������������������������q�������\�+^���@�*[.icons8-word-2.svg�	

�����
z�z�z�0�
�

��

�!!�

�!!�"�

����K"�L�
��!�
6DD�)"�!��H�
���K"�
�P��o�
a~~�8"�
���αY
a~~�8"�
�S��(
���K"�
K�!h�

6DD�)"�

����K"�

�!!�"�

�!!�

��./�UIFD	�3GGFHGG�H�FGG����HGG�������HGG������Hw�GæV�G�������HV�I��t�G�����HG�z�쑧G������HGÿ��āG������HG��|��[G�����HGv�V��GG�������HGG������HGG�������FGG����3GGFHGG�H�UIFD./�����	�����������������������������������ѩ����������������������ҡ�����������ᾡ��������������������������������������������������������������./�*[	�+^���@�q�������\�������������������������������������������������������������q�������\�+^���@�*[.2icon-group�	

~�2~�2�IJJ�G�IJJ��������KLIJJ�����������IJK������ϫ���n��HI��������n��o�JJ����������oφ�IJ��������φυ�II��������υЇ�HI��������Ї҆�JH��������҆Շ�IJ���������Շ؅�HI���������؅ك�HH���������كځ�IH���������ځ��HI�����������}�HH����������}�HHGH����������HHGGHH�G�����þ�����|���þ�����­������������­�����t�������̷������~������ͥ������}�������������{}������������z{������������{z������������z{������������wz������������ww������������vw������������tv������������qt�����������pmmq����������pmmm
m�����������������ڶ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Mgg�$�Mg����i%Mg��	��l&i����l���ro���vr���zv���z�����������������������������������
���ē�����ē����2
icon-text�	

F��2��2���IJJ�G�K������ϫKL�I��������IJ�J���������H�Jۢ��������J�Iܿ�������I�Iܦ��������I�H���������H�Jޫ��������J�I���������I�H߮��������H�H����������H�I౯�������I�H����������H�H����������H�GHH�G!�����������|�������̷����~������ͥ��t��ż������}����������}�{�˼������{�z����������z�{���̼�ż�{�z����������z�w����������w�w����������w�v����������v�t����������t�q����������qm"������������ڶ���������������������������������������������������������������������������������������������������������������������������������������!�Mgg�$�i���i%�l���l&�o�����r���r�v���v�z���z���������������������������������������������������!lib/img/src/icons-small.psd000064400000630665147361034410011631 0ustar008BPS@{�8BIMZ%G8BIM%��}�Ǿ	pv���N8BIM$P�<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        ">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:xmp="http://ns.adobe.com/xap/1.0/">
         <xmp:CreatorTool>Adobe Photoshop CS5 Macintosh</xmp:CreatorTool>
         <xmp:CreateDate>2011-01-20T17:47+03:00</xmp:CreateDate>
         <xmp:ModifyDate>2011-02-04T15:33:45+03:00</xmp:ModifyDate>
         <xmp:MetadataDate>2011-02-04T15:33:45+03:00</xmp:MetadataDate>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <dc:format>application/vnd.adobe.photoshop</dc:format>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
         <photoshop:ColorMode>3</photoshop:ColorMode>
         <photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
         <photoshop:DocumentAncestors>
            <rdf:Bag>
               <rdf:li>xmp.did:018011740720681188E6C239B0A8A931</rdf:li>
            </rdf:Bag>
         </photoshop:DocumentAncestors>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
            xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
         <xmpMM:InstanceID>xmp.iid:C7C4172C0E206811A3A3FC4A228C975D</xmpMM:InstanceID>
         <xmpMM:DocumentID>xmp.did:018011740720681188E6C239B0A8A931</xmpMM:DocumentID>
         <xmpMM:OriginalDocumentID>xmp.did:018011740720681188E6C239B0A8A931</xmpMM:OriginalDocumentID>
         <xmpMM:History>
            <rdf:Seq>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>created</stEvt:action>
                  <stEvt:instanceID>xmp.iid:018011740720681188E6C239B0A8A931</stEvt:instanceID>
                  <stEvt:when>2011-01-20T17:47+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>converted</stEvt:action>
                  <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:028011740720681188E6C239B0A8A931</stEvt:instanceID>
                  <stEvt:when>2011-02-03T20:28:49+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:038011740720681188E6C239B0A8A931</stEvt:instanceID>
                  <stEvt:when>2011-02-03T20:44:05+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:048011740720681188E6C239B0A8A931</stEvt:instanceID>
                  <stEvt:when>2011-02-03T20:47:19+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0480117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T14:56:04+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0580117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T14:56:54+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0680117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T14:57:23+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0780117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T14:58:19+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0880117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:04:56+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0980117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:06:13+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0A80117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:19:11+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:C4C4172C0E206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:21+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:C5C4172C0E206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:23:53+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:C6C4172C0E206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:32:31+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:C7C4172C0E206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:33:45+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
            </rdf:Seq>
         </xmpMM:History>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                            
<?xpacket end="w"?>8BIM:�printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitboolprinterNameTEXT8BIM;�printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd  doub@o�Grn doub@o�Bl  doub@o�BrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R��
vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIM�HNHN8BIM&?�8BIM�
Transparency8BIM
Transparency8BIM���d8BIM5��d8BIM8BIM�
������8BIM
8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM>8BIM08BIM-8BIM@@X8BIM6�nullVrsnlongenabbool	numBeforelongnumAfterlongSpcnlong
minOpacitylong
maxOpacitylong2BlnMlong8BIM3null
Vrsnlong	frameStepObjcnull	numeratorlongdenominatorlongX	frameRatedoub@>timeObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongpdenominatorlongX
workInTimeObjcnull	numeratorlongdenominatorlongXworkOutTimeObjcnull	numeratorlongpdenominatorlongXLCntlongglobalTrackListVlLs	hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIM�nullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlong@RghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong@RghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIMHHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m��8BIM,8BIM������Adobe_CM��Adobed����			



���"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�~�ҿ����~o�:������ޯ�?��ԕ��s��`�v�ٍ���
��SW�Jϥ����$���sr~��-�?����R^O�'�w����~�z����X����vϥ��K3��?�I���}����_�R{����c��_u�;�7�A���=c���7?F�?����D��wП�O�?�RS���,�����M�_�"���gw����Cƞ<�ޒ��p�����������G�S�	���_�/�	+���~����"J,�c��߯��p������-�G�+)�?��w������o�=��e}	��m9��$���#���>����=�X����v�?�{�%%��n���y_���o���	#ŏ���З��v?�d_��T�I%?��T�I%?��8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM".MM*bj(1r2��i��
��'
��'Adobe Photoshop CS5 Macintosh2011:02:04 15:33:45���@&(.HH8BIM��mopt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4TargetSettingsMttCObjc
NativeQuadBl  long�Grn long�Rd  long�Trnsbool
fileFormatenum
FileFormatPNG24
interlacedboolnoMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM��msetnullHTMLBackgroundSettingsObjcnullBackgroundColorBluelong�BackgroundColorGreenlong�BackgroundColorRedlong�BackgroundColorStatelongBackgroundImagePathTEXTUseImageAsBackgroundboolHTMLSettingsObjcnullAlwaysAddAltAttributebool
AttributeCaselongCloseAllTagsboolEncodinglongFileSavingSettingsObjcnull
CopyBackgroundboolDuplicateFileNameBehaviorlongHtmlFileNameComponentsVlLslonglonglonglonglonglongImageSubfolderNameTEXTimagesNameCompatibilityObjcnull
NameCompatMacboolNameCompatUNIXboolNameCompatWindowsboolOutputMultipleFilesboolSavingFileNameComponentsVlLs	longlonglonglonglonglonglonglonglongSliceFileNameComponentsVlLslonglonglonglonglonglongUseImageSubfolderboolUseLongExtensionsboolGoLiveCompatibleboolImageMapLocationlongImageMapTypelongIncludeCommentsboolIncludeZeroMarginsboolIndentlong����LineEndingslongOutputXHTMLboolQuoteAllAttributesboolSpacersEmptyCellslongSpacersHorizontallongSpacersVerticallongStylesFormatlong
TDWidthHeightlongTagCaselongUseCSSboolUseLongHTMLExtensionboolMetadataOutputSettingsObjcnullAddCustomIRboolAddEXIFboolAddXMPboolAddXMPSourceFileURIboolColorPolicylongMetadataPolicylongWriteMinimalXMPboolWriteXMPToSidecarFilesboolVersionlong8BIM�ms4w8BIM�maniIRFR8BIMAnDs�nullAFStlongFrInVlLsObjcnullFrIDlonge>wFrDllong�FrGAdoub@>FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslonge>wLCntlong8BIMRoll8BIM�mfriD�8���o��5U~[8BIMnorm�
<(��������������������Layer 08BIMluniLayer 08BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�]{�8BIMfxrp?�@a�����J���8BIMnorm�
8(��������������������application8BIMluniapplication8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�o��8BIMfxrp�G����Y���8BIMnorm�(��������������������file_extension_exe8BIMluni(file_extension_exe8BIMlnsrrend8BIMlyid	8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R��ܩ�8BIMPlLdxplcL$c483e490-7049-1173-895f-b3229314356c@b�@0@b�@0@d�@d�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c483e490-7049-1173-895f-b3229314356cplacedTEXT%d6d3c99b-70e6-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@b�doub@0doub@b�doub@0doub@d�doubdoub@d�nonAffineTransformVlLsdoubdoub@b�doub@0doub@b�doub@0doub@d�doubdoub@d�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@b�����Y���8BIMnorm�(��������������������file_extension_txt8BIMluni(file_extension_txt8BIMlnsrrend8BIMlyid
8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R��ɌX8BIMPlLdxplcL$c5d8d499-7049-1173-895f-b3229314356c@i @0@i @0@k @k warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c5d8d499-7049-1173-895f-b3229314356cplacedTEXT%eddf1ce2-70e4-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@i doub@0doub@i doub@0doub@k doubdoub@k nonAffineTransformVlLsdoubdoub@i doub@0doub@i doub@0doub@k doubdoub@k warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@i _o��Y���8BIMnorm�(��������������������file_extension_mp48BIMluni(file_extension_mp48BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R����8BIMPlLdxplcL$14ebc9c7-704b-1173-895f-b3229314356c��@u�@.@u�@.@v���@v�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%14ebc9c7-704b-1173-895f-b3229314356cplacedTEXT%40b0444b-70e9-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@u�doub@.doub@u�doub@.doub@v�doub��doub@v�nonAffineTransformVlLsdoub��doub@u�doub@.doub@u�doub@.doub@v�doub��doub@v�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp��@u�^n��Y���8BIMnorm�
(��������������������file_extension_mpeg8BIMluni,file_extension_mpeg8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R���8BIMPlLdxplcL$29a1d44e-704b-1173-895f-b3229314356c@u�@0@u�@0@v�@v�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%29a1d44e-704b-1173-895f-b3229314356cplacedTEXT%394b586f-70e5-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@u�doub@0doub@u�doub@0doub@v�doubdoub@v�nonAffineTransformVlLsdoubdoub@u�doub@0doub@u�doub@0doub@v�doubdoub@v�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@u�����Y���8BIMnorm�(��������������������file_extension_pdf8BIMluni(file_extension_pdf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R���a8BIMPlLdxplcL$3b187f9a-704b-1173-895f-b3229314356c��@|0@.@|0@.@}0��@}0warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%3b187f9a-704b-1173-895f-b3229314356cplacedTEXT%9658e37c-70e5-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@|0doub@.doub@|0doub@.doub@}0doub��doub@}0nonAffineTransformVlLsdoub��doub@|0doub@.doub@|0doub@.doub@}0doub��doub@}0warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp��@|0����Y���8BIMnorm�(��������������������file_extension_rtf8BIMluni(file_extension_rtf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R���8BIMPlLdxplcL$3d2e709b-704b-1173-895f-b3229314356c@y@0@y@0@z@zwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%3d2e709b-704b-1173-895f-b3229314356cplacedTEXT%9658e37f-70e5-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ydoub@0doub@ydoub@0doub@zdoubdoub@znonAffineTransformVlLsdoubdoub@ydoub@0doub@ydoub@0doub@zdoubdoub@zwarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@y����Y���8BIMnorm�(��������������������file_extension_ace8BIMluni(file_extension_ace8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R���-�8BIMPlLdxplcL$919ca3ae-704b-1173-895f-b3229314356c@��@0@��@0@�@�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%919ca3ae-704b-1173-895f-b3229314356cplacedTEXT%40b04448-70e9-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@��doub@0doub@��doub@0doub@�doubdoub@�nonAffineTransformVlLsdoubdoub@��doub@0doub@��doub@0doub@�doubdoub@�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@������Y���8BIMnorm�(��������������������file_extension_ptb8BIMluni(file_extension_ptb8BIMlnsrrend8BIMlyid'8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�S��q8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@�P@0@�P@0@��@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%b153c44f-70e8-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@�Pdoub@0doub@�Pdoub@0doub@��doubdoub@��nonAffineTransformVlLsdoubdoub@�Pdoub@0doub@�Pdoub@0doub@��doubdoub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@�P����Y���8BIMnorm�(��������������������file_extension_ptb copy8BIMluni4file_extension_ptb copy8BIMlnsrrend8BIMlyid(8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�a*��8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@��@0@��@0@�h@�hwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%eff5c546-70e8-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@��doub@0doub@��doub@0doub@�hdoubdoub@�hnonAffineTransformVlLsdoubdoub@��doub@0doub@��doub@0doub@�hdoubdoub@�hwarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@������Y���8BIMnorm�(��������������������file_extension_ptb copy 28BIMluni8file_extension_ptb copy 28BIMlnsrrend8BIMlyid)8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�dL��8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@�x@0@�x@0@��@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%12d74bf7-70e9-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@�xdoub@0doub@�xdoub@0doub@��doubdoub@��nonAffineTransformVlLsdoubdoub@�xdoub@0doub@�xdoub@0doub@��doubdoub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@�x 0��Y���8BIMnorm�(��������������������file_extension_ptb copy 38BIMluni8file_extension_ptb copy 38BIMlnsrrend8BIMlyid*8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�kaq�8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@�@0@�@0@��@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%23f46844-70e9-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@�doub@0doub@�doub@0doub@��doubdoub@��nonAffineTransformVlLsdoubdoub@�doub@0doub@�doub@0doub@��doubdoub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@�����Y���8BIMnorm�(��������������������file_extension_ptb copy 48BIMluni8file_extension_ptb copy 48BIMlnsrrend8BIMlyid+8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�qA��8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@� @0@� @0@��@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%2765d4fa-70e9-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@� doub@0doub@� doub@0doub@��doubdoub@��nonAffineTransformVlLsdoubdoub@� doub@0doub@� doub@0doub@��doubdoub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@� ����Y���8BIMnorm�(��������������������file_extension_ptb copy 58BIMluni8file_extension_ptb copy 58BIMlnsrrend8BIMlyid,8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�vG�8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@��@0@��@0@�8@�8warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%3655fd43-70e9-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@��doub@0doub@��doub@0doub@�8doubdoub@�8nonAffineTransformVlLsdoubdoub@��doub@0doub@��doub@0doub@�8doubdoub@�8warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@����Y���8BIMnorm�(��������������������file_extension_chm8BIMluni(file_extension_chm8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�t��8BIMPlLdxplcL$9e507f6c-704b-1173-895f-b3229314356c@0@0@0@0warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%9e507f6c-704b-1173-895f-b3229314356cplacedTEXT%de4c467a-704b-1173-895f-b3229314356cPgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoubdoub@0doubdoub@0doub@0doubdoub@0nonAffineTransformVlLsdoubdoubdoub@0doubdoub@0doub@0doubdoub@0warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp����Y���8BIMnorm�(��������������������file_extension_bin8BIMluni(file_extension_bin8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R��38BIMPlLdxplcL$e17a80c3-704b-1173-895f-b3229314356c��@i @.@i @.@k ��@k warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%e17a80c3-704b-1173-895f-b3229314356cplacedTEXT%d7abbc97-70e5-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@i doub@.doub@i doub@.doub@k doub��doub@k nonAffineTransformVlLsdoub��doub@i doub@.doub@i doub@.doub@k doub��doub@k warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp��@i Rb��Y���8BIMnorm�(��������������������file_extension_bat copy 38BIMluni8file_extension_bat copy 38BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R��Q�8BIMPlLdxplcL$a5667c38-70e6-1173-9870-930db18117f2@��@0@��@0@�@�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%a5667c38-70e6-1173-9870-930db18117f2placedTEXT%9f59f49e-70e7-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@��doub@0doub@��doub@0doub@�doubdoub@�nonAffineTransformVlLsdoubdoub@��doub@0doub@��doub@0doub@�doubdoub@�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@������Y���8BIMnorm�(��������������������file_extension_bin8BIMluni(file_extension_bin8BIMlnsrrend8BIMlyid#8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R���8BIMPlLdxplcL$d5cca80a-70e7-1173-9870-930db18117f2��@�@@.@�@@.@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%d5cca80a-70e7-1173-9870-930db18117f2placedTEXT%064310a5-70e8-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�@doub@.doub@�@doub@.doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@�@doub@.doub@�@doub@.doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp��@�@^n��Y���8BIMnorm�(��������������������file_extension_html8BIMluni,file_extension_html8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R����o8BIMPlLdxplcL$cc65cd91-70e6-1173-9870-930db18117f2@��@0@��@0@�p@�pwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%cc65cd91-70e6-1173-9870-930db18117f2placedTEXT%2dda0a16-70e7-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@��doub@0doub@��doub@0doub@�pdoubdoub@�pnonAffineTransformVlLsdoubdoub@��doub@0doub@��doub@0doub@�pdoubdoub@�pwarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@�����Y���8BIMnorm�(��������������������file_extension_doc8BIMluni(file_extension_doc8BIMlnsrrend8BIMlyid
8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R��R�78BIMPlLdxplcL$b8532814-704a-1173-895f-b3229314356c��@P@.@P@.@�(��@�(warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b8532814-704a-1173-895f-b3229314356cplacedTEXT%b5ce6370-70e5-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@Pdoub@.doub@Pdoub@.doub@�(doub��doub@�(nonAffineTransformVlLsdoub��doub@Pdoub@.doub@Pdoub@.doub@�(doub��doub@�(warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp��@P����Y���8BIMnorm�(��������������������file_extension_flv8BIMluni(file_extension_flv8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�6�h
8BIMPlLdxplcL$c718de88-704a-1173-895f-b3229314356c��@��@.@��@.@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c718de88-704a-1173-895f-b3229314356cplacedTEXT%a483b5cc-70e8-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@��doub@.doub@��doub@.doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@��doub@.doub@��doub@.doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp��@��M]��Y���8BIMnorm�(��������������������file_extension_gz8BIMluni(file_extension_gz8BIMlnsrrend8BIMlyid%8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R���	8BIMPlLdxplcL$4e0ca1c0-70e8-1173-9870-930db18117f2@�4@0@�4@0@�t@�twarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%4e0ca1c0-70e8-1173-9870-930db18117f2placedTEXT%5dbedc4f-70e8-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@�4doub@0doub@�4doub@0doub@�tdoubdoub@�tnonAffineTransformVlLsdoubdoub@�4doub@0doub@�4doub@0doub@�tdoubdoub@�twarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@�4~���Y���8BIMnorm�(��������������������file_extension_hqx8BIMluni(file_extension_hqx8BIMlnsrrend8BIMlyid&8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�1�J8BIMPlLdxplcL$9825338c-70e8-1173-9870-930db18117f2@��@0@��@0@�8@�8warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%9825338c-70e8-1173-9870-930db18117f2placedTEXT%99e5dd11-70e8-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@��doub@0doub@��doub@0doub@�8doubdoub@�8nonAffineTransformVlLsdoubdoub@��doub@0doub@��doub@0doub@�8doubdoub@�8warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@��+��Y���8BIMnorm�(��������������������file_extension_zip8BIMluni(file_extension_zip8BIMlnsrrend8BIMlyid$8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�
��8BIMPlLdxplcL$21f17c42-70e8-1173-9870-930db18117f2@�l@0@�l@0@��@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%21f17c42-70e8-1173-9870-930db18117f2placedTEXT%2f2545e7-70e8-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@�ldoub@0doub@�ldoub@0doub@��doubdoub@��nonAffineTransformVlLsdoubdoub@�ldoub@0doub@�ldoub@0doub@��doubdoub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@�l'7��Y���8BIMnorm�(��������������������file_extension_htm8BIMluni(file_extension_htm8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R��q28BIMPlLdxplcL$d6c29263-704a-1173-895f-b3229314356c@�8@0@�8@0@��@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%d6c29263-704a-1173-895f-b3229314356cplacedTEXT%d508738d-70e5-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@�8doub@0doub@�8doub@0doub@��doubdoub@��nonAffineTransformVlLsdoubdoub@�8doub@0doub@�8doub@0doub@��doubdoub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@�8���Y���8BIMnorm�(��������������������file_extension_jpeg8BIMluni,file_extension_jpeg8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R���8BIMPlLdxplcL$e6d2e6e0-704a-1173-895f-b3229314356c@o`@0@o`@0@p�@p�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%e6d2e6e0-704a-1173-895f-b3229314356cplacedTEXT%6dccac23-70e9-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@o`doub@0doub@o`doub@0doub@p�doubdoub@p�nonAffineTransformVlLsdoubdoub@o`doub@0doub@o`doub@0doub@p�doubdoub@p�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@o`-=��Y���8BIMnorm�(��������������������file_extension_m4b8BIMluni(file_extension_m4b8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R��r<�8BIMPlLdxplcL$fdefcf69-704a-1173-895f-b3229314356c@r�@0@r�@0@s�@s�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%fdefcf69-704a-1173-895f-b3229314356cplacedTEXT%049e389e-70e5-1173-9870-930db18117f2PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@r�doub@0doub@r�doub@0doub@s�doubdoub@s�nonAffineTransformVlLsdoubdoub@r�doub@0doub@r�doub@0doub@s�doubdoub@s�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz  ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@r�fr��~���8BIMnorm�4(��������������������
dir-opened8BIMluni
dir-opened8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�h�^�8BIMfxrp�{�3A������8BIMnorm� (��������������������dir8BIMlunidir8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�:��8BIMfxrp�D��Y���8BIMnorm�
<(��������������������Layer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�R�'���8BIMfxrp�V�







		
		




		

		



	

	�����������������������������#�3#����������������������#�3,����Z���:������������������
��{<3$���,�������
�!���������!�����������������M����M����2332M����M�2332�������������������������������������������������������3����#3"�"3#������������������������������������������j�
���E���#�3����������������������������������#�3#�����������������������j����s�z�v����3#�3"�������������F��F�F��F�����������������k��kk��k�3������3��1�31�����������������������������3&���!�����#�3#�������#������������33�4����s�������`����������3D�3�3���3��3��3��3��������������������������������� �3"��������������������0�����5�� ���3��������3 �������������������������������#33������#�3#�����������������������3����3������������#�3 3������������������������)������3��3�������3#�3"����������������������������������#�30�����������������������3�3��3�������#�3�3��������������������������������#�30����x���C������������_�������:������{���������?������K����������������������������������������������������������L������L�t��l��1sws1����
�����
������>���\���>�3���5�����z������������������������������������Th�fhT�����������������������������x��x�w����m����������������z�x��z�	


	

	
				


				


	
		
	

			
	




	��������������������������������������˥������������������������������������������������������������������������������������������������������PO�K�LOPN�������OJ���y~�~z�KI��҅��������KJ��Ԋ��������KK������������KK�������������KK������}~����KK�������������KK������������KK��������KJ�rv�xvr�JI�IM�M�LI�HILL�����9?IC�
BA@I[o��B�
Cr�qaSOC�
C]NKFB?@E�
E@>??B=7E�EB72
�E�E�E�E�E�
E>BAABD�
ECi||iC>BAABDCXPPXCCi||iCDDAADDCXPPXC�E�D�A�D��E������XS�SXX�XWY[[XVUUWWX�X�Z D]q��T�X�YV[6[u���UUY�Z�\Ip�~bSY�Z�\Y\Yplm]F]Y\�\�]U]v}dI]�\�_\`eda__`^\_�`�cC\p��]�`�a_d5[t���^^a�b�dHp�~bSb�b�dbeXolm]Dfbd�e�fS\u}dHg�e�gfhk�j�khfg�^j`�`j^�����������������������������������������������������������ʥ�����������������������������������A������	���D�������
����?����������������������8����������������������������-$�"$�$���������������������
���$�������p
�"���������������������������������������������������������� �������� �$��$�($ � $(������������������������������������������΁h�������������������������)����	��������F���/������u���q��������s&,	���������������������ٻ�������
���RU����������
\��š�J�{�㸝{��ir��ƞ��pg�m6���ʼ���<7�BWȵ�����e3&N{j��������@(�!M�������j0'm�Sg]����0,!i_HH��Z�F
 (9??@z�RwWHZ,131*!h���L#&&!H��`�

k.�� ������������������������������������������ʤ���������������������������� >="�����~=p%CM	��|���H)s��6��6���K/b���6?7�?MST+U��5���K Y"��[������>�:V2=<�����9;;(}�������������;I8
�������	��������A�4�I����"�V�������������	�	������
�����������
����������
����������'���${���������԰�����������ߒ����
�������������������������������������������г���������������������o�R���R��R���R���c�c�c���R���R�h�h��h�h�R���R���m�m�m���R���R��r�r�r�rrR���R�wR���d�RE����������������������������������������ʤ�������������������������������
���������������������������������������������������������ǭ�������������������������������������������������������������������������������������������������������	���������������������������������ݯ������������������������������������������������կ����������vz}����
�����������p������̾p��������ʾp�������̾p�
�����������p�������t{���p��������pƾp�p�����p����	���p���wpw�����������������������������������������Ψ���������������������������	���������	�����=��������qeK�����������������
{����������r�����Ī�M��������������������������������������������������ͨ��������������������W������������
�I������
����������
���5/l�
����
���3���������B�������
������L�	�
����������������������������������������ʤ�����������������������
�$ ��'5>����
���(*��<����
�"k�1t8�������,t�5�����
���$�2y�9?B����
��!�~�6�;���%/1232��?����
��������5=@����������������������������������������������������������������������������������������
����������������������������������������������������������������������������ݥo������f(����$���`�����j���C���L��}���ƅ��QA���U�����������
XyvjO:�l�÷��U �T���ޙ�L�s���薚U�l������S�g����ՏY�P���Ֆ�K�/\��ƚ�X/�5TnkoR4��*-*����;�����;������Ι�o��o=o��s�7�����W������ʬ������������˖�������B��������v��������������������[Z�dZ[X�����������������������������ÿ��������ʹ�������������������ݼ��ø����
	
	


		
		



	
		


				
	


	
	
	


	


	
	
	
	




	�������������������������������������̧������������������������������������������������������������������������������������������������������������������������������������������ʾ�����������خ�����������ٹ������������ݟ������������߿���������������e���������	��?��������������������������������������}������������twwz{�
wzv~����y�
z��ø���z�
z�������|�
{��~|{r`}�}xkU�}�}�}�}�}�
}|uxxu|�
}z��èz|uxxu|z����zz��èz{����{z����z5|{{|5{����{�5|{{|5�����XYS�SYX�YXXTRQPPRVWY�Y�T������Q�Y�ZUS������PUZ�[�T������R�[�]YU������UY]�]�W������X�]�_\[WSQPQUZ[_�a�\������Y�a�b_\������Y^b�c�[������Z�c�eb^������_be�f�a������a�f�hggfdccdfggh�bk`�`kb����������������������������������������������������������̧�����������������dz�������ߑ����������K�����
��¬�L������������H��f�������������Ƅ�����ۑ���F��ޚ����
���������։�����������������������~�~�����~�������q��x�~����r��܁�~�����rp���~������~������~�~�����~�~����~�~����~�~������~�~������~�����������|���|�����������������������������������������ςg����������
����������������"����	���������C���*������t���o���������^ ��������ۧ����Ժ���	����ڭ�˵����������UX���������~|�~��
|~���ګ�|�|��������Ā|���������ŀ������ެ��{��������Ħ���{���������计�����������ȥ��ɂ������夣�����²���ղ�����s�������Ͻ���v����������䲃V��������忀V�
V������Ț�V��u���r�����������������������������������������˧�������������������������u��w��������y��h�������w�r�����v����~�j�����v|w�}���|�k����u����t�y��������s������e���������{��������������y���y�z|�|�{�����u�������ߒ��������w���U�������n�
{���������p�
x������n�
u�����!p�
w������*�
���d ��c�0�~���m(���$n�5����w(��%x�6x���%��#� ��3@�~��-�,��+�4�5116�����������������������������������ѵ���������������������ki���k��k���k��ρ�������k���k����������k���k��ԋ�������k���k����������k���k��k���y�k[���������������������������������������˧�����������;1�������>c1�����+Q�����F������O>0�������(?+%�������E=Q����������2�����%3x���������+n£������������������������������������������/��������C��������L,����������������� ���������c������
���AM�	��������c��������-y�������b5���������l?�������������������������������������������������ֱ���������������
�����wxxz��������r��{͈�����rٲ��z͈����rӛ��{͈�
������x|}|��������������͈��������͈�͈�������������	��������������������������������������������������ܵ����������(AZ��������&���������
�@�����nQ����
�Y���~�Øt����
��x��ye��ȑ�������������	�����ѵ��������	�����߹��������ռԴ�����������ɣ������������������������������������������ͨ�������������������YYXZ^dio�����[��l����
�]�]�s�]nl����
��[�b�d�_�j����
��Y�c�k��f����
��X�b�jc�e�������X�Z�`���e���[��h���������fehi���������������������������������������˧���������������������������
�uyu��z������
�u��z{������	��v��~���������{�؁�����	��v�}�Ղ���������u��Ȁ�Ӄ���z������Ӈ���������������������������������������������������������׳����������begfehmpp�����b�����q�����b�ghhlnk�p�����b�o��syw�q����b�s��qz|�p������b�z��}�o������a���ʄ�o������a쌋�����o���d���q������z�oqt�����ݥo������f(����$���`�����j���C���L��}���ƅ��QA���U�����������X�����s�j�����ēu������ɹ��������ǒ�����ߓ������Ɩ������Ծ��^�����Õe�g�����h��4[Z[4����;�����;������К�k��o5o��o�_�����o�~��~�~��~��������ӝ��˪�q��ӣ�����'��Ŝ�����P��Õ��������ǒ�{������x�=/2�<2/=�����������������������������WLAED�Vs�֨jA�C��w��D�A��A�D�vvhD�VdwydME�UDADE�	

	


		
	




			


					
			
	

			


	




	����������������������������������̧����������������������������������������������������������������������������������������������������������������������������&+]���	��&)����x�����U���(������w(0(w������'-&�������"*������������luvwz��zul����0=�@BDB@=0����%�(%�������������������t�����
��������
�����٥�
����ǿ����
�������������r�����������
��������
����۪����������ܫ���۫����������ܬI����I�����I����I������[T�T[[�[YWOLKKLOWY[�Z�N��N�Z�]WM������MW]�]�M������M�]�_ZO����PZ_�a�T������U�a�b^YNGFFGNY^b�c�V��V�c�e`V������V`e�f�V������V�f�gbY����Ybg�i�^������_�i�ljhc�`achjl�bn`�`nb�������������������������������������������������������̨�����������������0���������0�5�������YlhpU�����
���DsivO5�������4bgkhg:3������\I]\[\^S9������/PQPpPQT?4���1A�HGHHIH:�����*7�9:;�����������������������������������������ϭ������������������������������������������������������������������������������������������������������������������Ѓi����������������!O������gC����	���������E���,������}���u�����������5������"#����#
���	# W��V%������X*hh3��������������
��XG2yʺ���쫰���@Aκ��ù��,�f-����QG/*��w����3"X���x���������������s���#��F��������ݽ����L�>����մ������Y�:pyIͣ������[�Z�u������A�|�
u������;��|�����������������������������������������������˧�������������������������Ǹ��������޻�ϲ���������׼��������޲����ȩ��а����޳��������������������������Ҳ��������ʻ����������������ó��������������������������������������
�����������
����������
������
��������(�
����9��9�2����H*��(I�7���gT*���(Vo8����#^^!�^c6^�����,l)��(n7�5,,6�����������������������������������ѵ������������������������������������������������������������������������ǣ��������������������������������������������������˧�����������!������{+Z�����B�����{5�������A*�������,��������,+=���������������
e��������aţ��������������������������������������>��������R
��������\>��������0���������1�������p)������
���P[�',.��������2p��,.������>��������pF���������tM������������������������������������������������ֱ����������������
����1


:�����������ٝ����
oIIpٝ����[\ٝ�
�����f
q��������������ٝ��������ٝ�ٝ�������������	��������������������������������������������������ݹ����������%����������������
���������
������߿����
��������������������	��=$�Fcj�����������`D�����M�gC:�������	�����������������������������������������̧��������������������Ĩ������������������
�Ī۵�����
������������
����������������������������������������������������������������������������������������������˧��������������������������������
���������
���2�;�������?�
����������I��������mNR
Pw����W^�����������Ƿ�����������������������������������������ݹ��������L&-/�������������.������#*-)�-�����%��,61�-�����#�� .0�-�������%��+�+�������,����-�+�������/.**./�+���	��������-������A)�*+-.�����ݥo������f(����$���`�����j���C���L��}���ƅ��QA���U������������;1�'wSE4#�b
����.I���������|�������	
����e���������;�����;������ҝ�k��o5o��k��ƴ@ �Ο�,`XTe1�5qk���ls4�?c&#sG�1G
X8�'D&#Q/�&: C,�-,+/���
������������������������������7��r-��M!@�����c�%!��������������������$�3$






��������"&�'&"��IL�MLI�
�
������������������������������	�	�	�	�





���������Ђ�ؒ���؀~ধ�����~|�|{������{{����{{����{z����zz������zz������z{�{~�~s~{�z{~s�



���������������������������������������������������������������������������������������������������#�3#��������r���h�		���m�	�?��
5�����������������������%�%'%�%��2�2>A>2�2��>�8@C@8�>��L�������L��`YWWWWWY`��uttsssttu��������������������۷���vzzzv�u����ـ�����w�����؆����՚vvՁ�Ԋ��������с�ы�����هρ�Ύ��������΁�˓��������ˁ�ʚ��������ʁ�Ǡ��������ǁ�ħ��������ā�İ��������Ă�ż��������Ńz�����������z����������������������絵����������䵷���������䷶������ͯ������������������������������������������������������������������������������������������������򸪸������������������������������������#�3#a_^^^^^]^_[[__���������[[_^�[^_^[�Q��[_^�befeb�S���_^�dfgfd�oQQ�^^�eb`_`t����^_�d����\��a�^_�ha^[[][^g�__�j�b�����i�__�ngecc`_dn�__�q���h���q�__�tjefjijmt�_`�x�����q�y�``��{xxx{}~��`Za`^^^^^__`aZxvuuuuuuuwsswv���������sswu�tvvvs�j��swv�x{|{x�l���wv�{}}|z��kk�vv�|zxwx�����vv�{����u��y�vv�~yvssusv}�vw���z������ww��}{zzwwz��ww�����~�����ww��{|~����ww�����������wx�����������xoxwvvuvvwwwxo���������������������������������~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������"�3"-*******))$$**~~|z�$$**x&***&x��$**t+///+u ���**n,.(,.FC# j*+h-&�[)./0-h++b.%��\+01.b++]0&���\,10]+,W0&����e00W,,Q1'����;21Q,,L3(���:243L,-E3)��:2443E--@41i=35554@--:664567776:-*-----------*wtttttttturrut�������ɳrrut�ruuur�j��rut�{|�m���ut��~����pm�tt„���������tt�����������tt�����������tt�����������tt������Ŝ���tt�����Ɵ����tt����ʣ�����tt�����������tu�����������uluuuuuuuuuuul�������������������������������������������������������׾�����������������������������������������������������������������������������������������������������������������������������������������#�3#,)((((''')#$))��������[#$)(�#&'&#|�P$)({(+,+(x��S))t&#"%%p;p()m!�ԏ;2adhl))g%q�����m"f)*a'+|��`*+Z!�������-Y*+R����R++M �%(%� M+,F#�!#!�#F,,@(�������(@,-=3+'''''+3=-*-,+*****+,-*gdcccccccdaaee���������aaed�beeeb�W��aed�ilmli�X���ed�jiijj�xXW�dd�k��||����cd�q����Ɵn�dd�vojfy��p�dd�u�������}�dd�x��r�q�w�dd�}�x���x�}�dd���|���|���dd�����������df�����������f_fdcccccccdf_����������������������׳�������Գ��������ֵ�뺺����ů�괴��������贴�����Ծ贴�������紴���������崴�������䴴��������㴴��������ᴴ���������വ����������㵨�������������������������������������"�3"����������������������������������������������������������������������������������������������������������������������������������������������������������������������������)#�����$��F@
��$)#��"()%��*.)�^)..*�y04-��,340yr68/Ξf031qj;9��W����eb>C�uHU��^V��sBFHGDDZM��HMNNNNNTMRTWXXXXXXO��������������$"/*�
����%*%��JD	��+0*��)/1,��150�d0551�|7;4��3:;7|u>@7Тl8;:tlEC��_����heFL�{O]��aZ��zKOQPMM]Q��RWXXXXXWQ]^bbbbbbcS�������������������������#�3#,)((((((()$$*)|{{{{zxvR$$*)t%(((%q�G$*)n(***(k��L**g"#f:c)*`���<a_^_*+X���%&&&Z++S$T+,M������M,,F
 F,,@����� @,-:!	":-.4������!4..-%!"&-.*.-,+++,,,-.*vsrrrrrrrtpptt��������ppts�qtttq�g��pts�wzzzw�h���ts�xvtvx��hg�ss�v���x�����ss�y���{�����ss��xvz~~���ss����~������ss�����������ss�����������st�����������tt�����������tu�����������umutssssssstum����������������������齽�����������罿���������忽������ѹ������������������������������������������������������뿿�������迿����������俿���������������������������������������������������������#�3#+'%%%##$%'""('��������n""(%�"$����c"(&�+/#�����h(&�15)���E�&&�58+��H����&'�:<1��,785�&'�>@4��4@A>�''�CD7��6DFC�'({HE5��3EJH{((uLD���DMMu((pOF����GPPp()jVRJFFJRVVj)*h_^]\\]^__h*(+)))))))))+(a][[[ZZZ[]YY^]������ƛYY^[�X[U���K��Y^\�ad\���M���^\�hkc���xON�\\�mog������\\�qsk��hppn�\]�vxo��owxu�]]�{{s��r|}{�]]��t��s���]]����؀���]]�����������]^�����������^_�����������_Y_^^^^^^^^^_Y����������������������ƕ���䕗��܌�–��䝟���ێ�Ę�ᡣ��٭��ߗ�१��ʹ���ݖ�ު�������ݗ�ۮ���ԫ���ۗ�ڲ�������ڗ�ض��������ؗ�պ��踻�՗�ӿ��������ӗ���¿������ї�����������ә��������������������������������������#�3#�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������£���أ����֝�����ש����՞��ի����Ѱ��ӥ�ծ�������Ҥ�Ӯ�������Ϥ�Ѱ������̣�г�»����̤�β������ڳΤ��������̻Υ����������ͥ���������̥�����������Υ�������������&#!!!!  !###��������d#!�!"!��[#!�(-.-'���`#!�/33/)�:�!!�32*gb��z� !�5m�������} !�8��VXT��v!:�`NQK�x�v !y9�+5:7٠?z!�������|M{" k�D7:> �ZVx"!m������V^v"$td`___`cilx$$$!     !"#$$�������������������������#�3#�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������£���أ����֝�����ש����՞��ի����Ѱ��ӥ�ծ�������Ҥ�Ӯ�������Ϥ�Ѱ������̣�г�»����̤�β������ڳΤ��������̻Υ����������ͥ���������̥�����������Υ�������������&#!!!!  !###��������d#!�!"!��[#!�(-.-'���`#!�/33/)�:�!!�32*gb��z� !�5m�������} !�8��VXT��v!:�`NQK�x�v !y9�+5:7٠?z!�������|M{" k�D7:> �ZVx"!m������V^v"$td`___`cilx$$$!     !"#$$�������������������������#�3#�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������£���أ����֝�����ש����՞��ի����Ѱ��ӥ�ծ�������Ҥ�Ӯ�������Ϥ�Ѱ������̣�г�»����̤�β������ڳΤ��������̻Υ����������ͥ���������̥�����������Υ�������������&#!!!!  !###��������d#!�!"!��[#!�(-.-'���`#!�/33/)�:�!!�32*gb��z� !�5m�������} !�8��VXT��v!:�`NQK�x�v !y9�+5:7٠?z!�������|M{" k�D7:> �ZVx"!m������V^v"$td`___`cilx$$$!     !"#$$�������������������������#�3#�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������£���أ����֝�����ש����՞��ի����Ѱ��ӥ�ծ�������Ҥ�Ӯ�������Ϥ�Ѱ������̣�г�»����̤�β������ڳΤ��������̻Υ����������ͥ���������̥�����������Υ�������������&#!!!!  !###��������d#!�!"!��[#!�(-.-'���`#!�/33/)�:�!!�32*gb��z� !�5m�������} !�8��VXT��v!:�`NQK�x�v !y9�+5:7٠?z!�������|M{" k�D7:> �ZVx"!m������V^v"$td`___`cilx$$$!     !"#$$�������������������������#�3#�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������£���أ����֝�����ש����՞��ի����Ѱ��ӥ�ծ�������Ҥ�Ӯ�������Ϥ�Ѱ������̣�г�»����̤�β������ڳΤ��������̻Υ����������ͥ���������̥�����������Υ�������������&#!!!!  !###��������d#!�!"!��[#!�(-.-'���`#!�/33/)�:�!!�32*gb��z� !�5m�������} !�8��VXT��v!:�`NQK�x�v !y9�+5:7٠?z!�������|M{" k�D7:> �ZVx"!m������V^v"$td`___`cilx$$$!     !"#$$�������������������������#�3#�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������£���أ����֝�����ש����՞��ի����Ѱ��ӥ�ծ�������Ҥ�Ӯ�������Ϥ�Ѱ������̣�г�»����̤�β������ڳΤ��������̻Υ����������ͥ���������̥�����������Υ�������������&#!!!!  !###��������d#!�!"!��[#!�(-.-'���`#!�/33/)�:�!!�32*gb��z� !�5m�������} !�8��VXT��v!:�`NQK�x�v !y9�+5:7٠?z!�������|M{" k�D7:> �ZVx"!m������V^v"$td`___`cilx$$$!     !"#$$�������������������������#�3#+(&&&&&%&("#)(��������f"#)'�!%&%!��X#)(�&+,+&���[)('++)${?z()w'(#5kprs()n'"���y#m)*d' ��,��%d*+\'&/��&\++T)*'��k"'T+,K*,)�5 ))K,,A*,* o(+*A,-9*+) � )+*9-.0*+*&"&*+*0.*.....-.....*vsrrrrqqrsppss�������ͧppsr�orsro�e��psr�w{|{w�g���sr�{~zÊgf�rr�~�}yu�����rs��������{~�rs������~��ss�����|�����ss�����������ss�����������ss�����������st�����������tu�����������umuttttsttttum����������������������콽�����������轿���������追������Ҹ�����������������������������������������������������������������鿿����������濿����������������������������������������������������������"�3"edcccccccc__cd���������__cc�Z\\\Z�Z��_cd�^aaa_�]���cd�_[ZZXhjWZ�cd�]�������]�dd�c^VTV\^_c�dd�gc���ciig�dd�ihaYZahji�dd�klg���glk�dekgc^^elnmee}j����kppo}ee{pkiikprrr{eeyuuuuuuuuuye]eeeeeeeeeee]wuuuuuuuuurruu���������rruu�uwwwu�l��ruu�z}}}{�n���uu�|zxxw��kl�uu�|�������}�uu��~ywy}~���uu�����������uu���������uu�����������uu�����������uu�����������uu�����������uv�����������vmvvvvvvvvvvvm��������������������������������������������������ʼ������������������������������������������������������������������������������������������������������������������������������������������#�3#,)((((''')##))��������Y##)(�$'('$}�Q#)(~,010,{��V)({0443/x>v((w331/*Cmpqt()s4-���)0q()n4�������3n))j6#��!��#6j))e7��%1%��7e))b=*��)��*=b)*^B�������B^**\JA�2�2�AJ\*+[SQMKIKMQS[+)++**)))**++)_\[[[[[Z[\XX\\���������XX\[�X[\[W�M��X\[�_cdc_�O���\[�cggfb�rON�[\�fhfd`x����[\�hc�X�U�_e�\\�i�������h�\\�k^��]��^k�\\�m��aia��m�\\�re��d��er�\]�w������w�]]�~x�m�m�x~�]^����������^X^^]]]\]]]^^X���������������������ѳ����ф�����|�����Ί�����~�����ʎ����ɚ~}ȇ�Ȑ��������Ƈ�đ�҆��΋�Ç��������ђ�������ˊ�����������������������ϑ�������������מ������ؖ��؞������������������������������������������������������"�3"edcccccccc__cd���������__cc�Z\\\Z�Z��_cd�^aaa_�]���cd�_[ZZXhjWZ�cd�]�������]�dd�c^VTV\^_c�dd�gc���ciig�dd�ihaYZahji�dd�klg���glk�dekgc^^elnmee}j����kppo}ee{pkiikprrr{eeyuuuuuuuuuye]eeeeeeeeeee]wuuuuuuuuurruu���������rruu�uwwwu�l��ruu�z}}}{�n���uu�|zxxw��kl�uu�|�������}�uu��~ywy}~���uu�����������uu���������uu�����������uu�����������uu�����������uu�����������uv�����������vmvvvvvvvvvvvm��������������������������������������������������ʼ������������������������������������������������������������������������������������������������������������������������������������������#�3#+(&&&&&%&("#)(��������f"#)'�!%&%!��X#)(�&+,+&���[)('+,*&|@z()w'(%!=prrs()n$s��~M"l)*c������`!c*+Y��iXy��Z++Q��;H���Q+,I��V\��I,,@����mks!@,-9%����\!'9-.0)%<%()0.*...,++,-...*vsrrrrqqrsppss�������ͧppsr�orsro�e��psr�w{|{w�g���sr�{~zÊgf�rr�~�~{x�����rs��}���{~�rs�����ϩ��ss�������ق�ss�������ss��������ss����临���st�����İ���tu�����������umuttssrstttum����������������������콽�����������轿���������追������Ҹ����������������������������������������������������������鿿�������忿���������������������������������������������������������"�3"5433333332,,24ffgggfea�,,24a)+++)a'��,24^+...,^*���24Y*---,<A-*T34Q !#&#&"  Q45G���r�V���H55H&�W��Z��H55F�����,(F55A�����Y(+A56<!��U��#++<668)#$&"%+,+8662+++++++++266-*********-61677777777761|zzzzzzzzzxxzz���������xxzz�tvvvt�q��xzz�z}}}z�t���zz�}�����vt�zz�{|}}}|{�zz��������zz���������~�zz���������zz����������z{���Ѩ�Ҏ���{{�����������{{�����������{{�����������{r{{{{{{{{{{{r��������������������������������������������������Ҿ�������������������������������������������������������������������������������������������������������������������������������"�3"�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������$$$!H7��$))("F���*..*j��|$�y043'��-0yr695����16rj<=2��dm:<jcA;��y>BCBcZB���?HIIH[SS��OLNNNNTOVPQVXXXXXO��������������$$$�
����%***'L;��+00/*L�#��1551p��+�|7;:/��"47|u>A=����9>ulEF<��jsCEleIC��FJKKe^L���IQRRQ^W]��XVXXXXWRaZ[abbbbcS�������������������������#�3#���������������������ϳ����Њ���ǁ�����Α����ă��͕���ß��ˌ�˙���ƣ���Ɍ�ɝ�������Ɍ�ȡ���˛���Ȍ�Ǥ�������nj�ħ��������č�«��䨬�����������������������������������������������������CA@@?>>??@<<AA��������h<<A@�=>7��|/�`<A@�CD9��w0��eA@�GH=��tO32@@�IJ?��P}}}~@A}LLB��?IKI|@AzOOD��DOQOzAAvRQF��DQTRvAAsTPA��@QUTsAApVO���OWXpABlYP����PYZlBBj\YQMMQY]]jBCgcbaaaabccgC>CBBBBBBBBBC>{yxxwwvwxyuvyy���¾����uvyx�uwr���k��vyx�|~w���m���yx���{����om�xx���~�������xx����������xx�����������xx�����������xy�����������yy�����ݐ���yy�����������yy�����������yz�����������zrzzzzzzzzzzzr�������������������������#�3#gedddcbcce`aee���������`aed�AC<���W�|aee�KND���X���ee�QTJ���rZY�de�WYO��c����de�]^U��R[[Y�de�bdZ��Zcdb�ee�hh^��]ikh�ee�mk^��]kon�ee�qk���lrr�ee�vp����pwx�ee�}{uqqu{~~�ef�����������f_feeeeeeeeef_feddccbccd``ee���������``ed�@C<���V�`ed�JND���W���ed�QTJ���sYX�dd�WYO��f����dd�\^U��R[[Y�dd�bcZ��Zcda�dd�ij`��^jki�dd�nl`��^lpn�de�sm���ntt�ee�yr����ryz�ee��}wssw}���ee�����������e_feeeeeeeeef_fdddcbbbcd``de���������``dd�BE>���V��`dd�LPF���W���dd�SVL���tYX�cd�Z\R��h����cd�_aX��U^^\�dd�eg]��]fgd�dd�kkb��`lmk�dd�pnb��`nrp�dd�uo���pvv�dd�|u����v|}�dd���zwwz����de�����������e_eeeeeeeeeee_�������������������������#�3#����������������������纺����������庼���������强������ϵ���������������������������������������������������������������������������껻����������軼����������鼮���������������������������������࿍���ߍ���փ�����ݓ����ԅ��ۗ���Ѥ��؏�؛���ȩ���֎�՟�������ԏ�Ѣ���͝���я�Φ�������Ώ�̪��������̏�ɭ��媮�ɏ�ư��������Ə�ĵ��������Đ�ļ��������đ�������������C@?>>===>@;;@@��������s;;@?�;=6���-�i;@?�BD9���/��m@?�DF;���S20�?@�FH=��Q����?@�IJ@��=GHF�@@KK@��@KLJ@AzMMA��@MPMzAAtOL<��;MQPtABoPH���HQQoBBjRJ����JSTjBBdVSKGGKSWWdBC`ZZXXXXZZZ`C>CCCCCCCCCCC>�������������������������#�3#+(&&&&&%&("#)(��������f"#)'�!%&%!��X#)(�&+,+&���[)(',-,'|>z()w(++("9ghnr()n(*$X���k)*d(#G�����b*+\$��nn��Z++S!D������Q+,I��4k�I,,?�1����q#A,-7��#'9-.0%$'()*0.*.-,,,......*vsrrrrqqrsppss�������ͧppsr�orsro�e��psr�w{|{w�g���sr�{�{Êgf�rr����{�����rs����{����y�rs���������}�ss����������ss�����������ss����ʋ�ss�����������st����ٍ�����tu�����������umutssstttttum����������������������콽�����������轿���������追������Ҹ����������������������������������������������������������������鿿��������濿��������������������������������������������������������0�30`ZXWWXXXY\XX\[��������XX\X���x|�H��X\W������K���\X��݌�ـKI�ZX׏���������YY֜��������YYԥ���������XYЬ���������XX˲�������WNµ���������N�������|�������������������������������������������������������������Ց�����������ӑ����������Ԕ�������������������������������������ᵝ����������䢨�����������ñ�����������W���������G��������������������������������������������������������������������-%��������'3'�������#z���ػ��������������������������������v#+#w��������-3-��������{(1(|�������������- .!>-....//.->!$B;;;;;;;;;B$%$$$$$$$$$$$%�������������������������#�3#,('''''&'(#$))��������_#$)(�#&'&#��Q$)({%)*)#v��S))r&)(#a,l)*j%(!Y��Xd)*a%&�����]*+Y##�ӎB�V+,O" ��L,,E��
C,-<����
:-.2
�����3..)��
+./!"/*/.-,-//00//*vsrrrrrqrsppts�������ɥpptr�orsrn�f��ptr�vzzyu�g���tr�z~}zt��bd�ss�~�}����rs���{�����t�ss���|���x�ss���~�vxt�|�ss���{�z�����st�����{�����tt�����������tt�����������tu�����������umutssstuuuuum�������������������޾���񼽾���ھ��������������ɸ�꿿��������翿���������㿿����������������������ÿ�����������������������������������������������������������������	�®��{��	w@TPQUR�M��,?��������9�����\���u�ɸ��Į���������������������������������T�������������h]��zs��������������f�������������|�`�������������qog������������zml�����������{s��r~|||||||}yy��|����������i:LJHHHHHHHHMG�����������dz��������������������l�����������ņ}ᯢ������������׾���Ŷ������������������������������������������������������������������������ƭ�����������Ridbbbbbbbbi`���������������������������������������������������������������������������������������������������������������������������������������������y������������

9����������
����������������������������������������������^��}|{}�����������}|z|�����������������������������������������������|���������������|���������������{���������������y���������������v��������������t�}~~�t�}}~~}}}~}}}}~�t���������������|7IBBBBBBBBBBBCH+�������������ɺ��������������ƾ���������Ż�����������ˬ�ĺ������������������������������������������������������������������������������������������������������������������������������Ÿ�������������JcYYYYZZZZZZZ[a:
		
		
��������������������������������������������������������������������������������������������j�����R�������������������������#�3#��������������������������������������鬫������ʤ��������������������������������������������������������������������������������������������������������������������������������������������������������������鯮������˧�������������������������������������������������������������������������������������������������������������������������������������������������������������鯭������˧������������������������������������������������������������������������������������������������������������������������8BIMPatt8BIMlnk2>�liFD$b153c44e-70e8-1173-9870-930db18117f2file_extension_ptb.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<:IDATxڌS�kA���d�i�4ml��b�`@�R�X��^z�����xz�(�=Ŋ�<� T{�C<�(5Ah
b���&���ogm�mz���̛yo��ޛ7�����:�sZ��6=����Bע#�2�<6u/T����<�N��h��>+�Z��{D`;��>/�G��a|�.��=���[(�7窕b��=��6���P��5�0@D�- =�����J���%��,(J@�&�
^ّ�p3X{2�t�2����!g����y;hy
�;(0������U?@�1�p�ӏq�8��j��/�@RH��
]��[_2<�P��<��)��r�AO;�@b�Z��v��.��6��$��A�P�Kt�A��,R���$߀H�͇����Bsi�cӱZQ݂QY䮼5�#����N�~�����>�b�n������6�.�z4��m� e�0:$���4?!}y9�	;�ɇr2����I֒�Ϗ��uQ�YX�<��'›q��?x�//.h.��+�����]����Y��u*���K��UC�`"�$��G�IEND�B`��liFD$9825338c-70e8-1173-9870-930db18117f2file_extension_hqx.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<%IDATxڌS�kA}�;;��^r��b�"(�XoR���	�l�m��UZZ�(q�Ј?�"Eċ���AăG��Ao�&;��6�mc�/L��Λ7ycn�j?��EjӢ�~�Y~!���QFI����1�s�/1�$I�v�m]Džp��z(����F��\9]6�<��шc�++ĬQ�1����x��5,.`�py:����JT(�!� �z=��ڪ�4�py	�#'&ggg�X���}(��X]mbnn����c�V*���8rt�_鮓�&1	-��8<����*��'��qccgq��i����4M*ϣ��������x����f��]�	
�:�A���Z�u���
[�CL�ɂ� }	�<���D�t�t�{��
|:�� ��{V&�����.dKJ	���w���-H"�7�V�;���JV�,.�p�����g2�R*R���>���=�h�{�)�ԫ�°�u3\����{'�F�K�;:������y���ָٛ�?���=��v�����_��7F΋��0IEND�B`��liFD$4e0ca1c0-70e8-1173-9870-930db18117f2file_extension_gz.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<+IDATxڌSMHUA=�s�՝�(�C^�H =D-#��-�6nڄBP;A�A��M�N&�AQ�"h�T"�
�ZX�y�;�ͼwy�뢹|3s�9s����Z�<�3ƴ��5��:!�!~=�4u�A<VsǛ�Ѣq`ĕ��!���?w+D��_
�Q�d��Dޮ����Wx���rk�ܓ~T�X[\����;�9R�XL8tj�	}�����<��!�����=tf��O��H�(��څ����=.�]��ct�<���&������[�}:Q`�@j6J*\�?@$����l���H�R��S:A��V�HK�����`�����M|/m�6$
X*0�!���>")B�LB
WK�၁R���X^$�<A�]�7ƥp�cR�@Xr�{4����*�*'�$ԕ1v�KJ���H�2=I�:o�:�K{ 8o"�A[ϩ��sJ��DW�AcU٬�rs���s�_9��QTqi�Z�z��"55��T��'�K�B4�������G6���/1��y����};<�'����|p���IEND�B`��liFD$21f17c42-70e8-1173-9870-930db18117f2file_extension_zip.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<&IDATxڌS=hQ���ޑ&A�3�%�]�/H�����F0$�������0hc�S�P$����D� F""Z(B�����w���޾y��|3�̬J�O�j?]�Ȓo�R����G��hJjX��sm�o��s���!���1�������Α/O�Ml�m�ѽ�0J#�7Q���I��/�����.:3�8E��/.B>��6�y���P�J���jי���=��M�$�Ok5.�ז�1<v�,"��;�7W+xpi;��%���O��Q1�b���^������U�Tcf�����W�חo�x`�VP_z�8�\��t�1���Zl���i|��$%���PRm]�[B�]@�Q�Z��`yR:�וּ\���\�-�~�)����!k��o�^Hd�"��dC���֪�x
2��/T3���h��f�[�]P)��a��QNu�>q�s��t��T۫h[?�B� oӫ$�B�-�v��������-�j���R��(�E�������GQ�
05�)vM�8IEND�B`��liFD$d5cca80a-70e7-1173-9870-930db18117f2file_extension_bin.png-�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<�IDATxڌS=KQ=�cf��,
��D�
�}:�B[�N,E��H�&��B�I�bQDH���Bp����`f?��̛w�眙'���0��5�I�jW�Ց�dŽ:]P�����L����^vyWO�����d��38cq�Rʴ����g��w���1���,�HHRj�F{J�	����[L��G���ʠ�:�0$���В������_�q�#f��@�(Y�ś&��K���85�����(.�R��9_KH�,��S�VlA�bkq }�~��#A4�Z�T]﨩R5Nj�KX�gRD8��@ OB�rs�/ݛ�tI*�?���r�1���}��(����H_9L���!�%�����K�e�8VoL[֥\�|�&�S�xz�L@�^�04Vt.����ݿe���x779Δ|�:��G��������IEND�B`�9liFD$cc65cd91-70e6-1173-9870-930db18117f2file_extension_html.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<iIDATxڌS�kA�f3�MkQjl�Ң�ZP*Ă���"�ŊQ��R�?���� ī�'���A�PJ<y�Ҟ%EAc�$V�l���{�M�6�ݙy�}�{߼����tI);l�zӠ=�!�	m%�`"�a�|%8���	�6;�d��W4:X��sgcfnv)9y�=�l�U�ç)H����g�R��8�����ǣSH4�'�̜�''�8cMz�]nK�$>M�+xve.k��=�S�y��ZHu�O��I,���+#C}��起��=��nY�
��s��?���P|/�c�\eL��
X�(�jR����D��x�k���"������qJ(���?M&ɝ�ƽ���Aᗅ���x?���e�HX!�0�}�&Q<w��5��F�*�;d��a
��(R��@[	k"
ԛ|
�u�b�D��ݳ�;�R̀n�*��,H��V\C,$ѳM�XTw�a�Xl�!"�tC��ۏ��3�x_h��B
v�F@�"@v���X�Q�ÍT/re�8�7��b��e�;��u���H�e����yW��7�0�\i���0�
7��D�`�+i��rL��k��D��h=0/��@�=/����Q��</�
0�$����NIEND�B`�liFD$a5667c38-70e6-1173-9870-930db18117f2file_extension_bat.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<9IDATxڌS=hSQ��I+:dQ+�?�E���� �W����E����T���".�EQ�P0ND�C�TP��,B�Alͻ�>�9/I��y�s��9߽��(B߉�0�I��Jď� �C�u�誦���G��3{a�Hj�8�ס����ye͌ݩ��eZ�5�j�����.���d"=�7n��K�"^�1H�
@��!���%���q8b3�8z��%��φÒ�4��dO��6��U���Aj�}�fuJ��W�-c9�A�s�}[!����oـ���q�����sb4��~.���U籽g9J��x�셶Zg��� ����w��`�x���ϩ���+ӳ�+Ԃ����"d'J��(����j���#mQ�:Z�
�7i�2uV��H�X�ZD����A|���M��u�c�ZD�◸��$�n��p��nu������?(k��wT �����Z����O�v���E�Z��{IN��B4п����Z�r�X�H�@���m��Q�[�5���5nb�CK�WN�V����$�_~p^U&��f��IEND�B`��liFD$fdefcf69-704a-1173-895f-b3229314356cfile_extension_m4b.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e</IDATxڌS=kQ=yM�lvE]T$�gD	(�Q�B4����*�"�!�UP��Y��E0)��BA�l%"a����;��{�ͬf������=��{�p�a���Oml�����n�>O����ڀ�ʒT�Y��tS�i��'���m6F�r�(�x��-��"��v�y�$f�-b��E\Mt]L̉��h}����}T �ReQ��G�^�:�1)n��߄c�D�4h
A`���R�&�V�Em�{�Q���T��k:`��8"pR�C�#Gv�̡*.�؅�K{���oi\��tm�:�����Û6�j��\8�
�7BL�ԍ�}����p�+�?Z��:�B���E<����&}���P$�h۫���]!J�GT�n<��'+S��{{�_zn�dEy�ޜA�?�|���ok+x�.y��)I��:
u4�>�n��T(���,X#���g�Pg���F�F�y����	0�d	�82\`�\�������EYLL��8[v�r�X���M��>' ��W�g�pM�0l��!B_ANIEND�B`�liFD$e6d2e6e0-704a-1173-895f-b3229314356cfile_extension_jpeg.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<HIDATxڌSMhQ����o�i�KRL����R�
�(֞ċ�*T�ţWѳ�*�أ��E�'=��R���T0�J���6%�}���f�<��cg��|3of�PJ����5O����ǀ�0�������G��Z(ξV+�{J}#��2Q�����y鏚���I+��Њ��;��p���/��'`�p]��83��ى�$y��c�l,�eE#{L �xS���Q�0������Ccdں�&��s:V���sw��l`٘�M�8����AL�Ʃ�/q����r���G��N�̆1#o�֥u���&	���
	t���J"$Y\Z��P7mW񬸇�hxG��a�'�,�X�:�HdsD�K7��p;�$��@"�����"�؈9qD�lR��T��jN��!�$�+�+�'\؎D��_�ek�
z�+zP�ħ6��datFl_.fPx�����VEw;������P�X���_B��"���`l�<�����*tXk�VvV�4ߧ%�_+�&+n,`��ݱ��R��������|��U���GҟOGP;C`��9�V�wE���{���%-�`g���)�RIEND�B`�liFD$d6c29263-704a-1173-895f-b3229314356cfile_extension_htm.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<CIDATxڌSMhA���f���KĤ�5Jl�ZS��7�D�(�#*^�P�� ^<�-�*�DoD�"Qr/9�H-D���"�P�Mvg�7��4i<��%3�����%�1t��,���;����� H,�?M���\S��⛗G��Nf�	�y/�}>���{[c����T�B{3B�6����aF�Q�yRb�p��ů�1��,Re*_��k�%,��5�$�<�!�.��4.
��n}�q�9]+"$G���׹#}d���z���dR��vM�x^P���sWp�87�\�����<]h�j]��6�k�q,k�t.���:�lG��L~��	]T��М��7`v|���w�<�ɍdpS��V��U巊o����;'����d[��B
�9ܱ��>����q�,L�Rp=�$�`,*�u?����8��܌C�X���=���nM�����
b��H3�p���@��[�,[�JW����
��Y��:�8S0�����:?���v=�
�&'%��E߇��q�:
<�O�,�8���o� E{��)
�=o�(�k�o+\Wы���87_@yIEND�B`��liFD$c718de88-704a-1173-895f-b3229314356cfile_extension_flv.pngy�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<IDATxڌS�kA�fg��]N�+���xb��JB
�И4���;�4ژXi-h��
V��w����P/�������^�;�owg�}�|��ADб�{�4I�#M18,K|�6��h��	V�:z����8=��)�6¿2����9������]D�i�R-)R�ia��A���w�V��Ge;�=4�u���(���f.a��j�oj���{D+�t]H�)R�>�?y���q�磊��R�I����G�!�D�-�Ũ��$��@�VN`g�f�&�1����l޸�y�.��첞PL ����ύH����)X;C(��1@A���|K�<y.[��A��ճ-��W�7��(.�NQ����u���
�f�~	�{��rT��Z�� ����i���f�@��RA�L�i�O�cd���NO �7 ^��*��=��hb�A05>!��Y��v�n�)�:n	83e|p\����R��Q(*~/V^�G�r�3���g~y�C�
��dl�9�҅3�0IEND�B`��liFD$b8532814-704a-1173-895f-b3229314356cfile_extension_doc.pngp�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<IDATxڌSOHTA�}�f�]���DI2�w�lF	�!�N�)̺���
^B*ʃ���!"��Y*4B�
)�ŭ�ԥڭ}of�f���[V�y��o~���͐1v���j�h�i�w���h�+Z3WF&���q0�/&��yZ�x���W�2��+�7�BD^�5N�s�{9���9T�����"2���I�%<ϋ|�4�X4��������b�F�� �3�0�xq���*����"�ؙr��I�V�h���a<�X��2&�t�V�,`k`W�|�}ڭ�~�p�<�ԍ˅���v�S3��t=*�Hf@dpx����Vp��@���_�����)�'L
pPա=r�R�Q
�����T	{�H��Q�7
���Ѷ,�sv����v#�9\��.x�����}NjOeg?Y�����p�;dqDM���ʙ���K x�f�c���^� �A�@�o��(�T�K5��'�������,Nnc"��5����Q��X�[�Dd�ފ���-�`��"�MY5IEND�B`��liFD$e17a80c3-704b-1173-895f-b3229314356cfile_extension_bin.png-�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<�IDATxڌS=KQ=�cf��,
��D�
�}:�B[�N,E��H�&��B�I�bQDH���Bp����`f?��̛w�眙'���0��5�I�jW�Ց�dŽ:]P�����L����^vyWO�����d��38cq�Rʴ����g��w���1���,�HHRj�F{J�	����[L��G���ʠ�:�0$���В������_�q�#f��@�(Y�ś&��K���85�����(.�R��9_KH�,��S�VlA�bkq }�~��#A4�Z�T]﨩R5Nj�KX�gRD8��@ OB�rs�/ݛ�tI*�?���r�1���}��(����H_9L���!�%�����K�e�8VoL[֥\�|�&�S�xz�L@�^�04Vt.����ݿe���x779Δ|�:��G��������IEND�B`�liFD$9e507f6c-704b-1173-895f-b3229314356cfile_extension_chm.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<8IDATxڌS1hA}3;�c��h,�pb
�`B�H-<1��(Z�VV��pb#B���6%H�S�b!!��9�(�������mn�k�c���y��J��,���9�;�QJA+]]�=�������Kg�ᜀ� �w˝2�n�ǎFy������<�ɪm4�;��`��3J,��K�pkfk�'Q��Ty^�T&J��f��'Bh�Tb�I��@\���8�q*��<d�I��Y���g2% �
�f�C������sO08����D��z�,�c&m&1CO_.atd?F��H����@���to��.\�ڻ���f_�!�����$T[�t�`���pJ��7_����E�}����'�Ȑ�Nu?�JE���[|��@-vX�'-$yIPw6ǟ=�!�@�����`�zu��ƅǟP�1PA�\�v�A�D͖��-dI��Uɶ����q�
2o(m@@3�s_�`;��nΆ��n5����P�*����^�i�b�	��Di���)MJq֊3ˈz#�(��N�<H����c&���9O��T��UT���֙�"��P���[5IEND�B`�liFD$919ca3ae-704b-1173-895f-b3229314356cfile_extension_ace.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<AIDATxڌS;hQ=�3�Y�pc
A�U?[�Z�I4�Z��ـD�X�U*Y#����B�A$ DĀH
��,,"��μ7�{��lfL���-o��s�9���9�`�[�c�4������?�=��5=g��?c�ʍ��J6�ю,����������72SO�[��	_�onG�&_BRr;4�6���4�ps�Vf��74u`Z,��\�h,P*����<x��j�()��x�8�)�����c�L+E֢P���|���aH�@u;��f�{�6�;�1�9�qЁ��I�06���x������p$52�77/��A�r[�@o�f�blp3s�����'�wY�Xπ(��ރ{��S,�D��]1��*>�C@�RPZa��#'��+\���f�Ú6r�6K�$K�B,,�BBPQ���>/C`�A��&{�\�u�^�Q[�c��#�[�U@&:�ڮ�n�̲X|҅�%��.�FEtOM�{�|yP�T��	q�˚�) i$J�xF�$�3+>9�dȤ���B���7�.Oo��|�ςǒz���l<~n�7��j�*�xIEND�B`�liFD$3d2e709b-704b-1173-895f-b3229314356cfile_extension_rtf.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<:IDATxڌSKhSA=�~��"c�U		�ZMŅH�Eu!ua������T���nDq�஻,,R�*F���H5�����Lϼ|��)80/wf�=��{s�R
���Ka(�������ڹ���'�21|fѝ�pR����K��?:�$��Fb�J�r��>�iU����)<}���AzF0:'H2�L��1���0Ls�>�1�!H� {���sΕ6_�j��j<W,�
Ez�_�g����N쾔C��,:�;u�Û�A�2U|�9^�g�%>/�>���4%���k��)Q�
Ed:?��(,�P����%^ V-�n��m�m�Vˀ�'�,n�<6���#
�n��O.`y�h8u�5\��e
�1�1��y*8������`qo��5�zҞ�Ԡx5���~��裗�ҵl:&2<�\,�{�A@�L�U�=`�>R�����P�@�� IP;���{���A�)‰�_��.o�v{."���X�TѾ�Aϣ��ۜ'Ħ"���ֻ����4�dc4�}5�~�ǒ=����J�o�X`}�H�1ۇIEND�B`�liFD$3b187f9a-704b-1173-895f-b3229314356cfile_extension_pdf.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<3IDATxڌS�kA}��l�4�n����K=�g��MDDR+^<x�-�x(��@=yAQУ���j��HA4MM�d���M7f%�fgg�{o޼�!�5>
���.z� �G+߆�/�K�@�?��\�C( �o�Y�x�P�!y�҃эʩH |���h}�^J��R6����uV�y��
�_�ӥT�~$�b.��t�N�;S&�5��ָd|�<
�-S��+��I�}F�
HۆL$ �Dn���g���M�k�G��u�֓�����m�e!�FP���W@�}���o5�1����R0�`u��2����R�.B�
( #��1Ё���-���V���-����q�(RH��!+e$'�Bp+%ے$Y��Á9��,���&�?	���̣��>���C�_!
A�B4H�ٗ�}��vX�w�v�(��v6N{�Xۀu�0��s�f.#X(p��2�����N.�^G`�.Ln]��P�L�;a��y邙���	r�ӱ�祂�֩��^߼=���O0�ԇ��m$����T���K����l��IEND�B`�liFD$29a1d44e-704b-1173-895f-b3229314356cfile_extension_mpeg.png��PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<@IDATxڌSAkA�fv7��6�6`!P���Ń��<�$5Hj�l�G��ڣ��V(���(�����BDr1Pb�ڂ���6�R����횸1-8�˛�}�o���5����t]�88t�/ �X����r�&�\�#�}P
�t�L+M�/��o�G�.��/1�j%G��"C�� 
�UH�����y�
"q�M��9�i&���Q��)�$	8�B��
<�~C7�u��E%C\'�r�Ȋ�%�vl%��uvD�~q���!ke���@�
>���җ"^g����2�8y�]݇aJG+�@�e5�	4C&�d�!�W:�8ы�x���x��z<�r��mr -O�?p/�#�K�#�EW&G�1��'�t���@����_o�a�Ѽ��x��m�D	e����ڮ�����ֱޮ=�`�B��AM���,���;�q`��9�4�qn*����y�q�]�2�kjR�	Tt!_)�_���k�w
�+dy��ĩ{�y�5:��u���d���G8��<"q8�<��	���|!�9���0`�r
eڒ-}~�{�����(P�2�@ �g.�!ZIEND�B`��liFD$14ebc9c7-704b-1173-895f-b3229314356cfile_extension_mp4.png[�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<�IDATxڌS=kTA=wf��qIe!�d
�J�J@H�$&��[;qQl�f+�6�����i!Db��|4��ۙ���}�Y�E�2,s�s�=3����8so囵n��H}]�M��r�5�F�3ק |D�����\u#=��.�??��/�M�#����
�{ٶ��6s�g���t�<�{�%$&���NI���' &�R(��=ܾz����#��8}C�-��`�2O�����W�qj�������,��
�G@�kYJ4�^�	g�*ȕ�l��a���R�ԯ�Y&0���7O�h��S�rYR�A93+S��΍����\�PW�CXQ,̎�r���t΂҃�(.�@�������-��T�� �0����ڛM���M�+7�/+D �2��PPK��r������=M�0!�.x�G����V���Qǖ��-c޷X�*����o�N@��PW$�?���w�?L�!��o�9Q���q��a��Q��A�.�IEND�B`��liFD$c5d8d499-7049-1173-895f-b3229314356cfile_extension_txt.png�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<!IDATxڌS�kA���]��X�1 h��B�SP��*�1��H� �HB.�]��^�4~�
F��F�	���?�/B@,�R17��7�{�W8��y�{��5Cabt��wkm��[Gȓd*�V����1֓�<�$
r�noy���ם#S��©����4�x��Z)�Q<cql�0V^�b�6����a&!&Nb�ֆ<��k[���j(&
7~�xa����<;Sy��c-��$�(
ag��ݻz04y��N����4�Kl�d�	�F��a
�{{�߻���Y��i��œr�
pfz7�sN-Tq��4�PH��t�Ɇ#��P8}iZ+d�!G�/Ʉ���ta��P�L���D��p��ۋ豗�+��9��ܝ�6F�|��=8\���̬I��ձ��x������>_~�p	�	����K����HqD����Z� ��c�5�&�Zi<�{��2n��P���RH�Y�	���Ԉ�#f񼣫Żϑ�d#%m�Ÿ_?_���q y<�3lU�b�e�'�^ Q�����>��W����bo��IEND�B`��liFD$c483e490-7049-1173-895f-b3229314356cfile_extension_exe.pnge�PNG


IHDR�atEXtSoftwareAdobe ImageReadyq�e<IDATxڌS1OQ�f�v�;s�АK4m$;
����P �b���N����P�Xcb���.&F���
�D�1\dw���W0�ݼ}��73߼'�Z�����j�Κn�|�_{�G�)��
~�h��h@��M�u�g�۹��c3�	�f�b`��w���э�7q��*�����sM!���D3�C��Ȑ�Uy$m�ƫ�A>�>����q.��	�
}��P�+)�"cp�^��؀<[�ȥA�x2WA�r{
>T��i��8,m�`v��B�3Q�c�#�G��LJ�:�\��M���;X�{�U|b��q����6v����An
�Q�r��Ֆ�Sq#U[h���Hq�%pp�}��w�7@���0��ߣ4����ak��J����'���2_xܨ�ו ���)�ۓ+]uP���̔��\,��i캾��ը_q�"8��
�J�x�����78���N��g}���m�Q7SmJ�ג׵�u��m��B��k:
��IEND�B`�8BIMFMsk��2
		

	


	

		
			
		
		

			
	
		
	
	
	
		
	
	

		

		
				
			
	

	
	



		
		
					

	
				
	
	

	

	

	

		

	

		
		
			
	
	


			
		
	





		

		

	
		
	
		

		

		

	


	
	
	
	
	
	
	
		

								
					

																																																																						�8(�&%&:���(��������fo���'�!%&%!��Xo���(�&+,+&���[o���('++)${?z(���)w'(#5kprs(���)n'"��y#m)���*d' ��,��%d*���+\'&/��&\+���+T)*'��k"'T+���,K*,)�5 ))K,���,A*,* o(+*A,���-9*+) � )+*9-���.0*+*&"&*+*0.���_�.-�._�������������������������������������������������������������	����������������������������������������������������������������������������������������������~�����|�}~~��|�}}~~�}~�}~�|�����������w~�}x��������������������������������������ɸ����������������������������������������������������zs��������������f�������������`��������yg��������wl�������{���r~�|}y�����|����������r�|v���������������������������������������*�*�����������rd�������hc����		���mc����	�?�����
5������������������������%�%'%�%�����2�2>A>2�2�����>�8@C@8�>�����L��L�����`Y�WY`�����utt�s�tu����S�S�������������������������������������������fd�ce���d�����r���c�Z�\Z�Z��r���d�^�a_�]���t���d�_[ZZXhjWZ�c���d�]��]�d���d�c^VTV\^_c�d���d�gc��ciig�d���d�ihaYZahji�d���d�klg��glk�d���ekgc^^elnme���e}j��kppo}e���e{pkiikp�r{e���ey�uye���g�eg��������������������������������������������jZXWW�XYi���[�������毒���X���x|�H������W��	���K�������X��݌�ـKI�Z���X׏���������Y���Y֜��������Y���Yԥ���������X���YЬ���������X���X������W���N��	�������N�������|��������������������������������������������������������������������9(�'&':���)��������_p���(�#&'&#��Qp���({%)*)#v��So���)r&)(#a,l)���*j%(!Y��Xd)���*a%&��]*���+Y##�ӎB�V+���,O" ��L,���,E��
C,���-<���
:-���.2
����3.���.)��
+.���/!"/���_/.-,-//00//_������������������������������������������E�*)C���*~�~|z�r���*x&�*&x��r���*t+�/+u ���t���*n,.(,.FC# j*���+h-&�[)./0-h+���+b.%��\+01.b+���+]0&��\,10]+���,W0&��e00W,���,Q1'���;21Q,���,L3(���:243L,���-E3)��:2443E-���-@41i=3�54@-���-:66456�76:-���d�-d������������������������������������������9)�(;���)|�{zxvRp���)t%�(%q�Gp���)n(�*(k��Lo���*g"#f:c)���*`��<a_^_*���+X��%�&Z+���+S$T+���,M����M,���,F
 F,���,@���� @,���-:!	":-���.4���!4.���.-%!"&-.���_.-,�+�,-._��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������L4�3K���4ff�gfea�w���4a)�+)a'��w���4^+�.,^*���z���4Y*�-,<A-*T3���4Q !#&#&"  Q4���5G���r�V���H5���5H&�W��Z��H5���5F�����,(F5���5A�����Y(+A5���6<!��U��#++<6���68)#$&"%+,+86���62�+26���6-�*-6���j6�76j������������������������������������������8(�&%&:���(��������fo���'�!%&%!��Xo���(�&+,+&���[o���(',-,'|>z(���)w(++("9ghnr(���)n(*$X���k)���*d(#G���b*���+\$��nn��Z+���+S!D��Q+���,I��4k�I,���,?�1���q#A,���-7��#'9-���.0%$'()*0.���_.-�,�._�����������������������������������������������8(�&%&:���(��������fo���'�!%&%!��Xo���(�&+,+&���[o���('+,*&|@z(���)w'(%!=prrs(���)n$s��~M"l)���*c������`!c*���+Y��iXy��Z+���+Q��;H���Q+���,I��V\��I,���,@����mks!@,���-9%����\!'9-���.0)%<%()0.���_�.,++,-�._����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������9)�(�';���)�������Yp���(�$'('$}�Qo���(~,010,{��Vo���({0443/x>v(���(w331/*Cmpqt(���)s4-���)0q(���)n4����3n)���)j6#��!��#6j)���)e7��%1%��7e)���)b=*��)��*=b)���*^B����B^*���*\JA�2�2�AJ\*���+[SQMKIKMQS[+���^++**�)�*�+^��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wd�cv���d���������c�Z�\Z�Z������d�^�a_�]�������d�_[ZZXhjWZ�c���d�]��]�d���d�c^VTV\^_c�d���d�gc��ciig�d���d�ihaYZahji�d���d�klg��glk�d���ekgc^^elnme���e}j��kppo}e���e{pkiikp�r{e���ey�uye�����e����������������������������������������������������������������������������������������������ϵ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ϳ�����Њ���ǁ�������Α����ă�����͕���ß��ˌ����˙���ƣ���Ɍ����ɝ�������Ɍ����ȡ���˛���Ȍ����Ǥ�������nj����ħ��������č����«��䨬�����������������������������������������������������������������������������������������������qe�dcbccr���e�������������d�AC<���W�|����e�KND���X�������e�QTJ���rZY�d���e�WYO��c����d���e�]^U��R[[Y�d���e�bdZ��Zcdb�e���e�hh^��]ikh�e���e�mk^��]kon�e���e�qk���lrr�e���e�vp��pwx�e���e�}{uqqu{~~�e���f��������f����f�ef��������������������������������������������8'�%�#$%9���'��������no���%�"$����cn���&�+/#�����hn���&�15)���E�&���&�58+��H����&���'�:<1��,785�&���'�>@4��4@A>�'���'�CD7��6DFC�'���({HE5��3EJH{(���(uLD���DMMu(���(pOF��GPPp(���)jVRJFFJRVVj)���*h_^]\\]^__h*���]+�)+]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s�r�qr���s�����ͧ����r�orsro�e������r�w{|{w�g�������r�{~zÊgf�r���r�~�}yu�����r���s�������{~�r���s������~��s���s�����|�����s���s�����������s���s�����������s���s�����������s���t���������t���u���������u����u�ts�tu������������������������������������������������
�����ɺ������������ƾ�������Ż��������˱����������������������������������������������������������������������������Ÿ������������������������������������������������������������������������������������������������Ż��������������������Ŷ������������������������������������í����������ƭ������������������������������������������������������������������������۷������v�zv�u�������ـ����w��������؆����՚vvՁ����Ԋ��������с����ы��هρ����Ύ���΁����˓��������ˁ����ʚ��������ʁ����Ǡ��������ǁ����ħ���ā����İ�����Ă����������Ń����������������������������������������������������x�uw���u������������u�u�wu�l������u�z�}{�n�������u�|zxxw��kl�u���u�|��}�u���u��~ywy}~���u���u����������u���u���������u���u����������u���u�����������u���u���������u���u����������u���v����v���w�vw�������������������������������������������������������������շ������������ӷ������������Է������������������������������������	�����������	ᵝ�������������䢨�����������	�ñ�����������	��W������������G�����������������������������������������������������������������������������������s�rqr���s����ɥ����r�orsrn�f������r�vzzyu�g�������r�z~}zt��bd�s���s�~�}����r���s���{��t�s���s���|���x�s���s���~�vxt�|�s���s���{�z�����s���t�����{����t���t����������t���t�����������t���u�����������u����ut�st�u���������������������������������������������t����t�����ɳ����t�r�ur�j������t�{�|�m�������t��~����pm�t���t„���������t���t�����������t���t����������t���t���������t���t�����Ŝ���t���t�����Ɵ����t���t����ʣ�����t���t����������t���u�������u�����u�������������������������������������������s�r���t����������s�q�tq�g������s�w�zw�h�������s�xvtvx��hg�s���s�v��x�����s���s�y��{�����s���s��xvz~~���s���s����~����s���s�����������s���s����������s���t�����������t���t��������t���u����������u����ut�stu�������������������������������������������0�.�����������b�������b����)#����d����$��F@
�����$)#��"()%�����*.)�^)..*����y04-��,340y���r68/Ξf031q���j;9��W����e���b>C�uHU��^���V��sBFHGDDZ���M��HM�NT���MRTW�XO���U�U��������������������������������������������z����z���������z�t�vt�q������z�z�}z�t�������z�}����vt�z���z�{|}}}|{�z���z��������z���z���������~�z���z���������z���z����������z���{���Ѩ�Ҏ���{���{�����������{���{����{���{����{�����{�������������������������������������������s�r�qr���s�����ͧ����r�orsro�e������r�w{|{w�g�������r�{�{Êgf�r���r����{�����r���s����{����y�r���s�������}�s���s����������s���s�������s���s����ʋ�s���s����������s���t����ٍ�����t���u�����������u����ut�s�tu������������������������������������������������s�r�qr���s�����ͧ����r�orsro�e������r�w{|{w�g�������r�{~zÊgf�r���r�~�~{x�����r���s��}���{~�r���s�����ϩ��s���s�������ق�s���s�������s���s��������s���s����临���s���t�����İ���t���u�����������u����uttssrs�tu������������������������������������������������������أ����֝������ש����՞�����ի����Ѱ��ӥ����ծ�������Ҥ����Ӯ���Ϥ����Ѱ�����̣����г�»����̤����β������ڳΤ��������̻Υ�������������ͥ���������̥����������Υ������������������������������������������������������������������������أ����֝������ש����՞�����ի����Ѱ��ӥ����ծ�������Ҥ����Ӯ���Ϥ����Ѱ�����̣����г�»����̤����β������ڳΤ��������̻Υ�������������ͥ���������̥����������Υ�����������������������������������������������������������������������أ����֝������ש����՞�����ի����Ѱ��ӥ����ծ�������Ҥ����Ӯ���Ϥ����Ѱ�����̣����г�»����̤����β������ڳΤ��������̻Υ�������������ͥ���������̥����������Υ����������������������������������������������������������������������أ����֝������ש����՞�����ի����Ѱ��ӥ����ծ�������Ҥ����Ӯ���Ϥ����Ѱ�����̣����г�»����̤����β������ڳΤ��������̻Υ�������������ͥ���������̥����������Υ������������������������������������������������������i\�[Z[i���\�����������[�X[\[W�M������[�_cdc_�O�������[�cggfb�rON�[���\�fhfd`x����[���\�hc�X�U�_e�\���\�i����h�\���\�k^��]��^k�\���\�m��aia��m�\���\�re��d��er�\���]�w���w�]���]�~x�m�m�x~�]���^����������^����^^�]\�]�^������������������������������������������������������������أ����֝������ש����՞�����ի����Ѱ��ӥ����ծ�������Ҥ����Ӯ���Ϥ����Ѱ�����̣����г�»����̤����β������ڳΤ��������̻Υ�������������ͥ���������̥����������Υ������������������������������������������������������������������������أ����֝������ש����՞�����ի����Ѱ��ӥ����ծ�������Ҥ����Ӯ���Ϥ����Ѱ�����̣����г�»����̤����β������ڳΤ��������̻Υ�������������ͥ���������̥����������Υ�������������������������������������������������������u����u������������u�u�wu�l������u�z�}{�n�������u�|zxxw��kl�u���u�|��}�u���u��~ywy}~���u���u����������u���u���������u���u����������u���u�����������u���u���������u���u����������u���v����v�����v���������������������������������������������������������������࿵����ߍ���փ�������ݓ����ԅ�����ۗ���Ѥ��؏����؛���ȩ���֎����՟�������ԏ����Ѣ���͝���я����Φ�������Ώ����̪��������̏����ɭ��媮�ɏ����ư������Ə����ĵ��������Đ����ļ�����đ��������������������������������������������������
�OA@@?>>??P���A��������h����@�=>7��|/�`���@�CD9��w0��e���@�GH=��tO32@���@�IJ?��P�}~@���A}LLB��?IKI|@���AzOOD��DOQOzA���AvRQF��DQTRvA���AsTPA��@QUTsA���ApVO���OWXpA���BlYP��PYZlB���Bj\YQMMQY]]jB���Cgcb�abccgC���nC�BCn����������������������������������������
�peddccbccq���e�������������d�@C<���V�����d�JND���W�������d�QTJ���sYX�d���d�WYO��f����d���d�\^U��R[[Y�d���d�bcZ��Zcda�d���d�ij`��^jki�d���d�nl`��^lpn�d���e�sm���ntt�e���e�yr��ryz�e���e��}wssw}���e���e��������e����f�ef��������������������������������������������k]�[�Z[j���]������ƛ����[�X[U���K������\�ad\���M�������\�hkc���xON�\���\�mog������\���\�qsk��hppn�\���]�vxo��owxu�]���]�{{s��r|}{�]���]��t��s���]���]����؀���]���]���������]���^�����������^���_�����������_����_�^_������������������������������������������0�.�����������b��������b���������d�����$!H7�����$))("F������*..*j��|$����y043'��-0y���r695���16r���j<=2��dm:<j���cA;��y>BCBc���ZB���?HIIH[���SS��OL�NT���OVPQV�XO���U�U������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ľ�������������������������������������������������Ҹ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ͯ������������������������������������������������������������������������������������������������������������������������������������������������������������˻��������ʺ����������̻���������ʼ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-%����������'3'����������#z��ػ�������������������������v#+#w��������-3-��������{(1(|�����������-�	 .���!>-�.�/.->!���$B�;B$���0�$0������������������������������������������ſ�����������������񼽾�����������������������ɸ�������������������������������������������������������ÿ��������������������������������������������������������������������������������������������������������������ȿ���������������������������������������������׾����������������������������������������������������������������������������������������������������������������������������������������������������������ľ��������������������������������������������ѹ����������������������������������������������������������������������������������������������������������������������������������������������������������4�2�����������f��������f����$"/*�
���h����%*%��JD	�����+0*��)/1,�����150�d0551����|7;4��3:;7|���u>@7Тl8;:t���lEC��_����h���eFL�{O]��a���Z��zKOQPMM]���Q��RW�XW���Q]^�bcS���X�X�������������������������������������������������������������������������������������Ҿ����������������������������������������������������������������������������������������������������������������������������������������������������ľ�������������������������������������������������Ҹ������������������������������������������������������������������������������������������������������������������������������������������������������������������ľ�������������������������������������������������Ҹ������������������������������������������������������������������������������������������������������������������������������������������������������������4#�!� !5���#�������dl���!�!"!��[k���!�(-.-'���`k���!�/33/)�:�!���!�32*gb��z� ���!�5m���} ���!�8��VXT��v���!:�`NQK�x�v ���!y9�+5:7٠?z!�������|M{"��� k�D7:> �ZVx"���!m���V^v"���$td`�_`cilx$���Z$!� !"#$Z�������������������������������������������4#�!� !5���#�������dl���!�!"!��[k���!�(-.-'���`k���!�/33/)�:�!���!�32*gb��z� ���!�5m���} ���!�8��VXT��v���!:�`NQK�x�v ���!y9�+5:7٠?z!�������|M{"��� k�D7:> �ZVx"���!m���V^v"���$td`�_`cilx$���Z$!� !"#$Z������������������������������������������4#�!� !5���#�������dl���!�!"!��[k���!�(-.-'���`k���!�/33/)�:�!���!�32*gb��z� ���!�5m���} ���!�8��VXT��v���!:�`NQK�x�v ���!y9�+5:7٠?z!�������|M{"��� k�D7:> �ZVx"���!m���V^v"���$td`�_`cilx$���Z$!� !"#$Z�����������������������������������������4#�!� !5���#�������dl���!�!"!��[k���!�(-.-'���`k���!�/33/)�:�!���!�32*gb��z� ���!�5m���} ���!�8��VXT��v���!:�`NQK�x�v ���!y9�+5:7٠?z!�������|M{"��� k�D7:> �ZVx"���!m���V^v"���$td`�_`cilx$���Z$!� !"#$Z�������������������������������������������������������������ѳ�����ф�����|�������Ί�����~��������ʎ����ɚ~}ȇ����Ȑ��������Ƈ����đ�҆��΋�Ç��������ђ����������ˊ�����������������������������ϑ�������������מ���������ؖ��؞����������������������������������������������������������������������4#�!� !5���#�������dl���!�!"!��[k���!�(-.-'���`k���!�/33/)�:�!���!�32*gb��z� ���!�5m���} ���!�8��VXT��v���!:�`NQK�x�v ���!y9�+5:7٠?z!�������|M{"��� k�D7:> �ZVx"���!m���V^v"���$td`�_`cilx$���Z$!� !"#$Z�������������������������������������������4#�!� !5���#�������dl���!�!"!��[k���!�(-.-'���`k���!�/33/)�:�!���!�32*gb��z� ���!�5m���} ���!�8��VXT��v���!:�`NQK�x�v ���!y9�+5:7٠?z!�������|M{"��� k�D7:> �ZVx"���!m���V^v"���$td`�_`cilx$���Z$!� !"#$Z���������������������������������������������������������������������������������ʼ����������������������������������������������������������������������������������������������������������������������������������������������������������O@?>>�=>P���@��������s���?�;=6���-�i���?�BD9���/��m~���?�DF;���S20�?���@�FH=��Q����?���@�IJ@��=GHF�@���@KK@��@KLJ@���AzMMA��@MPMzA���AtOL<��;MQPtA���BoPH���HQQoB���BjRJ��JSTjB���BdVSKGGKSWWdB���C`ZZ�X�Z`C���n�Cn�����������������������������������������
��yxxwwvwx����y���¾��������x�uwr���k������x�|~w���m�������x���{����om�x���x���~�������x���x����������x���x�����������x���x�����������x���y�����������y���y�����ݐ���y���y���������y���y�����������y���z�����������z�����z������������������������������������������p�dc�bcq���e�������������d�BE>���V������d�LPF���W�������d�SVL���tYX�c���d�Z\R��h����c���d�_aX��U^^\�d���d�eg]��]fgd�d���d�kkb��`lmk�d���d�pnb��`nrp�d���d�uo���pvv�d���d�|u��v|}�d���d���zwwz����d���e���������e�����e����������������������������������������������������������������ƺ����䕗��܌�º����䝟���ێ�ĺ����ᡣ��٭��ߗ����१��ʹ���ݖ����ު�������ݗ����ۮ���ԫ���ۗ����ڲ�������ڗ����ض��������ؗ����պ��踻�՗����ӿ������ӗ������¿������ї���������ә��������������������������������������������������4�2�����������f��������f�����$�
���h����%�*'L;�����+00/*L�#�����1551p��+����|7;:/��"47|���u>A=���9>u���lEF<��jsCEl���eIC��FJKKe���^L���IQRRQ^���W]��XV�XW���RaZ[a�bcS���X�X��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#�3#�����������������������������������9����������
����������������������������������������������^��������������������������������������®��{��	w@TPQUR�M��,?��������9�����\���u�ɸ��Į���������������������������������������������������������������#�3#�������������������������������������������������������������@�\@�����������������������������������������������������������0�30�������������������������������������������������������������#�3#�������������������������������������������������������������"�3"�������������������������������������������������������������#�3#�������������������������������������������������������������"�3"�������������������������������������������������������������"�3"�������������������������������������������������������������#�3#������������������������������������������������������������������#�3#�������������������������������������������������������#�3#��������������������������������������������������������������#�3#�������������������������������������������������������������#�3#������������������������������������������������������������#�3#�������������������������������������������������������������#�3#�������������������������������������������������������������#�3#��������������������������������������������������������������#�3#������������������������������������������������������������"�3"��������������������������������������������������������������#�3#�������������������������������������������������������������#�3#������������������������������������������������������������#�3#��������������������������������������������������������������#�3#������������������������������������������������������������"�3"����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lib/img/src/icons-big.psd000064400002163203147361034410011251 0ustar008BPS�0�j8BIMZ%GZ%G8BIM%�]�t�n�۾9���y\8BIM$o_<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        ">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:xmp="http://ns.adobe.com/xap/1.0/">
         <xmp:CreatorTool>Adobe Photoshop CS5 Macintosh</xmp:CreatorTool>
         <xmp:CreateDate>2010-09-19T17:17:49+04:00</xmp:CreateDate>
         <xmp:MetadataDate>2011-04-22T18:30:18+04:00</xmp:MetadataDate>
         <xmp:ModifyDate>2011-04-22T18:30:18+04:00</xmp:ModifyDate>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <dc:format>application/vnd.adobe.photoshop</dc:format>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
            xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
         <xmpMM:InstanceID>xmp.iid:FD7F117407206811B1BA95E37140A3C2</xmpMM:InstanceID>
         <xmpMM:DocumentID>xmp.did:01801174072068119109C4A19543BAD1</xmpMM:DocumentID>
         <xmpMM:OriginalDocumentID>xmp.did:01801174072068119109C4A19543BAD1</xmpMM:OriginalDocumentID>
         <xmpMM:History>
            <rdf:Seq>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>created</stEvt:action>
                  <stEvt:instanceID>xmp.iid:01801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:17:49+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:02801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:27:56+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:03801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:41:22+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:04801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:43:45+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:05801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:45:17+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:06801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:46:50+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:07801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:54:48+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:08801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T17:56:02+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:09801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:04:23+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0A801174072068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:04:51+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:963608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:05:17+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:973608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:09:57+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:983608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:12:55+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:993608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:15:16+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:9A3608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:18:59+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:9B3608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:19:05+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:9C3608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:22:08+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:9D3608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:24:50+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:9E3608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:27:36+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:9F3608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:31:59+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:A03608160E2068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:33:42+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:08D3AC5E122068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:35:57+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:09D3AC5E122068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:36:56+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0AD3AC5E122068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:39:46+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0BD3AC5E122068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:49:04+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0CD3AC5E122068119109C4A19543BAD1</stEvt:instanceID>
                  <stEvt:when>2010-09-19T18:50:02+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0180117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T14:32:54+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0280117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T14:49:22+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:0380117407206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T14:50:09+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:C8C4172C0E206811A3A3FC4A228C975D</stEvt:instanceID>
                  <stEvt:when>2011-02-04T15:35:46+03:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:FA7F117407206811B1BA95E37140A3C2</stEvt:instanceID>
                  <stEvt:when>2011-04-22T18:20:12+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:FC7F117407206811B1BA95E37140A3C2</stEvt:instanceID>
                  <stEvt:when>2011-04-22T18:28:45+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:FD7F117407206811B1BA95E37140A3C2</stEvt:instanceID>
                  <stEvt:when>2011-04-22T18:30:18+04:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CS5 Macintosh</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
            </rdf:Seq>
         </xmpMM:History>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
         <photoshop:ColorMode>3</photoshop:ColorMode>
         <photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
         <photoshop:TextLayers>
            <rdf:Bag>
               <rdf:li rdf:parseType="Resource">
                  <photoshop:LayerName>php</photoshop:LayerName>
                  <photoshop:LayerText>php</photoshop:LayerText>
               </rdf:li>
            </rdf:Bag>
         </photoshop:TextLayers>
         <photoshop:DocumentAncestors>
            <rdf:Bag>
               <rdf:li>xmp.did:F77F117407206811B1BA95E37140A3C2</rdf:li>
            </rdf:Bag>
         </photoshop:DocumentAncestors>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                            
<?xpacket end="w"?>8BIM:�printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitboolprinterNameTEXT8BIM;�printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd  doub@o�Grn doub@o�Bl  doub@o�BrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R
vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIM�HH8BIM&?�8BIM�
Transparency8BIM
Transparency8BIM���d8BIM5��d8BIM8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM>8BIM08BIM-,8BIM�@@U����PH%�+�28:>�D�KQ@W�]�c�jFp�v�}�M������8BIM6�nullVrsnlongenabbool	numBeforelongnumAfterlongSpcnlong
minOpacitylong
maxOpacitylong2BlnMlong8BIM3null
Vrsnlong	frameStepObjcnull	numeratorlongdenominatorlongX	frameRatedoub@>timeObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongpdenominatorlongX
workInTimeObjcnull	numeratorlongdenominatorlongXworkOutTimeObjcnull	numeratorlongpdenominatorlongXLCntlongglobalTrackListVlLs	hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIM�nullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlong�Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong�Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIMHHLinomntrRGB XYZ �	1acspMSFTIEC sRGB���-HP  cprtP3desc�lwtpt�bkptrXYZgXYZ,bXYZ@dmndTpdmdd��vuedL�view�$lumi�meas$tech0rTRC<gTRC<bTRC<textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ �Q�XYZ XYZ o�8��XYZ b����XYZ $����descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view��_.���\�XYZ L	VPW�meas�sig CRT curv
#(-27;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m��8BIM,8BIMY�
=���Adobe_CM��Adobed����			



���"����?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�E����W�N�S@}�Fͻ���$���Ҷ>чv�9�ն7M�f��nĕ�o]���?w��~-7[�������mu�@�8��څF���;M��Sg��o�����"J��0>�n��z�����ݸ��������o?����Cm�}�����W�w��?M�~g�T�/C/��7��v�Ws7�;�����{6o��II�_�����g���˙�~��=}2vS�G����n�?�^��k�i(7"��>g��3u>ٝ�mv�S�s}?��D��m?��M����8���a������F.f�>��P���F����t��=O��4��)��f?�@w������/������?��$���~����E=Ky�}^����A�cV�G���;�o�/O�2J���zE�f���h�~���k��}�o�������$�����?����^�g�j���v��ĸ3�o��~w���I;�zDz�����{�}I���v�����ǩ�vRS_�O�b�u�ؿ���?k�L��?����g�~�����7�����RA�K��_�Tm�O}�����/��Є���2|����j��8~l/�7���}G��w�ϫ������N}?�z����/K��7�������x>��,���Vm�Of���_��jU�G���_7��|���{��8��'�������x9�l�w�5���_�{��뾇��Id��7d�Q�Ȋr��o��e���z����1��/~�v��:n�!�x�
��o��8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM".MM*bj(1r2��i��
��'
��'Adobe Photoshop CS5 Macintosh2011:04:22 18:30:18��0��&(.HH8BIM��mopt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4TargetSettingsMttCObjc
NativeQuadBl  long�Grn long�Rd  long�Trnsbool
fileFormatenum
FileFormatPNG24
interlacedboolnoMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM��msetnullHTMLBackgroundSettingsObjcnullBackgroundColorBluelong�BackgroundColorGreenlong�BackgroundColorRedlong�BackgroundColorStatelongBackgroundImagePathTEXTUseImageAsBackgroundboolHTMLSettingsObjcnullAlwaysAddAltAttributebool
AttributeCaselongCloseAllTagsboolEncodinglongFileSavingSettingsObjcnull
CopyBackgroundboolDuplicateFileNameBehaviorlongHtmlFileNameComponentsVlLslonglonglonglonglonglongImageSubfolderNameTEXTimagesNameCompatibilityObjcnull
NameCompatMacboolNameCompatUNIXboolNameCompatWindowsboolOutputMultipleFilesboolSavingFileNameComponentsVlLs	longlonglonglonglonglonglonglonglongSliceFileNameComponentsVlLslonglonglonglonglonglongUseImageSubfolderboolUseLongExtensionsboolGoLiveCompatibleboolImageMapLocationlongImageMapTypelongIncludeCommentsboolIncludeZeroMarginsboolIndentlong����LineEndingslongOutputXHTMLboolQuoteAllAttributesboolSpacersEmptyCellslongSpacersHorizontallongSpacersVerticallongStylesFormatlong
TDWidthHeightlongTagCaselongUseCSSboolUseLongHTMLExtensionboolMetadataOutputSettingsObjcnullAddCustomIRboolAddEXIFboolAddXMPboolAddXMPSourceFileURIboolColorPolicylongMetadataPolicylongWriteMinimalXMPboolWriteXMPToSidecarFilesboolVersionlong8BIM�ms4w8BIM�maniIRFR�8BIMAnDs�nullAFStlongFrInVlLsObjcnullFrIDlonggN�FrDllong�FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslonggN�LCntlong8BIMRoll8BIM�mfrix���0,�����b8BIMnorm�
�(��������������������unknown8BIMluniunknown8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�M�r8BIMPlLdxplcL$63b0519e-047e-1173-a2a2-eaea0594271a�?�@F?�@F@H��@H�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%63b0519e-047e-1173-a2a2-eaea0594271aplacedTEXT%d5f75db0-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub�doub?�doub@Fdoub?�doub@Fdoub@H�doub�doub@H�nonAffineTransformVlLsdoub�doub?�doub@Fdoub?�doub@Fdoub@H�doub�doub@H�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp�?�C0������8BIMnorm�<(��������������������Layer 58BIMluniLayer 58BIMlnsrlayr8BIMlyid,8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�ld8.[>8BIMfxrp?��":]+��J���8BIMnorm�
�(��������������������
folder_closed8BIMluni 
folder_closed8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�NH�8BIMPlLdxplcL$6ef1e0ad-047e-1173-a2a2-eaea0594271a@@F�@I@F�@I@W@@@W@warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6ef1e0ad-047e-1173-a2a2-eaea0594271aplacedTEXT%d5f75db3-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub@doub@F�doub@Idoub@F�doub@Idoub@W@doub@doub@W@nonAffineTransformVlLsdoub@doub@F�doub@Idoub@F�doub@Idoub@W@doub@doub@W@warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp@@F�M}/���n��8BIMnorm�
�(��������������������tar_gz8BIMlunitar_gz8BIMlnsrrend8BIMlyid!8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Nm@8BIMPlLdxplcL$60c01c09-0488-1173-a2a2-eaea0594271a��@�4@G�@�4@G�@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%60c01c09-0488-1173-a2a2-eaea0594271aplacedTEXT%d5f75db6-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�4doub@G�doub@�4doub@G�doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@�4doub@G�doub@�4doub@G�doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�4�/���q��8BIMnorm�
�(��������������������tar_bz8BIMlunitar_bz8BIMlnsrrend8BIMlyid"8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�N��8BIMPlLdxplcL$619aeb1b-0488-1173-a2a2-eaea0594271a��@��@G�@��@G�@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%619aeb1b-0488-1173-a2a2-eaea0594271aplacedTEXT%faa87fc0-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@��doub@G�doub@��doub@G�doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@��doub@G�doub@��doub@G�doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@����/���Hm\8BIMnorm�
�(��������������������rar8BIMlunirar8BIMlnsrrend8BIMlyid#8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�N�o8BIMPlLdxplcL$6a10139e-0488-1173-a2a2-eaea0594271a�陙����@��33333@G������@��33333@G������@��33333�陙����@��33333warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6a10139e-0488-1173-a2a2-eaea0594271aplacedTEXT%faa87fc3-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub�陙����doub@��33333doub@G������doub@��33333doub@G������doub@��33333doub�陙����doub@��33333nonAffineTransformVlLsdoub�陙����doub@��33333doub@G������doub@��33333doub@G������doub@��33333doub�陙����doub@��33333warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp�陙����@��33333���/���A8BIMnorm�
�(��������������������swf8BIMluniswf8BIMlnsrrend8BIMlyid$8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�N��8BIMPlLdxplcL$53a52047-0489-1173-a2a2-eaea0594271a��@��@G�@��@G�@�L��@�Lwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%53a52047-0489-1173-a2a2-eaea0594271aplacedTEXT%faa87fc6-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�Ldoub��doub@�LnonAffineTransformVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�Ldoub��doub@�LwarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@��U�0��gps8BIMnorm�<(��������������������Layer 48BIMluniLayer 48BIMlnsrlayr8BIMlyid&8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc���8BIMfxrp@X@��/����8BIMnorm�
�(��������������������application8BIMluniapplication8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�OHM8BIMPlLdxplcL$20883df8-0480-1173-a2a2-eaea0594271a��@b�@G�@b�@G�@h���@h�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%20883df8-0480-1173-a2a2-eaea0594271aplacedTEXT%faaa2896-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@b�doub@G�doub@b�doub@G�doub@h�doub��doub@h�nonAffineTransformVlLsdoub��doub@b�doub@G�doub@b�doub@G�doub@h�doub��doub@h�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@b�-].������8BIMnorm�
�(��������������������audio8BIMluniaudio8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�On�8BIMPlLdxplcL$928d337a-0482-1173-a2a2-eaea0594271a�@r�@G@r�@G@u��@u�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%928d337a-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa2899-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub�doub@r�doub@Gdoub@r�doub@Gdoub@u�doub�doub@u�nonAffineTransformVlLsdoub�doub@r�doub@Gdoub@r�doub@Gdoub@u�doub�doub@u�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp�@r�_�0���dv^8BIMnorm�
�(��������������������video8BIMlunivideo8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�O�8BIMPlLdxplcL$a01c1b80-0482-1173-a2a2-eaea0594271a@u�@H@u�@H@x�@x�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%a01c1b80-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa289c-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@u�doub@Hdoub@u�doub@Hdoub@x�doubdoub@x�nonAffineTransformVlLsdoubdoub@u�doub@Hdoub@u�doub@Hdoub@x�doubdoub@x�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp@u���0���t�[8BIMnorm�
�(��������������������txt8BIMlunitxt8BIMlnsrrend8BIMlyid	8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�O�38BIMPlLdxplcL$00ebdf9f-0482-1173-a2a2-eaea0594271a@i @H@i @H@o @o warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%00ebdf9f-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa289f-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@i doub@Hdoub@i doub@Hdoub@o doubdoub@o nonAffineTransformVlLsdoubdoub@i doub@Hdoub@i doub@Hdoub@o doubdoub@o warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp@i ��0���Qy8BIMnorm�
�(��������������������rtf8BIMlunirtf8BIMlnsrrend8BIMlyid
8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�P}8BIMPlLdxplcL$c782a35c-0482-1173-a2a2-eaea0594271a@y@H@y@H@|@|warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%c782a35c-0482-1173-a2a2-eaea0594271aplacedTEXT%faabed85-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ydoub@Hdoub@ydoub@Hdoub@|doubdoub@|nonAffineTransformVlLsdoubdoub@ydoub@Hdoub@ydoub@Hdoub@|doubdoub@|warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp@y��0���@�V8BIMnorm�
�(��������������������pdf8BIMlunipdf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�P;~8BIMPlLdxplcL$dfc1d08c-0483-1173-a2a2-eaea0594271a@|0@H@|0@H@0@0warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%dfc1d08c-0483-1173-a2a2-eaea0594271aplacedTEXT%faabed88-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@|0doub@Hdoub@|0doub@Hdoub@0doubdoub@0nonAffineTransformVlLsdoubdoub@|0doub@Hdoub@|0doub@Hdoub@0doubdoub@0warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp@|0�%-�����8BIMnorm�
�(��������������������office8BIMlunioffice8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Pqi8BIMPlLdxplcL$fbf50e48-0483-1173-a2a2-eaea0594271a�@`@F�@`@F�@�0�@�0warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%fbf50e48-0483-1173-a2a2-eaea0594271aplacedTEXT%faabed8b-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub�doub@`doub@F�doub@`doub@F�doub@�0doub�doub@�0nonAffineTransformVlLsdoub�doub@`doub@F�doub@`doub@F�doub@�0doub�doub@�0warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp�@`'����V/���y�>8BIMnorm�
�(��������������������html8BIMlunihtml8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�P��8BIMPlLdxplcL$09ed4b52-0484-1173-a2a2-eaea0594271a��@�8@G�@�8@G�@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%09ed4b52-0484-1173-a2a2-eaea0594271aplacedTEXT%faabed8e-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�8doub@G�doub@�8doub@G�doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@�8doub@G�doub@�8doub@G�doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�8Y�/�����8BIMnorm�
�(��������������������css8BIMlunicss8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�P�}8BIMPlLdxplcL$39292081-0485-1173-a2a2-eaea0594271a��@��@G�@��@G�@�H��@�Hwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%39292081-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbec-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�Hdoub��doub@�HnonAffineTransformVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�Hdoub��doub@�HwarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@����/������8BIMnorm�
�(��������������������pl8BIMlunipl8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�P��8BIMPlLdxplcL$7d242227-0485-1173-a2a2-eaea0594271a��@��@G�@��@G�@�h��@�hwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%7d242227-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbef-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�hdoub��doub@�hnonAffineTransformVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�hdoub��doub@�hwarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@���/����	�8BIMnorm�
�(��������������������py8BIMlunipy8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Q/8BIMPlLdxplcL$e25c83d8-0485-1173-a2a2-eaea0594271a��@�x@G�@�x@G�@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%e25c83d8-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbf2-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�xdoub@G�doub@�xdoub@G�doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@�xdoub@G�doub@�xdoub@G�doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�x!P/�����8BIMnorm�
�(��������������������rb8BIMlunirb8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�QX\8BIMPlLdxplcL$f3bba182-0485-1173-a2a2-eaea0594271a��@�@G�@�@G�@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%f3bba182-0485-1173-a2a2-eaea0594271aplacedTEXT%faaf1392-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�doub@G�doub@�doub@G�doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@�doub@G�doub@�doub@G�doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�S�/�����8BIMnorm�
�(��������������������sh8BIMlunish8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Q�8BIMPlLdxplcL$bc26a07a-0486-1173-a2a2-eaea0594271a��@��@G�@��@G�@���@�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%bc26a07a-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf1395-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�doub��doub@�nonAffineTransformVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�doub��doub@�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@����/�����8BIMnorm�
�(��������������������c++8BIMlunic++8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Q�q8BIMPlLdxplcL$bdafd78e-0486-1173-a2a2-eaea0594271a��@�(@G�@�(@G�@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%bdafd78e-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf1398-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�(doub@G�doub@�(doub@G�doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@�(doub@G�doub@�(doub@G�doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�(��/������8BIMnorm�
�(��������������������pl8BIMlunipl8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Qٙ8BIMPlLdxplcL$ebc7ebeb-0486-1173-a2a2-eaea0594271a��@��@G�@��@G�@�8��@�8warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%ebc7ebeb-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf139b-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�8doub��doub@�8nonAffineTransformVlLsdoub��doub@��doub@G�doub@��doub@G�doub@�8doub��doub@�8warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@������////8BIMnorm�<(��������������������Layer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�R�8BIMfxrp�$�(����////8BIMnorm�<(��������������������Layer 28BIMluniLayer 28BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�R:�8BIMfxrp��*�����&&&8BIMnorm�%d(��������������������php8BIMTySh$(?�?�@@�2TxLrTxt TEXTphptextGriddingenumtextGriddingNoneOrntenumOrntHrznAntAenumAnntantiAliasSharp	TextIndexlong
EngineDatatdta"\

<<
	/EngineDict
	<<
		/Editor
		<<
			/Text (��php
)
		>>
		/ParagraphRun
		<<
			/DefaultRunData
			<<
				/ParagraphSheet
				<<
					/DefaultStyleSheet 0
					/Properties
					<<
					>>
				>>
				/Adjustments
				<<
					/Axis [ 1.0 0.0 1.0 ]
					/XY [ 0.0 0.0 ]
				>>
			>>
			/RunArray [
			<<
				/ParagraphSheet
				<<
					/DefaultStyleSheet 0
					/Properties
					<<
						/Justification 0
						/FirstLineIndent 0.0
						/StartIndent 0.0
						/EndIndent 0.0
						/SpaceBefore 0.0
						/SpaceAfter 0.0
						/AutoHyphenate true
						/HyphenatedWordSize 6
						/PreHyphen 2
						/PostHyphen 2
						/ConsecutiveHyphens 8
						/Zone 36.0
						/WordSpacing [ .8 1.0 1.33 ]
						/LetterSpacing [ 0.0 0.0 0.0 ]
						/GlyphSpacing [ 1.0 1.0 1.0 ]
						/AutoLeading 1.2
						/LeadingType 0
						/Hanging false
						/Burasagari false
						/KinsokuOrder 0
						/EveryLineComposer false
					>>
				>>
				/Adjustments
				<<
					/Axis [ 1.0 0.0 1.0 ]
					/XY [ 0.0 0.0 ]
				>>
			>>
			]
			/RunLengthArray [ 4 ]
			/IsJoinable 1
		>>
		/StyleRun
		<<
			/DefaultRunData
			<<
				/StyleSheet
				<<
					/StyleSheetData
					<<
					>>
				>>
			>>
			/RunArray [
			<<
				/StyleSheet
				<<
					/StyleSheetData
					<<
						/Font 0
						/FontSize 10.0
						/FauxBold false
						/FauxItalic false
						/AutoLeading true
						/Leading .01
						/HorizontalScale 1.0
						/VerticalScale 1.0
						/Tracking -10
						/AutoKerning true
						/Kerning 0
						/BaselineShift 0.0
						/FontCaps 0
						/FontBaseline 0
						/Underline false
						/Strikethrough false
						/Ligatures true
						/DLigatures false
						/BaselineDirection 1
						/Tsume 0.0
						/StyleRunAlignment 2
						/Language 0
						/NoBreak false
						/FillColor
						<<
							/Type 1
							/Values [ 1.0 1.0 1.0 1.0 ]
						>>
						/StrokeColor
						<<
							/Type 1
							/Values [ 1.0 0.0 0.0 0.0 ]
						>>
						/FillFlag true
						/StrokeFlag false
						/FillFirst false
						/YUnderline 1
						/OutlineWidth .4
						/CharacterDirection 0
						/HindiNumbers false
						/Kashida 1
						/DiacriticPos 2
					>>
				>>
			>>
			]
			/RunLengthArray [ 4 ]
			/IsJoinable 2
		>>
		/GridInfo
		<<
			/GridIsOn false
			/ShowGrid false
			/GridSize 18.0
			/GridLeading 22.0
			/GridColor
			<<
				/Type 1
				/Values [ 0.0 0.0 0.0 1.0 ]
			>>
			/GridLeadingFillColor
			<<
				/Type 1
				/Values [ 0.0 0.0 0.0 1.0 ]
			>>
			/AlignLineHeightToGridFlags false
		>>
		/AntiAlias 4
		/UseFractionalGlyphWidths true
		/Rendered
		<<
			/Version 1
			/Shapes
			<<
				/WritingDirection 0
				/Children [
				<<
					/ShapeType 0
					/Procession 0
					/Lines
					<<
						/WritingDirection 0
						/Children [ ]
					>>
					/Cookie
					<<
						/Photoshop
						<<
							/ShapeType 0
							/PointBase [ 0.0 0.0 ]
							/Base
							<<
								/ShapeType 0
								/TransformPoint0 [ 1.0 0.0 ]
								/TransformPoint1 [ 0.0 1.0 ]
								/TransformPoint2 [ 0.0 0.0 ]
							>>
						>>
					>>
				>>
				]
			>>
		>>
	>>
	/ResourceDict
	<<
		/KinsokuSet [
		<<
			/Name (��PhotoshopKinsokuHard)
			/NoStart (��00��0�����0�   �	0�=�]0	00
000�0�0�0�00A0C0E0G0I0c0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�?!\)]},.:;!!	�� 0)
			/NoEnd (��  �0�;�[00
000\([{���� �0�)
			/Keep (��  %)
			/Hanging (��00.,)
		>>
		<<
			/Name (��PhotoshopKinsokuSoft)
			/NoStart (��00��0�����  �	0�=�]0	00
000�0�0�0�0)
			/NoEnd (��  �0�;�[00
000)
			/Keep (��  %)
			/Hanging (��00.,)
		>>
		]
		/MojiKumiSet [
		<<
			/InternalName (��Photoshop6MojiKumiSet1)
		>>
		<<
			/InternalName (��Photoshop6MojiKumiSet2)
		>>
		<<
			/InternalName (��Photoshop6MojiKumiSet3)
		>>
		<<
			/InternalName (��Photoshop6MojiKumiSet4)
		>>
		]
		/TheNormalStyleSheet 0
		/TheNormalParagraphSheet 0
		/ParagraphSheetSet [
		<<
			/Name (��Normal RGB)
			/DefaultStyleSheet 0
			/Properties
			<<
				/Justification 0
				/FirstLineIndent 0.0
				/StartIndent 0.0
				/EndIndent 0.0
				/SpaceBefore 0.0
				/SpaceAfter 0.0
				/AutoHyphenate true
				/HyphenatedWordSize 6
				/PreHyphen 2
				/PostHyphen 2
				/ConsecutiveHyphens 8
				/Zone 36.0
				/WordSpacing [ .8 1.0 1.33 ]
				/LetterSpacing [ 0.0 0.0 0.0 ]
				/GlyphSpacing [ 1.0 1.0 1.0 ]
				/AutoLeading 1.2
				/LeadingType 0
				/Hanging false
				/Burasagari false
				/KinsokuOrder 0
				/EveryLineComposer false
			>>
		>>
		]
		/StyleSheetSet [
		<<
			/Name (��Normal RGB)
			/StyleSheetData
			<<
				/Font 1
				/FontSize 12.0
				/FauxBold false
				/FauxItalic false
				/AutoLeading true
				/Leading 0.0
				/HorizontalScale 1.0
				/VerticalScale 1.0
				/Tracking 0
				/AutoKerning true
				/Kerning 0
				/BaselineShift 0.0
				/FontCaps 0
				/FontBaseline 0
				/Underline false
				/Strikethrough false
				/Ligatures true
				/DLigatures false
				/BaselineDirection 2
				/Tsume 0.0
				/StyleRunAlignment 2
				/Language 0
				/NoBreak false
				/FillColor
				<<
					/Type 1
					/Values [ 1.0 0.0 0.0 0.0 ]
				>>
				/StrokeColor
				<<
					/Type 1
					/Values [ 1.0 0.0 0.0 0.0 ]
				>>
				/FillFlag true
				/StrokeFlag false
				/FillFirst true
				/YUnderline 1
				/OutlineWidth 1.0
				/CharacterDirection 0
				/HindiNumbers false
				/Kashida 1
				/DiacriticPos 2
			>>
		>>
		]
		/FontSet [
		<<
			/Name (��ArialMT)
			/Script 0
			/FontType 1
			/Synthetic 0
		>>
		<<
			/Name (��MyriadPro-Regular)
			/Script 0
			/FontType 0
			/Synthetic 0
		>>
		<<
			/Name (��AdobeInvisFont)
			/Script 0
			/FontType 0
			/Synthetic 0
		>>
		]
		/SuperscriptSize .583
		/SuperscriptPosition .333
		/SubscriptSize .583
		/SubscriptPosition .333
		/SmallCapSize .7
	>>
	/DocumentResources
	<<
		/KinsokuSet [
		<<
			/Name (��PhotoshopKinsokuHard)
			/NoStart (��00��0�����0�   �	0�=�]0	00
000�0�0�0�00A0C0E0G0I0c0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�?!\)]},.:;!!	�� 0)
			/NoEnd (��  �0�;�[00
000\([{���� �0�)
			/Keep (��  %)
			/Hanging (��00.,)
		>>
		<<
			/Name (��PhotoshopKinsokuSoft)
			/NoStart (��00��0�����  �	0�=�]0	00
000�0�0�0�0)
			/NoEnd (��  �0�;�[00
000)
			/Keep (��  %)
			/Hanging (��00.,)
		>>
		]
		/MojiKumiSet [
		<<
			/InternalName (��Photoshop6MojiKumiSet1)
		>>
		<<
			/InternalName (��Photoshop6MojiKumiSet2)
		>>
		<<
			/InternalName (��Photoshop6MojiKumiSet3)
		>>
		<<
			/InternalName (��Photoshop6MojiKumiSet4)
		>>
		]
		/TheNormalStyleSheet 0
		/TheNormalParagraphSheet 0
		/ParagraphSheetSet [
		<<
			/Name (��Normal RGB)
			/DefaultStyleSheet 0
			/Properties
			<<
				/Justification 0
				/FirstLineIndent 0.0
				/StartIndent 0.0
				/EndIndent 0.0
				/SpaceBefore 0.0
				/SpaceAfter 0.0
				/AutoHyphenate true
				/HyphenatedWordSize 6
				/PreHyphen 2
				/PostHyphen 2
				/ConsecutiveHyphens 8
				/Zone 36.0
				/WordSpacing [ .8 1.0 1.33 ]
				/LetterSpacing [ 0.0 0.0 0.0 ]
				/GlyphSpacing [ 1.0 1.0 1.0 ]
				/AutoLeading 1.2
				/LeadingType 0
				/Hanging false
				/Burasagari false
				/KinsokuOrder 0
				/EveryLineComposer false
			>>
		>>
		]
		/StyleSheetSet [
		<<
			/Name (��Normal RGB)
			/StyleSheetData
			<<
				/Font 1
				/FontSize 12.0
				/FauxBold false
				/FauxItalic false
				/AutoLeading true
				/Leading 0.0
				/HorizontalScale 1.0
				/VerticalScale 1.0
				/Tracking 0
				/AutoKerning true
				/Kerning 0
				/BaselineShift 0.0
				/FontCaps 0
				/FontBaseline 0
				/Underline false
				/Strikethrough false
				/Ligatures true
				/DLigatures false
				/BaselineDirection 2
				/Tsume 0.0
				/StyleRunAlignment 2
				/Language 0
				/NoBreak false
				/FillColor
				<<
					/Type 1
					/Values [ 1.0 0.0 0.0 0.0 ]
				>>
				/StrokeColor
				<<
					/Type 1
					/Values [ 1.0 0.0 0.0 0.0 ]
				>>
				/FillFlag true
				/StrokeFlag false
				/FillFirst true
				/YUnderline 1
				/OutlineWidth 1.0
				/CharacterDirection 0
				/HindiNumbers false
				/Kashida 1
				/DiacriticPos 2
			>>
		>>
		]
		/FontSet [
		<<
			/Name (��ArialMT)
			/Script 0
			/FontType 1
			/Synthetic 0
		>>
		<<
			/Name (��MyriadPro-Regular)
			/Script 0
			/FontType 0
			/Synthetic 0
		>>
		<<
			/Name (��AdobeInvisFont)
			/Script 0
			/FontType 0
			/Synthetic 0
		>>
		]
		/SuperscriptSize .583
		/SuperscriptPosition .333
		/SubscriptSize .583
		/SubscriptPosition .333
		/SmallCapSize .7
	>>
>>warp	warpStyleenum	warpStylewarpNone	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrzn8BIMluniphp8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Z�8BIMfxrp@�/�����8BIMnorm�
�(��������������������xml8BIMlunixml8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Z*�8BIMPlLdxplcL$10ef980d-0488-1173-a2a2-eaea0594271a��@�H@G�@�H@G�@�d��@�dwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%10ef980d-0488-1173-a2a2-eaea0594271aplacedTEXT%fac41c07-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�Hdoub@G�doub@�Hdoub@G�doub@�ddoub��doub@�dnonAffineTransformVlLsdoub��doub@�Hdoub@G�doub@�Hdoub@G�doub@�ddoub��doub@�dwarpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�HK/���@fT8BIMnorm�
�(��������������������zip8BIMlunizip8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�ZT�8BIMPlLdxplcL$16ba0847-0488-1173-a2a2-eaea0594271a��@�l@G�@�l@G�@�,��@�,warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%16ba0847-0488-1173-a2a2-eaea0594271aplacedTEXT%fac41c0a-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�ldoub@G�doub@�ldoub@G�doub@�,doub��doub@�,nonAffineTransformVlLsdoub��doub@�ldoub@G�doub@�ldoub@G�doub@�,doub��doub@�,warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�l��/������8BIMnorm�
�(��������������������js8BIMlunijs8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Z}|8BIMPlLdxplcL$4c02335c-0485-1173-a2a2-eaea0594271a��@�X@G�@�X@G�@����@��warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%4c02335c-0485-1173-a2a2-eaea0594271aplacedTEXT%fac41c0d-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@�Xdoub@G�doub@�Xdoub@G�doub@��doub��doub@��nonAffineTransformVlLsdoub��doub@�Xdoub@G�doub@�Xdoub@G�doub@��doub��doub@��warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@�Xl�����/������8BIMnorm�
�(��������������������folder_open8BIMlunifolder_open8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Z�78BIMPlLdxplcL$94592e07-047e-1173-a2a2-eaea0594271a��@W�@G�@W�@G�@a���@a�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%94592e07-047e-1173-a2a2-eaea0594271aplacedTEXT%fac41c10-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@W�doub@G�doub@W�doub@G�doub@a�doub��doub@a�nonAffineTransformVlLsdoub��doub@W�doub@G�doub@W�doub@G�doub@a�doub��doub@a�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@W��+/������8BIMnorm�
�(��������������������image8BIMluniimage8BIMlnsrrend8BIMlyid
8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata	layerTimedoubA�lc�Z��8BIMPlLdxplcL$6959b6d6-0482-1173-a2a2-eaea0594271a��@o`@G�@o`@G�@r���@r�warp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6959b6d6-0482-1173-a2a2-eaea0594271aplacedTEXT%fac5ae2e-ad79-1173-b145-c2ce92730991PgNmlong
totalPageslong	frameStepObjcnull	numeratorlongdenominatorlongXdurationObjcnull	numeratorlongdenominatorlongX
frameCountlongAnntlongTypelongTrnfVlLsdoub��doub@o`doub@G�doub@o`doub@G�doub@r�doub��doub@r�nonAffineTransformVlLsdoub��doub@o`doub@G�doub@o`doub@G�doub@r�doub��doub@r�warpObjcwarp		warpStyleenum	warpStyle
warpCustom	warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub
warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp
meshPointsObAr
rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz  ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R��8BIMfxrp��@o`
									
	���������������������r��G��"����������������������������������������������!�*2@AABCE�@2  #%(&'("($   )&$ &$&&% !
�����ͯ���������˺�������������ƹ������������������������������
�����Ų���������������������������������
����Ŀ��þ���������������������Ŀ��������������������Ž���������������������ļ�����������u��������Ž�����������u�������������˳���~z��������½�u��������ʛ����yw��������þ�u���������ɛ�����{y���������Ŀ�u��������ɭ�����������������ſ�u������������������������ƿ�v����������Ä��������uom��������ƽ���������������º���pn��������������������¼���mk��������������������þ��plr�������������������¾�zrr����������������
�®~{z���������������������������������¨�}z��������������������������������������������������������à��������������������������Ÿ���������������������������������������������������������������������������������������������	������������ÿ����������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������߲�������������������ۗ�!#!#&$''$!))#$(%(!&$!&!" %$
������������������������������������������
��������������������������������	�����������
���������������������������������������
������������������������������������������������μ����������������������ͻ����������	w����������������ͻ����������	w������������н���������������	w������������湣�����������������w���������������������������w�����������Ȥ�������������w���%����������氣�������ž�������������z����%����������⣣�������ɰ�������������ϵ�����ϣ������������������������������������ś����������������������������������ӽ������������������������ɗ���������Į�����������͜�����������ϳ����������������ǟ���������������׵���������͢�����	�������㿿�����ߧ�������������������ţ������������㽽��������������������������㽽��������
����������������������ⴣ��������������������ỻ�������������������������⹹���������������������������������������������������Ḹ������������������������Ḹ��������������෷��������������෷������������������߷�������������������������������߷�����������������������������෷������������
��������߷����������������߷������߷��������߷�������۷�!"&$'&%$)() (&)$$%' &

��������������������������������������������
�������������������
�������������������������	�������������
������ﵵ�����������������������������������������������������	������������������������������������������G::���������������������������G::����������������ֿ�����������G::���������������
����������������::��������������	����������������:�����������������������������%���������������������������������������������������ϴ���������������%������������������ڽ�������������������������޻����������������������������������׫�������������������������������൭���	��������������!���������������㹶�����������������������������༸������������������������������������������������������������	�Ŀ����������������������������������������������������������������������������������������������	����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������


����9�������������������������������������������������������������������������������������������������������������������������������� " "'(&'/--.)/0'0&+'*$0&+('-*/!'#"

����	���Ҵ�����������������ü���s��������̽���%�x�������������x����������������Ҽ������x����������ü�����̷����s��x���������̽�����ů������r���������������ª������������ �����������Ҽ�����§�������� ������ ���ü������̷�����ħ�����������������̽������ů�����ũ�������������������������ª�����ܭ��������ڸ����������!����Ҽ������§������������������������!����̷������ħ�������Ϭ��������ݸ�������#������ů������ũ�������־�����������$�����������������ª������ƭ��������ڶ���������������§������ӳ�����������������	��������������ħ�������Ш����������������������������ũ�������ֿ���������������˹��������ƭ��������ڷ��������������������������dz���������¤���������������������˷���������������������������������̾�����������������˹��������������÷��������������������������ƺ���������������������������������ý����������������������������������������������˹�����������ֿ����������������������վ�����������������������������������ս����������
���������������ս������������	��������ֿ���Ӿ������������վ�����ҽ�������������������������������ս�����ѽ�����������ս���н�������������������ֿ��	�Ӿ�����н����������������������������վ�����ҽ���Ͻ�����	ս������ѽ��׾�����ս���н�������
�Ӿ������н������������������ҽ���Ͻ���������������������������ѽ��׾��������������������н����������������������н�����������Ͻ������׾�������������� #!)%*'/+//)-/.'&')/%,-)"!.+ *$' 

	����
�����������������������
�������
�t��������
�������'�y����������������	�������y�������������������������y��������������������������t��y�������������������������s�������������������������ս��������������������������Ժ������ �������� ������������������ֻ��������������������������������ؽ����������������������������������ս����������������������������������Ժ�������������������!������������ֻ������罹���������������!������������ؽ�������֪�����������������������ս��������������������������&���������Ժ��������������׵���������������ֻ������軽���������������������ؽ�������װ������������������������������͵��
�������������������������������ض�������������������������������̻�����������������������������Ҿ����������������������������������ɻ���������������������������������������������������������������������������������������	������������������������������������������������������������������������	�������������
����������������������
���������������	�������������������������������������������������������������������������	������������������������	���������������������������������������������������������������������
��������������������������������������������������������������
����������������������������������������������������������������������������������������������������#"* $(0&).()./00-)0./'//+*,0*%)(##


���������������������������������
�����4��~���������
�����<������������������
����������������������������������������������������������~��������������������������}���������������������������:#(����%����������������������������������2U���������������������������N������������������������������������������
�������������������������� ������������������������������������������������������������������������������
����������������
����������������������������������������"��������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ �������������������������������	����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������



������%�������������`��*�������������
���
����	������������������������������������������'e�܂$	$99:;;=�9=;;:99$') $*
%"# "

����s��}������������~}|}�����������������}������������~}|}����p���������������~}|}���������¾����ًy��������������~}|}�����������������������~}|}e�������}e�����������������p�S���������������������
_e�����������������������������u	�n~���������������������	�������������t�i}�ޑ�s
�`}���������������������������r�k}�������������������r�x}������������p��}�������������������~oƜ~������������������������~o
�~������������������
���������~n����������������������~m��~������������������}l��~�����}l�~��������������������}j��z���������������������|i��z�������{i��z���������{h��z����������������{h��z�������������������{g��z�~�~~~�~~~�~zf�z�~~}}�~}�~}�~zf�z��}|�}|}}|�}{f�{��|}�|}�|}||}}|}ze�z��|�{�|�{|�{|{�|�{|{{ye�v��k�j�k�l�m�n�o�pqxze�l�{oz\�;�jdW�() # 
*$!%
!)

����������������������������������������������������������������������������������������������������櫞�������������������������ı���������������������������ϲ������ؽ����
���������հ���p�׼��������������¦
_}�ջ��������������������������~�Ӹ������������������������z��޻���z��������������������������������������к������������������������������Δ�����������������������Ц�˷��������������������������ụ�������������������������Ѧȶ������������������������������������������������޳�����²������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ު����Nލ�r�'
%$"# "#%

�����������������������������������������������������������������������������������������������������������������̏�����������������}������������������������������������
���������������	������������������	���������������������������ӽ������������߾�������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	�����������������������������������������������������������������������������������������������������������������������������p�����
			
		�������������������������r��G��"�����������������������������������������8��8���������������������*��@22@AABCE�@2�%"(*...+ !'#""!"+'#+!((&"($&('��������ͯ��������������˺�����������������ƹ����������������������������������������Ų��������
����������������������
�Ŀ��þ��������������蚭�����������Ŀ�������ꘘ���笘瘗���񘐽�����������������𩕕��敕�������������u��(�𕕔�𩕕攕�𔔩攕�������������u��(�擧��𒒓����撧������������½�u�������������������������þ�u���������������������Ŀ�u��������������������ſ�u�������������������������ƿ�v���������������������������������ƽ�������������º���������������������������¼���������������������������þ��������������������������¾���������������������
�¿��������������������������������������¿�����������������������������������������������������à������������������������Ÿ�������������������
����������������������ș�������������������������ə������	������������ٔ����ș�����������������Ǚ��������������������ߴ��	����ƙ����������������ݴ����������ř������������������ߴ����������Ù�������������������������Ù�������������������ߵ������������������������ݷ������	������������������������޷���������˿�����������������ݸ������������ʾ���������������ݸ����������ɼ������������������ܹ���������Ȼ�������������������ܹ���������Ǻ��������ϔ���ϔǹ����������������������������������������ŷ�������������������%%"(*...+ )*&*'*"&*("%#**-( q�����������������q��������������������������q������
�����������q�������������p�qpqpqqp�qpq�p�qp������������n
������������j�k�j�kjk�j�k�j
�������������g��g���gg��g����g��g������������d�d�ddc�d�ۂd�dc��d��d��μ����������a`�a����a�`a�``a�a�a`��ͻ����������	w��_(�^�__^�_�~__�^_��^^}�^_��ͻ����������	w��\(�\�]{��\�\\]|��{�\{�\{\��Ͻ����������	w��[��{��{�\�[�[�[��\��п�����������w��YX�Y��YX���������������w��YX�Yc���ý������������w��Y	����������������������������������z���Y��	������������������ɰ�������������ϵ��Y�������������������������Y��������������ź���������������Y���������������������Ǽ�������������Y��������������½������Į�l�������������������������ϳ��l��������������������������������׵��l��������������	�������㿿�l����������l���������������������㽽�l����������㽽�lk�w��������������k�������j~z������~�}�|{�y�~~j��������ỻ�i~j�~j~i����������⹹�h�|�L�Q	T�||h�������g���U�c[�uug�������e~�U�s���s
c�ssf������������Ḹ�e�}�U������j�rqe��������Ḹ�c�|�U�n�����o	b�ppc���������෷�a{y�U�����m�ooa����������෷�`�x�W�{��{j�ll`������߷��^�x�W{||������}l�kk_���������߷��^wv�Xggil����l�ia�ji^�����������෷�\�u�Xxyyz���Ӄ�{	n�hh\������
��������߷��[�s�X�q�r���́�r	i�ggZ����������߷��Zrq�X�l����lf�feZ����߷��Yqjq�qjfY�����߷��X�l�k�jihh�gf�ed�aW������Wmkmjihh�gf�e�d�cac``W�UVWVUVVUWVV�U�V�UWUWVUVVU��%"(*.--*)'+"*(+&&%()'#$ #&!������������������������������������������������������
������������������������������������������������������
�����ﵵ�������������������������������摦�����������������菏���奏収��	��������������������䌌�������������G::�������䊋��䊋�����������G::����䉟������㈟������������G::�������������������������::����������������������:������
�����������������
����������������������
�������������������������
�������������%���������������������������������������������������������������������������������������������������������������������������������	����������6�����!����������������������������������6����������������������������������6��������������������������������6�������������������������������6����������������������������������6a���������������6�X=�������������5�X`�����������4C@FH�F�D�C�B�A�@?FCC4��������������4CQ�CQC4���������������2�BJ�#$JBB4�������������1�DI%�/)I==2����0�CI%�;���;/I;;0�������������0�BI%�F��F4I::/�������/�AJ%�8�����8/J99/����������.�@I%�F���F6I88.�������-�>H&�A���A5H66-����������,�>H&�A�����A5H66-�������+�>H&1148���ϼ8�4.H55+������)�=G&�>@K���L�A	7G44)���������(�;G&�:Q���Q�:4G22(�������(�:F&�6^�^�61F11(�������':Q:�X:Q1'��������'�6�5�4�2�10�/'���������&:6:5544�2�1�0�/.2..&���%&%%&%%&�%&%&&%��
			
		�������������������������r��G��"�����������������������������������������8��8���������������������*��@22@AABCE�@2�%#(*...-!'#""!"+'#+!((&"($&('��������ͯ��������������˺�����������������ƹ����������������������������������������Ų���������
��������������������
�Ŀ��þ��������������������������Ŀ�������瘘���߬����񘐽�����������������𩕕𩕕�𩕐������������u���敕���𔕔𔔩𔕐������������u��(�擒��𒒓���𧒒�����������½�u���������������������������þ�u�������������������Ŀ�u��������������������ſ�u�������������������������ƿ�v���������������������������������ƽ�������������º���������������������������¼���������������������������þ��������������������������¾���������������������
�¿��������������������������������������¿�����������������������������������������������������à������������������������Ÿ�������������������
����������������������ș�������������������������ə������	������������ٔ����ș�����������������Ǚ��������������������ߴ��	����ƙ����������������ݴ����������ř������������������ߴ����������Ù�������������������������Ù�������������������ߵ������������������������ݷ������	������������������������޷���������˿�����������������ݸ������������ʾ���������������ݸ����������ɼ������������������ܹ���������Ȼ�������������������ܹ���������Ǻ��������ϔ���ϔǹ����������������������������������������ŷ�������������������%%#(*....)*&*'*"&*("%#**-( q�����������������q��������������������������q������
�����������q�������������p�qpqpqqp�qpq�p�qp������������n�n
������������j�k�j�kjkjj�k�j
�������������g������gg�g�g�g��gg��g������������d�d�ddc�d�΂d��d�d��d��μ����������a`�a����a�`a�`a�a�`��ͻ����������	w��_�^�__^�_�_�^_^�^^}�^_��ͻ����������	w��\(�\�]\��\�\\]��\\�\\�{\\��Ͻ����������	w��[��{��{�\�[�[�[��[[��\��п�����������w��YX�Yc���������������w��YX�Yc���ý������������w��Y	����������������������������������z���Y��	������������������ɰ�������������ϵ��Y�������������������������Y��������������ź���������������Y���������������������Ǽ�������������Y��������������½������Į�l�������������������������ϳ��l��������������������������������׵��l��������������	�������㿿�l����������l���������������������㽽�l����������㽽�lk�w��������������k�������j~z������~�}�|{�y�~~j��������ỻ�i~j�~j~i����������⹹�h�|�L�Q	T�||h�������g���U�c[�uug�������e~�U�s���s
c�ssf������������Ḹ�e�}�U������j�rqe��������Ḹ�c�|�U�n�����o	b�ppc���������෷�a{y�U�����m�ooa����������෷�`�x�W�{��{j�ll`������߷��^�x�W{||������}l�kk_���������߷��^wv�Xggil����l�ia�ji^�����������෷�\�u�Xxyyz���Ӄ�{	n�hh\������
��������߷��[�s�X�q�r���́�r	i�ggZ����������߷��Zrq�X�l����lf�feZ����߷��Yqjq�qjfY�����߷��X�l�k�jihh�gf�ed�aW������Wmkmjihh�gf�e�d�cac``W�UVWVUVVUWVV�U�V�UWUWVUVVU��%#(*.--,)'+"*(+&&%()'#$ #&!������������������������������������������������������
�������������������������������������������������������
�����ﵵ�����������������������������������������������叏���ܥ��줏�	���������������������������������G::����䋋����������������G::����䉈����������������G::���������������������������::������	���������������:������
�����������������
����������������������
�������������������������
�������������%���������������������������������������������������������������������������������������������������������������������������������	����������6�����!����������������������������������6����������������������������������6��������������������������������6�������������������������������6����������������������������������6a���������������6�X=�������������5�X`�����������4C@FH�F�D�C�B�A�@?FCC4��������������4CQ�CQC4���������������2�BJ�#$JBB4�������������1�DI%�/)I==2����0�CI%�;���;/I;;0�������������0�BI%�F��F4I::/�������/�AJ%�8�����8/J99/����������.�@I%�F���F6I88.�������-�>H&�A���A5H66-����������,�>H&�A�����A5H66-�������+�>H&1148���ϼ8�4.H55+������)�=G&�>@K���L�A	7G44)���������(�;G&�:Q���Q�:4G22(�������(�:F&�6^�^�61F11(�������':Q:�X:Q1'��������'�6�5�4�2�10�/'���������&:6:5544�2�1�0�/.2..&���%&%%&%%&�%&%&&%��
			
		
�������������������������r��G��"�����������������������������������������8��8���������������������*�p�@22@AABCE�@2�%!"#&-(&!'#""!"+'#+!((&"($&('��������ͯ��������������˺�����������������ƹ����������������������������������������Ų��������
������������������������
�Ŀ��þ�������蚭�����
������Ŀ�������笘�������������������������������������u������𔕔�������������������u������撓��������������½�u��
𑒒������������������þ�u�������������������Ŀ�u��������������������ſ�u�������������������������ƿ�v���������������������������������ƽ�������������º���������������������������¼���������������������������þ��������������������������¾���������������������
�¿��������������������������������������¿�����������������������������������������������������à������������������������Ÿ�������������������
����������������������ș�������������������������ə������	������������ٔ����ș�����������������Ǚ��������������������ߴ��	����ƙ����������������ݴ����������ř������������������ߴ����������Ù�������������������������Ù�������������������ߵ������������������������ݷ������	������������������������޷���������˿�����������������ݸ������������ʾ���������������ݸ����������ɼ������������������ܹ���������Ȼ�������������������ܹ���������Ǻ��������ϔ���ϔǹ����������������������������������������ŷ�������������������%%!"#+-(&)*&*'*"&*("%#**-( q�����������������q��������������������������q������
�����������q�������������p�qpqpqqp�qpq�p�qp������������n
������������jk�j�kjk�j�k�j
�������������g�g�g����gh�g�g
������������d�ۂd�d�c��d��μ����������a``�a��a����`��a`��ͻ����������	w��_�^�_�^_^�_�_�_�^_^_��ͻ����������	w��\�]\�\�\]��\�\��Ͻ����������	w��[
�[\\{��[�[�[\��п�����������w��YX�Yc���������������w��YX�Yc���ý������������w��Y	����������������������������������z���Y��	������������������ɰ�������������ϵ��Y�������������������������Y��������������ź���������������Y���������������������Ǽ�������������Y��������������½������Į�l�������������������������ϳ��l��������������������������������׵��l��������������	�������㿿�l����������l���������������������㽽�l����������㽽�lk�w��������������k�������j~z������~�}�|{�y�~~j��������ỻ�i~j�~j~i����������⹹�h�|�L�Q	T�||h�������g���U�c[�uug�������e~�U�s���s
c�ssf������������Ḹ�e�}�U������j�rqe��������Ḹ�c�|�U�n�����o	b�ppc���������෷�a{y�U�����m�ooa����������෷�`�x�W�{��{j�ll`������߷��^�x�W{||������}l�kk_���������߷��^wv�Xggil����l�ia�ji^�����������෷�\�u�Xxyyz���Ӄ�{	n�hh\������
��������߷��[�s�X�q�r���́�r	i�ggZ����������߷��Zrq�X�l����lf�feZ����߷��Yqjq�qjfY�����߷��X�l�k�jihh�gf�ed�aW������Wmkmjihh�gf�e�d�cac``W�UVWVUVVUWVV�U�V�UWUWVUVVU��%!"#&,'%)'+"*(+&&%()'#$ #&!������������������������������������������������������
������������������������������������������������������
�����ﵵ��������������������������摦�����������������奏�������������������������������������G::�������������������������G::������㈉��������������G::���
�������������������::������	���������������:������
�����������������
����������������������
�������������������������
�������������%���������������������������������������������������������������������������������������������������������������������������������	����������6�����!����������������������������������6����������������������������������6��������������������������������6�������������������������������6����������������������������������6a���������������6�X=�������������5�X`�����������4C@FH�F�D�C�B�A�@?FCC4��������������4CQ�CQC4���������������2�BJ�#$JBB4�������������1�DI%�/)I==2����0�CI%�;���;/I;;0�������������0�BI%�F��F4I::/�������/�AJ%�8�����8/J99/����������.�@I%�F���F6I88.�������-�>H&�A���A5H66-����������,�>H&�A�����A5H66-�������+�>H&1148���ϼ8�4.H55+������)�=G&�>@K���L�A	7G44)���������(�;G&�:Q���Q�:4G22(�������(�:F&�6^�^�61F11(�������':Q:�X:Q1'��������'�6�5�4�2�10�/'���������&:6:5544�2�1�0�/.2..&���%&%%&%%&�%&%&&%��
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2)&,//+/' #+%""""+'&  ("%&%!!
�������ͯ�����������˺����������������ƹ������������������������
��Ų��������������������������������������������إĿ��þ����������������������
������Ŀ�����������
�����������
�Ջ�������������������������������Ҋ������������u��������������������ҋ������������u�����������������������������½�u������������������Ћ�����������þ�u������������ϋ������������Ŀ�u�������ȋ�������������ſ�u�����̓��������������������ƿ�v�����͍������������������������������ƽ�������������º��������������������������¼���������������������������ļ�����������������������	������������������������
���������������������������������������������³����������������	��������������������������	��������������à���������������������������Ÿ������������������������������������������������������������������������������������Կ���������������ÿ�������������������������������ҿ�������������������������������������������������������������������������������������������������������ѿ�����������������������������������������������������˼���������������������������˼��������������������������������������������ƽ������������������������������������������������߲���������������������ۗ�% (&,))//* //#*.#'*$&$ '#$!$$!
x�����������������x��������������������������x������
�����������x�������������w�vw�vw�vwvww������������s��s
������������nonoonnonnonnoo�n�nnonn�������������j���j��j��j�j����j
������������gfgg�ghg�f�gg�f�gg�fg��g
hg��μ����������b���b�b�b�c��b��b��ͻ����������	w��b��b�b�b�c��b��b��ͻ����������	w��_^_�__^��_��^��_�^_^_^��Ͻ����������	w��\]]\[���]�\�\\]��\�\\]\\��п�����������w��[YZY[Z�[Z[[Z�[Z[[Z���������������w��YXYXYX�Yi���ý������������w��YXYXYXY����������������������������������z���YXYXYX��������������������ɰ�������������ϵ��YXYXY�������������������������YXYX�������������͝ukkj������������YXY�������������������ɀpligg������������YX����
������|tpmmlk�������Į�Y����������րwvsrpoz�������ϳ��Y��������������ywtru������������׵�Y����������yz{��	�������㿿�����ށywxx�����������������xwwx����������㽽�����������������vvwx��������㽽���������v�xy��������������uu�vw����������u�v������ỻ���������
���tuututuutv������⹹�������}�sv�wx�����������r�������������u�rt�����������Ḹ������������ߓsrsr����������Ḹ������ٙ�rv�������෷�������{rsqqr�����������෷�������r�q���������߷����������ss�r	���������������߷����������s�rw��������������෷���������sr������
��������߷������������������߷������߷��������߷���������۷�)+&(+(++0-/-1'.+-'%%' !
(�h�������������������������(�h������������������(�h��
������������(�h�������������&�'
&''&'&''&'&'&'�&'&''������������$��$
�����ﵵ��� ���   � ����������������������������������
���������������������
��������������������G::���
�������������������G::����������������������G::����
������
�

��
������������::���!












��������������:���

�

�



�

,����������������

�

�����������������������
�������

�
�����������������
����������



��%�����������������������������������


������������\RTU�����������

�������������������XGJMNN�����������

����������������I@ACFHJ�����������

�����!��������������N@?@@ADS������������
�������������h@@??D������������������������������@C����������������������������O�@A����������������������������@??@y�����������������������Z�?@������������������������?@�BD�������������x�?A������������������������A�?A�����������������?A�����������������Q�?D�EF���������������?�����������E�?B�����������������v�?������������>�?F����������������N>?�>������������?�>x����������������??�>w���������?�>E���������>?`���������������������������������������������
	

����������������������������������������������������������������������������������������������������������������������������������������$�"����Cri,�6�����F��k��G�4����1u�X��`��/�v����`�'����[���Z1@���y;/X����x��j��������}������{��0�������U��\�����[�����&��������T��W���8��[���I�������,������k���1�!���QR���#�����������V#���3�Q���&�3���{	�����R��!���^�����!�����!�����M��9����F��������f��A�����:������!���s���������2���ި���������������������������������$&!#&**))*$&'&(+*+*(%%#!###(***)(#)'/,&/.%-0/(/*((%)&*)*)&$!  ���.����#8����#8����#�$�#8����#"�#! �#8����#"_F!�#!?csuhH# �#8����#U��Y%"�#$h����x$#8����# !��W�#$,����)#8����#z���(�#,���!8����#5��Y�#!������f8����#"����"�#h���nRh����6����#$T����=�#!�������03����# "����#1��1##$D����D1����#{���)�#!$�����#,��P0����#6��d�#"%\�8�#1��H0����#"�����!"�#$�#P����63����#U����F�!!�#����#5���##  ��	�}��и0�#$J��9���##|���.����?�#$3���:8���#6�p!#���>�#>���#8���"����!)���>�# [��!#8���U����P$3��>�#$�����###8���#���##D����>�#$'�����#8���z���+P��
�6 ##$3���n�#8�������;�H>}��	�_DJ+!#.���F"�#8���������������j ����(�#8�����vu���$�#8�����v%���#$�#8��������������kW����b�#8���1P�ND����dJL)����bD�JL;!8����d���6!���������)4����#j���>#! ���.4����#j���># %���,4����#j���>#(���,4����#n���>#!#����˘"6����#
:����})!##" � !8����#$�"�#"!�"!"#8����#8����#8����#8����#4���+�96J������������������������=����������NR����7����#�����7-��������f0g���M�(���5n�����!B���o���Hl֏M$
T2a��4����:(��
�	��������\�F����U���
�`��������/���	
�����u���E�����C�{������(�����{��,-���\�
U����c�6�������
��h)��Il3��}>���	��LHa������$�8^��!R����4j��n��	�,v��'x��#�����BT��M��%��[y!�Z;�����Q���i ����J��������B�����&�`���`��?������c|���M�:��"�@�����Ѣ�
���R�z��֦J���t�:����)n2S^__]��V�ݷ���a��f`__\L$"���M&��������M��V/J?4���$������p%�����8��4w��4��t�������������y�{|uH"^�mk������*��+c|�{z~���z8�eC���a$u�~����2���	��l��*p‡}�~X����"�u���������4���i�8c��?m���6�'j���/Q��������2����s��,s�ľ��������0��,��<),�+�, .
g�`|������.��&$(-,�+)t����$������������O��)�����@q��������HZ���
������^��C=\O/~��_������n���	`������O�	i��ś��#������ڭ=��
�9!����+�����e���L U���	���90���	^4d�Z���������
�O���PkJ��N���*��������X��/������AH����#�YA��C��&	oM_��):X���������PN����o���Q	�)�����$����&�`W��
G�{--���m��`4��>����9����Qx���>�����$�.���+���C��9Q���Ra��F��#�/����Up����<��:?��H�����d��	�M������J�p�a��.�������n����n�����%�9"���Y����S�����m�����XC������aH��9����PQT����;+#o����%y(6�����&���|'
:�����T��������������$&!#&**))*$&'&(+*+*'!%$!###(***)'%))//*..%,0.+0*(($)&*(*)&$!  ���*����5����5���� �� �5������5����^D�=bqsgF �5����T��W"� g����v 5������V� )����&5����y���%�)���5����2��W�������e5���������g���mQg����4���� R����:��������-0��������/��/ A����B/����{���&� �����)��N-����4��c�"Z�5�/��F-���������� �N����40����T����D������2�����	�{��и-� H��5���z���*����=� 0���85���4�n ���<�<���5�������&���<�Z��5���T����N 0��<� ����� 5��� ���B����<� $�����5���y���(N��
�4 0���m�5�������9�F<}��	�]AH(*���D�5��������������h����%�5�����us��� �5�����u"��� �5������������jV����`�5���/N�LB����cHJ&����`A�HJ95����c���4���������&1����h���<���*1����h���<"���)1����h���<%���)1����m���< ����˘4����
8����|&�5���� ���5����5����5����5����1���(�54H������������������������<����������QR����7����%�����;��������jg��� 7�t(���5n�����C���Q���2n֏M$
S2a��4f���()��
�d�����\�	3�����<���
�`
|������g�/���	�������U
���E����`��0�{���^�o����l{��2����B�
=��
��c�'��r������j���6l3s�[>�����7Has�����$�8B��R����%j��Q�n	�,Wĭz��#�r�r�B=��M����[y��?=������;�s�L ��~�6z�o�����/������E�j�F›
@������c[�r�8_
)r���.�����Ѥ�
���<�{��֦L�{�U�<����!n";FGGF_��V�޹���G��J�GC6"���M��������sM��V&7/1�����������f	��q������»)��2U����$��tl����Ã	�������rW�XYV5_�nM¼����"��
!IY�XZ����W:�g1���G%x��������.�����M��)pÉ~��Z�����U���
������*�����dk�8c��AL���&�)M��� S�������,�����Q��,r���ám���"������*!� !".
g�aZĺ����#��%""� !U������$bº��������8��%f����+s��u���������1^���y�������^��B.@8)��E�������N���	D��������:�	j��Ǟ��#�y�������*���9�`�o�-�����f���7U���	���9"���	E
$I�A���������
��:�t�8kJo�9�y�c)����`�o�?�}/�������-K�����[.��C��nMD�p�*:Až������
��;N��v�Q���:	�)y�s��$�u®%�`?G�z-!���P��E6��>���{���)����QW�q�-��ā��$�����w�bC��9Q��	��;G���yF��#�0����>R��
��<��;.��3f���dd��	�Pv�����4�p�`��.�g��O����nd���n%�9"���Y�����;�����N�����XC������b2��(����99U����;+#o����$W7�����'���|'
:�����U��������������$&!#&**))*#&'&(+*+*("%%!##%*)**)'(*)/0),-#.-,&1,))&)'*)*)&$!  ���,���� 6���� 6���� !� �!� 6���� � � 6���� _F� >dsthH!� 6���� U��Y#� !h����x! 6���� ��X� !+����' 6���� z���&� +���6���� 4��Y� ������f6���� ����� h���nRh����5���� !T����<� ��������/1���� ���� 0��0  !B����D0���� |���'� !����� +��O/���� 5��d� #[�6� 0��G/���� ������ !� O����51���� U����F�� ���� 4���  ��	�|��ѹ/� !I��6���  {���,����>� !1���96��� 5�p!���=� =��� 6�������'���=� [�� 6���U����O!1��=� !�����!  6���!���  D����=� !&����� 6���z���)O��
�5  !1���n� 6�������:�H=~��	�_BI) ,���F� 6���������������i����&� 6�����vt���!� 6�����v#��� !� 6�������������kX���b� 6���0O�ND����dIL'����bB�IL:6����d���5����������'2���� i���= ���,2���� i���= #���+2���� i���= &���+2���� n���= !����̙5���� 9����}'  �6���� !�� � 6���� 6���� 6���� 6���� 2���)�65I������������������������<����������QU����7����'�����?��������ll���$
,���5n���K���	t֏M$
S2a��;/��
�
��\�	����f��/���	��
�K�{���~��5���c�
��ml3>���Ha��$�B
R��j��
�,z��#��BM��		[x

C����� !��"�����

	�

��C������c�	������	Ѥ�� }��֦N��B����!p		V������(���R��M��[-���
���v���2��t����
�

^�r����
@�l	-������)�	��)pŏ����c�����
���s�8c��J�/
Z�������%�	
��,s����Ť
��	�/
g�e�	��'"	���(����"w���b����	^��D	��������� �i��ɤ��# ����?
��2�����i�
		Y���	���;	�

���������kJ�*�����0��	�
P����#�`	C
	oM );������N�� �	�*��$�&�`G�{,~�:��B"�	����Q���!	�C��9Q�� F��#�7��<��:
d��	�Q
�p�`��.�����o*�9"���Y�
��������XC������h����
Z����;+#n����%>�����+���|'
:�����Y��������������
									
	�����������������������������r���G���"���������������������������������������������������������������*��@22@AABCE�@2�  #%($$''!  !"+'#*&.,,(& !�����ͯ���������˺�������������ƹ������������������������������
�����Ų���������������������������������
����Ŀ��þ���������������������Ŀ��������������������Ž���������������������ļ�����������u��������Ž�����������u���������������Ž���������½�u���������ƿ����������þ�u����������������������Ŀ�u������������������������ſ�u�������������������ƿ�v����������������������������ƽ�����������º�������������������������¼�������������������������þ�����������������v��������¾���������������v������
�¿������������������v��������������������¿������������������v������������v�����������������������à��v���������������������Ÿ��v����������v��	v������������������v�v����������v�BAA@�?>==�<�;�:9�v�������	�����������v�Ueed�cbaa`�_^]]\�[G�v����������v	�Qb}{a`__^�]\[[ZYY�X
D�v�������������������v�M_y}x]\[[ZZYYXWWVSKHH,�v���������������v�I\[v}uYXXWWVUTKC:�6
�v�����������������v�FXt}s�rUTSNC8�6�v���������������v�BU}qp�}QG=�6�v�����������������v�?R�Qnjb8�6�v������������v�;ONNI=�6�v�����������������v�7LG=�6�v��������������v�0<�6�v������������v��6�v���������������v��6�v����������������v��6�v�������v��6�v��������v���v�������v�����v��v��!#!#&$''$(($('*"&(-%&,&#!������������������������������������������
��������������������������������	�����������
���������������������������������������
������������������������������������������������μ����������������������ͻ����������	w����������������ͻ����������	w�����������������Ͻ����������	w�������������������п�����������w�����������������������������w����������ý������������w�����������������������������������z����	����������������ɰ�������������ϵ���������������������������������������ź�����������������������������������Ǽ���������������������������½������Į��������������������������ϳ����������������������������������׵����������������	�������㿿��������������������������������㽽��������㽽�����������������������HGG�F�EDCC�B�A�@?���������ỻ��\nmmllkkjihhggffeddccN�����������⹹��Xk�ihhgffeeddcbaa�`J���������Tg��eddcbbaa`__^ZROO1���������Pdc��a``__^]\RJ@�<"�������������Ḹ��L`����\[UI>�<"���������Ḹ��H]���XNC�<"����������෷�	�EZYXX}yo>�<"�����������෷��AVUUPC�<"�������߷���=SNC�<"����������߷���5B�<"������������෷��"�<"�������
��������߷���"�<"�����������߷���"�<"�����߷���"�<"������߷����"�����������������!"&$&%$$(%) ((+&&%((.*"+!!��������������������������������������������
�������������������
�������������������������	�������������
������ﵵ�����������������������������������������������������	������������������������������������������G::���������������������������G::����������������������������G::������������������������������::��������������	���������������:��������������
������������������	����������������������
���������������������������
�����������%�����������������������������������������������������������������������������������������������������|�����������������������	����������|�����!����������������������������������|����������������������������������|��������������������������������|�������������������������������|����������������������������������|���������������|��|�����������|�|������������|�HGGFEE�D�C�BA�@
?�|��������������|�\nnm�lkjiih�g
feedccM�|���������������|
�Xk!jiihggf�edcbba�`J�|�������������|	�Tgh!geedc�b
a``_^[SPP1�|����|�Pece!da�`_^^\SKA�="�|�������������|�L`c!b�a]\\VJ?�="�|�������|�H^!``�!YOD�="�|����������|�DZ�Y\XP?�="�|�������|�@WVVPD�="�|����������|�<TND�="�|�������|�5C�="�|������|�"�="�|���������|�"�="�|�������|�"�="�|�������|�"�="�|��������|��"�|���������|������|���|��
									
	

�����������������������������r���G���"��������������������������������������������������������������������B����3������������*'�����H�@^J�@2	���J�  #%($$''!  &)&%#((($&$'$*'%)' �����ͯ���������˺�������������ƹ������������������������������
�����Ų���������������������������������
����Ŀ��þ���������������������Ŀ��������������������Ž���������������������ļ�����������u��������Ž�����������u���������������Ž���������½�u���������ƿ����������þ�u����������������������Ŀ�u������������������������ſ�u�������������������ƿ�v����������������������������ƽ�����������º�������������������������¼�������������������������þ������������������������¾������������������pu�����
�¿�����������������������p�~�����������¿���������������������p�x��������������	����p������������������à�����p��x�����������������Ÿ�����	p���{�������������������p�����������������������������������p������������������p����š��������������	������������ÿ��p�x����¥����������������p�vv����������������������������������
p�{�~|��������������������������p�{���v����w�����������������������p�{����v�������������������������p�{�����v�����������������������p������p�{������|��~�������������pvp�����p�{������u�}�������������������pvp~uutrp�z������t�u����������������pv{�������z������xz���������������pt�������w�����~xs������������������pt������u�����tt�������������������t���ə���w����zq����������r�����”���w�����p�����������q���������{z����r����������s{����xu����z������
pry���~yra�0��ptrqrpX#�0�!#!#&$''$(($(%)"&!#''$$&$()-& ������������������������������������������
��������������������������������	�����������
���������������������������������������
������������������������������������������������μ����������������������ͻ����������	w����������������ͻ����������	w�����������������Ͻ����������	w�������������������п�����������w�����������������������������w����������ý������������w�����������������������������������z����	����������������ɰ�������������ϵ���������������������������������������ź�����������������������������������Ǽ��������������������������½������Į��������������������������ϳ��������������������������������׵������⪹���������	�������㿿�����Ӷ����������	�����Ϊ���������������㽽��������ͭ������������㽽��������й���������������������DZ����������������Dz���������ỻ������Ѭ�����˰���������������⹹������Ѩ������Ʋ���������
����Ѭ������������������Ѭ�������ͪ������������Ḹ������Ѭ�ƺ����ϸ����������Ḹ������Ь���־��Ϳ����������෷��������Ь����ڹ���������������෷���������Ϭ�����ڨ�����������߷�����������ά�����ݦ��������������߷�����������Ǭ�����˪���������������෷���������ê����߯��´������
��������߷�������������Ц�������������߷������»����֫���������߷���������­���������������߷���������µ����ǥ������������������������������
����������	�F���������2	�F�!"&$&%$$(%) (&)%'&)" &$%! %!!&  !��������������������������������������������
�������������������
�������������������������	�������������
������ﵵ�����������������������������������������������������	������������������������������������������G::���������������������������G::����������������������������G::������������������������������::��������������	���������������:��������������
������������������	����������������������
���������������������������
�����������%���������������������������������������������������������������������������������������������������������������������������	��������������!!=������������������������������������`1���������������������������
����a)�������������������������
����;E���������������������������99)�����������������������������
����6J-l�����������������56E>�����������������3�#b9��������������������0�	"Fl;��������������������.5:@t=������������������
,&%48:C`R��������������*/�I088N8����������(/�Ɂ.5*A)����������������&/��Ъ,<�������������#/����C`�����������������!/����BIU�����������.����$M9x����������F�.����$X%���������#-&.����3BO��������#B�D0(���FG"������������!�D8 ���,&����������2�DC

+����9 z����������CDD>

���ڎs�����������


3���� w������������

.����P��������


������
									
													�����������������������������r���G���"�����������������������������������������������������������������������*��@22@AABCE�@2�  #%($$))#$$##"-%('. ',!!+($+�����ͯ���������˺�������������ƹ������������������������������
�����Ų���������������������������������
����Ŀ��þ���������������������Ŀ��������������������Ž���������������������ļ�����������u��������Ž�����������u���������������Ž���������½�u���������ƿ����������þ�u����������������������Ŀ�u��������������������������ſ�u���������������������ƿ�v�����������������������������ƽ������������º���������������������������¼����������������������������þ���������������������������¾������������������������
�¿����������������������������¿������������������=�V���V=����������<�VFHHGHHG�HIV��<��������������à��;TST��T��;����������������Ÿ��;TST��������TST;��������������:SRR���RS:��������������������������9SRR��R��9���������8�OP��������P��8��������������	�����������8�OP������
�����POO8���������7NMN��NMN7��������������������������6NMM��M��6���������������4JIK���������	K��4����������������������3JII�L�IJ3���������������3�H���H3����������������������1�HF�����	����F��1�����������0�DE��������E��0����������������������.�DC��
�������CDD.������������������-�B��������B-�����������-�BA�������A��-�����������������+�>?�����������?��+���������������������*�>����>*�������)�=�}�~}~}~�}~�=)��������)�=;�>;��)�������'�!:�~:��'��!�k�!&��!#!#&$''$**(,!"" %#$(+ * &$-&%!������������������������������������������
��������������������������������	�����������
���������������������������������������
������������������������������������������������μ����������������������ͻ����������	w����������������ͻ����������	w�����������������Ͻ����������	w�������������������п�����������w�����������������������������w�����������ý������������w������������������������������������z������	����������������ɰ�������������ϵ������������������������������������������ź�������������������������������������Ǽ����������������������������½������Į������������������������ϳ���������������������������׵��E�i��iE��������	�������㿿�D�ihXV�WXh��D��������C�ef��f��C��������������㽽�A�e�������eA����������㽽�@�c�������c@��������������?�cb������	b��?���������>�^`�����`��>�����������ỻ�=�^������^
=������������������⹹�<�\]���]\\<������������:�\Z������
����Z��:��������9�WX�����X��9�����������������Ḹ�8�W�Z�W
8���������������Ḹ�7�U���U7���������෷�6�UR��������R��6������������෷�4MNP�������P��4���������߷��2MNN�����������NNM2�����������������߷��1KLL������LK1���������������෷�/KLI������I��/������
��������߷��.�EH��	����H��.����������߷��,�E������E,����߷��+BCB�����������BCB+�����߷��*BCA�DA��*������)�"?��?��)��"���"'��!"&$&%$&*'+$,*$"$.((&&+)'&  ��������������������������������������������
�������������������
�������������������������	�������������
������ﵵ�����������������������������������������������������	������������������������������������������G::���������������������������G::����������������������������G::������������������������������::��������������	���������������:��������������
������������������	����������������������
�����������������������������
�������������%��������������������������������������������������������������������������������������������������������������������������������������	������������������������������������������������������������������������F�j���jF����������������������D�jiSP�Q�PQ�PRi�D�������������������C�fh��h�C�������������������������C�f�����fC����������������Aede�����edeA������������������@edc������c�@�����������������>�_a�������a�>���������������������=�_��������_=�����������������<\]]������]\<������������������:\]Z����Z�:���������9�WX�������X�9��������������8�W�[�W8�������7�U��U7����������6�US�������S�6�������5NOQ��Q�5�������������3NON�������NON3�������1�L�����L1������/�LJ������J�/���������.�EH���������H�.�������-�E��E-�������+DCC��������CD+��������*DCA�DA�*���������(�!?��?��(���!��!(��
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2! $#$% )("")"+'%"&&%%# 
��������ͯ��������������˺�����������������ƹ����������������������
��Ų���������
������������|�|�|
�Ŀ��þ������y���y�yy����y
������Ŀ������v	�vv�ߐܐv�vr�������������s	�ss��ϣss�s�������������u��p�pΡpp�p�������������u��p	�pp�ދދp�pr����������½�u��o��o�oo�o��o������������þ�u���o�������������Ŀ�u���opr�������������ſ�u��o���������������������ƿ�v���o�������������������������������ƽ����o�������Ǘ����������zyvvwyz}~�������o�������¼�������������������o�������þ�����������������o�����œ������������|�z	�{|}������o������
�¿������������������o��������������������¿�����������������o�����Ð����������������������������������������������à�����������������������Ÿ����������������������������������������������������������������������������������ÿ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߲���������������������ۗ�#! $#$%)*'&*$'*'%&&%"" $
�������������������������������������������������
������������������������������������������
��������������
����������������󴢢����
������������	򟟱�江���������������	񜜯�ݾ�����ͻ����������	w���ݽ�����ͻ����������	w��	񚚭�筚���������������	w�����񬙙�����п�����������w������������������w���������������������w��	����������������������������������z������	������������������ɰ�������������ϵ�������������ا������������������������������ź������������������������������������Ǽ�����������������峲�����������	�������Į��������������������������ϳ�����������������������������������׵��������������������������㿿�������������������������������㽽������������⫫���������⫬��㽽������������������������������������
���⩨�������ỻ�������������������������⹹�������������������������������������������������������������Ḹ������������������������Ḹ������ᢢ��������෷��������������෷������������������߷���������������߷�����������������������������෷������������
��������߷����������������߷������߷��������߷���������۷�  $"#$)')"*()$#'& !
#!
������������������������������������������������
���������������������������
������������������
�������ﵵ����������������������������������������	���������������������	����������������������G::�����������������������G::����	�������������������G::�����������������������::�������������������:�����
ܟ����������������
�����������������������
������������������������
��������������������������Ľ����������������������������������������������������������������������������������
�����������������½������ӵ������������!���������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2####$)# "!"%#&$&% "
��������ͯ��������������˺�����������������ƹ����������������������
��Ų����������
�����������|�|�|
�Ŀ��þ������y�����y��y
������Ŀ������v��vv�v�v��������������sߎss�s�sr������������u��p�p�p�p�������������u��p�p�p�p�����������½�u��o�o��o�or�����������þ�u���o�������������Ŀ�u���os��������������ſ�u��o������r�s�rq��������������ƿ�v���o�������������������������������ƽ����o��������º�������������������o������¼�������������������o�������þ�����������������o��������¾���������������o������
�¿������������������o��������
���¼�������������o����������������������������������à�������������������������Ÿ����������������������������������������������������������	���������������������������������������	������������ÿ����������������������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������������������������������������������������������������������߲���������������������ۗ�#####****'"$!&
"" $
�������������������������������������������������
�������������������������������������������
���������������
�������������������
�������������韟����μ����������诜�����������������	w�������ͻ����������	w�������Ͻ����������	w��������������������w������������������w�������ý������������w��&������������������������������������z������	������������������ɰ�������������ϵ���������������������������������嵵�������������ź������������������������������������Ǽ���������������������������½������Į��������������������������ϳ����������
��������������׵����������������	�������㿿��������������㮮�������������������㽽�����������������������㽽��������������������������������������������ỻ�������������������������⹹��������������������������������������������Ḹ������������������������Ḹ�����ࢡ�����������������෷��������������෷������������������߷�������������������߷�����������������������������෷������������
��������߷����������������߷������߷��������߷���������۷�#""" '+)*&)&#&


������������������������������������������������
���������������������������
�����������������
�����ﵵ���������������������������������������������������������������������������������G::������������������������G::������������������������G::������������������������::�������������������:�����
ߴ��������������������������������������������������������
������������%�������������������������������������������������������������������������������������������������������������������������������	��������������!����������������������������������������ihgf�ef�g������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>��������������������������������������������������������������������T7���������������������������������������������������������
		
	�������������������������r��G��"�����������������������������	�������������������������������������������������!�*�2@AABCE�@2!) *--&-) $+'#$#$+"&$%'$"'#&#&%"!�������ͯ�����������˺����������������ƹ������������������������
��Ų����������������
����������������������������إĿ��þ����������������
������Ŀ������������	���������
�Ջ������������������������������Ҋ������������u�������������������ҋ������������u�������������������������½�u����������������Ћ�����������þ�u��������������ϋ������������Ŀ�u�������ȋ�������������ſ�u�����̓����������������������ƿ�v����͍����������������Ļ�������������ƽ��������������ʺ����������������������������ͼ��������������������������;�������������������������
���ɾ�������������������������ſ�������������������������������������¿��������������������������¿����������������������������������������������������������	���������������������������
������������	��������������������������������������������������������
�������������������������������	������������ÿ�������������������������������������������ӿ��������������������������������	����������������������������������������������	�����������
�������ӽ����������������������ƾ��������������������������������������������Ѽ������������������������������Ӿ��������������������������������������	�������������������������������������������������������������������������������������ۗ�% *!)**..* /0%,-!'*'()&!'!"$)# %$ x�����������������x��������������������������x������
�����������x�������������w�vw�vw�vwvww������������s�s�s
������������nonoonnonnonnoon�nn�n
onn�������������j��kjj��j�j��j
������������gf�g
�ggf�g�gf��gg�g
hg��μ����������b��b�b�b�cb�bc�b��ͻ����������	w��b�b�b�b�cb�bc�b��ͻ����������	w��_^�_��_ �^^��__�__^_^_^��Ͻ����������	w��\]]\[]�\]�\��]�\\�\]\\��п�����������w��[YZY�Z�[Z[[Z�[Z[[Z���������������w��YXYXYX�Yi���ý������������w��YXYXYXY����������������������������������z��YXYXYX�����������������lo��ɰ�������������ϵ�YXYXY������y~�������������������YXYX����������~�����ź���������������YXY�����������������}�����Ǽ�������������YX������{�����½������Į��Y���������xy�������������ϳ�Y�������������wz�����������������Ե�Y��������	�w���������	�������Ե������
wy���������������ص��������������ww�����������������ٵ������������������xv��������������Ա������������w����������������ײ��������w��w��������ٲ�����
����|��v��������ٳ����������
����x����w����������޵��������x����߁v��������߷���������y���ͫ~�vz����෷��������y�ۮ�wvvwyxvx����z����Ḹ�����������	�w��vw}����
��vw}�~{���Ḹ��������{vy�������ҧ�}�����෷�����ߝyw�����������෷��������{z|���������߷��������߷v}�x�����������������߷���������vy�w����������������෷��
�����yv�x�����
��������߷��������v�y���������߷������}���߷��������߷���������۷�)+"$('&(0-/-1'.+-&'%' %"' #!$(�h�������������������������(�h������������������(�h��
������������(�h�������������&�'
&''&'&''&'&'&'�&'&''������������$�$�$
�����ﵵ��� ���  � �  �����������
������������������	�����������������������������������G::�������������������G::��������������������G::����
�
��
�
��
������������::���!

�









��������������:���

�

�



�

,����������������

�

�����������������������
�������

�
���������IG�������
����������



��%���������������YDN��������������������


������KOoz�������������������

��������������KQ`��������������������

�������������WGO��������	����������

�����!�����������kBE��������������������
������������@E������������������������������@O����������������������������������
@D�����������������������������A@��������������������������D@i�����������������������������
TUaA�����������������������A��A]��������������������������������_I�y@���������������������Cr��OA�������������������lD���R@S�������������Ee���כN�@FPi����������fD��]B@@BEC@Do��sGU���������	�BUYAALv���
�TABMUNI�������������H@Dd���^MV�������������EB������������HHKU�������������������@LnD����������@E�C��������F@�Dg�����������@WEd����������OT��������������������������
									
	���������������������r��G��"����������������������������������������������!�*2@AABCE�@2  #%($(($)&&&$$)&"#$% ($$$' !
�����ͯ���������˺�������������ƹ������������������������������
�����Ų���������������������������������
����Ŀ��þ���������������������Ŀ��������������������Ž���������������������ļ�����������u��������Ž�����������u���������������Ž���������½�u���������ƿ����������þ�u���������������������������Ŀ�u�����������������������������ſ�u������������������������ƿ�v��������������������������������ƽ���������������º�{wrqnu������������������������¼~yzvtmn����������������������þ~z���zl���������������������¾������r�������������������
�¿������|����������������������������¿������~�����������������
����������������������������
�»���������à�����������������������Ÿ��������	������������������������������������������������������������	���������������������	������������ÿ��������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߲�������������������ۗ�!#!#&$'''%))#&)%')(%##!(!#%( %$
������������������������������������������
��������������������������������	�����������
���������������������������������������
������������������������������������������������μ����������������������ͻ����������	w����������������ͻ����������	w�����������������Ͻ����������	w�������������������п�����������w�����������������������������w���������������ý������������w���	������揗����ܑ������������������z����	������搝���⑎��ɯ�������������ϵ���������⏎�ث��������������������������⏎�ڢ������������������%������咜������Ꮞ�ۣ�������������������������������ļ�½���������Į����䐗�����������ɱ�������ϳ���%������䑐������㛖�ޫ��ά����������׵�����������⏏�䭭�ذ����������㿿����������������������������������������㽽������������	�������������㽽���������������������������������������������������������ỻ���������������������������⹹���������������������������������������������������
���������������������Ḹ��
�������������������������Ḹ��������������෷��������������෷������������������߷�������������������������������߷�����������������������������෷������������
��������߷����������������߷������߷��������߷�������۷�!"&$&%%'(%)%(())&$'&&!'#!"#
��������������������������������������������
�������������������
�������������������������	�������������
������ﵵ�����������������������������������������������������	������������������������������������������G::���������������������������G::����������������������������G::������������������������������::���������$*,,+()(+�������������:����������$*//.+*)*-����������������	�������$8�	��+)������
�������������'G���)%�������
�����������%�������,G�������$%���������������������,F�����$$��������������������������,E������$$����������������������������+B�������������������������������!���'8���������������������������%�������*'=EEBB�A9���������������������
�������&'('�$	��$%�������������������������������������������������������������������������������������S���+&��20��&%&5��������������	�����������������������������������������������������������������������
�' ��+)����������������������������������
�����������������������������������Ib`^`H���-+������������	��������������������������������������������������������������������������������������������
			������������������������r��G��"�����������������������������������������������������������������������������!�*�2@AABCE�@2'(,,,,*+))++*+))((((%&)$'&'%'(!
�������ͯ�����������˺��������������ƹ���������
�����������
��Ų����������������
��������������������
�Ŀ��þ����������	�������
������Ŀ��������������������������������������������������������������u�����
�����������������������������u�����
���������������������������½�u��~��~
�~��~�~~�~~�~��~f�����������þ�u���}h�x���������Ŀ�u���}m�������������ſ�u��}���������od{oxqqrp��������������ƿ�v���}���������|x���i�������{|tqqhq�����ƽ����}����������u���������oltrsh{����������}��������������㺙��x�|rppe����������}�����������¿���آ�w��vpnjm��������}����� �����������լ��}�ZZeese��������}���� �����������ѳ���s��s��x���������}��%����Ê��u}��������ѷ��y�������w�������}�����������������̹���ϼ�����v������%����‚������������Ĵ���ʺ�����t����à����� ������������ȹ����ŷ�����s����Ÿ����� ������������������������r����������� �������������������������y����������� ������������������z}���������������	����������������������{����������ÿ���s������������������v����������������{����	��������������}�����������������w�������������x������������������l�������}{|~���w�����������������l����~|zyvv|���}�����������������������tq��|{yyz}���kv�������������������mq}�����ylm��������������������������{nojjlo|������������������������������������������������������������������������������������������
�������������������������������������������������߲���������������������ۗ�#'(,,,,*+(*+*++*'))(($'%!()%%'()&
���������������������������������������������
�������������
�������������
���������������������
����������������������
�������������������	���������
��������������������������������μ�����������˽�������˽����������ͻ����������	w�����
������������������ͻ����������	w�����
������������������Ͻ����������	w�����
�������������������������������w�������������������w��������������������w��&�����������������������������������z������%�����������������������������������ϵ�������­���������������������������������פ��������ϴ��������������������%�����䰼�����¾���㻪��������������������� ڪ����զ��������|~���������Į�����!����©�����ȶ��������������ϳ�����%����䮵���������̷��������������׵������ �������������������ÿ��������㿿������������������˾����ÿ���������%����⦷������������ź����¿��������㽽��%����㣷�����������ǽ��������������㽽���� ������������ý����������������⼼��������������������������������⻻����Ϥ����������������������ỻ��	�����☱������������
�����������⹹���������������������������������������������������������������ѐ������������������������Ḹ��%�������ᾐ�������������������������Ḹ�������������������������������෷�����ݼ������������������������෷��������ı�����������������߷���������������ҿ������������������߷���%���������������ǿ������������������෷����������������������������߷�����������������߷������߷��������߷���������۷�'(,+++**+)*++++)()(" #'&$" 
����������������������������������������������
�������������
�������������
�����������������
�����ﵵ�������������������E�E��	�E��E���������������D����D�����������������D���D�����������������G::�����
������������������G::�����
������������������G::�����
��������������������::������������������:����	����������������&������������s���������������������������о�ZG@FZ������Ͱ����������������%���������U?Jq�`������Մ��������������������^?;;TG�������û�{������������������ ��@=89VF8������FEMewu������������%�������I?:8N>k�������ڔ<DS[mt��������������!��B>98R��������8H����_�����������
������wBIDi�������P4@ABP~����������%������V�����������e05:=AEe�������
�������[���������.26:=@BK����������� ��t{���������/36:>ABB��������
����������������248<?ABA�������� �����������������g69C>ABD�������������䄯�gBBQ�������������������CBl������������CA��������������������cBQ�����������������MA��������������������������?o���������������������������b�����������������������������������������������������
��������������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%!&'+*.*!)#""!#)!(&"))&%% !
~�������ͯ���~����������˺��������~��������ƹ��������~������������}�~}~}~~}�~}~�}�~}��Ų��������{
��Ļ��������wx�w�xwx�w�x�w
����þ������t���ߏt����tt���ߏ�t
������Ŀ������r�rr��r�r�r�r�r��������������onno�o	���oon���on�������������u��onno�o��onno�ދ�on�������������u��m�l&�mm��m�mm��l�lm��lmlm�����������½�u��j���݇j���݇j����j������������þ�u��i�j�ij�������������Ŀ�u��hg�hm��������������ſ�u��h�����������������������ƿ�v���h�������������������������������ƽ����h��������º�v�����������������h�������¼�������������������h�������øj����������������h��������™z��������������h����ž��
��~����������������������������ij������±t���t{������������������q����‘�����q�������������÷�q������u�����¨|q�����à�������q��������������|q����Ÿ�����|q�������������vq�����������qv���������q����������q��������������qv���������q��������%���������q|����v�������q���������������ÿ��������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������߲���������������������ۗ�%%!&'+*.*)*&**(%((%%("" %$
~�����������������~��������������������������~������
�����������~�������������}�~}~}~~}�~}~�}�~}������������{
������������wx�w�xwx�w�x�w
�������������t���ߏt����tt���ߏ�t
�������������r�rr��r�r�r�r�r���Ļ���������onno�o	���oon���on���õ���������	w��onno�o��onno�ދ�on���Į���������	w��m�l&�mm��m�mm��l�lm��lmlm���Ŭ���������	w��j���݇j���݇j����j���ǰ����������w��i�j�ij���ɴ�����������w��hg�hp���ʽ������������w��h	����������������������������������z���h��	������������������̰�������������ϵ��h�������ظ�����������������h������������ښ�����������������h�����������������������������������h���������᳑��½������Į�h��������������ᕶ�����������ϳ����������Ѡ������ω��Պ�����������׵������צ���������ʙ����������㿿����׬����݌��ē����������ܲ���������������㾓������㽽�����Ⓡ�����������������Ѝ����㽽����֫�������Ї��������׫��������ܱ������⫫��ܫ��������ܫ�����܍�����⾇��������ỻ���������֥��ᾙ������������⹹�����������������������ə��������������������������Ḹ������������������������Ḹ��������������෷��������������෷������������������߷�������������������������������߷�����������������������������෷������������
��������߷����������������߷������߷��������߷���������۷�%!&'+)-))'+"*(+(()) ("&!

~���������������������������~��������������������~����
������������~��������������}�~}~}~~}�~}~�}�~}������������{
�����ﵵ���wx�w�xwx�w�x�w���������t���ߏt����tt���ߏ�t�����������r�rr��r�r�r�r�r������������onno�o	���oon���on�������������G::���onno�o��onno�ދ�on�����������G::���m�l�mm��m�mm��l�lm��lmlm�����������G::���j���݇j���݇j����j������������::���i�j�i	j��������������:���hg�h
s����������������h
�����������������������
�������h�����������������
����������h��%��������������������Ѧ���������������h����������ﱷ����������������h������������������������������������h����������������Ǧ�����	���������h�����!�������������������������������������������������럨����������������������캛���������߮����������
�����������������ڧ�������������!�ƛ��������ӭ��������ӧ������������������������	桛��������������������������������ƛ���������������������������������ӛ������������Ӯ������������������������������������������߮��������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%$ !--%!(%%&&$)%$#&&%%%(
��������ͯ��������������˺�����������������ƹ����������������������������������������Ų���������
�����������������������
�Ŀ��þ���������
������Ŀ������~�����������������|�|�|�|�������������u��{�z�{�z{�{�z�z{�z{z{�������������u��{�z�{�z{���z�z{�z{z{�����������½�u��x�y�x�xxyyx�x������������þ�u��wx��wx�������������Ŀ�u��vu�vz��������������ſ�u��v�����������������������ƿ�v���v�����������{�uy�~|uromkkmq����ƽ����v�����������º������o��s���������v����������¼�����n���n���������v����������þ�����i��k��������v�������ń���¾�����n��o��������v�����������~{z��x��������������%��������Ä��������¿�����zy|������������������������������������„��������������à�������„����������������Ÿ�����������������������������������������������������������������	����������������������������������ÿ������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������߲���������������������ۗ�%%$ &--%))$&+&))"&!!!&!#'
p�����������������p��������������������������p������
�����������p�������������o�popoppo�pop�o�po������������m�m
������������ij�i�jij�ij�j�i
�������������f���f�f
������������dcdd�d�d�d��μ����������a``�a�a`a�`�a`��ͻ����������	w��_�^�_�^_�_�^�^_�^_^_��ͻ����������	w��_�^�_�^	_����^�^_�^_^_��Ͻ����������	w��\�]�\�\\]]\�\��п�����������w��[\��[\���������������w��ZY�Zd���ý������������w��Z	����������������������������������z���Z����������������������������������ϵ��Z����֪����������������������Z�������������ź���������������Z���������������	�����Ǽ��������������Z�����������������½���������Į�Z����������������ɕ��ϝ�����ϳ�����������������������Η���������׵������������������������㿿��������������������������������������㽽���������������������㽽���������������������������������������������������ỻ������������������⹹������	�������������������������������������	�������������������Ḹ��������������������Ḹ��������������������෷��������ߣ�����������෷�����������������������߷��������ҩ��������������Ҫ�ߪ�����߷���������ҩ�������������෷������������
��������߷����������������߷������߷��������߷���������۷�%$ !,,$)(+&**)('#'!&
������������������������������������������������������
�������������������������������������������������������
�����ﵵ�������������������������������������~���������������|�|�|�|�������������G::���{�z�{�z{�{�z�z{�z{z{�����������G::���{�z�{�z{���z�z{�z{z{�����������G::���x�y�x�xxyyx�x������������::���wx��w	x��������������:���vu�v
�����������������v
����������������������
�������v��������ʯ����������������������v��%����������������������ȿ��ȯ�������v����������������˨��ʨ��������v�����������������������̣��ɦ��������v����������������������ת��Ӫ�������v��������������������������������������������������������嵴����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%!"%--&#!(%%&&$)%$#&&%%%(
��������ͯ��������������˺�����������������ƹ����������������������������������������Ų��������
������������������������
�Ŀ��þ������������
������Ŀ������~����~����������������|��|�|��|�|�������������u��{�z�{z�{z{�{{��{�z{z{�������������u��{�z�{z����{{��{�z{z{�����������½�u��x�y�x��x�yx�x������������þ�u��w�xx�w�wx�������������Ŀ�u��vu�vz��������������ſ�u��v�����������������������ƿ�v���v�����������{�uy�~|uromkkmq����ƽ����v�����������º������o��s���������v����������¼�����n���n���������v����������þ�����i��k��������v�������ń���¾�����n��o��������v�����������~{z��x��������������%��������Ä��������¿�����zy|������������������������������������„��������������à�������„����������������Ÿ�����������������������������������������������������������������	����������������������������������ÿ������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������߲���������������������ۗ�%%!"*--&#))$&+&))"&!!!&!#'
p�����������������p��������������������������p������
�����������p�������������o�popoppo�pop�o�po������������m
������������ij�i�jij�i�j�i
�������������f���f�gf��f
������������dc��d�d�c��d��μ����������a``�a��a�a��`�a`��ͻ����������	w��_�^�_^�_^_�__��_�^_^_��ͻ����������	w��_�^�_^����__��_�^_^_��Ͻ����������	w��\�]�\��\�]\�\��п�����������w��[�\\�[��[\���������������w��ZY�Zd���ý������������w��Z	����������������������������������z���Z����������������������������������ϵ��Z����֪����������������������Z�������������ź���������������Z���������������	�����Ǽ��������������Z�����������������½���������Į�Z����������������ɕ��ϝ�����ϳ�����������������������Η���������׵������������������������㿿��������������������������������������㽽���������������������㽽���������������������������������������������������ỻ������������������⹹������	�������������������������������������	�������������������Ḹ��������������������Ḹ��������������������෷��������ߣ�����������෷�����������������������߷��������ҩ��������������Ҫ�ߪ�����߷���������ҩ�������������෷������������
��������߷����������������߷������߷��������߷���������۷�%!"%,,%#)(+&**)('#'!&
������������������������������������������������������
������������������������������������������������������
�����ﵵ�����������������������������������������~����~��������������|��|�|��|�|�������������G::���{�z�{z�{z{�{{��{�z{z{�����������G::���{�z�{z����{{��{�z{z{�����������G::���x�y�x��x�yx�x������������::���w�xx�w�w	x��������������:���vu�v
�����������������v
����������������������
�������v��������ʯ����������������������v��%����������������������ȿ��ȯ�������v����������������˨��ʨ��������v�����������������������̣��ɦ��������v����������������������ת��Ӫ�������v��������������������������������������������������������嵴����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%" #--'!(%%&&$)%$#&&%%%(
��������ͯ��������������˺�����������������ƹ����������������������������������������Ų��������
����������������������
�Ŀ��þ������������
������Ŀ������	~�������������������|�||�|�|�������������u��{�z�{z�{z{�{{z�z{�z{z{�������������u��{�z�{z�{z{��z�z{�z{z{�����������½�u��x�y�x�x���x������������þ�u��w�x�wx�������������Ŀ�u��vu�vz��������������ſ�u��v�����������������������ƿ�v���v�����������{�uy�~|uromkkmq����ƽ����v�����������º������o��s���������v����������¼�����n���n���������v����������þ�����i��k��������v�������ń���¾�����n��o��������v�����������~{z��x��������������%��������Ä��������¿�����zy|������������������������������������„��������������à�������„����������������Ÿ�����������������������������������������������������������������	����������������������������������ÿ������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������߲���������������������ۗ�%%" (--'))$&+&))"&!!!&!#'
p�����������������p��������������������������p������
�����������p�������������o�popoppo�pop�o�po�����������m�m
������������ij�i�jij�ii�j�i
�������������f��f��܄�f
������������d	c�ۂd�ۂd�d��μ����������a``�a�aa�aa`�a`��ͻ����������	w��_�^�_^�_^_�__^�^_�^_^_��ͻ����������	w��_�^�_^�_^_��~^�^_�^_^_��Ͻ����������	w��\�]�\�\�|��{�\��п�����������w��[�\�[\���������������w��ZY�Zd���ý������������w��Z	����������������������������������z���Z����������������������������������ϵ��Z����֪����������������������Z�������������ź���������������Z���������������	�����Ǽ��������������Z�����������������½���������Į�Z����������������ɕ��ϝ�����ϳ�����������������������Η���������׵������������������������㿿��������������������������������������㽽���������������������㽽���������������������������������������������������ỻ������������������⹹������	�������������������������������������	�������������������Ḹ��������������������Ḹ��������������������෷��������ߣ�����������෷�����������������������߷��������ҩ��������������Ҫ�ߪ�����߷���������ҩ�������������෷������������
��������߷����������������߷������߷��������߷���������۷�%" #,,&)(+&**)('#'!&
������������������������������������������������������
������������������������������������������������������
�����ﵵ����������������������������������������	~�����������������|�||�|�|�������������G::���{�z�{z�{z{�{{z�z{�z{z{�����������G::���{�z�{z�{z{��z�z{�z{z{�����������G::���x�y�x�x���x������������::���w�x�w	x��������������:���vu�v
�����������������v
����������������������
�������v��������ʯ����������������������v��%����������������������ȿ��ȯ�������v����������������˨��ʨ��������v�����������������������̣��ɦ��������v����������������������ת��Ӫ�������v��������������������������������������������������������嵴����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%"!$--(!(%%&&$)%$#&&%%%(
��������ͯ��������������˺�����������������ƹ����������������������������������������Ų���������
�����������������������
�Ŀ��þ�������������
������Ŀ������~��~���������������|���||�|�|�������������u��{�z�{�z	���{�{z{�{�z{z{�������������u��{�z�{�z	{��{�{z{�{�z{z{�����������½�u��x�y�x���xx�yxx�x������������þ�u��w�x�wx�������������Ŀ�u��vu�vz��������������ſ�u��v�����������������������ƿ�v���v�����������{�uy�~|uromkkmq����ƽ����v�����������º������o��s���������v����������¼�����n���n���������v����������þ�����i��k��������v�������ń���¾�����n��o��������v�����������~{z��x��������������%��������Ä��������¿�����zy|������������������������������������„��������������à�������„����������������Ÿ�����������������������������������������������������������������	����������������������������������ÿ������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������߲���������������������ۗ�%%"!)--())$&+&))"&!!!&!#'
p�����������������p��������������������������p������
�����������p�������������o�popoppo�pop�o�po������������m�m
������������ij�i�jiji�i�j�i
�������������f����f��܃�f
������������dcۂ�d�ddc�d��μ����������a``�a��a`�a``�a`��ͻ����������	w��_�^�_�^	~��_�_^_�_�^_^_��ͻ����������	w��_�^�_�^	_}�_�_^_�_�^_^_��Ͻ����������	w��\�]�\���\\�]\\�\��п�����������w��[�\�[\���������������w��ZY�Zd���ý������������w��Z	����������������������������������z���Z����������������������������������ϵ��Z����֪����������������������Z�������������ź���������������Z���������������	�����Ǽ��������������Z�����������������½���������Į�Z����������������ɕ��ϝ�����ϳ�����������������������Η���������׵������������������������㿿��������������������������������������㽽���������������������㽽���������������������������������������������������ỻ������������������⹹������	�������������������������������������	�������������������Ḹ��������������������Ḹ��������������������෷��������ߣ�����������෷�����������������������߷��������ҩ��������������Ҫ�ߪ�����߷���������ҩ�������������෷������������
��������߷����������������߷������߷��������߷���������۷�%"!$,,')(+&**)('#'!&
������������������������������������������������������
�������������������������������������������������������
�����ﵵ������������������������������������������~��~�������������|���||�|�|�������������G::���{�z�{�z	���{�{z{�{�z{z{�����������G::���{�z�{�z	{��{�{z{�{�z{z{�����������G::���x�y�x���xx�yxx�x������������::���w�x�w	x��������������:���vu�v
�����������������v
����������������������
�������v��������ʯ����������������������v��%����������������������ȿ��ȯ�������v����������������˨��ʨ��������v�����������������������̣��ɦ��������v����������������������ת��Ӫ�������v��������������������������������������������������������嵴����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%!$%#--$!(%%&&$)%$#&&%%%(
��������ͯ��������������˺�����������������ƹ����������������������������������������Ų��������
������������������������
�Ŀ��þ�������������������
������Ŀ�������~��~����������������|��|��|���|�������������u��{�z%�{zz{z{{�{z{z{�zz{z{�������������u��{�z%�{zz�z{{�{z{z{�zz{z{�����������½�u��xy��~�x�y�x������������þ�u��w�x�wx�������������Ŀ�u��vu�vz��������������ſ�u��v�����������������������ƿ�v���v�����������{�uy�~|uromkkmq����ƽ����v�����������º������o��s���������v����������¼�����n���n���������v����������þ�����i��k��������v�������ń���¾�����n��o��������v�����������~{z��x��������������%��������Ä��������¿�����zy|������������������������������������„��������������à�������„����������������Ÿ�����������������������������������������������������������������	����������������������������������ÿ������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������߲���������������������ۗ�%%!$%'--$))$&+&))"&!!!&!#'
p�����������������p��������������������������p������
�����������p�������������o�popoppo�pop�o�po������������m
������������ij�i�jij�i�j�i
�������������fm��m�f�ffgff��f
������������d�dcd�d�ddcdd��d��μ����������a``aa��a��`���a`��ͻ����������	w��_�^%�_^^_^__�_^_^_�^^_^_��ͻ����������	w��_�^%�_^^�^__�_^_^_�^^_^_��Ͻ����������	w��\]e��d�\�]�\��п�����������w��[�\�[\���������������w��ZY�Zd���ý������������w��Z	����������������������������������z���Z����������������������������������ϵ��Z����֪����������������������Z�������������ź���������������Z���������������	�����Ǽ��������������Z�����������������½���������Į�Z����������������ɕ��ϝ�����ϳ�����������������������Η���������׵������������������������㿿��������������������������������������㽽���������������������㽽���������������������������������������������������ỻ������������������⹹������	�������������������������������������	�������������������Ḹ��������������������Ḹ��������������������෷��������ߣ�����������෷�����������������������߷��������ҩ��������������Ҫ�ߪ�����߷���������ҩ�������������෷������������
��������߷����������������߷������߷��������߷���������۷�%!$%#,,#)(+&**)('#'!&
������������������������������������������������������
������������������������������������������������������
�����ﵵ��������������������������������������������������~��~��������������|��|��|���|�������������G::���{�z�{zz{z{{�{z{z{�zz{z{�����������G::���{�z�{zz�z{{�{z{z{�zz{z{�����������G::���xy��~�x�y�x������������::���w�x�w	x��������������:���vu�v
�����������������v
����������������������
�������v��������ʯ����������������������v��%����������������������ȿ��ȯ�������v����������������˨��ʨ��������v�����������������������̣��ɦ��������v����������������������ת��Ӫ�������v��������������������������������������������������������嵴����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%$ !--%!(%%&&$)%$#&&%%%(
��������ͯ��������������˺�����������������ƹ����������������������������������������Ų���������
�����������������������
�Ŀ��þ���������
������Ŀ������~�����������������|�|�|�|�������������u��{�z�{�z{�{�z�z{�z{z{�������������u��{�z�{�z{���z�z{�z{z{�����������½�u��x�y�x�xxyyx�x������������þ�u��wx��wx�������������Ŀ�u��vu�vz��������������ſ�u��v�����������������������ƿ�v���v�����������{�uy�~|uromkkmq����ƽ����v�����������º������o��s���������v����������¼�����n���n���������v����������þ�����i��k��������v�������ń���¾�����n��o��������v�����������~{z��x��������������%��������Ä��������¿�����zy|������������������������������������„��������������à�������„����������������Ÿ�����������������������������������������������������������������	����������������������������������ÿ������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������߲���������������������ۗ�%%$ &--%))$&+&))"&!!!&!#'
p�����������������p��������������������������p������
�����������p�������������o�popoppo�pop�o�po������������m�m
������������ij�i�jij�ij�j�i
�������������f���f�f
������������dcdd�d�d�d��μ����������a``�a�a`a�`�a`��ͻ����������	w��_�^�_�^_�_�^�^_�^_^_��ͻ����������	w��_�^�_�^	_����^�^_�^_^_��Ͻ����������	w��\�]�\�\\]]\�\��п�����������w��[\��[\���������������w��ZY�Zd���ý������������w��Z	����������������������������������z���Z����������������������������������ϵ��Z����֪����������������������Z�������������ź���������������Z���������������	�����Ǽ��������������Z�����������������½���������Į�Z����������������ɕ��ϝ�����ϳ�����������������������Η���������׵������������������������㿿��������������������������������������㽽���������������������㽽���������������������������������������������������ỻ������������������⹹������	�������������������������������������	�������������������Ḹ��������������������Ḹ��������������������෷��������ߣ�����������෷�����������������������߷��������ҩ��������������Ҫ�ߪ�����߷���������ҩ�������������෷������������
��������߷����������������߷������߷��������߷���������۷�%$ !,,$)(+&**)('#'!&
������������������������������������������������������
�������������������������������������������������������
�����ﵵ�������������������������������������~���������������|�|�|�|�������������G::���{�z�{�z{�{�z�z{�z{z{�����������G::���{�z�{�z{���z�z{�z{z{�����������G::���x�y�x�xxyyx�x������������::���wx��w	x��������������:���vu�v
�����������������v
����������������������
�������v��������ʯ����������������������v��%����������������������ȿ��ȯ�������v����������������˨��ʨ��������v�����������������������̣��ɦ��������v����������������������ת��Ӫ�������v��������������������������������������������������������嵴����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������|||||zzz{{zzz{{xxyyxwwwwwmmmmmijiiifffffddddd`aaaa^^^__^^^__\\]]\[[[[[���������������|||||zzz{{zzz{{xxyyxwwwww������������������������������������������������������������|||||zzz{{zzz{{xxyyxwwwwwmmmmmijiiifffffddddd`aaaa^^^__^^^__\\]]\[[[[[���������������|||||zzz{{zzz{{xxyyxwwwwww�w����"w��w���"�w��w�D��w���"f�w�"��"f��w��w�"��w�����w�"�����"�"�"�"���������������������������
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%%$%,,.)!)#""!#)!(&"))&%% !
~�������ͯ���~����������˺��������~��������ƹ��������~������������}�~}~}~~}�~}~�}�~}��Ų��������{�{
��Ļ��������wx�w�xwx�w�x�xx�w
����þ������t�t��t�����t�t
������Ŀ������r���r�ύ�r��r�r��������������onnoo��oo�on�on�o�on�������������u��onnoo��oo�on�on�o�on�������������u��m�l�ߟ�m�mm�ml�l�lmlm�����������½�u��jއj��j�jj�kj�j�j������������þ�u��i�j�ij�������������Ŀ�u��hg�hm��������������ſ�u��h�����������������������ƿ�v���h�������������������������������ƽ����h��������º�v�����������������h�������¼�������������������h�������øj����������������h��������™z��������������h����ž��
��~����������������������������ij������±t���t{������������������q����‘�����q�������������÷�q������u�����¨|q�����à�������q��������������|q����Ÿ�����|q�������������vq�����������qv���������q����������q��������������qv���������q��������%���������q|����v�������q���������������ÿ��������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������߲���������������������ۗ�%%%$%,,.))*&**(%((%%("" %$
~�����������������~��������������������������~������
�����������~�������������}�~}~}~~}�~}~�}�~}������������{�{
������������wx�w�xwx�w�x�xx�w
�������������t�t��t�����t�t
�������������r���r�ύ�r��r�r���Ļ���������onnoo��oo�on�on�o�on���õ���������	w��onnoo��oo�on�on�o�on���Į���������	w��m�l�ߟ�m�mm�ml�l�lmlm���Ŭ���������	w��jއj��j�jj�kj�j�j���ǰ����������w��i�j�ij���ɴ�����������w��hg�hp���ʽ������������w��h	����������������������������������z���h��	������������������̰�������������ϵ��h�������ظ�����������������h������������ښ�����������������h�����������������������������������h���������᳑��½������Į�h��������������ᕶ�����������ϳ����������Ѡ������ω��Պ�����������׵������צ���������ʙ����������㿿����׬����݌��ē����������ܲ���������������㾓������㽽�����Ⓡ�����������������Ѝ����㽽����֫�������Ї��������׫��������ܱ������⫫��ܫ��������ܫ�����܍�����⾇��������ỻ���������֥��ᾙ������������⹹�����������������������ə��������������������������Ḹ������������������������Ḹ��������������෷��������������෷������������������߷�������������������������������߷�����������������������������෷������������
��������߷����������������߷������߷��������߷���������۷�%%$%,+-()'+"*(+(()) ("&!

~���������������������������~��������������������~����
������������~��������������}�~}~}~~}�~}~�}�~}������������{�{
�����ﵵ���wx�w�xwx�w�x�xx�w���������t�t��t�����t�t�����������r���r�ύ�r��r�r������������onnoo��oo�on�on�o�on�������������G::���onnoo��oo�on�on�o�on�����������G::���m�l�ߟ�m�mm�ml�l�lmlm�����������G::���jއj��j�jj�kj�j�j������������::���i�j�i	j��������������:���hg�h
s����������������h
�����������������������
�������h�����������������
����������h��%��������������������Ѧ���������������h����������ﱷ����������������h������������������������������������h����������������Ǧ�����	���������h�����!�������������������������������������������������럨����������������������캛���������߮����������
�����������������ڧ�������������!�ƛ��������ӭ��������ӧ������������������������	桛��������������������������������ƛ���������������������������������ӛ������������Ӯ������������������������������������������߮��������������������������������������������������������������������������������������������������������������������������������
			
		�������������������������r��G��"�����������������������������������������8��8���������������������*��@22@AABCE�@2�%!!$-'!!'#""!"+'#+!((&"($&('��������ͯ��������������˺�����������������ƹ����������������������������������������Ų���������
������������������������
�Ŀ��þ��������������
������Ŀ������
����񘘗��������������������������������u���������𕔕�����������������u�����𧒒����������������½�u��������������������þ�u�������������������Ŀ�u��������������������ſ�u�������������������������ƿ�v���������������������������������ƽ�������������º���������������������������¼���������������������������þ��������������������������¾���������������������
�¿��������������������������������������¿�����������������������������������������������������à������������������������Ÿ�������������������
����������������������ș�������������������������ə������	������������ٔ����ș�����������������Ǚ��������������������ߴ��	����ƙ����������������ݴ����������ř������������������ߴ����������Ù�������������������������Ù�������������������ߵ������������������������ݷ������	������������������������޷���������˿�����������������ݸ������������ʾ���������������ݸ����������ɼ������������������ܹ���������Ȼ�������������������ܹ���������Ǻ��������ϔ���ϔǹ����������������������������������������ŷ�������������������%%!!)-'")*&*'*"&*("%#**-( q�����������������q��������������������������q������
�����������q�������������p�qpqpqqp�qpq�p�qp�����������n��n
������������jk�j�kjk�j�k�j
�������������g��g�g����g
������������d
cd�d�d�ddc�d��μ����������a``�a	�a�`�a``�a`��ͻ����������	w��_�^�_}�_^�_�_^_�_�^_^_��ͻ����������	w��\�]{�{\\�\��{�\��Ͻ����������	w��[���\�[�[\��п�����������w��YXY�Yc���������������w��YX�Yc���ý������������w��Y	����������������������������������z���Y��	������������������ɰ�������������ϵ��Y�������������������������Y��������������ź���������������Y���������������������Ǽ�������������Y��������������½������Į�l�������������������������ϳ��l��������������������������������׵��l��������������	�������㿿�l����������l���������������������㽽�l����������㽽�lk�w��������������k�������j~z������~�}�|{�y�~~j��������ỻ�i~j�~j~i����������⹹�h�|�L�Q	T�||h�������g���U�c[�uug�������e~�U�s���s
c�ssf������������Ḹ�e�}�U������j�rqe��������Ḹ�c�|�U�n�����o	b�ppc���������෷�a{y�U�����m�ooa����������෷�`�x�W�{��{j�ll`������߷��^�x�W{||������}l�kk_���������߷��^wv�Xggil����l�ia�ji^�����������෷�\�u�Xxyyz���Ӄ�{	n�hh\������
��������߷��[�s�X�q�r���́�r	i�ggZ����������߷��Zrq�X�l����lf�feZ����߷��Yqjq�qjfY�����߷��X�l�k�jihh�gf�ed�aW������Wmkmjihh�gf�e�d�cac``W�UVWVUVVUWVV�U�V�UWUWVUVVU��%!!$,& )'+"*(+&&%()'#$ #&!������������������������������������������������������
�������������������������������������������������������
�����ﵵ�������������������������������������������
����������������������������������G::�������������������������G::����������������������G::��������������������::������	���������������:������
�����������������
����������������������
�������������������������
�������������%���������������������������������������������������������������������������������������������������������������������������������	����������6�����!����������������������������������6����������������������������������6��������������������������������6�������������������������������6����������������������������������6a���������������6�X=�������������5�X`�����������4C@FH�F�D�C�B�A�@?FCC4��������������4CQ�CQC4���������������2�BJ�#$JBB4�������������1�DI%�/)I==2����0�CI%�;���;/I;;0�������������0�BI%�F��F4I::/�������/�AJ%�8�����8/J99/����������.�@I%�F���F6I88.�������-�>H&�A���A5H66-����������,�>H&�A�����A5H66-�������+�>H&1148���ϼ8�4.H55+������)�=G&�>@K���L�A	7G44)���������(�;G&�:Q���Q�:4G22(�������(�:F&�6^�^�61F11(�������':Q:�X:Q1'��������'�6�5�4�2�10�/'���������&:6:5544�2�1�0�/.2..&���%&%%&%%&�%&%&&%��
		
	�������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2%!  -,%!(%%&&$)%$#&&%%%(
��������ͯ��������������˺�����������������ƹ����������������������������������������Ų���������
������������������������
�Ŀ��þ�������ぁ����
������Ŀ������	~��~���������������|�||��|�������������u��{�z�{�z{�{���z{�z{z{�������������u��{�z�{�z{�{z�z{�z{z{�����������½�u��x�y�x�xx���x������������þ�u��w���wx�������������Ŀ�u��vu�vz��������������ſ�u��v�����������������������ƿ�v���v�����������{�uy�~|uromkkmq����ƽ����v�����������º������o��s���������v����������¼�����n���n���������v����������þ�����i��k��������v�������ń���¾�����n��o��������v�����������~{z��x��������������%��������Ä��������¿�����zy|������������������������������������„��������������à�������„����������������Ÿ�����������������������������������������������������������������	����������������������������������ÿ������������������������������������������������������������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������	�������������������������������������������������������������������������������������������߲���������������������ۗ�%%! &-,%))$&+&))"&!!!&!#'
p�����������������p��������������������������p������
�����������p�������������o�popoppo�pop�o�po�����������m��m
������������ij�i�jij�i�j�i
�������������f��ff����f
������������d	cdd�dd�ddc�d��μ����������a``�a�a`��`�a`��ͻ����������	w��_�^�_�^_�_~��^_�^_^_��ͻ����������	w��_�^�_�^_�_^�^_�^_^_��Ͻ����������	w��\�]�\�\\���{�\��п�����������w��[��{�[\���������������w��ZY�Zd���ý������������w��Z	����������������������������������z���Z����������������������������������ϵ��Z����֪����������������������Z�������������ź���������������Z���������������	�����Ǽ��������������Z�����������������½���������Į�Z����������������ɕ��ϝ�����ϳ�����������������������Η���������׵������������������������㿿��������������������������������������㽽���������������������㽽���������������������������������������������������ỻ������������������⹹������	�������������������������������������	�������������������Ḹ��������������������Ḹ��������������������෷��������ߣ�����������෷�����������������������߷��������ҩ��������������Ҫ�ߪ�����߷���������ҩ�������������෷������������
��������߷����������������߷������߷��������߷���������۷�%!  ,+$)(+&**)('#'!&
������������������������������������������������������
�������������������������������������������������������
�����ﵵ��������������������������ぁ���������������	~��~�������������|�||��|�������������G::���{�z�{�z{�{���z{�z{z{�����������G::���{�z�{�z{�{z�z{�z{z{�����������G::���x�y�x�xx���x������������::���w���w	x��������������:���vu�v
�����������������v
����������������������
�������v��������ʯ����������������������v��%����������������������ȿ��ȯ�������v����������������˨��ʨ��������v�����������������������̣��ɦ��������v����������������������ת��Ӫ�������v��������������������������������������������������������嵴����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������






			








������%��������������`��*�������*���i���i���k���|��	��������������$�����Z�����������������������M�������������������������������e�����Q��0 �	$99:;;=�9	=;;:99$&�#-.%%- *0'*)����s��}������������~}|����m������������������}������������~}|����m����������¾����ٌ��������������~}|����m�����������������������~}|����m����������������������~}|����m��������������������������	�������������m��H�����������������������m��
_T������������������������������&
�m��	�[~���������������������	�������������{&
�m���]}������������������������xuR
�m��
�_}���������������������	������pmji�m���k}���������������������������������|}�~~}~�}������ƒ~��{z{~�����s�~��x������|���vu�vx������v|��
~�tssts������y|��
~�qqpqq�����x||��
~�llnn|������v||��	|�deik�����z�{�B	|�]`do�������s�h��z�Y[_������|x�h��z�VW]�������r�y��z�UTy������}u�y��z�TT���~�s�x��z�Tj��y~�~y{r�x��z�S��yw�}xzr�v�z�`�qy�|{tzo�h�z�ȗwn�{�vrs�h�{���oit�y�z�{zpyk�t�z��{h�tqrtp�t�	vv��ztkjj�k�l�m�n�o�pqxmqq��l}qwy�{ol��I�ji��$..%%+#)&'$,�����������������������������������������������������������������������������������櫨����������������������������ı��������������������������������ϲ����������������������������̽����
���������հ�����������������������̼�������������������
_x�˻�������������������������(#�����t�˸���������������	��������(#�����s�˴�������������������������q#����������������������	�������������������������������������������������΍��������О�ȣ������ÿ���ụ���;����
�Ѧǜ������Ľ�����������ν�������
�Ɩ�����Ź�������
�Œ����λ���������	�Ŋ����ƶ������j	�Ă���̹������������}��ȱ������������{{�ù������������yx�ƭ�������������xw��������������x����������������w������������Ά��������������ڽ�����������������������������������������	��������������������������������������aލ�(��$"  + "..-!����������������������������������������������������������������������������������������������������������������������������������������̠�������������������}�����������������������������������������������������������������������������������Կ�������������������������������������
Ӷ������������������߻��������������������������������
������������������������������������������
������������������	���������������	��������������������������������������������������������������������������������������������������������������������������������������������������������������	�����������������������������������:��
									
	�����������������������������r���G���"���������������������������������������������������������������*��@22@AABCE�@2�  #%($$''!  !$-)%&.&.,-,-)-+)+,$%
�����ͯ���������˺�������������ƹ������������������������������
�����Ų���������������������������������
����Ŀ��þ���������������������Ŀ��������������������Ž���������������������ļ�����������u��������Ž�����������u���������������Ž���������½�u���������ƿ����������þ�u����������������������Ŀ�u������������������������ſ�u�������������������ƿ�v����������������������������ƽ�����������º�������������������������¼�������������������������þ��������������������������¾����������������������
�¿����������������������������������������¿���������������������������������������������������������à��������������������������Ÿ�������������������	��������������������򜜝�����������������򶧭���������񢣤�����������������񴧭�����	������������響��������������̯���zﱧ���������� �e����ε��������ԭ������������������������~N������lx����Ʀ��ý������������������#됡�������\������������뫦�������������������Ŭ�����߯������������骦���������������蝽�=��ym�˓�����������試��������������������rO��K�Ԕ����������姦�������������Ʀ��Ё�z����}~�䥦�������������������������Ƨilpx}���oim}⤥���������������i�� c���kafih{�o���u{ࣥ�������������c:u��«yf[Y]d{�u�t�`�_ޢ�����������������ba[H9@ETn_STofg���lpmܡ������������������\;;9<;?HO\Viha^qv��lW}۠���������YGFBqhILQXQr~��e���~^ؠ���������������������������!#!#&$''$(($(),$(*+%&-***'+,/+$%
������������������������������������������
��������������������������������	�����������
���������������������������������������
������������������������������������������������μ����������������������ͻ����������	w����������������ͻ����������	w�����������������Ͻ����������	w�������������������п�����������w�����������������������������w����������ý������������w�����������������������������������z����	����������������ɰ�������������ϵ���������������������������������������ź�����������������������������������Ǽ���������������������������½������Į��������������������������ϳ������������������������������������׵������������������	�������㿿�������������������������������������㽽������������㽽����������������������������Ŀ��Ū����������������
������ɶ����������ỻ���������������˵��������������⹹���f�����̛�������ڿ�Ե�����������K������i~ѵ��ɭ���ս���������멱�������Z�������������������������Ḹ�����������߲��������������������Ḹ���ͺ>��ym�̝���������������������෷�����pN��I�Ӣ���������������������෷���ҭ���ύ������������������߷�����������ť�������ņ{�����������߷����� a���hv����������������������෷���}5���¯�vXi�����������ޢ������
��������߷����zoUFDA\�gbt����������ܡ����������߷����xHA5HR>EJ`g���������z�ۡ����߷����pPMB��JHMUk�����������٠�����߷��������������������!"&$&%$$(%) ((-(('*$$'*",%(%)%%(&$%
��������������������������������������������
�������������������
�������������������������	�������������
������ﵵ�����������������������������������������������������	������������������������������������������G::���������������������������G::����������������������������G::������������������������������::��������������	���������������:��������������
������������������	����������������������
���������������������������
�����������%�����������������������������������������������������������������������������������������������������������������������������	����������������!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������l���������������������/D�����������������������n4[-�����������������{������������ܡ��y��������������T������w���͸��������������������m�������~rLXC���������������c������ïf���m���D0q���������h��F��u�Է�al����12=�������������{Y�׳W�ז���[qc[]�\����������z����虿ԙ���vx;����������������]�������ȯ9EDA>25(PbeG���������!k�ĥk���y9�����������#>W��Ģ0Dk?ޢ���������#*3,>NEP>�ܡ�������#47=,!CR[T7۠��������2<=A !FU]d)' "!"##!!ٟ����������������������������8BIMPatt8BIMTxt2Yw /DocumentResources << /FontSet << /Resources [ << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (��ArialMT) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (��MyriadPro-Regular) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (��AdobeInvisFont) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (��TimesNewRomanPSMT) /Type 1 >> >> >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name (��) >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (��Photoshop6MojiKumiSet4) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> << /Resource << /Name (��Photoshop6MojiKumiSet3) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (��Photoshop6MojiKumiSet2) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (��Photoshop6MojiKumiSet1) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (��YakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (��GyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (��GyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (��YakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (��None) /Data << /NoStart (��) /NoEnd (��) /Keep (��) /Hanging (��) /PredefinedTag 0 >> >> >> << /Resource << /Name (��PhotoshopKinsokuHard) /Data << /NoStart (��!\),.:;?]}�    0!!	0000	00
0000A0C0E0G0I0c0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0����	������=�]) /NoEnd (��\([{��  00
00000���� �;�[��) /Keep (��  % &) /Hanging (��00��) /PredefinedTag 1 >> >> >> << /Resource << /Name (��PhotoshopKinsokuSoft) /Data << /NoStart (��  0000	00
0000�0�0�0�0���	������=�]) /NoEnd (��  00
0000��;�[) /Keep (��  % &) /Hanging (��00��) /PredefinedTag 2 >> >> >> << /Resource << /Name (��Hard) /Data << /NoStart (��!\),.:;?]}�    0!!	0000	00
0000A0C0E0G0I0c0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0�0����	������=�]) /NoEnd (��\([{��  00
00000���� �;�[��) /Keep (��  % &) /Hanging (��00��) /PredefinedTag 1 >> >> >> << /Resource << /Name (��Soft) /Data << /NoStart (��  0000	00
0000�0�0�0�0���	������=�]) /NoEnd (��  00
0000��;�[) /Keep (��  % &) /Hanging (��00��) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (��Normal RGB) /Features << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (��Normal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> /ListStyleSet << /Resources [ << /Resource << /Name (��kPredefinedNumericListStyleTag) /PredefinedTag 1 >> >> << /Resource << /Name (��kPredefinedUppercaseAlphaListStyleTag) /PredefinedTag 2 >> >> << /Resource << /Name (��kPredefinedLowercaseAlphaListStyleTag) /PredefinedTag 3 >> >> << /Resource << /Name (��kPredefinedUppercaseRomanNumListStyleTag) /PredefinedTag 4 >> >> << /Resource << /Name (��kPredefinedLowercaseRomanNumListStyleTag) /PredefinedTag 5 >> >> << /Resource << /Name (��kPredefinedBulletListStyleTag) /PredefinedTag 6 >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 2 /WhitespaceCharacterMapping [ << /WhitespaceCharacter (�� ) /AlternateCharacter (��1) >> << /WhitespaceCharacter (��
) /AlternateCharacter (��6) >> << /WhitespaceCharacter (��	) /AlternateCharacter (��0) >> << /WhitespaceCharacter (�� \)) /AlternateCharacter (��5) >> << /WhitespaceCharacter (��) /AlternateCharacter (��5) >> << /WhitespaceCharacter (��0) /AlternateCharacter (��1) >> << /WhitespaceCharacter (���) /AlternateCharacter (��3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 1 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 2 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 3 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 4 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 5 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 6 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� 9) /CloseSingleQuote (�� :) >> << /Language 7 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 8 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 9 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 10 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 11 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 12 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 13 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 14 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 15 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 16 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 17 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 18 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 19 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 20 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 21 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 22 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 23 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 24 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 25 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� 9) /CloseSingleQuote (�� :) >> << /Language 26 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 27 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 28 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 29 /OpenDoubleQuote (��0) /CloseDoubleQuote (��0) >> << /Language 30 /OpenDoubleQuote (��0) /CloseDoubleQuote (��0
) >> << /Language 31 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 32 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 33 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 34 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 35 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 36 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 37 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 38 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 39 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (��<) /CloseSingleQuote (��>) >> << /Language 40 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 41 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (��<) /CloseSingleQuote (��>) >> << /Language 42 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 43 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> << /Language 44 /OpenDoubleQuote (���) /CloseDoubleQuote (���) /OpenSingleQuote (�� 9) /CloseSingleQuote (�� :) >> << /Language 45 /OpenDoubleQuote (�� ) /CloseDoubleQuote (�� ) /OpenSingleQuote (�� ) /CloseSingleQuote (�� ) >> ] >> /TextObjects [ << /Model << /Text (��php
) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name (��) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> /Parent 0 >> >> /Length 4 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name (��) /Parent 0 /Features << /Font 0 /FontSize 10.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading .01 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking -10 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures true /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms true /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 1.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .4 /MiterLimit 1.6 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> /Length 4 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 4 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 4 >> ] >> /StorySheet << /AntiAlias 4 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 4 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 12.0 /EMHeight 10.0 /DHeight 7.15988 /SelectionAscent -8.58154 /SelectionDescent 3.24707 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -8.58154 0.0 3.24707 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 4 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -8.58154 16.38457 3.24707 ] /Glyphs [ 83 75 83 3 ] /GlyphAdjustments << /Data [ << /BackFixed -.1 >> ] /RunLengths [ 4 ] >> /VisualBounds [ 0.0 -8.58154 16.38457 3.24707 ] /RenderedBounds [ 0.0 -8.58154 16.38457 3.24707 ] /Invalidation [ 0.0 -8.58154 21.18453 3.24707 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 4 ] >> /EndsInCR true /SelectionAscent -8.58154 /SelectionDescent 3.24707 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >>8BIMlnk2(�fliFD$6959b6d6-0482-1173-a2a2-eaea0594271a
image.png�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F+IDATxڴ�[�]�U����9g�ǵ��'MLMCB���U��ԋ���JH��
x�E�����@��S��Q/i�8qB[%$6��\��Ǟ�̙9����xؗ��9�2�8�t��ξ����_k����|MAAP$�6�/g�"8u�N�#�ێ���›��?0Y߼m�p����S��>�v��휤�ܾ�N'֞���/?��S%Q"RZ�.��V����U�E��v�!�wmK�J;rl���)���	[�T|k^]�[��kc��z=�ݖ��%��-����Z0�j���@T�<K5�|��b���]�^Ø�z@�h.d���ƚ� ��CQu����<�
��n�J0���[��T�ͅL��B�(���Kw*�Sb'D�.B�+�5^�?�_��xѿ�i��
�-~>eO)�)�����E1q���<��7v��6!ԗU�b��U�
I#�DQL'���Q7$�B`�0րg��g�~i�p2�M�Z�\��R��+��.9rN��0L>�N���\����Y�z���7~g;Jl_퇏$��%G1^4��<~Tq��tC�����J�y�9��[n��-�KU�s<�›V�^eS�E0i���b�*�A���'/�o@p�E���!�,��DHA0�0�`�`��#��gvR��P��O�6����=��,7�RO)�j�"9��3���`l�?�`���T���a�6�͟>G�!�Uz%��)�=iS�I�	���Ř$e�P�2t� �_T�B�Q��'�����&�8�~ba���\-R��r`��X�P�2ĩ�)+1<\1���S�?������5�..DA͠ӗ�4P����y�E��
��찶�bc}��&��a�KF����hT*����y��rd;���/]�;MЎ��v I�<�h�ɒ׍�<)Q�m�i�mr��"�V�8�Q���X��?���2>1�P�N���޺^>sۧy0�[�	)z������*�Ry!I���ccu���mw���\j ���k���l��\�[��L��>R��}�O�o��ɒ����+
�Ȏ5���8F�K��<���,�g�8��`C�
�:!r���,�Q���L#�v%�[�B6M<�c��M�P�*�0"	L�I���;#��i�-��ߣ�����k���	r��� (�iO����^��4�"X#X�T|��#�D�8��Zb_c"I
6�`�G�k9����>�R)�$l���h�P�˂(��<? P�|�("c�gQ�36}Rb1��Ga�kY�Ý4��5�*E�)9zP�	�BY$u�&C�I�j�XK�Z:t�S��{�5�=�$M[k�j�fcgM}^m�\H
�c�)Y�঩
��>�P����m��Mj��V��v�B�D�T0�����]8��%��Nk�kec(�ܓ��Z�B������B?P�)�BM��F-��uf�v5{N*P�'N�P�A�wȇ��s[�&���V�i��QK�v{.T4�z/uH�8��[�p�=w�~��'_���eF�F��6��H�@���
���Q{)�o�w����)��wr����Xz[u�:�kԂ�@h���W����K��v�E}�ѳ��u)
	�ݸංPRh��K���~�PC���xx���6��WPm3��5�W�	�+��Rǯ}�ˀ��Y�A2&�N�e6�\�%*���-�Ge�{D�ڭ�f���&������ge�E��GX^=�s�q�v�H^��r���4�қt����:�<�/����o����[�֡%��f�Փ�"�����"���lu��g5�5�cz�<p�GԂi���)�C�B&ɂT{��+)e���lP�d�q��su��|�޽W�Ls��{'*�9�ιW�忿�$�o���‰�β�����~������1iF��I�z3�~uI�Ձ��h��,��l:�e���,������3�;��j�����|�/��s����B�0"�#fW^e~)�'_�1q[i���
.�#7�;q:@�-�6Tz�r`
���,��1!����v�+�',�̳�^N�����P�U�����+ԧ�i����Sln�h�!��:�3��a�Wڬm�e���d8�ܖT��Q��3��e3�-b��Y�̅?�]ed�_��x��q"������"���8Wecq����󗫴WnƯ-�l��Mg��[����dĮ������WߴA�w�'�c�S���;O����I���	���G?���{�׮^�V���ř�\;�q������Ⱦ�`�Y�#�>K�<�[���r��[���P��֕8y���0Sws���ejj7�J���3��e֛�A��y��a���&��>�gس�,�|��[�u��aY@�å���.Me��fҗ��̻�M��+�����L�ayi��	A��Ï<ĵ�yμ�&s�o`���T�c� �1�dq������sw�mM��'p�y�γ���G�Zh�c�l���R������px�a^�,����s/��o��vM011�����7�&6�vG�1�C��U��¾#/����W�Ř�S��ok�x�� v����0���<��e��E�F����ū�����?>�eVV�h��6a2�;�:����ࡘ���n���L�2\z+J�&�aW�"—�^�J�y�8������N���7��1�o{���͎6
7)��bDb�곱��CcX��12nJ
�_+���Q� ��bT����?�
�k��a�"��Ӽ:��w?�����arJ�tb�P�����p�!��s	�r)���E1���
�3=�\�ۣ4�U�"��&�
a�y�uc
��a�g�j#4�:Tk+3�"n�ݧ�.�j01�X[
1�'v�;_�3�8�*�W��߶����_<��[\w_ص��,�����g���x��ΐlq�1s�s��^"�K%f/]`�������
�U5���=�H�CL?o�k��ʍ��
���
uIEND�B`�1liFD$94592e07-047e-1173-a2a2-eaea0594271afolder_open.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F�IDATx��[�]W���{�s&sOs�\;i3�c�TPD�/߼ԇ����y�D�@U��}�X�� 
�b�m�Dl�P#B��Ln�d23�̙���k}�{�3g&��Q�ca6��6{�����]��o���6��l��`��-[��+^���]�$�1��w��Z�)��g��8�d���!�S03�'`5˟�A���b+9���N_�\�x�<zx��uC���W��jyo�.�(�I[^���@�o��/g��Ԉܘ��>��I*���_���o�~|�}𝳗ubrHҕ�}�=����bKN���%�vK�,�2#�"����JӛgN�S��W^9/��} �=4"��"�H�����X��a ��plw��0+ו�_�KX��V�bn�?��C�@����#��|�����Ԩk,V1r5��-
F���w����W�­;��RNz�g�j���.��ď|�3G�zG%~�g����Nq����R���!RlUr0�*��$��Zn��Y!�:��t-�H��ap�#7=����I�K
����l�R���B*�)j��,?S+L�u	��y��N�UА�4�k��4�e���9��\2;kH�A���'�s�j�"�����
$��=:cR�/��r��`ZP��^���ܱ�.$���楇�m�ĻFT�����HA��.9���0�5=�ZX�.w\wL��R��mwAX9��BHSO�0>q`h��/-���]��S���m{�ΔGCXU���(r|�L�	�֕���%��@��W[���q�cV�_Y6���ά�'��� Ob�ZbМ�='�����������0�ج������b�p*�N�ڮ�A�)b 
�&C�(��/�!�{AD�����>c��m\9@�9�;��7v~;'F0�,˕ڹ��/,204|>>x�]_�j�Q�ޕ��:'��
�V�j8`}=���Uj���v�4��f��9���'���#�@E}Ь׉��3OL^��Ǫ]�B(<�t=�
i+�f�H+�K��+���|�'�w2�s� ���!jʭ�
�{�(B�:i��5�<1��.���yK���4E�#v�9v���:|��}�H���I��⚤��?8ff�M��e�8��fC��=h�lrӠ���n���WO�I)?��#\��]��|���x���45B0⮿�|����Ie���O�K��V��(���8��^��d��#���!x�8V��Z<q[R�u��<�U�?�AsY��'	�����JP�������3'�r�J�UM�y��=�i,)��[�<��|	��㢈���%����U���صw�j��l�N�I*�����8
����ai�{���3��>�˞v��gH����� �h-׉���^Ztخ�����k��5IWZ����ﳌJ�B���J��5��Kq��M�8>��w����N��QL�gmf˲.�H[u����?dw�N� �M�S�k>%m.��۴��=<B������([o��?h�4%r�梉��=k�f��-�_��u�4ehx�N��v_s˓��$����>5}�|�UD�s)f042Fk�ٍ{�g`edw��w+"Tj4�'�o����J��ܸr��FJex�dp���p߂��W13��y�^�(P}��<t��g�_������񗟼���-+@�̖6�0X�'�Ξwң���BW�g]�?d@���u���=%'F�w]MIEND�B`��liFD$4c02335c-0485-1173-a2a2-eaea0594271ajs.pngo�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	�IDATx�̙[�]U����3sfNgz�p�B�i�A�Zh#/ژ�B$�y�bkb4��%�T�ђ�QbPPD�F�r)���(�V*Pf�����^��a_���N�c`%;sf�u��.��]��*�Z�笂�
� 
H�����؋��a�bS%^L���&o}m��#��7�S��u�1��Za?�T��FhYm��N���O�L�TYX�y�������
�B�i�R���R����:�e��"8���5��y���]�&�k�r�+���_z����?-]sO_�u��|���f�Am("]�g>�y���U���_ʹ)�#"�_���bO�2ޞl߫\t�U�04�@Ҋ�
E��h��Wf_۽u�%izr O�!�+/k-�����o�Z~������x��uB�u)����MX�]���<U�xT��@���e������K~�_��4My��1R��Z)ij�iBd #�h�W��~� J��֞s���anf�������u�.�cM���w-����u���Lв�4NQ�@Q�B�7?�m
õ��S�Ch)�;�m�o+��i�~�ޞ��k�I��r���8H€���KG^õ�;����4�z���UUn�wk/X���P*���Uũ�'�A�(�Raa���{qc�,䴴d'��$���{�}.��3�=x��.F���(�A�l���,���D�5j!:4��|s��mg����Np�}fb�`��#
��d�I=���C5���N�������\'��~0[��{`oy<�d�4����Eg1�8���hD���l�j[���.�Ⱥ�_{����x�����߶�����O��(S�zV�#�UjA�?���h]<��4���q\U�W�(0y6�����J��`x8�M��4��Y��f��V3Xy�h6����=��}?j��e]5�B+�������a��_�uk�H���rVq��u.�t��TJog�O�0Ekq��Sgh���$��ZG�)81�j!��B��Vl��Y�y�g?\u�w��V�|I'6� �Z�	�\����y�������5�G�ǚ8kq���J�I���,�*�cÐ��_ǚ5�6�X�j�����3so$�_���]�%�OC�ӧ�яoZ�bZ`gџ533s��l�rcc�]
�s`m��b���gfO3?�H��"M-������l�8�8��	.�8���9��j�^;�Ȋ��>��+�\�gC�X����=q��1�l�d��(r+X*�d��!���a@B��w��XO
!�[�AE�������K��Y�C�~��hd�S@�-d.�Q�mafgO36��-��v���#�	�1�2a"$iB����)�:�)F ��2��[o�$
��n)�,�J����\<��q�&�fߋ!�D�a��Sj�:�f��ZXja��بP8��m:�?�r)���T$�[XE{��ކP��A[�SW_s6�4F��'4��r�8��[�AD�i�y$8UKi�=�5���JhI����ΝӥB� 
�KI��$� @�c��<�A04Tg���ԇ"E� �DV����W�E���Q����h�Ms%�j����F���(Bct�;��$���[���^d��E�h/)z�𒽅���9�lZ�FD��dI�:�X�?076����j;��S��L��a�|{�ʣ�.<�]l�Qy���=PB�(��ː%��Z�{���,EU*-�ަ�D7�d��%��.���šǟ��۾c�*Z'2�rK�y�.��ݣ�)9cm�1EE��z�%K���5Z�A>��;����Z��`�hRˌ-��(�z�`�*y�G�s�C��p�2��@�_.��^$2�I��'��m;��c§�j�A�0-���C�v�n5]�޵;�J*�gPQ/�CS<��G�C�2���!�[x��.��ʉ���ؐ2�zRr�_�х�\��(.�u��(
N�W;Ƥ��[ڶl'V�ZP�l�ἳoӛ�͵Ʂ��x���Ӈ��m�{Ke���J˖���s��]-
�wٗ����n����|��$z�χ=����dW4R
��/�W@+�Iw36gy#ե�����u�9���ɜ��{D���ٹ5�_��9�j��T��{�Z��
W%3��:|��|G^9R*Qv�E�:1�)
Ln��g�/.�G%#I��L�1��B�)j��(�]�)��e�W�y�0Q=br�d7��0�huu���h�ɕW�}�T+�~��v��V���5��\�~�c[�O<|�c0�׿�Jv���$�e	1����æ����@X>t���,���!l|XJ�������?��1���;|Ԗ�|��]�X�J1O4@�!�0��t����;���9`
IEND�B`��liFD$16ba0847-0488-1173-a2a2-eaea0594271azip.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F
�IDATxڴ�k�%E�����̝����qXX`�5*��A֬~@��&�|#���H4��hQ1f��C@E@���	�������}tW?T?���PI��֭�>���ϣEUy�q��

*��( Ž�|��X�����2���X�v�-O=��Е��Lw�ܥ�]�D{ư_�.e���a�=����1(?4֩�ȔN�ώ�sDӻ��)��]��t,I�J7�,���+��Ƥ�Zqd��:'�=���'�@�+�n��/����#O�M�+��x�+��>���D�x,!��N{���AY@UO��g�V"%tD�<����*�4v��&�{���;�c�A�^�x,����w>>���ǯ_�e[����x���9�s���;�O�\3��u�N�L�34ˈ$��m�G�ȓ���SH�e���].��wnX��c�Sϑ����2��RV@��������%��s#�u�9��7}�zκ���\���Nv<�mїm{a+��;��sd�!�E���i�����6/N���n���矹���|�Eז������=jpJ�px��"AE<�6"��蓏Y����S�i�A.����%��m8�PU\�#���ߣy4ķ\Y��^?%2�A�T���u˃�<�$�+��ޣ.x��>��g_
�yt�����5��.��(�A�J{)��hENI$$�ؒ�M����8 (�qv�*>z����7��g_��rnp�p�1 ����{�HH��yhE �r"���L�,��O5��]�zq`(}8�O��g�_]xM��<\��K��"�&ʱb�-�8@'���J�~�N��_7�dfS���.��ק�
�����C�\{�Uy�R�/-�H��@ce�в���A��)q�+\XbYKn��Y�l��~S	s0�u\���PԘE��[�����1��-�o�|�W����e(z�q�5����1R�x�y�
�*�ֹh2���H��SN��Fz�.s���6��7B�y���� [T���z}Ǟ����~�ә~��~�
����N�wڐ)0K�x�*�L�P'�k�Y�f5�n������:�..s�w�@T��E�8I���`��+f��^6A���oOgK�������%�ӫ����W��
L���@K.��B6�ezz�$��w{dYȗ���ZXX`_��˯�Ǭ\5����ZY���.���7Xe���-Q\knDn%c�6�X�Y�B�	N��*B��g���vZ��o��t�s��4�*!U�.�%W���U���#`bLP�Z�w>g��^1�
IlOb����[I"�%����B��՜VJ����e�jPZ��Q��blb�Z!�mZ-�1&Pm�pd�#6>�w�ʥІ����0�T^P�iJ��l���'1i��RGd#�&��6DL�.K�E��]q�?E}Mt�����CGr(y��.A�`%�:��"ZQD�>6�x���"�)��(�E�!ٷE�R����G�֎���
n�[Ѐ(6��q�x�]�k�`kCt�����j��j~@	Ar��0�6Y�7�4��񠦜���K,Q�F�XS��/��J���M��%��h@y���Z�<
j��B
��d��ՠ\�'�a��;`#�9?p|~�"o�K��b�KM�|���>E�]���N"�u�!�Q��7�{��o|g�����O^�?���窡.�
%�<����h��b�~�#|GlXC��+y���ٱu[�0_D�R�F+
�!U��md�#Kp"|��~(:ד���r0�/L�[h*5�>s{�Y5;��H	U-�' K*eE�����+��a�4�؅C����ps$R��1�QD�E3�=ۧ;�%����y�.��gU)��S��d^9ef���1���`�`G�	'��S���C�j�K2���VB�Z���Y���e�-����@���{%�C0��{�ʡQ���|~�x-�]�ijzِP�_�u�"�+����c�?����H>���ٮ�s.��L�����fԻ��)���n�t:=�Pۘ��_���POl���$Ū�Ȼl�w�	�o�\}�ֲ0b@��"F��NSh�TU�+��V1����_(�2��N
	՞���2�rj���(x}�*��H���*��CN\��W�z���J�ө:�vԺ����CM�Z�C#�Ӓ]Ej�]�,b��1���y�:�w��H>w%l{�����Da(Җ�S�p��!u&�ђSm/;�ZԼ��voߝ�u�|)�?}	ݱ��,E�};���RpY�~��7��=�	�j~��"�,j_9[�U�+&+k�A��̊3/�V�:��C��˙^>>��{򮷖�Tj&���A'��p��o���5�w��o�.�ǿ�YǏй�#} K]�R_2��'� VVj�^�����p�Gj�4��E��1�:��]�m/.^�9W�8��y����vT���j6�|��?|�k�ڇ�o�U��u���g�ƒ�(ޓ=�RZ��5�TgQ�4c�y��z��5
�R��{pS�SN�i\#$�a���zۡٻ�2�D>��q�~;�^Qc1%;).�aoy䕃����c(�xu[UDh������R]�J�
����׊�|�#Oy������."'S5��>�R��1���~#�����<�};IEND�B`��liFD$10ef980d-0488-1173-a2a2-eaea0594271axml.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F
�IDATx�̙[p]e�������47��$-M�6A�Z
E���a�b_������>��3<�X���#^`:�*�ڞBsBZ��{���˷|��s�ړ���nw����k������-�ʵ�o�]RPPD@I�ϓ�V-�U�@���*��N�Uʋ#����󺹺�rW7ư��3IU��L#���h���9(K�g�\�)���X�`pGF���іV���=(�U�1�[�_Z�Tp�_ΆKw��;{{*���JB�g�}�'ccc���w��o�Ah��E�K��0�.
E�e�⣟��_!���;v,�J$���������i�LnN4�c��@���A��G���[*����K'�e� 8�&$Ҕ�֦G��a���vm�9�Z�y�s���
B+�X:K8�[*ly�o�T��UY�A�G�+�N�k�4����C���	��W@��w���'RZ�<p�����a��͛ٿ?A099��͛9p����LNN��~	�U]ձ0y��{A����O���@A�8\��jǷ\w���B�Z���ػw/�j��{�255���]�v155�s�=����?�x�{�Z��8�5<J��N
���:�_y��q��#�$��077ǡC�x��'9x� ���iҾ���*�J���u*�J���J��D�6�
��1PA�����:���z�oۀw�B�j����VJE���
G�9$���B���Q~��?�[n�B��B]�Vy�'x��yꩧ�V�MI�J葠ؚO��TĀ#���5Q�K��:
T�{
]_���81h߾}<x�Ç��ϳo߾�:�Z�@�DUcp�,�ؒ��C�@gW�~1,��؉�~�i�6�f�v�[���;w����ҕ%�p�=�&�⇊o�^��V�C�|y�~�=��QWE@UkIb^��G�Zs[�ؙj=1"���R��y�;QB�MסR)���|e����9wᒬ@�j�ǿ�#�}M7]ׁfN~��a,�#�)Ѽ�Izk�ܱ�~�F�+��(�>����0�x����\T$��\��t��~���>k�V��ezz*x1��M��vgN�������F� ��N_���� DmH��=�18��P,��R���A_]�el��羯~��K��6���;}i�����<��r���o�ق@#wV] Xa���`~v��5���r� ��=
����`DP1X�B��M��7�	���>sݝm.h�����X��H$����\JQ2�0?7K�@���m�`C����X!��NH��Ktvu���zwѴ�fK����J��\bG�5[ũ(b �}�uj��c���.�đ���Ո�V1�+.��`��E�b�KJ%J��B���5͜H�_K�ɪ�
�wަ���ʆ
�K
ܢKP
�a؂Z_cL$3��v\<�a�':ڧPl�6e�&�H�
�A�XL֤ļ,�����Q���(��8���q�7E#�a�G�8��Z�9�5mJ$�F��g�1}����<>�'���?{�Ņ�7ވj�8o��w�::�ԧ?ˆ�܂�8I�	Alj���ȕ�-�l٨1}T��s���G�p�^g��[GDz*���'�vz���zϮ]L=ʛ~������OP�.����q�J]�k@ �I}QQeaa���4'k5n��w��?�5�S%�<���|�QQac�z�V9]�c�蛜���2:����r7��"	��-�J�.�2�7��4�gf�T���{�菦'ET%~it�|�Nww�޾�4%����:<D�V��4�qP��'��uT�6��@J�X:���?���7
s���2O~�.�8p�Vc��X�i���松�Qz��ïɩz���Uz�rE$Aw
I*䭼��G��L3{�ƙC/26>���Yզ
����r��Y�C7E2*��ĉ�xe��t��뇇�>N_�@���zK�} �>^�uw��f���S�y���G8>3�[oc��hV��.=[;���Q
qiMJo����#̞�q��0<�'Υ\�N���2#�M�*n���[ogd|�=�_�x�3�|���"�{>��f����c�ǚ*fN�D����:���tѬ\K��Z7w������E)�|��{�;r��Yz���>57K��BO�@\
������=�������)�M�`�%F�U(n�+��6oQ+J�����{ �7P���>�����Hܾ�T&O�
��05i�\ep�6^����r�܈�ir~�i�
��}^ﱂ�q��+��{ה(X�*������T_ (�����,��AI�D*�V
�7��\�޾P^N[���ɢ�r�[.��[(6ՖuN�������a��@��AG��ijl��%��U`�Am�M|.-��ID��G�z�4�}ZX	qs�VrV�2����s5��	�5m-6�ж��W��L��՗ʫ<FRdl.�RtDr��\Ť�(��I5�q�q"�����o���'-��-���
-]"����Ȓm��h�J�j��|M]YV��UVP������u�Jb玔V�ony�W�����B1Ξ6�FZ�T�������g�B�a*!�L�dW�����XӇ}��|�;�YJ����H5^�1'"[��:��y���������ۀ
������d=_[>N��pR��RIEND�B`��liFD$ebc7ebeb-0486-1173-a2a2-eaea0594271apl.png8�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	SIDATx�̙]�]U�k���;3������v��6D���6��4����XL��I�H �`��G�A�"%���bAjE[�G�
ԙ�3s�9{/��>��v�-1���{Ͼ���>����GT����XRPPD@��[�߫�N�)6W�՜O}j�7N���M�;�Neg>8�[���Dwck��,RU�>1A�j#�?���:U
%ree5�Ӌ3g��.�p��v.u���Se5w,g����2Fd+�$Q`^z߮��]73=���\� t�w�{x������2�Z�딕唥��D������_޹~�Cy@U���W�Dj�H����ִ,�)ֽʧo����z)Q'&L��G_Yz��W��<Q��s����Xk�����o���C��KWzX'�jQ��yN E܄Itկ_>�l4��\�y�ח�vྺ.�B�k�<�'�m��������P@�$�o���g�(QC�Z;��� �מx�	�9V�b�?o�f�ճ�%OsT�8D�����y|�_�������b4Z��w=�(t�A�>U��3*#Ykɲ�r�HAEda@�?r�0���k)�@?�_D�2G!"�ܮ�E-�[i��^�HD�!�U{腗��)�imEg�K��N[�h�V������՚j��� �`��BY/#0IP�)��@�ĝ�>�̛:���;￳��#�C`c�q dN�$H���"�������L����������ށ|��f�&(�bAXq��A\*Q�E7�WG���=A��3z�D6������s�=k
��SP�IzA\�Y%
��Ryb2���6��=a���0��'*�_�r�q���qα���t:U�cL�	��"�}���ak����Y��]?1�wIj��_<��o|M�l�Y�9�Y��-�ڲ��(���Uz;�|�yz��,�9O�8v�m%��:RN��) ��Bjx�R��ŕŧ����ndn��7u����V[2�Z��(qny��_�4,]�$&���Y���^��r�u8gq��Zcar�[ؼy�ɩ6Nӝ�`��s���٩Wv|�+�d2JC��g�����j^`�_4��g9����u
�ӓ
�s`m��j����α��J��#�-��+���ضm#p��w�z�,*� �"6]>��	����u�o��)
���2�Ք�8~�$�vͱ~z�2%�X��d��!�B�0 
!p�Ի��n%�䐥=�Р"N�]�ۧ�#yo�u���<9��Ц�leTi,����9���
E���tq*�0"��S(� B�gt�݂}�b�Dh�P���uq8�z�4q@<rK�VC������U<���q�&���!��$"�C�$'J�S��ka��v0�T[)��i��Ov΍�R
���)f++�“O>7�Z��`2U�ƛ��f��d��M3�&@Q6l�a�e�#e͕	�D�8M�'��YZ�C	�)���ؿ�VD��u9Y���)b�b����_":��]�w�tbE���DQ����W���h�Gx�b����4 JG�Q̺n���$Bwr�}��˜�}$'uA�t׍�/
�/��`����?>ux�ޢ��_�c6�s#
�R{�&f�u�K�gV�g���W���o�3�S�A��
�[Q\y@غ��

#{��NU:H]�������S��7"-����V�����IDp�́U�d�����,-=���m��}��A��z;�; /����y��w)k�yZ��5�\��ː\�m��|�.�G*%���X=��:cK+&��A�j���#�����b8��Qc�i`j�<�W�LDpR�C�ChϾ�;�S�J�� 
LՍ�%��n}5]�r��}�5���3���������Pj�x��,���W�]kG�rulH�E���ů�@z�\_W��qh'xɫ�1郻z�ƖMb�������޴ٴ�jtRp���
�̶��.��n��-['�vn,a�T�*Zj���/m��p�|mY?�0�9�I��{^��Uɮj�P�_����z�!.dl.�Fj@�����8rN���ԴT�� Nb�.�Rs�e��3�&��x��߫��/W�6��q<`�����k8���Z�����׉��HQ`n�/y�f�8�kF����垶�b��QmW`LNMr͵�i/��g�?}�8���97Ai%�ZCA]���095�7~��Xڕ�(Un��ڕ�y��\*�J?��m�'>r0��_�����r�>�l]B���T��as��e��b?���\� 4��(�$0�ݏJ�� �cs"��;�ߏ���m��g�<����T��>b�F:��8��
0 O�6^�ZIEND�B`��liFD$bdafd78e-0486-1173-a2a2-eaea0594271ac++.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	�IDATx�̙k�]U�k�ǽ�3ә�Bie��ӊAS���(���H�B��c��L4!b��A�I��`�"5��G�@�h���R�23��{�9{/?��=��[�N	�����}�9{=����GT��Ɵ�5���(���?�͗���"8uX��D��	���<�b�ʁ�
��'�>��׬f�1�1,i��,RU�>2@�j[���*�TI�H��f�['��FNN�]�������K�J3q��g���b�����<��]�ҟ]62<�g�^�!t��j���w�>
]u6l�딅�����@���4���n\>�<��;_��+�V"tD��[�+�+_S�LiM��ο�2��T nE��?��̡��7\�$'�p��~�h�����KPO�~-���/x2}��u}+Q�|�$�e��_���\[�^;x��&�VB�Xl��^-����4}D��@/!=������vs��7a<S������v�T�GO�$���$QBń�zπ�}��?m��ϑ���z#{��[��;ne�={��=��ޗ+����Q�q�	|�����a����/����M糱�{���d1w�wp���f�'=�rw;/diDUq�hE1����"����z�����c!��%+�ᴘ��fj�S{���5UX�ID��=SL�6YyFD@�����V����,k>Z��ϟ82x��ѹEc��8v�X�o�zo4$����9G�	�I�_��b"��Z=`��SA�3�h"���;����z�-߸��֝��CGy�{5�.�吏X3q
�����SM�99������%�N��ga[�Jss�Zz�����'��YW�Ӝo�8���
^<� Ƥ�)B�+���*���O���C�~���V?��J���US���r��bk;/S�g�)�a<�ƲZ�l�K�2CC5��g^������H�N7v^�5���]��Nl�g-6�8k��:M:�P*����'���l2}r��ql;�8qX�8'��|T!ʠԊ,��ӏ��g��I׷��E]���jE&T3��J�����W�Eݥ�_�
��%�V+��	�:��8�r�1�Y�v5�V�08Tg�Y�4Xh%��.�y��m�����7�cV�Lr�,�ӆ`zz��~�͛.bxx��Ap�Mh6[,̷��9�|���"I,�����7Y�n#p���\�n�sPV�3����>�KV]�gC�X����<q��a6mc�� YJ*c��1c?��}��7����o0:z.�/`�8j��sB���ڛ3,k�/��`h�S@�-d%�J��*�̜bxx(U�Ⱦ�.NEF�<cRe|D���F����S�u�S���a�,��#'=¾[J%
�B���Z�d�7��d�����#���ORKj5C��k~�So�1ƤT�+�D������P&���傊����Q��G��mU\�6��*W\y	6�4���7��b�+�^�AD�I�z��8�Ki�K�kV�H�PB
M��&&�
!�(8X�.!�c�(B��-"�����x�G�^c����!��͏�z"-G���+R��hR:�(y ��6�4�Q�0�B�5����r�v�\�f�Zc�<P����3�h��%�/��?m<u��WOl�`6-r#
�Rx� f]±
.{af���*�[l�R*���'��\2�S�A��m2(�"8��v�uJ�9��@��t��I�K	^ʼn]I����,yU*-�ަ�2�ni's`�R2j���5+-�=�Tߕ�[��С�v�q@&���w��m�hy������"A��z�Kv�k����O�ȺJ���.6�Mj������A�j���D�{�M��p�2��@��)�*Y=Od"���O��B[wl��>-Q���
Ӽ�����iW��Q�e����1^P��z-%�vhJ	�Z"ɠT90)1�߷�Zy.��ʎ%��!E-H�-�z�.�g�uDq��[
���R�jǘt�]K�-ۉU��<��p�Y���MۛfZ��B
Υ<�c�}�ٶ�ܻe�-������3��]-�w�ٗ��ز}��l9�Ѓ9;It�_���ң�˓]�H)��r	пZ�Mz����9��.m�4���q%�9UL)(������
�Z���l���\��sF��a-�d�*���+\�L�R<`�Qf���q���E�'�R'F�#E���c<��sÅ��`$�~��i;!��P�a�~h��.N��Z��>��~�Z��ƱnJ%at���U_,
�CC\zŧ�K����m'�j�+=>�*g
���Qd��I	��8��[��Jv9��ql�b��O%H6y�?.�Y_ߣ���͙y �����D�� �K(�Ddݏ~w����!"_�pWD.��H%?O4@��0#K���a���'���@IEND�B`��liFD$bc26a07a-0486-1173-a2a2-eaea0594271ash.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	�IDATx�̙[�]U���\z�̥z�A
,�
��І�P!�� !>O�b51} ���Qx!&�5jS�A�R$m1�Z��2����{����ok�3Ӟ3�JV�9{�������U�|�O��VPPD@��]���k�:�Sl�D	]4̱#o�ܰzhn����3�n�:�Zm�a���HU��p�����>?T֩�
�(�";3Uq	��'.e��/�*�c.^�>(�S�1hX#���Q�K��k™c�ú��J�{�r�/���}��������_�u�\���<f�E�Y'Y���n��,���^���T"tD������T4�I׽�ǯ�
���;�f��Q=�����m�$IN
d��e�sŴ�b�-�/v�Z˝_���f�g����;X'$jQ��IB �߄��ſy��3��,�$)����w>����s�{�?�9Jb\'!I,6���A�>��?�� B�֞s���m/�6|���]�N���O���,����u����ӱ�$JP� ���80X
�x�;��k���BB��o���?9��c'=fQ��Ś;���<��sr��q:�:� �"�0 ���r��0\���	a*O��~Q�{�^�^��X���s��i/	�|�f�:ut���@#H-Q$�T@��/���rZh��IT����/��ͷ������H�
Ke��g�E�E���N�%��Q��п}�x���g�k�~�ɣ'9����[�b@���s�!4iv�(-@�Ycx��l�u��Ĺ�rm�}�ݩ�~0˃�~�w�5���D����0w��b��/Zu~�����jG�~Z���o�^��!5��Eذ���s
gg�>=��Ynڽ��)�M���@� �J����̂�•7�QT�xLs$�R�T�[�=M���`L�	Z+�N���0<�0�|�W�����`Zz,���w×�y��tݚ&�U�S\�<6K���IwJ%�vV�ԞI:L�9K�8�M�'N�:"N��I!VQ�-��235?��Ͽ���~�-��/ݦ�F�2��gB5;w)���o��6Qԛ���:��a������$�8�Z�sgP�1�a�ƍ�X�f��p���Fi����$���?�xm��?{],��gϼ��ؼ��$'��?-��fx��Gض�2FG�=�s`m��B���g�g��[ Z�$���yN���6�c�?�%��Q18�Z��k�"���7_���>�L�*�(=UMf��G��u�#�mR�`���1c���Ih�'�e||=a(`�8��!pB��>����Y�j~����O-K��iD�R�*LO�2::�
��[�*NEFcRa�D���V���k�#�B���^o?E=��wI��V@(;ay-���)=���2Y5�/B`��Po��!I#��hxAR	k!�VcLr���(
���l��N��,򃊤W�L���ǟ]\���imbQU���
lli�[��#4��r��/X�AD�I�Z$8S�)꽣k��lJhA�)�������A,X��1q!&@��}�%� ��l�u��:��
A�Z"MG�V�+e٨|T�v�g��J�ifA���a�ΊV��W��b���,�h�e�gZk�V`�R�π�9`����??qhIꮗ�߽��ٴ��(�Jaɂ�u��
.{`���g�~�j�ʊp���ҁ=U:u$[^�A��sh[�T���o��S)r��x�*:v���o#R9��>T�@��zI>�n��X�F�\�u�R�'�x��Lu��TA��b;�j��[����4���d��s�$����H_���"�F�8Ⱥ|�EV�i�Ql�Mj����Z��Z%/���xn��VN�]�_(���\���@&"8I��ChǮ����S�J5� %L�>�w�=�[WN�>�v�ɂ�ūT���k��t�@2(U��3�}^+�K鮲����7��������{� =�ˋ�}� 4����U��t�]=pK��2�JU��Gs�݉xIoZn�I�?)8��x��g�썶�];W$�~�d��"PVcc�2�U�BQ}�@}�*���M����0g7���!�*��xy��)������d�26K���F������ �T1�S�ߙ�Lxo�z�����"9����1���z����9߫d�/V�*��A,`���Ė�8���B�����W�Q�HQ`b�/>�b�p�F�`$�~��i��}C��0y?���S!�N��g�=u�z��Ė�^J%`�������0W^��rc�f��d�e��f���k\e���E���x�d��\��?K!{��w�|}�"��yW��a�Ge�~ �����,���!l}XB�m���̉Ȧ>v���.�!"�<osWD�F<R���?d�e9o[>J��|q-wxImIEND�B`��liFD$f3bba182-0485-1173-a2a2-eaea0594271arb.pngp�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	�IDATx�̙]�U�kϜ9��~����Z���i�A�{i�
$�"��4�>x�� �!�A_4��1�@H�#1j���h��"�P��h�B뽷�����{�0_{�9��s��I&�̞=���������r���WPPD@)����E_���*�r�E�q��k7�Y�~�Xr��ݸi##�Q�a�#���2��:V�y�G����O�̈TYZ�y����䙹ƸK!�>����TYN�ɪ�A�B�A���"�F`^x�.].����ռW
�����v�������%�Wa���3?��i�hE����'v�O�OP������*�:"R��m>��>���d�^��k�Bp��A�NL�6��C/Ͽ��K���P�(C�9W��Z���~mw�wGO�~�🋗:X'�jQ��iJ Y܄��%�z��S�-�dU�iZ��ڞ��,�U���y��1R��:)ij�iBd #�h���0F��}���bj��9@��lؼ���/�Ά�z&�mп�8E�Z:֒�)i�B@C�����;/�UC�����̡�9W�~�r�m7��;|X%IvƝ�f ���0� �����||#B�=\^�A�� '��,�������;V��L��w���	���B���B����gϽ�
��@P�ً����T��S�u�x�D�^>�g��^��� �`�|��NB `�Bd���Z#�x���G2`5ǝ��ɦ�7��?��C`c�Q �&[�f@eD�V��ug�e0u񸪖��h���<��G�������w*=��E0A�c�l�tQB�&�_<�������O�J|��=���b6�䋰i�
\q�5�;����Ξ�};����̀�*
�b�$NI,,,,��^yK�u#���G�_���|}�O�j�)`����f�>��,��Z;��5�ϟ;��{�gN�g^z<�ұ��/��O�Ʃ�U�S������S�|jҝ�RK��U>r���e�Μ�m��/$I�:bN��� �Q-<�ز0�4��O���[_��؀��yݲi�8wo1'T�yWF�]\���$�{Sװќ�Y�K�N�MR�u8gq6�Zca�y�F��&k�v����:)���''^��O^�� x��So釶�e9-�;��
���^��Qv���ў�9�6ey���b�s�gY\\&^���%N��m�n݂8��I.ݺ�s�l4X�$#�#��}�SWL]=`A�/�
*JOU�{���c��9��(�$�X*�d��!l��a@B�ĉ�ز�B�0�$��!pB�R�<�6ͷ�Y�n}��c����JȚ�J��*�ϟebb,3�Tߪ�SQĀ����̘0�4��ng����C!j������OD��J`%��Vm�^�x����E����!0B���
�($m�4�M�c��ka#��na��t�08���l�B�,
Y���H֪��	£�>�!4O5\�d����\�M,��6��'	M�����d����D�&�G��3�d��ޛ��*-զ���A�	��7[���p`���$IH�1t�1F��3/�V���v�lE �*A�,97\Q�Te���Q�#<1P�Ms%����5�v	�Q���{��䚢]$'eB�l��^d��E�h/)x����]/_�o��ٴ�FD��dI�:Ķ
.a��ٞU�[����f���ҩ� y��ʡ�&\x@{�:��
{��N�:H��d�ŃW�c��_�ڜ���Z��W�ᓈ�ۙ�xbTM��Z�k�Z<���g�{��"R�C��k�L<mX�y��G�k��j3�i�Ͼd�.}�F�8�w�t�L%��X=��R��e_o#X�N^�E��|P�1�t�̠1��	�KU
���$���{g�k�O=*�ƒT0-��p�A���n]9]��ڽ3%��W3��'�Uh��t�@r(�6L<f��֞��6��relH��^�����{� =7�+��q�04��<�bL����Z�JX���R�����D��7�ͭ����x���ӏ��m��wS���fʕ-����9�lWE˅8
���`�^7S��/>�a�n=��ÞW��x������S��
�Zm��Ž��
_�z��n��<�9U����in�7@ԌX�_�s�i���%��Q_#�Wɡ%�V�:��a<`�����8��҈��,ثĨW�(0�c��}�d����$���1m�&��1L�Ï�r��q'^��3O&jFL����V�0@PW�(���q����z�9H�[	]=�>�q��B(�s�z~��>sݿ�Y��~ ��Ė)��(v%H6u�_������=�p��y�@30��ʈj� �C$s"����>����CD>|��]��H��O4@��0/����~:�;!}�=�BvIEND�B`��liFD$e25c83d8-0485-1173-a2a2-eaea0594271apy.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	�IDATx�̙k�U�k�㜞��Z���q��6D���6�E�i�ib�1&Ę�/��	A�	> ?���FE$h+�"� �h/
�/��{��{���0�3s�i{N	�I&�̞=���k�=�����?�

*��( ���x�>���:�&J��p��#�~k�9ˇ�׭�g?�Օ�d�1�1t��LRU&?5D�j[���)?T橒*�(������F]��ɵ��їN���1��:(�S�1�/�S<��v�r�ؒ�=��J���ׯ�^�v;ѡ+��M�b��0�l.`���d1������U����L�)�#"�oy��|N�2�9�7���"8|ߠq+"����p��7�om߸nM��3R�9�G}D-���E]�*x�k��~u�s���W���[�"�$)Nkm�u~��~���y`z��&�VB�Xl��^-����,�x\�����w޿��ߜm��=��!n���<���oFU�y�Nn���=���CGY�f���$Q��z��"b�`ջ�?l���}w?p�B9�o��m�؍w��=7�S<�$	k'h�6O���3q��N5OA��O{m�����S�T^�dgr��c�KG�ֲ����~�:v\�����
�Ħ�-3�SG+��Լ��')�||��G_zuu�1�N�;���NQ�8��ų�괸>0}E9o�y(�u�|>�Y�zQ��Y��[1���n%��'��k׳�>t"0�ᶟ�����;,��o�~�Z����db�`��#��)����)'�H=`d����%�?�q��9��u��[{r����Yf�gN-��#������ Nc vfJq��勻l�l�}�*���Su�{��7�Ƚ����
@1&�Lj�_
�T��*��Η��5yt�o�0��GQU	Sj:�x���nI�#;���Nf�g8��^�jS0��x�%�� �R���8���̞�[�����ה�Z�d�/~�-_���\Q'��s��X�Y��֙h�Y�R)��U>w���E�fO�0��������ȁSpbR�>��^��rlna�_ܻ��?���[����
�8g��jE&T3��J����Eݥ�_�����%�V+��	�:��8��b���}�=w%+V�3<Rg�1�C,�N[8yc�׮�2�~��?��~f�R��;���!��;�k�f��j�k[,̷8�<��"�b�$���/���c��	���wX�z�sP��=���Id_���+.볡�������d��?=Æ
���
�rHK���1#����{$���y���U�~�⨅�T�	�K8|�=j�5YҨᩙ���[�L�4�J��*4��I���v���#���1�2�"�IL��H��)6K�F���0�Y�����a�-��X�L�XN�R2z��m�jz_�^����'�%���F�5?�7�cR���|��c�y��C(�Bs�rAE����(���S�6����s)��*�]~16�4��/�7��t�8��Z�AD�I�z��
�A����eiioJhA�)����m�
�A,X��1q!�C��y�<ϣ^��a�zj�D���K=��#'k�)e�L4)mG�<��@n�yЀ(~�!K�^���!�n��r�v��!@��d�� e�(�F;xI���NO���U�6u0��Q)<Y�R��셙��=��XVۡ�Wm�jpɔNɦ�ɠX�T�����)��h��t��A�Z$�/%x;v%ųk#R�Y��T ZX�Me�`;s`�R2j���5+-�>�|߻[�nB�
B��I���rK�y�.��ݣ�U2�ڲu��e��/YإG��*�]>���}�i�Q,�%��"cK%&����`�*yi�(��f�j��3d���vS�U�z��D')~���?�6o�;|Z�R�=H��⌈:k���.s|6v�֩�ʥ�3�h)�CSJH�H���w������s)�UV,Y��
)�h)@
n)�{t!=S�#��u� 4��Jɫc�w-�[ڶl'V�ZP�l^�yg!ަ7m/�i�?)8��x���vg�^c��ě��*,[$�jn�`خvU�0T�1�g_�cӕS�e�ɇ��I������=^���FJu�K���Jo���݌�I�Hui�'���+AΩbJA�'5͔/-�B�5���9�ex9gTM�žJ�|��AKJ��U�����2�M����o�/�(:�<�:1�)
L����_..��#I��lM۱	�7�*���#�\xQ�DԊ�����#��L��솠TF������bQ��>�^X��f?Un;�U+_��W9Se~�"[�OJ����\�o�l+���@��DZ-J��=��J�8l���#__��c��͙y ����ǥD{� �s"���������v��gO��+"��%R�
�:4�ڝ�$�+J���xIEND�B`��liFD$7d242227-0485-1173-a2a2-eaea0594271apl.png8�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	SIDATx�̙]�]U�k���;3������v��6D���6��4����XL��I�H �`��G�A�"%���bAjE[�G�
ԙ�3s�9{/��>��v�-1���{Ͼ���>����GT����XRPPD@��[�߫�N�)6W�՜O}j�7N���M�;�Neg>8�[���Dwck��,RU�>1A�j#�?���:U
%ree5�Ӌ3g��.�p��v.u���Se5w,g����2Fd+�$Q`^z߮��]73=���\� t�w�{x������2�Z�딕唥��D������_޹~�Cy@U���W�Dj�H����ִ,�)ֽʧo����z)Q'&L��G_Yz��W��<Q��s����Xk�����o���C��KWzX'�jQ��yN E܄Itկ_>�l4��\�y�ח�vྺ.�B�k�<�'�m��������P@�$�o���g�(QC�Z;��� �מx�	�9V�b�?o�f�ճ�%OsT�8D�����y|�_�������b4Z��w=�(t�A�>U��3*#Ykɲ�r�HAEda@�?r�0���k)�@?�_D�2G!"�ܮ�E-�[i��^�HD�!�U{腗��)�imEg�K��N[�h�V������՚j��� �`��BY/#0IP�)��@�ĝ�>�̛:���;￳��#�C`c�q dN�$H���"�������L����������ށ|��f�&(�bAXq��A\*Q�E7�WG���=A��3z�D6������s�=k
��SP�IzA\�Y%
��Ryb2���6��=a���0��'*�_�r�q���qα���t:U�cL�	��"�}���ak����Y��]?1�wIj��_<��o|M�l�Y�9�Y��-�ڲ��(���Uz;�|�yz��,�9O�8v�m%��:RN��) ��Bjx�R��ŕŧ����ndn��7u����V[2�Z��(qny��_�4,]�$&���Y���^��r�u8gq��Zcar�[ؼy�ɩ6Nӝ�`��s���٩Wv|�+�d2JC��g�����j^`�_4��g9����u
�ӓ
�s`m��j����α��J��#�-��+���ضm#p��w�z�,*� �"6]>��	����u�o��)
���2�Ք�8~�$�vͱ~z�2%�X��d��!�B�0 
!p�Ի��n%�䐥=�Р"N�]�ۧ�#yo�u���<9��Ц�leTi,����9���
E���tq*�0"��S(� B�gt�݂}�b�Dh�P���uq8�z�4q@<rK�VC������U<���q�&���!��$"�C�$'J�S��ka��v0�T[)��i��Ov΍�R
���)f++�“O>7�Z��`2U�ƛ��f��d��M3�&@Q6l�a�e�#e͕	�D�8M�'��YZ�C	�)���ؿ�VD��u9Y���)b�b����_":��]�w�tbE���DQ����W���h�Gx�b����4 JG�Q̺n���$Bwr�}��˜�}$'uA�t׍�/
�/��`����?>ux�ޢ��_�c6�s#
�R{�&f�u�K�gV�g���W���o�3�S�A��
�[Q\y@غ��

#{��NU:H]�������S��7"-����V�����IDp�́U�d�����,-=���m��}��A��z;�; /����y��w)k�yZ��5�\��ː\�m��|�.�G*%���X=��:cK+&��A�j���#�����b8��Qc�i`j�<�W�LDpR�C�ChϾ�;�S�J�� 
LՍ�%��n}5]�r��}�5���3���������Pj�x��,���W�]kG�rulH�E���ů�@z�\_W��qh'xɫ�1郻z�ƖMb�������޴ٴ�jtRp���
�̶��.��n��-['�vn,a�T�*Zj���/m��p�|mY?�0�9�I��{^��Uɮj�P�_����z�!.dl.�Fj@�����8rN���ԴT�� Nb�.�Rs�e��3�&��x��߫��/W�6��q<`�����k8���Z�����׉��HQ`n�/y�f�8�kF����垶�b��QmW`LNMr͵�i/��g�?}�8���97Ai%�ZCA]���095�7~��Xڕ�(Un��ڕ�y��\*�J?��m�'>r0��_�����r�>�l]B���T��as��e��b?���\� 4��(�$0�ݏJ�� �cs"��;�ߏ���m��g�<����T��>b�F:��8��
0 O�6^�ZIEND�B`�liFD$39292081-0485-1173-a2a2-eaea0594271acss.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F
�IDATx�̙[p]e��������*��-II�&^���Œ�e��3�b�‹#/�>8N��k%���舷��8�"�ڞJs-RlKO�$gߖ�~�ړ8|3_����{�_����*��<UWPPD@��ֳ��^�@�@�=�Y��0[;�[�//m���.^�V?H��c�а[٤�o/��5=gv4�r�T	��U��/c�{.].t�C�7��ђ�*�^�������A���2��e�r�_��^l���f�+�=��S?��i����t��@YYv��W0�
mE�U����,���O�:J%����$��kY����4���;�ȭ{l۠ná�V�.�_�{����y�7d�$d� H����\���ޞ�����Xm��J@{�B=K¸�K��?���?�Y6%��y��}������f��o�^��q\|ϥh�#X��~�ʝG7"D�B���}�vz�!*�
������,,,�Y��رcX�?;�>��v�x>���9>EKQ��2�j}饟�yݶ�|�w��.���g�`۶m<x�#G���:đ#Gؿ�����l��R�	��-<��Ko����-?��9ā("T*��*sss���p��q�x�	�:�<����*/����R�p���d6�5J#��l8.���� ���O�����7[��V��<O?�4Ǐ���ù���q�=��?̎;�b�(�Ap.��(YB1�
�b[���~��2
�j� �z=A�j�ʣ�>J�ﹹ9�;��}��a|�gvv���	<�C)U1 �F� (Z�mB�,R!,(���u/:>'≉	{�1������LLL�><���zLLL�����'�uҦ`��E�,[� ]�
�h�����"���~�o��\��^5?��#׌�l2�p�a��m�^V�WY��¥w��{�p�C\_Q���7P\W��oy�v��&d�0Ю>���Z{��UlO��CG{)�[a@۹u�TJ�{����կ}�\|�.k,p�q�C_�_�-h�S!<�#��Z��9d�YJ�z��ܶ�.�F�+�+|��o�|?�	 PĀ1X���p|/�\�ݱ#}��SA�l���Lww'2o|&T�s�B�d�3'���։�A�1̞�sj�<�磁���=�2X��P,�U)�Yi������2A����/|��^���}{]iş�������^V=��~3�O
�Y�@�}�������)FF�pVx^�X��F@,#��!�T(п��rW���}�-4��UPQ�T5�%�k���y_J�d�a~v���^l�³
6���"��5T+��c�ܿ)��N{G�m���,��д���fTI5_K$h|nM�8Ex�˿�~� ��m�H��(+�j�����b��;OѢ�rI����Pt�tMS!�Gkq����0��?����Uau��]��J��7Y-ԯ1&�Ƅ[6�c�gG�R�.�Bs�
#Zc�H
�A�X�kR"�f�ax�b[�b���J�"�m��m��M�B�"�﹡E,�Kw#E}��eRI�1��҅�L�<���Un����\�p��%��_���X���ה���G?NWO7v�F,�$J
��e���ȕ��JZ6j�>*)�\Y\b��	ff�5<®�����0}�7�@WOo�w�s�'O��ˮ�aFF�(w��@.z��RG�,���_ATYZZ�65��Z�탃|f�>z���~PN�q���f�'��n��j�s3�L�|���;���\�DTKB>_�$����&�F������[�U�}�Az����1��D/
o������BOo���%ÿ�
R`�V���$ӑRFF�����:���Z�@�:u��O~̕�%�r�޻R�'۱�����52�6����

�����~�
33\��JwoDb�n �}��)?���MM2}��c�32:����$������x�����4�kX���%j��s�
2�{�޾�\�L2���<�J���N>v���}�Ԧ�`��	NOM���[�94��S���kg�94L!��zc1����N�`�L������Q,e�;�3T��`4���~*v���oeht���<���3S�|�λ��5�:.��|���E~q��sf��x��?q��jt𾈺h
ג
+���n�4e���(�B��~�n�y���� ^����Y���?��T!���[oq�g�㺭�|�lS<C#��:
E�t
w�|�ZQ��N>q�ݩ3�C�G2�$����+��))Hd��� ����5wA�(�̍(���;o�C������=�xz�PY��y�b�@RЌ�&�M 1�JO_?{?�/բ�5(q�H��Z"���d9�����th�{R-7]g���<Qm�s�gg̡ʞ!q�9 VTˍ-M4��a�	.֞���j�m�ki�-9I��ܦ�h:�Z�[�>��eJ��s5��͵5�)n��y
Ɩ�K�u#�e�L�%�M҉�<�I�P�q'Ք�%M�&�h�c�j6aj"�4	�7Y��<�MhI��}9͒���:Z�S��[JS����ӂMnr][ǯu��L�*��-+�:�q�ͺPdg���n#MA�W
���g�k4�:@�~B!6�BqW/���/cC8��ز��,P��d�J��C� s"��;?��So�~"����]���d�j��2�e3_[�O�?9��v>sSIEND�B`�RliFD$09ed4b52-0484-1173-a2a2-eaea0594271a	html.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�FIDATx�̙[�]�Y�k�}9��9gn�Ǘ�Nlr#���(	�܅UoH�	���RE<@T���*"�P����ڨ��0��	�I�$N���2��93s��{]>�>gΌ�3�$KZ3{�|{�￾�����a�_�������j}�y@�"H��;��;nr���Y���]Y^��3d�1�fW#�	��p�PF�e��ѱ��B'B	�	�~��B�M���Vp;~7w:v ��w����� (��E#Q��uIc��w�����M��}�7��	�Tx�^���顳q-������ۚ�#	\��}T�s� (Q�6/�k	Q���\�©����®T{��N�`����wC��s|P8�Hp�sU�M��G�����}S�
����ؾv���о��{8���9�w�DC�@i�I�G��;O��
�C`t�d'��ɳ<��"3�	�~l��[ć0\�<��"�?y����p���~�*�yr�q����(�m4D��^x��ߋ�}�%p��<�çx��IN�s�g_��ٗ'o������=�o+�=�{�-g��F
A$�� &������;yw���_{���h�ЌҎ��?��Ǫ0""	��hH�BQ�G�@dp"/��+g�޻�n�8`�vc'47�l%(4RE;�[����"��I-{�kg.e�����km_�=��aϷ��Ai�Vh�!��
��P8�U�iN��Ǎ�ն��-�kn�m_���O��̷�o����=a�
5�Q%c�'1j�:6@R���F����O�7��6U_x���E��
��=Jn{��mZ
˯���A��`� �Px��zX[�_>�QQl��G�D��:�,��l19�,�xT�M�Dіuh6S��W^���^^����I:��_����S�z!�@g!�*�D���56��L�����M���*�:�ORXK����x��+p��-Zkt�֘8Bd 	��Z�������虰c�wgd�`���@T��o�_��u����_Bۜ+�	���c�!M3��3t�~��������>ޯ�z݃�k5#NZ͌�f�ɩqc�ܱ�ֻh��;�K?���Q:}�S�8vl��8��I�[�0�G1��9V��e��1~�3ǹ��=N>�F�b���["������y/{��)A�ɢsltd�]�&�����s��*i3�o���V��;���r"
Q��Ziwr޿���/q�-0;��k���8:�C�O�E��ʺ��e��|�V�D-S���_Ś���㩍�ca�>��j4)�&(\p�_Y$]�Po���c���,!+�ˈ�x���'����t�y����ѼvE8���X_��=	�4B)M/�R�	{��H�Y��.�!��ĵ+\x��A+�"EGԓ\��@bHv\R
�M��آ�5�Aa,�4#�H��g�q��O}��R��"I4:�E��_��;z�,낚�5���#8��Z�.��D������U�*|e����|u�����fsZ��*�ۇ�/D����2�:H)�0Z�| M5�$���(�7��0��{Kʍv��wiG�G��Op��J)���D�a%��)�GXPJ!
�
�e���2.K�sO|���(;���T�DE�@�����<�9K~���e��h�h����!�La�.�P�7vW����-	E!h�C�/pׁ?#20�l��f�'�zZ*�V
�~6(��H�
�|�Ǐ~���}��k:���4l@z����	�ɱ�U+'m�w�e�6UI��'��V�eb3FP8ae���jz�z�^�ۀu�-L��2S�ol�a�=�+��N�B%BU&|��T"�xWA�BGӬ��v�(��
�����{������E�:A��(�(|�fE�A��!���C�t�ϸc��A��=
�h���_���TE�*���ef�=�m`#��~ �B�#�3C�
4V4.���	"9C�֛R���A��+���F�i2>�)K�~��NatY�;/��_��X������p��X�&-A
�:C'(�G>�P��!�q��C���4�0h���"��n�y�)c�
�������^��4F?@��E���4iԪb_Uy��v�B�T��X�?�f[���S�MDJU	J(�+h��69_�����u���oû���;(%���PDqT��A��6w�1@ڗ��
���o6�zw$�c4�4xe{�wS��dc�6�`�ј0��A�[W�o	���&l�68���I�ۄ e��B9}���ļH�fqe��Y���'J	�	�6�D�F���vv ��D4T�G��+��P��qD�� x��aK�[����y_����hf�$����t>#���$ HUɌ8"}t��W/�vxڣӇ@a]Y��y?�����[��+E�(V�����F�53td�L`���]z!)OP+�iE��&��|h�W�^bzz?i� !�`�T�|@|�KI'1I#��2��́�)�Vd͌Z���z(�j��]F;����H6o�F/gf��{ϛ���Ygjr(x���&5Q�$1��\�8OV�en�o���ި3>5��"4�dX	��K��y{�V(��C+��u�-��cc
�z�|�Xk�H`}�ˍ�e��qh���j�����{pqc�F�����1�o6�Ĕlu�F��>BZ���
���jg�k+��֕/k
�Q43��E���m&�'�ڷc4�h�ha ����D@c���͸(�"
P�=@�j����X�/��4��FE�CQ�>�����)j�zɼ��m�_G���h21�����(Y�$M��>��~u;��9I�����5h�5��=0֊�m����-R���u8#�u���&N4QQ��	>l���Z�73����a�#׸�5��B��P�86����ǒ��Ȱ�`)_,��-`��鋳~�B��*"��w�O��Us7���ΰ��I 6�M��@l��b���C(��>��x��|҆R��N+�N���U]M��1c�쨽�I�7�π-�2�IEND�B`��liFD$fbf50e48-0483-1173-a2a2-eaea0594271aoffice.pngr�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	�IDATx�̙ϏdU�?��ޫ�Ꞟ��*
(��7FPcbbP��rcܹ2�q�[��(��E�� �f�a�iz���{��{߯�6T�x�LWW��w~|�~Ϲ����؋k

*��( �g����A>(�R&[�]�ĩ�'��`�q�CK��[+z��
1��.7�M��U��{m��^�C�>U����5��socG{W���
ܑ��d��LU���F���A�Ġ.��ܠȬ�˛~�V�����%��Δ0
1���Y��������_�*�Y�#�2�q��]��k����Y3�[�1��{���{�R%��T@8gP�r<�0(���v¹��@�O�����LR�Ў�!�=��A�A�ԣ�B�
+�3��.�ձ���.}H�sڇ���
>�L)!(�=>*_�U��UIn�	�l��׿��y��BS]e��S��!�0
JUy��SM*�IIn��B&`�g����G�3+�̬mT;�٘فUB�-=4���*�{OY����J�Dn�9�Z������fqbvt>
No���zѦ.��Q%h`<)����8�s��ܱ���b��ڥ��4=��x[�̦("1�`R��r\b�lw"��`��O��<��]��O�Pz�^C4RD"�1X##�ȭ�LT'��u�B1�Xڿ��
?/�c�{c�zjH�䑊4P��i[3�XD06��1X�F=K�䶓
Ü_��^��?*��!��I�I�w�|�5��&GŴ���]((��_~*�L
�(� 	�"Pz%�u�@D��B�ÃU�u�ɓ��hd�&�1�a�Q�L��m��b�0�b�e�Pl/b
w��ai�0�?���w��3���̧FC+9�Th!���B����l���׹�;�P��(b��0�Ƙ�
x��ɐ����h2!�X����O�����\r�����9a��e��MR���2B�h����!s��gVy�sT�'x9�Hh��<g�҈ť��/3\�˷}��'��G�r����Q�E��e5Y5UA�w)L(�D���Oy�^uTeF9	�|P�.9�aLD����7�x��*E�q������.�K�~�e��N���TS�QM�S���4\���0Xc���R��It�d�I�Pl�P�3oP����pp��N.�f.���\̄tDOMh�pBOԵ�ڎ��#W.p��W\:`id�6,Ac��b��̱�g@�����-��G�͕���o�[[�q6���-?D�$:-‘�T[ �䅣**��8��g�T�9m��1&�Zc0�`�c2�=4X�Buj��AB��6?&�<����>��(�4 "\|`��ġ�SV��,.�
�/�g�ԏAD�U3b-+Y9�P�1=�JGu�%�p�#_ �A=/�#�}���)�x���@�g�_��J��f����钍11�<#X�	Rl���LD9r~��^�LChI>�V��o�T�\yQe�~:�>���!.W��ln�eX�{�87��I�OQ+�����ˀ{~F���L|,Ԥ/�~��"�S��c�� DF�H��Ӏ�g�z
�{B�����[��Xf��;h��5�4ӌ�6�O�:�v3� 
yi��N�
!~���ZCi�h���j�;�,�D��׿�R�,���g_X����ܸz3��g�C�c'?���Уl�Ӽx�f�pf��.}"�^�kF	�m���ʡ��)�������1lbt�+�2�'H��.��S)�?�ku���5Bg��)i/n�]M�])���1A
��w����Ï���Lip��6�,��x����!D\�k���i˧����vA�x�["@��凮^���f6bjL��[�'�o�������3�-#k3�w��Ĩ�T���
��~�[W>�Z!<�F�?y}+A��T�]Խ@�G�{����ѱ�
�vEb	�rk�����,�o�/��M��f�_w�]�ۍ���3�i��9B��+>T-��E�H�A$�F��Ho�q:�RgZ�?7��F�-����s�$	2Dt��&A��j�<F'(���q��ġd����枹&�4I�kg�n��]�:cs0H@1�lBu9u�Q����!������5I&¬�k��ٷ�Q�u�r�JF�"9��>
���ܧ.�ނ[�[�.�Eۍ�J���m�I/ŏ�=;�M�iu۩T�.#�kOX���\�:��7�?�i9c�4�a�V�A�N�5	��Z9�w1�"�d�4��aj�i����ҡ���3��zv�e]�'��s_S���t���6��yz��m0dI����=��Պn?��-�X�����w���P��d���O$w(�O4�s��wLa��o$����T_>(�\�.��֙�e �PX��_N�Sw��gt@D��ᓼ���]"��w�J��
��N��Ֆ�ه���*��?3��
V(wIEND�B`��liFD$dfc1d08c-0483-1173-a2a2-eaea0594271apdf.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F�IDATx�̙m�]Gy��̜s�޻/�up��16خ�4EX5�6���@���7!Uj�*B늈*�*�����BTBPԦ@1$��Q�R�Q�_�ǐ�Ď�����{��<�0�{��w]Q�����9g��y���rDU�R;�dGAAPd�l9_��E�	Q	^�/{6m���c?�ݰ���u�T1n^��p-��$ư��ƹIU�v}�^��>�m�a�>U�t���=��m��_Ȧ��u�+��6��ʲ�,W�!*�e�%�5�;���.L���ҫYW�x��f~�
o�'�N�v���	Q�.��t��v������^su�ܮCq��/�j�PG�Om���%=/i��~
�~?rv~�h��IP(��ϼ���̪$a���0�b��Cm>��ѹ���|��Ok��{�(x
h�XI�]#�/��nv�7eUBQ|���}��EA������X�M����A~��[	�/}�/�EZ��<���>|An�	�l#��}��W©/V[j���ё��w�4�\;��=����W�((l���i�R2���S\�i3��}���[AD��5����[�۹u�G�\aT�k�ؾ��.���c۷�m����F�9
��V=sS!B�(�/j�a�P8��{�z�s�u%&��� ��P��
e?�p���J��-i\����5�p�X���z:$U%j��/�6I"��T�Yp�?��6�R�s'�(O��%��+`�RY�ț��_~�D��*D���O�W�?�����ͧgv�spdP_o�aĀ��b��V(��#4,H	ND�f����Ŭ��Xz@_�V1���\�x�MP��=�]�����.v�{
Z�k�ԭI��KiƖFa�
�8�@!/ATv���c_�ܭ�����4��6h���G�k6cH���Vi�߳�4>��]�D�p�7�u�{U
FHc5�,�I�)Bù�'\EP2"R�)2ِ�����[]�?
�h�FEc��.U���mS��X�!�@�@��F
h��OG�E���ͼ���X���&��Mw#�05�0�����>�7��N��2N8����_ׯk�+=�/=�GB��0�����9�
�y�o�[^fa~���ܴm=����G�
QLR�̡
��ԫ�\X�.|�?=�����p��������2�)
�Q')i3;���3a#���t'��bg�S����.|@c``���5dy��T�ɩ&�s3�&�t{���g��Ol}�[~��?|�����Y���W��@N+^���wa.�@�Ztw���m�K=;YZZ����@��<�d;b-FC���2֮[C{����n�eϘ	My�*��Qg)�A_K�T�;h�M�݌]xc�.s8g����"�F0$i�6
>z�;�"�;L���OL���xt�B��OU���Kί���Y�Y^��F$��1	�s R�|�>Q��F�8'�c"πȏN�a�[L��R*�**w8��!�ʀӜ6'���H���[Ak�Y�F����S(?��|�1�j���߷̟�xn|*�\W�m�4;�Ts@l_���B��fD��R��|��k7Q�̹�M�@�!����`��tot���fP��Ru�T�( :���߲w�K��у�Z�$�{�鑹������8�3Eȳf��$���_�c�@Դ���T�Z�4���/���7���VFF,�X�5Xk���$o�4'�X�h4r�fN���9͉	���R:�3���1�*5;�RAJ`U�hP*�ab&�ro�3��QW�U���bb��QFb�8�0Ǐ>�xe��ÀnD��/�R��
�hN$z�C��&��V����U�c$�XS_[���˥��$�)m8���c����*��?bQ�5_�5`%�N�6�0�a��9��,�˰���Z���|��_MeBu�:�*��b��BT��s�w��Y4��=b������C�(�g~@UA$�AbĔQ�lh�+Tgh�񀝲S��,���-,ܾ��/�{� �b� %������&yeA����	%R�Q��V]'+�P��|�Sh������f#��{��'�|�o�ĉß� �d���H@lA�
КG֊�F�k
-�$q+�,����b�N�6P�[�"N�0q�L�����xM
�S1`$��6���f���PшD��J�6�����C:��jR^|���Y&����+�J�C(J�]���Tٜ)��n���hnkA55�сh�q���_���ZK=
��e���i�:f�,/��;XY�S��y�0���_�a��D�+�q,(D�漆R���ף�5߸Pο�n�_�}h?�'��=�\U�Cj�4�5���WQ\��=��<Ov�0�_�c^x��hX��uU8��\��A�z���O�^x��^��}��v�O��6�M���/��x~nX�j>u��G?G��A�м�fMp
�w�z��9��ܸ6�RK\tE.6H�U��s���t��s��ܶ���F���?�t�����o�t��u�4�yY�'�t����"���07���&F��C�釐Xz�[�ܶ�Ǫ���L����;���;�5�ZU15�Z����[y�#��ߗ&mN�hѹmo�X!��e������-"`ƨ�^>���4�0�ķ����8�u��8��?~��y�ZF:�6e�p�XJV�Y�ΰ�����շ�r��2�ཨ�Xx���Oa���7��8�K��%�:I��Z/ �J���������t~y/3�%��me�u@����{�z�BG��ۈ�^�
�r�S�m;g��'L]��C���̋���K
s+��8o�!)�55�+�T�\�w�bQ	>"f��1��@g�o0���>$�$?tW7g_�������
[g�@f�a
�e��!#�@D�|�����5���]y50]#���)c�U��Yn�;��K�
&IEND�B`��liFD$c782a35c-0482-1173-a2a2-eaea0594271artf.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F�IDATx�̙[�]U��Z{�33g�Ӌ
��L�b!
�"���D}ÓO�h_����������SI�x��B"�(�Ŷ�BK[:�s��{�χ}9k�93=�Ja%{ά����������EU9W�Áy@A�rm1�_�E��q^q���2.�|�#_۰eSgy�����3zі��LMcc�h�I�ʶK;��[S~��S%W"S���S'�b;�Ϝ����mWs�m$�*�̳���{P��b�(&�.ӎ�y����-L�����y�<���>r��=�˭������r�|ә"�h����w_�n�yy@���Ȼ����(2�@�O�'ZD���/Ͽ���>�e'���2%s�__��Z��,~|��k3���㼐�C}�fVr�v|�/_x��x�2�c\
���;�y�م����!2��Y�pYJ�@$ F�������?G	㜲ֵ��M\4k�ҝ�žYP�{ߦ�����g9�s�S�:v�,s�#K2�$�e���X�X�}����E�����9�#O��ǿ?��;�s��N���9�4��~B�J�D�@Y�F�~��W�E�ȹ�',,;{f�j�BmM��F;~�/8L���R&'[Xm�<?

�%S����^�8��~���9����i��j�n��u�\��R����Y\X΃h[)(�F��?����.�
!.db�F0F��ӲBdr�-�rH�'bf6�.�S�ZJF5O��]e)��q��U�u���CG9��I���J�0e�2��S-{�Q�ڸ{�����&���={XZ�2z����~b;�WR��҂82�SR��z��7�%�~mB��>2���3�b�ej��q�� ����L��'�_��#��;�7d�r�[?|J/�ܡ�9|�Ȝ���\Yy*�Җf�<����ݔ4Mغi�]7^A�<��x�x/�����'��8�v������C��#+��׭�̐�-�����j�T���|���4ܲ���cq~���O��p�C��i��X�����b�L��	6l�ej�C�����=�{y�s��IG*�/�b���
�2-�����YV��ރs*��#֯��jY�^�,sx��䤵���R���7ߡ�lڼ�κ��r�u��]#nh
�������_	dp";���zؾ��c0F��(�d�!\
D#ro����x��۴ߞgrjb�O�FޑU[�°7��xY�@(|�b�伯�1"9L�ɕ�"�K1�yE��^1�`",�
��GOp��KFW@� T7+�.tI]UEU@k혨��3�s�s|��1y�.�Ib�}����*�P�Gu!��\
�<"B�h��b�,åY��-ޔD� "�,�=b-g�t�M} ���0񳯎�/.��ąӪ�;�&�Md#+��g�� k����+BI���}໅U5�Lٕ�Tԙ�ATh�B�<��-�%tT+BhOM�� �"H����p��kt����AM5.*
�YN��sJ�bd�Zn��{�Ž�(�+r���j�.��7߲#��������K4��*�̳��;wԳme�7�G	�UJt�.}��������6R�RJ
0��EZ-�)?���J3_��%+�^<����2TǃP�.�Y��<Pg2�o���u�͕�	�YC��s�6b)?��1i��Z�w׭eeXS�8H`Z�R0��iBL*��s4�l�����V9@%�T5k��@x���R���5�R-5)吼4kO���aPyg`�>R
j�:TI�j�RR�K4��Z[�܋w]��7��bm)���y@��"��Z<P��
�=L��tK^���+LB��A&�"��UN{�y�"B{Pm6ׅpYeT��Wi �����������~��Vwi����Cޭ��;n��Wn%ʍ��"�1K�����v�m����`S�2[������8/T��`��;P8`�!��tH�-v�� �*����`Q��|��i����}��W�i��J��,��S�Y=��ZI�㚟/=�Z�V)�����ᮠ���l*77�p}c1�9P�W�C>�j���$��aY�Qq�!є?p���|g�4uU	1~�9���~ic}�b��l#s~�-��!�z��0D��(�D��?u�W^z��[���y:-"7�,�����:̏t��~n�cn�8o�IEND�B`��liFD$00ebdf9f-0482-1173-a2a2-eaea0594271atxt.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F	�IDATx�̙[�U�����f�aAgJŢ�̅���bj���[Ӧ�KӘ&M���&M�6M�Ф�Xjc���i�qAD
���0s�ٗo�a߾=�9/_�3{�^{�u���Z�ڢ�̷���I@A����w�<�E�j��GJP�X����G������[�^�pQo\q#�1���ߌ���s'�X=�5[(ɩ�)�z��3x��/NT����۹�ՔV�zd�	��=(�U1�_!���V�̾�qmȟZ���K���Ď���s��m|ƫ>�K��*��������J{��L|�_W��{�2���[YA���A�F@����V�~���G����3-E�D��W?~�P�5�G���痉"e�C�?��؇syb
O�Lտ�����++_��"E:O�|2�M�@gUY�f%a-���4*�����Aڪ���}��|�{�mME�ır��'����Gz�c��GzY����۶�Ƕ-�j.s����SDQL#����(�zBՃ�����w_���㾿L>��z�,(<���ı��_�[]����{x��K<��sT|�e�u|t��;�{�r��S\8�6Or#�|�C=���9��f���y!��XύO����'�F��|�X����kW33��҅)A�g�M!��������c�ہ��6���L��0�QV�߱����W���.l�Im���U����?3vbᣣ+�?U!��ͽ>�G��1>���n�\
��|��N_���j!�z���	�U"mHj��"���t_�t<d™���QM`r���.C���v�M�ѹ��<��#݉�#s�cŊX�n
�kW�j�
zz�R����zya`AG��v?W����?�T>�uK�^�la�r��S�.O��_#�J+��0V�,�Z%�aj�n�o|�����8�y(/v�S����9r�8�O�&��$�s&J������f����O�;s��d
i����_���:iD16����юH��,�6�R뭱2��~�:��0����	#K[�����U|T�H@#����M���o�<��/l����1]ySA�L'TS�#�A���w"��}!7�XAP�syr�S��S�Չ��1�&���y�J�ʢ�Nv�ӳ�������S���Ƀ}�ٶ%l��nZ�G__�(#@a���9^V���;�H��v�Tm�O�N𕵷q��q�F��!���Hb��y�1,]���J��e��\ԹJn�cl*O��ֵ}=4"w�,���%)I�5Vb��:��3�5�:6��6N��x*V���m�ʂ�vV�����
�f\�a"��Rh��Kr���Z��T4�Hc0�`|D1��*[M�j#�B�ⳠZ,�8Cգ��2�����}'/:�����r��;yk�yTTA���a!A�B�X[���+�;r<1�3�ߊd{>A�1zK��&
��yRn�g}���B��'�QT�
��d�*��8��	B�ƄQD�x����P����9!�q&�<.V�V6���
"	�d�)t$��-��H�>Q��ɤB5F<�6ϣA��X���L�$q���Gb��tk�zE�^��~;��q�.�����f�
�B��"pr%d��A)p僚���^k�X�B�<�e��)Ppo�t�,Ҕ�8FYkg�#��8�u�5$3�v�esc$�ycGfH�WsK~n��;(JTԴ
�3j������a;�{R���@���uؽ�9
�������v��S�	=!�I�*Cٽk/�됈`[��A���``hC�������拔;#��D���گ��6"�d�Ԗ��@a���Q�R �Au�/�K[��\z��Y9ҕu�T���͍dM��ߜv�ӥf0q�%y�`p�&��fq9�j�3C#�rc�n��Т"��ܼ	fS`�Y�q�.�u,PepxS*���LM[��Y(m#܈��(�x�!�R��ږו<^�ܣy�]�++�t!˰^���]9L�7
ˤh*J��;�G��y�"���H��?<:�
@�z�J�v(0t�P	
�7�x�aIws#�3�G��$��JQ�r��*�hi���U�����R��s�re�Z0X���a(��a�g�T�s!���_}}�r'Ըy�fv��:��ܿ��Wv:��6��Y�7LJ��[7���i�8���;��n
z��fJ̵�����@���876�IMS�]��z�
/�2��4��sTV���GyZ�E;a1x���WƜ
Yxdd�(㯌��U����Q���m���ƪ%��4��K`��ѫ��F�HV�2�[G�g9�&�]�JmKKBP�]���^��/�U�GQe��w�l�Y�LK�W%��U�U%����w�2k��<���0�[��s �ȑ%�,_��҇}��}�
{���T<h�~�eD�vA�B3'"����9t�4_�%"�杍��F`�C��<��l�dS��/�,�4֙��IEND�B`�tliFD$a01c1b80-0482-1173-a2a2-eaea0594271a
video.png�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F
9IDATxڼYk�]U�����y�Ckx*"��$|`
���!Q��Q#!�h�1*QcD$<�dBQh)��P"��`��@���ʫ0��̽��c���g�zg(��N�=s����[k!���z�Y(� �w����)�jb�X��c���ߞ=�
����{u�8�L�O���U�rI�x������k?�]G�;Q������^/�j
O<�}�䀒X���U��€E���<z�5O���W̍M���j�;R¨>�\�,�`3	:�n�DQX��
Te��?����c{�o��1�f��-�F6x1�?�A��� @�(

0�<zպ�O�>[�˛���L���IAH�x��J�p*��@�������Ww��P�c�r����,�K�g�P%��*jWC�5���CT(#����κu%N���tj�������u��w��F=����������x�̯�
'3*�2)�hf��"��<�k���9��=�г��P�ŏv���sGqbt؅�x��	M��H녱.b��P*��!�A�D'P�m{|���|�ftI����h�7�u�l!b ���^��?���R'ʲ@�f��?���!���)��>4��Ыz#E��5c���

㻓�E�zkJL�_�����Am����R<�H��w�m͈/b���3��-ڨ����&�0��x�_��vW�?SV!�RZ�<�[�Z`&��=���b��L�"���2u���=��=uU-ub�Ыq����v::�t�iK�(�0��X����"N&wbj�g�||����\o^}mVV�!1�
t:,��\�Ĵ�2�#��p`��ٹ����y,X��?@=�a'z���d�w���_���?��(��c��I'��b�
k�O�
<<P�$Y�n��&j�0X\��y���
�j���e���eUa��&����0>9��~�s�
_xr�E�=,FUb�o�-}"i%"�(M�"KE!�΋����'PU��>��AUC���������"��}
��Ćç1�v�X9�ݏ8}ā�!!��W$�h��¬�h�d��1��,PuaPp�"���g�"�*��ƿ_x��g16�洇�9Y���q�L��g��FM�&���c�3E�c`�gP�>[J�BP�ƪ��_Ͽ�ʢ*V�it,��['b�ù���!X#��E�+QT�^
u��5_cD<c`l����̷��?��_�?���q��O�Σ[�iX�P���BEAY��5��P*�D�@D��ψ��Wۙ�;7ޘYv�y�d���T������7LJY$$����� �Z�E��RQ��HC�i�Z4���ݱ
Gm�
8�4]�X����{�y�N��u�x=@��*Q����#�&��
agS�>4����Rq��?��W��^�Ia�$H1��>��|)N9�|���ޗ06>�鷭O��4�4u�m�լ�(1�H��f}ϥW߶��y��[�������G[��&�ʦ��f�K��Sy�;�����W�N3�7cl��e"
*�����0̈́6:�Z�,I(69���Q�$��8*�C�Z`T�Qb�ԆG��, 5곅�@٘D1F~#��Lr�i�%��@莛o�m7�$�B�o��8u�j�&����n��?�/�g���
��35�L�_��ɒ�	r
�&j>�
��eۊEԤK�f�U���(sk�1$Sf�5@i�i�_+q���FI|����5���_�������*v�u=v݅l��t�&˯��k&���$�^B�n:"Q�Ǘ4�}s��d��V�]��L;�dС��Q4��5ª��ZJ`j�����[�	��2�?�N�[��zp��y����ݛ� �Z��q\ɤ[��v�g��לi�#Y
h�
jJX	���	��$�Ҳc�Je*��Cl�F<�T:4�B�-[�m���	���g���9��b۶��r�FV��+3F�B�E�2ɇ/�nE����jt������$+��+����!�(�{gf�ޙQ�q������g�P��p�U��ڭ9��TЖE��T����m �̶pN�ro���K��(Q䅛ދ�C����G:uն��2d���*6�c��'Ck a�L��#	��`\��7��pk��ɂW��Q���:C����vAQ�U5�A��F�`��\�.!�a��R�d ��r��?9�?�m�^��9U<�c�<�}��)\�w��"t�)��N	:�E�}�\w�?y0;Ocm�,�<�z���m%2�B�&
�3�(�0Ҵ�Z������s��nQK��z�ˊ����|�?"Ճ��a�ofOc\�X\x�W�T��=���@;�K����8M�V}S
��Y�I=�G�%p�9��w�|f�J�����S�x>��T@Y6����,�5��|�_�����S��Gb��P*���v���fCD6	I����ʎ�h�O/��e���O��Cxk^���&�����*�%���ƒ��R�B
_%�IEND�B`��liFD$928d337a-0482-1173-a2a2-eaea0594271a
audio.pngN�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�FiIDATxڼ�Y�%�Y�ߩSUw�e����o)�@@��(B�P��E�x@�PxA	��$�P!Q0"& �	�0&�x����dzz��2�w��|<�rO��o�J�VݪSU��wDUy���n)(�
"��Tϖ��j-�SG�<S�Q���s\y�����3�����;q�n��1�밳,RUΞ�2�u"�L��u�Jd�p�p��&Awq}3�w�3g���c&�*��1H�;(�SH1�
I��00߽��go���n�;�����=�����]���:U�
hE�(��)&��+�~��1�z@=Y���{ic-�7 ��CQu���֠�8)`G_��u�ڣ���g�Z��*��B=m]yߩ�Nɝ�i���2)��qx�W�_|!����=W�M�h�����✢yN�Y���Y��g)�+ F��'���?�W�QbFMe���v�n����S�,g��dIF��D�
���
>��s�?5+�̬iT����`U��Iy�׺��9%�sҴ�K�	q ��k4���+?0��+���B������E븨�G��q�<%�Vk��K/��A��F�TP�:�3)�e��T6E1�QSf/H�)����J��%ju/}����f~W�e}��J��RD"Lb�`��#
k��$�(@�
�;��v~^�e�r�$�T�r�F*RC�PN'1#E�&(~c��X=,%��ڝ�/��b|\�B�Pe"P쉂:�����A] �X/�)S���&tA��W"�^/�/��?fQ�[�=�E5��_X�Mutn��[��r`L�	:�xw�JX�Tbn.6�ҳ���?1��-��^O��3���P����x�E���D��l��s{���Ý!�8!K3��Dl
�^?�K����=]+ ��}qUZ>�(+��@��+x@Q��R׍b�˔,�IF#�����b8�g9�r�2y���0����қkq���^��8c��Jz�™�|���Z�ES&L�'^+Q�M��U���B R(/�	-��]�( �ɲ�\i ���k����ሕ��aȡ��t继��#�?1#�����2�Wx��ε�6z����1#��bm@f
�K��F0�P'd.��ֈ׶hwZ?��7{�̕���^6-<1�F���5��?T1`D
�S(cm���ƒ��S���BZ�Q8��u�( ���\m�:�k:Q�6zy�JNZ@#a@��Ȓ�.ϧ�V���H���1���$�/���S�,�珝>W��*(��˄aD�����6B���ƕ��l�F!i���9�
P����Ra1���gi� `=L���y�{$�O�N�ˢ5ElT
(UUZQz��C5G��8�	B��!A`#KԎ�[1q+"�-6��V�EԊ	���̤���^z�
I:��󋇰���cuLথ
�b�F�;�^��ц�Ԥ��~�$Ɲ��(e�	��ܼ�\o��蟋qڠ<�+j�	�d�~����?���Y�5Z�0�1�SJ�b�W����l�|���1 �����7j������^t��n���I}"^����"�Y~����嵧ٹ}�o+�-��)��J2�����TlOjvWg���E�>l� �uz�0Q-7���6Y�*�q��[
��~ç�D�2i�m��QDw��^���z�M^��%��z������bs}��X�i�jN�4��D	���y1Sy`_��t�X׎�G�ʉ��q�͏�v�J��ԝ���N�u��������&��o^�

�V���p��Ï�7�9�S|�꧹��&N��~h]��돪���&�R�	tT&�����nj�\A�e=V�,r�����;�s	��_��e^[�����E��2I�BuҔx��I��-��[�k��m�:�N�Q���U�#r���>�'�k���7W=OHs֪x�b:�5#����+�b�P�pm�	:��|�y>��/��op.gc�u��l�?�ϓ�;l�o5�6f�~�b�I�7��3iI��@5:�?p�#�q���9��M��C�6���y����I2f<66B�w{�h@�����y��9
�N�9�8��[X��'9{�i^zy�q�p��1�/�N��X�ޤ{��J��[to��
�~�)�:]�����¯p�-��?�h��!MƠJ26���ڕ��">�򰿿�z%�k~$W�^�fa����x�"M����f�4I@!�{i�G��<�<�T;@��G�s+�_�o�
���I#��T���u	\�6�2}���'�r��;�9�C	�ƨ�_��6��v
��\�򱓗8vd�\Ǭ���� n�Q�E��\���7�v��s�G	�!l�@�{m6��ܭ�i������c6���߇�.\����<s�.��*�~��f�^�c�`K	�(ĭN��"�&Q�t�\Gy=���	�>G�}x�x��H3�����nm~���H��ς���!b6�� ��V�]���di^�wT���/��it���=���+�N1Fq���%M3�q��p8��~��ms�������N��@��t�{���b������A;�Z���q�$�{�����K�'�"�SWV�\��+�:�Q�t>I����.bs0&xWּ�T%p(�o�����2��2L���QA ��vD�/q��8&�,�B��
��cΞ�8Ks���sƣ��բۛ�;?�.D�p�$�;+`���سa7e0N����P'6[��tw~�����]n�W��s�Y��\�v�����#n��{y�ȣ��S�Í�y����M�|����0d�m�J��~��?M�UϽ���W/����ʽ���֞��Y:lc��.���%�s���_Ͼ|��_����O��ݛ����
�wܠ�sa}IEND�B`�liFD$20883df8-0480-1173-a2a2-eaea0594271aapplication.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F�IDATx�ęK�&W��֭��9ә�a�1�ѥ�� !C|���B]d��q��V4�J�D�&BL����@P��B0��1f�gz��W�{��[�[_wO���N.|�U�ݯ�<��9%��;���{UAAP��mu==��"
��x������y�̫�;8߿��b�raE�;��ư�e�٤��|�<#���隔:�T�J8e0s��Kd�K+��}�������J�����原�"��ڜrЧ�g��~�q{yvi����S9LC4�n"�V������@T�6c��y�����Z֕��L�Md�F�5^�@J���P!`�A��8 W���W�=,{��jb�F��*T�BmC�}PA���ԣ��ΑI����7����O��?*��A��ю�7���)%E�LJ��0r8��0`�Y����~��(1%�&��DL�j�Ba�<#�qc���Pd��̀;�ȩߜNf�4�Ip6b&��P�j[��!��x�)����2i�(X�����^�c%�W@'�#Q��BH�H�E��h�G���Ѹ$3$JH�����O`� ��.T��񴅷��meS�E0U��rT�	٨D�[���W|�]����5�U�@��k�B��AĀ�@��B�`Md'��V�z39����s���L�unlSO
�Pi�"
��r�ƌ� L�1�̶V�+I�,�ٹ���A_8!;�P���E`�
j+m3i�:"+�cb��gm:� @�*���BOz���(6*1�4V����a�х	&�R��r`L��2�f{��Rš���=�|�?3.�ʎ�� ZCg"Ki�nU�z�E��0W���zy���>k�����1�t�D��5,,�z�~�~���4
�4��o���~��]�nbү�������q_p���p��j����C��h�*y�̐e��(ط8��������<��c�����K7}����v�J��Lh�'	�h��R���RM!�ʋ`r���<E�1�p�B�d0���YY>w�^�s����˵z�ؔ
M���	^�x�>��+�����1#��bm���
�"��*Bo�}��۫���|��Y(���M�d�艖��4ijB�?T1`D"L���X[y�`$zP�Fo�X+�e�ȁ���E�Q��p���	�䚶J4F����I#�!3B�g�[X\����Z��1����1��2g��nfmzURhG��5��i��\��(��6/(Tȋ��9|��l��dՓ�A�"�we�H�����i��5���uJ�T�I(�T��H1$N*T=�e�clf	��E2���i:�LUC
�Y�^S�T۔I�;&N�c���V4 �-rl^0;7�kar�!:1���_Y�77�
$q@A*��v�v�N�v���.u�7uZ[�U��TO���I����^K��1 R�U�d�Bϐ֙���9�@���oY�_z�][����QK�v[*�X�M�)�a���7�u{�~zߏy��s�cz��1�*P+��NN&��$�e��N��wc�^�ġc�[�dQ�ΐ�ۍa3��_�2�8���JgO�|w�U[��6�6t���@Q�:�DdI[�D�a6z��!�����s��ևD�|����̖������,I��m�Ui'�f!��{��0G�{��x�q�ᝫ�=����}hν��V�^����9V�ڒ�V��p���[*��Oa��'�<po�&,<Q�&:6�<����疗�PcR�;��*^IF��_1���	\�����G￝7^�[
���C�>ιn�^��)Ei�1�o$�
n$�\��%�ݘѻ��_߆���
񇯟q�ԡ�Y_[c}}���T	MH� %�u��z�z�=0{�c��ꓨ��X��=���鯯3��*�����i�+T��V
���u��/~��(�??�s�a��ٳ;����o�R밈	J;��$Aq� n�^�c�}r���u���Օ8"�0L�����zo��6�S�D;�VMҒW��M
G\\Ya<�=��+CK'4�L����Ͽ+�7�Id��v2��w��hu_+��A��e�
����{�@P�����y`�+�f:�;��
b3���6A7�W s'O��������]x�5K�9s���l�(��O���{�ȇ�f-�^��?��v�V3�x]D>�K�����.밪���ƍ�?�\���I:IEND�B`��liFD$53a52047-0489-1173-a2a2-eaea0594271aswf.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F
�IDATx�̙Y�G�_u��z{�8q��`��8!$�\&$@�<��;�� �D$b�@����0��aB�$vpHbLl6�Y�ڻ3�]UU}�8xրBI�����]��ZT�����eYAAP�|7�7�˱^=�+�*y�r�%3<x�э[ϛZ��p�X|lQ�l����4ư���3HU��x���Z�f�Z�T	 ����xd�djvq)[�-�s�r�m,^�������
�f�U�Yb�8�z�MO���0��2�������_��-L^A�;q^��,/�0S�dl?_z���g�
�.�Z�M�K4
�m��}}#���ޗ0���@�#�='W�I��iP(��߮}��S�}dM�0�z�+�Z�[���P��5�v|��x�a�A��U�z�ZK"{�Ͷ��{�=�G�&�(p6'\-��(�eQ�m�/,��a���"�aLxV�K?q��0��"�+��_��u?�X�p��c #$���~�~y- ��-,�㋂���s�����H��7ݏ�9��ha���6�ڂ����c~���SGQA�1ǎc�c�6�ؼ���2�H�7�����τ��h4��7?���q�=�8|�6v�޺��c����.��9������uam�>\]�E�僜n"���4M�$�侃��|��ب���l�[��<�/
�ي�u�/�(l}����9�gK4����E�˃jL#��W� /H
R� M��v���:����{�p����TD�]1(H���Ȳ���ԑ[<4uVR��a��҉ʜ^���>��2߶�+?����6���u�s��8���a��J��U�1 ����{:���i�	5��3�6��&�y\SJ�ӊӈ�;߸�g|e9dg����K�}+m��*����>�$1?C�aE@P
���O&;|���Φ�I�؁������A�G���O�1q��ʂ@w�eS�j���M��h��z�[f#2Ń���	!S�n�ҭ\�S�D$�)2ݕo�����ٝ�y�Q�}���"]������x�;�:�W�+�C=q��Ƣ��g��ɕҌI0I���'A��33]������[�c'�+��q��G�x�^x���Qmi�M�PR�
�E��)��~�~���&��i�RX�s�܃W�b��e)���`^��qj���o|z��o���M_;�O�h��iK��s�͖ ��n��g �nb��n%�9�����'�8rE�&1$�!�tX?3���7m`rz���r��`q��ܫ_yu1����s��m�oK&��rby�{�YT����N�I�p�|����g/�Hp���UVz}���$�,�f�Z?u�\|��9ch������3j��רm�R�%c�L��{���b18S���b0�!hCEH�`�������2�&'v�����'���
'F�L9!�#���|A@E��L�1�'Q��|��A`����$�zŤ�IH�T�x~�.��h|�M(
W���`ilz��y�c�X��#��+�,M(��ԐL�3Sq�1!��1���y��m��7�(���
�h}��^P�Q"��L�_�H��M 3��{�&��
t7oŸ^\)l�ADp�I�b-������J]��B%ږ-����$��@�|�H�d��^��+�����ɲIL5��B�M:���C�"�!W���4��
��R+$:o��~҅{P 3�%�:I8u͇���gv����7���ִ�;�����hE���ڔ�`����ô"�L����M5��/��|���4 C�q�\M*MF�T�5^�kM�"*@�E½o���=�c���G\9��<z;_�o W���͠]��22���	�JC�E��M�k���3q�w��Dr+��T&��=E���u�h��r
N�F2�Qy��n�1�y
�g�����[s�0���68����5+0����#���f����3V��dڠw�0�4^�E��}9C�Ѷ�*����K*�Uh�F���W��9�O���o��NZo��2@4l��z�u���Zgd�?��*�+I��C?�5��D|�W��Z�]�fQ�A�ʧ�P&���up����8��F5Y��fARꝗ�Ʉua�J����t[�e��V�*w'�N��V��c�yV��Vv�}�����MK/K�m/.�]��*�x�
DA�R��b��1y�7��	��^U'ņ_�c��&ј�/kq�0��Z�:
�{��>���f0�]�r܆-#�j�����*G��~->��0�a��m��L��f:GW��4��
��6�M�������R}�c����nX����O��&�@z'[��U���w���C'S��'�r��i����>i|҈;��g{��T��?x��=��6ː��Ze4ۖ*jJ���F�Nx�QLj���%,:��,]���r�:��6���k:������f��a�Ў͚uYy��Xy�k!I+�U�
S<SW�k�(mYA��ڕ�7�b�sW��R�-��N�,�HM���a'W=���,KZՉ����ɍ�IG�7��T9�y�U���(�9��z����,�>$�c[Ӈ�4Kx�[��s�@�@71��O��̜�5�9������k"�ԳV�E���H�yB��ݖ�*��?�
T�K��hIEND�B`�liFD$6a10139e-0488-1173-a2a2-eaea0594271arar.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F
�IDATxڼ�y�U�?�3g�w�Z[���F�(b��j\c"	H
jL��!j4�`\p��`b�Ԁ\��Uk��`%P��w�サ�9����{[^[q�ɽw�3����U���߻���(��Rܛ_�/�"
��x��SN�b��Ν�fbe�IS�u���hOb�t��,RU�l��絒�~��u�dJ8�������x:8���<��=V�@P��+�q?E
)�1ig�V�;���6{x|vfJ�g_) t���)[O=�g���ͱv�V|P:+};��6�X������򀪞��?ʴ)�#"�g�Z^Ś�ejk�u��[�T ��l+�����;c�&��q)B�>����8�hp�B$�ۊ�����s��W����j%ʘ�Εg�~�wq>��k����yG�9��x���b���l���W/�x��ޗ�s��mW^�s�s.?�=3'�q�p�.��O]Z�/���=���}t�yz���OI"!� 0��������url����_�m?�E�W]�Z~�����~�{��ǿ�E�y7;����
E�4;�Z� �"R��7�󾻭]����	[�|��k<���~Ǿ�{��s��/fr~�T>�����o��\7`�,��4��DZ"��`#��?����.-Ye��}�ɒm.��;��s?.���K�ʹ�=���%s�"4�P�K��GT�ȳFlѱ��\�#��ظ�:Р���4XJ�="�;�rY�}��Cdc�I$�AqZH���"c1S�3Kq�l��ܪG
�B��!B��?�`'~������V���>u#�&ʱb��<��8�$�2o$��o'���}2�C��������lYmm4������c����X^�x�0��e�}�V�AI��H����J�������ε���:���Cs~0&�D��V�Q�$�@d�aj�en����G?�-s�Тy�hǗ��Kׯ#�J�'�,Ye�u.���4J��3߸�^���e�&pƖ�H]��@?d\�d�-��'��^�,��o��sW�U+��O������	�\�J	�:>u�uc�6k6������O����G��kv��Qd����	&�Ƙ���=9A��X>�ٝ>~���yM��rz���8m�]W�`�_5Z��p�x�PLl��� I"����4����VVVX�ty��C��5�f���8E6��v��lhr���u5�'��{Eџ{��1��-�F8k�@���|��7T�(.8{|�}����^����Ĭ�u���Q��p�]rE��[uq*�0"L�ɔ�Dr��Y9hՠk�$��'1x�=$ɪ[J͓u	�\��VJ�Fϯm�j����8"i����ZYU��Zf_cL���#K���9cK��P.�6��"Z�H嵢L�pD'$*�IL�>�D6Bk��I�A�"�wi�(�`�KS_]�2C����БJA@��K&|�%�3�T�z$�hE=���4`c�D��Ѭ��2Od���5�J�6j��8��"*�i�A��$��	��v	��ц����ϭ�j��jq@	Ar��p�6Y'4�4S!@My]��/	8c�"7�Ś��|��R"(e�+�?KR�����hE�,��Q5x���jlW�r��\���6���'g��	�A�٧�{�1N�&sn��O���u�I���0���r͖�n��/�:<rӇ8t�5�g��O�\�<P�"7��G=G�@��3��W?3�g��-��
��=�߳7��T�/	�~�u��g�!U���8��<��P�<e�z1X�T��xuY�&��Ű�����E��@QՂ|2dI������-fס9�y�K��씠�i4�9)Ok��("��Ӣγs�t��Zb_��^vpE�W�*eY�y�1����/061�_��/l�l�H8����a���rIƔ�\�J�X��P=�VU"k�&^�o1=�>!z�>!(����^��:�F��Q��c h��Nӳ�CB����F'��~�H-4�j4���ޟ�(��jW�5��P�
[&�z|z���]�o�B{fb4yvz�f.��*5��J��,�IN��� �ڿ8$��	�ֲ2b@��"FJ����%U��d�U�@C�#b 
�L��N	�^;?�el��Rph&�Q�z+Ufk�&UUL-(��X�l�1B�7�^�t:5Gg��.��f��bߡ!B��Q�iɮ"��.jA��*0�n�|9�M���H.��}����i�0�iK��b�1ΐ:�hɫ6��4�=o�C��m]7\��ş�;�|�e�������oe��|(Pd�QAp�Kͷ�U�#z T���jvn���W3w�g�U��v��u
�3��x%˰axH��)�䁺�A^G�p��H$i�5�w���i�s?��G�՗х#c��>h(�n��`�+�Nϥ~�~;<�ц�!u�R�}�͵���M�ǭ������q�/8�t;)'z�Q��{��q�)��鬣�s�'~�u�����������=�jF�G;�R��c�y�¿�|��5
�J��{�(�+g�>K#$�a�Lr��l�{D8�D����������ͳԅ��z�!"/����[5ڜ�)�=�R���Bj�뽢*�{˩���y�!0&��?g�5��9�N<��TU���b�����k�lFIEND�B`��liFD$619aeb1b-0488-1173-a2a2-eaea0594271atar_bz.pngO�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�FjIDATxڼ�{�]Wu�k�ǝ���xl�����S�TԮ\$£%X24H0j%�V���Z�Q��6rx�R�6m� !
	�UKh�*	E���!$�5c����{������k{l�n�螻�>笵׷��8���m|��

*��( Ž�|��X�������Z6l��Џ�Yy񪉥MMeǏ׵�e�=�1�ӈ��HUټn���J���T	JX���s��<����d�[�7m~�;���W�k=K�y�E�
����$2�;�:[��3+��|�+���K_۰咝��Fw�JVoۂ�Jg���B3�&K���U���� ����l�J��������:��5����	�eկlA�ıA�^�d,%n�+xrᙝ�m�h��s�D�2��p��+�G�ǻ?~m9?������V�-j-���[�k�{��&���R�Y����o��\��Y�w�<���5������Џ��:��Y�u8����Q+����o�E�B�9��ćP���z=���~ݛ�np�\��q������eT�Z�Λ�a|��XWn��܏s����-*B	"�8�"��h���x�ٷ8�
x��;y�m���7�ɻ��}|���8�����o�����w�� �y\fy�_�#_z�����?� ��w���������pʲpx��"AE<dq������~�k:�
�AX��r�#��5L�N�
:�PU��k���s�A�������s�޶��<����l��|C�zz���@K�R����W{�u��ˋ�RT��M׿�{?uwi��|�\s�ٗ�j���y^uɚ�uD�G���'��%�����x��k��_<���-��u�q���_Y���XwÞ7�L��y���A�!2�1���4bv�AI~@k,ajvũ��9���\a���������@j��ڻ�=��o��]{w�k�n��xG���ݠp�G�ͮ����`�+��R
�䒤Q�F	���vʽ�y����匑����S����F���|�C�m�
o����N�9�Ȏ7o���)���)
X}�d^��<��bG��?�#-�14���0QD{��8�t�CǍy��j�|�����؉����_��A]�z��)�k�B�
�u.���4Ro��ߺ�^���E��s��Ȭ�9O���bĒ����;N�w���/���n��V�w����x�~n�B&Ts�+%T�,�	���mV�[K�����/�x�N�������Ȑ�)�SLN��rv��	:=���Ρ�'On���oʖ�N��Z^�i%][�`�_�Y x΅l����	�4���am`��A#�����X�ty����Ukf���� �~�Q�Y�����2T��(�5���?��1c�8���b ��0�!XCE��`�兟�ud���>7���NYB��*��+ZȭU���#`bLP&�A$�<*{
P���c!Mb���ä�KJ̓u	�\�jN+%�M��2Y5(-Bd�(�H[	qc[!�mZ-�1&D�B�(�ߏ�3c���\
m<Z�H��\��\!NRR�4!��9�8B��D��†�Dg�`�(�x��KQ_]CDU���CGr(y��.A�`%\�
U�D�(�G�8��ꉓ�L�DQ�(
�����JU6j�Z;�f��*�inA��iB�����%�&[�$��?ߵV{�,P�J��&����:�A�A�5�_p`�"6�Ś��x��T��,h��[�j.���|@�ͣ��Z-���Kv��]
��{r�x�[���_.��ȃ��/����`�]JM�|���>E�]���N"�u�!�M��7��ƭ�|*��{��q;�՗��8W
u�V(���G=F�@��3���~:‡�~�:�G>�����r�H��� 
篒�Qx���궗�a�#Kq"|��~(:ד���r0�/L�[�
՜��_�S�]�z )�(�Z�O@�Tʊ��(��'V��al^��!^��h�9)��bcH��$)�����L7vXK�k���Zkt�J��h�b����z���y�&���o�$� �$�p��+�<��!B��%SRr+�b��ButwZU�b����x�鼱u�����b{��^�rhTo:��>���*�8M�L	������}�����‰Sx�;M?*����'#�2ەz�%#�–ɵ��`�~W�Χ�^11�<;=�P�NՋ�Uj\_�&��)"�o�j��V�G��Z<>_�B�8fi�:�n7CL����)4S�*��N����܋G��/�AfWO	�^=;`el��iB�ol����1�U���"M�����S9q��^1F��+�N�f��Q�BO5t2��5j5��OKv�9w�rT���y�k��j#λ�v	�7|��>���L��2j�6�mH��j��T�+�-j��|'���˺�}��X�sVEċG���6p�q����M�"r�r��L5��V�_Nk_9[�U3+�*k�A����WZ�h�$���3�b|��O.���8n8l�D:��1��u����@��l�{p�O�+J��&�[`{�o�A珍������d��ÕA�.��*=������6���j��;0ox���s/���s��q�8��t;:�Q��G{k�~�e���3�ڇ�5���g|�3?8�c�k�%�,�ie�i��i-�2�6�.�����M�QH�:�؃��r9O�BX�!M�V�������Z�JL�-������C\�51�d'�E����O�tA����G_���m�q���Z��V�U���ZQ�߽�+_�"o�l����tM�Oh��Wv,�����^!H=��zIEND�B`��liFD$60c01c09-0488-1173-a2a2-eaea0594271atar_gz.pngv�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F�IDATxڴ�{�]�u�k�s�;ƱI�j4�6��QJ1V��x�Em���*UA*A��JH�LH		R9E$MHSJ#H�(
m��*!�P��b�ž�����{����s�3�aKG�Ι}�Y�o}�EUy����*(�
"�����W��{�z�W�Uz��c��KSkV�,l|�Xz�z�jFZ��Y�x9�T�MkG�:-嬮��Cm�*A	��;=N�!�<9��{��M��\ײ�t�g!=�^!ŠqB�^��D�{'\{s|zxrbL�幒Ch����K.���hu��X���W�=fgۘ��P���l������^���D
�H�Y�W�W��f�ʞ�� +~�OT �H������/ξt�7X{T�I�=o�굻�8��C�E"���_{����{���k��D��Z������;k��W��R�_��z���Xg�]��gSb1B�ll��g�d��r�
8���Fv�مs��w��{v�s�.��Xk����L��b�;p�1y�4��~v���Ě�b��=���������O�b����g���F$4"HLd �ny���Urvr���~���#��Qv|�&�������?�������<W�p%_��'�=�g�\����v��8�pΑ����iF��xH���~��8^���D\��uα��g���0:=V�CU�ξor�� !X�u��>�p��³�uōW��#�����Uū��K�4E(!���_���/�8��<�KE�y~�O�/�H���ܣ�]!��{D�]�� �y�B��U��DD�e���e@)=�e�$F�F���^�a�e�@n9�=3�x�~�� |�%�ȁ�8����;>z�>�A�����_��޻�j���}�XwA��Cdc�=�H�M�~3"��͡��鉹��>yCT5p��-�ʷ?�;��f��vO?���@��[��s��|��}|���9z���n����(�<p+�n���
&ʰbQ,��I&I#
�hDB�p������kLo�3f�O���,�6�&�?���c�?<�7N!��Wy�՛��k3��i�s�l��K�y%uJ�!u��C�)�WR�Ow��˷ǽ�s�T-t�t.	j)��+�g��1&�h
7q<6 �56�4_y����w}�u�]�uzr\k8�����C�N�^�$�U(�C�"��5j��w�eWo���0sr���\��m��㜧�Ox1bI�j�	��g�3���M��{�����uk��e��eB5��TB���\��o��b����:�f8|��vg�N�oLd�"C�h0>6���S��FGhw-�ۇҟ��q�5�M�UN���N޹q���	pq�_6�� x�YT��LN��hD�:]�
�d0Hkaa��v�ï���$�X5���zY����̆&3�
*J_W�y"���W����K���$&�#ll���>�1�!xCE��`��՟�y|����{��<�0�e����eT)-��L�\n-�8E�c�2q"�峀���#�B#�n$�积��XvK�Y�. �IX��R���ٽ�MV
J�!J"̈́�c����{-���(W8��"��}hn�ʤК�!�5w��QP��˔� �qҠ�B�HH�ť�(�P 6Q��`1��\i�Hq2IϦ����!���C	͠#���h� |p��&��"�QD�q��'1�����'
����5�J�6j��8��<J�i�A�č�8i0�j�]<�]Dr�3�5[�g�JPD�L0��u��5:
*x<�)�K���s#���aXϗ�#��9MV>R�р�JHm��Y�ʨ�
<}�n��@�xO&P��߶`�7��Ҽ�9���_x1��3�ڋ�Ȝ�>�S��zIUɽ��-�<��7l~�gm^y�/8���^���\U�,P�"�g�G5G@�����5‡�n�Z�o~�}�EN=�ADJ��Y�h���@HU�9tk�P�!�W�s�,Y*s���p�f9>�s3sL�Z��(�(���O@��ʊ�Ȫm�SS�u���p���2~�Wl�1$QD��W�Zdz��k��Zf��+��VݪR�%��<�^�jz���!����8I�6I$\����*?��U�PZ� c
J�a%��UR��N�*Ql��\n2>�:/���+�����Z�U:�j��%�
J���c���}����>�V��j��?�k�����
��^�q��+�'
�ڕj�%�ĖɴaѠ��|
�������b��a��T�-�T��,MB��D��|�`���N�	5r�jB�8fa�>�N'E�����)�K�2���N˜��,�Ā��A�W��	�Z9���Њ�%R���A��;�*��H���*�}A���W���s%�nWP;h_���IF�ܾ!B��V�i��"���kA��@��}��v�
8���h�;�}vo=5���eq�T�Z�!U&�ВS�%�x�94�y3��:~*k�"��}L�1:C��8���O0�����L��
��=(��U?�-3�,�_[f�ɩ��b�o�ej�ǠY��vN�� ��z!dX�}GYZ=O�Ey�*� ���?��%��k���/�K��/!n����~t�1`S���L���yq�
+�NϦ��q��Gkj��Ku�U�1�~��_�{u�nι�Ʃp8��S�wŃ�?�uW���#l����t�����U���~x���w�+� �e�i�Βp�e�y��~�@�9*R��%�b�x�\�\H#4Ê��Y����3sVb"oq&Ƹ���z���1;).�f�/���yyCD~�/�8r�l"�>�U��{*�.ZW��W�W{EU�d�EW�IM�P1^�ˁ����)o�U�~3�בV���IEND�B`��liFD$6ef1e0ad-047e-1173-a2a2-eaea0594271afolder_closed.png.�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�FIIDATx��YI�]E=��2v'm�F�1$f!��;A�HЕA�.t��E����>�E0��Y8�+э�$.:1�tFMw��U���1qH���O���{ާ$<ȏ�c�
�+V�X��<�:}���ӛ�<��?���ԍ>1��V�>7T`� �I�ĴJ�h�A���u��ݧ�I���>ܸ>w�@�N��mS�/Vݓ9~���ީb��1wS ��M�-�ir�Z�2#��}x'�?�k���c8���>8y��y�s��h6kw4��0ѸzWo6�%n,�̾|0嗹֓\��_(P*_K��ށ=6��M�ng���yv�sq�09�����w��=����=����aۈ��z ���W��!�U0(a�z
��F��e����Qdݺ�A����'>��wŶ�^t�J0EH+*��� �h9x�~]�K��k꾹�3f-�6��K�Uh���92�Ha̜\R��o8�@:~�����g?,v���g6E��
7���%���bo�woŅ�k
	@�	�@A�{݇\���rbnaF�̱�h�`nt`aځ"

&7����ˡ��-l�T��Z'R^Z~�� ��0/���y�6'��Hֻ-5'���(�¤�e��E)L�ɤ/�J�1�H��\	��+�﯌Ck744�[d2!�	�5!G�|QC�X�z����5"��>�ƶ`rb��+V�ms��	��:R-��dGçb��/w��
f}(4�k��y�� LS��������O�k/��U�Z��A��z�.�4�a\$e։�>P���T�1FȔ���I"��UA�̇���~�!ں~���]��M�OH�M�M
\�r��ɢ�z*(g]EE��1�B����jvӤH�%�B�:�,Ԇ�n��âRF3�b�T͠k��s����׶�����S�n��\PU�JQ����Q=���2 �Y ��,�캲�і�hT�\M�ɦ�[R�H7�C(��<�)�vI���c�}j	d�U�cwE��R!$yA�~XBcu<�xlۤN]��F�V5���D*8�R��V�vת#��Q�4��J0�S_���.�2̶��A��`ڨ�6f)�l�s����(P	�F7�J
N�v�^�-�	�z!�_�T�ы*�x�")�k9f 7��di�sl���#L[t�Ay�A��I����0>�lZ�����`�^�
�6�祿�c�oZ��xYa�f�2P��'w
"[-D�����p����Em7�qqn��7����.[�[�d��W�%�Y��]v����N���ck/���T�*�I�4��?Q�����N�;U���l�3
�[R��Ge�l�B
�����va$?���A����i���2�)��:x��S��Zy�ȫ������E�(vg�Ѵ��Zma~�����U�S��ǒ���1�62�k�����5�X73s_�p��?0�j���w#r-���_x�'��|�~�奾t�쭫�;��k�J:��F�0���;&����Na�
�{;��@E��IEND�B`�liFD$63b0519e-047e-1173-a2a2-eaea0594271aunknown.png��PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-�gAMA��|�Q� cHRMz%������u0�`:�o�_�F�IDATx�̚ˏW���[�=�=���q��)�H@�Y �	���b��/ �؁ر�"A�`"�@"
�b�G�b�x�����tW�=,��֭�tAIIW�TW��w���sGT��:~{uWAAP��nu=>��E��)�R�� gcc�^��ȉ#���.e������,1��7�M����
m쌏��кO�҉\�?��y;X�w?Y�9����39�U9�={١߃"x����l�^b�_���ϻ�+Kz��Δ0�ehu�YZ[����?�'��s�~�H��|�aR��m�w��Y3��-���^�X��-H��QT=* x�3�@6�0�+��{ùu��d���E7Y�S�*Qh䭯~�UP�^ȵ@}��9V��^�_���䱋�;��6|��	��3�x�hQPxO^�QN�yFj�	�l/}��~��81#�:�ҩ�n�&�F^��QQ��s�qFj��B"`�g���o.|gV8�YiT��fF��P�j�½�<�^)��,+��GczV���,j�^�|�K�81�څ��W|%O\/�"ԏ*^=�q�5DNHp�^z��Kg�'�ڢKU	O�x�n�t6E1�QS�d�+`d҉$q���?�{��މ�o�Ԅ�R�񊊔T� �����6w�v�y��{�� �V�XkH��y%�г �s"����V�M�l�����nl4N��*�"J�s�ڥ����j�"������p�Gj�����r��&�)?��sE�v���_��A���JM�yk㠆
/3����cc���6tl���*��'���y�^�Cf@�n\G;2\"E�+�o��l|�'��;�;�x�&�T�"��9R�ҸP�igbi�g^x���>���g�����.��Z�HBhū�a)nݺ�{������XY�W�8{�$�]e�C��w�����{�?�'�ɳ1T���^��o|}�{���-�k��X����\��(�}����>g6NE�NJ�!q����s/3����5��a��ZC��,/
.�ydm�����_y�k߾��ŗ��+Ogn�N�)E���'���?lm����ךE��!��y�8VW�,/p��}O����r�������zI‘�U˃
9��+��f�@lA��+�*�֏���3Oz�,	<lLY�.q䅧(r�W�~�s��#Jy�"X/�>���w���ea���߽9L�\m	�2�%44	�.�*�0"k88�����~J/M1uA{-��#�&��4<7��$��n-�C�%���6N��W��e�j��{�\���R�r��)�K�-8�c�)�Ș2{�1[.��;;�*+�el�}���e�]�����ٹ�˥�W�}N�~���G�΢�3�zS1e,�̈��K�yX(2]ˎ��N	�A/ A'Uū%�޾���+�W�PN�\��
F�1�:�z\�k�3����5U5X�p�E}�A�7򡛔�n��U�w6�q��
�sX�8wn��Μ�aw�!ڙ�Tﯢ�[\��7u@� �1`Zσ�UA�g\��Fx��s��8�|����Z����I"�;ߒ2Zbi�#�%Z�5P��ۛ�y��cG8�q2�Z����>3m�Z��2h�4rZZ�/�C��G���A՝E���kͨ%���{���7��H�ݙWdPhg�P��w��T/���>�`8,e�(�e������:��.�c)e���hg+0g�55�ʔN�5��A=��F#��l�\��u���ħ��5��+J$EUk�)�%����X��,��'���V����bX�i��F��ɲFT�Қ��+?G�l�k����Qt4����W��p�/>"�ְ�*M��wT,3�i�N�E��P"
���nAhԴ4j�m�W�ө���s�@�6Dͫ�o�n���f��SI�Y� rљ�)���̵"�^1�AM����Qö���
69�3>���ba[�m�w�NLT��H1f)��C�	�m���dbn��g��}���+%���m��N�uZ��<D���%^PE؟o�^�з�l3��{��Tw/M�t�:3>���=����YLZFi���c�K'#mfjkҭ�?�8^t20sh��LB��c��D[��R�O����:I�s��J5��.^���:��m��T��|�l�*��P���h�F��HN)��;��dku�h�AB�
�z*A�)rχ�kc�%�7�:s��#o�[���h��b1'"g��7��;|�����_���g�� ���؇]���m>�ǿ|
���?��IEND�B`�8BIMFMsk��2#!&%')#*&##!"+(&#(&)(("# 


(.)! %& #!$  


(%,$()
#!&#$()#""!"+'$,)1..*)"#	 !# ('!!(!*'&#'(&&%! 
#!&#$()#""!"+'$)0)1./.0+/-+-.&'
	#!&#$()###!(+('&**+&(&*$)''+*"#!#!&#$(("!! !$.%)'.!(,#!+($+ !$("! !&$ '%(&!!#
')()#+("!($"#"#*!'%&(%#($'$(&#"
#!&#()%+())&&+"($&&'#*&&&*"# 

&''()**+))++*+*+****')+&)(*')*!# 
	#!'('',*!)#""!#+$*(%++ )'("# 
	#!!++%!(%%&&$+'&& ()'('* 
	#$!+,%!(%%&&$+'&& ()'('* 
	#! #"+,&$!(%%&&$+'&& ()'('* 
	#"! +,'!(%%&&$+'&& ()'('* 
	#" "!+,(!(%%&&$+'&& ()'('* 
	#!%& +,$!(%%&&$+'&& ()'('* 
	##&''+,))!(%%&&$+'&& ()'('* 
	#%%&(),)!)#""!#+$*(%++ )'("# 
	#!"!+&! !)#""!"+'$-$!**)$*&(*)#!(**+,*"!)#""!"+'$-$!**)$*&(*)#"(**+,,!)#""!"+'$-$!**)$*&(*)#!#$#+'&!)#""!"+'$-$!**)$*&(*)
'%*)*(-&  )#""""+)(#"*%!')'#!#
	&&%(0../*01(1',(+%1',)(.+0"($#
$&!#&**))*$&'&(+*+*(%%#!###(***)&!%'/,&/.%-0/(/*(%"(%***)&$  #"!%&$"*+%'+'*#(&$(#$"'& 


!'$.!'$( #,


&$"$#,
 #"!%&$)*&*'*"'*/().(%# 	 !#))&%)#&)&&'''##!%
 #"!%&$)*&*'*"'",-()/,,,)-.1-&'
	 #"!%&$)*'+'+$(#"%)! )&&&#(+/)"#! #"!%&$))%) $!%$&(, !*!&$-&%! !*)))&!%"'## !%
( (%&+,)!)*')&)&)*' "("#%*$!&%!
 #"!%&'&*+%),')+*'%&#*$&'*"'& 

&''()**+(*+*++**++**&)($*+'')*+(
	#!'('',*)*&***'!**("'*$$"'& 
	#!!"++%))$&+&)+$(### ( # %) 
	#$!"+,%))$&+&)+$(### ( # %) 
	#! #&+,&$))$&+&)+$(### ( # %) 
	#"!$+,'))$&+&)+$(### ( # %) 
	#" "%+,())$&+&)+$(### ( # %) 
	#!%&#+,$))$&+&)+$(### ( # %) 
	##&'*+,))))$&+&)+$(### ( # %) 
	#%%&(),))*&***'!**("'*$$"'& 
	#!"%+&" )*&*'*"',*$'% ,,/*# "#!(**+,*")*&*'*"',*$'% ,,/*# "#"(**+,-)*&*'*"',*$'% ,,/*# "#!#$'+'&)*&*'*"',*$'% ,,/*# $
%%*$%+,) )*&+!'*$(&#)%&#!&&#
	"%&-*00*.0/('(*0&-.*#"/,!+%(!

$&!#&**))*$&'&(+*+*'!%$!###(***)%#%)//*..%,0.+0*(%!(%*)*)&$ !""!%%%%**+#*(+&&')# (

+ )'%%"$%(


%()*
!""!$$$%)'+#*(+&&%)*0-%.##	 ")&("))*%$('!!$$
"

!""!$$$%)'+#*(+&&%)&&)-%/'*'+''*(&'
	!""!$$$%)'+#*(+')(+!$#('#(# $!#(#"#$!""!$$$%)&*")'"$%.()&&+*( '    &*))'*%$!'



%(!####&/-)&*")'*$&&(!'$("% #% 
!""!$$%()'+(**++(&)()$)&% %%
&'''()**+**+++++*++%"#"&)(&$" 	# '('&+))'+#*(+**++"*%($	# !**$)(+'**)*)%)$( !!	##!*+$)(+'**)*)%)$( !!	#  #"*+%$)(+'**)*)%)$( !!	#!! *+&)(+'**)*)%)$( !!	#! "!*+')(+'**)*)%)$( !!	# %& *+#)(+'**)*)%)$( !!	#"&''*+())(+'**)*)%)$( !!	#$%&((+()'+#*(+**++"*%($	# "!*%  )'+#*(+&&%)+ *% &"%(# # (***+)!)'+#*(+&&%)+ *% &"%(# #!(***++)'+#*(+&&%)+ *% &"%(# # #$#*&%)'+#*(+&&%)+ *% &"%(# 
%'%'&$('.+)'+#*(+&%')!##!"	"",$(/)*/011.*1/0(00,+-1+&*)$$
$&!#&**))*#&'&(+*+*("%%!##%****)%&&)/0),-#.-,&1,)&#(&***)&$ 
									
		




	



	




							


					
					
	
	
		
	
		

									
			
		
	
									
			
									
		
		

									
													
		
	
		
	
									
		

					
													
													
													
													
													
													
													
													
													
									
					
									
					
									
					
									
				
					



					
	

�������������������˺����������ƹ��������������������������������Ų��������������������������������
����Ŀ��þ��������������������Ŀ�������������������Ž���������������������
�ļ������������������Ž���������������������������˳���~z��������½�������������ʛ����yw��������þ��������������ɛ�����{y���������Ŀ�������������ɭ�����������������ſ�����������������������������ƿ�������������Ä��������uom��������ƽ�����������������º���pn���������������������¼���mk�����������������������þ��plr�����������������������¾�zrr�������������������
�®~{z�����������������������������������¨�}z������������������������������������	�������������������������à����������������������������Ÿ��������������������������������������������������������������������������������	�����������������������������������ÿ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߲�����������������������������ۗ����Ϳ�������������������������񈌍����������������p�����������¾����ًy����������������������������������������������������p��������������������������������
��������������������������������u����	�����������������������	�������������t������~�ޑ�s����
��}���������������������������r������~�������������������r������~������������p������~�������������������~o������������������������������~o������������������������
���������~n��������������������������~m�����������������������}l����~�����}l�����~��������������������}j�����~���������������������|i�����~�������{i����~���������{h����~����������������{h����~�������������������{g����}�~�~~~�~~~�~zf����~�~~}}�~}�~}�~zf����}��}|�}|}}|�}{f����}��|}�|}�|}||}}|}ze����|��|�{�|�{|�{|{�|�{|{{ye����y��k�j�k�l�m�n�o�pqxze�����l�{oz������ر�jy�����	������������������������������������������񊏐����������������������¾����ُ��������������������������������������������������	����������������������������������	�������������������������������������������������������	�����������������~������������������������x����	�~���������������������������p����~���������������������������������~�~~}~�}�����������{z{~�����t�����x�����������vu�vx������w����tssts�����������qqpqq�����x�����llnn|������}��
���deik�����z���
���]`do�������v���	�~�Y[_������|���	�~�VW]�������s�	�~�UTy������}����~�TT���~�t���~�Tj��y~�~y{|���}�S��yw�}xzr����~�`�qy�|{tzr����}�ȗwn�{�vr����}���oit�y�z�{zpyl��|��{h�tqrt���y��ztkjj�k�l�m�n�o�pqxm���l}qwy�{om�����j����������������	�������������������������������������˺���������ƹ������������������������������Ų�����������������������������������
����Ŀ��þ�����������������������Ŀ����������������������Ž���������������������
�ļ������������������Ž�����������������������������Ž���������½��������������ƿ����������þ���������������������������Ŀ�����������������������������ſ������������������������ƿ�������������������������������ƽ�������������º��������������������������¼���������������������������þ���������������������������¾�����������������������
�¿���������������������������������������¿����������������������������������	����������������������à�������������������������Ÿ�����v������������v��	v��������������������v�v������������v�BAA@�?>==�<�;�:9�v�������
�������������v�Ueed�cbaa`�_^]]\�[G�v������������
v�Qb}{a`__^�]\[[ZYY�X
D�v���������������������v�M_y}x]\[[ZZYYXWWVSKHH,�v�����������������v�I\[v}uYXXWWVUTKC:�6
�v�������������������v�FXt}s�rUTSNC8�6�v�����������������v�BU}qp�}QG=�6�v�������������������v�?R�Qnjb8�6�v��������������v�;ONNI=�6�v�������������������v�7LG=�6�v����������������v�0<�6�v��������������v��6�v�����������������v��6�v������������������v��6�v���������v��6�v����������v���v����������v�����v�����v���Ϳ���������������������������˺���������ƹ�����������������Ų�����������	������������|�|�|
�Ŀ��þ������y���y�yy����y������Ŀ������v	�vv�ߐܐv�vr������������s	�ss��ϣss�s������������p�pΡpp�p
����������������p	�pp�ދދp�pr����������½�����o��o�oo�o��o������������þ�����o�������������Ŀ������opr�������������ſ���������������������������ƿ������������������������������������ƽ�����������Ǘ����������zyvvwyz}~�������������¼��������������������������þ�����������������������œ������������|�z	�{|}�������������
�¿��������������������������������������¿�����������������������Ð��������������������������	����������������������à������������������������Ÿ���������������������������������������������������������������������������������������ÿ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߲��������������������������ۗ��Ϳ���������������������������˺���������ƹ������������������������������Ų�����������������������������������
����Ŀ��þ�����������������������Ŀ����������������������Ž���������������������
�ļ������������������Ž�����������������������������Ž���������½��������������ƿ����������þ���������������������������Ŀ�����������������������������ſ������������������������ƿ�������������������������������ƽ�������������º��������������������������¼���������������������������þ���������������������������¾�����������������������
�¿���������������������������������������¿����������������������������������	����������������������à�������������������������Ÿ�����������������������	����������������������򜜝�����������������򶧭�����������񢣤�����������������񴧭�����
��������������響��������������̯���zﱧ�����������!��e����ε��������ԭ��������������������������~N������lx����Ʀ��ý�������������������$�됡�������\������������뫦���������������������Ŭ�����߯������������骦�����������������蝽�=��ym�˓�����������試����������������������rO��K�Ԕ����������姦���������������Ʀ��Ё�z����}~�䥦���������������������������Ƨilpx}���oim}⤥�����������������i�� c���kafih{�o���u{ࣥ���������������c:u��«yf[Y]d{�u�t�`�_ޢ�������������������ba[H9@ETn_STofg���lpmܡ��������������������\;;9<;?HO\Viha^qv��lW}۠�����������YGFBqhILQXQr~��e���~^ؠ������������������������������������Ϳ����������������������������˺����������ƹ������������������������������Ų��������������������������������
����Ŀ��þ�����������������������Ŀ����������������������Ž���������������������
�ļ������������������Ž�����������������������������Ž���������½��������������ƿ����������þ���������������������������Ŀ�����������������������������ſ������������������������ƿ�������������������������������ƽ�������������º��������������������������¼����������������������������þ����������������������������¾���������������������pu�����
�¿�������������������������p�~�����������¿�����������������������p�x����������������
�����p������������������à�������p��x�����������������Ÿ�������	p���{���������������������p�������������������������������������p��������������������p����š����������������������������ÿ��p�x����¥������������������p�vv������������������������������������
p�{�~|����������������������������p�{���v����w�������������������������p�{����v���������������������������p�{�����v������������������������������p�{������|��~��������������������p�{������u�}����������������������~uutrp�z������t�u�������������������|�������z������xz������������������w�������w�����~xs����������������������w������u�����tt��������������������������ə���w����zq�������������v�����”���w�����p��������������s���������{z����r���������������{����xu����z����������
�uy���~ys������������xsu{�����������������������˺���������ƹ������������������������������Ų��������������������������������������
����Ŀ��þ�����������������������Ŀ����������������������Ž���������������������
�ļ������������������Ž�����������������������������Ž���������½��������������ƿ����������þ���������������������������Ŀ�����������������������������ſ������������������������ƿ�������������������������������ƽ������������º�������������������������¼��������������������������þ��������������������������¾������������������������
�¿�����������������������������¿������������������=�V���V=�����������<��VFHHGHHG�HIV��<��������������à��;��T��T��;����������������Ÿ�	�;TST��������TST;��������������:SRR���RS:��������������������������9��R��R��9���������8��P��������P��8��������������	�����������8OOP������
�����POO8���������7NMN��NMN7��������������������������6��M��M��6���������������4��K���������	K��4����������������������3JII�L�IJ3���������������3�H���H3����������������������1��F�����	����F��1�����������0��E��������E��0����������������������.DDC��
�������CDD.������������������-�B��������B-�����������-��A�������A��-�����������������+��?�����������?��+���������������������*�>����>*�������)�=�}�~}~}~�}~�=)��������)��;�>;��)��������'��:�~:��'����!�k�!&��Ϳ���������������������������˺���������ƹ�����������������Ų������������	�����������|�|�|
�Ŀ��þ������y�����y��y������Ŀ������v��vv�v�v�������������sߎss�s�sr�����������p�p�p�p
����������������p�p�p�p�����������½�����o�o��o�or�����������þ�����o�������������Ŀ������os��������������ſ������������r�s�rq��������������ƿ������������������������������������ƽ������������º������������������������¼��������������������������þ��������������������������¾����������������������
�¿��������������������������
���¼����������������������������	����������������������à��������������������������Ÿ�������������������������������������������������������������	�������������������	���������������������	�������������ÿ���������������������������������������������������������������������������������������������������������������������������	��������������������������������������������������������������������������������������������������������������������������������������������������������������߲��������������������������ۗ��Ϳ���������������������������˺���������ƹ�������������������Ų���������������������������������������������إĿ��þ����������������������Ŀ������������	����������Ջ����������������������������
Ҋ����������������������������ҋ��������������������������������������½�������������������Ћ�����������þ�����������������ϋ������������Ŀ����������ȋ�������������ſ�����������������������������ƿ����������������������Ļ�������������ƽ��������������ʺ����������������������������ͼ���������������������������;�������������������������
���ɾ�������������������������ſ��������������������������������������¿���������������������������¿�������������������	�����������������������������������������	����������������������������
������������	����������������������������������������������������������
�������������	�������������������	�������������ÿ��������������������������������������������ӿ���������������������������������	������������������������������������������������	�����������
�������ӽ�����������������������ƾ����������������������������������������������Ѽ�������������������������������Ӿ���������������������������������������
����������������������������	�����������������������������������������������������������������ۗ��Ϳ�����������������������������˺����������ƹ�������������������������������Ų��������������������������������
����Ŀ��þ��������������������Ŀ����������������������Ž���������������������
�ļ������������������Ž�����������������������������Ž���������½��������������ƿ����������þ��������������������������������Ŀ����������������������������������ſ�����������������������������ƿ�����������������������������������ƽ�����������������º�{wrqnu�������������������������¼~yzvtmn�������������������������þ~z���zl�������������������������¾������r����������������������
�¿������|������������������������������¿������~�������������������
�������������������	������������
�»���������à�������������������������Ÿ����������	�����������������������������������������������������������������
������������������������������������ÿ������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߲�����������������������������ۗ����Ϳ���������������������������˺���������ƹ���������������Ų���������������	���������������������
�Ŀ��þ�����������	�������������Ŀ������������������������������������������������������������������
����������������
��������������������
���������������������������½�����~��~
�~��~�~~�~~�~��~f�����������þ�����}h�x���������Ŀ�����}m�������������ſ���������������od{oxqqrp��������������ƿ��������������|x���i�������{|tqqhq�����ƽ���������������u���������oltrsh{�������������� ����������㺙��x�|rppe���������������� ������¿���آ�w��vpnjm���������������!�����������լ��}�ZZeese��������������!�����������ѳ���s��s��x�����������'�����Ê��u}��������ѷ��y�������w��������������������������̹���ϼ�����v��������'�����‚������������Ĵ���ʺ�����t����à�������!������������ȹ����ŷ�����s����Ÿ�������!������������������������r�������������!�������������������������y�������������!������������������z}����������������
�����������������������{������������ÿ���s������������������v������������������{����	��������������}�������������������w����������
���x��������������������l�������}{|~���w�������������������l����~|zyvv|���}�������������� �����������tq��|{yyz}���kv���������������������mq}�����ylm����������������������������{nojjlo|������������������������������������������������������������������������������������������������
�����������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ�����������������}�~}~}~~}�~}~�}�~	}��Ų��������{	��Ļ���������wx�w�xwx�w�x�w
����þ�������t���ߏt����tt���ߏ�t������Ŀ�������r�rr��r�r�r�r�r�������������onno�o	���oon���o
n�������������onno�o��onno�ދ�on���������������(�mmll�mm��m�mm��l�lm��lmlm�����������½������j���݇j���݇j����j������������þ������i�j�ij�������������Ŀ�����~�hg�hm��������������ſ�����������������������������ƿ������������������������������������ƽ�������������º�v������������������������¼���������������������������øj��������������������������™z��������������������ž��
��~������������������������������ij������±t���t{��������������������q����‘�����q����������
������÷�q������u�����¨|q�����à���������q��������������|q����Ÿ�������|q�������������vq�������������qv���������q����������q����������������qv���������q���������'����������q|����v�������q�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ���������������������������������	���Ų�����������	��������������������������
�Ŀ��þ���������ぁ����������Ŀ�������	~��~���������������|�||��|�������������{{�z�{�z{�{���z{�z{z{����������������{{�z�{�z{�{z�z{�z{z{�����������½������x�y�x�xx���x������������þ������w���wx�������������Ŀ�������vu�vz��������������ſ�����������������������������ƿ����������������{�uy�~|uromkkmq����ƽ����������������º������o��s�������������������¼�����n���n��������������������þ�����i��	k�����������������ń���¾�����n��	o���������������������~{z��x���������������'���������Ä��������¿�����zy|�����������������������������������������„��������������à���������„����������������Ÿ������������������������������������������������������������������������
��������������������
�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ���������������������������������	���Ų���������	�������������������������
�Ŀ��þ�����������������Ŀ�������~�����������������|�|�|�|�������������{{�z�{�z{�{�z�z{�z{z{����������������{{�z�{�z{���z�z{�z{z{�����������½������x�y�x�xxyyx�x������������þ������wx��wx�������������Ŀ�������vu�vz��������������ſ�����������������������������ƿ����������������{�uy�~|uromkkmq����ƽ����������������º������o��s�������������������¼�����n���n��������������������þ�����i��	k�����������������ń���¾�����n��	o���������������������~{z��x���������������'���������Ä��������¿�����zy|�����������������������������������������„��������������à���������„����������������Ÿ������������������������������������������������������������������������
��������������������
�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ���������������������������������	���Ų��������	��������������������������
�Ŀ��þ��������������������Ŀ�������~����~����������������|��|�|��|�|�������������{{�z�{z�{z{�{{��{�z{z{����������������{{�z�{z����{{��{�z{z{�����������½������x�y�x��x�yx�x������������þ������w�xx�w�wx�������������Ŀ�������vu�vz��������������ſ�����������������������������ƿ����������������{�uy�~|uromkkmq����ƽ����������������º������o��s�������������������¼�����n���n��������������������þ�����i��	k�����������������ń���¾�����n��	o���������������������~{z��x���������������'���������Ä��������¿�����zy|�����������������������������������������„��������������à���������„����������������Ÿ������������������������������������������������������������������������
��������������������
�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ���������������������������������	���Ų����������	������������������������
�Ŀ��þ��������������������Ŀ�������	~�������������������|�||�|�|�������������{{�z�{z�{z{�{{z�z{�z{z{����������������{{�z�{z�{z{��z�z{�z{z{�����������½������x�y�x�x���x������������þ������w�x�wx�������������Ŀ�������vu�vz��������������ſ�����������������������������ƿ����������������{�uy�~|uromkkmq����ƽ����������������º������o��s�������������������¼�����n���n��������������������þ�����i��	k�����������������ń���¾�����n��	o���������������������~{z��x���������������'���������Ä��������¿�����zy|�����������������������������������������„��������������à���������„����������������Ÿ������������������������������������������������������������������������
��������������������
�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ���������������������������������	���Ų���������	�������������������������
�Ŀ��þ���������������������Ŀ�������~��~���������������|���||�|�|�������������{{�z�{�z	���{�{z{�{�z{z{����������������{{�z�{�z	{��{�{z{�{�z{z{�����������½������x�y�x���xx�yxx�x������������þ������w�x�wx�������������Ŀ�������vu�vz��������������ſ�����������������������������ƿ����������������{�uy�~|uromkkmq����ƽ����������������º������o��s�������������������¼�����n���n��������������������þ�����i��	k�����������������ń���¾�����n��	o���������������������~{z��x���������������'���������Ä��������¿�����zy|�����������������������������������������„��������������à���������„����������������Ÿ������������������������������������������������������������������������
��������������������
�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ���������������������������������	���Ų��������	��������������������������
�Ŀ��þ���������������������������Ŀ��������~��~����������������|��|��|���|�������������{{�z!�{zz{z{{�{z{z{�zz{z{����������������{{�z"�{zz�z{{�{z{z{�zz{z{�����������½������xy��~�x�y�x������������þ������w�x�wx�������������Ŀ�������vu�vz��������������ſ�����������������������������ƿ����������������{�uy�~|uromkkmq����ƽ����������������º������o��s�������������������¼�����n���n��������������������þ�����i��	k�����������������ń���¾�����n��	o���������������������~{z��x���������������'���������Ä��������¿�����zy|�����������������������������������������„��������������à���������„����������������Ÿ������������������������������������������������������������������������
��������������������
�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ���������������������������������	���Ų������������	��������������������������
�Ŀ��þ����������撽�������������Ŀ���������~�̼�������������������|��|�ܻ���|��|��|�������������{{�z!��z���|��z��z�z{z{����������������{{�z"��䄸�z��z���z{z{�����������½������xy���x�z�{x��yy�x������������þ������w��ww�x�yxw���wx�������������Ŀ�������v�w�vz��������������ſ�����������������������������ƿ����������������{�uy�~|uromkkmq����ƽ����������������º������o��s�������������������¼�����n���n��������������������þ�����i��	k�����������������ń���¾�����n��	o���������������������~{z��x���������������'���������Ä��������¿�����zy|�����������������������������������������„��������������à���������„����������������Ÿ������������������������������������������������������������������������
��������������������
�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ�����������������}�~}~}~~}�~}~�}�~	}��Ų��������{�{	��Ļ���������wx�w�xwx�w�x�xx�w
����þ�������t�t��t�����t�t������Ŀ�������r���r�ύ�r��r�r�������������onnoo��oo�on�on�o�o
n�������������onnoo��oo�on�on�o�on����������������mmll�ߟ�m�mm�ml�l�lmlm�����������½������jއj��j�jj�kj�j�j������������þ������i�j�ij�������������Ŀ�����~�hg�hm��������������ſ�����������������������������ƿ������������������������������������ƽ�������������º�v������������������������¼���������������������������øj��������������������������™z��������������������ž��
��~������������������������������ij������±t���t{��������������������q����‘�����q����������
������÷�q������u�����¨|q�����à���������q��������������|q����Ÿ�������|q�������������vq�������������qv���������q����������q����������������qv���������q���������'����������q|����v�������q�����������������ÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߲�����������������������������ۗ���Ϳ���������������������������˺���������ƹ����������������������������������	���Ų�����������	��������������������������
�Ŀ��þ����������������������Ŀ��������
����񘘗������������������������������������������𕔕�������������������������𧒒����������������½�������������������������þ�������������������������Ŀ��������������������������ſ�����������������������������ƿ������������������������������������ƽ�������������º��������������������������¼���������������������������þ���������������������������¾�����������������������
�¿���������������������������������������¿����������������������������������	����������������������à�������������������������Ÿ��������������������������
������������������������ș���������������������������ə������
��������������ٔ����ș��������������������Ǚ�����������������������ߴ��	����ƙ�������������������ݴ����������ř���������������������ߴ����������Ù����������������������������Ù���������������������ߵ��������������������������ݷ������	��������������������������޷���������˿����������������	���ݸ������������ʾ�����������������ݸ����������ɼ��������������������ܹ���������Ȼ���������������������ܹ���������Ǻ����������ϔ���ϔǹ���������������������������������������������ŷ�����������������������Ϳ���������������������������˺���������ƹ����������������������������������	���Ų��������	������������������������
�Ŀ��þ��������������蚭�����������Ŀ���������ꘘ���笘瘗���񘐽������������������𩕕��敕������������'����𕕔�𩕕攕�𔔩攕���������������(����擧��𒒓����撧������������½����
�������������������������þ���������������������������Ŀ��������������������������ſ�����������������������������ƿ������������������������������������ƽ�������������º��������������������������¼���������������������������þ���������������������������¾�����������������������
�¿���������������������������������������¿����������������������������������	����������������������à�������������������������Ÿ��������������������������
������������������������ș���������������������������ə������
��������������ٔ����ș��������������������Ǚ�����������������������ߴ��	����ƙ�������������������ݴ����������ř���������������������ߴ����������Ù����������������������������Ù���������������������ߵ��������������������������ݷ������	��������������������������޷���������˿����������������	���ݸ������������ʾ�����������������ݸ����������ɼ��������������������ܹ���������Ȼ���������������������ܹ���������Ǻ����������ϔ���ϔǹ���������������������������������������������ŷ�����������������������Ϳ���������������������������˺���������ƹ����������������������������������	���Ų���������	����������������������
�Ŀ��þ��������������������������Ŀ���������瘘���߬����񘐽������������������𩕕𩕕�𩕐���������������敕���𔕔𔔩𔕐��������������(����擒��𒒓���𧒒�����������½�������������������������������þ�������������������������Ŀ��������������������������ſ�����������������������������ƿ������������������������������������ƽ�������������º��������������������������¼���������������������������þ���������������������������¾�����������������������
�¿���������������������������������������¿����������������������������������	����������������������à�������������������������Ÿ��������������������������
������������������������ș���������������������������ə������
��������������ٔ����ș��������������������Ǚ�����������������������ߴ��	����ƙ�������������������ݴ����������ř���������������������ߴ����������Ù����������������������������Ù���������������������ߵ��������������������������ݷ������	��������������������������޷���������˿����������������	���ݸ������������ʾ�����������������ݸ����������ɼ��������������������ܹ���������Ȼ���������������������ܹ���������Ǻ����������ϔ���ϔǹ���������������������������������������������ŷ�����������������������Ϳ���������������������������˺���������ƹ����������������������������������	���Ų��������	��������������������������
�Ŀ��þ���������蚭�����������Ŀ���������笘��������������������������������������������𔕔����������������������������撓��������������½�������
𑒒������������������þ�������������������������Ŀ��������������������������ſ�����������������������������ƿ������������������������������������ƽ�������������º��������������������������¼���������������������������þ���������������������������¾�����������������������
�¿���������������������������������������¿����������������������������������	����������������������à�������������������������Ÿ��������������������������
������������������������ș���������������������������ə������
��������������ٔ����ș��������������������Ǚ�����������������������ߴ��	����ƙ�������������������ݴ����������ř���������������������ߴ����������Ù����������������������������Ù���������������������ߵ��������������������������ݷ������	��������������������������޷���������˿����������������	���ݸ������������ʾ�����������������ݸ����������ɼ��������������������ܹ���������Ȼ���������������������ܹ���������Ǻ����������ϔ���ϔǹ���������������������������������������������ŷ�������������������������Ϳ���������������������������˺���������ƹ������������������Ų�������������������������������������������إĿ��þ����������������������������Ŀ����������
������������Ջ���������������������������
Ҋ��������������������������ҋ������������������������������������������½���������������������Ћ�����������þ���������������ϋ������������Ŀ����������ȋ�������������ſ���������������������������ƿ������������������������������������ƽ�������������º��������������������������¼����������������������������ļ�������������������������	��������������������������
����������������������������������������������³������������������	�����������������	������������	��������������à�����������������������������Ÿ�����������������������������������������������������������������������	���������������������Կ�����������������ÿ���������������������������������ҿ���������������������������������������������������������������������������������������������������������������ѿ��������������������������������������������	�������������˼�����������������������������˼�������������������������������������
�����������ƽ������������������	����������������������������������߲�����������������������������ۗ���Ϳ���������������������������ü����������̽��������������������������������Ҽ�������������ü�����̷�������������̽�����ů��������������������ª�����������������������Ҽ�����§����������������ü������̷�����ħ����������������̽������ů�����ũ������������������������ª�����ܭ��������ڽ�����������!����Ҽ������§�������������������������!����̷������ħ�������Ϭ�����������������#������ů������ũ�������־�����������%������������������ª������ƭ��������ڶ����������������§������ӳ�����������������
���������������ħ�������Ш�����������������������������ũ�������ֿ���������������˹���������ƭ��������ڷ���������������������������dz���������¤����������������������˷����������������������������������̾�����������������˹���������������÷���������������������������ƺ����������������������������������ý��������������������
���������������������������˹�����������ֿ�����������������������վ������������������������������������ս�����������
���������������ս�������������	��������ֿ���Ӿ�������������վ�����ҽ��������������������������������ս�����ѽ������������ս���н��������������������ֿ��	�Ӿ�����н�����������������������������վ�����ҽ���Ͻ������	ս������ѽ��׾������ս���н��������
�Ӿ������н�������������������ҽ���Ͻ����������������������������ѽ��׾���������������������н�����������������������н������������Ͻ�������׾��������������������������������������.������#8������#8������#�$�#8������#"�#! �#8������#"_F!�#!?csuhH# �#8������#U��Y%"�#$h����x$#8������# !��W�#$,����)#8������#z���(�#,���!8������#5��Y�#!������f8������#"����"�#h���nRh����6������#$T����=�#!�������03������# "����#1��1##$D����D1������#{���)�#!$�����#,��P0������#6��d�#"%\�8�#1��H0������#"�����!"�#$�#P����63������#U����F�!!�#����#5�����##  ��	�}��и0�#$J��9�����##|���.����?�#$3���:8�����#6�p!#���>�#>���#8�����"����!)���>�# [��!#8�����U����P$3��>�#$�����###8�����#���##D����>�#$'�����#8�����z���+P��
�6 ##$3���n�#8���������;�H>}��	�_DJ+!#.���F"�#8�����������������j ����(�#8�������vu���$�#8�������v%���#$�#8����������������kW����b�#8�����1P�ND����dJL)����bD�JL;!8������d���6!���������)4������#j���>#! ���.4������#j���># %���,4������#j���>#(���,4������#n���>#!#����˘"6������#
:����})!##" � !8������#$�"�#"!�"!"#8������#8������#8������#8������#4�����+�96J���������������������=������������7��������c0/������Q.������CM�(���5n�����!V���-o���Hlءb$
T2u��4����:3���
����������\�F����U"����
����������/���	
�����u�����������C�{������(�����*�����:���\�
U����c�6�������l�����1��Il3��}>���	��LHa����e����$�b^��!R����4j��n��	�,v��'�����#�����BT��M��%��[y!�Z=�������Q���i ����J��������B�����&�`���`��?�����c|���M�:��"�@������ɇ
���R�z��֦J���t�:������)�D2S^__]��V�ݷ���a��f`__\L$o����&��������M��V/J?4���$����A����%�����8��4w��4��t������(������y�{|uH"^�mk������*��+c|�{z~���z8�eC���a$u�~����2���	��l��*p‡}�~X����"�u���������4���i�8c��?m���6�'j���/Q��������2����s��,s�ľ��������0��,��<),�+�, .
g�`|������.��&$(-,�+)t����$������������O��)�����@q��������H����#������^��C=\O/~��_������n\�����>`������O�	i��ś��#������ڭ=g�����
�{!����+�����e���L 4������	���90���	^4d�Z��������
�O���PkJ��N���*��������X��/������AH����"�YA��C��&	oM_��):X�������
��PN����o���Q	�)�����$�8���&�`W��
G�{--���m��`������.����9����Qx���>���p����$�h.���+���C��9Q���Ra�������#�_����Up����<��:?��H�����������	��������J�p�a��.�������n������������%�9"���Y����S �����m�����XC������aH��9 �����PQT����;+#o����%y(6����&���|'
:�����T������������������������������������������������������������������������������	�������������������������������
���������������
���������������������������������������������μ����������������������ͻ��������������������������ͻ�����������������������н�����������������������������湣�����������������������������������������������������������Ȥ�����������������$�����������氣�������ž�����������������%�����������⣣�������ɰ���������������������ϣ��������������������������������������ś�������������������
�������������������ӽ����������������������������ɗ���������Į���������������͜�����������ϳ������������������ǟ���������������׵�����������͢��������������������ߧ�����������������������ţ����������������
������������������������������������
��������������������������ⴣ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߷���������������������������������߷����������������������������������������������	��������߷������������������߷��������߷����������߷��������������۷����Ϳ���������������������������������������������������������������櫞�������ı���������������ϲ��������ؽ����
���������հ��������׼��������������¦����
���ջ��������������������������������Ӹ�������������������������������޻��������������������������������������������������к��������������������������������������������������������������������˷��������������������������������������������������������������ȶ����������������������������������������������������޳��������²��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ު��������عލ������	���������������������������������������������������������������������������������ı�������ϲ���������̽����
���������հ������������������̼�����������������˻����������������������������˸���������������������������˴���������������������������������������������	��������������������������������������������������������ȣ������ÿ���������;�������ǜ������Ľ����������ν��������Ɩ�����Ź�������Œ����λ�������
��Ŋ����ƶ�����
��Ă���̹���������	���}��ȱ��������	���{{�ù���������	���yx�ƭ������������xw������������x���������������w������������Ά��������������ڽ��������������������������������������������������������������������������������ލ����������������	����������������������������������������������������������������������������������	�������������������������������
������������������
�������������������������������������������������μ����������������������ͻ��������������������������ͻ����������������������������Ͻ�������������������������������п������������������������������������������������������ý����������������	�������������������������������������
�����������������ɰ���������������������������������������������������������ź������������������
��������������������Ǽ�����������������������������½������Į����������������������������ϳ�����������������������������������׵�����������������
�������������������������������������������������������������������������������������������HGG�F�EDCC�B�A�@?��������������\nmmllkkjihhggffeddccN����������������Xk�ihhgffeeddcbaa�`J�������������Tg��eddcbbaa`__^ZROO1�������������Pdc��a``__^]\RJ@�<"������������������L`����\[UI>�<"��������������H]���XNC�<"��������������
�EZYXX}yo>�<"�����	�����������AVUUPC�<"�������߷�����=SNC�<"����������߷�����5B�<"������	�����������"�<"���������������߷�����"�<"�����������߷�����"�<"�����߷�����"�<"������߷������"�����������������������Ϳ��������������������������������������������������������������������	���������������	���������������
����������������󴢢�����������������	򟟱�江���������������	񜜯�ݾ�����ͻ�������������ݽ���
��ͻ�������������	񚚭�筚����������������������񬙙�����п�������������������������������������������������������	��������������������������������������
�������������������ɰ��������������������������ا������������������������������ź�����������������
��������������������Ǽ������������������峲�����������	�������Į���������������������������ϳ����������������������������������׵����������������������������������������������������������������������������⫫���������⫬����������������������������������������������
���⩨�����������������������������������������������������������������������������������������������������������������������������������������ᢢ��������������������������������������������߷����������������߷��������������������������������������������
��������߷�����������������߷�������߷���������߷������������۷��Ϳ������������������������������������������������������������������������	�������������������������������
������������������
�������������������������������������������������μ����������������������ͻ��������������������������ͻ����������������������������Ͻ�������������������������������п������������������������������������������������������ý����������������	�������������������������������������
�����������������ɰ���������������������������������������������������������ź������������������
��������������������Ǽ�����������������������������½������Į����������������������������ϳ�����������������������������������׵�����������������
�����������������������������������������������������������������������������������������������Ŀ��Ū��������������������
������ɶ����������������������������˵��������������������f�����̛�������ڿ�Ե���������������K������i~ѵ��ɭ���ս�������������멱�������Z���������������������������������������߲��������������������������ͺ>��ym�̝�����������������������������pN��I�Ӣ���������������	������������ҭ���ύ������������������߷�������������ť�������ņ{�����������߷������� a���hv����������������	������������}5���¯�vXi�����������ޢ��������������߷������zoUFDA\�gbt����������ܡ����������߷������xHA5HR>EJ`g���������z�ۡ����߷������pPMB��JHMUk�����������٠�����߷����������������������������Ϳ��������������������������������������������������������������������������	�������������������������������
���������������
�������������������������������������������������μ����������������������ͻ��������������������������ͻ����������������������������Ͻ�������������������������������п������������������������������������������������������ý����������������	�������������������������������������
�����������������ɰ���������������������������������������������������������ź�������������������
��������������������Ǽ������������������������������½������Į������������������������������ϳ����������������������������������׵��������⪹������������������������Ӷ�������������
�������������������������
�������ͭ�����������������������й�������������������������DZ��������������������Dz������������������Ѭ�����˰������������������������Ѩ������Ʋ�����������������Ѭ����������������������Ѭ�������ͪ���������������������Ѭ�ƺ����ϸ�������������������Ь���־��Ϳ�������������������Ь����ڹ������������������������Ϭ�����ڨ�����������߷����箨����ά�����ݦ��������������߷�����������Ǭ�����˪��������������������������ê����߯��´������	��������߷����������������Ц�������������߷���������»����֫���������߷������������­���������������߷������������µ����ǥ�������������������������������������
񨳾�����������������Ϋ�����������������������������������������������������������������������	����������������������������������
������������������
�������������������������������������������������μ����������������������ͻ��������������������������ͻ����������������������������Ͻ�������������������������������п������������������������������������������������������ý����������������	�������������������������������������
�����������������ɰ�������������������������������������������������������ź�����������������
��������������������Ǽ����������������������������½������Į������������������������ϳ����������������������������׵��E�i��iE��������	���������D��hXV�WXh��D����������C��f��f��C����������������A�e�������eA������������@�c�������c@����������������?��b������	b��?�����������>��`�����`��>�������������=�^������^
=��������������������<\\]���]\\<��������������:��Z������
����Z��:����������9��X�����X��9�������������������8�W�Z�W
8�����������������7�U���U7�����������6��R��������R��6��������������4��P�������P��4���������߷��2MNN�����������NNM2�����������������߷��1KLL������LK1�����������������/��I������I��/������
��������߷��.��H��	����H��.����������߷��,�E������E,����߷��+BCB�����������BCB+�����߷��*��A�DA��*������)��?��?��)����"���"'��Ϳ��������������������������������������������������������������������	����������������	����������������
���������������������������������韟����μ����������诜����������������������
��ͻ������������������Ͻ����������������������������������������������������������ý����������������&����������������������������������������
�������������������ɰ����������������������������������������������嵵�������������ź�����������������
��������������������Ǽ����������������������������½������Į���������������������������ϳ���������
��������������׵����������������	����������������������	����㮮����������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ࢡ�����������������������������������������������������߷��������������������߷��������������������������������������������
��������߷�����������������߷�������߷���������߷������������۷��Ϳ�����������������������������������������������������������������w�vw�vw�vwvww�����������s�s�s	�����������nonoonnonnonnoon�nn�n
onn������������j��kjj��j�j��j�����������gf�g
�ggf�g�gf��gg�ghg��μ���������b��b�b�b�cb�bc�b��ͻ�����������b�b�b�b�cb�bc�b
��ͻ������������_^�_��_�^^��__�__^_^_^��Ͻ������������\]]\[]�\]�\��]�\\�\]\\��п��������������[YZY�Z�[Z[[Z�[Z[[Z�����������������qYYXYXYX�Yi���ý����������������	��������������������������������������
����������������lo��ɰ����������������������y~�����������������������������~�����ź���������������������������������}�����Ǽ��������������������{�����½������Į�����������xy�������������ϳ���������������wz�����������������Ե����������	�w���������	�������Ե�������
wy���������������ص���������������ww�����������������ٵ�������������������xv��������������Ա�������������w����������������ײ���������w��w��������ٲ������
����|��v��������ٳ�����������
����x����w����������޵���������x����߁v��������߷����������y���ͫ~�vz��������������y�ۮ�wvvwyxvx����z�����������������	�w��vw}����
��vw}�~{�������������{vy�������ҧ�}������������ߝyw���������������������{z|���������߷���������߷v}�x�����������������߷����������vy�w�������������������������yv�x�����
��������߷���	������v�y���������߷�������}���߷���������߷������������۷��Ϳ����������������������������������������������������������������������������	�������������������������������
���������������
�����������������������������������������������μ����������������������ͻ��������������������������ͻ����������������������������Ͻ�������������������������������п�����������������������������������������������������������ý����������������
�������揗����ܑ����������������������
�������搝���⑎��ɯ�������������������������⏎�ث����������������������������⏎�ڢ���������������������&�������咜������Ꮞ�ۣ�����������������������������������ļ�½���������Į��������䐗�����������ɱ�������ϳ����%�������䑐������㛖�ޫ��ά����������׵�������������⏏�䭭�ذ�������������������������������������������������������������	�����������	�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������߷���������������������������������߷����������������������������������������������	��������߷������������������߷��������߷����������߷��������������۷����Ϳ�������������������������������������������������������������������������������������	����������������������
������������������	������������������������������������������μ�����������˽�������˽����������ͻ���������������
����������������
��ͻ����������������
������������������Ͻ�����������������
��������������������������������������������������������������������������$���������������������������������������'��������������������������������������������­���������������������������������� פ��������ϴ���������������������'������䰼�����¾���㻪�����������������������!ڪ����զ��������|~���������Į�������"����©�����ȶ��������������ϳ����'�����䮵���������̷��������������׵�������!�������������������ÿ�����������������������������˾����ÿ������������'�����⦷������������ź����¿������������'�����㣷�����������ǽ���������������������!������������ý����������������������������������������������������������Ϥ������������
��������������
������☱�������������������������������������������������������������������������������������������������ѐ����������������������������'��������ᾐ�������������������������������������������������������������������ݼ�����������������������������������ı�����������������߷�����������������ҿ������������������߷����'����������������ǿ�������������������������������������������������߷�������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������}�~}~}~~}�~}~�}�~	}�����������{	�������������wx�w�xwx�w�x�w
�������������t���ߏt����tt���ߏ�t��������������r�rr��r�r�r�r�r���Ļ��������onno�o	���oon���o
n���õ����������onno�o��onno�ދ�on���Į����������(�mmll�mm��m�mm��l�lm��lmlm���Ŭ�������������j���݇j���݇j����j���ǰ��������������i�j�ij���ɴ��������������~�hg�hp���ʽ����������������	��������������������������������������
�������������������̰������������������������ظ������������������������������ښ��������������������
���������������������������������������������᳑��½������Į�����������������ᕶ�����������ϳ������������Ѡ������ω��Պ�����������׵��������צ���������ʙ�����������������׬����݌��ē���������	�����ܲ���������������㾓����������
����Ⓡ�����������������Ѝ�����������֫�������Ї��������׫������������ܱ������⫫��ܫ������������ܫ�����܍�����⾇��������������������֥��ᾙ������������������������������������������ə�������������������������������������������������������������������������������������	���������������������������߷���������������������������������߷�������������������������	�����������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������o�popoppo�pop�o�p	o�����������m��m	�������������ij�i�jij�i�j�i
�������������f��ff����f�������������d	cdd�dd�ddc�d����������a``�a�a`��`�a
`��ͻ�����������__�^�_�^_�_~��^_�^_^_��ͻ������������__�^�_�^_�_^�^_�^_^_��Ͻ��������������\�]�\�\\���{�\��п���������������[��{�[\������������������r�ZY�Zd���ý����������������	�������������������������������������������������������������������������������֪������������������������������������ź������������������
��������������	�����Ǽ�����	����������������������������½���	������Į�������������������ɕ��ϝ�����ϳ�������������������������Η���������׵���������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������	���������������������������������������������	����������������������������������������������������������������������������ߣ�����	��������������������������������߷����������ҩ��������������Ҫ�ߪ�����߷�����������ҩ������������������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������o�popoppo�pop�o�p	o�����������m�m	�������������ij�i�jij�ij�j�i
�������������f���f�f�������������dcdd�d�d�d����������a``�a�a`a�`�a
`��ͻ�����������__�^�_�^_�_�^�^_�^_^_��ͻ������������__�^�_�^	_����^�^_�^_^_��Ͻ��������������\�]�\�\\]]\�\��п���������������[\��[\������������������r�ZY�Zd���ý����������������	�������������������������������������������������������������������������������֪������������������������������������ź������������������
��������������	�����Ǽ�����	����������������������������½���	������Į�������������������ɕ��ϝ�����ϳ�������������������������Η���������׵���������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������	���������������������������������������������	����������������������������������������������������������������������������ߣ�����	��������������������������������߷����������ҩ��������������Ҫ�ߪ�����߷�����������ҩ������������������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������o�popoppo�pop�o�p	o�����������m	�������������ij�i�jij�i�j�i
�������������f���f�gf��f�������������dc��d�d�c��d����������a``�a��a�a��`�a
`��ͻ�����������__�^�_^�_^_�__��_�^_^_��ͻ������������__�^�_^����__��_�^_^_��Ͻ��������������\�]�\��\�]\�\��п���������������[�\\�[��[\������������������r�ZY�Zd���ý����������������	�������������������������������������������������������������������������������֪������������������������������������ź������������������
��������������	�����Ǽ�����	����������������������������½���	������Į�������������������ɕ��ϝ�����ϳ�������������������������Η���������׵���������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������	���������������������������������������������	����������������������������������������������������������������������������ߣ�����	��������������������������������߷����������ҩ��������������Ҫ�ߪ�����߷�����������ҩ������������������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������o�popoppo�pop�o�p	o�����������m�m	�������������ij�i�jij�ii�j�i
�������������f��f��܄�f�������������d	c�ۂd�ۂd�d��μ���������a``�a�aa�aa`�a
`��ͻ�����������__�^�_^�_^_�__^�^_�^_^_��ͻ������������__�^�_^�_^_��~^�^_�^_^_��Ͻ��������������\�]�\�\�|��{�\��п���������������[�\�[\������������������r�ZY�Zd���ý����������������	�������������������������������������������������������������������������������֪������������������������������������ź������������������
��������������	�����Ǽ�����	����������������������������½���	������Į�������������������ɕ��ϝ�����ϳ�������������������������Η���������׵���������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������	���������������������������������������������	����������������������������������������������������������������������������ߣ�����	��������������������������������߷����������ҩ��������������Ҫ�ߪ�����߷�����������ҩ������������������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������o�popoppo�pop�o�p	o�����������m�m	�������������ij�i�jiji�i�j�i
�������������f����f��܃�f�������������dcۂ�d�ddc�d��μ���������a``�a��a`�a``�a
`��ͻ�����������__�^�_�^	~��_�_^_�_�^_^_��ͻ������������__�^�_�^	_}�_�_^_�_�^_^_��Ͻ��������������\�]�\���\\�]\\�\��п���������������[�\�[\������������������r�ZY�Zd���ý����������������	�������������������������������������������������������������������������������֪������������������������������������ź������������������
��������������	�����Ǽ�����	����������������������������½���	������Į�������������������ɕ��ϝ�����ϳ�������������������������Η���������׵���������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������	���������������������������������������������	����������������������������������������������������������������������������ߣ�����	��������������������������������߷����������ҩ��������������Ҫ�ߪ�����߷�����������ҩ������������������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������o�popoppo�pop�o�p	o�����������m	�������������ij�i�jij�i�j�i
�������������fm��m�f�ffgff��f�������������d�dcd�d�ddcdd��d����������a``aa��a��`���a
`��ͻ�����������__�^!�_^^_^__�_^_^_�^^_^_��ͻ������������__�^"�_^^�^__�_^_^_�^^_^_��Ͻ��������������\]e��d�\�]�\��п���������������[�\�[\������������������r�ZY�Zd���ý����������������	�������������������������������������������������������������������������������֪������������������������������������ź������������������
��������������	�����Ǽ�����	����������������������������½���	������Į�������������������ɕ��ϝ�����ϳ�������������������������Η���������׵���������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������	���������������������������������������������	����������������������������������������������������������������������������ߣ�����	��������������������������������߷����������ҩ��������������Ҫ�ߪ�����߷�����������ҩ������������������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������o�popoppo�pop�o�p	o�����������m���m	�������������ij�i�j��mjij�i
�������������f���z���f���z�f�������������d��c���p��d��d��d��μ���������a``aa�va�լ�dy�`�va��a
`��ͻ�����������__�^!��^ɴ��av�^��^ʴ^_^_��ͻ������������__�^"���j��^t�^���j^_^_��Ͻ��������������\]�r�\�^�_\�r]]�\��п���������������[�q[[�\�]\[�q�[\������������������r�Z�[�Zd���ý����������������	�������������������������������������������������������������������������������֪������������������������������������ź������������������
��������������	�����Ǽ�����	����������������������������½���	������Į�������������������ɕ��ϝ�����ϳ�������������������������Η���������׵���������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������	���������������������������������������������	����������������������������������������������������������������������������ߣ�����	��������������������������������߷����������ҩ��������������Ҫ�ߪ�����߷�����������ҩ������������������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������}�~}~}~~}�~}~�}�~	}�����������{�{	�������������wx�w�xwx�w�x�xx�w
�������������t�t��t�����t�t��������������r���r�ύ�r��r�r���Ļ��������onnoo��oo�on�on�o�o
n���õ����������onnoo��oo�on�on�o�on���Į�����������mmll�ߟ�m�mm�ml�l�lmlm���Ŭ�������������jއj��j�jj�kj�j�j���ǰ��������������i�j�ij���ɴ��������������~�hg�hp���ʽ����������������	��������������������������������������
�������������������̰������������������������ظ������������������������������ښ��������������������
���������������������������������������������᳑��½������Į�����������������ᕶ�����������ϳ������������Ѡ������ω��Պ�����������׵��������צ���������ʙ�����������������׬����݌��ē���������	�����ܲ���������������㾓����������
����Ⓡ�����������������Ѝ�����������֫�������Ї��������׫������������ܱ������⫫��ܫ������������ܫ�����܍�����⾇��������������������֥��ᾙ������������������������������������������ə�������������������������������������������������������������������������������������	���������������������������߷���������������������������������߷�������������������������	�����������������������������߷������������������߷��������߷����������߷��������������۷���Ϳ��������������������������������������������������������������������p�qpqpqqp�qpq�p�q	p�����������n��n	�������������jk�j�kjk�j�k�j
�������������g��g�g����g�������������d
cd�d�d�ddc�d����������a``�a	�a�`�a``�a
`��ͻ�����������__�^�_}�_^�_�_^_�_�^_^_��ͻ�������������\�]{�{\\�\��{�\��Ͻ��������������[���\�[�[\��п��������������q�YXY�Yc������������������q�YX�Yc���ý����������������	��������������������������������������
�������������������ɰ���������������������������������������������������������ź������������������
��������������������Ǽ�����������������������������½������Į����������������������������ϳ�����������������������������������׵�����������������
�������������������������������������������������ߌ�l��������������ߋ�w������������������������������j~z������~�}�|{�y�~~j������������i~j�~j~i��������������h||�L�Q	T�||h�����������g���U�c[�uug�����������e~�U�s���s
c�ssf����������������e}}�U������j�rqe������������c||�U�n�����o	b�ppc�������������a{y�U�����m�ooa����	����������`xx�W�{��{j�ll`������߷����
^xx�W{||������}l�kk_���������߷����	^wv�Xggil����l�ia�ji^�����	����������
\uu�Xxyyz���Ӄ�{	n�hh\��������������߷����[ss�X�q�r���́�r	i�ggZ����������߷����Zrq�X�l����lf�feZ����߷����Yqjq�qjfY�����߷����X�l�k�jihh�gf�ed�aW��������Wmkmjihh�gf�e�d�cac``W����
UVWVUVVUWVV�U�V�UWUWVUVVU���Ϳ��������������������������������������������������������������������p�qpqpqqp�qpq�p�q	p�����������n	������������jj�k�j�kjk�j�k�j
������������g��g���gg��g����g��g������������dd�d�ddc�d�ۂd�dc��d��d��μ���������a`�a����a�`a�``a�a�a`��ͻ����������'�__�^�__^�_�~__�^_��^^}�^_��ͻ�����������(�\\�\�]{��\�\\]|��{�\{�\{\��Ͻ������������
�[[��{��{�\�[�[�[��\��п��������������\�YX�Y��YX������������������q�YX�Yc���ý����������������	��������������������������������������
�������������������ɰ���������������������������������������������������������ź������������������
��������������������Ǽ�����������������������������½������Į����������������������������ϳ�����������������������������������׵�����������������
�������������������������������������������������ߌ�l��������������ߋ�w������������������������������j~z������~�}�|{�y�~~j������������i~j�~j~i��������������h||�L�Q	T�||h�����������g���U�c[�uug�����������e~�U�s���s
c�ssf����������������e}}�U������j�rqe������������c||�U�n�����o	b�ppc�������������a{y�U�����m�ooa����	����������`xx�W�{��{j�ll`������߷����
^xx�W{||������}l�kk_���������߷����	^wv�Xggil����l�ia�ji^�����	����������
\uu�Xxyyz���Ӄ�{	n�hh\��������������߷����[ss�X�q�r���́�r	i�ggZ����������߷����Zrq�X�l����lf�feZ����߷����Yqjq�qjfY�����߷����X�l�k�jihh�gf�ed�aW��������Wmkmjihh�gf�e�d�cac``W����
UVWVUVVUWVV�U�V�UWUWVUVVU���Ϳ��������������������������������������������������������������������p�qpqpqqp�qpq�p�q	p�����������n�n	������������jj�k�j�kjkjj�k�j
������������g������gg�g�g�g��gg��g������������dd�d�ddc�d�΂d��d�d��d��μ���������a`�a����a�`a�`a�a�`��ͻ�����������__�^�__^�_�_�^_^�^^}�^_��ͻ�����������(�\\�\�]\��\�\\]��\\�\\�{\\��Ͻ�������������[[��{��{�\�[�[�[��[[��\��п��������������q�YX�Yc������������������q�YX�Yc���ý����������������	��������������������������������������
�������������������ɰ���������������������������������������������������������ź������������������
��������������������Ǽ�����������������������������½������Į����������������������������ϳ�����������������������������������׵�����������������
�������������������������������������������������ߌ�l��������������ߋ�w������������������������������j~z������~�}�|{�y�~~j������������i~j�~j~i��������������h||�L�Q	T�||h�����������g���U�c[�uug�����������e~�U�s���s
c�ssf����������������e}}�U������j�rqe������������c||�U�n�����o	b�ppc�������������a{y�U�����m�ooa����	����������`xx�W�{��{j�ll`������߷����
^xx�W{||������}l�kk_���������߷����	^wv�Xggil����l�ia�ji^�����	����������
\uu�Xxyyz���Ӄ�{	n�hh\��������������߷����[ss�X�q�r���́�r	i�ggZ����������߷����Zrq�X�l����lf�feZ����߷����Yqjq�qjfY�����߷����X�l�k�jihh�gf�ed�aW��������Wmkmjihh�gf�e�d�cac``W����
UVWVUVVUWVV�U�V�UWUWVUVVU���Ϳ��������������������������������������������������������������������p�qpqpqqp�qpq�p�q	p�����������n	�������������jk�j�kjk�j�k�j
�������������g�g�g����gh�g�g�������������d�ۂd�d�c��d��μ���������a``�a��a����`��a
`��ͻ�����������__�^�_�^_^�_�_�_�^_^_��ͻ�������������\�]\�\�\]��\�\��Ͻ��������������[
�[\\{��[�[�[\��п��������������q�YX�Yc������������������q�YX�Yc���ý����������������	��������������������������������������
�������������������ɰ���������������������������������������������������������ź������������������
��������������������Ǽ�����������������������������½������Į����������������������������ϳ�����������������������������������׵�����������������
�������������������������������������������������ߌ�l��������������ߋ�w������������������������������j~z������~�}�|{�y�~~j������������i~j�~j~i��������������h||�L�Q	T�||h�����������g���U�c[�uug�����������e~�U�s���s
c�ssf����������������e}}�U������j�rqe������������c||�U�n�����o	b�ppc�������������a{y�U�����m�ooa����	����������`xx�W�{��{j�ll`������߷����
^xx�W{||������}l�kk_���������߷����	^wv�Xggil����l�ia�ji^�����	����������
\uu�Xxyyz���Ӄ�{	n�hh\��������������߷����[ss�X�q�r���́�r	i�ggZ����������߷����Zrq�X�l����lf�feZ����߷����Yqjq�qjfY�����߷����X�l�k�jihh�gf�ed�aW��������Wmkmjihh�gf�e�d�cac``W����
UVWVUVVUWVV�U�V�U	WUWVUVVU�����Ϳ����������������������������������������������������������������vw�vw�vwvww����������s��s	�����������
onoonnonnonnoo�n�nnonn������������j���j��j��j�j����j�����������fgg�ghg�f�gg�f�gg�fg��ghg��μ���������b���b�b�b�c��b��b��ͻ�����������b��b�b�b�c��b��b
��ͻ�����������_^_�__^��_��^��_�^_^_^��Ͻ�������������]\[���]�\�\\]��\�\\]\\��п��������������[YZY[Z�[Z[[Z�[Z[[Z������������������YXYXYX�Yi���ý����������������	��������������������������������������
�������������������ɰ��������������������������������������������������������͝ukkj���������������
������������������ɀpligg������������������
������|tpmmlk�������Į�������������րwvsrpoz�������ϳ�����������������ywtru������������׵�������������yz{��
���������������ށywxx���������������������xwwx������������������������������vvwx��������������������v�xy������������������uu�vw��������������u�v������������������
���tuututuutv����������������}�sv�wx���������������r�����������������u�rt��������������������������ߓsrsr�������������������ٙ�rv�����������������{rsqqr�����	����������������r�q���������߷����	��������ss�r	���������������߷������������s�rw��������	������������������sr��������������߷��������������������߷��������߷����������߷��������������۷���Ϳ���������������������������������������������������������������������������������������������������������������������������������������������������������������ս��������������������������Ժ��������������������������������ֻ�������������������������������ؽ���������
������������������������ս�����������������������������������Ժ��������������������!������������ֻ������罹����������������!������������ؽ�������֪������������������������ս���������������������������&���������Ժ��������������׵����������������ֻ������軽����������������������ؽ�������װ�������������������������������͵��
��������������������������������ض������������� �������������������̻������������������������������Ҿ�����������������������������������ɻ��������������������� ��������������������������������������������������������������������	���������������������������������������������������������������������������	������������������������������������
���������������
����������������������������������������������������������������������������
�������������������������	�������������������������������������������������������������������������
�����������������������������������������������������������������
��������������������������������������������������������������������������������������������������������������������������������*������5������5������ �� �5��������5������^D�=bqsgF �5������T��W"� g����v 5��������V� )����&5������y���%�)���5������2��W�������e5�����������g���mQg����4������ R����:��������-0����������/��/ A����B/������{���&� �����)��N-������4��c�"Z�5�/��F-������������ �N����40������T����D������2�������	�{��и-� H��5�����z���*����=� 0���85�����4�n ���<�<���5���������&���<�Z��5�����T����N 0��<� ����� 5����� ���B����<� $�����5�����y���(N��
�4 0���m�5���������9�F<}��	�]AH(*���D�5����������������h����%�5�������us��� �5�������u"��� �5��������������jV����`�5�����/N�LB����cHJ&����`A�HJ95������c���4���������&1������h���<���*1������h���<"���)1������h���<%���)1������m���< ����˘4������
8����|&�5������ ���5������5������5������5������1�����(�54H���������������������<������������7��������f (������C(������E7�t(���5n�����W���-Q���2nءb$
S2u��4f���(4���
��d�����\�	3�����<"����
��
|������g�/���	�������U����������`��0�{���^�o����l%�����,����B�
=��
��c�'��r����i�����$���6l3s�[>�����7Has���c����$�bB��R����%j��Q�n	�,Wĭ�����#�r�r�B=��M����[y��??��������;�s�L ��~�6z�o�����/������E�j�F›
@�����c[�r�8_
)r���.������ʊ
���<�{��֦L�{�U�<������!�D";FGGF_��V�޹���G��J�GC6o������������sM��V&7/1�����������f?����������»)��2U����$��tl����Ã"������rW�XYV5_�nM¼����"��
!IY�XZ����W:�g1���G%x��������.�����M��)pÉ~��Z�����U���
������*�����dk�8c��AL���&�)M��� S�������,�����Q��,r���ám���"������*!� !".
g�aZĺ����#��%""� !U������$bº��������8��%f����+s��u���������1����!y�������^��B.@8)��E�������N\�����>D��������:�	j��Ǟ��#�y�������*g������{�`�o�-�����f���74������	���9"���	E
$I�A��������
��:�t�8kJo�9�y�c)����`�o�?�}/�������-K�����[.��C��nMD�p�*:Až�����
�
��;N��v�Q���:	�)y�s��$�8u®%�`?G�z-!���P��E������(���{���)����QW�q�-��āp����$�h����w�bC��9Q��	��;G���y
�����#�`����>R��
��<��;.��3f���d������	��v�����4�p�`��.�g��O�������d���n%�9"���Y�����; �����N�����XC������b2��("�����99U����;+#o����$W7����'���|'
:�����U������������������������������������������������������������������������������������������������������������������������������������������	��������������������������
������������������������������������������������ֿ�������������	����������
���������������������������	��������������������������������������������$�������������������������������������������������ϴ���������������%�����������������ڽ���������������������������޻����������������������������������׫�������������������������������൭����������������� ���������������㹶�����������������������������༸�����������������������������������������������������������	�Ŀ����������������������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������	���������������������	��������������������������������������������������������������������������������
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	��������������������������������������������������������������������������������������������������������������������������������������������������������������	�����������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������
�����������������	��������������	���������������	��������������������������������������������������������������������������������	���������������������������������������������������������������������������������	���������������������������������������������������������������������������������������������������������������������������������������������������	��������������������������
��������������������������������������������������������������	������������������������������������	���������������������������
�������������������
����������������������������������������������������������'����������������������������������������������������������������������������������������������������������������������������
��������������"�������������������������������������������������������������������������������������������������������������������������������������������������������������������|����������������|��|������������|�|�������������|�HGGFEE�D�C�BA�@
?�|���������������|�\nnm�lkjiih�g
feedccM�|����������������|�Xk!jiihggf�edcbba�`J�|��������������
|�Tgh!geedc�b
a``_^[SPP1�|������|�Pece!da�`_^^\SKA�="�|��������������|�L`c!b�a]\\VJ?�="�|��������|�H^!``�!YOD�="�|�����������|�DZ�Y\XP?�="�|��������|�@WVVPD�="�|�����������|�<TND�="�|��������|�5C�="�|�������|�"�="�|����������|�"�="�|��������|�"�="�|��������|�"�="�|���������|��"�|����������|������|������|���Ϳ������������������������������������������������������������������������������������������������������������������������	��������������������	������������������������������������������	������������������������������������������������������������
ܟ�����������������
�����������������������
������������������������
�����������������������Ľ������������������������������������������������������������������������������������������������½������ӵ�����������!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�����������������������������������������������������������������������������������������������������������������������������������������	��������������������������
��������������������������������������������������������������	������������������������������������	���������������������������
�������������������
����������������������������������������������������������'����������������������������������������������������������������������������������������������������������������������������
��������������"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������l�����������������������/D�������������������������n4[-�������������������{������������ܡ��y����������������T������w���͸�����������������������m�������~rLXC�����������������c������ïf���m���D0q�����������h��F��u�Է�al����12=���������������{Y�׳W�ז���[qc[]�\������������z����虿ԙ���vx;������������������]�������ȯ9EDA>25(PbeG�����������!k�ĥk���y9�������������#>W��Ģ0Dk?ޢ�����������#*3,>NEP>�ܡ���������#47=,!CR[T7۠����������2<=A !FU]d)' "!"##!!ٟ�����������������������������������Ϳ����������������������������������������������������������������������������������������������������������������������������������������	��������������������������
��������������������������������������������������������������	������������������������������������	���������������������������
�������������������
�����������������������������������������������	�����������%������������������������������������������������������������������������������������������������������������������������������������������ !=������������������������������������`1�������������������������������a)����������������������������;E��������������������������99)��������������������������������6J-l������������������56E>������������������3�#b9�������������������0�	"Fl;���������������������.5:@t=�������������������
,&%48:C`R���������������*/�I088N8����������(/�Ɂ.5*A)�����������������&/��Ъ,<������������#/����C`���������������!/����BIU������������.����$M9x������������F�.����$X%�����������:#-&.����3BO����������#B�D0(���FG"��������������!�D8 ���,&�����������Y2�DC

+����9 z�����������CDD>

���ڎs������������


3���� w�������������:�

.����P������������
�

]�����������{#*q�������������������������������������������������������������������������������������������������������������������������������������	��������������������������
��������������������������������������������������������������	������������������������������������	���������������������������
�������������������
���������������������
��������������������������
����������&�������������������������������������������������������������������������������������������������������������������������	�����������������������������������������������������������������������F�j���jF����������������������D��iSP�Q�PQ�PRi�D�������������������C��h��h�C�������������������������C�f�����fC����������������Aede�����edeA������������������@��c������c�@�����������������>��a�������a�>���������������������=�_��������_=�����������������<\]]������]\<������������������:��Z����Z�:����������9��X�������X�9��������������8�W�[�W8�������7�U��U7���������
�6��S�������S�6�������5��Q��Q�5�������������3NON�������NON3�������1�L�����L1������/��J������J�/���������.��H���������H�.�������-�E��E-������
�+DCC��������CD+��������*��A�DA�*���������(��?��?��(�����!��!(��Ϳ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
ߴ���������������������������������������������������������
����������&���������������������������������������������������������������������������������������������������������������������������	�������������!���������������������������������������ihgf�ef�g��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>����������������������������������������������������������T7�����������������������������������������������������Ϳ���������������������������������������������������j�h��������&�'
&''&'&''&'&'&'�&'&''�������$�$�$������ ���  � �  ������������
�����������������	�������������������������������������������������������������������
�
��
�
��
�������������!

�









���������������.

�

�



�

,������������������
�����������������������
����������������IG�������
����������&��������������YDN�������������������������KOoz�������������������������������KQ`�������������������������������WGO��������	�������������!�����������kBE������������������������������@E����������������������������@O���������������������������������
@D����������������������������A@�������������������������D@i������������������������������
TUaA������������������������A��A]�������������������������������_I�y@����������������������Cr��OA��������������������lD���R@S�������������Ee���כN�@FPi��������fD��]B@@BEC@Do��sGU���������	�BUYAALv���
�TABMUNI�����������H@Dd���^MV�����������EB����������HHKU�����������������@LnD���������@E�C�������F@�Dg�������	���@WEd��������OT��������������������������Ϳ������������������������������������������������������������������������������������������������������������������������������������������	��������������������������
��������������������������������������������������������������	�������������������������������$*,,+()(+���������������������$*//.+*)*-�����������������
������$8�	��+)������������������'G���)%�������	�����������%������,G�������$%�����������������������,F�����$$��������������������������,E������$$����������������������	������+B������������������������������� ���'8����������������������������%������*'=EEBB�A9����������������������������&'('�$	��$%����������������������������������������������������������������������������������S���+&��20��&%&5���������������	������������������������������������������������������������������������
�' ��+)������������������������������������
�����������������������������������Ib`^`H���-+�����������	�����������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������������������������E�E��	�E��E��������������D����D����������������D���D������������������
��������������������
���������������������
�������������������������������������	������������������$������������s���������������������������о�ZG@FZ������Ͱ���������������'��������U?Jq�`������Մ������������������� ��^?;;TG�������û�{�����������������!��@=89VF8������FEMewu������������'������I?:8N>k�������ڔ<DS[mt�������������"��B>98R��������8H����_����������������wBIDi�������P4@ABP~����������'�����V�����������e05:=AEe�������������[���������.26:=@BK����������!��t{���������/36:>ABB�����������������������248<?ABA���������!�����������������g69C>ABD��������������䄯�gBBQ������������������CBl�������������CA���������������������cBQ������������������MA�������������������������?o����������������������������b���������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������Ϳ����������������������������������������������������������������}�~}~}~~}�~}~�}�~	}���������{���������wx�w�xwx�w�x�w�����������t���ߏt����tt���ߏ�t�����������r�rr��r�r�r�r�r�����������onno�o	���oon���o
n������������onno�o��onno�ދ�on�����������mmll�mm��m�mm��l�lm��lmlm�������������j���݇j���݇j����j��������������i�j�i	j����������������~�hg�h
s������������������
����������������������������������������������������������'�������������������Ѧ��������������������������ﱷ������������������������������������������������������������������Ǧ�����
��������������"�������������������������������������������������럨����������������������캛���������߮��������������������������ڧ������������"�ƛ��������ӭ��������ӧ�����������������������
桛����������������������������������ƛ��������������������������������ӛ�������������Ӯ��������������������������������������������߮���������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	�������������������������������������������������ぁ���������������	~��~�������������|�||��|������������{{�z�{�z{�{���z{�z{z{�����������{{�z�{�z{�{z�z{�z{z{�������������x�y�x�xx���x��������������w���w	x������������������vu�v
�������������������
�������������������������������������ʯ�����������������������'���������������������ȿ��ȯ������������������������˨��ʨ������������������������������̣��ɦ�����������������������������ת��Ӫ���������������������������������������������������������������嵴�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	�����������������������������������������������������������~���������������|�|�|�|������������{{�z�{�z{�{�z�z{�z{z{�����������{{�z�{�z{���z�z{�z{z{�������������x�y�x�xxyyx�x��������������wx��w	x������������������vu�v
�������������������
�������������������������������������ʯ�����������������������'���������������������ȿ��ȯ������������������������˨��ʨ������������������������������̣��ɦ�����������������������������ת��Ӫ���������������������������������������������������������������嵴�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	��������������������������������������������������������������~����~��������������|��|�|��|�|������������{{�z�{z�{z{�{{��{�z{z{�����������{{�z�{z����{{��{�z{z{�������������x�y�x��x�yx�x��������������w�xx�w�w	x������������������vu�v
�������������������
�������������������������������������ʯ�����������������������'���������������������ȿ��ȯ������������������������˨��ʨ������������������������������̣��ɦ�����������������������������ת��Ӫ���������������������������������������������������������������嵴�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	��������������������������������������������������������������	~�����������������|�||�|�|������������{{�z�{z�{z{�{{z�z{�z{z{�����������{{�z�{z�{z{��z�z{�z{z{�������������x�y�x�x���x��������������w�x�w	x������������������vu�v
�������������������
�������������������������������������ʯ�����������������������'���������������������ȿ��ȯ������������������������˨��ʨ������������������������������̣��ɦ�����������������������������ת��Ӫ���������������������������������������������������������������嵴�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	���������������������������������������������������������������~��~�������������|���||�|�|������������{{�z�{�z	���{�{z{�{�z{z{�����������{{�z�{�z	{��{�{z{�{�z{z{�������������x�y�x���xx�yxx�x��������������w�x�w	x������������������vu�v
�������������������
�������������������������������������ʯ�����������������������'���������������������ȿ��ȯ������������������������˨��ʨ������������������������������̣��ɦ�����������������������������ת��Ӫ���������������������������������������������������������������嵴�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	����������������������������������������������������������������������~��~��������������|��|��|���|������������{{�z�{zz{z{{�{z{z{�zz{z{�����������{{�z�{zz�z{{�{z{z{�zz{z{�������������xy��~�x�y�x��������������w�x�w	x������������������vu�v
�������������������
�������������������������������������ʯ�����������������������'���������������������ȿ��ȯ������������������������˨��ʨ������������������������������̣��ɦ�����������������������������ת��Ӫ���������������������������������������������������������������嵴�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	���������������������������������������������������撽��������������������~�̼�����������������|��|�ܻ���|��|��|������������{{�z��z���|��z��z�z{z{�����������{{�z��䄸�z��z���z{z{�������������xy���x�z�{x��yy�x��������������w��ww�x�yxw���w	x������������������v�w�v
�������������������
�������������������������������������ʯ�����������������������'���������������������ȿ��ȯ������������������������˨��ʨ������������������������������̣��ɦ�����������������������������ת��Ӫ���������������������������������������������������������������嵴�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ϳ����������������������������������������������������������������}�~}~}~~}�~}~�}�~	}���������{�{���������wx�w�xwx�w�x�xx�w�����������t�t��t�����t�t�����������r���r�ύ�r��r�r�����������onnoo��oo�on�on�o�o
n������������onnoo��oo�on�on�o�on�����������mmll�ߟ�m�mm�ml�l�lmlm�������������jއj��j�jj�kj�j�j��������������i�j�i	j����������������~�hg�h
s������������������
����������������������������������������������������������'�������������������Ѧ��������������������������ﱷ������������������������������������������������������������������Ǧ�����
��������������"�������������������������������������������������럨����������������������캛���������߮��������������������������ڧ������������"�ƛ��������ӭ��������ӧ�����������������������
桛����������������������������������ƛ��������������������������������ӛ�������������Ӯ��������������������������������������������߮���������������������������������������������������������������������������������������������������������������������������������Ϳ�������������������������������������������������������������������������������	��������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������	�����������������������
�������������������
���������������������������������������������������������'����������������������������������������������������������������������������������������������������������������������������
��������������"�������������������������������������������������������������������������������������������������������������������������������������������������������������������b�6a�����������������a�X=��������������a�X`������������4C@FH�F�D�C�B�A�@?FCC4���������������4CQ�CQC4����������������2BBJ�#$JBB4��������������1DDI%�/)I==2������0CCI%�;���;/I;;0��������������0BBI%�F��F4I::/��������/AAJ%�8�����8/J99/�����������.@@I%�F���F6I88.��������->>H&�A���A5H66-�����������,>>H&�A�����A5H66-��������	+>>H&1148���ϼ8�4.H55+�������)==G&�>@K���L�A	7G44)����������(;;G&�:Q���Q�:4G22(��������(::F&�6^�^�61F11(��������':Q:�X:Q1'���������'�6�5�4�2�10�/'����������&:6:5544�2�1�0�/.2..&������%&%%&%%&�%&%&&%���Ϳ�������������������������������������������������������������������������������	�������������������������������������������������摦������������������菏���奏収��	���������������������䌌������������������䊋��䊋��������������䉟������㈟������������
��������������������������������������������������������
�������������������
���������������������������������������������������������'����������������������������������������������������������������������������������������������������������������������������
��������������"�������������������������������������������������������������������������������������������������������������������������������������������������������������������b�6a�����������������a�X=��������������a�X`������������4C@FH�F�D�C�B�A�@?FCC4���������������4CQ�CQC4����������������2BBJ�#$JBB4��������������1DDI%�/)I==2������0CCI%�;���;/I;;0��������������0BBI%�F��F4I::/��������/AAJ%�8�����8/J99/�����������.@@I%�F���F6I88.��������->>H&�A���A5H66-�����������,>>H&�A�����A5H66-��������	+>>H&1148���ϼ8�4.H55+�������)==G&�>@K���L�A	7G44)����������(;;G&�:Q���Q�:4G22(��������(::F&�6^�^�61F11(��������':Q:�X:Q1'���������'�6�5�4�2�10�/'����������&:6:5544�2�1�0�/.2..&������%&%%&%%&�%&%&&%���Ϳ�������������������������������������������������������������������������������	�������������������������������������������������������������������叏���ܥ��줏�	������������������������������������䋋�������������������䉈��������������������������������������������������	�����������������������
�������������������
���������������������������������������������������������'����������������������������������������������������������������������������������������������������������������������������
��������������"�������������������������������������������������������������������������������������������������������������������������������������������������������������������b�6a�����������������a�X=��������������a�X`������������4C@FH�F�D�C�B�A�@?FCC4���������������4CQ�CQC4����������������2BBJ�#$JBB4��������������1DDI%�/)I==2������0CCI%�;���;/I;;0��������������0BBI%�F��F4I::/��������/AAJ%�8�����8/J99/�����������.@@I%�F���F6I88.��������->>H&�A���A5H66-�����������,>>H&�A�����A5H66-��������	+>>H&1148���ϼ8�4.H55+�������)==G&�>@K���L�A	7G44)����������(;;G&�:Q���Q�:4G22(��������(::F&�6^�^�61F11(��������':Q:�X:Q1'���������'�6�5�4�2�10�/'����������&:6:5544�2�1�0�/.2..&������%&%%&%%&�%&%&&%���Ϳ�������������������������������������������������������������������������������	����������������������������������������������摦������������������奏��������������������������������������������������������������������㈉�����������������
��������������������������	�����������������������
�������������������
���������������������������������������������������������'����������������������������������������������������������������������������������������������������������������������������
��������������"�������������������������������������������������������������������������������������������������������������������������������������������������������������������b�6a�����������������a�X=��������������a�X`������������4C@FH�F�D�C�B�A�@?FCC4���������������4CQ�CQC4����������������2BBJ�#$JBB4��������������1DDI%�/)I==2������0CCI%�;���;/I;;0��������������0BBI%�F��F4I::/��������/AAJ%�8�����8/J99/�����������.@@I%�F���F6I88.��������->>H&�A���A5H66-�����������,>>H&�A�����A5H66-��������	+>>H&1148���ϼ8�4.H55+�������)==G&�>@K���L�A	7G44)����������(;;G&�:Q���Q�:4G22(��������(::F&�6^�^�61F11(��������':Q:�X:Q1'���������'�6�5�4�2�10�/'����������&:6:5544�2�1�0�/.2..&������%&%%&%%&�%&%&&%�����Ϳ����������������������������������������������������h��������&�'
&''&'&''&'&'&'�&'&''��������$��$������� ���   � ����������������������������������
��������������������
�������������������
���������������������������������������
������
�

��
������������"












����������������
��

�



�

,������������������
����������������������������������������������������������'���������������������έ��������������������������\RTU������������������������������XGJMNN���������������������������I@ACFHJ����������������"��������������N@?@@ADS������������������������h@@??D�����������������������������@C���������������������������O�@A���������������������������@??@y����������������������Z�?@�������������������������?@�BD��������������x�?A�����������������������A�?A������������������?A������������������Q�?D�EF����������������?�����������E�?B������������������v�?�����������>�?F���������������N>?�>�����������?�>x���������������??�>w���������?�>E���������>?`�������������������������������������������������Ϳ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������(����������������������������������������������������������������������������������������������������������
��������������������������� ��������������������������������������������������������������������������������������
�����������������
��������������������������������������������"������������������������������������������������������������������������	�������������������������������������������������������������������������������������������������������������������������������������������������!��������������������������������	�����������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,������ 6������ 6������ !� �!� 6������ � � 6������ _F� >dsthH!� 6������ U��Y#� !h����x! 6������ ��X� !+����' 6������ z���&� +���6������ 4��Y� ������f6������ ����� h���nRh����5������ !T����<� ��������/1������ ���� 0��0  !B����D0������ |���'� !����� +��O/������ 5��d� #[�6� 0��G/������ ������ !� O����51������ U����F�� ���� 4�����  ��	�|��ѹ/� !I��6�����  {���,����>� !1���96����� 5�p!���=� =��� 6���������'���=� [�� 6�����U����O!1��=� !�����!  6�����!���  D����=� !&����� 6�����z���)O��
�5  !1���n� 6���������:�H=~��	�_BI) ,���F� 6�����������������i����&� 6�������vt���!� 6�������v#��� !� 6���������������kX���b� 6�����0O�ND����dIL'����bB�IL:6������d���5����������'2������ i���= ���,2������ i���= #���+2������ i���= &���+2������ n���= !����̙5������ 9����}'  �6������ !�� � 6������ 6������ 6������ 6������ 2�����)�65I���������������������<������������7������������i������-������H
,���5n���^���0	tءb$
S2u��;:���
��
��\�	$��������/���	����
���{���#��������c�
f�����l3>���Ha_����$�j
R��j��
�,�����#��BM��		[x

E������� !��"�����

	�

��C�����c�	������	�ʏ� }��֦N��B������!�D		V������s������M��[-���
�;�������2��t�!��
�

^�r����
@�l	-������)�	��)pŏ����c�����
���s�8c��J�/
Z�������%�	
��,s����Ť
��	�/
g�e�	��'"	���(����"w��������	^��D	����`�����=�� �i��ɤ��# �k������
��2�����i�
		6������	���;	�

��������kJ�*�����0��	�
P����"�`	C
	oM );������N�� �	�*#��$�8&�`G�{,~�������!"�	����Qp�����j	�C��9Q�� �����#�e��<��:
������	��
�p�`��.�
�������*�9"���Y�
#��������XC������h&�����
Z����;+#n����%>����+���|'
:�����Y�����������������������������������������r���G���"����������������������������������������������������������������������������������������������������������������!�*��2@AABCE�@2�����������������%�������������`��*������������������������
�������
��������	��������������������������������������������������������������������������'e�܂$��	$99:;;=�9=;;:99$���������������������%�����������`��*�������*���i���i���k���|��	��������������$�����Z�������������������������M�������������������������e����Q��0 �$99:;;=�9	=;;:99$&��������������������������������������r���G���"��������������������������������������������������������������������������������������������������������������*���@22@AABCE�@2����������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2��������������������������������r���G���"��������������������������������������������������������������������������������������������������������������*���@22@AABCE�@2��������������������������������r���G���"�����������������������������������������������������������������������������������������B�������3����������������������*�'�����H�@^J�@2����J��������������������������������r���G���"�����������������������������������������������������������������������*��@22@AABCE�@2����������������������������r��G��"������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"�����������������������������	�������������������������������������������������!�*�2@AABCE�@2���������������������������������r���G���"����������������������������������������������������������������������������������������������������������������!�*��2@AABCE�@2���������������������������r��G��"��������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"���������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2����������������������������r��G��"�������������������������������������������������8����8���������������������������������������������������������*���@22@AABCE�@2����������������������������r��G��"�������������������������������������������������8����8���������������������������������������������������������*���@22@AABCE�@2����������������������������r��G��"�������������������������������������������������8����8���������������������������������������������������������*���@22@AABCE�@2����������������������������r��G��"�������������������������������������������������8����8���������������������������������������������������������*��p�@22@AABCE�@2���������������������������r��G��"��������������������������������������������������������������������������������������������������������!�*�2@AABCE�@2������9������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������$�"����Cri,�6�����F��k��G�4����1u�X��`��/�v����`�'����[���Z1@���y;/X����x��j��������}������{��0�������U��\�����[�����&��������T��W���8��[���I�������,������k���1�!���QR���#�����������V#���3�Q���&�3���{	�����R��!���^�����!�����!�����M��9����F��������f��A�����:������!���s���������2���ި���������������������������������lib/img/src/toolbar.xcf000064400000150273147361034410011034 0ustar00gimp xcf v003B�B��gimp-image-grid(style solid)
(fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
(xspacing 10.000000)
(yspacing 10.000000)
(spacing-unit inches)
(xoffset 0.000000)
(yoffset 0.000000)
(offset-unit inches)
��
��
T!�$�(�	text.png�	

�wh|���4
��7�����=�D��D��B�EE��EE��E�E=��=E�EFGF?7��7?FGF�EFGF44��44FGF�EFG>44��44>GF� ,;88���88�D<� " 00=
��
=00$� " #$��$#� " #��#���������������x;:
:�;�z@����@�|@�{MM�M�{�@�~B�C��C��C��C�B�EE�|@��@|EE�����}y<��<y}������w�;��;ww�����|ww;��;ww|���dmxyy�=��=yy�x�dfdqq{?��?{qqf_�dfdgh9B��B9hg__�dfdg11Z��Z11g__�//�a/������/a__�-�--��**\������
�������������������������������������������������������������򩻻����������못�����������쪻������������쨺�͵���������륹�������������죠��������������ޖ�������������󐥣�������������EZ
Z�Eb����bkɬ�ܬ�kt�vv��vv�t]|8k��k8|]�`��`
�[��[
�]��]
�e��e
�p��p	� {��{ �Ql����lQ��oǾ����o�mvv�]
resize_old�	

-q���vtt�v�vttv��vn�nv��vo���oillio���oee���eeee���eeaZ_���__���_ZaUS��SS��SU�KLL�KKLL�K"�FDD�FFDD�F�7=��==��=74(7X��77~�X7(411U�U1111UzU11+ujK+(--(+Kjl+"yo"#�#"il"����������������������ּ�������켴���д�����д����������̮��������訥�����������"�����������������ۑ������ٌ��۳������۱�����ױ����Я��������҂}��}}}���}zyy�z�zyyz�������������������������������������������������������������������"��������������������������¾����߽����߽����޹����������������������������������������3�3�������3��3��������������̙3�������3�3������3���������"����������3������3�3�������3�����������������3��3������3�3��̙��������resize�	

v
�
��2<FHH�E:�/4^v���rW3�,d�zYN^�S3��)Bop345;wi7s}s!Eo@'|y-Mv2L^�l;=g(FG@B7t+U|�r�DX>x|*8^#M[�kE4:?,�WG9l�o<:_6B* j�opH1c03j�oxo;oj�p{�F�;�j�kpoo�krls�l�������}�uljj�l[|^s�t�MUL�����������������İ���Ĭ���Ѫ������������������{����������x��n��yrsx~G����㕰�����pdo��uy��st��h�a�b��k��U����Z���~Z���n���\���bP����Cr�Zuv{`N�␆�s�kBBAHN�⌐����������������������������y�x�����������������������������������������������������д������®������Ǽ�������ᵲ��辴������ҫ���ٴ�������ۢ��Ħ����������������塻����������������������ſ���������ž����ط��������"~�Բm�S�����6�=�����������C\��m~����?Z\�~���뀁`3������c�����������~x��.��������!���'s\�����%����'��������7��}����������������@����x�~
��~resize-rotate�	

Q����92<FHH�E:�/4^v���rW3,d�zYN^�S3)Bop345;wi7!Eo@'�-Mv2=g& 7t+0S*8^#5:WG9	$+6B* 03����������׍������İ����Ĭ���Ѫ�������������{���������q��zstG��h��~hodo��u_s��]\Y�b��kTU���vQ���~ZNI���U���bPXDCc}Ouv{`NR?9NBBAHN�����������������������������������������������п��������ǵ��ij����辫��੨���ٴ����潞��Ħ�����������ț���������������"~�Բm�S����6=����������C\��m��?�\���#��
���!��c�x��y���~.���[�����!1\cR�����%..������	resize-crop�	

.����s}s�|yL^�l@FF�GSxU|�r����|GM[�kGJJNG�Fl�o݆N�Fj�ovyJ�Fj�oxvJ�Fj�p{�G�@j�kpoo�krlsl�������}uljj�l[|^st�MUL�������x��nrr�s|���㕴���sy��tvvxs�r��ݑx�r����v�r����v�r�␆�t�n�⌐�������������������������y�x��������������������������������������ݔ�������������������������������ſ�������ž����ط�������~���Z~���x����G����������x���h����%R�����%����7��x��������������@����x�~��~
listview_old�	

�,�������
�����������������׉������������������������������������
����������������y��
��yq�������������qm��
�mc������������cO��
�O�����
������������������ى�����������������������������������
�����������������y��
��yq������������qm��
�mc������������cO��
�O�����
�܊���������������߉����������������������j�������������
�����������������y��
��yq�������������qm��
�mc������������cO��
�O��"Yf
f�Y"[�
���[i���fg���gh���hj���jl���ln���nq���qs���sv���v{���{g���g	
�	
iconsvew_old�	

�+�������
�����������������׉������������������̐������������������������������y��
��yq����������qm�������������mc��������������cO��
�O�����
������������������ى������������������̐������������������������������y��
��yq�����������qm�������������mc��������������cO��
�O�����
�܊���������������߉�����������������������j�������������������������������y��
��yq��j������qm�������������mc��������������cO��
�O��"Yf
f�Y"[�
���[i���fg���gh���hj���jl���ln���nq���qs���sv���v{���{g���g	
�	
listview.png�	

�)	-�	�������������������xx�����ġ^	�^��׿^�^���^�^��^xx�^��׾^N	�N����N�N����N�N����Nxx�N����NN	j	�j��j�j���j�j����j���j����j�	����������������������z	�z��̸z�z����z�z����z���z��̸zz	J	�J���J�J����J�J�kc�J���JzqrgJv	�v����v�v����v�v����v���v���v�	����������ӵ�����ӵ���������	�	�	�	�
�	�	�	�	�
�	�	�	�	�
�	�	smallicons.png�	

�(�����NN�ttߡ���N��Nt��t��ˡN��Nt��t���NN�tt^����NN�^��^����N��N^��^��ˡN��N^^����NNN�tt�^^�N��Nt��t^��^N��Nt��t^��^NN�tt�^^j�zz����j��jz��z���j��jz��z����jj�zz�����jj�zzߜ��j��jz��z���j��jz��z���jj�zzz�������z��z������z��z�������zz������J�������J��J�������JohJ�������JJ������v�JJ����v��vJ��J����v��vJohJ����vv�JJ�������vvߵ������v��v�������v��v�����vv������������������������������������������������������������������������������������	hide.svg�	

�'"�"�"�����
�������
�ŭ���
���������ꮮ�������ꮮ���カ������ꮮ����ˢh}����ꮮ����^G{����ꮮ����GG�����ꮮ�����������ꮮ��ս�����ꮮ������ꮮ��
�ʮ���������
������
������
������������������������������������������ş���������ܻ������������ܶ������������ݵ�������������������������������
���������������
��	��������������������������������������������������������������������������|�
��|�������
�������
��
��
��
��
��
��
��
��
���L���Lblue-folder-export.png�	

�%�%�%�����������������������������������������������������x�󡆉�����wq���������������������vjc�������]������fX������������������O
PO�ӱ����OO��˯����OON��ɬ����NNM��ƪ����MML��ç����KIGKK������EEAJJè�þ�������AAHH�����������>GG������������;;FF������88;DD������zA>@2CC�����CC20@�����@0�;�����;�)66�)�vw
w�vww������wwv�������vv��ۿ����vvu��ڽ����uu��ټ����tsrtt�׺�����qqossۿ����ȼ����ooss�����������mssr����¶����kkqq������iikpp������nmnTpp����ppTSn����nS�k����k�Oii�O�Uqq�U�)r���r�t�	��t�v�	��v�x�	��x�z�	��|�|�	���>~�
���B-��
�����	���G�����J������������������	�����	,�����,�toolbar.png�	

)��)�ЋЗУЯ�*4k?�KX�e�n�z�]���d�����
���H�/44/����-7��7-����$6����6����#1�����Ǒծ�"/�������Ō��-�������!(���������(!+H����������H+����������ު��������������������������ۚ��������������������������nss^CFFC^ssn�������������ï���������ƿ����ʻ�����¼����������dz�¼�����������������������������������������������������������������
��������������������������l�tvv�z�W>����	�����Լ��U�ý���Ǵ�3�������zvj�������m���ȹ������¹������ƶ������������ɷ�����������KF������������������������������������������������������������������������������������������������������������������������������RZR������������������㿃˓����ˤ�}s��������v����������]����դ���]����������ww��������������񉵽�����󐮱Y�����������������������

��������������ɀ�������������������������������������������������������	������
������������������������	��������������������Ё��������m>����	���������������ԭf�����˟��������������ϱ����	��Ƚ���������������������_F��������ܡ�������؞������ԯ��͛��ל���Ѫ�Ī��Ǘ󐔫����̷��������ø��󈍫����³������–�ǖ����ļ�}�ǁ��ā�vsrqr��sqrsv�bd�gb�]kkQ��������s�w�����ھ��l�����ں{W���Z��Z�ڶt����Z��Z��ڱ�������������������EE��������c��c����w���T������w�r���^�����r�k���e|�����k�_���mttm���_ ���������������������������������������������
�����
�����	�����	������
�����	������
�������������������󢻳������>�����������������������������������	������	������������	��������������xF�GFF�'F��F'�<@@B@�~@B@@<�@�U@�v?S}�@�?qy}R�nR|yq?�18TayysyaT81�92cppc29�)0Tajjoj_O0)�1nigB^oBghg1�'d\;'\i';\d'�!`e!�
`[
�<��<>R>�>����>j�j�?�������o�A����t�C������E�	��EF�
���Fʇf���f��h���h�j���j�l���l�o���o�r���r�u���u�y���y��̀������̙�9�����������
��������������������������������������������������������^>�������������`C�
��M����.�������f��������]�	���3887�H��f�����f̳M���M��f���������������������>�������>�H����H�>�������>�������������ٷ�������f̳M����M��f�����f��H������������߼����ݼ��ݼ���ڹ���߼��Խ��Խ��ռ��ռ��ռ��ռ�������������������ϼ�������˼���������r�w����������u�t�������Ͼ��;��&�v����t���������������������o���{��{���]���p��NLLSh�{��N��M��Ob�p�������V\�x^U�����U]Q�FkhZ���Zhh$�gnn]�]nn_�ettaattc�5euue56���������������������������������������������������������������������������������������������������������������������������Y����������3�<�����lB�#	
*�����~~
�w~�~	�wt�t�loɰ�oo�qaiǧ���������idĥ�梖������dPX�����������X�NJ�t�JJ�K�=D��D
�/:�:�'((�!���������������������������������������������������������������������������������Պ��ʐ��ɚo�n�݋��ʐ���o�o��ɒ��˕�ۛ�����������u������u�|�����ë�|�|��¾�����|�z������������z~������������~{������񒐐��{x���ݓ����xv���������vs���������sl���������lRs�������sR�ds��������sd�Xd������dX�1QOPPOQ1&��������q����������󜭸���������������󢿰�������󵪰�������͵�������������������������������������󢖏��������ϓ���������Ԕ����������ų�����&�����������
H��~��,�*�������
�����	��������������������������������������Ѱ�����������Ҫ�����ڣ�����۟
���ݙ�����������������������������������������������������������������������������������������ucZ__td�Xu�bY__u^�_u�@f^;?fdu�����������������ѿ����������������������ݭ���������ҭ���������������������������������������������������������������������������������������������þ������ն����������&�7RQ:�:l��i*�KkE?>G#hu@�1d	��f�^`&S:��Ja2BKNbׂaTP#>��P>^9-��FBc �#f�?E�V�PUE���HMb��+�X���
�L�������
����	��������������������������������������������������������������
������������p��p�_����_�O�����p����__���������������������2�
��2�d����d�H����ڳH�H������H������e����e������������������������h����h������J������J�K�����K�k��åk%� ����n�G������,�_�����9�)����������������q�����������������������������������������������V�����2����z�����m�3����m6'	03-193*%�\��\��
�\��	�\����\����\�	����
���\�	����\�����\���
�\���\���\�'���~���~�~w
�t��tw�qoo����ol�i�����������iad���㢖������dX��������zz�XPKJJ��t�JN�D{�D=	�::/
(�'�!+�wvw
�lo�ol�io���oi�gh�����hg�^d�����d^�P^���������^P�UTT��v�TT�U�L�r�L	�D�l�D	�<xgv<	�1qcn1	�+ncj+	�"lik"	��'􀁃��������x����ù������z���������~�~+v����{x�����xG���rurv���vg���kin����nh��d�fee�fZ__�Z�Z��XS����SNBu��0J���JJ>I��r=B��{�gB;e�x�A�3�3�||�xx�@='�$0bv�~u_3�!
�022�0�/ŭ������/�0��˵����0�#���֔���#�*���Ԏ���*�!���҅���!� ���т��� �&�������&�!����|���!�����w�����
����s����
����p�����ſ��q����w���
�T�'��������Ŀ
����¼�������꼷�����������淴������������ٰ�����������֪������ڣ����۟�	��ۙ�
������+����
���켷�����칷������贱�����䯯���������֪������ȴƣ�����ǷŜ	��ȼǕ	����ʑ	����͇	����Ђ	�~���~	�ayy�a'������ɺ���������������������������������������������ڼ���������Ƴ��������ϴ��������������Η����ݦ����ť���٣����к�����ִ�����נU�ݗ�������֞���������ϵ��������������������������������о���������������������������������������}��������߄�����ߧ��ހ����ޣ����}���ܡ���}�y���۞���y�v���ڟ���vm�q����qrr�q�ow��q�gor'���������
���������������������������������������������������������������	����
�����+����
�������������������������������������������������������	������	������	������	������	������	������'��������������������������������������������������������������������������������������������������ޭ�����������ʀ���������ϭ�����������������������������������������������������������������������������������������������������������������������������������������ꞡ�����靛�������њ����'��\�\���\
����\�������\��	���\�
����	���\������\����\	���\
�\��\+�\�\
�\��\�\����\�\����\�\����\�\����\������������	�����	�����	�����	�����	������(3����3-���M��̦l\��"x���㿅���_��������Cm���������Nm��J�����%Tlx2\���� ?@3����������3@? ����\2xlT%���̔J��mN��������mC�����ִ�_�����Ϧx"�\l���M�Uqq�U�r���r�t���t�v���v�y���y�{���{�~���~-���	������	������	������	������	���������6�|�����|�G��֩�*l��022�0�/����/�*����*�#����#�(����(�!����!�)����)� ���ѽ �&���̻��&�g����ʰ��!�q�����ɮ��vtm�~~����ǫ��
o���z���Ť��kje�ww����ß���`�t��Ę��PMF�w~~�j�|�������||�x���������xk�~������׹��z�y����������y�{����������{�{����������{�x����������x�{����������{�|�������⟍u�}�������㉵w�w�����案��rtv}�����熤��o{�����瞃��mjk|�������쁘f�xzz�`UY�\g\�U�&Hdt��m���������m�l�������l�o��������o�q��뱝�����q�i�׸�����i�h���������h�i�������i�g���������g�b����}�����b�^���������^�^����������^�|��ž������y�@����������F�w~~�j�{������{k�w�������w|�z���ǻ���}~j�{���������{k�|����������w|}�������ڹ��zz�����������{|�����������|w�����������}}�����������z{�����������|gzz�|��������w�y��������}�{��������{�gzz�e������������������������������������������������т}��������߄���������ހ���������܀���罽������}������ڽ��~���ᴴ���ع��y��߰��ڳ�to����rr�q�������������߱��������������������������������������������������������������������������������������ʸ��������������������綹����������������˼�ᬭ��������ߥ����������U�)Hdt��������������������������������������������������������������������������ߣ����������������������������|��ž������y�@����������F�������������ߴ�������������������������������ߴ����������������������ͫ�������������������������������������������������������������������������������������������������������������������������������������������������ޤ�����������o���������`�}�������XX\�zz�������U���w�������MKR�tt��������R}s����螙�CA\����������������������������������������������������������������������������������������������������������������������h�������fXX��������U������~}�_KM�����|}Z����uPO�����U�)Hdt�������������������������������������������������������������������������������������|��ž������y�@���������F����������������������������������������������������������������޶�������������������������������������������������������������������������������������������Uqq�U�r���r�t���t�v���v�x���x�z���z�|���|�~���~-���	�����	�����	������	����������	��������7���ܦ��|�Mgg�$�i���i%�l���l&�o�����r���r�v���v�z���z����������������������������̙��
��������̙������������$f$�Mffo�����xpP�[���������[�\����������\�^���������^�_��������_�a��������a�b����������b�d�������d�f��������f�h���������h�j����������j�l���������l�e���i	k���m	,o�����o,Mgg�$�j���j&�m���m'�q����g$�v���j&�{�	��m'��
�����
��v��
��{��
�����
�����
�����������������������������������w�w���M�g�g��M�O�\�\��O�O�LL��O�R�q1q�R�R�z�R�N�1�y��������y�u�^��F�u��^���F��������x���x#�U����U󻾾����Ʋ�������������������������������¼���DZ����������բ�����������������Ѳ�������V����Ĩ�������}����ŧ�������z����������o����������f������������U���������f,.��������d||�d�{s�x�m�r��k
�p���_	�i����h�g����f�Z����^�V���~S�N���|L�M����\MM�J�=��A�+�i.�L�&a~����-�w�P�F�w~~�j�{������{k�w~�������y|�{�����ϼ���zw~���������y{�����ϼ�����{y����������|z����ݹ�����~y����������z{����������}|����������}~���������z|gz���������{�}��������z|g�}��������{�g||�g��������w�w���M�g�g��M�O�\�\��O�O�LL��O�R�q1q�R�!R�z�R!�����}�������������LJ���ӵ����ݡ�ك��ه�ܰ��ݡ��|~~|Շ�ԅ{Շ�xs�sxӇ�{k��n[�[nҦkljJ�Mjl�+����+�}~~l���l~~}�{å�������{�{����������{�v�������~�t���������݋��q����������o������������}l�������������g�������������c����������^�������������[�����������~T���������U\c=�������=�))��{s�x�m�r��k
�p���_	�i����h�g����f�Z����^�V���~S�N���|L�M����\MM�J�=��A�+�i.�L�&a~����-�w�P�F�������������ߴ�󰵶�������������������ͩ��������������������������������������������ͬ�������������������������������������������������������������������������������������������������w�w���M�g�g��M�O�\�\��O�O�LL��O�R�q1q�R�LR�z�RL���ͮ������ɢ����޷�����Ȣ��ɹ󳵳����ɹ������������������ʠ3��{�|��3�+����+�!&&���&&!�&�w������w�&��g[dmnh`i����������=�����������p�������������||w��������}�sg]}��������~a^^}���������ucc�|���������ugg�y���������tii�t������~�tmm�jff�Bbc�vsqppon�{s�x�m�r��k
�p���_	�i����h�g����f�Z����^�V���~S�N���|L�M����\MM�J�=��A�+�i.�L�&a~����-�w�P�F������������������������������������������������������������������������������޶��������������������������������������������¥�������������������¥����������������M/�/Mz�/�/zz�z�z/�/z�z�/z�z/�/z�z/�/z�z//z�z/�/z�zTz�z/�/z���z/�P����˭��Py�������yV�ν��������V��ν��WW���������Y�Y�������Z�Z��A��r-%")qƚA��RggR��������̙��������������������%��	��j&�
��|�
��n�
��q�
��s�
��v�
��{����d����	,����,�M*�h{*�i�|+
�k��}+	�m���,�o����-�q����.�s����.�u����/�x����xx�Z�z���/�~�_�o���-���1�c/S�q�	(����'_�S
�Mgg�$�j���j&�Mg����n'�j����Mg����xj�
��~n�
���s�
���x�
���~�
�����
��������"����������"������+������"�w~~�j�|�������||�x���������xk�~������׹��z�y����������y�{����������{�{����������{�x������������{���������ݙ��|����������x�}���������`�w��������̎�}���������}�{���������{�|���������|�czz���zz�cE��ΰzz�΅�h���llm��h�{���s~����{����{�``�{���}���������}�l��˕������l��ϻ���ϊg�����蝝�󰔤���ߔ�䔴󰉜���ى�މ��{�{������{���nn���������������������J�����������������NN|DC�����P\\�����NNCF	�MD��S��������������߱������������������������������������������������������������������wh����������找c�����������FP�����������x�������쿤����������������������������������������E��ΰzz�΅�h���llm��h�{���s~����{����{�aa�{���}���������}�l��˕������l��ϻ���ϊg�����蝝�󰔤���ߔ�䔴󰉜���ډ�߉��{�{������{���nn������������������������������������������뿸������������������嶮�D���D
�®���������������������������������������������������������������������������������-$���������핵����������=�������؋��������ي��������ً���������狵������������������_�����E��ΰzz�΅�h���mm���h�{���x�����{����{�ii�{���}���������}�l��˛�ƛ���l��ϻ���ϊg�����靝�󰔤���└甴󰉜���މ�㉰�{�{������{���nn���������������������z���������m�j���������xx�vie������v���G�������rr�occF�oZmF
��j����������
�����Y����������	�������������	��������d�����
�����������
�Mgg�$�i���i%�l���l&�o�����r���r�v���v�z���z������@���������	���F�����.������������������������	,���������,2�N���ȶ�N�O������شOq������qH�������H��
��РA�������AZ�����Z9�����ج�9&8Sq����qS8'
�
?����f��<������>��
�����
�����
�����
�����
�����
�����
����
����
����
����
�����������������蝝�󰔤���ߔ�䔴󰉜���ى�މ��{�{������{���nn����������������������������������������������B�a�������_��������������������������{��{�������yNHSLLSr��{ubN��MOO�c��pZVS��SVV�b��^]]Z��Z]]�d�xhh�`�`hh�xnn�f��fnn�ottat�h�nxx�n"���	��X�����������X������������ͬ�ۼ�ż۵�ͯ󰾺���Űͬ������۪�ͯ�Ը�ŸԤͬ����Ŗ�͛�||�uXP7
�qT������������ͬ��ͯ�ͬ���p���	��X�����������X������������ͬ�ۼ�ż۵�ͯ󰾺���Űͬ������۪�ͯ�Ը�ŸԤͬ����Ŗ�͛�||�uX�
�qT�����������NN|D	�P\\	��NNC�MD��S������蝝�󰔤���ߔ�䔴󰉜���ډ�߉��{�{������{���nn������������������������������������������������������	D#�t�������t������Ţ��ž�������ǹ���������€}ò����������}|���먒������|z������䒕��zv������陛��vr����������ro��������ol�����������li�������i[�������[�=PSS�P=���	��X�����������Xg||�g�y����»yͬ�r���Ŏ�r�ͯ�m������mͬ�g�����g�ͯ�^���Ŋ�^ͬ�N��}��N�͛�F))�6XP7
�qT������������ͬ��ͯ�ͬ���p���	��X�����������Xg||�g�y����»yͬ�r���Ŏ�r�ͯ�m������mͬ�g�����g�ͯ�^���Ŋ�^ͬ�N��}��N�͛�F))�6X���
�qT��������������뿪��������嶤�	����®������靝�󰔤���└甴󰉜���މ�㉰�{�{������{���nn������������������������������������������������������	F#�����ѹ�������������������������������������������������������������������������������������������������������������������̫#�������#���	��X����������X&&��������ͬ��]��]��ͯ�c\NQ`hͬ�������ͯ�~U��U~�ͬ�cTEHYd�͛�5�XP7
�qT�����������ͬ��ͯ�ͬ���p���	��X����������X&&��������ͬ��]��]��ͯ�c\NQ`hͬ�������ͯ�~U��U~�ͬ�cTEHYd�͛�5�X1*&
�qT�������g�g���xx�vF
�v�����rr�oA
	�oZm��j�����f��<������>��
�����
�����
�����
�����
�����
�����
����
����
����
����
��������
��j�����jk������k���������
�����
�����
�����
�����
����
����
����
����������p������p3������3	
�	$f	f�M$f���f����ff�M�������������3��������������3��������������3�����ff�M$g���x�%hjloqtwz~��g
������3����!)0��K$�$f	f�M$f���f����ff�M�������������3��������������3��������������3�����f���fM$g���x�%hjloq�����������	��!)0���$����
�����������������׉������������������̐������������������������������y��
��yq����������qm�������������mc��������������cO��
�O�>����
�����������������׉������������������������������������
����������������y��
��yq�������������qm��
�mc������������cO��
�O�0�a�������_��������������������󟇇����LJ�����yk��LSr�{ubR���NOOc��pZVS��UVV�b��^]]U]�d�xhh�`��`hh�xnn�f��fnn�ottat�h�nxx�nL��������������������������������������������������2����
������������������ى������������������̐������������������������������y��
��yq�����������qm�������������mc��������������cO��
�O�>����
������������������ى�����������������������������������
�����������������y��
��yq������������qm��
�mc������������cO��
�O��t�������t������Ţ��ž�������ǹ�����Ĺ�€}ò�����ղ��}|���ۨ��侐��|z�������ӓ���zv������홛���vr��������ro�����������ol�����������li�������i[�������[�=PSS�P=<��������������������������������������������������2����
�܊���������������߉�����������������������j�������������������������������y��
��yq��j������qm�������������mc��������������cO��
�O�>����
�܊���������������߉����������������������j�������������
�����������������y��
��yq�������������qm��
�mc������������cO��
�O������ѹ�������������������������������������������������������������������������������������������������������������������̫#�������#;��������������������������������������������������2�j�����jk������k���������
�����
�����
�����
�����
����
����
����
����������p������p3������3	
�	*���������������������������2�vtt�v�vttv��vn�nv��vo���oillio���oee���eeee���eeaZ_���__���_ZaUS��SS��SU�KLL�KKLL�K"�FDD�FFDD�F�7=��==��=74(7X��77~�X7(411U�U1111UzU11+ujK+(--(+Kjl+"yo"#�#"il"���"�������������;����׳�k�����i���i�j����l�c������?��������u���o�ޱ�����@��p����U��������)�bjjggjjb�ck������kc�co��������oc�bh����������hb\~����������z\]��||w��hggju]\�{��������jq\\�v��������lq\W|smml��lmmsoWPmzwws��sww�eP1Uy||v��v||uU1�LWz��tt��yWL�(Hcy��ycH(�.9;;9.*�ixtt�xi�d����佂d�iz�������zi�k������k�b����b�^������^�S�����S�I������I�Nd������V&�RY�B����C�[i�	�[v�7	�\��M
�V�^���������������������ּ�������켴���д�����д����������̮��������訥�����������"�����������������ۑ������ٌ��۳������۱�����ױ����Я��������҂}��}}}���}zyy�z�zyy�z"�������������;����׳�k�����i���i�j����l�c������?��������u���o�ޱ�����@��p����U��������)����������������̺���������ظ������������ӳ���������������������������������񱶨�ͼ�������󶸤�ſ������������������������������Ğ��������ǝ��m�����ȭ�m�`txxt`)�ixtt�xi�d�����Ƃd�i�������؀i�k������k�b����b�^������^�S�����S�I������I�Nh������V&�RY�D���C�[i�	�[v�7	�\��M
�V�_��������������������������������������������������������������������"��������������������������¾����߽����߽����޹����������������������������"�������������;����׳�k�����i���i�j����l�c������?��������u���o�ޱ�����@��p����U��������)�'IHMMHI'�FPu����uPF�FS��������SF�'L���{��{���H'@n���u��u���k@C�yooh��USSYeC>�n��������S]>>�f��������UZ>@mZUU���UU�ZU@2R`]]Z��Z]]�I29_`^[��[^^Y9�5:ZbaZZaaY:5�
-GZ``ZG-
�*�ixtt�xi�d����ɂd�i������i�k�������k�b����b�^������^�S�����S�I�����I�Nh����V&�RY�D���C�[i�	�[x�<	�\��P
�V�d�$�H�����J���
-������h������������������E����������Z����������������������:����������Y)�l��Ħl�M�����M�M������M��������l����l��������������������������l����l��������M������M�M�����M�+C���ī�C-��@ZeZ@�!b��ǵ�b!�d�����ͤd�C�����ȑC�`�����`�o������o�e�����e�I������I�${����Ѹt�s�����ũ}*�*|��*Vy�yV�8���%�K���3	�t��D	�D�k/,($%����
����������������������������~�������~x��IJ��������xp���������pm�򨜎������me��~�~�������eZ�품���oo��ZW������WA����������A"!!����!!�"��L�STTS
�P��P
�L��L
�E��E
�?{u?
�8fd8�/11�[Y11�/�*+kVMLQZ+*�!$]HHU$!�RQ	�=Q�PSSP	�KO��OK�EI�~~�IE�CA��ulv�AC�:<<�rp<<�:�5kh5
�,_],
�'US'
�!PO!
�ON
�(�?@@�?�=Cg����gC=�9F�������F9�4;�|pL44Lp|�<40Zvi0110jx_0*lj@+�+Aks*%la%�%dv%^W�[kFH,�1KT(79]H:3)&,<G$<� 
/=

�4%%B��%����
����������������������������~�������~x��IJ��������xp���������pm�򨜎������me��~�~�������eZ�품���oo��ZW������WA����������A"!!����!!�"��L�����
���ޛ
���Ж
���ƍ
�����
�|��|�qss���ss�q�ljɾ����jl�dbô��bd�Y[��[Y	�:UU:#=������	����䙖���Ἴޑ�����Ƴ��͊�������������x��x
�o��o
�g��g
�_��_
�X��X
�=SS=(�������������ҽ����������ޡ�ڏ��û������ۖ������������������􃓯��z��z�z��zs��sr�s��sk���jkkۅ��kd���dcd�d���d^b���x]]����b^�X`����W���WW�RWy��Q����QQ�NMMNNMM�N%����
����������������������������~�������~x��IJ��������xp���������pm�򨜎������me��~�~�������eZ�품���oo��ZW������WA����������A"!!����!!�"��L�����
����
�����
�����
�����������������������������������
�h��h@=������	�����������������������������������ݼ
����
����
�����
�����
�p��p(����������������������������������������������������������������������߾��������Ƶ���������௮����ͯ����忨�������������������������������������%�$f$
�$g�g$�"Zgg�g�Z"[�	���[i���ij���jk���kl���lm���mn���no���ob�	���b&fuu�u�f&�*x�x*�-3JxJ3. ��&���̙
����
����
����
����
������������\����\�\����\�\���\�n��n�03gg338H�\��\	�\���\�\����\�\����\�����������
����
����
����
�����3��̦3&���l��̦l�M������M�M����M�����������l��ZZ���l����Z�Z�������������Ι\�����ֻJ�̔���M����2����lx���x3�����"_mmk@���̄�BNT?����\�% �����?@@�?�=Cg����gC=�9F�������F9�4<�|pL44Lp|�;40_xj0110ivZ0*skA+�+@jl*%vd%�%al%k[�W^TK1�,HF3:H]97(<$G<,&)
�=/
 �B%%4��'���~,	��т.	��ҢD
����U�s�w1�E��6�%']�l�1���?�6��s9�!8yM-���]
��x
����r�o&��i\
��O3��՗g6���w�?z��j�HO���h�N<���k�M2���oJ.��p�x,����v:��¥f@���;o	��ˋa	��|fK�������}_Q�������U�Qj���������eQM����ȿ���̄MI����ȿ���̖ID��������ȭD>��������>8����ľ����82屆�}yww�f�2'����������'�&Q&�������������Ҽ����������ܠ�ڏ��Ļ������ו������������������􃒮��z��z�z��zs��srr�s��sk���kk�j���kd���d�dcd���d^b����]]x���b^W����W����`XQ�ƻ��Q��yWR�NMMNM�N'���ű����Ʊ����ϴ�����Զ�����í�����ɰ�����ۻ������γ������̷������Ƿ��̲������s�
����r�o&��l
��nI��կ�Q��Ꙭ\����e`����kN��Ғ�lE��ዂiA��x�x3����v>����fE���jM4q	�z�T-	��1*�������`8&�������U�Qj���������eQM����ȿ���̄MI����ȿ���̖ID��������ȭD>��������>8����ľ����82屆�}yww��2'����������'��++
��}}�
�L��L
�k��k��������������������������������������������������������������������������������ȶ�ڵ��ܶ���������ɯ�����򨨿��ﭩ���������������������Ģ���������'���r	���v 	��̘5	����G	�a�j%�5��(�N�_�t��1���f*�j:	���X	��y����r�o&��LF
��#���t7���CTi��3j ;���.r%%���/v$���xV!��f�x ��y�v7����f:���E)k	�\w6	��	
�������Q'}������U��Qj����������hQM����ƿ����ۋMI����ƿ����۠ID���Ⱦ�����׼D>����������>8����ý������82屆�{xx{��f�2'����������Ǥ'��
�
�	bb	
�

�l��̦l�M������M�M����M�����������l��ZZ���l����Z�Z�������������\�������ܔ��J��όl���2����M�����3x���x������@kmm_"�\����?TNB����� %'����'��ӨE	�>���p������C����Z�/����x���L�i���>�Q���~�X���_��SzS
��
���Q�@���
�Z������\�����&���0���D��$�"����+���<�����B�d�������	������g���y+$����80$�4gg�4�x���x)�����)@�����@W����Wl�
��ls�
��sv�
��v{����{V�����V�����̙�7g�������ɨt?&03��̏33*�	�����������������������������������������������������������������Һ����������������������ȼ�����ۯ���֮�����A��������.��������a�j���j�
Agsrf?
�ge_PP_eb�
dYWW��WWYZ<VNN��N�S2VGG������$'6YD���ܱ��&1U;ԧ'��'��*/B0),,��,,)/*%8550��055�8::4��4::1�6?>11>>4
� 6@@6 5�b^[TRR�N�`Yt����jBB�^U��������26�\U��zvrtuy��--Yp�zrpnnq�~�^&T��vonoo��晝 K��s��p����~�B�����q}�B��t��mr��=d�yq�ٙlnt�N6/��wspoot��+ ���}|��}�!R����L#�1210122�1//�0/	/+
+/���	
/	�			�	
	���������N}}N�����KzzK������IvvI������GrrG������DnnD����~�AjjA����~}�|�>ff>���ر�|�z�;cc;��ۮ�z�w�8dd8��׫��w�u�1::1��ԧ��u�r�,��,��Ѥ��r�n���Ξζn�d���ϐ�d@�F\\�F�/00�/�/8h����f8/�->���rr���=-�,5�{yy��yy{~4,*axpp��p�uW*'yii������FJY'%{f���ܹ��JT%#w_ԯK��K��PU# eYOTT��TTOXP Gc``Y��Y``�=!ahg_��_gg[ �$booZZoo`#�=appa=��&���½�����������ֹ�����������ȝ��¾�����Ȋ��Ė������������ߩ������������Έ�����������������͹��z�������˷���x������Ͷ��ڛw���ۼ�����ٸqq󑊾�̼��ٷlq�������Ǘnp��~zspqql"�1210122�1//�0/	/+
+/���	
/	�			�	
���	��8}}8������6zz6������3vv3������2rr2������/nn/������,jj,������*ff*����m\�(cc(���j���$dd$���g��� -- ���c���\\�`����||��Z��������L�%��������������ؽ���������꿵겸��������㷲������ֱ�ɯ��������᭰�����������贽�����ɵ����£��˼�����ļ�ş�����������������������؜�����������a���㸉a� SnrrnS &�@;91-++(�=6Y����P�;4��ww��x�94�mjhh�k�v4W�mhecbc�o�H-��idaa���㋋&�rf��c����i��ps���[g���dy�W[��L�d_uԊVX\�Ar�`\YYX[�i�m��fd��f�B����=�#�1210122�1//�0/	/+
+/���	
/	�			�	
������a���ց��a������������������������������������������u���	������	������	������	������	���
�����Q
,�����,�d����d�H����ڳH�H������H������e����e������������������������h����h������J������J�K�����K�+C��êC-��#}����}#�S����S�S����S�"����"~�
��~�
�����
�����
����
���~�
��~"����"�S����S�S����S�#}����}#"����������	��������.����������	��������.����������	�����������������}z��
��t��������|�o�����j�����d����Ԭ����_�򪬬�������ў������ڿ�ظԈ�����ҫ���ʓ���������ⶇ~ﺻ�ƥ�᜵��ՙez�����ɽ����meu�����۠ɥ�¡�mnrnhc^[Vri^��X]Y	�r\t�srq�fdb`^t��q�dg��\s���n�db~��Zru���k�a}�sYWpom��i�_usYUljh�[YD�_]�PNLc_sqY�OdgJHGa_s�tW�MaycLE_�zsWU�I^dpD\��[T�FqsBZXVTR�FECBAtsr�b`t��qon�fbyw\s���sl�dbx�zZp���k�a��yYWm��i�_��^Wmljhg�][YWU@�ca_][�QPNLJad��Y�O~yJa_w{�W�Mwh^G_w�nWU�KNbu[D\omVR�IHF`ZBXV�ECB�=Q=�i��1	�����v-�������j"�����j4%m�y��I�^K���y��Mcr�������xq`V�ӏ��|���Ǵ���������u�ʿ����������z�o�����������s�i���������~xrmhd��������|�q�gc_������{upkfb^򚓍��ztojeab[Z����������������
���������������������������������������������Ļ��ף�������ڿ�ظԈ�������ҫ���ʓ���������ⶇ����ƥ���͚ՙe������ɽ����me�������ɥ�¡�mn��������i���y]Y	�r\�����������������ɪ����󳱽�Ũ����Ǽ�Ƕ�����Ĺ���������D���������󛧨���������󙥳��������������������������������������������������������¾󳱻Ǻ����Ѽ�ǿ�����й��ê������������@������󞜙�������󛶳�������󙳩��������󖗤���������������������������ſ�	����Ѵ�������ʫ������ͪ�������Ϙ��q�¤��Θ������������ӏ��|���Ǵ���������u�ʿ����������z�o�����������s�i���������~xrmhd��������|�q�gc_������{upkfb^򚓍��ztojeab[Z���������������
����������~zv��������������������������ս��ૣ����ڿ�ظԈ������ҫ���ʓ�������ⶇ���ƥ����ՙe����ɽ����me������ɥ�¡�mn������ǟi����]Y	�r\h�gfe�\[YXVh��e�[_��Tg��~c�ZYv~�Rfk��{`�Yu�mRPedc�y_�WnlRNa`^�SRD�WU�JHGZWljR�J_bEDCXWl�nP�H]u_GAV�slPN�EZ^l@T�}TN�Bmn?SQONL�BA@?>hgf�YXh��edc�\YqoTg���ib�ZYp�sRe~��`�Y�}rRPc��_�W��WPba`^]�USRPN@�ZYWUT�KJHGEX\��R�JytEXWqt�P�HscZBVq�hPN�FJ_qW@TigOL�ECB\V?QO�A@?��$d_	�;p��U
�E|����K�KEj��A���;��հ���@�����������B;,#�ӏ��|���Ǵ���������u�ʿ����������z�o�����������s�i���������~xrmhd��������|�q�gc_������{upkfb^򚓍��ztojeab[Z�~�	����
�����
�
�
�
����
��
�����,����
����	����	�������������������������D��������������������������������������������������������������������A�������������������������������������	������������.���.����������������������R��W�U���[��#�2.0**���R�]�W�W�Z�]�x�.32/+�HR�R�Y�Y�Y�\�`��(9940[�����!���������ͤ���������㯚���������ٷ������������������~���~�~�u�̢wv�v�mn��npn�m�f��xgf�d�_ۯ_�_H�2YW�-!����������������������������������������������������������y�������v�������������r����������k����p��������d��������]�%?;6��6	�/0��00�/�()�rz���wc:)&"�hh�aTICAJ5"�fgV@;71+$)l,��
2

���Y?
;�6�66�/00��0/�&)=k~��~{qh)("I|uhVIC@@CHg"0vhL==;85* ;YW1"�
!
�

���32�tk6��7bX(	�AQ'/�13	
�"�
�
���
�;P�O����O�O����O�N����N�M����M�L����L�K����K�JǾ��˭JJ�Hú��ê��H�G��������G�F��������F�&$$G�������D^^�#�������C�%##E�������@�;������;%�)66�)$�����
����	����׊���퀁������ij��|wߴ�ధ�����wonֲ���������zmed̽dd�fny���d�\[�[]]�[l[�?TT�?T�1;�;Y�
�����ᒑ������׊��|�������ǽ�ˁ�w�����������wm�ü���������nod���|ogdd���de[n[]]�[�[\�T?T�?�;�;022�tk6��7bX(	�AQ'/�13	
�"�
�
���
�;w�w����w�v����v�v����v�u����u�u����u�t����t�s�����ss�s������s�r���ܳ��r�q���۱��q�,**S��٭��p^^�)��ة��p�+))R��ף��n�k���ڟ�kC�Oii�O$�����
����	��������������������������������������������ø�������������������������x���x��_s�sY�
���������������������������������������������������������������������������x��x�s�s]2!�H�̓�+~�f�������ϽJ�f���3�ݴ�3������3�������������c�ܶ�g��u�Ն������A����3�������s2^̼B 
8L�Uqq�U�r���r�t���t�v���v�x���x�z���z�|���|�~���~-���	������	������	������	����������	���	�����I	,�����,"�H��H��
�H��	�H����˶�5�H������y
�����yH�����5H�����������H��(G�Ͷ�H���z�
T�$).233� �H��H�H���H�5��������H�
y�����Hy�����5�����H������������H�͍G(��H��z�H��33�0,'�W

�
T�PQPQ��QPQP�Kv�aL��La�vK�G��������G�?S��������S?�899�Ԧ,,�ԡ9982̿��--�ǿ�2+Ļ��00�Ļ�+%$$�ϲ33�ϓ$$%�2ƽ���ٽ�2�Ʊ”�ʔ±��B�'��'�B�	��	�������������������������������������������������������av����y����JJr���v��-.)DB�Bl���r��#�j]]�s9���k��1/8/b���d����((d����]���MBBA@@?>>=<<;::CB������>=������9B׺����=<׺����8Aָ����<<ָ����7@Ե����<;Ե����7@ӳ����;:ӳ����6?������::������5>>=<<;::99877655>=<<;::998776554=������98������3<׺����87׺����3<ָ����77ָ����2;Ե����76Ե����1:ӳ����65ӳ����1:������55������0C98776554332110:�����¿������¿����������������������������������������������������������������������������� ����¿������¿������������������������������������������������������������������������������T�PQPQ��QPQP�Kv�aL��La�vK�G��������G�?S��������S?�899�Ԧ,,�ԡ9982̿��--�ǿ�2+Ļ��00�Ļ�+%$$�ϲ33�ϓ$$%�2ƽ���ٽ�2�Ʊ”�ʔ±��B�'��'�B�	��	�P�O����O�O����O�N����N�M����M�L����L�K����K�JǾ��˭JJ�Hú��ê��H�G����������G�F������澘��F����叢������Dy�����؃������Cljdyw�w�������@�;�mm������;%�)6GA66�)��������������읜�����욞�����윜�����욞�����뜜�����뚞�����ꜛ�����ꙝ�����ꛛ�����ꙝ�����雛�����陝���������������������욚�����옜�����욚�����옜�����뚙�����뗛�����ꙙ�����ꗛ�����ꙙ�����ꗛ�����陙�����閟���������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������T�PQPQ��QPQP�Kv�aL��La�vK�G��������G�?S��������S?�899�ӥ,,�Ӡ9982˾��..�ƾ�2+Ļ��22�Ļ�+%$$�Լ66�Ԕ$$%�3������3�к̛�ԛ̺��E�)��)�E�	��	�w�w����w�v����v�v����v�u����u�u����u�t����t�s�����ss�s������s�r�����ܳ��r�q�������۱��q��������٭��p������ة��p����������ף��n�kڰ����ڟ�kC�Oi�ii�O����������������������������!����������������������������������¾������¾����������������������������������������������������������������������������� ����¾������¾�������������������������������������������������������������������������������9gg9�:ii��ii:�;��zk��kz��;�m��������m�~���~�?ss�ו���ss?v��������vy��������yE||��}}��||E� ����� �����������I����������I�J�"����"�J�+33_��_33-��Uqq�U�r���r�t���t�v���v�x���x�z���z�|���|�~���~-���	������	������	������	����������	���	�����I	,���Ǧ���,���������������������
�����
��������������������
��MA@?=<;C���¿���A������8������@׺����7�������?ָ����5��������=Ե����4��������<ӳ����3��������;������1���C875431;MA@?=<;C���A������8���¿���@׺����7������?ָ����5�������=Ե����4��������<ӳ����3��������;������1��������C875431;���壞������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������¾������������������������������������������������������������������������¾����������������������������������������������������������������������������������������������������������������������������������������|>lib/img/volume_icon_local.svg000064400000037520147361034410012312 0ustar00<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64" viewBox="0 0 48 48" overflow="visible"><defs><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="24" y1="39.07" x2="24" y2="8.93" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#585868"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="24" y1="41.44" x2="24" y2="6.56" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#cecedb"/><stop offset=".58" stop-color="#b1b1c5"/><stop offset="1" stop-color="#9a9ab1"/></linearGradient><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="42.8" y1="3.42" x2="18.71" y2="27.51"><stop offset="0" stop-color="#fff"/><stop offset=".07" stop-color="#f5f5f7"/><stop offset=".31" stop-color="#d7d7e1"/><stop offset=".55" stop-color="#c2c2d2"/><stop offset=".78" stop-color="#b5b5c8"/><stop offset="1" stop-color="#b1b1c5"/></linearGradient><linearGradient id="e" gradientUnits="userSpaceOnUse" x1="4.39" y1="28.4" x2="43.61" y2="28.4" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#9a9ab1"/><stop offset=".26" stop-color="#7d7d99"/><stop offset="1" stop-color="#585868"/></linearGradient><linearGradient id="f" gradientUnits="userSpaceOnUse" x1="4.39" y1="28.4" x2="43.61" y2="28.4" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#ccc"/></linearGradient><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="24" y1="28.28" x2="24" y2="38.75" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#ccc"/></linearGradient><linearGradient id="h" gradientUnits="userSpaceOnUse" x1="24" y1="38.25" x2="24" y2="27.38" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#ccc"/></linearGradient><linearGradient id="i" gradientUnits="userSpaceOnUse" x1="39.51" y1="37.32" x2="39.51" y2="35.18" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset=".01" stop-color="#fff"/><stop offset="1" stop-color="#b6b6b6"/></linearGradient><linearGradient id="j" gradientUnits="userSpaceOnUse" x1="39.51" y1="37.22" x2="39.51" y2="35.38" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset=".01" stop-color="#b6b6b6"/><stop offset=".37" stop-color="#9d9d9d"/><stop offset=".74" stop-color="#898989"/><stop offset="1" stop-color="#828282"/></linearGradient><linearGradient id="k" gradientUnits="userSpaceOnUse" x1="-323.35" y1="37.99" x2="-323.35" y2="36.08" gradientTransform="matrix(-1.09746 0 0 .8231 -313.94 6.86)"><stop offset=".01" stop-color="#9f6"/><stop offset=".24" stop-color="#68de56"/><stop offset=".48" stop-color="#3bc147"/><stop offset=".7" stop-color="#1bab3c"/><stop offset=".88" stop-color="#079e35"/><stop offset="1" stop-color="#093"/></linearGradient><linearGradient id="l" gradientUnits="userSpaceOnUse" x1="39.49" y1="36.68" x2="39.54" y2="35.27" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset=".01" stop-color="#3c3"/><stop offset=".36" stop-color="#1bb433"/><stop offset=".74" stop-color="#07a033"/><stop offset="1" stop-color="#093"/></linearGradient><linearGradient id="m" gradientUnits="userSpaceOnUse" x1="39.51" y1="35.48" x2="39.51" y2="36.4" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#fff"/><stop offset=".09" stop-color="#e8f7d6"/><stop offset=".23" stop-color="#c8ed9e"/><stop offset=".36" stop-color="#ade46d"/><stop offset=".5" stop-color="#97dc46"/><stop offset=".63" stop-color="#85d627"/><stop offset=".76" stop-color="#79d212"/><stop offset=".89" stop-color="#72d004"/><stop offset="1" stop-color="#6fcf00"/></linearGradient><linearGradient id="n" gradientUnits="userSpaceOnUse" x1="8.18" y1="35.36" x2="20.94" y2="35.36" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#dfdfdf"/><stop offset="1" stop-color="#a2a2a2"/></linearGradient><linearGradient id="o" gradientUnits="userSpaceOnUse" x1="14.56" y1="33.7" x2="14.56" y2="37.03" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"><stop offset="0" stop-color="#828282"/><stop offset="1" stop-color="#a2a2a2"/></linearGradient><linearGradient xlink:href="#a" id="d" x1="41.87" y1="9.41" x2="5.74" y2="29.21" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.09746 0 0 1.09746 -2.44 -2.24)"/></defs><path d="M8.96 7.64a3.13 3.13 0 0 0-3.13 2.85l.04-.18-.11.55.04-.2-.1.54.04-.2-.1.55.03-.19-.1.53.03-.18-.1.53.04-.18-.09.53.03-.19-.1.54.04-.19-.11.53.04-.17-.1.52.04-.17-.1.52.03-.18-.1.53.03-.18-.1.52.04-.17-.09.53.03-.18-.1.53.04-.18-.1.53.03-.18-.1.53.04-.18-.1.52.03-.18-.1.53.03-.17-.08.52.02-.17-.09.52.03-.17-.1.51.04-.16-.1.51.03-.17-.1.53.04-.18-.1.53.03-.18-.09.53.03-.18-.1.52.04-.17-.1.52.03-.17-.1.52.04-.17-.1.51.03-.16-.09.51.03-.16-.1.51.03-.16-.09.51.03-.16-.1.52.04-.18-.1.52.03-.17-.1.52.04-.17-.09.52.02-.17-.09.52.03-.17-.1.51.03-.15-.09.5.03-.16-.1.51.04-.16-.1.51.03-.16-.08.51.02-.16-.09.5.02-.15-.09.5.04-.15-.1.5.03-.15-.1.5.03-.16-.1.52.04-.17-.09.52.02-.16-.08.5.02-.15-.09.5.03-.15-.1.5.04-.16-.1.5.02-.15-.09.5.03-.15-.1.5.04-.16-.09.5.02-.15-.08.5.02-.15-.09.5.02-.15-.09.5.03-.14-.1.49.04-.15-.1.5.04-.15c-.08.3-.11.59-.11.88v6.47a3.6 3.6 0 0 0 3.6 3.6h38.02a3.6 3.6 0 0 0 3.6-3.6v-6.47a4 4 0 0 0-.1-.88l.01.15-.08-.5.02.15-.09-.5.02.16-.09-.5.03.15-.1-.5.03.15-.09-.5.02.16-.08-.5-.07-.36.03.15-.1-.5.04.16-.09-.51.02.16-.09-.51.03.16-.1-.5.03.15-.09-.5.02.16-.08-.52.02.16-.09-.5.03.16-.1-.5.04.15-.1-.5.03.15-.1-.5.04.16-.1-.52.03.16-.09-.51.02.16-.08-.51.02.16-.09-.51.02.17-.08-.51.03.15-.1-.5.03.16-.1-.52.04.17-.1-.52.03.17-.1-.52.03.18-.1-.53.04.18-.09-.52.02.16-.08-.51.02.16-.1-.51.04.16-.1-.51.04.17-.1-.52.03.17-.1-.53.03.18-.1-.52.04.17-.1-.52.03.18-.08-.53.02.17-.1-.52.03.18-.09-.53.04.17-.1-.52.03.17-.1-.52.03.18-.07-.52.03.17-.1-.52.04.17-.1-.53.03.18-.1-.53.03.19-.1-.53.04.18-.09-.53.02.18-.09-.53.03.18-.1-.53.04.19-.1-.53.04.17-.1-.52.03.17-.1-.52.03.17-.1-.52.04.17-.1-.53.03.2-.1-.55.04.19-.1-.53.03.19-.09-.55.04.2-.11-.54.04.19-.11-.54.04.19-.1-.54.04.18-.1-.53.03.2a3.12 3.12 0 0 0-3.12-2.87H8.95z" font-size="12" opacity=".2" stroke-width="1.1"/><path d="M8.75 7.23a3.13 3.13 0 0 0-3.12 2.86l.03-.19-.1.54.03-.2-.1.55.04-.2-.1.54.03-.19-.09.54.04-.19-.11.54.04-.18-.1.52.03-.17-.1.52.04-.17-.1.52.03-.18-.1.54.04-.2-.1.54.03-.18-.09.53.04-.18-.11.53.04-.19-.1.53.03-.18-.1.53.04-.18-.1.53.03-.17-.08.52.02-.17-.1.51.04-.17-.1.52.04-.17-.1.52.03-.17-.1.53.03-.18-.1.52.04-.17-.1.52.03-.17-.08.52.02-.18-.1.53.04-.18-.1.53.04-.17-.1.51.03-.16-.1.51.03-.16-.08.51.02-.17-.09.52.03-.17-.1.51.04-.16-.1.52.03-.17-.1.52.04-.17-.1.52.03-.17-.09.52.02-.18-.08.52.03-.16-.1.51.03-.16-.1.51.03-.16-.1.51.04-.16-.1.51.04-.16-.1.52.03-.17-.09.5.02-.16-.08.52.02-.17-.09.52.03-.17-.1.5.04-.14-.1.5.03-.15-.1.5.04-.16-.1.51.03-.16-.09.51.02-.16-.08.5.02-.15-.09.5.02-.15-.08.5.03-.15-.1.5.03-.16-.1.5.04-.15-.1.5.03-.15-.09.51.02-.15-.08.5.03-.15-.1.5.03-.16-.1.5.04-.15-.1.5.03-.15-.09.5.03-.15c-.08.29-.11.58-.11.88v6.47a3.6 3.6 0 0 0 3.6 3.6h38.02a3.6 3.6 0 0 0 3.6-3.6v-6.48c0-.29-.04-.58-.1-.88l.02.16-.1-.5.03.15-.09-.5.02.15-.08-.5.02.15-.09-.5.02.16-.09-.5.04.15-.1-.5-.07-.36.04.16-.1-.5.03.16-.09-.5.02.15-.08-.5.02.14-.09-.5.02.16-.09-.5.03.15-.1-.5.04.15-.1-.5.04.15-.1-.5.03.16-.1-.51.03.16-.08-.52.02.17-.09-.52.02.17-.09-.5.03.15-.1-.5.03.16-.09-.52.04.16-.1-.51.03.16-.1-.5.03.15-.1-.5.04.16-.1-.51.03.16-.09-.51.03.16-.08-.52.03.17-.1-.52.04.17-.1-.52.03.17-.1-.52.03.18-.1-.53.04.17-.09-.52.02.17-.08-.51.03.17-.1-.52.03.17-.1-.52.04.17-.1-.51.03.16-.1-.53.03.18-.1-.53.04.19-.09-.53.02.18-.08-.53.03.18-.11-.53.04.17-.1-.51.04.16-.1-.51.03.16-.1-.51.03.17-.1-.52.04.17-.1-.53.03.18-.1-.53.04.19-.1-.53.03.18-.09-.53.04.18-.11-.53.04.19-.1-.54.03.19-.1-.53.04.17-.1-.52.03.17-.1-.52.04.18-.1-.53.03.18-.1-.54.04.2-.1-.55.04.19-.1-.53.03.19-.1-.55.04.2-.11-.55.04.2a3.13 3.13 0 0 0-3.12-2.86z" font-size="12" opacity=".2" stroke-width="1.1"/><path d="M8.35 6.82A3.13 3.13 0 0 0 5.2 9.67l.03-.19-.09.55.04-.2-.11.54.04-.18-.1.52.03-.17-.1.52.04-.17-.1.53.03-.18-.1.53.04-.19-.1.54.03-.19-.09.53.04-.18-.11.53.04-.19-.1.54.04-.18-.1.53.03-.19-.1.53.03-.17-.08.52.02-.17-.09.52.03-.17-.1.51.04-.17-.1.54.03-.18-.1.52.04-.18-.1.53.03-.18-.09.53.02-.18-.08.53.02-.18-.09.52.03-.16-.1.51.04-.17-.1.52.03-.17-.1.52.04-.17-.1.52.03-.17-.09.52.02-.17-.08.52.03-.17-.1.52.03-.18-.1.52.04-.17-.1.52.03-.17-.09.52.03-.16-.1.51.04-.16-.1.51.03-.16-.1.51.04-.17-.1.51.03-.16-.09.52.03-.17-.1.52.03-.17-.09.52.03-.17-.1.5.04-.15-.1.5.03-.16-.1.52.04-.16-.1.5.03-.15-.1.5.04-.15-.1.5.03-.16-.09.51.03-.16-.1.51.03-.16-.09.52.03-.17-.1.5.04-.15-.1.5.03-.15-.08.5.02-.16-.1.52.03-.16-.09.5.03-.15-.1.5.03-.15-.09.5.03-.16-.1.5.04-.15-.09.5.02-.15-.08.5.02-.15-.1.5.03-.16-.09.5.03-.15-.1.5.03-.15c-.07.3-.11.6-.11.88v6.48a3.6 3.6 0 0 0 3.61 3.6h38.02a3.6 3.6 0 0 0 3.6-3.6V31.3c0-.3-.04-.58-.11-.88l.03.16-.1-.5.03.15-.1-.5.04.16-.1-.5.03.15-.09-.51.03.15-.1-.5.03.16-.09-.5-.06-.35.02.15-.09-.5.03.16-.1-.51.04.16-.1-.52.03.17-.1-.5.04.15-.1-.5.03.16-.09-.52.02.16-.08-.51.02.16-.09-.5.02.15-.09-.5.04.15-.1-.5.03.16-.1-.51.04.16-.1-.51.03.16-.09-.5.02.16-.1-.53.04.18-.09-.52.02.16-.09-.5.03.16-.1-.52.04.17-.1-.52.04.16-.1-.5.03.16-.1-.52.03.17-.1-.51.04.16-.09-.51.02.16-.09-.52.03.17-.1-.52.03.18-.09-.53.04.18-.1-.52.03.17-.1-.52.03.17-.1-.52.04.17-.08-.52.03.16-.1-.51.04.17-.1-.52.03.18-.1-.52.04.16-.1-.52.03.18-.1-.53.04.18-.1-.53.03.18-.09-.53.02.18-.08-.53.03.19-.11-.53.04.18-.1-.53.04.17-.1-.52.03.17-.1-.52.04.18-.1-.52.03.17-.1-.53.03.18-.1-.53.04.18-.09-.53.03.18-.1-.53.04.19-.11-.54.04.19-.1-.53.04.19-.1-.55.03.2-.1-.54.03.18-.1-.53.04.18-.09-.54.03.2-.1-.55.05.19a3.13 3.13 0 0 0-3.14-2.85z" font-size="12" fill="url(#b)" stroke-width="1.1"/><path d="M45.34 30.7a2.52 2.52 0 0 0-.06-.34 1.8 1.8 0 0 0-.07-.35 1.98 1.98 0 0 0-.06-.36 2.41 2.41 0 0 0-.07-.35c0-.1-.03-.22-.07-.34 0-.12-.03-.24-.06-.35 0-.1-.04-.23-.06-.35l-.06-.35-.07-.34a1.8 1.8 0 0 0-.06-.35l-.07-.35-.07-.35-.06-.34a2.41 2.41 0 0 0-.07-.36c0-.1-.03-.23-.05-.35l-.07-.35-.06-.34a1.8 1.8 0 0 0-.07-.35l-.07-.35a2.3 2.3 0 0 0-.06-.35c0-.11-.04-.22-.07-.34 0-.12-.03-.24-.06-.35 0-.12-.04-.24-.06-.35l-.06-.36-.07-.34a1.8 1.8 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.35l-.07-.35a2.2 2.2 0 0 0-.06-.35c0-.11-.04-.22-.07-.34 0-.12-.03-.24-.07-.35 0-.11-.03-.23-.05-.35l-.07-.35-.06-.34a1.8 1.8 0 0 0-.07-.36 1.8 1.8 0 0 0-.06-.35 2.2 2.2 0 0 0-.07-.35c0-.1-.03-.23-.07-.35 0-.1-.03-.23-.06-.34 0-.12-.03-.24-.06-.35 0-.12-.04-.24-.06-.35l-.07-.35-.06-.35-.07-.34a1.8 1.8 0 0 0-.07-.36c0-.1-.03-.23-.06-.35 0-.1-.03-.23-.07-.35 0-.1-.03-.23-.05-.34-.01-.12-.05-.24-.07-.35a1.8 1.8 0 0 0-.06-.35l-.07-.35-.07-.35a1.86 1.86 0 0 0-.06-.34c0-.12-.03-.24-.07-.35 0-.12-.03-.25-.06-.36 0-.1-.04-.23-.06-.35l-.06-.35a1.86 1.86 0 0 0-.07-.34 1.8 1.8 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.35 2.05 2.05 0 0 0-2.04-1.87H8.35c-1.08 0-1.96.83-2.04 1.87-.04.11-.06.22-.07.35l-.07.35a1.7 1.7 0 0 0-.06.34 1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35l-.06.36c-.03.1-.05.21-.06.35-.04.1-.06.22-.07.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.35l-.06.35a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.36a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35l-.06.35a1.8 1.8 0 0 0-.06.35c-.04.11-.06.22-.07.35l-.07.34-.06.35-.06.35c-.03.11-.05.22-.06.35-.03.11-.06.22-.07.36a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.35l-.07.35-.06.35-.06.34a1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.35a1.7 1.7 0 0 0-.07.34l-.07.35-.06.36-.06.35c-.03.1-.05.22-.06.35-.03.1-.06.22-.07.35-.02.1-.05.22-.06.34-.03.11-.06.23-.07.35l-.05.35c-.04.11-.06.22-.07.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.36c-.02.1-.05.22-.06.35l-.07.34-.07.35-.05.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.02.11-.05.23-.06.35l-.07.34-.05.36a1.8 1.8 0 0 0-.07.35c-.03.1-.06.22-.07.35a2.52 2.52 0 0 0-.07.6v6.48a2.5 2.5 0 0 0 2.5 2.5H42.9a2.5 2.5 0 0 0 2.5-2.5V31.3c0-.2-.02-.4-.07-.6z" font-size="12" fill="url(#c)" stroke-width="1.1"/><path d="M10.7 7.91L3.5 30.35c13.7-1.65 27.04-1.65 40.54-.91L37.1 7.9z" font-size="12" fill="url(#d)" stroke-width="1.1"/><path d="M2.77 29.18l-.05.34a1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.36a1.7 1.7 0 0 0-.07.34c-.02.1-.06.23-.07.35a2.52 2.52 0 0 0-.07.61v2.66c.47.44 1.1.7 1.79.7h39.46c.7 0 1.32-.26 1.79-.7v-2.66c0-.22-.03-.42-.08-.61a2.52 2.52 0 0 0-.06-.35 1.86 1.86 0 0 0-.07-.34 1.8 1.8 0 0 0-.06-.36 2.41 2.41 0 0 0-.07-.35c0-.1-.03-.23-.07-.35 0-.1-.03-.23-.06-.34 0-.12-.04-.24-.06-.35l-.06-.35-.07-.35a1.86 1.86 0 0 0-.06-.34 1.8 1.8 0 0 0-.07-.35 1.98 1.98 0 0 0-.07-.35l-.06-.36a2.41 2.41 0 0 0-.07-.34c0-.12-.03-.24-.05-.35a2.3 2.3 0 0 0-.07-.35l-.06-.35-.07-.34a2.3 2.3 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.35c0-.11-.04-.23-.07-.35 0-.11-.03-.23-.06-.34 0-.1-.03-.19-.05-.28H3.92a2.3 2.3 0 0 0-.04.28 1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.06.35 1.8 1.8 0 0 0-.07.35c-.02.1-.05.22-.06.35-.02.11-.06.22-.07.34l-.05.35a1.8 1.8 0 0 0-.07.35l-.07.35a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.36c-.02.1-.05.23-.06.35l-.07.35-.06.34-.06.35a1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.35l-.06.34z" font-size="12" fill="url(#e)" stroke-width="1.1"/><path d="M45.28 30.36a1.8 1.8 0 0 0-.07-.35 1.8 1.8 0 0 0-.06-.36 2.41 2.41 0 0 0-.07-.35c0-.1-.03-.23-.07-.34 0-.12-.03-.24-.05-.35l-.07-.35-.06-.35a1.86 1.86 0 0 0-.07-.34 1.8 1.8 0 0 0-.06-.35 1.8 1.8 0 0 0-.07-.35l-.07-.35c0-.11-.03-.23-.06-.34a2.41 2.41 0 0 0-.06-.36l-.06-.35-.07-.35a1.86 1.86 0 0 0-.06-.34 1.8 1.8 0 0 0-.07-.35 1.98 1.98 0 0 0-.07-.35 2.3 2.3 0 0 0-.06-.35c0-.09-.02-.19-.05-.28-.33-.16-.7-.26-1.1-.26H4.9c-.4 0-.77.1-1.1.26l-.05.28c-.02.1-.06.23-.07.35l-.06.35-.06.35a1.7 1.7 0 0 0-.06.34 1.8 1.8 0 0 0-.07.35 1.8 1.8 0 0 0-.07.35c-.03.11-.05.22-.06.36-.02.1-.06.22-.07.34l-.06.35-.06.35c-.03.1-.05.22-.06.35a1.7 1.7 0 0 0-.07.34 1.8 1.8 0 0 0-.07.35 1.8 1.8 0 0 0-.06.35c-.02.11-.06.22-.07.35l-.06.34-.06.35a1.8 1.8 0 0 0-.06.36c-.04.1-.06.22-.07.35a1.7 1.7 0 0 0-.07.34c-.04.2-.07.4-.07.61v.86a2.5 2.5 0 0 0 2.5 2.51H42.9a2.5 2.5 0 0 0 2.5-2.51v-.86c0-.22-.02-.42-.08-.61 0-.11-.03-.23-.05-.34z" font-size="12" fill="url(#f)" stroke-width="1.1"/><path d="M2.39 37.79a2.5 2.5 0 0 0 2.5 2.5h38.02a2.5 2.5 0 0 0 2.5-2.5V31.3a2.5 2.5 0 0 0-2.5-2.51H4.89a2.5 2.5 0 0 0-2.51 2.51v6.48z" font-size="12" fill="url(#g)" stroke-width="1.1"/><path d="M4.89 30.12c-.66 0-1.2.53-1.2 1.2v6.47c0 .66.54 1.2 1.2 1.2h38.02c.65 0 1.2-.56 1.2-1.21V31.3a1.2 1.2 0 0 0-1.2-1.18z" font-size="12" fill="url(#h)" stroke-width="1.1"/><path d="M40.47 36.12c-.82 0-1.48.53-1.48 1.22s.66 1.23 1.5 1.23h.87c.83 0 1.5-.55 1.5-1.23 0-.68-.67-1.23-1.5-1.23h-.88z" font-size="12" fill="url(#i)" stroke-width="1.1"/><path d="M40.47 36.44c-.64 0-1.15.4-1.15.9s.51.9 1.16.9h.88c.65 0 1.16-.4 1.16-.9s-.52-.9-1.16-.9h-.88z" font-size="12" fill="url(#j)" stroke-width="1.1"/><path d="M42.41 37.34c0 .44-.47.79-1.05.79h-.88c-.58 0-1.05-.35-1.05-.8 0-.43.47-.78 1.05-.78h.88c.58 0 1.05.35 1.05.79z" font-size="12" fill="url(#k)" stroke-width="1.1"/><path d="M40.47 36.77c-.44 0-.82.27-.82.6 0 .33.38.6.83.6h.88c.45 0 .83-.28.83-.6 0-.33-.38-.6-.83-.6h-.88z" font-size="12" fill="url(#l)" stroke-width="1.1"/><path d="M40.45 36.65c-.38 0-.66.22-.66.41 0 .2.28.43.66.43h.94c.39 0 .66-.22.66-.43 0-.2-.27-.41-.66-.41z" font-size="12" fill="url(#m)" stroke-width="1.1"/><path font-size="12" d="M6.54 34.75h14v3.64h-14z" fill="url(#n)" stroke-width="1.1"/><path font-size="12" d="M6.54 34.75v.44H20.1v3.2h.44v-3.64z" fill="url(#o)" stroke-width="1.1"/><path font-size="12" d="M17.2 34.75h.87v3.64h-.88zm-4.58 0h.87v3.64h-.87zm2.28 0h.88v3.64h-.88zm-4.57 0h.88v3.64h-.88z" fill="#949494" stroke-width="1.1"/><path font-size="12" d="M16.97 34.75h.88v3.64h-.88zm-4.57 0h.87v3.64h-.87zm2.28 0h.88v3.64h-.88zm-4.57 0H11v3.64h-.88z" fill="#f0f0f0" stroke-width="1.1"/><path font-size="12" d="M-2.44 50.44V-2.24h52.68v52.68" fill="none" stroke-width="1.1"/></svg>lib/img/tui-icon-d.svg000064400000046440147361034410010572 0ustar00<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-d-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#8a8a8a" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-d-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#8a8a8a" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-d-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#8a8a8a" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-d-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#8a8a8a" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-d-ic-delete" viewBox="0 0 24 24">
    <g fill="#8a8a8a" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-d-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-d-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-d-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#8a8a8a" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#8a8a8a" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-d-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#8a8a8a" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-d-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#8a8a8a" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-d-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#8a8a8a" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-d-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#8a8a8a" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-d-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#8a8a8a" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#8a8a8a" d="M25 3h1v9h-1z"/>
        <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#8a8a8a">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-d-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-d-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-d-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#8a8a8a" d="M25 3h1v9h-1z"/>
        <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-d-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#8a8a8a"/>
        <path fill="#8a8a8a" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-d-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#8a8a8a" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-d-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#8a8a8a" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-d-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#8a8a8a" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#8a8a8a" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-d-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#8a8a8a" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#8a8a8a" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-d-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#8a8a8a" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-d-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#8a8a8a"/>
    </g>
</symbol><symbol id="icon-d-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#8a8a8a" rx="1"/>
    </g>
</symbol><symbol id="icon-d-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-d-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#8a8a8a" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#8a8a8a" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-d-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#8a8a8a" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#8a8a8a" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-d-ic-text" viewBox="0 0 24 24">
    <g fill="#8a8a8a" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-d-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#8a8a8a" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#8a8a8a" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-d-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>lib/img/edit_zohooffice.png000064400000000714147361034410011741 0ustar00�PNG


IHDR(-S�PLTEGpLLYLYLYLYLYLYJYLYLYLYLYLYLYLYLYLYLYLYLYLYKYI�ODZ��BQXJYMY,sSdU��Hg^�ja�L<�Q	TX��F��D��BGZ��Ai�J�T}VPY��A_�L��C[WlW�Va�LXY�U_X0�X\[,tSx�IgU��FB�Pp�JB�Q�k�0�tRNSN�Z�"���%�X��+�.YR�IDAT�u���0`@@"v]Jb,�a��J*\�����84�\Q�Ò��} v��h�*w0uLC��5�&�Ԛ���N���V�`�RJXհ�$p�pv	hA�?�i`߼xG*�HB����4"V���XA�W��{b�߸1�W����H���
�c%��jIEND�B`�lib/img/quicklook-icons.png000064400000003104147361034410011707 0ustar00�PNG


IHDR ��7IDATx���%ЕQ�э�$hiH�"N�.ЍJ#iDC�}�C����~���>�:�i����g��&�e�D����8�M2`���X�<逭�8�O2`�Ӿl�@�]]��4�͚1҉��w�ϛD�.�e��nj��
g��9%za���N5��ZQqHGF3޲�?��Y�/�eڔ)m�ׯ����k*>d�S@���;=I*ֹ�T,q�(���"�~�y6�L��J-ʘ�/�����F�Y]ຍe���e�[[�e����t�̘U��rOW�}Ӿ��񞉟w�x�H�s��b(g�X��;kE�)q.t�լ
-Y'^O]SFǡ���ywl��L��ihjj�~mS�L���.X���,ȏi�H���Yr.YWr��X?���Y�#�m�<5�������֡n�P�a{L���4��� 0HD_��TԷ!'���l�g����O�^P�Q_���9�9�k9H�Ip �w��k��0��{���<�
|m�8G�wP����5juп�s|#|;6���ȀV%��J�
��A8�R&���8�'�k��9|m@���t�"[�>!�
�G97��CԺ2�SQ�&�T���Ȇ �9V2'N$��81�j�sԑc�5�R=;�jWQ@y&�ZЁ��s �N�`@��@`��o�
�������<�=|m��D�w����֮=�Jpq�m۶7
k7�Ֆ�JQm۶ն�x޽���t�5b��n5�g9�����`��͜�iM�߄��Z���j!˛oj=[Ҧ7�?��h�[��-iz�7^�G�kk+���-x�j��LS�,���-B��Of	4�`}��zi�{
����҄�Q�.��>�1mx��W�04n�g�4P�u���kUӥ�?4	��@OW�P��Ǥ�Sż²��F4�=�+�2����QP�LZ?8�5ܙ��~+�����)A�L���l�
|�FO�Z���
��Q��-|�8��f��3�C�V��PxcZ��N�W"�	�{Z��?����A��@�j>7�4�8�L5[�&>D߰����P�S��V"��J�4}[�	+T�ͩ�v{���g\=�Y;:�S�iJ#�xahDzaNۤ"d@�:
;g��� ���	s�G�E*肝���Duyh���Iv��"�7(�~��T0{���I�B_�̲962�cxq:t?<�`�/�=�M�{��$ރm=}E�(�M�e5b� �pR�ؗG�Ä�2���\M�.Y� v�@���ӹ	]e�|�f�щ�[-�Ի���(��g3Tv6mSʦu��Mk�4#.�M]jc#:��3��Db[��cAÚ*p)�`3	��V���vu�����Z�W��iѺBr�ۆe���"�2��L_&��E��S��*��sRW�m(��v�{�V7�養&��6fQ�{�u\+\��\eK��}iz3��i>W�H�>����h.���������Z�����3le���y6K�l�bK-(��ia��Qs2�_;����M��5��IEND�B`�lib/img/edit_aceeditor.png000064400000001002147361034410011534 0ustar00�PNG


IHDR�a�IDATx�ݏ��|��ݜm�>�ư�Y�ڶm۶m۶m[�='����
�0$%%����SqTbb�p~*�bE~c��4�9
.\w�����|����-�� &�,�R6��0	h�Հ����%ڵ���T(x�*���9�
Sw�)D �2G�y���\]];�����J�kaU(6��Mse\����"����K�;��\L#Mpd��t8����˗>��c�\�k�`����P
���R6�Ko��*LoZ��]�i��>���͈�\��4-6KK��,]}�K���J��K�I|�5����!1�~j�6�T���x�~�X�BӐS�[�Ğ{$���i�L����+��%[��s�	��'w�}�;�+�����7��d��68v/P��j��٠xZ�_|½lv;(Q`���"�������>�#o�[�-�J�|�{IEND�B`�lib/img/spinner-mini-bk.gif000064400000003471147361034410011567 0ustar00GIF89a����������FFFzzzXXX$$$���������666hhh!�NETSCAPE2.0!�Created with ajaxload.info!�	
,w  	!�DB�A��H���¬��a��D���@ ^�A�X��P�@�"U���Q#	��B�\;���1�o�:2$v@
$|,3

�_#
d�53�"s5e!!�	
,v  i@e9�DA�A�����/�`ph$�Ca%@ ���pH���x�F��uS��x#�
�.�݄�Yf�L_"
p
3B�W��]|L
\6�{|z�8�7[7!!�	
,x  �e9�DE"������2r,��qP���j��`�8��@8bH, *��0-�
�mFW��9�LP�E3+
(�B"
f�{�*BW_/�
@_$��~Kr�7Ar7!!�	
,v  �4e9��!H�"�*��Q�/@���-�4�ép4�R+��-��p�ȧ`�P(�6�᠝�U/� 	*,�)(+/]"lO�/�*Ak���K���]A~66�6!!�	
,l  ie9�"���*���-�80H���=N;���T�E�����q��e��UoK2_WZ�݌V��1jgWe@tuH//w`?��f~#���6��#!!�	
,~  �,e9��"���*
�;pR�%��#0��`� �'�c�(��J@@���/1�i4��`�V��B�V
u}�"caNi/]))�-Lel	mi}
me[+!!�	
,y  Ie9��"M�6�*¨"7E͖��@G((L&�pqj@Z����� ��%@�w�Z) �pl(
���ԭ�q�u*R&c	`))(s_J��>_\'Gm7�$+!!�	
,w  Ie9�*,� (�*�(�B5[1� �Z��Iah!G��exz��J0�e�6��@V|U��4��Dm��%$͛�p
	\Gx		
}@+|=+
1�-	Ea5l)+!!�	
,y  )�䨞'A�K����ڍ,�����E\(l���&;5 ��5D���0��3�a�0-���-�����ÃpH4V	%
i
p[R"|	��#
�	6iZwcw*!!�	
,y  )�䨞,K�*�����0�a�;׋аY8�b`4�n�¨Bb�b�x�,������������(	Ƚ� %
>

2*�i*	/:�+$v*!!�	
,u  )�䨞l[�$�
�Jq[��q3�`Q[�5��:���IX!0�rAD8Cv����HPfi��iQ���AP@pC
%D
PQ46�
iciNj0w
�)#!!�	
,y  )��.q��
,G�Jr(�J�8�C��*���B�,����&<
�����h�W~-��`�,	����,�>;

8RN<,�<1T]
�c��'
qk$
@)#!;lib/img/volume_icon_dropbox.png000064400000000635147361034410012657 0ustar00�PNG


IHDR�adIDATxڍS%\fA�3�g���z����h�=��F�]"��
7{������糾3��~�9�rW���'a{����?9��n��N��Z�ߗƹ�ٺI<ˋ�2��͏���Nj��6M�څ�X����8�=�-z �[�G��v"_��d�ܹf��O0�ν��X	��@P�su��W0��}�S��t��}�D�D�Fؾ�*��6�O�j�a�>�̹gh�/,/���A�B��
Mn��DCP<��)��<�I�7�Ϳ熙Z�R��YX^*�9_�B���!��A0P�ITi4^&r.����S3�_�A�ѯ��Z���(>�ʹL���k<8=���a��g��K����Xa��)�IEND�B`�lib/img/black-close.png000064400000002072147361034410010757 0ustar00�PNG


IHDR
	��tEXtSoftwareAdobe ImageReadyq�e<%iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164460, 2020/05/12-16:04:17        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 21.2 (Macintosh)" xmpMM:InstanceID="xmp.iid:527720DA467011EB9138DD03EEC09B46" xmpMM:DocumentID="xmp.did:527720DB467011EB9138DD03EEC09B46"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:527720D8467011EB9138DD03EEC09B46" stRef:documentID="xmp.did:527720D9467011EB9138DD03EEC09B46"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��B��IDATx�l�?AQ���vv�	Mg�k��b6�f��xǻ���� %���
bT�����S�����'�c�X��*c��dz��D(+�C\-�	5��C�4V�0���t�P�y$~�[��:.x����w�`�̿�MtГ�G��.r�KM��v,a��|���#��� ��FMIEND�B`�lib/img/edit_codemirror.png000064400000001020147361034410011742 0ustar00�PNG


IHDR�a�IDATxڍ���QE�SE5�ֶͩm۶�pM�amĵm۸���t~��('J��E�j�k~���we��؋8�6��"a��:��Ǘ/_`1����c}�pMm]��C���?b����ֹ�U��a� �t�|o��}ƍ�7����kb�
'%$>��;r��q��EPA�%�\��g���߈���s	߾}Ç����+2�ҩ)�MĂ�޻g/4��ENV6	T���_�Ɛ~�1r������&L AlĂkׯcfi�����\�VQN��
Ũѣ���x���F�Cnb��K�;�d4��ѣ~�-[����9f!n�]d��/E��5a֌�����=���.5���u�vܡ�%�HHB�R]��@��'O� 3#�\�*�q�Q駆NGϬ|��*@����M�j[D�if��cc]_L-�#�rY�.�ۅ�իV�Jʖt�'�<D�t�Ey���{��b֜IEND�B`�lib/img/edit_ckeditor5.png000064400000000215147361034410011473 0ustar00�PNG


IHDR�aTIDATx�c��\�a\�5#c25bb25bb��A�����
���^��� `=
 �:�T�M8���ħ��H�g&��3y�As��IEND�B`�lib/img/edit_creativecloud.png000064400000001223147361034410012433 0ustar00�PNG


IHDR��h6ZIDATx�e�Э9����oֶۖ4��V��m۶m۶-\��AO��_�����<�w��BP�@ p��<c"�iW7�<"�C�g�k��#�
J�
�1T^�剜֎�+IXS8� ��� ����.����
T(`:
�K�|��
�F����f@���`��*w���<�W�?���n�z���Z�YQWW62T������I�6�?�"��᧟ӓe[m�W�0ahJ���BVM�5��I��~04��Fι�5��ҫ״_��w�/D"�+ZʆU_�#���Sw���wܸM"A
���?��{w��BX�(��K~�i��{n��q��˯F���UUrː�QO�wD�Y$��V���2��o
^sy�&ӱ����D[������Xkص��XL��c�Q�
^p�tR��z?�?�,��{=P�3���a�I)���l�[��G��މ�&�8�����=㔮c�.[����HD�V ��;�'[��TW��YUe��fCYWk�����dJaH�rD�t�(���P����{r%�IJ�x|lN@����o��D���\`v-��,?���:,�t%��zIEND�B`�lib/img/edit_pixlrexpress.png000064400000001637147361034410012363 0ustar00�PNG


IHDR�afIDATx�M���V�T�Nǿm۶m۶�m�6��m[y��wS~1�	�x�$
�+�:qW3��)�u`D��h������3O��C���z���)�C�a�O�c�R���A������_��]���,�z�:�U—�����U�-��R�r��썤|�F���"|U�\��0����U��WɅ���ʚ�VP_X�x����}-��:��rO���u�(Y�X�U�������N.b���Q�+�-X��ϋQrZ��0�z�c 2}�p��O~�Gg�X�Y��E��N��S���Ω.ƕ���CJt��9)5f~赋F�.
g��Η�S�M@r^,Y����sT�2��I����nFO{'F�s6`����KTX�0;�6a0ڱRac&�>~��x�&�C����Gɽ����hM
������qX^~����I�]��ѨII[^(��2���Q��_$��<�u#�O�
�G�o�ҥ���d�>E�I�wL�Z.�ƳOo����(kk��̶�Ȯ�C����"r��t�(a��I�
Y8�F������]}b^��w,�/��X��JN=��Mps�6O��
�Z��[��RA�3�0w�c�(7��XPfz�i<�my���Y�����:V	�����[zu����/�y�A.X���r�xe5�JeZ����P7Z�1�o����0:LM��&{o;L�3o�����qþS�m��[YC��C��~�gzy�	kk.�Q�����y�c��
�*"5�f)�����`��o��<��D���$BY.������wySf��P�޿�������?;~Z�y۱�w�=x���ۗ�g�_	_�z���cu����5�u��r-iIEND�B`�lib/img/edit_ckeditor.png000064400000001331147361034410011406 0ustar00�PNG


IHDR�a�IDATx�u��,G@�`�m۶�bl���R��S�m۶�l.����t�����v���/�f������R��P3b4ʫ��=���p���מ���tV��[gL���8ZA��DW^!�ƸY�L��F#eE+jeI��]�o�/��ŵSffT�ճ!s��b�a�9�VY%�"��#���Ɖ廙&�lL)�m�NRK8p���S��O�ج���%���ѷӑ]XLX#25�d���j���R�\q�%
Qȕ���6 �7�
/�M�*�LԨ���j%F�읏Y�_�~=ɍ�L����1n�N��B1�6�Y����|���Lb��g���6k�eI�*�.A\��g�w�r/��Ve]/�����p9b�^��û��k���
�8p��LN����?�l�Y9�����+N7�㍞N���@Ӳzo��:%�7�՘m��v�W�c��
�s�P����0HE1���_��;Z㰵�\��'n�c5C���]����&[�s��_�[�����y�����qo�d#IW8����	�q�R?;��Yᡯƙ���I�:x,Op�`�p��S��犷Ȣ�N�.M^�k�G��3��ψRc�D����o���j�S��t����W�JA�{+��>���A�n��IEND�B`�lib/img/volume_icon_onedrive.png000064400000000314147361034410013007 0ustar00�PNG


IHDR�a�IDATx����0���,.�S�£:ũNu���%Nq�S\�o߭���/�w���rshТ�;9@�҄
	WȄ;�@Q2j8x����}8���vꡆG�!�:e��:z��/k>�� $8CRtd�����B����v��?�0��N�FvIEND�B`�lib/img/volume_icon_googledrive.png000064400000001227147361034410013506 0ustar00�PNG


IHDR�a^IDATxڭ��Q���>Զm۶��m���նm��LwkG=�o����Q&G`��&GU��p���ģ��'��R�h����%���Ra���i�?�:E�r�Je\�곆�O�iY*�ΒfTH1�qZ�@(R��;[�QS��W��U�yZ��qv�ʼnx?y���M`D�|�(��H��JI�h�S��**��'B��7m7�)��'�*�Ř��)-���P���7v��W��3�`�V�3.jX%��&pzV$�(�=��p�u̶�S&,�<�ZzMւ�@L`�bs��O ��"r����UxD���ǎ��'�y������(��r9��t͖E�6�fs"Y�`J���
�V�T��|�өN����	��F!8�)U�VY�k~s�S�@B�	N{�i�ys�����̸�G-B�B��QB��=~N�,��@�uqN���tRf�vPJ���Ĉ��(�Z{�ٞ>}$����DLa�)�Ÿ$��"�.�
��bol�>�(��P�W
K����BJ�o�#�u�D�11f5��.ЈI�~���2s��1�R�o�{s��'�ZG���bol��G��J\�c�IEND�B`�lib/img/logo.png000064400000011435147361034410007543 0ustar00�PNG


IHDRd`ܭ'p4PLTEGpL#)"&##'!'"*'!"'''%"("!'"!$ "  !!  ## # %" !!" $"##  !&!  %!#   !���)"�����������������������������  " ���+$ ���"#%��������
�����吷����������$[WU!���AHP���tsr'')�����������������Ֆ��&	58;^\[���������ڹ�䜾�URQ���jhh��Ţ�������=DLMWa+,.���B?=/03�����Ǟ�������㚘����/)%���HFE5/+���pnm842��蓒�HPW���>85���KLN}|6=C'!`t���䏎����zxxOJGw�������ݔ������混����dbah~������篮�Ufv��܂�����z�����}����҉����Ⱦ��MZgW`g�����p��lv����~��akrs}�@JT��–��mz�er~���!��?�&tRNS��fw
�Uq�;����ȀK)0�#���A�_���k0b��rIDATh�͚W��5���c��"f(����K$r%���`��b�����M[�˽sf@g�g޻k�W���c��9��AAG���A���d��!g��BNGFF�����c'�K�M���7㝈M9��t�Fz�����/����p���0
ҳ:�}�l�=�����DD�%�=<�AC:x�t�Gɩ���e���V���b�>�O���������XiGeςKud��dL���Ѭ
fO�P��tDS�%&oV'�U�w�MG�,,#
�^Ȑ3�_$� �����gL�tr�\��>�'!�n~�PRR�O�[za�c��<
����QT�!du*�h�S�X񥏐Q�KL�qxVhvb�!H�
qJ�r��s��"`�zS�)�H�G��������`LVm����w`�>�2X	�ʾ�#%�s	bه*�QRR5!K�Fh4�u���t�:�q�vD.����qQ�Dħc*�Sɞ5<-�#�a���%:�!�G�}RkL�����d]߼n44�
�3|��z�g:���@gr�vk�Q��$pZ����ȷ��
�%�:�}�r�"7���+�=�<�O)Y�X��GȨ��)���X�c��!"y�]�Y��D�g�3iԴ*/�*)o�8Auf���`��C��Q)2L�C�yCV���������e8�Jʫ�ʫ��q8j�
��'�IA�I��\�N��u��zM�G��$bçr
QR�� ��)zZR�e䘐��JMCSճ�6��Ꮔ煊
kY������
Zy�ߤLW���-��vd���ϛ4
혧^��^��ɇ%�D��f9E�@�P��	+�*٥� �� ���0WR�6]�4���dV����|4�!�]���
(��+�KΆ�h�z$\�I��ܟ��d��3T�%Qi8\��'UU=�P�G}���|�h����"b~�R��peq�����f�!��������q"�m	����T�_�^�}�H�r��Jz���U�?#�X���A4�^!R?�[#�#�Aqo�|EU���C=�h���	W����ڔ��1��&RJzR`�ұ�o/n<�B ���`�
p�N�v�՚�b��b�q,+�YrRcB�s�cS�K��1��lߠ`�0���Wv��=��¤5��r��I�C
���m�t��ȹ�
Z0F��x����IJ���ܥ��NUo�M�Wm�@%y�rR|�u�����;(ؾQ�����?�z@
�n�Dȸ�P'�"��h6g�]P�lcqc�H���퍗f�&3�_�����/r�t\�/DƱ@5L6��7�;K0����]F�8N��y�(�g�;�$�
P_�*�
��w�W�uʘ1���5b٪1�t�Dl�t��M��4��+>$55�[3�xpuc
c
��]K�|H,��aGA[6Ƙ����ex'�W���A9u6:
��^ӫ^l\���D&W9�f��r�Ƞx �M�M�BI�'?�Y���% $�/�3���U�`���aZ]�nI��DB����3�탬.�楇�2��v�a�.<����CW�LO.�
��1��������<(��]y٬cGd�X=�V��*�.{��Q[wgd��K;E�P�rA@�Tf
��`��H�#_~p��]�
�7�1Q����ʇ�f|�ΰ�t�#-t���v�(W���x���={PЮ��`�q0"�ٰ������q��3�������-l@B�7�w����b�C@� ��f���4��lz{�ۦC�,����}�
_�wpiȰ�qt�I�ߔ�]�Vv�2ˮ���Q�7刵���Ϛv�8�K�� `�;�潵���
Ja�&78=42�4<@NJ�^F�岲�����م+�fP��noV>�gʏRK+��I�"O(�h������n-O
���A!i�ځ����m��>m�G����se���=`ww�3BO���KS��G ��:�'�2�R��}ȸ���&������1�	Pk��;�@��<
��	d�+�b@�\��6�7�_�v���������	&�R��
i��L='="�M����0�@�΋q��r+�SO(�:�k~�O͵����A4��AD ��ڵ�9�^�N����Z��Yi���"�:,HO2Ts�r�br\~�A��6����s��p�2B��\�L�@cr)�z���`$�r�2mia�����`�N7O���D/��s�#�pv���fװW.p���kp(8�TB�����?3���R��p����
$+(Mϔpf;q�!����d>�)��օ%j�H��Ts�)J���o��R�����p�巌e�.3�3�T�PTh�2yW��M�th�r����]2|�v�b�F�]��޳	Pɠ^���e>_��;K��#�	f0���j�!����'��px�ذs�������a�E��k(��|S��v̥.�/(�Z`H�e/�}"�@Ey�����ָCU_�����,��l�����y�w-��s���%_�M��D��e��0�y'0�z'UG�	G%�Q����	���ٽ �32�t���1�,wS^�{g�H����?���^Q.A
�6����͘#�2f�k��j/��{�rBY���lL���z�:�cg��'<<zq��Z�6;Av��‏^Co3�P��U�&:��1�?�������?���,�	�f+#H��8i.D}��e-��r��.E0����N��JE�&+~�x}_,��ëw��ֺj!H�\�7$��sȤqy�O�6��+�Թ����y�����B���	�ev�:�d7(e2�V�eתPr�Ox���]H���@x�O(�sjR�c����qҾ��P���?���h���[\����w�b�/��{�E� �!���|.�o�����[t
��w���}j���$"K�<+u�u-
xh �+M��l��b���A��!w[
��KD��S.�Y}FAAX'������܀�Lox���fV'�>őr�C��ƭ�.��ejX�`�z�Z�#��=�W���E �l��
�J+}�}(�G4�}|�E=ygB3r��{��@��F[[%�L��3�z[����H�+�D�kPs�nHDG�l�����o�݂3Kf�w�^��ڞ�G_mtfoE;5���;��Ϳ�aI��=`@���h_�i����މ/X]"�i���7��r��]"�Yyĺ�����&D��x��]����!�`��J�Y��<��]i{Oq��
2-8��;+��*�hR)�?΀̷�M0<����n�{r�
���a���.b�g���/&FƝ���bh����.h�z���;��a1�E�.�[W��]ID������(4�������FځD����!IE6�:+�\��HD���
�*4��K�6&���Hf�aw3�X�XSs��H�]�O�k����EM��%�������v�v�/_
%�z�$V?�����'nj`����+�ݐ�p�՜�]N��L(:8�2��}���ߗ�n��~��*�����k�G�ݻJ����E��Sk����
�Iml��n����i����b뽊Z"�ixL��@��X^����$��*�`R����L�~�_���'W*j�ϩ|�3��܃t�Х�>2<Na������12
a�)JE
�ϗO@��7�'�ȣ���\r.b4?��ך1��
ٮ��Z���u>u��y/l���>�	����}t�puz:ӓ+|�/괌xɨ7���i�!��֥��W�K�_��}� n���S�D���S�	����]�=B��&ENR���gUd�Z6�,��_J��.1��@>@���=Ha_^TLHP����s(��7��$�����:!�{��@~�ب� ��?��l��·'��& ǐ]�ߓX�/���#���	�B���hǁ+<~�r�W7�*��*ѷ��LI�`�Wҳ�{�>�'��pm�iD�o|�=��w�1��3B��׻��x\�ܳ��
�c�l��'B1�	�c�WI��k�����JB�4�m!<%96;*蜴~w�&��٬���8g��='͏���O�����e��p�(�?O%IEND�B`�lib/img/dialogs.png000064400000013272147361034410010226 0ustar00�PNG


IHDR ��A�k�PLTEGpL

.28���!3?��\JA���UZXX��9*6BW���NUQLcdO]`��˃�֚n<o�����ő��osy%"'E|��幹�KdcDt����{�O��4'@x������z���գ�ȕ����<O���ň��kko�4&��Ԃ��v��t�Ϫu-0/,v����[T>k�ˉ�2F���K_��;������������������	{���}��ACE������9;>�FHK������a�ځ�����t�����+-/����`JU��H�Л����$&'���������w��t�0}ţ����D��YA�hR�����o\/U�5���X\`��<�ʺ������m���3]�246TVY��4�K1o��JMP�(K���t~��WZ]������<k��R9�}"���ORU�����=-��/U�����R�����\��������>p�r��o���B&��5Ce�r�*ez���|�����9��e��#p���ģ����ꐑ��H��]��Q��Qs���Jl����*�~kv��jlmm�����b�€�BV���2��U�⍊����9��0��S���Umys��h�t_ڜ7�<��Dё2`�5��x�]�YFIe�����*�����Η|{o�����f���5�ф������l�ݲc�j2�A���MstRNSB:-T�q�1`��aCD����藙N������礤͸���r�G���~��ۮ�DZ�Ԫ������������������������������������������������'�
�5IDATh޴��O���`�6a�vR5��*i�j�U��}�VݪLp��#�c!��Z	v�S�Q$�Pc�l�H����I�dU��\ RH*��@H�Q6+u���s�g�x\e��ϝ��3�9gt��Z[�`���1���B��͠
���œDZ��ǫ�Lܶa(��z�9��fVƷ�{$J�
i�A�۰���C
�\��q1"yCi�t���͉FX��?�0~t
�>�t;*l�� &�`J�
t;:���M�A�@�35�a�y�f�FO
��(D��T8�b�����ܠD�G��1Zh�W�z8��ܔ�g
�)�`"�ࠗL�Sx�S�M���DAni9��Z^Q憼t�z���EvD�m�s�!
�ߗ��ͤ���
��]���,�x.��x������`������^��^܆��]���ҟ��Q��AT�¹�J��nC�>�v���䎱m�1D�_�i~�Me�}� �¢B�e&�#݆t����'FU<�� ��������8�Ð�+"����&6�,��3UR�V�)3X�����e�eF�ެ��f��D�[��p=j�I��F�>X��X �|$i-���X�"�I��}�J�$��@v3�3@�$����`�+6C
ɜ	*�~� ��d2|E>"��`h���+bzfC2�#�H�n��q�l���xGu��	��AL��f���D|��.�>�+،�9��籗 4#�|,S����"~?�v� ���+ԇ�}�O�Ğ��m��=!�Cҽ)���o�iI��A��|�q�ۢ���Vo�ŶB�c�KM(H��,/	�z�Kt_�V_(
*�9.F���g�Pj"�a�����fޗ�����ey��'�`R�~wH�/!6�|�J�C��y>�;Q��v>�I����>�c7F���`�R��1`/��x�*�k����W�k��4�w�L��և�d�����V̟�$+��5I�W�m!=5�C����?�>=.�F}8z2՞j��N�Վ��S��SO��x~W\[�+8�PEE*���r��Q�E�P�����S���,��B���@L�@��Ǔ�H���mJCE�����
з$��x�R���);�^gɵ�	�F��b'Q�w�%/R�
��Ǡ���;ΰ"[�Ev"xJ�B��A���$g���t�#
u
-57v��-�5��[��n��и�����,��.�<�-8���~}�u_���^^���F�#tݛ�z�G���[�AAK��^�$��
����>�O*�}/@�=4.����(����Ł�Qi��Q����������(�G�O�?�3,�}"�������8RM�>���ϮC���[?k�k��G��Ǫ>b�|K@��a�P�8QH�����T�g�i�ĩc
�%�^	���3
c�c Ls��̌0��[h�a�e@�ܘl�0��iZa	��]��B��q�x��Lڂ�J��g
�GE?,*��
F�׀�5���	a���������KS۫�W�>��,	У��_��5� �vg@Q~!
m2�ګ�r}�6�rY�>�5�>���X�����+�Y�>����UևjQP�n@Q����M���p���@�+9vD]�ŀ��>�,zy�(3��f�>0���W��0�a(.SQaP%?�0�ɏ鏅����P�6ѦL{Y�����^N���v�Ҟ��Ll1�)�HE���\�sf�����krά���BsM0��J�D��n��CyM��ô_��P^
a�GyM����AY��<~R�z�J�!4M+���,d����"zMD`�
�-�&_�!)St� ��?�#=eVP��kR,���!�P_=�M���C*���%�R��t:�#.��7a��?{:�����*{
�&VW�:?���q8�:�����p�`窓
�o�qݾZ���z�{o��0111⚸V�k�p�ZK�T�w�ވ�ޕ \�ℽ���K%�*�[�n���<�€{o�6T(��D�T��r=��Ҽv�]��&������g	gA����_�|	�(��^nF.ӏ�݃���A��/����2�!��^�pp�L��p	2n�=�y󦢇��o��!
��么�E���bs���+����߂��B'9��.�|�x���Q�K�%�e�Bw�W,߼�`,a�*�|���s��_ww��vv�'����+��y��0h���,����R�.���`����A���B��/L��\ͻ�����L>��`75`�$�x"3�?J��`3�K��$p&��q?��p�E�4D�r�4_�K����O�y��s�����Y�ۭ�Y���J¯f����ˑ���Gd�|~x�cI8~��nW�]�����7w��Y>�I���0���pfp�����Ụ�WKK���i�R�.��,�u��<��O˷����w��`x2����?��O�(��7��Z[+�o�f��F����L�Ll�2�6�XO)�W��-�+=8n�iQszNJf+�H`B����g�(.R��@�Ĝ뺐��BBqcQ�$B�Zi����{�f23�q�����M��}�{�͛y��^��%ɽŠf������n���F@�	3x�}qg'&�ne����nbw��?vv^,q1�}��M�F��e�uB�����E;�;�䝀�3/%�����7��硕	�%3�;A3��DQ܄L0�6ʤgZ�����:��m0 ��&dp&S>E��|����Ձ�W/]U'���{��%�\R.�
��і�K$�����R�	�_̀�N�l+�{��)V�qI��WFQjo�?��z���՟퇏�PC����ƽ�/�;��Z~��r�^_ �k9GR�5���h��8J#�{I2W_��N��Yi:W�#W��@2��{�O?���b2������~<qt�]��Y�z�ԇN��@5��r"
�}�W����w���A��$�L�=�������TQ��r���H,�~�n��ܢD>��.���3�>2��=�j��0T����Ӵ������e�~a��f��f�i4Z�
a���`pD#��s,�����?E󇁐��0HpOU�3�ţG���&�<�E�Iӧ�C��|_�C��R@%B	~�WA���;���0J�|wt$8SO`x |��a����#^/���j!����8H��0��*���
a���_Ծ����,;"�韧��L��fk�O�Y�!�,� PNAB�dDs
"��U��hMAD��iMA��'�J�f�۷�� ����$	����&uZY�I�,
ѤvE���cz�z����3����+g��O?9��Fs�z��H�^��F�a_�,}�]��aߜ[�֯��1���.�}}b�hM����?��Cٗ��͟���t�]�\(}\:î��-�斵��oKsss��v����B���n���&�bc���'����z�QsE�<�0�DdH;#R9���,HR�3�*���;c�ސT�h�[��5�
��U@M�jt棂3/�%����*V���XZ��\:�LƆ�&_!yw6�m�M4C�
��6��4-�m,ژ;D�����(�.����Ͽ�y�U*z�
LWQ6jR�b_��>X�Ul���UܕW�	�#����Z�H�ؔ
�9��d��4]�
�u�3�V�A�H����M*kA�Pm4�x�⊊�2yAh4�gFvEE��p�����x�6W���)G
�EnZ�$_�5�(�1�C]�Z#�Vڄ���E$�Z�䡬\�1�3Ї�PV��5�{C����`/�J�1F
��'��E"h���G��d�w��l�ݦ�1+[Y+&��Z����G�$Wư�W��N��k�cc��v������k��-"��w!�ee����;אo-ށsc��4�Z��OM���X�Rk)���ͯ�k��EVta�3 
Wlb�[ĝ�9�_�@g��Q�t%�J�e�S�q�l�����o|�L#~x�O��2<�GƧE�go��0�N
f��x\���������na�h\l�=>��w>���0ꏈ���$��J�~��x*6�ӹ,[�c���>�j��mlqIJ�t���x�X:][tH��Y�r�#K�)��MKg+_�k�F����������Ѳ���+�l��ӧ�l�b�tG
v��Z�f���!"J�G����X,d�E ~�u�YqpS�F�qtp�3�q��eB����u��h骡��`h�/����Q�fŲ�>�1kkW�9�0ww�Z-u��`��Q��iw�բ�_��fs(�����J�Cfs�[:�0�V�ّ��������嶓��UB��� ��h!�~��+o���V��۲�t��qn���
�s.�D����R�eeH���^y�# �J�\�!�WB[�c��o����3����eE��\&�����z��_7
�m]�2���B��R�X���5���D�T1�ьG��dvp�w.�1��pN�6��#�5�@�Y�\b��9�Y(���4wĪ���0z���@%�0id[O�ޞᏁ}�7���6<T���[��X��h��rg��5�%R��&<Z6'�%�	n��`�:�2O�,��lFp���3!���f��(\�mn�0rB���s��.�F B�W�3|�!�K��3�v<����@�2<̹슭��v�����r��7�������8W���QU�x������EN�;��6�?LT����?�a��e�JIEND�B`�lib/img/icons-big.svg000064400000063532147361034410010475 0ustar00<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="1800" viewBox="0 0 480 18000"><defs><linearGradient id="a"><stop offset="0" stop-color="#85b1d9"/><stop offset="1" stop-color="#dff0fe"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" y2="12.5" x2="20.2" y1="35.7" x1="20.2" id="f" xlink:href="#a" gradientTransform="translate(-1.2 27) scale(1.23846)"/><linearGradient y2="7.4" x2="21.9" y1="35.4" x1="21.7" gradientUnits="userSpaceOnUse" id="e" xlink:href="#a" gradientTransform="matrix(1.27105 0 0 1.27105 -1.2 -24.2)"/><filter id="g" color-interpolation-filters="sRGB"><feColorMatrix values="1 0 0 -0.2 -0 0 1 0 -0.2 -0 0 0 1 -0.2 -0 0 0 0 1 0"/></filter><filter id="o" color-interpolation-filters="sRGB"><feColorMatrix type="hueRotate" values="203" result="color1"/><feColorMatrix type="saturate" values=".7" result="color2"/></filter><filter id="n" color-interpolation-filters="sRGB"><feColorMatrix type="hueRotate" values="135" result="color1"/><feColorMatrix type="saturate" values=".7" result="color2"/></filter><linearGradient id="b"><stop offset="0" stop-color="#18a303"/><stop offset="1" stop-color="#43c330"/></linearGradient><linearGradient id="p" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" y1="991.7" y2="977"><stop offset="0" stop-color="#535353"/><stop offset="1" stop-color="#7e7e7e"/></linearGradient><linearGradient id="q" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" xlink:href="#c" y1="991.7" y2="977"/><linearGradient id="c"><stop offset="0" stop-color="#a33e03"/><stop offset="1" stop-color="#d36118"/></linearGradient><linearGradient id="r" gradientUnits="userSpaceOnUse" x1="41" x2="5" xlink:href="#c" y1="46" y2="2"/><linearGradient id="s" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" xlink:href="#b" y1="991.7" y2="977"/><linearGradient id="t" gradientUnits="userSpaceOnUse" x1="41" x2="7" xlink:href="#b" y1="47" y2="3"/><linearGradient id="u" gradientTransform="matrix(2.9999 0 0 2.99917 -328 -2928.3)" gradientUnits="userSpaceOnUse" x1="123.7" x2="111.7" xlink:href="#d" y1="991.7" y2="977"/><linearGradient id="d"><stop offset="0" stop-color="#0369a3"/><stop offset="1" stop-color="#1c99e0"/></linearGradient><linearGradient id="v" gradientTransform="matrix(1.55551 0 0 1.66668 -316 1319)" gradientUnits="userSpaceOnUse" x1="230.1" x2="204.4" xlink:href="#d" y1="-762.6" y2="-791.4"/></defs><g transform="translate(0 -8369.4) scale(9.93789)"><path d="M42 854.6v35.2H6V843h24.4z" fill="#fff"/><path d="M30.2 843.4l11.3 11.2V889H6.8v-45.5h23.5m.6-1.3H5.3v48.3H43v-36.3z" fill="#788b9c"/><path d="M42 854.6v.4H30v-12h.4z" fill="#eef0f2"/><path d="M30.9 844.2l10 10h-10v-10m0-2h-1.3v13.5H43v-1.3z" fill="#788b9c"/><path word-spacing="0" letter-spacing="0" font-size="8.5" font-weight="400" aria-label="?" d="M21 880h4v4h-4zm3.8-2.2h-3.6v-2.5q0-1.6.5-2.6t2.3-2.4l1.7-1.4q1-.8 1.6-1.6.5-.7.5-1.5 0-1.4-1.3-2.2-1.3-1-3.3-1-1.5 0-3.3.6-1.7.6-3.6 1.6v-3q1.9-.8 3.7-1.3 1.9-.4 3.8-.4 3.6 0 5.7 1.5 2.2 1.6 2.2 4 0 1.3-.7 2.4-.7 1-2.4 2.4l-1.8 1.4-1.3 1q-.4.5-.5.9l-.2.8v1.3z" font-family="sans-serif" fill="navy"/><path d="M.6 937.2v-39.5h13l4 3.8h30.1v35.7z" fill="#b6dcfe"/><path d="M13.5 898.3l3.8 3.8h29.8v34.4H1.3v-38.2h12m.7-1.2H0v40.7h48.3v-36.9H17.8z" fill="#4788c7"/><path d="M.7 21v-33.1h13.6l3.8-2.6h29.6V21z" fill="url(#e)" transform="translate(0 916.2)"/><path d="M47 902.1v34.4H1.4v-31.8h13l.4-.2 3.5-2.4h28.9m1.2-1.2H17.8l-3.8 2.6H0v34.2h48.3z" fill="#4788c7"/><path d="M.6 987.5V949h12.8l3.7 3.8h25.7v34.7z" fill="#b6dcfe"/><path d="M13 949.6l3.8 3.8h25.5v33.5h-41v-37.3H13m.6-1.2H0v39.7h43.3v-36H17.4z" fill="#4788c7"/><path d="M.8 71l4.7-26h13.4l3.7-2.5h25L42.9 71z" fill="url(#f)" transform="translate(0 916.5)"/><path d="M46.9 959.6l-4.5 27.2H1.5L6 962h13l.3-.2 3.3-2.2h24.2m1.5-1.4h-26l-3.7 2.5H5L0 988h43.3z" fill="#4788c7"/><path d="M6 1040.8v-47h24.5l11.6 11.7v35.1z" fill="#fff"/><path d="M30.2 994.5l11.3 11v34.5H6.8v-45.6h23.5m.6-1.3H5.3v48.3H43v-36.2z" fill="#4788c7"/><path d="M30 1006v-12h.5l11.6 11.6v.4z" fill="#dff0fe"/><path d="M30.8 995.1l10 10h-10v-10m0-2h-1.3v13.6h13.4v-1.3z" fill="#4788c7"/><path stroke-miterlimit="10" d="M15.3 1015.3h1.5v6m6.6-.6c-.7 0-1.3-.7-1.3-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .7-.6 1.3-1.4 1.3zm8 0c-.7 0-1.3-.7-1.3-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .7-.6 1.3-1.4 1.3zm0 4h1.5v6m-8.1-.6c-.8 0-1.4-.6-1.4-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .8-.6 1.4-1.3 1.4zm-8 0c-.9 0-1.5-.6-1.5-1.4v-2.7a1.4 1.4 0 0 1 2.7 0v2.7c0 .8-.6 1.4-1.3 1.4z" fill="none" stroke="#4788c7" stroke-width="1.3"/><g id="k"><path d="M6.5 37.5v-35h18.3l8.7 8.7v26.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#fff"/><path d="M24.6 3l8.4 8.4V37H7V3h17.6m.4-1H6v36h28V11z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#4788c7"/><path d="M24.5 11.5v-9h.3l8.7 8.7v.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#dff2fe"/><path d="M25 3.4l7.6 7.6H25V3.4M25 2h-1v10h10v-1z" transform="matrix(1.34766 0 0 1.34167 -2.8 1040.7)" fill="#4788c7"/><path d="M27.5 17h-15a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h15c.3 0 .5.2.5.5s-.2.5-.5.5zm-4 3h-11a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h11c.3 0 .5.2.5.5s-.2.5-.5.5zm4 3h-15a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h15c.3 0 .5.2.5.5s-.2.5-.5.5zm-4 3h-11a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h11c.3 0 .5.2.5.5s-.2.5-.5.5zm4 3h-15a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h15c.3 0 .5.2.5.5s-.2.5-.5.5z" transform="matrix(1.34766 0 0 1.34167 -2.8 1042)" fill="#4788c7"/></g><path d="M6 1094.5h24.5l11.7 11.7v35.2H6z" fill="#fff"/><path d="M30.2 1095.2l11.3 11.1v34.4H6.8V1095h23.5m.6-1.3H5.3v48.3H43v-36.2z" fill="#2ea26c"/><path d="M30.1 1094.5h.4l11.7 11.7v.4h-12z" fill="#e8f8f1"/><path d="M30.8 1095.7l10.1 10.1h-10v-10m0-2h-1.4v13.5H43v-1.3z" fill="#2ea26c"/><g transform="matrix(1.34166 0 0 1.34166 -2.8 1093.8)" filter="url(#g)"><path d="M28 29v-3l-5-4.8-3 2.8 4.6 5z" fill="#79efa8"/><circle cx="26" cy="17" r="2" fill="#b5ffc9"/><path d="M26 29H12v-4l5-5z" fill="#b5ffc9"/></g><path d="M6 1191.8v-47h24.5l11.7 11.7v35.2z" fill="#fff"/><path d="M30.2 1145.6l11.3 11.1v34.3H6.8v-45.5h23.5m.6-1.5H5.3v48.3H43v-36.2z" fill="#7bad2a"/><path d="M42.2 1157h-12v-12.2h.3l11.7 11.7z" fill="#f2f9e7"/><path d="M30.8 1146l10.2 10.2H31v-10.1m0-2h-1.5v13.6H43v-1.4z" fill="#7bad2a"/><path d="M24.8 1177.9v-12.7c3.4 0 5.3 1.3 5.3 1.3v2.7s-2.4-1.4-4.7-1.4" fill="#c9e69a"/><path d="M25.4 1177.9h-1.3v-13.4h.7c3.7 0 5.6 1.5 5.7 1.5h.3v4.2l-1-.5s-2.4-1.2-4.4-1.2zm0-10.7c1.5 0 3.1.5 4 .9v-1.2c-.5-.3-1.8-1-4-1z" fill="#7bad2a"/><g transform="matrix(1.34166 0 0 1.34166 -2.8 1143)"><circle cx="18" cy="26" r="2.5" fill="#c4e490"/><path d="M18 24a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2m0-1a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3z" fill="#7bad2a"/></g><path d="M30.5 1195l11.7 11.7v35.2H6V1195z" fill="#fff"/><path d="M30.2 1195.8l11.3 11.2v34.2H6.8v-45.4h23.5m.6-1.3H5.3v48.2H43v-36.2z" fill="#788b9c"/><path d="M30.5 1195l11.7 11.7v.4h-12v-12z" fill="#eef0f2"/><path d="M30.8 1196.3l10.1 10.1h-10v-10.1m0-2h-1.4v13.5H43v-1.3z" fill="#788b9c"/><path d="M18.8 1231.8l14.8-8.3-14.8-8.4z" fill="#8bb7f0"/><g><path d="M6 1443.4v-47h24.5l11.7 11.7v35.2z" fill="#fff"/><path d="M30.2 1397.1l11.3 11v34.5H6.8v-45.7h23.5m.6-1.3H5.3v48.3H43v-36.2z" fill="#4788c7"/><path d="M30.1 1408.5v-12h.4l11.7 11.6v.4z" fill="#dff0fe"/><path d="M30.8 1397.6l10.1 10h-10v-10m0-2h-1.4v13.6H43v-1.3z" fill="#4788c7"/><path d="M36.7 1426.3a12.5 12.5 0 0 1-25 0c0-6.8 5.6-12.4 12.5-12.4 7 0 12.5 5.6 12.5 12.4z" fill="#c2e8ff"/><path d="M31.5 1436l-.4-1.2a8 8 0 0 1-.6-1.8v-.5c0-.4-.2-.9-.6-1.3l-.6-.4h-.2c-.5-.3-1-.3-1.4-.3-.8 0-1.2 0-1.6-.6v-1.1l.3-.6.3-.6.4-.9.5-1.3.1-.6v-.3l.6-.3h.1l.1-.2c.1 0 .3-.1.3-.4v-.4l.1-.2 1-1a30 30 0 0 0 1.4-1.3v-.5c0-.1-.2-.3-.4-.3a3 3 0 0 0-.4-.1l-.3-.2v-.1l.4-.7.5-.8.3-.3c.1-.3.3-.5.5-.6a1 1 0 0 1 .8 0 12.4 12.4 0 0 1-1 19.3z" fill="#bae0bd"/><path d="M32.4 1417.4a12 12 0 0 1 3.9 8.9c0 3.7-1.6 7.1-4.5 9.5a2 2 0 0 1-.3-1v-.2c-.4-.6-.5-1-.6-1.7v-.4c-.2-.4-.3-1-.7-1.5-.2-.3-.6-.5-.8-.5h-.2l-1.5-.4c-.8 0-1 0-1.3-.3V1429l.3-.6.3-.6.4-.8.6-1.4V1424.7l.5-.2.2-.1c.1-.1.4-.3.4-.8v-.4l1-1 1-1c.3 0 .4-.2.5-.4v-.7a1 1 0 0 0-.6-.5l-.4-.1.7-1.3.3-.3.4-.5h.4m0-.7h-.5c-.4.2-.7.8-1 1.1l-1 1.5c0 .2-.3.5 0 .6h.2l.7.4c.1 0 .3.2.1.3v.2l-2.3 2-.3.6s.2 0 .2.3l-.3.3-.7.4c-.2.3 0 .7-.2 1 0 .8-.6 1.3-.9 2l-.7 1.4c0 .6 0 1 .2 1.4.7 1 2 .5 3 1 .3 0 .6 0 .7.3.5.5.5 1.2.6 1.6l.6 1.9c.1.7.4 1.4.6 2l.3-.2a12.9 12.9 0 0 0 1-19.9h-.3z" fill="#5e9c76"/><path d="M24.3 1419.3l-.1-1.2.1-.7c.1-.4.2-.8.1-1.3l-.1-1.2v-.3h-1.1v-.4l.2-.4a12.3 12.3 0 0 1 5 .7l-.6 1.1v.2c-.2.5-.5 1-.8 1.1l-1 1-.8.6-.7.6a2.7 2.7 0 0 0-.3.2z" fill="#bae0bd"/><path d="M24.1 1414.1c1.3 0 2.6.2 4 .6l-.5.8v.2a2 2 0 0 1-.7 1l-1 1-.8.5-.6.6v-.7l.1-.6c.1-.4.3-.8.2-1.4l-.2-1.3v-.4l-.5-.2h-.4.4m0-.8h-.8l-.4.8c-.1.7.5.6 1 .7l.2 1.3c.2.7-.3 1.2-.3 2 0 .3 0 1.2.3 1.5h.2l.5-.3 1.3-1 1.2-1 1-1.5c0-.3.5-1 .4-1.6a13 13 0 0 0-4.6-.9z" fill="#5e9c76"/><path d="M20.4 1438.4a12.5 12.5 0 0 1-2.2-1v-.5l-.2-.6-.2-.8a18.8 18.8 0 0 0-.6-1.5c-.2-.5-.5-1-.5-1.5v-.5c0-.5 0-1-.3-1.7h2.9l.3.1c.3.1.7.2.9.4v.3l.3.5c.6.7 1.3.8 2 1l.6.2c.1 0 .2 0 .2.3.2.4 0 1 0 1.1l-.2.3c0 .4-.2.8-.4 1l-.8.5-.8.9-.4.5h-.1v.2l-.5.7zm-5-8.8l-.7-.3c-.3 0-.6-.2-.8-.3-1-.6-1.7-1.5-2-2.2 0-.2-.3-.3-.4-.4 0-3.5 1.4-6.7 3.8-9a12 12 0 0 1 3.6-.8h.7c.4.2.8.4 1 .7.3.3.7.6.7 1H20l-.6-.6a1 1 0 0 0-.4 0c-1 0-2.3 1.8-2.4 2.5a2 2 0 0 0 0 1.4c.2.3.5.5.8.6.5 0 1-.4 1.5-1l.5-.2.4-.3.2-.1h.2c.9 0 1.5.8 1.7 1.6v.5c-.3.6-1.4 1-2.4 1.4h-.7c-1 .4-1.8 1.4-1.8 2.4l-.1.8a1 1 0 0 0-.6-.5c-.1-.2-.2-.2-.5-.2l-.4-.1-.6-.2a1 1 0 0 0-.5.2c-.3.2-.8.8-.8 1.4 0 .2 0 .5.3.7l.4.2h.6v.1a57.3 57.3 0 0 0 .5.7z" fill="#bae0bd"/><path d="M18.9 1417h.6l1 .6.3.4h-.5l-.5-.5H19.5l-.4-.2c-1.3 0-2.6 2-2.8 2.7-.1.5-.1 1.3.2 1.8.2.4.5.6 1 .7.6 0 1-.4 1.7-1l.5-.2.3-.3.2-.1c.7 0 1.3.7 1.5 1.4v.2c-.2.4-1 1-2.1 1.3h-.4a1 1 0 0 0-.5 0c-1 .4-2 1.5-2 2.6v.1a1 1 0 0 0-.8-.2l-.3-.1a2 2 0 0 0-.7-.2c-.3 0-.5 0-.7.2v.1c-.4.2-.9.9-.9 1.6v.2c-.5-.5-1-1-1.2-1.5a7 7 0 0 0-.2-.3 12 12 0 0 1 3.6-8.8c1.3-.3 2.5-.6 3.4-.6m.3 13.8a16.5 16.5 0 0 0 1 .3v.2l.2.5v.2c.8.7 1.6 1 2.2 1l.7.2v1h-.1l-.1.3-.3.9-.7.4h-.2l-1 1-.3.5-.2.2-.2.5-1.8-.7v-.4l-.1-.5v-.2l-.3-.7-.2-.8a8 8 0 0 0-.4-.8 3 3 0 0 1-.4-1.3v-.5l-.1-1.3H19m-.2-14.5c-1 0-2.5.2-3.8.6-2.4 2.5-3.9 5.8-3.9 9.4v.2l.3.4c.4 1 1.3 1.8 2.2 2.4.6.4 1.7.4 2.3 1.1.5.6.4 1.3.4 2 0 1 .6 1.7.9 2.5l.4 1.4.2 1.2c.8.6 1.7.9 2.5 1 .2 0 .8-.7.8-1 .4-.3.7-1 1.2-1.2l.8-.5c.3-.3.5-1 .6-1.4.2-.3.3-1 .2-1.4-.1-.2-.2-.4-.5-.5-.8-.3-1.7-.3-2.4-1l-.3-1-1.5-.5h-3c-.4-.2-.7-.7-1-1.2 0 0 0-.4-.3-.4H14.1v-.5c0-.4.2-.8.4-1.1l.4-.1 1 .2.4.2c.4.1.5.7.5 1.1v.3c0 .2.2.2.3.2l.3-2.2c0-1 .9-1.8 1.6-2h.7c1-.3 3-1.2 2.7-2.4-.3-1-1-2-2.1-2h-.4l-.7.6c-.4.3-1.3 1-1.7 1-.8 0-.8-1-.6-1.5 0-.5 1.3-2.3 2-2.3h.3l.6.6c.3.3.7.3 1.2.3l.4-.3v-.3c0-.4-.3-.8-.6-1-.3-.4-.7-.7-1.2-.8a3 3 0 0 0-.8 0z" fill="#5e9c76"/><g><path d="M24.1 1414.1a12.2 12.2 0 1 1 0 24.4 12.2 12.2 0 0 1 0-24.4m0-.7a12.9 12.9 0 1 0 0 25.8 12.9 12.9 0 0 0 0-25.8z" fill="#7496c4"/></g></g><g><path d="M6 1292.5v-47h24.5l11.7 11.6v35.3z" fill="#fff"/><path d="M30.2 1246.2l11.3 11v34.5H6.8V1246h23.5m.6-1.3H5.3v48.3H43v-36.3z" fill="#4788c7"/><path d="M30.1 1257.5v-12h.4l11.7 11.6v.4z" fill="#dff0fe"/><path d="M30.8 1246.7l10.1 10h-10v-10m0-2h-1.4v13.6H43v-1.4z" fill="#4788c7"/><path d="M34.2 1266.2H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h20.2c.4 0 .7.3.7.6 0 .4-.3.7-.7.7z" fill="purple"/><path d="M28.8 1270.2H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h15c.2 0 .5.3.5.6 0 .4-.3.7-.6.7z" fill="#f55"/><path d="M34.2 1274.3H14a.7.7 0 0 1-.7-.8c0-.3.3-.6.7-.6h20.2c.4 0 .7.3.7.6 0 .5-.3.8-.7.8z" fill="green"/><path d="M28.8 1278.3H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h15c.2 0 .5.3.5.6 0 .4-.3.7-.6.7z" fill="olive"/><path d="M34.2 1282.3H14a.7.7 0 0 1-.7-.7c0-.3.3-.6.7-.6h20.2c.4 0 .7.3.7.6 0 .4-.3.7-.7.7z" fill="#500"/></g><g><path d="M42.2 1307.4v35.2H6v-47h24.5z" fill="#fff"/><path d="M30.2 1296.3l11.3 11.3v34.4H6.8v-45.7h23.5m.6-1.3H5.3v48.3H43V1307z" fill="#c74343"/><path d="M42.2 1307.4v.4h-12v-12.1h.3z" fill="#ffd9d9"/><path d="M30.8 1296.9L41 1307H31v-10.2m0-2h-1.5v13.5H43v-1.3zm-16 40.7c-1 0-1.7-.6-1.7-1.3 0-1.9 2.4-3.3 5.6-4.4a38.2 38.2 0 0 0 3.5-8c-.8-2-1.2-3.7-1.2-5 0-.7 0-1.4.4-1.8.2-.5.8-.9 1.4-.9.6 0 1.1.3 1.4.8.2.4.2 1 .2 1.6 0 1.2-.4 3-.9 5a26.2 26.2 0 0 0 3.7 6.3 13 13 0 0 1 5.6.3c1.3.4 1.6 1.2 1.6 1.7s-.3 2-2.6 2a7 7 0 0 1-5.2-2.8c-2.4.3-5 .8-7.2 1.5-1.2 3-3 5-4.7 5zm-.3-1.3h.2c.7 0 1.9-1 2.9-2.5-1.9.8-3 1.7-3 2.5zm14.2-5a5 5 0 0 0 3.4 1.5c1.2 0 1.2-.4 1.2-.5 0-.3-.5-.4-.6-.5-1-.4-2.4-.6-4-.4zm-5.7-5.5a40.3 40.3 0 0 1-2.4 5.4c1.7-.4 3.4-.8 5-1a35.2 35.2 0 0 1-2.6-4.4zm0-8.3c-.2 0-.3 0-.3.2l-.1 1c0 .8 0 1.8.4 2.8.2-1 .4-2 .4-2.9 0-.7-.2-1-.2-1h-.2z" fill="#c74343"/></g><g id="l"><path d="M6.2 474v-46.7h24.4l11.6 11.6v35z" fill="#fff" transform="translate(-.3 916.1) scale(1.00625)"/><path d="M30.2 439.3v-12h.4l11.6 11.6v.4z" fill="#ffd5d5" transform="translate(-.3 916.1) scale(1.00625)"/><path d="M30.3 428l11.2 11v34.2H7v-45.4h23.4m.6-1.3H5.5v48H43v-36z" fill="#e64a19" transform="translate(-.3 916.1) scale(1.00625)"/><path d="M30.9 428.5l10 10H31v-10m0-2h-1.4V440H43v-1.3zM12.8 449l14.5-5.3 7.9 2v22.4l-8 2-14.4-5.3 14.5 2v-19.1l-9.3 2v13.1l-5.2 2z" fill="#e64a19" transform="translate(-.3 916.1) scale(1.00625)"/></g><g id="h"><path d="M6.5 37.5v-35h18.3l8.7 8.7v26.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#fff"/><path d="M24.6 3l8.4 8.4V37H7V3h17.6m.4-1H6v36h28V11z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#4788c7"/><path d="M24.5 11.5v-9h.3l8.7 8.7v.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#dff0fe"/><path d="M25 3.4l7.6 7.6H25V3.4M25 2h-1v10h10v-1z" transform="matrix(1.34766 0 0 1.34167 -2.8 1443.2)" fill="#4788c7"/><path d="M25.5 19.5l2 4-2 4m-11-8l-2 4 2 4m8-11l-5 14" transform="matrix(1.34766 0 0 1.34167 -2.8 1444.5)" stroke-miterlimit="10" fill="none" stroke="#4788c7" stroke-linecap="round"/></g><g id="j" transform="matrix(1.01074 0 0 1.00625 -.3 916)"><path d="M6.5 2.5h27v35h-27z" transform="translate(-2.5 974) scale(1.33333)" fill="#ffeea3"/><path d="M33 3v34H7V3h26m1-1H6v36h28z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M20 30.5c-2 0-3.5-1.6-3.5-3.5 0-.6.4-2.5 1-5.3.1-.7.7-1.2 1.4-1.2h2.2c.7 0 1.3.5 1.4 1.2l1 5.3c0 2-1.6 3.5-3.5 3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#fffae0"/><path d="M21 21c.5 0 1 .3 1 .8 1 4 1 5 1 5.2a3 3 0 0 1-6 0c0-.2 0-1.1 1-5.2a1 1 0 0 1 1-.8h2m0-1h-2a2 2 0 0 0-2 1.6c-.4 1.8-1 4.6-1 5.4a4 4 0 0 0 8 0c0-.8-.6-3.6-1-5.4a2 2 0 0 0-2-1.6z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="20" cy="27" r="1.5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 19H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="18.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 20H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="19.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 17H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="16.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 18H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="17.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 15H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="14.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 16H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="15.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 13H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="12.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 14H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="13.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 11H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="10.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 12H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="11.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 9H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="8.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 10H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="9.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 7H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="6.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 8H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="7.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M22.5 5H20l-1-1h3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="22.5" cy="4.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 6H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="5.5" r=".5" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><path d="M17.5 4H20l1-1h-3.5z" transform="translate(-2.5 974) scale(1.33333)" fill="#ba9b48"/><circle cx="17.5" cy="3.5" r=".5" fill="#ba9b48" transform="translate(-2.5 974) scale(1.33333)"/></g><g><path d="M6 2147.6v-47h24.5l11.7 11.7v35.2z" fill="#fff"/><path d="M30.2 2101.4l11.3 11.2v34.3H6.8v-45.4h23.5m.6-1.4H5.3v48.2H43V2112z" fill="#f44336"/><path d="M30.1 2112.7v-12h.4l11.7 11.6v.4z" fill="#fde4e3"/><path d="M30.8 2101.9L41 2112H31v-10m0-2h-1.5v13.4H43v-1.4z" fill="#f44336"/><g><path d="M11 2121a2.9 3 0 0 1 3-2.9h20.2a2.9 3 0 0 1 3 2.9v20.4a2.9 3 0 0 1-2.9 2.9H14a2.9 3 0 0 1-3-3z" fill="#f44336"/><path d="M13.2 2120.2v22H35v-22zm12.4 7.5H22v2.6h3.3v1.7H22v4.3h-2.1V2126h5.7zm3 8.6h-1.9V2126h2z" fill="#210403"/></g></g><g><path d="M22.7 2186v-35.2h17l8 8.7v26.5z" fill="#fff"/><path d="M39.5 2151.3l7.8 8.4v25.8H23.2v-34.2h16.3m.4-1H22.2v36.2h26.1v-27z" fill="#4788c7"/><path d="M39.4 2159.8v-9.1h.3l8 8.8v.3z" fill="#dff0fe"/><path d="M39.9 2151.7l7 7.6h-7v-7.6m0-1.4h-1v10.1h9.3v-1z" fill="#4788c7"/><path d="M12 2191.5v-35.3h17.1l8 8.8v26.4z" fill="#fff"/><path d="M29 2156.7l7.7 8.5v25.8H12.6v-34.3h16.3m.4-1H11.6v36.2h26v-27.1z" fill="#4788c7"/><path d="M28.8 2165.3v-9.1h.2l8 8.8v.3z" fill="#dff0fe"/><path d="M29.2 2157l7 7.8h-7v-7.7m0-1.4h-.9v10.1h9.3v-1z" fill="#4788c7"/><g><path d="M.5 2198v-35.2h17l8 8.8v26.4z" fill="#fff"/><path d="M17.3 2163.3l7.7 8.5v25.8H.9v-34.3h16.4m.4-1H0v36.3h26v-27.2z" fill="#4788c7"/><path d="M17.2 2172v-9.2h.3l8 8.8v.3z" fill="#dff0fe"/><path d="M17.7 2163.8l7 7.6h-7v-7.6m0-1.4h-1v10H26v-1z" fill="#4788c7"/></g></g><g id="i"><path d="M6.5 37.5v-35h18.3l8.7 8.7v26.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#fff"/><path d="M24.6 3l8.4 8.4V37H7V3h17.6m.4-1H6v36h28V11z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#4788c7"/><path d="M24.5 11.5v-9h.3l8.7 8.7v.3z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#dff0fe"/><path d="M25 3.4l7.6 7.6H25V3.4M25 2h-1v10h10v-1z" transform="matrix(1.34766 0 0 1.34167 -2.8 1493.5)" fill="#4788c7"/><path d="M2.5 3.5h35v33h-35z" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="#fff"/><path d="M37 4v32H3V4h34m1-1H2v34h36z" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="#4788c7"/><path d="M3 4h34v5H3z" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="#98ccfd"/><path d="M14.6 24.6c.5 1.1 1.3 1.9 2.2 1.9 2.1 0 3.2-2 3.2-4.5s-1.2-4.5-3.2-4.5c-1 0-1.7.8-2.2 2m10.8 5.1c-.5 1.1-1.3 1.9-2.2 1.9-2.1 0-3.2-2-3.2-4.5s1.2-4.5 3.2-4.5c1 0 1.7.8 2.2 2m3.1 9a20.6 20.6 0 0 0 0-13m-17 0a20.6 20.6 0 0 0 0 13" stroke-miterlimit="10" transform="matrix(.75201 0 0 .74867 9.2 1512.7)" fill="none" stroke="#4788c7" stroke-linecap="round"/></g><use height="100%" width="100%" transform="translate(0 402.5)" xlink:href="#h"/><use height="100%" width="100%" transform="translate(0 50.3)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 100.6)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 151)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 201.2)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 251.6)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 301.9)" xlink:href="#i"/><use height="100%" width="100%" transform="translate(0 50.3)" xlink:href="#j"/><use height="100%" width="100%" transform="translate(0 100.6)" xlink:href="#j"/><use height="100%" width="100%" transform="translate(0 151)" xlink:href="#j"/><use height="100%" width="100%" transform="translate(0 1157.2)" xlink:href="#k"/><g transform="translate(0 -201.3)"><g transform="matrix(1.07692 0 0 1.07692 -2.2 -191.4)" id="m"><use transform="translate(2 1205.6) scale(.92857)" height="100%" width="100%" xlink:href="#l"/><path fill="#fff" stroke-width="1.1" d="M11.3 2469.7h26.2v28H11.3z"/></g><path d="M36.5 2474.2H24.9v20.3h11.6c.4 0 .7-.3.7-.7V2475c0-.4-.3-.7-.7-.7z" fill="#ff8a65"/><g fill="#fbe9e7"><path d="M24.1 2488h10.2v1.5H24.1zM24.1 2491h10.2v1.4H24.1zM28.5 2477.8a4.4 4.4 0 1 0 4.4 4.4h-4.4z"/><path d="M30 2476.4v4.3h4.3c0-2.4-2-4.3-4.3-4.3z"/></g><path fill="#e64a19" d="M26.3 2497.5l-15.2-3v-20.3l15.2-3z"/><path d="M19 2479.3h-3.6v10.2h2.2v-3.5h1.1c1.2 0 2.2-.4 3-1 .6-.6 1-1.5 1-2.5 0-2.1-1.3-3.2-3.8-3.2zm-.5 5h-.9v-3.3h1c1.1 0 1.7.6 1.7 1.6s-.6 1.6-1.8 1.6z" fill="#fff"/></g><g transform="translate(0 -201.3)"><use xlink:href="#m" width="100%" height="100%" transform="translate(0 50.3)" fill="none" filter="url(#n)"/><path d="M36.5 2524.5H24.9v20.4h11.6c.4 0 .7-.4.7-.8v-18.9c0-.4-.3-.7-.7-.7z" fill="#4caf50"/><path d="M30 2528.1h5v2.2h-5zM30 2535.4h5v2.2h-5zM30 2539h5v2.2h-5zM30 2531.8h5v2.2h-5zM24.9 2528.1h3.6v2.2H25zM24.9 2535.4h3.6v2.2H25zM24.9 2539h3.6v2.2H25zM24.9 2531.8h3.6v2.2H25z" fill="#fff"/><path d="M26.3 2547.8l-15.2-3v-20.3l15.2-2.9z" fill="#2e7d32"/><path d="M20.6 2539.8l-1.7-3.3-.2-.7-.3.7-1.8 3.3H14l3.2-5.1-3-5.1H17l1.4 3 .3.9.4-.9 1.6-3h2.5l-3 5 3.1 5.2h-2.7z" fill="#fff"/></g><g transform="translate(0 -201.3)"><use transform="translate(0 100.6)" height="100%" width="100%" xlink:href="#m" filter="url(#o)"/><path d="M36.5 2574.8H24.9v20.4h11.6c.4 0 .7-.4.7-.8v-18.9c0-.4-.3-.7-.7-.7z" fill="#2196f3"/><path d="M24.9 2578.5H35v1.4H24.9zM24.9 2581.4H35v1.4H24.9zM24.9 2584.3H35v1.4H24.9zM24.9 2587.2H35v1.4H24.9zM24.9 2590H35v1.5H24.9z" fill="#fff"/><path d="M26.3 2598l-15.2-2.8v-20.4l15.2-2.9z" fill="#0d47a1"/><path d="M22 2590h-1.9l-1.3-6.4-.1-1.2-.2 1.2-1.3 6.5h-2l-2.2-10.2h2l1.1 6.8.1 1.2.2-1.2 1.4-6.8h2l1.2 6.8.2 1.1v-1.1l1.2-6.8h1.8z" fill="#fff"/></g><g><path d="M6 2449.5v-47h24.6l11.7 11.7v35.3z" fill="#fff"/><path d="M30.3 2403.2l11.4 11.3v34.3h-35v-45.6h23.6m.6-1.3H5.3v48.3H43v-36.3z" fill="#ff5722"/><path d="M30.2 2414.6v-12h.4l11.7 11.6v.4z" fill="#ffe8e1"/><path d="M30.9 2403.7L41 2414H31v-10.2m0-1.8h-1.4v13.4H43v-1.4zM11 2422.9a3 3 0 0 1 3-3h20.3a3 3 0 0 1 3 3v20.3a3 3 0 0 1-3 3H14a3 3 0 0 1-3-3z" fill="#ff5722"/><path d="M13.2 2422.1v21.9h21.9V2422zm10.7 16l-.5-2h-2.9l-.5 2h-2.2l3.2-10.3h1.9l3.3 10.3zm5.2 0h-2v-7.6h2zm-.2-8.9a1 1 0 0 1-.8.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .3 0 .5-.3.7z" fill="#1c0802"/><path d="M21 2434.3h2l-1-3.7z" fill="#1c0802"/></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#p)" transform="translate(0 2452.2) scale(1.00625)"/><path d="M7 2455.2v42.3h34.3v-26.2l-16.1-16.1z" fill="#fff"/></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#q)" transform="translate(0 2502.5) scale(1.00625)"/><path d="M7 2505.5v42.3h34.3v-26.2l-16.1-16.1z" fill="#fff"/><path d="M13 20a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h22a2 2 0 0 0 2-2V22a2 2 0 0 0-2-2zm0 2h22v16H13zm2 3v2h18v-2zm2 5a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm3 0v2h13v-2zm-3 4a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm3 0v2h13v-2z" fill="url(#r)" transform="translate(0 2502.5) scale(1.00625)"/></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#s)" transform="translate(0 2552.8) scale(1.00625)"/><path d="M7 2555.8v42.3h34.3v-26.2l-16.1-16z" fill="#fff"/><path d="M12 19v21h13v1h11V30h-2V19h-1zm1 1h6v3h-6zm7 0h6v3h-6zm7 0h6v3h-6zm-14 4h6v3h-6zm7 0h6v3h-6zm7 0h6v3h-6zm-14 4h6v3h-6zm7 0h6v2h-1v1h-5zm7 0h6v2h-6zm-1 3h9v9h-9v-8zm-13 1h6v3h-6zm7 0h5v3h-5zm-7 4h6v3h-6zm7 0h5v3h-5z" fill="url(#t)" transform="translate(0 2552.8) scale(1.00625)"/><g fill="#43c330"><path d="M26.2 2588h3v5h-3zM29.2 2585h3v8h-3zM32.2 2590h3v3h-3z"/></g><g fill="#ccf4c6"><path d="M27.2 2589h1v4h-1zM30.2 2586h1v7h-1zM33.2 2591h1v2h-1z"/></g></g><g><path d="M6.4 0A3.1 3.1 0 0 0 4 3v42c0 1.6 1.4 3 3 3h34c1.6 0 3-1.4 3-3V18.8a3 3 0 0 0-.8-2.1L27.3.9a3 3 0 0 0-2.1-.9H7a3 3 0 0 0-.6 0zM33 0c-1 .3-1.3 1.9-.6 2.6l9 9c.9.9 2.6.2 2.6-1v-9c0-.9-.7-1.6-1.5-1.6H33z" fill="url(#u)" transform="translate(0 2603.1) scale(1.00625)"/><path d="M7 2606.1v42.3h34.3v-26.2l-16.1-16z" fill="#fff"/><path d="M12 18v2h8v-2zm10 0v10h14V18zm1 1h12v8-1l-2.5-3-2.5 2-3.5-4.5L23 26v-7zm-11 3v2h8v-2zm0 4v2h8v-2zm0 4v2h24v-2zm0 4v2h24v-2zm0 4v2h18v-2z" fill="url(#v)" transform="translate(0 2603.1) scale(1.00625)"/></g></g></svg>lib/img/volume_icon_onedrive.svg000064400000000771147361034410013031 0ustar00<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48"><path d="M40.4 36s3-.4 3.5-3.2a5 5 0 0 0 0-1.7c-.4-3.1-3.8-3.8-3.8-3.8s.6-3.4-2.5-5.2c-3.2-1.8-6 0-6 0s-1.7-3.4-6.3-3.4c-5.8 0-6.8 6.6-6.8 6.6s-5.5.3-5.5 5.2 5 5.5 5 5.5h22.4z" fill="#1565c0"/><path d="M11 30.5c0-4.4 3.3-6.3 5.9-7 .9-3 3.4-6.8 8.4-6.8a9 9 0 0 1 7 3c.6-.3 1.4-.4 2.3-.4A8 8 0 0 0 26 12c-5.5 0-7.4 4.7-7.4 4.7s-4-3-8.1 1.1c-2.1 2.1-1.6 5.4-1.6 5.4S4 23.6 4 28.8C4 33.5 9 34 9 34h2.8c-.5-1-.8-2.1-.8-3.5z" fill="#1565c0"/></svg>lib/img/arrows-normal.png000064400000000251147361034410011400 0ustar00�PNG


IHDR"�H�LpIDATx���!���"t����|��c� ���N��!el�W/F��@�1"-#���V~���h�k=4�Z���""�D�ɲ��׌��l����o�6D���m���SDALIEND�B`�lib/img/volume_icon_trash.svg000064400000016226147361034410012341 0ustar00<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="175" height="200" viewBox="0 0 46 53" version="1"><defs><linearGradient gradientTransform="translate(643 -1191) scale(4.95289)" gradientUnits="userSpaceOnUse" y2="357" x2="482" y1="357" x1="413" id="j" xlink:href="#a"/><linearGradient id="a"><stop offset="0" stop-color="#60a016"/><stop offset="0" stop-color="#98e90d"/><stop offset="0" stop-color="#64a616"/><stop offset="1" stop-color="#99ea0c"/><stop offset="1" stop-color="#61a017"/></linearGradient><radialGradient gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.9529 0 0 .83705 643 267)" r="34" fy="354" fx="448" cy="354" cx="448" id="k" xlink:href="#b"/><linearGradient id="b"><stop offset="0" stop-color="#aff637"/><stop offset="1" stop-color="#5f9f16"/></linearGradient><linearGradient gradientTransform="translate(-46 -1244) scale(4.95289)" gradientUnits="userSpaceOnUse" y2="336" x2="580" y1="288" x1="580" id="l" xlink:href="#c"/><linearGradient id="c"><stop offset="0" stop-color="#a4bcc3"/><stop offset="1" stop-color="#b9d1da" stop-opacity="0"/></linearGradient><linearGradient gradientTransform="matrix(4.9529 0 0 4.84448 -46 -1201)" gradientUnits="userSpaceOnUse" y2="284" x2="631" y1="284" x1="543" id="m" xlink:href="#d"/><linearGradient id="d"><stop offset="0" stop-color="#9beb0a"/><stop offset="0" stop-color="#90e612"/><stop offset="0" stop-color="#6fbb16"/><stop offset="1" stop-color="#8ee518"/><stop offset="1" stop-color="#89e31f"/></linearGradient><linearGradient gradientTransform="matrix(3.07055 0 0 3.13001 2739 257)" y2="141" x2="86" y1="7" x1="23" gradientUnits="userSpaceOnUse" id="n" xlink:href="#e"/><linearGradient id="e"><stop offset="0" stop-color="#6eb314"/><stop offset="1" stop-color="#97e70d" stop-opacity="0"/></linearGradient><linearGradient gradientTransform="translate(464 39)" gradientUnits="userSpaceOnUse" y2="361" x2="567" y1="275" x1="560" id="o" xlink:href="#f"/><linearGradient id="f"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><filter height="1" y="0" width="1" x="0" id="p" color-interpolation-filters="sRGB"><feGaussianBlur/></filter><linearGradient gradientTransform="translate(471 39)" gradientUnits="userSpaceOnUse" y2="362" x2="608" y1="275" x1="618" id="q" xlink:href="#f"/><filter height="1" y="0" width="1" x="0" id="r" color-interpolation-filters="sRGB"><feGaussianBlur/></filter><linearGradient y2="357" x2="482" y1="357" x1="413" gradientTransform="matrix(6.30935 0 0 6.17125 37 -2027)" gradientUnits="userSpaceOnUse" id="s" xlink:href="#a"/><linearGradient y2="361" x2="567" y1="275" x1="560" gradientTransform="translate(-76 -1276) scale(4.95289)" gradientUnits="userSpaceOnUse" id="t" xlink:href="#f"/><linearGradient y2="835" x2="2087" y1="1161" x1="2121" gradientTransform="matrix(.33568 0 0 .28176 2133 -120)" gradientUnits="userSpaceOnUse" id="u" xlink:href="#g"/><linearGradient id="g"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#89d30e"/></linearGradient><linearGradient y2="362" x2="608" y1="275" x1="618" gradientTransform="translate(-24 -1270) scale(4.95289)" gradientUnits="userSpaceOnUse" id="v" xlink:href="#f"/><linearGradient gradientTransform="matrix(4.9529 0 0 4.84448 -46 -1201)" gradientUnits="userSpaceOnUse" y2="281" x2="629" y1="281" x1="545" id="w" xlink:href="#h"/><linearGradient id="h"><stop offset="0" stop-color="#5f9d16"/><stop offset="0" stop-color="#8fdd0f"/><stop offset="1" stop-color="#65a816"/><stop offset="1" stop-color="#88d40f"/><stop offset="1" stop-color="#5f9d16"/></linearGradient><linearGradient gradientTransform="matrix(1.2687 0 0 1.12163 2134 -136)" gradientUnits="userSpaceOnUse" y2="237" x2="557" y1="374" x1="571" id="x" xlink:href="#i"/><linearGradient id="i"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><filter height="1" y="0" width="1" x="0" id="y" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="3"/></filter></defs><g transform="matrix(.10238 0 0 .10238 -32 8.8)"><path d="M540 339a171 30 0 0 0-172 30 171 30 0 0 0 0 1l4 21v2h1a167 30 0 0 0 167 28 167 30 0 0 0 167-29l4-23a171 30 0 0 0-171-30z" fill="url(#j)"/><ellipse cx="540" cy="369" rx="171" ry="30" fill="#599714"/><ellipse ry="28" rx="166" cy="368" cx="540" fill="url(#k)"/><path d="M746-28H335l38 398c0 2 2 3 4 5l10 5c8 4 21 7 36 9a764 764 0 0 0 271-9l10-5 3-4z" fill="url(#l)"/><path d="M539-72a218 38 0 0 0-218 37 218 38 0 0 0 0 1l5 26a213 38 0 0 0 0 1l1 1a213 38 0 0 0 212 36A213 38 0 0 0 752-6h1l5-29a218 38 0 0 0-219-37z" fill="url(#m)"/><path d="M580 67h-68c14 4 23 15 31 29l21 39-16 10h56l30-49-18 9-12-23c-4-8-15-16-24-15zm-76 2c-5 0-10 2-15 6l-28 44 53 31 28-46c-8-17-23-35-38-35zm136 77l-52 32 25 48c25 1 57-8 51-33zm-162 1h-58l17 13-16 30c-7 14 6 27 14 32 9 4 22 5 34 4l21-35 17 9zm98 65l-28 50 28 50v-20h26c9 1 21-5 25-14l33-61c-11 11-25 13-41 13h-42zm-153 4l35 65c7 9 20 11 34 11h38v-62h-71c-11 1-25-2-36-14z" fill="url(#n)" fill-rule="evenodd"/><path transform="translate(-2366 -1440) scale(4.95289)" d="M553 292l7 71h9l-8-70z" fill="url(#o)" filter="url(#p)"/><path transform="translate(-2366 -1440) scale(4.95289)" d="M622 292l-7 71h-9l7-70z" fill="url(#q)" filter="url(#r)"/><path d="M321-35a218 38 0 0 0 0 1l5 26a213 38 0 0 0 0 1l1 1a213 38 0 0 0 212 36A213 38 0 0 0 752-6h1l4-24A219 37 0 0 1 541 1a219 37 0 0 1-220-36z" fill="url(#s)"/><path d="M363-14l3 28a213 38 0 0 0 44 8l-3-29a219 37 0 0 1-44-7z" fill="url(#t)" filter="url(#p)"/><path d="M321-35a218 38 0 0 0 0 1l1 4c3 5 11 9 22 13 12 3 27 7 43 9a1064 1064 0 0 0 345-7c11-4 19-7 24-11l1-4A219 37 0 0 1 541 1a219 37 0 0 1-220-36z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" font-weight="400" overflow="visible" color="#000" font-family="sans-serif" white-space="normal" fill="url(#u)" enable-background="accumulate"/><path d="M725-16a219 37 0 0 1-44 8l-3 29a213 38 0 0 0 44-9z" fill="url(#v)" filter="url(#r)"/><ellipse cx="541" cy="-37" rx="209" ry="31" fill="url(#w)"/><path d="M321-35a218 38 0 0 0 0 1l1 1a223 37 0 0 0 1 1 219 37 0 0 1-2-3zM751-3a217 38 0 0 1-212 29A217 38 0 0 1 328-3a213 38 0 0 0 211 33A213 38 0 0 0 751-3z" fill="#5f9d16"/><ellipse ry="31" rx="209" cy="-36" cx="542" fill="url(#x)"/><path d="M541-68a209 31 0 0 0-209 31 209 31 0 0 0 0 1 209 31 0 0 1 209-30 209 31 0 0 1 209 30 209 31 0 0 0 0-1 209 31 0 0 0-209-31z" fill="#609f16"/><path d="M721-21a209 31 0 0 1-46 8l6 5a219 37 0 0 0 43-8zm-349 2l-8 5 44 7 9-5c-17-2-33-4-45-7z" fill="#fff"/><g fill="#fff"><path d="M728 0l-4-13-13 3 12-4-2-14 4 13 13-3-13 4z"/><path d="M733-7l-9-6-7 8 7-9-8-7 8 6 7-7-6 8z"/><path d="M730-4l-6-9-9 5 9-6-5-9 5 8 10-4-9 5z"/><path d="M722-3l2-10-10-3 10 2 2-11-1 11 10 2-10-1z"/></g><path d="M720-28l2 9-3-4 3 6-6-4 6 6-8-1v1l7 1-11 4h1l9-2-5 4 6-3-4 5 1 1 5-6-1 8h1l2-8 3 11h1l-3-9 4 5-3-7 6 5v-1l-6-6 8 2v-1l-7-2 10-3v-1l-9 2 5-3v-1l-7 4 5-6h-1l-5 6 1-9h-1l-2 8-3-11z" fill="#fff" filter="url(#y)"/></g></svg>lib/img/toolbar.png000064400000016522147361034410010247 0ustar00�PNG


IHDRߴ)��PLTE	'A��Kw%����}�ى��������
j���]��t��[\\���/.,z��U�j���J��p�Eb�Tw��7��n�6k*��h�����
C�_�n�z$��6?�����.~�r�K�yyyj��g�q��M��v��JHH=��>h�h�Ct|��U�Oޙ:���
_��iY�IZ�Ǻ��q���k͇��7��I�B��uy�X]�[\]k�֓��5�!؎%���$�ŷ�����\�P�S���0��equt9v�܌:��l�\���w|{����*���|�d�<0W����>��#R������L�n��d {�Z����;>B��;Yb��|x	1�e��S�3r�c�gh_�,���VSN~3"���J��.0o�[���>�)���W�7�-t��Am���o�������۴q��Sg�M^�;���F�4�]O7������������������쐳�������������5���۞����׌��?����������մ�����S}�������}�����������kki����΀S����nJo�Wr�eͣrN�����䷏Ƙd���Zح�����{�p����ß�ڐ�ˇ�σ4����袥Ә��ٝ�s�nu��K�r&��j��٦�޽��bbD�׵�ԔϢ[�xx�i�H5����
�h�Ƈ�㾧�{����_ږY����tRNS/��ut�jj�������lk����[?������ɤY��q�ʹ��+̿\��,�љ{F�������H͵t3���SŠ����.�TPO��ׯ�����ˋPN�����X��������˴����ki��孬��뾵?�W�����ɶ�qj���̕������}�؝��T�bIDATxڬ�_HSQǯ��r�հ�j�R*)iɰm����P�lӈ"d�%$\E!AЃ/F� 	=��[n"��M�jH6�fD�����9;���>��~�����G�����T�q���hk饞K<�b��� x�t�6��b�������296��L��B��0�O{���x��RaSsg<��F'a�l�k.�9p&>?{�Y"������R���M.n���/^bE�m&zz&�h^�����a��Qq�r��?f�jJ���"3�F"�Q�T�E��E�_�E$�Q�%+z��TP!��r�Ӷ�������?p������"h��
E���hjTBB�H�����gz9�:!1���1�S *A@�8��9+� 4�"��ܷ���t<��	�)�Ƅ~��&i�U�P�A�d�-imK&�&��
C���,a�j�D�`2���`�`��T�e�0�]RQq�*p�W��ڵ'��}�n��I�|nz�A0<ǰ"�ͩa�b�I&
�| �a	1�AO���h0����H'/�������߿=!�I�
3I&&�u]����G2�N@p�,��\X��RYiQ�2yo��H��{36`(/��*!���B�J\�Ї�إa	������G- ��<�?>�?ZE��`p����/Fa)����q�bCaa1����
<mU!���d�ª
W�,.^���
.��
�7���6׬1n��?f]�=��^=�b��nǝ��e���t:�V��l�mN�}
�$,�U&��
�l�0��c���?�n�ڱ�S�wډx�9턷��H��_۝�0��qI��f��q�=m��H;m�y��t�\�)�NϿ~=eO����ק)��<yg7��N�<��ȁRL�ҽ �t�DhtcL���Q��c���Ѓ��BHJO*©����'��rH@ʴ�f��A�dnRc�n���-0����h�̠����я��}�(��}�~��Ap|Z1M!��342Gk6k˄�%4s�2�����42܈4�ܰ��J�[���2��THD��h$�6�
�I��vb�D4��<��>}�7B.7nܸ�(�˘��1��Pi�y��*�-����7�@��<��F�oI�֭
��ýca��[�4�-�bF��aW�3�E]d��G�Yu]�
[!�R�V�V�!"5����r3a��0�Z�Π�!͚m2#p�e*�1,MW'@ՙ��RX@�Ʉ%(Sp�.R?�
*|>d�p��8�G�"�:+-9��� ,!p�1�/*�T �jRqk0XcD��{���Q�P�8��~�8�n.���T��%�iP�����J�֠�W�r�َ�W^�"5_H?:�#�P����g>|��D"��D��ul��F�wL�d����!��P����YA�G��+jI������E*�F"��o;�b��u"T|��q6+��#��3���˘;���G	c˞�B�m˶	�ӫV�^qgŊݫV��//�:����py.GV�8\��"�#��yh��r���Z--9����l�|�K8-T��������h�\�x g�2�Z���Â��2��r0�F������d�L�zg5�������|{��AW�Q1����n�e(�Dx��B��lIE-}���HVDP ��Y�<��yF�CVdl�x�%�2F����1��&�0�ov}@V�#	J��4�|Q
�{j�A<z0�����A�I���CQ�-.�j����
	9�X��VD|��ϣ��],z��M��o���~���?o����j�5Pt�<�;E
���Є�K�Z�f�2�E��x*�����X�G$}��CC���/��ì[?��<T�k��z����:m��>�"����V��Z~R~SF~};ԇ���'o�F3;�a)
�E};3���gr�qܸd.�{Ŷ���r���u�cێ��愘h���F�ٜ����mB(��-�b����R4�3Q��JL���w4a.�E��R4�@0�� \4�9��EI�=����8�FqF�H��0q��W$	LX(�)���4J(�D��2��EpY����@��O����Q4b%r�P"�Sk��4]7*���am�b�6����_��/s�*O�@.�����.�R+O!s	ʟp�{6u�!D��.�*!8oW]��#@9_�r�CܾJ(�	S3Ց�0UQ(K�2U�^JD�Fkd�K�U�}�5�8RѪ�h���@[�3��B�k���.?��=$�4׺����H�R@T�~�a�凌�^Ӥ�qu�/��].b|�����)��� �]gSĀ���0�Y3a�,�Ɲ�Ba��
�bũ��
���ֈw1�kV�&�#ÅB��bi�UJi���[��US�TlJ�g.J�J}^����ϝ�hi ���Z��,9UId��E�J񅃕1t�	:�_!a�8��5G��q�u�0Lt��5���1���u���u�.ijB��q
τUH�*�Ⱥ6��n��L͐YA_�}	����wS_���`�#����{���9��lt� ���ۗ�RPET��P�4D�oR,曡ۗ/�,盡�=���`�v��ز�%;9�Cn�b?u�qƀV�I����+�c�w)�v���R��JvF�2%�U�O�p��#���o��o���l<�q_�Œ�6f��9�M�gs��)�ŗ_]��bG���W��
�ڽ���}B4[���1T
�į1�l������b
g �</.�O��?XBF��`�4թ�_�W50(�1|�8����7O��	$8<��<�)D	�@ni ����#�8Оm`�ۅx��k.>5g��&Q6���U�J���M��Wu5�C�ޔ�T�h�(㜠�ߋ�O�6D]������g#'(�MN~��W�&���4��9'(OO?������4�$����ç/	x�D:}�<����Gc�|��yΧ�ΧPs�)����� s���dn\��̍���S�Y�����i��� ��y�T�6����@K� &��2g��2.$�И�6�m����t�m�1�ܪ�5-���F/L섨��Y�X����?L���{z/���K��~�y�]���vU��UɢρU�HI������%c��4O��f*brLi�U�,5�ڄ>�.狴f&��lAb{J=��ڙ�4+3<]lOm��۬́���ۯukm���*����1�������v�H̩����O�R�
����������{�T�E@�{�W[�ӂ�N�q�"
6C�%A����'rŀ7�(��P=�@0��wxiD	z|�|����|�����t�Ώ���G<IP��
4�������1r�{�c�<���a���G��7���Φ˗��G�P�vSS��l�&�p��e�SSSG��S"ر@��3��F�1����0WO|`
	���0�.
�5�P�j`�5 ��F��P^�qc�ۅ�r�؇���>�u�#Z�;ԫⲎ�:�{|{g����aIC��ðdyOR��%���%-˒@-Kh����Q���e���]H�}�cY:=�H����Z��t�AhE��>��\�3�q�8������J��_���Q
/z$O��f�"��EC�΅+�JϊdE�˲���KbQ�&���Bqd�.�ry�����G|.2y]�t�Aߤ�w{&=n
������p�'G�9�;d��&�H��7�G�dS7�3��H����j�Z)j�Z!���)P����0#W)�#q(��o�Y���1�XӂV%��d����æ��<��(s#��k�KD�ժ�.A���ww����"����_�s���.�Q���꟏�W�y>FJ�Vk0�RY<RR�2���G��@7>�
?[�ˎ�� �r�H^��p4K��"�ֱHdl��(�#%c���@�M%c6��䰍ELXj��4�)�l��m]�ٖ�I�����T+rj�S�@Ks`φ{������?�ae�K�+�y�<>-|?�RUU�h�z��Ǟ�H7??����-+��$���nX��J�7��ţ�N�&��F�a�x�J�y8��� �Á�K���P�{�V;
���!�
����|�}x9ee�駁��ލ��H�Ώ��c�.o���<��t�@��7�deVl�,?n��襍7e�ol�d`M��7�
�l�~sH�i�h�|h�_g�4��s�����xC�7lْ,��Wo��g/myQ��[>Q�(V���|�zIpAɔ��=J��oD^_�C������[o1�o���>|�D,��'��^O��z�:�s�������~�׀np�c����`�&���v�n�Z�(�@�j�j�2�<��|A?�2�����8��`���$���Z�|�qW����E�������X���R	Ӹ#]]G ��zxϞ�2���ׯ�>�z�����_~D=.߃b�{P.�ի�\�x�\l�z��"�G	y���W$p�<w��\�;���
���q
P�P�D��Wv������8�-�@�hٶ�RR��V��֭[�6Q�_Dz�`)�8̂ ��m�]n�
@GG�6;׭t
��7<�����q7:��?��ض����m�ӆ	�t�\����i��Â��\	��$�mD҆v6�G� ?zz����sgv��ܯ�o�>�l��]X�
�^�S����N��o�����"�_B���\|���&�����.��6_�F��
��b��C@ �C�(���.8/�-Tc��.�B
8��WU�c����p<v�����l�<��ȫ�#wz����ɨ3%�1`��o(3+��F/��`�9�^�*�c��"-�.~Ax�%�j��f!�ѩ���0�(
Ή"��{�e�&p��~Ҝ�h��}b�_�qn�a���O�`�h��G{�=�,���4�
�8����y���fVM}� �yG�ի����F�F����\@	$d1fgѣ�B%��^���L��LQbG�vL	�|n��)Ƭ;�#)g�=�/���uf=6��h�6T3F���\���f�s��1�!�AOT=�E=
��aP��V,$"!f}8\`vJ��6Bgt6D@t&l��3�B($#���Ȉ�Az�px��#�����|A|Pm�+~G:_��@~���vw1
mw�(HMta!���Fg��J �\/�����LJ�1���+W��9�i�&�;dܽ{�����C~�WS���k�g��d���/^�M9^�k�l�3��d�ѿXv�����\�h�'
O�*LN�m�
��қz�aa�]L�ׯ��CzX��A���s�j盇��U�h�=��٣W˫/���;;��2�Bg��]�	����]�����/�1��o��=!�˭��CPU��R�J�UI�2��n�H�	�	H�o������T1p&������1?�`G�'&&N<B���D'�?����})�UT� �o������Ԫ�XCdz��~,7[T����o2��#��j���IC�m5%"�Fl���k B��%6�� ����ͨ����
�n^G>��U�k�s�C@�Kv����8�l! �~��UU�-�d��ث�M��JM�#b��w�.�e�B~kZ�Gߴn{+RSMV3j~=Sk�(#��!,�!M�m�t�d�R,ɛA���'�KO��;C:�M�/zһ=��tϋ��=k=��~~��U!����W�"%
r{�ڽ�B�\�k�\.��r^����+o��������ܵ���,Ri.��;����4��ރ<��d�rZ-�k�\.�@UjUZ�6��� ~%9����#5x�q��j	��꯵GځP`���j�r�;�����GGG�r�����r���3���Ӵ��	�襠��^��~�J��R�ٳg��h��D1J���ߧ�e?(��'6۷,�G�R�b�^X�H)�eA�
��"���wc)�s�RVB}b�Xɋ����~(�O%�/�>h���_�}��e��/�N�f��������i��i��i��h$@�#�O�#���{�Ā4]�[��:'&�p;p��:H�PprB���y���	ǏO\�r��#��A�ɦ�$���3ٍ
�G����G	�`�(P���٪;��H^�P2��w������ۀ'�IoY��1p�{�\p:�/��ߝ[<-W�/ڃ��:zO�����,xス���W
x�Tw}�rpw�`�,O�2yI2��$5[,��$�4'Y���"{�-ҳ�e=¾ZZ�XZZ,
��o�����Z�˖���d�P� lg�~�
�i0��IEND�B`�lib/img/tui-icon-a.svg000064400000047245147361034410010573 0ustar00<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs>
        <circle id="a" cx="16" cy="16" r="16"/>
    </defs><symbol id="icon-a-ic-apply" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#434343" d="M4 12.011l5 5L20.011 6"/>
    </g>
</symbol><symbol id="icon-a-ic-cancel" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path stroke="#434343" d="M6 6l12 12M18 6L6 18"/>
    </g>
</symbol><symbol id="icon-a-ic-color-transparent-w" viewBox="0 0 32 32">
    
    <g fill="none" fill-rule="evenodd">
        <g>
            <use fill="#FFF" xlink:href="#a"/>
            <circle cx="16" cy="16" r="15.5" stroke="#D5D5D5"/>
        </g>
        <path stroke="#FF4040" stroke-width="1.5" d="M27 5L5 27"/>
    </g>
</symbol><symbol id="icon-a-ic-crop" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
        <path fill="#434343" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
    </g>
</symbol><symbol id="icon-a-ic-delete-all" viewBox="0 0 24 24">
    <g fill="#434343" fill-rule="evenodd">
        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
    </g>
</symbol><symbol id="icon-a-ic-delete" viewBox="0 0 24 24">
    <g fill="#434343" fill-rule="evenodd">
        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
    </g>
</symbol><symbol id="icon-a-ic-draw-free" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
    </g>
</symbol><symbol id="icon-a-ic-draw-line" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M2 15.5h28"/>
    </g>
</symbol><symbol id="icon-a-ic-draw" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#434343" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
        <path fill="#434343" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
    </g>
</symbol><symbol id="icon-a-ic-filter" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
        <path fill="#434343" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
    </g>
</symbol><symbol id="icon-a-ic-flip-reset" viewBox="0 0 31 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M31 0H0v32h31z"/>
        <path fill="#434343" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
        <path stroke="#434343" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
    </g>
</symbol><symbol id="icon-a-ic-flip-x" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M32 32H0V0h32z"/>
        <path fill="#434343" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
    </g>
</symbol><symbol id="icon-a-ic-flip-y" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0v32h32V0z"/>
        <path fill="#434343" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
    </g>
</symbol><symbol id="icon-a-ic-flip" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-arrow-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-arrow-3" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-arrow" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-bubble" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-heart" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill-rule="nonzero" stroke="#434343" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
        <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
        <path fill="#434343" d="M25 3h1v9h-1z"/>
        <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-location" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <g stroke="#434343">
            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
            <circle cx="16" cy="13" r="4.5"/>
        </g>
    </g>
</symbol><symbol id="icon-a-ic-icon-polygon" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-star-2" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon-star" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
    </g>
</symbol><symbol id="icon-a-ic-icon" viewBox="0 0 24 24">
    <g fill="none">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
    </g>
</symbol><symbol id="icon-a-ic-mask-load" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
        <path fill="#434343" d="M25 3h1v9h-1z"/>
        <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/>
    </g>
</symbol><symbol id="icon-a-ic-mask" viewBox="0 0 24 24">
    <g fill="none">
        <circle cx="12" cy="12" r="4.5" stroke="#434343"/>
        <path fill="#434343" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
    </g>
</symbol><symbol id="icon-a-ic-redo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#434343" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
        <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
    </g>
</symbol><symbol id="icon-a-ic-reset" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z" opacity=".5"/>
        <path fill="#434343" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
        <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
    </g>
</symbol><symbol id="icon-a-ic-rotate-clockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#434343" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
        <path stroke="#434343" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
        <path fill="#434343" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
    </g>
</symbol><symbol id="icon-a-ic-rotate-counterclockwise" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path fill="#434343" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
        <path fill="#434343" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
        <path stroke="#434343" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
    </g>
</symbol><symbol id="icon-a-ic-rotate" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h24v24H0z"/>
        <path fill="#434343" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
        <path stroke="#434343" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
    </g>
</symbol><symbol id="icon-a-ic-shape-circle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <circle cx="16" cy="16" r="14.5" stroke="#434343"/>
    </g>
</symbol><symbol id="icon-a-ic-shape-rectangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <rect width="27" height="27" x="2.5" y="2.5" stroke="#434343" rx="1"/>
    </g>
</symbol><symbol id="icon-a-ic-shape-triangle" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
    </g>
</symbol><symbol id="icon-a-ic-shape" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path fill="#434343" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-align-center" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-align-left" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-align-right" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-bold" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M7 2h2v2H7zM7 28h2v2H7z"/>
        <path stroke="#434343" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-italic" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
    </g>
</symbol><symbol id="icon-a-ic-text-underline" viewBox="0 0 32 32">
    <g fill="none" fill-rule="evenodd">
        <path d="M0 0h32v32H0z"/>
        <path fill="#434343" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
        <path fill="#434343" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
    </g>
</symbol><symbol id="icon-a-ic-text" viewBox="0 0 24 24">
    <g fill="#434343" fill-rule="evenodd">
        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
        <path d="M11 3h1v18h-1z"/>
        <path d="M10 20h3v1h-3z"/>
    </g>
</symbol><symbol id="icon-a-ic-undo" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <path d="M24 0H0v24h24z" opacity=".5"/>
        <path fill="#434343" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
        <path stroke="#434343" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
    </g>
</symbol><symbol id="icon-a-img-bi" viewBox="0 0 257 26">
    <g fill="#FDBA3B">
        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
    </g>
</symbol></svg>lib/img/editor-icons.png000064400000005237147361034410011205 0ustar00�PNG


IHDR�=�J�PLTE<B*;>'+��@;;S��&��J[GGG��3EK	AYPr>==�����_����
{����5@GGMV������@@@&#]�cab_��D�ȏ���o8Qwv===~��GW
!��GX��"+Z����Y��ROO����������0��\;Bbxy�����z�1Nl��,*+J��'1<���B��PiXHH?!</%'b��8U�IkkkLYD`m-$!N��B_�J�����v��Q�޲r4I�ї��֝E�����h֡?��.u�XLz���H����@3���nw`�ŏ�����a��6���D�===LYO�F��ޙ��www�������%� *� )��Φ"�!��`����¥���E��Ah���h}D�P�(+&' x��K�׹���!�!���C��R�¬��{�wb�Lx��T����M��aV6�D�28�"+,u)	)	������}��稫0�Z�PVtBKF�E�������]m[��G�@F�19�#)�"����d��H��p�����P�ڔ�]��MS!�FB�<512a#j��\��Z����ϯ�\���j,sSK�B�9A� ?��읛�洺뛹ᗟux�≍�ns�dnd�iD�`����W��Iv��ۙ�a��^v�U7�2w/���U����{�X����T�i��Dn;�(.�
��đ�Ž�����Ǘ q��wz�Pf�3f�9^_�[t�I(�8,6�����q����J��F�F՚B��OAetRNS&���ߑ]J��������\;���v��a�����Լ����yaGA>4*�����������o�����۱�����������ȼ����L�����������F@I�IDATH�Tͱ
1У1m<@n���J:�bWv�&���iI�@ꛂ1X�˥�w~��'� D���ϩ�x�HH\:<(N@	l��\��㆐˧�o�k��F�W�\�Ar}uX��
�dw%~�11�;7!h���CTP���v8�U���s�Q��������j��n߯��J����������23�("�P�"��
&�"P&���H��$n�|��BT!9�[1}�����A ��pC� �� ��+8ftU�M�C����j˔�-�q����L�UTі���_LRd���B���ҽ�ZA�߀�u	�8�L�Òf��}�zo:ĉB\k=���^� �lj�;��w
M�~aÃ)�������/�d��0D��[���r�P�r	$��U$7H�
�TiMIG�$�8Dr!�N�/��"z/vl9��E~ڵ-��<��]��o����s��ԉ�e�C�;7����2][�em*�j��d�䣓mQ�8��r����8���vA�x/DE���c!���1��x-��K��H6���<c��*�
.�Y͵̹�o��Y)�:����
42�>����Qg+�}� *|�\"M�	���/�\��9�2�-&�8��n�T���\�N��ejj���j롶�}]����&�l�Ȥ�<X�������D�-}Хy���Z�z�? ��|?�~�?���df�IA"f�	��S[�	�����Ih���Ӊ��?��c��npO&Q<?�����q�84���cO__ߘG���˄�}:��VL��v�p��Ğ�l�}�]]Y7s�������z��"Q󮳥e`�kr��ص�k��Z;��mπF����<�����3�cW.����ì��-��C�R[�h~h�hvi�E��7�N�Ӑ�x�f���e0b	-g��LD��yC����X
U>����P%S%,�3f����f�-~у2�*~W��w6Z-)**z�w���B��K�V�+?J$G��̔��@\)�O�|���\�+���NO�=W��[||~a�΃��>%�y>~᝼
��>�*�*_a�Ft*��筇3<�t�0�/%Q�A�z
��P�`���K������hjkQ��K�������LL�0mm��D�{�d�$D}�j�n��'!��
�ĄN�JĄ�͢�¤��;L
EHg�F��K�"��(,��
�nE���n+��Ww ��}K�j��`�N��;4� �	�"n��F�L7(Z��e�5�UT$!̶�؎����&*��
�Ek(Q�ry��M�Mh���ʑ�I�IuoCi4Q�+��ƅ\��&U�"�J��\���'��=>B,Q�?���✆w�0��R`k����u���
R=�"�F��!�P<��;Ȥ��A���`5}d�1�`҅t�a�6I��lhh(���~��l�Y�Z =��q��tTS��C/f��أg�w��G@c���*�R���rT�����ڪ�
0��a�?�Vb&�l�A�[iDJ��?�?4�W���X�mÃ6�~2��=dS���{���5w���G�ncL,�z���Ѹ�?�c��;k�{��.��ծFf{��k�}��Fj0f��ev����:�ƴc���P
�Ϟ�& p0�9���r����:�t|�� SEL*sH�t|����XMR�F�����SI�:<����P�r����"u�X1��/+@]���^��^�:Li�d�����s�HG���`ģ�砀�IEND�B`�lib/img/icons-big.png000064400000015340147361034410010454 0ustar00�PNG


IHDR0MR���PLTEJ�ȼ�J�D7r���I%�wSy��]��L��G��a����^�Z'�qq,q�/�m!�S|�+�DDP��O��G��G��N�ː��.�ɗ��~�?�z~���M*(�_H��!��I�H.�R0� s�mmmx����2��R��llliii��rrr0��a$x��aaa{�){�+�Jyyyeeeh�SSS�>�CCy�������G���풹����J��Iv�֙�ջk�������Ӆ����!�����W"��������.}2���
G�����������ĵ����ʮ^���~��3�,��ȯF�Kx��z���f%���ֽQ������܂̔I
������!������Ud������K�O��鋸��CC|�+A�.��qh.�l-q�ooo"�S��t�iii�ݿ���S$������@��:�'vvvaaa8[[[����_�[���|||VVV��u��������o����A�|���T��G�v�Ĉ�հk�����ࠓ����}��x���������{���ɰ�ʝ��si!����kk�mH{�����ۅ�U��q�t����ۭ��B˗��[�!�����뻙��"�=�A)ʳm�]]��S�S ����ݖ⯏�܎�و�e;���豱R��̙�g]�<,��"00����V���}�LL��і��ZZ���+^�p�|\�`[�^ᚚ�ҟ�wE�.m�Ƅ��s&����5$i@tRNS��������t����������i��� ���xtO�s���wo�������}{qk�����ϧ����jIDATx���Ak�`��
6փH:����^��[R�hSJ�P��S%C(�m�k(Qq��d/���C�^���&�'y��8��o�>�Ϟ%��c�w�~QW+��,��B��>-�� ��{t0�P
B	@�W� D� (/n︃e���l�-��i�޿ߣ~����&�L�/=��gS9��|�7Oāl��K�e.(��`�M2�S�f�g*��g��0�&�L*�x@d0���)�$?O���������p�����g��O�	��Mi�r�>�3�E�r������J[�iD@k8�hh�d�0’lVa��2zлQ� �&�~i	��3��r�����Qt�K@O��ޝ��'>���?F�
�	h
��_�30Wx��lk�gPR��i
y	��P,0J@[н�PK@7]~f/Wx����3�@ �<��H?p��q0B��1F
q�8#g�-��`es��`[
�.�A��,\q���BQt�Xe��R�U�-�H7o���!���pĂi͢R��]#(��k�,.0W)���)��+�_?��X3�p�P�E�j�Z�����o��69��rE��g9xl���k�rD�tkZ�o�/��APw�:�1"���7��wh�M޲Dg9k���T�-�K>p�&�E�>p�
غ�4n2l�%(hr�ظG,:�A��5V9�l�|��p`�.-����2�B���yȕ\^��A0�Ֆ8����*�8�a+�M�E8�F�kѲ5�"5j]b�C�7Z���Wtr+��;�u�D-a�"�٦��A��݇��
Bp�� T�
�P*�X��ܴ��Ҫ��z��v;&��8����3��8G���d$��|�K&9�x���O�U�u��!tj�gbtM	���~q~�ύÎ_
�5ft�G~�k��G�8����8�Jz9h�ⷌ��I�@�-���F)Ot�����5LG����~��'ݖV�F��?�#�wdKb`�ºv�5����Pt� ��
� BP�L
��l-�Y�*��e��e+t�'xc��g"�=,���=�����-i�)ߑ�Z����%�!uS��}2��B���P*`AqC*��� x���>��8���P�^m婢���� G
`K�76^�=��ݓx������ю`>����`>��r����K�Q9�|TOE���@,��
"��4��A]���J���#�O��-i�9����“����o�}��s��w_�@���]:؁P
���J��B�AL �A�|e�Y�8�/��CA����
�=H,	�
�"(ZD�ZEz��S'�D9Dp.yӳ�	�������Y��>�����s~&��e�p6�9)��R*����*Y��})$D�PBWp�@�G/��5N �*hDŽ�)%�=P!�1	�E;��|��}R�l�'�c?��7;�X.Pү'�N�D��(�E~��%}��I�L�Y �&.H@�I�,�3 �,�x��`���).
r�J�lԎ�j\c�n\�������x����. ��G�:���ݢ)�	@�_,&|���?R�|���P ���	l��@��y��3؂O��KO���5�G�����D�pu�hŃx����㲦� ��Lt
/o��M x���}��i�Z�`�~�(l+$��\yX+C@��-CB2��Z-8!�``�`�`a�,�I�_g5�e�8xg��Q�Wk9W�b/������m*O�L)���
x���+�M }�lR��d���2
�Xq 
� G
�*�
�{H|)�*B��"�TΧb�Ԩ�
�v6�s6��$r����B���~PU���>0AU{~!C���TI�͵ʽ�d	�d��I�H1���1���{�@2��P���ؽ�ߌ0�qz�q� ���A�@ �� 0�������mpy{8p�8�n`����	�}�'�.Z���]����5;�r�	���m�6���B���x�?�=J�����@�H�^��@Ʒcr�!=����
���|v��#��ʛ}�sƨ
�P^�3�<-5k��v��ɢP���o]B�L���'h.����o=/-�v�PПH�?��������x\ ˔O-�e>�����?�ޔe���B�;��U쥔-�Q��KAB�/���@��D�"�[p�S@�jCmkK��X���,�?=f���c %����1�0 $x��`���R�ƒ���<��(�gc�j"N��0"�x} ��.��p��4P���0��1*\���[r�s	"�Aŀ�1`f�5���wf��-��{�C,��Č;�*-�#8z� ��<����R�Q4�)J6c�d$&�VH�Nf�ԇ�C����c���b�亙ibXN����n�ع��<�kpH���z����w�ժ��2�#��r?���3�6��ݕ���u�����v�XEB��M
���f

�B�V~@`J�����͐���$�ivu��*��`N剟̪ȥ��A�&�+��dG�8`�\ڕ�N&
�[-�����@�|E�����ȅ�:�d��C�u�P����#��F�(�����9�
Y_xQv�KrQ��BMcί��׀E��q4�
�G#�����`�C@~^B���@�)u4@3�LO���$�E��\ڋ�N��n&�
��*	�[������I�vs�u�ԝ〟�<��tK�-�
"%�Y���:�r�	C�L$�X*�=��4�3�4�X|{&Q"Z�F#����`d02�F#����`d��P`d02�F#����`dt�F#SG[�02�F#���}C����`d02�F#����v �식3�m���m5�J�K�OF��V[���q!Ch�#9�Ґ��…�ī��=�F��adFv�
F��adF��ad�ld�#c���G�>2��)7�vT�і�=9��5�1��<�y€yTS
�t�|(�t0Ϙ<�N
��	��Vz���C�>E�f��̓g��
_�F�� ��MA��;p�Pm��g�����g^��z
��o	�a�Y�KZ�Co�?
N�Н�4�A�	[|�EkϹ���P�1��ן�����	�=`dF��ad	�z�LF��`d&@�02�#��.|�s��M�aǕ�pD��"*��/st��#5�!(5���N�TH7�@�d0��{B����t��&C��{���rw��i�wh�w���m���G6�s�h�����;�د�;$�A(����PP
@!>{�X�:�a�N(��9��]l�"\�ϗ�9���s�{%O"�IB02'phk˷%
v����$�}*������`�f6����egd�֡�"�S���NXȆ���
�Z�I�6�i��7��2�e%p�� ��S$�=st��^,B�y;-g�A>%h2>e>p�3���;x��$�Ǖ�P{�@(�ߣ����<����A��l��Ԁ�J�2=��0i�3�o^�9mJ�y���J����yO�
g�*���-x�PX�o��A�3Cxf(�<P^�����ER0#n����܉�l����>�8ek̀�r��_L�~1y��(|��@4�P��U��^{��Pt�3�d���y �ar&�at��L�~q�)ͭ�.`��_�n8?s,�\A�1$�@A(� ��PP

@!4[�$@��>�Ԙ�|ш7�r ��Z��$
榵-V�*���k��I�4�1S�
S���7X��C�1o��r�oiH��m"0
Htm��tt]7�b��A��M~��t3�(ƅ a�02T�3T���޿�&L��I��6E��?߭F��4f��hQ�"@_f0T��Q��1aMh8�.��u�d���|`�}ɀ��,XBA(� ����+�
�p�C!��$@�Ӡ��2������dn����Ԫk[�Q�Uv���k6$�ZoW�
/��mMm����u���c8?�鬒z�e=��ƪ�:��g8`l�j����A5OG�`k0��P��Y��v��M(���pH�Cg���t�g�pZk�f�,q�|k�o�Q�<�>��E���0^Q�2Ya�J�;���Mx��(̱3*,� ��� H���g(�/����Q����X��ؓˏ��y LwY����,|���I71�8�g���zE]���o��
�KMݫ&E�|�}��TuH�)���:�C���L�n���8�H��n!��n��M���\(��&����y��@S��߽��is�hS�����$݂ET�����"H��)!"z�R
@QSHHx[�p�@�"�D��j��ZG6�'��`j״]�/.�"{�OS�+��x��$�,������Q:���t���mcF2���Geg�Z�>��u����*�Dׅ�6��|�=��P���J�:@	6Pm��%8c���s�-��ܳ++sW5�Ś���;����1+r����;��a��(��	�/�����/eS�4̐�%�gt4��S>pPl{����=􊋇)8�����0�[��tN����Av���ZJ��KǨ
�`�{��	t!x�ɠ+i�	4h�0
��J��/��ӇqZ����C��E߿E!ui��#�k_�y��P�/���g ;��oͼv��)A��%
 d���� �I0�� �U�}A�F���Fp�D�Icl4�S�&Wl
\%p����`��ށ��������`|�X�Q7��A��z�����o�o���>u=}NG}O��/��J����/��E�3Y2���DX
��h��Rpa� B�I(p7\�4�.D<��c�4�(��9E�*�A� YPZ�F��X��p�4;��ՊhJRf�� �{H9L���-��ۗ���H'�[��'l�A���(��^��'`���?�u�u� <�\
���ԁ�I �i7����t�a�Y����	��`�XD������R��4�'`���Nڜ��ݤ-`=��]��	t$�\kWJ۴�s�ۮ(����/��;��N^����جgoI-���?G1I���T�E����d��
X!Y@��`���^5CP)kѮB�
�� J �^L�E.=�ФM��<��h9.��$�
���/^�gu��K��8�)$I45����bg��Ă�8<�4�upOH���aR�Tā�>�c<�YU@���vi��kf8ǽ�l�bx������YYތ_�*�Tݨw����mt̝þ���g#�(8��P�	�@�����(��0������P�F (E�(K�@�`�,{@;|g\Y#��h�f��`��WY�'�u�1o?�/����N����d��z�7e��Y�"@�����A
ә��29@��O�Ɓ���heoπ��L0������m��`�o�)��tm���[Ft��m��)����E�
��Kml��IEND�B`�lib/img/volume_icon_ftp.svg000064400000026101147361034410012002 0ustar00<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48" overflow="visible"><path d="M36.66 41.52h-8.89a1.55 1.52 0 0 0-.75-.65v-8.8h-5.05v8.81a1.55 1.52 0 0 0-.75.64h-8.9v4.94h8.74a1.55 1.52 0 0 0 1.49 1.14h3.88c.72 0 1.32-.49 1.5-1.14h8.72v-4.94z" opacity=".2" stroke-width="1.02"/><path d="M36.47 41.34h-8.9a1.55 1.52 0 0 0-.75-.65v-8.81h-5.04v8.81a1.55 1.52 0 0 0-.76.65h-8.9v4.93h8.74a1.55 1.52 0 0 0 1.5 1.15h3.88c.72 0 1.32-.5 1.5-1.15h8.73z" opacity=".2" stroke-width="1.02"/><path d="M36.27 41.15h-8.9a1.55 1.52 0 0 0-.75-.65v-8.8H21.6v8.8a1.55 1.52 0 0 0-.77.65h-8.88v4.93h8.73a1.55 1.52 0 0 0 1.5 1.14h3.87c.73 0 1.34-.48 1.5-1.14h8.73z" opacity=".2" stroke-width="1.02"/><path d="M35.38 40.95H11.74v4.95H36.1v-4.95z" fill="#616161" stroke-width="1.02"/><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="23.72" y1="41.11" x2="23.72" y2="44.64" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#cecedb"/><stop offset=".19" stop-color="#fff"/><stop offset=".48" stop-color="#cecedb"/><stop offset=".75" stop-color="#b3b3c6"/><stop offset=".99" stop-color="#828282"/></linearGradient><path d="M12.44 41.63h22.95v3.58H12.44z" fill="url(#a)" stroke-width="1.02"/><path d="M21.4 31.88v12.64h5.04V31.5h-5.05z" fill="#616161" stroke-width="1.02"/><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="291.57" y1="864.85" x2="291.57" y2="868.38" gradientTransform="matrix(0 -1.01271 1.0339 0 -872.08 333.28)"><stop offset="0" stop-color="#cecedb"/><stop offset=".19" stop-color="#fff"/><stop offset=".48" stop-color="#cecedb"/><stop offset=".75" stop-color="#b3b3c6"/><stop offset=".99" stop-color="#828282"/></linearGradient><path d="M22.08 31.88h3.65v12.26h-3.65z" fill="url(#b)" stroke-width="1.02"/><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="23.72" y1="46.44" x2="23.72" y2="39.69" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#cf0000"/><stop offset=".99" stop-color="#ff6d00"/></linearGradient><path d="M27.4 45.51c0 .84-.7 1.52-1.54 1.52h-3.89a1.55 1.52 0 0 1-1.55-1.52v-3.79c0-.84.7-1.52 1.55-1.52h3.88c.86 0 1.55.68 1.55 1.52v3.8z" fill="url(#c)" stroke-width="1.02"/><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="23.72" y1="37.07" x2="23.72" y2="49.63" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff030"/><stop offset=".99" stop-color="#ffae00"/></linearGradient><path d="M21.97 40.95a.78.76 0 0 0-.78.76v3.8c0 .43.36.76.78.76h3.88c.43 0 .77-.33.77-.76v-3.79a.78.76 0 0 0-.77-.76h-3.88z" fill="url(#d)" stroke-width="1.02"/><linearGradient id="e" gradientUnits="userSpaceOnUse" x1="23.72" y1="41" x2="23.72" y2="43.82" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff"/><stop offset=".5" stop-color="#ffe3a9"/><stop offset=".99" stop-color="#ffc957"/></linearGradient><path d="M21.97 41.52c-.1 0-.19.1-.19.2v3.8c0 .1.09.18.19.18h3.88c.1 0 .2-.08.2-.19v-3.79c0-.1-.1-.19-.2-.19h-3.88z" fill="url(#e)" stroke-width="1.02"/><path d="M25.5 1.3L11.94 10l-.04.02-.05.04-.04.03-.18.2-.02.04-.04.08-.02.04-.03.1-.02.03-.02.08v.05l-.02.1v23.13c0 .44.3.84.72.98l10.1 3.3c.33.1.7.05.97-.15l13.46-9.9c.27-.2.43-.5.43-.83V4.15l-.01-.06v-.04l-.02-.03-.02-.08-.02-.06-.05-.07-.03-.06-.04-.07-.04-.05-.04-.06-.02-.02-.03-.04-.05-.04-.07-.05-.06-.03-.07-.05-.07-.03-.07-.02a7.24 7.09 0 0 0-.08-.03h-.05l-10-2.12c-.28-.06-.57 0-.8.16zm-14.02 9.36" opacity=".2" stroke-width="1.02"/><path d="M36.75 4.25V4.13l-.02-.02a.9.88 0 0 0-.05-.13l-.02-.04-.03-.04-.02-.05-.03-.03-.03-.03-.04-.03-.03-.03a.86.84 0 0 0-.05-.03l-.04-.02-.04-.02-.05-.02-.05-.01-.03-.01-10-2.11a.68.67 0 0 0-.52.1L12.16 10.3h-.01l-.02.02-.03.02-.02.02a.73.72 0 0 0-.12.13l-.02.02c0 .02-.02.04-.03.05v.03l-.03.05v.03l-.02.06v.04l-.01.06v23.1c0 .28.18.53.46.62l10.1 3.3c.2.07.44.04.61-.1l13.47-9.89a.68.67 0 0 0 .26-.53V4.25z" opacity=".2" stroke-width="1.02"/><path d="M25.3 1.1L11.76 9.8l-.06.02-.05.04-.03.03-.19.2-.02.05-.04.08-.02.04-.03.09v.04l-.04.1v.04l-.01.1v23.11c0 .45.29.84.72 1l10.1 3.29c.32.1.7.05.98-.15l13.46-9.9c.26-.2.41-.5.41-.83V3.85l-.03-.03-.02-.08-.02-.06-.03-.07-.03-.07-.06-.06-.04-.06-.04-.05-.05-.05-.05-.05-.06-.04-.07-.04-.07-.04-.06-.03-.07-.03a7.24 7.09 0 0 0-.08-.02l-.06-.02-10-2.1c-.27-.05-.56 0-.8.15zm-14.01 9.38" opacity=".2" stroke-width="1.02"/><path d="M36.56 4.05v-.04l-.01-.05v-.01l-.01-.02-.01-.05-.02-.04a.35.34 0 0 0-.02-.04l-.02-.04-.04-.04-.02-.04-.03-.03-.03-.03-.04-.04-.03-.03a.86.84 0 0 0-.12-.07l-.05-.02h-.05l-.03-.02-10-2.1a.68.67 0 0 0-.52.1l-13.55 8.69-.03.02-.03.02-.02.02a.73.72 0 0 0-.11.13l-.03.02-.02.05-.02.03-.02.05v.03l-.02.06V33.75c0 .29.18.54.46.63l10.09 3.3c.2.06.44.03.62-.1l13.46-9.9a.68.67 0 0 0 .27-.52V4.06z" opacity=".2" stroke-width="1.02"/><linearGradient id="f" gradientUnits="userSpaceOnUse" x1="32.27" y1="26.92" x2="14.03" y2="8.67" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#585868"/><stop offset="1" stop-color="#494949"/></linearGradient><path d="M25.1.78l-13.54 8.7-.05.03-.05.04-.04.03-.17.2-.03.04-.04.08-.02.04-.04.09v.04l-.03.1v.04l-.02.1v23.12c0 .45.3.84.73.98l10.1 3.3c.33.1.69.05.97-.15l13.46-9.9c.27-.2.42-.5.42-.82V3.64l-.02-.08V3.5l-.04-.07-.02-.06a14.7 14.4 0 0 0-.06-.13l-.04-.07-.04-.05-.04-.05-.02-.02-.05-.04-.05-.04-.06-.05-.06-.04-.07-.04-.07-.03-.07-.04-.07-.02h-.06L25.9.63c-.28-.06-.57 0-.8.14zm-14 9.38" fill="url(#f)" stroke-width="1.02"/><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="15.17" y1="9.81" x2="33.41" y2="28.05" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#494949"/></linearGradient><path d="M36.36 3.75V3.6l-.03-.06-.02-.04a.35.34 0 0 0-.02-.05l-.02-.03-.02-.04-.03-.04-.03-.03c0-.02-.02-.03-.03-.04a1.13 1.1 0 0 0-.04-.03l-.04-.02-.04-.03-.04-.02-.04-.02-.04-.02-.05-.01-.04-.01-10-2.1a.68.67 0 0 0-.52.08L11.77 9.8h-.01l-.03.01-.03.03-.02.02a.73.72 0 0 0-.11.14l-.01.02-.03.05-.02.03-.01.05-.01.03-.02.05v23.19c0 .3.17.55.45.64l10.1 3.29c.2.07.44.03.61-.1l13.46-9.89a.68.67 0 0 0 .27-.52z" fill="url(#g)" stroke-width="1.02"/><radialGradient id="h" cx="105.2" cy="47.28" r="139.09" fx="105.2" fy="47.28" gradientTransform="matrix(.19386 0 0 .18988 19.55 19.75)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff"/><stop offset=".28" stop-color="#cecedb"/><stop offset=".64" stop-color="#bdbdcf"/><stop offset="1" stop-color="#9a9ab1"/></radialGradient><path d="M12.14 10.35l10.09 3.3 13.46-9.9v23.09l-13.46 9.88-10.1-3.29z" fill="url(#h)" stroke-width="1.02"/><linearGradient id="i" gradientUnits="userSpaceOnUse" x1="23.72" y1="13.22" x2="23.72" y2="3.36" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#cecedb"/><stop offset="1" stop-color="#eee"/></linearGradient><path d="M25.7 1.66l-13.56 8.69 10.09 3.3 13.46-9.9z" fill="url(#i)" stroke-width="1.02"/><linearGradient id="j" gradientUnits="userSpaceOnUse" x1="15.04" y1="16.69" x2="22.17" y2="38.24" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M12.14 33.42l10.09 3.3V13.65l-10.1-3.3z" fill="url(#j)" stroke-width="1.02"/><linearGradient id="k" gradientUnits="userSpaceOnUse" x1="16.64" y1="35.2" x2="17.78" y2="28.48" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#bdbdcf"/></linearGradient><path d="M12.14 27.75v5.67l10.09 3.3V30.9z" fill="url(#k)" stroke-width="1.02"/><linearGradient id="l" gradientUnits="userSpaceOnUse" x1="13.81" y1="16.36" x2="20.09" y2="16.36" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M13.66 16.37l6.51 2.12v-1.73l-6.51-2.13z" fill="url(#l)" stroke-width="1.02"/><linearGradient id="m" gradientUnits="userSpaceOnUse" x1="13.81" y1="18.78" x2="20.09" y2="18.78" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M13.66 18.84l6.51 2.11v-1.74l-6.51-2.13z" fill="url(#m)" stroke-width="1.02"/><linearGradient id="n" gradientUnits="userSpaceOnUse" x1="14.63" y1="18.9" x2="18.67" y2="22.93" gradientTransform="matrix(1.0339 0 0 1.01271 -.61 0)"><stop offset="0" stop-color="#7d7d99"/><stop offset="1" stop-color="#cecedb"/></linearGradient><path d="M13.66 21.29l6.51 2.12v-1.74l-6.51-2.12z" fill="url(#n)" stroke-width="1.02"/><linearGradient id="o" gradientUnits="userSpaceOnUse" x1="271.32" y1="478.92" x2="271.32" y2="477.59" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset=".01" stop-color="#fff"/><stop offset="1" stop-color="#b6b6b6"/></linearGradient><path d="M19.84 33.83c-.48-.12-.84.1-.84.51 0 .4.36.81.83.94l.5.13c.47.13.83-.1.83-.5s-.36-.81-.82-.94z" fill="url(#o)" stroke-width="1.02"/><linearGradient id="p" gradientUnits="userSpaceOnUse" x1="271.32" y1="478.86" x2="271.32" y2="477.72" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset=".01" stop-color="#b6b6b6"/><stop offset=".37" stop-color="#9d9d9d"/><stop offset=".74" stop-color="#898989"/><stop offset="1" stop-color="#828282"/></linearGradient><path d="M19.84 34.03c-.36-.1-.65.07-.65.36 0 .3.29.6.65.7l.5.13c.35.1.65-.07.65-.36 0-.3-.3-.61-.65-.7z" fill="url(#p)" stroke-width="1.02"/><linearGradient id="q" gradientUnits="userSpaceOnUse" x1="-890.74" y1="529.26" x2="-890.74" y2="528.08" gradientTransform="matrix(-.99864 -.26209 0 .78637 -869.45 -614.56)"><stop offset=".01" stop-color="#9f6"/><stop offset=".24" stop-color="#68de56"/><stop offset=".48" stop-color="#3bc147"/><stop offset=".7" stop-color="#1bab3c"/><stop offset=".88" stop-color="#079e35"/><stop offset="1" stop-color="#093"/></linearGradient><path d="M20.93 34.84c0 .26-.27.4-.6.31l-.49-.13c-.33-.08-.59-.35-.59-.6 0-.27.26-.41.59-.32l.5.12c.32.1.59.36.59.63z" fill="url(#q)" stroke-width="1.02"/><linearGradient id="r" gradientUnits="userSpaceOnUse" x1="271.31" y1="478.52" x2="271.34" y2="477.65" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset=".01" stop-color="#3c3"/><stop offset=".36" stop-color="#1bb433"/><stop offset=".74" stop-color="#07a033"/><stop offset="1" stop-color="#093"/></linearGradient><path d="M19.84 34.23c-.26-.07-.48.03-.48.22 0 .2.22.4.48.48l.5.13c.24.06.46-.04.46-.23 0-.2-.2-.4-.46-.48l-.5-.13z" fill="url(#r)" stroke-width="1.02"/><linearGradient id="s" gradientUnits="userSpaceOnUse" x1="271.32" y1="477.78" x2="271.32" y2="478.35" gradientTransform="matrix(.99864 .26209 0 1.04846 -250.87 -537.8)"><stop offset="0" stop-color="#fff"/><stop offset=".09" stop-color="#e8f7d6"/><stop offset=".23" stop-color="#c8ed9e"/><stop offset=".36" stop-color="#ade46d"/><stop offset=".5" stop-color="#97dc46"/><stop offset=".63" stop-color="#85d627"/><stop offset=".76" stop-color="#79d212"/><stop offset=".89" stop-color="#72d004"/><stop offset="1" stop-color="#6fcf00"/></linearGradient><path d="M19.82 34.14c-.2-.05-.37.04-.37.15 0 .11.16.3.37.35l.54.15c.2.05.36-.04.36-.16 0-.1-.16-.3-.36-.35z" fill="url(#s)" stroke-width="1.02"/><path d="M-.61 48.61V0h49.63v48.61" fill="none" stroke-width="1.02"/></svg>lib/img/volume_icon_sql.svg000064400000022073147361034410012014 0ustar00<svg viewBox="0 0 233.1 286.6" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a"><stop stop-color="#fff" offset="0"/><stop stop-color="#fff" stop-opacity="0" offset="1"/></linearGradient><linearGradient id="b" x1="1618.4" x2="1701.1" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop stop-color="#497bb3" offset="0"/><stop stop-color="#a5c4e6" offset=".2"/><stop stop-color="#3b5d8b" offset="1"/></linearGradient><linearGradient id="c" x1="282.4" x2="286.6" y1="518.6" y2="527.3" gradientUnits="userSpaceOnUse"><stop stop-color="#a5c4e6" offset="0"/><stop stop-color="#497bb3" offset="1"/></linearGradient><linearGradient id="d" x1="1702.8" x2="1783.8" y1="-868.3" y2="-877.9" gradientUnits="userSpaceOnUse" xlink:href="#a" spreadMethod="reflect"/><linearGradient id="e" x1="1702.8" x2="1783.8" y1="-821.2" y2="-830.8" gradientUnits="userSpaceOnUse" xlink:href="#a" spreadMethod="reflect"/><linearGradient id="f" x1="1702.8" x2="1783.8" y1="-777" y2="-786.6" gradientUnits="userSpaceOnUse" xlink:href="#a" spreadMethod="reflect"/></defs><g class="Graphic"><path d="M183 16.4c2.3 3.9 1.5 189.2-1.6 196.5-2.4 5.8-80.6 70.8-84.7 72.5-52.9-.3-88.5-19.6-94.5-29.8C0 242.8 2 45.6 4 41.6 6 37.8 106 2 109.5 1.1c3.2-.7 70.7 10.9 73.4 15.2z" fill="#c7c7c7"/><path d="M181.9 17l.3-.2h-.1l-.3.1h.3-.1l-.1.1zm0 0l.2-.1v-.1l.3-.1-.2.2.2-.2-.2.1-.2.2zm.5-.3l.5-.3-.5.2zm.6-.2l-.6.2.6-.2zm.9-.7c0-.2-.2-.3-.3-.5l-.4-.3-1-.6-1-.5-1.5-.5c-1-.4-2.2-.8-3.6-1.1l-4.5-1.2A858.9 858.9 0 0 0 124 1.8l-9-1.3-3-.4h-1l-.5-.1h-.9l-.2.1h-.4l-.3.2-.6.1-.6.3-1.6.5-2.1.7-5.5 2-6.8 2.4a3492.8 3492.8 0 0 0-71 26.4l-6.7 2.7a210.2 210.2 0 0 0-8.8 4l-.6.4-.5.3c-.1.2-.3.3-.4.3L3 41l-.2.4v.4l-.1.5-.1.7c0 .4 0 1-.2 1.5v2a326.8 326.8 0 0 0-.6 12A6597.9 6597.9 0 0 0 .2 237l.2 6.9.2 5.4.2 4 .1 1.5v.6l.1.4v.2l.2.2a19 19 0 0 0 3.8 4.5c1.7 1.5 3.8 3.1 6.4 4.8 5 3.3 11.8 6.7 20 9.8a190.2 190.2 0 0 0 65.3 11.3h.5l.4-.3.3-.2.5-.3.6-.5 1.4-1 1.8-1.3 4.4-3.5 5.5-4.4a1569.7 1569.7 0 0 0 56.5-47.8l5.3-4.8 4.2-4 1.6-1.7 1.4-1.4.9-1 .3-.5c0-.2.2-.4.3-.5v-.4l.2-.4a19 19 0 0 0 .3-2.4l.2-1.7.3-4.2.3-5.3.9-30.7a4531.2 4531.2 0 0 0 .1-139 202.1 202.1 0 0 0-.5-11.1v-.8l-.2-.6v-.5l-.2-.2-.1-.3zm-1.7 1l.5-.6-.5.6zm-.3.4v.5l.1.7.2 1.9v2.4l.4 6.6a2727.6 2727.6 0 0 1 .5 56.4c0 27.4-.2 58.1-.7 82.5a1759.8 1759.8 0 0 1-1.5 40.1c0 .6 0 1.2-.2 1.7l-.1 1.2-.2.8v.4l-.1.2-.2.3-.8 1-1.3 1.3-1.6 1.6-4.1 3.9a1419.9 1419.9 0 0 1-61.7 52.5l-5.5 4.4-4.4 3.5c-.6.5-1.2 1-1.8 1.3l-1.3 1a4 4 0 0 1-.6.4l-.3.3-.3.1a194.1 194.1 0 0 1-64.1-11.1c-8-3-14.6-6.4-19.6-9.6a46.8 46.8 0 0 1-8.1-6.7c-.5-.5-.9-1-1.2-1.6v-.7l-.2-1.3-.3-4a724.6 724.6 0 0 1-.2-12.2A6591.7 6591.7 0 0 1 4.2 58.6c0-2.5.2-4.7.3-6.8l.2-5.1.1-2 .2-1.5v-.5l.1-.5.1-.1.3-.3.6-.3 1.4-.7 2-1 5.1-2.1 6.7-2.7a2431 2431 0 0 1 71-26.4L99 6l5.4-1.9 2.1-.7 1.7-.6.6-.1.5-.2.3-.1h.2l-.1-.5v.4h1l1 .2 3.1.3 8.9 1.3a816.2 816.2 0 0 1 47.4 9.2l4.3 1.2 3.5 1 1.3.6 1 .4.6.4v.2zm-85.6 267h.4v.7l-.4-.6.4.6v.5l-.5-1 .1-.1zM3.3 255v.2l.1.2-1.2.2 1-.5h.2-.1zM5 42v.2l-.3-.3-.8-.2.8.2h-.1.2l.2.1zm-.3 0zm-.8-.5l.7.4-.7-.4zm.7.4l-.5-.6.5.6zM109.7 2l-.1-.8V2zm-.2-.8l.2.8-.2-.8z"/><path d="M179 20.2l-2.4 1-2.5 1.2-2.4 1-2.5 1.2-2.5 1.2-2.5 1.2-2.6 1.3-2.5 1.3-2.6 1.2-2.5 1.4-2.6 1.3-2.6 1.4-2.6 1.3-2.6 1.4-5.3 2.8-5.3 2.9-5.3 2.8-5.3 3-5.4 2.8-5.4 2.8-5.4 2.8-2.7 1.4-2.7 1.3-2.8 1.4-2.7 1.3-1.2-.3-1.4-.3-2.6-.6-2.8-.7-2.8-.6-2.8-.7-2.9-.6-2.9-.7-3-.7-2.9-.6-3-.7-6-1.4-6-1.3-3-.7-3-.6-3-.6-2.9-.6-2.9-.7-2.8-.6-2.9-.6-2.7-.6-2.7-.5-1.3-.3-1.4-.3-1.2-.2-1.3-.3-1.3-.2-1.2-.2-1.3-.3-1.2-.3-1.1-.2-1.2-.2-1.1-.2-1.1-.2-1.1-.2-1-.2-1.1-.2-1-.2-1-.2-1-.2 2.5.8 2.5.8 2.5.7 2.5.7 2.6.8 2.6.7 2.7.8 2.7.7 2.7.7 2.7.7 5.5 1.5 5.6 1.4 5.6 1.5 5.6 1.5 5.5 1.4 5.5 1.4 2.7.8 2.7.7 2.7.7 2.7.8 2.6.7 2.6.8 2.6.7 2.5.7 2.4.8 2.5.7v2.9l.1 2.9v2.9l.1 3v3l.2 3v6.2l.1 3.2v3.2l.1 3.2v6.5l.1 3.3v6.7l.1 3.4v10.2l.1 7v14l.1 7 .1 14.2v14.2l.1 7v7l.1 7v7l.1 3.4v6.8l.1 3.4v6.7l.1 3.3v6.5l.1 3.2v6.4l.1 3.1v3l.1 3.2.1 3v3l.1 2.9.1 2.8v2.9l.1-2.9v-5.9l.1-3v-3l.1-3v-3.2l.1-3.2v-6.4l.1-3.2.1-3.3v-3.3l.1-3.4v-3.3l.1-3.4v-3.5l.2-3.4v-6.9l.2-7 .1-7 .1-7.2.2-7.2.3-14.3.2-14.4.1-7.1.2-7.1v-7.1l.2-7V126l.2-3.5v-6.8l.1-3.4v-3.4l.1-3.3.1-3.3v-6.6l.1-3.2v-3.2l.1-3.1V83l.1-3v-3l.1-3.1V68l.1-2.8 5.2-2.8 5.2-2.8 5.2-2.7L120 54l5.1-2.7 5.1-2.7 5-2.7 5.1-2.8 5-2.7 5-2.7 4.9-2.9 4.9-2.8 2.4-1.5 2.4-1.4 2.4-1.5 2.3-1.5 2.4-1.4 2.4-1.5 2.3-1.6 2.4-1.5z" fill="#fff" fill-opacity=".5"/><path d="M179 20.2C153 31.2 124.4 49 95.4 63a1898 1898 0 0 0-87-18.8c25.7 8 59.5 15.5 85.2 23.5 1.5 60.2.8 151.4 2.3 211.6.7-60.7 2.8-153.4 3.5-214 27.8-15 55-28.5 79.8-45z" fill="none"/><path d="M18 218.5l.4.6.5.7.5.6.6.6.6.6.5.5.7.6.6.6.7.5.7.5.7.6.7.5.8.5.8.5.7.5.8.5.9.4.8.5.9.4.8.4 1 .4.8.4 1 .4.8.3 2 .8 1.8.6 2 .6 2 .5 1.9.5 2 .4 2 .4 1.9.3 2 .3 1.9.1h1l.9.1H63l1-.1.7-.1.9-.1.8-.1.8-.2.8-.2.8-.2.7-.1.7-.2.7-.3.7-.2h-.1l-.3-.1H71l-.4-.2h-.4l-.4-.2-.5-.2-.6-.1-.6-.2-.7-.1-.7-.2-.7-.3-.8-.2-.8-.2-.9-.2-.9-.3-1-.3-.9-.2-1-.3-1-.3-1-.2-1.1-.3-1-.4-1.2-.2-2.3-.7-2.3-.6-2.4-.7-2.4-.6-2.3-.7-2.4-.6-2.3-.7-2.3-.6-1.1-.3-1.2-.3-1-.4-1-.2-1.1-.3-1-.3-1-.3-1-.2-.9-.3-.9-.2-.8-.3-.8-.2-.8-.2-.7-.2-.7-.2-.6-.2-.6-.2-.6-.1-.4-.2H19l-.3-.2h-.3l-.3-.2H18z" fill-opacity=".2"/><path d="M18 218.5c9.5 13.7 39.4 20.4 53.6 14.9-2.5-.7-50.5-13.9-53.6-15z" fill="none"/><path d="M67 193.1l-44.4-17-.4.1-.4.2-.4.2-.3.2-.3.3-.2.3-.3.3-.2.3-.2.4-.2.3-.1.3-.2.4-.1.4-.1.3-.2.7v.7l-.1.7v2.2l7 2.4v.1l.1.2h.1v.2l.2.2v.1l.2.2.2.2.1.2.2.2.2.2.2.3.2.2.5.5.5.6.6.5.6.6.7.6.7.6.8.6.8.6.9.5.9.5 1 .6 1 .4.5.2.6.3.5.2.6.1.6.2.6.1.6.2.6.1.6.1h.6l.7.2h3.5l.7-.1.7-.1.7-.1.8-.2.8-.2.7-.2.8-.2.8-.3h.4l.3.1h.3l.3.1h.4l.4.1h.5l.5.1h.6l.5.1h4.4l.6-.2h.6l.6-.2.6-.2.5-.1.5-.2.5-.3.5-.3.3-.3.4-.3.2-.2.1-.2.1-.2.1-.2.1-.2.1-.3z" fill="#fff" fill-opacity=".4"/><path d="M67 193.1l-44.4-17c-4.6 1.6-3.7 8.3-3.7 8.3l7 2.4s9.6 15.1 26.7 9.2c0 0 12.8 2.3 14.3-2.9z" fill="none"/><path d="M66.5 187.4l-44.1-11.5c-.6 2-.7 5 .2 6.6 2.3 1.1 6.8 2 9 3 6.4 6.3 12 6.8 22.3 6l12 2.2c1.2-2.4 1.5-3.4.6-6.3z" fill="#606060"/><path d="M66.5 187.4l-44.1-11.5c-.6 2-.7 5 .2 6.6 2.3 1.1 6.8 2 9 3 6.4 6.3 12 6.8 22.3 6l12 2.2c1.2-2.4 1.5-3.4.6-6.3z" fill="none"/><path d="M180.7 18.9L94.8 67.1l.4 215.4 84-70.7 1.5-192.9z" fill="#fff" fill-opacity=".4"/><path d="M180.7 18.9L94.8 67.1l.4 215.4 84-70.7 1.5-192.9z" fill="none"/><path d="M23 232.1l.4.6.5.6.5.6.5.5.5.6.6.5.5.5.6.5.6.5.5.5.6.4.6.5.6.4.6.4 1.3.8 1.4.7 1.3.7 1.3.6 1.4.5 1.4.5 1.4.4 1.4.4 1.4.4 1.4.3 1.4.2 1.4.2 1.4.1 1.5.1 1.3.1h2.8l1.3-.1 1.3-.1 1.3-.1 1.2-.3 1.2-.2 1.1-.3 1.2-.3 1-.4h-.3l-.2-.1H63l-.3-.1-.4-.1-.3-.1-.5-.1-.4-.2-.5-.1-.5-.2-.6-.1-.6-.2-.6-.1-.7-.2-.7-.2-.7-.2-.7-.2-.8-.2-.8-.3-.8-.2-.8-.2-1.7-.5-1.7-.4-1.8-.5-1.8-.5-1.8-.5-3.6-1-1.7-.5-1.8-.5-1.7-.5-.8-.2-.8-.2-.8-.2-.8-.2-.7-.3-.7-.1-.7-.2-.7-.2-.7-.2-.6-.2-.5-.1-.6-.2-.5-.1-.5-.2-.4-.1-.4-.1-.4-.2h-.6l-.2-.2h-.4z" fill-opacity=".2"/><path d="M23 232.1c9.8 13 29.6 15.3 40.7 11.3a3565 3565 0 0 1-40.8-11.3z" fill="none"/><path d="M30.3 245.5l.5.7.6.7.6.7.7.5.6.6.7.6.7.5.8.5.7.4.8.5.8.4.8.3.8.3.8.4.9.2.8.2.9.3.9.1.8.2 1 .1.8.1h4.5l.8-.2.9-.1.8-.2.9-.2.8-.2.8-.3h-.2l-.2-.1h-.2l-.2-.2h-.2l-.3-.1h-.3l-.3-.1-.3-.1-.4-.1-.4-.1-.4-.2H52l-.4-.2-1-.2-.9-.3-1-.3-1-.3-1.1-.2-1.1-.4-2.3-.6-2.3-.6-1-.3-1.2-.3-1-.3-1-.3-1-.3-1-.2-.4-.1-.4-.2h-.4l-.4-.2h-.4l-.3-.2h-.3l-.3-.2h-.3l-.2-.1H31l-.2-.1h-.2l-.1-.1h-.2z" fill-opacity=".2"/><path d="M30.3 245.5c5.7 7.7 16.8 10.1 25.5 7l-25.5-7z" fill="none"/><path d="M15 59l-4.4.5-.8 103 67.4 18.8L79 176l-64.8-17.3L15 59z" fill="#fcfcfc" fill-opacity=".4"/><path d="M15 59l-4.4.5-.8 103 67.4 18.8L79 176l-64.8-17.3L15 59z" fill="none"/><path d="M78.6 97l-.1 3L15 81.7l63.6 15.4zm.9 21l-.1 3L16 102.5 79.5 118zm-.9 19.4l-.1 2.9L15 122l63.6 15.4zm0 19l-.1 3L15 141l63.6 15.4z" fill-opacity=".2"/><path d="M15.2 61.3l63 15.8-.5 104h1l.6-104.4v-.4l-.4-.1-63.5-16-.1.6-.1.5zm63.4 15.9l-.4-.1v-.4h.6l-.2.5z" fill="#9e9e9e"/></g><path d="M1618.4-890.9v126.4h.5c-.3 1-.5 2-.5 3 0 15.3 37 27.6 82.7 27.6s82.6-12.3 82.6-27.6c0-1-.1-2-.5-3h.5v-126.4h-165.3z" fill="url(#b)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path transform="matrix(4.58315 0 0 4.28653 -1157 -2110.6)" d="M303.3 521.8c0 3-7.5 5.5-16.7 5.5s-16.6-2.5-16.6-5.5 7.4-5.6 16.6-5.6 16.7 2.5 16.7 5.6z" fill="url(#c)"/><path d="M80.2 205.2c.6 13 34.7 23.4 76.5 23.4 41.7 0 75.6-10.4 76.4-23.3-13.4 10.6-42.5 18-76.4 18-34 0-63.1-7.4-76.5-18.1z" fill="#3b5d8b"/><path d="M1618.3-891.5c.6 15 37.5 27.2 82.8 27.2 45.2 0 81.9-12 82.7-27l-3 2.2c-9.7 11.7-41.6 20.3-79.7 20.3-38.3 0-70.5-8.7-80-20.5 0 0 0-.2-.2-.2l-2.6-2z" fill="url(#d)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path d="M80.2 167c.6 13 34.7 23.5 76.5 23.5 41.7 0 75.6-10.4 76.4-23.4-13.4 10.7-42.5 18-76.4 18-34 0-63.1-7.4-76.5-18z" fill="#3b5d8b"/><path d="M1618.3-844.4c.6 15 37.5 27.2 82.8 27.2 45.2 0 81.9-12 82.7-27l-.7.5c-5.2 13.5-40 24-82 24-42.5 0-77.5-10.5-82.3-24.3l-.5-.4z" fill="url(#e)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path d="M1618.3-800.2c.6 15 37.5 27.2 82.8 27.2 45.2 0 81.9-12 82.7-27l-.7.5c-5.2 13.5-40 24-82 24-42.5 0-77.5-10.6-82.3-24.3l-.5-.4z" fill="url(#f)" transform="matrix(.92352 0 0 .86375 -1414.3 896.3)"/><path d="M80.7 244.5c4.4 11.9 36.8 21 76 21 38.8 0 71-9 75.7-20.8-13.6 10.4-42.4 17.6-75.7 17.6-33.6 0-62.5-7.3-76-17.8z" fill="#3b5d8b"/></svg>lib/img/volume_icon_googledrive.svg000064400000000337147361034410013522 0ustar00<svg xmlns="http://www.w3.org/2000/svg" version="1" width="48" height="48"><path d="M17 6h14l14 24H31z" fill="#ffc107"/><path d="M10 42l7-12h28l-7 12z" fill="#1976d2"/><path d="M3 30l7 12 14-24-7-12z" fill="#4caf50"/></svg>lib/img/edit_tuiimgedit.png000064400000000275147361034410011754 0ustar00�PNG


IHDR���R'PLTE��;��.�����!��`�ۙ��A��4����S�������dmQIDAT�c@F��PPPP(��PaCH,���Ueg��x�,Z���{�!��PfL�((�b�M-(��#��
�S�,IEND�B`�lib/img/trashmesh.png000064400000000244147361034410010575 0ustar00�PNG


IHDR�RW�bKGD�������	pHYs��DIDAT�u�K
�0CуE?(������wrIZ�H�Uo�f)����`��9�7[	sG\N�����8�?IEND�B`�lib/img/edit_onlineconvert.png000064400000001646147361034410012500 0ustar00�PNG


IHDR(-SgAMA���asRGB���IPLTE����FN�DQ�G�E1�[���P�F|�wH�Dz�v��Қ�����
, .�Z����FL�F�FQ�G&�G �FD�<K�G/�FP�o�C �F%�Go+7�1
3�1;�AE�G:�FN�FO�F���c$`%!�A+o(�E/�[D�EF�B����3�[)v,y�uF�G�DM�B���=�a'
 �GF�F{�wN�DJ�Dk�iC�D)x,$s+6���8�EH�[���Q�FD8O�F-�:i�j'>�C)f#8�BN�E]�[1�EB�bz2��ġ��2e�i7�F:�D-q({�vO�D���G�d���c'3b�\O�E6�DW�f���u-T�f#�7\�g���0�D`�h,�E���F�]���E�U�����������[!B�:���UnSB�9P�F"3{,J�A���U�PQ�FR�I.r(���2~*AMBK�A%`!C�:]]_:���B���0D�=G�>L�BM�D9�3������"!";�4J�A.v(! !  !���R�I������" !%!������!"!-r' !!������'d!���M���R�GjNI��IDAT�c෉�j(�/�i������e���ɬ�-.(�Hv1a``����)�,�Ou5�
��2��f�4%��q�@�����-aR��L^v:jΎQI%&.U1M'N�����>��43H��@C�ڃ�KY*`������0��`i��������c�:s1�|�,,�@�ܾ)�n<�F`���mi@��I���ݿw��Њ��Z3z&�Y�e���֯[%8��a������9�{߶M�W��j�KJ���IEND�B`�lib/jquery/jquery-ui-1.11.4.js000064400000725472147361034410011665 0ustar00/*! jQuery UI - v1.11.4 - 2015-03-11
* http://jqueryui.com
* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */

(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);
i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);
return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date(jQuery.getFullYear(),jQuery.getMonth()-K[0]*K[1]+1,jQuery.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?"&#xa0;":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td>&#160;</td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;
this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});lib/jquery/jquery-ui-1.12.1.js000064400000753634147361034410011664 0ustar00/*! jQuery UI - v1.12.1 - 2021-01-02
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */

!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(k){k.ui=k.ui||{};k.ui.version="1.12.1";var n,i=0,r=Array.prototype.slice;k.cleanData=(n=k.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)try{(e=k._data(i,"events"))&&e.remove&&k(i).triggerHandler("remove")}catch(t){}n(t)}),k.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],h=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=k.Widget),k.isArray(e)&&(e=k.extend.apply(null,[{}].concat(e))),k.expr[":"][h.toLowerCase()]=function(t){return!!k.data(t,h)},k[r]=k[r]||{},s=k[r][t],n=k[r][t]=function(t,e){if(!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},k.extend(n,s,{version:e.version,_proto:k.extend({},e),_childConstructors:[]}),(o=new i).options=k.widget.extend({},o.options),k.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}k.isFunction(s)?a[e]=function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:a[e]=s}),n.prototype=k.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:h}),s?(k.each(s._childConstructors,function(t,e){var i=e.prototype;k.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),k.widget.bridge(t,n),n},k.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],s[n].hasOwnProperty(e)&&void 0!==i&&(k.isPlainObject(i)?t[e]=k.isPlainObject(t[e])?k.widget.extend({},t[e],i):k.widget.extend({},i):t[e]=i);return t},k.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;k.fn[o]=function(i){var t="string"==typeof i,s=r.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=k.data(this,a);return"instance"===i?(n=e,!1):e?k.isFunction(e[i])&&"_"!==i.charAt(0)?(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:k.error("no such method '"+i+"' for "+o+" widget instance"):k.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=k.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=k.data(this,a);t?(t.option(i||{}),t._init&&t._init()):k.data(this,a,new e(i,this))})),n}},k.Widget=function(){},k.Widget._childConstructors=[],k.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=k(e||this.defaultElement||this)[0],this.element=k(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=k(),this.hoverable=k(),this.focusable=k(),this.classesElementLookup={},e!==this&&(k.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=k(e.style?e.ownerDocument:e.document||e),this.window=k(this.document[0].defaultView||this.document[0].parentWindow)),this.options=k.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:k.noop,_create:k.noop,_init:k.noop,destroy:function(){var i=this;this._destroy(),k.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:k.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return k.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=k.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=k(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||k(),i=n.add?k(k.unique(i.get().concat(n.element.get()))):k(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return n=k.extend({element:this.element,classes:this.options.classes||{}},n),this._on(n.element,{remove:"_untrackClassesElement"}),n.keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;k.each(s.classesElementLookup,function(t,e){-1!==k.inArray(i.target,e)&&(s.classesElementLookup[t]=k(e.not(i.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,t={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return t.element.toggleClass(this._classes(t),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=k(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),k.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!k(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||k.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+r.eventNamespace,s=s[2];s?a.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e).off(e),this.bindings=k(this.bindings.not(t).get()),this.focusable=k(this.focusable.not(t).get()),this.hoverable=k(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(k(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(k(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(k(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(k(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=k.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!(k.isFunction(o)&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},k.each({show:"fadeIn",hide:"fadeOut"},function(o,a){k.Widget.prototype["_"+o]=function(e,t,i){var s;"string"==typeof t&&(t={effect:t});var n=t?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})&&(t={duration:t}),s=!k.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&k.effects&&k.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){k(this)[o](),i&&i.call(e[0]),t()})}});var s,x,C,o,a,h,l,c,D;k.widget;function I(t,e,i){return[parseFloat(t[0])*(c.test(t[0])?e/100:1),parseFloat(t[1])*(c.test(t[1])?i/100:1)]}function T(t,e){return parseInt(k.css(t,e),10)||0}x=Math.max,C=Math.abs,o=/left|center|right/,a=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,l=/^\w+/,c=/%$/,D=k.fn.position,k.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=k("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),i=e.children()[0];return k("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?k.position.scrollbarWidth():0,height:e?k.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=k(t||window),i=k.isWindow(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?k(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},k.fn.position=function(u){if(!u||!u.of)return D.apply(this,arguments);u=k.extend({},u);var d,p,f,g,m,t,_=k(u.of),v=k.position.getWithinInfo(u.within),b=k.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:k.isWindow(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,g=e.offset,m=k.extend({},g),k.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");1===i.length&&(i=o.test(i[0])?i.concat(["center"]):a.test(i[0])?["center"].concat(i):["center","center"]),i[0]=o.test(i[0])?i[0]:"center",i[1]=a.test(i[1])?i[1]:"center",t=h.exec(i[0]),e=h.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[l.exec(i[0])[0],l.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=I(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=k(this),r=a.outerWidth(),h=a.outerHeight(),e=T(this,"marginLeft"),s=T(this,"marginTop"),n=r+e+T(this,"marginRight")+b.width,o=h+s+T(this,"marginBottom")+b.height,l=k.extend({},m),c=I(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?l.left-=r:"center"===u.my[0]&&(l.left-=r/2),"bottom"===u.my[1]?l.top-=h:"center"===u.my[1]&&(l.top-=h/2),l.left+=c[0],l.top+=c[1],i={marginLeft:e,marginTop:s},k.each(["left","top"],function(t,e){k.ui.position[y[t]]&&k.ui.position[y[t]][e](l,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:h,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-l.left,i=e+p-r,s=g.top-l.top,n=s+f-h,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:l.left,top:l.top,width:r,height:h},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&C(e+i)<p&&(o.horizontal="center"),f<h&&C(s+n)<f&&(o.vertical="middle"),x(C(e),C(i))>x(C(s),C(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(k.extend(l,{using:t}))})},k.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0<a&&r<=0?(i=t.left+a+e.collisionWidth-n-s,t.left+=a-i):t.left=!(0<r&&a<=0)&&r<a?s+n-e.collisionWidth:s:0<a?t.left+=a:0<r?t.left-=r:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,a=s-o,r=o+e.collisionHeight-n-s;e.collisionHeight>n?0<a&&r<=0?(i=t.top+a+e.collisionHeight-n-s,t.top+=a-i):t.top=!(0<r&&a<=0)&&r<a?s+n-e.collisionHeight:s:0<a?t.top+=a:0<r?t.top-=r:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,a=t.left-e.collisionPosition.marginLeft,r=a-o,h=a+e.collisionWidth-n-o,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,a=-2*e.offset[0];r<0?((s=t.left+l+i+a+e.collisionWidth-n-s)<0||s<C(r))&&(t.left+=l+i+a):0<h&&(0<(o=t.left-e.collisionPosition.marginLeft+l+i+a-o)||C(o)<h)&&(t.left+=l+i+a)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,a=t.top-e.collisionPosition.marginTop,r=a-o,h=a+e.collisionHeight-n-o,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,a=-2*e.offset[1];r<0?((s=t.top+l+i+a+e.collisionHeight-n-s)<0||s<C(r))&&(t.top+=l+i+a):0<h&&(0<(o=t.top-e.collisionPosition.marginTop+l+i+a-o)||C(o)<h)&&(t.top+=l+i+a)}},flipfit:{left:function(){k.ui.position.flip.left.apply(this,arguments),k.ui.position.fit.left.apply(this,arguments)},top:function(){k.ui.position.flip.top.apply(this,arguments),k.ui.position.fit.top.apply(this,arguments)}}};var t;k.ui.position,k.extend(k.expr[":"],{data:k.expr.createPseudo?k.expr.createPseudo(function(e){return function(t){return!!k.data(t,e)}}):function(t,e,i){return!!k.data(t,i[3])}}),k.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});k.ui.focusable=function(t,e){var i,s,n,o,a=t.nodeName.toLowerCase();return"area"===a?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=k("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(a)?(n=!t.disabled)&&(o=k(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===a&&t.href||e,n&&k(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}(k(t)))},k.extend(k.expr[":"],{focusable:function(t){return k.ui.focusable(t,null!=k.attr(t,"tabindex"))}});k.ui.focusable,k.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):k(this[0].form)},k.ui.formResetMixin={_formResetHandler:function(){var e=k(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");k.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element.form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(k.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};"1.7"===k.fn.jquery.substring(0,3)&&(k.each(["Width","Height"],function(t,i){var n="Width"===i?["Left","Right"]:["Top","Bottom"],s=i.toLowerCase(),o={innerWidth:k.fn.innerWidth,innerHeight:k.fn.innerHeight,outerWidth:k.fn.outerWidth,outerHeight:k.fn.outerHeight};function a(t,e,i,s){return k.each(n,function(){e-=parseFloat(k.css(t,"padding"+this))||0,i&&(e-=parseFloat(k.css(t,"border"+this+"Width"))||0),s&&(e-=parseFloat(k.css(t,"margin"+this))||0)}),e}k.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){k(this).css(s,a(this,t)+"px")})},k.fn["outer"+i]=function(t,e){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){k(this).css(s,a(this,t,!0,e)+"px")})}}),k.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))});k.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},k.ui.escapeSelector=(e=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g,function(t){return t.replace(e,"\\$1")}),k.fn.labels=function(){var t,e,i;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+k.ui.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e))},k.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=k(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:k(this[0].ownerDocument||document)},k.extend(k.expr[":"],{tabbable:function(t){var e=k.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&k.ui.focusable(t,i)}}),k.fn.extend({uniqueId:(u=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++u)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&k(this).removeAttr("id")})}}),k.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var e,u,d=!1;k(document).on("mouseup",function(){d=!1});k.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===k.data(t.target,e.widgetName+".preventClickEvent"))return k.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&k(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===k.data(t.target,this.widgetName+".preventClickEvent")&&k.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(k.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&k.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,d=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),k.ui.plugin={add:function(t,e,i){var s,n=k.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},k.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return(i=i||e.body).nodeName||(i=e.body),i},k.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&k(t).trigger("blur")};k.widget("ui.draggable",k.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<k(t.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(t),!!this.handle&&(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),!0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=k(this);return k("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=k.ui.safeActiveElement(this.document[0]);k(t.target).closest(e).length||k.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),k.ui.ddmanager&&(k.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===k(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),k.ui.ddmanager&&!e.dropBehaviour&&k.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),k.ui.ddmanager&&k.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new k.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",k.ui.ddmanager&&k.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return k.ui.ddmanager&&!this.options.dropBehaviour&&(i=k.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||k.isFunction(this.options.revert)&&this.options.revert.call(this.element,i)?k(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),k.ui.ddmanager&&k.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),k.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new k.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!k(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i=k.isFunction(e.helper),t=i?k(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),k.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&k.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options,n=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(e=k(s.containment))[0])&&(t=/(scroll|auto)/.test(e.css("overflow")),this.containment=[(parseInt(e.css("borderLeftWidth"),10)||0)+(parseInt(e.css("paddingLeft"),10)||0),(parseInt(e.css("borderTopWidth"),10)||0)+(parseInt(e.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e.css("borderRightWidth"),10)||0)-(parseInt(e.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e.css("borderBottomWidth"),10)||0)-(parseInt(e.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=e)):this.containment=s.containment:this.containment=[0,0,k(n).width()-this.helperProportions.width-this.margins.left,(k(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[k(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,k(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,k(window).scrollLeft()+k(window).width()-this.helperProportions.width-this.margins.left,k(window).scrollTop()+(k(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,t=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:t?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:t?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(i=this.relativeContainer?(i=this.relativeContainer.offset(),[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),k.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),k.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),k.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=k.extend({},t,{item:i.element});i.sortables=[],k(i.options.connectToSortable).each(function(){var t=k(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=k.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,k.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){k.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,k.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,this!==e&&this._intersectsWith(this.containerCache)&&k.contains(e.element[0],this.element[0])&&(t=!1),t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,k.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,k.each(n.sortables,function(){this.refreshPositions()}))})}}),k.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=k("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&k("body").css("cursor",i._cursor)}}),k.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=k(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&k(e.helper).css("opacity",i._opacity)}}),k.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-k(a).scrollTop()<s.scrollSensitivity?n=k(a).scrollTop(k(a).scrollTop()-s.scrollSpeed):k(window).height()-(t.pageY-k(a).scrollTop())<s.scrollSensitivity&&(n=k(a).scrollTop(k(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-k(a).scrollLeft()<s.scrollSensitivity?n=k(a).scrollLeft(k(a).scrollLeft()-s.scrollSpeed):k(window).width()-(t.pageX-k(a).scrollLeft())<s.scrollSensitivity&&(n=k(a).scrollLeft(k(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&k.ui.ddmanager&&!s.dropBehaviour&&k.ui.ddmanager.prepareOffsets(i,t)}}),k.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],k(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=k(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,h,l,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)h=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(l=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||h+p<f||_<l-p||c+p<m||!k.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,k.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(l-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(h-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:l-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:h}).left)),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(l-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(h-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:l,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:h-i.helperProportions.width}).left)),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,k.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),k.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=k.makeArray(k(i.stack)).sort(function(t,e){return(parseInt(k(t).css("zIndex"),10)||0)-(parseInt(k(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(k(i[0]).css("zIndex"),10)||0,k(i).each(function(t){k(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),k.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=k(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&k(e.helper).css("zIndex",i._zIndex)}});k.ui.draggable;k.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept=k.isFunction(i)?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t||(t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){k.ui.ddmanager.droppables[t]=k.ui.ddmanager.droppables[t]||[],k.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=k.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept=k.isFunction(e)?e:function(t){return t.is(e)}:"scope"===t&&(i=k.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=k.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=k.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=k.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=k.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||k.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=k(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&p(i,k.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),!s&&(!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var p=k.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,h=e.offset.left,l=e.offset.top,c=h+e.proportions().width,u=l+e.proportions().height;switch(i){case"fit":return h<=n&&a<=c&&l<=o&&r<=u;case"intersect":return h<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&l<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return f(s.pageY,l,e.proportions().height)&&f(s.pageX,h,e.proportions().width);case"touch":return(l<=o&&o<=u||l<=r&&r<=u||o<l&&u<r)&&(h<=n&&n<=c||h<=a&&a<=c||n<h&&c<a);default:return!1}};function f(t,e,i){return e<=t&&t<e+i}!(k.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=k.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return k.each((k.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&p(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e)))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||k.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&k.ui.ddmanager.prepareOffsets(n,o),k.each(k.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(i=p(n,this,this.options.tolerance,o))&&this.isover?"isout":i&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return k(this).droppable("instance").options.scope===e})).length&&((t=k(i[0]).droppable("instance")).greedyChild="isover"===s)),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o)))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||k.ui.ddmanager.prepareOffsets(t,e)}})!==k.uiBackCompat&&k.widget("ui.droppable",k.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});k.ui.droppable;k.widget("ui.resizable",k.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===k(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;return 0<t[i]||(t[i]=1,e=0<t[i],t[i]=0,e)},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),k.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(k("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&k(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();function t(t){k(t).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){this._super(t,e),"handles"===t&&(this._removeHandles(),this._setupHandles())},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(k(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=k(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=k.trim(i[e])),n=k("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.append(n);this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=k(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=k(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=k(this.handles[e])[0])!==t.target&&!k.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=k(s.containment).scrollLeft()||0,i+=k(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=k(".ui-resizable-"+this.axis).css("cursor"),k("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),k.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(k.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),k("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&i&&(t.top=h-e.minHeight),n&&i&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||k("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return k.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return k.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return k.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return k.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){k.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),k.ui.plugin.add("resizable","animate",{stop:function(e){var i=k(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(k.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&k(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),k.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=k(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof k?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=k(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:k(document),left:0,top:0,width:k(document).width(),height:k(document).height()||document.body.parentNode.scrollHeight}):(i=k(a),s=[],k(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=k(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=k(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=k(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&k(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&k(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),k.ui.plugin.add("resizable","alsoResize",{start:function(){var t=k(this).resizable("instance").options;k(t.alsoResize).each(function(){var t=k(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=k(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};k(s.alsoResize).each(function(){var t=k(this),s=k(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];k.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){k(this).removeData("ui-resizable-alsoresize")}}),k.ui.plugin.add("resizable","ghost",{start:function(){var t=k(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==k.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=k(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=k(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),k.ui.plugin.add("resizable","grid",{resize:function(){var t,e=k(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<p,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),s&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-l<=0||d-h<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<p-l?(e.size.height=p,e.position.top=o.top-u):(p=l-t.height,e.size.height=p,e.position.top=o.top+n.height-p),0<d-h?(e.size.width=d,e.position.left=o.left-c):(d=h-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});k.ui.resizable,k.widget("ui.selectable",k.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=k(i.element[0]).offset(),i.selectees=k(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=k(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};k.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=k("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=k(this.element[0]).offset(),this.options.disabled||(this.selectees=k(t.filter,this.element[0]),this._trigger("start",i),k(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=k.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),k(i.target).parents().addBack().each(function(){var t,e=k.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],h=s.pageX,l=s.pageY;return h<a&&(t=h,h=a,a=t),l<r&&(t=l,l=r,r=t),this.helper.css({left:a,top:r,width:h-a,height:l-r}),this.selectees.each(function(){var t=k.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(i.left>h||i.right<a||i.top>l||i.bottom<r):"fit"===o.tolerance&&(e=i.left>a&&i.right<h&&i.top>r&&i.bottom<l),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),t.selected&&(s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,k(".ui-unselecting",this.element[0]).each(function(){var t=k.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),k(".ui-selecting",this.element[0]).each(function(){var t=k.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),k.widget("ui.sortable",k.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),k.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(t),k(t.target).parents().each(function(){if(k.data(this,n.widgetName+"-item")===n)return i=k(this),!1}),k.data(t.target,n.widgetName+"-item")===n&&(i=k(t.target)),!!i&&(!(this.options.handle&&!e&&(k(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},k.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=k("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return k.ui.ddmanager&&(k.ui.ddmanager.current=this),k.ui.ddmanager&&!o.dropBehaviour&&k.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var e,i,s,n,o=this.options,a=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=a=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=a=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=a=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=a=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?a=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(a=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?a=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(a=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),!1!==a&&k.ui.ddmanager&&!o.dropBehaviour&&k.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||k.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&k.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),k.ui.ddmanager&&k.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return k.ui.ddmanager&&!this.options.dropBehaviour&&k.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,k(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new k.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),k.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?k(this.domPosition.prev).after(this.currentItem):k(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},k(t).each(function(){var t=(k(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(k(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,l="x"===this.options.axis||r<s+l&&s+l<h,c="y"===this.options.axis||o<e+c&&e+c<a,c=l&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<h},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this._getDragVerticalDirection(),t=this._getDragHorizontalDirection(),this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),t=this._getDragHorizontalDirection();return this.floating&&t?"right"===t&&i||"left"===t&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=k(r[e],this.document[0])).length-1;0<=i;i--)(n=k.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push([k.isFunction(n.options.items)?n.options.items.call(n.element):k(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function h(){o.push(this)}for(a.push([k.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):k(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(h);return k(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=k.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,h,l=this.items,c=[[k.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):k(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=k(u[e],this.document[0])).length-1;0<=i;i--)(n=k.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push([k.isFunction(n.options.items)?n.options.items.call(n.element[0],t,{item:this.currentItem}):k(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],i=0,h=(a=c[e][0]).length;i<h;i++)(r=k(a[i])).data(this.widgetName+"-item",o),l.push({item:r,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){var e,i,s,n;for(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),e=this.items.length-1;0<=e;e--)(i=this.items[e]).instance!==this.currentContainer&&this.currentContainer&&i.item[0]!==this.currentItem[0]||(s=this.options.toleranceElement?k(this.options.toleranceElement,i.item):i.item,t||(i.width=s.outerWidth(),i.height=s.outerHeight()),n=s.offset(),i.left=n.left,i.top=n.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)n=this.containers[e].element.offset(),this.containers[e].containerCache.left=n.left,this.containers[e].containerCache.top=n.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n=(i=i||this).options;n.placeholder&&n.placeholder.constructor!==String||(s=n.placeholder,n.placeholder={element:function(){var t=i.currentItem[0].nodeName.toLowerCase(),e=k("<"+t+">",i.document[0]);return i._addClass(e,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(e,"ui-sortable-helper"),"tbody"===t?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),k("<tr>",i.document[0]).appendTo(e)):"tr"===t?i._createTrPlaceholder(i.currentItem,e):"img"===t&&e.attr("src",i.currentItem.attr("src")),s||e.css("visibility","hidden"),e},update:function(t,e){s&&!n.forcePlaceholderSize||(e.height()||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=k(n.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),n.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){k("<td>&#160;</td>",i.document[0]).attr("colspan",k(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,h,l,c=null,u=null,d=this.containers.length-1;0<=d;d--)k.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&k.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(h=c.floating||this._isFloating(this.currentItem))?"left":"top",o=h?"width":"height",l=h?"pageX":"pageY",e=this.items.length-1;0<=e;e--)k.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[l]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[l]-a)<i&&(i=Math.abs(t[l]-a),s=this.items[e],this.direction=r?"up":"down"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[u]?(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(t){var e=this.options,t=k.isFunction(e.helper)?k(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||k("parent"!==e.appendTo?e.appendTo:this.currentItem[0].parentNode)[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),k.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&k.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&k.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=k(i.containment)[0],e=k(i.containment).offset(),i="hidden"!==k(t).css("overflow"),this.containment=[e.left+(parseInt(k(t).css("borderLeftWidth"),10)||0)+(parseInt(k(t).css("paddingLeft"),10)||0)-this.margins.left,e.top+(parseInt(k(t).css("borderTopWidth"),10)||0)+(parseInt(k(t).css("paddingTop"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(k(t).css("borderLeftWidth"),10)||0)-(parseInt(k(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(k(t).css("borderTopWidth"),10)||0)-(parseInt(k(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&k.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,t=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():t?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():t?0:s.scrollLeft())*i}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&k.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===k.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||k([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}}),k.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=k(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():k()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=k("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=k.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(k(t.target).attr("tabIndex",-1),k(n).attr("tabIndex",0),k(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===k.ui.keyCode.UP&&t.ctrlKey&&k(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=k()):!1===t.active?this._activate(0):this.active.length&&!k.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=k()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=k(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=k(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=k(this).outerHeight(!0)}),this.headers.next().each(function(){k(this).height(Math.max(0,i-k(this).innerHeight()+k(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=k(this).is(":visible");t||k(this).show(),i=Math.max(i,k(this).css("height","").height()),t||k(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:k.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):k()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&k.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=k(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?k():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?k():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?k():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(k(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!i.length||t.index()<i.index()),c=this.options.animate||{},u=l&&c.down||c,l=function(){a._toggleComplete(e)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,i.length?t.length?(s=t.show().outerHeight(),i.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:n,complete:l,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===h&&(r+=e.now):"content"!==a.options.heightStyle&&(e.now=Math.round(s-i.outerHeight()-r),r=0)}})):i.animate(this.hideProps,o,n,l):t.animate(this.showProps,o,n,l)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),k.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(t){var e=k(t.target),i=k(k.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var e,i;this.previousFilter||(e=k(t.target).closest(".ui-menu-item"),i=k(t.currentTarget),e[0]===i[0]&&(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i)))},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(t){this._delay(function(){k.contains(this.element[0],k.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=k(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case k.ui.keyCode.PAGE_UP:this.previousPage(t);break;case k.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case k.ui.keyCode.HOME:this._move("first","first",t);break;case k.ui.keyCode.END:this._move("last","last",t);break;case k.ui.keyCode.UP:this.previous(t);break;case k.ui.keyCode.DOWN:this.next(t);break;case k.ui.keyCode.LEFT:this.collapse(t);break;case k.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case k.ui.keyCode.ENTER:case k.ui.keyCode.SPACE:this._activate(t);break;case k.ui.keyCode.ESCAPE:this.collapse(t);break;default:n=!1,e=this.previousFilter||"",s=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=k(this),e=t.prev(),i=k("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=k(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!k.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(k.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(k.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=k.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:k(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!k(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return(e=k(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=k(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this.activeMenu.find(this.options.items).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||k(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(k.trim(k(this).children(".ui-menu-item-wrapper").text()))})}});k.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=k.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=k.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(clearTimeout(this.searching),this.close(t),this._change(t))}}),this._initSource(),this.menu=k("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==k.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(t,e){var i;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){k(t.target).trigger(t.originalEvent)});i=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:i})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(i.value),(i=e.item.attr("aria-label")||i.value)&&k.trim(i).length&&(this.liveRegion.children().hide(),k("<div>").text(i).appendTo(this.liveRegion))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==k.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=k("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||k.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return(t=t&&(t.jquery||t.nodeType?k(t):this.document.find(t).eq(0)))&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_initSource:function(){var i,s,n=this;k.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(k.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=k.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(!t||e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return k.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:k.map(t,function(t){return"string"==typeof t?{label:t,value:t}:k.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(k.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;k.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return k("<li>").append(k("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),k.extend(k.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(k.ui.autocomplete.escapeRegex(e),"i");return k.grep(t,function(t){return i.test(t.label||t.value||t)})}}),k.widget("ui.autocomplete",k.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),k("<div>").text(e).appendTo(this.liveRegion))}});k.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;k.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];k.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=k(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(k.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=k(this),e=t[s]("instance"),i=k.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),k.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=k(k.unique(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=k(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return k.each(i,function(t){var e=s.options.classes[t]||"",e=k.trim(e.replace(g,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,this.options.onlyVisible&&(n=n.filter(":visible")),n.length&&(k.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});k.widget("ui.checkboxradio",[k.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=k(t[t.length-1]),this.label.length||k.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?k(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||k.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+k.ui.escapeSelector(t)+"']";return t?(this.form.length?k(this.form[0].elements).filter(e):k(e).filter(function(){return 0===k(this).form().length})).not(this.element):k([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=k(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=k("<span>"),this.iconSpace=k("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var m;k.ui.checkboxradio;k.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===k.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var i="iconPosition"!==t,s=i?this.options.iconPosition:e,t="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=k("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,e),this._attachIcon(s),t?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=k("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==k.uiBackCompat&&(k.widget("ui.button",k.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),k.fn.button=(m=k.fn.button,function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?m.apply(this,arguments):(k.ui.checkboxradio||k.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}),k.fn.buttonset=function(){return k.ui.controlgroup||k.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))});var _;k.ui.button;function v(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},k.extend(this._defaults,this.regional[""]),this.regional.en=k.extend(!0,{},this.regional[""]),this.regional["en-US"]=k.extend(!0,{},this.regional.en),this.dpDiv=b(k("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function b(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){k(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&k(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&k(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,y)}function y(){k.datepicker._isDisabledDatepicker((_.inline?_.dpDiv.parent():_.input)[0])||(k(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),k(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&k(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&k(this).addClass("ui-datepicker-next-hover"))}function w(t,e){for(var i in k.extend(t,e),e)null==e[i]&&(t[i]=e[i]);return t}k.extend(k.ui,{datepicker:{version:"1.12.1"}}),k.extend(v.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return w(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(k(t),n)).settings=k.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?b(k("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=k(t);e.append=k([]),e.trigger=k([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),k.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=k("<span class='"+this._appendClass+"'>"+s+"</span>"),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(i=this._get(e,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),e.trigger=k(this._get(e,"buttonImageOnly")?k("<img/>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):k("<button type='button'></button>").addClass(this._triggerClass).html(i?k("<img/>").attr({src:i,alt:s,title:s}):s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return k.datepicker._datepickerShowing&&k.datepicker._lastInput===t[0]?k.datepicker._hideDatepicker():(k.datepicker._datepickerShowing&&k.datepicker._lastInput!==t[0]&&k.datepicker._hideDatepicker(),k.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=k(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),k.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=k("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),k("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},k.data(this._dialogInput[0],"datepicker",a)),w(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),k.blockUI&&k.blockUI(this.dpDiv),k.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=k(t),s=k.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),k.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),_===s&&(_=null))},_enableDatepicker:function(e){var t,i=k(e),s=k.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=k.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=k(e),s=k.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=k.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return k.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o,a,r=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?k.extend({},k.datepicker._defaults):r?"all"===e?k.extend({},r.settings):this._get(r,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),r&&(this._curInst===r&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(r,"min"),a=this._getMinMaxDate(r,"max"),w(r.settings,s),null!==o&&void 0!==s.dateFormat&&void 0===s.minDate&&(r.settings.minDate=this._formatDate(r,o)),null!==a&&void 0!==s.dateFormat&&void 0===s.maxDate&&(r.settings.maxDate=this._formatDate(r,a)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(k(t),r),this._autoSize(r),this._setDate(r,n),this._updateAlternate(r),this._updateDatepicker(r))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=k.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,k.datepicker._datepickerShowing)switch(t.keyCode){case 9:k.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=k("td."+k.datepicker._dayOverClass+":not(."+k.datepicker._currentClass+")",s.dpDiv))[0]&&k.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(e=k.datepicker._get(s,"onSelect"))?(i=k.datepicker._formatDate(s),e.apply(s.input?s.input[0]:null,[i,s])):k.datepicker._hideDatepicker(),!1;case 27:k.datepicker._hideDatepicker();break;case 33:k.datepicker._adjustDate(t.target,t.ctrlKey?-k.datepicker._get(s,"stepBigMonths"):-k.datepicker._get(s,"stepMonths"),"M");break;case 34:k.datepicker._adjustDate(t.target,t.ctrlKey?+k.datepicker._get(s,"stepBigMonths"):+k.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&k.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&k.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&k.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&k.datepicker._adjustDate(t.target,t.ctrlKey?-k.datepicker._get(s,"stepBigMonths"):-k.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&k.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&k.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&k.datepicker._adjustDate(t.target,t.ctrlKey?+k.datepicker._get(s,"stepBigMonths"):+k.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&k.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?k.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=k.datepicker._getInst(t.target);if(k.datepicker._get(i,"constrainInput"))return e=k.datepicker._possibleChars(k.datepicker._get(i,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!e||-1<e.indexOf(i)},_doKeyUp:function(t){var e=k.datepicker._getInst(t.target);if(e.input.val()!==e.lastVal)try{k.datepicker.parseDate(k.datepicker._get(e,"dateFormat"),e.input?e.input.val():null,k.datepicker._getFormatConfig(e))&&(k.datepicker._setDateFromField(e),k.datepicker._updateAlternate(e),k.datepicker._updateDatepicker(e))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=k("input",t.parentNode)[0]),k.datepicker._isDisabledDatepicker(t)||k.datepicker._lastInput===t||(n=k.datepicker._getInst(t),k.datepicker._curInst&&k.datepicker._curInst!==n&&(k.datepicker._curInst.dpDiv.stop(!0,!0),n&&k.datepicker._datepickerShowing&&k.datepicker._hideDatepicker(k.datepicker._curInst.input[0])),!1!==(i=(s=k.datepicker._get(n,"beforeShow"))?s.apply(t,[t,n]):{})&&(w(n.settings,i),n.lastVal=null,k.datepicker._lastInput=t,k.datepicker._setDateFromField(n),k.datepicker._inDialog&&(t.value=""),k.datepicker._pos||(k.datepicker._pos=k.datepicker._findPos(t),k.datepicker._pos[1]+=t.offsetHeight),e=!1,k(t).parents().each(function(){return!(e|="fixed"===k(this).css("position"))}),s={left:k.datepicker._pos[0],top:k.datepicker._pos[1]},k.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),k.datepicker._updateDatepicker(n),s=k.datepicker._checkOffset(n,s,e),n.dpDiv.css({position:k.datepicker._inDialog&&k.blockUI?"static":e?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"}),n.inline||(i=k.datepicker._get(n,"showAnim"),s=k.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(k(t))+1),k.datepicker._datepickerShowing=!0,k.effects&&k.effects.effect[i]?n.dpDiv.show(i,k.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),k.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),k.datepicker._curInst=n)))},_updateDatepicker:function(t){this.maxRows=4,(_=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a");0<n.length&&y.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===k.datepicker._curInst&&k.datepicker._datepickerShowing&&k.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),e=t.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:k(document).scrollLeft()),h=document.documentElement.clientHeight+(i?0:k(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?k(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?k(document).scrollTop():0,e.left-=Math.min(e.left,e.left+s>r&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,e.top+n>h&&n<h?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||k.expr.filters.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=k(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==k.data(t,"datepicker")||this._datepickerShowing&&(e=this._get(s,"showAnim"),i=this._get(s,"duration"),t=function(){k.datepicker._tidyDialog(s)},k.effects&&(k.effects.effect[e]||k.effects[e])?s.dpDiv.hide(e,k.datepicker._get(s,"showOptions"),i,t):s.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?i:null,t),e||t(),this._datepickerShowing=!1,(t=this._get(s,"onClose"))&&t.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),k.blockUI&&(k.unblockUI(),k("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;k.datepicker._curInst&&(e=k(t.target),t=k.datepicker._getInst(e[0]),(e[0].id===k.datepicker._mainDivId||0!==e.parents("#"+k.datepicker._mainDivId).length||e.hasClass(k.datepicker.markerClassName)||e.closest("."+k.datepicker._triggerClass).length||!k.datepicker._datepickerShowing||k.datepicker._inDialog&&k.blockUI)&&(!e.hasClass(k.datepicker.markerClassName)||k.datepicker._curInst===t)||k.datepicker._hideDatepicker())},_adjustDate:function(t,e,i){var s=k(t),t=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(t,e+("M"===i?this._get(t,"showCurrentAtPos"):0),i),this._updateDatepicker(t))},_gotoToday:function(t){var e=k(t),i=this._getInst(e[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(t=new Date,i.selectedDay=t.getDate(),i.drawMonth=i.selectedMonth=t.getMonth(),i.drawYear=i.selectedYear=t.getFullYear()),this._notifyChange(i),this._adjustDate(e)},_selectMonthYear:function(t,e,i){var s=k(t),t=this._getInst(s[0]);t["selected"+("M"===i?"Month":"Year")]=t["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(t),this._adjustDate(s)},_selectDay:function(t,e,i,s){var n=k(t);k(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=k("a",s).html(),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=k(t);this._selectDate(t,"")},_selectDate:function(t,e){var i=k(t),t=this._getInst(i[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(e=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),t=this.formatDate(e,i,this._getFormatConfig(t)),k(s).val(t))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e=new Date(t.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;function o(t){return(t=w+1<e.length&&e.charAt(w+1)===t)&&w++,t}function i(t){var e=o(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,e=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}");if(!(e=n.substring(c).match(e)))throw"Missing number at position "+c;return c+=e[0].length,parseInt(e[0],10)}function s(t,e,i){var s=-1,e=k.map(o(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(k.each(e,function(t,e){var i=e[1];if(n.substr(c,i.length).toLowerCase()===i.toLowerCase())return s=e[0],c+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+c}function a(){if(n.charAt(c)!==e.charAt(w))throw"Unexpected literal at position "+c;c++}for(var r,h,l,c=0,u=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof u?u:(new Date).getFullYear()%100+parseInt(u,10),d=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,p=(t?t.dayNames:null)||this._defaults.dayNames,f=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,g=(t?t.monthNames:null)||this._defaults.monthNames,m=-1,_=-1,v=-1,b=-1,y=!1,w=0;w<e.length;w++)if(y)"'"!==e.charAt(w)||o("'")?a():y=!1;else switch(e.charAt(w)){case"d":v=i("d");break;case"D":s("D",d,p);break;case"o":b=i("o");break;case"m":_=i("m");break;case"M":_=s("M",f,g);break;case"y":m=i("y");break;case"@":m=(l=new Date(i("@"))).getFullYear(),_=l.getMonth()+1,v=l.getDate();break;case"!":m=(l=new Date((i("!")-this._ticksTo1970)/1e4)).getFullYear(),_=l.getMonth()+1,v=l.getDate();break;case"'":o("'")?a():y=!0;break;default:a()}if(c<n.length&&(h=n.substr(c),!/^\s+/.test(h)))throw"Extra/unparsed characters found in date: "+h;if(-1===m?m=(new Date).getFullYear():m<100&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(m<=u?0:-100)),-1<b)for(_=1,v=b;;){if(v<=(r=this._getDaysInMonth(m,_-1)))break;_++,v-=r}if((l=this._daylightSavingAdjust(new Date(m,_-1,v))).getFullYear()!==m||l.getMonth()+1!==_||l.getDate()!==v)throw"Invalid date";return l},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function n(t){return(t=a+1<e.length&&e.charAt(a+1)===t)&&a++,t}function s(t,e,i){var s=""+e;if(n(t))for(;s.length<i;)s="0"+s;return s}function o(t,e,i,s){return(n(t)?s:i)[e]}var a,r=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,h=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,c=(i?i.monthNames:null)||this._defaults.monthNames,u="",d=!1;if(t)for(a=0;a<e.length;a++)if(d)"'"!==e.charAt(a)||n("'")?u+=e.charAt(a):d=!1;else switch(e.charAt(a)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=o("D",t.getDay(),r,h);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=o("M",t.getMonth(),l,c);break;case"y":u+=n("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":n("'")?u+="'":d=!0;break;default:u+=e.charAt(a)}return u},_possibleChars:function(e){function t(t){return(t=n+1<e.length&&e.charAt(n+1)===t)&&n++,t}for(var i="",s=!1,n=0;n<e.length;n++)if(s)"'"!==e.charAt(n)||t("'")?i+=e.charAt(n):s=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":t("'")?i+="'":s=!0;break;default:i+=e.charAt(n)}return i},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s,t=null==t||""===t?e:"string"==typeof t?function(t){try{return k.datepicker.parseDate(k.datepicker._get(r,"dateFormat"),t,k.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?k.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,k.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,k.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(i=t,(s=new Date).setDate(s.getDate()+i),s):new Date(t.getTime());return(t=t&&"Invalid Date"===t.toString()?e:t)&&(t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)),this._daylightSavingAdjust(t)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){k.datepicker._adjustDate(i,-e,"M")},next:function(){k.datepicker._adjustDate(i,+e,"M")},hide:function(){k.datepicker._hideDatepicker()},today:function(){k.datepicker._gotoToday(i)},selectDay:function(){return k.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return k.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return k.datepicker._selectMonthYear(i,this,"Y"),!1}};k(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z=new Date,O=this._daylightSavingAdjust(new Date(z.getFullYear(),z.getMonth(),z.getDate())),A=this._get(t,"isRTL"),N=this._get(t,"showButtonPanel"),W=this._get(t,"hideIfNoPrevNext"),E=this._get(t,"navigationAsDateFormat"),F=this._getNumberOfMonths(t),R=this._get(t,"showCurrentAtPos"),z=this._get(t,"stepMonths"),L=1!==F[0]||1!==F[1],B=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Y=this._getMinMaxDate(t,"min"),j=this._getMinMaxDate(t,"max"),q=t.drawMonth-R,K=t.drawYear;if(q<0&&(q+=12,K--),j)for(e=this._daylightSavingAdjust(new Date(j.getFullYear(),j.getMonth()-F[0]*F[1]+1,j.getDate())),e=Y&&e<Y?Y:e;this._daylightSavingAdjust(new Date(K,q,1))>e;)--q<0&&(q=11,K--);for(t.drawMonth=q,t.drawYear=K,R=this._get(t,"prevText"),R=E?this.formatDate(R,this._daylightSavingAdjust(new Date(K,q-z,1)),this._getFormatConfig(t)):R,i=this._canAdjustMonth(t,-1,K,q)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+R+"'><span class='ui-icon ui-icon-circle-triangle-"+(A?"e":"w")+"'>"+R+"</span></a>":W?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+R+"'><span class='ui-icon ui-icon-circle-triangle-"+(A?"e":"w")+"'>"+R+"</span></a>",R=this._get(t,"nextText"),R=E?this.formatDate(R,this._daylightSavingAdjust(new Date(K,q+z,1)),this._getFormatConfig(t)):R,s=this._canAdjustMonth(t,1,K,q)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+R+"'><span class='ui-icon ui-icon-circle-triangle-"+(A?"w":"e")+"'>"+R+"</span></a>":W?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+R+"'><span class='ui-icon ui-icon-circle-triangle-"+(A?"w":"e")+"'>"+R+"</span></a>",W=this._get(t,"currentText"),R=this._get(t,"gotoCurrent")&&t.currentDay?B:O,W=E?this.formatDate(W,R,this._getFormatConfig(t)):W,E=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",E=N?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(A?E:"")+(this._isInRange(t,R)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+W+"</button>":"")+(A?"":E)+"</div>":"",n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),a=this._get(t,"dayNames"),r=this._get(t,"dayNamesMin"),h=this._get(t,"monthNames"),l=this._get(t,"monthNamesShort"),c=this._get(t,"beforeShowDay"),u=this._get(t,"showOtherMonths"),d=this._get(t,"selectOtherMonths"),p=this._getDefaultDate(t),f="",m=0;m<F[0];m++){for(_="",this.maxRows=4,v=0;v<F[1];v++){if(b=this._daylightSavingAdjust(new Date(K,q,t.selectedDay)),x=" ui-corner-all",y="",L){if(y+="<div class='ui-datepicker-group",1<F[1])switch(v){case 0:y+=" ui-datepicker-group-first",x=" ui-corner-"+(A?"right":"left");break;case F[1]-1:y+=" ui-datepicker-group-last",x=" ui-corner-"+(A?"left":"right");break;default:y+=" ui-datepicker-group-middle",x=""}y+="'>"}for(y+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+x+"'>"+(/all|left/.test(x)&&0===m?A?s:i:"")+(/all|right/.test(x)&&0===m?A?i:s:"")+this._generateMonthYearHeader(t,q,K,Y,j,0<m||0<v,h,l)+"</div><table class='ui-datepicker-calendar'><thead><tr>",w=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",g=0;g<7;g++)w+="<th scope='col'"+(5<=(g+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+a[k=(g+n)%7]+"'>"+r[k]+"</span></th>";for(y+=w+"</tr></thead><tbody>",C=this._getDaysInMonth(K,q),K===t.selectedYear&&q===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,C)),x=(this._getFirstDayOfMonth(K,q)-n+7)%7,C=Math.ceil((x+C)/7),D=L&&this.maxRows>C?this.maxRows:C,this.maxRows=D,I=this._daylightSavingAdjust(new Date(K,q,1-x)),T=0;T<D;T++){for(y+="<tr>",P=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(I)+"</td>":"",g=0;g<7;g++)M=c?c.apply(t.input?t.input[0]:null,[I]):[!0,""],H=(S=I.getMonth()!==q)&&!d||!M[0]||Y&&I<Y||j&&j<I,P+="<td class='"+(5<=(g+n+6)%7?" ui-datepicker-week-end":"")+(S?" ui-datepicker-other-month":"")+(I.getTime()===b.getTime()&&q===t.selectedMonth&&t._keyEvent||p.getTime()===I.getTime()&&p.getTime()===b.getTime()?" "+this._dayOverClass:"")+(H?" "+this._unselectableClass+" ui-state-disabled":"")+(S&&!u?"":" "+M[1]+(I.getTime()===B.getTime()?" "+this._currentClass:"")+(I.getTime()===O.getTime()?" ui-datepicker-today":""))+"'"+(S&&!u||!M[2]?"":" title='"+M[2].replace(/'/g,"&#39;")+"'")+(H?"":" data-handler='selectDay' data-event='click' data-month='"+I.getMonth()+"' data-year='"+I.getFullYear()+"'")+">"+(S&&!u?"&#xa0;":H?"<span class='ui-state-default'>"+I.getDate()+"</span>":"<a class='ui-state-default"+(I.getTime()===O.getTime()?" ui-state-highlight":"")+(I.getTime()===B.getTime()?" ui-state-active":"")+(S?" ui-priority-secondary":"")+"' href='#'>"+I.getDate()+"</a>")+"</td>",I.setDate(I.getDate()+1),I=this._daylightSavingAdjust(I);y+=P+"</tr>"}11<++q&&(q=0,K++),_+=y+="</tbody></table>"+(L?"</div>"+(0<F[0]&&v===F[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}f+=_}return f+=E,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g=this._get(t,"changeMonth"),m=this._get(t,"changeYear"),_=this._get(t,"showMonthAfterYear"),v="<div class='ui-datepicker-title'>",b="";if(o||!g)b+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,b+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!h||c>=s.getMonth())&&(!l||c<=n.getMonth())&&(b+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");b+="</select>"}if(_||(v+=b+(!o&&g&&m?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!m)v+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=(a=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(t)?d:t})(u[0]),f=Math.max(p,a(u[1]||"")),p=s?Math.max(p,s.getFullYear()):p,f=n?Math.min(f,n.getFullYear()):f,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";p<=f;p++)t.yearshtml+="<option value='"+p+"'"+(p===i?" selected='selected'":"")+">"+p+"</option>";t.yearshtml+="</select>",v+=t.yearshtml,t.yearshtml=null}return v+=this._get(t,"yearSuffix"),_&&(v+=(!o&&g&&m?"":"&#xa0;")+b),v+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e<i?i:e;return t&&t<e?t:e},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),n=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(t,n)},_isInRange:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=null,o=null,a=this._get(t,"yearRange");return a&&(t=a.split(":"),a=(new Date).getFullYear(),n=parseInt(t[0],10),o=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(n+=a),t[1].match(/[+\-].*/)&&(o+=a)),(!i||e.getTime()>=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),k.fn.datepicker=function(t){if(!this.length)return this;k.datepicker.initialized||(k(document).on("mousedown",k.datepicker._checkExternalClick),k.datepicker.initialized=!0),0===k("#"+k.datepicker._mainDivId).length&&k("body").append(k.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?k.datepicker["_"+t+"Datepicker"].apply(k.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?k.datepicker["_"+t+"Datepicker"].apply(k.datepicker,[this].concat(e)):k.datepicker._attachDatepicker(this,t)})},k.datepicker=new v,k.datepicker.initialized=!1,k.datepicker.uuid=(new Date).getTime(),k.datepicker.version="1.12.1";k.datepicker;k.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=k(this).css(t).offset().top;e<0&&k(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&k.fn.draggable&&this._makeDraggable(),this.options.resizable&&k.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?k(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:k.noop,enable:k.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||k.ui.safeBlur(k.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+k(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=k(k.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=t||this.element.find("[autofocus]")).length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(t){function e(){var t=k.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||k.contains(this.uiDialog[0],t)||this._focusTabbable()}t.preventDefault(),e.call(this),this._delay(e)},_createWrapper:function(){this.uiDialog=k("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===k.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==k.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.filter(":first"),s=e.filter(":last"),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=k("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){k(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=k("<button type='button'></button>").button({label:k("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=k("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=k("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=k("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),k.isEmptyObject(t)||k.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(k.each(t,function(t,e){var i;e=k.isFunction(e)?{click:e,text:t}:e,e=k.extend({type:"button"},e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,k("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(k(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(k(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(k(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(k(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=k(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=k.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};k.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:k("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=k(this);return k("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!k(t.target).closest(".ui-dialog").length||!!k(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var e;this.options.modal&&(e=!0,this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=k("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==k.uiBackCompat&&k.widget("ui.dialog",k.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});k.ui.dialog,k.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=k("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=k("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),k.widget("ui.selectmenu",[k.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=k()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=k("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=k("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=k("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=k("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(k.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=k("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";k.each(t,function(t,e){var i;e.optgroup!==o&&(i=k("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=k("<li>"),s=k("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(k(t.target).closest(".ui-selectmenu-menu, #"+k.ui.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case k.ui.keyCode.TAB:case k.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case k.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case k.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case k.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case k.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case k.ui.keyCode.LEFT:this._move("prev",t);break;case k.ui.keyCode.RIGHT:this._move("next",t);break;case k.ui.keyCode.HOME:case k.ui.keyCode.PAGE_UP:this._move("first",t);break;case k.ui.keyCode.END:case k.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return(t=t&&(t.jquery||t.nodeType?k(t):this.document.find(t).eq(0)))&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){s.push(i._parseOption(k(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),k.widget("ui.slider",k.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(k(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){k(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:k.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=k("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,h=this.options;return!h.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===h.min))&&(s=e,n=k(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!k(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return 1<t&&(t=1),t<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,s,n;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!k.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),k.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;s<i.length;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e,t=t-i;return 2*Math.abs(i)>=e&&(t+=0<i?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,h=!this._animateOff&&a.animate,l={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,l["horizontal"===r.orientation?"left":"bottom"]=i+"%",k(this).stop(1,1)[h?"animate":"css"](l,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,l["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](l,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=k(t.target).data("ui-slider-handle-index");switch(t.keyCode){case k.ui.keyCode.HOME:case k.ui.keyCode.END:case k.ui.keyCode.PAGE_UP:case k.ui.keyCode.PAGE_DOWN:case k.ui.keyCode.UP:case k.ui.keyCode.RIGHT:case k.ui.keyCode.DOWN:case k.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(k(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case k.ui.keyCode.HOME:i=this._valueMin();break;case k.ui.keyCode.END:i=this._valueMax();break;case k.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case k.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case k.ui.keyCode.UP:case k.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case k.ui.keyCode.DOWN:case k.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=k(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(k(t.target),null,"ui-state-active"))}}});function P(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}k.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return k.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;function i(){this.element[0]===k.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===k.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),!1!==this._start(t)&&this._repeat(null,k(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(k(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,k(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=k.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?k.isFunction(e)?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:P(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:P(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:P(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:P(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:P(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());P(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==k.uiBackCompat&&k.widget("ui.spinner",k.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var M;k.ui.spinner;k.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(M=/#.*$/,function(t){var e=t.href.replace(M,""),i=location.href.replace(M,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),k.isArray(t.disabled)&&(t.disabled=k.unique(t.disabled.concat(k.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=k(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(k(e).attr("aria-controls")===s)return i=t,!1}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),null!==i&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),!t&&!1===i&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):k()}},_tabKeydown:function(t){var e=k(k.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case k.ui.keyCode.RIGHT:case k.ui.keyCode.DOWN:i++;break;case k.ui.keyCode.UP:case k.ui.keyCode.LEFT:s=!1,i--;break;case k.ui.keyCode.END:i=this.anchors.length-1;break;case k.ui.keyCode.HOME:i=0;break;case k.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case k.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===k.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===k.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===k.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==k.inArray((i<t&&(t=0),t<0&&(t=i),t),this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=k.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!k.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=k()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=k()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var h=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){k(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){k(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return k("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=k(),this.anchors.each(function(t,e){var i,s,n,o=k(e).uniqueId().attr("id"),a=k(e).closest("li"),r=a.attr("aria-controls");h._isLocal(e)?(n=(i=e.hash).substring(1),s=h.element.find(h._sanitizeSelector(i))):(i="#"+(n=a.attr("aria-controls")||k({}).uniqueId()[0].id),(s=h.element.find(i)).length||(s=h._createPanel(n)).insertAfter(h.panels[t-1]||h.tablist),s.attr("aria-live","polite")),s.length&&(h.panels=h.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return k("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(k.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=k(e),!0===t||-1!==k.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&k.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=k(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=k(this).outerHeight(!0)}),this.panels.each(function(){k(this).height(Math.max(0,i-k(this).innerHeight()+k(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,k(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=k(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?k():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):k(),i={oldTab:i,oldPanel:r,newTab:o?k():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?k():s,this.xhr&&this.xhr.abort(),r.length||a.length||k.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===k(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t.length||(t=this.active),t=t.find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:k.noop}))},_findActive:function(t){return!1===t?k():this.tabs.eq(t)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+k.ui.escapeSelector(t)+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){k.data(this,"ui-tabs-destroy")?k(this).remove():k(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=k(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),k.isArray(t)?k.map(t,function(t){return t!==i?t:null}):k.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==k.inArray(t,e))return;e=k.isArray(e)?k.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=k.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,k.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=k(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==k.uiBackCompat&&k.widget("ui.tabs",k.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});k.ui.tabs;k.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=k(this).attr("title")||"";return k("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",k.trim(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=k.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=k.trim(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=k("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=k([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&k.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;k.each(this.tooltips,function(t,e){var i=k.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=k(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=k(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=k([])},open:function(t){var i=this,e=k(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=k(this);e.data("ui-tooltip-open")&&((t=k.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=k.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=k("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(k.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},k.fx.interval)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===k.ui.keyCode.ESCAPE&&((t=k.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){this._removeTooltip(this._find(e).tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=k(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(k(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&k.each(this.parents,function(t,e){k(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=k("<div>").attr("role","tooltip"),i=k("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t.length||(t=this.document[0].body),t},_destroy:function(){var s=this;k.each(this.tooltips,function(t,e){var i=k.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),k("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==k.uiBackCompat&&k.widget("ui.tooltip",k.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});k.ui.tooltip;var S,H,z,O,A,N,W,E,F,R,L,B,Y,j,q,K,U,V,$,X,G="ui-effects-",Q="ui-effects-style",J="ui-effects-animated",Z=k;function tt(t,e,i){var s=E[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:t<0?0:s.max<t?s.max:t)}function et(s){var n=N(),o=n._rgba=[];return s=s.toLowerCase(),R(A,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[W[e].cache]=i[W[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&S.extend(o,z.transparent),n):z[s]}function it(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function st(t){var e,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[e=s[i]]&&(n[k.camelCase(e)]=s[e]);else for(e in s)"string"==typeof s[e]&&(n[e]=s[e]);return n}function nt(t,e,i,s){return k.isPlainObject(t)&&(t=(e=t).effect),t={effect:t},null==e&&(e={}),k.isFunction(e)&&(s=e,i=null,e={}),"number"!=typeof e&&!k.fx.speeds[e]||(s=i,i=e,e={}),k.isFunction(i)&&(s=i,i=null),e&&k.extend(t,e),i=i||e.duration,t.duration=k.fx.off?0:"number"==typeof i?i:i in k.fx.speeds?k.fx.speeds[i]:k.fx.speeds._default,t.complete=s||e.complete,t}function ot(t){return!t||"number"==typeof t||k.fx.speeds[t]||("string"==typeof t&&!k.effects.effect[t]||(k.isFunction(t)||"object"==typeof t&&!t.effect))}function at(t,e){var i=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?i:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}k.effects={effect:{}},O=/^([\-+])=\s*(\d+\.?\d*)/,A=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],N=(S=Z).Color=function(t,e,i,s){return new S.Color.fn.parse(t,e,i,s)},W={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},E={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},F=N.support={},rt=S("<p>")[0],R=S.each,rt.style.cssText="background-color:rgba(1,1,1,.5)",F.rgba=-1<rt.style.backgroundColor.indexOf("rgba"),R(W,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),N.fn=S.extend(N.prototype,{parse:function(n,t,e,i){if(n===H)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=S(n).css(t),t=H);var o=this,s=S.type(n),a=this._rgba=[];return t!==H&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(et(n)||z._default):"array"===s?(R(W.rgba.props,function(t,e){a[e.idx]=tt(n[e.idx],e)}),this):"object"===s?(R(W,n instanceof N?function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}:function(t,i){var s=i.cache;R(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=tt(n[t],e,!0)}),o[s]&&S.inArray(null,o[s].slice(0,3))<0&&(o[s][3]=1,i.from&&(o._rgba=i.from(o[s])))}),this):void 0},is:function(t){var n=N(t),o=!0,a=this;return R(W,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],R(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return R(W,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var e=(l=N(t))._space(),i=W[e],t=0===this.alpha()?N("transparent"):this,r=t[i.cache]||i.to(t._rgba),h=r.slice(),l=l[i.cache];return R(i.props,function(t,e){var i=e.idx,s=r[i],n=l[i],o=E[e.type]||{};null!==n&&(null===s?h[i]=n:(o.mod&&(o.mod/2<n-s?s+=o.mod:o.mod/2<s-n&&(s-=o.mod)),h[i]=tt((n-s)*a+s,e)))}),this[e](h)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=N(t)._rgba;return N(S.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=S.map(this._rgba,function(t,e){return null==t?2<e?1:0:t});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=S.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),e&&e<3&&(t=Math.round(100*t)+"%"),t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+S.map(e,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),N.fn.parse.prototype=N.fn,W.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/255,i=t[1]/255,s=t[2]/255,n=t[3],o=Math.max(e,i,s),a=Math.min(e,i,s),r=o-a,h=o+a,t=.5*h,i=a===o?0:e===o?60*(i-s)/r+360:i===o?60*(s-e)/r+120:60*(e-i)/r+240,h=0==r?0:t<=.5?r/h:r/(2-h);return[Math.round(i)%360,h,t,null==n?1:n]},W.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],t=t[3],i=s<=.5?s*(1+i):s+i-s*i,s=2*s-i;return[Math.round(255*it(s,i,e+1/3)),Math.round(255*it(s,i,e)),Math.round(255*it(s,i,e-1/3)),t]},R(W,function(h,t){var o=t.props,a=t.cache,r=t.to,l=t.from;N.fn[h]=function(t){if(r&&!this[a]&&(this[a]=r(this._rgba)),t===H)return this[a].slice();var e,i=S.type(t),s="array"===i||"object"===i?t:arguments,n=this[a].slice();return R(o,function(t,e){t=s["object"===i?t:e.idx];null==t&&(t=n[e.idx]),n[e.idx]=tt(t,e)}),l?((e=N(l(n)))[a]=n,e):N(n)},R(o,function(a,r){N.fn[a]||(N.fn[a]=function(t){var e,i=S.type(t),s="alpha"===a?this._hsla?"hsla":"rgba":h,n=this[s](),o=n[r.idx];return"undefined"===i?o:("function"===i&&(t=t.call(this,o),i=S.type(t)),null==t&&r.empty?this:("string"===i&&(e=O.exec(t))&&(t=o+parseFloat(e[2])*("+"===e[1]?1:-1)),n[r.idx]=t,this[s](n)))})})}),N.hook=function(t){t=t.split(" ");R(t,function(t,o){S.cssHooks[o]={set:function(t,e){var i,s,n="";if("transparent"!==e&&("string"!==S.type(e)||(i=et(e)))){if(e=N(i||e),!F.rgba&&1!==e._rgba[3]){for(s="backgroundColor"===o?t.parentNode:t;(""===n||"transparent"===n)&&s&&s.style;)try{n=S.css(s,"backgroundColor"),s=s.parentNode}catch(t){}e=e.blend(n&&"transparent"!==n?n:"_default")}e=e.toRgbaString()}try{t.style[o]=e}catch(t){}}},S.fx.step[o]=function(t){t.colorInit||(t.start=N(t.elem,o),t.end=N(t.end),t.colorInit=!0),S.cssHooks[o].set(t.elem,t.start.transition(t.end,t.pos))}})},N.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),S.cssHooks.borderColor={expand:function(i){var s={};return R(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}},z=S.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},j=["add","remove","toggle"],q={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},k.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){k.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(Z.style(t.elem,e,t.end),t.setAttr=!0)}}),k.fn.addBack||(k.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),k.effects.animateClass=function(n,t,e,i){var o=k.speed(t,e,i);return this.queue(function(){var i=k(this),t=i.attr("class")||"",e=(e=o.children?i.find("*").addBack():i).map(function(){return{el:k(this),start:st(this)}}),s=function(){k.each(j,function(t,e){n[e]&&i[e+"Class"](n[e])})};s(),e=e.map(function(){return this.end=st(this.el[0]),this.diff=function(t,e){var i,s,n={};for(i in e)s=e[i],t[i]!==s&&(q[i]||!k.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s));return n}(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=k.Deferred(),i=k.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),k.when.apply(k,e.get()).done(function(){s(),k.each(arguments,function(){var e=this.el;k.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},k.fn.extend({addClass:(Y=k.fn.addClass,function(t,e,i,s){return e?k.effects.animateClass.call(this,{add:t},e,i,s):Y.apply(this,arguments)}),removeClass:(B=k.fn.removeClass,function(t,e,i,s){return 1<arguments.length?k.effects.animateClass.call(this,{remove:t},e,i,s):B.apply(this,arguments)}),toggleClass:(L=k.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?k.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):L.apply(this,arguments):k.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return k.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}}),k.expr&&k.expr.filters&&k.expr.filters.animated&&(k.expr.filters.animated=(K=k.expr.filters.animated,function(t){return!!k(t).data(J)||K(t)})),!1!==k.uiBackCompat&&k.extend(k.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(G+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(G+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=k("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!k.contains(i[0],n)||k(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(k.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),k.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!k.contains(t[0],e)||k(e).trigger("focus")),t}}),k.extend(k.effects,{version:"1.12.1",define:function(t,e,i){return i||(i=e,e="effect"),k.effects.effect[t]=i,k.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(Q,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(Q)||"",t.removeData(Q)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),(t?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=k("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(G+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=G+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){k.effects.restoreStyle(t),k.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},k.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),k.fn.extend({effect:function(){function t(t){var e=k(this),i=k.effects.mode(e,r)||o;e.data(J,!0),h.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||k.effects.saveStyle(e),k.isFunction(t)&&t()}var s=nt.apply(this,arguments),n=k.effects.effect[s.effect],o=n.mode,e=s.queue,i=e||"fx",a=s.complete,r=s.mode,h=[];return k.fx.off||!n?r?this[r](s.duration,a):this.each(function(){a&&a.call(this)}):!1===e?this.each(t).each(l):this.queue(i,t).queue(i,l);function l(t){var e=k(this);function i(){k.isFunction(a)&&a.call(e[0]),k.isFunction(t)&&t()}s.mode=h.shift(),!1===k.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(J),k.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}},show:($=k.fn.show,function(t){if(ot(t))return $.apply(this,arguments);var e=nt.apply(this,arguments);return e.mode="show",this.effect.call(this,e)}),hide:(V=k.fn.hide,function(t){if(ot(t))return V.apply(this,arguments);var e=nt.apply(this,arguments);return e.mode="hide",this.effect.call(this,e)}),toggle:(U=k.fn.toggle,function(t){if(ot(t)||"boolean"==typeof t)return U.apply(this,arguments);var e=nt.apply(this,arguments);return e.mode="toggle",this.effect.call(this,e)}),cssUnit:function(t){var i=this.css(t),s=[];return k.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):at(this.css("clip"),this)},transfer:function(t,e){var i=k(this),s=k(t.to),n="fixed"===s.css("position"),o=k("body"),a=n?o.scrollTop():0,r=n?o.scrollLeft():0,o=s.offset(),o={top:o.top-a,left:o.left-r,height:s.innerHeight(),width:s.innerWidth()},s=i.offset(),h=k("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){h.remove(),k.isFunction(e)&&e()})}}),k.fx.step.clip=function(t){t.clipInit||(t.start=k(t.elem).cssClip(),"string"==typeof t.end&&(t.end=at(t.end,t.elem)),t.clipInit=!0),k(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},X={},k.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){X[t]=function(t){return Math.pow(t,e+2)}}),k.extend(X,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),k.each(X,function(t,e){k.easing["easeIn"+t]=e,k.easing["easeOut"+t]=function(t){return 1-e(1-t)},k.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});var rt=k.effects;k.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=k(this),n=t.direction||"up",o=s.cssClip(),a={clip:k.extend({},o)},r=k.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(k.effects.clipToBox(a)),a.clip=o),r&&r.animate(k.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),k.effects.define("bounce",function(t,e){var i,s,n=k(this),o=t.mode,a="hide"===o,r="show"===o,h=t.direction||"up",l=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===h||"down"===h?"top":"left",f="up"===h||"left"===h,g=0,t=n.queue().length;for(k.effects.createPlaceholder(n),h=n.css(p),l=l||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=h,n.css("opacity",0).css(p,f?2*-l:2*l).animate(s,u,d)),a&&(l/=Math.pow(2,c-1)),(s={})[p]=h;g<c;g++)(i={})[p]=(f?"-=":"+=")+l,n.animate(i,u,d).animate(s,u,d),l=a?2*l:l/2;a&&((i={opacity:0})[p]=(f?"-=":"+=")+l,n.animate(i,u,d)),n.queue(e),k.effects.unshift(n,t,1+o)}),k.effects.define("clip","hide",function(t,e){var i={},s=k(this),n=t.direction||"vertical",o="both"===n,a=o||"horizontal"===n,o=o||"vertical"===n,n=s.cssClip();i.clip={top:o?(n.bottom-n.top)/2:n.top,right:a?(n.right-n.left)/2:n.right,bottom:o?(n.bottom-n.top)/2:n.bottom,left:a?(n.right-n.left)/2:n.left},k.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=n),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),k.effects.define("drop","hide",function(t,e){var i=k(this),s="show"===t.mode,n=t.direction||"left",o="up"===n||"down"===n?"top":"left",a="up"===n||"left"===n?"-=":"+=",r="+="==a?"-=":"+=",h={opacity:0};k.effects.createPlaceholder(i),n=t.distance||i["top"==o?"outerHeight":"outerWidth"](!0)/2,h[o]=a+n,s&&(i.css(h),h[o]=r+n,h.opacity=1),i.animate(h,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),k.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,h=t.pieces?Math.round(Math.sqrt(t.pieces)):3,l=h,c=k(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/l),f=Math.ceil(c.outerHeight()/h),g=[];function m(){g.push(this),g.length===h*l&&(c.css({visibility:"visible"}),k(g).remove(),e())}for(i=0;i<h;i++)for(o=d.top+i*f,r=i-(h-1)/2,s=0;s<l;s++)n=d.left+s*p,a=s-(l-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),k.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;k(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),k.effects.define("fold","hide",function(e,t){var i=k(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),h=!!e.horizFirst?["right","bottom"]:["bottom","right"],l=e.duration/2,c=k.effects.createPlaceholder(i),u=i.cssClip(),d={clip:k.extend({},u)},p={clip:k.extend({},u)},f=[u[h[0]],u[h[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[h[0]]=a,p.clip[h[0]]=a,p.clip[h[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(k.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(k.effects.clipToBox(d),l,e.easing).animate(k.effects.clipToBox(p),l,e.easing),t()}).animate(d,l,e.easing).animate(p,l,e.easing).queue(t),k.effects.unshift(i,s,4)}),k.effects.define("highlight","show",function(t,e){var i=k(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),k.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),k.effects.define("size",function(s,e){var n,i=k(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,h="effect"!==r,l=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=k.effects.scaledDimensions(i),f=s.from||p,g=s.to||k.effects.scaledDimensions(i,0);k.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==l&&"both"!==l||(n.from.y!==n.to.y&&(f=k.effects.setTransition(i,o,n.from.y,f),g=k.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=k.effects.setTransition(i,a,n.from.x,f),g=k.effects.setTransition(i,a,n.to.x,g))),"content"!==l&&"both"!==l||n.from.y!==n.to.y&&(f=k.effects.setTransition(i,t,n.from.y,f),g=k.effects.setTransition(i,t,n.to.y,g)),c&&(c=k.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),i.css(f),"content"!==l&&"both"!==l||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=k(this),e=k.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=k.effects.setTransition(t,o,n.from.y,i),e=k.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=k.effects.setTransition(t,a,n.from.x,i),e=k.effects.setTransition(t,a,n.to.x,e)),h&&k.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){h&&k.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),h||(i.css("position","static"===u?"relative":u).offset(t),k.effects.saveStyle(i)),e()}})}),k.effects.define("scale",function(t,e){var i=k(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=k.extend(!0,{from:k.effects.scaledDimensions(i),to:k.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),k.effects.effect.size.call(this,s,e)}),k.effects.define("puff","hide",function(t,e){t=k.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});k.effects.effect.scale.call(this,t,e)}),k.effects.define("pulsate","show",function(t,e){var i=k(this),s=t.mode,n="show"===s,s=n||"hide"===s,o=2*(t.times||5)+(s?1:0),a=t.duration/o,r=0,h=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);h<o;h++)i.animate({opacity:r},a,t.easing),r=1-r;i.animate({opacity:r},a,t.easing),i.queue(e),k.effects.unshift(i,s,1+o)}),k.effects.define("shake",function(t,e){var i=1,s=k(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,h=Math.round(t.duration/r),l="up"===n||"down"===n?"top":"left",c="up"===n||"left"===n,u={},d={},p={},n=s.queue().length;for(k.effects.createPlaceholder(s),u[l]=(c?"-=":"+=")+o,d[l]=(c?"+=":"-=")+2*o,p[l]=(c?"-=":"+=")+2*o,s.animate(u,h,t.easing);i<a;i++)s.animate(d,h,t.easing).animate(p,h,t.easing);s.animate(d,h,t.easing).animate(u,h/2,t.easing).queue(e),k.effects.unshift(s,n,1+r)}),k.effects.define("slide","show",function(t,e){var i,s,n=k(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r,c=t.distance||n["top"==h?"outerHeight":"outerWidth"](!0),u={};k.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[h],u[h]=(l?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(h,u[h]),u.clip=i,u[h]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})});!1!==k.uiBackCompat&&(rt=k.effects.define("transfer",function(t,e){k(this).transfer(t,e)}))});lib/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png000064400000000172147361034410017237 0ustar00�PNG


IHDRd2��AIDATxcz|����.��{&{�_��'0���4ӿ3 � s����I�J��4��=p��G&a��!IEND�B`�lib/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png000064400000000171147361034410015231 0ustar00�PNG


IHDR���D@IDAT8�cz���0�F�я
&F&�UL�{�/01~eb������	f��A� �L£!6��A�D%`�IEND�B`�lib/jquery/images/ui-icons_cd0a0a_256x240.png000064400000007257147361034410014472 0ustar00�PNG


IHDR��IJ�PLTE�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

4�v�ZtRNS�3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�#�-�IDATx���v�8�a��ϼ�1�ȩ����&0���0w���7w@���VT���q�- &�j���b�[0�}+��9��fz����)d�m�^�&�����?�k0�<r�
h
����%FAP�b/��
�!�W���a�ax�;��׍�wT���P�e}�%Y@���ܯ�T��CY_q#��3��*��]ŕ��pu~f�~|=����5瀹
�0�0<=ޗ
�}_�@�vG���eA�����e��mCnj��0~ߏ�C��@l{!
�]A� �����;�;����A``9�u��%�k�f��,����j;B�q}AgHʹ�W�w��`
�0�0$E�w�+8р��W<V�
h��P��YI�t����Uzs�~��
����E*��D�}�9�������g�Yd�+XN
�{��?F~葟2��l06�A�
8)�t
/ɴ��+��h�X�!PԕC�?�+"N������$��Qs�i)�W��9��#�A����a�a�Ϥ�f�������=T�暇�L��Z6L�P�g�Ů��,�{�{aH�~ld�H�N��q͌Y��"��(�)�Bm?_���Ѣ�6�ZP�B��g\c@dD�����O��E��(��x@��!��r=���9^��>g�an�ቮ�����}��u��LlS�����^�u,����N2���a�!���hܧ{����l3�_ǀ=����r/t�v�����8�Ǭ���A�+�-�Z?�ӛɎ��s@�����p������V�����8�e�z"���a����C�m#���w7c�A�J�3MJ�1����?��9X��f�ж��z�:�@* 궹�8�>����~��k�Wb�Y�~UP�M ���{��Ÿ��-`%�_�%X P��$&d/f�M�^��;+t{��uQQTE��

f]1`r�-��u.p��;$	P���4=E�r�2P\�@qp�i��L(����H8,����`7��3r@I�C��sDw�8l8xp�N?��p�u��`x$
�0
���@���i�D9e�R�(������>�3E��"��qI��{$�Ƚ F��t4B�<?0��PN��4��$�7n��A�=� ��j�Is�s�
��9���͛Pd; N�r�.<����QŃU��u�B+x�CP�
��X��hO��Z�(r��D2N	�t�ɪ��+*�.���nj�������_lt�	0�ٓ����ۼ{��&Pk{�؜������~��50000pex�i� (H�~"Q+���H�'+��۳����,(����!�K�4i�1�	��*���	L���f���$�3��~���
\�1�	�L4� ��]�@3o�6���x������$&����^2�������a�j�ir;0i}��T�3"@$��F/�x���n�I�����^�5^�@�r�Tꅊ�_�b �z{O�&���&\ȵ�Z.	����
�&����@o�-�]��u@�J�u@C�Z�$������wd����biMi<��釫�?!��.���c<�*r��9�L�nG�?=�<E�9P���p����େ���ʧ��[�I�2�!`���&0�@�$����,ϤH�CxJ	k]�~���H����i����
�gy��Q:����u�����a����$��Ӡ�
��t�����A�Z��k������;I	���<�H����M`)iI��#hx�O?��3>Jvg���s$-㥗xl�yޢdE�ܿP�]�b\��w��@C���Xj�����_"�eI���ܸ�Sd�~!����P�f����s���K��m_}��'_��KQ7�(@���6퓾���	$�2=%��e�
#W��^P)M �?�
�3�L�
0��=@�9��)�dB�Rs�0���J�XTU��d�_Q.������^��#��{���,�a���#�d���G^ye�ʂ#��s��x{������jy�\�a���@瘟���'�|��1`�8;�Q�yY���=��/��P%,�2X�s�$���d؋tx�էk��P��b���ip�g�c��겜L�i�ZԡM��G�ʞ��i���(�`��V��%l]Q�$�<(�'6���F���)����H,��u�����$��I��������v(�D~���tu�	~��3+~�U�Q�GW������~j9jm��]6@X���뺿}�RSg�셼3��fn��l	k�W�|�P�}p���7�죠;B�Z�&������ϔ#hB��&���;@͊:���/�d�՟
 tZ�BR��"�ٌ����I�`�o�v?�!`5|���
l�V�������x9;���o[g	�I�n��z��M�.���7��;�2�x�%���wHl�k�|�x�%�"	�xB:C=g���7�|r1S����Z]G^��+�Et��v����i6=@W����6�d���Tn�4�n��8��K���+�t��ǀK{���,0\��
�}$8
W�~�⯚ ����J��?���R��-�K%�1>�ϸ�ߕ^����B���kLPm!�aQ�~��C{��u�^P`~�9�GD����3L�MG�|�ht�6�)��Ng�M�;;@�hDž%��M����~w2���0�*��.�K;V���P����[>��T??U�z����?D��������u�ݦ�׷_�`�������_�.���sH�w�~_���{s��t[�۞��;}&)u�Z�Z����K��.k����7]¹����?���: -`����q~�~w;,z�/�w~������[���L����6w�ؠ����MӷC���X�!=�B��`���5��RxWfzf��w�����5�4�׷�e�2~}��<�����ۉ��[�{�3X�;�� uPB�V@��|@H��Cc�p���нB����?ҽ�H����L�W��^�f0��L�zQ�/��n�#_?���V?���@d�*g�L�W�:��'ǀ������9�����h@IEND�B`�lib/jquery/images/ui-icons_2e83ff_256x240.png000064400000007257147361034410014437 0ustar00�PNG


IHDR��IJ�PLTE.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.����oZtRNS�3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�#�-�IDATx���v�8�a��ϼ�1�ȩ����&0���0w���7w@���VT���q�- &�j���b�[0�}+��9��fz����)d�m�^�&�����?�k0�<r�
h
����%FAP�b/��
�!�W���a�ax�;��׍�wT���P�e}�%Y@���ܯ�T��CY_q#��3��*��]ŕ��pu~f�~|=����5瀹
�0�0<=ޗ
�}_�@�vG���eA�����e��mCnj��0~ߏ�C��@l{!
�]A� �����;�;����A``9�u��%�k�f��,����j;B�q}AgHʹ�W�w��`
�0�0$E�w�+8р��W<V�
h��P��YI�t����Uzs�~��
����E*��D�}�9�������g�Yd�+XN
�{��?F~葟2��l06�A�
8)�t
/ɴ��+��h�X�!PԕC�?�+"N������$��Qs�i)�W��9��#�A����a�a�Ϥ�f�������=T�暇�L��Z6L�P�g�Ů��,�{�{aH�~ld�H�N��q͌Y��"��(�)�Bm?_���Ѣ�6�ZP�B��g\c@dD�����O��E��(��x@��!��r=���9^��>g�an�ቮ�����}��u��LlS�����^�u,����N2���a�!���hܧ{����l3�_ǀ=����r/t�v�����8�Ǭ���A�+�-�Z?�ӛɎ��s@�����p������V�����8�e�z"���a����C�m#���w7c�A�J�3MJ�1����?��9X��f�ж��z�:�@* 궹�8�>����~��k�Wb�Y�~UP�M ���{��Ÿ��-`%�_�%X P��$&d/f�M�^��;+t{��uQQTE��

f]1`r�-��u.p��;$	P���4=E�r�2P\�@qp�i��L(����H8,����`7��3r@I�C��sDw�8l8xp�N?��p�u��`x$
�0
���@���i�D9e�R�(������>�3E��"��qI��{$�Ƚ F��t4B�<?0��PN��4��$�7n��A�=� ��j�Is�s�
��9���͛Pd; N�r�.<����QŃU��u�B+x�CP�
��X��hO��Z�(r��D2N	�t�ɪ��+*�.���nj�������_lt�	0�ٓ����ۼ{��&Pk{�؜������~��50000pex�i� (H�~"Q+���H�'+��۳����,(����!�K�4i�1�	��*���	L���f���$�3��~���
\�1�	�L4� ��]�@3o�6���x������$&����^2�������a�j�ir;0i}��T�3"@$��F/�x���n�I�����^�5^�@�r�Tꅊ�_�b �z{O�&���&\ȵ�Z.	����
�&����@o�-�]��u@�J�u@C�Z�$������wd����biMi<��釫�?!��.���c<�*r��9�L�nG�?=�<E�9P���p����େ���ʧ��[�I�2�!`���&0�@�$����,ϤH�CxJ	k]�~���H����i����
�gy��Q:����u�����a����$��Ӡ�
��t�����A�Z��k������;I	���<�H����M`)iI��#hx�O?��3>Jvg���s$-㥗xl�yޢdE�ܿP�]�b\��w��@C���Xj�����_"�eI���ܸ�Sd�~!����P�f����s���K��m_}��'_��KQ7�(@���6퓾���	$�2=%��e�
#W��^P)M �?�
�3�L�
0��=@�9��)�dB�Rs�0���J�XTU��d�_Q.������^��#��{���,�a���#�d���G^ye�ʂ#��s��x{������jy�\�a���@瘟���'�|��1`�8;�Q�yY���=��/��P%,�2X�s�$���d؋tx�էk��P��b���ip�g�c��겜L�i�ZԡM��G�ʞ��i���(�`��V��%l]Q�$�<(�'6���F���)����H,��u�����$��I��������v(�D~���tu�	~��3+~�U�Q�GW������~j9jm��]6@X���뺿}�RSg�셼3��fn��l	k�W�|�P�}p���7�죠;B�Z�&������ϔ#hB��&���;@͊:���/�d�՟
 tZ�BR��"�ٌ����I�`�o�v?�!`5|���
l�V�������x9;���o[g	�I�n��z��M�.���7��;�2�x�%���wHl�k�|�x�%�"	�xB:C=g���7�|r1S����Z]G^��+�Et��v����i6=@W����6�d���Tn�4�n��8��K���+�t��ǀK{���,0\��
�}$8
W�~�⯚ ����J��?���R��-�K%�1>�ϸ�ߕ^����B���kLPm!�aQ�~��C{��u�^P`~�9�GD����3L�MG�|�ht�6�)��Ng�M�;;@�hDž%��M����~w2���0�*��.�K;V���P����[>��T??U�z����?D��������u�ݦ�׷_�`�������_�.���sH�w�~_���{s��t[�۞��;}&)u�Z�Z����K��.k����7]¹����?���: -`����q~�~w;,z�/�w~������[���L����6w�ؠ����MӷC���X�!=�B��`���5��RxWfzf��w�����5�4�׷�e�2~}��<�����ۉ��[�{�3X�;�� uPB�V@��|@H��Cc�p���нB����?ҽ�H����L�W��^�f0��L�zQ�/��n�#_?���V?���@d�*g�L�W�:��'ǀ������9�����h@IEND�B`�lib/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png000064400000000147147361034410015372 0ustar00�PNG


IHDR��:��.IDATxc��<�G�(���###�#*͈�3���x�bY@	E�0IEND�B`�lib/jquery/images/ui-bg_glass_95_fef1ec_1x400.png000064400000000147147361034410015367 0ustar00�PNG


IHDR��:��.IDATxc���<�G�(���###��A46\�H�Q<�d�	V�
IEND�B`�lib/jquery/images/ui-bg_glass_65_ffffff_1x400.png000064400000000111147361034410015445 0ustar00�PNG


IHDR�G#7vIDATxch�G�(��h���o�IEND�B`�lib/jquery/images/ui-icons_222222_256x240.png000064400000007257147361034410014175 0ustar00�PNG


IHDR��IJ�PLTE"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""���SZtRNS�3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�#�-�IDATx���v�8�a��ϼ�1�ȩ����&0���0w���7w@���VT���q�- &�j���b�[0�}+��9��fz����)d�m�^�&�����?�k0�<r�
h
����%FAP�b/��
�!�W���a�ax�;��׍�wT���P�e}�%Y@���ܯ�T��CY_q#��3��*��]ŕ��pu~f�~|=����5瀹
�0�0<=ޗ
�}_�@�vG���eA�����e��mCnj��0~ߏ�C��@l{!
�]A� �����;�;����A``9�u��%�k�f��,����j;B�q}AgHʹ�W�w��`
�0�0$E�w�+8р��W<V�
h��P��YI�t����Uzs�~��
����E*��D�}�9�������g�Yd�+XN
�{��?F~葟2��l06�A�
8)�t
/ɴ��+��h�X�!PԕC�?�+"N������$��Qs�i)�W��9��#�A����a�a�Ϥ�f�������=T�暇�L��Z6L�P�g�Ů��,�{�{aH�~ld�H�N��q͌Y��"��(�)�Bm?_���Ѣ�6�ZP�B��g\c@dD�����O��E��(��x@��!��r=���9^��>g�an�ቮ�����}��u��LlS�����^�u,����N2���a�!���hܧ{����l3�_ǀ=����r/t�v�����8�Ǭ���A�+�-�Z?�ӛɎ��s@�����p������V�����8�e�z"���a����C�m#���w7c�A�J�3MJ�1����?��9X��f�ж��z�:�@* 궹�8�>����~��k�Wb�Y�~UP�M ���{��Ÿ��-`%�_�%X P��$&d/f�M�^��;+t{��uQQTE��

f]1`r�-��u.p��;$	P���4=E�r�2P\�@qp�i��L(����H8,����`7��3r@I�C��sDw�8l8xp�N?��p�u��`x$
�0
���@���i�D9e�R�(������>�3E��"��qI��{$�Ƚ F��t4B�<?0��PN��4��$�7n��A�=� ��j�Is�s�
��9���͛Pd; N�r�.<����QŃU��u�B+x�CP�
��X��hO��Z�(r��D2N	�t�ɪ��+*�.���nj�������_lt�	0�ٓ����ۼ{��&Pk{�؜������~��50000pex�i� (H�~"Q+���H�'+��۳����,(����!�K�4i�1�	��*���	L���f���$�3��~���
\�1�	�L4� ��]�@3o�6���x������$&����^2�������a�j�ir;0i}��T�3"@$��F/�x���n�I�����^�5^�@�r�Tꅊ�_�b �z{O�&���&\ȵ�Z.	����
�&����@o�-�]��u@�J�u@C�Z�$������wd����biMi<��釫�?!��.���c<�*r��9�L�nG�?=�<E�9P���p����େ���ʧ��[�I�2�!`���&0�@�$����,ϤH�CxJ	k]�~���H����i����
�gy��Q:����u�����a����$��Ӡ�
��t�����A�Z��k������;I	���<�H����M`)iI��#hx�O?��3>Jvg���s$-㥗xl�yޢdE�ܿP�]�b\��w��@C���Xj�����_"�eI���ܸ�Sd�~!����P�f����s���K��m_}��'_��KQ7�(@���6퓾���	$�2=%��e�
#W��^P)M �?�
�3�L�
0��=@�9��)�dB�Rs�0���J�XTU��d�_Q.������^��#��{���,�a���#�d���G^ye�ʂ#��s��x{������jy�\�a���@瘟���'�|��1`�8;�Q�yY���=��/��P%,�2X�s�$���d؋tx�էk��P��b���ip�g�c��겜L�i�ZԡM��G�ʞ��i���(�`��V��%l]Q�$�<(�'6���F���)����H,��u�����$��I��������v(�D~���tu�	~��3+~�U�Q�GW������~j9jm��]6@X���뺿}�RSg�셼3��fn��l	k�W�|�P�}p���7�죠;B�Z�&������ϔ#hB��&���;@͊:���/�d�՟
 tZ�BR��"�ٌ����I�`�o�v?�!`5|���
l�V�������x9;���o[g	�I�n��z��M�.���7��;�2�x�%���wHl�k�|�x�%�"	�xB:C=g���7�|r1S����Z]G^��+�Et��v����i6=@W����6�d���Tn�4�n��8��K���+�t��ǀK{���,0\��
�}$8
W�~�⯚ ����J��?���R��-�K%�1>�ϸ�ߕ^����B���kLPm!�aQ�~��C{��u�^P`~�9�GD����3L�MG�|�ht�6�)��Ng�M�;;@�hDž%��M����~w2���0�*��.�K;V���P����[>��T??U�z����?D��������u�ݦ�׷_�`�������_�.���sH�w�~_���{s��t[�۞��;}&)u�Z�Z����K��.k����7]¹����?���: -`����q~�~w;,z�/�w~������[���L����6w�ؠ����MӷC���X�!=�B��`���5��RxWfzf��w�����5�4�׷�e�2~}��<�����ۉ��[�{�3X�;�� uPB�V@��|@H��Cc�p���нB����?ҽ�H����L�W��^�f0��L�zQ�/��n�#_?���V?���@d�*g�L�W�:��'ǀ������9�����h@IEND�B`�lib/jquery/images/ui-icons_454545_256x240.png000064400000007257147361034410014214 0ustar00�PNG


IHDR��IJ�PLTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEv��\ZtRNS�3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�#�-�IDATx���v�8�a��ϼ�1�ȩ����&0���0w���7w@���VT���q�- &�j���b�[0�}+��9��fz����)d�m�^�&�����?�k0�<r�
h
����%FAP�b/��
�!�W���a�ax�;��׍�wT���P�e}�%Y@���ܯ�T��CY_q#��3��*��]ŕ��pu~f�~|=����5瀹
�0�0<=ޗ
�}_�@�vG���eA�����e��mCnj��0~ߏ�C��@l{!
�]A� �����;�;����A``9�u��%�k�f��,����j;B�q}AgHʹ�W�w��`
�0�0$E�w�+8р��W<V�
h��P��YI�t����Uzs�~��
����E*��D�}�9�������g�Yd�+XN
�{��?F~葟2��l06�A�
8)�t
/ɴ��+��h�X�!PԕC�?�+"N������$��Qs�i)�W��9��#�A����a�a�Ϥ�f�������=T�暇�L��Z6L�P�g�Ů��,�{�{aH�~ld�H�N��q͌Y��"��(�)�Bm?_���Ѣ�6�ZP�B��g\c@dD�����O��E��(��x@��!��r=���9^��>g�an�ቮ�����}��u��LlS�����^�u,����N2���a�!���hܧ{����l3�_ǀ=����r/t�v�����8�Ǭ���A�+�-�Z?�ӛɎ��s@�����p������V�����8�e�z"���a����C�m#���w7c�A�J�3MJ�1����?��9X��f�ж��z�:�@* 궹�8�>����~��k�Wb�Y�~UP�M ���{��Ÿ��-`%�_�%X P��$&d/f�M�^��;+t{��uQQTE��

f]1`r�-��u.p��;$	P���4=E�r�2P\�@qp�i��L(����H8,����`7��3r@I�C��sDw�8l8xp�N?��p�u��`x$
�0
���@���i�D9e�R�(������>�3E��"��qI��{$�Ƚ F��t4B�<?0��PN��4��$�7n��A�=� ��j�Is�s�
��9���͛Pd; N�r�.<����QŃU��u�B+x�CP�
��X��hO��Z�(r��D2N	�t�ɪ��+*�.���nj�������_lt�	0�ٓ����ۼ{��&Pk{�؜������~��50000pex�i� (H�~"Q+���H�'+��۳����,(����!�K�4i�1�	��*���	L���f���$�3��~���
\�1�	�L4� ��]�@3o�6���x������$&����^2�������a�j�ir;0i}��T�3"@$��F/�x���n�I�����^�5^�@�r�Tꅊ�_�b �z{O�&���&\ȵ�Z.	����
�&����@o�-�]��u@�J�u@C�Z�$������wd����biMi<��釫�?!��.���c<�*r��9�L�nG�?=�<E�9P���p����େ���ʧ��[�I�2�!`���&0�@�$����,ϤH�CxJ	k]�~���H����i����
�gy��Q:����u�����a����$��Ӡ�
��t�����A�Z��k������;I	���<�H����M`)iI��#hx�O?��3>Jvg���s$-㥗xl�yޢdE�ܿP�]�b\��w��@C���Xj�����_"�eI���ܸ�Sd�~!����P�f����s���K��m_}��'_��KQ7�(@���6퓾���	$�2=%��e�
#W��^P)M �?�
�3�L�
0��=@�9��)�dB�Rs�0���J�XTU��d�_Q.������^��#��{���,�a���#�d���G^ye�ʂ#��s��x{������jy�\�a���@瘟���'�|��1`�8;�Q�yY���=��/��P%,�2X�s�$���d؋tx�էk��P��b���ip�g�c��겜L�i�ZԡM��G�ʞ��i���(�`��V��%l]Q�$�<(�'6���F���)����H,��u�����$��I��������v(�D~���tu�	~��3+~�U�Q�GW������~j9jm��]6@X���뺿}�RSg�셼3��fn��l	k�W�|�P�}p���7�죠;B�Z�&������ϔ#hB��&���;@͊:���/�d�՟
 tZ�BR��"�ٌ����I�`�o�v?�!`5|���
l�V�������x9;���o[g	�I�n��z��M�.���7��;�2�x�%���wHl�k�|�x�%�"	�xB:C=g���7�|r1S����Z]G^��+�Et��v����i6=@W����6�d���Tn�4�n��8��K���+�t��ǀK{���,0\��
�}$8
W�~�⯚ ����J��?���R��-�K%�1>�ϸ�ߕ^����B���kLPm!�aQ�~��C{��u�^P`~�9�GD����3L�MG�|�ht�6�)��Ng�M�;;@�hDž%��M����~w2���0�*��.�K;V���P����[>��T??U�z����?D��������u�ݦ�׷_�`�������_�.���sH�w�~_���{s��t[�۞��;}&)u�Z�Z����K��.k����7]¹����?���: -`����q~�~w;,z�/�w~������[���L����6w�ؠ����MӷC���X�!=�B��`���5��RxWfzf��w�����5�4�׷�e�2~}��<�����ۉ��[�{�3X�;�� uPB�V@��|@H��Cc�p���нB����?ҽ�H����L�W��^�f0��L�zQ�/��n�#_?���V?���@d�*g�L�W�:��'ǀ������9�����h@IEND�B`�lib/jquery/images/ui-bg_glass_75_dadada_1x400.png000064400000000175147361034410015433 0ustar00�PNG


IHDR���DDIDATx�cx���h��[�����řM����r�;��ڙs�����⿙��d��Q4�`C��m��NIEND�B`�lib/jquery/images/ui-icons_888888_256x240.png000064400000007257147361034410014241 0ustar00�PNG


IHDR��IJ�PLTE���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#b|�ZtRNS�3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�#�-�IDATx���v�8�a��ϼ�1�ȩ����&0���0w���7w@���VT���q�- &�j���b�[0�}+��9��fz����)d�m�^�&�����?�k0�<r�
h
����%FAP�b/��
�!�W���a�ax�;��׍�wT���P�e}�%Y@���ܯ�T��CY_q#��3��*��]ŕ��pu~f�~|=����5瀹
�0�0<=ޗ
�}_�@�vG���eA�����e��mCnj��0~ߏ�C��@l{!
�]A� �����;�;����A``9�u��%�k�f��,����j;B�q}AgHʹ�W�w��`
�0�0$E�w�+8р��W<V�
h��P��YI�t����Uzs�~��
����E*��D�}�9�������g�Yd�+XN
�{��?F~葟2��l06�A�
8)�t
/ɴ��+��h�X�!PԕC�?�+"N������$��Qs�i)�W��9��#�A����a�a�Ϥ�f�������=T�暇�L��Z6L�P�g�Ů��,�{�{aH�~ld�H�N��q͌Y��"��(�)�Bm?_���Ѣ�6�ZP�B��g\c@dD�����O��E��(��x@��!��r=���9^��>g�an�ቮ�����}��u��LlS�����^�u,����N2���a�!���hܧ{����l3�_ǀ=����r/t�v�����8�Ǭ���A�+�-�Z?�ӛɎ��s@�����p������V�����8�e�z"���a����C�m#���w7c�A�J�3MJ�1����?��9X��f�ж��z�:�@* 궹�8�>����~��k�Wb�Y�~UP�M ���{��Ÿ��-`%�_�%X P��$&d/f�M�^��;+t{��uQQTE��

f]1`r�-��u.p��;$	P���4=E�r�2P\�@qp�i��L(����H8,����`7��3r@I�C��sDw�8l8xp�N?��p�u��`x$
�0
���@���i�D9e�R�(������>�3E��"��qI��{$�Ƚ F��t4B�<?0��PN��4��$�7n��A�=� ��j�Is�s�
��9���͛Pd; N�r�.<����QŃU��u�B+x�CP�
��X��hO��Z�(r��D2N	�t�ɪ��+*�.���nj�������_lt�	0�ٓ����ۼ{��&Pk{�؜������~��50000pex�i� (H�~"Q+���H�'+��۳����,(����!�K�4i�1�	��*���	L���f���$�3��~���
\�1�	�L4� ��]�@3o�6���x������$&����^2�������a�j�ir;0i}��T�3"@$��F/�x���n�I�����^�5^�@�r�Tꅊ�_�b �z{O�&���&\ȵ�Z.	����
�&����@o�-�]��u@�J�u@C�Z�$������wd����biMi<��釫�?!��.���c<�*r��9�L�nG�?=�<E�9P���p����େ���ʧ��[�I�2�!`���&0�@�$����,ϤH�CxJ	k]�~���H����i����
�gy��Q:����u�����a����$��Ӡ�
��t�����A�Z��k������;I	���<�H����M`)iI��#hx�O?��3>Jvg���s$-㥗xl�yޢdE�ܿP�]�b\��w��@C���Xj�����_"�eI���ܸ�Sd�~!����P�f����s���K��m_}��'_��KQ7�(@���6퓾���	$�2=%��e�
#W��^P)M �?�
�3�L�
0��=@�9��)�dB�Rs�0���J�XTU��d�_Q.������^��#��{���,�a���#�d���G^ye�ʂ#��s��x{������jy�\�a���@瘟���'�|��1`�8;�Q�yY���=��/��P%,�2X�s�$���d؋tx�էk��P��b���ip�g�c��겜L�i�ZԡM��G�ʞ��i���(�`��V��%l]Q�$�<(�'6���F���)����H,��u�����$��I��������v(�D~���tu�	~��3+~�U�Q�GW������~j9jm��]6@X���뺿}�RSg�셼3��fn��l	k�W�|�P�}p���7�죠;B�Z�&������ϔ#hB��&���;@͊:���/�d�՟
 tZ�BR��"�ٌ����I�`�o�v?�!`5|���
l�V�������x9;���o[g	�I�n��z��M�.���7��;�2�x�%���wHl�k�|�x�%�"	�xB:C=g���7�|r1S����Z]G^��+�Et��v����i6=@W����6�d���Tn�4�n��8��K���+�t��ǀK{���,0\��
�}$8
W�~�⯚ ����J��?���R��-�K%�1>�ϸ�ߕ^����B���kLPm!�aQ�~��C{��u�^P`~�9�GD����3L�MG�|�ht�6�)��Ng�M�;;@�hDž%��M����~w2���0�*��.�K;V���P����[>��T??U�z����?D��������u�ݦ�׷_�`�������_�.���sH�w�~_���{s��t[�۞��;}&)u�Z�Z����K��.k����7]¹����?���: -`����q~�~w;,z�/�w~������[���L����6w�ؠ����MӷC���X�!=�B��`���5��RxWfzf��w�����5�4�׷�e�2~}��<�����ۉ��[�{�3X�;�� uPB�V@��|@H��Cc�p���нB����?ҽ�H����L�W��^�f0��L�zQ�/��n�#_?���V?���@d�*g�L�W�:��'ǀ������9�����h@IEND�B`�lib/codemirror/mode/ntriples/ntriples.js000064400000014763147361034410014457 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/**********************************************************
* This script provides syntax highlighting support for
* the Ntriples format.
* Ntriples format specification:
*     http://www.w3.org/TR/rdf-testcases/#ntriples
***********************************************************/

/*
    The following expression defines the defined ASF grammar transitions.

    pre_subject ->
        {
        ( writing_subject_uri | writing_bnode_uri )
            -> pre_predicate
                -> writing_predicate_uri
                    -> pre_object
                        -> writing_object_uri | writing_object_bnode |
                          (
                            writing_object_literal
                                -> writing_literal_lang | writing_literal_type
                          )
                            -> post_object
                                -> BEGIN
         } otherwise {
             -> ERROR
         }
*/

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("ntriples", function() {

  var Location = {
    PRE_SUBJECT         : 0,
    WRITING_SUB_URI     : 1,
    WRITING_BNODE_URI   : 2,
    PRE_PRED            : 3,
    WRITING_PRED_URI    : 4,
    PRE_OBJ             : 5,
    WRITING_OBJ_URI     : 6,
    WRITING_OBJ_BNODE   : 7,
    WRITING_OBJ_LITERAL : 8,
    WRITING_LIT_LANG    : 9,
    WRITING_LIT_TYPE    : 10,
    POST_OBJ            : 11,
    ERROR               : 12
  };
  function transitState(currState, c) {
    var currLocation = currState.location;
    var ret;

    // Opening.
    if     (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI;
    else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI;
    else if(currLocation == Location.PRE_PRED    && c == '<') ret = Location.WRITING_PRED_URI;
    else if(currLocation == Location.PRE_OBJ     && c == '<') ret = Location.WRITING_OBJ_URI;
    else if(currLocation == Location.PRE_OBJ     && c == '_') ret = Location.WRITING_OBJ_BNODE;
    else if(currLocation == Location.PRE_OBJ     && c == '"') ret = Location.WRITING_OBJ_LITERAL;

    // Closing.
    else if(currLocation == Location.WRITING_SUB_URI     && c == '>') ret = Location.PRE_PRED;
    else if(currLocation == Location.WRITING_BNODE_URI   && c == ' ') ret = Location.PRE_PRED;
    else if(currLocation == Location.WRITING_PRED_URI    && c == '>') ret = Location.PRE_OBJ;
    else if(currLocation == Location.WRITING_OBJ_URI     && c == '>') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_OBJ_BNODE   && c == ' ') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ;

    // Closing typed and language literal.
    else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG;
    else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE;

    // Spaces.
    else if( c == ' ' &&
             (
               currLocation == Location.PRE_SUBJECT ||
               currLocation == Location.PRE_PRED    ||
               currLocation == Location.PRE_OBJ     ||
               currLocation == Location.POST_OBJ
             )
           ) ret = currLocation;

    // Reset.
    else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT;

    // Error
    else ret = Location.ERROR;

    currState.location=ret;
  }

  return {
    startState: function() {
       return {
           location : Location.PRE_SUBJECT,
           uris     : [],
           anchors  : [],
           bnodes   : [],
           langs    : [],
           types    : []
       };
    },
    token: function(stream, state) {
      var ch = stream.next();
      if(ch == '<') {
         transitState(state, ch);
         var parsedURI = '';
         stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} );
         state.uris.push(parsedURI);
         if( stream.match('#', false) ) return 'variable';
         stream.next();
         transitState(state, '>');
         return 'variable';
      }
      if(ch == '#') {
        var parsedAnchor = '';
        stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;});
        state.anchors.push(parsedAnchor);
        return 'variable-2';
      }
      if(ch == '>') {
          transitState(state, '>');
          return 'variable';
      }
      if(ch == '_') {
          transitState(state, ch);
          var parsedBNode = '';
          stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;});
          state.bnodes.push(parsedBNode);
          stream.next();
          transitState(state, ' ');
          return 'builtin';
      }
      if(ch == '"') {
          transitState(state, ch);
          stream.eatWhile( function(c) { return c != '"'; } );
          stream.next();
          if( stream.peek() != '@' && stream.peek() != '^' ) {
              transitState(state, '"');
          }
          return 'string';
      }
      if( ch == '@' ) {
          transitState(state, '@');
          var parsedLang = '';
          stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;});
          state.langs.push(parsedLang);
          stream.next();
          transitState(state, ' ');
          return 'string-2';
      }
      if( ch == '^' ) {
          stream.next();
          transitState(state, '^');
          var parsedType = '';
          stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} );
          state.types.push(parsedType);
          stream.next();
          transitState(state, '>');
          return 'variable';
      }
      if( ch == ' ' ) {
          transitState(state, ch);
      }
      if( ch == '.' ) {
          transitState(state, ch);
      }
    }
  };
});

CodeMirror.defineMIME("text/n-triples", "ntriples");

});
lib/codemirror/mode/ntriples/index.html000064400000002515147361034410014246 0ustar00<!doctype html>

<title>CodeMirror: NTriples mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="ntriples.js"></script>
<style type="text/css">
      .CodeMirror {
        border: 1px solid #eee;
      }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">NTriples</a>
  </ul>
</div>

<article>
<h2>NTriples mode</h2>
<form>
<textarea id="ntriples" name="ntriples">    
<http://Sub1>     <http://pred1>     <http://obj> .
<http://Sub2>     <http://pred2#an2> "literal 1" .
<http://Sub3#an3> <http://pred3>     _:bnode3 .
_:bnode4          <http://pred4>     "literal 2"@lang .
_:bnode5          <http://pred5>     "literal 3"^^<http://type> .
</textarea>
</form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("ntriples"), {});
    </script>
    <p><strong>MIME types defined:</strong> <code>text/n-triples</code>.</p>
  </article>
lib/codemirror/mode/fcl/index.html000064400000006023147361034410013150 0ustar00<!doctype html>

<title>CodeMirror: FCL mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/elegant.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="fcl.js"></script>
<style>.CodeMirror {border:1px solid #999; background:#ffc}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">FCL</a>
  </ul>
</div>

<article>
<h2>FCL mode</h2>
<form><textarea id="code" name="code">
  FUNCTION_BLOCK Fuzzy_FB
      VAR_INPUT
          TimeDay : REAL; (* RANGE(0 .. 23) *)
          ApplicateHost: REAL;
          TimeConfiguration: REAL;
          TimeRequirements: REAL;
      END_VAR

      VAR_OUTPUT
          ProbabilityDistribution: REAL;
          ProbabilityAccess: REAL;
      END_VAR

      FUZZIFY TimeDay
          TERM inside := (0, 0) (8, 1) (22,0);
          TERM outside := (0, 1) (8, 0) (22, 1);
      END_FUZZIFY

      FUZZIFY ApplicateHost
          TERM few := (0, 1) (100, 0) (200, 0);
          TERM many := (0, 0) (100, 0) (200, 1);
      END_FUZZIFY

      FUZZIFY TimeConfiguration
          TERM recently := (0, 1) (30, 1) (120, 0);
          TERM long := (0, 0) (30, 0) (120, 1);
      END_FUZZIFY

      FUZZIFY TimeRequirements
          TERM recently := (0, 1) (30, 1) (365, 0);
          TERM long := (0, 0) (30, 0) (365, 1);
      END_FUZZIFY

      DEFUZZIFY ProbabilityAccess
          TERM hight := 1;
          TERM medium := 0.5;
          TERM low := 0;
          ACCU: MAX;
          METHOD: COGS;
          DEFAULT := 0;
      END_DEFUZZIFY

      DEFUZZIFY ProbabilityDistribution
          TERM hight := 1;
          TERM medium := 0.5;
          TERM low := 0;
          ACCU: MAX;
          METHOD: COGS;
          DEFAULT := 0;
      END_DEFUZZIFY

      RULEBLOCK No1
          AND : MIN;
          RULE 1 : IF TimeDay IS outside AND ApplicateHost IS few THEN ProbabilityAccess IS hight;
          RULE 2 : IF ApplicateHost IS many THEN ProbabilityAccess IS hight;
          RULE 3 : IF TimeDay IS inside AND ApplicateHost IS few THEN ProbabilityAccess IS low;
      END_RULEBLOCK

      RULEBLOCK No2
          AND : MIN;
          RULE 1 : IF ApplicateHost IS many THEN ProbabilityDistribution IS hight;
      END_RULEBLOCK

  END_FUNCTION_BLOCK
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        theme: "elegant",
        matchBrackets: true,
        indentUnit: 8,
        tabSize: 8,
        indentWithTabs: true,
        mode: "text/x-fcl"
      });
    </script>

    <p><strong>MIME type:</strong> <code>text/x-fcl</code></p>
  </article>
lib/codemirror/mode/fcl/fcl.js000064400000011137147361034410012257 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("fcl", function(config) {
  var indentUnit = config.indentUnit;

  var keywords = {
      "term": true,
      "method": true, "accu": true,
      "rule": true, "then": true, "is": true, "and": true, "or": true,
      "if": true, "default": true
  };

  var start_blocks = {
      "var_input": true,
      "var_output": true,
      "fuzzify": true,
      "defuzzify": true,
      "function_block": true,
      "ruleblock": true
  };

  var end_blocks = {
      "end_ruleblock": true,
      "end_defuzzify": true,
      "end_function_block": true,
      "end_fuzzify": true,
      "end_var": true
  };

  var atoms = {
      "true": true, "false": true, "nan": true,
      "real": true, "min": true, "max": true, "cog": true, "cogs": true
  };

  var isOperatorChar = /[+\-*&^%:=<>!|\/]/;

  function tokenBase(stream, state) {
    var ch = stream.next();

    if (/[\d\.]/.test(ch)) {
      if (ch == ".") {
        stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/);
      } else if (ch == "0") {
        stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/);
      } else {
        stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/);
      }
      return "number";
    }

    if (ch == "/" || ch == "(") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_\xa1-\uffff]/);

    var cur = stream.current().toLowerCase();
    if (keywords.propertyIsEnumerable(cur) ||
        start_blocks.propertyIsEnumerable(cur) ||
        end_blocks.propertyIsEnumerable(cur)) {
      return "keyword";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }


  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if ((ch == "/" || ch == ")") && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }

  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null, state.context);
  }

  function popContext(state) {
    if (!state.context.prev) return;
    var t = state.context.type;
    if (t == "end_block")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
            if (ctx.align == null) ctx.align = false;
            state.indented = stream.indentation();
            state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;

        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        var cur = stream.current().toLowerCase();

        if (start_blocks.propertyIsEnumerable(cur)) pushContext(state, stream.column(), "end_block");
        else if (end_blocks.propertyIsEnumerable(cur))  popContext(state);

        state.startOfLine = false;
        return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null) return 0;
      var ctx = state.context;

      var closing = end_blocks.propertyIsEnumerable(textAfter);
      if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "ryk",
    fold: "brace",
    blockCommentStart: "(*",
    blockCommentEnd: "*)",
    lineComment: "//"
  };
});

CodeMirror.defineMIME("text/x-fcl", "fcl");
});
lib/codemirror/mode/eiffel/eiffel.js000064400000007240147361034410013433 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("eiffel", function() {
  function wordObj(words) {
    var o = {};
    for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
    return o;
  }
  var keywords = wordObj([
    'note',
    'across',
    'when',
    'variant',
    'until',
    'unique',
    'undefine',
    'then',
    'strip',
    'select',
    'retry',
    'rescue',
    'require',
    'rename',
    'reference',
    'redefine',
    'prefix',
    'once',
    'old',
    'obsolete',
    'loop',
    'local',
    'like',
    'is',
    'inspect',
    'infix',
    'include',
    'if',
    'frozen',
    'from',
    'external',
    'export',
    'ensure',
    'end',
    'elseif',
    'else',
    'do',
    'creation',
    'create',
    'check',
    'alias',
    'agent',
    'separate',
    'invariant',
    'inherit',
    'indexing',
    'feature',
    'expanded',
    'deferred',
    'class',
    'Void',
    'True',
    'Result',
    'Precursor',
    'False',
    'Current',
    'create',
    'attached',
    'detachable',
    'as',
    'and',
    'implies',
    'not',
    'or'
  ]);
  var operators = wordObj([":=", "and then","and", "or","<<",">>"]);

  function chain(newtok, stream, state) {
    state.tokenize.push(newtok);
    return newtok(stream, state);
  }

  function tokenBase(stream, state) {
    if (stream.eatSpace()) return null;
    var ch = stream.next();
    if (ch == '"'||ch == "'") {
      return chain(readQuoted(ch, "string"), stream, state);
    } else if (ch == "-"&&stream.eat("-")) {
      stream.skipToEnd();
      return "comment";
    } else if (ch == ":"&&stream.eat("=")) {
      return "operator";
    } else if (/[0-9]/.test(ch)) {
      stream.eatWhile(/[xXbBCc0-9\.]/);
      stream.eat(/[\?\!]/);
      return "ident";
    } else if (/[a-zA-Z_0-9]/.test(ch)) {
      stream.eatWhile(/[a-zA-Z_0-9]/);
      stream.eat(/[\?\!]/);
      return "ident";
    } else if (/[=+\-\/*^%<>~]/.test(ch)) {
      stream.eatWhile(/[=+\-\/*^%<>~]/);
      return "operator";
    } else {
      return null;
    }
  }

  function readQuoted(quote, style,  unescaped) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && (unescaped || !escaped)) {
          state.tokenize.pop();
          break;
        }
        escaped = !escaped && ch == "%";
      }
      return style;
    };
  }

  return {
    startState: function() {
      return {tokenize: [tokenBase]};
    },

    token: function(stream, state) {
      var style = state.tokenize[state.tokenize.length-1](stream, state);
      if (style == "ident") {
        var word = stream.current();
        style = keywords.propertyIsEnumerable(stream.current()) ? "keyword"
          : operators.propertyIsEnumerable(stream.current()) ? "operator"
          : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag"
          : /^0[bB][0-1]+$/g.test(word) ? "number"
          : /^0[cC][0-7]+$/g.test(word) ? "number"
          : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number"
          : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number"
          : /^[0-9]+$/g.test(word) ? "number"
          : "variable";
      }
      return style;
    },
    lineComment: "--"
  };
});

CodeMirror.defineMIME("text/x-eiffel", "eiffel");

});
lib/codemirror/mode/eiffel/index.html000064400000031616147361034410013644 0ustar00<!doctype html>

<title>CodeMirror: Eiffel mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/neat.css">
<script src="../../lib/codemirror.js"></script>
<script src="eiffel.js"></script>
<style>
      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
      .cm-s-default span.cm-arrow { color: red; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Eiffel</a>
  </ul>
</div>

<article>
<h2>Eiffel mode</h2>
<form><textarea id="code" name="code">
note
    description: "[
        Project-wide universal properties.
        This class is an ancestor to all developer-written classes.
        ANY may be customized for individual projects or teams.
        ]"

    library: "Free implementation of ELKS library"
    status: "See notice at end of class."
    legal: "See notice at end of class."
    date: "$Date: 2013-01-25 11:49:00 -0800 (Fri, 25 Jan 2013) $"
    revision: "$Revision: 712 $"

class
    ANY

feature -- Customization

feature -- Access

    generator: STRING
            -- Name of current object's generating class
            -- (base class of the type of which it is a direct instance)
        external
            "built_in"
        ensure
            generator_not_void: Result /= Void
            generator_not_empty: not Result.is_empty
        end

    generating_type: TYPE [detachable like Current]
            -- Type of current object
            -- (type of which it is a direct instance)
        do
            Result := {detachable like Current}
        ensure
            generating_type_not_void: Result /= Void
        end

feature -- Status report

    conforms_to (other: ANY): BOOLEAN
            -- Does type of current object conform to type
            -- of `other' (as per Eiffel: The Language, chapter 13)?
        require
            other_not_void: other /= Void
        external
            "built_in"
        end

    same_type (other: ANY): BOOLEAN
            -- Is type of current object identical to type of `other'?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            definition: Result = (conforms_to (other) and
                                        other.conforms_to (Current))
        end

feature -- Comparison

    is_equal (other: like Current): BOOLEAN
            -- Is `other' attached to an object considered
            -- equal to current object?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            symmetric: Result implies other ~ Current
            consistent: standard_is_equal (other) implies Result
        end

    frozen standard_is_equal (other: like Current): BOOLEAN
            -- Is `other' attached to an object of the same type
            -- as current object, and field-by-field identical to it?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            same_type: Result implies same_type (other)
            symmetric: Result implies other.standard_is_equal (Current)
        end

    frozen equal (a: detachable ANY; b: like a): BOOLEAN
            -- Are `a' and `b' either both void or attached
            -- to objects considered equal?
        do
            if a = Void then
                Result := b = Void
            else
                Result := b /= Void and then
                            a.is_equal (b)
            end
        ensure
            definition: Result = (a = Void and b = Void) or else
                        ((a /= Void and b /= Void) and then
                        a.is_equal (b))
        end

    frozen standard_equal (a: detachable ANY; b: like a): BOOLEAN
            -- Are `a' and `b' either both void or attached to
            -- field-by-field identical objects of the same type?
            -- Always uses default object comparison criterion.
        do
            if a = Void then
                Result := b = Void
            else
                Result := b /= Void and then
                            a.standard_is_equal (b)
            end
        ensure
            definition: Result = (a = Void and b = Void) or else
                        ((a /= Void and b /= Void) and then
                        a.standard_is_equal (b))
        end

    frozen is_deep_equal (other: like Current): BOOLEAN
            -- Are `Current' and `other' attached to isomorphic object structures?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            shallow_implies_deep: standard_is_equal (other) implies Result
            same_type: Result implies same_type (other)
            symmetric: Result implies other.is_deep_equal (Current)
        end

    frozen deep_equal (a: detachable ANY; b: like a): BOOLEAN
            -- Are `a' and `b' either both void
            -- or attached to isomorphic object structures?
        do
            if a = Void then
                Result := b = Void
            else
                Result := b /= Void and then a.is_deep_equal (b)
            end
        ensure
            shallow_implies_deep: standard_equal (a, b) implies Result
            both_or_none_void: (a = Void) implies (Result = (b = Void))
            same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b))
            symmetric: Result implies deep_equal (b, a)
        end

feature -- Duplication

    frozen twin: like Current
            -- New object equal to `Current'
            -- `twin' calls `copy'; to change copying/twinning semantics, redefine `copy'.
        external
            "built_in"
        ensure
            twin_not_void: Result /= Void
            is_equal: Result ~ Current
        end

    copy (other: like Current)
            -- Update current object using fields of object attached
            -- to `other', so as to yield equal objects.
        require
            other_not_void: other /= Void
            type_identity: same_type (other)
        external
            "built_in"
        ensure
            is_equal: Current ~ other
        end

    frozen standard_copy (other: like Current)
            -- Copy every field of `other' onto corresponding field
            -- of current object.
        require
            other_not_void: other /= Void
            type_identity: same_type (other)
        external
            "built_in"
        ensure
            is_standard_equal: standard_is_equal (other)
        end

    frozen clone (other: detachable ANY): like other
            -- Void if `other' is void; otherwise new object
            -- equal to `other'
            --
            -- For non-void `other', `clone' calls `copy';
            -- to change copying/cloning semantics, redefine `copy'.
        obsolete
            "Use `twin' instead."
        do
            if other /= Void then
                Result := other.twin
            end
        ensure
            equal: Result ~ other
        end

    frozen standard_clone (other: detachable ANY): like other
            -- Void if `other' is void; otherwise new object
            -- field-by-field identical to `other'.
            -- Always uses default copying semantics.
        obsolete
            "Use `standard_twin' instead."
        do
            if other /= Void then
                Result := other.standard_twin
            end
        ensure
            equal: standard_equal (Result, other)
        end

    frozen standard_twin: like Current
            -- New object field-by-field identical to `other'.
            -- Always uses default copying semantics.
        external
            "built_in"
        ensure
            standard_twin_not_void: Result /= Void
            equal: standard_equal (Result, Current)
        end

    frozen deep_twin: like Current
            -- New object structure recursively duplicated from Current.
        external
            "built_in"
        ensure
            deep_twin_not_void: Result /= Void
            deep_equal: deep_equal (Current, Result)
        end

    frozen deep_clone (other: detachable ANY): like other
            -- Void if `other' is void: otherwise, new object structure
            -- recursively duplicated from the one attached to `other'
        obsolete
            "Use `deep_twin' instead."
        do
            if other /= Void then
                Result := other.deep_twin
            end
        ensure
            deep_equal: deep_equal (other, Result)
        end

    frozen deep_copy (other: like Current)
            -- Effect equivalent to that of:
            --      `copy' (`other' . `deep_twin')
        require
            other_not_void: other /= Void
        do
            copy (other.deep_twin)
        ensure
            deep_equal: deep_equal (Current, other)
        end

feature {NONE} -- Retrieval

    frozen internal_correct_mismatch
            -- Called from runtime to perform a proper dynamic dispatch on `correct_mismatch'
            -- from MISMATCH_CORRECTOR.
        local
            l_msg: STRING
            l_exc: EXCEPTIONS
        do
            if attached {MISMATCH_CORRECTOR} Current as l_corrector then
                l_corrector.correct_mismatch
            else
                create l_msg.make_from_string ("Mismatch: ")
                create l_exc
                l_msg.append (generating_type.name)
                l_exc.raise_retrieval_exception (l_msg)
            end
        end

feature -- Output

    io: STD_FILES
            -- Handle to standard file setup
        once
            create Result
            Result.set_output_default
        ensure
            io_not_void: Result /= Void
        end

    out: STRING
            -- New string containing terse printable representation
            -- of current object
        do
            Result := tagged_out
        ensure
            out_not_void: Result /= Void
        end

    frozen tagged_out: STRING
            -- New string containing terse printable representation
            -- of current object
        external
            "built_in"
        ensure
            tagged_out_not_void: Result /= Void
        end

    print (o: detachable ANY)
            -- Write terse external representation of `o'
            -- on standard output.
        do
            if o /= Void then
                io.put_string (o.out)
            end
        end

feature -- Platform

    Operating_environment: OPERATING_ENVIRONMENT
            -- Objects available from the operating system
        once
            create Result
        ensure
            operating_environment_not_void: Result /= Void
        end

feature {NONE} -- Initialization

    default_create
            -- Process instances of classes with no creation clause.
            -- (Default: do nothing.)
        do
        end

feature -- Basic operations

    default_rescue
            -- Process exception for routines with no Rescue clause.
            -- (Default: do nothing.)
        do
        end

    frozen do_nothing
            -- Execute a null action.
        do
        end

    frozen default: detachable like Current
            -- Default value of object's type
        do
        end

    frozen default_pointer: POINTER
            -- Default value of type `POINTER'
            -- (Avoid the need to write `p'.`default' for
            -- some `p' of type `POINTER'.)
        do
        ensure
            -- Result = Result.default
        end

    frozen as_attached: attached like Current
            -- Attached version of Current
            -- (Can be used during transitional period to convert
            -- non-void-safe classes to void-safe ones.)
        do
            Result := Current
        end

invariant
    reflexive_equality: standard_is_equal (Current)
    reflexive_conformance: conforms_to (Current)

note
    copyright: "Copyright (c) 1984-2012, Eiffel Software and others"
    license:   "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
    source: "[
            Eiffel Software
            5949 Hollister Ave., Goleta, CA 93117 USA
            Telephone 805-685-1006, Fax 805-685-6869
            Website http://www.eiffel.com
            Customer support http://support.eiffel.com
        ]"

end

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/x-eiffel",
        indentUnit: 4,
        lineNumbers: true,
        theme: "neat"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-eiffel</code>.</p>
 
 <p> Created by <a href="https://github.com/ynh">YNH</a>.</p>
  </article>
lib/codemirror/mode/sparql/sparql.js000064400000014277147361034410013563 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sparql", function(config) {
  var indentUnit = config.indentUnit;
  var curPunc;

  function wordRegexp(words) {
    return new RegExp("^(?:" + words.join("|") + ")$", "i");
  }
  var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri",
                        "iri", "uri", "bnode", "count", "sum", "min", "max", "avg", "sample",
                        "group_concat", "rand", "abs", "ceil", "floor", "round", "concat", "substr", "strlen",
                        "replace", "ucase", "lcase", "encode_for_uri", "contains", "strstarts", "strends",
                        "strbefore", "strafter", "year", "month", "day", "hours", "minutes", "seconds",
                        "timezone", "tz", "now", "uuid", "struuid", "md5", "sha1", "sha256", "sha384",
                        "sha512", "coalesce", "if", "strlang", "strdt", "isnumeric", "regex", "exists",
                        "isblank", "isliteral", "a", "bind"]);
  var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe",
                             "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional",
                             "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group",
                             "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union",
                             "true", "false", "with",
                             "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]);
  var operatorChars = /[*+\-<>=&|\^\/!\?]/;

  function tokenBase(stream, state) {
    var ch = stream.next();
    curPunc = null;
    if (ch == "$" || ch == "?") {
      if(ch == "?" && stream.match(/\s/, false)){
        return "operator";
      }
      stream.match(/^[\w\d]*/);
      return "variable-2";
    }
    else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) {
      stream.match(/^[^\s\u00a0>]*>?/);
      return "atom";
    }
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenLiteral(ch);
      return state.tokenize(stream, state);
    }
    else if (/[{}\(\),\.;\[\]]/.test(ch)) {
      curPunc = ch;
      return "bracket";
    }
    else if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    else if (operatorChars.test(ch)) {
      stream.eatWhile(operatorChars);
      return "operator";
    }
    else if (ch == ":") {
      stream.eatWhile(/[\w\d\._\-]/);
      return "atom";
    }
    else if (ch == "@") {
      stream.eatWhile(/[a-z\d\-]/i);
      return "meta";
    }
    else {
      stream.eatWhile(/[_\w\d]/);
      if (stream.eat(":")) {
        stream.eatWhile(/[\w\d_\-]/);
        return "atom";
      }
      var word = stream.current();
      if (ops.test(word))
        return "builtin";
      else if (keywords.test(word))
        return "keyword";
      else
        return "variable";
    }
  }

  function tokenLiteral(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      return "string";
    };
  }

  function pushContext(state, type, col) {
    state.context = {prev: state.context, indent: state.indent, col: col, type: type};
  }
  function popContext(state) {
    state.indent = state.context.indent;
    state.context = state.context.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase,
              context: null,
              indent: 0,
              col: 0};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (state.context && state.context.align == null) state.context.align = false;
        state.indent = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);

      if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") {
        state.context.align = true;
      }

      if (curPunc == "(") pushContext(state, ")", stream.column());
      else if (curPunc == "[") pushContext(state, "]", stream.column());
      else if (curPunc == "{") pushContext(state, "}", stream.column());
      else if (/[\]\}\)]/.test(curPunc)) {
        while (state.context && state.context.type == "pattern") popContext(state);
        if (state.context && curPunc == state.context.type) {
          popContext(state);
          if (curPunc == "}" && state.context && state.context.type == "pattern")
            popContext(state);
        }
      }
      else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state);
      else if (/atom|string|variable/.test(style) && state.context) {
        if (/[\}\]]/.test(state.context.type))
          pushContext(state, "pattern", stream.column());
        else if (state.context.type == "pattern" && !state.context.align) {
          state.context.align = true;
          state.context.col = stream.column();
        }
      }

      return style;
    },

    indent: function(state, textAfter) {
      var firstChar = textAfter && textAfter.charAt(0);
      var context = state.context;
      if (/[\]\}]/.test(firstChar))
        while (context && context.type == "pattern") context = context.prev;

      var closing = context && firstChar == context.type;
      if (!context)
        return 0;
      else if (context.type == "pattern")
        return context.col;
      else if (context.align)
        return context.col + (closing ? 0 : 1);
      else
        return context.indent + (closing ? 0 : indentUnit);
    },

    lineComment: "#"
  };
});

CodeMirror.defineMIME("application/sparql-query", "sparql");

});
lib/codemirror/mode/sparql/index.html000064400000003355147361034410013713 0ustar00<!doctype html>

<title>CodeMirror: SPARQL mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="sparql.js"></script>
<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">SPARQL</a>
  </ul>
</div>

<article>
<h2>SPARQL mode</h2>
<form><textarea id="code" name="code">
PREFIX a: &lt;http://www.w3.org/2000/10/annotation-ns#>
PREFIX dc: &lt;http://purl.org/dc/elements/1.1/>
PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/>
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#>

# Comment!

SELECT ?given ?family
WHERE {
  {
    ?annot a:annotates &lt;http://www.w3.org/TR/rdf-sparql-query/> .
    ?annot dc:creator ?c .
    OPTIONAL {?c foaf:givenName ?given ;
                 foaf:familyName ?family }
  } UNION {
    ?c !foaf:knows/foaf:knows? ?thing.
    ?thing rdfs
  } MINUS {
    ?thing rdfs:label "剛柔流"@jp
  }
  FILTER isBlank(?c)
}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "application/sparql-query",
        matchBrackets: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>application/sparql-query</code>.</p>

  </article>
lib/codemirror/mode/sql/sql.js000064400000102632147361034410012346 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sql", function(config, parserConfig) {
  "use strict";

  var client         = parserConfig.client || {},
      atoms          = parserConfig.atoms || {"false": true, "true": true, "null": true},
      builtin        = parserConfig.builtin || {},
      keywords       = parserConfig.keywords || {},
      operatorChars  = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/,
      support        = parserConfig.support || {},
      hooks          = parserConfig.hooks || {},
      dateSQL        = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true};

  function tokenBase(stream, state) {
    var ch = stream.next();

    // call hooks from the mime type
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }

    if (support.hexNumber == true &&
      ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/))
      || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) {
      // hex
      // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html
      return "number";
    } else if (support.binaryNumber == true &&
      (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/))
      || (ch == "0" && stream.match(/^b[01]+/)))) {
      // bitstring
      // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html
      return "number";
    } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) {
      // numbers
      // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html
          stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/);
      support.decimallessFloat == true && stream.eat('.');
      return "number";
    } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) {
      // placeholders
      return "variable-3";
    } else if (ch == "'" || (ch == '"' && support.doubleQuote)) {
      // strings
      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html
      state.tokenize = tokenLiteral(ch);
      return state.tokenize(stream, state);
    } else if ((((support.nCharCast == true && (ch == "n" || ch == "N"))
        || (support.charsetCast == true && ch == "_" && stream.match(/[a-z][a-z0-9]*/i)))
        && (stream.peek() == "'" || stream.peek() == '"'))) {
      // charset casting: _utf8'str', N'str', n'str'
      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html
      return "keyword";
    } else if (/^[\(\),\;\[\]]/.test(ch)) {
      // no highlighting
      return null;
    } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) {
      // 1-line comment
      stream.skipToEnd();
      return "comment";
    } else if ((support.commentHash && ch == "#")
        || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) {
      // 1-line comments
      // ref: https://kb.askmonty.org/en/comment-syntax/
      stream.skipToEnd();
      return "comment";
    } else if (ch == "/" && stream.eat("*")) {
      // multi-line comments
      // ref: https://kb.askmonty.org/en/comment-syntax/
      state.tokenize = tokenComment;
      return state.tokenize(stream, state);
    } else if (ch == ".") {
      // .1 for 0.1
      if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) {
        return "number";
      }
      // .table_name (ODBC)
      // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html
      if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) {
        return "variable-2";
      }
    } else if (operatorChars.test(ch)) {
      // operators
      stream.eatWhile(operatorChars);
      return null;
    } else if (ch == '{' &&
        (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) {
      // dates (weird ODBC syntax)
      // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html
      return "number";
    } else {
      stream.eatWhile(/^[_\w\d]/);
      var word = stream.current().toLowerCase();
      // dates (standard SQL syntax)
      // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html
      if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/)))
        return "number";
      if (atoms.hasOwnProperty(word)) return "atom";
      if (builtin.hasOwnProperty(word)) return "builtin";
      if (keywords.hasOwnProperty(word)) return "keyword";
      if (client.hasOwnProperty(word)) return "string-2";
      return null;
    }
  }

  // 'string', with char specified in quote escaped by '\'
  function tokenLiteral(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      return "string";
    };
  }
  function tokenComment(stream, state) {
    while (true) {
      if (stream.skipTo("*")) {
        stream.next();
        if (stream.eat("/")) {
          state.tokenize = tokenBase;
          break;
        }
      } else {
        stream.skipToEnd();
        break;
      }
    }
    return "comment";
  }

  function pushContext(stream, state, type) {
    state.context = {
      prev: state.context,
      indent: stream.indentation(),
      col: stream.column(),
      type: type
    };
  }

  function popContext(state) {
    state.indent = state.context.indent;
    state.context = state.context.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase, context: null};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (state.context && state.context.align == null)
          state.context.align = false;
      }
      if (stream.eatSpace()) return null;

      var style = state.tokenize(stream, state);
      if (style == "comment") return style;

      if (state.context && state.context.align == null)
        state.context.align = true;

      var tok = stream.current();
      if (tok == "(")
        pushContext(stream, state, ")");
      else if (tok == "[")
        pushContext(stream, state, "]");
      else if (state.context && state.context.type == tok)
        popContext(state);
      return style;
    },

    indent: function(state, textAfter) {
      var cx = state.context;
      if (!cx) return CodeMirror.Pass;
      var closing = textAfter.charAt(0) == cx.type;
      if (cx.align) return cx.col + (closing ? 0 : 1);
      else return cx.indent + (closing ? 0 : config.indentUnit);
    },

    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : null
  };
});

(function() {
  "use strict";

  // `identifier`
  function hookIdentifier(stream) {
    // MySQL/MariaDB identifiers
    // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html
    var ch;
    while ((ch = stream.next()) != null) {
      if (ch == "`" && !stream.eat("`")) return "variable-2";
    }
    stream.backUp(stream.current().length - 1);
    return stream.eatWhile(/\w/) ? "variable-2" : null;
  }

  // variable token
  function hookVar(stream) {
    // variables
    // @@prefix.varName @varName
    // varName can be quoted with ` or ' or "
    // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html
    if (stream.eat("@")) {
      stream.match(/^session\./);
      stream.match(/^local\./);
      stream.match(/^global\./);
    }

    if (stream.eat("'")) {
      stream.match(/^.*'/);
      return "variable-2";
    } else if (stream.eat('"')) {
      stream.match(/^.*"/);
      return "variable-2";
    } else if (stream.eat("`")) {
      stream.match(/^.*`/);
      return "variable-2";
    } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) {
      return "variable-2";
    }
    return null;
  };

  // short client keyword token
  function hookClient(stream) {
    // \N means NULL
    // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html
    if (stream.eat("N")) {
        return "atom";
    }
    // \g, etc
    // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html
    return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null;
  }

  // these keywords are used by all SQL dialects (however, a mode can still overwrite it)
  var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";

  // turn a space-separated list into an array
  function set(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  // A generic SQL Mode. It's not a standard, it just try to support what is generally supported
  CodeMirror.defineMIME("text/x-sql", {
    name: "sql",
    keywords: set(sqlKeywords + "begin"),
    builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable doubleQuote binaryNumber hexNumber")
  });

  CodeMirror.defineMIME("text/x-mssql", {
    name: "sql",
    client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),
    keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare"),
    builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=]/,
    dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"),
    hooks: {
      "@":   hookVar
    }
  });

  CodeMirror.defineMIME("text/x-mysql", {
    name: "sql",
    client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),
    keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),
    builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=&|^]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),
    hooks: {
      "@":   hookVar,
      "`":   hookIdentifier,
      "\\":  hookClient
    }
  });

  CodeMirror.defineMIME("text/x-mariadb", {
    name: "sql",
    client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),
    keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),
    builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=&|^]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),
    hooks: {
      "@":   hookVar,
      "`":   hookIdentifier,
      "\\":  hookClient
    }
  });

  // the query language used by Apache Cassandra is called CQL, but this mime type
  // is called Cassandra to avoid confusion with Contextual Query Language
  CodeMirror.defineMIME("text/x-cassandra", {
    name: "sql",
    client: { },
    keywords: set("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),
    builtin: set("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),
    atoms: set("false true infinity NaN"),
    operatorChars: /^[<>=]/,
    dateSQL: { },
    support: set("commentSlashSlash decimallessFloat"),
    hooks: { }
  });

  // this is based on Peter Raganitsch's 'plsql' mode
  CodeMirror.defineMIME("text/x-plsql", {
    name:       "sql",
    client:     set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),
    keywords:   set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),
    builtin:    set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),
    operatorChars: /^[*+\-%<>!=~]/,
    dateSQL:    set("date time timestamp"),
    support:    set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")
  });

  // Created to support specific hive keywords
  CodeMirror.defineMIME("text/x-hive", {
    name: "sql",
    keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"),
    builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=]/,
    dateSQL: set("date timestamp"),
    support: set("ODBCdotTable doubleQuote binaryNumber hexNumber")
  });

  CodeMirror.defineMIME("text/x-pgsql", {
    name: "sql",
    client: set("source"),
    // http://www.postgresql.org/docs/9.5/static/sql-keywords-appendix.html
    keywords: set(sqlKeywords + "a abort abs absent absolute access according action ada add admin after aggregate all allocate also always analyse analyze any are array array_agg array_max_cardinality asensitive assertion assignment asymmetric at atomic attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli binary bit_length blob blocked bom both breadth c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain characteristics characters character_length character_set_catalog character_set_name character_set_schema char_length check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column columns column_name command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constraint constraints constraint_catalog constraint_name constraint_schema constructor contains content continue control conversion convert copy corr corresponding cost covar_pop covar_samp cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datetime_interval_code datetime_interval_precision day db deallocate dec declare default defaults deferrable deferred defined definer degree delimiter delimiters dense_rank depth deref derived describe descriptor deterministic diagnostics dictionary disable discard disconnect dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain dynamic dynamic_function dynamic_function_code each element else empty enable encoding encrypted end end-exec end_frame end_partition enforced enum equals escape event every except exception exclude excluding exclusive exec execute exists exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreign fortran forward found frame_row free freeze fs full function functions fusion g general generated get global go goto grant granted greatest grouping groups handler header hex hierarchy hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import including increment indent index indexes indicator inherit inherits initially inline inner inout input insensitive instance instantiable instead integrity intersect intersection invoker isnull isolation k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like_regex link listen ln load local localtime localtimestamp location locator lock locked logged lower m map mapping match matched materialized max maxvalue max_cardinality member merge message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized nothing notify notnull nowait nth_value ntile null nullable nullif nulls number object occurrences_regex octets octet_length of off offset oids old only open operator option options ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password percent percentile_cont percentile_disc percent_rank period permission placing plans pli policy portion position position_regex power precedes preceding prepare prepared preserve primary prior privileges procedural procedure program public quote range rank read reads reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns revoke right role rollback rollup routine routine_catalog routine_name routine_schema row rows row_count row_number rule savepoint scale schema schema_name scope scope_catalog scope_name scope_schema scroll search second section security selective self sensitive sequence sequences serializable server server_name session session_user setof sets share show similar simple size skip snapshot some source space specific specifictype specific_name sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset substring substring_regex succeeds sum symmetric sysid system system_time system_user t tables tablesample tablespace table_name temp template temporary then ties timezone_hour timezone_minute to token top_level_count trailing transaction transactions_committed transactions_rolled_back transaction_active transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted unique unknown unlink unlisten unlogged unnamed unnest until untyped upper uri usage user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of varbinary variadic var_pop var_samp verbose version versioning view views volatile when whenever whitespace width_bucket window within work wrapper write xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes loop repeat"),
    // http://www.postgresql.org/docs/9.5/static/datatype.html
    builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=&|^\/#@?~]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")
  });

  // Google's SQL-like query language, GQL
  CodeMirror.defineMIME("text/x-gql", {
    name: "sql",
    keywords: set("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),
    atoms: set("false true"),
    builtin: set("blob datetime first key __key__ string integer double boolean null"),
    operatorChars: /^[*+\-%<>!=]/
  });
}());

});

/*
  How Properties of Mime Types are used by SQL Mode
  =================================================

  keywords:
    A list of keywords you want to be highlighted.
  builtin:
    A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword").
  operatorChars:
    All characters that must be handled as operators.
  client:
    Commands parsed and executed by the client (not the server).
  support:
    A list of supported syntaxes which are not common, but are supported by more than 1 DBMS.
    * ODBCdotTable: .tableName
    * zerolessFloat: .1
    * doubleQuote
    * nCharCast: N'string'
    * charsetCast: _utf8'string'
    * commentHash: use # char for comments
    * commentSlashSlash: use // for comments
    * commentSpaceRequired: require a space after -- for comments
  atoms:
    Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others:
    UNKNOWN, INFINITY, UNDERFLOW, NaN...
  dateSQL:
    Used for date/time SQL standard syntax, because not all DBMS's support same temporal types.
*/
lib/codemirror/mode/sql/index.html000064400000005657147361034410013217 0ustar00<!doctype html>

<title>CodeMirror: SQL Mode for CodeMirror</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css" />
<script src="../../lib/codemirror.js"></script>
<script src="sql.js"></script>
<link rel="stylesheet" href="../../addon/hint/show-hint.css" />
<script src="../../addon/hint/show-hint.js"></script>
<script src="../../addon/hint/sql-hint.js"></script>
<style>
.CodeMirror {
    border-top: 1px solid black;
    border-bottom: 1px solid black;
}
        </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">SQL Mode for CodeMirror</a>
  </ul>
</div>

<article>
<h2>SQL Mode for CodeMirror</h2>
<form>
            <textarea id="code" name="code">-- SQL Mode for CodeMirror
SELECT SQL_NO_CACHE DISTINCT
		@var1 AS `val1`, @'val2', @global.'sql_mode',
		1.1 AS `float_val`, .14 AS `another_float`, 0.09e3 AS `int_with_esp`,
		0xFA5 AS `hex`, x'fa5' AS `hex2`, 0b101 AS `bin`, b'101' AS `bin2`,
		DATE '1994-01-01' AS `sql_date`, { T "1994-01-01" } AS `odbc_date`,
		'my string', _utf8'your string', N'her string',
        TRUE, FALSE, UNKNOWN
	FROM DUAL
	-- space needed after '--'
	# 1 line comment
	/* multiline
	comment! */
	LIMIT 1 OFFSET 0;
</textarea>
            </form>
            <p><strong>MIME types defined:</strong> 
            <code><a href="?mime=text/x-sql">text/x-sql</a></code>,
            <code><a href="?mime=text/x-mysql">text/x-mysql</a></code>,
            <code><a href="?mime=text/x-mariadb">text/x-mariadb</a></code>,
            <code><a href="?mime=text/x-cassandra">text/x-cassandra</a></code>,
            <code><a href="?mime=text/x-plsql">text/x-plsql</a></code>,
            <code><a href="?mime=text/x-mssql">text/x-mssql</a></code>,
            <code><a href="?mime=text/x-hive">text/x-hive</a></code>,
            <code><a href="?mime=text/x-pgsql">text/x-pgsql</a></code>,
            <code><a href="?mime=text/x-gql">text/x-gql</a></code>.
        </p>
<script>
window.onload = function() {
  var mime = 'text/x-mariadb';
  // get mime type
  if (window.location.href.indexOf('mime=') > -1) {
    mime = window.location.href.substr(window.location.href.indexOf('mime=') + 5);
  }
  window.editor = CodeMirror.fromTextArea(document.getElementById('code'), {
    mode: mime,
    indentWithTabs: true,
    smartIndent: true,
    lineNumbers: true,
    matchBrackets : true,
    autofocus: true,
    extraKeys: {"Ctrl-Space": "autocomplete"},
    hintOptions: {tables: {
      users: {name: null, score: null, birthDate: null},
      countries: {name: null, population: null, size: null}
    }}
  });
};
</script>

</article>
lib/codemirror/mode/pug/index.html000064400000004671147361034410013206 0ustar00<!doctype html>

<title>CodeMirror: Pug Templating Mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../css/css.js"></script>
<script src="../xml/xml.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="pug.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Pug Templating Mode</a>
  </ul>
</div>

<article>
<h2>Pug Templating Mode</h2>
<form><textarea id="code" name="code">
doctype html
  html
    head
      title= "Pug Templating CodeMirror Mode Example"
      link(rel='stylesheet', href='/css/bootstrap.min.css')
      link(rel='stylesheet', href='/css/index.css')
      script(type='text/javascript', src='/js/jquery-1.9.1.min.js')
      script(type='text/javascript', src='/js/bootstrap.min.js')
    body
      div.header
        h1 Welcome to this Example
      div.spots
        if locals.spots
          each spot in spots
            div.spot.well
         div
           if spot.logo
             img.img-rounded.logo(src=spot.logo)
           else
             img.img-rounded.logo(src="img/placeholder.png")
         h3
           a(href=spot.hash) ##{spot.hash}
           if spot.title
             span.title #{spot.title}
           if spot.desc
             div #{spot.desc}
        else
          h3 There are no spots currently available.
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "pug", alignCDATA: true},
        lineNumbers: true
      });
    </script>
    <h3>The Pug Templating Mode</h3>
      <p> Created by Forbes Lindesay. Managed as part of a Brackets extension at <a href="https://github.com/ForbesLindesay/jade-brackets">https://github.com/ForbesLindesay/jade-brackets</a>.</p>
    <p><strong>MIME type defined:</strong> <code>text/x-pug</code>, <code>text/x-jade</code>.</p>
  </article>
lib/codemirror/mode/pug/pug.js000064400000037256147361034410012347 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../javascript/javascript"), require("../css/css"), require("../htmlmixed/htmlmixed"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../javascript/javascript", "../css/css", "../htmlmixed/htmlmixed"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pug", function (config) {
  // token types
  var KEYWORD = 'keyword';
  var DOCTYPE = 'meta';
  var ID = 'builtin';
  var CLASS = 'qualifier';

  var ATTRS_NEST = {
    '{': '}',
    '(': ')',
    '[': ']'
  };

  var jsMode = CodeMirror.getMode(config, 'javascript');

  function State() {
    this.javaScriptLine = false;
    this.javaScriptLineExcludesColon = false;

    this.javaScriptArguments = false;
    this.javaScriptArgumentsDepth = 0;

    this.isInterpolating = false;
    this.interpolationNesting = 0;

    this.jsState = CodeMirror.startState(jsMode);

    this.restOfLine = '';

    this.isIncludeFiltered = false;
    this.isEach = false;

    this.lastTag = '';
    this.scriptType = '';

    // Attributes Mode
    this.isAttrs = false;
    this.attrsNest = [];
    this.inAttributeName = true;
    this.attributeIsType = false;
    this.attrValue = '';

    // Indented Mode
    this.indentOf = Infinity;
    this.indentToken = '';

    this.innerMode = null;
    this.innerState = null;

    this.innerModeForLine = false;
  }
  /**
   * Safely copy a state
   *
   * @return {State}
   */
  State.prototype.copy = function () {
    var res = new State();
    res.javaScriptLine = this.javaScriptLine;
    res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;
    res.javaScriptArguments = this.javaScriptArguments;
    res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;
    res.isInterpolating = this.isInterpolating;
    res.interpolationNesting = this.interpolationNesting;

    res.jsState = CodeMirror.copyState(jsMode, this.jsState);

    res.innerMode = this.innerMode;
    if (this.innerMode && this.innerState) {
      res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);
    }

    res.restOfLine = this.restOfLine;

    res.isIncludeFiltered = this.isIncludeFiltered;
    res.isEach = this.isEach;
    res.lastTag = this.lastTag;
    res.scriptType = this.scriptType;
    res.isAttrs = this.isAttrs;
    res.attrsNest = this.attrsNest.slice();
    res.inAttributeName = this.inAttributeName;
    res.attributeIsType = this.attributeIsType;
    res.attrValue = this.attrValue;
    res.indentOf = this.indentOf;
    res.indentToken = this.indentToken;

    res.innerModeForLine = this.innerModeForLine;

    return res;
  };

  function javaScript(stream, state) {
    if (stream.sol()) {
      // if javaScriptLine was set at end of line, ignore it
      state.javaScriptLine = false;
      state.javaScriptLineExcludesColon = false;
    }
    if (state.javaScriptLine) {
      if (state.javaScriptLineExcludesColon && stream.peek() === ':') {
        state.javaScriptLine = false;
        state.javaScriptLineExcludesColon = false;
        return;
      }
      var tok = jsMode.token(stream, state.jsState);
      if (stream.eol()) state.javaScriptLine = false;
      return tok || true;
    }
  }
  function javaScriptArguments(stream, state) {
    if (state.javaScriptArguments) {
      if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {
        state.javaScriptArguments = false;
        return;
      }
      if (stream.peek() === '(') {
        state.javaScriptArgumentsDepth++;
      } else if (stream.peek() === ')') {
        state.javaScriptArgumentsDepth--;
      }
      if (state.javaScriptArgumentsDepth === 0) {
        state.javaScriptArguments = false;
        return;
      }

      var tok = jsMode.token(stream, state.jsState);
      return tok || true;
    }
  }

  function yieldStatement(stream) {
    if (stream.match(/^yield\b/)) {
        return 'keyword';
    }
  }

  function doctype(stream) {
    if (stream.match(/^(?:doctype) *([^\n]+)?/)) {
        return DOCTYPE;
    }
  }

  function interpolation(stream, state) {
    if (stream.match('#{')) {
      state.isInterpolating = true;
      state.interpolationNesting = 0;
      return 'punctuation';
    }
  }

  function interpolationContinued(stream, state) {
    if (state.isInterpolating) {
      if (stream.peek() === '}') {
        state.interpolationNesting--;
        if (state.interpolationNesting < 0) {
          stream.next();
          state.isInterpolating = false;
          return 'punctuation';
        }
      } else if (stream.peek() === '{') {
        state.interpolationNesting++;
      }
      return jsMode.token(stream, state.jsState) || true;
    }
  }

  function caseStatement(stream, state) {
    if (stream.match(/^case\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function when(stream, state) {
    if (stream.match(/^when\b/)) {
      state.javaScriptLine = true;
      state.javaScriptLineExcludesColon = true;
      return KEYWORD;
    }
  }

  function defaultStatement(stream) {
    if (stream.match(/^default\b/)) {
      return KEYWORD;
    }
  }

  function extendsStatement(stream, state) {
    if (stream.match(/^extends?\b/)) {
      state.restOfLine = 'string';
      return KEYWORD;
    }
  }

  function append(stream, state) {
    if (stream.match(/^append\b/)) {
      state.restOfLine = 'variable';
      return KEYWORD;
    }
  }
  function prepend(stream, state) {
    if (stream.match(/^prepend\b/)) {
      state.restOfLine = 'variable';
      return KEYWORD;
    }
  }
  function block(stream, state) {
    if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) {
      state.restOfLine = 'variable';
      return KEYWORD;
    }
  }

  function include(stream, state) {
    if (stream.match(/^include\b/)) {
      state.restOfLine = 'string';
      return KEYWORD;
    }
  }

  function includeFiltered(stream, state) {
    if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) && stream.match('include')) {
      state.isIncludeFiltered = true;
      return KEYWORD;
    }
  }

  function includeFilteredContinued(stream, state) {
    if (state.isIncludeFiltered) {
      var tok = filter(stream, state);
      state.isIncludeFiltered = false;
      state.restOfLine = 'string';
      return tok;
    }
  }

  function mixin(stream, state) {
    if (stream.match(/^mixin\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function call(stream, state) {
    if (stream.match(/^\+([-\w]+)/)) {
      if (!stream.match(/^\( *[-\w]+ *=/, false)) {
        state.javaScriptArguments = true;
        state.javaScriptArgumentsDepth = 0;
      }
      return 'variable';
    }
    if (stream.match(/^\+#{/, false)) {
      stream.next();
      state.mixinCallAfter = true;
      return interpolation(stream, state);
    }
  }
  function callArguments(stream, state) {
    if (state.mixinCallAfter) {
      state.mixinCallAfter = false;
      if (!stream.match(/^\( *[-\w]+ *=/, false)) {
        state.javaScriptArguments = true;
        state.javaScriptArgumentsDepth = 0;
      }
      return true;
    }
  }

  function conditional(stream, state) {
    if (stream.match(/^(if|unless|else if|else)\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function each(stream, state) {
    if (stream.match(/^(- *)?(each|for)\b/)) {
      state.isEach = true;
      return KEYWORD;
    }
  }
  function eachContinued(stream, state) {
    if (state.isEach) {
      if (stream.match(/^ in\b/)) {
        state.javaScriptLine = true;
        state.isEach = false;
        return KEYWORD;
      } else if (stream.sol() || stream.eol()) {
        state.isEach = false;
      } else if (stream.next()) {
        while (!stream.match(/^ in\b/, false) && stream.next());
        return 'variable';
      }
    }
  }

  function whileStatement(stream, state) {
    if (stream.match(/^while\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function tag(stream, state) {
    var captures;
    if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) {
      state.lastTag = captures[1].toLowerCase();
      if (state.lastTag === 'script') {
        state.scriptType = 'application/javascript';
      }
      return 'tag';
    }
  }

  function filter(stream, state) {
    if (stream.match(/^:([\w\-]+)/)) {
      var innerMode;
      if (config && config.innerModes) {
        innerMode = config.innerModes(stream.current().substring(1));
      }
      if (!innerMode) {
        innerMode = stream.current().substring(1);
      }
      if (typeof innerMode === 'string') {
        innerMode = CodeMirror.getMode(config, innerMode);
      }
      setInnerMode(stream, state, innerMode);
      return 'atom';
    }
  }

  function code(stream, state) {
    if (stream.match(/^(!?=|-)/)) {
      state.javaScriptLine = true;
      return 'punctuation';
    }
  }

  function id(stream) {
    if (stream.match(/^#([\w-]+)/)) {
      return ID;
    }
  }

  function className(stream) {
    if (stream.match(/^\.([\w-]+)/)) {
      return CLASS;
    }
  }

  function attrs(stream, state) {
    if (stream.peek() == '(') {
      stream.next();
      state.isAttrs = true;
      state.attrsNest = [];
      state.inAttributeName = true;
      state.attrValue = '';
      state.attributeIsType = false;
      return 'punctuation';
    }
  }

  function attrsContinued(stream, state) {
    if (state.isAttrs) {
      if (ATTRS_NEST[stream.peek()]) {
        state.attrsNest.push(ATTRS_NEST[stream.peek()]);
      }
      if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {
        state.attrsNest.pop();
      } else  if (stream.eat(')')) {
        state.isAttrs = false;
        return 'punctuation';
      }
      if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) {
        if (stream.peek() === '=' || stream.peek() === '!') {
          state.inAttributeName = false;
          state.jsState = CodeMirror.startState(jsMode);
          if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {
            state.attributeIsType = true;
          } else {
            state.attributeIsType = false;
          }
        }
        return 'attribute';
      }

      var tok = jsMode.token(stream, state.jsState);
      if (state.attributeIsType && tok === 'string') {
        state.scriptType = stream.current().toString();
      }
      if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {
        try {
          Function('', 'var x ' + state.attrValue.replace(/,\s*$/, '').replace(/^!/, ''));
          state.inAttributeName = true;
          state.attrValue = '';
          stream.backUp(stream.current().length);
          return attrsContinued(stream, state);
        } catch (ex) {
          //not the end of an attribute
        }
      }
      state.attrValue += stream.current();
      return tok || true;
    }
  }

  function attributesBlock(stream, state) {
    if (stream.match(/^&attributes\b/)) {
      state.javaScriptArguments = true;
      state.javaScriptArgumentsDepth = 0;
      return 'keyword';
    }
  }

  function indent(stream) {
    if (stream.sol() && stream.eatSpace()) {
      return 'indent';
    }
  }

  function comment(stream, state) {
    if (stream.match(/^ *\/\/(-)?([^\n]*)/)) {
      state.indentOf = stream.indentation();
      state.indentToken = 'comment';
      return 'comment';
    }
  }

  function colon(stream) {
    if (stream.match(/^: */)) {
      return 'colon';
    }
  }

  function text(stream, state) {
    if (stream.match(/^(?:\| ?| )([^\n]+)/)) {
      return 'string';
    }
    if (stream.match(/^(<[^\n]*)/, false)) {
      // html string
      setInnerMode(stream, state, 'htmlmixed');
      state.innerModeForLine = true;
      return innerMode(stream, state, true);
    }
  }

  function dot(stream, state) {
    if (stream.eat('.')) {
      var innerMode = null;
      if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {
        innerMode = state.scriptType.toLowerCase().replace(/"|'/g, '');
      } else if (state.lastTag === 'style') {
        innerMode = 'css';
      }
      setInnerMode(stream, state, innerMode);
      return 'dot';
    }
  }

  function fail(stream) {
    stream.next();
    return null;
  }


  function setInnerMode(stream, state, mode) {
    mode = CodeMirror.mimeModes[mode] || mode;
    mode = config.innerModes ? config.innerModes(mode) || mode : mode;
    mode = CodeMirror.mimeModes[mode] || mode;
    mode = CodeMirror.getMode(config, mode);
    state.indentOf = stream.indentation();

    if (mode && mode.name !== 'null') {
      state.innerMode = mode;
    } else {
      state.indentToken = 'string';
    }
  }
  function innerMode(stream, state, force) {
    if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {
      if (state.innerMode) {
        if (!state.innerState) {
          state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {};
        }
        return stream.hideFirstChars(state.indentOf + 2, function () {
          return state.innerMode.token(stream, state.innerState) || true;
        });
      } else {
        stream.skipToEnd();
        return state.indentToken;
      }
    } else if (stream.sol()) {
      state.indentOf = Infinity;
      state.indentToken = null;
      state.innerMode = null;
      state.innerState = null;
    }
  }
  function restOfLine(stream, state) {
    if (stream.sol()) {
      // if restOfLine was set at end of line, ignore it
      state.restOfLine = '';
    }
    if (state.restOfLine) {
      stream.skipToEnd();
      var tok = state.restOfLine;
      state.restOfLine = '';
      return tok;
    }
  }


  function startState() {
    return new State();
  }
  function copyState(state) {
    return state.copy();
  }
  /**
   * Get the next token in the stream
   *
   * @param {Stream} stream
   * @param {State} state
   */
  function nextToken(stream, state) {
    var tok = innerMode(stream, state)
      || restOfLine(stream, state)
      || interpolationContinued(stream, state)
      || includeFilteredContinued(stream, state)
      || eachContinued(stream, state)
      || attrsContinued(stream, state)
      || javaScript(stream, state)
      || javaScriptArguments(stream, state)
      || callArguments(stream, state)

      || yieldStatement(stream, state)
      || doctype(stream, state)
      || interpolation(stream, state)
      || caseStatement(stream, state)
      || when(stream, state)
      || defaultStatement(stream, state)
      || extendsStatement(stream, state)
      || append(stream, state)
      || prepend(stream, state)
      || block(stream, state)
      || include(stream, state)
      || includeFiltered(stream, state)
      || mixin(stream, state)
      || call(stream, state)
      || conditional(stream, state)
      || each(stream, state)
      || whileStatement(stream, state)
      || tag(stream, state)
      || filter(stream, state)
      || code(stream, state)
      || id(stream, state)
      || className(stream, state)
      || attrs(stream, state)
      || attributesBlock(stream, state)
      || indent(stream, state)
      || text(stream, state)
      || comment(stream, state)
      || colon(stream, state)
      || dot(stream, state)
      || fail(stream, state);

    return tok === true ? null : tok;
  }
  return {
    startState: startState,
    copyState: copyState,
    token: nextToken
  };
}, 'javascript', 'css', 'htmlmixed');

CodeMirror.defineMIME('text/x-pug', 'pug');
CodeMirror.defineMIME('text/x-jade', 'pug');

});
lib/codemirror/mode/forth/forth.js000064400000012156147361034410013215 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Author: Aliaksei Chapyzhenka

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function toWordList(words) {
    var ret = [];
    words.split(' ').forEach(function(e){
      ret.push({name: e});
    });
    return ret;
  }

  var coreWordList = toWordList(
'INVERT AND OR XOR\
 2* 2/ LSHIFT RSHIFT\
 0= = 0< < > U< MIN MAX\
 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP\
 >R R> R@\
 + - 1+ 1- ABS NEGATE\
 S>D * M* UM*\
 FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD\
 HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2!\
 ALIGN ALIGNED +! ALLOT\
 CHAR [CHAR] [ ] BL\
 FIND EXECUTE IMMEDIATE COUNT LITERAL STATE\
 ; DOES> >BODY\
 EVALUATE\
 SOURCE >IN\
 <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL\
 FILL MOVE\
 . CR EMIT SPACE SPACES TYPE U. .R U.R\
 ACCEPT\
 TRUE FALSE\
 <> U> 0<> 0>\
 NIP TUCK ROLL PICK\
 2>R 2R@ 2R>\
 WITHIN UNUSED MARKER\
 I J\
 TO\
 COMPILE, [COMPILE]\
 SAVE-INPUT RESTORE-INPUT\
 PAD ERASE\
 2LITERAL DNEGATE\
 D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS\
 M+ M*/ D. D.R 2ROT DU<\
 CATCH THROW\
 FREE RESIZE ALLOCATE\
 CS-PICK CS-ROLL\
 GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER\
 PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER\
 -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL');

  var immediateWordList = toWordList('IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE');

  CodeMirror.defineMode('forth', function() {
    function searchWordList (wordList, word) {
      var i;
      for (i = wordList.length - 1; i >= 0; i--) {
        if (wordList[i].name === word.toUpperCase()) {
          return wordList[i];
        }
      }
      return undefined;
    }
  return {
    startState: function() {
      return {
        state: '',
        base: 10,
        coreWordList: coreWordList,
        immediateWordList: immediateWordList,
        wordList: []
      };
    },
    token: function (stream, stt) {
      var mat;
      if (stream.eatSpace()) {
        return null;
      }
      if (stt.state === '') { // interpretation
        if (stream.match(/^(\]|:NONAME)(\s|$)/i)) {
          stt.state = ' compilation';
          return 'builtin compilation';
        }
        mat = stream.match(/^(\:)\s+(\S+)(\s|$)+/);
        if (mat) {
          stt.wordList.push({name: mat[2].toUpperCase()});
          stt.state = ' compilation';
          return 'def' + stt.state;
        }
        mat = stream.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i);
        if (mat) {
          stt.wordList.push({name: mat[2].toUpperCase()});
          return 'def' + stt.state;
        }
        mat = stream.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/);
        if (mat) {
          return 'builtin' + stt.state;
        }
        } else { // compilation
        // ; [
        if (stream.match(/^(\;|\[)(\s)/)) {
          stt.state = '';
          stream.backUp(1);
          return 'builtin compilation';
        }
        if (stream.match(/^(\;|\[)($)/)) {
          stt.state = '';
          return 'builtin compilation';
        }
        if (stream.match(/^(POSTPONE)\s+\S+(\s|$)+/)) {
          return 'builtin';
        }
      }

      // dynamic wordlist
      mat = stream.match(/^(\S+)(\s+|$)/);
      if (mat) {
        if (searchWordList(stt.wordList, mat[1]) !== undefined) {
          return 'variable' + stt.state;
        }

        // comments
        if (mat[1] === '\\') {
          stream.skipToEnd();
            return 'comment' + stt.state;
          }

          // core words
          if (searchWordList(stt.coreWordList, mat[1]) !== undefined) {
            return 'builtin' + stt.state;
          }
          if (searchWordList(stt.immediateWordList, mat[1]) !== undefined) {
            return 'keyword' + stt.state;
          }

          if (mat[1] === '(') {
            stream.eatWhile(function (s) { return s !== ')'; });
            stream.eat(')');
            return 'comment' + stt.state;
          }

          // // strings
          if (mat[1] === '.(') {
            stream.eatWhile(function (s) { return s !== ')'; });
            stream.eat(')');
            return 'string' + stt.state;
          }
          if (mat[1] === 'S"' || mat[1] === '."' || mat[1] === 'C"') {
            stream.eatWhile(function (s) { return s !== '"'; });
            stream.eat('"');
            return 'string' + stt.state;
          }

          // numbers
          if (mat[1] - 0xfffffffff) {
            return 'number' + stt.state;
          }
          // if (mat[1].match(/^[-+]?[0-9]+\.[0-9]*/)) {
          //     return 'number' + stt.state;
          // }

          return 'atom' + stt.state;
        }
      }
    };
  });
  CodeMirror.defineMIME("text/x-forth", "forth");
});
lib/codemirror/mode/forth/index.html000064400000003367147361034410013536 0ustar00<!doctype html>

<title>CodeMirror: Forth mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel=stylesheet href="../../theme/colorforth.css">
<script src="../../lib/codemirror.js"></script>
<script src="forth.js"></script>
<style>
.CodeMirror {
    font-family: 'Droid Sans Mono', monospace;
    font-size: 14px;
}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Forth</a>
  </ul>
</div>

<article>

<h2>Forth mode</h2>

<form><textarea id="code" name="code">
\ Insertion sort

: cell-  1 cells - ;

: insert ( start end -- start )
  dup @ >r ( r: v )
  begin
    2dup <
  while
    r@ over cell- @ <
  while
    cell-
    dup @ over cell+ !
  repeat then
  r> swap ! ;

: sort ( array len -- )
  1 ?do
    dup i cells + insert
  loop drop ;</textarea>
  </form>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    lineWrapping: true,
    indentUnit: 2,
    tabSize: 2,
    autofocus: true,
    theme: "colorforth",
    mode: "text/x-forth"
  });
</script>

<p>Simple mode that handle Forth-Syntax (<a href="http://en.wikipedia.org/wiki/Forth_%28programming_language%29">Forth on WikiPedia</a>).</p>

<p><strong>MIME types defined:</strong> <code>text/x-forth</code>.</p>

</article>
lib/codemirror/mode/pegjs/pegjs.js000064400000006771147361034410013177 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../javascript/javascript"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../javascript/javascript"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pegjs", function (config) {
  var jsMode = CodeMirror.getMode(config, "javascript");

  function identifier(stream) {
    return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);
  }

  return {
    startState: function () {
      return {
        inString: false,
        stringType: null,
        inComment: false,
        inCharacterClass: false,
        braced: 0,
        lhs: true,
        localState: null
      };
    },
    token: function (stream, state) {
      if (stream)

      //check for state changes
      if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) {
        state.stringType = stream.peek();
        stream.next(); // Skip quote
        state.inString = true; // Update state
      }
      if (!state.inString && !state.inComment && stream.match(/^\/\*/)) {
        state.inComment = true;
      }

      //return state
      if (state.inString) {
        while (state.inString && !stream.eol()) {
          if (stream.peek() === state.stringType) {
            stream.next(); // Skip quote
            state.inString = false; // Clear flag
          } else if (stream.peek() === '\\') {
            stream.next();
            stream.next();
          } else {
            stream.match(/^.[^\\\"\']*/);
          }
        }
        return state.lhs ? "property string" : "string"; // Token style
      } else if (state.inComment) {
        while (state.inComment && !stream.eol()) {
          if (stream.match(/\*\//)) {
            state.inComment = false; // Clear flag
          } else {
            stream.match(/^.[^\*]*/);
          }
        }
        return "comment";
      } else if (state.inCharacterClass) {
          while (state.inCharacterClass && !stream.eol()) {
            if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) {
              state.inCharacterClass = false;
            }
          }
      } else if (stream.peek() === '[') {
        stream.next();
        state.inCharacterClass = true;
        return 'bracket';
      } else if (stream.match(/^\/\//)) {
        stream.skipToEnd();
        return "comment";
      } else if (state.braced || stream.peek() === '{') {
        if (state.localState === null) {
          state.localState = CodeMirror.startState(jsMode);
        }
        var token = jsMode.token(stream, state.localState);
        var text = stream.current();
        if (!token) {
          for (var i = 0; i < text.length; i++) {
            if (text[i] === '{') {
              state.braced++;
            } else if (text[i] === '}') {
              state.braced--;
            }
          };
        }
        return token;
      } else if (identifier(stream)) {
        if (stream.peek() === ':') {
          return 'variable';
        }
        return 'variable-2';
      } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) {
        stream.next();
        return 'bracket';
      } else if (!stream.eatSpace()) {
        stream.next();
      }
      return null;
    }
  };
}, "javascript");

});
lib/codemirror/mode/pegjs/index.html000064400000003542147361034410013517 0ustar00<!doctype html>
<html>
  <head>
    <title>CodeMirror: PEG.js Mode</title>
    <meta charset="utf-8"/>
    <link rel=stylesheet href="../../doc/docs.css">

    <link rel="stylesheet" href="../../lib/codemirror.css">
    <script src="../../lib/codemirror.js"></script>
    <script src="../javascript/javascript.js"></script>
    <script src="pegjs.js"></script>
    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
  </head>
  <body>
    <div id=nav>
      <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

      <ul>
        <li><a href="../../index.html">Home</a>
        <li><a href="../../doc/manual.html">Manual</a>
        <li><a href="https://github.com/codemirror/codemirror">Code</a>
      </ul>
      <ul>
        <li><a href="../index.html">Language modes</a>
        <li><a class=active href="#">PEG.js Mode</a>
      </ul>
    </div>

    <article>
      <h2>PEG.js Mode</h2>
      <form><textarea id="code" name="code">
/*
 * Classic example grammar, which recognizes simple arithmetic expressions like
 * "2*(3+4)". The parser generated from this grammar then computes their value.
 */

start
  = additive

additive
  = left:multiplicative "+" right:additive { return left + right; }
  / multiplicative

multiplicative
  = left:primary "*" right:multiplicative { return left * right; }
  / primary

primary
  = integer
  / "(" additive:additive ")" { return additive; }

integer "integer"
  = digits:[0-9]+ { return parseInt(digits.join(""), 10); }

letter = [a-z]+</textarea></form>
      <script>
        var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
          mode: {name: "pegjs"},
          lineNumbers: true
        });
      </script>
      <h3>The PEG.js Mode</h3>
      <p> Created by Forbes Lindesay.</p>
    </article>
  </body>
</html>
lib/codemirror/mode/sieve/sieve.js000064400000010275147361034410013177 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sieve", function(config) {
  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var keywords = words("if elsif else stop require");
  var atoms = words("true false not");
  var indentUnit = config.indentUnit;

  function tokenBase(stream, state) {

    var ch = stream.next();
    if (ch == "/" && stream.eat("*")) {
      state.tokenize = tokenCComment;
      return tokenCComment(stream, state);
    }

    if (ch === '#') {
      stream.skipToEnd();
      return "comment";
    }

    if (ch == "\"") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }

    if (ch == "(") {
      state._indent.push("(");
      // add virtual angel wings so that editor behaves...
      // ...more sane incase of broken brackets
      state._indent.push("{");
      return null;
    }

    if (ch === "{") {
      state._indent.push("{");
      return null;
    }

    if (ch == ")")  {
      state._indent.pop();
      state._indent.pop();
    }

    if (ch === "}") {
      state._indent.pop();
      return null;
    }

    if (ch == ",")
      return null;

    if (ch == ";")
      return null;


    if (/[{}\(\),;]/.test(ch))
      return null;

    // 1*DIGIT "K" / "M" / "G"
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\d]/);
      stream.eat(/[KkMmGg]/);
      return "number";
    }

    // ":" (ALPHA / "_") *(ALPHA / DIGIT / "_")
    if (ch == ":") {
      stream.eatWhile(/[a-zA-Z_]/);
      stream.eatWhile(/[a-zA-Z0-9_]/);

      return "operator";
    }

    stream.eatWhile(/\w/);
    var cur = stream.current();

    // "text:" *(SP / HTAB) (hash-comment / CRLF)
    // *(multiline-literal / multiline-dotstart)
    // "." CRLF
    if ((cur == "text") && stream.eat(":"))
    {
      state.tokenize = tokenMultiLineString;
      return "string";
    }

    if (keywords.propertyIsEnumerable(cur))
      return "keyword";

    if (atoms.propertyIsEnumerable(cur))
      return "atom";

    return null;
  }

  function tokenMultiLineString(stream, state)
  {
    state._multiLineString = true;
    // the first line is special it may contain a comment
    if (!stream.sol()) {
      stream.eatSpace();

      if (stream.peek() == "#") {
        stream.skipToEnd();
        return "comment";
      }

      stream.skipToEnd();
      return "string";
    }

    if ((stream.next() == ".")  && (stream.eol()))
    {
      state._multiLineString = false;
      state.tokenize = tokenBase;
    }

    return "string";
  }

  function tokenCComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == "/") {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped)
          break;
        escaped = !escaped && ch == "\\";
      }
      if (!escaped) state.tokenize = tokenBase;
      return "string";
    };
  }

  return {
    startState: function(base) {
      return {tokenize: tokenBase,
              baseIndent: base || 0,
              _indent: []};
    },

    token: function(stream, state) {
      if (stream.eatSpace())
        return null;

      return (state.tokenize || tokenBase)(stream, state);;
    },

    indent: function(state, _textAfter) {
      var length = state._indent.length;
      if (_textAfter && (_textAfter[0] == "}"))
        length--;

      if (length <0)
        length = 0;

      return length * indentUnit;
    },

    electricChars: "}"
  };
});

CodeMirror.defineMIME("application/sieve", "sieve");

});
lib/codemirror/mode/sieve/index.html000064400000004437147361034410013526 0ustar00<!doctype html>

<title>CodeMirror: Sieve (RFC5228) mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="sieve.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Sieve (RFC5228)</a>
  </ul>
</div>

<article>
<h2>Sieve (RFC5228) mode</h2>
<form><textarea id="code" name="code">
#
# Example Sieve Filter
# Declare any optional features or extension used by the script
#

require ["fileinto", "reject"];

#
# Reject any large messages (note that the four leading dots get
# "stuffed" to three)
#
if size :over 1M
{
  reject text:
Please do not send me large attachments.
Put your file on a server and send me the URL.
Thank you.
.... Fred
.
;
  stop;
}

#
# Handle messages from known mailing lists
# Move messages from IETF filter discussion list to filter folder
#
if header :is "Sender" "owner-ietf-mta-filters@imc.org"
{
  fileinto "filter";  # move to "filter" folder
}
#
# Keep all messages to or from people in my company
#
elsif address :domain :is ["From", "To"] "example.com"
{
  keep;               # keep in "In" folder
}

#
# Try and catch unsolicited email.  If a message is not to me,
# or it contains a subject known to be spam, file it away.
#
elsif anyof (not address :all :contains
               ["To", "Cc", "Bcc"] "me@example.com",
             header :matches "subject"
               ["*make*money*fast*", "*university*dipl*mas*"])
{
  # If message header does not contain my address,
  # it's from a list.
  fileinto "spam";   # move to "spam" folder
}
else
{
  # Move all other (non-company) mail to "personal"
  # folder.
  fileinto "personal";
}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>application/sieve</code>.</p>

  </article>
lib/codemirror/mode/smarty/index.html000064400000007605147361034410013732 0ustar00<!doctype html>

<title>CodeMirror: Smarty mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../xml/xml.js"></script>
<script src="smarty.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Smarty</a>
  </ul>
</div>

<article>
<h2>Smarty mode</h2>
<form><textarea id="code" name="code">
{extends file="parent.tpl"}
{include file="template.tpl"}

{* some example Smarty content *}
{if isset($name) && $name == 'Blog'}
  This is a {$var}.
  {$integer = 451}, {$array[] = "a"}, {$stringvar = "string"}
  {assign var='bob' value=$var.prop}
{elseif $name == $foo}
  {function name=menu level=0}
    {foreach $data as $entry}
      {if is_array($entry)}
        - {$entry@key}
        {menu data=$entry level=$level+1}
      {else}
        {$entry}
      {/if}
    {/foreach}
  {/function}
{/if}</textarea></form>

<p>Mode for Smarty version 2 or 3, which allows for custom delimiter tags.</p>

<p>Several configuration parameters are supported:</p>

<ul>
  <li><code>leftDelimiter</code> and <code>rightDelimiter</code>,
  which should be strings that determine where the Smarty syntax
  starts and ends.</li>
  <li><code>version</code>, which should be 2 or 3.</li>
  <li><code>baseMode</code>, which can be a mode spec
  like <code>"text/html"</code> to set a different background mode.</li>
</ul>

<p><strong>MIME types defined:</strong> <code>text/x-smarty</code></p>

<h3>Smarty 2, custom delimiters</h3>

<form><textarea id="code2" name="code2">
{--extends file="parent.tpl"--}
{--include file="template.tpl"--}

{--* some example Smarty content *--}
{--if isset($name) && $name == 'Blog'--}
  This is a {--$var--}.
  {--$integer = 451--}, {--$array[] = "a"--}, {--$stringvar = "string"--}
  {--assign var='bob' value=$var.prop--}
{--elseif $name == $foo--}
  {--function name=menu level=0--}
    {--foreach $data as $entry--}
      {--if is_array($entry)--}
        - {--$entry@key--}
        {--menu data=$entry level=$level+1--}
      {--else--}
        {--$entry--}
      {--/if--}
    {--/foreach--}
  {--/function--}
{--/if--}</textarea></form>

<h3>Smarty 3</h3>

<textarea id="code3" name="code3">
Nested tags {$foo={counter one=1 two={inception}}+3} are now valid in Smarty 3.

<script>
function test() {
  console.log("Smarty 3 permits single curly braces followed by whitespace to NOT slip into Smarty mode.");
}
</script>

{assign var=foo value=[1,2,3]}
{assign var=foo value=['y'=>'yellow','b'=>'blue']}
{assign var=foo value=[1,[9,8],3]}

{$foo=$bar+2} {* a comment *}
{$foo.bar=1}  {* another comment *}
{$foo = myfunct(($x+$y)*3)}
{$foo = strlen($bar)}
{$foo.bar.baz=1}, {$foo[]=1}

Smarty "dot" syntax (note: embedded {} are used to address ambiguities):

{$foo.a.b.c}      => $foo['a']['b']['c']
{$foo.a.$b.c}     => $foo['a'][$b]['c']
{$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c']
{$foo.a.{$b.c}}   => $foo['a'][$b['c']]

{$object->method1($x)->method2($y)}</textarea>

<script>
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
  lineNumbers: true,
  mode: "smarty"
});
var editor = CodeMirror.fromTextArea(document.getElementById("code2"), {
  lineNumbers: true,
  mode: {
    name: "smarty",
    leftDelimiter: "{--",
    rightDelimiter: "--}"
  }
});
var editor = CodeMirror.fromTextArea(document.getElementById("code3"), {
  lineNumbers: true,
  mode: {name: "smarty", version: 3, baseMode: "text/html"}
});
</script>

</article>
lib/codemirror/mode/smarty/smarty.js000064400000015254147361034410013611 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/**
 * Smarty 2 and 3 mode.
 */

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("smarty", function(config, parserConf) {
    var rightDelimiter = parserConf.rightDelimiter || "}";
    var leftDelimiter = parserConf.leftDelimiter || "{";
    var version = parserConf.version || 2;
    var baseMode = CodeMirror.getMode(config, parserConf.baseMode || "null");

    var keyFunctions = ["debug", "extends", "function", "include", "literal"];
    var regs = {
      operatorChars: /[+\-*&%=<>!?]/,
      validIdentifier: /[a-zA-Z0-9_]/,
      stringChar: /['"]/
    };

    var last;
    function cont(style, lastType) {
      last = lastType;
      return style;
    }

    function chain(stream, state, parser) {
      state.tokenize = parser;
      return parser(stream, state);
    }

    // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode
    function doesNotCount(stream, pos) {
      if (pos == null) pos = stream.pos;
      return version === 3 && leftDelimiter == "{" &&
        (pos == stream.string.length || /\s/.test(stream.string.charAt(pos)));
    }

    function tokenTop(stream, state) {
      var string = stream.string;
      for (var scan = stream.pos;;) {
        var nextMatch = string.indexOf(leftDelimiter, scan);
        scan = nextMatch + leftDelimiter.length;
        if (nextMatch == -1 || !doesNotCount(stream, nextMatch + leftDelimiter.length)) break;
      }
      if (nextMatch == stream.pos) {
        stream.match(leftDelimiter);
        if (stream.eat("*")) {
          return chain(stream, state, tokenBlock("comment", "*" + rightDelimiter));
        } else {
          state.depth++;
          state.tokenize = tokenSmarty;
          last = "startTag";
          return "tag";
        }
      }

      if (nextMatch > -1) stream.string = string.slice(0, nextMatch);
      var token = baseMode.token(stream, state.base);
      if (nextMatch > -1) stream.string = string;
      return token;
    }

    // parsing Smarty content
    function tokenSmarty(stream, state) {
      if (stream.match(rightDelimiter, true)) {
        if (version === 3) {
          state.depth--;
          if (state.depth <= 0) {
            state.tokenize = tokenTop;
          }
        } else {
          state.tokenize = tokenTop;
        }
        return cont("tag", null);
      }

      if (stream.match(leftDelimiter, true)) {
        state.depth++;
        return cont("tag", "startTag");
      }

      var ch = stream.next();
      if (ch == "$") {
        stream.eatWhile(regs.validIdentifier);
        return cont("variable-2", "variable");
      } else if (ch == "|") {
        return cont("operator", "pipe");
      } else if (ch == ".") {
        return cont("operator", "property");
      } else if (regs.stringChar.test(ch)) {
        state.tokenize = tokenAttribute(ch);
        return cont("string", "string");
      } else if (regs.operatorChars.test(ch)) {
        stream.eatWhile(regs.operatorChars);
        return cont("operator", "operator");
      } else if (ch == "[" || ch == "]") {
        return cont("bracket", "bracket");
      } else if (ch == "(" || ch == ")") {
        return cont("bracket", "operator");
      } else if (/\d/.test(ch)) {
        stream.eatWhile(/\d/);
        return cont("number", "number");
      } else {

        if (state.last == "variable") {
          if (ch == "@") {
            stream.eatWhile(regs.validIdentifier);
            return cont("property", "property");
          } else if (ch == "|") {
            stream.eatWhile(regs.validIdentifier);
            return cont("qualifier", "modifier");
          }
        } else if (state.last == "pipe") {
          stream.eatWhile(regs.validIdentifier);
          return cont("qualifier", "modifier");
        } else if (state.last == "whitespace") {
          stream.eatWhile(regs.validIdentifier);
          return cont("attribute", "modifier");
        } if (state.last == "property") {
          stream.eatWhile(regs.validIdentifier);
          return cont("property", null);
        } else if (/\s/.test(ch)) {
          last = "whitespace";
          return null;
        }

        var str = "";
        if (ch != "/") {
          str += ch;
        }
        var c = null;
        while (c = stream.eat(regs.validIdentifier)) {
          str += c;
        }
        for (var i=0, j=keyFunctions.length; i<j; i++) {
          if (keyFunctions[i] == str) {
            return cont("keyword", "keyword");
          }
        }
        if (/\s/.test(ch)) {
          return null;
        }
        return cont("tag", "tag");
      }
    }

    function tokenAttribute(quote) {
      return function(stream, state) {
        var prevChar = null;
        var currChar = null;
        while (!stream.eol()) {
          currChar = stream.peek();
          if (stream.next() == quote && prevChar !== '\\') {
            state.tokenize = tokenSmarty;
            break;
          }
          prevChar = currChar;
        }
        return "string";
      };
    }

    function tokenBlock(style, terminator) {
      return function(stream, state) {
        while (!stream.eol()) {
          if (stream.match(terminator)) {
            state.tokenize = tokenTop;
            break;
          }
          stream.next();
        }
        return style;
      };
    }

    return {
      startState: function() {
        return {
          base: CodeMirror.startState(baseMode),
          tokenize: tokenTop,
          last: null,
          depth: 0
        };
      },
      copyState: function(state) {
        return {
          base: CodeMirror.copyState(baseMode, state.base),
          tokenize: state.tokenize,
          last: state.last,
          depth: state.depth
        };
      },
      innerMode: function(state) {
        if (state.tokenize == tokenTop)
          return {mode: baseMode, state: state.base};
      },
      token: function(stream, state) {
        var style = state.tokenize(stream, state);
        state.last = last;
        return style;
      },
      indent: function(state, text) {
        if (state.tokenize == tokenTop && baseMode.indent)
          return baseMode.indent(state.base, text);
        else
          return CodeMirror.Pass;
      },
      blockCommentStart: leftDelimiter + "*",
      blockCommentEnd: "*" + rightDelimiter
    };
  });

  CodeMirror.defineMIME("text/x-smarty", "smarty");
});
lib/codemirror/mode/mathematica/mathematica.js000064400000012754147361034410015507 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Mathematica mode copyright (c) 2015 by Calin Barbat
// Based on code by Patrick Scheibe (halirutan)
// See: https://github.com/halirutan/Mathematica-Source-Highlighting/tree/master/src/lang-mma.js

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('mathematica', function(_config, _parserConfig) {

  // used pattern building blocks
  var Identifier = '[a-zA-Z\\$][a-zA-Z0-9\\$]*';
  var pBase      = "(?:\\d+)";
  var pFloat     = "(?:\\.\\d+|\\d+\\.\\d*|\\d+)";
  var pFloatBase = "(?:\\.\\w+|\\w+\\.\\w*|\\w+)";
  var pPrecision = "(?:`(?:`?"+pFloat+")?)";

  // regular expressions
  var reBaseForm        = new RegExp('(?:'+pBase+'(?:\\^\\^'+pFloatBase+pPrecision+'?(?:\\*\\^[+-]?\\d+)?))');
  var reFloatForm       = new RegExp('(?:' + pFloat + pPrecision + '?(?:\\*\\^[+-]?\\d+)?)');
  var reIdInContext     = new RegExp('(?:`?)(?:' + Identifier + ')(?:`(?:' + Identifier + '))*(?:`?)');

  function tokenBase(stream, state) {
    var ch;

    // get next character
    ch = stream.next();

    // string
    if (ch === '"') {
      state.tokenize = tokenString;
      return state.tokenize(stream, state);
    }

    // comment
    if (ch === '(') {
      if (stream.eat('*')) {
        state.commentLevel++;
        state.tokenize = tokenComment;
        return state.tokenize(stream, state);
      }
    }

    // go back one character
    stream.backUp(1);

    // look for numbers
    // Numbers in a baseform
    if (stream.match(reBaseForm, true, false)) {
      return 'number';
    }

    // Mathematica numbers. Floats (1.2, .2, 1.) can have optionally a precision (`float) or an accuracy definition
    // (``float). Note: while 1.2` is possible 1.2`` is not. At the end an exponent (float*^+12) can follow.
    if (stream.match(reFloatForm, true, false)) {
      return 'number';
    }

    /* In[23] and Out[34] */
    if (stream.match(/(?:In|Out)\[[0-9]*\]/, true, false)) {
      return 'atom';
    }

    // usage
    if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::usage)/, true, false)) {
      return 'meta';
    }

    // message
    if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/, true, false)) {
      return 'string-2';
    }

    // this makes a look-ahead match for something like variable:{_Integer}
    // the match is then forwarded to the mma-patterns tokenizer.
    if (stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/, true, false)) {
      return 'variable-2';
    }

    // catch variables which are used together with Blank (_), BlankSequence (__) or BlankNullSequence (___)
    // Cannot start with a number, but can have numbers at any other position. Examples
    // blub__Integer, a1_, b34_Integer32
    if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) {
      return 'variable-2';
    }
    if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/, true, false)) {
      return 'variable-2';
    }
    if (stream.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) {
      return 'variable-2';
    }

    // Named characters in Mathematica, like \[Gamma].
    if (stream.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/, true, false)) {
      return 'variable-3';
    }

    // Match all braces separately
    if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) {
      return 'bracket';
    }

    // Catch Slots (#, ##, #3, ##9 and the V10 named slots #name). I have never seen someone using more than one digit after #, so we match
    // only one.
    if (stream.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/, true, false)) {
      return 'variable-2';
    }

    // Literals like variables, keywords, functions
    if (stream.match(reIdInContext, true, false)) {
      return 'keyword';
    }

    // operators. Note that operators like @@ or /; are matched separately for each symbol.
    if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) {
      return 'operator';
    }

    // everything else is an error
    stream.next(); // advance the stream.
    return 'error';
  }

  function tokenString(stream, state) {
    var next, end = false, escaped = false;
    while ((next = stream.next()) != null) {
      if (next === '"' && !escaped) {
        end = true;
        break;
      }
      escaped = !escaped && next === '\\';
    }
    if (end && !escaped) {
      state.tokenize = tokenBase;
    }
    return 'string';
  };

  function tokenComment(stream, state) {
    var prev, next;
    while(state.commentLevel > 0 && (next = stream.next()) != null) {
      if (prev === '(' && next === '*') state.commentLevel++;
      if (prev === '*' && next === ')') state.commentLevel--;
      prev = next;
    }
    if (state.commentLevel <= 0) {
      state.tokenize = tokenBase;
    }
    return 'comment';
  }

  return {
    startState: function() {return {tokenize: tokenBase, commentLevel: 0};},
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    },
    blockCommentStart: "(*",
    blockCommentEnd: "*)"
  };
});

CodeMirror.defineMIME('text/x-mathematica', {
  name: 'mathematica'
});

});
lib/codemirror/mode/mathematica/index.html000064400000004316147361034410014664 0ustar00<!doctype html>

<title>CodeMirror: Mathematica mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel=stylesheet href=../../lib/codemirror.css>
<script src=../../lib/codemirror.js></script>
<script src=../../addon/edit/matchbrackets.js></script>
<script src=mathematica.js></script>
<style type=text/css>
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Mathematica</a>
  </ul>
</div>

<article>
<h2>Mathematica mode</h2>


<textarea id="mathematicaCode">
(* example Mathematica code *)
(* Dualisiert wird anhand einer Polarität an einer
   Quadrik $x^t Q x = 0$ mit regulärer Matrix $Q$ (also
   mit $det(Q) \neq 0$), z.B. die Identitätsmatrix.
   $p$ ist eine Liste von Polynomen - ein Ideal. *)
dualize::"singular" = "Q must be regular: found Det[Q]==0.";
dualize[ Q_, p_ ] := Block[
    { m, n, xv, lv, uv, vars, polys, dual },
    If[Det[Q] == 0,
      Message[dualize::"singular"],
      m = Length[p];
      n = Length[Q] - 1;
      xv = Table[Subscript[x, i], {i, 0, n}];
      lv = Table[Subscript[l, i], {i, 1, m}];
      uv = Table[Subscript[u, i], {i, 0, n}];
      (* Konstruiere Ideal polys. *)
      If[m == 0,
        polys = Q.uv,
        polys = Join[p, Q.uv - Transpose[Outer[D, p, xv]].lv]
        ];
      (* Eliminiere die ersten n + 1 + m Variablen xv und lv
         aus dem Ideal polys. *)
      vars = Join[xv, lv];
      dual = GroebnerBasis[polys, uv, vars];
      (* Ersetze u mit x im Ergebnis. *)
      ReplaceAll[dual, Rule[u, x]]
      ]
    ]
</textarea>

<script>
  var mathematicaEditor = CodeMirror.fromTextArea(document.getElementById('mathematicaCode'), {
    mode: 'text/x-mathematica',
    lineNumbers: true,
    matchBrackets: true
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-mathematica</code> (Mathematica).</p>
</article>
lib/codemirror/mode/powershell/test.js000064400000005517147361034410014117 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "powershell");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT('comment', '[number 1][comment # A]');
  MT('comment_multiline', '[number 1][comment <#]',
    '[comment ABC]',
  '[comment #>][number 2]');

  [
    '0', '1234',
    '12kb', '12mb', '12Gb', '12Tb', '12PB', '12L', '12D', '12lkb', '12dtb',
    '1.234', '1.234e56', '1.', '1.e2', '.2', '.2e34',
    '1.2MB', '1.kb', '.1dTB', '1.e1gb', '.2', '.2e34',
    '0x1', '0xabcdef', '0x3tb', '0xelmb'
  ].forEach(function(number) {
    MT("number_" + number, "[number " + number + "]");
  });

  MT('string_literal_escaping', "[string 'a''']");
  MT('string_literal_variable', "[string 'a $x']");
  MT('string_escaping_1', '[string "a `""]');
  MT('string_escaping_2', '[string "a """]');
  MT('string_variable_escaping', '[string "a `$x"]');
  MT('string_variable', '[string "a ][variable-2 $x][string  b"]');
  MT('string_variable_spaces', '[string "a ][variable-2 ${x y}][string  b"]');
  MT('string_expression', '[string "a ][punctuation jQuery(][variable-2 $x][operator +][number 3][punctuation )][string  b"]');
  MT('string_expression_nested', '[string "A][punctuation jQuery(][string "a][punctuation jQuery(][string "w"][punctuation )][string b"][punctuation )][string B"]');

  MT('string_heredoc', '[string @"]',
    '[string abc]',
  '[string "@]');
  MT('string_heredoc_quotes', '[string @"]',
    '[string abc "\']',
  '[string "@]');
  MT('string_heredoc_variable', '[string @"]',
    '[string a ][variable-2 $x][string  b]',
  '[string "@]');
  MT('string_heredoc_nested_string', '[string @"]',
    '[string a][punctuation jQuery(][string "w"][punctuation )][string b]',
  '[string "@]');
  MT('string_heredoc_literal_quotes', "[string @']",
    '[string abc "\']',
  "[string '@]");

  MT('array', "[punctuation @(][string 'a'][punctuation ,][string 'b'][punctuation )]");
  MT('hash', "[punctuation @{][string 'key'][operator :][string 'value'][punctuation }]");

  MT('variable', "[variable-2 $test]");
  MT('variable_global',  "[variable-2 $global:test]");
  MT('variable_spaces',  "[variable-2 ${test test}]");
  MT('operator_splat',   "[variable-2 @x]");
  MT('variable_builtin', "[builtin $ErrorActionPreference]");
  MT('variable_builtin_symbols', "[builtin $$]");

  MT('operator', "[operator +]");
  MT('operator_unary', "[operator +][number 3]");
  MT('operator_long', "[operator -match]");

  [
    '(', ')', '[[', ']]', '{', '}', ',', '`', ';', '.'
  ].forEach(function(punctuation) {
    MT("punctuation_" + punctuation.replace(/^[\[\]]/,''), "[punctuation " + punctuation + "]");
  });

  MT('keyword', "[keyword if]");

  MT('call_builtin', "[builtin Get-ChildItem]");
})();
lib/codemirror/mode/powershell/powershell.js000064400000031054147361034410015317 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  'use strict';
  if (typeof exports == 'object' && typeof module == 'object') // CommonJS
    mod(require('codemirror'));
  else if (typeof define == 'function' && define.amd) // AMD
    define(['codemirror'], mod);
  else // Plain browser env
    mod(window.CodeMirror);
})(function(CodeMirror) {
'use strict';

CodeMirror.defineMode('powershell', function() {
  function buildRegexp(patterns, options) {
    options = options || {};
    var prefix = options.prefix !== undefined ? options.prefix : '^';
    var suffix = options.suffix !== undefined ? options.suffix : '\\b';

    for (var i = 0; i < patterns.length; i++) {
      if (patterns[i] instanceof RegExp) {
        patterns[i] = patterns[i].source;
      }
      else {
        patterns[i] = patterns[i].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
      }
    }

    return new RegExp(prefix + '(' + patterns.join('|') + ')' + suffix, 'i');
  }

  var notCharacterOrDash = '(?=[^A-Za-z\\d\\-_]|$)';
  var varNames = /[\w\-:]/
  var keywords = buildRegexp([
    /begin|break|catch|continue|data|default|do|dynamicparam/,
    /else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/,
    /param|process|return|switch|throw|trap|try|until|where|while/
  ], { suffix: notCharacterOrDash });

  var punctuation = /[\[\]{},;`\.]|@[({]/;
  var wordOperators = buildRegexp([
    'f',
    /b?not/,
    /[ic]?split/, 'join',
    /is(not)?/, 'as',
    /[ic]?(eq|ne|[gl][te])/,
    /[ic]?(not)?(like|match|contains)/,
    /[ic]?replace/,
    /b?(and|or|xor)/
  ], { prefix: '-' });
  var symbolOperators = /[+\-*\/%]=|\+\+|--|\.\.|[+\-*&^%:=!|\/]|<(?!#)|(?!#)>/;
  var operators = buildRegexp([wordOperators, symbolOperators], { suffix: '' });

  var numbers = /^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i;

  var identifiers = /^[A-Za-z\_][A-Za-z\-\_\d]*\b/;

  var symbolBuiltins = /[A-Z]:|%|\?/i;
  var namedBuiltins = buildRegexp([
    /Add-(Computer|Content|History|Member|PSSnapin|Type)/,
    /Checkpoint-Computer/,
    /Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,
    /Compare-Object/,
    /Complete-Transaction/,
    /Connect-PSSession/,
    /ConvertFrom-(Csv|Json|SecureString|StringData)/,
    /Convert-Path/,
    /ConvertTo-(Csv|Html|Json|SecureString|Xml)/,
    /Copy-Item(Property)?/,
    /Debug-Process/,
    /Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,
    /Disconnect-PSSession/,
    /Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,
    /(Enter|Exit)-PSSession/,
    /Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,
    /ForEach-Object/,
    /Format-(Custom|List|Table|Wide)/,
    new RegExp('Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential'
      + '|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job'
      + '|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration'
      + '|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)'),
    /Group-Object/,
    /Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,
    /ImportSystemModules/,
    /Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,
    /Join-Path/,
    /Limit-EventLog/,
    /Measure-(Command|Object)/,
    /Move-Item(Property)?/,
    new RegExp('New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile'
      + '|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)'),
    /Out-(Default|File|GridView|Host|Null|Printer|String)/,
    /Pause/,
    /(Pop|Push)-Location/,
    /Read-Host/,
    /Receive-(Job|PSSession)/,
    /Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,
    /Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,
    /Rename-(Computer|Item(Property)?)/,
    /Reset-ComputerMachinePassword/,
    /Resolve-Path/,
    /Restart-(Computer|Service)/,
    /Restore-Computer/,
    /Resume-(Job|Service)/,
    /Save-Help/,
    /Select-(Object|String|Xml)/,
    /Send-MailMessage/,
    new RegExp('Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug' +
               '|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)'),
    /Show-(Command|ControlPanelItem|EventLog)/,
    /Sort-Object/,
    /Split-Path/,
    /Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,
    /Stop-(Computer|Job|Process|Service|Transcript)/,
    /Suspend-(Job|Service)/,
    /TabExpansion2/,
    /Tee-Object/,
    /Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,
    /Trace-Command/,
    /Unblock-File/,
    /Undo-Transaction/,
    /Unregister-(Event|PSSessionConfiguration)/,
    /Update-(FormatData|Help|List|TypeData)/,
    /Use-Transaction/,
    /Wait-(Event|Job|Process)/,
    /Where-Object/,
    /Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,
    /cd|help|mkdir|more|oss|prompt/,
    /ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,
    /echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,
    /group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,
    /measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,
    /rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,
    /sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/
  ], { prefix: '', suffix: '' });
  var variableBuiltins = buildRegexp([
    /[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,
    /FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,
    /MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,
    /PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,
    /PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,
    /WarningPreference|WhatIfPreference/,

    /Event|EventArgs|EventSubscriber|Sender/,
    /Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,
    /true|false|null/
  ], { prefix: '\\$', suffix: '' });

  var builtins = buildRegexp([symbolBuiltins, namedBuiltins, variableBuiltins], { suffix: notCharacterOrDash });

  var grammar = {
    keyword: keywords,
    number: numbers,
    operator: operators,
    builtin: builtins,
    punctuation: punctuation,
    identifier: identifiers
  };

  // tokenizers
  function tokenBase(stream, state) {
    // Handle Comments
    //var ch = stream.peek();

    var parent = state.returnStack[state.returnStack.length - 1];
    if (parent && parent.shouldReturnFrom(state)) {
      state.tokenize = parent.tokenize;
      state.returnStack.pop();
      return state.tokenize(stream, state);
    }

    if (stream.eatSpace()) {
      return null;
    }

    if (stream.eat('(')) {
      state.bracketNesting += 1;
      return 'punctuation';
    }

    if (stream.eat(')')) {
      state.bracketNesting -= 1;
      return 'punctuation';
    }

    for (var key in grammar) {
      if (stream.match(grammar[key])) {
        return key;
      }
    }

    var ch = stream.next();

    // single-quote string
    if (ch === "'") {
      return tokenSingleQuoteString(stream, state);
    }

    if (ch === '$') {
      return tokenVariable(stream, state);
    }

    // double-quote string
    if (ch === '"') {
      return tokenDoubleQuoteString(stream, state);
    }

    if (ch === '<' && stream.eat('#')) {
      state.tokenize = tokenComment;
      return tokenComment(stream, state);
    }

    if (ch === '#') {
      stream.skipToEnd();
      return 'comment';
    }

    if (ch === '@') {
      var quoteMatch = stream.eat(/["']/);
      if (quoteMatch && stream.eol()) {
        state.tokenize = tokenMultiString;
        state.startQuote = quoteMatch[0];
        return tokenMultiString(stream, state);
      } else if (stream.peek().match(/[({]/)) {
        return 'punctuation';
      } else if (stream.peek().match(varNames)) {
        // splatted variable
        return tokenVariable(stream, state);
      }
    }
    return 'error';
  }

  function tokenSingleQuoteString(stream, state) {
    var ch;
    while ((ch = stream.peek()) != null) {
      stream.next();

      if (ch === "'" && !stream.eat("'")) {
        state.tokenize = tokenBase;
        return 'string';
      }
    }

    return 'error';
  }

  function tokenDoubleQuoteString(stream, state) {
    var ch;
    while ((ch = stream.peek()) != null) {
      if (ch === '$') {
        state.tokenize = tokenStringInterpolation;
        return 'string';
      }

      stream.next();
      if (ch === '`') {
        stream.next();
        continue;
      }

      if (ch === '"' && !stream.eat('"')) {
        state.tokenize = tokenBase;
        return 'string';
      }
    }

    return 'error';
  }

  function tokenStringInterpolation(stream, state) {
    return tokenInterpolation(stream, state, tokenDoubleQuoteString);
  }

  function tokenMultiStringReturn(stream, state) {
    state.tokenize = tokenMultiString;
    state.startQuote = '"'
    return tokenMultiString(stream, state);
  }

  function tokenHereStringInterpolation(stream, state) {
    return tokenInterpolation(stream, state, tokenMultiStringReturn);
  }

  function tokenInterpolation(stream, state, parentTokenize) {
    if (stream.match('jQuery(')) {
      var savedBracketNesting = state.bracketNesting;
      state.returnStack.push({
        /*jshint loopfunc:true */
        shouldReturnFrom: function(state) {
          return state.bracketNesting === savedBracketNesting;
        },
        tokenize: parentTokenize
      });
      state.tokenize = tokenBase;
      state.bracketNesting += 1;
      return 'punctuation';
    } else {
      stream.next();
      state.returnStack.push({
        shouldReturnFrom: function() { return true; },
        tokenize: parentTokenize
      });
      state.tokenize = tokenVariable;
      return state.tokenize(stream, state);
    }
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == '>') {
          state.tokenize = tokenBase;
          break;
      }
      maybeEnd = (ch === '#');
    }
    return 'comment';
  }

  function tokenVariable(stream, state) {
    var ch = stream.peek();
    if (stream.eat('{')) {
      state.tokenize = tokenVariableWithBraces;
      return tokenVariableWithBraces(stream, state);
    } else if (ch != undefined && ch.match(varNames)) {
      stream.eatWhile(varNames);
      state.tokenize = tokenBase;
      return 'variable-2';
    } else {
      state.tokenize = tokenBase;
      return 'error';
    }
  }

  function tokenVariableWithBraces(stream, state) {
    var ch;
    while ((ch = stream.next()) != null) {
      if (ch === '}') {
        state.tokenize = tokenBase;
        break;
      }
    }
    return 'variable-2';
  }

  function tokenMultiString(stream, state) {
    var quote = state.startQuote;
    if (stream.sol() && stream.match(new RegExp(quote + '@'))) {
      state.tokenize = tokenBase;
    }
    else if (quote === '"') {
      while (!stream.eol()) {
        var ch = stream.peek();
        if (ch === '$') {
          state.tokenize = tokenHereStringInterpolation;
          return 'string';
        }

        stream.next();
        if (ch === '`') {
          stream.next();
        }
      }
    }
    else {
      stream.skipToEnd();
    }

    return 'string';
  }

  var external = {
    startState: function() {
      return {
        returnStack: [],
        bracketNesting: 0,
        tokenize: tokenBase
      };
    },

    token: function(stream, state) {
      return state.tokenize(stream, state);
    },

    blockCommentStart: '<#',
    blockCommentEnd: '#>',
    lineComment: '#',
    fold: 'brace'
  };
  return external;
});

CodeMirror.defineMIME('application/x-powershell', 'powershell');
});
lib/codemirror/mode/powershell/index.html000064400000016333147361034410014575 0ustar00<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>CodeMirror: Powershell mode</title>
    <link rel="stylesheet" href="../../doc/docs.css">
    <link rel="stylesheet" href="../../lib/codemirror.css">
    <script src="../../lib/codemirror.js"></script>
    <script src="powershell.js"></script>
    <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
  </head>
  <body>
    <div id=nav>
      <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

      <ul>
        <li><a href="../../index.html">Home</a>
        <li><a href="../../doc/manual.html">Manual</a>
        <li><a href="https://github.com/codemirror/codemirror">Code</a>
      </ul>
      <ul>
        <li><a href="../index.html">Language modes</a>
        <li><a class=active href="#">JavaScript</a>
      </ul>
    </div>
    <article>
      <h2>PowerShell mode</h2>

      <div><textarea id="code" name="code">
# Number Literals
0 12345
12kb 12mb 12gB 12Tb 12PB 12L 12D 12lkb 12dtb
1.234 1.234e56 1. 1.e2 .2 .2e34
1.2MB 1.kb .1dTb 1.e1gb
0x1 0xabcdef 0x3tb 0xelmb

# String Literals
'Literal escaping'''
'Literal $variable'
"Escaping 1`""
"Escaping 2"""
"Escaped `$variable"
"Text, $variable and more text"
"Text, ${variable with spaces} and more text."
"Text, jQuery($expression + 3) and more text."
"Text, jQuery("interpolation jQuery("inception")") and more text."

@"
Multiline
string
"@
# --
@"
Multiline
string with quotes "'
"@
# --
@'
Multiline literal
string with quotes "'
'@

# Array and Hash literals
@( 'a','b','c' )
@{ 'key': 'value' }

# Variables
$Variable = 5
$global:variable = 5
${Variable with spaces} = 5

# Operators
= += -= *= /= %=
++ -- .. -f * / % + -
-not ! -bnot
-split -isplit -csplit
-join
-is -isnot -as
-eq -ieq -ceq -ne -ine -cne
-gt -igt -cgt -ge -ige -cge
-lt -ilt -clt -le -ile -cle
-like -ilike -clike -notlike -inotlike -cnotlike
-match -imatch -cmatch -notmatch -inotmatch -cnotmatch
-contains -icontains -ccontains -notcontains -inotcontains -cnotcontains
-replace -ireplace -creplace
-band	-bor -bxor
-and -or -xor

# Punctuation
() [] {} , : ` = ; .

# Keywords
elseif begin function for foreach return else trap while do data dynamicparam
until end break if throw param continue finally in switch exit filter from try
process catch

# Built-in variables
$$ $? $^ $_
$args $ConfirmPreference $ConsoleFileName $DebugPreference $Error
$ErrorActionPreference $ErrorView $ExecutionContext $false $FormatEnumerationLimit
$HOME $Host $input $MaximumAliasCount $MaximumDriveCount $MaximumErrorCount
$MaximumFunctionCount $MaximumHistoryCount $MaximumVariableCount $MyInvocation
$NestedPromptLevel $null $OutputEncoding $PID $PROFILE $ProgressPreference
$PSBoundParameters $PSCommandPath $PSCulture $PSDefaultParameterValues
$PSEmailServer $PSHOME $PSScriptRoot $PSSessionApplicationName
$PSSessionConfigurationName $PSSessionOption $PSUICulture $PSVersionTable $PWD
$ShellId $StackTrace $true $VerbosePreference $WarningPreference $WhatIfPreference
$true $false $null

# Built-in functions
A:
Add-Computer Add-Content Add-History Add-Member Add-PSSnapin Add-Type
B:
C:
Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item
Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession
ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData
Convert-Path ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString
ConvertTo-Xml Copy-Item Copy-ItemProperty
D:
Debug-Process Disable-ComputerRestore Disable-PSBreakpoint Disable-PSRemoting
Disable-PSSessionConfiguration Disconnect-PSSession
E:
Enable-ComputerRestore Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration
Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter
Export-Csv Export-FormatData Export-ModuleMember Export-PSSession
F:
ForEach-Object Format-Custom Format-List Format-Table Format-Wide
G:
Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint
Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date
Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Help
Get-History Get-Host Get-HotFix Get-Item Get-ItemProperty Get-Job Get-Location Get-Member
Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive
Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-Service
Get-TraceSource Get-Transaction Get-TypeData Get-UICulture  Get-Unique Get-Variable Get-Verb
Get-WinEvent Get-WmiObject Group-Object
H:
help
I:
Import-Alias Import-Clixml Import-Counter Import-Csv Import-LocalizedData Import-Module
Import-PSSession ImportSystemModules Invoke-Command Invoke-Expression Invoke-History
Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod
J:
Join-Path
K:
L:
Limit-EventLog
M:
Measure-Command Measure-Object mkdir more Move-Item Move-ItemProperty
N:
New-Alias New-Event New-EventLog New-Item New-ItemProperty New-Module New-ModuleManifest
New-Object New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption
New-PSTransportOption New-Service New-TimeSpan New-Variable New-WebServiceProxy
New-WinEvent
O:
oss Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String
P:
Pause Pop-Location prompt Push-Location
Q:
R:
Read-Host Receive-Job Receive-PSSession Register-EngineEvent Register-ObjectEvent
Register-PSSessionConfiguration Register-WmiEvent Remove-Computer Remove-Event
Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-Module
Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData
Remove-Variable Remove-WmiObject Rename-Computer Rename-Item Rename-ItemProperty
Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service
Restore-Computer Resume-Job Resume-Service
S:
Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias
Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item
Set-ItemProperty Set-Location Set-PSBreakpoint Set-PSDebug
Set-PSSessionConfiguration Set-Service Set-StrictMode Set-TraceSource Set-Variable
Set-WmiInstance Show-Command Show-ControlPanelItem Show-EventLog Sort-Object
Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction
Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript
Suspend-Job Suspend-Service
T:
TabExpansion2 Tee-Object Test-ComputerSecureChannel Test-Connection
Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command
U:
Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration
Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction
V:
W:
Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog
Write-Host Write-Output Write-Progress Write-Verbose Write-Warning
X:
Y:
Z:</textarea></div>
      <script>
        var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
          mode: "powershell",
          lineNumbers: true,
          indentUnit: 4,
          tabMode: "shift",
          matchBrackets: true
        });
      </script>

      <p><strong>MIME types defined:</strong> <code>application/x-powershell</code>.</p>
    </article>
  </body>
</html>
lib/codemirror/mode/php/test.js000064400000014767147361034410012531 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "php");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT('simple_test',
     '[meta <?php] ' +
     '[keyword echo] [string "aaa"]; ' +
     '[meta ?>]');

  MT('variable_interpolation_non_alphanumeric',
     '[meta <?php]',
     '[keyword echo] [string "aaa$~$!$@$#$$$%$^$&$*jQuery($)jQuery.$<$>$/$\\$}$\\\"$:$;$?$|$[[$]]$+$=aaa"]',
     '[meta ?>]');

  MT('variable_interpolation_digits',
     '[meta <?php]',
     '[keyword echo] [string "aaa$1$2$3$4$5$6$7$8$9$0aaa"]',
     '[meta ?>]');

  MT('variable_interpolation_simple_syntax_1',
     '[meta <?php]',
     '[keyword echo] [string "aaa][variable-2 $aaa][string .aaa"];',
     '[meta ?>]');

  MT('variable_interpolation_simple_syntax_2',
     '[meta <?php]',
     '[keyword echo] [string "][variable-2 $aaaa][[','[number 2]',         ']][string aa"];',
     '[keyword echo] [string "][variable-2 $aaaa][[','[number 2345]',      ']][string aa"];',
     '[keyword echo] [string "][variable-2 $aaaa][[','[number 2.3]',       ']][string aa"];',
     '[keyword echo] [string "][variable-2 $aaaa][[','[variable aaaaa]',   ']][string aa"];',
     '[keyword echo] [string "][variable-2 $aaaa][[','[variable-2 $aaaaa]',']][string aa"];',

     '[keyword echo] [string "1aaa][variable-2 $aaaa][[','[number 2]',         ']][string aa"];',
     '[keyword echo] [string "aaa][variable-2 $aaaa][[','[number 2345]',      ']][string aa"];',
     '[keyword echo] [string "aaa][variable-2 $aaaa][[','[number 2.3]',       ']][string aa"];',
     '[keyword echo] [string "aaa][variable-2 $aaaa][[','[variable aaaaa]',   ']][string aa"];',
     '[keyword echo] [string "aaa][variable-2 $aaaa][[','[variable-2 $aaaaa]',']][string aa"];',
     '[meta ?>]');

  MT('variable_interpolation_simple_syntax_3',
     '[meta <?php]',
     '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string .aaaaaa"];',
     '[keyword echo] [string "aaa][variable-2 $aaaa][string ->][variable-2 $aaaaa][string .aaaaaa"];',
     '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string [[2]].aaaaaa"];',
     '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string ->aaaa2.aaaaaa"];',
     '[meta ?>]');

  MT('variable_interpolation_escaping',
     '[meta <?php] [comment /* Escaping */]',
     '[keyword echo] [string "aaa\\$aaaa->aaa.aaa"];',
     '[keyword echo] [string "aaa\\$aaaa[[2]]aaa.aaa"];',
     '[keyword echo] [string "aaa\\$aaaa[[asd]]aaa.aaa"];',
     '[keyword echo] [string "aaa{\\$aaaa->aaa.aaa"];',
     '[keyword echo] [string "aaa{\\$aaaa[[2]]aaa.aaa"];',
     '[keyword echo] [string "aaa{\\aaaaa[[asd]]aaa.aaa"];',
     '[keyword echo] [string "aaa\\${aaaa->aaa.aaa"];',
     '[keyword echo] [string "aaa\\${aaaa[[2]]aaa.aaa"];',
     '[keyword echo] [string "aaa\\${aaaa[[asd]]aaa.aaa"];',
     '[meta ?>]');

  MT('variable_interpolation_complex_syntax_1',
     '[meta <?php]',
     '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa]}[string ->aaa.aaa"];',
     '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa]}[string ->aaa.aaa"];',
     '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa][[','  [number 42]',']]}[string ->aaa.aaa"];',
     '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa][meta ?>]aaaaaa');

  MT('variable_interpolation_complex_syntax_2',
     '[meta <?php] [comment /* Monsters */]',
     '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>} $aaa<?php } */]}[string ->aaa.aaa"];',
     '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>*/][[','  [string "aaa][variable-2 $aaa][string {}][variable-2 $]{[variable aaa]}[string "]',']]}[string ->aaa.aaa"];',
     '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*} } $aaa } */]}[string ->aaa.aaa"];');


  function build_recursive_monsters(nt, t, n){
    var monsters = [t];
    for (var i = 1; i <= n; ++i)
      monsters[i] = nt.join(monsters[i - 1]);
    return monsters;
  }

  var m1 = build_recursive_monsters(
    ['[string "][variable-2 $]{[variable aaa] [operator +] ', '}[string "]'],
    '[comment /* }?>} */] [string "aaa][variable-2 $aaa][string .aaa"]',
    10
  );

  MT('variable_interpolation_complex_syntax_3_1',
     '[meta <?php] [comment /* Recursive monsters */]',
     '[keyword echo] ' + m1[4] + ';',
     '[keyword echo] ' + m1[7] + ';',
     '[keyword echo] ' + m1[8] + ';',
     '[keyword echo] ' + m1[5] + ';',
     '[keyword echo] ' + m1[1] + ';',
     '[keyword echo] ' + m1[6] + ';',
     '[keyword echo] ' + m1[9] + ';',
     '[keyword echo] ' + m1[0] + ';',
     '[keyword echo] ' + m1[10] + ';',
     '[keyword echo] ' + m1[2] + ';',
     '[keyword echo] ' + m1[3] + ';',
     '[keyword echo] [string "end"];',
     '[meta ?>]');

  var m2 = build_recursive_monsters(
    ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', '}[string .a"]'],
    '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]',
    5
  );

  MT('variable_interpolation_complex_syntax_3_2',
     '[meta <?php] [comment /* Recursive monsters 2 */]',
     '[keyword echo] ' + m2[0] + ';',
     '[keyword echo] ' + m2[1] + ';',
     '[keyword echo] ' + m2[5] + ';',
     '[keyword echo] ' + m2[4] + ';',
     '[keyword echo] ' + m2[2] + ';',
     '[keyword echo] ' + m2[3] + ';',
     '[keyword echo] [string "end"];',
     '[meta ?>]');

  function build_recursive_monsters_2(mf1, mf2, nt, t, n){
    var monsters = [t];
    for (var i = 1; i <= n; ++i)
      monsters[i] = nt[0] + mf1[i - 1] + nt[1] + mf2[i - 1] + nt[2] + monsters[i - 1] + nt[3];
    return monsters;
  }

  var m3 = build_recursive_monsters_2(
    m1,
    m2,
    ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', ' [operator +] ', '}[string .a"]'],
    '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]',
    4
  );

  MT('variable_interpolation_complex_syntax_3_3',
     '[meta <?php] [comment /* Recursive monsters 2 */]',
     '[keyword echo] ' + m3[4] + ';',
     '[keyword echo] ' + m3[0] + ';',
     '[keyword echo] ' + m3[3] + ';',
     '[keyword echo] ' + m3[1] + ';',
     '[keyword echo] ' + m3[2] + ';',
     '[keyword echo] [string "end"];',
     '[meta ?>]');

  MT("variable_interpolation_heredoc",
     "[meta <?php]",
     "[string <<<here]",
     "[string doc ][variable-2 $]{[variable yay]}[string more]",
     "[string here]; [comment // normal]");
})();
lib/codemirror/mode/php/index.html000064400000003720147361034410013174 0ustar00<!doctype html>

<title>CodeMirror: PHP mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="../xml/xml.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../css/css.js"></script>
<script src="../clike/clike.js"></script>
<script src="php.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">PHP</a>
  </ul>
</div>

<article>
<h2>PHP mode</h2>
<form><textarea id="code" name="code">
<?php
$a = array('a' => 1, 'b' => 2, 3 => 'c');

echo "$a[a] ${a[3] /* } comment */} {$a[b]} \$a[a]";

function hello($who) {
	return "Hello $who!";
}
?>
<p>The program says <?= hello("World") ?>.</p>
<script>
	alert("And here is some JS code"); // also colored
</script>
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "application/x-httpd-php",
        indentUnit: 4,
        indentWithTabs: true
      });
    </script>

    <p>Simple HTML/PHP mode based on
    the <a href="../clike/">C-like</a> mode. Depends on XML,
    JavaScript, CSS, HTMLMixed, and C-like modes.</p>

    <p><strong>MIME types defined:</strong> <code>application/x-httpd-php</code> (HTML with PHP code), <code>text/x-php</code> (plain, non-wrapped PHP code).</p>
  </article>
lib/codemirror/mode/php/php.js000064400000043460147361034410012331 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function keywords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  // Helper for phpString
  function matchSequence(list, end, escapes) {
    if (list.length == 0) return phpString(end);
    return function (stream, state) {
      var patterns = list[0];
      for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) {
        state.tokenize = matchSequence(list.slice(1), end);
        return patterns[i][1];
      }
      state.tokenize = phpString(end, escapes);
      return "string";
    };
  }
  function phpString(closing, escapes) {
    return function(stream, state) { return phpString_(stream, state, closing, escapes); };
  }
  function phpString_(stream, state, closing, escapes) {
    // "Complex" syntax
    if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) {
      state.tokenize = null;
      return "string";
    }

    // Simple syntax
    if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) {
      // After the variable name there may appear array or object operator.
      if (stream.match("[", false)) {
        // Match array operator
        state.tokenize = matchSequence([
          [["[", null]],
          [[/\d[\w\.]*/, "number"],
           [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"],
           [/[\w\$]+/, "variable"]],
          [["]", null]]
        ], closing, escapes);
      }
      if (stream.match(/\-\>\w/, false)) {
        // Match object operator
        state.tokenize = matchSequence([
          [["->", null]],
          [[/[\w]+/, "variable"]]
        ], closing, escapes);
      }
      return "variable-2";
    }

    var escaped = false;
    // Normal string
    while (!stream.eol() &&
           (escaped || escapes === false ||
            (!stream.match("{$", false) &&
             !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) {
      if (!escaped && stream.match(closing)) {
        state.tokenize = null;
        state.tokStack.pop(); state.tokStack.pop();
        break;
      }
      escaped = stream.next() == "\\" && !escaped;
    }
    return "string";
  }

  var phpKeywords = "abstract and array as break case catch class clone const continue declare default " +
    "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " +
    "for foreach function global goto if implements interface instanceof namespace " +
    "new or private protected public static switch throw trait try use var while xor " +
    "die echo empty exit eval include include_once isset list require require_once return " +
    "print unset __halt_compiler self static parent yield insteadof finally";
  var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__";
  var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";
  CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" "));
  CodeMirror.registerHelper("wordChars", "php", /[\w$]/);

  var phpConfig = {
    name: "clike",
    helperType: "php",
    keywords: keywords(phpKeywords),
    blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"),
    defKeywords: keywords("class function interface namespace trait"),
    atoms: keywords(phpAtoms),
    builtin: keywords(phpBuiltin),
    multiLineStrings: true,
    hooks: {
      "$": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "variable-2";
      },
      "<": function(stream, state) {
        var before;
        if (before = stream.match(/<<\s*/)) {
          var quoted = stream.eat(/['"]/);
          stream.eatWhile(/[\w\.]/);
          var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1));
          if (quoted) stream.eat(quoted);
          if (delim) {
            (state.tokStack || (state.tokStack = [])).push(delim, 0);
            state.tokenize = phpString(delim, quoted != "'");
            return "string";
          }
        }
        return false;
      },
      "#": function(stream) {
        while (!stream.eol() && !stream.match("?>", false)) stream.next();
        return "comment";
      },
      "/": function(stream) {
        if (stream.eat("/")) {
          while (!stream.eol() && !stream.match("?>", false)) stream.next();
          return "comment";
        }
        return false;
      },
      '"': function(_stream, state) {
        (state.tokStack || (state.tokStack = [])).push('"', 0);
        state.tokenize = phpString('"');
        return "string";
      },
      "{": function(_stream, state) {
        if (state.tokStack && state.tokStack.length)
          state.tokStack[state.tokStack.length - 1]++;
        return false;
      },
      "}": function(_stream, state) {
        if (state.tokStack && state.tokStack.length > 0 &&
            !--state.tokStack[state.tokStack.length - 1]) {
          state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]);
        }
        return false;
      }
    }
  };

  CodeMirror.defineMode("php", function(config, parserConfig) {
    var htmlMode = CodeMirror.getMode(config, "text/html");
    var phpMode = CodeMirror.getMode(config, phpConfig);

    function dispatch(stream, state) {
      var isPHP = state.curMode == phpMode;
      if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null;
      if (!isPHP) {
        if (stream.match(/^<\?\w*/)) {
          state.curMode = phpMode;
          if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, ""))
          state.curState = state.php;
          return "meta";
        }
        if (state.pending == '"' || state.pending == "'") {
          while (!stream.eol() && stream.next() != state.pending) {}
          var style = "string";
        } else if (state.pending && stream.pos < state.pending.end) {
          stream.pos = state.pending.end;
          var style = state.pending.style;
        } else {
          var style = htmlMode.token(stream, state.curState);
        }
        if (state.pending) state.pending = null;
        var cur = stream.current(), openPHP = cur.search(/<\?/), m;
        if (openPHP != -1) {
          if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0];
          else state.pending = {end: stream.pos, style: style};
          stream.backUp(cur.length - openPHP);
        }
        return style;
      } else if (isPHP && state.php.tokenize == null && stream.match("?>")) {
        state.curMode = htmlMode;
        state.curState = state.html;
        if (!state.php.context.prev) state.php = null;
        return "meta";
      } else {
        return phpMode.token(stream, state.curState);
      }
    }

    return {
      startState: function() {
        var html = CodeMirror.startState(htmlMode)
        var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null
        return {html: html,
                php: php,
                curMode: parserConfig.startOpen ? phpMode : htmlMode,
                curState: parserConfig.startOpen ? php : html,
                pending: null};
      },

      copyState: function(state) {
        var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html),
            php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur;
        if (state.curMode == htmlMode) cur = htmlNew;
        else cur = phpNew;
        return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur,
                pending: state.pending};
      },

      token: dispatch,

      indent: function(state, textAfter) {
        if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) ||
            (state.curMode == phpMode && /^\?>/.test(textAfter)))
          return htmlMode.indent(state.html, textAfter);
        return state.curMode.indent(state.curState, textAfter);
      },

      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      lineComment: "//",

      innerMode: function(state) { return {state: state.curState, mode: state.curMode}; }
    };
  }, "htmlmixed", "clike");

  CodeMirror.defineMIME("application/x-httpd-php", "php");
  CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true});
  CodeMirror.defineMIME("text/x-php", phpConfig);
});
lib/codemirror/mode/apl/apl.js000064400000011200147361034410012266 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("apl", function() {
  var builtInOps = {
    ".": "innerProduct",
    "\\": "scan",
    "/": "reduce",
    "⌿": "reduce1Axis",
    "⍀": "scan1Axis",
    "¨": "each",
    "⍣": "power"
  };
  var builtInFuncs = {
    "+": ["conjugate", "add"],
    "−": ["negate", "subtract"],
    "×": ["signOf", "multiply"],
    "÷": ["reciprocal", "divide"],
    "⌈": ["ceiling", "greaterOf"],
    "⌊": ["floor", "lesserOf"],
    "∣": ["absolute", "residue"],
    "⍳": ["indexGenerate", "indexOf"],
    "?": ["roll", "deal"],
    "⋆": ["exponentiate", "toThePowerOf"],
    "⍟": ["naturalLog", "logToTheBase"],
    "○": ["piTimes", "circularFuncs"],
    "!": ["factorial", "binomial"],
    "⌹": ["matrixInverse", "matrixDivide"],
    "<": [null, "lessThan"],
    "≤": [null, "lessThanOrEqual"],
    "=": [null, "equals"],
    ">": [null, "greaterThan"],
    "≥": [null, "greaterThanOrEqual"],
    "≠": [null, "notEqual"],
    "≡": ["depth", "match"],
    "≢": [null, "notMatch"],
    "∈": ["enlist", "membership"],
    "⍷": [null, "find"],
    "∪": ["unique", "union"],
    "∩": [null, "intersection"],
    "∼": ["not", "without"],
    "∨": [null, "or"],
    "∧": [null, "and"],
    "⍱": [null, "nor"],
    "⍲": [null, "nand"],
    "⍴": ["shapeOf", "reshape"],
    ",": ["ravel", "catenate"],
    "⍪": [null, "firstAxisCatenate"],
    "⌽": ["reverse", "rotate"],
    "⊖": ["axis1Reverse", "axis1Rotate"],
    "⍉": ["transpose", null],
    "↑": ["first", "take"],
    "↓": [null, "drop"],
    "⊂": ["enclose", "partitionWithAxis"],
    "⊃": ["diclose", "pick"],
    "⌷": [null, "index"],
    "⍋": ["gradeUp", null],
    "⍒": ["gradeDown", null],
    "⊤": ["encode", null],
    "⊥": ["decode", null],
    "⍕": ["format", "formatByExample"],
    "⍎": ["execute", null],
    "⊣": ["stop", "left"],
    "⊢": ["pass", "right"]
  };

  var isOperator = /[\.\/⌿⍀¨⍣]/;
  var isNiladic = /⍬/;
  var isFunction = /[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/;
  var isArrow = /←/;
  var isComment = /[⍝#].*$/;

  var stringEater = function(type) {
    var prev;
    prev = false;
    return function(c) {
      prev = c;
      if (c === type) {
        return prev === "\\";
      }
      return true;
    };
  };
  return {
    startState: function() {
      return {
        prev: false,
        func: false,
        op: false,
        string: false,
        escape: false
      };
    },
    token: function(stream, state) {
      var ch, funcName;
      if (stream.eatSpace()) {
        return null;
      }
      ch = stream.next();
      if (ch === '"' || ch === "'") {
        stream.eatWhile(stringEater(ch));
        stream.next();
        state.prev = true;
        return "string";
      }
      if (/[\[{\(]/.test(ch)) {
        state.prev = false;
        return null;
      }
      if (/[\]}\)]/.test(ch)) {
        state.prev = true;
        return null;
      }
      if (isNiladic.test(ch)) {
        state.prev = false;
        return "niladic";
      }
      if (/[¯\d]/.test(ch)) {
        if (state.func) {
          state.func = false;
          state.prev = false;
        } else {
          state.prev = true;
        }
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (isOperator.test(ch)) {
        return "operator apl-" + builtInOps[ch];
      }
      if (isArrow.test(ch)) {
        return "apl-arrow";
      }
      if (isFunction.test(ch)) {
        funcName = "apl-";
        if (builtInFuncs[ch] != null) {
          if (state.prev) {
            funcName += builtInFuncs[ch][1];
          } else {
            funcName += builtInFuncs[ch][0];
          }
        }
        state.func = true;
        state.prev = false;
        return "function " + funcName;
      }
      if (isComment.test(ch)) {
        stream.skipToEnd();
        return "comment";
      }
      if (ch === "∘" && stream.peek() === ".") {
        stream.next();
        return "function jot-dot";
      }
      stream.eatWhile(/[\w\$_]/);
      state.prev = true;
      return "keyword";
    }
  };
});

CodeMirror.defineMIME("text/apl", "apl");

});
lib/codemirror/mode/apl/index.html000064400000004203147361034410013156 0ustar00<!doctype html>

<title>CodeMirror: APL mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="./apl.js"></script>
<style>
	.CodeMirror { border: 2px inset #dee; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">APL</a>
  </ul>
</div>

<article>
<h2>APL mode</h2>
<form><textarea id="code" name="code">
⍝ Conway's game of life

⍝ This example was inspired by the impressive demo at
⍝ http://www.youtube.com/watch?v=a9xAKttWgP4

⍝ Create a matrix:
⍝     0 1 1
⍝     1 1 0
⍝     0 1 0
creature ← (3 3 ⍴ ⍳ 9) ∈ 1 2 3 4 7   ⍝ Original creature from demo
creature ← (3 3 ⍴ ⍳ 9) ∈ 1 3 6 7 8   ⍝ Glider

⍝ Place the creature on a larger board, near the centre
board ← ¯1 ⊖ ¯2 ⌽ 5 7 ↑ creature

⍝ A function to move from one generation to the next
life ← {∨/ 1 ⍵ ∧ 3 4 = ⊂+/ +⌿ 1 0 ¯1 ∘.⊖ 1 0 ¯1 ⌽¨ ⊂⍵}

⍝ Compute n-th generation and format it as a
⍝ character matrix
gen ← {' #'[(life ⍣ ⍵) board]}

⍝ Show first three generations
(gen 1) (gen 2) (gen 3)
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/apl"
      });
    </script>

    <p>Simple mode that tries to handle APL as well as it can.</p>
    <p>It attempts to label functions/operators based upon
    monadic/dyadic usage (but this is far from fully fleshed out).
    This means there are meaningful classnames so hover states can
    have popups etc.</p>

    <p><strong>MIME types defined:</strong> <code>text/apl</code> (APL code)</p>
  </article>
lib/codemirror/mode/sass/sass.js000064400000023513147361034410012672 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sass", function(config) {
  function tokenRegexp(words) {
    return new RegExp("^" + words.join("|"));
  }

  var keywords = ["true", "false", "null", "auto"];
  var keywordsRegexp = new RegExp("^" + keywords.join("|"));

  var operators = ["\\(", "\\)", "=", ">", "<", "==", ">=", "<=", "\\+", "-",
                   "\\!=", "/", "\\*", "%", "and", "or", "not", ";","\\{","\\}",":"];
  var opRegexp = tokenRegexp(operators);

  var pseudoElementsRegexp = /^::?[a-zA-Z_][\w\-]*/;

  function urlTokens(stream, state) {
    var ch = stream.peek();

    if (ch === ")") {
      stream.next();
      state.tokenizer = tokenBase;
      return "operator";
    } else if (ch === "(") {
      stream.next();
      stream.eatSpace();

      return "operator";
    } else if (ch === "'" || ch === '"') {
      state.tokenizer = buildStringTokenizer(stream.next());
      return "string";
    } else {
      state.tokenizer = buildStringTokenizer(")", false);
      return "string";
    }
  }
  function comment(indentation, multiLine) {
    return function(stream, state) {
      if (stream.sol() && stream.indentation() <= indentation) {
        state.tokenizer = tokenBase;
        return tokenBase(stream, state);
      }

      if (multiLine && stream.skipTo("*/")) {
        stream.next();
        stream.next();
        state.tokenizer = tokenBase;
      } else {
        stream.skipToEnd();
      }

      return "comment";
    };
  }

  function buildStringTokenizer(quote, greedy) {
    if (greedy == null) { greedy = true; }

    function stringTokenizer(stream, state) {
      var nextChar = stream.next();
      var peekChar = stream.peek();
      var previousChar = stream.string.charAt(stream.pos-2);

      var endingString = ((nextChar !== "\\" && peekChar === quote) || (nextChar === quote && previousChar !== "\\"));

      if (endingString) {
        if (nextChar !== quote && greedy) { stream.next(); }
        state.tokenizer = tokenBase;
        return "string";
      } else if (nextChar === "#" && peekChar === "{") {
        state.tokenizer = buildInterpolationTokenizer(stringTokenizer);
        stream.next();
        return "operator";
      } else {
        return "string";
      }
    }

    return stringTokenizer;
  }

  function buildInterpolationTokenizer(currentTokenizer) {
    return function(stream, state) {
      if (stream.peek() === "}") {
        stream.next();
        state.tokenizer = currentTokenizer;
        return "operator";
      } else {
        return tokenBase(stream, state);
      }
    };
  }

  function indent(state) {
    if (state.indentCount == 0) {
      state.indentCount++;
      var lastScopeOffset = state.scopes[0].offset;
      var currentOffset = lastScopeOffset + config.indentUnit;
      state.scopes.unshift({ offset:currentOffset });
    }
  }

  function dedent(state) {
    if (state.scopes.length == 1) return;

    state.scopes.shift();
  }

  function tokenBase(stream, state) {
    var ch = stream.peek();

    // Comment
    if (stream.match("/*")) {
      state.tokenizer = comment(stream.indentation(), true);
      return state.tokenizer(stream, state);
    }
    if (stream.match("//")) {
      state.tokenizer = comment(stream.indentation(), false);
      return state.tokenizer(stream, state);
    }

    // Interpolation
    if (stream.match("#{")) {
      state.tokenizer = buildInterpolationTokenizer(tokenBase);
      return "operator";
    }

    // Strings
    if (ch === '"' || ch === "'") {
      stream.next();
      state.tokenizer = buildStringTokenizer(ch);
      return "string";
    }

    if(!state.cursorHalf){// state.cursorHalf === 0
    // first half i.e. before : for key-value pairs
    // including selectors

      if (ch === ".") {
        stream.next();
        if (stream.match(/^[\w-]+/)) {
          indent(state);
          return "atom";
        } else if (stream.peek() === "#") {
          indent(state);
          return "atom";
        }
      }

      if (ch === "#") {
        stream.next();
        // ID selectors
        if (stream.match(/^[\w-]+/)) {
          indent(state);
          return "atom";
        }
        if (stream.peek() === "#") {
          indent(state);
          return "atom";
        }
      }

      // Variables
      if (ch === "$") {
        stream.next();
        stream.eatWhile(/[\w-]/);
        return "variable-2";
      }

      // Numbers
      if (stream.match(/^-?[0-9\.]+/))
        return "number";

      // Units
      if (stream.match(/^(px|em|in)\b/))
        return "unit";

      if (stream.match(keywordsRegexp))
        return "keyword";

      if (stream.match(/^url/) && stream.peek() === "(") {
        state.tokenizer = urlTokens;
        return "atom";
      }

      if (ch === "=") {
        // Match shortcut mixin definition
        if (stream.match(/^=[\w-]+/)) {
          indent(state);
          return "meta";
        }
      }

      if (ch === "+") {
        // Match shortcut mixin definition
        if (stream.match(/^\+[\w-]+/)){
          return "variable-3";
        }
      }

      if(ch === "@"){
        if(stream.match(/@extend/)){
          if(!stream.match(/\s*[\w]/))
            dedent(state);
        }
      }


      // Indent Directives
      if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {
        indent(state);
        return "meta";
      }

      // Other Directives
      if (ch === "@") {
        stream.next();
        stream.eatWhile(/[\w-]/);
        return "meta";
      }

      if (stream.eatWhile(/[\w-]/)){
        if(stream.match(/ *: *[\w-\+\$#!\("']/,false)){
          return "property";
        }
        else if(stream.match(/ *:/,false)){
          indent(state);
          state.cursorHalf = 1;
          return "atom";
        }
        else if(stream.match(/ *,/,false)){
          return "atom";
        }
        else{
          indent(state);
          return "atom";
        }
      }

      if(ch === ":"){
        if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element
          return "keyword";
        }
        stream.next();
        state.cursorHalf=1;
        return "operator";
      }

    } // cursorHalf===0 ends here
    else{

      if (ch === "#") {
        stream.next();
        // Hex numbers
        if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){
          if(!stream.peek()){
            state.cursorHalf = 0;
          }
          return "number";
        }
      }

      // Numbers
      if (stream.match(/^-?[0-9\.]+/)){
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return "number";
      }

      // Units
      if (stream.match(/^(px|em|in)\b/)){
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return "unit";
      }

      if (stream.match(keywordsRegexp)){
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return "keyword";
      }

      if (stream.match(/^url/) && stream.peek() === "(") {
        state.tokenizer = urlTokens;
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return "atom";
      }

      // Variables
      if (ch === "$") {
        stream.next();
        stream.eatWhile(/[\w-]/);
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return "variable-3";
      }

      // bang character for !important, !default, etc.
      if (ch === "!") {
        stream.next();
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return stream.match(/^[\w]+/) ? "keyword": "operator";
      }

      if (stream.match(opRegexp)){
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return "operator";
      }

      // attributes
      if (stream.eatWhile(/[\w-]/)) {
        if(!stream.peek()){
          state.cursorHalf = 0;
        }
        return "attribute";
      }

      //stream.eatSpace();
      if(!stream.peek()){
        state.cursorHalf = 0;
        return null;
      }

    } // else ends here

    if (stream.match(opRegexp))
      return "operator";

    // If we haven't returned by now, we move 1 character
    // and return an error
    stream.next();
    return null;
  }

  function tokenLexer(stream, state) {
    if (stream.sol()) state.indentCount = 0;
    var style = state.tokenizer(stream, state);
    var current = stream.current();

    if (current === "@return" || current === "}"){
      dedent(state);
    }

    if (style !== null) {
      var startOfToken = stream.pos - current.length;

      var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);

      var newScopes = [];

      for (var i = 0; i < state.scopes.length; i++) {
        var scope = state.scopes[i];

        if (scope.offset <= withCurrentIndent)
          newScopes.push(scope);
      }

      state.scopes = newScopes;
    }


    return style;
  }

  return {
    startState: function() {
      return {
        tokenizer: tokenBase,
        scopes: [{offset: 0, type: "sass"}],
        indentCount: 0,
        cursorHalf: 0,  // cursor half tells us if cursor lies after (1)
                        // or before (0) colon (well... more or less)
        definedVars: [],
        definedMixins: []
      };
    },
    token: function(stream, state) {
      var style = tokenLexer(stream, state);

      state.lastToken = { style: style, content: stream.current() };

      return style;
    },

    indent: function(state) {
      return state.scopes[0].offset;
    }
  };
});

CodeMirror.defineMIME("text/x-sass", "sass");

});
lib/codemirror/mode/sass/index.html000064400000003043147361034410013354 0ustar00<!doctype html>

<title>CodeMirror: Sass mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="sass.js"></script>
<style>.CodeMirror {border: 1px solid #ddd; font-size:12px; height: 400px}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Sass</a>
  </ul>
</div>

<article>
<h2>Sass mode</h2>
<form><textarea id="code" name="code">// Variable Definitions

$page-width:    800px
$sidebar-width: 200px
$primary-color: #eeeeee

// Global Attributes

body
  font:
    family: sans-serif
    size: 30em
    weight: bold

// Scoped Styles

#contents
  width: $page-width
  #sidebar
    float: right
    width: $sidebar-width
  #main
    width: $page-width - $sidebar-width
    background: $primary-color
    h2
      color: blue

#footer
  height: 200px
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers : true,
        matchBrackets : true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-sass</code>.</p>
  </article>
lib/codemirror/mode/htmlmixed/htmlmixed.js000064400000012726147361034410014742 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var defaultTags = {
    script: [
      ["lang", /(javascript|babel)/i, "javascript"],
      ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, "javascript"],
      ["type", /./, "text/plain"],
      [null, null, "javascript"]
    ],
    style:  [
      ["lang", /^css$/i, "css"],
      ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"],
      ["type", /./, "text/plain"],
      [null, null, "css"]
    ]
  };

  function maybeBackup(stream, pat, style) {
    var cur = stream.current(), close = cur.search(pat);
    if (close > -1) {
      stream.backUp(cur.length - close);
    } else if (cur.match(/<\/?$/)) {
      stream.backUp(cur.length);
      if (!stream.match(pat, false)) stream.match(cur);
    }
    return style;
  }

  var attrRegexpCache = {};
  function getAttrRegexp(attr) {
    var regexp = attrRegexpCache[attr];
    if (regexp) return regexp;
    return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*");
  }

  function getAttrValue(text, attr) {
    var match = text.match(getAttrRegexp(attr))
    return match ? /^\s*(.*?)\s*$/.exec(match[2])[1] : ""
  }

  function getTagRegexp(tagName, anchored) {
    return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i");
  }

  function addTags(from, to) {
    for (var tag in from) {
      var dest = to[tag] || (to[tag] = []);
      var source = from[tag];
      for (var i = source.length - 1; i >= 0; i--)
        dest.unshift(source[i])
    }
  }

  function findMatchingMode(tagInfo, tagText) {
    for (var i = 0; i < tagInfo.length; i++) {
      var spec = tagInfo[i];
      if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];
    }
  }

  CodeMirror.defineMode("htmlmixed", function (config, parserConfig) {
    var htmlMode = CodeMirror.getMode(config, {
      name: "xml",
      htmlMode: true,
      multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,
      multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag
    });

    var tags = {};
    var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;
    addTags(defaultTags, tags);
    if (configTags) addTags(configTags, tags);
    if (configScript) for (var i = configScript.length - 1; i >= 0; i--)
      tags.script.unshift(["type", configScript[i].matches, configScript[i].mode])

    function html(stream, state) {
      var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName
      if (tag && !/[<>\s\/]/.test(stream.current()) &&
          (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&
          tags.hasOwnProperty(tagName)) {
        state.inTag = tagName + " "
      } else if (state.inTag && tag && />$/.test(stream.current())) {
        var inTag = /^([\S]+) (.*)/.exec(state.inTag)
        state.inTag = null
        var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2])
        var mode = CodeMirror.getMode(config, modeSpec)
        var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);
        state.token = function (stream, state) {
          if (stream.match(endTagA, false)) {
            state.token = html;
            state.localState = state.localMode = null;
            return null;
          }
          return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));
        };
        state.localMode = mode;
        state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, ""));
      } else if (state.inTag) {
        state.inTag += stream.current()
        if (stream.eol()) state.inTag += " "
      }
      return style;
    };

    return {
      startState: function () {
        var state = CodeMirror.startState(htmlMode);
        return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};
      },

      copyState: function (state) {
        var local;
        if (state.localState) {
          local = CodeMirror.copyState(state.localMode, state.localState);
        }
        return {token: state.token, inTag: state.inTag,
                localMode: state.localMode, localState: local,
                htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};
      },

      token: function (stream, state) {
        return state.token(stream, state);
      },

      indent: function (state, textAfter) {
        if (!state.localMode || /^\s*<\//.test(textAfter))
          return htmlMode.indent(state.htmlState, textAfter);
        else if (state.localMode.indent)
          return state.localMode.indent(state.localState, textAfter);
        else
          return CodeMirror.Pass;
      },

      innerMode: function (state) {
        return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};
      }
    };
  }, "xml", "javascript", "css");

  CodeMirror.defineMIME("text/html", "htmlmixed");
});
lib/codemirror/mode/htmlmixed/index.html000064400000005772147361034410014411 0ustar00<!doctype html>

<title>CodeMirror: HTML mixed mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/selection/selection-pointer.js"></script>
<script src="../xml/xml.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../css/css.js"></script>
<script src="../vbscript/vbscript.js"></script>
<script src="htmlmixed.js"></script>
<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">HTML mixed</a>
  </ul>
</div>

<article>
<h2>HTML mixed mode</h2>
<form><textarea id="code" name="code">
<html style="color: green">
  <!-- this is a comment -->
  <head>
    <title>Mixed HTML Example</title>
    <style type="text/css">
      h1 {font-family: comic sans; color: #f0f;}
      div {background: yellow !important;}
      body {
        max-width: 50em;
        margin: 1em 2em 1em 5em;
      }
    </style>
  </head>
  <body>
    <h1>Mixed HTML Example</h1>
    <script>
      function jsFunc(arg1, arg2) {
        if (arg1 && arg2) document.body.innerHTML = "achoo";
      }
    </script>
  </body>
</html>
</textarea></form>
    <script>
      // Define an extended mixed-mode that understands vbscript and
      // leaves mustache/handlebars embedded templates in html mode
      var mixedMode = {
        name: "htmlmixed",
        scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i,
                       mode: null},
                      {matches: /(text|application)\/(x-)?vb(a|script)/i,
                       mode: "vbscript"}]
      };
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: mixedMode,
        selectionPointer: true
      });
    </script>

    <p>The HTML mixed mode depends on the XML, JavaScript, and CSS modes.</p>

    <p>It takes an optional mode configuration
    option, <code>scriptTypes</code>, which can be used to add custom
    behavior for specific <code>&lt;script type="..."></code> tags. If
    given, it should hold an array of <code>{matches, mode}</code>
    objects, where <code>matches</code> is a string or regexp that
    matches the script type, and <code>mode</code> is
    either <code>null</code>, for script types that should stay in
    HTML mode, or a <a href="../../doc/manual.html#option_mode">mode
    spec</a> corresponding to the mode that should be used for the
    script.</p>

    <p><strong>MIME types defined:</strong> <code>text/html</code>
    (redefined, only takes effect if you load this parser after the
    XML parser).</p>

  </article>
lib/codemirror/mode/fortran/fortran.js000064400000020756147361034410014104 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("fortran", function() {
  function words(array) {
    var keys = {};
    for (var i = 0; i < array.length; ++i) {
      keys[array[i]] = true;
    }
    return keys;
  }

  var keywords = words([
                  "abstract", "accept", "allocatable", "allocate",
                  "array", "assign", "asynchronous", "backspace",
                  "bind", "block", "byte", "call", "case",
                  "class", "close", "common", "contains",
                  "continue", "cycle", "data", "deallocate",
                  "decode", "deferred", "dimension", "do",
                  "elemental", "else", "encode", "end",
                  "endif", "entry", "enumerator", "equivalence",
                  "exit", "external", "extrinsic", "final",
                  "forall", "format", "function", "generic",
                  "go", "goto", "if", "implicit", "import", "include",
                  "inquire", "intent", "interface", "intrinsic",
                  "module", "namelist", "non_intrinsic",
                  "non_overridable", "none", "nopass",
                  "nullify", "open", "optional", "options",
                  "parameter", "pass", "pause", "pointer",
                  "print", "private", "program", "protected",
                  "public", "pure", "read", "recursive", "result",
                  "return", "rewind", "save", "select", "sequence",
                  "stop", "subroutine", "target", "then", "to", "type",
                  "use", "value", "volatile", "where", "while",
                  "write"]);
  var builtins = words(["abort", "abs", "access", "achar", "acos",
                          "adjustl", "adjustr", "aimag", "aint", "alarm",
                          "all", "allocated", "alog", "amax", "amin",
                          "amod", "and", "anint", "any", "asin",
                          "associated", "atan", "besj", "besjn", "besy",
                          "besyn", "bit_size", "btest", "cabs", "ccos",
                          "ceiling", "cexp", "char", "chdir", "chmod",
                          "clog", "cmplx", "command_argument_count",
                          "complex", "conjg", "cos", "cosh", "count",
                          "cpu_time", "cshift", "csin", "csqrt", "ctime",
                          "c_funloc", "c_loc", "c_associated", "c_null_ptr",
                          "c_null_funptr", "c_f_pointer", "c_null_char",
                          "c_alert", "c_backspace", "c_form_feed",
                          "c_new_line", "c_carriage_return",
                          "c_horizontal_tab", "c_vertical_tab", "dabs",
                          "dacos", "dasin", "datan", "date_and_time",
                          "dbesj", "dbesj", "dbesjn", "dbesy", "dbesy",
                          "dbesyn", "dble", "dcos", "dcosh", "ddim", "derf",
                          "derfc", "dexp", "digits", "dim", "dint", "dlog",
                          "dlog", "dmax", "dmin", "dmod", "dnint",
                          "dot_product", "dprod", "dsign", "dsinh",
                          "dsin", "dsqrt", "dtanh", "dtan", "dtime",
                          "eoshift", "epsilon", "erf", "erfc", "etime",
                          "exit", "exp", "exponent", "extends_type_of",
                          "fdate", "fget", "fgetc", "float", "floor",
                          "flush", "fnum", "fputc", "fput", "fraction",
                          "fseek", "fstat", "ftell", "gerror", "getarg",
                          "get_command", "get_command_argument",
                          "get_environment_variable", "getcwd",
                          "getenv", "getgid", "getlog", "getpid",
                          "getuid", "gmtime", "hostnm", "huge", "iabs",
                          "iachar", "iand", "iargc", "ibclr", "ibits",
                          "ibset", "ichar", "idate", "idim", "idint",
                          "idnint", "ieor", "ierrno", "ifix", "imag",
                          "imagpart", "index", "int", "ior", "irand",
                          "isatty", "ishft", "ishftc", "isign",
                          "iso_c_binding", "is_iostat_end", "is_iostat_eor",
                          "itime", "kill", "kind", "lbound", "len", "len_trim",
                          "lge", "lgt", "link", "lle", "llt", "lnblnk", "loc",
                          "log", "logical", "long", "lshift", "lstat", "ltime",
                          "matmul", "max", "maxexponent", "maxloc", "maxval",
                          "mclock", "merge", "move_alloc", "min", "minexponent",
                          "minloc", "minval", "mod", "modulo", "mvbits",
                          "nearest", "new_line", "nint", "not", "or", "pack",
                          "perror", "precision", "present", "product", "radix",
                          "rand", "random_number", "random_seed", "range",
                          "real", "realpart", "rename", "repeat", "reshape",
                          "rrspacing", "rshift", "same_type_as", "scale",
                          "scan", "second", "selected_int_kind",
                          "selected_real_kind", "set_exponent", "shape",
                          "short", "sign", "signal", "sinh", "sin", "sleep",
                          "sngl", "spacing", "spread", "sqrt", "srand", "stat",
                          "sum", "symlnk", "system", "system_clock", "tan",
                          "tanh", "time", "tiny", "transfer", "transpose",
                          "trim", "ttynam", "ubound", "umask", "unlink",
                          "unpack", "verify", "xor", "zabs", "zcos", "zexp",
                          "zlog", "zsin", "zsqrt"]);

    var dataTypes =  words(["c_bool", "c_char", "c_double", "c_double_complex",
                     "c_float", "c_float_complex", "c_funptr", "c_int",
                     "c_int16_t", "c_int32_t", "c_int64_t", "c_int8_t",
                     "c_int_fast16_t", "c_int_fast32_t", "c_int_fast64_t",
                     "c_int_fast8_t", "c_int_least16_t", "c_int_least32_t",
                     "c_int_least64_t", "c_int_least8_t", "c_intmax_t",
                     "c_intptr_t", "c_long", "c_long_double",
                     "c_long_double_complex", "c_long_long", "c_ptr",
                     "c_short", "c_signed_char", "c_size_t", "character",
                     "complex", "double", "integer", "logical", "real"]);
  var isOperatorChar = /[+\-*&=<>\/\:]/;
  var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i");

  function tokenBase(stream, state) {

    if (stream.match(litOperator)){
        return 'operator';
    }

    var ch = stream.next();
    if (ch == "!") {
      stream.skipToEnd();
      return "comment";
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]\(\),]/.test(ch)) {
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var word = stream.current().toLowerCase();

    if (keywords.hasOwnProperty(word)){
            return 'keyword';
    }
    if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) {
            return 'builtin';
    }
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
            end = true;
            break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped) state.tokenize = null;
      return "string";
    };
  }

  // Interface

  return {
    startState: function() {
      return {tokenize: null};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return style;
      return style;
    }
  };
});

CodeMirror.defineMIME("text/x-fortran", "fortran");

});
lib/codemirror/mode/fortran/index.html000064400000004674147361034410014071 0ustar00<!doctype html>

<title>CodeMirror: Fortran mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="fortran.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Fortran</a>
  </ul>
</div>

<article>
<h2>Fortran mode</h2>


<div><textarea id="code" name="code">
! Example Fortran code
  program average

  ! Read in some numbers and take the average
  ! As written, if there are no data points, an average of zero is returned
  ! While this may not be desired behavior, it keeps this example simple

  implicit none

  real, dimension(:), allocatable :: points
  integer                         :: number_of_points
  real                            :: average_points=0., positive_average=0., negative_average=0.

  write (*,*) "Input number of points to average:"
  read  (*,*) number_of_points

  allocate (points(number_of_points))

  write (*,*) "Enter the points to average:"
  read  (*,*) points

  ! Take the average by summing points and dividing by number_of_points
  if (number_of_points > 0) average_points = sum(points) / number_of_points

  ! Now form average over positive and negative points only
  if (count(points > 0.) > 0) then
     positive_average = sum(points, points > 0.) / count(points > 0.)
  end if

  if (count(points < 0.) > 0) then
     negative_average = sum(points, points < 0.) / count(points < 0.)
  end if

  deallocate (points)

  ! Print result to terminal
  write (*,'(a,g12.4)') 'Average = ', average_points
  write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
  write (*,'(a,g12.4)') 'Average of negative points = ', negative_average

  end program average
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "text/x-fortran"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-fortran</code>.</p>
  </article>
lib/codemirror/mode/haml/test.js000064400000005702147361034410012650 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "haml");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  // Requires at least one media query
  MT("elementName",
     "[tag %h1] Hey There");

  MT("oneElementPerLine",
     "[tag %h1] Hey There %h2");

  MT("idSelector",
     "[tag %h1][attribute #test] Hey There");

  MT("classSelector",
     "[tag %h1][attribute .hello] Hey There");

  MT("docType",
     "[tag !!! XML]");

  MT("comment",
     "[comment / Hello WORLD]");

  MT("notComment",
     "[tag %h1] This is not a / comment ");

  MT("attributes",
     "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}");

  MT("htmlCode",
     "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket </][tag h1][tag&bracket >]");

  MT("rubyBlock",
     "[operator =][variable-2 @item]");

  MT("selectorRubyBlock",
     "[tag %a.selector=] [variable-2 @item]");

  MT("nestedRubyBlock",
      "[tag %a]",
      "   [operator =][variable puts] [string \"test\"]");

  MT("multilinePlaintext",
      "[tag %p]",
      "  Hello,",
      "  World");

  MT("multilineRuby",
      "[tag %p]",
      "  [comment -# this is a comment]",
      "     [comment and this is a comment too]",
      "  Date/Time",
      "  [operator -] [variable now] [operator =] [tag DateTime][operator .][property now]",
      "  [tag %strong=] [variable now]",
      "  [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])",
      "     [operator =][string \"Happy\"]",
      "     [operator =][string \"Belated\"]",
      "     [operator =][string \"Birthday\"]");

  MT("multilineComment",
      "[comment /]",
      "  [comment Multiline]",
      "  [comment Comment]");

  MT("hamlComment",
     "[comment -# this is a comment]");

  MT("multilineHamlComment",
     "[comment -# this is a comment]",
     "   [comment and this is a comment too]");

  MT("multilineHTMLComment",
    "[comment <!--]",
    "  [comment what a comment]",
    "  [comment -->]");

  MT("hamlAfterRubyTag",
    "[attribute .block]",
    "  [tag %strong=] [variable now]",
    "  [attribute .test]",
    "     [operator =][variable now]",
    "  [attribute .right]");

  MT("stretchedRuby",
     "[operator =] [variable puts] [string \"Hello\"],",
     "   [string \"World\"]");

  MT("interpolationInHashAttribute",
     //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test");
     "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test");

  MT("interpolationInHTMLAttribute",
     "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test");
})();
lib/codemirror/mode/haml/haml.js000064400000012351147361034410012610 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

  // full haml mode. This handled embedded ruby and html fragments too
  CodeMirror.defineMode("haml", function(config) {
    var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"});
    var rubyMode = CodeMirror.getMode(config, "ruby");

    function rubyInQuote(endQuote) {
      return function(stream, state) {
        var ch = stream.peek();
        if (ch == endQuote && state.rubyState.tokenize.length == 1) {
          // step out of ruby context as it seems to complete processing all the braces
          stream.next();
          state.tokenize = html;
          return "closeAttributeTag";
        } else {
          return ruby(stream, state);
        }
      };
    }

    function ruby(stream, state) {
      if (stream.match("-#")) {
        stream.skipToEnd();
        return "comment";
      }
      return rubyMode.token(stream, state.rubyState);
    }

    function html(stream, state) {
      var ch = stream.peek();

      // handle haml declarations. All declarations that cant be handled here
      // will be passed to html mode
      if (state.previousToken.style == "comment" ) {
        if (state.indented > state.previousToken.indented) {
          stream.skipToEnd();
          return "commentLine";
        }
      }

      if (state.startOfLine) {
        if (ch == "!" && stream.match("!!")) {
          stream.skipToEnd();
          return "tag";
        } else if (stream.match(/^%[\w:#\.]+=/)) {
          state.tokenize = ruby;
          return "hamlTag";
        } else if (stream.match(/^%[\w:]+/)) {
          return "hamlTag";
        } else if (ch == "/" ) {
          stream.skipToEnd();
          return "comment";
        }
      }

      if (state.startOfLine || state.previousToken.style == "hamlTag") {
        if ( ch == "#" || ch == ".") {
          stream.match(/[\w-#\.]*/);
          return "hamlAttribute";
        }
      }

      // donot handle --> as valid ruby, make it HTML close comment instead
      if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) {
        state.tokenize = ruby;
        return state.tokenize(stream, state);
      }

      if (state.previousToken.style == "hamlTag" ||
          state.previousToken.style == "closeAttributeTag" ||
          state.previousToken.style == "hamlAttribute") {
        if (ch == "(") {
          state.tokenize = rubyInQuote(")");
          return state.tokenize(stream, state);
        } else if (ch == "{") {
          if (!stream.match(/^\{%.*/)) {
            state.tokenize = rubyInQuote("}");
            return state.tokenize(stream, state);
          }
        }
      }

      return htmlMode.token(stream, state.htmlState);
    }

    return {
      // default to html mode
      startState: function() {
        var htmlState = CodeMirror.startState(htmlMode);
        var rubyState = CodeMirror.startState(rubyMode);
        return {
          htmlState: htmlState,
          rubyState: rubyState,
          indented: 0,
          previousToken: { style: null, indented: 0},
          tokenize: html
        };
      },

      copyState: function(state) {
        return {
          htmlState : CodeMirror.copyState(htmlMode, state.htmlState),
          rubyState: CodeMirror.copyState(rubyMode, state.rubyState),
          indented: state.indented,
          previousToken: state.previousToken,
          tokenize: state.tokenize
        };
      },

      token: function(stream, state) {
        if (stream.sol()) {
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        var style = state.tokenize(stream, state);
        state.startOfLine = false;
        // dont record comment line as we only want to measure comment line with
        // the opening comment block
        if (style && style != "commentLine") {
          state.previousToken = { style: style, indented: state.indented };
        }
        // if current state is ruby and the previous token is not `,` reset the
        // tokenize to html
        if (stream.eol() && state.tokenize == ruby) {
          stream.backUp(1);
          var ch = stream.peek();
          stream.next();
          if (ch && ch != ",") {
            state.tokenize = html;
          }
        }
        // reprocess some of the specific style tag when finish setting previousToken
        if (style == "hamlTag") {
          style = "tag";
        } else if (style == "commentLine") {
          style = "comment";
        } else if (style == "hamlAttribute") {
          style = "attribute";
        } else if (style == "closeAttributeTag") {
          style = null;
        }
        return style;
      }
    };
  }, "htmlmixed", "ruby");

  CodeMirror.defineMIME("text/x-haml", "haml");
});
lib/codemirror/mode/haml/index.html000064400000004027147361034410013327 0ustar00<!doctype html>

<title>CodeMirror: HAML mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../xml/xml.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../ruby/ruby.js"></script>
<script src="haml.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">HAML</a>
  </ul>
</div>

<article>
<h2>HAML mode</h2>
<form><textarea id="code" name="code">
!!!
#content
.left.column(title="title"){:href => "/hello", :test => "#{hello}_#{world}"}
    <!-- This is a comment -->
    %h2 Welcome to our site!
    %p= puts "HAML MODE"
  .right.column
    = render :partial => "sidebar"

.container
  .row
    .span8
      %h1.title= @page_title
%p.title= @page_title
%p
  /
    The same as HTML comment
    Hello multiline comment

  -# haml comment
      This wont be displayed
      nor will this
  Date/Time:
  - now = DateTime.now
  %strong= now
  - if now > DateTime.parse("December 31, 2006")
    = "Happy new " + "year!"

%title
  = @title
  \= @title
  <h1>Title</h1>
  <h1 title="HELLO">
    Title
  </h1>
    </textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "text/x-haml"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-haml</code>.</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#haml_*">normal</a>,  <a href="../../test/index.html#verbose,haml_*">verbose</a>.</p>

  </article>
lib/codemirror/mode/groovy/index.html000064400000004201147361034410013725 0ustar00<!doctype html>

<title>CodeMirror: Groovy mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="groovy.js"></script>
<style>.CodeMirror {border-top: 1px solid #500; border-bottom: 1px solid #500;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Groovy</a>
  </ul>
</div>

<article>
<h2>Groovy mode</h2>
<form><textarea id="code" name="code">
//Pattern for groovy script
def p = ~/.*\.groovy/
new File( 'd:\\scripts' ).eachFileMatch(p) {f ->
  // imports list
  def imports = []
  f.eachLine {
    // condition to detect an import instruction
    ln -> if ( ln =~ '^import .*' ) {
      imports << "${ln - 'import '}"
    }
  }
  // print thmen
  if ( ! imports.empty ) {
    println f
    imports.each{ println "   $it" }
  }
}

/* Coin changer demo code from http://groovy.codehaus.org */

enum UsCoin {
  quarter(25), dime(10), nickel(5), penny(1)
  UsCoin(v) { value = v }
  final value
}

enum OzzieCoin {
  fifty(50), twenty(20), ten(10), five(5)
  OzzieCoin(v) { value = v }
  final value
}

def plural(word, count) {
  if (count == 1) return word
  word[-1] == 'y' ? word[0..-2] + "ies" : word + "s"
}

def change(currency, amount) {
  currency.values().inject([]){ list, coin ->
     int count = amount / coin.value
     amount = amount % coin.value
     list += "$count ${plural(coin.toString(), count)}"
  }
}
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-groovy"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-groovy</code></p>
  </article>
lib/codemirror/mode/groovy/groovy.js000064400000017306147361034410013625 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("groovy", function(config) {
  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var keywords = words(
    "abstract as assert boolean break byte case catch char class const continue def default " +
    "do double else enum extends final finally float for goto if implements import in " +
    "instanceof int interface long native new package private protected public return " +
    "short static strictfp super switch synchronized threadsafe throw throws transient " +
    "try void volatile while");
  var blockKeywords = words("catch class do else finally for if switch try while enum interface def");
  var standaloneKeywords = words("return break continue");
  var atoms = words("null true false this");

  var curPunc;
  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'") {
      return startString(ch, stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); }
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize.push(tokenComment);
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
      if (expectExpression(state.lastToken, false)) {
        return startString(ch, stream, state);
      }
    }
    if (ch == "-" && stream.eat(">")) {
      curPunc = "->";
      return null;
    }
    if (/[+\-*&%=<>!?|\/~]/.test(ch)) {
      stream.eatWhile(/[+\-*&%=<>|~]/);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; }
    if (state.lastToken == ".") return "property";
    if (stream.eat(":")) { curPunc = "proplabel"; return "property"; }
    var cur = stream.current();
    if (atoms.propertyIsEnumerable(cur)) { return "atom"; }
    if (keywords.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      else if (standaloneKeywords.propertyIsEnumerable(cur)) curPunc = "standalone";
      return "keyword";
    }
    return "variable";
  }
  tokenBase.isBase = true;

  function startString(quote, stream, state) {
    var tripleQuoted = false;
    if (quote != "/" && stream.eat(quote)) {
      if (stream.eat(quote)) tripleQuoted = true;
      else return "string";
    }
    function t(stream, state) {
      var escaped = false, next, end = !tripleQuoted;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          if (!tripleQuoted) { break; }
          if (stream.match(quote + quote)) { end = true; break; }
        }
        if (quote == '"' && next == "$" && !escaped && stream.eat("{")) {
          state.tokenize.push(tokenBaseUntilBrace());
          return "string";
        }
        escaped = !escaped && next == "\\";
      }
      if (end) state.tokenize.pop();
      return "string";
    }
    state.tokenize.push(t);
    return t(stream, state);
  }

  function tokenBaseUntilBrace() {
    var depth = 1;
    function t(stream, state) {
      if (stream.peek() == "}") {
        depth--;
        if (depth == 0) {
          state.tokenize.pop();
          return state.tokenize[state.tokenize.length-1](stream, state);
        }
      } else if (stream.peek() == "{") {
        depth++;
      }
      return tokenBase(stream, state);
    }
    t.isBase = true;
    return t;
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize.pop();
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function expectExpression(last, newline) {
    return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) ||
      last == "newstatement" || last == "keyword" || last == "proplabel" ||
      (last == "standalone" && !newline);
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null, state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: [tokenBase],
        context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false),
        indented: 0,
        startOfLine: true,
        lastToken: null
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
        // Automatic semicolon insertion
        if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) {
          popContext(state); ctx = state.context;
        }
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = state.tokenize[state.tokenize.length-1](stream, state);
      if (style == "comment") return style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state);
      // Handle indentation for {x -> \n ... }
      else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") {
        popContext(state);
        state.context.align = false;
      }
      else if (curPunc == "{") pushContext(state, stream.column(), "}");
      else if (curPunc == "[") pushContext(state, stream.column(), "]");
      else if (curPunc == "(") pushContext(state, stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      state.lastToken = curPunc || style;
      return style;
    },

    indent: function(state, textAfter) {
      if (!state.tokenize[state.tokenize.length-1].isBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0), ctx = state.context;
      if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) ctx = ctx.prev;
      var closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : config.indentUnit);
    },

    electricChars: "{}",
    closeBrackets: {triples: "'\""},
    fold: "brace"
  };
});

CodeMirror.defineMIME("text/x-groovy", "groovy");

});
lib/codemirror/mode/q/q.js000064400000014731147361034410011452 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("q",function(config){
  var indentUnit=config.indentUnit,
      curPunc,
      keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]),
      E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/;
  function buildRE(w){return new RegExp("^("+w.join("|")+")$");}
  function tokenBase(stream,state){
    var sol=stream.sol(),c=stream.next();
    curPunc=null;
    if(sol)
      if(c=="/")
        return(state.tokenize=tokenLineComment)(stream,state);
      else if(c=="\\"){
        if(stream.eol()||/\s/.test(stream.peek()))
          return stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream, state):state.tokenize=tokenBase,"comment";
        else
          return state.tokenize=tokenBase,"builtin";
      }
    if(/\s/.test(c))
      return stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace";
    if(c=='"')
      return(state.tokenize=tokenString)(stream,state);
    if(c=='`')
      return stream.eatWhile(/[A-Z|a-z|\d|_|:|\/|\.]/),"symbol";
    if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){
      var t=null;
      stream.backUp(1);
      if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([D|T](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/)
      || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/)
      || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/)
      || stream.match(/^\d+[ptuv]{1}/))
        t="temporal";
      else if(stream.match(/^0[NwW]{1}/)
      || stream.match(/^0x[\d|a-f|A-F]*/)
      || stream.match(/^[0|1]+[b]{1}/)
      || stream.match(/^\d+[chijn]{1}/)
      || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/))
        t="number";
      return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error");
    }
    if(/[A-Z|a-z]|\./.test(c))
      return stream.eatWhile(/[A-Z|a-z|\.|_|\d]/),keywords.test(stream.current())?"keyword":"variable";
    if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c))
      return null;
    if(/[{}\(\[\]\)]/.test(c))
      return null;
    return"error";
  }
  function tokenLineComment(stream,state){
    return stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment";
  }
  function tokenBlockComment(stream,state){
    var f=stream.sol()&&stream.peek()=="\\";
    stream.skipToEnd();
    if(f&&/^\\\s*$/.test(stream.current()))
      state.tokenize=tokenBase;
    return"comment";
  }
  function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";}
  function tokenString(stream,state){
    var escaped=false,next,end=false;
    while((next=stream.next())){
      if(next=="\""&&!escaped){end=true;break;}
      escaped=!escaped&&next=="\\";
    }
    if(end)state.tokenize=tokenBase;
    return"string";
  }
  function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};}
  function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;}
  return{
    startState:function(){
      return{tokenize:tokenBase,
             context:null,
             indent:0,
             col:0};
    },
    token:function(stream,state){
      if(stream.sol()){
        if(state.context&&state.context.align==null)
          state.context.align=false;
        state.indent=stream.indentation();
      }
      //if (stream.eatSpace()) return null;
      var style=state.tokenize(stream,state);
      if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){
        state.context.align=true;
      }
      if(curPunc=="(")pushContext(state,")",stream.column());
      else if(curPunc=="[")pushContext(state,"]",stream.column());
      else if(curPunc=="{")pushContext(state,"}",stream.column());
      else if(/[\]\}\)]/.test(curPunc)){
        while(state.context&&state.context.type=="pattern")popContext(state);
        if(state.context&&curPunc==state.context.type)popContext(state);
      }
      else if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state);
      else if(/atom|string|variable/.test(style)&&state.context){
        if(/[\}\]]/.test(state.context.type))
          pushContext(state,"pattern",stream.column());
        else if(state.context.type=="pattern"&&!state.context.align){
          state.context.align=true;
          state.context.col=stream.column();
        }
      }
      return style;
    },
    indent:function(state,textAfter){
      var firstChar=textAfter&&textAfter.charAt(0);
      var context=state.context;
      if(/[\]\}]/.test(firstChar))
        while (context&&context.type=="pattern")context=context.prev;
      var closing=context&&firstChar==context.type;
      if(!context)
        return 0;
      else if(context.type=="pattern")
        return context.col;
      else if(context.align)
        return context.col+(closing?0:1);
      else
        return context.indent+(closing?0:indentUnit);
    }
  };
});
CodeMirror.defineMIME("text/x-q","q");

});
lib/codemirror/mode/q/index.html000064400000021406147361034410012646 0ustar00<!doctype html>

<title>CodeMirror: Q mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="q.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Q</a>
  </ul>
</div>

<article>
<h2>Q mode</h2>


<div><textarea id="code" name="code">
/ utilities to quickly load a csv file - for more exhaustive analysis of the csv contents see csvguess.q
/ 2009.09.20 - updated to match latest csvguess.q 

/ .csv.colhdrs[file] - return a list of colhdrs from file
/ info:.csv.info[file] - return a table of information about the file
/ columns are: 
/	c - column name; ci - column index; t - load type; mw - max width; 
/	dchar - distinct characters in values; rule - rule that caught the type
/	maybe - needs checking, _could_ be say a date, but perhaps just a float?
/ .csv.info0[file;onlycols] - like .csv.info except that it only analyses <onlycols>
/ example:
/	info:.csv.info0[file;(.csv.colhdrs file)like"*price"]
/	info:.csv.infolike[file;"*price"]
/	show delete from info where t=" "
/ .csv.data[file;info] - use the info from .csv.info to read the data
/ .csv.data10[file;info] - like .csv.data but only returns the first 10 rows
/ bulkload[file;info] - bulk loads file into table DATA (which must be already defined :: DATA:() )
/ .csv.read[file]/read10[file] - for when you don't care about checking/tweaking the <info> before reading 

\d .csv
DELIM:","
ZAPHDRS:0b / lowercase and remove _ from colhdrs (junk characters are always removed)
WIDTHHDR:25000 / number of characters read to get the header
READLINES:222 / number of lines read and used to guess the types
SYMMAXWIDTH:11 / character columns narrower than this are stored as symbols
SYMMAXGR:10 / max symbol granularity% before we give up and keep as a * string
FORCECHARWIDTH:30 / every field (of any type) with values this wide or more is forced to character "*"
DISCARDEMPTY:0b / completely ignore empty columns if true else set them to "C"
CHUNKSIZE:50000000 / used in fs2 (modified .Q.fs)

k)nameltrim:{$[~@x;.z.s'x;~(*x)in aA:.Q.a,.Q.A;(+/&\~x in aA)_x;x]}
k)fs2:{[f;s]((-7!s)>){[f;s;x]i:1+last@&0xa=r:1:(s;x;CHUNKSIZE);f@`\:i#r;x+i}[f;s]/0j}
cleanhdrs:{{$[ZAPHDRS;lower x except"_";x]}x where x in DELIM,.Q.an}
cancast:{nw:x$"";if[not x in"BXCS";nw:(min 0#;max 0#;::)@\:nw];$[not any nw in xjQuery(11&count y)#y;$[11<count y;not any nw in x$y;1b];0b]}

read:{[file]data[file;info[file]]}  
read10:{[file]data10[file;info[file]]}  

colhdrs:{[file]
	`$nameltrim DELIM vs cleanhdrs first read0(file;0;1+first where 0xa=read1(file;0;WIDTHHDR))}
data:{[file;info]
	(exec c from info where not t=" ")xcol(exec t from info;enlist DELIM)0:file}
data10:{[file;info]
	data[;info](file;0;1+last 11#where 0xa=read1(file;0;15*WIDTHHDR))}
info0:{[file;onlycols]
	colhdrs:`$nameltrim DELIM vs cleanhdrs first head:read0(file;0;1+last where 0xa=read1(file;0;WIDTHHDR));
	loadfmts:(count colhdrs)#"S";if[count onlycols;loadfmts[where not colhdrs in onlycols]:"C"];
	breaks:where 0xa=read1(file;0;floor(10+READLINES)*WIDTHHDR%count head);
	nas:count as:colhdrs xcol(loadfmts;enlist DELIM)0:(file;0;1+last((1+READLINES)&count breaks)#breaks);
	info:([]c:key flip as;v:value flip as);as:();
	reserved:key`.q;reserved,:.Q.res;reserved,:`i;
	info:update res:c in reserved from info;
	info:update ci:i,t:"?",ipa:0b,mdot:0,mw:0,rule:0,gr:0,ndv:0,maybe:0b,empty:0b,j10:0b,j12:0b from info;
	info:update ci:`s#ci from info;
	if[count onlycols;info:update t:" ",rule:10 from info where not c in onlycols];
	info:update sdv:{string(distinct x)except`}peach v from info; 
	info:update ndv:count each sdv from info;
	info:update gr:floor 0.5+100*ndv%nas,mw:{max count each x}peach sdv from info where 0<ndv;
	info:update t:"*",rule:20 from info where mw>.csv.FORCECHARWIDTH; / long values
	info:update t:"C "[.csv.DISCARDEMPTY],rule:30,empty:1b from info where t="?",mw=0; / empty columns
	info:update dchar:{asc distinct raze x}peach sdv from info where t="?";
	info:update mdot:{max sum each"."=x}peach sdv from info where t="?",{"."in x}each dchar;
	info:update t:"n",rule:40 from info where t="?",{any x in"0123456789"}each dchar; / vaguely numeric..
	info:update t:"I",rule:50,ipa:1b from info where t="n",mw within 7 15,mdot=3,{all x in".0123456789"}each dchar,.csv.cancast["I"]peach sdv; / ip-address
	info:update t:"J",rule:60 from info where t="n",mdot=0,{all x in"+-0123456789"}each dchar,.csv.cancast["J"]peach sdv;
	info:update t:"I",rule:70 from info where t="J",mw<12,.csv.cancast["I"]peach sdv;
	info:update t:"H",rule:80 from info where t="I",mw<7,.csv.cancast["H"]peach sdv;
	info:update t:"F",rule:90 from info where t="n",mdot<2,mw>1,.csv.cancast["F"]peach sdv;
	info:update t:"E",rule:100,maybe:1b from info where t="F",mw<9;
	info:update t:"M",rule:110,maybe:1b from info where t in"nIHEF",mdot<2,mw within 4 7,.csv.cancast["M"]peach sdv; 
	info:update t:"D",rule:120,maybe:1b from info where t in"nI",mdot in 0 2,mw within 6 11,.csv.cancast["D"]peach sdv; 
	info:update t:"V",rule:130,maybe:1b from info where t="I",mw in 5 6,7<count each dchar,{all x like"*[0-9][0-5][0-9][0-5][0-9]"}peach sdv,.csv.cancast["V"]peach sdv; / 235959 12345        
	info:update t:"U",rule:140,maybe:1b from info where t="H",mw in 3 4,7<count each dchar,{all x like"*[0-9][0-5][0-9]"}peach sdv,.csv.cancast["U"]peach sdv; /2359
	info:update t:"U",rule:150,maybe:0b from info where t="n",mw in 4 5,mdot=0,{all x like"*[0-9]:[0-5][0-9]"}peach sdv,.csv.cancast["U"]peach sdv;
	info:update t:"T",rule:160,maybe:0b from info where t="n",mw within 7 12,mdot<2,{all x like"*[0-9]:[0-5][0-9]:[0-5][0-9]*"}peach sdv,.csv.cancast["T"]peach sdv;
	info:update t:"V",rule:170,maybe:0b from info where t="T",mw in 7 8,mdot=0,.csv.cancast["V"]peach sdv;
	info:update t:"T",rule:180,maybe:1b from info where t in"EF",mw within 7 10,mdot=1,{all x like"*[0-9][0-5][0-9][0-5][0-9].*"}peach sdv,.csv.cancast["T"]peach sdv;
	info:update t:"Z",rule:190,maybe:0b from info where t="n",mw within 11 24,mdot<4,.csv.cancast["Z"]peach sdv;
	info:update t:"P",rule:200,maybe:1b from info where t="n",mw within 12 29,mdot<4,{all x like"[12]*"}peach sdv,.csv.cancast["P"]peach sdv;
	info:update t:"N",rule:210,maybe:1b from info where t="n",mw within 3 28,mdot=1,.csv.cancast["N"]peach sdv;
	info:update t:"?",rule:220,maybe:0b from info where t="n"; / reset remaining maybe numeric
	info:update t:"C",rule:230,maybe:0b from info where t="?",mw=1; / char
	info:update t:"B",rule:240,maybe:0b from info where t in"HC",mw=1,mdot=0,{$[all x in"01tTfFyYnN";(any"0fFnN"in x)and any"1tTyY"in x;0b]}each dchar; / boolean
	info:update t:"B",rule:250,maybe:1b from info where t in"HC",mw=1,mdot=0,{all x in"01tTfFyYnN"}each dchar; / boolean
	info:update t:"X",rule:260,maybe:0b from info where t="?",mw=2,{$[all x in"0123456789abcdefABCDEF";(any .Q.n in x)and any"abcdefABCDEF"in x;0b]}each dchar; /hex
	info:update t:"S",rule:270,maybe:1b from info where t="?",mw<.csv.SYMMAXWIDTH,mw>1,gr<.csv.SYMMAXGR; / symbols (max width permitting)
	info:update t:"*",rule:280,maybe:0b from info where t="?"; / the rest as strings
	/ flag those S/* columns which could be encoded to integers (.Q.j10/x10/j12/x12) to avoid symbols
	info:update j12:1b from info where t in"S*",mw<13,{all x in .Q.nA}each dchar;
	info:update j10:1b from info where t in"S*",mw<11,{all x in .Q.b6}each dchar; 
	select c,ci,t,maybe,empty,res,j10,j12,ipa,mw,mdot,rule,gr,ndv,dchar from info}
info:info0[;()] / by default don't restrict columns
infolike:{[file;pattern] info0[file;{x where x like y}[lower colhdrs[file];pattern]]} / .csv.infolike[file;"*time"]

\d .
/ DATA:()
bulkload:{[file;info]
	if[not`DATA in system"v";'`DATA.not.defined];
	if[count DATA;'`DATA.not.empty];
	loadhdrs:exec c from info where not t=" ";loadfmts:exec t from info;
	.csv.fs2[{[file;loadhdrs;loadfmts] `DATA insert $[count DATA;flip loadhdrs!(loadfmts;.csv.DELIM)0:file;loadhdrs xcol(loadfmts;enlist .csv.DELIM)0:file]}[file;loadhdrs;loadfmts]];
	count DATA}
@[.:;"\\l csvutil.custom.q";::]; / save your custom settings in csvutil.custom.q to override those set at the beginning of the file 
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true
      });
    </script>

    <p><strong>MIME type defined:</strong> <code>text/x-q</code>.</p>
  </article>
lib/codemirror/mode/solr/index.html000064400000002525147361034410013366 0ustar00<!doctype html>

<title>CodeMirror: Solr mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="solr.js"></script>
<style type="text/css">
  .CodeMirror {
    border-top: 1px solid black;
    border-bottom: 1px solid black;
  }

  .CodeMirror .cm-operator {
    color: orange;
  }
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Solr</a>
  </ul>
</div>

<article>
  <h2>Solr mode</h2>

  <div>
    <textarea id="code" name="code">author:Camus

title:"The Rebel" and author:Camus

philosophy:Existentialism -author:Kierkegaard

hardToSpell:Dostoevsky~

published:[194* TO 1960] and author:(Sartre or "Simone de Beauvoir")</textarea>
  </div>

  <script>
    var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
      mode: 'solr',
      lineNumbers: true
    });
  </script>

  <p><strong>MIME types defined:</strong> <code>text/x-solr</code>.</p>
</article>
lib/codemirror/mode/solr/solr.js000064400000005166147361034410012712 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("solr", function() {
  "use strict";

  var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\^\"\\]/;
  var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/;
  var isOperatorString = /^(OR|AND|NOT|TO)$/i;

  function isNumber(word) {
    return parseFloat(word, 10).toString() === word;
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) break;
        escaped = !escaped && next == "\\";
      }

      if (!escaped) state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenOperator(operator) {
    return function(stream, state) {
      var style = "operator";
      if (operator == "+")
        style += " positive";
      else if (operator == "-")
        style += " negative";
      else if (operator == "|")
        stream.eat(/\|/);
      else if (operator == "&")
        stream.eat(/\&/);
      else if (operator == "^")
        style += " boost";

      state.tokenize = tokenBase;
      return style;
    };
  }

  function tokenWord(ch) {
    return function(stream, state) {
      var word = ch;
      while ((ch = stream.peek()) && ch.match(isStringChar) != null) {
        word += stream.next();
      }

      state.tokenize = tokenBase;
      if (isOperatorString.test(word))
        return "operator";
      else if (isNumber(word))
        return "number";
      else if (stream.peek() == ":")
        return "field";
      else
        return "string";
    };
  }

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"')
      state.tokenize = tokenString(ch);
    else if (isOperatorChar.test(ch))
      state.tokenize = tokenOperator(ch);
    else if (isStringChar.test(ch))
      state.tokenize = tokenWord(ch);

    return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null;
  }

  return {
    startState: function() {
      return {
        tokenize: tokenBase
      };
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME("text/x-solr", "solr");

});
lib/codemirror/mode/mscgen/mscgen_test.js000064400000006777147361034410014554 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "mscgen");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("empty chart",
     "[keyword msc][bracket {]",
     "[base   ]",
     "[bracket }]"
   );

  MT("comments",
    "[comment // a single line comment]",
    "[comment # another  single line comment /* and */ ignored here]",
    "[comment /* A multi-line comment even though it contains]",
    "[comment msc keywords and \"quoted text\"*/]");

  MT("strings",
    "[string \"// a string\"]",
    "[string \"a string running over]",
    "[string two lines\"]",
    "[string \"with \\\"escaped quote\"]"
  );

  MT("xù/ msgenny keywords classify as 'base'",
    "[base watermark]",
    "[base alt loop opt ref else break par seq assert]"
  );

  MT("mscgen options classify as keyword",
    "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]"
  );

  MT("mscgen arcs classify as keyword",
    "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]",
    "[keyword |||...---]", "[keyword ..--==::]",
    "[keyword ->]", "[keyword <-]", "[keyword <->]",
    "[keyword =>]", "[keyword <=]", "[keyword <=>]",
    "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]",
    "[keyword >>]", "[keyword <<]", "[keyword <<>>]",
    "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]",
    "[keyword :>]", "[keyword <:]", "[keyword <:>]"
  );

  MT("within an attribute list, attributes classify as attribute",
    "[bracket [[][attribute label]",
    "[attribute id]","[attribute url]","[attribute idurl]",
    "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]",
    "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]",
    "[attribute arcskip][bracket ]]]"
  );

  MT("outside an attribute list, attributes classify as base",
    "[base label]",
    "[base id]","[base url]","[base idurl]",
    "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]",
    "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]",
    "[base arcskip]"
  );

  MT("a typical program",
    "[comment # typical mscgen program]",
    "[keyword msc][base  ][bracket {]",
    "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]",
    "[base   a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]",
    "[base   b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]",
    "[base   c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]",
    "[base   a ][keyword =>>][base  b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]",
    "[base   a ][keyword <<][base  b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]",
    "[base   c ][keyword :>][base  *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]",
    "[bracket }]"
  );
})();
lib/codemirror/mode/mscgen/index.html000064400000010327147361034410013662 0ustar00<!doctype html>

<title>CodeMirror: MscGen mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="mscgen.js"></script>
<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">MscGen</a>
  </ul>
</div>

<article>
<h2>MscGen mode</h2>

<div><textarea id="mscgen-code">
# Sample mscgen program
# See http://www.mcternan.me.uk/mscgen or
# https://sverweij.github.io/mscgen_js for more samples
msc {
  # options
  hscale="1.2";

  # entities/ lifelines
  a [label="Entity A"],
  b [label="Entity B", linecolor="red", arclinecolor="red", textbgcolor="pink"],
  c [label="Entity C"];

  # arcs/ messages
  a => c [label="doSomething(args)"];
  b => c [label="doSomething(args)"];
  c >> * [label="everyone asked me", arcskip="1"];
  c =>> c [label="doing something"];
  c -x * [label="report back", arcskip="1"];
  |||;
  --- [label="shows's over, however ..."];
  b => a [label="did you see c doing something?"];
  a -> b [label="nope"];
  b :> a [label="shall we ask again?"];
  a => b [label="naah"];
  ...;
}
</textarea></div>

<h2>Xù mode</h2>

<div><textarea id="xu-code">
# Xù - expansions to MscGen to support inline expressions
#      https://github.com/sverweij/mscgen_js/blob/master/wikum/xu.md
# More samples: https://sverweij.github.io/mscgen_js
msc {
  hscale="0.8",
  width="700";

  a,
  b [label="change store"],
  c,
  d [label="necro queue"],
  e [label="natalis queue"],
  f;

  a =>> b [label="get change list()"];
  a alt f [label="changes found"] { /* alt is a xu specific keyword*/
    b >> a [label="list of changes"];
    a =>> c [label="cull old stuff (list of changes)"];
    b loop e [label="for each change"] { // loop is xu specific as well...
      /*
       * Interesting stuff happens.
       */
      c =>> b [label="get change()"];
      b >> c [label="change"];
      c alt e [label="change too old"] {
        c =>> d [label="queue(change)"];
        --- [label="change newer than latest run"];
        c =>> e [label="queue(change)"];
        --- [label="all other cases"];
        ||| [label="leave well alone"];
      };
    };

    c >> a [label="done
    processing"];

    /* shucks! nothing found ...*/
    --- [label="nothing found"];
    b >> a [label="nothing"];
    a note a [label="silent exit"];
  };
}
</textarea></div>

<h2>MsGenny mode</h2>
<div><textarea id="msgenny-code">
# MsGenny - simplified version of MscGen / Xù
#           https://github.com/sverweij/mscgen_js/blob/master/wikum/msgenny.md
# More samples: https://sverweij.github.io/mscgen_js
a -> b   : a -> b  (signal);
a => b   : a => b  (method);
b >> a   : b >> a  (return value);
a =>> b  : a =>> b (callback);
a -x b   : a -x b  (lost);
a :> b   : a :> b  (emphasis);
a .. b   : a .. b  (dotted);
a -- b   : "a -- b straight line";
a note a : a note a\n(note),
b box b  : b box b\n(action);
a rbox a : a rbox a\n(reference),
b abox b : b abox b\n(state/ condition);
|||      : ||| (empty row);
...      : ... (omitted row);
---      : --- (comment);
</textarea></div>

    <p>
      Simple mode for highlighting MscGen and two derived sequence
      chart languages.
    </p>

    <script>
      var mscgenEditor = CodeMirror.fromTextArea(document.getElementById("mscgen-code"), {
        lineNumbers: true,
        mode: "text/x-mscgen",
      });
      var xuEditor = CodeMirror.fromTextArea(document.getElementById("xu-code"), {
        lineNumbers: true,
        mode: "text/x-xu",
      });
      var msgennyEditor = CodeMirror.fromTextArea(document.getElementById("msgenny-code"), {
        lineNumbers: true,
        mode: "text/x-msgenny",
      });
    </script>

    <p><strong>MIME types defined:</strong>
      <code>text/x-mscgen</code>
      <code>text/x-xu</code>
      <code>text/x-msgenny</code>
    </p>

</article>
lib/codemirror/mode/mscgen/xu_test.js000064400000007150147361034410013716 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-xu");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "xu"); }

  MT("empty chart",
     "[keyword msc][bracket {]",
     "[base   ]",
     "[bracket }]"
   );

  MT("comments",
    "[comment // a single line comment]",
    "[comment # another  single line comment /* and */ ignored here]",
    "[comment /* A multi-line comment even though it contains]",
    "[comment msc keywords and \"quoted text\"*/]");

  MT("strings",
    "[string \"// a string\"]",
    "[string \"a string running over]",
    "[string two lines\"]",
    "[string \"with \\\"escaped quote\"]"
  );

  MT("xù/ msgenny keywords classify as 'keyword'",
    "[keyword watermark]",
    "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]"
  );

  MT("mscgen options classify as keyword",
    "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]"
  );

  MT("mscgen arcs classify as keyword",
    "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]",
    "[keyword |||...---]", "[keyword ..--==::]",
    "[keyword ->]", "[keyword <-]", "[keyword <->]",
    "[keyword =>]", "[keyword <=]", "[keyword <=>]",
    "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]",
    "[keyword >>]", "[keyword <<]", "[keyword <<>>]",
    "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]",
    "[keyword :>]", "[keyword <:]", "[keyword <:>]"
  );

  MT("within an attribute list, attributes classify as attribute",
    "[bracket [[][attribute label]",
    "[attribute id]","[attribute url]","[attribute idurl]",
    "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]",
    "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]",
    "[attribute arcskip][bracket ]]]"
  );

  MT("outside an attribute list, attributes classify as base",
    "[base label]",
    "[base id]","[base url]","[base idurl]",
    "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]",
    "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]",
    "[base arcskip]"
  );

  MT("a typical program",
    "[comment # typical mscgen program]",
    "[keyword msc][base  ][bracket {]",
    "[keyword wordwraparcs][operator =][string \"true\"][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]",
    "[base   a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]",
    "[base   b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]",
    "[base   c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]",
    "[base   a ][keyword =>>][base  b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]",
    "[base   a ][keyword <<][base  b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]",
    "[base   c ][keyword :>][base  *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]",
    "[bracket }]"
  );
})();
lib/codemirror/mode/mscgen/mscgen.js000064400000014573147361034410013506 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// mode(s) for the sequence chart dsl's mscgen, xù and msgenny
// For more information on mscgen, see the site of the original author:
// http://www.mcternan.me.uk/mscgen
//
// This mode for mscgen and the two derivative languages were
// originally made for use in the mscgen_js interpreter
// (https://sverweij.github.io/mscgen_js)

(function(mod) {
  if ( typeof exports == "object" && typeof module == "object")// CommonJS
    mod(require("../../lib/codemirror"));
  else if ( typeof define == "function" && define.amd)// AMD
    define(["../../lib/codemirror"], mod);
  else// Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var languages = {
    mscgen: {
      "keywords" : ["msc"],
      "options" : ["hscale", "width", "arcgradient", "wordwraparcs"],
      "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"],
      "brackets" : ["\\{", "\\}"], // [ and  ] are brackets too, but these get handled in with lists
      "arcsWords" : ["note", "abox", "rbox", "box"],
      "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"],
      "singlecomment" : ["//", "#"],
      "operators" : ["="]
    },
    xu: {
      "keywords" : ["msc"],
      "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"],
      "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"],
      "brackets" : ["\\{", "\\}"],  // [ and  ] are brackets too, but these get handled in with lists
      "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"],
      "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"],
      "singlecomment" : ["//", "#"],
      "operators" : ["="]
    },
    msgenny: {
      "keywords" : null,
      "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"],
      "attributes" : null,
      "brackets" : ["\\{", "\\}"],
      "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"],
      "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"],
      "singlecomment" : ["//", "#"],
      "operators" : ["="]
    }
  }

  CodeMirror.defineMode("mscgen", function(_, modeConfig) {
    var language = languages[modeConfig && modeConfig.language || "mscgen"]
    return {
      startState: startStateFn,
      copyState: copyStateFn,
      token: produceTokenFunction(language),
      lineComment : "#",
      blockCommentStart : "/*",
      blockCommentEnd : "*/"
    };
  });

  CodeMirror.defineMIME("text/x-mscgen", "mscgen");
  CodeMirror.defineMIME("text/x-xu", {name: "mscgen", language: "xu"});
  CodeMirror.defineMIME("text/x-msgenny", {name: "mscgen", language: "msgenny"});

  function wordRegexpBoundary(pWords) {
    return new RegExp("\\b(" + pWords.join("|") + ")\\b", "i");
  }

  function wordRegexp(pWords) {
    return new RegExp("(" + pWords.join("|") + ")", "i");
  }

  function startStateFn() {
    return {
      inComment : false,
      inString : false,
      inAttributeList : false,
      inScript : false
    };
  }

  function copyStateFn(pState) {
    return {
      inComment : pState.inComment,
      inString : pState.inString,
      inAttributeList : pState.inAttributeList,
      inScript : pState.inScript
    };
  }

  function produceTokenFunction(pConfig) {

    return function(pStream, pState) {
      if (pStream.match(wordRegexp(pConfig.brackets), true, true)) {
        return "bracket";
      }
      /* comments */
      if (!pState.inComment) {
        if (pStream.match(/\/\*[^\*\/]*/, true, true)) {
          pState.inComment = true;
          return "comment";
        }
        if (pStream.match(wordRegexp(pConfig.singlecomment), true, true)) {
          pStream.skipToEnd();
          return "comment";
        }
      }
      if (pState.inComment) {
        if (pStream.match(/[^\*\/]*\*\//, true, true))
          pState.inComment = false;
        else
          pStream.skipToEnd();
        return "comment";
      }
      /* strings */
      if (!pState.inString && pStream.match(/\"(\\\"|[^\"])*/, true, true)) {
        pState.inString = true;
        return "string";
      }
      if (pState.inString) {
        if (pStream.match(/[^\"]*\"/, true, true))
          pState.inString = false;
        else
          pStream.skipToEnd();
        return "string";
      }
      /* keywords & operators */
      if (!!pConfig.keywords && pStream.match(wordRegexpBoundary(pConfig.keywords), true, true))
        return "keyword";

      if (pStream.match(wordRegexpBoundary(pConfig.options), true, true))
        return "keyword";

      if (pStream.match(wordRegexpBoundary(pConfig.arcsWords), true, true))
        return "keyword";

      if (pStream.match(wordRegexp(pConfig.arcsOthers), true, true))
        return "keyword";

      if (!!pConfig.operators && pStream.match(wordRegexp(pConfig.operators), true, true))
        return "operator";

      /* attribute lists */
      if (!pConfig.inAttributeList && !!pConfig.attributes && pStream.match(/\[/, true, true)) {
        pConfig.inAttributeList = true;
        return "bracket";
      }
      if (pConfig.inAttributeList) {
        if (pConfig.attributes !== null && pStream.match(wordRegexpBoundary(pConfig.attributes), true, true)) {
          return "attribute";
        }
        if (pStream.match(/]/, true, true)) {
          pConfig.inAttributeList = false;
          return "bracket";
        }
      }

      pStream.next();
      return "base";
    };
  }

});
lib/codemirror/mode/mscgen/msgenny_test.js000064400000006031147361034410014737 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-msgenny");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "msgenny"); }

  MT("comments",
    "[comment // a single line comment]",
    "[comment # another  single line comment /* and */ ignored here]",
    "[comment /* A multi-line comment even though it contains]",
    "[comment msc keywords and \"quoted text\"*/]");

  MT("strings",
    "[string \"// a string\"]",
    "[string \"a string running over]",
    "[string two lines\"]",
    "[string \"with \\\"escaped quote\"]"
  );

  MT("xù/ msgenny keywords classify as 'keyword'",
    "[keyword watermark]",
    "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]"
  );

  MT("mscgen options classify as keyword",
    "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]"
  );

  MT("mscgen arcs classify as keyword",
    "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]",
    "[keyword |||...---]", "[keyword ..--==::]",
    "[keyword ->]", "[keyword <-]", "[keyword <->]",
    "[keyword =>]", "[keyword <=]", "[keyword <=>]",
    "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]",
    "[keyword >>]", "[keyword <<]", "[keyword <<>>]",
    "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]",
    "[keyword :>]", "[keyword <:]", "[keyword <:>]"
  );

  MT("within an attribute list, mscgen/ xù attributes classify as base",
    "[base [[label]",
    "[base idurl id url]",
    "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]",
    "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]",
    "[base arcskip]]]"
  );

  MT("outside an attribute list, mscgen/ xù attributes classify as base",
    "[base label]",
    "[base idurl id url]",
    "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]",
    "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]",
    "[base arcskip]"
  );

  MT("a typical program",
    "[comment # typical msgenny program]",
    "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30;]",
    "[base   a : ][string \"Entity A\"][base ,]",
    "[base   b : Entity B,]",
    "[base   c : Entity C;]",
    "[base   a ][keyword =>>][base  b: ][string \"Hello entity B\"][base ;]",
    "[base   a ][keyword alt][base  c][bracket {]",
    "[base     a ][keyword <<][base  b: ][string \"Here's an answer dude!\"][base ;]",
    "[keyword ---][base : ][string \"sorry, won't march - comm glitch\"]",
    "[base     a ][keyword x-][base  b: ][string \"Here's an answer dude! (won't arrive...)\"][base ;]",
    "[bracket }]",
    "[base   c ][keyword :>][base  *: What about me?;]"
  );
})();
lib/codemirror/mode/ttcn/ttcn.js000064400000023653147361034410012675 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("ttcn", function(config, parserConfig) {
    var indentUnit = config.indentUnit,
        keywords = parserConfig.keywords || {},
        builtin = parserConfig.builtin || {},
        timerOps = parserConfig.timerOps || {},
        portOps  = parserConfig.portOps || {},
        configOps = parserConfig.configOps || {},
        verdictOps = parserConfig.verdictOps || {},
        sutOps = parserConfig.sutOps || {},
        functionOps = parserConfig.functionOps || {},

        verdictConsts = parserConfig.verdictConsts || {},
        booleanConsts = parserConfig.booleanConsts || {},
        otherConsts   = parserConfig.otherConsts || {},

        types = parserConfig.types || {},
        visibilityModifiers = parserConfig.visibilityModifiers || {},
        templateMatch = parserConfig.templateMatch || {},
        multiLineStrings = parserConfig.multiLineStrings,
        indentStatements = parserConfig.indentStatements !== false;
    var isOperatorChar = /[+\-*&@=<>!\/]/;
    var curPunc;

    function tokenBase(stream, state) {
      var ch = stream.next();

      if (ch == '"' || ch == "'") {
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      if (/[\[\]{}\(\),;\\:\?\.]/.test(ch)) {
        curPunc = ch;
        return "punctuation";
      }
      if (ch == "#"){
        stream.skipToEnd();
        return "atom preprocessor";
      }
      if (ch == "%"){
        stream.eatWhile(/\b/);
        return "atom ttcn3Macros";
      }
      if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (ch == "/") {
        if (stream.eat("*")) {
          state.tokenize = tokenComment;
          return tokenComment(stream, state);
        }
        if (stream.eat("/")) {
          stream.skipToEnd();
          return "comment";
        }
      }
      if (isOperatorChar.test(ch)) {
        if(ch == "@"){
          if(stream.match("try") || stream.match("catch")
              || stream.match("lazy")){
            return "keyword";
          }
        }
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
      stream.eatWhile(/[\w\$_\xa1-\uffff]/);
      var cur = stream.current();

      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      if (builtin.propertyIsEnumerable(cur)) return "builtin";

      if (timerOps.propertyIsEnumerable(cur)) return "def timerOps";
      if (configOps.propertyIsEnumerable(cur)) return "def configOps";
      if (verdictOps.propertyIsEnumerable(cur)) return "def verdictOps";
      if (portOps.propertyIsEnumerable(cur)) return "def portOps";
      if (sutOps.propertyIsEnumerable(cur)) return "def sutOps";
      if (functionOps.propertyIsEnumerable(cur)) return "def functionOps";

      if (verdictConsts.propertyIsEnumerable(cur)) return "string verdictConsts";
      if (booleanConsts.propertyIsEnumerable(cur)) return "string booleanConsts";
      if (otherConsts.propertyIsEnumerable(cur)) return "string otherConsts";

      if (types.propertyIsEnumerable(cur)) return "builtin types";
      if (visibilityModifiers.propertyIsEnumerable(cur))
        return "builtin visibilityModifiers";
      if (templateMatch.propertyIsEnumerable(cur)) return "atom templateMatch";

      return "variable";
    }

    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, next, end = false;
        while ((next = stream.next()) != null) {
          if (next == quote && !escaped){
            var afterQuote = stream.peek();
            //look if the character after the quote is like the B in '10100010'B
            if (afterQuote){
              afterQuote = afterQuote.toLowerCase();
              if(afterQuote == "b" || afterQuote == "h" || afterQuote == "o")
                stream.next();
            }
            end = true; break;
          }
          escaped = !escaped && next == "\\";
        }
        if (end || !(escaped || multiLineStrings))
          state.tokenize = null;
        return "string";
      };
    }

    function tokenComment(stream, state) {
      var maybeEnd = false, ch;
      while (ch = stream.next()) {
        if (ch == "/" && maybeEnd) {
          state.tokenize = null;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return "comment";
    }

    function Context(indented, column, type, align, prev) {
      this.indented = indented;
      this.column = column;
      this.type = type;
      this.align = align;
      this.prev = prev;
    }

    function pushContext(state, col, type) {
      var indent = state.indented;
      if (state.context && state.context.type == "statement")
        indent = state.context.indented;
      return state.context = new Context(indent, col, type, null, state.context);
    }

    function popContext(state) {
      var t = state.context.type;
      if (t == ")" || t == "]" || t == "}")
        state.indented = state.context.indented;
      return state.context = state.context.prev;
    }

    //Interface
    return {
      startState: function(basecolumn) {
        return {
          tokenize: null,
          context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
          indented: 0,
          startOfLine: true
        };
      },

      token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
          if (ctx.align == null) ctx.align = false;
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        curPunc = null;
        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        if ((curPunc == ";" || curPunc == ":" || curPunc == ",")
            && ctx.type == "statement"){
          popContext(state);
        }
        else if (curPunc == "{") pushContext(state, stream.column(), "}");
        else if (curPunc == "[") pushContext(state, stream.column(), "]");
        else if (curPunc == "(") pushContext(state, stream.column(), ")");
        else if (curPunc == "}") {
          while (ctx.type == "statement") ctx = popContext(state);
          if (ctx.type == "}") ctx = popContext(state);
          while (ctx.type == "statement") ctx = popContext(state);
        }
        else if (curPunc == ctx.type) popContext(state);
        else if (indentStatements &&
            (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') ||
            (ctx.type == "statement" && curPunc == "newstatement")))
          pushContext(state, stream.column(), "statement");

        state.startOfLine = false;

        return style;
      },

      electricChars: "{}",
      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      lineComment: "//",
      fold: "brace"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  function def(mimes, mode) {
    if (typeof mimes == "string") mimes = [mimes];
    var words = [];
    function add(obj) {
      if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))
        words.push(prop);
    }

    add(mode.keywords);
    add(mode.builtin);
    add(mode.timerOps);
    add(mode.portOps);

    if (words.length) {
      mode.helperType = mimes[0];
      CodeMirror.registerHelper("hintWords", mimes[0], words);
    }

    for (var i = 0; i < mimes.length; ++i)
      CodeMirror.defineMIME(mimes[i], mode);
  }

  def(["text/x-ttcn", "text/x-ttcn3", "text/x-ttcnpp"], {
    name: "ttcn",
    keywords: words("activate address alive all alt altstep and and4b any" +
    " break case component const continue control deactivate" +
    " display do else encode enumerated except exception" +
    " execute extends extension external for from function" +
    " goto group if import in infinity inout interleave" +
    " label language length log match message mixed mod" +
    " modifies module modulepar mtc noblock not not4b nowait" +
    " of on optional or or4b out override param pattern port" +
    " procedure record recursive rem repeat return runs select" +
    " self sender set signature system template testcase to" +
    " type union value valueof var variant while with xor xor4b"),
    builtin: words("bit2hex bit2int bit2oct bit2str char2int char2oct encvalue" +
    " decomp decvalue float2int float2str hex2bit hex2int" +
    " hex2oct hex2str int2bit int2char int2float int2hex" +
    " int2oct int2str int2unichar isbound ischosen ispresent" +
    " isvalue lengthof log2str oct2bit oct2char oct2hex oct2int" +
    " oct2str regexp replace rnd sizeof str2bit str2float" +
    " str2hex str2int str2oct substr unichar2int unichar2char" +
    " enum2int"),
    types: words("anytype bitstring boolean char charstring default float" +
    " hexstring integer objid octetstring universal verdicttype timer"),
    timerOps: words("read running start stop timeout"),
    portOps: words("call catch check clear getcall getreply halt raise receive" +
    " reply send trigger"),
    configOps: words("create connect disconnect done kill killed map unmap"),
    verdictOps: words("getverdict setverdict"),
    sutOps: words("action"),
    functionOps: words("apply derefers refers"),

    verdictConsts: words("error fail inconc none pass"),
    booleanConsts: words("true false"),
    otherConsts: words("null NULL omit"),

    visibilityModifiers: words("private public friend"),
    templateMatch: words("complement ifpresent subset superset permutation"),
    multiLineStrings: true
  });
});
lib/codemirror/mode/ttcn/index.html000064400000006642147361034410013363 0ustar00<!doctype html>

<title>CodeMirror: TTCN mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="ttcn.js"></script>
<style type="text/css">
    .CodeMirror {
        border-top: 1px solid black;
        border-bottom: 1px solid black;
    }
</style>
<div id=nav>
    <a href="http://codemirror.net"><h1>CodeMirror</h1>
        <img id=logo src="../../doc/logo.png">
    </a>

    <ul>
        <li><a href="../../index.html">Home</a>
        <li><a href="../../doc/manual.html">Manual</a>
        <li><a href="https://github.com/codemirror/codemirror">Code</a>
    </ul>
    <ul>
        <li><a href="../index.html">Language modes</a>
        <li><a class=active href="http://en.wikipedia.org/wiki/TTCN">TTCN</a>
    </ul>
</div>
<article>
    <h2>TTCN example</h2>
    <div>
        <textarea id="ttcn-code">
module Templates {
  /* import types from ASN.1 */
  import from Types language "ASN.1:1997" all;

  /* During the conversion phase from ASN.1 to TTCN-3 */
  /* - the minus sign (Message-Type) within the identifiers will be replaced by underscore (Message_Type)*/
  /* - the ASN.1 identifiers matching a TTCN-3 keyword (objid) will be postfixed with an underscore (objid_)*/

  // simple types

  template SenderID localObjid := objid {itu_t(0) identified_organization(4) etsi(0)};

  // complex types

  /* ASN.1 Message-Type mapped to TTCN-3 Message_Type */
  template Message receiveMsg(template (present) Message_Type p_messageType) := {
    header := p_messageType,
    body := ?
  }

  /* ASN.1 objid mapped to TTCN-3 objid_ */
  template Message sendInviteMsg := {
      header := inviteType,
      body := {
        /* optional fields may be assigned by omit or may be ignored/skipped */
        description := "Invite Message",
        data := 'FF'O,
        objid_ := localObjid
      }
  }

  template Message sendAcceptMsg modifies sendInviteMsg := {
      header := acceptType,
      body := {
        description := "Accept Message"
      }
    };

  template Message sendErrorMsg modifies sendInviteMsg := {
      header := errorType,
      body := {
        description := "Error Message"
      }
    };

  template Message expectedErrorMsg := {
      header := errorType,
      body := ?
    };

  template Message expectedInviteMsg modifies expectedErrorMsg := {
      header := inviteType
    };

  template Message expectedAcceptMsg modifies expectedErrorMsg := {
      header := acceptType
    };

} with { encode "BER:1997" }
        </textarea>
    </div>

    <script> 
      var ttcnEditor = CodeMirror.fromTextArea(document.getElementById("ttcn-code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-ttcn"
      });
      ttcnEditor.setSize(600, 860);
      var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;
      CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete";
    </script>
    <br/>
    <p><strong>Language:</strong> Testing and Test Control Notation
        (<a href="http://en.wikipedia.org/wiki/TTCN">TTCN</a>)
    </p>
    <p><strong>MIME types defined:</strong> <code>text/x-ttcn,
        text/x-ttcn3, text/x-ttcnpp</code>.</p>
    <br/>
    <p>The development of this mode has been sponsored by <a href="http://www.ericsson.com/">Ericsson
    </a>.</p>
    <p>Coded by Asmelash Tsegay Gebretsadkan </p>
</article>

lib/codemirror/mode/julia/index.html000064400000004507147361034410013515 0ustar00<!doctype html>

<title>CodeMirror: Julia mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="julia.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Julia</a>
  </ul>
</div>

<article>
<h2>Julia mode</h2>

    <div><textarea id="code" name="code">
#numbers
1234
1234im
.234
.234im
2.23im
2.3f3
23e2
0x234

#strings
'a'
"asdf"
r"regex"
b"bytestring"

"""
multiline string
"""

#identifiers
a
as123
function_name!

#unicode identifiers
# a = x\ddot
a⃗ = ẍ
# a = v\dot
a⃗ = v̇
#F\vec = m \cdotp a\vec
F⃗ = m·a⃗

#literal identifier multiples
3x
4[1, 2, 3]

#dicts and indexing
x=[1, 2, 3]
x[end-1]
x={"julia"=>"language of technical computing"}


#exception handling
try
  f()
catch
  @printf "Error"
finally
  g()
end

#types
immutable Color{T<:Number}
  r::T
  g::T
  b::T
end

#functions
function change!(x::Vector{Float64})
  for i = 1:length(x)
    x[i] *= 2
  end
end

#function invocation
f('b', (2, 3)...)

#operators
|=
&=
^=
\-
%=
*=
+=
-=
<=
>=
!=
==
%
*
+
-
<
>
!
=
|
&
^
\
?
~
:
$
<:
.<
.>
<<
<<=
>>
>>>>
>>=
>>>=
<<=
<<<=
.<=
.>=
.==
->
//
in
...
//
:=
.//=
.*=
./=
.^=
.%=
.+=
.-=
\=
\\=
||
===
&&
|=
.|=
<:
>:
|>
<|
::
x ? y : z

#macros
@spawnat 2 1+1
@eval(:x)

#keywords and operators
if else elseif while for
 begin let end do
try catch finally return break continue
global local const 
export import importall using
function macro module baremodule 
type immutable quote
true false enumerate


    </textarea></div>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "julia",
               },
        lineNumbers: true,
        indentUnit: 4,
        matchBrackets: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-julia</code>.</p>
</article>
lib/codemirror/mode/julia/julia.js000064400000026246147361034410013166 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("julia", function(_conf, parserConf) {
  var ERRORCLASS = 'error';

  function wordRegexp(words, end) {
    if (typeof end === 'undefined') { end = "\\b"; }
    return new RegExp("^((" + words.join(")|(") + "))" + end);
  }

  var octChar = "\\\\[0-7]{1,3}";
  var hexChar = "\\\\x[A-Fa-f0-9]{1,2}";
  var specialChar = "\\\\[abfnrtv0%?'\"\\\\]";
  var singleChar = "([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])";
  var operators = parserConf.operators || /^\.?[|&^\\%*+\-<>!=\/]=?|\?|~|:|\$|\.[<>]|<<=?|>>>?=?|\.[<>=]=|->?|\/\/|\bin\b(?!\()|[\u2208\u2209](?!\()/;
  var delimiters = parserConf.delimiters || /^[;,()[\]{}]/;
  var identifiers = parserConf.identifiers || /^[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/;
  var charsList = [octChar, hexChar, specialChar, singleChar];
  var blockOpeners = ["begin", "function", "type", "immutable", "let", "macro", "for", "while", "quote", "if", "else", "elseif", "try", "finally", "catch", "do"];
  var blockClosers = ["end", "else", "elseif", "catch", "finally"];
  var keywordList = ['if', 'else', 'elseif', 'while', 'for', 'begin', 'let', 'end', 'do', 'try', 'catch', 'finally', 'return', 'break', 'continue', 'global', 'local', 'const', 'export', 'import', 'importall', 'using', 'function', 'macro', 'module', 'baremodule', 'type', 'immutable', 'quote', 'typealias', 'abstract', 'bitstype'];
  var builtinList = ['true', 'false', 'nothing', 'NaN', 'Inf'];

  //var stringPrefixes = new RegExp("^[br]?('|\")")
  var stringPrefixes = /^(`|"{3}|([brv]?"))/;
  var chars = wordRegexp(charsList, "'");
  var keywords = wordRegexp(keywordList);
  var builtins = wordRegexp(builtinList);
  var openers = wordRegexp(blockOpeners);
  var closers = wordRegexp(blockClosers);
  var macro = /^@[_A-Za-z][\w]*/;
  var symbol = /^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/;
  var typeAnnotation = /^::[^,;"{()=$\s]+({[^}]*}+)*/;

  function inArray(state) {
    var ch = currentScope(state);
    if (ch == '[') {
      return true;
    }
    return false;
  }

  function currentScope(state) {
    if (state.scopes.length == 0) {
      return null;
    }
    return state.scopes[state.scopes.length - 1];
  }

  // tokenizers
  function tokenBase(stream, state) {
    // Handle multiline comments
    if (stream.match(/^#=/, false)) {
      state.tokenize = tokenComment;
      return state.tokenize(stream, state);
    }

    // Handle scope changes
    var leavingExpr = state.leavingExpr;
    if (stream.sol()) {
      leavingExpr = false;
    }
    state.leavingExpr = false;
    if (leavingExpr) {
      if (stream.match(/^'+/)) {
        return 'operator';
      }
    }

    if (stream.match(/^\.{2,3}/)) {
      return 'operator';
    }

    if (stream.eatSpace()) {
      return null;
    }

    var ch = stream.peek();

    // Handle single line comments
    if (ch === '#') {
      stream.skipToEnd();
      return 'comment';
    }

    if (ch === '[') {
      state.scopes.push('[');
    }

    if (ch === '(') {
      state.scopes.push('(');
    }

    var scope = currentScope(state);

    if (scope == '[' && ch === ']') {
      state.scopes.pop();
      state.leavingExpr = true;
    }

    if (scope == '(' && ch === ')') {
      state.scopes.pop();
      state.leavingExpr = true;
    }

    var match;
    if (!inArray(state) && (match=stream.match(openers, false))) {
      state.scopes.push(match);
    }

    if (!inArray(state) && stream.match(closers, false)) {
      state.scopes.pop();
    }

    if (inArray(state)) {
      if (state.lastToken == 'end' && stream.match(/^:/)) {
        return 'operator';
      }
      if (stream.match(/^end/)) {
        return 'number';
      }
    }

    if (stream.match(/^=>/)) {
      return 'operator';
    }

    // Handle Number Literals
    if (stream.match(/^[0-9\.]/, false)) {
      var imMatcher = RegExp(/^im\b/);
      var numberLiteral = false;
      // Floats
      if (stream.match(/^\d*\.(?!\.)\d*([Eef][\+\-]?\d+)?/i)) { numberLiteral = true; }
      if (stream.match(/^\d+\.(?!\.)\d*/)) { numberLiteral = true; }
      if (stream.match(/^\.\d+/)) { numberLiteral = true; }
      if (stream.match(/^0x\.[0-9a-f]+p[\+\-]?\d+/i)) { numberLiteral = true; }
      // Integers
      if (stream.match(/^0x[0-9a-f]+/i)) { numberLiteral = true; } // Hex
      if (stream.match(/^0b[01]+/i)) { numberLiteral = true; } // Binary
      if (stream.match(/^0o[0-7]+/i)) { numberLiteral = true; } // Octal
      if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { numberLiteral = true; } // Decimal
      // Zero by itself with no other piece of number.
      if (stream.match(/^0(?![\dx])/i)) { numberLiteral = true; }
      if (numberLiteral) {
          // Integer literals may be "long"
          stream.match(imMatcher);
          state.leavingExpr = true;
          return 'number';
      }
    }

    if (stream.match(/^<:/)) {
      return 'operator';
    }

    if (stream.match(typeAnnotation)) {
      return 'builtin';
    }

    // Handle symbols
    if (!leavingExpr && stream.match(symbol) || stream.match(/:\./)) {
      return 'builtin';
    }

    // Handle parametric types
    if (stream.match(/^{[^}]*}(?=\()/)) {
      return 'builtin';
    }

    // Handle operators and Delimiters
    if (stream.match(operators)) {
      return 'operator';
    }

    // Handle Chars
    if (stream.match(/^'/)) {
      state.tokenize = tokenChar;
      return state.tokenize(stream, state);
    }

    // Handle Strings
    if (stream.match(stringPrefixes)) {
      state.tokenize = tokenStringFactory(stream.current());
      return state.tokenize(stream, state);
    }

    if (stream.match(macro)) {
      return 'meta';
    }

    if (stream.match(delimiters)) {
      return null;
    }

    if (stream.match(keywords)) {
      return 'keyword';
    }

    if (stream.match(builtins)) {
      return 'builtin';
    }

    var isDefinition = state.isDefinition ||
                       state.lastToken == 'function' ||
                       state.lastToken == 'macro' ||
                       state.lastToken == 'type' ||
                       state.lastToken == 'immutable';

    if (stream.match(identifiers)) {
      if (isDefinition) {
        if (stream.peek() === '.') {
          state.isDefinition = true;
          return 'variable';
        }
        state.isDefinition = false;
        return 'def';
      }
      if (stream.match(/^({[^}]*})*\(/, false)) {
        return callOrDef(stream, state);
      }
      state.leavingExpr = true;
      return 'variable';
    }

    // Handle non-detected items
    stream.next();
    return ERRORCLASS;
  }

  function callOrDef(stream, state) {
    var match = stream.match(/^(\(\s*)/);
    if (match) {
      if (state.firstParenPos < 0)
        state.firstParenPos = state.scopes.length;
      state.scopes.push('(');
      state.charsAdvanced += match[1].length;
    }
    if (currentScope(state) == '(' && stream.match(/^\)/)) {
      state.scopes.pop();
      state.charsAdvanced += 1;
      if (state.scopes.length <= state.firstParenPos) {
        var isDefinition = stream.match(/^\s*?=(?!=)/, false);
        stream.backUp(state.charsAdvanced);
        state.firstParenPos = -1;
        state.charsAdvanced = 0;
        if (isDefinition)
          return 'def';
        return 'builtin';
      }
    }
    // Unfortunately javascript does not support multiline strings, so we have
    // to undo anything done upto here if a function call or definition splits
    // over two or more lines.
    if (stream.match(/^$/g, false)) {
      stream.backUp(state.charsAdvanced);
      while (state.scopes.length > state.firstParenPos)
        state.scopes.pop();
      state.firstParenPos = -1;
      state.charsAdvanced = 0;
      return 'builtin';
    }
    state.charsAdvanced += stream.match(/^([^()]*)/)[1].length;
    return callOrDef(stream, state);
  }

  function tokenComment(stream, state) {
    if (stream.match(/^#=/)) {
      state.weakScopes++;
    }
    if (!stream.match(/.*?(?=(#=|=#))/)) {
      stream.skipToEnd();
    }
    if (stream.match(/^=#/)) {
      state.weakScopes--;
      if (state.weakScopes == 0)
        state.tokenize = tokenBase;
    }
    return 'comment';
  }

  function tokenChar(stream, state) {
    var isChar = false, match;
    if (stream.match(chars)) {
      isChar = true;
    } else if (match = stream.match(/\\u([a-f0-9]{1,4})(?=')/i)) {
      var value = parseInt(match[1], 16);
      if (value <= 55295 || value >= 57344) { // (U+0,U+D7FF), (U+E000,U+FFFF)
        isChar = true;
        stream.next();
      }
    } else if (match = stream.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)) {
      var value = parseInt(match[1], 16);
      if (value <= 1114111) { // U+10FFFF
        isChar = true;
        stream.next();
      }
    }
    if (isChar) {
      state.leavingExpr = true;
      state.tokenize = tokenBase;
      return 'string';
    }
    if (!stream.match(/^[^']+(?=')/)) { stream.skipToEnd(); }
    if (stream.match(/^'/)) { state.tokenize = tokenBase; }
    return ERRORCLASS;
  }

  function tokenStringFactory(delimiter) {
    while ('bruv'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) {
      delimiter = delimiter.substr(1);
    }
    var OUTCLASS = 'string';

    function tokenString(stream, state) {
      while (!stream.eol()) {
        stream.eatWhile(/[^"\\]/);
        if (stream.eat('\\')) {
            stream.next();
        } else if (stream.match(delimiter)) {
            state.tokenize = tokenBase;
            state.leavingExpr = true;
            return OUTCLASS;
        } else {
            stream.eat(/["]/);
        }
      }
      return OUTCLASS;
    }
    tokenString.isString = true;
    return tokenString;
  }

  var external = {
    startState: function() {
      return {
        tokenize: tokenBase,
        scopes: [],
        weakScopes: 0,
        lastToken: null,
        leavingExpr: false,
        isDefinition: false,
        charsAdvanced: 0,
        firstParenPos: -1
      };
    },

    token: function(stream, state) {
      var style = state.tokenize(stream, state);
      var current = stream.current();

      if (current && style) {
        state.lastToken = current;
      }

      // Handle '.' connected identifiers
      if (current === '.') {
        style = stream.match(identifiers, false) || stream.match(macro, false) ||
                stream.match(/\(/, false) ? 'operator' : ERRORCLASS;
      }
      return style;
    },

    indent: function(state, textAfter) {
      var delta = 0;
      if (textAfter == "]" || textAfter == ")" || textAfter == "end" || textAfter == "else" || textAfter == "elseif" || textAfter == "catch" || textAfter == "finally") {
        delta = -1;
      }
      return (state.scopes.length + delta) * _conf.indentUnit;
    },

    electricInput: /(end|else(if)?|catch|finally)$/,
    lineComment: "#",
    fold: "indent"
  };
  return external;
});


CodeMirror.defineMIME("text/x-julia", "julia");

});
lib/codemirror/mode/yaml/index.html000064400000004062147361034410013347 0ustar00<!doctype html>

<title>CodeMirror: YAML mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="yaml.js"></script>
<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">YAML</a>
  </ul>
</div>

<article>
<h2>YAML mode</h2>
<form><textarea id="code" name="code">
--- # Favorite movies
- Casablanca
- North by Northwest
- The Man Who Wasn't There
--- # Shopping list
[milk, pumpkin pie, eggs, juice]
--- # Indented Blocks, common in YAML data files, use indentation and new lines to separate the key: value pairs
  name: John Smith
  age: 33
--- # Inline Blocks, common in YAML data streams, use commas to separate the key: value pairs between braces
{name: John Smith, age: 33}
---
receipt:     Oz-Ware Purchase Invoice
date:        2007-08-06
customer:
    given:   Dorothy
    family:  Gale

items:
    - part_no:   A4786
      descrip:   Water Bucket (Filled)
      price:     1.47
      quantity:  4

    - part_no:   E1628
      descrip:   High Heeled "Ruby" Slippers
      size:       8
      price:     100.27
      quantity:  1

bill-to:  &id001
    street: |
            123 Tornado Alley
            Suite 16
    city:   East Centerville
    state:  KS

ship-to:  *id001

specialDelivery:  >
    Follow the Yellow Brick
    Road to the Emerald City.
    Pay no attention to the
    man behind the curtain.
...
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-yaml</code>.</p>

  </article>
lib/codemirror/mode/yaml/yaml.js000064400000007101147361034410012647 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("yaml", function() {

  var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];
  var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i');

  return {
    token: function(stream, state) {
      var ch = stream.peek();
      var esc = state.escaped;
      state.escaped = false;
      /* comments */
      if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) {
        stream.skipToEnd();
        return "comment";
      }

      if (stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))
        return "string";

      if (state.literal && stream.indentation() > state.keyCol) {
        stream.skipToEnd(); return "string";
      } else if (state.literal) { state.literal = false; }
      if (stream.sol()) {
        state.keyCol = 0;
        state.pair = false;
        state.pairStart = false;
        /* document start */
        if(stream.match(/---/)) { return "def"; }
        /* document end */
        if (stream.match(/\.\.\./)) { return "def"; }
        /* array list item */
        if (stream.match(/\s*-\s+/)) { return 'meta'; }
      }
      /* inline pairs/lists */
      if (stream.match(/^(\{|\}|\[|\])/)) {
        if (ch == '{')
          state.inlinePairs++;
        else if (ch == '}')
          state.inlinePairs--;
        else if (ch == '[')
          state.inlineList++;
        else
          state.inlineList--;
        return 'meta';
      }

      /* list seperator */
      if (state.inlineList > 0 && !esc && ch == ',') {
        stream.next();
        return 'meta';
      }
      /* pairs seperator */
      if (state.inlinePairs > 0 && !esc && ch == ',') {
        state.keyCol = 0;
        state.pair = false;
        state.pairStart = false;
        stream.next();
        return 'meta';
      }

      /* start of value of a pair */
      if (state.pairStart) {
        /* block literals */
        if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; };
        /* references */
        if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; }
        /* numbers */
        if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }
        if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; }
        /* keywords */
        if (stream.match(keywordRegex)) { return 'keyword'; }
      }

      /* pairs (associative arrays) -> key */
      if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) {
        state.pair = true;
        state.keyCol = stream.indentation();
        return "atom";
      }
      if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }

      /* nothing found, continue */
      state.pairStart = false;
      state.escaped = (ch == '\\');
      stream.next();
      return null;
    },
    startState: function() {
      return {
        pair: false,
        pairStart: false,
        keyCol: 0,
        inlinePairs: 0,
        inlineList: 0,
        literal: false,
        escaped: false
      };
    }
  };
});

CodeMirror.defineMIME("text/x-yaml", "yaml");

});
lib/codemirror/mode/handlebars/handlebars.js000064400000004174147361034410015160 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../../addon/mode/simple"), require("../../addon/mode/multiplex"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../../addon/mode/simple", "../../addon/mode/multiplex"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineSimpleMode("handlebars-tags", {
    start: [
      { regex: /\{\{!--/, push: "dash_comment", token: "comment" },
      { regex: /\{\{!/,   push: "comment", token: "comment" },
      { regex: /\{\{/,    push: "handlebars", token: "tag" }
    ],
    handlebars: [
      { regex: /\}\}/, pop: true, token: "tag" },

      // Double and single quotes
      { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" },
      { regex: /'(?:[^\\']|\\.)*'?/, token: "string" },

      // Handlebars keywords
      { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" },
      { regex: /(?:else|this)\b/, token: "keyword" },

      // Numeral
      { regex: /\d+/i, token: "number" },

      // Atoms like = and .
      { regex: /=|~|@|true|false/, token: "atom" },

      // Paths
      { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token: "variable-2" }
    ],
    dash_comment: [
      { regex: /--\}\}/, pop: true, token: "comment" },

      // Commented code
      { regex: /./, token: "comment"}
    ],
    comment: [
      { regex: /\}\}/, pop: true, token: "comment" },
      { regex: /./, token: "comment" }
    ]
  });

  CodeMirror.defineMode("handlebars", function(config, parserConfig) {
    var handlebars = CodeMirror.getMode(config, "handlebars-tags");
    if (!parserConfig || !parserConfig.base) return handlebars;
    return CodeMirror.multiplexingMode(
      CodeMirror.getMode(config, parserConfig.base),
      {open: "{{", close: "}}", mode: handlebars, parseDelimiters: true}
    );
  });

  CodeMirror.defineMIME("text/x-handlebars-template", "handlebars");
});
lib/codemirror/mode/handlebars/index.html000064400000004224147361034410014510 0ustar00<!doctype html>

<title>CodeMirror: Handlebars mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/simple.js"></script>
<script src="../../addon/mode/multiplex.js"></script>
<script src="../xml/xml.js"></script>
<script src="handlebars.js"></script>
<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">HTML mixed</a>
  </ul>
</div>

<article>
<h2>Handlebars</h2>
<form><textarea id="code" name="code">
{{> breadcrumbs}}

{{!--
  You can use the t function to get
  content translated to the current locale, es:
  {{t 'article_list'}}
--}}

<h1>{{t 'article_list'}}</h1>

{{! one line comment }}

{{#each articles}}
  {{~title}}
  <p>{{excerpt body size=120 ellipsis=true}}</p>

  {{#with author}}
    written by {{first_name}} {{last_name}}
    from category: {{../category.title}}
    {{#if @../last}}foobar!{{/if}}
  {{/with~}}

  {{#if promoted.latest}}Read this one! {{else}} This is ok! {{/if}}

  {{#if @last}}<hr>{{/if}}
{{/each}}

{{#form new_comment}}
  <input type="text" name="body">
{{/form}}

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: {name: "handlebars", base: "text/html"}
      });
    </script>
    
    <p>Handlebars syntax highlighting for CodeMirror.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-handlebars-template</code></p>

    <p>Supported options: <code>base</code> to set the mode to
    wrap. For example, use</p>
    <pre>mode: {name: "handlebars", base: "text/html"}</pre>
    <p>to highlight an HTML template.</p>
</article>
lib/codemirror/mode/brainfuck/brainfuck.js000064400000004176147361034410014664 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11

(function(mod) {
  if (typeof exports == "object" && typeof module == "object")
    mod(require("../../lib/codemirror"))
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod)
  else
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"
  var reserve = "><+-.,[]".split("");
  /*
  comments can be either:
  placed behind lines

        +++    this is a comment

  where reserved characters cannot be used
  or in a loop
  [
    this is ok to use [ ] and stuff
  ]
  or preceded by #
  */
  CodeMirror.defineMode("brainfuck", function() {
    return {
      startState: function() {
        return {
          commentLine: false,
          left: 0,
          right: 0,
          commentLoop: false
        }
      },
      token: function(stream, state) {
        if (stream.eatSpace()) return null
        if(stream.sol()){
          state.commentLine = false;
        }
        var ch = stream.next().toString();
        if(reserve.indexOf(ch) !== -1){
          if(state.commentLine === true){
            if(stream.eol()){
              state.commentLine = false;
            }
            return "comment";
          }
          if(ch === "]" || ch === "["){
            if(ch === "["){
              state.left++;
            }
            else{
              state.right++;
            }
            return "bracket";
          }
          else if(ch === "+" || ch === "-"){
            return "keyword";
          }
          else if(ch === "<" || ch === ">"){
            return "atom";
          }
          else if(ch === "." || ch === ","){
            return "def";
          }
        }
        else{
          state.commentLine = true;
          if(stream.eol()){
            state.commentLine = false;
          }
          return "comment";
        }
        if(stream.eol()){
          state.commentLine = false;
        }
      }
    };
  });
CodeMirror.defineMIME("text/x-brainfuck","brainfuck")
});
lib/codemirror/mode/brainfuck/index.html000064400000006412147361034410014352 0ustar00<!doctype html>

<title>CodeMirror: Brainfuck mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="./brainfuck.js"></script>
<style>
	.CodeMirror { border: 2px inset #dee; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#"></a>
  </ul>
</div>

<article>
<h2>Brainfuck mode</h2>
<form><textarea id="code" name="code">
[ This program prints "Hello World!" and a newline to the screen, its
  length is 106 active command characters [it is not the shortest.]

  This loop is a "comment loop", it's a simple way of adding a comment
  to a BF program such that you don't have to worry about any command
  characters. Any ".", ",", "+", "-", "&lt;" and "&gt;" characters are simply
  ignored, the "[" and "]" characters just have to be balanced.
]
+++++ +++               Set Cell #0 to 8
[
    &gt;++++               Add 4 to Cell #1; this will always set Cell #1 to 4
    [                   as the cell will be cleared by the loop
        &gt;++             Add 2 to Cell #2
        &gt;+++            Add 3 to Cell #3
        &gt;+++            Add 3 to Cell #4
        &gt;+              Add 1 to Cell #5
        &lt;&lt;&lt;&lt;-           Decrement the loop counter in Cell #1
    ]                   Loop till Cell #1 is zero; number of iterations is 4
    &gt;+                  Add 1 to Cell #2
    &gt;+                  Add 1 to Cell #3
    &gt;-                  Subtract 1 from Cell #4
    &gt;&gt;+                 Add 1 to Cell #6
    [&lt;]                 Move back to the first zero cell you find; this will
                        be Cell #1 which was cleared by the previous loop
    &lt;-                  Decrement the loop Counter in Cell #0
]                       Loop till Cell #0 is zero; number of iterations is 8

The result of this is:
Cell No :   0   1   2   3   4   5   6
Contents:   0   0  72 104  88  32   8
Pointer :   ^

&gt;&gt;.                     Cell #2 has value 72 which is 'H'
&gt;---.                   Subtract 3 from Cell #3 to get 101 which is 'e'
+++++++..+++.           Likewise for 'llo' from Cell #3
&gt;&gt;.                     Cell #5 is 32 for the space
&lt;-.                     Subtract 1 from Cell #4 for 87 to give a 'W'
&lt;.                      Cell #3 was set to 'o' from the end of 'Hello'
+++.------.--------.    Cell #3 for 'rl' and 'd'
&gt;&gt;+.                    Add 1 to Cell #5 gives us an exclamation point
&gt;++.                    And finally a newline from Cell #6
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-brainfuck"
      });
    </script>

    <p>A mode for Brainfuck</p>

    <p><strong>MIME types defined:</strong> <code>text/x-brainfuck</code></p>
  </article>
lib/codemirror/mode/tiddlywiki/tiddlywiki.js000064400000020476147361034410015307 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/***
    |''Name''|tiddlywiki.js|
    |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror|
    |''Author''|PMario|
    |''Version''|0.1.7|
    |''Status''|''stable''|
    |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]|
    |''Documentation''|http://codemirror.tiddlyspace.com/|
    |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]|
    |''CoreVersion''|2.5.0|
    |''Requires''|codemirror.js|
    |''Keywords''|syntax highlighting color code mirror codemirror|
    ! Info
    CoreVersion parameter is needed for TiddlyWiki only!
***/

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("tiddlywiki", function () {
  // Tokenizer
  var textwords = {};

  var keywords = {
    "allTags": true, "closeAll": true, "list": true,
    "newJournal": true, "newTiddler": true,
    "permaview": true, "saveChanges": true,
    "search": true, "slider": true, "tabs": true,
    "tag": true, "tagging": true, "tags": true,
    "tiddler": true, "timeline": true,
    "today": true, "version": true, "option": true,
    "with": true, "filter": true
  };

  var isSpaceName = /[\w_\-]/i,
      reHR = /^\-\-\-\-+$/,                                 // <hr>
      reWikiCommentStart = /^\/\*\*\*$/,            // /***
      reWikiCommentStop = /^\*\*\*\/$/,             // ***/
      reBlockQuote = /^<<<$/,

      reJsCodeStart = /^\/\/\{\{\{$/,                       // //{{{ js block start
      reJsCodeStop = /^\/\/\}\}\}$/,                        // //}}} js stop
      reXmlCodeStart = /^<!--\{\{\{-->$/,           // xml block start
      reXmlCodeStop = /^<!--\}\}\}-->$/,            // xml stop

      reCodeBlockStart = /^\{\{\{$/,                        // {{{ TW text div block start
      reCodeBlockStop = /^\}\}\}$/,                 // }}} TW text stop

      reUntilCodeStop = /.*?\}\}\}/;

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function tokenBase(stream, state) {
    var sol = stream.sol(), ch = stream.peek();

    state.block = false;        // indicates the start of a code block.

    // check start of  blocks
    if (sol && /[<\/\*{}\-]/.test(ch)) {
      if (stream.match(reCodeBlockStart)) {
        state.block = true;
        return chain(stream, state, twTokenCode);
      }
      if (stream.match(reBlockQuote))
        return 'quote';
      if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop))
        return 'comment';
      if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop))
        return 'comment';
      if (stream.match(reHR))
        return 'hr';
    }

    stream.next();
    if (sol && /[\/\*!#;:>|]/.test(ch)) {
      if (ch == "!") { // tw header
        stream.skipToEnd();
        return "header";
      }
      if (ch == "*") { // tw list
        stream.eatWhile('*');
        return "comment";
      }
      if (ch == "#") { // tw numbered list
        stream.eatWhile('#');
        return "comment";
      }
      if (ch == ";") { // definition list, term
        stream.eatWhile(';');
        return "comment";
      }
      if (ch == ":") { // definition list, description
        stream.eatWhile(':');
        return "comment";
      }
      if (ch == ">") { // single line quote
        stream.eatWhile(">");
        return "quote";
      }
      if (ch == '|')
        return 'header';
    }

    if (ch == '{' && stream.match(/\{\{/))
      return chain(stream, state, twTokenCode);

    // rudimentary html:// file:// link matching. TW knows much more ...
    if (/[hf]/i.test(ch) &&
        /[ti]/i.test(stream.peek()) &&
        stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))
      return "link";

    // just a little string indicator, don't want to have the whole string covered
    if (ch == '"')
      return 'string';

    if (ch == '~')    // _no_ CamelCase indicator should be bold
      return 'brace';

    if (/[\[\]]/.test(ch) && stream.match(ch)) // check for [[..]]
      return 'brace';

    if (ch == "@") {    // check for space link. TODO fix @@...@@ highlighting
      stream.eatWhile(isSpaceName);
      return "link";
    }

    if (/\d/.test(ch)) {        // numbers
      stream.eatWhile(/\d/);
      return "number";
    }

    if (ch == "/") { // tw invisible comment
      if (stream.eat("%")) {
        return chain(stream, state, twTokenComment);
      } else if (stream.eat("/")) { //
        return chain(stream, state, twTokenEm);
      }
    }

    if (ch == "_" && stream.eat("_")) // tw underline
        return chain(stream, state, twTokenUnderline);

    // strikethrough and mdash handling
    if (ch == "-" && stream.eat("-")) {
      // if strikethrough looks ugly, change CSS.
      if (stream.peek() != ' ')
        return chain(stream, state, twTokenStrike);
      // mdash
      if (stream.peek() == ' ')
        return 'brace';
    }

    if (ch == "'" && stream.eat("'")) // tw bold
      return chain(stream, state, twTokenStrong);

    if (ch == "<" && stream.eat("<")) // tw macro
      return chain(stream, state, twTokenMacro);

    // core macro handling
    stream.eatWhile(/[\w\$_]/);
    return textwords.propertyIsEnumerable(stream.current()) ? "keyword" : null
  }

  // tw invisible comment
  function twTokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "%");
    }
    return "comment";
  }

  // tw strong / bold
  function twTokenStrong(stream, state) {
    var maybeEnd = false,
    ch;
    while (ch = stream.next()) {
      if (ch == "'" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "'");
    }
    return "strong";
  }

  // tw code
  function twTokenCode(stream, state) {
    var sb = state.block;

    if (sb && stream.current()) {
      return "comment";
    }

    if (!sb && stream.match(reUntilCodeStop)) {
      state.tokenize = tokenBase;
      return "comment";
    }

    if (sb && stream.sol() && stream.match(reCodeBlockStop)) {
      state.tokenize = tokenBase;
      return "comment";
    }

    stream.next();
    return "comment";
  }

  // tw em / italic
  function twTokenEm(stream, state) {
    var maybeEnd = false,
    ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "/");
    }
    return "em";
  }

  // tw underlined text
  function twTokenUnderline(stream, state) {
    var maybeEnd = false,
    ch;
    while (ch = stream.next()) {
      if (ch == "_" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "_");
    }
    return "underlined";
  }

  // tw strike through text looks ugly
  // change CSS if needed
  function twTokenStrike(stream, state) {
    var maybeEnd = false, ch;

    while (ch = stream.next()) {
      if (ch == "-" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "-");
    }
    return "strikethrough";
  }

  // macro
  function twTokenMacro(stream, state) {
    if (stream.current() == '<<') {
      return 'macro';
    }

    var ch = stream.next();
    if (!ch) {
      state.tokenize = tokenBase;
      return null;
    }
    if (ch == ">") {
      if (stream.peek() == '>') {
        stream.next();
        state.tokenize = tokenBase;
        return "macro";
      }
    }

    stream.eatWhile(/[\w\$_]/);
    return keywords.propertyIsEnumerable(stream.current()) ? "keyword" : null
  }

  // Interface
  return {
    startState: function () {
      return {tokenize: tokenBase};
    },

    token: function (stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      return style;
    }
  };
});

CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki");
});
lib/codemirror/mode/tiddlywiki/tiddlywiki.css000064400000000334147361034410015452 0ustar00span.cm-underlined {
  text-decoration: underline;
}
span.cm-strikethrough {
  text-decoration: line-through;
}
span.cm-brace {
  color: #170;
  font-weight: bold;
}
span.cm-table {
  color: blue;
  font-weight: bold;
}
lib/codemirror/mode/tiddlywiki/index.html000064400000010743147361034410014565 0ustar00<!doctype html>

<title>CodeMirror: TiddlyWiki mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="tiddlywiki.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="tiddlywiki.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">TiddlyWiki</a>
  </ul>
</div>

<article>
<h2>TiddlyWiki mode</h2>


<div><textarea id="code" name="code">
!TiddlyWiki Formatting
* Rendered versions can be found at: http://www.tiddlywiki.com/#Reference

|!Option            | !Syntax            |
|bold font          | ''bold''           |
|italic type        | //italic//         |
|underlined text    | __underlined__     |
|strikethrough text | --strikethrough--  |
|superscript text   | super^^script^^    |
|subscript text     | sub~~script~~      |
|highlighted text   | @@highlighted@@    |
|preformatted text  | {{{preformatted}}} |

!Block Elements
<<<
!Heading 1

!!Heading 2

!!!Heading 3

!!!!Heading 4

!!!!!Heading 5
<<<

!!Lists
<<<
* unordered list, level 1
** unordered list, level 2
*** unordered list, level 3

# ordered list, level 1
## ordered list, level 2
### unordered list, level 3

; definition list, term
: definition list, description
<<<

!!Blockquotes
<<<
> blockquote, level 1
>> blockquote, level 2
>>> blockquote, level 3

> blockquote
<<<

!!Preformatted Text
<<<
{{{
preformatted (e.g. code)
}}}
<<<

!!Code Sections
<<<
{{{
Text style code
}}}

//{{{
JS styled code. TiddlyWiki mixed mode should support highlighter switching in the future.
//}}}

<!--{{{-->
XML styled code. TiddlyWiki mixed mode should support highlighter switching in the future.
<!--}}}-->
<<<

!!Tables
<<<
|CssClass|k
|!heading column 1|!heading column 2|
|row 1, column 1|row 1, column 2|
|row 2, column 1|row 2, column 2|
|>|COLSPAN|
|ROWSPAN| ... |
|~| ... |
|CssProperty:value;...| ... |
|caption|c

''Annotation:''
* The {{{>}}} marker creates a "colspan", causing the current cell to merge with the one to the right.
* The {{{~}}} marker creates a "rowspan", causing the current cell to merge with the one above.
<<<
!!Images /% TODO %/
cf. [[TiddlyWiki.com|http://www.tiddlywiki.com/#EmbeddedImages]]

!Hyperlinks
* [[WikiWords|WikiWord]] are automatically transformed to hyperlinks to the respective tiddler
** the automatic transformation can be suppressed by preceding the respective WikiWord with a tilde ({{{~}}}): {{{~WikiWord}}}
* [[PrettyLinks]] are enclosed in square brackets and contain the desired tiddler name: {{{[[tiddler name]]}}}
** optionally, a custom title or description can be added, separated by a pipe character ({{{|}}}): {{{[[title|target]]}}}<br>'''N.B.:''' In this case, the target can also be any website (i.e. URL).

!Custom Styling
* {{{@@CssProperty:value;CssProperty:value;...@@}}}<br>''N.B.:'' CSS color definitions should use lowercase letters to prevent the inadvertent creation of WikiWords.
* <html><code>{{customCssClass{...}}}</code></html>
* raw HTML can be inserted by enclosing the respective code in HTML tags: {{{<html> ... </html>}}}

!Special Markers
* {{{<br>}}} forces a manual line break
* {{{----}}} creates a horizontal ruler
* [[HTML entities|http://www.tiddlywiki.com/#HtmlEntities]]
* [[HTML entities local|HtmlEntities]]
* {{{<<macroName>>}}} calls the respective [[macro|Macros]]
* To hide text within a tiddler so that it is not displayed, it can be wrapped in {{{/%}}} and {{{%/}}}.<br/>This can be a useful trick for hiding drafts or annotating complex markup.
* To prevent wiki markup from taking effect for a particular section, that section can be enclosed in three double quotes: e.g. {{{"""WikiWord"""}}}.
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: 'tiddlywiki',      
        lineNumbers: true,
        matchBrackets: true
      });
    </script>

    <p>TiddlyWiki mode supports a single configuration.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-tiddlywiki</code>.</p>
  </article>
lib/codemirror/mode/markdown/test.js000064400000071736147361034410013563 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({tabSize: 4}, "markdown");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
  var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "markdown", highlightFormatting: true});
  function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); }
  var modeAtxNoSpace = CodeMirror.getMode({tabSize: 4}, {name: "markdown", allowAtxHeaderWithoutSpace: true});
  function AtxNoSpaceTest(name) { test.mode(name, modeAtxNoSpace, Array.prototype.slice.call(arguments, 1)); }
  var modeFenced = CodeMirror.getMode({tabSize: 4}, {name: "markdown", fencedCodeBlocks: true});
  function FencedTest(name) { test.mode(name, modeFenced, Array.prototype.slice.call(arguments, 1)); }
  var modeOverrideClasses = CodeMirror.getMode({tabsize: 4}, {
    name: "markdown",
    strikethrough: true,
    tokenTypeOverrides: {
      "header" : "override-header",
      "code" : "override-code",
      "quote" : "override-quote",
      "list1" : "override-list1",
      "list2" : "override-list2",
      "list3" : "override-list3",
      "hr" : "override-hr",
      "image" : "override-image",
      "imageAltText": "override-image-alt-text",
      "imageMarker": "override-image-marker",
      "linkInline" : "override-link-inline",
      "linkEmail" : "override-link-email",
      "linkText" : "override-link-text",
      "linkHref" : "override-link-href",
      "em" : "override-em",
      "strong" : "override-strong",
      "strikethrough" : "override-strikethrough"
  }});
  function TokenTypeOverrideTest(name) { test.mode(name, modeOverrideClasses, Array.prototype.slice.call(arguments, 1)); }
  var modeFormattingOverride = CodeMirror.getMode({tabsize: 4}, {
    name: "markdown",
    highlightFormatting: true,
    tokenTypeOverrides: {
      "formatting" : "override-formatting"
  }});
  function FormatTokenTypeOverrideTest(name) { test.mode(name, modeFormattingOverride, Array.prototype.slice.call(arguments, 1)); }


  FT("formatting_emAsterisk",
     "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]");

  FT("formatting_emUnderscore",
     "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]");

  FT("formatting_strongAsterisk",
     "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]");

  FT("formatting_strongUnderscore",
     "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]");

  FT("formatting_codeBackticks",
     "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]");

  FT("formatting_doubleBackticks",
     "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]");

  FT("formatting_atxHeader",
     "[header&header-1&formatting&formatting-header&formatting-header-1 # ][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]");

  FT("formatting_setextHeader",
     "foo",
     "[header&header-1&formatting&formatting-header&formatting-header-1 =]");

  FT("formatting_blockquote",
     "[quote&quote-1&formatting&formatting-quote&formatting-quote-1 > ][quote&quote-1 foo]");

  FT("formatting_list",
     "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]");
  FT("formatting_list",
     "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]");

  FT("formatting_link",
     "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url (][string&url http://example.com/][string&formatting&formatting-link-string&url )]");

  FT("formatting_linkReference",
     "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url [][string&url bar][string&formatting&formatting-link-string&url ]]]",
     "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string&url http://example.com/]");

  FT("formatting_linkWeb",
     "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]");

  FT("formatting_linkEmail",
     "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]");

  FT("formatting_escape",
     "[formatting-escape \\*]");

  FT("formatting_image",
     "[formatting&formatting-image&image&image-marker !][formatting&formatting-image&image&image-alt-text&link [[][image&image-alt-text&link alt text][formatting&formatting-image&image&image-alt-text&link ]]][formatting&formatting-link-string&string&url (][url&string http://link.to/image.jpg][formatting&formatting-link-string&string&url )]");

  MT("plainText",
     "foo");

  // Don't style single trailing space
  MT("trailingSpace1",
     "foo ");

  // Two or more trailing spaces should be styled with line break character
  MT("trailingSpace2",
     "foo[trailing-space-a  ][trailing-space-new-line  ]");

  MT("trailingSpace3",
     "foo[trailing-space-a  ][trailing-space-b  ][trailing-space-new-line  ]");

  MT("trailingSpace4",
     "foo[trailing-space-a  ][trailing-space-b  ][trailing-space-a  ][trailing-space-new-line  ]");

  // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value)
  MT("codeBlocksUsing4Spaces",
     "    [comment foo]");

  // Code blocks using 4 spaces with internal indentation
  MT("codeBlocksUsing4SpacesIndentation",
     "    [comment bar]",
     "        [comment hello]",
     "            [comment world]",
     "    [comment foo]",
     "bar");

  // Code blocks should end even after extra indented lines
  MT("codeBlocksWithTrailingIndentedLine",
     "    [comment foo]",
     "        [comment bar]",
     "    [comment baz]",
     "    ",
     "hello");

  // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value)
  MT("codeBlocksUsing1Tab",
     "\t[comment foo]");

  // No code blocks directly after paragraph
  // http://spec.commonmark.org/0.19/#example-65
  MT("noCodeBlocksAfterParagraph",
     "Foo",
     "    Bar");

  // Inline code using backticks
  MT("inlineCodeUsingBackticks",
     "foo [comment `bar`]");

  // Block code using single backtick (shouldn't work)
  MT("blockCodeSingleBacktick",
     "[comment `]",
     "[comment foo]",
     "[comment `]");

  // Unclosed backticks
  // Instead of simply marking as CODE, it would be nice to have an
  // incomplete flag for CODE, that is styled slightly different.
  MT("unclosedBackticks",
     "foo [comment `bar]");

  // Per documentation: "To include a literal backtick character within a
  // code span, you can use multiple backticks as the opening and closing
  // delimiters"
  MT("doubleBackticks",
     "[comment ``foo ` bar``]");

  // Tests based on Dingus
  // http://daringfireball.net/projects/markdown/dingus
  //
  // Multiple backticks within an inline code block
  MT("consecutiveBackticks",
     "[comment `foo```bar`]");

  // Multiple backticks within an inline code block with a second code block
  MT("consecutiveBackticks",
     "[comment `foo```bar`] hello [comment `world`]");

  // Unclosed with several different groups of backticks
  MT("unclosedBackticks",
     "[comment ``foo ``` bar` hello]");

  // Closed with several different groups of backticks
  MT("closedBackticks",
     "[comment ``foo ``` bar` hello``] world");

  // atx headers
  // http://daringfireball.net/projects/markdown/syntax#header

  MT("atxH1",
     "[header&header-1 # foo]");

  MT("atxH2",
     "[header&header-2 ## foo]");

  MT("atxH3",
     "[header&header-3 ### foo]");

  MT("atxH4",
     "[header&header-4 #### foo]");

  MT("atxH5",
     "[header&header-5 ##### foo]");

  MT("atxH6",
     "[header&header-6 ###### foo]");

  // http://spec.commonmark.org/0.19/#example-24
  MT("noAtxH7",
     "####### foo");

  // http://spec.commonmark.org/0.19/#example-25
  MT("noAtxH1WithoutSpace",
     "#5 bolt");

  // CommonMark requires a space after # but most parsers don't
  AtxNoSpaceTest("atxNoSpaceAllowed_H1NoSpace",
     "[header&header-1 #foo]");

  AtxNoSpaceTest("atxNoSpaceAllowed_H4NoSpace",
     "[header&header-4 ####foo]");

  AtxNoSpaceTest("atxNoSpaceAllowed_H1Space",
     "[header&header-1 # foo]");

  // Inline styles should be parsed inside headers
  MT("atxH1inline",
     "[header&header-1 # foo ][header&header-1&em *bar*]");

  // Setext headers - H1, H2
  // Per documentation, "Any number of underlining =’s or -’s will work."
  // http://daringfireball.net/projects/markdown/syntax#header
  // Ideally, the text would be marked as `header` as well, but this is
  // not really feasible at the moment. So, instead, we're testing against
  // what works today, to avoid any regressions.
  //
  // Check if single underlining = works
  MT("setextH1",
     "foo",
     "[header&header-1 =]");

  // Check if 3+ ='s work
  MT("setextH1",
     "foo",
     "[header&header-1 ===]");

  // Check if single underlining - works
  MT("setextH2",
     "foo",
     "[header&header-2 -]");

  // Check if 3+ -'s work
  MT("setextH2",
     "foo",
     "[header&header-2 ---]");

  // http://spec.commonmark.org/0.19/#example-45
  MT("setextH2AllowSpaces",
     "foo",
     "   [header&header-2 ----      ]");

  // http://spec.commonmark.org/0.19/#example-44
  MT("noSetextAfterIndentedCodeBlock",
     "     [comment foo]",
     "[hr ---]");

  // http://spec.commonmark.org/0.19/#example-51
  MT("noSetextAfterQuote",
     "[quote&quote-1 > foo]",
     "[hr ---]");

  MT("noSetextAfterList",
     "[variable-2 - foo]",
     "[hr ---]");

  // Single-line blockquote with trailing space
  MT("blockquoteSpace",
     "[quote&quote-1 > foo]");

  // Single-line blockquote
  MT("blockquoteNoSpace",
     "[quote&quote-1 >foo]");

  // No blank line before blockquote
  MT("blockquoteNoBlankLine",
     "foo",
     "[quote&quote-1 > bar]");

  // Nested blockquote
  MT("blockquoteSpace",
     "[quote&quote-1 > foo]",
     "[quote&quote-1 >][quote&quote-2 > foo]",
     "[quote&quote-1 >][quote&quote-2 >][quote&quote-3 > foo]");

  // Single-line blockquote followed by normal paragraph
  MT("blockquoteThenParagraph",
     "[quote&quote-1 >foo]",
     "",
     "bar");

  // Multi-line blockquote (lazy mode)
  MT("multiBlockquoteLazy",
     "[quote&quote-1 >foo]",
     "[quote&quote-1 bar]");

  // Multi-line blockquote followed by normal paragraph (lazy mode)
  MT("multiBlockquoteLazyThenParagraph",
     "[quote&quote-1 >foo]",
     "[quote&quote-1 bar]",
     "",
     "hello");

  // Multi-line blockquote (non-lazy mode)
  MT("multiBlockquote",
     "[quote&quote-1 >foo]",
     "[quote&quote-1 >bar]");

  // Multi-line blockquote followed by normal paragraph (non-lazy mode)
  MT("multiBlockquoteThenParagraph",
     "[quote&quote-1 >foo]",
     "[quote&quote-1 >bar]",
     "",
     "hello");

  // Header with leading space after continued blockquote (#3287, negative indentation)
  MT("headerAfterContinuedBlockquote",
     "[quote&quote-1 > foo]",
     "[quote&quote-1 bar]",
     "",
     " [header&header-1 # hello]");

  // Check list types

  MT("listAsterisk",
     "foo",
     "bar",
     "",
     "[variable-2 * foo]",
     "[variable-2 * bar]");

  MT("listPlus",
     "foo",
     "bar",
     "",
     "[variable-2 + foo]",
     "[variable-2 + bar]");

  MT("listDash",
     "foo",
     "bar",
     "",
     "[variable-2 - foo]",
     "[variable-2 - bar]");

  MT("listNumber",
     "foo",
     "bar",
     "",
     "[variable-2 1. foo]",
     "[variable-2 2. bar]");

  // Lists require a preceding blank line (per Dingus)
  MT("listBogus",
     "foo",
     "1. bar",
     "2. hello");

  // List after hr
  MT("listAfterHr",
     "[hr ---]",
     "[variable-2 - bar]");

  // List after header
  MT("listAfterHeader",
     "[header&header-1 # foo]",
     "[variable-2 - bar]");

  // hr after list
  MT("hrAfterList",
     "[variable-2 - foo]",
     "[hr -----]");

  // Formatting in lists (*)
  MT("listAsteriskFormatting",
     "[variable-2 * ][variable-2&em *foo*][variable-2  bar]",
     "[variable-2 * ][variable-2&strong **foo**][variable-2  bar]",
     "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]",
     "[variable-2 * ][variable-2&comment `foo`][variable-2  bar]");

  // Formatting in lists (+)
  MT("listPlusFormatting",
     "[variable-2 + ][variable-2&em *foo*][variable-2  bar]",
     "[variable-2 + ][variable-2&strong **foo**][variable-2  bar]",
     "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]",
     "[variable-2 + ][variable-2&comment `foo`][variable-2  bar]");

  // Formatting in lists (-)
  MT("listDashFormatting",
     "[variable-2 - ][variable-2&em *foo*][variable-2  bar]",
     "[variable-2 - ][variable-2&strong **foo**][variable-2  bar]",
     "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]",
     "[variable-2 - ][variable-2&comment `foo`][variable-2  bar]");

  // Formatting in lists (1.)
  MT("listNumberFormatting",
     "[variable-2 1. ][variable-2&em *foo*][variable-2  bar]",
     "[variable-2 2. ][variable-2&strong **foo**][variable-2  bar]",
     "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]",
     "[variable-2 4. ][variable-2&comment `foo`][variable-2  bar]");

  // Paragraph lists
  MT("listParagraph",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]");

  // Multi-paragraph lists
  //
  // 4 spaces
  MT("listMultiParagraph",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]",
     "",
     "    [variable-2 hello]");

  // 4 spaces, extra blank lines (should still be list, per Dingus)
  MT("listMultiParagraphExtra",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]",
     "",
     "",
     "    [variable-2 hello]");

  // 4 spaces, plus 1 space (should still be list, per Dingus)
  MT("listMultiParagraphExtraSpace",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]",
     "",
     "     [variable-2 hello]",
     "",
     "    [variable-2 world]");

  // 1 tab
  MT("listTab",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]",
     "",
     "\t[variable-2 hello]");

  // No indent
  MT("listNoIndent",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]",
     "",
     "hello");

  MT("listCommonMarkIndentationCode",
     "[variable-2 * Code blocks also affect]",
     "  [variable-3 * The next level starts where the contents start.]",
     "   [variable-3 *    Anything less than that will keep the item on the same level.]",
     "       [variable-3 * Each list item can indent the first level further and further.]",
     "  [variable-3 * For the most part, this makes sense while writing a list.]",
     "    [keyword * This means two items with same indentation can be different levels.]",
     "     [keyword *  Each level has an indent requirement that can change between items.]",
     "       [keyword * A list item that meets this will be part of the next level.]",
     "   [variable-3 * Otherwise, it will be part of the level where it does meet this.]",
     " [variable-2 * World]");

  // Blockquote
  MT("blockquote",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]",
     "",
     "    [variable-2&quote&quote-1 > hello]");

  // Code block
  MT("blockquoteCode",
     "[variable-2 * foo]",
     "",
     "[variable-2 * bar]",
     "",
     "        [comment > hello]",
     "",
     "    [variable-2 world]");

  // Code block followed by text
  MT("blockquoteCodeText",
     "[variable-2 * foo]",
     "",
     "    [variable-2 bar]",
     "",
     "        [comment hello]",
     "",
     "    [variable-2 world]");

  // Nested list

  MT("listAsteriskNested",
     "[variable-2 * foo]",
     "",
     "    [variable-3 * bar]");

  MT("listPlusNested",
     "[variable-2 + foo]",
     "",
     "    [variable-3 + bar]");

  MT("listDashNested",
     "[variable-2 - foo]",
     "",
     "    [variable-3 - bar]");

  MT("listNumberNested",
     "[variable-2 1. foo]",
     "",
     "    [variable-3 2. bar]");

  MT("listMixed",
     "[variable-2 * foo]",
     "",
     "    [variable-3 + bar]",
     "",
     "        [keyword - hello]",
     "",
     "            [variable-2 1. world]");

  MT("listBlockquote",
     "[variable-2 * foo]",
     "",
     "    [variable-3 + bar]",
     "",
     "        [quote&quote-1&variable-3 > hello]");

  MT("listCode",
     "[variable-2 * foo]",
     "",
     "    [variable-3 + bar]",
     "",
     "            [comment hello]");

  // Code with internal indentation
  MT("listCodeIndentation",
     "[variable-2 * foo]",
     "",
     "        [comment bar]",
     "            [comment hello]",
     "                [comment world]",
     "        [comment foo]",
     "    [variable-2 bar]");

  // List nesting edge cases
  MT("listNested",
    "[variable-2 * foo]",
    "",
    "    [variable-3 * bar]",
    "",
    "       [variable-3 hello]"
  );
  MT("listNested",
    "[variable-2 * foo]",
    "",
    "    [variable-3 * bar]",
    "",
    "      [keyword * foo]"
  );

  // Code followed by text
  MT("listCodeText",
     "[variable-2 * foo]",
     "",
     "        [comment bar]",
     "",
     "hello");

  // Following tests directly from official Markdown documentation
  // http://daringfireball.net/projects/markdown/syntax#hr

  MT("hrSpace",
     "[hr * * *]");

  MT("hr",
     "[hr ***]");

  MT("hrLong",
     "[hr *****]");

  MT("hrSpaceDash",
     "[hr - - -]");

  MT("hrDashLong",
     "[hr ---------------------------------------]");

  //Images
  MT("Images",
     "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)]")

  //Images with highlight alt text
  MT("imageEm",
     "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&em&image&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]");

  MT("imageStrong",
     "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&strong&image&link **alt text**][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]");

  MT("imageEmStrong",
     "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&image&strong&link **][image&image-alt-text&em&strong&link *alt text**][image&image-alt-text&em&link *][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]");

  // Inline link with title
  MT("linkTitle",
     "[link [[foo]]][string&url (http://example.com/ \"bar\")] hello");

  // Inline link without title
  MT("linkNoTitle",
     "[link [[foo]]][string&url (http://example.com/)] bar");

  // Inline link with image
  MT("linkImage",
     "[link [[][link&image&image-marker !][link&image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)][link ]]][string&url (http://example.com/)] bar");

  // Inline link with Em
  MT("linkEm",
     "[link [[][link&em *foo*][link ]]][string&url (http://example.com/)] bar");

  // Inline link with Strong
  MT("linkStrong",
     "[link [[][link&strong **foo**][link ]]][string&url (http://example.com/)] bar");

  // Inline link with EmStrong
  MT("linkEmStrong",
     "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url (http://example.com/)] bar");

  // Image with title
  MT("imageTitle",
     "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/ \"bar\")] hello");

  // Image without title
  MT("imageNoTitle",
     "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/)] bar");

  // Image with asterisks
  MT("imageAsterisks",
     "[image&image-marker !][image&image-alt-text&link [[ ][image&image-alt-text&em&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)] bar");

  // Not a link. Should be normal text due to square brackets being used
  // regularly in text, especially in quoted material, and no space is allowed
  // between square brackets and parentheses (per Dingus).
  MT("notALink",
     "[[foo]] (bar)");

  // Reference-style links
  MT("linkReference",
     "[link [[foo]]][string&url [[bar]]] hello");

  // Reference-style links with Em
  MT("linkReferenceEm",
     "[link [[][link&em *foo*][link ]]][string&url [[bar]]] hello");

  // Reference-style links with Strong
  MT("linkReferenceStrong",
     "[link [[][link&strong **foo**][link ]]][string&url [[bar]]] hello");

  // Reference-style links with EmStrong
  MT("linkReferenceEmStrong",
     "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url [[bar]]] hello");

  // Reference-style links with optional space separator (per documentation)
  // "You can optionally use a space to separate the sets of brackets"
  MT("linkReferenceSpace",
     "[link [[foo]]] [string&url [[bar]]] hello");

  // Should only allow a single space ("...use *a* space...")
  MT("linkReferenceDoubleSpace",
     "[[foo]]  [[bar]] hello");

  // Reference-style links with implicit link name
  MT("linkImplicit",
     "[link [[foo]]][string&url [[]]] hello");

  // @todo It would be nice if, at some point, the document was actually
  // checked to see if the referenced link exists

  // Link label, for reference-style links (taken from documentation)

  MT("labelNoTitle",
     "[link [[foo]]:] [string&url http://example.com/]");

  MT("labelIndented",
     "   [link [[foo]]:] [string&url http://example.com/]");

  MT("labelSpaceTitle",
     "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"]");

  MT("labelDoubleTitle",
     "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"] \"world\"");

  MT("labelTitleDoubleQuotes",
     "[link [[foo]]:] [string&url http://example.com/  \"bar\"]");

  MT("labelTitleSingleQuotes",
     "[link [[foo]]:] [string&url http://example.com/  'bar']");

  MT("labelTitleParentheses",
     "[link [[foo]]:] [string&url http://example.com/  (bar)]");

  MT("labelTitleInvalid",
     "[link [[foo]]:] [string&url http://example.com/] bar");

  MT("labelLinkAngleBrackets",
     "[link [[foo]]:] [string&url <http://example.com/>  \"bar\"]");

  MT("labelTitleNextDoubleQuotes",
     "[link [[foo]]:] [string&url http://example.com/]",
     "[string \"bar\"] hello");

  MT("labelTitleNextSingleQuotes",
     "[link [[foo]]:] [string&url http://example.com/]",
     "[string 'bar'] hello");

  MT("labelTitleNextParentheses",
     "[link [[foo]]:] [string&url http://example.com/]",
     "[string (bar)] hello");

  MT("labelTitleNextMixed",
     "[link [[foo]]:] [string&url http://example.com/]",
     "(bar\" hello");

  MT("labelEscape",
     "[link [[foo \\]] ]]:] [string&url http://example.com/]");

  MT("labelEscapeColon",
     "[link [[foo \\]]: bar]]:] [string&url http://example.com/]");

  MT("labelEscapeEnd",
     "[[foo\\]]: http://example.com/");

  MT("linkWeb",
     "[link <http://example.com/>] foo");

  MT("linkWebDouble",
     "[link <http://example.com/>] foo [link <http://example.com/>]");

  MT("linkEmail",
     "[link <user@example.com>] foo");

  MT("linkEmailDouble",
     "[link <user@example.com>] foo [link <user@example.com>]");

  MT("emAsterisk",
     "[em *foo*] bar");

  MT("emUnderscore",
     "[em _foo_] bar");

  MT("emInWordAsterisk",
     "foo[em *bar*]hello");

  MT("emInWordUnderscore",
     "foo[em _bar_]hello");

  // Per documentation: "...surround an * or _ with spaces, it’ll be
  // treated as a literal asterisk or underscore."

  MT("emEscapedBySpaceIn",
     "foo [em _bar _ hello_] world");

  MT("emEscapedBySpaceOut",
     "foo _ bar[em _hello_]world");

  MT("emEscapedByNewline",
     "foo",
     "_ bar[em _hello_]world");

  // Unclosed emphasis characters
  // Instead of simply marking as EM / STRONG, it would be nice to have an
  // incomplete flag for EM and STRONG, that is styled slightly different.
  MT("emIncompleteAsterisk",
     "foo [em *bar]");

  MT("emIncompleteUnderscore",
     "foo [em _bar]");

  MT("strongAsterisk",
     "[strong **foo**] bar");

  MT("strongUnderscore",
     "[strong __foo__] bar");

  MT("emStrongAsterisk",
     "[em *foo][em&strong **bar*][strong hello**] world");

  MT("emStrongUnderscore",
     "[em _foo][em&strong __bar_][strong hello__] world");

  // "...same character must be used to open and close an emphasis span.""
  MT("emStrongMixed",
     "[em _foo][em&strong **bar*hello__ world]");

  MT("emStrongMixed",
     "[em *foo][em&strong __bar_hello** world]");

  MT("linkWithNestedParens",
     "[link [[foo]]][string&url (bar(baz))]")

  // These characters should be escaped:
  // \   backslash
  // `   backtick
  // *   asterisk
  // _   underscore
  // {}  curly braces
  // []  square brackets
  // ()  parentheses
  // #   hash mark
  // +   plus sign
  // -   minus sign (hyphen)
  // .   dot
  // !   exclamation mark

  MT("escapeBacktick",
     "foo \\`bar\\`");

  MT("doubleEscapeBacktick",
     "foo \\\\[comment `bar\\\\`]");

  MT("escapeAsterisk",
     "foo \\*bar\\*");

  MT("doubleEscapeAsterisk",
     "foo \\\\[em *bar\\\\*]");

  MT("escapeUnderscore",
     "foo \\_bar\\_");

  MT("doubleEscapeUnderscore",
     "foo \\\\[em _bar\\\\_]");

  MT("escapeHash",
     "\\# foo");

  MT("doubleEscapeHash",
     "\\\\# foo");

  MT("escapeNewline",
     "\\",
     "[em *foo*]");

  // Class override tests
  TokenTypeOverrideTest("overrideHeader1",
    "[override-header&override-header-1 # Foo]");

  TokenTypeOverrideTest("overrideHeader2",
    "[override-header&override-header-2 ## Foo]");

  TokenTypeOverrideTest("overrideHeader3",
    "[override-header&override-header-3 ### Foo]");

  TokenTypeOverrideTest("overrideHeader4",
    "[override-header&override-header-4 #### Foo]");

  TokenTypeOverrideTest("overrideHeader5",
    "[override-header&override-header-5 ##### Foo]");

  TokenTypeOverrideTest("overrideHeader6",
    "[override-header&override-header-6 ###### Foo]");

  TokenTypeOverrideTest("overrideCode",
    "[override-code `foo`]");

  TokenTypeOverrideTest("overrideCodeBlock",
    "[override-code ```]",
    "[override-code foo]",
    "[override-code ```]");

  TokenTypeOverrideTest("overrideQuote",
    "[override-quote&override-quote-1 > foo]",
    "[override-quote&override-quote-1 > bar]");

  TokenTypeOverrideTest("overrideQuoteNested",
    "[override-quote&override-quote-1 > foo]",
    "[override-quote&override-quote-1 >][override-quote&override-quote-2 > bar]",
    "[override-quote&override-quote-1 >][override-quote&override-quote-2 >][override-quote&override-quote-3 > baz]");

  TokenTypeOverrideTest("overrideLists",
    "[override-list1 - foo]",
    "",
    "    [override-list2 + bar]",
    "",
    "        [override-list3 * baz]",
    "",
    "            [override-list1 1. qux]",
    "",
    "                [override-list2 - quux]");

  TokenTypeOverrideTest("overrideHr",
    "[override-hr * * *]");

  TokenTypeOverrideTest("overrideImage",
    "[override-image&override-image-marker !][override-image&override-image-alt-text&link [[alt text]]][override-link-href&url (http://link.to/image.jpg)]");

  TokenTypeOverrideTest("overrideLinkText",
    "[override-link-text [[foo]]][override-link-href&url (http://example.com)]");

  TokenTypeOverrideTest("overrideLinkEmailAndInline",
    "[override-link-email <][override-link-inline foo@example.com>]");

  TokenTypeOverrideTest("overrideEm",
    "[override-em *foo*]");

  TokenTypeOverrideTest("overrideStrong",
    "[override-strong **foo**]");

  TokenTypeOverrideTest("overrideStrikethrough",
    "[override-strikethrough ~~foo~~]");

  FormatTokenTypeOverrideTest("overrideFormatting",
    "[override-formatting-escape \\*]");

  // Tests to make sure GFM-specific things aren't getting through

  MT("taskList",
     "[variable-2 * [ ]] bar]");

  MT("noFencedCodeBlocks",
     "~~~",
     "foo",
     "~~~");

  FencedTest("fencedCodeBlocks",
     "[comment ```]",
     "[comment foo]",
     "[comment ```]",
     "bar");

  FencedTest("fencedCodeBlocksMultipleChars",
     "[comment `````]",
     "[comment foo]",
     "[comment ```]",
     "[comment foo]",
     "[comment `````]",
     "bar");

  FencedTest("fencedCodeBlocksTildes",
     "[comment ~~~]",
     "[comment foo]",
     "[comment ~~~]",
     "bar");

  FencedTest("fencedCodeBlocksTildesMultipleChars",
     "[comment ~~~~~]",
     "[comment ~~~]",
     "[comment foo]",
     "[comment ~~~~~]",
     "bar");

  FencedTest("fencedCodeBlocksMultipleChars",
     "[comment `````]",
     "[comment foo]",
     "[comment ```]",
     "[comment foo]",
     "[comment `````]",
     "bar");

  FencedTest("fencedCodeBlocksMixed",
     "[comment ~~~]",
     "[comment ```]",
     "[comment foo]",
     "[comment ~~~]",
     "bar");

  // Tests that require XML mode

  MT("xmlMode",
     "[tag&bracket <][tag div][tag&bracket >]",
     "*foo*",
     "[tag&bracket <][tag http://github.com][tag&bracket />]",
     "[tag&bracket </][tag div][tag&bracket >]",
     "[link <http://github.com/>]");

  MT("xmlModeWithMarkdownInside",
     "[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]",
     "[em *foo*]",
     "[link <http://github.com/>]",
     "[tag </div>]",
     "[link <http://github.com/>]",
     "[tag&bracket <][tag div][tag&bracket >]",
     "[tag&bracket </][tag div][tag&bracket >]");

})();
lib/codemirror/mode/markdown/markdown.js000064400000062252147361034410014417 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../xml/xml"), require("../meta"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../xml/xml", "../meta"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {

  var htmlMode = CodeMirror.getMode(cmCfg, "text/html");
  var htmlModeMissing = htmlMode.name == "null"

  function getMode(name) {
    if (CodeMirror.findModeByName) {
      var found = CodeMirror.findModeByName(name);
      if (found) name = found.mime || found.mimes[0];
    }
    var mode = CodeMirror.getMode(cmCfg, name);
    return mode.name == "null" ? null : mode;
  }

  // Should characters that affect highlighting be highlighted separate?
  // Does not include characters that will be output (such as `1.` and `-` for lists)
  if (modeCfg.highlightFormatting === undefined)
    modeCfg.highlightFormatting = false;

  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.
  // Excess `>` will emit `error` token.
  if (modeCfg.maxBlockquoteDepth === undefined)
    modeCfg.maxBlockquoteDepth = 0;

  // Should underscores in words open/close em/strong?
  if (modeCfg.underscoresBreakWords === undefined)
    modeCfg.underscoresBreakWords = true;

  // Use `fencedCodeBlocks` to configure fenced code blocks. false to
  // disable, string to specify a precise regexp that the fence should
  // match, and true to allow three or more backticks or tildes (as
  // per CommonMark).

  // Turn on task lists? ("- [ ] " and "- [x] ")
  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;

  // Turn on strikethrough syntax
  if (modeCfg.strikethrough === undefined)
    modeCfg.strikethrough = false;

  // Allow token types to be overridden by user-provided token types.
  if (modeCfg.tokenTypeOverrides === undefined)
    modeCfg.tokenTypeOverrides = {};

  var tokenTypes = {
    header: "header",
    code: "comment",
    quote: "quote",
    list1: "variable-2",
    list2: "variable-3",
    list3: "keyword",
    hr: "hr",
    image: "image",
    imageAltText: "image-alt-text",
    imageMarker: "image-marker",
    formatting: "formatting",
    linkInline: "link",
    linkEmail: "link",
    linkText: "link",
    linkHref: "string",
    em: "em",
    strong: "strong",
    strikethrough: "strikethrough"
  };

  for (var tokenType in tokenTypes) {
    if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {
      tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];
    }
  }

  var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/
  ,   ulRE = /^[*\-+]\s+/
  ,   olRE = /^[0-9]+([.)])\s+/
  ,   taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE
  ,   atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/
  ,   setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/
  ,   textRE = /^[^#!\[\]*_\\<>` "'(~]+/
  ,   fencedCodeRE = new RegExp("^(" + (modeCfg.fencedCodeBlocks === true ? "~~~+|```+" : modeCfg.fencedCodeBlocks) +
                                ")[ \\t]*([\\w+#\-]*)");

  function switchInline(stream, state, f) {
    state.f = state.inline = f;
    return f(stream, state);
  }

  function switchBlock(stream, state, f) {
    state.f = state.block = f;
    return f(stream, state);
  }

  function lineIsEmpty(line) {
    return !line || !/\S/.test(line.string)
  }

  // Blocks

  function blankLine(state) {
    // Reset linkTitle state
    state.linkTitle = false;
    // Reset EM state
    state.em = false;
    // Reset STRONG state
    state.strong = false;
    // Reset strikethrough state
    state.strikethrough = false;
    // Reset state.quote
    state.quote = 0;
    // Reset state.indentedCode
    state.indentedCode = false;
    if (htmlModeMissing && state.f == htmlBlock) {
      state.f = inlineNormal;
      state.block = blockNormal;
    }
    // Reset state.trailingSpace
    state.trailingSpace = 0;
    state.trailingSpaceNewLine = false;
    // Mark this line as blank
    state.prevLine = state.thisLine
    state.thisLine = null
    return null;
  }

  function blockNormal(stream, state) {

    var sol = stream.sol();

    var prevLineIsList = state.list !== false,
        prevLineIsIndentedCode = state.indentedCode;

    state.indentedCode = false;

    if (prevLineIsList) {
      if (state.indentationDiff >= 0) { // Continued list
        if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block
          state.indentation -= state.indentationDiff;
        }
        state.list = null;
      } else if (state.indentation > 0) {
        state.list = null;
      } else { // No longer a list
        state.list = false;
      }
    }

    var match = null;
    if (state.indentationDiff >= 4) {
      stream.skipToEnd();
      if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) {
        state.indentation -= 4;
        state.indentedCode = true;
        return tokenTypes.code;
      } else {
        return null;
      }
    } else if (stream.eatSpace()) {
      return null;
    } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) {
      state.header = match[1].length;
      if (modeCfg.highlightFormatting) state.formatting = "header";
      state.f = state.inline;
      return getType(state);
    } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList &&
               !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) {
      state.header = match[0].charAt(0) == '=' ? 1 : 2;
      if (modeCfg.highlightFormatting) state.formatting = "header";
      state.f = state.inline;
      return getType(state);
    } else if (stream.eat('>')) {
      state.quote = sol ? 1 : state.quote + 1;
      if (modeCfg.highlightFormatting) state.formatting = "quote";
      stream.eatSpace();
      return getType(state);
    } else if (stream.peek() === '[') {
      return switchInline(stream, state, footnoteLink);
    } else if (stream.match(hrRE, true)) {
      state.hr = true;
      return tokenTypes.hr;
    } else if ((lineIsEmpty(state.prevLine) || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) {
      var listType = null;
      if (stream.match(ulRE, true)) {
        listType = 'ul';
      } else {
        stream.match(olRE, true);
        listType = 'ol';
      }
      state.indentation = stream.column() + stream.current().length;
      state.list = true;

      // While this list item's marker's indentation
      // is less than the deepest list item's content's indentation,
      // pop the deepest list item indentation off the stack.
      while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) {
        state.listStack.pop();
      }

      // Add this list item's content's indentation to the stack
      state.listStack.push(state.indentation);

      if (modeCfg.taskLists && stream.match(taskListRE, false)) {
        state.taskList = true;
      }
      state.f = state.inline;
      if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType];
      return getType(state);
    } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) {
      state.fencedChars = match[1]
      // try switching mode
      state.localMode = getMode(match[2]);
      if (state.localMode) state.localState = CodeMirror.startState(state.localMode);
      state.f = state.block = local;
      if (modeCfg.highlightFormatting) state.formatting = "code-block";
      state.code = -1
      return getType(state);
    }

    return switchInline(stream, state, state.inline);
  }

  function htmlBlock(stream, state) {
    var style = htmlMode.token(stream, state.htmlState);
    if (!htmlModeMissing) {
      var inner = CodeMirror.innerMode(htmlMode, state.htmlState)
      if ((inner.mode.name == "xml" && inner.state.tagStart === null &&
           (!inner.state.context && inner.state.tokenize.isInText)) ||
          (state.md_inside && stream.current().indexOf(">") > -1)) {
        state.f = inlineNormal;
        state.block = blockNormal;
        state.htmlState = null;
      }
    }
    return style;
  }

  function local(stream, state) {
    if (state.fencedChars && stream.match(state.fencedChars, false)) {
      state.localMode = state.localState = null;
      state.f = state.block = leavingLocal;
      return null;
    } else if (state.localMode) {
      return state.localMode.token(stream, state.localState);
    } else {
      stream.skipToEnd();
      return tokenTypes.code;
    }
  }

  function leavingLocal(stream, state) {
    stream.match(state.fencedChars);
    state.block = blockNormal;
    state.f = inlineNormal;
    state.fencedChars = null;
    if (modeCfg.highlightFormatting) state.formatting = "code-block";
    state.code = 1
    var returnType = getType(state);
    state.code = 0
    return returnType;
  }

  // Inline
  function getType(state) {
    var styles = [];

    if (state.formatting) {
      styles.push(tokenTypes.formatting);

      if (typeof state.formatting === "string") state.formatting = [state.formatting];

      for (var i = 0; i < state.formatting.length; i++) {
        styles.push(tokenTypes.formatting + "-" + state.formatting[i]);

        if (state.formatting[i] === "header") {
          styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header);
        }

        // Add `formatting-quote` and `formatting-quote-#` for blockquotes
        // Add `error` instead if the maximum blockquote nesting depth is passed
        if (state.formatting[i] === "quote") {
          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {
            styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote);
          } else {
            styles.push("error");
          }
        }
      }
    }

    if (state.taskOpen) {
      styles.push("meta");
      return styles.length ? styles.join(' ') : null;
    }
    if (state.taskClosed) {
      styles.push("property");
      return styles.length ? styles.join(' ') : null;
    }

    if (state.linkHref) {
      styles.push(tokenTypes.linkHref, "url");
    } else { // Only apply inline styles to non-url text
      if (state.strong) { styles.push(tokenTypes.strong); }
      if (state.em) { styles.push(tokenTypes.em); }
      if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }
      if (state.linkText) { styles.push(tokenTypes.linkText); }
      if (state.code) { styles.push(tokenTypes.code); }
      if (state.image) { styles.push(tokenTypes.image); }
      if (state.imageAltText) { styles.push(tokenTypes.imageAltText, "link"); }
      if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }
    }

    if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); }

    if (state.quote) {
      styles.push(tokenTypes.quote);

      // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth
      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {
        styles.push(tokenTypes.quote + "-" + state.quote);
      } else {
        styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth);
      }
    }

    if (state.list !== false) {
      var listMod = (state.listStack.length - 1) % 3;
      if (!listMod) {
        styles.push(tokenTypes.list1);
      } else if (listMod === 1) {
        styles.push(tokenTypes.list2);
      } else {
        styles.push(tokenTypes.list3);
      }
    }

    if (state.trailingSpaceNewLine) {
      styles.push("trailing-space-new-line");
    } else if (state.trailingSpace) {
      styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b"));
    }

    return styles.length ? styles.join(' ') : null;
  }

  function handleText(stream, state) {
    if (stream.match(textRE, true)) {
      return getType(state);
    }
    return undefined;
  }

  function inlineNormal(stream, state) {
    var style = state.text(stream, state);
    if (typeof style !== 'undefined')
      return style;

    if (state.list) { // List marker (*, +, -, 1., etc)
      state.list = null;
      return getType(state);
    }

    if (state.taskList) {
      var taskOpen = stream.match(taskListRE, true)[1] !== "x";
      if (taskOpen) state.taskOpen = true;
      else state.taskClosed = true;
      if (modeCfg.highlightFormatting) state.formatting = "task";
      state.taskList = false;
      return getType(state);
    }

    state.taskOpen = false;
    state.taskClosed = false;

    if (state.header && stream.match(/^#+$/, true)) {
      if (modeCfg.highlightFormatting) state.formatting = "header";
      return getType(state);
    }

    // Get sol() value now, before character is consumed
    var sol = stream.sol();

    var ch = stream.next();

    // Matches link titles present on next line
    if (state.linkTitle) {
      state.linkTitle = false;
      var matchCh = ch;
      if (ch === '(') {
        matchCh = ')';
      }
      matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
      var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh;
      if (stream.match(new RegExp(regex), true)) {
        return tokenTypes.linkHref;
      }
    }

    // If this block is changed, it may need to be updated in GFM mode
    if (ch === '`') {
      var previousFormatting = state.formatting;
      if (modeCfg.highlightFormatting) state.formatting = "code";
      stream.eatWhile('`');
      var count = stream.current().length
      if (state.code == 0) {
        state.code = count
        return getType(state)
      } else if (count == state.code) { // Must be exact
        var t = getType(state)
        state.code = 0
        return t
      } else {
        state.formatting = previousFormatting
        return getType(state)
      }
    } else if (state.code) {
      return getType(state);
    }

    if (ch === '\\') {
      stream.next();
      if (modeCfg.highlightFormatting) {
        var type = getType(state);
        var formattingEscape = tokenTypes.formatting + "-escape";
        return type ? type + " " + formattingEscape : formattingEscape;
      }
    }

    if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) {
      state.imageMarker = true;
      state.image = true;
      if (modeCfg.highlightFormatting) state.formatting = "image";
      return getType(state);
    }

    if (ch === '[' && state.imageMarker) {
      state.imageMarker = false;
      state.imageAltText = true
      if (modeCfg.highlightFormatting) state.formatting = "image";
      return getType(state);
    }

    if (ch === ']' && state.imageAltText) {
      if (modeCfg.highlightFormatting) state.formatting = "image";
      var type = getType(state);
      state.imageAltText = false;
      state.image = false;
      state.inline = state.f = linkHref;
      return type;
    }

    if (ch === '[' && stream.match(/[^\]]*\](\(.*\)| ?\[.*?\])/, false) && !state.image) {
      state.linkText = true;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      return getType(state);
    }

    if (ch === ']' && state.linkText && stream.match(/\(.*?\)| ?\[.*?\]/, false)) {
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      state.linkText = false;
      state.inline = state.f = linkHref;
      return type;
    }

    if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) {
      state.f = state.inline = linkInline;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      if (type){
        type += " ";
      } else {
        type = "";
      }
      return type + tokenTypes.linkInline;
    }

    if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) {
      state.f = state.inline = linkInline;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      if (type){
        type += " ";
      } else {
        type = "";
      }
      return type + tokenTypes.linkEmail;
    }

    if (ch === '<' && stream.match(/^(!--|\w)/, false)) {
      var end = stream.string.indexOf(">", stream.pos);
      if (end != -1) {
        var atts = stream.string.substring(stream.start, end);
        if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true;
      }
      stream.backUp(1);
      state.htmlState = CodeMirror.startState(htmlMode);
      return switchBlock(stream, state, htmlBlock);
    }

    if (ch === '<' && stream.match(/^\/\w*?>/)) {
      state.md_inside = false;
      return "tag";
    }

    var ignoreUnderscore = false;
    if (!modeCfg.underscoresBreakWords) {
      if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) {
        var prevPos = stream.pos - 2;
        if (prevPos >= 0) {
          var prevCh = stream.string.charAt(prevPos);
          if (prevCh !== '_' && prevCh.match(/(\w)/, false)) {
            ignoreUnderscore = true;
          }
        }
      }
    }
    if (ch === '*' || (ch === '_' && !ignoreUnderscore)) {
      if (sol && stream.peek() === ' ') {
        // Do nothing, surrounded by newline and space
      } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG
        if (modeCfg.highlightFormatting) state.formatting = "strong";
        var t = getType(state);
        state.strong = false;
        return t;
      } else if (!state.strong && stream.eat(ch)) { // Add STRONG
        state.strong = ch;
        if (modeCfg.highlightFormatting) state.formatting = "strong";
        return getType(state);
      } else if (state.em === ch) { // Remove EM
        if (modeCfg.highlightFormatting) state.formatting = "em";
        var t = getType(state);
        state.em = false;
        return t;
      } else if (!state.em) { // Add EM
        state.em = ch;
        if (modeCfg.highlightFormatting) state.formatting = "em";
        return getType(state);
      }
    } else if (ch === ' ') {
      if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces
        if (stream.peek() === ' ') { // Surrounded by spaces, ignore
          return getType(state);
        } else { // Not surrounded by spaces, back up pointer
          stream.backUp(1);
        }
      }
    }

    if (modeCfg.strikethrough) {
      if (ch === '~' && stream.eatWhile(ch)) {
        if (state.strikethrough) {// Remove strikethrough
          if (modeCfg.highlightFormatting) state.formatting = "strikethrough";
          var t = getType(state);
          state.strikethrough = false;
          return t;
        } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough
          state.strikethrough = true;
          if (modeCfg.highlightFormatting) state.formatting = "strikethrough";
          return getType(state);
        }
      } else if (ch === ' ') {
        if (stream.match(/^~~/, true)) { // Probably surrounded by space
          if (stream.peek() === ' ') { // Surrounded by spaces, ignore
            return getType(state);
          } else { // Not surrounded by spaces, back up pointer
            stream.backUp(2);
          }
        }
      }
    }

    if (ch === ' ') {
      if (stream.match(/ +$/, false)) {
        state.trailingSpace++;
      } else if (state.trailingSpace) {
        state.trailingSpaceNewLine = true;
      }
    }

    return getType(state);
  }

  function linkInline(stream, state) {
    var ch = stream.next();

    if (ch === ">") {
      state.f = state.inline = inlineNormal;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      if (type){
        type += " ";
      } else {
        type = "";
      }
      return type + tokenTypes.linkInline;
    }

    stream.match(/^[^>]+/, true);

    return tokenTypes.linkInline;
  }

  function linkHref(stream, state) {
    // Check if space, and return NULL if so (to avoid marking the space)
    if(stream.eatSpace()){
      return null;
    }
    var ch = stream.next();
    if (ch === '(' || ch === '[') {
      state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]", 0);
      if (modeCfg.highlightFormatting) state.formatting = "link-string";
      state.linkHref = true;
      return getType(state);
    }
    return 'error';
  }

  var linkRE = {
    ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,
    "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/
  }

  function getLinkHrefInside(endChar) {
    return function(stream, state) {
      var ch = stream.next();

      if (ch === endChar) {
        state.f = state.inline = inlineNormal;
        if (modeCfg.highlightFormatting) state.formatting = "link-string";
        var returnState = getType(state);
        state.linkHref = false;
        return returnState;
      }

      stream.match(linkRE[endChar])
      state.linkHref = true;
      return getType(state);
    };
  }

  function footnoteLink(stream, state) {
    if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) {
      state.f = footnoteLinkInside;
      stream.next(); // Consume [
      if (modeCfg.highlightFormatting) state.formatting = "link";
      state.linkText = true;
      return getType(state);
    }
    return switchInline(stream, state, inlineNormal);
  }

  function footnoteLinkInside(stream, state) {
    if (stream.match(/^\]:/, true)) {
      state.f = state.inline = footnoteUrl;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var returnType = getType(state);
      state.linkText = false;
      return returnType;
    }

    stream.match(/^([^\]\\]|\\.)+/, true);

    return tokenTypes.linkText;
  }

  function footnoteUrl(stream, state) {
    // Check if space, and return NULL if so (to avoid marking the space)
    if(stream.eatSpace()){
      return null;
    }
    // Match URL
    stream.match(/^[^\s]+/, true);
    // Check for link title
    if (stream.peek() === undefined) { // End of line, set flag to check next line
      state.linkTitle = true;
    } else { // More content on line, check if link title
      stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true);
    }
    state.f = state.inline = inlineNormal;
    return tokenTypes.linkHref + " url";
  }

  var mode = {
    startState: function() {
      return {
        f: blockNormal,

        prevLine: null,
        thisLine: null,

        block: blockNormal,
        htmlState: null,
        indentation: 0,

        inline: inlineNormal,
        text: handleText,

        formatting: false,
        linkText: false,
        linkHref: false,
        linkTitle: false,
        code: 0,
        em: false,
        strong: false,
        header: 0,
        hr: false,
        taskList: false,
        list: false,
        listStack: [],
        quote: 0,
        trailingSpace: 0,
        trailingSpaceNewLine: false,
        strikethrough: false,
        fencedChars: null
      };
    },

    copyState: function(s) {
      return {
        f: s.f,

        prevLine: s.prevLine,
        thisLine: s.thisLine,

        block: s.block,
        htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),
        indentation: s.indentation,

        localMode: s.localMode,
        localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,

        inline: s.inline,
        text: s.text,
        formatting: false,
        linkTitle: s.linkTitle,
        code: s.code,
        em: s.em,
        strong: s.strong,
        strikethrough: s.strikethrough,
        header: s.header,
        hr: s.hr,
        taskList: s.taskList,
        list: s.list,
        listStack: s.listStack.slice(0),
        quote: s.quote,
        indentedCode: s.indentedCode,
        trailingSpace: s.trailingSpace,
        trailingSpaceNewLine: s.trailingSpaceNewLine,
        md_inside: s.md_inside,
        fencedChars: s.fencedChars
      };
    },

    token: function(stream, state) {

      // Reset state.formatting
      state.formatting = false;

      if (stream != state.thisLine) {
        var forceBlankLine = state.header || state.hr;

        // Reset state.header and state.hr
        state.header = 0;
        state.hr = false;

        if (stream.match(/^\s*$/, true) || forceBlankLine) {
          blankLine(state);
          if (!forceBlankLine) return null
          state.prevLine = null
        }

        state.prevLine = state.thisLine
        state.thisLine = stream

        // Reset state.taskList
        state.taskList = false;

        // Reset state.trailingSpace
        state.trailingSpace = 0;
        state.trailingSpaceNewLine = false;

        state.f = state.block;
        var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, '    ').length;
        state.indentationDiff = Math.min(indentation - state.indentation, 4);
        state.indentation = state.indentation + state.indentationDiff;
        if (indentation > 0) return null;
      }
      return state.f(stream, state);
    },

    innerMode: function(state) {
      if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};
      if (state.localState) return {state: state.localState, mode: state.localMode};
      return {state: state, mode: mode};
    },

    blankLine: blankLine,

    getType: getType,

    fold: "markdown"
  };
  return mode;
}, "xml");

CodeMirror.defineMIME("text/x-markdown", "markdown");

});
lib/codemirror/mode/markdown/index.html000064400000025315147361034410014233 0ustar00<!doctype html>

<title>CodeMirror: Markdown mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/continuelist.js"></script>
<script src="../xml/xml.js"></script>
<script src="markdown.js"></script>
<style type="text/css">
      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
      .cm-s-default .cm-trailing-space-a:before,
      .cm-s-default .cm-trailing-space-b:before {position: absolute; content: "\00B7"; color: #777;}
      .cm-s-default .cm-trailing-space-new-line:before {position: absolute; content: "\21B5"; color: #777;}
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Markdown</a>
  </ul>
</div>

<article>
<h2>Markdown mode</h2>
<form><textarea id="code" name="code">
Markdown: Basics
================

&lt;ul id="ProjectSubmenu"&gt;
    &lt;li&gt;&lt;a href="/projects/markdown/" title="Markdown Project Page"&gt;Main&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a class="selected" title="Markdown Basics"&gt;Basics&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/projects/markdown/syntax" title="Markdown Syntax Documentation"&gt;Syntax&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/projects/markdown/license" title="Pricing and License Information"&gt;License&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/projects/markdown/dingus" title="Online Markdown Web Form"&gt;Dingus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


Getting the Gist of Markdown's Formatting Syntax
------------------------------------------------

This page offers a brief overview of what it's like to use Markdown.
The [syntax page] [s] provides complete, detailed documentation for
every feature, but Markdown should be very easy to pick up simply by
looking at a few examples of it in action. The examples on this page
are written in a before/after style, showing example syntax and the
HTML output produced by Markdown.

It's also helpful to simply try Markdown out; the [Dingus] [d] is a
web application that allows you type your own Markdown-formatted text
and translate it to XHTML.

**Note:** This document is itself written using Markdown; you
can [see the source for it by adding '.text' to the URL] [src].

  [s]: /projects/markdown/syntax  "Markdown Syntax"
  [d]: /projects/markdown/dingus  "Markdown Dingus"
  [src]: /projects/markdown/basics.text


## Paragraphs, Headers, Blockquotes ##

A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like
a blank line -- a line containing nothing but spaces or tabs is
considered blank.) Normal paragraphs should not be indented with
spaces or tabs.

Markdown offers two styles of headers: *Setext* and *atx*.
Setext-style headers for `&lt;h1&gt;` and `&lt;h2&gt;` are created by
"underlining" with equal signs (`=`) and hyphens (`-`), respectively.
To create an atx-style header, you put 1-6 hash marks (`#`) at the
beginning of the line -- the number of hashes equals the resulting
HTML header level.

Blockquotes are indicated using email-style '`&gt;`' angle brackets.

Markdown:

    A First Level Header
    ====================
    
    A Second Level Header
    ---------------------

    Now is the time for all good men to come to
    the aid of their country. This is just a
    regular paragraph.

    The quick brown fox jumped over the lazy
    dog's back.
    
    ### Header 3

    &gt; This is a blockquote.
    &gt; 
    &gt; This is the second paragraph in the blockquote.
    &gt;
    &gt; ## This is an H2 in a blockquote


Output:

    &lt;h1&gt;A First Level Header&lt;/h1&gt;
    
    &lt;h2&gt;A Second Level Header&lt;/h2&gt;
    
    &lt;p&gt;Now is the time for all good men to come to
    the aid of their country. This is just a
    regular paragraph.&lt;/p&gt;
    
    &lt;p&gt;The quick brown fox jumped over the lazy
    dog's back.&lt;/p&gt;
    
    &lt;h3&gt;Header 3&lt;/h3&gt;
    
    &lt;blockquote&gt;
        &lt;p&gt;This is a blockquote.&lt;/p&gt;
        
        &lt;p&gt;This is the second paragraph in the blockquote.&lt;/p&gt;
        
        &lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt;
    &lt;/blockquote&gt;



### Phrase Emphasis ###

Markdown uses asterisks and underscores to indicate spans of emphasis.

Markdown:

    Some of these words *are emphasized*.
    Some of these words _are emphasized also_.
    
    Use two asterisks for **strong emphasis**.
    Or, if you prefer, __use two underscores instead__.

Output:

    &lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;.
    Some of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt;
    
    &lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;.
    Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt;
   


## Lists ##

Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
`+`, and `-`) as list markers. These three markers are
interchangable; this:

    *   Candy.
    *   Gum.
    *   Booze.

this:

    +   Candy.
    +   Gum.
    +   Booze.

and this:

    -   Candy.
    -   Gum.
    -   Booze.

all produce the same output:

    &lt;ul&gt;
    &lt;li&gt;Candy.&lt;/li&gt;
    &lt;li&gt;Gum.&lt;/li&gt;
    &lt;li&gt;Booze.&lt;/li&gt;
    &lt;/ul&gt;

Ordered (numbered) lists use regular numbers, followed by periods, as
list markers:

    1.  Red
    2.  Green
    3.  Blue

Output:

    &lt;ol&gt;
    &lt;li&gt;Red&lt;/li&gt;
    &lt;li&gt;Green&lt;/li&gt;
    &lt;li&gt;Blue&lt;/li&gt;
    &lt;/ol&gt;

If you put blank lines between items, you'll get `&lt;p&gt;` tags for the
list item text. You can create multi-paragraph list items by indenting
the paragraphs by 4 spaces or 1 tab:

    *   A list item.
    
        With multiple paragraphs.

    *   Another item in the list.

Output:

    &lt;ul&gt;
    &lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt;
    &lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt;
    &lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt;
    &lt;/ul&gt;
    


### Links ###

Markdown supports two styles for creating links: *inline* and
*reference*. With both styles, you use square brackets to delimit the
text you want to turn into a link.

Inline-style links use parentheses immediately after the link text.
For example:

    This is an [example link](http://example.com/).

Output:

    &lt;p&gt;This is an &lt;a href="http://example.com/"&gt;
    example link&lt;/a&gt;.&lt;/p&gt;

Optionally, you may include a title attribute in the parentheses:

    This is an [example link](http://example.com/ "With a Title").

Output:

    &lt;p&gt;This is an &lt;a href="http://example.com/" title="With a Title"&gt;
    example link&lt;/a&gt;.&lt;/p&gt;

Reference-style links allow you to refer to your links by names, which
you define elsewhere in your document:

    I get 10 times more traffic from [Google][1] than from
    [Yahoo][2] or [MSN][3].

    [1]: http://google.com/        "Google"
    [2]: http://search.yahoo.com/  "Yahoo Search"
    [3]: http://search.msn.com/    "MSN Search"

Output:

    &lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
    title="Google"&gt;Google&lt;/a&gt; than from &lt;a href="http://search.yahoo.com/"
    title="Yahoo Search"&gt;Yahoo&lt;/a&gt; or &lt;a href="http://search.msn.com/"
    title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;

The title attribute is optional. Link names may contain letters,
numbers and spaces, but are *not* case sensitive:

    I start my morning with a cup of coffee and
    [The New York Times][NY Times].

    [ny times]: http://www.nytimes.com/

Output:

    &lt;p&gt;I start my morning with a cup of coffee and
    &lt;a href="http://www.nytimes.com/"&gt;The New York Times&lt;/a&gt;.&lt;/p&gt;


### Images ###

Image syntax is very much like link syntax.

Inline (titles are optional):

    ![alt text](/path/to/img.jpg "Title")

Reference-style:

    ![alt text][id]

    [id]: /path/to/img.jpg "Title"

Both of the above examples produce the same output:

    &lt;img src="/path/to/img.jpg" alt="alt text" title="Title" /&gt;



### Code ###

In a regular paragraph, you can create code span by wrapping text in
backtick quotes. Any ampersands (`&amp;`) and angle brackets (`&lt;` or
`&gt;`) will automatically be translated into HTML entities. This makes
it easy to use Markdown to write about HTML example code:

    I strongly recommend against using any `&lt;blink&gt;` tags.

    I wish SmartyPants used named entities like `&amp;mdash;`
    instead of decimal-encoded entites like `&amp;#8212;`.

Output:

    &lt;p&gt;I strongly recommend against using any
    &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
    
    &lt;p&gt;I wish SmartyPants used named entities like
    &lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded
    entites like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt;


To specify an entire block of pre-formatted code, indent every line of
the block by 4 spaces or 1 tab. Just like with code spans, `&amp;`, `&lt;`,
and `&gt;` characters will be escaped automatically.

Markdown:

    If you want your page to validate under XHTML 1.0 Strict,
    you've got to put paragraph tags in your blockquotes:

        &lt;blockquote&gt;
            &lt;p&gt;For example.&lt;/p&gt;
        &lt;/blockquote&gt;

Output:

    &lt;p&gt;If you want your page to validate under XHTML 1.0 Strict,
    you've got to put paragraph tags in your blockquotes:&lt;/p&gt;
    
    &lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt;
        &amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt;
    &amp;lt;/blockquote&amp;gt;
    &lt;/code&gt;&lt;/pre&gt;
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: 'markdown',
        lineNumbers: true,
        theme: "default",
        extraKeys: {"Enter": "newlineAndIndentContinueMarkdownList"}
      });
    </script>

    <p>You might want to use the <a href="../gfm/index.html">Github-Flavored Markdown mode</a> instead, which adds support for fenced code blocks and a few other things.</p>

    <p>Optionally depends on the XML mode for properly highlighted inline XML blocks.</p>
    
    <p><strong>MIME types defined:</strong> <code>text/x-markdown</code>.</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#markdown_*">normal</a>,  <a href="../../test/index.html#verbose,markdown_*">verbose</a>.</p>

  </article>
lib/codemirror/mode/pascal/pascal.js000064400000005757147361034410013470 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pascal", function() {
  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var keywords = words("and array begin case const div do downto else end file for forward integer " +
                       "boolean char function goto if in label mod nil not of or packed procedure " +
                       "program record repeat set string then to type until var while with");
  var atoms = {"null": true};

  var isOperatorChar = /[+\-*&%=<>!?|\/]/;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == "#" && state.startOfLine) {
      stream.skipToEnd();
      return "meta";
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (ch == "(" && stream.eat("*")) {
      state.tokenize = tokenComment;
      return tokenComment(stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur)) return "keyword";
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped) state.tokenize = null;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == ")" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  // Interface

  return {
    startState: function() {
      return {tokenize: null};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return style;
      return style;
    },

    electricChars: "{}"
  };
});

CodeMirror.defineMIME("text/x-pascal", "pascal");

});
lib/codemirror/mode/pascal/index.html000064400000002640147361034410013650 0ustar00<!doctype html>

<title>CodeMirror: Pascal mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="pascal.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Pascal</a>
  </ul>
</div>

<article>
<h2>Pascal mode</h2>


<div><textarea id="code" name="code">
(* Example Pascal code *)

while a <> b do writeln('Waiting');
 
if a > b then 
  writeln('Condition met')
else 
  writeln('Condition not met');
 
for i := 1 to 10 do 
  writeln('Iteration: ', i:1);
 
repeat
  a := a + 1
until a = 10;
 
case i of
  0: write('zero');
  1: write('one');
  2: write('two')
end;
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "text/x-pascal"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-pascal</code>.</p>
  </article>
lib/codemirror/mode/factor/index.html000064400000003750147361034410013666 0ustar00<!doctype html>

<title>CodeMirror: Factor mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/simple.js"></script>
<script src="factor.js"></script>
<style>
.CodeMirror {
    font-family: 'Droid Sans Mono', monospace;
    font-size: 14px;
}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Factor</a>
  </ul>
</div>

<article>

<h2>Factor mode</h2>

<form><textarea id="code" name="code">
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.

! A simple time server

USING: accessors calendar calendar.format io io.encodings.ascii
io.servers kernel threads ;
IN: time-server

: handle-time-client ( -- )
    now timestamp>rfc822 print ;

: <time-server> ( -- threaded-server )
    ascii <threaded-server>
        "time-server" >>name
        1234 >>insecure
        [ handle-time-client ] >>handler ;

: start-time-server ( -- )
    <time-server> start-server drop ;

MAIN: start-time-server
</textarea>
  </form>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    lineWrapping: true,
    indentUnit: 2,
    tabSize: 2,
    autofocus: true,
    mode: "text/x-factor"
  });
</script>
<p/>
<p>Simple mode that handles Factor Syntax (<a href="http://en.wikipedia.org/wiki/Factor_(programming_language)">Factor on WikiPedia</a>).</p>

<p><strong>MIME types defined:</strong> <code>text/x-factor</code>.</p>

</article>
lib/codemirror/mode/factor/factor.js000064400000005547147361034410013513 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Factor syntax highlight - simple mode
//
// by Dimage Sapelkin (https://github.com/kerabromsmu)

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineSimpleMode("factor", {
    // The start state contains the rules that are intially used
    start: [
      // comments
      {regex: /#?!.*/, token: "comment"},
      // strings """, multiline --> state
      {regex: /"""/, token: "string", next: "string3"},
      {regex: /"/, token: "string", next: "string"},
      // numbers: dec, hex, unicode, bin, fractional, complex
      {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"},
      //{regex: /[+-]?/} //fractional
      // definition: defining word, defined word, etc
      {regex: /(\:)(\s+)(\S+)(\s+)(\()/, token: ["keyword", null, "def", null, "keyword"], next: "stack"},
      // vocabulary using --> state
      {regex: /USING\:/, token: "keyword", next: "vocabulary"},
      // vocabulary definition/use
      {regex: /(USE\:|IN\:)(\s+)(\S+)/, token: ["keyword", null, "variable-2"]},
      // <constructors>
      {regex: /<\S+>/, token: "builtin"},
      // "keywords", incl. ; t f . [ ] { } defining words
      {regex: /;|t|f|if|\.|\[|\]|\{|\}|MAIN:/, token: "keyword"},
      // any id (?)
      {regex: /\S+/, token: "variable"},

      {
        regex: /./,
        token: null
      }
    ],
    vocabulary: [
      {regex: /;/, token: "keyword", next: "start"},
      {regex: /\S+/, token: "variable-2"},
      {
        regex: /./,
        token: null
      }
    ],
    string: [
      {regex: /(?:[^\\]|\\.)*?"/, token: "string", next: "start"},
      {regex: /.*/, token: "string"}
    ],
    string3: [
      {regex: /(?:[^\\]|\\.)*?"""/, token: "string", next: "start"},
      {regex: /.*/, token: "string"}
    ],
    stack: [
      {regex: /\)/, token: "meta", next: "start"},
      {regex: /--/, token: "meta"},
      {regex: /\S+/, token: "variable-3"},
      {
        regex: /./,
        token: null
      }
    ],
    // The meta property contains global information about the mode. It
    // can contain properties like lineComment, which are supported by
    // all modes, and also directives like dontIndentStates, which are
    // specific to simple modes.
    meta: {
      dontIndentStates: ["start", "vocabulary", "string", "string3", "stack"],
      lineComment: [ "!", "#!" ]
    }
  });

  CodeMirror.defineMIME("text/x-factor", "factor");
});
lib/codemirror/mode/rpm/changes/index.html000064400000004204147361034410014611 0ustar00<!doctype html>

<title>CodeMirror: RPM changes mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

    <link rel="stylesheet" href="../../../lib/codemirror.css">
    <script src="../../../lib/codemirror.js"></script>
    <script src="changes.js"></script>
    <link rel="stylesheet" href="../../../doc/docs.css">
    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>

<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../../doc/logo.png"></a>

  <ul>
    <li><a href="../../../index.html">Home</a>
    <li><a href="../../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../../index.html">Language modes</a>
    <li><a class=active href="#">RPM changes</a>
  </ul>
</div>

<article>
<h2>RPM changes mode</h2>

    <div><textarea id="code" name="code">
-------------------------------------------------------------------
Tue Oct 18 13:58:40 UTC 2011 - misterx@example.com

- Update to r60.3
- Fixes bug in the reflect package
  * disallow Interface method on Value obtained via unexported name

-------------------------------------------------------------------
Thu Oct  6 08:14:24 UTC 2011 - misterx@example.com

- Update to r60.2
- Fixes memory leak in certain map types

-------------------------------------------------------------------
Wed Oct  5 14:34:10 UTC 2011 - misterx@example.com

- Tweaks for gdb debugging
- go.spec changes:
  - move %go_arch definition to %prep section
  - pass correct location of go specific gdb pretty printer and
    functions to cpp as HOST_EXTRA_CFLAGS macro
  - install go gdb functions & printer
- gdb-printer.patch
  - patch linker (src/cmd/ld/dwarf.c) to emit correct location of go
    gdb functions and pretty printer
</textarea></div>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "changes"},
        lineNumbers: true,
        indentUnit: 4
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-rpm-changes</code>.</p>
</article>
lib/codemirror/mode/rpm/index.html000064400000011017147361034410013201 0ustar00<!doctype html>

<title>CodeMirror: RPM changes mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

    <link rel="stylesheet" href="../../lib/codemirror.css">
    <script src="../../lib/codemirror.js"></script>
    <script src="rpm.js"></script>
    <link rel="stylesheet" href="../../doc/docs.css">
    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>

<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">RPM</a>
  </ul>
</div>

<article>
<h2>RPM changes mode</h2>

    <div><textarea id="code" name="code">
-------------------------------------------------------------------
Tue Oct 18 13:58:40 UTC 2011 - misterx@example.com

- Update to r60.3
- Fixes bug in the reflect package
  * disallow Interface method on Value obtained via unexported name

-------------------------------------------------------------------
Thu Oct  6 08:14:24 UTC 2011 - misterx@example.com

- Update to r60.2
- Fixes memory leak in certain map types

-------------------------------------------------------------------
Wed Oct  5 14:34:10 UTC 2011 - misterx@example.com

- Tweaks for gdb debugging
- go.spec changes:
  - move %go_arch definition to %prep section
  - pass correct location of go specific gdb pretty printer and
    functions to cpp as HOST_EXTRA_CFLAGS macro
  - install go gdb functions & printer
- gdb-printer.patch
  - patch linker (src/cmd/ld/dwarf.c) to emit correct location of go
    gdb functions and pretty printer
</textarea></div>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "rpm-changes"},
        lineNumbers: true,
        indentUnit: 4
      });
    </script>

<h2>RPM spec mode</h2>
    
    <div><textarea id="code2" name="code2">
#
# spec file for package minidlna
#
# Copyright (c) 2011, Sascha Peilicke <saschpe@gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.


Name:           libupnp6
Version:        1.6.13
Release:        0
Summary:        Portable Universal Plug and Play (UPnP) SDK
Group:          System/Libraries
License:        BSD-3-Clause
Url:            http://sourceforge.net/projects/pupnp/
Source0:        http://downloads.sourceforge.net/pupnp/libupnp-%{version}.tar.bz2
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
The portable Universal Plug and Play (UPnP) SDK provides support for building
UPnP-compliant control points, devices, and bridges on several operating
systems.

%package -n libupnp-devel
Summary:        Portable Universal Plug and Play (UPnP) SDK
Group:          Development/Libraries/C and C++
Provides:       pkgconfig(libupnp)
Requires:       %{name} = %{version}

%description -n libupnp-devel
The portable Universal Plug and Play (UPnP) SDK provides support for building
UPnP-compliant control points, devices, and bridges on several operating
systems.

%prep
%setup -n libupnp-%{version}

%build
%configure --disable-static
make %{?_smp_mflags}

%install
%makeinstall
find %{buildroot} -type f -name '*.la' -exec rm -f {} ';'

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%files
%defattr(-,root,root,-)
%doc ChangeLog NEWS README TODO
%{_libdir}/libixml.so.*
%{_libdir}/libthreadutil.so.*
%{_libdir}/libupnp.so.*

%files -n libupnp-devel
%defattr(-,root,root,-)
%{_libdir}/pkgconfig/libupnp.pc
%{_libdir}/libixml.so
%{_libdir}/libthreadutil.so
%{_libdir}/libupnp.so
%{_includedir}/upnp/

%changelog</textarea></div>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code2"), {
        mode: {name: "rpm-spec"},
        lineNumbers: true,
        indentUnit: 4
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-rpm-spec</code>, <code>text/x-rpm-changes</code>.</p>
</article>
lib/codemirror/mode/rpm/rpm.js000064400000007277147361034410012355 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("rpm-changes", function() {
  var headerSeperator = /^-+$/;
  var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)  ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /;
  var simpleEmail = /^[\w+.-]+@[\w.-]+/;

  return {
    token: function(stream) {
      if (stream.sol()) {
        if (stream.match(headerSeperator)) { return 'tag'; }
        if (stream.match(headerLine)) { return 'tag'; }
      }
      if (stream.match(simpleEmail)) { return 'string'; }
      stream.next();
      return null;
    }
  };
});

CodeMirror.defineMIME("text/x-rpm-changes", "rpm-changes");

// Quick and dirty spec file highlighting

CodeMirror.defineMode("rpm-spec", function() {
  var arch = /^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/;

  var preamble = /^[a-zA-Z0-9()]+:/;
  var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/;
  var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros
  var control_flow_simple = /^%(else|endif)/; // rpm control flow macros
  var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros

  return {
    startState: function () {
        return {
          controlFlow: false,
          macroParameters: false,
          section: false
        };
    },
    token: function (stream, state) {
      var ch = stream.peek();
      if (ch == "#") { stream.skipToEnd(); return "comment"; }

      if (stream.sol()) {
        if (stream.match(preamble)) { return "header"; }
        if (stream.match(section)) { return "atom"; }
      }

      if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT'
      if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}'

      if (stream.match(control_flow_simple)) { return "keyword"; }
      if (stream.match(control_flow_complex)) {
        state.controlFlow = true;
        return "keyword";
      }
      if (state.controlFlow) {
        if (stream.match(operators)) { return "operator"; }
        if (stream.match(/^(\d+)/)) { return "number"; }
        if (stream.eol()) { state.controlFlow = false; }
      }

      if (stream.match(arch)) {
        if (stream.eol()) { state.controlFlow = false; }
        return "number";
      }

      // Macros like '%make_install' or '%attr(0775,root,root)'
      if (stream.match(/^%[\w]+/)) {
        if (stream.match(/^\(/)) { state.macroParameters = true; }
        return "keyword";
      }
      if (state.macroParameters) {
        if (stream.match(/^\d+/)) { return "number";}
        if (stream.match(/^\)/)) {
          state.macroParameters = false;
          return "keyword";
        }
      }

      // Macros like '%{defined fedora}'
      if (stream.match(/^%\{\??[\w \-\:\!]+\}/)) {
        if (stream.eol()) { state.controlFlow = false; }
        return "def";
      }

      //TODO: Include bash script sub-parser (CodeMirror supports that)
      stream.next();
      return null;
    }
  };
});

CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec");

});
lib/codemirror/mode/properties/index.html000064400000003023147361034410014575 0ustar00<!doctype html>

<title>CodeMirror: Properties files mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="properties.js"></script>
<style>.CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Properties files</a>
  </ul>
</div>

<article>
<h2>Properties files mode</h2>
<form><textarea id="code" name="code">
# This is a properties file
a.key = A value
another.key = http://example.com
! Exclamation mark as comment
but.not=Within ! A value # indeed
   # Spaces at the beginning of a line
   spaces.before.key=value
backslash=Used for multi\
          line entries,\
          that's convenient.
# Unicode sequences
unicode.key=This is \u0020 Unicode
no.multiline=here
# Colons
colons : can be used too
# Spaces
spaces\ in\ keys=Not very common...
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-properties</code>,
    <code>text/x-ini</code>.</p>

  </article>
lib/codemirror/mode/properties/properties.js000064400000004173147361034410015341 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("properties", function() {
  return {
    token: function(stream, state) {
      var sol = stream.sol() || state.afterSection;
      var eol = stream.eol();

      state.afterSection = false;

      if (sol) {
        if (state.nextMultiline) {
          state.inMultiline = true;
          state.nextMultiline = false;
        } else {
          state.position = "def";
        }
      }

      if (eol && ! state.nextMultiline) {
        state.inMultiline = false;
        state.position = "def";
      }

      if (sol) {
        while(stream.eatSpace()) {}
      }

      var ch = stream.next();

      if (sol && (ch === "#" || ch === "!" || ch === ";")) {
        state.position = "comment";
        stream.skipToEnd();
        return "comment";
      } else if (sol && ch === "[") {
        state.afterSection = true;
        stream.skipTo("]"); stream.eat("]");
        return "header";
      } else if (ch === "=" || ch === ":") {
        state.position = "quote";
        return null;
      } else if (ch === "\\" && state.position === "quote") {
        if (stream.eol()) {  // end of line?
          // Multiline value
          state.nextMultiline = true;
        }
      }

      return state.position;
    },

    startState: function() {
      return {
        position : "def",       // Current position, "def", "quote" or "comment"
        nextMultiline : false,  // Is the next line multiline value
        inMultiline : false,    // Is the current line a multiline value
        afterSection : false    // Did we just open a section
      };
    }

  };
});

CodeMirror.defineMIME("text/x-properties", "properties");
CodeMirror.defineMIME("text/x-ini", "properties");

});
lib/codemirror/mode/cmake/cmake.js000064400000005050147361034410013104 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object")
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod);
  else
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("cmake", function () {
  var variable_regex = /({)?[a-zA-Z0-9_]+(})?/;

  function tokenString(stream, state) {
    var current, prev, found_var = false;
    while (!stream.eol() && (current = stream.next()) != state.pending) {
      if (current === '$' && prev != '\\' && state.pending == '"') {
        found_var = true;
        break;
      }
      prev = current;
    }
    if (found_var) {
      stream.backUp(1);
    }
    if (current == state.pending) {
      state.continueString = false;
    } else {
      state.continueString = true;
    }
    return "string";
  }

  function tokenize(stream, state) {
    var ch = stream.next();

    // Have we found a variable?
    if (ch === '$') {
      if (stream.match(variable_regex)) {
        return 'variable-2';
      }
      return 'variable';
    }
    // Should we still be looking for the end of a string?
    if (state.continueString) {
      // If so, go through the loop again
      stream.backUp(1);
      return tokenString(stream, state);
    }
    // Do we just have a function on our hands?
    // In 'cmake_minimum_required (VERSION 2.8.8)', 'cmake_minimum_required' is matched
    if (stream.match(/(\s+)?\w+\(/) || stream.match(/(\s+)?\w+\ \(/)) {
      stream.backUp(1);
      return 'def';
    }
    if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    // Have we found a string?
    if (ch == "'" || ch == '"') {
      // Store the type (single or double)
      state.pending = ch;
      // Perform the looping function to find the end
      return tokenString(stream, state);
    }
    if (ch == '(' || ch == ')') {
      return 'bracket';
    }
    if (ch.match(/[0-9]/)) {
      return 'number';
    }
    stream.eatWhile(/[\w-]/);
    return null;
  }
  return {
    startState: function () {
      var state = {};
      state.inDefinition = false;
      state.inInclude = false;
      state.continueString = false;
      state.pending = false;
      return state;
    },
    token: function (stream, state) {
      if (stream.eatSpace()) return null;
      return tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME("text/x-cmake", "cmake");

});
lib/codemirror/mode/cmake/index.html000064400000010070147361034410013461 0ustar00<!doctype html>

<title>CodeMirror: CMake mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="cmake.js"></script>
<style>
      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
      .cm-s-default span.cm-arrow { color: red; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">CMake</a>
  </ul>
</div>

<article>
<h2>CMake mode</h2>
<form><textarea id="code" name="code">
# vim: syntax=cmake
if(NOT CMAKE_BUILD_TYPE)
    # default to Release build for GCC builds
    set(CMAKE_BUILD_TYPE Release CACHE STRING
        "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
        FORCE)
endif()
message(STATUS "cmake version ${CMAKE_VERSION}")
if(POLICY CMP0025)
    cmake_policy(SET CMP0025 OLD) # report Apple's Clang as just Clang
endif()
if(POLICY CMP0042)
    cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH
endif()

project (x265)
cmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(CheckSymbolExists)
include(CheckCXXCompilerFlag)

# X265_BUILD must be incremented each time the public API is changed
set(X265_BUILD 48)
configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
               "${PROJECT_BINARY_DIR}/x265.def")
configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
               "${PROJECT_BINARY_DIR}/x265_config.h")

SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")

# System architecture detection
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC)
set(X86_ALIASES x86 i386 i686 x86_64 amd64)
list(FIND X86_ALIASES "${SYSPROC}" X86MATCH)
if("${SYSPROC}" STREQUAL "" OR X86MATCH GREATER "-1")
    message(STATUS "Detected x86 target processor")
    set(X86 1)
    add_definitions(-DX265_ARCH_X86=1)
    if("${CMAKE_SIZEOF_VOID_P}" MATCHES 8)
        set(X64 1)
        add_definitions(-DX86_64=1)
    endif()
elseif(${SYSPROC} STREQUAL "armv6l")
    message(STATUS "Detected ARM target processor")
    set(ARM 1)
    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1)
else()
    message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown")
    message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}")
endif()

if(UNIX)
    list(APPEND PLATFORM_LIBS pthread)
    find_library(LIBRT rt)
    if(LIBRT)
        list(APPEND PLATFORM_LIBS rt)
    endif()
    find_package(Numa)
    if(NUMA_FOUND)
        list(APPEND CMAKE_REQUIRED_LIBRARIES ${NUMA_LIBRARY})
        check_symbol_exists(numa_node_of_cpu numa.h NUMA_V2)
        if(NUMA_V2)
            add_definitions(-DHAVE_LIBNUMA)
            message(STATUS "libnuma found, building with support for NUMA nodes")
            list(APPEND PLATFORM_LIBS ${NUMA_LIBRARY})
            link_directories(${NUMA_LIBRARY_DIR})
            include_directories(${NUMA_INCLUDE_DIR})
        endif()
    endif()
    mark_as_advanced(LIBRT NUMA_FOUND)
endif(UNIX)

if(X64 AND NOT WIN32)
    option(ENABLE_PIC "Enable Position Independent Code" ON)
else()
    option(ENABLE_PIC "Enable Position Independent Code" OFF)
endif(X64 AND NOT WIN32)

# Compiler detection
if(CMAKE_GENERATOR STREQUAL "Xcode")
  set(XCODE 1)
endif()
if (APPLE)
  add_definitions(-DMACOS)
endif()
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/x-cmake",
        matchBrackets: true,
        indentUnit: 4
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-cmake</code>.</p>

  </article>
lib/codemirror/mode/ecl/ecl.js000064400000021213147361034410012251 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("ecl", function(config) {

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  function metaHook(stream, state) {
    if (!state.startOfLine) return false;
    stream.skipToEnd();
    return "meta";
  }

  var indentUnit = config.indentUnit;
  var keyword = words("abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode");
  var variable = words("apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait");
  var variable_2 = words("__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath");
  var variable_3 = words("ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode");
  var builtin = words("checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when");
  var blockKeywords = words("catch class do else finally for if switch try while");
  var atoms = words("true false null");
  var hooks = {"#": metaHook};
  var isOperatorChar = /[+\-*&%=<>!?|\/]/;

  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var cur = stream.current().toLowerCase();
    if (keyword.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "keyword";
    } else if (variable.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "variable";
    } else if (variable_2.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "variable-2";
    } else if (variable_3.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "variable-3";
    } else if (builtin.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "builtin";
    } else { //Data types are of from KEYWORD##
                var i = cur.length - 1;
                while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_'))
                        --i;

                if (i > 0) {
                        var cur2 = cur.substr(0, i + 1);
                if (variable_3.propertyIsEnumerable(cur2)) {
                        if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = "newstatement";
                        return "variable-3";
                }
            }
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return null;
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped)
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null, state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state);
      else if (curPunc == "{") pushContext(state, stream.column(), "}");
      else if (curPunc == "[") pushContext(state, stream.column(), "]");
      else if (curPunc == "(") pushContext(state, stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null) return 0;
      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
      if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev;
      var closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}"
  };
});

CodeMirror.defineMIME("text/x-ecl", "ecl");

});
lib/codemirror/mode/ecl/index.html000064400000002601147361034410013145 0ustar00<!doctype html>

<title>CodeMirror: ECL mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="ecl.js"></script>
<style>.CodeMirror {border: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">ECL</a>
  </ul>
</div>

<article>
<h2>ECL mode</h2>
<form><textarea id="code" name="code">
/*
sample useless code to demonstrate ecl syntax highlighting
this is a multiline comment!
*/

//  this is a singleline comment!

import ut;
r := 
  record
   string22 s1 := '123';
   integer4 i1 := 123;
  end;
#option('tmp', true);
d := dataset('tmp::qb', r, thor);
output(d);
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p>Based on CodeMirror's clike mode.  For more information see <a href="http://hpccsystems.com">HPCC Systems</a> web site.</p>
    <p><strong>MIME types defined:</strong> <code>text/x-ecl</code>.</p>

  </article>
lib/codemirror/mode/haxe/index.html000064400000005021147361034410013326 0ustar00<!doctype html>

<title>CodeMirror: Haxe mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="haxe.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Haxe</a>
  </ul>
</div>

<article>
<h2>Haxe mode</h2>


<div><p><textarea id="code-haxe" name="code">
import one.two.Three;

@attr("test")
class Foo&lt;T&gt; extends Three
{
	public function new()
	{
		noFoo = 12;
	}
	
	public static inline function doFoo(obj:{k:Int, l:Float}):Int
	{
		for(i in 0...10)
		{
			obj.k++;
			trace(i);
			var var1 = new Array();
			if(var1.length > 1)
				throw "Error";
		}
		// The following line should not be colored, the variable is scoped out
		var1;
		/* Multi line
		 * Comment test
		 */
		return obj.k;
	}
	private function bar():Void
	{
		#if flash
		var t1:String = "1.21";
		#end
		try {
			doFoo({k:3, l:1.2});
		}
		catch (e : String) {
			trace(e);
		}
		var t2:Float = cast(3.2);
		var t3:haxe.Timer = new haxe.Timer();
		var t4 = {k:Std.int(t2), l:Std.parseFloat(t1)};
		var t5 = ~/123+.*$/i;
		doFoo(t4);
		untyped t1 = 4;
		bob = new Foo&lt;Int&gt;
	}
	public var okFoo(default, never):Float;
	var noFoo(getFoo, null):Int;
	function getFoo():Int {
		return noFoo;
	}
	
	public var three:Int;
}
enum Color
{
	red;
	green;
	blue;
	grey( v : Int );
	rgb (r:Int,g:Int,b:Int);
}
</textarea></p>

<p>Hxml mode:</p>

<p><textarea id="code-hxml">
-cp test
-js path/to/file.js
#-remap nme:flash
--next
-D source-map-content
-cmd 'test'
-lib lime
</textarea></p>
</div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code-haxe"), {
      	mode: "haxe",
        lineNumbers: true,
        indentUnit: 4,
        indentWithTabs: true
      });
      
      editor = CodeMirror.fromTextArea(document.getElementById("code-hxml"), {
      	mode: "hxml",
        lineNumbers: true,
        indentUnit: 4,
        indentWithTabs: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-haxe, text/x-hxml</code>.</p>
  </article>
lib/codemirror/mode/haxe/haxe.js000064400000042240147361034410012620 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("haxe", function(config, parserConfig) {
  var indentUnit = config.indentUnit;

  // Tokenizer

  function kw(type) {return {type: type, style: "keyword"};}
  var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c");
  var operator = kw("operator"), atom = {type: "atom", style: "atom"}, attribute = {type:"attribute", style: "attribute"};
  var type = kw("typedef");
  var keywords = {
    "if": A, "while": A, "else": B, "do": B, "try": B,
    "return": C, "break": C, "continue": C, "new": C, "throw": C,
    "var": kw("var"), "inline":attribute, "static": attribute, "using":kw("import"),
    "public": attribute, "private": attribute, "cast": kw("cast"), "import": kw("import"), "macro": kw("macro"),
    "function": kw("function"), "catch": kw("catch"), "untyped": kw("untyped"), "callback": kw("cb"),
    "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
    "in": operator, "never": kw("property_access"), "trace":kw("trace"),
    "class": type, "abstract":type, "enum":type, "interface":type, "typedef":type, "extends":type, "implements":type, "dynamic":type,
    "true": atom, "false": atom, "null": atom
  };

  var isOperatorChar = /[+\-*&%=<>!?|]/;

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function toUnescaped(stream, end) {
    var escaped = false, next;
    while ((next = stream.next()) != null) {
      if (next == end && !escaped)
        return true;
      escaped = !escaped && next == "\\";
    }
  }

  // Used as scratch variables to communicate multiple values without
  // consing up tons of objects.
  var type, content;
  function ret(tp, style, cont) {
    type = tp; content = cont;
    return style;
  }

  function haxeTokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'") {
      return chain(stream, state, haxeTokenString(ch));
    } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      return ret(ch);
    } else if (ch == "0" && stream.eat(/x/i)) {
      stream.eatWhile(/[\da-f]/i);
      return ret("number", "number");
    } else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) {
      stream.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/);
      return ret("number", "number");
    } else if (state.reAllowed && (ch == "~" && stream.eat(/\//))) {
      toUnescaped(stream, "/");
      stream.eatWhile(/[gimsu]/);
      return ret("regexp", "string-2");
    } else if (ch == "/") {
      if (stream.eat("*")) {
        return chain(stream, state, haxeTokenComment);
      } else if (stream.eat("/")) {
        stream.skipToEnd();
        return ret("comment", "comment");
      } else {
        stream.eatWhile(isOperatorChar);
        return ret("operator", null, stream.current());
      }
    } else if (ch == "#") {
        stream.skipToEnd();
        return ret("conditional", "meta");
    } else if (ch == "@") {
      stream.eat(/:/);
      stream.eatWhile(/[\w_]/);
      return ret ("metadata", "meta");
    } else if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return ret("operator", null, stream.current());
    } else {
      var word;
      if(/[A-Z]/.test(ch)) {
        stream.eatWhile(/[\w_<>]/);
        word = stream.current();
        return ret("type", "variable-3", word);
      } else {
        stream.eatWhile(/[\w_]/);
        var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];
        return (known && state.kwAllowed) ? ret(known.type, known.style, word) :
                       ret("variable", "variable", word);
      }
    }
  }

  function haxeTokenString(quote) {
    return function(stream, state) {
      if (toUnescaped(stream, quote))
        state.tokenize = haxeTokenBase;
      return ret("string", "string");
    };
  }

  function haxeTokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = haxeTokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ret("comment", "comment");
  }

  // Parser

  var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true};

  function HaxeLexical(indented, column, type, align, prev, info) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.prev = prev;
    this.info = info;
    if (align != null) this.align = align;
  }

  function inScope(state, varname) {
    for (var v = state.localVars; v; v = v.next)
      if (v.name == varname) return true;
  }

  function parseHaxe(state, style, type, content, stream) {
    var cc = state.cc;
    // Communicate our context to the combinators.
    // (Less wasteful than consing up a hundred closures on every call.)
    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc;

    if (!state.lexical.hasOwnProperty("align"))
      state.lexical.align = true;

    while(true) {
      var combinator = cc.length ? cc.pop() : statement;
      if (combinator(type, content)) {
        while(cc.length && cc[cc.length - 1].lex)
          cc.pop()();
        if (cx.marked) return cx.marked;
        if (type == "variable" && inScope(state, content)) return "variable-2";
        if (type == "variable" && imported(state, content)) return "variable-3";
        return style;
      }
    }
  }

  function imported(state, typename) {
    if (/[a-z]/.test(typename.charAt(0)))
      return false;
    var len = state.importedtypes.length;
    for (var i = 0; i<len; i++)
      if(state.importedtypes[i]==typename) return true;
  }

  function registerimport(importname) {
    var state = cx.state;
    for (var t = state.importedtypes; t; t = t.next)
      if(t.name == importname) return;
    state.importedtypes = { name: importname, next: state.importedtypes };
  }
  // Combinator utils

  var cx = {state: null, column: null, marked: null, cc: null};
  function pass() {
    for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
  }
  function cont() {
    pass.apply(null, arguments);
    return true;
  }
  function inList(name, list) {
    for (var v = list; v; v = v.next)
      if (v.name == name) return true;
    return false;
  }
  function register(varname) {
    var state = cx.state;
    if (state.context) {
      cx.marked = "def";
      if (inList(varname, state.localVars)) return;
      state.localVars = {name: varname, next: state.localVars};
    } else if (state.globalVars) {
      if (inList(varname, state.globalVars)) return;
      state.globalVars = {name: varname, next: state.globalVars};
    }
  }

  // Combinators

  var defaultVars = {name: "this", next: null};
  function pushcontext() {
    if (!cx.state.context) cx.state.localVars = defaultVars;
    cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};
  }
  function popcontext() {
    cx.state.localVars = cx.state.context.vars;
    cx.state.context = cx.state.context.prev;
  }
  popcontext.lex = true;
  function pushlex(type, info) {
    var result = function() {
      var state = cx.state;
      state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info);
    };
    result.lex = true;
    return result;
  }
  function poplex() {
    var state = cx.state;
    if (state.lexical.prev) {
      if (state.lexical.type == ")")
        state.indented = state.lexical.indented;
      state.lexical = state.lexical.prev;
    }
  }
  poplex.lex = true;

  function expect(wanted) {
    function f(type) {
      if (type == wanted) return cont();
      else if (wanted == ";") return pass();
      else return cont(f);
    }
    return f;
  }

  function statement(type) {
    if (type == "@") return cont(metadef);
    if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex);
    if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex);
    if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
    if (type == "{") return cont(pushlex("}"), pushcontext, block, poplex, popcontext);
    if (type == ";") return cont();
    if (type == "attribute") return cont(maybeattribute);
    if (type == "function") return cont(functiondef);
    if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"),
                                   poplex, statement, poplex);
    if (type == "variable") return cont(pushlex("stat"), maybelabel);
    if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"),
                                      block, poplex, poplex);
    if (type == "case") return cont(expression, expect(":"));
    if (type == "default") return cont(expect(":"));
    if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
                                     statement, poplex, popcontext);
    if (type == "import") return cont(importdef, expect(";"));
    if (type == "typedef") return cont(typedef);
    return pass(pushlex("stat"), expression, expect(";"), poplex);
  }
  function expression(type) {
    if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator);
    if (type == "type" ) return cont(maybeoperator);
    if (type == "function") return cont(functiondef);
    if (type == "keyword c") return cont(maybeexpression);
    if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeoperator);
    if (type == "operator") return cont(expression);
    if (type == "[") return cont(pushlex("]"), commasep(maybeexpression, "]"), poplex, maybeoperator);
    if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator);
    return cont();
  }
  function maybeexpression(type) {
    if (type.match(/[;\}\)\],]/)) return pass();
    return pass(expression);
  }

  function maybeoperator(type, value) {
    if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator);
    if (type == "operator" || type == ":") return cont(expression);
    if (type == ";") return;
    if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator);
    if (type == ".") return cont(property, maybeoperator);
    if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator);
  }

  function maybeattribute(type) {
    if (type == "attribute") return cont(maybeattribute);
    if (type == "function") return cont(functiondef);
    if (type == "var") return cont(vardef1);
  }

  function metadef(type) {
    if(type == ":") return cont(metadef);
    if(type == "variable") return cont(metadef);
    if(type == "(") return cont(pushlex(")"), commasep(metaargs, ")"), poplex, statement);
  }
  function metaargs(type) {
    if(type == "variable") return cont();
  }

  function importdef (type, value) {
    if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); }
    else if(type == "variable" || type == "property" || type == "." || value == "*") return cont(importdef);
  }

  function typedef (type, value)
  {
    if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); }
    else if (type == "type" && /[A-Z]/.test(value.charAt(0))) { return cont(); }
  }

  function maybelabel(type) {
    if (type == ":") return cont(poplex, statement);
    return pass(maybeoperator, expect(";"), poplex);
  }
  function property(type) {
    if (type == "variable") {cx.marked = "property"; return cont();}
  }
  function objprop(type) {
    if (type == "variable") cx.marked = "property";
    if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression);
  }
  function commasep(what, end) {
    function proceed(type) {
      if (type == ",") return cont(what, proceed);
      if (type == end) return cont();
      return cont(expect(end));
    }
    return function(type) {
      if (type == end) return cont();
      else return pass(what, proceed);
    };
  }
  function block(type) {
    if (type == "}") return cont();
    return pass(statement, block);
  }
  function vardef1(type, value) {
    if (type == "variable"){register(value); return cont(typeuse, vardef2);}
    return cont();
  }
  function vardef2(type, value) {
    if (value == "=") return cont(expression, vardef2);
    if (type == ",") return cont(vardef1);
  }
  function forspec1(type, value) {
    if (type == "variable") {
      register(value);
      return cont(forin, expression)
    } else {
      return pass()
    }
  }
  function forin(_type, value) {
    if (value == "in") return cont();
  }
  function functiondef(type, value) {
    //function names starting with upper-case letters are recognised as types, so cludging them together here.
    if (type == "variable" || type == "type") {register(value); return cont(functiondef);}
    if (value == "new") return cont(functiondef);
    if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, typeuse, statement, popcontext);
  }
  function typeuse(type) {
    if(type == ":") return cont(typestring);
  }
  function typestring(type) {
    if(type == "type") return cont();
    if(type == "variable") return cont();
    if(type == "{") return cont(pushlex("}"), commasep(typeprop, "}"), poplex);
  }
  function typeprop(type) {
    if(type == "variable") return cont(typeuse);
  }
  function funarg(type, value) {
    if (type == "variable") {register(value); return cont(typeuse);}
  }

  // Interface
  return {
    startState: function(basecolumn) {
      var defaulttypes = ["Int", "Float", "String", "Void", "Std", "Bool", "Dynamic", "Array"];
      var state = {
        tokenize: haxeTokenBase,
        reAllowed: true,
        kwAllowed: true,
        cc: [],
        lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, "block", false),
        localVars: parserConfig.localVars,
        importedtypes: defaulttypes,
        context: parserConfig.localVars && {vars: parserConfig.localVars},
        indented: 0
      };
      if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")
        state.globalVars = parserConfig.globalVars;
      return state;
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (!state.lexical.hasOwnProperty("align"))
          state.lexical.align = false;
        state.indented = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      if (type == "comment") return style;
      state.reAllowed = !!(type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/));
      state.kwAllowed = type != '.';
      return parseHaxe(state, style, type, content, stream);
    },

    indent: function(state, textAfter) {
      if (state.tokenize != haxeTokenBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;
      if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev;
      var type = lexical.type, closing = firstChar == type;
      if (type == "vardef") return lexical.indented + 4;
      else if (type == "form" && firstChar == "{") return lexical.indented;
      else if (type == "stat" || type == "form") return lexical.indented + indentUnit;
      else if (lexical.info == "switch" && !closing)
        return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
      else if (lexical.align) return lexical.column + (closing ? 0 : 1);
      else return lexical.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

CodeMirror.defineMIME("text/x-haxe", "haxe");

CodeMirror.defineMode("hxml", function () {

  return {
    startState: function () {
      return {
        define: false,
        inString: false
      };
    },
    token: function (stream, state) {
      var ch = stream.peek();
      var sol = stream.sol();

      ///* comments */
      if (ch == "#") {
        stream.skipToEnd();
        return "comment";
      }
      if (sol && ch == "-") {
        var style = "variable-2";

        stream.eat(/-/);

        if (stream.peek() == "-") {
          stream.eat(/-/);
          style = "keyword a";
        }

        if (stream.peek() == "D") {
          stream.eat(/[D]/);
          style = "keyword c";
          state.define = true;
        }

        stream.eatWhile(/[A-Z]/i);
        return style;
      }

      var ch = stream.peek();

      if (state.inString == false && ch == "'") {
        state.inString = true;
        ch = stream.next();
      }

      if (state.inString == true) {
        if (stream.skipTo("'")) {

        } else {
          stream.skipToEnd();
        }

        if (stream.peek() == "'") {
          stream.next();
          state.inString = false;
        }

        return "string";
      }

      stream.next();
      return null;
    },
    lineComment: "#"
  };
});

CodeMirror.defineMIME("text/x-hxml", "hxml");

});
lib/codemirror/mode/mllike/index.html000064400000010524147361034410013662 0ustar00<!doctype html>

<title>CodeMirror: ML-like mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel=stylesheet href=../../lib/codemirror.css>
<script src=../../lib/codemirror.js></script>
<script src=../../addon/edit/matchbrackets.js></script>
<script src=mllike.js></script>
<style type=text/css>
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">ML-like</a>
  </ul>
</div>

<article>
<h2>OCaml mode</h2>


<textarea id="ocamlCode">
(* Summing a list of integers *)
let rec sum xs =
  match xs with
    | []       -&gt; 0
    | x :: xs' -&gt; x + sum xs'

(* Quicksort *)
let rec qsort = function
   | [] -&gt; []
   | pivot :: rest -&gt;
       let is_less x = x &lt; pivot in
       let left, right = List.partition is_less rest in
       qsort left @ [pivot] @ qsort right

(* Fibonacci Sequence *)
let rec fib_aux n a b =
  match n with
  | 0 -&gt; a
  | _ -&gt; fib_aux (n - 1) (a + b) a
let fib n = fib_aux n 0 1

(* Birthday paradox *)
let year_size = 365.

let rec birthday_paradox prob people =
    let prob' = (year_size -. float people) /. year_size *. prob  in
    if prob' &lt; 0.5 then
        Printf.printf "answer = %d\n" (people+1)
    else
        birthday_paradox prob' (people+1) ;;

birthday_paradox 1.0 1

(* Church numerals *)
let zero f x = x
let succ n f x = f (n f x)
let one = succ zero
let two = succ (succ zero)
let add n1 n2 f x = n1 f (n2 f x)
let to_string n = n (fun k -&gt; "S" ^ k) "0"
let _ = to_string (add (succ two) two)

(* Elementary functions *)
let square x = x * x;;
let rec fact x =
  if x &lt;= 1 then 1 else x * fact (x - 1);;

(* Automatic memory management *)
let l = 1 :: 2 :: 3 :: [];;
[1; 2; 3];;
5 :: l;;

(* Polymorphism: sorting lists *)
let rec sort = function
  | [] -&gt; []
  | x :: l -&gt; insert x (sort l)

and insert elem = function
  | [] -&gt; [elem]
  | x :: l -&gt;
      if elem &lt; x then elem :: x :: l else x :: insert elem l;;

(* Imperative features *)
let add_polynom p1 p2 =
  let n1 = Array.length p1
  and n2 = Array.length p2 in
  let result = Array.create (max n1 n2) 0 in
  for i = 0 to n1 - 1 do result.(i) &lt;- p1.(i) done;
  for i = 0 to n2 - 1 do result.(i) &lt;- result.(i) + p2.(i) done;
  result;;
add_polynom [| 1; 2 |] [| 1; 2; 3 |];;

(* We may redefine fact using a reference cell and a for loop *)
let fact n =
  let result = ref 1 in
  for i = 2 to n do
    result := i * !result
   done;
   !result;;
fact 5;;

(* Triangle (graphics) *)
let () =
  ignore( Glut.init Sys.argv );
  Glut.initDisplayMode ~double_buffer:true ();
  ignore (Glut.createWindow ~title:"OpenGL Demo");
  let angle t = 10. *. t *. t in
  let render () =
    GlClear.clear [ `color ];
    GlMat.load_identity ();
    GlMat.rotate ~angle: (angle (Sys.time ())) ~z:1. ();
    GlDraw.begins `triangles;
    List.iter GlDraw.vertex2 [-1., -1.; 0., 1.; 1., -1.];
    GlDraw.ends ();
    Glut.swapBuffers () in
  GlMat.mode `modelview;
  Glut.displayFunc ~cb:render;
  Glut.idleFunc ~cb:(Some Glut.postRedisplay);
  Glut.mainLoop ()

(* A Hundred Lines of Caml - http://caml.inria.fr/about/taste.en.html *)
(* OCaml page on Wikipedia - http://en.wikipedia.org/wiki/OCaml *)
</textarea>

<h2>F# mode</h2>
<textarea id="fsharpCode">
module CodeMirror.FSharp

let rec fib = function
    | 0 -> 0
    | 1 -> 1
    | n -> fib (n - 1) + fib (n - 2)

type Point =
    {
        x : int
        y : int
    }

type Color =
    | Red
    | Green
    | Blue

[0 .. 10]
|> List.map ((+) 2)
|> List.fold (fun x y -> x + y) 0
|> printf "%i"
</textarea>


<script>
  var ocamlEditor = CodeMirror.fromTextArea(document.getElementById('ocamlCode'), {
    mode: 'text/x-ocaml',
    lineNumbers: true,
    matchBrackets: true
  });

  var fsharpEditor = CodeMirror.fromTextArea(document.getElementById('fsharpCode'), {
    mode: 'text/x-fsharp',
    lineNumbers: true,
    matchBrackets: true
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-ocaml</code> (OCaml) and <code>text/x-fsharp</code> (F#).</p>
</article>
lib/codemirror/mode/mllike/mllike.js000064400000011632147361034410013501 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('mllike', function(_config, parserConfig) {
  var words = {
    'let': 'keyword',
    'rec': 'keyword',
    'in': 'keyword',
    'of': 'keyword',
    'and': 'keyword',
    'if': 'keyword',
    'then': 'keyword',
    'else': 'keyword',
    'for': 'keyword',
    'to': 'keyword',
    'while': 'keyword',
    'do': 'keyword',
    'done': 'keyword',
    'fun': 'keyword',
    'function': 'keyword',
    'val': 'keyword',
    'type': 'keyword',
    'mutable': 'keyword',
    'match': 'keyword',
    'with': 'keyword',
    'try': 'keyword',
    'open': 'builtin',
    'ignore': 'builtin',
    'begin': 'keyword',
    'end': 'keyword'
  };

  var extraWords = parserConfig.extraWords || {};
  for (var prop in extraWords) {
    if (extraWords.hasOwnProperty(prop)) {
      words[prop] = parserConfig.extraWords[prop];
    }
  }

  function tokenBase(stream, state) {
    var ch = stream.next();

    if (ch === '"') {
      state.tokenize = tokenString;
      return state.tokenize(stream, state);
    }
    if (ch === '(') {
      if (stream.eat('*')) {
        state.commentLevel++;
        state.tokenize = tokenComment;
        return state.tokenize(stream, state);
      }
    }
    if (ch === '~') {
      stream.eatWhile(/\w/);
      return 'variable-2';
    }
    if (ch === '`') {
      stream.eatWhile(/\w/);
      return 'quote';
    }
    if (ch === '/' && parserConfig.slashComments && stream.eat('/')) {
      stream.skipToEnd();
      return 'comment';
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\d]/);
      if (stream.eat('.')) {
        stream.eatWhile(/[\d]/);
      }
      return 'number';
    }
    if ( /[+\-*&%=<>!?|]/.test(ch)) {
      return 'operator';
    }
    stream.eatWhile(/\w/);
    var cur = stream.current();
    return words.hasOwnProperty(cur) ? words[cur] : 'variable';
  }

  function tokenString(stream, state) {
    var next, end = false, escaped = false;
    while ((next = stream.next()) != null) {
      if (next === '"' && !escaped) {
        end = true;
        break;
      }
      escaped = !escaped && next === '\\';
    }
    if (end && !escaped) {
      state.tokenize = tokenBase;
    }
    return 'string';
  };

  function tokenComment(stream, state) {
    var prev, next;
    while(state.commentLevel > 0 && (next = stream.next()) != null) {
      if (prev === '(' && next === '*') state.commentLevel++;
      if (prev === '*' && next === ')') state.commentLevel--;
      prev = next;
    }
    if (state.commentLevel <= 0) {
      state.tokenize = tokenBase;
    }
    return 'comment';
  }

  return {
    startState: function() {return {tokenize: tokenBase, commentLevel: 0};},
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    },

    blockCommentStart: "(*",
    blockCommentEnd: "*)",
    lineComment: parserConfig.slashComments ? "//" : null
  };
});

CodeMirror.defineMIME('text/x-ocaml', {
  name: 'mllike',
  extraWords: {
    'succ': 'keyword',
    'trace': 'builtin',
    'exit': 'builtin',
    'print_string': 'builtin',
    'print_endline': 'builtin',
    'true': 'atom',
    'false': 'atom',
    'raise': 'keyword'
  }
});

CodeMirror.defineMIME('text/x-fsharp', {
  name: 'mllike',
  extraWords: {
    'abstract': 'keyword',
    'as': 'keyword',
    'assert': 'keyword',
    'base': 'keyword',
    'class': 'keyword',
    'default': 'keyword',
    'delegate': 'keyword',
    'downcast': 'keyword',
    'downto': 'keyword',
    'elif': 'keyword',
    'exception': 'keyword',
    'extern': 'keyword',
    'finally': 'keyword',
    'global': 'keyword',
    'inherit': 'keyword',
    'inline': 'keyword',
    'interface': 'keyword',
    'internal': 'keyword',
    'lazy': 'keyword',
    'let!': 'keyword',
    'member' : 'keyword',
    'module': 'keyword',
    'namespace': 'keyword',
    'new': 'keyword',
    'null': 'keyword',
    'override': 'keyword',
    'private': 'keyword',
    'public': 'keyword',
    'return': 'keyword',
    'return!': 'keyword',
    'select': 'keyword',
    'static': 'keyword',
    'struct': 'keyword',
    'upcast': 'keyword',
    'use': 'keyword',
    'use!': 'keyword',
    'val': 'keyword',
    'when': 'keyword',
    'yield': 'keyword',
    'yield!': 'keyword',

    'List': 'builtin',
    'Seq': 'builtin',
    'Map': 'builtin',
    'Set': 'builtin',
    'int': 'builtin',
    'string': 'builtin',
    'raise': 'builtin',
    'failwith': 'builtin',
    'not': 'builtin',
    'true': 'builtin',
    'false': 'builtin'
  },
  slashComments: true
});

});
lib/codemirror/mode/gherkin/index.html000064400000003036147361034410014034 0ustar00<!doctype html>

<title>CodeMirror: Gherkin mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="gherkin.js"></script>
<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Gherkin</a>
  </ul>
</div>

<article>
<h2>Gherkin mode</h2>
<form><textarea id="code" name="code">
Feature: Using Google
  Background: 
    Something something
    Something else
  Scenario: Has a homepage
    When I navigate to the google home page
    Then the home page should contain the menu and the search form
  Scenario: Searching for a term 
    When I navigate to the google home page
    When I search for Tofu
    Then the search results page is displayed
    Then the search results page contains 10 individual search results
    Then the search results contain a link to the wikipedia tofu page
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-feature</code>.</p>

  </article>
lib/codemirror/mode/gherkin/gherkin.js000064400000031711147361034410014025 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*
Gherkin mode - http://www.cukes.info/
Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
*/

// Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js
//var Quotes = {
//  SINGLE: 1,
//  DOUBLE: 2
//};

//var regex = {
//  keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/
//};

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("gherkin", function () {
  return {
    startState: function () {
      return {
        lineNumber: 0,
        tableHeaderLine: false,
        allowFeature: true,
        allowBackground: false,
        allowScenario: false,
        allowSteps: false,
        allowPlaceholders: false,
        allowMultilineArgument: false,
        inMultilineString: false,
        inMultilineTable: false,
        inKeywordLine: false
      };
    },
    token: function (stream, state) {
      if (stream.sol()) {
        state.lineNumber++;
        state.inKeywordLine = false;
        if (state.inMultilineTable) {
            state.tableHeaderLine = false;
            if (!stream.match(/\s*\|/, false)) {
              state.allowMultilineArgument = false;
              state.inMultilineTable = false;
            }
        }
      }

      stream.eatSpace();

      if (state.allowMultilineArgument) {

        // STRING
        if (state.inMultilineString) {
          if (stream.match('"""')) {
            state.inMultilineString = false;
            state.allowMultilineArgument = false;
          } else {
            stream.match(/.*/);
          }
          return "string";
        }

        // TABLE
        if (state.inMultilineTable) {
          if (stream.match(/\|\s*/)) {
            return "bracket";
          } else {
            stream.match(/[^\|]*/);
            return state.tableHeaderLine ? "header" : "string";
          }
        }

        // DETECT START
        if (stream.match('"""')) {
          // String
          state.inMultilineString = true;
          return "string";
        } else if (stream.match("|")) {
          // Table
          state.inMultilineTable = true;
          state.tableHeaderLine = true;
          return "bracket";
        }

      }

      // LINE COMMENT
      if (stream.match(/#.*/)) {
        return "comment";

      // TAG
      } else if (!state.inKeywordLine && stream.match(/@\S+/)) {
        return "tag";

      // FEATURE
      } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) {
        state.allowScenario = true;
        state.allowBackground = true;
        state.allowPlaceholders = false;
        state.allowSteps = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // BACKGROUND
      } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) {
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // SCENARIO OUTLINE
      } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) {
        state.allowPlaceholders = true;
        state.allowSteps = true;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // EXAMPLES
      } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) {
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = true;
        return "keyword";

      // SCENARIO
      } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) {
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // STEPS
      } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) {
        state.inStep = true;
        state.allowPlaceholders = true;
        state.allowMultilineArgument = true;
        state.inKeywordLine = true;
        return "keyword";

      // INLINE STRING
      } else if (stream.match(/"[^"]*"?/)) {
        return "string";

      // PLACEHOLDER
      } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) {
        return "variable";

      // Fall through
      } else {
        stream.next();
        stream.eatWhile(/[^@"<#]/);
        return null;
      }
    }
  };
});

CodeMirror.defineMIME("text/x-feature", "gherkin");

});
lib/codemirror/mode/lua/lua.js000064400000013476147361034410012321 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's
// CodeMirror 1 mode.
// highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("lua", function(config, parserConfig) {
  var indentUnit = config.indentUnit;

  function prefixRE(words) {
    return new RegExp("^(?:" + words.join("|") + ")", "i");
  }
  function wordRE(words) {
    return new RegExp("^(?:" + words.join("|") + ")$", "i");
  }
  var specials = wordRE(parserConfig.specials || []);

  // long list of standard functions from lua manual
  var builtins = wordRE([
    "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load",
    "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require",
    "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall",

    "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield",

    "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable",
    "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable",
    "debug.setupvalue","debug.traceback",

    "close","flush","lines","read","seek","setvbuf","write",

    "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin",
    "io.stdout","io.tmpfile","io.type","io.write",

    "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg",
    "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max",
    "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh",
    "math.sqrt","math.tan","math.tanh",

    "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale",
    "os.time","os.tmpname",

    "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload",
    "package.seeall",

    "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub",
    "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper",

    "table.concat","table.insert","table.maxn","table.remove","table.sort"
  ]);
  var keywords = wordRE(["and","break","elseif","false","nil","not","or","return",
                         "true","function", "end", "if", "then", "else", "do",
                         "while", "repeat", "until", "for", "in", "local" ]);

  var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]);
  var dedentTokens = wordRE(["end", "until", "\\)", "}"]);
  var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]);

  function readBracket(stream) {
    var level = 0;
    while (stream.eat("=")) ++level;
    stream.eat("[");
    return level;
  }

  function normal(stream, state) {
    var ch = stream.next();
    if (ch == "-" && stream.eat("-")) {
      if (stream.eat("[") && stream.eat("["))
        return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state);
      stream.skipToEnd();
      return "comment";
    }
    if (ch == "\"" || ch == "'")
      return (state.cur = string(ch))(stream, state);
    if (ch == "[" && /[\[=]/.test(stream.peek()))
      return (state.cur = bracketed(readBracket(stream), "string"))(stream, state);
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w.%]/);
      return "number";
    }
    if (/[\w_]/.test(ch)) {
      stream.eatWhile(/[\w\\\-_.]/);
      return "variable";
    }
    return null;
  }

  function bracketed(level, style) {
    return function(stream, state) {
      var curlev = null, ch;
      while ((ch = stream.next()) != null) {
        if (curlev == null) {if (ch == "]") curlev = 0;}
        else if (ch == "=") ++curlev;
        else if (ch == "]" && curlev == level) { state.cur = normal; break; }
        else curlev = null;
      }
      return style;
    };
  }

  function string(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) break;
        escaped = !escaped && ch == "\\";
      }
      if (!escaped) state.cur = normal;
      return "string";
    };
  }

  return {
    startState: function(basecol) {
      return {basecol: basecol || 0, indentDepth: 0, cur: normal};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.cur(stream, state);
      var word = stream.current();
      if (style == "variable") {
        if (keywords.test(word)) style = "keyword";
        else if (builtins.test(word)) style = "builtin";
        else if (specials.test(word)) style = "variable-2";
      }
      if ((style != "comment") && (style != "string")){
        if (indentTokens.test(word)) ++state.indentDepth;
        else if (dedentTokens.test(word)) --state.indentDepth;
      }
      return style;
    },

    indent: function(state, textAfter) {
      var closing = dedentPartial.test(textAfter);
      return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0));
    },

    lineComment: "--",
    blockCommentStart: "--[[",
    blockCommentEnd: "]]"
  };
});

CodeMirror.defineMIME("text/x-lua", "lua");

});
lib/codemirror/mode/lua/index.html000064400000004031147361034410013162 0ustar00<!doctype html>

<title>CodeMirror: Lua mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/neat.css">
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="../../lib/codemirror.js"></script>
<script src="lua.js"></script>
<style>.CodeMirror {border: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Lua</a>
  </ul>
</div>

<article>
<h2>Lua mode</h2>
<form><textarea id="code" name="code">
--[[
example useless code to show lua syntax highlighting
this is multiline comment
]]

function blahblahblah(x)

  local table = {
    "asd" = 123,
    "x" = 0.34,  
  }
  if x ~= 3 then
    print( x )
  elseif x == "string"
    my_custom_function( 0x34 )
  else
    unknown_function( "some string" )
  end

  --single line comment
  
end

function blablabla3()

  for k,v in ipairs( table ) do
    --abcde..
    y=[=[
  x=[[
      x is a multi line string
   ]]
  but its definition is iside a highest level string!
  ]=]
    print(" \"\" ")

    s = math.sin( x )
  end

end
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        matchBrackets: true,
        theme: "neat"
      });
    </script>

    <p>Loosely based on Franciszek
    Wawrzak's <a href="http://codemirror.net/1/contrib/lua">CodeMirror
    1 mode</a>. One configuration parameter is
    supported, <code>specials</code>, to which you can provide an
    array of strings to have those identifiers highlighted with
    the <code>lua-special</code> style.</p>
    <p><strong>MIME types defined:</strong> <code>text/x-lua</code>.</p>

  </article>
lib/codemirror/mode/elm/elm.js000064400000012660147361034410012303 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("elm", function() {

    function switchState(source, setState, f) {
      setState(f);
      return f(source, setState);
    }

    // These should all be Unicode extended, as per the Haskell 2010 report
    var smallRE = /[a-z_]/;
    var largeRE = /[A-Z]/;
    var digitRE = /[0-9]/;
    var hexitRE = /[0-9A-Fa-f]/;
    var octitRE = /[0-7]/;
    var idRE = /[a-z_A-Z0-9\']/;
    var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]/;
    var specialRE = /[(),;[\]`{}]/;
    var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer

    function normal() {
      return function (source, setState) {
        if (source.eatWhile(whiteCharRE)) {
          return null;
        }

        var ch = source.next();
        if (specialRE.test(ch)) {
          if (ch == '{' && source.eat('-')) {
            var t = "comment";
            if (source.eat('#')) t = "meta";
            return switchState(source, setState, ncomment(t, 1));
          }
          return null;
        }

        if (ch == '\'') {
          if (source.eat('\\'))
            source.next();  // should handle other escapes here
          else
            source.next();

          if (source.eat('\''))
            return "string";
          return "error";
        }

        if (ch == '"') {
          return switchState(source, setState, stringLiteral);
        }

        if (largeRE.test(ch)) {
          source.eatWhile(idRE);
          if (source.eat('.'))
            return "qualifier";
          return "variable-2";
        }

        if (smallRE.test(ch)) {
          var isDef = source.pos === 1;
          source.eatWhile(idRE);
          return isDef ? "variable-3" : "variable";
        }

        if (digitRE.test(ch)) {
          if (ch == '0') {
            if (source.eat(/[xX]/)) {
              source.eatWhile(hexitRE); // should require at least 1
              return "integer";
            }
            if (source.eat(/[oO]/)) {
              source.eatWhile(octitRE); // should require at least 1
              return "number";
            }
          }
          source.eatWhile(digitRE);
          var t = "number";
          if (source.eat('.')) {
            t = "number";
            source.eatWhile(digitRE); // should require at least 1
          }
          if (source.eat(/[eE]/)) {
            t = "number";
            source.eat(/[-+]/);
            source.eatWhile(digitRE); // should require at least 1
          }
          return t;
        }

        if (symbolRE.test(ch)) {
          if (ch == '-' && source.eat(/-/)) {
            source.eatWhile(/-/);
            if (!source.eat(symbolRE)) {
              source.skipToEnd();
              return "comment";
            }
          }
          source.eatWhile(symbolRE);
          return "builtin";
        }

        return "error";
      }
    }

    function ncomment(type, nest) {
      if (nest == 0) {
        return normal();
      }
      return function(source, setState) {
        var currNest = nest;
        while (!source.eol()) {
          var ch = source.next();
          if (ch == '{' && source.eat('-')) {
            ++currNest;
          } else if (ch == '-' && source.eat('}')) {
            --currNest;
            if (currNest == 0) {
              setState(normal());
              return type;
            }
          }
        }
        setState(ncomment(type, currNest));
        return type;
      }
    }

    function stringLiteral(source, setState) {
      while (!source.eol()) {
        var ch = source.next();
        if (ch == '"') {
          setState(normal());
          return "string";
        }
        if (ch == '\\') {
          if (source.eol() || source.eat(whiteCharRE)) {
            setState(stringGap);
            return "string";
          }
          if (!source.eat('&')) source.next(); // should handle other escapes here
        }
      }
      setState(normal());
      return "error";
    }

    function stringGap(source, setState) {
      if (source.eat('\\')) {
        return switchState(source, setState, stringLiteral);
      }
      source.next();
      setState(normal());
      return "error";
    }


    var wellKnownWords = (function() {
      var wkw = {};

      var keywords = [
        "case", "of", "as",
        "if", "then", "else",
        "let", "in",
        "infix", "infixl", "infixr",
        "type", "alias",
        "input", "output", "foreign", "loopback",
        "module", "where", "import", "exposing",
        "_", "..", "|", ":", "=", "\\", "\"", "->", "<-"
      ];

      for (var i = keywords.length; i--;)
        wkw[keywords[i]] = "keyword";

      return wkw;
    })();



    return {
      startState: function ()  { return { f: normal() }; },
      copyState:  function (s) { return { f: s.f }; },

      token: function(stream, state) {
        var t = state.f(stream, function(s) { state.f = s; });
        var w = stream.current();
        return (wellKnownWords.hasOwnProperty(w)) ? wellKnownWords[w] : t;
      }
    };

  });

  CodeMirror.defineMIME("text/x-elm", "elm");
});
lib/codemirror/mode/elm/index.html000064400000003150147361034410013157 0ustar00<!doctype html>

<title>CodeMirror: Elm mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="elm.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Elm</a>
  </ul>
</div>

<article>
<h2>Elm mode</h2>

<div><textarea id="code" name="code">
import Color exposing (..)
import Graphics.Collage exposing (..)
import Graphics.Element exposing (..)
import Time exposing (..)

main =
  Signal.map clock (every second)

clock t =
  collage 400 400
    [ filled    lightGrey   (ngon 12 110)
    , outlined (solid grey) (ngon 12 110)
    , hand orange   100  t
    , hand charcoal 100 (t/60)
    , hand charcoal 60  (t/720)
    ]

hand clr len time =
  let angle = degrees (90 - 6 * inSeconds time)
  in
      segment (0,0) (fromPolar (len,angle))
        |> traced (solid clr)
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "text/x-elm"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-elm</code>.</p>
  </article>
lib/codemirror/mode/oz/oz.js000064400000015002147361034410012022 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("oz", function (conf) {

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") + "))\\b");
  }

  var singleOperators = /[\^@!\|<>#~\.\*\-\+\\/,=]/;
  var doubleOperators = /(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/;
  var tripleOperators = /(:::)|(\.\.\.)|(=<:)|(>=:)/;

  var middle = ["in", "then", "else", "of", "elseof", "elsecase", "elseif", "catch",
    "finally", "with", "require", "prepare", "import", "export", "define", "do"];
  var end = ["end"];

  var atoms = wordRegexp(["true", "false", "nil", "unit"]);
  var commonKeywords = wordRegexp(["andthen", "at", "attr", "declare", "feat", "from", "lex",
    "mod", "mode", "orelse", "parser", "prod", "prop", "scanner", "self", "syn", "token"]);
  var openingKeywords = wordRegexp(["local", "proc", "fun", "case", "class", "if", "cond", "or", "dis",
    "choice", "not", "thread", "try", "raise", "lock", "for", "suchthat", "meth", "functor"]);
  var middleKeywords = wordRegexp(middle);
  var endKeywords = wordRegexp(end);

  // Tokenizers
  function tokenBase(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }

    // Brackets
    if(stream.match(/[{}]/)) {
      return "bracket";
    }

    // Special [] keyword
    if (stream.match(/(\[])/)) {
        return "keyword"
    }

    // Operators
    if (stream.match(tripleOperators) || stream.match(doubleOperators)) {
      return "operator";
    }

    // Atoms
    if(stream.match(atoms)) {
      return 'atom';
    }

    // Opening keywords
    var matched = stream.match(openingKeywords);
    if (matched) {
      if (!state.doInCurrentLine)
        state.currentIndent++;
      else
        state.doInCurrentLine = false;

      // Special matching for signatures
      if(matched[0] == "proc" || matched[0] == "fun")
        state.tokenize = tokenFunProc;
      else if(matched[0] == "class")
        state.tokenize = tokenClass;
      else if(matched[0] == "meth")
        state.tokenize = tokenMeth;

      return 'keyword';
    }

    // Middle and other keywords
    if (stream.match(middleKeywords) || stream.match(commonKeywords)) {
      return "keyword"
    }

    // End keywords
    if (stream.match(endKeywords)) {
      state.currentIndent--;
      return 'keyword';
    }

    // Eat the next char for next comparisons
    var ch = stream.next();

    // Strings
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }

    // Numbers
    if (/[~\d]/.test(ch)) {
      if (ch == "~") {
        if(! /^[0-9]/.test(stream.peek()))
          return null;
        else if (( stream.next() == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))
          return "number";
      }

      if ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))
        return "number";

      return null;
    }

    // Comments
    if (ch == "%") {
      stream.skipToEnd();
      return 'comment';
    }
    else if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
    }

    // Single operators
    if(singleOperators.test(ch)) {
      return "operator";
    }

    // If nothing match, we skip the entire alphanumerical block
    stream.eatWhile(/\w/);

    return "variable";
  }

  function tokenClass(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }
    stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/);
    state.tokenize = tokenBase;
    return "variable-3"
  }

  function tokenMeth(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }
    stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/);
    state.tokenize = tokenBase;
    return "def"
  }

  function tokenFunProc(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }

    if(!state.hasPassedFirstStage && stream.eat("{")) {
      state.hasPassedFirstStage = true;
      return "bracket";
    }
    else if(state.hasPassedFirstStage) {
      stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/);
      state.hasPassedFirstStage = false;
      state.tokenize = tokenBase;
      return "def"
    }
    else {
      state.tokenize = tokenBase;
      return null;
    }
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenString(quote) {
    return function (stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true;
          break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped)
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function buildElectricInputRegEx() {
    // Reindentation should occur on [] or on a match of any of
    // the block closing keywords, at the end of a line.
    var allClosings = middle.concat(end);
    return new RegExp("[\\[\\]]|(" + allClosings.join("|") + ")$");
  }

  return {

    startState: function () {
      return {
        tokenize: tokenBase,
        currentIndent: 0,
        doInCurrentLine: false,
        hasPassedFirstStage: false
      };
    },

    token: function (stream, state) {
      if (stream.sol())
        state.doInCurrentLine = 0;

      return state.tokenize(stream, state);
    },

    indent: function (state, textAfter) {
      var trueText = textAfter.replace(/^\s+|\s+$/g, '');

      if (trueText.match(endKeywords) || trueText.match(middleKeywords) || trueText.match(/(\[])/))
        return conf.indentUnit * (state.currentIndent - 1);

      if (state.currentIndent < 0)
        return 0;

      return state.currentIndent * conf.indentUnit;
    },
    fold: "indent",
    electricInput: buildElectricInputRegEx(),
    lineComment: "%",
    blockCommentStart: "/*",
    blockCommentEnd: "*/"
  };
});

CodeMirror.defineMIME("text/x-oz", "oz");

});
lib/codemirror/mode/oz/index.html000064400000002555147361034410013042 0ustar00<!doctype html>

<title>CodeMirror: Oz mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="oz.js"></script>
<script type="text/javascript" src="../../addon/runmode/runmode.js"></script>
<style>
  .CodeMirror {border: 1px solid #aaa;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Oz</a>
  </ul>
</div>

<article>
<h2>Oz mode</h2>
<textarea id="code" name="code">
declare
fun {Ints N Max}
  if N == Max then nil
  else
    {Delay 1000}
    N|{Ints N+1 Max}
  end
end

fun {Sum S Stream}
  case Stream of nil then S
  [] H|T then S|{Sum H+S T} end
end

local X Y in
  thread X = {Ints 0 1000} end
  thread Y = {Sum 0 X} end
  {Browse Y}
end
</textarea>
<p>MIME type defined: <code>text/x-oz</code>.</p>

<script type="text/javascript">
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    mode: "text/x-oz",
    readOnly: false
});
</script>
</article>
lib/codemirror/mode/r/index.html000064400000005016147361034410012646 0ustar00<!doctype html>

<title>CodeMirror: R mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="r.js"></script>
<style>
      .CodeMirror { border-top: 1px solid silver; border-bottom: 1px solid silver; }
      .cm-s-default span.cm-semi { color: blue; font-weight: bold; }
      .cm-s-default span.cm-dollar { color: orange; font-weight: bold; }
      .cm-s-default span.cm-arrow { color: brown; }
      .cm-s-default span.cm-arg-is { color: brown; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">R</a>
  </ul>
</div>

<article>
<h2>R mode</h2>
<form><textarea id="code" name="code">
# Code from http://www.mayin.org/ajayshah/KB/R/

# FIRST LEARN ABOUT LISTS --
X = list(height=5.4, weight=54)
print("Use default printing --")
print(X)
print("Accessing individual elements --")
cat("Your height is ", X$height, " and your weight is ", X$weight, "\n")

# FUNCTIONS --
square <- function(x) {
  return(x*x)
}
cat("The square of 3 is ", square(3), "\n")

                 # default value of the arg is set to 5.
cube <- function(x=5) {
  return(x*x*x);
}
cat("Calling cube with 2 : ", cube(2), "\n")    # will give 2^3
cat("Calling cube        : ", cube(), "\n")     # will default to 5^3.

# LEARN ABOUT FUNCTIONS THAT RETURN MULTIPLE OBJECTS --
powers <- function(x) {
  parcel = list(x2=x*x, x3=x*x*x, x4=x*x*x*x);
  return(parcel);
}

X = powers(3);
print("Showing powers of 3 --"); print(X);

# WRITING THIS COMPACTLY (4 lines instead of 7)

powerful <- function(x) {
  return(list(x2=x*x, x3=x*x*x, x4=x*x*x*x));
}
print("Showing powers of 3 --"); print(powerful(3));

# In R, the last expression in a function is, by default, what is
# returned. So you could equally just say:
powerful <- function(x) {list(x2=x*x, x3=x*x*x, x4=x*x*x*x)}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-rsrc</code>.</p>

    <p>Development of the CodeMirror R mode was kindly sponsored
    by <a href="https://twitter.com/ubalo">Ubalo</a>.</p>

  </article>
lib/codemirror/mode/r/r.js000064400000013055147361034410011452 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("wordChars", "r", /[\w.]/);

CodeMirror.defineMode("r", function(config) {
  function wordObj(str) {
    var words = str.split(" "), res = {};
    for (var i = 0; i < words.length; ++i) res[words[i]] = true;
    return res;
  }
  var atoms = wordObj("NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_");
  var builtins = wordObj("list quote bquote eval return call parse deparse");
  var keywords = wordObj("if else repeat while function for in next break");
  var blockkeywords = wordObj("if else repeat while function for");
  var opChars = /[+\-*\/^<>=!&|~$:]/;
  var curPunc;

  function tokenBase(stream, state) {
    curPunc = null;
    var ch = stream.next();
    if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    } else if (ch == "0" && stream.eat("x")) {
      stream.eatWhile(/[\da-f]/i);
      return "number";
    } else if (ch == "." && stream.eat(/\d/)) {
      stream.match(/\d*(?:e[+\-]?\d+)?/);
      return "number";
    } else if (/\d/.test(ch)) {
      stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/);
      return "number";
    } else if (ch == "'" || ch == '"') {
      state.tokenize = tokenString(ch);
      return "string";
    } else if (ch == "." && stream.match(/.[.\d]+/)) {
      return "keyword";
    } else if (/[\w\.]/.test(ch) && ch != "_") {
      stream.eatWhile(/[\w\.]/);
      var word = stream.current();
      if (atoms.propertyIsEnumerable(word)) return "atom";
      if (keywords.propertyIsEnumerable(word)) {
        // Block keywords start new blocks, except 'else if', which only starts
        // one new block for the 'if', no block for the 'else'.
        if (blockkeywords.propertyIsEnumerable(word) &&
            !stream.match(/\s*if(\s+|$)/, false))
          curPunc = "block";
        return "keyword";
      }
      if (builtins.propertyIsEnumerable(word)) return "builtin";
      return "variable";
    } else if (ch == "%") {
      if (stream.skipTo("%")) stream.next();
      return "variable-2";
    } else if (ch == "<" && stream.eat("-")) {
      return "arrow";
    } else if (ch == "=" && state.ctx.argList) {
      return "arg-is";
    } else if (opChars.test(ch)) {
      if (ch == "$") return "dollar";
      stream.eatWhile(opChars);
      return "operator";
    } else if (/[\(\){}\[\];]/.test(ch)) {
      curPunc = ch;
      if (ch == ";") return "semi";
      return null;
    } else {
      return null;
    }
  }

  function tokenString(quote) {
    return function(stream, state) {
      if (stream.eat("\\")) {
        var ch = stream.next();
        if (ch == "x") stream.match(/^[a-f0-9]{2}/i);
        else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next();
        else if (ch == "u") stream.match(/^[a-f0-9]{4}/i);
        else if (ch == "U") stream.match(/^[a-f0-9]{8}/i);
        else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/);
        return "string-2";
      } else {
        var next;
        while ((next = stream.next()) != null) {
          if (next == quote) { state.tokenize = tokenBase; break; }
          if (next == "\\") { stream.backUp(1); break; }
        }
        return "string";
      }
    };
  }

  function push(state, type, stream) {
    state.ctx = {type: type,
                 indent: state.indent,
                 align: null,
                 column: stream.column(),
                 prev: state.ctx};
  }
  function pop(state) {
    state.indent = state.ctx.indent;
    state.ctx = state.ctx.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase,
              ctx: {type: "top",
                    indent: -config.indentUnit,
                    align: false},
              indent: 0,
              afterIdent: false};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (state.ctx.align == null) state.ctx.align = false;
        state.indent = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      if (style != "comment" && state.ctx.align == null) state.ctx.align = true;

      var ctype = state.ctx.type;
      if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && ctype == "block") pop(state);
      if (curPunc == "{") push(state, "}", stream);
      else if (curPunc == "(") {
        push(state, ")", stream);
        if (state.afterIdent) state.ctx.argList = true;
      }
      else if (curPunc == "[") push(state, "]", stream);
      else if (curPunc == "block") push(state, "block", stream);
      else if (curPunc == ctype) pop(state);
      state.afterIdent = style == "variable" || style == "keyword";
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx,
          closing = firstChar == ctx.type;
      if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indent + (closing ? 0 : config.indentUnit);
    },

    lineComment: "#"
  };
});

CodeMirror.defineMIME("text/x-rsrc", "r");

});
lib/codemirror/mode/z80/z80.js000064400000006771147361034410012021 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
  mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
  define(["../../lib/codemirror"], mod);
  else // Plain browser env
  mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('z80', function(_config, parserConfig) {
  var ez80 = parserConfig.ez80;
  var keywords1, keywords2;
  if (ez80) {
    keywords1 = /^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i;
    keywords2 = /^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i;
  } else {
    keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i;
    keywords2 = /^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i;
  }

  var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i;
  var variables2 = /^(n?[zc]|p[oe]?|m)\b/i;
  var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i;
  var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;

  return {
    startState: function() {
      return {
        context: 0
      };
    },
    token: function(stream, state) {
      if (!stream.column())
        state.context = 0;

      if (stream.eatSpace())
        return null;

      var w;

      if (stream.eatWhile(/\w/)) {
        if (ez80 && stream.eat('.')) {
          stream.eatWhile(/\w/);
        }
        w = stream.current();

        if (stream.indentation()) {
          if ((state.context == 1 || state.context == 4) && variables1.test(w)) {
            state.context = 4;
            return 'var2';
          }

          if (state.context == 2 && variables2.test(w)) {
            state.context = 4;
            return 'var3';
          }

          if (keywords1.test(w)) {
            state.context = 1;
            return 'keyword';
          } else if (keywords2.test(w)) {
            state.context = 2;
            return 'keyword';
          } else if (state.context == 4 && numbers.test(w)) {
            return 'number';
          }

          if (errors.test(w))
            return 'error';
        } else if (stream.match(numbers)) {
          return 'number';
        } else {
          return null;
        }
      } else if (stream.eat(';')) {
        stream.skipToEnd();
        return 'comment';
      } else if (stream.eat('"')) {
        while (w = stream.next()) {
          if (w == '"')
            break;

          if (w == '\\')
            stream.next();
        }
        return 'string';
      } else if (stream.eat('\'')) {
        if (stream.match(/\\?.'/))
          return 'number';
      } else if (stream.eat('.') || stream.sol() && stream.eat('#')) {
        state.context = 5;

        if (stream.eatWhile(/\w/))
          return 'def';
      } else if (stream.eat('$')) {
        if (stream.eatWhile(/[\da-f]/i))
          return 'number';
      } else if (stream.eat('%')) {
        if (stream.eatWhile(/[01]/))
          return 'number';
      } else {
        stream.next();
      }
      return null;
    }
  };
});

CodeMirror.defineMIME("text/x-z80", "z80");
CodeMirror.defineMIME("text/x-ez80", { name: "z80", ez80: true });

});
lib/codemirror/mode/z80/index.html000064400000002576147361034410013036 0ustar00<!doctype html>

<title>CodeMirror: Z80 assembly mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="z80.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Z80 assembly</a>
  </ul>
</div>

<article>
<h2>Z80 assembly mode</h2>


<div><textarea id="code" name="code">
#include    "ti83plus.inc"
#define     progStart   $9D95
    .org progStart-2
    .db $BB,$6D

    bcall(_ClrLCDFull)
    ld hl,0
    ld (CurCol),hl
    ld hl,Message
    bcall(_PutS) ; Displays the string
    bcall(_NewLine)
    ret
Message:
    .db "Hello world!",0
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-z80</code>, <code>text/x-ez80</code>.</p>
  </article>
lib/codemirror/mode/swift/swift.js000064400000014430147361034410013236 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Swift mode created by Michael Kaminsky https://github.com/mkaminsky11

(function(mod) {
  if (typeof exports == "object" && typeof module == "object")
    mod(require("../../lib/codemirror"))
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod)
  else
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"

  function wordSet(words) {
    var set = {}
    for (var i = 0; i < words.length; i++) set[words[i]] = true
    return set
  }

  var keywords = wordSet(["var","let","class","deinit","enum","extension","func","import","init","protocol",
                          "static","struct","subscript","typealias","as","dynamicType","is","new","super",
                          "self","Self","Type","__COLUMN__","__FILE__","__FUNCTION__","__LINE__","break","case",
                          "continue","default","do","else","fallthrough","if","in","for","return","switch",
                          "where","while","associativity","didSet","get","infix","inout","left","mutating",
                          "none","nonmutating","operator","override","postfix","precedence","prefix","right",
                          "set","unowned","weak","willSet"])
  var definingKeywords = wordSet(["var","let","class","enum","extension","func","import","protocol","struct",
                                  "typealias","dynamicType","for"])
  var atoms = wordSet(["Infinity","NaN","undefined","null","true","false","on","off","yes","no","nil","null",
                       "this","super"])
  var types = wordSet(["String","bool","int","string","double","Double","Int","Float","float","public",
                       "private","extension"])
  var operators = "+-/*%=|&<>#"
  var punc = ";,.(){}[]"
  var number = /^-?(?:(?:[\d_]+\.[_\d]*|\.[_\d]+|0o[0-7_\.]+|0b[01_\.]+)(?:e-?[\d_]+)?|0x[\d_a-f\.]+(?:p-?[\d_]+)?)/i
  var identifier = /^[_A-Za-z$][_A-Za-z$0-9]*/
  var property = /^[@\.][_A-Za-z$][_A-Za-z$0-9]*/
  var regexp = /^\/(?!\s)(?:\/\/)?(?:\\.|[^\/])+\//

  function tokenBase(stream, state, prev) {
    if (stream.sol()) state.indented = stream.indentation()
    if (stream.eatSpace()) return null

    var ch = stream.peek()
    if (ch == "/") {
      if (stream.match("//")) {
        stream.skipToEnd()
        return "comment"
      }
      if (stream.match("/*")) {
        state.tokenize.push(tokenComment)
        return tokenComment(stream, state)
      }
      if (stream.match(regexp)) return "string-2"
    }
    if (operators.indexOf(ch) > -1) {
      stream.next()
      return "operator"
    }
    if (punc.indexOf(ch) > -1) {
      stream.next()
      stream.match("..")
      return "punctuation"
    }
    if (ch == '"' || ch == "'") {
      stream.next()
      var tokenize = tokenString(ch)
      state.tokenize.push(tokenize)
      return tokenize(stream, state)
    }

    if (stream.match(number)) return "number"
    if (stream.match(property)) return "property"

    if (stream.match(identifier)) {
      var ident = stream.current()
      if (keywords.hasOwnProperty(ident)) {
        if (definingKeywords.hasOwnProperty(ident))
          state.prev = "define"
        return "keyword"
      }
      if (types.hasOwnProperty(ident)) return "variable-2"
      if (atoms.hasOwnProperty(ident)) return "atom"
      if (prev == "define") return "def"
      return "variable"
    }

    stream.next()
    return null
  }

  function tokenUntilClosingParen() {
    var depth = 0
    return function(stream, state, prev) {
      var inner = tokenBase(stream, state, prev)
      if (inner == "punctuation") {
        if (stream.current() == "(") ++depth
        else if (stream.current() == ")") {
          if (depth == 0) {
            stream.backUp(1)
            state.tokenize.pop()
            return state.tokenize[state.tokenize.length - 1](stream, state)
          }
          else --depth
        }
      }
      return inner
    }
  }

  function tokenString(quote) {
    return function(stream, state) {
      var ch, escaped = false
      while (ch = stream.next()) {
        if (escaped) {
          if (ch == "(") {
            state.tokenize.push(tokenUntilClosingParen())
            return "string"
          }
          escaped = false
        } else if (ch == quote) {
          break
        } else {
          escaped = ch == "\\"
        }
      }
      state.tokenize.pop()
      return "string"
    }
  }

  function tokenComment(stream, state) {
    stream.match(/^(?:[^*]|\*(?!\/))*/)
    if (stream.match("*/")) state.tokenize.pop()
    return "comment"
  }

  function Context(prev, align, indented) {
    this.prev = prev
    this.align = align
    this.indented = indented
  }

  function pushContext(state, stream) {
    var align = stream.match(/^\s*($|\/[\/\*])/, false) ? null : stream.column() + 1
    state.context = new Context(state.context, align, state.indented)
  }

  function popContext(state) {
    if (state.context) {
      state.indented = state.context.indented
      state.context = state.context.prev
    }
  }

  CodeMirror.defineMode("swift", function(config) {
    return {
      startState: function() {
        return {
          prev: null,
          context: null,
          indented: 0,
          tokenize: []
        }
      },

      token: function(stream, state) {
        var prev = state.prev
        state.prev = null
        var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase
        var style = tokenize(stream, state, prev)
        if (!style || style == "comment") state.prev = prev
        else if (!state.prev) state.prev = style

        if (style == "punctuation") {
          var bracket = /[\(\[\{]|([\]\)\}])/.exec(stream.current())
          if (bracket) (bracket[1] ? popContext : pushContext)(state, stream)
        }

        return style
      },

      indent: function(state, textAfter) {
        var cx = state.context
        if (!cx) return 0
        var closing = /^[\]\}\)]/.test(textAfter)
        if (cx.align != null) return cx.align - (closing ? 1 : 0)
        return cx.indented + (closing ? 0 : config.indentUnit)
      },

      electricInput: /^\s*[\)\}\]]$/,

      lineComment: "//",
      blockCommentStart: "/*",
      blockCommentEnd: "*/"
    }
  })

  CodeMirror.defineMIME("text/x-swift","swift")
});
lib/codemirror/mode/swift/index.html000064400000004045147361034410013542 0ustar00<!doctype html>

<title>CodeMirror: Swift mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="./swift.js"></script>
<style>
	.CodeMirror { border: 2px inset #dee; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Swift</a>
  </ul>
</div>

<article>
<h2>Swift mode</h2>
<form><textarea id="code" name="code">
//
//  TipCalculatorModel.swift
//  TipCalculator
//
//  Created by Main Account on 12/18/14.
//  Copyright (c) 2014 Razeware LLC. All rights reserved.
//

import Foundation

class TipCalculatorModel {

  var total: Double
  var taxPct: Double
  var subtotal: Double {
    get {
      return total / (taxPct + 1)
    }
  }

  init(total: Double, taxPct: Double) {
    self.total = total
    self.taxPct = taxPct
  }

  func calcTipWithTipPct(tipPct: Double) -> Double {
    return subtotal * tipPct
  }

  func returnPossibleTips() -> [Int: Double] {

    let possibleTipsInferred = [0.15, 0.18, 0.20]
    let possibleTipsExplicit:[Double] = [0.15, 0.18, 0.20]

    var retval = [Int: Double]()
    for possibleTip in possibleTipsInferred {
      let intPct = Int(possibleTip*100)
      retval[intPct] = calcTipWithTipPct(possibleTip)
    }
    return retval

  }

}
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-swift"
      });
    </script>

    <p>A simple mode for Swift</p>

    <p><strong>MIME types defined:</strong> <code>text/x-swift</code> (Swift code)</p>
  </article>
lib/codemirror/mode/soy/index.html000064400000003623147361034410013221 0ustar00<!doctype html>

<title>CodeMirror: Soy (Closure Template) mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="../xml/xml.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../css/css.js"></script>
<script src="soy.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Soy (Closure Template)</a>
  </ul>
</div>

<article>
<h2>Soy (Closure Template) mode</h2>
<form><textarea id="code" name="code">
{namespace example}

/**
 * Says hello to the world.
 */
{template .helloWorld}
  {@param name: string}
  {@param? score: number}
  Hello <b>{$name}</b>!
  <div>
    {if $score}
      <em>{$score} points</em>
    {else}
      no score
    {/if}
  </div>
{/template}

{template .alertHelloWorld kind="js"}
  alert('Hello World');
{/template}
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-soy",
        indentUnit: 2,
        indentWithTabs: false
      });
    </script>

    <p>A mode for <a href="https://developers.google.com/closure/templates/">Closure Templates</a> (Soy).</p>
    <p><strong>MIME type defined:</strong> <code>text/x-soy</code>.</p>
  </article>
lib/codemirror/mode/soy/soy.js000064400000016715147361034410012402 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var indentingTags = ["template", "literal", "msg", "fallbackmsg", "let", "if", "elseif",
                       "else", "switch", "case", "default", "foreach", "ifempty", "for",
                       "call", "param", "deltemplate", "delcall", "log"];

  CodeMirror.defineMode("soy", function(config) {
    var textMode = CodeMirror.getMode(config, "text/plain");
    var modes = {
      html: CodeMirror.getMode(config, {name: "text/html", multilineTagIndentFactor: 2, multilineTagIndentPastTag: false}),
      attributes: textMode,
      text: textMode,
      uri: textMode,
      css: CodeMirror.getMode(config, "text/css"),
      js: CodeMirror.getMode(config, {name: "text/javascript", statementIndent: 2 * config.indentUnit})
    };

    function last(array) {
      return array[array.length - 1];
    }

    function tokenUntil(stream, state, untilRegExp) {
      var oldString = stream.string;
      var match = untilRegExp.exec(oldString.substr(stream.pos));
      if (match) {
        // We don't use backUp because it backs up just the position, not the state.
        // This uses an undocumented API.
        stream.string = oldString.substr(0, stream.pos + match.index);
      }
      var result = stream.hideFirstChars(state.indent, function() {
        return state.localMode.token(stream, state.localState);
      });
      stream.string = oldString;
      return result;
    }

    return {
      startState: function() {
        return {
          kind: [],
          kindTag: [],
          soyState: [],
          indent: 0,
          localMode: modes.html,
          localState: CodeMirror.startState(modes.html)
        };
      },

      copyState: function(state) {
        return {
          tag: state.tag, // Last seen Soy tag.
          kind: state.kind.concat([]), // Values of kind="" attributes.
          kindTag: state.kindTag.concat([]), // Opened tags with kind="" attributes.
          soyState: state.soyState.concat([]),
          indent: state.indent, // Indentation of the following line.
          localMode: state.localMode,
          localState: CodeMirror.copyState(state.localMode, state.localState)
        };
      },

      token: function(stream, state) {
        var match;

        switch (last(state.soyState)) {
          case "comment":
            if (stream.match(/^.*?\*\//)) {
              state.soyState.pop();
            } else {
              stream.skipToEnd();
            }
            return "comment";

          case "variable":
            if (stream.match(/^}/)) {
              state.indent -= 2 * config.indentUnit;
              state.soyState.pop();
              return "variable-2";
            }
            stream.next();
            return null;

          case "tag":
            if (stream.match(/^\/?}/)) {
              if (state.tag == "/template" || state.tag == "/deltemplate") state.indent = 0;
              else state.indent -= (stream.current() == "/}" || indentingTags.indexOf(state.tag) == -1 ? 2 : 1) * config.indentUnit;
              state.soyState.pop();
              return "keyword";
            } else if (stream.match(/^([\w?]+)(?==)/)) {
              if (stream.current() == "kind" && (match = stream.match(/^="([^"]+)/, false))) {
                var kind = match[1];
                state.kind.push(kind);
                state.kindTag.push(state.tag);
                state.localMode = modes[kind] || modes.html;
                state.localState = CodeMirror.startState(state.localMode);
              }
              return "attribute";
            } else if (stream.match(/^"/)) {
              state.soyState.push("string");
              return "string";
            }
            stream.next();
            return null;

          case "literal":
            if (stream.match(/^(?=\{\/literal})/)) {
              state.indent -= config.indentUnit;
              state.soyState.pop();
              return this.token(stream, state);
            }
            return tokenUntil(stream, state, /\{\/literal}/);

          case "string":
            var match = stream.match(/^.*?("|\\[\s\S])/);
            if (!match) {
              stream.skipToEnd();
            } else if (match[1] == "\"") {
              state.soyState.pop();
            }
            return "string";
        }

        if (stream.match(/^\/\*/)) {
          state.soyState.push("comment");
          return "comment";
        } else if (stream.match(stream.sol() ? /^\s*\/\/.*/ : /^\s+\/\/.*/)) {
          return "comment";
        } else if (stream.match(/^\{\$[\w?]*/)) {
          state.indent += 2 * config.indentUnit;
          state.soyState.push("variable");
          return "variable-2";
        } else if (stream.match(/^\{literal}/)) {
          state.indent += config.indentUnit;
          state.soyState.push("literal");
          return "keyword";
        } else if (match = stream.match(/^\{([\/@\\]?[\w?]*)/)) {
          if (match[1] != "/switch")
            state.indent += (/^(\/|(else|elseif|case|default)$)/.test(match[1]) && state.tag != "switch" ? 1 : 2) * config.indentUnit;
          state.tag = match[1];
          if (state.tag == "/" + last(state.kindTag)) {
            // We found the tag that opened the current kind="".
            state.kind.pop();
            state.kindTag.pop();
            state.localMode = modes[last(state.kind)] || modes.html;
            state.localState = CodeMirror.startState(state.localMode);
          }
          state.soyState.push("tag");
          return "keyword";
        }

        return tokenUntil(stream, state, /\{|\s+\/\/|\/\*/);
      },

      indent: function(state, textAfter) {
        var indent = state.indent, top = last(state.soyState);
        if (top == "comment") return CodeMirror.Pass;

        if (top == "literal") {
          if (/^\{\/literal}/.test(textAfter)) indent -= config.indentUnit;
        } else {
          if (/^\s*\{\/(template|deltemplate)\b/.test(textAfter)) return 0;
          if (/^\{(\/|(fallbackmsg|elseif|else|ifempty)\b)/.test(textAfter)) indent -= config.indentUnit;
          if (state.tag != "switch" && /^\{(case|default)\b/.test(textAfter)) indent -= config.indentUnit;
          if (/^\{\/switch\b/.test(textAfter)) indent -= config.indentUnit;
        }
        if (indent && state.localMode.indent)
          indent += state.localMode.indent(state.localState, textAfter);
        return indent;
      },

      innerMode: function(state) {
        if (state.soyState.length && last(state.soyState) != "literal") return null;
        else return {state: state.localState, mode: state.localMode};
      },

      electricInput: /^\s*\{(\/|\/template|\/deltemplate|\/switch|fallbackmsg|elseif|else|case|default|ifempty|\/literal\})$/,
      lineComment: "//",
      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      blockCommentContinue: " * ",
      fold: "indent"
    };
  }, "htmlmixed");

  CodeMirror.registerHelper("hintWords", "soy", indentingTags.concat(
      ["delpackage", "namespace", "alias", "print", "css", "debugger"]));

  CodeMirror.defineMIME("text/x-soy", "soy");
});
lib/codemirror/mode/puppet/index.html000064400000006274147361034410013731 0ustar00<!doctype html>

<title>CodeMirror: Puppet mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="puppet.js"></script>
<style>
      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
      .cm-s-default span.cm-arrow { color: red; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Puppet</a>
  </ul>
</div>

<article>
<h2>Puppet mode</h2>
<form><textarea id="code" name="code">
# == Class: automysqlbackup
#
# Puppet module to install AutoMySQLBackup for periodic MySQL backups.
#
# class { 'automysqlbackup':
#   backup_dir => '/mnt/backups',
# }
#

class automysqlbackup (
  $bin_dir = $automysqlbackup::params::bin_dir,
  $etc_dir = $automysqlbackup::params::etc_dir,
  $backup_dir = $automysqlbackup::params::backup_dir,
  $install_multicore = undef,
  $config = {},
  $config_defaults = {},
) inherits automysqlbackup::params {

# Ensure valid paths are assigned
  validate_absolute_path($bin_dir)
  validate_absolute_path($etc_dir)
  validate_absolute_path($backup_dir)

# Create a subdirectory in /etc for config files
  file { $etc_dir:
    ensure => directory,
    owner => 'root',
    group => 'root',
    mode => '0750',
  }

# Create an example backup file, useful for reference
  file { "${etc_dir}/automysqlbackup.conf.example":
    ensure => file,
    owner => 'root',
    group => 'root',
    mode => '0660',
    source => 'puppet:///modules/automysqlbackup/automysqlbackup.conf',
  }

# Add files from the developer
  file { "${etc_dir}/AMB_README":
    ensure => file,
    source => 'puppet:///modules/automysqlbackup/AMB_README',
  }
  file { "${etc_dir}/AMB_LICENSE":
    ensure => file,
    source => 'puppet:///modules/automysqlbackup/AMB_LICENSE',
  }

# Install the actual binary file
  file { "${bin_dir}/automysqlbackup":
    ensure => file,
    owner => 'root',
    group => 'root',
    mode => '0755',
    source => 'puppet:///modules/automysqlbackup/automysqlbackup',
  }

# Create the base backup directory
  file { $backup_dir:
    ensure => directory,
    owner => 'root',
    group => 'root',
    mode => '0755',
  }

# If you'd like to keep your config in hiera and pass it to this class
  if !empty($config) {
    create_resources('automysqlbackup::backup', $config, $config_defaults)
  }

# If using RedHat family, must have the RPMforge repo's enabled
  if $install_multicore {
    package { ['pigz', 'pbzip2']: ensure => installed }
  }

}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/x-puppet",
        matchBrackets: true,
        indentUnit: 4
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-puppet</code>.</p>

  </article>
lib/codemirror/mode/puppet/puppet.js000064400000016620147361034410013603 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("puppet", function () {
  // Stores the words from the define method
  var words = {};
  // Taken, mostly, from the Puppet official variable standards regex
  var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/;

  // Takes a string of words separated by spaces and adds them as
  // keys with the value of the first argument 'style'
  function define(style, string) {
    var split = string.split(' ');
    for (var i = 0; i < split.length; i++) {
      words[split[i]] = style;
    }
  }

  // Takes commonly known puppet types/words and classifies them to a style
  define('keyword', 'class define site node include import inherits');
  define('keyword', 'case if else in and elsif default or');
  define('atom', 'false true running present absent file directory undef');
  define('builtin', 'action augeas burst chain computer cron destination dport exec ' +
    'file filebucket group host icmp iniface interface jump k5login limit log_level ' +
    'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' +
    'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' +
    'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' +
    'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' +
    'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' +
    'resources router schedule scheduled_task selboolean selmodule service source ' +
    'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' +
    'user vlan yumrepo zfs zone zpool');

  // After finding a start of a string ('|") this function attempts to find the end;
  // If a variable is encountered along the way, we display it differently when it
  // is encapsulated in a double-quoted string.
  function tokenString(stream, state) {
    var current, prev, found_var = false;
    while (!stream.eol() && (current = stream.next()) != state.pending) {
      if (current === '$' && prev != '\\' && state.pending == '"') {
        found_var = true;
        break;
      }
      prev = current;
    }
    if (found_var) {
      stream.backUp(1);
    }
    if (current == state.pending) {
      state.continueString = false;
    } else {
      state.continueString = true;
    }
    return "string";
  }

  // Main function
  function tokenize(stream, state) {
    // Matches one whole word
    var word = stream.match(/[\w]+/, false);
    // Matches attributes (i.e. ensure => present ; 'ensure' would be matched)
    var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false);
    // Matches non-builtin resource declarations
    // (i.e. "apache::vhost {" or "mycustomclasss {" would be matched)
    var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false);
    // Matches virtual and exported resources (i.e. @@user { ; and the like)
    var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/, false);

    // Finally advance the stream
    var ch = stream.next();

    // Have we found a variable?
    if (ch === '$') {
      if (stream.match(variable_regex)) {
        // If so, and its in a string, assign it a different color
        return state.continueString ? 'variable-2' : 'variable';
      }
      // Otherwise return an invalid variable
      return "error";
    }
    // Should we still be looking for the end of a string?
    if (state.continueString) {
      // If so, go through the loop again
      stream.backUp(1);
      return tokenString(stream, state);
    }
    // Are we in a definition (class, node, define)?
    if (state.inDefinition) {
      // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched)
      if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) {
        return 'def';
      }
      // Match the rest it the next time around
      stream.match(/\s+{/);
      state.inDefinition = false;
    }
    // Are we in an 'include' statement?
    if (state.inInclude) {
      // Match and return the included class
      stream.match(/(\s+)?\S+(\s+)?/);
      state.inInclude = false;
      return 'def';
    }
    // Do we just have a function on our hands?
    // In 'ensure_resource("myclass")', 'ensure_resource' is matched
    if (stream.match(/(\s+)?\w+\(/)) {
      stream.backUp(1);
      return 'def';
    }
    // Have we matched the prior attribute regex?
    if (attribute) {
      stream.match(/(\s+)?\w+/);
      return 'tag';
    }
    // Do we have Puppet specific words?
    if (word && words.hasOwnProperty(word)) {
      // Negates the initial next()
      stream.backUp(1);
      // rs move the stream
      stream.match(/[\w]+/);
      // We want to process these words differently
      // do to the importance they have in Puppet
      if (stream.match(/\s+\S+\s+{/, false)) {
        state.inDefinition = true;
      }
      if (word == 'include') {
        state.inInclude = true;
      }
      // Returns their value as state in the prior define methods
      return words[word];
    }
    // Is there a match on a reference?
    if (/(^|\s+)[A-Z][\w:_]+/.test(word)) {
      // Negate the next()
      stream.backUp(1);
      // Match the full reference
      stream.match(/(^|\s+)[A-Z][\w:_]+/);
      return 'def';
    }
    // Have we matched the prior resource regex?
    if (resource) {
      stream.match(/(\s+)?[\w:_]+/);
      return 'def';
    }
    // Have we matched the prior special_resource regex?
    if (special_resource) {
      stream.match(/(\s+)?[@]{1,2}/);
      return 'special';
    }
    // Match all the comments. All of them.
    if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    // Have we found a string?
    if (ch == "'" || ch == '"') {
      // Store the type (single or double)
      state.pending = ch;
      // Perform the looping function to find the end
      return tokenString(stream, state);
    }
    // Match all the brackets
    if (ch == '{' || ch == '}') {
      return 'bracket';
    }
    // Match characters that we are going to assume
    // are trying to be regex
    if (ch == '/') {
      stream.match(/.*?\//);
      return 'variable-3';
    }
    // Match all the numbers
    if (ch.match(/[0-9]/)) {
      stream.eatWhile(/[0-9]+/);
      return 'number';
    }
    // Match the '=' and '=>' operators
    if (ch == '=') {
      if (stream.peek() == '>') {
          stream.next();
      }
      return "operator";
    }
    // Keep advancing through all the rest
    stream.eatWhile(/[\w-]/);
    // Return a blank line for everything else
    return null;
  }
  // Start it all
  return {
    startState: function () {
      var state = {};
      state.inDefinition = false;
      state.inInclude = false;
      state.continueString = false;
      state.pending = false;
      return state;
    },
    token: function (stream, state) {
      // Strip the spaces, but regex will account for them eitherway
      if (stream.eatSpace()) return null;
      // Go through the main process
      return tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME("text/x-puppet", "puppet");

});
lib/codemirror/mode/erlang/index.html000064400000004170147361034410013655 0ustar00<!doctype html>

<title>CodeMirror: Erlang mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/erlang-dark.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="erlang.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Erlang</a>
  </ul>
</div>

<article>
<h2>Erlang mode</h2>
<form><textarea id="code" name="code">
%% -*- mode: erlang; erlang-indent-level: 2 -*-
%%% Created :  7 May 2012 by mats cronqvist <masse@klarna.com>

%% @doc
%% Demonstrates how to print a record.
%% @end

-module('ex').
-author('mats cronqvist').
-export([demo/0,
         rec_info/1]).

-record(demo,{a="One",b="Two",c="Three",d="Four"}).

rec_info(demo) -> record_info(fields,demo).

demo() -> expand_recs(?MODULE,#demo{a="A",b="BB"}).

expand_recs(M,List) when is_list(List) ->
  [expand_recs(M,L)||L<-List];
expand_recs(M,Tup) when is_tuple(Tup) ->
  case tuple_size(Tup) of
    L when L < 1 -> Tup;
    L ->
      try
        Fields = M:rec_info(element(1,Tup)),
        L = length(Fields)+1,
        lists:zip(Fields,expand_recs(M,tl(tuple_to_list(Tup))))
      catch
        _:_ -> list_to_tuple(expand_recs(M,tuple_to_list(Tup)))
      end
  end;
expand_recs(_,Term) ->
  Term.
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        extraKeys: {"Tab":  "indentAuto"},
        theme: "erlang-dark"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-erlang</code>.</p>
  </article>
lib/codemirror/mode/erlang/erlang.js000064400000044645147361034410013501 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*jshint unused:true, eqnull:true, curly:true, bitwise:true */
/*jshint undef:true, latedef:true, trailing:true */
/*global CodeMirror:true */

// erlang mode.
// tokenizer -> token types -> CodeMirror styles
// tokenizer maintains a parse stack
// indenter uses the parse stack

// TODO indenter:
//   bit syntax
//   old guard/bif/conversion clashes (e.g. "float/1")
//   type/spec/opaque

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMIME("text/x-erlang", "erlang");

CodeMirror.defineMode("erlang", function(cmCfg) {
  "use strict";

/////////////////////////////////////////////////////////////////////////////
// constants

  var typeWords = [
    "-type", "-spec", "-export_type", "-opaque"];

  var keywordWords = [
    "after","begin","catch","case","cond","end","fun","if",
    "let","of","query","receive","try","when"];

  var separatorRE    = /[\->,;]/;
  var separatorWords = [
    "->",";",","];

  var operatorAtomWords = [
    "and","andalso","band","bnot","bor","bsl","bsr","bxor",
    "div","not","or","orelse","rem","xor"];

  var operatorSymbolRE    = /[\+\-\*\/<>=\|:!]/;
  var operatorSymbolWords = [
    "=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"];

  var openParenRE    = /[<\(\[\{]/;
  var openParenWords = [
    "<<","(","[","{"];

  var closeParenRE    = /[>\)\]\}]/;
  var closeParenWords = [
    "}","]",")",">>"];

  var guardWords = [
    "is_atom","is_binary","is_bitstring","is_boolean","is_float",
    "is_function","is_integer","is_list","is_number","is_pid",
    "is_port","is_record","is_reference","is_tuple",
    "atom","binary","bitstring","boolean","function","integer","list",
    "number","pid","port","record","reference","tuple"];

  var bifWords = [
    "abs","adler32","adler32_combine","alive","apply","atom_to_binary",
    "atom_to_list","binary_to_atom","binary_to_existing_atom",
    "binary_to_list","binary_to_term","bit_size","bitstring_to_list",
    "byte_size","check_process_code","contact_binary","crc32",
    "crc32_combine","date","decode_packet","delete_module",
    "disconnect_node","element","erase","exit","float","float_to_list",
    "garbage_collect","get","get_keys","group_leader","halt","hd",
    "integer_to_list","internal_bif","iolist_size","iolist_to_binary",
    "is_alive","is_atom","is_binary","is_bitstring","is_boolean",
    "is_float","is_function","is_integer","is_list","is_number","is_pid",
    "is_port","is_process_alive","is_record","is_reference","is_tuple",
    "length","link","list_to_atom","list_to_binary","list_to_bitstring",
    "list_to_existing_atom","list_to_float","list_to_integer",
    "list_to_pid","list_to_tuple","load_module","make_ref","module_loaded",
    "monitor_node","node","node_link","node_unlink","nodes","notalive",
    "now","open_port","pid_to_list","port_close","port_command",
    "port_connect","port_control","pre_loaded","process_flag",
    "process_info","processes","purge_module","put","register",
    "registered","round","self","setelement","size","spawn","spawn_link",
    "spawn_monitor","spawn_opt","split_binary","statistics",
    "term_to_binary","time","throw","tl","trunc","tuple_size",
    "tuple_to_list","unlink","unregister","whereis"];

// upper case: [A-Z] [Ø-Þ] [À-Ö]
// lower case: [a-z] [ß-ö] [ø-ÿ]
  var anumRE       = /[\w@Ø-ÞÀ-Öß-öø-ÿ]/;
  var escapesRE    =
    /[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;

/////////////////////////////////////////////////////////////////////////////
// tokenizer

  function tokenizer(stream,state) {
    // in multi-line string
    if (state.in_string) {
      state.in_string = (!doubleQuote(stream));
      return rval(state,stream,"string");
    }

    // in multi-line atom
    if (state.in_atom) {
      state.in_atom = (!singleQuote(stream));
      return rval(state,stream,"atom");
    }

    // whitespace
    if (stream.eatSpace()) {
      return rval(state,stream,"whitespace");
    }

    // attributes and type specs
    if (!peekToken(state) &&
        stream.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)) {
      if (is_member(stream.current(),typeWords)) {
        return rval(state,stream,"type");
      }else{
        return rval(state,stream,"attribute");
      }
    }

    var ch = stream.next();

    // comment
    if (ch == '%') {
      stream.skipToEnd();
      return rval(state,stream,"comment");
    }

    // colon
    if (ch == ":") {
      return rval(state,stream,"colon");
    }

    // macro
    if (ch == '?') {
      stream.eatSpace();
      stream.eatWhile(anumRE);
      return rval(state,stream,"macro");
    }

    // record
    if (ch == "#") {
      stream.eatSpace();
      stream.eatWhile(anumRE);
      return rval(state,stream,"record");
    }

    // dollar escape
    if (ch == "$") {
      if (stream.next() == "\\" && !stream.match(escapesRE)) {
        return rval(state,stream,"error");
      }
      return rval(state,stream,"number");
    }

    // dot
    if (ch == ".") {
      return rval(state,stream,"dot");
    }

    // quoted atom
    if (ch == '\'') {
      if (!(state.in_atom = (!singleQuote(stream)))) {
        if (stream.match(/\s*\/\s*[0-9]/,false)) {
          stream.match(/\s*\/\s*[0-9]/,true);
          return rval(state,stream,"fun");      // 'f'/0 style fun
        }
        if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) {
          return rval(state,stream,"function");
        }
      }
      return rval(state,stream,"atom");
    }

    // string
    if (ch == '"') {
      state.in_string = (!doubleQuote(stream));
      return rval(state,stream,"string");
    }

    // variable
    if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) {
      stream.eatWhile(anumRE);
      return rval(state,stream,"variable");
    }

    // atom/keyword/BIF/function
    if (/[a-z_ß-öø-ÿ]/.test(ch)) {
      stream.eatWhile(anumRE);

      if (stream.match(/\s*\/\s*[0-9]/,false)) {
        stream.match(/\s*\/\s*[0-9]/,true);
        return rval(state,stream,"fun");      // f/0 style fun
      }

      var w = stream.current();

      if (is_member(w,keywordWords)) {
        return rval(state,stream,"keyword");
      }else if (is_member(w,operatorAtomWords)) {
        return rval(state,stream,"operator");
      }else if (stream.match(/\s*\(/,false)) {
        // 'put' and 'erlang:put' are bifs, 'foo:put' is not
        if (is_member(w,bifWords) &&
            ((peekToken(state).token != ":") ||
             (peekToken(state,2).token == "erlang"))) {
          return rval(state,stream,"builtin");
        }else if (is_member(w,guardWords)) {
          return rval(state,stream,"guard");
        }else{
          return rval(state,stream,"function");
        }
      }else if (lookahead(stream) == ":") {
        if (w == "erlang") {
          return rval(state,stream,"builtin");
        } else {
          return rval(state,stream,"function");
        }
      }else if (is_member(w,["true","false"])) {
        return rval(state,stream,"boolean");
      }else{
        return rval(state,stream,"atom");
      }
    }

    // number
    var digitRE      = /[0-9]/;
    var radixRE      = /[0-9a-zA-Z]/;         // 36#zZ style int
    if (digitRE.test(ch)) {
      stream.eatWhile(digitRE);
      if (stream.eat('#')) {                // 36#aZ  style integer
        if (!stream.eatWhile(radixRE)) {
          stream.backUp(1);                 //"36#" - syntax error
        }
      } else if (stream.eat('.')) {       // float
        if (!stream.eatWhile(digitRE)) {
          stream.backUp(1);        // "3." - probably end of function
        } else {
          if (stream.eat(/[eE]/)) {        // float with exponent
            if (stream.eat(/[-+]/)) {
              if (!stream.eatWhile(digitRE)) {
                stream.backUp(2);            // "2e-" - syntax error
              }
            } else {
              if (!stream.eatWhile(digitRE)) {
                stream.backUp(1);            // "2e" - syntax error
              }
            }
          }
        }
      }
      return rval(state,stream,"number");   // normal integer
    }

    // open parens
    if (nongreedy(stream,openParenRE,openParenWords)) {
      return rval(state,stream,"open_paren");
    }

    // close parens
    if (nongreedy(stream,closeParenRE,closeParenWords)) {
      return rval(state,stream,"close_paren");
    }

    // separators
    if (greedy(stream,separatorRE,separatorWords)) {
      return rval(state,stream,"separator");
    }

    // operators
    if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) {
      return rval(state,stream,"operator");
    }

    return rval(state,stream,null);
  }

/////////////////////////////////////////////////////////////////////////////
// utilities
  function nongreedy(stream,re,words) {
    if (stream.current().length == 1 && re.test(stream.current())) {
      stream.backUp(1);
      while (re.test(stream.peek())) {
        stream.next();
        if (is_member(stream.current(),words)) {
          return true;
        }
      }
      stream.backUp(stream.current().length-1);
    }
    return false;
  }

  function greedy(stream,re,words) {
    if (stream.current().length == 1 && re.test(stream.current())) {
      while (re.test(stream.peek())) {
        stream.next();
      }
      while (0 < stream.current().length) {
        if (is_member(stream.current(),words)) {
          return true;
        }else{
          stream.backUp(1);
        }
      }
      stream.next();
    }
    return false;
  }

  function doubleQuote(stream) {
    return quote(stream, '"', '\\');
  }

  function singleQuote(stream) {
    return quote(stream,'\'','\\');
  }

  function quote(stream,quoteChar,escapeChar) {
    while (!stream.eol()) {
      var ch = stream.next();
      if (ch == quoteChar) {
        return true;
      }else if (ch == escapeChar) {
        stream.next();
      }
    }
    return false;
  }

  function lookahead(stream) {
    var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false);
    return m ? m.pop() : "";
  }

  function is_member(element,list) {
    return (-1 < list.indexOf(element));
  }

  function rval(state,stream,type) {

    // parse stack
    pushToken(state,realToken(type,stream));

    // map erlang token type to CodeMirror style class
    //     erlang             -> CodeMirror tag
    switch (type) {
      case "atom":        return "atom";
      case "attribute":   return "attribute";
      case "boolean":     return "atom";
      case "builtin":     return "builtin";
      case "close_paren": return null;
      case "colon":       return null;
      case "comment":     return "comment";
      case "dot":         return null;
      case "error":       return "error";
      case "fun":         return "meta";
      case "function":    return "tag";
      case "guard":       return "property";
      case "keyword":     return "keyword";
      case "macro":       return "variable-2";
      case "number":      return "number";
      case "open_paren":  return null;
      case "operator":    return "operator";
      case "record":      return "bracket";
      case "separator":   return null;
      case "string":      return "string";
      case "type":        return "def";
      case "variable":    return "variable";
      default:            return null;
    }
  }

  function aToken(tok,col,ind,typ) {
    return {token:  tok,
            column: col,
            indent: ind,
            type:   typ};
  }

  function realToken(type,stream) {
    return aToken(stream.current(),
                 stream.column(),
                 stream.indentation(),
                 type);
  }

  function fakeToken(type) {
    return aToken(type,0,0,type);
  }

  function peekToken(state,depth) {
    var len = state.tokenStack.length;
    var dep = (depth ? depth : 1);

    if (len < dep) {
      return false;
    }else{
      return state.tokenStack[len-dep];
    }
  }

  function pushToken(state,token) {

    if (!(token.type == "comment" || token.type == "whitespace")) {
      state.tokenStack = maybe_drop_pre(state.tokenStack,token);
      state.tokenStack = maybe_drop_post(state.tokenStack);
    }
  }

  function maybe_drop_pre(s,token) {
    var last = s.length-1;

    if (0 < last && s[last].type === "record" && token.type === "dot") {
      s.pop();
    }else if (0 < last && s[last].type === "group") {
      s.pop();
      s.push(token);
    }else{
      s.push(token);
    }
    return s;
  }

  function maybe_drop_post(s) {
    var last = s.length-1;

    if (s[last].type === "dot") {
      return [];
    }
    if (s[last].type === "fun" && s[last-1].token === "fun") {
      return s.slice(0,last-1);
    }
    switch (s[s.length-1].token) {
      case "}":    return d(s,{g:["{"]});
      case "]":    return d(s,{i:["["]});
      case ")":    return d(s,{i:["("]});
      case ">>":   return d(s,{i:["<<"]});
      case "end":  return d(s,{i:["begin","case","fun","if","receive","try"]});
      case ",":    return d(s,{e:["begin","try","when","->",
                                  ",","(","[","{","<<"]});
      case "->":   return d(s,{r:["when"],
                               m:["try","if","case","receive"]});
      case ";":    return d(s,{E:["case","fun","if","receive","try","when"]});
      case "catch":return d(s,{e:["try"]});
      case "of":   return d(s,{e:["case"]});
      case "after":return d(s,{e:["receive","try"]});
      default:     return s;
    }
  }

  function d(stack,tt) {
    // stack is a stack of Token objects.
    // tt is an object; {type:tokens}
    // type is a char, tokens is a list of token strings.
    // The function returns (possibly truncated) stack.
    // It will descend the stack, looking for a Token such that Token.token
    //  is a member of tokens. If it does not find that, it will normally (but
    //  see "E" below) return stack. If it does find a match, it will remove
    //  all the Tokens between the top and the matched Token.
    // If type is "m", that is all it does.
    // If type is "i", it will also remove the matched Token and the top Token.
    // If type is "g", like "i", but add a fake "group" token at the top.
    // If type is "r", it will remove the matched Token, but not the top Token.
    // If type is "e", it will keep the matched Token but not the top Token.
    // If type is "E", it behaves as for type "e", except if there is no match,
    //  in which case it will return an empty stack.

    for (var type in tt) {
      var len = stack.length-1;
      var tokens = tt[type];
      for (var i = len-1; -1 < i ; i--) {
        if (is_member(stack[i].token,tokens)) {
          var ss = stack.slice(0,i);
          switch (type) {
              case "m": return ss.concat(stack[i]).concat(stack[len]);
              case "r": return ss.concat(stack[len]);
              case "i": return ss;
              case "g": return ss.concat(fakeToken("group"));
              case "E": return ss.concat(stack[i]);
              case "e": return ss.concat(stack[i]);
          }
        }
      }
    }
    return (type == "E" ? [] : stack);
  }

/////////////////////////////////////////////////////////////////////////////
// indenter

  function indenter(state,textAfter) {
    var t;
    var unit = cmCfg.indentUnit;
    var wordAfter = wordafter(textAfter);
    var currT = peekToken(state,1);
    var prevT = peekToken(state,2);

    if (state.in_string || state.in_atom) {
      return CodeMirror.Pass;
    }else if (!prevT) {
      return 0;
    }else if (currT.token == "when") {
      return currT.column+unit;
    }else if (wordAfter === "when" && prevT.type === "function") {
      return prevT.indent+unit;
    }else if (wordAfter === "(" && currT.token === "fun") {
      return  currT.column+3;
    }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) {
      return t.column;
    }else if (is_member(wordAfter,["end","after","of"])) {
      t = getToken(state,["begin","case","fun","if","receive","try"]);
      return t ? t.column : CodeMirror.Pass;
    }else if (is_member(wordAfter,closeParenWords)) {
      t = getToken(state,openParenWords);
      return t ? t.column : CodeMirror.Pass;
    }else if (is_member(currT.token,[",","|","||"]) ||
              is_member(wordAfter,[",","|","||"])) {
      t = postcommaToken(state);
      return t ? t.column+t.token.length : unit;
    }else if (currT.token == "->") {
      if (is_member(prevT.token, ["receive","case","if","try"])) {
        return prevT.column+unit+unit;
      }else{
        return prevT.column+unit;
      }
    }else if (is_member(currT.token,openParenWords)) {
      return currT.column+currT.token.length;
    }else{
      t = defaultToken(state);
      return truthy(t) ? t.column+unit : 0;
    }
  }

  function wordafter(str) {
    var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/);

    return truthy(m) && (m.index === 0) ? m[0] : "";
  }

  function postcommaToken(state) {
    var objs = state.tokenStack.slice(0,-1);
    var i = getTokenIndex(objs,"type",["open_paren"]);

    return truthy(objs[i]) ? objs[i] : false;
  }

  function defaultToken(state) {
    var objs = state.tokenStack;
    var stop = getTokenIndex(objs,"type",["open_paren","separator","keyword"]);
    var oper = getTokenIndex(objs,"type",["operator"]);

    if (truthy(stop) && truthy(oper) && stop < oper) {
      return objs[stop+1];
    } else if (truthy(stop)) {
      return objs[stop];
    } else {
      return false;
    }
  }

  function getToken(state,tokens) {
    var objs = state.tokenStack;
    var i = getTokenIndex(objs,"token",tokens);

    return truthy(objs[i]) ? objs[i] : false;
  }

  function getTokenIndex(objs,propname,propvals) {

    for (var i = objs.length-1; -1 < i ; i--) {
      if (is_member(objs[i][propname],propvals)) {
        return i;
      }
    }
    return false;
  }

  function truthy(x) {
    return (x !== false) && (x != null);
  }

/////////////////////////////////////////////////////////////////////////////
// this object defines the mode

  return {
    startState:
      function() {
        return {tokenStack: [],
                in_string:  false,
                in_atom:    false};
      },

    token:
      function(stream, state) {
        return tokenizer(stream, state);
      },

    indent:
      function(state, textAfter) {
        return indenter(state,textAfter);
      },

    lineComment: "%"
  };
});

});
lib/codemirror/mode/livescript/livescript.js000064400000016764147361034410015332 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/**
 * Link to the project's GitHub page:
 * https://github.com/duralog/CodeMirror
 */

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode('livescript', function(){
    var tokenBase = function(stream, state) {
      var next_rule = state.next || "start";
      if (next_rule) {
        state.next = state.next;
        var nr = Rules[next_rule];
        if (nr.splice) {
          for (var i$ = 0; i$ < nr.length; ++i$) {
            var r = nr[i$];
            if (r.regex && stream.match(r.regex)) {
              state.next = r.next || state.next;
              return r.token;
            }
          }
          stream.next();
          return 'error';
        }
        if (stream.match(r = Rules[next_rule])) {
          if (r.regex && stream.match(r.regex)) {
            state.next = r.next;
            return r.token;
          } else {
            stream.next();
            return 'error';
          }
        }
      }
      stream.next();
      return 'error';
    };
    var external = {
      startState: function(){
        return {
          next: 'start',
          lastToken: {style: null, indent: 0, content: ""}
        };
      },
      token: function(stream, state){
        while (stream.pos == stream.start)
          var style = tokenBase(stream, state);
        state.lastToken = {
          style: style,
          indent: stream.indentation(),
          content: stream.current()
        };
        return style.replace(/\./g, ' ');
      },
      indent: function(state){
        var indentation = state.lastToken.indent;
        if (state.lastToken.content.match(indenter)) {
          indentation += 2;
        }
        return indentation;
      }
    };
    return external;
  });

  var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*';
  var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$');
  var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))';
  var stringfill = {
    token: 'string',
    regex: '.+'
  };
  var Rules = {
    start: [
      {
        token: 'comment.doc',
        regex: '/\\*',
        next: 'comment'
      }, {
        token: 'comment',
        regex: '#.*'
      }, {
        token: 'keyword',
        regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend
      }, {
        token: 'constant.language',
        regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend
      }, {
        token: 'invalid.illegal',
        regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend
      }, {
        token: 'language.support.class',
        regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend
      }, {
        token: 'language.support.function',
        regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend
      }, {
        token: 'variable.language',
        regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend
      }, {
        token: 'identifier',
        regex: identifier + '\\s*:(?![:=])'
      }, {
        token: 'variable',
        regex: identifier
      }, {
        token: 'keyword.operator',
        regex: '(?:\\.{3}|\\s+\\?)'
      }, {
        token: 'keyword.variable',
        regex: '(?:@+|::|\\.\\.)',
        next: 'key'
      }, {
        token: 'keyword.operator',
        regex: '\\.\\s*',
        next: 'key'
      }, {
        token: 'string',
        regex: '\\\\\\S[^\\s,;)}\\]]*'
      }, {
        token: 'string.doc',
        regex: '\'\'\'',
        next: 'qdoc'
      }, {
        token: 'string.doc',
        regex: '"""',
        next: 'qqdoc'
      }, {
        token: 'string',
        regex: '\'',
        next: 'qstring'
      }, {
        token: 'string',
        regex: '"',
        next: 'qqstring'
      }, {
        token: 'string',
        regex: '`',
        next: 'js'
      }, {
        token: 'string',
        regex: '<\\[',
        next: 'words'
      }, {
        token: 'string.regex',
        regex: '//',
        next: 'heregex'
      }, {
        token: 'string.regex',
        regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}',
        next: 'key'
      }, {
        token: 'constant.numeric',
        regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)'
      }, {
        token: 'lparen',
        regex: '[({[]'
      }, {
        token: 'rparen',
        regex: '[)}\\]]',
        next: 'key'
      }, {
        token: 'keyword.operator',
        regex: '\\S+'
      }, {
        token: 'text',
        regex: '\\s+'
      }
    ],
    heregex: [
      {
        token: 'string.regex',
        regex: '.*?//[gimy$?]{0,4}',
        next: 'start'
      }, {
        token: 'string.regex',
        regex: '\\s*#{'
      }, {
        token: 'comment.regex',
        regex: '\\s+(?:#.*)?'
      }, {
        token: 'string.regex',
        regex: '\\S+'
      }
    ],
    key: [
      {
        token: 'keyword.operator',
        regex: '[.?@!]+'
      }, {
        token: 'identifier',
        regex: identifier,
        next: 'start'
      }, {
        token: 'text',
        regex: '',
        next: 'start'
      }
    ],
    comment: [
      {
        token: 'comment.doc',
        regex: '.*?\\*/',
        next: 'start'
      }, {
        token: 'comment.doc',
        regex: '.+'
      }
    ],
    qdoc: [
      {
        token: 'string',
        regex: ".*?'''",
        next: 'key'
      }, stringfill
    ],
    qqdoc: [
      {
        token: 'string',
        regex: '.*?"""',
        next: 'key'
      }, stringfill
    ],
    qstring: [
      {
        token: 'string',
        regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'',
        next: 'key'
      }, stringfill
    ],
    qqstring: [
      {
        token: 'string',
        regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',
        next: 'key'
      }, stringfill
    ],
    js: [
      {
        token: 'string',
        regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`',
        next: 'key'
      }, stringfill
    ],
    words: [
      {
        token: 'string',
        regex: '.*?\\]>',
        next: 'key'
      }, stringfill
    ]
  };
  for (var idx in Rules) {
    var r = Rules[idx];
    if (r.splice) {
      for (var i = 0, len = r.length; i < len; ++i) {
        var rr = r[i];
        if (typeof rr.regex === 'string') {
          Rules[idx][i].regex = new RegExp('^' + rr.regex);
        }
      }
    } else if (typeof rr.regex === 'string') {
      Rules[idx].regex = new RegExp('^' + r.regex);
    }
  }

  CodeMirror.defineMIME('text/x-livescript', 'livescript');

});
lib/codemirror/mode/livescript/index.html000064400000023163147361034410014574 0ustar00<!doctype html>

<title>CodeMirror: LiveScript mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/solarized.css">
<script src="../../lib/codemirror.js"></script>
<script src="livescript.js"></script>
<style>.CodeMirror {font-size: 80%;border-top: 1px solid silver; border-bottom: 1px solid silver;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">LiveScript</a>
  </ul>
</div>

<article>
<h2>LiveScript mode</h2>
<form><textarea id="code" name="code">
# LiveScript mode for CodeMirror
# The following script, prelude.ls, is used to
# demonstrate LiveScript mode for CodeMirror.
#   https://github.com/gkz/prelude-ls

export objToFunc = objToFunc = (obj) ->
  (key) -> obj[key]

export each = (f, xs) -->
  if typeof! xs is \Object
    for , x of xs then f x
  else
    for x in xs then f x
  xs

export map = (f, xs) -->
  f = objToFunc f if typeof! f isnt \Function
  type = typeof! xs
  if type is \Object
    {[key, f x] for key, x of xs}
  else
    result = [f x for x in xs]
    if type is \String then result * '' else result

export filter = (f, xs) -->
  f = objToFunc f if typeof! f isnt \Function
  type = typeof! xs
  if type is \Object
    {[key, x] for key, x of xs when f x}
  else
    result = [x for x in xs when f x]
    if type is \String then result * '' else result

export reject = (f, xs) -->
  f = objToFunc f if typeof! f isnt \Function
  type = typeof! xs
  if type is \Object
    {[key, x] for key, x of xs when not f x}
  else
    result = [x for x in xs when not f x]
    if type is \String then result * '' else result

export partition = (f, xs) -->
  f = objToFunc f if typeof! f isnt \Function
  type = typeof! xs
  if type is \Object
    passed = {}
    failed = {}
    for key, x of xs
      (if f x then passed else failed)[key] = x
  else
    passed = []
    failed = []
    for x in xs
      (if f x then passed else failed)push x
    if type is \String
      passed *= ''
      failed *= ''
  [passed, failed]

export find = (f, xs) -->
  f = objToFunc f if typeof! f isnt \Function
  if typeof! xs is \Object
    for , x of xs when f x then return x
  else
    for x in xs when f x then return x
  void

export head = export first = (xs) ->
  return void if not xs.length
  xs.0

export tail = (xs) ->
  return void if not xs.length
  xs.slice 1

export last = (xs) ->
  return void if not xs.length
  xs[*-1]

export initial = (xs) ->
  return void if not xs.length
  xs.slice 0 xs.length - 1

export empty = (xs) ->
  if typeof! xs is \Object
    for x of xs then return false
    return yes
  not xs.length

export values = (obj) ->
  [x for , x of obj]

export keys = (obj) ->
  [x for x of obj]

export len = (xs) ->
  xs = values xs if typeof! xs is \Object
  xs.length

export cons = (x, xs) -->
  if typeof! xs is \String then x + xs else [x] ++ xs

export append = (xs, ys) -->
  if typeof! ys is \String then xs + ys else xs ++ ys

export join = (sep, xs) -->
  xs = values xs if typeof! xs is \Object
  xs.join sep

export reverse = (xs) ->
  if typeof! xs is \String
  then (xs / '')reverse! * ''
  else xs.slice!reverse!

export fold = export foldl = (f, memo, xs) -->
  if typeof! xs is \Object
    for , x of xs then memo = f memo, x
  else
    for x in xs then memo = f memo, x
  memo

export fold1 = export foldl1 = (f, xs) --> fold f, xs.0, xs.slice 1

export foldr = (f, memo, xs) --> fold f, memo, xs.slice!reverse!

export foldr1 = (f, xs) -->
  xs.=slice!reverse!
  fold f, xs.0, xs.slice 1

export unfoldr = export unfold = (f, b) -->
  if (f b)?
    [that.0] ++ unfoldr f, that.1
  else
    []

export andList = (xs) ->
  for x in xs when not x
    return false
  true

export orList = (xs) ->
  for x in xs when x
    return true
  false

export any = (f, xs) -->
  f = objToFunc f if typeof! f isnt \Function
  for x in xs when f x
    return yes
  no

export all = (f, xs) -->
  f = objToFunc f if typeof! f isnt \Function
  for x in xs when not f x
    return no
  yes

export unique = (xs) ->
  result = []
  if typeof! xs is \Object
    for , x of xs when x not in result then result.push x
  else
    for x   in xs when x not in result then result.push x
  if typeof! xs is \String then result * '' else result

export sort = (xs) ->
  xs.concat!sort (x, y) ->
    | x > y =>  1
    | x < y => -1
    | _     =>  0

export sortBy = (f, xs) -->
  return [] unless xs.length
  xs.concat!sort f

export compare = (f, x, y) -->
  | (f x) > (f y) =>  1
  | (f x) < (f y) => -1
  | otherwise     =>  0

export sum = (xs) ->
  result = 0
  if typeof! xs is \Object
    for , x of xs then result += x
  else
    for x   in xs then result += x
  result

export product = (xs) ->
  result = 1
  if typeof! xs is \Object
    for , x of xs then result *= x
  else
    for x   in xs then result *= x
  result

export mean = export average = (xs) -> (sum xs) / len xs

export concat = (xss) -> fold append, [], xss

export concatMap = (f, xs) --> fold ((memo, x) -> append memo, f x), [], xs

export listToObj = (xs) ->
  {[x.0, x.1] for x in xs}

export maximum = (xs) -> fold1 (>?), xs

export minimum = (xs) -> fold1 (<?), xs

export scan = export scanl = (f, memo, xs) -->
  last = memo
  if typeof! xs is \Object
  then [memo] ++ [last = f last, x for , x of xs]
  else [memo] ++ [last = f last, x for x in xs]

export scan1 = export scanl1 = (f, xs) --> scan f, xs.0, xs.slice 1

export scanr = (f, memo, xs) -->
  xs.=slice!reverse!
  scan f, memo, xs .reverse!

export scanr1 = (f, xs) -->
  xs.=slice!reverse!
  scan f, xs.0, xs.slice 1 .reverse!

export replicate = (n, x) -->
  result = []
  i = 0
  while i < n, ++i then result.push x
  result

export take = (n, xs) -->
  | n <= 0
    if typeof! xs is \String then '' else []
  | not xs.length => xs
  | otherwise     => xs.slice 0, n

export drop = (n, xs) -->
  | n <= 0        => xs
  | not xs.length => xs
  | otherwise     => xs.slice n

export splitAt = (n, xs) --> [(take n, xs), (drop n, xs)]

export takeWhile = (p, xs) -->
  return xs if not xs.length
  p = objToFunc p if typeof! p isnt \Function
  result = []
  for x in xs
    break if not p x
    result.push x
  if typeof! xs is \String then result * '' else result

export dropWhile = (p, xs) -->
  return xs if not xs.length
  p = objToFunc p if typeof! p isnt \Function
  i = 0
  for x in xs
    break if not p x
    ++i
  drop i, xs

export span = (p, xs) --> [(takeWhile p, xs), (dropWhile p, xs)]

export breakIt = (p, xs) --> span (not) << p, xs

export zip = (xs, ys) -->
  result = []
  for zs, i in [xs, ys]
    for z, j in zs
      result.push [] if i is 0
      result[j]?push z
  result

export zipWith = (f,xs, ys) -->
  f = objToFunc f if typeof! f isnt \Function
  if not xs.length or not ys.length
    []
  else
    [f.apply this, zs for zs in zip.call this, xs, ys]

export zipAll = (...xss) ->
  result = []
  for xs, i in xss
    for x, j in xs
      result.push [] if i is 0
      result[j]?push x
  result

export zipAllWith = (f, ...xss) ->
  f = objToFunc f if typeof! f isnt \Function
  if not xss.0.length or not xss.1.length
    []
  else
    [f.apply this, xs for xs in zipAll.apply this, xss]

export compose = (...funcs) ->
  ->
    args = arguments
    for f in funcs
      args = [f.apply this, args]
    args.0

export curry = (f) ->
  curry$ f # using util method curry$ from livescript

export id = (x) -> x

export flip = (f, x, y) --> f y, x

export fix = (f) ->
  ( (g, x) -> -> f(g g) ...arguments ) do
    (g, x) -> -> f(g g) ...arguments

export lines = (str) ->
  return [] if not str.length
  str / \\n

export unlines = (strs) -> strs * \\n

export words = (str) ->
  return [] if not str.length
  str / /[ ]+/

export unwords = (strs) -> strs * ' '

export max = (>?)

export min = (<?)

export negate = (x) -> -x

export abs = Math.abs

export signum = (x) ->
  | x < 0     => -1
  | x > 0     =>  1
  | otherwise =>  0

export quot = (x, y) --> ~~(x / y)

export rem = (%)

export div = (x, y) --> Math.floor x / y

export mod = (%%)

export recip = (1 /)

export pi = Math.PI

export tau = pi * 2

export exp = Math.exp

export sqrt = Math.sqrt

# changed from log as log is a
# common function for logging things
export ln = Math.log

export pow = (^)

export sin = Math.sin

export tan = Math.tan

export cos = Math.cos

export asin = Math.asin

export acos = Math.acos

export atan = Math.atan

export atan2 = (x, y) --> Math.atan2 x, y

# sinh
# tanh
# cosh
# asinh
# atanh
# acosh

export truncate = (x) -> ~~x

export round = Math.round

export ceiling = Math.ceil

export floor = Math.floor

export isItNaN = (x) -> x isnt x

export even = (x) -> x % 2 == 0

export odd = (x) -> x % 2 != 0

export gcd = (x, y) -->
  x = Math.abs x
  y = Math.abs y
  until y is 0
    z = x % y
    x = y
    y = z
  x

export lcm = (x, y) -->
  Math.abs Math.floor (x / (gcd x, y) * y)

# meta
export installPrelude = !(target) ->
  unless target.prelude?isInstalled
    target <<< out$ # using out$ generated by livescript
    target <<< target.prelude.isInstalled = true

export prelude = out$
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        theme: "solarized light",
        lineNumbers: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-livescript</code>.</p>

    <p>The LiveScript mode was written by Kenneth Bentley.</p>

  </article>
lib/codemirror/mode/yacas/yacas.js000064400000012460147361034410013147 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Yacas mode copyright (c) 2015 by Grzegorz Mazur
// Loosely based on mathematica mode by Calin Barbat

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('yacas', function(_config, _parserConfig) {

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " +
                        "FromString Function Integrate InverseTaylor Limit " +
                        "LocalSymbols Macro MacroRule MacroRulePattern " +
                        "NIntegrate Rule RulePattern Subst TD TExplicitSum " +
                        "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " +
                        "ToStdout ToString TraceRule Until While");

  // patterns
  var pFloatForm  = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)";
  var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)";

  // regular expressions
  var reFloatForm    = new RegExp(pFloatForm);
  var reIdentifier   = new RegExp(pIdentifier);
  var rePattern      = new RegExp(pIdentifier + "?_" + pIdentifier);
  var reFunctionLike = new RegExp(pIdentifier + "\\s*\\(");

  function tokenBase(stream, state) {
    var ch;

    // get next character
    ch = stream.next();

    // string
    if (ch === '"') {
      state.tokenize = tokenString;
      return state.tokenize(stream, state);
    }

    // comment
    if (ch === '/') {
      if (stream.eat('*')) {
        state.tokenize = tokenComment;
        return state.tokenize(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }

    // go back one character
    stream.backUp(1);

    // update scope info
    var m = stream.match(/^(\w+)\s*\(/, false);
    if (m !== null && bodiedOps.hasOwnProperty(m[1]))
      state.scopes.push('bodied');

    var scope = currentScope(state);

    if (scope === 'bodied' && ch === '[')
      state.scopes.pop();

    if (ch === '[' || ch === '{' || ch === '(')
      state.scopes.push(ch);

    scope = currentScope(state);

    if (scope === '[' && ch === ']' ||
        scope === '{' && ch === '}' ||
        scope === '(' && ch === ')')
      state.scopes.pop();

    if (ch === ';') {
      while (scope === 'bodied') {
        state.scopes.pop();
        scope = currentScope(state);
      }
    }

    // look for ordered rules
    if (stream.match(/\d+ *#/, true, false)) {
      return 'qualifier';
    }

    // look for numbers
    if (stream.match(reFloatForm, true, false)) {
      return 'number';
    }

    // look for placeholders
    if (stream.match(rePattern, true, false)) {
      return 'variable-3';
    }

    // match all braces separately
    if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) {
      return 'bracket';
    }

    // literals looking like function calls
    if (stream.match(reFunctionLike, true, false)) {
      stream.backUp(1);
      return 'variable';
    }

    // all other identifiers
    if (stream.match(reIdentifier, true, false)) {
      return 'variable-2';
    }

    // operators; note that operators like @@ or /; are matched separately for each symbol.
    if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) {
      return 'operator';
    }

    // everything else is an error
    return 'error';
  }

  function tokenString(stream, state) {
    var next, end = false, escaped = false;
    while ((next = stream.next()) != null) {
      if (next === '"' && !escaped) {
        end = true;
        break;
      }
      escaped = !escaped && next === '\\';
    }
    if (end && !escaped) {
      state.tokenize = tokenBase;
    }
    return 'string';
  };

  function tokenComment(stream, state) {
    var prev, next;
    while((next = stream.next()) != null) {
      if (prev === '*' && next === '/') {
        state.tokenize = tokenBase;
        break;
      }
      prev = next;
    }
    return 'comment';
  }

  function currentScope(state) {
    var scope = null;
    if (state.scopes.length > 0)
      scope = state.scopes[state.scopes.length - 1];
    return scope;
  }

  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        scopes: []
      };
    },
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    },
    indent: function(state, textAfter) {
      if (state.tokenize !== tokenBase && state.tokenize !== null)
        return CodeMirror.Pass;

      var delta = 0;
      if (textAfter === ']' || textAfter === '];' ||
          textAfter === '}' || textAfter === '};' ||
          textAfter === ');')
        delta = -1;

      return (state.scopes.length + delta) * _config.indentUnit;
    },
    electricChars: "{}[]();",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

CodeMirror.defineMIME('text/x-yacas', {
  name: 'yacas'
});

});
lib/codemirror/mode/yacas/index.html000064400000004200147361034410013477 0ustar00<!doctype html>

<title>CodeMirror: yacas mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel=stylesheet href=../../lib/codemirror.css>
<script src=../../lib/codemirror.js></script>
<script src=../../addon/edit/matchbrackets.js></script>
<script src=yacas.js></script>
<style type=text/css>
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">yacas</a>
  </ul>
</div>

<article>
<h2>yacas mode</h2>


<textarea id="yacasCode">
// example yacas code
Graph(edges_IsList) <-- [
    Local(v, e, f, t);

    vertices := {};

    ForEach (e, edges) [
        If (IsList(e), e := Head(e));
        {f, t} := Tail(Listify(e));

        DestructiveAppend(vertices, f);
        DestructiveAppend(vertices, t);
    ];

    Graph(RemoveDuplicates(vertices), edges);
];

10 # IsGraph(Graph(vertices_IsList, edges_IsList)) <-- True;
20 # IsGraph(_x) <-- False;

Edges(Graph(vertices_IsList, edges_IsList)) <-- edges;
Vertices(Graph(vertices_IsList, edges_IsList)) <-- vertices;

AdjacencyList(g_IsGraph) <-- [
    Local(l, vertices, edges, e, op, f, t);

    l := Association'Create();

    vertices := Vertices(g);
    ForEach (v, vertices)
        Association'Set(l, v, {});

    edges := Edges(g);

    ForEach(e, edges) [
        If (IsList(e), e := Head(e));
        {op, f, t} := Listify(e);
        DestructiveAppend(Association'Get(l, f), t);
        If (String(op) = "<->", DestructiveAppend(Association'Get(l, t), f));
    ];

    l;
];
</textarea>

<script>
  var yacasEditor = CodeMirror.fromTextArea(document.getElementById('yacasCode'), {
    mode: 'text/x-yacas',
    lineNumbers: true,
    matchBrackets: true
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-yacas</code> (yacas).</p>
</article>
lib/codemirror/mode/dylan/test.js000064400000005262147361034410013037 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "dylan");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT('comments',
     '[comment // This is a line comment]',
     '[comment /* This is a block comment */]',
     '[comment /* This is a multi]',
     '[comment line comment]',
     '[comment */]',
     '[comment /* And this is a /*]',
     '[comment /* nested */ comment */]');

  MT('unary_operators',
     '[operator -][variable a]',
     '[operator -] [variable a]',
     '[operator ~][variable a]',
     '[operator ~] [variable a]');

  MT('binary_operators',
     '[variable a] [operator +] [variable b]',
     '[variable a] [operator -] [variable b]',
     '[variable a] [operator *] [variable b]',
     '[variable a] [operator /] [variable b]',
     '[variable a] [operator ^] [variable b]',
     '[variable a] [operator =] [variable b]',
     '[variable a] [operator ==] [variable b]',
     '[variable a] [operator ~=] [variable b]',
     '[variable a] [operator ~==] [variable b]',
     '[variable a] [operator <] [variable b]',
     '[variable a] [operator <=] [variable b]',
     '[variable a] [operator >] [variable b]',
     '[variable a] [operator >=] [variable b]',
     '[variable a] [operator &] [variable b]',
     '[variable a] [operator |] [variable b]',
     '[variable a] [operator :=] [variable b]');

  MT('integers',
     '[number 1]',
     '[number 123]',
     '[number -123]',
     '[number +456]',
     '[number #b010]',
     '[number #o073]',
     '[number #xabcDEF123]');

  MT('floats',
     '[number .3]',
     '[number -1.]',
     '[number -2.335]',
     '[number +3.78d1]',
     '[number 3.78s-1]',
     '[number -3.32e+5]');

  MT('characters_and_strings',
     "[string 'a']",
     "[string '\\\\'']",
     '[string ""]',
     '[string "a"]',
     '[string "abc def"]',
     '[string "More escaped characters: \\\\\\\\ \\\\a \\\\b \\\\e \\\\f \\\\n \\\\r \\\\t \\\\0 ..."]');

  MT('brackets',
     '[bracket #[[]]]',
     '[bracket #()]',
     '[bracket #(][number 1][bracket )]',
     '[bracket [[][number 1][punctuation ,] [number 3][bracket ]]]',
     '[bracket ()]',
     '[bracket {}]',
     '[keyword if] [bracket (][variable foo][bracket )]',
     '[bracket (][number 1][bracket )]',
     '[bracket [[][number 1][bracket ]]]');

  MT('hash_words',
     '[punctuation ##]',
     '[atom #f]', '[atom #F]',
     '[atom #t]', '[atom #T]',
     '[atom #all-keys]',
     '[atom #include]',
     '[atom #key]',
     '[atom #next]',
     '[atom #rest]',
     '[string #"foo"]',
     '[error #invalid]');
})();
lib/codemirror/mode/dylan/dylan.js000064400000023256147361034410013172 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("dylan", function(_config) {
  // Words
  var words = {
    // Words that introduce unnamed definitions like "define interface"
    unnamedDefinition: ["interface"],

    // Words that introduce simple named definitions like "define library"
    namedDefinition: ["module", "library", "macro",
                      "C-struct", "C-union",
                      "C-function", "C-callable-wrapper"
                     ],

    // Words that introduce type definitions like "define class".
    // These are also parameterized like "define method" and are
    // appended to otherParameterizedDefinitionWords
    typeParameterizedDefinition: ["class", "C-subtype", "C-mapped-subtype"],

    // Words that introduce trickier definitions like "define method".
    // These require special definitions to be added to startExpressions
    otherParameterizedDefinition: ["method", "function",
                                   "C-variable", "C-address"
                                  ],

    // Words that introduce module constant definitions.
    // These must also be simple definitions and are
    // appended to otherSimpleDefinitionWords
    constantSimpleDefinition: ["constant"],

    // Words that introduce module variable definitions.
    // These must also be simple definitions and are
    // appended to otherSimpleDefinitionWords
    variableSimpleDefinition: ["variable"],

    // Other words that introduce simple definitions
    // (without implicit bodies).
    otherSimpleDefinition: ["generic", "domain",
                            "C-pointer-type",
                            "table"
                           ],

    // Words that begin statements with implicit bodies.
    statement: ["if", "block", "begin", "method", "case",
                "for", "select", "when", "unless", "until",
                "while", "iterate", "profiling", "dynamic-bind"
               ],

    // Patterns that act as separators in compound statements.
    // This may include any general pattern that must be indented
    // specially.
    separator: ["finally", "exception", "cleanup", "else",
                "elseif", "afterwards"
               ],

    // Keywords that do not require special indentation handling,
    // but which should be highlighted
    other: ["above", "below", "by", "from", "handler", "in",
            "instance", "let", "local", "otherwise", "slot",
            "subclass", "then", "to", "keyed-by", "virtual"
           ],

    // Condition signaling function calls
    signalingCalls: ["signal", "error", "cerror",
                     "break", "check-type", "abort"
                    ]
  };

  words["otherDefinition"] =
    words["unnamedDefinition"]
    .concat(words["namedDefinition"])
    .concat(words["otherParameterizedDefinition"]);

  words["definition"] =
    words["typeParameterizedDefinition"]
    .concat(words["otherDefinition"]);

  words["parameterizedDefinition"] =
    words["typeParameterizedDefinition"]
    .concat(words["otherParameterizedDefinition"]);

  words["simpleDefinition"] =
    words["constantSimpleDefinition"]
    .concat(words["variableSimpleDefinition"])
    .concat(words["otherSimpleDefinition"]);

  words["keyword"] =
    words["statement"]
    .concat(words["separator"])
    .concat(words["other"]);

  // Patterns
  var symbolPattern = "[-_a-zA-Z?!*@<>$%]+";
  var symbol = new RegExp("^" + symbolPattern);
  var patterns = {
    // Symbols with special syntax
    symbolKeyword: symbolPattern + ":",
    symbolClass: "<" + symbolPattern + ">",
    symbolGlobal: "\\*" + symbolPattern + "\\*",
    symbolConstant: "\\$" + symbolPattern
  };
  var patternStyles = {
    symbolKeyword: "atom",
    symbolClass: "tag",
    symbolGlobal: "variable-2",
    symbolConstant: "variable-3"
  };

  // Compile all patterns to regular expressions
  for (var patternName in patterns)
    if (patterns.hasOwnProperty(patternName))
      patterns[patternName] = new RegExp("^" + patterns[patternName]);

  // Names beginning "with-" and "without-" are commonly
  // used as statement macro
  patterns["keyword"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];

  var styles = {};
  styles["keyword"] = "keyword";
  styles["definition"] = "def";
  styles["simpleDefinition"] = "def";
  styles["signalingCalls"] = "builtin";

  // protected words lookup table
  var wordLookup = {};
  var styleLookup = {};

  [
    "keyword",
    "definition",
    "simpleDefinition",
    "signalingCalls"
  ].forEach(function(type) {
    words[type].forEach(function(word) {
      wordLookup[word] = type;
      styleLookup[word] = styles[type];
    });
  });


  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function tokenBase(stream, state) {
    // String
    var ch = stream.peek();
    if (ch == "'" || ch == '"') {
      stream.next();
      return chain(stream, state, tokenString(ch, "string"));
    }
    // Comment
    else if (ch == "/") {
      stream.next();
      if (stream.eat("*")) {
        return chain(stream, state, tokenComment);
      } else if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
      stream.backUp(1);
    }
    // Decimal
    else if (/[+\-\d\.]/.test(ch)) {
      if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) ||
          stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) ||
          stream.match(/^[+-]?\d+/)) {
        return "number";
      }
    }
    // Hash
    else if (ch == "#") {
      stream.next();
      // Symbol with string syntax
      ch = stream.peek();
      if (ch == '"') {
        stream.next();
        return chain(stream, state, tokenString('"', "string"));
      }
      // Binary number
      else if (ch == "b") {
        stream.next();
        stream.eatWhile(/[01]/);
        return "number";
      }
      // Hex number
      else if (ch == "x") {
        stream.next();
        stream.eatWhile(/[\da-f]/i);
        return "number";
      }
      // Octal number
      else if (ch == "o") {
        stream.next();
        stream.eatWhile(/[0-7]/);
        return "number";
      }
      // Token concatenation in macros
      else if (ch == '#') {
        stream.next();
        return "punctuation";
      }
      // Sequence literals
      else if ((ch == '[') || (ch == '(')) {
        stream.next();
        return "bracket";
      // Hash symbol
      } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) {
        return "atom";
      } else {
        stream.eatWhile(/[-a-zA-Z]/);
        return "error";
      }
    } else if (ch == "~") {
      stream.next();
      ch = stream.peek();
      if (ch == "=") {
        stream.next();
        ch = stream.peek();
        if (ch == "=") {
          stream.next();
          return "operator";
        }
        return "operator";
      }
      return "operator";
    } else if (ch == ":") {
      stream.next();
      ch = stream.peek();
      if (ch == "=") {
        stream.next();
        return "operator";
      } else if (ch == ":") {
        stream.next();
        return "punctuation";
      }
    } else if ("[](){}".indexOf(ch) != -1) {
      stream.next();
      return "bracket";
    } else if (".,".indexOf(ch) != -1) {
      stream.next();
      return "punctuation";
    } else if (stream.match("end")) {
      return "keyword";
    }
    for (var name in patterns) {
      if (patterns.hasOwnProperty(name)) {
        var pattern = patterns[name];
        if ((pattern instanceof Array && pattern.some(function(p) {
          return stream.match(p);
        })) || stream.match(pattern))
          return patternStyles[name];
      }
    }
    if (/[+\-*\/^=<>&|]/.test(ch)) {
      stream.next();
      return "operator";
    }
    if (stream.match("define")) {
      return "def";
    } else {
      stream.eatWhile(/[\w\-]/);
      // Keyword
      if (wordLookup[stream.current()]) {
        return styleLookup[stream.current()];
      } else if (stream.current().match(symbol)) {
        return "variable";
      } else {
        stream.next();
        return "variable-2";
      }
    }
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
    while ((ch = stream.next())) {
      if (ch == "/" && maybeEnd) {
        if (nestedCount > 0) {
          nestedCount--;
        } else {
          state.tokenize = tokenBase;
          break;
        }
      } else if (ch == "*" && maybeNested) {
        nestedCount++;
      }
      maybeEnd = (ch == "*");
      maybeNested = (ch == "/");
    }
    return "comment";
  }

  function tokenString(quote, style) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true;
          break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped) {
        state.tokenize = tokenBase;
      }
      return style;
    };
  }

  // Interface
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        currentIndent: 0
      };
    },
    token: function(stream, state) {
      if (stream.eatSpace())
        return null;
      var style = state.tokenize(stream, state);
      return style;
    },
    blockCommentStart: "/*",
    blockCommentEnd: "*/"
  };
});

CodeMirror.defineMIME("text/x-dylan", "dylan");

});
lib/codemirror/mode/dylan/index.html000064400000031350147361034410013514 0ustar00<!doctype html>

<title>CodeMirror: Dylan mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="../../addon/comment/continuecomment.js"></script>
<script src="../../addon/comment/comment.js"></script>
<script src="dylan.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Dylan</a>
  </ul>
</div>

<article>
<h2>Dylan mode</h2>


<div><textarea id="code" name="code">
Module:       locators-internals
Synopsis:     Abstract modeling of locations
Author:       Andy Armstrong
Copyright:    Original Code is Copyright (c) 1995-2004 Functional Objects, Inc.
              All rights reserved.
License:      See License.txt in this distribution for details.
Warranty:     Distributed WITHOUT WARRANTY OF ANY KIND

define open generic locator-server
    (locator :: <locator>) => (server :: false-or(<server-locator>));
define open generic locator-host
    (locator :: <locator>) => (host :: false-or(<string>));
define open generic locator-volume
    (locator :: <locator>) => (volume :: false-or(<string>));
define open generic locator-directory
    (locator :: <locator>) => (directory :: false-or(<directory-locator>));
define open generic locator-relative?
    (locator :: <locator>) => (relative? :: <boolean>);
define open generic locator-path
    (locator :: <locator>) => (path :: <sequence>);
define open generic locator-base
    (locator :: <locator>) => (base :: false-or(<string>));
define open generic locator-extension
    (locator :: <locator>) => (extension :: false-or(<string>));

/// Locator classes

define open abstract class <directory-locator> (<physical-locator>)
end class <directory-locator>;

define open abstract class <file-locator> (<physical-locator>)
end class <file-locator>;

define method as
    (class == <directory-locator>, string :: <string>)
 => (locator :: <directory-locator>)
  as(<native-directory-locator>, string)
end method as;

define method make
    (class == <directory-locator>,
     #key server :: false-or(<server-locator>) = #f,
          path :: <sequence> = #[],
          relative? :: <boolean> = #f,
          name :: false-or(<string>) = #f)
 => (locator :: <directory-locator>)
  make(<native-directory-locator>,
       server:    server,
       path:      path,
       relative?: relative?,
       name:      name)
end method make;

define method as
    (class == <file-locator>, string :: <string>)
 => (locator :: <file-locator>)
  as(<native-file-locator>, string)
end method as;

define method make
    (class == <file-locator>,
     #key directory :: false-or(<directory-locator>) = #f,
          base :: false-or(<string>) = #f,
          extension :: false-or(<string>) = #f,
          name :: false-or(<string>) = #f)
 => (locator :: <file-locator>)
  make(<native-file-locator>,
       directory: directory,
       base:      base,
       extension: extension,
       name:      name)
end method make;

/// Locator coercion

//---*** andrewa: This caching scheme doesn't work yet, so disable it.
define constant $cache-locators?        = #f;
define constant $cache-locator-strings? = #f;

define constant $locator-to-string-cache = make(<object-table>, weak: #"key");
define constant $string-to-locator-cache = make(<string-table>, weak: #"value");

define open generic locator-as-string
    (class :: subclass(<string>), locator :: <locator>)
 => (string :: <string>);

define open generic string-as-locator
    (class :: subclass(<locator>), string :: <string>)
 => (locator :: <locator>);

define sealed sideways method as
    (class :: subclass(<string>), locator :: <locator>)
 => (string :: <string>)
  let string = element($locator-to-string-cache, locator, default: #f);
  if (string)
    as(class, string)
  else
    let string = locator-as-string(class, locator);
    if ($cache-locator-strings?)
      element($locator-to-string-cache, locator) := string;
    else
      string
    end
  end
end method as;

define sealed sideways method as
    (class :: subclass(<locator>), string :: <string>)
 => (locator :: <locator>)
  let locator = element($string-to-locator-cache, string, default: #f);
  if (instance?(locator, class))
    locator
  else
    let locator = string-as-locator(class, string);
    if ($cache-locators?)
      element($string-to-locator-cache, string) := locator;
    else
      locator
    end
  end
end method as;

/// Locator conditions

define class <locator-error> (<format-string-condition>, <error>)
end class <locator-error>;

define function locator-error
    (format-string :: <string>, #rest format-arguments)
  error(make(<locator-error>, 
             format-string:    format-string,
             format-arguments: format-arguments))
end function locator-error;

/// Useful locator protocols

define open generic locator-test
    (locator :: <directory-locator>) => (test :: <function>);

define method locator-test
    (locator :: <directory-locator>) => (test :: <function>)
  \=
end method locator-test;

define open generic locator-might-have-links?
    (locator :: <directory-locator>) => (links? :: <boolean>);

define method locator-might-have-links?
    (locator :: <directory-locator>) => (links? :: singleton(#f))
  #f
end method locator-might-have-links?;

define method locator-relative?
    (locator :: <file-locator>) => (relative? :: <boolean>)
  let directory = locator.locator-directory;
  ~directory | directory.locator-relative?
end method locator-relative?;

define method current-directory-locator?
    (locator :: <directory-locator>) => (current-directory? :: <boolean>)
  locator.locator-relative?
    & locator.locator-path = #[#"self"]
end method current-directory-locator?;

define method locator-directory
    (locator :: <directory-locator>) => (parent :: false-or(<directory-locator>))
  let path = locator.locator-path;
  unless (empty?(path))
    make(object-class(locator),
         server:    locator.locator-server,
         path:      copy-sequence(path, end: path.size - 1),
         relative?: locator.locator-relative?)
  end
end method locator-directory;

/// Simplify locator

define open generic simplify-locator
    (locator :: <physical-locator>)
 => (simplified-locator :: <physical-locator>);

define method simplify-locator
    (locator :: <directory-locator>)
 => (simplified-locator :: <directory-locator>)
  let path = locator.locator-path;
  let relative? = locator.locator-relative?;
  let resolve-parent? = ~locator.locator-might-have-links?;
  let simplified-path
    = simplify-path(path, 
                    resolve-parent?: resolve-parent?,
                    relative?: relative?);
  if (path ~= simplified-path)
    make(object-class(locator),
         server:    locator.locator-server,
         path:      simplified-path,
         relative?: locator.locator-relative?)
  else
    locator
  end
end method simplify-locator;

define method simplify-locator
    (locator :: <file-locator>) => (simplified-locator :: <file-locator>)
  let directory = locator.locator-directory;
  let simplified-directory = directory & simplify-locator(directory);
  if (directory ~= simplified-directory)
    make(object-class(locator),
         directory: simplified-directory,
         base:      locator.locator-base,
         extension: locator.locator-extension)
  else
    locator
  end
end method simplify-locator;

/// Subdirectory locator

define open generic subdirectory-locator
    (locator :: <directory-locator>, #rest sub-path)
 => (subdirectory :: <directory-locator>);

define method subdirectory-locator
    (locator :: <directory-locator>, #rest sub-path)
 => (subdirectory :: <directory-locator>)
  let old-path = locator.locator-path;
  let new-path = concatenate-as(<simple-object-vector>, old-path, sub-path);
  make(object-class(locator),
       server:    locator.locator-server,
       path:      new-path,
       relative?: locator.locator-relative?)
end method subdirectory-locator;

/// Relative locator

define open generic relative-locator
    (locator :: <physical-locator>, from-locator :: <physical-locator>)
 => (relative-locator :: <physical-locator>);

define method relative-locator
    (locator :: <directory-locator>, from-locator :: <directory-locator>)
 => (relative-locator :: <directory-locator>)
  let path = locator.locator-path;
  let from-path = from-locator.locator-path;
  case
    ~locator.locator-relative? & from-locator.locator-relative? =>
      locator-error
        ("Cannot find relative path of absolute locator %= from relative locator %=",
         locator, from-locator);
    locator.locator-server ~= from-locator.locator-server =>
      locator;
    path = from-path =>
      make(object-class(locator),
           path: vector(#"self"),
           relative?: #t);
    otherwise =>
      make(object-class(locator),
           path: relative-path(path, from-path, test: locator.locator-test),
           relative?: #t);
  end
end method relative-locator;

define method relative-locator
    (locator :: <file-locator>, from-directory :: <directory-locator>)
 => (relative-locator :: <file-locator>)
  let directory = locator.locator-directory;
  let relative-directory = directory & relative-locator(directory, from-directory);
  if (relative-directory ~= directory)
    simplify-locator
      (make(object-class(locator),
            directory: relative-directory,
            base:      locator.locator-base,
            extension: locator.locator-extension))
  else
    locator
  end
end method relative-locator;

define method relative-locator
    (locator :: <physical-locator>, from-locator :: <file-locator>)
 => (relative-locator :: <physical-locator>)
  let from-directory = from-locator.locator-directory;
  case
    from-directory =>
      relative-locator(locator, from-directory);
    ~locator.locator-relative? =>
      locator-error
        ("Cannot find relative path of absolute locator %= from relative locator %=",
         locator, from-locator);
    otherwise =>
      locator;
  end
end method relative-locator;

/// Merge locators

define open generic merge-locators
    (locator :: <physical-locator>, from-locator :: <physical-locator>)
 => (merged-locator :: <physical-locator>);

/// Merge locators

define method merge-locators
    (locator :: <directory-locator>, from-locator :: <directory-locator>)
 => (merged-locator :: <directory-locator>)
  if (locator.locator-relative?)
    let path = concatenate(from-locator.locator-path, locator.locator-path);
    simplify-locator
      (make(object-class(locator),
            server:    from-locator.locator-server,
            path:      path,
            relative?: from-locator.locator-relative?))
  else
    locator
  end
end method merge-locators;

define method merge-locators
    (locator :: <file-locator>, from-locator :: <directory-locator>)
 => (merged-locator :: <file-locator>)
  let directory = locator.locator-directory;
  let merged-directory 
    = if (directory)
        merge-locators(directory, from-locator)
      else
        simplify-locator(from-locator)
      end;
  if (merged-directory ~= directory)
    make(object-class(locator),
         directory: merged-directory,
         base:      locator.locator-base,
         extension: locator.locator-extension)
  else
    locator
  end
end method merge-locators;

define method merge-locators
    (locator :: <physical-locator>, from-locator :: <file-locator>)
 => (merged-locator :: <physical-locator>)
  let from-directory = from-locator.locator-directory;
  if (from-directory)
    merge-locators(locator, from-directory)
  else
    locator
  end
end method merge-locators;

/// Locator protocols

define sideways method supports-open-locator?
    (locator :: <file-locator>) => (openable? :: <boolean>)
  ~locator.locator-relative?
end method supports-open-locator?;

define sideways method open-locator
    (locator :: <file-locator>, #rest keywords, #key, #all-keys)
 => (stream :: <stream>)
  apply(open-file-stream, locator, keywords)
end method open-locator;
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/x-dylan",
        lineNumbers: true,
        matchBrackets: true,
        continueComments: "Enter",
        extraKeys: {"Ctrl-Q": "toggleComment"},
        tabMode: "indent",
        indentUnit: 2
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-dylan</code>.</p>
</article>
lib/codemirror/mode/clike/test.js000064400000003617147361034410013021 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-c");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("indent",
     "[variable-3 void] [def foo]([variable-3 void*] [variable a], [variable-3 int] [variable b]) {",
     "  [variable-3 int] [variable c] [operator =] [variable b] [operator +]",
     "    [number 1];",
     "  [keyword return] [operator *][variable a];",
     "}");

  MT("indent_switch",
     "[keyword switch] ([variable x]) {",
     "  [keyword case] [number 10]:",
     "    [keyword return] [number 20];",
     "  [keyword default]:",
     "    [variable printf]([string \"foo %c\"], [variable x]);",
     "}");

  MT("def",
     "[variable-3 void] [def foo]() {}",
     "[keyword struct] [def bar]{}",
     "[variable-3 int] [variable-3 *][def baz]() {}");

  MT("def_new_line",
     "::[variable std]::[variable SomeTerribleType][operator <][variable T][operator >]",
     "[def SomeLongMethodNameThatDoesntFitIntoOneLine]([keyword const] [variable MyType][operator &] [variable param]) {}")

  MT("double_block",
     "[keyword for] (;;)",
     "  [keyword for] (;;)",
     "    [variable x][operator ++];",
     "[keyword return];");

  MT("preprocessor",
     "[meta #define FOO 3]",
     "[variable-3 int] [variable foo];",
     "[meta #define BAR\\]",
     "[meta 4]",
     "[variable-3 unsigned] [variable-3 int] [variable bar] [operator =] [number 8];",
     "[meta #include <baz> ][comment // comment]")


  var mode_cpp = CodeMirror.getMode({indentUnit: 2}, "text/x-c++src");
  function MTCPP(name) { test.mode(name, mode_cpp, Array.prototype.slice.call(arguments, 1)); }

  MTCPP("cpp14_literal",
    "[number 10'000];",
    "[number 0b10'000];",
    "[number 0x10'000];",
    "[string '100000'];");
})();
lib/codemirror/mode/clike/clike.js000064400000074016147361034410013132 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function Context(indented, column, type, info, align, prev) {
  this.indented = indented;
  this.column = column;
  this.type = type;
  this.info = info;
  this.align = align;
  this.prev = prev;
}
function pushContext(state, col, type, info) {
  var indent = state.indented;
  if (state.context && state.context.type != "statement" && type != "statement")
    indent = state.context.indented;
  return state.context = new Context(indent, col, type, info, null, state.context);
}
function popContext(state) {
  var t = state.context.type;
  if (t == ")" || t == "]" || t == "}")
    state.indented = state.context.indented;
  return state.context = state.context.prev;
}

function typeBefore(stream, state, pos) {
  if (state.prevToken == "variable" || state.prevToken == "variable-3") return true;
  if (/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(stream.string.slice(0, pos))) return true;
  if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true;
}

function isTopScope(context) {
  for (;;) {
    if (!context || context.type == "top") return true;
    if (context.type == "}" && context.prev.info != "namespace") return false;
    context = context.prev;
  }
}

CodeMirror.defineMode("clike", function(config, parserConfig) {
  var indentUnit = config.indentUnit,
      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,
      dontAlignCalls = parserConfig.dontAlignCalls,
      keywords = parserConfig.keywords || {},
      types = parserConfig.types || {},
      builtin = parserConfig.builtin || {},
      blockKeywords = parserConfig.blockKeywords || {},
      defKeywords = parserConfig.defKeywords || {},
      atoms = parserConfig.atoms || {},
      hooks = parserConfig.hooks || {},
      multiLineStrings = parserConfig.multiLineStrings,
      indentStatements = parserConfig.indentStatements !== false,
      indentSwitch = parserConfig.indentSwitch !== false,
      namespaceSeparator = parserConfig.namespaceSeparator,
      isPunctuationChar = parserConfig.isPunctuationChar || /[\[\]{}\(\),;\:\.]/,
      numberStart = parserConfig.numberStart || /[\d\.]/,
      number = parserConfig.number || /^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,
      isOperatorChar = parserConfig.isOperatorChar || /[+\-*&%=<>!?|\/]/,
      endStatement = parserConfig.endStatement || /^[;:,]$/;

  var curPunc, isDefKeyword;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (isPunctuationChar.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (numberStart.test(ch)) {
      stream.backUp(1)
      if (stream.match(number)) return "number"
      stream.next()
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      while (!stream.match(/^\/[\/*]/, false) && stream.eat(isOperatorChar)) {}
      return "operator";
    }
    stream.eatWhile(/[\w\$_\xa1-\uffff]/);
    if (namespaceSeparator) while (stream.match(namespaceSeparator))
      stream.eatWhile(/[\w\$_\xa1-\uffff]/);

    var cur = stream.current();
    if (contains(keywords, cur)) {
      if (contains(blockKeywords, cur)) curPunc = "newstatement";
      if (contains(defKeywords, cur)) isDefKeyword = true;
      return "keyword";
    }
    if (contains(types, cur)) return "variable-3";
    if (contains(builtin, cur)) {
      if (contains(blockKeywords, cur)) curPunc = "newstatement";
      return "builtin";
    }
    if (contains(atoms, cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = null;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function maybeEOL(stream, state) {
    if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context))
      state.typeAtEndOfLine = typeBefore(stream, state, stream.pos)
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0, "top", null, false),
        indented: 0,
        startOfLine: true,
        prevToken: null
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) { maybeEOL(stream, state); return null; }
      curPunc = isDefKeyword = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return style;
      if (ctx.align == null) ctx.align = true;

      if (endStatement.test(curPunc)) while (state.context.type == "statement") popContext(state);
      else if (curPunc == "{") pushContext(state, stream.column(), "}");
      else if (curPunc == "[") pushContext(state, stream.column(), "]");
      else if (curPunc == "(") pushContext(state, stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (indentStatements &&
               (((ctx.type == "}" || ctx.type == "top") && curPunc != ";") ||
                (ctx.type == "statement" && curPunc == "newstatement"))) {
        pushContext(state, stream.column(), "statement", stream.current());
      }

      if (style == "variable" &&
          ((state.prevToken == "def" ||
            (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) &&
             isTopScope(state.context) && stream.match(/^\s*\(/, false)))))
        style = "def";

      if (hooks.token) {
        var result = hooks.token(stream, state, style);
        if (result !== undefined) style = result;
      }

      if (style == "def" && parserConfig.styleDefs === false) style = "variable";

      state.startOfLine = false;
      state.prevToken = isDefKeyword ? "def" : style || curPunc;
      maybeEOL(stream, state);
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass;
      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
      if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev;
      if (parserConfig.dontIndentStatements)
        while (ctx.type == "statement" && parserConfig.dontIndentStatements.test(ctx.info))
          ctx = ctx.prev
      if (hooks.indent) {
        var hook = hooks.indent(state, ctx, textAfter);
        if (typeof hook == "number") return hook
      }
      var closing = firstChar == ctx.type;
      var switchBlock = ctx.prev && ctx.prev.info == "switch";
      if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) {
        while (ctx.type != "top" && ctx.type != "}") ctx = ctx.prev
        return ctx.indented
      }
      if (ctx.type == "statement")
        return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit);
      if (ctx.align && (!dontAlignCalls || ctx.type != ")"))
        return ctx.column + (closing ? 0 : 1);
      if (ctx.type == ")" && !closing)
        return ctx.indented + statementIndentUnit;

      return ctx.indented + (closing ? 0 : indentUnit) +
        (!closing && switchBlock && !/^(?:case|default)\b/.test(textAfter) ? indentUnit : 0);
    },

    electricInput: indentSwitch ? /^\s*(?:case .*?:|default:|\{\}?|\})$/ : /^\s*[{}]$/,
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//",
    fold: "brace"
  };
});

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  function contains(words, word) {
    if (typeof words === "function") {
      return words(word);
    } else {
      return words.propertyIsEnumerable(word);
    }
  }
  var cKeywords = "auto if break case register continue return default do sizeof " +
    "static else struct switch extern typedef union for goto while enum const volatile";
  var cTypes = "int long char short double float unsigned signed void size_t ptrdiff_t";

  function cppHook(stream, state) {
    if (!state.startOfLine) return false
    for (var ch, next = null; ch = stream.peek();) {
      if (ch == "\\" && stream.match(/^.$/)) {
        next = cppHook
        break
      } else if (ch == "/" && stream.match(/^\/[\/\*]/, false)) {
        break
      }
      stream.next()
    }
    state.tokenize = next
    return "meta"
  }

  function pointerHook(_stream, state) {
    if (state.prevToken == "variable-3") return "variable-3";
    return false;
  }

  function cpp14Literal(stream) {
    stream.eatWhile(/[\w\.']/);
    return "number";
  }

  function cpp11StringHook(stream, state) {
    stream.backUp(1);
    // Raw strings.
    if (stream.match(/(R|u8R|uR|UR|LR)/)) {
      var match = stream.match(/"([^\s\\()]{0,16})\(/);
      if (!match) {
        return false;
      }
      state.cpp11RawStringDelim = match[1];
      state.tokenize = tokenRawString;
      return tokenRawString(stream, state);
    }
    // Unicode strings/chars.
    if (stream.match(/(u8|u|U|L)/)) {
      if (stream.match(/["']/, /* eat */ false)) {
        return "string";
      }
      return false;
    }
    // Ignore this hook.
    stream.next();
    return false;
  }

  function cppLooksLikeConstructor(word) {
    var lastTwo = /(\w+)::(\w+)$/.exec(word);
    return lastTwo && lastTwo[1] == lastTwo[2];
  }

  // C#-style strings where "" escapes a quote.
  function tokenAtString(stream, state) {
    var next;
    while ((next = stream.next()) != null) {
      if (next == '"' && !stream.eat('"')) {
        state.tokenize = null;
        break;
      }
    }
    return "string";
  }

  // C++11 raw string literal is <prefix>"<delim>( anything )<delim>", where
  // <delim> can be a string up to 16 characters long.
  function tokenRawString(stream, state) {
    // Escape characters that have special regex meanings.
    var delim = state.cpp11RawStringDelim.replace(/[^\w\s]/g, '\\$&');
    var match = stream.match(new RegExp(".*?\\)" + delim + '"'));
    if (match)
      state.tokenize = null;
    else
      stream.skipToEnd();
    return "string";
  }

  function def(mimes, mode) {
    if (typeof mimes == "string") mimes = [mimes];
    var words = [];
    function add(obj) {
      if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))
        words.push(prop);
    }
    add(mode.keywords);
    add(mode.types);
    add(mode.builtin);
    add(mode.atoms);
    if (words.length) {
      mode.helperType = mimes[0];
      CodeMirror.registerHelper("hintWords", mimes[0], words);
    }

    for (var i = 0; i < mimes.length; ++i)
      CodeMirror.defineMIME(mimes[i], mode);
  }

  def(["text/x-csrc", "text/x-c", "text/x-chdr"], {
    name: "clike",
    keywords: words(cKeywords),
    types: words(cTypes + " bool _Complex _Bool float_t double_t intptr_t intmax_t " +
                 "int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t " +
                 "uint32_t uint64_t"),
    blockKeywords: words("case do else for if switch while struct"),
    defKeywords: words("struct"),
    typeFirstDefinitions: true,
    atoms: words("null true false"),
    hooks: {"#": cppHook, "*": pointerHook},
    modeProps: {fold: ["brace", "include"]}
  });

  def(["text/x-c++src", "text/x-c++hdr"], {
    name: "clike",
    keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try explicit new " +
                    "static_cast typeid catch operator template typename class friend private " +
                    "this using const_cast inline public throw virtual delete mutable protected " +
                    "alignas alignof constexpr decltype nullptr noexcept thread_local final " +
                    "static_assert override"),
    types: words(cTypes + " bool wchar_t"),
    blockKeywords: words("catch class do else finally for if struct switch try while"),
    defKeywords: words("class namespace struct enum union"),
    typeFirstDefinitions: true,
    atoms: words("true false null"),
    dontIndentStatements: /^template$/,
    hooks: {
      "#": cppHook,
      "*": pointerHook,
      "u": cpp11StringHook,
      "U": cpp11StringHook,
      "L": cpp11StringHook,
      "R": cpp11StringHook,
      "0": cpp14Literal,
      "1": cpp14Literal,
      "2": cpp14Literal,
      "3": cpp14Literal,
      "4": cpp14Literal,
      "5": cpp14Literal,
      "6": cpp14Literal,
      "7": cpp14Literal,
      "8": cpp14Literal,
      "9": cpp14Literal,
      token: function(stream, state, style) {
        if (style == "variable" && stream.peek() == "(" &&
            (state.prevToken == ";" || state.prevToken == null ||
             state.prevToken == "}") &&
            cppLooksLikeConstructor(stream.current()))
          return "def";
      }
    },
    namespaceSeparator: "::",
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-java", {
    name: "clike",
    keywords: words("abstract assert break case catch class const continue default " +
                    "do else enum extends final finally float for goto if implements import " +
                    "instanceof interface native new package private protected public " +
                    "return static strictfp super switch synchronized this throw throws transient " +
                    "try volatile while"),
    types: words("byte short int long float double boolean char void Boolean Byte Character Double Float " +
                 "Integer Long Number Object Short String StringBuffer StringBuilder Void"),
    blockKeywords: words("catch class do else finally for if switch try while"),
    defKeywords: words("class interface package enum"),
    typeFirstDefinitions: true,
    atoms: words("true false null"),
    endStatement: /^[;:]$/,
    number: /^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      }
    },
    modeProps: {fold: ["brace", "import"]}
  });

  def("text/x-csharp", {
    name: "clike",
    keywords: words("abstract as async await base break case catch checked class const continue" +
                    " default delegate do else enum event explicit extern finally fixed for" +
                    " foreach goto if implicit in interface internal is lock namespace new" +
                    " operator out override params private protected public readonly ref return sealed" +
                    " sizeof stackalloc static struct switch this throw try typeof unchecked" +
                    " unsafe using virtual void volatile while add alias ascending descending dynamic from get" +
                    " global group into join let orderby partial remove select set value var yield"),
    types: words("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func" +
                 " Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32" +
                 " UInt64 bool byte char decimal double short int long object"  +
                 " sbyte float string ushort uint ulong"),
    blockKeywords: words("catch class do else finally for foreach if struct switch try while"),
    defKeywords: words("class interface namespace struct var"),
    typeFirstDefinitions: true,
    atoms: words("true false null"),
    hooks: {
      "@": function(stream, state) {
        if (stream.eat('"')) {
          state.tokenize = tokenAtString;
          return tokenAtString(stream, state);
        }
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      }
    }
  });

  function tokenTripleString(stream, state) {
    var escaped = false;
    while (!stream.eol()) {
      if (!escaped && stream.match('"""')) {
        state.tokenize = null;
        break;
      }
      escaped = stream.next() == "\\" && !escaped;
    }
    return "string";
  }

  def("text/x-scala", {
    name: "clike",
    keywords: words(

      /* scala */
      "abstract case catch class def do else extends final finally for forSome if " +
      "implicit import lazy match new null object override package private protected return " +
      "sealed super this throw trait try type val var while with yield _ : = => <- <: " +
      "<% >: # @ " +

      /* package scala */
      "assert assume require print println printf readLine readBoolean readByte readShort " +
      "readChar readInt readLong readFloat readDouble " +

      ":: #:: "
    ),
    types: words(
      "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " +
      "Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable " +
      "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " +
      "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " +
      "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector " +

      /* package java.lang */
      "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " +
      "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " +
      "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " +
      "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"
    ),
    multiLineStrings: true,
    blockKeywords: words("catch class do else finally for forSome if match switch try while"),
    defKeywords: words("class def object package trait type val var"),
    atoms: words("true false null"),
    indentStatements: false,
    indentSwitch: false,
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      },
      '"': function(stream, state) {
        if (!stream.match('""')) return false;
        state.tokenize = tokenTripleString;
        return state.tokenize(stream, state);
      },
      "'": function(stream) {
        stream.eatWhile(/[\w\$_\xa1-\uffff]/);
        return "atom";
      },
      "=": function(stream, state) {
        var cx = state.context
        if (cx.type == "}" && cx.align && stream.eat(">")) {
          state.context = new Context(cx.indented, cx.column, cx.type, cx.info, null, cx.prev)
          return "operator"
        } else {
          return false
        }
      }
    },
    modeProps: {closeBrackets: {triples: '"'}}
  });

  function tokenKotlinString(tripleString){
    return function (stream, state) {
      var escaped = false, next, end = false;
      while (!stream.eol()) {
        if (!tripleString && !escaped && stream.match('"') ) {end = true; break;}
        if (tripleString && stream.match('"""')) {end = true; break;}
        next = stream.next();
        if(!escaped && next == "$" && stream.match('{'))
          stream.skipTo("}");
        escaped = !escaped && next == "\\" && !tripleString;
      }
      if (end || !tripleString)
        state.tokenize = null;
      return "string";
    }
  }

  def("text/x-kotlin", {
    name: "clike",
    keywords: words(
      /*keywords*/
      "package as typealias class interface this super val " +
      "var fun for is in This throw return " +
      "break continue object if else while do try when !in !is as? " +

      /*soft keywords*/
      "file import where by get set abstract enum open inner override private public internal " +
      "protected catch finally out final vararg reified dynamic companion constructor init " +
      "sealed field property receiver param sparam lateinit data inline noinline tailrec " +
      "external annotation crossinline const operator infix"
    ),
    types: words(
      /* package java.lang */
      "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " +
      "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " +
      "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " +
      "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"
    ),
    intendSwitch: false,
    indentStatements: false,
    multiLineStrings: true,
    blockKeywords: words("catch class do else finally for if where try while enum"),
    defKeywords: words("class val var object package interface fun"),
    atoms: words("true false null this"),
    hooks: {
      '"': function(stream, state) {
        state.tokenize = tokenKotlinString(stream.match('""'));
        return state.tokenize(stream, state);
      }
    },
    modeProps: {closeBrackets: {triples: '"'}}
  });

  def(["x-shader/x-vertex", "x-shader/x-fragment"], {
    name: "clike",
    keywords: words("sampler1D sampler2D sampler3D samplerCube " +
                    "sampler1DShadow sampler2DShadow " +
                    "const attribute uniform varying " +
                    "break continue discard return " +
                    "for while do if else struct " +
                    "in out inout"),
    types: words("float int bool void " +
                 "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " +
                 "mat2 mat3 mat4"),
    blockKeywords: words("for while do if else struct"),
    builtin: words("radians degrees sin cos tan asin acos atan " +
                    "pow exp log exp2 sqrt inversesqrt " +
                    "abs sign floor ceil fract mod min max clamp mix step smoothstep " +
                    "length distance dot cross normalize ftransform faceforward " +
                    "reflect refract matrixCompMult " +
                    "lessThan lessThanEqual greaterThan greaterThanEqual " +
                    "equal notEqual any all not " +
                    "texture1D texture1DProj texture1DLod texture1DProjLod " +
                    "texture2D texture2DProj texture2DLod texture2DProjLod " +
                    "texture3D texture3DProj texture3DLod texture3DProjLod " +
                    "textureCube textureCubeLod " +
                    "shadow1D shadow2D shadow1DProj shadow2DProj " +
                    "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " +
                    "dFdx dFdy fwidth " +
                    "noise1 noise2 noise3 noise4"),
    atoms: words("true false " +
                "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " +
                "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " +
                "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " +
                "gl_FogCoord gl_PointCoord " +
                "gl_Position gl_PointSize gl_ClipVertex " +
                "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " +
                "gl_TexCoord gl_FogFragCoord " +
                "gl_FragCoord gl_FrontFacing " +
                "gl_FragData gl_FragDepth " +
                "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " +
                "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " +
                "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " +
                "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " +
                "gl_ProjectionMatrixInverseTranspose " +
                "gl_ModelViewProjectionMatrixInverseTranspose " +
                "gl_TextureMatrixInverseTranspose " +
                "gl_NormalScale gl_DepthRange gl_ClipPlane " +
                "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " +
                "gl_FrontLightModelProduct gl_BackLightModelProduct " +
                "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " +
                "gl_FogParameters " +
                "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " +
                "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " +
                "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " +
                "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " +
                "gl_MaxDrawBuffers"),
    indentSwitch: false,
    hooks: {"#": cppHook},
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-nesc", {
    name: "clike",
    keywords: words(cKeywords + "as atomic async call command component components configuration event generic " +
                    "implementation includes interface module new norace nx_struct nx_union post provides " +
                    "signal task uses abstract extends"),
    types: words(cTypes),
    blockKeywords: words("case do else for if switch while struct"),
    atoms: words("null true false"),
    hooks: {"#": cppHook},
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-objectivec", {
    name: "clike",
    keywords: words(cKeywords + "inline restrict _Bool _Complex _Imaginary BOOL Class bycopy byref id IMP in " +
                    "inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),
    types: words(cTypes),
    atoms: words("YES NO NULL NILL ON OFF true false"),
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$]/);
        return "keyword";
      },
      "#": cppHook,
      indent: function(_state, ctx, textAfter) {
        if (ctx.type == "statement" && /^@\w/.test(textAfter)) return ctx.indented
      }
    },
    modeProps: {fold: "brace"}
  });

  def("text/x-squirrel", {
    name: "clike",
    keywords: words("base break clone continue const default delete enum extends function in class" +
                    " foreach local resume return this throw typeof yield constructor instanceof static"),
    types: words(cTypes),
    blockKeywords: words("case catch class else for foreach if switch try while"),
    defKeywords: words("function local class"),
    typeFirstDefinitions: true,
    atoms: words("true false null"),
    hooks: {"#": cppHook},
    modeProps: {fold: ["brace", "include"]}
  });

  // Ceylon Strings need to deal with interpolation
  var stringTokenizer = null;
  function tokenCeylonString(type) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while (!stream.eol()) {
        if (!escaped && stream.match('"') &&
              (type == "single" || stream.match('""'))) {
          end = true;
          break;
        }
        if (!escaped && stream.match('``')) {
          stringTokenizer = tokenCeylonString(type);
          end = true;
          break;
        }
        next = stream.next();
        escaped = type == "single" && !escaped && next == "\\";
      }
      if (end)
          state.tokenize = null;
      return "string";
    }
  }

  def("text/x-ceylon", {
    name: "clike",
    keywords: words("abstracts alias assembly assert assign break case catch class continue dynamic else" +
                    " exists extends finally for function given if import in interface is let module new" +
                    " nonempty object of out outer package return satisfies super switch then this throw" +
                    " try value void while"),
    types: function(word) {
        // In Ceylon all identifiers that start with an uppercase are types
        var first = word.charAt(0);
        return (first === first.toUpperCase() && first !== first.toLowerCase());
    },
    blockKeywords: words("case catch class dynamic else finally for function if interface module new object switch try while"),
    defKeywords: words("class dynamic function interface module object package value"),
    builtin: words("abstract actual aliased annotation by default deprecated doc final formal late license" +
                   " native optional sealed see serializable shared suppressWarnings tagged throws variable"),
    isPunctuationChar: /[\[\]{}\(\),;\:\.`]/,
    isOperatorChar: /[+\-*&%=<>!?|^~:\/]/,
    numberStart: /[\d#$]/,
    number: /^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,
    multiLineStrings: true,
    typeFirstDefinitions: true,
    atoms: words("true false null larger smaller equal empty finished"),
    indentSwitch: false,
    styleDefs: false,
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      },
      '"': function(stream, state) {
          state.tokenize = tokenCeylonString(stream.match('""') ? "triple" : "single");
          return state.tokenize(stream, state);
        },
      '`': function(stream, state) {
          if (!stringTokenizer || !stream.match('`')) return false;
          state.tokenize = stringTokenizer;
          stringTokenizer = null;
          return state.tokenize(stream, state);
        },
      "'": function(stream) {
        stream.eatWhile(/[\w\$_\xa1-\uffff]/);
        return "atom";
      },
      token: function(_stream, state, style) {
          if ((style == "variable" || style == "variable-3") &&
              state.prevToken == ".") {
            return "variable-2";
          }
        }
    },
    modeProps: {
        fold: ["brace", "import"],
        closeBrackets: {triples: '"'}
    }
  });

});
lib/codemirror/mode/clike/index.html000064400000023571147361034410013502 0ustar00<!doctype html>

<title>CodeMirror: C-like mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
<script src="../../addon/hint/show-hint.js"></script>
<script src="clike.js"></script>
<style>.CodeMirror {border: 2px inset #dee;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">C-like</a>
  </ul>
</div>

<article>
<h2>C-like mode</h2>

<div><textarea id="c-code">
/* C demo code */

#include <zmq.h>
#include <pthread.h>
#include <semaphore.h>
#include <time.h>
#include <stdio.h>
#include <fcntl.h>
#include <malloc.h>

typedef struct {
  void* arg_socket;
  zmq_msg_t* arg_msg;
  char* arg_string;
  unsigned long arg_len;
  int arg_int, arg_command;

  int signal_fd;
  int pad;
  void* context;
  sem_t sem;
} acl_zmq_context;

#define p(X) (context->arg_##X)

void* zmq_thread(void* context_pointer) {
  acl_zmq_context* context = (acl_zmq_context*)context_pointer;
  char ok = 'K', err = 'X';
  int res;

  while (1) {
    while ((res = sem_wait(&amp;context->sem)) == EINTR);
    if (res) {write(context->signal_fd, &amp;err, 1); goto cleanup;}
    switch(p(command)) {
    case 0: goto cleanup;
    case 1: p(socket) = zmq_socket(context->context, p(int)); break;
    case 2: p(int) = zmq_close(p(socket)); break;
    case 3: p(int) = zmq_bind(p(socket), p(string)); break;
    case 4: p(int) = zmq_connect(p(socket), p(string)); break;
    case 5: p(int) = zmq_getsockopt(p(socket), p(int), (void*)p(string), &amp;p(len)); break;
    case 6: p(int) = zmq_setsockopt(p(socket), p(int), (void*)p(string), p(len)); break;
    case 7: p(int) = zmq_send(p(socket), p(msg), p(int)); break;
    case 8: p(int) = zmq_recv(p(socket), p(msg), p(int)); break;
    case 9: p(int) = zmq_poll(p(socket), p(int), p(len)); break;
    }
    p(command) = errno;
    write(context->signal_fd, &amp;ok, 1);
  }
 cleanup:
  close(context->signal_fd);
  free(context_pointer);
  return 0;
}

void* zmq_thread_init(void* zmq_context, int signal_fd) {
  acl_zmq_context* context = malloc(sizeof(acl_zmq_context));
  pthread_t thread;

  context->context = zmq_context;
  context->signal_fd = signal_fd;
  sem_init(&amp;context->sem, 1, 0);
  pthread_create(&amp;thread, 0, &amp;zmq_thread, context);
  pthread_detach(thread);
  return context;
}
</textarea></div>

<h2>C++ example</h2>

<div><textarea id="cpp-code">
#include <iostream>
#include "mystuff/util.h"

namespace {
enum Enum {
  VAL1, VAL2, VAL3
};

char32_t unicode_string = U"\U0010FFFF";
string raw_string = R"delim(anything
you
want)delim";

int Helper(const MyType& param) {
  return 0;
}
} // namespace

class ForwardDec;

template <class T, class V>
class Class : public BaseClass {
  const MyType<T, V> member_;

 public:
  const MyType<T, V>& Method() const {
    return member_;
  }

  void Method2(MyType<T, V>* value);
}

template <class T, class V>
void Class::Method2(MyType<T, V>* value) {
  std::out << 1 >> method();
  value->Method3(member_);
  member_ = value;
}
</textarea></div>

<h2>Objective-C example</h2>

<div><textarea id="objectivec-code">
/*
This is a longer comment
That spans two lines
*/

#import <Test/Test.h>
@implementation YourAppDelegate

// This is a one-line comment

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
  char myString[] = "This is a C character array";
  int test = 5;
  return YES;
}
</textarea></div>

<h2>Java example</h2>

<div><textarea id="java-code">
import com.demo.util.MyType;
import com.demo.util.MyInterface;

public enum Enum {
  VAL1, VAL2, VAL3
}

public class Class<T, V> implements MyInterface {
  public static final MyType<T, V> member;
  
  private class InnerClass {
    public int zero() {
      return 0;
    }
  }

  @Override
  public MyType method() {
    return member;
  }

  public void method2(MyType<T, V> value) {
    method();
    value.method3();
    member = value;
  }
}
</textarea></div>

<h2>Scala example</h2>

<div><textarea id="scala-code">
object FilterTest extends App {
  def filter(xs: List[Int], threshold: Int) = {
    def process(ys: List[Int]): List[Int] =
      if (ys.isEmpty) ys
      else if (ys.head < threshold) ys.head :: process(ys.tail)
      else process(ys.tail)
    process(xs)
  }
  println(filter(List(1, 9, 2, 8, 3, 7, 4), 5))
}
</textarea></div>

<h2>Kotlin mode</h2>

<div><textarea id="kotlin-code">
package org.wasabi.http

import java.util.concurrent.Executors
import java.net.InetSocketAddress
import org.wasabi.app.AppConfiguration
import io.netty.bootstrap.ServerBootstrap
import io.netty.channel.nio.NioEventLoopGroup
import io.netty.channel.socket.nio.NioServerSocketChannel
import org.wasabi.app.AppServer

public class HttpServer(private val appServer: AppServer) {

    val bootstrap: ServerBootstrap
    val primaryGroup: NioEventLoopGroup
    val workerGroup:  NioEventLoopGroup

    init {
        // Define worker groups
        primaryGroup = NioEventLoopGroup()
        workerGroup = NioEventLoopGroup()

        // Initialize bootstrap of server
        bootstrap = ServerBootstrap()

        bootstrap.group(primaryGroup, workerGroup)
        bootstrap.channel(javaClass<NioServerSocketChannel>())
        bootstrap.childHandler(NettyPipelineInitializer(appServer))
    }

    public fun start(wait: Boolean = true) {
        val channel = bootstrap.bind(appServer.configuration.port)?.sync()?.channel()

        if (wait) {
            channel?.closeFuture()?.sync()
        }
    }

    public fun stop() {
        // Shutdown all event loops
        primaryGroup.shutdownGracefully()
        workerGroup.shutdownGracefully()

        // Wait till all threads are terminated
        primaryGroup.terminationFuture().sync()
        workerGroup.terminationFuture().sync()
    }
}
</textarea></div>

<h2>Ceylon mode</h2>

<div><textarea id="ceylon-code">
"Produces the [[stream|Iterable]] that results from repeated
 application of the given [[function|next]] to the given
 [[first]] element of the stream, until the function first
 returns [[finished]]. If the given function never returns 
 `finished`, the resulting stream is infinite.

 For example:

     loop(0)(2.plus).takeWhile(10.largerThan)

 produces the stream `{ 0, 2, 4, 6, 8 }`."
tagged("Streams")
shared {Element+} loop&lt;Element&gt;(
        "The first element of the resulting stream."
        Element first)(
        "The function that produces the next element of the
         stream, given the current element. The function may
         return [[finished]] to indicate the end of the 
         stream."
        Element|Finished next(Element element))
    =&gt; let (start = first)
    object satisfies {Element+} {
        first =&gt; start;
        empty =&gt; false;
        function nextElement(Element element)
                =&gt; next(element);
        iterator()
                =&gt; object satisfies Iterator&lt;Element&gt; {
            variable Element|Finished current = start;
            shared actual Element|Finished next() {
                if (!is Finished result = current) {
                    current = nextElement(result);
                    return result;
                }
                else {
                    return finished;
                }
            }
        };
    };
</textarea></div>

    <script>
      var cEditor = CodeMirror.fromTextArea(document.getElementById("c-code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-csrc"
      });
      var cppEditor = CodeMirror.fromTextArea(document.getElementById("cpp-code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-c++src"
      });
      var javaEditor = CodeMirror.fromTextArea(document.getElementById("java-code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-java"
      });
      var objectivecEditor = CodeMirror.fromTextArea(document.getElementById("objectivec-code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-objectivec"
      });
      var scalaEditor = CodeMirror.fromTextArea(document.getElementById("scala-code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-scala"
      });
      var kotlinEditor = CodeMirror.fromTextArea(document.getElementById("kotlin-code"), {
          lineNumbers: true,
          matchBrackets: true,
          mode: "text/x-kotlin"
      });
      var ceylonEditor = CodeMirror.fromTextArea(document.getElementById("ceylon-code"), {
          lineNumbers: true,
          matchBrackets: true,
          mode: "text/x-ceylon"
      });
      var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;
      CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete";
    </script>

    <p>Simple mode that tries to handle C-like languages as well as it
    can. Takes two configuration parameters: <code>keywords</code>, an
    object whose property names are the keywords in the language,
    and <code>useCPP</code>, which determines whether C preprocessor
    directives are recognized.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-csrc</code>
    (C), <code>text/x-c++src</code> (C++), <code>text/x-java</code>
    (Java), <code>text/x-csharp</code> (C#),
    <code>text/x-objectivec</code> (Objective-C),
    <code>text/x-scala</code> (Scala), <code>text/x-vertex</code>
    <code>x-shader/x-fragment</code> (shader programs),
    <code>text/x-squirrel</code> (Squirrel) and
    <code>text/x-ceylon</code> (Ceylon)</p>
</article>
lib/codemirror/mode/clike/scala.html000064400000067546147361034410013470 0ustar00<!doctype html>

<title>CodeMirror: Scala mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/ambiance.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="clike.js"></script>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Scala</a>
  </ul>
</div>

<article>
<h2>Scala mode</h2>
<form>
<textarea id="code" name="code">

  /*                     __                                               *\
  **     ________ ___   / /  ___     Scala API                            **
  **    / __/ __// _ | / /  / _ |    (c) 2003-2011, LAMP/EPFL             **
  **  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
  ** /____/\___/_/ |_/____/_/ | |                                         **
  **                          |/                                          **
  \*                                                                      */

  package scala.collection

  import generic._
  import mutable.{ Builder, ListBuffer }
  import annotation.{tailrec, migration, bridge}
  import annotation.unchecked.{ uncheckedVariance => uV }
  import parallel.ParIterable

  /** A template trait for traversable collections of type `Traversable[A]`.
   *  
   *  $traversableInfo
   *  @define mutability
   *  @define traversableInfo
   *  This is a base trait of all kinds of $mutability Scala collections. It
   *  implements the behavior common to all collections, in terms of a method
   *  `foreach` with signature:
   * {{{
   *     def foreach[U](f: Elem => U): Unit
   * }}}
   *  Collection classes mixing in this trait provide a concrete 
   *  `foreach` method which traverses all the
   *  elements contained in the collection, applying a given function to each.
   *  They also need to provide a method `newBuilder`
   *  which creates a builder for collections of the same kind.
   *  
   *  A traversable class might or might not have two properties: strictness
   *  and orderedness. Neither is represented as a type.
   *  
   *  The instances of a strict collection class have all their elements
   *  computed before they can be used as values. By contrast, instances of
   *  a non-strict collection class may defer computation of some of their
   *  elements until after the instance is available as a value.
   *  A typical example of a non-strict collection class is a
   *  <a href="../immutable/Stream.html" target="ContentFrame">
   *  `scala.collection.immutable.Stream`</a>.
   *  A more general class of examples are `TraversableViews`.
   *  
   *  If a collection is an instance of an ordered collection class, traversing
   *  its elements with `foreach` will always visit elements in the
   *  same order, even for different runs of the program. If the class is not
   *  ordered, `foreach` can visit elements in different orders for
   *  different runs (but it will keep the same order in the same run).'
   * 
   *  A typical example of a collection class which is not ordered is a
   *  `HashMap` of objects. The traversal order for hash maps will
   *  depend on the hash codes of its elements, and these hash codes might
   *  differ from one run to the next. By contrast, a `LinkedHashMap`
   *  is ordered because it's `foreach` method visits elements in the
   *  order they were inserted into the `HashMap`.
   *
   *  @author Martin Odersky
   *  @version 2.8
   *  @since   2.8
   *  @tparam A    the element type of the collection
   *  @tparam Repr the type of the actual collection containing the elements.
   *
   *  @define Coll Traversable
   *  @define coll traversable collection
   */
  trait TraversableLike[+A, +Repr] extends HasNewBuilder[A, Repr] 
                                      with FilterMonadic[A, Repr]
                                      with TraversableOnce[A]
                                      with GenTraversableLike[A, Repr]
                                      with Parallelizable[A, ParIterable[A]]
  {
    self =>

    import Traversable.breaks._

    /** The type implementing this traversable */
    protected type Self = Repr

    /** The collection of type $coll underlying this `TraversableLike` object.
     *  By default this is implemented as the `TraversableLike` object itself,
     *  but this can be overridden.
     */
    def repr: Repr = this.asInstanceOf[Repr]

    /** The underlying collection seen as an instance of `$Coll`.
     *  By default this is implemented as the current collection object itself,
     *  but this can be overridden.
     */
    protected[this] def thisCollection: Traversable[A] = this.asInstanceOf[Traversable[A]]

    /** A conversion from collections of type `Repr` to `$Coll` objects.
     *  By default this is implemented as just a cast, but this can be overridden.
     */
    protected[this] def toCollection(repr: Repr): Traversable[A] = repr.asInstanceOf[Traversable[A]]

    /** Creates a new builder for this collection type.
     */
    protected[this] def newBuilder: Builder[A, Repr]

    protected[this] def parCombiner = ParIterable.newCombiner[A]

    /** Applies a function `f` to all elements of this $coll.
     *  
     *    Note: this method underlies the implementation of most other bulk operations.
     *    It's important to implement this method in an efficient way.
     *  
     *
     *  @param  f   the function that is applied for its side-effect to every element.
     *              The result of function `f` is discarded.
     *              
     *  @tparam  U  the type parameter describing the result of function `f`. 
     *              This result will always be ignored. Typically `U` is `Unit`,
     *              but this is not necessary.
     *
     *  @usecase def foreach(f: A => Unit): Unit
     */
    def foreach[U](f: A => U): Unit

    /** Tests whether this $coll is empty.
     *
     *  @return    `true` if the $coll contain no elements, `false` otherwise.
     */
    def isEmpty: Boolean = {
      var result = true
      breakable {
        for (x <- this) {
          result = false
          break
        }
      }
      result
    }

    /** Tests whether this $coll is known to have a finite size.
     *  All strict collections are known to have finite size. For a non-strict collection
     *  such as `Stream`, the predicate returns `true` if all elements have been computed.
     *  It returns `false` if the stream is not yet evaluated to the end.
     *
     *  Note: many collection methods will not work on collections of infinite sizes. 
     *
     *  @return  `true` if this collection is known to have finite size, `false` otherwise.
     */
    def hasDefiniteSize = true

    def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.seq.size)
      b ++= thisCollection
      b ++= that.seq
      b.result
    }

    @bridge
    def ++[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That =
      ++(that: GenTraversableOnce[B])(bf)

    /** Concatenates this $coll with the elements of a traversable collection.
     *  It differs from ++ in that the right operand determines the type of the
     *  resulting collection rather than the left one.
     * 
     *  @param that   the traversable to append.
     *  @tparam B     the element type of the returned collection. 
     *  @tparam That  $thatinfo
     *  @param bf     $bfinfo
     *  @return       a new collection of type `That` which contains all elements
     *                of this $coll followed by all elements of `that`.
     * 
     *  @usecase def ++:[B](that: TraversableOnce[B]): $Coll[B]
     *  
     *  @return       a new $coll which contains all elements of this $coll
     *                followed by all elements of `that`.
     */
    def ++:[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.size)
      b ++= that
      b ++= thisCollection
      b.result
    }

    /** This overload exists because: for the implementation of ++: we should reuse
     *  that of ++ because many collections override it with more efficient versions.
     *  Since TraversableOnce has no '++' method, we have to implement that directly,
     *  but Traversable and down can use the overload.
     */
    def ++:[B >: A, That](that: Traversable[B])(implicit bf: CanBuildFrom[Repr, B, That]): That =
      (that ++ seq)(breakOut)

    def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      b.sizeHint(this) 
      for (x <- this) b += f(x)
      b.result
    }

    def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      for (x <- this) b ++= f(x).seq
      b.result
    }

    /** Selects all elements of this $coll which satisfy a predicate.
     *
     *  @param p     the predicate used to test elements.
     *  @return      a new $coll consisting of all elements of this $coll that satisfy the given
     *               predicate `p`. The order of the elements is preserved.
     */
    def filter(p: A => Boolean): Repr = {
      val b = newBuilder
      for (x <- this) 
        if (p(x)) b += x
      b.result
    }

    /** Selects all elements of this $coll which do not satisfy a predicate.
     *
     *  @param p     the predicate used to test elements.
     *  @return      a new $coll consisting of all elements of this $coll that do not satisfy the given
     *               predicate `p`. The order of the elements is preserved.
     */
    def filterNot(p: A => Boolean): Repr = filter(!p(_))

    def collect[B, That](pf: PartialFunction[A, B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      for (x <- this) if (pf.isDefinedAt(x)) b += pf(x)
      b.result
    }

    /** Builds a new collection by applying an option-valued function to all
     *  elements of this $coll on which the function is defined.
     *
     *  @param f      the option-valued function which filters and maps the $coll.
     *  @tparam B     the element type of the returned collection.
     *  @tparam That  $thatinfo
     *  @param bf     $bfinfo
     *  @return       a new collection of type `That` resulting from applying the option-valued function
     *                `f` to each element and collecting all defined results.
     *                The order of the elements is preserved.
     *
     *  @usecase def filterMap[B](f: A => Option[B]): $Coll[B]
     *  
     *  @param pf     the partial function which filters and maps the $coll.
     *  @return       a new $coll resulting from applying the given option-valued function
     *                `f` to each element and collecting all defined results.
     *                The order of the elements is preserved.
    def filterMap[B, That](f: A => Option[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      for (x <- this) 
        f(x) match {
          case Some(y) => b += y
          case _ =>
        }
      b.result
    }
     */

    /** Partitions this $coll in two ${coll}s according to a predicate.
     *
     *  @param p the predicate on which to partition.
     *  @return  a pair of ${coll}s: the first $coll consists of all elements that 
     *           satisfy the predicate `p` and the second $coll consists of all elements
     *           that don't. The relative order of the elements in the resulting ${coll}s
     *           is the same as in the original $coll.
     */
    def partition(p: A => Boolean): (Repr, Repr) = {
      val l, r = newBuilder
      for (x <- this) (if (p(x)) l else r) += x
      (l.result, r.result)
    }

    def groupBy[K](f: A => K): immutable.Map[K, Repr] = {
      val m = mutable.Map.empty[K, Builder[A, Repr]]
      for (elem <- this) {
        val key = f(elem)
        val bldr = m.getOrElseUpdate(key, newBuilder)
        bldr += elem
      }
      val b = immutable.Map.newBuilder[K, Repr]
      for ((k, v) <- m)
        b += ((k, v.result))

      b.result
    }

    /** Tests whether a predicate holds for all elements of this $coll.
     *
     *  $mayNotTerminateInf
     *
     *  @param   p     the predicate used to test elements.
     *  @return        `true` if the given predicate `p` holds for all elements
     *                 of this $coll, otherwise `false`.
     */
    def forall(p: A => Boolean): Boolean = {
      var result = true
      breakable {
        for (x <- this)
          if (!p(x)) { result = false; break }
      }
      result
    }

    /** Tests whether a predicate holds for some of the elements of this $coll.
     *
     *  $mayNotTerminateInf
     *
     *  @param   p     the predicate used to test elements.
     *  @return        `true` if the given predicate `p` holds for some of the
     *                 elements of this $coll, otherwise `false`.
     */
    def exists(p: A => Boolean): Boolean = {
      var result = false
      breakable {
        for (x <- this)
          if (p(x)) { result = true; break }
      }
      result
    }

    /** Finds the first element of the $coll satisfying a predicate, if any.
     * 
     *  $mayNotTerminateInf
     *  $orderDependent
     *
     *  @param p    the predicate used to test elements.
     *  @return     an option value containing the first element in the $coll
     *              that satisfies `p`, or `None` if none exists.
     */
    def find(p: A => Boolean): Option[A] = {
      var result: Option[A] = None
      breakable {
        for (x <- this)
          if (p(x)) { result = Some(x); break }
      }
      result
    }

    def scan[B >: A, That](z: B)(op: (B, B) => B)(implicit cbf: CanBuildFrom[Repr, B, That]): That = scanLeft(z)(op)

    def scanLeft[B, That](z: B)(op: (B, A) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      b.sizeHint(this, 1)
      var acc = z
      b += acc
      for (x <- this) { acc = op(acc, x); b += acc }
      b.result
    }

    @migration(2, 9,
      "This scanRight definition has changed in 2.9.\n" +
      "The previous behavior can be reproduced with scanRight.reverse."
    )
    def scanRight[B, That](z: B)(op: (A, B) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      var scanned = List(z)
      var acc = z
      for (x <- reversed) {
        acc = op(x, acc)
        scanned ::= acc
      }
      val b = bf(repr)
      for (elem <- scanned) b += elem
      b.result
    }

    /** Selects the first element of this $coll.
     *  $orderDependent
     *  @return  the first element of this $coll.
     *  @throws `NoSuchElementException` if the $coll is empty.
     */
    def head: A = {
      var result: () => A = () => throw new NoSuchElementException
      breakable {
        for (x <- this) {
          result = () => x
          break
        }
      }
      result()
    }

    /** Optionally selects the first element.
     *  $orderDependent
     *  @return  the first element of this $coll if it is nonempty, `None` if it is empty.
     */
    def headOption: Option[A] = if (isEmpty) None else Some(head)

    /** Selects all elements except the first.
     *  $orderDependent
     *  @return  a $coll consisting of all elements of this $coll
     *           except the first one.
     *  @throws `UnsupportedOperationException` if the $coll is empty.
     */ 
    override def tail: Repr = {
      if (isEmpty) throw new UnsupportedOperationException("empty.tail")
      drop(1)
    }

    /** Selects the last element.
      * $orderDependent
      * @return The last element of this $coll.
      * @throws NoSuchElementException If the $coll is empty.
      */
    def last: A = {
      var lst = head
      for (x <- this)
        lst = x
      lst
    }

    /** Optionally selects the last element.
     *  $orderDependent
     *  @return  the last element of this $coll$ if it is nonempty, `None` if it is empty.
     */
    def lastOption: Option[A] = if (isEmpty) None else Some(last)

    /** Selects all elements except the last.
     *  $orderDependent
     *  @return  a $coll consisting of all elements of this $coll
     *           except the last one.
     *  @throws `UnsupportedOperationException` if the $coll is empty.
     */
    def init: Repr = {
      if (isEmpty) throw new UnsupportedOperationException("empty.init")
      var lst = head
      var follow = false
      val b = newBuilder
      b.sizeHint(this, -1)
      for (x <- this.seq) {
        if (follow) b += lst
        else follow = true
        lst = x
      }
      b.result
    }

    def take(n: Int): Repr = slice(0, n)

    def drop(n: Int): Repr = 
      if (n <= 0) {
        val b = newBuilder
        b.sizeHint(this)
        b ++= thisCollection result
      }
      else sliceWithKnownDelta(n, Int.MaxValue, -n)

    def slice(from: Int, until: Int): Repr = sliceWithKnownBound(math.max(from, 0), until)

    // Precondition: from >= 0, until > 0, builder already configured for building.
    private[this] def sliceInternal(from: Int, until: Int, b: Builder[A, Repr]): Repr = {
      var i = 0
      breakable {
        for (x <- this.seq) {
          if (i >= from) b += x
          i += 1
          if (i >= until) break
        }
      }
      b.result
    }
    // Precondition: from >= 0
    private[scala] def sliceWithKnownDelta(from: Int, until: Int, delta: Int): Repr = {
      val b = newBuilder
      if (until <= from) b.result
      else {
        b.sizeHint(this, delta)
        sliceInternal(from, until, b)
      }
    }
    // Precondition: from >= 0
    private[scala] def sliceWithKnownBound(from: Int, until: Int): Repr = {
      val b = newBuilder
      if (until <= from) b.result
      else {
        b.sizeHintBounded(until - from, this)      
        sliceInternal(from, until, b)
      }
    }

    def takeWhile(p: A => Boolean): Repr = {
      val b = newBuilder
      breakable {
        for (x <- this) {
          if (!p(x)) break
          b += x
        }
      }
      b.result
    }

    def dropWhile(p: A => Boolean): Repr = {
      val b = newBuilder
      var go = false
      for (x <- this) {
        if (!p(x)) go = true
        if (go) b += x
      }
      b.result
    }

    def span(p: A => Boolean): (Repr, Repr) = {
      val l, r = newBuilder
      var toLeft = true
      for (x <- this) {
        toLeft = toLeft && p(x)
        (if (toLeft) l else r) += x
      }
      (l.result, r.result)
    }

    def splitAt(n: Int): (Repr, Repr) = {
      val l, r = newBuilder
      l.sizeHintBounded(n, this)
      if (n >= 0) r.sizeHint(this, -n)
      var i = 0
      for (x <- this) {
        (if (i < n) l else r) += x
        i += 1
      }
      (l.result, r.result)
    }

    /** Iterates over the tails of this $coll. The first value will be this
     *  $coll and the final one will be an empty $coll, with the intervening
     *  values the results of successive applications of `tail`.
     *
     *  @return   an iterator over all the tails of this $coll
     *  @example  `List(1,2,3).tails = Iterator(List(1,2,3), List(2,3), List(3), Nil)`
     */  
    def tails: Iterator[Repr] = iterateUntilEmpty(_.tail)

    /** Iterates over the inits of this $coll. The first value will be this
     *  $coll and the final one will be an empty $coll, with the intervening
     *  values the results of successive applications of `init`.
     *
     *  @return  an iterator over all the inits of this $coll
     *  @example  `List(1,2,3).inits = Iterator(List(1,2,3), List(1,2), List(1), Nil)`
     */
    def inits: Iterator[Repr] = iterateUntilEmpty(_.init)

    /** Copies elements of this $coll to an array.
     *  Fills the given array `xs` with at most `len` elements of
     *  this $coll, starting at position `start`.
     *  Copying will stop once either the end of the current $coll is reached,
     *  or the end of the array is reached, or `len` elements have been copied.
     *
     *  $willNotTerminateInf
     * 
     *  @param  xs     the array to fill.
     *  @param  start  the starting index.
     *  @param  len    the maximal number of elements to copy.
     *  @tparam B      the type of the elements of the array. 
     * 
     *
     *  @usecase def copyToArray(xs: Array[A], start: Int, len: Int): Unit
     */
    def copyToArray[B >: A](xs: Array[B], start: Int, len: Int) {
      var i = start
      val end = (start + len) min xs.length
      breakable {
        for (x <- this) {
          if (i >= end) break
          xs(i) = x
          i += 1
        }
      }
    }

    def toTraversable: Traversable[A] = thisCollection
    def toIterator: Iterator[A] = toStream.iterator
    def toStream: Stream[A] = toBuffer.toStream

    /** Converts this $coll to a string.
     *
     *  @return   a string representation of this collection. By default this
     *            string consists of the `stringPrefix` of this $coll,
     *            followed by all elements separated by commas and enclosed in parentheses.
     */
    override def toString = mkString(stringPrefix + "(", ", ", ")")

    /** Defines the prefix of this object's `toString` representation.
     *
     *  @return  a string representation which starts the result of `toString`
     *           applied to this $coll. By default the string prefix is the
     *           simple name of the collection class $coll.
     */
    def stringPrefix : String = {
      var string = repr.asInstanceOf[AnyRef].getClass.getName
      val idx1 = string.lastIndexOf('.' : Int)
      if (idx1 != -1) string = string.substring(idx1 + 1)
      val idx2 = string.indexOf('$')
      if (idx2 != -1) string = string.substring(0, idx2)
      string
    }

    /** Creates a non-strict view of this $coll.
     * 
     *  @return a non-strict view of this $coll.
     */
    def view = new TraversableView[A, Repr] {
      protected lazy val underlying = self.repr
      override def foreach[U](f: A => U) = self foreach f
    }

    /** Creates a non-strict view of a slice of this $coll.
     *
     *  Note: the difference between `view` and `slice` is that `view` produces
     *        a view of the current $coll, whereas `slice` produces a new $coll.
     * 
     *  Note: `view(from, to)` is equivalent to `view.slice(from, to)`
     *  $orderDependent
     * 
     *  @param from   the index of the first element of the view
     *  @param until  the index of the element following the view
     *  @return a non-strict view of a slice of this $coll, starting at index `from`
     *  and extending up to (but not including) index `until`.
     */
    def view(from: Int, until: Int): TraversableView[A, Repr] = view.slice(from, until)

    /** Creates a non-strict filter of this $coll.
     *
     *  Note: the difference between `c filter p` and `c withFilter p` is that
     *        the former creates a new collection, whereas the latter only
     *        restricts the domain of subsequent `map`, `flatMap`, `foreach`,
     *        and `withFilter` operations.
     *  $orderDependent
     * 
     *  @param p   the predicate used to test elements.
     *  @return    an object of class `WithFilter`, which supports
     *             `map`, `flatMap`, `foreach`, and `withFilter` operations.
     *             All these operations apply to those elements of this $coll which
     *             satisfy the predicate `p`.
     */
    def withFilter(p: A => Boolean): FilterMonadic[A, Repr] = new WithFilter(p)

    /** A class supporting filtered operations. Instances of this class are
     *  returned by method `withFilter`.
     */
    class WithFilter(p: A => Boolean) extends FilterMonadic[A, Repr] {

      /** Builds a new collection by applying a function to all elements of the
       *  outer $coll containing this `WithFilter` instance that satisfy predicate `p`.
       *
       *  @param f      the function to apply to each element.
       *  @tparam B     the element type of the returned collection.
       *  @tparam That  $thatinfo
       *  @param bf     $bfinfo
       *  @return       a new collection of type `That` resulting from applying
       *                the given function `f` to each element of the outer $coll
       *                that satisfies predicate `p` and collecting the results.
       *
       *  @usecase def map[B](f: A => B): $Coll[B] 
       *  
       *  @return       a new $coll resulting from applying the given function
       *                `f` to each element of the outer $coll that satisfies
       *                predicate `p` and collecting the results.
       */
      def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
        val b = bf(repr)
        for (x <- self) 
          if (p(x)) b += f(x)
        b.result
      }

      /** Builds a new collection by applying a function to all elements of the
       *  outer $coll containing this `WithFilter` instance that satisfy
       *  predicate `p` and concatenating the results. 
       *
       *  @param f      the function to apply to each element.
       *  @tparam B     the element type of the returned collection.
       *  @tparam That  $thatinfo
       *  @param bf     $bfinfo
       *  @return       a new collection of type `That` resulting from applying
       *                the given collection-valued function `f` to each element
       *                of the outer $coll that satisfies predicate `p` and
       *                concatenating the results.
       *
       *  @usecase def flatMap[B](f: A => TraversableOnce[B]): $Coll[B]
       * 
       *  @return       a new $coll resulting from applying the given collection-valued function
       *                `f` to each element of the outer $coll that satisfies predicate `p` and concatenating the results.
       */
      def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
        val b = bf(repr)
        for (x <- self) 
          if (p(x)) b ++= f(x).seq
        b.result
      }

      /** Applies a function `f` to all elements of the outer $coll containing
       *  this `WithFilter` instance that satisfy predicate `p`.
       *
       *  @param  f   the function that is applied for its side-effect to every element.
       *              The result of function `f` is discarded.
       *              
       *  @tparam  U  the type parameter describing the result of function `f`. 
       *              This result will always be ignored. Typically `U` is `Unit`,
       *              but this is not necessary.
       *
       *  @usecase def foreach(f: A => Unit): Unit
       */   
      def foreach[U](f: A => U): Unit = 
        for (x <- self) 
          if (p(x)) f(x)

      /** Further refines the filter for this $coll.
       *
       *  @param q   the predicate used to test elements.
       *  @return    an object of class `WithFilter`, which supports
       *             `map`, `flatMap`, `foreach`, and `withFilter` operations.
       *             All these operations apply to those elements of this $coll which
       *             satisfy the predicate `q` in addition to the predicate `p`.
       */
      def withFilter(q: A => Boolean): WithFilter = 
        new WithFilter(x => p(x) && q(x))
    }

    // A helper for tails and inits.
    private def iterateUntilEmpty(f: Traversable[A @uV] => Traversable[A @uV]): Iterator[Repr] = {
      val it = Iterator.iterate(thisCollection)(f) takeWhile (x => !x.isEmpty)
      it ++ Iterator(Nil) map (newBuilder ++= _ result)
    }
  }


</textarea>
</form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        theme: "ambiance",
        mode: "text/x-scala"
      });
    </script>
  </article>
lib/codemirror/mode/asterisk/asterisk.js000064400000016415147361034410014425 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*
 * =====================================================================================
 *
 *       Filename:  mode/asterisk/asterisk.js
 *
 *    Description:  CodeMirror mode for Asterisk dialplan
 *
 *        Created:  05/17/2012 09:20:25 PM
 *       Revision:  none
 *
 *         Author:  Stas Kobzar (stas@modulis.ca),
 *        Company:  Modulis.ca Inc.
 *
 * =====================================================================================
 */

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("asterisk", function() {
  var atoms    = ["exten", "same", "include","ignorepat","switch"],
      dpcmd    = ["#include","#exec"],
      apps     = [
                  "addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi",
                  "alarmreceiver","amd","answer","authenticate","background","backgrounddetect",
                  "bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent",
                  "changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge",
                  "congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge",
                  "dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility",
                  "datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa",
                  "dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy",
                  "externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif",
                  "goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete",
                  "ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus",
                  "jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme",
                  "meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete",
                  "minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode",
                  "mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish",
                  "originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce",
                  "parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones",
                  "privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten",
                  "readfile","receivefax","receivefax","receivefax","record","removequeuemember",
                  "resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun",
                  "saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax",
                  "sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags",
                  "setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel",
                  "slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground",
                  "speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound",
                  "speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor",
                  "stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec",
                  "trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate",
                  "vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring",
                  "waitforsilence","waitmusiconhold","waituntil","while","zapateller"
                 ];

  function basicToken(stream,state){
    var cur = '';
    var ch = stream.next();
    // comment
    if(ch == ";") {
      stream.skipToEnd();
      return "comment";
    }
    // context
    if(ch == '[') {
      stream.skipTo(']');
      stream.eat(']');
      return "header";
    }
    // string
    if(ch == '"') {
      stream.skipTo('"');
      return "string";
    }
    if(ch == "'") {
      stream.skipTo("'");
      return "string-2";
    }
    // dialplan commands
    if(ch == '#') {
      stream.eatWhile(/\w/);
      cur = stream.current();
      if(dpcmd.indexOf(cur) !== -1) {
        stream.skipToEnd();
        return "strong";
      }
    }
    // application args
    if(ch == '$'){
      var ch1 = stream.peek();
      if(ch1 == '{'){
        stream.skipTo('}');
        stream.eat('}');
        return "variable-3";
      }
    }
    // extension
    stream.eatWhile(/\w/);
    cur = stream.current();
    if(atoms.indexOf(cur) !== -1) {
      state.extenStart = true;
      switch(cur) {
        case 'same': state.extenSame = true; break;
        case 'include':
        case 'switch':
        case 'ignorepat':
          state.extenInclude = true;break;
        default:break;
      }
      return "atom";
    }
  }

  return {
    startState: function() {
      return {
        extenStart: false,
        extenSame:  false,
        extenInclude: false,
        extenExten: false,
        extenPriority: false,
        extenApplication: false
      };
    },
    token: function(stream, state) {

      var cur = '';
      if(stream.eatSpace()) return null;
      // extension started
      if(state.extenStart){
        stream.eatWhile(/[^\s]/);
        cur = stream.current();
        if(/^=>?$/.test(cur)){
          state.extenExten = true;
          state.extenStart = false;
          return "strong";
        } else {
          state.extenStart = false;
          stream.skipToEnd();
          return "error";
        }
      } else if(state.extenExten) {
        // set exten and priority
        state.extenExten = false;
        state.extenPriority = true;
        stream.eatWhile(/[^,]/);
        if(state.extenInclude) {
          stream.skipToEnd();
          state.extenPriority = false;
          state.extenInclude = false;
        }
        if(state.extenSame) {
          state.extenPriority = false;
          state.extenSame = false;
          state.extenApplication = true;
        }
        return "tag";
      } else if(state.extenPriority) {
        state.extenPriority = false;
        state.extenApplication = true;
        stream.next(); // get comma
        if(state.extenSame) return null;
        stream.eatWhile(/[^,]/);
        return "number";
      } else if(state.extenApplication) {
        stream.eatWhile(/,/);
        cur = stream.current();
        if(cur === ',') return null;
        stream.eatWhile(/\w/);
        cur = stream.current().toLowerCase();
        state.extenApplication = false;
        if(apps.indexOf(cur) !== -1){
          return "def strong";
        }
      } else{
        return basicToken(stream,state);
      }

      return null;
    }
  };
});

CodeMirror.defineMIME("text/x-asterisk", "asterisk");

});
lib/codemirror/mode/asterisk/index.html000064400000010757147361034410014242 0ustar00<!doctype html>

<title>CodeMirror: Asterisk dialplan mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="asterisk.js"></script>
<style>
      .CodeMirror {border: 1px solid #999;}
      .cm-s-default span.cm-arrow { color: red; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Asterisk dialplan</a>
  </ul>
</div>

<article>
<h2>Asterisk dialplan mode</h2>
<form><textarea id="code" name="code">
; extensions.conf - the Asterisk dial plan
;

[general]
;
; If static is set to no, or omitted, then the pbx_config will rewrite
; this file when extensions are modified.  Remember that all comments
; made in the file will be lost when that happens.
static=yes

#include "/etc/asterisk/additional_general.conf

[iaxprovider]
switch => IAX2/user:[key]@myserver/mycontext

[dynamic]
#exec /usr/bin/dynamic-peers.pl

[trunkint]
;
; International long distance through trunk
;
exten => _9011.,1,Macro(dundi-e164,${EXTEN:4})
exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})})

[local]
;
; Master context for local, toll-free, and iaxtel calls only
;
ignorepat => 9
include => default

[demo]
include => stdexten
;
; We start with what to do when a call first comes in.
;
exten => s,1,Wait(1)			; Wait a second, just for fun
same  => n,Answer			; Answer the line
same  => n,Set(TIMEOUT(digit)=5)	; Set Digit Timeout to 5 seconds
same  => n,Set(TIMEOUT(response)=10)	; Set Response Timeout to 10 seconds
same  => n(restart),BackGround(demo-congrats)	; Play a congratulatory message
same  => n(instruct),BackGround(demo-instruct)	; Play some instructions
same  => n,WaitExten			; Wait for an extension to be dialed.

exten => 2,1,BackGround(demo-moreinfo)	; Give some more information.
exten => 2,n,Goto(s,instruct)

exten => 3,1,Set(LANGUAGE()=fr)		; Set language to french
exten => 3,n,Goto(s,restart)		; Start with the congratulations

exten => 1000,1,Goto(default,s,1)
;
; We also create an example user, 1234, who is on the console and has
; voicemail, etc.
;
exten => 1234,1,Playback(transfer,skip)		; "Please hold while..."
					; (but skip if channel is not up)
exten => 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))
exten => 1234,n,Goto(default,s,1)		; exited Voicemail

exten => 1235,1,Voicemail(1234,u)		; Right to voicemail

exten => 1236,1,Dial(Console/dsp)		; Ring forever
exten => 1236,n,Voicemail(1234,b)		; Unless busy

;
; # for when they're done with the demo
;
exten => #,1,Playback(demo-thanks)	; "Thanks for trying the demo"
exten => #,n,Hangup			; Hang them up.

;
; A timeout and "invalid extension rule"
;
exten => t,1,Goto(#,1)			; If they take too long, give up
exten => i,1,Playback(invalid)		; "That's not valid, try again"

;
; Create an extension, 500, for dialing the
; Asterisk demo.
;
exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default)	; Call the Asterisk demo
exten => 500,n,Playback(demo-nogo)	; Couldn't connect to the demo site
exten => 500,n,Goto(s,6)		; Return to the start over message.

;
; Create an extension, 600, for evaluating echo latency.
;
exten => 600,1,Playback(demo-echotest)	; Let them know what's going on
exten => 600,n,Echo			; Do the echo test
exten => 600,n,Playback(demo-echodone)	; Let them know it's over
exten => 600,n,Goto(s,6)		; Start over

;
;	You can use the Macro Page to intercom a individual user
exten => 76245,1,Macro(page,SIP/Grandstream1)
; or if your peernames are the same as extensions
exten => _7XXX,1,Macro(page,SIP/${EXTEN})
;
;
; System Wide Page at extension 7999
;
exten => 7999,1,Set(TIMEOUT(absolute)=60)
exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d)

; Give voicemail at extension 8500
;
exten => 8500,1,VoicemailMain
exten => 8500,n,Goto(s,6)

    </textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/x-asterisk",
        matchBrackets: true,
        lineNumber: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-asterisk</code>.</p>

  </article>
lib/codemirror/mode/xquery/test.js000064400000011764147361034410013271 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Don't take these too seriously -- the expected results appear to be
// based on the results of actual runs without any serious manual
// verification. If a change you made causes them to fail, the test is
// as likely to wrong as the code.

(function() {
  var mode = CodeMirror.getMode({tabSize: 4}, "xquery");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("eviltest",
     "[keyword xquery] [keyword version] [variable &quot;1][keyword .][atom 0][keyword -][variable ml&quot;][def&variable ;]      [comment (: this is       : a          \"comment\" :)]",
     "      [keyword let] [variable $let] [keyword :=] [variable &lt;x] [variable attr][keyword =][variable &quot;value&quot;&gt;&quot;test&quot;&lt;func&gt][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable &lt;][keyword /][variable func&gt;&lt;][keyword /][variable x&gt;]",
     "      [keyword let] [variable $joe][keyword :=][atom 1]",
     "      [keyword return] [keyword element] [variable element] {",
     "          [keyword attribute] [variable attribute] { [atom 1] },",
     "          [keyword element] [variable test] { [variable &#39;a&#39;] },           [keyword attribute] [variable foo] { [variable &quot;bar&quot;] },",
     "          [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],",
     "          [keyword //][variable x] }                 [comment (: a more 'evil' test :)]",
     "      [comment (: Modified Blakeley example (: with nested comment :) ... :)]",
     "      [keyword declare] [keyword private] [keyword function] [def&variable local:declare]() {()}[variable ;]",
     "      [keyword declare] [keyword private] [keyword function] [def&variable local:private]() {()}[variable ;]",
     "      [keyword declare] [keyword private] [keyword function] [def&variable local:function]() {()}[variable ;]",
     "      [keyword declare] [keyword private] [keyword function] [def&variable local:local]() {()}[variable ;]",
     "      [keyword let] [variable $let] [keyword :=] [variable &lt;let&gt;let] [variable $let] [keyword :=] [variable &quot;let&quot;&lt;][keyword /let][variable &gt;]",
     "      [keyword return] [keyword element] [variable element] {",
     "          [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },",
     "          [keyword attribute] [variable fn:doc] { [variable &quot;bar&quot;] [variable castable] [keyword as] [atom xs:string] },",
     "          [keyword element] [variable text] { [keyword text] { [variable &quot;text&quot;] } },",
     "          [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],",
     "          [keyword //][variable fn:doc]",
     "      }");

  MT("testEmptySequenceKeyword",
     "[string \"foo\"] [keyword instance] [keyword of] [keyword empty-sequence]()");

  MT("testMultiAttr",
     "[tag <p ][attribute a1]=[string \"foo\"] [attribute a2]=[string \"bar\"][tag >][variable hello] [variable world][tag </p>]");

  MT("test namespaced variable",
     "[keyword declare] [keyword namespace] [variable e] [keyword =] [string \"http://example.com/ANamespace\"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]");

  MT("test EQName variable",
     "[keyword declare] [keyword variable] [variable $\"http://www.example.com/ns/my\":var] [keyword :=] [atom 12][variable ;]",
     "[tag <out>]{[variable $\"http://www.example.com/ns/my\":var]}[tag </out>]");

  MT("test EQName function",
     "[keyword declare] [keyword function] [def&variable \"http://www.example.com/ns/my\":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {",
     "   [variable $a] [keyword +] [atom 2]",
     "}[variable ;]",
     "[tag <out>]{[def&variable \"http://www.example.com/ns/my\":fn]([atom 12])}[tag </out>]");

  MT("test EQName function with single quotes",
     "[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {",
     "   [variable $a] [keyword +] [atom 2]",
     "}[variable ;]",
     "[tag <out>]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag </out>]");

  MT("testProcessingInstructions",
     "[def&variable data]([comment&meta <?target content?>]) [keyword instance] [keyword of] [atom xs:string]");

  MT("testQuoteEscapeDouble",
     "[keyword let] [variable $rootfolder] [keyword :=] [string \"c:\\builds\\winnt\\HEAD\\qa\\scripts\\\"]",
     "[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \"keys\\\"])");
})();
lib/codemirror/mode/xquery/index.html000064400000020641147361034410013743 0ustar00<!doctype html>

<title>CodeMirror: XQuery mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/xq-dark.css">
<script src="../../lib/codemirror.js"></script>
<script src="xquery.js"></script>
<style type="text/css">
	.CodeMirror {
	  border-top: 1px solid black; border-bottom: 1px solid black;
	  height:400px;
	}
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">XQuery</a>
  </ul>
</div>

<article>
<h2>XQuery mode</h2>
 
 
<div class="cm-s-default"> 
	<textarea id="code" name="code"> 
xquery version &quot;1.0-ml&quot;;
(: this is
 : a 
   "comment" :)
let $let := &lt;x attr=&quot;value&quot;&gt;&quot;test&quot;&lt;func&gt;function() $var {function()} {$var}&lt;/func&gt;&lt;/x&gt;
let $joe:=1
return element element {
	attribute attribute { 1 },
	element test { &#39;a&#39; }, 
	attribute foo { &quot;bar&quot; },
	fn:doc()[ foo/@bar eq $let ],
	//x }    
 
(: a more 'evil' test :)
(: Modified Blakeley example (: with nested comment :) ... :)
declare private function local:declare() {()};
declare private function local:private() {()};
declare private function local:function() {()};
declare private function local:local() {()};
let $let := &lt;let&gt;let $let := &quot;let&quot;&lt;/let&gt;
return element element {
	attribute attribute { try { xdmp:version() } catch($e) { xdmp:log($e) } },
	attribute fn:doc { &quot;bar&quot; castable as xs:string },
	element text { text { &quot;text&quot; } },
	fn:doc()[ child::eq/(@bar | attribute::attribute) eq $let ],
	//fn:doc
}



xquery version &quot;1.0-ml&quot;;

(: Copyright 2006-2010 Mark Logic Corporation. :)

(:
 : Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
 : you may not use this file except in compliance with the License.
 : You may obtain a copy of the License at
 :
 :     http://www.apache.org/licenses/LICENSE-2.0
 :
 : Unless required by applicable law or agreed to in writing, software
 : distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
 : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 : See the License for the specific language governing permissions and
 : limitations under the License.
 :)

module namespace json = &quot;http://marklogic.com/json&quot;;
declare default function namespace &quot;http://www.w3.org/2005/xpath-functions&quot;;

(: Need to backslash escape any double quotes, backslashes, and newlines :)
declare function json:escape($s as xs:string) as xs:string {
  let $s := replace($s, &quot;\\&quot;, &quot;\\\\&quot;)
  let $s := replace($s, &quot;&quot;&quot;&quot;, &quot;\\&quot;&quot;&quot;)
  let $s := replace($s, codepoints-to-string((13, 10)), &quot;\\n&quot;)
  let $s := replace($s, codepoints-to-string(13), &quot;\\n&quot;)
  let $s := replace($s, codepoints-to-string(10), &quot;\\n&quot;)
  return $s
};

declare function json:atomize($x as element()) as xs:string {
  if (count($x/node()) = 0) then 'null'
  else if ($x/@type = &quot;number&quot;) then
    let $castable := $x castable as xs:float or
                     $x castable as xs:double or
                     $x castable as xs:decimal
    return
    if ($castable) then xs:string($x)
    else error(concat(&quot;Not a number: &quot;, xdmp:describe($x)))
  else if ($x/@type = &quot;boolean&quot;) then
    let $castable := $x castable as xs:boolean
    return
    if ($castable) then xs:string(xs:boolean($x))
    else error(concat(&quot;Not a boolean: &quot;, xdmp:describe($x)))
  else concat('&quot;', json:escape($x), '&quot;')
};

(: Print the thing that comes after the colon :)
declare function json:print-value($x as element()) as xs:string {
  if (count($x/*) = 0) then
    json:atomize($x)
  else if ($x/@quote = &quot;true&quot;) then
    concat('&quot;', json:escape(xdmp:quote($x/node())), '&quot;')
  else
    string-join(('{',
      string-join(for $i in $x/* return json:print-name-value($i), &quot;,&quot;),
    '}'), &quot;&quot;)
};

(: Print the name and value both :)
declare function json:print-name-value($x as element()) as xs:string? {
  let $name := name($x)
  let $first-in-array :=
    count($x/preceding-sibling::*[name(.) = $name]) = 0 and
    (count($x/following-sibling::*[name(.) = $name]) &gt; 0 or $x/@array = &quot;true&quot;)
  let $later-in-array := count($x/preceding-sibling::*[name(.) = $name]) &gt; 0
  return

  if ($later-in-array) then
    ()  (: I was handled previously :)
  else if ($first-in-array) then
    string-join(('&quot;', json:escape($name), '&quot;:[',
      string-join((for $i in ($x, $x/following-sibling::*[name(.) = $name]) return json:print-value($i)), &quot;,&quot;),
    ']'), &quot;&quot;)
   else
     string-join(('&quot;', json:escape($name), '&quot;:', json:print-value($x)), &quot;&quot;)
};

(:~
  Transforms an XML element into a JSON string representation.  See http://json.org.
  &lt;p/&gt;
  Sample usage:
  &lt;pre&gt;
    xquery version &quot;1.0-ml&quot;;
    import module namespace json=&quot;http://marklogic.com/json&quot; at &quot;json.xqy&quot;;
    json:serialize(&amp;lt;foo&amp;gt;&amp;lt;bar&amp;gt;kid&amp;lt;/bar&amp;gt;&amp;lt;/foo&amp;gt;)
  &lt;/pre&gt;
  Sample transformations:
  &lt;pre&gt;
  &amp;lt;e/&amp;gt; becomes {&quot;e&quot;:null}
  &amp;lt;e&amp;gt;text&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;text&quot;}
  &amp;lt;e&amp;gt;quote &quot; escaping&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;quote \&quot; escaping&quot;}
  &amp;lt;e&amp;gt;backslash \ escaping&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;backslash \\ escaping&quot;}
  &amp;lt;e&amp;gt;&amp;lt;a&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;b&amp;gt;text2&amp;lt;/b&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:&quot;text1&quot;,&quot;b&quot;:&quot;text2&quot;}}
  &amp;lt;e&amp;gt;&amp;lt;a&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;a&amp;gt;text2&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:[&quot;text1&quot;,&quot;text2&quot;]}}
  &amp;lt;e&amp;gt;&amp;lt;a array=&quot;true&quot;&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:[&quot;text1&quot;]}}
  &amp;lt;e&amp;gt;&amp;lt;a type=&quot;boolean&quot;&amp;gt;false&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:false}}
  &amp;lt;e&amp;gt;&amp;lt;a type=&quot;number&quot;&amp;gt;123.5&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:123.5}}
  &amp;lt;e quote=&quot;true&quot;&amp;gt;&amp;lt;div attrib=&quot;value&quot;/&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;&amp;lt;div attrib=\&quot;value\&quot;/&amp;gt;&quot;}
  &lt;/pre&gt;
  &lt;p/&gt;
  Namespace URIs are ignored.  Namespace prefixes are included in the JSON name.
  &lt;p/&gt;
  Attributes are ignored, except for the special attribute @array=&quot;true&quot; that
  indicates the JSON serialization should write the node, even if single, as an
  array, and the attribute @type that can be set to &quot;boolean&quot; or &quot;number&quot; to
  dictate the value should be written as that type (unquoted).  There's also
  an @quote attribute that when set to true writes the inner content as text
  rather than as structured JSON, useful for sending some XHTML over the
  wire.
  &lt;p/&gt;
  Text nodes within mixed content are ignored.

  @param $x Element node to convert
  @return String holding JSON serialized representation of $x

  @author Jason Hunter
  @version 1.0.1
  
  Ported to xquery 1.0-ml; double escaped backslashes in json:escape
:)
declare function json:serialize($x as element())  as xs:string {
  string-join(('{', json:print-name-value($x), '}'), &quot;&quot;)
};
  </textarea> 
</div> 
 
    <script> 
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        theme: "xq-dark"
      });
    </script> 
 
    <p><strong>MIME types defined:</strong> <code>application/xquery</code>.</p> 
 
    <p>Development of the CodeMirror XQuery mode was sponsored by 
      <a href="http://marklogic.com">MarkLogic</a> and developed by 
      <a href="https://twitter.com/mbrevoort">Mike Brevoort</a>.
    </p>
 
  </article>
lib/codemirror/mode/xquery/xquery.js000064400000034206147361034410013643 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("xquery", function() {

  // The keywords object is set to the result of this self executing
  // function. Each keyword is a property of the keywords object whose
  // value is {type: atype, style: astyle}
  var keywords = function(){
    // convenience functions used to build keywords object
    function kw(type) {return {type: type, style: "keyword"};}
    var A = kw("keyword a")
      , B = kw("keyword b")
      , C = kw("keyword c")
      , operator = kw("operator")
      , atom = {type: "atom", style: "atom"}
      , punctuation = {type: "punctuation", style: null}
      , qualifier = {type: "axis_specifier", style: "qualifier"};

    // kwObj is what is return from this function at the end
    var kwObj = {
      'if': A, 'switch': A, 'while': A, 'for': A,
      'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B,
      'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C,
      'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C,
      ',': punctuation,
      'null': atom, 'fn:false()': atom, 'fn:true()': atom
    };

    // a list of 'basic' keywords. For each add a property to kwObj with the value of
    // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"}
    var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before',
    'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self',
    'descending','document','document-node','element','else','eq','every','except','external','following',
    'following-sibling','follows','for','function','if','import','in','instance','intersect','item',
    'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding',
    'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element',
    'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where',
    'xquery', 'empty-sequence'];
    for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);};

    // a list of types. For each add a property to kwObj with the value of
    // {type: "atom", style: "atom"}
    var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime',
    'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary',
    'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration'];
    for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;};

    // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"}
    var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-'];
    for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;};

    // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"}
    var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::",
    "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"];
    for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; };

    return kwObj;
  }();

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  // the primary mode tokenizer
  function tokenBase(stream, state) {
    var ch = stream.next(),
        mightBeFunction = false,
        isEQName = isEQNameAhead(stream);

    // an XML tag (if not in some sub, chained tokenizer)
    if (ch == "<") {
      if(stream.match("!--", true))
        return chain(stream, state, tokenXMLComment);

      if(stream.match("![CDATA", false)) {
        state.tokenize = tokenCDATA;
        return "tag";
      }

      if(stream.match("?", false)) {
        return chain(stream, state, tokenPreProcessing);
      }

      var isclose = stream.eat("/");
      stream.eatSpace();
      var tagName = "", c;
      while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c;

      return chain(stream, state, tokenTag(tagName, isclose));
    }
    // start code block
    else if(ch == "{") {
      pushStateStack(state,{ type: "codeblock"});
      return null;
    }
    // end code block
    else if(ch == "}") {
      popStateStack(state);
      return null;
    }
    // if we're in an XML block
    else if(isInXmlBlock(state)) {
      if(ch == ">")
        return "tag";
      else if(ch == "/" && stream.eat(">")) {
        popStateStack(state);
        return "tag";
      }
      else
        return "variable";
    }
    // if a number
    else if (/\d/.test(ch)) {
      stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/);
      return "atom";
    }
    // comment start
    else if (ch === "(" && stream.eat(":")) {
      pushStateStack(state, { type: "comment"});
      return chain(stream, state, tokenComment);
    }
    // quoted string
    else if (  !isEQName && (ch === '"' || ch === "'"))
      return chain(stream, state, tokenString(ch));
    // variable
    else if(ch === "$") {
      return chain(stream, state, tokenVariable);
    }
    // assignment
    else if(ch ===":" && stream.eat("=")) {
      return "keyword";
    }
    // open paren
    else if(ch === "(") {
      pushStateStack(state, { type: "paren"});
      return null;
    }
    // close paren
    else if(ch === ")") {
      popStateStack(state);
      return null;
    }
    // open paren
    else if(ch === "[") {
      pushStateStack(state, { type: "bracket"});
      return null;
    }
    // close paren
    else if(ch === "]") {
      popStateStack(state);
      return null;
    }
    else {
      var known = keywords.propertyIsEnumerable(ch) && keywords[ch];

      // if there's a EQName ahead, consume the rest of the string portion, it's likely a function
      if(isEQName && ch === '\"') while(stream.next() !== '"'){}
      if(isEQName && ch === '\'') while(stream.next() !== '\''){}

      // gobble up a word if the character is not known
      if(!known) stream.eatWhile(/[\w\$_-]/);

      // gobble a colon in the case that is a lib func type call fn:doc
      var foundColon = stream.eat(":");

      // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier
      // which should get matched as a keyword
      if(!stream.eat(":") && foundColon) {
        stream.eatWhile(/[\w\$_-]/);
      }
      // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort)
      if(stream.match(/^[ \t]*\(/, false)) {
        mightBeFunction = true;
      }
      // is the word a keyword?
      var word = stream.current();
      known = keywords.propertyIsEnumerable(word) && keywords[word];

      // if we think it's a function call but not yet known,
      // set style to variable for now for lack of something better
      if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"};

      // if the previous word was element, attribute, axis specifier, this word should be the name of that
      if(isInXmlConstructor(state)) {
        popStateStack(state);
        return "variable";
      }
      // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and
      // push the stack so we know to look for it on the next word
      if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"});

      // if the word is known, return the details of that else just call this a generic 'word'
      return known ? known.style : "variable";
    }
  }

  // handle comments, including nested
  function tokenComment(stream, state) {
    var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
    while (ch = stream.next()) {
      if (ch == ")" && maybeEnd) {
        if(nestedCount > 0)
          nestedCount--;
        else {
          popStateStack(state);
          break;
        }
      }
      else if(ch == ":" && maybeNested) {
        nestedCount++;
      }
      maybeEnd = (ch == ":");
      maybeNested = (ch == "(");
    }

    return "comment";
  }

  // tokenizer for string literals
  // optionally pass a tokenizer function to set state.tokenize back to when finished
  function tokenString(quote, f) {
    return function(stream, state) {
      var ch;

      if(isInString(state) && stream.current() == quote) {
        popStateStack(state);
        if(f) state.tokenize = f;
        return "string";
      }

      pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) });

      // if we're in a string and in an XML block, allow an embedded code block
      if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
        state.tokenize = tokenBase;
        return "string";
      }


      while (ch = stream.next()) {
        if (ch ==  quote) {
          popStateStack(state);
          if(f) state.tokenize = f;
          break;
        }
        else {
          // if we're in a string and in an XML block, allow an embedded code block in an attribute
          if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
            state.tokenize = tokenBase;
            return "string";
          }

        }
      }

      return "string";
    };
  }

  // tokenizer for variables
  function tokenVariable(stream, state) {
    var isVariableChar = /[\w\$_-]/;

    // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote
    if(stream.eat("\"")) {
      while(stream.next() !== '\"'){};
      stream.eat(":");
    } else {
      stream.eatWhile(isVariableChar);
      if(!stream.match(":=", false)) stream.eat(":");
    }
    stream.eatWhile(isVariableChar);
    state.tokenize = tokenBase;
    return "variable";
  }

  // tokenizer for XML tags
  function tokenTag(name, isclose) {
    return function(stream, state) {
      stream.eatSpace();
      if(isclose && stream.eat(">")) {
        popStateStack(state);
        state.tokenize = tokenBase;
        return "tag";
      }
      // self closing tag without attributes?
      if(!stream.eat("/"))
        pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase});
      if(!stream.eat(">")) {
        state.tokenize = tokenAttribute;
        return "tag";
      }
      else {
        state.tokenize = tokenBase;
      }
      return "tag";
    };
  }

  // tokenizer for XML attributes
  function tokenAttribute(stream, state) {
    var ch = stream.next();

    if(ch == "/" && stream.eat(">")) {
      if(isInXmlAttributeBlock(state)) popStateStack(state);
      if(isInXmlBlock(state)) popStateStack(state);
      return "tag";
    }
    if(ch == ">") {
      if(isInXmlAttributeBlock(state)) popStateStack(state);
      return "tag";
    }
    if(ch == "=")
      return null;
    // quoted string
    if (ch == '"' || ch == "'")
      return chain(stream, state, tokenString(ch, tokenAttribute));

    if(!isInXmlAttributeBlock(state))
      pushStateStack(state, { type: "attribute", tokenize: tokenAttribute});

    stream.eat(/[a-zA-Z_:]/);
    stream.eatWhile(/[-a-zA-Z0-9_:.]/);
    stream.eatSpace();

    // the case where the attribute has not value and the tag was closed
    if(stream.match(">", false) || stream.match("/", false)) {
      popStateStack(state);
      state.tokenize = tokenBase;
    }

    return "attribute";
  }

  // handle comments, including nested
  function tokenXMLComment(stream, state) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "-" && stream.match("->", true)) {
        state.tokenize = tokenBase;
        return "comment";
      }
    }
  }


  // handle CDATA
  function tokenCDATA(stream, state) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "]" && stream.match("]", true)) {
        state.tokenize = tokenBase;
        return "comment";
      }
    }
  }

  // handle preprocessing instructions
  function tokenPreProcessing(stream, state) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "?" && stream.match(">", true)) {
        state.tokenize = tokenBase;
        return "comment meta";
      }
    }
  }


  // functions to test the current context of the state
  function isInXmlBlock(state) { return isIn(state, "tag"); }
  function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); }
  function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); }
  function isInString(state) { return isIn(state, "string"); }

  function isEQNameAhead(stream) {
    // assume we've already eaten a quote (")
    if(stream.current() === '"')
      return stream.match(/^[^\"]+\"\:/, false);
    else if(stream.current() === '\'')
      return stream.match(/^[^\"]+\'\:/, false);
    else
      return false;
  }

  function isIn(state, type) {
    return (state.stack.length && state.stack[state.stack.length - 1].type == type);
  }

  function pushStateStack(state, newState) {
    state.stack.push(newState);
  }

  function popStateStack(state) {
    state.stack.pop();
    var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize;
    state.tokenize = reinstateTokenize || tokenBase;
  }

  // the interface for the mode API
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        cc: [],
        stack: []
      };
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      return style;
    },

    blockCommentStart: "(:",
    blockCommentEnd: ":)"

  };

});

CodeMirror.defineMIME("application/xquery", "xquery");

});
lib/codemirror/mode/octave/index.html000064400000003415147361034410013667 0ustar00<!doctype html>

<title>CodeMirror: Octave mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="octave.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Octave</a>
  </ul>
</div>

<article>
<h2>Octave mode</h2>

    <div><textarea id="code" name="code">
%numbers
[1234 1234i 1234j]
[.234 .234j 2.23i]
[23e2 12E1j 123D-4 0x234]

%strings
'asda''a'
"asda""a"

%identifiers
a + as123 - __asd__

%operators
-
+
=
==
>
<
>=
<=
&
~
...
break zeros default margin round ones rand
ceil floor size clear zeros eye mean std cov
error eval function
abs acos atan asin cos cosh exp log prod sum
log10 max min sign sin sinh sqrt tan reshape
return
case switch
else elseif end if otherwise
do for while
try catch
classdef properties events methods
global persistent

%one line comment
%{ multi 
line comment %}

    </textarea></div>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "octave",
               version: 2,
               singleLineStringErrors: false},
        lineNumbers: true,
        indentUnit: 4,
        matchBrackets: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-octave</code>.</p>
</article>
lib/codemirror/mode/octave/octave.js000064400000010557147361034410013516 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("octave", function() {
  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") + "))\\b");
  }

  var singleOperators = new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]");
  var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;]');
  var doubleOperators = new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))");
  var doubleDelimiters = new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))");
  var tripleDelimiters = new RegExp("^((>>=)|(<<=))");
  var expressionEnd = new RegExp("^[\\]\\)]");
  var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*");

  var builtins = wordRegexp([
    'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos',
    'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh',
    'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones',
    'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov',
    'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot',
    'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str',
    'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember'
  ]);

  var keywords = wordRegexp([
    'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction',
    'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events',
    'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until',
    'continue', 'pkg'
  ]);


  // tokenizers
  function tokenTranspose(stream, state) {
    if (!stream.sol() && stream.peek() === '\'') {
      stream.next();
      state.tokenize = tokenBase;
      return 'operator';
    }
    state.tokenize = tokenBase;
    return tokenBase(stream, state);
  }


  function tokenComment(stream, state) {
    if (stream.match(/^.*%}/)) {
      state.tokenize = tokenBase;
      return 'comment';
    };
    stream.skipToEnd();
    return 'comment';
  }

  function tokenBase(stream, state) {
    // whitespaces
    if (stream.eatSpace()) return null;

    // Handle one line Comments
    if (stream.match('%{')){
      state.tokenize = tokenComment;
      stream.skipToEnd();
      return 'comment';
    }

    if (stream.match(/^[%#]/)){
      stream.skipToEnd();
      return 'comment';
    }

    // Handle Number Literals
    if (stream.match(/^[0-9\.+-]/, false)) {
      if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) {
        stream.tokenize = tokenBase;
        return 'number'; };
      if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; };
      if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; };
    }
    if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; };

    // Handle Strings
    if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } ;
    if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } ;

    // Handle words
    if (stream.match(keywords)) { return 'keyword'; } ;
    if (stream.match(builtins)) { return 'builtin'; } ;
    if (stream.match(identifiers)) { return 'variable'; } ;

    if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; };
    if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; };

    if (stream.match(expressionEnd)) {
      state.tokenize = tokenTranspose;
      return null;
    };


    // Handle non-detected items
    stream.next();
    return 'error';
  };


  return {
    startState: function() {
      return {
        tokenize: tokenBase
      };
    },

    token: function(stream, state) {
      var style = state.tokenize(stream, state);
      if (style === 'number' || style === 'variable'){
        state.tokenize = tokenTranspose;
      }
      return style;
    }
  };
});

CodeMirror.defineMIME("text/x-octave", "octave");

});
lib/codemirror/mode/asciiarmor/asciiarmor.js000064400000004512147361034410015230 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function errorIfNotEmpty(stream) {
    var nonWS = stream.match(/^\s*\S/);
    stream.skipToEnd();
    return nonWS ? "error" : null;
  }

  CodeMirror.defineMode("asciiarmor", function() {
    return {
      token: function(stream, state) {
        var m;
        if (state.state == "top") {
          if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\s*$/))) {
            state.state = "headers";
            state.type = m[1];
            return "tag";
          }
          return errorIfNotEmpty(stream);
        } else if (state.state == "headers") {
          if (stream.sol() && stream.match(/^\w+:/)) {
            state.state = "header";
            return "atom";
          } else {
            var result = errorIfNotEmpty(stream);
            if (result) state.state = "body";
            return result;
          }
        } else if (state.state == "header") {
          stream.skipToEnd();
          state.state = "headers";
          return "string";
        } else if (state.state == "body") {
          if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\s*$/))) {
            if (m[1] != state.type) return "error";
            state.state = "end";
            return "tag";
          } else {
            if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) {
              return null;
            } else {
              stream.next();
              return "error";
            }
          }
        } else if (state.state == "end") {
          return errorIfNotEmpty(stream);
        }
      },
      blankLine: function(state) {
        if (state.state == "headers") state.state = "body";
      },
      startState: function() {
        return {state: "top", type: null};
      }
    };
  });

  CodeMirror.defineMIME("application/pgp", "asciiarmor");
  CodeMirror.defineMIME("application/pgp-keys", "asciiarmor");
  CodeMirror.defineMIME("application/pgp-signature", "asciiarmor");
});
lib/codemirror/mode/asciiarmor/index.html000064400000002411147361034410014532 0ustar00<!doctype html>

<title>CodeMirror: ASCII Armor (PGP) mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="asciiarmor.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">ASCII Armor</a>
  </ul>
</div>

<article>
<h2>ASCII Armor (PGP) mode</h2>
<form><textarea id="code" name="code">
-----BEGIN PGP MESSAGE-----
Version: OpenPrivacy 0.99

yDgBO22WxBHv7O8X7O/jygAEzol56iUKiXmV+XmpCtmpqQUKiQrFqclFqUDBovzS
vBSFjNSiVHsuAA==
=njUN
-----END PGP MESSAGE-----
</textarea></form>

<script>
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
  lineNumbers: true
});
</script>

<p><strong>MIME types
defined:</strong> <code>application/pgp</code>, <code>application/pgp-keys</code>, <code>application/pgp-signature</code></p>

</article>
lib/codemirror/mode/cobol/cobol.js000064400000024060147361034410013142 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/**
 * Author: Gautam Mehta
 * Branched from CodeMirror's Scheme mode
 */
(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("cobol", function () {
  var BUILTIN = "builtin", COMMENT = "comment", STRING = "string",
      ATOM = "atom", NUMBER = "number", KEYWORD = "keyword", MODTAG = "header",
      COBOLLINENUM = "def", PERIOD = "link";
  function makeKeywords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES ");
  var keywords = makeKeywords(
      "ACCEPT ACCESS ACQUIRE ADD ADDRESS " +
      "ADVANCING AFTER ALIAS ALL ALPHABET " +
      "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED " +
      "ALSO ALTER ALTERNATE AND ANY " +
      "ARE AREA AREAS ARITHMETIC ASCENDING " +
      "ASSIGN AT ATTRIBUTE AUTHOR AUTO " +
      "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " +
      "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " +
      "BEFORE BELL BINARY BIT BITS " +
      "BLANK BLINK BLOCK BOOLEAN BOTTOM " +
      "BY CALL CANCEL CD CF " +
      "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " +
      "CLOSE COBOL CODE CODE-SET COL " +
      "COLLATING COLUMN COMMA COMMIT COMMITMENT " +
      "COMMON COMMUNICATION COMP COMP-0 COMP-1 " +
      "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " +
      "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " +
      "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 " +
      "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE " +
      "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " +
      "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " +
      "CONVERTING COPY CORR CORRESPONDING COUNT " +
      "CRT CRT-UNDER CURRENCY CURRENT CURSOR " +
      "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " +
      "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION " +
      "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS " +
      "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " +
      "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING " +
      "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " +
      "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " +
      "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " +
      "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " +
      "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " +
      "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " +
      "EBCDIC EGI EJECT ELSE EMI " +
      "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. " +
      "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " +
      "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " +
      "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN " +
      "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT " +
      "END-UNSTRING END-WRITE END-XML ENTER ENTRY " +
      "ENVIRONMENT EOP EQUAL EQUALS ERASE " +
      "ERROR ESI EVALUATE EVERY EXCEEDS " +
      "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " +
      "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " +
      "FILE-STREAM FILES FILLER FINAL FIND " +
      "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " +
      "FOREGROUND-COLOUR FORMAT FREE FROM FULL " +
      "FUNCTION GENERATE GET GIVING GLOBAL " +
      "GO GOBACK GREATER GROUP HEADING " +
      "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " +
      "ID IDENTIFICATION IF IN INDEX " +
      "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " +
      "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " +
      "INDIC INDICATE INDICATOR INDICATORS INITIAL " +
      "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " +
      "INSTALLATION INTO INVALID INVOKE IS " +
      "JUST JUSTIFIED KANJI KEEP KEY " +
      "LABEL LAST LD LEADING LEFT " +
      "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " +
      "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " +
      "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " +
      "LOCALE LOCALLY LOCK " +
      "MEMBER MEMORY MERGE MESSAGE METACLASS " +
      "MODE MODIFIED MODIFY MODULES MOVE " +
      "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " +
      "NEXT NO NO-ECHO NONE NOT " +
      "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " +
      "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " +
      "OF OFF OMITTED ON ONLY " +
      "OPEN OPTIONAL OR ORDER ORGANIZATION " +
      "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " +
      "PADDING PAGE PAGE-COUNTER PARSE PERFORM " +
      "PF PH PIC PICTURE PLUS " +
      "POINTER POSITION POSITIVE PREFIX PRESENT " +
      "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " +
      "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " +
      "PROMPT PROTECTED PURGE QUEUE QUOTE " +
      "QUOTES RANDOM RD READ READY " +
      "REALM RECEIVE RECONNECT RECORD RECORD-NAME " +
      "RECORDS RECURSIVE REDEFINES REEL REFERENCE " +
      "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " +
      "REMAINDER REMOVAL RENAMES REPEATED REPLACE " +
      "REPLACING REPORT REPORTING REPORTS REPOSITORY " +
      "REQUIRED RERUN RESERVE RESET RETAINING " +
      "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " +
      "REVERSED REWIND REWRITE RF RH " +
      "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " +
      "RUN SAME SCREEN SD SEARCH " +
      "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " +
      "SELECT SEND SENTENCE SEPARATE SEQUENCE " +
      "SEQUENTIAL SET SHARED SIGN SIZE " +
      "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " +
      "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " +
      "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " +
      "START STARTING STATUS STOP STORE " +
      "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " +
      "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " +
      "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " +
      "TABLE TALLYING TAPE TENANT TERMINAL " +
      "TERMINATE TEST TEXT THAN THEN " +
      "THROUGH THRU TIME TIMES TITLE " +
      "TO TOP TRAILING TRAILING-SIGN TRANSACTION " +
      "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " +
      "UNSTRING UNTIL UP UPDATE UPON " +
      "USAGE USAGE-MODE USE USING VALID " +
      "VALIDATE VALUE VALUES VARYING VLR " +
      "WAIT WHEN WHEN-COMPILED WITH WITHIN " +
      "WORDS WORKING-STORAGE WRITE XML XML-CODE " +
      "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " );

  var builtins = makeKeywords("- * ** / + < <= = > >= ");
  var tests = {
    digit: /\d/,
    digit_or_colon: /[\d:]/,
    hex: /[0-9a-f]/i,
    sign: /[+-]/,
    exponent: /e/i,
    keyword_char: /[^\s\(\[\;\)\]]/,
    symbol: /[\w*+\-]/
  };
  function isNumber(ch, stream){
    // hex
    if ( ch === '0' && stream.eat(/x/i) ) {
      stream.eatWhile(tests.hex);
      return true;
    }
    // leading sign
    if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) {
      stream.eat(tests.sign);
      ch = stream.next();
    }
    if ( tests.digit.test(ch) ) {
      stream.eat(ch);
      stream.eatWhile(tests.digit);
      if ( '.' == stream.peek()) {
        stream.eat('.');
        stream.eatWhile(tests.digit);
      }
      if ( stream.eat(tests.exponent) ) {
        stream.eat(tests.sign);
        stream.eatWhile(tests.digit);
      }
      return true;
    }
    return false;
  }
  return {
    startState: function () {
      return {
        indentStack: null,
        indentation: 0,
        mode: false
      };
    },
    token: function (stream, state) {
      if (state.indentStack == null && stream.sol()) {
        // update indentation, but only if indentStack is empty
        state.indentation = 6 ; //stream.indentation();
      }
      // skip spaces
      if (stream.eatSpace()) {
        return null;
      }
      var returnType = null;
      switch(state.mode){
      case "string": // multi-line string parsing mode
        var next = false;
        while ((next = stream.next()) != null) {
          if (next == "\"" || next == "\'") {
            state.mode = false;
            break;
          }
        }
        returnType = STRING; // continue on in string mode
        break;
      default: // default parsing mode
        var ch = stream.next();
        var col = stream.column();
        if (col >= 0 && col <= 5) {
          returnType = COBOLLINENUM;
        } else if (col >= 72 && col <= 79) {
          stream.skipToEnd();
          returnType = MODTAG;
        } else if (ch == "*" && col == 6) { // comment
          stream.skipToEnd(); // rest of the line is a comment
          returnType = COMMENT;
        } else if (ch == "\"" || ch == "\'") {
          state.mode = "string";
          returnType = STRING;
        } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) {
          returnType = ATOM;
        } else if (ch == ".") {
          returnType = PERIOD;
        } else if (isNumber(ch,stream)){
          returnType = NUMBER;
        } else {
          if (stream.current().match(tests.symbol)) {
            while (col < 71) {
              if (stream.eat(tests.symbol) === undefined) {
                break;
              } else {
                col++;
              }
            }
          }
          if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) {
            returnType = KEYWORD;
          } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) {
            returnType = BUILTIN;
          } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) {
            returnType = ATOM;
          } else returnType = null;
        }
      }
      return returnType;
    },
    indent: function (state) {
      if (state.indentStack == null) return state.indentation;
      return state.indentStack.indent;
    }
  };
});

CodeMirror.defineMIME("text/x-cobol", "cobol");

});
lib/codemirror/mode/cobol/index.html000064400000017624147361034410013513 0ustar00<!doctype html>

<title>CodeMirror: COBOL mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/neat.css">
<link rel="stylesheet" href="../../theme/elegant.css">
<link rel="stylesheet" href="../../theme/erlang-dark.css">
<link rel="stylesheet" href="../../theme/night.css">
<link rel="stylesheet" href="../../theme/monokai.css">
<link rel="stylesheet" href="../../theme/cobalt.css">
<link rel="stylesheet" href="../../theme/eclipse.css">
<link rel="stylesheet" href="../../theme/rubyblue.css">
<link rel="stylesheet" href="../../theme/lesser-dark.css">
<link rel="stylesheet" href="../../theme/xq-dark.css">
<link rel="stylesheet" href="../../theme/xq-light.css">
<link rel="stylesheet" href="../../theme/ambiance.css">
<link rel="stylesheet" href="../../theme/blackboard.css">
<link rel="stylesheet" href="../../theme/vibrant-ink.css">
<link rel="stylesheet" href="../../theme/solarized.css">
<link rel="stylesheet" href="../../theme/twilight.css">
<link rel="stylesheet" href="../../theme/midnight.css">
<link rel="stylesheet" href="../../addon/dialog/dialog.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="cobol.js"></script>
<script src="../../addon/selection/active-line.js"></script>
<script src="../../addon/search/search.js"></script>
<script src="../../addon/dialog/dialog.js"></script>
<script src="../../addon/search/searchcursor.js"></script>
<style>
        .CodeMirror {
          border: 1px solid #eee;
          font-size : 20px;
          height : auto !important;
        }
        .CodeMirror-activeline-background {background: #555555 !important;}
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">COBOL</a>
  </ul>
</div>

<article>
<h2>COBOL mode</h2>

    <p> Select Theme <select onchange="selectTheme()" id="selectTheme">
        <option>default</option>
        <option>ambiance</option>
        <option>blackboard</option>
        <option>cobalt</option>
        <option>eclipse</option>
        <option>elegant</option>
        <option>erlang-dark</option>
        <option>lesser-dark</option>
        <option>midnight</option>
        <option>monokai</option>
        <option>neat</option>
        <option>night</option>
        <option>rubyblue</option>
        <option>solarized dark</option>
        <option>solarized light</option>
        <option selected>twilight</option>
        <option>vibrant-ink</option>
        <option>xq-dark</option>
        <option>xq-light</option>
    </select>    Select Font Size <select onchange="selectFontsize()" id="selectFontSize">
          <option value="13px">13px</option>
          <option value="14px">14px</option>
          <option value="16px">16px</option>
          <option value="18px">18px</option>
          <option value="20px" selected="selected">20px</option>
          <option value="24px">24px</option>
          <option value="26px">26px</option>
          <option value="28px">28px</option>
          <option value="30px">30px</option>
          <option value="32px">32px</option>
          <option value="34px">34px</option>
          <option value="36px">36px</option>
        </select>
<label for="checkBoxReadOnly">Read-only</label>
<input type="checkbox" id="checkBoxReadOnly" onchange="selectReadOnly()">
<label for="id_tabToIndentSpace">Insert Spaces on Tab</label>
<input type="checkbox" id="id_tabToIndentSpace" onchange="tabToIndentSpace()">
</p>
<textarea id="code" name="code">
---------1---------2---------3---------4---------5---------6---------7---------8
12345678911234567892123456789312345678941234567895123456789612345678971234567898
000010 IDENTIFICATION DIVISION.                                        MODTGHERE
000020 PROGRAM-ID.       SAMPLE.
000030 AUTHOR.           TEST SAM. 
000040 DATE-WRITTEN.     5 February 2013
000041
000042* A sample program just to show the form.
000043* The program copies its input to the output,
000044* and counts the number of records.
000045* At the end this number is printed.
000046
000050 ENVIRONMENT DIVISION.
000060 INPUT-OUTPUT SECTION.
000070 FILE-CONTROL.
000080     SELECT STUDENT-FILE     ASSIGN TO SYSIN
000090         ORGANIZATION IS LINE SEQUENTIAL.
000100     SELECT PRINT-FILE       ASSIGN TO SYSOUT
000110         ORGANIZATION IS LINE SEQUENTIAL.
000120
000130 DATA DIVISION.
000140 FILE SECTION.
000150 FD  STUDENT-FILE
000160     RECORD CONTAINS 43 CHARACTERS
000170     DATA RECORD IS STUDENT-IN.
000180 01  STUDENT-IN              PIC X(43).
000190
000200 FD  PRINT-FILE
000210     RECORD CONTAINS 80 CHARACTERS
000220     DATA RECORD IS PRINT-LINE.
000230 01  PRINT-LINE              PIC X(80).
000240
000250 WORKING-STORAGE SECTION.
000260 01  DATA-REMAINS-SWITCH     PIC X(2)      VALUE SPACES.
000261 01  RECORDS-WRITTEN         PIC 99.
000270
000280 01  DETAIL-LINE.
000290     05  FILLER              PIC X(7)      VALUE SPACES.
000300     05  RECORD-IMAGE        PIC X(43).
000310     05  FILLER              PIC X(30)     VALUE SPACES.
000311 
000312 01  SUMMARY-LINE.
000313     05  FILLER              PIC X(7)      VALUE SPACES.
000314     05  TOTAL-READ          PIC 99.
000315     05  FILLER              PIC X         VALUE SPACE.
000316     05  FILLER              PIC X(17)     
000317                 VALUE  'Records were read'.
000318     05  FILLER              PIC X(53)     VALUE SPACES.
000319
000320 PROCEDURE DIVISION.
000321
000330 PREPARE-SENIOR-REPORT.
000340     OPEN INPUT  STUDENT-FILE
000350          OUTPUT PRINT-FILE.
000351     MOVE ZERO TO RECORDS-WRITTEN.
000360     READ STUDENT-FILE
000370         AT END MOVE 'NO' TO DATA-REMAINS-SWITCH
000380     END-READ.
000390     PERFORM PROCESS-RECORDS
000410         UNTIL DATA-REMAINS-SWITCH = 'NO'.
000411     PERFORM PRINT-SUMMARY.
000420     CLOSE STUDENT-FILE
000430           PRINT-FILE.
000440     STOP RUN.
000450
000460 PROCESS-RECORDS.
000470     MOVE STUDENT-IN TO RECORD-IMAGE.
000480     MOVE DETAIL-LINE TO PRINT-LINE.
000490     WRITE PRINT-LINE.
000500     ADD 1 TO RECORDS-WRITTEN.
000510     READ STUDENT-FILE
000520         AT END MOVE 'NO' TO DATA-REMAINS-SWITCH
000530     END-READ. 
000540
000550 PRINT-SUMMARY.
000560     MOVE RECORDS-WRITTEN TO TOTAL-READ.
000570     MOVE SUMMARY-LINE TO PRINT-LINE.
000571     WRITE PRINT-LINE. 
000572
000580
</textarea>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-cobol",
        theme : "twilight",
        styleActiveLine: true,
        showCursorWhenSelecting : true,  
      });
      function selectTheme() {
        var themeInput = document.getElementById("selectTheme");
        var theme = themeInput.options[themeInput.selectedIndex].innerHTML;
        editor.setOption("theme", theme);
      }
      function selectFontsize() {
        var fontSizeInput = document.getElementById("selectFontSize");
        var fontSize = fontSizeInput.options[fontSizeInput.selectedIndex].innerHTML;
        editor.getWrapperElement().style.fontSize = fontSize;
        editor.refresh();
      }
      function selectReadOnly() {
        editor.setOption("readOnly", document.getElementById("checkBoxReadOnly").checked);
      }
      function tabToIndentSpace() {
        if (document.getElementById("id_tabToIndentSpace").checked) {
            editor.setOption("extraKeys", {Tab: function(cm) { cm.replaceSelection("    ", "end"); }});
        } else {
            editor.setOption("extraKeys", {Tab: function(cm) { cm.replaceSelection("    ", "end"); }});
        }
      }
    </script>
  </article>
lib/codemirror/mode/verilog/test.js000064400000015171147361034410013377 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 4}, "verilog");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("binary_literals",
     "[number 1'b0]",
     "[number 1'b1]",
     "[number 1'bx]",
     "[number 1'bz]",
     "[number 1'bX]",
     "[number 1'bZ]",
     "[number 1'B0]",
     "[number 1'B1]",
     "[number 1'Bx]",
     "[number 1'Bz]",
     "[number 1'BX]",
     "[number 1'BZ]",
     "[number 1'b0]",
     "[number 1'b1]",
     "[number 2'b01]",
     "[number 2'bxz]",
     "[number 2'b11]",
     "[number 2'b10]",
     "[number 2'b1Z]",
     "[number 12'b0101_0101_0101]",
     "[number 1'b 0]",
     "[number 'b0101]"
  );

  MT("octal_literals",
     "[number 3'o7]",
     "[number 3'O7]",
     "[number 3'so7]",
     "[number 3'SO7]"
  );

  MT("decimal_literals",
     "[number 0]",
     "[number 1]",
     "[number 7]",
     "[number 123_456]",
     "[number 'd33]",
     "[number 8'd255]",
     "[number 8'D255]",
     "[number 8'sd255]",
     "[number 8'SD255]",
     "[number 32'd123]",
     "[number 32 'd123]",
     "[number 32 'd 123]"
  );

  MT("hex_literals",
     "[number 4'h0]",
     "[number 4'ha]",
     "[number 4'hF]",
     "[number 4'hx]",
     "[number 4'hz]",
     "[number 4'hX]",
     "[number 4'hZ]",
     "[number 32'hdc78]",
     "[number 32'hDC78]",
     "[number 32 'hDC78]",
     "[number 32'h DC78]",
     "[number 32 'h DC78]",
     "[number 32'h44x7]",
     "[number 32'hFFF?]"
  );

  MT("real_number_literals",
     "[number 1.2]",
     "[number 0.1]",
     "[number 2394.26331]",
     "[number 1.2E12]",
     "[number 1.2e12]",
     "[number 1.30e-2]",
     "[number 0.1e-0]",
     "[number 23E10]",
     "[number 29E-2]",
     "[number 236.123_763_e-12]"
  );

  MT("operators",
     "[meta ^]"
  );

  MT("keywords",
     "[keyword logic]",
     "[keyword logic] [variable foo]",
     "[keyword reg] [variable abc]"
  );

  MT("variables",
     "[variable _leading_underscore]",
     "[variable _if]",
     "[number 12] [variable foo]",
     "[variable foo] [number 14]"
  );

  MT("tick_defines",
     "[def `FOO]",
     "[def `foo]",
     "[def `FOO_bar]"
  );

  MT("system_calls",
     "[meta $display]",
     "[meta $vpi_printf]"
  );

  MT("line_comment", "[comment // Hello world]");

  // Alignment tests
  MT("align_port_map_style1",
     /**
      * mod mod(.a(a),
      *         .b(b)
      *        );
      */
     "[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],",
     "        .[variable b][bracket (][variable b][bracket )]",
     "       [bracket )];",
     ""
  );

  MT("align_port_map_style2",
     /**
      * mod mod(
      *     .a(a),
      *     .b(b)
      * );
      */
     "[variable mod] [variable mod][bracket (]",
     "    .[variable a][bracket (][variable a][bracket )],",
     "    .[variable b][bracket (][variable b][bracket )]",
     "[bracket )];",
     ""
  );

  // Indentation tests
  MT("indent_single_statement_if",
      "[keyword if] [bracket (][variable foo][bracket )]",
      "    [keyword break];",
      ""
  );

  MT("no_indent_after_single_line_if",
      "[keyword if] [bracket (][variable foo][bracket )] [keyword break];",
      ""
  );

  MT("indent_after_if_begin_same_line",
      "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]",
      "    [keyword break];",
      "    [keyword break];",
      "[keyword end]",
      ""
  );

  MT("indent_after_if_begin_next_line",
      "[keyword if] [bracket (][variable foo][bracket )]",
      "    [keyword begin]",
      "        [keyword break];",
      "        [keyword break];",
      "    [keyword end]",
      ""
  );

  MT("indent_single_statement_if_else",
      "[keyword if] [bracket (][variable foo][bracket )]",
      "    [keyword break];",
      "[keyword else]",
      "    [keyword break];",
      ""
  );

  MT("indent_if_else_begin_same_line",
      "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]",
      "    [keyword break];",
      "    [keyword break];",
      "[keyword end] [keyword else] [keyword begin]",
      "    [keyword break];",
      "    [keyword break];",
      "[keyword end]",
      ""
  );

  MT("indent_if_else_begin_next_line",
      "[keyword if] [bracket (][variable foo][bracket )]",
      "    [keyword begin]",
      "        [keyword break];",
      "        [keyword break];",
      "    [keyword end]",
      "[keyword else]",
      "    [keyword begin]",
      "        [keyword break];",
      "        [keyword break];",
      "    [keyword end]",
      ""
  );

  MT("indent_if_nested_without_begin",
      "[keyword if] [bracket (][variable foo][bracket )]",
      "    [keyword if] [bracket (][variable foo][bracket )]",
      "        [keyword if] [bracket (][variable foo][bracket )]",
      "            [keyword break];",
      ""
  );

  MT("indent_case",
      "[keyword case] [bracket (][variable state][bracket )]",
      "    [variable FOO]:",
      "        [keyword break];",
      "    [variable BAR]:",
      "        [keyword break];",
      "[keyword endcase]",
      ""
  );

  MT("unindent_after_end_with_preceding_text",
      "[keyword begin]",
      "    [keyword break]; [keyword end]",
      ""
  );

  MT("export_function_one_line_does_not_indent",
     "[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];",
     ""
  );

  MT("export_task_one_line_does_not_indent",
     "[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];",
     ""
  );

  MT("export_function_two_lines_indents_properly",
    "[keyword export]",
    "    [string \"DPI-C\"] [keyword function] [variable helloFromSV];",
    ""
  );

  MT("export_task_two_lines_indents_properly",
    "[keyword export]",
    "    [string \"DPI-C\"] [keyword task] [variable helloFromSV];",
    ""
  );

  MT("import_function_one_line_does_not_indent",
    "[keyword import] [string \"DPI-C\"] [keyword function] [variable helloFromC];",
    ""
  );

  MT("import_task_one_line_does_not_indent",
    "[keyword import] [string \"DPI-C\"] [keyword task] [variable helloFromC];",
    ""
  );

  MT("import_package_single_line_does_not_indent",
    "[keyword import] [variable p]::[variable x];",
    "[keyword import] [variable p]::[variable y];",
    ""
  );

  MT("covergroup_with_function_indents_properly",
    "[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];",
    "    [variable c] : [keyword coverpoint] [variable c];",
    "[keyword endgroup]: [variable cg]",
    ""
  );

})();
lib/codemirror/mode/verilog/index.html000064400000005073147361034410014057 0ustar00<!doctype html>

<title>CodeMirror: Verilog/SystemVerilog mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="verilog.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Verilog/SystemVerilog</a>
  </ul>
</div>

<article>
<h2>SystemVerilog mode</h2>

<div><textarea id="code" name="code">
// Literals
1'b0
1'bx
1'bz
16'hDC78
'hdeadbeef
'b0011xxzz
1234
32'd5678
3.4e6
-128.7

// Macro definition
`define BUS_WIDTH = 8;

// Module definition
module block(
  input                   clk,
  input                   rst_n,
  input  [`BUS_WIDTH-1:0] data_in,
  output [`BUS_WIDTH-1:0] data_out
);
  
  always @(posedge clk or negedge rst_n) begin

    if (~rst_n) begin
      data_out <= 8'b0;
    end else begin
      data_out <= data_in;
    end
    
    if (~rst_n)
      data_out <= 8'b0;
    else
      data_out <= data_in;
    
    if (~rst_n)
      begin
        data_out <= 8'b0;
      end
    else
      begin
        data_out <= data_in;
      end

  end
  
endmodule

// Class definition
class test;

  /**
   * Sum two integers
   */
  function int sum(int a, int b);
    int result = a + b;
    string msg = $sformatf("%d + %d = %d", a, b, result);
    $display(msg);
    return result;
  endfunction
  
  task delay(int num_cycles);
    repeat(num_cycles) #1;
  endtask
  
endclass

</textarea></div>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    matchBrackets: true,
    mode: {
      name: "verilog",
      noIndentKeywords: ["package"]
    }
  });
</script>

<p>
Syntax highlighting and indentation for the Verilog and SystemVerilog languages (IEEE 1800).
<h2>Configuration options:</h2>
  <ul>
    <li><strong>noIndentKeywords</strong> - List of keywords which should not cause indentation to increase. E.g. ["package", "module"]. Default: None</li>
  </ul>
</p>

<p><strong>MIME types defined:</strong> <code>text/x-verilog</code> and <code>text/x-systemverilog</code>.</p>
</article>
lib/codemirror/mode/verilog/verilog.js000064400000045414147361034410014072 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("verilog", function(config, parserConfig) {

  var indentUnit = config.indentUnit,
      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,
      dontAlignCalls = parserConfig.dontAlignCalls,
      noIndentKeywords = parserConfig.noIndentKeywords || [],
      multiLineStrings = parserConfig.multiLineStrings,
      hooks = parserConfig.hooks || {};

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  /**
   * Keywords from IEEE 1800-2012
   */
  var keywords = words(
    "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " +
    "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " +
    "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " +
    "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " +
    "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " +
    "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " +
    "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " +
    "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " +
    "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " +
    "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " +
    "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " +
    "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " +
    "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " +
    "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " +
    "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " +
    "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " +
    "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " +
    "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor");

  /** Operators from IEEE 1800-2012
     unary_operator ::=
       + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~
     binary_operator ::=
       + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | **
       | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<<
       | -> | <->
     inc_or_dec_operator ::= ++ | --
     unary_module_path_operator ::=
       ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~
     binary_module_path_operator ::=
       == | != | && | || | & | | | ^ | ^~ | ~^
  */
  var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/;
  var isBracketChar = /[\[\]{}()]/;

  var unsignedNumber = /\d[0-9_]*/;
  var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i;
  var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i;
  var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i;
  var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i;
  var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i;

  var closingBracketOrWord = /^((\w+)|[)}\]])/;
  var closingBracket = /[)}\]]/;

  var curPunc;
  var curKeyword;

  // Block openings which are closed by a matching keyword in the form of ("end" + keyword)
  // E.g. "task" => "endtask"
  var blockKeywords = words(
    "case checker class clocking config function generate interface module package" +
    "primitive program property specify sequence table task"
  );

  // Opening/closing pairs
  var openClose = {};
  for (var keyword in blockKeywords) {
    openClose[keyword] = "end" + keyword;
  }
  openClose["begin"] = "end";
  openClose["casex"] = "endcase";
  openClose["casez"] = "endcase";
  openClose["do"   ] = "while";
  openClose["fork" ] = "join;join_any;join_none";
  openClose["covergroup"] = "endgroup";

  for (var i in noIndentKeywords) {
    var keyword = noIndentKeywords[i];
    if (openClose[keyword]) {
      openClose[keyword] = undefined;
    }
  }

  // Keywords which open statements that are ended with a semi-colon
  var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while");

  function tokenBase(stream, state) {
    var ch = stream.peek(), style;
    if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style;
    if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false)
      return style;

    if (/[,;:\.]/.test(ch)) {
      curPunc = stream.next();
      return null;
    }
    if (isBracketChar.test(ch)) {
      curPunc = stream.next();
      return "bracket";
    }
    // Macros (tick-defines)
    if (ch == '`') {
      stream.next();
      if (stream.eatWhile(/[\w\$_]/)) {
        return "def";
      } else {
        return null;
      }
    }
    // System calls
    if (ch == '$') {
      stream.next();
      if (stream.eatWhile(/[\w\$_]/)) {
        return "meta";
      } else {
        return null;
      }
    }
    // Time literals
    if (ch == '#') {
      stream.next();
      stream.eatWhile(/[\d_.]/);
      return "def";
    }
    // Strings
    if (ch == '"') {
      stream.next();
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    // Comments
    if (ch == "/") {
      stream.next();
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
      stream.backUp(1);
    }

    // Numeric literals
    if (stream.match(realLiteral) ||
        stream.match(decimalLiteral) ||
        stream.match(binaryLiteral) ||
        stream.match(octLiteral) ||
        stream.match(hexLiteral) ||
        stream.match(unsignedNumber) ||
        stream.match(realLiteral)) {
      return "number";
    }

    // Operators
    if (stream.eatWhile(isOperatorChar)) {
      return "meta";
    }

    // Keywords / plain variables
    if (stream.eatWhile(/[\w\$_]/)) {
      var cur = stream.current();
      if (keywords[cur]) {
        if (openClose[cur]) {
          curPunc = "newblock";
        }
        if (statementKeywords[cur]) {
          curPunc = "newstatement";
        }
        curKeyword = cur;
        return "keyword";
      }
      return "variable";
    }

    stream.next();
    return null;
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    var indent = state.indented;
    var c = new Context(indent, col, type, null, state.context);
    return state.context = c;
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}") {
      state.indented = state.context.indented;
    }
    return state.context = state.context.prev;
  }

  function isClosing(text, contextClosing) {
    if (text == contextClosing) {
      return true;
    } else {
      // contextClosing may be multiple keywords separated by ;
      var closingKeywords = contextClosing.split(";");
      for (var i in closingKeywords) {
        if (text == closingKeywords[i]) {
          return true;
        }
      }
      return false;
    }
  }

  function buildElectricInputRegEx() {
    // Reindentation should occur on any bracket char: {}()[]
    // or on a match of any of the block closing keywords, at
    // the end of a line
    var allClosings = [];
    for (var i in openClose) {
      if (openClose[i]) {
        var closings = openClose[i].split(";");
        for (var j in closings) {
          allClosings.push(closings[j]);
        }
      }
    }
    var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$");
    return re;
  }

  // Interface
  return {

    // Regex to force current line to reindent
    electricInput: buildElectricInputRegEx(),

    startState: function(basecolumn) {
      var state = {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
        indented: 0,
        startOfLine: true
      };
      if (hooks.startState) hooks.startState(state);
      return state;
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (hooks.token) hooks.token(stream, state);
      if (stream.eatSpace()) return null;
      curPunc = null;
      curKeyword = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta" || style == "variable") return style;
      if (ctx.align == null) ctx.align = true;

      if (curPunc == ctx.type) {
        popContext(state);
      } else if ((curPunc == ";" && ctx.type == "statement") ||
               (ctx.type && isClosing(curKeyword, ctx.type))) {
        ctx = popContext(state);
        while (ctx && ctx.type == "statement") ctx = popContext(state);
      } else if (curPunc == "{") {
        pushContext(state, stream.column(), "}");
      } else if (curPunc == "[") {
        pushContext(state, stream.column(), "]");
      } else if (curPunc == "(") {
        pushContext(state, stream.column(), ")");
      } else if (ctx && ctx.type == "endcase" && curPunc == ":") {
        pushContext(state, stream.column(), "statement");
      } else if (curPunc == "newstatement") {
        pushContext(state, stream.column(), "statement");
      } else if (curPunc == "newblock") {
        if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) {
          // The 'function' keyword can appear in some other contexts where it actually does not
          // indicate a function (import/export DPI and covergroup definitions).
          // Do nothing in this case
        } else if (curKeyword == "task" && ctx && ctx.type == "statement") {
          // Same thing for task
        } else {
          var close = openClose[curKeyword];
          pushContext(state, stream.column(), close);
        }
      }

      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;
      if (hooks.indent) {
        var fromHook = hooks.indent(state);
        if (fromHook >= 0) return fromHook;
      }
      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
      if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev;
      var closing = false;
      var possibleClosing = textAfter.match(closingBracketOrWord);
      if (possibleClosing)
        closing = isClosing(possibleClosing[0], ctx.type);
      if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit);
      else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1);
      else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit;
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

  CodeMirror.defineMIME("text/x-verilog", {
    name: "verilog"
  });

  CodeMirror.defineMIME("text/x-systemverilog", {
    name: "verilog"
  });

  // TLVVerilog mode

  var tlvchScopePrefixes = {
    ">": "property", "->": "property", "-": "hr", "|": "link", "?$": "qualifier", "?*": "qualifier",
    "@-": "variable-3", "@": "variable-3", "?": "qualifier"
  };

  function tlvGenIndent(stream, state) {
    var tlvindentUnit = 2;
    var rtnIndent = -1, indentUnitRq = 0, curIndent = stream.indentation();
    switch (state.tlvCurCtlFlowChar) {
    case "\\":
      curIndent = 0;
      break;
    case "|":
      if (state.tlvPrevPrevCtlFlowChar == "@") {
        indentUnitRq = -2; //-2 new pipe rq after cur pipe
        break;
      }
      if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar])
        indentUnitRq = 1; // +1 new scope
      break;
    case "M":  // m4
      if (state.tlvPrevPrevCtlFlowChar == "@") {
        indentUnitRq = -2; //-2 new inst rq after  pipe
        break;
      }
      if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar])
        indentUnitRq = 1; // +1 new scope
      break;
    case "@":
      if (state.tlvPrevCtlFlowChar == "S")
        indentUnitRq = -1; // new pipe stage after stmts
      if (state.tlvPrevCtlFlowChar == "|")
        indentUnitRq = 1; // 1st pipe stage
      break;
    case "S":
      if (state.tlvPrevCtlFlowChar == "@")
        indentUnitRq = 1; // flow in pipe stage
      if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar])
        indentUnitRq = 1; // +1 new scope
      break;
    }
    var statementIndentUnit = tlvindentUnit;
    rtnIndent = curIndent + (indentUnitRq*statementIndentUnit);
    return rtnIndent >= 0 ? rtnIndent : curIndent;
  }

  CodeMirror.defineMIME("text/x-tlv", {
    name: "verilog",
    hooks: {
      "\\": function(stream, state) {
        var vxIndent = 0, style = false;
        var curPunc  = stream.string;
        if ((stream.sol()) && ((/\\SV/.test(stream.string)) || (/\\TLV/.test(stream.string)))) {
          curPunc = (/\\TLV_version/.test(stream.string))
            ? "\\TLV_version" : stream.string;
          stream.skipToEnd();
          if (curPunc == "\\SV" && state.vxCodeActive) {state.vxCodeActive = false;};
          if ((/\\TLV/.test(curPunc) && !state.vxCodeActive)
            || (curPunc=="\\TLV_version" && state.vxCodeActive)) {state.vxCodeActive = true;};
          style = "keyword";
          state.tlvCurCtlFlowChar  = state.tlvPrevPrevCtlFlowChar
            = state.tlvPrevCtlFlowChar = "";
          if (state.vxCodeActive == true) {
            state.tlvCurCtlFlowChar  = "\\";
            vxIndent = tlvGenIndent(stream, state);
          }
          state.vxIndentRq = vxIndent;
        }
        return style;
      },
      tokenBase: function(stream, state) {
        var vxIndent = 0, style = false;
        var tlvisOperatorChar = /[\[\]=:]/;
        var tlvkpScopePrefixs = {
          "**":"variable-2", "*":"variable-2", "$$":"variable", "$":"variable",
          "^^":"attribute", "^":"attribute"};
        var ch = stream.peek();
        var vxCurCtlFlowCharValueAtStart = state.tlvCurCtlFlowChar;
        if (state.vxCodeActive == true) {
          if (/[\[\]{}\(\);\:]/.test(ch)) {
            // bypass nesting and 1 char punc
            style = "meta";
            stream.next();
          } else if (ch == "/") {
            stream.next();
            if (stream.eat("/")) {
              stream.skipToEnd();
              style = "comment";
              state.tlvCurCtlFlowChar = "S";
            } else {
              stream.backUp(1);
            }
          } else if (ch == "@") {
            // pipeline stage
            style = tlvchScopePrefixes[ch];
            state.tlvCurCtlFlowChar = "@";
            stream.next();
            stream.eatWhile(/[\w\$_]/);
          } else if (stream.match(/\b[mM]4+/, true)) { // match: function(pattern, consume, caseInsensitive)
            // m4 pre proc
            stream.skipTo("(");
            style = "def";
            state.tlvCurCtlFlowChar = "M";
          } else if (ch == "!" && stream.sol()) {
            // v stmt in tlv region
            // state.tlvCurCtlFlowChar  = "S";
            style = "comment";
            stream.next();
          } else if (tlvisOperatorChar.test(ch)) {
            // operators
            stream.eatWhile(tlvisOperatorChar);
            style = "operator";
          } else if (ch == "#") {
            // phy hier
            state.tlvCurCtlFlowChar  = (state.tlvCurCtlFlowChar == "")
              ? ch : state.tlvCurCtlFlowChar;
            stream.next();
            stream.eatWhile(/[+-]\d/);
            style = "tag";
          } else if (tlvkpScopePrefixs.propertyIsEnumerable(ch)) {
            // special TLV operators
            style = tlvkpScopePrefixs[ch];
            state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? "S" : state.tlvCurCtlFlowChar;  // stmt
            stream.next();
            stream.match(/[a-zA-Z_0-9]+/);
          } else if (style = tlvchScopePrefixes[ch] || false) {
            // special TLV operators
            state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? ch : state.tlvCurCtlFlowChar;
            stream.next();
            stream.match(/[a-zA-Z_0-9]+/);
          }
          if (state.tlvCurCtlFlowChar != vxCurCtlFlowCharValueAtStart) { // flow change
            vxIndent = tlvGenIndent(stream, state);
            state.vxIndentRq = vxIndent;
          }
        }
        return style;
      },
      token: function(stream, state) {
        if (state.vxCodeActive == true && stream.sol() && state.tlvCurCtlFlowChar != "") {
          state.tlvPrevPrevCtlFlowChar = state.tlvPrevCtlFlowChar;
          state.tlvPrevCtlFlowChar = state.tlvCurCtlFlowChar;
          state.tlvCurCtlFlowChar = "";
        }
      },
      indent: function(state) {
        return (state.vxCodeActive == true) ? state.vxIndentRq : -1;
      },
      startState: function(state) {
        state.tlvCurCtlFlowChar = "";
        state.tlvPrevCtlFlowChar = "";
        state.tlvPrevPrevCtlFlowChar = "";
        state.vxCodeActive = true;
        state.vxIndentRq = 0;
      }
    }
  });
});
lib/codemirror/mode/django/index.html000064400000004035147361034410013647 0ustar00<!doctype html>

<title>CodeMirror: Django template mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/mdn-like.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/overlay.js"></script>
<script src="../xml/xml.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="django.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Django</a>
  </ul>
</div>

<article>
<h2>Django template mode</h2>
<form><textarea id="code" name="code">
<!doctype html>
<html>
  <head>
    <title>My Django web application</title>
  </head>
  <body>
    <h1>
      {{ page.title|capfirst }}
    </h1>
    <ul class="my-list">
      {# traverse a list of items and produce links to their views. #}
      {% for item in items %}
      <li>
        <a href="{% url 'item_view' item.name|slugify %}">
          {{ item.name }}
        </a>
      </li>
      {% empty %}
      <li>You have no items in your list.</li>
      {% endfor %}
    </ul>
    {% comment "this is a forgotten footer" %}
    <footer></footer>
    {% endcomment %}
  </body>
</html>
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "django",
        indentUnit: 2,
        indentWithTabs: true,
        theme: "mdn-like"
      });
    </script>

    <p>Mode for HTML with embedded Django template markup.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-django</code></p>
  </article>
lib/codemirror/mode/django/django.js000064400000027017147361034410013457 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"),
        require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../htmlmixed/htmlmixed",
            "../../addon/mode/overlay"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("django:inner", function() {
    var keywords = ["block", "endblock", "for", "endfor", "true", "false", "filter", "endfilter",
                    "loop", "none", "self", "super", "if", "elif", "endif", "as", "else", "import",
                    "with", "endwith", "without", "context", "ifequal", "endifequal", "ifnotequal",
                    "endifnotequal", "extends", "include", "load", "comment", "endcomment",
                    "empty", "url", "static", "trans", "blocktrans", "endblocktrans", "now",
                    "regroup", "lorem", "ifchanged", "endifchanged", "firstof", "debug", "cycle",
                    "csrf_token", "autoescape", "endautoescape", "spaceless", "endspaceless",
                    "ssi", "templatetag", "verbatim", "endverbatim", "widthratio"],
        filters = ["add", "addslashes", "capfirst", "center", "cut", "date",
                   "default", "default_if_none", "dictsort",
                   "dictsortreversed", "divisibleby", "escape", "escapejs",
                   "filesizeformat", "first", "floatformat", "force_escape",
                   "get_digit", "iriencode", "join", "last", "length",
                   "length_is", "linebreaks", "linebreaksbr", "linenumbers",
                   "ljust", "lower", "make_list", "phone2numeric", "pluralize",
                   "pprint", "random", "removetags", "rjust", "safe",
                   "safeseq", "slice", "slugify", "stringformat", "striptags",
                   "time", "timesince", "timeuntil", "title", "truncatechars",
                   "truncatechars_html", "truncatewords", "truncatewords_html",
                   "unordered_list", "upper", "urlencode", "urlize",
                   "urlizetrunc", "wordcount", "wordwrap", "yesno"],
        operators = ["==", "!=", "<", ">", "<=", ">="],
        wordOperators = ["in", "not", "or", "and"];

    keywords = new RegExp("^\\b(" + keywords.join("|") + ")\\b");
    filters = new RegExp("^\\b(" + filters.join("|") + ")\\b");
    operators = new RegExp("^\\b(" + operators.join("|") + ")\\b");
    wordOperators = new RegExp("^\\b(" + wordOperators.join("|") + ")\\b");

    // We have to return "null" instead of null, in order to avoid string
    // styling as the default, when using Django templates inside HTML
    // element attributes
    function tokenBase (stream, state) {
      // Attempt to identify a variable, template or comment tag respectively
      if (stream.match("{{")) {
        state.tokenize = inVariable;
        return "tag";
      } else if (stream.match("{%")) {
        state.tokenize = inTag;
        return "tag";
      } else if (stream.match("{#")) {
        state.tokenize = inComment;
        return "comment";
      }

      // Ignore completely any stream series that do not match the
      // Django template opening tags.
      while (stream.next() != null && !stream.match(/\{[{%#]/, false)) {}
      return null;
    }

    // A string can be included in either single or double quotes (this is
    // the delimiter). Mark everything as a string until the start delimiter
    // occurs again.
    function inString (delimiter, previousTokenizer) {
      return function (stream, state) {
        if (!state.escapeNext && stream.eat(delimiter)) {
          state.tokenize = previousTokenizer;
        } else {
          if (state.escapeNext) {
            state.escapeNext = false;
          }

          var ch = stream.next();

          // Take into account the backslash for escaping characters, such as
          // the string delimiter.
          if (ch == "\\") {
            state.escapeNext = true;
          }
        }

        return "string";
      };
    }

    // Apply Django template variable syntax highlighting
    function inVariable (stream, state) {
      // Attempt to match a dot that precedes a property
      if (state.waitDot) {
        state.waitDot = false;

        if (stream.peek() != ".") {
          return "null";
        }

        // Dot followed by a non-word character should be considered an error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat(".")) {
          state.waitProperty = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for property.");
        }
      }

      // Attempt to match a pipe that precedes a filter
      if (state.waitPipe) {
        state.waitPipe = false;

        if (stream.peek() != "|") {
          return "null";
        }

        // Pipe followed by a non-word character should be considered an error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat("|")) {
          state.waitFilter = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for filter.");
        }
      }

      // Highlight properties
      if (state.waitProperty) {
        state.waitProperty = false;
        if (stream.match(/\b(\w+)\b/)) {
          state.waitDot = true;  // A property can be followed by another property
          state.waitPipe = true;  // A property can be followed by a filter
          return "property";
        }
      }

      // Highlight filters
      if (state.waitFilter) {
          state.waitFilter = false;
        if (stream.match(filters)) {
          return "variable-2";
        }
      }

      // Ignore all white spaces
      if (stream.eatSpace()) {
        state.waitProperty = false;
        return "null";
      }

      // Identify numbers
      if (stream.match(/\b\d+(\.\d+)?\b/)) {
        return "number";
      }

      // Identify strings
      if (stream.match("'")) {
        state.tokenize = inString("'", state.tokenize);
        return "string";
      } else if (stream.match('"')) {
        state.tokenize = inString('"', state.tokenize);
        return "string";
      }

      // Attempt to find the variable
      if (stream.match(/\b(\w+)\b/) && !state.foundVariable) {
        state.waitDot = true;
        state.waitPipe = true;  // A property can be followed by a filter
        return "variable";
      }

      // If found closing tag reset
      if (stream.match("}}")) {
        state.waitProperty = null;
        state.waitFilter = null;
        state.waitDot = null;
        state.waitPipe = null;
        state.tokenize = tokenBase;
        return "tag";
      }

      // If nothing was found, advance to the next character
      stream.next();
      return "null";
    }

    function inTag (stream, state) {
      // Attempt to match a dot that precedes a property
      if (state.waitDot) {
        state.waitDot = false;

        if (stream.peek() != ".") {
          return "null";
        }

        // Dot followed by a non-word character should be considered an error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat(".")) {
          state.waitProperty = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for property.");
        }
      }

      // Attempt to match a pipe that precedes a filter
      if (state.waitPipe) {
        state.waitPipe = false;

        if (stream.peek() != "|") {
          return "null";
        }

        // Pipe followed by a non-word character should be considered an error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat("|")) {
          state.waitFilter = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for filter.");
        }
      }

      // Highlight properties
      if (state.waitProperty) {
        state.waitProperty = false;
        if (stream.match(/\b(\w+)\b/)) {
          state.waitDot = true;  // A property can be followed by another property
          state.waitPipe = true;  // A property can be followed by a filter
          return "property";
        }
      }

      // Highlight filters
      if (state.waitFilter) {
          state.waitFilter = false;
        if (stream.match(filters)) {
          return "variable-2";
        }
      }

      // Ignore all white spaces
      if (stream.eatSpace()) {
        state.waitProperty = false;
        return "null";
      }

      // Identify numbers
      if (stream.match(/\b\d+(\.\d+)?\b/)) {
        return "number";
      }

      // Identify strings
      if (stream.match("'")) {
        state.tokenize = inString("'", state.tokenize);
        return "string";
      } else if (stream.match('"')) {
        state.tokenize = inString('"', state.tokenize);
        return "string";
      }

      // Attempt to match an operator
      if (stream.match(operators)) {
        return "operator";
      }

      // Attempt to match a word operator
      if (stream.match(wordOperators)) {
        return "keyword";
      }

      // Attempt to match a keyword
      var keywordMatch = stream.match(keywords);
      if (keywordMatch) {
        if (keywordMatch[0] == "comment") {
          state.blockCommentTag = true;
        }
        return "keyword";
      }

      // Attempt to match a variable
      if (stream.match(/\b(\w+)\b/)) {
        state.waitDot = true;
        state.waitPipe = true;  // A property can be followed by a filter
        return "variable";
      }

      // If found closing tag reset
      if (stream.match("%}")) {
        state.waitProperty = null;
        state.waitFilter = null;
        state.waitDot = null;
        state.waitPipe = null;
        // If the tag that closes is a block comment tag, we want to mark the
        // following code as comment, until the tag closes.
        if (state.blockCommentTag) {
          state.blockCommentTag = false;  // Release the "lock"
          state.tokenize = inBlockComment;
        } else {
          state.tokenize = tokenBase;
        }
        return "tag";
      }

      // If nothing was found, advance to the next character
      stream.next();
      return "null";
    }

    // Mark everything as comment inside the tag and the tag itself.
    function inComment (stream, state) {
      if (stream.match(/^.*?#\}/)) state.tokenize = tokenBase
      else stream.skipToEnd()
      return "comment";
    }

    // Mark everything as a comment until the `blockcomment` tag closes.
    function inBlockComment (stream, state) {
      if (stream.match(/\{%\s*endcomment\s*%\}/, false)) {
        state.tokenize = inTag;
        stream.match("{%");
        return "tag";
      } else {
        stream.next();
        return "comment";
      }
    }

    return {
      startState: function () {
        return {tokenize: tokenBase};
      },
      token: function (stream, state) {
        return state.tokenize(stream, state);
      },
      blockCommentStart: "{% comment %}",
      blockCommentEnd: "{% endcomment %}"
    };
  });

  CodeMirror.defineMode("django", function(config) {
    var htmlBase = CodeMirror.getMode(config, "text/html");
    var djangoInner = CodeMirror.getMode(config, "django:inner");
    return CodeMirror.overlayMode(htmlBase, djangoInner);
  });

  CodeMirror.defineMIME("text/x-django", "django");
});
lib/codemirror/mode/cypher/cypher.js000064400000014205147361034410013532 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// By the Neo4j Team and contributors.
// https://github.com/neo4j-contrib/CodeMirror

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  var wordRegexp = function(words) {
    return new RegExp("^(?:" + words.join("|") + ")$", "i");
  };

  CodeMirror.defineMode("cypher", function(config) {
    var tokenBase = function(stream/*, state*/) {
      var ch = stream.next();
      if (ch === "\"" || ch === "'") {
        stream.match(/.+?["']/);
        return "string";
      }
      if (/[{}\(\),\.;\[\]]/.test(ch)) {
        curPunc = ch;
        return "node";
      } else if (ch === "/" && stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      } else if (operatorChars.test(ch)) {
        stream.eatWhile(operatorChars);
        return null;
      } else {
        stream.eatWhile(/[_\w\d]/);
        if (stream.eat(":")) {
          stream.eatWhile(/[\w\d_\-]/);
          return "atom";
        }
        var word = stream.current();
        if (funcs.test(word)) return "builtin";
        if (preds.test(word)) return "def";
        if (keywords.test(word)) return "keyword";
        return "variable";
      }
    };
    var pushContext = function(state, type, col) {
      return state.context = {
        prev: state.context,
        indent: state.indent,
        col: col,
        type: type
      };
    };
    var popContext = function(state) {
      state.indent = state.context.indent;
      return state.context = state.context.prev;
    };
    var indentUnit = config.indentUnit;
    var curPunc;
    var funcs = wordRegexp(["abs", "acos", "allShortestPaths", "asin", "atan", "atan2", "avg", "ceil", "coalesce", "collect", "cos", "cot", "count", "degrees", "e", "endnode", "exp", "extract", "filter", "floor", "haversin", "head", "id", "keys", "labels", "last", "left", "length", "log", "log10", "lower", "ltrim", "max", "min", "node", "nodes", "percentileCont", "percentileDisc", "pi", "radians", "rand", "range", "reduce", "rel", "relationship", "relationships", "replace", "reverse", "right", "round", "rtrim", "shortestPath", "sign", "sin", "size", "split", "sqrt", "startnode", "stdev", "stdevp", "str", "substring", "sum", "tail", "tan", "timestamp", "toFloat", "toInt", "toString", "trim", "type", "upper"]);
    var preds = wordRegexp(["all", "and", "any", "contains", "exists", "has", "in", "none", "not", "or", "single", "xor"]);
    var keywords = wordRegexp(["as", "asc", "ascending", "assert", "by", "case", "commit", "constraint", "create", "csv", "cypher", "delete", "desc", "descending", "detach", "distinct", "drop", "else", "end", "ends", "explain", "false", "fieldterminator", "foreach", "from", "headers", "in", "index", "is", "join", "limit", "load", "match", "merge", "null", "on", "optional", "order", "periodic", "profile", "remove", "return", "scan", "set", "skip", "start", "starts", "then", "true", "union", "unique", "unwind", "using", "when", "where", "with"]);
    var operatorChars = /[*+\-<>=&|~%^]/;

    return {
      startState: function(/*base*/) {
        return {
          tokenize: tokenBase,
          context: null,
          indent: 0,
          col: 0
        };
      },
      token: function(stream, state) {
        if (stream.sol()) {
          if (state.context && (state.context.align == null)) {
            state.context.align = false;
          }
          state.indent = stream.indentation();
        }
        if (stream.eatSpace()) {
          return null;
        }
        var style = state.tokenize(stream, state);
        if (style !== "comment" && state.context && (state.context.align == null) && state.context.type !== "pattern") {
          state.context.align = true;
        }
        if (curPunc === "(") {
          pushContext(state, ")", stream.column());
        } else if (curPunc === "[") {
          pushContext(state, "]", stream.column());
        } else if (curPunc === "{") {
          pushContext(state, "}", stream.column());
        } else if (/[\]\}\)]/.test(curPunc)) {
          while (state.context && state.context.type === "pattern") {
            popContext(state);
          }
          if (state.context && curPunc === state.context.type) {
            popContext(state);
          }
        } else if (curPunc === "." && state.context && state.context.type === "pattern") {
          popContext(state);
        } else if (/atom|string|variable/.test(style) && state.context) {
          if (/[\}\]]/.test(state.context.type)) {
            pushContext(state, "pattern", stream.column());
          } else if (state.context.type === "pattern" && !state.context.align) {
            state.context.align = true;
            state.context.col = stream.column();
          }
        }
        return style;
      },
      indent: function(state, textAfter) {
        var firstChar = textAfter && textAfter.charAt(0);
        var context = state.context;
        if (/[\]\}]/.test(firstChar)) {
          while (context && context.type === "pattern") {
            context = context.prev;
          }
        }
        var closing = context && firstChar === context.type;
        if (!context) return 0;
        if (context.type === "keywords") return CodeMirror.commands.newlineAndIndent;
        if (context.align) return context.col + (closing ? 0 : 1);
        return context.indent + (closing ? 0 : indentUnit);
      }
    };
  });

  CodeMirror.modeExtensions["cypher"] = {
    autoFormatLineBreaks: function(text) {
      var i, lines, reProcessedPortion;
      var lines = text.split("\n");
      var reProcessedPortion = /\s+\b(return|where|order by|match|with|skip|limit|create|delete|set)\b\s/g;
      for (var i = 0; i < lines.length; i++)
        lines[i] = lines[i].replace(reProcessedPortion, " \n$1 ").trim();
      return lines.join("\n");
    }
  };

  CodeMirror.defineMIME("application/x-cypher-query", "cypher");

});
lib/codemirror/mode/cypher/index.html000064400000003564147361034410013705 0ustar00<!doctype html>

<title>CodeMirror: Cypher Mode for CodeMirror</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css" />
<link rel="stylesheet" href="../../theme/neo.css" />
<script src="../../lib/codemirror.js"></script>
<script src="cypher.js"></script>
<style>
.CodeMirror {
    border-top: 1px solid black;
    border-bottom: 1px solid black;
}
        </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Cypher Mode for CodeMirror</a>
  </ul>
</div>

<article>
<h2>Cypher Mode for CodeMirror</h2>
<form>
            <textarea id="code" name="code">// Cypher Mode for CodeMirror, using the neo theme
MATCH (joe { name: 'Joe' })-[:knows*2..2]-(friend_of_friend)
WHERE NOT (joe)-[:knows]-(friend_of_friend)
RETURN friend_of_friend.name, COUNT(*)
ORDER BY COUNT(*) DESC , friend_of_friend.name
</textarea>
            </form>
            <p><strong>MIME types defined:</strong> 
            <code><a href="?mime=application/x-cypher-query">application/x-cypher-query</a></code>
        </p>
<script>
window.onload = function() {
  var mime = 'application/x-cypher-query';
  // get mime type
  if (window.location.href.indexOf('mime=') > -1) {
    mime = window.location.href.substr(window.location.href.indexOf('mime=') + 5);
  }
  window.editor = CodeMirror.fromTextArea(document.getElementById('code'), {
    mode: mime,
    indentWithTabs: true,
    smartIndent: true,
    lineNumbers: true,
    matchBrackets : true,
    autofocus: true,
    theme: 'neo'
  });
};
</script>

</article>
lib/codemirror/mode/idl/index.html000064400000003141147361034410013152 0ustar00<!doctype html>

<title>CodeMirror: IDL mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="idl.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">IDL</a>
  </ul>
</div>

<article>
<h2>IDL mode</h2>

    <div><textarea id="code" name="code">
;; Example IDL code
FUNCTION mean_and_stddev,array
  ;; This program reads in an array of numbers
  ;; and returns a structure containing the
  ;; average and standard deviation

  ave = 0.0
  count = 0.0

  for i=0,N_ELEMENTS(array)-1 do begin
      ave = ave + array[i]
      count = count + 1
  endfor
  
  ave = ave/count

  std = stddev(array)  

  return, {average:ave,std:std}

END

    </textarea></div>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "idl",
               version: 1,
               singleLineStringErrors: false},
        lineNumbers: true,
        indentUnit: 4,
        matchBrackets: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-idl</code>.</p>
</article>
lib/codemirror/mode/idl/idl.js000064400000035051147361034410012270 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function wordRegexp(words) {
    return new RegExp('^((' + words.join(')|(') + '))\\b', 'i');
  };

  var builtinArray = [
    'a_correlate', 'abs', 'acos', 'adapt_hist_equal', 'alog',
    'alog2', 'alog10', 'amoeba', 'annotate', 'app_user_dir',
    'app_user_dir_query', 'arg_present', 'array_equal', 'array_indices',
    'arrow', 'ascii_template', 'asin', 'assoc', 'atan',
    'axis', 'axis', 'bandpass_filter', 'bandreject_filter', 'barplot',
    'bar_plot', 'beseli', 'beselj', 'beselk', 'besely',
    'beta', 'biginteger', 'bilinear', 'bin_date', 'binary_template',
    'bindgen', 'binomial', 'bit_ffs', 'bit_population', 'blas_axpy',
    'blk_con', 'boolarr', 'boolean', 'boxplot', 'box_cursor',
    'breakpoint', 'broyden', 'bubbleplot', 'butterworth', 'bytarr',
    'byte', 'byteorder', 'bytscl', 'c_correlate', 'calendar',
    'caldat', 'call_external', 'call_function', 'call_method',
    'call_procedure', 'canny', 'catch', 'cd', 'cdf', 'ceil',
    'chebyshev', 'check_math', 'chisqr_cvf', 'chisqr_pdf', 'choldc',
    'cholsol', 'cindgen', 'cir_3pnt', 'clipboard', 'close',
    'clust_wts', 'cluster', 'cluster_tree', 'cmyk_convert', 'code_coverage',
    'color_convert', 'color_exchange', 'color_quan', 'color_range_map',
    'colorbar', 'colorize_sample', 'colormap_applicable',
    'colormap_gradient', 'colormap_rotation', 'colortable',
    'comfit', 'command_line_args', 'common', 'compile_opt', 'complex',
    'complexarr', 'complexround', 'compute_mesh_normals', 'cond', 'congrid',
    'conj', 'constrained_min', 'contour', 'contour', 'convert_coord',
    'convol', 'convol_fft', 'coord2to3', 'copy_lun', 'correlate',
    'cos', 'cosh', 'cpu', 'cramer', 'createboxplotdata',
    'create_cursor', 'create_struct', 'create_view', 'crossp', 'crvlength',
    'ct_luminance', 'cti_test', 'cursor', 'curvefit', 'cv_coord',
    'cvttobm', 'cw_animate', 'cw_animate_getp', 'cw_animate_load',
    'cw_animate_run', 'cw_arcball', 'cw_bgroup', 'cw_clr_index',
    'cw_colorsel', 'cw_defroi', 'cw_field', 'cw_filesel', 'cw_form',
    'cw_fslider', 'cw_light_editor', 'cw_light_editor_get',
    'cw_light_editor_set', 'cw_orient', 'cw_palette_editor',
    'cw_palette_editor_get', 'cw_palette_editor_set', 'cw_pdmenu',
    'cw_rgbslider', 'cw_tmpl', 'cw_zoom', 'db_exists',
    'dblarr', 'dcindgen', 'dcomplex', 'dcomplexarr', 'define_key',
    'define_msgblk', 'define_msgblk_from_file', 'defroi', 'defsysv',
    'delvar', 'dendro_plot', 'dendrogram', 'deriv', 'derivsig',
    'determ', 'device', 'dfpmin', 'diag_matrix', 'dialog_dbconnect',
    'dialog_message', 'dialog_pickfile', 'dialog_printersetup',
    'dialog_printjob', 'dialog_read_image',
    'dialog_write_image', 'dictionary', 'digital_filter', 'dilate', 'dindgen',
    'dissolve', 'dist', 'distance_measure', 'dlm_load', 'dlm_register',
    'doc_library', 'double', 'draw_roi', 'edge_dog', 'efont',
    'eigenql', 'eigenvec', 'ellipse', 'elmhes', 'emboss',
    'empty', 'enable_sysrtn', 'eof', 'eos', 'erase',
    'erf', 'erfc', 'erfcx', 'erode', 'errorplot',
    'errplot', 'estimator_filter', 'execute', 'exit', 'exp',
    'expand', 'expand_path', 'expint', 'extrac', 'extract_slice',
    'f_cvf', 'f_pdf', 'factorial', 'fft', 'file_basename',
    'file_chmod', 'file_copy', 'file_delete', 'file_dirname',
    'file_expand_path', 'file_gunzip', 'file_gzip', 'file_info',
    'file_lines', 'file_link', 'file_mkdir', 'file_move',
    'file_poll_input', 'file_readlink', 'file_same',
    'file_search', 'file_tar', 'file_test', 'file_untar', 'file_unzip',
    'file_which', 'file_zip', 'filepath', 'findgen', 'finite',
    'fix', 'flick', 'float', 'floor', 'flow3',
    'fltarr', 'flush', 'format_axis_values', 'forward_function', 'free_lun',
    'fstat', 'fulstr', 'funct', 'function', 'fv_test',
    'fx_root', 'fz_roots', 'gamma', 'gamma_ct', 'gauss_cvf',
    'gauss_pdf', 'gauss_smooth', 'gauss2dfit', 'gaussfit',
    'gaussian_function', 'gaussint', 'get_drive_list', 'get_dxf_objects',
    'get_kbrd', 'get_login_info',
    'get_lun', 'get_screen_size', 'getenv', 'getwindows', 'greg2jul',
    'grib', 'grid_input', 'grid_tps', 'grid3', 'griddata',
    'gs_iter', 'h_eq_ct', 'h_eq_int', 'hanning', 'hash',
    'hdf', 'hdf5', 'heap_free', 'heap_gc', 'heap_nosave',
    'heap_refcount', 'heap_save', 'help', 'hilbert', 'hist_2d',
    'hist_equal', 'histogram', 'hls', 'hough', 'hqr',
    'hsv', 'i18n_multibytetoutf8',
    'i18n_multibytetowidechar', 'i18n_utf8tomultibyte',
    'i18n_widechartomultibyte',
    'ibeta', 'icontour', 'iconvertcoord', 'idelete', 'identity',
    'idl_base64', 'idl_container', 'idl_validname',
    'idlexbr_assistant', 'idlitsys_createtool',
    'idlunit', 'iellipse', 'igamma', 'igetcurrent', 'igetdata',
    'igetid', 'igetproperty', 'iimage', 'image', 'image_cont',
    'image_statistics', 'image_threshold', 'imaginary', 'imap', 'indgen',
    'int_2d', 'int_3d', 'int_tabulated', 'intarr', 'interpol',
    'interpolate', 'interval_volume', 'invert', 'ioctl', 'iopen',
    'ir_filter', 'iplot', 'ipolygon', 'ipolyline', 'iputdata',
    'iregister', 'ireset', 'iresolve', 'irotate', 'isa',
    'isave', 'iscale', 'isetcurrent', 'isetproperty', 'ishft',
    'isocontour', 'isosurface', 'isurface', 'itext', 'itranslate',
    'ivector', 'ivolume', 'izoom', 'journal', 'json_parse',
    'json_serialize', 'jul2greg', 'julday', 'keyword_set', 'krig2d',
    'kurtosis', 'kw_test', 'l64indgen', 'la_choldc', 'la_cholmprove',
    'la_cholsol', 'la_determ', 'la_eigenproblem', 'la_eigenql', 'la_eigenvec',
    'la_elmhes', 'la_gm_linear_model', 'la_hqr', 'la_invert',
    'la_least_square_equality', 'la_least_squares', 'la_linear_equation',
    'la_ludc', 'la_lumprove', 'la_lusol',
    'la_svd', 'la_tridc', 'la_trimprove', 'la_triql', 'la_trired',
    'la_trisol', 'label_date', 'label_region', 'ladfit', 'laguerre',
    'lambda', 'lambdap', 'lambertw', 'laplacian', 'least_squares_filter',
    'leefilt', 'legend', 'legendre', 'linbcg', 'lindgen',
    'linfit', 'linkimage', 'list', 'll_arc_distance', 'lmfit',
    'lmgr', 'lngamma', 'lnp_test', 'loadct', 'locale_get',
    'logical_and', 'logical_or', 'logical_true', 'lon64arr', 'lonarr',
    'long', 'long64', 'lsode', 'lu_complex', 'ludc',
    'lumprove', 'lusol', 'm_correlate', 'machar', 'make_array',
    'make_dll', 'make_rt', 'map', 'mapcontinents', 'mapgrid',
    'map_2points', 'map_continents', 'map_grid', 'map_image', 'map_patch',
    'map_proj_forward', 'map_proj_image', 'map_proj_info',
    'map_proj_init', 'map_proj_inverse',
    'map_set', 'matrix_multiply', 'matrix_power', 'max', 'md_test',
    'mean', 'meanabsdev', 'mean_filter', 'median', 'memory',
    'mesh_clip', 'mesh_decimate', 'mesh_issolid',
    'mesh_merge', 'mesh_numtriangles',
    'mesh_obj', 'mesh_smooth', 'mesh_surfacearea',
    'mesh_validate', 'mesh_volume',
    'message', 'min', 'min_curve_surf', 'mk_html_help', 'modifyct',
    'moment', 'morph_close', 'morph_distance',
    'morph_gradient', 'morph_hitormiss',
    'morph_open', 'morph_thin', 'morph_tophat', 'multi', 'n_elements',
    'n_params', 'n_tags', 'ncdf', 'newton', 'noise_hurl',
    'noise_pick', 'noise_scatter', 'noise_slur', 'norm', 'obj_class',
    'obj_destroy', 'obj_hasmethod', 'obj_isa', 'obj_new', 'obj_valid',
    'objarr', 'on_error', 'on_ioerror', 'online_help', 'openr',
    'openu', 'openw', 'oplot', 'oploterr', 'orderedhash',
    'p_correlate', 'parse_url', 'particle_trace', 'path_cache', 'path_sep',
    'pcomp', 'plot', 'plot3d', 'plot', 'plot_3dbox',
    'plot_field', 'ploterr', 'plots', 'polar_contour', 'polar_surface',
    'polyfill', 'polyshade', 'pnt_line', 'point_lun', 'polarplot',
    'poly', 'poly_2d', 'poly_area', 'poly_fit', 'polyfillv',
    'polygon', 'polyline', 'polywarp', 'popd', 'powell',
    'pref_commit', 'pref_get', 'pref_set', 'prewitt', 'primes',
    'print', 'printf', 'printd', 'pro', 'product',
    'profile', 'profiler', 'profiles', 'project_vol', 'ps_show_fonts',
    'psafm', 'pseudo', 'ptr_free', 'ptr_new', 'ptr_valid',
    'ptrarr', 'pushd', 'qgrid3', 'qhull', 'qromb',
    'qromo', 'qsimp', 'query_*', 'query_ascii', 'query_bmp',
    'query_csv', 'query_dicom', 'query_gif', 'query_image', 'query_jpeg',
    'query_jpeg2000', 'query_mrsid', 'query_pict', 'query_png', 'query_ppm',
    'query_srf', 'query_tiff', 'query_video', 'query_wav', 'r_correlate',
    'r_test', 'radon', 'randomn', 'randomu', 'ranks',
    'rdpix', 'read', 'readf', 'read_ascii', 'read_binary',
    'read_bmp', 'read_csv', 'read_dicom', 'read_gif', 'read_image',
    'read_interfile', 'read_jpeg', 'read_jpeg2000', 'read_mrsid', 'read_pict',
    'read_png', 'read_ppm', 'read_spr', 'read_srf', 'read_sylk',
    'read_tiff', 'read_video', 'read_wav', 'read_wave', 'read_x11_bitmap',
    'read_xwd', 'reads', 'readu', 'real_part', 'rebin',
    'recall_commands', 'recon3', 'reduce_colors', 'reform', 'region_grow',
    'register_cursor', 'regress', 'replicate',
    'replicate_inplace', 'resolve_all',
    'resolve_routine', 'restore', 'retall', 'return', 'reverse',
    'rk4', 'roberts', 'rot', 'rotate', 'round',
    'routine_filepath', 'routine_info', 'rs_test', 's_test', 'save',
    'savgol', 'scale3', 'scale3d', 'scatterplot', 'scatterplot3d',
    'scope_level', 'scope_traceback', 'scope_varfetch',
    'scope_varname', 'search2d',
    'search3d', 'sem_create', 'sem_delete', 'sem_lock', 'sem_release',
    'set_plot', 'set_shading', 'setenv', 'sfit', 'shade_surf',
    'shade_surf_irr', 'shade_volume', 'shift', 'shift_diff', 'shmdebug',
    'shmmap', 'shmunmap', 'shmvar', 'show3', 'showfont',
    'signum', 'simplex', 'sin', 'sindgen', 'sinh',
    'size', 'skewness', 'skip_lun', 'slicer3', 'slide_image',
    'smooth', 'sobel', 'socket', 'sort', 'spawn',
    'sph_4pnt', 'sph_scat', 'spher_harm', 'spl_init', 'spl_interp',
    'spline', 'spline_p', 'sprsab', 'sprsax', 'sprsin',
    'sprstp', 'sqrt', 'standardize', 'stddev', 'stop',
    'strarr', 'strcmp', 'strcompress', 'streamline', 'streamline',
    'stregex', 'stretch', 'string', 'strjoin', 'strlen',
    'strlowcase', 'strmatch', 'strmessage', 'strmid', 'strpos',
    'strput', 'strsplit', 'strtrim', 'struct_assign', 'struct_hide',
    'strupcase', 'surface', 'surface', 'surfr', 'svdc',
    'svdfit', 'svsol', 'swap_endian', 'swap_endian_inplace', 'symbol',
    'systime', 't_cvf', 't_pdf', 't3d', 'tag_names',
    'tan', 'tanh', 'tek_color', 'temporary', 'terminal_size',
    'tetra_clip', 'tetra_surface', 'tetra_volume', 'text', 'thin',
    'thread', 'threed', 'tic', 'time_test2', 'timegen',
    'timer', 'timestamp', 'timestamptovalues', 'tm_test', 'toc',
    'total', 'trace', 'transpose', 'tri_surf', 'triangulate',
    'trigrid', 'triql', 'trired', 'trisol', 'truncate_lun',
    'ts_coef', 'ts_diff', 'ts_fcast', 'ts_smooth', 'tv',
    'tvcrs', 'tvlct', 'tvrd', 'tvscl', 'typename',
    'uindgen', 'uint', 'uintarr', 'ul64indgen', 'ulindgen',
    'ulon64arr', 'ulonarr', 'ulong', 'ulong64', 'uniq',
    'unsharp_mask', 'usersym', 'value_locate', 'variance', 'vector',
    'vector_field', 'vel', 'velovect', 'vert_t3d', 'voigt',
    'volume', 'voronoi', 'voxel_proj', 'wait', 'warp_tri',
    'watershed', 'wdelete', 'wf_draw', 'where', 'widget_base',
    'widget_button', 'widget_combobox', 'widget_control',
    'widget_displaycontextmenu', 'widget_draw',
    'widget_droplist', 'widget_event', 'widget_info',
    'widget_label', 'widget_list',
    'widget_propertysheet', 'widget_slider', 'widget_tab',
    'widget_table', 'widget_text',
    'widget_tree', 'widget_tree_move', 'widget_window',
    'wiener_filter', 'window',
    'window', 'write_bmp', 'write_csv', 'write_gif', 'write_image',
    'write_jpeg', 'write_jpeg2000', 'write_nrif', 'write_pict', 'write_png',
    'write_ppm', 'write_spr', 'write_srf', 'write_sylk', 'write_tiff',
    'write_video', 'write_wav', 'write_wave', 'writeu', 'wset',
    'wshow', 'wtn', 'wv_applet', 'wv_cwt', 'wv_cw_wavelet',
    'wv_denoise', 'wv_dwt', 'wv_fn_coiflet',
    'wv_fn_daubechies', 'wv_fn_gaussian',
    'wv_fn_haar', 'wv_fn_morlet', 'wv_fn_paul',
    'wv_fn_symlet', 'wv_import_data',
    'wv_import_wavelet', 'wv_plot3d_wps', 'wv_plot_multires',
    'wv_pwt', 'wv_tool_denoise',
    'xbm_edit', 'xdisplayfile', 'xdxf', 'xfont', 'xinteranimate',
    'xloadct', 'xmanager', 'xmng_tmpl', 'xmtool', 'xobjview',
    'xobjview_rotate', 'xobjview_write_image',
    'xpalette', 'xpcolor', 'xplot3d',
    'xregistered', 'xroi', 'xsq_test', 'xsurface', 'xvaredit',
    'xvolume', 'xvolume_rotate', 'xvolume_write_image',
    'xyouts', 'zlib_compress', 'zlib_uncompress', 'zoom', 'zoom_24'
  ];
  var builtins = wordRegexp(builtinArray);

  var keywordArray = [
    'begin', 'end', 'endcase', 'endfor',
    'endwhile', 'endif', 'endrep', 'endforeach',
    'break', 'case', 'continue', 'for',
    'foreach', 'goto', 'if', 'then', 'else',
    'repeat', 'until', 'switch', 'while',
    'do', 'pro', 'function'
  ];
  var keywords = wordRegexp(keywordArray);

  CodeMirror.registerHelper("hintWords", "idl", builtinArray.concat(keywordArray));

  var identifiers = new RegExp('^[_a-z\xa1-\uffff][_a-z0-9\xa1-\uffff]*', 'i');

  var singleOperators = /[+\-*&=<>\/@#~$]/;
  var boolOperators = new RegExp('(and|or|eq|lt|le|gt|ge|ne|not)', 'i');

  function tokenBase(stream) {
    // whitespaces
    if (stream.eatSpace()) return null;

    // Handle one line Comments
    if (stream.match(';')) {
      stream.skipToEnd();
      return 'comment';
    }

    // Handle Number Literals
    if (stream.match(/^[0-9\.+-]/, false)) {
      if (stream.match(/^[+-]?0x[0-9a-fA-F]+/))
        return 'number';
      if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/))
        return 'number';
      if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))
        return 'number';
    }

    // Handle Strings
    if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; }
    if (stream.match(/^'([^']|(''))*'/)) { return 'string'; }

    // Handle words
    if (stream.match(keywords)) { return 'keyword'; }
    if (stream.match(builtins)) { return 'builtin'; }
    if (stream.match(identifiers)) { return 'variable'; }

    if (stream.match(singleOperators) || stream.match(boolOperators)) {
      return 'operator'; }

    // Handle non-detected items
    stream.next();
    return null;
  };

  CodeMirror.defineMode('idl', function() {
    return {
      token: function(stream) {
        return tokenBase(stream);
      }
    };
  });

  CodeMirror.defineMIME('text/x-idl', 'idl');
});
lib/codemirror/mode/tcl/tcl.js000064400000011470147361034410012313 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("tcl", function() {
  function parseWords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " +
        "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " +
        "binary break catch cd close concat continue dde eof encoding error " +
        "eval exec exit expr fblocked fconfigure fcopy file fileevent filename " +
        "filename flush for foreach format gets glob global history http if " +
        "incr info interp join lappend lindex linsert list llength load lrange " +
        "lreplace lsearch lset lsort memory msgcat namespace open package parray " +
        "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " +
        "registry regsub rename resource return scan seek set socket source split " +
        "string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " +
        "tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " +
        "tclvars tell time trace unknown unset update uplevel upvar variable " +
    "vwait");
    var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch");
    var isOperatorChar = /[+\-*&%=<>!?^\/\|]/;
    function chain(stream, state, f) {
      state.tokenize = f;
      return f(stream, state);
    }
    function tokenBase(stream, state) {
      var beforeParams = state.beforeParams;
      state.beforeParams = false;
      var ch = stream.next();
      if ((ch == '"' || ch == "'") && state.inParams) {
        return chain(stream, state, tokenString(ch));
      } else if (/[\[\]{}\(\),;\.]/.test(ch)) {
        if (ch == "(" && beforeParams) state.inParams = true;
        else if (ch == ")") state.inParams = false;
          return null;
      } else if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      } else if (ch == "#") {
        if (stream.eat("*"))
          return chain(stream, state, tokenComment);
        if (ch == "#" && stream.match(/ *\[ *\[/))
          return chain(stream, state, tokenUnparsed);
        stream.skipToEnd();
        return "comment";
      } else if (ch == '"') {
        stream.skipTo(/"/);
        return "comment";
      } else if (ch == "$") {
        stream.eatWhile(/[$_a-z0-9A-Z\.{:]/);
        stream.eatWhile(/}/);
        state.beforeParams = true;
        return "builtin";
      } else if (isOperatorChar.test(ch)) {
        stream.eatWhile(isOperatorChar);
        return "comment";
      } else {
        stream.eatWhile(/[\w\$_{}\xa1-\uffff]/);
        var word = stream.current().toLowerCase();
        if (keywords && keywords.propertyIsEnumerable(word))
          return "keyword";
        if (functions && functions.propertyIsEnumerable(word)) {
          state.beforeParams = true;
          return "keyword";
        }
        return null;
      }
    }
    function tokenString(quote) {
      return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true;
          break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end) state.tokenize = tokenBase;
        return "string";
      };
    }
    function tokenComment(stream, state) {
      var maybeEnd = false, ch;
      while (ch = stream.next()) {
        if (ch == "#" && maybeEnd) {
          state.tokenize = tokenBase;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return "comment";
    }
    function tokenUnparsed(stream, state) {
      var maybeEnd = 0, ch;
      while (ch = stream.next()) {
        if (ch == "#" && maybeEnd == 2) {
          state.tokenize = tokenBase;
          break;
        }
        if (ch == "]")
          maybeEnd++;
        else if (ch != " ")
          maybeEnd = 0;
      }
      return "meta";
    }
    return {
      startState: function() {
        return {
          tokenize: tokenBase,
          beforeParams: false,
          inParams: false
        };
      },
      token: function(stream, state) {
        if (stream.eatSpace()) return null;
        return state.tokenize(stream, state);
      }
    };
});
CodeMirror.defineMIME("text/x-tcl", "tcl");

});
lib/codemirror/mode/tcl/index.html000064400000014231147361034410013166 0ustar00<!doctype html>

<title>CodeMirror: Tcl mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/night.css">
<script src="../../lib/codemirror.js"></script>
<script src="tcl.js"></script>
<script src="../../addon/scroll/scrollpastend.js"></script>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Tcl</a>
  </ul>
</div>

<article>
<h2>Tcl mode</h2>
<form><textarea id="code" name="code">
##############################################################################################
##  ##     whois.tcl for eggdrop by Ford_Lawnmower irc.geekshed.net #Script-Help        ##  ##
##############################################################################################
## To use this script you must set channel flag +whois (ie .chanset #chan +whois)           ##
##############################################################################################
##      ____                __                 ###########################################  ##
##     / __/___ _ ___ _ ___/ /____ ___   ___   ###########################################  ##
##    / _/ / _ `// _ `// _  // __// _ \ / _ \  ###########################################  ##
##   /___/ \_, / \_, / \_,_//_/   \___// .__/  ###########################################  ##
##        /___/ /___/                 /_/      ###########################################  ##
##                                             ###########################################  ##
##############################################################################################
##  ##                             Start Setup.                                         ##  ##
##############################################################################################
namespace eval whois {
## change cmdchar to the trigger you want to use                                        ##  ##
  variable cmdchar "!"
## change command to the word trigger you would like to use.                            ##  ##
## Keep in mind, This will also change the .chanset +/-command                          ##  ##
  variable command "whois"
## change textf to the colors you want for the text.                                    ##  ##
  variable textf "\017\00304"
## change tagf to the colors you want for tags:                                         ##  ##
  variable tagf "\017\002"
## Change logo to the logo you want at the start of the line.                           ##  ##
  variable logo "\017\00304\002\[\00306W\003hois\00304\]\017"
## Change lineout to the results you want. Valid results are channel users modes topic  ##  ##
  variable lineout "channel users modes topic"
##############################################################################################
##  ##                           End Setup.                                              ## ##
##############################################################################################
  variable channel ""
  setudef flag $whois::command
  bind pub -|- [string trimleft $whois::cmdchar]${whois::command} whois::list
  bind raw -|- "311" whois::311
  bind raw -|- "312" whois::312
  bind raw -|- "319" whois::319
  bind raw -|- "317" whois::317
  bind raw -|- "313" whois::multi
  bind raw -|- "310" whois::multi
  bind raw -|- "335" whois::multi
  bind raw -|- "301" whois::301
  bind raw -|- "671" whois::multi
  bind raw -|- "320" whois::multi
  bind raw -|- "401" whois::multi
  bind raw -|- "318" whois::318
  bind raw -|- "307" whois::307
}
proc whois::311 {from key text} {
  if {[regexp -- {^[^\s]+\s(.+?)\s(.+?)\s(.+?)\s\*\s\:(.+)$} $text wholematch nick ident host realname]} {
    putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Host:${whois::textf} \
        $nick \(${ident}@${host}\) ${whois::tagf}Realname:${whois::textf} $realname"
  }
}
proc whois::multi {from key text} {
  if {[regexp {\:(.*)$} $text match $key]} {
    putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Note:${whois::textf} [subst $$key]"
        return 1
  }
}
proc whois::312 {from key text} {
  regexp {([^\s]+)\s\:} $text match server
  putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Server:${whois::textf} $server"
}
proc whois::319 {from key text} {
  if {[regexp {.+\:(.+)$} $text match channels]} {
    putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Channels:${whois::textf} $channels"
  }
}
proc whois::317 {from key text} {
  if {[regexp -- {.*\s(\d+)\s(\d+)\s\:} $text wholematch idle signon]} {
    putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Connected:${whois::textf} \
        [ctime $signon] ${whois::tagf}Idle:${whois::textf} [duration $idle]"
  }
}
proc whois::301 {from key text} {
  if {[regexp {^.+\s[^\s]+\s\:(.*)$} $text match awaymsg]} {
    putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Away:${whois::textf} $awaymsg"
  }
}
proc whois::318 {from key text} {
  namespace eval whois {
        variable channel ""
  }
  variable whois::channel ""
}
proc whois::307 {from key text} {
  putserv "PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Services:${whois::textf} Registered Nick"
}
proc whois::list {nick host hand chan text} {
  if {[lsearch -exact [channel info $chan] "+${whois::command}"] != -1} {
    namespace eval whois {
          variable channel ""
        }
    variable whois::channel $chan
    putserv "WHOIS $text"
  }
}
putlog "\002*Loaded* \017\00304\002\[\00306W\003hois\00304\]\017 \002by \
Ford_Lawnmower irc.GeekShed.net #Script-Help"
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        theme: "night",
        lineNumbers: true,
        indentUnit: 2,
        scrollPastEnd: true,
        mode: "text/x-tcl"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-tcl</code>.</p>

  </article>
lib/codemirror/mode/jinja2/jinja2.js000064400000010274147361034410013302 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("jinja2", function() {
    var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif",
      "extends", "filter", "endfilter", "firstof", "for",
      "endfor", "if", "endif", "ifchanged", "endifchanged",
      "ifequal", "endifequal", "ifnotequal",
      "endifnotequal", "in", "include", "load", "not", "now", "or",
      "parsed", "regroup", "reversed", "spaceless",
      "endspaceless", "ssi", "templatetag", "openblock",
      "closeblock", "openvariable", "closevariable",
      "openbrace", "closebrace", "opencomment",
      "closecomment", "widthratio", "url", "with", "endwith",
      "get_current_language", "trans", "endtrans", "noop", "blocktrans",
      "endblocktrans", "get_available_languages",
      "get_current_language_bidi", "plural"],
    operator = /^[+\-*&%=<>!?|~^]/,
    sign = /^[:\[\(\{]/,
    atom = ["true", "false"],
    number = /^(\d[+\-\*\/])?\d+(\.\d+)?/;

    keywords = new RegExp("((" + keywords.join(")|(") + "))\\b");
    atom = new RegExp("((" + atom.join(")|(") + "))\\b");

    function tokenBase (stream, state) {
      var ch = stream.peek();

      //Comment
      if (state.incomment) {
        if(!stream.skipTo("#}")) {
          stream.skipToEnd();
        } else {
          stream.eatWhile(/\#|}/);
          state.incomment = false;
        }
        return "comment";
      //Tag
      } else if (state.intag) {
        //After operator
        if(state.operator) {
          state.operator = false;
          if(stream.match(atom)) {
            return "atom";
          }
          if(stream.match(number)) {
            return "number";
          }
        }
        //After sign
        if(state.sign) {
          state.sign = false;
          if(stream.match(atom)) {
            return "atom";
          }
          if(stream.match(number)) {
            return "number";
          }
        }

        if(state.instring) {
          if(ch == state.instring) {
            state.instring = false;
          }
          stream.next();
          return "string";
        } else if(ch == "'" || ch == '"') {
          state.instring = ch;
          stream.next();
          return "string";
        } else if(stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) {
          state.intag = false;
          return "tag";
        } else if(stream.match(operator)) {
          state.operator = true;
          return "operator";
        } else if(stream.match(sign)) {
          state.sign = true;
        } else {
          if(stream.eat(" ") || stream.sol()) {
            if(stream.match(keywords)) {
              return "keyword";
            }
            if(stream.match(atom)) {
              return "atom";
            }
            if(stream.match(number)) {
              return "number";
            }
            if(stream.sol()) {
              stream.next();
            }
          } else {
            stream.next();
          }

        }
        return "variable";
      } else if (stream.eat("{")) {
        if (ch = stream.eat("#")) {
          state.incomment = true;
          if(!stream.skipTo("#}")) {
            stream.skipToEnd();
          } else {
            stream.eatWhile(/\#|}/);
            state.incomment = false;
          }
          return "comment";
        //Open tag
        } else if (ch = stream.eat(/\{|%/)) {
          //Cache close tag
          state.intag = ch;
          if(ch == "{") {
            state.intag = "}";
          }
          stream.eat("-");
          return "tag";
        }
      }
      stream.next();
    };

    return {
      startState: function () {
        return {tokenize: tokenBase};
      },
      token: function (stream, state) {
        return state.tokenize(stream, state);
      }
    };
  });
});
lib/codemirror/mode/jinja2/index.html000064400000003333147361034410013562 0ustar00<!doctype html>

<title>CodeMirror: Jinja2 mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="jinja2.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Jinja2</a>
  </ul>
</div>

<article>
<h2>Jinja2 mode</h2>
<form><textarea id="code" name="code">
{# this is a comment #}
{%- for item in li -%}
  &lt;li&gt;{{ item.label }}&lt;/li&gt;
{% endfor -%}
{{ item.sand == true and item.keyword == false ? 1 : 0 }}
{{ app.get(55, 1.2, true) }}
{% if app.get(&#39;_route&#39;) == (&#39;_home&#39;) %}home{% endif %}
{% if app.session.flashbag.has(&#39;message&#39;) %}
  {% for message in app.session.flashbag.get(&#39;message&#39;) %}
    {{ message.content }}
  {% endfor %}
{% endif %}
{{ path(&#39;_home&#39;, {&#39;section&#39;: app.request.get(&#39;section&#39;)}) }}
{{ path(&#39;_home&#39;, {
    &#39;section&#39;: app.request.get(&#39;section&#39;),
    &#39;boolean&#39;: true,
    &#39;number&#39;: 55.33
  })
}}
{% include (&#39;test.incl.html.twig&#39;) %}
</textarea></form>
    <script>
      var editor =
      CodeMirror.fromTextArea(document.getElementById("code"), {mode:
        {name: "jinja2", htmlMode: true}});
    </script>
  </article>
lib/codemirror/mode/modelica/index.html000064400000003727147361034410014171 0ustar00<!doctype html>

<title>CodeMirror: Modelica mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
<script src="../../addon/hint/show-hint.js"></script>
<script src="modelica.js"></script>
<style>.CodeMirror {border: 2px inset #dee;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Modelica</a>
  </ul>
</div>

<article>
<h2>Modelica mode</h2>

<div><textarea id="modelica">
model BouncingBall
  parameter Real e = 0.7;
  parameter Real g = 9.81;
  Real h(start=1);
  Real v;
  Boolean flying(start=true);
  Boolean impact;
  Real v_new;
equation
  impact = h <= 0.0;
  der(v) = if flying then -g else 0;
  der(h) = v;
  when {h <= 0.0 and v <= 0.0, impact} then
    v_new = if edge(impact) then -e*pre(v) else 0;
    flying = v_new > 0;
    reinit(v, v_new);
  end when;
  annotation (uses(Modelica(version="3.2")));
end BouncingBall;
</textarea></div>

    <script>
      var modelicaEditor = CodeMirror.fromTextArea(document.getElementById("modelica"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-modelica"
      });
      var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;
      CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete";
    </script>

    <p>Simple mode that tries to handle Modelica as well as it can.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-modelica</code>
    (Modlica code).</p>
</article>
lib/codemirror/mode/modelica/modelica.js000064400000015422147361034410014302 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Modelica support for CodeMirror, copyright (c) by Lennart Ochel

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})

(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("modelica", function(config, parserConfig) {

    var indentUnit = config.indentUnit;
    var keywords = parserConfig.keywords || {};
    var builtin = parserConfig.builtin || {};
    var atoms = parserConfig.atoms || {};

    var isSingleOperatorChar = /[;=\(:\),{}.*<>+\-\/^\[\]]/;
    var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/;
    var isDigit = /[0-9]/;
    var isNonDigit = /[_a-zA-Z]/;

    function tokenLineComment(stream, state) {
      stream.skipToEnd();
      state.tokenize = null;
      return "comment";
    }

    function tokenBlockComment(stream, state) {
      var maybeEnd = false, ch;
      while (ch = stream.next()) {
        if (maybeEnd && ch == "/") {
          state.tokenize = null;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return "comment";
    }

    function tokenString(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == '"' && !escaped) {
          state.tokenize = null;
          state.sol = false;
          break;
        }
        escaped = !escaped && ch == "\\";
      }

      return "string";
    }

    function tokenIdent(stream, state) {
      stream.eatWhile(isDigit);
      while (stream.eat(isDigit) || stream.eat(isNonDigit)) { }


      var cur = stream.current();

      if(state.sol && (cur == "package" || cur == "model" || cur == "when" || cur == "connector")) state.level++;
      else if(state.sol && cur == "end" && state.level > 0) state.level--;

      state.tokenize = null;
      state.sol = false;

      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      else if (builtin.propertyIsEnumerable(cur)) return "builtin";
      else if (atoms.propertyIsEnumerable(cur)) return "atom";
      else return "variable";
    }

    function tokenQIdent(stream, state) {
      while (stream.eat(/[^']/)) { }

      state.tokenize = null;
      state.sol = false;

      if(stream.eat("'"))
        return "variable";
      else
        return "error";
    }

    function tokenUnsignedNuber(stream, state) {
      stream.eatWhile(isDigit);
      if (stream.eat('.')) {
        stream.eatWhile(isDigit);
      }
      if (stream.eat('e') || stream.eat('E')) {
        if (!stream.eat('-'))
          stream.eat('+');
        stream.eatWhile(isDigit);
      }

      state.tokenize = null;
      state.sol = false;
      return "number";
    }

    // Interface
    return {
      startState: function() {
        return {
          tokenize: null,
          level: 0,
          sol: true
        };
      },

      token: function(stream, state) {
        if(state.tokenize != null) {
          return state.tokenize(stream, state);
        }

        if(stream.sol()) {
          state.sol = true;
        }

        // WHITESPACE
        if(stream.eatSpace()) {
          state.tokenize = null;
          return null;
        }

        var ch = stream.next();

        // LINECOMMENT
        if(ch == '/' && stream.eat('/')) {
          state.tokenize = tokenLineComment;
        }
        // BLOCKCOMMENT
        else if(ch == '/' && stream.eat('*')) {
          state.tokenize = tokenBlockComment;
        }
        // TWO SYMBOL TOKENS
        else if(isDoubleOperatorChar.test(ch+stream.peek())) {
          stream.next();
          state.tokenize = null;
          return "operator";
        }
        // SINGLE SYMBOL TOKENS
        else if(isSingleOperatorChar.test(ch)) {
          state.tokenize = null;
          return "operator";
        }
        // IDENT
        else if(isNonDigit.test(ch)) {
          state.tokenize = tokenIdent;
        }
        // Q-IDENT
        else if(ch == "'" && stream.peek() && stream.peek() != "'") {
          state.tokenize = tokenQIdent;
        }
        // STRING
        else if(ch == '"') {
          state.tokenize = tokenString;
        }
        // UNSIGNED_NUBER
        else if(isDigit.test(ch)) {
          state.tokenize = tokenUnsignedNuber;
        }
        // ERROR
        else {
          state.tokenize = null;
          return "error";
        }

        return state.tokenize(stream, state);
      },

      indent: function(state, textAfter) {
        if (state.tokenize != null) return CodeMirror.Pass;

        var level = state.level;
        if(/(algorithm)/.test(textAfter)) level--;
        if(/(equation)/.test(textAfter)) level--;
        if(/(initial algorithm)/.test(textAfter)) level--;
        if(/(initial equation)/.test(textAfter)) level--;
        if(/(end)/.test(textAfter)) level--;

        if(level > 0)
          return indentUnit*level;
        else
          return 0;
      },

      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      lineComment: "//"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i=0; i<words.length; ++i)
      obj[words[i]] = true;
    return obj;
  }

  var modelicaKeywords = "algorithm and annotation assert block break class connect connector constant constrainedby der discrete each else elseif elsewhen encapsulated end enumeration equation expandable extends external false final flow for function if import impure in initial inner input loop model not operator or outer output package parameter partial protected public pure record redeclare replaceable return stream then true type when while within";
  var modelicaBuiltin = "abs acos actualStream asin atan atan2 cardinality ceil cos cosh delay div edge exp floor getInstanceName homotopy inStream integer log log10 mod pre reinit rem semiLinear sign sin sinh spatialDistribution sqrt tan tanh";
  var modelicaAtoms = "Real Boolean Integer String";

  function def(mimes, mode) {
    if (typeof mimes == "string")
      mimes = [mimes];

    var words = [];

    function add(obj) {
      if (obj)
        for (var prop in obj)
          if (obj.hasOwnProperty(prop))
            words.push(prop);
    }

    add(mode.keywords);
    add(mode.builtin);
    add(mode.atoms);

    if (words.length) {
      mode.helperType = mimes[0];
      CodeMirror.registerHelper("hintWords", mimes[0], words);
    }

    for (var i=0; i<mimes.length; ++i)
      CodeMirror.defineMIME(mimes[i], mode);
  }

  def(["text/x-modelica"], {
    name: "modelica",
    keywords: words(modelicaKeywords),
    builtin: words(modelicaBuiltin),
    atoms: words(modelicaAtoms)
  });
});
lib/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js000064400000004364147361034410017565 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function (mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../yaml/yaml"))
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../yaml/yaml"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function (CodeMirror) {

  var START = 0, FRONTMATTER = 1, BODY = 2

  // a mixed mode for Markdown text with an optional YAML front matter
  CodeMirror.defineMode("yaml-frontmatter", function (config, parserConfig) {
    var yamlMode = CodeMirror.getMode(config, "yaml")
    var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || "gfm")

    function curMode(state) {
      return state.state == BODY ? innerMode : yamlMode
    }

    return {
      startState: function () {
        return {
          state: START,
          inner: CodeMirror.startState(yamlMode)
        }
      },
      copyState: function (state) {
        return {
          state: state.state,
          inner: CodeMirror.copyState(curMode(state), state.inner)
        }
      },
      token: function (stream, state) {
        if (state.state == START) {
          if (stream.match(/---/, false)) {
            state.state = FRONTMATTER
            return yamlMode.token(stream, state.inner)
          } else {
            state.state = BODY
            state.inner = CodeMirror.startState(innerMode)
            return innerMode.token(stream, state.inner)
          }
        } else if (state.state == FRONTMATTER) {
          var end = stream.sol() && stream.match(/---/, false)
          var style = yamlMode.token(stream, state.inner)
          if (end) {
            state.state = BODY
            state.inner = CodeMirror.startState(innerMode)
          }
          return style
        } else {
          return innerMode.token(stream, state.inner)
        }
      },
      innerMode: function (state) {
        return {mode: curMode(state), state: state.inner}
      },
      blankLine: function (state) {
        var mode = curMode(state)
        if (mode.blankLine) return mode.blankLine(state.inner)
      }
    }
  })
});
lib/codemirror/mode/yaml-frontmatter/index.html000064400000006000147361034410015704 0ustar00<!doctype html>

<title>CodeMirror: YAML front matter mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/overlay.js"></script>
<script src="../markdown/markdown.js"></script>
<script src="../gfm/gfm.js"></script>
<script src="../yaml/yaml.js"></script>
<script src="yaml-frontmatter.js"></script>
<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">YAML-Frontmatter</a>
  </ul>
</div>

<article>
<h2>YAML front matter mode</h2>
<form><textarea id="code" name="code">
---
receipt:     Oz-Ware Purchase Invoice
date:        2007-08-06
customer:
    given:   Dorothy
    family:  Gale

items:
    - part_no:   A4786
      descrip:   Water Bucket (Filled)
      price:     1.47
      quantity:  4

    - part_no:   E1628
      descrip:   High Heeled "Ruby" Slippers
      size:       8
      price:     100.27
      quantity:  1

bill-to:  &id001
    street: |
            123 Tornado Alley
            Suite 16
    city:   East Centerville
    state:  KS

ship-to:  *id001

specialDelivery:  >
    Follow the Yellow Brick
    Road to the Emerald City.
    Pay no attention to the
    man behind the curtain.
---

GitHub Flavored Markdown
========================

Everything from markdown plus GFM features:

## URL autolinking

Underscores_are_allowed_between_words.

## Strikethrough text

GFM adds syntax to strikethrough text, which is missing from standard Markdown.

~~Mistaken text.~~
~~**works with other formatting**~~

~~spans across
lines~~

## Fenced code blocks (and syntax highlighting)

```javascript
for (var i = 0; i &lt; items.length; i++) {
    console.log(items[i], i); // log them
}
```

## Task Lists

- [ ] Incomplete task list item
- [x] **Completed** task list item

## A bit of GitHub spice

* SHA: be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
* User@SHA ref: mojombo@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
* User/Project@SHA: mojombo/god@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
* \#Num: #1
* User/#Num: mojombo#1
* User/Project#Num: mojombo/god#1

See http://github.github.com/github-flavored-markdown/.
</textarea></form>

<p>Defines a mode that parses
a <a href="http://jekyllrb.com/docs/frontmatter/">YAML frontmatter</a>
at the start of a file, switching to a base mode at the end of that.
Takes a mode configuration option <code>base</code> to configure the
base mode, which defaults to <code>"gfm"</code>.</p>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {mode: "yaml-frontmatter"});
    </script>

  </article>
lib/codemirror/mode/vhdl/index.html000064400000004666147361034410013354 0ustar00<!doctype html>

<title>CodeMirror: VHDL mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="vhdl.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">VHDL</a>
  </ul>
</div>

<article>
<h2>VHDL mode</h2>

<div><textarea id="code" name="code">
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;

ENTITY tb IS
END tb;

ARCHITECTURE behavior OF tb IS
   --Inputs
   signal a : unsigned(2 downto 0) := (others => '0');
   signal b : unsigned(2 downto 0) := (others => '0');
    --Outputs
   signal a_eq_b : std_logic;
   signal a_le_b : std_logic;
   signal a_gt_b : std_logic;

    signal i,j : integer;

BEGIN

    -- Instantiate the Unit Under Test (UUT)
   uut: entity work.comparator PORT MAP (
          a => a,
          b => b,
          a_eq_b => a_eq_b,
          a_le_b => a_le_b,
          a_gt_b => a_gt_b
        );

   -- Stimulus process
   stim_proc: process
   begin
        for i in 0 to 8 loop
            for j in 0 to 8 loop
                a <= to_unsigned(i,3); --integer to unsigned type conversion
                b <= to_unsigned(j,3);
                wait for 10 ns;
            end loop;
        end loop;
   end process;

END;
</textarea></div>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    matchBrackets: true,
    mode: {
      name: "vhdl",
    }
  });
</script>

<p>
Syntax highlighting and indentation for the VHDL language.
<h2>Configuration options:</h2>
  <ul>
    <li><strong>atoms</strong> - List of atom words. Default: "null"</li>
    <li><strong>hooks</strong> - List of meta hooks. Default: ["`", "$"]</li>
    <li><strong>multiLineStrings</strong> - Whether multi-line strings are accepted. Default: false</li>
  </ul>
</p>

<p><strong>MIME types defined:</strong> <code>text/x-vhdl</code>.</p>
</article>
lib/codemirror/mode/vhdl/vhdl.js000064400000015060147361034410012640 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Originally written by Alf Nielsen, re-written by Michael Zhou
(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function words(str) {
  var obj = {}, words = str.split(",");
  for (var i = 0; i < words.length; ++i) {
    var allCaps = words[i].toUpperCase();
    var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1);
    obj[words[i]] = true;
    obj[allCaps] = true;
    obj[firstCap] = true;
  }
  return obj;
}

function metaHook(stream) {
  stream.eatWhile(/[\w\$_]/);
  return "meta";
}

CodeMirror.defineMode("vhdl", function(config, parserConfig) {
  var indentUnit = config.indentUnit,
      atoms = parserConfig.atoms || words("null"),
      hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook},
      multiLineStrings = parserConfig.multiLineStrings;

  var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," +
      "body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case," +
      "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," +
      "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," +
      "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," +
      "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," +
      "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor");

  var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if");

  var isOperatorChar = /[&|~><!\)\(*#%@+\/=?\:;}{,\.\^\-\[\]]/;
  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"') {
      state.tokenize = tokenString2(ch);
      return state.tokenize(stream, state);
    }
    if (ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/[\d']/.test(ch)) {
      stream.eatWhile(/[\w\.']/);
      return "number";
    }
    if (ch == "-") {
      if (stream.eat("-")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur.toLowerCase())) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "keyword";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "--";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "string";
    };
  }
  function tokenString2(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "--";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "string-2";
    };
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null, state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface
  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state);
      else if (curPunc == "{") pushContext(state, stream.column(), "}");
      else if (curPunc == "[") pushContext(state, stream.column(), "]");
      else if (curPunc == "(") pushContext(state, stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null) return 0;
      var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}"
  };
});

CodeMirror.defineMIME("text/x-vhdl", "vhdl");

});
lib/codemirror/mode/rust/test.js000064400000001740147361034410012722 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 4}, "rust");
  function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));}

  MT('integer_test',
     '[number 123i32]',
     '[number 123u32]',
     '[number 123_u32]',
     '[number 0xff_u8]',
     '[number 0o70_i16]',
     '[number 0b1111_1111_1001_0000_i32]',
     '[number 0usize]');

  MT('float_test',
     '[number 123.0f64]',
     '[number 0.1f64]',
     '[number 0.1f32]',
     '[number 12E+99_f64]');

  MT('string-literals-test',
     '[string "foo"]',
     '[string r"foo"]',
     '[string "\\"foo\\""]',
     '[string r#""foo""#]',
     '[string "foo #\\"# bar"]',

     '[string b"foo"]',
     '[string br"foo"]',
     '[string b"\\"foo\\""]',
     '[string br#""foo""#]',
     '[string br##"foo #" bar"##]',

     "[string-2 'h']",
     "[string-2 b'h']");

})();
lib/codemirror/mode/rust/rust.js000064400000005721147361034410012743 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineSimpleMode("rust",{
  start: [
    // string and byte string
    {regex: /b?"/, token: "string", next: "string"},
    // raw string and raw byte string
    {regex: /b?r"/, token: "string", next: "string_raw"},
    {regex: /b?r#+"/, token: "string", next: "string_raw_hash"},
    // character
    {regex: /'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/, token: "string-2"},
    // byte
    {regex: /b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/, token: "string-2"},

    {regex: /(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/,
     token: "number"},
    {regex: /(let(?:\s+mut)?|fn|enum|mod|struct|type)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null, "def"]},
    {regex: /(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/, token: "keyword"},
    {regex: /\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/, token: "atom"},
    {regex: /\b(?:true|false|Some|None|Ok|Err)\b/, token: "builtin"},
    {regex: /\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,
     token: ["keyword", null ,"def"]},
    {regex: /#!?\[.*\]/, token: "meta"},
    {regex: /\/\/.*/, token: "comment"},
    {regex: /\/\*/, token: "comment", next: "comment"},
    {regex: /[-+\/*=<>!]+/, token: "operator"},
    {regex: /[a-zA-Z_]\w*!/,token: "variable-3"},
    {regex: /[a-zA-Z_]\w*/, token: "variable"},
    {regex: /[\{\[\(]/, indent: true},
    {regex: /[\}\]\)]/, dedent: true}
  ],
  string: [
    {regex: /"/, token: "string", next: "start"},
    {regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string"}
  ],
  string_raw: [
    {regex: /"/, token: "string", next: "start"},
    {regex: /[^"]*/, token: "string"}
  ],
  string_raw_hash: [
    {regex: /"#+/, token: "string", next: "start"},
    {regex: /(?:[^"]|"(?!#))*/, token: "string"}
  ],
  comment: [
    {regex: /.*?\*\//, token: "comment", next: "start"},
    {regex: /.*/, token: "comment"}
  ],
  meta: {
    dontIndentStates: ["comment"],
    electricInput: /^\s*\}$/,
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//",
    fold: "brace"
  }
});


CodeMirror.defineMIME("text/x-rustsrc", "rust");
});
lib/codemirror/mode/rust/index.html000064400000002774147361034410013412 0ustar00<!doctype html>

<title>CodeMirror: Rust mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/simple.js"></script>
<script src="rust.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Rust</a>
  </ul>
</div>

<article>
<h2>Rust mode</h2>


<div><textarea id="code" name="code">
// Demo code.

type foo<T> = int;
enum bar {
    some(int, foo<float>),
    none
}

fn check_crate(x: int) {
    let v = 10;
    match foo {
        1 ... 3 {
            print_foo();
            if x {
                blah().to_string();
            }
        }
        (x, y) { "bye" }
        _ { "hi" }
    }
}
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        lineWrapping: true,
        indentUnit: 4,
        mode: "rust"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-rustsrc</code>.</p>
  </article>
lib/codemirror/mode/htmlembedded/index.html000064400000004046147361034410015025 0ustar00<!doctype html>

<title>CodeMirror: Html Embedded Scripts mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../xml/xml.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../css/css.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="../../addon/mode/multiplex.js"></script>
<script src="htmlembedded.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Html Embedded Scripts</a>
  </ul>
</div>

<article>
<h2>Html Embedded Scripts mode</h2>
<form><textarea id="code" name="code">
<%
function hello(who) {
	return "Hello " + who;
}
%>
This is an example of EJS (embedded javascript)
<p>The program says <%= hello("world") %>.</p>
<script>
	alert("And here is some normal JS code"); // also colored
</script>
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "application/x-ejs",
        indentUnit: 4,
        indentWithTabs: true
      });
    </script>

    <p>Mode for html embedded scripts like JSP and ASP.NET. Depends on multiplex and HtmlMixed which in turn depends on
    JavaScript, CSS and XML.<br />Other dependencies include those of the scripting language chosen.</p>

    <p><strong>MIME types defined:</strong> <code>application/x-aspx</code> (ASP.NET),
    <code>application/x-ejs</code> (Embedded Javascript), <code>application/x-jsp</code> (JavaServer Pages)
    and <code>application/x-erb</code></p>
  </article>
lib/codemirror/mode/htmlembedded/htmlembedded.js000064400000002611147361034410016000 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"),
        require("../../addon/mode/multiplex"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../htmlmixed/htmlmixed",
            "../../addon/mode/multiplex"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("htmlembedded", function(config, parserConfig) {
    return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), {
      open: parserConfig.open || parserConfig.scriptStartRegex || "<%",
      close: parserConfig.close || parserConfig.scriptEndRegex || "%>",
      mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec)
    });
  }, "htmlmixed");

  CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"});
  CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"});
  CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"});
  CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"});
});
lib/codemirror/mode/commonlisp/commonlisp.js000064400000010610147361034410015302 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("commonlisp", function (config) {
  var specialForm = /^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/;
  var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/;
  var numLiteral = /^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/;
  var symbol = /[^\s'`,@()\[\]";]/;
  var type;

  function readSym(stream) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "\\") stream.next();
      else if (!symbol.test(ch)) { stream.backUp(1); break; }
    }
    return stream.current();
  }

  function base(stream, state) {
    if (stream.eatSpace()) {type = "ws"; return null;}
    if (stream.match(numLiteral)) return "number";
    var ch = stream.next();
    if (ch == "\\") ch = stream.next();

    if (ch == '"') return (state.tokenize = inString)(stream, state);
    else if (ch == "(") { type = "open"; return "bracket"; }
    else if (ch == ")" || ch == "]") { type = "close"; return "bracket"; }
    else if (ch == ";") { stream.skipToEnd(); type = "ws"; return "comment"; }
    else if (/['`,@]/.test(ch)) return null;
    else if (ch == "|") {
      if (stream.skipTo("|")) { stream.next(); return "symbol"; }
      else { stream.skipToEnd(); return "error"; }
    } else if (ch == "#") {
      var ch = stream.next();
      if (ch == "[") { type = "open"; return "bracket"; }
      else if (/[+\-=\.']/.test(ch)) return null;
      else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null;
      else if (ch == "|") return (state.tokenize = inComment)(stream, state);
      else if (ch == ":") { readSym(stream); return "meta"; }
      else return "error";
    } else {
      var name = readSym(stream);
      if (name == ".") return null;
      type = "symbol";
      if (name == "nil" || name == "t" || name.charAt(0) == ":") return "atom";
      if (state.lastType == "open" && (specialForm.test(name) || assumeBody.test(name))) return "keyword";
      if (name.charAt(0) == "&") return "variable-2";
      return "variable";
    }
  }

  function inString(stream, state) {
    var escaped = false, next;
    while (next = stream.next()) {
      if (next == '"' && !escaped) { state.tokenize = base; break; }
      escaped = !escaped && next == "\\";
    }
    return "string";
  }

  function inComment(stream, state) {
    var next, last;
    while (next = stream.next()) {
      if (next == "#" && last == "|") { state.tokenize = base; break; }
      last = next;
    }
    type = "ws";
    return "comment";
  }

  return {
    startState: function () {
      return {ctx: {prev: null, start: 0, indentTo: 0}, lastType: null, tokenize: base};
    },

    token: function (stream, state) {
      if (stream.sol() && typeof state.ctx.indentTo != "number")
        state.ctx.indentTo = state.ctx.start + 1;

      type = null;
      var style = state.tokenize(stream, state);
      if (type != "ws") {
        if (state.ctx.indentTo == null) {
          if (type == "symbol" && assumeBody.test(stream.current()))
            state.ctx.indentTo = state.ctx.start + config.indentUnit;
          else
            state.ctx.indentTo = "next";
        } else if (state.ctx.indentTo == "next") {
          state.ctx.indentTo = stream.column();
        }
        state.lastType = type;
      }
      if (type == "open") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null};
      else if (type == "close") state.ctx = state.ctx.prev || state.ctx;
      return style;
    },

    indent: function (state, _textAfter) {
      var i = state.ctx.indentTo;
      return typeof i == "number" ? i : state.ctx.start + 1;
    },

    closeBrackets: {pairs: "()[]{}\"\""},
    lineComment: ";;",
    blockCommentStart: "#|",
    blockCommentEnd: "|#"
  };
});

CodeMirror.defineMIME("text/x-common-lisp", "commonlisp");

});
lib/codemirror/mode/commonlisp/index.html000064400000015043147361034410014566 0ustar00<!doctype html>

<title>CodeMirror: Common Lisp mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="commonlisp.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Common Lisp</a>
  </ul>
</div>

<article>
<h2>Common Lisp mode</h2>
<form><textarea id="code" name="code">(in-package :cl-postgres)

;; These are used to synthesize reader and writer names for integer
;; reading/writing functions when the amount of bytes and the
;; signedness is known. Both the macro that creates the functions and
;; some macros that use them create names this way.
(eval-when (:compile-toplevel :load-toplevel :execute)
  (defun integer-reader-name (bytes signed)
    (intern (with-standard-io-syntax
              (format nil "~a~a~a~a" '#:read- (if signed "" '#:u) '#:int bytes))))
  (defun integer-writer-name (bytes signed)
    (intern (with-standard-io-syntax
              (format nil "~a~a~a~a" '#:write- (if signed "" '#:u) '#:int bytes)))))

(defmacro integer-reader (bytes)
  "Create a function to read integers from a binary stream."
  (let ((bits (* bytes 8)))
    (labels ((return-form (signed)
               (if signed
                   `(if (logbitp ,(1- bits) result)
                        (dpb result (byte ,(1- bits) 0) -1)
                        result)
                   `result))
             (generate-reader (signed)
               `(defun ,(integer-reader-name bytes signed) (socket)
                  (declare (type stream socket)
                           #.*optimize*)
                  ,(if (= bytes 1)
                       `(let ((result (the (unsigned-byte 8) (read-byte socket))))
                          (declare (type (unsigned-byte 8) result))
                          ,(return-form signed))
                       `(let ((result 0))
                          (declare (type (unsigned-byte ,bits) result))
                          ,@(loop :for byte :from (1- bytes) :downto 0
                                   :collect `(setf (ldb (byte 8 ,(* 8 byte)) result)
                                                   (the (unsigned-byte 8) (read-byte socket))))
                          ,(return-form signed))))))
      `(progn
;; This causes weird errors on SBCL in some circumstances. Disabled for now.
;;         (declaim (inline ,(integer-reader-name bytes t)
;;                          ,(integer-reader-name bytes nil)))
         (declaim (ftype (function (t) (signed-byte ,bits))
                         ,(integer-reader-name bytes t)))
         ,(generate-reader t)
         (declaim (ftype (function (t) (unsigned-byte ,bits))
                         ,(integer-reader-name bytes nil)))
         ,(generate-reader nil)))))

(defmacro integer-writer (bytes)
  "Create a function to write integers to a binary stream."
  (let ((bits (* 8 bytes)))
    `(progn
      (declaim (inline ,(integer-writer-name bytes t)
                       ,(integer-writer-name bytes nil)))
      (defun ,(integer-writer-name bytes nil) (socket value)
        (declare (type stream socket)
                 (type (unsigned-byte ,bits) value)
                 #.*optimize*)
        ,@(if (= bytes 1)
              `((write-byte value socket))
              (loop :for byte :from (1- bytes) :downto 0
                    :collect `(write-byte (ldb (byte 8 ,(* byte 8)) value)
                               socket)))
        (values))
      (defun ,(integer-writer-name bytes t) (socket value)
        (declare (type stream socket)
                 (type (signed-byte ,bits) value)
                 #.*optimize*)
        ,@(if (= bytes 1)
              `((write-byte (ldb (byte 8 0) value) socket))
              (loop :for byte :from (1- bytes) :downto 0
                    :collect `(write-byte (ldb (byte 8 ,(* byte 8)) value)
                               socket)))
        (values)))))

;; All the instances of the above that we need.

(integer-reader 1)
(integer-reader 2)
(integer-reader 4)
(integer-reader 8)

(integer-writer 1)
(integer-writer 2)
(integer-writer 4)

(defun write-bytes (socket bytes)
  "Write a byte-array to a stream."
  (declare (type stream socket)
           (type (simple-array (unsigned-byte 8)) bytes)
           #.*optimize*)
  (write-sequence bytes socket))

(defun write-str (socket string)
  "Write a null-terminated string to a stream \(encoding it when UTF-8
support is enabled.)."
  (declare (type stream socket)
           (type string string)
           #.*optimize*)
  (enc-write-string string socket)
  (write-uint1 socket 0))

(declaim (ftype (function (t unsigned-byte)
                          (simple-array (unsigned-byte 8) (*)))
                read-bytes))
(defun read-bytes (socket length)
  "Read a byte array of the given length from a stream."
  (declare (type stream socket)
           (type fixnum length)
           #.*optimize*)
  (let ((result (make-array length :element-type '(unsigned-byte 8))))
    (read-sequence result socket)
    result))

(declaim (ftype (function (t) string) read-str))
(defun read-str (socket)
  "Read a null-terminated string from a stream. Takes care of encoding
when UTF-8 support is enabled."
  (declare (type stream socket)
           #.*optimize*)
  (enc-read-string socket :null-terminated t))

(defun skip-bytes (socket length)
  "Skip a given number of bytes in a binary stream."
  (declare (type stream socket)
           (type (unsigned-byte 32) length)
           #.*optimize*)
  (dotimes (i length)
    (read-byte socket)))

(defun skip-str (socket)
  "Skip a null-terminated string."
  (declare (type stream socket)
           #.*optimize*)
  (loop :for char :of-type fixnum = (read-byte socket)
        :until (zerop char)))

(defun ensure-socket-is-closed (socket &amp;key abort)
  (when (open-stream-p socket)
    (handler-case
        (close socket :abort abort)
      (error (error)
        (warn "Ignoring the error which happened while trying to close PostgreSQL socket: ~A" error)))))
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {lineNumbers: true});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-common-lisp</code>.</p>

  </article>
lib/codemirror/mode/index.html000064400000020011147361034410012375 0ustar00<!doctype html>

<title>CodeMirror: Language Modes</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../doc/docs.css">

<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>

  <ul>
    <li><a href="../index.html">Home</a>
    <li><a href="../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a class=active href="#">Language modes</a>
  </ul>
</div>

<article>

  <h2>Language modes</h2>

  <p>This is a list of every mode in the distribution. Each mode lives
in a subdirectory of the <code>mode/</code> directory, and typically
defines a single JavaScript file that implements the mode. Loading
such file will make the language available to CodeMirror, through
the <a href="../doc/manual.html#option_mode"><code>mode</code></a>
option.</p>

  <div style="-webkit-columns: 100px 2; -moz-columns: 100px 2; columns: 100px 2;">
    <ul style="margin-top: 0">
      <li><a href="apl/index.html">APL</a></li>
      <li><a href="asn.1/index.html">ASN.1</a></li>
      <li><a href="asterisk/index.html">Asterisk dialplan</a></li>
      <li><a href="brainfuck/index.html">Brainfuck</a></li>
      <li><a href="clike/index.html">C, C++, C#</a></li>
      <li><a href="clike/index.html">Ceylon</a></li>
      <li><a href="clojure/index.html">Clojure</a></li>
      <li><a href="css/gss.html">Closure Stylesheets (GSS)</a></li>
      <li><a href="cmake/index.html">CMake</a></li>
      <li><a href="cobol/index.html">COBOL</a></li>
      <li><a href="coffeescript/index.html">CoffeeScript</a></li>
      <li><a href="commonlisp/index.html">Common Lisp</a></li>
      <li><a href="crystal/index.html">Crystal</a></li>
      <li><a href="css/index.html">CSS</a></li>
      <li><a href="cypher/index.html">Cypher</a></li>
      <li><a href="python/index.html">Cython</a></li>
      <li><a href="d/index.html">D</a></li>
      <li><a href="dart/index.html">Dart</a></li>
      <li><a href="django/index.html">Django</a> (templating language)</li>
      <li><a href="dockerfile/index.html">Dockerfile</a></li>
      <li><a href="diff/index.html">diff</a></li>
      <li><a href="dtd/index.html">DTD</a></li>
      <li><a href="dylan/index.html">Dylan</a></li>
      <li><a href="ebnf/index.html">EBNF</a></li>
      <li><a href="ecl/index.html">ECL</a></li>
      <li><a href="eiffel/index.html">Eiffel</a></li>
      <li><a href="elm/index.html">Elm</a></li>
      <li><a href="erlang/index.html">Erlang</a></li>
      <li><a href="factor/index.html">Factor</a></li>
      <li><a href="fcl/index.html">FCL</a></li>
      <li><a href="forth/index.html">Forth</a></li>
      <li><a href="fortran/index.html">Fortran</a></li>
      <li><a href="mllike/index.html">F#</a></li>
      <li><a href="gas/index.html">Gas</a> (AT&amp;T-style assembly)</li>
      <li><a href="gherkin/index.html">Gherkin</a></li>
      <li><a href="go/index.html">Go</a></li>
      <li><a href="groovy/index.html">Groovy</a></li>
      <li><a href="haml/index.html">HAML</a></li>
      <li><a href="handlebars/index.html">Handlebars</a></li>
      <li><a href="haskell/index.html">Haskell</a> (<a href="haskell-literate/index.html">Literate</a>)</li>
      <li><a href="haxe/index.html">Haxe</a></li>
      <li><a href="htmlembedded/index.html">HTML embedded</a> (JSP, ASP.NET)</li>
      <li><a href="htmlmixed/index.html">HTML mixed-mode</a></li>
      <li><a href="http/index.html">HTTP</a></li>
      <li><a href="idl/index.html">IDL</a></li>
      <li><a href="clike/index.html">Java</a></li>
      <li><a href="javascript/index.html">JavaScript</a> (<a href="jsx/index.html">JSX</a>)</li>
      <li><a href="jinja2/index.html">Jinja2</a></li>
      <li><a href="julia/index.html">Julia</a></li>
      <li><a href="kotlin/index.html">Kotlin</a></li>
      <li><a href="css/less.html">LESS</a></li>
      <li><a href="livescript/index.html">LiveScript</a></li>
      <li><a href="lua/index.html">Lua</a></li>
      <li><a href="markdown/index.html">Markdown</a> (<a href="gfm/index.html">GitHub-flavour</a>)</li>
      <li><a href="mathematica/index.html">Mathematica</a></li>
      <li><a href="mbox/index.html">mbox</a></li>
      <li><a href="mirc/index.html">mIRC</a></li>
      <li><a href="modelica/index.html">Modelica</a></li>
      <li><a href="mscgen/index.html">MscGen</a></li>
      <li><a href="mumps/index.html">MUMPS</a></li>
      <li><a href="nginx/index.html">Nginx</a></li>
      <li><a href="nsis/index.html">NSIS</a></li>
      <li><a href="ntriples/index.html">NTriples</a></li>
      <li><a href="clike/index.html">Objective C</a></li>
      <li><a href="mllike/index.html">OCaml</a></li>
      <li><a href="octave/index.html">Octave</a> (MATLAB)</li>
      <li><a href="oz/index.html">Oz</a></li>
      <li><a href="pascal/index.html">Pascal</a></li>
      <li><a href="pegjs/index.html">PEG.js</a></li>
      <li><a href="perl/index.html">Perl</a></li>
      <li><a href="asciiarmor/index.html">PGP (ASCII armor)</a></li>
      <li><a href="php/index.html">PHP</a></li>
      <li><a href="pig/index.html">Pig Latin</a></li>
      <li><a href="powershell/index.html">PowerShell</a></li>
      <li><a href="properties/index.html">Properties files</a></li>
      <li><a href="protobuf/index.html">ProtoBuf</a></li>
      <li><a href="pug/index.html">Pug</a></li>
      <li><a href="puppet/index.html">Puppet</a></li>
      <li><a href="python/index.html">Python</a></li>
      <li><a href="q/index.html">Q</a></li>
      <li><a href="r/index.html">R</a></li>
      <li><a href="rpm/index.html">RPM</a></li>
      <li><a href="rst/index.html">reStructuredText</a></li>
      <li><a href="ruby/index.html">Ruby</a></li>
      <li><a href="rust/index.html">Rust</a></li>
      <li><a href="sas/index.html">SAS</a></li>
      <li><a href="sass/index.html">Sass</a></li>
      <li><a href="spreadsheet/index.html">Spreadsheet</a></li>
      <li><a href="clike/scala.html">Scala</a></li>
      <li><a href="scheme/index.html">Scheme</a></li>
      <li><a href="css/scss.html">SCSS</a></li>
      <li><a href="shell/index.html">Shell</a></li>
      <li><a href="sieve/index.html">Sieve</a></li>
      <li><a href="slim/index.html">Slim</a></li>
      <li><a href="smalltalk/index.html">Smalltalk</a></li>
      <li><a href="smarty/index.html">Smarty</a></li>
      <li><a href="solr/index.html">Solr</a></li>
      <li><a href="soy/index.html">Soy</a></li>
      <li><a href="stylus/index.html">Stylus</a></li>
      <li><a href="sql/index.html">SQL</a> (several dialects)</li>
      <li><a href="sparql/index.html">SPARQL</a></li>
      <li><a href="clike/index.html">Squirrel</a></li>
      <li><a href="swift/index.html">Swift</a></li>
      <li><a href="stex/index.html">sTeX, LaTeX</a></li>
      <li><a href="tcl/index.html">Tcl</a></li>
      <li><a href="textile/index.html">Textile</a></li>
      <li><a href="tiddlywiki/index.html">Tiddlywiki</a></li>
      <li><a href="tiki/index.html">Tiki wiki</a></li>
      <li><a href="toml/index.html">TOML</a></li>
      <li><a href="tornado/index.html">Tornado</a> (templating language)</li>
      <li><a href="troff/index.html">troff</a> (for manpages)</li>
      <li><a href="ttcn/index.html">TTCN</a></li>
      <li><a href="ttcn-cfg/index.html">TTCN Configuration</a></li>
      <li><a href="turtle/index.html">Turtle</a></li>
      <li><a href="twig/index.html">Twig</a></li>
      <li><a href="vb/index.html">VB.NET</a></li>
      <li><a href="vbscript/index.html">VBScript</a></li>
      <li><a href="velocity/index.html">Velocity</a></li>
      <li><a href="verilog/index.html">Verilog/SystemVerilog</a></li>
      <li><a href="vhdl/index.html">VHDL</a></li>
      <li><a href="vue/index.html">Vue.js app</a></li>
      <li><a href="webidl/index.html">Web IDL</a></li>
      <li><a href="xml/index.html">XML/HTML</a></li>
      <li><a href="xquery/index.html">XQuery</a></li>
      <li><a href="yacas/index.html">Yacas</a></li>
      <li><a href="yaml/index.html">YAML</a></li>
      <li><a href="yaml-frontmatter/index.html">YAML frontmatter</a></li>
      <li><a href="z80/index.html">Z80</a></li>
    </ul>
  </div>

</article>
lib/codemirror/mode/shell/test.js000064400000003366147361034410013042 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({}, "shell");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("var",
     "text [def $var] text");
  MT("varBraces",
     "text[def ${var}]text");
  MT("varVar",
     "text [def $a$b] text");
  MT("varBracesVarBraces",
     "text[def ${a}${b}]text");

  MT("singleQuotedVar",
     "[string 'text $var text']");
  MT("singleQuotedVarBraces",
     "[string 'text ${var} text']");

  MT("doubleQuotedVar",
     '[string "text ][def $var][string  text"]');
  MT("doubleQuotedVarBraces",
     '[string "text][def ${var}][string text"]');
  MT("doubleQuotedVarPunct",
     '[string "text ][def $@][string  text"]');
  MT("doubleQuotedVarVar",
     '[string "][def $a$b][string "]');
  MT("doubleQuotedVarBracesVarBraces",
     '[string "][def ${a}${b}][string "]');

  MT("notAString",
     "text\\'text");
  MT("escapes",
     "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)");

  MT("subshell",
     "[builtin echo] [quote jQuery(whoami)] s log, stardate [quote `date`].");
  MT("doubleQuotedSubshell",
     "[builtin echo] [string \"][quote jQuery(whoami)][string 's log, stardate `date`.\"]");

  MT("hashbang",
     "[meta #!/bin/bash]");
  MT("comment",
     "text [comment # Blurb]");

  MT("numbers",
     "[number 0] [number 1] [number 2]");
  MT("keywords",
     "[keyword while] [atom true]; [keyword do]",
     "  [builtin sleep] [number 3]",
     "[keyword done]");
  MT("options",
     "[builtin ls] [attribute -l] [attribute --human-readable]");
  MT("operator",
     "[def var][operator =]value");
})();
lib/codemirror/mode/shell/index.html000064400000003321147361034410013511 0ustar00<!doctype html>

<title>CodeMirror: Shell mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel=stylesheet href=../../lib/codemirror.css>
<script src=../../lib/codemirror.js></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src=shell.js></script>
<style type=text/css>
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Shell</a>
  </ul>
</div>

<article>
<h2>Shell mode</h2>


<textarea id=code>
#!/bin/bash

# clone the repository
git clone http://github.com/garden/tree

# generate HTTPS credentials
cd tree
openssl genrsa -aes256 -out https.key 1024
openssl req -new -nodes -key https.key -out https.csr
openssl x509 -req -days 365 -in https.csr -signkey https.key -out https.crt
cp https.key{,.orig}
openssl rsa -in https.key.orig -out https.key

# start the server in HTTPS mode
cd web
sudo node ../server.js 443 'yes' &gt;&gt; ../node.log &amp;

# here is how to stop the server
for pid in `ps aux | grep 'node ../server.js' | awk '{print $2}'` ; do
  sudo kill -9 $pid 2&gt; /dev/null
done

exit 0</textarea>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById('code'), {
    mode: 'shell',
    lineNumbers: true,
    matchBrackets: true
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-sh</code>.</p>
</article>
lib/codemirror/mode/shell/shell.js000064400000007320147361034410013164 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('shell', function() {

  var words = {};
  function define(style, string) {
    var split = string.split(' ');
    for(var i = 0; i < split.length; i++) {
      words[split[i]] = style;
    }
  };

  // Atoms
  define('atom', 'true false');

  // Keywords
  define('keyword', 'if then do else elif while until for in esac fi fin ' +
    'fil done exit set unset export function');

  // Commands
  define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' +
    'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' +
    'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' +
    'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' +
    'touch vi vim wall wc wget who write yes zsh');

  function tokenBase(stream, state) {
    if (stream.eatSpace()) return null;

    var sol = stream.sol();
    var ch = stream.next();

    if (ch === '\\') {
      stream.next();
      return null;
    }
    if (ch === '\'' || ch === '"' || ch === '`') {
      state.tokens.unshift(tokenString(ch));
      return tokenize(stream, state);
    }
    if (ch === '#') {
      if (sol && stream.eat('!')) {
        stream.skipToEnd();
        return 'meta'; // 'comment'?
      }
      stream.skipToEnd();
      return 'comment';
    }
    if (ch === '$') {
      state.tokens.unshift(tokenDollar);
      return tokenize(stream, state);
    }
    if (ch === '+' || ch === '=') {
      return 'operator';
    }
    if (ch === '-') {
      stream.eat('-');
      stream.eatWhile(/\w/);
      return 'attribute';
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/\d/);
      if(stream.eol() || !/\w/.test(stream.peek())) {
        return 'number';
      }
    }
    stream.eatWhile(/[\w-]/);
    var cur = stream.current();
    if (stream.peek() === '=' && /\w+/.test(cur)) return 'def';
    return words.hasOwnProperty(cur) ? words[cur] : null;
  }

  function tokenString(quote) {
    return function(stream, state) {
      var next, end = false, escaped = false;
      while ((next = stream.next()) != null) {
        if (next === quote && !escaped) {
          end = true;
          break;
        }
        if (next === '$' && !escaped && quote !== '\'') {
          escaped = true;
          stream.backUp(1);
          state.tokens.unshift(tokenDollar);
          break;
        }
        escaped = !escaped && next === '\\';
      }
      if (end || !escaped) {
        state.tokens.shift();
      }
      return (quote === '`' || quote === ')' ? 'quote' : 'string');
    };
  };

  var tokenDollar = function(stream, state) {
    if (state.tokens.length > 1) stream.eat('$');
    var ch = stream.next(), hungry = /\w/;
    if (ch === '{') hungry = /[^}]/;
    if (ch === '(') {
      state.tokens[0] = tokenString(')');
      return tokenize(stream, state);
    }
    if (!/\d/.test(ch)) {
      stream.eatWhile(hungry);
      stream.eat('}');
    }
    state.tokens.shift();
    return 'def';
  };

  function tokenize(stream, state) {
    return (state.tokens[0] || tokenBase) (stream, state);
  };

  return {
    startState: function() {return {tokens:[]};},
    token: function(stream, state) {
      return tokenize(stream, state);
    },
    lineComment: '#',
    fold: "brace"
  };
});

CodeMirror.defineMIME('text/x-sh', 'shell');

});
lib/codemirror/mode/javascript/test.js000064400000017221147361034410014074 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "javascript");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("locals",
     "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }");

  MT("comma-and-binop",
     "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }");

  MT("destructuring",
     "([keyword function]([def a], [[[def b], [def c] ]]) {",
     "  [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);",
     "  [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];",
     "})();");

  MT("destructure_trailing_comma",
    "[keyword let] {[def a], [def b],} [operator =] [variable foo];",
    "[keyword let] [def c];"); // Parser still in good state?

  MT("class_body",
     "[keyword class] [def Foo] {",
     "  [property constructor]() {}",
     "  [property sayName]() {",
     "    [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];",
     "  }",
     "}");

  MT("class",
     "[keyword class] [def Point] [keyword extends] [variable SuperThing] {",
     "  [property get] [property prop]() { [keyword return] [number 24]; }",
     "  [property constructor]([def x], [def y]) {",
     "    [keyword super]([string 'something']);",
     "    [keyword this].[property x] [operator =] [variable-2 x];",
     "  }",
     "}");

  MT("import",
     "[keyword function] [def foo]() {",
     "  [keyword import] [def $] [keyword from] [string 'jquery'];",
     "  [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];",
     "}");

  MT("import_trailing_comma",
     "[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']")

  MT("const",
     "[keyword function] [def f]() {",
     "  [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];",
     "}");

  MT("for/of",
     "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}");

  MT("generator",
     "[keyword function*] [def repeat]([def n]) {",
     "  [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])",
     "    [keyword yield] [variable-2 i];",
     "}");

  MT("quotedStringAddition",
     "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];");

  MT("quotedFatArrow",
     "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];");

  MT("fatArrow",
     "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);",
     "[variable a];", // No longer in scope
     "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];",
     "[variable c];");

  MT("spread",
     "[keyword function] [def f]([def a], [meta ...][def b]) {",
     "  [variable something]([variable-2 a], [meta ...][variable-2 b]);",
     "}");

  MT("quasi",
     "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");

  MT("quasi_no_function",
     "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");

  MT("indent_statement",
     "[keyword var] [def x] [operator =] [number 10]",
     "[variable x] [operator +=] [variable y] [operator +]",
     "  [atom Infinity]",
     "[keyword debugger];");

  MT("indent_if",
     "[keyword if] ([number 1])",
     "  [keyword break];",
     "[keyword else] [keyword if] ([number 2])",
     "  [keyword continue];",
     "[keyword else]",
     "  [number 10];",
     "[keyword if] ([number 1]) {",
     "  [keyword break];",
     "} [keyword else] [keyword if] ([number 2]) {",
     "  [keyword continue];",
     "} [keyword else] {",
     "  [number 10];",
     "}");

  MT("indent_for",
     "[keyword for] ([keyword var] [def i] [operator =] [number 0];",
     "     [variable i] [operator <] [number 100];",
     "     [variable i][operator ++])",
     "  [variable doSomething]([variable i]);",
     "[keyword debugger];");

  MT("indent_c_style",
     "[keyword function] [def foo]()",
     "{",
     "  [keyword debugger];",
     "}");

  MT("indent_else",
     "[keyword for] (;;)",
     "  [keyword if] ([variable foo])",
     "    [keyword if] ([variable bar])",
     "      [number 1];",
     "    [keyword else]",
     "      [number 2];",
     "  [keyword else]",
     "    [number 3];");

  MT("indent_funarg",
     "[variable foo]([number 10000],",
     "    [keyword function]([def a]) {",
     "  [keyword debugger];",
     "};");

  MT("indent_below_if",
     "[keyword for] (;;)",
     "  [keyword if] ([variable foo])",
     "    [number 1];",
     "[number 2];");

  MT("multilinestring",
     "[keyword var] [def x] [operator =] [string 'foo\\]",
     "[string bar'];");

  MT("scary_regexp",
     "[string-2 /foo[[/]]bar/];");

  MT("indent_strange_array",
     "[keyword var] [def x] [operator =] [[",
     "  [number 1],,",
     "  [number 2],",
     "]];",
     "[number 10];");

  MT("param_default",
     "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {",
     "  [keyword return] [variable-2 x];",
     "}");

  MT("new_target",
     "[keyword function] [def F]([def target]) {",
     "  [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {",
     "    [keyword return] [keyword new]",
     "      .[keyword target];",
     "  }",
     "}");

  var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript")
  function TS(name) {
    test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1))
  }

  TS("extend_type",
     "[keyword class] [def Foo] [keyword extends] [variable-3 Some][operator <][variable-3 Type][operator >] {}")

  TS("arrow_type",
     "[keyword let] [def x]: ([variable arg]: [variable-3 Type]) [operator =>] [variable-3 ReturnType]")

  var jsonld_mode = CodeMirror.getMode(
    {indentUnit: 2},
    {name: "javascript", jsonld: true}
  );
  function LD(name) {
    test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1));
  }

  LD("json_ld_keywords",
    '{',
    '  [meta "@context"]: {',
    '    [meta "@base"]: [string "http://example.com"],',
    '    [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],',
    '    [property "likesFlavor"]: {',
    '      [meta "@container"]: [meta "@list"]',
    '      [meta "@reverse"]: [string "@beFavoriteOf"]',
    '    },',
    '    [property "nick"]: { [meta "@container"]: [meta "@set"] },',
    '    [property "nick"]: { [meta "@container"]: [meta "@index"] }',
    '  },',
    '  [meta "@graph"]: [[ {',
    '    [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],',
    '    [property "name"]: [string "John Lennon"],',
    '    [property "modified"]: {',
    '      [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],',
    '      [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]',
    '    }',
    '  } ]]',
    '}');

  LD("json_ld_fake",
    '{',
    '  [property "@fake"]: [string "@fake"],',
    '  [property "@contextual"]: [string "@identifier"],',
    '  [property "user@domain.com"]: [string "@graphical"],',
    '  [property "@ID"]: [string "@@ID"]',
    '}');
})();
lib/codemirror/mode/javascript/javascript.js000064400000070217147361034410015267 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function expressionAllowed(stream, state, backUp) {
  return /^(?:operator|sof|keyword c|case|new|[\[{}\(,;:]|=>)$/.test(state.lastType) ||
    (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))
}

CodeMirror.defineMode("javascript", function(config, parserConfig) {
  var indentUnit = config.indentUnit;
  var statementIndent = parserConfig.statementIndent;
  var jsonldMode = parserConfig.jsonld;
  var jsonMode = parserConfig.json || jsonldMode;
  var isTS = parserConfig.typescript;
  var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;

  // Tokenizer

  var keywords = function(){
    function kw(type) {return {type: type, style: "keyword"};}
    var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c");
    var operator = kw("operator"), atom = {type: "atom", style: "atom"};

    var jsKeywords = {
      "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
      "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C,
      "var": kw("var"), "const": kw("var"), "let": kw("var"),
      "function": kw("function"), "catch": kw("catch"),
      "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
      "in": operator, "typeof": operator, "instanceof": operator,
      "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
      "this": kw("this"), "class": kw("class"), "super": kw("atom"),
      "yield": C, "export": kw("export"), "import": kw("import"), "extends": C,
      "await": C, "async": kw("async")
    };

    // Extend the 'normal' keywords with the TypeScript language extensions
    if (isTS) {
      var type = {type: "variable", style: "variable-3"};
      var tsKeywords = {
        // object-like things
        "interface": kw("class"),
        "implements": C,
        "namespace": C,
        "module": kw("module"),
        "enum": kw("module"),

        // scope modifiers
        "public": kw("modifier"),
        "private": kw("modifier"),
        "protected": kw("modifier"),
        "abstract": kw("modifier"),

        // operators
        "as": operator,

        // types
        "string": type, "number": type, "boolean": type, "any": type
      };

      for (var attr in tsKeywords) {
        jsKeywords[attr] = tsKeywords[attr];
      }
    }

    return jsKeywords;
  }();

  var isOperatorChar = /[+\-*&%=<>!?|~^]/;
  var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;

  function readRegexp(stream) {
    var escaped = false, next, inSet = false;
    while ((next = stream.next()) != null) {
      if (!escaped) {
        if (next == "/" && !inSet) return;
        if (next == "[") inSet = true;
        else if (inSet && next == "]") inSet = false;
      }
      escaped = !escaped && next == "\\";
    }
  }

  // Used as scratch variables to communicate multiple values without
  // consing up tons of objects.
  var type, content;
  function ret(tp, style, cont) {
    type = tp; content = cont;
    return style;
  }
  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
      return ret("number", "number");
    } else if (ch == "." && stream.match("..")) {
      return ret("spread", "meta");
    } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      return ret(ch);
    } else if (ch == "=" && stream.eat(">")) {
      return ret("=>", "operator");
    } else if (ch == "0" && stream.eat(/x/i)) {
      stream.eatWhile(/[\da-f]/i);
      return ret("number", "number");
    } else if (ch == "0" && stream.eat(/o/i)) {
      stream.eatWhile(/[0-7]/i);
      return ret("number", "number");
    } else if (ch == "0" && stream.eat(/b/i)) {
      stream.eatWhile(/[01]/i);
      return ret("number", "number");
    } else if (/\d/.test(ch)) {
      stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);
      return ret("number", "number");
    } else if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      } else if (stream.eat("/")) {
        stream.skipToEnd();
        return ret("comment", "comment");
      } else if (expressionAllowed(stream, state, 1)) {
        readRegexp(stream);
        stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);
        return ret("regexp", "string-2");
      } else {
        stream.eatWhile(isOperatorChar);
        return ret("operator", "operator", stream.current());
      }
    } else if (ch == "`") {
      state.tokenize = tokenQuasi;
      return tokenQuasi(stream, state);
    } else if (ch == "#") {
      stream.skipToEnd();
      return ret("error", "error");
    } else if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return ret("operator", "operator", stream.current());
    } else if (wordRE.test(ch)) {
      stream.eatWhile(wordRE);
      var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];
      return (known && state.lastType != ".") ? ret(known.type, known.style, word) :
                     ret("variable", "variable", word);
    }
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next;
      if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){
        state.tokenize = tokenBase;
        return ret("jsonld-keyword", "meta");
      }
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) break;
        escaped = !escaped && next == "\\";
      }
      if (!escaped) state.tokenize = tokenBase;
      return ret("string", "string");
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ret("comment", "comment");
  }

  function tokenQuasi(stream, state) {
    var escaped = false, next;
    while ((next = stream.next()) != null) {
      if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {
        state.tokenize = tokenBase;
        break;
      }
      escaped = !escaped && next == "\\";
    }
    return ret("quasi", "string-2", stream.current());
  }

  var brackets = "([{}])";
  // This is a crude lookahead trick to try and notice that we're
  // parsing the argument patterns for a fat-arrow function before we
  // actually hit the arrow token. It only works if the arrow is on
  // the same line as the arguments and there's no strange noise
  // (comments) in between. Fallback is to only notice when we hit the
  // arrow, and not declare the arguments as locals for the arrow
  // body.
  function findFatArrow(stream, state) {
    if (state.fatArrowAt) state.fatArrowAt = null;
    var arrow = stream.string.indexOf("=>", stream.start);
    if (arrow < 0) return;

    var depth = 0, sawSomething = false;
    for (var pos = arrow - 1; pos >= 0; --pos) {
      var ch = stream.string.charAt(pos);
      var bracket = brackets.indexOf(ch);
      if (bracket >= 0 && bracket < 3) {
        if (!depth) { ++pos; break; }
        if (--depth == 0) { if (ch == "(") sawSomething = true; break; }
      } else if (bracket >= 3 && bracket < 6) {
        ++depth;
      } else if (wordRE.test(ch)) {
        sawSomething = true;
      } else if (/["'\/]/.test(ch)) {
        return;
      } else if (sawSomething && !depth) {
        ++pos;
        break;
      }
    }
    if (sawSomething && !depth) state.fatArrowAt = pos;
  }

  // Parser

  var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true};

  function JSLexical(indented, column, type, align, prev, info) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.prev = prev;
    this.info = info;
    if (align != null) this.align = align;
  }

  function inScope(state, varname) {
    for (var v = state.localVars; v; v = v.next)
      if (v.name == varname) return true;
    for (var cx = state.context; cx; cx = cx.prev) {
      for (var v = cx.vars; v; v = v.next)
        if (v.name == varname) return true;
    }
  }

  function parseJS(state, style, type, content, stream) {
    var cc = state.cc;
    // Communicate our context to the combinators.
    // (Less wasteful than consing up a hundred closures on every call.)
    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;

    if (!state.lexical.hasOwnProperty("align"))
      state.lexical.align = true;

    while(true) {
      var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;
      if (combinator(type, content)) {
        while(cc.length && cc[cc.length - 1].lex)
          cc.pop()();
        if (cx.marked) return cx.marked;
        if (type == "variable" && inScope(state, content)) return "variable-2";
        return style;
      }
    }
  }

  // Combinator utils

  var cx = {state: null, column: null, marked: null, cc: null};
  function pass() {
    for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
  }
  function cont() {
    pass.apply(null, arguments);
    return true;
  }
  function register(varname) {
    function inList(list) {
      for (var v = list; v; v = v.next)
        if (v.name == varname) return true;
      return false;
    }
    var state = cx.state;
    cx.marked = "def";
    if (state.context) {
      if (inList(state.localVars)) return;
      state.localVars = {name: varname, next: state.localVars};
    } else {
      if (inList(state.globalVars)) return;
      if (parserConfig.globalVars)
        state.globalVars = {name: varname, next: state.globalVars};
    }
  }

  // Combinators

  var defaultVars = {name: "this", next: {name: "arguments"}};
  function pushcontext() {
    cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};
    cx.state.localVars = defaultVars;
  }
  function popcontext() {
    cx.state.localVars = cx.state.context.vars;
    cx.state.context = cx.state.context.prev;
  }
  function pushlex(type, info) {
    var result = function() {
      var state = cx.state, indent = state.indented;
      if (state.lexical.type == "stat") indent = state.lexical.indented;
      else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)
        indent = outer.indented;
      state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
    };
    result.lex = true;
    return result;
  }
  function poplex() {
    var state = cx.state;
    if (state.lexical.prev) {
      if (state.lexical.type == ")")
        state.indented = state.lexical.indented;
      state.lexical = state.lexical.prev;
    }
  }
  poplex.lex = true;

  function expect(wanted) {
    function exp(type) {
      if (type == wanted) return cont();
      else if (wanted == ";") return pass();
      else return cont(exp);
    };
    return exp;
  }

  function statement(type, value) {
    if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex);
    if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex);
    if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
    if (type == "{") return cont(pushlex("}"), block, poplex);
    if (type == ";") return cont();
    if (type == "if") {
      if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex)
        cx.state.cc.pop()();
      return cont(pushlex("form"), expression, statement, poplex, maybeelse);
    }
    if (type == "function") return cont(functiondef);
    if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);
    if (type == "variable") return cont(pushlex("stat"), maybelabel);
    if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"),
                                      block, poplex, poplex);
    if (type == "case") return cont(expression, expect(":"));
    if (type == "default") return cont(expect(":"));
    if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
                                     statement, poplex, popcontext);
    if (type == "class") return cont(pushlex("form"), className, poplex);
    if (type == "export") return cont(pushlex("stat"), afterExport, poplex);
    if (type == "import") return cont(pushlex("stat"), afterImport, poplex);
    if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex)
    if (type == "async") return cont(statement)
    return pass(pushlex("stat"), expression, expect(";"), poplex);
  }
  function expression(type) {
    return expressionInner(type, false);
  }
  function expressionNoComma(type) {
    return expressionInner(type, true);
  }
  function expressionInner(type, noComma) {
    if (cx.state.fatArrowAt == cx.stream.start) {
      var body = noComma ? arrowBodyNoComma : arrowBody;
      if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext);
      else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);
    }

    var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
    if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
    if (type == "function") return cont(functiondef, maybeop);
    if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpressionNoComma : maybeexpression);
    if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop);
    if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);
    if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);
    if (type == "{") return contCommasep(objprop, "}", null, maybeop);
    if (type == "quasi") return pass(quasi, maybeop);
    if (type == "new") return cont(maybeTarget(noComma));
    return cont();
  }
  function maybeexpression(type) {
    if (type.match(/[;\}\)\],]/)) return pass();
    return pass(expression);
  }
  function maybeexpressionNoComma(type) {
    if (type.match(/[;\}\)\],]/)) return pass();
    return pass(expressionNoComma);
  }

  function maybeoperatorComma(type, value) {
    if (type == ",") return cont(expression);
    return maybeoperatorNoComma(type, value, false);
  }
  function maybeoperatorNoComma(type, value, noComma) {
    var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
    var expr = noComma == false ? expression : expressionNoComma;
    if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
    if (type == "operator") {
      if (/\+\+|--/.test(value)) return cont(me);
      if (value == "?") return cont(expression, expect(":"), expr);
      return cont(expr);
    }
    if (type == "quasi") { return pass(quasi, me); }
    if (type == ";") return;
    if (type == "(") return contCommasep(expressionNoComma, ")", "call", me);
    if (type == ".") return cont(property, me);
    if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);
  }
  function quasi(type, value) {
    if (type != "quasi") return pass();
    if (value.slice(value.length - 2) != "${") return cont(quasi);
    return cont(expression, continueQuasi);
  }
  function continueQuasi(type) {
    if (type == "}") {
      cx.marked = "string-2";
      cx.state.tokenize = tokenQuasi;
      return cont(quasi);
    }
  }
  function arrowBody(type) {
    findFatArrow(cx.stream, cx.state);
    return pass(type == "{" ? statement : expression);
  }
  function arrowBodyNoComma(type) {
    findFatArrow(cx.stream, cx.state);
    return pass(type == "{" ? statement : expressionNoComma);
  }
  function maybeTarget(noComma) {
    return function(type) {
      if (type == ".") return cont(noComma ? targetNoComma : target);
      else return pass(noComma ? expressionNoComma : expression);
    };
  }
  function target(_, value) {
    if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); }
  }
  function targetNoComma(_, value) {
    if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); }
  }
  function maybelabel(type) {
    if (type == ":") return cont(poplex, statement);
    return pass(maybeoperatorComma, expect(";"), poplex);
  }
  function property(type) {
    if (type == "variable") {cx.marked = "property"; return cont();}
  }
  function objprop(type, value) {
    if (type == "async") {
      cx.marked = "property";
      return cont(objprop);
    } else if (type == "variable" || cx.style == "keyword") {
      cx.marked = "property";
      if (value == "get" || value == "set") return cont(getterSetter);
      return cont(afterprop);
    } else if (type == "number" || type == "string") {
      cx.marked = jsonldMode ? "property" : (cx.style + " property");
      return cont(afterprop);
    } else if (type == "jsonld-keyword") {
      return cont(afterprop);
    } else if (type == "modifier") {
      return cont(objprop)
    } else if (type == "[") {
      return cont(expression, expect("]"), afterprop);
    } else if (type == "spread") {
      return cont(expression);
    } else if (type == ":") {
      return pass(afterprop)
    }
  }
  function getterSetter(type) {
    if (type != "variable") return pass(afterprop);
    cx.marked = "property";
    return cont(functiondef);
  }
  function afterprop(type) {
    if (type == ":") return cont(expressionNoComma);
    if (type == "(") return pass(functiondef);
  }
  function commasep(what, end) {
    function proceed(type, value) {
      if (type == ",") {
        var lex = cx.state.lexical;
        if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
        return cont(function(type, value) {
          if (type == end || value == end) return pass()
          return pass(what)
        }, proceed);
      }
      if (type == end || value == end) return cont();
      return cont(expect(end));
    }
    return function(type, value) {
      if (type == end || value == end) return cont();
      return pass(what, proceed);
    };
  }
  function contCommasep(what, end, info) {
    for (var i = 3; i < arguments.length; i++)
      cx.cc.push(arguments[i]);
    return cont(pushlex(end, info), commasep(what, end), poplex);
  }
  function block(type) {
    if (type == "}") return cont();
    return pass(statement, block);
  }
  function maybetype(type) {
    if (isTS && type == ":") return cont(typeexpr);
  }
  function maybedefault(_, value) {
    if (value == "=") return cont(expressionNoComma);
  }
  function typeexpr(type) {
    if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);}
    if (type == "{") return cont(commasep(typeprop, "}"))
    if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType)
  }
  function maybeReturnType(type) {
    if (type == "=>") return cont(typeexpr)
  }
  function typeprop(type) {
    if (type == "variable" || cx.style == "keyword") {
      cx.marked = "property"
      return cont(typeprop)
    } else if (type == ":") {
      return cont(typeexpr)
    }
  }
  function typearg(type) {
    if (type == "variable") return cont(typearg)
    else if (type == ":") return cont(typeexpr)
  }
  function afterType(type, value) {
    if (value == "<") return cont(commasep(typeexpr, ">"), afterType)
    if (type == "[") return cont(expect("]"), afterType)
  }
  function vardef() {
    return pass(pattern, maybetype, maybeAssign, vardefCont);
  }
  function pattern(type, value) {
    if (type == "modifier") return cont(pattern)
    if (type == "variable") { register(value); return cont(); }
    if (type == "spread") return cont(pattern);
    if (type == "[") return contCommasep(pattern, "]");
    if (type == "{") return contCommasep(proppattern, "}");
  }
  function proppattern(type, value) {
    if (type == "variable" && !cx.stream.match(/^\s*:/, false)) {
      register(value);
      return cont(maybeAssign);
    }
    if (type == "variable") cx.marked = "property";
    if (type == "spread") return cont(pattern);
    if (type == "}") return pass();
    return cont(expect(":"), pattern, maybeAssign);
  }
  function maybeAssign(_type, value) {
    if (value == "=") return cont(expressionNoComma);
  }
  function vardefCont(type) {
    if (type == ",") return cont(vardef);
  }
  function maybeelse(type, value) {
    if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex);
  }
  function forspec(type) {
    if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex);
  }
  function forspec1(type) {
    if (type == "var") return cont(vardef, expect(";"), forspec2);
    if (type == ";") return cont(forspec2);
    if (type == "variable") return cont(formaybeinof);
    return pass(expression, expect(";"), forspec2);
  }
  function formaybeinof(_type, value) {
    if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
    return cont(maybeoperatorComma, forspec2);
  }
  function forspec2(type, value) {
    if (type == ";") return cont(forspec3);
    if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
    return pass(expression, expect(";"), forspec3);
  }
  function forspec3(type) {
    if (type != ")") cont(expression);
  }
  function functiondef(type, value) {
    if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
    if (type == "variable") {register(value); return cont(functiondef);}
    if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext);
  }
  function funarg(type) {
    if (type == "spread") return cont(funarg);
    return pass(pattern, maybetype, maybedefault);
  }
  function className(type, value) {
    if (type == "variable") {register(value); return cont(classNameAfter);}
  }
  function classNameAfter(type, value) {
    if (value == "extends") return cont(isTS ? typeexpr : expression, classNameAfter);
    if (type == "{") return cont(pushlex("}"), classBody, poplex);
  }
  function classBody(type, value) {
    if (type == "variable" || cx.style == "keyword") {
      if (value == "static") {
        cx.marked = "keyword";
        return cont(classBody);
      }
      cx.marked = "property";
      if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody);
      return cont(functiondef, classBody);
    }
    if (value == "*") {
      cx.marked = "keyword";
      return cont(classBody);
    }
    if (type == ";") return cont(classBody);
    if (type == "}") return cont();
  }
  function classGetterSetter(type) {
    if (type != "variable") return pass();
    cx.marked = "property";
    return cont();
  }
  function afterExport(_type, value) {
    if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }
    if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }
    return pass(statement);
  }
  function afterImport(type) {
    if (type == "string") return cont();
    return pass(importSpec, maybeFrom);
  }
  function importSpec(type, value) {
    if (type == "{") return contCommasep(importSpec, "}");
    if (type == "variable") register(value);
    if (value == "*") cx.marked = "keyword";
    return cont(maybeAs);
  }
  function maybeAs(_type, value) {
    if (value == "as") { cx.marked = "keyword"; return cont(importSpec); }
  }
  function maybeFrom(_type, value) {
    if (value == "from") { cx.marked = "keyword"; return cont(expression); }
  }
  function arrayLiteral(type) {
    if (type == "]") return cont();
    return pass(commasep(expressionNoComma, "]"));
  }

  function isContinuedStatement(state, textAfter) {
    return state.lastType == "operator" || state.lastType == "," ||
      isOperatorChar.test(textAfter.charAt(0)) ||
      /[,.]/.test(textAfter.charAt(0));
  }

  // Interface

  return {
    startState: function(basecolumn) {
      var state = {
        tokenize: tokenBase,
        lastType: "sof",
        cc: [],
        lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
        localVars: parserConfig.localVars,
        context: parserConfig.localVars && {vars: parserConfig.localVars},
        indented: basecolumn || 0
      };
      if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")
        state.globalVars = parserConfig.globalVars;
      return state;
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (!state.lexical.hasOwnProperty("align"))
          state.lexical.align = false;
        state.indented = stream.indentation();
        findFatArrow(stream, state);
      }
      if (state.tokenize != tokenComment && stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      if (type == "comment") return style;
      state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;
      return parseJS(state, style, type, content, stream);
    },

    indent: function(state, textAfter) {
      if (state.tokenize == tokenComment) return CodeMirror.Pass;
      if (state.tokenize != tokenBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;
      // Kludge to prevent 'maybelse' from blocking lexical scope pops
      if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {
        var c = state.cc[i];
        if (c == poplex) lexical = lexical.prev;
        else if (c != maybeelse) break;
      }
      if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev;
      if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")
        lexical = lexical.prev;
      var type = lexical.type, closing = firstChar == type;

      if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0);
      else if (type == "form" && firstChar == "{") return lexical.indented;
      else if (type == "form") return lexical.indented + indentUnit;
      else if (type == "stat")
        return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);
      else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
        return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
      else if (lexical.align) return lexical.column + (closing ? 0 : 1);
      else return lexical.indented + (closing ? 0 : indentUnit);
    },

    electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
    blockCommentStart: jsonMode ? null : "/*",
    blockCommentEnd: jsonMode ? null : "*/",
    lineComment: jsonMode ? null : "//",
    fold: "brace",
    closeBrackets: "()[]{}''\"\"``",

    helperType: jsonMode ? "json" : "javascript",
    jsonldMode: jsonldMode,
    jsonMode: jsonMode,

    expressionAllowed: expressionAllowed,
    skipExpression: function(state) {
      var top = state.cc[state.cc.length - 1]
      if (top == expression || top == expressionNoComma) state.cc.pop()
    }
  };
});

CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/);

CodeMirror.defineMIME("text/javascript", "javascript");
CodeMirror.defineMIME("text/ecmascript", "javascript");
CodeMirror.defineMIME("application/javascript", "javascript");
CodeMirror.defineMIME("application/x-javascript", "javascript");
CodeMirror.defineMIME("application/ecmascript", "javascript");
CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});
CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true});
CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });
CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true });

});
lib/codemirror/mode/javascript/typescript.html000064400000003013147361034410015645 0ustar00<!doctype html>

<title>CodeMirror: TypeScript mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="javascript.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">TypeScript</a>
  </ul>
</div>

<article>
<h2>TypeScript mode</h2>


<div><textarea id="code" name="code">
class Greeter {
	greeting: string;
	constructor (message: string) {
		this.greeting = message;
	}
	greet() {
		return "Hello, " + this.greeting;
	}
}   

var greeter = new Greeter("world");

var button = document.createElement('button')
button.innerText = "Say Hello"
button.onclick = function() {
	alert(greeter.greet())
}

document.body.appendChild(button)

</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/typescript"
      });
    </script>

    <p>This is a specialization of the <a href="index.html">JavaScript mode</a>.</p>
  </article>
lib/codemirror/mode/javascript/index.html000064400000010141147361034410014546 0ustar00<!doctype html>

<title>CodeMirror: JavaScript mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="../../addon/comment/continuecomment.js"></script>
<script src="../../addon/comment/comment.js"></script>
<script src="javascript.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">JavaScript</a>
  </ul>
</div>

<article>
<h2>JavaScript mode</h2>


<div><textarea id="code" name="code">
// Demo code (the actual new parser character stream implementation)

function StringStream(string) {
  this.pos = 0;
  this.string = string;
}

StringStream.prototype = {
  done: function() {return this.pos >= this.string.length;},
  peek: function() {return this.string.charAt(this.pos);},
  next: function() {
    if (this.pos &lt; this.string.length)
      return this.string.charAt(this.pos++);
  },
  eat: function(match) {
    var ch = this.string.charAt(this.pos);
    if (typeof match == "string") var ok = ch == match;
    else var ok = ch &amp;&amp; match.test ? match.test(ch) : match(ch);
    if (ok) {this.pos++; return ch;}
  },
  eatWhile: function(match) {
    var start = this.pos;
    while (this.eat(match));
    if (this.pos > start) return this.string.slice(start, this.pos);
  },
  backUp: function(n) {this.pos -= n;},
  column: function() {return this.pos;},
  eatSpace: function() {
    var start = this.pos;
    while (/\s/.test(this.string.charAt(this.pos))) this.pos++;
    return this.pos - start;
  },
  match: function(pattern, consume, caseInsensitive) {
    if (typeof pattern == "string") {
      function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
      if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
        if (consume !== false) this.pos += str.length;
        return true;
      }
    }
    else {
      var match = this.string.slice(this.pos).match(pattern);
      if (match &amp;&amp; consume !== false) this.pos += match[0].length;
      return match;
    }
  }
};
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        continueComments: "Enter",
        extraKeys: {"Ctrl-Q": "toggleComment"}
      });
    </script>

    <p>
      JavaScript mode supports several configuration options:
      <ul>
        <li><code>json</code> which will set the mode to expect JSON
        data rather than a JavaScript program.</li>
        <li><code>jsonld</code> which will set the mode to expect
        <a href="http://json-ld.org">JSON-LD</a> linked data rather
        than a JavaScript program (<a href="json-ld.html">demo</a>).</li>
        <li><code>typescript</code> which will activate additional
        syntax highlighting and some other things for TypeScript code
        (<a href="typescript.html">demo</a>).</li>
        <li><code>statementIndent</code> which (given a number) will
        determine the amount of indentation to use for statements
        continued on a new line.</li>
        <li><code>wordCharacters</code>, a regexp that indicates which
        characters should be considered part of an identifier.
        Defaults to <code>/[\w$]/</code>, which does not handle
        non-ASCII identifiers. Can be set to something more elaborate
        to improve Unicode support.</li>
      </ul>
    </p>

    <p><strong>MIME types defined:</strong> <code>text/javascript</code>, <code>application/json</code>, <code>application/ld+json</code>, <code>text/typescript</code>, <code>application/typescript</code>.</p>
  </article>
lib/codemirror/mode/javascript/json-ld.html000064400000004146147361034410015015 0ustar00<!doctype html>

<title>CodeMirror: JSON-LD mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="../../addon/comment/continuecomment.js"></script>
<script src="../../addon/comment/comment.js"></script>
<script src="javascript.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id="nav">
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"/></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">JSON-LD</a>
  </ul>
</div>

<article>
<h2>JSON-LD mode</h2>


<div><textarea id="code" name="code">
{
  "@context": {
    "name": "http://schema.org/name",
    "description": "http://schema.org/description",
    "image": {
      "@id": "http://schema.org/image",
      "@type": "@id"
    },
    "geo": "http://schema.org/geo",
    "latitude": {
      "@id": "http://schema.org/latitude",
      "@type": "xsd:float"
    },
    "longitude": {
      "@id": "http://schema.org/longitude",
      "@type": "xsd:float"
    },
    "xsd": "http://www.w3.org/2001/XMLSchema#"
  },
  "name": "The Empire State Building",
  "description": "The Empire State Building is a 102-story landmark in New York City.",
  "image": "http://www.civil.usherbrooke.ca/cours/gci215a/empire-state-building.jpg",
  "geo": {
    "latitude": "40.75",
    "longitude": "73.98"
  }
}
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        matchBrackets: true,
        autoCloseBrackets: true,
        mode: "application/ld+json",
        lineWrapping: true
      });
    </script>
    
    <p>This is a specialization of the <a href="index.html">JavaScript mode</a>.</p>
  </article>
lib/codemirror/mode/tornado/index.html000064400000003413147361034410014052 0ustar00<!doctype html>

<title>CodeMirror: Tornado template mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/overlay.js"></script>
<script src="../xml/xml.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="tornado.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/marijnh/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Tornado</a>
  </ul>
</div>

<article>
<h2>Tornado template mode</h2>
<form><textarea id="code" name="code">
<!doctype html>
<html>
    <head>
        <title>My Tornado web application</title>
    </head>
    <body>
        <h1>
            {{ title }}
        </h1>
        <ul class="my-list">
            {% for item in items %}
                <li>{% item.name %}</li>
            {% empty %}
                <li>You have no items in your list.</li>
            {% end %}
        </ul>
    </body>
</html>
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "tornado",
        indentUnit: 4,
        indentWithTabs: true
      });
    </script>

    <p>Mode for HTML with embedded Tornado template markup.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-tornado</code></p>
  </article>
lib/codemirror/mode/tornado/tornado.js000064400000004700147361034410014061 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"),
        require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../htmlmixed/htmlmixed",
            "../../addon/mode/overlay"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("tornado:inner", function() {
    var keywords = ["and","as","assert","autoescape","block","break","class","comment","context",
                    "continue","datetime","def","del","elif","else","end","escape","except",
                    "exec","extends","false","finally","for","from","global","if","import","in",
                    "include","is","json_encode","lambda","length","linkify","load","module",
                    "none","not","or","pass","print","put","raise","raw","return","self","set",
                    "squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"];
    keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b");

    function tokenBase (stream, state) {
      stream.eatWhile(/[^\{]/);
      var ch = stream.next();
      if (ch == "{") {
        if (ch = stream.eat(/\{|%|#/)) {
          state.tokenize = inTag(ch);
          return "tag";
        }
      }
    }
    function inTag (close) {
      if (close == "{") {
        close = "}";
      }
      return function (stream, state) {
        var ch = stream.next();
        if ((ch == close) && stream.eat("}")) {
          state.tokenize = tokenBase;
          return "tag";
        }
        if (stream.match(keywords)) {
          return "keyword";
        }
        return close == "#" ? "comment" : "string";
      };
    }
    return {
      startState: function () {
        return {tokenize: tokenBase};
      },
      token: function (stream, state) {
        return state.tokenize(stream, state);
      }
    };
  });

  CodeMirror.defineMode("tornado", function(config) {
    var htmlBase = CodeMirror.getMode(config, "text/html");
    var tornadoInner = CodeMirror.getMode(config, "tornado:inner");
    return CodeMirror.overlayMode(htmlBase, tornadoInner);
  });

  CodeMirror.defineMIME("text/x-tornado", "tornado");
});
lib/codemirror/mode/mirc/mirc.js000064400000023542147361034410012636 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMIME("text/mirc", "mirc");
CodeMirror.defineMode("mirc", function() {
  function parseWords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var specials = parseWords("$! $$ $& $? $+ $abook $abs $active $activecid " +
                            "$activewid $address $addtok $agent $agentname $agentstat $agentver " +
                            "$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime " +
                            "$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind " +
                            "$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes " +
                            "$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color " +
                            "$com $comcall $comchan $comerr $compact $compress $comval $cos $count " +
                            "$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight " +
                            "$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress " +
                            "$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll " +
                            "$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error " +
                            "$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir " +
                            "$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve " +
                            "$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt " +
                            "$group $halted $hash $height $hfind $hget $highlight $hnick $hotline " +
                            "$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil " +
                            "$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect " +
                            "$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile " +
                            "$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive " +
                            "$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock " +
                            "$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer " +
                            "$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext " +
                            "$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode " +
                            "$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile " +
                            "$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly " +
                            "$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree " +
                            "$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo " +
                            "$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex " +
                            "$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline " +
                            "$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin " +
                            "$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname " +
                            "$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped " +
                            "$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp " +
                            "$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel " +
                            "$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver " +
                            "$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor");
  var keywords = parseWords("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice " +
                            "away background ban bcopy beep bread break breplace bset btrunc bunset bwrite " +
                            "channel clear clearall cline clipboard close cnick color comclose comopen " +
                            "comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver " +
                            "debug dec describe dialog did didtok disable disconnect dlevel dline dll " +
                            "dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace " +
                            "drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable " +
                            "events exit fclose filter findtext finger firewall flash flist flood flush " +
                            "flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove " +
                            "gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd " +
                            "halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear " +
                            "ialmark identd if ignore iline inc invite iuser join kick linesep links list " +
                            "load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice " +
                            "notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice " +
                            "qme qmsg query queryn quit raw reload remini remote remove rename renwin " +
                            "reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini " +
                            "say scid scon server set showmirc signam sline sockaccept sockclose socklist " +
                            "socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite " +
                            "sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize " +
                            "toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho " +
                            "var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum " +
                            "isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower " +
                            "isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs " +
                            "elseif else goto menu nicklist status title icon size option text edit " +
                            "button check radio box scroll list combo link tab item");
  var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch");
  var isOperatorChar = /[+\-*&%=<>!?^\/\|]/;
  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }
  function tokenBase(stream, state) {
    var beforeParams = state.beforeParams;
    state.beforeParams = false;
    var ch = stream.next();
    if (/[\[\]{}\(\),\.]/.test(ch)) {
      if (ch == "(" && beforeParams) state.inParams = true;
      else if (ch == ")") state.inParams = false;
      return null;
    }
    else if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    else if (ch == "\\") {
      stream.eat("\\");
      stream.eat(/./);
      return "number";
    }
    else if (ch == "/" && stream.eat("*")) {
      return chain(stream, state, tokenComment);
    }
    else if (ch == ";" && stream.match(/ *\( *\(/)) {
      return chain(stream, state, tokenUnparsed);
    }
    else if (ch == ";" && !state.inParams) {
      stream.skipToEnd();
      return "comment";
    }
    else if (ch == '"') {
      stream.eat(/"/);
      return "keyword";
    }
    else if (ch == "$") {
      stream.eatWhile(/[$_a-z0-9A-Z\.:]/);
      if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) {
        return "keyword";
      }
      else {
        state.beforeParams = true;
        return "builtin";
      }
    }
    else if (ch == "%") {
      stream.eatWhile(/[^,^\s^\(^\)]/);
      state.beforeParams = true;
      return "string";
    }
    else if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    else {
      stream.eatWhile(/[\w\$_{}]/);
      var word = stream.current().toLowerCase();
      if (keywords && keywords.propertyIsEnumerable(word))
        return "keyword";
      if (functions && functions.propertyIsEnumerable(word)) {
        state.beforeParams = true;
        return "keyword";
      }
      return null;
    }
  }
  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }
  function tokenUnparsed(stream, state) {
    var maybeEnd = 0, ch;
    while (ch = stream.next()) {
      if (ch == ";" && maybeEnd == 2) {
        state.tokenize = tokenBase;
        break;
      }
      if (ch == ")")
        maybeEnd++;
      else if (ch != " ")
        maybeEnd = 0;
    }
    return "meta";
  }
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        beforeParams: false,
        inParams: false
      };
    },
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    }
  };
});

});
lib/codemirror/mode/mirc/index.html000064400000013260147361034410013337 0ustar00<!doctype html>

<title>CodeMirror: mIRC mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/twilight.css">
<script src="../../lib/codemirror.js"></script>
<script src="mirc.js"></script>
<style>.CodeMirror {border: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">mIRC</a>
  </ul>
</div>

<article>
<h2>mIRC mode</h2>
<form><textarea id="code" name="code">
;AKA Nick Tracker by Ford_Lawnmower irc.GeekShed.net #Script-Help
;*****************************************************************************;
;**Start Setup
;Change JoinDisplay, below, for On Join AKA Display. On = 1 - Off = 0
alias -l JoinDisplay { return 1 }
;Change MaxNicks, below, to the number of nicknames you want to store for each hostmask. I wouldn't go over 400 with this ;/
alias -l MaxNicks { return 20 }
;Change AKALogo, below, To the text you want displayed before each AKA result.
alias -l AKALogo { return 06 05A06K07A 06 }
;**End Setup
;*****************************************************************************;
On *:Join:#: {
  if ($nick == $me) { .timer 1 1 ialupdateCheck $chan }
  NickNamesAdd $nick $+($network,$wildsite)
  if ($JoinDisplay) { .timerNickNames $+ $nick 1 2 NickNames.display $nick $chan $network $wildsite }
}
on *:Nick: { NickNamesAdd $newnick $+($network,$wildsite) $nick }
alias -l NickNames.display {
  if ($gettok($hget(NickNames,$+($3,$4)),0,126) > 1) {
    echo -g $2 $AKALogo $+(09,$1) $AKALogo 07 $mid($replace($hget(NickNames,$+($3,$4)),$chr(126),$chr(44)),2,-1)
  }
}
alias -l NickNamesAdd {
  if ($hget(NickNames,$2)) {
    if (!$regex($hget(NickNames,$2),/~\Q $+ $replacecs($1,\E,\E\\E\Q) $+ \E~/i)) {
      if ($gettok($hget(NickNames,$2),0,126) <= $MaxNicks) {
        hadd NickNames $2 $+($hget(NickNames,$2),$1,~)
      }
      else {
        hadd NickNames $2 $+($mid($hget(NickNames,$2),$pos($hget(NickNames,$2),~,2)),$1,~)
      }
    }
  }
  else {
    hadd -m NickNames $2 $+(~,$1,~,$iif($3,$+($3,~)))
  }
}
alias -l Fix.All.MindUser {
  var %Fix.Count = $hfind(NickNames,/[^~]+[0-9]{4}~/,0,r).data
  while (%Fix.Count) {
    if ($Fix.MindUser($hget(NickNames,$hfind(NickNames,/[^~]+[0-9]{4}~/,%Fix.Count,r).data))) {
      echo -ag Record %Fix.Count - $v1 - Was Cleaned
      hadd NickNames $hfind(NickNames,/[^~]+[0-9]{4}~/,%Fix.Count,r).data $v1
    }
    dec %Fix.Count
  }
}
alias -l Fix.MindUser { return $regsubex($1,/[^~]+[0-9]{4}~/g,$null) }
menu nicklist,query {
  -
  .AKA
  ..Check $$1: {
    if ($gettok($hget(NickNames,$+($network,$address($1,2))),0,126) > 1) {
      NickNames.display $1 $active $network $address($1,2)
    }
    else { echo -ag $AKALogo $+(09,$1) 07has not been known by any other nicknames while I have been watching. }
  }
  ..Cleanup $$1:hadd NickNames $+($network,$address($1,2)) $fix.minduser($hget(NickNames,$+($network,$address($1,2))))
  ..Clear $$1:hadd NickNames $+($network,$address($1,2)) $+(~,$1,~)
  ..AKA Search Dialog:dialog $iif($dialog(AKA_Search),-v,-m) AKA_Search AKA_Search
  -
}
menu status,channel {
  -
  .AKA
  ..AKA Search Dialog:dialog $iif($dialog(AKA_Search),-v,-m) AKA_Search AKA_Search
  ..Clean All Records:Fix.All.Minduser
  -
}
dialog AKA_Search {
  title "AKA Search Engine"
  size -1 -1 206 221
  option dbu
  edit "", 1, 8 5 149 10, autohs
  button "Search", 2, 163 4 32 12
  radio "Search HostMask", 4, 61 22 55 10
  radio "Search Nicknames", 5, 123 22 56 10
  list 6, 8 38 190 169, sort extsel vsbar
  button "Check Selected", 7, 67 206 40 12
  button "Close", 8, 160 206 38 12, cancel
  box "Search Type", 3, 11 17 183 18
  button "Copy to Clipboard", 9, 111 206 46 12
}
On *:Dialog:Aka_Search:init:*: { did -c $dname 5 }
On *:Dialog:Aka_Search:Sclick:2,7,9: {
  if ($did == 2) && ($did($dname,1)) {
    did -r $dname 6
    var %search $+(*,$v1,*), %type $iif($did($dname,5).state,data,item), %matches = $hfind(NickNames,%search,0,w). [ $+ [ %type ] ]
    while (%matches) {
      did -a $dname 6 $hfind(NickNames,%search,%matches,w). [ $+ [ %type ] ]
      dec %matches
    }
    did -c $dname 6 1
  }
  elseif ($did == 7) && ($did($dname,6).seltext) { echo -ga $AKALogo 07 $mid($replace($hget(NickNames,$v1),$chr(126),$chr(44)),2,-1) }
  elseif ($did == 9) && ($did($dname,6).seltext) { clipboard $mid($v1,$pos($v1,*,1)) }
}
On *:Start:{
  if (!$hget(NickNames)) { hmake NickNames 10 }
  if ($isfile(NickNames.hsh)) { hload  NickNames NickNames.hsh }
}
On *:Exit: { if ($hget(NickNames)) { hsave NickNames NickNames.hsh } }
On *:Disconnect: { if ($hget(NickNames)) { hsave NickNames NickNames.hsh } }
On *:Unload: { hfree NickNames }
alias -l ialupdateCheck {
  inc -z $+(%,ialupdateCheck,$network) $calc($nick($1,0) / 4)
  ;If your ial is already being updated on join .who $1 out.
  ;If you are using /names to update ial you will still need this line.
  .who $1
}
Raw 352:*: {
  if (jQuery($+(%,ialupdateCheck,$network),2)) haltdef
  NickNamesAdd $6 $+($network,$address($6,2))
}
Raw 315:*: {
  if (jQuery($+(%,ialupdateCheck,$network),2)) haltdef
}

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        theme: "twilight",
        lineNumbers: true,
        matchBrackets: true,
        indentUnit: 4,
        mode: "text/mirc"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/mirc</code>.</p>

  </article>
lib/codemirror/mode/troff/troff.js000064400000004530147361034410013206 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object")
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod);
  else
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('troff', function() {

  var words = {};

  function tokenBase(stream) {
    if (stream.eatSpace()) return null;

    var sol = stream.sol();
    var ch = stream.next();

    if (ch === '\\') {
      if (stream.match('fB') || stream.match('fR') || stream.match('fI') ||
          stream.match('u')  || stream.match('d')  ||
          stream.match('%')  || stream.match('&')) {
        return 'string';
      }
      if (stream.match('m[')) {
        stream.skipTo(']');
        stream.next();
        return 'string';
      }
      if (stream.match('s+') || stream.match('s-')) {
        stream.eatWhile(/[\d-]/);
        return 'string';
      }
      if (stream.match('\(') || stream.match('*\(')) {
        stream.eatWhile(/[\w-]/);
        return 'string';
      }
      return 'string';
    }
    if (sol && (ch === '.' || ch === '\'')) {
      if (stream.eat('\\') && stream.eat('\"')) {
        stream.skipToEnd();
        return 'comment';
      }
    }
    if (sol && ch === '.') {
      if (stream.match('B ') || stream.match('I ') || stream.match('R ')) {
        return 'attribute';
      }
      if (stream.match('TH ') || stream.match('SH ') || stream.match('SS ') || stream.match('HP ')) {
        stream.skipToEnd();
        return 'quote';
      }
      if ((stream.match(/[A-Z]/) && stream.match(/[A-Z]/)) || (stream.match(/[a-z]/) && stream.match(/[a-z]/))) {
        return 'attribute';
      }
    }
    stream.eatWhile(/[\w-]/);
    var cur = stream.current();
    return words.hasOwnProperty(cur) ? words[cur] : null;
  }

  function tokenize(stream, state) {
    return (state.tokens[0] || tokenBase) (stream, state);
  };

  return {
    startState: function() {return {tokens:[]};},
    token: function(stream, state) {
      return tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME('text/troff', 'troff');
CodeMirror.defineMIME('text/x-troff', 'troff');
CodeMirror.defineMIME('application/x-troff', 'troff');

});
lib/codemirror/mode/troff/index.html000064400000010561147361034410013526 0ustar00<!doctype html>

<title>CodeMirror: troff mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel=stylesheet href=../../lib/codemirror.css>
<script src=../../lib/codemirror.js></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src=troff.js></script>
<style type=text/css>
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">troff</a>
  </ul>
</div>

<article>
<h2>troff</h2>


<textarea id=code>
'\" t
.\"     Title: mkvextract
.TH "MKVEXTRACT" "1" "2015\-02\-28" "MKVToolNix 7\&.7\&.0" "User Commands"
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.SH "NAME"
mkvextract \- extract tracks from Matroska(TM) files into other files
.SH "SYNOPSIS"
.HP \w'\fBmkvextract\fR\ 'u
\fBmkvextract\fR {mode} {source\-filename} [options] [extraction\-spec]
.SH "DESCRIPTION"
.PP
.B mkvextract
extracts specific parts from a
.I Matroska(TM)
file to other useful formats\&. The first argument,
\fBmode\fR, tells
\fBmkvextract\fR(1)
what to extract\&. Currently supported is the extraction of
tracks,
tags,
attachments,
chapters,
CUE sheets,
timecodes
and
cues\&. The second argument is the name of the source file\&. It must be a
Matroska(TM)
file\&. All following arguments are options and extraction specifications; both of which depend on the selected mode\&.
.SS "Common options"
.PP
The following options are available in all modes and only described once in this section\&.
.PP
\fB\-f\fR, \fB\-\-parse\-fully\fR
.RS 4
Sets the parse mode to \*(Aqfull\*(Aq\&. The default mode does not parse the whole file but uses the meta seek elements for locating the required elements of a source file\&. In 99% of all cases this is enough\&. But for files that do not contain meta seek elements or which are damaged the user might have to use this mode\&. A full scan of a file can take a couple of minutes while a fast scan only takes seconds\&.
.RE
.PP
\fB\-\-command\-line\-charset\fR \fIcharacter\-set\fR
.RS 4
Sets the character set to convert strings given on the command line from\&. It defaults to the character set given by system\*(Aqs current locale\&.
.RE
.PP
\fB\-\-output\-charset\fR \fIcharacter\-set\fR
.RS 4
Sets the character set to which strings are converted that are to be output\&. It defaults to the character set given by system\*(Aqs current locale\&.
.RE
.PP
\fB\-r\fR, \fB\-\-redirect\-output\fR \fIfile\-name\fR
.RS 4
Writes all messages to the file
\fIfile\-name\fR
instead of to the console\&. While this can be done easily with output redirection there are cases in which this option is needed: when the terminal reinterprets the output before writing it to a file\&. The character set set with
\fB\-\-output\-charset\fR
is honored\&.
.RE
.PP
\fB\-\-ui\-language\fR \fIcode\fR
.RS 4
Forces the translations for the language
\fIcode\fR
to be used (e\&.g\&. \*(Aqde_DE\*(Aq for the German translations)\&. It is preferable to use the environment variables
\fILANG\fR,
\fILC_MESSAGES\fR
and
\fILC_ALL\fR
though\&. Entering \*(Aqlist\*(Aq as the
\fIcode\fR
will cause
\fBmkvextract\fR(1)
to output a list of available translations\&.

.\" [...]

.SH "SEE ALSO"
.PP
\fBmkvmerge\fR(1),
\fBmkvinfo\fR(1),
\fBmkvpropedit\fR(1),
\fBmmg\fR(1)
.SH "WWW"
.PP
The latest version can always be found at
\m[blue]\fBthe MKVToolNix homepage\fR\m[]\&\s-2\u[1]\d\s+2\&.
.SH "AUTHOR"
.PP
\(co \fBMoritz Bunkus\fR <\&moritz@bunkus\&.org\&>
.RS 4
Developer
.RE
.SH "NOTES"
.IP " 1." 4
the MKVToolNix homepage
.RS 4
\%https://www.bunkus.org/videotools/mkvtoolnix/
.RE
</textarea>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById('code'), {
    mode: 'troff',
    lineNumbers: true,
    matchBrackets: false
  });
</script>

<p><strong>MIME types defined:</strong> <code>troff</code>.</p>
</article>
lib/codemirror/mode/spreadsheet/index.html000064400000002560147361034410014715 0ustar00<!doctype html>

<title>CodeMirror: Spreadsheet mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="spreadsheet.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Spreadsheet</a>
  </ul>
</div>

<article>
  <h2>Spreadsheet mode</h2>
  <form><textarea id="code" name="code">=IF(A1:B2, TRUE, FALSE) / 100</textarea></form>

  <script>
    var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
      lineNumbers: true,
      matchBrackets: true,
      extraKeys: {"Tab":  "indentAuto"}
    });
  </script>

  <p><strong>MIME types defined:</strong> <code>text/x-spreadsheet</code>.</p>
  
  <h3>The Spreadsheet Mode</h3>
  <p> Created by <a href="https://github.com/robertleeplummerjr">Robert Plummer</a></p>
</article>
lib/codemirror/mode/spreadsheet/spreadsheet.js000064400000006103147361034410015562 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("spreadsheet", function () {
    return {
      startState: function () {
        return {
          stringType: null,
          stack: []
        };
      },
      token: function (stream, state) {
        if (!stream) return;

        //check for state changes
        if (state.stack.length === 0) {
          //strings
          if ((stream.peek() == '"') || (stream.peek() == "'")) {
            state.stringType = stream.peek();
            stream.next(); // Skip quote
            state.stack.unshift("string");
          }
        }

        //return state
        //stack has
        switch (state.stack[0]) {
        case "string":
          while (state.stack[0] === "string" && !stream.eol()) {
            if (stream.peek() === state.stringType) {
              stream.next(); // Skip quote
              state.stack.shift(); // Clear flag
            } else if (stream.peek() === "\\") {
              stream.next();
              stream.next();
            } else {
              stream.match(/^.[^\\\"\']*/);
            }
          }
          return "string";

        case "characterClass":
          while (state.stack[0] === "characterClass" && !stream.eol()) {
            if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./)))
              state.stack.shift();
          }
          return "operator";
        }

        var peek = stream.peek();

        //no stack
        switch (peek) {
        case "[":
          stream.next();
          state.stack.unshift("characterClass");
          return "bracket";
        case ":":
          stream.next();
          return "operator";
        case "\\":
          if (stream.match(/\\[a-z]+/)) return "string-2";
          else {
            stream.next();
            return "atom";
          }
        case ".":
        case ",":
        case ";":
        case "*":
        case "-":
        case "+":
        case "^":
        case "<":
        case "/":
        case "=":
          stream.next();
          return "atom";
        case "$":
          stream.next();
          return "builtin";
        }

        if (stream.match(/\d+/)) {
          if (stream.match(/^\w+/)) return "error";
          return "number";
        } else if (stream.match(/^[a-zA-Z_]\w*/)) {
          if (stream.match(/(?=[\(.])/, false)) return "keyword";
          return "variable-2";
        } else if (["[", "]", "(", ")", "{", "}"].indexOf(peek) != -1) {
          stream.next();
          return "bracket";
        } else if (!stream.eatSpace()) {
          stream.next();
        }
        return null;
      }
    };
  });

  CodeMirror.defineMIME("text/x-spreadsheet", "spreadsheet");
});
lib/codemirror/mode/pig/pig.js000064400000013262147361034410012306 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*
 *      Pig Latin Mode for CodeMirror 2
 *      @author Prasanth Jayachandran
 *      @link   https://github.com/prasanthj/pig-codemirror-2
 *  This implementation is adapted from PL/SQL mode in CodeMirror 2.
 */
(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pig", function(_config, parserConfig) {
  var keywords = parserConfig.keywords,
  builtins = parserConfig.builtins,
  types = parserConfig.types,
  multiLineStrings = parserConfig.multiLineStrings;

  var isOperatorChar = /[*+\-%<>=&?:\/!|]/;

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function tokenComment(stream, state) {
    var isEnd = false;
    var ch;
    while(ch = stream.next()) {
      if(ch == "/" && isEnd) {
        state.tokenize = tokenBase;
        break;
      }
      isEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true; break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "error";
    };
  }


  function tokenBase(stream, state) {
    var ch = stream.next();

    // is a start of string?
    if (ch == '"' || ch == "'")
      return chain(stream, state, tokenString(ch));
    // is it one of the special chars
    else if(/[\[\]{}\(\),;\.]/.test(ch))
      return null;
    // is it a number?
    else if(/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    // multi line comment or operator
    else if (ch == "/") {
      if (stream.eat("*")) {
        return chain(stream, state, tokenComment);
      }
      else {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
    }
    // single line comment or operator
    else if (ch=="-") {
      if(stream.eat("-")){
        stream.skipToEnd();
        return "comment";
      }
      else {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
    }
    // is it an operator
    else if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    else {
      // get the while word
      stream.eatWhile(/[\w\$_]/);
      // is it one of the listed keywords?
      if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) {
        //keywords can be used as variables like flatten(group), group.$0 etc..
        if (!stream.eat(")") && !stream.eat("."))
          return "keyword";
      }
      // is it one of the builtin functions?
      if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase()))
        return "variable-2";
      // is it one of the listed types?
      if (types && types.propertyIsEnumerable(stream.current().toUpperCase()))
        return "variable-3";
      // default is a 'variable'
      return "variable";
    }
  }

  // Interface
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      if(stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      return style;
    }
  };
});

(function() {
  function keywords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  // builtin funcs taken from trunk revision 1303237
  var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL "
    + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS "
    + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG "
    + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN "
    + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER "
    + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS "
    + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA  "
    + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE "
    + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG "
    + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER ";

  // taken from QueryLexer.g
  var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP "
    + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL "
    + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE "
    + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE "
    + "NEQ MATCHES TRUE FALSE DUMP";

  // data types
  var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP ";

  CodeMirror.defineMIME("text/x-pig", {
    name: "pig",
    builtins: keywords(pBuiltins),
    keywords: keywords(pKeywords),
    types: keywords(pTypes)
  });

  CodeMirror.registerHelper("hintWords", "pig", (pBuiltins + pTypes + pKeywords).split(" "));
}());

});
lib/codemirror/mode/pig/index.html000064400000002703147361034410013164 0ustar00<!doctype html>
<title>CodeMirror: Pig Latin mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="pig.js"></script>
<style>.CodeMirror {border: 2px inset #dee;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Pig Latin</a>
  </ul>
</div>

<article>
<h2>Pig Latin mode</h2>
<form><textarea id="code" name="code">
-- Apache Pig (Pig Latin Language) Demo
/* 
This is a multiline comment.
*/
a = LOAD "\path\to\input" USING PigStorage('\t') AS (x:long, y:chararray, z:bytearray);
b = GROUP a BY (x,y,3+4);
c = FOREACH b GENERATE flatten(group) as (x,y), SUM(group.$2) as z;
STORE c INTO "\path\to\output";

--
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        indentUnit: 4,
        mode: "text/x-pig"
      });
    </script>

    <p>
        Simple mode that handles Pig Latin language.
    </p>

    <p><strong>MIME type defined:</strong> <code>text/x-pig</code>
    (PIG code)
</article>
lib/codemirror/mode/webidl/index.html000064400000004173147361034410013656 0ustar00<!doctype html>

<title>CodeMirror: Web IDL mode</title>
<meta charset="utf-8">
<link rel="stylesheet" href="../../doc/docs.css">
<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="webidl.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>

<div id="nav">
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id="logo" src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class="active" href="#">Web IDL</a>
  </ul>
</div>

<article>
  <h2>Web IDL mode</h2>

  <div>
<textarea id="code" name="code">
[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)]
interface HTMLImageElement : HTMLElement {
           attribute DOMString alt;
           attribute DOMString src;
           attribute DOMString srcset;
           attribute DOMString sizes;
           attribute DOMString? crossOrigin;
           attribute DOMString useMap;
           attribute boolean isMap;
           attribute unsigned long width;
           attribute unsigned long height;
  readonly attribute unsigned long naturalWidth;
  readonly attribute unsigned long naturalHeight;
  readonly attribute boolean complete;
  readonly attribute DOMString currentSrc;

  // also has obsolete members
};

partial interface HTMLImageElement {
  attribute DOMString name;
  attribute DOMString lowsrc;
  attribute DOMString align;
  attribute unsigned long hspace;
  attribute unsigned long vspace;
  attribute DOMString longDesc;

  [TreatNullAs=EmptyString] attribute DOMString border;
};
</textarea>
  </div>

  <script>
    var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
      lineNumbers: true,
      matchBrackets: true
    });
  </script>

  <p><strong>MIME type defined:</strong> <code>text/x-webidl</code>.</p>
</article>
lib/codemirror/mode/webidl/webidl.js000064400000013230147361034410013457 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function wordRegexp(words) {
  return new RegExp("^((" + words.join(")|(") + "))\\b");
};

var builtinArray = [
  "Clamp",
  "Constructor",
  "EnforceRange",
  "Exposed",
  "ImplicitThis",
  "Global", "PrimaryGlobal",
  "LegacyArrayClass",
  "LegacyUnenumerableNamedProperties",
  "LenientThis",
  "NamedConstructor",
  "NewObject",
  "NoInterfaceObject",
  "OverrideBuiltins",
  "PutForwards",
  "Replaceable",
  "SameObject",
  "TreatNonObjectAsNull",
  "TreatNullAs",
    "EmptyString",
  "Unforgeable",
  "Unscopeable"
];
var builtins = wordRegexp(builtinArray);

var typeArray = [
  "unsigned", "short", "long",                  // UnsignedIntegerType
  "unrestricted", "float", "double",            // UnrestrictedFloatType
  "boolean", "byte", "octet",                   // Rest of PrimitiveType
  "Promise",                                    // PromiseType
  "ArrayBuffer", "DataView", "Int8Array", "Int16Array", "Int32Array",
  "Uint8Array", "Uint16Array", "Uint32Array", "Uint8ClampedArray",
  "Float32Array", "Float64Array",               // BufferRelatedType
  "ByteString", "DOMString", "USVString", "sequence", "object", "RegExp",
  "Error", "DOMException", "FrozenArray",       // Rest of NonAnyType
  "any",                                        // Rest of SingleType
  "void"                                        // Rest of ReturnType
];
var types = wordRegexp(typeArray);

var keywordArray = [
  "attribute", "callback", "const", "deleter", "dictionary", "enum", "getter",
  "implements", "inherit", "interface", "iterable", "legacycaller", "maplike",
  "partial", "required", "serializer", "setlike", "setter", "static",
  "stringifier", "typedef",                     // ArgumentNameKeyword except
                                                // "unrestricted"
  "optional", "readonly", "or"
];
var keywords = wordRegexp(keywordArray);

var atomArray = [
  "true", "false",                              // BooleanLiteral
  "Infinity", "NaN",                            // FloatLiteral
  "null"                                        // Rest of ConstValue
];
var atoms = wordRegexp(atomArray);

CodeMirror.registerHelper("hintWords", "webidl",
    builtinArray.concat(typeArray).concat(keywordArray).concat(atomArray));

var startDefArray = ["callback", "dictionary", "enum", "interface"];
var startDefs = wordRegexp(startDefArray);

var endDefArray = ["typedef"];
var endDefs = wordRegexp(endDefArray);

var singleOperators = /^[:<=>?]/;
var integers = /^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/;
var floats = /^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/;
var identifiers = /^_?[A-Za-z][0-9A-Z_a-z-]*/;
var identifiersEnd = /^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/;
var strings = /^"[^"]*"/;
var multilineComments = /^\/\*.*?\*\//;
var multilineCommentsStart = /^\/\*.*/;
var multilineCommentsEnd = /^.*?\*\//;

function readToken(stream, state) {
  // whitespace
  if (stream.eatSpace()) return null;

  // comment
  if (state.inComment) {
    if (stream.match(multilineCommentsEnd)) {
      state.inComment = false;
      return "comment";
    }
    stream.skipToEnd();
    return "comment";
  }
  if (stream.match("//")) {
    stream.skipToEnd();
    return "comment";
  }
  if (stream.match(multilineComments)) return "comment";
  if (stream.match(multilineCommentsStart)) {
    state.inComment = true;
    return "comment";
  }

  // integer and float
  if (stream.match(/^-?[0-9\.]/, false)) {
    if (stream.match(integers) || stream.match(floats)) return "number";
  }

  // string
  if (stream.match(strings)) return "string";

  // identifier
  if (state.startDef && stream.match(identifiers)) return "def";

  if (state.endDef && stream.match(identifiersEnd)) {
    state.endDef = false;
    return "def";
  }

  if (stream.match(keywords)) return "keyword";

  if (stream.match(types)) {
    var lastToken = state.lastToken;
    var nextToken = (stream.match(/^\s*(.+?)\b/, false) || [])[1];

    if (lastToken === ":" || lastToken === "implements" ||
        nextToken === "implements" || nextToken === "=") {
      // Used as identifier
      return "builtin";
    } else {
      // Used as type
      return "variable-3";
    }
  }

  if (stream.match(builtins)) return "builtin";
  if (stream.match(atoms)) return "atom";
  if (stream.match(identifiers)) return "variable";

  // other
  if (stream.match(singleOperators)) return "operator";

  // unrecognized
  stream.next();
  return null;
};

CodeMirror.defineMode("webidl", function() {
  return {
    startState: function() {
      return {
        // Is in multiline comment
        inComment: false,
        // Last non-whitespace, matched token
        lastToken: "",
        // Next token is a definition
        startDef: false,
        // Last token of the statement is a definition
        endDef: false
      };
    },
    token: function(stream, state) {
      var style = readToken(stream, state);

      if (style) {
        var cur = stream.current();
        state.lastToken = cur;
        if (style === "keyword") {
          state.startDef = startDefs.test(cur);
          state.endDef = state.endDef || endDefs.test(cur);
        } else {
          state.startDef = false;
        }
      }

      return style;
    }
  };
});

CodeMirror.defineMIME("text/x-webidl", "webidl");
});
lib/codemirror/mode/ruby/test.js000064400000000726147361034410012711 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "ruby");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("divide_equal_operator",
     "[variable bar] [operator /=] [variable foo]");

  MT("divide_equal_operator_no_spacing",
     "[variable foo][operator /=][number 42]");

})();
lib/codemirror/mode/ruby/ruby.js000064400000024331147361034410012711 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("ruby", function(config) {
  function wordObj(words) {
    var o = {};
    for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
    return o;
  }
  var keywords = wordObj([
    "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else",
    "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or",
    "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless",
    "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc",
    "caller", "lambda", "proc", "public", "protected", "private", "require", "load",
    "require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__"
  ]);
  var indentWords = wordObj(["def", "class", "case", "for", "while", "until", "module", "then",
                             "catch", "loop", "proc", "begin"]);
  var dedentWords = wordObj(["end", "until"]);
  var matching = {"[": "]", "{": "}", "(": ")"};
  var curPunc;

  function chain(newtok, stream, state) {
    state.tokenize.push(newtok);
    return newtok(stream, state);
  }

  function tokenBase(stream, state) {
    if (stream.sol() && stream.match("=begin") && stream.eol()) {
      state.tokenize.push(readBlockComment);
      return "comment";
    }
    if (stream.eatSpace()) return null;
    var ch = stream.next(), m;
    if (ch == "`" || ch == "'" || ch == '"') {
      return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state);
    } else if (ch == "/") {
      var currentIndex = stream.current().length;
      if (stream.skipTo("/")) {
        var search_till = stream.current().length;
        stream.backUp(stream.current().length - currentIndex);
        var balance = 0;  // balance brackets
        while (stream.current().length < search_till) {
          var chchr = stream.next();
          if (chchr == "(") balance += 1;
          else if (chchr == ")") balance -= 1;
          if (balance < 0) break;
        }
        stream.backUp(stream.current().length - currentIndex);
        if (balance == 0)
          return chain(readQuoted(ch, "string-2", true), stream, state);
      }
      return "operator";
    } else if (ch == "%") {
      var style = "string", embed = true;
      if (stream.eat("s")) style = "atom";
      else if (stream.eat(/[WQ]/)) style = "string";
      else if (stream.eat(/[r]/)) style = "string-2";
      else if (stream.eat(/[wxq]/)) { style = "string"; embed = false; }
      var delim = stream.eat(/[^\w\s=]/);
      if (!delim) return "operator";
      if (matching.propertyIsEnumerable(delim)) delim = matching[delim];
      return chain(readQuoted(delim, style, embed, true), stream, state);
    } else if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) {
      return chain(readHereDoc(m[1]), stream, state);
    } else if (ch == "0") {
      if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/);
      else if (stream.eat("b")) stream.eatWhile(/[01]/);
      else stream.eatWhile(/[0-7]/);
      return "number";
    } else if (/\d/.test(ch)) {
      stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/);
      return "number";
    } else if (ch == "?") {
      while (stream.match(/^\\[CM]-/)) {}
      if (stream.eat("\\")) stream.eatWhile(/\w/);
      else stream.next();
      return "string";
    } else if (ch == ":") {
      if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state);
      if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state);

      // :> :>> :< :<< are valid symbols
      if (stream.eat(/[\<\>]/)) {
        stream.eat(/[\<\>]/);
        return "atom";
      }

      // :+ :- :/ :* :| :& :! are valid symbols
      if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) {
        return "atom";
      }

      // Symbols can't start by a digit
      if (stream.eat(/[a-zA-Z$@_\xa1-\uffff]/)) {
        stream.eatWhile(/[\w$\xa1-\uffff]/);
        // Only one ? ! = is allowed and only as the last character
        stream.eat(/[\?\!\=]/);
        return "atom";
      }
      return "operator";
    } else if (ch == "@" && stream.match(/^@?[a-zA-Z_\xa1-\uffff]/)) {
      stream.eat("@");
      stream.eatWhile(/[\w\xa1-\uffff]/);
      return "variable-2";
    } else if (ch == "$") {
      if (stream.eat(/[a-zA-Z_]/)) {
        stream.eatWhile(/[\w]/);
      } else if (stream.eat(/\d/)) {
        stream.eat(/\d/);
      } else {
        stream.next(); // Must be a special global like $: or $!
      }
      return "variable-3";
    } else if (/[a-zA-Z_\xa1-\uffff]/.test(ch)) {
      stream.eatWhile(/[\w\xa1-\uffff]/);
      stream.eat(/[\?\!]/);
      if (stream.eat(":")) return "atom";
      return "ident";
    } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) {
      curPunc = "|";
      return null;
    } else if (/[\(\)\[\]{}\\;]/.test(ch)) {
      curPunc = ch;
      return null;
    } else if (ch == "-" && stream.eat(">")) {
      return "arrow";
    } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) {
      var more = stream.eatWhile(/[=+\-\/*:\.^%<>~|]/);
      if (ch == "." && !more) curPunc = ".";
      return "operator";
    } else {
      return null;
    }
  }

  function tokenBaseUntilBrace(depth) {
    if (!depth) depth = 1;
    return function(stream, state) {
      if (stream.peek() == "}") {
        if (depth == 1) {
          state.tokenize.pop();
          return state.tokenize[state.tokenize.length-1](stream, state);
        } else {
          state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1);
        }
      } else if (stream.peek() == "{") {
        state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1);
      }
      return tokenBase(stream, state);
    };
  }
  function tokenBaseOnce() {
    var alreadyCalled = false;
    return function(stream, state) {
      if (alreadyCalled) {
        state.tokenize.pop();
        return state.tokenize[state.tokenize.length-1](stream, state);
      }
      alreadyCalled = true;
      return tokenBase(stream, state);
    };
  }
  function readQuoted(quote, style, embed, unescaped) {
    return function(stream, state) {
      var escaped = false, ch;

      if (state.context.type === 'read-quoted-paused') {
        state.context = state.context.prev;
        stream.eat("}");
      }

      while ((ch = stream.next()) != null) {
        if (ch == quote && (unescaped || !escaped)) {
          state.tokenize.pop();
          break;
        }
        if (embed && ch == "#" && !escaped) {
          if (stream.eat("{")) {
            if (quote == "}") {
              state.context = {prev: state.context, type: 'read-quoted-paused'};
            }
            state.tokenize.push(tokenBaseUntilBrace());
            break;
          } else if (/[@\$]/.test(stream.peek())) {
            state.tokenize.push(tokenBaseOnce());
            break;
          }
        }
        escaped = !escaped && ch == "\\";
      }
      return style;
    };
  }
  function readHereDoc(phrase) {
    return function(stream, state) {
      if (stream.match(phrase)) state.tokenize.pop();
      else stream.skipToEnd();
      return "string";
    };
  }
  function readBlockComment(stream, state) {
    if (stream.sol() && stream.match("=end") && stream.eol())
      state.tokenize.pop();
    stream.skipToEnd();
    return "comment";
  }

  return {
    startState: function() {
      return {tokenize: [tokenBase],
              indented: 0,
              context: {type: "top", indented: -config.indentUnit},
              continuedLine: false,
              lastTok: null,
              varList: false};
    },

    token: function(stream, state) {
      curPunc = null;
      if (stream.sol()) state.indented = stream.indentation();
      var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype;
      var thisTok = curPunc;
      if (style == "ident") {
        var word = stream.current();
        style = state.lastTok == "." ? "property"
          : keywords.propertyIsEnumerable(stream.current()) ? "keyword"
          : /^[A-Z]/.test(word) ? "tag"
          : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def"
          : "variable";
        if (style == "keyword") {
          thisTok = word;
          if (indentWords.propertyIsEnumerable(word)) kwtype = "indent";
          else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent";
          else if ((word == "if" || word == "unless") && stream.column() == stream.indentation())
            kwtype = "indent";
          else if (word == "do" && state.context.indented < state.indented)
            kwtype = "indent";
        }
      }
      if (curPunc || (style && style != "comment")) state.lastTok = thisTok;
      if (curPunc == "|") state.varList = !state.varList;

      if (kwtype == "indent" || /[\(\[\{]/.test(curPunc))
        state.context = {prev: state.context, type: curPunc || style, indented: state.indented};
      else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev)
        state.context = state.context.prev;

      if (stream.eol())
        state.continuedLine = (curPunc == "\\" || style == "operator");
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0);
      var ct = state.context;
      var closing = ct.type == matching[firstChar] ||
        ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter);
      return ct.indented + (closing ? 0 : config.indentUnit) +
        (state.continuedLine ? config.indentUnit : 0);
    },

    electricInput: /^\s*(?:end|rescue|\})$/,
    lineComment: "#"
  };
});

CodeMirror.defineMIME("text/x-ruby", "ruby");

});
lib/codemirror/mode/ruby/index.html000064400000013165147361034410013372 0ustar00<!doctype html>

<title>CodeMirror: Ruby mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="ruby.js"></script>
<style>
      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
      .cm-s-default span.cm-arrow { color: red; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Ruby</a>
  </ul>
</div>

<article>
<h2>Ruby mode</h2>
<form><textarea id="code" name="code">
# Code from http://sandbox.mc.edu/~bennet/ruby/code/poly_rb.html
#
# This program evaluates polynomials.  It first asks for the coefficients
# of a polynomial, which must be entered on one line, highest-order first.
# It then requests values of x and will compute the value of the poly for
# each x.  It will repeatly ask for x values, unless you the user enters
# a blank line.  It that case, it will ask for another polynomial.  If the
# user types quit for either input, the program immediately exits.
#

#
# Function to evaluate a polynomial at x.  The polynomial is given
# as a list of coefficients, from the greatest to the least.
def polyval(x, coef)
    sum = 0
    coef = coef.clone           # Don't want to destroy the original
    while true
        sum += coef.shift       # Add and remove the next coef
        break if coef.empty?    # If no more, done entirely.
        sum *= x                # This happens the right number of times.
    end
    return sum
end

#
# Function to read a line containing a list of integers and return
# them as an array of integers.  If the string conversion fails, it
# throws TypeError.  If the input line is the word 'quit', then it
# converts it to an end-of-file exception
def readints(prompt)
    # Read a line
    print prompt
    line = readline.chomp
    raise EOFError.new if line == 'quit' # You can also use a real EOF.
            
    # Go through each item on the line, converting each one and adding it
    # to retval.
    retval = [ ]
    for str in line.split(/\s+/)
        if str =~ /^\-?\d+$/
            retval.push(str.to_i)
        else
            raise TypeError.new
        end
    end

    return retval
end

#
# Take a coeff and an exponent and return the string representation, ignoring
# the sign of the coefficient.
def term_to_str(coef, exp)
    ret = ""

    # Show coeff, unless it's 1 or at the right
    coef = coef.abs
    ret = coef.to_s     unless coef == 1 && exp > 0
    ret += "x" if exp > 0                               # x if exponent not 0
    ret += "^" + exp.to_s if exp > 1                    # ^exponent, if > 1.

    return ret
end

#
# Create a string of the polynomial in sort-of-readable form.
def polystr(p)
    # Get the exponent of first coefficient, plus 1.
    exp = p.length

    # Assign exponents to each term, making pairs of coeff and exponent,
    # Then get rid of the zero terms.
    p = (p.map { |c| exp -= 1; [ c, exp ] }).select { |p| p[0] != 0 }

    # If there's nothing left, it's a zero
    return "0" if p.empty?

    # *** Now p is a non-empty list of [ coef, exponent ] pairs. ***

    # Convert the first term, preceded by a "-" if it's negative.
    result = (if p[0][0] < 0 then "-" else "" end) + term_to_str(*p[0])

    # Convert the rest of the terms, in each case adding the appropriate
    # + or - separating them.  
    for term in p[1...p.length]
        # Add the separator then the rep. of the term.
        result += (if term[0] < 0 then " - " else " + " end) + 
                term_to_str(*term)
    end

    return result
end
        
#
# Run until some kind of endfile.
begin
    # Repeat until an exception or quit gets us out.
    while true
        # Read a poly until it works.  An EOF will except out of the
        # program.
        print "\n"
        begin
            poly = readints("Enter a polynomial coefficients: ")
        rescue TypeError
            print "Try again.\n"
            retry
        end
        break if poly.empty?

        # Read and evaluate x values until the user types a blank line.
        # Again, an EOF will except out of the pgm.
        while true
            # Request an integer.
            print "Enter x value or blank line: "
            x = readline.chomp
            break if x == ''
            raise EOFError.new if x == 'quit'

            # If it looks bad, let's try again.
            if x !~ /^\-?\d+$/
                print "That doesn't look like an integer.  Please try again.\n"
                next
            end

            # Convert to an integer and print the result.
            x = x.to_i
            print "p(x) = ", polystr(poly), "\n"
            print "p(", x, ") = ", polyval(x, poly), "\n"
        end
    end
rescue EOFError
    print "\n=== EOF ===\n"
rescue Interrupt, SignalException
    print "\n=== Interrupted ===\n"
else
    print "--- Bye ---\n"
end
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/x-ruby",
        matchBrackets: true,
        indentUnit: 4
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-ruby</code>.</p>

    <p>Development of the CodeMirror Ruby mode was kindly sponsored
    by <a href="http://ubalo.com/">Ubalo</a>.</p>

  </article>
lib/codemirror/mode/tiki/tiki.css000064400000000667147361034410013031 0ustar00.cm-tw-syntaxerror {
	color: #FFF;
	background-color: #900;
}

.cm-tw-deleted {
	text-decoration: line-through;
}

.cm-tw-header5 {
	font-weight: bold;
}
.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/
	padding-left: 10px;
}

.cm-tw-box {
	border-top-width: 0px !important;
	border-style: solid;
	border-width: 1px;
	border-color: inherit;
}

.cm-tw-underline {
	text-decoration: underline;
}lib/codemirror/mode/tiki/index.html000064400000003321147361034410013342 0ustar00<!doctype html>

<title>CodeMirror: Tiki wiki mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="tiki.css">
<script src="../../lib/codemirror.js"></script>
<script src="tiki.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Tiki wiki</a>
  </ul>
</div>

<article>
<h2>Tiki wiki mode</h2>


<div><textarea id="code" name="code">
Headings
!Header 1
!!Header 2
!!!Header 3
!!!!Header 4
!!!!!Header 5
!!!!!!Header 6

Styling
-=titlebar=-
^^ Box on multi
lines
of content^^
__bold__
''italic''
===underline===
::center::
--Line Through--

Operators
~np~No parse~/np~

Link
[link|desc|nocache]

Wiki
((Wiki))
((Wiki|desc))
((Wiki|desc|timeout))

Table
||row1 col1|row1 col2|row1 col3
row2 col1|row2 col2|row2 col3
row3 col1|row3 col2|row3 col3||

Lists:
*bla
**bla-1
++continue-bla-1
***bla-2
++continue-bla-1
*bla
+continue-bla
#bla
** tra-la-la
+continue-bla
#bla

Plugin (standard):
{PLUGIN(attr="my attr")}
Plugin Body
{PLUGIN}

Plugin (inline):
{plugin attr="my attr"}
</textarea></div>

<script type="text/javascript">
	var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: 'tiki',      
        lineNumbers: true
    });
</script>

</article>
lib/codemirror/mode/tiki/tiki.js000064400000020452147361034410012647 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('tiki', function(config) {
  function inBlock(style, terminator, returnTokenizer) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.match(terminator)) {
          state.tokenize = inText;
          break;
        }
        stream.next();
      }

      if (returnTokenizer) state.tokenize = returnTokenizer;

      return style;
    };
  }

  function inLine(style) {
    return function(stream, state) {
      while(!stream.eol()) {
        stream.next();
      }
      state.tokenize = inText;
      return style;
    };
  }

  function inText(stream, state) {
    function chain(parser) {
      state.tokenize = parser;
      return parser(stream, state);
    }

    var sol = stream.sol();
    var ch = stream.next();

    //non start of line
    switch (ch) { //switch is generally much faster than if, so it is used here
    case "{": //plugin
      stream.eat("/");
      stream.eatSpace();
      stream.eatWhile(/[^\s\u00a0=\"\'\/?(}]/);
      state.tokenize = inPlugin;
      return "tag";
    case "_": //bold
      if (stream.eat("_"))
        return chain(inBlock("strong", "__", inText));
      break;
    case "'": //italics
      if (stream.eat("'"))
        return chain(inBlock("em", "''", inText));
      break;
    case "(":// Wiki Link
      if (stream.eat("("))
        return chain(inBlock("variable-2", "))", inText));
      break;
    case "[":// Weblink
      return chain(inBlock("variable-3", "]", inText));
      break;
    case "|": //table
      if (stream.eat("|"))
        return chain(inBlock("comment", "||"));
      break;
    case "-":
      if (stream.eat("=")) {//titleBar
        return chain(inBlock("header string", "=-", inText));
      } else if (stream.eat("-")) {//deleted
        return chain(inBlock("error tw-deleted", "--", inText));
      }
      break;
    case "=": //underline
      if (stream.match("=="))
        return chain(inBlock("tw-underline", "===", inText));
      break;
    case ":":
      if (stream.eat(":"))
        return chain(inBlock("comment", "::"));
      break;
    case "^": //box
      return chain(inBlock("tw-box", "^"));
      break;
    case "~": //np
      if (stream.match("np~"))
        return chain(inBlock("meta", "~/np~"));
      break;
    }

    //start of line types
    if (sol) {
      switch (ch) {
      case "!": //header at start of line
        if (stream.match('!!!!!')) {
          return chain(inLine("header string"));
        } else if (stream.match('!!!!')) {
          return chain(inLine("header string"));
        } else if (stream.match('!!!')) {
          return chain(inLine("header string"));
        } else if (stream.match('!!')) {
          return chain(inLine("header string"));
        } else {
          return chain(inLine("header string"));
        }
        break;
      case "*": //unordered list line item, or <li /> at start of line
      case "#": //ordered list line item, or <li /> at start of line
      case "+": //ordered list line item, or <li /> at start of line
        return chain(inLine("tw-listitem bracket"));
        break;
      }
    }

    //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki
    return null;
  }

  var indentUnit = config.indentUnit;

  // Return variables for tokenizers
  var pluginName, type;
  function inPlugin(stream, state) {
    var ch = stream.next();
    var peek = stream.peek();

    if (ch == "}") {
      state.tokenize = inText;
      //type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin
      return "tag";
    } else if (ch == "(" || ch == ")") {
      return "bracket";
    } else if (ch == "=") {
      type = "equals";

      if (peek == ">") {
        ch = stream.next();
        peek = stream.peek();
      }

      //here we detect values directly after equal character with no quotes
      if (!/[\'\"]/.test(peek)) {
        state.tokenize = inAttributeNoQuote();
      }
      //end detect values

      return "operator";
    } else if (/[\'\"]/.test(ch)) {
      state.tokenize = inAttribute(ch);
      return state.tokenize(stream, state);
    } else {
      stream.eatWhile(/[^\s\u00a0=\"\'\/?]/);
      return "keyword";
    }
  }

  function inAttribute(quote) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.next() == quote) {
          state.tokenize = inPlugin;
          break;
        }
      }
      return "string";
    };
  }

  function inAttributeNoQuote() {
    return function(stream, state) {
      while (!stream.eol()) {
        var ch = stream.next();
        var peek = stream.peek();
        if (ch == " " || ch == "," || /[ )}]/.test(peek)) {
      state.tokenize = inPlugin;
      break;
    }
  }
  return "string";
};
                     }

var curState, setStyle;
function pass() {
  for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]);
}

function cont() {
  pass.apply(null, arguments);
  return true;
}

function pushContext(pluginName, startOfLine) {
  var noIndent = curState.context && curState.context.noIndent;
  curState.context = {
    prev: curState.context,
    pluginName: pluginName,
    indent: curState.indented,
    startOfLine: startOfLine,
    noIndent: noIndent
  };
}

function popContext() {
  if (curState.context) curState.context = curState.context.prev;
}

function element(type) {
  if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));}
  else if (type == "closePlugin") {
    var err = false;
    if (curState.context) {
      err = curState.context.pluginName != pluginName;
      popContext();
    } else {
      err = true;
    }
    if (err) setStyle = "error";
    return cont(endcloseplugin(err));
  }
  else if (type == "string") {
    if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata");
    if (curState.tokenize == inText) popContext();
    return cont();
  }
  else return cont();
}

function endplugin(startOfLine) {
  return function(type) {
    if (
      type == "selfclosePlugin" ||
        type == "endPlugin"
    )
      return cont();
    if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();}
    return cont();
  };
}

function endcloseplugin(err) {
  return function(type) {
    if (err) setStyle = "error";
    if (type == "endPlugin") return cont();
    return pass();
  };
}

function attributes(type) {
  if (type == "keyword") {setStyle = "attribute"; return cont(attributes);}
  if (type == "equals") return cont(attvalue, attributes);
  return pass();
}
function attvalue(type) {
  if (type == "keyword") {setStyle = "string"; return cont();}
  if (type == "string") return cont(attvaluemaybe);
  return pass();
}
function attvaluemaybe(type) {
  if (type == "string") return cont(attvaluemaybe);
  else return pass();
}
return {
  startState: function() {
    return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null};
  },
  token: function(stream, state) {
    if (stream.sol()) {
      state.startOfLine = true;
      state.indented = stream.indentation();
    }
    if (stream.eatSpace()) return null;

    setStyle = type = pluginName = null;
    var style = state.tokenize(stream, state);
    if ((style || type) && style != "comment") {
      curState = state;
      while (true) {
        var comb = state.cc.pop() || element;
        if (comb(type || style)) break;
      }
    }
    state.startOfLine = false;
    return setStyle || style;
  },
  indent: function(state, textAfter) {
    var context = state.context;
    if (context && context.noIndent) return 0;
    if (context && /^{\//.test(textAfter))
        context = context.prev;
        while (context && !context.startOfLine)
          context = context.prev;
        if (context) return context.indent + indentUnit;
        else return 0;
       },
    electricChars: "/"
  };
});

CodeMirror.defineMIME("text/tiki", "tiki");

});
lib/codemirror/mode/diff/diff.js000064400000002162147361034410012565 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("diff", function() {

  var TOKEN_NAMES = {
    '+': 'positive',
    '-': 'negative',
    '@': 'meta'
  };

  return {
    token: function(stream) {
      var tw_pos = stream.string.search(/[\t ]+?$/);

      if (!stream.sol() || tw_pos === 0) {
        stream.skipToEnd();
        return ("error " + (
          TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, '');
      }

      var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd();

      if (tw_pos === -1) {
        stream.skipToEnd();
      } else {
        stream.pos = tw_pos;
      }

      return token_name;
    }
  };
});

CodeMirror.defineMIME("text/x-diff", "diff");

});
lib/codemirror/mode/diff/index.html000064400000010471147361034410013316 0ustar00<!doctype html>

<title>CodeMirror: Diff mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="diff.js"></script>
<style>
      .CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}
      span.cm-meta {color: #a0b !important;}
      span.cm-error { background-color: black; opacity: 0.4;}
      span.cm-error.cm-string { background-color: red; }
      span.cm-error.cm-tag { background-color: #2b2; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Diff</a>
  </ul>
</div>

<article>
<h2>Diff mode</h2>
<form><textarea id="code" name="code">
diff --git a/index.html b/index.html
index c1d9156..7764744 100644
--- a/index.html
+++ b/index.html
@@ -95,7 +95,8 @@ StringStream.prototype = {
     <script>
       var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
         lineNumbers: true,
-        autoMatchBrackets: true
+        autoMatchBrackets: true,
+      onGutterClick: function(x){console.log(x);}
       });
     </script>
   </body>
diff --git a/lib/codemirror.js b/lib/codemirror.js
index 04646a9..9a39cc7 100644
--- a/lib/codemirror.js
+++ b/lib/codemirror.js
@@ -399,10 +399,16 @@ var CodeMirror = (function() {
     }
 
     function onMouseDown(e) {
-      var start = posFromMouse(e), last = start;    
+      var start = posFromMouse(e), last = start, target = e.target();
       if (!start) return;
       setCursor(start.line, start.ch, false);
       if (e.button() != 1) return;
+      if (target.parentNode == gutter) {    
+        if (options.onGutterClick)
+          options.onGutterClick(indexOf(gutter.childNodes, target) + showingFrom);
+        return;
+      }
+
       if (!focused) onFocus();
 
       e.stop();
@@ -808,7 +814,7 @@ var CodeMirror = (function() {
       for (var i = showingFrom; i < showingTo; ++i) {
         var marker = lines[i].gutterMarker;
         if (marker) html.push('<div class="' + marker.style + '">' + htmlEscape(marker.text) + '</div>');
-        else html.push("<div>" + (options.lineNumbers ? i + 1 : "\u00a0") + "</div>");
+        else html.push("<div>" + (options.lineNumbers ? i + options.firstLineNumber : "\u00a0") + "</div>");
       }
       gutter.style.display = "none"; // TODO test whether this actually helps
       gutter.innerHTML = html.join("");
@@ -1371,10 +1377,8 @@ var CodeMirror = (function() {
         if (option == "parser") setParser(value);
         else if (option === "lineNumbers") setLineNumbers(value);
         else if (option === "gutter") setGutter(value);
-        else if (option === "readOnly") options.readOnly = value;
-        else if (option === "indentUnit") {options.indentUnit = indentUnit = value; setParser(options.parser);}
-        else if (/^(?:enterMode|tabMode|indentWithTabs|readOnly|autoMatchBrackets|undoDepth)$/.test(option)) options[option] = value;
-        else throw new Error("Can't set option " + option);
+        else if (option === "indentUnit") {options.indentUnit = value; setParser(options.parser);}
+        else options[option] = value;
       },
       cursorCoords: cursorCoords,
       undo: operation(undo),
@@ -1402,7 +1406,8 @@ var CodeMirror = (function() {
       replaceRange: operation(replaceRange),
 
       operation: function(f){return operation(f)();},
-      refresh: function(){updateDisplay([{from: 0, to: lines.length}]);}
+      refresh: function(){updateDisplay([{from: 0, to: lines.length}]);},
+      getInputField: function(){return input;}
     };
     return instance;
   }
@@ -1420,6 +1425,7 @@ var CodeMirror = (function() {
     readOnly: false,
     onChange: null,
     onCursorActivity: null,
+    onGutterClick: null,
     autoMatchBrackets: false,
     workTime: 200,
     workDelay: 300,
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-diff</code>.</p>

  </article>
lib/codemirror/mode/sas/sas.js000064400000037351147361034410012331 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE


// SAS mode copyright (c) 2016 Jared Dean, SAS Institute
// Created by Jared Dean

// TODO
// indent and de-indent
// identify macro variables


//Definitions
//  comment -- text withing * ; or /* */
//  keyword -- SAS language variable
//  variable -- macro variables starts with '&' or variable formats
//  variable-2 -- DATA Step, proc, or macro names
//  string -- text within ' ' or " "
//  operator -- numeric operator + / - * ** le eq ge ... and so on
//  builtin -- proc %macro data run mend
//  atom
//  def

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("sas", function () {
    var words = {};
    var isDoubleOperatorSym = {
      eq: 'operator',
      lt: 'operator',
      le: 'operator',
      gt: 'operator',
      ge: 'operator',
      "in": 'operator',
      ne: 'operator',
      or: 'operator'
    };
    var isDoubleOperatorChar = /(<=|>=|!=|<>)/;
    var isSingleOperatorChar = /[=\(:\),{}.*<>+\-\/^\[\]]/;

    // Takes a string of words separated by spaces and adds them as
    // keys with the value of the first argument 'style'
    function define(style, string, context) {
      if (context) {
        var split = string.split(' ');
        for (var i = 0; i < split.length; i++) {
          words[split[i]] = {style: style, state: context};
        }
      }
    }
    //datastep
    define('def', 'stack pgm view source debug nesting nolist', ['inDataStep']);
    define('def', 'if while until for do do; end end; then else cancel', ['inDataStep']);
    define('def', 'label format _n_ _error_', ['inDataStep']);
    define('def', 'ALTER BUFNO BUFSIZE CNTLLEV COMPRESS DLDMGACTION ENCRYPT ENCRYPTKEY EXTENDOBSCOUNTER GENMAX GENNUM INDEX LABEL OBSBUF OUTREP PW PWREQ READ REPEMPTY REPLACE REUSE ROLE SORTEDBY SPILL TOBSNO TYPE WRITE FILECLOSE FIRSTOBS IN OBS POINTOBS WHERE WHEREUP IDXNAME IDXWHERE DROP KEEP RENAME', ['inDataStep']);
    define('def', 'filevar finfo finv fipname fipnamel fipstate first firstobs floor', ['inDataStep']);
    define('def', 'varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vnferr vtype vtypex weekday', ['inDataStep']);
    define('def', 'zipfips zipname zipnamel zipstate', ['inDataStep']);
    define('def', 'put putc putn', ['inDataStep']);
    define('builtin', 'data run', ['inDataStep']);


    //proc
    define('def', 'data', ['inProc']);

    // flow control for macros
    define('def', '%if %end %end; %else %else; %do %do; %then', ['inMacro']);

    //everywhere
    define('builtin', 'proc run; quit; libname filename %macro %mend option options', ['ALL']);

    define('def', 'footnote title libname ods', ['ALL']);
    define('def', '%let %put %global %sysfunc %eval ', ['ALL']);
    // automatic macro variables http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a003167023.htm
    define('variable', '&sysbuffr &syscc &syscharwidth &syscmd &sysdate &sysdate9 &sysday &sysdevic &sysdmg &sysdsn &sysencoding &sysenv &syserr &syserrortext &sysfilrc &syshostname &sysindex &sysinfo &sysjobid &syslast &syslckrc &syslibrc &syslogapplname &sysmacroname &sysmenv &sysmsg &sysncpu &sysodspath &sysparm &syspbuff &sysprocessid &sysprocessname &sysprocname &sysrc &sysscp &sysscpl &sysscpl &syssite &sysstartid &sysstartname &systcpiphostname &systime &sysuserid &sysver &sysvlong &sysvlong4 &syswarningtext', ['ALL']);

    //footnote[1-9]? title[1-9]?

    //options statement
    define('def', 'source2 nosource2 page pageno pagesize', ['ALL']);

    //proc and datastep
    define('def', '_all_ _character_ _cmd_ _freq_ _i_ _infile_ _last_ _msg_ _null_ _numeric_ _temporary_ _type_ abort abs addr adjrsq airy alpha alter altlog altprint and arcos array arsin as atan attrc attrib attrn authserver autoexec awscontrol awsdef awsmenu awsmenumerge awstitle backward band base betainv between blocksize blshift bnot bor brshift bufno bufsize bxor by byerr byline byte calculated call cards cards4 catcache cbufno cdf ceil center cexist change chisq cinv class cleanup close cnonct cntllev coalesce codegen col collate collin column comamid comaux1 comaux2 comdef compbl compound compress config continue convert cos cosh cpuid create cross crosstab css curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datalines datalines4 datejul datepart datetime day dbcslang dbcstype dclose ddm delete delimiter depdb depdbsl depsl depsyd deptab dequote descending descript design= device dflang dhms dif digamma dim dinfo display distinct dkricond dkrocond dlm dnum do dopen doptname doptnum dread drop dropnote dsname dsnferr echo else emaildlg emailid emailpw emailserver emailsys encrypt end endsas engine eof eov erf erfc error errorcheck errors exist exp fappend fclose fcol fdelete feedback fetch fetchobs fexist fget file fileclose fileexist filefmt filename fileref  fmterr fmtsearch fnonct fnote font fontalias  fopen foptname foptnum force formatted formchar formdelim formdlim forward fpoint fpos fput fread frewind frlen from fsep fuzz fwrite gaminv gamma getoption getvarc getvarn go goto group gwindow hbar hbound helpenv helploc hms honorappearance hosthelp hostprint hour hpct html hvar ibessel ibr id if index indexc indexw initcmd initstmt inner input inputc inputn inr insert int intck intnx into intrr invaliddata irr is jbessel join juldate keep kentb kurtosis label lag last lbound leave left length levels lgamma lib  library libref line linesize link list log log10 log2 logpdf logpmf logsdf lostcard lowcase lrecl ls macro macrogen maps mautosource max maxdec maxr mdy mean measures median memtype merge merror min minute missing missover mlogic mod mode model modify month mopen mort mprint mrecall msglevel msymtabmax mvarsize myy n nest netpv new news nmiss no nobatch nobs nocaps nocardimage nocenter nocharcode nocmdmac nocol nocum nodate nodbcs nodetails nodmr nodms nodmsbatch nodup nodupkey noduplicates noechoauto noequals noerrorabend noexitwindows nofullstimer noicon noimplmac noint nolist noloadlist nomiss nomlogic nomprint nomrecall nomsgcase nomstored nomultenvappl nonotes nonumber noobs noovp nopad nopercent noprint noprintinit normal norow norsasuser nosetinit  nosplash nosymbolgen note notes notitle notitles notsorted noverbose noxsync noxwait npv null number numkeys nummousekeys nway obs  on open     order ordinal otherwise out outer outp= output over ovp p(1 5 10 25 50 75 90 95 99) pad pad2  paired parm parmcards path pathdll pathname pdf peek peekc pfkey pmf point poisson poke position printer probbeta probbnml probchi probf probgam probhypr probit probnegb probnorm probsig probt procleave prt ps  pw pwreq qtr quote r ranbin rancau ranexp rangam range ranks rannor ranpoi rantbl rantri ranuni read recfm register regr remote remove rename repeat replace resolve retain return reuse reverse rewind right round rsquare rtf rtrace rtraceloc s s2 samploc sasautos sascontrol sasfrscr sasmsg sasmstore sasscript sasuser saving scan sdf second select selection separated seq serror set setcomm setot sign simple sin sinh siteinfo skewness skip sle sls sortedby sortpgm sortseq sortsize soundex  spedis splashlocation split spool sqrt start std stderr stdin stfips stimer stname stnamel stop stopover subgroup subpopn substr sum sumwgt symbol symbolgen symget symput sysget sysin sysleave sysmsg sysparm sysprint sysprintfont sysprod sysrc system t table tables tan tanh tapeclose tbufsize terminal test then timepart tinv  tnonct to today tol tooldef totper transformout translate trantab tranwrd trigamma trim trimn trunc truncover type unformatted uniform union until upcase update user usericon uss validate value var  weight when where while wincharset window work workinit workterm write wsum xsync xwait yearcutoff yes yyq  min max', ['inDataStep', 'inProc']);
    define('operator', 'and not ', ['inDataStep', 'inProc']);

    // Main function
    function tokenize(stream, state) {
      // Finally advance the stream
      var ch = stream.next();

      // BLOCKCOMMENT
      if (ch === '/' && stream.eat('*')) {
        state.continueComment = true;
        return "comment";
      } else if (state.continueComment === true) { // in comment block
        //comment ends at the beginning of the line
        if (ch === '*' && stream.peek() === '/') {
          stream.next();
          state.continueComment = false;
        } else if (stream.skipTo('*')) { //comment is potentially later in line
          stream.skipTo('*');
          stream.next();
          if (stream.eat('/'))
            state.continueComment = false;
        } else {
          stream.skipToEnd();
        }
        return "comment";
      }

      // DoubleOperator match
      var doubleOperator = ch + stream.peek();

      // Match all line comments.
      var myString = stream.string;
      var myRegexp = /(?:^\s*|[;]\s*)(\*.*?);/ig;
      var match = myRegexp.exec(myString);
      if (match !== null) {
        if (match.index === 0 && (stream.column() !== (match.index + match[0].length - 1))) {
          stream.backUp(stream.column());
          stream.skipTo(';');
          stream.next();
          return 'comment';
        } else if (match.index + 1 < stream.column() && stream.column() < match.index + match[0].length - 1) {
          // the ';' triggers the match so move one past it to start
          // the comment block that is why match.index+1
          stream.backUp(stream.column() - match.index - 1);
          stream.skipTo(';');
          stream.next();
          return 'comment';
        }
      } else if ((ch === '"' || ch === "'") && !state.continueString) {
        state.continueString = ch
        return "string"
      } else if (state.continueString) {
        if (state.continueString == ch) {
          state.continueString = null;
        } else if (stream.skipTo(state.continueString)) {
          // quote found on this line
          stream.next();
          state.continueString = null;
        } else {
          stream.skipToEnd();
        }
        return "string";
      } else if (state.continueString !== null && stream.eol()) {
        stream.skipTo(state.continueString) || stream.skipToEnd();
        return "string";
      } else if (/[\d\.]/.test(ch)) { //find numbers
        if (ch === ".")
          stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/);
        else if (ch === "0")
          stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/);
        else
          stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/);
        return "number";
      } else if (isDoubleOperatorChar.test(ch + stream.peek())) { // TWO SYMBOL TOKENS
        stream.next();
        return "operator";
      } else if (isDoubleOperatorSym.hasOwnProperty(doubleOperator)) {
        stream.next();
        if (stream.peek() === ' ')
          return isDoubleOperatorSym[doubleOperator.toLowerCase()];
      } else if (isSingleOperatorChar.test(ch)) { // SINGLE SYMBOL TOKENS
        return "operator";
      }

      // Matches one whole word -- even if the word is a character
      var word;
      if (stream.match(/[%&;\w]+/, false) != null) {
        word = ch + stream.match(/[%&;\w]+/, true);
        if (/&/.test(word)) return 'variable'
      } else {
        word = ch;
      }
      // the word after DATA PROC or MACRO
      if (state.nextword) {
        stream.match(/[\w]+/);
        // match memname.libname
        if (stream.peek() === '.') stream.skipTo(' ');
        state.nextword = false;
        return 'variable-2';
      }

      word = word.toLowerCase()
      // Are we in a DATA Step?
      if (state.inDataStep) {
        if (word === 'run;' || stream.match(/run\s;/)) {
          state.inDataStep = false;
          return 'builtin';
        }
        // variable formats
        if ((word) && stream.next() === '.') {
          //either a format or libname.memname
          if (/\w/.test(stream.peek())) return 'variable-2';
          else return 'variable';
        }
        // do we have a DATA Step keyword
        if (word && words.hasOwnProperty(word) &&
            (words[word].state.indexOf("inDataStep") !== -1 ||
             words[word].state.indexOf("ALL") !== -1)) {
          //backup to the start of the word
          if (stream.start < stream.pos)
            stream.backUp(stream.pos - stream.start);
          //advance the length of the word and return
          for (var i = 0; i < word.length; ++i) stream.next();
          return words[word].style;
        }
      }
      // Are we in an Proc statement?
      if (state.inProc) {
        if (word === 'run;' || word === 'quit;') {
          state.inProc = false;
          return 'builtin';
        }
        // do we have a proc keyword
        if (word && words.hasOwnProperty(word) &&
            (words[word].state.indexOf("inProc") !== -1 ||
             words[word].state.indexOf("ALL") !== -1)) {
          stream.match(/[\w]+/);
          return words[word].style;
        }
      }
      // Are we in a Macro statement?
      if (state.inMacro) {
        if (word === '%mend') {
          if (stream.peek() === ';') stream.next();
          state.inMacro = false;
          return 'builtin';
        }
        if (word && words.hasOwnProperty(word) &&
            (words[word].state.indexOf("inMacro") !== -1 ||
             words[word].state.indexOf("ALL") !== -1)) {
          stream.match(/[\w]+/);
          return words[word].style;
        }

        return 'atom';
      }
      // Do we have Keywords specific words?
      if (word && words.hasOwnProperty(word)) {
        // Negates the initial next()
        stream.backUp(1);
        // Actually move the stream
        stream.match(/[\w]+/);
        if (word === 'data' && /=/.test(stream.peek()) === false) {
          state.inDataStep = true;
          state.nextword = true;
          return 'builtin';
        }
        if (word === 'proc') {
          state.inProc = true;
          state.nextword = true;
          return 'builtin';
        }
        if (word === '%macro') {
          state.inMacro = true;
          state.nextword = true;
          return 'builtin';
        }
        if (/title[1-9]/.test(word)) return 'def';

        if (word === 'footnote') {
          stream.eat(/[1-9]/);
          return 'def';
        }

        // Returns their value as state in the prior define methods
        if (state.inDataStep === true && words[word].state.indexOf("inDataStep") !== -1)
          return words[word].style;
        if (state.inProc === true && words[word].state.indexOf("inProc") !== -1)
          return words[word].style;
        if (state.inMacro === true && words[word].state.indexOf("inMacro") !== -1)
          return words[word].style;
        if (words[word].state.indexOf("ALL") !== -1)
          return words[word].style;
        return null;
      }
      // Unrecognized syntax
      return null;
    }

    return {
      startState: function () {
        return {
          inDataStep: false,
          inProc: false,
          inMacro: false,
          nextword: false,
          continueString: null,
          continueComment: false
        };
      },
      token: function (stream, state) {
        // Strip the spaces, but regex will account for them either way
        if (stream.eatSpace()) return null;
        // Go through the main process
        return tokenize(stream, state);
      },

      blockCommentStart: "/*",
      blockCommentEnd: "*/"
    };

  });

  CodeMirror.defineMIME("text/x-sas", "sas");
});
lib/codemirror/mode/sas/index.html000064400000003476147361034410013203 0ustar00<!doctype html>

<title>CodeMirror: SAS mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../xml/xml.js"></script>
<script src="sas.js"></script>
<style type="text/css">
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
  .cm-s-default .cm-trailing-space-a:before,
  .cm-s-default .cm-trailing-space-b:before {position: absolute; content: "\00B7"; color: #777;}
  .cm-s-default .cm-trailing-space-new-line:before {position: absolute; content: "\21B5"; color: #777;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">SAS</a>
  </ul>
</div>

<article>
<h2>SAS mode</h2>
<form><textarea id="code" name="code">
libname foo "/tmp/foobar";
%let count=1;

/* Multi line
Comment
*/
data _null_;
    x=ranuni();
    * single comment;
    x2=x**2;
    sx=sqrt(x);
    if x=x2 then put "x must be 1";
    else do;
        put x=;
    end;
run;

/* embedded comment
* comment;
*/

proc glm data=sashelp.class;
    class sex;
    model weight = height sex;
run;

proc sql;
    select count(*)
    from sashelp.class;

    create table foo as
    select * from sashelp.class;

    select *
    from foo;
quit;
</textarea></form>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    mode: 'sas',
    lineNumbers: true
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-sas</code>.</p>

</article>
lib/codemirror/mode/rst/index.html000064400000042551147361034410013222 0ustar00<!doctype html>

<title>CodeMirror: reStructuredText mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/overlay.js"></script>
<script src="rst.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">reStructuredText</a>
  </ul>
</div>

<article>
<h2>reStructuredText mode</h2>
<form><textarea id="code" name="code">
.. This is an excerpt from Sphinx documentation: http://sphinx.pocoo.org/_sources/rest.txt

.. highlightlang:: rest

.. _rst-primer:

reStructuredText Primer
=======================

This section is a brief introduction to reStructuredText (reST) concepts and
syntax, intended to provide authors with enough information to author documents
productively.  Since reST was designed to be a simple, unobtrusive markup
language, this will not take too long.

.. seealso::

   The authoritative `reStructuredText User Documentation
   &lt;http://docutils.sourceforge.net/rst.html&gt;`_.  The "ref" links in this
   document link to the description of the individual constructs in the reST
   reference.


Paragraphs
----------

The paragraph (:duref:`ref &lt;paragraphs&gt;`) is the most basic block in a reST
document.  Paragraphs are simply chunks of text separated by one or more blank
lines.  As in Python, indentation is significant in reST, so all lines of the
same paragraph must be left-aligned to the same level of indentation.


.. _inlinemarkup:

Inline markup
-------------

The standard reST inline markup is quite simple: use

* one asterisk: ``*text*`` for emphasis (italics),
* two asterisks: ``**text**`` for strong emphasis (boldface), and
* backquotes: ````text```` for code samples.

If asterisks or backquotes appear in running text and could be confused with
inline markup delimiters, they have to be escaped with a backslash.

Be aware of some restrictions of this markup:

* it may not be nested,
* content may not start or end with whitespace: ``* text*`` is wrong,
* it must be separated from surrounding text by non-word characters.  Use a
  backslash escaped space to work around that: ``thisis\ *one*\ word``.

These restrictions may be lifted in future versions of the docutils.

reST also allows for custom "interpreted text roles"', which signify that the
enclosed text should be interpreted in a specific way.  Sphinx uses this to
provide semantic markup and cross-referencing of identifiers, as described in
the appropriate section.  The general syntax is ``:rolename:`content```.

Standard reST provides the following roles:

* :durole:`emphasis` -- alternate spelling for ``*emphasis*``
* :durole:`strong` -- alternate spelling for ``**strong**``
* :durole:`literal` -- alternate spelling for ````literal````
* :durole:`subscript` -- subscript text
* :durole:`superscript` -- superscript text
* :durole:`title-reference` -- for titles of books, periodicals, and other
  materials

See :ref:`inline-markup` for roles added by Sphinx.


Lists and Quote-like blocks
---------------------------

List markup (:duref:`ref &lt;bullet-lists&gt;`) is natural: just place an asterisk at
the start of a paragraph and indent properly.  The same goes for numbered lists;
they can also be autonumbered using a ``#`` sign::

   * This is a bulleted list.
   * It has two items, the second
     item uses two lines.

   1. This is a numbered list.
   2. It has two items too.

   #. This is a numbered list.
   #. It has two items too.


Nested lists are possible, but be aware that they must be separated from the
parent list items by blank lines::

   * this is
   * a list

     * with a nested list
     * and some subitems

   * and here the parent list continues

Definition lists (:duref:`ref &lt;definition-lists&gt;`) are created as follows::

   term (up to a line of text)
      Definition of the term, which must be indented

      and can even consist of multiple paragraphs

   next term
      Description.

Note that the term cannot have more than one line of text.

Quoted paragraphs (:duref:`ref &lt;block-quotes&gt;`) are created by just indenting
them more than the surrounding paragraphs.

Line blocks (:duref:`ref &lt;line-blocks&gt;`) are a way of preserving line breaks::

   | These lines are
   | broken exactly like in
   | the source file.

There are also several more special blocks available:

* field lists (:duref:`ref &lt;field-lists&gt;`)
* option lists (:duref:`ref &lt;option-lists&gt;`)
* quoted literal blocks (:duref:`ref &lt;quoted-literal-blocks&gt;`)
* doctest blocks (:duref:`ref &lt;doctest-blocks&gt;`)


Source Code
-----------

Literal code blocks (:duref:`ref &lt;literal-blocks&gt;`) are introduced by ending a
paragraph with the special marker ``::``.  The literal block must be indented
(and, like all paragraphs, separated from the surrounding ones by blank lines)::

   This is a normal text paragraph. The next paragraph is a code sample::

      It is not processed in any way, except
      that the indentation is removed.

      It can span multiple lines.

   This is a normal text paragraph again.

The handling of the ``::`` marker is smart:

* If it occurs as a paragraph of its own, that paragraph is completely left
  out of the document.
* If it is preceded by whitespace, the marker is removed.
* If it is preceded by non-whitespace, the marker is replaced by a single
  colon.

That way, the second sentence in the above example's first paragraph would be
rendered as "The next paragraph is a code sample:".


.. _rst-tables:

Tables
------

Two forms of tables are supported.  For *grid tables* (:duref:`ref
&lt;grid-tables&gt;`), you have to "paint" the cell grid yourself.  They look like
this::

   +------------------------+------------+----------+----------+
   | Header row, column 1   | Header 2   | Header 3 | Header 4 |
   | (header rows optional) |            |          |          |
   +========================+============+==========+==========+
   | body row 1, column 1   | column 2   | column 3 | column 4 |
   +------------------------+------------+----------+----------+
   | body row 2             | ...        | ...      |          |
   +------------------------+------------+----------+----------+

*Simple tables* (:duref:`ref &lt;simple-tables&gt;`) are easier to write, but
limited: they must contain more than one row, and the first column cannot
contain multiple lines.  They look like this::

   =====  =====  =======
   A      B      A and B
   =====  =====  =======
   False  False  False
   True   False  False
   False  True   False
   True   True   True
   =====  =====  =======


Hyperlinks
----------

External links
^^^^^^^^^^^^^^

Use ```Link text &lt;http://example.com/&gt;`_`` for inline web links.  If the link
text should be the web address, you don't need special markup at all, the parser
finds links and mail addresses in ordinary text.

You can also separate the link and the target definition (:duref:`ref
&lt;hyperlink-targets&gt;`), like this::

   This is a paragraph that contains `a link`_.

   .. _a link: http://example.com/


Internal links
^^^^^^^^^^^^^^

Internal linking is done via a special reST role provided by Sphinx, see the
section on specific markup, :ref:`ref-role`.


Sections
--------

Section headers (:duref:`ref &lt;sections&gt;`) are created by underlining (and
optionally overlining) the section title with a punctuation character, at least
as long as the text::

   =================
   This is a heading
   =================

Normally, there are no heading levels assigned to certain characters as the
structure is determined from the succession of headings.  However, for the
Python documentation, this convention is used which you may follow:

* ``#`` with overline, for parts
* ``*`` with overline, for chapters
* ``=``, for sections
* ``-``, for subsections
* ``^``, for subsubsections
* ``"``, for paragraphs

Of course, you are free to use your own marker characters (see the reST
documentation), and use a deeper nesting level, but keep in mind that most
target formats (HTML, LaTeX) have a limited supported nesting depth.


Explicit Markup
---------------

"Explicit markup" (:duref:`ref &lt;explicit-markup-blocks&gt;`) is used in reST for
most constructs that need special handling, such as footnotes,
specially-highlighted paragraphs, comments, and generic directives.

An explicit markup block begins with a line starting with ``..`` followed by
whitespace and is terminated by the next paragraph at the same level of
indentation.  (There needs to be a blank line between explicit markup and normal
paragraphs.  This may all sound a bit complicated, but it is intuitive enough
when you write it.)


.. _directives:

Directives
----------

A directive (:duref:`ref &lt;directives&gt;`) is a generic block of explicit markup.
Besides roles, it is one of the extension mechanisms of reST, and Sphinx makes
heavy use of it.

Docutils supports the following directives:

* Admonitions: :dudir:`attention`, :dudir:`caution`, :dudir:`danger`,
  :dudir:`error`, :dudir:`hint`, :dudir:`important`, :dudir:`note`,
  :dudir:`tip`, :dudir:`warning` and the generic :dudir:`admonition`.
  (Most themes style only "note" and "warning" specially.)

* Images:

  - :dudir:`image` (see also Images_ below)
  - :dudir:`figure` (an image with caption and optional legend)

* Additional body elements:

  - :dudir:`contents` (a local, i.e. for the current file only, table of
    contents)
  - :dudir:`container` (a container with a custom class, useful to generate an
    outer ``&lt;div&gt;`` in HTML)
  - :dudir:`rubric` (a heading without relation to the document sectioning)
  - :dudir:`topic`, :dudir:`sidebar` (special highlighted body elements)
  - :dudir:`parsed-literal` (literal block that supports inline markup)
  - :dudir:`epigraph` (a block quote with optional attribution line)
  - :dudir:`highlights`, :dudir:`pull-quote` (block quotes with their own
    class attribute)
  - :dudir:`compound` (a compound paragraph)

* Special tables:

  - :dudir:`table` (a table with title)
  - :dudir:`csv-table` (a table generated from comma-separated values)
  - :dudir:`list-table` (a table generated from a list of lists)

* Special directives:

  - :dudir:`raw` (include raw target-format markup)
  - :dudir:`include` (include reStructuredText from another file)
    -- in Sphinx, when given an absolute include file path, this directive takes
    it as relative to the source directory
  - :dudir:`class` (assign a class attribute to the next element) [1]_

* HTML specifics:

  - :dudir:`meta` (generation of HTML ``&lt;meta&gt;`` tags)
  - :dudir:`title` (override document title)

* Influencing markup:

  - :dudir:`default-role` (set a new default role)
  - :dudir:`role` (create a new role)

  Since these are only per-file, better use Sphinx' facilities for setting the
  :confval:`default_role`.

Do *not* use the directives :dudir:`sectnum`, :dudir:`header` and
:dudir:`footer`.

Directives added by Sphinx are described in :ref:`sphinxmarkup`.

Basically, a directive consists of a name, arguments, options and content. (Keep
this terminology in mind, it is used in the next chapter describing custom
directives.)  Looking at this example, ::

   .. function:: foo(x)
                 foo(y, z)
      :module: some.module.name

      Return a line of text input from the user.

``function`` is the directive name.  It is given two arguments here, the
remainder of the first line and the second line, as well as one option
``module`` (as you can see, options are given in the lines immediately following
the arguments and indicated by the colons).  Options must be indented to the
same level as the directive content.

The directive content follows after a blank line and is indented relative to the
directive start.


Images
------

reST supports an image directive (:dudir:`ref &lt;image&gt;`), used like so::

   .. image:: gnu.png
      (options)

When used within Sphinx, the file name given (here ``gnu.png``) must either be
relative to the source file, or absolute which means that they are relative to
the top source directory.  For example, the file ``sketch/spam.rst`` could refer
to the image ``images/spam.png`` as ``../images/spam.png`` or
``/images/spam.png``.

Sphinx will automatically copy image files over to a subdirectory of the output
directory on building (e.g. the ``_static`` directory for HTML output.)

Interpretation of image size options (``width`` and ``height``) is as follows:
if the size has no unit or the unit is pixels, the given size will only be
respected for output channels that support pixels (i.e. not in LaTeX output).
Other units (like ``pt`` for points) will be used for HTML and LaTeX output.

Sphinx extends the standard docutils behavior by allowing an asterisk for the
extension::

   .. image:: gnu.*

Sphinx then searches for all images matching the provided pattern and determines
their type.  Each builder then chooses the best image out of these candidates.
For instance, if the file name ``gnu.*`` was given and two files :file:`gnu.pdf`
and :file:`gnu.png` existed in the source tree, the LaTeX builder would choose
the former, while the HTML builder would prefer the latter.

.. versionchanged:: 0.4
   Added the support for file names ending in an asterisk.

.. versionchanged:: 0.6
   Image paths can now be absolute.


Footnotes
---------

For footnotes (:duref:`ref &lt;footnotes&gt;`), use ``[#name]_`` to mark the footnote
location, and add the footnote body at the bottom of the document after a
"Footnotes" rubric heading, like so::

   Lorem ipsum [#f1]_ dolor sit amet ... [#f2]_

   .. rubric:: Footnotes

   .. [#f1] Text of the first footnote.
   .. [#f2] Text of the second footnote.

You can also explicitly number the footnotes (``[1]_``) or use auto-numbered
footnotes without names (``[#]_``).


Citations
---------

Standard reST citations (:duref:`ref &lt;citations&gt;`) are supported, with the
additional feature that they are "global", i.e. all citations can be referenced
from all files.  Use them like so::

   Lorem ipsum [Ref]_ dolor sit amet.

   .. [Ref] Book or article reference, URL or whatever.

Citation usage is similar to footnote usage, but with a label that is not
numeric or begins with ``#``.


Substitutions
-------------

reST supports "substitutions" (:duref:`ref &lt;substitution-definitions&gt;`), which
are pieces of text and/or markup referred to in the text by ``|name|``.  They
are defined like footnotes with explicit markup blocks, like this::

   .. |name| replace:: replacement *text*

or this::

   .. |caution| image:: warning.png
                :alt: Warning!

See the :duref:`reST reference for substitutions &lt;substitution-definitions&gt;`
for details.

If you want to use some substitutions for all documents, put them into
:confval:`rst_prolog` or put them into a separate file and include it into all
documents you want to use them in, using the :rst:dir:`include` directive.  (Be
sure to give the include file a file name extension differing from that of other
source files, to avoid Sphinx finding it as a standalone document.)

Sphinx defines some default substitutions, see :ref:`default-substitutions`.


Comments
--------

Every explicit markup block which isn't a valid markup construct (like the
footnotes above) is regarded as a comment (:duref:`ref &lt;comments&gt;`).  For
example::

   .. This is a comment.

You can indent text after a comment start to form multiline comments::

   ..
      This whole indented block
      is a comment.

      Still in the comment.


Source encoding
---------------

Since the easiest way to include special characters like em dashes or copyright
signs in reST is to directly write them as Unicode characters, one has to
specify an encoding.  Sphinx assumes source files to be encoded in UTF-8 by
default; you can change this with the :confval:`source_encoding` config value.


Gotchas
-------

There are some problems one commonly runs into while authoring reST documents:

* **Separation of inline markup:** As said above, inline markup spans must be
  separated from the surrounding text by non-word characters, you have to use a
  backslash-escaped space to get around that.  See `the reference
  &lt;http://docutils.sf.net/docs/ref/rst/restructuredtext.html#inline-markup&gt;`_
  for the details.

* **No nested inline markup:** Something like ``*see :func:`foo`*`` is not
  possible.


.. rubric:: Footnotes

.. [1] When the default domain contains a :rst:dir:`class` directive, this directive
       will be shadowed.  Therefore, Sphinx re-exports it as :rst:dir:`rst-class`.
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
      });
    </script>
    <p>
        The <code>python</code> mode will be used for highlighting blocks
        containing Python/IPython terminal sessions: blocks starting with
        <code>&gt;&gt;&gt;</code> (for Python) or <code>In [num]:</code> (for
        IPython).

        Further, the <code>stex</code> mode will be used for highlighting
        blocks containing LaTex code.
    </p>

    <p><strong>MIME types defined:</strong> <code>text/x-rst</code>.</p>
  </article>
lib/codemirror/mode/rst/rst.js000064400000042213147361034410012366 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../python/python"), require("../stex/stex"), require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../python/python", "../stex/stex", "../../addon/mode/overlay"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('rst', function (config, options) {

  var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/;
  var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/;
  var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/;

  var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/;
  var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/;
  var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/;

  var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://";
  var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})";
  var rx_uri_path = "(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*";
  var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain + rx_uri_path);

  var overlay = {
    token: function (stream) {

      if (stream.match(rx_strong) && stream.match (/\W+|$/, false))
        return 'strong';
      if (stream.match(rx_emphasis) && stream.match (/\W+|$/, false))
        return 'em';
      if (stream.match(rx_literal) && stream.match (/\W+|$/, false))
        return 'string-2';
      if (stream.match(rx_number))
        return 'number';
      if (stream.match(rx_positive))
        return 'positive';
      if (stream.match(rx_negative))
        return 'negative';
      if (stream.match(rx_uri))
        return 'link';

      while (stream.next() != null) {
        if (stream.match(rx_strong, false)) break;
        if (stream.match(rx_emphasis, false)) break;
        if (stream.match(rx_literal, false)) break;
        if (stream.match(rx_number, false)) break;
        if (stream.match(rx_positive, false)) break;
        if (stream.match(rx_negative, false)) break;
        if (stream.match(rx_uri, false)) break;
      }

      return null;
    }
  };

  var mode = CodeMirror.getMode(
    config, options.backdrop || 'rst-base'
  );

  return CodeMirror.overlayMode(mode, overlay, true); // combine
}, 'python', 'stex');

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

CodeMirror.defineMode('rst-base', function (config) {

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  function format(string) {
    var args = Array.prototype.slice.call(arguments, 1);
    return string.replace(/{(\d+)}/g, function (match, n) {
      return typeof args[n] != 'undefined' ? args[n] : match;
    });
  }

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  var mode_python = CodeMirror.getMode(config, 'python');
  var mode_stex = CodeMirror.getMode(config, 'stex');

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  var SEPA = "\\s+";
  var TAIL = "(?:\\s*|\\W|$)",
  rx_TAIL = new RegExp(format('^{0}', TAIL));

  var NAME =
    "(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)",
  rx_NAME = new RegExp(format('^{0}', NAME));
  var NAME_WWS =
    "(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)";
  var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS);

  var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)";
  var TEXT2 = "(?:[^\\`]+)",
  rx_TEXT2 = new RegExp(format('^{0}', TEXT2));

  var rx_section = new RegExp(
    "^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$");
  var rx_explicit = new RegExp(
    format('^\\.\\.{0}', SEPA));
  var rx_link = new RegExp(
    format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL));
  var rx_directive = new RegExp(
    format('^{0}::{1}', REF_NAME, TAIL));
  var rx_substitution = new RegExp(
    format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL));
  var rx_footnote = new RegExp(
    format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL));
  var rx_citation = new RegExp(
    format('^\\[{0}\\]{1}', REF_NAME, TAIL));

  var rx_substitution_ref = new RegExp(
    format('^\\|{0}\\|', TEXT1));
  var rx_footnote_ref = new RegExp(
    format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME));
  var rx_citation_ref = new RegExp(
    format('^\\[{0}\\]_', REF_NAME));
  var rx_link_ref1 = new RegExp(
    format('^{0}__?', REF_NAME));
  var rx_link_ref2 = new RegExp(
    format('^`{0}`_', TEXT2));

  var rx_role_pre = new RegExp(
    format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL));
  var rx_role_suf = new RegExp(
    format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL));
  var rx_role = new RegExp(
    format('^:{0}:{1}', NAME, TAIL));

  var rx_directive_name = new RegExp(format('^{0}', REF_NAME));
  var rx_directive_tail = new RegExp(format('^::{0}', TAIL));
  var rx_substitution_text = new RegExp(format('^\\|{0}\\|', TEXT1));
  var rx_substitution_sepa = new RegExp(format('^{0}', SEPA));
  var rx_substitution_name = new RegExp(format('^{0}', REF_NAME));
  var rx_substitution_tail = new RegExp(format('^::{0}', TAIL));
  var rx_link_head = new RegExp("^_");
  var rx_link_name = new RegExp(format('^{0}|_', REF_NAME));
  var rx_link_tail = new RegExp(format('^:{0}', TAIL));

  var rx_verbatim = new RegExp('^::\\s*$');
  var rx_examples = new RegExp('^\\s+(?:>>>|In \\[\\d+\\]:)\\s');

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  function to_normal(stream, state) {
    var token = null;

    if (stream.sol() && stream.match(rx_examples, false)) {
      change(state, to_mode, {
        mode: mode_python, local: CodeMirror.startState(mode_python)
      });
    } else if (stream.sol() && stream.match(rx_explicit)) {
      change(state, to_explicit);
      token = 'meta';
    } else if (stream.sol() && stream.match(rx_section)) {
      change(state, to_normal);
      token = 'header';
    } else if (phase(state) == rx_role_pre ||
               stream.match(rx_role_pre, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_role_pre, 1));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 1:
        change(state, to_normal, context(rx_role_pre, 2));
        stream.match(rx_NAME);
        token = 'keyword';

        if (stream.current().match(/^(?:math|latex)/)) {
          state.tmp_stex = true;
        }
        break;
      case 2:
        change(state, to_normal, context(rx_role_pre, 3));
        stream.match(/^:`/);
        token = 'meta';
        break;
      case 3:
        if (state.tmp_stex) {
          state.tmp_stex = undefined; state.tmp = {
            mode: mode_stex, local: CodeMirror.startState(mode_stex)
          };
        }

        if (state.tmp) {
          if (stream.peek() == '`') {
            change(state, to_normal, context(rx_role_pre, 4));
            state.tmp = undefined;
            break;
          }

          token = state.tmp.mode.token(stream, state.tmp.local);
          break;
        }

        change(state, to_normal, context(rx_role_pre, 4));
        stream.match(rx_TEXT2);
        token = 'string';
        break;
      case 4:
        change(state, to_normal, context(rx_role_pre, 5));
        stream.match(/^`/);
        token = 'meta';
        break;
      case 5:
        change(state, to_normal, context(rx_role_pre, 6));
        stream.match(rx_TAIL);
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_role_suf ||
               stream.match(rx_role_suf, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_role_suf, 1));
        stream.match(/^`/);
        token = 'meta';
        break;
      case 1:
        change(state, to_normal, context(rx_role_suf, 2));
        stream.match(rx_TEXT2);
        token = 'string';
        break;
      case 2:
        change(state, to_normal, context(rx_role_suf, 3));
        stream.match(/^`:/);
        token = 'meta';
        break;
      case 3:
        change(state, to_normal, context(rx_role_suf, 4));
        stream.match(rx_NAME);
        token = 'keyword';
        break;
      case 4:
        change(state, to_normal, context(rx_role_suf, 5));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 5:
        change(state, to_normal, context(rx_role_suf, 6));
        stream.match(rx_TAIL);
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_role || stream.match(rx_role, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_role, 1));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 1:
        change(state, to_normal, context(rx_role, 2));
        stream.match(rx_NAME);
        token = 'keyword';
        break;
      case 2:
        change(state, to_normal, context(rx_role, 3));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 3:
        change(state, to_normal, context(rx_role, 4));
        stream.match(rx_TAIL);
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_substitution_ref ||
               stream.match(rx_substitution_ref, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_substitution_ref, 1));
        stream.match(rx_substitution_text);
        token = 'variable-2';
        break;
      case 1:
        change(state, to_normal, context(rx_substitution_ref, 2));
        if (stream.match(/^_?_?/)) token = 'link';
        break;
      default:
        change(state, to_normal);
      }
    } else if (stream.match(rx_footnote_ref)) {
      change(state, to_normal);
      token = 'quote';
    } else if (stream.match(rx_citation_ref)) {
      change(state, to_normal);
      token = 'quote';
    } else if (stream.match(rx_link_ref1)) {
      change(state, to_normal);
      if (!stream.peek() || stream.peek().match(/^\W$/)) {
        token = 'link';
      }
    } else if (phase(state) == rx_link_ref2 ||
               stream.match(rx_link_ref2, false)) {

      switch (stage(state)) {
      case 0:
        if (!stream.peek() || stream.peek().match(/^\W$/)) {
          change(state, to_normal, context(rx_link_ref2, 1));
        } else {
          stream.match(rx_link_ref2);
        }
        break;
      case 1:
        change(state, to_normal, context(rx_link_ref2, 2));
        stream.match(/^`/);
        token = 'link';
        break;
      case 2:
        change(state, to_normal, context(rx_link_ref2, 3));
        stream.match(rx_TEXT2);
        break;
      case 3:
        change(state, to_normal, context(rx_link_ref2, 4));
        stream.match(/^`_/);
        token = 'link';
        break;
      default:
        change(state, to_normal);
      }
    } else if (stream.match(rx_verbatim)) {
      change(state, to_verbatim);
    }

    else {
      if (stream.next()) change(state, to_normal);
    }

    return token;
  }

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  function to_explicit(stream, state) {
    var token = null;

    if (phase(state) == rx_substitution ||
        stream.match(rx_substitution, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_explicit, context(rx_substitution, 1));
        stream.match(rx_substitution_text);
        token = 'variable-2';
        break;
      case 1:
        change(state, to_explicit, context(rx_substitution, 2));
        stream.match(rx_substitution_sepa);
        break;
      case 2:
        change(state, to_explicit, context(rx_substitution, 3));
        stream.match(rx_substitution_name);
        token = 'keyword';
        break;
      case 3:
        change(state, to_explicit, context(rx_substitution, 4));
        stream.match(rx_substitution_tail);
        token = 'meta';
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_directive ||
               stream.match(rx_directive, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_explicit, context(rx_directive, 1));
        stream.match(rx_directive_name);
        token = 'keyword';

        if (stream.current().match(/^(?:math|latex)/))
          state.tmp_stex = true;
        else if (stream.current().match(/^python/))
          state.tmp_py = true;
        break;
      case 1:
        change(state, to_explicit, context(rx_directive, 2));
        stream.match(rx_directive_tail);
        token = 'meta';

        if (stream.match(/^latex\s*$/) || state.tmp_stex) {
          state.tmp_stex = undefined; change(state, to_mode, {
            mode: mode_stex, local: CodeMirror.startState(mode_stex)
          });
        }
        break;
      case 2:
        change(state, to_explicit, context(rx_directive, 3));
        if (stream.match(/^python\s*$/) || state.tmp_py) {
          state.tmp_py = undefined; change(state, to_mode, {
            mode: mode_python, local: CodeMirror.startState(mode_python)
          });
        }
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_link || stream.match(rx_link, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_explicit, context(rx_link, 1));
        stream.match(rx_link_head);
        stream.match(rx_link_name);
        token = 'link';
        break;
      case 1:
        change(state, to_explicit, context(rx_link, 2));
        stream.match(rx_link_tail);
        token = 'meta';
        break;
      default:
        change(state, to_normal);
      }
    } else if (stream.match(rx_footnote)) {
      change(state, to_normal);
      token = 'quote';
    } else if (stream.match(rx_citation)) {
      change(state, to_normal);
      token = 'quote';
    }

    else {
      stream.eatSpace();
      if (stream.eol()) {
        change(state, to_normal);
      } else {
        stream.skipToEnd();
        change(state, to_comment);
        token = 'comment';
      }
    }

    return token;
  }

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  function to_comment(stream, state) {
    return as_block(stream, state, 'comment');
  }

  function to_verbatim(stream, state) {
    return as_block(stream, state, 'meta');
  }

  function as_block(stream, state, token) {
    if (stream.eol() || stream.eatSpace()) {
      stream.skipToEnd();
      return token;
    } else {
      change(state, to_normal);
      return null;
    }
  }

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  function to_mode(stream, state) {

    if (state.ctx.mode && state.ctx.local) {

      if (stream.sol()) {
        if (!stream.eatSpace()) change(state, to_normal);
        return null;
      }

      return state.ctx.mode.token(stream, state.ctx.local);
    }

    change(state, to_normal);
    return null;
  }

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  function context(phase, stage, mode, local) {
    return {phase: phase, stage: stage, mode: mode, local: local};
  }

  function change(state, tok, ctx) {
    state.tok = tok;
    state.ctx = ctx || {};
  }

  function stage(state) {
    return state.ctx.stage || 0;
  }

  function phase(state) {
    return state.ctx.phase;
  }

  ///////////////////////////////////////////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  return {
    startState: function () {
      return {tok: to_normal, ctx: context(undefined, 0)};
    },

    copyState: function (state) {
      var ctx = state.ctx, tmp = state.tmp;
      if (ctx.local)
        ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)};
      if (tmp)
        tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)};
      return {tok: state.tok, ctx: ctx, tmp: tmp};
    },

    innerMode: function (state) {
      return state.tmp      ? {state: state.tmp.local, mode: state.tmp.mode}
      : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode}
      : null;
    },

    token: function (stream, state) {
      return state.tok(stream, state);
    }
  };
}, 'python', 'stex');

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

CodeMirror.defineMIME('text/x-rst', 'rst');

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

});
lib/codemirror/mode/xml/test.js000064400000003336147361034410012530 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml";
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); }

  MT("matching",
     "[tag&bracket <][tag top][tag&bracket >]",
     "  text",
     "  [tag&bracket <][tag inner][tag&bracket />]",
     "[tag&bracket </][tag top][tag&bracket >]");

  MT("nonmatching",
     "[tag&bracket <][tag top][tag&bracket >]",
     "  [tag&bracket <][tag inner][tag&bracket />]",
     "  [tag&bracket </][tag&error tip][tag&bracket&error >]");

  MT("doctype",
     "[meta <!doctype foobar>]",
     "[tag&bracket <][tag top][tag&bracket />]");

  MT("cdata",
     "[tag&bracket <][tag top][tag&bracket >]",
     "  [atom <![CDATA[foo]",
     "[atom barbazguh]]]]>]",
     "[tag&bracket </][tag top][tag&bracket >]");

  // HTML tests
  mode = CodeMirror.getMode({indentUnit: 2}, "text/html");

  MT("selfclose",
     "[tag&bracket <][tag html][tag&bracket >]",
     "  [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]",
     "[tag&bracket </][tag html][tag&bracket >]");

  MT("list",
     "[tag&bracket <][tag ol][tag&bracket >]",
     "  [tag&bracket <][tag li][tag&bracket >]one",
     "  [tag&bracket <][tag li][tag&bracket >]two",
     "[tag&bracket </][tag ol][tag&bracket >]");

  MT("valueless",
     "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]");

  MT("pThenArticle",
     "[tag&bracket <][tag p][tag&bracket >]",
     "  foo",
     "[tag&bracket <][tag article][tag&bracket >]bar");

})();
lib/codemirror/mode/xml/xml.js000064400000030432147361034410012346 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

var htmlConfig = {
  autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,
                    'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,
                    'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,
                    'track': true, 'wbr': true, 'menuitem': true},
  implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,
                     'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,
                     'th': true, 'tr': true},
  contextGrabbers: {
    'dd': {'dd': true, 'dt': true},
    'dt': {'dd': true, 'dt': true},
    'li': {'li': true},
    'option': {'option': true, 'optgroup': true},
    'optgroup': {'optgroup': true},
    'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,
          'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,
          'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,
          'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,
          'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},
    'rp': {'rp': true, 'rt': true},
    'rt': {'rp': true, 'rt': true},
    'tbody': {'tbody': true, 'tfoot': true},
    'td': {'td': true, 'th': true},
    'tfoot': {'tbody': true},
    'th': {'td': true, 'th': true},
    'thead': {'tbody': true, 'tfoot': true},
    'tr': {'tr': true}
  },
  doNotIndent: {"pre": true},
  allowUnquoted: true,
  allowMissing: true,
  caseFold: true
}

var xmlConfig = {
  autoSelfClosers: {},
  implicitlyClosed: {},
  contextGrabbers: {},
  doNotIndent: {},
  allowUnquoted: false,
  allowMissing: false,
  caseFold: false
}

CodeMirror.defineMode("xml", function(editorConf, config_) {
  var indentUnit = editorConf.indentUnit
  var config = {}
  var defaults = config_.htmlMode ? htmlConfig : xmlConfig
  for (var prop in defaults) config[prop] = defaults[prop]
  for (var prop in config_) config[prop] = config_[prop]

  // Return variables for tokenizers
  var type, setStyle;

  function inText(stream, state) {
    function chain(parser) {
      state.tokenize = parser;
      return parser(stream, state);
    }

    var ch = stream.next();
    if (ch == "<") {
      if (stream.eat("!")) {
        if (stream.eat("[")) {
          if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>"));
          else return null;
        } else if (stream.match("--")) {
          return chain(inBlock("comment", "-->"));
        } else if (stream.match("DOCTYPE", true, true)) {
          stream.eatWhile(/[\w\._\-]/);
          return chain(doctype(1));
        } else {
          return null;
        }
      } else if (stream.eat("?")) {
        stream.eatWhile(/[\w\._\-]/);
        state.tokenize = inBlock("meta", "?>");
        return "meta";
      } else {
        type = stream.eat("/") ? "closeTag" : "openTag";
        state.tokenize = inTag;
        return "tag bracket";
      }
    } else if (ch == "&") {
      var ok;
      if (stream.eat("#")) {
        if (stream.eat("x")) {
          ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";");
        } else {
          ok = stream.eatWhile(/[\d]/) && stream.eat(";");
        }
      } else {
        ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";");
      }
      return ok ? "atom" : "error";
    } else {
      stream.eatWhile(/[^&<]/);
      return null;
    }
  }
  inText.isInText = true;

  function inTag(stream, state) {
    var ch = stream.next();
    if (ch == ">" || (ch == "/" && stream.eat(">"))) {
      state.tokenize = inText;
      type = ch == ">" ? "endTag" : "selfcloseTag";
      return "tag bracket";
    } else if (ch == "=") {
      type = "equals";
      return null;
    } else if (ch == "<") {
      state.tokenize = inText;
      state.state = baseState;
      state.tagName = state.tagStart = null;
      var next = state.tokenize(stream, state);
      return next ? next + " tag error" : "tag error";
    } else if (/[\'\"]/.test(ch)) {
      state.tokenize = inAttribute(ch);
      state.stringStartCol = stream.column();
      return state.tokenize(stream, state);
    } else {
      stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);
      return "word";
    }
  }

  function inAttribute(quote) {
    var closure = function(stream, state) {
      while (!stream.eol()) {
        if (stream.next() == quote) {
          state.tokenize = inTag;
          break;
        }
      }
      return "string";
    };
    closure.isInAttribute = true;
    return closure;
  }

  function inBlock(style, terminator) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.match(terminator)) {
          state.tokenize = inText;
          break;
        }
        stream.next();
      }
      return style;
    };
  }
  function doctype(depth) {
    return function(stream, state) {
      var ch;
      while ((ch = stream.next()) != null) {
        if (ch == "<") {
          state.tokenize = doctype(depth + 1);
          return state.tokenize(stream, state);
        } else if (ch == ">") {
          if (depth == 1) {
            state.tokenize = inText;
            break;
          } else {
            state.tokenize = doctype(depth - 1);
            return state.tokenize(stream, state);
          }
        }
      }
      return "meta";
    };
  }

  function Context(state, tagName, startOfLine) {
    this.prev = state.context;
    this.tagName = tagName;
    this.indent = state.indented;
    this.startOfLine = startOfLine;
    if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))
      this.noIndent = true;
  }
  function popContext(state) {
    if (state.context) state.context = state.context.prev;
  }
  function maybePopContext(state, nextTagName) {
    var parentTagName;
    while (true) {
      if (!state.context) {
        return;
      }
      parentTagName = state.context.tagName;
      if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||
          !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {
        return;
      }
      popContext(state);
    }
  }

  function baseState(type, stream, state) {
    if (type == "openTag") {
      state.tagStart = stream.column();
      return tagNameState;
    } else if (type == "closeTag") {
      return closeTagNameState;
    } else {
      return baseState;
    }
  }
  function tagNameState(type, stream, state) {
    if (type == "word") {
      state.tagName = stream.current();
      setStyle = "tag";
      return attrState;
    } else {
      setStyle = "error";
      return tagNameState;
    }
  }
  function closeTagNameState(type, stream, state) {
    if (type == "word") {
      var tagName = stream.current();
      if (state.context && state.context.tagName != tagName &&
          config.implicitlyClosed.hasOwnProperty(state.context.tagName))
        popContext(state);
      if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {
        setStyle = "tag";
        return closeState;
      } else {
        setStyle = "tag error";
        return closeStateErr;
      }
    } else {
      setStyle = "error";
      return closeStateErr;
    }
  }

  function closeState(type, _stream, state) {
    if (type != "endTag") {
      setStyle = "error";
      return closeState;
    }
    popContext(state);
    return baseState;
  }
  function closeStateErr(type, stream, state) {
    setStyle = "error";
    return closeState(type, stream, state);
  }

  function attrState(type, _stream, state) {
    if (type == "word") {
      setStyle = "attribute";
      return attrEqState;
    } else if (type == "endTag" || type == "selfcloseTag") {
      var tagName = state.tagName, tagStart = state.tagStart;
      state.tagName = state.tagStart = null;
      if (type == "selfcloseTag" ||
          config.autoSelfClosers.hasOwnProperty(tagName)) {
        maybePopContext(state, tagName);
      } else {
        maybePopContext(state, tagName);
        state.context = new Context(state, tagName, tagStart == state.indented);
      }
      return baseState;
    }
    setStyle = "error";
    return attrState;
  }
  function attrEqState(type, stream, state) {
    if (type == "equals") return attrValueState;
    if (!config.allowMissing) setStyle = "error";
    return attrState(type, stream, state);
  }
  function attrValueState(type, stream, state) {
    if (type == "string") return attrContinuedState;
    if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;}
    setStyle = "error";
    return attrState(type, stream, state);
  }
  function attrContinuedState(type, stream, state) {
    if (type == "string") return attrContinuedState;
    return attrState(type, stream, state);
  }

  return {
    startState: function(baseIndent) {
      var state = {tokenize: inText,
                   state: baseState,
                   indented: baseIndent || 0,
                   tagName: null, tagStart: null,
                   context: null}
      if (baseIndent != null) state.baseIndent = baseIndent
      return state
    },

    token: function(stream, state) {
      if (!state.tagName && stream.sol())
        state.indented = stream.indentation();

      if (stream.eatSpace()) return null;
      type = null;
      var style = state.tokenize(stream, state);
      if ((style || type) && style != "comment") {
        setStyle = null;
        state.state = state.state(type || style, stream, state);
        if (setStyle)
          style = setStyle == "error" ? style + " error" : setStyle;
      }
      return style;
    },

    indent: function(state, textAfter, fullLine) {
      var context = state.context;
      // Indent multi-line strings (e.g. css).
      if (state.tokenize.isInAttribute) {
        if (state.tagStart == state.indented)
          return state.stringStartCol + 1;
        else
          return state.indented + indentUnit;
      }
      if (context && context.noIndent) return CodeMirror.Pass;
      if (state.tokenize != inTag && state.tokenize != inText)
        return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0;
      // Indent the starts of attribute names.
      if (state.tagName) {
        if (config.multilineTagIndentPastTag !== false)
          return state.tagStart + state.tagName.length + 2;
        else
          return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);
      }
      if (config.alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0;
      var tagAfter = textAfter && /^<(\/)?([\w_:\.-]*)/.exec(textAfter);
      if (tagAfter && tagAfter[1]) { // Closing tag spotted
        while (context) {
          if (context.tagName == tagAfter[2]) {
            context = context.prev;
            break;
          } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {
            context = context.prev;
          } else {
            break;
          }
        }
      } else if (tagAfter) { // Opening tag spotted
        while (context) {
          var grabbers = config.contextGrabbers[context.tagName];
          if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))
            context = context.prev;
          else
            break;
        }
      }
      while (context && context.prev && !context.startOfLine)
        context = context.prev;
      if (context) return context.indent + indentUnit;
      else return state.baseIndent || 0;
    },

    electricInput: /<\/[\s\w:]+>$/,
    blockCommentStart: "<!--",
    blockCommentEnd: "-->",

    configuration: config.htmlMode ? "html" : "xml",
    helperType: config.htmlMode ? "html" : "xml",

    skipAttribute: function(state) {
      if (state.state == attrValueState)
        state.state = attrState
    }
  };
});

CodeMirror.defineMIME("text/xml", "xml");
CodeMirror.defineMIME("application/xml", "xml");
if (!CodeMirror.mimeModes.hasOwnProperty("text/html"))
  CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true});

});
lib/codemirror/mode/xml/index.html000064400000004173147361034410013210 0ustar00<!doctype html>

<title>CodeMirror: XML mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="xml.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">XML</a>
  </ul>
</div>

<article>
<h2>XML mode</h2>
<form><textarea id="code" name="code">
&lt;html style="color: green"&gt;
  &lt;!-- this is a comment --&gt;
  &lt;head&gt;
    &lt;title&gt;HTML Example&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    The indentation tries to be &lt;em&gt;somewhat &amp;quot;do what
    I mean&amp;quot;&lt;/em&gt;... but might not match your style.
  &lt;/body&gt;
&lt;/html&gt;
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/html",
        lineNumbers: true
      });
    </script>
    <p>The XML mode supports these configuration parameters:</p>
    <dl>
      <dt><code>htmlMode (boolean)</code></dt>
      <dd>This switches the mode to parse HTML instead of XML. This
      means attributes do not have to be quoted, and some elements
      (such as <code>br</code>) do not require a closing tag.</dd>
      <dt><code>matchClosing (boolean)</code></dt>
      <dd>Controls whether the mode checks that close tags match the
      corresponding opening tag, and highlights mismatches as errors.
      Defaults to true.</dd>
      <dt><code>alignCDATA (boolean)</code></dt>
      <dd>Setting this to true will force the opening tag of CDATA
      blocks to not be indented.</dd>
    </dl>

    <p><strong>MIME types defined:</strong> <code>application/xml</code>, <code>text/html</code>.</p>
  </article>
lib/codemirror/mode/velocity/velocity.js000064400000015672147361034410014453 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("velocity", function() {
    function parseWords(str) {
        var obj = {}, words = str.split(" ");
        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
        return obj;
    }

    var keywords = parseWords("#end #else #break #stop #[[ #]] " +
                              "#{end} #{else} #{break} #{stop}");
    var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " +
                               "#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}");
    var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent");
    var isOperatorChar = /[+\-*&%=<>!?:\/|]/;

    function chain(stream, state, f) {
        state.tokenize = f;
        return f(stream, state);
    }
    function tokenBase(stream, state) {
        var beforeParams = state.beforeParams;
        state.beforeParams = false;
        var ch = stream.next();
        // start of unparsed string?
        if ((ch == "'") && !state.inString && state.inParams) {
            state.lastTokenWasBuiltin = false;
            return chain(stream, state, tokenString(ch));
        }
        // start of parsed string?
        else if ((ch == '"')) {
            state.lastTokenWasBuiltin = false;
            if (state.inString) {
                state.inString = false;
                return "string";
            }
            else if (state.inParams)
                return chain(stream, state, tokenString(ch));
        }
        // is it one of the special signs []{}().,;? Seperator?
        else if (/[\[\]{}\(\),;\.]/.test(ch)) {
            if (ch == "(" && beforeParams)
                state.inParams = true;
            else if (ch == ")") {
                state.inParams = false;
                state.lastTokenWasBuiltin = true;
            }
            return null;
        }
        // start of a number value?
        else if (/\d/.test(ch)) {
            state.lastTokenWasBuiltin = false;
            stream.eatWhile(/[\w\.]/);
            return "number";
        }
        // multi line comment?
        else if (ch == "#" && stream.eat("*")) {
            state.lastTokenWasBuiltin = false;
            return chain(stream, state, tokenComment);
        }
        // unparsed content?
        else if (ch == "#" && stream.match(/ *\[ *\[/)) {
            state.lastTokenWasBuiltin = false;
            return chain(stream, state, tokenUnparsed);
        }
        // single line comment?
        else if (ch == "#" && stream.eat("#")) {
            state.lastTokenWasBuiltin = false;
            stream.skipToEnd();
            return "comment";
        }
        // variable?
        else if (ch == "$") {
            stream.eatWhile(/[\w\d\$_\.{}]/);
            // is it one of the specials?
            if (specials && specials.propertyIsEnumerable(stream.current())) {
                return "keyword";
            }
            else {
                state.lastTokenWasBuiltin = true;
                state.beforeParams = true;
                return "builtin";
            }
        }
        // is it a operator?
        else if (isOperatorChar.test(ch)) {
            state.lastTokenWasBuiltin = false;
            stream.eatWhile(isOperatorChar);
            return "operator";
        }
        else {
            // get the whole word
            stream.eatWhile(/[\w\$_{}@]/);
            var word = stream.current();
            // is it one of the listed keywords?
            if (keywords && keywords.propertyIsEnumerable(word))
                return "keyword";
            // is it one of the listed functions?
            if (functions && functions.propertyIsEnumerable(word) ||
                    (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") &&
                     !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) {
                state.beforeParams = true;
                state.lastTokenWasBuiltin = false;
                return "keyword";
            }
            if (state.inString) {
                state.lastTokenWasBuiltin = false;
                return "string";
            }
            if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin)
                return "builtin";
            // default: just a "word"
            state.lastTokenWasBuiltin = false;
            return null;
        }
    }

    function tokenString(quote) {
        return function(stream, state) {
            var escaped = false, next, end = false;
            while ((next = stream.next()) != null) {
                if ((next == quote) && !escaped) {
                    end = true;
                    break;
                }
                if (quote=='"' && stream.peek() == '$' && !escaped) {
                    state.inString = true;
                    end = true;
                    break;
                }
                escaped = !escaped && next == "\\";
            }
            if (end) state.tokenize = tokenBase;
            return "string";
        };
    }

    function tokenComment(stream, state) {
        var maybeEnd = false, ch;
        while (ch = stream.next()) {
            if (ch == "#" && maybeEnd) {
                state.tokenize = tokenBase;
                break;
            }
            maybeEnd = (ch == "*");
        }
        return "comment";
    }

    function tokenUnparsed(stream, state) {
        var maybeEnd = 0, ch;
        while (ch = stream.next()) {
            if (ch == "#" && maybeEnd == 2) {
                state.tokenize = tokenBase;
                break;
            }
            if (ch == "]")
                maybeEnd++;
            else if (ch != " ")
                maybeEnd = 0;
        }
        return "meta";
    }
    // Interface

    return {
        startState: function() {
            return {
                tokenize: tokenBase,
                beforeParams: false,
                inParams: false,
                inString: false,
                lastTokenWasBuiltin: false
            };
        },

        token: function(stream, state) {
            if (stream.eatSpace()) return null;
            return state.tokenize(stream, state);
        },
        blockCommentStart: "#*",
        blockCommentEnd: "*#",
        lineComment: "##",
        fold: "velocity"
    };
});

CodeMirror.defineMIME("text/velocity", "velocity");

});
lib/codemirror/mode/velocity/index.html000064400000006344147361034410014250 0ustar00<!doctype html>

<title>CodeMirror: Velocity mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/night.css">
<script src="../../lib/codemirror.js"></script>
<script src="velocity.js"></script>
<style>.CodeMirror {border: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Velocity</a>
  </ul>
</div>

<article>
<h2>Velocity mode</h2>
<form><textarea id="code" name="code">
## Velocity Code Demo
#*
   based on PL/SQL mode by Peter Raganitsch, adapted to Velocity by Steve O'Hara ( http://www.pivotal-solutions.co.uk )
   August 2011
*#

#*
   This is a multiline comment.
   This is the second line
*#

#[[ hello steve
   This has invalid syntax that would normally need "poor man's escaping" like:

   #define()

   ${blah
]]#

#include( "disclaimer.txt" "opinion.txt" )
#include( $foo $bar )

#parse( "lecorbusier.vm" )
#parse( $foo )

#evaluate( 'string with VTL #if(true)will be displayed#end' )

#define( $hello ) Hello $who #end #set( $who = "World!") $hello ## displays Hello World!

#foreach( $customer in $customerList )

    $foreach.count $customer.Name

    #if( $foo == ${bar})
        it's true!
        #break
    #{else}
        it's not!
        #stop
    #end

    #if ($foreach.parent.hasNext)
        $velocityCount
    #end
#end

$someObject.getValues("this is a string split
        across lines")

$someObject("This plus $something in the middle").method(7567).property

#set($something = "Parseable string with '$quotes'!")

#macro( tablerows $color $somelist )
    #foreach( $something in $somelist )
        <tr><td bgcolor=$color>$something</td></tr>
        <tr><td bgcolor=$color>$bodyContent</td></tr>
    #end
#end

#tablerows("red" ["dadsdf","dsa"])
#@tablerows("red" ["dadsdf","dsa"]) some body content #end

   Variable reference: #set( $monkey = $bill )
   String literal: #set( $monkey.Friend = 'monica' )
   Property reference: #set( $monkey.Blame = $whitehouse.Leak )
   Method reference: #set( $monkey.Plan = $spindoctor.weave($web) )
   Number literal: #set( $monkey.Number = 123 )
   Range operator: #set( $monkey.Numbers = [1..3] )
   Object list: #set( $monkey.Say = ["Not", $my, "fault"] )
   Object map: #set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"})

The RHS can also be a simple arithmetic expression, such as:
Addition: #set( $value = $foo + 1 )
   Subtraction: #set( $value = $bar - 1 )
   Multiplication: #set( $value = $foo * $bar )
   Division: #set( $value = $foo / $bar )
   Remainder: #set( $value = $foo % $bar )

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        theme: "night",
        lineNumbers: true,
        indentUnit: 4,
        mode: "text/velocity"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/velocity</code>.</p>

  </article>
lib/codemirror/mode/css/test.js000064400000015201147361034410012512 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "css");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  // Error, because "foobarhello" is neither a known type or property, but
  // property was expected (after "and"), and it should be in parentheses.
  MT("atMediaUnknownType",
     "[def @media] [attribute screen] [keyword and] [error foobarhello] { }");

  // Soft error, because "foobarhello" is not a known property or type.
  MT("atMediaUnknownProperty",
     "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }");

  // Make sure nesting works with media queries
  MT("atMediaMaxWidthNested",
     "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }");

  MT("atMediaFeatureValueKeyword",
     "[def @media] ([property orientation]: [keyword landscape]) { }");

  MT("atMediaUnknownFeatureValueKeyword",
     "[def @media] ([property orientation]: [error upsidedown]) { }");

  MT("tagSelector",
     "[tag foo] { }");

  MT("classSelector",
     "[qualifier .foo-bar_hello] { }");

  MT("idSelector",
     "[builtin #foo] { [error #foo] }");

  MT("tagSelectorUnclosed",
     "[tag foo] { [property margin]: [number 0] } [tag bar] { }");

  MT("tagStringNoQuotes",
     "[tag foo] { [property font-family]: [variable hello] [variable world]; }");

  MT("tagStringDouble",
     "[tag foo] { [property font-family]: [string \"hello world\"]; }");

  MT("tagStringSingle",
     "[tag foo] { [property font-family]: [string 'hello world']; }");

  MT("tagColorKeyword",
     "[tag foo] {",
     "  [property color]: [keyword black];",
     "  [property color]: [keyword navy];",
     "  [property color]: [keyword yellow];",
     "}");

  MT("tagColorHex3",
     "[tag foo] { [property background]: [atom #fff]; }");

  MT("tagColorHex4",
     "[tag foo] { [property background]: [atom #ffff]; }");

  MT("tagColorHex6",
     "[tag foo] { [property background]: [atom #ffffff]; }");

  MT("tagColorHex8",
     "[tag foo] { [property background]: [atom #ffffffff]; }");

  MT("tagColorHex5Invalid",
     "[tag foo] { [property background]: [atom&error #fffff]; }");

  MT("tagColorHexInvalid",
     "[tag foo] { [property background]: [atom&error #ffg]; }");

  MT("tagNegativeNumber",
     "[tag foo] { [property margin]: [number -5px]; }");

  MT("tagPositiveNumber",
     "[tag foo] { [property padding]: [number 5px]; }");

  MT("tagVendor",
     "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }");

  MT("tagBogusProperty",
     "[tag foo] { [property&error barhelloworld]: [number 0]; }");

  MT("tagTwoProperties",
     "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }");

  MT("tagTwoPropertiesURL",
     "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }");

  MT("indent_tagSelector",
     "[tag strong], [tag em] {",
     "  [property background]: [atom rgba](",
     "    [number 255], [number 255], [number 0], [number .2]",
     "  );",
     "}");

  MT("indent_atMedia",
     "[def @media] {",
     "  [tag foo] {",
     "    [property color]:",
     "      [keyword yellow];",
     "  }",
     "}");

  MT("indent_comma",
     "[tag foo] {",
     "  [property font-family]: [variable verdana],",
     "    [atom sans-serif];",
     "}");

  MT("indent_parentheses",
     "[tag foo]:[variable-3 before] {",
     "  [property background]: [atom url](",
     "[string     blahblah]",
     "[string     etc]",
     "[string   ]) [keyword !important];",
     "}");

  MT("font_face",
     "[def @font-face] {",
     "  [property font-family]: [string 'myfont'];",
     "  [error nonsense]: [string 'abc'];",
     "  [property src]: [atom url]([string http://blah]),",
     "    [atom url]([string http://foo]);",
     "}");

  MT("empty_url",
     "[def @import] [atom url]() [attribute screen];");

  MT("parens",
     "[qualifier .foo] {",
     "  [property background-image]: [variable fade]([atom #000], [number 20%]);",
     "  [property border-image]: [atom linear-gradient](",
     "    [atom to] [atom bottom],",
     "    [variable fade]([atom #000], [number 20%]) [number 0%],",
     "    [variable fade]([atom #000], [number 20%]) [number 100%]",
     "  );",
     "}");

  MT("css_variable",
     ":[variable-3 root] {",
     "  [variable-2 --main-color]: [atom #06c];",
     "}",
     "[tag h1][builtin #foo] {",
     "  [property color]: [atom var]([variable-2 --main-color]);",
     "}");

  MT("supports",
     "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {",
     "  [property text-align-last]: [atom justify];",
     "}");

   MT("document",
      "[def @document] [tag url]([string http://blah]),",
      "  [tag url-prefix]([string https://]),",
      "  [tag domain]([string blah.com]),",
      "  [tag regexp]([string \".*blah.+\"]) {",
      "    [builtin #id] {",
      "      [property background-color]: [keyword white];",
      "    }",
      "    [tag foo] {",
      "      [property font-family]: [variable Verdana], [atom sans-serif];",
      "    }",
      "}");

   MT("document_url",
      "[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }");

   MT("document_urlPrefix",
      "[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }");

   MT("document_domain",
      "[def @document] [tag domain]([string blah.com]) { [tag foo] { } }");

   MT("document_regexp",
      "[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }");

   MT("counter-style",
      "[def @counter-style] [variable binary] {",
      "  [property system]: [atom numeric];",
      "  [property symbols]: [number 0] [number 1];",
      "  [property suffix]: [string \".\"];",
      "  [property range]: [atom infinite];",
      "  [property speak-as]: [atom numeric];",
      "}");

   MT("counter-style-additive-symbols",
      "[def @counter-style] [variable simple-roman] {",
      "  [property system]: [atom additive];",
      "  [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];",
      "  [property range]: [number 1] [number 49];",
      "}");

   MT("counter-style-use",
      "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }");

   MT("counter-style-symbols",
      "[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }");
})();
lib/codemirror/mode/css/css.js000064400000110535147361034410012331 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("css", function(config, parserConfig) {
  var inline = parserConfig.inline
  if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css");

  var indentUnit = config.indentUnit,
      tokenHooks = parserConfig.tokenHooks,
      documentTypes = parserConfig.documentTypes || {},
      mediaTypes = parserConfig.mediaTypes || {},
      mediaFeatures = parserConfig.mediaFeatures || {},
      mediaValueKeywords = parserConfig.mediaValueKeywords || {},
      propertyKeywords = parserConfig.propertyKeywords || {},
      nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},
      fontProperties = parserConfig.fontProperties || {},
      counterDescriptors = parserConfig.counterDescriptors || {},
      colorKeywords = parserConfig.colorKeywords || {},
      valueKeywords = parserConfig.valueKeywords || {},
      allowNested = parserConfig.allowNested,
      supportsAtComponent = parserConfig.supportsAtComponent === true;

  var type, override;
  function ret(style, tp) { type = tp; return style; }

  // Tokenizers

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (tokenHooks[ch]) {
      var result = tokenHooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == "@") {
      stream.eatWhile(/[\w\\\-]/);
      return ret("def", stream.current());
    } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) {
      return ret(null, "compare");
    } else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    } else if (ch == "#") {
      stream.eatWhile(/[\w\\\-]/);
      return ret("atom", "hash");
    } else if (ch == "!") {
      stream.match(/^\s*\w*/);
      return ret("keyword", "important");
    } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) {
      stream.eatWhile(/[\w.%]/);
      return ret("number", "unit");
    } else if (ch === "-") {
      if (/[\d.]/.test(stream.peek())) {
        stream.eatWhile(/[\w.%]/);
        return ret("number", "unit");
      } else if (stream.match(/^-[\w\\\-]+/)) {
        stream.eatWhile(/[\w\\\-]/);
        if (stream.match(/^\s*:/, false))
          return ret("variable-2", "variable-definition");
        return ret("variable-2", "variable");
      } else if (stream.match(/^\w+-/)) {
        return ret("meta", "meta");
      }
    } else if (/[,+>*\/]/.test(ch)) {
      return ret(null, "select-op");
    } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
      return ret("qualifier", "qualifier");
    } else if (/[:;{}\[\]\(\)]/.test(ch)) {
      return ret(null, ch);
    } else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) ||
               (ch == "d" && stream.match("omain(")) ||
               (ch == "r" && stream.match("egexp("))) {
      stream.backUp(1);
      state.tokenize = tokenParenthesized;
      return ret("property", "word");
    } else if (/[\w\\\-]/.test(ch)) {
      stream.eatWhile(/[\w\\\-]/);
      return ret("property", "word");
    } else {
      return ret(null, null);
    }
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          if (quote == ")") stream.backUp(1);
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      if (ch == quote || !escaped && quote != ")") state.tokenize = null;
      return ret("string", "string");
    };
  }

  function tokenParenthesized(stream, state) {
    stream.next(); // Must be '('
    if (!stream.match(/\s*[\"\')]/, false))
      state.tokenize = tokenString(")");
    else
      state.tokenize = null;
    return ret(null, "(");
  }

  // Context management

  function Context(type, indent, prev) {
    this.type = type;
    this.indent = indent;
    this.prev = prev;
  }

  function pushContext(state, stream, type, indent) {
    state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);
    return type;
  }

  function popContext(state) {
    if (state.context.prev)
      state.context = state.context.prev;
    return state.context.type;
  }

  function pass(type, stream, state) {
    return states[state.context.type](type, stream, state);
  }
  function popAndPass(type, stream, state, n) {
    for (var i = n || 1; i > 0; i--)
      state.context = state.context.prev;
    return pass(type, stream, state);
  }

  // Parser

  function wordAsValue(stream) {
    var word = stream.current().toLowerCase();
    if (valueKeywords.hasOwnProperty(word))
      override = "atom";
    else if (colorKeywords.hasOwnProperty(word))
      override = "keyword";
    else
      override = "variable";
  }

  var states = {};

  states.top = function(type, stream, state) {
    if (type == "{") {
      return pushContext(state, stream, "block");
    } else if (type == "}" && state.context.prev) {
      return popContext(state);
    } else if (supportsAtComponent && /@component/.test(type)) {
      return pushContext(state, stream, "atComponentBlock");
    } else if (/^@(-moz-)?document$/.test(type)) {
      return pushContext(state, stream, "documentTypes");
    } else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) {
      return pushContext(state, stream, "atBlock");
    } else if (/^@(font-face|counter-style)/.test(type)) {
      state.stateArg = type;
      return "restricted_atBlock_before";
    } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {
      return "keyframes";
    } else if (type && type.charAt(0) == "@") {
      return pushContext(state, stream, "at");
    } else if (type == "hash") {
      override = "builtin";
    } else if (type == "word") {
      override = "tag";
    } else if (type == "variable-definition") {
      return "maybeprop";
    } else if (type == "interpolation") {
      return pushContext(state, stream, "interpolation");
    } else if (type == ":") {
      return "pseudo";
    } else if (allowNested && type == "(") {
      return pushContext(state, stream, "parens");
    }
    return state.context.type;
  };

  states.block = function(type, stream, state) {
    if (type == "word") {
      var word = stream.current().toLowerCase();
      if (propertyKeywords.hasOwnProperty(word)) {
        override = "property";
        return "maybeprop";
      } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {
        override = "string-2";
        return "maybeprop";
      } else if (allowNested) {
        override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag";
        return "block";
      } else {
        override += " error";
        return "maybeprop";
      }
    } else if (type == "meta") {
      return "block";
    } else if (!allowNested && (type == "hash" || type == "qualifier")) {
      override = "error";
      return "block";
    } else {
      return states.top(type, stream, state);
    }
  };

  states.maybeprop = function(type, stream, state) {
    if (type == ":") return pushContext(state, stream, "prop");
    return pass(type, stream, state);
  };

  states.prop = function(type, stream, state) {
    if (type == ";") return popContext(state);
    if (type == "{" && allowNested) return pushContext(state, stream, "propBlock");
    if (type == "}" || type == "{") return popAndPass(type, stream, state);
    if (type == "(") return pushContext(state, stream, "parens");

    if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {
      override += " error";
    } else if (type == "word") {
      wordAsValue(stream);
    } else if (type == "interpolation") {
      return pushContext(state, stream, "interpolation");
    }
    return "prop";
  };

  states.propBlock = function(type, _stream, state) {
    if (type == "}") return popContext(state);
    if (type == "word") { override = "property"; return "maybeprop"; }
    return state.context.type;
  };

  states.parens = function(type, stream, state) {
    if (type == "{" || type == "}") return popAndPass(type, stream, state);
    if (type == ")") return popContext(state);
    if (type == "(") return pushContext(state, stream, "parens");
    if (type == "interpolation") return pushContext(state, stream, "interpolation");
    if (type == "word") wordAsValue(stream);
    return "parens";
  };

  states.pseudo = function(type, stream, state) {
    if (type == "word") {
      override = "variable-3";
      return state.context.type;
    }
    return pass(type, stream, state);
  };

  states.documentTypes = function(type, stream, state) {
    if (type == "word" && documentTypes.hasOwnProperty(stream.current())) {
      override = "tag";
      return state.context.type;
    } else {
      return states.atBlock(type, stream, state);
    }
  };

  states.atBlock = function(type, stream, state) {
    if (type == "(") return pushContext(state, stream, "atBlock_parens");
    if (type == "}" || type == ";") return popAndPass(type, stream, state);
    if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top");

    if (type == "interpolation") return pushContext(state, stream, "interpolation");

    if (type == "word") {
      var word = stream.current().toLowerCase();
      if (word == "only" || word == "not" || word == "and" || word == "or")
        override = "keyword";
      else if (mediaTypes.hasOwnProperty(word))
        override = "attribute";
      else if (mediaFeatures.hasOwnProperty(word))
        override = "property";
      else if (mediaValueKeywords.hasOwnProperty(word))
        override = "keyword";
      else if (propertyKeywords.hasOwnProperty(word))
        override = "property";
      else if (nonStandardPropertyKeywords.hasOwnProperty(word))
        override = "string-2";
      else if (valueKeywords.hasOwnProperty(word))
        override = "atom";
      else if (colorKeywords.hasOwnProperty(word))
        override = "keyword";
      else
        override = "error";
    }
    return state.context.type;
  };

  states.atComponentBlock = function(type, stream, state) {
    if (type == "}")
      return popAndPass(type, stream, state);
    if (type == "{")
      return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false);
    if (type == "word")
      override = "error";
    return state.context.type;
  };

  states.atBlock_parens = function(type, stream, state) {
    if (type == ")") return popContext(state);
    if (type == "{" || type == "}") return popAndPass(type, stream, state, 2);
    return states.atBlock(type, stream, state);
  };

  states.restricted_atBlock_before = function(type, stream, state) {
    if (type == "{")
      return pushContext(state, stream, "restricted_atBlock");
    if (type == "word" && state.stateArg == "@counter-style") {
      override = "variable";
      return "restricted_atBlock_before";
    }
    return pass(type, stream, state);
  };

  states.restricted_atBlock = function(type, stream, state) {
    if (type == "}") {
      state.stateArg = null;
      return popContext(state);
    }
    if (type == "word") {
      if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||
          (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))
        override = "error";
      else
        override = "property";
      return "maybeprop";
    }
    return "restricted_atBlock";
  };

  states.keyframes = function(type, stream, state) {
    if (type == "word") { override = "variable"; return "keyframes"; }
    if (type == "{") return pushContext(state, stream, "top");
    return pass(type, stream, state);
  };

  states.at = function(type, stream, state) {
    if (type == ";") return popContext(state);
    if (type == "{" || type == "}") return popAndPass(type, stream, state);
    if (type == "word") override = "tag";
    else if (type == "hash") override = "builtin";
    return "at";
  };

  states.interpolation = function(type, stream, state) {
    if (type == "}") return popContext(state);
    if (type == "{" || type == ";") return popAndPass(type, stream, state);
    if (type == "word") override = "variable";
    else if (type != "variable" && type != "(" && type != ")") override = "error";
    return "interpolation";
  };

  return {
    startState: function(base) {
      return {tokenize: null,
              state: inline ? "block" : "top",
              stateArg: null,
              context: new Context(inline ? "block" : "top", base || 0, null)};
    },

    token: function(stream, state) {
      if (!state.tokenize && stream.eatSpace()) return null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style && typeof style == "object") {
        type = style[1];
        style = style[0];
      }
      override = style;
      state.state = states[state.state](type, stream, state);
      return override;
    },

    indent: function(state, textAfter) {
      var cx = state.context, ch = textAfter && textAfter.charAt(0);
      var indent = cx.indent;
      if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev;
      if (cx.prev) {
        if (ch == "}" && (cx.type == "block" || cx.type == "top" ||
                          cx.type == "interpolation" || cx.type == "restricted_atBlock")) {
          // Resume indentation from parent context.
          cx = cx.prev;
          indent = cx.indent;
        } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") ||
            ch == "{" && (cx.type == "at" || cx.type == "atBlock")) {
          // Dedent relative to current context.
          indent = Math.max(0, cx.indent - indentUnit);
          cx = cx.prev;
        }
      }
      return indent;
    },

    electricChars: "}",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    fold: "brace"
  };
});

  function keySet(array) {
    var keys = {};
    for (var i = 0; i < array.length; ++i) {
      keys[array[i]] = true;
    }
    return keys;
  }

  var documentTypes_ = [
    "domain", "regexp", "url", "url-prefix"
  ], documentTypes = keySet(documentTypes_);

  var mediaTypes_ = [
    "all", "aural", "braille", "handheld", "print", "projection", "screen",
    "tty", "tv", "embossed"
  ], mediaTypes = keySet(mediaTypes_);

  var mediaFeatures_ = [
    "width", "min-width", "max-width", "height", "min-height", "max-height",
    "device-width", "min-device-width", "max-device-width", "device-height",
    "min-device-height", "max-device-height", "aspect-ratio",
    "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio",
    "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color",
    "max-color", "color-index", "min-color-index", "max-color-index",
    "monochrome", "min-monochrome", "max-monochrome", "resolution",
    "min-resolution", "max-resolution", "scan", "grid", "orientation",
    "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio",
    "pointer", "any-pointer", "hover", "any-hover"
  ], mediaFeatures = keySet(mediaFeatures_);

  var mediaValueKeywords_ = [
    "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover",
    "interlace", "progressive"
  ], mediaValueKeywords = keySet(mediaValueKeywords_);

  var propertyKeywords_ = [
    "align-content", "align-items", "align-self", "alignment-adjust",
    "alignment-baseline", "anchor-point", "animation", "animation-delay",
    "animation-direction", "animation-duration", "animation-fill-mode",
    "animation-iteration-count", "animation-name", "animation-play-state",
    "animation-timing-function", "appearance", "azimuth", "backface-visibility",
    "background", "background-attachment", "background-blend-mode", "background-clip",
    "background-color", "background-image", "background-origin", "background-position",
    "background-repeat", "background-size", "baseline-shift", "binding",
    "bleed", "bookmark-label", "bookmark-level", "bookmark-state",
    "bookmark-target", "border", "border-bottom", "border-bottom-color",
    "border-bottom-left-radius", "border-bottom-right-radius",
    "border-bottom-style", "border-bottom-width", "border-collapse",
    "border-color", "border-image", "border-image-outset",
    "border-image-repeat", "border-image-slice", "border-image-source",
    "border-image-width", "border-left", "border-left-color",
    "border-left-style", "border-left-width", "border-radius", "border-right",
    "border-right-color", "border-right-style", "border-right-width",
    "border-spacing", "border-style", "border-top", "border-top-color",
    "border-top-left-radius", "border-top-right-radius", "border-top-style",
    "border-top-width", "border-width", "bottom", "box-decoration-break",
    "box-shadow", "box-sizing", "break-after", "break-before", "break-inside",
    "caption-side", "clear", "clip", "color", "color-profile", "column-count",
    "column-fill", "column-gap", "column-rule", "column-rule-color",
    "column-rule-style", "column-rule-width", "column-span", "column-width",
    "columns", "content", "counter-increment", "counter-reset", "crop", "cue",
    "cue-after", "cue-before", "cursor", "direction", "display",
    "dominant-baseline", "drop-initial-after-adjust",
    "drop-initial-after-align", "drop-initial-before-adjust",
    "drop-initial-before-align", "drop-initial-size", "drop-initial-value",
    "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis",
    "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap",
    "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings",
    "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust",
    "font-stretch", "font-style", "font-synthesis", "font-variant",
    "font-variant-alternates", "font-variant-caps", "font-variant-east-asian",
    "font-variant-ligatures", "font-variant-numeric", "font-variant-position",
    "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow",
    "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap",
    "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap",
    "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns",
    "grid-template-rows", "hanging-punctuation", "height", "hyphens",
    "icon", "image-orientation", "image-rendering", "image-resolution",
    "inline-box-align", "justify-content", "left", "letter-spacing",
    "line-break", "line-height", "line-stacking", "line-stacking-ruby",
    "line-stacking-shift", "line-stacking-strategy", "list-style",
    "list-style-image", "list-style-position", "list-style-type", "margin",
    "margin-bottom", "margin-left", "margin-right", "margin-top",
    "marker-offset", "marks", "marquee-direction", "marquee-loop",
    "marquee-play-count", "marquee-speed", "marquee-style", "max-height",
    "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index",
    "nav-left", "nav-right", "nav-up", "object-fit", "object-position",
    "opacity", "order", "orphans", "outline",
    "outline-color", "outline-offset", "outline-style", "outline-width",
    "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y",
    "padding", "padding-bottom", "padding-left", "padding-right", "padding-top",
    "page", "page-break-after", "page-break-before", "page-break-inside",
    "page-policy", "pause", "pause-after", "pause-before", "perspective",
    "perspective-origin", "pitch", "pitch-range", "play-during", "position",
    "presentation-level", "punctuation-trim", "quotes", "region-break-after",
    "region-break-before", "region-break-inside", "region-fragment",
    "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness",
    "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang",
    "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin",
    "shape-outside", "size", "speak", "speak-as", "speak-header",
    "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set",
    "tab-size", "table-layout", "target", "target-name", "target-new",
    "target-position", "text-align", "text-align-last", "text-decoration",
    "text-decoration-color", "text-decoration-line", "text-decoration-skip",
    "text-decoration-style", "text-emphasis", "text-emphasis-color",
    "text-emphasis-position", "text-emphasis-style", "text-height",
    "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow",
    "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position",
    "text-wrap", "top", "transform", "transform-origin", "transform-style",
    "transition", "transition-delay", "transition-duration",
    "transition-property", "transition-timing-function", "unicode-bidi",
    "vertical-align", "visibility", "voice-balance", "voice-duration",
    "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
    "voice-volume", "volume", "white-space", "widows", "width", "word-break",
    "word-spacing", "word-wrap", "z-index",
    // SVG-specific
    "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color",
    "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events",
    "color-interpolation", "color-interpolation-filters",
    "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering",
    "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke",
    "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin",
    "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering",
    "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal",
    "glyph-orientation-vertical", "text-anchor", "writing-mode"
  ], propertyKeywords = keySet(propertyKeywords_);

  var nonStandardPropertyKeywords_ = [
    "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color",
    "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color",
    "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside",
    "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button",
    "searchfield-results-decoration", "zoom"
  ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);

  var fontProperties_ = [
    "font-family", "src", "unicode-range", "font-variant", "font-feature-settings",
    "font-stretch", "font-weight", "font-style"
  ], fontProperties = keySet(fontProperties_);

  var counterDescriptors_ = [
    "additive-symbols", "fallback", "negative", "pad", "prefix", "range",
    "speak-as", "suffix", "symbols", "system"
  ], counterDescriptors = keySet(counterDescriptors_);

  var colorKeywords_ = [
    "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige",
    "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",
    "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue",
    "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod",
    "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen",
    "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen",
    "darkslateblue", "darkslategray", "darkturquoise", "darkviolet",
    "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick",
    "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite",
    "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew",
    "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender",
    "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral",
    "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink",
    "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray",
    "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta",
    "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple",
    "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise",
    "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin",
    "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered",
    "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred",
    "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue",
    "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown",
    "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue",
    "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan",
    "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white",
    "whitesmoke", "yellow", "yellowgreen"
  ], colorKeywords = keySet(colorKeywords_);

  var valueKeywords_ = [
    "above", "absolute", "activeborder", "additive", "activecaption", "afar",
    "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate",
    "always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
    "arabic-indic", "armenian", "asterisks", "attr", "auto", "avoid", "avoid-column", "avoid-page",
    "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary",
    "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
    "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel",
    "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian",
    "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
    "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch",
    "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
    "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse",
    "compact", "condensed", "contain", "content",
    "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop",
    "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
    "decimal-leading-zero", "default", "default-button", "dense", "destination-atop",
    "destination-in", "destination-out", "destination-over", "devanagari", "difference",
    "disc", "discard", "disclosure-closed", "disclosure-open", "document",
    "dot-dash", "dot-dot-dash",
    "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
    "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
    "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
    "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
    "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et",
    "ethiopic-halehame-gez", "ethiopic-halehame-om-et",
    "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et",
    "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig",
    "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed",
    "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes",
    "forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove",
    "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew",
    "help", "hidden", "hide", "higher", "highlight", "highlighttext",
    "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore",
    "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
    "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
    "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert",
    "italic", "japanese-formal", "japanese-informal", "justify", "kannada",
    "katakana", "katakana-iroha", "keep-all", "khmer",
    "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal",
    "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten",
    "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem",
    "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
    "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
    "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d",
    "media-controls-background", "media-current-time-display",
    "media-fullscreen-button", "media-mute-button", "media-play-button",
    "media-return-to-realtime-button", "media-rewind-button",
    "media-seek-back-button", "media-seek-forward-button", "media-slider",
    "media-sliderthumb", "media-time-remaining-display", "media-volume-slider",
    "media-volume-slider-container", "media-volume-sliderthumb", "medium",
    "menu", "menulist", "menulist-button", "menulist-text",
    "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic",
    "mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize",
    "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
    "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
    "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote",
    "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset",
    "outside", "outside-shape", "overlay", "overline", "padding", "padding-box",
    "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter",
    "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d",
    "progress", "push-button", "radial-gradient", "radio", "read-only",
    "read-write", "read-write-plaintext-only", "rectangle", "region",
    "relative", "repeat", "repeating-linear-gradient",
    "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse",
    "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY",
    "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running",
    "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",
    "scroll", "scrollbar", "se-resize", "searchfield",
    "searchfield-cancel-button", "searchfield-decoration",
    "searchfield-results-button", "searchfield-results-decoration",
    "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama",
    "simp-chinese-formal", "simp-chinese-informal", "single",
    "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal",
    "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
    "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali",
    "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square",
    "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub",
    "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table",
    "table-caption", "table-cell", "table-column", "table-column-group",
    "table-footer-group", "table-header-group", "table-row", "table-row-group",
    "tamil",
    "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai",
    "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight",
    "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er",
    "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top",
    "trad-chinese-formal", "trad-chinese-informal",
    "translate", "translate3d", "translateX", "translateY", "translateZ",
    "transparent", "ultra-condensed", "ultra-expanded", "underline", "up",
    "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal",
    "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url",
    "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted",
    "visibleStroke", "visual", "w-resize", "wait", "wave", "wider",
    "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor",
    "xx-large", "xx-small"
  ], valueKeywords = keySet(valueKeywords_);

  var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)
    .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)
    .concat(valueKeywords_);
  CodeMirror.registerHelper("hintWords", "css", allWords);

  function tokenCComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == "/") {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ["comment", "comment"];
  }

  CodeMirror.defineMIME("text/css", {
    documentTypes: documentTypes,
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    mediaValueKeywords: mediaValueKeywords,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    fontProperties: fontProperties,
    counterDescriptors: counterDescriptors,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    tokenHooks: {
      "/": function(stream, state) {
        if (!stream.eat("*")) return false;
        state.tokenize = tokenCComment;
        return tokenCComment(stream, state);
      }
    },
    name: "css"
  });

  CodeMirror.defineMIME("text/x-scss", {
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    mediaValueKeywords: mediaValueKeywords,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    fontProperties: fontProperties,
    allowNested: true,
    tokenHooks: {
      "/": function(stream, state) {
        if (stream.eat("/")) {
          stream.skipToEnd();
          return ["comment", "comment"];
        } else if (stream.eat("*")) {
          state.tokenize = tokenCComment;
          return tokenCComment(stream, state);
        } else {
          return ["operator", "operator"];
        }
      },
      ":": function(stream) {
        if (stream.match(/\s*\{/))
          return [null, "{"];
        return false;
      },
      "$": function(stream) {
        stream.match(/^[\w-]+/);
        if (stream.match(/^\s*:/, false))
          return ["variable-2", "variable-definition"];
        return ["variable-2", "variable"];
      },
      "#": function(stream) {
        if (!stream.eat("{")) return false;
        return [null, "interpolation"];
      }
    },
    name: "css",
    helperType: "scss"
  });

  CodeMirror.defineMIME("text/x-less", {
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    mediaValueKeywords: mediaValueKeywords,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    fontProperties: fontProperties,
    allowNested: true,
    tokenHooks: {
      "/": function(stream, state) {
        if (stream.eat("/")) {
          stream.skipToEnd();
          return ["comment", "comment"];
        } else if (stream.eat("*")) {
          state.tokenize = tokenCComment;
          return tokenCComment(stream, state);
        } else {
          return ["operator", "operator"];
        }
      },
      "@": function(stream) {
        if (stream.eat("{")) return [null, "interpolation"];
        if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false;
        stream.eatWhile(/[\w\\\-]/);
        if (stream.match(/^\s*:/, false))
          return ["variable-2", "variable-definition"];
        return ["variable-2", "variable"];
      },
      "&": function() {
        return ["atom", "atom"];
      }
    },
    name: "css",
    helperType: "less"
  });

  CodeMirror.defineMIME("text/x-gss", {
    documentTypes: documentTypes,
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    fontProperties: fontProperties,
    counterDescriptors: counterDescriptors,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    supportsAtComponent: true,
    tokenHooks: {
      "/": function(stream, state) {
        if (!stream.eat("*")) return false;
        state.tokenize = tokenCComment;
        return tokenCComment(stream, state);
      }
    },
    name: "css",
    helperType: "gss"
  });

});
lib/codemirror/mode/css/scss_test.js000064400000006064147361034410013554 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); }

  MT('url_with_quotation',
    "[tag foo] { [property background]:[atom url]([string test.jpg]) }");

  MT('url_with_double_quotes',
    "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }");

  MT('url_with_single_quotes',
    "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }");

  MT('string',
    "[def @import] [string \"compass/css3\"]");

  MT('important_keyword',
    "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }");

  MT('variable',
    "[variable-2 $blue]:[atom #333]");

  MT('variable_as_attribute',
    "[tag foo] { [property color]:[variable-2 $blue] }");

  MT('numbers',
    "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }");

  MT('number_percentage',
    "[tag foo] { [property width]:[number 80%] }");

  MT('selector',
    "[builtin #hello][qualifier .world]{}");

  MT('singleline_comment',
    "[comment // this is a comment]");

  MT('multiline_comment',
    "[comment /*foobar*/]");

  MT('attribute_with_hyphen',
    "[tag foo] { [property font-size]:[number 10px] }");

  MT('string_after_attribute',
    "[tag foo] { [property content]:[string \"::\"] }");

  MT('directives',
    "[def @include] [qualifier .mixin]");

  MT('basic_structure',
    "[tag p] { [property background]:[keyword red]; }");

  MT('nested_structure',
    "[tag p] { [tag a] { [property color]:[keyword red]; } }");

  MT('mixin',
    "[def @mixin] [tag table-base] {}");

  MT('number_without_semicolon',
    "[tag p] {[property width]:[number 12]}",
    "[tag a] {[property color]:[keyword red];}");

  MT('atom_in_nested_block',
    "[tag p] { [tag a] { [property color]:[atom #000]; } }");

  MT('interpolation_in_property',
    "[tag foo] { #{[variable-2 $hello]}:[number 2]; }");

  MT('interpolation_in_selector',
    "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }");

  MT('interpolation_error',
    "[tag foo]#{[variable foo]} { [property color]:[atom #000]; }");

  MT("divide_operator",
    "[tag foo] { [property width]:[number 4] [operator /] [number 2] }");

  MT('nested_structure_with_id_selector',
    "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }");

  MT('indent_mixin',
     "[def @mixin] [tag container] (",
     "  [variable-2 $a]: [number 10],",
     "  [variable-2 $b]: [number 10])",
     "{}");

  MT('indent_nested',
     "[tag foo] {",
     "  [tag bar] {",
     "  }",
     "}");

  MT('indent_parentheses',
     "[tag foo] {",
     "  [property color]: [atom darken]([variable-2 $blue],",
     "    [number 9%]);",
     "}");

  MT('indent_vardef',
     "[variable-2 $name]:",
     "  [string 'val'];",
     "[tag tag] {",
     "  [tag inner] {",
     "    [property margin]: [number 3px];",
     "  }",
     "}");
})();
lib/codemirror/mode/css/less.html000064400000007742147361034410013044 0ustar00<!doctype html>

<title>CodeMirror: LESS mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="css.js"></script>
<style>.CodeMirror {border: 1px solid #ddd; line-height: 1.2;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">LESS</a>
  </ul>
</div>

<article>
<h2>LESS mode</h2>
<form><textarea id="code" name="code">@media screen and (device-aspect-ratio: 16/9) { … }
@media screen and (device-aspect-ratio: 1280/720) { … }
@media screen and (device-aspect-ratio: 2560/1440) { … }

html:lang(fr-be)

tr:nth-child(2n+1) /* represents every odd row of an HTML table */

img:nth-of-type(2n+1) { float: right; }
img:nth-of-type(2n) { float: left; }

body > h2:not(:first-of-type):not(:last-of-type)

html|*:not(:link):not(:visited)
*|*:not(:hover)
p::first-line { text-transform: uppercase }

@namespace foo url(http://www.example.com);
foo|h1 { color: blue }  /* first rule */

span[hello="Ocean"][goodbye="Land"]

E[foo]{
  padding:65px;
}

input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
  -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
}
button::-moz-focus-inner,
input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
  padding: 0;
  border: 0;
}
.btn {
  // reset here as of 2.0.3 due to Recess property order
  border-color: #ccc;
  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
}
fieldset span button, fieldset span input[type="file"] {
  font-size:12px;
	font-family:Arial, Helvetica, sans-serif;
}

.rounded-corners (@radius: 5px) {
  border-radius: @radius;
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
}

@import url("something.css");

@light-blue:   hsl(190, 50%, 65%);

#menu {
  position: absolute;
  width: 100%;
  z-index: 3;
  clear: both;
  display: block;
  background-color: @blue;
  height: 42px;
  border-top: 2px solid lighten(@alpha-blue, 20%);
  border-bottom: 2px solid darken(@alpha-blue, 25%);
  .box-shadow(0, 1px, 8px, 0.6);
  -moz-box-shadow: 0 0 0 #000; // Because firefox sucks.

  &.docked {
    background-color: hsla(210, 60%, 40%, 0.4);
  }
  &:hover {
    background-color: @blue;
  }

  #dropdown {
    margin: 0 0 0 117px;
    padding: 0;
    padding-top: 5px;
    display: none;
    width: 190px;
    border-top: 2px solid @medium;
    color: @highlight;
    border: 2px solid darken(@medium, 25%);
    border-left-color: darken(@medium, 15%);
    border-right-color: darken(@medium, 15%);
    border-top-width: 0;
    background-color: darken(@medium, 10%);
    ul {
      padding: 0px;  
    }
    li {
      font-size: 14px;
      display: block;
      text-align: left;
      padding: 0;
      border: 0;
      a {
        display: block;
        padding: 0px 15px;  
        text-decoration: none;
        color: white;  
        &:hover {
          background-color: darken(@medium, 15%);
          text-decoration: none;
        }
      }
    }
    .border-radius(5px, bottom);
    .box-shadow(0, 6px, 8px, 0.5);
  }
}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers : true,
        matchBrackets : true,
        mode: "text/x-less"
      });
    </script>

    <p>The LESS mode is a sub-mode of the <a href="index.html">CSS mode</a> (defined in <code>css.js</code>).</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#less_*">normal</a>,  <a href="../../test/index.html#verbose,less_*">verbose</a>.</p>
  </article>
lib/codemirror/mode/css/scss.html000064400000005266147361034410013050 0ustar00<!doctype html>

<title>CodeMirror: SCSS mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="css.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">SCSS</a>
  </ul>
</div>

<article>
<h2>SCSS mode</h2>
<form><textarea id="code" name="code">
/* Some example SCSS */

@import "compass/css3";
$variable: #333;

$blue: #3bbfce;
$margin: 16px;

.content-navigation {
  #nested {
    background-color: black;
  }
  border-color: $blue;
  color:
    darken($blue, 9%);
}

.border {
  padding: $margin / 2;
  margin: $margin / 2;
  border-color: $blue;
}

@mixin table-base {
  th {
    text-align: center;
    font-weight: bold;
  }
  td, th {padding: 2px}
}

table.hl {
  margin: 2em 0;
  td.ln {
    text-align: right;
  }
}

li {
  font: {
    family: serif;
    weight: bold;
    size: 1.2em;
  }
}

@mixin left($dist) {
  float: left;
  margin-left: $dist;
}

#data {
  @include left(10px);
  @include table-base;
}

.source {
  @include flow-into(target);
  border: 10px solid green;
  margin: 20px;
  width: 200px; }

.new-container {
  @include flow-from(target);
  border: 10px solid red;
  margin: 20px;
  width: 200px; }

body {
  margin: 0;
  padding: 3em 6em;
  font-family: tahoma, arial, sans-serif;
  color: #000;
}

@mixin yellow() {
  background: yellow;
}

.big {
  font-size: 14px;
}

.nested {
  @include border-radius(3px);
  @extend .big;
  p {
    background: whitesmoke;
    a {
      color: red;
    }
  }
}

#navigation a {
  font-weight: bold;
  text-decoration: none !important;
}

h1 {
  font-size: 2.5em;
}

h2 {
  font-size: 1.7em;
}

h1:before, h2:before {
  content: "::";
}

code {
  font-family: courier, monospace;
  font-size: 80%;
  color: #418A8A;
}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-scss"
      });
    </script>

    <p>The SCSS mode is a sub-mode of the <a href="index.html">CSS mode</a> (defined in <code>css.js</code>).</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#scss_*">normal</a>,  <a href="../../test/index.html#verbose,scss_*">verbose</a>.</p>

  </article>
lib/codemirror/mode/css/index.html000064400000003570147361034410013200 0ustar00<!doctype html>

<title>CodeMirror: CSS mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
<script src="../../lib/codemirror.js"></script>
<script src="css.js"></script>
<script src="../../addon/hint/show-hint.js"></script>
<script src="../../addon/hint/css-hint.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">CSS</a>
  </ul>
</div>

<article>
<h2>CSS mode</h2>
<form><textarea id="code" name="code">
/* Some example CSS */

@import url("something.css");

body {
  margin: 0;
  padding: 3em 6em;
  font-family: tahoma, arial, sans-serif;
  color: #000;
}

#navigation a {
  font-weight: bold;
  text-decoration: none !important;
}

h1 {
  font-size: 2.5em;
}

h2 {
  font-size: 1.7em;
}

h1:before, h2:before {
  content: "::";
}

code {
  font-family: courier, monospace;
  font-size: 80%;
  color: #418A8A;
}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        extraKeys: {"Ctrl-Space": "autocomplete"},
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/css</code>, <code>text/x-scss</code> (<a href="scss.html">demo</a>), <code>text/x-less</code> (<a href="less.html">demo</a>).</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#css_*">normal</a>,  <a href="../../test/index.html#verbose,css_*">verbose</a>.</p>

  </article>
lib/codemirror/mode/css/gss.html000064400000005334147361034410012665 0ustar00<!doctype html>

<title>CodeMirror: Closure Stylesheets (GSS) mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
<script src="../../lib/codemirror.js"></script>
<script src="css.js"></script>
<script src="../../addon/hint/show-hint.js"></script>
<script src="../../addon/hint/css-hint.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Closure Stylesheets (GSS)</a>
  </ul>
</div>

<article>
<h2>Closure Stylesheets (GSS) mode</h2>
<form><textarea id="code" name="code">
/* Some example Closure Stylesheets */

@provide 'some.styles';

@require 'other.styles';

@component {

@def FONT_FAMILY           "Times New Roman", Georgia, Serif;
@def FONT_SIZE_NORMAL      15px;
@def FONT_NORMAL           normal FONT_SIZE_NORMAL FONT_FAMILY;

@def BG_COLOR              rgb(235, 239, 249);

@def DIALOG_BORDER_COLOR   rgb(107, 144, 218);
@def DIALOG_BG_COLOR       BG_COLOR;

@def LEFT_HAND_NAV_WIDTH    180px;
@def LEFT_HAND_NAV_PADDING  3px;

@defmixin size(WIDTH, HEIGHT) {
  width: WIDTH;
  height: HEIGHT;
}

body {
  background-color: BG_COLOR;
  margin: 0;
  padding: 3em 6em;
  font: FONT_NORMAL;
  color: #000;
}

#navigation a {
  font-weight: bold;
  text-decoration: none !important;
}

.dialog {
  background-color: DIALOG_BG_COLOR;
  border: 1px solid DIALOG_BORDER_COLOR;
}

.content {
  position: absolute;
  margin-left: add(LEFT_HAND_NAV_PADDING,  /* padding left */
                   LEFT_HAND_NAV_WIDTH,
                   LEFT_HAND_NAV_PADDING); /* padding right */

}

.logo {
  @mixin size(150px, 55px);
  background-image: url('http://www.google.com/images/logo_sm.gif');
}

}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        extraKeys: {"Ctrl-Space": "autocomplete"},
        lineNumbers: true,
        matchBrackets: "text/x-less",
        mode: "text/x-gss"
      });
    </script>

    <p>A mode for <a href="https://github.com/google/closure-stylesheets">Closure Stylesheets</a> (GSS).</p>
    <p><strong>MIME type defined:</strong> <code>text/x-gss</code>.</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#gss_*">normal</a>,  <a href="../../test/index.html#verbose,gss_*">verbose</a>.</p>

  </article>
lib/codemirror/mode/css/less_test.js000064400000003517147361034410013547 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  "use strict";

  var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); }

  MT("variable",
     "[variable-2 @base]: [atom #f04615];",
     "[qualifier .class] {",
     "  [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]",
     "  [property color]: [variable saturate]([variable-2 @base], [number 5%]);",
     "}");

  MT("amp",
     "[qualifier .child], [qualifier .sibling] {",
     "  [qualifier .parent] [atom &] {",
     "    [property color]: [keyword black];",
     "  }",
     "  [atom &] + [atom &] {",
     "    [property color]: [keyword red];",
     "  }",
     "}");

  MT("mixin",
     "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {",
     "  [property color]: [atom darken]([variable-2 @color], [number 10%]);",
     "}",
     "[qualifier .mixin] ([variable light]; [variable-2 @color]) {",
     "  [property color]: [atom lighten]([variable-2 @color], [number 10%]);",
     "}",
     "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {",
     "  [property display]: [atom block];",
     "}",
     "[variable-2 @switch]: [variable light];",
     "[qualifier .class] {",
     "  [qualifier .mixin]([variable-2 @switch]; [atom #888]);",
     "}");

  MT("nest",
     "[qualifier .one] {",
     "  [def @media] ([property width]: [number 400px]) {",
     "    [property font-size]: [number 1.2em];",
     "    [def @media] [attribute print] [keyword and] [property color] {",
     "      [property color]: [keyword blue];",
     "    }",
     "  }",
     "}");


  MT("interpolation", ".@{[variable foo]} { [property font-weight]: [atom bold]; }");
})();
lib/codemirror/mode/css/gss_test.js000064400000000714147361034410013371 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  "use strict";

  var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); }

  MT("atComponent",
     "[def @component] {",
     "[tag foo] {",
     "  [property color]: [keyword black];",
     "}",
     "}");

})();
lib/codemirror/mode/textile/test.js000064400000022335147361034410013406 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({tabSize: 4}, 'textile');
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT('simpleParagraphs',
      'Some text.',
      '',
      'Some more text.');

  /*
   * Phrase Modifiers
   */

  MT('em',
      'foo [em _bar_]');

  MT('emBoogus',
      'code_mirror');

  MT('strong',
      'foo [strong *bar*]');

  MT('strongBogus',
      '3 * 3 = 9');

  MT('italic',
      'foo [em __bar__]');

  MT('italicBogus',
      'code__mirror');

  MT('bold',
      'foo [strong **bar**]');

  MT('boldBogus',
      '3 ** 3 = 27');

  MT('simpleLink',
      '[link "CodeMirror":http://codemirror.net]');

  MT('referenceLink',
      '[link "CodeMirror":code_mirror]',
      'Normal Text.',
      '[link [[code_mirror]]http://codemirror.net]');

  MT('footCite',
      'foo bar[qualifier [[1]]]');

  MT('footCiteBogus',
      'foo bar[[1a2]]');

  MT('special-characters',
          'Registered [tag (r)], ' +
          'Trademark [tag (tm)], and ' +
          'Copyright [tag (c)] 2008');

  MT('cite',
      "A book is [keyword ??The Count of Monte Cristo??] by Dumas.");

  MT('additionAndDeletion',
      'The news networks declared [negative -Al Gore-] ' +
        '[positive +George W. Bush+] the winner in Florida.');

  MT('subAndSup',
      'f(x, n) = log [builtin ~4~] x [builtin ^n^]');

  MT('spanAndCode',
      'A [quote %span element%] and [atom @code element@]');

  MT('spanBogus',
      'Percentage 25% is not a span.');

  MT('citeBogus',
      'Question? is not a citation.');

  MT('codeBogus',
      'user@example.com');

  MT('subBogus',
      '~username');

  MT('supBogus',
      'foo ^ bar');

  MT('deletionBogus',
      '3 - 3 = 0');

  MT('additionBogus',
      '3 + 3 = 6');

  MT('image',
      'An image: [string !http://www.example.com/image.png!]');

  MT('imageWithAltText',
      'An image: [string !http://www.example.com/image.png (Alt Text)!]');

  MT('imageWithUrl',
      'An image: [string !http://www.example.com/image.png!:http://www.example.com/]');

  /*
   * Headers
   */

  MT('h1',
      '[header&header-1 h1. foo]');

  MT('h2',
      '[header&header-2 h2. foo]');

  MT('h3',
      '[header&header-3 h3. foo]');

  MT('h4',
      '[header&header-4 h4. foo]');

  MT('h5',
      '[header&header-5 h5. foo]');

  MT('h6',
      '[header&header-6 h6. foo]');

  MT('h7Bogus',
      'h7. foo');

  MT('multipleHeaders',
      '[header&header-1 h1. Heading 1]',
      '',
      'Some text.',
      '',
      '[header&header-2 h2. Heading 2]',
      '',
      'More text.');

  MT('h1inline',
      '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1  baz]');

  /*
   * Lists
   */

  MT('ul',
      'foo',
      'bar',
      '',
      '[variable-2 * foo]',
      '[variable-2 * bar]');

  MT('ulNoBlank',
      'foo',
      'bar',
      '[variable-2 * foo]',
      '[variable-2 * bar]');

  MT('ol',
      'foo',
      'bar',
      '',
      '[variable-2 # foo]',
      '[variable-2 # bar]');

  MT('olNoBlank',
      'foo',
      'bar',
      '[variable-2 # foo]',
      '[variable-2 # bar]');

  MT('ulFormatting',
      '[variable-2 * ][variable-2&em _foo_][variable-2  bar]',
      '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' +
        '[variable-2&strong *][variable-2  bar]',
      '[variable-2 * ][variable-2&strong *foo*][variable-2  bar]');

  MT('olFormatting',
      '[variable-2 # ][variable-2&em _foo_][variable-2  bar]',
      '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' +
        '[variable-2&strong *][variable-2  bar]',
      '[variable-2 # ][variable-2&strong *foo*][variable-2  bar]');

  MT('ulNested',
      '[variable-2 * foo]',
      '[variable-3 ** bar]',
      '[keyword *** bar]',
      '[variable-2 **** bar]',
      '[variable-3 ** bar]');

  MT('olNested',
      '[variable-2 # foo]',
      '[variable-3 ## bar]',
      '[keyword ### bar]',
      '[variable-2 #### bar]',
      '[variable-3 ## bar]');

  MT('ulNestedWithOl',
      '[variable-2 * foo]',
      '[variable-3 ## bar]',
      '[keyword *** bar]',
      '[variable-2 #### bar]',
      '[variable-3 ** bar]');

  MT('olNestedWithUl',
      '[variable-2 # foo]',
      '[variable-3 ** bar]',
      '[keyword ### bar]',
      '[variable-2 **** bar]',
      '[variable-3 ## bar]');

  MT('definitionList',
      '[number - coffee := Hot ][number&em _and_][number  black]',
      '',
      'Normal text.');

  MT('definitionListSpan',
      '[number - coffee :=]',
      '',
      '[number Hot ][number&em _and_][number  black =:]',
      '',
      'Normal text.');

  MT('boo',
      '[number - dog := woof woof]',
      '[number - cat := meow meow]',
      '[number - whale :=]',
      '[number Whale noises.]',
      '',
      '[number Also, ][number&em _splashing_][number . =:]');

  /*
   * Attributes
   */

  MT('divWithAttribute',
      '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]');

  MT('divWithAttributeAnd2emRightPadding',
      '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]');

  MT('divWithClassAndId',
      '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]');

  MT('paragraphWithCss',
      'p[attribute {color:red;}]. foo bar');

  MT('paragraphNestedStyles',
      'p. [strong *foo ][strong&em _bar_][strong *]');

  MT('paragraphWithLanguage',
      'p[attribute [[fr]]]. Parlez-vous français?');

  MT('paragraphLeftAlign',
      'p[attribute <]. Left');

  MT('paragraphRightAlign',
      'p[attribute >]. Right');

  MT('paragraphRightAlign',
      'p[attribute =]. Center');

  MT('paragraphJustified',
      'p[attribute <>]. Justified');

  MT('paragraphWithLeftIndent1em',
      'p[attribute (]. Left');

  MT('paragraphWithRightIndent1em',
      'p[attribute )]. Right');

  MT('paragraphWithLeftIndent2em',
      'p[attribute ((]. Left');

  MT('paragraphWithRightIndent2em',
      'p[attribute ))]. Right');

  MT('paragraphWithLeftIndent3emRightIndent2em',
      'p[attribute ((())]. Right');

  MT('divFormatting',
      '[punctuation div. ][punctuation&strong *foo ]' +
        '[punctuation&strong&em _bar_][punctuation&strong *]');

  MT('phraseModifierAttributes',
      'p[attribute (my-class)]. This is a paragraph that has a class and' +
      ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' +
      ' has an id.');

  MT('linkWithClass',
      '[link "(my-class). This is a link with class":http://redcloth.org]');

  /*
   * Layouts
   */

  MT('paragraphLayouts',
      'p. This is one paragraph.',
      '',
      'p. This is another.');

  MT('div',
      '[punctuation div. foo bar]');

  MT('pre',
      '[operator pre. Text]');

  MT('bq.',
      '[bracket bq. foo bar]',
      '',
      'Normal text.');

  MT('footnote',
      '[variable fn123. foo ][variable&strong *bar*]');

  /*
   * Spanning Layouts
   */

  MT('bq..ThenParagraph',
      '[bracket bq.. foo bar]',
      '',
      '[bracket More quote.]',
      'p. Normal Text');

  MT('bq..ThenH1',
      '[bracket bq.. foo bar]',
      '',
      '[bracket More quote.]',
      '[header&header-1 h1. Header Text]');

  MT('bc..ThenParagraph',
      '[atom bc.. # Some ruby code]',
      '[atom obj = {foo: :bar}]',
      '[atom puts obj]',
      '',
      '[atom obj[[:love]] = "*love*"]',
      '[atom puts obj.love.upcase]',
      '',
      'p. Normal text.');

  MT('fn1..ThenParagraph',
      '[variable fn1.. foo bar]',
      '',
      '[variable More.]',
      'p. Normal Text');

  MT('pre..ThenParagraph',
      '[operator pre.. foo bar]',
      '',
      '[operator More.]',
      'p. Normal Text');

  /*
   * Tables
   */

  MT('table',
      '[variable-3&operator |_. name |_. age|]',
      '[variable-3 |][variable-3&strong *Walter*][variable-3 |   5  |]',
      '[variable-3 |Florence|   6  |]',
      '',
      'p. Normal text.');

  MT('tableWithAttributes',
      '[variable-3&operator |_. name |_. age|]',
      '[variable-3 |][variable-3&attribute /2.][variable-3  Jim |]',
      '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3  Sam |]');

  /*
   * HTML
   */

  MT('html',
      '[comment <div id="wrapper">]',
      '[comment <section id="introduction">]',
      '',
      '[header&header-1 h1. Welcome]',
      '',
      '[variable-2 * Item one]',
      '[variable-2 * Item two]',
      '',
      '[comment <a href="http://example.com">Example</a>]',
      '',
      '[comment </section>]',
      '[comment </div>]');

  MT('inlineHtml',
      'I can use HTML directly in my [comment <span class="youbetcha">Textile</span>].');

  /*
   * No-Textile
   */

  MT('notextile',
    '[string-2 notextile. *No* formatting]');

  MT('notextileInline',
      'Use [string-2 ==*asterisks*==] for [strong *strong*] text.');

  MT('notextileWithPre',
      '[operator pre. *No* formatting]');

  MT('notextileWithSpanningPre',
      '[operator pre.. *No* formatting]',
      '',
      '[operator *No* formatting]');

  /* Only toggling phrases between non-word chars. */

  MT('phrase-in-word',
     'foo_bar_baz');

  MT('phrase-non-word',
     '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]');

  MT('phrase-lone-dash',
     'foo - bar - baz');
})();
lib/codemirror/mode/textile/index.html000064400000010373147361034410014065 0ustar00<!doctype html>

<title>CodeMirror: Textile mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="textile.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/marijnh/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class="active" href="#">Textile</a>
  </ul>
</div>

<article>
    <h2>Textile mode</h2>
    <form><textarea id="code" name="code">
h1. Textile Mode

A paragraph without formatting.

p. A simple Paragraph.


h2. Phrase Modifiers

Here are some simple phrase modifiers: *strong*, _emphasis_, **bold**, and __italic__.

A ??citation??, -deleted text-, +inserted text+, some ^superscript^, and some ~subscript~.

A %span element% and @code element@

A "link":http://example.com, a "link with (alt text)":urlAlias

[urlAlias]http://example.com/

An image: !http://example.com/image.png! and an image with a link: !http://example.com/image.png!:http://example.com

A sentence with a footnote.[123]

fn123. The footnote is defined here.

Registered(r), Trademark(tm), and Copyright(c)


h2. Headers

h1. Top level
h2. Second level
h3. Third level
h4. Fourth level
h5. Fifth level
h6. Lowest level


h2.  Lists

* An unordered list
** foo bar
*** foo bar
**** foo bar
** foo bar

# An ordered list
## foo bar
### foo bar
#### foo bar
## foo bar

- definition list := description
- another item    := foo bar
- spanning ines   :=
                     foo bar

                     foo bar =:


h2. Attributes

Layouts and phrase modifiers can be modified with various kinds of attributes: alignment, CSS ID, CSS class names, language, padding, and CSS styles.

h3. Alignment

div<. left align
div>. right align

h3. CSS ID and class name

You are a %(my-id#my-classname) rad% person.

h3. Language

p[en_CA]. Strange weather, eh?

h3. Horizontal Padding

p(())). 2em left padding, 3em right padding

h3. CSS styling

p{background: red}. Fire!


h2. Table

|_.              Header 1               |_.      Header 2        |
|{background:#ddd}. Cell with background|         Normal         |
|\2.         Cell spanning 2 columns                             |
|/2.         Cell spanning 2 rows       |(cell-class). one       |
|                                                two             |
|>.                  Right aligned cell |<. Left aligned cell    |


h3. A table with attributes:

table(#prices).
|Adults|$5|
|Children|$2|


h2. Code blocks

bc.
function factorial(n) {
    if (n === 0) {
        return 1;
    }
    return n * factorial(n - 1);
}

pre..
                ,,,,,,
            o#'9MMHb':'-,o,
         .oH":HH$' "' ' -*R&o,
        dMMM*""'`'      .oM"HM?.
       ,MMM'          "HLbd< ?&H\
      .:MH ."\          ` MM  MM&b
     . "*H    -        &MMMMMMMMMH:
     .    dboo        MMMMMMMMMMMM.
     .   dMMMMMMb      *MMMMMMMMMP.
     .    MMMMMMMP        *MMMMMP .
          `#MMMMM           MM6P ,
       '    `MMMP"           HM*`,
        '    :MM             .- ,
         '.   `#?..  .       ..'
            -.   .         .-
              ''-.oo,oo.-''

\. _(9>
 \==_)
  -'=

h2. Temporarily disabling textile markup

notextile. Don't __touch this!__

Surround text with double-equals to disable textile inline. Example: Use ==*asterisks*== for *strong* text.


h2. HTML

Some block layouts are simply textile versions of HTML tags with the same name, like @div@, @pre@, and @p@. HTML tags can also exist on their own line:

<section>
  <h1>Title</h1>
  <p>Hello!</p>
</section>

</textarea></form>
    <script>
        var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
            lineNumbers: true,
            mode: "text/x-textile"
        });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-textile</code>.</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#textile_*">normal</a>,  <a href="../../test/index.html#verbose,textile_*">verbose</a>.</p>

</article>
lib/codemirror/mode/textile/textile.js000064400000033022147361034410014100 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") { // CommonJS
    mod(require("../../lib/codemirror"));
  } else if (typeof define == "function" && define.amd) { // AMD
    define(["../../lib/codemirror"], mod);
  } else { // Plain browser env
    mod(CodeMirror);
  }
})(function(CodeMirror) {
  "use strict";

  var TOKEN_STYLES = {
    addition: "positive",
    attributes: "attribute",
    bold: "strong",
    cite: "keyword",
    code: "atom",
    definitionList: "number",
    deletion: "negative",
    div: "punctuation",
    em: "em",
    footnote: "variable",
    footCite: "qualifier",
    header: "header",
    html: "comment",
    image: "string",
    italic: "em",
    link: "link",
    linkDefinition: "link",
    list1: "variable-2",
    list2: "variable-3",
    list3: "keyword",
    notextile: "string-2",
    pre: "operator",
    p: "property",
    quote: "bracket",
    span: "quote",
    specialChar: "tag",
    strong: "strong",
    sub: "builtin",
    sup: "builtin",
    table: "variable-3",
    tableHeading: "operator"
  };

  function startNewLine(stream, state) {
    state.mode = Modes.newLayout;
    state.tableHeading = false;

    if (state.layoutType === "definitionList" && state.spanningLayout &&
        stream.match(RE("definitionListEnd"), false))
      state.spanningLayout = false;
  }

  function handlePhraseModifier(stream, state, ch) {
    if (ch === "_") {
      if (stream.eat("_"))
        return togglePhraseModifier(stream, state, "italic", /__/, 2);
      else
        return togglePhraseModifier(stream, state, "em", /_/, 1);
    }

    if (ch === "*") {
      if (stream.eat("*")) {
        return togglePhraseModifier(stream, state, "bold", /\*\*/, 2);
      }
      return togglePhraseModifier(stream, state, "strong", /\*/, 1);
    }

    if (ch === "[") {
      if (stream.match(/\d+\]/)) state.footCite = true;
      return tokenStyles(state);
    }

    if (ch === "(") {
      var spec = stream.match(/^(r|tm|c)\)/);
      if (spec)
        return tokenStylesWith(state, TOKEN_STYLES.specialChar);
    }

    if (ch === "<" && stream.match(/(\w+)[^>]+>[^<]+<\/\1>/))
      return tokenStylesWith(state, TOKEN_STYLES.html);

    if (ch === "?" && stream.eat("?"))
      return togglePhraseModifier(stream, state, "cite", /\?\?/, 2);

    if (ch === "=" && stream.eat("="))
      return togglePhraseModifier(stream, state, "notextile", /==/, 2);

    if (ch === "-" && !stream.eat("-"))
      return togglePhraseModifier(stream, state, "deletion", /-/, 1);

    if (ch === "+")
      return togglePhraseModifier(stream, state, "addition", /\+/, 1);

    if (ch === "~")
      return togglePhraseModifier(stream, state, "sub", /~/, 1);

    if (ch === "^")
      return togglePhraseModifier(stream, state, "sup", /\^/, 1);

    if (ch === "%")
      return togglePhraseModifier(stream, state, "span", /%/, 1);

    if (ch === "@")
      return togglePhraseModifier(stream, state, "code", /@/, 1);

    if (ch === "!") {
      var type = togglePhraseModifier(stream, state, "image", /(?:\([^\)]+\))?!/, 1);
      stream.match(/^:\S+/); // optional Url portion
      return type;
    }
    return tokenStyles(state);
  }

  function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) {
    var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null;
    var charAfter = stream.peek();
    if (state[phraseModifier]) {
      if ((!charAfter || /\W/.test(charAfter)) && charBefore && /\S/.test(charBefore)) {
        var type = tokenStyles(state);
        state[phraseModifier] = false;
        return type;
      }
    } else if ((!charBefore || /\W/.test(charBefore)) && charAfter && /\S/.test(charAfter) &&
               stream.match(new RegExp("^.*\\S" + closeRE.source + "(?:\\W|$)"), false)) {
      state[phraseModifier] = true;
      state.mode = Modes.attributes;
    }
    return tokenStyles(state);
  };

  function tokenStyles(state) {
    var disabled = textileDisabled(state);
    if (disabled) return disabled;

    var styles = [];
    if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]);

    styles = styles.concat(activeStyles(
      state, "addition", "bold", "cite", "code", "deletion", "em", "footCite",
      "image", "italic", "link", "span", "strong", "sub", "sup", "table", "tableHeading"));

    if (state.layoutType === "header")
      styles.push(TOKEN_STYLES.header + "-" + state.header);

    return styles.length ? styles.join(" ") : null;
  }

  function textileDisabled(state) {
    var type = state.layoutType;

    switch(type) {
    case "notextile":
    case "code":
    case "pre":
      return TOKEN_STYLES[type];
    default:
      if (state.notextile)
        return TOKEN_STYLES.notextile + (type ? (" " + TOKEN_STYLES[type]) : "");
      return null;
    }
  }

  function tokenStylesWith(state, extraStyles) {
    var disabled = textileDisabled(state);
    if (disabled) return disabled;

    var type = tokenStyles(state);
    if (extraStyles)
      return type ? (type + " " + extraStyles) : extraStyles;
    else
      return type;
  }

  function activeStyles(state) {
    var styles = [];
    for (var i = 1; i < arguments.length; ++i) {
      if (state[arguments[i]])
        styles.push(TOKEN_STYLES[arguments[i]]);
    }
    return styles;
  }

  function blankLine(state) {
    var spanningLayout = state.spanningLayout, type = state.layoutType;

    for (var key in state) if (state.hasOwnProperty(key))
      delete state[key];

    state.mode = Modes.newLayout;
    if (spanningLayout) {
      state.layoutType = type;
      state.spanningLayout = true;
    }
  }

  var REs = {
    cache: {},
    single: {
      bc: "bc",
      bq: "bq",
      definitionList: /- [^(?::=)]+:=+/,
      definitionListEnd: /.*=:\s*$/,
      div: "div",
      drawTable: /\|.*\|/,
      foot: /fn\d+/,
      header: /h[1-6]/,
      html: /\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/,
      link: /[^"]+":\S/,
      linkDefinition: /\[[^\s\]]+\]\S+/,
      list: /(?:#+|\*+)/,
      notextile: "notextile",
      para: "p",
      pre: "pre",
      table: "table",
      tableCellAttributes: /[\/\\]\d+/,
      tableHeading: /\|_\./,
      tableText: /[^"_\*\[\(\?\+~\^%@|-]+/,
      text: /[^!"_=\*\[\(<\?\+~\^%@-]+/
    },
    attributes: {
      align: /(?:<>|<|>|=)/,
      selector: /\([^\(][^\)]+\)/,
      lang: /\[[^\[\]]+\]/,
      pad: /(?:\(+|\)+){1,2}/,
      css: /\{[^\}]+\}/
    },
    createRe: function(name) {
      switch (name) {
      case "drawTable":
        return REs.makeRe("^", REs.single.drawTable, "$");
      case "html":
        return REs.makeRe("^", REs.single.html, "(?:", REs.single.html, ")*", "$");
      case "linkDefinition":
        return REs.makeRe("^", REs.single.linkDefinition, "$");
      case "listLayout":
        return REs.makeRe("^", REs.single.list, RE("allAttributes"), "*\\s+");
      case "tableCellAttributes":
        return REs.makeRe("^", REs.choiceRe(REs.single.tableCellAttributes,
                                            RE("allAttributes")), "+\\.");
      case "type":
        return REs.makeRe("^", RE("allTypes"));
      case "typeLayout":
        return REs.makeRe("^", RE("allTypes"), RE("allAttributes"),
                          "*\\.\\.?", "(\\s+|$)");
      case "attributes":
        return REs.makeRe("^", RE("allAttributes"), "+");

      case "allTypes":
        return REs.choiceRe(REs.single.div, REs.single.foot,
                            REs.single.header, REs.single.bc, REs.single.bq,
                            REs.single.notextile, REs.single.pre, REs.single.table,
                            REs.single.para);

      case "allAttributes":
        return REs.choiceRe(REs.attributes.selector, REs.attributes.css,
                            REs.attributes.lang, REs.attributes.align, REs.attributes.pad);

      default:
        return REs.makeRe("^", REs.single[name]);
      }
    },
    makeRe: function() {
      var pattern = "";
      for (var i = 0; i < arguments.length; ++i) {
        var arg = arguments[i];
        pattern += (typeof arg === "string") ? arg : arg.source;
      }
      return new RegExp(pattern);
    },
    choiceRe: function() {
      var parts = [arguments[0]];
      for (var i = 1; i < arguments.length; ++i) {
        parts[i * 2 - 1] = "|";
        parts[i * 2] = arguments[i];
      }

      parts.unshift("(?:");
      parts.push(")");
      return REs.makeRe.apply(null, parts);
    }
  };

  function RE(name) {
    return (REs.cache[name] || (REs.cache[name] = REs.createRe(name)));
  }

  var Modes = {
    newLayout: function(stream, state) {
      if (stream.match(RE("typeLayout"), false)) {
        state.spanningLayout = false;
        return (state.mode = Modes.blockType)(stream, state);
      }
      var newMode;
      if (!textileDisabled(state)) {
        if (stream.match(RE("listLayout"), false))
          newMode = Modes.list;
        else if (stream.match(RE("drawTable"), false))
          newMode = Modes.table;
        else if (stream.match(RE("linkDefinition"), false))
          newMode = Modes.linkDefinition;
        else if (stream.match(RE("definitionList")))
          newMode = Modes.definitionList;
        else if (stream.match(RE("html"), false))
          newMode = Modes.html;
      }
      return (state.mode = (newMode || Modes.text))(stream, state);
    },

    blockType: function(stream, state) {
      var match, type;
      state.layoutType = null;

      if (match = stream.match(RE("type")))
        type = match[0];
      else
        return (state.mode = Modes.text)(stream, state);

      if (match = type.match(RE("header"))) {
        state.layoutType = "header";
        state.header = parseInt(match[0][1]);
      } else if (type.match(RE("bq"))) {
        state.layoutType = "quote";
      } else if (type.match(RE("bc"))) {
        state.layoutType = "code";
      } else if (type.match(RE("foot"))) {
        state.layoutType = "footnote";
      } else if (type.match(RE("notextile"))) {
        state.layoutType = "notextile";
      } else if (type.match(RE("pre"))) {
        state.layoutType = "pre";
      } else if (type.match(RE("div"))) {
        state.layoutType = "div";
      } else if (type.match(RE("table"))) {
        state.layoutType = "table";
      }

      state.mode = Modes.attributes;
      return tokenStyles(state);
    },

    text: function(stream, state) {
      if (stream.match(RE("text"))) return tokenStyles(state);

      var ch = stream.next();
      if (ch === '"')
        return (state.mode = Modes.link)(stream, state);
      return handlePhraseModifier(stream, state, ch);
    },

    attributes: function(stream, state) {
      state.mode = Modes.layoutLength;

      if (stream.match(RE("attributes")))
        return tokenStylesWith(state, TOKEN_STYLES.attributes);
      else
        return tokenStyles(state);
    },

    layoutLength: function(stream, state) {
      if (stream.eat(".") && stream.eat("."))
        state.spanningLayout = true;

      state.mode = Modes.text;
      return tokenStyles(state);
    },

    list: function(stream, state) {
      var match = stream.match(RE("list"));
      state.listDepth = match[0].length;
      var listMod = (state.listDepth - 1) % 3;
      if (!listMod)
        state.layoutType = "list1";
      else if (listMod === 1)
        state.layoutType = "list2";
      else
        state.layoutType = "list3";

      state.mode = Modes.attributes;
      return tokenStyles(state);
    },

    link: function(stream, state) {
      state.mode = Modes.text;
      if (stream.match(RE("link"))) {
        stream.match(/\S+/);
        return tokenStylesWith(state, TOKEN_STYLES.link);
      }
      return tokenStyles(state);
    },

    linkDefinition: function(stream, state) {
      stream.skipToEnd();
      return tokenStylesWith(state, TOKEN_STYLES.linkDefinition);
    },

    definitionList: function(stream, state) {
      stream.match(RE("definitionList"));

      state.layoutType = "definitionList";

      if (stream.match(/\s*$/))
        state.spanningLayout = true;
      else
        state.mode = Modes.attributes;

      return tokenStyles(state);
    },

    html: function(stream, state) {
      stream.skipToEnd();
      return tokenStylesWith(state, TOKEN_STYLES.html);
    },

    table: function(stream, state) {
      state.layoutType = "table";
      return (state.mode = Modes.tableCell)(stream, state);
    },

    tableCell: function(stream, state) {
      if (stream.match(RE("tableHeading")))
        state.tableHeading = true;
      else
        stream.eat("|");

      state.mode = Modes.tableCellAttributes;
      return tokenStyles(state);
    },

    tableCellAttributes: function(stream, state) {
      state.mode = Modes.tableText;

      if (stream.match(RE("tableCellAttributes")))
        return tokenStylesWith(state, TOKEN_STYLES.attributes);
      else
        return tokenStyles(state);
    },

    tableText: function(stream, state) {
      if (stream.match(RE("tableText")))
        return tokenStyles(state);

      if (stream.peek() === "|") { // end of cell
        state.mode = Modes.tableCell;
        return tokenStyles(state);
      }
      return handlePhraseModifier(stream, state, stream.next());
    }
  };

  CodeMirror.defineMode("textile", function() {
    return {
      startState: function() {
        return { mode: Modes.newLayout };
      },
      token: function(stream, state) {
        if (stream.sol()) startNewLine(stream, state);
        return state.mode(stream, state);
      },
      blankLine: blankLine
    };
  });

  CodeMirror.defineMIME("text/x-textile", "textile");
});
lib/codemirror/mode/vbscript/index.html000064400000002755147361034410014250 0ustar00<!doctype html>

<title>CodeMirror: VBScript mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="vbscript.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">VBScript</a>
  </ul>
</div>

<article>
<h2>VBScript mode</h2>


<div><textarea id="code" name="code">
' Pete Guhl
' 03-04-2012
'
' Basic VBScript support for codemirror2

Const ForReading = 1, ForWriting = 2, ForAppending = 8

Call Sub020_PostBroadcastToUrbanAirship(strUserName, strPassword, intTransmitID, strResponse)

If Not IsNull(strResponse) AND Len(strResponse) = 0 Then
	boolTransmitOkYN = False
Else
	' WScript.Echo "Oh Happy Day! Oh Happy DAY!"
	boolTransmitOkYN = True
End If
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        indentUnit: 4
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/vbscript</code>.</p>
  </article>
lib/codemirror/mode/vbscript/vbscript.js000064400000032741147361034410014443 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*
For extra ASP classic objects, initialize CodeMirror instance with this option:
    isASP: true

E.G.:
    var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        isASP: true
      });
*/

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("vbscript", function(conf, parserConf) {
    var ERRORCLASS = 'error';

    function wordRegexp(words) {
        return new RegExp("^((" + words.join(")|(") + "))\\b", "i");
    }

    var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]");
    var doubleOperators = new RegExp("^((<>)|(<=)|(>=))");
    var singleDelimiters = new RegExp('^[\\.,]');
    var brakets = new RegExp('^[\\(\\)]');
    var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*");

    var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for'];
    var middleKeywords = ['else','elseif','case'];
    var endKeywords = ['next','loop','wend'];

    var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']);
    var commonkeywords = ['dim', 'redim', 'then',  'until', 'randomize',
                          'byval','byref','new','property', 'exit', 'in',
                          'const','private', 'public',
                          'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me'];

    //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx
    var atomWords = ['true', 'false', 'nothing', 'empty', 'null'];
    //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx
    var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart',
                        'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject',
                        'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left',
                        'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round',
                        'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp',
                        'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year'];

    //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx
    var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare',
                         'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek',
                         'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError',
                         'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2',
                         'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo',
                         'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse',
                         'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray'];
    //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx
    var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp'];
    var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count'];
    var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit'];

    var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application'];
    var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response
                              'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request
                              'contents', 'staticobjects', //application
                              'codepage', 'lcid', 'sessionid', 'timeout', //session
                              'scripttimeout']; //server
    var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response
                           'binaryread', //request
                           'remove', 'removeall', 'lock', 'unlock', //application
                           'abandon', //session
                           'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server

    var knownWords = knownMethods.concat(knownProperties);

    builtinObjsWords = builtinObjsWords.concat(builtinConsts);

    if (conf.isASP){
        builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords);
        knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties);
    };

    var keywords = wordRegexp(commonkeywords);
    var atoms = wordRegexp(atomWords);
    var builtinFuncs = wordRegexp(builtinFuncsWords);
    var builtinObjs = wordRegexp(builtinObjsWords);
    var known = wordRegexp(knownWords);
    var stringPrefixes = '"';

    var opening = wordRegexp(openingKeywords);
    var middle = wordRegexp(middleKeywords);
    var closing = wordRegexp(endKeywords);
    var doubleClosing = wordRegexp(['end']);
    var doOpening = wordRegexp(['do']);
    var noIndentWords = wordRegexp(['on error resume next', 'exit']);
    var comment = wordRegexp(['rem']);


    function indent(_stream, state) {
      state.currentIndent++;
    }

    function dedent(_stream, state) {
      state.currentIndent--;
    }
    // tokenizers
    function tokenBase(stream, state) {
        if (stream.eatSpace()) {
            return 'space';
            //return null;
        }

        var ch = stream.peek();

        // Handle Comments
        if (ch === "'") {
            stream.skipToEnd();
            return 'comment';
        }
        if (stream.match(comment)){
            stream.skipToEnd();
            return 'comment';
        }


        // Handle Number Literals
        if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) {
            var floatLiteral = false;
            // Floats
            if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; }
            else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; }
            else if (stream.match(/^\.\d+/)) { floatLiteral = true; }

            if (floatLiteral) {
                // Float literals may be "imaginary"
                stream.eat(/J/i);
                return 'number';
            }
            // Integers
            var intLiteral = false;
            // Hex
            if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }
            // Octal
            else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }
            // Decimal
            else if (stream.match(/^[1-9]\d*F?/)) {
                // Decimal literals may be "imaginary"
                stream.eat(/J/i);
                // TODO - Can you have imaginary longs?
                intLiteral = true;
            }
            // Zero by itself with no other piece of number.
            else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; }
            if (intLiteral) {
                // Integer literals may be "long"
                stream.eat(/L/i);
                return 'number';
            }
        }

        // Handle Strings
        if (stream.match(stringPrefixes)) {
            state.tokenize = tokenStringFactory(stream.current());
            return state.tokenize(stream, state);
        }

        // Handle operators and Delimiters
        if (stream.match(doubleOperators)
            || stream.match(singleOperators)
            || stream.match(wordOperators)) {
            return 'operator';
        }
        if (stream.match(singleDelimiters)) {
            return null;
        }

        if (stream.match(brakets)) {
            return "bracket";
        }

        if (stream.match(noIndentWords)) {
            state.doInCurrentLine = true;

            return 'keyword';
        }

        if (stream.match(doOpening)) {
            indent(stream,state);
            state.doInCurrentLine = true;

            return 'keyword';
        }
        if (stream.match(opening)) {
            if (! state.doInCurrentLine)
              indent(stream,state);
            else
              state.doInCurrentLine = false;

            return 'keyword';
        }
        if (stream.match(middle)) {
            return 'keyword';
        }


        if (stream.match(doubleClosing)) {
            dedent(stream,state);
            dedent(stream,state);

            return 'keyword';
        }
        if (stream.match(closing)) {
            if (! state.doInCurrentLine)
              dedent(stream,state);
            else
              state.doInCurrentLine = false;

            return 'keyword';
        }

        if (stream.match(keywords)) {
            return 'keyword';
        }

        if (stream.match(atoms)) {
            return 'atom';
        }

        if (stream.match(known)) {
            return 'variable-2';
        }

        if (stream.match(builtinFuncs)) {
            return 'builtin';
        }

        if (stream.match(builtinObjs)){
            return 'variable-2';
        }

        if (stream.match(identifiers)) {
            return 'variable';
        }

        // Handle non-detected items
        stream.next();
        return ERRORCLASS;
    }

    function tokenStringFactory(delimiter) {
        var singleline = delimiter.length == 1;
        var OUTCLASS = 'string';

        return function(stream, state) {
            while (!stream.eol()) {
                stream.eatWhile(/[^'"]/);
                if (stream.match(delimiter)) {
                    state.tokenize = tokenBase;
                    return OUTCLASS;
                } else {
                    stream.eat(/['"]/);
                }
            }
            if (singleline) {
                if (parserConf.singleLineStringErrors) {
                    return ERRORCLASS;
                } else {
                    state.tokenize = tokenBase;
                }
            }
            return OUTCLASS;
        };
    }


    function tokenLexer(stream, state) {
        var style = state.tokenize(stream, state);
        var current = stream.current();

        // Handle '.' connected identifiers
        if (current === '.') {
            style = state.tokenize(stream, state);

            current = stream.current();
            if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) {
                if (style === 'builtin' || style === 'keyword') style='variable';
                if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2';

                return style;
            } else {
                return ERRORCLASS;
            }
        }

        return style;
    }

    var external = {
        electricChars:"dDpPtTfFeE ",
        startState: function() {
            return {
              tokenize: tokenBase,
              lastToken: null,
              currentIndent: 0,
              nextLineIndent: 0,
              doInCurrentLine: false,
              ignoreKeyword: false


          };
        },

        token: function(stream, state) {
            if (stream.sol()) {
              state.currentIndent += state.nextLineIndent;
              state.nextLineIndent = 0;
              state.doInCurrentLine = 0;
            }
            var style = tokenLexer(stream, state);

            state.lastToken = {style:style, content: stream.current()};

            if (style==='space') style=null;

            return style;
        },

        indent: function(state, textAfter) {
            var trueText = textAfter.replace(/^\s+|\s+$/g, '') ;
            if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);
            if(state.currentIndent < 0) return 0;
            return state.currentIndent * conf.indentUnit;
        }

    };
    return external;
});

CodeMirror.defineMIME("text/vbscript", "vbscript");

});
lib/codemirror/mode/gas/gas.js000064400000021266147361034410012277 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("gas", function(_config, parserConfig) {
  'use strict';

  // If an architecture is specified, its initialization function may
  // populate this array with custom parsing functions which will be
  // tried in the event that the standard functions do not find a match.
  var custom = [];

  // The symbol used to start a line comment changes based on the target
  // architecture.
  // If no architecture is pased in "parserConfig" then only multiline
  // comments will have syntax support.
  var lineCommentStartSymbol = "";

  // These directives are architecture independent.
  // Machine specific directives should go in their respective
  // architecture initialization function.
  // Reference:
  // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops
  var directives = {
    ".abort" : "builtin",
    ".align" : "builtin",
    ".altmacro" : "builtin",
    ".ascii" : "builtin",
    ".asciz" : "builtin",
    ".balign" : "builtin",
    ".balignw" : "builtin",
    ".balignl" : "builtin",
    ".bundle_align_mode" : "builtin",
    ".bundle_lock" : "builtin",
    ".bundle_unlock" : "builtin",
    ".byte" : "builtin",
    ".cfi_startproc" : "builtin",
    ".comm" : "builtin",
    ".data" : "builtin",
    ".def" : "builtin",
    ".desc" : "builtin",
    ".dim" : "builtin",
    ".double" : "builtin",
    ".eject" : "builtin",
    ".else" : "builtin",
    ".elseif" : "builtin",
    ".end" : "builtin",
    ".endef" : "builtin",
    ".endfunc" : "builtin",
    ".endif" : "builtin",
    ".equ" : "builtin",
    ".equiv" : "builtin",
    ".eqv" : "builtin",
    ".err" : "builtin",
    ".error" : "builtin",
    ".exitm" : "builtin",
    ".extern" : "builtin",
    ".fail" : "builtin",
    ".file" : "builtin",
    ".fill" : "builtin",
    ".float" : "builtin",
    ".func" : "builtin",
    ".global" : "builtin",
    ".gnu_attribute" : "builtin",
    ".hidden" : "builtin",
    ".hword" : "builtin",
    ".ident" : "builtin",
    ".if" : "builtin",
    ".incbin" : "builtin",
    ".include" : "builtin",
    ".int" : "builtin",
    ".internal" : "builtin",
    ".irp" : "builtin",
    ".irpc" : "builtin",
    ".lcomm" : "builtin",
    ".lflags" : "builtin",
    ".line" : "builtin",
    ".linkonce" : "builtin",
    ".list" : "builtin",
    ".ln" : "builtin",
    ".loc" : "builtin",
    ".loc_mark_labels" : "builtin",
    ".local" : "builtin",
    ".long" : "builtin",
    ".macro" : "builtin",
    ".mri" : "builtin",
    ".noaltmacro" : "builtin",
    ".nolist" : "builtin",
    ".octa" : "builtin",
    ".offset" : "builtin",
    ".org" : "builtin",
    ".p2align" : "builtin",
    ".popsection" : "builtin",
    ".previous" : "builtin",
    ".print" : "builtin",
    ".protected" : "builtin",
    ".psize" : "builtin",
    ".purgem" : "builtin",
    ".pushsection" : "builtin",
    ".quad" : "builtin",
    ".reloc" : "builtin",
    ".rept" : "builtin",
    ".sbttl" : "builtin",
    ".scl" : "builtin",
    ".section" : "builtin",
    ".set" : "builtin",
    ".short" : "builtin",
    ".single" : "builtin",
    ".size" : "builtin",
    ".skip" : "builtin",
    ".sleb128" : "builtin",
    ".space" : "builtin",
    ".stab" : "builtin",
    ".string" : "builtin",
    ".struct" : "builtin",
    ".subsection" : "builtin",
    ".symver" : "builtin",
    ".tag" : "builtin",
    ".text" : "builtin",
    ".title" : "builtin",
    ".type" : "builtin",
    ".uleb128" : "builtin",
    ".val" : "builtin",
    ".version" : "builtin",
    ".vtable_entry" : "builtin",
    ".vtable_inherit" : "builtin",
    ".warning" : "builtin",
    ".weak" : "builtin",
    ".weakref" : "builtin",
    ".word" : "builtin"
  };

  var registers = {};

  function x86(_parserConfig) {
    lineCommentStartSymbol = "#";

    registers.ax  = "variable";
    registers.eax = "variable-2";
    registers.rax = "variable-3";

    registers.bx  = "variable";
    registers.ebx = "variable-2";
    registers.rbx = "variable-3";

    registers.cx  = "variable";
    registers.ecx = "variable-2";
    registers.rcx = "variable-3";

    registers.dx  = "variable";
    registers.edx = "variable-2";
    registers.rdx = "variable-3";

    registers.si  = "variable";
    registers.esi = "variable-2";
    registers.rsi = "variable-3";

    registers.di  = "variable";
    registers.edi = "variable-2";
    registers.rdi = "variable-3";

    registers.sp  = "variable";
    registers.esp = "variable-2";
    registers.rsp = "variable-3";

    registers.bp  = "variable";
    registers.ebp = "variable-2";
    registers.rbp = "variable-3";

    registers.ip  = "variable";
    registers.eip = "variable-2";
    registers.rip = "variable-3";

    registers.cs  = "keyword";
    registers.ds  = "keyword";
    registers.ss  = "keyword";
    registers.es  = "keyword";
    registers.fs  = "keyword";
    registers.gs  = "keyword";
  }

  function armv6(_parserConfig) {
    // Reference:
    // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf
    // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf
    lineCommentStartSymbol = "@";
    directives.syntax = "builtin";

    registers.r0  = "variable";
    registers.r1  = "variable";
    registers.r2  = "variable";
    registers.r3  = "variable";
    registers.r4  = "variable";
    registers.r5  = "variable";
    registers.r6  = "variable";
    registers.r7  = "variable";
    registers.r8  = "variable";
    registers.r9  = "variable";
    registers.r10 = "variable";
    registers.r11 = "variable";
    registers.r12 = "variable";

    registers.sp  = "variable-2";
    registers.lr  = "variable-2";
    registers.pc  = "variable-2";
    registers.r13 = registers.sp;
    registers.r14 = registers.lr;
    registers.r15 = registers.pc;

    custom.push(function(ch, stream) {
      if (ch === '#') {
        stream.eatWhile(/\w/);
        return "number";
      }
    });
  }

  var arch = (parserConfig.architecture || "x86").toLowerCase();
  if (arch === "x86") {
    x86(parserConfig);
  } else if (arch === "arm" || arch === "armv6") {
    armv6(parserConfig);
  }

  function nextUntilUnescaped(stream, end) {
    var escaped = false, next;
    while ((next = stream.next()) != null) {
      if (next === end && !escaped) {
        return false;
      }
      escaped = !escaped && next === "\\";
    }
    return escaped;
  }

  function clikeComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (ch === "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch === "*");
    }
    return "comment";
  }

  return {
    startState: function() {
      return {
        tokenize: null
      };
    },

    token: function(stream, state) {
      if (state.tokenize) {
        return state.tokenize(stream, state);
      }

      if (stream.eatSpace()) {
        return null;
      }

      var style, cur, ch = stream.next();

      if (ch === "/") {
        if (stream.eat("*")) {
          state.tokenize = clikeComment;
          return clikeComment(stream, state);
        }
      }

      if (ch === lineCommentStartSymbol) {
        stream.skipToEnd();
        return "comment";
      }

      if (ch === '"') {
        nextUntilUnescaped(stream, '"');
        return "string";
      }

      if (ch === '.') {
        stream.eatWhile(/\w/);
        cur = stream.current().toLowerCase();
        style = directives[cur];
        return style || null;
      }

      if (ch === '=') {
        stream.eatWhile(/\w/);
        return "tag";
      }

      if (ch === '{') {
        return "braket";
      }

      if (ch === '}') {
        return "braket";
      }

      if (/\d/.test(ch)) {
        if (ch === "0" && stream.eat("x")) {
          stream.eatWhile(/[0-9a-fA-F]/);
          return "number";
        }
        stream.eatWhile(/\d/);
        return "number";
      }

      if (/\w/.test(ch)) {
        stream.eatWhile(/\w/);
        if (stream.eat(":")) {
          return 'tag';
        }
        cur = stream.current().toLowerCase();
        style = registers[cur];
        return style || null;
      }

      for (var i = 0; i < custom.length; i++) {
        style = custom[i](ch, stream, state);
        if (style) {
          return style;
        }
      }
    },

    lineComment: lineCommentStartSymbol,
    blockCommentStart: "/*",
    blockCommentEnd: "*/"
  };
});

});
lib/codemirror/mode/gas/index.html000064400000003460147361034410013160 0ustar00<!doctype html>

<title>CodeMirror: Gas mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="gas.js"></script>
<style>.CodeMirror {border: 2px inset #dee;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Gas</a>
  </ul>
</div>

<article>
<h2>Gas mode</h2>
<form>
<textarea id="code" name="code">
.syntax unified
.global main

/* 
 *  A
 *  multi-line
 *  comment.
 */

@ A single line comment.

main:
        push    {sp, lr}
        ldr     r0, =message
        bl      puts
        mov     r0, #0
        pop     {sp, pc}

message:
        .asciz "Hello world!<br />"
</textarea>
        </form>

        <script>
            var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
                lineNumbers: true,
                mode: {name: "gas", architecture: "ARMv6"},
            });
        </script>

        <p>Handles AT&amp;T assembler syntax (more specifically this handles
        the GNU Assembler (gas) syntax.)
        It takes a single optional configuration parameter:
        <code>architecture</code>, which can be one of <code>"ARM"</code>,
        <code>"ARMv6"</code> or <code>"x86"</code>.
        Including the parameter adds syntax for the registers and special
        directives for the supplied architecture.

        <p><strong>MIME types defined:</strong> <code>text/x-gas</code></p>
    </article>
lib/codemirror/mode/perl/perl.js000064400000155521147361034410012661 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08)
// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com)

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("perl",function(){
        // http://perldoc.perl.org
        var PERL={                                      //   null - magic touch
                                                        //   1 - keyword
                                                        //   2 - def
                                                        //   3 - atom
                                                        //   4 - operator
                                                        //   5 - variable-2 (predefined)
                                                        //   [x,y] - x=1,2,3; y=must be defined if x{...}
                                                //      PERL operators
                '->'                            :   4,
                '++'                            :   4,
                '--'                            :   4,
                '**'                            :   4,
                                                        //   ! ~ \ and unary + and -
                '=~'                            :   4,
                '!~'                            :   4,
                '*'                             :   4,
                '/'                             :   4,
                '%'                             :   4,
                'x'                             :   4,
                '+'                             :   4,
                '-'                             :   4,
                '.'                             :   4,
                '<<'                            :   4,
                '>>'                            :   4,
                                                        //   named unary operators
                '<'                             :   4,
                '>'                             :   4,
                '<='                            :   4,
                '>='                            :   4,
                'lt'                            :   4,
                'gt'                            :   4,
                'le'                            :   4,
                'ge'                            :   4,
                '=='                            :   4,
                '!='                            :   4,
                '<=>'                           :   4,
                'eq'                            :   4,
                'ne'                            :   4,
                'cmp'                           :   4,
                '~~'                            :   4,
                '&'                             :   4,
                '|'                             :   4,
                '^'                             :   4,
                '&&'                            :   4,
                '||'                            :   4,
                '//'                            :   4,
                '..'                            :   4,
                '...'                           :   4,
                '?'                             :   4,
                ':'                             :   4,
                '='                             :   4,
                '+='                            :   4,
                '-='                            :   4,
                '*='                            :   4,  //   etc. ???
                ','                             :   4,
                '=>'                            :   4,
                '::'                            :   4,
                                                        //   list operators (rightward)
                'not'                           :   4,
                'and'                           :   4,
                'or'                            :   4,
                'xor'                           :   4,
                                                //      PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;)
                'BEGIN'                         :   [5,1],
                'END'                           :   [5,1],
                'PRINT'                         :   [5,1],
                'PRINTF'                        :   [5,1],
                'GETC'                          :   [5,1],
                'READ'                          :   [5,1],
                'READLINE'                      :   [5,1],
                'DESTROY'                       :   [5,1],
                'TIE'                           :   [5,1],
                'TIEHANDLE'                     :   [5,1],
                'UNTIE'                         :   [5,1],
                'STDIN'                         :    5,
                'STDIN_TOP'                     :    5,
                'STDOUT'                        :    5,
                'STDOUT_TOP'                    :    5,
                'STDERR'                        :    5,
                'STDERR_TOP'                    :    5,
                '$ARG'                          :    5,
                '$_'                            :    5,
                '@ARG'                          :    5,
                '@_'                            :    5,
                '$LIST_SEPARATOR'               :    5,
                '$"'                            :    5,
                '$PROCESS_ID'                   :    5,
                '$PID'                          :    5,
                '$$'                            :    5,
                '$REAL_GROUP_ID'                :    5,
                '$GID'                          :    5,
                'jQuery('                            :    5,
                '$EFFECTIVE_GROUP_ID'           :    5,
                '$EGID'                         :    5,
                '$)'                            :    5,
                '$PROGRAM_NAME'                 :    5,
                '$0'                            :    5,
                '$SUBSCRIPT_SEPARATOR'          :    5,
                '$SUBSEP'                       :    5,
                '$;'                            :    5,
                '$REAL_USER_ID'                 :    5,
                '$UID'                          :    5,
                '$<'                            :    5,
                '$EFFECTIVE_USER_ID'            :    5,
                '$EUID'                         :    5,
                '$>'                            :    5,
                '$a'                            :    5,
                '$b'                            :    5,
                '$COMPILING'                    :    5,
                '$^C'                           :    5,
                '$DEBUGGING'                    :    5,
                '$^D'                           :    5,
                '${^ENCODING}'                  :    5,
                '$ENV'                          :    5,
                '%ENV'                          :    5,
                '$SYSTEM_FD_MAX'                :    5,
                '$^F'                           :    5,
                '@F'                            :    5,
                '${^GLOBAL_PHASE}'              :    5,
                '$^H'                           :    5,
                '%^H'                           :    5,
                '@INC'                          :    5,
                '%INC'                          :    5,
                '$INPLACE_EDIT'                 :    5,
                '$^I'                           :    5,
                '$^M'                           :    5,
                '$OSNAME'                       :    5,
                '$^O'                           :    5,
                '${^OPEN}'                      :    5,
                '$PERLDB'                       :    5,
                '$^P'                           :    5,
                '$SIG'                          :    5,
                '%SIG'                          :    5,
                '$BASETIME'                     :    5,
                '$^T'                           :    5,
                '${^TAINT}'                     :    5,
                '${^UNICODE}'                   :    5,
                '${^UTF8CACHE}'                 :    5,
                '${^UTF8LOCALE}'                :    5,
                '$PERL_VERSION'                 :    5,
                '$^V'                           :    5,
                '${^WIN32_SLOPPY_STAT}'         :    5,
                '$EXECUTABLE_NAME'              :    5,
                '$^X'                           :    5,
                '$1'                            :    5, // - regexp $1, $2...
                '$MATCH'                        :    5,
                '$&'                            :    5,
                '${^MATCH}'                     :    5,
                '$PREMATCH'                     :    5,
                '$`'                            :    5,
                '${^PREMATCH}'                  :    5,
                '$POSTMATCH'                    :    5,
                "$'"                            :    5,
                '${^POSTMATCH}'                 :    5,
                '$LAST_PAREN_MATCH'             :    5,
                '$+'                            :    5,
                '$LAST_SUBMATCH_RESULT'         :    5,
                '$^N'                           :    5,
                '@LAST_MATCH_END'               :    5,
                '@+'                            :    5,
                '%LAST_PAREN_MATCH'             :    5,
                '%+'                            :    5,
                '@LAST_MATCH_START'             :    5,
                '@-'                            :    5,
                '%LAST_MATCH_START'             :    5,
                '%-'                            :    5,
                '$LAST_REGEXP_CODE_RESULT'      :    5,
                '$^R'                           :    5,
                '${^RE_DEBUG_FLAGS}'            :    5,
                '${^RE_TRIE_MAXBUF}'            :    5,
                '$ARGV'                         :    5,
                '@ARGV'                         :    5,
                'ARGV'                          :    5,
                'ARGVOUT'                       :    5,
                '$OUTPUT_FIELD_SEPARATOR'       :    5,
                '$OFS'                          :    5,
                '$,'                            :    5,
                '$INPUT_LINE_NUMBER'            :    5,
                '$NR'                           :    5,
                'jQuery.'                            :    5,
                '$INPUT_RECORD_SEPARATOR'       :    5,
                '$RS'                           :    5,
                '$/'                            :    5,
                '$OUTPUT_RECORD_SEPARATOR'      :    5,
                '$ORS'                          :    5,
                '$\\'                           :    5,
                '$OUTPUT_AUTOFLUSH'             :    5,
                '$|'                            :    5,
                '$ACCUMULATOR'                  :    5,
                '$^A'                           :    5,
                '$FORMAT_FORMFEED'              :    5,
                '$^L'                           :    5,
                '$FORMAT_PAGE_NUMBER'           :    5,
                '$%'                            :    5,
                '$FORMAT_LINES_LEFT'            :    5,
                '$-'                            :    5,
                '$FORMAT_LINE_BREAK_CHARACTERS' :    5,
                '$:'                            :    5,
                '$FORMAT_LINES_PER_PAGE'        :    5,
                '$='                            :    5,
                '$FORMAT_TOP_NAME'              :    5,
                '$^'                            :    5,
                '$FORMAT_NAME'                  :    5,
                '$~'                            :    5,
                '${^CHILD_ERROR_NATIVE}'        :    5,
                '$EXTENDED_OS_ERROR'            :    5,
                '$^E'                           :    5,
                '$EXCEPTIONS_BEING_CAUGHT'      :    5,
                '$^S'                           :    5,
                '$WARNING'                      :    5,
                '$^W'                           :    5,
                '${^WARNING_BITS}'              :    5,
                '$OS_ERROR'                     :    5,
                '$ERRNO'                        :    5,
                '$!'                            :    5,
                '%OS_ERROR'                     :    5,
                '%ERRNO'                        :    5,
                '%!'                            :    5,
                '$CHILD_ERROR'                  :    5,
                '$?'                            :    5,
                '$EVAL_ERROR'                   :    5,
                '$@'                            :    5,
                '$OFMT'                         :    5,
                '$#'                            :    5,
                '$*'                            :    5,
                '$ARRAY_BASE'                   :    5,
                '$['                            :    5,
                '$OLD_PERL_VERSION'             :    5,
                '$]'                            :    5,
                                                //      PERL blocks
                'if'                            :[1,1],
                elsif                           :[1,1],
                'else'                          :[1,1],
                'while'                         :[1,1],
                unless                          :[1,1],
                'for'                           :[1,1],
                foreach                         :[1,1],
                                                //      PERL functions
                'abs'                           :1,     // - absolute value function
                accept                          :1,     // - accept an incoming socket connect
                alarm                           :1,     // - schedule a SIGALRM
                'atan2'                         :1,     // - arctangent of Y/X in the range -PI to PI
                bind                            :1,     // - binds an address to a socket
                binmode                         :1,     // - prepare binary files for I/O
                bless                           :1,     // - create an object
                bootstrap                       :1,     //
                'break'                         :1,     // - break out of a "given" block
                caller                          :1,     // - get context of the current subroutine call
                chdir                           :1,     // - change your current working directory
                chmod                           :1,     // - changes the permissions on a list of files
                chomp                           :1,     // - remove a trailing record separator from a string
                chop                            :1,     // - remove the last character from a string
                chown                           :1,     // - change the ownership on a list of files
                chr                             :1,     // - get character this number represents
                chroot                          :1,     // - make directory new root for path lookups
                close                           :1,     // - close file (or pipe or socket) handle
                closedir                        :1,     // - close directory handle
                connect                         :1,     // - connect to a remote socket
                'continue'                      :[1,1], // - optional trailing block in a while or foreach
                'cos'                           :1,     // - cosine function
                crypt                           :1,     // - one-way passwd-style encryption
                dbmclose                        :1,     // - breaks binding on a tied dbm file
                dbmopen                         :1,     // - create binding on a tied dbm file
                'default'                       :1,     //
                defined                         :1,     // - test whether a value, variable, or function is defined
                'delete'                        :1,     // - deletes a value from a hash
                die                             :1,     // - raise an exception or bail out
                'do'                            :1,     // - turn a BLOCK into a TERM
                dump                            :1,     // - create an immediate core dump
                each                            :1,     // - retrieve the next key/value pair from a hash
                endgrent                        :1,     // - be done using group file
                endhostent                      :1,     // - be done using hosts file
                endnetent                       :1,     // - be done using networks file
                endprotoent                     :1,     // - be done using protocols file
                endpwent                        :1,     // - be done using passwd file
                endservent                      :1,     // - be done using services file
                eof                             :1,     // - test a filehandle for its end
                'eval'                          :1,     // - catch exceptions or compile and run code
                'exec'                          :1,     // - abandon this program to run another
                exists                          :1,     // - test whether a hash key is present
                exit                            :1,     // - terminate this program
                'exp'                           :1,     // - raise I to a power
                fcntl                           :1,     // - file control system call
                fileno                          :1,     // - return file descriptor from filehandle
                flock                           :1,     // - lock an entire file with an advisory lock
                fork                            :1,     // - create a new process just like this one
                format                          :1,     // - declare a picture format with use by the write() function
                formline                        :1,     // - internal function used for formats
                getc                            :1,     // - get the next character from the filehandle
                getgrent                        :1,     // - get next group record
                getgrgid                        :1,     // - get group record given group user ID
                getgrnam                        :1,     // - get group record given group name
                gethostbyaddr                   :1,     // - get host record given its address
                gethostbyname                   :1,     // - get host record given name
                gethostent                      :1,     // - get next hosts record
                getlogin                        :1,     // - return who logged in at this tty
                getnetbyaddr                    :1,     // - get network record given its address
                getnetbyname                    :1,     // - get networks record given name
                getnetent                       :1,     // - get next networks record
                getpeername                     :1,     // - find the other end of a socket connection
                getpgrp                         :1,     // - get process group
                getppid                         :1,     // - get parent process ID
                getpriority                     :1,     // - get current nice value
                getprotobyname                  :1,     // - get protocol record given name
                getprotobynumber                :1,     // - get protocol record numeric protocol
                getprotoent                     :1,     // - get next protocols record
                getpwent                        :1,     // - get next passwd record
                getpwnam                        :1,     // - get passwd record given user login name
                getpwuid                        :1,     // - get passwd record given user ID
                getservbyname                   :1,     // - get services record given its name
                getservbyport                   :1,     // - get services record given numeric port
                getservent                      :1,     // - get next services record
                getsockname                     :1,     // - retrieve the sockaddr for a given socket
                getsockopt                      :1,     // - get socket options on a given socket
                given                           :1,     //
                glob                            :1,     // - expand filenames using wildcards
                gmtime                          :1,     // - convert UNIX time into record or string using Greenwich time
                'goto'                          :1,     // - create spaghetti code
                grep                            :1,     // - locate elements in a list test true against a given criterion
                hex                             :1,     // - convert a string to a hexadecimal number
                'import'                        :1,     // - patch a module's namespace into your own
                index                           :1,     // - find a substring within a string
                'int'                           :1,     // - get the integer portion of a number
                ioctl                           :1,     // - system-dependent device control system call
                'join'                          :1,     // - join a list into a string using a separator
                keys                            :1,     // - retrieve list of indices from a hash
                kill                            :1,     // - send a signal to a process or process group
                last                            :1,     // - exit a block prematurely
                lc                              :1,     // - return lower-case version of a string
                lcfirst                         :1,     // - return a string with just the next letter in lower case
                length                          :1,     // - return the number of bytes in a string
                'link'                          :1,     // - create a hard link in the filesytem
                listen                          :1,     // - register your socket as a server
                local                           : 2,    // - create a temporary value for a global variable (dynamic scoping)
                localtime                       :1,     // - convert UNIX time into record or string using local time
                lock                            :1,     // - get a thread lock on a variable, subroutine, or method
                'log'                           :1,     // - retrieve the natural logarithm for a number
                lstat                           :1,     // - stat a symbolic link
                m                               :null,  // - match a string with a regular expression pattern
                map                             :1,     // - apply a change to a list to get back a new list with the changes
                mkdir                           :1,     // - create a directory
                msgctl                          :1,     // - SysV IPC message control operations
                msgget                          :1,     // - get SysV IPC message queue
                msgrcv                          :1,     // - receive a SysV IPC message from a message queue
                msgsnd                          :1,     // - send a SysV IPC message to a message queue
                my                              : 2,    // - declare and assign a local variable (lexical scoping)
                'new'                           :1,     //
                next                            :1,     // - iterate a block prematurely
                no                              :1,     // - unimport some module symbols or semantics at compile time
                oct                             :1,     // - convert a string to an octal number
                open                            :1,     // - open a file, pipe, or descriptor
                opendir                         :1,     // - open a directory
                ord                             :1,     // - find a character's numeric representation
                our                             : 2,    // - declare and assign a package variable (lexical scoping)
                pack                            :1,     // - convert a list into a binary representation
                'package'                       :1,     // - declare a separate global namespace
                pipe                            :1,     // - open a pair of connected filehandles
                pop                             :1,     // - remove the last element from an array and return it
                pos                             :1,     // - find or set the offset for the last/next m//g search
                print                           :1,     // - output a list to a filehandle
                printf                          :1,     // - output a formatted list to a filehandle
                prototype                       :1,     // - get the prototype (if any) of a subroutine
                push                            :1,     // - append one or more elements to an array
                q                               :null,  // - singly quote a string
                qq                              :null,  // - doubly quote a string
                qr                              :null,  // - Compile pattern
                quotemeta                       :null,  // - quote regular expression magic characters
                qw                              :null,  // - quote a list of words
                qx                              :null,  // - backquote quote a string
                rand                            :1,     // - retrieve the next pseudorandom number
                read                            :1,     // - fixed-length buffered input from a filehandle
                readdir                         :1,     // - get a directory from a directory handle
                readline                        :1,     // - fetch a record from a file
                readlink                        :1,     // - determine where a symbolic link is pointing
                readpipe                        :1,     // - execute a system command and collect standard output
                recv                            :1,     // - receive a message over a Socket
                redo                            :1,     // - start this loop iteration over again
                ref                             :1,     // - find out the type of thing being referenced
                rename                          :1,     // - change a filename
                require                         :1,     // - load in external functions from a library at runtime
                reset                           :1,     // - clear all variables of a given name
                'return'                        :1,     // - get out of a function early
                reverse                         :1,     // - flip a string or a list
                rewinddir                       :1,     // - reset directory handle
                rindex                          :1,     // - right-to-left substring search
                rmdir                           :1,     // - remove a directory
                s                               :null,  // - replace a pattern with a string
                say                             :1,     // - print with newline
                scalar                          :1,     // - force a scalar context
                seek                            :1,     // - reposition file pointer for random-access I/O
                seekdir                         :1,     // - reposition directory pointer
                select                          :1,     // - reset default output or do I/O multiplexing
                semctl                          :1,     // - SysV semaphore control operations
                semget                          :1,     // - get set of SysV semaphores
                semop                           :1,     // - SysV semaphore operations
                send                            :1,     // - send a message over a socket
                setgrent                        :1,     // - prepare group file for use
                sethostent                      :1,     // - prepare hosts file for use
                setnetent                       :1,     // - prepare networks file for use
                setpgrp                         :1,     // - set the process group of a process
                setpriority                     :1,     // - set a process's nice value
                setprotoent                     :1,     // - prepare protocols file for use
                setpwent                        :1,     // - prepare passwd file for use
                setservent                      :1,     // - prepare services file for use
                setsockopt                      :1,     // - set some socket options
                shift                           :1,     // - remove the first element of an array, and return it
                shmctl                          :1,     // - SysV shared memory operations
                shmget                          :1,     // - get SysV shared memory segment identifier
                shmread                         :1,     // - read SysV shared memory
                shmwrite                        :1,     // - write SysV shared memory
                shutdown                        :1,     // - close down just half of a socket connection
                'sin'                           :1,     // - return the sine of a number
                sleep                           :1,     // - block for some number of seconds
                socket                          :1,     // - create a socket
                socketpair                      :1,     // - create a pair of sockets
                'sort'                          :1,     // - sort a list of values
                splice                          :1,     // - add or remove elements anywhere in an array
                'split'                         :1,     // - split up a string using a regexp delimiter
                sprintf                         :1,     // - formatted print into a string
                'sqrt'                          :1,     // - square root function
                srand                           :1,     // - seed the random number generator
                stat                            :1,     // - get a file's status information
                state                           :1,     // - declare and assign a state variable (persistent lexical scoping)
                study                           :1,     // - optimize input data for repeated searches
                'sub'                           :1,     // - declare a subroutine, possibly anonymously
                'substr'                        :1,     // - get or alter a portion of a stirng
                symlink                         :1,     // - create a symbolic link to a file
                syscall                         :1,     // - execute an arbitrary system call
                sysopen                         :1,     // - open a file, pipe, or descriptor
                sysread                         :1,     // - fixed-length unbuffered input from a filehandle
                sysseek                         :1,     // - position I/O pointer on handle used with sysread and syswrite
                system                          :1,     // - run a separate program
                syswrite                        :1,     // - fixed-length unbuffered output to a filehandle
                tell                            :1,     // - get current seekpointer on a filehandle
                telldir                         :1,     // - get current seekpointer on a directory handle
                tie                             :1,     // - bind a variable to an object class
                tied                            :1,     // - get a reference to the object underlying a tied variable
                time                            :1,     // - return number of seconds since 1970
                times                           :1,     // - return elapsed time for self and child processes
                tr                              :null,  // - transliterate a string
                truncate                        :1,     // - shorten a file
                uc                              :1,     // - return upper-case version of a string
                ucfirst                         :1,     // - return a string with just the next letter in upper case
                umask                           :1,     // - set file creation mode mask
                undef                           :1,     // - remove a variable or function definition
                unlink                          :1,     // - remove one link to a file
                unpack                          :1,     // - convert binary structure into normal perl variables
                unshift                         :1,     // - prepend more elements to the beginning of a list
                untie                           :1,     // - break a tie binding to a variable
                use                             :1,     // - load in a module at compile time
                utime                           :1,     // - set a file's last access and modify times
                values                          :1,     // - return a list of the values in a hash
                vec                             :1,     // - test or set particular bits in a string
                wait                            :1,     // - wait for any child process to die
                waitpid                         :1,     // - wait for a particular child process to die
                wantarray                       :1,     // - get void vs scalar vs list context of current subroutine call
                warn                            :1,     // - print debugging info
                when                            :1,     //
                write                           :1,     // - print a picture record
                y                               :null}; // - transliterate a string

        var RXstyle="string-2";
        var RXmodifiers=/[goseximacplud]/;              // NOTE: "m", "s", "y" and "tr" need to correct real modifiers for each regexp type

        function tokenChain(stream,state,chain,style,tail){     // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;)
                state.chain=null;                               //                                                          12   3tail
                state.style=null;
                state.tail=null;
                state.tokenize=function(stream,state){
                        var e=false,c,i=0;
                        while(c=stream.next()){
                                if(c===chain[i]&&!e){
                                        if(chain[++i]!==undefined){
                                                state.chain=chain[i];
                                                state.style=style;
                                                state.tail=tail;}
                                        else if(tail)
                                                stream.eatWhile(tail);
                                        state.tokenize=tokenPerl;
                                        return style;}
                                e=!e&&c=="\\";}
                        return style;};
                return state.tokenize(stream,state);}

        function tokenSOMETHING(stream,state,string){
                state.tokenize=function(stream,state){
                        if(stream.string==string)
                                state.tokenize=tokenPerl;
                        stream.skipToEnd();
                        return "string";};
                return state.tokenize(stream,state);}

        function tokenPerl(stream,state){
                if(stream.eatSpace())
                        return null;
                if(state.chain)
                        return tokenChain(stream,state,state.chain,state.style,state.tail);
                if(stream.match(/^\-?[\d\.]/,false))
                        if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/))
                                return 'number';
                if(stream.match(/^<<(?=\w)/)){                  // NOTE: <<SOMETHING\n...\nSOMETHING\n
                        stream.eatWhile(/\w/);
                        return tokenSOMETHING(stream,state,stream.current().substr(2));}
                if(stream.sol()&&stream.match(/^\=item(?!\w)/)){// NOTE: \n=item...\n=cut\n
                        return tokenSOMETHING(stream,state,'=cut');}
                var ch=stream.next();
                if(ch=='"'||ch=="'"){                           // NOTE: ' or " or <<'SOMETHING'\n...\nSOMETHING\n or <<"SOMETHING"\n...\nSOMETHING\n
                        if(prefix(stream, 3)=="<<"+ch){
                                var p=stream.pos;
                                stream.eatWhile(/\w/);
                                var n=stream.current().substr(1);
                                if(n&&stream.eat(ch))
                                        return tokenSOMETHING(stream,state,n);
                                stream.pos=p;}
                        return tokenChain(stream,state,[ch],"string");}
                if(ch=="q"){
                        var c=look(stream, -2);
                        if(!(c&&/\w/.test(c))){
                                c=look(stream, 0);
                                if(c=="x"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}
                                else if(c=="q"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[")"],"string");}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["]"],"string");}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["}"],"string");}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[">"],"string");}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,[stream.eat(c)],"string");}}
                                else if(c=="w"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[")"],"bracket");}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["]"],"bracket");}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["}"],"bracket");}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[">"],"bracket");}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,[stream.eat(c)],"bracket");}}
                                else if(c=="r"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}
                                else if(/[\^'"!~\/(\[{<]/.test(c)){
                                        if(c=="("){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,[")"],"string");}
                                        if(c=="["){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,["]"],"string");}
                                        if(c=="{"){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,["}"],"string");}
                                        if(c=="<"){
                                                eatSuffix(stream, 1);
                                                return tokenChain(stream,state,[">"],"string");}
                                        if(/[\^'"!~\/]/.test(c)){
                                                return tokenChain(stream,state,[stream.eat(c)],"string");}}}}
                if(ch=="m"){
                        var c=look(stream, -2);
                        if(!(c&&/\w/.test(c))){
                                c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(/[\^'"!~\/]/.test(c)){
                                                return tokenChain(stream,state,[c],RXstyle,RXmodifiers);}
                                        if(c=="("){
                                                return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
                                        if(c=="["){
                                                return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
                                        if(c=="{"){
                                                return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
                                        if(c=="<"){
                                                return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}}
                if(ch=="s"){
                        var c=/[\/>\]})\w]/.test(look(stream, -2));
                        if(!c){
                                c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(c=="[")
                                                return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
                                        if(c=="{")
                                                return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
                                        if(c=="<")
                                                return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
                                        if(c=="(")
                                                return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
                                        return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}
                if(ch=="y"){
                        var c=/[\/>\]})\w]/.test(look(stream, -2));
                        if(!c){
                                c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(c=="[")
                                                return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
                                        if(c=="{")
                                                return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
                                        if(c=="<")
                                                return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
                                        if(c=="(")
                                                return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
                                        return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}
                if(ch=="t"){
                        var c=/[\/>\]})\w]/.test(look(stream, -2));
                        if(!c){
                                c=stream.eat("r");if(c){
                                c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(c=="[")
                                                return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
                                        if(c=="{")
                                                return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
                                        if(c=="<")
                                                return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
                                        if(c=="(")
                                                return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
                                        return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}}
                if(ch=="`"){
                        return tokenChain(stream,state,[ch],"variable-2");}
                if(ch=="/"){
                        if(!/~\s*$/.test(prefix(stream)))
                                return "operator";
                        else
                                return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);}
                if(ch=="$"){
                        var p=stream.pos;
                        if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}"))
                                return "variable-2";
                        else
                                stream.pos=p;}
                if(/[$@%]/.test(ch)){
                        var p=stream.pos;
                        if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){
                                var c=stream.current();
                                if(PERL[c])
                                        return "variable-2";}
                        stream.pos=p;}
                if(/[$@%&]/.test(ch)){
                        if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){
                                var c=stream.current();
                                if(PERL[c])
                                        return "variable-2";
                                else
                                        return "variable";}}
                if(ch=="#"){
                        if(look(stream, -2)!="$"){
                                stream.skipToEnd();
                                return "comment";}}
                if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){
                        var p=stream.pos;
                        stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/);
                        if(PERL[stream.current()])
                                return "operator";
                        else
                                stream.pos=p;}
                if(ch=="_"){
                        if(stream.pos==1){
                                if(suffix(stream, 6)=="_END__"){
                                        return tokenChain(stream,state,['\0'],"comment");}
                                else if(suffix(stream, 7)=="_DATA__"){
                                        return tokenChain(stream,state,['\0'],"variable-2");}
                                else if(suffix(stream, 7)=="_C__"){
                                        return tokenChain(stream,state,['\0'],"string");}}}
                if(/\w/.test(ch)){
                        var p=stream.pos;
                        if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}"))
                                return "string";
                        else
                                stream.pos=p;}
                if(/[A-Z]/.test(ch)){
                        var l=look(stream, -2);
                        var p=stream.pos;
                        stream.eatWhile(/[A-Z_]/);
                        if(/[\da-z]/.test(look(stream, 0))){
                                stream.pos=p;}
                        else{
                                var c=PERL[stream.current()];
                                if(!c)
                                        return "meta";
                                if(c[1])
                                        c=c[0];
                                if(l!=":"){
                                        if(c==1)
                                                return "keyword";
                                        else if(c==2)
                                                return "def";
                                        else if(c==3)
                                                return "atom";
                                        else if(c==4)
                                                return "operator";
                                        else if(c==5)
                                                return "variable-2";
                                        else
                                                return "meta";}
                                else
                                        return "meta";}}
                if(/[a-zA-Z_]/.test(ch)){
                        var l=look(stream, -2);
                        stream.eatWhile(/\w/);
                        var c=PERL[stream.current()];
                        if(!c)
                                return "meta";
                        if(c[1])
                                c=c[0];
                        if(l!=":"){
                                if(c==1)
                                        return "keyword";
                                else if(c==2)
                                        return "def";
                                else if(c==3)
                                        return "atom";
                                else if(c==4)
                                        return "operator";
                                else if(c==5)
                                        return "variable-2";
                                else
                                        return "meta";}
                        else
                                return "meta";}
                return null;}

        return {
            startState: function() {
                return {
                    tokenize: tokenPerl,
                    chain: null,
                    style: null,
                    tail: null
                };
            },
            token: function(stream, state) {
                return (state.tokenize || tokenPerl)(stream, state);
            },
            lineComment: '#'
        };
});

CodeMirror.registerHelper("wordChars", "perl", /[\w$]/);

CodeMirror.defineMIME("text/x-perl", "perl");

// it's like "peek", but need for look-ahead or look-behind if index < 0
function look(stream, c){
  return stream.string.charAt(stream.pos+(c||0));
}

// return a part of prefix of current stream from current position
function prefix(stream, c){
  if(c){
    var x=stream.pos-c;
    return stream.string.substr((x>=0?x:0),c);}
  else{
    return stream.string.substr(0,stream.pos-1);
  }
}

// return a part of suffix of current stream from current position
function suffix(stream, c){
  var y=stream.string.length;
  var x=y-stream.pos+1;
  return stream.string.substr(stream.pos,(c&&c<y?c:x));
}

// eating and vomiting a part of stream from current position
function eatSuffix(stream, c){
  var x=stream.pos+c;
  var y;
  if(x<=0)
    stream.pos=0;
  else if(x>=(y=stream.string.length-1))
    stream.pos=y;
  else
    stream.pos=x;
}

});
lib/codemirror/mode/perl/index.html000064400000003013147361034410013342 0ustar00<!doctype html>

<title>CodeMirror: Perl mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="perl.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Perl</a>
  </ul>
</div>

<article>
<h2>Perl mode</h2>


<div><textarea id="code" name="code">
#!/usr/bin/perl

use Something qw(func1 func2);

# strings
my $s1 = qq'single line';
our $s2 = q(multi-
              line);

=item Something
	Example.
=cut

my $html=<<'HTML'
<html>
<title>hi!</title>
</html>
HTML

print "first,".join(',', 'second', qq~third~);

if($s1 =~ m[(?<!\s)(l.ne)\z]o) {
	$h->{$1}=$jQuery.' predefined variables';
	$s2 =~ s/\-line//ox;
	$s1 =~ s[
		  line ]
		[
		  block
		]ox;
}

1; # numbers and comments

__END__
something...

</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-perl</code>.</p>
  </article>
lib/codemirror/mode/mbox/mbox.js000064400000007101147361034410012655 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

var rfc2822 = [
  "From", "Sender", "Reply-To", "To", "Cc", "Bcc", "Message-ID",
  "In-Reply-To", "References", "Resent-From", "Resent-Sender", "Resent-To",
  "Resent-Cc", "Resent-Bcc", "Resent-Message-ID", "Return-Path", "Received"
];
var rfc2822NoEmail = [
  "Date", "Subject", "Comments", "Keywords", "Resent-Date"
];

CodeMirror.registerHelper("hintWords", "mbox", rfc2822.concat(rfc2822NoEmail));

var whitespace = /^[ \t]/;
var separator = /^From /; // See RFC 4155
var rfc2822Header = new RegExp("^(" + rfc2822.join("|") + "): ");
var rfc2822HeaderNoEmail = new RegExp("^(" + rfc2822NoEmail.join("|") + "): ");
var header = /^[^:]+:/; // Optional fields defined in RFC 2822
var email = /^[^ ]+@[^ ]+/;
var untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/;
var bracketedEmail = /^<.*?>/;
var untilBracketedEmail = /^.*?(?=<.*>)/;

function styleForHeader(header) {
  if (header === "Subject") return "header";
  return "string";
}

function readToken(stream, state) {
  if (stream.sol()) {
    // From last line
    state.inSeparator = false;
    if (state.inHeader && stream.match(whitespace)) {
      // Header folding
      return null;
    } else {
      state.inHeader = false;
      state.header = null;
    }

    if (stream.match(separator)) {
      state.inHeaders = true;
      state.inSeparator = true;
      return "atom";
    }

    var match;
    var emailPermitted = false;
    if ((match = stream.match(rfc2822HeaderNoEmail)) ||
        (emailPermitted = true) && (match = stream.match(rfc2822Header))) {
      state.inHeaders = true;
      state.inHeader = true;
      state.emailPermitted = emailPermitted;
      state.header = match[1];
      return "atom";
    }

    // Use vim's heuristics: recognize custom headers only if the line is in a
    // block of legitimate headers.
    if (state.inHeaders && (match = stream.match(header))) {
      state.inHeader = true;
      state.emailPermitted = true;
      state.header = match[1];
      return "atom";
    }

    state.inHeaders = false;
    stream.skipToEnd();
    return null;
  }

  if (state.inSeparator) {
    if (stream.match(email)) return "link";
    if (stream.match(untilEmail)) return "atom";
    stream.skipToEnd();
    return "atom";
  }

  if (state.inHeader) {
    var style = styleForHeader(state.header);

    if (state.emailPermitted) {
      if (stream.match(bracketedEmail)) return style + " link";
      if (stream.match(untilBracketedEmail)) return style;
    }
    stream.skipToEnd();
    return style;
  }

  stream.skipToEnd();
  return null;
};

CodeMirror.defineMode("mbox", function() {
  return {
    startState: function() {
      return {
        // Is in a mbox separator
        inSeparator: false,
        // Is in a mail header
        inHeader: false,
        // If bracketed email is permitted. Only applicable when inHeader
        emailPermitted: false,
        // Name of current header
        header: null,
        // Is in a region of mail headers
        inHeaders: false
      };
    },
    token: readToken,
    blankLine: function(state) {
      state.inHeaders = state.inSeparator = state.inHeader = false;
    }
  };
});

CodeMirror.defineMIME("application/mbox", "mbox");
});
lib/codemirror/mode/mbox/index.html000064400000002415147361034410013352 0ustar00<!doctype html>

<title>CodeMirror: mbox mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="mbox.js"></script>
<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">mbox</a>
  </ul>
</div>

<article>
<h2>mbox mode</h2>
<form><textarea id="code" name="code">
From timothygu99@gmail.com Sun Apr 17 01:40:43 2016
From: Timothy Gu &lt;timothygu99@gmail.com&gt;
Date: Sat, 16 Apr 2016 18:40:43 -0700
Subject: mbox mode
Message-ID: &lt;Z8d+bTT50U/az94FZnyPkDjZmW0=@gmail.com&gt;

mbox mode is working!

Timothy
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>application/mbox</code>.</p>

  </article>
lib/codemirror/mode/twig/twig.js000064400000010732147361034410012673 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"),  require("../../addon/mode/multiplex"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../../addon/mode/multiplex"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("twig:inner", function() {
    var keywords = ["and", "as", "autoescape", "endautoescape", "block", "do", "endblock", "else", "elseif", "extends", "for", "endfor", "embed", "endembed", "filter", "endfilter", "flush", "from", "if", "endif", "in", "is", "include", "import", "not", "or", "set", "spaceless", "endspaceless", "with", "endwith", "trans", "endtrans", "blocktrans", "endblocktrans", "macro", "endmacro", "use", "verbatim", "endverbatim"],
        operator = /^[+\-*&%=<>!?|~^]/,
        sign = /^[:\[\(\{]/,
        atom = ["true", "false", "null", "empty", "defined", "divisibleby", "divisible by", "even", "odd", "iterable", "sameas", "same as"],
        number = /^(\d[+\-\*\/])?\d+(\.\d+)?/;

    keywords = new RegExp("((" + keywords.join(")|(") + "))\\b");
    atom = new RegExp("((" + atom.join(")|(") + "))\\b");

    function tokenBase (stream, state) {
      var ch = stream.peek();

      //Comment
      if (state.incomment) {
        if (!stream.skipTo("#}")) {
          stream.skipToEnd();
        } else {
          stream.eatWhile(/\#|}/);
          state.incomment = false;
        }
        return "comment";
      //Tag
      } else if (state.intag) {
        //After operator
        if (state.operator) {
          state.operator = false;
          if (stream.match(atom)) {
            return "atom";
          }
          if (stream.match(number)) {
            return "number";
          }
        }
        //After sign
        if (state.sign) {
          state.sign = false;
          if (stream.match(atom)) {
            return "atom";
          }
          if (stream.match(number)) {
            return "number";
          }
        }

        if (state.instring) {
          if (ch == state.instring) {
            state.instring = false;
          }
          stream.next();
          return "string";
        } else if (ch == "'" || ch == '"') {
          state.instring = ch;
          stream.next();
          return "string";
        } else if (stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) {
          state.intag = false;
          return "tag";
        } else if (stream.match(operator)) {
          state.operator = true;
          return "operator";
        } else if (stream.match(sign)) {
          state.sign = true;
        } else {
          if (stream.eat(" ") || stream.sol()) {
            if (stream.match(keywords)) {
              return "keyword";
            }
            if (stream.match(atom)) {
              return "atom";
            }
            if (stream.match(number)) {
              return "number";
            }
            if (stream.sol()) {
              stream.next();
            }
          } else {
            stream.next();
          }

        }
        return "variable";
      } else if (stream.eat("{")) {
        if (ch = stream.eat("#")) {
          state.incomment = true;
          if (!stream.skipTo("#}")) {
            stream.skipToEnd();
          } else {
            stream.eatWhile(/\#|}/);
            state.incomment = false;
          }
          return "comment";
        //Open tag
        } else if (ch = stream.eat(/\{|%/)) {
          //Cache close tag
          state.intag = ch;
          if (ch == "{") {
            state.intag = "}";
          }
          stream.eat("-");
          return "tag";
        }
      }
      stream.next();
    };

    return {
      startState: function () {
        return {};
      },
      token: function (stream, state) {
        return tokenBase(stream, state);
      }
    };
  });

  CodeMirror.defineMode("twig", function(config, parserConfig) {
    var twigInner = CodeMirror.getMode(config, "twig:inner");
    if (!parserConfig || !parserConfig.base) return twigInner;
    return CodeMirror.multiplexingMode(
      CodeMirror.getMode(config, parserConfig.base), {
        open: /\{[{#%]/, close: /[}#%]\}/, mode: twigInner, parseDelimiters: true
      }
    );
  });
  CodeMirror.defineMIME("text/x-twig", "twig");
});
lib/codemirror/mode/twig/index.html000064400000002532147361034410013357 0ustar00<!doctype html>

<title>CodeMirror: Twig mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="twig.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Twig</a>
  </ul>
</div>

<article>
<h2>Twig mode</h2>
<form><textarea id="code" name="code">
{% extends "layout.twig" %}
{% block title %}CodeMirror: Twig mode{% endblock %}
{# this is a comment #}
{% block content %}
  {% for foo in bar if foo.baz is divisible by(3) %}
    Hello {{ foo.world }}
  {% else %}
    {% set msg = "Result not found" %}
    {% include "empty.twig" with { message: msg } %}
  {% endfor %}
{% endblock %}
</textarea></form>
    <script>
      var editor =
      CodeMirror.fromTextArea(document.getElementById("code"), {mode:
        {name: "twig", htmlMode: true}});
    </script>
  </article>
lib/codemirror/mode/python/test.js000064400000002223147361034410013243 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 4},
              {name: "python",
               version: 3,
               singleLineStringErrors: false});
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  // Error, because "foobarhello" is neither a known type or property, but
  // property was expected (after "and"), and it should be in parentheses.
  MT("decoratorStartOfLine",
     "[meta @dec]",
     "[keyword def] [def function]():",
     "    [keyword pass]");

  MT("decoratorIndented",
     "[keyword class] [def Foo]:",
     "    [meta @dec]",
     "    [keyword def] [def function]():",
     "        [keyword pass]");

  MT("matmulWithSpace:", "[variable a] [operator @] [variable b]");
  MT("matmulWithoutSpace:", "[variable a][operator @][variable b]");
  MT("matmulSpaceBefore:", "[variable a] [operator @][variable b]");

  MT("fValidStringPrefix", "[string f'this is a {formatted} string']");
  MT("uValidStringPrefix", "[string u'this is an unicode string']");
})();
lib/codemirror/mode/python/index.html000064400000013476147361034410013737 0ustar00<!doctype html>

<title>CodeMirror: Python mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="python.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Python</a>
  </ul>
</div>

<article>
<h2>Python mode</h2>

    <div><textarea id="code" name="code">
# Literals
1234
0.0e101
.123
0b01010011100
0o01234567
0x0987654321abcdef
7
2147483647
3L
79228162514264337593543950336L
0x100000000L
79228162514264337593543950336
0xdeadbeef
3.14j
10.j
10j
.001j
1e100j
3.14e-10j


# String Literals
'For\''
"God\""
"""so loved
the world"""
'''that he gave
his only begotten\' '''
'that whosoever believeth \
in him'
''

# Identifiers
__a__
a.b
a.b.c

#Unicode identifiers on Python3
# a = x\ddot
a⃗ = ẍ
# a = v\dot
a⃗ = v̇

#F\vec = m \cdot a\vec
F⃗ = m•a⃗ 

# Operators
+ - * / % & | ^ ~ < >
== != <= >= <> << >> // **
and or not in is

#infix matrix multiplication operator (PEP 465)
A @ B

# Delimiters
() [] {} , : ` = ; @ .  # Note that @ and . require the proper context on Python 2.
+= -= *= /= %= &= |= ^=
//= >>= <<= **=

# Keywords
as assert break class continue def del elif else except
finally for from global if import lambda pass raise
return try while with yield

# Python 2 Keywords (otherwise Identifiers)
exec print

# Python 3 Keywords (otherwise Identifiers)
nonlocal

# Types
bool classmethod complex dict enumerate float frozenset int list object
property reversed set slice staticmethod str super tuple type

# Python 2 Types (otherwise Identifiers)
basestring buffer file long unicode xrange

# Python 3 Types (otherwise Identifiers)
bytearray bytes filter map memoryview open range zip

# Some Example code
import os
from package import ParentClass

@nonsenseDecorator
def doesNothing():
    pass

class ExampleClass(ParentClass):
    @staticmethod
    def example(inputStr):
        a = list(inputStr)
        a.reverse()
        return ''.join(a)

    def __init__(self, mixin = 'Hello'):
        self.mixin = mixin

</textarea></div>


<h2>Cython mode</h2>

<div><textarea id="code-cython" name="code-cython">

import numpy as np
cimport cython
from libc.math cimport sqrt

@cython.boundscheck(False)
@cython.wraparound(False)
def pairwise_cython(double[:, ::1] X):
    cdef int M = X.shape[0]
    cdef int N = X.shape[1]
    cdef double tmp, d
    cdef double[:, ::1] D = np.empty((M, M), dtype=np.float64)
    for i in range(M):
        for j in range(M):
            d = 0.0
            for k in range(N):
                tmp = X[i, k] - X[j, k]
                d += tmp * tmp
            D[i, j] = sqrt(d)
    return np.asarray(D)

</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "python",
               version: 3,
               singleLineStringErrors: false},
        lineNumbers: true,
        indentUnit: 4,
        matchBrackets: true
    });

    CodeMirror.fromTextArea(document.getElementById("code-cython"), {
        mode: {name: "text/x-cython",
               version: 2,
               singleLineStringErrors: false},
        lineNumbers: true,
        indentUnit: 4,
        matchBrackets: true
      });
    </script>
    <h2>Configuration Options for Python mode:</h2>
    <ul>
      <li>version - 2/3 - The version of Python to recognize.  Default is 2.</li>
      <li>singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.</li>
      <li>hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.</li>
    </ul>
    <h2>Advanced Configuration Options:</h2>
    <p>Usefull for superset of python syntax like Enthought enaml, IPython magics and  questionmark help</p>
    <ul>
      <li>singleOperators - RegEx - Regular Expression for single operator matching,  default : <pre>^[\\+\\-\\*/%&amp;|\\^~&lt;&gt;!]</pre> including <pre>@</pre> on Python 3</li>
      <li>singleDelimiters - RegEx - Regular Expression for single delimiter matching, default :  <pre>^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]</pre></li>
      <li>doubleOperators - RegEx - Regular Expression for double operators matching, default : <pre>^((==)|(!=)|(&lt;=)|(&gt;=)|(&lt;&gt;)|(&lt;&lt;)|(&gt;&gt;)|(//)|(\\*\\*))</pre></li>
      <li>doubleDelimiters - RegEx - Regular Expression for double delimiters matching, default : <pre>^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&amp;=)|(\\|=)|(\\^=))</pre></li>
      <li>tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default : <pre>^((//=)|(&gt;&gt;=)|(&lt;&lt;=)|(\\*\\*=))</pre></li>
      <li>identifiers - RegEx - Regular Expression for identifier, default : <pre>^[_A-Za-z][_A-Za-z0-9]*</pre> on Python 2 and <pre>^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*</pre> on Python 3.</li>
      <li>extra_keywords - list of string - List of extra words ton consider as keywords</li>
      <li>extra_builtins - list of string - List of extra words ton consider as builtins</li>
    </ul>


    <p><strong>MIME types defined:</strong> <code>text/x-python</code> and <code>text/x-cython</code>.</p>
  </article>
lib/codemirror/mode/python/python.js000064400000030225147361034410013610 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") + "))\\b");
  }

  var wordOperators = wordRegexp(["and", "or", "not", "is"]);
  var commonKeywords = ["as", "assert", "break", "class", "continue",
                        "def", "del", "elif", "else", "except", "finally",
                        "for", "from", "global", "if", "import",
                        "lambda", "pass", "raise", "return",
                        "try", "while", "with", "yield", "in"];
  var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr",
                        "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod",
                        "enumerate", "eval", "filter", "float", "format", "frozenset",
                        "getattr", "globals", "hasattr", "hash", "help", "hex", "id",
                        "input", "int", "isinstance", "issubclass", "iter", "len",
                        "list", "locals", "map", "max", "memoryview", "min", "next",
                        "object", "oct", "open", "ord", "pow", "property", "range",
                        "repr", "reversed", "round", "set", "setattr", "slice",
                        "sorted", "staticmethod", "str", "sum", "super", "tuple",
                        "type", "vars", "zip", "__import__", "NotImplemented",
                        "Ellipsis", "__debug__"];
  CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins));

  function top(state) {
    return state.scopes[state.scopes.length - 1];
  }

  CodeMirror.defineMode("python", function(conf, parserConf) {
    var ERRORCLASS = "error";

    var singleDelimiters = parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.]/;
    var doubleOperators = parserConf.doubleOperators || /^([!<>]==|<>|<<|>>|\/\/|\*\*)/;
    var doubleDelimiters = parserConf.doubleDelimiters || /^(\+=|\-=|\*=|%=|\/=|&=|\|=|\^=)/;
    var tripleDelimiters = parserConf.tripleDelimiters || /^(\/\/=|>>=|<<=|\*\*=)/;

    var hangingIndent = parserConf.hangingIndent || conf.indentUnit;

    var myKeywords = commonKeywords, myBuiltins = commonBuiltins;
    if (parserConf.extra_keywords != undefined)
      myKeywords = myKeywords.concat(parserConf.extra_keywords);

    if (parserConf.extra_builtins != undefined)
      myBuiltins = myBuiltins.concat(parserConf.extra_builtins);

    var py3 = !(parserConf.version && Number(parserConf.version) < 3)
    if (py3) {
      // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator
      var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!@]/;
      var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/;
      myKeywords = myKeywords.concat(["nonlocal", "False", "True", "None", "async", "await"]);
      myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]);
      var stringPrefixes = new RegExp("^(([rbuf]|(br))?('{3}|\"{3}|['\"]))", "i");
    } else {
      var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!]/;
      var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;
      myKeywords = myKeywords.concat(["exec", "print"]);
      myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile",
                                      "file", "intern", "long", "raw_input", "reduce", "reload",
                                      "unichr", "unicode", "xrange", "False", "True", "None"]);
      var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i");
    }
    var keywords = wordRegexp(myKeywords);
    var builtins = wordRegexp(myBuiltins);

    // tokenizers
    function tokenBase(stream, state) {
      if (stream.sol()) state.indent = stream.indentation()
      // Handle scope changes
      if (stream.sol() && top(state).type == "py") {
        var scopeOffset = top(state).offset;
        if (stream.eatSpace()) {
          var lineOffset = stream.indentation();
          if (lineOffset > scopeOffset)
            pushPyScope(state);
          else if (lineOffset < scopeOffset && dedent(stream, state))
            state.errorToken = true;
          return null;
        } else {
          var style = tokenBaseInner(stream, state);
          if (scopeOffset > 0 && dedent(stream, state))
            style += " " + ERRORCLASS;
          return style;
        }
      }
      return tokenBaseInner(stream, state);
    }

    function tokenBaseInner(stream, state) {
      if (stream.eatSpace()) return null;

      var ch = stream.peek();

      // Handle Comments
      if (ch == "#") {
        stream.skipToEnd();
        return "comment";
      }

      // Handle Number Literals
      if (stream.match(/^[0-9\.]/, false)) {
        var floatLiteral = false;
        // Floats
        if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; }
        if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; }
        if (stream.match(/^\.\d+/)) { floatLiteral = true; }
        if (floatLiteral) {
          // Float literals may be "imaginary"
          stream.eat(/J/i);
          return "number";
        }
        // Integers
        var intLiteral = false;
        // Hex
        if (stream.match(/^0x[0-9a-f]+/i)) intLiteral = true;
        // Binary
        if (stream.match(/^0b[01]+/i)) intLiteral = true;
        // Octal
        if (stream.match(/^0o[0-7]+/i)) intLiteral = true;
        // Decimal
        if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) {
          // Decimal literals may be "imaginary"
          stream.eat(/J/i);
          // TODO - Can you have imaginary longs?
          intLiteral = true;
        }
        // Zero by itself with no other piece of number.
        if (stream.match(/^0(?![\dx])/i)) intLiteral = true;
        if (intLiteral) {
          // Integer literals may be "long"
          stream.eat(/L/i);
          return "number";
        }
      }

      // Handle Strings
      if (stream.match(stringPrefixes)) {
        state.tokenize = tokenStringFactory(stream.current());
        return state.tokenize(stream, state);
      }

      // Handle operators and Delimiters
      if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters))
        return "punctuation";

      if (stream.match(doubleOperators) || stream.match(singleOperators))
        return "operator";

      if (stream.match(singleDelimiters))
        return "punctuation";

      if (state.lastToken == "." && stream.match(identifiers))
        return "property";

      if (stream.match(keywords) || stream.match(wordOperators))
        return "keyword";

      if (stream.match(builtins))
        return "builtin";

      if (stream.match(/^(self|cls)\b/))
        return "variable-2";

      if (stream.match(identifiers)) {
        if (state.lastToken == "def" || state.lastToken == "class")
          return "def";
        return "variable";
      }

      // Handle non-detected items
      stream.next();
      return ERRORCLASS;
    }

    function tokenStringFactory(delimiter) {
      while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)
        delimiter = delimiter.substr(1);

      var singleline = delimiter.length == 1;
      var OUTCLASS = "string";

      function tokenString(stream, state) {
        while (!stream.eol()) {
          stream.eatWhile(/[^'"\\]/);
          if (stream.eat("\\")) {
            stream.next();
            if (singleline && stream.eol())
              return OUTCLASS;
          } else if (stream.match(delimiter)) {
            state.tokenize = tokenBase;
            return OUTCLASS;
          } else {
            stream.eat(/['"]/);
          }
        }
        if (singleline) {
          if (parserConf.singleLineStringErrors)
            return ERRORCLASS;
          else
            state.tokenize = tokenBase;
        }
        return OUTCLASS;
      }
      tokenString.isString = true;
      return tokenString;
    }

    function pushPyScope(state) {
      while (top(state).type != "py") state.scopes.pop()
      state.scopes.push({offset: top(state).offset + conf.indentUnit,
                         type: "py",
                         align: null})
    }

    function pushBracketScope(stream, state, type) {
      var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) ? null : stream.column() + 1
      state.scopes.push({offset: state.indent + hangingIndent,
                         type: type,
                         align: align})
    }

    function dedent(stream, state) {
      var indented = stream.indentation();
      while (state.scopes.length > 1 && top(state).offset > indented) {
        if (top(state).type != "py") return true;
        state.scopes.pop();
      }
      return top(state).offset != indented;
    }

    function tokenLexer(stream, state) {
      if (stream.sol()) state.beginningOfLine = true;

      var style = state.tokenize(stream, state);
      var current = stream.current();

      // Handle decorators
      if (state.beginningOfLine && current == "@")
        return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS;

      if (/\S/.test(current)) state.beginningOfLine = false;

      if ((style == "variable" || style == "builtin")
          && state.lastToken == "meta")
        style = "meta";

      // Handle scope changes.
      if (current == "pass" || current == "return")
        state.dedent += 1;

      if (current == "lambda") state.lambda = true;
      if (current == ":" && !state.lambda && top(state).type == "py")
        pushPyScope(state);

      var delimiter_index = current.length == 1 ? "[({".indexOf(current) : -1;
      if (delimiter_index != -1)
        pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1));

      delimiter_index = "])}".indexOf(current);
      if (delimiter_index != -1) {
        if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent
        else return ERRORCLASS;
      }
      if (state.dedent > 0 && stream.eol() && top(state).type == "py") {
        if (state.scopes.length > 1) state.scopes.pop();
        state.dedent -= 1;
      }

      return style;
    }

    var external = {
      startState: function(basecolumn) {
        return {
          tokenize: tokenBase,
          scopes: [{offset: basecolumn || 0, type: "py", align: null}],
          indent: basecolumn || 0,
          lastToken: null,
          lambda: false,
          dedent: 0
        };
      },

      token: function(stream, state) {
        var addErr = state.errorToken;
        if (addErr) state.errorToken = false;
        var style = tokenLexer(stream, state);

        if (style && style != "comment")
          state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style;
        if (style == "punctuation") style = null;

        if (stream.eol() && state.lambda)
          state.lambda = false;
        return addErr ? style + " " + ERRORCLASS : style;
      },

      indent: function(state, textAfter) {
        if (state.tokenize != tokenBase)
          return state.tokenize.isString ? CodeMirror.Pass : 0;

        var scope = top(state), closing = scope.type == textAfter.charAt(0)
        if (scope.align != null)
          return scope.align - (closing ? 1 : 0)
        else
          return scope.offset - (closing ? hangingIndent : 0)
      },

      electricInput: /^\s*[\}\]\)]$/,
      closeBrackets: {triples: "'\""},
      lineComment: "#",
      fold: "indent"
    };
    return external;
  });

  CodeMirror.defineMIME("text/x-python", "python");

  var words = function(str) { return str.split(" "); };

  CodeMirror.defineMIME("text/x-cython", {
    name: "python",
    extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+
                          "extern gil include nogil property public"+
                          "readonly struct union DEF IF ELIF ELSE")
  });

});
lib/codemirror/mode/nsis/nsis.js000064400000016720147361034410012702 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Author: Jan T. Sott (http://github.com/idleberg)

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineSimpleMode("nsis",{
  start:[
    // Numbers
    {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"},

    // Strings
    { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" },
    { regex: /'(?:[^\\']|\\.)*'?/, token: "string" },
    { regex: /`(?:[^\\`]|\\.)*`?/, token: "string" },

    // Compile Time Commands
    {regex: /(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|makensis|searchparse|searchreplace))\b/, token: "keyword"},

    // Conditional Compilation
    {regex: /(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/, token: "keyword", indent: true},
    {regex: /(?:\!(else|endif|macroend))\b/, token: "keyword", dedent: true},

    // Runtime Commands
    {regex: /\b(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/, token: "keyword"},
    {regex: /\b(?:Function|PageEx|Section(?:Group)?)\b/, token: "keyword", indent: true},
    {regex: /\b(?:(Function|PageEx|Section(?:Group)?)End)\b/, token: "keyword", dedent: true},

    // Command Options
    {regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, token: "atom"},
    {regex: /\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/, token: "builtin"},

    // LogicLib.nsh
    {regex: /\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/, token: "variable-2", indent: true},

    // FileFunc.nsh
    {regex: /\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/, token: "variable-2", dedent: true},

    // Memento.nsh
    {regex: /\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/, token: "variable-2", dedent: true},

    // TextFunc.nsh
    {regex: /\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/, token: "variable-2", dedent: true},

    // WinVer.nsh
    {regex: /\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/, token: "variable", dedent: true},

    // WordFunc.nsh
    {regex: /\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/, token: "variable-2", dedent: true},

    // x64.nsh
    {regex: /\$\{(?:RunningX64)\}/, token: "variable", dedent: true},
    {regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/, token: "variable-2", dedent: true},

    // Line Comment
    {regex: /(#|;).*/, token: "comment"},

    // Block Comment
    {regex: /\/\*/, token: "comment", next: "comment"},

    // Operator
    {regex: /[-+\/*=<>!]+/, token: "operator"},

    // Variable
    {regex: /\$[\w]+/, token: "variable"},

    // Constant
    {regex: /\${[\w]+}/,token: "variable-2"},

    // Language String
    {regex: /\$\([\w]+\)/,token: "variable-3"}
  ],
  comment: [
    {regex: /.*?\*\//, token: "comment", next: "start"},
    {regex: /.*/, token: "comment"}
  ],
  meta: {
    electricInput: /^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/,
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: ["#", ";"]
  }
});

CodeMirror.defineMIME("text/x-nsis", "nsis");
});
lib/codemirror/mode/nsis/index.html000064400000003344147361034410013363 0ustar00<!doctype html>

<title>CodeMirror: NSIS mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel=stylesheet href=../../lib/codemirror.css>
<script src=../../lib/codemirror.js></script>
<script src="../../addon/mode/simple.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src=nsis.js></script>
<style type=text/css>
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">NSIS</a>
  </ul>
</div>

<article>
<h2>NSIS mode</h2>


<textarea id=code>
; This is a comment
!ifdef ERROR
    !error "Something went wrong"
!endif

OutFile "demo.exe"
RequestExecutionLevel user
SetDetailsPrint listonly

!include "LogicLib.nsh"
!include "WinVer.nsh"

Section -mandatory

    Call logWinVer

    ${If} 1 > 0
      MessageBox MB_OK "Hello world"
    ${EndIf}

SectionEnd

Function logWinVer

    ${If} ${IsWin10}
        DetailPrint "Windows 10!"
    ${ElseIf} ${AtLeastWinVista}
        DetailPrint "We're post-XP"
    ${Else}
        DetailPrint "Legacy system"
    ${EndIf}

FunctionEnd
</textarea>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById('code'), {
    mode: 'nsis',
    indentWithTabs: true,
    smartIndent: true,
    lineNumbers: true,
    matchBrackets: true
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-nsis</code>.</p>
</article>lib/codemirror/mode/gfm/test.js000064400000016624147361034410012505 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({tabSize: 4}, "gfm");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
  var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "gfm", highlightFormatting: true});
  function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); }

  FT("codeBackticks",
     "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]");

  FT("doubleBackticks",
     "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]");

  FT("codeBlock",
     "[comment&formatting&formatting-code-block ```css]",
     "[tag foo]",
     "[comment&formatting&formatting-code-block ```]");

  FT("taskList",
     "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2  foo]",
     "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2  foo]");

  FT("formatting_strikethrough",
     "[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]");

  FT("formatting_strikethrough",
     "foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]");

  MT("emInWordAsterisk",
     "foo[em *bar*]hello");

  MT("emInWordUnderscore",
     "foo_bar_hello");

  MT("emStrongUnderscore",
     "[strong __][em&strong _foo__][em _] bar");

  MT("fencedCodeBlocks",
     "[comment ```]",
     "[comment foo]",
     "",
     "[comment ```]",
     "bar");

  MT("fencedCodeBlockModeSwitching",
     "[comment ```javascript]",
     "[variable foo]",
     "",
     "[comment ```]",
     "bar");

  MT("fencedCodeBlockModeSwitchingObjc",
     "[comment ```objective-c]",
     "[keyword @property] [variable NSString] [operator *] [variable foo];",
     "[comment ```]",
     "bar");

  MT("fencedCodeBlocksNoTildes",
     "~~~",
     "foo",
     "~~~");

  MT("taskListAsterisk",
     "[variable-2 * []] foo]", // Invalid; must have space or x between []
     "[variable-2 * [ ]]bar]", // Invalid; must have space after ]
     "[variable-2 * [x]]hello]", // Invalid; must have space after ]
     "[variable-2 * ][meta [ ]]][variable-2  [world]]]", // Valid; tests reference style links
     "    [variable-3 * ][property [x]]][variable-3  foo]"); // Valid; can be nested

  MT("taskListPlus",
     "[variable-2 + []] foo]", // Invalid; must have space or x between []
     "[variable-2 + [ ]]bar]", // Invalid; must have space after ]
     "[variable-2 + [x]]hello]", // Invalid; must have space after ]
     "[variable-2 + ][meta [ ]]][variable-2  [world]]]", // Valid; tests reference style links
     "    [variable-3 + ][property [x]]][variable-3  foo]"); // Valid; can be nested

  MT("taskListDash",
     "[variable-2 - []] foo]", // Invalid; must have space or x between []
     "[variable-2 - [ ]]bar]", // Invalid; must have space after ]
     "[variable-2 - [x]]hello]", // Invalid; must have space after ]
     "[variable-2 - ][meta [ ]]][variable-2  [world]]]", // Valid; tests reference style links
     "    [variable-3 - ][property [x]]][variable-3  foo]"); // Valid; can be nested

  MT("taskListNumber",
     "[variable-2 1. []] foo]", // Invalid; must have space or x between []
     "[variable-2 2. [ ]]bar]", // Invalid; must have space after ]
     "[variable-2 3. [x]]hello]", // Invalid; must have space after ]
     "[variable-2 4. ][meta [ ]]][variable-2  [world]]]", // Valid; tests reference style links
     "    [variable-3 1. ][property [x]]][variable-3  foo]"); // Valid; can be nested

  MT("SHA",
     "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar");

  MT("SHAEmphasis",
     "[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]");

  MT("shortSHA",
     "foo [link be6a8cc] bar");

  MT("tooShortSHA",
     "foo be6a8c bar");

  MT("longSHA",
     "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar");

  MT("badSHA",
     "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar");

  MT("userSHA",
     "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello");

  MT("userSHAEmphasis",
     "[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]");

  MT("userProjectSHA",
     "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world");

  MT("userProjectSHAEmphasis",
     "[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]");

  MT("num",
     "foo [link #1] bar");

  MT("numEmphasis",
     "[em *foo ][em&link #1][em *]");

  MT("badNum",
     "foo #1bar hello");

  MT("userNum",
     "foo [link bar#1] hello");

  MT("userNumEmphasis",
     "[em *foo ][em&link bar#1][em *]");

  MT("userProjectNum",
     "foo [link bar/hello#1] world");

  MT("userProjectNumEmphasis",
     "[em *foo ][em&link bar/hello#1][em *]");

  MT("vanillaLink",
     "foo [link http://www.example.com/] bar");

  MT("vanillaLinkNoScheme",
     "foo [link www.example.com] bar");

  MT("vanillaLinkHttps",
     "foo [link https://www.example.com/] bar");

  MT("vanillaLinkDataSchema",
     "foo [link data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==] bar");

  MT("vanillaLinkPunctuation",
     "foo [link http://www.example.com/]. bar");

  MT("vanillaLinkExtension",
     "foo [link http://www.example.com/index.html] bar");

  MT("vanillaLinkEmphasis",
     "foo [em *][em&link http://www.example.com/index.html][em *] bar");

  MT("notALink",
     "foo asfd:asdf bar");

  MT("notALink",
     "[comment ```css]",
     "[tag foo] {[property color]:[keyword black];}",
     "[comment ```][link http://www.example.com/]");

  MT("notALink",
     "[comment ``foo `bar` http://www.example.com/``] hello");

  MT("notALink",
     "[comment `foo]",
     "[comment&link http://www.example.com/]",
     "[comment `] foo",
     "",
     "[link http://www.example.com/]");

  MT("headerCodeBlockGithub",
     "[header&header-1 # heading]",
     "",
     "[comment ```]",
     "[comment code]",
     "[comment ```]",
     "",
     "Commit: [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2]",
     "Issue: [link #1]",
     "Link: [link http://www.example.com/]");

  MT("strikethrough",
     "[strikethrough ~~foo~~]");

  MT("strikethroughWithStartingSpace",
     "~~ foo~~");

  MT("strikethroughUnclosedStrayTildes",
    "[strikethrough ~~foo~~~]");

  MT("strikethroughUnclosedStrayTildes",
     "[strikethrough ~~foo ~~]");

  MT("strikethroughUnclosedStrayTildes",
    "[strikethrough ~~foo ~~ bar]");

  MT("strikethroughUnclosedStrayTildes",
    "[strikethrough ~~foo ~~ bar~~]hello");

  MT("strikethroughOneLetter",
     "[strikethrough ~~a~~]");

  MT("strikethroughWrapped",
     "[strikethrough ~~foo]",
     "[strikethrough foo~~]");

  MT("strikethroughParagraph",
     "[strikethrough ~~foo]",
     "",
     "foo[strikethrough ~~bar]");

  MT("strikethroughEm",
     "[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]");

  MT("strikethroughEm",
     "[em *][em&strikethrough ~~foo~~][em *]");

  MT("strikethroughStrong",
     "[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]");

  MT("strikethroughStrong",
     "[strong **][strong&strikethrough ~~foo~~][strong **]");

})();
lib/codemirror/mode/gfm/gfm.js000064400000012021147361034410012262 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i

CodeMirror.defineMode("gfm", function(config, modeConfig) {
  var codeDepth = 0;
  function blankLine(state) {
    state.code = false;
    return null;
  }
  var gfmOverlay = {
    startState: function() {
      return {
        code: false,
        codeBlock: false,
        ateSpace: false
      };
    },
    copyState: function(s) {
      return {
        code: s.code,
        codeBlock: s.codeBlock,
        ateSpace: s.ateSpace
      };
    },
    token: function(stream, state) {
      state.combineTokens = null;

      // Hack to prevent formatting override inside code blocks (block and inline)
      if (state.codeBlock) {
        if (stream.match(/^```+/)) {
          state.codeBlock = false;
          return null;
        }
        stream.skipToEnd();
        return null;
      }
      if (stream.sol()) {
        state.code = false;
      }
      if (stream.sol() && stream.match(/^```+/)) {
        stream.skipToEnd();
        state.codeBlock = true;
        return null;
      }
      // If this block is changed, it may need to be updated in Markdown mode
      if (stream.peek() === '`') {
        stream.next();
        var before = stream.pos;
        stream.eatWhile('`');
        var difference = 1 + stream.pos - before;
        if (!state.code) {
          codeDepth = difference;
          state.code = true;
        } else {
          if (difference === codeDepth) { // Must be exact
            state.code = false;
          }
        }
        return null;
      } else if (state.code) {
        stream.next();
        return null;
      }
      // Check if space. If so, links can be formatted later on
      if (stream.eatSpace()) {
        state.ateSpace = true;
        return null;
      }
      if (stream.sol() || state.ateSpace) {
        state.ateSpace = false;
        if (modeConfig.gitHubSpice !== false) {
          if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) {
            // User/Project@SHA
            // User@SHA
            // SHA
            state.combineTokens = true;
            return "link";
          } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) {
            // User/Project#Num
            // User#Num
            // #Num
            state.combineTokens = true;
            return "link";
          }
        }
      }
      if (stream.match(urlRE) &&
          stream.string.slice(stream.start - 2, stream.start) != "](" &&
          (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start - 1)))) {
        // URLs
        // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls
        // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine
        // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL
        state.combineTokens = true;
        return "link";
      }
      stream.next();
      return null;
    },
    blankLine: blankLine
  };

  var markdownConfig = {
    underscoresBreakWords: false,
    taskLists: true,
    fencedCodeBlocks: '```',
    strikethrough: true
  };
  for (var attr in modeConfig) {
    markdownConfig[attr] = modeConfig[attr];
  }
  markdownConfig.name = "markdown";
  return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);

}, "markdown");

  CodeMirror.defineMIME("text/x-gfm", "gfm");
});
lib/codemirror/mode/gfm/index.html000064400000005027147361034410013160 0ustar00<!doctype html>

<title>CodeMirror: GFM mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/overlay.js"></script>
<script src="../xml/xml.js"></script>
<script src="../markdown/markdown.js"></script>
<script src="gfm.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../css/css.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="../clike/clike.js"></script>
<script src="../meta.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">GFM</a>
  </ul>
</div>

<article>
<h2>GFM mode</h2>
<form><textarea id="code" name="code">
GitHub Flavored Markdown
========================

Everything from markdown plus GFM features:

## URL autolinking

Underscores_are_allowed_between_words.

## Strikethrough text

GFM adds syntax to strikethrough text, which is missing from standard Markdown.

~~Mistaken text.~~
~~**works with other formatting**~~

~~spans across
lines~~

## Fenced code blocks (and syntax highlighting)

```javascript
for (var i = 0; i &lt; items.length; i++) {
    console.log(items[i], i); // log them
}
```

## Task Lists

- [ ] Incomplete task list item
- [x] **Completed** task list item

## A bit of GitHub spice

* SHA: be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
* User@SHA ref: mojombo@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
* User/Project@SHA: mojombo/god@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
* \#Num: #1
* User/#Num: mojombo#1
* User/Project#Num: mojombo/god#1

See http://github.github.com/github-flavored-markdown/.

</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: 'gfm',
        lineNumbers: true,
        theme: "default"
      });
    </script>

    <p>Optionally depends on other modes for properly highlighted code blocks.</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#gfm_*">normal</a>,  <a href="../../test/index.html#verbose,gfm_*">verbose</a>.</p>

  </article>
lib/codemirror/mode/vb/vb.js000064400000021106147361034410011762 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("vb", function(conf, parserConf) {
    var ERRORCLASS = 'error';

    function wordRegexp(words) {
        return new RegExp("^((" + words.join(")|(") + "))\\b", "i");
    }

    var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]");
    var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]');
    var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))");
    var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))");
    var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))");
    var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*");

    var openingKeywords = ['class','module', 'sub','enum','select','while','if','function',  'get','set','property', 'try'];
    var middleKeywords = ['else','elseif','case', 'catch'];
    var endKeywords = ['next','loop'];

    var operatorKeywords = ['and', 'or', 'not', 'xor', 'in'];
    var wordOperators = wordRegexp(operatorKeywords);
    var commonKeywords = ['as', 'dim', 'break',  'continue','optional', 'then',  'until',
                          'goto', 'byval','byref','new','handles','property', 'return',
                          'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false'];
    var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single'];

    var keywords = wordRegexp(commonKeywords);
    var types = wordRegexp(commontypes);
    var stringPrefixes = '"';

    var opening = wordRegexp(openingKeywords);
    var middle = wordRegexp(middleKeywords);
    var closing = wordRegexp(endKeywords);
    var doubleClosing = wordRegexp(['end']);
    var doOpening = wordRegexp(['do']);

    var indentInfo = null;

    CodeMirror.registerHelper("hintWords", "vb", openingKeywords.concat(middleKeywords).concat(endKeywords)
                                .concat(operatorKeywords).concat(commonKeywords).concat(commontypes));

    function indent(_stream, state) {
      state.currentIndent++;
    }

    function dedent(_stream, state) {
      state.currentIndent--;
    }
    // tokenizers
    function tokenBase(stream, state) {
        if (stream.eatSpace()) {
            return null;
        }

        var ch = stream.peek();

        // Handle Comments
        if (ch === "'") {
            stream.skipToEnd();
            return 'comment';
        }


        // Handle Number Literals
        if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) {
            var floatLiteral = false;
            // Floats
            if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; }
            else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; }
            else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; }

            if (floatLiteral) {
                // Float literals may be "imaginary"
                stream.eat(/J/i);
                return 'number';
            }
            // Integers
            var intLiteral = false;
            // Hex
            if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }
            // Octal
            else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }
            // Decimal
            else if (stream.match(/^[1-9]\d*F?/)) {
                // Decimal literals may be "imaginary"
                stream.eat(/J/i);
                // TODO - Can you have imaginary longs?
                intLiteral = true;
            }
            // Zero by itself with no other piece of number.
            else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; }
            if (intLiteral) {
                // Integer literals may be "long"
                stream.eat(/L/i);
                return 'number';
            }
        }

        // Handle Strings
        if (stream.match(stringPrefixes)) {
            state.tokenize = tokenStringFactory(stream.current());
            return state.tokenize(stream, state);
        }

        // Handle operators and Delimiters
        if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) {
            return null;
        }
        if (stream.match(doubleOperators)
            || stream.match(singleOperators)
            || stream.match(wordOperators)) {
            return 'operator';
        }
        if (stream.match(singleDelimiters)) {
            return null;
        }
        if (stream.match(doOpening)) {
            indent(stream,state);
            state.doInCurrentLine = true;
            return 'keyword';
        }
        if (stream.match(opening)) {
            if (! state.doInCurrentLine)
              indent(stream,state);
            else
              state.doInCurrentLine = false;
            return 'keyword';
        }
        if (stream.match(middle)) {
            return 'keyword';
        }

        if (stream.match(doubleClosing)) {
            dedent(stream,state);
            dedent(stream,state);
            return 'keyword';
        }
        if (stream.match(closing)) {
            dedent(stream,state);
            return 'keyword';
        }

        if (stream.match(types)) {
            return 'keyword';
        }

        if (stream.match(keywords)) {
            return 'keyword';
        }

        if (stream.match(identifiers)) {
            return 'variable';
        }

        // Handle non-detected items
        stream.next();
        return ERRORCLASS;
    }

    function tokenStringFactory(delimiter) {
        var singleline = delimiter.length == 1;
        var OUTCLASS = 'string';

        return function(stream, state) {
            while (!stream.eol()) {
                stream.eatWhile(/[^'"]/);
                if (stream.match(delimiter)) {
                    state.tokenize = tokenBase;
                    return OUTCLASS;
                } else {
                    stream.eat(/['"]/);
                }
            }
            if (singleline) {
                if (parserConf.singleLineStringErrors) {
                    return ERRORCLASS;
                } else {
                    state.tokenize = tokenBase;
                }
            }
            return OUTCLASS;
        };
    }


    function tokenLexer(stream, state) {
        var style = state.tokenize(stream, state);
        var current = stream.current();

        // Handle '.' connected identifiers
        if (current === '.') {
            style = state.tokenize(stream, state);
            current = stream.current();
            if (style === 'variable') {
                return 'variable';
            } else {
                return ERRORCLASS;
            }
        }


        var delimiter_index = '[({'.indexOf(current);
        if (delimiter_index !== -1) {
            indent(stream, state );
        }
        if (indentInfo === 'dedent') {
            if (dedent(stream, state)) {
                return ERRORCLASS;
            }
        }
        delimiter_index = '])}'.indexOf(current);
        if (delimiter_index !== -1) {
            if (dedent(stream, state)) {
                return ERRORCLASS;
            }
        }

        return style;
    }

    var external = {
        electricChars:"dDpPtTfFeE ",
        startState: function() {
            return {
              tokenize: tokenBase,
              lastToken: null,
              currentIndent: 0,
              nextLineIndent: 0,
              doInCurrentLine: false


          };
        },

        token: function(stream, state) {
            if (stream.sol()) {
              state.currentIndent += state.nextLineIndent;
              state.nextLineIndent = 0;
              state.doInCurrentLine = 0;
            }
            var style = tokenLexer(stream, state);

            state.lastToken = {style:style, content: stream.current()};



            return style;
        },

        indent: function(state, textAfter) {
            var trueText = textAfter.replace(/^\s+|\s+$/g, '') ;
            if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);
            if(state.currentIndent < 0) return 0;
            return state.currentIndent * conf.indentUnit;
        },

        lineComment: "'"
    };
    return external;
});

CodeMirror.defineMIME("text/x-vb", "vb");

});
lib/codemirror/mode/vb/index.html000064400000006304147361034410013015 0ustar00<!doctype html>

<title>CodeMirror: VB.NET mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link href="http://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet" type="text/css">
<script src="../../lib/codemirror.js"></script>
<script src="vb.js"></script>
<script type="text/javascript" src="../../addon/runmode/runmode.js"></script>
<style>
      .CodeMirror {border: 1px solid #aaa; height:210px; height: auto;}
      .CodeMirror-scroll { overflow-x: auto; overflow-y: hidden;}
      .CodeMirror pre { font-family: Inconsolata; font-size: 14px}
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">VB.NET</a>
  </ul>
</div>

<article>
<h2>VB.NET mode</h2>

<script type="text/javascript">
function test(golden, text) {
  var ok = true;
  var i = 0;
  function callback(token, style, lineNo, pos){
		//console.log(String(token) + " " + String(style) + " " + String(lineNo) + " " + String(pos));
    var result = [String(token), String(style)];
    if (golden[i][0] != result[0] || golden[i][1] != result[1]){
      return "Error, expected: " + String(golden[i]) + ", got: " + String(result);
      ok = false;
    }
    i++;
  }
  CodeMirror.runMode(text, "text/x-vb",callback); 

  if (ok) return "Tests OK";
}
function testTypes() {
  var golden = [['Integer','keyword'],[' ','null'],['Float','keyword']]
  var text =  "Integer Float";
  return test(golden,text);
}
function testIf(){
  var golden = [['If','keyword'],[' ','null'],['True','keyword'],[' ','null'],['End','keyword'],[' ','null'],['If','keyword']];
  var text = 'If True End If';
  return test(golden, text);
}
function testDecl(){
   var golden = [['Dim','keyword'],[' ','null'],['x','variable'],[' ','null'],['as','keyword'],[' ','null'],['Integer','keyword']];
   var text = 'Dim x as Integer';
   return test(golden, text);
}
function testAll(){
  var result = "";

  result += testTypes() + "\n";
  result += testIf() + "\n";
  result += testDecl() + "\n";
  return result;

}
function initText(editor) {
  var content = 'Class rocket\nPrivate quality as Double\nPublic Sub launch() as String\nif quality > 0.8\nlaunch = "Successful"\nElse\nlaunch = "Failed"\nEnd If\nEnd sub\nEnd class\n';
  editor.setValue(content);
  for (var i =0; i< editor.lineCount(); i++) editor.indentLine(i);
}
function init() {
    editor = CodeMirror.fromTextArea(document.getElementById("solution"), {
        lineNumbers: true,
        mode: "text/x-vb",
        readOnly: false
    });
    runTest();
}
function runTest() {
	document.getElementById('testresult').innerHTML = testAll();
  initText(editor);
	
}
document.body.onload = init;
</script>

  <div id="edit">
  <textarea style="width:95%;height:200px;padding:5px;" name="solution" id="solution" ></textarea>
  </div>
  <pre id="testresult"></pre>
  <p>MIME type defined: <code>text/x-vb</code>.</p>

</article>
lib/codemirror/mode/nginx/nginx.js000064400000023664147361034410013225 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("nginx", function(config) {

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var keywords = words(
    /* ngxDirectiveControl */ "break return rewrite set" +
    /* ngxDirective */ " accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23"
    );

  var keywords_block = words(
    /* ngxDirectiveBlock */ "http mail events server types location upstream charset_map limit_except if geo map"
    );

  var keywords_important = words(
    /* ngxDirectiveImportant */ "include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files"
    );

  var indentUnit = config.indentUnit, type;
  function ret(style, tp) {type = tp; return style;}

  function tokenBase(stream, state) {


    stream.eatWhile(/[\w\$_]/);

    var cur = stream.current();


    if (keywords.propertyIsEnumerable(cur)) {
      return "keyword";
    }
    else if (keywords_block.propertyIsEnumerable(cur)) {
      return "variable-2";
    }
    else if (keywords_important.propertyIsEnumerable(cur)) {
      return "string-2";
    }
    /**/

    var ch = stream.next();
    if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("meta", stream.current());}
    else if (ch == "/" && stream.eat("*")) {
      state.tokenize = tokenCComment;
      return tokenCComment(stream, state);
    }
    else if (ch == "<" && stream.eat("!")) {
      state.tokenize = tokenSGMLComment;
      return tokenSGMLComment(stream, state);
    }
    else if (ch == "=") ret(null, "compare");
    else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare");
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    else if (ch == "#") {
      stream.skipToEnd();
      return ret("comment", "comment");
    }
    else if (ch == "!") {
      stream.match(/^\s*\w*/);
      return ret("keyword", "important");
    }
    else if (/\d/.test(ch)) {
      stream.eatWhile(/[\w.%]/);
      return ret("number", "unit");
    }
    else if (/[,.+>*\/]/.test(ch)) {
      return ret(null, "select-op");
    }
    else if (/[;{}:\[\]]/.test(ch)) {
      return ret(null, ch);
    }
    else {
      stream.eatWhile(/[\w\\\-]/);
      return ret("variable", "variable");
    }
  }

  function tokenCComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == "/") {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ret("comment", "comment");
  }

  function tokenSGMLComment(stream, state) {
    var dashes = 0, ch;
    while ((ch = stream.next()) != null) {
      if (dashes >= 2 && ch == ">") {
        state.tokenize = tokenBase;
        break;
      }
      dashes = (ch == "-") ? dashes + 1 : 0;
    }
    return ret("comment", "comment");
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped)
          break;
        escaped = !escaped && ch == "\\";
      }
      if (!escaped) state.tokenize = tokenBase;
      return ret("string", "string");
    };
  }

  return {
    startState: function(base) {
      return {tokenize: tokenBase,
              baseIndent: base || 0,
              stack: []};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      type = null;
      var style = state.tokenize(stream, state);

      var context = state.stack[state.stack.length-1];
      if (type == "hash" && context == "rule") style = "atom";
      else if (style == "variable") {
        if (context == "rule") style = "number";
        else if (!context || context == "@media{") style = "tag";
      }

      if (context == "rule" && /^[\{\};]$/.test(type))
        state.stack.pop();
      if (type == "{") {
        if (context == "@media") state.stack[state.stack.length-1] = "@media{";
        else state.stack.push("{");
      }
      else if (type == "}") state.stack.pop();
      else if (type == "@media") state.stack.push("@media");
      else if (context == "{" && type != "comment") state.stack.push("rule");
      return style;
    },

    indent: function(state, textAfter) {
      var n = state.stack.length;
      if (/^\}/.test(textAfter))
        n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1;
      return state.baseIndent + n * indentUnit;
    },

    electricChars: "}"
  };
});

CodeMirror.defineMIME("text/x-nginx-conf", "nginx");

});
lib/codemirror/mode/nginx/index.html000064400000012167147361034410013535 0ustar00<!doctype html>
<head>
<title>CodeMirror: NGINX mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="nginx.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
    <link rel="stylesheet" href="../../doc/docs.css">
  </head>

  <style>
    body {
      margin: 0em auto;
    }

    .CodeMirror, .CodeMirror-scroll {
      height: 600px;
    }
  </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">NGINX</a>
  </ul>
</div>

<article>
<h2>NGINX mode</h2>
<form><textarea id="code" name="code" style="height: 800px;">
server {
  listen 173.255.219.235:80;
  server_name website.com.au;
  rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
}

server {
  listen 173.255.219.235:443;
  server_name website.com.au;
  rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
}

server {

  listen      173.255.219.235:80;
  server_name www.website.com.au;



  root        /data/www;
  index       index.html index.php;

  location / {
    index index.html index.php;     ## Allow a static html file to be shown first
    try_files $uri $uri/ @handler;  ## If missing pass the URI to Magento's front handler
    expires 30d;                    ## Assume all files are cachable
  }

  ## These locations would be hidden by .htaccess normally
  location /app/                { deny all; }
  location /includes/           { deny all; }
  location /lib/                { deny all; }
  location /media/downloadable/ { deny all; }
  location /pkginfo/            { deny all; }
  location /report/config.xml   { deny all; }
  location /var/                { deny all; }

  location /var/export/ { ## Allow admins only to view export folder
    auth_basic           "Restricted"; ## Message shown in login window
    auth_basic_user_file /rs/passwords/testfile; ## See /etc/nginx/htpassword
    autoindex            on;
  }

  location  /. { ## Disable .htaccess and other hidden files
    return 404;
  }

  location @handler { ## Magento uses a common front handler
    rewrite / /index.php;
  }

  location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
    rewrite ^/(.*.php)/ /$1 last;
  }

  location ~ \.php$ {
    if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        /rs/confs/nginx/fastcgi_params;
  }

}


server {

  listen              173.255.219.235:443;
  server_name         website.com.au www.website.com.au;

  root   /data/www;
  index index.html index.php;

  ssl                 on;
  ssl_certificate     /rs/ssl/ssl.crt;
  ssl_certificate_key /rs/ssl/ssl.key;

  ssl_session_timeout  5m;

  ssl_protocols  SSLv2 SSLv3 TLSv1;
  ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  ssl_prefer_server_ciphers   on;



  location / {
    index index.html index.php; ## Allow a static html file to be shown first
    try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
    expires 30d; ## Assume all files are cachable
  }

  ## These locations would be hidden by .htaccess normally
  location /app/                { deny all; }
  location /includes/           { deny all; }
  location /lib/                { deny all; }
  location /media/downloadable/ { deny all; }
  location /pkginfo/            { deny all; }
  location /report/config.xml   { deny all; }
  location /var/                { deny all; }

  location /var/export/ { ## Allow admins only to view export folder
    auth_basic           "Restricted"; ## Message shown in login window
    auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
    autoindex            on;
  }

  location  /. { ## Disable .htaccess and other hidden files
    return 404;
  }

  location @handler { ## Magento uses a common front handler
    rewrite / /index.php;
  }

  location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
    rewrite ^/(.*.php)/ /$1 last;
  }

  location ~ .php$ { ## Execute PHP scripts
    if (!-e $request_filename) { rewrite  /index.php last; } ## Catch 404s that try_files miss

    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        /rs/confs/nginx/fastcgi_params;

    fastcgi_param HTTPS on;
  }

}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/nginx</code>.</p>

  </article>
lib/codemirror/mode/dockerfile/index.html000064400000004333147361034410014515 0ustar00<!doctype html>

<title>CodeMirror: Dockerfile mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/simple.js"></script>
<script src="dockerfile.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Dockerfile</a>
  </ul>
</div>

<article>
<h2>Dockerfile mode</h2>
<form><textarea id="code" name="code"># Install Ghost blogging platform and run development environment
#
# VERSION 1.0.0

FROM ubuntu:12.10
MAINTAINER Amer Grgic "amer@livebyt.es"
WORKDIR /data/ghost

# Install dependencies for nginx installation
RUN apt-get update
RUN apt-get install -y python g++ make software-properties-common --force-yes
RUN add-apt-repository ppa:chris-lea/node.js
RUN apt-get update
# Install unzip
RUN apt-get install -y unzip
# Install curl
RUN apt-get install -y curl
# Install nodejs & npm
RUN apt-get install -y rlwrap
RUN apt-get install -y nodejs 
# Download Ghost v0.4.1
RUN curl -L https://ghost.org/zip/ghost-latest.zip -o /tmp/ghost.zip
# Unzip Ghost zip to /data/ghost
RUN unzip -uo /tmp/ghost.zip -d /data/ghost
# Add custom config js to /data/ghost
ADD ./config.example.js /data/ghost/config.js
# Install Ghost with NPM
RUN cd /data/ghost/ && npm install --production
# Expose port 2368
EXPOSE 2368
# Run Ghost
CMD ["npm","start"]
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        mode: "dockerfile"
      });
    </script>

    <p>Dockerfile syntax highlighting for CodeMirror. Depends on
    the <a href="../../demo/simplemode.html">simplemode</a> addon.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-dockerfile</code></p>
  </article>
lib/codemirror/mode/dockerfile/dockerfile.js000064400000004255147361034410015170 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  // Collect all Dockerfile directives
  var instructions = ["from", "maintainer", "run", "cmd", "expose", "env",
                      "add", "copy", "entrypoint", "volume", "user",
                      "workdir", "onbuild"],
      instructionRegex = "(" + instructions.join('|') + ")",
      instructionOnlyLine = new RegExp(instructionRegex + "\\s*$", "i"),
      instructionWithArguments = new RegExp(instructionRegex + "(\\s+)", "i");

  CodeMirror.defineSimpleMode("dockerfile", {
    start: [
      // Block comment: This is a line starting with a comment
      {
        regex: /#.*$/,
        token: "comment"
      },
      // Highlight an instruction without any arguments (for convenience)
      {
        regex: instructionOnlyLine,
        token: "variable-2"
      },
      // Highlight an instruction followed by arguments
      {
        regex: instructionWithArguments,
        token: ["variable-2", null],
        next: "arguments"
      },
      {
        regex: /./,
        token: null
      }
    ],
    arguments: [
      {
        // Line comment without instruction arguments is an error
        regex: /#.*$/,
        token: "error",
        next: "start"
      },
      {
        regex: /[^#]+\\$/,
        token: null
      },
      {
        // Match everything except for the inline comment
        regex: /[^#]+/,
        token: null,
        next: "start"
      },
      {
        regex: /$/,
        token: null,
        next: "start"
      },
      // Fail safe return to start
      {
        token: null,
        next: "start"
      }
    ],
      meta: {
          lineComment: "#"
      }
  });

  CodeMirror.defineMIME("text/x-dockerfile", "dockerfile");
});
lib/codemirror/mode/go/go.js000064400000013501147361034410011756 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("go", function(config) {
  var indentUnit = config.indentUnit;

  var keywords = {
    "break":true, "case":true, "chan":true, "const":true, "continue":true,
    "default":true, "defer":true, "else":true, "fallthrough":true, "for":true,
    "func":true, "go":true, "goto":true, "if":true, "import":true,
    "interface":true, "map":true, "package":true, "range":true, "return":true,
    "select":true, "struct":true, "switch":true, "type":true, "var":true,
    "bool":true, "byte":true, "complex64":true, "complex128":true,
    "float32":true, "float64":true, "int8":true, "int16":true, "int32":true,
    "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true,
    "uint64":true, "int":true, "uint":true, "uintptr":true, "error": true
  };

  var atoms = {
    "true":true, "false":true, "iota":true, "nil":true, "append":true,
    "cap":true, "close":true, "complex":true, "copy":true, "imag":true,
    "len":true, "make":true, "new":true, "panic":true, "print":true,
    "println":true, "real":true, "recover":true
  };

  var isOperatorChar = /[+\-*&^%:=<>!|\/]/;

  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'" || ch == "`") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\d\.]/.test(ch)) {
      if (ch == ".") {
        stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/);
      } else if (ch == "0") {
        stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/);
      } else {
        stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/);
      }
      return "number";
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_\xa1-\uffff]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur)) {
      if (cur == "case" || cur == "default") curPunc = "case";
      return "keyword";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && quote != "`" && next == "\\";
      }
      if (end || !(escaped || quote == "`"))
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null, state.context);
  }
  function popContext(state) {
    if (!state.context.prev) return;
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
        if (ctx.type == "case") ctx.type = "}";
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment") return style;
      if (ctx.align == null) ctx.align = true;

      if (curPunc == "{") pushContext(state, stream.column(), "}");
      else if (curPunc == "[") pushContext(state, stream.column(), "]");
      else if (curPunc == "(") pushContext(state, stream.column(), ")");
      else if (curPunc == "case") ctx.type = "case";
      else if (curPunc == "}" && ctx.type == "}") ctx = popContext(state);
      else if (curPunc == ctx.type) popContext(state);
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null) return 0;
      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
      if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) {
        state.context.type = "}";
        return ctx.indented;
      }
      var closing = firstChar == ctx.type;
      if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}):",
    fold: "brace",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

CodeMirror.defineMIME("text/x-go", "go");

});
lib/codemirror/mode/go/index.html000064400000004176147361034410013020 0ustar00<!doctype html>

<title>CodeMirror: Go mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/elegant.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="go.js"></script>
<style>.CodeMirror {border:1px solid #999; background:#ffc}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Go</a>
  </ul>
</div>

<article>
<h2>Go mode</h2>
<form><textarea id="code" name="code">
// Prime Sieve in Go.
// Taken from the Go specification.
// Copyright © The Go Authors.

package main

import "fmt"

// Send the sequence 2, 3, 4, ... to channel 'ch'.
func generate(ch chan&lt;- int) {
	for i := 2; ; i++ {
		ch &lt;- i  // Send 'i' to channel 'ch'
	}
}

// Copy the values from channel 'src' to channel 'dst',
// removing those divisible by 'prime'.
func filter(src &lt;-chan int, dst chan&lt;- int, prime int) {
	for i := range src {    // Loop over values received from 'src'.
		if i%prime != 0 {
			dst &lt;- i  // Send 'i' to channel 'dst'.
		}
	}
}

// The prime sieve: Daisy-chain filter processes together.
func sieve() {
	ch := make(chan int)  // Create a new channel.
	go generate(ch)       // Start generate() as a subprocess.
	for {
		prime := &lt;-ch
		fmt.Print(prime, "\n")
		ch1 := make(chan int)
		go filter(ch, ch1, prime)
		ch = ch1
	}
}

func main() {
	sieve()
}
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        theme: "elegant",
        matchBrackets: true,
        indentUnit: 8,
        tabSize: 8,
        indentWithTabs: true,
        mode: "text/x-go"
      });
    </script>

    <p><strong>MIME type:</strong> <code>text/x-go</code></p>
  </article>
lib/codemirror/mode/meta.js000064400000034327147361034410011703 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.modeInfo = [
    {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]},
    {name: "PGP", mimes: ["application/pgp", "application/pgp-keys", "application/pgp-signature"], mode: "asciiarmor", ext: ["pgp"]},
    {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn", "asn1"]},
    {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk", file: /^extensions\.conf$/i},
    {name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]},
    {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]},
    {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]},
    {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]},
    {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp"]},
    {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]},
    {name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]},
    {name: "Closure Stylesheets (GSS)", mime: "text/x-gss", mode: "css", ext: ["gss"]},
    {name: "CMake", mime: "text/x-cmake", mode: "cmake", ext: ["cmake", "cmake.in"], file: /^CMakeLists.txt$/},
    {name: "CoffeeScript", mime: "text/x-coffeescript", mode: "coffeescript", ext: ["coffee"], alias: ["coffee", "coffee-script"]},
    {name: "Common Lisp", mime: "text/x-common-lisp", mode: "commonlisp", ext: ["cl", "lisp", "el"], alias: ["lisp"]},
    {name: "Cypher", mime: "application/x-cypher-query", mode: "cypher", ext: ["cyp", "cypher"]},
    {name: "Cython", mime: "text/x-cython", mode: "python", ext: ["pyx", "pxd", "pxi"]},
    {name: "Crystal", mime: "text/x-crystal", mode: "crystal", ext: ["cr"]},
    {name: "CSS", mime: "text/css", mode: "css", ext: ["css"]},
    {name: "CQL", mime: "text/x-cassandra", mode: "sql", ext: ["cql"]},
    {name: "D", mime: "text/x-d", mode: "d", ext: ["d"]},
    {name: "Dart", mimes: ["application/dart", "text/x-dart"], mode: "dart", ext: ["dart"]},
    {name: "diff", mime: "text/x-diff", mode: "diff", ext: ["diff", "patch"]},
    {name: "Django", mime: "text/x-django", mode: "django"},
    {name: "Dockerfile", mime: "text/x-dockerfile", mode: "dockerfile", file: /^Dockerfile$/},
    {name: "DTD", mime: "application/xml-dtd", mode: "dtd", ext: ["dtd"]},
    {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]},
    {name: "EBNF", mime: "text/x-ebnf", mode: "ebnf"},
    {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]},
    {name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]},
    {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]},
    {name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]},
    {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]},
    {name: "Embedded Ruby", mime: "application/x-erb", mode: "htmlembedded", ext: ["erb"]},
    {name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]},
    {name: "Factor", mime: "text/x-factor", mode: "factor", ext: ["factor"]},
    {name: "FCL", mime: "text/x-fcl", mode: "fcl"},
    {name: "Forth", mime: "text/x-forth", mode: "forth", ext: ["forth", "fth", "4th"]},
    {name: "Fortran", mime: "text/x-fortran", mode: "fortran", ext: ["f", "for", "f77", "f90"]},
    {name: "F#", mime: "text/x-fsharp", mode: "mllike", ext: ["fs"], alias: ["fsharp"]},
    {name: "Gas", mime: "text/x-gas", mode: "gas", ext: ["s"]},
    {name: "Gherkin", mime: "text/x-feature", mode: "gherkin", ext: ["feature"]},
    {name: "GitHub Flavored Markdown", mime: "text/x-gfm", mode: "gfm", file: /^(readme|contributing|history).md$/i},
    {name: "Go", mime: "text/x-go", mode: "go", ext: ["go"]},
    {name: "Groovy", mime: "text/x-groovy", mode: "groovy", ext: ["groovy", "gradle"]},
    {name: "HAML", mime: "text/x-haml", mode: "haml", ext: ["haml"]},
    {name: "Haskell", mime: "text/x-haskell", mode: "haskell", ext: ["hs"]},
    {name: "Haskell (Literate)", mime: "text/x-literate-haskell", mode: "haskell-literate", ext: ["lhs"]},
    {name: "Haxe", mime: "text/x-haxe", mode: "haxe", ext: ["hx"]},
    {name: "HXML", mime: "text/x-hxml", mode: "haxe", ext: ["hxml"]},
    {name: "ASP.NET", mime: "application/x-aspx", mode: "htmlembedded", ext: ["aspx"], alias: ["asp", "aspx"]},
    {name: "HTML", mime: "text/html", mode: "htmlmixed", ext: ["html", "htm"], alias: ["xhtml"]},
    {name: "HTTP", mime: "message/http", mode: "http"},
    {name: "IDL", mime: "text/x-idl", mode: "idl", ext: ["pro"]},
    {name: "Pug", mime: "text/x-pug", mode: "pug", ext: ["jade", "pug"], alias: ["jade"]},
    {name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]},
    {name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"], alias: ["jsp"]},
    {name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript"],
     mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]},
    {name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"], alias: ["json5"]},
    {name: "JSON-LD", mime: "application/ld+json", mode: "javascript", ext: ["jsonld"], alias: ["jsonld"]},
    {name: "JSX", mime: "text/jsx", mode: "jsx", ext: ["jsx"]},
    {name: "Jinja2", mime: "null", mode: "jinja2"},
    {name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]},
    {name: "Kotlin", mime: "text/x-kotlin", mode: "clike", ext: ["kt"]},
    {name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]},
    {name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"], alias: ["ls"]},
    {name: "Lua", mime: "text/x-lua", mode: "lua", ext: ["lua"]},
    {name: "Markdown", mime: "text/x-markdown", mode: "markdown", ext: ["markdown", "md", "mkd"]},
    {name: "mIRC", mime: "text/mirc", mode: "mirc"},
    {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"},
    {name: "Mathematica", mime: "text/x-mathematica", mode: "mathematica", ext: ["m", "nb"]},
    {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]},
    {name: "MUMPS", mime: "text/x-mumps", mode: "mumps", ext: ["mps"]},
    {name: "MS SQL", mime: "text/x-mssql", mode: "sql"},
    {name: "mbox", mime: "application/mbox", mode: "mbox", ext: ["mbox"]},
    {name: "MySQL", mime: "text/x-mysql", mode: "sql"},
    {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx", file: /nginx.*\.conf$/i},
    {name: "NSIS", mime: "text/x-nsis", mode: "nsis", ext: ["nsh", "nsi"]},
    {name: "NTriples", mime: "text/n-triples", mode: "ntriples", ext: ["nt"]},
    {name: "Objective C", mime: "text/x-objectivec", mode: "clike", ext: ["m", "mm"], alias: ["objective-c", "objc"]},
    {name: "OCaml", mime: "text/x-ocaml", mode: "mllike", ext: ["ml", "mli", "mll", "mly"]},
    {name: "Octave", mime: "text/x-octave", mode: "octave", ext: ["m"]},
    {name: "Oz", mime: "text/x-oz", mode: "oz", ext: ["oz"]},
    {name: "Pascal", mime: "text/x-pascal", mode: "pascal", ext: ["p", "pas"]},
    {name: "PEG.js", mime: "null", mode: "pegjs", ext: ["jsonld"]},
    {name: "Perl", mime: "text/x-perl", mode: "perl", ext: ["pl", "pm"]},
    {name: "PHP", mime: "application/x-httpd-php", mode: "php", ext: ["php", "php3", "php4", "php5", "phtml"]},
    {name: "Pig", mime: "text/x-pig", mode: "pig", ext: ["pig"]},
    {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]},
    {name: "PLSQL", mime: "text/x-plsql", mode: "sql", ext: ["pls"]},
    {name: "PowerShell", mime: "application/x-powershell", mode: "powershell", ext: ["ps1", "psd1", "psm1"]},
    {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"], alias: ["ini", "properties"]},
    {name: "ProtoBuf", mime: "text/x-protobuf", mode: "protobuf", ext: ["proto"]},
    {name: "Python", mime: "text/x-python", mode: "python", ext: ["BUILD", "bzl", "py", "pyw"], file: /^(BUCK|BUILD)$/},
    {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]},
    {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]},
    {name: "R", mime: "text/x-rsrc", mode: "r", ext: ["r"], alias: ["rscript"]},
    {name: "reStructuredText", mime: "text/x-rst", mode: "rst", ext: ["rst"], alias: ["rst"]},
    {name: "RPM Changes", mime: "text/x-rpm-changes", mode: "rpm"},
    {name: "RPM Spec", mime: "text/x-rpm-spec", mode: "rpm", ext: ["spec"]},
    {name: "Ruby", mime: "text/x-ruby", mode: "ruby", ext: ["rb"], alias: ["jruby", "macruby", "rake", "rb", "rbx"]},
    {name: "Rust", mime: "text/x-rustsrc", mode: "rust", ext: ["rs"]},
    {name: "SAS", mime: "text/x-sas", mode: "sas", ext: ["sas"]},
    {name: "Sass", mime: "text/x-sass", mode: "sass", ext: ["sass"]},
    {name: "Scala", mime: "text/x-scala", mode: "clike", ext: ["scala"]},
    {name: "Scheme", mime: "text/x-scheme", mode: "scheme", ext: ["scm", "ss"]},
    {name: "SCSS", mime: "text/x-scss", mode: "css", ext: ["scss"]},
    {name: "Shell", mime: "text/x-sh", mode: "shell", ext: ["sh", "ksh", "bash"], alias: ["bash", "sh", "zsh"], file: /^PKGBUILD$/},
    {name: "Sieve", mime: "application/sieve", mode: "sieve", ext: ["siv", "sieve"]},
    {name: "Slim", mimes: ["text/x-slim", "application/x-slim"], mode: "slim", ext: ["slim"]},
    {name: "Smalltalk", mime: "text/x-stsrc", mode: "smalltalk", ext: ["st"]},
    {name: "Smarty", mime: "text/x-smarty", mode: "smarty", ext: ["tpl"]},
    {name: "Solr", mime: "text/x-solr", mode: "solr"},
    {name: "Soy", mime: "text/x-soy", mode: "soy", ext: ["soy"], alias: ["closure template"]},
    {name: "SPARQL", mime: "application/sparql-query", mode: "sparql", ext: ["rq", "sparql"], alias: ["sparul"]},
    {name: "Spreadsheet", mime: "text/x-spreadsheet", mode: "spreadsheet", alias: ["excel", "formula"]},
    {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]},
    {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]},
    {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]},
    {name: "sTeX", mime: "text/x-stex", mode: "stex"},
    {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"], alias: ["tex"]},
    {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v"]},
    {name: "Tcl", mime: "text/x-tcl", mode: "tcl", ext: ["tcl"]},
    {name: "Textile", mime: "text/x-textile", mode: "textile", ext: ["textile"]},
    {name: "TiddlyWiki ", mime: "text/x-tiddlywiki", mode: "tiddlywiki"},
    {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"},
    {name: "TOML", mime: "text/x-toml", mode: "toml", ext: ["toml"]},
    {name: "Tornado", mime: "text/x-tornado", mode: "tornado"},
    {name: "troff", mime: "text/troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]},
    {name: "TTCN", mime: "text/x-ttcn", mode: "ttcn", ext: ["ttcn", "ttcn3", "ttcnpp"]},
    {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode: "ttcn-cfg", ext: ["cfg"]},
    {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]},
    {name: "TypeScript", mime: "application/typescript", mode: "javascript", ext: ["ts"], alias: ["ts"]},
    {name: "Twig", mime: "text/x-twig", mode: "twig"},
    {name: "Web IDL", mime: "text/x-webidl", mode: "webidl", ext: ["webidl"]},
    {name: "VB.NET", mime: "text/x-vb", mode: "vb", ext: ["vb"]},
    {name: "VBScript", mime: "text/vbscript", mode: "vbscript", ext: ["vbs"]},
    {name: "Velocity", mime: "text/velocity", mode: "velocity", ext: ["vtl"]},
    {name: "Verilog", mime: "text/x-verilog", mode: "verilog", ext: ["v"]},
    {name: "VHDL", mime: "text/x-vhdl", mode: "vhdl", ext: ["vhd", "vhdl"]},
    {name: "XML", mimes: ["application/xml", "text/xml"], mode: "xml", ext: ["xml", "xsl", "xsd"], alias: ["rss", "wsdl", "xsd"]},
    {name: "XQuery", mime: "application/xquery", mode: "xquery", ext: ["xy", "xquery"]},
    {name: "Yacas", mime: "text/x-yacas", mode: "yacas", ext: ["ys"]},
    {name: "YAML", mime: "text/x-yaml", mode: "yaml", ext: ["yaml", "yml"], alias: ["yml"]},
    {name: "Z80", mime: "text/x-z80", mode: "z80", ext: ["z80"]},
    {name: "mscgen", mime: "text/x-mscgen", mode: "mscgen", ext: ["mscgen", "mscin", "msc"]},
    {name: "xu", mime: "text/x-xu", mode: "mscgen", ext: ["xu"]},
    {name: "msgenny", mime: "text/x-msgenny", mode: "mscgen", ext: ["msgenny"]}
  ];
  // Ensure all modes have a mime property for backwards compatibility
  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
    var info = CodeMirror.modeInfo[i];
    if (info.mimes) info.mime = info.mimes[0];
  }

  CodeMirror.findModeByMIME = function(mime) {
    mime = mime.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.mime == mime) return info;
      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)
        if (info.mimes[j] == mime) return info;
    }
  };

  CodeMirror.findModeByExtension = function(ext) {
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.ext) for (var j = 0; j < info.ext.length; j++)
        if (info.ext[j] == ext) return info;
    }
  };

  CodeMirror.findModeByFileName = function(filename) {
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.file && info.file.test(filename)) return info;
    }
    var dot = filename.lastIndexOf(".");
    var ext = dot > -1 && filename.substring(dot + 1, filename.length);
    if (ext) return CodeMirror.findModeByExtension(ext);
  };

  CodeMirror.findModeByName = function(name) {
    name = name.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.name.toLowerCase() == name) return info;
      if (info.alias) for (var j = 0; j < info.alias.length; j++)
        if (info.alias[j].toLowerCase() == name) return info;
    }
  };
});
lib/codemirror/mode/scheme/index.html000064400000004772147361034410013661 0ustar00<!doctype html>

<title>CodeMirror: Scheme mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="scheme.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Scheme</a>
  </ul>
</div>

<article>
<h2>Scheme mode</h2>
<form><textarea id="code" name="code">
; See if the input starts with a given symbol.
(define (match-symbol input pattern)
  (cond ((null? (remain input)) #f)
	((eqv? (car (remain input)) pattern) (r-cdr input))
	(else #f)))

; Allow the input to start with one of a list of patterns.
(define (match-or input pattern)
  (cond ((null? pattern) #f)
	((match-pattern input (car pattern)))
	(else (match-or input (cdr pattern)))))

; Allow a sequence of patterns.
(define (match-seq input pattern)
  (if (null? pattern)
      input
      (let ((match (match-pattern input (car pattern))))
	(if match (match-seq match (cdr pattern)) #f))))

; Match with the pattern but no problem if it does not match.
(define (match-opt input pattern)
  (let ((match (match-pattern input (car pattern))))
    (if match match input)))

; Match anything (other than '()), until pattern is found. The rather
; clumsy form of requiring an ending pattern is needed to decide where
; the end of the match is. If none is given, this will match the rest
; of the sentence.
(define (match-any input pattern)
  (cond ((null? (remain input)) #f)
	((null? pattern) (f-cons (remain input) (clear-remain input)))
	(else
	 (let ((accum-any (collector)))
	   (define (match-pattern-any input pattern)
	     (cond ((null? (remain input)) #f)
		   (else (accum-any (car (remain input)))
			 (cond ((match-pattern (r-cdr input) pattern))
			       (else (match-pattern-any (r-cdr input) pattern))))))
	   (let ((retval (match-pattern-any input (car pattern))))
	     (if retval
		 (f-cons (accum-any) retval)
		 #f))))))
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-scheme</code>.</p>

  </article>
lib/codemirror/mode/scheme/scheme.js000064400000032177147361034410013466 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/**
 * Author: Koh Zi Han, based on implementation by Koh Zi Chun
 */

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("scheme", function () {
    var BUILTIN = "builtin", COMMENT = "comment", STRING = "string",
        ATOM = "atom", NUMBER = "number", BRACKET = "bracket";
    var INDENT_WORD_SKIP = 2;

    function makeKeywords(str) {
        var obj = {}, words = str.split(" ");
        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
        return obj;
    }

    var keywords = makeKeywords("λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?");
    var indentKeys = makeKeywords("define let letrec let* lambda");

    function stateStack(indent, type, prev) { // represents a state stack object
        this.indent = indent;
        this.type = type;
        this.prev = prev;
    }

    function pushStack(state, indent, type) {
        state.indentStack = new stateStack(indent, type, state.indentStack);
    }

    function popStack(state) {
        state.indentStack = state.indentStack.prev;
    }

    var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i);
    var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i);
    var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i);
    var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i);

    function isBinaryNumber (stream) {
        return stream.match(binaryMatcher);
    }

    function isOctalNumber (stream) {
        return stream.match(octalMatcher);
    }

    function isDecimalNumber (stream, backup) {
        if (backup === true) {
            stream.backUp(1);
        }
        return stream.match(decimalMatcher);
    }

    function isHexNumber (stream) {
        return stream.match(hexMatcher);
    }

    return {
        startState: function () {
            return {
                indentStack: null,
                indentation: 0,
                mode: false,
                sExprComment: false
            };
        },

        token: function (stream, state) {
            if (state.indentStack == null && stream.sol()) {
                // update indentation, but only if indentStack is empty
                state.indentation = stream.indentation();
            }

            // skip spaces
            if (stream.eatSpace()) {
                return null;
            }
            var returnType = null;

            switch(state.mode){
                case "string": // multi-line string parsing mode
                    var next, escaped = false;
                    while ((next = stream.next()) != null) {
                        if (next == "\"" && !escaped) {

                            state.mode = false;
                            break;
                        }
                        escaped = !escaped && next == "\\";
                    }
                    returnType = STRING; // continue on in scheme-string mode
                    break;
                case "comment": // comment parsing mode
                    var next, maybeEnd = false;
                    while ((next = stream.next()) != null) {
                        if (next == "#" && maybeEnd) {

                            state.mode = false;
                            break;
                        }
                        maybeEnd = (next == "|");
                    }
                    returnType = COMMENT;
                    break;
                case "s-expr-comment": // s-expr commenting mode
                    state.mode = false;
                    if(stream.peek() == "(" || stream.peek() == "["){
                        // actually start scheme s-expr commenting mode
                        state.sExprComment = 0;
                    }else{
                        // if not we just comment the entire of the next token
                        stream.eatWhile(/[^/s]/); // eat non spaces
                        returnType = COMMENT;
                        break;
                    }
                default: // default parsing mode
                    var ch = stream.next();

                    if (ch == "\"") {
                        state.mode = "string";
                        returnType = STRING;

                    } else if (ch == "'") {
                        returnType = ATOM;
                    } else if (ch == '#') {
                        if (stream.eat("|")) {                    // Multi-line comment
                            state.mode = "comment"; // toggle to comment mode
                            returnType = COMMENT;
                        } else if (stream.eat(/[tf]/i)) {            // #t/#f (atom)
                            returnType = ATOM;
                        } else if (stream.eat(';')) {                // S-Expr comment
                            state.mode = "s-expr-comment";
                            returnType = COMMENT;
                        } else {
                            var numTest = null, hasExactness = false, hasRadix = true;
                            if (stream.eat(/[ei]/i)) {
                                hasExactness = true;
                            } else {
                                stream.backUp(1);       // must be radix specifier
                            }
                            if (stream.match(/^#b/i)) {
                                numTest = isBinaryNumber;
                            } else if (stream.match(/^#o/i)) {
                                numTest = isOctalNumber;
                            } else if (stream.match(/^#x/i)) {
                                numTest = isHexNumber;
                            } else if (stream.match(/^#d/i)) {
                                numTest = isDecimalNumber;
                            } else if (stream.match(/^[-+0-9.]/, false)) {
                                hasRadix = false;
                                numTest = isDecimalNumber;
                            // re-consume the intial # if all matches failed
                            } else if (!hasExactness) {
                                stream.eat('#');
                            }
                            if (numTest != null) {
                                if (hasRadix && !hasExactness) {
                                    // consume optional exactness after radix
                                    stream.match(/^#[ei]/i);
                                }
                                if (numTest(stream))
                                    returnType = NUMBER;
                            }
                        }
                    } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal
                        returnType = NUMBER;
                    } else if (ch == ";") { // comment
                        stream.skipToEnd(); // rest of the line is a comment
                        returnType = COMMENT;
                    } else if (ch == "(" || ch == "[") {
                      var keyWord = ''; var indentTemp = stream.column(), letter;
                        /**
                        Either
                        (indent-word ..
                        (non-indent-word ..
                        (;something else, bracket, etc.
                        */

                        while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) != null) {
                            keyWord += letter;
                        }

                        if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word

                            pushStack(state, indentTemp + INDENT_WORD_SKIP, ch);
                        } else { // non-indent word
                            // we continue eating the spaces
                            stream.eatSpace();
                            if (stream.eol() || stream.peek() == ";") {
                                // nothing significant after
                                // we restart indentation 1 space after
                                pushStack(state, indentTemp + 1, ch);
                            } else {
                                pushStack(state, indentTemp + stream.current().length, ch); // else we match
                            }
                        }
                        stream.backUp(stream.current().length - 1); // undo all the eating

                        if(typeof state.sExprComment == "number") state.sExprComment++;

                        returnType = BRACKET;
                    } else if (ch == ")" || ch == "]") {
                        returnType = BRACKET;
                        if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : "[")) {
                            popStack(state);

                            if(typeof state.sExprComment == "number"){
                                if(--state.sExprComment == 0){
                                    returnType = COMMENT; // final closing bracket
                                    state.sExprComment = false; // turn off s-expr commenting mode
                                }
                            }
                        }
                    } else {
                        stream.eatWhile(/[\w\$_\-!$%&*+\.\/:<=>?@\^~]/);

                        if (keywords && keywords.propertyIsEnumerable(stream.current())) {
                            returnType = BUILTIN;
                        } else returnType = "variable";
                    }
            }
            return (typeof state.sExprComment == "number") ? COMMENT : returnType;
        },

        indent: function (state) {
            if (state.indentStack == null) return state.indentation;
            return state.indentStack.indent;
        },

        closeBrackets: {pairs: "()[]{}\"\""},
        lineComment: ";;"
    };
});

CodeMirror.defineMIME("text/x-scheme", "scheme");

});
lib/codemirror/mode/ebnf/ebnf.js000064400000013705147361034410012576 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("ebnf", function (config) {
    var commentType = {slash: 0, parenthesis: 1};
    var stateType = {comment: 0, _string: 1, characterClass: 2};
    var bracesMode = null;

    if (config.bracesMode)
      bracesMode = CodeMirror.getMode(config, config.bracesMode);

    return {
      startState: function () {
        return {
          stringType: null,
          commentType: null,
          braced: 0,
          lhs: true,
          localState: null,
          stack: [],
          inDefinition: false
        };
      },
      token: function (stream, state) {
        if (!stream) return;

        //check for state changes
        if (state.stack.length === 0) {
          //strings
          if ((stream.peek() == '"') || (stream.peek() == "'")) {
            state.stringType = stream.peek();
            stream.next(); // Skip quote
            state.stack.unshift(stateType._string);
          } else if (stream.match(/^\/\*/)) { //comments starting with /*
            state.stack.unshift(stateType.comment);
            state.commentType = commentType.slash;
          } else if (stream.match(/^\(\*/)) { //comments starting with (*
            state.stack.unshift(stateType.comment);
            state.commentType = commentType.parenthesis;
          }
        }

        //return state
        //stack has
        switch (state.stack[0]) {
        case stateType._string:
          while (state.stack[0] === stateType._string && !stream.eol()) {
            if (stream.peek() === state.stringType) {
              stream.next(); // Skip quote
              state.stack.shift(); // Clear flag
            } else if (stream.peek() === "\\") {
              stream.next();
              stream.next();
            } else {
              stream.match(/^.[^\\\"\']*/);
            }
          }
          return state.lhs ? "property string" : "string"; // Token style

        case stateType.comment:
          while (state.stack[0] === stateType.comment && !stream.eol()) {
            if (state.commentType === commentType.slash && stream.match(/\*\//)) {
              state.stack.shift(); // Clear flag
              state.commentType = null;
            } else if (state.commentType === commentType.parenthesis && stream.match(/\*\)/)) {
              state.stack.shift(); // Clear flag
              state.commentType = null;
            } else {
              stream.match(/^.[^\*]*/);
            }
          }
          return "comment";

        case stateType.characterClass:
          while (state.stack[0] === stateType.characterClass && !stream.eol()) {
            if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) {
              state.stack.shift();
            }
          }
          return "operator";
        }

        var peek = stream.peek();

        if (bracesMode !== null && (state.braced || peek === "{")) {
          if (state.localState === null)
            state.localState = CodeMirror.startState(bracesMode);

          var token = bracesMode.token(stream, state.localState),
          text = stream.current();

          if (!token) {
            for (var i = 0; i < text.length; i++) {
              if (text[i] === "{") {
                if (state.braced === 0) {
                  token = "matchingbracket";
                }
                state.braced++;
              } else if (text[i] === "}") {
                state.braced--;
                if (state.braced === 0) {
                  token = "matchingbracket";
                }
              }
            }
          }
          return token;
        }

        //no stack
        switch (peek) {
        case "[":
          stream.next();
          state.stack.unshift(stateType.characterClass);
          return "bracket";
        case ":":
        case "|":
        case ";":
          stream.next();
          return "operator";
        case "%":
          if (stream.match("%%")) {
            return "header";
          } else if (stream.match(/[%][A-Za-z]+/)) {
            return "keyword";
          } else if (stream.match(/[%][}]/)) {
            return "matchingbracket";
          }
          break;
        case "/":
          if (stream.match(/[\/][A-Za-z]+/)) {
          return "keyword";
        }
        case "\\":
          if (stream.match(/[\][a-z]+/)) {
            return "string-2";
          }
        case ".":
          if (stream.match(".")) {
            return "atom";
          }
        case "*":
        case "-":
        case "+":
        case "^":
          if (stream.match(peek)) {
            return "atom";
          }
        case "$":
          if (stream.match("$$")) {
            return "builtin";
          } else if (stream.match(/[$][0-9]+/)) {
            return "variable-3";
          }
        case "<":
          if (stream.match(/<<[a-zA-Z_]+>>/)) {
            return "builtin";
          }
        }

        if (stream.match(/^\/\//)) {
          stream.skipToEnd();
          return "comment";
        } else if (stream.match(/return/)) {
          return "operator";
        } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) {
          if (stream.match(/(?=[\(.])/)) {
            return "variable";
          } else if (stream.match(/(?=[\s\n]*[:=])/)) {
            return "def";
          }
          return "variable-2";
        } else if (["[", "]", "(", ")"].indexOf(stream.peek()) != -1) {
          stream.next();
          return "bracket";
        } else if (!stream.eatSpace()) {
          stream.next();
        }
        return null;
      }
    };
  });

  CodeMirror.defineMIME("text/x-ebnf", "ebnf");
});
lib/codemirror/mode/ebnf/index.html000064400000004622147361034410013321 0ustar00<!doctype html>
<html>
  <head>
    <title>CodeMirror: EBNF Mode</title>
    <meta charset="utf-8"/>
    <link rel=stylesheet href="../../doc/docs.css">

    <link rel="stylesheet" href="../../lib/codemirror.css">
    <script src="../../lib/codemirror.js"></script>
    <script src="../javascript/javascript.js"></script>
    <script src="ebnf.js"></script>
    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
  </head>
  <body>
    <div id=nav>
      <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

      <ul>
        <li><a href="../../index.html">Home</a>
        <li><a href="../../doc/manual.html">Manual</a>
        <li><a href="https://github.com/codemirror/codemirror">Code</a>
      </ul>
      <ul>
        <li><a href="../index.html">Language modes</a>
        <li><a class=active href="#">EBNF Mode</a>
      </ul>
    </div>

    <article>
      <h2>EBNF Mode (bracesMode setting = "javascript")</h2>
      <form><textarea id="code" name="code">
/* description: Parses end executes mathematical expressions. */

/* lexical grammar */
%lex

%%
\s+                   /* skip whitespace */
[0-9]+("."[0-9]+)?\b  return 'NUMBER';
"*"                   return '*';
"/"                   return '/';
"-"                   return '-';
"+"                   return '+';
"^"                   return '^';
"("                   return '(';
")"                   return ')';
"PI"                  return 'PI';
"E"                   return 'E';
&lt;&lt;EOF&gt;&gt;               return 'EOF';

/lex

/* operator associations and precedence */

%left '+' '-'
%left '*' '/'
%left '^'
%left UMINUS

%start expressions

%% /* language grammar */

expressions
: e EOF
{print($1); return $1;}
;

e
: e '+' e
{$$ = $1+$3;}
| e '-' e
{$$ = $1-$3;}
| e '*' e
{$$ = $1*$3;}
| e '/' e
{$$ = $1/$3;}
| e '^' e
{$$ = Math.pow($1, $3);}
| '-' e %prec UMINUS
{$$ = -$2;}
| '(' e ')'
{$$ = $2;}
| NUMBER
{$$ = Number(yytext);}
| E
{$$ = Math.E;}
| PI
{$$ = Math.PI;}
;</textarea></form>
      <script>
        var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
          mode: {name: "ebnf"},
          lineNumbers: true,
          bracesMode: 'javascript'
        });
      </script>
      <h3>The EBNF Mode</h3>
      <p> Created by <a href="https://github.com/robertleeplummerjr">Robert Plummer</a></p>
    </article>
  </body>
</html>
lib/codemirror/mode/stex/test.js000064400000006042147361034410012710 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({tabSize: 4}, "stex");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  MT("word",
     "foo");

  MT("twoWords",
     "foo bar");

  MT("beginEndDocument",
     "[tag \\begin][bracket {][atom document][bracket }]",
     "[tag \\end][bracket {][atom document][bracket }]");

  MT("beginEndEquation",
     "[tag \\begin][bracket {][atom equation][bracket }]",
     "  E=mc^2",
     "[tag \\end][bracket {][atom equation][bracket }]");

  MT("beginModule",
     "[tag \\begin][bracket {][atom module][bracket }[[]]]");

  MT("beginModuleId",
     "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]");

  MT("importModule",
     "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]");

  MT("importModulePath",
     "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]");

  MT("psForPDF",
     "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]");

  MT("comment",
     "[comment % foo]");

  MT("tagComment",
     "[tag \\item][comment % bar]");

  MT("commentTag",
     " [comment % \\item]");

  MT("commentLineBreak",
     "[comment %]",
     "foo");

  MT("tagErrorCurly",
     "[tag \\begin][error }][bracket {]");

  MT("tagErrorSquare",
     "[tag \\item][error ]]][bracket {]");

  MT("commentCurly",
     "[comment % }]");

  MT("tagHash",
     "the [tag \\#] key");

  MT("tagNumber",
     "a [tag \\$][atom 5] stetson");

  MT("tagPercent",
     "[atom 100][tag \\%] beef");

  MT("tagAmpersand",
     "L [tag \\&] N");

  MT("tagUnderscore",
     "foo[tag \\_]bar");

  MT("tagBracketOpen",
     "[tag \\emph][bracket {][tag \\{][bracket }]");

  MT("tagBracketClose",
     "[tag \\emph][bracket {][tag \\}][bracket }]");

  MT("tagLetterNumber",
     "section [tag \\S][atom 1]");

  MT("textTagNumber",
     "para [tag \\P][atom 2]");

  MT("thinspace",
     "x[tag \\,]y");

  MT("thickspace",
     "x[tag \\;]y");

  MT("negativeThinspace",
     "x[tag \\!]y");

  MT("periodNotSentence",
     "J.\\ L.\\ is");

  MT("periodSentence",
     "X[tag \\@]. The");

  MT("italicCorrection",
     "[bracket {][tag \\em] If[tag \\/][bracket }] I");

  MT("tagBracket",
     "[tag \\newcommand][bracket {][tag \\pop][bracket }]");

  MT("inlineMathTagFollowedByNumber",
     "[keyword $][tag \\pi][number 2][keyword $]");

  MT("inlineMath",
     "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text");

  MT("displayMath",
     "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text");

  MT("mathWithComment",
     "[keyword $][variable-2 x] [comment % $]",
     "[variable-2 y][keyword $] other text");

  MT("lineBreakArgument",
    "[tag \\\\][bracket [[][atom 1cm][bracket ]]]");
})();
lib/codemirror/mode/stex/stex.js000064400000015424147361034410012720 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*
 * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de)
 * Licence: MIT
 */

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("stex", function() {
    "use strict";

    function pushCommand(state, command) {
      state.cmdState.push(command);
    }

    function peekCommand(state) {
      if (state.cmdState.length > 0) {
        return state.cmdState[state.cmdState.length - 1];
      } else {
        return null;
      }
    }

    function popCommand(state) {
      var plug = state.cmdState.pop();
      if (plug) {
        plug.closeBracket();
      }
    }

    // returns the non-default plugin closest to the end of the list
    function getMostPowerful(state) {
      var context = state.cmdState;
      for (var i = context.length - 1; i >= 0; i--) {
        var plug = context[i];
        if (plug.name == "DEFAULT") {
          continue;
        }
        return plug;
      }
      return { styleIdentifier: function() { return null; } };
    }

    function addPluginPattern(pluginName, cmdStyle, styles) {
      return function () {
        this.name = pluginName;
        this.bracketNo = 0;
        this.style = cmdStyle;
        this.styles = styles;
        this.argument = null;   // \begin and \end have arguments that follow. These are stored in the plugin

        this.styleIdentifier = function() {
          return this.styles[this.bracketNo - 1] || null;
        };
        this.openBracket = function() {
          this.bracketNo++;
          return "bracket";
        };
        this.closeBracket = function() {};
      };
    }

    var plugins = {};

    plugins["importmodule"] = addPluginPattern("importmodule", "tag", ["string", "builtin"]);
    plugins["documentclass"] = addPluginPattern("documentclass", "tag", ["", "atom"]);
    plugins["usepackage"] = addPluginPattern("usepackage", "tag", ["atom"]);
    plugins["begin"] = addPluginPattern("begin", "tag", ["atom"]);
    plugins["end"] = addPluginPattern("end", "tag", ["atom"]);

    plugins["DEFAULT"] = function () {
      this.name = "DEFAULT";
      this.style = "tag";

      this.styleIdentifier = this.openBracket = this.closeBracket = function() {};
    };

    function setState(state, f) {
      state.f = f;
    }

    // called when in a normal (no environment) context
    function normal(source, state) {
      var plug;
      // Do we look like '\command' ?  If so, attempt to apply the plugin 'command'
      if (source.match(/^\\[a-zA-Z@]+/)) {
        var cmdName = source.current().slice(1);
        plug = plugins[cmdName] || plugins["DEFAULT"];
        plug = new plug();
        pushCommand(state, plug);
        setState(state, beginParams);
        return plug.style;
      }

      // escape characters
      if (source.match(/^\\[$&%#{}_]/)) {
        return "tag";
      }

      // white space control characters
      if (source.match(/^\\[,;!\/\\]/)) {
        return "tag";
      }

      // find if we're starting various math modes
      if (source.match("\\[")) {
        setState(state, function(source, state){ return inMathMode(source, state, "\\]"); });
        return "keyword";
      }
      if (source.match("$$")) {
        setState(state, function(source, state){ return inMathMode(source, state, "$$"); });
        return "keyword";
      }
      if (source.match("$")) {
        setState(state, function(source, state){ return inMathMode(source, state, "$"); });
        return "keyword";
      }

      var ch = source.next();
      if (ch == "%") {
        source.skipToEnd();
        return "comment";
      } else if (ch == '}' || ch == ']') {
        plug = peekCommand(state);
        if (plug) {
          plug.closeBracket(ch);
          setState(state, beginParams);
        } else {
          return "error";
        }
        return "bracket";
      } else if (ch == '{' || ch == '[') {
        plug = plugins["DEFAULT"];
        plug = new plug();
        pushCommand(state, plug);
        return "bracket";
      } else if (/\d/.test(ch)) {
        source.eatWhile(/[\w.%]/);
        return "atom";
      } else {
        source.eatWhile(/[\w\-_]/);
        plug = getMostPowerful(state);
        if (plug.name == 'begin') {
          plug.argument = source.current();
        }
        return plug.styleIdentifier();
      }
    }

    function inMathMode(source, state, endModeSeq) {
      if (source.eatSpace()) {
        return null;
      }
      if (source.match(endModeSeq)) {
        setState(state, normal);
        return "keyword";
      }
      if (source.match(/^\\[a-zA-Z@]+/)) {
        return "tag";
      }
      if (source.match(/^[a-zA-Z]+/)) {
        return "variable-2";
      }
      // escape characters
      if (source.match(/^\\[$&%#{}_]/)) {
        return "tag";
      }
      // white space control characters
      if (source.match(/^\\[,;!\/]/)) {
        return "tag";
      }
      // special math-mode characters
      if (source.match(/^[\^_&]/)) {
        return "tag";
      }
      // non-special characters
      if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) {
        return null;
      }
      if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) {
        return "number";
      }
      var ch = source.next();
      if (ch == "{" || ch == "}" || ch == "[" || ch == "]" || ch == "(" || ch == ")") {
        return "bracket";
      }

      if (ch == "%") {
        source.skipToEnd();
        return "comment";
      }
      return "error";
    }

    function beginParams(source, state) {
      var ch = source.peek(), lastPlug;
      if (ch == '{' || ch == '[') {
        lastPlug = peekCommand(state);
        lastPlug.openBracket(ch);
        source.eat(ch);
        setState(state, normal);
        return "bracket";
      }
      if (/[ \t\r]/.test(ch)) {
        source.eat(ch);
        return null;
      }
      setState(state, normal);
      popCommand(state);

      return normal(source, state);
    }

    return {
      startState: function() {
        return {
          cmdState: [],
          f: normal
        };
      },
      copyState: function(s) {
        return {
          cmdState: s.cmdState.slice(),
          f: s.f
        };
      },
      token: function(stream, state) {
        return state.f(stream, state);
      },
      blankLine: function(state) {
        state.f = normal;
        state.cmdState.length = 0;
      },
      lineComment: "%"
    };
  });

  CodeMirror.defineMIME("text/x-stex", "stex");
  CodeMirror.defineMIME("text/x-latex", "stex");

});
lib/codemirror/mode/stex/index.html000064400000010102147361034410013360 0ustar00<!doctype html>

<title>CodeMirror: sTeX mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="stex.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">sTeX</a>
  </ul>
</div>

<article>
<h2>sTeX mode</h2>
<form><textarea id="code" name="code">
\begin{module}[id=bbt-size]
\importmodule[balanced-binary-trees]{balanced-binary-trees}
\importmodule[\KWARCslides{dmath/en/cardinality}]{cardinality}

\begin{frame}
  \frametitle{Size Lemma for Balanced Trees}
  \begin{itemize}
  \item
    \begin{assertion}[id=size-lemma,type=lemma] 
    Let $G=\tup{V,E}$ be a \termref[cd=binary-trees]{balanced binary tree} 
    of \termref[cd=graph-depth,name=vertex-depth]{depth}$n>i$, then the set
     $\defeq{\livar{V}i}{\setst{\inset{v}{V}}{\gdepth{v} = i}}$ of
    \termref[cd=graphs-intro,name=node]{nodes} at 
    \termref[cd=graph-depth,name=vertex-depth]{depth} $i$ has
    \termref[cd=cardinality,name=cardinality]{cardinality} $\power2ijQuery.
   \end{assertion}
  \item
    \begin{sproof}[id=size-lemma-pf,proofend=,for=size-lemma]{via induction over the depth $ijQuery.}
      \begin{spfcases}{We have to consider two cases}
        \begin{spfcase}{$i=0$}
          \begin{spfstep}[display=flow]
            then $\livar{V}i=\set{\livar{v}r}$, where $\livar{v}r$ is the root, so
            $\eq{\card{\livar{V}0},\card{\set{\livar{v}r}},1,\power20}jQuery.
          \end{spfstep}
        \end{spfcase}
        \begin{spfcase}{$i>0$}
          \begin{spfstep}[display=flow]
           then $\livar{V}{i-1}$ contains $\power2{i-1}$ vertexes 
           \begin{justification}[method=byIH](IH)\end{justification}
          \end{spfstep}
          \begin{spfstep}
           By the \begin{justification}[method=byDef]definition of a binary
              tree\end{justification}, each $\inset{v}{\livar{V}{i-1}}$ is a leaf or has
            two children that are at depth $ijQuery.
          \end{spfstep}
          \begin{spfstep}
           As $G$ is \termref[cd=balanced-binary-trees,name=balanced-binary-tree]{balanced} and $\gdepth{G}=n>i$, $\livar{V}{i-1}$ cannot contain
            leaves.
          \end{spfstep}
          \begin{spfstep}[type=conclusion]
           Thus $\eq{\card{\livar{V}i},{\atimes[cdot]{2,\card{\livar{V}{i-1}}}},{\atimes[cdot]{2,\power2{i-1}}},\power2i}jQuery.
          \end{spfstep}
        \end{spfcase}
      \end{spfcases}
    \end{sproof}
  \item 
    \begin{assertion}[id=fbbt,type=corollary]	
      A fully balanced tree of depth $d$ has $\power2{d+1}-1$ nodes.
    \end{assertion}
  \item
      \begin{sproof}[for=fbbt,id=fbbt-pf]{}
        \begin{spfstep}
          Let $\defeq{G}{\tup{V,E}}$ be a fully balanced tree
        \end{spfstep}
        \begin{spfstep}
          Then $\card{V}=\Sumfromto{i}1d{\power2i}= \power2{d+1}-1jQuery.
        \end{spfstep}
      \end{sproof}
    \end{itemize}
  \end{frame}
\begin{note}
  \begin{omtext}[type=conclusion,for=binary-tree]
    This shows that balanced binary trees grow in breadth very quickly, a consequence of
    this is that they are very shallow (and this compute very fast), which is the essence of
    the next result.
  \end{omtext}
\end{note}
\end{module}

%%% Local Variables: 
%%% mode: LaTeX
%%% TeX-master: "all"
%%% End: \end{document}
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-stex</code>.</p>

    <p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#stex_*">normal</a>,  <a href="../../test/index.html#verbose,stex_*">verbose</a>.</p>

  </article>
lib/codemirror/mode/http/http.js000064400000005353147361034410012710 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("http", function() {
  function failFirstLine(stream, state) {
    stream.skipToEnd();
    state.cur = header;
    return "error";
  }

  function start(stream, state) {
    if (stream.match(/^HTTP\/\d\.\d/)) {
      state.cur = responseStatusCode;
      return "keyword";
    } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) {
      state.cur = requestPath;
      return "keyword";
    } else {
      return failFirstLine(stream, state);
    }
  }

  function responseStatusCode(stream, state) {
    var code = stream.match(/^\d+/);
    if (!code) return failFirstLine(stream, state);

    state.cur = responseStatusText;
    var status = Number(code[0]);
    if (status >= 100 && status < 200) {
      return "positive informational";
    } else if (status >= 200 && status < 300) {
      return "positive success";
    } else if (status >= 300 && status < 400) {
      return "positive redirect";
    } else if (status >= 400 && status < 500) {
      return "negative client-error";
    } else if (status >= 500 && status < 600) {
      return "negative server-error";
    } else {
      return "error";
    }
  }

  function responseStatusText(stream, state) {
    stream.skipToEnd();
    state.cur = header;
    return null;
  }

  function requestPath(stream, state) {
    stream.eatWhile(/\S/);
    state.cur = requestProtocol;
    return "string-2";
  }

  function requestProtocol(stream, state) {
    if (stream.match(/^HTTP\/\d\.\d$/)) {
      state.cur = header;
      return "keyword";
    } else {
      return failFirstLine(stream, state);
    }
  }

  function header(stream) {
    if (stream.sol() && !stream.eat(/[ \t]/)) {
      if (stream.match(/^.*?:/)) {
        return "atom";
      } else {
        stream.skipToEnd();
        return "error";
      }
    } else {
      stream.skipToEnd();
      return "string";
    }
  }

  function body(stream) {
    stream.skipToEnd();
    return null;
  }

  return {
    token: function(stream, state) {
      var cur = state.cur;
      if (cur != header && cur != body && stream.eatSpace()) return null;
      return cur(stream, state);
    },

    blankLine: function(state) {
      state.cur = body;
    },

    startState: function() {
      return {cur: start};
    }
  };
});

CodeMirror.defineMIME("message/http", "http");

});
lib/codemirror/mode/http/index.html000064400000002561147361034410013366 0ustar00<!doctype html>

<title>CodeMirror: HTTP mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="http.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">HTTP</a>
  </ul>
</div>

<article>
<h2>HTTP mode</h2>


<div><textarea id="code" name="code">
POST /somewhere HTTP/1.1
Host: example.com
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Content-Type: application/x-www-form-urlencoded;
	charset=utf-8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11

This is the request body!
</textarea></div>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>message/http</code>.</p>
  </article>
lib/codemirror/mode/ttcn-cfg/ttcn-cfg.js000064400000017261147361034410014165 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("ttcn-cfg", function(config, parserConfig) {
    var indentUnit = config.indentUnit,
        keywords = parserConfig.keywords || {},
        fileNCtrlMaskOptions = parserConfig.fileNCtrlMaskOptions || {},
        externalCommands = parserConfig.externalCommands || {},
        multiLineStrings = parserConfig.multiLineStrings,
        indentStatements = parserConfig.indentStatements !== false;
    var isOperatorChar = /[\|]/;
    var curPunc;

    function tokenBase(stream, state) {
      var ch = stream.next();
      if (ch == '"' || ch == "'") {
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      if (/[:=]/.test(ch)) {
        curPunc = ch;
        return "punctuation";
      }
      if (ch == "#"){
        stream.skipToEnd();
        return "comment";
      }
      if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (isOperatorChar.test(ch)) {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
      if (ch == "["){
        stream.eatWhile(/[\w_\]]/);
        return "number sectionTitle";
      }

      stream.eatWhile(/[\w\$_]/);
      var cur = stream.current();
      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      if (fileNCtrlMaskOptions.propertyIsEnumerable(cur))
        return "negative fileNCtrlMaskOptions";
      if (externalCommands.propertyIsEnumerable(cur)) return "negative externalCommands";

      return "variable";
    }

    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, next, end = false;
        while ((next = stream.next()) != null) {
          if (next == quote && !escaped){
            var afterNext = stream.peek();
            //look if the character if the quote is like the B in '10100010'B
            if (afterNext){
              afterNext = afterNext.toLowerCase();
              if(afterNext == "b" || afterNext == "h" || afterNext == "o")
                stream.next();
            }
            end = true; break;
          }
          escaped = !escaped && next == "\\";
        }
        if (end || !(escaped || multiLineStrings))
          state.tokenize = null;
        return "string";
      };
    }

    function Context(indented, column, type, align, prev) {
      this.indented = indented;
      this.column = column;
      this.type = type;
      this.align = align;
      this.prev = prev;
    }
    function pushContext(state, col, type) {
      var indent = state.indented;
      if (state.context && state.context.type == "statement")
        indent = state.context.indented;
      return state.context = new Context(indent, col, type, null, state.context);
    }
    function popContext(state) {
      var t = state.context.type;
      if (t == ")" || t == "]" || t == "}")
        state.indented = state.context.indented;
      return state.context = state.context.prev;
    }

    //Interface
    return {
      startState: function(basecolumn) {
        return {
          tokenize: null,
          context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
          indented: 0,
          startOfLine: true
        };
      },

      token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
          if (ctx.align == null) ctx.align = false;
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        curPunc = null;
        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        if ((curPunc == ";" || curPunc == ":" || curPunc == ",")
            && ctx.type == "statement"){
          popContext(state);
        }
        else if (curPunc == "{") pushContext(state, stream.column(), "}");
        else if (curPunc == "[") pushContext(state, stream.column(), "]");
        else if (curPunc == "(") pushContext(state, stream.column(), ")");
        else if (curPunc == "}") {
          while (ctx.type == "statement") ctx = popContext(state);
          if (ctx.type == "}") ctx = popContext(state);
          while (ctx.type == "statement") ctx = popContext(state);
        }
        else if (curPunc == ctx.type) popContext(state);
        else if (indentStatements && (((ctx.type == "}" || ctx.type == "top")
            && curPunc != ';') || (ctx.type == "statement"
            && curPunc == "newstatement")))
          pushContext(state, stream.column(), "statement");
        state.startOfLine = false;
        return style;
      },

      electricChars: "{}",
      lineComment: "#",
      fold: "brace"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i)
      obj[words[i]] = true;
    return obj;
  }

  CodeMirror.defineMIME("text/x-ttcn-cfg", {
    name: "ttcn-cfg",
    keywords: words("Yes No LogFile FileMask ConsoleMask AppendFile" +
    " TimeStampFormat LogEventTypes SourceInfoFormat" +
    " LogEntityName LogSourceInfo DiskFullAction" +
    " LogFileNumber LogFileSize MatchingHints Detailed" +
    " Compact SubCategories Stack Single None Seconds" +
    " DateTime Time Stop Error Retry Delete TCPPort KillTimer" +
    " NumHCs UnixSocketsEnabled LocalAddress"),
    fileNCtrlMaskOptions: words("TTCN_EXECUTOR TTCN_ERROR TTCN_WARNING" +
    " TTCN_PORTEVENT TTCN_TIMEROP TTCN_VERDICTOP" +
    " TTCN_DEFAULTOP TTCN_TESTCASE TTCN_ACTION" +
    " TTCN_USER TTCN_FUNCTION TTCN_STATISTICS" +
    " TTCN_PARALLEL TTCN_MATCHING TTCN_DEBUG" +
    " EXECUTOR ERROR WARNING PORTEVENT TIMEROP" +
    " VERDICTOP DEFAULTOP TESTCASE ACTION USER" +
    " FUNCTION STATISTICS PARALLEL MATCHING DEBUG" +
    " LOG_ALL LOG_NOTHING ACTION_UNQUALIFIED" +
    " DEBUG_ENCDEC DEBUG_TESTPORT" +
    " DEBUG_UNQUALIFIED DEFAULTOP_ACTIVATE" +
    " DEFAULTOP_DEACTIVATE DEFAULTOP_EXIT" +
    " DEFAULTOP_UNQUALIFIED ERROR_UNQUALIFIED" +
    " EXECUTOR_COMPONENT EXECUTOR_CONFIGDATA" +
    " EXECUTOR_EXTCOMMAND EXECUTOR_LOGOPTIONS" +
    " EXECUTOR_RUNTIME EXECUTOR_UNQUALIFIED" +
    " FUNCTION_RND FUNCTION_UNQUALIFIED" +
    " MATCHING_DONE MATCHING_MCSUCCESS" +
    " MATCHING_MCUNSUCC MATCHING_MMSUCCESS" +
    " MATCHING_MMUNSUCC MATCHING_PCSUCCESS" +
    " MATCHING_PCUNSUCC MATCHING_PMSUCCESS" +
    " MATCHING_PMUNSUCC MATCHING_PROBLEM" +
    " MATCHING_TIMEOUT MATCHING_UNQUALIFIED" +
    " PARALLEL_PORTCONN PARALLEL_PORTMAP" +
    " PARALLEL_PTC PARALLEL_UNQUALIFIED" +
    " PORTEVENT_DUALRECV PORTEVENT_DUALSEND" +
    " PORTEVENT_MCRECV PORTEVENT_MCSEND" +
    " PORTEVENT_MMRECV PORTEVENT_MMSEND" +
    " PORTEVENT_MQUEUE PORTEVENT_PCIN" +
    " PORTEVENT_PCOUT PORTEVENT_PMIN" +
    " PORTEVENT_PMOUT PORTEVENT_PQUEUE" +
    " PORTEVENT_STATE PORTEVENT_UNQUALIFIED" +
    " STATISTICS_UNQUALIFIED STATISTICS_VERDICT" +
    " TESTCASE_FINISH TESTCASE_START" +
    " TESTCASE_UNQUALIFIED TIMEROP_GUARD" +
    " TIMEROP_READ TIMEROP_START TIMEROP_STOP" +
    " TIMEROP_TIMEOUT TIMEROP_UNQUALIFIED" +
    " USER_UNQUALIFIED VERDICTOP_FINAL" +
    " VERDICTOP_GETVERDICT VERDICTOP_SETVERDICT" +
    " VERDICTOP_UNQUALIFIED WARNING_UNQUALIFIED"),
    externalCommands: words("BeginControlPart EndControlPart BeginTestCase" +
    " EndTestCase"),
    multiLineStrings: true
  });
});lib/codemirror/mode/ttcn-cfg/index.html000064400000007025147361034410014114 0ustar00<!doctype html>

<title>CodeMirror: TTCN-CFG mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="ttcn-cfg.js"></script>
<style type="text/css">
    .CodeMirror {
        border-top: 1px solid black;
        border-bottom: 1px solid black;
    }
</style>
<div id=nav>
    <a href="http://codemirror.net"><h1>CodeMirror</h1>
        <img id=logo src="../../doc/logo.png">
    </a>

    <ul>
        <li><a href="../../index.html">Home</a>
        <li><a href="../../doc/manual.html">Manual</a>
        <li><a href="https://github.com/codemirror/codemirror">Code</a>
    </ul>
    <ul>
        <li><a href="../index.html">Language modes</a>
        <li><a class=active href="http://en.wikipedia.org/wiki/TTCN">TTCN-CFG</a>
    </ul>
</div>
<article>
    <h2>TTCN-CFG example</h2>
    <div>
        <textarea id="ttcn-cfg-code">
[MODULE_PARAMETERS]
# This section shall contain the values of all parameters that are defined in your TTCN-3 modules.

[LOGGING]
# In this section you can specify the name of the log file and the classes of events
# you want to log into the file or display on console (standard error).

LogFile := "logs/%e.%h-%r.%s"
FileMask := LOG_ALL | DEBUG | MATCHING
ConsoleMask := ERROR | WARNING | TESTCASE | STATISTICS | PORTEVENT

LogSourceInfo := Yes
AppendFile := No
TimeStampFormat := DateTime
LogEventTypes := Yes
SourceInfoFormat := Single
LogEntityName := Yes

[TESTPORT_PARAMETERS]
# In this section you can specify parameters that are passed to Test Ports.

[DEFINE]
# In this section you can create macro definitions,
# that can be used in other configuration file sections except [INCLUDE].

[INCLUDE]
# To use configuration settings given in other configuration files,
# the configuration files just need to be listed in this section, with their full or relative pathnames.

[EXTERNAL_COMMANDS]
# This section can define external commands (shell scripts) to be executed by the ETS
# whenever a control part or test case is started or terminated.

BeginTestCase := ""
EndTestCase := ""
BeginControlPart := ""
EndControlPart := ""

[EXECUTE]
# In this section you can specify what parts of your test suite you want to execute.

[GROUPS]
# In this section you can specify groups of hosts. These groups can be used inside the
# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts.

[COMPONENTS]
# This section consists of rules restricting the location of created PTCs.

[MAIN_CONTROLLER]
# The options herein control the behavior of MC.

TCPPort := 0
KillTimer := 10.0
NumHCs := 0
LocalAddress :=
        </textarea>
    </div>

    <script> 
      var ttcnEditor = CodeMirror.fromTextArea(document.getElementById("ttcn-cfg-code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-ttcn-cfg"
      });
      ttcnEditor.setSize(600, 860);
      var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;
      CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete";
    </script>
    <br/>
    <p><strong>Language:</strong> Testing and Test Control Notation -
        Configuration files
        (<a href="http://en.wikipedia.org/wiki/TTCN">TTCN-CFG</a>)
    </p>
    <p><strong>MIME types defined:</strong> <code>text/x-ttcn-cfg</code>.</p>

    <br/>
    <p>The development of this mode has been sponsored by <a href="http://www.ericsson.com/">Ericsson
    </a>.</p>
    <p>Coded by Asmelash Tsegay Gebretsadkan </p>
</article>

lib/codemirror/mode/haskell-literate/haskell-literate.js000064400000002556147361034410017440 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function (mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../haskell/haskell"))
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../haskell/haskell"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function (CodeMirror) {
  "use strict"

  CodeMirror.defineMode("haskell-literate", function (config, parserConfig) {
    var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell")

    return {
      startState: function () {
        return {
          inCode: false,
          baseState: CodeMirror.startState(baseMode)
        }
      },
      token: function (stream, state) {
        if (stream.sol()) {
          if (state.inCode = stream.eat(">"))
            return "meta"
        }
        if (state.inCode) {
          return baseMode.token(stream, state.baseState)
        } else {
          stream.skipToEnd()
          return "comment"
        }
      },
      innerMode: function (state) {
        return state.inCode ? {state: state.baseState, mode: baseMode} : null
      }
    }
  }, "haskell")

  CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate")
});
lib/codemirror/mode/haskell-literate/index.html000064400000022245147361034410015642 0ustar00<!doctype html>

<title>CodeMirror: Haskell-literate mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="haskell-literate.js"></script>
<script src="../haskell/haskell.js"></script>
<style>.CodeMirror {
  border-top    : 1px solid #DDDDDD;
  border-bottom : 1px solid #DDDDDD;
}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo
                                                          src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Haskell-literate</a>
  </ul>
</div>

<article>
  <h2>Haskell literate mode</h2>
  <form>
    <textarea id="code" name="code">
> {-# LANGUAGE OverloadedStrings #-}
> {-# OPTIONS_GHC -fno-warn-unused-do-bind #-}
> import Control.Applicative ((<$>), (<*>))
> import Data.Maybe (isJust)

> import Data.Text (Text)
> import Text.Blaze ((!))
> import qualified Data.Text as T
> import qualified Happstack.Server as Happstack
> import qualified Text.Blaze.Html5 as H
> import qualified Text.Blaze.Html5.Attributes as A

> import Text.Digestive
> import Text.Digestive.Blaze.Html5
> import Text.Digestive.Happstack
> import Text.Digestive.Util

Simple forms and validation
---------------------------

Let's start by creating a very simple datatype to represent a user:

> data User = User
>     { userName :: Text
>     , userMail :: Text
>     } deriving (Show)

And dive in immediately to create a `Form` for a user. The `Form v m a` type
has three parameters:

- `v`: the type for messages and errors (usually a `String`-like type, `Text` in
  this case);
- `m`: the monad we are operating in, not specified here;
- `a`: the return type of the `Form`, in this case, this is obviously `User`.

> userForm :: Monad m => Form Text m User

We create forms by using the `Applicative` interface. A few form types are
provided in the `Text.Digestive.Form` module, such as `text`, `string`,
`bool`...

In the `digestive-functors` library, the developer is required to label each
field using the `.:` operator. This might look like a bit of a burden, but it
allows you to do some really useful stuff, like separating the `Form` from the
actual HTML layout.

> userForm = User
>     <$> "name" .: text Nothing
>     <*> "mail" .: check "Not a valid email address" checkEmail (text Nothing)

The `check` function enables you to validate the result of a form. For example,
we can validate the email address with a really naive `checkEmail` function.

> checkEmail :: Text -> Bool
> checkEmail = isJust . T.find (== '@')

More validation
---------------

For our example, we also want descriptions of Haskell libraries, and in order to
do that, we need package versions...

> type Version = [Int]

We want to let the user input a version number such as `0.1.0.0`. This means we
need to validate if the input `Text` is of this form, and then we need to parse
it to a `Version` type. Fortunately, we can do this in a single function:
`validate` allows conversion between values, which can optionally fail.

`readMaybe :: Read a => String -> Maybe a` is a utility function imported from
`Text.Digestive.Util`.

> validateVersion :: Text -> Result Text Version
> validateVersion = maybe (Error "Cannot parse version") Success .
>     mapM (readMaybe . T.unpack) . T.split (== '.')

A quick test in GHCi:

    ghci> validateVersion (T.pack "0.3.2.1")
    Success [0,3,2,1]
    ghci> validateVersion (T.pack "0.oops")
    Error "Cannot parse version"

It works! This means we can now easily add a `Package` type and a `Form` for it:

> data Category = Web | Text | Math
>     deriving (Bounded, Enum, Eq, Show)

> data Package = Package Text Version Category
>     deriving (Show)

> packageForm :: Monad m => Form Text m Package
> packageForm = Package
>     <$> "name"     .: text Nothing
>     <*> "version"  .: validate validateVersion (text (Just "0.0.0.1"))
>     <*> "category" .: choice categories Nothing
>   where
>     categories = [(x, T.pack (show x)) | x <- [minBound .. maxBound]]

Composing forms
---------------

A release has an author and a package. Let's use this to illustrate the
composability of the digestive-functors library: we can reuse the forms we have
written earlier on.

> data Release = Release User Package
>     deriving (Show)

> releaseForm :: Monad m => Form Text m Release
> releaseForm = Release
>     <$> "author"  .: userForm
>     <*> "package" .: packageForm

Views
-----

As mentioned before, one of the advantages of using digestive-functors is
separation of forms and their actual HTML layout. In order to do this, we have
another type, `View`.

We can get a `View` from a `Form` by supplying input. A `View` contains more
information than a `Form`, it has:

- the original form;
- the input given by the user;
- any errors that have occurred.

It is this view that we convert to HTML. For this tutorial, we use the
[blaze-html] library, and some helpers from the `digestive-functors-blaze`
library.

[blaze-html]: http://jaspervdj.be/blaze/

Let's write a view for the `User` form. As you can see, we here refer to the
different fields in the `userForm`. The `errorList` will generate a list of
errors for the `"mail"` field.

> userView :: View H.Html -> H.Html
> userView view = do
>     label     "name" view "Name: "
>     inputText "name" view
>     H.br
>
>     errorList "mail" view
>     label     "mail" view "Email address: "
>     inputText "mail" view
>     H.br

Like forms, views are also composable: let's illustrate that by adding a view
for the `releaseForm`, in which we reuse `userView`. In order to do this, we
take only the parts relevant to the author from the view by using `subView`. We
can then pass the resulting view to our own `userView`.
We have no special view code for `Package`, so we can just add that to
`releaseView` as well. `childErrorList` will generate a list of errors for each
child of the specified form. In this case, this means a list of errors from
`"package.name"` and `"package.version"`. Note how we use `foo.bar` to refer to
nested forms.

> releaseView :: View H.Html -> H.Html
> releaseView view = do
>     H.h2 "Author"
>     userView $ subView "author" view
>
>     H.h2 "Package"
>     childErrorList "package" view
>
>     label     "package.name" view "Name: "
>     inputText "package.name" view
>     H.br
>
>     label     "package.version" view "Version: "
>     inputText "package.version" view
>     H.br
>
>     label       "package.category" view "Category: "
>     inputSelect "package.category" view
>     H.br

The attentive reader might have wondered what the type parameter for `View` is:
it is the `String`-like type used for e.g. error messages.
But wait! We have
    releaseForm :: Monad m => Form Text m Release
    releaseView :: View H.Html -> H.Html
... doesn't this mean that we need a `View Text` rather than a `View Html`?  The
answer is yes -- but having `View Html` allows us to write these views more
easily with the `digestive-functors-blaze` library. Fortunately, we will be able
to fix this using the `Functor` instance of `View`.
    fmap :: Monad m => (v -> w) -> View v -> View w
A backend
---------
To finish this tutorial, we need to be able to actually run this code. We need
an HTTP server for that, and we use [Happstack] for this tutorial. The
`digestive-functors-happstack` library gives about everything we need for this.
[Happstack]: http://happstack.com/

> site :: Happstack.ServerPart Happstack.Response
> site = do
>     Happstack.decodeBody $ Happstack.defaultBodyPolicy "/tmp" 4096 4096 4096
>     r <- runForm "test" releaseForm
>     case r of
>         (view, Nothing) -> do
>             let view' = fmap H.toHtml view
>             Happstack.ok $ Happstack.toResponse $
>                 template $
>                     form view' "/" $ do
>                         releaseView view'
>                         H.br
>                         inputSubmit "Submit"
>         (_, Just release) -> Happstack.ok $ Happstack.toResponse $
>             template $ do
>                 css
>                 H.h1 "Release received"
>                 H.p $ H.toHtml $ show release
>
> main :: IO ()
> main = Happstack.simpleHTTP Happstack.nullConf site

Utilities
---------

> template :: H.Html -> H.Html
> template body = H.docTypeHtml $ do
>     H.head $ do
>         H.title "digestive-functors tutorial"
>         css
>     H.body body
> css :: H.Html
> css = H.style ! A.type_ "text/css" $ do
>     "label {width: 130px; float: left; clear: both}"
>     "ul.digestive-functors-error-list {"
>     "    color: red;"
>     "    list-style-type: none;"
>     "    padding-left: 0px;"
>     "}"
    </textarea>
  </form>

  <p><strong>MIME types
  defined:</strong> <code>text/x-literate-haskell</code>.</p>

  <p>Parser configuration parameters recognized: <code>base</code> to
  set the base mode (defaults to <code>"haskell"</code>).</p>

  <script>
    var editor = CodeMirror.fromTextArea(document.getElementById("code"), {mode: "haskell-literate"});
  </script>

</article>
lib/codemirror/mode/mumps/mumps.js000064400000012352147361034410013251 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*
  This MUMPS Language script was constructed using vbscript.js as a template.
*/

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("mumps", function() {
    function wordRegexp(words) {
      return new RegExp("^((" + words.join(")|(") + "))\\b", "i");
    }

    var singleOperators = new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]");
    var doubleOperators = new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))");
    var singleDelimiters = new RegExp("^[\\.,:]");
    var brackets = new RegExp("[()]");
    var identifiers = new RegExp("^[%A-Za-z][A-Za-z0-9]*");
    var commandKeywords = ["break","close","do","else","for","goto", "halt", "hang", "if", "job","kill","lock","merge","new","open", "quit", "read", "set", "tcommit", "trollback", "tstart", "use", "view", "write", "xecute", "b","c","d","e","f","g", "h", "i", "j","k","l","m","n","o", "q", "r", "s", "tc", "tro", "ts", "u", "v", "w", "x"];
    // The following list includes instrinsic functions _and_ special variables
    var intrinsicFuncsWords = ["\\$ascii", "\\$char", "\\$data", "\\$ecode", "\\$estack", "\\$etrap", "\\$extract", "\\$find", "\\$fnumber", "\\$get", "\\$horolog", "\\$io", "\\$increment", "\\$job", "\\$justify", "\\$length", "\\$name", "\\$next", "\\$order", "\\$piece", "\\$qlength", "\\$qsubscript", "\\$query", "\\$quit", "\\$random", "\\$reverse", "\\$select", "\\$stack", "\\$test", "\\$text", "\\$translate", "\\$view", "\\$x", "\\$y", "\\$a", "\\$c", "\\$d", "\\$e", "\\$ec", "\\$es", "\\$et", "\\$f", "\\$fn", "\\$g", "\\$h", "\\$i", "\\$j", "\\$l", "\\$n", "\\$na", "\\$o", "\\$p", "\\$q", "\\$ql", "\\$qs", "\\$r", "\\$re", "\\$s", "\\$st", "\\$t", "\\$tr", "\\$v", "\\$z"];
    var intrinsicFuncs = wordRegexp(intrinsicFuncsWords);
    var command = wordRegexp(commandKeywords);

    function tokenBase(stream, state) {
      if (stream.sol()) {
        state.label = true;
        state.commandMode = 0;
      }

      // The <space> character has meaning in MUMPS. Ignoring consecutive
      // spaces would interfere with interpreting whether the next non-space
      // character belongs to the command or argument context.

      // Examine each character and update a mode variable whose interpretation is:
      //   >0 => command    0 => argument    <0 => command post-conditional
      var ch = stream.peek();

      if (ch == " " || ch == "\t") { // Pre-process <space>
        state.label = false;
        if (state.commandMode == 0)
          state.commandMode = 1;
        else if ((state.commandMode < 0) || (state.commandMode == 2))
          state.commandMode = 0;
      } else if ((ch != ".") && (state.commandMode > 0)) {
        if (ch == ":")
          state.commandMode = -1;   // SIS - Command post-conditional
        else
          state.commandMode = 2;
      }

      // Do not color parameter list as line tag
      if ((ch === "(") || (ch === "\u0009"))
        state.label = false;

      // MUMPS comment starts with ";"
      if (ch === ";") {
        stream.skipToEnd();
        return "comment";
      }

      // Number Literals // SIS/RLM - MUMPS permits canonic number followed by concatenate operator
      if (stream.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/))
        return "number";

      // Handle Strings
      if (ch == '"') {
        if (stream.skipTo('"')) {
          stream.next();
          return "string";
        } else {
          stream.skipToEnd();
          return "error";
        }
      }

      // Handle operators and Delimiters
      if (stream.match(doubleOperators) || stream.match(singleOperators))
        return "operator";

      // Prevents leading "." in DO block from falling through to error
      if (stream.match(singleDelimiters))
        return null;

      if (brackets.test(ch)) {
        stream.next();
        return "bracket";
      }

      if (state.commandMode > 0 && stream.match(command))
        return "variable-2";

      if (stream.match(intrinsicFuncs))
        return "builtin";

      if (stream.match(identifiers))
        return "variable";

      // Detect dollar-sign when not a documented intrinsic function
      // "^" may introduce a GVN or SSVN - Color same as function
      if (ch === "$" || ch === "^") {
        stream.next();
        return "builtin";
      }

      // MUMPS Indirection
      if (ch === "@") {
        stream.next();
        return "string-2";
      }

      if (/[\w%]/.test(ch)) {
        stream.eatWhile(/[\w%]/);
        return "variable";
      }

      // Handle non-detected items
      stream.next();
      return "error";
    }

    return {
      startState: function() {
        return {
          label: false,
          commandMode: 0
        };
      },

      token: function(stream, state) {
        var style = tokenBase(stream, state);
        if (state.label) return "tag";
        return style;
      }
    };
  });

  CodeMirror.defineMIME("text/x-mumps", "mumps");
});
lib/codemirror/mode/mumps/index.html000064400000005060147361034410013545 0ustar00<!doctype html>

<title>CodeMirror: MUMPS mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="mumps.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">MUMPS</a>
  </ul>
</div>

<article>
<h2>MUMPS mode</h2>


<div><textarea id="code" name="code">
 ; Lloyd Milligan
 ; 03-30-2015
 ;
 ; MUMPS support for Code Mirror - Excerpts below from routine ^XUS
 ;
CHECKAV(X1) ;Check A/V code return DUZ or Zero. (Called from XUSRB)
 N %,%1,X,Y,IEN,DA,DIK
 S IEN=0
 ;Start CCOW
 I $E(X1,1,7)="~~TOK~~" D  Q:IEN>0 IEN
 . I $E(X1,8,9)="~1" S IEN=$$CHKASH^XUSRB4($E(X1,8,255))
 . I $E(X1,8,9)="~2" S IEN=$$CHKCCOW^XUSRB4($E(X1,8,255))
 . Q
 ;End CCOW
 S X1=$$UP(X1) S:X1[":" XUTT=1,X1=$TR(X1,":")
 S X=$P(X1,";") Q:X="^" -1 S:XUF %1="Access: "_X
 Q:X'?1.20ANP 0
 S X=$$EN^XUSHSH(X) I '$D(^VA(200,"A",X)) D LBAV Q 0
 S %1="",IEN=$O(^VA(200,"A",X,0)),XUF(.3)=IEN D USER(IEN)
 S X=$P(X1,";",2) S:XUF %1="Verify: "_X S X=$$EN^XUSHSH(X)
 I $P(XUSER(1),"^",2)'=X D LBAV Q 0
 I $G(XUFAC(1)) S DIK="^XUSEC(4,",DA=XUFAC(1) D ^DIK
 Q IEN
 ;
 ; Spell out commands
 ;
SET2() ;EF. Return error code (also called from XUSRB)
 NEW %,X
 SET XUNOW=$$HTFM^XLFDT($H),DT=$P(XUNOW,".")
 KILL DUZ,XUSER
 SET (DUZ,DUZ(2))=0,(DUZ(0),DUZ("AG"),XUSER(0),XUSER(1),XUTT,%UCI)=""
 SET %=$$INHIBIT^XUSRB() IF %>0 QUIT %
 SET X=$G(^%ZIS(1,XUDEV,"XUS")),XU1=$G(^(1))
 IF $L(X) FOR I=1:1:15 IF $L($P(X,U,I)) SET $P(XOPT,U,I)=$P(X,U,I)
 SET DTIME=600
 IF '$P(XOPT,U,11),$D(^%ZIS(1,XUDEV,90)),^(90)>2800000,^(90)'>DT QUIT 8
 QUIT 0
 ;
 ; Spell out commands and functions
 ;
 IF $PIECE(XUSER(0),U,11),$PIECE(XUSER(0),U,11)'>DT QUIT 11 ;Terminated
 IF $DATA(DUZ("ASH")) QUIT 0 ;If auto handle, Allow to sign-on p434
 IF $PIECE(XUSER(0),U,7) QUIT 5 ;Disuser flag set
 IF '$LENGTH($PIECE(XUSER(1),U,2)) QUIT 21 ;p419, p434
 Q 0
 ;
  </textarea></div>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
         mode: "mumps",
         lineNumbers: true,
         lineWrapping: true
      });
    </script>

  </article>
lib/codemirror/mode/jsx/test.js000064400000005626147361034410012540 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function() {
  var mode = CodeMirror.getMode({indentUnit: 2}, "jsx")
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)) }

  MT("selfclose",
     "[keyword var] [def x] [operator =] [bracket&tag <] [tag foo] [bracket&tag />] [operator +] [number 1];")

  MT("openclose",
     "([bracket&tag <][tag foo][bracket&tag >]hello [atom &amp;][bracket&tag </][tag foo][bracket&tag >][operator ++])")

  MT("attr",
     "([bracket&tag <][tag foo] [attribute abc]=[string 'value'][bracket&tag >]hello [atom &amp;][bracket&tag </][tag foo][bracket&tag >][operator ++])")

  MT("braced_attr",
     "([bracket&tag <][tag foo] [attribute abc]={[number 10]}[bracket&tag >]hello [atom &amp;][bracket&tag </][tag foo][bracket&tag >][operator ++])")

  MT("braced_text",
     "([bracket&tag <][tag foo][bracket&tag >]hello {[number 10]} [atom &amp;][bracket&tag </][tag foo][bracket&tag >][operator ++])")

  MT("nested_tag",
     "([bracket&tag <][tag foo][bracket&tag ><][tag bar][bracket&tag ></][tag bar][bracket&tag ></][tag foo][bracket&tag >][operator ++])")

  MT("nested_jsx",
     "[keyword return] (",
     "  [bracket&tag <][tag foo][bracket&tag >]",
     "    say {[number 1] [operator +] [bracket&tag <][tag bar] [attribute attr]={[number 10]}[bracket&tag />]}!",
     "  [bracket&tag </][tag foo][bracket&tag >][operator ++]",
     ")")

  MT("preserve_js_context",
     "[variable x] [operator =] [string-2 `quasi${][bracket&tag <][tag foo][bracket&tag />][string-2 }quoted`]")

  MT("line_comment",
     "([bracket&tag <][tag foo] [comment // hello]",
     "   [bracket&tag ></][tag foo][bracket&tag >][operator ++])")

  MT("line_comment_not_in_tag",
     "([bracket&tag <][tag foo][bracket&tag >] // hello",
     "  [bracket&tag </][tag foo][bracket&tag >][operator ++])")

  MT("block_comment",
     "([bracket&tag <][tag foo] [comment /* hello]",
     "[comment    line 2]",
     "[comment    line 3 */] [bracket&tag ></][tag foo][bracket&tag >][operator ++])")

  MT("block_comment_not_in_tag",
     "([bracket&tag <][tag foo][bracket&tag >]/* hello",
     "    line 2",
     "    line 3 */ [bracket&tag </][tag foo][bracket&tag >][operator ++])")

  MT("missing_attr",
     "([bracket&tag <][tag foo] [attribute selected][bracket&tag />][operator ++])")

  MT("indent_js",
     "([bracket&tag <][tag foo][bracket&tag >]",
     "    [bracket&tag <][tag bar] [attribute baz]={[keyword function]() {",
     "        [keyword return] [number 10]",
     "      }}[bracket&tag />]",
     "  [bracket&tag </][tag foo][bracket&tag >])")

  MT("spread",
     "([bracket&tag <][tag foo] [attribute bar]={[meta ...][variable baz] [operator /][number 2]}[bracket&tag />])")

  MT("tag_attribute",
     "([bracket&tag <][tag foo] [attribute bar]=[bracket&tag <][tag foo][bracket&tag />/>][operator ++])")
})()
lib/codemirror/mode/jsx/index.html000064400000004552147361034410013215 0ustar00<!doctype html>

<title>CodeMirror: JSX mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../xml/xml.js"></script>
<script src="jsx.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">JSX</a>
  </ul>
</div>

<article>
<h2>JSX mode</h2>

<div><textarea id="code" name="code">// Code snippets from http://facebook.github.io/react/docs/jsx-in-depth.html

// Rendering HTML tags
var myDivElement = <div className="foo" />;
ReactDOM.render(myDivElement, document.getElementById('example'));

// Rendering React components
var MyComponent = React.createClass({/*...*/});
var myElement = <MyComponent someProperty={true} />;
ReactDOM.render(myElement, document.getElementById('example'));

// Namespaced components
var Form = MyFormComponent;

var App = (
  <Form>
    <Form.Row>
      <Form.Label />
      <Form.Input />
    </Form.Row>
  </Form>
);

// Attribute JavaScript expressions
var person = <Person name={window.isLoggedIn ? window.name : ''} />;

// Boolean attributes
<input type="button" disabled />;
<input type="button" disabled={true} />;

// Child JavaScript expressions
var content = <Container>{window.isLoggedIn ? <Nav /> : <Login />}</Container>;

// Comments
var content = (
  <Nav>
    {/* child comment, put {} around */}
    <Person
      /* multi
         line
         comment */
      name={window.isLoggedIn ? window.name : ''} // end of line comment
    />
  </Nav>
);
</textarea></div>

<script>
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
  lineNumbers: true,
  mode: "jsx"
})
</script>

<p>JSX Mode for <a href="http://facebook.github.io/react">React</a>'s
JavaScript syntax extension.</p>

<p><strong>MIME types defined:</strong> <code>text/jsx</code>, <code>text/typescript-jsx</code>.</p>

</article>
lib/codemirror/mode/jsx/jsx.js000064400000012113147361034410012352 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"))
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"

  // Depth means the amount of open braces in JS context, in XML
  // context 0 means not in tag, 1 means in tag, and 2 means in tag
  // and js block comment.
  function Context(state, mode, depth, prev) {
    this.state = state; this.mode = mode; this.depth = depth; this.prev = prev
  }

  function copyContext(context) {
    return new Context(CodeMirror.copyState(context.mode, context.state),
                       context.mode,
                       context.depth,
                       context.prev && copyContext(context.prev))
  }

  CodeMirror.defineMode("jsx", function(config, modeConfig) {
    var xmlMode = CodeMirror.getMode(config, {name: "xml", allowMissing: true, multilineTagIndentPastTag: false})
    var jsMode = CodeMirror.getMode(config, modeConfig && modeConfig.base || "javascript")

    function flatXMLIndent(state) {
      var tagName = state.tagName
      state.tagName = null
      var result = xmlMode.indent(state, "")
      state.tagName = tagName
      return result
    }

    function token(stream, state) {
      if (state.context.mode == xmlMode)
        return xmlToken(stream, state, state.context)
      else
        return jsToken(stream, state, state.context)
    }

    function xmlToken(stream, state, cx) {
      if (cx.depth == 2) { // Inside a JS /* */ comment
        if (stream.match(/^.*?\*\//)) cx.depth = 1
        else stream.skipToEnd()
        return "comment"
      }

      if (stream.peek() == "{") {
        xmlMode.skipAttribute(cx.state)

        var indent = flatXMLIndent(cx.state), xmlContext = cx.state.context
        // If JS starts on same line as tag
        if (xmlContext && stream.match(/^[^>]*>\s*$/, false)) {
          while (xmlContext.prev && !xmlContext.startOfLine)
            xmlContext = xmlContext.prev
          // If tag starts the line, use XML indentation level
          if (xmlContext.startOfLine) indent -= config.indentUnit
          // Else use JS indentation level
          else if (cx.prev.state.lexical) indent = cx.prev.state.lexical.indented
        // Else if inside of tag
        } else if (cx.depth == 1) {
          indent += config.indentUnit
        }

        state.context = new Context(CodeMirror.startState(jsMode, indent),
                                    jsMode, 0, state.context)
        return null
      }

      if (cx.depth == 1) { // Inside of tag
        if (stream.peek() == "<") { // Tag inside of tag
          xmlMode.skipAttribute(cx.state)
          state.context = new Context(CodeMirror.startState(xmlMode, flatXMLIndent(cx.state)),
                                      xmlMode, 0, state.context)
          return null
        } else if (stream.match("//")) {
          stream.skipToEnd()
          return "comment"
        } else if (stream.match("/*")) {
          cx.depth = 2
          return token(stream, state)
        }
      }

      var style = xmlMode.token(stream, cx.state), cur = stream.current(), stop
      if (/\btag\b/.test(style)) {
        if (/>$/.test(cur)) {
          if (cx.state.context) cx.depth = 0
          else state.context = state.context.prev
        } else if (/^</.test(cur)) {
          cx.depth = 1
        }
      } else if (!style && (stop = cur.indexOf("{")) > -1) {
        stream.backUp(cur.length - stop)
      }
      return style
    }

    function jsToken(stream, state, cx) {
      if (stream.peek() == "<" && jsMode.expressionAllowed(stream, cx.state)) {
        jsMode.skipExpression(cx.state)
        state.context = new Context(CodeMirror.startState(xmlMode, jsMode.indent(cx.state, "")),
                                    xmlMode, 0, state.context)
        return null
      }

      var style = jsMode.token(stream, cx.state)
      if (!style && cx.depth != null) {
        var cur = stream.current()
        if (cur == "{") {
          cx.depth++
        } else if (cur == "}") {
          if (--cx.depth == 0) state.context = state.context.prev
        }
      }
      return style
    }

    return {
      startState: function() {
        return {context: new Context(CodeMirror.startState(jsMode), jsMode)}
      },

      copyState: function(state) {
        return {context: copyContext(state.context)}
      },

      token: token,

      indent: function(state, textAfter, fullLine) {
        return state.context.mode.indent(state.context.state, textAfter, fullLine)
      },

      innerMode: function(state) {
        return state.context
      }
    }
  }, "xml", "javascript")

  CodeMirror.defineMIME("text/jsx", "jsx")
  CodeMirror.defineMIME("text/typescript-jsx", {name: "jsx", base: {name: "javascript", typescript: true}})
});
lib/codemirror/mode/smalltalk/index.html000064400000003560147361034410014373 0ustar00<!doctype html>

<title>CodeMirror: Smalltalk mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="smalltalk.js"></script>
<style>
      .CodeMirror {border: 2px solid #dee; border-right-width: 10px;}
      .CodeMirror-gutter {border: none; background: #dee;}
      .CodeMirror-gutter pre {color: white; font-weight: bold;}
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Smalltalk</a>
  </ul>
</div>

<article>
<h2>Smalltalk mode</h2>
<form><textarea id="code" name="code">
" 
    This is a test of the Smalltalk code
"
Seaside.WAComponent subclass: #MyCounter [
    | count |
    MyCounter class &gt;&gt; canBeRoot [ ^true ]

    initialize [
        super initialize.
        count := 0.
    ]
    states [ ^{ self } ]
    renderContentOn: html [
        html heading: count.
        html anchor callback: [ count := count + 1 ]; with: '++'.
        html space.
        html anchor callback: [ count := count - 1 ]; with: '--'.
    ]
]

MyCounter registerAsApplication: 'mycounter'
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        mode: "text/x-stsrc",
        indentUnit: 4
      });
    </script>

    <p>Simple Smalltalk mode.</p>

    <p><strong>MIME types defined:</strong> <code>text/x-stsrc</code>.</p>
  </article>
lib/codemirror/mode/smalltalk/smalltalk.js000064400000010677147361034410014727 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('smalltalk', function(config) {

  var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/;
  var keywords = /true|false|nil|self|super|thisContext/;

  var Context = function(tokenizer, parent) {
    this.next = tokenizer;
    this.parent = parent;
  };

  var Token = function(name, context, eos) {
    this.name = name;
    this.context = context;
    this.eos = eos;
  };

  var State = function() {
    this.context = new Context(next, null);
    this.expectVariable = true;
    this.indentation = 0;
    this.userIndentationDelta = 0;
  };

  State.prototype.userIndent = function(indentation) {
    this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0;
  };

  var next = function(stream, context, state) {
    var token = new Token(null, context, false);
    var aChar = stream.next();

    if (aChar === '"') {
      token = nextComment(stream, new Context(nextComment, context));

    } else if (aChar === '\'') {
      token = nextString(stream, new Context(nextString, context));

    } else if (aChar === '#') {
      if (stream.peek() === '\'') {
        stream.next();
        token = nextSymbol(stream, new Context(nextSymbol, context));
      } else {
        if (stream.eatWhile(/[^\s.{}\[\]()]/))
          token.name = 'string-2';
        else
          token.name = 'meta';
      }

    } else if (aChar === '$') {
      if (stream.next() === '<') {
        stream.eatWhile(/[^\s>]/);
        stream.next();
      }
      token.name = 'string-2';

    } else if (aChar === '|' && state.expectVariable) {
      token.context = new Context(nextTemporaries, context);

    } else if (/[\[\]{}()]/.test(aChar)) {
      token.name = 'bracket';
      token.eos = /[\[{(]/.test(aChar);

      if (aChar === '[') {
        state.indentation++;
      } else if (aChar === ']') {
        state.indentation = Math.max(0, state.indentation - 1);
      }

    } else if (specialChars.test(aChar)) {
      stream.eatWhile(specialChars);
      token.name = 'operator';
      token.eos = aChar !== ';'; // ; cascaded message expression

    } else if (/\d/.test(aChar)) {
      stream.eatWhile(/[\w\d]/);
      token.name = 'number';

    } else if (/[\w_]/.test(aChar)) {
      stream.eatWhile(/[\w\d_]/);
      token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null;

    } else {
      token.eos = state.expectVariable;
    }

    return token;
  };

  var nextComment = function(stream, context) {
    stream.eatWhile(/[^"]/);
    return new Token('comment', stream.eat('"') ? context.parent : context, true);
  };

  var nextString = function(stream, context) {
    stream.eatWhile(/[^']/);
    return new Token('string', stream.eat('\'') ? context.parent : context, false);
  };

  var nextSymbol = function(stream, context) {
    stream.eatWhile(/[^']/);
    return new Token('string-2', stream.eat('\'') ? context.parent : context, false);
  };

  var nextTemporaries = function(stream, context) {
    var token = new Token(null, context, false);
    var aChar = stream.next();

    if (aChar === '|') {
      token.context = context.parent;
      token.eos = true;

    } else {
      stream.eatWhile(/[^|]/);
      token.name = 'variable';
    }

    return token;
  };

  return {
    startState: function() {
      return new State;
    },

    token: function(stream, state) {
      state.userIndent(stream.indentation());

      if (stream.eatSpace()) {
        return null;
      }

      var token = state.context.next(stream, state.context, state);
      state.context = token.context;
      state.expectVariable = token.eos;

      return token.name;
    },

    blankLine: function(state) {
      state.userIndent(0);
    },

    indent: function(state, textAfter) {
      var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta;
      return (state.indentation + i) * config.indentUnit;
    },

    electricChars: ']'
  };

});

CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'});

});
lib/codemirror/mode/haskell/index.html000064400000004222147361034410014026 0ustar00<!doctype html>

<title>CodeMirror: Haskell mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/elegant.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="haskell.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Haskell</a>
  </ul>
</div>

<article>
<h2>Haskell mode</h2>
<form><textarea id="code" name="code">
module UniquePerms (
    uniquePerms
    )
where

-- | Find all unique permutations of a list where there might be duplicates.
uniquePerms :: (Eq a) => [a] -> [[a]]
uniquePerms = permBag . makeBag

-- | An unordered collection where duplicate values are allowed,
-- but represented with a single value and a count.
type Bag a = [(a, Int)]

makeBag :: (Eq a) => [a] -> Bag a
makeBag [] = []
makeBag (a:as) = mix a $ makeBag as
  where
    mix a []                        = [(a,1)]
    mix a (bn@(b,n):bs) | a == b    = (b,n+1):bs
                        | otherwise = bn : mix a bs

permBag :: Bag a -> [[a]]
permBag [] = [[]]
permBag bs = concatMap (\(f,cs) -> map (f:) $ permBag cs) . oneOfEach $ bs
  where
    oneOfEach [] = []
    oneOfEach (an@(a,n):bs) =
        let bs' = if n == 1 then bs else (a,n-1):bs
        in (a,bs') : mapSnd (an:) (oneOfEach bs)
    
    apSnd f (a,b) = (a, f b)
    mapSnd = map . apSnd
</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        theme: "elegant"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-haskell</code>.</p>
  </article>
lib/codemirror/mode/haskell/haskell.js000064400000017645147361034410014027 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("haskell", function(_config, modeConfig) {

  function switchState(source, setState, f) {
    setState(f);
    return f(source, setState);
  }

  // These should all be Unicode extended, as per the Haskell 2010 report
  var smallRE = /[a-z_]/;
  var largeRE = /[A-Z]/;
  var digitRE = /\d/;
  var hexitRE = /[0-9A-Fa-f]/;
  var octitRE = /[0-7]/;
  var idRE = /[a-z_A-Z0-9'\xa1-\uffff]/;
  var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/;
  var specialRE = /[(),;[\]`{}]/;
  var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer

  function normal(source, setState) {
    if (source.eatWhile(whiteCharRE)) {
      return null;
    }

    var ch = source.next();
    if (specialRE.test(ch)) {
      if (ch == '{' && source.eat('-')) {
        var t = "comment";
        if (source.eat('#')) {
          t = "meta";
        }
        return switchState(source, setState, ncomment(t, 1));
      }
      return null;
    }

    if (ch == '\'') {
      if (source.eat('\\')) {
        source.next();  // should handle other escapes here
      }
      else {
        source.next();
      }
      if (source.eat('\'')) {
        return "string";
      }
      return "error";
    }

    if (ch == '"') {
      return switchState(source, setState, stringLiteral);
    }

    if (largeRE.test(ch)) {
      source.eatWhile(idRE);
      if (source.eat('.')) {
        return "qualifier";
      }
      return "variable-2";
    }

    if (smallRE.test(ch)) {
      source.eatWhile(idRE);
      return "variable";
    }

    if (digitRE.test(ch)) {
      if (ch == '0') {
        if (source.eat(/[xX]/)) {
          source.eatWhile(hexitRE); // should require at least 1
          return "integer";
        }
        if (source.eat(/[oO]/)) {
          source.eatWhile(octitRE); // should require at least 1
          return "number";
        }
      }
      source.eatWhile(digitRE);
      var t = "number";
      if (source.match(/^\.\d+/)) {
        t = "number";
      }
      if (source.eat(/[eE]/)) {
        t = "number";
        source.eat(/[-+]/);
        source.eatWhile(digitRE); // should require at least 1
      }
      return t;
    }

    if (ch == "." && source.eat("."))
      return "keyword";

    if (symbolRE.test(ch)) {
      if (ch == '-' && source.eat(/-/)) {
        source.eatWhile(/-/);
        if (!source.eat(symbolRE)) {
          source.skipToEnd();
          return "comment";
        }
      }
      var t = "variable";
      if (ch == ':') {
        t = "variable-2";
      }
      source.eatWhile(symbolRE);
      return t;
    }

    return "error";
  }

  function ncomment(type, nest) {
    if (nest == 0) {
      return normal;
    }
    return function(source, setState) {
      var currNest = nest;
      while (!source.eol()) {
        var ch = source.next();
        if (ch == '{' && source.eat('-')) {
          ++currNest;
        }
        else if (ch == '-' && source.eat('}')) {
          --currNest;
          if (currNest == 0) {
            setState(normal);
            return type;
          }
        }
      }
      setState(ncomment(type, currNest));
      return type;
    };
  }

  function stringLiteral(source, setState) {
    while (!source.eol()) {
      var ch = source.next();
      if (ch == '"') {
        setState(normal);
        return "string";
      }
      if (ch == '\\') {
        if (source.eol() || source.eat(whiteCharRE)) {
          setState(stringGap);
          return "string";
        }
        if (source.eat('&')) {
        }
        else {
          source.next(); // should handle other escapes here
        }
      }
    }
    setState(normal);
    return "error";
  }

  function stringGap(source, setState) {
    if (source.eat('\\')) {
      return switchState(source, setState, stringLiteral);
    }
    source.next();
    setState(normal);
    return "error";
  }


  var wellKnownWords = (function() {
    var wkw = {};
    function setType(t) {
      return function () {
        for (var i = 0; i < arguments.length; i++)
          wkw[arguments[i]] = t;
      };
    }

    setType("keyword")(
      "case", "class", "data", "default", "deriving", "do", "else", "foreign",
      "if", "import", "in", "infix", "infixl", "infixr", "instance", "let",
      "module", "newtype", "of", "then", "type", "where", "_");

    setType("keyword")(
      "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>");

    setType("builtin")(
      "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<",
      "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**");

    setType("builtin")(
      "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq",
      "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT",
      "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left",
      "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read",
      "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS",
      "String", "True");

    setType("builtin")(
      "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf",
      "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling",
      "compare", "concat", "concatMap", "const", "cos", "cosh", "curry",
      "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either",
      "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo",
      "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter",
      "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap",
      "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger",
      "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents",
      "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized",
      "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last",
      "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map",
      "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound",
      "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or",
      "otherwise", "pi", "pred", "print", "product", "properFraction",
      "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile",
      "readIO", "readList", "readLn", "readParen", "reads", "readsPrec",
      "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse",
      "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq",
      "sequence", "sequence_", "show", "showChar", "showList", "showParen",
      "showString", "shows", "showsPrec", "significand", "signum", "sin",
      "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum",
      "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger",
      "toRational", "truncate", "uncurry", "undefined", "unlines", "until",
      "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip",
      "zip3", "zipWith", "zipWith3");

    var override = modeConfig.overrideKeywords;
    if (override) for (var word in override) if (override.hasOwnProperty(word))
      wkw[word] = override[word];

    return wkw;
  })();



  return {
    startState: function ()  { return { f: normal }; },
    copyState:  function (s) { return { f: s.f }; },

    token: function(stream, state) {
      var t = state.f(stream, function(s) { state.f = s; });
      var w = stream.current();
      return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t;
    },

    blockCommentStart: "{-",
    blockCommentEnd: "-}",
    lineComment: "--"
  };

});

CodeMirror.defineMIME("text/x-haskell", "haskell");

});
lib/codemirror/mode/dtd/index.html000064400000006411147361034410013160 0ustar00<!doctype html>

<title>CodeMirror: DTD mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="dtd.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">DTD</a>
  </ul>
</div>

<article>
<h2>DTD mode</h2>
<form><textarea id="code" name="code"><?xml version="1.0" encoding="UTF-8"?>

<!ATTLIST title
  xmlns	CDATA	#FIXED	"http://docbook.org/ns/docbook"
  role	CDATA	#IMPLIED
  %db.common.attributes;
  %db.common.linking.attributes;
>

<!--
  Try: http://docbook.org/xml/5.0/dtd/docbook.dtd
-->

<!DOCTYPE xsl:stylesheet
  [
    <!ENTITY nbsp   "&amp;#160;">
    <!ENTITY copy   "&amp;#169;">
    <!ENTITY reg    "&amp;#174;">
    <!ENTITY trade  "&amp;#8482;">
    <!ENTITY mdash  "&amp;#8212;">
    <!ENTITY ldquo  "&amp;#8220;">
    <!ENTITY rdquo  "&amp;#8221;">
    <!ENTITY pound  "&amp;#163;">
    <!ENTITY yen    "&amp;#165;">
    <!ENTITY euro   "&amp;#8364;">
    <!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
  ]
>

<!ELEMENT title (#PCDATA|inlinemediaobject|remark|superscript|subscript|xref|link|olink|anchor|biblioref|alt|annotation|indexterm|abbrev|acronym|date|emphasis|footnote|footnoteref|foreignphrase|phrase|quote|wordasword|firstterm|glossterm|coref|trademark|productnumber|productname|database|application|hardware|citation|citerefentry|citetitle|citebiblioid|author|person|personname|org|orgname|editor|jobtitle|replaceable|package|parameter|termdef|nonterminal|systemitem|option|optional|property|inlineequation|tag|markup|token|symbol|literal|code|constant|email|uri|guiicon|guibutton|guimenuitem|guimenu|guisubmenu|guilabel|menuchoice|mousebutton|keycombo|keycap|keycode|keysym|shortcut|accel|prompt|envar|filename|command|computeroutput|userinput|function|varname|returnvalue|type|classname|exceptionname|interfacename|methodname|modifier|initializer|ooclass|ooexception|oointerface|errorcode|errortext|errorname|errortype)*>

<!ENTITY % db.common.attributes "
  xml:id	ID	#IMPLIED
  version	CDATA	#IMPLIED
  xml:lang	CDATA	#IMPLIED
  xml:base	CDATA	#IMPLIED
  remap	CDATA	#IMPLIED
  xreflabel	CDATA	#IMPLIED
  revisionflag	(changed|added|deleted|off)	#IMPLIED
  dir	(ltr|rtl|lro|rlo)	#IMPLIED
  arch	CDATA	#IMPLIED
  audience	CDATA	#IMPLIED
  condition	CDATA	#IMPLIED
  conformance	CDATA	#IMPLIED
  os	CDATA	#IMPLIED
  revision	CDATA	#IMPLIED
  security	CDATA	#IMPLIED
  userlevel	CDATA	#IMPLIED
  vendor	CDATA	#IMPLIED
  wordsize	CDATA	#IMPLIED
  annotations	CDATA	#IMPLIED

"></textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "dtd", alignCDATA: true},
        lineNumbers: true,
        lineWrapping: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>application/xml-dtd</code>.</p>
  </article>
lib/codemirror/mode/dtd/dtd.js000064400000011316147361034410012274 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/*
  DTD mode
  Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>
  Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
  GitHub: @peterkroon
*/

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("dtd", function(config) {
  var indentUnit = config.indentUnit, type;
  function ret(style, tp) {type = tp; return style;}

  function tokenBase(stream, state) {
    var ch = stream.next();

    if (ch == "<" && stream.eat("!") ) {
      if (stream.eatWhile(/[\-]/)) {
        state.tokenize = tokenSGMLComment;
        return tokenSGMLComment(stream, state);
      } else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent");
    } else if (ch == "<" && stream.eat("?")) { //xml declaration
      state.tokenize = inBlock("meta", "?>");
      return ret("meta", ch);
    } else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag");
    else if (ch == "|") return ret("keyword", "seperator");
    else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else
    else if (ch.match(/[\[\]]/)) return ret("rule", ch);
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) {
      var sc = stream.current();
      if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1);
      return ret("tag", "tag");
    } else if (ch == "%" || ch == "*" ) return ret("number", "number");
    else {
      stream.eatWhile(/[\w\\\-_%.{,]/);
      return ret(null, null);
    }
  }

  function tokenSGMLComment(stream, state) {
    var dashes = 0, ch;
    while ((ch = stream.next()) != null) {
      if (dashes >= 2 && ch == ">") {
        state.tokenize = tokenBase;
        break;
      }
      dashes = (ch == "-") ? dashes + 1 : 0;
    }
    return ret("comment", "comment");
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      return ret("string", "tag");
    };
  }

  function inBlock(style, terminator) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.match(terminator)) {
          state.tokenize = tokenBase;
          break;
        }
        stream.next();
      }
      return style;
    };
  }

  return {
    startState: function(base) {
      return {tokenize: tokenBase,
              baseIndent: base || 0,
              stack: []};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);

      var context = state.stack[state.stack.length-1];
      if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule");
      else if (type === "endtag") state.stack[state.stack.length-1] = "endtag";
      else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop();
      else if (type == "[") state.stack.push("[");
      return style;
    },

    indent: function(state, textAfter) {
      var n = state.stack.length;

      if( textAfter.match(/\]\s+|\]/) )n=n-1;
      else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){
        if(textAfter.substr(0,1) === "<") {}
        else if( type == "doindent" && textAfter.length > 1 ) {}
        else if( type == "doindent")n--;
        else if( type == ">" && textAfter.length > 1) {}
        else if( type == "tag" && textAfter !== ">") {}
        else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--;
        else if( type == "tag")n++;
        else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--;
        else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule") {}
        else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1;
        else if( textAfter === ">") {}
        else n=n-1;
        //over rule them all
        if(type == null || type == "]")n--;
      }

      return state.baseIndent + n * indentUnit;
    },

    electricChars: "]>"
  };
});

CodeMirror.defineMIME("application/xml-dtd", "dtd");

});
lib/codemirror/mode/slim/test.js000064400000006072147361034410012674 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh

(function() {
  var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "slim");
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }

  // Requires at least one media query
  MT("elementName",
     "[tag h1] Hey There");

  MT("oneElementPerLine",
     "[tag h1] Hey There .h2");

  MT("idShortcut",
     "[attribute&def #test] Hey There");

  MT("tagWithIdShortcuts",
     "[tag h1][attribute&def #test] Hey There");

  MT("classShortcut",
     "[attribute&qualifier .hello] Hey There");

  MT("tagWithIdAndClassShortcuts",
     "[tag h1][attribute&def #test][attribute&qualifier .hello] Hey There");

  MT("docType",
     "[keyword doctype] xml");

  MT("comment",
     "[comment / Hello WORLD]");

  MT("notComment",
     "[tag h1] This is not a / comment ");

  MT("attributes",
     "[tag a]([attribute title]=[string \"test\"]) [attribute href]=[string \"link\"]}");

  MT("multiLineAttributes",
     "[tag a]([attribute title]=[string \"test\"]",
     "  ) [attribute href]=[string \"link\"]}");

  MT("htmlCode",
     "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket </][tag h1][tag&bracket >]");

  MT("rubyBlock",
     "[operator&special =][variable-2 @item]");

  MT("selectorRubyBlock",
     "[tag a][attribute&qualifier .test][operator&special =] [variable-2 @item]");

  MT("nestedRubyBlock",
      "[tag a]",
      "  [operator&special =][variable puts] [string \"test\"]");

  MT("multilinePlaintext",
      "[tag p]",
      "  | Hello,",
      "    World");

  MT("multilineRuby",
      "[tag p]",
      "  [comment /# this is a comment]",
      "     [comment and this is a comment too]",
      "  | Date/Time",
      "  [operator&special -] [variable now] [operator =] [tag DateTime][operator .][property now]",
      "  [tag strong][operator&special =] [variable now]",
      "  [operator&special -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])",
      "     [operator&special =][string \"Happy\"]",
      "     [operator&special =][string \"Belated\"]",
      "     [operator&special =][string \"Birthday\"]");

  MT("multilineComment",
      "[comment /]",
      "  [comment Multiline]",
      "  [comment Comment]");

  MT("hamlAfterRubyTag",
    "[attribute&qualifier .block]",
    "  [tag strong][operator&special =] [variable now]",
    "  [attribute&qualifier .test]",
    "     [operator&special =][variable now]",
    "  [attribute&qualifier .right]");

  MT("stretchedRuby",
     "[operator&special =] [variable puts] [string \"Hello\"],",
     "   [string \"World\"]");

  MT("interpolationInHashAttribute",
     "[tag div]{[attribute id] = [string \"]#{[variable test]}[string _]#{[variable ting]}[string \"]} test");

  MT("interpolationInHTMLAttribute",
     "[tag div]([attribute title]=[string \"]#{[variable test]}[string _]#{[variable ting]()}[string \"]) Test");
})();
lib/codemirror/mode/slim/index.html000064400000005567147361034410013364 0ustar00<!doctype html>

<title>CodeMirror: SLIM mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/ambiance.css">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.0/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
<script src="../../lib/codemirror.js"></script>
<script src="../xml/xml.js"></script>
<script src="../htmlembedded/htmlembedded.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="../coffeescript/coffeescript.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../ruby/ruby.js"></script>
<script src="../markdown/markdown.js"></script>
<script src="slim.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">SLIM</a>
  </ul>
</div>

<article>
  <h2>SLIM mode</h2>
  <form><textarea id="code" name="code">
body
  table
    - for user in users
      td id="user_#{user.id}" class=user.role
        a href=user_action(user, :edit) Edit #{user.name}
        a href=(path_to_user user) = user.name
body
  h1(id="logo") = page_logo
  h2[id="tagline" class="small tagline"] = page_tagline

h2[id="tagline"
   class="small tagline"] = page_tagline

h1 id = "logo" = page_logo
h2 [ id = "tagline" ] = page_tagline

/ comment
  second line
/! html comment
   second line
<!-- html comment -->
<a href="#{'hello' if set}">link</a>
a.slim href="work" disabled=false running==:atom Text <b>bold</b>
.clazz data-id="test" == 'hello' unless quark
 | Text mode #{12}
   Second line
= x ||= :ruby_atom
#menu.left
  - @env.each do |x|
    li: a = x
*@dyntag attr="val"
.first *{:class => [:second, :third]} Text
.second class=["text","more"]
.third class=:text,:symbol

  </textarea></form>
  <script>
    var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
      lineNumbers: true,
      theme: "ambiance",
      mode: "application/x-slim"
    });
    jQuery('.CodeMirror').resizable({
      resize: function() {
        editor.setSize(jQuery(this).width(), jQuery(this).height());
        //editor.refresh();
      }
    });
  </script>

  <p><strong>MIME types defined:</strong> <code>application/x-slim</code>.</p>

  <p>
    <strong>Parsing/Highlighting Tests:</strong>
    <a href="../../test/index.html#slim_*">normal</a>,
    <a href="../../test/index.html#verbose,slim_*">verbose</a>.
  </p>
</article>
lib/codemirror/mode/slim/slim.js000064400000043152147361034410012661 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

  CodeMirror.defineMode("slim", function(config) {
    var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"});
    var rubyMode = CodeMirror.getMode(config, "ruby");
    var modes = { html: htmlMode, ruby: rubyMode };
    var embedded = {
      ruby: "ruby",
      javascript: "javascript",
      css: "text/css",
      sass: "text/x-sass",
      scss: "text/x-scss",
      less: "text/x-less",
      styl: "text/x-styl", // no highlighting so far
      coffee: "coffeescript",
      asciidoc: "text/x-asciidoc",
      markdown: "text/x-markdown",
      textile: "text/x-textile", // no highlighting so far
      creole: "text/x-creole", // no highlighting so far
      wiki: "text/x-wiki", // no highlighting so far
      mediawiki: "text/x-mediawiki", // no highlighting so far
      rdoc: "text/x-rdoc", // no highlighting so far
      builder: "text/x-builder", // no highlighting so far
      nokogiri: "text/x-nokogiri", // no highlighting so far
      erb: "application/x-erb"
    };
    var embeddedRegexp = function(map){
      var arr = [];
      for(var key in map) arr.push(key);
      return new RegExp("^("+arr.join('|')+"):");
    }(embedded);

    var styleMap = {
      "commentLine": "comment",
      "slimSwitch": "operator special",
      "slimTag": "tag",
      "slimId": "attribute def",
      "slimClass": "attribute qualifier",
      "slimAttribute": "attribute",
      "slimSubmode": "keyword special",
      "closeAttributeTag": null,
      "slimDoctype": null,
      "lineContinuation": null
    };
    var closing = {
      "{": "}",
      "[": "]",
      "(": ")"
    };

    var nameStartChar = "_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD";
    var nameChar = nameStartChar + "\\-0-9\xB7\u0300-\u036F\u203F-\u2040";
    var nameRegexp = new RegExp("^[:"+nameStartChar+"](?::["+nameChar+"]|["+nameChar+"]*)");
    var attributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*(?=\\s*=)");
    var wrappedAttributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*");
    var classNameRegexp = /^\.-?[_a-zA-Z]+[\w\-]*/;
    var classIdRegexp = /^#[_a-zA-Z]+[\w\-]*/;

    function backup(pos, tokenize, style) {
      var restore = function(stream, state) {
        state.tokenize = tokenize;
        if (stream.pos < pos) {
          stream.pos = pos;
          return style;
        }
        return state.tokenize(stream, state);
      };
      return function(stream, state) {
        state.tokenize = restore;
        return tokenize(stream, state);
      };
    }

    function maybeBackup(stream, state, pat, offset, style) {
      var cur = stream.current();
      var idx = cur.search(pat);
      if (idx > -1) {
        state.tokenize = backup(stream.pos, state.tokenize, style);
        stream.backUp(cur.length - idx - offset);
      }
      return style;
    }

    function continueLine(state, column) {
      state.stack = {
        parent: state.stack,
        style: "continuation",
        indented: column,
        tokenize: state.line
      };
      state.line = state.tokenize;
    }
    function finishContinue(state) {
      if (state.line == state.tokenize) {
        state.line = state.stack.tokenize;
        state.stack = state.stack.parent;
      }
    }

    function lineContinuable(column, tokenize) {
      return function(stream, state) {
        finishContinue(state);
        if (stream.match(/^\\$/)) {
          continueLine(state, column);
          return "lineContinuation";
        }
        var style = tokenize(stream, state);
        if (stream.eol() && stream.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)) {
          stream.backUp(1);
        }
        return style;
      };
    }
    function commaContinuable(column, tokenize) {
      return function(stream, state) {
        finishContinue(state);
        var style = tokenize(stream, state);
        if (stream.eol() && stream.current().match(/,$/)) {
          continueLine(state, column);
        }
        return style;
      };
    }

    function rubyInQuote(endQuote, tokenize) {
      // TODO: add multi line support
      return function(stream, state) {
        var ch = stream.peek();
        if (ch == endQuote && state.rubyState.tokenize.length == 1) {
          // step out of ruby context as it seems to complete processing all the braces
          stream.next();
          state.tokenize = tokenize;
          return "closeAttributeTag";
        } else {
          return ruby(stream, state);
        }
      };
    }
    function startRubySplat(tokenize) {
      var rubyState;
      var runSplat = function(stream, state) {
        if (state.rubyState.tokenize.length == 1 && !state.rubyState.context.prev) {
          stream.backUp(1);
          if (stream.eatSpace()) {
            state.rubyState = rubyState;
            state.tokenize = tokenize;
            return tokenize(stream, state);
          }
          stream.next();
        }
        return ruby(stream, state);
      };
      return function(stream, state) {
        rubyState = state.rubyState;
        state.rubyState = CodeMirror.startState(rubyMode);
        state.tokenize = runSplat;
        return ruby(stream, state);
      };
    }

    function ruby(stream, state) {
      return rubyMode.token(stream, state.rubyState);
    }

    function htmlLine(stream, state) {
      if (stream.match(/^\\$/)) {
        return "lineContinuation";
      }
      return html(stream, state);
    }
    function html(stream, state) {
      if (stream.match(/^#\{/)) {
        state.tokenize = rubyInQuote("}", state.tokenize);
        return null;
      }
      return maybeBackup(stream, state, /[^\\]#\{/, 1, htmlMode.token(stream, state.htmlState));
    }

    function startHtmlLine(lastTokenize) {
      return function(stream, state) {
        var style = htmlLine(stream, state);
        if (stream.eol()) state.tokenize = lastTokenize;
        return style;
      };
    }

    function startHtmlMode(stream, state, offset) {
      state.stack = {
        parent: state.stack,
        style: "html",
        indented: stream.column() + offset, // pipe + space
        tokenize: state.line
      };
      state.line = state.tokenize = html;
      return null;
    }

    function comment(stream, state) {
      stream.skipToEnd();
      return state.stack.style;
    }

    function commentMode(stream, state) {
      state.stack = {
        parent: state.stack,
        style: "comment",
        indented: state.indented + 1,
        tokenize: state.line
      };
      state.line = comment;
      return comment(stream, state);
    }

    function attributeWrapper(stream, state) {
      if (stream.eat(state.stack.endQuote)) {
        state.line = state.stack.line;
        state.tokenize = state.stack.tokenize;
        state.stack = state.stack.parent;
        return null;
      }
      if (stream.match(wrappedAttributeNameRegexp)) {
        state.tokenize = attributeWrapperAssign;
        return "slimAttribute";
      }
      stream.next();
      return null;
    }
    function attributeWrapperAssign(stream, state) {
      if (stream.match(/^==?/)) {
        state.tokenize = attributeWrapperValue;
        return null;
      }
      return attributeWrapper(stream, state);
    }
    function attributeWrapperValue(stream, state) {
      var ch = stream.peek();
      if (ch == '"' || ch == "\'") {
        state.tokenize = readQuoted(ch, "string", true, false, attributeWrapper);
        stream.next();
        return state.tokenize(stream, state);
      }
      if (ch == '[') {
        return startRubySplat(attributeWrapper)(stream, state);
      }
      if (stream.match(/^(true|false|nil)\b/)) {
        state.tokenize = attributeWrapper;
        return "keyword";
      }
      return startRubySplat(attributeWrapper)(stream, state);
    }

    function startAttributeWrapperMode(state, endQuote, tokenize) {
      state.stack = {
        parent: state.stack,
        style: "wrapper",
        indented: state.indented + 1,
        tokenize: tokenize,
        line: state.line,
        endQuote: endQuote
      };
      state.line = state.tokenize = attributeWrapper;
      return null;
    }

    function sub(stream, state) {
      if (stream.match(/^#\{/)) {
        state.tokenize = rubyInQuote("}", state.tokenize);
        return null;
      }
      var subStream = new CodeMirror.StringStream(stream.string.slice(state.stack.indented), stream.tabSize);
      subStream.pos = stream.pos - state.stack.indented;
      subStream.start = stream.start - state.stack.indented;
      subStream.lastColumnPos = stream.lastColumnPos - state.stack.indented;
      subStream.lastColumnValue = stream.lastColumnValue - state.stack.indented;
      var style = state.subMode.token(subStream, state.subState);
      stream.pos = subStream.pos + state.stack.indented;
      return style;
    }
    function firstSub(stream, state) {
      state.stack.indented = stream.column();
      state.line = state.tokenize = sub;
      return state.tokenize(stream, state);
    }

    function createMode(mode) {
      var query = embedded[mode];
      var spec = CodeMirror.mimeModes[query];
      if (spec) {
        return CodeMirror.getMode(config, spec);
      }
      var factory = CodeMirror.modes[query];
      if (factory) {
        return factory(config, {name: query});
      }
      return CodeMirror.getMode(config, "null");
    }

    function getMode(mode) {
      if (!modes.hasOwnProperty(mode)) {
        return modes[mode] = createMode(mode);
      }
      return modes[mode];
    }

    function startSubMode(mode, state) {
      var subMode = getMode(mode);
      var subState = CodeMirror.startState(subMode);

      state.subMode = subMode;
      state.subState = subState;

      state.stack = {
        parent: state.stack,
        style: "sub",
        indented: state.indented + 1,
        tokenize: state.line
      };
      state.line = state.tokenize = firstSub;
      return "slimSubmode";
    }

    function doctypeLine(stream, _state) {
      stream.skipToEnd();
      return "slimDoctype";
    }

    function startLine(stream, state) {
      var ch = stream.peek();
      if (ch == '<') {
        return (state.tokenize = startHtmlLine(state.tokenize))(stream, state);
      }
      if (stream.match(/^[|']/)) {
        return startHtmlMode(stream, state, 1);
      }
      if (stream.match(/^\/(!|\[\w+])?/)) {
        return commentMode(stream, state);
      }
      if (stream.match(/^(-|==?[<>]?)/)) {
        state.tokenize = lineContinuable(stream.column(), commaContinuable(stream.column(), ruby));
        return "slimSwitch";
      }
      if (stream.match(/^doctype\b/)) {
        state.tokenize = doctypeLine;
        return "keyword";
      }

      var m = stream.match(embeddedRegexp);
      if (m) {
        return startSubMode(m[1], state);
      }

      return slimTag(stream, state);
    }

    function slim(stream, state) {
      if (state.startOfLine) {
        return startLine(stream, state);
      }
      return slimTag(stream, state);
    }

    function slimTag(stream, state) {
      if (stream.eat('*')) {
        state.tokenize = startRubySplat(slimTagExtras);
        return null;
      }
      if (stream.match(nameRegexp)) {
        state.tokenize = slimTagExtras;
        return "slimTag";
      }
      return slimClass(stream, state);
    }
    function slimTagExtras(stream, state) {
      if (stream.match(/^(<>?|><?)/)) {
        state.tokenize = slimClass;
        return null;
      }
      return slimClass(stream, state);
    }
    function slimClass(stream, state) {
      if (stream.match(classIdRegexp)) {
        state.tokenize = slimClass;
        return "slimId";
      }
      if (stream.match(classNameRegexp)) {
        state.tokenize = slimClass;
        return "slimClass";
      }
      return slimAttribute(stream, state);
    }
    function slimAttribute(stream, state) {
      if (stream.match(/^([\[\{\(])/)) {
        return startAttributeWrapperMode(state, closing[RegExp.$1], slimAttribute);
      }
      if (stream.match(attributeNameRegexp)) {
        state.tokenize = slimAttributeAssign;
        return "slimAttribute";
      }
      if (stream.peek() == '*') {
        stream.next();
        state.tokenize = startRubySplat(slimContent);
        return null;
      }
      return slimContent(stream, state);
    }
    function slimAttributeAssign(stream, state) {
      if (stream.match(/^==?/)) {
        state.tokenize = slimAttributeValue;
        return null;
      }
      // should never happen, because of forward lookup
      return slimAttribute(stream, state);
    }

    function slimAttributeValue(stream, state) {
      var ch = stream.peek();
      if (ch == '"' || ch == "\'") {
        state.tokenize = readQuoted(ch, "string", true, false, slimAttribute);
        stream.next();
        return state.tokenize(stream, state);
      }
      if (ch == '[') {
        return startRubySplat(slimAttribute)(stream, state);
      }
      if (ch == ':') {
        return startRubySplat(slimAttributeSymbols)(stream, state);
      }
      if (stream.match(/^(true|false|nil)\b/)) {
        state.tokenize = slimAttribute;
        return "keyword";
      }
      return startRubySplat(slimAttribute)(stream, state);
    }
    function slimAttributeSymbols(stream, state) {
      stream.backUp(1);
      if (stream.match(/^[^\s],(?=:)/)) {
        state.tokenize = startRubySplat(slimAttributeSymbols);
        return null;
      }
      stream.next();
      return slimAttribute(stream, state);
    }
    function readQuoted(quote, style, embed, unescaped, nextTokenize) {
      return function(stream, state) {
        finishContinue(state);
        var fresh = stream.current().length == 0;
        if (stream.match(/^\\$/, fresh)) {
          if (!fresh) return style;
          continueLine(state, state.indented);
          return "lineContinuation";
        }
        if (stream.match(/^#\{/, fresh)) {
          if (!fresh) return style;
          state.tokenize = rubyInQuote("}", state.tokenize);
          return null;
        }
        var escaped = false, ch;
        while ((ch = stream.next()) != null) {
          if (ch == quote && (unescaped || !escaped)) {
            state.tokenize = nextTokenize;
            break;
          }
          if (embed && ch == "#" && !escaped) {
            if (stream.eat("{")) {
              stream.backUp(2);
              break;
            }
          }
          escaped = !escaped && ch == "\\";
        }
        if (stream.eol() && escaped) {
          stream.backUp(1);
        }
        return style;
      };
    }
    function slimContent(stream, state) {
      if (stream.match(/^==?/)) {
        state.tokenize = ruby;
        return "slimSwitch";
      }
      if (stream.match(/^\/$/)) { // tag close hint
        state.tokenize = slim;
        return null;
      }
      if (stream.match(/^:/)) { // inline tag
        state.tokenize = slimTag;
        return "slimSwitch";
      }
      startHtmlMode(stream, state, 0);
      return state.tokenize(stream, state);
    }

    var mode = {
      // default to html mode
      startState: function() {
        var htmlState = CodeMirror.startState(htmlMode);
        var rubyState = CodeMirror.startState(rubyMode);
        return {
          htmlState: htmlState,
          rubyState: rubyState,
          stack: null,
          last: null,
          tokenize: slim,
          line: slim,
          indented: 0
        };
      },

      copyState: function(state) {
        return {
          htmlState : CodeMirror.copyState(htmlMode, state.htmlState),
          rubyState: CodeMirror.copyState(rubyMode, state.rubyState),
          subMode: state.subMode,
          subState: state.subMode && CodeMirror.copyState(state.subMode, state.subState),
          stack: state.stack,
          last: state.last,
          tokenize: state.tokenize,
          line: state.line
        };
      },

      token: function(stream, state) {
        if (stream.sol()) {
          state.indented = stream.indentation();
          state.startOfLine = true;
          state.tokenize = state.line;
          while (state.stack && state.stack.indented > state.indented && state.last != "slimSubmode") {
            state.line = state.tokenize = state.stack.tokenize;
            state.stack = state.stack.parent;
            state.subMode = null;
            state.subState = null;
          }
        }
        if (stream.eatSpace()) return null;
        var style = state.tokenize(stream, state);
        state.startOfLine = false;
        if (style) state.last = style;
        return styleMap.hasOwnProperty(style) ? styleMap[style] : style;
      },

      blankLine: function(state) {
        if (state.subMode && state.subMode.blankLine) {
          return state.subMode.blankLine(state.subState);
        }
      },

      innerMode: function(state) {
        if (state.subMode) return {state: state.subState, mode: state.subMode};
        return {state: state, mode: mode};
      }

      //indent: function(state) {
      //  return state.indented;
      //}
    };
    return mode;
  }, "htmlmixed", "ruby");

  CodeMirror.defineMIME("text/x-slim", "slim");
  CodeMirror.defineMIME("application/x-slim", "slim");
});
lib/codemirror/mode/toml/toml.js000064400000005521147361034410012675 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("toml", function () {
  return {
    startState: function () {
      return {
        inString: false,
        stringType: "",
        lhs: true,
        inArray: 0
      };
    },
    token: function (stream, state) {
      //check for state changes
      if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) {
        state.stringType = stream.peek();
        stream.next(); // Skip quote
        state.inString = true; // Update state
      }
      if (stream.sol() && state.inArray === 0) {
        state.lhs = true;
      }
      //return state
      if (state.inString) {
        while (state.inString && !stream.eol()) {
          if (stream.peek() === state.stringType) {
            stream.next(); // Skip quote
            state.inString = false; // Clear flag
          } else if (stream.peek() === '\\') {
            stream.next();
            stream.next();
          } else {
            stream.match(/^.[^\\\"\']*/);
          }
        }
        return state.lhs ? "property string" : "string"; // Token style
      } else if (state.inArray && stream.peek() === ']') {
        stream.next();
        state.inArray--;
        return 'bracket';
      } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) {
        stream.next();//skip closing ]
        // array of objects has an extra open & close []
        if (stream.peek() === ']') stream.next();
        return "atom";
      } else if (stream.peek() === "#") {
        stream.skipToEnd();
        return "comment";
      } else if (stream.eatSpace()) {
        return null;
      } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) {
        return "property";
      } else if (state.lhs && stream.peek() === "=") {
        stream.next();
        state.lhs = false;
        return null;
      } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) {
        return 'atom'; //date
      } else if (!state.lhs && (stream.match('true') || stream.match('false'))) {
        return 'atom';
      } else if (!state.lhs && stream.peek() === '[') {
        state.inArray++;
        stream.next();
        return 'bracket';
      } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) {
        return 'number';
      } else if (!stream.eatSpace()) {
        stream.next();
      }
      return null;
    }
  };
});

CodeMirror.defineMIME('text/x-toml', 'toml');

});
lib/codemirror/mode/toml/index.html000064400000003460147361034410013361 0ustar00<!doctype html>

<title>CodeMirror: TOML Mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="toml.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">TOML Mode</a>
  </ul>
</div>

<article>
<h2>TOML Mode</h2>
<form><textarea id="code" name="code">
# This is a TOML document. Boom.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder &amp; CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # First class dates? Why not?

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

  # You can indent as you please. Tabs or spaces. TOML don't care.
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"
  
  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"
  
[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "toml"},
        lineNumbers: true
      });
    </script>
    <h3>The TOML Mode</h3>
      <p> Created by Forbes Lindesay.</p>
    <p><strong>MIME type defined:</strong> <code>text/x-toml</code>.</p>
  </article>
lib/codemirror/mode/coffeescript/coffeescript.js000064400000023234147361034410016100 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/**
 * Link to the project's GitHub page:
 * https://github.com/pickhardt/coffeescript-codemirror-mode
 */
(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("coffeescript", function(conf, parserConf) {
  var ERRORCLASS = "error";

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") + "))\\b");
  }

  var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/;
  var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/;
  var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;
  var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;

  var wordOperators = wordRegexp(["and", "or", "not",
                                  "is", "isnt", "in",
                                  "instanceof", "typeof"]);
  var indentKeywords = ["for", "while", "loop", "if", "unless", "else",
                        "switch", "try", "catch", "finally", "class"];
  var commonKeywords = ["break", "by", "continue", "debugger", "delete",
                        "do", "in", "of", "new", "return", "then",
                        "this", "@", "throw", "when", "until", "extends"];

  var keywords = wordRegexp(indentKeywords.concat(commonKeywords));

  indentKeywords = wordRegexp(indentKeywords);


  var stringPrefixes = /^('{3}|\"{3}|['\"])/;
  var regexPrefixes = /^(\/{3}|\/)/;
  var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"];
  var constants = wordRegexp(commonConstants);

  // Tokenizers
  function tokenBase(stream, state) {
    // Handle scope changes
    if (stream.sol()) {
      if (state.scope.align === null) state.scope.align = false;
      var scopeOffset = state.scope.offset;
      if (stream.eatSpace()) {
        var lineOffset = stream.indentation();
        if (lineOffset > scopeOffset && state.scope.type == "coffee") {
          return "indent";
        } else if (lineOffset < scopeOffset) {
          return "dedent";
        }
        return null;
      } else {
        if (scopeOffset > 0) {
          dedent(stream, state);
        }
      }
    }
    if (stream.eatSpace()) {
      return null;
    }

    var ch = stream.peek();

    // Handle docco title comment (single line)
    if (stream.match("####")) {
      stream.skipToEnd();
      return "comment";
    }

    // Handle multi line comments
    if (stream.match("###")) {
      state.tokenize = longComment;
      return state.tokenize(stream, state);
    }

    // Single line comment
    if (ch === "#") {
      stream.skipToEnd();
      return "comment";
    }

    // Handle number literals
    if (stream.match(/^-?[0-9\.]/, false)) {
      var floatLiteral = false;
      // Floats
      if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) {
        floatLiteral = true;
      }
      if (stream.match(/^-?\d+\.\d*/)) {
        floatLiteral = true;
      }
      if (stream.match(/^-?\.\d+/)) {
        floatLiteral = true;
      }

      if (floatLiteral) {
        // prevent from getting extra . on 1..
        if (stream.peek() == "."){
          stream.backUp(1);
        }
        return "number";
      }
      // Integers
      var intLiteral = false;
      // Hex
      if (stream.match(/^-?0x[0-9a-f]+/i)) {
        intLiteral = true;
      }
      // Decimal
      if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) {
        intLiteral = true;
      }
      // Zero by itself with no other piece of number.
      if (stream.match(/^-?0(?![\dx])/i)) {
        intLiteral = true;
      }
      if (intLiteral) {
        return "number";
      }
    }

    // Handle strings
    if (stream.match(stringPrefixes)) {
      state.tokenize = tokenFactory(stream.current(), false, "string");
      return state.tokenize(stream, state);
    }
    // Handle regex literals
    if (stream.match(regexPrefixes)) {
      if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division
        state.tokenize = tokenFactory(stream.current(), true, "string-2");
        return state.tokenize(stream, state);
      } else {
        stream.backUp(1);
      }
    }



    // Handle operators and delimiters
    if (stream.match(operators) || stream.match(wordOperators)) {
      return "operator";
    }
    if (stream.match(delimiters)) {
      return "punctuation";
    }

    if (stream.match(constants)) {
      return "atom";
    }

    if (stream.match(atProp) || state.prop && stream.match(identifiers)) {
      return "property";
    }

    if (stream.match(keywords)) {
      return "keyword";
    }

    if (stream.match(identifiers)) {
      return "variable";
    }

    // Handle non-detected items
    stream.next();
    return ERRORCLASS;
  }

  function tokenFactory(delimiter, singleline, outclass) {
    return function(stream, state) {
      while (!stream.eol()) {
        stream.eatWhile(/[^'"\/\\]/);
        if (stream.eat("\\")) {
          stream.next();
          if (singleline && stream.eol()) {
            return outclass;
          }
        } else if (stream.match(delimiter)) {
          state.tokenize = tokenBase;
          return outclass;
        } else {
          stream.eat(/['"\/]/);
        }
      }
      if (singleline) {
        if (parserConf.singleLineStringErrors) {
          outclass = ERRORCLASS;
        } else {
          state.tokenize = tokenBase;
        }
      }
      return outclass;
    };
  }

  function longComment(stream, state) {
    while (!stream.eol()) {
      stream.eatWhile(/[^#]/);
      if (stream.match("###")) {
        state.tokenize = tokenBase;
        break;
      }
      stream.eatWhile("#");
    }
    return "comment";
  }

  function indent(stream, state, type) {
    type = type || "coffee";
    var offset = 0, align = false, alignOffset = null;
    for (var scope = state.scope; scope; scope = scope.prev) {
      if (scope.type === "coffee" || scope.type == "}") {
        offset = scope.offset + conf.indentUnit;
        break;
      }
    }
    if (type !== "coffee") {
      align = null;
      alignOffset = stream.column() + stream.current().length;
    } else if (state.scope.align) {
      state.scope.align = false;
    }
    state.scope = {
      offset: offset,
      type: type,
      prev: state.scope,
      align: align,
      alignOffset: alignOffset
    };
  }

  function dedent(stream, state) {
    if (!state.scope.prev) return;
    if (state.scope.type === "coffee") {
      var _indent = stream.indentation();
      var matched = false;
      for (var scope = state.scope; scope; scope = scope.prev) {
        if (_indent === scope.offset) {
          matched = true;
          break;
        }
      }
      if (!matched) {
        return true;
      }
      while (state.scope.prev && state.scope.offset !== _indent) {
        state.scope = state.scope.prev;
      }
      return false;
    } else {
      state.scope = state.scope.prev;
      return false;
    }
  }

  function tokenLexer(stream, state) {
    var style = state.tokenize(stream, state);
    var current = stream.current();

    // Handle scope changes.
    if (current === "return") {
      state.dedent = true;
    }
    if (((current === "->" || current === "=>") && stream.eol())
        || style === "indent") {
      indent(stream, state);
    }
    var delimiter_index = "[({".indexOf(current);
    if (delimiter_index !== -1) {
      indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1));
    }
    if (indentKeywords.exec(current)){
      indent(stream, state);
    }
    if (current == "then"){
      dedent(stream, state);
    }


    if (style === "dedent") {
      if (dedent(stream, state)) {
        return ERRORCLASS;
      }
    }
    delimiter_index = "])}".indexOf(current);
    if (delimiter_index !== -1) {
      while (state.scope.type == "coffee" && state.scope.prev)
        state.scope = state.scope.prev;
      if (state.scope.type == current)
        state.scope = state.scope.prev;
    }
    if (state.dedent && stream.eol()) {
      if (state.scope.type == "coffee" && state.scope.prev)
        state.scope = state.scope.prev;
      state.dedent = false;
    }

    return style;
  }

  var external = {
    startState: function(basecolumn) {
      return {
        tokenize: tokenBase,
        scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false},
        prop: false,
        dedent: 0
      };
    },

    token: function(stream, state) {
      var fillAlign = state.scope.align === null && state.scope;
      if (fillAlign && stream.sol()) fillAlign.align = false;

      var style = tokenLexer(stream, state);
      if (style && style != "comment") {
        if (fillAlign) fillAlign.align = true;
        state.prop = style == "punctuation" && stream.current() == "."
      }

      return style;
    },

    indent: function(state, text) {
      if (state.tokenize != tokenBase) return 0;
      var scope = state.scope;
      var closer = text && "])}".indexOf(text.charAt(0)) > -1;
      if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev;
      var closes = closer && scope.type === text.charAt(0);
      if (scope.align)
        return scope.alignOffset - (closes ? 1 : 0);
      else
        return (closes ? scope.prev : scope).offset;
    },

    lineComment: "#",
    fold: "indent"
  };
  return external;
});

CodeMirror.defineMIME("text/x-coffeescript", "coffeescript");
CodeMirror.defineMIME("text/coffeescript", "coffeescript");

});
lib/codemirror/mode/coffeescript/index.html000064400000053602147361034410015065 0ustar00<!doctype html>

<title>CodeMirror: CoffeeScript mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="coffeescript.js"></script>
<style>.CodeMirror {border-top: 1px solid silver; border-bottom: 1px solid silver;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">CoffeeScript</a>
  </ul>
</div>

<article>
<h2>CoffeeScript mode</h2>
<form><textarea id="code" name="code">
# CoffeeScript mode for CodeMirror
# Copyright (c) 2011 Jeff Pickhardt, released under
# the MIT License.
#
# Modified from the Python CodeMirror mode, which also is 
# under the MIT License Copyright (c) 2010 Timothy Farrell.
#
# The following script, Underscore.coffee, is used to 
# demonstrate CoffeeScript mode for CodeMirror.
#
# To download CoffeeScript mode for CodeMirror, go to:
# https://github.com/pickhardt/coffeescript-codemirror-mode

# **Underscore.coffee
# (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.**
# Underscore is freely distributable under the terms of the
# [MIT license](http://en.wikipedia.org/wiki/MIT_License).
# Portions of Underscore are inspired by or borrowed from
# [Prototype.js](http://prototypejs.org/api), Oliver Steele's
# [Functional](http://osteele.com), and John Resig's
# [Micro-Templating](http://ejohn.org).
# For all details and documentation:
# http://documentcloud.github.com/underscore/


# Baseline setup
# --------------

# Establish the root object, `window` in the browser, or `global` on the server.
root = this


# Save the previous value of the `_` variable.
previousUnderscore = root._

### Multiline
    comment
###

# Establish the object that gets thrown to break out of a loop iteration.
# `StopIteration` is SOP on Mozilla.
breaker = if typeof(StopIteration) is 'undefined' then '__break__' else StopIteration


#### Docco style single line comment (title)


# Helper function to escape **RegExp** contents, because JS doesn't have one.
escapeRegExp = (string) -> string.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1')


# Save bytes in the minified (but not gzipped) version:
ArrayProto = Array.prototype
ObjProto = Object.prototype


# Create quick reference variables for speed access to core prototypes.
slice = ArrayProto.slice
unshift = ArrayProto.unshift
toString = ObjProto.toString
hasOwnProperty = ObjProto.hasOwnProperty
propertyIsEnumerable = ObjProto.propertyIsEnumerable


# All **ECMA5** native implementations we hope to use are declared here.
nativeForEach = ArrayProto.forEach
nativeMap = ArrayProto.map
nativeReduce = ArrayProto.reduce
nativeReduceRight = ArrayProto.reduceRight
nativeFilter = ArrayProto.filter
nativeEvery = ArrayProto.every
nativeSome = ArrayProto.some
nativeIndexOf = ArrayProto.indexOf
nativeLastIndexOf = ArrayProto.lastIndexOf
nativeIsArray = Array.isArray
nativeKeys = Object.keys


# Create a safe reference to the Underscore object for use below.
_ = (obj) -> new wrapper(obj)


# Export the Underscore object for **CommonJS**.
if typeof(exports) != 'undefined' then exports._ = _


# Export Underscore to global scope.
root._ = _


# Current version.
_.VERSION = '1.1.0'


# Collection Functions
# --------------------

# The cornerstone, an **each** implementation.
# Handles objects implementing **forEach**, arrays, and raw objects.
_.each = (obj, iterator, context) ->
  try
    if nativeForEach and obj.forEach is nativeForEach
      obj.forEach iterator, context
    else if _.isNumber obj.length
      iterator.call context, obj[i], i, obj for i in [0...obj.length]
    else
      iterator.call context, val, key, obj for own key, val of obj
  catch e
    throw e if e isnt breaker
  obj


# Return the results of applying the iterator to each element. Use JavaScript
# 1.6's version of **map**, if possible.
_.map = (obj, iterator, context) ->
  return obj.map(iterator, context) if nativeMap and obj.map is nativeMap
  results = []
  _.each obj, (value, index, list) ->
    results.push iterator.call context, value, index, list
  results


# **Reduce** builds up a single result from a list of values. Also known as
# **inject**, or **foldl**. Uses JavaScript 1.8's version of **reduce**, if possible.
_.reduce = (obj, iterator, memo, context) ->
  if nativeReduce and obj.reduce is nativeReduce
    iterator = _.bind iterator, context if context
    return obj.reduce iterator, memo
  _.each obj, (value, index, list) ->
    memo = iterator.call context, memo, value, index, list
  memo


# The right-associative version of **reduce**, also known as **foldr**. Uses
# JavaScript 1.8's version of **reduceRight**, if available.
_.reduceRight = (obj, iterator, memo, context) ->
  if nativeReduceRight and obj.reduceRight is nativeReduceRight
    iterator = _.bind iterator, context if context
    return obj.reduceRight iterator, memo
  reversed = _.clone(_.toArray(obj)).reverse()
  _.reduce reversed, iterator, memo, context


# Return the first value which passes a truth test.
_.detect = (obj, iterator, context) ->
  result = null
  _.each obj, (value, index, list) ->
    if iterator.call context, value, index, list
      result = value
      _.breakLoop()
  result


# Return all the elements that pass a truth test. Use JavaScript 1.6's
# **filter**, if it exists.
_.filter = (obj, iterator, context) ->
  return obj.filter iterator, context if nativeFilter and obj.filter is nativeFilter
  results = []
  _.each obj, (value, index, list) ->
    results.push value if iterator.call context, value, index, list
  results


# Return all the elements for which a truth test fails.
_.reject = (obj, iterator, context) ->
  results = []
  _.each obj, (value, index, list) ->
    results.push value if not iterator.call context, value, index, list
  results


# Determine whether all of the elements match a truth test. Delegate to
# JavaScript 1.6's **every**, if it is present.
_.every = (obj, iterator, context) ->
  iterator ||= _.identity
  return obj.every iterator, context if nativeEvery and obj.every is nativeEvery
  result = true
  _.each obj, (value, index, list) ->
    _.breakLoop() unless (result = result and iterator.call(context, value, index, list))
  result


# Determine if at least one element in the object matches a truth test. Use
# JavaScript 1.6's **some**, if it exists.
_.some = (obj, iterator, context) ->
  iterator ||= _.identity
  return obj.some iterator, context if nativeSome and obj.some is nativeSome
  result = false
  _.each obj, (value, index, list) ->
    _.breakLoop() if (result = iterator.call(context, value, index, list))
  result


# Determine if a given value is included in the array or object,
# based on `===`.
_.include = (obj, target) ->
  return _.indexOf(obj, target) isnt -1 if nativeIndexOf and obj.indexOf is nativeIndexOf
  return true for own key, val of obj when val is target
  false


# Invoke a method with arguments on every item in a collection.
_.invoke = (obj, method) ->
  args = _.rest arguments, 2
  (if method then val[method] else val).apply(val, args) for val in obj


# Convenience version of a common use case of **map**: fetching a property.
_.pluck = (obj, key) ->
  _.map(obj, (val) -> val[key])


# Return the maximum item or (item-based computation).
_.max = (obj, iterator, context) ->
  return Math.max.apply(Math, obj) if not iterator and _.isArray(obj)
  result = computed: -Infinity
  _.each obj, (value, index, list) ->
    computed = if iterator then iterator.call(context, value, index, list) else value
    computed >= result.computed and (result = {value: value, computed: computed})
  result.value


# Return the minimum element (or element-based computation).
_.min = (obj, iterator, context) ->
  return Math.min.apply(Math, obj) if not iterator and _.isArray(obj)
  result = computed: Infinity
  _.each obj, (value, index, list) ->
    computed = if iterator then iterator.call(context, value, index, list) else value
    computed < result.computed and (result = {value: value, computed: computed})
  result.value


# Sort the object's values by a criterion produced by an iterator.
_.sortBy = (obj, iterator, context) ->
  _.pluck(((_.map obj, (value, index, list) ->
    {value: value, criteria: iterator.call(context, value, index, list)}
  ).sort((left, right) ->
    a = left.criteria; b = right.criteria
    if a < b then -1 else if a > b then 1 else 0
  )), 'value')


# Use a comparator function to figure out at what index an object should
# be inserted so as to maintain order. Uses binary search.
_.sortedIndex = (array, obj, iterator) ->
  iterator ||= _.identity
  low = 0
  high = array.length
  while low < high
    mid = (low + high) >> 1
    if iterator(array[mid]) < iterator(obj) then low = mid + 1 else high = mid
  low


# Convert anything iterable into a real, live array.
_.toArray = (iterable) ->
  return [] if (!iterable)
  return iterable.toArray() if (iterable.toArray)
  return iterable if (_.isArray(iterable))
  return slice.call(iterable) if (_.isArguments(iterable))
  _.values(iterable)


# Return the number of elements in an object.
_.size = (obj) -> _.toArray(obj).length


# Array Functions
# ---------------

# Get the first element of an array. Passing `n` will return the first N
# values in the array. Aliased as **head**. The `guard` check allows it to work
# with **map**.
_.first = (array, n, guard) ->
  if n and not guard then slice.call(array, 0, n) else array[0]


# Returns everything but the first entry of the array. Aliased as **tail**.
# Especially useful on the arguments object. Passing an `index` will return
# the rest of the values in the array from that index onward. The `guard`
# check allows it to work with **map**.
_.rest = (array, index, guard) ->
  slice.call(array, if _.isUndefined(index) or guard then 1 else index)


# Get the last element of an array.
_.last = (array) -> array[array.length - 1]


# Trim out all falsy values from an array.
_.compact = (array) -> item for item in array when item


# Return a completely flattened version of an array.
_.flatten = (array) ->
  _.reduce array, (memo, value) ->
    return memo.concat(_.flatten(value)) if _.isArray value
    memo.push value
    memo
  , []


# Return a version of the array that does not contain the specified value(s).
_.without = (array) ->
  values = _.rest arguments
  val for val in _.toArray(array) when not _.include values, val


# Produce a duplicate-free version of the array. If the array has already
# been sorted, you have the option of using a faster algorithm.
_.uniq = (array, isSorted) ->
  memo = []
  for el, i in _.toArray array
    memo.push el if i is 0 || (if isSorted is true then _.last(memo) isnt el else not _.include(memo, el))
  memo


# Produce an array that contains every item shared between all the
# passed-in arrays.
_.intersect = (array) ->
  rest = _.rest arguments
  _.select _.uniq(array), (item) ->
    _.all rest, (other) ->
      _.indexOf(other, item) >= 0


# Zip together multiple lists into a single array -- elements that share
# an index go together.
_.zip = ->
  length = _.max _.pluck arguments, 'length'
  results = new Array length
  for i in [0...length]
    results[i] = _.pluck arguments, String i
  results


# If the browser doesn't supply us with **indexOf** (I'm looking at you, MSIE),
# we need this function. Return the position of the first occurrence of an
# item in an array, or -1 if the item is not included in the array.
_.indexOf = (array, item) ->
  return array.indexOf item if nativeIndexOf and array.indexOf is nativeIndexOf
  i = 0; l = array.length
  while l - i
    if array[i] is item then return i else i++
  -1


# Provide JavaScript 1.6's **lastIndexOf**, delegating to the native function,
# if possible.
_.lastIndexOf = (array, item) ->
  return array.lastIndexOf(item) if nativeLastIndexOf and array.lastIndexOf is nativeLastIndexOf
  i = array.length
  while i
    if array[i] is item then return i else i--
  -1


# Generate an integer Array containing an arithmetic progression. A port of
# [the native Python **range** function](http://docs.python.org/library/functions.html#range).
_.range = (start, stop, step) ->
  a = arguments
  solo = a.length <= 1
  i = start = if solo then 0 else a[0]
  stop = if solo then a[0] else a[1]
  step = a[2] or 1
  len = Math.ceil((stop - start) / step)
  return [] if len <= 0
  range = new Array len
  idx = 0
  loop
    return range if (if step > 0 then i - stop else stop - i) >= 0
    range[idx] = i
    idx++
    i+= step


# Function Functions
# ------------------

# Create a function bound to a given object (assigning `this`, and arguments,
# optionally). Binding with arguments is also known as **curry**.
_.bind = (func, obj) ->
  args = _.rest arguments, 2
  -> func.apply obj or root, args.concat arguments


# Bind all of an object's methods to that object. Useful for ensuring that
# all callbacks defined on an object belong to it.
_.bindAll = (obj) ->
  funcs = if arguments.length > 1 then _.rest(arguments) else _.functions(obj)
  _.each funcs, (f) -> obj[f] = _.bind obj[f], obj
  obj


# Delays a function for the given number of milliseconds, and then calls
# it with the arguments supplied.
_.delay = (func, wait) ->
  args = _.rest arguments, 2
  setTimeout((-> func.apply(func, args)), wait)


# Memoize an expensive function by storing its results.
_.memoize = (func, hasher) ->
  memo = {}
  hasher or= _.identity
  ->
    key = hasher.apply this, arguments
    return memo[key] if key of memo
    memo[key] = func.apply this, arguments


# Defers a function, scheduling it to run after the current call stack has
# cleared.
_.defer = (func) ->
  _.delay.apply _, [func, 1].concat _.rest arguments


# Returns the first function passed as an argument to the second,
# allowing you to adjust arguments, run code before and after, and
# conditionally execute the original function.
_.wrap = (func, wrapper) ->
  -> wrapper.apply wrapper, [func].concat arguments


# Returns a function that is the composition of a list of functions, each
# consuming the return value of the function that follows.
_.compose = ->
  funcs = arguments
  ->
    args = arguments
    for i in [funcs.length - 1..0] by -1
      args = [funcs[i].apply(this, args)]
    args[0]


# Object Functions
# ----------------

# Retrieve the names of an object's properties.
_.keys = nativeKeys or (obj) ->
  return _.range 0, obj.length if _.isArray(obj)
  key for key, val of obj


# Retrieve the values of an object's properties.
_.values = (obj) ->
  _.map obj, _.identity


# Return a sorted list of the function names available in Underscore.
_.functions = (obj) ->
  _.filter(_.keys(obj), (key) -> _.isFunction(obj[key])).sort()


# Extend a given object with all of the properties in a source object.
_.extend = (obj) ->
  for source in _.rest(arguments)
    obj[key] = val for key, val of source
  obj


# Create a (shallow-cloned) duplicate of an object.
_.clone = (obj) ->
  return obj.slice 0 if _.isArray obj
  _.extend {}, obj


# Invokes interceptor with the obj, and then returns obj.
# The primary purpose of this method is to "tap into" a method chain,
# in order to perform operations on intermediate results within
 the chain.
_.tap = (obj, interceptor) ->
  interceptor obj
  obj


# Perform a deep comparison to check if two objects are equal.
_.isEqual = (a, b) ->
  # Check object identity.
  return true if a is b
  # Different types?
  atype = typeof(a); btype = typeof(b)
  return false if atype isnt btype
  # Basic equality test (watch out for coercions).
  return true if `a == b`
  # One is falsy and the other truthy.
  return false if (!a and b) or (a and !b)
  # One of them implements an `isEqual()`?
  return a.isEqual(b) if a.isEqual
  # Check dates' integer values.
  return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b)
  # Both are NaN?
  return false if _.isNaN(a) and _.isNaN(b)
  # Compare regular expressions.
  if _.isRegExp(a) and _.isRegExp(b)
    return a.source is b.source and
           a.global is b.global and
           a.ignoreCase is b.ignoreCase and
           a.multiline is b.multiline
  # If a is not an object by this point, we can't handle it.
  return false if atype isnt 'object'
  # Check for different array lengths before comparing contents.
  return false if a.length and (a.length isnt b.length)
  # Nothing else worked, deep compare the contents.
  aKeys = _.keys(a); bKeys = _.keys(b)
  # Different object sizes?
  return false if aKeys.length isnt bKeys.length
  # Recursive comparison of contents.
  return false for key, val of a when !(key of b) or !_.isEqual(val, b[key])
  true


# Is a given array or object empty?
_.isEmpty = (obj) ->
  return obj.length is 0 if _.isArray(obj) or _.isString(obj)
  return false for own key of obj
  true


# Is a given value a DOM element?
_.isElement = (obj) -> obj and obj.nodeType is 1


# Is a given value an array?
_.isArray = nativeIsArray or (obj) -> !!(obj and obj.concat and obj.unshift and not obj.callee)


# Is a given variable an arguments object?
_.isArguments = (obj) -> obj and obj.callee


# Is the given value a function?
_.isFunction = (obj) -> !!(obj and obj.constructor and obj.call and obj.apply)


# Is the given value a string?
_.isString = (obj) -> !!(obj is '' or (obj and obj.charCodeAt and obj.substr))


# Is a given value a number?
_.isNumber = (obj) -> (obj is +obj) or toString.call(obj) is '[object Number]'


# Is a given value a boolean?
_.isBoolean = (obj) -> obj is true or obj is false


# Is a given value a Date?
_.isDate = (obj) -> !!(obj and obj.getTimezoneOffset and obj.setUTCFullYear)


# Is the given value a regular expression?
_.isRegExp = (obj) -> !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false))


# Is the given value NaN -- this one is interesting. `NaN != NaN`, and
# `isNaN(undefined) == true`, so we make sure it's a number first.
_.isNaN = (obj) -> _.isNumber(obj) and window.isNaN(obj)


# Is a given value equal to null?
_.isNull = (obj) -> obj is null


# Is a given variable undefined?
_.isUndefined = (obj) -> typeof obj is 'undefined'


# Utility Functions
# -----------------

# Run Underscore.js in noConflict mode, returning the `_` variable to its
# previous owner. Returns a reference to the Underscore object.
_.noConflict = ->
  root._ = previousUnderscore
  this


# Keep the identity function around for default iterators.
_.identity = (value) -> value


# Run a function `n` times.
_.times = (n, iterator, context) ->
  iterator.call context, i for i in [0...n]


# Break out of the middle of an iteration.
_.breakLoop = -> throw breaker


# Add your own custom functions to the Underscore object, ensuring that
# they're correctly added to the OOP wrapper as well.
_.mixin = (obj) ->
  for name in _.functions(obj)
    addToWrapper name, _[name] = obj[name]


# Generate a unique integer id (unique within the entire client session).
# Useful for temporary DOM ids.
idCounter = 0
_.uniqueId = (prefix) ->
  (prefix or '') + idCounter++


# By default, Underscore uses **ERB**-style template delimiters, change the
# following template settings to use alternative delimiters.
_.templateSettings = {
  start: '<%'
  end: '%>'
  interpolate: /<%=(.+?)%>/g
}


# JavaScript templating a-la **ERB**, pilfered from John Resig's
# *Secrets of the JavaScript Ninja*, page 83.
# Single-quote fix from Rick Strahl.
# With alterations for arbitrary delimiters, and to preserve whitespace.
_.template = (str, data) ->
  c = _.templateSettings
  endMatch = new RegExp("'(?=[^"+c.end.substr(0, 1)+"]*"+escapeRegExp(c.end)+")","g")
  fn = new Function 'obj',
    'var p=[],print=function(){p.push.apply(p,arguments);};' +
    'with(obj||{}){p.push(\'' +
    str.replace(/\r/g, '\\r')
       .replace(/\n/g, '\\n')
       .replace(/\t/g, '\\t')
       .replace(endMatch,"���")
       .split("'").join("\\'")
       .split("���").join("'")
       .replace(c.interpolate, "',$1,'")
       .split(c.start).join("');")
       .split(c.end).join("p.push('") +
       "');}return p.join('');"
  if data then fn(data) else fn


# Aliases
# -------

_.forEach = _.each
_.foldl = _.inject = _.reduce
_.foldr = _.reduceRight
_.select = _.filter
_.all = _.every
_.any = _.some
_.contains = _.include
_.head = _.first
_.tail = _.rest
_.methods = _.functions


# Setup the OOP Wrapper
# ---------------------

# If Underscore is called as a function, it returns a wrapped object that
# can be used OO-style. This wrapper holds altered versions of all the
# underscore functions. Wrapped objects may be chained.
wrapper = (obj) ->
  this._wrapped = obj
  this


# Helper function to continue chaining intermediate results.
result = (obj, chain) ->
  if chain then _(obj).chain() else obj


# A method to easily add functions to the OOP wrapper.
addToWrapper = (name, func) ->
  wrapper.prototype[name] = ->
    args = _.toArray arguments
    unshift.call args, this._wrapped
    result func.apply(_, args), this._chain


# Add all ofthe Underscore functions to the wrapper object.
_.mixin _


# Add all mutator Array functions to the wrapper.
_.each ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], (name) ->
  method = Array.prototype[name]
  wrapper.prototype[name] = ->
    method.apply(this._wrapped, arguments)
    result(this._wrapped, this._chain)


# Add all accessor Array functions to the wrapper.
_.each ['concat', 'join', 'slice'], (name) ->
  method = Array.prototype[name]
  wrapper.prototype[name] = ->
    result(method.apply(this._wrapped, arguments), this._chain)


# Start chaining a wrapped Underscore object.
wrapper::chain = ->
  this._chain = true
  this


# Extracts the result from a wrapped and chained object.
wrapper::value = -> this._wrapped
</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-coffeescript</code>.</p>

    <p>The CoffeeScript mode was written by Jeff Pickhardt.</p>

  </article>
lib/codemirror/mode/vue/vue.js000064400000004702147361034410012345 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function (mod) {
  "use strict";
  if (typeof exports === "object" && typeof module === "object") {// CommonJS
    mod(require("../../lib/codemirror"),
        require("../../addon/mode/overlay"),
        require("../xml/xml"),
        require("../javascript/javascript"),
        require("../coffeescript/coffeescript"),
        require("../css/css"),
        require("../sass/sass"),
        require("../stylus/stylus"),
        require("../pug/pug"),
        require("../handlebars/handlebars"));
  } else if (typeof define === "function" && define.amd) { // AMD
    define(["../../lib/codemirror",
            "../../addon/mode/overlay",
            "../xml/xml",
            "../javascript/javascript",
            "../coffeescript/coffeescript",
            "../css/css",
            "../sass/sass",
            "../stylus/stylus",
            "../pug/pug",
            "../handlebars/handlebars"], mod);
  } else { // Plain browser env
    mod(CodeMirror);
  }
})(function (CodeMirror) {
  var tagLanguages = {
    script: [
      ["lang", /coffee(script)?/, "coffeescript"],
      ["type", /^(?:text|application)\/(?:x-)?coffee(?:script)?$/, "coffeescript"]
    ],
    style: [
      ["lang", /^stylus$/i, "stylus"],
      ["lang", /^sass$/i, "sass"],
      ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"],
      ["type", /^text\/sass/i, "sass"]
    ],
    template: [
      ["lang", /^vue-template$/i, "vue"],
      ["lang", /^pug$/i, "pug"],
      ["lang", /^handlebars$/i, "handlebars"],
      ["type", /^(text\/)?(x-)?pug$/i, "pug"],
      ["type", /^text\/x-handlebars-template$/i, "handlebars"],
      [null, null, "vue-template"]
    ]
  };

  CodeMirror.defineMode("vue-template", function (config, parserConfig) {
    var mustacheOverlay = {
      token: function (stream) {
        if (stream.match(/^\{\{.*?\}\}/)) return "meta mustache";
        while (stream.next() && !stream.match("{{", false)) {}
        return null;
      }
    };
    return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mustacheOverlay);
  });

  CodeMirror.defineMode("vue", function (config) {
    return CodeMirror.getMode(config, {name: "htmlmixed", tags: tagLanguages});
  }, "htmlmixed", "xml", "javascript", "coffeescript", "css", "sass", "stylus", "pug", "handlebars");

  CodeMirror.defineMIME("script/x-vue", "vue");
});
lib/codemirror/mode/vue/index.html000064400000004020147361034410013176 0ustar00<!doctype html>

<title>CodeMirror: Vue.js mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/mode/overlay.js"></script>
<script src="../../addon/mode/simple.js"></script>
<script src="../../addon/selection/selection-pointer.js"></script>
<script src="../xml/xml.js"></script>
<script src="../javascript/javascript.js"></script>
<script src="../css/css.js"></script>
<script src="../coffeescript/coffeescript.js"></script>
<script src="../sass/sass.js"></script>
<script src="../pug/pug.js"></script>

<script src="../handlebars/handlebars.js"></script>
<script src="../htmlmixed/htmlmixed.js"></script>
<script src="vue.js"></script>
<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Vue.js mode</a>
  </ul>
</div>

<article>
<h2>Vue.js mode</h2>
<form><textarea id="code" name="code">
<template>
  <div class="sass">Im am a {{mustache-like}} template</div>
</template>

<script lang="coffee">
  module.exports =
    props: ['one', 'two', 'three']
</script>

<style lang="sass">
.sass
  font-size: 18px
</style>

</textarea></form>
    <script>
      // Define an extended mixed-mode that understands vbscript and
      // leaves mustache/handlebars embedded templates in html mode
      var mixedMode = {
        name: "vue"
      };
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: mixedMode,
        selectionPointer: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-vue</code></p>

  </article>
lib/codemirror/mode/clojure/clojure.js000064400000037205147361034410014061 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

/**
 * Author: Hans Engel
 * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun)
 */

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("clojure", function (options) {
    var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", CHARACTER = "string-2",
        ATOM = "atom", NUMBER = "number", BRACKET = "bracket", KEYWORD = "keyword", VAR = "variable";
    var INDENT_WORD_SKIP = options.indentUnit || 2;
    var NORMAL_INDENT_UNIT = options.indentUnit || 2;

    function makeKeywords(str) {
        var obj = {}, words = str.split(" ");
        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
        return obj;
    }

    var atoms = makeKeywords("true false nil");

    var keywords = makeKeywords(
      "defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest " +
      "slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn " +
      "do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync " +
      "doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars " +
      "binding gen-class gen-and-load-class gen-and-save-class handler-case handle");

    var builtins = makeKeywords(
        "* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* " +
        "*compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* " +
        "*math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* " +
        "*source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> " +
        "->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor " +
        "aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! " +
        "alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double " +
        "aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 " +
        "bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set " +
        "bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast " +
        "byte byte-array bytes case cat cast char char-array char-escape-string char-name-string char? chars chunk chunk-append " +
        "chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors " +
        "clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement completing concat cond condp " +
        "conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? " +
        "declare dedupe default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol " +
        "defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc " +
        "dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last " +
        "drop-while eduction empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info " +
        "extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword " +
        "find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? " +
        "fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? " +
        "gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash " +
        "hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? " +
        "int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep " +
        "keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file " +
        "load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array " +
        "make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods " +
        "min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty " +
        "not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias " +
        "ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all " +
        "partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers " +
        "primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str " +
        "prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues " +
        "quot rand rand-int rand-nth random-sample range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern " +
        "re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history " +
        "ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods " +
        "remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest " +
        "restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? " +
        "seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts " +
        "shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? " +
        "special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol " +
        "symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transduce " +
        "transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec " +
        "unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int " +
        "unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int "+
        "unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote " +
        "unquote-splicing update update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of " +
        "vector? volatile! volatile? vreset! vswap! when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context " +
        "with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap " +
        "*default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! " +
        "set-agent-send-off-executor! some-> some->>");

    var indentKeys = makeKeywords(
        // Built-ins
        "ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto " +
        "locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type " +
        "try catch " +

        // Binding forms
        "let letfn binding loop for doseq dotimes when-let if-let " +

        // Data structures
        "defstruct struct-map assoc " +

        // clojure.test
        "testing deftest " +

        // contrib
        "handler-case handle dotrace deftrace");

    var tests = {
        digit: /\d/,
        digit_or_colon: /[\d:]/,
        hex: /[0-9a-f]/i,
        sign: /[+-]/,
        exponent: /e/i,
        keyword_char: /[^\s\(\[\;\)\]]/,
        symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]/,
        block_indent: /^(?:def|with)[^\/]+$|\/(?:def|with)/
    };

    function stateStack(indent, type, prev) { // represents a state stack object
        this.indent = indent;
        this.type = type;
        this.prev = prev;
    }

    function pushStack(state, indent, type) {
        state.indentStack = new stateStack(indent, type, state.indentStack);
    }

    function popStack(state) {
        state.indentStack = state.indentStack.prev;
    }

    function isNumber(ch, stream){
        // hex
        if ( ch === '0' && stream.eat(/x/i) ) {
            stream.eatWhile(tests.hex);
            return true;
        }

        // leading sign
        if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) {
          stream.eat(tests.sign);
          ch = stream.next();
        }

        if ( tests.digit.test(ch) ) {
            stream.eat(ch);
            stream.eatWhile(tests.digit);

            if ( '.' == stream.peek() ) {
                stream.eat('.');
                stream.eatWhile(tests.digit);
            } else if ('/' == stream.peek() ) {
                stream.eat('/');
                stream.eatWhile(tests.digit);
            }

            if ( stream.eat(tests.exponent) ) {
                stream.eat(tests.sign);
                stream.eatWhile(tests.digit);
            }

            return true;
        }

        return false;
    }

    // Eat character that starts after backslash \
    function eatCharacter(stream) {
        var first = stream.next();
        // Read special literals: backspace, newline, space, return.
        // Just read all lowercase letters.
        if (first && first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) {
            return;
        }
        // Read unicode character: \u1000 \uA0a1
        if (first === "u") {
            stream.match(/[0-9a-z]{4}/i, true);
        }
    }

    return {
        startState: function () {
            return {
                indentStack: null,
                indentation: 0,
                mode: false
            };
        },

        token: function (stream, state) {
            if (state.indentStack == null && stream.sol()) {
                // update indentation, but only if indentStack is empty
                state.indentation = stream.indentation();
            }

            // skip spaces
            if (state.mode != "string" && stream.eatSpace()) {
                return null;
            }
            var returnType = null;

            switch(state.mode){
                case "string": // multi-line string parsing mode
                    var next, escaped = false;
                    while ((next = stream.next()) != null) {
                        if (next == "\"" && !escaped) {

                            state.mode = false;
                            break;
                        }
                        escaped = !escaped && next == "\\";
                    }
                    returnType = STRING; // continue on in string mode
                    break;
                default: // default parsing mode
                    var ch = stream.next();

                    if (ch == "\"") {
                        state.mode = "string";
                        returnType = STRING;
                    } else if (ch == "\\") {
                        eatCharacter(stream);
                        returnType = CHARACTER;
                    } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) {
                        returnType = ATOM;
                    } else if (ch == ";") { // comment
                        stream.skipToEnd(); // rest of the line is a comment
                        returnType = COMMENT;
                    } else if (isNumber(ch,stream)){
                        returnType = NUMBER;
                    } else if (ch == "(" || ch == "[" || ch == "{" ) {
                        var keyWord = '', indentTemp = stream.column(), letter;
                        /**
                        Either
                        (indent-word ..
                        (non-indent-word ..
                        (;something else, bracket, etc.
                        */

                        if (ch == "(") while ((letter = stream.eat(tests.keyword_char)) != null) {
                            keyWord += letter;
                        }

                        if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) ||
                                                   tests.block_indent.test(keyWord))) { // indent-word
                            pushStack(state, indentTemp + INDENT_WORD_SKIP, ch);
                        } else { // non-indent word
                            // we continue eating the spaces
                            stream.eatSpace();
                            if (stream.eol() || stream.peek() == ";") {
                                // nothing significant after
                                // we restart indentation the user defined spaces after
                                pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch);
                            } else {
                                pushStack(state, indentTemp + stream.current().length, ch); // else we match
                            }
                        }
                        stream.backUp(stream.current().length - 1); // undo all the eating

                        returnType = BRACKET;
                    } else if (ch == ")" || ch == "]" || ch == "}") {
                        returnType = BRACKET;
                        if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : (ch == "]" ? "[" :"{"))) {
                            popStack(state);
                        }
                    } else if ( ch == ":" ) {
                        stream.eatWhile(tests.symbol);
                        return ATOM;
                    } else {
                        stream.eatWhile(tests.symbol);

                        if (keywords && keywords.propertyIsEnumerable(stream.current())) {
                            returnType = KEYWORD;
                        } else if (builtins && builtins.propertyIsEnumerable(stream.current())) {
                            returnType = BUILTIN;
                        } else if (atoms && atoms.propertyIsEnumerable(stream.current())) {
                            returnType = ATOM;
                        } else {
                          returnType = VAR;
                        }
                    }
            }

            return returnType;
        },

        indent: function (state) {
            if (state.indentStack == null) return state.indentation;
            return state.indentStack.indent;
        },

        closeBrackets: {pairs: "()[]{}\"\""},
        lineComment: ";;"
    };
});

CodeMirror.defineMIME("text/x-clojure", "clojure");
CodeMirror.defineMIME("text/x-clojurescript", "clojure");
CodeMirror.defineMIME("application/edn", "clojure");

});
lib/codemirror/mode/clojure/index.html000064400000004766147361034410014063 0ustar00<!doctype html>

<title>CodeMirror: Clojure mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="clojure.js"></script>
<style>.CodeMirror {background: #f8f8f8;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Clojure</a>
  </ul>
</div>

<article>
<h2>Clojure mode</h2>
<form><textarea id="code" name="code">
; Conway's Game of Life, based on the work of:
;; Laurent Petit https://gist.github.com/1200343
;; Christophe Grand http://clj-me.cgrand.net/2011/08/19/conways-game-of-life

(ns ^{:doc "Conway's Game of Life."}
 game-of-life)

;; Core game of life's algorithm functions

(defn neighbours
  "Given a cell's coordinates, returns the coordinates of its neighbours."
  [[x y]]
  (for [dx [-1 0 1] dy (if (zero? dx) [-1 1] [-1 0 1])]
    [(+ dx x) (+ dy y)]))

(defn step
  "Given a set of living cells, computes the new set of living cells."
  [cells]
  (set (for [[cell n] (frequencies (mapcat neighbours cells))
             :when (or (= n 3) (and (= n 2) (cells cell)))]
         cell)))

;; Utility methods for displaying game on a text terminal

(defn print-board
  "Prints a board on *out*, representing a step in the game."
  [board w h]
  (doseq [x (range (inc w)) y (range (inc h))]
    (if (= y 0) (print "\n"))
    (print (if (board [x y]) "[X]" " . "))))

(defn display-grids
  "Prints a squence of boards on *out*, representing several steps."
  [grids w h]
  (doseq [board grids]
    (print-board board w h)
    (print "\n")))

;; Launches an example board

(def
  ^{:doc "board represents the initial set of living cells"}
   board #{[2 1] [2 2] [2 3]})

(display-grids (take 3 (iterate step board)) 5 5)

;; Let's play with characters
(println \1 \a \# \\
         \" \( \newline
         \} \" \space
         \tab \return \backspace
         \u1000 \uAaAa \u9F9F)

;; Let's play with numbers
(+ 1 -1 1/2 -1/2 -0.5 0.5)

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-clojure</code>.</p>

  </article>
lib/codemirror/mode/protobuf/protobuf.js000064400000004101147361034410014440 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") + "))\\b", "i");
  };

  var keywordArray = [
    "package", "message", "import", "syntax",
    "required", "optional", "repeated", "reserved", "default", "extensions", "packed",
    "bool", "bytes", "double", "enum", "float", "string",
    "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64"
  ];
  var keywords = wordRegexp(keywordArray);

  CodeMirror.registerHelper("hintWords", "protobuf", keywordArray);

  var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*");

  function tokenBase(stream) {
    // whitespaces
    if (stream.eatSpace()) return null;

    // Handle one line Comments
    if (stream.match("//")) {
      stream.skipToEnd();
      return "comment";
    }

    // Handle Number Literals
    if (stream.match(/^[0-9\.+-]/, false)) {
      if (stream.match(/^[+-]?0x[0-9a-fA-F]+/))
        return "number";
      if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/))
        return "number";
      if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))
        return "number";
    }

    // Handle Strings
    if (stream.match(/^"([^"]|(""))*"/)) { return "string"; }
    if (stream.match(/^'([^']|(''))*'/)) { return "string"; }

    // Handle words
    if (stream.match(keywords)) { return "keyword"; }
    if (stream.match(identifiers)) { return "variable"; } ;

    // Handle non-detected items
    stream.next();
    return null;
  };

  CodeMirror.defineMode("protobuf", function() {
    return {token: tokenBase};
  });

  CodeMirror.defineMIME("text/x-protobuf", "protobuf");
});
lib/codemirror/mode/protobuf/index.html000064400000003220147361034410014240 0ustar00<!doctype html>

<title>CodeMirror: ProtoBuf mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="protobuf.js"></script>
<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">ProtoBuf</a>
  </ul>
</div>

<article>
<h2>ProtoBuf mode</h2>
<form><textarea id="code" name="code">
package addressbook;

message Address {
   required string street = 1;
   required string postCode = 2;
}

message PhoneNumber {
   required string number = 1;
}

message Person {
   optional int32 id = 1;
   required string name = 2;
   required string surname = 3;
   optional Address address = 4;
   repeated PhoneNumber phoneNumbers = 5;
   optional uint32 age = 6;
   repeated uint32 favouriteNumbers = 7;
   optional string license = 8;
   enum Gender {
      MALE = 0;
      FEMALE = 1;
   }
   optional Gender gender = 9;
   optional fixed64 lastUpdate = 10;
   required bool deleted = 11 [default = false];
}

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-protobuf</code>.</p>

  </article>
lib/codemirror/mode/crystal/crystal.js000064400000026112147361034410014110 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("crystal", function(config) {
    function wordRegExp(words, end) {
      return new RegExp((end ? "" : "^") + "(?:" + words.join("|") + ")" + (end ? "$" : "\\b"));
    }

    function chain(tokenize, stream, state) {
      state.tokenize.push(tokenize);
      return tokenize(stream, state);
    }

    var operators = /^(?:[-+/%|&^]|\*\*?|[<>]{2})/;
    var conditionalOperators = /^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/;
    var indexingOperators = /^(?:\[\][?=]?)/;
    var anotherOperators = /^(?:\.(?:\.{2})?|->|[?:])/;
    var idents = /^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/;
    var types = /^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/;
    var keywords = wordRegExp([
      "abstract", "alias", "as", "asm", "begin", "break", "case", "class", "def", "do",
      "else", "elsif", "end", "ensure", "enum", "extend", "for", "fun", "if", "ifdef",
      "include", "instance_sizeof", "lib", "macro", "module", "next", "of", "out", "pointerof",
      "private", "protected", "rescue", "return", "require", "sizeof", "struct",
      "super", "then", "type", "typeof", "union", "unless", "until", "when", "while", "with",
      "yield", "__DIR__", "__FILE__", "__LINE__"
    ]);
    var atomWords = wordRegExp(["true", "false", "nil", "self"]);
    var indentKeywordsArray = [
      "def", "fun", "macro",
      "class", "module", "struct", "lib", "enum", "union",
      "if", "unless", "case", "while", "until", "begin", "then",
      "do",
      "for", "ifdef"
    ];
    var indentKeywords = wordRegExp(indentKeywordsArray);
    var dedentKeywordsArray = [
      "end",
      "else", "elsif",
      "rescue", "ensure"
    ];
    var dedentKeywords = wordRegExp(dedentKeywordsArray);
    var dedentPunctualsArray = ["\\)", "\\}", "\\]"];
    var dedentPunctuals = new RegExp("^(?:" + dedentPunctualsArray.join("|") + ")$");
    var nextTokenizer = {
      "def": tokenFollowIdent, "fun": tokenFollowIdent, "macro": tokenMacroDef,
      "class": tokenFollowType, "module": tokenFollowType, "struct": tokenFollowType,
      "lib": tokenFollowType, "enum": tokenFollowType, "union": tokenFollowType
    };
    var matching = {"[": "]", "{": "}", "(": ")", "<": ">"};

    function tokenBase(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      // Macros
      if (state.lastToken != "\\" && stream.match("{%", false)) {
        return chain(tokenMacro("%", "%"), stream, state);
      }

      if (state.lastToken != "\\" && stream.match("{{", false)) {
        return chain(tokenMacro("{", "}"), stream, state);
      }

      // Comments
      if (stream.peek() == "#") {
        stream.skipToEnd();
        return "comment";
      }

      // Variables and keywords
      var matched;
      if (stream.match(idents)) {
        stream.eat(/[?!]/);

        matched = stream.current();
        if (stream.eat(":")) {
          return "atom";
        } else if (state.lastToken == ".") {
          return "property";
        } else if (keywords.test(matched)) {
          if (state.lastToken != "abstract" && indentKeywords.test(matched)) {
            if (!(matched == "fun" && state.blocks.indexOf("lib") >= 0)) {
              state.blocks.push(matched);
              state.currentIndent += 1;
            }
          } else if (dedentKeywords.test(matched)) {
            state.blocks.pop();
            state.currentIndent -= 1;
          }

          if (nextTokenizer.hasOwnProperty(matched)) {
            state.tokenize.push(nextTokenizer[matched]);
          }

          return "keyword";
        } else if (atomWords.test(matched)) {
          return "atom";
        }

        return "variable";
      }

      // Class variables and instance variables
      // or attributes
      if (stream.eat("@")) {
        if (stream.peek() == "[") {
          return chain(tokenNest("[", "]", "meta"), stream, state);
        }

        stream.eat("@");
        stream.match(idents) || stream.match(types);
        return "variable-2";
      }

      // Global variables
      if (stream.eat("$")) {
        stream.eat(/[0-9]+|\?/) || stream.match(idents) || stream.match(types);
        return "variable-3";
      }

      // Constants and types
      if (stream.match(types)) {
        return "tag";
      }

      // Symbols or ':' operator
      if (stream.eat(":")) {
        if (stream.eat("\"")) {
          return chain(tokenQuote("\"", "atom", false), stream, state);
        } else if (stream.match(idents) || stream.match(types) ||
                   stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators)) {
          return "atom";
        }
        stream.eat(":");
        return "operator";
      }

      // Strings
      if (stream.eat("\"")) {
        return chain(tokenQuote("\"", "string", true), stream, state);
      }

      // Strings or regexps or macro variables or '%' operator
      if (stream.peek() == "%") {
        var style = "string";
        var embed = true;
        var delim;

        if (stream.match("%r")) {
          // Regexps
          style = "string-2";
          delim = stream.next();
        } else if (stream.match("%w")) {
          embed = false;
          delim = stream.next();
        } else {
          if(delim = stream.match(/^%([^\w\s=])/)) {
            delim = delim[1];
          } else if (stream.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)) {
            // Macro variables
            return "meta";
          } else {
            // '%' operator
            return "operator";
          }
        }

        if (matching.hasOwnProperty(delim)) {
          delim = matching[delim];
        }
        return chain(tokenQuote(delim, style, embed), stream, state);
      }

      // Characters
      if (stream.eat("'")) {
        stream.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/);
        stream.eat("'");
        return "atom";
      }

      // Numbers
      if (stream.eat("0")) {
        if (stream.eat("x")) {
          stream.match(/^[0-9a-fA-F]+/);
        } else if (stream.eat("o")) {
          stream.match(/^[0-7]+/);
        } else if (stream.eat("b")) {
          stream.match(/^[01]+/);
        }
        return "number";
      }

      if (stream.eat(/\d/)) {
        stream.match(/^\d*(?:\.\d+)?(?:[eE][+-]?\d+)?/);
        return "number";
      }

      // Operators
      if (stream.match(operators)) {
        stream.eat("="); // Operators can follow assign symbol.
        return "operator";
      }

      if (stream.match(conditionalOperators) || stream.match(anotherOperators)) {
        return "operator";
      }

      // Parens and braces
      if (matched = stream.match(/[({[]/, false)) {
        matched = matched[0];
        return chain(tokenNest(matched, matching[matched], null), stream, state);
      }

      // Escapes
      if (stream.eat("\\")) {
        stream.next();
        return "meta";
      }

      stream.next();
      return null;
    }

    function tokenNest(begin, end, style, started) {
      return function (stream, state) {
        if (!started && stream.match(begin)) {
          state.tokenize[state.tokenize.length - 1] = tokenNest(begin, end, style, true);
          state.currentIndent += 1;
          return style;
        }

        var nextStyle = tokenBase(stream, state);
        if (stream.current() === end) {
          state.tokenize.pop();
          state.currentIndent -= 1;
          nextStyle = style;
        }

        return nextStyle;
      };
    }

    function tokenMacro(begin, end, started) {
      return function (stream, state) {
        if (!started && stream.match("{" + begin)) {
          state.currentIndent += 1;
          state.tokenize[state.tokenize.length - 1] = tokenMacro(begin, end, true);
          return "meta";
        }

        if (stream.match(end + "}")) {
          state.currentIndent -= 1;
          state.tokenize.pop();
          return "meta";
        }

        return tokenBase(stream, state);
      };
    }

    function tokenMacroDef(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      var matched;
      if (matched = stream.match(idents)) {
        if (matched == "def") {
          return "keyword";
        }
        stream.eat(/[?!]/);
      }

      state.tokenize.pop();
      return "def";
    }

    function tokenFollowIdent(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      if (stream.match(idents)) {
        stream.eat(/[!?]/);
      } else {
        stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators);
      }
      state.tokenize.pop();
      return "def";
    }

    function tokenFollowType(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      stream.match(types);
      state.tokenize.pop();
      return "def";
    }

    function tokenQuote(end, style, embed) {
      return function (stream, state) {
        var escaped = false;

        while (stream.peek()) {
          if (!escaped) {
            if (stream.match("{%", false)) {
              state.tokenize.push(tokenMacro("%", "%"));
              return style;
            }

            if (stream.match("{{", false)) {
              state.tokenize.push(tokenMacro("{", "}"));
              return style;
            }

            if (embed && stream.match("#{", false)) {
              state.tokenize.push(tokenNest("#{", "}", "meta"));
              return style;
            }

            var ch = stream.next();

            if (ch == end) {
              state.tokenize.pop();
              return style;
            }

            escaped = ch == "\\";
          } else {
            stream.next();
            escaped = false;
          }
        }

        return style;
      };
    }

    return {
      startState: function () {
        return {
          tokenize: [tokenBase],
          currentIndent: 0,
          lastToken: null,
          blocks: []
        };
      },

      token: function (stream, state) {
        var style = state.tokenize[state.tokenize.length - 1](stream, state);
        var token = stream.current();

        if (style && style != "comment") {
          state.lastToken = token;
        }

        return style;
      },

      indent: function (state, textAfter) {
        textAfter = textAfter.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g, "");

        if (dedentKeywords.test(textAfter) || dedentPunctuals.test(textAfter)) {
          return config.indentUnit * (state.currentIndent - 1);
        }

        return config.indentUnit * state.currentIndent;
      },

      fold: "indent",
      electricInput: wordRegExp(dedentPunctualsArray.concat(dedentKeywordsArray), true),
      lineComment: '#'
    };
  });

  CodeMirror.defineMIME("text/x-crystal", "crystal");
});
lib/codemirror/mode/crystal/index.html000064400000005147147361034410014073 0ustar00<!doctype html>

<title>CodeMirror: Crystal mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="crystal.js"></script>
<style>
  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
  .cm-s-default span.cm-arrow { color: red; }
</style>

<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Crystal</a>
  </ul>
</div>

<article>
<h2>Crystal mode</h2>
<form><textarea id="code" name="code">
# Features of Crystal
# - Ruby-inspired syntax.
# - Statically type-checked but without having to specify the type of variables or method arguments.
# - Be able to call C code by writing bindings to it in Crystal.
# - Have compile-time evaluation and generation of code, to avoid boilerplate code.
# - Compile to efficient native code.

# A very basic HTTP server
require "http/server"

server = HTTP::Server.new(8080) do |request|
  HTTP::Response.ok "text/plain", "Hello world, got #{request.path}!"
end

puts "Listening on http://0.0.0.0:8080"
server.listen

module Foo
  def initialize(@foo); end

  abstract def abstract_method : String

  @[AlwaysInline]
  def with_foofoo
    with Foo.new(self) yield
  end

  struct Foo
    def initialize(@foo); end

    def hello_world
      @foo.abstract_method
    end
  end
end

class Bar
  include Foo

  @@foobar = 12345

  def initialize(@bar)
    super(@bar.not_nil! + 100)
  end

  macro alias_method(name, method)
    def {{ name }}(*args)
      {{ method }}(*args)
    end
  end

  def a_method
    "Hello, World"
  end

  alias_method abstract_method, a_method

  macro def show_instance_vars : Nil
    {% for var in @type.instance_vars %}
      puts "@{{ var }} = #{ @{{ var }} }"
    {% end %}
    nil
  end
end

class Baz &lt; Bar; end

lib LibC
  fun c_puts = "puts"(str : Char*) : Int
end

$baz = Baz.new(100)
$baz.show_instance_vars
$baz.with_foofoo do
  LibC.c_puts hello_world
end
</textarea></form>
<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    mode: "text/x-crystal",
    matchBrackets: true,
    indentUnit: 2
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-crystal</code>.</p>
</article>
lib/codemirror/mode/dart/index.html000064400000003133147361034410013335 0ustar00<!doctype html>

<title>CodeMirror: Dart mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">
<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../clike/clike.js"></script>
<script src="dart.js"></script>
<style>.CodeMirror {border: 1px solid #dee;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Dart</a>
  </ul>
</div>

<article>
<h2>Dart mode</h2>
<form>
<textarea id="code" name="code">
import 'dart:math' show Random;

void main() {
  print(new Die(n: 12).roll());
}

// Define a class.
class Die {
  // Define a class variable.
  static Random shaker = new Random();

  // Define instance variables.
  int sides, value;

  // Define a method using shorthand syntax.
  String toString() => '$value';

  // Define a constructor.
  Die({int n: 6}) {
    if (4 <= n && n <= 20) {
      sides = n;
    } else {
      // Support for errors and exceptions.
      throw new ArgumentError(/* */);
    }
  }

  // Define an instance method.
  int roll() {
    return value = shaker.nextInt(sides) + 1;
  }
}
</textarea>
</form>

<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    mode: "application/dart"
  });
</script>

</article>
lib/codemirror/mode/dart/dart.js000064400000011772147361034410012640 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"), require("../clike/clike"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror", "../clike/clike"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var keywords = ("this super static final const abstract class extends external factory " +
    "implements get native operator set typedef with enum throw rethrow " +
    "assert break case continue default in return new deferred async await " +
    "try catch finally do else for if switch while import library export " +
    "part of show hide is as").split(" ");
  var blockKeywords = "try catch finally do else for if switch while".split(" ");
  var atoms = "true false null".split(" ");
  var builtins = "void bool num int double dynamic var String".split(" ");

  function set(words) {
    var obj = {};
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  function pushInterpolationStack(state) {
    (state.interpolationStack || (state.interpolationStack = [])).push(state.tokenize);
  }

  function popInterpolationStack(state) {
    return (state.interpolationStack || (state.interpolationStack = [])).pop();
  }

  function sizeInterpolationStack(state) {
    return state.interpolationStack ? state.interpolationStack.length : 0;
  }

  CodeMirror.defineMIME("application/dart", {
    name: "clike",
    keywords: set(keywords),
    blockKeywords: set(blockKeywords),
    builtin: set(builtins),
    atoms: set(atoms),
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_\.]/);
        return "meta";
      },

      // custom string handling to deal with triple-quoted strings and string interpolation
      "'": function(stream, state) {
        return tokenString("'", stream, state, false);
      },
      "\"": function(stream, state) {
        return tokenString("\"", stream, state, false);
      },
      "r": function(stream, state) {
        var peek = stream.peek();
        if (peek == "'" || peek == "\"") {
          return tokenString(stream.next(), stream, state, true);
        }
        return false;
      },

      "}": function(_stream, state) {
        // "}" is end of interpolation, if interpolation stack is non-empty
        if (sizeInterpolationStack(state) > 0) {
          state.tokenize = popInterpolationStack(state);
          return null;
        }
        return false;
      },

      "/": function(stream, state) {
        if (!stream.eat("*")) return false
        state.tokenize = tokenNestedComment(1)
        return state.tokenize(stream, state)
      }
    }
  });

  function tokenString(quote, stream, state, raw) {
    var tripleQuoted = false;
    if (stream.eat(quote)) {
      if (stream.eat(quote)) tripleQuoted = true;
      else return "string"; //empty string
    }
    function tokenStringHelper(stream, state) {
      var escaped = false;
      while (!stream.eol()) {
        if (!raw && !escaped && stream.peek() == "$") {
          pushInterpolationStack(state);
          state.tokenize = tokenInterpolation;
          return "string";
        }
        var next = stream.next();
        if (next == quote && !escaped && (!tripleQuoted || stream.match(quote + quote))) {
          state.tokenize = null;
          break;
        }
        escaped = !raw && !escaped && next == "\\";
      }
      return "string";
    }
    state.tokenize = tokenStringHelper;
    return tokenStringHelper(stream, state);
  }

  function tokenInterpolation(stream, state) {
    stream.eat("$");
    if (stream.eat("{")) {
      // let clike handle the content of ${...},
      // we take over again when "}" appears (see hooks).
      state.tokenize = null;
    } else {
      state.tokenize = tokenInterpolationIdentifier;
    }
    return null;
  }

  function tokenInterpolationIdentifier(stream, state) {
    stream.eatWhile(/[\w_]/);
    state.tokenize = popInterpolationStack(state);
    return "variable";
  }

  function tokenNestedComment(depth) {
    return function (stream, state) {
      var ch
      while (ch = stream.next()) {
        if (ch == "*" && stream.eat("/")) {
          if (depth == 1) {
            state.tokenize = null
            break
          } else {
            state.tokenize = tokenNestedComment(depth - 1)
            return state.tokenize(stream, state)
          }
        } else if (ch == "/" && stream.eat("*")) {
          state.tokenize = tokenNestedComment(depth + 1)
          return state.tokenize(stream, state)
        }
      }
      return "comment"
    }
  }

  CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins));

  // This is needed to make loading through meta.js work.
  CodeMirror.defineMode("dart", function(conf) {
    return CodeMirror.getMode(conf, "application/dart");
  }, "clike");
});
lib/codemirror/mode/asn.1/index.html000064400000004256147361034410013332 0ustar00<!doctype html>

<title>CodeMirror: ASN.1 mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="asn.1.js"></script>
<style type="text/css">
    .CodeMirror {
        border-top: 1px solid black;
        border-bottom: 1px solid black;
    }
</style>
<div id=nav>
    <a href="http://codemirror.net"><h1>CodeMirror</h1>
        <img id=logo src="../../doc/logo.png">
    </a>

    <ul>
        <li><a href="../../index.html">Home</a>
        <li><a href="../../doc/manual.html">Manual</a>
        <li><a href="https://github.com/codemirror/codemirror">Code</a>
    </ul>
    <ul>
        <li><a href="../index.html">Language modes</a>
        <li><a class=active href="http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One">ASN.1</a>
    </ul>
</div>
<article>
    <h2>ASN.1 example</h2>
    <div>
        <textarea id="ttcn-asn-code">
 --
 -- Sample ASN.1 Code
 --
 MyModule DEFINITIONS ::=
 BEGIN

 MyTypes ::= SEQUENCE {
     myObjectId   OBJECT IDENTIFIER,
     mySeqOf      SEQUENCE OF MyInt,
     myBitString  BIT STRING {
                         muxToken(0),
                         modemToken(1)
                  }
 }

 MyInt ::= INTEGER (0..65535)

 END
        </textarea>
    </div>

    <script>
        var ttcnEditor = CodeMirror.fromTextArea(document.getElementById("ttcn-asn-code"), {
            lineNumbers: true,
            matchBrackets: true,
            mode: "text/x-ttcn-asn"
        });
        ttcnEditor.setSize(400, 400);
        var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;
        CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete";
    </script>
    <br/>
    <p><strong>Language:</strong> Abstract Syntax Notation One
        (<a href="http://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx">ASN.1</a>)
    </p>
    <p><strong>MIME types defined:</strong> <code>text/x-ttcn-asn</code></p>

    <br/>
    <p>The development of this mode has been sponsored by <a href="http://www.ericsson.com/">Ericsson
    </a>.</p>
    <p>Coded by Asmelash Tsegay Gebretsadkan </p>
</article>

lib/codemirror/mode/asn.1/asn.1.js000064400000017067147361034410012617 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("asn.1", function(config, parserConfig) {
    var indentUnit = config.indentUnit,
        keywords = parserConfig.keywords || {},
        cmipVerbs = parserConfig.cmipVerbs || {},
        compareTypes = parserConfig.compareTypes || {},
        status = parserConfig.status || {},
        tags = parserConfig.tags || {},
        storage = parserConfig.storage || {},
        modifier = parserConfig.modifier || {},
        accessTypes = parserConfig.accessTypes|| {},
        multiLineStrings = parserConfig.multiLineStrings,
        indentStatements = parserConfig.indentStatements !== false;
    var isOperatorChar = /[\|\^]/;
    var curPunc;

    function tokenBase(stream, state) {
      var ch = stream.next();
      if (ch == '"' || ch == "'") {
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      if (/[\[\]\(\){}:=,;]/.test(ch)) {
        curPunc = ch;
        return "punctuation";
      }
      if (ch == "-"){
        if (stream.eat("-")) {
          stream.skipToEnd();
          return "comment";
        }
      }
      if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (isOperatorChar.test(ch)) {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }

      stream.eatWhile(/[\w\-]/);
      var cur = stream.current();
      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      if (cmipVerbs.propertyIsEnumerable(cur)) return "variable cmipVerbs";
      if (compareTypes.propertyIsEnumerable(cur)) return "atom compareTypes";
      if (status.propertyIsEnumerable(cur)) return "comment status";
      if (tags.propertyIsEnumerable(cur)) return "variable-3 tags";
      if (storage.propertyIsEnumerable(cur)) return "builtin storage";
      if (modifier.propertyIsEnumerable(cur)) return "string-2 modifier";
      if (accessTypes.propertyIsEnumerable(cur)) return "atom accessTypes";

      return "variable";
    }

    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, next, end = false;
        while ((next = stream.next()) != null) {
          if (next == quote && !escaped){
            var afterNext = stream.peek();
            //look if the character if the quote is like the B in '10100010'B
            if (afterNext){
              afterNext = afterNext.toLowerCase();
              if(afterNext == "b" || afterNext == "h" || afterNext == "o")
                stream.next();
            }
            end = true; break;
          }
          escaped = !escaped && next == "\\";
        }
        if (end || !(escaped || multiLineStrings))
          state.tokenize = null;
        return "string";
      };
    }

    function Context(indented, column, type, align, prev) {
      this.indented = indented;
      this.column = column;
      this.type = type;
      this.align = align;
      this.prev = prev;
    }
    function pushContext(state, col, type) {
      var indent = state.indented;
      if (state.context && state.context.type == "statement")
        indent = state.context.indented;
      return state.context = new Context(indent, col, type, null, state.context);
    }
    function popContext(state) {
      var t = state.context.type;
      if (t == ")" || t == "]" || t == "}")
        state.indented = state.context.indented;
      return state.context = state.context.prev;
    }

    //Interface
    return {
      startState: function(basecolumn) {
        return {
          tokenize: null,
          context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
          indented: 0,
          startOfLine: true
        };
      },

      token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
          if (ctx.align == null) ctx.align = false;
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        curPunc = null;
        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        if ((curPunc == ";" || curPunc == ":" || curPunc == ",")
            && ctx.type == "statement"){
          popContext(state);
        }
        else if (curPunc == "{") pushContext(state, stream.column(), "}");
        else if (curPunc == "[") pushContext(state, stream.column(), "]");
        else if (curPunc == "(") pushContext(state, stream.column(), ")");
        else if (curPunc == "}") {
          while (ctx.type == "statement") ctx = popContext(state);
          if (ctx.type == "}") ctx = popContext(state);
          while (ctx.type == "statement") ctx = popContext(state);
        }
        else if (curPunc == ctx.type) popContext(state);
        else if (indentStatements && (((ctx.type == "}" || ctx.type == "top")
            && curPunc != ';') || (ctx.type == "statement"
            && curPunc == "newstatement")))
          pushContext(state, stream.column(), "statement");

        state.startOfLine = false;
        return style;
      },

      electricChars: "{}",
      lineComment: "--",
      fold: "brace"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  CodeMirror.defineMIME("text/x-ttcn-asn", {
    name: "asn.1",
    keywords: words("DEFINITIONS OBJECTS IF DERIVED INFORMATION ACTION" +
    " REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED" +
    " WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN" +
    " IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS" +
    " MINACCESS MAXACCESS REVISION STATUS DESCRIPTION" +
    " SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName" +
    " ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY" +
    " IMPLIED EXPORTS"),
    cmipVerbs: words("ACTIONS ADD GET NOTIFICATIONS REPLACE REMOVE"),
    compareTypes: words("OPTIONAL DEFAULT MANAGED MODULE-TYPE MODULE_IDENTITY" +
    " MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY" +
    " OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL" +
    " SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL" +
    " TEXTUAL-CONVENTION"),
    status: words("current deprecated mandatory obsolete"),
    tags: words("APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE TAGS" +
    " UNIVERSAL"),
    storage: words("BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET STRING" +
    " UTCTime InterfaceIndex IANAifType CMIP-Attribute" +
    " REAL PACKAGE PACKAGES IpAddress PhysAddress" +
    " NetworkAddress BITS BMPString TimeStamp TimeTicks" +
    " TruthValue RowStatus DisplayString GeneralString" +
    " GraphicString IA5String NumericString" +
    " PrintableString SnmpAdminAtring TeletexString" +
    " UTF8String VideotexString VisibleString StringStore" +
    " ISO646String T61String UniversalString Unsigned32" +
    " Integer32 Gauge Gauge32 Counter Counter32 Counter64"),
    modifier: words("ATTRIBUTE ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS" +
    " GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS" +
    " DEFINED"),
    accessTypes: words("not-accessible accessible-for-notify read-only" +
    " read-create read-write"),
    multiLineStrings: true
  });
});
lib/codemirror/mode/d/index.html000064400000014325147361034410012633 0ustar00<!doctype html>

<title>CodeMirror: D mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="d.js"></script>
<style>.CodeMirror {border: 2px inset #dee;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">D</a>
  </ul>
</div>

<article>
<h2>D mode</h2>
<form><textarea id="code" name="code">
/* D demo code // copied from phobos/sd/metastrings.d */
// Written in the D programming language.

/**
Templates with which to do compile-time manipulation of strings.

Macros:
 WIKI = Phobos/StdMetastrings

Copyright: Copyright Digital Mars 2007 - 2009.
License:   <a href="http://www.boost.org/LICENSE_1_0.txt">Boost License 1.0</a>.
Authors:   jQuery(WEB digitalmars.com, Walter Bright),
           Don Clugston
Source:    jQuery(PHOBOSSRC std/_metastrings.d)
*/
/*
         Copyright Digital Mars 2007 - 2009.
Distributed under the Boost Software License, Version 1.0.
   (See accompanying file LICENSE_1_0.txt or copy at
         http://www.boost.org/LICENSE_1_0.txt)
 */
module std.metastrings;

/**
Formats constants into a string at compile time.  Analogous to jQuery(XREF
string,format).

Parameters:

A = tuple of constants, which can be strings, characters, or integral
    values.

Formats:
 *    The formats supported are %s for strings, and %%
 *    for the % character.
Example:
---
import std.metastrings;
import std.stdio;

void main()
{
  string s = Format!("Arg %s = %s", "foo", 27);
  writefln(s); // "Arg foo = 27"
}
 * ---
 */

template Format(A...)
{
    static if (A.length == 0)
        enum Format = "";
    else static if (is(typeof(A[0]) : const(char)[]))
        enum Format = FormatString!(A[0], A[1..$]);
    else
        enum Format = toStringNow!(A[0]) ~ Format!(A[1..$]);
}

template FormatString(const(char)[] F, A...)
{
    static if (F.length == 0)
        enum FormatString = Format!(A);
    else static if (F.length == 1)
        enum FormatString = F[0] ~ Format!(A);
    else static if (F[0..2] == "%s")
        enum FormatString
            = toStringNow!(A[0]) ~ FormatString!(F[2..$],A[1..$]);
    else static if (F[0..2] == "%%")
        enum FormatString = "%" ~ FormatString!(F[2..$],A);
    else
    {
        static assert(F[0] != '%', "unrecognized format %" ~ F[1]);
        enum FormatString = F[0] ~ FormatString!(F[1..$],A);
    }
}

unittest
{
    auto s = Format!("hel%slo", "world", -138, 'c', true);
    assert(s == "helworldlo-138ctrue", "[" ~ s ~ "]");
}

/**
 * Convert constant argument to a string.
 */

template toStringNow(ulong v)
{
    static if (v < 10)
        enum toStringNow = "" ~ cast(char)(v + '0');
    else
        enum toStringNow = toStringNow!(v / 10) ~ toStringNow!(v % 10);
}

unittest
{
    static assert(toStringNow!(1uL << 62) == "4611686018427387904");
}

/// ditto
template toStringNow(long v)
{
    static if (v < 0)
        enum toStringNow = "-" ~ toStringNow!(cast(ulong) -v);
    else
        enum toStringNow = toStringNow!(cast(ulong) v);
}

unittest
{
    static assert(toStringNow!(0x100000000) == "4294967296");
    static assert(toStringNow!(-138L) == "-138");
}

/// ditto
template toStringNow(uint U)
{
    enum toStringNow = toStringNow!(cast(ulong)U);
}

/// ditto
template toStringNow(int I)
{
    enum toStringNow = toStringNow!(cast(long)I);
}

/// ditto
template toStringNow(bool B)
{
    enum toStringNow = B ? "true" : "false";
}

/// ditto
template toStringNow(string S)
{
    enum toStringNow = S;
}

/// ditto
template toStringNow(char C)
{
    enum toStringNow = "" ~ C;
}


/********
 * Parse unsigned integer literal from the start of string s.
 * returns:
 *    .value = the integer literal as a string,
 *    .rest = the string following the integer literal
 * Otherwise:
 *    .value = null,
 *    .rest = s
 */

template parseUinteger(const(char)[] s)
{
    static if (s.length == 0)
    {
        enum value = "";
        enum rest = "";
    }
    else static if (s[0] >= '0' && s[0] <= '9')
    {
        enum value = s[0] ~ parseUinteger!(s[1..$]).value;
        enum rest = parseUinteger!(s[1..$]).rest;
    }
    else
    {
        enum value = "";
        enum rest = s;
    }
}

/********
Parse integer literal optionally preceded by jQuery(D '-') from the start
of string jQuery(D s).

Returns:
   .value = the integer literal as a string,
   .rest = the string following the integer literal

Otherwise:
   .value = null,
   .rest = s
*/

template parseInteger(const(char)[] s)
{
    static if (s.length == 0)
    {
        enum value = "";
        enum rest = "";
    }
    else static if (s[0] >= '0' && s[0] <= '9')
    {
        enum value = s[0] ~ parseUinteger!(s[1..$]).value;
        enum rest = parseUinteger!(s[1..$]).rest;
    }
    else static if (s.length >= 2 &&
            s[0] == '-' && s[1] >= '0' && s[1] <= '9')
    {
        enum value = s[0..2] ~ parseUinteger!(s[2..$]).value;
        enum rest = parseUinteger!(s[2..$]).rest;
    }
    else
    {
        enum value = "";
        enum rest = s;
    }
}

unittest
{
    assert(parseUinteger!("1234abc").value == "1234");
    assert(parseUinteger!("1234abc").rest == "abc");
    assert(parseInteger!("-1234abc").value == "-1234");
    assert(parseInteger!("-1234abc").rest == "abc");
}

/**
Deprecated aliases held for backward compatibility.
*/
deprecated alias toStringNow ToString;
/// Ditto
deprecated alias parseUinteger ParseUinteger;
/// Ditto
deprecated alias parseUinteger ParseInteger;

</textarea></form>

    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        matchBrackets: true,
        indentUnit: 4,
        mode: "text/x-d"
      });
    </script>

    <p>Simple mode that handle D-Syntax (<a href="http://www.dlang.org">DLang Homepage</a>).</p>

    <p><strong>MIME types defined:</strong> <code>text/x-d</code>
    .</p>
  </article>
lib/codemirror/mode/d/d.js000064400000016616147361034410011424 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("d", function(config, parserConfig) {
  var indentUnit = config.indentUnit,
      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,
      keywords = parserConfig.keywords || {},
      builtin = parserConfig.builtin || {},
      blockKeywords = parserConfig.blockKeywords || {},
      atoms = parserConfig.atoms || {},
      hooks = parserConfig.hooks || {},
      multiLineStrings = parserConfig.multiLineStrings;
  var isOperatorChar = /[+\-*&%=<>!?|\/]/;

  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"' || ch == "'" || ch == "`") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("+")) {
        state.tokenize = tokenComment;
        return tokenNestedComment(stream, state);
      }
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_\xa1-\uffff]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "keyword";
    }
    if (builtin.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
      return "builtin";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = null;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenNestedComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "+");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    var indent = state.indented;
    if (state.context && state.context.type == "statement")
      indent = state.context.indented;
    return state.context = new Context(indent, col, type, null, state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state);
      else if (curPunc == "{") pushContext(state, stream.column(), "}");
      else if (curPunc == "[") pushContext(state, stream.column(), "]");
      else if (curPunc == "(") pushContext(state, stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;
      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
      if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev;
      var closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}"
  };
});

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var blockKeywords = "body catch class do else enum for foreach foreach_reverse if in interface mixin " +
                      "out scope struct switch try union unittest version while with";

  CodeMirror.defineMIME("text/x-d", {
    name: "d",
    keywords: words("abstract alias align asm assert auto break case cast cdouble cent cfloat const continue " +
                    "debug default delegate delete deprecated export extern final finally function goto immutable " +
                    "import inout invariant is lazy macro module new nothrow override package pragma private " +
                    "protected public pure ref return shared short static super synchronized template this " +
                    "throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters " +
                    blockKeywords),
    blockKeywords: words(blockKeywords),
    builtin: words("bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte " +
                   "ucent uint ulong ushort wchar wstring void size_t sizediff_t"),
    atoms: words("exit failure success true false null"),
    hooks: {
      "@": function(stream, _state) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      }
    }
  });

});
lib/codemirror/mode/stylus/stylus.js000064400000122210147361034410013650 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("stylus", function(config) {
    var indentUnit = config.indentUnit,
        tagKeywords = keySet(tagKeywords_),
        tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,
        propertyKeywords = keySet(propertyKeywords_),
        nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),
        valueKeywords = keySet(valueKeywords_),
        colorKeywords = keySet(colorKeywords_),
        documentTypes = keySet(documentTypes_),
        documentTypesRegexp = wordRegexp(documentTypes_),
        mediaFeatures = keySet(mediaFeatures_),
        mediaTypes = keySet(mediaTypes_),
        fontProperties = keySet(fontProperties_),
        operatorsRegexp = /^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/,
        wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),
        blockKeywords = keySet(blockKeywords_),
        vendorPrefixesRegexp = new RegExp(/^\-(moz|ms|o|webkit)-/i),
        commonAtoms = keySet(commonAtoms_),
        firstWordMatch = "",
        states = {},
        ch,
        style,
        type,
        override;

    /**
     * Tokenizers
     */
    function tokenBase(stream, state) {
      firstWordMatch = stream.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/);
      state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\s*/, "") : "";
      state.context.line.indent = stream.indentation();
      ch = stream.peek();

      // Line comment
      if (stream.match("//")) {
        stream.skipToEnd();
        return ["comment", "comment"];
      }
      // Block comment
      if (stream.match("/*")) {
        state.tokenize = tokenCComment;
        return tokenCComment(stream, state);
      }
      // String
      if (ch == "\"" || ch == "'") {
        stream.next();
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      // Def
      if (ch == "@") {
        stream.next();
        stream.eatWhile(/[\w\\-]/);
        return ["def", stream.current()];
      }
      // ID selector or Hex color
      if (ch == "#") {
        stream.next();
        // Hex color
        if (stream.match(/^[0-9a-f]{6}|[0-9a-f]{3}/i)) {
          return ["atom", "atom"];
        }
        // ID selector
        if (stream.match(/^[a-z][\w-]*/i)) {
          return ["builtin", "hash"];
        }
      }
      // Vendor prefixes
      if (stream.match(vendorPrefixesRegexp)) {
        return ["meta", "vendor-prefixes"];
      }
      // Numbers
      if (stream.match(/^-?[0-9]?\.?[0-9]/)) {
        stream.eatWhile(/[a-z%]/i);
        return ["number", "unit"];
      }
      // !important|optional
      if (ch == "!") {
        stream.next();
        return [stream.match(/^(important|optional)/i) ? "keyword": "operator", "important"];
      }
      // Class
      if (ch == "." && stream.match(/^\.[a-z][\w-]*/i)) {
        return ["qualifier", "qualifier"];
      }
      // url url-prefix domain regexp
      if (stream.match(documentTypesRegexp)) {
        if (stream.peek() == "(") state.tokenize = tokenParenthesized;
        return ["property", "word"];
      }
      // Mixins / Functions
      if (stream.match(/^[a-z][\w-]*\(/i)) {
        stream.backUp(1);
        return ["keyword", "mixin"];
      }
      // Block mixins
      if (stream.match(/^(\+|-)[a-z][\w-]*\(/i)) {
        stream.backUp(1);
        return ["keyword", "block-mixin"];
      }
      // Parent Reference BEM naming
      if (stream.string.match(/^\s*&/) && stream.match(/^[-_]+[a-z][\w-]*/)) {
        return ["qualifier", "qualifier"];
      }
      // / Root Reference & Parent Reference
      if (stream.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)) {
        stream.backUp(1);
        return ["variable-3", "reference"];
      }
      if (stream.match(/^&{1}\s*$/)) {
        return ["variable-3", "reference"];
      }
      // Word operator
      if (stream.match(wordOperatorKeywordsRegexp)) {
        return ["operator", "operator"];
      }
      // Word
      if (stream.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)) {
        // Variable
        if (stream.match(/^(\.|\[)[\w-\'\"\]]+/i, false)) {
          if (!wordIsTag(stream.current())) {
            stream.match(/\./);
            return ["variable-2", "variable-name"];
          }
        }
        return ["variable-2", "word"];
      }
      // Operators
      if (stream.match(operatorsRegexp)) {
        return ["operator", stream.current()];
      }
      // Delimiters
      if (/[:;,{}\[\]\(\)]/.test(ch)) {
        stream.next();
        return [null, ch];
      }
      // Non-detected items
      stream.next();
      return [null, null];
    }

    /**
     * Token comment
     */
    function tokenCComment(stream, state) {
      var maybeEnd = false, ch;
      while ((ch = stream.next()) != null) {
        if (maybeEnd && ch == "/") {
          state.tokenize = null;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return ["comment", "comment"];
    }

    /**
     * Token string
     */
    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, ch;
        while ((ch = stream.next()) != null) {
          if (ch == quote && !escaped) {
            if (quote == ")") stream.backUp(1);
            break;
          }
          escaped = !escaped && ch == "\\";
        }
        if (ch == quote || !escaped && quote != ")") state.tokenize = null;
        return ["string", "string"];
      };
    }

    /**
     * Token parenthesized
     */
    function tokenParenthesized(stream, state) {
      stream.next(); // Must be "("
      if (!stream.match(/\s*[\"\')]/, false))
        state.tokenize = tokenString(")");
      else
        state.tokenize = null;
      return [null, "("];
    }

    /**
     * Context management
     */
    function Context(type, indent, prev, line) {
      this.type = type;
      this.indent = indent;
      this.prev = prev;
      this.line = line || {firstWord: "", indent: 0};
    }

    function pushContext(state, stream, type, indent) {
      indent = indent >= 0 ? indent : indentUnit;
      state.context = new Context(type, stream.indentation() + indent, state.context);
      return type;
    }

    function popContext(state, currentIndent) {
      var contextIndent = state.context.indent - indentUnit;
      currentIndent = currentIndent || false;
      state.context = state.context.prev;
      if (currentIndent) state.context.indent = contextIndent;
      return state.context.type;
    }

    function pass(type, stream, state) {
      return states[state.context.type](type, stream, state);
    }

    function popAndPass(type, stream, state, n) {
      for (var i = n || 1; i > 0; i--)
        state.context = state.context.prev;
      return pass(type, stream, state);
    }


    /**
     * Parser
     */
    function wordIsTag(word) {
      return word.toLowerCase() in tagKeywords;
    }

    function wordIsProperty(word) {
      word = word.toLowerCase();
      return word in propertyKeywords || word in fontProperties;
    }

    function wordIsBlock(word) {
      return word.toLowerCase() in blockKeywords;
    }

    function wordIsVendorPrefix(word) {
      return word.toLowerCase().match(vendorPrefixesRegexp);
    }

    function wordAsValue(word) {
      var wordLC = word.toLowerCase();
      var override = "variable-2";
      if (wordIsTag(word)) override = "tag";
      else if (wordIsBlock(word)) override = "block-keyword";
      else if (wordIsProperty(word)) override = "property";
      else if (wordLC in valueKeywords || wordLC in commonAtoms) override = "atom";
      else if (wordLC == "return" || wordLC in colorKeywords) override = "keyword";

      // Font family
      else if (word.match(/^[A-Z]/)) override = "string";
      return override;
    }

    function typeIsBlock(type, stream) {
      return ((endOfLine(stream) && (type == "{" || type == "]" || type == "hash" || type == "qualifier")) || type == "block-mixin");
    }

    function typeIsInterpolation(type, stream) {
      return type == "{" && stream.match(/^\s*\$?[\w-]+/i, false);
    }

    function typeIsPseudo(type, stream) {
      return type == ":" && stream.match(/^[a-z-]+/, false);
    }

    function startOfLine(stream) {
      return stream.sol() || stream.string.match(new RegExp("^\\s*" + escapeRegExp(stream.current())));
    }

    function endOfLine(stream) {
      return stream.eol() || stream.match(/^\s*$/, false);
    }

    function firstWordOfLine(line) {
      var re = /^\s*[-_]*[a-z0-9]+[\w-]*/i;
      var result = typeof line == "string" ? line.match(re) : line.string.match(re);
      return result ? result[0].replace(/^\s*/, "") : "";
    }


    /**
     * Block
     */
    states.block = function(type, stream, state) {
      if ((type == "comment" && startOfLine(stream)) ||
          (type == "," && endOfLine(stream)) ||
          type == "mixin") {
        return pushContext(state, stream, "block", 0);
      }
      if (typeIsInterpolation(type, stream)) {
        return pushContext(state, stream, "interpolation");
      }
      if (endOfLine(stream) && type == "]") {
        if (!/^\s*(\.|#|:|\[|\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) {
          return pushContext(state, stream, "block", 0);
        }
      }
      if (typeIsBlock(type, stream, state)) {
        return pushContext(state, stream, "block");
      }
      if (type == "}" && endOfLine(stream)) {
        return pushContext(state, stream, "block", 0);
      }
      if (type == "variable-name") {
        if (stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/) || wordIsBlock(firstWordOfLine(stream))) {
          return pushContext(state, stream, "variableName");
        }
        else {
          return pushContext(state, stream, "variableName", 0);
        }
      }
      if (type == "=") {
        if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) {
          return pushContext(state, stream, "block", 0);
        }
        return pushContext(state, stream, "block");
      }
      if (type == "*") {
        if (endOfLine(stream) || stream.match(/\s*(,|\.|#|\[|:|{)/,false)) {
          override = "tag";
          return pushContext(state, stream, "block");
        }
      }
      if (typeIsPseudo(type, stream)) {
        return pushContext(state, stream, "pseudo");
      }
      if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {
        return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock");
      }
      if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {
        return pushContext(state, stream, "keyframes");
      }
      if (/@extends?/.test(type)) {
        return pushContext(state, stream, "extend", 0);
      }
      if (type && type.charAt(0) == "@") {

        // Property Lookup
        if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) {
          override = "variable-2";
          return "block";
        }
        if (/(@import|@require|@charset)/.test(type)) {
          return pushContext(state, stream, "block", 0);
        }
        return pushContext(state, stream, "block");
      }
      if (type == "reference" && endOfLine(stream)) {
        return pushContext(state, stream, "block");
      }
      if (type == "(") {
        return pushContext(state, stream, "parens");
      }

      if (type == "vendor-prefixes") {
        return pushContext(state, stream, "vendorPrefixes");
      }
      if (type == "word") {
        var word = stream.current();
        override = wordAsValue(word);

        if (override == "property") {
          if (startOfLine(stream)) {
            return pushContext(state, stream, "block", 0);
          } else {
            override = "atom";
            return "block";
          }
        }

        if (override == "tag") {

          // tag is a css value
          if (/embed|menu|pre|progress|sub|table/.test(word)) {
            if (wordIsProperty(firstWordOfLine(stream))) {
              override = "atom";
              return "block";
            }
          }

          // tag is an attribute
          if (stream.string.match(new RegExp("\\[\\s*" + word + "|" + word +"\\s*\\]"))) {
            override = "atom";
            return "block";
          }

          // tag is a variable
          if (tagVariablesRegexp.test(word)) {
            if ((startOfLine(stream) && stream.string.match(/=/)) ||
                (!startOfLine(stream) &&
                 !stream.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/) &&
                 !wordIsTag(firstWordOfLine(stream)))) {
              override = "variable-2";
              if (wordIsBlock(firstWordOfLine(stream)))  return "block";
              return pushContext(state, stream, "block", 0);
            }
          }

          if (endOfLine(stream)) return pushContext(state, stream, "block");
        }
        if (override == "block-keyword") {
          override = "keyword";

          // Postfix conditionals
          if (stream.current(/(if|unless)/) && !startOfLine(stream)) {
            return "block";
          }
          return pushContext(state, stream, "block");
        }
        if (word == "return") return pushContext(state, stream, "block", 0);

        // Placeholder selector
        if (override == "variable-2" && stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)) {
          return pushContext(state, stream, "block");
        }
      }
      return state.context.type;
    };


    /**
     * Parens
     */
    states.parens = function(type, stream, state) {
      if (type == "(") return pushContext(state, stream, "parens");
      if (type == ")") {
        if (state.context.prev.type == "parens") {
          return popContext(state);
        }
        if ((stream.string.match(/^[a-z][\w-]*\(/i) && endOfLine(stream)) ||
            wordIsBlock(firstWordOfLine(stream)) ||
            /(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(firstWordOfLine(stream)) ||
            (!stream.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/) &&
             wordIsTag(firstWordOfLine(stream)))) {
          return pushContext(state, stream, "block");
        }
        if (stream.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/) ||
            stream.string.match(/^\s*(\(|\)|[0-9])/) ||
            stream.string.match(/^\s+[a-z][\w-]*\(/i) ||
            stream.string.match(/^\s+[\$-]?[a-z]/i)) {
          return pushContext(state, stream, "block", 0);
        }
        if (endOfLine(stream)) return pushContext(state, stream, "block");
        else return pushContext(state, stream, "block", 0);
      }
      if (type && type.charAt(0) == "@" && wordIsProperty(stream.current().slice(1))) {
        override = "variable-2";
      }
      if (type == "word") {
        var word = stream.current();
        override = wordAsValue(word);
        if (override == "tag" && tagVariablesRegexp.test(word)) {
          override = "variable-2";
        }
        if (override == "property" || word == "to") override = "atom";
      }
      if (type == "variable-name") {
        return pushContext(state, stream, "variableName");
      }
      if (typeIsPseudo(type, stream)) {
        return pushContext(state, stream, "pseudo");
      }
      return state.context.type;
    };


    /**
     * Vendor prefixes
     */
    states.vendorPrefixes = function(type, stream, state) {
      if (type == "word") {
        override = "property";
        return pushContext(state, stream, "block", 0);
      }
      return popContext(state);
    };


    /**
     * Pseudo
     */
    states.pseudo = function(type, stream, state) {
      if (!wordIsProperty(firstWordOfLine(stream.string))) {
        stream.match(/^[a-z-]+/);
        override = "variable-3";
        if (endOfLine(stream)) return pushContext(state, stream, "block");
        return popContext(state);
      }
      return popAndPass(type, stream, state);
    };


    /**
     * atBlock
     */
    states.atBlock = function(type, stream, state) {
      if (type == "(") return pushContext(state, stream, "atBlock_parens");
      if (typeIsBlock(type, stream, state)) {
        return pushContext(state, stream, "block");
      }
      if (typeIsInterpolation(type, stream)) {
        return pushContext(state, stream, "interpolation");
      }
      if (type == "word") {
        var word = stream.current().toLowerCase();
        if (/^(only|not|and|or)$/.test(word))
          override = "keyword";
        else if (documentTypes.hasOwnProperty(word))
          override = "tag";
        else if (mediaTypes.hasOwnProperty(word))
          override = "attribute";
        else if (mediaFeatures.hasOwnProperty(word))
          override = "property";
        else if (nonStandardPropertyKeywords.hasOwnProperty(word))
          override = "string-2";
        else override = wordAsValue(stream.current());
        if (override == "tag" && endOfLine(stream)) {
          return pushContext(state, stream, "block");
        }
      }
      if (type == "operator" && /^(not|and|or)$/.test(stream.current())) {
        override = "keyword";
      }
      return state.context.type;
    };

    states.atBlock_parens = function(type, stream, state) {
      if (type == "{" || type == "}") return state.context.type;
      if (type == ")") {
        if (endOfLine(stream)) return pushContext(state, stream, "block");
        else return pushContext(state, stream, "atBlock");
      }
      if (type == "word") {
        var word = stream.current().toLowerCase();
        override = wordAsValue(word);
        if (/^(max|min)/.test(word)) override = "property";
        if (override == "tag") {
          tagVariablesRegexp.test(word) ? override = "variable-2" : override = "atom";
        }
        return state.context.type;
      }
      return states.atBlock(type, stream, state);
    };


    /**
     * Keyframes
     */
    states.keyframes = function(type, stream, state) {
      if (stream.indentation() == "0" && ((type == "}" && startOfLine(stream)) || type == "]" || type == "hash"
                                          || type == "qualifier" || wordIsTag(stream.current()))) {
        return popAndPass(type, stream, state);
      }
      if (type == "{") return pushContext(state, stream, "keyframes");
      if (type == "}") {
        if (startOfLine(stream)) return popContext(state, true);
        else return pushContext(state, stream, "keyframes");
      }
      if (type == "unit" && /^[0-9]+\%$/.test(stream.current())) {
        return pushContext(state, stream, "keyframes");
      }
      if (type == "word") {
        override = wordAsValue(stream.current());
        if (override == "block-keyword") {
          override = "keyword";
          return pushContext(state, stream, "keyframes");
        }
      }
      if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {
        return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock");
      }
      if (type == "mixin") {
        return pushContext(state, stream, "block", 0);
      }
      return state.context.type;
    };


    /**
     * Interpolation
     */
    states.interpolation = function(type, stream, state) {
      if (type == "{") popContext(state) && pushContext(state, stream, "block");
      if (type == "}") {
        if (stream.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i) ||
            (stream.string.match(/^\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) {
          return pushContext(state, stream, "block");
        }
        if (!stream.string.match(/^(\{|\s*\&)/) ||
            stream.match(/\s*[\w-]/,false)) {
          return pushContext(state, stream, "block", 0);
        }
        return pushContext(state, stream, "block");
      }
      if (type == "variable-name") {
        return pushContext(state, stream, "variableName", 0);
      }
      if (type == "word") {
        override = wordAsValue(stream.current());
        if (override == "tag") override = "atom";
      }
      return state.context.type;
    };


    /**
     * Extend/s
     */
    states.extend = function(type, stream, state) {
      if (type == "[" || type == "=") return "extend";
      if (type == "]") return popContext(state);
      if (type == "word") {
        override = wordAsValue(stream.current());
        return "extend";
      }
      return popContext(state);
    };


    /**
     * Variable name
     */
    states.variableName = function(type, stream, state) {
      if (type == "string" || type == "[" || type == "]" || stream.current().match(/^(\.|\$)/)) {
        if (stream.current().match(/^\.[\w-]+/i)) override = "variable-2";
        return "variableName";
      }
      return popAndPass(type, stream, state);
    };


    return {
      startState: function(base) {
        return {
          tokenize: null,
          state: "block",
          context: new Context("block", base || 0, null)
        };
      },
      token: function(stream, state) {
        if (!state.tokenize && stream.eatSpace()) return null;
        style = (state.tokenize || tokenBase)(stream, state);
        if (style && typeof style == "object") {
          type = style[1];
          style = style[0];
        }
        override = style;
        state.state = states[state.state](type, stream, state);
        return override;
      },
      indent: function(state, textAfter, line) {

        var cx = state.context,
            ch = textAfter && textAfter.charAt(0),
            indent = cx.indent,
            lineFirstWord = firstWordOfLine(textAfter),
            lineIndent = line.length - line.replace(/^\s*/, "").length,
            prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : "",
            prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent;

        if (cx.prev &&
            (ch == "}" && (cx.type == "block" || cx.type == "atBlock" || cx.type == "keyframes") ||
             ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") ||
             ch == "{" && (cx.type == "at"))) {
          indent = cx.indent - indentUnit;
          cx = cx.prev;
        } else if (!(/(\})/.test(ch))) {
          if (/@|\$|\d/.test(ch) ||
              /^\{/.test(textAfter) ||
/^\s*\/(\/|\*)/.test(textAfter) ||
              /^\s*\/\*/.test(prevLineFirstWord) ||
              /^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(textAfter) ||
/^(\+|-)?[a-z][\w-]*\(/i.test(textAfter) ||
/^return/.test(textAfter) ||
              wordIsBlock(lineFirstWord)) {
            indent = lineIndent;
          } else if (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(ch) || wordIsTag(lineFirstWord)) {
            if (/\,\s*$/.test(prevLineFirstWord)) {
              indent = prevLineIndent;
            } else if (/^\s+/.test(line) && (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) {
              indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;
            } else {
              indent = lineIndent;
            }
          } else if (!/,\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {
            if (wordIsBlock(prevLineFirstWord)) {
              indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;
            } else if (/^\{/.test(prevLineFirstWord)) {
              indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit;
            } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) {
              indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent;
            } else if (/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(prevLineFirstWord) ||
                      /=\s*$/.test(prevLineFirstWord) ||
                      wordIsTag(prevLineFirstWord) ||
                      /^\$[\w-\.\[\]\'\"]/.test(prevLineFirstWord)) {
              indent = prevLineIndent + indentUnit;
            } else {
              indent = lineIndent;
            }
          }
        }
        return indent;
      },
      electricChars: "}",
      lineComment: "//",
      fold: "indent"
    };
  });

  // developer.mozilla.org/en-US/docs/Web/HTML/Element
  var tagKeywords_ = ["a","abbr","address","area","article","aside","audio", "b", "base","bdi", "bdo","bgsound","blockquote","body","br","button","canvas","caption","cite", "code","col","colgroup","data","datalist","dd","del","details","dfn","div", "dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1", "h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe", "img","input","ins","kbd","keygen","label","legend","li","link","main","map", "mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes", "noscript","object","ol","optgroup","option","output","p","param","pre", "progress","q","rp","rt","ruby","s","samp","script","section","select", "small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track", "u","ul","var","video"];

  // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js
  var documentTypes_ = ["domain", "regexp", "url", "url-prefix"];
  var mediaTypes_ = ["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"];
  var mediaFeatures_ = ["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"];
  var propertyKeywords_ = ["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"];
  var nonStandardPropertyKeywords_ = ["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"];
  var fontProperties_ = ["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"];
  var colorKeywords_ = ["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"];
  var valueKeywords_ = ["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around"];

  var wordOperatorKeywords_ = ["in","and","or","not","is not","is a","is","isnt","defined","if unless"],
      blockKeywords_ = ["for","if","else","unless", "from", "to"],
      commonAtoms_ = ["null","true","false","href","title","type","not-allowed","readonly","disabled"],
      commonDef_ = ["@font-face", "@keyframes", "@media", "@viewport", "@page", "@host", "@supports", "@block", "@css"];

  var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,
                                      propertyKeywords_,nonStandardPropertyKeywords_,
                                      colorKeywords_,valueKeywords_,fontProperties_,
                                      wordOperatorKeywords_,blockKeywords_,
                                      commonAtoms_,commonDef_);

  function wordRegexp(words) {
    words = words.sort(function(a,b){return b > a;});
    return new RegExp("^((" + words.join(")|(") + "))\\b");
  }

  function keySet(array) {
    var keys = {};
    for (var i = 0; i < array.length; ++i) keys[array[i]] = true;
    return keys;
  }

  function escapeRegExp(text) {
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
  }

  CodeMirror.registerHelper("hintWords", "stylus", hintWords);
  CodeMirror.defineMIME("text/x-styl", "stylus");
});
lib/codemirror/mode/stylus/index.html000064400000004650147361034410013753 0ustar00<!doctype html>

<title>CodeMirror: Stylus mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">
<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
<script src="../../lib/codemirror.js"></script>
<script src="stylus.js"></script>
<script src="../../addon/hint/show-hint.js"></script>
<script src="../../addon/hint/css-hint.js"></script>
<style>.CodeMirror {background: #f8f8f8;} form{margin-bottom: .7em;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Stylus</a>
  </ul>
</div>

<article>
<h2>Stylus mode</h2>
<form><textarea id="code" name="code">
/* Stylus mode */

#id,
.class,
article
  font-family Arial, sans-serif

#id,
.class,
article {
  font-family: Arial, sans-serif;
}

// Variables
font-size-base = 16px
line-height-base = 1.5
font-family-base = "Helvetica Neue", Helvetica, Arial, sans-serif
text-color = lighten(#000, 20%)

body
  font font-size-base/line-height-base font-family-base
  color text-color

body {
  font: 400 16px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: #333;
}

// Variables
link-color = darken(#428bca, 6.5%)
link-hover-color = darken(link-color, 15%)
link-decoration = none
link-hover-decoration = false

// Mixin
tab-focus()
  outline thin dotted
  outline 5px auto -webkit-focus-ring-color
  outline-offset -2px

a
  color link-color
  if link-decoration
    text-decoration link-decoration
  &:hover
  &:focus
    color link-hover-color
    if link-hover-decoration
      text-decoration link-hover-decoration
  &:focus
    tab-focus()

a {
  color: #3782c4;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #2f6ea7;
}
a:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
</textarea>
</form>
<script>
  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    extraKeys: {"Ctrl-Space": "autocomplete"},
    tabSize: 2
  });
</script>

<p><strong>MIME types defined:</strong> <code>text/x-styl</code>.</p>
<p>Created by <a href="https://github.com/dmitrykiselyov">Dmitry Kiselyov</a></p>
</article>
lib/codemirror/mode/turtle/turtle.js000064400000011361147361034410013604 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("turtle", function(config) {
  var indentUnit = config.indentUnit;
  var curPunc;

  function wordRegexp(words) {
    return new RegExp("^(?:" + words.join("|") + ")$", "i");
  }
  var ops = wordRegexp([]);
  var keywords = wordRegexp(["@prefix", "@base", "a"]);
  var operatorChars = /[*+\-<>=&|]/;

  function tokenBase(stream, state) {
    var ch = stream.next();
    curPunc = null;
    if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) {
      stream.match(/^[^\s\u00a0>]*>?/);
      return "atom";
    }
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenLiteral(ch);
      return state.tokenize(stream, state);
    }
    else if (/[{}\(\),\.;\[\]]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    else if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    else if (operatorChars.test(ch)) {
      stream.eatWhile(operatorChars);
      return null;
    }
    else if (ch == ":") {
          return "operator";
        } else {
      stream.eatWhile(/[_\w\d]/);
      if(stream.peek() == ":") {
        return "variable-3";
      } else {
             var word = stream.current();

             if(keywords.test(word)) {
                        return "meta";
             }

             if(ch >= "A" && ch <= "Z") {
                    return "comment";
                 } else {
                        return "keyword";
                 }
      }
      var word = stream.current();
      if (ops.test(word))
        return null;
      else if (keywords.test(word))
        return "meta";
      else
        return "variable";
    }
  }

  function tokenLiteral(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      return "string";
    };
  }

  function pushContext(state, type, col) {
    state.context = {prev: state.context, indent: state.indent, col: col, type: type};
  }
  function popContext(state) {
    state.indent = state.context.indent;
    state.context = state.context.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase,
              context: null,
              indent: 0,
              col: 0};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (state.context && state.context.align == null) state.context.align = false;
        state.indent = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);

      if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") {
        state.context.align = true;
      }

      if (curPunc == "(") pushContext(state, ")", stream.column());
      else if (curPunc == "[") pushContext(state, "]", stream.column());
      else if (curPunc == "{") pushContext(state, "}", stream.column());
      else if (/[\]\}\)]/.test(curPunc)) {
        while (state.context && state.context.type == "pattern") popContext(state);
        if (state.context && curPunc == state.context.type) popContext(state);
      }
      else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state);
      else if (/atom|string|variable/.test(style) && state.context) {
        if (/[\}\]]/.test(state.context.type))
          pushContext(state, "pattern", stream.column());
        else if (state.context.type == "pattern" && !state.context.align) {
          state.context.align = true;
          state.context.col = stream.column();
        }
      }

      return style;
    },

    indent: function(state, textAfter) {
      var firstChar = textAfter && textAfter.charAt(0);
      var context = state.context;
      if (/[\]\}]/.test(firstChar))
        while (context && context.type == "pattern") context = context.prev;

      var closing = context && firstChar == context.type;
      if (!context)
        return 0;
      else if (context.type == "pattern")
        return context.col;
      else if (context.align)
        return context.col + (closing ? 0 : 1);
      else
        return context.indent + (closing ? 0 : indentUnit);
    },

    lineComment: "#"
  };
});

CodeMirror.defineMIME("text/turtle", "turtle");

});
lib/codemirror/mode/turtle/index.html000064400000002676147361034410013735 0ustar00<!doctype html>

<title>CodeMirror: Turtle mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="turtle.js"></script>
<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Turtle</a>
  </ul>
</div>

<article>
<h2>Turtle mode</h2>
<form><textarea id="code" name="code">
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://purl.org/net/bsletten> 
    a foaf:Person;
    foaf:interest <http://www.w3.org/2000/01/sw/>;
    foaf:based_near [
        geo:lat "34.0736111" ;
        geo:lon "-118.3994444"
   ]

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/turtle",
        matchBrackets: true
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/turtle</code>.</p>

  </article>
lib/codemirror/lib/codemirror.js000064400001312712147361034410012742 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

// This is CodeMirror (http://codemirror.net), a code editor
// implemented in JavaScript on top of the browser's DOM.
//
// You can find some technical background for some of the code below
// at http://marijnhaverbeke.nl/blog/#cm-internals .

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    module.exports = mod();
  else if (typeof define == "function" && define.amd) // AMD
    return define([], mod);
  else // Plain browser env
    (this || window).CodeMirror = mod();
})(function() {
  "use strict";

  // BROWSER SNIFFING

  // Kludges for bugs and behavior differences that can't be feature
  // detected are enabled based on userAgent etc sniffing.
  var userAgent = navigator.userAgent;
  var platform = navigator.platform;

  var gecko = /gecko\/\d/i.test(userAgent);
  var ie_upto10 = /MSIE \d/.test(userAgent);
  var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent);
  var ie = ie_upto10 || ie_11up;
  var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]);
  var webkit = /WebKit\//.test(userAgent);
  var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent);
  var chrome = /Chrome\//.test(userAgent);
  var presto = /Opera\//.test(userAgent);
  var safari = /Apple Computer/.test(navigator.vendor);
  var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent);
  var phantom = /PhantomJS/.test(userAgent);

  var ios = /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent);
  // This is woefully incomplete. Suggestions for alternative methods welcome.
  var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);
  var mac = ios || /Mac/.test(platform);
  var chromeOS = /\bCrOS\b/.test(userAgent);
  var windows = /win/i.test(platform);

  var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/);
  if (presto_version) presto_version = Number(presto_version[1]);
  if (presto_version && presto_version >= 15) { presto = false; webkit = true; }
  // Some browsers use the wrong event properties to signal cmd/ctrl on OS X
  var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));
  var captureRightClick = gecko || (ie && ie_version >= 9);

  // Optimize some code when these features are not used.
  var sawReadOnlySpans = false, sawCollapsedSpans = false;

  // EDITOR CONSTRUCTOR

  // A CodeMirror instance represents an editor. This is the object
  // that user code is usually dealing with.

  function CodeMirror(place, options) {
    if (!(this instanceof CodeMirror)) return new CodeMirror(place, options);

    this.options = options = options ? copyObj(options) : {};
    // Determine effective options based on given values and defaults.
    copyObj(defaults, options, false);
    setGuttersForLineNumbers(options);

    var doc = options.value;
    if (typeof doc == "string") doc = new Doc(doc, options.mode, null, options.lineSeparator);
    this.doc = doc;

    var input = new CodeMirror.inputStyles[options.inputStyle](this);
    var display = this.display = new Display(place, doc, input);
    display.wrapper.CodeMirror = this;
    updateGutters(this);
    themeChanged(this);
    if (options.lineWrapping)
      this.display.wrapper.className += " CodeMirror-wrap";
    if (options.autofocus && !mobile) display.input.focus();
    initScrollbars(this);

    this.state = {
      keyMaps: [],  // stores maps added by addKeyMap
      overlays: [], // highlighting overlays, as added by addOverlay
      modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info
      overwrite: false,
      delayingBlurEvent: false,
      focused: false,
      suppressEdits: false, // used to disable editing during key handlers when in readOnly mode
      pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll
      selectingText: false,
      draggingText: false,
      highlight: new Delayed(), // stores highlight worker timeout
      keySeq: null,  // Unfinished key sequence
      specialChars: null
    };

    var cm = this;

    // Override magic textarea content restore that IE sometimes does
    // on our hidden textarea on reload
    if (ie && ie_version < 11) setTimeout(function() { cm.display.input.reset(true); }, 20);

    registerEventHandlers(this);
    ensureGlobalHandlers();

    startOperation(this);
    this.curOp.forceUpdate = true;
    attachDoc(this, doc);

    if ((options.autofocus && !mobile) || cm.hasFocus())
      setTimeout(bind(onFocus, this), 20);
    else
      onBlur(this);

    for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt))
      optionHandlers[opt](this, options[opt], Init);
    maybeUpdateLineNumberWidth(this);
    if (options.finishInit) options.finishInit(this);
    for (var i = 0; i < initHooks.length; ++i) initHooks[i](this);
    endOperation(this);
    // Suppress optimizelegibility in Webkit, since it breaks text
    // measuring on line wrapping boundaries.
    if (webkit && options.lineWrapping &&
        getComputedStyle(display.lineDiv).textRendering == "optimizelegibility")
      display.lineDiv.style.textRendering = "auto";
  }

  // DISPLAY CONSTRUCTOR

  // The display handles the DOM integration, both for input reading
  // and content drawing. It holds references to DOM nodes and
  // display-related state.

  function Display(place, doc, input) {
    var d = this;
    this.input = input;

    // Covers bottom-right square when both scrollbars are present.
    d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler");
    d.scrollbarFiller.setAttribute("cm-not-content", "true");
    // Covers bottom of gutter when coverGutterNextToScrollbar is on
    // and h scrollbar is present.
    d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler");
    d.gutterFiller.setAttribute("cm-not-content", "true");
    // Will contain the actual code, positioned to cover the viewport.
    d.lineDiv = elt("div", null, "CodeMirror-code");
    // Elements are added to these to represent selection and cursors.
    d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1");
    d.cursorDiv = elt("div", null, "CodeMirror-cursors");
    // A visibility: hidden element used to find the size of things.
    d.measure = elt("div", null, "CodeMirror-measure");
    // When lines outside of the viewport are measured, they are drawn in this.
    d.lineMeasure = elt("div", null, "CodeMirror-measure");
    // Wraps everything that needs to exist inside the vertically-padded coordinate system
    d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],
                      null, "position: relative; outline: none");
    // Moved around its parent to cover visible view.
    d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative");
    // Set to the height of the document, allowing scrolling.
    d.sizer = elt("div", [d.mover], "CodeMirror-sizer");
    d.sizerWidth = null;
    // Behavior of elts with overflow: auto and padding is
    // inconsistent across browsers. This is used to ensure the
    // scrollable area is big enough.
    d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;");
    // Will contain the gutters, if any.
    d.gutters = elt("div", null, "CodeMirror-gutters");
    d.lineGutter = null;
    // Actual scrollable element.
    d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll");
    d.scroller.setAttribute("tabIndex", "-1");
    // The element in which the editor lives.
    d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror");

    // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)
    if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }
    if (!webkit && !(gecko && mobile)) d.scroller.draggable = true;

    if (place) {
      if (place.appendChild) place.appendChild(d.wrapper);
      else place(d.wrapper);
    }

    // Current rendered range (may be bigger than the view window).
    d.viewFrom = d.viewTo = doc.first;
    d.reportedViewFrom = d.reportedViewTo = doc.first;
    // Information about the rendered lines.
    d.view = [];
    d.renderedView = null;
    // Holds info about a single rendered line when it was rendered
    // for measurement, while not in view.
    d.externalMeasured = null;
    // Empty space (in pixels) above the view
    d.viewOffset = 0;
    d.lastWrapHeight = d.lastWrapWidth = 0;
    d.updateLineNumbers = null;

    d.nativeBarWidth = d.barHeight = d.barWidth = 0;
    d.scrollbarsClipped = false;

    // Used to only resize the line number gutter when necessary (when
    // the amount of lines crosses a boundary that makes its width change)
    d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;
    // Set to true when a non-horizontal-scrolling line widget is
    // added. As an optimization, line widget aligning is skipped when
    // this is false.
    d.alignWidgets = false;

    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;

    // Tracks the maximum line length so that the horizontal scrollbar
    // can be kept static when scrolling.
    d.maxLine = null;
    d.maxLineLength = 0;
    d.maxLineChanged = false;

    // Used for measuring wheel scrolling granularity
    d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;

    // True when shift is held down.
    d.shift = false;

    // Used to track whether anything happened since the context menu
    // was opened.
    d.selForContextMenu = null;

    d.activeTouch = null;

    input.init(d);
  }

  // STATE UPDATES

  // Used to get the editor into a consistent state again when options change.

  function loadMode(cm) {
    cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption);
    resetModeState(cm);
  }

  function resetModeState(cm) {
    cm.doc.iter(function(line) {
      if (line.stateAfter) line.stateAfter = null;
      if (line.styles) line.styles = null;
    });
    cm.doc.frontier = cm.doc.first;
    startWorker(cm, 100);
    cm.state.modeGen++;
    if (cm.curOp) regChange(cm);
  }

  function wrappingChanged(cm) {
    if (cm.options.lineWrapping) {
      addClass(cm.display.wrapper, "CodeMirror-wrap");
      cm.display.sizer.style.minWidth = "";
      cm.display.sizerWidth = null;
    } else {
      rmClass(cm.display.wrapper, "CodeMirror-wrap");
      findMaxLine(cm);
    }
    estimateLineHeights(cm);
    regChange(cm);
    clearCaches(cm);
    setTimeout(function(){updateScrollbars(cm);}, 100);
  }

  // Returns a function that estimates the height of a line, to use as
  // first approximation until the line becomes visible (and is thus
  // properly measurable).
  function estimateHeight(cm) {
    var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;
    var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);
    return function(line) {
      if (lineIsHidden(cm.doc, line)) return 0;

      var widgetsHeight = 0;
      if (line.widgets) for (var i = 0; i < line.widgets.length; i++) {
        if (line.widgets[i].height) widgetsHeight += line.widgets[i].height;
      }

      if (wrapping)
        return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;
      else
        return widgetsHeight + th;
    };
  }

  function estimateLineHeights(cm) {
    var doc = cm.doc, est = estimateHeight(cm);
    doc.iter(function(line) {
      var estHeight = est(line);
      if (estHeight != line.height) updateLineHeight(line, estHeight);
    });
  }

  function themeChanged(cm) {
    cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") +
      cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-");
    clearCaches(cm);
  }

  function guttersChanged(cm) {
    updateGutters(cm);
    regChange(cm);
    setTimeout(function(){alignHorizontally(cm);}, 20);
  }

  // Rebuild the gutter elements, ensure the margin to the left of the
  // code matches their width.
  function updateGutters(cm) {
    var gutters = cm.display.gutters, specs = cm.options.gutters;
    removeChildren(gutters);
    for (var i = 0; i < specs.length; ++i) {
      var gutterClass = specs[i];
      var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass));
      if (gutterClass == "CodeMirror-linenumbers") {
        cm.display.lineGutter = gElt;
        gElt.style.width = (cm.display.lineNumWidth || 1) + "px";
      }
    }
    gutters.style.display = i ? "" : "none";
    updateGutterSpace(cm);
  }

  function updateGutterSpace(cm) {
    var width = cm.display.gutters.offsetWidth;
    cm.display.sizer.style.marginLeft = width + "px";
  }

  // Compute the character length of a line, taking into account
  // collapsed ranges (see markText) that might hide parts, and join
  // other lines onto it.
  function lineLength(line) {
    if (line.height == 0) return 0;
    var len = line.text.length, merged, cur = line;
    while (merged = collapsedSpanAtStart(cur)) {
      var found = merged.find(0, true);
      cur = found.from.line;
      len += found.from.ch - found.to.ch;
    }
    cur = line;
    while (merged = collapsedSpanAtEnd(cur)) {
      var found = merged.find(0, true);
      len -= cur.text.length - found.from.ch;
      cur = found.to.line;
      len += cur.text.length - found.to.ch;
    }
    return len;
  }

  // Find the longest line in the document.
  function findMaxLine(cm) {
    var d = cm.display, doc = cm.doc;
    d.maxLine = getLine(doc, doc.first);
    d.maxLineLength = lineLength(d.maxLine);
    d.maxLineChanged = true;
    doc.iter(function(line) {
      var len = lineLength(line);
      if (len > d.maxLineLength) {
        d.maxLineLength = len;
        d.maxLine = line;
      }
    });
  }

  // Make sure the gutters options contains the element
  // "CodeMirror-linenumbers" when the lineNumbers option is true.
  function setGuttersForLineNumbers(options) {
    var found = indexOf(options.gutters, "CodeMirror-linenumbers");
    if (found == -1 && options.lineNumbers) {
      options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]);
    } else if (found > -1 && !options.lineNumbers) {
      options.gutters = options.gutters.slice(0);
      options.gutters.splice(found, 1);
    }
  }

  // SCROLLBARS

  // Prepare DOM reads needed to update the scrollbars. Done in one
  // shot to minimize update/measure roundtrips.
  function measureForScrollbars(cm) {
    var d = cm.display, gutterW = d.gutters.offsetWidth;
    var docH = Math.round(cm.doc.height + paddingVert(cm.display));
    return {
      clientHeight: d.scroller.clientHeight,
      viewHeight: d.wrapper.clientHeight,
      scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,
      viewWidth: d.wrapper.clientWidth,
      barLeft: cm.options.fixedGutter ? gutterW : 0,
      docHeight: docH,
      scrollHeight: docH + scrollGap(cm) + d.barHeight,
      nativeBarWidth: d.nativeBarWidth,
      gutterWidth: gutterW
    };
  }

  function NativeScrollbars(place, scroll, cm) {
    this.cm = cm;
    var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar");
    var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar");
    place(vert); place(horiz);

    on(vert, "scroll", function() {
      if (vert.clientHeight) scroll(vert.scrollTop, "vertical");
    });
    on(horiz, "scroll", function() {
      if (horiz.clientWidth) scroll(horiz.scrollLeft, "horizontal");
    });

    this.checkedZeroWidth = false;
    // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).
    if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = "18px";
  }

  NativeScrollbars.prototype = copyObj({
    update: function(measure) {
      var needsH = measure.scrollWidth > measure.clientWidth + 1;
      var needsV = measure.scrollHeight > measure.clientHeight + 1;
      var sWidth = measure.nativeBarWidth;

      if (needsV) {
        this.vert.style.display = "block";
        this.vert.style.bottom = needsH ? sWidth + "px" : "0";
        var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);
        // A bug in IE8 can cause this value to be negative, so guard it.
        this.vert.firstChild.style.height =
          Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px";
      } else {
        this.vert.style.display = "";
        this.vert.firstChild.style.height = "0";
      }

      if (needsH) {
        this.horiz.style.display = "block";
        this.horiz.style.right = needsV ? sWidth + "px" : "0";
        this.horiz.style.left = measure.barLeft + "px";
        var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);
        this.horiz.firstChild.style.width =
          (measure.scrollWidth - measure.clientWidth + totalWidth) + "px";
      } else {
        this.horiz.style.display = "";
        this.horiz.firstChild.style.width = "0";
      }

      if (!this.checkedZeroWidth && measure.clientHeight > 0) {
        if (sWidth == 0) this.zeroWidthHack();
        this.checkedZeroWidth = true;
      }

      return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0};
    },
    setScrollLeft: function(pos) {
      if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos;
      if (this.disableHoriz) this.enableZeroWidthBar(this.horiz, this.disableHoriz);
    },
    setScrollTop: function(pos) {
      if (this.vert.scrollTop != pos) this.vert.scrollTop = pos;
      if (this.disableVert) this.enableZeroWidthBar(this.vert, this.disableVert);
    },
    zeroWidthHack: function() {
      var w = mac && !mac_geMountainLion ? "12px" : "18px";
      this.horiz.style.height = this.vert.style.width = w;
      this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none";
      this.disableHoriz = new Delayed;
      this.disableVert = new Delayed;
    },
    enableZeroWidthBar: function(bar, delay) {
      bar.style.pointerEvents = "auto";
      function maybeDisable() {
        // To find out whether the scrollbar is still visible, we
        // check whether the element under the pixel in the bottom
        // left corner of the scrollbar box is the scrollbar box
        // itself (when the bar is still visible) or its filler child
        // (when the bar is hidden). If it is still visible, we keep
        // it enabled, if it's hidden, we disable pointer events.
        var box = bar.getBoundingClientRect();
        var elt = document.elementFromPoint(box.left + 1, box.bottom - 1);
        if (elt != bar) bar.style.pointerEvents = "none";
        else delay.set(1000, maybeDisable);
      }
      delay.set(1000, maybeDisable);
    },
    clear: function() {
      var parent = this.horiz.parentNode;
      parent.removeChild(this.horiz);
      parent.removeChild(this.vert);
    }
  }, NativeScrollbars.prototype);

  function NullScrollbars() {}

  NullScrollbars.prototype = copyObj({
    update: function() { return {bottom: 0, right: 0}; },
    setScrollLeft: function() {},
    setScrollTop: function() {},
    clear: function() {}
  }, NullScrollbars.prototype);

  CodeMirror.scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars};

  function initScrollbars(cm) {
    if (cm.display.scrollbars) {
      cm.display.scrollbars.clear();
      if (cm.display.scrollbars.addClass)
        rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);
    }

    cm.display.scrollbars = new CodeMirror.scrollbarModel[cm.options.scrollbarStyle](function(node) {
      cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);
      // Prevent clicks in the scrollbars from killing focus
      on(node, "mousedown", function() {
        if (cm.state.focused) setTimeout(function() { cm.display.input.focus(); }, 0);
      });
      node.setAttribute("cm-not-content", "true");
    }, function(pos, axis) {
      if (axis == "horizontal") setScrollLeft(cm, pos);
      else setScrollTop(cm, pos);
    }, cm);
    if (cm.display.scrollbars.addClass)
      addClass(cm.display.wrapper, cm.display.scrollbars.addClass);
  }

  function updateScrollbars(cm, measure) {
    if (!measure) measure = measureForScrollbars(cm);
    var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;
    updateScrollbarsInner(cm, measure);
    for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {
      if (startWidth != cm.display.barWidth && cm.options.lineWrapping)
        updateHeightsInViewport(cm);
      updateScrollbarsInner(cm, measureForScrollbars(cm));
      startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;
    }
  }

  // Re-synchronize the fake scrollbars with the actual size of the
  // content.
  function updateScrollbarsInner(cm, measure) {
    var d = cm.display;
    var sizes = d.scrollbars.update(measure);

    d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px";
    d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px";
    d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent"

    if (sizes.right && sizes.bottom) {
      d.scrollbarFiller.style.display = "block";
      d.scrollbarFiller.style.height = sizes.bottom + "px";
      d.scrollbarFiller.style.width = sizes.right + "px";
    } else d.scrollbarFiller.style.display = "";
    if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {
      d.gutterFiller.style.display = "block";
      d.gutterFiller.style.height = sizes.bottom + "px";
      d.gutterFiller.style.width = measure.gutterWidth + "px";
    } else d.gutterFiller.style.display = "";
  }

  // Compute the lines that are visible in a given viewport (defaults
  // the the current scroll position). viewport may contain top,
  // height, and ensure (see op.scrollToPos) properties.
  function visibleLines(display, doc, viewport) {
    var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;
    top = Math.floor(top - paddingTop(display));
    var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;

    var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);
    // Ensure is a {from: {line, ch}, to: {line, ch}} object, and
    // forces those lines into the viewport (if possible).
    if (viewport && viewport.ensure) {
      var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;
      if (ensureFrom < from) {
        from = ensureFrom;
        to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);
      } else if (Math.min(ensureTo, doc.lastLine()) >= to) {
        from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);
        to = ensureTo;
      }
    }
    return {from: from, to: Math.max(to, from + 1)};
  }

  // LINE NUMBERS

  // Re-align line numbers and gutter marks to compensate for
  // horizontal scrolling.
  function alignHorizontally(cm) {
    var display = cm.display, view = display.view;
    if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return;
    var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;
    var gutterW = display.gutters.offsetWidth, left = comp + "px";
    for (var i = 0; i < view.length; i++) if (!view[i].hidden) {
      if (cm.options.fixedGutter) {
        if (view[i].gutter)
          view[i].gutter.style.left = left;
        if (view[i].gutterBackground)
          view[i].gutterBackground.style.left = left;
      }
      var align = view[i].alignable;
      if (align) for (var j = 0; j < align.length; j++)
        align[j].style.left = left;
    }
    if (cm.options.fixedGutter)
      display.gutters.style.left = (comp + gutterW) + "px";
  }

  // Used to ensure that the line number gutter is still the right
  // size for the current document size. Returns true when an update
  // is needed.
  function maybeUpdateLineNumberWidth(cm) {
    if (!cm.options.lineNumbers) return false;
    var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;
    if (last.length != display.lineNumChars) {
      var test = display.measure.appendChild(elt("div", [elt("div", last)],
                                                 "CodeMirror-linenumber CodeMirror-gutter-elt"));
      var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;
      display.lineGutter.style.width = "";
      display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;
      display.lineNumWidth = display.lineNumInnerWidth + padding;
      display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;
      display.lineGutter.style.width = display.lineNumWidth + "px";
      updateGutterSpace(cm);
      return true;
    }
    return false;
  }

  function lineNumberFor(options, i) {
    return String(options.lineNumberFormatter(i + options.firstLineNumber));
  }

  // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,
  // but using getBoundingClientRect to get a sub-pixel-accurate
  // result.
  function compensateForHScroll(display) {
    return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;
  }

  // DISPLAY DRAWING

  function DisplayUpdate(cm, viewport, force) {
    var display = cm.display;

    this.viewport = viewport;
    // Store some values that we'll need later (but don't want to force a relayout for)
    this.visible = visibleLines(display, cm.doc, viewport);
    this.editorIsHidden = !display.wrapper.offsetWidth;
    this.wrapperHeight = display.wrapper.clientHeight;
    this.wrapperWidth = display.wrapper.clientWidth;
    this.oldDisplayWidth = displayWidth(cm);
    this.force = force;
    this.dims = getDimensions(cm);
    this.events = [];
  }

  DisplayUpdate.prototype.signal = function(emitter, type) {
    if (hasHandler(emitter, type))
      this.events.push(arguments);
  };
  DisplayUpdate.prototype.finish = function() {
    for (var i = 0; i < this.events.length; i++)
      signal.apply(null, this.events[i]);
  };

  function maybeClipScrollbars(cm) {
    var display = cm.display;
    if (!display.scrollbarsClipped && display.scroller.offsetWidth) {
      display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;
      display.heightForcer.style.height = scrollGap(cm) + "px";
      display.sizer.style.marginBottom = -display.nativeBarWidth + "px";
      display.sizer.style.borderRightWidth = scrollGap(cm) + "px";
      display.scrollbarsClipped = true;
    }
  }

  // Does the actual updating of the line display. Bails out
  // (returning false) when there is nothing to be done and forced is
  // false.
  function updateDisplayIfNeeded(cm, update) {
    var display = cm.display, doc = cm.doc;

    if (update.editorIsHidden) {
      resetView(cm);
      return false;
    }

    // Bail out if the visible area is already rendered and nothing changed.
    if (!update.force &&
        update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&
        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&
        display.renderedView == display.view && countDirtyView(cm) == 0)
      return false;

    if (maybeUpdateLineNumberWidth(cm)) {
      resetView(cm);
      update.dims = getDimensions(cm);
    }

    // Compute a suitable new viewport (from & to)
    var end = doc.first + doc.size;
    var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);
    var to = Math.min(end, update.visible.to + cm.options.viewportMargin);
    if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom);
    if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo);
    if (sawCollapsedSpans) {
      from = visualLineNo(cm.doc, from);
      to = visualLineEndNo(cm.doc, to);
    }

    var different = from != display.viewFrom || to != display.viewTo ||
      display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;
    adjustView(cm, from, to);

    display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));
    // Position the mover div to align with the current scroll position
    cm.display.mover.style.top = display.viewOffset + "px";

    var toUpdate = countDirtyView(cm);
    if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&
        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))
      return false;

    // For big changes, we hide the enclosing element during the
    // update, since that speeds up the operations on most browsers.
    var focused = activeElt();
    if (toUpdate > 4) display.lineDiv.style.display = "none";
    patchDisplay(cm, display.updateLineNumbers, update.dims);
    if (toUpdate > 4) display.lineDiv.style.display = "";
    display.renderedView = display.view;
    // There might have been a widget with a focused element that got
    // hidden or updated, if so re-focus it.
    if (focused && activeElt() != focused && focused.offsetHeight) focused.focus();

    // Prevent selection and cursors from interfering with the scroll
    // width and height.
    removeChildren(display.cursorDiv);
    removeChildren(display.selectionDiv);
    display.gutters.style.height = display.sizer.style.minHeight = 0;

    if (different) {
      display.lastWrapHeight = update.wrapperHeight;
      display.lastWrapWidth = update.wrapperWidth;
      startWorker(cm, 400);
    }

    display.updateLineNumbers = null;

    return true;
  }

  function postUpdateDisplay(cm, update) {
    var viewport = update.viewport;

    for (var first = true;; first = false) {
      if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {
        // Clip forced viewport to actual scrollable area.
        if (viewport && viewport.top != null)
          viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)};
        // Updated line heights might result in the drawn area not
        // actually covering the viewport. Keep looping until it does.
        update.visible = visibleLines(cm.display, cm.doc, viewport);
        if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)
          break;
      }
      if (!updateDisplayIfNeeded(cm, update)) break;
      updateHeightsInViewport(cm);
      var barMeasure = measureForScrollbars(cm);
      updateSelection(cm);
      updateScrollbars(cm, barMeasure);
      setDocumentHeight(cm, barMeasure);
    }

    update.signal(cm, "update", cm);
    if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {
      update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo);
      cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;
    }
  }

  function updateDisplaySimple(cm, viewport) {
    var update = new DisplayUpdate(cm, viewport);
    if (updateDisplayIfNeeded(cm, update)) {
      updateHeightsInViewport(cm);
      postUpdateDisplay(cm, update);
      var barMeasure = measureForScrollbars(cm);
      updateSelection(cm);
      updateScrollbars(cm, barMeasure);
      setDocumentHeight(cm, barMeasure);
      update.finish();
    }
  }

  function setDocumentHeight(cm, measure) {
    cm.display.sizer.style.minHeight = measure.docHeight + "px";
    cm.display.heightForcer.style.top = measure.docHeight + "px";
    cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px";
  }

  // Read the actual heights of the rendered lines, and update their
  // stored heights to match.
  function updateHeightsInViewport(cm) {
    var display = cm.display;
    var prevBottom = display.lineDiv.offsetTop;
    for (var i = 0; i < display.view.length; i++) {
      var cur = display.view[i], height;
      if (cur.hidden) continue;
      if (ie && ie_version < 8) {
        var bot = cur.node.offsetTop + cur.node.offsetHeight;
        height = bot - prevBottom;
        prevBottom = bot;
      } else {
        var box = cur.node.getBoundingClientRect();
        height = box.bottom - box.top;
      }
      var diff = cur.line.height - height;
      if (height < 2) height = textHeight(display);
      if (diff > .001 || diff < -.001) {
        updateLineHeight(cur.line, height);
        updateWidgetHeight(cur.line);
        if (cur.rest) for (var j = 0; j < cur.rest.length; j++)
          updateWidgetHeight(cur.rest[j]);
      }
    }
  }

  // Read and store the height of line widgets associated with the
  // given line.
  function updateWidgetHeight(line) {
    if (line.widgets) for (var i = 0; i < line.widgets.length; ++i)
      line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight;
  }

  // Do a bulk-read of the DOM positions and sizes needed to draw the
  // view, so that we don't interleave reading and writing to the DOM.
  function getDimensions(cm) {
    var d = cm.display, left = {}, width = {};
    var gutterLeft = d.gutters.clientLeft;
    for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {
      left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;
      width[cm.options.gutters[i]] = n.clientWidth;
    }
    return {fixedPos: compensateForHScroll(d),
            gutterTotalWidth: d.gutters.offsetWidth,
            gutterLeft: left,
            gutterWidth: width,
            wrapperWidth: d.wrapper.clientWidth};
  }

  // Sync the actual display DOM structure with display.view, removing
  // nodes for lines that are no longer in view, and creating the ones
  // that are not there yet, and updating the ones that are out of
  // date.
  function patchDisplay(cm, updateNumbersFrom, dims) {
    var display = cm.display, lineNumbers = cm.options.lineNumbers;
    var container = display.lineDiv, cur = container.firstChild;

    function rm(node) {
      var next = node.nextSibling;
      // Works around a throw-scroll bug in OS X Webkit
      if (webkit && mac && cm.display.currentWheelTarget == node)
        node.style.display = "none";
      else
        node.parentNode.removeChild(node);
      return next;
    }

    var view = display.view, lineN = display.viewFrom;
    // Loop over the elements in the view, syncing cur (the DOM nodes
    // in display.lineDiv) with the view as we go.
    for (var i = 0; i < view.length; i++) {
      var lineView = view[i];
      if (lineView.hidden) {
      } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
        var node = buildLineElement(cm, lineView, lineN, dims);
        container.insertBefore(node, cur);
      } else { // Already drawn
        while (cur != lineView.node) cur = rm(cur);
        var updateNumber = lineNumbers && updateNumbersFrom != null &&
          updateNumbersFrom <= lineN && lineView.lineNumber;
        if (lineView.changes) {
          if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false;
          updateLineForChanges(cm, lineView, lineN, dims);
        }
        if (updateNumber) {
          removeChildren(lineView.lineNumber);
          lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));
        }
        cur = lineView.node.nextSibling;
      }
      lineN += lineView.size;
    }
    while (cur) cur = rm(cur);
  }

  // When an aspect of a line changes, a string is added to
  // lineView.changes. This updates the relevant part of the line's
  // DOM structure.
  function updateLineForChanges(cm, lineView, lineN, dims) {
    for (var j = 0; j < lineView.changes.length; j++) {
      var type = lineView.changes[j];
      if (type == "text") updateLineText(cm, lineView);
      else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims);
      else if (type == "class") updateLineClasses(lineView);
      else if (type == "widget") updateLineWidgets(cm, lineView, dims);
    }
    lineView.changes = null;
  }

  // Lines with gutter elements, widgets or a background class need to
  // be wrapped, and have the extra elements added to the wrapper div
  function ensureLineWrapped(lineView) {
    if (lineView.node == lineView.text) {
      lineView.node = elt("div", null, null, "position: relative");
      if (lineView.text.parentNode)
        lineView.text.parentNode.replaceChild(lineView.node, lineView.text);
      lineView.node.appendChild(lineView.text);
      if (ie && ie_version < 8) lineView.node.style.zIndex = 2;
    }
    return lineView.node;
  }

  function updateLineBackground(lineView) {
    var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass;
    if (cls) cls += " CodeMirror-linebackground";
    if (lineView.background) {
      if (cls) lineView.background.className = cls;
      else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }
    } else if (cls) {
      var wrap = ensureLineWrapped(lineView);
      lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild);
    }
  }

  // Wrapper around buildLineContent which will reuse the structure
  // in display.externalMeasured when possible.
  function getLineContent(cm, lineView) {
    var ext = cm.display.externalMeasured;
    if (ext && ext.line == lineView.line) {
      cm.display.externalMeasured = null;
      lineView.measure = ext.measure;
      return ext.built;
    }
    return buildLineContent(cm, lineView);
  }

  // Redraw the line's text. Interacts with the background and text
  // classes because the mode may output tokens that influence these
  // classes.
  function updateLineText(cm, lineView) {
    var cls = lineView.text.className;
    var built = getLineContent(cm, lineView);
    if (lineView.text == lineView.node) lineView.node = built.pre;
    lineView.text.parentNode.replaceChild(built.pre, lineView.text);
    lineView.text = built.pre;
    if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {
      lineView.bgClass = built.bgClass;
      lineView.textClass = built.textClass;
      updateLineClasses(lineView);
    } else if (cls) {
      lineView.text.className = cls;
    }
  }

  function updateLineClasses(lineView) {
    updateLineBackground(lineView);
    if (lineView.line.wrapClass)
      ensureLineWrapped(lineView).className = lineView.line.wrapClass;
    else if (lineView.node != lineView.text)
      lineView.node.className = "";
    var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass;
    lineView.text.className = textClass || "";
  }

  function updateLineGutter(cm, lineView, lineN, dims) {
    if (lineView.gutter) {
      lineView.node.removeChild(lineView.gutter);
      lineView.gutter = null;
    }
    if (lineView.gutterBackground) {
      lineView.node.removeChild(lineView.gutterBackground);
      lineView.gutterBackground = null;
    }
    if (lineView.line.gutterClass) {
      var wrap = ensureLineWrapped(lineView);
      lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass,
                                      "left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) +
                                      "px; width: " + dims.gutterTotalWidth + "px");
      wrap.insertBefore(lineView.gutterBackground, lineView.text);
    }
    var markers = lineView.line.gutterMarkers;
    if (cm.options.lineNumbers || markers) {
      var wrap = ensureLineWrapped(lineView);
      var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", "left: " +
                                             (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px");
      cm.display.input.setUneditable(gutterWrap);
      wrap.insertBefore(gutterWrap, lineView.text);
      if (lineView.line.gutterClass)
        gutterWrap.className += " " + lineView.line.gutterClass;
      if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"]))
        lineView.lineNumber = gutterWrap.appendChild(
          elt("div", lineNumberFor(cm.options, lineN),
              "CodeMirror-linenumber CodeMirror-gutter-elt",
              "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: "
              + cm.display.lineNumInnerWidth + "px"));
      if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) {
        var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];
        if (found)
          gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " +
                                     dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px"));
      }
    }
  }

  function updateLineWidgets(cm, lineView, dims) {
    if (lineView.alignable) lineView.alignable = null;
    for (var node = lineView.node.firstChild, next; node; node = next) {
      var next = node.nextSibling;
      if (node.className == "CodeMirror-linewidget")
        lineView.node.removeChild(node);
    }
    insertLineWidgets(cm, lineView, dims);
  }

  // Build a line's DOM representation from scratch
  function buildLineElement(cm, lineView, lineN, dims) {
    var built = getLineContent(cm, lineView);
    lineView.text = lineView.node = built.pre;
    if (built.bgClass) lineView.bgClass = built.bgClass;
    if (built.textClass) lineView.textClass = built.textClass;

    updateLineClasses(lineView);
    updateLineGutter(cm, lineView, lineN, dims);
    insertLineWidgets(cm, lineView, dims);
    return lineView.node;
  }

  // A lineView may contain multiple logical lines (when merged by
  // collapsed spans). The widgets for all of them need to be drawn.
  function insertLineWidgets(cm, lineView, dims) {
    insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);
    if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)
      insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);
  }

  function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {
    if (!line.widgets) return;
    var wrap = ensureLineWrapped(lineView);
    for (var i = 0, ws = line.widgets; i < ws.length; ++i) {
      var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget");
      if (!widget.handleMouseEvents) node.setAttribute("cm-ignore-events", "true");
      positionLineWidget(widget, node, lineView, dims);
      cm.display.input.setUneditable(node);
      if (allowAbove && widget.above)
        wrap.insertBefore(node, lineView.gutter || lineView.text);
      else
        wrap.appendChild(node);
      signalLater(widget, "redraw");
    }
  }

  function positionLineWidget(widget, node, lineView, dims) {
    if (widget.noHScroll) {
      (lineView.alignable || (lineView.alignable = [])).push(node);
      var width = dims.wrapperWidth;
      node.style.left = dims.fixedPos + "px";
      if (!widget.coverGutter) {
        width -= dims.gutterTotalWidth;
        node.style.paddingLeft = dims.gutterTotalWidth + "px";
      }
      node.style.width = width + "px";
    }
    if (widget.coverGutter) {
      node.style.zIndex = 5;
      node.style.position = "relative";
      if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px";
    }
  }

  // POSITION OBJECT

  // A Pos instance represents a position within the text.
  var Pos = CodeMirror.Pos = function(line, ch) {
    if (!(this instanceof Pos)) return new Pos(line, ch);
    this.line = line; this.ch = ch;
  };

  // Compare two positions, return 0 if they are the same, a negative
  // number when a is less, and a positive number otherwise.
  var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; };

  function copyPos(x) {return Pos(x.line, x.ch);}
  function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; }
  function minPos(a, b) { return cmp(a, b) < 0 ? a : b; }

  // INPUT HANDLING

  function ensureFocus(cm) {
    if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }
  }

  // This will be set to a {lineWise: bool, text: [string]} object, so
  // that, when pasting, we know what kind of selections the copied
  // text was made out of.
  var lastCopied = null;

  function applyTextInput(cm, inserted, deleted, sel, origin) {
    var doc = cm.doc;
    cm.display.shift = false;
    if (!sel) sel = doc.sel;

    var paste = cm.state.pasteIncoming || origin == "paste";
    var textLines = doc.splitLines(inserted), multiPaste = null
    // When pasing N lines into N selections, insert one line per selection
    if (paste && sel.ranges.length > 1) {
      if (lastCopied && lastCopied.text.join("\n") == inserted) {
        if (sel.ranges.length % lastCopied.text.length == 0) {
          multiPaste = [];
          for (var i = 0; i < lastCopied.text.length; i++)
            multiPaste.push(doc.splitLines(lastCopied.text[i]));
        }
      } else if (textLines.length == sel.ranges.length) {
        multiPaste = map(textLines, function(l) { return [l]; });
      }
    }

    // Normal behavior is to insert the new text into every selection
    for (var i = sel.ranges.length - 1; i >= 0; i--) {
      var range = sel.ranges[i];
      var from = range.from(), to = range.to();
      if (range.empty()) {
        if (deleted && deleted > 0) // Handle deletion
          from = Pos(from.line, from.ch - deleted);
        else if (cm.state.overwrite && !paste) // Handle overwrite
          to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));
        else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted)
          from = to = Pos(from.line, 0)
      }
      var updateInput = cm.curOp.updateInput;
      var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines,
                         origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")};
      makeChange(cm.doc, changeEvent);
      signalLater(cm, "inputRead", cm, changeEvent);
    }
    if (inserted && !paste)
      triggerElectric(cm, inserted);

    ensureCursorVisible(cm);
    cm.curOp.updateInput = updateInput;
    cm.curOp.typing = true;
    cm.state.pasteIncoming = cm.state.cutIncoming = false;
  }

  function handlePaste(e, cm) {
    var pasted = e.clipboardData && e.clipboardData.getData("Text");
    if (pasted) {
      e.preventDefault();
      if (!cm.isReadOnly() && !cm.options.disableInput)
        runInOp(cm, function() { applyTextInput(cm, pasted, 0, null, "paste"); });
      return true;
    }
  }

  function triggerElectric(cm, inserted) {
    // When an 'electric' character is inserted, immediately trigger a reindent
    if (!cm.options.electricChars || !cm.options.smartIndent) return;
    var sel = cm.doc.sel;

    for (var i = sel.ranges.length - 1; i >= 0; i--) {
      var range = sel.ranges[i];
      if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) continue;
      var mode = cm.getModeAt(range.head);
      var indented = false;
      if (mode.electricChars) {
        for (var j = 0; j < mode.electricChars.length; j++)
          if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {
            indented = indentLine(cm, range.head.line, "smart");
            break;
          }
      } else if (mode.electricInput) {
        if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))
          indented = indentLine(cm, range.head.line, "smart");
      }
      if (indented) signalLater(cm, "electricInput", cm, range.head.line);
    }
  }

  function copyableRanges(cm) {
    var text = [], ranges = [];
    for (var i = 0; i < cm.doc.sel.ranges.length; i++) {
      var line = cm.doc.sel.ranges[i].head.line;
      var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};
      ranges.push(lineRange);
      text.push(cm.getRange(lineRange.anchor, lineRange.head));
    }
    return {text: text, ranges: ranges};
  }

  function disableBrowserMagic(field, spellcheck) {
    field.setAttribute("autocorrect", "off");
    field.setAttribute("autocapitalize", "off");
    field.setAttribute("spellcheck", !!spellcheck);
  }

  // TEXTAREA INPUT STYLE

  function TextareaInput(cm) {
    this.cm = cm;
    // See input.poll and input.reset
    this.prevInput = "";

    // Flag that indicates whether we expect input to appear real soon
    // now (after some event like 'keypress' or 'input') and are
    // polling intensively.
    this.pollingFast = false;
    // Self-resetting timeout for the poller
    this.polling = new Delayed();
    // Tracks when input.reset has punted to just putting a short
    // string into the textarea instead of the full selection.
    this.inaccurateSelection = false;
    // Used to work around IE issue with selection being forgotten when focus moves away from textarea
    this.hasSelection = false;
    this.composing = null;
  };

  function hiddenTextarea() {
    var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none");
    var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;");
    // The textarea is kept positioned near the cursor to prevent the
    // fact that it'll be scrolled into view on input from scrolling
    // our fake cursor out of view. On webkit, when wrap=off, paste is
    // very slow. So make the area wide instead.
    if (webkit) te.style.width = "1000px";
    else te.setAttribute("wrap", "off");
    // If border: 0; -- iOS fails to open keyboard (issue #1287)
    if (ios) te.style.border = "1px solid black";
    disableBrowserMagic(te);
    return div;
  }

  TextareaInput.prototype = copyObj({
    init: function(display) {
      var input = this, cm = this.cm;

      // Wraps and hides input textarea
      var div = this.wrapper = hiddenTextarea();
      // The semihidden textarea that is focused when the editor is
      // focused, and receives input.
      var te = this.textarea = div.firstChild;
      display.wrapper.insertBefore(div, display.wrapper.firstChild);

      // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)
      if (ios) te.style.width = "0px";

      on(te, "input", function() {
        if (ie && ie_version >= 9 && input.hasSelection) input.hasSelection = null;
        input.poll();
      });

      on(te, "paste", function(e) {
        if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return

        cm.state.pasteIncoming = true;
        input.fastPoll();
      });

      function prepareCopyCut(e) {
        if (signalDOMEvent(cm, e)) return
        if (cm.somethingSelected()) {
          lastCopied = {lineWise: false, text: cm.getSelections()};
          if (input.inaccurateSelection) {
            input.prevInput = "";
            input.inaccurateSelection = false;
            te.value = lastCopied.text.join("\n");
            selectInput(te);
          }
        } else if (!cm.options.lineWiseCopyCut) {
          return;
        } else {
          var ranges = copyableRanges(cm);
          lastCopied = {lineWise: true, text: ranges.text};
          if (e.type == "cut") {
            cm.setSelections(ranges.ranges, null, sel_dontScroll);
          } else {
            input.prevInput = "";
            te.value = ranges.text.join("\n");
            selectInput(te);
          }
        }
        if (e.type == "cut") cm.state.cutIncoming = true;
      }
      on(te, "cut", prepareCopyCut);
      on(te, "copy", prepareCopyCut);

      on(display.scroller, "paste", function(e) {
        if (eventInWidget(display, e) || signalDOMEvent(cm, e)) return;
        cm.state.pasteIncoming = true;
        input.focus();
      });

      // Prevent normal selection in the editor (we handle our own)
      on(display.lineSpace, "selectstart", function(e) {
        if (!eventInWidget(display, e)) e_preventDefault(e);
      });

      on(te, "compositionstart", function() {
        var start = cm.getCursor("from");
        if (input.composing) input.composing.range.clear()
        input.composing = {
          start: start,
          range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"})
        };
      });
      on(te, "compositionend", function() {
        if (input.composing) {
          input.poll();
          input.composing.range.clear();
          input.composing = null;
        }
      });
    },

    prepareSelection: function() {
      // Redraw the selection and/or cursor
      var cm = this.cm, display = cm.display, doc = cm.doc;
      var result = prepareSelection(cm);

      // Move the hidden textarea near the cursor to prevent scrolling artifacts
      if (cm.options.moveInputWithCursor) {
        var headPos = cursorCoords(cm, doc.sel.primary().head, "div");
        var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();
        result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,
                                            headPos.top + lineOff.top - wrapOff.top));
        result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,
                                             headPos.left + lineOff.left - wrapOff.left));
      }

      return result;
    },

    showSelection: function(drawn) {
      var cm = this.cm, display = cm.display;
      removeChildrenAndAdd(display.cursorDiv, drawn.cursors);
      removeChildrenAndAdd(display.selectionDiv, drawn.selection);
      if (drawn.teTop != null) {
        this.wrapper.style.top = drawn.teTop + "px";
        this.wrapper.style.left = drawn.teLeft + "px";
      }
    },

    // Reset the input to correspond to the selection (or to be empty,
    // when not typing and nothing is selected)
    reset: function(typing) {
      if (this.contextMenuPending) return;
      var minimal, selected, cm = this.cm, doc = cm.doc;
      if (cm.somethingSelected()) {
        this.prevInput = "";
        var range = doc.sel.primary();
        minimal = hasCopyEvent &&
          (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000);
        var content = minimal ? "-" : selected || cm.getSelection();
        this.textarea.value = content;
        if (cm.state.focused) selectInput(this.textarea);
        if (ie && ie_version >= 9) this.hasSelection = content;
      } else if (!typing) {
        this.prevInput = this.textarea.value = "";
        if (ie && ie_version >= 9) this.hasSelection = null;
      }
      this.inaccurateSelection = minimal;
    },

    getField: function() { return this.textarea; },

    supportsTouch: function() { return false; },

    focus: function() {
      if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) {
        try { this.textarea.focus(); }
        catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM
      }
    },

    blur: function() { this.textarea.blur(); },

    resetPosition: function() {
      this.wrapper.style.top = this.wrapper.style.left = 0;
    },

    receivedFocus: function() { this.slowPoll(); },

    // Poll for input changes, using the normal rate of polling. This
    // runs as long as the editor is focused.
    slowPoll: function() {
      var input = this;
      if (input.pollingFast) return;
      input.polling.set(this.cm.options.pollInterval, function() {
        input.poll();
        if (input.cm.state.focused) input.slowPoll();
      });
    },

    // When an event has just come in that is likely to add or change
    // something in the input textarea, we poll faster, to ensure that
    // the change appears on the screen quickly.
    fastPoll: function() {
      var missed = false, input = this;
      input.pollingFast = true;
      function p() {
        var changed = input.poll();
        if (!changed && !missed) {missed = true; input.polling.set(60, p);}
        else {input.pollingFast = false; input.slowPoll();}
      }
      input.polling.set(20, p);
    },

    // Read input from the textarea, and update the document to match.
    // When something is selected, it is present in the textarea, and
    // selected (unless it is huge, in which case a placeholder is
    // used). When nothing is selected, the cursor sits after previously
    // seen text (can be empty), which is stored in prevInput (we must
    // not reset the textarea when typing, because that breaks IME).
    poll: function() {
      var cm = this.cm, input = this.textarea, prevInput = this.prevInput;
      // Since this is called a *lot*, try to bail out as cheaply as
      // possible when it is clear that nothing happened. hasSelection
      // will be the case when there is a lot of text in the textarea,
      // in which case reading its value would be expensive.
      if (this.contextMenuPending || !cm.state.focused ||
          (hasSelection(input) && !prevInput && !this.composing) ||
          cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)
        return false;

      var text = input.value;
      // If nothing changed, bail.
      if (text == prevInput && !cm.somethingSelected()) return false;
      // Work around nonsensical selection resetting in IE9/10, and
      // inexplicable appearance of private area unicode characters on
      // some key combos in Mac (#2689).
      if (ie && ie_version >= 9 && this.hasSelection === text ||
          mac && /[\uf700-\uf7ff]/.test(text)) {
        cm.display.input.reset();
        return false;
      }

      if (cm.doc.sel == cm.display.selForContextMenu) {
        var first = text.charCodeAt(0);
        if (first == 0x200b && !prevInput) prevInput = "\u200b";
        if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo"); }
      }
      // Find the part of the input that is actually new
      var same = 0, l = Math.min(prevInput.length, text.length);
      while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same;

      var self = this;
      runInOp(cm, function() {
        applyTextInput(cm, text.slice(same), prevInput.length - same,
                       null, self.composing ? "*compose" : null);

        // Don't leave long text in the textarea, since it makes further polling slow
        if (text.length > 1000 || text.indexOf("\n") > -1) input.value = self.prevInput = "";
        else self.prevInput = text;

        if (self.composing) {
          self.composing.range.clear();
          self.composing.range = cm.markText(self.composing.start, cm.getCursor("to"),
                                             {className: "CodeMirror-composing"});
        }
      });
      return true;
    },

    ensurePolled: function() {
      if (this.pollingFast && this.poll()) this.pollingFast = false;
    },

    onKeyPress: function() {
      if (ie && ie_version >= 9) this.hasSelection = null;
      this.fastPoll();
    },

    onContextMenu: function(e) {
      var input = this, cm = input.cm, display = cm.display, te = input.textarea;
      var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;
      if (!pos || presto) return; // Opera is difficult.

      // Reset the current text selection only if the click is done outside of the selection
      // and 'resetSelectionOnContextMenu' option is true.
      var reset = cm.options.resetSelectionOnContextMenu;
      if (reset && cm.doc.sel.contains(pos) == -1)
        operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);

      var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;
      input.wrapper.style.cssText = "position: absolute"
      var wrapperBox = input.wrapper.getBoundingClientRect()
      te.style.cssText = "position: absolute; width: 30px; height: 30px; top: " + (e.clientY - wrapperBox.top - 5) +
        "px; left: " + (e.clientX - wrapperBox.left - 5) + "px; z-index: 1000; background: " +
        (ie ? "rgba(255, 255, 255, .05)" : "transparent") +
        "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";
      if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712)
      display.input.focus();
      if (webkit) window.scrollTo(null, oldScrollY);
      display.input.reset();
      // Adds "Select all" to context menu in FF
      if (!cm.somethingSelected()) te.value = input.prevInput = " ";
      input.contextMenuPending = true;
      display.selForContextMenu = cm.doc.sel;
      clearTimeout(display.detectingSelectAll);

      // Select-all will be greyed out if there's nothing to select, so
      // this adds a zero-width space so that we can later check whether
      // it got selected.
      function prepareSelectAllHack() {
        if (te.selectionStart != null) {
          var selected = cm.somethingSelected();
          var extval = "\u200b" + (selected ? te.value : "");
          te.value = "\u21da"; // Used to catch context-menu undo
          te.value = extval;
          input.prevInput = selected ? "" : "\u200b";
          te.selectionStart = 1; te.selectionEnd = extval.length;
          // Re-set this, in case some other handler touched the
          // selection in the meantime.
          display.selForContextMenu = cm.doc.sel;
        }
      }
      function rehide() {
        input.contextMenuPending = false;
        input.wrapper.style.cssText = oldWrapperCSS
        te.style.cssText = oldCSS;
        if (ie && ie_version < 9) display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);

        // Try to detect the user choosing select-all
        if (te.selectionStart != null) {
          if (!ie || (ie && ie_version < 9)) prepareSelectAllHack();
          var i = 0, poll = function() {
            if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&
                te.selectionEnd > 0 && input.prevInput == "\u200b")
              operation(cm, commands.selectAll)(cm);
            else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500);
            else display.input.reset();
          };
          display.detectingSelectAll = setTimeout(poll, 200);
        }
      }

      if (ie && ie_version >= 9) prepareSelectAllHack();
      if (captureRightClick) {
        e_stop(e);
        var mouseup = function() {
          off(window, "mouseup", mouseup);
          setTimeout(rehide, 20);
        };
        on(window, "mouseup", mouseup);
      } else {
        setTimeout(rehide, 50);
      }
    },

    readOnlyChanged: function(val) {
      if (!val) this.reset();
    },

    setUneditable: nothing,

    needsContentAttribute: false
  }, TextareaInput.prototype);

  // CONTENTEDITABLE INPUT STYLE

  function ContentEditableInput(cm) {
    this.cm = cm;
    this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;
    this.polling = new Delayed();
    this.gracePeriod = false;
  }

  ContentEditableInput.prototype = copyObj({
    init: function(display) {
      var input = this, cm = input.cm;
      var div = input.div = display.lineDiv;
      disableBrowserMagic(div, cm.options.spellcheck);

      on(div, "paste", function(e) {
        if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return
        // IE doesn't fire input events, so we schedule a read for the pasted content in this way
        if (ie_version <= 11) setTimeout(operation(cm, function() {
          if (!input.pollContent()) regChange(cm);
        }), 20)
      })

      on(div, "compositionstart", function(e) {
        var data = e.data;
        input.composing = {sel: cm.doc.sel, data: data, startData: data};
        if (!data) return;
        var prim = cm.doc.sel.primary();
        var line = cm.getLine(prim.head.line);
        var found = line.indexOf(data, Math.max(0, prim.head.ch - data.length));
        if (found > -1 && found <= prim.head.ch)
          input.composing.sel = simpleSelection(Pos(prim.head.line, found),
                                                Pos(prim.head.line, found + data.length));
      });
      on(div, "compositionupdate", function(e) {
        input.composing.data = e.data;
      });
      on(div, "compositionend", function(e) {
        var ours = input.composing;
        if (!ours) return;
        if (e.data != ours.startData && !/\u200b/.test(e.data))
          ours.data = e.data;
        // Need a small delay to prevent other code (input event,
        // selection polling) from doing damage when fired right after
        // compositionend.
        setTimeout(function() {
          if (!ours.handled)
            input.applyComposition(ours);
          if (input.composing == ours)
            input.composing = null;
        }, 50);
      });

      on(div, "touchstart", function() {
        input.forceCompositionEnd();
      });

      on(div, "input", function() {
        if (input.composing) return;
        if (cm.isReadOnly() || !input.pollContent())
          runInOp(input.cm, function() {regChange(cm);});
      });

      function onCopyCut(e) {
        if (signalDOMEvent(cm, e)) return
        if (cm.somethingSelected()) {
          lastCopied = {lineWise: false, text: cm.getSelections()};
          if (e.type == "cut") cm.replaceSelection("", null, "cut");
        } else if (!cm.options.lineWiseCopyCut) {
          return;
        } else {
          var ranges = copyableRanges(cm);
          lastCopied = {lineWise: true, text: ranges.text};
          if (e.type == "cut") {
            cm.operation(function() {
              cm.setSelections(ranges.ranges, 0, sel_dontScroll);
              cm.replaceSelection("", null, "cut");
            });
          }
        }
        if (e.clipboardData) {
          e.clipboardData.clearData();
          var content = lastCopied.text.join("\n")
          // iOS exposes the clipboard API, but seems to discard content inserted into it
          e.clipboardData.setData("Text", content);
          if (e.clipboardData.getData("Text") == content) {
            e.preventDefault();
            return
          }
        }
        // Old-fashioned briefly-focus-a-textarea hack
        var kludge = hiddenTextarea(), te = kludge.firstChild;
        cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);
        te.value = lastCopied.text.join("\n");
        var hadFocus = document.activeElement;
        selectInput(te);
        setTimeout(function() {
          cm.display.lineSpace.removeChild(kludge);
          hadFocus.focus();
          if (hadFocus == div) input.showPrimarySelection()
        }, 50);
      }
      on(div, "copy", onCopyCut);
      on(div, "cut", onCopyCut);
    },

    prepareSelection: function() {
      var result = prepareSelection(this.cm, false);
      result.focus = this.cm.state.focused;
      return result;
    },

    showSelection: function(info, takeFocus) {
      if (!info || !this.cm.display.view.length) return;
      if (info.focus || takeFocus) this.showPrimarySelection();
      this.showMultipleSelections(info);
    },

    showPrimarySelection: function() {
      var sel = window.getSelection(), prim = this.cm.doc.sel.primary();
      var curAnchor = domToPos(this.cm, sel.anchorNode, sel.anchorOffset);
      var curFocus = domToPos(this.cm, sel.focusNode, sel.focusOffset);
      if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&
          cmp(minPos(curAnchor, curFocus), prim.from()) == 0 &&
          cmp(maxPos(curAnchor, curFocus), prim.to()) == 0)
        return;

      var start = posToDOM(this.cm, prim.from());
      var end = posToDOM(this.cm, prim.to());
      if (!start && !end) return;

      var view = this.cm.display.view;
      var old = sel.rangeCount && sel.getRangeAt(0);
      if (!start) {
        start = {node: view[0].measure.map[2], offset: 0};
      } else if (!end) { // FIXME dangerously hacky
        var measure = view[view.length - 1].measure;
        var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;
        end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};
      }

      try { var rng = range(start.node, start.offset, end.offset, end.node); }
      catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible
      if (rng) {
        if (!gecko && this.cm.state.focused) {
          sel.collapse(start.node, start.offset);
          if (!rng.collapsed) sel.addRange(rng);
        } else {
          sel.removeAllRanges();
          sel.addRange(rng);
        }
        if (old && sel.anchorNode == null) sel.addRange(old);
        else if (gecko) this.startGracePeriod();
      }
      this.rememberSelection();
    },

    startGracePeriod: function() {
      var input = this;
      clearTimeout(this.gracePeriod);
      this.gracePeriod = setTimeout(function() {
        input.gracePeriod = false;
        if (input.selectionChanged())
          input.cm.operation(function() { input.cm.curOp.selectionChanged = true; });
      }, 20);
    },

    showMultipleSelections: function(info) {
      removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);
      removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);
    },

    rememberSelection: function() {
      var sel = window.getSelection();
      this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;
      this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;
    },

    selectionInEditor: function() {
      var sel = window.getSelection();
      if (!sel.rangeCount) return false;
      var node = sel.getRangeAt(0).commonAncestorContainer;
      return contains(this.div, node);
    },

    focus: function() {
      if (this.cm.options.readOnly != "nocursor") this.div.focus();
    },
    blur: function() { this.div.blur(); },
    getField: function() { return this.div; },

    supportsTouch: function() { return true; },

    receivedFocus: function() {
      var input = this;
      if (this.selectionInEditor())
        this.pollSelection();
      else
        runInOp(this.cm, function() { input.cm.curOp.selectionChanged = true; });

      function poll() {
        if (input.cm.state.focused) {
          input.pollSelection();
          input.polling.set(input.cm.options.pollInterval, poll);
        }
      }
      this.polling.set(this.cm.options.pollInterval, poll);
    },

    selectionChanged: function() {
      var sel = window.getSelection();
      return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||
        sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;
    },

    pollSelection: function() {
      if (!this.composing && !this.gracePeriod && this.selectionChanged()) {
        var sel = window.getSelection(), cm = this.cm;
        this.rememberSelection();
        var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);
        var head = domToPos(cm, sel.focusNode, sel.focusOffset);
        if (anchor && head) runInOp(cm, function() {
          setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);
          if (anchor.bad || head.bad) cm.curOp.selectionChanged = true;
        });
      }
    },

    pollContent: function() {
      var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();
      var from = sel.from(), to = sel.to();
      if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false;

      var fromIndex;
      if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {
        var fromLine = lineNo(display.view[0].line);
        var fromNode = display.view[0].node;
      } else {
        var fromLine = lineNo(display.view[fromIndex].line);
        var fromNode = display.view[fromIndex - 1].node.nextSibling;
      }
      var toIndex = findViewIndex(cm, to.line);
      if (toIndex == display.view.length - 1) {
        var toLine = display.viewTo - 1;
        var toNode = display.lineDiv.lastChild;
      } else {
        var toLine = lineNo(display.view[toIndex + 1].line) - 1;
        var toNode = display.view[toIndex + 1].node.previousSibling;
      }

      var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));
      var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));
      while (newText.length > 1 && oldText.length > 1) {
        if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }
        else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }
        else break;
      }

      var cutFront = 0, cutEnd = 0;
      var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);
      while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))
        ++cutFront;
      var newBot = lst(newText), oldBot = lst(oldText);
      var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),
                               oldBot.length - (oldText.length == 1 ? cutFront : 0));
      while (cutEnd < maxCutEnd &&
             newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))
        ++cutEnd;

      newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd);
      newText[0] = newText[0].slice(cutFront);

      var chFrom = Pos(fromLine, cutFront);
      var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);
      if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {
        replaceRange(cm.doc, newText, chFrom, chTo, "+input");
        return true;
      }
    },

    ensurePolled: function() {
      this.forceCompositionEnd();
    },
    reset: function() {
      this.forceCompositionEnd();
    },
    forceCompositionEnd: function() {
      if (!this.composing || this.composing.handled) return;
      this.applyComposition(this.composing);
      this.composing.handled = true;
      this.div.blur();
      this.div.focus();
    },
    applyComposition: function(composing) {
      if (this.cm.isReadOnly())
        operation(this.cm, regChange)(this.cm)
      else if (composing.data && composing.data != composing.startData)
        operation(this.cm, applyTextInput)(this.cm, composing.data, 0, composing.sel);
    },

    setUneditable: function(node) {
      node.contentEditable = "false"
    },

    onKeyPress: function(e) {
      e.preventDefault();
      if (!this.cm.isReadOnly())
        operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);
    },

    readOnlyChanged: function(val) {
      this.div.contentEditable = String(val != "nocursor")
    },

    onContextMenu: nothing,
    resetPosition: nothing,

    needsContentAttribute: true
  }, ContentEditableInput.prototype);

  function posToDOM(cm, pos) {
    var view = findViewForLine(cm, pos.line);
    if (!view || view.hidden) return null;
    var line = getLine(cm.doc, pos.line);
    var info = mapFromLineView(view, line, pos.line);

    var order = getOrder(line), side = "left";
    if (order) {
      var partPos = getBidiPartAt(order, pos.ch);
      side = partPos % 2 ? "right" : "left";
    }
    var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);
    result.offset = result.collapse == "right" ? result.end : result.start;
    return result;
  }

  function badPos(pos, bad) { if (bad) pos.bad = true; return pos; }

  function domToPos(cm, node, offset) {
    var lineNode;
    if (node == cm.display.lineDiv) {
      lineNode = cm.display.lineDiv.childNodes[offset];
      if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);
      node = null; offset = 0;
    } else {
      for (lineNode = node;; lineNode = lineNode.parentNode) {
        if (!lineNode || lineNode == cm.display.lineDiv) return null;
        if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break;
      }
    }
    for (var i = 0; i < cm.display.view.length; i++) {
      var lineView = cm.display.view[i];
      if (lineView.node == lineNode)
        return locateNodeInLineView(lineView, node, offset);
    }
  }

  function locateNodeInLineView(lineView, node, offset) {
    var wrapper = lineView.text.firstChild, bad = false;
    if (!node || !contains(wrapper, node)) return badPos(Pos(lineNo(lineView.line), 0), true);
    if (node == wrapper) {
      bad = true;
      node = wrapper.childNodes[offset];
      offset = 0;
      if (!node) {
        var line = lineView.rest ? lst(lineView.rest) : lineView.line;
        return badPos(Pos(lineNo(line), line.text.length), bad);
      }
    }

    var textNode = node.nodeType == 3 ? node : null, topNode = node;
    if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {
      textNode = node.firstChild;
      if (offset) offset = textNode.nodeValue.length;
    }
    while (topNode.parentNode != wrapper) topNode = topNode.parentNode;
    var measure = lineView.measure, maps = measure.maps;

    function find(textNode, topNode, offset) {
      for (var i = -1; i < (maps ? maps.length : 0); i++) {
        var map = i < 0 ? measure.map : maps[i];
        for (var j = 0; j < map.length; j += 3) {
          var curNode = map[j + 2];
          if (curNode == textNode || curNode == topNode) {
            var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);
            var ch = map[j] + offset;
            if (offset < 0 || curNode != textNode) ch = map[j + (offset ? 1 : 0)];
            return Pos(line, ch);
          }
        }
      }
    }
    var found = find(textNode, topNode, offset);
    if (found) return badPos(found, bad);

    // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems
    for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {
      found = find(after, after.firstChild, 0);
      if (found)
        return badPos(Pos(found.line, found.ch - dist), bad);
      else
        dist += after.textContent.length;
    }
    for (var before = topNode.previousSibling, dist = offset; before; before = before.previousSibling) {
      found = find(before, before.firstChild, -1);
      if (found)
        return badPos(Pos(found.line, found.ch + dist), bad);
      else
        dist += before.textContent.length;
    }
  }

  function domTextBetween(cm, from, to, fromLine, toLine) {
    var text = "", closing = false, lineSep = cm.doc.lineSeparator();
    function recognizeMarker(id) { return function(marker) { return marker.id == id; }; }
    function walk(node) {
      if (node.nodeType == 1) {
        var cmText = node.getAttribute("cm-text");
        if (cmText != null) {
          if (cmText == "") cmText = node.textContent.replace(/\u200b/g, "");
          text += cmText;
          return;
        }
        var markerID = node.getAttribute("cm-marker"), range;
        if (markerID) {
          var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));
          if (found.length && (range = found[0].find()))
            text += getBetween(cm.doc, range.from, range.to).join(lineSep);
          return;
        }
        if (node.getAttribute("contenteditable") == "false") return;
        for (var i = 0; i < node.childNodes.length; i++)
          walk(node.childNodes[i]);
        if (/^(pre|div|p)$/i.test(node.nodeName))
          closing = true;
      } else if (node.nodeType == 3) {
        var val = node.nodeValue;
        if (!val) return;
        if (closing) {
          text += lineSep;
          closing = false;
        }
        text += val;
      }
    }
    for (;;) {
      walk(from);
      if (from == to) break;
      from = from.nextSibling;
    }
    return text;
  }

  CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput};

  // SELECTION / CURSOR

  // Selection objects are immutable. A new one is created every time
  // the selection changes. A selection is one or more non-overlapping
  // (and non-touching) ranges, sorted, and an integer that indicates
  // which one is the primary selection (the one that's scrolled into
  // view, that getCursor returns, etc).
  function Selection(ranges, primIndex) {
    this.ranges = ranges;
    this.primIndex = primIndex;
  }

  Selection.prototype = {
    primary: function() { return this.ranges[this.primIndex]; },
    equals: function(other) {
      if (other == this) return true;
      if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false;
      for (var i = 0; i < this.ranges.length; i++) {
        var here = this.ranges[i], there = other.ranges[i];
        if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false;
      }
      return true;
    },
    deepCopy: function() {
      for (var out = [], i = 0; i < this.ranges.length; i++)
        out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));
      return new Selection(out, this.primIndex);
    },
    somethingSelected: function() {
      for (var i = 0; i < this.ranges.length; i++)
        if (!this.ranges[i].empty()) return true;
      return false;
    },
    contains: function(pos, end) {
      if (!end) end = pos;
      for (var i = 0; i < this.ranges.length; i++) {
        var range = this.ranges[i];
        if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)
          return i;
      }
      return -1;
    }
  };

  function Range(anchor, head) {
    this.anchor = anchor; this.head = head;
  }

  Range.prototype = {
    from: function() { return minPos(this.anchor, this.head); },
    to: function() { return maxPos(this.anchor, this.head); },
    empty: function() {
      return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;
    }
  };

  // Take an unsorted, potentially overlapping set of ranges, and
  // build a selection out of it. 'Consumes' ranges array (modifying
  // it).
  function normalizeSelection(ranges, primIndex) {
    var prim = ranges[primIndex];
    ranges.sort(function(a, b) { return cmp(a.from(), b.from()); });
    primIndex = indexOf(ranges, prim);
    for (var i = 1; i < ranges.length; i++) {
      var cur = ranges[i], prev = ranges[i - 1];
      if (cmp(prev.to(), cur.from()) >= 0) {
        var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());
        var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;
        if (i <= primIndex) --primIndex;
        ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));
      }
    }
    return new Selection(ranges, primIndex);
  }

  function simpleSelection(anchor, head) {
    return new Selection([new Range(anchor, head || anchor)], 0);
  }

  // Most of the external API clips given positions to make sure they
  // actually exist within the document.
  function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));}
  function clipPos(doc, pos) {
    if (pos.line < doc.first) return Pos(doc.first, 0);
    var last = doc.first + doc.size - 1;
    if (pos.line > last) return Pos(last, getLine(doc, last).text.length);
    return clipToLen(pos, getLine(doc, pos.line).text.length);
  }
  function clipToLen(pos, linelen) {
    var ch = pos.ch;
    if (ch == null || ch > linelen) return Pos(pos.line, linelen);
    else if (ch < 0) return Pos(pos.line, 0);
    else return pos;
  }
  function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;}
  function clipPosArray(doc, array) {
    for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]);
    return out;
  }

  // SELECTION UPDATES

  // The 'scroll' parameter given to many of these indicated whether
  // the new cursor position should be scrolled into view after
  // modifying the selection.

  // If shift is held or the extend flag is set, extends a range to
  // include a given position (and optionally a second position).
  // Otherwise, simply returns the range between the given positions.
  // Used for cursor motion and such.
  function extendRange(doc, range, head, other) {
    if (doc.cm && doc.cm.display.shift || doc.extend) {
      var anchor = range.anchor;
      if (other) {
        var posBefore = cmp(head, anchor) < 0;
        if (posBefore != (cmp(other, anchor) < 0)) {
          anchor = head;
          head = other;
        } else if (posBefore != (cmp(head, other) < 0)) {
          head = other;
        }
      }
      return new Range(anchor, head);
    } else {
      return new Range(other || head, head);
    }
  }

  // Extend the primary selection range, discard the rest.
  function extendSelection(doc, head, other, options) {
    setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options);
  }

  // Extend all selections (pos is an array of selections with length
  // equal the number of selections)
  function extendSelections(doc, heads, options) {
    for (var out = [], i = 0; i < doc.sel.ranges.length; i++)
      out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null);
    var newSel = normalizeSelection(out, doc.sel.primIndex);
    setSelection(doc, newSel, options);
  }

  // Updates a single range in the selection.
  function replaceOneSelection(doc, i, range, options) {
    var ranges = doc.sel.ranges.slice(0);
    ranges[i] = range;
    setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);
  }

  // Reset the selection to a single range.
  function setSimpleSelection(doc, anchor, head, options) {
    setSelection(doc, simpleSelection(anchor, head), options);
  }

  // Give beforeSelectionChange handlers a change to influence a
  // selection update.
  function filterSelectionChange(doc, sel, options) {
    var obj = {
      ranges: sel.ranges,
      update: function(ranges) {
        this.ranges = [];
        for (var i = 0; i < ranges.length; i++)
          this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),
                                     clipPos(doc, ranges[i].head));
      },
      origin: options && options.origin
    };
    signal(doc, "beforeSelectionChange", doc, obj);
    if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj);
    if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1);
    else return sel;
  }

  function setSelectionReplaceHistory(doc, sel, options) {
    var done = doc.history.done, last = lst(done);
    if (last && last.ranges) {
      done[done.length - 1] = sel;
      setSelectionNoUndo(doc, sel, options);
    } else {
      setSelection(doc, sel, options);
    }
  }

  // Set a new selection.
  function setSelection(doc, sel, options) {
    setSelectionNoUndo(doc, sel, options);
    addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);
  }

  function setSelectionNoUndo(doc, sel, options) {
    if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange"))
      sel = filterSelectionChange(doc, sel, options);

    var bias = options && options.bias ||
      (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);
    setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));

    if (!(options && options.scroll === false) && doc.cm)
      ensureCursorVisible(doc.cm);
  }

  function setSelectionInner(doc, sel) {
    if (sel.equals(doc.sel)) return;

    doc.sel = sel;

    if (doc.cm) {
      doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;
      signalCursorActivity(doc.cm);
    }
    signalLater(doc, "cursorActivity", doc);
  }

  // Verify that the selection does not partially select any atomic
  // marked ranges.
  function reCheckSelection(doc) {
    setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll);
  }

  // Return a selection that does not partially select any atomic
  // ranges.
  function skipAtomicInSelection(doc, sel, bias, mayClear) {
    var out;
    for (var i = 0; i < sel.ranges.length; i++) {
      var range = sel.ranges[i];
      var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];
      var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);
      var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);
      if (out || newAnchor != range.anchor || newHead != range.head) {
        if (!out) out = sel.ranges.slice(0, i);
        out[i] = new Range(newAnchor, newHead);
      }
    }
    return out ? normalizeSelection(out, sel.primIndex) : sel;
  }

  function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {
    var line = getLine(doc, pos.line);
    if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) {
      var sp = line.markedSpans[i], m = sp.marker;
      if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&
          (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {
        if (mayClear) {
          signal(m, "beforeCursorEnter");
          if (m.explicitlyCleared) {
            if (!line.markedSpans) break;
            else {--i; continue;}
          }
        }
        if (!m.atomic) continue;

        if (oldPos) {
          var near = m.find(dir < 0 ? 1 : -1), diff;
          if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)
            near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);
          if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))
            return skipAtomicInner(doc, near, pos, dir, mayClear);
        }

        var far = m.find(dir < 0 ? -1 : 1);
        if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)
          far = movePos(doc, far, dir, far.line == pos.line ? line : null);
        return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;
      }
    }
    return pos;
  }

  // Ensure a given position is not inside an atomic range.
  function skipAtomic(doc, pos, oldPos, bias, mayClear) {
    var dir = bias || 1;
    var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||
        (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||
        skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||
        (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));
    if (!found) {
      doc.cantEdit = true;
      return Pos(doc.first, 0);
    }
    return found;
  }

  function movePos(doc, pos, dir, line) {
    if (dir < 0 && pos.ch == 0) {
      if (pos.line > doc.first) return clipPos(doc, Pos(pos.line - 1));
      else return null;
    } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {
      if (pos.line < doc.first + doc.size - 1) return Pos(pos.line + 1, 0);
      else return null;
    } else {
      return new Pos(pos.line, pos.ch + dir);
    }
  }

  // SELECTION DRAWING

  function updateSelection(cm) {
    cm.display.input.showSelection(cm.display.input.prepareSelection());
  }

  function prepareSelection(cm, primary) {
    var doc = cm.doc, result = {};
    var curFragment = result.cursors = document.createDocumentFragment();
    var selFragment = result.selection = document.createDocumentFragment();

    for (var i = 0; i < doc.sel.ranges.length; i++) {
      if (primary === false && i == doc.sel.primIndex) continue;
      var range = doc.sel.ranges[i];
      if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue;
      var collapsed = range.empty();
      if (collapsed || cm.options.showCursorWhenSelecting)
        drawSelectionCursor(cm, range.head, curFragment);
      if (!collapsed)
        drawSelectionRange(cm, range, selFragment);
    }
    return result;
  }

  // Draws a cursor for the given range
  function drawSelectionCursor(cm, head, output) {
    var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine);

    var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor"));
    cursor.style.left = pos.left + "px";
    cursor.style.top = pos.top + "px";
    cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px";

    if (pos.other) {
      // Secondary cursor, shown when on a 'jump' in bi-directional text
      var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor"));
      otherCursor.style.display = "";
      otherCursor.style.left = pos.other.left + "px";
      otherCursor.style.top = pos.other.top + "px";
      otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px";
    }
  }

  // Draws the given range as a highlighted selection
  function drawSelectionRange(cm, range, output) {
    var display = cm.display, doc = cm.doc;
    var fragment = document.createDocumentFragment();
    var padding = paddingH(cm.display), leftSide = padding.left;
    var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;

    function add(left, top, width, bottom) {
      if (top < 0) top = 0;
      top = Math.round(top);
      bottom = Math.round(bottom);
      fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left +
                               "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) +
                               "px; height: " + (bottom - top) + "px"));
    }

    function drawForLine(line, fromArg, toArg) {
      var lineObj = getLine(doc, line);
      var lineLen = lineObj.text.length;
      var start, end;
      function coords(ch, bias) {
        return charCoords(cm, Pos(line, ch), "div", lineObj, bias);
      }

      iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) {
        var leftPos = coords(from, "left"), rightPos, left, right;
        if (from == to) {
          rightPos = leftPos;
          left = right = leftPos.left;
        } else {
          rightPos = coords(to - 1, "right");
          if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }
          left = leftPos.left;
          right = rightPos.right;
        }
        if (fromArg == null && from == 0) left = leftSide;
        if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part
          add(left, leftPos.top, null, leftPos.bottom);
          left = leftSide;
          if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top);
        }
        if (toArg == null && to == lineLen) right = rightSide;
        if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)
          start = leftPos;
        if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)
          end = rightPos;
        if (left < leftSide + 1) left = leftSide;
        add(left, rightPos.top, right - left, rightPos.bottom);
      });
      return {start: start, end: end};
    }

    var sFrom = range.from(), sTo = range.to();
    if (sFrom.line == sTo.line) {
      drawForLine(sFrom.line, sFrom.ch, sTo.ch);
    } else {
      var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);
      var singleVLine = visualLine(fromLine) == visualLine(toLine);
      var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;
      var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;
      if (singleVLine) {
        if (leftEnd.top < rightStart.top - 2) {
          add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);
          add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);
        } else {
          add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);
        }
      }
      if (leftEnd.bottom < rightStart.top)
        add(leftSide, leftEnd.bottom, null, rightStart.top);
    }

    output.appendChild(fragment);
  }

  // Cursor-blinking
  function restartBlink(cm) {
    if (!cm.state.focused) return;
    var display = cm.display;
    clearInterval(display.blinker);
    var on = true;
    display.cursorDiv.style.visibility = "";
    if (cm.options.cursorBlinkRate > 0)
      display.blinker = setInterval(function() {
        display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden";
      }, cm.options.cursorBlinkRate);
    else if (cm.options.cursorBlinkRate < 0)
      display.cursorDiv.style.visibility = "hidden";
  }

  // HIGHLIGHT WORKER

  function startWorker(cm, time) {
    if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo)
      cm.state.highlight.set(time, bind(highlightWorker, cm));
  }

  function highlightWorker(cm) {
    var doc = cm.doc;
    if (doc.frontier < doc.first) doc.frontier = doc.first;
    if (doc.frontier >= cm.display.viewTo) return;
    var end = +new Date + cm.options.workTime;
    var state = copyState(doc.mode, getStateBefore(cm, doc.frontier));
    var changedLines = [];

    doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {
      if (doc.frontier >= cm.display.viewFrom) { // Visible
        var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength;
        var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true);
        line.styles = highlighted.styles;
        var oldCls = line.styleClasses, newCls = highlighted.classes;
        if (newCls) line.styleClasses = newCls;
        else if (oldCls) line.styleClasses = null;
        var ischange = !oldStyles || oldStyles.length != line.styles.length ||
          oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);
        for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];
        if (ischange) changedLines.push(doc.frontier);
        line.stateAfter = tooLong ? state : copyState(doc.mode, state);
      } else {
        if (line.text.length <= cm.options.maxHighlightLength)
          processLine(cm, line.text, state);
        line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;
      }
      ++doc.frontier;
      if (+new Date > end) {
        startWorker(cm, cm.options.workDelay);
        return true;
      }
    });
    if (changedLines.length) runInOp(cm, function() {
      for (var i = 0; i < changedLines.length; i++)
        regLineChange(cm, changedLines[i], "text");
    });
  }

  // Finds the line to start with when starting a parse. Tries to
  // find a line with a stateAfter, so that it can start with a
  // valid state. If that fails, it returns the line with the
  // smallest indentation, which tends to need the least context to
  // parse correctly.
  function findStartLine(cm, n, precise) {
    var minindent, minline, doc = cm.doc;
    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);
    for (var search = n; search > lim; --search) {
      if (search <= doc.first) return doc.first;
      var line = getLine(doc, search - 1);
      if (line.stateAfter && (!precise || search <= doc.frontier)) return search;
      var indented = countColumn(line.text, null, cm.options.tabSize);
      if (minline == null || minindent > indented) {
        minline = search - 1;
        minindent = indented;
      }
    }
    return minline;
  }

  function getStateBefore(cm, n, precise) {
    var doc = cm.doc, display = cm.display;
    if (!doc.mode.startState) return true;
    var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;
    if (!state) state = startState(doc.mode);
    else state = copyState(doc.mode, state);
    doc.iter(pos, n, function(line) {
      processLine(cm, line.text, state);
      var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo;
      line.stateAfter = save ? copyState(doc.mode, state) : null;
      ++pos;
    });
    if (precise) doc.frontier = pos;
    return state;
  }

  // POSITION MEASUREMENT

  function paddingTop(display) {return display.lineSpace.offsetTop;}
  function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;}
  function paddingH(display) {
    if (display.cachedPaddingH) return display.cachedPaddingH;
    var e = removeChildrenAndAdd(display.measure, elt("pre", "x"));
    var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;
    var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};
    if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data;
    return data;
  }

  function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth; }
  function displayWidth(cm) {
    return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;
  }
  function displayHeight(cm) {
    return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;
  }

  // Ensure the lineView.wrapping.heights array is populated. This is
  // an array of bottom offsets for the lines that make up a drawn
  // line. When lineWrapping is on, there might be more than one
  // height.
  function ensureLineHeights(cm, lineView, rect) {
    var wrapping = cm.options.lineWrapping;
    var curWidth = wrapping && displayWidth(cm);
    if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {
      var heights = lineView.measure.heights = [];
      if (wrapping) {
        lineView.measure.width = curWidth;
        var rects = lineView.text.firstChild.getClientRects();
        for (var i = 0; i < rects.length - 1; i++) {
          var cur = rects[i], next = rects[i + 1];
          if (Math.abs(cur.bottom - next.bottom) > 2)
            heights.push((cur.bottom + next.top) / 2 - rect.top);
        }
      }
      heights.push(rect.bottom - rect.top);
    }
  }

  // Find a line map (mapping character offsets to text nodes) and a
  // measurement cache for the given line number. (A line view might
  // contain multiple lines when collapsed ranges are present.)
  function mapFromLineView(lineView, line, lineN) {
    if (lineView.line == line)
      return {map: lineView.measure.map, cache: lineView.measure.cache};
    for (var i = 0; i < lineView.rest.length; i++)
      if (lineView.rest[i] == line)
        return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]};
    for (var i = 0; i < lineView.rest.length; i++)
      if (lineNo(lineView.rest[i]) > lineN)
        return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true};
  }

  // Render a line into the hidden node display.externalMeasured. Used
  // when measurement is needed for a line that's not in the viewport.
  function updateExternalMeasurement(cm, line) {
    line = visualLine(line);
    var lineN = lineNo(line);
    var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);
    view.lineN = lineN;
    var built = view.built = buildLineContent(cm, view);
    view.text = built.pre;
    removeChildrenAndAdd(cm.display.lineMeasure, built.pre);
    return view;
  }

  // Get a {top, bottom, left, right} box (in line-local coordinates)
  // for a given character.
  function measureChar(cm, line, ch, bias) {
    return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);
  }

  // Find a line view that corresponds to the given line number.
  function findViewForLine(cm, lineN) {
    if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)
      return cm.display.view[findViewIndex(cm, lineN)];
    var ext = cm.display.externalMeasured;
    if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)
      return ext;
  }

  // Measurement can be split in two steps, the set-up work that
  // applies to the whole line, and the measurement of the actual
  // character. Functions like coordsChar, that need to do a lot of
  // measurements in a row, can thus ensure that the set-up work is
  // only done once.
  function prepareMeasureForLine(cm, line) {
    var lineN = lineNo(line);
    var view = findViewForLine(cm, lineN);
    if (view && !view.text) {
      view = null;
    } else if (view && view.changes) {
      updateLineForChanges(cm, view, lineN, getDimensions(cm));
      cm.curOp.forceUpdate = true;
    }
    if (!view)
      view = updateExternalMeasurement(cm, line);

    var info = mapFromLineView(view, line, lineN);
    return {
      line: line, view: view, rect: null,
      map: info.map, cache: info.cache, before: info.before,
      hasHeights: false
    };
  }

  // Given a prepared measurement object, measures the position of an
  // actual character (or fetches it from the cache).
  function measureCharPrepared(cm, prepared, ch, bias, varHeight) {
    if (prepared.before) ch = -1;
    var key = ch + (bias || ""), found;
    if (prepared.cache.hasOwnProperty(key)) {
      found = prepared.cache[key];
    } else {
      if (!prepared.rect)
        prepared.rect = prepared.view.text.getBoundingClientRect();
      if (!prepared.hasHeights) {
        ensureLineHeights(cm, prepared.view, prepared.rect);
        prepared.hasHeights = true;
      }
      found = measureCharInner(cm, prepared, ch, bias);
      if (!found.bogus) prepared.cache[key] = found;
    }
    return {left: found.left, right: found.right,
            top: varHeight ? found.rtop : found.top,
            bottom: varHeight ? found.rbottom : found.bottom};
  }

  var nullRect = {left: 0, right: 0, top: 0, bottom: 0};

  function nodeAndOffsetInLineMap(map, ch, bias) {
    var node, start, end, collapse;
    // First, search the line map for the text node corresponding to,
    // or closest to, the target character.
    for (var i = 0; i < map.length; i += 3) {
      var mStart = map[i], mEnd = map[i + 1];
      if (ch < mStart) {
        start = 0; end = 1;
        collapse = "left";
      } else if (ch < mEnd) {
        start = ch - mStart;
        end = start + 1;
      } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {
        end = mEnd - mStart;
        start = end - 1;
        if (ch >= mEnd) collapse = "right";
      }
      if (start != null) {
        node = map[i + 2];
        if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right"))
          collapse = bias;
        if (bias == "left" && start == 0)
          while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {
            node = map[(i -= 3) + 2];
            collapse = "left";
          }
        if (bias == "right" && start == mEnd - mStart)
          while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {
            node = map[(i += 3) + 2];
            collapse = "right";
          }
        break;
      }
    }
    return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd};
  }

  function getUsefulRect(rects, bias) {
    var rect = nullRect
    if (bias == "left") for (var i = 0; i < rects.length; i++) {
      if ((rect = rects[i]).left != rect.right) break
    } else for (var i = rects.length - 1; i >= 0; i--) {
      if ((rect = rects[i]).left != rect.right) break
    }
    return rect
  }

  function measureCharInner(cm, prepared, ch, bias) {
    var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);
    var node = place.node, start = place.start, end = place.end, collapse = place.collapse;

    var rect;
    if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.
      for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned
        while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start;
        while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end;
        if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)
          rect = node.parentNode.getBoundingClientRect();
        else
          rect = getUsefulRect(range(node, start, end).getClientRects(), bias)
        if (rect.left || rect.right || start == 0) break;
        end = start;
        start = start - 1;
        collapse = "right";
      }
      if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect);
    } else { // If it is a widget, simply get the box for the whole widget.
      if (start > 0) collapse = bias = "right";
      var rects;
      if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)
        rect = rects[bias == "right" ? rects.length - 1 : 0];
      else
        rect = node.getBoundingClientRect();
    }
    if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {
      var rSpan = node.parentNode.getClientRects()[0];
      if (rSpan)
        rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom};
      else
        rect = nullRect;
    }

    var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;
    var mid = (rtop + rbot) / 2;
    var heights = prepared.view.measure.heights;
    for (var i = 0; i < heights.length - 1; i++)
      if (mid < heights[i]) break;
    var top = i ? heights[i - 1] : 0, bot = heights[i];
    var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left,
                  right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left,
                  top: top, bottom: bot};
    if (!rect.left && !rect.right) result.bogus = true;
    if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }

    return result;
  }

  // Work around problem with bounding client rects on ranges being
  // returned incorrectly when zoomed on IE10 and below.
  function maybeUpdateRectForZooming(measure, rect) {
    if (!window.screen || screen.logicalXDPI == null ||
        screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))
      return rect;
    var scaleX = screen.logicalXDPI / screen.deviceXDPI;
    var scaleY = screen.logicalYDPI / screen.deviceYDPI;
    return {left: rect.left * scaleX, right: rect.right * scaleX,
            top: rect.top * scaleY, bottom: rect.bottom * scaleY};
  }

  function clearLineMeasurementCacheFor(lineView) {
    if (lineView.measure) {
      lineView.measure.cache = {};
      lineView.measure.heights = null;
      if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)
        lineView.measure.caches[i] = {};
    }
  }

  function clearLineMeasurementCache(cm) {
    cm.display.externalMeasure = null;
    removeChildren(cm.display.lineMeasure);
    for (var i = 0; i < cm.display.view.length; i++)
      clearLineMeasurementCacheFor(cm.display.view[i]);
  }

  function clearCaches(cm) {
    clearLineMeasurementCache(cm);
    cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;
    if (!cm.options.lineWrapping) cm.display.maxLineChanged = true;
    cm.display.lineNumChars = null;
  }

  function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; }
  function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; }

  // Converts a {top, bottom, left, right} box from line-local
  // coordinates into another coordinate system. Context may be one of
  // "line", "div" (display.lineDiv), "local"/null (editor), "window",
  // or "page".
  function intoCoordSystem(cm, lineObj, rect, context) {
    if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) {
      var size = widgetHeight(lineObj.widgets[i]);
      rect.top += size; rect.bottom += size;
    }
    if (context == "line") return rect;
    if (!context) context = "local";
    var yOff = heightAtLine(lineObj);
    if (context == "local") yOff += paddingTop(cm.display);
    else yOff -= cm.display.viewOffset;
    if (context == "page" || context == "window") {
      var lOff = cm.display.lineSpace.getBoundingClientRect();
      yOff += lOff.top + (context == "window" ? 0 : pageScrollY());
      var xOff = lOff.left + (context == "window" ? 0 : pageScrollX());
      rect.left += xOff; rect.right += xOff;
    }
    rect.top += yOff; rect.bottom += yOff;
    return rect;
  }

  // Coverts a box from "div" coords to another coordinate system.
  // Context may be "window", "page", "div", or "local"/null.
  function fromCoordSystem(cm, coords, context) {
    if (context == "div") return coords;
    var left = coords.left, top = coords.top;
    // First move into "page" coordinate system
    if (context == "page") {
      left -= pageScrollX();
      top -= pageScrollY();
    } else if (context == "local" || !context) {
      var localBox = cm.display.sizer.getBoundingClientRect();
      left += localBox.left;
      top += localBox.top;
    }

    var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();
    return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top};
  }

  function charCoords(cm, pos, context, lineObj, bias) {
    if (!lineObj) lineObj = getLine(cm.doc, pos.line);
    return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);
  }

  // Returns a box for a given cursor position, which may have an
  // 'other' property containing the position of the secondary cursor
  // on a bidi boundary.
  function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {
    lineObj = lineObj || getLine(cm.doc, pos.line);
    if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj);
    function get(ch, right) {
      var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight);
      if (right) m.left = m.right; else m.right = m.left;
      return intoCoordSystem(cm, lineObj, m, context);
    }
    function getBidi(ch, partPos) {
      var part = order[partPos], right = part.level % 2;
      if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) {
        part = order[--partPos];
        ch = bidiRight(part) - (part.level % 2 ? 0 : 1);
        right = true;
      } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) {
        part = order[++partPos];
        ch = bidiLeft(part) - part.level % 2;
        right = false;
      }
      if (right && ch == part.to && ch > part.from) return get(ch - 1);
      return get(ch, right);
    }
    var order = getOrder(lineObj), ch = pos.ch;
    if (!order) return get(ch);
    var partPos = getBidiPartAt(order, ch);
    var val = getBidi(ch, partPos);
    if (bidiOther != null) val.other = getBidi(ch, bidiOther);
    return val;
  }

  // Used to cheaply estimate the coordinates for a position. Used for
  // intermediate scroll updates.
  function estimateCoords(cm, pos) {
    var left = 0, pos = clipPos(cm.doc, pos);
    if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch;
    var lineObj = getLine(cm.doc, pos.line);
    var top = heightAtLine(lineObj) + paddingTop(cm.display);
    return {left: left, right: left, top: top, bottom: top + lineObj.height};
  }

  // Positions returned by coordsChar contain some extra information.
  // xRel is the relative x position of the input coordinates compared
  // to the found position (so xRel > 0 means the coordinates are to
  // the right of the character position, for example). When outside
  // is true, that means the coordinates lie outside the line's
  // vertical range.
  function PosWithInfo(line, ch, outside, xRel) {
    var pos = Pos(line, ch);
    pos.xRel = xRel;
    if (outside) pos.outside = true;
    return pos;
  }

  // Compute the character position closest to the given coordinates.
  // Input must be lineSpace-local ("div" coordinate system).
  function coordsChar(cm, x, y) {
    var doc = cm.doc;
    y += cm.display.viewOffset;
    if (y < 0) return PosWithInfo(doc.first, 0, true, -1);
    var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;
    if (lineN > last)
      return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1);
    if (x < 0) x = 0;

    var lineObj = getLine(doc, lineN);
    for (;;) {
      var found = coordsCharInner(cm, lineObj, lineN, x, y);
      var merged = collapsedSpanAtEnd(lineObj);
      var mergedPos = merged && merged.find(0, true);
      if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))
        lineN = lineNo(lineObj = mergedPos.to.line);
      else
        return found;
    }
  }

  function coordsCharInner(cm, lineObj, lineNo, x, y) {
    var innerOff = y - heightAtLine(lineObj);
    var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth;
    var preparedMeasure = prepareMeasureForLine(cm, lineObj);

    function getX(ch) {
      var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure);
      wrongLine = true;
      if (innerOff > sp.bottom) return sp.left - adjust;
      else if (innerOff < sp.top) return sp.left + adjust;
      else wrongLine = false;
      return sp.left;
    }

    var bidi = getOrder(lineObj), dist = lineObj.text.length;
    var from = lineLeft(lineObj), to = lineRight(lineObj);
    var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine;

    if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1);
    // Do a binary search between these bounds.
    for (;;) {
      if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) {
        var ch = x < fromX || x - fromX <= toX - x ? from : to;
        var outside = ch == from ? fromOutside : toOutside
        var xDiff = x - (ch == from ? fromX : toX);
        // This is a kludge to handle the case where the coordinates
        // are after a line-wrapped line. We should replace it with a
        // more general handling of cursor positions around line
        // breaks. (Issue #4078)
        if (toOutside && !bidi && !/\s/.test(lineObj.text.charAt(ch)) && xDiff > 0 &&
            ch < lineObj.text.length && preparedMeasure.view.measure.heights.length > 1) {
          var charSize = measureCharPrepared(cm, preparedMeasure, ch, "right");
          if (innerOff <= charSize.bottom && innerOff >= charSize.top && Math.abs(x - charSize.right) < xDiff) {
            outside = false
            ch++
            xDiff = x - charSize.right
          }
        }
        while (isExtendingChar(lineObj.text.charAt(ch))) ++ch;
        var pos = PosWithInfo(lineNo, ch, outside, xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0);
        return pos;
      }
      var step = Math.ceil(dist / 2), middle = from + step;
      if (bidi) {
        middle = from;
        for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1);
      }
      var middleX = getX(middle);
      if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;}
      else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;}
    }
  }

  var measureText;
  // Compute the default text height.
  function textHeight(display) {
    if (display.cachedTextHeight != null) return display.cachedTextHeight;
    if (measureText == null) {
      measureText = elt("pre");
      // Measure a bunch of lines, for browsers that compute
      // fractional heights.
      for (var i = 0; i < 49; ++i) {
        measureText.appendChild(document.createTextNode("x"));
        measureText.appendChild(elt("br"));
      }
      measureText.appendChild(document.createTextNode("x"));
    }
    removeChildrenAndAdd(display.measure, measureText);
    var height = measureText.offsetHeight / 50;
    if (height > 3) display.cachedTextHeight = height;
    removeChildren(display.measure);
    return height || 1;
  }

  // Compute the default character width.
  function charWidth(display) {
    if (display.cachedCharWidth != null) return display.cachedCharWidth;
    var anchor = elt("span", "xxxxxxxxxx");
    var pre = elt("pre", [anchor]);
    removeChildrenAndAdd(display.measure, pre);
    var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;
    if (width > 2) display.cachedCharWidth = width;
    return width || 10;
  }

  // OPERATIONS

  // Operations are used to wrap a series of changes to the editor
  // state in such a way that each change won't have to update the
  // cursor and display (which would be awkward, slow, and
  // error-prone). Instead, display updates are batched and then all
  // combined and executed at once.

  var operationGroup = null;

  var nextOpId = 0;
  // Start a new operation.
  function startOperation(cm) {
    cm.curOp = {
      cm: cm,
      viewChanged: false,      // Flag that indicates that lines might need to be redrawn
      startHeight: cm.doc.height, // Used to detect need to update scrollbar
      forceUpdate: false,      // Used to force a redraw
      updateInput: null,       // Whether to reset the input textarea
      typing: false,           // Whether this reset should be careful to leave existing text (for compositing)
      changeObjs: null,        // Accumulated changes, for firing change events
      cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on
      cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already
      selectionChanged: false, // Whether the selection needs to be redrawn
      updateMaxLine: false,    // Set when the widest line needs to be determined anew
      scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet
      scrollToPos: null,       // Used to scroll to a specific position
      focus: false,
      id: ++nextOpId           // Unique ID
    };
    if (operationGroup) {
      operationGroup.ops.push(cm.curOp);
    } else {
      cm.curOp.ownsGroup = operationGroup = {
        ops: [cm.curOp],
        delayedCallbacks: []
      };
    }
  }

  function fireCallbacksForOps(group) {
    // Calls delayed callbacks and cursorActivity handlers until no
    // new ones appear
    var callbacks = group.delayedCallbacks, i = 0;
    do {
      for (; i < callbacks.length; i++)
        callbacks[i].call(null);
      for (var j = 0; j < group.ops.length; j++) {
        var op = group.ops[j];
        if (op.cursorActivityHandlers)
          while (op.cursorActivityCalled < op.cursorActivityHandlers.length)
            op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);
      }
    } while (i < callbacks.length);
  }

  // Finish an operation, updating the display and signalling delayed events
  function endOperation(cm) {
    var op = cm.curOp, group = op.ownsGroup;
    if (!group) return;

    try { fireCallbacksForOps(group); }
    finally {
      operationGroup = null;
      for (var i = 0; i < group.ops.length; i++)
        group.ops[i].cm.curOp = null;
      endOperations(group);
    }
  }

  // The DOM updates done when an operation finishes are batched so
  // that the minimum number of relayouts are required.
  function endOperations(group) {
    var ops = group.ops;
    for (var i = 0; i < ops.length; i++) // Read DOM
      endOperation_R1(ops[i]);
    for (var i = 0; i < ops.length; i++) // Write DOM (maybe)
      endOperation_W1(ops[i]);
    for (var i = 0; i < ops.length; i++) // Read DOM
      endOperation_R2(ops[i]);
    for (var i = 0; i < ops.length; i++) // Write DOM (maybe)
      endOperation_W2(ops[i]);
    for (var i = 0; i < ops.length; i++) // Read DOM
      endOperation_finish(ops[i]);
  }

  function endOperation_R1(op) {
    var cm = op.cm, display = cm.display;
    maybeClipScrollbars(cm);
    if (op.updateMaxLine) findMaxLine(cm);

    op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||
      op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||
                         op.scrollToPos.to.line >= display.viewTo) ||
      display.maxLineChanged && cm.options.lineWrapping;
    op.update = op.mustUpdate &&
      new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);
  }

  function endOperation_W1(op) {
    op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);
  }

  function endOperation_R2(op) {
    var cm = op.cm, display = cm.display;
    if (op.updatedDisplay) updateHeightsInViewport(cm);

    op.barMeasure = measureForScrollbars(cm);

    // If the max line changed since it was last measured, measure it,
    // and ensure the document's width matches it.
    // updateDisplay_W2 will use these properties to do the actual resizing
    if (display.maxLineChanged && !cm.options.lineWrapping) {
      op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;
      cm.display.sizerWidth = op.adjustWidthTo;
      op.barMeasure.scrollWidth =
        Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);
      op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));
    }

    if (op.updatedDisplay || op.selectionChanged)
      op.preparedSelection = display.input.prepareSelection(op.focus);
  }

  function endOperation_W2(op) {
    var cm = op.cm;

    if (op.adjustWidthTo != null) {
      cm.display.sizer.style.minWidth = op.adjustWidthTo + "px";
      if (op.maxScrollLeft < cm.doc.scrollLeft)
        setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);
      cm.display.maxLineChanged = false;
    }

    var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus())
    if (op.preparedSelection)
      cm.display.input.showSelection(op.preparedSelection, takeFocus);
    if (op.updatedDisplay || op.startHeight != cm.doc.height)
      updateScrollbars(cm, op.barMeasure);
    if (op.updatedDisplay)
      setDocumentHeight(cm, op.barMeasure);

    if (op.selectionChanged) restartBlink(cm);

    if (cm.state.focused && op.updateInput)
      cm.display.input.reset(op.typing);
    if (takeFocus) ensureFocus(op.cm);
  }

  function endOperation_finish(op) {
    var cm = op.cm, display = cm.display, doc = cm.doc;

    if (op.updatedDisplay) postUpdateDisplay(cm, op.update);

    // Abort mouse wheel delta measurement, when scrolling explicitly
    if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))
      display.wheelStartX = display.wheelStartY = null;

    // Propagate the scroll position to the actual DOM scroller
    if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) {
      doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));
      display.scrollbars.setScrollTop(doc.scrollTop);
      display.scroller.scrollTop = doc.scrollTop;
    }
    if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) {
      doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft));
      display.scrollbars.setScrollLeft(doc.scrollLeft);
      display.scroller.scrollLeft = doc.scrollLeft;
      alignHorizontally(cm);
    }
    // If we need to scroll a specific position into view, do so.
    if (op.scrollToPos) {
      var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),
                                     clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);
      if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords);
    }

    // Fire events for markers that are hidden/unidden by editing or
    // undoing
    var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;
    if (hidden) for (var i = 0; i < hidden.length; ++i)
      if (!hidden[i].lines.length) signal(hidden[i], "hide");
    if (unhidden) for (var i = 0; i < unhidden.length; ++i)
      if (unhidden[i].lines.length) signal(unhidden[i], "unhide");

    if (display.wrapper.offsetHeight)
      doc.scrollTop = cm.display.scroller.scrollTop;

    // Fire change events, and delayed event handlers
    if (op.changeObjs)
      signal(cm, "changes", cm, op.changeObjs);
    if (op.update)
      op.update.finish();
  }

  // Run the given function in an operation
  function runInOp(cm, f) {
    if (cm.curOp) return f();
    startOperation(cm);
    try { return f(); }
    finally { endOperation(cm); }
  }
  // Wraps a function in an operation. Returns the wrapped function.
  function operation(cm, f) {
    return function() {
      if (cm.curOp) return f.apply(cm, arguments);
      startOperation(cm);
      try { return f.apply(cm, arguments); }
      finally { endOperation(cm); }
    };
  }
  // Used to add methods to editor and doc instances, wrapping them in
  // operations.
  function methodOp(f) {
    return function() {
      if (this.curOp) return f.apply(this, arguments);
      startOperation(this);
      try { return f.apply(this, arguments); }
      finally { endOperation(this); }
    };
  }
  function docMethodOp(f) {
    return function() {
      var cm = this.cm;
      if (!cm || cm.curOp) return f.apply(this, arguments);
      startOperation(cm);
      try { return f.apply(this, arguments); }
      finally { endOperation(cm); }
    };
  }

  // VIEW TRACKING

  // These objects are used to represent the visible (currently drawn)
  // part of the document. A LineView may correspond to multiple
  // logical lines, if those are connected by collapsed ranges.
  function LineView(doc, line, lineN) {
    // The starting line
    this.line = line;
    // Continuing lines, if any
    this.rest = visualLineContinued(line);
    // Number of logical lines in this visual line
    this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;
    this.node = this.text = null;
    this.hidden = lineIsHidden(doc, line);
  }

  // Create a range of LineView objects for the given lines.
  function buildViewArray(cm, from, to) {
    var array = [], nextPos;
    for (var pos = from; pos < to; pos = nextPos) {
      var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);
      nextPos = pos + view.size;
      array.push(view);
    }
    return array;
  }

  // Updates the display.view data structure for a given change to the
  // document. From and to are in pre-change coordinates. Lendiff is
  // the amount of lines added or subtracted by the change. This is
  // used for changes that span multiple lines, or change the way
  // lines are divided into visual lines. regLineChange (below)
  // registers single-line changes.
  function regChange(cm, from, to, lendiff) {
    if (from == null) from = cm.doc.first;
    if (to == null) to = cm.doc.first + cm.doc.size;
    if (!lendiff) lendiff = 0;

    var display = cm.display;
    if (lendiff && to < display.viewTo &&
        (display.updateLineNumbers == null || display.updateLineNumbers > from))
      display.updateLineNumbers = from;

    cm.curOp.viewChanged = true;

    if (from >= display.viewTo) { // Change after
      if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)
        resetView(cm);
    } else if (to <= display.viewFrom) { // Change before
      if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {
        resetView(cm);
      } else {
        display.viewFrom += lendiff;
        display.viewTo += lendiff;
      }
    } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap
      resetView(cm);
    } else if (from <= display.viewFrom) { // Top overlap
      var cut = viewCuttingPoint(cm, to, to + lendiff, 1);
      if (cut) {
        display.view = display.view.slice(cut.index);
        display.viewFrom = cut.lineN;
        display.viewTo += lendiff;
      } else {
        resetView(cm);
      }
    } else if (to >= display.viewTo) { // Bottom overlap
      var cut = viewCuttingPoint(cm, from, from, -1);
      if (cut) {
        display.view = display.view.slice(0, cut.index);
        display.viewTo = cut.lineN;
      } else {
        resetView(cm);
      }
    } else { // Gap in the middle
      var cutTop = viewCuttingPoint(cm, from, from, -1);
      var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);
      if (cutTop && cutBot) {
        display.view = display.view.slice(0, cutTop.index)
          .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))
          .concat(display.view.slice(cutBot.index));
        display.viewTo += lendiff;
      } else {
        resetView(cm);
      }
    }

    var ext = display.externalMeasured;
    if (ext) {
      if (to < ext.lineN)
        ext.lineN += lendiff;
      else if (from < ext.lineN + ext.size)
        display.externalMeasured = null;
    }
  }

  // Register a change to a single line. Type must be one of "text",
  // "gutter", "class", "widget"
  function regLineChange(cm, line, type) {
    cm.curOp.viewChanged = true;
    var display = cm.display, ext = cm.display.externalMeasured;
    if (ext && line >= ext.lineN && line < ext.lineN + ext.size)
      display.externalMeasured = null;

    if (line < display.viewFrom || line >= display.viewTo) return;
    var lineView = display.view[findViewIndex(cm, line)];
    if (lineView.node == null) return;
    var arr = lineView.changes || (lineView.changes = []);
    if (indexOf(arr, type) == -1) arr.push(type);
  }

  // Clear the view.
  function resetView(cm) {
    cm.display.viewFrom = cm.display.viewTo = cm.doc.first;
    cm.display.view = [];
    cm.display.viewOffset = 0;
  }

  // Find the view element corresponding to a given line. Return null
  // when the line isn't visible.
  function findViewIndex(cm, n) {
    if (n >= cm.display.viewTo) return null;
    n -= cm.display.viewFrom;
    if (n < 0) return null;
    var view = cm.display.view;
    for (var i = 0; i < view.length; i++) {
      n -= view[i].size;
      if (n < 0) return i;
    }
  }

  function viewCuttingPoint(cm, oldN, newN, dir) {
    var index = findViewIndex(cm, oldN), diff, view = cm.display.view;
    if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)
      return {index: index, lineN: newN};
    for (var i = 0, n = cm.display.viewFrom; i < index; i++)
      n += view[i].size;
    if (n != oldN) {
      if (dir > 0) {
        if (index == view.length - 1) return null;
        diff = (n + view[index].size) - oldN;
        index++;
      } else {
        diff = n - oldN;
      }
      oldN += diff; newN += diff;
    }
    while (visualLineNo(cm.doc, newN) != newN) {
      if (index == (dir < 0 ? 0 : view.length - 1)) return null;
      newN += dir * view[index - (dir < 0 ? 1 : 0)].size;
      index += dir;
    }
    return {index: index, lineN: newN};
  }

  // Force the view to cover a given range, adding empty view element
  // or clipping off existing ones as needed.
  function adjustView(cm, from, to) {
    var display = cm.display, view = display.view;
    if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {
      display.view = buildViewArray(cm, from, to);
      display.viewFrom = from;
    } else {
      if (display.viewFrom > from)
        display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);
      else if (display.viewFrom < from)
        display.view = display.view.slice(findViewIndex(cm, from));
      display.viewFrom = from;
      if (display.viewTo < to)
        display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));
      else if (display.viewTo > to)
        display.view = display.view.slice(0, findViewIndex(cm, to));
    }
    display.viewTo = to;
  }

  // Count the number of lines in the view whose DOM representation is
  // out of date (or nonexistent).
  function countDirtyView(cm) {
    var view = cm.display.view, dirty = 0;
    for (var i = 0; i < view.length; i++) {
      var lineView = view[i];
      if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty;
    }
    return dirty;
  }

  // EVENT HANDLERS

  // Attach the necessary event handlers when initializing the editor
  function registerEventHandlers(cm) {
    var d = cm.display;
    on(d.scroller, "mousedown", operation(cm, onMouseDown));
    // Older IE's will not fire a second mousedown for a double click
    if (ie && ie_version < 11)
      on(d.scroller, "dblclick", operation(cm, function(e) {
        if (signalDOMEvent(cm, e)) return;
        var pos = posFromMouse(cm, e);
        if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return;
        e_preventDefault(e);
        var word = cm.findWordAt(pos);
        extendSelection(cm.doc, word.anchor, word.head);
      }));
    else
      on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); });
    // Some browsers fire contextmenu *after* opening the menu, at
    // which point we can't mess with it anymore. Context menu is
    // handled in onMouseDown for these browsers.
    if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);});

    // Used to suppress mouse event handling when a touch happens
    var touchFinished, prevTouch = {end: 0};
    function finishTouch() {
      if (d.activeTouch) {
        touchFinished = setTimeout(function() {d.activeTouch = null;}, 1000);
        prevTouch = d.activeTouch;
        prevTouch.end = +new Date;
      }
    };
    function isMouseLikeTouchEvent(e) {
      if (e.touches.length != 1) return false;
      var touch = e.touches[0];
      return touch.radiusX <= 1 && touch.radiusY <= 1;
    }
    function farAway(touch, other) {
      if (other.left == null) return true;
      var dx = other.left - touch.left, dy = other.top - touch.top;
      return dx * dx + dy * dy > 20 * 20;
    }
    on(d.scroller, "touchstart", function(e) {
      if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) {
        clearTimeout(touchFinished);
        var now = +new Date;
        d.activeTouch = {start: now, moved: false,
                         prev: now - prevTouch.end <= 300 ? prevTouch : null};
        if (e.touches.length == 1) {
          d.activeTouch.left = e.touches[0].pageX;
          d.activeTouch.top = e.touches[0].pageY;
        }
      }
    });
    on(d.scroller, "touchmove", function() {
      if (d.activeTouch) d.activeTouch.moved = true;
    });
    on(d.scroller, "touchend", function(e) {
      var touch = d.activeTouch;
      if (touch && !eventInWidget(d, e) && touch.left != null &&
          !touch.moved && new Date - touch.start < 300) {
        var pos = cm.coordsChar(d.activeTouch, "page"), range;
        if (!touch.prev || farAway(touch, touch.prev)) // Single tap
          range = new Range(pos, pos);
        else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap
          range = cm.findWordAt(pos);
        else // Triple tap
          range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));
        cm.setSelection(range.anchor, range.head);
        cm.focus();
        e_preventDefault(e);
      }
      finishTouch();
    });
    on(d.scroller, "touchcancel", finishTouch);

    // Sync scrolling between fake scrollbars and real scrollable
    // area, ensure viewport is updated when scrolling.
    on(d.scroller, "scroll", function() {
      if (d.scroller.clientHeight) {
        setScrollTop(cm, d.scroller.scrollTop);
        setScrollLeft(cm, d.scroller.scrollLeft, true);
        signal(cm, "scroll", cm);
      }
    });

    // Listen to wheel events in order to try and update the viewport on time.
    on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);});
    on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);});

    // Prevent wrapper from ever scrolling
    on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });

    d.dragFunctions = {
      enter: function(e) {if (!signalDOMEvent(cm, e)) e_stop(e);},
      over: function(e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},
      start: function(e){onDragStart(cm, e);},
      drop: operation(cm, onDrop),
      leave: function(e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}
    };

    var inp = d.input.getField();
    on(inp, "keyup", function(e) { onKeyUp.call(cm, e); });
    on(inp, "keydown", operation(cm, onKeyDown));
    on(inp, "keypress", operation(cm, onKeyPress));
    on(inp, "focus", bind(onFocus, cm));
    on(inp, "blur", bind(onBlur, cm));
  }

  function dragDropChanged(cm, value, old) {
    var wasOn = old && old != CodeMirror.Init;
    if (!value != !wasOn) {
      var funcs = cm.display.dragFunctions;
      var toggle = value ? on : off;
      toggle(cm.display.scroller, "dragstart", funcs.start);
      toggle(cm.display.scroller, "dragenter", funcs.enter);
      toggle(cm.display.scroller, "dragover", funcs.over);
      toggle(cm.display.scroller, "dragleave", funcs.leave);
      toggle(cm.display.scroller, "drop", funcs.drop);
    }
  }

  // Called when the window resizes
  function onResize(cm) {
    var d = cm.display;
    if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth)
      return;
    // Might be a text scaling operation, clear size caches.
    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;
    d.scrollbarsClipped = false;
    cm.setSize();
  }

  // MOUSE EVENTS

  // Return true when the given mouse event happened in a widget
  function eventInWidget(display, e) {
    for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {
      if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") ||
          (n.parentNode == display.sizer && n != display.mover))
        return true;
    }
  }

  // Given a mouse event, find the corresponding position. If liberal
  // is false, it checks whether a gutter or scrollbar was clicked,
  // and returns null if it was. forRect is used by rectangular
  // selections, and tries to estimate a character position even for
  // coordinates beyond the right of the text.
  function posFromMouse(cm, e, liberal, forRect) {
    var display = cm.display;
    if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") return null;

    var x, y, space = display.lineSpace.getBoundingClientRect();
    // Fails unpredictably on IE[67] when mouse is dragged around quickly.
    try { x = e.clientX - space.left; y = e.clientY - space.top; }
    catch (e) { return null; }
    var coords = coordsChar(cm, x, y), line;
    if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {
      var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;
      coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));
    }
    return coords;
  }

  // A mouse down can be a single click, double click, triple click,
  // start of selection drag, start of text drag, new cursor
  // (ctrl-click), rectangle drag (alt-drag), or xwin
  // middle-click-paste. Or it might be a click on something we should
  // not interfere with, such as a scrollbar or widget.
  function onMouseDown(e) {
    var cm = this, display = cm.display;
    if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) return;
    display.shift = e.shiftKey;

    if (eventInWidget(display, e)) {
      if (!webkit) {
        // Briefly turn off draggability, to allow widgets to do
        // normal dragging things.
        display.scroller.draggable = false;
        setTimeout(function(){display.scroller.draggable = true;}, 100);
      }
      return;
    }
    if (clickInGutter(cm, e)) return;
    var start = posFromMouse(cm, e);
    window.focus();

    switch (e_button(e)) {
    case 1:
      // #3261: make sure, that we're not starting a second selection
      if (cm.state.selectingText)
        cm.state.selectingText(e);
      else if (start)
        leftButtonDown(cm, e, start);
      else if (e_target(e) == display.scroller)
        e_preventDefault(e);
      break;
    case 2:
      if (webkit) cm.state.lastMiddleDown = +new Date;
      if (start) extendSelection(cm.doc, start);
      setTimeout(function() {display.input.focus();}, 20);
      e_preventDefault(e);
      break;
    case 3:
      if (captureRightClick) onContextMenu(cm, e);
      else delayBlurEvent(cm);
      break;
    }
  }

  var lastClick, lastDoubleClick;
  function leftButtonDown(cm, e, start) {
    if (ie) setTimeout(bind(ensureFocus, cm), 0);
    else cm.curOp.focus = activeElt();

    var now = +new Date, type;
    if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) {
      type = "triple";
    } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) {
      type = "double";
      lastDoubleClick = {time: now, pos: start};
    } else {
      type = "single";
      lastClick = {time: now, pos: start};
    }

    var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained;
    if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&
        type == "single" && (contained = sel.contains(start)) > -1 &&
        (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) &&
        (cmp(contained.to(), start) > 0 || start.xRel < 0))
      leftButtonStartDrag(cm, e, start, modifier);
    else
      leftButtonSelect(cm, e, start, type, modifier);
  }

  // Start a text drag. When it ends, see if any dragging actually
  // happen, and treat as a click if it didn't.
  function leftButtonStartDrag(cm, e, start, modifier) {
    var display = cm.display, startTime = +new Date;
    var dragEnd = operation(cm, function(e2) {
      if (webkit) display.scroller.draggable = false;
      cm.state.draggingText = false;
      off(document, "mouseup", dragEnd);
      off(display.scroller, "drop", dragEnd);
      if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) {
        e_preventDefault(e2);
        if (!modifier && +new Date - 200 < startTime)
          extendSelection(cm.doc, start);
        // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)
        if (webkit || ie && ie_version == 9)
          setTimeout(function() {document.body.focus(); display.input.focus();}, 20);
        else
          display.input.focus();
      }
    });
    // Let the drag handler handle this.
    if (webkit) display.scroller.draggable = true;
    cm.state.draggingText = dragEnd;
    dragEnd.copy = mac ? e.altKey : e.ctrlKey
    // IE's approach to draggable
    if (display.scroller.dragDrop) display.scroller.dragDrop();
    on(document, "mouseup", dragEnd);
    on(display.scroller, "drop", dragEnd);
  }

  // Normal selection, as opposed to text dragging.
  function leftButtonSelect(cm, e, start, type, addNew) {
    var display = cm.display, doc = cm.doc;
    e_preventDefault(e);

    var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;
    if (addNew && !e.shiftKey) {
      ourIndex = doc.sel.contains(start);
      if (ourIndex > -1)
        ourRange = ranges[ourIndex];
      else
        ourRange = new Range(start, start);
    } else {
      ourRange = doc.sel.primary();
      ourIndex = doc.sel.primIndex;
    }

    if (chromeOS ? e.shiftKey && e.metaKey : e.altKey) {
      type = "rect";
      if (!addNew) ourRange = new Range(start, start);
      start = posFromMouse(cm, e, true, true);
      ourIndex = -1;
    } else if (type == "double") {
      var word = cm.findWordAt(start);
      if (cm.display.shift || doc.extend)
        ourRange = extendRange(doc, ourRange, word.anchor, word.head);
      else
        ourRange = word;
    } else if (type == "triple") {
      var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0)));
      if (cm.display.shift || doc.extend)
        ourRange = extendRange(doc, ourRange, line.anchor, line.head);
      else
        ourRange = line;
    } else {
      ourRange = extendRange(doc, ourRange, start);
    }

    if (!addNew) {
      ourIndex = 0;
      setSelection(doc, new Selection([ourRange], 0), sel_mouse);
      startSel = doc.sel;
    } else if (ourIndex == -1) {
      ourIndex = ranges.length;
      setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),
                   {scroll: false, origin: "*mouse"});
    } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == "single" && !e.shiftKey) {
      setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
                   {scroll: false, origin: "*mouse"});
      startSel = doc.sel;
    } else {
      replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);
    }

    var lastPos = start;
    function extendTo(pos) {
      if (cmp(lastPos, pos) == 0) return;
      lastPos = pos;

      if (type == "rect") {
        var ranges = [], tabSize = cm.options.tabSize;
        var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);
        var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);
        var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);
        for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));
             line <= end; line++) {
          var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);
          if (left == right)
            ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));
          else if (text.length > leftPos)
            ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));
        }
        if (!ranges.length) ranges.push(new Range(start, start));
        setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
                     {origin: "*mouse", scroll: false});
        cm.scrollIntoView(pos);
      } else {
        var oldRange = ourRange;
        var anchor = oldRange.anchor, head = pos;
        if (type != "single") {
          if (type == "double")
            var range = cm.findWordAt(pos);
          else
            var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0)));
          if (cmp(range.anchor, anchor) > 0) {
            head = range.head;
            anchor = minPos(oldRange.from(), range.anchor);
          } else {
            head = range.anchor;
            anchor = maxPos(oldRange.to(), range.head);
          }
        }
        var ranges = startSel.ranges.slice(0);
        ranges[ourIndex] = new Range(clipPos(doc, anchor), head);
        setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse);
      }
    }

    var editorSize = display.wrapper.getBoundingClientRect();
    // Used to ensure timeout re-tries don't fire when another extend
    // happened in the meantime (clearTimeout isn't reliable -- at
    // least on Chrome, the timeouts still happen even when cleared,
    // if the clear happens after their scheduled firing time).
    var counter = 0;

    function extend(e) {
      var curCount = ++counter;
      var cur = posFromMouse(cm, e, true, type == "rect");
      if (!cur) return;
      if (cmp(cur, lastPos) != 0) {
        cm.curOp.focus = activeElt();
        extendTo(cur);
        var visible = visibleLines(display, doc);
        if (cur.line >= visible.to || cur.line < visible.from)
          setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150);
      } else {
        var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;
        if (outside) setTimeout(operation(cm, function() {
          if (counter != curCount) return;
          display.scroller.scrollTop += outside;
          extend(e);
        }), 50);
      }
    }

    function done(e) {
      cm.state.selectingText = false;
      counter = Infinity;
      e_preventDefault(e);
      display.input.focus();
      off(document, "mousemove", move);
      off(document, "mouseup", up);
      doc.history.lastSelOrigin = null;
    }

    var move = operation(cm, function(e) {
      if (!e_button(e)) done(e);
      else extend(e);
    });
    var up = operation(cm, done);
    cm.state.selectingText = up;
    on(document, "mousemove", move);
    on(document, "mouseup", up);
  }

  // Determines whether an event happened in the gutter, and fires the
  // handlers for the corresponding event.
  function gutterEvent(cm, e, type, prevent) {
    try { var mX = e.clientX, mY = e.clientY; }
    catch(e) { return false; }
    if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false;
    if (prevent) e_preventDefault(e);

    var display = cm.display;
    var lineBox = display.lineDiv.getBoundingClientRect();

    if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e);
    mY -= lineBox.top - display.viewOffset;

    for (var i = 0; i < cm.options.gutters.length; ++i) {
      var g = display.gutters.childNodes[i];
      if (g && g.getBoundingClientRect().right >= mX) {
        var line = lineAtHeight(cm.doc, mY);
        var gutter = cm.options.gutters[i];
        signal(cm, type, cm, line, gutter, e);
        return e_defaultPrevented(e);
      }
    }
  }

  function clickInGutter(cm, e) {
    return gutterEvent(cm, e, "gutterClick", true);
  }

  // Kludge to work around strange IE behavior where it'll sometimes
  // re-fire a series of drag-related events right after the drop (#1551)
  var lastDrop = 0;

  function onDrop(e) {
    var cm = this;
    clearDragCursor(cm);
    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))
      return;
    e_preventDefault(e);
    if (ie) lastDrop = +new Date;
    var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;
    if (!pos || cm.isReadOnly()) return;
    // Might be a file drop, in which case we simply extract the text
    // and insert it.
    if (files && files.length && window.FileReader && window.File) {
      var n = files.length, text = Array(n), read = 0;
      var loadFile = function(file, i) {
        if (cm.options.allowDropFileTypes &&
            indexOf(cm.options.allowDropFileTypes, file.type) == -1)
          return;

        var reader = new FileReader;
        reader.onload = operation(cm, function() {
          var content = reader.result;
          if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) content = "";
          text[i] = content;
          if (++read == n) {
            pos = clipPos(cm.doc, pos);
            var change = {from: pos, to: pos,
                          text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),
                          origin: "paste"};
            makeChange(cm.doc, change);
            setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));
          }
        });
        reader.readAsText(file);
      };
      for (var i = 0; i < n; ++i) loadFile(files[i], i);
    } else { // Normal drop
      // Don't do a replace if the drop happened inside of the selected text.
      if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {
        cm.state.draggingText(e);
        // Ensure the editor is re-focused
        setTimeout(function() {cm.display.input.focus();}, 20);
        return;
      }
      try {
        var text = e.dataTransfer.getData("Text");
        if (text) {
          if (cm.state.draggingText && !cm.state.draggingText.copy)
            var selected = cm.listSelections();
          setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));
          if (selected) for (var i = 0; i < selected.length; ++i)
            replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag");
          cm.replaceSelection(text, "around", "paste");
          cm.display.input.focus();
        }
      }
      catch(e){}
    }
  }

  function onDragStart(cm, e) {
    if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; }
    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return;

    e.dataTransfer.setData("Text", cm.getSelection());
    e.dataTransfer.effectAllowed = "copyMove"

    // Use dummy image instead of default browsers image.
    // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.
    if (e.dataTransfer.setDragImage && !safari) {
      var img = elt("img", null, null, "position: fixed; left: 0; top: 0;");
      img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
      if (presto) {
        img.width = img.height = 1;
        cm.display.wrapper.appendChild(img);
        // Force a relayout, or Opera won't use our image for some obscure reason
        img._top = img.offsetTop;
      }
      e.dataTransfer.setDragImage(img, 0, 0);
      if (presto) img.parentNode.removeChild(img);
    }
  }

  function onDragOver(cm, e) {
    var pos = posFromMouse(cm, e);
    if (!pos) return;
    var frag = document.createDocumentFragment();
    drawSelectionCursor(cm, pos, frag);
    if (!cm.display.dragCursor) {
      cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors");
      cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);
    }
    removeChildrenAndAdd(cm.display.dragCursor, frag);
  }

  function clearDragCursor(cm) {
    if (cm.display.dragCursor) {
      cm.display.lineSpace.removeChild(cm.display.dragCursor);
      cm.display.dragCursor = null;
    }
  }

  // SCROLL EVENTS

  // Sync the scrollable area and scrollbars, ensure the viewport
  // covers the visible area.
  function setScrollTop(cm, val) {
    if (Math.abs(cm.doc.scrollTop - val) < 2) return;
    cm.doc.scrollTop = val;
    if (!gecko) updateDisplaySimple(cm, {top: val});
    if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val;
    cm.display.scrollbars.setScrollTop(val);
    if (gecko) updateDisplaySimple(cm);
    startWorker(cm, 100);
  }
  // Sync scroller and scrollbar, ensure the gutter elements are
  // aligned.
  function setScrollLeft(cm, val, isScroller) {
    if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return;
    val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);
    cm.doc.scrollLeft = val;
    alignHorizontally(cm);
    if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val;
    cm.display.scrollbars.setScrollLeft(val);
  }

  // Since the delta values reported on mouse wheel events are
  // unstandardized between browsers and even browser versions, and
  // generally horribly unpredictable, this code starts by measuring
  // the scroll effect that the first few mouse wheel events have,
  // and, from that, detects the way it can convert deltas to pixel
  // offsets afterwards.
  //
  // The reason we want to know the amount a wheel event will scroll
  // is that it gives us a chance to update the display before the
  // actual scrolling happens, reducing flickering.

  var wheelSamples = 0, wheelPixelsPerUnit = null;
  // Fill in a browser-detected starting value on browsers where we
  // know one. These don't have to be accurate -- the result of them
  // being wrong would just be a slight flicker on the first wheel
  // scroll (if it is large enough).
  if (ie) wheelPixelsPerUnit = -.53;
  else if (gecko) wheelPixelsPerUnit = 15;
  else if (chrome) wheelPixelsPerUnit = -.7;
  else if (safari) wheelPixelsPerUnit = -1/3;

  var wheelEventDelta = function(e) {
    var dx = e.wheelDeltaX, dy = e.wheelDeltaY;
    if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail;
    if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail;
    else if (dy == null) dy = e.wheelDelta;
    return {x: dx, y: dy};
  };
  CodeMirror.wheelEventPixels = function(e) {
    var delta = wheelEventDelta(e);
    delta.x *= wheelPixelsPerUnit;
    delta.y *= wheelPixelsPerUnit;
    return delta;
  };

  function onScrollWheel(cm, e) {
    var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;

    var display = cm.display, scroll = display.scroller;
    // Quit if there's nothing to scroll here
    var canScrollX = scroll.scrollWidth > scroll.clientWidth;
    var canScrollY = scroll.scrollHeight > scroll.clientHeight;
    if (!(dx && canScrollX || dy && canScrollY)) return;

    // Webkit browsers on OS X abort momentum scrolls when the target
    // of the scroll event is removed from the scrollable element.
    // This hack (see related code in patchDisplay) makes sure the
    // element is kept around.
    if (dy && mac && webkit) {
      outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {
        for (var i = 0; i < view.length; i++) {
          if (view[i].node == cur) {
            cm.display.currentWheelTarget = cur;
            break outer;
          }
        }
      }
    }

    // On some browsers, horizontal scrolling will cause redraws to
    // happen before the gutter has been realigned, causing it to
    // wriggle around in a most unseemly way. When we have an
    // estimated pixels/delta value, we just handle horizontal
    // scrolling entirely here. It'll be slightly off from native, but
    // better than glitching out.
    if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {
      if (dy && canScrollY)
        setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight)));
      setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth)));
      // Only prevent default scrolling if vertical scrolling is
      // actually possible. Otherwise, it causes vertical scroll
      // jitter on OSX trackpads when deltaX is small and deltaY
      // is large (issue #3579)
      if (!dy || (dy && canScrollY))
        e_preventDefault(e);
      display.wheelStartX = null; // Abort measurement, if in progress
      return;
    }

    // 'Project' the visible viewport to cover the area that is being
    // scrolled into view (if we know enough to estimate it).
    if (dy && wheelPixelsPerUnit != null) {
      var pixels = dy * wheelPixelsPerUnit;
      var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;
      if (pixels < 0) top = Math.max(0, top + pixels - 50);
      else bot = Math.min(cm.doc.height, bot + pixels + 50);
      updateDisplaySimple(cm, {top: top, bottom: bot});
    }

    if (wheelSamples < 20) {
      if (display.wheelStartX == null) {
        display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;
        display.wheelDX = dx; display.wheelDY = dy;
        setTimeout(function() {
          if (display.wheelStartX == null) return;
          var movedX = scroll.scrollLeft - display.wheelStartX;
          var movedY = scroll.scrollTop - display.wheelStartY;
          var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||
            (movedX && display.wheelDX && movedX / display.wheelDX);
          display.wheelStartX = display.wheelStartY = null;
          if (!sample) return;
          wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);
          ++wheelSamples;
        }, 200);
      } else {
        display.wheelDX += dx; display.wheelDY += dy;
      }
    }
  }

  // KEY EVENTS

  // Run a handler that was bound to a key.
  function doHandleBinding(cm, bound, dropShift) {
    if (typeof bound == "string") {
      bound = commands[bound];
      if (!bound) return false;
    }
    // Ensure previous input has been read, so that the handler sees a
    // consistent view of the document
    cm.display.input.ensurePolled();
    var prevShift = cm.display.shift, done = false;
    try {
      if (cm.isReadOnly()) cm.state.suppressEdits = true;
      if (dropShift) cm.display.shift = false;
      done = bound(cm) != Pass;
    } finally {
      cm.display.shift = prevShift;
      cm.state.suppressEdits = false;
    }
    return done;
  }

  function lookupKeyForEditor(cm, name, handle) {
    for (var i = 0; i < cm.state.keyMaps.length; i++) {
      var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);
      if (result) return result;
    }
    return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))
      || lookupKey(name, cm.options.keyMap, handle, cm);
  }

  var stopSeq = new Delayed;
  function dispatchKey(cm, name, e, handle) {
    var seq = cm.state.keySeq;
    if (seq) {
      if (isModifierKey(name)) return "handled";
      stopSeq.set(50, function() {
        if (cm.state.keySeq == seq) {
          cm.state.keySeq = null;
          cm.display.input.reset();
        }
      });
      name = seq + " " + name;
    }
    var result = lookupKeyForEditor(cm, name, handle);

    if (result == "multi")
      cm.state.keySeq = name;
    if (result == "handled")
      signalLater(cm, "keyHandled", cm, name, e);

    if (result == "handled" || result == "multi") {
      e_preventDefault(e);
      restartBlink(cm);
    }

    if (seq && !result && /\'$/.test(name)) {
      e_preventDefault(e);
      return true;
    }
    return !!result;
  }

  // Handle a key from the keydown event.
  function handleKeyBinding(cm, e) {
    var name = keyName(e, true);
    if (!name) return false;

    if (e.shiftKey && !cm.state.keySeq) {
      // First try to resolve full name (including 'Shift-'). Failing
      // that, see if there is a cursor-motion command (starting with
      // 'go') bound to the keyname without 'Shift-'.
      return dispatchKey(cm, "Shift-" + name, e, function(b) {return doHandleBinding(cm, b, true);})
          || dispatchKey(cm, name, e, function(b) {
               if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion)
                 return doHandleBinding(cm, b);
             });
    } else {
      return dispatchKey(cm, name, e, function(b) { return doHandleBinding(cm, b); });
    }
  }

  // Handle a key from the keypress event
  function handleCharBinding(cm, e, ch) {
    return dispatchKey(cm, "'" + ch + "'", e,
                       function(b) { return doHandleBinding(cm, b, true); });
  }

  var lastStoppedKey = null;
  function onKeyDown(e) {
    var cm = this;
    cm.curOp.focus = activeElt();
    if (signalDOMEvent(cm, e)) return;
    // IE does strange things with escape.
    if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false;
    var code = e.keyCode;
    cm.display.shift = code == 16 || e.shiftKey;
    var handled = handleKeyBinding(cm, e);
    if (presto) {
      lastStoppedKey = handled ? code : null;
      // Opera has no cut event... we try to at least catch the key combo
      if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))
        cm.replaceSelection("", null, "cut");
    }

    // Turn mouse into crosshair when Alt is held on Mac.
    if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className))
      showCrossHair(cm);
  }

  function showCrossHair(cm) {
    var lineDiv = cm.display.lineDiv;
    addClass(lineDiv, "CodeMirror-crosshair");

    function up(e) {
      if (e.keyCode == 18 || !e.altKey) {
        rmClass(lineDiv, "CodeMirror-crosshair");
        off(document, "keyup", up);
        off(document, "mouseover", up);
      }
    }
    on(document, "keyup", up);
    on(document, "mouseover", up);
  }

  function onKeyUp(e) {
    if (e.keyCode == 16) this.doc.sel.shift = false;
    signalDOMEvent(this, e);
  }

  function onKeyPress(e) {
    var cm = this;
    if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return;
    var keyCode = e.keyCode, charCode = e.charCode;
    if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;}
    if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) return;
    var ch = String.fromCharCode(charCode == null ? keyCode : charCode);
    if (handleCharBinding(cm, e, ch)) return;
    cm.display.input.onKeyPress(e);
  }

  // FOCUS/BLUR EVENTS

  function delayBlurEvent(cm) {
    cm.state.delayingBlurEvent = true;
    setTimeout(function() {
      if (cm.state.delayingBlurEvent) {
        cm.state.delayingBlurEvent = false;
        onBlur(cm);
      }
    }, 100);
  }

  function onFocus(cm) {
    if (cm.state.delayingBlurEvent) cm.state.delayingBlurEvent = false;

    if (cm.options.readOnly == "nocursor") return;
    if (!cm.state.focused) {
      signal(cm, "focus", cm);
      cm.state.focused = true;
      addClass(cm.display.wrapper, "CodeMirror-focused");
      // This test prevents this from firing when a context
      // menu is closed (since the input reset would kill the
      // select-all detection hack)
      if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {
        cm.display.input.reset();
        if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue #1730
      }
      cm.display.input.receivedFocus();
    }
    restartBlink(cm);
  }
  function onBlur(cm) {
    if (cm.state.delayingBlurEvent) return;

    if (cm.state.focused) {
      signal(cm, "blur", cm);
      cm.state.focused = false;
      rmClass(cm.display.wrapper, "CodeMirror-focused");
    }
    clearInterval(cm.display.blinker);
    setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150);
  }

  // CONTEXT MENU HANDLING

  // To make the context menu work, we need to briefly unhide the
  // textarea (making it as unobtrusive as possible) to let the
  // right-click take effect on it.
  function onContextMenu(cm, e) {
    if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) return;
    if (signalDOMEvent(cm, e, "contextmenu")) return;
    cm.display.input.onContextMenu(e);
  }

  function contextMenuInGutter(cm, e) {
    if (!hasHandler(cm, "gutterContextMenu")) return false;
    return gutterEvent(cm, e, "gutterContextMenu", false);
  }

  // UPDATING

  // Compute the position of the end of a change (its 'to' property
  // refers to the pre-change end).
  var changeEnd = CodeMirror.changeEnd = function(change) {
    if (!change.text) return change.to;
    return Pos(change.from.line + change.text.length - 1,
               lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));
  };

  // Adjust a position to refer to the post-change position of the
  // same text, or the end of the change if the change covers it.
  function adjustForChange(pos, change) {
    if (cmp(pos, change.from) < 0) return pos;
    if (cmp(pos, change.to) <= 0) return changeEnd(change);

    var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;
    if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch;
    return Pos(line, ch);
  }

  function computeSelAfterChange(doc, change) {
    var out = [];
    for (var i = 0; i < doc.sel.ranges.length; i++) {
      var range = doc.sel.ranges[i];
      out.push(new Range(adjustForChange(range.anchor, change),
                         adjustForChange(range.head, change)));
    }
    return normalizeSelection(out, doc.sel.primIndex);
  }

  function offsetPos(pos, old, nw) {
    if (pos.line == old.line)
      return Pos(nw.line, pos.ch - old.ch + nw.ch);
    else
      return Pos(nw.line + (pos.line - old.line), pos.ch);
  }

  // Used by replaceSelections to allow moving the selection to the
  // start or around the replaced test. Hint may be "start" or "around".
  function computeReplacedSel(doc, changes, hint) {
    var out = [];
    var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;
    for (var i = 0; i < changes.length; i++) {
      var change = changes[i];
      var from = offsetPos(change.from, oldPrev, newPrev);
      var to = offsetPos(changeEnd(change), oldPrev, newPrev);
      oldPrev = change.to;
      newPrev = to;
      if (hint == "around") {
        var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;
        out[i] = new Range(inv ? to : from, inv ? from : to);
      } else {
        out[i] = new Range(from, from);
      }
    }
    return new Selection(out, doc.sel.primIndex);
  }

  // Allow "beforeChange" event handlers to influence a change
  function filterChange(doc, change, update) {
    var obj = {
      canceled: false,
      from: change.from,
      to: change.to,
      text: change.text,
      origin: change.origin,
      cancel: function() { this.canceled = true; }
    };
    if (update) obj.update = function(from, to, text, origin) {
      if (from) this.from = clipPos(doc, from);
      if (to) this.to = clipPos(doc, to);
      if (text) this.text = text;
      if (origin !== undefined) this.origin = origin;
    };
    signal(doc, "beforeChange", doc, obj);
    if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj);

    if (obj.canceled) return null;
    return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin};
  }

  // Apply a change to a document, and add it to the document's
  // history, and propagating it to all linked documents.
  function makeChange(doc, change, ignoreReadOnly) {
    if (doc.cm) {
      if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);
      if (doc.cm.state.suppressEdits) return;
    }

    if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) {
      change = filterChange(doc, change, true);
      if (!change) return;
    }

    // Possibly split or suppress the update based on the presence
    // of read-only spans in its range.
    var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);
    if (split) {
      for (var i = split.length - 1; i >= 0; --i)
        makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text});
    } else {
      makeChangeInner(doc, change);
    }
  }

  function makeChangeInner(doc, change) {
    if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return;
    var selAfter = computeSelAfterChange(doc, change);
    addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);

    makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));
    var rebased = [];

    linkedDocs(doc, function(doc, sharedHist) {
      if (!sharedHist && indexOf(rebased, doc.history) == -1) {
        rebaseHist(doc.history, change);
        rebased.push(doc.history);
      }
      makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));
    });
  }

  // Revert a change stored in a document's history.
  function makeChangeFromHistory(doc, type, allowSelectionOnly) {
    if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) return;

    var hist = doc.history, event, selAfter = doc.sel;
    var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done;

    // Verify that there is a useable event (so that ctrl-z won't
    // needlessly clear selection events)
    for (var i = 0; i < source.length; i++) {
      event = source[i];
      if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)
        break;
    }
    if (i == source.length) return;
    hist.lastOrigin = hist.lastSelOrigin = null;

    for (;;) {
      event = source.pop();
      if (event.ranges) {
        pushSelectionToHistory(event, dest);
        if (allowSelectionOnly && !event.equals(doc.sel)) {
          setSelection(doc, event, {clearRedo: false});
          return;
        }
        selAfter = event;
      }
      else break;
    }

    // Build up a reverse change object to add to the opposite history
    // stack (redo when undoing, and vice versa).
    var antiChanges = [];
    pushSelectionToHistory(selAfter, dest);
    dest.push({changes: antiChanges, generation: hist.generation});
    hist.generation = event.generation || ++hist.maxGeneration;

    var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange");

    for (var i = event.changes.length - 1; i >= 0; --i) {
      var change = event.changes[i];
      change.origin = type;
      if (filter && !filterChange(doc, change, false)) {
        source.length = 0;
        return;
      }

      antiChanges.push(historyChangeFromChange(doc, change));

      var after = i ? computeSelAfterChange(doc, change) : lst(source);
      makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));
      if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)});
      var rebased = [];

      // Propagate to the linked documents
      linkedDocs(doc, function(doc, sharedHist) {
        if (!sharedHist && indexOf(rebased, doc.history) == -1) {
          rebaseHist(doc.history, change);
          rebased.push(doc.history);
        }
        makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));
      });
    }
  }

  // Sub-views need their line numbers shifted when text is added
  // above or below them in the parent document.
  function shiftDoc(doc, distance) {
    if (distance == 0) return;
    doc.first += distance;
    doc.sel = new Selection(map(doc.sel.ranges, function(range) {
      return new Range(Pos(range.anchor.line + distance, range.anchor.ch),
                       Pos(range.head.line + distance, range.head.ch));
    }), doc.sel.primIndex);
    if (doc.cm) {
      regChange(doc.cm, doc.first, doc.first - distance, distance);
      for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)
        regLineChange(doc.cm, l, "gutter");
    }
  }

  // More lower-level change function, handling only a single document
  // (not linked ones).
  function makeChangeSingleDoc(doc, change, selAfter, spans) {
    if (doc.cm && !doc.cm.curOp)
      return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);

    if (change.to.line < doc.first) {
      shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));
      return;
    }
    if (change.from.line > doc.lastLine()) return;

    // Clip the change to the size of this doc
    if (change.from.line < doc.first) {
      var shift = change.text.length - 1 - (doc.first - change.from.line);
      shiftDoc(doc, shift);
      change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),
                text: [lst(change.text)], origin: change.origin};
    }
    var last = doc.lastLine();
    if (change.to.line > last) {
      change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),
                text: [change.text[0]], origin: change.origin};
    }

    change.removed = getBetween(doc, change.from, change.to);

    if (!selAfter) selAfter = computeSelAfterChange(doc, change);
    if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans);
    else updateDoc(doc, change, spans);
    setSelectionNoUndo(doc, selAfter, sel_dontScroll);
  }

  // Handle the interaction of a change to a document with the editor
  // that this document is part of.
  function makeChangeSingleDocInEditor(cm, change, spans) {
    var doc = cm.doc, display = cm.display, from = change.from, to = change.to;

    var recomputeMaxLength = false, checkWidthStart = from.line;
    if (!cm.options.lineWrapping) {
      checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));
      doc.iter(checkWidthStart, to.line + 1, function(line) {
        if (line == display.maxLine) {
          recomputeMaxLength = true;
          return true;
        }
      });
    }

    if (doc.sel.contains(change.from, change.to) > -1)
      signalCursorActivity(cm);

    updateDoc(doc, change, spans, estimateHeight(cm));

    if (!cm.options.lineWrapping) {
      doc.iter(checkWidthStart, from.line + change.text.length, function(line) {
        var len = lineLength(line);
        if (len > display.maxLineLength) {
          display.maxLine = line;
          display.maxLineLength = len;
          display.maxLineChanged = true;
          recomputeMaxLength = false;
        }
      });
      if (recomputeMaxLength) cm.curOp.updateMaxLine = true;
    }

    // Adjust frontier, schedule worker
    doc.frontier = Math.min(doc.frontier, from.line);
    startWorker(cm, 400);

    var lendiff = change.text.length - (to.line - from.line) - 1;
    // Remember that these lines changed, for updating the display
    if (change.full)
      regChange(cm);
    else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))
      regLineChange(cm, from.line, "text");
    else
      regChange(cm, from.line, to.line + 1, lendiff);

    var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change");
    if (changeHandler || changesHandler) {
      var obj = {
        from: from, to: to,
        text: change.text,
        removed: change.removed,
        origin: change.origin
      };
      if (changeHandler) signalLater(cm, "change", cm, obj);
      if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);
    }
    cm.display.selForContextMenu = null;
  }

  function replaceRange(doc, code, from, to, origin) {
    if (!to) to = from;
    if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }
    if (typeof code == "string") code = doc.splitLines(code);
    makeChange(doc, {from: from, to: to, text: code, origin: origin});
  }

  // SCROLLING THINGS INTO VIEW

  // If an editor sits on the top or bottom of the window, partially
  // scrolled out of view, this ensures that the cursor is visible.
  function maybeScrollWindow(cm, coords) {
    if (signalDOMEvent(cm, "scrollCursorIntoView")) return;

    var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;
    if (coords.top + box.top < 0) doScroll = true;
    else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false;
    if (doScroll != null && !phantom) {
      var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " +
                           (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " +
                           (coords.bottom - coords.top + scrollGap(cm) + display.barHeight) + "px; left: " +
                           coords.left + "px; width: 2px;");
      cm.display.lineSpace.appendChild(scrollNode);
      scrollNode.scrollIntoView(doScroll);
      cm.display.lineSpace.removeChild(scrollNode);
    }
  }

  // Scroll a given position into view (immediately), verifying that
  // it actually became visible (as line heights are accurately
  // measured, the position of something may 'drift' during drawing).
  function scrollPosIntoView(cm, pos, end, margin) {
    if (margin == null) margin = 0;
    for (var limit = 0; limit < 5; limit++) {
      var changed = false, coords = cursorCoords(cm, pos);
      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);
      var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left),
                                         Math.min(coords.top, endCoords.top) - margin,
                                         Math.max(coords.left, endCoords.left),
                                         Math.max(coords.bottom, endCoords.bottom) + margin);
      var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;
      if (scrollPos.scrollTop != null) {
        setScrollTop(cm, scrollPos.scrollTop);
        if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true;
      }
      if (scrollPos.scrollLeft != null) {
        setScrollLeft(cm, scrollPos.scrollLeft);
        if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true;
      }
      if (!changed) break;
    }
    return coords;
  }

  // Scroll a given set of coordinates into view (immediately).
  function scrollIntoView(cm, x1, y1, x2, y2) {
    var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2);
    if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop);
    if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft);
  }

  // Calculate a new scroll position needed to scroll the given
  // rectangle into view. Returns an object with scrollTop and
  // scrollLeft properties. When these are undefined, the
  // vertical/horizontal position does not need to be adjusted.
  function calculateScrollPos(cm, x1, y1, x2, y2) {
    var display = cm.display, snapMargin = textHeight(cm.display);
    if (y1 < 0) y1 = 0;
    var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;
    var screen = displayHeight(cm), result = {};
    if (y2 - y1 > screen) y2 = y1 + screen;
    var docBottom = cm.doc.height + paddingVert(display);
    var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin;
    if (y1 < screentop) {
      result.scrollTop = atTop ? 0 : y1;
    } else if (y2 > screentop + screen) {
      var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen);
      if (newTop != screentop) result.scrollTop = newTop;
    }

    var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;
    var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);
    var tooWide = x2 - x1 > screenw;
    if (tooWide) x2 = x1 + screenw;
    if (x1 < 10)
      result.scrollLeft = 0;
    else if (x1 < screenleft)
      result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10));
    else if (x2 > screenw + screenleft - 3)
      result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw;
    return result;
  }

  // Store a relative adjustment to the scroll position in the current
  // operation (to be applied when the operation finishes).
  function addToScrollPos(cm, left, top) {
    if (left != null || top != null) resolveScrollToPos(cm);
    if (left != null)
      cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left;
    if (top != null)
      cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;
  }

  // Make sure that at the end of the operation the current cursor is
  // shown.
  function ensureCursorVisible(cm) {
    resolveScrollToPos(cm);
    var cur = cm.getCursor(), from = cur, to = cur;
    if (!cm.options.lineWrapping) {
      from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur;
      to = Pos(cur.line, cur.ch + 1);
    }
    cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true};
  }

  // When an operation has its scrollToPos property set, and another
  // scroll action is applied before the end of the operation, this
  // 'simulates' scrolling that position into view in a cheap way, so
  // that the effect of intermediate scroll commands is not ignored.
  function resolveScrollToPos(cm) {
    var range = cm.curOp.scrollToPos;
    if (range) {
      cm.curOp.scrollToPos = null;
      var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);
      var sPos = calculateScrollPos(cm, Math.min(from.left, to.left),
                                    Math.min(from.top, to.top) - range.margin,
                                    Math.max(from.right, to.right),
                                    Math.max(from.bottom, to.bottom) + range.margin);
      cm.scrollTo(sPos.scrollLeft, sPos.scrollTop);
    }
  }

  // API UTILITIES

  // Indent the given line. The how parameter can be "smart",
  // "add"/null, "subtract", or "prev". When aggressive is false
  // (typically set to true for forced single-line indents), empty
  // lines are not indented, and places where the mode returns Pass
  // are left alone.
  function indentLine(cm, n, how, aggressive) {
    var doc = cm.doc, state;
    if (how == null) how = "add";
    if (how == "smart") {
      // Fall back to "prev" when the mode doesn't have an indentation
      // method.
      if (!doc.mode.indent) how = "prev";
      else state = getStateBefore(cm, n);
    }

    var tabSize = cm.options.tabSize;
    var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);
    if (line.stateAfter) line.stateAfter = null;
    var curSpaceString = line.text.match(/^\s*/)[0], indentation;
    if (!aggressive && !/\S/.test(line.text)) {
      indentation = 0;
      how = "not";
    } else if (how == "smart") {
      indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);
      if (indentation == Pass || indentation > 150) {
        if (!aggressive) return;
        how = "prev";
      }
    }
    if (how == "prev") {
      if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize);
      else indentation = 0;
    } else if (how == "add") {
      indentation = curSpace + cm.options.indentUnit;
    } else if (how == "subtract") {
      indentation = curSpace - cm.options.indentUnit;
    } else if (typeof how == "number") {
      indentation = curSpace + how;
    }
    indentation = Math.max(0, indentation);

    var indentString = "", pos = 0;
    if (cm.options.indentWithTabs)
      for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";}
    if (pos < indentation) indentString += spaceStr(indentation - pos);

    if (indentString != curSpaceString) {
      replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input");
      line.stateAfter = null;
      return true;
    } else {
      // Ensure that, if the cursor was in the whitespace at the start
      // of the line, it is moved to the end of that space.
      for (var i = 0; i < doc.sel.ranges.length; i++) {
        var range = doc.sel.ranges[i];
        if (range.head.line == n && range.head.ch < curSpaceString.length) {
          var pos = Pos(n, curSpaceString.length);
          replaceOneSelection(doc, i, new Range(pos, pos));
          break;
        }
      }
    }
  }

  // Utility for applying a change to a line by handle or number,
  // returning the number and optionally registering the line as
  // changed.
  function changeLine(doc, handle, changeType, op) {
    var no = handle, line = handle;
    if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle));
    else no = lineNo(handle);
    if (no == null) return null;
    if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType);
    return line;
  }

  // Helper for deleting text near the selection(s), used to implement
  // backspace, delete, and similar functionality.
  function deleteNearSelection(cm, compute) {
    var ranges = cm.doc.sel.ranges, kill = [];
    // Build up a set of ranges to kill first, merging overlapping
    // ranges.
    for (var i = 0; i < ranges.length; i++) {
      var toKill = compute(ranges[i]);
      while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {
        var replaced = kill.pop();
        if (cmp(replaced.from, toKill.from) < 0) {
          toKill.from = replaced.from;
          break;
        }
      }
      kill.push(toKill);
    }
    // Next, remove those actual ranges.
    runInOp(cm, function() {
      for (var i = kill.length - 1; i >= 0; i--)
        replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete");
      ensureCursorVisible(cm);
    });
  }

  // Used for horizontal relative motion. Dir is -1 or 1 (left or
  // right), unit can be "char", "column" (like char, but doesn't
  // cross line boundaries), "word" (across next word), or "group" (to
  // the start of next group of word or non-word-non-whitespace
  // chars). The visually param controls whether, in right-to-left
  // text, direction 1 means to move towards the next index in the
  // string, or towards the character to the right of the current
  // position. The resulting position will have a hitSide=true
  // property if it reached the end of the document.
  function findPosH(doc, pos, dir, unit, visually) {
    var line = pos.line, ch = pos.ch, origDir = dir;
    var lineObj = getLine(doc, line);
    function findNextLine() {
      var l = line + dir;
      if (l < doc.first || l >= doc.first + doc.size) return false
      line = l;
      return lineObj = getLine(doc, l);
    }
    function moveOnce(boundToLine) {
      var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true);
      if (next == null) {
        if (!boundToLine && findNextLine()) {
          if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj);
          else ch = dir < 0 ? lineObj.text.length : 0;
        } else return false
      } else ch = next;
      return true;
    }

    if (unit == "char") {
      moveOnce()
    } else if (unit == "column") {
      moveOnce(true)
    } else if (unit == "word" || unit == "group") {
      var sawType = null, group = unit == "group";
      var helper = doc.cm && doc.cm.getHelper(pos, "wordChars");
      for (var first = true;; first = false) {
        if (dir < 0 && !moveOnce(!first)) break;
        var cur = lineObj.text.charAt(ch) || "\n";
        var type = isWordChar(cur, helper) ? "w"
          : group && cur == "\n" ? "n"
          : !group || /\s/.test(cur) ? null
          : "p";
        if (group && !first && !type) type = "s";
        if (sawType && sawType != type) {
          if (dir < 0) {dir = 1; moveOnce();}
          break;
        }

        if (type) sawType = type;
        if (dir > 0 && !moveOnce(!first)) break;
      }
    }
    var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true);
    if (!cmp(pos, result)) result.hitSide = true;
    return result;
  }

  // For relative vertical movement. Dir may be -1 or 1. Unit can be
  // "page" or "line". The resulting position will have a hitSide=true
  // property if it reached the end of the document.
  function findPosV(cm, pos, dir, unit) {
    var doc = cm.doc, x = pos.left, y;
    if (unit == "page") {
      var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);
      y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display));
    } else if (unit == "line") {
      y = dir > 0 ? pos.bottom + 3 : pos.top - 3;
    }
    for (;;) {
      var target = coordsChar(cm, x, y);
      if (!target.outside) break;
      if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; }
      y += dir * 5;
    }
    return target;
  }

  // EDITOR METHODS

  // The publicly visible API. Note that methodOp(f) means
  // 'wrap f in an operation, performed on its `this` parameter'.

  // This is not the complete set of editor methods. Most of the
  // methods defined on the Doc type are also injected into
  // CodeMirror.prototype, for backwards compatibility and
  // convenience.

  CodeMirror.prototype = {
    constructor: CodeMirror,
    focus: function(){window.focus(); this.display.input.focus();},

    setOption: function(option, value) {
      var options = this.options, old = options[option];
      if (options[option] == value && option != "mode") return;
      options[option] = value;
      if (optionHandlers.hasOwnProperty(option))
        operation(this, optionHandlers[option])(this, value, old);
    },

    getOption: function(option) {return this.options[option];},
    getDoc: function() {return this.doc;},

    addKeyMap: function(map, bottom) {
      this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map));
    },
    removeKeyMap: function(map) {
      var maps = this.state.keyMaps;
      for (var i = 0; i < maps.length; ++i)
        if (maps[i] == map || maps[i].name == map) {
          maps.splice(i, 1);
          return true;
        }
    },

    addOverlay: methodOp(function(spec, options) {
      var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);
      if (mode.startState) throw new Error("Overlays may not be stateful.");
      insertSorted(this.state.overlays,
                   {mode: mode, modeSpec: spec, opaque: options && options.opaque,
                    priority: (options && options.priority) || 0},
                   function(overlay) { return overlay.priority })
      this.state.modeGen++;
      regChange(this);
    }),
    removeOverlay: methodOp(function(spec) {
      var overlays = this.state.overlays;
      for (var i = 0; i < overlays.length; ++i) {
        var cur = overlays[i].modeSpec;
        if (cur == spec || typeof spec == "string" && cur.name == spec) {
          overlays.splice(i, 1);
          this.state.modeGen++;
          regChange(this);
          return;
        }
      }
    }),

    indentLine: methodOp(function(n, dir, aggressive) {
      if (typeof dir != "string" && typeof dir != "number") {
        if (dir == null) dir = this.options.smartIndent ? "smart" : "prev";
        else dir = dir ? "add" : "subtract";
      }
      if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive);
    }),
    indentSelection: methodOp(function(how) {
      var ranges = this.doc.sel.ranges, end = -1;
      for (var i = 0; i < ranges.length; i++) {
        var range = ranges[i];
        if (!range.empty()) {
          var from = range.from(), to = range.to();
          var start = Math.max(end, from.line);
          end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;
          for (var j = start; j < end; ++j)
            indentLine(this, j, how);
          var newRanges = this.doc.sel.ranges;
          if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)
            replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);
        } else if (range.head.line > end) {
          indentLine(this, range.head.line, how, true);
          end = range.head.line;
          if (i == this.doc.sel.primIndex) ensureCursorVisible(this);
        }
      }
    }),

    // Fetch the parser token for a given character. Useful for hacks
    // that want to inspect the mode state (say, for completion).
    getTokenAt: function(pos, precise) {
      return takeToken(this, pos, precise);
    },

    getLineTokens: function(line, precise) {
      return takeToken(this, Pos(line), precise, true);
    },

    getTokenTypeAt: function(pos) {
      pos = clipPos(this.doc, pos);
      var styles = getLineStyles(this, getLine(this.doc, pos.line));
      var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;
      var type;
      if (ch == 0) type = styles[2];
      else for (;;) {
        var mid = (before + after) >> 1;
        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid;
        else if (styles[mid * 2 + 1] < ch) before = mid + 1;
        else { type = styles[mid * 2 + 2]; break; }
      }
      var cut = type ? type.indexOf("cm-overlay ") : -1;
      return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);
    },

    getModeAt: function(pos) {
      var mode = this.doc.mode;
      if (!mode.innerMode) return mode;
      return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;
    },

    getHelper: function(pos, type) {
      return this.getHelpers(pos, type)[0];
    },

    getHelpers: function(pos, type) {
      var found = [];
      if (!helpers.hasOwnProperty(type)) return found;
      var help = helpers[type], mode = this.getModeAt(pos);
      if (typeof mode[type] == "string") {
        if (help[mode[type]]) found.push(help[mode[type]]);
      } else if (mode[type]) {
        for (var i = 0; i < mode[type].length; i++) {
          var val = help[mode[type][i]];
          if (val) found.push(val);
        }
      } else if (mode.helperType && help[mode.helperType]) {
        found.push(help[mode.helperType]);
      } else if (help[mode.name]) {
        found.push(help[mode.name]);
      }
      for (var i = 0; i < help._global.length; i++) {
        var cur = help._global[i];
        if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)
          found.push(cur.val);
      }
      return found;
    },

    getStateAfter: function(line, precise) {
      var doc = this.doc;
      line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);
      return getStateBefore(this, line + 1, precise);
    },

    cursorCoords: function(start, mode) {
      var pos, range = this.doc.sel.primary();
      if (start == null) pos = range.head;
      else if (typeof start == "object") pos = clipPos(this.doc, start);
      else pos = start ? range.from() : range.to();
      return cursorCoords(this, pos, mode || "page");
    },

    charCoords: function(pos, mode) {
      return charCoords(this, clipPos(this.doc, pos), mode || "page");
    },

    coordsChar: function(coords, mode) {
      coords = fromCoordSystem(this, coords, mode || "page");
      return coordsChar(this, coords.left, coords.top);
    },

    lineAtHeight: function(height, mode) {
      height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top;
      return lineAtHeight(this.doc, height + this.display.viewOffset);
    },
    heightAtLine: function(line, mode) {
      var end = false, lineObj;
      if (typeof line == "number") {
        var last = this.doc.first + this.doc.size - 1;
        if (line < this.doc.first) line = this.doc.first;
        else if (line > last) { line = last; end = true; }
        lineObj = getLine(this.doc, line);
      } else {
        lineObj = line;
      }
      return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top +
        (end ? this.doc.height - heightAtLine(lineObj) : 0);
    },

    defaultTextHeight: function() { return textHeight(this.display); },
    defaultCharWidth: function() { return charWidth(this.display); },

    setGutterMarker: methodOp(function(line, gutterID, value) {
      return changeLine(this.doc, line, "gutter", function(line) {
        var markers = line.gutterMarkers || (line.gutterMarkers = {});
        markers[gutterID] = value;
        if (!value && isEmpty(markers)) line.gutterMarkers = null;
        return true;
      });
    }),

    clearGutter: methodOp(function(gutterID) {
      var cm = this, doc = cm.doc, i = doc.first;
      doc.iter(function(line) {
        if (line.gutterMarkers && line.gutterMarkers[gutterID]) {
          line.gutterMarkers[gutterID] = null;
          regLineChange(cm, i, "gutter");
          if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null;
        }
        ++i;
      });
    }),

    lineInfo: function(line) {
      if (typeof line == "number") {
        if (!isLine(this.doc, line)) return null;
        var n = line;
        line = getLine(this.doc, line);
        if (!line) return null;
      } else {
        var n = lineNo(line);
        if (n == null) return null;
      }
      return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,
              textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,
              widgets: line.widgets};
    },

    getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};},

    addWidget: function(pos, node, scroll, vert, horiz) {
      var display = this.display;
      pos = cursorCoords(this, clipPos(this.doc, pos));
      var top = pos.bottom, left = pos.left;
      node.style.position = "absolute";
      node.setAttribute("cm-ignore-events", "true");
      this.display.input.setUneditable(node);
      display.sizer.appendChild(node);
      if (vert == "over") {
        top = pos.top;
      } else if (vert == "above" || vert == "near") {
        var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),
        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);
        // Default to positioning above (if specified and possible); otherwise default to positioning below
        if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)
          top = pos.top - node.offsetHeight;
        else if (pos.bottom + node.offsetHeight <= vspace)
          top = pos.bottom;
        if (left + node.offsetWidth > hspace)
          left = hspace - node.offsetWidth;
      }
      node.style.top = top + "px";
      node.style.left = node.style.right = "";
      if (horiz == "right") {
        left = display.sizer.clientWidth - node.offsetWidth;
        node.style.right = "0px";
      } else {
        if (horiz == "left") left = 0;
        else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2;
        node.style.left = left + "px";
      }
      if (scroll)
        scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight);
    },

    triggerOnKeyDown: methodOp(onKeyDown),
    triggerOnKeyPress: methodOp(onKeyPress),
    triggerOnKeyUp: onKeyUp,

    execCommand: function(cmd) {
      if (commands.hasOwnProperty(cmd))
        return commands[cmd].call(null, this);
    },

    triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),

    findPosH: function(from, amount, unit, visually) {
      var dir = 1;
      if (amount < 0) { dir = -1; amount = -amount; }
      for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {
        cur = findPosH(this.doc, cur, dir, unit, visually);
        if (cur.hitSide) break;
      }
      return cur;
    },

    moveH: methodOp(function(dir, unit) {
      var cm = this;
      cm.extendSelectionsBy(function(range) {
        if (cm.display.shift || cm.doc.extend || range.empty())
          return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually);
        else
          return dir < 0 ? range.from() : range.to();
      }, sel_move);
    }),

    deleteH: methodOp(function(dir, unit) {
      var sel = this.doc.sel, doc = this.doc;
      if (sel.somethingSelected())
        doc.replaceSelection("", null, "+delete");
      else
        deleteNearSelection(this, function(range) {
          var other = findPosH(doc, range.head, dir, unit, false);
          return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other};
        });
    }),

    findPosV: function(from, amount, unit, goalColumn) {
      var dir = 1, x = goalColumn;
      if (amount < 0) { dir = -1; amount = -amount; }
      for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {
        var coords = cursorCoords(this, cur, "div");
        if (x == null) x = coords.left;
        else coords.left = x;
        cur = findPosV(this, coords, dir, unit);
        if (cur.hitSide) break;
      }
      return cur;
    },

    moveV: methodOp(function(dir, unit) {
      var cm = this, doc = this.doc, goals = [];
      var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected();
      doc.extendSelectionsBy(function(range) {
        if (collapse)
          return dir < 0 ? range.from() : range.to();
        var headPos = cursorCoords(cm, range.head, "div");
        if (range.goalColumn != null) headPos.left = range.goalColumn;
        goals.push(headPos.left);
        var pos = findPosV(cm, headPos, dir, unit);
        if (unit == "page" && range == doc.sel.primary())
          addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top);
        return pos;
      }, sel_move);
      if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++)
        doc.sel.ranges[i].goalColumn = goals[i];
    }),

    // Find the word at the given position (as returned by coordsChar).
    findWordAt: function(pos) {
      var doc = this.doc, line = getLine(doc, pos.line).text;
      var start = pos.ch, end = pos.ch;
      if (line) {
        var helper = this.getHelper(pos, "wordChars");
        if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end;
        var startChar = line.charAt(start);
        var check = isWordChar(startChar, helper)
          ? function(ch) { return isWordChar(ch, helper); }
          : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);}
          : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);};
        while (start > 0 && check(line.charAt(start - 1))) --start;
        while (end < line.length && check(line.charAt(end))) ++end;
      }
      return new Range(Pos(pos.line, start), Pos(pos.line, end));
    },

    toggleOverwrite: function(value) {
      if (value != null && value == this.state.overwrite) return;
      if (this.state.overwrite = !this.state.overwrite)
        addClass(this.display.cursorDiv, "CodeMirror-overwrite");
      else
        rmClass(this.display.cursorDiv, "CodeMirror-overwrite");

      signal(this, "overwriteToggle", this, this.state.overwrite);
    },
    hasFocus: function() { return this.display.input.getField() == activeElt(); },
    isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit); },

    scrollTo: methodOp(function(x, y) {
      if (x != null || y != null) resolveScrollToPos(this);
      if (x != null) this.curOp.scrollLeft = x;
      if (y != null) this.curOp.scrollTop = y;
    }),
    getScrollInfo: function() {
      var scroller = this.display.scroller;
      return {left: scroller.scrollLeft, top: scroller.scrollTop,
              height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,
              width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,
              clientHeight: displayHeight(this), clientWidth: displayWidth(this)};
    },

    scrollIntoView: methodOp(function(range, margin) {
      if (range == null) {
        range = {from: this.doc.sel.primary().head, to: null};
        if (margin == null) margin = this.options.cursorScrollMargin;
      } else if (typeof range == "number") {
        range = {from: Pos(range, 0), to: null};
      } else if (range.from == null) {
        range = {from: range, to: null};
      }
      if (!range.to) range.to = range.from;
      range.margin = margin || 0;

      if (range.from.line != null) {
        resolveScrollToPos(this);
        this.curOp.scrollToPos = range;
      } else {
        var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left),
                                      Math.min(range.from.top, range.to.top) - range.margin,
                                      Math.max(range.from.right, range.to.right),
                                      Math.max(range.from.bottom, range.to.bottom) + range.margin);
        this.scrollTo(sPos.scrollLeft, sPos.scrollTop);
      }
    }),

    setSize: methodOp(function(width, height) {
      var cm = this;
      function interpret(val) {
        return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val;
      }
      if (width != null) cm.display.wrapper.style.width = interpret(width);
      if (height != null) cm.display.wrapper.style.height = interpret(height);
      if (cm.options.lineWrapping) clearLineMeasurementCache(this);
      var lineNo = cm.display.viewFrom;
      cm.doc.iter(lineNo, cm.display.viewTo, function(line) {
        if (line.widgets) for (var i = 0; i < line.widgets.length; i++)
          if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, "widget"); break; }
        ++lineNo;
      });
      cm.curOp.forceUpdate = true;
      signal(cm, "refresh", this);
    }),

    operation: function(f){return runInOp(this, f);},

    refresh: methodOp(function() {
      var oldHeight = this.display.cachedTextHeight;
      regChange(this);
      this.curOp.forceUpdate = true;
      clearCaches(this);
      this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);
      updateGutterSpace(this);
      if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)
        estimateLineHeights(this);
      signal(this, "refresh", this);
    }),

    swapDoc: methodOp(function(doc) {
      var old = this.doc;
      old.cm = null;
      attachDoc(this, doc);
      clearCaches(this);
      this.display.input.reset();
      this.scrollTo(doc.scrollLeft, doc.scrollTop);
      this.curOp.forceScroll = true;
      signalLater(this, "swapDoc", this, old);
      return old;
    }),

    getInputField: function(){return this.display.input.getField();},
    getWrapperElement: function(){return this.display.wrapper;},
    getScrollerElement: function(){return this.display.scroller;},
    getGutterElement: function(){return this.display.gutters;}
  };
  eventMixin(CodeMirror);

  // OPTION DEFAULTS

  // The default configuration options.
  var defaults = CodeMirror.defaults = {};
  // Functions to run when options are changed.
  var optionHandlers = CodeMirror.optionHandlers = {};

  function option(name, deflt, handle, notOnInit) {
    CodeMirror.defaults[name] = deflt;
    if (handle) optionHandlers[name] =
      notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle;
  }

  // Passed to option handlers when there is no old value.
  var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}};

  // These two are, on init, called from the constructor because they
  // have to be initialized before the editor can start at all.
  option("value", "", function(cm, val) {
    cm.setValue(val);
  }, true);
  option("mode", null, function(cm, val) {
    cm.doc.modeOption = val;
    loadMode(cm);
  }, true);

  option("indentUnit", 2, loadMode, true);
  option("indentWithTabs", false);
  option("smartIndent", true);
  option("tabSize", 4, function(cm) {
    resetModeState(cm);
    clearCaches(cm);
    regChange(cm);
  }, true);
  option("lineSeparator", null, function(cm, val) {
    cm.doc.lineSep = val;
    if (!val) return;
    var newBreaks = [], lineNo = cm.doc.first;
    cm.doc.iter(function(line) {
      for (var pos = 0;;) {
        var found = line.text.indexOf(val, pos);
        if (found == -1) break;
        pos = found + val.length;
        newBreaks.push(Pos(lineNo, found));
      }
      lineNo++;
    });
    for (var i = newBreaks.length - 1; i >= 0; i--)
      replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length))
  });
  option("specialChars", /[\u0000-\u001f\u007f\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function(cm, val, old) {
    cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g");
    if (old != CodeMirror.Init) cm.refresh();
  });
  option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);
  option("electricChars", true);
  option("inputStyle", mobile ? "contenteditable" : "textarea", function() {
    throw new Error("inputStyle can not (yet) be changed in a running editor"); // FIXME
  }, true);
  option("spellcheck", false, function(cm, val) {
    cm.getInputField().spellcheck = val
  }, true);
  option("rtlMoveVisually", !windows);
  option("wholeLineUpdateBefore", true);

  option("theme", "default", function(cm) {
    themeChanged(cm);
    guttersChanged(cm);
  }, true);
  option("keyMap", "default", function(cm, val, old) {
    var next = getKeyMap(val);
    var prev = old != CodeMirror.Init && getKeyMap(old);
    if (prev && prev.detach) prev.detach(cm, next);
    if (next.attach) next.attach(cm, prev || null);
  });
  option("extraKeys", null);

  option("lineWrapping", false, wrappingChanged, true);
  option("gutters", [], function(cm) {
    setGuttersForLineNumbers(cm.options);
    guttersChanged(cm);
  }, true);
  option("fixedGutter", true, function(cm, val) {
    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0";
    cm.refresh();
  }, true);
  option("coverGutterNextToScrollbar", false, function(cm) {updateScrollbars(cm);}, true);
  option("scrollbarStyle", "native", function(cm) {
    initScrollbars(cm);
    updateScrollbars(cm);
    cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);
    cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);
  }, true);
  option("lineNumbers", false, function(cm) {
    setGuttersForLineNumbers(cm.options);
    guttersChanged(cm);
  }, true);
  option("firstLineNumber", 1, guttersChanged, true);
  option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true);
  option("showCursorWhenSelecting", false, updateSelection, true);

  option("resetSelectionOnContextMenu", true);
  option("lineWiseCopyCut", true);

  option("readOnly", false, function(cm, val) {
    if (val == "nocursor") {
      onBlur(cm);
      cm.display.input.blur();
      cm.display.disabled = true;
    } else {
      cm.display.disabled = false;
    }
    cm.display.input.readOnlyChanged(val)
  });
  option("disableInput", false, function(cm, val) {if (!val) cm.display.input.reset();}, true);
  option("dragDrop", true, dragDropChanged);
  option("allowDropFileTypes", null);

  option("cursorBlinkRate", 530);
  option("cursorScrollMargin", 0);
  option("cursorHeight", 1, updateSelection, true);
  option("singleCursorHeightPerLine", true, updateSelection, true);
  option("workTime", 100);
  option("workDelay", 100);
  option("flattenSpans", true, resetModeState, true);
  option("addModeClass", false, resetModeState, true);
  option("pollInterval", 100);
  option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;});
  option("historyEventDelay", 1250);
  option("viewportMargin", 10, function(cm){cm.refresh();}, true);
  option("maxHighlightLength", 10000, resetModeState, true);
  option("moveInputWithCursor", true, function(cm, val) {
    if (!val) cm.display.input.resetPosition();
  });

  option("tabindex", null, function(cm, val) {
    cm.display.input.getField().tabIndex = val || "";
  });
  option("autofocus", null);

  // MODE DEFINITION AND QUERYING

  // Known modes, by name and by MIME
  var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};

  // Extra arguments are stored as the mode's dependencies, which is
  // used by (legacy) mechanisms like loadmode.js to automatically
  // load a mode. (Preferred mechanism is the require/define calls.)
  CodeMirror.defineMode = function(name, mode) {
    if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name;
    if (arguments.length > 2)
      mode.dependencies = Array.prototype.slice.call(arguments, 2);
    modes[name] = mode;
  };

  CodeMirror.defineMIME = function(mime, spec) {
    mimeModes[mime] = spec;
  };

  // Given a MIME type, a {name, ...options} config object, or a name
  // string, return a mode config object.
  CodeMirror.resolveMode = function(spec) {
    if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) {
      spec = mimeModes[spec];
    } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) {
      var found = mimeModes[spec.name];
      if (typeof found == "string") found = {name: found};
      spec = createObj(found, spec);
      spec.name = found.name;
    } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) {
      return CodeMirror.resolveMode("application/xml");
    } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) {
      return CodeMirror.resolveMode("application/json");
    }
    if (typeof spec == "string") return {name: spec};
    else return spec || {name: "null"};
  };

  // Given a mode spec (anything that resolveMode accepts), find and
  // initialize an actual mode object.
  CodeMirror.getMode = function(options, spec) {
    var spec = CodeMirror.resolveMode(spec);
    var mfactory = modes[spec.name];
    if (!mfactory) return CodeMirror.getMode(options, "text/plain");
    var modeObj = mfactory(options, spec);
    if (modeExtensions.hasOwnProperty(spec.name)) {
      var exts = modeExtensions[spec.name];
      for (var prop in exts) {
        if (!exts.hasOwnProperty(prop)) continue;
        if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop];
        modeObj[prop] = exts[prop];
      }
    }
    modeObj.name = spec.name;
    if (spec.helperType) modeObj.helperType = spec.helperType;
    if (spec.modeProps) for (var prop in spec.modeProps)
      modeObj[prop] = spec.modeProps[prop];

    return modeObj;
  };

  // Minimal default mode.
  CodeMirror.defineMode("null", function() {
    return {token: function(stream) {stream.skipToEnd();}};
  });
  CodeMirror.defineMIME("text/plain", "null");

  // This can be used to attach properties to mode objects from
  // outside the actual mode definition.
  var modeExtensions = CodeMirror.modeExtensions = {};
  CodeMirror.extendMode = function(mode, properties) {
    var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});
    copyObj(properties, exts);
  };

  // EXTENSIONS

  CodeMirror.defineExtension = function(name, func) {
    CodeMirror.prototype[name] = func;
  };
  CodeMirror.defineDocExtension = function(name, func) {
    Doc.prototype[name] = func;
  };
  CodeMirror.defineOption = option;

  var initHooks = [];
  CodeMirror.defineInitHook = function(f) {initHooks.push(f);};

  var helpers = CodeMirror.helpers = {};
  CodeMirror.registerHelper = function(type, name, value) {
    if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []};
    helpers[type][name] = value;
  };
  CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {
    CodeMirror.registerHelper(type, name, value);
    helpers[type]._global.push({pred: predicate, val: value});
  };

  // MODE STATE HANDLING

  // Utility functions for working with state. Exported because nested
  // modes need to do this for their inner modes.

  var copyState = CodeMirror.copyState = function(mode, state) {
    if (state === true) return state;
    if (mode.copyState) return mode.copyState(state);
    var nstate = {};
    for (var n in state) {
      var val = state[n];
      if (val instanceof Array) val = val.concat([]);
      nstate[n] = val;
    }
    return nstate;
  };

  var startState = CodeMirror.startState = function(mode, a1, a2) {
    return mode.startState ? mode.startState(a1, a2) : true;
  };

  // Given a mode and a state (for that mode), find the inner mode and
  // state at the position that the state refers to.
  CodeMirror.innerMode = function(mode, state) {
    while (mode.innerMode) {
      var info = mode.innerMode(state);
      if (!info || info.mode == mode) break;
      state = info.state;
      mode = info.mode;
    }
    return info || {mode: mode, state: state};
  };

  // STANDARD COMMANDS

  // Commands are parameter-less actions that can be performed on an
  // editor, mostly used for keybindings.
  var commands = CodeMirror.commands = {
    selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);},
    singleSelection: function(cm) {
      cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll);
    },
    killLine: function(cm) {
      deleteNearSelection(cm, function(range) {
        if (range.empty()) {
          var len = getLine(cm.doc, range.head.line).text.length;
          if (range.head.ch == len && range.head.line < cm.lastLine())
            return {from: range.head, to: Pos(range.head.line + 1, 0)};
          else
            return {from: range.head, to: Pos(range.head.line, len)};
        } else {
          return {from: range.from(), to: range.to()};
        }
      });
    },
    deleteLine: function(cm) {
      deleteNearSelection(cm, function(range) {
        return {from: Pos(range.from().line, 0),
                to: clipPos(cm.doc, Pos(range.to().line + 1, 0))};
      });
    },
    delLineLeft: function(cm) {
      deleteNearSelection(cm, function(range) {
        return {from: Pos(range.from().line, 0), to: range.from()};
      });
    },
    delWrappedLineLeft: function(cm) {
      deleteNearSelection(cm, function(range) {
        var top = cm.charCoords(range.head, "div").top + 5;
        var leftPos = cm.coordsChar({left: 0, top: top}, "div");
        return {from: leftPos, to: range.from()};
      });
    },
    delWrappedLineRight: function(cm) {
      deleteNearSelection(cm, function(range) {
        var top = cm.charCoords(range.head, "div").top + 5;
        var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div");
        return {from: range.from(), to: rightPos };
      });
    },
    undo: function(cm) {cm.undo();},
    redo: function(cm) {cm.redo();},
    undoSelection: function(cm) {cm.undoSelection();},
    redoSelection: function(cm) {cm.redoSelection();},
    goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));},
    goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));},
    goLineStart: function(cm) {
      cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); },
                            {origin: "+move", bias: 1});
    },
    goLineStartSmart: function(cm) {
      cm.extendSelectionsBy(function(range) {
        return lineStartSmart(cm, range.head);
      }, {origin: "+move", bias: 1});
    },
    goLineEnd: function(cm) {
      cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); },
                            {origin: "+move", bias: -1});
    },
    goLineRight: function(cm) {
      cm.extendSelectionsBy(function(range) {
        var top = cm.charCoords(range.head, "div").top + 5;
        return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div");
      }, sel_move);
    },
    goLineLeft: function(cm) {
      cm.extendSelectionsBy(function(range) {
        var top = cm.charCoords(range.head, "div").top + 5;
        return cm.coordsChar({left: 0, top: top}, "div");
      }, sel_move);
    },
    goLineLeftSmart: function(cm) {
      cm.extendSelectionsBy(function(range) {
        var top = cm.charCoords(range.head, "div").top + 5;
        var pos = cm.coordsChar({left: 0, top: top}, "div");
        if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head);
        return pos;
      }, sel_move);
    },
    goLineUp: function(cm) {cm.moveV(-1, "line");},
    goLineDown: function(cm) {cm.moveV(1, "line");},
    goPageUp: function(cm) {cm.moveV(-1, "page");},
    goPageDown: function(cm) {cm.moveV(1, "page");},
    goCharLeft: function(cm) {cm.moveH(-1, "char");},
    goCharRight: function(cm) {cm.moveH(1, "char");},
    goColumnLeft: function(cm) {cm.moveH(-1, "column");},
    goColumnRight: function(cm) {cm.moveH(1, "column");},
    goWordLeft: function(cm) {cm.moveH(-1, "word");},
    goGroupRight: function(cm) {cm.moveH(1, "group");},
    goGroupLeft: function(cm) {cm.moveH(-1, "group");},
    goWordRight: function(cm) {cm.moveH(1, "word");},
    delCharBefore: function(cm) {cm.deleteH(-1, "char");},
    delCharAfter: function(cm) {cm.deleteH(1, "char");},
    delWordBefore: function(cm) {cm.deleteH(-1, "word");},
    delWordAfter: function(cm) {cm.deleteH(1, "word");},
    delGroupBefore: function(cm) {cm.deleteH(-1, "group");},
    delGroupAfter: function(cm) {cm.deleteH(1, "group");},
    indentAuto: function(cm) {cm.indentSelection("smart");},
    indentMore: function(cm) {cm.indentSelection("add");},
    indentLess: function(cm) {cm.indentSelection("subtract");},
    insertTab: function(cm) {cm.replaceSelection("\t");},
    insertSoftTab: function(cm) {
      var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;
      for (var i = 0; i < ranges.length; i++) {
        var pos = ranges[i].from();
        var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);
        spaces.push(spaceStr(tabSize - col % tabSize));
      }
      cm.replaceSelections(spaces);
    },
    defaultTab: function(cm) {
      if (cm.somethingSelected()) cm.indentSelection("add");
      else cm.execCommand("insertTab");
    },
    transposeChars: function(cm) {
      runInOp(cm, function() {
        var ranges = cm.listSelections(), newSel = [];
        for (var i = 0; i < ranges.length; i++) {
          var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;
          if (line) {
            if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1);
            if (cur.ch > 0) {
              cur = new Pos(cur.line, cur.ch + 1);
              cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),
                              Pos(cur.line, cur.ch - 2), cur, "+transpose");
            } else if (cur.line > cm.doc.first) {
              var prev = getLine(cm.doc, cur.line - 1).text;
              if (prev)
                cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +
                                prev.charAt(prev.length - 1),
                                Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), "+transpose");
            }
          }
          newSel.push(new Range(cur, cur));
        }
        cm.setSelections(newSel);
      });
    },
    newlineAndIndent: function(cm) {
      runInOp(cm, function() {
        var len = cm.listSelections().length;
        for (var i = 0; i < len; i++) {
          var range = cm.listSelections()[i];
          cm.replaceRange(cm.doc.lineSeparator(), range.anchor, range.head, "+input");
          cm.indentLine(range.from().line + 1, null, true);
        }
        ensureCursorVisible(cm);
      });
    },
    openLine: function(cm) {cm.replaceSelection("\n", "start")},
    toggleOverwrite: function(cm) {cm.toggleOverwrite();}
  };


  // STANDARD KEYMAPS

  var keyMap = CodeMirror.keyMap = {};

  keyMap.basic = {
    "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown",
    "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown",
    "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore",
    "Tab": "defaultTab", "Shift-Tab": "indentAuto",
    "Enter": "newlineAndIndent", "Insert": "toggleOverwrite",
    "Esc": "singleSelection"
  };
  // Note that the save and find-related commands aren't defined by
  // default. User code or addons can define them. Unknown commands
  // are simply ignored.
  keyMap.pcDefault = {
    "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo",
    "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown",
    "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd",
    "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find",
    "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll",
    "Ctrl-[": "indentLess", "Ctrl-]": "indentMore",
    "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection",
    fallthrough: "basic"
  };
  // Very basic readline/emacs-style bindings, which are standard on Mac.
  keyMap.emacsy = {
    "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown",
    "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd",
    "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore",
    "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars",
    "Ctrl-O": "openLine"
  };
  keyMap.macDefault = {
    "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo",
    "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft",
    "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore",
    "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find",
    "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll",
    "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight",
    "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd",
    fallthrough: ["basic", "emacsy"]
  };
  keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault;

  // KEYMAP DISPATCH

  function normalizeKeyName(name) {
    var parts = name.split(/-(?!$)/), name = parts[parts.length - 1];
    var alt, ctrl, shift, cmd;
    for (var i = 0; i < parts.length - 1; i++) {
      var mod = parts[i];
      if (/^(cmd|meta|m)$/i.test(mod)) cmd = true;
      else if (/^a(lt)?$/i.test(mod)) alt = true;
      else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true;
      else if (/^s(hift)$/i.test(mod)) shift = true;
      else throw new Error("Unrecognized modifier name: " + mod);
    }
    if (alt) name = "Alt-" + name;
    if (ctrl) name = "Ctrl-" + name;
    if (cmd) name = "Cmd-" + name;
    if (shift) name = "Shift-" + name;
    return name;
  }

  // This is a kludge to keep keymaps mostly working as raw objects
  // (backwards compatibility) while at the same time support features
  // like normalization and multi-stroke key bindings. It compiles a
  // new normalized keymap, and then updates the old object to reflect
  // this.
  CodeMirror.normalizeKeyMap = function(keymap) {
    var copy = {};
    for (var keyname in keymap) if (keymap.hasOwnProperty(keyname)) {
      var value = keymap[keyname];
      if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue;
      if (value == "...") { delete keymap[keyname]; continue; }

      var keys = map(keyname.split(" "), normalizeKeyName);
      for (var i = 0; i < keys.length; i++) {
        var val, name;
        if (i == keys.length - 1) {
          name = keys.join(" ");
          val = value;
        } else {
          name = keys.slice(0, i + 1).join(" ");
          val = "...";
        }
        var prev = copy[name];
        if (!prev) copy[name] = val;
        else if (prev != val) throw new Error("Inconsistent bindings for " + name);
      }
      delete keymap[keyname];
    }
    for (var prop in copy) keymap[prop] = copy[prop];
    return keymap;
  };

  var lookupKey = CodeMirror.lookupKey = function(key, map, handle, context) {
    map = getKeyMap(map);
    var found = map.call ? map.call(key, context) : map[key];
    if (found === false) return "nothing";
    if (found === "...") return "multi";
    if (found != null && handle(found)) return "handled";

    if (map.fallthrough) {
      if (Object.prototype.toString.call(map.fallthrough) != "[object Array]")
        return lookupKey(key, map.fallthrough, handle, context);
      for (var i = 0; i < map.fallthrough.length; i++) {
        var result = lookupKey(key, map.fallthrough[i], handle, context);
        if (result) return result;
      }
    }
  };

  // Modifier key presses don't count as 'real' key presses for the
  // purpose of keymap fallthrough.
  var isModifierKey = CodeMirror.isModifierKey = function(value) {
    var name = typeof value == "string" ? value : keyNames[value.keyCode];
    return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod";
  };

  // Look up the name of a key as indicated by an event object.
  var keyName = CodeMirror.keyName = function(event, noShift) {
    if (presto && event.keyCode == 34 && event["char"]) return false;
    var base = keyNames[event.keyCode], name = base;
    if (name == null || event.altGraphKey) return false;
    if (event.altKey && base != "Alt") name = "Alt-" + name;
    if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") name = "Ctrl-" + name;
    if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") name = "Cmd-" + name;
    if (!noShift && event.shiftKey && base != "Shift") name = "Shift-" + name;
    return name;
  };

  function getKeyMap(val) {
    return typeof val == "string" ? keyMap[val] : val;
  }

  // FROMTEXTAREA

  CodeMirror.fromTextArea = function(textarea, options) {
    options = options ? copyObj(options) : {};
    options.value = textarea.value;
    if (!options.tabindex && textarea.tabIndex)
      options.tabindex = textarea.tabIndex;
    if (!options.placeholder && textarea.placeholder)
      options.placeholder = textarea.placeholder;
    // Set autofocus to true if this textarea is focused, or if it has
    // autofocus and no other element is focused.
    if (options.autofocus == null) {
      var hasFocus = activeElt();
      options.autofocus = hasFocus == textarea ||
        textarea.getAttribute("autofocus") != null && hasFocus == document.body;
    }

    function save() {textarea.value = cm.getValue();}
    if (textarea.form) {
      on(textarea.form, "submit", save);
      // Deplorable hack to make the submit method do the right thing.
      if (!options.leaveSubmitMethodAlone) {
        var form = textarea.form, realSubmit = form.submit;
        try {
          var wrappedSubmit = form.submit = function() {
            save();
            form.submit = realSubmit;
            form.submit();
            form.submit = wrappedSubmit;
          };
        } catch(e) {}
      }
    }

    options.finishInit = function(cm) {
      cm.save = save;
      cm.getTextArea = function() { return textarea; };
      cm.toTextArea = function() {
        cm.toTextArea = isNaN; // Prevent this from being ran twice
        save();
        textarea.parentNode.removeChild(cm.getWrapperElement());
        textarea.style.display = "";
        if (textarea.form) {
          off(textarea.form, "submit", save);
          if (typeof textarea.form.submit == "function")
            textarea.form.submit = realSubmit;
        }
      };
    };

    textarea.style.display = "none";
    var cm = CodeMirror(function(node) {
      textarea.parentNode.insertBefore(node, textarea.nextSibling);
    }, options);
    return cm;
  };

  // STRING STREAM

  // Fed to the mode parsers, provides helper functions to make
  // parsers more succinct.

  var StringStream = CodeMirror.StringStream = function(string, tabSize) {
    this.pos = this.start = 0;
    this.string = string;
    this.tabSize = tabSize || 8;
    this.lastColumnPos = this.lastColumnValue = 0;
    this.lineStart = 0;
  };

  StringStream.prototype = {
    eol: function() {return this.pos >= this.string.length;},
    sol: function() {return this.pos == this.lineStart;},
    peek: function() {return this.string.charAt(this.pos) || undefined;},
    next: function() {
      if (this.pos < this.string.length)
        return this.string.charAt(this.pos++);
    },
    eat: function(match) {
      var ch = this.string.charAt(this.pos);
      if (typeof match == "string") var ok = ch == match;
      else var ok = ch && (match.test ? match.test(ch) : match(ch));
      if (ok) {++this.pos; return ch;}
    },
    eatWhile: function(match) {
      var start = this.pos;
      while (this.eat(match)){}
      return this.pos > start;
    },
    eatSpace: function() {
      var start = this.pos;
      while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;
      return this.pos > start;
    },
    skipToEnd: function() {this.pos = this.string.length;},
    skipTo: function(ch) {
      var found = this.string.indexOf(ch, this.pos);
      if (found > -1) {this.pos = found; return true;}
    },
    backUp: function(n) {this.pos -= n;},
    column: function() {
      if (this.lastColumnPos < this.start) {
        this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);
        this.lastColumnPos = this.start;
      }
      return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);
    },
    indentation: function() {
      return countColumn(this.string, null, this.tabSize) -
        (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);
    },
    match: function(pattern, consume, caseInsensitive) {
      if (typeof pattern == "string") {
        var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};
        var substr = this.string.substr(this.pos, pattern.length);
        if (cased(substr) == cased(pattern)) {
          if (consume !== false) this.pos += pattern.length;
          return true;
        }
      } else {
        var match = this.string.slice(this.pos).match(pattern);
        if (match && match.index > 0) return null;
        if (match && consume !== false) this.pos += match[0].length;
        return match;
      }
    },
    current: function(){return this.string.slice(this.start, this.pos);},
    hideFirstChars: function(n, inner) {
      this.lineStart += n;
      try { return inner(); }
      finally { this.lineStart -= n; }
    }
  };

  // TEXTMARKERS

  // Created with markText and setBookmark methods. A TextMarker is a
  // handle that can be used to clear or find a marked position in the
  // document. Line objects hold arrays (markedSpans) containing
  // {from, to, marker} object pointing to such marker objects, and
  // indicating that such a marker is present on that line. Multiple
  // lines may point to the same marker when it spans across lines.
  // The spans will have null for their from/to properties when the
  // marker continues beyond the start/end of the line. Markers have
  // links back to the lines they currently touch.

  var nextMarkerId = 0;

  var TextMarker = CodeMirror.TextMarker = function(doc, type) {
    this.lines = [];
    this.type = type;
    this.doc = doc;
    this.id = ++nextMarkerId;
  };
  eventMixin(TextMarker);

  // Clear the marker.
  TextMarker.prototype.clear = function() {
    if (this.explicitlyCleared) return;
    var cm = this.doc.cm, withOp = cm && !cm.curOp;
    if (withOp) startOperation(cm);
    if (hasHandler(this, "clear")) {
      var found = this.find();
      if (found) signalLater(this, "clear", found.from, found.to);
    }
    var min = null, max = null;
    for (var i = 0; i < this.lines.length; ++i) {
      var line = this.lines[i];
      var span = getMarkedSpanFor(line.markedSpans, this);
      if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text");
      else if (cm) {
        if (span.to != null) max = lineNo(line);
        if (span.from != null) min = lineNo(line);
      }
      line.markedSpans = removeMarkedSpan(line.markedSpans, span);
      if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)
        updateLineHeight(line, textHeight(cm.display));
    }
    if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) {
      var visual = visualLine(this.lines[i]), len = lineLength(visual);
      if (len > cm.display.maxLineLength) {
        cm.display.maxLine = visual;
        cm.display.maxLineLength = len;
        cm.display.maxLineChanged = true;
      }
    }

    if (min != null && cm && this.collapsed) regChange(cm, min, max + 1);
    this.lines.length = 0;
    this.explicitlyCleared = true;
    if (this.atomic && this.doc.cantEdit) {
      this.doc.cantEdit = false;
      if (cm) reCheckSelection(cm.doc);
    }
    if (cm) signalLater(cm, "markerCleared", cm, this);
    if (withOp) endOperation(cm);
    if (this.parent) this.parent.clear();
  };

  // Find the position of the marker in the document. Returns a {from,
  // to} object by default. Side can be passed to get a specific side
  // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the
  // Pos objects returned contain a line object, rather than a line
  // number (used to prevent looking up the same line twice).
  TextMarker.prototype.find = function(side, lineObj) {
    if (side == null && this.type == "bookmark") side = 1;
    var from, to;
    for (var i = 0; i < this.lines.length; ++i) {
      var line = this.lines[i];
      var span = getMarkedSpanFor(line.markedSpans, this);
      if (span.from != null) {
        from = Pos(lineObj ? line : lineNo(line), span.from);
        if (side == -1) return from;
      }
      if (span.to != null) {
        to = Pos(lineObj ? line : lineNo(line), span.to);
        if (side == 1) return to;
      }
    }
    return from && {from: from, to: to};
  };

  // Signals that the marker's widget changed, and surrounding layout
  // should be recomputed.
  TextMarker.prototype.changed = function() {
    var pos = this.find(-1, true), widget = this, cm = this.doc.cm;
    if (!pos || !cm) return;
    runInOp(cm, function() {
      var line = pos.line, lineN = lineNo(pos.line);
      var view = findViewForLine(cm, lineN);
      if (view) {
        clearLineMeasurementCacheFor(view);
        cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;
      }
      cm.curOp.updateMaxLine = true;
      if (!lineIsHidden(widget.doc, line) && widget.height != null) {
        var oldHeight = widget.height;
        widget.height = null;
        var dHeight = widgetHeight(widget) - oldHeight;
        if (dHeight)
          updateLineHeight(line, line.height + dHeight);
      }
    });
  };

  TextMarker.prototype.attachLine = function(line) {
    if (!this.lines.length && this.doc.cm) {
      var op = this.doc.cm.curOp;
      if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)
        (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);
    }
    this.lines.push(line);
  };
  TextMarker.prototype.detachLine = function(line) {
    this.lines.splice(indexOf(this.lines, line), 1);
    if (!this.lines.length && this.doc.cm) {
      var op = this.doc.cm.curOp;
      (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);
    }
  };

  // Collapsed markers have unique ids, in order to be able to order
  // them, which is needed for uniquely determining an outer marker
  // when they overlap (they may nest, but not partially overlap).
  var nextMarkerId = 0;

  // Create a marker, wire it up to the right lines, and
  function markText(doc, from, to, options, type) {
    // Shared markers (across linked documents) are handled separately
    // (markTextShared will call out to this again, once per
    // document).
    if (options && options.shared) return markTextShared(doc, from, to, options, type);
    // Ensure we are in an operation.
    if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type);

    var marker = new TextMarker(doc, type), diff = cmp(from, to);
    if (options) copyObj(options, marker, false);
    // Don't connect empty markers unless clearWhenEmpty is false
    if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)
      return marker;
    if (marker.replacedWith) {
      // Showing up as a widget implies collapsed (widget replaces text)
      marker.collapsed = true;
      marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget");
      if (!options.handleMouseEvents) marker.widgetNode.setAttribute("cm-ignore-events", "true");
      if (options.insertLeft) marker.widgetNode.insertLeft = true;
    }
    if (marker.collapsed) {
      if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||
          from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))
        throw new Error("Inserting collapsed marker partially overlapping an existing one");
      sawCollapsedSpans = true;
    }

    if (marker.addToHistory)
      addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN);

    var curLine = from.line, cm = doc.cm, updateMaxLine;
    doc.iter(curLine, to.line + 1, function(line) {
      if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)
        updateMaxLine = true;
      if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0);
      addMarkedSpan(line, new MarkedSpan(marker,
                                         curLine == from.line ? from.ch : null,
                                         curLine == to.line ? to.ch : null));
      ++curLine;
    });
    // lineIsHidden depends on the presence of the spans, so needs a second pass
    if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) {
      if (lineIsHidden(doc, line)) updateLineHeight(line, 0);
    });

    if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); });

    if (marker.readOnly) {
      sawReadOnlySpans = true;
      if (doc.history.done.length || doc.history.undone.length)
        doc.clearHistory();
    }
    if (marker.collapsed) {
      marker.id = ++nextMarkerId;
      marker.atomic = true;
    }
    if (cm) {
      // Sync editor state
      if (updateMaxLine) cm.curOp.updateMaxLine = true;
      if (marker.collapsed)
        regChange(cm, from.line, to.line + 1);
      else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css)
        for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text");
      if (marker.atomic) reCheckSelection(cm.doc);
      signalLater(cm, "markerAdded", cm, marker);
    }
    return marker;
  }

  // SHARED TEXTMARKERS

  // A shared marker spans multiple linked documents. It is
  // implemented as a meta-marker-object controlling multiple normal
  // markers.
  var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) {
    this.markers = markers;
    this.primary = primary;
    for (var i = 0; i < markers.length; ++i)
      markers[i].parent = this;
  };
  eventMixin(SharedTextMarker);

  SharedTextMarker.prototype.clear = function() {
    if (this.explicitlyCleared) return;
    this.explicitlyCleared = true;
    for (var i = 0; i < this.markers.length; ++i)
      this.markers[i].clear();
    signalLater(this, "clear");
  };
  SharedTextMarker.prototype.find = function(side, lineObj) {
    return this.primary.find(side, lineObj);
  };

  function markTextShared(doc, from, to, options, type) {
    options = copyObj(options);
    options.shared = false;
    var markers = [markText(doc, from, to, options, type)], primary = markers[0];
    var widget = options.widgetNode;
    linkedDocs(doc, function(doc) {
      if (widget) options.widgetNode = widget.cloneNode(true);
      markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));
      for (var i = 0; i < doc.linked.length; ++i)
        if (doc.linked[i].isParent) return;
      primary = lst(markers);
    });
    return new SharedTextMarker(markers, primary);
  }

  function findSharedMarkers(doc) {
    return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())),
                         function(m) { return m.parent; });
  }

  function copySharedMarkers(doc, markers) {
    for (var i = 0; i < markers.length; i++) {
      var marker = markers[i], pos = marker.find();
      var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);
      if (cmp(mFrom, mTo)) {
        var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);
        marker.markers.push(subMark);
        subMark.parent = marker;
      }
    }
  }

  function detachSharedMarkers(markers) {
    for (var i = 0; i < markers.length; i++) {
      var marker = markers[i], linked = [marker.primary.doc];;
      linkedDocs(marker.primary.doc, function(d) { linked.push(d); });
      for (var j = 0; j < marker.markers.length; j++) {
        var subMarker = marker.markers[j];
        if (indexOf(linked, subMarker.doc) == -1) {
          subMarker.parent = null;
          marker.markers.splice(j--, 1);
        }
      }
    }
  }

  // TEXTMARKER SPANS

  function MarkedSpan(marker, from, to) {
    this.marker = marker;
    this.from = from; this.to = to;
  }

  // Search an array of spans for a span matching the given marker.
  function getMarkedSpanFor(spans, marker) {
    if (spans) for (var i = 0; i < spans.length; ++i) {
      var span = spans[i];
      if (span.marker == marker) return span;
    }
  }
  // Remove a span from an array, returning undefined if no spans are
  // left (we don't store arrays for lines without spans).
  function removeMarkedSpan(spans, span) {
    for (var r, i = 0; i < spans.length; ++i)
      if (spans[i] != span) (r || (r = [])).push(spans[i]);
    return r;
  }
  // Add a span to a line.
  function addMarkedSpan(line, span) {
    line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];
    span.marker.attachLine(line);
  }

  // Used for the algorithm that adjusts markers for a change in the
  // document. These functions cut an array of spans at a given
  // character position, returning an array of remaining chunks (or
  // undefined if nothing remains).
  function markedSpansBefore(old, startCh, isInsert) {
    if (old) for (var i = 0, nw; i < old.length; ++i) {
      var span = old[i], marker = span.marker;
      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);
      if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) {
        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);
        (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));
      }
    }
    return nw;
  }
  function markedSpansAfter(old, endCh, isInsert) {
    if (old) for (var i = 0, nw; i < old.length; ++i) {
      var span = old[i], marker = span.marker;
      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);
      if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) {
        var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);
        (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,
                                              span.to == null ? null : span.to - endCh));
      }
    }
    return nw;
  }

  // Given a change object, compute the new set of marker spans that
  // cover the line in which the change took place. Removes spans
  // entirely within the change, reconnects spans belonging to the
  // same marker that appear on both sides of the change, and cuts off
  // spans partially within the change. Returns an array of span
  // arrays with one element for each line in (after) the change.
  function stretchSpansOverChange(doc, change) {
    if (change.full) return null;
    var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;
    var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;
    if (!oldFirst && !oldLast) return null;

    var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;
    // Get the spans that 'stick out' on both sides
    var first = markedSpansBefore(oldFirst, startCh, isInsert);
    var last = markedSpansAfter(oldLast, endCh, isInsert);

    // Next, merge those two ends
    var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);
    if (first) {
      // Fix up .to properties of first
      for (var i = 0; i < first.length; ++i) {
        var span = first[i];
        if (span.to == null) {
          var found = getMarkedSpanFor(last, span.marker);
          if (!found) span.to = startCh;
          else if (sameLine) span.to = found.to == null ? null : found.to + offset;
        }
      }
    }
    if (last) {
      // Fix up .from in last (or move them into first in case of sameLine)
      for (var i = 0; i < last.length; ++i) {
        var span = last[i];
        if (span.to != null) span.to += offset;
        if (span.from == null) {
          var found = getMarkedSpanFor(first, span.marker);
          if (!found) {
            span.from = offset;
            if (sameLine) (first || (first = [])).push(span);
          }
        } else {
          span.from += offset;
          if (sameLine) (first || (first = [])).push(span);
        }
      }
    }
    // Make sure we didn't create any zero-length spans
    if (first) first = clearEmptySpans(first);
    if (last && last != first) last = clearEmptySpans(last);

    var newMarkers = [first];
    if (!sameLine) {
      // Fill gap with whole-line-spans
      var gap = change.text.length - 2, gapMarkers;
      if (gap > 0 && first)
        for (var i = 0; i < first.length; ++i)
          if (first[i].to == null)
            (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null));
      for (var i = 0; i < gap; ++i)
        newMarkers.push(gapMarkers);
      newMarkers.push(last);
    }
    return newMarkers;
  }

  // Remove spans that are empty and don't have a clearWhenEmpty
  // option of false.
  function clearEmptySpans(spans) {
    for (var i = 0; i < spans.length; ++i) {
      var span = spans[i];
      if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)
        spans.splice(i--, 1);
    }
    if (!spans.length) return null;
    return spans;
  }

  // Used for un/re-doing changes from the history. Combines the
  // result of computing the existing spans with the set of spans that
  // existed in the history (so that deleting around a span and then
  // undoing brings back the span).
  function mergeOldSpans(doc, change) {
    var old = getOldSpans(doc, change);
    var stretched = stretchSpansOverChange(doc, change);
    if (!old) return stretched;
    if (!stretched) return old;

    for (var i = 0; i < old.length; ++i) {
      var oldCur = old[i], stretchCur = stretched[i];
      if (oldCur && stretchCur) {
        spans: for (var j = 0; j < stretchCur.length; ++j) {
          var span = stretchCur[j];
          for (var k = 0; k < oldCur.length; ++k)
            if (oldCur[k].marker == span.marker) continue spans;
          oldCur.push(span);
        }
      } else if (stretchCur) {
        old[i] = stretchCur;
      }
    }
    return old;
  }

  // Used to 'clip' out readOnly ranges when making a change.
  function removeReadOnlyRanges(doc, from, to) {
    var markers = null;
    doc.iter(from.line, to.line + 1, function(line) {
      if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) {
        var mark = line.markedSpans[i].marker;
        if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))
          (markers || (markers = [])).push(mark);
      }
    });
    if (!markers) return null;
    var parts = [{from: from, to: to}];
    for (var i = 0; i < markers.length; ++i) {
      var mk = markers[i], m = mk.find(0);
      for (var j = 0; j < parts.length; ++j) {
        var p = parts[j];
        if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue;
        var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);
        if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)
          newParts.push({from: p.from, to: m.from});
        if (dto > 0 || !mk.inclusiveRight && !dto)
          newParts.push({from: m.to, to: p.to});
        parts.splice.apply(parts, newParts);
        j += newParts.length - 1;
      }
    }
    return parts;
  }

  // Connect or disconnect spans from a line.
  function detachMarkedSpans(line) {
    var spans = line.markedSpans;
    if (!spans) return;
    for (var i = 0; i < spans.length; ++i)
      spans[i].marker.detachLine(line);
    line.markedSpans = null;
  }
  function attachMarkedSpans(line, spans) {
    if (!spans) return;
    for (var i = 0; i < spans.length; ++i)
      spans[i].marker.attachLine(line);
    line.markedSpans = spans;
  }

  // Helpers used when computing which overlapping collapsed span
  // counts as the larger one.
  function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; }
  function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; }

  // Returns a number indicating which of two overlapping collapsed
  // spans is larger (and thus includes the other). Falls back to
  // comparing ids when the spans cover exactly the same range.
  function compareCollapsedMarkers(a, b) {
    var lenDiff = a.lines.length - b.lines.length;
    if (lenDiff != 0) return lenDiff;
    var aPos = a.find(), bPos = b.find();
    var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);
    if (fromCmp) return -fromCmp;
    var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);
    if (toCmp) return toCmp;
    return b.id - a.id;
  }

  // Find out whether a line ends or starts in a collapsed span. If
  // so, return the marker for that span.
  function collapsedSpanAtSide(line, start) {
    var sps = sawCollapsedSpans && line.markedSpans, found;
    if (sps) for (var sp, i = 0; i < sps.length; ++i) {
      sp = sps[i];
      if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&
          (!found || compareCollapsedMarkers(found, sp.marker) < 0))
        found = sp.marker;
    }
    return found;
  }
  function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); }
  function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); }

  // Test whether there exists a collapsed span that partially
  // overlaps (covers the start or end, but not both) of a new span.
  // Such overlap is not allowed.
  function conflictingCollapsedRange(doc, lineNo, from, to, marker) {
    var line = getLine(doc, lineNo);
    var sps = sawCollapsedSpans && line.markedSpans;
    if (sps) for (var i = 0; i < sps.length; ++i) {
      var sp = sps[i];
      if (!sp.marker.collapsed) continue;
      var found = sp.marker.find(0);
      var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);
      var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);
      if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue;
      if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||
          fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))
        return true;
    }
  }

  // A visual line is a line as drawn on the screen. Folding, for
  // example, can cause multiple logical lines to appear on the same
  // visual line. This finds the start of the visual line that the
  // given line is part of (usually that is the line itself).
  function visualLine(line) {
    var merged;
    while (merged = collapsedSpanAtStart(line))
      line = merged.find(-1, true).line;
    return line;
  }

  // Returns an array of logical lines that continue the visual line
  // started by the argument, or undefined if there are no such lines.
  function visualLineContinued(line) {
    var merged, lines;
    while (merged = collapsedSpanAtEnd(line)) {
      line = merged.find(1, true).line;
      (lines || (lines = [])).push(line);
    }
    return lines;
  }

  // Get the line number of the start of the visual line that the
  // given line number is part of.
  function visualLineNo(doc, lineN) {
    var line = getLine(doc, lineN), vis = visualLine(line);
    if (line == vis) return lineN;
    return lineNo(vis);
  }
  // Get the line number of the start of the next visual line after
  // the given line.
  function visualLineEndNo(doc, lineN) {
    if (lineN > doc.lastLine()) return lineN;
    var line = getLine(doc, lineN), merged;
    if (!lineIsHidden(doc, line)) return lineN;
    while (merged = collapsedSpanAtEnd(line))
      line = merged.find(1, true).line;
    return lineNo(line) + 1;
  }

  // Compute whether a line is hidden. Lines count as hidden when they
  // are part of a visual line that starts with another line, or when
  // they are entirely covered by collapsed, non-widget span.
  function lineIsHidden(doc, line) {
    var sps = sawCollapsedSpans && line.markedSpans;
    if (sps) for (var sp, i = 0; i < sps.length; ++i) {
      sp = sps[i];
      if (!sp.marker.collapsed) continue;
      if (sp.from == null) return true;
      if (sp.marker.widgetNode) continue;
      if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))
        return true;
    }
  }
  function lineIsHiddenInner(doc, line, span) {
    if (span.to == null) {
      var end = span.marker.find(1, true);
      return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));
    }
    if (span.marker.inclusiveRight && span.to == line.text.length)
      return true;
    for (var sp, i = 0; i < line.markedSpans.length; ++i) {
      sp = line.markedSpans[i];
      if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&
          (sp.to == null || sp.to != span.from) &&
          (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&
          lineIsHiddenInner(doc, line, sp)) return true;
    }
  }

  // LINE WIDGETS

  // Line widgets are block elements displayed above or below a line.

  var LineWidget = CodeMirror.LineWidget = function(doc, node, options) {
    if (options) for (var opt in options) if (options.hasOwnProperty(opt))
      this[opt] = options[opt];
    this.doc = doc;
    this.node = node;
  };
  eventMixin(LineWidget);

  function adjustScrollWhenAboveVisible(cm, line, diff) {
    if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))
      addToScrollPos(cm, null, diff);
  }

  LineWidget.prototype.clear = function() {
    var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);
    if (no == null || !ws) return;
    for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1);
    if (!ws.length) line.widgets = null;
    var height = widgetHeight(this);
    updateLineHeight(line, Math.max(0, line.height - height));
    if (cm) runInOp(cm, function() {
      adjustScrollWhenAboveVisible(cm, line, -height);
      regLineChange(cm, no, "widget");
    });
  };
  LineWidget.prototype.changed = function() {
    var oldH = this.height, cm = this.doc.cm, line = this.line;
    this.height = null;
    var diff = widgetHeight(this) - oldH;
    if (!diff) return;
    updateLineHeight(line, line.height + diff);
    if (cm) runInOp(cm, function() {
      cm.curOp.forceUpdate = true;
      adjustScrollWhenAboveVisible(cm, line, diff);
    });
  };

  function widgetHeight(widget) {
    if (widget.height != null) return widget.height;
    var cm = widget.doc.cm;
    if (!cm) return 0;
    if (!contains(document.body, widget.node)) {
      var parentStyle = "position: relative;";
      if (widget.coverGutter)
        parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;";
      if (widget.noHScroll)
        parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;";
      removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle));
    }
    return widget.height = widget.node.parentNode.offsetHeight;
  }

  function addLineWidget(doc, handle, node, options) {
    var widget = new LineWidget(doc, node, options);
    var cm = doc.cm;
    if (cm && widget.noHScroll) cm.display.alignWidgets = true;
    changeLine(doc, handle, "widget", function(line) {
      var widgets = line.widgets || (line.widgets = []);
      if (widget.insertAt == null) widgets.push(widget);
      else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget);
      widget.line = line;
      if (cm && !lineIsHidden(doc, line)) {
        var aboveVisible = heightAtLine(line) < doc.scrollTop;
        updateLineHeight(line, line.height + widgetHeight(widget));
        if (aboveVisible) addToScrollPos(cm, null, widget.height);
        cm.curOp.forceUpdate = true;
      }
      return true;
    });
    return widget;
  }

  // LINE DATA STRUCTURE

  // Line objects. These hold state related to a line, including
  // highlighting info (the styles array).
  var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) {
    this.text = text;
    attachMarkedSpans(this, markedSpans);
    this.height = estimateHeight ? estimateHeight(this) : 1;
  };
  eventMixin(Line);
  Line.prototype.lineNo = function() { return lineNo(this); };

  // Change the content (text, markers) of a line. Automatically
  // invalidates cached information and tries to re-estimate the
  // line's height.
  function updateLine(line, text, markedSpans, estimateHeight) {
    line.text = text;
    if (line.stateAfter) line.stateAfter = null;
    if (line.styles) line.styles = null;
    if (line.order != null) line.order = null;
    detachMarkedSpans(line);
    attachMarkedSpans(line, markedSpans);
    var estHeight = estimateHeight ? estimateHeight(line) : 1;
    if (estHeight != line.height) updateLineHeight(line, estHeight);
  }

  // Detach a line from the document tree and its markers.
  function cleanUpLine(line) {
    line.parent = null;
    detachMarkedSpans(line);
  }

  function extractLineClasses(type, output) {
    if (type) for (;;) {
      var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/);
      if (!lineClass) break;
      type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);
      var prop = lineClass[1] ? "bgClass" : "textClass";
      if (output[prop] == null)
        output[prop] = lineClass[2];
      else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop]))
        output[prop] += " " + lineClass[2];
    }
    return type;
  }

  function callBlankLine(mode, state) {
    if (mode.blankLine) return mode.blankLine(state);
    if (!mode.innerMode) return;
    var inner = CodeMirror.innerMode(mode, state);
    if (inner.mode.blankLine) return inner.mode.blankLine(inner.state);
  }

  function readToken(mode, stream, state, inner) {
    for (var i = 0; i < 10; i++) {
      if (inner) inner[0] = CodeMirror.innerMode(mode, state).mode;
      var style = mode.token(stream, state);
      if (stream.pos > stream.start) return style;
    }
    throw new Error("Mode " + mode.name + " failed to advance stream.");
  }

  // Utility for getTokenAt and getLineTokens
  function takeToken(cm, pos, precise, asArray) {
    function getObj(copy) {
      return {start: stream.start, end: stream.pos,
              string: stream.current(),
              type: style || null,
              state: copy ? copyState(doc.mode, state) : state};
    }

    var doc = cm.doc, mode = doc.mode, style;
    pos = clipPos(doc, pos);
    var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise);
    var stream = new StringStream(line.text, cm.options.tabSize), tokens;
    if (asArray) tokens = [];
    while ((asArray || stream.pos < pos.ch) && !stream.eol()) {
      stream.start = stream.pos;
      style = readToken(mode, stream, state);
      if (asArray) tokens.push(getObj(true));
    }
    return asArray ? tokens : getObj();
  }

  // Run the given mode's parser over a line, calling f for each token.
  function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {
    var flattenSpans = mode.flattenSpans;
    if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;
    var curStart = 0, curStyle = null;
    var stream = new StringStream(text, cm.options.tabSize), style;
    var inner = cm.options.addModeClass && [null];
    if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses);
    while (!stream.eol()) {
      if (stream.pos > cm.options.maxHighlightLength) {
        flattenSpans = false;
        if (forceToEnd) processLine(cm, text, state, stream.pos);
        stream.pos = text.length;
        style = null;
      } else {
        style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses);
      }
      if (inner) {
        var mName = inner[0].name;
        if (mName) style = "m-" + (style ? mName + " " + style : mName);
      }
      if (!flattenSpans || curStyle != style) {
        while (curStart < stream.start) {
          curStart = Math.min(stream.start, curStart + 50000);
          f(curStart, curStyle);
        }
        curStyle = style;
      }
      stream.start = stream.pos;
    }
    while (curStart < stream.pos) {
      // Webkit seems to refuse to render text nodes longer than 57444 characters
      var pos = Math.min(stream.pos, curStart + 50000);
      f(pos, curStyle);
      curStart = pos;
    }
  }

  // Compute a style array (an array starting with a mode generation
  // -- for invalidation -- followed by pairs of end positions and
  // style strings), which is used to highlight the tokens on the
  // line.
  function highlightLine(cm, line, state, forceToEnd) {
    // A styles array always starts with a number identifying the
    // mode/overlays that it is based on (for easy invalidation).
    var st = [cm.state.modeGen], lineClasses = {};
    // Compute the base array of styles
    runMode(cm, line.text, cm.doc.mode, state, function(end, style) {
      st.push(end, style);
    }, lineClasses, forceToEnd);

    // Run overlays, adjust style array.
    for (var o = 0; o < cm.state.overlays.length; ++o) {
      var overlay = cm.state.overlays[o], i = 1, at = 0;
      runMode(cm, line.text, overlay.mode, true, function(end, style) {
        var start = i;
        // Ensure there's a token end at the current position, and that i points at it
        while (at < end) {
          var i_end = st[i];
          if (i_end > end)
            st.splice(i, 1, end, st[i+1], i_end);
          i += 2;
          at = Math.min(end, i_end);
        }
        if (!style) return;
        if (overlay.opaque) {
          st.splice(start, i - start, end, "cm-overlay " + style);
          i = start + 2;
        } else {
          for (; start < i; start += 2) {
            var cur = st[start+1];
            st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style;
          }
        }
      }, lineClasses);
    }

    return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null};
  }

  function getLineStyles(cm, line, updateFrontier) {
    if (!line.styles || line.styles[0] != cm.state.modeGen) {
      var state = getStateBefore(cm, lineNo(line));
      var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state);
      line.stateAfter = state;
      line.styles = result.styles;
      if (result.classes) line.styleClasses = result.classes;
      else if (line.styleClasses) line.styleClasses = null;
      if (updateFrontier === cm.doc.frontier) cm.doc.frontier++;
    }
    return line.styles;
  }

  // Lightweight form of highlight -- proceed over this line and
  // update state, but don't save a style array. Used for lines that
  // aren't currently visible.
  function processLine(cm, text, state, startAt) {
    var mode = cm.doc.mode;
    var stream = new StringStream(text, cm.options.tabSize);
    stream.start = stream.pos = startAt || 0;
    if (text == "") callBlankLine(mode, state);
    while (!stream.eol()) {
      readToken(mode, stream, state);
      stream.start = stream.pos;
    }
  }

  // Convert a style as returned by a mode (either null, or a string
  // containing one or more styles) to a CSS style. This is cached,
  // and also looks for line-wide styles.
  var styleToClassCache = {}, styleToClassCacheWithMode = {};
  function interpretTokenStyle(style, options) {
    if (!style || /^\s*$/.test(style)) return null;
    var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;
    return cache[style] ||
      (cache[style] = style.replace(/\S+/g, "cm-$&"));
  }

  // Render the DOM representation of the text of a line. Also builds
  // up a 'line map', which points at the DOM nodes that represent
  // specific stretches of text, and is used by the measuring code.
  // The returned object contains the DOM node, this map, and
  // information about line-wide styles that were set by the mode.
  function buildLineContent(cm, lineView) {
    // The padding-right forces the element to have a 'border', which
    // is needed on Webkit to be able to get line-level bounding
    // rectangles for it (in measureChar).
    var content = elt("span", null, null, webkit ? "padding-right: .1px" : null);
    var builder = {pre: elt("pre", [content], "CodeMirror-line"), content: content,
                   col: 0, pos: 0, cm: cm,
                   trailingSpace: false,
                   splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")};
    lineView.measure = {};

    // Iterate over the logical lines that make up this visual line.
    for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {
      var line = i ? lineView.rest[i - 1] : lineView.line, order;
      builder.pos = 0;
      builder.addToken = buildToken;
      // Optionally wire in some hacks into the token-rendering
      // algorithm, to deal with browser quirks.
      if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line)))
        builder.addToken = buildTokenBadBidi(builder.addToken, order);
      builder.map = [];
      var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);
      insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));
      if (line.styleClasses) {
        if (line.styleClasses.bgClass)
          builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || "");
        if (line.styleClasses.textClass)
          builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || "");
      }

      // Ensure at least a single node is present, for measuring.
      if (builder.map.length == 0)
        builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));

      // Store the map and a cache object for the current logical line
      if (i == 0) {
        lineView.measure.map = builder.map;
        lineView.measure.cache = {};
      } else {
        (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);
        (lineView.measure.caches || (lineView.measure.caches = [])).push({});
      }
    }

    // See issue #2901
    if (webkit) {
      var last = builder.content.lastChild
      if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab")))
        builder.content.className = "cm-tab-wrap-hack";
    }

    signal(cm, "renderLine", cm, lineView.line, builder.pre);
    if (builder.pre.className)
      builder.textClass = joinClasses(builder.pre.className, builder.textClass || "");

    return builder;
  }

  function defaultSpecialCharPlaceholder(ch) {
    var token = elt("span", "\u2022", "cm-invalidchar");
    token.title = "\\u" + ch.charCodeAt(0).toString(16);
    token.setAttribute("aria-label", token.title);
    return token;
  }

  // Build up the DOM representation for a single token, and add it to
  // the line map. Takes care to render special characters separately.
  function buildToken(builder, text, style, startStyle, endStyle, title, css) {
    if (!text) return;
    var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text
    var special = builder.cm.state.specialChars, mustWrap = false;
    if (!special.test(text)) {
      builder.col += text.length;
      var content = document.createTextNode(displayText);
      builder.map.push(builder.pos, builder.pos + text.length, content);
      if (ie && ie_version < 9) mustWrap = true;
      builder.pos += text.length;
    } else {
      var content = document.createDocumentFragment(), pos = 0;
      while (true) {
        special.lastIndex = pos;
        var m = special.exec(text);
        var skipped = m ? m.index - pos : text.length - pos;
        if (skipped) {
          var txt = document.createTextNode(displayText.slice(pos, pos + skipped));
          if (ie && ie_version < 9) content.appendChild(elt("span", [txt]));
          else content.appendChild(txt);
          builder.map.push(builder.pos, builder.pos + skipped, txt);
          builder.col += skipped;
          builder.pos += skipped;
        }
        if (!m) break;
        pos += skipped + 1;
        if (m[0] == "\t") {
          var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;
          var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab"));
          txt.setAttribute("role", "presentation");
          txt.setAttribute("cm-text", "\t");
          builder.col += tabWidth;
        } else if (m[0] == "\r" || m[0] == "\n") {
          var txt = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar"));
          txt.setAttribute("cm-text", m[0]);
          builder.col += 1;
        } else {
          var txt = builder.cm.options.specialCharPlaceholder(m[0]);
          txt.setAttribute("cm-text", m[0]);
          if (ie && ie_version < 9) content.appendChild(elt("span", [txt]));
          else content.appendChild(txt);
          builder.col += 1;
        }
        builder.map.push(builder.pos, builder.pos + 1, txt);
        builder.pos++;
      }
    }
    builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32
    if (style || startStyle || endStyle || mustWrap || css) {
      var fullStyle = style || "";
      if (startStyle) fullStyle += startStyle;
      if (endStyle) fullStyle += endStyle;
      var token = elt("span", [content], fullStyle, css);
      if (title) token.title = title;
      return builder.content.appendChild(token);
    }
    builder.content.appendChild(content);
  }

  function splitSpaces(text, trailingBefore) {
    if (text.length > 1 && !/  /.test(text)) return text
    var spaceBefore = trailingBefore, result = ""
    for (var i = 0; i < text.length; i++) {
      var ch = text.charAt(i)
      if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))
        ch = "\u00a0"
      result += ch
      spaceBefore = ch == " "
    }
    return result
  }

  // Work around nonsense dimensions being reported for stretches of
  // right-to-left text.
  function buildTokenBadBidi(inner, order) {
    return function(builder, text, style, startStyle, endStyle, title, css) {
      style = style ? style + " cm-force-border" : "cm-force-border";
      var start = builder.pos, end = start + text.length;
      for (;;) {
        // Find the part that overlaps with the start of this text
        for (var i = 0; i < order.length; i++) {
          var part = order[i];
          if (part.to > start && part.from <= start) break;
        }
        if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title, css);
        inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css);
        startStyle = null;
        text = text.slice(part.to - start);
        start = part.to;
      }
    };
  }

  function buildCollapsedSpan(builder, size, marker, ignoreWidget) {
    var widget = !ignoreWidget && marker.widgetNode;
    if (widget) builder.map.push(builder.pos, builder.pos + size, widget);
    if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {
      if (!widget)
        widget = builder.content.appendChild(document.createElement("span"));
      widget.setAttribute("cm-marker", marker.id);
    }
    if (widget) {
      builder.cm.display.input.setUneditable(widget);
      builder.content.appendChild(widget);
    }
    builder.pos += size;
    builder.trailingSpace = false
  }

  // Outputs a number of spans to make up a line, taking highlighting
  // and marked text into account.
  function insertLineContent(line, builder, styles) {
    var spans = line.markedSpans, allText = line.text, at = 0;
    if (!spans) {
      for (var i = 1; i < styles.length; i+=2)
        builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options));
      return;
    }

    var len = allText.length, pos = 0, i = 1, text = "", style, css;
    var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;
    for (;;) {
      if (nextChange == pos) { // Update current marker set
        spanStyle = spanEndStyle = spanStartStyle = title = css = "";
        collapsed = null; nextChange = Infinity;
        var foundBookmarks = [], endStyles
        for (var j = 0; j < spans.length; ++j) {
          var sp = spans[j], m = sp.marker;
          if (m.type == "bookmark" && sp.from == pos && m.widgetNode) {
            foundBookmarks.push(m);
          } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {
            if (sp.to != null && sp.to != pos && nextChange > sp.to) {
              nextChange = sp.to;
              spanEndStyle = "";
            }
            if (m.className) spanStyle += " " + m.className;
            if (m.css) css = (css ? css + ";" : "") + m.css;
            if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle;
            if (m.endStyle && sp.to == nextChange) (endStyles || (endStyles = [])).push(m.endStyle, sp.to)
            if (m.title && !title) title = m.title;
            if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))
              collapsed = sp;
          } else if (sp.from > pos && nextChange > sp.from) {
            nextChange = sp.from;
          }
        }
        if (endStyles) for (var j = 0; j < endStyles.length; j += 2)
          if (endStyles[j + 1] == nextChange) spanEndStyle += " " + endStyles[j]

        if (!collapsed || collapsed.from == pos) for (var j = 0; j < foundBookmarks.length; ++j)
          buildCollapsedSpan(builder, 0, foundBookmarks[j]);
        if (collapsed && (collapsed.from || 0) == pos) {
          buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,
                             collapsed.marker, collapsed.from == null);
          if (collapsed.to == null) return;
          if (collapsed.to == pos) collapsed = false;
        }
      }
      if (pos >= len) break;

      var upto = Math.min(len, nextChange);
      while (true) {
        if (text) {
          var end = pos + text.length;
          if (!collapsed) {
            var tokenText = end > upto ? text.slice(0, upto - pos) : text;
            builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,
                             spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css);
          }
          if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}
          pos = end;
          spanStartStyle = "";
        }
        text = allText.slice(at, at = styles[i++]);
        style = interpretTokenStyle(styles[i++], builder.cm.options);
      }
    }
  }

  // DOCUMENT DATA STRUCTURE

  // By default, updates that start and end at the beginning of a line
  // are treated specially, in order to make the association of line
  // widgets and marker elements with the text behave more intuitive.
  function isWholeLineUpdate(doc, change) {
    return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" &&
      (!doc.cm || doc.cm.options.wholeLineUpdateBefore);
  }

  // Perform a change on the document data structure.
  function updateDoc(doc, change, markedSpans, estimateHeight) {
    function spansFor(n) {return markedSpans ? markedSpans[n] : null;}
    function update(line, text, spans) {
      updateLine(line, text, spans, estimateHeight);
      signalLater(line, "change", line, change);
    }
    function linesFor(start, end) {
      for (var i = start, result = []; i < end; ++i)
        result.push(new Line(text[i], spansFor(i), estimateHeight));
      return result;
    }

    var from = change.from, to = change.to, text = change.text;
    var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);
    var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;

    // Adjust the line structure
    if (change.full) {
      doc.insert(0, linesFor(0, text.length));
      doc.remove(text.length, doc.size - text.length);
    } else if (isWholeLineUpdate(doc, change)) {
      // This is a whole-line replace. Treated specially to make
      // sure line objects move the way they are supposed to.
      var added = linesFor(0, text.length - 1);
      update(lastLine, lastLine.text, lastSpans);
      if (nlines) doc.remove(from.line, nlines);
      if (added.length) doc.insert(from.line, added);
    } else if (firstLine == lastLine) {
      if (text.length == 1) {
        update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);
      } else {
        var added = linesFor(1, text.length - 1);
        added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));
        update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));
        doc.insert(from.line + 1, added);
      }
    } else if (text.length == 1) {
      update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));
      doc.remove(from.line + 1, nlines);
    } else {
      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));
      update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);
      var added = linesFor(1, text.length - 1);
      if (nlines > 1) doc.remove(from.line + 1, nlines - 1);
      doc.insert(from.line + 1, added);
    }

    signalLater(doc, "change", doc, change);
  }

  // The document is represented as a BTree consisting of leaves, with
  // chunk of lines in them, and branches, with up to ten leaves or
  // other branch nodes below them. The top node is always a branch
  // node, and is the document object itself (meaning it has
  // additional methods and properties).
  //
  // All nodes have parent links. The tree is used both to go from
  // line numbers to line objects, and to go from objects to numbers.
  // It also indexes by height, and is used to convert between height
  // and line object, and to find the total height of the document.
  //
  // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html

  function LeafChunk(lines) {
    this.lines = lines;
    this.parent = null;
    for (var i = 0, height = 0; i < lines.length; ++i) {
      lines[i].parent = this;
      height += lines[i].height;
    }
    this.height = height;
  }

  LeafChunk.prototype = {
    chunkSize: function() { return this.lines.length; },
    // Remove the n lines at offset 'at'.
    removeInner: function(at, n) {
      for (var i = at, e = at + n; i < e; ++i) {
        var line = this.lines[i];
        this.height -= line.height;
        cleanUpLine(line);
        signalLater(line, "delete");
      }
      this.lines.splice(at, n);
    },
    // Helper used to collapse a small branch into a single leaf.
    collapse: function(lines) {
      lines.push.apply(lines, this.lines);
    },
    // Insert the given array of lines at offset 'at', count them as
    // having the given height.
    insertInner: function(at, lines, height) {
      this.height += height;
      this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));
      for (var i = 0; i < lines.length; ++i) lines[i].parent = this;
    },
    // Used to iterate over a part of the tree.
    iterN: function(at, n, op) {
      for (var e = at + n; at < e; ++at)
        if (op(this.lines[at])) return true;
    }
  };

  function BranchChunk(children) {
    this.children = children;
    var size = 0, height = 0;
    for (var i = 0; i < children.length; ++i) {
      var ch = children[i];
      size += ch.chunkSize(); height += ch.height;
      ch.parent = this;
    }
    this.size = size;
    this.height = height;
    this.parent = null;
  }

  BranchChunk.prototype = {
    chunkSize: function() { return this.size; },
    removeInner: function(at, n) {
      this.size -= n;
      for (var i = 0; i < this.children.length; ++i) {
        var child = this.children[i], sz = child.chunkSize();
        if (at < sz) {
          var rm = Math.min(n, sz - at), oldHeight = child.height;
          child.removeInner(at, rm);
          this.height -= oldHeight - child.height;
          if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }
          if ((n -= rm) == 0) break;
          at = 0;
        } else at -= sz;
      }
      // If the result is smaller than 25 lines, ensure that it is a
      // single leaf node.
      if (this.size - n < 25 &&
          (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {
        var lines = [];
        this.collapse(lines);
        this.children = [new LeafChunk(lines)];
        this.children[0].parent = this;
      }
    },
    collapse: function(lines) {
      for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines);
    },
    insertInner: function(at, lines, height) {
      this.size += lines.length;
      this.height += height;
      for (var i = 0; i < this.children.length; ++i) {
        var child = this.children[i], sz = child.chunkSize();
        if (at <= sz) {
          child.insertInner(at, lines, height);
          if (child.lines && child.lines.length > 50) {
            // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.
            // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.
            var remaining = child.lines.length % 25 + 25
            for (var pos = remaining; pos < child.lines.length;) {
              var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));
              child.height -= leaf.height;
              this.children.splice(++i, 0, leaf);
              leaf.parent = this;
            }
            child.lines = child.lines.slice(0, remaining);
            this.maybeSpill();
          }
          break;
        }
        at -= sz;
      }
    },
    // When a node has grown, check whether it should be split.
    maybeSpill: function() {
      if (this.children.length <= 10) return;
      var me = this;
      do {
        var spilled = me.children.splice(me.children.length - 5, 5);
        var sibling = new BranchChunk(spilled);
        if (!me.parent) { // Become the parent node
          var copy = new BranchChunk(me.children);
          copy.parent = me;
          me.children = [copy, sibling];
          me = copy;
       } else {
          me.size -= sibling.size;
          me.height -= sibling.height;
          var myIndex = indexOf(me.parent.children, me);
          me.parent.children.splice(myIndex + 1, 0, sibling);
        }
        sibling.parent = me.parent;
      } while (me.children.length > 10);
      me.parent.maybeSpill();
    },
    iterN: function(at, n, op) {
      for (var i = 0; i < this.children.length; ++i) {
        var child = this.children[i], sz = child.chunkSize();
        if (at < sz) {
          var used = Math.min(n, sz - at);
          if (child.iterN(at, used, op)) return true;
          if ((n -= used) == 0) break;
          at = 0;
        } else at -= sz;
      }
    }
  };

  var nextDocId = 0;
  var Doc = CodeMirror.Doc = function(text, mode, firstLine, lineSep) {
    if (!(this instanceof Doc)) return new Doc(text, mode, firstLine, lineSep);
    if (firstLine == null) firstLine = 0;

    BranchChunk.call(this, [new LeafChunk([new Line("", null)])]);
    this.first = firstLine;
    this.scrollTop = this.scrollLeft = 0;
    this.cantEdit = false;
    this.cleanGeneration = 1;
    this.frontier = firstLine;
    var start = Pos(firstLine, 0);
    this.sel = simpleSelection(start);
    this.history = new History(null);
    this.id = ++nextDocId;
    this.modeOption = mode;
    this.lineSep = lineSep;
    this.extend = false;

    if (typeof text == "string") text = this.splitLines(text);
    updateDoc(this, {from: start, to: start, text: text});
    setSelection(this, simpleSelection(start), sel_dontScroll);
  };

  Doc.prototype = createObj(BranchChunk.prototype, {
    constructor: Doc,
    // Iterate over the document. Supports two forms -- with only one
    // argument, it calls that for each line in the document. With
    // three, it iterates over the range given by the first two (with
    // the second being non-inclusive).
    iter: function(from, to, op) {
      if (op) this.iterN(from - this.first, to - from, op);
      else this.iterN(this.first, this.first + this.size, from);
    },

    // Non-public interface for adding and removing lines.
    insert: function(at, lines) {
      var height = 0;
      for (var i = 0; i < lines.length; ++i) height += lines[i].height;
      this.insertInner(at - this.first, lines, height);
    },
    remove: function(at, n) { this.removeInner(at - this.first, n); },

    // From here, the methods are part of the public interface. Most
    // are also available from CodeMirror (editor) instances.

    getValue: function(lineSep) {
      var lines = getLines(this, this.first, this.first + this.size);
      if (lineSep === false) return lines;
      return lines.join(lineSep || this.lineSeparator());
    },
    setValue: docMethodOp(function(code) {
      var top = Pos(this.first, 0), last = this.first + this.size - 1;
      makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),
                        text: this.splitLines(code), origin: "setValue", full: true}, true);
      setSelection(this, simpleSelection(top));
    }),
    replaceRange: function(code, from, to, origin) {
      from = clipPos(this, from);
      to = to ? clipPos(this, to) : from;
      replaceRange(this, code, from, to, origin);
    },
    getRange: function(from, to, lineSep) {
      var lines = getBetween(this, clipPos(this, from), clipPos(this, to));
      if (lineSep === false) return lines;
      return lines.join(lineSep || this.lineSeparator());
    },

    getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;},

    getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);},
    getLineNumber: function(line) {return lineNo(line);},

    getLineHandleVisualStart: function(line) {
      if (typeof line == "number") line = getLine(this, line);
      return visualLine(line);
    },

    lineCount: function() {return this.size;},
    firstLine: function() {return this.first;},
    lastLine: function() {return this.first + this.size - 1;},

    clipPos: function(pos) {return clipPos(this, pos);},

    getCursor: function(start) {
      var range = this.sel.primary(), pos;
      if (start == null || start == "head") pos = range.head;
      else if (start == "anchor") pos = range.anchor;
      else if (start == "end" || start == "to" || start === false) pos = range.to();
      else pos = range.from();
      return pos;
    },
    listSelections: function() { return this.sel.ranges; },
    somethingSelected: function() {return this.sel.somethingSelected();},

    setCursor: docMethodOp(function(line, ch, options) {
      setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options);
    }),
    setSelection: docMethodOp(function(anchor, head, options) {
      setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);
    }),
    extendSelection: docMethodOp(function(head, other, options) {
      extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);
    }),
    extendSelections: docMethodOp(function(heads, options) {
      extendSelections(this, clipPosArray(this, heads), options);
    }),
    extendSelectionsBy: docMethodOp(function(f, options) {
      var heads = map(this.sel.ranges, f);
      extendSelections(this, clipPosArray(this, heads), options);
    }),
    setSelections: docMethodOp(function(ranges, primary, options) {
      if (!ranges.length) return;
      for (var i = 0, out = []; i < ranges.length; i++)
        out[i] = new Range(clipPos(this, ranges[i].anchor),
                           clipPos(this, ranges[i].head));
      if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex);
      setSelection(this, normalizeSelection(out, primary), options);
    }),
    addSelection: docMethodOp(function(anchor, head, options) {
      var ranges = this.sel.ranges.slice(0);
      ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));
      setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);
    }),

    getSelection: function(lineSep) {
      var ranges = this.sel.ranges, lines;
      for (var i = 0; i < ranges.length; i++) {
        var sel = getBetween(this, ranges[i].from(), ranges[i].to());
        lines = lines ? lines.concat(sel) : sel;
      }
      if (lineSep === false) return lines;
      else return lines.join(lineSep || this.lineSeparator());
    },
    getSelections: function(lineSep) {
      var parts = [], ranges = this.sel.ranges;
      for (var i = 0; i < ranges.length; i++) {
        var sel = getBetween(this, ranges[i].from(), ranges[i].to());
        if (lineSep !== false) sel = sel.join(lineSep || this.lineSeparator());
        parts[i] = sel;
      }
      return parts;
    },
    replaceSelection: function(code, collapse, origin) {
      var dup = [];
      for (var i = 0; i < this.sel.ranges.length; i++)
        dup[i] = code;
      this.replaceSelections(dup, collapse, origin || "+input");
    },
    replaceSelections: docMethodOp(function(code, collapse, origin) {
      var changes = [], sel = this.sel;
      for (var i = 0; i < sel.ranges.length; i++) {
        var range = sel.ranges[i];
        changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};
      }
      var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse);
      for (var i = changes.length - 1; i >= 0; i--)
        makeChange(this, changes[i]);
      if (newSel) setSelectionReplaceHistory(this, newSel);
      else if (this.cm) ensureCursorVisible(this.cm);
    }),
    undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}),
    redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}),
    undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}),
    redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}),

    setExtending: function(val) {this.extend = val;},
    getExtending: function() {return this.extend;},

    historySize: function() {
      var hist = this.history, done = 0, undone = 0;
      for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done;
      for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone;
      return {undo: done, redo: undone};
    },
    clearHistory: function() {this.history = new History(this.history.maxGeneration);},

    markClean: function() {
      this.cleanGeneration = this.changeGeneration(true);
    },
    changeGeneration: function(forceSplit) {
      if (forceSplit)
        this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;
      return this.history.generation;
    },
    isClean: function (gen) {
      return this.history.generation == (gen || this.cleanGeneration);
    },

    getHistory: function() {
      return {done: copyHistoryArray(this.history.done),
              undone: copyHistoryArray(this.history.undone)};
    },
    setHistory: function(histData) {
      var hist = this.history = new History(this.history.maxGeneration);
      hist.done = copyHistoryArray(histData.done.slice(0), null, true);
      hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);
    },

    addLineClass: docMethodOp(function(handle, where, cls) {
      return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) {
        var prop = where == "text" ? "textClass"
                 : where == "background" ? "bgClass"
                 : where == "gutter" ? "gutterClass" : "wrapClass";
        if (!line[prop]) line[prop] = cls;
        else if (classTest(cls).test(line[prop])) return false;
        else line[prop] += " " + cls;
        return true;
      });
    }),
    removeLineClass: docMethodOp(function(handle, where, cls) {
      return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) {
        var prop = where == "text" ? "textClass"
                 : where == "background" ? "bgClass"
                 : where == "gutter" ? "gutterClass" : "wrapClass";
        var cur = line[prop];
        if (!cur) return false;
        else if (cls == null) line[prop] = null;
        else {
          var found = cur.match(classTest(cls));
          if (!found) return false;
          var end = found.index + found[0].length;
          line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null;
        }
        return true;
      });
    }),

    addLineWidget: docMethodOp(function(handle, node, options) {
      return addLineWidget(this, handle, node, options);
    }),
    removeLineWidget: function(widget) { widget.clear(); },

    markText: function(from, to, options) {
      return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range");
    },
    setBookmark: function(pos, options) {
      var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),
                      insertLeft: options && options.insertLeft,
                      clearWhenEmpty: false, shared: options && options.shared,
                      handleMouseEvents: options && options.handleMouseEvents};
      pos = clipPos(this, pos);
      return markText(this, pos, pos, realOpts, "bookmark");
    },
    findMarksAt: function(pos) {
      pos = clipPos(this, pos);
      var markers = [], spans = getLine(this, pos.line).markedSpans;
      if (spans) for (var i = 0; i < spans.length; ++i) {
        var span = spans[i];
        if ((span.from == null || span.from <= pos.ch) &&
            (span.to == null || span.to >= pos.ch))
          markers.push(span.marker.parent || span.marker);
      }
      return markers;
    },
    findMarks: function(from, to, filter) {
      from = clipPos(this, from); to = clipPos(this, to);
      var found = [], lineNo = from.line;
      this.iter(from.line, to.line + 1, function(line) {
        var spans = line.markedSpans;
        if (spans) for (var i = 0; i < spans.length; i++) {
          var span = spans[i];
          if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||
                span.from == null && lineNo != from.line ||
                span.from != null && lineNo == to.line && span.from >= to.ch) &&
              (!filter || filter(span.marker)))
            found.push(span.marker.parent || span.marker);
        }
        ++lineNo;
      });
      return found;
    },
    getAllMarks: function() {
      var markers = [];
      this.iter(function(line) {
        var sps = line.markedSpans;
        if (sps) for (var i = 0; i < sps.length; ++i)
          if (sps[i].from != null) markers.push(sps[i].marker);
      });
      return markers;
    },

    posFromIndex: function(off) {
      var ch, lineNo = this.first, sepSize = this.lineSeparator().length;
      this.iter(function(line) {
        var sz = line.text.length + sepSize;
        if (sz > off) { ch = off; return true; }
        off -= sz;
        ++lineNo;
      });
      return clipPos(this, Pos(lineNo, ch));
    },
    indexFromPos: function (coords) {
      coords = clipPos(this, coords);
      var index = coords.ch;
      if (coords.line < this.first || coords.ch < 0) return 0;
      var sepSize = this.lineSeparator().length;
      this.iter(this.first, coords.line, function (line) {
        index += line.text.length + sepSize;
      });
      return index;
    },

    copy: function(copyHistory) {
      var doc = new Doc(getLines(this, this.first, this.first + this.size),
                        this.modeOption, this.first, this.lineSep);
      doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;
      doc.sel = this.sel;
      doc.extend = false;
      if (copyHistory) {
        doc.history.undoDepth = this.history.undoDepth;
        doc.setHistory(this.getHistory());
      }
      return doc;
    },

    linkedDoc: function(options) {
      if (!options) options = {};
      var from = this.first, to = this.first + this.size;
      if (options.from != null && options.from > from) from = options.from;
      if (options.to != null && options.to < to) to = options.to;
      var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep);
      if (options.sharedHist) copy.history = this.history;
      (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});
      copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];
      copySharedMarkers(copy, findSharedMarkers(this));
      return copy;
    },
    unlinkDoc: function(other) {
      if (other instanceof CodeMirror) other = other.doc;
      if (this.linked) for (var i = 0; i < this.linked.length; ++i) {
        var link = this.linked[i];
        if (link.doc != other) continue;
        this.linked.splice(i, 1);
        other.unlinkDoc(this);
        detachSharedMarkers(findSharedMarkers(this));
        break;
      }
      // If the histories were shared, split them again
      if (other.history == this.history) {
        var splitIds = [other.id];
        linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true);
        other.history = new History(null);
        other.history.done = copyHistoryArray(this.history.done, splitIds);
        other.history.undone = copyHistoryArray(this.history.undone, splitIds);
      }
    },
    iterLinkedDocs: function(f) {linkedDocs(this, f);},

    getMode: function() {return this.mode;},
    getEditor: function() {return this.cm;},

    splitLines: function(str) {
      if (this.lineSep) return str.split(this.lineSep);
      return splitLinesAuto(str);
    },
    lineSeparator: function() { return this.lineSep || "\n"; }
  });

  // Public alias.
  Doc.prototype.eachLine = Doc.prototype.iter;

  // Set up methods on CodeMirror's prototype to redirect to the editor's document.
  var dontDelegate = "iter insert remove copy getEditor constructor".split(" ");
  for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)
    CodeMirror.prototype[prop] = (function(method) {
      return function() {return method.apply(this.doc, arguments);};
    })(Doc.prototype[prop]);

  eventMixin(Doc);

  // Call f for all linked documents.
  function linkedDocs(doc, f, sharedHistOnly) {
    function propagate(doc, skip, sharedHist) {
      if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) {
        var rel = doc.linked[i];
        if (rel.doc == skip) continue;
        var shared = sharedHist && rel.sharedHist;
        if (sharedHistOnly && !shared) continue;
        f(rel.doc, shared);
        propagate(rel.doc, doc, shared);
      }
    }
    propagate(doc, null, true);
  }

  // Attach a document to an editor.
  function attachDoc(cm, doc) {
    if (doc.cm) throw new Error("This document is already in use.");
    cm.doc = doc;
    doc.cm = cm;
    estimateLineHeights(cm);
    loadMode(cm);
    if (!cm.options.lineWrapping) findMaxLine(cm);
    cm.options.mode = doc.modeOption;
    regChange(cm);
  }

  // LINE UTILITIES

  // Find the line object corresponding to the given line number.
  function getLine(doc, n) {
    n -= doc.first;
    if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document.");
    for (var chunk = doc; !chunk.lines;) {
      for (var i = 0;; ++i) {
        var child = chunk.children[i], sz = child.chunkSize();
        if (n < sz) { chunk = child; break; }
        n -= sz;
      }
    }
    return chunk.lines[n];
  }

  // Get the part of a document between two positions, as an array of
  // strings.
  function getBetween(doc, start, end) {
    var out = [], n = start.line;
    doc.iter(start.line, end.line + 1, function(line) {
      var text = line.text;
      if (n == end.line) text = text.slice(0, end.ch);
      if (n == start.line) text = text.slice(start.ch);
      out.push(text);
      ++n;
    });
    return out;
  }
  // Get the lines between from and to, as array of strings.
  function getLines(doc, from, to) {
    var out = [];
    doc.iter(from, to, function(line) { out.push(line.text); });
    return out;
  }

  // Update the height of a line, propagating the height change
  // upwards to parent nodes.
  function updateLineHeight(line, height) {
    var diff = height - line.height;
    if (diff) for (var n = line; n; n = n.parent) n.height += diff;
  }

  // Given a line object, find its line number by walking up through
  // its parent links.
  function lineNo(line) {
    if (line.parent == null) return null;
    var cur = line.parent, no = indexOf(cur.lines, line);
    for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {
      for (var i = 0;; ++i) {
        if (chunk.children[i] == cur) break;
        no += chunk.children[i].chunkSize();
      }
    }
    return no + cur.first;
  }

  // Find the line at the given vertical position, using the height
  // information in the document tree.
  function lineAtHeight(chunk, h) {
    var n = chunk.first;
    outer: do {
      for (var i = 0; i < chunk.children.length; ++i) {
        var child = chunk.children[i], ch = child.height;
        if (h < ch) { chunk = child; continue outer; }
        h -= ch;
        n += child.chunkSize();
      }
      return n;
    } while (!chunk.lines);
    for (var i = 0; i < chunk.lines.length; ++i) {
      var line = chunk.lines[i], lh = line.height;
      if (h < lh) break;
      h -= lh;
    }
    return n + i;
  }


  // Find the height above the given line.
  function heightAtLine(lineObj) {
    lineObj = visualLine(lineObj);

    var h = 0, chunk = lineObj.parent;
    for (var i = 0; i < chunk.lines.length; ++i) {
      var line = chunk.lines[i];
      if (line == lineObj) break;
      else h += line.height;
    }
    for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {
      for (var i = 0; i < p.children.length; ++i) {
        var cur = p.children[i];
        if (cur == chunk) break;
        else h += cur.height;
      }
    }
    return h;
  }

  // Get the bidi ordering for the given line (and cache it). Returns
  // false for lines that are fully left-to-right, and an array of
  // BidiSpan objects otherwise.
  function getOrder(line) {
    var order = line.order;
    if (order == null) order = line.order = bidiOrdering(line.text);
    return order;
  }

  // HISTORY

  function History(startGen) {
    // Arrays of change events and selections. Doing something adds an
    // event to done and clears undo. Undoing moves events from done
    // to undone, redoing moves them in the other direction.
    this.done = []; this.undone = [];
    this.undoDepth = Infinity;
    // Used to track when changes can be merged into a single undo
    // event
    this.lastModTime = this.lastSelTime = 0;
    this.lastOp = this.lastSelOp = null;
    this.lastOrigin = this.lastSelOrigin = null;
    // Used by the isClean() method
    this.generation = this.maxGeneration = startGen || 1;
  }

  // Create a history change event from an updateDoc-style change
  // object.
  function historyChangeFromChange(doc, change) {
    var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};
    attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);
    linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true);
    return histChange;
  }

  // Pop all selection events off the end of a history array. Stop at
  // a change event.
  function clearSelectionEvents(array) {
    while (array.length) {
      var last = lst(array);
      if (last.ranges) array.pop();
      else break;
    }
  }

  // Find the top change event in the history. Pop off selection
  // events that are in the way.
  function lastChangeEvent(hist, force) {
    if (force) {
      clearSelectionEvents(hist.done);
      return lst(hist.done);
    } else if (hist.done.length && !lst(hist.done).ranges) {
      return lst(hist.done);
    } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {
      hist.done.pop();
      return lst(hist.done);
    }
  }

  // Register a change in the history. Merges changes that are within
  // a single operation, or are close together with an origin that
  // allows merging (starting with "+") into a single event.
  function addChangeToHistory(doc, change, selAfter, opId) {
    var hist = doc.history;
    hist.undone.length = 0;
    var time = +new Date, cur;

    if ((hist.lastOp == opId ||
         hist.lastOrigin == change.origin && change.origin &&
         ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||
          change.origin.charAt(0) == "*")) &&
        (cur = lastChangeEvent(hist, hist.lastOp == opId))) {
      // Merge this change into the last event
      var last = lst(cur.changes);
      if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {
        // Optimized case for simple insertion -- don't want to add
        // new changesets for every character typed
        last.to = changeEnd(change);
      } else {
        // Add new sub-event
        cur.changes.push(historyChangeFromChange(doc, change));
      }
    } else {
      // Can not be merged, start a new event.
      var before = lst(hist.done);
      if (!before || !before.ranges)
        pushSelectionToHistory(doc.sel, hist.done);
      cur = {changes: [historyChangeFromChange(doc, change)],
             generation: hist.generation};
      hist.done.push(cur);
      while (hist.done.length > hist.undoDepth) {
        hist.done.shift();
        if (!hist.done[0].ranges) hist.done.shift();
      }
    }
    hist.done.push(selAfter);
    hist.generation = ++hist.maxGeneration;
    hist.lastModTime = hist.lastSelTime = time;
    hist.lastOp = hist.lastSelOp = opId;
    hist.lastOrigin = hist.lastSelOrigin = change.origin;

    if (!last) signal(doc, "historyAdded");
  }

  function selectionEventCanBeMerged(doc, origin, prev, sel) {
    var ch = origin.charAt(0);
    return ch == "*" ||
      ch == "+" &&
      prev.ranges.length == sel.ranges.length &&
      prev.somethingSelected() == sel.somethingSelected() &&
      new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);
  }

  // Called whenever the selection changes, sets the new selection as
  // the pending selection in the history, and pushes the old pending
  // selection into the 'done' array when it was significantly
  // different (in number of selected ranges, emptiness, or time).
  function addSelectionToHistory(doc, sel, opId, options) {
    var hist = doc.history, origin = options && options.origin;

    // A new event is started when the previous origin does not match
    // the current, or the origins don't allow matching. Origins
    // starting with * are always merged, those starting with + are
    // merged when similar and close together in time.
    if (opId == hist.lastSelOp ||
        (origin && hist.lastSelOrigin == origin &&
         (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||
          selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))
      hist.done[hist.done.length - 1] = sel;
    else
      pushSelectionToHistory(sel, hist.done);

    hist.lastSelTime = +new Date;
    hist.lastSelOrigin = origin;
    hist.lastSelOp = opId;
    if (options && options.clearRedo !== false)
      clearSelectionEvents(hist.undone);
  }

  function pushSelectionToHistory(sel, dest) {
    var top = lst(dest);
    if (!(top && top.ranges && top.equals(sel)))
      dest.push(sel);
  }

  // Used to store marked span information in the history.
  function attachLocalSpans(doc, change, from, to) {
    var existing = change["spans_" + doc.id], n = 0;
    doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) {
      if (line.markedSpans)
        (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans;
      ++n;
    });
  }

  // When un/re-doing restores text containing marked spans, those
  // that have been explicitly cleared should not be restored.
  function removeClearedSpans(spans) {
    if (!spans) return null;
    for (var i = 0, out; i < spans.length; ++i) {
      if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); }
      else if (out) out.push(spans[i]);
    }
    return !out ? spans : out.length ? out : null;
  }

  // Retrieve and filter the old marked spans stored in a change event.
  function getOldSpans(doc, change) {
    var found = change["spans_" + doc.id];
    if (!found) return null;
    for (var i = 0, nw = []; i < change.text.length; ++i)
      nw.push(removeClearedSpans(found[i]));
    return nw;
  }

  // Used both to provide a JSON-safe object in .getHistory, and, when
  // detaching a document, to split the history in two
  function copyHistoryArray(events, newGroup, instantiateSel) {
    for (var i = 0, copy = []; i < events.length; ++i) {
      var event = events[i];
      if (event.ranges) {
        copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);
        continue;
      }
      var changes = event.changes, newChanges = [];
      copy.push({changes: newChanges});
      for (var j = 0; j < changes.length; ++j) {
        var change = changes[j], m;
        newChanges.push({from: change.from, to: change.to, text: change.text});
        if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) {
          if (indexOf(newGroup, Number(m[1])) > -1) {
            lst(newChanges)[prop] = change[prop];
            delete change[prop];
          }
        }
      }
    }
    return copy;
  }

  // Rebasing/resetting history to deal with externally-sourced changes

  function rebaseHistSelSingle(pos, from, to, diff) {
    if (to < pos.line) {
      pos.line += diff;
    } else if (from < pos.line) {
      pos.line = from;
      pos.ch = 0;
    }
  }

  // Tries to rebase an array of history events given a change in the
  // document. If the change touches the same lines as the event, the
  // event, and everything 'behind' it, is discarded. If the change is
  // before the event, the event's positions are updated. Uses a
  // copy-on-write scheme for the positions, to avoid having to
  // reallocate them all on every rebase, but also avoid problems with
  // shared position objects being unsafely updated.
  function rebaseHistArray(array, from, to, diff) {
    for (var i = 0; i < array.length; ++i) {
      var sub = array[i], ok = true;
      if (sub.ranges) {
        if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }
        for (var j = 0; j < sub.ranges.length; j++) {
          rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);
          rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);
        }
        continue;
      }
      for (var j = 0; j < sub.changes.length; ++j) {
        var cur = sub.changes[j];
        if (to < cur.from.line) {
          cur.from = Pos(cur.from.line + diff, cur.from.ch);
          cur.to = Pos(cur.to.line + diff, cur.to.ch);
        } else if (from <= cur.to.line) {
          ok = false;
          break;
        }
      }
      if (!ok) {
        array.splice(0, i + 1);
        i = 0;
      }
    }
  }

  function rebaseHist(hist, change) {
    var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;
    rebaseHistArray(hist.done, from, to, diff);
    rebaseHistArray(hist.undone, from, to, diff);
  }

  // EVENT UTILITIES

  // Due to the fact that we still support jurassic IE versions, some
  // compatibility wrappers are needed.

  var e_preventDefault = CodeMirror.e_preventDefault = function(e) {
    if (e.preventDefault) e.preventDefault();
    else e.returnValue = false;
  };
  var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) {
    if (e.stopPropagation) e.stopPropagation();
    else e.cancelBubble = true;
  };
  function e_defaultPrevented(e) {
    return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;
  }
  var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);};

  function e_target(e) {return e.target || e.srcElement;}
  function e_button(e) {
    var b = e.which;
    if (b == null) {
      if (e.button & 1) b = 1;
      else if (e.button & 2) b = 3;
      else if (e.button & 4) b = 2;
    }
    if (mac && e.ctrlKey && b == 1) b = 3;
    return b;
  }

  // EVENT HANDLING

  // Lightweight event framework. on/off also work on DOM nodes,
  // registering native DOM handlers.

  var on = CodeMirror.on = function(emitter, type, f) {
    if (emitter.addEventListener)
      emitter.addEventListener(type, f, false);
    else if (emitter.attachEvent)
      emitter.attachEvent("on" + type, f);
    else {
      var map = emitter._handlers || (emitter._handlers = {});
      var arr = map[type] || (map[type] = []);
      arr.push(f);
    }
  };

  var noHandlers = []
  function getHandlers(emitter, type, copy) {
    var arr = emitter._handlers && emitter._handlers[type]
    if (copy) return arr && arr.length > 0 ? arr.slice() : noHandlers
    else return arr || noHandlers
  }

  var off = CodeMirror.off = function(emitter, type, f) {
    if (emitter.removeEventListener)
      emitter.removeEventListener(type, f, false);
    else if (emitter.detachEvent)
      emitter.detachEvent("on" + type, f);
    else {
      var handlers = getHandlers(emitter, type, false)
      for (var i = 0; i < handlers.length; ++i)
        if (handlers[i] == f) { handlers.splice(i, 1); break; }
    }
  };

  var signal = CodeMirror.signal = function(emitter, type /*, values...*/) {
    var handlers = getHandlers(emitter, type, true)
    if (!handlers.length) return;
    var args = Array.prototype.slice.call(arguments, 2);
    for (var i = 0; i < handlers.length; ++i) handlers[i].apply(null, args);
  };

  var orphanDelayedCallbacks = null;

  // Often, we want to signal events at a point where we are in the
  // middle of some work, but don't want the handler to start calling
  // other methods on the editor, which might be in an inconsistent
  // state or simply not expect any other events to happen.
  // signalLater looks whether there are any handlers, and schedules
  // them to be executed when the last operation ends, or, if no
  // operation is active, when a timeout fires.
  function signalLater(emitter, type /*, values...*/) {
    var arr = getHandlers(emitter, type, false)
    if (!arr.length) return;
    var args = Array.prototype.slice.call(arguments, 2), list;
    if (operationGroup) {
      list = operationGroup.delayedCallbacks;
    } else if (orphanDelayedCallbacks) {
      list = orphanDelayedCallbacks;
    } else {
      list = orphanDelayedCallbacks = [];
      setTimeout(fireOrphanDelayed, 0);
    }
    function bnd(f) {return function(){f.apply(null, args);};};
    for (var i = 0; i < arr.length; ++i)
      list.push(bnd(arr[i]));
  }

  function fireOrphanDelayed() {
    var delayed = orphanDelayedCallbacks;
    orphanDelayedCallbacks = null;
    for (var i = 0; i < delayed.length; ++i) delayed[i]();
  }

  // The DOM events that CodeMirror handles can be overridden by
  // registering a (non-DOM) handler on the editor for the event name,
  // and preventDefault-ing the event in that handler.
  function signalDOMEvent(cm, e, override) {
    if (typeof e == "string")
      e = {type: e, preventDefault: function() { this.defaultPrevented = true; }};
    signal(cm, override || e.type, cm, e);
    return e_defaultPrevented(e) || e.codemirrorIgnore;
  }

  function signalCursorActivity(cm) {
    var arr = cm._handlers && cm._handlers.cursorActivity;
    if (!arr) return;
    var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);
    for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1)
      set.push(arr[i]);
  }

  function hasHandler(emitter, type) {
    return getHandlers(emitter, type).length > 0
  }

  // Add on and off methods to a constructor's prototype, to make
  // registering events on such objects more convenient.
  function eventMixin(ctor) {
    ctor.prototype.on = function(type, f) {on(this, type, f);};
    ctor.prototype.off = function(type, f) {off(this, type, f);};
  }

  // MISC UTILITIES

  // Number of pixels added to scroller and sizer to hide scrollbar
  var scrollerGap = 30;

  // Returned or thrown by various protocols to signal 'I'm not
  // handling this'.
  var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}};

  // Reused option objects for setSelection & friends
  var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"};

  function Delayed() {this.id = null;}
  Delayed.prototype.set = function(ms, f) {
    clearTimeout(this.id);
    this.id = setTimeout(f, ms);
  };

  // Counts the column offset in a string, taking tabs into account.
  // Used mostly to find indentation.
  var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) {
    if (end == null) {
      end = string.search(/[^\s\u00a0]/);
      if (end == -1) end = string.length;
    }
    for (var i = startIndex || 0, n = startValue || 0;;) {
      var nextTab = string.indexOf("\t", i);
      if (nextTab < 0 || nextTab >= end)
        return n + (end - i);
      n += nextTab - i;
      n += tabSize - (n % tabSize);
      i = nextTab + 1;
    }
  };

  // The inverse of countColumn -- find the offset that corresponds to
  // a particular column.
  var findColumn = CodeMirror.findColumn = function(string, goal, tabSize) {
    for (var pos = 0, col = 0;;) {
      var nextTab = string.indexOf("\t", pos);
      if (nextTab == -1) nextTab = string.length;
      var skipped = nextTab - pos;
      if (nextTab == string.length || col + skipped >= goal)
        return pos + Math.min(skipped, goal - col);
      col += nextTab - pos;
      col += tabSize - (col % tabSize);
      pos = nextTab + 1;
      if (col >= goal) return pos;
    }
  }

  var spaceStrs = [""];
  function spaceStr(n) {
    while (spaceStrs.length <= n)
      spaceStrs.push(lst(spaceStrs) + " ");
    return spaceStrs[n];
  }

  function lst(arr) { return arr[arr.length-1]; }

  var selectInput = function(node) { node.select(); };
  if (ios) // Mobile Safari apparently has a bug where select() is broken.
    selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; };
  else if (ie) // Suppress mysterious IE10 errors
    selectInput = function(node) { try { node.select(); } catch(_e) {} };

  function indexOf(array, elt) {
    for (var i = 0; i < array.length; ++i)
      if (array[i] == elt) return i;
    return -1;
  }
  function map(array, f) {
    var out = [];
    for (var i = 0; i < array.length; i++) out[i] = f(array[i], i);
    return out;
  }

  function insertSorted(array, value, score) {
    var pos = 0, priority = score(value)
    while (pos < array.length && score(array[pos]) <= priority) pos++
    array.splice(pos, 0, value)
  }

  function nothing() {}

  function createObj(base, props) {
    var inst;
    if (Object.create) {
      inst = Object.create(base);
    } else {
      nothing.prototype = base;
      inst = new nothing();
    }
    if (props) copyObj(props, inst);
    return inst;
  };

  function copyObj(obj, target, overwrite) {
    if (!target) target = {};
    for (var prop in obj)
      if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))
        target[prop] = obj[prop];
    return target;
  }

  function bind(f) {
    var args = Array.prototype.slice.call(arguments, 1);
    return function(){return f.apply(null, args);};
  }

  var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;
  var isWordCharBasic = CodeMirror.isWordChar = function(ch) {
    return /\w/.test(ch) || ch > "\x80" &&
      (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));
  };
  function isWordChar(ch, helper) {
    if (!helper) return isWordCharBasic(ch);
    if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true;
    return helper.test(ch);
  }

  function isEmpty(obj) {
    for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false;
    return true;
  }

  // Extending unicode characters. A series of a non-extending char +
  // any number of extending chars is treated as a single unit as far
  // as editing and measuring is concerned. This is not fully correct,
  // since some scripts/fonts/browsers also treat other configurations
  // of code points as a group.
  var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;
  function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); }

  // DOM UTILITIES

  function elt(tag, content, className, style) {
    var e = document.createElement(tag);
    if (className) e.className = className;
    if (style) e.style.cssText = style;
    if (typeof content == "string") e.appendChild(document.createTextNode(content));
    else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]);
    return e;
  }

  var range;
  if (document.createRange) range = function(node, start, end, endNode) {
    var r = document.createRange();
    r.setEnd(endNode || node, end);
    r.setStart(node, start);
    return r;
  };
  else range = function(node, start, end) {
    var r = document.body.createTextRange();
    try { r.moveToElementText(node.parentNode); }
    catch(e) { return r; }
    r.collapse(true);
    r.moveEnd("character", end);
    r.moveStart("character", start);
    return r;
  };

  function removeChildren(e) {
    for (var count = e.childNodes.length; count > 0; --count)
      e.removeChild(e.firstChild);
    return e;
  }

  function removeChildrenAndAdd(parent, e) {
    return removeChildren(parent).appendChild(e);
  }

  var contains = CodeMirror.contains = function(parent, child) {
    if (child.nodeType == 3) // Android browser always returns false when child is a textnode
      child = child.parentNode;
    if (parent.contains)
      return parent.contains(child);
    do {
      if (child.nodeType == 11) child = child.host;
      if (child == parent) return true;
    } while (child = child.parentNode);
  };

  function activeElt() {
    var activeElement = document.activeElement;
    while (activeElement && activeElement.root && activeElement.root.activeElement)
      activeElement = activeElement.root.activeElement;
    return activeElement;
  }
  // Older versions of IE throws unspecified error when touching
  // document.activeElement in some cases (during loading, in iframe)
  if (ie && ie_version < 11) activeElt = function() {
    try { return document.activeElement; }
    catch(e) { return document.body; }
  };

  function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*"); }
  var rmClass = CodeMirror.rmClass = function(node, cls) {
    var current = node.className;
    var match = classTest(cls).exec(current);
    if (match) {
      var after = current.slice(match.index + match[0].length);
      node.className = current.slice(0, match.index) + (after ? match[1] + after : "");
    }
  };
  var addClass = CodeMirror.addClass = function(node, cls) {
    var current = node.className;
    if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls;
  };
  function joinClasses(a, b) {
    var as = a.split(" ");
    for (var i = 0; i < as.length; i++)
      if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i];
    return b;
  }

  // WINDOW-WIDE EVENTS

  // These must be handled carefully, because naively registering a
  // handler for each editor will cause the editors to never be
  // garbage collected.

  function forEachCodeMirror(f) {
    if (!document.body.getElementsByClassName) return;
    var byClass = document.body.getElementsByClassName("CodeMirror");
    for (var i = 0; i < byClass.length; i++) {
      var cm = byClass[i].CodeMirror;
      if (cm) f(cm);
    }
  }

  var globalsRegistered = false;
  function ensureGlobalHandlers() {
    if (globalsRegistered) return;
    registerGlobalHandlers();
    globalsRegistered = true;
  }
  function registerGlobalHandlers() {
    // When the window resizes, we need to refresh active editors.
    var resizeTimer;
    on(window, "resize", function() {
      if (resizeTimer == null) resizeTimer = setTimeout(function() {
        resizeTimer = null;
        forEachCodeMirror(onResize);
      }, 100);
    });
    // When the window loses focus, we want to show the editor as blurred
    on(window, "blur", function() {
      forEachCodeMirror(onBlur);
    });
  }

  // FEATURE DETECTION

  // Detect drag-and-drop
  var dragAndDrop = function() {
    // There is *some* kind of drag-and-drop support in IE6-8, but I
    // couldn't get it to work yet.
    if (ie && ie_version < 9) return false;
    var div = elt('div');
    return "draggable" in div || "dragDrop" in div;
  }();

  var zwspSupported;
  function zeroWidthElement(measure) {
    if (zwspSupported == null) {
      var test = elt("span", "\u200b");
      removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")]));
      if (measure.firstChild.offsetHeight != 0)
        zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);
    }
    var node = zwspSupported ? elt("span", "\u200b") :
      elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px");
    node.setAttribute("cm-text", "");
    return node;
  }

  // Feature-detect IE's crummy client rect reporting for bidi text
  var badBidiRects;
  function hasBadBidiRects(measure) {
    if (badBidiRects != null) return badBidiRects;
    var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA"));
    var r0 = range(txt, 0, 1).getBoundingClientRect();
    var r1 = range(txt, 1, 2).getBoundingClientRect();
    removeChildren(measure);
    if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780)
    return badBidiRects = (r1.right - r0.right < 3);
  }

  // See if "".split is the broken IE version, if so, provide an
  // alternative way to split lines.
  var splitLinesAuto = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) {
    var pos = 0, result = [], l = string.length;
    while (pos <= l) {
      var nl = string.indexOf("\n", pos);
      if (nl == -1) nl = string.length;
      var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl);
      var rt = line.indexOf("\r");
      if (rt != -1) {
        result.push(line.slice(0, rt));
        pos += rt + 1;
      } else {
        result.push(line);
        pos = nl + 1;
      }
    }
    return result;
  } : function(string){return string.split(/\r\n?|\n/);};

  var hasSelection = window.getSelection ? function(te) {
    try { return te.selectionStart != te.selectionEnd; }
    catch(e) { return false; }
  } : function(te) {
    try {var range = te.ownerDocument.selection.createRange();}
    catch(e) {}
    if (!range || range.parentElement() != te) return false;
    return range.compareEndPoints("StartToEnd", range) != 0;
  };

  var hasCopyEvent = (function() {
    var e = elt("div");
    if ("oncopy" in e) return true;
    e.setAttribute("oncopy", "return;");
    return typeof e.oncopy == "function";
  })();

  var badZoomedRects = null;
  function hasBadZoomedRects(measure) {
    if (badZoomedRects != null) return badZoomedRects;
    var node = removeChildrenAndAdd(measure, elt("span", "x"));
    var normal = node.getBoundingClientRect();
    var fromRange = range(node, 0, 1).getBoundingClientRect();
    return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;
  }

  // KEY NAMES

  var keyNames = CodeMirror.keyNames = {
    3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt",
    19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End",
    36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert",
    46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod",
    106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete",
    173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\",
    221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete",
    63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"
  };
  (function() {
    // Number keys
    for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i);
    // Alphabetic keys
    for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i);
    // Function keys
    for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i;
  })();

  // BIDI HELPERS

  function iterateBidiSections(order, from, to, f) {
    if (!order) return f(from, to, "ltr");
    var found = false;
    for (var i = 0; i < order.length; ++i) {
      var part = order[i];
      if (part.from < to && part.to > from || from == to && part.to == from) {
        f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr");
        found = true;
      }
    }
    if (!found) f(from, to, "ltr");
  }

  function bidiLeft(part) { return part.level % 2 ? part.to : part.from; }
  function bidiRight(part) { return part.level % 2 ? part.from : part.to; }

  function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; }
  function lineRight(line) {
    var order = getOrder(line);
    if (!order) return line.text.length;
    return bidiRight(lst(order));
  }

  function lineStart(cm, lineN) {
    var line = getLine(cm.doc, lineN);
    var visual = visualLine(line);
    if (visual != line) lineN = lineNo(visual);
    var order = getOrder(visual);
    var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual);
    return Pos(lineN, ch);
  }
  function lineEnd(cm, lineN) {
    var merged, line = getLine(cm.doc, lineN);
    while (merged = collapsedSpanAtEnd(line)) {
      line = merged.find(1, true).line;
      lineN = null;
    }
    var order = getOrder(line);
    var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line);
    return Pos(lineN == null ? lineNo(line) : lineN, ch);
  }
  function lineStartSmart(cm, pos) {
    var start = lineStart(cm, pos.line);
    var line = getLine(cm.doc, start.line);
    var order = getOrder(line);
    if (!order || order[0].level == 0) {
      var firstNonWS = Math.max(0, line.text.search(/\S/));
      var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;
      return Pos(start.line, inWS ? 0 : firstNonWS);
    }
    return start;
  }

  function compareBidiLevel(order, a, b) {
    var linedir = order[0].level;
    if (a == linedir) return true;
    if (b == linedir) return false;
    return a < b;
  }
  var bidiOther;
  function getBidiPartAt(order, pos) {
    bidiOther = null;
    for (var i = 0, found; i < order.length; ++i) {
      var cur = order[i];
      if (cur.from < pos && cur.to > pos) return i;
      if ((cur.from == pos || cur.to == pos)) {
        if (found == null) {
          found = i;
        } else if (compareBidiLevel(order, cur.level, order[found].level)) {
          if (cur.from != cur.to) bidiOther = found;
          return i;
        } else {
          if (cur.from != cur.to) bidiOther = i;
          return found;
        }
      }
    }
    return found;
  }

  function moveInLine(line, pos, dir, byUnit) {
    if (!byUnit) return pos + dir;
    do pos += dir;
    while (pos > 0 && isExtendingChar(line.text.charAt(pos)));
    return pos;
  }

  // This is needed in order to move 'visually' through bi-directional
  // text -- i.e., pressing left should make the cursor go left, even
  // when in RTL text. The tricky part is the 'jumps', where RTL and
  // LTR text touch each other. This often requires the cursor offset
  // to move more than one unit, in order to visually move one unit.
  function moveVisually(line, start, dir, byUnit) {
    var bidi = getOrder(line);
    if (!bidi) return moveLogically(line, start, dir, byUnit);
    var pos = getBidiPartAt(bidi, start), part = bidi[pos];
    var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit);

    for (;;) {
      if (target > part.from && target < part.to) return target;
      if (target == part.from || target == part.to) {
        if (getBidiPartAt(bidi, target) == pos) return target;
        part = bidi[pos += dir];
        return (dir > 0) == part.level % 2 ? part.to : part.from;
      } else {
        part = bidi[pos += dir];
        if (!part) return null;
        if ((dir > 0) == part.level % 2)
          target = moveInLine(line, part.to, -1, byUnit);
        else
          target = moveInLine(line, part.from, 1, byUnit);
      }
    }
  }

  function moveLogically(line, start, dir, byUnit) {
    var target = start + dir;
    if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir;
    return target < 0 || target > line.text.length ? null : target;
  }

  // Bidirectional ordering algorithm
  // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm
  // that this (partially) implements.

  // One-char codes used for character types:
  // L (L):   Left-to-Right
  // R (R):   Right-to-Left
  // r (AL):  Right-to-Left Arabic
  // 1 (EN):  European Number
  // + (ES):  European Number Separator
  // % (ET):  European Number Terminator
  // n (AN):  Arabic Number
  // , (CS):  Common Number Separator
  // m (NSM): Non-Spacing Mark
  // b (BN):  Boundary Neutral
  // s (B):   Paragraph Separator
  // t (S):   Segment Separator
  // w (WS):  Whitespace
  // N (ON):  Other Neutrals

  // Returns null if characters are ordered as they appear
  // (left-to-right), or an array of sections ({from, to, level}
  // objects) in the order in which they occur visually.
  var bidiOrdering = (function() {
    // Character types for codepoints 0 to 0xff
    var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN";
    // Character types for codepoints 0x600 to 0x6ff
    var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm";
    function charType(code) {
      if (code <= 0xf7) return lowTypes.charAt(code);
      else if (0x590 <= code && code <= 0x5f4) return "R";
      else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600);
      else if (0x6ee <= code && code <= 0x8ac) return "r";
      else if (0x2000 <= code && code <= 0x200b) return "w";
      else if (code == 0x200c) return "b";
      else return "L";
    }

    var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;
    var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;
    // Browsers seem to always treat the boundaries of block elements as being L.
    var outerType = "L";

    function BidiSpan(level, from, to) {
      this.level = level;
      this.from = from; this.to = to;
    }

    return function(str) {
      if (!bidiRE.test(str)) return false;
      var len = str.length, types = [];
      for (var i = 0, type; i < len; ++i)
        types.push(type = charType(str.charCodeAt(i)));

      // W1. Examine each non-spacing mark (NSM) in the level run, and
      // change the type of the NSM to the type of the previous
      // character. If the NSM is at the start of the level run, it will
      // get the type of sor.
      for (var i = 0, prev = outerType; i < len; ++i) {
        var type = types[i];
        if (type == "m") types[i] = prev;
        else prev = type;
      }

      // W2. Search backwards from each instance of a European number
      // until the first strong type (R, L, AL, or sor) is found. If an
      // AL is found, change the type of the European number to Arabic
      // number.
      // W3. Change all ALs to R.
      for (var i = 0, cur = outerType; i < len; ++i) {
        var type = types[i];
        if (type == "1" && cur == "r") types[i] = "n";
        else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; }
      }

      // W4. A single European separator between two European numbers
      // changes to a European number. A single common separator between
      // two numbers of the same type changes to that type.
      for (var i = 1, prev = types[0]; i < len - 1; ++i) {
        var type = types[i];
        if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1";
        else if (type == "," && prev == types[i+1] &&
                 (prev == "1" || prev == "n")) types[i] = prev;
        prev = type;
      }

      // W5. A sequence of European terminators adjacent to European
      // numbers changes to all European numbers.
      // W6. Otherwise, separators and terminators change to Other
      // Neutral.
      for (var i = 0; i < len; ++i) {
        var type = types[i];
        if (type == ",") types[i] = "N";
        else if (type == "%") {
          for (var end = i + 1; end < len && types[end] == "%"; ++end) {}
          var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N";
          for (var j = i; j < end; ++j) types[j] = replace;
          i = end - 1;
        }
      }

      // W7. Search backwards from each instance of a European number
      // until the first strong type (R, L, or sor) is found. If an L is
      // found, then change the type of the European number to L.
      for (var i = 0, cur = outerType; i < len; ++i) {
        var type = types[i];
        if (cur == "L" && type == "1") types[i] = "L";
        else if (isStrong.test(type)) cur = type;
      }

      // N1. A sequence of neutrals takes the direction of the
      // surrounding strong text if the text on both sides has the same
      // direction. European and Arabic numbers act as if they were R in
      // terms of their influence on neutrals. Start-of-level-run (sor)
      // and end-of-level-run (eor) are used at level run boundaries.
      // N2. Any remaining neutrals take the embedding direction.
      for (var i = 0; i < len; ++i) {
        if (isNeutral.test(types[i])) {
          for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {}
          var before = (i ? types[i-1] : outerType) == "L";
          var after = (end < len ? types[end] : outerType) == "L";
          var replace = before || after ? "L" : "R";
          for (var j = i; j < end; ++j) types[j] = replace;
          i = end - 1;
        }
      }

      // Here we depart from the documented algorithm, in order to avoid
      // building up an actual levels array. Since there are only three
      // levels (0, 1, 2) in an implementation that doesn't take
      // explicit embedding into account, we can build up the order on
      // the fly, without following the level-based algorithm.
      var order = [], m;
      for (var i = 0; i < len;) {
        if (countsAsLeft.test(types[i])) {
          var start = i;
          for (++i; i < len && countsAsLeft.test(types[i]); ++i) {}
          order.push(new BidiSpan(0, start, i));
        } else {
          var pos = i, at = order.length;
          for (++i; i < len && types[i] != "L"; ++i) {}
          for (var j = pos; j < i;) {
            if (countsAsNum.test(types[j])) {
              if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j));
              var nstart = j;
              for (++j; j < i && countsAsNum.test(types[j]); ++j) {}
              order.splice(at, 0, new BidiSpan(2, nstart, j));
              pos = j;
            } else ++j;
          }
          if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i));
        }
      }
      if (order[0].level == 1 && (m = str.match(/^\s+/))) {
        order[0].from = m[0].length;
        order.unshift(new BidiSpan(0, 0, m[0].length));
      }
      if (lst(order).level == 1 && (m = str.match(/\s+$/))) {
        lst(order).to -= m[0].length;
        order.push(new BidiSpan(0, len - m[0].length, len));
      }
      if (order[0].level == 2)
        order.unshift(new BidiSpan(1, order[0].to, order[0].to));
      if (order[0].level != lst(order).level)
        order.push(new BidiSpan(order[0].level, len, len));

      return order;
    };
  })();

  // THE END

  CodeMirror.version = "5.18.2";

  return CodeMirror;
});
lib/codemirror/lib/codemirror.css000064400000020721147361034410013111 0ustar00/* BASICS */

.CodeMirror {
  /* Set height, width, borders, and global font properties here */
  font-family: monospace;
  height: inherit;
  color: black;
}

/* PADDING */

.CodeMirror-lines {
  padding: 4px 0; /* Vertical padding around content */
}
.CodeMirror pre {
  padding: 0 4px; /* Horizontal padding of content */
}

.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  background-color: white; /* The little square between H and V scrollbars */
}

/* GUTTER */

.CodeMirror-gutters {
  border-right: 1px solid #ddd;
  background-color: #f7f7f7;
  white-space: nowrap;
}
.CodeMirror-linenumbers {}
.CodeMirror-linenumber {
  padding: 0 3px 0 5px;
  min-width: 20px;
  text-align: right;
  color: #999;
  white-space: nowrap;
}

.CodeMirror-guttermarker { color: black; }
.CodeMirror-guttermarker-subtle { color: #999; }

/* CURSOR */

.CodeMirror-cursor {
  border-left: 1px solid black;
  border-right: none;
  width: 0;
}
/* Shown when moving in bi-directional text */
.CodeMirror div.CodeMirror-secondarycursor {
  border-left: 1px solid silver;
}
.cm-fat-cursor .CodeMirror-cursor {
  width: auto;
  border: 0 !important;
  background: #7e7;
}
.cm-fat-cursor div.CodeMirror-cursors {
  z-index: 1;
}

.cm-animate-fat-cursor {
  width: auto;
  border: 0;
  -webkit-animation: blink 1.06s steps(1) infinite;
  -moz-animation: blink 1.06s steps(1) infinite;
  animation: blink 1.06s steps(1) infinite;
  background-color: #7e7;
}
@-moz-keyframes blink {
  0% {}
  50% { background-color: transparent; }
  100% {}
}
@-webkit-keyframes blink {
  0% {}
  50% { background-color: transparent; }
  100% {}
}
@keyframes blink {
  0% {}
  50% { background-color: transparent; }
  100% {}
}

/* Can style cursor different in overwrite (non-insert) mode */
.CodeMirror-overwrite .CodeMirror-cursor {}

.cm-tab { display: inline-block; text-decoration: inherit; }

.CodeMirror-rulers {
  position: absolute;
  left: 0; right: 0; top: -50px; bottom: -20px;
  overflow: hidden;
}
.CodeMirror-ruler {
  border-left: 1px solid #ccc;
  top: 0; bottom: 0;
  position: absolute;
}

/* DEFAULT THEME */

.cm-s-default .cm-header {color: blue;}
.cm-s-default .cm-quote {color: #090;}
.cm-negative {color: #d44;}
.cm-positive {color: #292;}
.cm-header, .cm-strong {font-weight: bold;}
.cm-em {font-style: italic;}
.cm-link {text-decoration: underline;}
.cm-strikethrough {text-decoration: line-through;}

.cm-s-default .cm-keyword {color: #708;}
.cm-s-default .cm-atom {color: #219;}
.cm-s-default .cm-number {color: #164;}
.cm-s-default .cm-def {color: #00f;}
.cm-s-default .cm-variable,
.cm-s-default .cm-punctuation,
.cm-s-default .cm-property,
.cm-s-default .cm-operator {}
.cm-s-default .cm-variable-2 {color: #05a;}
.cm-s-default .cm-variable-3 {color: #085;}
.cm-s-default .cm-comment {color: #a50;}
.cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;}
.cm-s-default .cm-meta {color: #555;}
.cm-s-default .cm-qualifier {color: #555;}
.cm-s-default .cm-builtin {color: #30a;}
.cm-s-default .cm-bracket {color: #997;}
.cm-s-default .cm-tag {color: #170;}
.cm-s-default .cm-attribute {color: #00c;}
.cm-s-default .cm-hr {color: #999;}
.cm-s-default .cm-link {color: #00c;}

.cm-s-default .cm-error {color: #f00;}
.cm-invalidchar {color: #f00;}

.CodeMirror-composing { border-bottom: 2px solid; }

/* Default styles for common addons */

div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
.CodeMirror-activeline-background {background: #e8f2ff;}

/* STOP */

/* The rest of this file contains styles related to the mechanics of
   the editor. You probably shouldn't touch them. */

.CodeMirror {
  position: relative;
  overflow: hidden;
  background: white;
}

.CodeMirror-scroll {
  overflow: scroll !important; /* Things will break if this is overridden */
  /* 30px is the magic margin used to hide the element's real scrollbars */
  /* See overflow: hidden in .CodeMirror */
  margin-bottom: -30px; margin-right: -30px;
  padding-bottom: 30px;
  height: 100%;
  outline: none; /* Prevent dragging from highlighting the element */
  position: relative;
}
.CodeMirror-sizer {
  position: relative;
  border-right: 30px solid transparent;
}

/* The fake, visible scrollbars. Used to force redraw during scrolling
   before actual scrolling happens, thus preventing shaking and
   flickering artifacts. */
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  position: absolute;
  z-index: 6;
  display: none;
}
.CodeMirror-vscrollbar {
  right: 0; top: 0;
  overflow-x: hidden;
  overflow-y: scroll;
}
.CodeMirror-hscrollbar {
  bottom: 0; left: 0;
  overflow-y: hidden;
  overflow-x: scroll;
}
.CodeMirror-scrollbar-filler {
  right: 0; bottom: 0;
}
.CodeMirror-gutter-filler {
  left: 0; bottom: 0;
}

.CodeMirror-gutters {
  position: absolute; left: 0; top: 0;
  min-height: 100%;
  z-index: 3;
}
.CodeMirror-gutter {
  white-space: normal;
  height: 100%;
  display: inline-block;
  vertical-align: top;
  margin-bottom: -30px;
  /* Hack to make IE7 behave */
  *zoom:1;
  *display:inline;
}
.CodeMirror-gutter-wrapper {
  position: absolute;
  z-index: 4;
  background: none !important;
  border: none !important;
}
.CodeMirror-gutter-background {
  position: absolute;
  top: 0; bottom: 0;
  z-index: 4;
}
.CodeMirror-gutter-elt {
  position: absolute;
  cursor: default;
  z-index: 4;
}
.CodeMirror-gutter-wrapper {
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
}

.CodeMirror-lines {
  cursor: text;
  min-height: 1px; /* prevents collapsing before first draw */
}
.CodeMirror pre {
  /* Reset some styles that the rest of the page might have set */
  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
  border-width: 0;
  background: transparent;
  font-family: inherit;
  font-size: inherit;
  margin: 0;
  white-space: pre;
  word-wrap: normal;
  line-height: inherit;
  color: inherit;
  z-index: 2;
  position: relative;
  overflow: visible;
  -webkit-tap-highlight-color: transparent;
  -webkit-font-variant-ligatures: none;
  font-variant-ligatures: none;
}
.CodeMirror-wrap pre {
  word-wrap: break-word;
  white-space: pre-wrap;
  word-break: normal;
}

.CodeMirror-linebackground {
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  z-index: 0;
}

.CodeMirror-linewidget {
  position: relative;
  z-index: 2;
  overflow: auto;
}

.CodeMirror-widget {}

.CodeMirror-code {
  outline: none;
}

/* Force content-box sizing for the elements where we expect it */
.CodeMirror-scroll,
.CodeMirror-sizer,
.CodeMirror-gutter,
.CodeMirror-gutters,
.CodeMirror-linenumber {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}

.CodeMirror-measure {
  position: absolute;
  width: 100%;
  height: 0;
  overflow: hidden;
  visibility: hidden;
}

.CodeMirror-cursor {
  position: absolute;
  pointer-events: none;
}
.CodeMirror-measure pre { position: static; }

div.CodeMirror-cursors {
  visibility: hidden;
  position: relative;
  z-index: 3;
}
div.CodeMirror-dragcursors {
  visibility: visible;
}

.CodeMirror-focused div.CodeMirror-cursors {
  visibility: visible;
}

.CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
.CodeMirror-crosshair { cursor: crosshair; }
.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }
.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }

.cm-searching {
  background: #ffa;
  background: rgba(255, 255, 0, .4);
}

/* IE7 hack to prevent it from returning funny offsetTops on the spans */
.CodeMirror span { *vertical-align: text-bottom; }

/* Used to force a border model for a node */
.cm-force-border { padding-right: .1px; }

@media print {
  /* Hide the cursor when printing */
  .CodeMirror div.CodeMirror-cursors {
    visibility: hidden;
  }
}

/* See issue #2901 */
.cm-tab-wrap-hack:after { content: ''; }

/* Help users use markselection to safely style text background */
span.CodeMirror-selectedtext { background: none; }
lib/codemirror/theme/3024-day.css000064400000003703147361034410012444 0ustar00/*

    Name:       3024 day
    Author:     Jan T. Sott (http://github.com/idleberg)

    CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)

*/

.cm-s-3024-day.CodeMirror { background: #f7f7f7; color: #3a3432; }
.cm-s-3024-day div.CodeMirror-selected { background: #d6d5d4; }

.cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; }
.cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; }

.cm-s-3024-day .CodeMirror-gutters { background: #f7f7f7; border-right: 0px; }
.cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; }
.cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; }
.cm-s-3024-day .CodeMirror-linenumber { color: #807d7c; }

.cm-s-3024-day .CodeMirror-cursor { border-left: 1px solid #5c5855; }

.cm-s-3024-day span.cm-comment { color: #cdab53; }
.cm-s-3024-day span.cm-atom { color: #a16a94; }
.cm-s-3024-day span.cm-number { color: #a16a94; }

.cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute { color: #01a252; }
.cm-s-3024-day span.cm-keyword { color: #db2d20; }
.cm-s-3024-day span.cm-string { color: #fded02; }

.cm-s-3024-day span.cm-variable { color: #01a252; }
.cm-s-3024-day span.cm-variable-2 { color: #01a0e4; }
.cm-s-3024-day span.cm-def { color: #e8bbd0; }
.cm-s-3024-day span.cm-bracket { color: #3a3432; }
.cm-s-3024-day span.cm-tag { color: #db2d20; }
.cm-s-3024-day span.cm-link { color: #a16a94; }
.cm-s-3024-day span.cm-error { background: #db2d20; color: #5c5855; }

.cm-s-3024-day .CodeMirror-activeline-background { background: #e8f2ff; }
.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important; }
lib/main.default.js000064400000014263147361034410010230 0ustar00/**
 * elFinder client options and main script for RequireJS
 *
 * Rename "main.default.js" to "main.js" and edit it if you need configure elFInder options or any things. And use that in elfinder.html.
 * e.g. `<script data-main="./main.js" src="./require.js"></script>`
 **/
(function(){
	"use strict";
	var // jQuery and jQueryUI version
		jqver = '3.3.1',
		uiver = '1.12.1',
		
		// Detect language (optional)
		lang = (function() {
			var locq = window.location.search,
				fullLang, locm, lang;
			if (locq && (locm = locq.match(/lang=([a-zA-Z_-]+)/))) {
				// detection by url query (?lang=xx)
				fullLang = locm[1];
			} else {
				// detection by browser language
				fullLang = (navigator.browserLanguage || navigator.language || navigator.userLanguage);
			}
			lang = fullLang.substr(0,2);
			if (lang === 'pt') lang = 'pt_BR';
			else if (lang === 'ug') lang = 'ug_CN';
			else if (lang === 'zh') lang = (fullLang.substr(0,5).toLowerCase() === 'zh-tw')? 'zh_TW' : 'zh_CN';
			return lang;
		})(),
		
		// Start elFinder (REQUIRED)
		start = function(elFinder, editors, config) {
			// load jQueryUI CSS
			elFinder.prototype.loadCss('//cdnjs.cloudflare.com/ajax/libs/jqueryui/'+uiver+'/themes/smoothness/jquery-ui.css');
			
			jQuery(function() {
				var optEditors = {
						commandsOptions: {
							edit: {
								editors: Array.isArray(editors)? editors : []
							}
						}
					},
					opts = {};
				
				// Interpretation of "elFinderConfig"
				if (config && config.managers) {
					jQuery.each(config.managers, function(id, mOpts) {
						opts = Object.assign(opts, config.defaultOpts || {});
						// editors marges to opts.commandOptions.edit
						try {
							mOpts.commandsOptions.edit.editors = mOpts.commandsOptions.edit.editors.concat(editors || []);
						} catch(e) {
							Object.assign(mOpts, optEditors);
						}
						// Make elFinder
						jQuery('#' + id).elfinder(
							// 1st Arg - options
							jQuery.extend(true, { lang: lang }, opts, mOpts || {}),
							// 2nd Arg - before boot up function
							function(fm, extraObj) {
								// `init` event callback function
								fm.bind('init', function() {
									// Optional for Japanese decoder "encoding-japanese"
									if (fm.lang === 'ja') {
										require(
											[ 'encoding-japanese' ],
											function(Encoding) {
												if (Encoding && Encoding.convert) {
													fm.registRawStringDecoder(function(s) {
														return Encoding.convert(s, {to:'UNICODE',type:'string'});
													});
												}
											}
										);
									}
								});
							}
						);
					});
				} else {
					alert('"elFinderConfig" object is wrong.');
				}
			});
		},
		
		// JavaScript loader (REQUIRED)
		load = function() {
			require(
				[
					'elfinder'
					, 'extras/editors.default.min'               // load text, image editors
					, 'elFinderConfig'
				//	, 'extras/quicklook.googledocs.min'          // optional preview for GoogleApps contents on the GoogleDrive volume
				],
				start,
				function(error) {
					alert(error.message);
				}
			);
		},
		
		// is IE8 or :? for determine the jQuery version to use (optional)
		old = (typeof window.addEventListener === 'undefined' && typeof document.getElementsByClassName === 'undefined')
		       ||
		      (!window.chrome && !document.unqueID && !window.opera && !window.sidebar && 'WebkitAppearance' in document.documentElement.style && document.body.style && typeof document.body.style.webkitFilter === 'undefined');

	// config of RequireJS (REQUIRED)
	require.config({
		baseUrl : 'js',
		paths : {
			'jquery'   : '//cdnjs.cloudflare.com/ajax/libs/jquery/'+(old? '1.12.4' : jqver)+'/jquery.min',
			'jquery-ui': '//cdnjs.cloudflare.com/ajax/libs/jqueryui/'+uiver+'/jquery-ui.min',
			'elfinder' : 'elfinder.min',
			'encoding-japanese': '//cdn.rawgit.com/polygonplanet/encoding.js/1.0.26/encoding.min'
		},
		waitSeconds : 10 // optional
	});

	// check elFinderConfig and fallback
	// This part don't used if you are using elfinder.html, see elfinder.html
	if (! require.defined('elFinderConfig')) {
		define('elFinderConfig', {
			// elFinder options (REQUIRED)
			// Documentation for client options:
			// https://github.com/Studio-42/elFinder/wiki/Client-configuration-options
			defaultOpts : {
				url : 'php/connector.minimal.php' // connector URL (REQUIRED)
				,commandsOptions : {
					edit : {
						extraOptions : {
							// set API key to enable Creative Cloud image editor
							// see https://console.adobe.io/
							creativeCloudApiKey : '',
							// browsing manager URL for CKEditor, TinyMCE
							// uses self location with the empty value
							managerUrl : ''
						}
					}
					,quicklook : {
						// to enable CAD-Files and 3D-Models preview with sharecad.org
						sharecadMimes : ['image/vnd.dwg', 'image/vnd.dxf', 'model/vnd.dwf', 'application/vnd.hp-hpgl', 'application/plt', 'application/step', 'model/iges', 'application/vnd.ms-pki.stl', 'application/sat', 'image/cgm', 'application/x-msmetafile'],
						// to enable preview with Google Docs Viewer
						googleDocsMimes : ['application/pdf', 'image/tiff', 'application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/postscript', 'application/rtf'],
						// to enable preview with Microsoft Office Online Viewer
						// these MIME types override "googleDocsMimes"
						officeOnlineMimes : ['application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation']
					}
				}
			},
			managers : {
				'elfinder': {},
			}
		});
	}

	// load JavaScripts (REQUIRED)
	load();

})();
lib/css/statusbar.css000064400000006341147361034410010633 0ustar00/******************************************************************/
/*                           STATUSBAR STYLES                     */
/******************************************************************/

/* statusbar container */
.elfinder-statusbar {
    display: flex;
    justify-content: space-between;
    cursor: default;
    text-align: center;
    font-weight: normal;
    padding: .2em .5em;
    border-right: 0 solid transparent;
    border-bottom: 0 solid transparent;
    border-left: 0 solid transparent;
}

.elfinder-statusbar:before,
.elfinder-statusbar:after {
    display: none;
}

.elfinder-statusbar span {
    vertical-align: bottom;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
}

.elfinder-statusbar span.elfinder-path-other {
    flex-shrink: 0;
    text-overflow: clip;
    -o-text-overflow: clip;
}

.elfinder-statusbar span.ui-state-hover,
.elfinder-statusbar span.ui-state-active {
    border: none;
}

.elfinder-statusbar span.elfinder-path-cwd {
    cursor: default;
}

/* path in statusbar */
.elfinder-path {
    display: flex;
    order: 1;
    flex-grow: 1;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    max-width: 30%\9;
}

.elfinder-ltr .elfinder-path {
    text-align: left;
    float: left\9;
}

.elfinder-rtl .elfinder-path {
    text-align: right;
    float: right\9;
}

/* path in workzone (case of swipe to navbar close) */
.elfinder-workzone-path {
    position: relative;
}

.elfinder-workzone-path .elfinder-path {
    position: relative;
    font-size: .75em;
    font-weight: normal;
    float: none;
    max-width: none;
    overflow: hidden;
    overflow-x: hidden;
    text-overflow: initial;
    -o-text-overflow: initial;
}

.elfinder-mobile .elfinder-workzone-path .elfinder-path {
    overflow: auto;
    overflow-x: scroll;
}

.elfinder-ltr .elfinder-workzone-path .elfinder-path {
    margin-left: 24px;
}

.elfinder-rtl .elfinder-workzone-path .elfinder-path {
    margin-right: 24px;
}

.elfinder-workzone-path .elfinder-path span {
    display: inline-block;
    padding: 5px 3px;
}

.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd {
    font-weight: bold;
}

.elfinder-workzone-path .elfinder-path span.ui-state-hover,
.elfinder-workzone-path .elfinder-path span.ui-state-active {
    border: none;
}

.elfinder-workzone-path .elfinder-path-roots {
    position: absolute;
    top: 0;
    width: 24px;
    height: 20px;
    padding: 2px;
    border: none;
    overflow: hidden;
}

.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots {
    left: 0;
}

.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots {
    right: 0;
}

/* total/selected size in statusbar */
.elfinder-stat-size {
    order: 3;
    flex-grow: 1;
    overflow: hidden;
    white-space: nowrap;
}

.elfinder-ltr .elfinder-stat-size {
    text-align: right;
    float: right\9; 
    padding-right: 10px;
}
.elfinder-ltr .elfinder-stat-size > .elfinder-stat-size {
    padding-right: 0px;
}
.elfinder-rtl .elfinder-stat-size {
    text-align: left;
    float: left\9;
}

/* info of current selected item */
.elfinder-stat-selected {
    order: 2;
    margin: 0 .5em;
    white-space: nowrap;
    overflow: hidden;
}
lib/css/theme.css000064400000032707147361034410007732 0ustar00/**
 * MacOS X like theme for elFinder.
 * Required jquery ui "smoothness" theme.
 *
 * @author Dmitry (dio) Levashov
 **/

/* scrollbar for Chrome and Safari */
.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-track {
    border-radius: 10px;
    box-shadow: inset 0 0 6px rgba(0, 0, 0, .1);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb {
    background-color: rgba(0, 0, 50, 0.08);
    border-radius: 10px;
    box-shadow:0 0 0 1px rgba(255, 255, 255, .3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:hover {
    background-color: rgba(0, 0, 50, 0.16);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:active {
    background-color: rgba(0, 0, 50, 0.24);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-corner {
    background-color: transparent;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button {
    background-color: transparent;
    width: 10px;
    height: 10px;
    border: 5px solid transparent;
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:hover {
    border: 5px solid rgba(0, 0, 50, 0.08);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:active {
    border: 5px solid rgba(0, 0, 50, 0.5);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:decrement {
    border-bottom: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:increment {
    border-top: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:decrement {
    border-right: 8px solid rgba(0, 0, 50, 0.3);
}

.elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:increment {
    border-left: 8px solid rgba(0, 0, 50, 0.3);
}

/* input textarea */
.elfinder input,
.elfinder textarea {
    color: #000;
    background-color: #FFF;
    border-color: #ccc;
}

/* dialogs */
.std42-dialog, .std42-dialog .ui-widget-content {
    background-color: #ededed;
    background-image: none;
    background-clip: content-box;
}

.std42-dialog.elfinder-bg-translucent {
    background-color: #fff;
    background-color: rgba(255, 255, 255, 0.9);
}

.std42-dialog.elfinder-bg-translucent .ui-widget-content {
    background-color: transparent;
}

.elfinder-quicklook-title {
    color: #fff;
}

.elfinder-quicklook-titlebar-icon {
    background-color: transparent;
    background-image: none;
}

.elfinder-quicklook-titlebar-icon .ui-icon {
    background-color: #d4d4d4;
    border-color: #8a8a8a;
}

.elfinder-quicklook-info-progress {
    background-color: gray;
}

.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close {
    background-color: #ff6252;
    border-color: #e5695d;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize {
    background-color: #ffbc00;
    border-color: #e3a40b;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
    background-color: #26c82f;
    border-color: #13ae10;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.std42-dialog .elfinder-help,
.std42-dialog .elfinder-help .ui-widget-content {
    background: #fff;
}

/* navbar */
.elfinder .elfinder-navbar {
    background: #dde4eb;
}

.elfinder-navbar .ui-state-hover {
    color: #000;
    background-color: #edf1f4;
    border-color: #bdcbd8;
}

.elfinder-navbar .ui-droppable-hover {
    background: transparent;
}

.elfinder-navbar .ui-state-active {
    background: #3875d7;
    border-color: #3875d7;
    color: #fff;
}

.elfinder-navbar .elfinder-droppable-active {
    background: #A7C6E5;
}

/* disabled elfinder */
.elfinder-disabled .elfinder-navbar .ui-state-active {
    background: #dadada;
    border-color: #aaa;
    color: #777;
}

/* workzone */
.elfinder-workzone {
    background: #fff;
}

/* current directory */
/* Is in trash */
.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
    background-color: #f0f0f0;
}

/* selected file in "icons" view */
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
/*    background: #ccc;*/
    background: none;
}

/* type badge in "icons" view */
/* default */
.elfinder-cwd-icon:before {
    color: white;
    background-color: #798da7;
}

/* type */
.elfinder-cwd-icon-text:before {
    background-color: #6f99e6
}

.elfinder-cwd-icon-image:before {
    background-color: #2ea26c
}

.elfinder-cwd-icon-audio:before {
    background-color: #7bad2a
}

.elfinder-cwd-icon-video:before {
    background-color: #322aad
}

/* subtype */
.elfinder-cwd-icon-x-empty:before,
.elfinder-cwd-icon-plain:before {
    background-color: #719be6
}

.elfinder-cwd-icon-rtf:before,
.elfinder-cwd-icon-rtfd:before {
    background-color: #83aae7
}

.elfinder-cwd-icon-pdf:before {
    background-color: #db7424
}

.elfinder-cwd-icon-html:before {
    background-color: #82bc12
}

.elfinder-cwd-icon-xml:before,
.elfinder-cwd-icon-css:before {
    background-color: #7c7c7c
}

.elfinder-cwd-icon-x-shockwave-flash:before {
    background-color: #f43a36
}

.elfinder-cwd-icon-zip:before,
.elfinder-cwd-icon-x-zip:before,
.elfinder-cwd-icon-x-xz:before,
.elfinder-cwd-icon-x-7z-compressed:before,
.elfinder-cwd-icon-x-gzip:before,
.elfinder-cwd-icon-x-tar:before,
.elfinder-cwd-icon-x-bzip:before,
.elfinder-cwd-icon-x-bzip2:before,
.elfinder-cwd-icon-x-rar:before,
.elfinder-cwd-icon-x-rar-compressed:before {
    background-color: #97638e
}

.elfinder-cwd-icon-javascript:before,
.elfinder-cwd-icon-x-javascript:before,
.elfinder-cwd-icon-x-perl:before,
.elfinder-cwd-icon-x-python:before,
.elfinder-cwd-icon-x-ruby:before,
.elfinder-cwd-icon-x-sh:before,
.elfinder-cwd-icon-x-shellscript:before,
.elfinder-cwd-icon-x-c:before,
.elfinder-cwd-icon-x-csrc:before,
.elfinder-cwd-icon-x-chdr:before,
.elfinder-cwd-icon-x-c--:before,
.elfinder-cwd-icon-x-c--src:before,
.elfinder-cwd-icon-x-c--hdr:before,
.elfinder-cwd-icon-x-java:before,
.elfinder-cwd-icon-x-java-source:before,
.elfinder-cwd-icon-x-php:before {
    background-color: #7c607c
}

.elfinder-cwd-icon-msword:before,
.elfinder-cwd-icon-vnd-ms-office:before,
.elfinder-cwd-icon-vnd-ms-word:before,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:before {
    background-color: #2b569a
}

.elfinder-cwd-icon-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel:before,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:before {
    background-color: #107b10
}

.elfinder-cwd-icon-vnd-ms-powerpoint:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:before,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:before {
    background-color: #d24625
}

.elfinder-cwd-icon-vnd-oasis-opendocument-chart:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-database:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-image:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:before,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:before,
.elfinder-cwd-icon-vnd-openofficeorg-extension:before {
    background-color: #00a500
}

.elfinder-cwd-icon-postscript:before {
    background-color: #ff5722
}

/* list view*/
.elfinder-cwd table thead td.ui-state-hover {
    background: #ddd;
}

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

.elfinder-cwd table tr {
    border: 1px solid transparent;
    border-top: 1px solid #fff;
}

.elfinder-cwd .elfinder-droppable-active td {
    background: #A7C6E5;
}

.elfinder-cwd.elfinder-table-header-sticky table {
    border-top-color: #fff;
}

.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table {
    border-top-color: #A7C6E5;
}

/* common selected background/color */
.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-cwd table td.ui-state-hover,
.elfinder-button-menu .ui-state-hover {
    background: #3875d7;
    color: #fff;
}

/* disabled elfinder */
.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
.elfinder-disabled .elfinder-cwd table td.ui-state-hover {
    background: #dadada;
}

/* statusbar */
.elfinder .elfinder-statusbar {
    color: #555;
}

.elfinder .elfinder-statusbar a {
    text-decoration: none;
    color: #555;
}

/* contextmenu */
.elfinder-contextmenu .ui-state-active {
    background: #6293df;
    color: #fff;
}

.elfinder-contextmenu .ui-state-hover {
    background: #3875d7;
    color: #fff;
}

.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow {
    background-image: url('../img/arrows-active.png');
}

/* dialog */
.elfinder .ui-dialog input:text.ui-state-hover,
.elfinder .ui-dialog textarea.ui-state-hover {
    background-image: none;
    background-color: inherit;
}

.elfinder-notify-cancel .elfinder-notify-button {
    background-color: #707070;
    background-image: url("../img/ui-icons_ffffff_256x240.png");
}

.elfinder-notify-cancel .elfinder-notify-button.ui-state-hover {
    background-color: #aaa;
}

/* edit dialog */
.elfinder-dialog-edit select.elfinder-edit-changed {
    border-bottom: 2px solid #13ae10;
}

/* tooltip */
.ui-widget-content.elfinder-ui-tooltip {
    background-color: #fff;
}

.elfinder-ui-tooltip.ui-widget-shadow,
.elfinder .elfinder-ui-tooltip.ui-widget-shadow {
    box-shadow: 2px 6px 4px -4px #cecdcd;
}

/* progressbar */
.elfinder-ui-progressbar {
    background-color: #419bf3;
}

.elfinder-ltr .elfinder-navbar{
    margin-right:3px;
}
.elfinder-rtl .elfinder-navbar{
    margin-left:3px;
}
/**
* Buttons
*/
.ui-button,
.ui-button:active,
.ui-button.ui-state-default {
    display: inline-block;
    font-weight: normal;
    text-align: center;
    vertical-align: middle;
    cursor: pointer;
    white-space: nowrap;
    -webkit-border-radius: 3px;
    border-radius: 3px;
    text-transform: uppercase;
    -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
    box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
    -webkit-transition: all 0.4s;
    -o-transition: all 0.4s;
    transition: all 0.4s;
    background: #fff;
    color: #222;
}
.ui-button .ui-icon,
.ui-button:active .ui-icon,
.ui-button.ui-state-default .ui-icon {
    color: #222;
}
.ui-button:hover,
a.ui-button:active,
.ui-button:active,
.ui-button:focus,
.ui-button.ui-state-hover,
.ui-button.ui-state-active {
    background: #3498DB;
    color: #fff;
}
.ui-button:hover .ui-icon,
a.ui-button:active .ui-icon,
.ui-button:active .ui-icon,
.ui-button:focus .ui-icon,
.ui-button.ui-state-hover .ui-icon,
.ui-button.ui-state-active .ui-icon {
    color: #fff;
}
.ui-button.ui-state-active:hover {
    background: #217dbb;
    color: #fff;
    border: none;
}
.ui-button:focus {
    outline: none !important;
}
.ui-controlgroup-horizontal .ui-button {
    -webkit-border-radius: 0;
    border-radius: 0;
    border: 0;
}
div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    margin-right:5px;
}

.std42-dialog,
.std42-dialog .ui-widget-content{
    background:#fff;
}
.std42-dialog,
.std42-dialog .ui-dialog-buttonpane.ui-widget-content{
    background: #ededed;
}
lib/css/commands.css000064400000046265147361034410010435 0ustar00/******************************************************************/
/*                          COMMANDS STYLES                       */
/******************************************************************/

/********************** COMMAND "RESIZE" ****************************/
.elfinder-resize-container {
    margin-top: .3em;
}

.elfinder-resize-type {
    float: left;
    margin-bottom: .4em;
}

.elfinder-resize-control {
    float: left;
}

.elfinder-resize-control input[type=number] {
    border: 1px solid #aaa;
    text-align: right;
    width: 4.5em;
}

.elfinder-mobile .elfinder-resize-control input[type=number] {
    width: 3.5em;
}

.elfinder-resize-control input.elfinder-resize-bg {
    text-align: center;
    width: 5em;
    direction: ltr;
}

.elfinder-dialog-resize .elfinder-resize-control-panel {
    margin-top: 10px;
}

.elfinder-dialog-resize .elfinder-resize-imgrotate,
.elfinder-dialog-resize .elfinder-resize-pallet {
    cursor: pointer;
}

.elfinder-dialog-resize .elfinder-resize-picking {
    cursor: crosshair;
}

.elfinder-dialog-resize .elfinder-resize-grid8 + button {
    padding-top: 2px;
    padding-bottom: 2px;
}

.elfinder-resize-preview {
    width: 400px;
    height: 400px;
    padding: 10px;
    background: #fff;
    border: 1px solid #aaa;
    float: right;
    position: relative;
    overflow: hidden;
    text-align: left;
    direction: ltr;
}

.elfinder-resize-handle {
    position: relative;
}

.elfinder-resize-handle-hline,
.elfinder-resize-handle-vline {
    position: absolute;
    background-image: url("../img/crop.gif");
}

.elfinder-resize-handle-hline {
    width: 100%;
    height: 1px !important;
    background-repeat: repeat-x;
}

.elfinder-resize-handle-vline {
    width: 1px !important;
    height: 100%;
    background-repeat: repeat-y;
}

.elfinder-resize-handle-hline-top {
    top: 0;
    left: 0;
}

.elfinder-resize-handle-hline-bottom {
    bottom: 0;
    left: 0;
}

.elfinder-resize-handle-vline-left {
    top: 0;
    left: 0;
}

.elfinder-resize-handle-vline-right {
    top: 0;
    right: 0;
}

.elfinder-resize-handle-point {
    position: absolute;
    width: 8px;
    height: 8px;
    border: 1px solid #777;
    background: transparent;
}

.elfinder-resize-handle-point-n {
    top: 0;
    left: 50%;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-ne {
    top: 0;
    right: 0;
    margin-top: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-e {
    top: 50%;
    right: 0;
    margin-top: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-se {
    bottom: 0;
    right: 0;
    margin-bottom: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-s {
    bottom: 0;
    left: 50%;
    margin-bottom: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-sw {
    bottom: 0;
    left: 0;
    margin-bottom: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-w {
    top: 50%;
    left: 0;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-nw {
    top: 0;
    left: 0;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-dialog.elfinder-dialog-resize .ui-resizable-e {
    width: 10px;
    height: 100%;
}

.elfinder-dialog.elfinder-dialog-resize .ui-resizable-s {
    width: 100%;
    height: 10px;
}

.elfinder-resize-loading {
    position: absolute;
    width: 200px;
    height: 30px;
    top: 50%;
    margin-top: -25px;
    left: 50%;
    margin-left: -100px;
    text-align: center;
    background: url(../img/progress.gif) center bottom repeat-x;
}

.elfinder-resize-row {
    margin-bottom: 9px;
    position: relative;
}

.elfinder-resize-label {
    float: left;
    width: 80px;
    padding-top: 3px;
}

.elfinder-resize-checkbox-label {
    border: 1px solid transparent;
}

.elfinder-dialog-resize .elfinder-resize-whctrls {
    margin: -20px 5px 0 5px;
}

.elfinder-ltr .elfinder-dialog-resize .elfinder-resize-whctrls {
    float: right;
}

.elfinder-rtl .elfinder-dialog-resize .elfinder-resize-whctrls {
    float: left;
}

.elfinder-dialog-resize .ui-resizable-e,
.elfinder-dialog-resize .ui-resizable-w {
    height: 100%;
    width: 10px;
}

.elfinder-dialog-resize .ui-resizable-s,
.elfinder-dialog-resize .ui-resizable-n {
    width: 100%;
    height: 10px;
}

.elfinder-dialog-resize .ui-resizable-e {
    margin-right: -7px;
}

.elfinder-dialog-resize .ui-resizable-w {
    margin-left: -7px;
}

.elfinder-dialog-resize .ui-resizable-s {
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-n {
    margin-top: -7px;
}

.elfinder-dialog-resize .ui-resizable-se,
.elfinder-dialog-resize .ui-resizable-sw,
.elfinder-dialog-resize .ui-resizable-ne,
.elfinder-dialog-resize .ui-resizable-nw {
    width: 10px;
    height: 10px;
}

.elfinder-dialog-resize .ui-resizable-se {
    background: transparent;
    bottom: 0;
    right: 0;
    margin-right: -7px;
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-sw {
    margin-left: -7px;
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-ne {
    margin-right: -7px;
    margin-top: -7px;
}

.elfinder-dialog-resize .ui-resizable-nw {
    margin-left: -7px;
    margin-top: -7px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-s,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-n {
    height: 20px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-e,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-w {
    width: 20px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-se,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-sw,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-ne,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-nw {
    width: 30px;
    height: 30px;
}

.elfinder-touch .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se {
    width: 30px;
    height: 30px;
    margin: 0;
}

.elfinder-dialog-resize .ui-icon-grip-solid-vertical {
    position: absolute;
    top: 50%;
    right: 0;
    margin-top: -8px;
    margin-right: -11px;
}

.elfinder-dialog-resize .ui-icon-grip-solid-horizontal {
    position: absolute;
    left: 50%;
    bottom: 0;
    margin-left: -8px;
    margin-bottom: -11px;;
}

.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset {
    float: right;
}

.elfinder-dialog-resize .elfinder-resize-degree input,
.elfinder-dialog-resize input.elfinder-resize-quality {
    width: 3.5em;
}

.elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input,
.elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality {
    width: 2.5em;
}

.elfinder-dialog-resize .elfinder-resize-degree button.ui-button {
    padding: 6px 8px;
}

.elfinder-dialog-resize button.ui-button span {
    padding: 0;
}

.elfinder-dialog-resize .elfinder-resize-jpgsize {
    font-size: 90%;
}

.ui-widget-content .elfinder-resize-container .elfinder-resize-rotate-slider {
    width: 195px;
    margin: 10px 7px;
    background-color: #fafafa;
}

.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon {
    display: none;
}

.elfinder-resize-preset-container {
    box-sizing: border-box;
    border-radius: 5px;
}

/********************** COMMAND "EDIT" ****************************/
/* edit text file textarea */
.elfinder-file-edit {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 2px;
    border: 1px solid #ccc;
    box-sizing: border-box;
    resize: none;
}

.elfinder-touch .elfinder-file-edit {
    font-size: 16px;
}

/* edit area */
.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor {
    background-color: #fff;
}

.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor {
    width: 100%;
    height: 300px;
    max-height: 100%;
    text-align: center;
}

.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;
}

.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main {
    top: 0;
}

.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header {
    display: none;
}

.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-wrap {
    height: calc(100% - 150px);
}

/* bottom margen for softkeyboard on fullscreen mode */
.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit {
    padding-bottom: 20em;
    margin-bottom: -20em;
}

.elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding {
    font-size: 12px;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras {
    margin: 0 1em 0 .2em;
    float: left;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality {
    padding-top: 6px;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
    font-size: 12px;
    margin-top: 1px;
    min-height: 28px;
}

.elfinder-dialog-edit .ui-dialog-buttonpane .ui-icon {
    cursor: pointer;
}

.elfinder-edit-spinner {
    position: absolute;
    top: 50%;
    text-align: center;
    width: 100%;
    font-size: 16pt;
}

.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner,
.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner-text {
    float: none;
}

.elfinder-dialog-edit .elfinder-toast > div {
    width: 280px;
}
 
.elfinder-edit-onlineconvert-button {
    display: inline-block;
    width: 180px;
    min-height: 30px;
    vertical-align: top;
}
.elfinder-edit-onlineconvert-button button,
.elfinder-edit-onlineconvert-bottom-btn button {
    cursor: pointer;
}
.elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline {
    -webkit-appearance: none;
    border-radius: 16px;
    color: #000;
    text-align: center;
    padding: 8px;
    background-color: #eee;
    background-image: -webkit-linear-gradient(top, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%);
    background-image: linear-gradient(to bottom, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%);
}
.elfinder-edit-onlineconvert-button .elfinder-button-icon {
    margin: 0 10px;
    vertical-align: middle;
    cursor: pointer;
}
.elfinder-edit-onlineconvert-bottom-btn {
    text-align: center;
    margin: 10px 0 0;
}

.elfinder-edit-onlineconvert-link {
    margin-top: 1em;
    text-align: center;
}
.elfinder-edit-onlineconvert-link .elfinder-button-icon {
    background-image: url("../img/editor-icons.png");
    background-repeat: no-repeat;
    background-position: 0 -144px;
    margin-bottom: -3px;
}
.elfinder-edit-onlineconvert-link a {
    text-decoration: none;
}

/********************** COMMAND "SORT" ****************************/
/* for list table header sort triangle icon */
div.elfinder-cwd-wrapper-list tr.ui-state-default td {
    position: relative;
}

div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    position: absolute;
    top: 4px;
    left: 0;
    right: 0;
    margin: auto 0px auto auto;
}

.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    top: 7px;
}

.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    margin-right: 5px;
}

/********************** COMMAND "HELP" ****************************/
/* help dialog */
.elfinder-help {
    margin-bottom: .5em;
    -webkit-overflow-scrolling: touch;
}

/* fix tabs */
.elfinder-help .ui-tabs-panel {
    padding: .5em;
    overflow: auto;
    padding: 10px;
}

.elfinder-dialog .ui-tabs .ui-tabs-nav li {
    overflow: hidden;
}

.elfinder-dialog .ui-tabs .ui-tabs-nav li a {
    padding: .2em .8em;
    display: inline-block;
}

.elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a {
    padding: .5em .5em;
}

.elfinder-dialog .ui-tabs-active a {
    background: inherit;
}

.elfinder-help-shortcuts {
    height: auto;
    padding: 10px;
    margin: 0;
    box-sizing: border-box;
}

.elfinder-help-shortcut {
    white-space: nowrap;
    clear: both;
}

.elfinder-help-shortcut-pattern {
    float: left;
    width: 160px;
}

.elfinder-help-logo {
    width: 100px;
    height: 96px;
    float: left;
    margin-right: 1em;
    background: url('../img/logo.png') center center no-repeat;
}

.elfinder-help h3 {
    font-size: 1.5em;
    margin: .2em 0 .3em 0;
}

.elfinder-help-separator {
    clear: both;
    padding: .5em;
}

.elfinder-help-link {
    display: inline-block;
    margin-right: 12px;
    padding: 2px 0;
    white-space: nowrap;
}

.elfinder-rtl .elfinder-help-link {
    margin-right: 0;
    margin-left: 12px;
}

.elfinder-help .ui-priority-secondary {
    font-size: .9em;
}

.elfinder-help .ui-priority-primary {
    margin-bottom: 7px;
}

.elfinder-help-team {
    clear: both;
    text-align: right;
    border-bottom: 1px solid #ccc;
    margin: .5em 0;
    font-size: .9em;
}

.elfinder-help-team div {
    float: left;
}

.elfinder-help-license {
    font-size: .9em;
}

.elfinder-help-disabled {
    font-weight: bold;
    text-align: center;
    margin: 90px 0;
}

.elfinder-help .elfinder-dont-panic {
    display: block;
    border: 1px solid transparent;
    width: 200px;
    height: 200px;
    margin: 30px auto;
    text-decoration: none;
    text-align: center;
    position: relative;
    background: #d90004;
    -moz-box-shadow: 5px 5px 9px #111;
    -webkit-box-shadow: 5px 5px 9px #111;
    box-shadow: 5px 5px 9px #111;
    background: -moz-radial-gradient(80px 80px, circle farthest-corner, #d90004 35%, #960004 100%);
    background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004));
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;
    border-radius: 100px;
    outline: none;
}

.elfinder-help .elfinder-dont-panic span {
    font-size: 3em;
    font-weight: bold;
    text-align: center;
    color: #fff;
    position: absolute;
    left: 0;
    top: 45px;
}

ul.elfinder-help-integrations ul {
    margin-bottom: 1em;
    padding: 0;
    margin: 0 1em 1em;
}

ul.elfinder-help-integrations a {
    text-decoration: none;
}

ul.elfinder-help-integrations a:hover {
    text-decoration: underline;
}

.elfinder-help-debug {
    height: 100%;
    padding: 0;
    margin: 0;
    overflow: none;
    border: none;
}

.elfinder-help-debug .ui-tabs-panel {
    padding: 0;
    margin: 0;
    overflow: auto;
}

.elfinder-help-debug fieldset {
    margin-bottom: 10px;
    border-color: #778899;
    border-radius: 10px;
}

.elfinder-help-debug legend {
    font-size: 1.2em;
    font-weight: bold;
    color: #2e8b57;
}

.elfinder-help-debug dl {
    margin: 0;
}

.elfinder-help-debug dt {
    color: #778899;
}

.elfinder-help-debug dt:before {
    content: "[";
}

.elfinder-help-debug dt:after {
    content: "]";
}

.elfinder-help-debug dd {
    margin-left: 1em;
}

.elfinder-help-debug dd span {
    /*font-size: 1.2em;*/
}

/********************** COMMAND "PREFERENCE" ****************************/
.elfinder-dialog .elfinder-preference .ui-tabs-nav {
    margin-bottom: 1px;
    height: auto;
}

/* fix tabs */
.elfinder-preference .ui-tabs-panel {
    padding: 10px 10px 0;
    overflow: auto;
    box-sizing: border-box;
    -webkit-overflow-scrolling: touch;
}

.elfinder-preference a.ui-state-hover,
.elfinder-preference label.ui-state-hover {
    border: none;
}

.elfinder-preference dl {
    width: 100%;
    display: inline-block;
    margin: .5em 0;
}

.elfinder-preference dt {
    display: block;
    width: 200px;
    clear: left;
    float: left;
    max-width: 50%;
}

.elfinder-rtl .elfinder-preference dt {
    clear: right;
    float: right;
}

.elfinder-preference dd {
    margin-bottom: 1em;
}

.elfinder-preference dt label {
    cursor: pointer;
}

.elfinder-preference dd label,
.elfinder-preference dd input[type=checkbox] {
    white-space: nowrap;
    display: inline-block;
    cursor: pointer;
}

.elfinder-preference dt.elfinder-preference-checkboxes {
    width: 100%;
    max-width: none;
}

.elfinder-preference dd.elfinder-preference-checkboxes {
    padding-top: 3ex;
}

.elfinder-preference select {
    max-width: 100%;
}

.elfinder-preference dd.elfinder-preference-iconSize .ui-slider {
    width: 50%;
    max-width: 100px;
    display: inline-block;
    margin: 0 10px;
}

.elfinder-preference button {
    margin: 0 16px;
}

.elfinder-preference button + button {
    margin: 0 -10px;
}

.elfinder-preference .elfinder-preference-taball .elfinder-reference-hide-taball {
    display: none;
}

.elfinder-preference-theme fieldset {
    margin-bottom: 10px;
}

.elfinder-preference-theme legend a {
    font-size: 1.8em;
    text-decoration: none;
    cursor: pointer;
}

.elfinder-preference-theme dt {
    width: 20%;
    word-break: break-all;
}

.elfinder-preference-theme dt:after {
    content: " :";
}

.elfinder-preference-theme dd {
    margin-inline-start: 20%;
}

.elfinder-preference img.elfinder-preference-theme-image {
    display: block;
    margin-left: auto;
    margin-right: auto;
    max-width: 90%;
    max-height: 200px;
    cursor: pointer;
}

.elfinder-preference-theme-btn {
    text-align: center;
}

.elfinder-preference-theme button.elfinder-preference-theme-default {
    display: inline;
    margin: 0 10px;
    font-size: 8pt;
}

/********************** COMMAND "INFO" ****************************/
.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before {
    right: 33px;
    left: auto;
}

.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: none;
}

/********************** COMMAND "UPLOAD" ****************************/
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    position: absolute;
    bottom: 2px;
    width: 16px;
    height: 16px;
    padding: 10px;
    border: none;
    overflow: hidden;
    cursor: pointer;
}

.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    left: 2px;
}

.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    right: 2px;
}

/********************** COMMAND "RM" ****************************/
.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before {
    left: 38px;
}

.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before {
    right: 86px;
    left: auto;
}

.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: none;
}

/********************** COMMAND "RENAME" ****************************/
.elfinder-rename-batch div {
    margin: 5px 8px;
}

.elfinder-rename-batch .elfinder-rename-batch-name input {
    width: 100%;
    font-size: 1.6em;
}

.elfinder-rename-batch-type {
    text-align: center;
}

.elfinder-rename-batch .elfinder-rename-batch-type label {
    margin: 2px;
    font-size: .9em;
}

.elfinder-rename-batch-preview {
    padding: 0 8px;
    font-size: 1.1em;
    min-height: 4ex;
}
.CodeMirror {
    background: inherit !important;
}

lib/css/places.css000064400000001102147361034410010060 0ustar00/*********************************************/
/*               PLACES STYLES               */
/*********************************************/
/* root extra icon */
.elfinder-navbar-root .elfinder-places-root-icon {
    position: absolute;
    top: 50%;
    margin-top: -9px;
    cursor: pointer;
}

.elfinder-ltr .elfinder-places-root-icon {
    right: 10px;
}

.elfinder-rtl .elfinder-places-root-icon {
    left: 10px;
}

.elfinder-navbar-expanded .elfinder-places-root-icon {
    display: block;
}

/* dragging helper base */
.elfinder-place-drag {
    font-size: 0.8em;
}
lib/css/toast.css000064400000012067147361034410007757 0ustar00/*
 * CSS for Toastr
 * Copyright 2012-2015
 * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.
 * All Rights Reserved.
 * Use, reproduction, distribution, and modification of this code is subject to the terms and
 * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
 *
 * ARIA Support: Greta Krafsig
 *
 * Project: https://github.com/CodeSeven/toastr
 */

.elfinder .elfinder-toast {
    position: absolute;
    top: 12px;
    right: 12px;
    max-width: 90%;
    cursor: default;
}

.elfinder .elfinder-toast > div {
    position: relative;
    pointer-events: auto;
    overflow: hidden;
    margin: 0 0 6px;
    padding: 8px 16px 8px 50px;
    -moz-border-radius: 3px 3px 3px 3px;
    -webkit-border-radius: 3px 3px 3px 3px;
    border-radius: 3px 3px 3px 3px;
    background-position: 15px center;
    background-repeat: no-repeat;
    -moz-box-shadow: 0 0 12px #999999;
    -webkit-box-shadow: 0 0 12px #999999;
    box-shadow: 0 0 12px #999999;
    color: #FFFFFF;
    opacity: 0.9;
    filter: alpha(opacity=90);
    background-color: #030303;
    text-align: center;
}

.elfinder .elfinder-toast > .toast-info {
    background-color: #2F96B4;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > .toast-error {
    background-color: #BD362F;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > .toast-success {
    background-color: #51A351;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}

.elfinder .elfinder-toast > .toast-warning {
    background-color: #F89406;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > div button.ui-button {
    background-image: none;
    margin-top: 8px;
    padding: .5em .8em;
}

.elfinder .elfinder-toast > .toast-success button.ui-button {
    background-color: green;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover {
    background-color: #add6ad;
    color: #254b25;
}

.elfinder .elfinder-toast > .toast-info button.ui-button {
    background-color: #046580;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-info button.ui-button.ui-state-hover {
    background-color: #7DC6DB;
    color: #046580;
}

.elfinder .elfinder-toast > .toast-warning button.ui-button {
    background-color: #dd8c1a;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-warning button.ui-button.ui-state-hover {
    background-color: #e7ae5e;
    color: #422a07;
}
lib/css/contextmenu.css000064400000013571147361034410011177 0ustar00/* menu and submenu */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
    position: absolute;
    border: 1px solid #aaa;
    background: #fff;
    color: #555;
    padding: 4px 0;
    top: 0;
    left: 0;
    z-index: 9999 !important;
}

/* submenu */
.elfinder .elfinder-contextmenu-sub {
    top: 5px;
}

/* submenu in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub {
    margin-left: -5px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub {
    margin-right: -5px;
}

/* menu item */
.elfinder .elfinder-contextmenu-header {
    margin-top: -4px;
    padding: 0 .5em .2ex;
    border: none;
    text-align: center;
}

.elfinder .elfinder-contextmenu-header span {
    font-weight: normal;
    font-size: 0.8em;
    font-weight: bolder;
}

.elfinder .elfinder-contextmenu-item {
    position: relative;
    display: block;
    padding: 4px 30px;
    text-decoration: none;
    white-space: nowrap;
    cursor: default;
}

.elfinder .elfinder-contextmenu-item.ui-state-active {
    border: none;
}

.elfinder .elfinder-contextmenu-item .ui-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    left: auto;
    right: auto;
    top: 50%;
    margin-top: -8px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon {
    left: 2px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon {
    right: 0px;
}

.elfinder-touch .elfinder-contextmenu-item {
    padding: 12px 38px;
}

/* root icon of each volume */
.elfinder-navbar-root-local.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-size: contain;
}

.elfinder-navbar-root-trash.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-size: contain;
}

.elfinder-navbar-root-ftp.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-size: contain;
}

.elfinder-navbar-root-sql.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-size: contain;
}

.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-size: contain;
}

.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-size: contain;
}

.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-size: contain;
}

.elfinder-navbar-root-box.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-size: contain;
}

.elfinder-navbar-root-zip.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-size: contain;
}

.elfinder-navbar-root-network.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-size: contain;
}

/* text in item */
.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span {
    display: block;
}

/* submenu item in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item {
    padding-left: 12px;
    padding-right: 12px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item {
    text-align: left;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item {
    text-align: right;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-left: 28px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-right: 28px;
}

.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-left: 36px;
}

.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-right: 36px;
}

/* command/submenu icon */
.elfinder .elfinder-contextmenu-extra-icon,
.elfinder .elfinder-contextmenu-arrow,
.elfinder .elfinder-contextmenu-icon {
    position: absolute;
    top: 50%;
    margin-top: -8px;
    overflow: hidden;
}

.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-icon {
    transform-origin: center center;
}

/* command icon in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon {
    left: 8px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon {
    right: 8px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon {
    right: 8px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon {
    left: 8px;
}

/* arrow icon */
.elfinder .elfinder-contextmenu-arrow {
    width: 16px;
    height: 16px;
    background: url('../img/arrows-normal.png') 5px 4px no-repeat;
}

/* arrow icon in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow {
    right: 5px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow {
    left: 5px;
    background-position: 0 -10px;
}

/* command extra icon's <a>, <span> tag */
.elfinder .elfinder-contextmenu-extra-icon a,
.elfinder .elfinder-contextmenu-extra-icon span {
    position: relative;
    width: 100%;
    height: 100%;
    margin: 0;
    color: transparent !important;
    text-decoration: none;
    cursor: pointer;
}

/* disable ui border/bg image on hover */
.elfinder .elfinder-contextmenu .ui-state-hover {
    border: 0 solid;
    background-image: none;
}

/* separator */
.elfinder .elfinder-contextmenu-separator {
    height: 0px;
    border-top: 1px solid #ccc;
    margin: 0 1px;
}

/* for CSS style priority to ui-state-disabled - "background-image: none" */
.elfinder .elfinder-contextmenu-item .elfinder-button-icon.ui-state-disabled {
    background-image: url('../img/toolbar.png');
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon{ display:none !important; }lib/css/elfinder.min.css000064400000264460147361034410011205 0ustar00/*!
 * elFinder - file manager for web
 * Version 2.1.46 (2019-01-14)
 * http://elfinder.org
 * 
 * Copyright 2009-2019, Studio 42
 * Licensed under a 3-clauses BSD license
 */
.elfinder-resize-container{margin-top:.3em}.elfinder-resize-type{float:left;margin-bottom:.4em}.elfinder-resize-control{float:left}.elfinder-resize-control input[type=number]{border:1px solid #aaa;text-align:right;width:4.5em}.elfinder-resize-control input.elfinder-resize-bg{text-align:center;width:5em;direction:ltr}.elfinder-dialog-resize .elfinder-resize-control-panel{margin-top:10px}.elfinder-dialog-resize .elfinder-resize-imgrotate,.elfinder-dialog-resize .elfinder-resize-pallet{cursor:pointer}.elfinder-dialog-resize .elfinder-resize-picking{cursor:crosshair}.elfinder-dialog-resize .elfinder-resize-grid8+button{padding-top:2px;padding-bottom:2px}.elfinder-resize-preview{width:400px;height:400px;padding:10px;background:#fff;border:1px solid #aaa;float:right;position:relative;overflow:hidden;text-align:left;direction:ltr}.elfinder-resize-handle,div.elfinder-cwd-wrapper-list tr.ui-state-default td{position:relative}.elfinder-resize-handle-hline,.elfinder-resize-handle-vline{position:absolute;background-image:url(../img/crop.gif)}.elfinder-resize-handle-hline{width:100%;height:1px!important;background-repeat:repeat-x}.elfinder-resize-handle-vline{width:1px!important;height:100%;background-repeat:repeat-y}.elfinder-resize-handle-hline-top{top:0;left:0}.elfinder-resize-handle-hline-bottom{bottom:0;left:0}.elfinder-resize-handle-vline-left{top:0;left:0}.elfinder-resize-handle-vline-right{top:0;right:0}.elfinder-resize-handle-point{position:absolute;width:8px;height:8px;border:1px solid #777;background:0 0}.elfinder-resize-handle-point-n{top:0;left:50%;margin-top:-5px;margin-left:-5px}.elfinder-resize-handle-point-e,.elfinder-resize-handle-point-ne{top:0;right:0;margin-top:-5px;margin-right:-5px}.elfinder-resize-handle-point-e{top:50%}.elfinder-resize-handle-point-se{bottom:0;right:0;margin-bottom:-5px;margin-right:-5px}.elfinder-resize-handle-point-s,.elfinder-resize-handle-point-sw{bottom:0;left:50%;margin-bottom:-5px;margin-left:-5px}.elfinder-resize-handle-point-sw{left:0}.elfinder-resize-handle-point-nw,.elfinder-resize-handle-point-w{top:50%;left:0;margin-top:-5px;margin-left:-5px}.elfinder-resize-handle-point-nw{top:0}.elfinder-dialog.elfinder-dialog-resize .ui-resizable-e{width:10px;height:100%}.elfinder-dialog.elfinder-dialog-resize .ui-resizable-s{width:100%;height:10px}.elfinder-resize-loading{position:absolute;width:200px;height:30px;top:50%;margin-top:-25px;left:50%;margin-left:-100px;text-align:center;background:url(../img/progress.gif) center bottom repeat-x}.elfinder-resize-row{margin-bottom:9px;position:relative}.elfinder-resize-label{float:left;width:80px;padding-top:3px}.elfinder-resize-checkbox-label{border:1px solid transparent}.elfinder-dialog-resize .elfinder-resize-whctrls{margin:-20px 5px 0}.elfinder-ltr .elfinder-dialog-resize .elfinder-resize-whctrls{float:right}.elfinder-help-team div,.elfinder-rtl .elfinder-dialog-resize .elfinder-resize-whctrls{float:left}.elfinder-dialog-resize .ui-resizable-e,.elfinder-dialog-resize .ui-resizable-w{height:100%;width:10px}.elfinder-dialog-resize .ui-resizable-n,.elfinder-dialog-resize .ui-resizable-s{width:100%;height:10px}.elfinder-dialog-resize .ui-resizable-e{margin-right:-7px}.elfinder-dialog-resize .ui-resizable-w{margin-left:-7px}.elfinder-dialog-resize .ui-resizable-s{margin-bottom:-7px}.elfinder-dialog-resize .ui-resizable-n{margin-top:-7px}.elfinder-dialog-resize .ui-resizable-ne,.elfinder-dialog-resize .ui-resizable-nw,.elfinder-dialog-resize .ui-resizable-se,.elfinder-dialog-resize .ui-resizable-sw{width:10px;height:10px}.elfinder-dialog-resize .ui-resizable-se{background:0 0;bottom:0;right:0;margin-right:-7px;margin-bottom:-7px}.elfinder-dialog-resize .ui-resizable-sw{margin-left:-7px;margin-bottom:-7px}.elfinder-dialog-resize .ui-resizable-ne{margin-right:-7px;margin-top:-7px}.elfinder-dialog-resize .ui-resizable-nw{margin-left:-7px;margin-top:-7px}.elfinder-touch .elfinder-dialog-resize .ui-resizable-n,.elfinder-touch .elfinder-dialog-resize .ui-resizable-s{height:20px}.elfinder-touch .elfinder-dialog-resize .ui-resizable-e,.elfinder-touch .elfinder-dialog-resize .ui-resizable-w{width:20px}.elfinder-touch .elfinder-dialog-resize .ui-resizable-ne,.elfinder-touch .elfinder-dialog-resize .ui-resizable-nw,.elfinder-touch .elfinder-dialog-resize .ui-resizable-se,.elfinder-touch .elfinder-dialog-resize .ui-resizable-sw{width:30px;height:30px}.elfinder-touch .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se{width:30px;height:30px;margin:0}.elfinder-dialog-resize .ui-icon-grip-solid-vertical{position:absolute;top:50%;right:0;margin-top:-8px;margin-right:-11px}.elfinder-dialog-resize .ui-icon-grip-solid-horizontal{position:absolute;left:50%;bottom:0;margin-left:-8px;margin-bottom:-11px}.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset{float:right}.elfinder-dialog-resize .elfinder-resize-degree input,.elfinder-dialog-resize input.elfinder-resize-quality,.elfinder-mobile .elfinder-resize-control input[type=number]{width:3.5em}.elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input,.elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality{width:2.5em}.elfinder-dialog-resize .elfinder-resize-degree button.ui-button{padding:6px 8px}.elfinder-dialog-resize button.ui-button span{padding:0}.elfinder-dialog-resize .elfinder-resize-jpgsize{font-size:90%}.ui-widget-content .elfinder-resize-container .elfinder-resize-rotate-slider{width:195px;margin:10px 7px;background-color:#fafafa}.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon{display:none}.elfinder-resize-preset-container{box-sizing:border-box;border-radius:5px}.elfinder-file-edit{width:100%;height:100%;margin:0;padding:2px;border:1px solid #ccc;box-sizing:border-box;resize:none}.elfinder-touch .elfinder-file-edit{font-size:16px}.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor{background-color:#fff}.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor{width:100%;height:300px;max-height:100%;text-align:center}.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none}.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main{top:0}.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header{display:none}.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-wrap,.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-wrap{height:calc(100% - 150px)}.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit{padding-bottom:20em;margin-bottom:-20em}.elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding{font-size:12px}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras{margin:0 1em 0 .2em;float:left}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality{padding-top:6px}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select{font-size:12px;margin-top:8px}.elfinder-dialog-edit .ui-dialog-buttonpane .ui-icon,.elfinder-edit-onlineconvert-bottom-btn button,.elfinder-edit-onlineconvert-button button,.elfinder-preference dt label{cursor:pointer}.elfinder-edit-spinner{position:absolute;top:50%;text-align:center;width:100%;font-size:16pt}.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner,.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner-text{float:none}.elfinder-dialog-edit .elfinder-toast>div{width:280px}.elfinder-edit-onlineconvert-button{display:inline-block;width:180px;min-height:30px;vertical-align:top}.elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline{-webkit-appearance:none;border-radius:16px;color:#000;text-align:center;padding:8px;background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0%,#c4c4c4 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#c4c4c4 100%)}.elfinder-edit-onlineconvert-button .elfinder-button-icon{margin:0 10px;vertical-align:middle;cursor:pointer}.elfinder-edit-onlineconvert-bottom-btn{text-align:center;margin:10px 0 0}.elfinder-edit-onlineconvert-link{margin-top:1em;text-align:center}.elfinder-edit-onlineconvert-link .elfinder-button-icon{background-image:url(../img/editor-icons.png);background-repeat:no-repeat;background-position:0 -144px;margin-bottom:-3px}.elfinder-edit-onlineconvert-link a,ul.elfinder-help-integrations a{text-decoration:none}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{position:absolute;top:4px;left:0;right:0;margin:auto 0 auto auto}.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{top:7px}.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{margin:auto auto auto 0}.elfinder-help{margin-bottom:.5em;-webkit-overflow-scrolling:touch}.elfinder-help .ui-tabs-panel{overflow:auto;padding:10px}.elfinder-dialog .ui-tabs .ui-tabs-nav li{overflow:hidden}.elfinder-dialog .ui-tabs .ui-tabs-nav li a{padding:.2em .8em;display:inline-block}.elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a{padding:.5em}.elfinder-dialog .ui-tabs-active a{background:inherit}.elfinder-help-shortcuts{height:auto;padding:10px;margin:0;box-sizing:border-box}.elfinder-help-shortcut{white-space:nowrap;clear:both}.elfinder-help-shortcut-pattern{float:left;width:160px}.elfinder-help-logo{width:100px;height:96px;float:left;margin-right:1em;background:url(../img/logo.png) center center no-repeat}.elfinder-help h3{font-size:1.5em;margin:.2em 0 .3em}.elfinder-help-separator{clear:both;padding:.5em}.elfinder-help-link{display:inline-block;margin-right:12px;padding:2px 0;white-space:nowrap}.elfinder-rtl .elfinder-help-link{margin-right:0;margin-left:12px}.elfinder-help .ui-priority-secondary{font-size:.9em}.elfinder-help .ui-priority-primary{margin-bottom:7px}.elfinder-help-team{clear:both;text-align:right;border-bottom:1px solid #ccc;margin:.5em 0;font-size:.9em}.elfinder-help-license{font-size:.9em}.elfinder-help-disabled{font-weight:700;text-align:center;margin:90px 0}.elfinder-help .elfinder-dont-panic{display:block;border:1px solid transparent;width:200px;height:200px;margin:30px auto;text-decoration:none;text-align:center;position:relative;background:#d90004;-moz-box-shadow:5px 5px 9px #111;-webkit-box-shadow:5px 5px 9px #111;box-shadow:5px 5px 9px #111;background:-moz-radial-gradient(80px 80px,circle farthest-corner,#d90004 35%,#960004 100%);background:-webkit-gradient(radial,80 80,60,80 80,120,from(#d90004),to(#960004));-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;outline:none}.elfinder-help .elfinder-dont-panic span{font-size:3em;font-weight:700;text-align:center;color:#fff;position:absolute;left:0;top:45px}ul.elfinder-help-integrations ul{padding:0;margin:0 1em 1em}ul.elfinder-help-integrations a:hover{text-decoration:underline}.elfinder-help-debug{height:100%;padding:0;margin:0;overflow:none;border:none}.elfinder-help-debug .ui-tabs-panel{padding:0;margin:0;overflow:auto}.elfinder-help-debug fieldset{margin-bottom:10px;border-color:#789;border-radius:10px}.elfinder-help-debug legend{font-size:1.2em;font-weight:700;color:#2e8b57}.elfinder-help-debug dl{margin:0}.elfinder-help-debug dt{color:#789}.elfinder-help-debug dt:before{content:"["}.elfinder-help-debug dt:after{content:"]"}.elfinder-help-debug dd{margin-left:1em}.elfinder-dialog .elfinder-preference .ui-tabs-nav{margin-bottom:1px;height:auto}.elfinder-preference .ui-tabs-panel{padding:10px 10px 0;overflow:auto;box-sizing:border-box;-webkit-overflow-scrolling:touch}.elfinder-preference a.ui-state-hover,.elfinder-preference label.ui-state-hover{border:none}.elfinder-preference dl{width:100%;display:inline-block;margin:.5em 0}.elfinder-preference dt{display:block;width:200px;clear:left;float:left;max-width:50%}.elfinder-rtl .elfinder-preference dt{clear:right;float:right}.elfinder-preference dd{margin-bottom:1em}.elfinder-preference dd input[type=checkbox],.elfinder-preference dd label{white-space:nowrap;display:inline-block;cursor:pointer}.elfinder-preference dt.elfinder-preference-checkboxes{width:100%;max-width:none}.elfinder-preference dd.elfinder-preference-checkboxes{padding-top:3ex}.elfinder-preference select{max-width:100%}.elfinder-preference dd.elfinder-preference-iconSize .ui-slider{width:50%;max-width:100px;display:inline-block;margin:0 10px}.elfinder-preference button{margin:0 16px}.elfinder-preference button+button{margin:0 -10px}.elfinder-preference .elfinder-preference-taball .elfinder-reference-hide-taball{display:none}.elfinder-preference-theme fieldset{margin-bottom:10px}.elfinder-preference-theme legend a{font-size:1.8em;text-decoration:none;cursor:pointer}.elfinder-preference-theme dt{width:20%;word-break:break-all}.elfinder-preference-theme dt:after{content:" :"}.elfinder-preference-theme dd{margin-inline-start:20%}.elfinder-preference img.elfinder-preference-theme-image{display:block;margin-left:auto;margin-right:auto;max-width:90%;max-height:200px;cursor:pointer}.elfinder-preference-theme-btn,.elfinder-rename-batch-type{text-align:center}.elfinder-preference-theme button.elfinder-preference-theme-default{display:inline;margin:0 10px;font-size:8pt}.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before{right:33px;left:auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:none}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{position:absolute;bottom:2px;width:16px;height:16px;padding:10px;border:none;overflow:hidden;cursor:pointer}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon,.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{left:2px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon,.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{right:2px}.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before{left:38px}.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before{right:86px;left:auto}.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:none}.elfinder-rename-batch div{margin:5px 8px}.elfinder-rename-batch .elfinder-rename-batch-name input{width:100%;font-size:1.6em}.elfinder-rename-batch .elfinder-rename-batch-type label{margin:2px;font-size:.9em}.elfinder-rename-batch-preview{padding:0 8px;font-size:1.1em;min-height:4ex}.ui-front{z-index:100}.elfinder{padding:0;position:relative;display:block;visibility:visible;font-size:18px;font-family:Verdana,Arial,Helvetica,sans-serif}.elfinder-ios input,.elfinder-ios select,.elfinder-ios textarea{font-size:16px!important}.elfinder.elfinder-fullscreen>.ui-resizable-handle{display:none}.elfinder-font-mono{line-height:2ex}.elfinder.elfinder-processing *{cursor:progress!important}.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after{position:absolute;top:0;width:100%;height:3px;content:'';left:0;background-image:url(../img/progress.gif);opacity:.6;pointer-events:none}.elfinder :not(input):not(textarea):not(select):not([contenteditable=true]),.elfinder-contextmenu :not(input):not(textarea):not(select):not([contenteditable=true]){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none}.elfinder .overflow-scrolling-touch{-webkit-overflow-scrolling:touch}.elfinder-rtl{text-align:right;direction:rtl}.elfinder-workzone{padding:0;position:relative;overflow:hidden}.elfinder-lock,.elfinder-perms,.elfinder-symlink{position:absolute;width:16px;height:16px;background-image:url(../img/toolbar.png);background-repeat:no-repeat}.elfinder-perms,.elfinder-symlink{background-position:0 -528px}.elfinder-na .elfinder-perms{background-position:0 -96px}.elfinder-ro .elfinder-perms{background-position:0 -64px}.elfinder-wo .elfinder-perms{background-position:0 -80px}.elfinder-group .elfinder-perms{background-position:0 0}.elfinder-lock{background-position:0 -656px}.elfinder-drag-helper{top:0;left:0;width:70px;height:60px;padding:0 0 0 25px;z-index:100000;will-change:left,top}.elfinder-drag-helper.html5-native{position:absolute;top:-1000px;left:-1000px}.elfinder-drag-helper-icon-status{position:absolute;width:16px;height:16px;left:42px;top:60px;background:url(../img/toolbar.png) 0 -96px no-repeat;display:block}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{background-position:0 -720px}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{background-position:0 -544px}.elfinder-drag-num{display:inline-box;position:absolute;top:0;left:0;width:auto;height:14px;text-align:center;padding:1px 3px;font-weight:700;color:#fff;background-color:red;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-drag-helper .elfinder-cwd-icon{margin:0 0 0 -24px;float:left}.elfinder-overlay{position:absolute;opacity:.2;filter:Alpha(Opacity=20)}.elfinder .elfinder-panel{position:relative;background-image:none;padding:7px 12px}[draggable=true]{-khtml-user-drag:element}.elfinder [contentEditable=true]:empty:not(:focus):before{content:attr(data-ph)}.elfinder div.elfinder-bottomtray{position:fixed;bottom:0;max-width:100%;opacity:.8}.elfinder.elfinder-ltr div.elfinder-bottomtray{left:0}.elfinder.elfinder-rtl div.elfinder-bottomtray{right:0}.elfinder .elfinder-ui-tooltip,.elfinder-ui-tooltip{font-size:14px;padding:2px 4px}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{position:absolute;border:1px solid #aaa;background:#fff;color:#555;padding:4px 0;top:0;left:0}.elfinder .elfinder-contextmenu-sub{top:5px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub{margin-left:-5px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub{margin-right:-5px}.elfinder .elfinder-contextmenu-header{margin-top:-4px;padding:0 .5em .2ex;border:none;text-align:center}.elfinder .elfinder-contextmenu-header span{font-size:.8em;font-weight:bolder}.elfinder .elfinder-contextmenu-item{position:relative;display:block;padding:4px 30px;text-decoration:none;white-space:nowrap;cursor:default}.elfinder .elfinder-contextmenu-item.ui-state-active{border:none}.elfinder .elfinder-contextmenu-item .ui-icon{width:16px;height:16px;position:absolute;left:auto;right:auto;top:50%;margin-top:-8px}.elfinder-touch .elfinder-contextmenu-item{padding:12px 38px}.elfinder-navbar-root-local.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_local.svg);background-size:contain}.elfinder-navbar-root-trash.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_trash.svg);background-size:contain}.elfinder-navbar-root-ftp.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_ftp.svg);background-size:contain}.elfinder-navbar-root-sql.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_sql.svg);background-size:contain}.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_dropbox.svg);background-size:contain}.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_googledrive.svg);background-size:contain}.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_onedrive.svg);background-size:contain}.elfinder-navbar-root-box.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_box.svg);background-size:contain}.elfinder-navbar-root-zip.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_zip.svg);background-size:contain}.elfinder-navbar-root-network.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_network.svg);background-size:contain}.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span{display:block}.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item{padding-left:12px;padding-right:12px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item{text-align:left}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item{text-align:right}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-left:28px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-right:28px}.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-left:36px}.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-right:36px}.elfinder .elfinder-contextmenu-arrow,.elfinder .elfinder-contextmenu-extra-icon,.elfinder .elfinder-contextmenu-icon{position:absolute;top:50%;margin-top:-8px;overflow:hidden}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon{left:8px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon,.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon{right:8px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon{left:8px}.elfinder .elfinder-contextmenu-arrow{width:16px;height:16px;background:url(../img/arrows-normal.png) 5px 4px no-repeat}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow{right:5px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow{left:5px;background-position:0 -10px}.elfinder .elfinder-contextmenu-extra-icon a,.elfinder .elfinder-contextmenu-extra-icon span{display:inline-block;width:100%;height:100%;padding:20px;margin:0;color:transparent!important;text-decoration:none;cursor:pointer}.elfinder .elfinder-contextmenu .ui-state-hover{border:0 solid;background-image:none}.elfinder .elfinder-contextmenu-separator{height:0;border-top:1px solid #ccc;margin:0 1px}.elfinder .elfinder-contextmenu-item .elfinder-button-icon.ui-state-disabled{background-image:url(../img/toolbar.png)}.elfinder-cwd-wrapper{overflow:auto;position:relative;padding:2px;margin:0}.elfinder-cwd-wrapper-list{padding:0}.elfinder-cwd{position:absolute;top:0;cursor:default;padding:0;margin:0;-ms-touch-action:auto;touch-action:auto;min-width:100%}.elfinder-ltr .elfinder-cwd{left:0}.elfinder-rtl .elfinder-cwd{right:0}.elfinder-cwd.elfinder-table-header-sticky{position:-webkit-sticky;position:-ms-sticky;position:sticky;top:0;left:auto;right:auto;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;height:0;overflow:visible}.elfinder-cwd.elfinder-table-header-sticky table{border-top:2px solid;padding-top:0}.elfinder-cwd.elfinder-table-header-sticky td{display:inline-block}.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table{border-top:2px solid transparent}.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader,.elfinder-cwd-fixheader .elfinder-cwd{position:relative}.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active{outline:2px solid #8cafed;outline-offset:-2px}.elfinder-cwd-wrapper-empty .elfinder-cwd:after{display:block;height:auto;width:90%;width:calc(100% - 20px);position:absolute;top:50%;left:50%;-ms-transform:translateY(-50%) translateX(-50%);-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);line-height:1.5em;text-align:center;white-space:pre-wrap;opacity:.6;filter:Alpha(Opacity=60);font-weight:700}.elfinder-cwd-file .elfinder-cwd-select{position:absolute;top:0;left:0;background-color:transparent;opacity:.4;filter:Alpha(Opacity=40)}.elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select{width:30px;height:30px}.elfinder .elfinder-cwd-selectall,.elfinder-cwd-file.ui-selected .elfinder-cwd-select{opacity:.8;filter:Alpha(Opacity=80)}.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select{left:auto;right:0}.elfinder .elfinder-cwd-selectall{position:absolute;width:30px;height:30px;top:0}.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall{display:none}.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall{text-align:right;right:18px;left:auto}.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall{text-align:left;right:auto;left:18px}.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall{right:0}.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall{left:0}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover{background-color:transparent}.elfinder-cwd-view-icons .elfinder-cwd-file{width:120px;height:90px;padding-bottom:2px;cursor:default;border:none;position:relative}.elfinder .std42-dialog .ui-dialog-content label,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active{border:none}.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file{float:left;margin:0 3px 2px 0}.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file{float:right;margin:0 0 5px 3px}.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover{border:0 solid}.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:52px;height:52px;margin:1px auto;padding:2px;position:relative}.elfinder-cwd-size1 .elfinder-cwd-icon:before,.elfinder-cwd-size2 .elfinder-cwd-icon:before,.elfinder-cwd-size3 .elfinder-cwd-icon:before{top:3px;display:block}.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file{width:120px;height:112px}.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:74px;height:74px}.elfinder-cwd-size1 .elfinder-cwd-icon,.elfinder-cwd-size2 .elfinder-cwd-icon,.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform-origin:top center;-ms-transform:scale(1.5);-webkit-transform-origin:top center;-webkit-transform:scale(1.5);transform-origin:top center;transform:scale(1.5)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(1.35) translate(-4px,15%);-webkit-transform-origin:top left;-webkit-transform:scale(1.35) translate(-4px,15%);transform-origin:top left;transform:scale(1.35) translate(-4px,15%)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1) translate(10px,-5px);-webkit-transform:scale(1) translate(10px,-5px);transform:scale(1) translate(10px,-5px)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:72px;height:72px;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file{width:140px;height:134px}.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:98px;height:98px}.elfinder-cwd-size2 .elfinder-cwd-icon,.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform:scale(2);-webkit-transform:scale(2);transform:scale(2)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(1.8) translate(-5px,18%);-webkit-transform-origin:top left;-webkit-transform:scale(1.8) translate(-5px,18%);transform-origin:top left;transform:scale(1.8) translate(-5px,18%)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1.1) translate(0,10px);-webkit-transform:scale(1.1) translate(0,10px);transform:scale(1.1) translate(0,10px)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:96px;height:96px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file{width:174px;height:158px}.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:122px;height:122px}.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform:scale(2.5);-webkit-transform:scale(2.5);transform:scale(2.5)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(2.25) translate(-6px,20%);-webkit-transform-origin:top left;-webkit-transform:scale(2.25) translate(-6px,20%);transform-origin:top left;transform:scale(2.25) translate(-6px,20%)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1.2) translate(-9px,22px);-webkit-transform:scale(1.2) translate(-9px,22px);transform:scale(1.2) translate(-9px,22px)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:120px;height:120px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}.elfinder-cwd-view-icons .elfinder-cwd-filename{text-align:center;max-height:2.4em;line-height:1.2em;white-space:pre-line;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;margin:3px 1px 0;padding:1px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;word-break:break-word;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.elfinder-cwd-view-icons .elfinder-perms{bottom:4px;right:2px}.elfinder-cwd-view-icons .elfinder-lock{top:-3px;right:-2px}.elfinder-cwd-view-icons .elfinder-symlink{bottom:6px;left:0}.elfinder-cwd-icon{display:block;width:48px;height:48px;margin:0 auto;background-image:url(../img/icons-big.svg);background-image:url(../img/icons-big.png) \9;background-position:0 0;background-repeat:no-repeat;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box}.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon{background-image:url(../img/volume_icon_local.svg);background-image:url(../img/volume_icon_local.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon{background-image:url(../img/volume_icon_trash.svg);background-image:url(../img/volume_icon_trash.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon{background-image:url(../img/volume_icon_ftp.svg);background-image:url(../img/volume_icon_ftp.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon{background-image:url(../img/volume_icon_sql.svg);background-image:url(../img/volume_icon_sql.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon{background-image:url(../img/volume_icon_dropbox.svg);background-image:url(../img/volume_icon_dropbox.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon{background-image:url(../img/volume_icon_googledrive.svg);background-image:url(../img/volume_icon_googledrive.png) \9;background-size:contain}.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon{background-image:url(../img/volume_icon_onedrive.svg);background-image:url(../img/volume_icon_onedrive.png) \9;background-size:contain}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon{background-image:url(../img/volume_icon_box.svg);background-image:url(../img/volume_icon_box.png) \9;background-size:contain}.elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:url(../img/volume_icon_zip.svg);background-image:url(../img/volume_icon_zip.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon{background-image:url(../img/volume_icon_network.svg);background-image:url(../img/volume_icon_network.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd-icon:before{content:none;position:absolute;left:0;top:5px;min-width:20px;max-width:84px;text-align:center;padding:0 4px 1px;border-radius:4px;font-family:Verdana;font-size:10px;line-height:1.3em;-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:-10px}.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before{content:'ts'}.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before{content:'dash'}.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before{content:'hls'}.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before{content:'c++'}.elfinder-cwd-icon.elfinder-cwd-bgurl{background-position:center center;background-repeat:no-repeat}.elfinder-cwd-icon.elfinder-cwd-bgurl,.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself{-moz-background-size:cover;background-size:cover}.elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:' '}.elfinder-cwd-bgurl:after{position:relative;display:inline-block;top:36px;left:-38px;width:48px;height:48px;background-image:url(../img/icons-big.svg);background-image:url(../img/icons-big.png) \9;background-repeat:no-repeat;background-size:auto!important;opacity:.8;filter:Alpha(Opacity=60);-webkit-transform-origin:54px -24px;-webkit-transform:scale(.6);-moz-transform-origin:54px -24px;-moz-transform:scale(.6);-ms-transform-origin:54px -24px;-ms-transform:scale(.6);-o-transform-origin:54px -24px;-o-transform:scale(.6);transform-origin:54px -24px;transform:scale(.6)}.elfinder-cwd-icon.elfinder-cwd-icon-drag{width:48px;height:48px}.elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after,.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after,.elfinder-cwd-icon.elfinder-cwd-icon-drag:after,.elfinder-cwd-icon.elfinder-cwd-icon-drag:before{content:none}.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon{background-position:0 -100px}.elfinder-cwd .elfinder-droppable-active{outline:2px solid #8cafed;outline-offset:-2px}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application,.elfinder-cwd-icon-application:after{background-position:0 -150px}.elfinder-cwd-icon-text,.elfinder-cwd-icon-text:after{background-position:0 -1350px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-plain:after,.elfinder-cwd-icon-x-empty,.elfinder-cwd-icon-x-empty:after{background-position:0 -200px}.elfinder-cwd-icon-image,.elfinder-cwd-icon-image:after,.elfinder-cwd-icon-vnd-adobe-photoshop,.elfinder-cwd-icon-vnd-adobe-photoshop:after{background-position:0 -250px}.elfinder-cwd-icon-postscript,.elfinder-cwd-icon-postscript:after{background-position:0 -1550px}.elfinder-cwd-icon-audio,.elfinder-cwd-icon-audio:after{background-position:0 -300px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-video:after,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -350px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtf:after,.elfinder-cwd-icon-rtfd,.elfinder-cwd-icon-rtfd:after{background-position:0 -400px}.elfinder-cwd-icon-pdf,.elfinder-cwd-icon-pdf:after{background-position:0 -450px}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-ms-excel:after,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after{background-position:0 -1450px}.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after{background-position:0 -1700px}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after{background-position:0 -1400px}.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after{background-position:0 -1650px}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-msword:after,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-word:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after{background-position:0 -1500px}.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text:after{background-position:0 -1750px}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-vnd-ms-office:after{background-position:0 -500px}.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-database:after,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-oasis-opendocument-image:after,.elfinder-cwd-icon-vnd-openofficeorg-extension,.elfinder-cwd-icon-vnd-openofficeorg-extension:after{background-position:0 -1600px}.elfinder-cwd-icon-html,.elfinder-cwd-icon-html:after{background-position:0 -550px}.elfinder-cwd-icon-css,.elfinder-cwd-icon-css:after{background-position:0 -600px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-javascript:after,.elfinder-cwd-icon-x-javascript,.elfinder-cwd-icon-x-javascript:after{background-position:0 -650px}.elfinder-cwd-icon-x-perl,.elfinder-cwd-icon-x-perl:after{background-position:0 -700px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -750px}.elfinder-cwd-icon-x-ruby,.elfinder-cwd-icon-x-ruby:after{background-position:0 -800px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-sh:after,.elfinder-cwd-icon-x-shellscript,.elfinder-cwd-icon-x-shellscript:after{background-position:0 -850px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--:after,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--hdr:after,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-c--src:after,.elfinder-cwd-icon-x-c:after,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-chdr:after,.elfinder-cwd-icon-x-csrc,.elfinder-cwd-icon-x-csrc:after,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source,.elfinder-cwd-icon-x-java-source:after,.elfinder-cwd-icon-x-java:after{background-position:0 -900px}.elfinder-cwd-icon-x-php,.elfinder-cwd-icon-x-php:after{background-position:0 -950px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1000px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-7z-compressed:after,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-xz:after,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-x-zip:after,.elfinder-cwd-icon-zip,.elfinder-cwd-icon-zip:after{background-position:0 -1050px}.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-gzip:after,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-tar:after{background-position:0 -1100px}.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-bzip2:after,.elfinder-cwd-icon-x-bzip:after{background-position:0 -1150px}.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-rar-compressed:after,.elfinder-cwd-icon-x-rar:after{background-position:0 -1200px}.elfinder-cwd-icon-x-shockwave-flash,.elfinder-cwd-icon-x-shockwave-flash:after{background-position:0 -1250px}.elfinder-cwd-icon-group{background-position:0 -1300px}.elfinder-cwd-filename input{width:100%;border:none;margin:0;padding:0}.elfinder-cwd-view-icons,.elfinder-cwd-view-icons input{text-align:center}.elfinder-cwd-view-icons textarea{width:100%;border:0 solid;margin:0;padding:0;text-align:center;overflow:hidden;resize:none}.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after,.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select{display:none}.elfinder-cwd table{width:100%;border-collapse:separate;border:0 solid;margin:0 0 10px;border-spacing:0;box-sizing:padding-box;padding:2px;position:relative}.elfinder .elfinder-cwd table td div,.elfinder-cwd table td{box-sizing:content-box}.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader{position:absolute;overflow:hidden}.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before{content:'';position:absolute;width:100%;top:0;height:3px;background-color:#fff}.elfinder-droppable-active+.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before{background-color:#8cafed}.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table{table-layout:fixed}.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall{text-align:left;right:auto;left:0;padding-top:3px}.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall{text-align:right;right:0;left:auto;padding-top:3px}.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall{padding-top:4px}.elfinder .elfinder-cwd table thead tr{border-left:0 solid;border-top:0 solid;border-right:0 solid}.elfinder .elfinder-cwd table thead td{padding:4px 14px}.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding:4px 14px 4px 22px}.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding:4px 22px 4px 14px}.elfinder-touch .elfinder-cwd table thead td,.elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding-top:8px;padding-bottom:8px}.elfinder .elfinder-cwd table thead td.ui-state-active{background:#ebf1f6;background:-moz-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebf1f6),color-stop(50%,#abd3ee),color-stop(51%,#89c3eb),color-stop(100%,#d5ebfb));background:-webkit-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-o-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-ms-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:linear-gradient(to bottom,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0)}.elfinder .elfinder-cwd table td{padding:4px 12px;white-space:pre;overflow:hidden;text-align:right;cursor:default;border:0 solid}.elfinder .elfinder-cwd table tbody td:first-child{position:relative}tr.elfinder-cwd-file td .elfinder-cwd-select{padding-top:3px}.elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select{width:40px}.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select{padding-top:10px}.elfinder-touch .elfinder-cwd tr td{padding:10px 12px}.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td{padding:13px 12px}.elfinder-ltr .elfinder-cwd table td{text-align:right}.elfinder-ltr .elfinder-cwd table td:first-child{text-align:left}.elfinder-rtl .elfinder-cwd table td{text-align:left}.elfinder-ltr .elfinder-info-tb tr td:first-child,.elfinder-rtl .elfinder-cwd table td:first-child{text-align:right}.elfinder-odd-row{background:#eee}.elfinder-cwd-view-list .elfinder-cwd-file-wrapper{width:97%;position:relative}.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper{margin-left:8px}.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper{margin-right:8px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename{padding-left:23px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename{padding-right:23px}.elfinder-cwd-view-list .elfinder-lock,.elfinder-cwd-view-list .elfinder-perms,.elfinder-cwd-view-list .elfinder-symlink{margin-top:-6px;opacity:.6;filter:Alpha(Opacity=60)}.elfinder-cwd-view-list .elfinder-perms{bottom:-4px}.elfinder-cwd-view-list .elfinder-lock{top:0}.elfinder-cwd-view-list .elfinder-symlink{bottom:-4px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms{left:8px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-perms{right:-8px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock{left:10px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-lock{right:-10px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink{left:-7px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink{right:7px}.elfinder-cwd-view-list td .elfinder-cwd-icon{width:16px;height:16px;position:absolute;top:50%;margin-top:-8px;background-image:url(../img/icons-small.png)}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon{left:0}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon{right:0}.elfinder-cwd-view-list .elfinder-cwd-icon:after,.elfinder-cwd-view-list .elfinder-cwd-icon:before{content:none}.elfinder-cwd-view-list thead td .ui-resizable-handle{height:100%;top:6px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle{top:-4px;margin:10px}.elfinder-cwd-view-list thead td .ui-resizable-e{right:-7px}.elfinder-cwd-view-list thead td .ui-resizable-w{left:-7px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e{right:-16px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w{left:-16px}.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after{margin-top:0}.elfinder-cwd-message-board{position:-webkit-sticky;position:sticky;width:100%;height:calc(100% - .01px);top:0;left:0;margin:0;padding:0;pointer-events:none;background-color:transparent}.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board{background-image:url(../img/trashmesh.png)}.elfinder-cwd-message-board .elfinder-cwd-trash{position:absolute;bottom:0;font-size:30px;width:100%;text-align:right;display:none}.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash{text-align:left}.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash{font-size:20px}.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash{display:block;opacity:.3}.elfinder-cwd-message-board .elfinder-cwd-expires{position:absolute;bottom:0;font-size:24px;width:100%;text-align:right;opacity:.25}.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires{text-align:left}.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires{font-size:20px}.std42-dialog{padding:0;position:absolute;left:auto;right:auto;box-sizing:border-box}.std42-dialog.elfinder-dialog-minimized{overFlow:hidden;position:relative;float:left;width:auto;cursor:pointer}.elfinder-rtl .std42-dialog.elfinder-dialog-minimized{float:right}.std42-dialog input{border:1px solid}.std42-dialog .ui-dialog-titlebar{border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent;font-weight:400;padding:.2em 1em}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar{padding:0 .5em;height:20px}.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar{padding:.3em .5em}.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar{cursor:default}.std42-dialog .ui-dialog-titlebar .ui-widget-header{border:none;cursor:pointer}.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title{display:inherit;word-break:break-all}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title{display:list-item;display:-moz-inline-box;white-space:nowrap;word-break:normal;overflow:hidden;word-wrap:normal;overflow-wrap:normal;max-width:-webkit-calc(100% - 24px);max-width:-moz-calc(100% - 24px);max-width:calc(100% - 24px)}.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title{padding-top:.15em}.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title{max-width:-webkit-calc(100% - 36px);max-width:-moz-calc(100% - 36px);max-width:calc(100% - 36px)}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button{position:relative;float:left;top:10px;left:-10px;right:10px;width:20px;height:20px;padding:1px;margin:-10px 1px 0;background-color:transparent;background-image:none}.elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button{-moz-transform:scale(1.2);zoom:1.2;padding-left:6px;padding-right:6px;height:24px}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right{float:right}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{left:10px;right:-10px}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{width:17px;height:17px;border-width:1px;opacity:.7;filter:Alpha(Opacity=70);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{opacity:.5;filter:Alpha(Opacity=50)}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{opacity:1;filter:Alpha(Opacity=100)}.elfinder-spinner{width:14px;height:14px;background:url(../img/spinner-mini.gif) center center no-repeat;margin:0 5px;display:inline-block;vertical-align:middle}.elfinder-ltr .elfinder-info-tb span,.elfinder-ltr .elfinder-spinner,.elfinder-ltr .elfinder-spinner-text{float:left}.elfinder-rtl .elfinder-info-tb span,.elfinder-rtl .elfinder-spinner,.elfinder-rtl .elfinder-spinner-text{float:right}.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se{width:12px;height:12px;-moz-transform-origin:bottom right;-moz-transform:scale(1.5);zoom:1.5;right:-7px;bottom:-7px;margin:3px 7px 7px 3px;background-position:-64px -224px}.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar{text-align:right}.std42-dialog .ui-dialog-content{padding:.3em .5em;box-sizing:border-box}.elfinder .std42-dialog .ui-dialog-content,.elfinder .std42-dialog .ui-dialog-content *{-webkit-user-select:auto;-moz-user-select:text;-khtml-user-select:text;user-select:text}.std42-dialog .ui-dialog-buttonpane{border:0 solid;margin:0;padding:.5em;text-align:right}.elfinder-rtl .std42-dialog .ui-dialog-buttonpane{text-align:left}.std42-dialog .ui-dialog-buttonpane button{margin:.2em 0 0 .4em;padding:.2em;outline:0 solid}.std42-dialog .ui-dialog-buttonpane button span{padding:2px 9px}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:2px}.elfinder-dialog .ui-resizable-e,.elfinder-dialog .ui-resizable-s{width:0;height:0}.std42-dialog .ui-button input{cursor:pointer}.std42-dialog select{border:1px solid #ccc}.elfinder-dialog-icon{position:absolute;width:32px;height:32px;left:10px;top:50%;margin-top:-15px;background:url(../img/dialogs.png) 0 0 no-repeat}.elfinder-rtl .elfinder-dialog-icon{left:auto;right:10px}.elfinder-dialog-confirm .ui-dialog-content,.elfinder-dialog-error .ui-dialog-content{padding-left:56px;min-height:35px}.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content,.elfinder-rtl .elfinder-dialog-error .ui-dialog-content{padding-left:0;padding-right:56px}.elfinder-dialog-error .elfinder-err-var{word-break:break-all}.elfinder-dialog-notify{top:36px;width:280px}.elfinder-ltr .elfinder-dialog-notify{right:12px}.elfinder-rtl .elfinder-dialog-notify{left:12px}.elfinder-dialog-notify .ui-dialog-titlebar{height:5px}.elfinder-dialog-notify .ui-dialog-titlebar-close,.elfinder-rm-title+br{display:none}.elfinder-dialog-notify .ui-dialog-content{padding:0}.elfinder-notify{border-bottom:1px solid #ccc;position:relative;padding:.5em;text-align:center;overflow:hidden}.elfinder-ltr .elfinder-notify{padding-left:36px}.elfinder-rtl .elfinder-notify{padding-right:36px}.elfinder-notify:last-child{border:0 solid}.elfinder-notify-progressbar{width:180px;height:8px;border:1px solid #aaa;background:#f5f5f5;margin:5px auto;overflow:hidden}.elfinder-notify-progress{width:100%;height:8px;background:url(../img/progress.gif) center center repeat-x}.elfinder-notify-progress,.elfinder-notify-progressbar{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.elfinder-dialog-icon-file,.elfinder-dialog-icon-open,.elfinder-dialog-icon-readdir,.elfinder-dialog-icon-reload{background-position:0 -225px}.elfinder-dialog-icon-mkdir{background-position:0 -64px}.elfinder-dialog-icon-mkfile{background-position:0 -96px}.elfinder-dialog-icon-copy,.elfinder-dialog-icon-move,.elfinder-dialog-icon-prepare{background-position:0 -128px}.elfinder-dialog-icon-chunkmerge,.elfinder-dialog-icon-upload{background-position:0 -160px}.elfinder-dialog-icon-rm{background-position:0 -192px}.elfinder-dialog-icon-download{background-position:0 -260px}.elfinder-dialog-icon-save{background-position:0 -295px}.elfinder-dialog-icon-chkcontent,.elfinder-dialog-icon-rename{background-position:0 -330px}.elfinder-dialog-icon-archive,.elfinder-dialog-icon-extract,.elfinder-dialog-icon-zipdl{background-position:0 -365px}.elfinder-dialog-icon-search{background-position:0 -402px}.elfinder-dialog-icon-chmod,.elfinder-dialog-icon-dim,.elfinder-dialog-icon-loadimg,.elfinder-dialog-icon-netmount,.elfinder-dialog-icon-netunmount,.elfinder-dialog-icon-preupload,.elfinder-dialog-icon-resize,.elfinder-dialog-icon-url{background-position:0 -434px}.elfinder-dialog-confirm-applyall,.elfinder-dialog-confirm-encoding{padding:0 1em;margin:0}.elfinder-ltr .elfinder-dialog-confirm-applyall,.elfinder-ltr .elfinder-dialog-confirm-encoding{text-align:left}.elfinder-rtl .elfinder-dialog-confirm-applyall,.elfinder-rtl .elfinder-dialog-confirm-encoding{text-align:right}.elfinder-dialog-confirm .elfinder-dialog-icon{background-position:0 -32px}.elfinder-dialog-confirm .ui-dialog-buttonset{width:auto}.elfinder-info-title .elfinder-cwd-icon{float:left;width:48px;height:48px;margin-right:1em}.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon,.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon{float:right;margin-right:0;margin-left:1em}.elfinder-info-title strong{display:block;padding:.3em 0 .5em}.elfinder-info-tb{min-width:200px;border:0 solid;margin:1em .2em;width:100%}.elfinder-info-tb td{white-space:pre-wrap;padding:2px}.elfinder-info-tb td.elfinder-info-label{white-space:nowrap}.elfinder-info-tb td.elfinder-info-hash{display:inline-block;word-break:break-all;max-width:32ch}.elfinder-rtl .elfinder-info-tb tr td:first-child{text-align:left}.elfinder-info-tb a{outline:none;text-decoration:underline}.elfinder-info-tb a:hover{text-decoration:none}.elfinder-netmount-tb{margin:0 auto}.elfinder-netmount-tb .elfinder-button-icon,.elfinder-netmount-tb select{cursor:pointer}button.elfinder-info-button{margin:-3.5px 0;cursor:pointer}.elfinder-upload-dropbox{display:table-cell;text-align:center;vertical-align:middle;padding:.5em;border:3px dashed #aaa;width:9999px;height:80px;overflow:hidden;word-break:keep-all}.elfinder-upload-dropbox.ui-state-hover{background:#dfdfdf;border:3px dashed #555}.elfinder-upload-dialog-or{margin:.3em 0;text-align:center}.elfinder-upload-dialog-wrapper{text-align:center}.elfinder-upload-dialog-wrapper .ui-button{position:relative;overflow:hidden}.elfinder-upload-dialog-wrapper .ui-button form{position:absolute;right:0;top:0;width:100%;opacity:0;filter:Alpha(Opacity=0)}.elfinder-upload-dialog-wrapper .ui-button form input{padding:50px 0 0;font-size:3em;width:100%}.dialogelfinder .dialogelfinder-drag{border-left:0 solid;border-top:0 solid;border-right:0 solid;font-weight:400;padding:2px 12px;cursor:move;position:relative;text-align:left}.elfinder-rtl .dialogelfinder-drag{text-align:right}.dialogelfinder-drag-close{position:absolute;top:50%;margin-top:-8px}.elfinder-ltr .dialogelfinder-drag-close{right:12px}.elfinder-rtl .dialogelfinder-drag-close{left:12px}.elfinder-rm-title{margin-bottom:.5ex}.elfinder-rm-title .elfinder-cwd-icon{float:left;width:48px;height:48px;margin-right:1em}.elfinder-rm-title strong{display:block;white-space:pre-wrap;word-break:normal;overflow:hidden;text-overflow:ellipsis}.elfinder-font-mono{font-family:"Ricty Diminished","Myrica M",Consolas,"Courier New",Courier,Monaco,monospace;font-size:1.1em}.elfinder-contextmenu .elfinder-contextmenu-item span{font-size:.72em}.elfinder-cwd-view-icons .elfinder-cwd-filename,.elfinder-cwd-view-list td,.elfinder-statusbar div{font-size:.7em}.std42-dialog .ui-dialog-titlebar{font-size:.82em}.std42-dialog .ui-dialog-content{font-size:.72em}.std42-dialog .ui-dialog-buttonpane{font-size:.76em}.dialogelfinder .dialogelfinder-drag,.elfinder-info-tb{font-size:.9em}.elfinder-upload-dialog-or,.elfinder-upload-dropbox{font-size:1.2em}.elfinder .elfinder-navbar{font-size:.72em}.elfinder-place-drag .elfinder-navbar-dir{font-size:.9em}.elfinder-quicklook-title{font-size:.7em;font-weight:400}.elfinder-quicklook-info-data{font-size:.72em}.elfinder-quicklook-preview-text-wrapper{font-size:.9em}.elfinder-button-menu-item{font-size:.72em}.elfinder-button-search input{font-size:.8em}.elfinder-drag-num{font-size:12px}.elfinder-toast{font-size:.76em}.elfinder .elfinder-navbar{width:230px;padding:3px 5px;background-image:none;border-top:0 solid;border-bottom:0 solid;overflow:auto;position:relative}.elfinder .elfinder-navdock{box-sizing:border-box;width:230px;height:auto;position:absolute;bottom:0;overflow:auto}.elfinder-navdock .ui-resizable-n{top:0;height:20px}.elfinder-ltr .elfinder-navbar{float:left;border-left:0 solid}.elfinder-rtl .elfinder-navbar{float:right;border-right:0 solid}.elfinder-ltr .ui-resizable-e,.elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon{margin-left:10px}.elfinder-tree{display:table;width:100%;margin:0 0 .5em;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elfinder-navbar-dir{position:relative;display:block;white-space:nowrap;padding:3px 12px;margin:0;outline:0 solid;border:1px solid transparent;cursor:default}.elfinder-touch .elfinder-navbar-dir{padding:12px}.elfinder-ltr .elfinder-navbar-dir{padding-left:35px}.elfinder-rtl .elfinder-navbar-dir{padding-right:35px}.elfinder-navbar-arrow,.elfinder-navbar-icon{position:absolute;top:50%;margin-top:-8px;background-repeat:no-repeat}.elfinder-navbar-arrow{display:none;width:12px;height:14px;background-image:url(../img/arrows-normal.png)}.elfinder-ltr .elfinder-navbar-arrow{left:0}.elfinder-rtl .elfinder-navbar-arrow{right:0}.elfinder-touch .elfinder-navbar-arrow{-moz-transform-origin:top left;-moz-transform:scale(1.4);zoom:1.4;margin-bottom:7px}.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow{left:-3px;margin-right:20px}.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow{right:-3px;margin-left:20px}.ui-state-active .elfinder-navbar-arrow{background-image:url(../img/arrows-active.png)}.elfinder-navbar-collapsed .elfinder-navbar-arrow{display:block}.elfinder-subtree-chksubdir .elfinder-navbar-arrow{opacity:.25;filter:Alpha(Opacity=25)}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 4px}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 -10px}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow{background-position:0 -21px}.elfinder-navbar-icon{width:16px;height:16px;background-image:url(../img/toolbar.png);background-position:0 -16px}.elfinder-ltr .elfinder-navbar-icon{left:14px}.elfinder-rtl .elfinder-navbar-icon{right:14px}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon{background-position:0 -704px}.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon{background-position:0 0;background-size:contain}.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon{background-image:url(../img/volume_icon_local.svg);background-image:url(../img/volume_icon_local.png) \9}.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon{background-image:url(../img/volume_icon_trash.svg);background-image:url(../img/volume_icon_trash.png) \9}.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon{background-image:url(../img/volume_icon_ftp.svg);background-image:url(../img/volume_icon_ftp.png) \9}.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon{background-image:url(../img/volume_icon_sql.svg);background-image:url(../img/volume_icon_sql.png) \9}.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon{background-image:url(../img/volume_icon_dropbox.svg);background-image:url(../img/volume_icon_dropbox.png) \9}.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon{background-image:url(../img/volume_icon_googledrive.svg);background-image:url(../img/volume_icon_googledrive.png) \9}.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon{background-image:url(../img/volume_icon_onedrive.svg);background-image:url(../img/volume_icon_onedrive.png) \9}.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon{background-image:url(../img/volume_icon_box.svg);background-image:url(../img/volume_icon_box.png) \9}.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon{background-image:url(../img/volume_icon_zip.svg);background-image:url(../img/volume_icon_zip.png) \9}.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon{background-image:url(../img/volume_icon_network.svg);background-image:url(../img/volume_icon_network.png) \9}.elfinder-droppable-active .elfinder-navbar-icon,.ui-state-active .elfinder-navbar-icon,.ui-state-hover .elfinder-navbar-icon{background-position:0 -32px}.elfinder-ltr .elfinder-navbar-subtree{margin-left:12px}.elfinder-rtl .elfinder-navbar-subtree{margin-right:12px}.elfinder-tree .elfinder-spinner{position:absolute;top:50%;margin:-7px 0 0}.elfinder-ltr .elfinder-tree .elfinder-spinner{left:0;margin-left:-2px}.elfinder-rtl .elfinder-tree .elfinder-spinner{right:0;margin-right:-2px}.elfinder-navbar .elfinder-lock,.elfinder-navbar .elfinder-perms,.elfinder-navbar .elfinder-symlink{opacity:.6;filter:Alpha(Opacity=60)}.elfinder-navbar .elfinder-perms{bottom:-1px;margin-top:-8px}.elfinder-navbar .elfinder-lock{top:-2px}.elfinder-ltr .elfinder-navbar .elfinder-perms{left:20px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-perms{right:20px;transform:scale(.8)}.elfinder-ltr .elfinder-navbar .elfinder-lock{left:20px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-lock{right:20px;transform:scale(.8)}.elfinder-ltr .elfinder-navbar .elfinder-symlink{left:8px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-symlink{right:8px;transform:scale(.8)}.elfinder-navbar input{width:100%;border:0 solid;margin:0;padding:0}.elfinder-navbar .ui-resizable-handle{width:12px;background:url(../img/resize.png) center center no-repeat}.elfinder-nav-handle-icon{position:absolute;top:50%;margin:-8px 2px 0;opacity:.5;filter:Alpha(Opacity=50)}.elfinder-navbar-pager{width:100%;box-sizing:border-box;padding-top:3px;padding-bottom:3px}.elfinder-touch .elfinder-navbar-pager{padding-top:10px;padding-bottom:10px}.elfinder-places{border:none;margin:0;padding:0}.elfinder-navbar-swipe-handle{position:absolute;top:0;height:100%;width:50px;pointer-events:none}.elfinder-ltr .elfinder-navbar-swipe-handle{left:0;background:linear-gradient(to right,#dde4eb 0,rgba(221,228,235,.8) 5px,rgba(216,223,230,.3) 8px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}.elfinder-rtl .elfinder-navbar-swipe-handle{right:0;background:linear-gradient(to left,#dde4eb 0,rgba(221,228,235,.8) 5px,rgba(216,223,230,.3) 8px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}.elfinder-navbar-root .elfinder-places-root-icon{position:absolute;top:50%;margin-top:-9px;cursor:pointer}.elfinder-ltr .elfinder-places-root-icon{right:10px}.elfinder-rtl .elfinder-places-root-icon{left:10px}.elfinder-navbar-expanded .elfinder-places-root-icon{display:block}.elfinder-place-drag{font-size:.8em}.elfinder-quicklook{position:absolute;background:url(../img/quicklook-bg.png);overflow:hidden;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:20px 0 40px}.elfinder-navdock .elfinder-quicklook{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;font-size:90%;overflow:auto}.elfinder-quicklook.elfinder-touch{padding:30px 0 40px}.elfinder-quicklook .ui-resizable-se{width:14px;height:14px;right:5px;bottom:3px;background:url(../img/toolbar.png) 0 -496px no-repeat}.elfinder-quicklook.elfinder-touch .ui-resizable-se{-moz-transform-origin:bottom right;-moz-transform:scale(1.5);zoom:1.5}.elfinder-quicklook.elfinder-quicklook-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;margin:0;box-sizing:border-box;width:100%;height:100%;object-fit:contain;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-webkit-background-clip:padding-box;padding:0;background:#000;display:block}.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar,.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle,.elfinder-statusbar:after,.elfinder-statusbar:before{display:none}.elfinder-quicklook-fullscreen .elfinder-quicklook-preview{border:0 solid}.elfinder-quicklook-cover,.elfinder-quicklook-titlebar{width:100%;height:100%;top:0;left:0;position:absolute}.elfinder-quicklook-cover.elfinder-quicklook-coverbg{background-color:#fff;opacity:.000001;filter:Alpha(Opacity=.0001)}.elfinder-quicklook-titlebar{text-align:center;background:#777;height:20px;-moz-border-radius-topleft:7px;-webkit-border-top-left-radius:7px;border-top-left-radius:7px;-moz-border-radius-topright:7px;-webkit-border-top-right-radius:7px;border-top-right-radius:7px;border:none;line-height:1.2}.elfinder-navdock .elfinder-quicklook-titlebar{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;cursor:default}.elfinder-touch .elfinder-quicklook-titlebar{height:30px}.elfinder-quicklook-title{display:inline-block;white-space:nowrap;overflow:hidden}.elfinder-touch .elfinder-quicklook-title{padding:8px 0}.elfinder-quicklook-titlebar-icon{position:absolute;left:4px;top:50%;margin-top:-8px;height:16px;border:none}.elfinder-touch .elfinder-quicklook-titlebar-icon{height:22px}.elfinder-quicklook-titlebar-icon .ui-icon{position:relative;margin:-9px 3px 0 0;cursor:pointer;border-radius:10px;border:1px solid;opacity:.7;filter:Alpha(Opacity=70)}.elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick{padding-left:1px}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon{opacity:.6;filter:Alpha(Opacity=60)}.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon{margin-top:-5px}.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right{left:auto;right:4px;direction:rtl}.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon{margin:-9px 0 0 3px}.elfinder-touch .elfinder-quicklook-titlebar .ui-icon{-moz-transform-origin:center center;-moz-transform:scale(1.2);zoom:1.2}.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon{margin-right:10px}.elfinder-quicklook-preview{overflow:hidden;position:relative;border:0 solid;border-left:1px solid transparent;border-right:1px solid transparent;height:100%}.elfinder-navdock .elfinder-quicklook-preview{border-left:0;border-right:0}.elfinder-quicklook-preview.elfinder-overflow-auto{overflow:auto;-webkit-overflow-scrolling:touch}.elfinder-quicklook-info-wrapper{display:table;position:absolute;width:100%;height:100%;height:calc(100% - 80px);left:0;top:20px}.elfinder-navdock .elfinder-quicklook-info-wrapper{height:calc(100% - 20px)}.elfinder-quicklook-info{display:table-cell;vertical-align:middle}.elfinder-ltr .elfinder-quicklook-info{padding:0 12px 0 112px}.elfinder-rtl .elfinder-quicklook-info{padding:0 112px 0 12px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info{padding:0 0 0 80px}.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info{padding:0 80px 0 0}.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child{color:#fff;font-weight:700;padding-bottom:.5em}.elfinder-quicklook-info-data{clear:both;padding-bottom:.2em;color:#fff}.elfinder-quicklook .elfinder-cwd-icon{position:absolute;left:32px;top:50%;margin-top:-20px}.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon{left:16px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon{left:auto;right:32px}.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon{right:6px}.elfinder-quicklook .elfinder-cwd-icon:before{top:-10px}.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after,.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before{left:-20px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before{left:-14px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after{left:-12px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before{left:auto;right:40px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after{left:auto;right:46px}.elfinder-quicklook-preview img{display:block;margin:0 auto}.elfinder-quicklook-navbar{position:absolute;left:50%;bottom:4px;width:140px;height:32px;padding:0;margin-left:-70px;border:1px solid transparent;border-radius:19px;-moz-border-radius:19px;-webkit-border-radius:19px}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{width:188px;margin-left:-94px;padding:5px;border:1px solid #eee;background:#000;opacity:.4;filter:Alpha(Opacity=40)}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator{display:inline}.elfinder-quicklook-navbar-icon{width:32px;height:32px;margin:0 7px;float:left;background:url(../img/quicklook-icons.png) 0 0 no-repeat}.elfinder-quicklook-navbar-icon-fullscreen{background-position:0 -64px}.elfinder-quicklook-navbar-icon-fullscreen-off{background-position:0 -96px}.elfinder-quicklook-navbar-icon-prev{background-position:0 0}.elfinder-quicklook-navbar-icon-next{background-position:0 -32px}.elfinder-quicklook-navbar-icon-close{background-position:0 -128px;display:none}.elfinder-quicklook-navbar-separator{width:1px;height:32px;float:left;border-left:1px solid #fff;display:none}.elfinder-quicklook-preview-archive-wrapper,.elfinder-quicklook-preview-text-wrapper{width:100%;height:100%;background:#fff;color:#222;overflow:auto;-webkit-overflow-scrolling:touch}.elfinder-quicklook-preview-archive-wrapper{font-size:90%}.elfinder-quicklook-preview-archive-wrapper strong{padding:0 5px}pre.elfinder-quicklook-preview-text,pre.elfinder-quicklook-preview-text.prettyprint{width:auto;height:auto;margin:0;padding:3px 9px;border:none;-o-tab-size:4;-moz-tab-size:4;tab-size:4}.elfinder-quicklook-preview-charsleft hr{border:none;border-top:dashed 1px}.elfinder-quicklook-preview-charsleft span{font-size:90%;font-style:italic;cursor:pointer}.elfinder-quicklook-preview-html,.elfinder-quicklook-preview-iframe,.elfinder-quicklook-preview-pdf{width:100%;height:100%;background:#fff;margin:0;border:none;display:block}.elfinder-quicklook-preview-flash{width:100%;height:100%}.elfinder-quicklook-preview-audio{width:100%;position:absolute;bottom:0;left:0}embed.elfinder-quicklook-preview-audio{height:30px;background:0 0}.elfinder-quicklook-preview-video{width:100%;height:100%}.elfinder .elfinder-quicklook .elfinder-quicklook-info *,.elfinder .elfinder-quicklook .elfinder-quicklook-preview *{-webkit-user-select:auto;-moz-user-select:text;-khtml-user-select:text;user-select:text}.elfinder-statusbar{display:flex;justify-content:space-between;cursor:default;text-align:center;font-weight:400;padding:.2em .5em;border-right:0 solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent}.elfinder-path,.elfinder-statusbar span{overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis}.elfinder-statusbar span{vertical-align:bottom}.elfinder-statusbar span.elfinder-path-other{flex-shrink:0;text-overflow:clip;-o-text-overflow:clip}.elfinder-statusbar span.ui-state-active,.elfinder-statusbar span.ui-state-hover{border:none}.elfinder-statusbar span.elfinder-path-cwd{cursor:default}.elfinder-path{display:flex;order:1;flex-grow:1;cursor:pointer;white-space:nowrap;max-width:30%\9}.elfinder-ltr .elfinder-path{text-align:left;float:left\9}.elfinder-rtl .elfinder-path{text-align:right;float:right\9}.elfinder-workzone-path{position:relative}.elfinder-workzone-path .elfinder-path{position:relative;font-size:.75em;font-weight:400;float:none;max-width:none;overflow:hidden;overflow-x:hidden;text-overflow:initial;-o-text-overflow:initial}.elfinder-mobile .elfinder-workzone-path .elfinder-path{overflow:auto;overflow-x:scroll}.elfinder-ltr .elfinder-workzone-path .elfinder-path{margin-left:24px}.elfinder-rtl .elfinder-workzone-path .elfinder-path{margin-right:24px}.elfinder-workzone-path .elfinder-path span{display:inline-block;padding:5px 3px}.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd{font-weight:700}.elfinder-workzone-path .elfinder-path span.ui-state-active,.elfinder-workzone-path .elfinder-path span.ui-state-hover{border:none}.elfinder-workzone-path .elfinder-path-roots{position:absolute;top:0;width:24px;height:20px;padding:2px;border:none;overflow:hidden}.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots{left:0}.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots{right:0}.elfinder-stat-size{order:3;flex-grow:1;overflow:hidden;white-space:nowrap}.elfinder-ltr .elfinder-stat-size{text-align:right;float:right\9}.elfinder-rtl .elfinder-stat-size{text-align:left;float:left\9}.elfinder-stat-selected{order:2;margin:0 .5em;white-space:nowrap;overflow:hidden}.elfinder .elfinder-toast{position:absolute;top:12px;right:12px;max-width:90%;cursor:default}.elfinder .elfinder-toast>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:8px 16px 8px 50px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.9;filter:alpha(opacity=90);background-color:#030303;text-align:center}.elfinder .elfinder-toast>.toast-info{background-color:#2f96b4;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>.toast-error{background-color:#bd362f;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>.toast-success{background-color:#51a351;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}.elfinder .elfinder-toast>.toast-warning{background-color:#f89406;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>div button.ui-button{background-image:none;margin-top:8px;padding:.5em .8em}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:green;color:#fff}.elfinder .elfinder-toast>.toast-success button.ui-button.ui-state-hover{background-color:#add6ad;color:#254b25}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#046580;color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button.ui-state-hover{background-color:#7dc6db;color:#046580}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#dd8c1a;color:#fff}.elfinder .elfinder-toast>.toast-warning button.ui-button.ui-state-hover{background-color:#e7ae5e;color:#422a07}.elfinder-toolbar{padding:4px 0 3px;border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent;max-height:50%;overflow-y:auto}.elfinder-buttonset{margin:1px 4px;float:left;background:0 0;padding:0;overflow:hidden}.elfinder .elfinder-button{min-width:16px;height:16px;margin:0;padding:4px;float:left;overflow:hidden;position:relative;border:0 solid;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;line-height:1;cursor:default}.elfinder-rtl .elfinder-button{float:right}.elfinder-touch .elfinder-button{min-width:20px;height:20px}.elfinder .ui-icon-search{cursor:pointer}.elfinder-toolbar-button-separator{float:left;padding:0;height:24px;border-top:0 solid;border-right:0 solid;border-bottom:0 solid;width:0}.elfinder-rtl .elfinder-toolbar-button-separator{float:right}.elfinder-touch .elfinder-toolbar-button-separator{height:28px}.elfinder .elfinder-button.ui-state-disabled{opacity:1;filter:Alpha(Opacity=100)}.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon,.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text{opacity:.4;filter:Alpha(Opacity=40)}.elfinder-rtl .elfinder-buttonset{float:right}.elfinder-button-icon{width:16px;height:16px;display:inline-block;background:url(../img/toolbar.png) no-repeat}.elfinder-button-text{position:relative;display:inline-block;top:-4px;margin:0 2px;font-size:12px}.elfinder-touch .elfinder-button-icon{-moz-transform-origin:top left;-moz-transform:scale(1.25);zoom:1.25}.elfinder-touch .elfinder-button-text{-moz-transform:translate(3px,3px);top:-5px}.elfinder-button-icon-home{background-position:0 0}.elfinder-button-icon-back{background-position:0 -112px}.elfinder-button-icon-forward{background-position:0 -128px}.elfinder-button-icon-up{background-position:0 -144px}.elfinder-button-icon-dir{background-position:0 -16px}.elfinder-button-icon-opendir{background-position:0 -32px}.elfinder-button-icon-reload{background-position:0 -160px}.elfinder-button-icon-open{background-position:0 -176px}.elfinder-button-icon-mkdir{background-position:0 -192px}.elfinder-button-icon-mkfile{background-position:0 -208px}.elfinder-button-icon-rm{background-position:0 -832px}.elfinder-button-icon-trash{background-position:0 -224px}.elfinder-button-icon-restore{background-position:0 -816px}.elfinder-button-icon-copy{background-position:0 -240px}.elfinder-button-icon-cut{background-position:0 -256px}.elfinder-button-icon-paste{background-position:0 -272px}.elfinder-button-icon-getfile{background-position:0 -288px}.elfinder-button-icon-duplicate{background-position:0 -304px}.elfinder-button-icon-rename{background-position:0 -320px}.elfinder-button-icon-edit{background-position:0 -336px}.elfinder-button-icon-quicklook{background-position:0 -352px}.elfinder-button-icon-upload{background-position:0 -368px}.elfinder-button-icon-download{background-position:0 -384px}.elfinder-button-icon-info{background-position:0 -400px}.elfinder-button-icon-extract{background-position:0 -416px}.elfinder-button-icon-archive{background-position:0 -432px}.elfinder-button-icon-view{background-position:0 -448px}.elfinder-button-icon-view-list{background-position:0 -464px}.elfinder-button-icon-help{background-position:0 -480px}.elfinder-button-icon-resize{background-position:0 -512px}.elfinder-button-icon-link{background-position:0 -528px}.elfinder-button-icon-search{background-position:0 -561px}.elfinder-button-icon-sort{background-position:0 -577px}.elfinder-button-icon-rotate-r{background-position:0 -625px}.elfinder-button-icon-rotate-l{background-position:0 -641px}.elfinder-button-icon-netmount{background-position:0 -688px}.elfinder-button-icon-netunmount{background-position:0 -96px}.elfinder-button-icon-places{background-position:0 -704px}.elfinder-button-icon-chmod{background-position:0 -48px}.elfinder-button-icon-accept{background-position:0 -736px}.elfinder-button-icon-menu{background-position:0 -752px}.elfinder-button-icon-colwidth{background-position:0 -768px}.elfinder-button-icon-fullscreen{background-position:0 -784px}.elfinder-button-icon-unfullscreen{background-position:0 -800px}.elfinder-button-icon-empty{background-position:0 -848px}.elfinder-button-icon-undo{background-position:0 -864px}.elfinder-button-icon-redo{background-position:0 -880px}.elfinder-button-icon-preference{background-position:0 -896px}.elfinder-button-icon-mkdirin{background-position:0 -912px}.elfinder-button-icon-selectall{background-position:0 -928px}.elfinder-button-icon-selectnone{background-position:0 -944px}.elfinder-button-icon-selectinvert{background-position:0 -960px}.elfinder-button-icon-opennew{background-position:0 -976px}.elfinder-button-icon-hide{background-position:0 -992px}.elfinder-button-icon-text{background-position:0 -1008px}.elfinder-rtl .elfinder-button-icon-back,.elfinder-rtl .elfinder-button-icon-forward,.elfinder-rtl .elfinder-button-icon-getfile,.elfinder-rtl .elfinder-button-icon-help,.elfinder-rtl .elfinder-button-icon-redo,.elfinder-rtl .elfinder-button-icon-rename,.elfinder-rtl .elfinder-button-icon-search,.elfinder-rtl .elfinder-button-icon-undo,.elfinder-rtl .elfinder-button-icon-view-list,.elfinder-rtl .ui-icon-search{-ms-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scale(-1,1)}.elfinder .elfinder-menubutton{overflow:visible}.elfinder-button-icon-spinner{background:url(../img/spinner-mini.gif) center center no-repeat}.elfinder-button-menu{position:absolute;margin-top:24px;padding:3px 0;overflow-y:auto}.elfinder-touch .elfinder-button-menu{margin-top:30px}.elfinder-button-menu-item{white-space:nowrap;cursor:default;padding:5px 19px;position:relative}.elfinder-touch .elfinder-button-menu-item{padding:12px 19px}.elfinder-button-menu .ui-state-hover{border:0 solid}.elfinder-button-menu-item-separated{border-top:1px solid #ccc}.elfinder-button-menu-item .ui-icon{width:16px;height:16px;position:absolute;left:2px;top:50%;margin-top:-8px;display:none}.elfinder-button-menu-item-selected .ui-icon{display:block}.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s,.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n{display:none}.elfinder-button form{position:absolute;top:0;right:0;opacity:0;filter:Alpha(Opacity=0);cursor:pointer}.elfinder .elfinder-button form input{background:0 0;cursor:default}.elfinder .elfinder-button-search{border:0 solid;background:0 0;padding:0;margin:1px 4px;height:auto;min-height:26px;width:70px;overflow:visible}.elfinder .elfinder-button-search.ui-state-active{width:220px}.elfinder .elfinder-button-search-menu{font-size:8pt;text-align:center;width:auto;min-width:180px;position:absolute;top:30px;padding-right:5px;padding-left:5px}.elfinder-ltr .elfinder-button-search-menu{right:22px;left:auto}.elfinder-rtl .elfinder-button-search-menu{right:auto;left:22px}.elfinder-touch .elfinder-button-search-menu{top:34px}.elfinder .elfinder-button-search-menu div{margin:5px auto;display:table}.elfinder .elfinder-button-search-menu div .ui-state-hover{border:1px solid}.elfinder-ltr .elfinder-button-search{float:right;margin-right:10px}.elfinder-rtl .elfinder-button-search{float:left;margin-left:10px}.elfinder-rtl .ui-controlgroup>.ui-controlgroup-item{float:right}.elfinder-button-search input[type=text]{box-sizing:border-box;width:100%;height:26px;padding:0 20px;line-height:22px;border:1px solid #aaa;-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;outline:0 solid}.elfinder-button-search input::-ms-clear{display:none}.elfinder-touch .elfinder-button-search input{height:30px;line-height:28px}.elfinder-rtl .elfinder-button-search input{direction:rtl}.elfinder-button-search .ui-icon{position:absolute;height:18px;top:50%;margin:-8px 4px 0;opacity:.6;filter:Alpha(Opacity=60)}.elfinder-button-search-menu .ui-checkboxradio-icon{display:none}.elfinder-ltr .elfinder-button-search .ui-icon-search{left:0}.elfinder-ltr .elfinder-button-search .ui-icon-close,.elfinder-rtl .elfinder-button-search .ui-icon-search{right:0}.elfinder-rtl .elfinder-button-search .ui-icon-close{left:0}.elfinder-toolbar-swipe-handle{position:absolute;top:0;left:0;height:50px;width:100%;pointer-events:none;background:linear-gradient(to bottom,#dde4eb 0,rgba(221,228,235,.8) 2px,rgba(216,223,230,.3) 5px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}lib/css/elfinder.full.css000064400000351473147361034410011365 0ustar00/*!
 * elFinder - file manager for web
 * Version 2.1.46 (2019-01-14)
 * http://elfinder.org
 * 
 * Copyright 2009-2019, Studio 42
 * Licensed under a 3-clauses BSD license
 */

/* File: /css/commands.css */
/******************************************************************/
/*                          COMMANDS STYLES                       */
/******************************************************************/

/********************** COMMAND "RESIZE" ****************************/
.elfinder-resize-container {
    margin-top: .3em;
}

.elfinder-resize-type {
    float: left;
    margin-bottom: .4em;
}

.elfinder-resize-control {
    float: left;
}

.elfinder-resize-control input[type=number] {
    border: 1px solid #aaa;
    text-align: right;
    width: 4.5em;
}

.elfinder-mobile .elfinder-resize-control input[type=number] {
    width: 3.5em;
}

.elfinder-resize-control input.elfinder-resize-bg {
    text-align: center;
    width: 5em;
    direction: ltr;
}

.elfinder-dialog-resize .elfinder-resize-control-panel {
    margin-top: 10px;
}

.elfinder-dialog-resize .elfinder-resize-imgrotate,
.elfinder-dialog-resize .elfinder-resize-pallet {
    cursor: pointer;
}

.elfinder-dialog-resize .elfinder-resize-picking {
    cursor: crosshair;
}

.elfinder-dialog-resize .elfinder-resize-grid8 + button {
    padding-top: 2px;
    padding-bottom: 2px;
}

.elfinder-resize-preview {
    width: 400px;
    height: 400px;
    padding: 10px;
    background: #fff;
    border: 1px solid #aaa;
    float: right;
    position: relative;
    overflow: hidden;
    text-align: left;
    direction: ltr;
}

.elfinder-resize-handle {
    position: relative;
}

.elfinder-resize-handle-hline,
.elfinder-resize-handle-vline {
    position: absolute;
    background-image: url("../img/crop.gif");
}

.elfinder-resize-handle-hline {
    width: 100%;
    height: 1px !important;
    background-repeat: repeat-x;
}

.elfinder-resize-handle-vline {
    width: 1px !important;
    height: 100%;
    background-repeat: repeat-y;
}

.elfinder-resize-handle-hline-top {
    top: 0;
    left: 0;
}

.elfinder-resize-handle-hline-bottom {
    bottom: 0;
    left: 0;
}

.elfinder-resize-handle-vline-left {
    top: 0;
    left: 0;
}

.elfinder-resize-handle-vline-right {
    top: 0;
    right: 0;
}

.elfinder-resize-handle-point {
    position: absolute;
    width: 8px;
    height: 8px;
    border: 1px solid #777;
    background: transparent;
}

.elfinder-resize-handle-point-n {
    top: 0;
    left: 50%;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-ne {
    top: 0;
    right: 0;
    margin-top: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-e {
    top: 50%;
    right: 0;
    margin-top: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-se {
    bottom: 0;
    right: 0;
    margin-bottom: -5px;
    margin-right: -5px;
}

.elfinder-resize-handle-point-s {
    bottom: 0;
    left: 50%;
    margin-bottom: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-sw {
    bottom: 0;
    left: 0;
    margin-bottom: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-w {
    top: 50%;
    left: 0;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-resize-handle-point-nw {
    top: 0;
    left: 0;
    margin-top: -5px;
    margin-left: -5px;
}

.elfinder-dialog.elfinder-dialog-resize .ui-resizable-e {
    width: 10px;
    height: 100%;
}

.elfinder-dialog.elfinder-dialog-resize .ui-resizable-s {
    width: 100%;
    height: 10px;
}

.elfinder-resize-loading {
    position: absolute;
    width: 200px;
    height: 30px;
    top: 50%;
    margin-top: -25px;
    left: 50%;
    margin-left: -100px;
    text-align: center;
    background: url(../img/progress.gif) center bottom repeat-x;
}

.elfinder-resize-row {
    margin-bottom: 9px;
    position: relative;
}

.elfinder-resize-label {
    float: left;
    width: 80px;
    padding-top: 3px;
}

.elfinder-resize-checkbox-label {
    border: 1px solid transparent;
}

.elfinder-dialog-resize .elfinder-resize-whctrls {
    margin: -20px 5px 0 5px;
}

.elfinder-ltr .elfinder-dialog-resize .elfinder-resize-whctrls {
    float: right;
}

.elfinder-rtl .elfinder-dialog-resize .elfinder-resize-whctrls {
    float: left;
}

.elfinder-dialog-resize .ui-resizable-e,
.elfinder-dialog-resize .ui-resizable-w {
    height: 100%;
    width: 10px;
}

.elfinder-dialog-resize .ui-resizable-s,
.elfinder-dialog-resize .ui-resizable-n {
    width: 100%;
    height: 10px;
}

.elfinder-dialog-resize .ui-resizable-e {
    margin-right: -7px;
}

.elfinder-dialog-resize .ui-resizable-w {
    margin-left: -7px;
}

.elfinder-dialog-resize .ui-resizable-s {
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-n {
    margin-top: -7px;
}

.elfinder-dialog-resize .ui-resizable-se,
.elfinder-dialog-resize .ui-resizable-sw,
.elfinder-dialog-resize .ui-resizable-ne,
.elfinder-dialog-resize .ui-resizable-nw {
    width: 10px;
    height: 10px;
}

.elfinder-dialog-resize .ui-resizable-se {
    background: transparent;
    bottom: 0;
    right: 0;
    margin-right: -7px;
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-sw {
    margin-left: -7px;
    margin-bottom: -7px;
}

.elfinder-dialog-resize .ui-resizable-ne {
    margin-right: -7px;
    margin-top: -7px;
}

.elfinder-dialog-resize .ui-resizable-nw {
    margin-left: -7px;
    margin-top: -7px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-s,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-n {
    height: 20px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-e,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-w {
    width: 20px;
}

.elfinder-touch .elfinder-dialog-resize .ui-resizable-se,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-sw,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-ne,
.elfinder-touch .elfinder-dialog-resize .ui-resizable-nw {
    width: 30px;
    height: 30px;
}

.elfinder-touch .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se {
    width: 30px;
    height: 30px;
    margin: 0;
}

.elfinder-dialog-resize .ui-icon-grip-solid-vertical {
    position: absolute;
    top: 50%;
    right: 0;
    margin-top: -8px;
    margin-right: -11px;
}

.elfinder-dialog-resize .ui-icon-grip-solid-horizontal {
    position: absolute;
    left: 50%;
    bottom: 0;
    margin-left: -8px;
    margin-bottom: -11px;;
}

.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset {
    float: right;
}

.elfinder-dialog-resize .elfinder-resize-degree input,
.elfinder-dialog-resize input.elfinder-resize-quality {
    width: 3.5em;
}

.elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input,
.elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality {
    width: 2.5em;
}

.elfinder-dialog-resize .elfinder-resize-degree button.ui-button {
    padding: 6px 8px;
}

.elfinder-dialog-resize button.ui-button span {
    padding: 0;
}

.elfinder-dialog-resize .elfinder-resize-jpgsize {
    font-size: 90%;
}

.ui-widget-content .elfinder-resize-container .elfinder-resize-rotate-slider {
    width: 195px;
    margin: 10px 7px;
    background-color: #fafafa;
}

.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon {
    display: none;
}

.elfinder-resize-preset-container {
    box-sizing: border-box;
    border-radius: 5px;
}

/********************** COMMAND "EDIT" ****************************/
/* edit text file textarea */
.elfinder-file-edit {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 2px;
    border: 1px solid #ccc;
    box-sizing: border-box;
    resize: none;
}

.elfinder-touch .elfinder-file-edit {
    font-size: 16px;
}

/* edit area */
.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor {
    background-color: #fff;
}

.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor {
    width: 100%;
    height: 300px;
    max-height: 100%;
    text-align: center;
}

.elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;
}

.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main {
    top: 0;
}

.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header {
    display: none;
}

.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-wrap,
.elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-wrap {
    height: calc(100% - 150px);
}

/* bottom margen for softkeyboard on fullscreen mode */
.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit {
    padding-bottom: 20em;
    margin-bottom: -20em;
}

.elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding {
    font-size: 12px;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras {
    margin: 0 1em 0 .2em;
    float: left;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality {
    padding-top: 6px;
}

.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select {
    font-size: 12px;
    margin-top: 8px;
}

.elfinder-dialog-edit .ui-dialog-buttonpane .ui-icon {
    cursor: pointer;
}

.elfinder-edit-spinner {
    position: absolute;
    top: 50%;
    text-align: center;
    width: 100%;
    font-size: 16pt;
}

.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner,
.elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner-text {
    float: none;
}

.elfinder-dialog-edit .elfinder-toast > div {
    width: 280px;
}
 
.elfinder-edit-onlineconvert-button {
    display: inline-block;
    width: 180px;
    min-height: 30px;
    vertical-align: top;
}
.elfinder-edit-onlineconvert-button button,
.elfinder-edit-onlineconvert-bottom-btn button {
    cursor: pointer;
}
.elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline {
    -webkit-appearance: none;
    border-radius: 16px;
    color: #000;
    text-align: center;
    padding: 8px;
    background-color: #eee;
    background-image: -webkit-linear-gradient(top, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%);
    background-image: linear-gradient(to bottom, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%);
}
.elfinder-edit-onlineconvert-button .elfinder-button-icon {
    margin: 0 10px;
    vertical-align: middle;
    cursor: pointer;
}
.elfinder-edit-onlineconvert-bottom-btn {
    text-align: center;
    margin: 10px 0 0;
}

.elfinder-edit-onlineconvert-link {
    margin-top: 1em;
    text-align: center;
}
.elfinder-edit-onlineconvert-link .elfinder-button-icon {
    background-image: url("../img/editor-icons.png");
    background-repeat: no-repeat;
    background-position: 0 -144px;
    margin-bottom: -3px;
}
.elfinder-edit-onlineconvert-link a {
    text-decoration: none;
}

/********************** COMMAND "SORT" ****************************/
/* for list table header sort triangle icon */
div.elfinder-cwd-wrapper-list tr.ui-state-default td {
    position: relative;
}

div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    position: absolute;
    top: 4px;
    left: 0;
    right: 0;
    margin: auto 0px auto auto;
}

.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    top: 7px;
}

.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
    margin: auto auto auto 0px;
}

/********************** COMMAND "HELP" ****************************/
/* help dialog */
.elfinder-help {
    margin-bottom: .5em;
    -webkit-overflow-scrolling: touch;
}

/* fix tabs */
.elfinder-help .ui-tabs-panel {
    padding: .5em;
    overflow: auto;
    padding: 10px;
}

.elfinder-dialog .ui-tabs .ui-tabs-nav li {
    overflow: hidden;
}

.elfinder-dialog .ui-tabs .ui-tabs-nav li a {
    padding: .2em .8em;
    display: inline-block;
}

.elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a {
    padding: .5em .5em;
}

.elfinder-dialog .ui-tabs-active a {
    background: inherit;
}

.elfinder-help-shortcuts {
    height: auto;
    padding: 10px;
    margin: 0;
    box-sizing: border-box;
}

.elfinder-help-shortcut {
    white-space: nowrap;
    clear: both;
}

.elfinder-help-shortcut-pattern {
    float: left;
    width: 160px;
}

.elfinder-help-logo {
    width: 100px;
    height: 96px;
    float: left;
    margin-right: 1em;
    background: url('../img/logo.png') center center no-repeat;
}

.elfinder-help h3 {
    font-size: 1.5em;
    margin: .2em 0 .3em 0;
}

.elfinder-help-separator {
    clear: both;
    padding: .5em;
}

.elfinder-help-link {
    display: inline-block;
    margin-right: 12px;
    padding: 2px 0;
    white-space: nowrap;
}

.elfinder-rtl .elfinder-help-link {
    margin-right: 0;
    margin-left: 12px;
}

.elfinder-help .ui-priority-secondary {
    font-size: .9em;
}

.elfinder-help .ui-priority-primary {
    margin-bottom: 7px;
}

.elfinder-help-team {
    clear: both;
    text-align: right;
    border-bottom: 1px solid #ccc;
    margin: .5em 0;
    font-size: .9em;
}

.elfinder-help-team div {
    float: left;
}

.elfinder-help-license {
    font-size: .9em;
}

.elfinder-help-disabled {
    font-weight: bold;
    text-align: center;
    margin: 90px 0;
}

.elfinder-help .elfinder-dont-panic {
    display: block;
    border: 1px solid transparent;
    width: 200px;
    height: 200px;
    margin: 30px auto;
    text-decoration: none;
    text-align: center;
    position: relative;
    background: #d90004;
    -moz-box-shadow: 5px 5px 9px #111;
    -webkit-box-shadow: 5px 5px 9px #111;
    box-shadow: 5px 5px 9px #111;
    background: -moz-radial-gradient(80px 80px, circle farthest-corner, #d90004 35%, #960004 100%);
    background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004));
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;
    border-radius: 100px;
    outline: none;
}

.elfinder-help .elfinder-dont-panic span {
    font-size: 3em;
    font-weight: bold;
    text-align: center;
    color: #fff;
    position: absolute;
    left: 0;
    top: 45px;
}

ul.elfinder-help-integrations ul {
    margin-bottom: 1em;
    padding: 0;
    margin: 0 1em 1em;
}

ul.elfinder-help-integrations a {
    text-decoration: none;
}

ul.elfinder-help-integrations a:hover {
    text-decoration: underline;
}

.elfinder-help-debug {
    height: 100%;
    padding: 0;
    margin: 0;
    overflow: none;
    border: none;
}

.elfinder-help-debug .ui-tabs-panel {
    padding: 0;
    margin: 0;
    overflow: auto;
}

.elfinder-help-debug fieldset {
    margin-bottom: 10px;
    border-color: #778899;
    border-radius: 10px;
}

.elfinder-help-debug legend {
    font-size: 1.2em;
    font-weight: bold;
    color: #2e8b57;
}

.elfinder-help-debug dl {
    margin: 0;
}

.elfinder-help-debug dt {
    color: #778899;
}

.elfinder-help-debug dt:before {
    content: "[";
}

.elfinder-help-debug dt:after {
    content: "]";
}

.elfinder-help-debug dd {
    margin-left: 1em;
}

/********************** COMMAND "PREFERENCE" ****************************/
.elfinder-dialog .elfinder-preference .ui-tabs-nav {
    margin-bottom: 1px;
    height: auto;
}

/* fix tabs */
.elfinder-preference .ui-tabs-panel {
    padding: 10px 10px 0;
    overflow: auto;
    box-sizing: border-box;
    -webkit-overflow-scrolling: touch;
}

.elfinder-preference a.ui-state-hover,
.elfinder-preference label.ui-state-hover {
    border: none;
}

.elfinder-preference dl {
    width: 100%;
    display: inline-block;
    margin: .5em 0;
}

.elfinder-preference dt {
    display: block;
    width: 200px;
    clear: left;
    float: left;
    max-width: 50%;
}

.elfinder-rtl .elfinder-preference dt {
    clear: right;
    float: right;
}

.elfinder-preference dd {
    margin-bottom: 1em;
}

.elfinder-preference dt label {
    cursor: pointer;
}

.elfinder-preference dd label,
.elfinder-preference dd input[type=checkbox] {
    white-space: nowrap;
    display: inline-block;
    cursor: pointer;
}

.elfinder-preference dt.elfinder-preference-checkboxes {
    width: 100%;
    max-width: none;
}

.elfinder-preference dd.elfinder-preference-checkboxes {
    padding-top: 3ex;
}

.elfinder-preference select {
    max-width: 100%;
}

.elfinder-preference dd.elfinder-preference-iconSize .ui-slider {
    width: 50%;
    max-width: 100px;
    display: inline-block;
    margin: 0 10px;
}

.elfinder-preference button {
    margin: 0 16px;
}

.elfinder-preference button + button {
    margin: 0 -10px;
}

.elfinder-preference .elfinder-preference-taball .elfinder-reference-hide-taball {
    display: none;
}

.elfinder-preference-theme fieldset {
    margin-bottom: 10px;
}

.elfinder-preference-theme legend a {
    font-size: 1.8em;
    text-decoration: none;
    cursor: pointer;
}

.elfinder-preference-theme dt {
    width: 20%;
    word-break: break-all;
}

.elfinder-preference-theme dt:after {
    content: " :";
}

.elfinder-preference-theme dd {
    margin-inline-start: 20%;
}

.elfinder-preference img.elfinder-preference-theme-image {
    display: block;
    margin-left: auto;
    margin-right: auto;
    max-width: 90%;
    max-height: 200px;
    cursor: pointer;
}

.elfinder-preference-theme-btn {
    text-align: center;
}

.elfinder-preference-theme button.elfinder-preference-theme-default {
    display: inline;
    margin: 0 10px;
    font-size: 8pt;
}

/********************** COMMAND "INFO" ****************************/
.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before {
    right: 33px;
    left: auto;
}

.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: none;
}

/********************** COMMAND "UPLOAD" ****************************/
.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    position: absolute;
    bottom: 2px;
    width: 16px;
    height: 16px;
    padding: 10px;
    border: none;
    overflow: hidden;
    cursor: pointer;
}

.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    left: 2px;
}

.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
    right: 2px;
}

/********************** COMMAND "RM" ****************************/
.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before {
    left: 38px;
}

.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before {
    right: 86px;
    left: auto;
}

.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: none;
}

/********************** COMMAND "RENAME" ****************************/
.elfinder-rename-batch div {
    margin: 5px 8px;
}

.elfinder-rename-batch .elfinder-rename-batch-name input {
    width: 100%;
    font-size: 1.6em;
}

.elfinder-rename-batch-type {
    text-align: center;
}

.elfinder-rename-batch .elfinder-rename-batch-type label {
    margin: 2px;
    font-size: .9em;
}

.elfinder-rename-batch-preview {
    padding: 0 8px;
    font-size: 1.1em;
    min-height: 4ex;
}


/* File: /css/common.css */
/*********************************************/
/*            COMMON ELFINDER STUFFS         */
/*********************************************/

/* for old jQuery UI */
.ui-front {
    z-index: 100;
}

/* common container */
.elfinder {
    padding: 0;
    position: relative;
    display: block;
    visibility: visible;
    font-size: 18px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

/* prevent auto zoom on iOS */
.elfinder-ios input,
.elfinder-ios select,
.elfinder-ios textarea {
    font-size: 16px !important;
}

/* full screen mode */
.elfinder.elfinder-fullscreen > .ui-resizable-handle {
    display: none;
}

.elfinder-font-mono {
    line-height: 2ex;
}

/* in lazy execution status */
.elfinder.elfinder-processing * {
    cursor: progress !important
}

.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after {
    position: absolute;
    top: 0;
    width: 100%;
    height: 3px;
    content: '';
    left: 0;
    background-image: url(../img/progress.gif);
    opacity: .6;
    pointer-events: none;
}

/* for disable select of Touch devices */
.elfinder *:not(input):not(textarea):not(select):not([contenteditable=true]),
.elfinder-contextmenu *:not(input):not(textarea):not(select):not([contenteditable=true]) {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;
}

.elfinder .overflow-scrolling-touch {
    -webkit-overflow-scrolling: touch;
}

/* right to left enviroment */
.elfinder-rtl {
    text-align: right;
    direction: rtl;
}

/* nav and cwd container */
.elfinder-workzone {
    padding: 0;
    position: relative;
    overflow: hidden;
}

/* dir/file permissions and symlink markers */
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
    position: absolute;
    width: 16px;
    height: 16px;
    background-image: url(../img/toolbar.png);
    background-repeat: no-repeat;
    background-position: 0 -528px;
}

/* noaccess */
.elfinder-na .elfinder-perms {
    background-position: 0 -96px;
}

/* read only */
.elfinder-ro .elfinder-perms {
    background-position: 0 -64px;
}

/* write only */
.elfinder-wo .elfinder-perms {
    background-position: 0 -80px;
}

/* volume type group */
.elfinder-group .elfinder-perms {
    background-position: 0 0px;
}

/* locked */
.elfinder-lock {
    background-position: 0 -656px;
}

/* drag helper */
.elfinder-drag-helper {
    top: 0px;
    left: 0px;
    width: 70px;
    height: 60px;
    padding: 0 0 0 25px;
    z-index: 100000;
    will-change: left, top;
}

.elfinder-drag-helper.html5-native {
    position: absolute;
    top: -1000px;
    left: -1000px;
}

/* drag helper status icon (default no-drop) */
.elfinder-drag-helper-icon-status {
    position: absolute;
    width: 16px;
    height: 16px;
    left: 42px;
    top: 60px;
    background: url('../img/toolbar.png') 0 -96px no-repeat;
    display: block;
}

/* show "up-arrow" icon for move item */
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
    background-position: 0 -720px;
}

/* show "plus" icon when ctrl/shift pressed */
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
    background-position: 0 -544px;
}

/* files num in drag helper */
.elfinder-drag-num {
    display: inline-box;
    position: absolute;
    top: 0;
    left: 0;
    width: auto;
    height: 14px;
    text-align: center;
    padding: 1px 3px 1px 3px;

    font-weight: bold;
    color: #fff;
    background-color: red;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

/* icon in drag helper */
.elfinder-drag-helper .elfinder-cwd-icon {
    margin: 0 0 0 -24px;
    float: left;
}

/* transparent overlay */
.elfinder-overlay {
    position: absolute;
    opacity: .2;
    filter: Alpha(Opacity=20);
}

/* panels under/below cwd (for search field etc) */
.elfinder .elfinder-panel {
    position: relative;
    background-image: none;
    padding: 7px 12px;
}

/* for html5 drag and drop */
[draggable=true] {
    -khtml-user-drag: element;
}

/* for place holder to content editable elements */
.elfinder [contentEditable=true]:empty:not(:focus):before {
    content: attr(data-ph);
}

/* bottom tray */
.elfinder div.elfinder-bottomtray {
    position: fixed;
    bottom: 0;
    max-width: 100%;
    opacity: .8;
}

.elfinder.elfinder-ltr div.elfinder-bottomtray {
    left: 0;
}

.elfinder.elfinder-rtl div.elfinder-bottomtray {
    right: 0;
}

/* tooltip */
.elfinder-ui-tooltip,
.elfinder .elfinder-ui-tooltip {
    font-size: 14px;
    padding: 2px 4px;
}

/* File: /css/contextmenu.css */
/* menu and submenu */
.elfinder .elfinder-contextmenu,
.elfinder .elfinder-contextmenu-sub {
    position: absolute;
    border: 1px solid #aaa;
    background: #fff;
    color: #555;
    padding: 4px 0;
    top: 0;
    left: 0;
}

/* submenu */
.elfinder .elfinder-contextmenu-sub {
    top: 5px;
}

/* submenu in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub {
    margin-left: -5px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub {
    margin-right: -5px;
}

/* menu item */
.elfinder .elfinder-contextmenu-header {
    margin-top: -4px;
    padding: 0 .5em .2ex;
    border: none;
    text-align: center;
}

.elfinder .elfinder-contextmenu-header span {
    font-weight: normal;
    font-size: 0.8em;
    font-weight: bolder;
}

.elfinder .elfinder-contextmenu-item {
    position: relative;
    display: block;
    padding: 4px 30px;
    text-decoration: none;
    white-space: nowrap;
    cursor: default;
}

.elfinder .elfinder-contextmenu-item.ui-state-active {
    border: none;
}

.elfinder .elfinder-contextmenu-item .ui-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    left: auto;
    right: auto;
    top: 50%;
    margin-top: -8px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon {
    left: 2px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon {
    right: 2px;
}

.elfinder-touch .elfinder-contextmenu-item {
    padding: 12px 38px;
}

/* root icon of each volume */
.elfinder-navbar-root-local.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-size: contain;
}

.elfinder-navbar-root-trash.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-size: contain;
}

.elfinder-navbar-root-ftp.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-size: contain;
}

.elfinder-navbar-root-sql.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-size: contain;
}

.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-size: contain;
}

.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-size: contain;
}

.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-size: contain;
}

.elfinder-navbar-root-box.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-size: contain;
}

.elfinder-navbar-root-zip.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-size: contain;
}

.elfinder-navbar-root-network.elfinder-contextmenu-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-size: contain;
}

/* text in item */
.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span {
    display: block;
}

/* submenu item in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item {
    padding-left: 12px;
    padding-right: 12px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item {
    text-align: left;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item {
    text-align: right;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-left: 28px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-right: 28px;
}

.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-left: 36px;
}

.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon {
    padding-right: 36px;
}

/* command/submenu icon */
.elfinder .elfinder-contextmenu-extra-icon,
.elfinder .elfinder-contextmenu-arrow,
.elfinder .elfinder-contextmenu-icon {
    position: absolute;
    top: 50%;
    margin-top: -8px;
    overflow: hidden;
}

/* command icon in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon {
    left: 8px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon {
    right: 8px;
}

.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon {
    right: 8px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon {
    left: 8px;
}

/* arrow icon */
.elfinder .elfinder-contextmenu-arrow {
    width: 16px;
    height: 16px;
    background: url('../img/arrows-normal.png') 5px 4px no-repeat;
}

/* arrow icon in rtl/ltr enviroment */
.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow {
    right: 5px;
}

.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow {
    left: 5px;
    background-position: 0 -10px;
}

/* command extra icon's <a>, <span> tag */
.elfinder .elfinder-contextmenu-extra-icon a,
.elfinder .elfinder-contextmenu-extra-icon span {
    display: inline-block;
    width: 100%;
    height: 100%;
    padding: 20px;
    margin: 0;
    color: transparent !important;
    text-decoration: none;
    cursor: pointer;
}

/* disable ui border/bg image on hover */
.elfinder .elfinder-contextmenu .ui-state-hover {
    border: 0 solid;
    background-image: none;
}

/* separator */
.elfinder .elfinder-contextmenu-separator {
    height: 0px;
    border-top: 1px solid #ccc;
    margin: 0 1px;
}

/* for CSS style priority to ui-state-disabled - "background-image: none" */
.elfinder .elfinder-contextmenu-item .elfinder-button-icon.ui-state-disabled {
    background-image: url('../img/toolbar.png');
}

/* File: /css/cwd.css */
/******************************************************************/
/*                     CURRENT DIRECTORY STYLES                   */
/******************************************************************/
/* cwd container to avoid selectable on scrollbar */
.elfinder-cwd-wrapper {
    overflow: auto;
    position: relative;
    padding: 2px;
    margin: 0;
}

.elfinder-cwd-wrapper-list {
    padding: 0;
}

/* container */
.elfinder-cwd {
    position: absolute;
    top: 0;
    cursor: default;
    padding: 0;
    margin: 0;
    -ms-touch-action: auto;
    touch-action: auto;
    min-width: 100%;
}

.elfinder-ltr .elfinder-cwd {
    left: 0;
}

.elfinder-rtl .elfinder-cwd {
    right: 0;
}

.elfinder-cwd.elfinder-table-header-sticky {
    position: -webkit-sticky;
    position: -ms-sticky;
    position: sticky;
    top: 0;
    left: auto;
    right: auto;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: -ms-max-content;
    width: max-content;
    height: 0;
    overflow: visible;
}

.elfinder-cwd.elfinder-table-header-sticky table {
    border-top: 2px solid;
    padding-top: 0;
}

.elfinder-cwd.elfinder-table-header-sticky td {
    display: inline-block;
}

.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table {
    border-top: 2px solid transparent;
}

/* fixed table header container */
.elfinder-cwd-fixheader .elfinder-cwd {
    position: relative;
}

/* container active on dropenter */
.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active {
    outline: 2px solid #8cafed;
    outline-offset: -2px;
}

.elfinder-cwd-wrapper-empty .elfinder-cwd:after {
    display: block;
    position: absolute;
    height: auto;
    width: 90%;
    width: calc(100% - 20px);
    position: absolute;
    top: 50%;
    left: 50%;
    -ms-transform: translateY(-50%) translateX(-50%);
    -webkit-transform: translateY(-50%) translateX(-50%);
    transform: translateY(-50%) translateX(-50%);
    line-height: 1.5em;
    text-align: center;
    white-space: pre-wrap;
    opacity: 0.6;
    filter: Alpha(Opacity=60);
    font-weight: bold;
}

.elfinder-cwd-file .elfinder-cwd-select {
    position: absolute;
    top: 0px;
    left: 0px;
    background-color: transparent;
    opacity: .4;
    filter: Alpha(Opacity=40);
}

.elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select {
    width: 30px;
    height: 30px;
}

.elfinder-cwd-file.ui-selected .elfinder-cwd-select {
    opacity: .8;
    filter: Alpha(Opacity=80);
}

.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select {
    left: auto;
    right: 0px;
}

.elfinder .elfinder-cwd-selectall {
    position: absolute;
    width: 30px;
    height: 30px;
    top: 0px;
    opacity: .8;
    filter: Alpha(Opacity=80);
}

.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall {
    display: none;
}

/************************** ICONS VIEW ********************************/

.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall {
    text-align: right;
    right: 18px;
    left: auto;
}

.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall {
    text-align: left;
    right: auto;
    left: 18px;
}

.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
    right: 0px;
}

.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
    left: 0px;
}

.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover {
    background-color: transparent;
}

/* file container */
.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 120px;
    height: 90px;
    padding-bottom: 2px;
    cursor: default;
    border: none;
    position: relative;
}

.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
    border: none;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file {
    float: left;
    margin: 0 3px 2px 0;
}

.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file {
    float: right;
    margin: 0 0 5px 3px;
}

/* remove ui hover class border */
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover {
    border: 0 solid;
}

/* icon wrapper to create selected highlight around icon */
.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 52px;
    height: 52px;
    margin: 1px auto 1px auto;
    padding: 2px;
    position: relative;
}

/*** Custom Icon Size size1 - size3 ***/
/* type badge */
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before {
    top: 3px;
    display: block;
}

/* size1 */
.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 120px;
    height: 112px;
}

.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 74px;
    height: 74px;
}

.elfinder-cwd-size1 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(1.5);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(1.5);
    transform-origin: top center;
    transform: scale(1.5);
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(1.35) translate(-4px, 15%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(1.35) translate(-4px, 15%);
    transform-origin: top left;
    transform: scale(1.35) translate(-4px, 15%);
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1) translate(10px, -5px);
    -webkit-transform: scale(1) translate(10px, -5px);
    transform: scale(1) translate(10px, -5px);
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 72px;
    height: 72px;
    -moz-border-radius: 6px;
    -webkit-border-radius: 6px;
    border-radius: 6px;
}

/* size2 */
.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 140px;
    height: 134px;
}

.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 98px;
    height: 98px;
}

.elfinder-cwd-size2 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(2);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(2);
    transform-origin: top center;
    transform: scale(2);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(1.8) translate(-5px, 18%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(1.8) translate(-5px, 18%);
    transform-origin: top left;
    transform: scale(1.8) translate(-5px, 18%);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1.1) translate(0px, 10px);
    -webkit-transform: scale(1.1) translate(0px, 10px);
    transform: scale(1.1) translate(0px, 10px);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 96px;
    height: 96px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

/* size3 */
.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 174px;
    height: 158px;
}

.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 122px;
    height: 122px;
}

.elfinder-cwd-size3 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(2.5);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(2.5);
    transform-origin: top center;
    transform: scale(2.5);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(2.25) translate(-6px, 20%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(2.25) translate(-6px, 20%);
    transform-origin: top left;
    transform: scale(2.25) translate(-6px, 20%);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1.2) translate(-9px, 22px);
    -webkit-transform: scale(1.2) translate(-9px, 22px);
    transform: scale(1.2) translate(-9px, 22px);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 120px;
    height: 120px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
}

/* file name place */
.elfinder-cwd-view-icons .elfinder-cwd-filename {
    text-align: center;
    max-height: 2.4em;
    line-height: 1.2em;
    white-space: pre-line;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    margin: 3px 1px 0 1px;
    padding: 1px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
    /* for webkit CSS3 */
    word-break: break-word;
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

/* permissions/symlink markers */
.elfinder-cwd-view-icons .elfinder-perms {
    bottom: 4px;
    right: 2px;
}

.elfinder-cwd-view-icons .elfinder-lock {
    top: -3px;
    right: -2px;
}

.elfinder-cwd-view-icons .elfinder-symlink {
    bottom: 6px;
    left: 0px;
}

/* icon/thumbnail */
.elfinder-cwd-icon {
    display: block;
    width: 48px;
    height: 48px;
    margin: 0 auto;
    background-image: url('../img/icons-big.svg');
    background-image: url('../img/icons-big.png') \9;
    background-position: 0 0;
    background-repeat: no-repeat;
    -moz-background-clip: padding;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
}

/* volume icon of root in folder */
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-image: url("../img/volume_icon_local.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-image: url("../img/volume_icon_trash.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-image: url("../img/volume_icon_ftp.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-image: url("../img/volume_icon_sql.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-image: url("../img/volume_icon_dropbox.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-image: url("../img/volume_icon_googledrive.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-image: url("../img/volume_icon_onedrive.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-image: url("../img/volume_icon_box.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-image: url("../img/volume_icon_zip.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-network .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-image: url("../img/volume_icon_network.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

/* type badge in "icons" view */
.elfinder-cwd-icon:before {
    content: none;
    position: absolute;
    left: 0px;
    top: 5px;
    min-width: 20px;
    max-width: 84px;
    text-align: center;
    padding: 0px 4px 1px;
    border-radius: 4px;
    font-family: Verdana;
    font-size: 10px;
    line-height: 1.3em;
    -webkit-transform: scale(0.9);
    -moz-transform: scale(0.9);
    -ms-transform: scale(0.9);
    -o-transform: scale(0.9);
    transform: scale(0.9);
}

.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    left: -10px;
}

/* addtional type badge name */
.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before {
    content: 'ts'
}

.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before {
    content: 'dash'
}

.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before {
    content: 'hls'
}

.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before {
    content: 'c++'
}

/* thumbnail image */
.elfinder-cwd-icon.elfinder-cwd-bgurl {
    background-position: center center;
    background-repeat: no-repeat;
    -moz-background-size: contain;
    background-size: contain;
}

/* thumbnail self */
.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself {
    -moz-background-size: cover;
    background-size: cover;
}

/* thumbnail crop*/
.elfinder-cwd-icon.elfinder-cwd-bgurl {
    -moz-background-size: cover;
    background-size: cover;
}

.elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: ' ';
}

.elfinder-cwd-bgurl:after {
    position: relative;
    display: inline-block;
    top: 36px;
    left: -38px;
    width: 48px;
    height: 48px;
    background-image: url('../img/icons-big.svg');
    background-image: url('../img/icons-big.png') \9;
    background-repeat: no-repeat;
    background-size: auto !important;
    opacity: .8;
    filter: Alpha(Opacity=60);
    -webkit-transform-origin: 54px -24px;
    -webkit-transform: scale(.6);
    -moz-transform-origin: 54px -24px;
    -moz-transform: scale(.6);
    -ms-transform-origin: 54px -24px;
    -ms-transform: scale(.6);
    -o-transform-origin: 54px -24px;
    -o-transform: scale(.6);
    transform-origin: 54px -24px;
    transform: scale(.6);
}

/* thumbnail image and draging icon */
.elfinder-cwd-icon.elfinder-cwd-icon-drag {
    width: 48px;
    height: 48px;
}

/* thumbnail image and draging icon overlay none */
.elfinder-cwd-icon.elfinder-cwd-icon-drag:before,
.elfinder-cwd-icon.elfinder-cwd-icon-drag:after,
.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after,
.elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after {
    content: none;
}

/* "opened folder" icon on dragover */
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 0 -100px;
}

.elfinder-cwd .elfinder-droppable-active {
    outline: 2px solid #8cafed;
    outline-offset: -2px;
}

/* mimetypes icons */
.elfinder-cwd-icon-directory {
    background-position: 0 -50px;
}

.elfinder-cwd-icon-application:after,
.elfinder-cwd-icon-application {
    background-position: 0 -150px;
}

.elfinder-cwd-icon-text:after,
.elfinder-cwd-icon-text {
    background-position: 0 -1350px;
}

.elfinder-cwd-icon-plain:after,
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty:after,
.elfinder-cwd-icon-x-empty {
    background-position: 0 -200px;
}

.elfinder-cwd-icon-image:after,
.elfinder-cwd-icon-vnd-adobe-photoshop:after,
.elfinder-cwd-icon-image,
.elfinder-cwd-icon-vnd-adobe-photoshop {
    background-position: 0 -250px;
}

.elfinder-cwd-icon-postscript:after,
.elfinder-cwd-icon-postscript {
    background-position: 0 -1550px;
}

.elfinder-cwd-icon-audio:after,
.elfinder-cwd-icon-audio {
    background-position: 0 -300px;
}

.elfinder-cwd-icon-video:after,
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
    background-position: 0 -350px;
}

.elfinder-cwd-icon-rtf:after,
.elfinder-cwd-icon-rtfd:after,
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd {
    background-position: 0 -400px;
}

.elfinder-cwd-icon-pdf:after,
.elfinder-cwd-icon-pdf {
    background-position: 0 -450px;
}

.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-ms-excel:after,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after {
    background-position: 0 -1450px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after {
    background-position: 0 -1700px
}

.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after {
    background-position: 0 -1400px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after {
    background-position: 0 -1650px
}

.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-msword:after,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-word:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after {
    background-position: 0 -1500px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text:after {
    background-position: 0 -1750px
}

.elfinder-cwd-icon-vnd-ms-office,
.elfinder-cwd-icon-vnd-ms-office:after {
    background-position: 0 -500px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-database:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-oasis-opendocument-image:after,
.elfinder-cwd-icon-vnd-openofficeorg-extension,
.elfinder-cwd-icon-vnd-openofficeorg-extension:after {
    background-position: 0 -1600px
}

.elfinder-cwd-icon-html:after,
.elfinder-cwd-icon-html {
    background-position: 0 -550px;
}

.elfinder-cwd-icon-css:after,
.elfinder-cwd-icon-css {
    background-position: 0 -600px;
}

.elfinder-cwd-icon-javascript:after,
.elfinder-cwd-icon-x-javascript:after,
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
    background-position: 0 -650px;
}

.elfinder-cwd-icon-x-perl:after,
.elfinder-cwd-icon-x-perl {
    background-position: 0 -700px;
}

.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
    background-position: 0 -750px;
}

.elfinder-cwd-icon-x-ruby:after,
.elfinder-cwd-icon-x-ruby {
    background-position: 0 -800px;
}

.elfinder-cwd-icon-x-sh:after,
.elfinder-cwd-icon-x-shellscript:after,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
    background-position: 0 -850px;
}

.elfinder-cwd-icon-x-c:after,
.elfinder-cwd-icon-x-csrc:after,
.elfinder-cwd-icon-x-chdr:after,
.elfinder-cwd-icon-x-c--:after,
.elfinder-cwd-icon-x-c--src:after,
.elfinder-cwd-icon-x-c--hdr:after,
.elfinder-cwd-icon-x-java:after,
.elfinder-cwd-icon-x-java-source:after,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
    background-position: 0 -900px;
}

.elfinder-cwd-icon-x-php:after,
.elfinder-cwd-icon-x-php {
    background-position: 0 -950px;
}

.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
    background-position: 0 -1000px;
}

.elfinder-cwd-icon-zip:after,
.elfinder-cwd-icon-x-zip:after,
.elfinder-cwd-icon-x-xz:after,
.elfinder-cwd-icon-x-7z-compressed:after,
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed {
    background-position: 0 -1050px;
}

.elfinder-cwd-icon-x-gzip:after,
.elfinder-cwd-icon-x-tar:after,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar {
    background-position: 0 -1100px;
}

.elfinder-cwd-icon-x-bzip:after,
.elfinder-cwd-icon-x-bzip2:after,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2 {
    background-position: 0 -1150px;
}

.elfinder-cwd-icon-x-rar:after,
.elfinder-cwd-icon-x-rar-compressed:after,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
    background-position: 0 -1200px;
}

.elfinder-cwd-icon-x-shockwave-flash:after,
.elfinder-cwd-icon-x-shockwave-flash {
    background-position: 0 -1250px;
}

.elfinder-cwd-icon-group {
    background-position: 0 -1300px;
}

/* textfield inside icon */
.elfinder-cwd-filename input {
    width: 100%;
    border: none;
    margin: 0;
    padding: 0;
}

.elfinder-cwd-view-icons input {
    text-align: center;
}

.elfinder-cwd-view-icons textarea {
    width: 100%;
    border: 0px solid;
    margin: 0;
    padding: 0;
    text-align: center;
    overflow: hidden;
    resize: none;
}

.elfinder-cwd-view-icons {
    text-align: center;
}

/************************************  LIST VIEW ************************************/

.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after {
    display: none;
}

.elfinder-cwd table {
    width: 100%;
    border-collapse: separate;
    border: 0 solid;
    margin: 0 0 10px 0;
    border-spacing: 0;
    box-sizing: padding-box;
    padding: 2px;
    position: relative;
}

.elfinder-cwd table td {
    /* fix conflict with Bootstrap CSS */
    box-sizing: content-box;
}

.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader {
    position: absolute;
    overflow: hidden;
}

.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
    content: '';
    position: absolute;
    width: 100%;
    top: 0;
    height: 3px;
    background-color: white;
}

.elfinder-droppable-active + .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
    background-color: #8cafed;
}

.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table {
    table-layout: fixed;
}

.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader {
    position: relative;
}

.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall {
    text-align: left;
    right: auto;
    left: 0px;
    padding-top: 3px;
}

.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall {
    text-align: right;
    right: 0px;
    left: auto;
    padding-top: 3px;
}

.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall {
    padding-top: 4px;
}

.elfinder .elfinder-cwd table thead tr {
    border-left: 0 solid;
    border-top: 0 solid;
    border-right: 0 solid;
}

.elfinder .elfinder-cwd table thead td {
    padding: 4px 14px;
}

.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding: 4px 14px 4px 22px;
}

.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding: 4px 22px 4px 14px;
}

.elfinder-touch .elfinder-cwd table thead td,
.elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding-top: 8px;
    padding-bottom: 8px;
}

.elfinder .elfinder-cwd table thead td.ui-state-active {
    background: #ebf1f6;
    background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ebf1f6), color-stop(50%, #abd3ee), color-stop(51%, #89c3eb), color-stop(100%, #d5ebfb));
    background: -webkit-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -o-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -ms-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: linear-gradient(to bottom, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0);
}

.elfinder .elfinder-cwd table td {
    padding: 4px 12px;
    white-space: pre;
    overflow: hidden;
    text-align: right;
    cursor: default;
    border: 0 solid;
}

.elfinder .elfinder-cwd table tbody td:first-child {
    position: relative
}

.elfinder .elfinder-cwd table td div {
    box-sizing: content-box;
}

tr.elfinder-cwd-file td .elfinder-cwd-select {
    padding-top: 3px;
}

.elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select {
    width: 40px;
}

.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select {
    padding-top: 10px;
}

.elfinder-touch .elfinder-cwd tr td {
    padding: 10px 12px;
}

.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td {
    padding: 13px 12px;
}

.elfinder-ltr .elfinder-cwd table td {
    text-align: right;
}

.elfinder-ltr .elfinder-cwd table td:first-child {
    text-align: left;
}

.elfinder-rtl .elfinder-cwd table td {
    text-align: left;
}

.elfinder-rtl .elfinder-cwd table td:first-child {
    text-align: right;
}

.elfinder-odd-row {
    background: #eee;
}

/* filename container */
.elfinder-cwd-view-list .elfinder-cwd-file-wrapper {
    width: 97%;
    position: relative;
}

/* filename container in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper {
    margin-left: 8px;
}

.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper {
    margin-right: 8px;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-left: 23px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-right: 23px;
}

/* premissions/symlink marker */
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-symlink {
    margin-top: -6px;
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-cwd-view-list .elfinder-perms {
    bottom: -4px;
}

.elfinder-cwd-view-list .elfinder-lock {
    top: 0px;
}

.elfinder-cwd-view-list .elfinder-symlink {
    bottom: -4px;
}

/* markers in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms {
    left: 8px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-perms {
    right: -8px;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock {
    left: 10px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-lock {
    right: -10px;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink {
    left: -7px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink {
    right: 7px;
}

/* file icon */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 50%;
    margin-top: -8px;
    background-image: url(../img/icons-small.png);
}

/* icon in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon {
    left: 0;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon {
    right: 0;
}

/* type badge, thumbnail image overlay */
.elfinder-cwd-view-list .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-cwd-icon:after {
    content: none;
}

/* table header resize handle */
.elfinder-cwd-view-list thead td .ui-resizable-handle {
    height: 100%;
    top: 6px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle {
    top: -4px;
    margin: 10px;
}

.elfinder-cwd-view-list thead td .ui-resizable-e {
    right: -7px;
}

.elfinder-cwd-view-list thead td .ui-resizable-w {
    left: -7px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e {
    right: -16px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w {
    left: -16px;
}

/* empty message */
.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after {
    margin-top: 0;
}

/* overlay message board */
.elfinder-cwd-message-board {
    position: absolute;
    position: -webkit-sticky;
    position: sticky;
    width: 100%;
    height: calc(100% - 0.01px); /* for Firefox scroll problem */
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
    pointer-events: none;
    background-color: transparent;
}

/* overlay message board for trash */
.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board {
    background-image: url(../img/trashmesh.png);
}

.elfinder-cwd-message-board .elfinder-cwd-trash {
    position: absolute;
    bottom: 0;
    font-size: 30px;
    width: 100%;
    text-align: right;
    display: none;
}

.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash {
    text-align: left;
}

.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash {
    font-size: 20px;
}

.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash {
    display: block;
    opacity: .3;
}

/* overlay message board for expires */
.elfinder-cwd-message-board .elfinder-cwd-expires {
    position: absolute;
    bottom: 0;
    font-size: 24px;
    width: 100%;
    text-align: right;
    opacity: .25;
}

.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires {
    text-align: left;
}

.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires {
    font-size: 20px;
}

/* File: /css/dialog.css */
/*********************************************/
/*                DIALOGS STYLES             */
/*********************************************/

/* common dialogs class */
.std42-dialog {
    padding: 0;
    position: absolute;
    left: auto;
    right: auto;
    box-sizing: border-box;
}

.std42-dialog.elfinder-dialog-minimized {
    overFlow: hidden;
    position: relative;
    float: left;
    width: auto;
    cursor: pointer;
}

.elfinder-rtl .std42-dialog.elfinder-dialog-minimized {
    float: right;
}

.std42-dialog input {
    border: 1px solid;
}

/* titlebar */
.std42-dialog .ui-dialog-titlebar {
    border-left: 0 solid transparent;
    border-top: 0 solid transparent;
    border-right: 0 solid transparent;
    font-weight: normal;
    padding: .2em 1em;
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
    padding: 0 .5em;
    height: 20px;
}

.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
    padding: .3em .5em;
}

.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar {
    cursor: default;
}

.std42-dialog .ui-dialog-titlebar .ui-widget-header {
    border: none;
    cursor: pointer;
}

.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
    display: inherit;
    word-break: break-all;
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
    display: list-item;
    display: -moz-inline-box;
    white-space: nowrap;
    word-break: normal;
    overflow: hidden;
    word-wrap: normal;
    overflow-wrap: normal;
    max-width: -webkit-calc(100% - 24px);
    max-width: -moz-calc(100% - 24px);
    max-width: calc(100% - 24px);
}

.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
    padding-top: .15em;
}

.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
    max-width: -webkit-calc(100% - 36px);
    max-width: -moz-calc(100% - 36px);
    max-width: calc(100% - 36px);
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button {
    position: relative;
    float: left;
    top: 10px;
    left: -10px;
    right: 10px;
    width: 20px;
    height: 20px;
    padding: 1px;
    margin: -10px 1px 0 1px;
    background-color: transparent;
    background-image: none;
}

.elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button {
    -moz-transform: scale(1.2);
    zoom: 1.2;
    padding-left: 6px;
    padding-right: 6px;
    height: 24px;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right {
    float: right;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
    left: 10px;
    right: -10px;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    width: 17px;
    height: 17px;
    border-width: 1px;
    opacity: .7;
    filter: Alpha(Opacity=70);
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    opacity: .5;
    filter: Alpha(Opacity=50);
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    opacity: 1;
    filter: Alpha(Opacity=100);
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select {
    display: none;
}

.elfinder-spinner {
    width: 14px;
    height: 14px;
    background: url("../img/spinner-mini.gif") center center no-repeat;
    margin: 0 5px;
    display: inline-block;
    vertical-align: middle;
}

.elfinder-ltr .elfinder-spinner,
.elfinder-ltr .elfinder-spinner-text {
    float: left;
}

.elfinder-rtl .elfinder-spinner,
.elfinder-rtl .elfinder-spinner-text  {
    float: right;
}



/* resize handle for touch devices */
.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se {
    width: 12px;
    height: 12px;
    -moz-transform-origin: bottom right;
    -moz-transform: scale(1.5);
    zoom: 1.5;
    right: -7px;
    bottom: -7px;
    margin: 3px 7px 7px 3px;
    background-position: -64px -224px;
}

.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar {
    text-align: right;
}

/* content */
.std42-dialog .ui-dialog-content {
    padding: .3em .5em;
    box-sizing: border-box;
}

.elfinder .std42-dialog .ui-dialog-content,
.elfinder .std42-dialog .ui-dialog-content * {
    -webkit-user-select: auto;
    -moz-user-select: text;
    -khtml-user-select: text;
    user-select: text;
}

.elfinder .std42-dialog .ui-dialog-content label {
    border: none;
}

/* buttons */
.std42-dialog .ui-dialog-buttonpane {
    border: 0 solid;
    margin: 0;
    padding: .5em;
    text-align: right;
}

.elfinder-rtl .std42-dialog .ui-dialog-buttonpane {
    text-align: left;
}

.std42-dialog .ui-dialog-buttonpane button {
    margin: .2em 0 0 .4em;
    padding: .2em;
    outline: 0px solid;
}

.std42-dialog .ui-dialog-buttonpane button span {
    padding: 2px 9px;
}

.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
    padding: 2px;
}

.elfinder-dialog .ui-resizable-e,
.elfinder-dialog .ui-resizable-s {
    width: 0;
    height: 0;
}

.std42-dialog .ui-button input {
    cursor: pointer;
}

.std42-dialog select {
    border: 1px solid #ccc;
}

/* error/notify/confirm dialogs icon */
.elfinder-dialog-icon {
    position: absolute;
    width: 32px;
    height: 32px;
    left: 10px;
    top: 50%;
    margin-top: -15px;
    background: url("../img/dialogs.png") 0 0 no-repeat;
}

.elfinder-rtl .elfinder-dialog-icon {
    left: auto;
    right: 10px;
}

/*********************** ERROR DIALOG **************************/

.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content {
    padding-left: 56px;
    min-height: 35px;
}

.elfinder-rtl .elfinder-dialog-error .ui-dialog-content,
.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content {
    padding-left: 0;
    padding-right: 56px;
}

.elfinder-dialog-error .elfinder-err-var {
    word-break: break-all;
}

/*********************** NOTIFY DIALOG **************************/

.elfinder-dialog-notify {
    top : 36px;
    width : 280px;
}

.elfinder-ltr .elfinder-dialog-notify {
    right : 12px;
}

.elfinder-rtl .elfinder-dialog-notify {
    left : 12px;
}

.elfinder-dialog-notify .ui-dialog-titlebar {
    height: 5px;
}

.elfinder-dialog-notify .ui-dialog-titlebar-close {
    display: none;
}

.elfinder-dialog-notify .ui-dialog-content {
    padding: 0;
}

/* one notification container */
.elfinder-notify {
    border-bottom: 1px solid #ccc;
    position: relative;
    padding: .5em;

    text-align: center;
    overflow: hidden;
}

.elfinder-ltr .elfinder-notify {
    padding-left: 36px;
}

.elfinder-rtl .elfinder-notify {
    padding-right: 36px;
}

.elfinder-notify:last-child {
    border: 0 solid;
}

/* progressbar */
.elfinder-notify-progressbar {
    width: 180px;
    height: 8px;
    border: 1px solid #aaa;
    background: #f5f5f5;
    margin: 5px auto;
    overflow: hidden;
}

.elfinder-notify-progress {
    width: 100%;
    height: 8px;
    background: url(../img/progress.gif) center center repeat-x;
}

.elfinder-notify-progressbar, .elfinder-notify-progress {
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    border-radius: 2px;
}

/* icons */
.elfinder-dialog-icon-open,
.elfinder-dialog-icon-readdir,
.elfinder-dialog-icon-file {
    background-position: 0 -225px;
}

.elfinder-dialog-icon-reload {
    background-position: 0 -225px;
}

.elfinder-dialog-icon-mkdir {
    background-position: 0 -64px;
}

.elfinder-dialog-icon-mkfile {
    background-position: 0 -96px;
}

.elfinder-dialog-icon-copy,
.elfinder-dialog-icon-prepare,
.elfinder-dialog-icon-move {
    background-position: 0 -128px;
}

.elfinder-dialog-icon-upload {
    background-position: 0 -160px;
}

.elfinder-dialog-icon-chunkmerge {
    background-position: 0 -160px;
}

.elfinder-dialog-icon-rm {
    background-position: 0 -192px;
}

.elfinder-dialog-icon-download {
    background-position: 0 -260px;
}

.elfinder-dialog-icon-save {
    background-position: 0 -295px;
}

.elfinder-dialog-icon-rename,
.elfinder-dialog-icon-chkcontent {
    background-position: 0 -330px;
}

.elfinder-dialog-icon-zipdl,
.elfinder-dialog-icon-archive,
.elfinder-dialog-icon-extract {
    background-position: 0 -365px;
}

.elfinder-dialog-icon-search {
    background-position: 0 -402px;
}

.elfinder-dialog-icon-resize,
.elfinder-dialog-icon-loadimg,
.elfinder-dialog-icon-netmount,
.elfinder-dialog-icon-netunmount,
.elfinder-dialog-icon-chmod,
.elfinder-dialog-icon-preupload,
.elfinder-dialog-icon-url,
.elfinder-dialog-icon-dim {
    background-position: 0 -434px;
}

/*********************** CONFIRM DIALOG **************************/

.elfinder-dialog-confirm-applyall,
.elfinder-dialog-confirm-encoding {
    padding: 0 1em;
    margin: 0;
}

.elfinder-ltr .elfinder-dialog-confirm-applyall,
.elfinder-ltr .elfinder-dialog-confirm-encoding {
    text-align: left;
}

.elfinder-rtl .elfinder-dialog-confirm-applyall,
.elfinder-rtl .elfinder-dialog-confirm-encoding {
    text-align: right;
}

.elfinder-dialog-confirm .elfinder-dialog-icon {
    background-position: 0 -32px;
}

.elfinder-dialog-confirm .ui-dialog-buttonset {
    width: auto;
}

/*********************** FILE INFO DIALOG **************************/

.elfinder-info-title .elfinder-cwd-icon {
    float: left;
    width: 48px;
    height: 48px;
    margin-right: 1em;
}

.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon {
    float: right;
    margin-right: 0;
    margin-left: 1em;
}

.elfinder-info-title strong {
    display: block;
    padding: .3em 0 .5em 0;
}

.elfinder-info-tb {
    min-width: 200px;
    border: 0 solid;
    margin: 1em .2em 1em .2em;
    width: 100%;
}

.elfinder-info-tb td {
    white-space: pre-wrap;
    padding: 2px;
}

.elfinder-info-tb td.elfinder-info-label {
    white-space: nowrap;
}

.elfinder-info-tb td.elfinder-info-hash {
    display: inline-block;
    word-break: break-all;
    max-width: 32ch;
}

.elfinder-ltr .elfinder-info-tb tr td:first-child {
    text-align: right;
}

.elfinder-ltr .elfinder-info-tb span {
    float: left;
}

.elfinder-rtl .elfinder-info-tb tr td:first-child {
    text-align: left;
}

.elfinder-rtl .elfinder-info-tb span {
    float: right;
}

.elfinder-info-tb a {
    outline: none;
    text-decoration: underline;
}

.elfinder-info-tb a:hover {
    text-decoration: none;
}

.elfinder-netmount-tb {
    margin: 0 auto;
}

.elfinder-netmount-tb select,
.elfinder-netmount-tb .elfinder-button-icon {
    cursor: pointer;
}

button.elfinder-info-button {
    margin: -3.5px 0;
    cursor: pointer;
}

/*********************** UPLOAD DIALOG **************************/

.elfinder-upload-dropbox {
    display: table-cell;
    text-align: center;
    vertical-align: middle;
    padding: 0.5em;
    border: 3px dashed #aaa;
    width: 9999px;
    height: 80px;
    overflow: hidden;
    word-break: keep-all;
}

.elfinder-upload-dropbox.ui-state-hover {
    background: #dfdfdf;
    border: 3px dashed #555;
}

.elfinder-upload-dialog-or {
    margin: .3em 0;
    text-align: center;
}

.elfinder-upload-dialog-wrapper {
    text-align: center;
}

.elfinder-upload-dialog-wrapper .ui-button {
    position: relative;
    overflow: hidden;
}

.elfinder-upload-dialog-wrapper .ui-button form {
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
    opacity: 0;
    filter: Alpha(Opacity=0);
}

.elfinder-upload-dialog-wrapper .ui-button form input {
    padding: 50px 0 0;
    font-size: 3em;
    width: 100%;
}

/* dialog for elFinder itself */
.dialogelfinder .dialogelfinder-drag {
    border-left: 0 solid;
    border-top: 0 solid;
    border-right: 0 solid;
    font-weight: normal;
    padding: 2px 12px;
    cursor: move;
    position: relative;
    text-align: left;
}

.elfinder-rtl .dialogelfinder-drag {
    text-align: right;
}

.dialogelfinder-drag-close {
    position: absolute;
    top: 50%;
    margin-top: -8px;
}

.elfinder-ltr .dialogelfinder-drag-close {
    right: 12px;
}

.elfinder-rtl .dialogelfinder-drag-close {
    left: 12px;
}

/*********************** RM CONFIRM **************************/
.elfinder-rm-title {
    margin-bottom: .5ex;
}

.elfinder-rm-title .elfinder-cwd-icon {
    float: left;
    width: 48px;
    height: 48px;
    margin-right: 1em;
}

.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon {
    float: right;
    margin-right: 0;
    margin-left: 1em;
}

.elfinder-rm-title strong {
    display: block;
    white-space: pre-wrap;
    word-break: normal;
    overflow: hidden;
    text-overflow: ellipsis;
}

.elfinder-rm-title + br {
    display: none;
}

/* File: /css/fonts.css */
.elfinder-font-mono {
    font-family: "Ricty Diminished", "Myrica M", Consolas, "Courier New", Courier, Monaco, monospace;
    font-size: 1.1em;
}

.elfinder-contextmenu .elfinder-contextmenu-item span {
    font-size: .72em;
}

.elfinder-cwd-view-icons .elfinder-cwd-filename {
    font-size: .7em;
}

.elfinder-cwd-view-list td {
    font-size: .7em;
}

.std42-dialog .ui-dialog-titlebar {
    font-size: .82em;
}

.std42-dialog .ui-dialog-content {
    font-size: .72em;
}

.std42-dialog .ui-dialog-buttonpane {
    font-size: .76em;
}

.elfinder-info-tb {
    font-size: .9em;
}

.elfinder-upload-dropbox {
    font-size: 1.2em;
}

.elfinder-upload-dialog-or {
    font-size: 1.2em;
}

.dialogelfinder .dialogelfinder-drag {
    font-size: .9em;
}

.elfinder .elfinder-navbar {
    font-size: .72em;
}

.elfinder-place-drag .elfinder-navbar-dir {
    font-size: .9em;
}

.elfinder-quicklook-title {
    font-size: .7em;
    font-weight: normal;
}

.elfinder-quicklook-info-data {
    font-size: .72em;
}

.elfinder-quicklook-preview-text-wrapper {
    font-size: .9em;
}

.elfinder-button-menu-item {
    font-size: .72em;
}

.elfinder-button-search input {
    font-size: .8em;
}

.elfinder-statusbar div {
    font-size: .7em;
}

.elfinder-drag-num {
    font-size: 12px;
}

.elfinder-toast {
    font-size: .76em;
}


/* File: /css/navbar.css */
/*********************************************/
/*              NAVIGATION PANEL             */
/*********************************************/

/* container */
.elfinder .elfinder-navbar {
    /*box-sizing: border-box;*/
    width: 230px;
    padding: 3px 5px;
    background-image: none;
    border-top: 0 solid;
    border-bottom: 0 solid;
    overflow: auto;
    position: relative;
}

.elfinder .elfinder-navdock {
    box-sizing: border-box;
    width: 230px;
    height: auto;
    position: absolute;
    bottom: 0;
    overflow: auto;
}

.elfinder-navdock .ui-resizable-n {
    top: 0;
    height: 20px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar {
    float: left;
    border-left: 0 solid;
}

.elfinder-rtl .elfinder-navbar {
    float: right;
    border-right: 0 solid;
}

.elfinder-ltr .ui-resizable-e {
    margin-left: 10px;
}

/* folders tree container */
.elfinder-tree {
    display: table;
    width: 100%;
    margin: 0 0 .5em 0;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

/* one folder wrapper */
.elfinder-navbar-wrapper, .elfinder-place-wrapper {
}

/* folder */
.elfinder-navbar-dir {
    position: relative;
    display: block;
    white-space: nowrap;
    padding: 3px 12px;
    margin: 0;
    outline: 0px solid;
    border: 1px solid transparent;
    cursor: default;
}

.elfinder-touch .elfinder-navbar-dir {
    padding: 12px 12px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-dir {
    padding-left: 35px;
}

.elfinder-rtl .elfinder-navbar-dir {
    padding-right: 35px;
}

/* arrow before icon */
.elfinder-navbar-arrow {
    width: 12px;
    height: 14px;
    position: absolute;
    display: none;
    top: 50%;
    margin-top: -8px;
    background-image: url("../img/arrows-normal.png");
    background-repeat: no-repeat;
}

.elfinder-ltr .elfinder-navbar-arrow {
    left: 0;
}

.elfinder-rtl .elfinder-navbar-arrow {
    right: 0;
}

.elfinder-touch .elfinder-navbar-arrow {
    -moz-transform-origin: top left;
    -moz-transform: scale(1.4);
    zoom: 1.4;
    margin-bottom: 7px;
}

.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow {
    left: -3px;
    margin-right: 20px;
}

.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow {
    right: -3px;
    margin-left: 20px;
}

.ui-state-active .elfinder-navbar-arrow {
    background-image: url("../img/arrows-active.png");
}

/* collapsed/expanded arrow view */
.elfinder-navbar-collapsed .elfinder-navbar-arrow {
    display: block;
}

.elfinder-subtree-chksubdir .elfinder-navbar-arrow {
    opacity: .25;
    filter: Alpha(Opacity=25);
}

/* arrow ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow {
    background-position: 0 4px;
}

.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow {
    background-position: 0 -10px;
}

.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow {
    background-position: 0 -21px;
}

/* folder icon */
.elfinder-navbar-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 50%;
    margin-top: -8px;
    background-image: url("../img/toolbar.png");
    background-repeat: no-repeat;
    background-position: 0 -16px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-icon {
    left: 14px;
}

.elfinder-rtl .elfinder-navbar-icon {
    right: 14px;
}

/* places icon */
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon {
    background-position: 0 -704px;
}

/* root folder */
.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon {
    background-position: 0 0;
    background-size: contain;
}

/* root icon of each volume "\9" for IE8 trick */
.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-image: url("../img/volume_icon_local.png") \9;
}

.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-image: url("../img/volume_icon_trash.png") \9;
}

.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-image: url("../img/volume_icon_ftp.png") \9;
}

.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-image: url("../img/volume_icon_sql.png") \9;
}

.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-image: url("../img/volume_icon_dropbox.png") \9;
}

.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-image: url("../img/volume_icon_googledrive.png") \9;
}

.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-image: url("../img/volume_icon_onedrive.png") \9;
}

.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-image: url("../img/volume_icon_box.png") \9;
}

.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-image: url("../img/volume_icon_zip.png") \9;
}

.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-image: url("../img/volume_icon_network.png") \9;
}

/* icon in active/hove/dropactive state */
.ui-state-active .elfinder-navbar-icon,
.elfinder-droppable-active .elfinder-navbar-icon,
.ui-state-hover .elfinder-navbar-icon {
    background-position: 0 -32px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-subtree {
    margin-left: 12px;
}

.elfinder-rtl .elfinder-navbar-subtree {
    margin-right: 12px;
}

/* spinner */
.elfinder-tree .elfinder-spinner {
    position: absolute;
    top: 50%;
    margin: -7px 0 0;
}

/* spinner ltr/rtl enviroment */
.elfinder-ltr .elfinder-tree .elfinder-spinner {
    left: 0;
    margin-left: -2px;
}

.elfinder-rtl .elfinder-tree .elfinder-spinner {
    right: 0;
    margin-right: -2px;
}

/* marker */
.elfinder-navbar .elfinder-perms,
.elfinder-navbar .elfinder-lock,
.elfinder-navbar .elfinder-symlink {
    opacity: .6;
    filter: Alpha(Opacity=60);
}

/* permissions marker */
.elfinder-navbar .elfinder-perms {
    bottom: -1px;
    margin-top: -8px;
}

/* locked marker */
.elfinder-navbar .elfinder-lock {
    top: -2px;
}

/* permissions/symlink markers ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar .elfinder-perms {
    left: 20px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-perms {
    right: 20px;
    transform: scale(0.8);
}

.elfinder-ltr .elfinder-navbar .elfinder-lock {
    left: 20px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-lock {
    right: 20px;
    transform: scale(0.8);
}

.elfinder-ltr .elfinder-navbar .elfinder-symlink {
    left: 8px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-symlink {
    right: 8px;
    transform: scale(0.8);
}

/* navbar input */
.elfinder-navbar input {
    width: 100%;
    border: 0px solid;
    margin: 0;
    padding: 0;
}

/* resizable */
.elfinder-navbar .ui-resizable-handle {
    width: 12px;
    background: transparent url('../img/resize.png') center center no-repeat;
}

.elfinder-nav-handle-icon {
    position: absolute;
    top: 50%;
    margin: -8px 2px 0 2px;
    opacity: .5;
    filter: Alpha(Opacity=50);
}

/* pager button */
.elfinder-navbar-pager {
    width: 100%;
    box-sizing: border-box;
    padding-top: 3px;
    padding-bottom: 3px;
}

.elfinder-touch .elfinder-navbar-pager {
    padding-top: 10px;
    padding-bottom: 10px;
}

.elfinder-places {
    border: none;
    margin: 0;
    padding: 0;
}

/* navbar swipe handle */
.elfinder-navbar-swipe-handle {
    position: absolute;
    top: 0px;
    height: 100%;
    width: 50px;
    pointer-events: none;
}

.elfinder-ltr .elfinder-navbar-swipe-handle {
    left: 0px;
    background: linear-gradient(to right,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 5px,
    rgba(216, 223, 230, 0.3) 8px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

.elfinder-rtl .elfinder-navbar-swipe-handle {
    right: 0px;
    background: linear-gradient(to left,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 5px,
    rgba(216, 223, 230, 0.3) 8px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

/* File: /css/places.css */
/*********************************************/
/*               PLACES STYLES               */
/*********************************************/
/* root extra icon */
.elfinder-navbar-root .elfinder-places-root-icon {
    position: absolute;
    top: 50%;
    margin-top: -9px;
    cursor: pointer;
}

.elfinder-ltr .elfinder-places-root-icon {
    right: 10px;
}

.elfinder-rtl .elfinder-places-root-icon {
    left: 10px;
}

.elfinder-navbar-expanded .elfinder-places-root-icon {
    display: block;
}

/* dragging helper base */
.elfinder-place-drag {
    font-size: 0.8em;
}

/* File: /css/quicklook.css */
/* quicklook window */
.elfinder-quicklook {
    position: absolute;
    background: url("../img/quicklook-bg.png");
    overflow: hidden;
    -moz-border-radius: 7px;
    -webkit-border-radius: 7px;
    border-radius: 7px;
    padding: 20px 0 40px 0;
}

.elfinder-navdock .elfinder-quicklook {
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
    border-radius: 0;
    font-size: 90%;
    overflow: auto;
}

.elfinder-quicklook.elfinder-touch {
    padding: 30px 0 40px 0;
}

.elfinder-quicklook .ui-resizable-se {
    width: 14px;
    height: 14px;
    right: 5px;
    bottom: 3px;
    background: url("../img/toolbar.png") 0 -496px no-repeat;
}

.elfinder-quicklook.elfinder-touch .ui-resizable-se {
    -moz-transform-origin: bottom right;
    -moz-transform: scale(1.5);
    zoom: 1.5;
}

/* quicklook fullscreen window */
.elfinder-quicklook.elfinder-quicklook-fullscreen {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: 0;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 0;
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
    -webkit-background-clip: padding-box;
    padding: 0;
    background: #000;
    display: block;
}

/* hide titlebar in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar,
.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle {
    display: none;
}

/* hide preview border in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-preview {
    border: 0 solid;
}

.elfinder-quicklook-cover {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    position: absolute;
}

.elfinder-quicklook-cover.elfinder-quicklook-coverbg {
    /* background need to catch mouse event over browser plugin (eg PDF preview) */
    background-color: #fff;
    opacity: 0.000001;
    filter: Alpha(Opacity=0.0001);
}

/* quicklook titlebar */
.elfinder-quicklook-titlebar {
    text-align: center;
    background: #777;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 20px;
    -moz-border-radius-topleft: 7px;
    -webkit-border-top-left-radius: 7px;
    border-top-left-radius: 7px;
    -moz-border-radius-topright: 7px;
    -webkit-border-top-right-radius: 7px;
    border-top-right-radius: 7px;
    border: none;
    line-height: 1.2;
}

.elfinder-navdock .elfinder-quicklook-titlebar {
    -moz-border-radius-topleft: 0;
    -webkit-border-top-left-radius: 0;
    border-top-left-radius: 0;
    -moz-border-radius-topright: 0;
    -webkit-border-top-right-radius: 0;
    border-top-right-radius: 0;
    cursor: default;
}

.elfinder-touch .elfinder-quicklook-titlebar {
    height: 30px;
}

/* window title */
.elfinder-quicklook-title {
    display: inline-block;
    white-space: nowrap;
    overflow: hidden;
}

.elfinder-touch .elfinder-quicklook-title {
    padding: 8px 0;
}

/* icon "close" in titlebar */
.elfinder-quicklook-titlebar-icon {
    position: absolute;
    left: 4px;
    top: 50%;
    margin-top: -8px;
    height: 16px;
    border: none;
}
.elfinder-touch .elfinder-quicklook-titlebar-icon {
    height: 22px;
}

.elfinder-quicklook-titlebar-icon .ui-icon {
    position: relative;
    margin: -9px 3px 0px 0px;
    cursor: pointer;
    border-radius: 10px;
    border: 1px solid;
    opacity: .7;
    filter: Alpha(Opacity=70);
}

.elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick {
    padding-left: 1px;
}

.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon {
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon {
    margin-top: -5px;
}

.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right {
    left: auto;
    right: 4px;
    direction: rtl;
}

.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon {
    margin: -9px 0px 0px 3px;
}

.elfinder-touch .elfinder-quicklook-titlebar .ui-icon {
    -moz-transform-origin: center center;
    -moz-transform: scale(1.2);
    zoom: 1.2;
}

.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon {
    margin-right: 10px;
}

.elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon {
    margin-left: 10px;
}

/* main part of quicklook window */
.elfinder-quicklook-preview {
    overflow: hidden;
    position: relative;
    border: 0 solid;
    border-left: 1px solid transparent;
    border-right: 1px solid transparent;
    height: 100%;
}

.elfinder-navdock .elfinder-quicklook-preview {
    border-left: 0;
    border-right: 0;
}

.elfinder-quicklook-preview.elfinder-overflow-auto {
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

/* wrapper for file info/icon */
.elfinder-quicklook-info-wrapper {
    display: table;
    position: absolute;
    width: 100%;
    height: 100%;
    height: calc(100% - 80px);
    left: 0;
    top: 20px;
}

.elfinder-navdock .elfinder-quicklook-info-wrapper {
    height: calc(100% - 20px);
}

/* file info */
.elfinder-quicklook-info {
    display: table-cell;
    vertical-align: middle;
}

.elfinder-ltr .elfinder-quicklook-info {
    padding: 0 12px 0 112px;
}

.elfinder-rtl .elfinder-quicklook-info {
    padding: 0 112px 0 12px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info {
    padding: 0 0 0 80px;
}

.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info {
    padding: 0 80px 0 0;
}

/* file name in info */
.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child {
    color: #fff;
    font-weight: bold;
    padding-bottom: .5em;
}

/* other data in info */
.elfinder-quicklook-info-data {
    clear: both;
    padding-bottom: .2em;
    color: #fff;
}

/* file icon */
.elfinder-quicklook .elfinder-cwd-icon {
    position: absolute;
    left: 32px;
    top: 50%;
    margin-top: -20px;
}

.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
    left: 16px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon {
    left: auto;
    right: 32px;
}

.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
    right: 6px;
}

.elfinder-quicklook .elfinder-cwd-icon:before {
    top: -10px;
}

.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before {
    left: -20px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before {
    left: -14px;
}

.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after {
    left: -20px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after {
    left: -12px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before {
    left: auto;
    right: 40px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after {
    left: auto;
    right: 46px;
}

/* image in preview */
.elfinder-quicklook-preview img {
    display: block;
    margin: 0 auto;
}

/* navigation bar on quicklook window bottom */
.elfinder-quicklook-navbar {
    position: absolute;
    left: 50%;
    bottom: 4px;
    width: 140px;
    height: 32px;
    padding: 0px;
    margin-left: -70px;
    border: 1px solid transparent;
    border-radius: 19px;
    -moz-border-radius: 19px;
    -webkit-border-radius: 19px;
}

/* navigation bar in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
    width: 188px;
    margin-left: -94px;
    padding: 5px;
    border: 1px solid #eee;
    background: #000;
    opacity: 0.4;
    filter: Alpha(Opacity=40);
}

/* show close icon in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator {
    display: inline;
}

/* icons in navbar */
.elfinder-quicklook-navbar-icon {
    width: 32px;
    height: 32px;
    margin: 0 7px;
    float: left;
    background: url("../img/quicklook-icons.png") 0 0 no-repeat;

}

/* fullscreen icon */
.elfinder-quicklook-navbar-icon-fullscreen {
    background-position: 0 -64px;
}

/* exit fullscreen icon */
.elfinder-quicklook-navbar-icon-fullscreen-off {
    background-position: 0 -96px;
}

/* prev file icon */
.elfinder-quicklook-navbar-icon-prev {
    background-position: 0 0;
}

/* next file icon */
.elfinder-quicklook-navbar-icon-next {
    background-position: 0 -32px;
}

/* close icon */
.elfinder-quicklook-navbar-icon-close {
    background-position: 0 -128px;
    display: none;
}

/* icons separator */
.elfinder-quicklook-navbar-separator {
    width: 1px;
    height: 32px;
    float: left;
    border-left: 1px solid #fff;
    display: none;
}

/* text files preview wrapper */
.elfinder-quicklook-preview-text-wrapper {
    width: 100%;
    height: 100%;
    background: #fff;
    color: #222;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

/* archive files preview wrapper */
.elfinder-quicklook-preview-archive-wrapper {
    width: 100%;
    height: 100%;
    background: #fff;
    color: #222;
    font-size: 90%;
    overflow: auto;
    -webkit-overflow-scrolling: touch
}

/* archive files preview header */
.elfinder-quicklook-preview-archive-wrapper strong {
    padding: 0 5px;
}

/* text preview */
pre.elfinder-quicklook-preview-text,
pre.elfinder-quicklook-preview-text.prettyprint {
    width: auto;
    height: auto;
    margin: 0;
    padding: 3px 9px;
    border: none;
    -o-tab-size: 4;
    -moz-tab-size: 4;
    tab-size: 4;
}

.elfinder-quicklook-preview-charsleft hr {
    border: none;
    border-top: dashed 1px;
}

.elfinder-quicklook-preview-charsleft span {
    font-size: 90%;
    font-style: italic;
    cursor: pointer;
}

/* html/pdf preview */
.elfinder-quicklook-preview-html,
.elfinder-quicklook-preview-pdf,
.elfinder-quicklook-preview-iframe {
    width: 100%;
    height: 100%;
    background: #fff;
    margin: 0;
    border: none;
    display: block;
}

/* swf preview container */
.elfinder-quicklook-preview-flash {
    width: 100%;
    height: 100%;
}

/* audio preview container */
.elfinder-quicklook-preview-audio {
    width: 100%;
    position: absolute;
    bottom: 0;
    left: 0;
}

/* audio preview using embed */
embed.elfinder-quicklook-preview-audio {
    height: 30px;
    background: transparent;
}

/* video preview container */
.elfinder-quicklook-preview-video {
    width: 100%;
    height: 100%;
}

/* allow user select */
.elfinder .elfinder-quicklook .elfinder-quicklook-info *,
.elfinder .elfinder-quicklook .elfinder-quicklook-preview * {
    -webkit-user-select: auto;
    -moz-user-select: text;
    -khtml-user-select: text;
    user-select: text;
}

/* File: /css/statusbar.css */
/******************************************************************/
/*                           STATUSBAR STYLES                     */
/******************************************************************/

/* statusbar container */
.elfinder-statusbar {
    display: flex;
    justify-content: space-between;
    cursor: default;
    text-align: center;
    font-weight: normal;
    padding: .2em .5em;
    border-right: 0 solid transparent;
    border-bottom: 0 solid transparent;
    border-left: 0 solid transparent;
}

.elfinder-statusbar:before,
.elfinder-statusbar:after {
    display: none;
}

.elfinder-statusbar span {
    vertical-align: bottom;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
}

.elfinder-statusbar span.elfinder-path-other {
    flex-shrink: 0;
    text-overflow: clip;
    -o-text-overflow: clip;
}

.elfinder-statusbar span.ui-state-hover,
.elfinder-statusbar span.ui-state-active {
    border: none;
}

.elfinder-statusbar span.elfinder-path-cwd {
    cursor: default;
}

/* path in statusbar */
.elfinder-path {
    display: flex;
    order: 1;
    flex-grow: 1;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    max-width: 30%\9;
}

.elfinder-ltr .elfinder-path {
    text-align: left;
    float: left\9;
}

.elfinder-rtl .elfinder-path {
    text-align: right;
    float: right\9;
}

/* path in workzone (case of swipe to navbar close) */
.elfinder-workzone-path {
    position: relative;
}

.elfinder-workzone-path .elfinder-path {
    position: relative;
    font-size: .75em;
    font-weight: normal;
    float: none;
    max-width: none;
    overflow: hidden;
    overflow-x: hidden;
    text-overflow: initial;
    -o-text-overflow: initial;
}

.elfinder-mobile .elfinder-workzone-path .elfinder-path {
    overflow: auto;
    overflow-x: scroll;
}

.elfinder-ltr .elfinder-workzone-path .elfinder-path {
    margin-left: 24px;
}

.elfinder-rtl .elfinder-workzone-path .elfinder-path {
    margin-right: 24px;
}

.elfinder-workzone-path .elfinder-path span {
    display: inline-block;
    padding: 5px 3px;
}

.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd {
    font-weight: bold;
}

.elfinder-workzone-path .elfinder-path span.ui-state-hover,
.elfinder-workzone-path .elfinder-path span.ui-state-active {
    border: none;
}

.elfinder-workzone-path .elfinder-path-roots {
    position: absolute;
    top: 0;
    width: 24px;
    height: 20px;
    padding: 2px;
    border: none;
    overflow: hidden;
}

.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots {
    left: 0;
}

.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots {
    right: 0;
}

/* total/selected size in statusbar */
.elfinder-stat-size {
    order: 3;
    flex-grow: 1;
    overflow: hidden;
    white-space: nowrap;
}

.elfinder-ltr .elfinder-stat-size {
    text-align: right;
    float: right\9;
}

.elfinder-rtl .elfinder-stat-size {
    text-align: left;
    float: left\9;
}

/* info of current selected item */
.elfinder-stat-selected {
    order: 2;
    margin: 0 .5em;
    white-space: nowrap;
    overflow: hidden;
}

/* File: /css/toast.css */
/*
 * CSS for Toastr
 * Copyright 2012-2015
 * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.
 * All Rights Reserved.
 * Use, reproduction, distribution, and modification of this code is subject to the terms and
 * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
 *
 * ARIA Support: Greta Krafsig
 *
 * Project: https://github.com/CodeSeven/toastr
 */

.elfinder .elfinder-toast {
    position: absolute;
    top: 12px;
    right: 12px;
    max-width: 90%;
    cursor: default;
}

.elfinder .elfinder-toast > div {
    position: relative;
    pointer-events: auto;
    overflow: hidden;
    margin: 0 0 6px;
    padding: 8px 16px 8px 50px;
    -moz-border-radius: 3px 3px 3px 3px;
    -webkit-border-radius: 3px 3px 3px 3px;
    border-radius: 3px 3px 3px 3px;
    background-position: 15px center;
    background-repeat: no-repeat;
    -moz-box-shadow: 0 0 12px #999999;
    -webkit-box-shadow: 0 0 12px #999999;
    box-shadow: 0 0 12px #999999;
    color: #FFFFFF;
    opacity: 0.9;
    filter: alpha(opacity=90);
    background-color: #030303;
    text-align: center;
}

.elfinder .elfinder-toast > .toast-info {
    background-color: #2F96B4;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > .toast-error {
    background-color: #BD362F;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > .toast-success {
    background-color: #51A351;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}

.elfinder .elfinder-toast > .toast-warning {
    background-color: #F89406;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}

.elfinder .elfinder-toast > div button.ui-button {
    background-image: none;
    margin-top: 8px;
    padding: .5em .8em;
}

.elfinder .elfinder-toast > .toast-success button.ui-button {
    background-color: green;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover {
    background-color: #add6ad;
    color: #254b25;
}

.elfinder .elfinder-toast > .toast-info button.ui-button {
    background-color: #046580;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-info button.ui-button.ui-state-hover {
    background-color: #7DC6DB;
    color: #046580;
}

.elfinder .elfinder-toast > .toast-warning button.ui-button {
    background-color: #dd8c1a;
    color: #FFF;
}

.elfinder .elfinder-toast > .toast-warning button.ui-button.ui-state-hover {
    background-color: #e7ae5e;
    color: #422a07;
}

/* File: /css/toolbar.css */
/*********************************************/
/*               TOOLBAR STYLES              */
/*********************************************/
/* toolbar container */
.elfinder-toolbar {
    padding: 4px 0 3px 0;
    border-left: 0 solid transparent;
    border-top: 0 solid transparent;
    border-right: 0 solid transparent;
    max-height: 50%;
    overflow-y: auto;
}

/* container for button's group */
.elfinder-buttonset {
    margin: 1px 4px;
    float: left;
    background: transparent;
    padding: 0;
    overflow: hidden;
}

/*.elfinder-buttonset:first-child { margin:0; }*/

/* button */
.elfinder .elfinder-button {
    min-width: 16px;
    height: 16px;
    margin: 0;
    padding: 4px;
    float: left;
    overflow: hidden;
    position: relative;
    border: 0 solid;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    line-height: 1;
    cursor: default;
}

.elfinder-rtl .elfinder-button {
    float: right;
}

.elfinder-touch .elfinder-button {
    min-width: 20px;
    height: 20px;
}

.elfinder .ui-icon-search {
    cursor: pointer;
}

/* separator between buttons, required for berder between button with ui color */
.elfinder-toolbar-button-separator {
    float: left;
    padding: 0;
    height: 24px;
    border-top: 0 solid;
    border-right: 0 solid;
    border-bottom: 0 solid;
    width: 0;
}

.elfinder-rtl .elfinder-toolbar-button-separator {
    float: right;
}

.elfinder-touch .elfinder-toolbar-button-separator {
    height: 28px;
}

/* change icon opacity^ not button */
.elfinder .elfinder-button.ui-state-disabled {
    opacity: 1;
    filter: Alpha(Opacity=100);
}

.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon,
.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text {
    opacity: .4;
    filter: Alpha(Opacity=40);
}

/* rtl enviroment */
.elfinder-rtl .elfinder-buttonset {
    float: right;
}

/* icon inside button */
.elfinder-button-icon {
    width: 16px;
    height: 16px;
    display: inline-block;
    background: url('../img/toolbar.png') no-repeat;
}

.elfinder-button-text {
    position: relative;
    display: inline-block;
    top: -4px;
    margin: 0 2px;
    font-size: 12px;
}

.elfinder-touch .elfinder-button-icon {
    -moz-transform-origin: top left;
    -moz-transform: scale(1.25);
    zoom: 1.25;
}

.elfinder-touch .elfinder-button-text {
    -moz-transform: translate(3px, 3px);
    top: -5px;
}

/* buttons icons */
.elfinder-button-icon-home {
    background-position: 0 0;
}

.elfinder-button-icon-back {
    background-position: 0 -112px;
}

.elfinder-button-icon-forward {
    background-position: 0 -128px;
}

.elfinder-button-icon-up {
    background-position: 0 -144px;
}

.elfinder-button-icon-dir {
    background-position: 0 -16px;
}

.elfinder-button-icon-opendir {
    background-position: 0 -32px;
}

.elfinder-button-icon-reload {
    background-position: 0 -160px;
}

.elfinder-button-icon-open {
    background-position: 0 -176px;
}

.elfinder-button-icon-mkdir {
    background-position: 0 -192px;
}

.elfinder-button-icon-mkfile {
    background-position: 0 -208px;
}

.elfinder-button-icon-rm {
    background-position: 0 -832px;
}

.elfinder-button-icon-trash {
    background-position: 0 -224px;
}

.elfinder-button-icon-restore {
    background-position: 0 -816px;
}

.elfinder-button-icon-copy {
    background-position: 0 -240px;
}

.elfinder-button-icon-cut {
    background-position: 0 -256px;
}

.elfinder-button-icon-paste {
    background-position: 0 -272px;
}

.elfinder-button-icon-getfile {
    background-position: 0 -288px;
}

.elfinder-button-icon-duplicate {
    background-position: 0 -304px;
}

.elfinder-button-icon-rename {
    background-position: 0 -320px;
}

.elfinder-button-icon-edit {
    background-position: 0 -336px;
}

.elfinder-button-icon-quicklook {
    background-position: 0 -352px;
}

.elfinder-button-icon-upload {
    background-position: 0 -368px;
}

.elfinder-button-icon-download {
    background-position: 0 -384px;
}

.elfinder-button-icon-info {
    background-position: 0 -400px;
}

.elfinder-button-icon-extract {
    background-position: 0 -416px;
}

.elfinder-button-icon-archive {
    background-position: 0 -432px;
}

.elfinder-button-icon-view {
    background-position: 0 -448px;
}

.elfinder-button-icon-view-list {
    background-position: 0 -464px;
}

.elfinder-button-icon-help {
    background-position: 0 -480px;
}

.elfinder-button-icon-resize {
    background-position: 0 -512px;
}

.elfinder-button-icon-link {
    background-position: 0 -528px;
}

.elfinder-button-icon-search {
    background-position: 0 -561px;
}

.elfinder-button-icon-sort {
    background-position: 0 -577px;
}

.elfinder-button-icon-rotate-r {
    background-position: 0 -625px;
}

.elfinder-button-icon-rotate-l {
    background-position: 0 -641px;
}

.elfinder-button-icon-netmount {
    background-position: 0 -688px;
}

.elfinder-button-icon-netunmount {
    background-position: 0 -96px;
}

.elfinder-button-icon-places {
    background-position: 0 -704px;
}

.elfinder-button-icon-chmod {
    background-position: 0 -48px;
}

.elfinder-button-icon-accept {
    background-position: 0 -736px;
}

.elfinder-button-icon-menu {
    background-position: 0 -752px;
}

.elfinder-button-icon-colwidth {
    background-position: 0 -768px;
}

.elfinder-button-icon-fullscreen {
    background-position: 0 -784px;
}

.elfinder-button-icon-unfullscreen {
    background-position: 0 -800px;
}

.elfinder-button-icon-empty {
    background-position: 0 -848px;
}

.elfinder-button-icon-undo {
    background-position: 0 -864px;
}

.elfinder-button-icon-redo {
    background-position: 0 -880px;
}

.elfinder-button-icon-preference {
    background-position: 0 -896px;
}

.elfinder-button-icon-mkdirin {
    background-position: 0 -912px;
}

.elfinder-button-icon-selectall {
    background-position: 0 -928px;
}

.elfinder-button-icon-selectnone {
    background-position: 0 -944px;
}

.elfinder-button-icon-selectinvert {
    background-position: 0 -960px;
}

.elfinder-button-icon-opennew {
    background-position: 0 -976px;
}

.elfinder-button-icon-hide {
    background-position: 0 -992px;
}

.elfinder-button-icon-text {
    background-position: 0 -1008px;
}

/* button icon mirroring for rtl */
.elfinder-rtl .elfinder-button-icon-back,
.elfinder-rtl .elfinder-button-icon-forward,
.elfinder-rtl .elfinder-button-icon-getfile,
.elfinder-rtl .elfinder-button-icon-help,
.elfinder-rtl .elfinder-button-icon-redo,
.elfinder-rtl .elfinder-button-icon-rename,
.elfinder-rtl .elfinder-button-icon-search,
.elfinder-rtl .elfinder-button-icon-undo,
.elfinder-rtl .elfinder-button-icon-view-list,
.elfinder-rtl .ui-icon-search {
    -ms-transform: scale(-1, 1);
    -webkit-transform: scale(-1, 1);
    transform: scale(-1, 1);
}

/* button with dropdown menu*/
.elfinder .elfinder-menubutton {
    overflow: visible;
}

/* button with spinner icon */
.elfinder-button-icon-spinner {
    background: url("../img/spinner-mini.gif") center center no-repeat;
}

/* menu */
.elfinder-button-menu {
    position: absolute;
    margin-top: 24px;
    padding: 3px 0;
    overflow-y: auto;
}

.elfinder-touch .elfinder-button-menu {
    margin-top: 30px;
}

/* menu item */
.elfinder-button-menu-item {
    white-space: nowrap;
    cursor: default;
    padding: 5px 19px;
    position: relative;
}

.elfinder-touch .elfinder-button-menu-item {
    padding: 12px 19px
}

/* fix hover ui class */
.elfinder-button-menu .ui-state-hover {
    border: 0 solid;
}

.elfinder-button-menu-item-separated {
    border-top: 1px solid #ccc;
}

.elfinder-button-menu-item .ui-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    left: 2px;
    top: 50%;
    margin-top: -8px;
    display: none;
}

.elfinder-button-menu-item-selected .ui-icon {
    display: block;
}

.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s {
    display: none;
}

.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n {
    display: none;
}

/* hack for upload button */
.elfinder-button form {
    position: absolute;
    top: 0;
    right: 0;
    opacity: 0;
    filter: Alpha(Opacity=0);
    cursor: pointer;
}

.elfinder .elfinder-button form input {
    background: transparent;
    cursor: default;
}

/* search "button" */
.elfinder .elfinder-button-search {
    border: 0 solid;
    background: transparent;
    padding: 0;
    margin: 1px 4px;
    height: auto;
    min-height: 26px;
    width: 70px;
    overflow: visible;
}

.elfinder .elfinder-button-search.ui-state-active {
    width: 220px;
}

/* search "pull down menu" */
.elfinder .elfinder-button-search-menu {
    font-size: 8pt;
    text-align: center;
    width: auto;
    min-width: 180px;
    position: absolute;
    top: 30px;
    padding-right: 5px;
    padding-left: 5px;
}

.elfinder-ltr .elfinder-button-search-menu {
    right: 22px;
    left: auto;
}

.elfinder-rtl .elfinder-button-search-menu {
    right: auto;
    left: 22px;
}

.elfinder-touch .elfinder-button-search-menu {
    top: 34px;
}

.elfinder .elfinder-button-search-menu div {
    margin-left: auto;
    margin-right: auto;
    margin-top: 5px;
    margin-bottom: 5px;
    display: table;
}

.elfinder .elfinder-button-search-menu div .ui-state-hover {
    border: 1px solid;
}

/* ltr/rte enviroment */
.elfinder-ltr .elfinder-button-search {
    float: right;
    margin-right: 10px;
}

.elfinder-rtl .elfinder-button-search {
    float: left;
    margin-left: 10px;
}

.elfinder-rtl .ui-controlgroup > .ui-controlgroup-item {
    float: right;
}

/* search text field */
.elfinder-button-search input[type=text] {
    box-sizing: border-box;
    width: 100%;
    height: 26px;
    padding: 0 20px;
    line-height: 22px;
    border: 0 solid;
    border: 1px solid #aaa;
    -moz-border-radius: 12px;
    -webkit-border-radius: 12px;
    border-radius: 12px;
    outline: 0px solid;
}

.elfinder-button-search input::-ms-clear {
    display: none;
}

.elfinder-touch .elfinder-button-search input {
    height: 30px;
    line-height: 28px;
}

.elfinder-rtl .elfinder-button-search input {
    direction: rtl;
}

/* icons */
.elfinder-button-search .ui-icon {
    position: absolute;
    height: 18px;
    top: 50%;
    margin: -8px 4px 0 4px;
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-button-search-menu .ui-checkboxradio-icon {
    display: none;
}

/* search/close icons */
.elfinder-ltr .elfinder-button-search .ui-icon-search {
    left: 0;
}

.elfinder-rtl .elfinder-button-search .ui-icon-search {
    right: 0;
}

.elfinder-ltr .elfinder-button-search .ui-icon-close {
    right: 0;
}

.elfinder-rtl .elfinder-button-search .ui-icon-close {
    left: 0;
}

/* toolbar swipe handle */
.elfinder-toolbar-swipe-handle {
    position: absolute;
    top: 0px;
    left: 0px;
    height: 50px;
    width: 100%;
    pointer-events: none;
    background: linear-gradient(to bottom,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 2px,
    rgba(216, 223, 230, 0.3) 5px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

lib/css/cwd.css000064400000105221147361034410007375 0ustar00/******************************************************************/
/*                     CURRENT DIRECTORY STYLES                   */
/******************************************************************/
/* cwd container to avoid selectable on scrollbar */
.elfinder-cwd-wrapper {
    overflow: auto;
    position: relative;
    padding: 2px;
    margin: 0;
}

.elfinder-cwd-wrapper-list {
    padding: 0;
}

/* container */
.elfinder-cwd {
    position: absolute;
    top: 0;
    cursor: default;
    padding: 0;
    margin: 0;
    -ms-touch-action: auto;
    touch-action: auto;
    min-width: 100%;
}

.elfinder-ltr .elfinder-cwd {
    left: 0;
}

.elfinder-rtl .elfinder-cwd {
    right: 0;
}

.elfinder-cwd.elfinder-table-header-sticky {
    position: -webkit-sticky;
    position: -ms-sticky;
    position: sticky;
    top: 0;
    left: auto;
    right: auto;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: -ms-max-content;
    width: max-content;
    height: 0;
    overflow: visible;
}

.elfinder-cwd.elfinder-table-header-sticky table {
    border-top: 2px solid;
    padding-top: 0;
}

.elfinder-cwd.elfinder-table-header-sticky td {
    display: inline-block;
}

.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table {
    border-top: 2px solid transparent;
}

/* fixed table header container */
.elfinder-cwd-fixheader .elfinder-cwd {
    position: relative;
}

/* container active on dropenter */
.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active {
    outline: 2px solid #8cafed;
    outline-offset: -2px;
}

.elfinder-cwd-wrapper-empty .elfinder-cwd:after {
    display: block;
    position: absolute;
    height: auto;
    width: 90%;
    width: calc(100% - 20px);
    position: absolute;
    top: 50%;
    left: 50%;
    -ms-transform: translateY(-50%) translateX(-50%);
    -webkit-transform: translateY(-50%) translateX(-50%);
    transform: translateY(-50%) translateX(-50%);
    line-height: 1.5em;
    text-align: center;
    white-space: pre-wrap;
    opacity: 0.6;
    filter: Alpha(Opacity=60);
    font-weight: bold;
}

.elfinder-cwd-file .elfinder-cwd-select {
    position: absolute;
    top: 0px;
    left: 0px;
    background-color: transparent;
    opacity: .4;
    filter: Alpha(Opacity=40);
}

.elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select {
    width: 30px;
    height: 30px;
}

.elfinder-cwd-file.ui-selected .elfinder-cwd-select {
    opacity: .8;
    filter: Alpha(Opacity=80);
}

.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select {
    left: auto;
    right: 0px;
}

.elfinder .elfinder-cwd-selectall {
    position: absolute;
    width: 30px;
    height: 30px;
    top: 0px;
    opacity: .8;
    filter: Alpha(Opacity=80);
}

.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall {
    display: none;
}

/************************** ICONS VIEW ********************************/

.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall {
    text-align: right;
    right: 18px;
    left: auto;
}

.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall {
    text-align: left;
    right: auto;
    left: 18px;
}

.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
    right: 0px;
}

.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
    left: 0px;
}

.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover {
    background-color: transparent;
}

/* file container */
.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 120px;
    height: 90px;
    padding-bottom: 2px;
    cursor: default;
    border: none;
    position: relative;
}

.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active {
    border: none;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file {
    float: left;
    margin: 0 3px 2px 0;
}

.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file {
    float: right;
    margin: 0 0 5px 3px;
}

/* remove ui hover class border */
.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover {
    border: 0 solid;
}

/* icon wrapper to create selected highlight around icon */
.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 52px;
    height: 52px;
    margin: 1px auto 1px auto;
    padding: 2px;
    position: relative;
}

/*** Custom Icon Size size1 - size3 ***/
/* type badge */
.elfinder-cwd-size1 .elfinder-cwd-icon:before,
.elfinder-cwd-size2 .elfinder-cwd-icon:before,
.elfinder-cwd-size3 .elfinder-cwd-icon:before {
    top: 3px;
    display: block;
}

/* size1 */
.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 120px;
    height: 112px;
}

.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 74px;
    height: 74px;
}

.elfinder-cwd-size1 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(1.5);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(1.5);
    transform-origin: top center;
    transform: scale(1.5);
}
.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
     -ms-transform-origin: top left;
    -ms-transform: scale(1.18) translate(0, 15%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(1.18) translate(0, 15%);
    transform-origin: top left;
    transform: scale(1.18) translate(0, 15%); 
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1) translate(10px, -5px);
    -webkit-transform: scale(1) translate(10px, -5px);
    transform: scale(1) translate(10px, -5px);
}

.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 72px;
    height: 72px;
    -moz-border-radius: 6px;
    -webkit-border-radius: 6px;
    border-radius: 6px;
}

/* size2 */
.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 140px;
    height: 134px;
}

.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 98px;
    height: 98px;
}

.elfinder-cwd-size2 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(2);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(2);
    transform-origin: top center;
    transform: scale(2);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(1.55) translate(0, 18%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(1.55) translate(0, 18%);
    transform-origin: top left;
    transform: scale(1.55) translate(0, 18%);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1.1) translate(0px, 10px);
    -webkit-transform: scale(1.1) translate(0px, 10px);
    transform: scale(1.1) translate(0px, 10px);
}

.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 96px;
    height: 96px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

/* size3 */
.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file {
    width: 174px;
    height: 158px;
}

.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
    width: 122px;
    height: 72px;
}


.elfinder-cwd-size3 .elfinder-cwd-icon {
    -ms-transform-origin: top center;
    -ms-transform: scale(1.5);
    -webkit-transform-origin: top center;
    -webkit-transform: scale(1.5);
    transform-origin: top center;
    transform: scale(1.5);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    -ms-transform-origin: top left;
    -ms-transform: scale(1.18) translate(0, 20%);
    -webkit-transform-origin: top left;
    -webkit-transform: scale(1.18) translate(0, 20%);
    transform-origin: top left;
    transform: scale(1.18) translate(0, 20%);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    -ms-transform: scale(1.2) translate(-9px, 22px);
    -webkit-transform: scale(1.2) translate(-9px, 22px);
    transform: scale(1.2) translate(-9px, 22px);
}

.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl {
    -ms-transform-origin: center center;
    -ms-transform: scale(1);
    -webkit-transform-origin: center center;
    -webkit-transform: scale(1);
    transform-origin: center center;
    transform: scale(1);
    width: 72px; 
    height: 72px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
}

/* file name place */
.elfinder-cwd-view-icons .elfinder-cwd-filename {
    text-align: center;
    max-height: 2.4em;
    line-height: 1.2em;
    white-space: pre-line;
    overflow: hidden;
    text-overflow: ellipsis;
    -o-text-overflow: ellipsis;
    margin: 3px 1px 0 1px;
    padding: 1px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
    /* for webkit CSS3 */
    word-break: break-word;
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

/* permissions/symlink markers */
.elfinder-cwd-view-icons .elfinder-perms {
    bottom: 4px;
    right: 2px;
}

.elfinder-cwd-view-icons .elfinder-lock {
    top: -3px;
    right: -2px;
}

.elfinder-cwd-view-icons .elfinder-symlink {
    bottom: 6px;
    left: 0px;
}

/* icon/thumbnail */
.elfinder-cwd-icon {
    display: block;
    width: 48px;
    height: 48px;
    margin: 0 auto;
    background-image: url('../img/icons-big.svg');
    background-image: url('../img/icons-big.png') \9;
    background-position: 0 0;
    background-repeat: no-repeat;
    -moz-background-clip: padding;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
}

/* volume icon of root in folder */
.elfinder-navbar-root-local .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-image: url("../img/volume_icon_local.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-trash .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-image: url("../img/volume_icon_trash.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-ftp .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-image: url("../img/volume_icon_ftp.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-sql .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-image: url("../img/volume_icon_sql.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-image: url("../img/volume_icon_dropbox.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-image: url("../img/volume_icon_googledrive.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-image: url("../img/volume_icon_onedrive.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-box .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-image: url("../img/volume_icon_box.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-navbar-root-zip .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-image: url("../img/volume_icon_zip.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

.elfinder-navbar-root-network .elfinder-cwd-icon,
.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon,
.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-image: url("../img/volume_icon_network.png") \9;
    background-position: 0 0;
    background-size: contain;
}

.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 1px -1px;
}

/* type badge in "icons" view */
.elfinder-cwd-icon:before {
    content: none;
    position: absolute;
    left: 0px;
    top: 5px;
    min-width: 20px;
    max-width: 84px;
    text-align: center;
    padding: 0px 4px 1px;
    border-radius: 4px;
    font-family: Verdana;
    font-size: 10px;
    line-height: 1.3em;
    -webkit-transform: scale(0.9);
    -moz-transform: scale(0.9);
    -ms-transform: scale(0.9);
    -o-transform: scale(0.9);
    transform: scale(0.9);
}

.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
    left: -10px;
}

/* addtional type badge name */
.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before {
    content: 'ts'
}

.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before {
    content: 'dash'
}

.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before {
    content: 'hls'
}

.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before {
    content: 'c++'
}

/* thumbnail image */
.elfinder-cwd-icon.elfinder-cwd-bgurl {
    background-position: center center;
    background-repeat: no-repeat;
    -moz-background-size: contain;
    background-size: contain;
}

/* thumbnail self */
.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself {
    -moz-background-size: cover;
    background-size: cover;
}

/* thumbnail crop*/
.elfinder-cwd-icon.elfinder-cwd-bgurl {
    -moz-background-size: cover;
    background-size: cover;
}

.elfinder-cwd-icon.elfinder-cwd-bgurl:after {
    content: ' ';
}

.elfinder-cwd-bgurl:after {
    position: relative;
    display: inline-block;
    top: 36px;
    left: -38px;
    width: 48px;
    height: 48px;
    background-image: url('../img/icons-big.svg');
    background-image: url('../img/icons-big.png') \9;
    background-repeat: no-repeat;
    background-size: auto !important;
    opacity: .8;
    filter: Alpha(Opacity=60);
    -webkit-transform-origin: 54px -24px;
    -webkit-transform: scale(.6);
    -moz-transform-origin: 54px -24px;
    -moz-transform: scale(.6);
    -ms-transform-origin: 54px -24px;
    -ms-transform: scale(.6);
    -o-transform-origin: 54px -24px;
    -o-transform: scale(.6);
    transform-origin: 54px -24px;
    transform: scale(.6);
}

/* thumbnail image and draging icon */
.elfinder-cwd-icon.elfinder-cwd-icon-drag {
    width: 48px;
    height: 48px;
}

/* thumbnail image and draging icon overlay none */
.elfinder-cwd-icon.elfinder-cwd-icon-drag:before,
.elfinder-cwd-icon.elfinder-cwd-icon-drag:after,
.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after,
.elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after {
    content: none;
}

/* "opened folder" icon on dragover */
.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon {
    background-position: 0 -100px;
}

.elfinder-cwd .elfinder-droppable-active {
    outline: 2px solid #8cafed;
    outline-offset: -2px;
}

/* mimetypes icons */
.elfinder-cwd-icon-directory {
    background-position: 0 -50px;
}

.elfinder-cwd-icon-application:after,
.elfinder-cwd-icon-application {
    background-position: 0 -150px;
}

.elfinder-cwd-icon-text:after,
.elfinder-cwd-icon-text {
    background-position: 0 -1350px;
}

.elfinder-cwd-icon-plain:after,
.elfinder-cwd-icon-plain,
.elfinder-cwd-icon-x-empty:after,
.elfinder-cwd-icon-x-empty {
    background-position: 0 -200px;
}

.elfinder-cwd-icon-image:after,
.elfinder-cwd-icon-vnd-adobe-photoshop:after,
.elfinder-cwd-icon-image,
.elfinder-cwd-icon-vnd-adobe-photoshop {
    background-position: 0 -250px;
}

.elfinder-cwd-icon-postscript:after,
.elfinder-cwd-icon-postscript {
    background-position: 0 -1550px;
}

.elfinder-cwd-icon-audio:after,
.elfinder-cwd-icon-audio {
    background-position: 0 -300px;
}

.elfinder-cwd-icon-video:after,
.elfinder-cwd-icon-video,
.elfinder-cwd-icon-flash-video,
.elfinder-cwd-icon-dash-xml,
.elfinder-cwd-icon-vnd-apple-mpegurl,
.elfinder-cwd-icon-x-mpegurl {
    background-position: 0 -350px;
}

.elfinder-cwd-icon-rtf:after,
.elfinder-cwd-icon-rtfd:after,
.elfinder-cwd-icon-rtf,
.elfinder-cwd-icon-rtfd {
    background-position: 0 -400px;
}

.elfinder-cwd-icon-pdf:after,
.elfinder-cwd-icon-pdf {
    background-position: 0 -450px;
}

.elfinder-cwd-icon-ms-excel,
.elfinder-cwd-icon-ms-excel:after,
.elfinder-cwd-icon-vnd-ms-excel,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-excel:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after {
    background-position: 0 -1450px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after {
    background-position: 0 -1700px
}

.elfinder-cwd-icon-vnd-ms-powerpoint,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-powerpoint:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after {
    background-position: 0 -1400px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after {
    background-position: 0 -1650px
}

.elfinder-cwd-icon-msword,
.elfinder-cwd-icon-msword:after,
.elfinder-cwd-icon-vnd-ms-word,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12,
.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after,
.elfinder-cwd-icon-vnd-ms-word:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template,
.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after {
    background-position: 0 -1500px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-text,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-text:after {
    background-position: 0 -1750px
}

.elfinder-cwd-icon-vnd-ms-office,
.elfinder-cwd-icon-vnd-ms-office:after {
    background-position: 0 -500px
}

.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-database,
.elfinder-cwd-icon-vnd-oasis-opendocument-database:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after,
.elfinder-cwd-icon-vnd-oasis-opendocument-image,
.elfinder-cwd-icon-vnd-oasis-opendocument-image:after,
.elfinder-cwd-icon-vnd-openofficeorg-extension,
.elfinder-cwd-icon-vnd-openofficeorg-extension:after {
    background-position: 0 -1600px
}

.elfinder-cwd-icon-html:after,
.elfinder-cwd-icon-html {
    background-position: 0 -550px;
}

.elfinder-cwd-icon-css:after,
.elfinder-cwd-icon-css {
    background-position: 0 -600px;
}

.elfinder-cwd-icon-javascript:after,
.elfinder-cwd-icon-x-javascript:after,
.elfinder-cwd-icon-javascript,
.elfinder-cwd-icon-x-javascript {
    background-position: 0 -650px;
}

.elfinder-cwd-icon-x-perl:after,
.elfinder-cwd-icon-x-perl {
    background-position: 0 -700px;
}

.elfinder-cwd-icon-x-python:after,
.elfinder-cwd-icon-x-python {
    background-position: 0 -750px;
}

.elfinder-cwd-icon-x-ruby:after,
.elfinder-cwd-icon-x-ruby {
    background-position: 0 -800px;
}

.elfinder-cwd-icon-x-sh:after,
.elfinder-cwd-icon-x-shellscript:after,
.elfinder-cwd-icon-x-sh,
.elfinder-cwd-icon-x-shellscript {
    background-position: 0 -850px;
}

.elfinder-cwd-icon-x-c:after,
.elfinder-cwd-icon-x-csrc:after,
.elfinder-cwd-icon-x-chdr:after,
.elfinder-cwd-icon-x-c--:after,
.elfinder-cwd-icon-x-c--src:after,
.elfinder-cwd-icon-x-c--hdr:after,
.elfinder-cwd-icon-x-java:after,
.elfinder-cwd-icon-x-java-source:after,
.elfinder-cwd-icon-x-c,
.elfinder-cwd-icon-x-csrc,
.elfinder-cwd-icon-x-chdr,
.elfinder-cwd-icon-x-c--,
.elfinder-cwd-icon-x-c--src,
.elfinder-cwd-icon-x-c--hdr,
.elfinder-cwd-icon-x-java,
.elfinder-cwd-icon-x-java-source {
    background-position: 0 -900px;
}

.elfinder-cwd-icon-x-php:after,
.elfinder-cwd-icon-x-php {
    background-position: 0 -950px;
}

.elfinder-cwd-icon-xml:after,
.elfinder-cwd-icon-xml {
    background-position: 0 -1000px;
}

.elfinder-cwd-icon-zip:after,
.elfinder-cwd-icon-x-zip:after,
.elfinder-cwd-icon-x-xz:after,
.elfinder-cwd-icon-x-7z-compressed:after,
.elfinder-cwd-icon-zip,
.elfinder-cwd-icon-x-zip,
.elfinder-cwd-icon-x-xz,
.elfinder-cwd-icon-x-7z-compressed {
    background-position: 0 -1050px;
}

.elfinder-cwd-icon-x-gzip:after,
.elfinder-cwd-icon-x-tar:after,
.elfinder-cwd-icon-x-gzip,
.elfinder-cwd-icon-x-tar {
    background-position: 0 -1100px;
}

.elfinder-cwd-icon-x-bzip:after,
.elfinder-cwd-icon-x-bzip2:after,
.elfinder-cwd-icon-x-bzip,
.elfinder-cwd-icon-x-bzip2 {
    background-position: 0 -1150px;
}

.elfinder-cwd-icon-x-rar:after,
.elfinder-cwd-icon-x-rar-compressed:after,
.elfinder-cwd-icon-x-rar,
.elfinder-cwd-icon-x-rar-compressed {
    background-position: 0 -1200px;
}

.elfinder-cwd-icon-x-shockwave-flash:after,
.elfinder-cwd-icon-x-shockwave-flash {
    background-position: 0 -1250px;
}

.elfinder-cwd-icon-group {
    background-position: 0 -1300px;
}

/* textfield inside icon */
.elfinder-cwd-filename input {
    width: 100%;
    border: none;
    margin: 0;
    padding: 0;
}

.elfinder-cwd-view-icons input {
    text-align: center;
}

.elfinder-cwd-view-icons textarea {
    width: 100%;
    border: 0px solid;
    margin: 0;
    padding: 0;
    text-align: center;
    overflow: hidden;
    resize: none;
}

.elfinder-cwd-view-icons {
    text-align: center;
}

/************************************  LIST VIEW ************************************/


.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after {
    display: none;
}

.elfinder-cwd table {
    width: 100%;
    border-collapse: separate;
    border: 0 solid;
    margin: 0 0 10px 0;
    border-spacing: 0;
    box-sizing: padding-box;
    padding: 2px;
    position: relative;
}

.elfinder-cwd table td {
    /* fix conflict with Bootstrap CSS */
    box-sizing: content-box;
}

.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader {
    position: absolute;
    overflow: hidden;
}

.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
    content: '';
    position: absolute;
    width: 100%;
    top: 0;
    height: 3px;
    background-color: white;
}

.elfinder-droppable-active + .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
    background-color: #8cafed;
}

.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table {
    table-layout: fixed;
}

.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader {
    position: relative;
}

.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall {
    text-align: left;
    right: auto;
    left: 0px;
    padding-top: 3px;
}

.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall {
    text-align: right;
    right: 0px;
    left: auto;
    padding-top: 3px;
}

.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall {
    padding-top: 4px;
}

.elfinder .elfinder-cwd table thead tr {
    border-left: 0 solid;
    border-top: 0 solid;
    border-right: 0 solid;
}

.elfinder .elfinder-cwd table thead td {
    padding: 4px 14px;
    padding-right: 25px;
}

.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding: 4px 14px 4px 22px;
}

.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding: 4px 22px 4px 14px;
}

.elfinder-touch .elfinder-cwd table thead td,
.elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
    padding-top: 8px;
    padding-bottom: 8px;
}

.elfinder .elfinder-cwd table thead td.ui-state-active {
    background: #ebf1f6;
    background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ebf1f6), color-stop(50%, #abd3ee), color-stop(51%, #89c3eb), color-stop(100%, #d5ebfb));
    background: -webkit-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -o-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: -ms-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    background: linear-gradient(to bottom, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0);
}

.elfinder .elfinder-cwd table td {
    padding: 0 12px;
    white-space: pre;
    overflow: hidden;
    text-align: right;
    cursor: default;
    border: 0 solid;
}

.elfinder .elfinder-cwd table tbody td:first-child {
    position: relative
}

.elfinder .elfinder-cwd table td div {
    box-sizing: content-box;
}

tr.elfinder-cwd-file td .elfinder-cwd-select {
    padding-top: 3px;
}

.elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select {
    width: 40px;
}

.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select {
    padding-top: 10px;
}

.elfinder-touch .elfinder-cwd tr td {
    padding: 10px 12px;
}

.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td {
    padding: 13px 12px;
}

.elfinder-ltr .elfinder-cwd table td {
    text-align: left;
}

.elfinder-ltr .elfinder-cwd table td:first-child {
    text-align: left;
}

.elfinder-rtl .elfinder-cwd table td {
    text-align: left;
}

.elfinder-rtl .elfinder-cwd table td:first-child {
    text-align: right;
}

.elfinder-odd-row {
    background: #eee;
}

/* filename container */
.elfinder-cwd-view-list .elfinder-cwd-file-wrapper {
    width: 97%;
    position: relative;
}

/* filename container in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper {
    margin-left: 8px;
}

.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper {
    margin-right: 8px;
}

.elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-top: 4px;
    padding-bottom: 4px;
    display: inline-block;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-left: 23px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename {
    padding-right: 23px;
}

/* premissions/symlink marker */
.elfinder-cwd-view-list .elfinder-perms,
.elfinder-cwd-view-list .elfinder-lock,
.elfinder-cwd-view-list .elfinder-symlink {
    margin-top: -6px;
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-cwd-view-list .elfinder-perms {
    bottom: -4px;
}

.elfinder-cwd-view-list .elfinder-lock {
    top: 0px;
}

.elfinder-cwd-view-list .elfinder-symlink {
    bottom: -4px;
}

/* markers in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms {
    left: 8px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-perms {
    right: -8px;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock {
    left: 10px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-lock {
    right: -10px;
}

.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink {
    left: -7px;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink {
    right: 7px;
}

/* file icon */
.elfinder-cwd-view-list td .elfinder-cwd-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 50%;
    margin-top: -8px;
    background-image: url(../img/icons-small.png);
}

/* icon in ltr/rtl enviroment */
.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon {
    left: 0;
}

.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon {
    right: 0;
}

/* type badge, thumbnail image overlay */
.elfinder-cwd-view-list .elfinder-cwd-icon:before,
.elfinder-cwd-view-list .elfinder-cwd-icon:after {
    content: none;
}

/* table header resize handle */
.elfinder-cwd-view-list thead td .ui-resizable-handle {
    height: 100%;
    top: 3px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle {
    top: -4px;
    margin: 10px;
}

.elfinder-cwd-view-list thead td .ui-resizable-e {
    right: -7px;
}

.elfinder-cwd-view-list thead td .ui-resizable-w {
    left: -7px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e {
    right: -16px;
}

.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w {
    left: -16px;
}

/* empty message */
.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after {
    margin-top: 0;
}

/* overlay message board */
.elfinder-cwd-message-board {
    position: absolute;
    position: -webkit-sticky;
    position: sticky;
    width: 100%;
    height: calc(100% - 0.01px); /* for Firefox scroll problem */
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
    pointer-events: none;
    background-color: transparent;
}

/* overlay message board for trash */
.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board {
    background-image: url(../img/trashmesh.png);
}

.elfinder-cwd-message-board .elfinder-cwd-trash {
    position: absolute;
    bottom: 0;
    font-size: 30px;
    width: 100%;
    text-align: right;
    display: none;
}

.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash {
    text-align: left;
}

.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash {
    font-size: 20px;
}

.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash {
    display: block;
    opacity: .3;
}

/* overlay message board for expires */
.elfinder-cwd-message-board .elfinder-cwd-expires {
    position: absolute;
    bottom: 0;
    font-size: 24px;
    width: 100%;
    text-align: right;
    opacity: .25;
}

.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires {
    text-align: left;
}

.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires {
    font-size: 20px;
}
lib/css/navbar.css000064400000021711147361034410010072 0ustar00/*********************************************/
/*              NAVIGATION PANEL             */
/*********************************************/

/* container */
.elfinder .elfinder-navbar {
    width: 230px;
    padding: 3px 5px;
    background-image: none;
    border-top: 0 solid;
    border-bottom: 0 solid;
    overflow: auto;
    position: relative;
}

.elfinder .elfinder-navdock {
    box-sizing: border-box;
    width: 230px;
    height: auto;
    position: absolute;
    bottom: 0;
    overflow: auto;
}

.elfinder-navdock .ui-resizable-n {
    top: 0;
    height: 20px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar {
    float: left;
    border-left: 0 solid;
}

.elfinder-rtl .elfinder-navbar {
    float: right;
    border-right: 0 solid;
}

.elfinder-ltr .ui-resizable-e {
    margin-left: 10px;
}

/* folders tree container */
.elfinder-tree {
    display: table;
    width: 100%;
    margin: 0 0 .5em 0;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

/* folder */
.elfinder-navbar-dir {
    position: relative;
    display: block;
    white-space: nowrap;
    padding: 3px 12px;
    margin: 0;
    outline: 0px solid;
    border: 1px solid transparent;
    cursor: default;
}

.elfinder-touch .elfinder-navbar-dir {
    padding: 12px 12px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-dir {
    padding-left: 35px;
}

.elfinder-rtl .elfinder-navbar-dir {
    padding-right: 35px;
}

/* arrow before icon */
.elfinder-navbar-arrow {
    width: 12px;
    height: 14px;
    position: absolute;
    display: none;
    top: 50%;
    margin-top: -8px;
    background-image: url("../img/arrows-normal.png");
    background-repeat: no-repeat;
}

.elfinder-ltr .elfinder-navbar-arrow {
    left: 0;
}

.elfinder-rtl .elfinder-navbar-arrow {
    right: 0;
}

.elfinder-touch .elfinder-navbar-arrow {
    -moz-transform-origin: top left;
    -moz-transform: scale(1.4);
    zoom: 1.4;
    margin-bottom: 7px;
}

.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow {
    left: -3px;
    margin-right: 20px;
}

.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow {
    right: -3px;
    margin-left: 20px;
}

.ui-state-active .elfinder-navbar-arrow {
    background-image: url("../img/arrows-active.png");
}

/* collapsed/expanded arrow view */
.elfinder-navbar-collapsed .elfinder-navbar-arrow {
    display: block;
}

.elfinder-subtree-chksubdir .elfinder-navbar-arrow {
    opacity: .25;
    filter: Alpha(Opacity=25);
}

/* arrow ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow {
    background-position: 0 4px;
}

.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow {
    background-position: 0 -10px;
}

.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,
.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow {
    background-position: 0 -21px;
}

/* folder icon */
.elfinder-navbar-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 50%;
    margin-top: -8px;
    background-image: url("../img/toolbar.png");
    background-repeat: no-repeat;
    background-position: 0 -16px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-icon {
    left: 14px;
}

.elfinder-rtl .elfinder-navbar-icon {
    right: 14px;
}

/* places icon */
.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon {
    background-position: 0 -704px;
}

/* root folder */
.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon,
.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon {
    background-position: 0 0;
    background-size: contain;
}

/* root icon of each volume "\9" for IE8 trick */
.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_local.svg");
    background-image: url("../img/volume_icon_local.png") \9;
}

.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_trash.svg");
    background-image: url("../img/volume_icon_trash.png") \9;
}

.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_ftp.svg");
    background-image: url("../img/volume_icon_ftp.png") \9;
}

.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_sql.svg");
    background-image: url("../img/volume_icon_sql.png") \9;
}

.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_dropbox.svg");
    background-image: url("../img/volume_icon_dropbox.png") \9;
}

.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_googledrive.svg");
    background-image: url("../img/volume_icon_googledrive.png") \9;
}

.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_onedrive.svg");
    background-image: url("../img/volume_icon_onedrive.png") \9;
}

.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_box.svg");
    background-image: url("../img/volume_icon_box.png") \9;
}

.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_zip.svg");
    background-image: url("../img/volume_icon_zip.png") \9;
}

.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon {
    background-image: url("../img/volume_icon_network.svg");
    background-image: url("../img/volume_icon_network.png") \9;
}

/* icon in active/hove/dropactive state */
.ui-state-active .elfinder-navbar-icon,
.elfinder-droppable-active .elfinder-navbar-icon,
.ui-state-hover .elfinder-navbar-icon {
    background-position: 0 -32px;
}

/* ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar-subtree {
    margin-left: 12px;
}

.elfinder-rtl .elfinder-navbar-subtree {
    margin-right: 12px;
}

/* spinner */
.elfinder-tree .elfinder-spinner {
    position: absolute;
    top: 50%;
    margin: -7px 0 0;
}

/* spinner ltr/rtl enviroment */
.elfinder-ltr .elfinder-tree .elfinder-spinner {
    left: 0;
    margin-left: -2px;
}

.elfinder-rtl .elfinder-tree .elfinder-spinner {
    right: 0;
    margin-right: -2px;
}

/* marker */
.elfinder-navbar .elfinder-perms,
.elfinder-navbar .elfinder-lock,
.elfinder-navbar .elfinder-symlink {
    opacity: .6;
    filter: Alpha(Opacity=60);
}

/* permissions marker */
.elfinder-navbar .elfinder-perms {
    bottom: -1px;
    margin-top: -8px;
}

/* locked marker */
.elfinder-navbar .elfinder-lock {
    top: -2px;
}

/* permissions/symlink markers ltr/rtl enviroment */
.elfinder-ltr .elfinder-navbar .elfinder-perms {
    left: 20px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-perms {
    right: 20px;
    transform: scale(0.8);
}

.elfinder-ltr .elfinder-navbar .elfinder-lock {
    left: 20px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-lock {
    right: 20px;
    transform: scale(0.8);
}

.elfinder-ltr .elfinder-navbar .elfinder-symlink {
    left: 8px;
    transform: scale(0.8);
}

.elfinder-rtl .elfinder-navbar .elfinder-symlink {
    right: 8px;
    transform: scale(0.8);
}

/* navbar input */
.elfinder-navbar input {
    width: 100%;
    border: 0px solid;
    margin: 0;
    padding: 0;
}

/* resizable */
.elfinder-navbar .ui-resizable-handle {
    width: 12px;
    background: transparent url('../img/resize.png') center center no-repeat;
}

.elfinder-nav-handle-icon {
    position: absolute;
    top: 50%;
    margin: -8px 2px 0 2px;
    opacity: .5;
    filter: Alpha(Opacity=50);
}

/* pager button */
.elfinder-navbar-pager {
    width: 100%;
    box-sizing: border-box;
    padding-top: 3px;
    padding-bottom: 3px;
}

.elfinder-touch .elfinder-navbar-pager {
    padding-top: 10px;
    padding-bottom: 10px;
}

.elfinder-places {
    border: none;
    margin: 0;
    padding: 0;
}

/* navbar swipe handle */
.elfinder-navbar-swipe-handle {
    position: absolute;
    top: 0px;
    height: 100%;
    width: 50px;
    pointer-events: none;
}

.elfinder-ltr .elfinder-navbar-swipe-handle {
    left: 0px;
    background: linear-gradient(to right,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 5px,
    rgba(216, 223, 230, 0.3) 8px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

.elfinder-rtl .elfinder-navbar-swipe-handle {
    right: 0px;
    background: linear-gradient(to left,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 5px,
    rgba(216, 223, 230, 0.3) 8px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}
lib/css/common.css000064400000015356147361034410010121 0ustar00/*********************************************/
/*            COMMON ELFINDER STUFFS         */
/*********************************************/

/* for old jQuery UI */
@font-face {
    font-family: 'Noto Sans';
    src: url('./../fonts/notosans/NotoSans-Regular.eot');
    src: url('./../fonts/notosans/NotoSans-Regular.eot?#iefix') format('embedded-opentype'),
        url('./../fonts/notosans/NotoSans-Regular.woff2') format('woff2'),
        url('./../fonts/notosans/NotoSans-Regular.woff') format('woff'),
        url('./../fonts/notosans/NotoSans-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
  }

.ui-front {
    z-index: 100;
}

/* style reset */
div.elfinder *,
div.elfinder :after,
div.elfinder :before {
    box-sizing: content-box;
}

div.elfinder fieldset {
    display: block;
    margin-inline-start: 2px;
    margin-inline-end: 2px;
    padding-block-start: 0.35em;
    padding-inline-start: 0.75em;
    padding-inline-end: 0.75em;
    padding-block-end: 0.625em;
    min-inline-size: min-content;
    border-width: 2px;
    border-style: groove;
    border-color: threedface;
    border-image: initial;
}

div.elfinder legend {
    display: block;
    padding-inline-start: 2px;
    padding-inline-end: 2px;
    border-width: initial;
    border-style: none;
    border-color: initial;
    border-image: initial;
    width: auto;
    margin-bottom: 0;
}

/* base container */
div.elfinder {
    padding: 0;
    position: relative;
    display: block;
    visibility: visible;
    font-size: 18px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

/* prevent auto zoom on iOS */
.elfinder-ios input,
.elfinder-ios select,
.elfinder-ios textarea {
    font-size: 16px !important;
}

/* full screen mode */
.elfinder.elfinder-fullscreen > .ui-resizable-handle {
    display: none;
}

.elfinder-font-mono {
    line-height: 2ex;
}

/* in lazy execution status */
.elfinder.elfinder-processing * {
    cursor: progress !important
}

.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after {
    position: absolute;
    top: 0;
    width: 100%;
    height: 3px;
    content: '';
    left: 0;
    background-image: url(../img/progress.gif);
    opacity: .6;
    pointer-events: none;
}

/* for disable select of Touch devices */
.elfinder *:not(input):not(textarea):not(select):not([contenteditable=true]),
.elfinder-contextmenu *:not(input):not(textarea):not(select):not([contenteditable=true]) {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;
}

.elfinder .overflow-scrolling-touch {
    -webkit-overflow-scrolling: touch;
}

/* right to left enviroment */
.elfinder-rtl {
    text-align: right;
    direction: rtl;
}

/* nav and cwd container */
.elfinder-workzone {
    padding: 0;
    position: relative;
    overflow: hidden;
}

/* dir/file permissions and symlink markers */
.elfinder-lock,
.elfinder-perms,
.elfinder-symlink {
    position: absolute;
    width: 16px;
    height: 16px;
    background-image: url(../img/toolbar.png);
    background-repeat: no-repeat;
    background-position: 0 -528px;
}

.elfinder-symlink {
}

/* noaccess */
.elfinder-na .elfinder-perms {
    background-position: 0 -96px;
}

/* read only */
.elfinder-ro .elfinder-perms {
    background-position: 0 -64px;
}

/* write only */
.elfinder-wo .elfinder-perms {
    background-position: 0 -80px;
}

/* volume type group */
.elfinder-group .elfinder-perms {
    background-position: 0 0px;
}

/* locked */
.elfinder-lock {
    background-position: 0 -656px;
}

/* drag helper */
.elfinder-drag-helper {
    top: 0px;
    left: 0px;
    width: 70px;
    height: 60px;
    padding: 0 0 0 25px;
    z-index: 100000;
    will-change: left, top;
}

.elfinder-drag-helper.html5-native {
    position: absolute;
    top: -1000px;
    left: -1000px;
}

/* drag helper status icon (default no-drop) */
.elfinder-drag-helper-icon-status {
    position: absolute;
    width: 16px;
    height: 16px;
    left: 42px;
    top: 60px;
    background: url('../img/toolbar.png') 0 -96px no-repeat;
    display: block;
}

/* show "up-arrow" icon for move item */
.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
    background-position: 0 -720px;
}

/* show "plus" icon when ctrl/shift pressed */
.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
    background-position: 0 -544px;
}

/* files num in drag helper */
.elfinder-drag-num {
    display: inline-box;
    position: absolute;
    top: 0;
    left: 0;
    width: auto;
    height: 14px;
    text-align: center;
    padding: 1px 3px 1px 3px;

    font-weight: bold;
    color: #fff;
    background-color: red;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

/* icon in drag helper */
.elfinder-drag-helper .elfinder-cwd-icon {
    margin: 0 0 0 -24px;
    float: left;
}

/* transparent overlay */
.elfinder-overlay {
    position: absolute;
    opacity: .2;
    filter: Alpha(Opacity=20);
}

/* panels under/below cwd (for search field etc) */
.elfinder .elfinder-panel {
    position: relative;
    background-image: none;
    padding: 7px 12px;
}

/* for html5 drag and drop */
[draggable=true] {
    -khtml-user-drag: element;
}

/* for place holder to content editable elements */
.elfinder [contentEditable=true]:empty:not(:focus):before {
    content: attr(data-ph);
}
/* bottom tray */
.elfinder div.elfinder-bottomtray {
    position: fixed;
    bottom: 0;
    max-width: 100%;
    opacity: .8;
}

.elfinder div.elfinder-bottomtray > div {
    top: initial;
    right: initial;
    left: initial;
}

.elfinder.elfinder-ltr div.elfinder-bottomtray {
    left: 0;
}

.elfinder.elfinder-rtl div.elfinder-bottomtray {
    right: 0;
}

/* tooltip */
.elfinder-ui-tooltip,
.elfinder .elfinder-ui-tooltip {
    font-size: 14px;
    padding: 2px 4px;
}

/* progressbar */
.elfinder-ui-progressbar {
    pointer-events: none;
    position: absolute;
    width: 0;
    height: 2px;
    top: 0px;
    border-radius: 2px;
    filter: blur(1px);
}

.elfinder-ltr .elfinder-ui-progressbar {
    left: 0;
}

.elfinder-rtl .elfinder-ui-progressbar {
    right: 0;
}

/* Word Break Pop*/
.ui-dialog.elfinder-dialog-info .elfinder-info-title .elfinder-cwd-icon + strong{ float: left; width: calc(100% - 65px); word-break: break-all; display: block; }
.ui-dialog.elfinder-dialog-info .elfinder-info-tb .elfinder-info-path,
.ui-dialog.elfinder-dialog-info .elfinder-info-tb .elfinder-info-link{
    word-break: break-all;
}

/*for default theme css*/
.wrap.wp-filemanager-wrap .ui-front.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-draggable.std42-dialog .ui-dialog-content.ui-widget-content .ui-helper-clearfix.elfinder-rm-title span.elfinder-cwd-icon:before {
    left: 0;
    top: 6px;
}
lib/css/quicklook.css000064400000026023147361034410010623 0ustar00/* quicklook window */
.elfinder-quicklook {
    position: absolute;
    background: url("../img/quicklook-bg.png");
    overflow: hidden;
    -moz-border-radius: 7px;
    -webkit-border-radius: 7px;
    border-radius: 7px;
    padding: 32px 0 40px 0;
}

.elfinder-navdock .elfinder-quicklook {
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
    border-radius: 0;
    font-size: 90%;
    overflow: auto;
}

.elfinder-quicklook.elfinder-touch {
    padding: 30px 0 40px 0;
}

.elfinder-quicklook .ui-resizable-se {
    width: 14px;
    height: 14px;
    right: 5px;
    bottom: 3px;
    background: url("../img/toolbar.png") 0 -496px no-repeat;
}

.elfinder-quicklook.elfinder-touch .ui-resizable-se {
    -moz-transform-origin: bottom right;
    -moz-transform: scale(1.5);
    zoom: 1.5;
}

/* quicklook fullscreen window */
.elfinder-quicklook.elfinder-quicklook-fullscreen {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: 0;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 0;
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
    -webkit-background-clip: padding-box;
    padding: 0;
    background: #000;
    display: block;
}

/* hide titlebar in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar,
.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle{ display: none; }

/* hide preview border in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-preview {
    border: 0 solid;
}

.elfinder-quicklook-cover {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    position: absolute;
}

.elfinder-quicklook-cover.elfinder-quicklook-coverbg {
    /* background need to catch mouse event over browser plugin (eg PDF preview) */
    background-color: #fff;
    opacity: 0.000001;
    filter: Alpha(Opacity=0.0001);
}

/* quicklook titlebar */
.elfinder-quicklook-titlebar {
    text-align: center;
    background: #777;
    position: absolute;
    left: 0;
    top: 0;
    width: calc(100% - 12px);
    height: 20px;
    -moz-border-radius-topleft: 7px;
    -webkit-border-top-left-radius: 7px;
    border-top-left-radius: 7px;
    -moz-border-radius-topright: 7px;
    -webkit-border-top-right-radius: 7px;
    border-top-right-radius: 7px;
    border: none;
    line-height: 1.2;
    padding: 6px;
}

.elfinder-navdock .elfinder-quicklook-titlebar {
    -moz-border-radius-topleft: 0;
    -webkit-border-top-left-radius: 0;
    border-top-left-radius: 0;
    -moz-border-radius-topright: 0;
    -webkit-border-top-right-radius: 0;
    border-top-right-radius: 0;
    cursor: default;
}

.elfinder-touch .elfinder-quicklook-titlebar {
    height: 30px;
}

/* window title */
.elfinder-quicklook-title {
    display: inline-block;
    white-space: nowrap;
    overflow: hidden;
}

.elfinder-touch .elfinder-quicklook-title {
    padding: 8px 0;
}

/* icon "close" in titlebar */
.elfinder-quicklook-titlebar-icon {
    position: absolute;
    left: 4px;
    top: 50%;
    margin-top: -8px;
    height: 16px;
    border: none;
}
.elfinder-touch .elfinder-quicklook-titlebar-icon {
    height: 22px;
}

.elfinder-quicklook-titlebar-icon .ui-icon {
    position: relative;
    margin: -9px 3px 0px 0px;
    cursor: pointer;
    border-radius: 10px;
    border: 1px solid;
    opacity: .7;
    filter: Alpha(Opacity=70);
}

.elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick {
    padding-left: 1px;
}

.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon {
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon {
    margin-top: -5px;
}

.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right {
    left: auto;
    right: 4px;
    direction: rtl;
}

.elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon {
    margin: -9px 0px 0px 3px;
}

.elfinder-touch .elfinder-quicklook-titlebar .ui-icon {
    -moz-transform-origin: center center;
    -moz-transform: scale(1.2);
    zoom: 1.2;
}

.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon {
    margin-right: 10px;
}

.elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon {
    margin-left: 10px;
}

/* main part of quicklook window */
.elfinder-quicklook-preview {
    overflow: hidden;
    position: relative;
    border: 0 solid;
    border-left: 1px solid transparent;
    border-right: 1px solid transparent;
    height: 100%;
}

.elfinder-navdock .elfinder-quicklook-preview {
    border-left: 0;
    border-right: 0;
}

.elfinder-quicklook-preview.elfinder-overflow-auto {
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

/* wrapper for file info/icon */
.elfinder-quicklook-info-wrapper {
    display: table;
    position: absolute;
    width: 100%;
    height: 100%;
    height: calc(100% - 80px);
    left: 0;
    top: 20px;
}

.elfinder-navdock .elfinder-quicklook-info-wrapper {
    height: calc(100% - 20px);
}

/* file info */
.elfinder-quicklook-info {
    display: table-cell;
    vertical-align: middle;
}

.elfinder-ltr .elfinder-quicklook-info {
    padding: 0 12px 0 112px;
}

.elfinder-rtl .elfinder-quicklook-info {
    padding: 0 112px 0 12px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info {
    padding: 0 0 0 80px;
}

.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info {
    padding: 0 80px 0 0;
}

/* file name in info */
.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child {
    color: #fff;
    font-weight: bold;
    padding-bottom: .5em;
}

/* other data in info */
.elfinder-quicklook-info-data {
    clear: both;
    padding-bottom: .2em;
    color: #fff;
}

.elfinder-quicklook-info-progress {
    width: 0;
    height: 4px;
    border-radius: 2px;
}

/* file icon */
.elfinder-quicklook .elfinder-cwd-icon {
    position: absolute;
    left: 32px;
    top: 50%;
    margin-top: -20px;
}

.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
    left: 16px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon {
    left: auto;
    right: 32px;
}

.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
    right: 6px;
}

.elfinder-quicklook .elfinder-cwd-icon:before {
    top: -10px;
}

.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before {
    left: 0;
    top: 5px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before {
    left: -14px;
}

.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after {
    left: -42px;
}

.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after {
    left: -12px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before {
    left: auto;
    right: 40px;
}

.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after {
    left: auto;
    right: 42px;
}

/* image in preview */
.elfinder-quicklook-preview > img,
.elfinder-quicklook-preview > div > canvas {
    display: block;
    margin: auto;
}

/* navigation bar on quicklook window bottom */
.elfinder-quicklook-navbar {
    position: absolute;
    left: 50%;
    bottom: 4px;
    width: 140px;
    height: 32px;
    padding: 0px;
    margin-left: -70px;
    border: 1px solid transparent;
    border-radius: 19px;
    -moz-border-radius: 19px;
    -webkit-border-radius: 19px;
}

/* navigation bar in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
    width: 188px;
    margin-left: -94px;
    padding: 5px;
    border: 1px solid #eee;
    background: #000;
    opacity: 0.4;
    filter: Alpha(Opacity=40);
}

/* show close icon in fullscreen mode */
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,
.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator {
    display: inline;
}

/* icons in navbar */
.elfinder-quicklook-navbar-icon {
    width: 32px;
    height: 32px;
    margin: 0 7px;
    float: left;
    background: url("../img/quicklook-icons.png") 0 0 no-repeat;

}

/* fullscreen icon */
.elfinder-quicklook-navbar-icon-fullscreen {
    background-position: 0 -64px;
}

/* exit fullscreen icon */
.elfinder-quicklook-navbar-icon-fullscreen-off {
    background-position: 0 -96px;
}

/* prev file icon */
.elfinder-quicklook-navbar-icon-prev {
    background-position: 0 0;
}

/* next file icon */
.elfinder-quicklook-navbar-icon-next {
    background-position: 0 -32px;
}

/* close icon */
.elfinder-quicklook-navbar-icon-close {
    background-position: 0 -128px;
    display: none;
}

/* icons separator */
.elfinder-quicklook-navbar-separator {
    width: 1px;
    height: 32px;
    float: left;
    border-left: 1px solid #fff;
    display: none;
}

/* text encoding selector */
.elfinder-quicklook-encoding {
    height: 40px;
}
.elfinder-quicklook-encoding > select {
    color: #fff;
    background: #000;
    border: 0;
    font-size: 12px;
    max-width: 100px;
    display: inline-block;
    position: relative;
    top: 6px;
    left: 5px;
}
.elfinder-navdock .elfinder-quicklook .elfinder-quicklook-encoding {
    display: none;
}


/* text files preview wrapper */
.elfinder-quicklook-preview-text-wrapper {
    width: 100%;
    height: 100%;
    background: #fff;
    color: #222;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

/* archive files preview wrapper */
.elfinder-quicklook-preview-archive-wrapper {
    width: 100%;
    height: 100%;
    background: #fff;
    color: #222;
    font-size: 90%;
    overflow: auto;
    -webkit-overflow-scrolling: touch
}

/* archive files preview header */
.elfinder-quicklook-preview-archive-wrapper strong {
    padding: 0 5px;
}

/* text preview */
pre.elfinder-quicklook-preview-text,
pre.elfinder-quicklook-preview-text.prettyprint {
    width: auto;
    height: auto;
    margin: 0;
    padding: 3px 9px;
    border: none;
    overflow: visible;
    background: #fff;
    -o-tab-size: 4;
    -moz-tab-size: 4;
    tab-size: 4;
}

.elfinder-quicklook-preview-charsleft hr {
    border: none;
    border-top: dashed 1px;
}

.elfinder-quicklook-preview-charsleft span {
    font-size: 90%;
    font-style: italic;
    cursor: pointer;
}

/* html/pdf preview */
.elfinder-quicklook-preview-html,
.elfinder-quicklook-preview-pdf,
.elfinder-quicklook-preview-iframe {
    width: 100%;
    height: 100%;
    background: #fff;
    margin: 0;
    border: none;
    display: block;
}

/* swf preview container */
.elfinder-quicklook-preview-flash {
    width: 100%;
    height: 100%;
}

/* audio preview container */
.elfinder-quicklook-preview-audio {
    width: 100%;
    position: absolute;
    bottom: 0;
    left: 0;
}

/* audio preview using embed */
embed.elfinder-quicklook-preview-audio {
    height: 30px;
    background: transparent;
}

/* video preview container */
.elfinder-quicklook-preview-video {
    width: 100%;
    height: 100%;
}

/* video.js error message */
.elfinder-quicklook-preview .vjs-error .vjs-error-display .vjs-modal-dialog-content {
    font-size: 12pt;
    padding: 0;
    color: #fff;
}

/* allow user select */
.elfinder .elfinder-quicklook .elfinder-quicklook-info *,
.elfinder .elfinder-quicklook .elfinder-quicklook-preview * {
    -webkit-user-select: auto;
    -moz-user-select: text;
    -khtml-user-select: text;
    user-select: text;
}
lib/css/fonts.css000064400000002455147361034410007756 0ustar00.elfinder-font-mono {
    font-family: "Ricty Diminished", "Myrica M", Consolas, "Courier New", Courier, Monaco, monospace;
    font-size: 1.1em;
}

.elfinder-contextmenu .elfinder-contextmenu-item span {
    font-size: .72em;
}

.elfinder-cwd-view-icons .elfinder-cwd-filename {
    font-size: .7em;
}

.elfinder-cwd-view-list td {
    font-size: .7em;
}

.std42-dialog .ui-dialog-titlebar {
    font-size: .82em;
}

.std42-dialog .ui-dialog-content {
    font-size: .72em;
}

.std42-dialog .ui-dialog-buttonpane {
    font-size: .76em;
}

.elfinder-info-tb {
    font-size: .9em;
}

.elfinder-upload-dropbox {
    font-size: 1.2em;
}

.elfinder-upload-dialog-or {
    font-size: 1.2em;
}

.dialogelfinder .dialogelfinder-drag {
    font-size: .9em;
}

.elfinder .elfinder-navbar {
    font-size: .72em;
}

.elfinder-place-drag .elfinder-navbar-dir {
    font-size: .9em;
}

.elfinder-quicklook-title {
    font-size: .7em;
    font-weight: normal;
}

.elfinder-quicklook-info-data {
    font-size: .72em;
}

.elfinder-quicklook-preview-text-wrapper {
    font-size: .9em;
}

.elfinder-button-menu-item {
    font-size: .72em;
}

.elfinder-button-search input {
    font-size: .8em;
}

.elfinder-statusbar div {
    font-size: .7em;
}

.elfinder-drag-num {
    font-size: 12px;
}

.elfinder-toast {
    font-size: .76em;
}

lib/css/dialog.css000064400000036311147361034410010062 0ustar00/*********************************************/
/*                DIALOGS STYLES             */
/*********************************************/

/* common dialogs class */
.std42-dialog {
    padding: 0;
    position: absolute;
    left: auto;
    right: auto;
    box-sizing: border-box;
}

.std42-dialog.elfinder-dialog-minimized {
    overFlow: hidden;
    position: relative;
    float: left;
    width: auto;
    cursor: pointer;
}

.elfinder-rtl .std42-dialog.elfinder-dialog-minimized {
    float: right;
}

.std42-dialog input {
    border: 1px solid;
}

/* titlebar */
.std42-dialog .ui-dialog-titlebar {
    border-left: 0 solid transparent;
    border-top: 0 solid transparent;
    border-right: 0 solid transparent;
    font-weight: normal;
    padding: .2em 1em;
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
    padding: 0 .5em;
    height: 20px;
}

.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
    padding: .3em .5em;
}

.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar {
    cursor: default;
}

.std42-dialog .ui-dialog-titlebar .ui-widget-header {
    border: none;
    cursor: pointer;
}

.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
    display: inherit;
    word-break: break-all;
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
    display: list-item;
    display: -moz-inline-box;
    white-space: nowrap;
    word-break: normal;
    overflow: hidden;
    word-wrap: normal;
    overflow-wrap: normal;
    max-width: -webkit-calc(100% - 24px);
    max-width: -moz-calc(100% - 24px);
    max-width: calc(100% - 24px);
}

.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
    padding-top: .15em;
}

.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
    max-width: -webkit-calc(100% - 36px);
    max-width: -moz-calc(100% - 36px);
    max-width: calc(100% - 36px);
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button {
    position: relative;
    float: left;
    top: 10px;
    left: -10px;
    right: 10px;
    width: 20px;
    height: 20px;
    padding: 1px;
    margin: -10px 1px 0 1px;
    background-color: transparent;
    background-image: none;
}

.elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button {
    -moz-transform: scale(1.2);
    zoom: 1.2;
    padding-left: 6px;
    padding-right: 6px;
    height: 24px;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right {
    float: right;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
    left: 10px;
    right: -10px;
}

.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    width: 17px;
    height: 17px;
    border-width: 1px;
    opacity: .7;
    filter: Alpha(Opacity=70);
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
}

.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    opacity: .5;
    filter: Alpha(Opacity=50);
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
    opacity: 1;
    filter: Alpha(Opacity=100);
}

.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select {
    display: none;
}

.elfinder-spinner {
    width: 14px;
    height: 14px;
    background: url("../img/spinner-mini.gif") center center no-repeat;
    margin: 0 5px;
    display: inline-block;
    vertical-align: middle;
}

.elfinder-ltr .elfinder-spinner,
.elfinder-ltr .elfinder-spinner-text {
    float: left;
}

.elfinder-rtl .elfinder-spinner,
.elfinder-rtl .elfinder-spinner-text  {
    float: right;
}



/* resize handle for touch devices */
.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se {
    width: 12px;
    height: 12px;
    -moz-transform-origin: bottom right;
    -moz-transform: scale(1.5);
    zoom: 1.5;
    right: -7px;
    bottom: -7px;
    margin: 3px 7px 7px 3px;
    background-position: -64px -224px;
}

.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar {
    text-align: right;
}

/* content */
.std42-dialog .ui-dialog-content {
    padding: .3em .5em;
}

.elfinder .std42-dialog .ui-dialog-content,
.elfinder .std42-dialog .ui-dialog-content * {
    -webkit-user-select: auto;
    -moz-user-select: text;
    -khtml-user-select: text;
    user-select: text;
}

.elfinder .std42-dialog .ui-dialog-content label {
    border: none;
}

/* buttons */
.std42-dialog .ui-dialog-buttonpane {
    border: 0 solid;
    margin: 0;
    padding: .5em;
    text-align: right;
}

.elfinder-rtl .std42-dialog .ui-dialog-buttonpane {
    text-align: left;
}

.std42-dialog .ui-dialog-buttonpane button {
    margin: .2em 0 0 .4em;
    padding: .2em;
    outline: 0px solid;
}

.std42-dialog .ui-dialog-buttonpane button span {
    padding: 2px 9px;
}

.std42-dialog .ui-dialog-buttonpane button span.ui-icon {
    padding: 2px;
}

.elfinder-dialog .ui-resizable-e,
.elfinder-dialog .ui-resizable-s {
    width: 0;
    height: 0;
}

.std42-dialog .ui-button input {
    cursor: pointer;
}

.std42-dialog select {
    border: 1px solid #ccc;
}

/* error/notify/confirm dialogs icon */
.elfinder-dialog-icon {
    position: absolute;
    width: 32px;
    height: 32px;
    left: 10px;
    bottom: 8%;
    margin-top: -15px;
    background: url("../img/dialogs.png") 0 0 no-repeat;
}

.elfinder-rtl .elfinder-dialog-icon {
    left: auto;
    right: 10px;
}

/*********************** ERROR DIALOG **************************/

.elfinder-dialog-error .ui-dialog-content,
.elfinder-dialog-confirm .ui-dialog-content {
    padding-left: 56px;
    min-height: 35px;
}

.elfinder-rtl .elfinder-dialog-error .ui-dialog-content,
.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content {
    padding-left: 0;
    padding-right: 56px;
}

.elfinder-dialog-error .elfinder-err-var {
    word-break: break-all;
}

/*********************** NOTIFY DIALOG **************************/

.elfinder-dialog-notify {
    top : 36px;
    width : 280px;
}

.elfinder-ltr .elfinder-dialog-notify {
    right : 12px;
}

.elfinder-rtl .elfinder-dialog-notify {
    left : 12px;
}

.elfinder-dialog-notify .ui-dialog-titlebar {
    overflow: hidden;
}

.elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar {
    height: 10px;
}

.elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button {
    top: 2px;
}

.elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button {
    top: 4px;
}

.elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button {
    right: 18px;
}

.elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
    left: 18px;
    right: -18px;
}

.ui-dialog-titlebar .elfinder-ui-progressbar {
    position: absolute;
    top: 17px;
}

.elfinder-touch .ui-dialog-titlebar .elfinder-ui-progressbar {
    top: 26px;
}

.elfinder-dialog-notify.elfinder-titlebar-button-hide .ui-dialog-titlebar-close {
    display: none;
}

.elfinder-dialog-notify.elfinder-dialog-minimized.elfinder-titlebar-button-hide .ui-dialog-titlebar span.elfinder-dialog-title {
    max-width: initial;
}

.elfinder-dialog-notify .ui-dialog-content {
    padding: 0;
}

/* one notification container */
.elfinder-notify {
    border-bottom: 1px solid #ccc;
    position: relative;
    padding: .5em;

    text-align: center;
    overflow: hidden;
}

.elfinder-ltr .elfinder-notify {
    padding-left: 36px;
}

.elfinder-rtl .elfinder-notify {
    padding-right: 36px;
}

.elfinder-notify:last-child {
    border: 0 solid;
}

/* progressbar */
.elfinder-notify-progressbar {
    width: 180px;
    height: 8px;
    border: 1px solid #aaa;
    background: #f5f5f5;
    margin: 5px auto;
    overflow: hidden;
}

.elfinder-notify-progress {
    width: 100%;
    height: 8px;
    background: url(../img/progress.gif) center center repeat-x;
}

.elfinder-notify-progressbar, .elfinder-notify-progress {
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    border-radius: 2px;
}

.elfinder-notify-cancel {
    position: relative;
    top: -18px;
    right: calc(-50% + 15px);
}

.elfinder-notify-cancel .ui-icon-close {
    background-position: -80px -128px;
    width: 18px;
    height: 18px;
    border-radius: 9px;
    border: none;
    background-position: -80px -128px;
    cursor: pointer;
}

/* icons */
.elfinder-dialog-icon-open,
.elfinder-dialog-icon-readdir,
.elfinder-dialog-icon-file {
    background-position: 0 -225px;
}

.elfinder-dialog-icon-reload {
    background-position: 0 -225px;
}

.elfinder-dialog-icon-mkdir {
    background-position: 0 -64px;
}

.elfinder-dialog-icon-mkfile {
    background-position: 0 -96px;
}

.elfinder-dialog-icon-copy,
.elfinder-dialog-icon-prepare,
.elfinder-dialog-icon-move {
    background-position: 0 -128px;
}

.elfinder-dialog-icon-upload {
    background-position: 0 -160px;
}

.elfinder-dialog-icon-chunkmerge {
    background-position: 0 -160px;
}

.elfinder-dialog-icon-rm {
    background-position: 0 -192px;
}

.elfinder-dialog-icon-download {
    background-position: 0 -260px;
}

.elfinder-dialog-icon-save {
    background-position: 0 -295px;
}

.elfinder-dialog-icon-rename,
.elfinder-dialog-icon-chkcontent {
    background-position: 0 -330px;
}

.elfinder-dialog-icon-zipdl,
.elfinder-dialog-icon-archive,
.elfinder-dialog-icon-extract {
    background-position: 0 -365px;
}

.elfinder-dialog-icon-search {
    background-position: 0 -402px;
}

.elfinder-dialog-icon-resize,
.elfinder-dialog-icon-loadimg,
.elfinder-dialog-icon-netmount,
.elfinder-dialog-icon-netunmount,
.elfinder-dialog-icon-chmod,
.elfinder-dialog-icon-preupload,
.elfinder-dialog-icon-url,
.elfinder-dialog-icon-dim {
    background-position: 0 -434px;
}

/*********************** CONFIRM DIALOG **************************/

.elfinder-dialog-confirm-applyall,
.elfinder-dialog-confirm-encoding {
    padding: 0 1em;
    margin: 0;
}

.elfinder-ltr .elfinder-dialog-confirm-applyall,
.elfinder-ltr .elfinder-dialog-confirm-encoding {
    text-align: left;
}

.elfinder-rtl .elfinder-dialog-confirm-applyall,
.elfinder-rtl .elfinder-dialog-confirm-encoding {
    text-align: right;
}

.elfinder-dialog-confirm .elfinder-dialog-icon {
    background-position: 0 -32px;
}

.elfinder-dialog-confirm .ui-dialog-buttonset {
    width: auto;
}

/*********************** FILE INFO DIALOG **************************/

.elfinder-info-title .elfinder-cwd-icon {
    float: left;
    width: 48px;
    height: 48px;
    margin-right: 1em;
}

.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon {
    float: right;
    margin-right: 0;
    margin-left: 1em;
}

.elfinder-info-title strong {
    display: block;
    padding: .3em 0 .5em 0;
}

.elfinder-info-tb {
    min-width: 200px;
    border: 0 solid;
    margin: 1em .2em 1em .2em;
    width: 100%;
}

.elfinder-info-tb td {
    white-space: pre-wrap;
    padding: 2px;
}

.elfinder-info-tb td.elfinder-info-label {
    white-space: nowrap;
}

.elfinder-info-tb td.elfinder-info-hash {
    display: inline-block;
    word-break: break-all;
    max-width: 32ch;
}

.elfinder-ltr .elfinder-info-tb tr td:first-child {
    text-align: right;
}

.elfinder-ltr .elfinder-info-tb span {
    float: left;
}

.elfinder-rtl .elfinder-info-tb tr td:first-child {
    text-align: left;
}

.elfinder-rtl .elfinder-info-tb span {
    float: right;
}

.elfinder-info-tb a {
    outline: none;
    text-decoration: underline;
}

.ui-front.ui-dialog.elfinder-dialog-info.ui-resizable.elfinder-frontmost.elfinder-dialog-active {
    max-width: 400px !important;
    width: 400px !important;
    overflow: hidden !important;
}
.ui-front.ui-dialog .ui-helper-clearfix.elfinder-rm-title {
    margin-left: -49px;
    padding-top: 7px;
    padding-bottom: 7px;
}
.elfinder-info-tb a:hover {
    text-decoration: none;
}

.elfinder-netmount-tb {
    margin: 0 auto;
}

.elfinder-netmount-tb select,
.elfinder-netmount-tb .elfinder-button-icon {
    cursor: pointer;
}

button.elfinder-info-button {
    margin: -3.5px 0;
    cursor: pointer;
}

/*********************** UPLOAD DIALOG **************************/

.elfinder-upload-dropbox {
    display: table-cell;
    text-align: center;
    vertical-align: middle;
    padding: 0.5em;
    border: 3px dashed #aaa;
    width: 9999px;
    height: 80px;
    overflow: hidden;
    word-break: keep-all;
}

.elfinder-upload-dropbox.ui-state-hover {
    background: #dfdfdf;
    border: 3px dashed #555;
}

.elfinder-upload-dialog-or {
    margin: .3em 0;
    text-align: center;
}

.elfinder-upload-dialog-wrapper {
    text-align: center;
}

.elfinder-upload-dialog-wrapper .ui-button {
    position: relative;
    overflow: hidden;
}

.elfinder-upload-dialog-wrapper .ui-button form {
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
    opacity: 0;
    filter: Alpha(Opacity=0);
}

.elfinder-upload-dialog-wrapper .ui-button form input {
    padding: 50px 0 0;
    font-size: 3em;
    width: 100%;
}

/* dialog for elFinder itself */
.dialogelfinder .dialogelfinder-drag {
    border-left: 0 solid;
    border-top: 0 solid;
    border-right: 0 solid;
    font-weight: normal;
    padding: 2px 12px;
    cursor: move;
    position: relative;
    text-align: left;
}

.elfinder-rtl .dialogelfinder-drag {
    text-align: right;
}

.dialogelfinder-drag-close {
    position: absolute;
    top: 50%;
    margin-top: -8px;
}

.elfinder-ltr .dialogelfinder-drag-close {
    right: 12px;
}

.elfinder-rtl .dialogelfinder-drag-close {
    left: 12px;
}

/*********************** RM CONFIRM **************************/
.elfinder-rm-title {
    margin-bottom: .5ex;
}

.elfinder-rm-title .elfinder-cwd-icon {
    float: left;
    width: 48px;
    height: 48px;
    margin-right: 1em;
}

.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon {
    float: right;
    margin-right: 0;
    margin-left: 1em;
}

.elfinder-rm-title strong {
    display: block;
    white-space: pre-wrap;
    word-break: normal;
    overflow: hidden;
    text-overflow: ellipsis;
}

.elfinder-rm-title + br {
    display: none;
} 

.elfinder .elfinder-dialog .ui-dialog-content.elfinder-edit-editor{ padding: 0; }
.elfinder-ltr .elfinder-info-tb tr td:first-child{ text-align:left; }

.elfinder-dialog-info table.elfinder-info-tb tr{ display:block !important; }
.elfinder-dialog-info table.elfinder-info-tb tr td:first-child{width: 96px;}


/* New css Added here  */
.ui-front.ui-dialog.elfinder-dialog.elfinder-dialog-notify .ui-widget-content .elfinder-dialog-icon{ bottom: inherit; top:25px; }
.ui-front.ui-dialog.elfinder-dialog.elfinder-dialog-notify .ui-widget-content .elfinder-notify{ padding-left:50px; font-size: 12px; }
.ui-front.ui-dialog.elfinder-dialog.elfinder-dialog-notify .ui-widget-content .elfinder-notify-progressbar{  margin-left: 5px;  margin-top: 10px; }

/* css for Arabic language icons*/
.wrap.wp-filemanager-wrap .elfinder-rtl .ui-front.ui-dialog .ui-dialog-content.ui-widget-content {
    padding-right: 56px;
    padding-left: unset;
}
.wrap.wp-filemanager-wrap .elfinder-rtl .ui-front.ui-dialog .ui-dialog-content.ui-widget-content .ui-helper-clearfix.elfinder-rm-title {
    margin-left: 0;
    margin-right: -49px;
}
.wrap.wp-filemanager-wrap .elfinder-rtl .ui-front.ui-dialog .ui-dialog-content.ui-widget-content .ui-helper-clearfix.elfinder-rm-title span.elfinder-cwd-icon:before {
    right: 0;
    min-width: 20px;
    max-width: 30px;
}lib/css/toolbar.css000064400000031241147361034410010262 0ustar00/*********************************************/
/*               TOOLBAR STYLES              */
/*********************************************/
/* toolbar container */
.elfinder-toolbar {
    padding: 10px 0;
    border-left: 0 solid transparent;
    border-top: 0 solid transparent;
    border-right: 0 solid transparent;
    max-height: 50%;
    overflow-y: auto;
}

/* container for button's group */
.elfinder-buttonset {
    margin: 1px 4px;
    float: left;
    background: transparent;
    padding: 0;
    overflow: hidden;
}

/*.elfinder-buttonset:first-child { margin:0; }*/

/* button */
.elfinder .elfinder-button {
    min-width: 16px;
    height: 16px;
    margin: 0;
    padding: 4px;
    float: left;
    overflow: hidden;
    position: relative;
    border: 0 solid;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    line-height: 1;
    cursor: default;
}

.elfinder-rtl .elfinder-button {
    float: right;
}

.elfinder-touch .elfinder-button {
    min-width: 20px;
    height: 20px;
}

.elfinder .ui-icon-search {
    cursor: pointer;
}

/* separator between buttons, required for berder between button with ui color */
.elfinder-toolbar-button-separator {
    float: left;
    padding: 0;
    height: 24px;
    border-top: 0 solid;
    border-right: 0 solid;
    border-bottom: 0 solid;
    width: 0;
}

.elfinder-rtl .elfinder-toolbar-button-separator {
    float: right;
}

.elfinder-touch .elfinder-toolbar-button-separator {
    height: 28px;
}

/* change icon opacity^ not button */
.elfinder .elfinder-button.ui-state-disabled {
    opacity: 1;
    filter: Alpha(Opacity=100);
}

.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon,
.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text {
    opacity: .4;
    filter: Alpha(Opacity=40);
}

/* rtl enviroment */
.elfinder-rtl .elfinder-buttonset {
    float: right;
}

/* icon inside button */
.elfinder-button-icon {
    width: 16px;
    height: 16px;
    display: inline-block;
    background: url('../img/toolbar.png') no-repeat;
}

.elfinder-button-text {
    position: relative;
    display: inline-block;
    top: -4px;
    margin: 0 2px;
    font-size: 12px;
}

.elfinder-touch .elfinder-button-icon {
    transform: scale(1.25);
    transform-origin: top left;
}

.elfinder-rtl.elfinder-touch .elfinder-button-icon {
    transform-origin: top right;
}

.elfinder-touch .elfinder-button-text {
    transform: translate(3px, 3px);
    top: -5px;
}

.elfinder-rtl.elfinder-touch .elfinder-button-text {
    transform: translate(-3px, 3px);
}

.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon {
    transform: scale(2);
    transform-origin: 12px 8px;
}

.elfinder-rtl.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon {
    transform-origin: 4px 8px;
}

/* buttons icons */
.elfinder-button-icon-home {
    background-position: 0 0;
}

.elfinder-button-icon-back {
    background-position: 0 -112px;
}

.elfinder-button-icon-forward {
    background-position: 0 -128px;
}

.elfinder-button-icon-up {
    background-position: 0 -144px;
}

.elfinder-button-icon-dir {
    background-position: 0 -16px;
}

.elfinder-button-icon-opendir {
    background-position: 0 -32px;
}

.elfinder-button-icon-reload {
    background-position: 0 -160px;
}

.elfinder-button-icon-open {
    background-position: 0 -176px;
}

.elfinder-button-icon-mkdir {
    background-position: 0 -192px;
}

.elfinder-button-icon-mkfile {
    background-position: 0 -208px;
}

.elfinder-button-icon-rm {
    background-position: 0 -832px;
}

.elfinder-button-icon-trash {
    background-position: 0 -224px;
}

.elfinder-button-icon-restore {
    background-position: 0 -816px;
}

.elfinder-button-icon-copy {
    background-position: 0 -240px;
}

.elfinder-button-icon-cut {
    background-position: 0 -256px;
}

.elfinder-button-icon-paste {
    background-position: 0 -272px;
}

.elfinder-button-icon-getfile {
    background-position: 0 -288px;
}

.elfinder-button-icon-duplicate {
    background-position: 0 -304px;
}

.elfinder-button-icon-rename {
    background-position: 0 -320px;
}

.elfinder-button-icon-edit {
    background-position: 0 -336px;
}

.elfinder-button-icon-quicklook {
    background-position: 0 -352px;
}

.elfinder-button-icon-upload {
    background-position: 0 -368px;
}

.elfinder-button-icon-download {
    background-position: 0 -384px;
}

.elfinder-button-icon-info {
    background-position: 0 -400px;
}

.elfinder-button-icon-extract {
    background-position: 0 -416px;
}

.elfinder-button-icon-archive {
    background-position: 0 -432px;
}

.elfinder-button-icon-view {
    background-position: 0 -448px;
}

.elfinder-button-icon-view-list {
    background-position: 0 -464px;
}

.elfinder-button-icon-help {
    background-position: 0 -480px;
}

.elfinder-button-icon-resize {
    background-position: 0 -512px;
}

.elfinder-button-icon-link {
    background-position: 0 -528px;
}

.elfinder-button-icon-search {
    background-position: 0 -561px;
}

.elfinder-button-icon-sort {
    background-position: 0 -577px;
}

.elfinder-button-icon-rotate-r {
    background-position: 0 -625px;
}

.elfinder-button-icon-rotate-l {
    background-position: 0 -641px;
}

.elfinder-button-icon-netmount {
    background-position: 0 -688px;
}

.elfinder-button-icon-netunmount {
    background-position: 0 -96px;
}

.elfinder-button-icon-places {
    background-position: 0 -704px;
}

.elfinder-button-icon-chmod {
    background-position: 0 -48px;
}

.elfinder-button-icon-accept {
    background-position: 0 -736px;
}

.elfinder-button-icon-menu {
    background-position: 0 -752px;
}

.elfinder-button-icon-colwidth {
    background-position: 0 -768px;
}

.elfinder-button-icon-fullscreen {
    background-position: 0 -784px;
}

.elfinder-button-icon-unfullscreen {
    background-position: 0 -800px;
}

.elfinder-button-icon-empty {
    background-position: 0 -848px;
}

.elfinder-button-icon-undo {
    background-position: 0 -864px;
}

.elfinder-button-icon-redo {
    background-position: 0 -880px;
}

.elfinder-button-icon-preference {
    background-position: 0 -896px;
}

.elfinder-button-icon-mkdirin {
    background-position: 0 -912px;
}

.elfinder-button-icon-selectall {
    background-position: 0 -928px;
}

.elfinder-button-icon-selectnone {
    background-position: 0 -944px;
}

.elfinder-button-icon-selectinvert {
    background-position: 0 -960px;
}

.elfinder-button-icon-opennew {
    background-position: 0 -976px;
}

.elfinder-button-icon-hide {
    background-position: 0 -992px;
}

.elfinder-button-icon-text {
    background-position: 0 -1008px;
}

/* button icon mirroring for rtl */
.elfinder-rtl .elfinder-button-icon-back,
.elfinder-rtl .elfinder-button-icon-forward,
.elfinder-rtl .elfinder-button-icon-getfile,
.elfinder-rtl .elfinder-button-icon-help,
.elfinder-rtl .elfinder-button-icon-redo,
.elfinder-rtl .elfinder-button-icon-rename,
.elfinder-rtl .elfinder-button-icon-search,
.elfinder-rtl .elfinder-button-icon-undo,
.elfinder-rtl .elfinder-button-icon-view-list,
.elfinder-rtl .ui-icon-search {
    -ms-transform: scale(-1, 1);
    -webkit-transform: scale(-1, 1);
    transform: scale(-1, 1);
}

.elfinder-rtl.elfinder-touch .elfinder-button-icon-back,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-forward,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-getfile,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-help,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-redo,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-rename,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-search,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-undo,
.elfinder-rtl.elfinder-touch .elfinder-button-icon-view-list,
.elfinder-rtl.elfinder-touch .ui-icon-search {
    -ms-transform: scale(-1.25, 1.25) translateX(16px);
    -webkit-transform: scale(-1.25, 1.25) translateX(16px);
    transform: scale(-1.25, 1.25) translateX(16px);
}

/* button with dropdown menu*/
.elfinder .elfinder-menubutton {
    overflow: visible;
}

/* button with spinner icon */
.elfinder-button-icon-spinner {
    background: url("../img/spinner-mini.gif") center center no-repeat;
}

/* menu */
.elfinder-button-menu {
    position: absolute;
    margin-top: 24px;
    padding: 3px 0;
    overflow-y: auto;
}

.elfinder-touch .elfinder-button-menu {
    margin-top: 30px;
}

/* menu item */
.elfinder-button-menu-item {
    white-space: nowrap;
    cursor: default;
    padding: 5px 19px;
    position: relative;
}

.elfinder-touch .elfinder-button-menu-item {
    padding: 12px 19px
}

/* fix hover ui class */
.elfinder-button-menu .ui-state-hover {
    border: 0 solid;
}

.elfinder-button-menu-item-separated {
    border-top: 1px solid #ccc;
}

.elfinder-button-menu-item .ui-icon {
    width: 16px;
    height: 16px;
    position: absolute;
    left: 2px;
    top: 50%;
    margin-top: -8px;
    display: none;
}

.elfinder-button-menu-item-selected .ui-icon {
    display: block;
}

.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s {
    display: none;
}

.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n {
    display: none;
}

/* hack for upload button */
.elfinder-button form {
    position: absolute;
    top: 0;
    right: 0;
    opacity: 0;
    filter: Alpha(Opacity=0);
    cursor: pointer;
}

.elfinder .elfinder-button form input {
    background: transparent;
    cursor: default;
}

/* search "button" */
.elfinder .elfinder-button-search {
    border: 0 solid;
    background: transparent;
    padding: 0;
    margin: 1px 4px;
    height: auto;
    min-height: 26px;
    width: 70px;
    overflow: visible;
}

.elfinder .elfinder-button-search.ui-state-active {
    width: 220px;
}

/* search "pull down menu" */
.elfinder .elfinder-button-search-menu {
    font-size: 8pt;
    text-align: center;
    width: auto;
    min-width: 180px;
    position: absolute;
    top: 30px;
    padding-right: 5px;
    padding-left: 5px;
}

.elfinder-ltr .elfinder-button-search-menu {
    right: 22px;
    left: auto;
}

.elfinder-rtl .elfinder-button-search-menu {
    right: auto;
    left: 22px;
}

.elfinder-touch .elfinder-button-search-menu {
    top: 34px;
}

.elfinder .elfinder-button-search-menu div {
    margin-left: auto;
    margin-right: auto;
    margin-top: 5px;
    margin-bottom: 5px;
    display: table;
}

.elfinder .elfinder-button-search-menu div .ui-state-hover {
    border: 1px solid;
}

/* ltr/rte enviroment */
.elfinder-ltr .elfinder-button-search {
    float: right;
    margin-right: 10px;
}

.elfinder-rtl .elfinder-button-search {
    float: left;
    margin-left: 10px;
}

.elfinder-rtl .ui-controlgroup > .ui-controlgroup-item {
    float: right;
}

/* search text field */
.elfinder-button-search input[type=text] {
    box-sizing: border-box;
    width: 100%;
    height: 25px;
    min-height: 25px;
    padding: 0 20px;
    line-height: 22px;
    border: 0 solid;
    border: 1px solid #aaa;
    -moz-border-radius: 12px;
    -webkit-border-radius: 12px;
    border-radius: 12px;
    outline: 0px solid;
}

.elfinder-button-search input::-ms-clear {
    display: none;
}

.elfinder-touch .elfinder-button-search input {
    height: 30px;
    line-height: 28px;
}

.elfinder-rtl .elfinder-button-search input {
    direction: rtl;
}

/* icons */
.elfinder-button-search .ui-icon {
    position: absolute;
    height: 18px;
    top: 50%;
    margin: -8px 4px 0 4px;
    opacity: .6;
    filter: Alpha(Opacity=60);
}

.elfinder-button-search-menu .ui-checkboxradio-icon {
    display: none;
}

/* search/close icons */
.elfinder-ltr .elfinder-button-search .ui-icon-search {
    left: 0;
}

.elfinder-rtl .elfinder-button-search .ui-icon-search {
    right: 0;
}

.elfinder-ltr .elfinder-button-search .ui-icon-close {
    right: 0;
}

.elfinder-rtl .elfinder-button-search .ui-icon-close {
    left: 0;
}

/* toolbar swipe handle */
.elfinder-toolbar-swipe-handle {
    position: absolute;
    top: 0px;
    left: 0px;
    height: 50px;
    width: 100%;
    pointer-events: none;
    background: linear-gradient(to bottom,
    rgba(221, 228, 235, 1) 0,
    rgba(221, 228, 235, 0.8) 2px,
    rgba(216, 223, 230, 0.3) 5px,
    rgba(0, 0, 0, 0.1) 95%,
    rgba(0, 0, 0, 0) 100%);
}

/* Theme Search Fix */
.elfinder-toolbar .elfinder-button-search .ui-icon-search{ 
    background-image: url('../img/black-search.png');
    background-position: 7px 3px;
} 
.elfinder-toolbar .elfinder-button-search .ui-icon-close{
    background-image: url('../img/black-close.png');
    background-position: 2px 3px;
}

/* Grid View Hover */
.elfinder-cwd-wrapper .elfinder-cwd-file.ui-corner-all:hover .ui-state-active,
.elfinder-cwd-wrapper .elfinder-cwd-file.ui-corner-all .ui-state-active:hover{color: inherit;}
.elfinder-cwd-wrapper .elfinder-cwd-file.ui-corner-all.ui-selected:hover .ui-state-hover.ui-state-active{ color: #fff; }
div.tool-op-getfile{display:none !important;}lib/index.php000064400000000000147361034410007123 0ustar00lib/js/elFinder.mimetypes.js000064400000065712147361034410012045 0ustar00elFinder.prototype.mimeTypes = {"application\/x-executable":"exe","application\/x-jar":"jar","application\/x-gzip":"gz","application\/x-bzip2":"tbz","application\/x-rar":"rar","text\/x-php":"php","text\/javascript":"js","application\/rtfd":"rtfd","text\/x-python":"py","text\/x-ruby":"rb","text\/x-shellscript":"sh","text\/x-perl":"pl","text\/xml":"xml","text\/x-csrc":"c","text\/x-chdr":"h","text\/x-c++src":"cpp","text\/x-c++hdr":"hh","text\/x-markdown":"md","text\/x-yaml":"yml","image\/x-ms-bmp":"bmp","image\/x-targa":"tga","image\/xbm":"xbm","image\/pxm":"pxm","audio\/wav":"wav","video\/x-dv":"dv","video\/x-ms-wmv":"wm","video\/ogg":"ogm","video\/MP2T":"m2ts","application\/x-mpegURL":"m3u8","application\/dash+xml":"mpd","application\/andrew-inset":"ez","application\/applixware":"aw","application\/atom+xml":"atom","application\/atomcat+xml":"atomcat","application\/atomsvc+xml":"atomsvc","application\/ccxml+xml":"ccxml","application\/cdmi-capability":"cdmia","application\/cdmi-container":"cdmic","application\/cdmi-domain":"cdmid","application\/cdmi-object":"cdmio","application\/cdmi-queue":"cdmiq","application\/cu-seeme":"cu","application\/davmount+xml":"davmount","application\/docbook+xml":"dbk","application\/dssc+der":"dssc","application\/dssc+xml":"xdssc","application\/ecmascript":"ecma","application\/emma+xml":"emma","application\/epub+zip":"epub","application\/exi":"exi","application\/font-tdpfr":"pfr","application\/gml+xml":"gml","application\/gpx+xml":"gpx","application\/gxf":"gxf","application\/hyperstudio":"stk","application\/inkml+xml":"ink","application\/ipfix":"ipfix","application\/java-serialized-object":"ser","application\/java-vm":"class","application\/json":"json","application\/jsonml+json":"jsonml","application\/lost+xml":"lostxml","application\/mac-binhex40":"hqx","application\/mac-compactpro":"cpt","application\/mads+xml":"mads","application\/marc":"mrc","application\/marcxml+xml":"mrcx","application\/mathematica":"ma","application\/mathml+xml":"mathml","application\/mbox":"mbox","application\/mediaservercontrol+xml":"mscml","application\/metalink+xml":"metalink","application\/metalink4+xml":"meta4","application\/mets+xml":"mets","application\/mods+xml":"mods","application\/mp21":"m21","application\/mp4":"mp4s","application\/msword":"doc","application\/mxf":"mxf","application\/octet-stream":"bin","application\/oda":"oda","application\/oebps-package+xml":"opf","application\/ogg":"ogx","application\/omdoc+xml":"omdoc","application\/onenote":"onetoc","application\/oxps":"oxps","application\/patch-ops-error+xml":"xer","application\/pdf":"pdf","application\/pgp-encrypted":"pgp","application\/pgp-signature":"asc","application\/pics-rules":"prf","application\/pkcs10":"p10","application\/pkcs7-mime":"p7m","application\/pkcs7-signature":"p7s","application\/pkcs8":"p8","application\/pkix-attr-cert":"ac","application\/pkix-cert":"cer","application\/pkix-crl":"crl","application\/pkix-pkipath":"pkipath","application\/pkixcmp":"pki","application\/pls+xml":"pls","application\/postscript":"ai","application\/prs.cww":"cww","application\/pskc+xml":"pskcxml","application\/rdf+xml":"rdf","application\/reginfo+xml":"rif","application\/relax-ng-compact-syntax":"rnc","application\/resource-lists+xml":"rl","application\/resource-lists-diff+xml":"rld","application\/rls-services+xml":"rs","application\/rpki-ghostbusters":"gbr","application\/rpki-manifest":"mft","application\/rpki-roa":"roa","application\/rsd+xml":"rsd","application\/rss+xml":"rss","application\/rtf":"rtf","application\/sbml+xml":"sbml","application\/scvp-cv-request":"scq","application\/scvp-cv-response":"scs","application\/scvp-vp-request":"spq","application\/scvp-vp-response":"spp","application\/sdp":"sdp","application\/set-payment-initiation":"setpay","application\/set-registration-initiation":"setreg","application\/shf+xml":"shf","application\/smil+xml":"smi","application\/sparql-query":"rq","application\/sparql-results+xml":"srx","application\/srgs":"gram","application\/srgs+xml":"grxml","application\/sru+xml":"sru","application\/ssdl+xml":"ssdl","application\/ssml+xml":"ssml","application\/tei+xml":"tei","application\/thraud+xml":"tfi","application\/timestamped-data":"tsd","application\/vnd.3gpp.pic-bw-large":"plb","application\/vnd.3gpp.pic-bw-small":"psb","application\/vnd.3gpp.pic-bw-var":"pvb","application\/vnd.3gpp2.tcap":"tcap","application\/vnd.3m.post-it-notes":"pwn","application\/vnd.accpac.simply.aso":"aso","application\/vnd.accpac.simply.imp":"imp","application\/vnd.acucobol":"acu","application\/vnd.acucorp":"atc","application\/vnd.adobe.air-application-installer-package+zip":"air","application\/vnd.adobe.formscentral.fcdt":"fcdt","application\/vnd.adobe.fxp":"fxp","application\/vnd.adobe.xdp+xml":"xdp","application\/vnd.adobe.xfdf":"xfdf","application\/vnd.ahead.space":"ahead","application\/vnd.airzip.filesecure.azf":"azf","application\/vnd.airzip.filesecure.azs":"azs","application\/vnd.amazon.ebook":"azw","application\/vnd.americandynamics.acc":"acc","application\/vnd.amiga.ami":"ami","application\/vnd.android.package-archive":"apk","application\/vnd.anser-web-certificate-issue-initiation":"cii","application\/vnd.anser-web-funds-transfer-initiation":"fti","application\/vnd.antix.game-component":"atx","application\/vnd.apple.installer+xml":"mpkg","application\/vnd.aristanetworks.swi":"swi","application\/vnd.astraea-software.iota":"iota","application\/vnd.audiograph":"aep","application\/vnd.blueice.multipass":"mpm","application\/vnd.bmi":"bmi","application\/vnd.businessobjects":"rep","application\/vnd.chemdraw+xml":"cdxml","application\/vnd.chipnuts.karaoke-mmd":"mmd","application\/vnd.cinderella":"cdy","application\/vnd.claymore":"cla","application\/vnd.cloanto.rp9":"rp9","application\/vnd.clonk.c4group":"c4g","application\/vnd.cluetrust.cartomobile-config":"c11amc","application\/vnd.cluetrust.cartomobile-config-pkg":"c11amz","application\/vnd.commonspace":"csp","application\/vnd.contact.cmsg":"cdbcmsg","application\/vnd.cosmocaller":"cmc","application\/vnd.crick.clicker":"clkx","application\/vnd.crick.clicker.keyboard":"clkk","application\/vnd.crick.clicker.palette":"clkp","application\/vnd.crick.clicker.template":"clkt","application\/vnd.crick.clicker.wordbank":"clkw","application\/vnd.criticaltools.wbs+xml":"wbs","application\/vnd.ctc-posml":"pml","application\/vnd.cups-ppd":"ppd","application\/vnd.curl.car":"car","application\/vnd.curl.pcurl":"pcurl","application\/vnd.dart":"dart","application\/vnd.data-vision.rdz":"rdz","application\/vnd.dece.data":"uvf","application\/vnd.dece.ttml+xml":"uvt","application\/vnd.dece.unspecified":"uvx","application\/vnd.dece.zip":"uvz","application\/vnd.denovo.fcselayout-link":"fe_launch","application\/vnd.dna":"dna","application\/vnd.dolby.mlp":"mlp","application\/vnd.dpgraph":"dpg","application\/vnd.dreamfactory":"dfac","application\/vnd.ds-keypoint":"kpxx","application\/vnd.dvb.ait":"ait","application\/vnd.dvb.service":"svc","application\/vnd.dynageo":"geo","application\/vnd.ecowin.chart":"mag","application\/vnd.enliven":"nml","application\/vnd.epson.esf":"esf","application\/vnd.epson.msf":"msf","application\/vnd.epson.quickanime":"qam","application\/vnd.epson.salt":"slt","application\/vnd.epson.ssf":"ssf","application\/vnd.eszigno3+xml":"es3","application\/vnd.ezpix-album":"ez2","application\/vnd.ezpix-package":"ez3","application\/vnd.fdf":"fdf","application\/vnd.fdsn.mseed":"mseed","application\/vnd.fdsn.seed":"seed","application\/vnd.flographit":"gph","application\/vnd.fluxtime.clip":"ftc","application\/vnd.framemaker":"fm","application\/vnd.frogans.fnc":"fnc","application\/vnd.frogans.ltf":"ltf","application\/vnd.fsc.weblaunch":"fsc","application\/vnd.fujitsu.oasys":"oas","application\/vnd.fujitsu.oasys2":"oa2","application\/vnd.fujitsu.oasys3":"oa3","application\/vnd.fujitsu.oasysgp":"fg5","application\/vnd.fujitsu.oasysprs":"bh2","application\/vnd.fujixerox.ddd":"ddd","application\/vnd.fujixerox.docuworks":"xdw","application\/vnd.fujixerox.docuworks.binder":"xbd","application\/vnd.fuzzysheet":"fzs","application\/vnd.genomatix.tuxedo":"txd","application\/vnd.geogebra.file":"ggb","application\/vnd.geogebra.tool":"ggt","application\/vnd.geometry-explorer":"gex","application\/vnd.geonext":"gxt","application\/vnd.geoplan":"g2w","application\/vnd.geospace":"g3w","application\/vnd.gmx":"gmx","application\/vnd.google-earth.kml+xml":"kml","application\/vnd.google-earth.kmz":"kmz","application\/vnd.grafeq":"gqf","application\/vnd.groove-account":"gac","application\/vnd.groove-help":"ghf","application\/vnd.groove-identity-message":"gim","application\/vnd.groove-injector":"grv","application\/vnd.groove-tool-message":"gtm","application\/vnd.groove-tool-template":"tpl","application\/vnd.groove-vcard":"vcg","application\/vnd.hal+xml":"hal","application\/vnd.handheld-entertainment+xml":"zmm","application\/vnd.hbci":"hbci","application\/vnd.hhe.lesson-player":"les","application\/vnd.hp-hpgl":"hpgl","application\/vnd.hp-hpid":"hpid","application\/vnd.hp-hps":"hps","application\/vnd.hp-jlyt":"jlt","application\/vnd.hp-pcl":"pcl","application\/vnd.hp-pclxl":"pclxl","application\/vnd.hydrostatix.sof-data":"sfd-hdstx","application\/vnd.ibm.minipay":"mpy","application\/vnd.ibm.modcap":"afp","application\/vnd.ibm.rights-management":"irm","application\/vnd.ibm.secure-container":"sc","application\/vnd.iccprofile":"icc","application\/vnd.igloader":"igl","application\/vnd.immervision-ivp":"ivp","application\/vnd.immervision-ivu":"ivu","application\/vnd.insors.igm":"igm","application\/vnd.intercon.formnet":"xpw","application\/vnd.intergeo":"i2g","application\/vnd.intu.qbo":"qbo","application\/vnd.intu.qfx":"qfx","application\/vnd.ipunplugged.rcprofile":"rcprofile","application\/vnd.irepository.package+xml":"irp","application\/vnd.is-xpr":"xpr","application\/vnd.isac.fcs":"fcs","application\/vnd.jam":"jam","application\/vnd.jcp.javame.midlet-rms":"rms","application\/vnd.jisp":"jisp","application\/vnd.joost.joda-archive":"joda","application\/vnd.kahootz":"ktz","application\/vnd.kde.karbon":"karbon","application\/vnd.kde.kchart":"chrt","application\/vnd.kde.kformula":"kfo","application\/vnd.kde.kivio":"flw","application\/vnd.kde.kontour":"kon","application\/vnd.kde.kpresenter":"kpr","application\/vnd.kde.kspread":"ksp","application\/vnd.kde.kword":"kwd","application\/vnd.kenameaapp":"htke","application\/vnd.kidspiration":"kia","application\/vnd.kinar":"kne","application\/vnd.koan":"skp","application\/vnd.kodak-descriptor":"sse","application\/vnd.las.las+xml":"lasxml","application\/vnd.llamagraphics.life-balance.desktop":"lbd","application\/vnd.llamagraphics.life-balance.exchange+xml":"lbe","application\/vnd.lotus-1-2-3":123,"application\/vnd.lotus-approach":"apr","application\/vnd.lotus-freelance":"pre","application\/vnd.lotus-notes":"nsf","application\/vnd.lotus-organizer":"org","application\/vnd.lotus-screencam":"scm","application\/vnd.lotus-wordpro":"lwp","application\/vnd.macports.portpkg":"portpkg","application\/vnd.mcd":"mcd","application\/vnd.medcalcdata":"mc1","application\/vnd.mediastation.cdkey":"cdkey","application\/vnd.mfer":"mwf","application\/vnd.mfmp":"mfm","application\/vnd.micrografx.flo":"flo","application\/vnd.micrografx.igx":"igx","application\/vnd.mif":"mif","application\/vnd.mobius.daf":"daf","application\/vnd.mobius.dis":"dis","application\/vnd.mobius.mbk":"mbk","application\/vnd.mobius.mqy":"mqy","application\/vnd.mobius.msl":"msl","application\/vnd.mobius.plc":"plc","application\/vnd.mobius.txf":"txf","application\/vnd.mophun.application":"mpn","application\/vnd.mophun.certificate":"mpc","application\/vnd.mozilla.xul+xml":"xul","application\/vnd.ms-artgalry":"cil","application\/vnd.ms-cab-compressed":"cab","application\/vnd.ms-excel":"xls","application\/vnd.ms-excel.addin.macroenabled.12":"xlam","application\/vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","application\/vnd.ms-excel.sheet.macroenabled.12":"xlsm","application\/vnd.ms-excel.template.macroenabled.12":"xltm","application\/vnd.ms-fontobject":"eot","application\/vnd.ms-htmlhelp":"chm","application\/vnd.ms-ims":"ims","application\/vnd.ms-lrm":"lrm","application\/vnd.ms-officetheme":"thmx","application\/vnd.ms-pki.seccat":"cat","application\/vnd.ms-pki.stl":"stl","application\/vnd.ms-powerpoint":"ppt","application\/vnd.ms-powerpoint.addin.macroenabled.12":"ppam","application\/vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","application\/vnd.ms-powerpoint.slide.macroenabled.12":"sldm","application\/vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","application\/vnd.ms-powerpoint.template.macroenabled.12":"potm","application\/vnd.ms-project":"mpp","application\/vnd.ms-word.document.macroenabled.12":"docm","application\/vnd.ms-word.template.macroenabled.12":"dotm","application\/vnd.ms-works":"wps","application\/vnd.ms-wpl":"wpl","application\/vnd.ms-xpsdocument":"xps","application\/vnd.mseq":"mseq","application\/vnd.musician":"mus","application\/vnd.muvee.style":"msty","application\/vnd.mynfc":"taglet","application\/vnd.neurolanguage.nlu":"nlu","application\/vnd.nitf":"ntf","application\/vnd.noblenet-directory":"nnd","application\/vnd.noblenet-sealer":"nns","application\/vnd.noblenet-web":"nnw","application\/vnd.nokia.n-gage.data":"ngdat","application\/vnd.nokia.n-gage.symbian.install":"n-gage","application\/vnd.nokia.radio-preset":"rpst","application\/vnd.nokia.radio-presets":"rpss","application\/vnd.novadigm.edm":"edm","application\/vnd.novadigm.edx":"edx","application\/vnd.novadigm.ext":"ext","application\/vnd.oasis.opendocument.chart":"odc","application\/vnd.oasis.opendocument.chart-template":"otc","application\/vnd.oasis.opendocument.database":"odb","application\/vnd.oasis.opendocument.formula":"odf","application\/vnd.oasis.opendocument.formula-template":"odft","application\/vnd.oasis.opendocument.graphics":"odg","application\/vnd.oasis.opendocument.graphics-template":"otg","application\/vnd.oasis.opendocument.image":"odi","application\/vnd.oasis.opendocument.image-template":"oti","application\/vnd.oasis.opendocument.presentation":"odp","application\/vnd.oasis.opendocument.presentation-template":"otp","application\/vnd.oasis.opendocument.spreadsheet":"ods","application\/vnd.oasis.opendocument.spreadsheet-template":"ots","application\/vnd.oasis.opendocument.text":"odt","application\/vnd.oasis.opendocument.text-master":"odm","application\/vnd.oasis.opendocument.text-template":"ott","application\/vnd.oasis.opendocument.text-web":"oth","application\/vnd.olpc-sugar":"xo","application\/vnd.oma.dd2+xml":"dd2","application\/vnd.openofficeorg.extension":"oxt","application\/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","application\/vnd.openxmlformats-officedocument.presentationml.slide":"sldx","application\/vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","application\/vnd.openxmlformats-officedocument.presentationml.template":"potx","application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application\/vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","application\/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application\/vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","application\/vnd.osgeo.mapguide.package":"mgp","application\/vnd.osgi.dp":"dp","application\/vnd.osgi.subsystem":"esa","application\/vnd.palm":"pdb","application\/vnd.pawaafile":"paw","application\/vnd.pg.format":"str","application\/vnd.pg.osasli":"ei6","application\/vnd.picsel":"efif","application\/vnd.pmi.widget":"wg","application\/vnd.pocketlearn":"plf","application\/vnd.powerbuilder6":"pbd","application\/vnd.previewsystems.box":"box","application\/vnd.proteus.magazine":"mgz","application\/vnd.publishare-delta-tree":"qps","application\/vnd.pvi.ptid1":"ptid","application\/vnd.quark.quarkxpress":"qxd","application\/vnd.realvnc.bed":"bed","application\/vnd.recordare.musicxml":"mxl","application\/vnd.recordare.musicxml+xml":"musicxml","application\/vnd.rig.cryptonote":"cryptonote","application\/vnd.rim.cod":"cod","application\/vnd.rn-realmedia":"rm","application\/vnd.rn-realmedia-vbr":"rmvb","application\/vnd.route66.link66+xml":"link66","application\/vnd.sailingtracker.track":"st","application\/vnd.seemail":"see","application\/vnd.sema":"sema","application\/vnd.semd":"semd","application\/vnd.semf":"semf","application\/vnd.shana.informed.formdata":"ifm","application\/vnd.shana.informed.formtemplate":"itp","application\/vnd.shana.informed.interchange":"iif","application\/vnd.shana.informed.package":"ipk","application\/vnd.simtech-mindmapper":"twd","application\/vnd.smaf":"mmf","application\/vnd.smart.teacher":"teacher","application\/vnd.solent.sdkm+xml":"sdkm","application\/vnd.spotfire.dxp":"dxp","application\/vnd.spotfire.sfs":"sfs","application\/vnd.stardivision.calc":"sdc","application\/vnd.stardivision.draw":"sda","application\/vnd.stardivision.impress":"sdd","application\/vnd.stardivision.math":"smf","application\/vnd.stardivision.writer":"sdw","application\/vnd.stardivision.writer-global":"sgl","application\/vnd.stepmania.package":"smzip","application\/vnd.stepmania.stepchart":"sm","application\/vnd.sun.xml.calc":"sxc","application\/vnd.sun.xml.calc.template":"stc","application\/vnd.sun.xml.draw":"sxd","application\/vnd.sun.xml.draw.template":"std","application\/vnd.sun.xml.impress":"sxi","application\/vnd.sun.xml.impress.template":"sti","application\/vnd.sun.xml.math":"sxm","application\/vnd.sun.xml.writer":"sxw","application\/vnd.sun.xml.writer.global":"sxg","application\/vnd.sun.xml.writer.template":"stw","application\/vnd.sus-calendar":"sus","application\/vnd.svd":"svd","application\/vnd.symbian.install":"sis","application\/vnd.syncml+xml":"xsm","application\/vnd.syncml.dm+wbxml":"bdm","application\/vnd.syncml.dm+xml":"xdm","application\/vnd.tao.intent-module-archive":"tao","application\/vnd.tcpdump.pcap":"pcap","application\/vnd.tmobile-livetv":"tmo","application\/vnd.trid.tpt":"tpt","application\/vnd.triscape.mxs":"mxs","application\/vnd.trueapp":"tra","application\/vnd.ufdl":"ufd","application\/vnd.uiq.theme":"utz","application\/vnd.umajin":"umj","application\/vnd.unity":"unityweb","application\/vnd.uoml+xml":"uoml","application\/vnd.vcx":"vcx","application\/vnd.visio":"vsd","application\/vnd.visionary":"vis","application\/vnd.vsf":"vsf","application\/vnd.wap.wbxml":"wbxml","application\/vnd.wap.wmlc":"wmlc","application\/vnd.wap.wmlscriptc":"wmlsc","application\/vnd.webturbo":"wtb","application\/vnd.wolfram.player":"nbp","application\/vnd.wordperfect":"wpd","application\/vnd.wqd":"wqd","application\/vnd.wt.stf":"stf","application\/vnd.xara":"xar","application\/vnd.xfdl":"xfdl","application\/vnd.yamaha.hv-dic":"hvd","application\/vnd.yamaha.hv-script":"hvs","application\/vnd.yamaha.hv-voice":"hvp","application\/vnd.yamaha.openscoreformat":"osf","application\/vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","application\/vnd.yamaha.smaf-audio":"saf","application\/vnd.yamaha.smaf-phrase":"spf","application\/vnd.yellowriver-custom-menu":"cmp","application\/vnd.zul":"zir","application\/vnd.zzazz.deck+xml":"zaz","application\/voicexml+xml":"vxml","application\/widget":"wgt","application\/winhlp":"hlp","application\/wsdl+xml":"wsdl","application\/wspolicy+xml":"wspolicy","application\/x-7z-compressed":"7z","application\/x-abiword":"abw","application\/x-ace-compressed":"ace","application\/x-apple-diskimage":"dmg","application\/x-authorware-bin":"aab","application\/x-authorware-map":"aam","application\/x-authorware-seg":"aas","application\/x-bcpio":"bcpio","application\/x-bittorrent":"torrent","application\/x-blorb":"blb","application\/x-bzip":"bz","application\/x-cbr":"cbr","application\/x-cdlink":"vcd","application\/x-cfs-compressed":"cfs","application\/x-chat":"chat","application\/x-chess-pgn":"pgn","application\/x-conference":"nsc","application\/x-cpio":"cpio","application\/x-csh":"csh","application\/x-debian-package":"deb","application\/x-dgc-compressed":"dgc","application\/x-director":"dir","application\/x-doom":"wad","application\/x-dtbncx+xml":"ncx","application\/x-dtbook+xml":"dtb","application\/x-dtbresource+xml":"res","application\/x-dvi":"dvi","application\/x-envoy":"evy","application\/x-eva":"eva","application\/x-font-bdf":"bdf","application\/x-font-ghostscript":"gsf","application\/x-font-linux-psf":"psf","application\/x-font-pcf":"pcf","application\/x-font-snf":"snf","application\/x-font-type1":"pfa","application\/x-freearc":"arc","application\/x-futuresplash":"spl","application\/x-gca-compressed":"gca","application\/x-glulx":"ulx","application\/x-gnumeric":"gnumeric","application\/x-gramps-xml":"gramps","application\/x-gtar":"gtar","application\/x-hdf":"hdf","application\/x-install-instructions":"install","application\/x-iso9660-image":"iso","application\/x-java-jnlp-file":"jnlp","application\/x-latex":"latex","application\/x-lzh-compressed":"lzh","application\/x-mie":"mie","application\/x-mobipocket-ebook":"prc","application\/x-ms-application":"application","application\/x-ms-shortcut":"lnk","application\/x-ms-wmd":"wmd","application\/x-ms-wmz":"wmz","application\/x-ms-xbap":"xbap","application\/x-msaccess":"mdb","application\/x-msbinder":"obd","application\/x-mscardfile":"crd","application\/x-msclip":"clp","application\/x-msdownload":"dll","application\/x-msmediaview":"mvb","application\/x-msmetafile":"wmf","application\/x-msmoney":"mny","application\/x-mspublisher":"pub","application\/x-msschedule":"scd","application\/x-msterminal":"trm","application\/x-mswrite":"wri","application\/x-netcdf":"nc","application\/x-nzb":"nzb","application\/x-pkcs12":"p12","application\/x-pkcs7-certificates":"p7b","application\/x-pkcs7-certreqresp":"p7r","application\/x-research-info-systems":"ris","application\/x-shar":"shar","application\/x-shockwave-flash":"swf","application\/x-silverlight-app":"xap","application\/x-sql":"sql","application\/x-stuffit":"sit","application\/x-stuffitx":"sitx","application\/x-subrip":"srt","application\/x-sv4cpio":"sv4cpio","application\/x-sv4crc":"sv4crc","application\/x-t3vm-image":"t3","application\/x-tads":"gam","application\/x-tar":"tar","application\/x-tcl":"tcl","application\/x-tex":"tex","application\/x-tex-tfm":"tfm","application\/x-texinfo":"texinfo","application\/x-tgif":"obj","application\/x-ustar":"ustar","application\/x-wais-source":"src","application\/x-x509-ca-cert":"der","application\/x-xfig":"fig","application\/x-xliff+xml":"xlf","application\/x-xpinstall":"xpi","application\/x-xz":"xz","application\/x-zmachine":"z1","application\/xaml+xml":"xaml","application\/xcap-diff+xml":"xdf","application\/xenc+xml":"xenc","application\/xhtml+xml":"xhtml","application\/xml":"xsl","application\/xml-dtd":"dtd","application\/xop+xml":"xop","application\/xproc+xml":"xpl","application\/xslt+xml":"xslt","application\/xspf+xml":"xspf","application\/xv+xml":"mxml","application\/yang":"yang","application\/yin+xml":"yin","application\/zip":"zip","audio\/adpcm":"adp","audio\/basic":"au","audio\/midi":"mid","audio\/mp4":"m4a","audio\/mpeg":"mpga","audio\/ogg":"oga","audio\/s3m":"s3m","audio\/silk":"sil","audio\/vnd.dece.audio":"uva","audio\/vnd.digital-winds":"eol","audio\/vnd.dra":"dra","audio\/vnd.dts":"dts","audio\/vnd.dts.hd":"dtshd","audio\/vnd.lucent.voice":"lvp","audio\/vnd.ms-playready.media.pya":"pya","audio\/vnd.nuera.ecelp4800":"ecelp4800","audio\/vnd.nuera.ecelp7470":"ecelp7470","audio\/vnd.nuera.ecelp9600":"ecelp9600","audio\/vnd.rip":"rip","audio\/webm":"weba","audio\/x-aac":"aac","audio\/x-aiff":"aif","audio\/x-caf":"caf","audio\/x-flac":"flac","audio\/x-matroska":"mka","audio\/x-mpegurl":"m3u","audio\/x-ms-wax":"wax","audio\/x-ms-wma":"wma","audio\/x-pn-realaudio":"ram","audio\/x-pn-realaudio-plugin":"rmp","audio\/xm":"xm","chemical\/x-cdx":"cdx","chemical\/x-cif":"cif","chemical\/x-cmdf":"cmdf","chemical\/x-cml":"cml","chemical\/x-csml":"csml","chemical\/x-xyz":"xyz","font\/collection":"ttc","font\/otf":"otf","font\/ttf":"ttf","font\/woff":"woff","font\/woff2":"woff2","image\/cgm":"cgm","image\/g3fax":"g3","image\/gif":"gif","image\/ief":"ief","image\/jpeg":"jpeg","image\/ktx":"ktx","image\/png":"png","image\/prs.btif":"btif","image\/sgi":"sgi","image\/svg+xml":"svg","image\/tiff":"tiff","image\/vnd.adobe.photoshop":"psd","image\/vnd.dece.graphic":"uvi","image\/vnd.djvu":"djvu","image\/vnd.dvb.subtitle":"sub","image\/vnd.dwg":"dwg","image\/vnd.dxf":"dxf","image\/vnd.fastbidsheet":"fbs","image\/vnd.fpx":"fpx","image\/vnd.fst":"fst","image\/vnd.fujixerox.edmics-mmr":"mmr","image\/vnd.fujixerox.edmics-rlc":"rlc","image\/vnd.ms-modi":"mdi","image\/vnd.ms-photo":"wdp","image\/vnd.net-fpx":"npx","image\/vnd.wap.wbmp":"wbmp","image\/vnd.xiff":"xif","image\/webp":"webp","image\/x-3ds":"3ds","image\/x-cmu-raster":"ras","image\/x-cmx":"cmx","image\/x-freehand":"fh","image\/x-icon":"ico","image\/x-mrsid-image":"sid","image\/x-pcx":"pcx","image\/x-pict":"pic","image\/x-portable-anymap":"pnm","image\/x-portable-bitmap":"pbm","image\/x-portable-graymap":"pgm","image\/x-portable-pixmap":"ppm","image\/x-rgb":"rgb","image\/x-xpixmap":"xpm","image\/x-xwindowdump":"xwd","message\/rfc822":"eml","model\/iges":"igs","model\/mesh":"msh","model\/vnd.collada+xml":"dae","model\/vnd.dwf":"dwf","model\/vnd.gdl":"gdl","model\/vnd.gtw":"gtw","model\/vnd.vtu":"vtu","model\/vrml":"wrl","model\/x3d+binary":"x3db","model\/x3d+vrml":"x3dv","model\/x3d+xml":"x3d","text\/cache-manifest":"appcache","text\/calendar":"ics","text\/css":"css","text\/csv":"csv","text\/html":"html","text\/n3":"n3","text\/plain":"txt","text\/prs.lines.tag":"dsc","text\/richtext":"rtx","text\/sgml":"sgml","text\/tab-separated-values":"tsv","text\/troff":"t","text\/turtle":"ttl","text\/uri-list":"uri","text\/vcard":"vcard","text\/vnd.curl":"curl","text\/vnd.curl.dcurl":"dcurl","text\/vnd.curl.mcurl":"mcurl","text\/vnd.curl.scurl":"scurl","text\/vnd.fly":"fly","text\/vnd.fmi.flexstor":"flx","text\/vnd.graphviz":"gv","text\/vnd.in3d.3dml":"3dml","text\/vnd.in3d.spot":"spot","text\/vnd.sun.j2me.app-descriptor":"jad","text\/vnd.wap.wml":"wml","text\/vnd.wap.wmlscript":"wmls","text\/x-asm":"s","text\/x-c":"cc","text\/x-fortran":"f","text\/x-java-source":"java","text\/x-nfo":"nfo","text\/x-opml":"opml","text\/x-pascal":"p","text\/x-setext":"etx","text\/x-sfv":"sfv","text\/x-uuencode":"uu","text\/x-vcalendar":"vcs","text\/x-vcard":"vcf","video\/3gpp":"3gp","video\/3gpp2":"3g2","video\/h261":"h261","video\/h263":"h263","video\/h264":"h264","video\/jpeg":"jpgv","video\/jpm":"jpm","video\/mj2":"mj2","video\/mp4":"mp4","video\/mpeg":"mpeg","video\/quicktime":"qt","video\/vnd.dece.hd":"uvh","video\/vnd.dece.mobile":"uvm","video\/vnd.dece.pd":"uvp","video\/vnd.dece.sd":"uvs","video\/vnd.dece.video":"uvv","video\/vnd.dvb.file":"dvb","video\/vnd.fvt":"fvt","video\/vnd.mpegurl":"mxu","video\/vnd.ms-playready.media.pyv":"pyv","video\/vnd.uvvu.mp4":"uvu","video\/vnd.vivo":"viv","video\/webm":"webm","video\/x-f4v":"f4v","video\/x-fli":"fli","video\/x-flv":"flv","video\/x-m4v":"m4v","video\/x-matroska":"mkv","video\/x-mng":"mng","video\/x-ms-asf":"asf","video\/x-ms-vob":"vob","video\/x-ms-wmx":"wmx","video\/x-ms-wvx":"wvx","video\/x-msvideo":"avi","video\/x-sgi-movie":"movie","video\/x-smv":"smv","x-conference\/x-cooltalk":"ice","text\/x-sql":"sql","image\/x-pixlr-data":"pxd","image\/x-adobe-dng":"dng","image\/x-sketch":"sketch","image\/x-xcf":"xcf","audio\/amr":"amr","image\/vnd-ms.dds":"dds","application\/plt":"plt","application\/sat":"sat","application\/step":"step","text\/x-httpd-cgi":"cgi","text\/x-asap":"asp","text\/x-jsp":"jsp"};lib/js/elFinder.options.netmount.js000064400000003066147361034410013366 0ustar00/**
 * Default elFinder config of commandsOptions.netmount
 *
 * @type  Object
 */

elFinder.prototype._options.commandsOptions.netmount = {
	ftp: {
		name : 'FTP',
		inputs: {
			host     : jQuery('<input type="text"/>'),
			port     : jQuery('<input type="number" placeholder="21" class="elfinder-input-optional"/>'),
			path     : jQuery('<input type="text" value="/"/>'),
			user     : jQuery('<input type="text"/>'),
			pass     : jQuery('<input type="password" autocomplete="new-password"/>'),
			FTPS     : jQuery('<input type="checkbox" value="1" title="File Transfer Protocol over SSL/TLS"/>'),
			encoding : jQuery('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>'),
			locale   : jQuery('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>')
		}
	},
	dropbox2: elFinder.prototype.makeNetmountOptionOauth('dropbox2', 'Dropbox', 'Dropbox', {noOffline : true,
		root : '/',
		pathI18n : 'path',
		integrate : {
			title: 'Dropbox.com',
			link: 'https://www.dropbox.com'
		}
	}),
	googledrive: elFinder.prototype.makeNetmountOptionOauth('googledrive', 'Google Drive', 'Google', {
		integrate : {
			title: 'Google Drive',
			link: 'https://www.google.com/drive/'
		}
	}),
	onedrive: elFinder.prototype.makeNetmountOptionOauth('onedrive', 'One Drive', 'OneDrive', {
		integrate : {
			title: 'Microsoft OneDrive',
			link: 'https://onedrive.live.com'
		}
	}),
	box: elFinder.prototype.makeNetmountOptionOauth('box', 'Box', 'Box', {
		noOffline : true,
		integrate : {
			title: 'Box.com',
			link: 'https://www.box.com'
		}
	})
};
lib/js/elFinder.history.js000064400000004567147361034410011533 0ustar00/**
 * @class elFinder.history
 * Store visited folders
 * and provide "back" and "forward" methods
 *
 * @author Dmitry (dio) Levashov
 */
elFinder.prototype.history = function(fm) {
	"use strict";
	var self = this,
		/**
		 * Update history on "open" event?
		 *
		 * @type Boolean
		 */
		update = true,
		/**
		 * Directories hashes storage
		 *
		 * @type Array
		 */
		history = [],
		/**
		 * Current directory index in history
		 *
		 * @type Number
		 */
		current,
		/**
		 * Clear history
		 *
		 * @return void
		 */
		reset = function() {
			history = [fm.cwd().hash];
			current = 0;
			update  = true;
		},
		/**
		 * Browser native history object
		 */
		nativeHistory = (fm.options.useBrowserHistory && window.history && window.history.pushState)? window.history : null,
		/**
		 * Open prev/next folder
		 *
		 * @Boolen  open next folder?
		 * @return jQuery.Deferred
		 */
		go = function(fwd) {
			if ((fwd && self.canForward()) || (!fwd && self.canBack())) {
				update = false;
				return fm.exec('open', history[fwd ? ++current : --current]).fail(reset);
			}
			return jQuery.Deferred().reject();
		},
		/**
		 * Sets the native history.
		 *
		 * @param String thash target hash
		 */
		setNativeHistory = function(thash) {
			if (nativeHistory && (! nativeHistory.state || nativeHistory.state.thash !== thash)) {
				nativeHistory.pushState({thash: thash}, null, location.pathname + location.search + (thash? '#elf_' + thash : ''));
			}
		};
	
	/**
	 * Return true if there is previous visited directories
	 *
	 * @return Boolen
	 */
	this.canBack = function() {
		return current > 0;
	};
	
	/**
	 * Return true if can go forward
	 *
	 * @return Boolen
	 */
	this.canForward = function() {
		return current < history.length - 1;
	};
	
	/**
	 * Go back
	 *
	 * @return void
	 */
	this.back = go;
	
	/**
	 * Go forward
	 *
	 * @return void
	 */
	this.forward = function() {
		return go(true);
	};
	
	// bind to elfinder events
	fm.bind('init', function() {
		if (nativeHistory && !nativeHistory.state) {
			setNativeHistory(fm.startDir());
		}
	})
	.open(function() {
		var l = history.length,
			cwd = fm.cwd().hash;

		if (update) {
			current >= 0 && l > current + 1 && history.splice(current+1);
			history[history.length-1] != cwd && history.push(cwd);
			current = history.length - 1;
		}
		update = true;

		setNativeHistory(cwd);
	})
	.reload(fm.options.reloadClearHistory && reset);
	
};
lib/js/proxy/elFinderSupportVer1.js000064400000023701147361034410013336 0ustar00/**
 * elFinder transport to support old protocol.
 *
 * @example
 * jQuery('selector').elfinder({
 *   .... 
 *   transport : new elFinderSupportVer1()
 * })
 *
 * @author Dmitry (dio) Levashov
 **/
window.elFinderSupportVer1 = function(upload) {
	"use strict";
	var self = this,
		dateObj, today, yesterday,
		getDateString = function(date) {
			return date.replace('Today', today).replace('Yesterday', yesterday);
		};
	
	dateObj = new Date();
	today = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate();
	dateObj = new Date(Date.now() - 86400000);
	yesterday = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate();
	
	this.upload = upload || 'auto';
	
	this.init = function(fm) {
		this.fm = fm;
		this.fm.parseUploadData = function(text) {
			var data;

			if (!jQuery.trim(text)) {
				return {error : ['errResponse', 'errDataEmpty']};
			}

			try {
				data = JSON.parse(text);
			} catch (e) {
				return {error : ['errResponse', 'errDataNotJSON']};
			}
			
			return self.normalize('upload', data);
		};
	};
	
	
	this.send = function(opts) {
		var self = this,
			fm = this.fm,
			dfrd = jQuery.Deferred(),
			cmd = opts.data.cmd,
			args = [],
			_opts = {},
			data,
			xhr;
			
		dfrd.abort = function() {
			if (xhr.state() == 'pending') {
				xhr.quiet = true;
				xhr.abort();
			}
		};
		
		switch (cmd) {
			case 'open':
				opts.data.tree = 1;
				break;
			case 'parents':
			case 'tree':
				return dfrd.resolve({tree : []});
			case 'get':
				opts.data.cmd = 'read';
				opts.data.current = fm.file(opts.data.target).phash;
				break;
			case 'put':
				opts.data.cmd = 'edit';
				opts.data.current = fm.file(opts.data.target).phash;
				break;
			case 'archive':
			case 'rm':
				opts.data.current = fm.file(opts.data.targets[0]).phash;
				break;
			case 'extract':
			case 'rename':
			case 'resize':
				opts.data.current = fm.file(opts.data.target).phash;
				break;
			case 'duplicate':
				_opts = jQuery.extend(true, {}, opts);

				jQuery.each(opts.data.targets, function(i, hash) {
					jQuery.ajax(Object.assign(_opts, {data : {cmd : 'duplicate', target : hash, current : fm.file(hash).phash}}))
						.fail(function(error) {
							fm.error(fm.res('error', 'connect'));
						})
						.done(function(data) {
							data = self.normalize('duplicate', data);
							if (data.error) {
								fm.error(data.error);
							} else if (data.added) {
								fm.trigger('add', {added : data.added});
							}
						});
				});
				return dfrd.resolve({});
				
			case 'mkdir':
			case 'mkfile':
				opts.data.current = opts.data.target;
				break;
			case 'paste':
				opts.data.current = opts.data.dst;
				if (! opts.data.tree) {
					jQuery.each(opts.data.targets, function(i, h) {
						if (fm.file(h) && fm.file(h).mime === 'directory') {
							opts.data.tree = '1';
							return false;
						}
					});
				}
				break;
				
			case 'size':
				return dfrd.resolve({error : fm.res('error', 'cmdsupport')});
			case 'search':
				return dfrd.resolve({error : fm.res('error', 'cmdsupport')});
				
			case 'file':
				opts.data.cmd = 'open';
				opts.data.current = fm.file(opts.data.target).phash;
				break;
		}
		// cmd = opts.data.cmd
		
		xhr = jQuery.ajax(opts)
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(raw) {
				data = self.normalize(cmd, raw);
				dfrd.resolve(data);
			});
			
		return dfrd;
	};
	
	// fix old connectors errors messages as possible
	// this.errors = {
	// 	'Unknown command'                                  : 'Unknown command.',
	// 	'Invalid backend configuration'                    : 'Invalid backend configuration.',
	// 	'Access denied'                                    : 'Access denied.',
	// 	'PHP JSON module not installed'                    : 'PHP JSON module not installed.',
	// 	'File not found'                                   : 'File not found.',
	// 	'Invalid name'                                     : 'Invalid file name.',
	// 	'File or folder with the same name already exists' : 'File named "$1" already exists in this location.',
	// 	'Not allowed file type'                            : 'Not allowed file type.',
	// 	'File exceeds the maximum allowed filesize'        : 'File exceeds maximum allowed size.',
	// 	'Unable to copy into itself'                       : 'Unable to copy "$1" into itself.',
	// 	'Unable to create archive'                         : 'Unable to create archive.',
	// 	'Unable to extract files from archive'             : 'Unable to extract files from "$1".'
	// }
	
	this.normalize = function(cmd, data) {
		var self = this,
			fm   = this.fm,
			files = {}, 
			filter = function(file) { return file && file.hash && file.name && file.mime ? file : null; },
			getDirs = function(items) {
				return jQuery.grep(items, function(i) {
					return i && i.mime && i.mime === 'directory'? true : false;
				});
			},
			getTreeDiff = function(files) {
				var dirs = getDirs(files);
				treeDiff = fm.diff(dirs, null, ['date', 'ts']);
				if (treeDiff.added.length) {
					treeDiff.added = getDirs(treeDiff.added);
				}
				if (treeDiff.changed.length) {
					treeDiff.changed = getDirs(treeDiff.changed);
				}
				if (treeDiff.removed.length) {
					var removed = [];
					jQuery.each(treeDiff.removed, function(i, h) {
						var item;
						if ((item = fm.file(h)) && item.mime === 'directory') {
							removed.push(h);
						}
					});
					treeDiff.removed = removed;
				}
				return treeDiff;
			},
			phash, diff, isCwd, treeDiff;

		if ((cmd == 'tmb' || cmd == 'get')) {
			return data;
		}
		
		// if (data.error) {
		// 	jQuery.each(data.error, function(i, msg) {
		// 		if (self.errors[msg]) {
		// 			data.error[i] = self.errors[msg];
		// 		}
		// 	});
		// }
		
		if (cmd == 'upload' && data.error && data.cwd) {
			data.warning = Object.assign({}, data.error);
			data.error = false;
		}
		
		
		if (data.error) {
			return data;
		}
		
		if (cmd == 'put') {

			phash = fm.file(data.target.hash).phash;
			return {changed : [this.normalizeFile(data.target, phash)]};
		}
		
		phash = data.cwd.hash;

		isCwd = (phash == fm.cwd().hash);
		
		if (data.tree) {
			jQuery.each(this.normalizeTree(data.tree), function(i, file) {
				files[file.hash] = file;
			});
		}
		
		jQuery.each(data.cdc||[], function(i, file) {
			var hash = file.hash,
				mcts;

			if (files[hash]) {
				if (file.date) {
					mcts = Date.parse(getDateString(file.date));
					if (mcts && !isNaN(mcts)) {
						files[hash].ts = Math.floor(mcts / 1000);
					} else {
						files[hash].date = file.date || fm.formatDate(file);
					}
				}
				files[hash].locked = file.hash == phash ? true : file.rm === void(0) ? false : !file.rm;
			} else {
				files[hash] = self.normalizeFile(file, phash, data.tmb);
			}
		});
		
		if (!data.tree) {
			jQuery.each(fm.files(), function(hash, file) {
				if (!files[hash] && file.phash != phash && file.mime == 'directory') {
					files[hash] = file;
				}
			});
		}
		
		if (cmd == 'open') {
			return {
					cwd     : files[phash] || this.normalizeFile(data.cwd),
					files   : jQuery.map(files, function(f) { return f; }),
					options : self.normalizeOptions(data),
					init    : !!data.params,
					debug   : data.debug
				};
		}
		
		if (isCwd) {
			diff = fm.diff(jQuery.map(files, filter));
		} else {
			if (data.tree && cmd !== 'paste') {
				diff = getTreeDiff(files);
			} else {
				diff = {
					added   : [],
					removed : [],
					changed : []
				};
				if (cmd === 'paste') {
					diff.sync = true;
				}
			}
		}
		
		return Object.assign({
			current : data.cwd.hash,
			error   : data.error,
			warning : data.warning,
			options : {tmb : !!data.tmb}
		}, diff);
		
	};
	
	/**
	 * Convert old api tree into plain array of dirs
	 *
	 * @param  Object  root dir
	 * @return Array
	 */
	this.normalizeTree = function(root) {
		var self     = this,
			result   = [],
			traverse = function(dirs, phash) {
				var i, dir;
				
				for (i = 0; i < dirs.length; i++) {
					dir = dirs[i];
					result.push(self.normalizeFile(dir, phash));
					dir.dirs.length && traverse(dir.dirs, dir.hash);
				}
			};

		traverse([root]);

		return result;
	};
	
	/**
	 * Convert file info from old api format into new one
	 *
	 * @param  Object  file
	 * @param  String  parent dir hash
	 * @return Object
	 */
	this.normalizeFile = function(file, phash, tmb) {
		var mime = file.mime || 'directory',
			size = mime == 'directory' && !file.linkTo ? 0 : file.size,
			mcts = file.date? Date.parse(getDateString(file.date)) : void 0,
			info = {
				url    : file.url,
				hash   : file.hash,
				phash  : phash,
				name   : file.name,
				mime   : mime,
				ts     : file.ts,
				size   : size,
				read   : file.read,
				write  : file.write,
				locked : !phash ? true : file.rm === void(0) ? false : !file.rm
			};
		
		if (! info.ts) {
			if (mcts && !isNaN(mcts)) {
				info.ts = Math.floor(mcts / 1000);
			} else {
				info.date = file.date || this.fm.formatDate(file);
			}
		}
		
		if (file.mime == 'application/x-empty' || file.mime == 'inode/x-empty') {
			info.mime = 'text/plain';
		}
		
		if (file.linkTo) {
			info.alias = file.linkTo;
		}

		if (file.linkTo) {
			info.linkTo = file.linkTo;
		}
		
		if (file.tmb) {
			info.tmb = file.tmb;
		} else if (info.mime.indexOf('image/') === 0 && tmb) {
			info.tmb = 1;
			
		}

		if (file.dirs && file.dirs.length) {
			info.dirs = true;
		}
		if (file.dim) {
			info.dim = file.dim;
		}
		if (file.resize) {
			info.resize = file.resize;
		}
		return info;
	};
	
	this.normalizeOptions = function(data) {
		var opts = {
				path          : data.cwd.rel,
				disabled      : jQuery.merge((data.disabled || []), [ 'search', 'netmount', 'zipdl' ]),
				tmb           : !!data.tmb,
				copyOverwrite : true
			};
		
		if (data.params) {
			opts.api      = 1;
			opts.url      = data.params.url;
			opts.archivers = {
				create  : data.params.archives || [],
				extract : data.params.extract || []
			};
		}
		
		if (opts.path.indexOf('/') !== -1) {
			opts.separator = '/';
		} else if (opts.path.indexOf('\\') !== -1) {
			opts.separator = '\\';
		}
		return opts;
	};
};
lib/js/extras/quicklook.googledocs.min.js000064400000003047147361034410014510 0ustar00!function(e,n){"function"==typeof define&&define.amd?define(["elfinder"],n):"undefined"!=typeof exports?module.exports=n(require("elfinder")):n(e.elFinder)}(this,function(e){"use strict";try{e.prototype.commands.quicklook.plugins||(e.prototype.commands.quicklook.plugins=[]),e.prototype.commands.quicklook.plugins.push(function(e){var n=e.fm,o=e.preview;o.on("update",function(i){var r,a,t=(e.window,i.file);0===t.mime.indexOf("application/vnd.google-apps.")&&("1"==t.url&&(o.hide(),$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+n.i18n("getLink")+"</button></div>").appendTo(e.info.find(".elfinder-quicklook-info")).on("click",function(){$(this).html('<span class="elfinder-spinner">'),n.request({data:{cmd:"url",target:t.hash},preventDefault:!0}).always(function(){o.show(),$(this).html("")}).done(function(i){var r=n.file(t.hash);e.value.url=r.url=i.url||"",e.value.url&&o.trigger($.Event("update",{file:e.value}))})})),""!==t.url&&"1"!=t.url&&(i.stopImmediatePropagation(),a=$('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span></div>').appendTo(e.info.find(".elfinder-quicklook-info")),r=$('<iframe class="elfinder-quicklook-preview-iframe"></iframe>').css("background-color","transparent").on("load",function(){e.hideinfo(),a.remove(),r.css("background-color","#fff")}).on("error",function(){a.remove(),r.remove()}).appendTo(o).attr("src",n.url(t.hash)),o.one("change",function(){a.remove(),r.off("load").remove()})))})})}catch(n){}});lib/js/extras/encoding-japanese.min.js000064400000665110147361034410013742 0ustar00/*!
 * encoding-japanese v1.0.25 - Converts character encoding.
 * Copyright (c) 2013-2016 polygon planet
 * https://github.com/polygonplanet/encoding.js
 * @license MIT
 */
!function(a,b,c){"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports?module.exports=c():exports[a]=c():"function"==typeof define&&define.amd?define(c):b[a]=c()}("Encoding",this,function(){"use strict";function a(a){for(var b,c=0,d=a&&a.length;c<d;c++){if(b=a[c],b>255)return!1;if(b>=0&&b<=7||255===b)return!0}return!1}function b(a){for(var b,c=0,d=a&&a.length;c<d;c++)if(b=a[c],b>255||b>=128&&b<=255||27===b)return!1;return!0}function c(a){for(var b,c,d,e=0,f=a&&a.length;e<f;e++){if(b=a[e],b>255||b>=128&&b<=255)return!1;if(27===b){if(e+2>=f)return!1;if(c=a[e+1],d=a[e+2],36===c){if(40===d||64===d||66===d)return!0}else{if(38===c&&64===d)return!0;if(40===c&&(66===d||73===d||74===d))return!0}}}return!1}function d(a){for(var b,c=0,d=a&&a.length;c<d;c++)if(b=a[c],!(b<128)){if(b>255||b<142)return!1;if(142===b){if(c+1>=d)return!1;if(b=a[++c],b<161||223<b)return!1}else if(143===b){if(c+2>=d)return!1;if(b=a[++c],b<162||237<b)return!1;if(b=a[++c],b<161||254<b)return!1}else{if(!(161<=b&&b<=254))return!1;if(c+1>=d)return!1;if(b=a[++c],b<161||254<b)return!1}}return!0}function e(a){for(var b,c=0,d=a&&a.length;c<d&&a[c]>128;)if(a[c++]>255)return!1;for(;c<d;c++)if(b=a[c],!(b<=128||161<=b&&b<=223)){if(160===b||b>239||c+1>=d)return!1;if(b=a[++c],b<64||127===b||b>252)return!1}return!0}function f(a){for(var b,c=0,d=a&&a.length;c<d;c++){if(b=a[c],b>255)return!1;if(!(9===b||10===b||13===b||b>=32&&b<=126))if(b>=194&&b<=223){if(c+1>=d||a[c+1]<128||a[c+1]>191)return!1;c++}else if(224===b){if(c+2>=d||a[c+1]<160||a[c+1]>191||a[c+2]<128||a[c+2]>191)return!1;c+=2}else if(b>=225&&b<=236||238===b||239===b){if(c+2>=d||a[c+1]<128||a[c+1]>191||a[c+2]<128||a[c+2]>191)return!1;c+=2}else if(237===b){if(c+2>=d||a[c+1]<128||a[c+1]>159||a[c+2]<128||a[c+2]>191)return!1;c+=2}else if(240===b){if(c+3>=d||a[c+1]<144||a[c+1]>191||a[c+2]<128||a[c+2]>191||a[c+3]<128||a[c+3]>191)return!1;c+=3}else if(b>=241&&b<=243){if(c+3>=d||a[c+1]<128||a[c+1]>191||a[c+2]<128||a[c+2]>191||a[c+3]<128||a[c+3]>191)return!1;c+=3}else{if(244!==b)return!1;if(c+3>=d||a[c+1]<128||a[c+1]>143||a[c+2]<128||a[c+2]>191||a[c+3]<128||a[c+3]>191)return!1;c+=3}}return!0}function g(a){var b,c,d,e,f=0,g=a&&a.length,h=null;if(g<2){if(a[0]>255)return!1}else{if(b=a[0],c=a[1],255===b&&254===c)return!0;if(254===b&&255===c)return!0;for(;f<g;f++){if(0===a[f]){h=f;break}if(a[f]>255)return!1}if(null===h)return!1;if(d=a[h+1],void 0!==d&&d>0&&d<128)return!0;if(e=a[h-1],void 0!==e&&e>0&&e<128)return!0}return!1}function h(a){var b,c,d=0,e=a&&a.length,f=null;if(e<2){if(a[0]>255)return!1}else{if(b=a[0],c=a[1],254===b&&255===c)return!0;for(;d<e;d++){if(0===a[d]){f=d;break}if(a[d]>255)return!1}if(null===f)return!1;if(f%2===0)return!0}return!1}function i(a){var b,c,d=0,e=a&&a.length,f=null;if(e<2){if(a[0]>255)return!1}else{if(b=a[0],c=a[1],255===b&&254===c)return!0;for(;d<e;d++){if(0===a[d]){f=d;break}if(a[d]>255)return!1}if(null===f)return!1;if(f%2!==0)return!0}return!1}function j(a){var b,c,d,e,f,g,h=0,i=a&&a.length,j=null;if(i<4){for(;h<i;h++)if(a[h]>255)return!1}else{if(b=a[0],c=a[1],d=a[2],e=a[3],0===b&&0===c&&254===d&&255===e)return!0;if(255===b&&254===c&&0===d&&0===e)return!0;for(;h<i;h++){if(0===a[h]&&0===a[h+1]&&0===a[h+2]){j=h;break}if(a[h]>255)return!1}if(null===j)return!1;if(f=a[j+3],void 0!==f&&f>0&&f<=127)return 0===a[j+2]&&0===a[j+1];if(g=a[j-1],void 0!==g&&g>0&&g<=127)return 0===a[j+1]&&0===a[j+2]}return!1}function k(a){for(var b,c=0,d=a&&a.length;c<d;c++)if(b=a[c],b<0||b>1114111)return!1;return!0}function l(a){for(var b,c,d=[],e=0,f=0,g=a&&a.length;f<g;f++){for(;27===a[f];)if(36===a[f+1]&&66===a[f+2]||36===a[f+1]&&64===a[f+2]?e=1:40===a[f+1]&&73===a[f+2]?e=2:36===a[f+1]&&40===a[f+2]&&68===a[f+3]?(e=3,f++):e=0,f+=3,void 0===a[f])return d;1===e?(b=a[f],c=a[++f],1&b?(b>>=1,b<47?b+=113:b-=79,c+=c>95?32:31):(b>>=1,b<=47?b+=112:b-=80,c+=126),d[d.length]=255&b,d[d.length]=255&c):2===e?d[d.length]=a[f]+128&255:3===e?d[d.length]=Da:d[d.length]=255&a[f]}return d}function m(a){for(var b=[],c=0,d=a&&a.length,e=0;e<d;e++){for(;27===a[e];)if(36===a[e+1]&&66===a[e+2]||36===a[e+1]&&64===a[e+2]?c=1:40===a[e+1]&&73===a[e+2]?c=2:36===a[e+1]&&40===a[e+2]&&68===a[e+3]?(c=3,e++):c=0,e+=3,void 0===a[e])return b;1===c?(b[b.length]=a[e]+128&255,b[b.length]=a[++e]+128&255):2===c?(b[b.length]=142,b[b.length]=a[e]+128&255):3===c?(b[b.length]=143,b[b.length]=a[e]+128&255,b[b.length]=a[++e]+128&255):b[b.length]=255&a[e]}return b}function n(a){for(var b,c,d=[],e=0,f=a&&a.length,g=0,h=[27,40,66,27,36,66,27,40,73];g<f;g++)b=a[g],b>=161&&b<=223?(2!==e&&(e=2,d[d.length]=h[6],d[d.length]=h[7],d[d.length]=h[8]),d[d.length]=b-128&255):b>=128?(1!==e&&(e=1,d[d.length]=h[3],d[d.length]=h[4],d[d.length]=h[5]),b<<=1,c=a[++g],c<159?(b-=b<319?225:97,c-=c>126?32:31):(b-=b<319?224:96,c-=126),d[d.length]=255&b,d[d.length]=255&c):(0!==e&&(e=0,d[d.length]=h[0],d[d.length]=h[1],d[d.length]=h[2]),d[d.length]=255&b);return 0!==e&&(d[d.length]=h[0],d[d.length]=h[1],d[d.length]=h[2]),d}function o(a){for(var b,c,d=[],e=a&&a.length,f=0;f<e;f++)b=a[f],b>=161&&b<=223?(d[d.length]=142,d[d.length]=b):b>=129?(c=a[++f],b<<=1,c<159?(b-=b<319?97:225,c+=c>126?96:97):(b-=b<319?96:224,c+=2),d[d.length]=255&b,d[d.length]=255&c):d[d.length]=255&b;return d}function p(a){for(var b,c=[],d=0,e=a&&a.length,f=0,g=[27,40,66,27,36,66,27,40,73,27,36,40,68];f<e;f++)b=a[f],142===b?(2!==d&&(d=2,c[c.length]=g[6],c[c.length]=g[7],c[c.length]=g[8]),c[c.length]=a[++f]-128&255):143===b?(3!==d&&(d=3,c[c.length]=g[9],c[c.length]=g[10],c[c.length]=g[11],c[c.length]=g[12]),c[c.length]=a[++f]-128&255,c[c.length]=a[++f]-128&255):b>142?(1!==d&&(d=1,c[c.length]=g[3],c[c.length]=g[4],c[c.length]=g[5]),c[c.length]=b-128&255,c[c.length]=a[++f]-128&255):(0!==d&&(d=0,c[c.length]=g[0],c[c.length]=g[1],c[c.length]=g[2]),c[c.length]=255&b);return 0!==d&&(c[c.length]=g[0],c[c.length]=g[1],c[c.length]=g[2]),c}function q(a){for(var b,c,d=[],e=a&&a.length,f=0;f<e;f++)b=a[f],143===b?(d[d.length]=Da,f+=2):b>142?(c=a[++f],1&b?(b>>=1,b+=b<111?49:113,c-=c>223?96:97):(b>>=1,b+=b<=111?48:112,c-=2),d[d.length]=255&b,d[d.length]=255&c):142===b?d[d.length]=255&a[++f]:d[d.length]=255&b;return d}function r(a){Ca();for(var b,c,d,e,f,g,h,i=[],j=0,k=a&&a.length;j<k;j++)b=a[j],b>=161&&b<=223?(d=b-64,e=188|d>>6&3,f=128|63&d,i[i.length]=239,i[i.length]=255&e,i[i.length]=255&f):b>=128?(c=b<<1,d=a[++j],d<159?(c-=c<319?225:97,d-=d>126?32:31):(c-=c<319?224:96,d-=126),c&=255,g=(c<<8)+d,h=Ya[g],void 0===h?i[i.length]=Da:h<65535?(i[i.length]=h>>8&255,i[i.length]=255&h):(i[i.length]=h>>16&255,i[i.length]=h>>8&255,i[i.length]=255&h)):i[i.length]=255&a[j];return i}function s(a){Ca();for(var b,c,d,e,f,g,h,i,j=[],k=0,l=a&&a.length;k<l;k++)b=a[k],142===b?(c=a[++k]-64,d=188|c>>6&3,e=128|63&c,j[j.length]=239,j[j.length]=255&d,j[j.length]=255&e):143===b?(f=a[++k]-128,g=a[++k]-128,h=(f<<8)+g,i=Za[h],void 0===i?j[j.length]=Da:i<65535?(j[j.length]=i>>8&255,j[j.length]=255&i):(j[j.length]=i>>16&255,j[j.length]=i>>8&255,j[j.length]=255&i)):b>=128?(h=(b-128<<8)+(a[++k]-128),i=Ya[h],void 0===i?j[j.length]=Da:i<65535?(j[j.length]=i>>8&255,j[j.length]=255&i):(j[j.length]=i>>16&255,j[j.length]=i>>8&255,j[j.length]=255&i)):j[j.length]=255&a[k];return j}function t(a){Ca();for(var b,c,d,e,f,g=[],h=0,i=0,j=a&&a.length;i<j;i++){for(;27===a[i];)if(36===a[i+1]&&66===a[i+2]||36===a[i+1]&&64===a[i+2]?h=1:40===a[i+1]&&73===a[i+2]?h=2:36===a[i+1]&&40===a[i+2]&&68===a[i+3]?(h=3,i++):h=0,i+=3,void 0===a[i])return g;1===h?(e=(a[i]<<8)+a[++i],f=Ya[e],void 0===f?g[g.length]=Da:f<65535?(g[g.length]=f>>8&255,g[g.length]=255&f):(g[g.length]=f>>16&255,g[g.length]=f>>8&255,g[g.length]=255&f)):2===h?(b=a[i]+64,c=188|b>>6&3,d=128|63&b,g[g.length]=239,g[g.length]=255&c,g[g.length]=255&d):3===h?(e=(a[i]<<8)+a[++i],f=Za[e],void 0===f?g[g.length]=Da:f<65535?(g[g.length]=f>>8&255,g[g.length]=255&f):(g[g.length]=f>>16&255,g[g.length]=f>>8&255,g[g.length]=255&f)):g[g.length]=255&a[i]}return g}function u(a){for(var b,c,d,e,f,g=[],h=0,i=a&&a.length;h<i;h++)b=a[h],b>=128?(e=b<=223?(b<<8)+a[++h]:(b<<16)+(a[++h]<<8)+(255&a[++h]),
f=Wa[e],void 0===f?g[g.length]=Da:f<255?g[g.length]=f+128:(f>65536&&(f-=65536),c=f>>8,d=255&f,1&c?(c>>=1,c<47?c+=113:c-=79,d+=d>95?32:31):(c>>=1,c<=47?c+=112:c-=80,d+=126),g[g.length]=255&c,g[g.length]=255&d)):g[g.length]=255&a[h];return g}function v(a){for(var b,c,d,e=[],f=0,g=a&&a.length;f<g;f++)b=a[f],b>=128?(c=b<=223?(a[f++]<<8)+a[f]:(a[f++]<<16)+(a[f++]<<8)+(255&a[f]),d=Wa[c],void 0===d?(d=Xa[c],void 0===d?e[e.length]=Da:(e[e.length]=143,e[e.length]=(d>>8)-128&255,e[e.length]=(255&d)-128&255)):(d>65536&&(d-=65536),d<255?(e[e.length]=142,e[e.length]=d-128&255):(e[e.length]=(d>>8)-128&255,e[e.length]=(255&d)-128&255))):e[e.length]=255&a[f];return e}function w(a){for(var b,c,d,e=[],f=0,g=a&&a.length,h=0,i=[27,40,66,27,36,66,27,40,73,27,36,40,68];h<g;h++)b=a[h],b<128?(0!==f&&(f=0,e[e.length]=i[0],e[e.length]=i[1],e[e.length]=i[2]),e[e.length]=255&b):(c=b<=223?(a[h]<<8)+a[++h]:(a[h]<<16)+(a[++h]<<8)+a[++h],d=Wa[c],void 0===d?(d=Xa[c],void 0===d?(0!==f&&(f=0,e[e.length]=i[0],e[e.length]=i[1],e[e.length]=i[2]),e[e.length]=Da):(3!==f&&(f=3,e[e.length]=i[9],e[e.length]=i[10],e[e.length]=i[11],e[e.length]=i[12]),e[e.length]=d>>8&255,e[e.length]=255&d)):(d>65536&&(d-=65536),d<255?(2!==f&&(f=2,e[e.length]=i[6],e[e.length]=i[7],e[e.length]=i[8]),e[e.length]=255&d):(1!==f&&(f=1,e[e.length]=i[3],e[e.length]=i[4],e[e.length]=i[5]),e[e.length]=d>>8&255,e[e.length]=255&d)));return 0!==f&&(e[e.length]=i[0],e[e.length]=i[1],e[e.length]=i[2]),e}function x(a){for(var b,c,d=[],e=0,f=a&&a.length;e<f;e++)b=a[e],b>=55296&&b<=56319&&e+1<f&&(c=a[e+1],c>=56320&&c<=57343&&(b=1024*(b-55296)+c-56320+65536,e++)),b<128?d[d.length]=b:b<2048?(d[d.length]=192|b>>6&31,d[d.length]=128|63&b):b<65536?(d[d.length]=224|b>>12&15,d[d.length]=128|b>>6&63,d[d.length]=128|63&b):b<2097152&&(d[d.length]=240|b>>18&15,d[d.length]=128|b>>12&63,d[d.length]=128|b>>6&63,d[d.length]=128|63&b);return d}function y(a){for(var b,c,d,e,f,g,h=[],i=0,j=a&&a.length;i<j;)c=a[i++],b=c>>4,b>=0&&b<=7?g=c:12===b||13===b?(d=a[i++],g=(31&c)<<6|63&d):14===b?(d=a[i++],e=a[i++],g=(15&c)<<12|(63&d)<<6|63&e):15===b&&(d=a[i++],e=a[i++],f=a[i++],g=(7&c)<<18|(63&d)<<12|(63&e)<<6|63&f),g<=65535?h[h.length]=g:(g-=65536,h[h.length]=(g>>10)+55296,h[h.length]=g%1024+56320);return h}function z(a,b){var c;if(b&&b.bom){var d=b.bom;qa(d)||(d="BE");var e,f;"B"===d.charAt(0).toUpperCase()?(e=[254,255],f=A(a)):(e=[255,254],f=B(a)),c=[],c[0]=e[0],c[1]=e[1];for(var g=0,h=f.length;g<h;g++)c[c.length]=f[g]}else c=A(a);return c}function A(a){for(var b,c=[],d=0,e=a&&a.length;d<e;)b=a[d++],b<=255?(c[c.length]=0,c[c.length]=b):b<=65535&&(c[c.length]=b>>8&255,c[c.length]=255&b);return c}function B(a){for(var b,c=[],d=0,e=a&&a.length;d<e;)b=a[d++],b<=255?(c[c.length]=b,c[c.length]=0):b<=65535&&(c[c.length]=255&b,c[c.length]=b>>8&255);return c}function C(a){var b,c,d=[],e=0,f=a&&a.length;for(f>=2&&(254===a[0]&&255===a[1]||255===a[0]&&254===a[1])&&(e=2);e<f;)b=a[e++],c=a[e++],0===b?d[d.length]=c:d[d.length]=(255&b)<<8|255&c;return d}function D(a){var b,c,d=[],e=0,f=a&&a.length;for(f>=2&&(254===a[0]&&255===a[1]||255===a[0]&&254===a[1])&&(e=2);e<f;)b=a[e++],c=a[e++],0===c?d[d.length]=b:d[d.length]=(255&c)<<8|255&b;return d}function E(a){for(var b,c,d=[],e=0,f=a&&a.length,g=!1,h=!0;e<f;)b=a[e++],c=a[e++],h&&2===e?(h=!1,254===b&&255===c?g=!1:255===b&&254===c?g=!0:(g=i(a),e=0)):g?0===c?d[d.length]=b:d[d.length]=(255&c)<<8|255&b:0===b?d[d.length]=c:d[d.length]=(255&b)<<8|255&c;return d}function F(a){for(var b,c,d=[],e=0,f=a&&a.length,g=!1,h=!0;e<f;)b=a[e++],c=a[e++],h&&2===e?(h=!1,254===b&&255===c?g=!1:255===b&&254===c?g=!0:(g=i(a),e=0)):g?(d[d.length]=c,d[d.length]=b):(d[d.length]=b,d[d.length]=c);return d}function G(a,b){var c,d=!1;if(b&&b.bom){var e=b.bom;qa(e)||(e="BE"),"B"===e.charAt(0).toUpperCase()?c=[254,255]:(c=[255,254],d=!0)}var f=[],g=a&&a.length,h=0;g>=2&&(254===a[0]&&255===a[1]||255===a[0]&&254===a[1])&&(h=2),c&&(f[0]=c[0],f[1]=c[1]);for(var i,j;h<g;)i=a[h++],j=a[h++],d?(f[f.length]=j,f[f.length]=i):(f[f.length]=i,f[f.length]=j);return f}function H(a){for(var b,c,d=[],e=0,f=a&&a.length,g=!1,h=!0;e<f;)b=a[e++],c=a[e++],h&&2===e?(h=!1,254===b&&255===c?g=!1:255===b&&254===c?g=!0:(g=i(a),e=0)):g?(d[d.length]=b,d[d.length]=c):(d[d.length]=c,d[d.length]=b);return d}function I(a,b){var c,d=!1;if(b&&b.bom){var e=b.bom;qa(e)||(e="BE"),"B"===e.charAt(0).toUpperCase()?c=[254,255]:(c=[255,254],d=!0)}var f=[],g=a&&a.length,h=0;g>=2&&(254===a[0]&&255===a[1]||255===a[0]&&254===a[1])&&(h=2),c&&(f[0]=c[0],f[1]=c[1]);for(var i,j;h<g;)i=a[h++],j=a[h++],d?(f[f.length]=i,f[f.length]=j):(f[f.length]=j,f[f.length]=i);return f}function J(a){var b,c,d=[],e=0,f=a&&a.length;for(f>=2&&(254===a[0]&&255===a[1]||255===a[0]&&254===a[1])&&(e=2);e<f;)b=a[e++],c=a[e++],d[d.length]=c,d[d.length]=b;return d}function K(a){return J(a)}function L(a){return w(x(a))}function M(a){return y(t(a))}function N(a){return v(x(a))}function O(a){return y(s(a))}function P(a){return u(x(a))}function Q(a){return y(r(a))}function R(a,b){return z(y(a),b)}function S(a){return x(E(a))}function T(a){return A(y(a))}function U(a){return x(C(a))}function V(a){return B(y(a))}function W(a){return x(D(a))}function X(a,b){return R(t(a),b)}function Y(a){return w(S(a))}function Z(a){return T(t(a))}function jQuery(a){return w(U(a))}function _(a){return V(t(a))}function aa(a){return w(W(a))}function ba(a,b){return R(s(a),b)}function ca(a){return v(S(a))}function da(a){return T(s(a))}function ea(a){return v(U(a))}function fa(a){return V(s(a))}function ga(a){return v(W(a))}function ha(a,b){return R(r(a),b)}function ia(a){return u(S(a))}function ja(a){return T(r(a))}function ka(a){return u(U(a))}function la(a){return V(r(a))}function ma(a){return u(W(a))}function na(a){for(var b,c,d,e="",f=(""+a).toUpperCase().replace(/[^A-Z0-9]+/g,""),g=ra(Oa),h=g.length,i=0,j=0;j<h;j++){if(b=g[j],b===f){e=b;break}for(c=b.length,d=i;d<c;d++)b.slice(0,d)!==f.slice(0,d)&&b.slice(-d)!==f.slice(-d)||(e=b,i=d)}return Ha.call(Oa,e)?Oa[e]:e}function oa(a){var b=typeof a;return"function"===b||"object"===b&&!!a}function pa(a){return Array.isArray?Array.isArray(a):"[object Array]"===Ga.call(a)}function qa(a){return"string"==typeof a||"[object String]"===Ga.call(a)}function ra(a){if(Object.keys)return Object.keys(a);var b=[];for(var c in a)Ha.call(a,c)&&(b[b.length]=c);return b}function sa(a,b){if(!Ia)return new Array(b);switch(a){case 8:return new Uint8Array(b);case 16:return new Uint16Array(b)}}function ta(a){for(var b=a.length,c=sa(16,b),d=0;d<b;d++)c[d]=a.charCodeAt(d);return c}function ua(a){if(Ja&&Ka){var b=a&&a.length;if(b<La){if(Ma)return Ea.apply(null,a);if(null===Ma)try{var c=Ea.apply(null,a);return b>La&&(Ma=!0),c}catch(a){Ma=!1}}}return va(a)}function va(a){for(var b,c="",d=a&&a.length,e=0;e<d;){if(b=a.subarray?a.subarray(e,e+La):a.slice(e,e+La),e+=La,!Ma){if(null===Ma)try{c+=Ea.apply(null,b),b.length>La&&(Ma=!0);continue}catch(a){Ma=!1}return wa(a)}c+=Ea.apply(null,b)}return c}function wa(a){for(var b="",c=a&&a.length,d=0;d<c;d++)b+=Ea(a[d]);return b}function xa(a){for(var b=[],c=a&&a.length,d=0;d<c;d++)b[d]=a.charCodeAt(d);return b}function ya(a){if(Ia)return new Uint16Array(a);if(pa(a))return a;for(var b=a&&a.length,c=[],d=0;d<b;d++)c[d]=a[d];return c}function za(a){return pa(a)?a:Fa.call(a)}function Aa(a){var b,c,d,e,f,g;for(d=a&&a.length,c=0,b=[];c<d;){if(e=a[c++],c==d){b[b.length]=Ta[e>>2],b[b.length]=Ta[(3&e)<<4],b[b.length]=Va,b[b.length]=Va;break}if(f=a[c++],c==d){b[b.length]=Ta[e>>2],b[b.length]=Ta[(3&e)<<4|(240&f)>>4],b[b.length]=Ta[(15&f)<<2],b[b.length]=Va;break}g=a[c++],b[b.length]=Ta[e>>2],b[b.length]=Ta[(3&e)<<4|(240&f)>>4],b[b.length]=Ta[(15&f)<<2|(192&g)>>6],b[b.length]=Ta[63&g]}return ua(b)}function Ba(a){var b,c,d,e,f,g,h;for(g=a&&a.length,f=0,h=[];f<g;){do b=Ua[255&a.charCodeAt(f++)];while(f<g&&b==-1);if(b==-1)break;do c=Ua[255&a.charCodeAt(f++)];while(f<g&&c==-1);if(c==-1)break;h[h.length]=b<<2|(48&c)>>4;do{if(d=255&a.charCodeAt(f++),61==d)return h;d=Ua[d]}while(f<g&&d==-1);if(d==-1)break;h[h.length]=(15&c)<<4|(60&d)>>2;
do{if(e=255&a.charCodeAt(f++),61==e)return h;e=Ua[e]}while(f<g&&e==-1);if(e==-1)break;h[h.length]=(3&d)<<6|e}return h}function Ca(){if(null===Ya){Ya={};for(var a,b,c=ra(Wa),d=0,e=c.length;d<e;d++)a=c[d],b=Wa[a],b>95&&(Ya[b]=0|a);for(Za={},c=ra(Xa),e=c.length,d=0;d<e;d++)a=c[d],b=Xa[a],Za[b]=0|a}}var Da="?".charCodeAt(0),Ea=String.fromCharCode,Fa=Array.prototype.slice,Ga=Object.prototype.toString,Ha=Object.prototype.hasOwnProperty,Ia="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array,Ja=!1,Ka=!1;try{"a"===Ea.apply(null,[97])&&(Ja=!0)}catch(a){}if(Ia)try{"a"===Ea.apply(null,new Uint8Array([97]))&&(Ka=!0)}catch(a){}var La=65533,Ma=null,Na={UTF32:{order:0},UTF32BE:{alias:["UCS4"]},UTF32LE:null,UTF16:{order:1},UTF16BE:{alias:["UCS2"]},UTF16LE:null,BINARY:{order:2},ASCII:{order:3,alias:["ISO646","CP367"]},JIS:{order:4,alias:["ISO2022JP"]},UTF8:{order:5},EUCJP:{order:6},SJIS:{order:7,alias:["CP932","MSKANJI","WINDOWS31J"]},UNICODE:{order:8}},Oa={},Pa=function(){for(var a,b,c,d,e=Oa,f=ra(Na),g=[],h=0,i=f.length;h<i;h++)if(a=f[h],e[a]=a,b=Na[a],null!=b&&("undefined"!=typeof b.order&&(g[g.length]=a),b.alias))for(c=0,d=b.alias.length;c<d;c++)e[b.alias[c]]=a;return g.sort(function(a,b){return Na[a].order-Na[b].order}),g}(),Qa={orders:Pa,detect:function(a,b){if(null==a||0===a.length)return!1;oa(b)&&!pa(b)&&(b=b.encoding),qa(a)&&(a=ta(a)),null==b?b=Qa.orders:qa(b)&&(b=b.toUpperCase(),b="AUTO"===b?Qa.orders:~b.indexOf(",")?b.split(/\s*,\s*/):[b]);for(var c,d,e,f=b.length,g=0;g<f;g++)if(c=b[g],d=na(c)){if(e="is"+d,!Ha.call(Ra,e))throw new Error("Undefined encoding: "+c);if(Ra[e](a))return d}return!1},convert:function(a,b,c){var d,e,f={};oa(b)&&(f=b,c=f.from,b=f.to,f.type&&(e=f.type)),qa(a)?(e=e||"string",a=ta(a)):null!=a&&0!==a.length||(a=[]);var g;g=null!=c&&qa(c)&&"AUTO"!==c.toUpperCase()&&!~c.indexOf(",")?na(c):Qa.detect(a);var h=na(b),i=g+"To"+h;switch(d=Ha.call(Sa,i)?Sa[i](a,f):a,(""+e).toLowerCase()){case"string":return ua(d);case"arraybuffer":return ya(d);case"array":default:return za(d)}},urlEncode:function(a){qa(a)&&(a=ta(a));for(var b,c=xa("0123456789ABCDEF"),d=[],e=0,f=a&&a.length;e<f;e++){if(b=a[e],b>255)return encodeURIComponent(ua(a));b>=97&&b<=122||b>=65&&b<=90||b>=48&&b<=57||33===b||b>=39&&b<=42||45===b||46===b||95===b||126===b?d[d.length]=b:(d[d.length]=37,b<16?(d[d.length]=48,d[d.length]=c[b]):(d[d.length]=c[b>>4&15],d[d.length]=c[15&b]))}return ua(d)},urlDecode:function(a){for(var b,c=[],d=0,e=a&&a.length;d<e;)b=a.charCodeAt(d++),37===b?c[c.length]=parseInt(a.charAt(d++)+a.charAt(d++),16):c[c.length]=b;return c},base64Encode:function(a){return qa(a)&&(a=ta(a)),Aa(a)},base64Decode:function(a){return Ba(a)},codeToString:ua,stringToCode:xa,toHankakuCase:function(a){var b=!1;qa(a)&&(b=!0,a=ta(a));for(var c,d=[],e=a&&a.length,f=0;f<e;)c=a[f++],c>=65281&&c<=65374&&(c-=65248),d[d.length]=c;return b?ua(d):d},toZenkakuCase:function(a){var b=!1;qa(a)&&(b=!0,a=ta(a));for(var c,d=[],e=a&&a.length,f=0;f<e;)c=a[f++],c>=33&&c<=126&&(c+=65248),d[d.length]=c;return b?ua(d):d},toHiraganaCase:function(a){var b=!1;qa(a)&&(b=!0,a=ta(a));for(var c,d=[],e=a&&a.length,f=0;f<e;)c=a[f++],c>=12449&&c<=12534?c-=96:12535===c?(d[d.length]=12431,c=12443):12538===c&&(d[d.length]=12434,c=12443),d[d.length]=c;return b?ua(d):d},toKatakanaCase:function(a){var b=!1;qa(a)&&(b=!0,a=ta(a));for(var c,d=[],e=a&&a.length,f=0;f<e;)c=a[f++],c>=12353&&c<=12438&&((12431===c||12434===c)&&f<e&&12443===a[f]?(c=12431===c?12535:12538,f++):c+=96),d[d.length]=c;return b?ua(d):d},toHankanaCase:function(a){var b=!1;qa(a)&&(b=!0,a=ta(a));for(var c,d,e,f=[],g=a&&a.length,h=0;h<g;)c=a[h++],c>=12289&&c<=12540&&(e=$a[c],void 0!==e)?f[f.length]=e:12532===c||12535===c||12538===c?(f[f.length]=_a[c],f[f.length]=65438):c>=12459&&c<=12489?(f[f.length]=$a[c-1],f[f.length]=65438):c>=12495&&c<=12509?(d=c%3,f[f.length]=$a[c-d],f[f.length]=ab[d-1]):f[f.length]=c;return b?ua(f):f},toZenkanaCase:function(a){var b=!1;qa(a)&&(b=!0,a=ta(a));var c,d,e,f=[],g=a&&a.length,h=0;for(h=0;h<g;h++)c=a[h],c>65376&&c<65440&&(d=bb[c-65377],h+1<g&&(e=a[h+1],65438===e&&65395===c?(d=12532,h++):65438===e&&65436===c?(d=12535,h++):65438===e&&65382===c?(d=12538,h++):65438===e&&(c>65397&&c<65413||c>65417&&c<65423)?(d++,h++):65439===e&&c>65417&&c<65423&&(d+=2,h++)),c=d),f[f.length]=c;return b?ua(f):f},toHankakuSpace:function(a){if(qa(a))return a.replace(/\u3000/g," ");for(var b,c=[],d=a&&a.length,e=0;e<d;)b=a[e++],12288===b&&(b=32),c[c.length]=b;return c},toZenkakuSpace:function(a){if(qa(a))return a.replace(/\u0020/g,"\u3000");for(var b,c=[],d=a&&a.length,e=0;e<d;)b=a[e++],32===b&&(b=12288),c[c.length]=b;return c}},Ra={isBINARY:a,isASCII:b,isJIS:c,isEUCJP:d,isSJIS:e,isUTF8:f,isUTF16:g,isUTF16BE:h,isUTF16LE:i,isUTF32:j,isUNICODE:k},Sa={JISToEUCJP:m,EUCJPToJIS:p,JISToSJIS:l,SJISToJIS:n,EUCJPToSJIS:q,SJISToEUCJP:o,JISToUTF8:t,UTF8ToJIS:w,EUCJPToUTF8:s,UTF8ToEUCJP:v,SJISToUTF8:r,UTF8ToSJIS:u,UNICODEToUTF8:x,UTF8ToUNICODE:y,UNICODEToJIS:L,JISToUNICODE:M,UNICODEToEUCJP:N,EUCJPToUNICODE:O,UNICODEToSJIS:P,SJISToUNICODE:Q,UNICODEToUTF16:z,UTF16ToUNICODE:E,UNICODEToUTF16BE:A,UTF16BEToUNICODE:C,UNICODEToUTF16LE:B,UTF16LEToUNICODE:D,UTF8ToUTF16:R,UTF16ToUTF8:S,UTF8ToUTF16BE:T,UTF16BEToUTF8:U,UTF8ToUTF16LE:V,UTF16LEToUTF8:W,UTF16ToUTF16BE:F,UTF16BEToUTF16:G,UTF16ToUTF16LE:H,UTF16LEToUTF16:I,UTF16BEToUTF16LE:J,UTF16LEToUTF16BE:K,JISToUTF16:X,UTF16ToJIS:Y,JISToUTF16BE:Z,UTF16BEToJIS:$,JISToUTF16LE:_,UTF16LEToJIS:aa,EUCJPToUTF16:ba,UTF16ToEUCJP:ca,EUCJPToUTF16BE:da,UTF16BEToEUCJP:ea,EUCJPToUTF16LE:fa,UTF16LEToEUCJP:ga,SJISToUTF16:ha,UTF16ToSJIS:ia,SJISToUTF16BE:ja,UTF16BEToSJIS:ka,SJISToUTF16LE:la,UTF16LEToSJIS:ma},Ta=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],Ua=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],Va="=".charCodeAt(0),Wa={15711649:33,15711650:34,15711651:35,15711652:36,15711653:37,15711654:38,15711655:39,15711656:40,15711657:41,15711658:42,15711659:43,15711660:44,15711661:45,15711662:46,15711663:47,15711664:48,15711665:49,15711666:50,15711667:51,15711668:52,15711669:53,15711670:54,15711671:55,15711672:56,15711673:57,15711674:58,15711675:59,15711676:60,15711677:61,15711678:62,15711679:63,15711872:64,15711873:65,15711874:66,15711875:67,15711876:68,15711877:69,15711878:70,15711879:71,15711880:72,15711881:73,15711882:74,15711883:75,15711884:76,15711885:77,15711886:78,15711887:79,15711888:80,15711889:81,15711890:82,15711891:83,15711892:84,15711893:85,15711894:86,15711895:87,15711896:88,15711897:89,15711898:90,15711899:91,15711900:92,15711901:93,15711902:94,15711903:95,14848416:11553,14848417:11554,14848418:11555,14848419:11556,14848420:11557,14848421:11558,14848422:11559,14848423:11560,14848424:11561,14848425:11562,14848426:11563,14848427:11564,14848428:11565,14848429:11566,14848430:11567,14848431:11568,14848432:11569,14848433:11570,14848434:11571,14848435:11572,14845344:11573,14845345:11574,14845346:11575,14845347:11576,14845348:11577,14845349:11578,14845350:11579,14845351:11580,14845352:11581,14845353:11582,14912905:11584,14912660:11585,14912674:11586,14912909:11587,14912664:11588,14912679:11589,14912643:11590,14912694:11591,14912913:11592,14912919:11593,14912653:11594,14912678:11595,14912675:11596,14912683:11597,14912906:11598,14912699:11599,14913180:11600,14913181:11601,14913182:11602,14913166:11603,14913167:11604,14913412:11605,14913185:11606,14912955:11615,14909597:11616,14909599:11617,14845078:11618,14913421:11619,14845089:11620,14912164:11621,14912165:11622,14912166:11623,14912167:11624,14912168:11625,14911665:11626,14911666:11627,14911673:11628,
14912958:11629,14912957:11630,14912956:11631,14846126:11635,14846097:11636,14846111:11640,14846655:11641,14909568:8481,14909569:8482,14909570:8483,15711372:8484,15711374:8485,14910395:8486,15711386:8487,15711387:8488,15711391:8489,15711361:8490,14910107:8491,14910108:8492,49844:8493,15711616:8494,49832:8495,15711422:8496,15712163:8497,15711423:8498,14910397:8499,14910398:8500,14910109:8501,14910110:8502,14909571:8503,14990237:8504,14909573:8505,14909574:8506,14909575:8507,14910396:8508,14844053:8509,14844048:8510,15711375:8511,15711420:8512,15711646:8513,14844054:8514,15711644:8515,14844070:8516,14844069:8517,14844056:8518,14844057:8519,14844060:8520,14844061:8521,15711368:8522,15711369:8523,14909588:8524,14909589:8525,15711419:8526,15711421:8527,15711643:8528,15711645:8529,14909576:8530,14909577:8531,14909578:8532,14909579:8533,14909580:8534,14909581:8535,14909582:8536,14909583:8537,14909584:8538,14909585:8539,15711371:8540,15711373:8541,49841:8542,50071:8543,50103:8544,15711389:8545,14846368:8546,15711388:8547,15711390:8548,14846374:8549,14846375:8550,14846110:8551,14846132:8552,14850434:8553,14850432:8554,49840:8555,14844082:8556,14844083:8557,14845059:8558,15712165:8559,15711364:8560,15712160:8561,15712161:8562,15711365:8563,15711363:8564,15711366:8565,15711370:8566,15711392:8567,49831:8568,14850182:8569,14850181:8570,14849931:8571,14849935:8572,14849934:8573,14849927:8574,14849926:8737,14849697:8738,14849696:8739,14849715:8740,14849714:8741,14849725:8742,14849724:8743,14844091:8744,14909586:8745,14845586:8746,14845584:8747,14845585:8748,14845587:8749,14909587:8750,14846088:8762,14846091:8763,14846598:8764,14846599:8765,14846594:8766,14846595:8767,14846122:8768,14846121:8769,14846119:8778,14846120:8779,49836:8780,14845842:8781,14845844:8782,14846080:8783,14846083:8784,14846112:8796,14846629:8797,14847122:8798,14846082:8799,14846087:8800,14846369:8801,14846354:8802,14846378:8803,14846379:8804,14846106:8805,14846141:8806,14846109:8807,14846133:8808,14846123:8809,14846124:8810,14845099:8818,14844080:8819,14850479:8820,14850477:8821,14850474:8822,14844064:8823,14844065:8824,49846:8825,14849967:8830,15711376:9008,15711377:9009,15711378:9010,15711379:9011,15711380:9012,15711381:9013,15711382:9014,15711383:9015,15711384:9016,15711385:9017,15711393:9025,15711394:9026,15711395:9027,15711396:9028,15711397:9029,15711398:9030,15711399:9031,15711400:9032,15711401:9033,15711402:9034,15711403:9035,15711404:9036,15711405:9037,15711406:9038,15711407:9039,15711408:9040,15711409:9041,15711410:9042,15711411:9043,15711412:9044,15711413:9045,15711414:9046,15711415:9047,15711416:9048,15711417:9049,15711418:9050,15711617:9057,15711618:9058,15711619:9059,15711620:9060,15711621:9061,15711622:9062,15711623:9063,15711624:9064,15711625:9065,15711626:9066,15711627:9067,15711628:9068,15711629:9069,15711630:9070,15711631:9071,15711632:9072,15711633:9073,15711634:9074,15711635:9075,15711636:9076,15711637:9077,15711638:9078,15711639:9079,15711640:9080,15711641:9081,15711642:9082,14909825:9249,14909826:9250,14909827:9251,14909828:9252,14909829:9253,14909830:9254,14909831:9255,14909832:9256,14909833:9257,14909834:9258,14909835:9259,14909836:9260,14909837:9261,14909838:9262,14909839:9263,14909840:9264,14909841:9265,14909842:9266,14909843:9267,14909844:9268,14909845:9269,14909846:9270,14909847:9271,14909848:9272,14909849:9273,14909850:9274,14909851:9275,14909852:9276,14909853:9277,14909854:9278,14909855:9279,14909856:9280,14909857:9281,14909858:9282,14909859:9283,14909860:9284,14909861:9285,14909862:9286,14909863:9287,14909864:9288,14909865:9289,14909866:9290,14909867:9291,14909868:9292,14909869:9293,14909870:9294,14909871:9295,14909872:9296,14909873:9297,14909874:9298,14909875:9299,14909876:9300,14909877:9301,14909878:9302,14909879:9303,14909880:9304,14909881:9305,14909882:9306,14909883:9307,14909884:9308,14909885:9309,14909886:9310,14909887:9311,14910080:9312,14910081:9313,14910082:9314,14910083:9315,14910084:9316,14910085:9317,14910086:9318,14910087:9319,14910088:9320,14910089:9321,14910090:9322,14910091:9323,14910092:9324,14910093:9325,14910094:9326,14910095:9327,14910096:9328,14910097:9329,14910098:9330,14910099:9331,14910113:9505,14910114:9506,14910115:9507,14910116:9508,14910117:9509,14910118:9510,14910119:9511,14910120:9512,14910121:9513,14910122:9514,14910123:9515,14910124:9516,14910125:9517,14910126:9518,14910127:9519,14910128:9520,14910129:9521,14910130:9522,14910131:9523,14910132:9524,14910133:9525,14910134:9526,14910135:9527,14910136:9528,14910137:9529,14910138:9530,14910139:9531,14910140:9532,14910141:9533,14910142:9534,14910143:9535,14910336:9536,14910337:9537,14910338:9538,14910339:9539,14910340:9540,14910341:9541,14910342:9542,14910343:9543,14910344:9544,14910345:9545,14910346:9546,14910347:9547,14910348:9548,14910349:9549,14910350:9550,14910351:9551,14910352:9552,14910353:9553,14910354:9554,14910355:9555,14910356:9556,14910357:9557,14910358:9558,14910359:9559,14910360:9560,14910361:9561,14910362:9562,14910363:9563,14910364:9564,14910365:9565,14910366:9566,14910367:9567,14910368:9568,14910369:9569,14910370:9570,14910371:9571,14910372:9572,14910373:9573,14910374:9574,14910375:9575,14910376:9576,14910377:9577,14910378:9578,14910379:9579,14910380:9580,14910381:9581,14910382:9582,14910383:9583,14910384:9584,14910385:9585,14910386:9586,14910387:9587,14910388:9588,14910389:9589,14910390:9590,52881:9761,52882:9762,52883:9763,52884:9764,52885:9765,52886:9766,52887:9767,52888:9768,52889:9769,52890:9770,52891:9771,52892:9772,52893:9773,52894:9774,52895:9775,52896:9776,52897:9777,52899:9778,52900:9779,52901:9780,52902:9781,52903:9782,52904:9783,52905:9784,52913:9793,52914:9794,52915:9795,52916:9796,52917:9797,52918:9798,52919:9799,52920:9800,52921:9801,52922:9802,52923:9803,52924:9804,52925:9805,52926:9806,52927:9807,53120:9808,53121:9809,53123:9810,53124:9811,53125:9812,53126:9813,53127:9814,53128:9815,53129:9816,53392:10017,53393:10018,53394:10019,53395:10020,53396:10021,53397:10022,53377:10023,53398:10024,53399:10025,53400:10026,53401:10027,53402:10028,53403:10029,53404:10030,53405:10031,53406:10032,53407:10033,53408:10034,53409:10035,53410:10036,53411:10037,53412:10038,53413:10039,53414:10040,53415:10041,53416:10042,53417:10043,53418:10044,53419:10045,53420:10046,53421:10047,53422:10048,53423:10049,53424:10065,53425:10066,53426:10067,53427:10068,53428:10069,53429:10070,53649:10071,53430:10072,53431:10073,53432:10074,53433:10075,53434:10076,53435:10077,53436:10078,53437:10079,53438:10080,53439:10081,53632:10082,53633:10083,53634:10084,53635:10085,53636:10086,53637:10087,53638:10088,53639:10089,53640:10090,53641:10091,53642:10092,53643:10093,53644:10094,53645:10095,53646:10096,53647:10097,14849152:10273,14849154:10274,14849164:10275,14849168:10276,14849176:10277,14849172:10278,14849180:10279,14849196:10280,14849188:10281,14849204:10282,14849212:10283,14849153:10284,14849155:10285,14849167:10286,14849171:10287,14849179:10288,14849175:10289,14849187:10290,14849203:10291,14849195:10292,14849211:10293,14849419:10294,14849184:10295,14849199:10296,14849192:10297,14849207:10298,14849215:10299,14849181:10300,14849200:10301,14849189:10302,14849208:10303,14849410:10304,14989980:12321,15045782:12322,15050883:12323,15308991:12324,15045504:12325,15107227:12326,15109288:12327,15050678:12328,15302818:12329,15241653:12330,15240348:12331,15182224:12332,15106730:12333,15110049:12334,15120549:12335,15112109:12336,15241638:12337,15239846:12338,15314869:12339,15114899:12340,15047847:12341,15111841:12342,15108529:12343,15052443:12344,15050640:12345,15243707:12346,15311796:12347,15185314:12348,15185598:12349,15314574:12350,15108246:12351,15184543:12352,15246007:12353,15052425:12354,15055541:12355,15109257:12356,15112855:12357,15114632:12358,15308679:12359,15310477:12360,15113615:12361,14990245:12362,14990474:12363,14990733:12364,14991005:12365,15040905:12366,15047602:12367,15049911:12368,15050644:12369,15050881:12370,15052937:12371,15106975:12372,15107215:12373,15107504:12374,15112339:12375,15115397:12376,
15172282:12377,15177103:12378,15177136:12379,15181755:12380,15185581:12381,15185839:12382,15238019:12383,15241358:12384,15245731:12385,15248514:12386,15303061:12387,15303098:12388,15043771:12389,14989973:12390,14989989:12391,15048607:12392,15237810:12393,15303553:12394,15180719:12395,14989440:12396,15049649:12397,15121058:12398,15302840:12399,15182002:12400,15240360:12401,15239819:12402,15315119:12403,15041921:12404,15044016:12405,15045309:12406,15045537:12407,15047584:12408,15050683:12409,15056021:12410,15311794:12411,15120299:12412,15238052:12413,15242413:12414,15309218:12577,15309232:12578,15309472:12579,15310779:12580,15044747:12581,15044531:12582,15052423:12583,15172495:12584,15187645:12585,15253378:12586,15309736:12587,15044015:12588,15316380:12589,15182522:12590,14989457:12591,15180435:12592,15239100:12593,15120550:12594,15046808:12595,15045764:12596,15117469:12597,15242394:12598,15315131:12599,15050661:12600,15044265:12601,15119782:12602,15176604:12603,15308431:12604,15047042:12605,14989969:12606,15303051:12607,15309746:12608,15240591:12609,15312012:12610,15044513:12611,15046326:12612,15051952:12613,15056305:12614,15112352:12615,15113139:12616,15114372:12617,15118520:12618,15119283:12619,15119529:12620,15176091:12621,15178632:12622,15182222:12623,15311028:12624,15240113:12625,15245723:12626,15247776:12627,15305645:12628,15120050:12629,15177387:12630,15178634:12631,15312773:12632,15106726:12633,15248513:12634,15251082:12635,15308466:12636,15115918:12637,15044269:12638,15042182:12639,15047826:12640,15048880:12641,15050116:12642,15052468:12643,15055798:12644,15106216:12645,15109801:12646,15110068:12647,15119039:12648,15121556:12649,15172238:12650,15172756:12651,15173017:12652,15173525:12653,15174847:12654,15186049:12655,15239606:12656,15240081:12657,15242903:12658,15303072:12659,15305115:12660,15316123:12661,15049129:12662,15111868:12663,15118746:12664,15176869:12665,15042489:12666,15049902:12667,15050149:12668,15056512:12669,15056796:12670,15108796:12833,15112122:12834,15116458:12835,15117479:12836,15118004:12837,15175307:12838,15187841:12839,15246742:12840,15316140:12841,15316110:12842,15317892:12843,15053473:12844,15118998:12845,15240635:12846,15041668:12847,15053195:12848,15107766:12849,15239046:12850,15114678:12851,15174049:12852,14989721:12853,14991290:12854,15044024:12855,15106473:12856,15120553:12857,15182223:12858,15310771:12859,14989451:12860,15043734:12861,14990254:12862,14990741:12863,14990525:12864,14991009:12865,14990771:12866,15043232:12867,15044527:12868,15046793:12869,15049871:12870,15051649:12871,15052470:12872,15052705:12873,15181713:12874,15112839:12875,15113884:12876,15113910:12877,15117708:12878,15119027:12879,15172011:12880,15175554:12881,15181453:12882,15181502:12883,15182012:12884,15183495:12885,15239857:12886,15240091:12887,15240324:12888,15240631:12889,15241135:12890,15241107:12891,15244710:12892,15248050:12893,15046825:12894,15250088:12895,15253414:12896,15303054:12897,15309982:12898,15243914:12899,14991236:12900,15053736:12901,15108241:12902,15174041:12903,15176891:12904,15239077:12905,15239869:12906,15244222:12907,15250304:12908,15309701:12909,15312019:12910,15312789:12911,14990219:12912,14990490:12913,15247267:12914,15047582:12915,15049098:12916,15049610:12917,15055803:12918,15056811:12919,15106218:12920,15106708:12921,15106466:12922,15107984:12923,15108242:12924,15109008:12925,15111353:12926,15314305:13089,15112614:13090,15114928:13091,15119799:13092,15172016:13093,15177100:13094,15178374:13095,15185333:13096,15239845:13097,15245241:13098,15308427:13099,15309454:13100,15250077:13101,15042481:13102,15043262:13103,15049878:13104,15045299:13105,15052467:13106,15053974:13107,15107496:13108,15115906:13109,15120047:13110,15180429:13111,15242123:13112,15245719:13113,15247794:13114,15306407:13115,15313592:13116,15119788:13117,15312552:13118,15244185:13119,15048355:13120,15114175:13121,15244174:13122,15304846:13123,15043203:13124,15047303:13125,15044740:13126,15055763:13127,15109025:13128,15110841:13129,15114428:13130,15114424:13131,15118011:13132,15175090:13133,15180474:13134,15182251:13135,15247002:13136,15247250:13137,15250859:13138,15252611:13139,15303597:13140,15308451:13141,15309460:13142,15310249:13143,15052198:13144,15053491:13145,15115709:13146,15311245:13147,15311246:13148,15109787:13149,15183008:13150,15116459:13151,15116735:13152,15114934:13153,15315085:13154,15121823:13155,15042994:13156,15046301:13157,15106480:13158,15109036:13159,15119547:13160,15120519:13161,15121297:13162,15241627:13163,15246480:13164,15252868:13165,14989460:13166,15315129:13167,15044534:13168,15115419:13169,15116474:13170,15310468:13171,15114410:13172,15041948:13173,15182723:13174,15241906:13175,15304604:13176,15306380:13177,15047067:13178,15316136:13179,15114402:13180,15240325:13181,15241393:13182,15184549:13345,15042696:13346,15240069:13347,15176614:13348,14989758:13349,14990979:13350,15042208:13351,15052690:13352,15042698:13353,15043480:13354,15043495:13355,15054779:13356,15046298:13357,15048874:13358,15050662:13359,15052428:13360,15052440:13361,15052699:13362,15055282:13363,15055289:13364,15106723:13365,15107231:13366,15107491:13367,15107774:13368,15110043:13369,15111586:13370,15114129:13371,15114643:13372,15115194:13373,15117502:13374,15117715:13375,15118743:13376,15121570:13377,15122071:13378,15121797:13379,15176368:13380,15176856:13381,15178659:13382,15178891:13383,15182783:13384,15183521:13385,15184033:13386,15185833:13387,15187126:13388,15187888:13389,15237789:13390,15239590:13391,15240862:13392,15247027:13393,15248268:13394,15250091:13395,15303300:13396,15307153:13397,15308435:13398,15308433:13399,15308450:13400,15309221:13401,15310739:13402,15312040:13403,15239320:13404,14989496:13405,15044779:13406,15053496:13407,15054732:13408,15175337:13409,15178124:13410,15178940:13411,15053481:13412,15187883:13413,15250571:13414,15309697:13415,15310993:13416,15311252:13417,15311256:13418,14990465:13419,14990478:13420,15044017:13421,15046300:13422,15047080:13423,15048634:13424,15050119:13425,15051913:13426,15052676:13427,15053456:13428,15054988:13429,15055294:13430,15056780:13431,15110062:13432,15113402:13433,15112087:13434,15112098:13435,15113375:13436,15115147:13437,15115140:13438,15116703:13601,15055024:13602,15118213:13603,15118487:13604,15118781:13605,15177151:13606,15181192:13607,15052195:13608,15181952:13609,15185024:13610,15056573:13611,15246991:13612,15247512:13613,15250100:13614,15250871:13615,15252364:13616,15252637:13617,15311778:13618,15313038:13619,15314108:13620,14989952:13621,15040957:13622,15041664:13623,15050387:13624,15052444:13625,15108271:13626,15108736:13627,15111084:13628,15117498:13629,15174304:13630,15177361:13631,15181191:13632,15187625:13633,15245243:13634,15248060:13635,15248816:13636,15109804:13637,15241098:13638,15310496:13639,15044745:13640,15044739:13641,15046315:13642,15114644:13643,15116696:13644,15247792:13645,15179943:13646,15113653:13647,15317901:13648,15044020:13649,15052450:13650,15238298:13651,15243664:13652,15302790:13653,14989464:13654,14989701:13655,14990215:13656,14990481:13657,15044490:13658,15044792:13659,15052462:13660,15056019:13661,15106213:13662,15111569:13663,15113405:13664,15118722:13665,15118770:13666,15119267:13667,15172024:13668,15175811:13669,15182262:13670,15182510:13671,15182984:13672,15185050:13673,15184830:13674,15185318:13675,15112103:13676,15174043:13677,15044283:13678,15053189:13679,15054760:13680,15109010:13681,15109024:13682,15109273:13683,15120544:13684,15243674:13685,15247537:13686,15251357:13687,15305656:13688,15121537:13689,15181478:13690,15314330:13691,14989992:13692,14989995:13693,14989996:13694,14991003:13857,14991008:13858,15041425:13859,15041927:13860,15182774:13861,15041969:13862,15042486:13863,15043988:13864,15043745:13865,15044031:13866,15044523:13867,15046316:13868,15049347:13869,15053729:13870,15056055:13871,15056266:13872,15106223:13873,15106448:13874,15106477:13875,15109279:13876,15111577:13877,15116683:13878,15119233:13879,15174530:13880,15174573:13881,15179695:13882,
15238072:13883,15238277:13884,15239304:13885,15242638:13886,15303607:13887,15306657:13888,15310783:13889,15312279:13890,15313306:13891,14990256:13892,15042461:13893,15052973:13894,15112833:13895,15115693:13896,15053184:13897,15113138:13898,15115701:13899,15175305:13900,15114640:13901,15184513:13902,15041413:13903,15043492:13904,15048071:13905,15054782:13906,15305894:13907,15111844:13908,15117475:13909,15117501:13910,15175860:13911,15181441:13912,15181501:13913,15183243:13914,15185802:13915,15239865:13916,15241100:13917,15245759:13918,15246751:13919,15248569:13920,15253393:13921,15304593:13922,15044767:13923,15305344:13924,14989725:13925,15040694:13926,15044517:13927,15043770:13928,15174551:13929,15175318:13930,15179689:13931,15240102:13932,15252143:13933,15312774:13934,15312776:13935,15312786:13936,15041975:13937,15107226:13938,15243678:13939,15046320:13940,15182266:13941,15040950:13942,15052691:13943,15303047:13944,15309445:13945,14989490:13946,15117211:13947,15304615:13948,15053201:13949,15053192:13950,15109784:14113,15182495:14114,15118995:14115,15310260:14116,15252897:14117,15182506:14118,15173258:14119,15309448:14120,15184514:14121,15114391:14122,15186352:14123,15114641:14124,15306156:14125,15043506:14126,15044763:14127,15242923:14128,15247507:14129,15187620:14130,15252365:14131,15303585:14132,15044006:14133,15245960:14134,15181185:14135,14991234:14136,15041214:14137,15042705:14138,15041924:14139,15046035:14140,15047853:14141,15175594:14142,15048331:14143,15050129:14144,15056290:14145,15056516:14146,15106485:14147,15107510:14148,15107495:14149,15107753:14150,15109810:14151,15110330:14152,15111596:14153,15112623:14154,15114626:14155,15120531:14156,15177126:14157,15182013:14158,15184827:14159,15185292:14160,15185561:14161,15186315:14162,15187371:14163,15240334:14164,15240586:14165,15244173:14166,15247496:14167,15247779:14168,15248806:14169,15252413:14170,15311002:14171,15316623:14172,15239864:14173,15253390:14174,15314856:14175,15043207:14176,15108255:14177,15110787:14178,15122304:14179,15309465:14180,15114625:14181,15041169:14182,15117472:14183,15118778:14184,15121812:14185,15182260:14186,15185296:14187,15245696:14188,15247523:14189,15113352:14190,14990262:14191,15040697:14192,15040678:14193,15040933:14194,15041980:14195,15042744:14196,15042979:14197,15046311:14198,15047823:14199,15048837:14200,15051660:14201,15055802:14202,15107762:14203,15108024:14204,15109043:14205,15109554:14206,15115420:14369,15116457:14370,15174077:14371,15174316:14372,15174830:14373,15179924:14374,15180207:14375,15185337:14376,15178892:14377,15237801:14378,15246987:14379,15248537:14380,15250338:14381,15252370:14382,15303075:14383,15306165:14384,15309242:14385,15311253:14386,15313043:14387,15317432:14388,15041923:14389,15044255:14390,15044275:14391,15055291:14392,15056038:14393,15120539:14394,15121040:14395,15175300:14396,15175614:14397,15185283:14398,15239351:14399,15247488:14400,15248314:14401,15309200:14402,14989710:14403,15040651:14404,15044516:14405,15045052:14406,15047610:14407,15050641:14408,15052196:14409,15054769:14410,15055531:14411,15056039:14412,15108280:14413,15111557:14414,15113903:14415,15120790:14416,15174544:14417,15184778:14418,15246004:14419,15237793:14420,15238049:14421,15241136:14422,15243662:14423,15248007:14424,15251368:14425,15304887:14426,15309703:14427,15311271:14428,15318163:14429,14989972:14430,14989970:14431,14990477:14432,15043976:14433,15045001:14434,15044798:14435,15050927:14436,15056524:14437,15056545:14438,15106719:14439,15114919:14440,15116942:14441,15176090:14442,15180417:14443,15248030:14444,15248036:14445,15248823:14446,15304336:14447,14989726:14448,15314825:14449,14989988:14450,14990780:14451,14991023:14452,15040665:14453,15040662:14454,15041929:14455,15041964:14456,15043231:14457,15043257:14458,15043518:14459,15044250:14460,15044515:14461,15044753:14462,15044750:14625,15046281:14626,15048081:14627,15048354:14628,15050173:14629,15052180:14630,15052189:14631,15052431:14632,15054757:14633,15054759:14634,15054775:14635,15055288:14636,15055491:14637,15055514:14638,15055543:14639,15056024:14640,15106450:14641,15107468:14642,15108759:14643,15109016:14644,15109799:14645,15111355:14646,15112322:14647,15112579:14648,15113140:14649,15113645:14650,15114401:14651,15114903:14652,15116171:14653,15118751:14654,15119530:14655,15119785:14656,15120559:14657,15121053:14658,15176882:14659,15178375:14660,15180204:14661,15182015:14662,15184800:14663,15185029:14664,15185048:14665,15185310:14666,15185585:14667,15237269:14668,15237251:14669,15237807:14670,15237809:14671,15238548:14672,15238799:14673,15239338:14674,15240594:14675,15245708:14676,15245729:14677,15248539:14678,15250082:14679,15250364:14680,15303562:14681,15304117:14682,15305137:14683,15179967:14684,15305660:14685,15308452:14686,15309197:14687,15310981:14688,15312537:14689,15313816:14690,15316155:14691,15042971:14692,15043243:14693,15044535:14694,15044744:14695,15049621:14696,15109047:14697,15122336:14698,15249834:14699,15252895:14700,15317689:14701,15041931:14702,15042747:14703,15045002:14704,15047613:14705,15182208:14706,15304119:14707,15316384:14708,15317906:14709,15175044:14710,15121545:14711,15238576:14712,15176849:14713,15056829:14714,15106970:14715,15313576:14716,15174555:14717,15253180:14718,15117732:14881,15310979:14882,14990218:14883,15047600:14884,15048100:14885,15049406:14886,15051162:14887,15106472:14888,15107975:14889,15112335:14890,15112326:14891,15114425:14892,15114929:14893,15120311:14894,15177621:14895,15185082:14896,15239598:14897,15314306:14898,14989979:14899,14990736:14900,15044489:14901,15045766:14902,15054255:14903,15054758:14904,15054766:14905,15114171:14906,15119001:14907,15176115:14908,15179906:14909,15247760:14910,15306390:14911,15246239:14912,15048080:14913,15055527:14914,15109291:14915,15041205:14916,15041196:14917,15042189:14918,15113344:14919,15045513:14920,15049118:14921,15050427:14922,15052464:14923,15056297:14924,15108493:14925,15109793:14926,15114429:14927,15117747:14928,15120520:14929,15172029:14930,15304583:14931,15174272:14932,15179925:14933,15179942:14934,15181229:14935,15111822:14936,15185072:14937,15241116:14938,15246209:14939,15252617:14940,15309467:14941,15042980:14942,15047848:14943,15113616:14944,15187370:14945,15250081:14946,15042228:14947,15048066:14948,15308970:14949,15048890:14950,15115914:14951,15237812:14952,15045298:14953,15053966:14954,15048636:14955,15180437:14956,15316922:14957,14990748:14958,15042954:14959,15045259:14960,15110334:14961,15112360:14962,15113364:14963,15114165:14964,15182468:14965,15183254:14966,15185058:14967,15305903:14968,15114652:14969,15314605:14970,15183033:14971,15043737:14972,15042186:14973,15042743:14974,15052703:15137,15109046:15138,15110830:15139,15111078:15140,15113389:15141,15118010:15142,15242921:15143,15309713:15144,15178384:15145,15314838:15146,15109516:15147,15305862:15148,15314603:15149,15178431:15150,15112594:15151,14989449:15152,15041176:15153,15044482:15154,15053233:15155,15106984:15156,15110802:15157,15111587:15158,15114655:15159,15173542:15160,15175562:15161,15176867:15162,15183511:15163,15186562:15164,15243925:15165,15249027:15166,15250331:15167,15304120:15168,15312016:15169,15111852:15170,15112875:15171,15117963:15172,14990229:15173,14990228:15174,14990522:15175,14990783:15176,15042746:15177,15044536:15178,15044530:15179,15046563:15180,15047579:15181,15049643:15182,15050635:15183,15050633:15184,15050687:15185,15052176:15186,15053197:15187,15054978:15188,15055019:15189,15056791:15190,15106205:15191,15109255:15192,15111343:15193,15052188:15194,15111855:15195,15111869:15196,15112104:15197,15113885:15198,15117730:15199,15117755:15200,15118479:15201,15175045:15202,15181193:15203,15181697:15204,15184824:15205,15185049:15206,15185067:15207,15237794:15208,15238274:15209,15239091:15210,15246998:15211,15247774:15212,15247785:15213,15247782:15214,15248012:15215,15248302:15216,15250311:15217,15250332:15218,15309708:15219,15311804:15220,15117743:15221,14989963:15222,14990524:15223,14990989:15224,15041936:15225,15052183:15226,
15052730:15227,15107464:15228,15109249:15229,15112578:15230,15117473:15393,15121291:15394,15119035:15395,15173822:15396,15176381:15397,15177620:15398,15180673:15399,15180986:15400,15237260:15401,15237299:15402,15239082:15403,15241876:15404,15253150:15405,15118736:15406,15317439:15407,15056015:15408,15248792:15409,15316139:15410,15182778:15411,15252408:15412,15052429:15413,15309739:15414,14989443:15415,15044529:15416,15048631:15417,15049905:15418,15051657:15419,15052452:15420,15106697:15421,15120831:15422,15121542:15423,15177406:15424,15250346:15425,15052447:15426,15242368:15427,15183776:15428,15040946:15429,15114164:15430,15239837:15431,15053217:15432,15242634:15433,15186078:15434,15239310:15435,15042201:15436,15052932:15437,15109544:15438,15250854:15439,15111836:15440,15173038:15441,15180990:15442,15185047:15443,15237253:15444,15248541:15445,15252362:15446,15303086:15447,15244167:15448,15303338:15449,15040671:15450,15043514:15451,15052986:15452,15113619:15453,15172028:15454,15173813:15455,15304076:15456,15304584:15457,15305899:15458,15240101:15459,15052674:15460,15056049:15461,15107001:15462,14989499:15463,15044502:15464,15052424:15465,15108491:15466,15113393:15467,15117962:15468,15174569:15469,15175584:15470,15181998:15471,15238571:15472,15251107:15473,15304082:15474,15312534:15475,15041682:15476,15044503:15477,15045034:15478,15052735:15479,15109768:15480,15116473:15481,15185580:15482,15309952:15483,15047578:15484,15044494:15485,15045032:15486,15052439:15649,15052977:15650,15054750:15651,14991278:15652,15107201:15653,15109054:15654,15119538:15655,15181696:15656,15181707:15657,15185282:15658,15186317:15659,15187858:15660,15239085:15661,15239327:15662,15241872:15663,15245702:15664,15246770:15665,15249040:15666,15251892:15667,15252655:15668,15302833:15669,15304075:15670,15304108:15671,15309702:15672,15304348:15673,14990208:15674,14990735:15675,15041925:15676,15043969:15677,15056531:15678,15108238:15679,15114132:15680,15118721:15681,15120523:15682,15175075:15683,15186086:15684,15304589:15685,15305347:15686,15044500:15687,15049881:15688,15052479:15689,15120273:15690,15181213:15691,15186094:15692,15184539:15693,15049150:15694,15173279:15695,15042490:15696,15245715:15697,15253424:15698,14991242:15699,15053755:15700,15112357:15701,15179436:15702,15182755:15703,15239324:15704,15312831:15705,15042438:15706,15056554:15707,15112108:15708,15115695:15709,15117961:15710,15120307:15711,15121046:15712,15121828:15713,15178686:15714,15185044:15715,15054753:15716,15303093:15717,15304327:15718,15310982:15719,15042470:15720,15042717:15721,15108480:15722,15112849:15723,15113113:15724,15120538:15725,15055542:15726,15185810:15727,15187378:15728,15113144:15729,15242927:15730,15243191:15731,15248312:15732,15043241:15733,15044505:15734,15050163:15735,15055503:15736,15056528:15737,15106453:15738,15305636:15739,15309220:15740,15041207:15741,15041695:15742,15043485:15905,15043744:15906,15043975:15907,15044524:15908,15045544:15909,15046022:15910,15045809:15911,15046807:15912,15050152:15913,15050430:15914,15050940:15915,15052469:15916,15052934:15917,15052943:15918,15052945:15919,15052954:15920,15055492:15921,15055498:15922,15055776:15923,15056304:15924,15108543:15925,15108740:15926,15109019:15927,15109772:15928,15109559:15929,15112327:15930,15112332:15931,15112365:15932,15112630:15933,15113662:15934,15114914:15935,15116447:15936,15116469:15937,15119036:15938,15120008:15939,15120521:15940,15120792:15941,15172796:15942,15172774:15943,15173031:15944,15177607:15945,15178881:15946,15180189:15947,15180929:15948,15181221:15949,15181744:15950,15182752:15951,15182993:15952,15184551:15953,15185081:15954,15237782:15955,15241110:15956,15241867:15957,15242633:15958,15245725:15959,15246259:15960,15247519:15961,15247548:15962,15247764:15963,15247795:15964,15249825:15965,15250334:15966,15304356:15967,15305126:15968,15306174:15969,15306904:15970,15309468:15971,15310488:15972,14989450:15973,14989448:15974,14989470:15975,14989719:15976,15042199:15977,15042992:15978,15048590:15979,15048884:15980,15049612:15981,15051938:15982,15055032:15983,15106949:15984,15111102:15985,15113633:15986,15113622:15987,15119748:15988,15174326:15989,15177139:15990,15182243:15991,15241912:15992,15248818:15993,15304376:15994,15305888:15995,15046833:15996,15048628:15997,15311806:15998,15109037:16161,15115405:16162,15117974:16163,15173549:16164,15186324:16165,15237559:16166,15239602:16167,15247270:16168,15311775:16169,15244693:16170,15253169:16171,15052987:16172,14990520:16173,14991265:16174,14991029:16175,15045767:16176,15050912:16177,15052701:16178,15052713:16179,15056771:16180,15107470:16181,15109295:16182,15111856:16183,15112587:16184,15115182:16185,15115931:16186,15119800:16187,15120305:16188,15176883:16189,15177401:16190,15178911:16191,15181214:16192,15181734:16193,15185075:16194,15239075:16195,15239855:16196,15242922:16197,15247018:16198,15247546:16199,15252139:16200,15253147:16201,15302834:16202,15304605:16203,15309959:16204,14990010:16205,14990209:16206,15042691:16207,15049141:16208,15049644:16209,15052939:16210,15176858:16211,15052989:16212,15238542:16213,15247498:16214,15253381:16215,15309219:16216,15310253:16217,15183013:16218,15248271:16219,15310984:16220,15304098:16221,15047603:16222,15044264:16223,15302807:16224,15044793:16225,15048322:16226,15055013:16227,15109800:16228,15118516:16229,15172234:16230,15179169:16231,15184523:16232,15187872:16233,15245744:16234,15303042:16235,15304084:16236,15305872:16237,15305880:16238,15309455:16239,15176094:16240,15313796:16241,15053959:16242,15054249:16243,15111600:16244,15113890:16245,15251112:16246,15309723:16247,15109550:16248,15113609:16249,15115417:16250,15241093:16251,15310999:16252,15309696:16253,15246270:16254,15122052:16417,15110586:16418,15052728:16419,14989462:16420,15171756:16421,15177117:16422,15112367:16423,15042436:16424,15042742:16425,15043490:16426,15050643:16427,15056513:16428,15106215:16429,15108240:16430,15111359:16431,15111604:16432,15112351:16433,15112628:16434,15115186:16435,15114390:16436,15117731:16437,15120517:16438,15174066:16439,15176863:16440,15178651:16441,15184574:16442,15237526:16443,15049648:16444,15246269:16445,15246783:16446,15248032:16447,15248019:16448,15248267:16449,15302813:16450,15304338:16451,15310226:16452,15310233:16453,15111817:16454,15181966:16455,15238278:16456,15309499:16457,15055021:16458,15106972:16459,15108250:16460,15111845:16461,15112340:16462,15113872:16463,15179699:16464,15182221:16465,15184269:16466,15186110:16467,15238282:16468,15250092:16469,15250852:16470,15251361:16471,15251871:16472,15180457:16473,15042695:16474,15109017:16475,15109797:16476,15110530:16477,15108760:16478,15247533:16479,15182467:16480,15183744:16481,15248044:16482,15309738:16483,15185334:16484,15239308:16485,15244681:16486,14990233:16487,15041928:16488,15043971:16489,15044e3:16490,15052451:16491,15052930:16492,15052950:16493,15054749:16494,15108262:16495,15108487:16496,15110832:16497,15114387:16498,15114420:16499,15119241:16500,15119749:16501,15119511:16502,15114131:16503,15121820:16504,15173006:16505,15173053:16506,15112075:16507,15182271:16508,15183533:16509,15185818:16510,15186314:16673,15187624:16674,15238586:16675,15239323:16676,15239353:16677,15242918:16678,15247790:16679,15250318:16680,15251381:16681,15303096:16682,15303095:16683,15305389:16684,15305361:16685,15308419:16686,15314606:16687,15042957:16688,15046276:16689,15121592:16690,15172790:16691,15041960:16692,15181445:16693,15186325:16694,15238835:16695,15184782:16696,15047052:16697,15049105:16698,15053480:16699,15109802:16700,15113150:16701,15113149:16702,15115674:16703,15174553:16704,15177359:16705,15177358:16706,15180942:16707,15181206:16708,15181727:16709,15184535:16710,15185056:16711,15185284:16712,15243399:16713,15247540:16714,15308987:16715,15303073:16716,15318176:16717,15041447:16718,15042997:16719,15044492:16720,15044514:16721,15040649:16722,15046314:16723,15049646:16724,15050127:16725,15173821:16726,15052427:16727,15053220:16728,15043741:16729,15106979:16730,15106995:16731,15109532:16732,
15109763:16733,15109311:16734,15109819:16735,15111053:16736,15112105:16737,15113145:16738,15054755:16739,15116173:16740,15116221:16741,15121557:16742,15173541:16743,14989961:16744,15177641:16745,15178680:16746,15182483:16747,15184799:16748,15185807:16749,15185564:16750,15237537:16751,15240585:16752,15240600:16753,15241644:16754,15241916:16755,15243195:16756,15246213:16757,15250864:16758,15302785:16759,15303085:16760,15306391:16761,15309980:16762,15313042:16763,15041423:16764,15049367:16765,15107726:16766,15239059:16929,15242421:16930,15250568:16931,15302816:16932,14991235:16933,15040948:16934,15042951:16935,15044019:16936,15106479:16937,15109513:16938,15113631:16939,15120556:16940,15251123:16941,15302815:16942,14991255:16943,15053214:16944,15250314:16945,15112079:16946,15185562:16947,15043986:16948,15245974:16949,15041974:16950,15110019:16951,15052184:16952,15052203:16953,15052938:16954,15110285:16955,15113617:16956,15303068:16957,14990230:16958,15049882:16959,15049898:16960,15118768:16961,15247761:16962,15045822:16963,15048853:16964,15050405:16965,15106992:16966,15108499:16967,15114113:16968,15239349:16969,15115669:16970,15309184:16971,15312772:16972,15313064:16973,14990739:16974,15048838:16975,15052734:16976,15237264:16977,15053489:16978,15055023:16979,15056517:16980,15106208:16981,15107467:16982,15108276:16983,15113151:16984,15119280:16985,15121310:16986,15238030:16987,15238591:16988,15240084:16989,15245963:16990,15250104:16991,15302784:16992,15302830:16993,15309450:16994,15317915:16995,15314843:16996,14990243:16997,15044528:16998,15049895:16999,15183020:17e3,15304333:17001,15311244:17002,15316921:17003,15121309:17004,15171751:17005,15043987:17006,15046020:17007,15052421:17008,15108504:17009,15108766:17010,15109011:17011,15119010:17012,15122351:17013,15175842:17014,15247511:17015,15306936:17016,15122305:17017,15248318:17018,15240376:17019,15042471:17020,15244216:17021,15044522:17022,15044521:17185,14990726:17186,15303060:17187,15253168:17188,15050154:17189,15238321:17190,15054781:17191,15182762:17192,15253183:17193,15115162:17194,15249591:17195,15174584:17196,15315336:17197,15116477:17198,15248048:17199,14989497:17200,15043992:17201,15046790:17202,15048102:17203,15108997:17204,15109794:17205,15112102:17206,15117710:17207,15120289:17208,15120795:17209,15172269:17210,15179693:17211,15182767:17212,15183530:17213,15185595:17214,15237309:17215,15238022:17216,15244171:17217,15248021:17218,15306139:17219,15047587:17220,15049607:17221,15056062:17222,15111853:17223,15112854:17224,15116928:17225,15118005:17226,15176887:17227,15248263:17228,15040676:17229,15179685:17230,15047856:17231,15056027:17232,15106469:17233,15112634:17234,15118752:17235,15177652:17236,15181978:17237,15187374:17238,15239092:17239,15244440:17240,15303045:17241,15312563:17242,15183753:17243,15177116:17244,15182777:17245,15183249:17246,15242116:17247,15302800:17248,15181737:17249,15182482:17250,15240374:17251,15051681:17252,15179136:17253,14989485:17254,14990258:17255,15052441:17256,15056800:17257,15108797:17258,15112380:17259,15114161:17260,15119272:17261,15243691:17262,15245751:17263,15247547:17264,15304078:17265,15305651:17266,15312784:17267,15116439:17268,15171750:17269,15174826:17270,15240103:17271,15241623:17272,15250095:17273,14989441:17274,15041926:17275,15042443:17276,15046283:17277,15052725:17278,15054998:17441,15055027:17442,15055489:17443,15056020:17444,15056053:17445,15056299:17446,15056564:17447,15108018:17448,15109265:17449,15112866:17450,15113373:17451,15121838:17452,15174034:17453,15176890:17454,15178938:17455,15237556:17456,15238329:17457,15238584:17458,15244726:17459,15248063:17460,15248284:17461,15251077:17462,15251379:17463,15305370:17464,15308215:17465,15310978:17466,15315877:17467,15043461:17468,15109527:17469,15178676:17470,15113365:17471,15118984:17472,15175565:17473,15250307:17474,15306414:17475,15309235:17476,15119525:17477,15049372:17478,15115406:17479,15116172:17480,15253437:17481,15306394:17482,15177627:17483,15302810:17484,15049114:17485,15114370:17486,15109812:17487,15116219:17488,14990723:17489,15121580:17490,15114136:17491,15253179:17492,15242406:17493,15185588:17494,15306132:17495,15115455:17496,15121840:17497,15048106:17498,15049655:17499,15051948:17500,15185068:17501,15173802:17502,15044746:17503,15304611:17504,15316660:17505,14989997:17506,14990734:17507,15040924:17508,15040949:17509,15042947:17510,15250078:17511,15045e3:17512,15048868:17513,15052442:17514,15055005:17515,15055509:17516,15055533:17517,15055799:17518,15056031:17519,15106700:17520,15108789:17521,15109306:17522,15110032:17523,15114927:17524,15118720:17525,15180423:17526,15181454:17527,15181963:17528,15185824:17529,15239559:17530,15247490:17531,15248294:17532,15251844:17533,15302803:17534,15303352:17697,15303853:17698,15304600:17699,15318158:17700,15119269:17701,15110552:17702,15111074:17703,15111605:17704,15121332:17705,15178372:17706,15183003:17707,15303081:17708,15306641:17709,15121082:17710,15045554:17711,15056569:17712,15110820:17713,15252877:17714,15253421:17715,15305092:17716,15041976:17717,15049131:17718,15049897:17719,15053205:17720,15055511:17721,15120315:17722,15186575:17723,15176860:17724,15250108:17725,15252386:17726,15311259:17727,15172281:17728,14990493:17729,15118015:17730,15122097:17731,15176880:17732,15309755:17733,15041934:17734,15044752:17735,15048885:17736,15049111:17737,15050412:17738,15053216:17739,15056530:17740,15111831:17741,15113628:17742,15120545:17743,15178171:17744,15241119:17745,15250349:17746,15302804:17747,15303613:17748,15306125:17749,15179941:17750,15179962:17751,15043242:17752,15055526:17753,15047839:17754,15050164:17755,15106194:17756,15040658:17757,15041946:17758,15042220:17759,15042445:17760,15042688:17761,15045776:17762,15049108:17763,15049112:17764,15050135:17765,15052437:17766,15053750:17767,15054475:17768,15106748:17769,15108757:17770,15110317:17771,15113649:17772,15114627:17773,15114940:17774,15115167:17775,15178647:17776,15120280:17777,15120815:17778,15120027:17779,15172015:17780,15173512:17781,15056275:17782,15177624:17783,15181239:17784,15183241:17785,15183252:17786,15183250:17787,15184790:17788,15185329:17789,15042736:17790,15241635:17953,15242665:17954,15243172:17955,15247502:17956,15248516:17957,15249798:17958,15251599:17959,15302787:17960,15302799:17961,15306905:17962,15309238:17963,15311021:17964,15313072:17965,15308696:17966,15041421:17967,15043477:17968,15044748:17969,15048834:17970,15052942:17971,15107751:17972,15110814:17973,15119518:17974,15179443:17975,15182757:17976,15238068:17977,15241348:17978,15303059:17979,15305349:17980,15053728:17981,15316103:17982,15043775:17983,15056535:17984,15056563:17985,15120028:17986,15174073:17987,15179171:17988,15181503:17989,15183780:17990,15118226:17991,15174572:17992,15248045:17993,15114371:17994,15116705:17995,15042488:17996,15182465:17997,15115444:17998,15053194:17999,15315894:18e3,15240107:18001,15052677:18002,15304073:18003,15171742:18004,15047096:18005,15053231:18006,15106951:18007,15111590:18008,15118988:18009,15249818:18010,15303041:18011,15310995:18012,15045009:18013,15113095:18014,15304845:18015,15050120:18016,15303331:18017,15042181:18018,14989709:18019,15042474:18020,15242905:18021,15248526:18022,15171992:18023,15109562:18024,15306123:18025,15115682:18026,15312564:18027,15186052:18028,15177143:18029,15043991:18030,15115680:18031,15252383:18032,15309731:18033,15118749:18034,14989964:18035,15052988:18036,15056016:18037,15253417:18038,15043714:18039,15250321:18040,15237769:18041,15243705:18042,15055807:18043,15112101:18044,14989747:18045,15041957:18046,15050370:18209,15052991:18210,15310766:18211,14990267:18212,15050378:18213,15056781:18214,15248013:18215,15122337:18216,15181488:18217,15181218:18218,15052711:18219,15241649:18220,15174827:18221,15173297:18222,15055284:18223,15056821:18224,15109563:18225,15110810:18226,15173507:18227,15184536:18228,14989699:18229,15055804:18230,14989707:18231,15048604:18232,15047330:18233,15106729:18234,15122307:18235,15185037:18236,15238077:18237,15238323:18238,
15238847:18239,15253170:18240,15246999:18241,15243940:18242,15054772:18243,15108746:18244,15110829:18245,15246983:18246,15113655:18247,15119266:18248,15119550:18249,15175862:18250,15179956:18251,15051142:18252,15187381:18253,15239853:18254,15312556:18255,14991283:18256,15055747:18257,15109021:18258,15109778:18259,15111575:18260,15113647:18261,15178627:18262,15174028:18263,15238028:18264,15237818:18265,15252649:18266,15304077:18267,15040653:18268,15048633:18269,15051410:18270,15114885:18271,15115699:18272,15173028:18273,15174589:18274,15250103:18275,15049650:18276,15250336:18277,15309226:18278,15302809:18279,15244735:18280,15181732:18281,15179687:18282,15241385:18283,14990511:18284,15042981:18285,15043994:18286,15109005:18287,15114127:18288,15119242:18289,15178173:18290,15183508:18291,15184533:18292,15239350:18293,15242884:18294,15253419:18295,15113117:18296,15121568:18297,15173766:18298,15186075:18299,15240875:18300,15312769:18301,15317670:18302,15042493:18465,15183537:18466,15180210:18467,15183544:18468,15237767:18469,15183240:18470,15117224:18471,15055265:18472,15237772:18473,15177105:18474,15177120:18475,15041963:18476,15305122:18477,15121036:18478,15178170:18479,15304343:18480,15313834:18481,14990480:18482,15187376:18483,15108764:18484,15183247:18485,15308453:18486,15315881:18487,15047098:18488,15049113:18489,15244196:18490,15309500:18491,14990516:18492,15042724:18493,15043978:18494,15044493:18495,15044507:18496,15054982:18497,15110316:18498,15111825:18499,15113663:18500,15118526:18501,15118734:18502,15174024:18503,15174319:18504,15175597:18505,15177108:18506,15186305:18507,15239340:18508,15243177:18509,15250089:18510,15183748:18511,15304582:18512,15173033:18513,15310994:18514,15311791:18515,15109309:18516,15112617:18517,15177130:18518,15178660:18519,15180688:18520,15242627:18521,15244206:18522,15043754:18523,15043985:18524,15044774:18525,15050371:18526,15055495:18527,15056316:18528,15106738:18529,15108489:18530,15108537:18531,15108779:18532,15111824:18533,15118228:18534,15119244:18535,15177394:18536,15178414:18537,15180433:18538,15181720:18539,15185803:18540,15187383:18541,15237797:18542,15245995:18543,15248057:18544,15250107:18545,15303103:18546,15310238:18547,15311771:18548,15116427:18549,15184056:18550,15041177:18551,15052990:18552,15056558:18553,15113863:18554,15118232:18555,15175861:18556,15178889:18557,15187598:18558,15318203:18721,15114122:18722,15181975:18723,15043769:18724,15177355:18725,15313837:18726,15056294:18727,15238813:18728,15241137:18729,15237784:18730,15056060:18731,15056773:18732,15177122:18733,15183238:18734,15302844:18735,15114663:18736,15050667:18737,15051419:18738,15185040:18739,15178174:18740,15248556:18741,14991285:18742,15056298:18743,15116441:18744,15118519:18745,15121538:18746,15176610:18747,15181224:18748,15245736:18749,15247765:18750,15249849:18751,15055775:18752,15110031:18753,15177605:18754,15181714:18755,15240087:18756,15305896:18757,15305650:18758,15241884:18759,15244205:18760,15315117:18761,15045505:18762,15056300:18763,15111820:18764,15119772:18765,15171733:18766,15250087:18767,15250323:18768,15311035:18769,15111567:18770,15176630:18771,14989453:18772,14990232:18773,15048608:18774,15049899:18775,15051174:18776,15052684:18777,15042216:18778,15054979:18779,15055516:18780,15106198:18781,15108534:18782,15111607:18783,15111847:18784,15112622:18785,15119790:18786,15173814:18787,15183014:18788,15238544:18789,15238810:18790,15239833:18791,15248796:18792,15250080:18793,15250342:18794,15250868:18795,15308956:18796,15309188:18797,14991022:18798,15110827:18799,15117734:18800,15239326:18801,15241633:18802,15242666:18803,15303592:18804,15052929:18805,15115667:18806,15311528:18807,15241658:18808,15242647:18809,14990479:18810,15042991:18811,15056553:18812,15055237:18813,15113357:18814,15181455:18977,15238585:18978,15246471:18979,15246982:18980,15120309:18981,15056023:18982,15108501:18983,15119032:18984,14990223:18985,15174057:18986,15314578:18987,15042694:18988,15044795:18989,15047092:18990,15049395:18991,15107748:18992,15108526:18993,15172762:18994,15050158:18995,15184521:18996,15184798:18997,15185051:18998,15309744:18999,15111815:19e3,15237534:19001,14989465:19002,14990773:19003,15041973:19004,15049088:19005,15055267:19006,15055283:19007,15056010:19008,15114116:19009,14989478:19010,15242429:19011,15308425:19012,15309211:19013,15184307:19014,15310977:19015,15041467:19016,15049601:19017,15178134:19018,15180455:19019,15042725:19020,15179429:19021,15242385:19022,15183494:19023,15040911:19024,15049865:19025,15174023:19026,15183751:19027,15185832:19028,15253178:19029,15253396:19030,15303053:19031,14991039:19032,15043465:19033,15050921:19034,15056001:19035,15310509:19036,14991261:19037,15239319:19038,15305642:19039,15047811:19040,15109525:19041,15117737:19042,15176875:19043,15246236:19044,15252628:19045,15182210:19046,15043487:19047,15049363:19048,15107477:19049,15108234:19050,15112878:19051,15118221:19052,15184063:19053,15241129:19054,15040675:19055,14991288:19056,15043717:19057,15044998:19058,15048881:19059,15050121:19060,15052445:19061,15053744:19062,15053743:19063,15053993:19064,15055510:19065,15108785:19066,15109543:19067,15111358:19068,15111865:19069,15113355:19070,15119253:19233,15119265:19234,15172537:19235,15179954:19236,15186091:19237,15238046:19238,15239859:19239,15241356:19240,15242156:19241,15244418:19242,15246482:19243,15247530:19244,15249802:19245,15303334:19246,15305618:19247,15311805:19248,15315891:19249,15316396:19250,14989711:19251,14989985:19252,15041165:19253,15042966:19254,15048074:19255,15050408:19256,15055037:19257,15056792:19258,15056793:19259,15108287:19260,15112884:19261,15113371:19262,15114128:19263,15115154:19264,15042194:19265,15185057:19266,15237802:19267,15238824:19268,15248512:19269,15250060:19270,15250111:19271,15305150:19272,15308978:19273,15044768:19274,15311020:19275,15043735:19276,15041429:19277,15043996:19278,15049384:19279,15110834:19280,15113396:19281,15174055:19282,15179174:19283,15182214:19284,15304614:19285,15043459:19286,15119009:19287,15117958:19288,15048832:19289,15055244:19290,15050132:19291,15113388:19292,15187899:19293,15042465:19294,15178630:19295,15110569:19296,15180712:19297,15314324:19298,15317691:19299,15048587:19300,15050425:19301,15112359:19302,15113882:19303,15118222:19304,15045545:19305,15116185:19306,15055253:19307,15238812:19308,15113877:19309,15314602:19310,15114174:19311,15315346:19312,15114653:19313,14989990:19314,14991267:19315,15044488:19316,15108793:19317,15113387:19318,15119019:19319,15253380:19320,14991021:19321,15186349:19322,15317695:19323,14989447:19324,15107490:19325,15121024:19326,15121579:19489,15242387:19490,15045043:19491,15113386:19492,15314309:19493,15054771:19494,15183509:19495,15053484:19496,15052678:19497,15244444:19498,15120778:19499,15242129:19500,15181972:19501,15238280:19502,15050393:19503,15184525:19504,15118481:19505,15178912:19506,15043481:19507,15049890:19508,15172769:19509,15174047:19510,15179675:19511,15309991:19512,15316385:19513,15115403:19514,15051199:19515,15050904:19516,15042213:19517,15044749:19518,15045053:19519,15112334:19520,15178655:19521,15253431:19522,15305368:19523,15315892:19524,15050666:19525,15174045:19526,15121285:19527,15041933:19528,15115145:19529,15185599:19530,15185836:19531,15310242:19532,15317690:19533,15110584:19534,15116449:19535,15240322:19536,15050372:19537,15052191:19538,15118235:19539,15174811:19540,15178674:19541,15185586:19542,15237271:19543,15241881:19544,15041714:19545,15113384:19546,15317913:19547,15178670:19548,15113634:19549,15043519:19550,15312005:19551,15052964:19552,15108283:19553,15184318:19554,15250096:19555,15046031:19556,15106742:19557,15185035:19558,15308416:19559,15043713:19560,14989727:19561,15042230:19562,15049884:19563,15173818:19564,15237302:19565,15304590:19566,15056037:19567,15179682:19568,15044228:19569,15056313:19570,15185028:19571,15242924:19572,15247539:19573,15252109:19574,15310230:19575,15114163:19576,15242926:19577,15307155:19578,15107209:19579,15107208:19580,15119033:19581,15178130:19582,
15248301:19745,15252664:19746,15045807:19747,14990737:19748,15041706:19749,15043463:19750,15044491:19751,15052453:19752,15055293:19753,15106720:19754,15107714:19755,15110038:19756,15113353:19757,15114138:19758,15120807:19759,15120012:19760,15174838:19761,15174839:19762,15176881:19763,15181200:19764,15246229:19765,15248024:19766,15303050:19767,15303313:19768,15303605:19769,15309700:19770,15244941:19771,15049877:19772,14989960:19773,14990745:19774,14989454:19775,15248009:19776,15252671:19777,15310992:19778,15041197:19779,15055292:19780,15050390:19781,15052473:19782,15055544:19783,15110042:19784,15110074:19785,15111041:19786,15113116:19787,15115658:19788,15116184:19789,15119499:19790,15121078:19791,15173268:19792,15176872:19793,15182511:19794,15187594:19795,15237248:19796,15241609:19797,15242121:19798,15246977:19799,15248545:19800,15251594:19801,15303077:19802,15309245:19803,15312010:19804,15107518:19805,15108753:19806,15117490:19807,15118979:19808,15119796:19809,15187852:19810,15187900:19811,15120256:19812,15187589:19813,15244986:19814,15246264:19815,15113637:19816,15240881:19817,15311036:19818,15309751:19819,15119515:19820,15185313:19821,15241405:19822,15304106:19823,14989745:19824,15044021:19825,15054224:19826,15117444:19827,15122347:19828,15243149:19829,15243437:19830,15247015:19831,15042729:19832,15044751:19833,15053221:19834,15113614:19835,15114920:19836,15175814:19837,15176323:19838,15177634:20001,15246223:20002,15246241:20003,15304588:20004,15309730:20005,15309240:20006,15056523:20007,15175303:20008,15182731:20009,15241614:20010,15109792:20011,15177125:20012,15043209:20013,15119745:20014,15121052:20015,15175817:20016,15177113:20017,15180203:20018,15184530:20019,15309446:20020,15182748:20021,15318669:20022,14991030:20023,15107502:20024,15112069:20025,15243676:20026,14989958:20027,14989998:20028,15041434:20029,14989473:20030,15042444:20031,15052718:20032,15111833:20033,15114881:20034,15120060:20035,15174815:20036,15178114:20037,15179437:20038,15181980:20039,15184807:20040,15239599:20041,15248274:20042,15303100:20043,15304591:20044,15309237:20045,15311e3:20046,15043227:20047,15185809:20048,15040683:20049,15044248:20050,15113879:20051,15120267:20052,15173520:20053,15175859:20054,15239080:20055,15252650:20056,15309475:20057,15315351:20058,15317663:20059,15176096:20060,15049089:20061,15120025:20062,15185071:20063,15311262:20064,14990244:20065,14990518:20066,14990987:20067,15042231:20068,15043249:20069,15054522:20070,15106204:20071,15175346:20072,15180988:20073,15240083:20074,15304884:20075,15309495:20076,15309750:20077,15309962:20078,15317655:20079,15318434:20080,15112870:20081,15117748:20082,15042711:20083,15043235:20084,15172488:20085,15246210:20086,15055753:20087,15106443:20088,15107728:20089,15121571:20090,15173001:20091,15184062:20092,15185844:20093,15237551:20094,15242158:20257,15302819:20258,15305900:20259,15044994:20260,15314351:20261,15117203:20262,15172233:20263,15250306:20264,15251375:20265,15310002:20266,15043252:20267,15051137:20268,15055754:20269,15056004:20270,15113367:20271,15115708:20272,15115924:20273,15119786:20274,15121551:20275,15174050:20276,15174588:20277,15183789:20278,15237249:20279,15237566:20280,15244683:20281,15303566:20282,15041965:20283,15317651:20284,15181444:20285,15237771:20286,15305906:20287,15248278:20288,15040685:20289,15045260:20290,15247793:20291,15117738:20292,15250308:20293,15238279:20294,15106961:20295,15113888:20296,15316914:20297,14989977:20298,14989976:20299,15315088:20300,15247787:20301,15243137:20302,15242664:20303,15115392:20304,15120830:20305,15180439:20306,15238549:20307,15056012:20513,14989456:20514,14989461:20515,14989482:20516,14989489:20517,14989494:20518,14989500:20519,14989503:20520,14989698:20521,14989718:20522,14989720:20523,14989954:20524,14989957:20525,15249835:20526,14989962:20527,15239314:20528,15056013:20529,14989966:20530,14989982:20531,14989983:20532,14989984:20533,14989986:20534,1499e4:20535,14990003:20536,14990006:20537,14990222:20538,14990221:20539,14990212:20540,14990214:20541,14990210:20542,14990231:20543,14990238:20544,14990253:20545,14990239:20546,14990263:20547,14990473:20548,14990746:20549,14990512:20550,14990747:20551,14990749:20552,14990743:20553,14990727:20554,14990774:20555,14990984:20556,14990991:20557,14991e3:20558,14990779:20559,14990761:20560,14990768:20561,14990993:20562,14990767:20563,14990982:20564,14990998:20565,15041688:20566,14991252:20567,14991263:20568,14991246:20569,14991256:20570,14991259:20571,14991249:20572,14991258:20573,14991248:20574,14991268:20575,14991269:20576,15040666:20577,15040680:20578,15040660:20579,15040682:20580,15040677:20581,15040645:20582,14990492:20583,14991286:20584,15040673:20585,15040681:20586,15040684:20587,14991294:20588,14991279:20589,15040657:20590,15040646:20591,15040899:20592,15040903:20593,15113347:20594,15040917:20595,15040912:20596,15040904:20597,15040922:20598,15040918:20599,15040940:20600,15040952:20601,15041152:20602,15041178:20603,15041157:20604,15041204:20605,15041202:20606,15041417:20769,15041418:20770,15041203:20771,15041410:20772,15041430:20773,15041438:20774,15041445:20775,15041453:20776,15041443:20777,15041454:20778,15041465:20779,15041461:20780,15041673:20781,15041665:20782,15041666:20783,15041686:20784,15041685:20785,15041684:20786,15041690:20787,15041697:20788,15041722:20789,15041719:20790,15041724:20791,15041723:20792,15041727:20793,15041920:20794,15041938:20795,15041932:20796,15041940:20797,15041954:20798,15182776:20799,15041961:20800,15041962:20801,15041966:20802,15042176:20803,15042178:20804,15047576:20805,15042188:20806,15042185:20807,15042191:20808,15042193:20809,15042195:20810,15042197:20811,15042198:20812,15042212:20813,15042214:20814,15042210:20815,15042217:20816,15042218:20817,15042219:20818,15042227:20819,15042225:20820,15042226:20821,15042224:20822,15042229:20823,15042237:20824,15042437:20825,15042441:20826,15042459:20827,15042464:20828,15243669:20829,15042473:20830,15042477:20831,15042480:20832,15042485:20833,15042494:20834,15042692:20835,15042699:20836,15042708:20837,15042702:20838,15042727:20839,15042730:20840,15042734:20841,15042739:20842,15042745:20843,15042959:20844,15042948:20845,15042955:20846,15042956:20847,15042974:20848,15042964:20849,15042986:20850,15042996:20851,15042985:20852,15042995:20853,15043007:20854,15043005:20855,15043213:20856,15043220:20857,15043218:20858,15042993:20859,15043208:20860,15043217:20861,15253160:20862,15253159:21025,15043244:21026,15043245:21027,15043260:21028,15043253:21029,15043457:21030,15043469:21031,15043479:21032,15043486:21033,15043491:21034,15043494:21035,15311789:21036,15043488:21037,15043507:21038,15043509:21039,15043512:21040,15043513:21041,15043718:21042,15043720:21043,15176888:21044,15043725:21045,15043728:21046,15043727:21047,15043733:21048,15043738:21049,15043747:21050,15043759:21051,15043761:21052,15043763:21053,15043768:21054,15043968:21055,15043974:21056,15043973:21057,14989463:21058,15043977:21059,15043981:21060,15042454:21061,15043998:21062,15044009:21063,15044014:21064,15049880:21065,15044027:21066,15044023:21067,15044226:21068,15044246:21069,15044256:21070,15044262:21071,15044261:21072,15044270:21073,15044272:21074,15044278:21075,15044483:21076,15184018:21077,15309721:21078,15044511:21079,15113148:21080,15173550:21081,15044526:21082,15044520:21083,15044525:21084,15044538:21085,15044737:21086,15044797:21087,15044992:21088,15044780:21089,15044781:21090,15044796:21091,15044782:21092,15044790:21093,15044777:21094,15044765:21095,15045006:21096,15045263:21097,15045045:21098,15045262:21099,15045023:21100,15045041:21101,15045047:21102,15045040:21103,15045266:21104,15045051:21105,15045248:21106,15045046:21107,15045252:21108,15045264:21109,15045254:21110,15045511:21111,15045282:21112,15045304:21113,15045285:21114,15045292:21115,15045508:21116,15045512:21117,15045288:21118,15045291:21281,15045506:21282,15045284:21283,15045310:21284,15045308:21285,15045528:21286,15045541:21287,15045542:21288,15045775:21289,15045780:21290,15045565:21291,15045550:21292,15045549:21293,
15045562:21294,15045538:21295,15045817:21296,15046016:21297,15046051:21298,15046028:21299,15045806:21300,15046044:21301,15046021:21302,15046038:21303,15046039:21304,15045816:21305,15045811:21306,15046045:21307,15046297:21308,15046272:21309,15045295:21310,15046282:21311,15046303:21312,15046075:21313,15046078:21314,15046296:21315,15046302:21316,15046318:21317,15046076:21318,15046275:21319,15046313:21320,15046279:21321,15046312:21322,15046554:21323,15046533:21324,15046559:21325,15046532:21326,15046556:21327,15046564:21328,15046548:21329,15046804:21330,15046583:21331,15046806:21332,15046590:21333,15046589:21334,15046811:21335,15046585:21336,15047054:21337,15047056:21338,15173535:21339,15046836:21340,15046838:21341,15046834:21342,15046840:21343,15047083:21344,15047076:21345,15046831:21346,15047084:21347,15047082:21348,15047302:21349,15047296:21350,15047306:21351,15047328:21352,15047316:21353,15047311:21354,15047333:21355,15047342:21356,15047350:21357,15047348:21358,15047554:21359,15047356:21360,15047553:21361,15047555:21362,15047552:21363,15047560:21364,15047566:21365,15047569:21366,15047571:21367,15047575:21368,15047598:21369,15047609:21370,15047808:21371,15047615:21372,15047812:21373,15047817:21374,15047816:21537,15047819:21538,15047821:21539,15047827:21540,15047832:21541,15047830:21542,15046535:21543,15047836:21544,15047846:21545,15047863:21546,15047864:21547,15048078:21548,15047867:21549,15048064:21550,15048079:21551,15048105:21552,15048576:21553,15048328:21554,15048097:21555,15048127:21556,15048329:21557,15048339:21558,15048352:21559,15048371:21560,15048356:21561,15048362:21562,15048368:21563,15048579:21564,15048582:21565,15048596:21566,15048594:21567,15048595:21568,15048842:21569,15048598:21570,15048611:21571,15048843:21572,15048857:21573,15048861:21574,15049138:21575,15048865:21576,15049122:21577,15049099:21578,15049136:21579,15118208:21580,15049106:21581,15048893:21582,15049145:21583,15049349:21584,15049401:21585,15049375:21586,15049387:21587,15049402:21588,15049630:21589,15049403:21590,15049400:21591,15049390:21592,15049605:21593,15049619:21594,15049617:21595,15049623:21596,15049625:21597,15049624:21598,15049637:21599,15049628:21600,15049636:21601,15049631:21602,15049647:21603,15049658:21604,15049657:21605,15049659:21606,15049660:21607,15049661:21608,15049858:21609,15049866:21610,15049872:21611,15049883:21612,15114918:21613,15049893:21614,15049900:21615,15049901:21616,15049906:21617,15049912:21618,15049918:21619,15182738:21620,15050133:21621,15050128:21622,15050126:21623,15050138:21624,15050136:21625,15050146:21626,15050144:21627,15050151:21628,15050156:21629,15050153:21630,15050168:21793,15050369:21794,15050397:21795,14990750:21796,14991019:21797,15050403:21798,15050418:21799,15050630:21800,15050664:21801,15050652:21802,15050381:21803,15050649:21804,15050650:21805,15050917:21806,15050911:21807,15050897:21808,15050908:21809,15050889:21810,15050906:21811,15051136:21812,15051180:21813,15051145:21814,15050933:21815,15050934:21816,15051170:21817,15051178:21818,15051418:21819,15051452:21820,15051454:21821,15051659:21822,15051650:21823,15051453:21824,15051683:21825,15051671:21826,15051686:21827,15051689:21828,15051670:21829,15051706:21830,15051707:21831,15051916:21832,15051915:21833,15051926:21834,15051954:21835,15051664:21836,15051946:21837,15051958:21838,15051966:21839,15052163:21840,15052165:21841,15052160:21842,15052177:21843,15052181:21844,15052186:21845,15052187:21846,15052197:21847,15052201:21848,15052208:21849,15052211:21850,15052213:21851,15052216:21852,15111816:21853,15052218:21854,15052416:21855,15052419:21856,15052454:21857,15052472:21858,15052675:21859,15052679:21860,15052681:21861,15052692:21862,15052688:21863,15052708:21864,15052710:21865,15052706:21866,15052702:21867,15052709:21868,15052715:21869,15052720:21870,15052726:21871,15052723:21872,15052933:21873,15052935:21874,15052936:21875,15052941:21876,15052947:21877,15052960:21878,15052962:21879,15052968:21880,15052984:21881,15052985:21882,15053185:21883,15053190:21884,15053198:21885,15053203:21886,15053200:22049,15053199:22050,15052209:22051,15053228:22052,15053230:22053,14989730:22054,15053238:22055,15053241:22056,15053452:22057,15053457:22058,15053460:22059,15050395:22060,15053483:22061,15053499:22062,15053494:22063,15053500:22064,15053495:22065,15053701:22066,15053502:22067,15053703:22068,15053721:22069,15053737:22070,15053757:22071,15053754:22072,15053741:22073,15054476:22074,15053738:22075,15053963:22076,15053973:22077,15053975:22078,15054236:22079,15053983:22080,15053979:22081,15053969:22082,15053972:22083,15053986:22084,15053978:22085,15053977:22086,15053976:22087,15054220:22088,15054226:22089,15054222:22090,15054219:22091,15054252:22092,15054259:22093,15054262:22094,15054471:22095,15054468:22096,15054466:22097,15054498:22098,15054493:22099,15054508:22100,15054510:22101,15054525:22102,15054480:22103,15054519:22104,15054524:22105,15054729:22106,15054733:22107,15054739:22108,15054738:22109,15054742:22110,15054747:22111,15054763:22112,15054770:22113,15054773:22114,15054987:22115,15055002:22116,15055001:22117,15054993:22118,15055003:22119,15055030:22120,15055031:22121,15055236:22122,15055235:22123,15055232:22124,15055246:22125,15055255:22126,15055252:22127,15055263:22128,15055266:22129,15055268:22130,15055239:22131,15055285:22132,15055286:22133,15055290:22134,15317692:22135,15055295:22136,15055520:22137,15055745:22138,15055746:22139,15055752:22140,15055760:22141,15055759:22142,15055766:22305,15055779:22306,15055773:22307,15055770:22308,15055771:22309,15055778:22310,15055777:22311,15055784:22312,15055785:22313,15055788:22314,15055793:22315,15055795:22316,15055792:22317,15055796:22318,15055800:22319,15055806:22320,15056003:22321,15056009:22322,15056285:22323,15056284:22324,15056011:22325,15056017:22326,15056022:22327,15056041:22328,15056045:22329,15056056:22330,15056257:22331,15056264:22332,15056268:22333,15056270:22334,15056047:22335,15056273:22336,15056278:22337,15056279:22338,15056281:22339,15056289:22340,15056301:22341,15056307:22342,15056311:22343,15056515:22344,15056514:22345,15056319:22346,15056522:22347,15056520:22348,15056529:22349,15056519:22350,15056542:22351,15056537:22352,15056536:22353,15056544:22354,15056552:22355,15056557:22356,15056572:22357,15056790:22358,15056827:22359,15056804:22360,15056824:22361,15056817:22362,15056797:22363,15106739:22364,15056831:22365,15106209:22366,15106464:22367,15106201:22368,15106192:22369,15106217:22370,15106190:22371,15106225:22372,15106203:22373,15106197:22374,15106219:22375,15106214:22376,15106191:22377,15106234:22378,15106458:22379,15106433:22380,15106474:22381,15106487:22382,15106463:22383,15106442:22384,15106438:22385,15106445:22386,15106467:22387,15106435:22388,15106468:22389,15106434:22390,15106476:22391,15106475:22392,15106457:22393,15106689:22394,15106701:22395,15106983:22396,15106691:22397,15106714:22398,15106692:22561,15106715:22562,15106710:22563,15106711:22564,15106706:22565,15106727:22566,15106699:22567,15106977:22568,15106744:22569,15106976:22570,15106963:22571,15106740:22572,15056816:22573,15106749:22574,15106950:22575,15106741:22576,15106968:22577,15107469:22578,15107221:22579,15107206:22580,15106998:22581,15106999:22582,15107200:22583,15106996:22584,15107002:22585,15107203:22586,15107233:22587,15107003:22588,15106993:22589,15107213:22590,15107214:22591,15107463:22592,15107262:22593,15107240:22594,15107239:22595,15107466:22596,15107263:22597,15107260:22598,15107244:22599,15107252:22600,15107261:22601,15107458:22602,15107460:22603,15107507:22604,15107511:22605,15107480:22606,15107481:22607,15107482:22608,15107499:22609,15107508:22610,15107503:22611,15107493:22612,15107505:22613,15107487:22614,15107485:22615,15107475:22616,15107509:22617,15107737:22618,15107734:22619,15107719:22620,15107756:22621,15107732:22622,15107738:22623,15107722:22624,15107729:22625,15107755:22626,15107758:22627,15107980:22628,15107978:22629,15107977:22630,15108023:22631,15107976:22632,15107971:22633,15107974:22634,15107770:22635,15107979:22636,15187385:22637,
15107981:22638,15108006:22639,15108003:22640,15108022:22641,15108026:22642,15108020:22643,15108031:22644,15108029:22645,15108028:22646,15108030:22647,15108224:22648,15108232:22649,15108233:22650,15108237:22651,15108236:22652,15108244:22653,15108251:22654,15108254:22817,15108257:22818,15108266:22819,15108270:22820,15108272:22821,15108274:22822,15108275:22823,15108481:22824,15108494:22825,15108510:22826,15108515:22827,15108507:22828,15108512:22829,15108520:22830,15108540:22831,15108738:22832,15108745:22833,15108542:22834,15108754:22835,15108755:22836,15108758:22837,15109012:22838,15108739:22839,15108756:22840,15109015:22841,15109009:22842,15108795:22843,15109007:22844,15109055:22845,15108998:22846,15111060:22847,15109e3:22848,15109020:22849,15109004:22850,15109002:22851,15108994:22852,15108999:22853,15108763:22854,15109001:22855,15109260:22856,15109038:22857,15109041:22858,15109287:22859,15109250:22860,15109256:22861,15109039:22862,15109045:22863,15109520:22864,15109310:22865,15109517:22866,15110300:22867,15109519:22868,15109782:22869,15109774:22870,15109760:22871,15109803:22872,15109558:22873,15109795:22874,15109775:22875,15109769:22876,15109791:22877,15109813:22878,15109547:22879,15109545:22880,15109822:22881,15110057:22882,15110016:22883,15110022:22884,15110051:22885,15110025:22886,15110034:22887,15110070:22888,15110020:22889,15110294:22890,15110324:22891,15110278:22892,15110291:22893,15110310:22894,15110326:22895,15111325:22896,15110295:22897,15110312:22898,15110287:22899,15110567:22900,15110575:22901,15110582:22902,15110542:22903,15111338:22904,15110805:22905,15110803:22906,15110821:22907,15110825:22908,15110792:22909,15110844:22910,15111066:23073,15111058:23074,15111045:23075,15111047:23076,15110843:23077,15111064:23078,15111042:23079,15111089:23080,15111079:23081,15239305:23082,15111072:23083,15111073:23084,15108780:23085,15111075:23086,15111087:23087,15111340:23088,15111094:23089,15111092:23090,15111090:23091,15111098:23092,15111296:23093,15111101:23094,15111320:23095,15111324:23096,15111301:23097,15111332:23098,15111331:23099,15111339:23100,15111348:23101,15111349:23102,15111351:23103,15111350:23104,15111352:23105,15177099:23106,15111560:23107,15111574:23108,15111573:23109,15111565:23110,15111576:23111,15111582:23112,15111581:23113,15111602:23114,15111608:23115,15111810:23116,15111811:23117,15249034:23118,15111835:23119,15111839:23120,15111851:23121,15111863:23122,15112067:23123,15112070:23124,15112065:23125,15112068:23126,15112076:23127,15112082:23128,15112091:23129,15112089:23130,15112096:23131,15112097:23132,15112113:23133,15113650:23134,15112330:23135,15112323:23136,15112123:23137,15113651:23138,15112373:23139,15112374:23140,15112372:23141,15112348:23142,15112591:23143,15112580:23144,15112585:23145,15112577:23146,15112606:23147,15112605:23148,15112612:23149,15112615:23150,15112616:23151,15112607:23152,15112610:23153,15112624:23154,15112835:23155,15112840:23156,15112846:23157,15112841:23158,15112836:23159,15112856:23160,15112861:23161,15113089:23162,15112889:23163,15113097:23164,15112894:23165,15112892:23166,15113092:23329,15112888:23330,15113110:23331,15113114:23332,15113120:23333,15112383:23334,15113126:23335,15113129:23336,15113136:23337,15113141:23338,15113143:23339,15113359:23340,15113366:23341,15113374:23342,15113382:23343,15113383:23344,15310008:23345,15113390:23346,15113407:23347,15113398:23348,15113601:23349,15113400:23350,15113399:23351,15113606:23352,15113630:23353,15113632:23354,15113625:23355,15113635:23356,15113636:23357,15113865:23358,15113648:23359,15113897:23360,15113660:23361,15113642:23362,15113868:23363,15113867:23364,15113894:23365,15113889:23366,15113861:23367,15113911:23368,15114159:23369,15113908:23370,15114156:23371,15113907:23372,15114153:23373,15113912:23374,15114148:23375,15114142:23376,15114141:23377,15114146:23378,15114158:23379,15113913:23380,15114126:23381,15114118:23382,15114151:23383,15116956:23384,15114398:23385,15114630:23386,15114409:23387,15114624:23388,15114637:23389,15114418:23390,15114638:23391,15114931:23392,15114411:23393,15114649:23394,15114659:23395,15114679:23396,15114687:23397,15114911:23398,15114895:23399,15114925:23400,15114900:23401,15114909:23402,15114907:23403,15114883:23404,15116974:23405,15114937:23406,15114676:23407,15114933:23408,15114912:23409,15114938:23410,15115407:23411,15114893:23412,15114686:23413,15115393:23414,15115146:23415,15115400:23416,15115160:23417,15115426:23418,15115430:23419,15115169:23420,15115404:23421,15115149:23422,15115156:23585,15115175:23586,15115157:23587,15115446:23588,15115410:23589,15115396:23590,15115159:23591,15115171:23592,15115429:23593,15115193:23594,15115168:23595,15115183:23596,15115432:23597,15115434:23598,15115418:23599,15115427:23600,15115425:23601,15115142:23602,15115705:23603,15115703:23604,15115676:23605,15115704:23606,15115691:23607,15115668:23608,15115710:23609,15115694:23610,15115449:23611,15115700:23612,15115453:23613,15115673:23614,15115440:23615,15115681:23616,15115678:23617,15115677:23618,15115905:23619,15115690:23620,15115954:23621,15115950:23622,15116176:23623,15115967:23624,15116161:23625,15116179:23626,15115966:23627,15116174:23628,15052712:23629,15116170:23630,15116189:23631,15115963:23632,15116163:23633,15115943:23634,15116462:23635,15115921:23636,15115936:23637,15115932:23638,15115925:23639,15115956:23640,15116190:23641,15116200:23642,15116418:23643,15116443:23644,15116223:23645,15117450:23646,15116217:23647,15116210:23648,15116199:23649,15116421:23650,15115953:23651,15116446:23652,15116205:23653,15116436:23654,15116203:23655,15116426:23656,15116434:23657,15117185:23658,15116451:23659,15116435:23660,15116676:23661,15116428:23662,15116722:23663,15116470:23664,15116728:23665,15116679:23666,15116706:23667,15116697:23668,15116710:23669,15116680:23670,15116472:23671,15116450:23672,15116944:23673,15116941:23674,15116960:23675,15116932:23676,15116962:23677,15116963:23678,15116951:23841,15243415:23842,15116987:23843,15117187:23844,15117186:23845,15116984:23846,15116979:23847,15116972:23848,15117214:23849,15117201:23850,15117215:23851,15116970:23852,15117210:23853,15117226:23854,15117243:23855,15117445:23856,15243414:23857,15117242:23858,15117458:23859,15117462:23860,15314097:23861,15117471:23862,15117496:23863,15117495:23864,15178652:23865,15117497:23866,15311790:23867,15117703:23868,15117699:23869,15117705:23870,15117712:23871,15117721:23872,15117716:23873,15117723:23874,15117727:23875,15117729:23876,15117752:23877,15117753:23878,15117759:23879,15117952:23880,15117956:23881,15117955:23882,15117965:23883,15117976:23884,15117973:23885,15117982:23886,15117988:23887,15117994:23888,15117995:23889,15117999:23890,15118002:23891,15118001:23892,15118003:23893,15118007:23894,15118012:23895,15118214:23896,15118219:23897,15118227:23898,15118239:23899,15118252:23900,15118251:23901,15118259:23902,15118255:23903,15317694:23904,15118472:23905,15118483:23906,15118484:23907,15118491:23908,15118500:23909,15118499:23910,15118750:23911,15118741:23912,15118754:23913,15118762:23914,15118978:23915,15118989:23916,15119002:23917,15118977:23918,15119003:23919,15118782:23920,15118760:23921,15118771:23922,15118994:23923,15118992:23924,15119236:23925,15119281:23926,15119251:23927,15119037:23928,15119255:23929,15119237:23930,15119261:23931,15119022:23932,15119025:23933,15119038:23934,15119034:24097,15119259:24098,15119279:24099,15119257:24100,15119274:24101,15119519:24102,15245709:24103,15119542:24104,15119531:24105,15119549:24106,15119544:24107,15119513:24108,15119541:24109,15119539:24110,15119506:24111,15119500:24112,15119779:24113,15120019:24114,15119780:24115,15119770:24116,15119801:24117,15119769:24118,15120014:24119,15120021:24120,15122340:24121,15120005:24122,15120313:24123,15120533:24124,15120522:24125,15120053:24126,15120263:24127,15120294:24128,15120056:24129,15120262:24130,15120300:24131,15120286:24132,15120268:24133,15120296:24134,15120274:24135,15120261:24136,15120314:24137,15120281:24138,15120292:24139,15120277:24140,15120298:24141,15120302:24142,15120557:24143,
15120814:24144,15120558:24145,15120537:24146,15120818:24147,15120799:24148,15120574:24149,15120547:24150,15120811:24151,15120555:24152,15120822:24153,15120781:24154,15120543:24155,15120771:24156,15120570:24157,15120782:24158,15120548:24159,15121343:24160,15120541:24161,15120568:24162,15121026:24163,15121066:24164,15121048:24165,15121289:24166,15121079:24167,15121299:24168,15121085:24169,15121071:24170,15121284:24171,15121074:24172,15121300:24173,15121301:24174,15121039:24175,15121061:24176,15121282:24177,15121055:24178,15121793:24179,15121553:24180,15171980:24181,15121324:24182,15121336:24183,15121342:24184,15121599:24185,15121330:24186,15121585:24187,15121327:24188,15121586:24189,15121292:24190,15121598:24353,15121555:24354,15121335:24355,15122054:24356,15121850:24357,15121848:24358,15122049:24359,15122048:24360,15121839:24361,15121819:24362,15122355:24363,15121837:24364,15122050:24365,15121852:24366,15121816:24367,15122062:24368,15122065:24369,15122306:24370,15121830:24371,15122099:24372,15122083:24373,15122081:24374,15122084:24375,15122105:24376,15122310:24377,15122090:24378,15122335:24379,15122325:24380,15122348:24381,15122324:24382,15122328:24383,15122353:24384,15122350:24385,15122331:24386,15171721:24387,15171723:24388,15122362:24389,15171729:24390,15171713:24391,15171727:24392,15122366:24393,15171739:24394,15171738:24395,15121844:24396,15171741:24397,15171736:24398,15171743:24399,15171760:24400,15171774:24401,15171762:24402,15171985:24403,15172003:24404,15172249:24405,15172242:24406,15172271:24407,15172529:24408,15172268:24409,15172280:24410,15172275:24411,15172270:24412,15172511:24413,15172491:24414,15172509:24415,15172505:24416,15172745:24417,15172541:24418,15172764:24419,15172761:24420,15173029:24421,15173013:24422,15173256:24423,15173030:24424,15173026:24425,15173004:24426,15173014:24427,15173036:24428,15173263:24429,15173563:24430,15173252:24431,15173269:24432,15173288:24433,15173292:24434,15173527:24435,15173305:24436,15173310:24437,15173522:24438,15173513:24439,15173524:24440,15173518:24441,15173536:24442,15173548:24443,15173543:24444,15173557:24445,15173564:24446,15173561:24609,15173567:24610,15173773:24611,15173776:24612,15173787:24613,15173800:24614,15173805:24615,15173804:24616,15173808:24617,15173810:24618,15173819:24619,15173820:24620,15173823:24621,15174016:24622,15174022:24623,15174027:24624,15174040:24625,15174068:24626,15174078:24627,15174274:24628,15174273:24629,15174279:24630,15174290:24631,15174294:24632,15174306:24633,15174311:24634,15174329:24635,15174322:24636,15174531:24637,15174534:24638,15174532:24639,15174542:24640,15174546:24641,15174562:24642,15174560:24643,15174561:24644,15174585:24645,15174583:24646,15040655:24647,15174807:24648,15174794:24649,15174812:24650,15174806:24651,15174813:24652,15174836:24653,15174831:24654,15174825:24655,15174821:24656,15174846:24657,15175054:24658,15175055:24659,15317912:24660,15175063:24661,15175082:24662,15175080:24663,15175088:24664,15175096:24665,15175093:24666,15175099:24667,15175098:24668,15175560:24669,15175347:24670,15175566:24671,15175355:24672,15175552:24673,15175589:24674,15175598:24675,15175582:24676,15176354:24677,15175813:24678,15176111:24679,15175845:24680,15175608:24681,15175858:24682,15175866:24683,15176085:24684,15175871:24685,15176095:24686,15176089:24687,15176065:24688,15176092:24689,15176105:24690,15176112:24691,15176099:24692,15176106:24693,15176118:24694,15176126:24695,15176331:24696,15176350:24697,15176359:24698,15176586:24699,15176591:24700,15176596:24701,15175601:24702,15176608:24865,15176611:24866,15176615:24867,15176617:24868,15176622:24869,15176626:24870,15176624:24871,15176625:24872,15176632:24873,15176631:24874,15176836:24875,15176835:24876,15176837:24877,15176844:24878,15176846:24879,15176845:24880,15176853:24881,15176851:24882,15176862:24883,15176870:24884,15176876:24885,15176892:24886,15177092:24887,15177101:24888,15177098:24889,15177097:24890,15177115:24891,15177094:24892,15177114:24893,15177129:24894,15177124:24895,15177127:24896,15177131:24897,15177133:24898,15177144:24899,15177142:24900,15177350:24901,15177351:24902,15177140:24903,15177354:24904,15177353:24905,15177346:24906,15177364:24907,15177370:24908,15177373:24909,15177381:24910,15177379:24911,15177602:24912,15177395:24913,15177603:24914,15177397:24915,15177405:24916,15177400:24917,15177404:24918,15177393:24919,15177613:24920,15177610:24921,15177618:24922,15177625:24923,15177635:24924,15177630:24925,15177662:24926,15177663:24927,15177660:24928,15177857:24929,15177648:24930,15177658:24931,15177650:24932,15177651:24933,15177867:24934,15177869:24935,15177865:24936,15177887:24937,15177895:24938,15177888:24939,15177889:24940,15177890:24941,15177892:24942,15177908:24943,15177904:24944,15177915:24945,15178119:24946,15178120:24947,15178118:24948,15178140:24949,15178136:24950,15178145:24951,15178146:24952,15178152:24953,15178153:24954,15178154:24955,15178151:24956,15178156:24957,15178160:24958,15178162:25121,15178166:25122,15178168:25123,15178172:25124,15178368:25125,15178371:25126,15178376:25127,15178379:25128,15178382:25129,15178390:25130,15178387:25131,15178393:25132,15178394:25133,15178416:25134,15178420:25135,15178424:25136,15178425:25137,15178426:25138,15178626:25139,15178637:25140,15178646:25141,15178642:25142,15178654:25143,15178657:25144,15178661:25145,15178663:25146,15178666:25147,15243439:25148,15178683:25149,15178888:25150,15178887:25151,15178884:25152,15178921:25153,15178916:25154,15178910:25155,15178917:25156,15178918:25157,15178907:25158,15178935:25159,15178936:25160,15179143:25161,15179162:25162,15179176:25163,15179179:25164,15179163:25165,15179173:25166,15179199:25167,15179198:25168,15179193:25169,15179406:25170,15179403:25171,15179409:25172,15179424:25173,15179422:25174,15179440:25175,15179446:25176,15179449:25177,15179455:25178,15179452:25179,15179453:25180,15179451:25181,15179655:25182,15179661:25183,15179671:25184,15179674:25185,15179676:25186,15179683:25187,15179694:25188,15179708:25189,15179916:25190,15179922:25191,15180966:25192,15179936:25193,15180970:25194,15180165:25195,15180430:25196,15180212:25197,15180422:25198,15180220:25199,15180442:25200,15180428:25201,15180451:25202,15180469:25203,15180458:25204,15180463:25205,15180689:25206,15180678:25207,15180683:25208,15180692:25209,15180478:25210,15180476:25211,15180677:25212,15180682:25213,15180716:25214,15180711:25377,15180698:25378,15180733:25379,15180724:25380,15180935:25381,15180946:25382,15180945:25383,15180953:25384,15180972:25385,15180971:25386,15181184:25387,15181216:25388,15181207:25389,15181215:25390,15181210:25391,15181205:25392,15181203:25393,15181242:25394,15181247:25395,15181450:25396,15181469:25397,15181479:25398,15318411:25399,15181482:25400,15181486:25401,15181491:25402,15181497:25403,15181498:25404,15181705:25405,15181717:25406,15181735:25407,15181740:25408,15181729:25409,15181731:25410,15181960:25411,15181965:25412,15181976:25413,15181977:25414,15181984:25415,15181983:25416,15181440:25417,15182001:25418,15182011:25419,15182014:25420,15182007:25421,15182211:25422,15182231:25423,15182217:25424,15182241:25425,15182242:25426,15182249:25427,15318685:25428,15182256:25429,15182265:25430,15182269:25431,15182472:25432,15182487:25433,15182485:25434,15182488:25435,15182486:25436,15182505:25437,15182728:25438,15182512:25439,15182518:25440,15182725:25441,15182724:25442,15182527:25443,15303299:25444,15182727:25445,15182730:25446,15182733:25447,15182735:25448,15182741:25449,15182739:25450,15182745:25451,15182746:25452,15182749:25453,15182753:25454,15182754:25455,15182758:25456,15182765:25457,15182768:25458,15182978:25459,15182991:25460,15182986:25461,15182982:25462,15183027:25463,15183e3:25464,15183001:25465,15183006:25466,15183029:25467,15183016:25468,15183030:25469,15183248:25470,15183290:25633,15182980:25634,15183245:25635,15182987:25636,15183244:25637,15183237:25638,15183285:25639,15183269:25640,15183284:25641,15183271:25642,15183280:25643,15183281:25644,15183276:25645,15183278:25646,15183517:25647,15183512:25648,15183519:25649,
15183501:25650,15183516:25651,15183514:25652,15183499:25653,15183506:25654,15183503:25655,15183261:25656,15183513:25657,15183755:25658,15183745:25659,15183756:25660,15183759:25661,15183540:25662,15183750:25663,15183773:25664,15183785:25665,15184017:25666,15184020:25667,15183782:25668,15183781:25669,15184288:25670,15184e3:25671,15184007:25672,15184019:25673,15183795:25674,15183799:25675,15184023:25676,15184013:25677,15183798:25678,15184035:25679,15184039:25680,15184042:25681,15184031:25682,15184055:25683,15184043:25684,15184061:25685,15184268:25686,15184259:25687,15184276:25688,15184271:25689,15184256:25690,15184272:25691,15184280:25692,15184287:25693,15184292:25694,15184278:25695,15184293:25696,15184300:25697,15184309:25698,15184515:25699,15184528:25700,15184548:25701,15184557:25702,15184546:25703,15184555:25704,15184545:25705,15184552:25706,15184563:25707,15184562:25708,15184561:25709,15184558:25710,15184569:25711,15184573:25712,15184768:25713,15184773:25714,15184770:25715,15184792:25716,15184786:25717,15184796:25718,15184802:25719,15314107:25720,15184815:25721,15184818:25722,15184820:25723,15184822:25724,15184826:25725,15185030:25726,15185026:25889,15185052:25890,15185045:25891,15185034:25892,15185285:25893,15185291:25894,15185070:25895,15185074:25896,15185087:25897,15185077:25898,15185286:25899,15185331:25900,15185302:25901,15185294:25902,15185330:25903,15185320:25904,15185326:25905,15185295:25906,15185315:25907,15185555:25908,15185545:25909,15185307:25910,15185551:25911,15185341:25912,15185563:25913,15185594:25914,15185582:25915,15185571:25916,15185589:25917,15185799:25918,15185597:25919,15185579:25920,15186109:25921,15185570:25922,15185583:25923,15185820:25924,15185592:25925,15185567:25926,15185584:25927,15185816:25928,15185821:25929,15185828:25930,15185822:25931,15185851:25932,15185842:25933,15185825:25934,15186053:25935,15186058:25936,15186083:25937,15186081:25938,15186066:25939,15186097:25940,15186079:25941,15186057:25942,15186059:25943,15186082:25944,15186310:25945,15186342:25946,15186107:25947,15186101:25948,15186105:25949,15186307:25950,15186103:25951,15186098:25952,15186106:25953,15186343:25954,15186333:25955,15186326:25956,15186334:25957,15186329:25958,15186330:25959,15186361:25960,15186346:25961,15186345:25962,15186364:25963,15186363:25964,15186563:25965,15185813:25966,15186365:25967,15253166:25968,15186367:25969,15186568:25970,15186569:25971,15186572:25972,15186578:25973,15186576:25974,15186579:25975,15186580:25976,15186582:25977,15186574:25978,15186587:25979,15186588:25980,15187128:25981,15187130:25982,15187333:26145,15187340:26146,15187341:26147,15187342:26148,15187344:26149,15187345:26150,15187349:26151,15187348:26152,15187352:26153,15187359:26154,15187360:26155,15187368:26156,15187369:26157,15187367:26158,15187384:26159,15187586:26160,15187590:26161,15187587:26162,15187592:26163,15187591:26164,15187596:26165,15187604:26166,15187614:26167,15187613:26168,15187610:26169,15187619:26170,15187631:26171,15187634:26172,15187641:26173,15187630:26174,15187638:26175,15187640:26176,15248817:26177,15187845:26178,15187846:26179,15187850:26180,15187861:26181,15187860:26182,15187873:26183,15187878:26184,15187881:26185,15187891:26186,15187897:26187,15311772:26188,15237254:26189,15237252:26190,15237259:26191,15237266:26192,15237272:26193,15237273:26194,15237276:26195,15237281:26196,15237288:26197,15237311:26198,15237307:26199,15237514:26200,15237510:26201,15237522:26202,15237528:26203,15237530:26204,15237535:26205,15237538:26206,15237544:26207,15237555:26208,15237554:26209,15237552:26210,15237558:26211,15237561:26212,15237565:26213,15237567:26214,15237764:26215,15237766:26216,15237765:26217,15237787:26218,15237779:26219,15237786:26220,15237805:26221,15042192:26222,15237804:26223,15238043:26224,15238053:26225,15238041:26226,15238045:26227,15238020:26228,15238042:26229,15238038:26230,15238281:26231,15238063:26232,15238065:26233,15238299:26234,15238313:26235,15238307:26236,15238319:26237,15238539:26238,15309451:26401,15238534:26402,15238334:26403,15238547:26404,15238545:26405,15238076:26406,15238577:26407,15238574:26408,15238565:26409,15238566:26410,15238580:26411,15238787:26412,15238792:26413,15238794:26414,15238784:26415,15238786:26416,15238816:26417,15238805:26418,15238820:26419,15238819:26420,15238559:26421,15238803:26422,15238825:26423,15238832:26424,15238837:26425,15238846:26426,15238840:26427,15238845:26428,15239040:26429,15239042:26430,15238842:26431,15239049:26432,15239053:26433,15239057:26434,15239065:26435,15239064:26436,15239048:26437,15239066:26438,15239071:26439,15239072:26440,15239079:26441,15239098:26442,15239099:26443,15239102:26444,15239297:26445,15239298:26446,15239301:26447,15239303:26448,15239306:26449,15239309:26450,15239312:26451,15239318:26452,15239337:26453,15239339:26454,15239352:26455,15239347:26456,15239552:26457,15239577:26458,15239576:26459,15239581:26460,15239578:26461,15239583:26462,15239588:26463,15239586:26464,15239592:26465,15239594:26466,15239595:26467,15239342:26468,15239601:26469,15239607:26470,15239608:26471,15239614:26472,15239821:26473,15239826:26474,15239851:26475,15239839:26476,15239867:26477,15239852:26478,15240097:26479,15240099:26480,15240095:26481,15240082:26482,15240116:26483,15240115:26484,15240122:26485,15240851:26486,15240323:26487,15240123:26488,15240121:26489,15240094:26490,15240326:26491,15240092:26492,15240329:26493,15240089:26494,15240373:26657,15240372:26658,15240342:26659,15240370:26660,15240369:26661,15240576:26662,15240377:26663,15240592:26664,15240581:26665,15240367:26666,15240363:26667,15240343:26668,15240344:26669,15240837:26670,15240858:26671,15240874:26672,15240863:26673,15240866:26674,15240854:26675,15240355:26676,15240846:26677,15240839:26678,15240842:26679,15240636:26680,15240885:26681,15240627:26682,15240629:26683,15240864:26684,15240841:26685,15240872:26686,15241140:26687,15241363:26688,15241131:26689,15241102:26690,15241149:26691,15241347:26692,15241112:26693,15241355:26694,15241089:26695,15241143:26696,15241351:26697,15241120:26698,15241138:26699,15241357:26700,15241378:26701,15241376:26702,15240893:26703,15241400:26704,15242374:26705,15241147:26706,15241645:26707,15241386:26708,15241404:26709,15242650:26710,15241860:26711,15241655:26712,15241643:26713,15241901:26714,15241646:26715,15241858:26716,15241641:26717,15241606:26718,15241388:26719,15241647:26720,15241657:26721,15241397:26722,15242122:26723,15241634:26724,15241913:26725,15241919:26726,15241887:26727,15242137:26728,15242125:26729,15241915:26730,15242138:26731,15242128:26732,15242113:26733,15242118:26734,15242134:26735,15241889:26736,15242401:26737,15242175:26738,15242164:26739,15242391:26740,15242392:26741,15242412:26742,15242399:26743,15242389:26744,15242388:26745,15242172:26746,15242624:26747,15242659:26748,15242648:26749,15242632:26750,15242625:26913,15243394:26914,15242635:26915,15242645:26916,15242880:26917,15242916:26918,15242888:26919,15242897:26920,15242890:26921,15242920:26922,15242669:26923,15242900:26924,15242907:26925,15243178:26926,15242887:26927,15242908:26928,15242679:26929,15242686:26930,15242896:26931,15243145:26932,15242938:26933,15243151:26934,15242937:26935,15243152:26936,15243157:26937,15243165:26938,15243173:26939,15243164:26940,15243193:26941,15243402:26942,15243411:26943,15243403:26944,15243198:26945,15243194:26946,15243398:26947,15243426:26948,15243418:26949,15243440:26950,15243455:26951,15243661:26952,14989717:26953,15243668:26954,15243679:26955,15243687:26956,15243697:26957,15243923:26958,15243939:26959,15243945:26960,15243946:26961,15243915:26962,15243916:26963,15243958:26964,15243951:26965,15244164:26966,15244166:26967,15243952:26968,15244169:26969,15245475:26970,15243947:26971,15244180:26972,15244190:26973,15244201:26974,15244204:26975,15244191:26976,15244187:26977,15244207:26978,15244434:26979,15244422:26980,15244424:26981,15244416:26982,15244419:26983,15244219:26984,15244433:26985,15244425:26986,15244429:26987,15244217:26988,15244426:26989,15244468:26990,15244479:26991,15244471:26992,15244475:26993,
15244453:26994,15244457:26995,15244442:26996,15244704:26997,15244703:26998,15244728:26999,15244684:27e3,15244686:27001,15244724:27002,15244695:27003,15244712:27004,15244718:27005,15244697:27006,15244691:27169,15244707:27170,15244714:27171,15245445:27172,15244962:27173,15244959:27174,15244930:27175,15244975:27176,15245195:27177,15244989:27178,15245184:27179,15245200:27180,15309718:27181,15244971:27182,15245188:27183,15244979:27184,15245191:27185,15245190:27186,15244987:27187,15245231:27188,15245234:27189,15245216:27190,15245455:27191,15245453:27192,15245246:27193,15245238:27194,15245239:27195,15245454:27196,15245202:27197,15245457:27198,15245462:27199,15245461:27200,15245474:27201,15245473:27202,15245489:27203,15245494:27204,15245497:27205,15245479:27206,15245499:27207,15245700:27208,15245698:27209,15245714:27210,15245721:27211,15245726:27212,15245730:27213,15245739:27214,15245953:27215,15245758:27216,15245982:27217,15245749:27218,15245757:27219,15246005:27220,15245746:27221,15245954:27222,15245975:27223,15245970:27224,15245998:27225,15245977:27226,15245986:27227,15245965:27228,15245988:27229,15246e3:27230,15246015:27231,15246001:27232,15246211:27233,15246212:27234,15246228:27235,15246232:27236,15246233:27237,15246237:27238,15246265:27239,15246466:27240,15246268:27241,15246260:27242,15246248:27243,15246258:27244,15246468:27245,15246476:27246,15246474:27247,15246483:27248,15246723:27249,15246494:27250,15246501:27251,15246506:27252,15246507:27253,15246721:27254,15246724:27255,15246523:27256,15246518:27257,15246520:27258,15246732:27259,15246493:27260,15246752:27261,15246750:27262,15246758:27425,15246756:27426,15246765:27427,15246762:27428,15246767:27429,15246772:27430,15246775:27431,15246782:27432,15246979:27433,15246984:27434,15246986:27435,15246995:27436,15247e3:27437,15247009:27438,15247017:27439,15247014:27440,15247020:27441,15247023:27442,15247026:27443,15247034:27444,15247037:27445,15247039:27446,15247232:27447,15247258:27448,15247260:27449,15247261:27450,15247271:27451,15247284:27452,15247288:27453,15247491:27454,15247510:27455,15247504:27456,15247500:27457,15247515:27458,15247517:27459,15247525:27460,15247542:27461,15247745:27462,15247771:27463,15247762:27464,15247750:27465,15247752:27466,15247804:27467,15247789:27468,15247788:27469,15247778:27470,15248005:27471,15248002:27472,15248004:27473,15248040:27474,15248033:27475,15248017:27476,15248037:27477,15248038:27478,15248026:27479,15248035:27480,15248260:27481,15248269:27482,15248258:27483,15248282:27484,15248299:27485,15248307:27486,15248295:27487,15248292:27488,15248305:27489,15248532:27490,15248288:27491,15248290:27492,15248311:27493,15248286:27494,15248283:27495,15248524:27496,15248519:27497,15248538:27498,15248289:27499,15248534:27500,15248528:27501,15248535:27502,15248544:27503,15248563:27504,15310507:27505,15248550:27506,15248555:27507,15248574:27508,15248552:27509,15248769:27510,15248780:27511,15248783:27512,15248782:27513,15248777:27514,15248790:27515,15248795:27516,15248794:27517,15248811:27518,15248799:27681,15248812:27682,15248815:27683,15248820:27684,15248829:27685,15249024:27686,15249036:27687,15249038:27688,15249042:27689,15249043:27690,15249046:27691,15249049:27692,15249050:27693,15249594:27694,15249793:27695,15249599:27696,15249800:27697,15249804:27698,15249806:27699,15249808:27700,15249813:27701,15249826:27702,15249836:27703,15249848:27704,15249850:27705,15250050:27706,15250057:27707,15250053:27708,15250058:27709,15250061:27710,15250062:27711,15250068:27712,15249852:27713,15250072:27714,15108253:27715,15250093:27716,15250090:27717,15250109:27718,15250098:27719,15250099:27720,15250094:27721,15250102:27722,15250312:27723,15250305:27724,15250340:27725,15250339:27726,15250330:27727,15250365:27728,15250362:27729,15250363:27730,15250564:27731,15250565:27732,15250570:27733,15250567:27734,15250575:27735,15250573:27736,15250576:27737,15318414:27738,15250579:27739,15250317:27740,15250580:27741,15250582:27742,15250855:27743,15250861:27744,15250865:27745,15250867:27746,15251073:27747,15251097:27748,15251330:27749,15251134:27750,15251130:27751,15251343:27752,15251354:27753,15251350:27754,15251340:27755,15251355:27756,15251339:27757,15251370:27758,15251371:27759,15251359:27760,15251363:27761,15251388:27762,15251592:27763,15251593:27764,15251391:27765,15251613:27766,15251614:27767,15251600:27768,15251615:27769,15251842:27770,15251637:27771,15251632:27772,15251636:27773,15251850:27774,15251847:27937,15251849:27938,15251852:27939,15251856:27940,15251848:27941,15251865:27942,15251876:27943,15251872:27944,15251626:27945,15251875:27946,15251861:27947,15251894:27948,15251890:27949,15251900:27950,15252097:27951,15252103:27952,15252101:27953,15252100:27954,15252107:27955,15252106:27956,15252115:27957,15252113:27958,15252116:27959,15252121:27960,15252138:27961,15252129:27962,15252140:27963,15252144:27964,15252358:27965,15252145:27966,15252158:27967,15252357:27968,15252360:27969,15252363:27970,15252379:27971,15252387:27972,15252412:27973,15252411:27974,15252395:27975,15252414:27976,15252618:27977,15252613:27978,15252629:27979,15252626:27980,15252633:27981,15252627:27982,15252636:27983,15252639:27984,15252635:27985,15252620:27986,15252646:27987,15252659:27988,15252667:27989,15252665:27990,15252869:27991,15252866:27992,15252670:27993,15252876:27994,15252873:27995,15252870:27996,15252878:27997,15252887:27998,15252892:27999,15252898:28e3,15252899:28001,15252900:28002,15253148:28003,15253151:28004,15253155:28005,15253165:28006,15253167:28007,15253175:28008,15253402:28009,15253413:28010,15253410:28011,15253418:28012,15253423:28013,15303303:28014,15253428:28015,15302789:28016,15253433:28017,15253434:28018,15302801:28019,15302805:28020,15302817:28021,15302797:28022,15302814:28023,15302806:28024,15302795:28025,15302823:28026,15302838:28027,15302837:28028,15302841:28029,15253432:28030,15303055:28193,15303056:28194,15303057:28195,15303058:28196,15302798:28197,15303049:28198,15302846:28199,15303062:28200,15303064:28201,15303070:28202,15303080:28203,15303087:28204,15303094:28205,15309480:28206,15303090:28207,15303298:28208,15303101:28209,15303297:28210,15303296:28211,15303306:28212,15303305:28213,15303311:28214,15303336:28215,15303343:28216,15303345:28217,15303349:28218,15303586:28219,15303588:28220,15108488:28221,15303579:28222,15303810:28223,15303826:28224,15303833:28225,15303858:28226,15303856:28227,15304074:28228,15304086:28229,15304088:28230,15304099:28231,15304101:28232,15304105:28233,15304115:28234,15304114:28235,15304331:28236,15304329:28237,15304322:28238,15304354:28239,15304363:28240,15304367:28241,15304362:28242,15304373:28243,15304372:28244,15304378:28245,15304576:28246,15304577:28247,15304585:28248,15304587:28249,15304592:28250,15304598:28251,15304607:28252,15304609:28253,15304603:28254,15304636:28255,15304629:28256,15304630:28257,15304862:28258,15304639:28259,15304852:28260,15304876:28261,15304853:28262,15304849:28263,15305118:28264,15305111:28265,15305093:28266,15305097:28267,15305124:28268,15305096:28269,15305365:28270,15304895:28271,15305099:28272,15305104:28273,15305372:28274,15305366:28275,15305363:28276,15305371:28277,15305114:28278,15305615:28279,15305401:28280,15305399:28281,15305641:28282,15305871:28283,15305658:28284,15306116:28285,15305902:28286,15305881:28449,15305890:28450,15305882:28451,15305891:28452,15305914:28453,15305909:28454,15305915:28455,15306140:28456,15306144:28457,15306172:28458,15306158:28459,15306134:28460,15306416:28461,15306412:28462,15306413:28463,15306388:28464,15306425:28465,15306646:28466,15306647:28467,15306664:28468,15306661:28469,15306648:28470,15306627:28471,15306653:28472,15306640:28473,15306632:28474,15306660:28475,15306906:28476,15306900:28477,15306899:28478,15306883:28479,15306887:28480,15306896:28481,15306934:28482,15306923:28483,15306933:28484,15306913:28485,15306938:28486,15307137:28487,15307154:28488,15307140:28489,15307163:28490,15307168:28491,15307170:28492,15307166:28493,15307178:28494,15304873:28495,15307184:28496,15307189:28497,15307191:28498,15307197:28499,
15307162:28500,15307196:28501,15307198:28502,15307393:28503,15307199:28504,15308418:28505,15308423:28506,15308426:28507,15308436:28508,15308438:28509,15308440:28510,15308441:28511,15308448:28512,15308456:28513,15308455:28514,15308461:28515,15308476:28516,15308475:28517,15308473:28518,15308478:28519,15308682:28520,15122358:28521,15308675:28522,15308685:28523,15308684:28524,15308693:28525,15308692:28526,15308694:28527,15308700:28528,15308705:28529,15308709:28530,15308706:28531,15308961:28532,15308968:28533,15308974:28534,15308975:28535,15309186:28536,15309196:28537,15309199:28538,15309195:28539,15309239:28540,15309212:28541,15309214:28542,15309213:28705,15309215:28706,15309222:28707,15309234:28708,15309228:28709,15309453:28710,15309464:28711,15309461:28712,15309463:28713,15309482:28714,15309479:28715,15309489:28716,15309490:28717,15309488:28718,15309492:28719,15309494:28720,15309496:28721,15309497:28722,15309710:28723,15309707:28724,15309705:28725,15309709:28726,15246733:28727,15309724:28728,15309965:28729,15309717:28730,15309753:28731,15309956:28732,15309958:28733,15309960:28734,15309971:28735,15309966:28736,15309969:28737,15309967:28738,15309974:28739,15309977:28740,15309988:28741,15309994:28742,1531e4:28743,15310009:28744,15310013:28745,15310014:28746,15310212:28747,15310214:28748,15310216:28749,15310210:28750,15310217:28751,15310236:28752,15310240:28753,15310244:28754,15310246:28755,15310248:28756,15043474:28757,15310251:28758,15310257:28759,15310265:28760,15310469:28761,15310268:28762,15310465:28763,15310266:28764,15310470:28765,15310475:28766,15310479:28767,15310480:28768,15310492:28769,15310504:28770,15310502:28771,15310499:28772,15310515:28773,15310516:28774,15310723:28775,15310726:28776,15310728:28777,15310731:28778,15310748:28779,15310765:28780,15318415:28781,15310770:28782,15182751:28783,15310774:28784,15310773:28785,15310991:28786,15310988:28787,15311032:28788,15311012:28789,15311009:28790,15311031:28791,15311037:28792,15311238:28793,15311247:28794,15311243:28795,15311275:28796,15311279:28797,15311280:28798,15311281:28961,15311284:28962,15311283:28963,15311530:28964,15311535:28965,15311537:28966,15311542:28967,15311748:28968,15311747:28969,15311750:28970,15311785:28971,15311787:28972,15312003:28973,15312009:28974,15312018:28975,15312020:28976,15312024:28977,15312033:28978,15312029:28979,15312030:28980,15312036:28981,15312032:28982,15312044:28983,15312046:28984,15312061:28985,15312062:28986,15312258:28987,15312265:28988,15312261:28989,15312272:28990,15312267:28991,15312273:28992,15312274:28993,15312268:28994,15312277:28995,15312535:28996,15312536:28997,15312549:28998,15312557:28999,15312558:29e3,15312572:29001,15312799:29002,15312795:29003,15312797:29004,15312792:29005,15312785:29006,15312813:29007,15312814:29008,15312817:29009,15312818:29010,15312827:29011,15312824:29012,15313025:29013,15313039:29014,15313029:29015,15312802:29016,15313049:29017,15313067:29018,15313079:29019,15313285:29020,15313282:29021,15313280:29022,15313283:29023,15313086:29024,15313301:29025,15313293:29026,15313307:29027,15313303:29028,15313311:29029,15313314:29030,15313317:29031,15313316:29032,15313321:29033,15313323:29034,15313322:29035,15313581:29036,15313584:29037,15313596:29038,15313792:29039,15313807:29040,15313809:29041,15313811:29042,15313812:29043,15313822:29044,15313823:29045,15313826:29046,15313827:29047,15313830:29048,15313839:29049,15313835:29050,15313838:29051,15313844:29052,15313841:29053,15313847:29054,15313851:29217,15314054:29218,15314072:29219,15314074:29220,15314079:29221,15314082:29222,15314083:29223,15314085:29224,15314087:29225,15314088:29226,15314089:29227,15314090:29228,15314094:29229,15314095:29230,15314098:29231,15314308:29232,15314307:29233,15314319:29234,15314317:29235,15314318:29236,15314321:29237,15314328:29238,15314356:29239,15314579:29240,15314563:29241,15314577:29242,15314582:29243,15314583:29244,15314591:29245,15314592:29246,15314600:29247,15314612:29248,15314816:29249,15314826:29250,15314617:29251,15314822:29252,15314831:29253,15314833:29254,15314834:29255,15314851:29256,15314850:29257,15314852:29258,15314836:29259,15314849:29260,15315130:29261,15314866:29262,15314865:29263,15314864:29264,15315093:29265,15315092:29266,15315081:29267,15315091:29268,15315084:29269,15315078:29270,15315080:29271,15315090:29272,15315082:29273,15315076:29274,15315118:29275,15315099:29276,15315109:29277,15315108:29278,15315105:29279,15315120:29280,15315335:29281,15315122:29282,15315334:29283,15315134:29284,15315354:29285,15315360:29286,15315367:29287,15315382:29288,15315384:29289,15315879:29290,15315884:29291,15315888:29292,15316105:29293,15316104:29294,15315883:29295,15316099:29296,15316102:29297,15316138:29298,15316134:29299,15316655:29300,15316131:29301,15316127:29302,15316356:29303,15316117:29304,15316114:29305,15316353:29306,15316159:29307,15316158:29308,15316358:29309,15316360:29310,15316381:29473,15316382:29474,15316388:29475,15316369:29476,15316368:29477,15316377:29478,15316402:29479,15316617:29480,15316615:29481,15316651:29482,15316399:29483,15316410:29484,15316634:29485,15316644:29486,15316649:29487,15316658:29488,15316868:29489,15316865:29490,15316667:29491,15316664:29492,15316666:29493,15316870:29494,15316879:29495,15316866:29496,15316889:29497,15316883:29498,15316920:29499,15316902:29500,15316909:29501,15316911:29502,15316925:29503,15317146:29504,15317147:29505,15317150:29506,15317429:29507,15317433:29508,15317437:29509,15317633:29510,15317640:29511,15317643:29512,15317644:29513,15317650:29514,15317653:29515,15317649:29516,15317661:29517,15317669:29518,15317673:29519,15317688:29520,15317674:29521,15317677:29522,15310241:29523,15317900:29524,15317902:29525,15317903:29526,15317904:29527,15317908:29528,15317916:29529,15317918:29530,15317917:29531,15317920:29532,15317925:29533,15317928:29534,15317935:29535,15317940:29536,15317942:29537,15317943:29538,15317945:29539,15317947:29540,15317948:29541,15317949:29542,15318151:29543,15318152:29544,15178423:29545,15318165:29546,15318177:29547,15318188:29548,15318206:29549,15318410:29550,15318418:29551,15318420:29552,15318435:29553,15318431:29554,15318432:29555,15318433:29556,15318438:29557,15318439:29558,15318444:29559,15318442:29560,15318455:29561,15318450:29562,15318454:29563,15318677:29564,15318684:29565,15318688:29566,15048879:29729,15116167:29730,15303065:29731,15176100:29732,15042460:29733,15173273:29734,15186570:31009,15246492:31010,15306120:31011,15305352:31012,15242140:31013,14991241:31014,15172283:31015,15112369:31016,15115144:31017,15305657:31018,15113147:31019,15056261:31020,14989480:31021,14990241:31022,14990268:31023,14990464:31024,14990467:31025,14990521:31026,14990742:31027,14990994:31028,14990986:31029,14991002:31030,14990996:31031,14991245:31032,15040896:31033,15040674:31034,14991295:31035,15040670:31036,15040902:31037,15040944:31038,15040898:31039,15041172:31040,15041460:31041,15041432:31042,15041930:31043,15041956:31044,15042205:31045,15042238:31046,15042476:31047,15042709:31048,15043228:31049,15043238:31050,15043456:31051,15043483:31052,15043712:31053,15043719:31054,15043748:31055,15044018:31056,15044243:31057,15044274:31058,15044509:31059,15706254:31060,15045276:31061,15045258:31062,15045289:31063,15045567:31064,15046278:31065,15048089:31066,15048101:31067,15048364:31068,15048584:31069,15048583:31070,15706255:31071,15706256:31072,15049374:31073,15049394:31074,15049867:31075,15050131:31076,15050139:31077,15050141:31078,15050147:31079,15050404:31080,15050426:31081,15052182:31082,15052672:31083,15176879:31084,15052696:31085,15052716:31086,15052958:31087,15053478:31088,15053498:31089,15053749:31090,15053991:31091,15054227:31092,15706257:31093,15054210:31094,15054253:31095,15054520:31096,15054521:31097,15054736:31098,15056033:31099,15056052:31100,15056295:31101,15056567:31102,15056798:31265,15106461:31266,15106693:31267,15106698:31268,15106974:31269,15106965:31270,15107232:31271,15106994:31272,15107217:31273,15107255:31274,15107248:31275,15107736:31276,15108243:31277,15108774:31278,15110069:31279,
15110560:31280,15110813:31281,15111054:31282,15111566:31283,15112320:31284,15112341:31285,15112379:31286,15112329:31287,15112366:31288,15112350:31289,15112356:31290,15112613:31291,15112599:31292,15112601:31293,15706258:31294,15112627:31295,15112857:31296,15112864:31297,15112882:31298,15112895:31299,15113146:31300,15113358:31301,15705257:31302,15113638:31303,15113915:31304,15114642:31305,15114112:31306,15114369:31307,15114628:31308,15115151:31309,15706259:31310,15115688:31311,15706260:31312,15115928:31313,15116194:31314,15116464:31315,15116715:31316,15116678:31317,15116723:31318,15116734:31319,15117218:31320,15117220:31321,15118230:31322,15118527:31323,15118748:31324,15118982:31325,15118767:31326,15119258:31327,15119492:31328,15120007:31329,15119791:31330,15120022:31331,15120044:31332,15120271:31333,15120312:31334,15120306:31335,15120316:31336,15120569:31337,15120796:31338,15120551:31339,15120572:31340,15121087:31341,15122056:31342,15122101:31343,15122357:31344,15171717:31345,15171719:31346,15171752:31347,15172229:31348,15172267:31349,15172751:31350,15172740:31351,15173020:31352,15172998:31353,15172999:31354,15706261:31355,15173505:31356,15173566:31357,15174321:31358,15174334:31521,15174820:31522,15706262:31523,15175095:31524,15175357:31525,15175561:31526,15175574:31527,15175587:31528,15175570:31529,15175815:31530,15175605:31531,15175846:31532,15175850:31533,15175849:31534,15175854:31535,15176098:31536,15176329:31537,15176351:31538,15176833:31539,15177135:31540,15178370:31541,15178396:31542,15178398:31543,15178395:31544,15178406:31545,15706263:31546,15179142:31547,15043247:31548,15179937:31549,15180174:31550,15180196:31551,15180218:31552,15180976:31553,15706264:31554,15706265:31555,15706266:31556,15181460:31557,15706267:31558,15181467:31559,15182737:31560,15182759:31561,15706268:31562,15182763:31563,15183518:31564,15706269:31565,15185288:31566,15185308:31567,15185591:31568,15185568:31569,15185814:31570,15186322:31571,15187335:31572,15187617:31573,15706270:31574,15240321:31575,15240610:31576,15240639:31577,15241095:31578,15241142:31579,15241608:31580,15241908:31581,15242643:31582,15242649:31583,15242667:31584,15706271:31585,15242928:31586,15706272:31587,15706273:31588,15245447:31589,15246261:31590,15247506:31591,15247543:31592,15247801:31593,15248039:31594,15248062:31595,15248287:31596,15706274:31597,15248310:31598,15248787:31599,15248831:31600,15250352:31601,15250356:31602,15250578:31603,15250870:31604,15706275:31605,15252367:31606,15706276:31607,15706277:31608,15303079:31609,15303582:31610,15706278:31611,15303829:31612,15303847:31613,15304602:31614,15304599:31777,15304606:31778,15304621:31779,15304622:31780,15304612:31781,15304613:31782,15304838:31783,15304848:31784,15304842:31785,15304890:31786,15305088:31787,15304892:31788,15305102:31789,15305113:31790,15305105:31791,15304889:31792,15305127:31793,15305383:31794,15305143:31795,15305144:31796,15305639:31797,15305623:31798,15305625:31799,15305616:31800,15706279:31801,15305621:31802,15305632:31803,15305619:31804,15305893:31805,15305889:31806,15305659:31807,15706280:31808,15305886:31809,15305663:31810,15305885:31811,15305858:31812,15306160:31813,15306135:31814,15306404:31815,15306630:31816,15306654:31817,15306680:31818,15306929:31819,15307141:31820,15307144:31821,15308434:31822,15706012:31823,15706281:31824,15309469:31825,15309487:31826,15310003:31827,15310011:31828,15310211:31829,15310221:31830,15310223:31831,15310225:31832,15310229:31833,15311255:31834,15311269:31835,15706282:31836,15706283:31837,15312039:31838,15706284:31839,15312542:31840,15313294:31841,15313817:31842,15313820:31843,15314357:31844,15314354:31845,15314575:31846,15314609:31847,15314619:31848,15315072:31849,15316400:31850,15316395:31851,15706285:31852,15317145:31853,15317905:31854,14845360:31857,14845361:31858,14845362:31859,14845363:31860,14845364:31861,14845365:31862,14845366:31863,14845367:31864,14845368:31865,14845369:31866,15712164:31868,15711367:31869,15711362:31870,14846117:8514,15712162:8780,14846098:74077},Xa={52120:8751,52103:8752,49848:8753,52121:8754,52125:8755,49839:8756,52123:8757,52122:8758,126:8759,52868:8760,52869:8761,49825:8770,49830:8771,49855:8772,49850:8811,49834:8812,49833:8813,49838:8814,14845090:8815,49828:8816,14845078:8817,52870:9825,52872:9826,52873:9827,52874:9828,52906:9829,52876:9831,52878:9833,52907:9834,52879:9836,52908:9841,52909:9842,52910:9843,52911:9844,53130:9845,52880:9846,53132:9847,53122:9848,53133:9849,53131:9850,52912:9851,53134:9852,53378:10050,53379:10051,53380:10052,53381:10053,53382:10054,53383:10055,53384:10056,53385:10057,53386:10058,53387:10059,53388:10060,53390:10061,53391:10062,53650:10098,53651:10099,53652:10100,53653:10101,53654:10102,53655:10103,53656:10104,53657:10105,53658:10106,53659:10107,53660:10108,53662:10109,53663:10110,50054:10529,50320:10530,50342:10532,50354:10534,50561:10536,50367:10537,50570:10539,50072:10540,50578:10541,50598:10543,50078:10544,50086:10561,50321:10562,50096:10563,50343:10564,50353:10565,50355:10566,50360:10567,50562:10568,50560:10569,50569:10570,50571:10571,50104:10572,50579:10573,50079:10574,50599:10575,50110:10576,50049:10785,50048:10786,50052:10787,50050:10788,50306:10789,51085:10790,50304:10791,50308:10792,50053:10793,50051:10794,50310:10795,50312:10796,50316:10797,50055:10798,50314:10799,50318:10800,50057:10801,50056:10802,50059:10803,50058:10804,50330:10805,50326:10806,50322:10807,50328:10808,50332:10810,50334:10811,50338:10812,50336:10813,50340:10814,50061:10815,50060:10816,50063:10817,50062:10818,51087:10819,50352:10820,50346:10821,50350:10822,50344:10823,50356:10824,50358:10825,50361:10826,50365:10827,50363:10828,50563:10829,50567:10830,50565:10831,50065:10832,50067:10833,50066:10834,50070:10835,50068:10836,51089:10837,50576:10838,50572:10839,50069:10840,50580:10841,50584:10842,50582:10843,50586:10844,50588:10845,50592:10846,50590:10847,50596:10848,50594:10849,50074:10850,50073:10851,50076:10852,50075:10853,50604:10854,51091:10855,50608:10856,50602:10857,50610:10858,50606:10859,50600:10860,51095:10861,51099:10862,51097:10863,51093:10864,50612:10865,50077:10866,50616:10867,50614:10868,50617:10869,50621:10870,50619:10871,50081:11041,50080:11042,50084:11043,50082:11044,50307:11045,51086:11046,50305:11047,50309:11048,50085:11049,50083:11050,50311:11051,50313:11052,50317:11053,50087:11054,50315:11055,50319:11056,50089:11057,50088:11058,50091:11059,50090:11060,50331:11061,50327:11062,50323:11063,50329:11064,51125:11065,50333:11066,50335:11067,50337:11069,50341:11070,50093:11071,50092:11072,50095:11073,50094:11074,51088:11075,50347:11077,50351:11078,50345:11079,50357:11080,50359:11081,50362:11082,50366:11083,50364:11084,50564:11085,50568:11086,50566:11087,50097:11088,50099:11089,50098:11090,50102:11091,50100:11092,51090:11093,50577:11094,50573:11095,50101:11096,50581:11097,50585:11098,50583:11099,50587:11100,50589:11101,50593:11102,50591:11103,50597:11104,50595:11105,50106:11106,50105:11107,50108:11108,50107:11109,50605:11110,51092:11111,50609:11112,50603:11113,50611:11114,50607:11115,50601:11116,51096:11117,51100:11118,51098:11119,51094:11120,50613:11121,50109:11122,50111:11123,50615:11124,50618:11125,50622:11126,50620:11127,14989442:12321,14989444:12322,14989445:12323,14989452:12324,14989458:12325,14989471:12326,14989475:12327,14989476:12328,14989480:12329,14989483:12330,14989486:12331,14989487:12332,14989488:12333,14989493:12334,14989696:12335,14989697:12336,14989700:12337,14989703:12338,14989713:12339,14989722:12340,14989724:12341,14989731:12342,14989736:12343,14989737:12344,14989748:12345,14989749:12346,14989753:12347,14989759:12348,14989965:12349,14989974:12350,14989975:12351,14989981:12352,14989999:12353,14990009:12354,14990211:12355,14990224:12356,14990234:12357,14990235:12358,14990240:12359,14990241:12360,14990242:12361,14990248:12362,14990255:12363,14990257:12364,14990259:12365,14990261:12366,14990269:12367,14990270:12368,14990271:12369,14990464:12370,14990466:12371,14990467:12372,14990472:12373,14990475:12374,14990476:12375,14990482:12376,
14990485:12377,14990486:12378,14990487:12379,14990489:12380,14990510:12381,14990513:12382,14990752:12383,14990515:12384,14990517:12385,14990519:12386,14990521:12387,14990523:12388,14990526:12389,14990720:12390,14990722:12391,14990728:12392,14990729:12393,14990731:12394,14990732:12395,14990738:12396,14990740:12397,14990742:12398,14990744:12399,14990751:12400,14990755:12401,14990762:12402,14990764:12403,14990766:12404,14990769:12405,14990775:12406,14990776:12407,14990777:12408,14990778:12409,14990781:12410,14990782:12411,14990977:12412,14990978:12413,14990980:12414,14990981:12577,14990985:12578,14990986:12579,14990988:12580,14990990:12581,14990992:12582,14990994:12583,14990995:12584,14990996:12585,14990999:12586,14991001:12587,14991002:12588,14991006:12589,14991007:12590,14991026:12591,14991031:12592,14991033:12593,14991035:12594,14991036:12595,14991037:12596,14991038:12597,14991232:12598,14991233:12599,14991237:12600,14991238:12601,14991240:12602,14991241:12603,14991243:12604,14991244:12605,14991245:12606,14991247:12607,14991250:12608,14991260:12609,14991264:12610,14991266:12611,14991280:12612,14991282:12613,14991292:12614,14991293:12615,14991295:12616,15040640:12617,15040641:12618,15040644:12619,15040647:12620,15040650:12621,15040652:12622,15040654:12623,15040656:12624,15040659:12625,15040663:12626,15040664:12627,15040667:12628,15040668:12629,15040669:12630,15040670:12631,15040674:12632,15040679:12633,15040686:12634,15040688:12635,15040690:12636,15040691:12637,15040693:12638,15040896:12639,15040897:12640,15040898:12641,15040901:12642,15040902:12643,15040906:12644,15040908:12645,15040910:12646,15040913:12647,15040914:12648,15040915:12649,15040919:12650,15040921:12651,15040927:12652,15040928:12653,15040930:12654,15040931:12655,15040934:12656,15040935:12657,15040938:12658,15040941:12659,15040944:12660,15040945:12661,15040699:12662,15041153:12663,15041155:12664,15041156:12665,15041158:12666,15041162:12667,15041166:12668,15041167:12669,15041168:12670,15041170:12833,15041171:12834,15041172:12835,15041174:12836,15041179:12837,15041180:12838,15041182:12839,15041183:12840,15041184:12841,15041185:12842,15041186:12843,15041194:12844,15041199:12845,15041200:12846,15041209:12847,15041210:12848,15041213:12849,15041408:12850,15041411:12851,15041412:12852,15041415:12853,15041420:12854,15041422:12855,15041424:12856,15041427:12857,15041428:12858,15041432:12859,15041436:12860,15041437:12861,15041439:12862,15041442:12863,15041444:12864,15041446:12865,15041448:12866,15041449:12867,15041455:12868,15041457:12869,15041462:12870,15041466:12871,15041470:12872,15041667:12873,15041670:12874,15041671:12875,15041672:12876,15041675:12877,15041676:12878,15041677:12879,15041678:12880,15041458:12881,15041680:12882,15041687:12883,15041689:12884,15041691:12885,15041692:12886,15041693:12887,15041694:12888,15041699:12889,15041703:12890,15041704:12891,15041708:12892,15041709:12893,15041711:12894,15041713:12895,15041715:12896,15041716:12897,15041717:12898,15041720:12899,15041721:12900,15041922:12901,15041930:12902,15041935:12903,15041939:12904,15041941:12905,15041943:12906,15041944:12907,15041951:12908,15041956:12909,15041958:12910,15041982:12911,15042179:12912,15042180:12913,15042187:12914,15042190:12915,15042200:12916,15042205:12917,15042209:12918,15042211:12919,15042221:12920,15042232:12921,15042234:12922,15042236:12923,15042238:12924,15042239:12925,15042434:12926,15042440:13089,15042447:13090,15042449:13091,15042450:13092,15042451:13093,15042453:13094,15042456:13095,15042462:13096,15042466:13097,15042469:13098,15042478:13099,15042482:13100,15042483:13101,15042484:13102,15042487:13103,15042689:13104,15042690:13105,15042693:13106,15042706:13107,15042707:13108,15042709:13109,15042710:13110,15042712:13111,15042722:13112,15042728:13113,15042737:13114,15042738:13115,15042741:13116,15042748:13117,15042949:13118,15042953:13119,15042965:13120,15042967:13121,15042968:13122,15042970:13123,15042972:13124,15042975:13125,15042976:13126,15042977:13127,15042982:13128,15042990:13129,15042999:13130,15043e3:13131,15043001:13132,15043200:13133,15043202:13134,15043205:13135,15043210:13136,15043212:13137,15043219:13138,15043221:13139,15043222:13140,15043223:13141,15043224:13142,15043226:13143,15043228:13144,15043236:13145,15043237:13146,15043238:13147,15043239:13148,15043247:13149,15043248:13150,15043254:13151,15043255:13152,15043256:13153,15043258:13154,15043259:13155,15043261:13156,15043456:13157,15043460:13158,15043462:13159,15043464:13160,15043468:13161,15043471:13162,15043473:13163,15043476:13164,15043478:13165,15043483:13166,15043484:13167,15043489:13168,15043493:13169,15043496:13170,15043497:13171,15043498:13172,15043500:13173,15043504:13174,15043505:13175,15043508:13176,15043510:13177,15043511:13178,15043712:13179,15043715:13180,15043722:13181,15043723:13182,15043724:13345,15043729:13346,15043731:13347,15043736:13348,15043739:13349,15043740:13350,15043742:13351,15043743:13352,15043749:13353,15043751:13354,15043752:13355,15043753:13356,15043755:13357,15043756:13358,15043757:13359,15043760:13360,15043762:13361,15043765:13362,15043772:13363,15043773:13364,15043774:13365,15043970:13366,15043980:13367,15043979:13368,15043993:13369,15043995:13370,15044001:13371,15044003:13372,15044005:13373,15044012:13374,15044013:13375,15044018:13376,15044025:13377,15044030:13378,15044227:13379,15044231:13380,15044232:13381,15044238:13382,15044243:13383,15044244:13384,15044249:13385,15044253:13386,15044257:13387,15044260:13388,15044266:13389,15044267:13390,15044271:13391,15044274:13392,15044276:13393,15044277:13394,15044279:13395,15044280:13396,15044282:13397,15044285:13398,15044480:13399,15044485:13400,15044495:13401,15044498:13402,15044499:13403,15044501:13404,15044506:13405,15044509:13406,15044510:13407,15044512:13408,15044518:13409,15044519:13410,15044533:13411,15044738:13412,15044755:13413,15044762:13414,15044769:13415,15044775:13416,15044776:13417,15044778:13418,15044783:13419,15044785:13420,15044788:13421,15044789:13422,15044995:13423,15044996:13424,15044999:13425,15045005:13426,15045007:13427,15045022:13428,15045026:13429,15045028:13430,15045030:13431,15045031:13432,15045033:13433,15045035:13434,15045037:13435,15045038:13436,15045044:13437,15045055:13438,15045249:13601,15045251:13602,15045253:13603,15045256:13604,15045257:13605,15045261:13606,15045265:13607,15045269:13608,15045270:13609,15045276:13610,15045279:13611,15045281:13612,15045286:13613,15045287:13614,15045289:13615,15045290:13616,15045293:13617,15045294:13618,15045297:13619,15045303:13620,15045305:13621,15045306:13622,15045307:13623,15045311:13624,15045510:13625,15045514:13626,15045517:13627,15045518:13628,15045536:13629,15045546:13630,15045548:13631,15045551:13632,15045558:13633,15045564:13634,15045566:13635,15045567:13636,15045760:13637,15045761:13638,15045765:13639,15045768:13640,15045769:13641,15045772:13642,15045773:13643,15045774:13644,15045781:13645,15045802:13646,15045803:13647,15045810:13648,15045813:13649,15045814:13650,15045819:13651,15045820:13652,15045821:13653,15046017:13654,15046023:13655,15046025:13656,15046026:13657,15046029:13658,15046032:13659,15046033:13660,15046040:13661,15046042:13662,15046043:13663,15046046:13664,15046048:13665,15046049:13666,15046052:13667,15046054:13668,15046079:13669,15046273:13670,15046274:13671,15046278:13672,15046280:13673,15046286:13674,15046287:13675,15046289:13676,15046290:13677,15046291:13678,15046292:13679,15046295:13680,15046307:13681,15046308:13682,15046317:13683,15046322:13684,15046335:13685,15046529:13686,15046531:13687,15046534:13688,15046537:13689,15046539:13690,15046540:13691,15046542:13692,15046545:13693,15046546:13694,15046547:13857,15046551:13858,15046552:13859,15046555:13860,15046558:13861,15046562:13862,15046569:13863,15046582:13864,15046591:13865,15046789:13866,15046792:13867,15046794:13868,15046797:13869,15046798:13870,15046799:13871,15046800:13872,15046801:13873,15046802:13874,15046809:13875,15046828:13876,15046832:13877,15046835:13878,15046837:13879,15046839:13880,15046841:13881,15046843:13882,
15046844:13883,15046845:13884,15046847:13885,15047040:13886,15047041:13887,15047043:13888,15047044:13889,15047046:13890,15047049:13891,15047051:13892,15047053:13893,15047055:13894,15047060:13895,15047070:13896,15047072:13897,15047073:13898,15047074:13899,15047075:13900,15047078:13901,15047081:13902,15047085:13903,15047087:13904,15047089:13905,15047090:13906,15047093:13907,15047300:13908,15047301:13909,15047304:13910,15047307:13911,15047308:13912,15047317:13913,15047321:13914,15047322:13915,15047325:13916,15047326:13917,15047327:13918,15047334:13919,15047335:13920,15047336:13921,15047337:13922,15047339:13923,15047340:13924,15047341:13925,15047345:13926,15047347:13927,15047351:13928,15047358:13929,15047557:13930,15047561:13931,15047562:13932,15047563:13933,15047567:13934,15047568:13935,15047564:13936,15047565:13937,15047577:13938,15047580:13939,15047581:13940,15047583:13941,15047585:13942,15047588:13943,15047589:13944,15047590:13945,15047591:13946,15047592:13947,15047601:13948,15047595:13949,15047597:13950,15047606:14113,15047607:14114,15047809:14115,15047810:14116,15047815:14117,15047818:14118,15047820:14119,15047825:14120,15047829:14121,15047834:14122,15047835:14123,15047837:14124,15047840:14125,15047842:14126,15047843:14127,15047844:14128,15047845:14129,15047849:14130,15047850:14131,15047852:14132,15047854:14133,15047855:14134,15047859:14135,15047860:14136,15047869:14137,15047870:14138,15047871:14139,15048069:14140,15048070:14141,15048076:14142,15048077:14143,15048082:14144,15048098:14145,15048101:14146,15048103:14147,15048104:14148,15048107:14149,15048109:14150,15048110:14151,15048111:14152,15048112:14153,15048113:14154,15048115:14155,15048116:14156,15048117:14157,15048119:14158,15048121:14159,15048122:14160,15048123:14161,15048124:14162,15048126:14163,15048321:14164,15048323:14165,15048332:14166,15048340:14167,15048343:14168,15048345:14169,15048346:14170,15048348:14171,15048349:14172,15048350:14173,15048351:14174,15048353:14175,15048341:14176,15048359:14177,15048360:14178,15048361:14179,15048364:14180,15048376:14181,15048381:14182,15048583:14183,15048584:14184,15048588:14185,15048591:14186,15048597:14187,15048605:14188,15048606:14189,15048612:14190,15048614:14191,15048615:14192,15048617:14193,15048621:14194,15048624:14195,15048629:14196,15048630:14197,15048632:14198,15048637:14199,15048638:14200,15048639:14201,15048835:14202,15048836:14203,15048840:14204,15048841:14205,15048609:14206,15048844:14369,15048845:14370,15048859:14371,15048862:14372,15048863:14373,15048864:14374,15048870:14375,15048871:14376,15048877:14377,15048882:14378,15048889:14379,15048895:14380,15049097:14381,15049100:14382,15049101:14383,15049103:14384,15049104:14385,15049109:14386,15049119:14387,15049121:14388,15049124:14389,15049127:14390,15049128:14391,15049144:14392,15049148:14393,15049151:14394,15049344:14395,15049345:14396,15049351:14397,15049352:14398,15049353:14399,15049354:14400,15049356:14401,15049357:14402,15049359:14403,15049360:14404,15049364:14405,15049366:14406,15049373:14407,15049376:14408,15049377:14409,15049378:14410,15049382:14411,15049385:14412,15049393:14413,15049394:14414,15049604:14415,15049404:14416,15049602:14417,15049608:14418,15049613:14419,15049614:14420,15049616:14421,15049618:14422,15049620:14423,15049622:14424,15049626:14425,15049629:14426,15049633:14427,15049634:14428,15049641:14429,15049651:14430,15049861:14431,15049862:14432,15049867:14433,15049868:14434,15049874:14435,15049875:14436,15049876:14437,15243649:14438,15049885:14439,15049889:14440,15049891:14441,15049892:14442,15049896:14443,15049903:14444,15049904:14445,15049907:14446,15049909:14447,15049910:14448,15049919:14449,15050115:14450,15050118:14451,15050130:14452,15050131:14453,15050137:14454,15050139:14455,15050141:14456,15050142:14457,15050143:14458,15050145:14459,15050147:14460,15050155:14461,15050157:14462,15050159:14625,15050162:14626,15050165:14627,15050166:14628,15050169:14629,15050171:14630,15050172:14631,15050379:14632,15050380:14633,15050382:14634,15050386:14635,15050389:14636,15050391:14637,15050399:14638,15050404:14639,15050407:14640,15050413:14641,15050414:14642,15050415:14643,15050416:14644,15050419:14645,15050423:14646,15050426:14647,15050428:14648,15050625:14649,15050627:14650,15050628:14651,15050632:14652,15050634:14653,15050637:14654,15050642:14655,15050653:14656,15050654:14657,15050655:14658,15050659:14659,15050660:14660,15050663:14661,15050670:14662,15050671:14663,15050673:14664,15050674:14665,15050676:14666,15050679:14667,15050880:14668,15050884:14669,15050892:14670,15050893:14671,15050894:14672,15050898:14673,15050899:14674,15050910:14675,15050915:14676,15050916:14677,15050919:14678,15050920:14679,15050922:14680,15050925:14681,15050928:14682,15051140:14683,15051141:14684,15051143:14685,15051144:14686,15051148:14687,15051152:14688,15051157:14689,15051166:14690,15051171:14691,15051173:14692,15051175:14693,15051181:14694,15051191:14695,15051194:14696,15051195:14697,15051198:14698,15051403:14699,15051408:14700,15051411:14701,15051414:14702,15051417:14703,15051420:14704,15051422:14705,15051423:14706,15051424:14707,15051426:14708,15051431:14709,15051436:14710,15051441:14711,15051442:14712,15051443:14713,15051445:14714,15051448:14715,15051450:14716,15051451:14717,15051455:14718,15051652:14881,15051654:14882,15051656:14883,15051663:14884,15051674:14885,15051676:14886,15051680:14887,15051685:14888,15051690:14889,15051694:14890,15051701:14891,15051702:14892,15051709:14893,15051904:14894,15051905:14895,15051912:14896,15051927:14897,15051956:14898,15051929:14899,15051931:14900,15051933:14901,15051937:14902,15051941:14903,15051949:14904,15051960:14905,15052161:14906,15052171:14907,15052172:14908,15052178:14909,15052182:14910,15052190:14911,15052200:14912,15052206:14913,15052207:14914,15052220:14915,15052221:14916,15052222:14917,15052223:14918,15052417:14919,15052420:14920,15052422:14921,15052426:14922,15052430:14923,15052432:14924,15052433:14925,15052435:14926,15052436:14927,15052438:14928,15052456:14929,15052457:14930,15052460:14931,15052461:14932,15052463:14933,15052465:14934,15052466:14935,15052471:14936,15052474:14937,15052476:14938,15052672:14939,15052673:14940,15052685:14941,15052687:14942,15052694:14943,15052695:14944,15052696:14945,15052697:14946,15052698:14947,15052704:14948,15052719:14949,15052721:14950,15052724:14951,15052733:14952,15052940:14953,15052951:14954,15052958:14955,15052959:14956,15052963:14957,15052966:14958,15052969:14959,15052971:14960,15052972:14961,15052974:14962,15052976:14963,15052978:14964,15052981:14965,15052982:14966,15053209:14967,15053210:14968,15053212:14969,15053218:14970,15053219:14971,15053223:14972,15053224:14973,15053225:14974,15053229:15137,15053232:15138,15053236:15139,15053237:15140,15053242:15141,15053243:15142,15053244:15143,15053245:15144,15053447:15145,15053448:15146,15053450:15147,15053455:15148,15053458:15149,15053469:15150,15053471:15151,15053472:15152,15053474:15153,15053475:15154,15053478:15155,15053482:15156,15053490:15157,15053492:15158,15053493:15159,15053498:15160,15053705:15161,15053707:15162,15053714:15163,15053725:15164,15053719:15165,15053742:15166,15053745:15167,15053746:15168,15053748:15169,15053953:15170,15053958:15171,15053965:15172,15053970:15173,15053995:15174,15053987:15175,15053988:15176,15053990:15177,15053991:15178,15054001:15179,15054004:15180,15054009:15181,15054013:15182,15054015:15183,15054210:15184,15054211:15185,15054214:15186,15054216:15187,15054229:15188,15054225:15189,15054233:15190,15054218:15191,15054239:15192,15054240:15193,15054241:15194,15054242:15195,15054244:15196,15054250:15197,15054253:15198,15054256:15199,15054265:15200,15054266:15201,15054270:15202,15054271:15203,15054465:15204,15054467:15205,15054472:15206,15054474:15207,15054482:15208,15054483:15209,15054484:15210,15054485:15211,15054489:15212,15054491:15213,15054495:15214,15054496:15215,15054503:15216,15054507:15217,15054512:15218,15054516:15219,15054520:15220,15054521:15221,15054723:15222,15054727:15223,15054731:15224,15054736:15225,15054734:15226,
15054744:15227,15054745:15228,15054752:15229,15054756:15230,15054761:15393,15054776:15394,15054777:15395,15054976:15396,15054983:15397,15054989:15398,15054994:15399,15054996:15400,15054997:15401,15055e3:15402,15055007:15403,15055008:15404,15055022:15405,15055016:15406,15055026:15407,15055029:15408,15055038:15409,15055243:15410,15055248:15411,15055241:15412,15055249:15413,15055254:15414,15055256:15415,15055259:15416,15055260:15417,15055262:15418,15055272:15419,15055274:15420,15055275:15421,15055276:15422,15055277:15423,15055278:15424,15055280:15425,15055488:15426,15055499:15427,15055502:15428,15055522:15429,15055524:15430,15055525:15431,15055528:15432,15055530:15433,15055532:15434,15055537:15435,15055539:15436,15055549:15437,15055550:15438,15055551:15439,15055750:15440,15055756:15441,15055755:15442,15055758:15443,15055761:15444,15055762:15445,15055764:15446,15055765:15447,15055772:15448,15055774:15449,15055781:15450,15055787:15451,15056002:15452,15056006:15453,15056007:15454,15056008:15455,15056014:15456,15056025:15457,15056028:15458,15056029:15459,15056033:15460,15056034:15461,15056035:15462,15056036:15463,15056040:15464,15056043:15465,15056044:15466,15056046:15467,15056048:15468,15056052:15469,15056054:15470,15056059:15471,15056061:15472,15056063:15473,15056256:15474,15056260:15475,15056261:15476,15056263:15477,15056269:15478,15056272:15479,15056276:15480,15056280:15481,15056283:15482,15056288:15483,15056291:15484,15056292:15485,15056295:15486,15056303:15649,15056306:15650,15056308:15651,15056309:15652,15056312:15653,15056314:15654,15056317:15655,15056318:15656,15056521:15657,15056525:15658,15056527:15659,15056534:15660,15056540:15661,15056541:15662,15056546:15663,15056551:15664,15056555:15665,15056548:15666,15056556:15667,15056559:15668,15056560:15669,15056561:15670,15056568:15671,15056772:15672,15056775:15673,15056776:15674,15056777:15675,15056779:15676,15056784:15677,15056785:15678,15056786:15679,15056787:15680,15056788:15681,15056798:15682,15056801:15683,15056802:15684,15056808:15685,15056809:15686,15056810:15687,15056812:15688,15056813:15689,15056814:15690,15056815:15691,15056818:15692,15056819:15693,15056822:15694,15056826:15695,15056828:15696,15106183:15697,15106186:15698,15106189:15699,15106195:15700,15106196:15701,15106199:15702,15106200:15703,15106202:15704,15106207:15705,15106212:15706,15106221:15707,15106227:15708,15106229:15709,15106432:15710,15106439:15711,15106440:15712,15106441:15713,15106444:15714,15106449:15715,15106452:15716,15106454:15717,15106455:15718,15106461:15719,15106465:15720,15106471:15721,15106481:15722,15106494:15723,15106495:15724,15106690:15725,15106694:15726,15106696:15727,15106698:15728,15106702:15729,15106705:15730,15106707:15731,15106709:15732,15106712:15733,15106717:15734,15106718:15735,15106722:15736,15106724:15737,15106725:15738,15106728:15739,15106736:15740,15106737:15741,15106743:15742,15106747:15905,15106750:15906,15106946:15907,15106948:15908,15106952:15909,15106953:15910,15106954:15911,15106955:15912,15106958:15913,15106959:15914,15106964:15915,15106965:15916,15106969:15917,15106971:15918,15106973:15919,15106974:15920,15106978:15921,15106981:15922,15106994:15923,15106997:15924,15107e3:15925,15107004:15926,15107005:15927,15107202:15928,15107207:15929,15107210:15930,15107212:15931,15107216:15932,15107217:15933,15107218:15934,15107219:15935,15107220:15936,15107222:15937,15107223:15938,15107225:15939,15107228:15940,15107230:15941,15107234:15942,15107242:15943,15107243:15944,15107248:15945,15107249:15946,15107253:15947,15107254:15948,15107255:15949,15107257:15950,15107457:15951,15107461:15952,15107462:15953,15107465:15954,15107486:15955,15107488:15956,15107500:15957,15107506:15958,15107512:15959,15107515:15960,15107516:15961,15107519:15962,15107712:15963,15107713:15964,15107715:15965,15107716:15966,15107723:15967,15107725:15968,15107730:15969,15107731:15970,15107735:15971,15107736:15972,15107740:15973,15107741:15974,15107743:15975,15107744:15976,15107749:15977,15107752:15978,15107754:15979,15107757:15980,15107768:15981,15107769:15982,15107772:15983,15107968:15984,15107969:15985,15107970:15986,15107982:15987,15107983:15988,15107989:15989,15107996:15990,15107997:15991,15107998:15992,15107999:15993,15108001:15994,15108002:15995,15108007:15996,15108009:15997,15108005:15998,15108012:16161,15108013:16162,15108015:16163,15108225:16164,15108227:16165,15108228:16166,15108231:16167,15108243:16168,15108245:16169,15108252:16170,15108256:16171,15108258:16172,15108259:16173,15108263:16174,15108265:16175,15108267:16176,15108281:16177,15108285:16178,15108482:16179,15108483:16180,15108484:16181,15108486:16182,15108492:16183,15108496:16184,15108497:16185,15108498:16186,15108500:16187,15108502:16188,15108506:16189,15108508:16190,15108516:16191,15108525:16192,15108527:16193,15108531:16194,15108538:16195,15108541:16196,15108749:16197,15108750:16198,15108751:16199,15108752:16200,15108774:16201,15108776:16202,15108787:16203,15108790:16204,15108791:16205,15108794:16206,15108798:16207,15108799:16208,15108996:16209,15109006:16210,15109013:16211,15109014:16212,15109018:16213,15109034:16214,15109042:16215,15109044:16216,15109052:16217,15109053:16218,15109251:16219,15109252:16220,15109258:16221,15109259:16222,15109261:16223,15109264:16224,15109267:16225,15109270:16226,15109272:16227,15109289:16228,15109290:16229,15109293:16230,15109301:16231,15109302:16232,15109305:16233,15109308:16234,15109505:16235,15109506:16236,15109507:16237,15109508:16238,15109510:16239,15109514:16240,15109515:16241,15109518:16242,15109522:16243,15109523:16244,15109524:16245,15109528:16246,15109531:16247,15109541:16248,15109542:16249,15109548:16250,15109549:16251,15109553:16252,15109556:16253,15109557:16254,15109560:16417,15109564:16418,15109565:16419,15109567:16420,15109762:16421,15109764:16422,15109767:16423,15109770:16424,15109776:16425,15109780:16426,15109781:16427,15109785:16428,15109786:16429,15109790:16430,15109796:16431,15109798:16432,15109805:16433,15109806:16434,15109807:16435,15109821:16436,15110017:16437,15110021:16438,15110024:16439,15110030:16440,15110033:16441,15110035:16442,15110036:16443,15110037:16444,15110044:16445,15110048:16446,15110053:16447,15110058:16448,15110060:16449,15110066:16450,15110067:16451,15110069:16452,15110072:16453,15110073:16454,15110281:16455,15110282:16456,15110288:16457,15110290:16458,15110292:16459,15110296:16460,15110302:16461,15110304:16462,15110306:16463,15110308:16464,15110309:16465,15110313:16466,15110314:16467,15110319:16468,15110320:16469,15110325:16470,15110333:16471,15110335:16472,15110539:16473,15110543:16474,15110545:16475,15110546:16476,15110547:16477,15110548:16478,15110554:16479,15110555:16480,15110556:16481,15110557:16482,15110559:16483,15110560:16484,15110561:16485,15110563:16486,15110573:16487,15110579:16488,15110580:16489,15110587:16490,15110589:16491,15110789:16492,15110791:16493,15110799:16494,15110800:16495,15110801:16496,15110808:16497,15110809:16498,15110811:16499,15110813:16500,15110815:16501,15110817:16502,15110819:16503,15110822:16504,15110824:16505,15110828:16506,15110835:16507,15110845:16508,15110846:16509,15110847:16510,15111044:16673,15111049:16674,15111050:16675,15111051:16676,15111052:16677,15111054:16678,15111056:16679,15111057:16680,15111061:16681,15111063:16682,15111076:16683,15111077:16684,15111081:16685,15111082:16686,15111085:16687,15111088:16688,15111093:16689,15111095:16690,15111099:16691,15111103:16692,15111297:16693,15111300:16694,15111304:16695,15111305:16696,15111306:16697,15111311:16698,15111315:16699,15111316:16700,15111318:16701,15111321:16702,15111323:16703,15111326:16704,15111327:16705,15111330:16706,15111334:16707,15111337:16708,15111342:16709,15111345:16710,15111354:16711,15111356:16712,15111357:16713,15111555:16714,15111559:16715,15111561:16716,15111568:16717,15111570:16718,15111572:16719,15111583:16720,15111584:16721,15111591:16722,15111595:16723,15111610:16724,15111613:16725,15111809:16726,15111813:16727,15111818:16728,15111826:16729,15111829:16730,15111832:16731,15111837:16732,
15111840:16733,15111843:16734,15111846:16735,15111854:16736,15111858:16737,15111859:16738,15111860:16739,15111871:16740,15112066:16741,15112072:16742,15112073:16743,15112078:16744,15112080:16745,15112084:16746,15112086:16747,15112088:16748,15112095:16749,15112112:16750,15112114:16751,15112116:16752,15112117:16753,15112121:16754,15112126:16755,15112127:16756,15112320:16757,15112324:16758,15112328:16759,15112329:16760,15112333:16761,15112337:16762,15112338:16763,15112341:16764,15112342:16765,15112349:16766,15112350:16929,15112353:16930,15112354:16931,15112355:16932,15112356:16933,15112358:16934,15112361:16935,15112362:16936,15112363:16937,15112364:16938,15112366:16939,15112368:16940,15112369:16941,15112371:16942,15112377:16943,15112375:16944,15112576:16945,15112581:16946,15112582:16947,15112586:16948,15112588:16949,15112593:16950,15112590:16951,15112599:16952,15112600:16953,15112601:16954,15112603:16955,15112604:16956,15112608:16957,15112609:16958,15113147:16959,15112618:16960,15112619:16961,15112620:16962,15112638:16963,15112627:16964,15112629:16965,15112639:16966,15112631:16967,15112632:16968,15112633:16969,15112635:16970,15112832:16971,15112636:16972,15112843:16973,15112844:16974,15112845:16975,15112848:16976,15112850:16977,15112857:16978,15112858:16979,15112859:16980,15112860:16981,15112863:16982,15112864:16983,15112868:16984,15112877:16985,15112881:16986,15112882:16987,15112885:16988,15112891:16989,15112895:16990,15113088:16991,15113090:16992,15113091:16993,15113096:16994,15113100:16995,15113102:16996,15113103:16997,15113108:16998,15113115:16999,15113119:17e3,15113128:17001,15113131:17002,15113132:17003,15113134:17004,15113146:17005,15113349:17006,15113351:17007,15113358:17008,15113363:17009,15113369:17010,15113372:17011,15113376:17012,15113378:17013,15113395:17014,15113406:17015,15113605:17016,15113607:17017,15113608:17018,15113612:17019,15113620:17020,15113621:17021,15113629:17022,15113638:17185,15113644:17186,15113646:17187,15113652:17188,15113654:17189,15113659:17190,15113857:17191,15113860:17192,15113870:17193,15113871:17194,15113873:17195,15113875:17196,15113878:17197,15113880:17198,15113881:17199,15113883:17200,15113904:17201,15113905:17202,15113906:17203,15113909:17204,15113915:17205,15113916:17206,15113917:17207,15114169:17208,15114112:17209,15114114:17210,15114115:17211,15114117:17212,15114120:17213,15114121:17214,15114130:17215,15114135:17216,15114137:17217,15114140:17218,15114145:17219,15114150:17220,15114160:17221,15114162:17222,15114166:17223,15114167:17224,15114642:17225,15114388:17226,15114393:17227,15114397:17228,15114399:17229,15114408:17230,15114407:17231,15114412:17232,15114413:17233,15114415:17234,15114416:17235,15114417:17236,15114419:17237,15114427:17238,15114431:17239,15114628:17240,15114629:17241,15114634:17242,15114636:17243,15114645:17244,15114647:17245,15114648:17246,15114651:17247,15114667:17248,15114670:17249,15114671:17250,15114672:17251,15114673:17252,15114674:17253,15114677:17254,15114681:17255,15114682:17256,15114683:17257,15114684:17258,15114882:17259,15114884:17260,15114886:17261,15114888:17262,15114902:17263,15114904:17264,15114906:17265,15114908:17266,15114913:17267,15114915:17268,15114917:17269,15114921:17270,15114922:17271,15114926:17272,15114930:17273,15114939:17274,15115141:17275,15115144:17276,15115148:17277,15115151:17278,15115152:17441,15115153:17442,15115155:17443,15115158:17444,15115161:17445,15115164:17446,15115165:17447,15115173:17448,15115176:17449,15115178:17450,15115179:17451,15115180:17452,15115181:17453,15115184:17454,15115185:17455,15115189:17456,15115190:17457,15115195:17458,15115196:17459,15115197:17460,15115398:17461,15115401:17462,15115402:17463,15115408:17464,15115409:17465,15115411:17466,15115414:17467,15115415:17468,15115441:17469,15115443:17470,15115445:17471,15115448:17472,15115451:17473,15115650:17474,15115653:17475,15115657:17476,15115662:17477,15115671:17478,15115675:17479,15115683:17480,15115684:17481,15115685:17482,15115686:17483,15115688:17484,15115689:17485,15115692:17486,15115696:17487,15115697:17488,15115698:17489,15115706:17490,15115707:17491,15115711:17492,15115904:17493,15115917:17494,15115922:17495,15115926:17496,15115928:17497,15115937:17498,15115941:17499,15115942:17500,15115944:17501,15115947:17502,15115949:17503,15115951:17504,15115959:17505,15115960:17506,15115962:17507,15115964:17508,15116165:17509,15116168:17510,15116177:17511,15116182:17512,15116183:17513,15116194:17514,15116197:17515,15116206:17516,15116207:17517,15116209:17518,15116211:17519,15116213:17520,15116222:17521,15116416:17522,15116417:17523,15116419:17524,15116431:17525,15116433:17526,15116437:17527,15116442:17528,15116445:17529,15116448:17530,15116452:17531,15116456:17532,15116464:17533,15116466:17534,15116468:17697,15116471:17698,15116475:17699,15116478:17700,15116479:17701,15116677:17702,15116678:17703,15116681:17704,15116682:17705,15116686:17706,15116688:17707,15116689:17708,15116690:17709,15116693:17710,15116694:17711,15116699:17712,15116708:17713,15116711:17714,15116714:17715,15116721:17716,15116723:17717,15116734:17718,15116929:17719,15116931:17720,15116934:17721,15116935:17722,15116937:17723,15116939:17724,15116945:17725,15116955:17726,15116957:17727,15116958:17728,15116959:17729,15116965:17730,15116971:17731,15116975:17732,15116976:17733,15116977:17734,15116980:17735,15116989:17736,15116990:17737,15116991:17738,15117190:17739,15117193:17740,15117192:17741,15117196:17742,15117200:17743,15117204:17744,15117205:17745,15117206:17746,15117212:17747,15117213:17748,15117220:17749,15117223:17750,15117228:17751,15117232:17752,15117233:17753,15117234:17754,15117244:17755,15117245:17756,15117442:17757,15117443:17758,15117446:17759,15117447:17760,15117449:17761,15117455:17762,15117456:17763,15117457:17764,15117463:17765,15117467:17766,15117470:17767,15117476:17768,15117480:17769,15117483:17770,15117484:17771,15117487:17772,15117493:17773,15117494:17774,15117499:17775,15117503:17776,15117702:17777,15117706:17778,15117709:17779,15117714:17780,15117718:17781,15117720:17782,15117725:17783,15117728:17784,15117735:17785,15117739:17786,15117742:17787,15117744:17788,15117749:17789,15117757:17790,15117758:17953,15117954:17954,15117957:17955,15117975:17956,15117979:17957,15117983:17958,15117984:17959,15117986:17960,15117987:17961,15117992:17962,15117993:17963,15117996:17964,15117997:17965,15117998:17966,15118e3:17967,15118008:17968,15118009:17969,15118013:17970,15118014:17971,15118211:17972,15118212:17973,15118217:17974,15118220:17975,15118230:17976,15118234:17977,15118241:17978,15118243:17979,15118246:17980,15118247:17981,15118254:17982,15118257:17983,15118263:17984,15118265:17985,15118271:17986,15118466:17987,15118468:17988,15118469:17989,15118473:17990,15118477:17991,15118478:17992,15118480:17993,15118482:17994,15118489:17995,15118495:17996,15118502:17997,15118503:17998,15118504:17999,15118508:18e3,15118510:18001,15118515:18002,15118517:18003,15118518:18004,15118522:18005,15118523:18006,15118527:18007,15118730:18008,15118731:18009,15118733:18010,15118735:18011,15118738:18012,15118740:18013,15118745:18014,15118747:18015,15118748:18016,15118763:18017,15118765:18018,15118767:18019,15118772:18020,15118774:18021,15118776:18022,15118777:18023,15118779:18024,15118981:18025,15118982:18026,15118983:18027,15118985:18028,15118996:18029,15118997:18030,15118999:18031,15119e3:18032,15119004:18033,15119007:18034,15119024:18035,15119026:18036,15119028:18037,15119234:18038,15119238:18039,15119245:18040,15119247:18041,15119248:18042,15119249:18043,15119250:18044,15119252:18045,15119254:18046,15119258:18209,15119260:18210,15119264:18211,15119271:18212,15119273:18213,15119275:18214,15119276:18215,15119278:18216,15119282:18217,15119284:18218,15119492:18219,15119495:18220,15119498:18221,15119502:18222,15119503:18223,15119505:18224,15119507:18225,15119514:18226,15119526:18227,15119527:18228,15119528:18229,15118759:18230,15119534:18231,15119535:18232,15119537:18233,15119545:18234,15119548:18235,15119551:18236,15119767:18237,15119774:18238,
15119775:18239,15119777:18240,15119781:18241,15119783:18242,15119791:18243,15119792:18244,15119804:18245,15120002:18246,15120007:18247,15120017:18248,15120018:18249,15120020:18250,15120022:18251,15120023:18252,15120024:18253,15120042:18254,15120044:18255,15120052:18256,15120055:18257,15120057:18258,15120061:18259,15120063:18260,15120260:18261,15120264:18262,15120266:18263,15120270:18264,15120271:18265,15120278:18266,15120283:18267,15120285:18268,15120287:18269,15120288:18270,15120290:18271,15120293:18272,15120297:18273,15120303:18274,15120304:18275,15120308:18276,15120310:18277,15120316:18278,15120512:18279,15120516:18280,15120542:18281,15120546:18282,15120551:18283,15120562:18284,15120566:18285,15120569:18286,15120571:18287,15120572:18288,15120772:18289,15120773:18290,15120776:18291,15120777:18292,15120779:18293,15120783:18294,15120785:18295,15120786:18296,15120787:18297,15120788:18298,15120791:18299,15120796:18300,15120797:18301,15120798:18302,15120802:18465,15120803:18466,15120808:18467,15120819:18468,15120827:18469,15120829:18470,15121037:18471,15121043:18472,15121049:18473,15121056:18474,15121063:18475,15121069:18476,15121070:18477,15121073:18478,15121075:18479,15121083:18480,15121087:18481,15121280:18482,15121281:18483,15121283:18484,15121287:18485,15121288:18486,15121290:18487,15121293:18488,15121294:18489,15121295:18490,15121323:18491,15121325:18492,15121326:18493,15121337:18494,15121339:18495,15121341:18496,15121540:18497,15121544:18498,15121546:18499,15121548:18500,15121549:18501,15121558:18502,15121560:18503,15121562:18504,15121563:18505,15121574:18506,15121577:18507,15121578:18508,15121583:18509,15121584:18510,15121587:18511,15121590:18512,15121595:18513,15121596:18514,15121581:18515,15121807:18516,15121809:18517,15121810:18518,15121811:18519,15121815:18520,15121817:18521,15121818:18522,15121821:18523,15121822:18524,15121825:18525,15121826:18526,15121832:18527,15121836:18528,15121853:18529,15121854:18530,15122051:18531,15122055:18532,15122056:18533,15122059:18534,15122060:18535,15122061:18536,15122064:18537,15122066:18538,15122067:18539,15122068:18540,15122070:18541,15122074:18542,15122079:18543,15122080:18544,15122085:18545,15122086:18546,15122087:18547,15122088:18548,15122094:18549,15122095:18550,15122096:18551,15122101:18552,15122102:18553,15122108:18554,15122309:18555,15122311:18556,15122312:18557,15122314:18558,15122330:18721,15122334:18722,15122344:18723,15122345:18724,15122352:18725,15122357:18726,15122361:18727,15122364:18728,15122365:18729,15171712:18730,15171717:18731,15171718:18732,15171719:18733,15171725:18734,15171735:18735,15171744:18736,15171747:18737,15171759:18738,15171764:18739,15171767:18740,15171769:18741,15171772:18742,15171971:18743,15171972:18744,15171976:18745,15171977:18746,15171978:18747,15171979:18748,15171988:18749,15171989:18750,15171997:18751,15171998:18752,15171982:18753,15172004:18754,15172005:18755,15172012:18756,15172014:18757,15172021:18758,15172022:18759,15172030:18760,15172225:18761,15172229:18762,15172230:18763,15172244:18764,15172245:18765,15172246:18766,15172247:18767,15172248:18768,15172251:18769,15172260:18770,15172267:18771,15172272:18772,15172273:18773,15172276:18774,15172279:18775,15172490:18776,15172497:18777,15172499:18778,15172500:18779,15172501:18780,15172502:18781,15172504:18782,15172508:18783,15172516:18784,15172538:18785,15172739:18786,15172740:18787,15172741:18788,15172742:18789,15172743:18790,15172747:18791,15172748:18792,15172751:18793,15172766:18794,15172768:18795,15172779:18796,15172781:18797,15172783:18798,15172784:18799,15172785:18800,15172792:18801,15172993:18802,15172997:18803,15172998:18804,15172999:18805,15173002:18806,15173003:18807,15173008:18808,15173010:18809,15173015:18810,15173018:18811,15173020:18812,15173022:18813,15173024:18814,15173032:18977,15173049:18978,15173248:18979,15173253:18980,15173255:18981,15173260:18982,15173266:18983,15173274:18984,15173275:18985,15173280:18986,15173282:18987,15173295:18988,15173296:18989,15173298:18990,15173299:18991,15173306:18992,15173311:18993,15173504:18994,15173505:18995,15173508:18996,15173515:18997,15173516:18998,15173523:18999,15173526:19e3,15173529:19001,15173530:19002,15173532:19003,15173560:19004,15173566:19005,15173760:19006,15173767:19007,15173768:19008,15173769:19009,15173779:19010,15173783:19011,15173786:19012,15173789:19013,15173791:19014,15173796:19015,15173803:19016,15173807:19017,15173812:19018,15173816:19019,15173817:19020,15174017:19021,15174018:19022,15174019:19023,15174021:19024,15174030:19025,15174031:19026,15174032:19027,15174035:19028,15174037:19029,15174038:19030,15174042:19031,15174044:19032,15174046:19033,15174048:19034,15174051:19035,15174056:19036,15174059:19037,15174062:19038,15174063:19039,15174065:19040,15174071:19041,15174072:19042,15174075:19043,15174076:19044,15174079:19045,15174276:19046,15174281:19047,15174285:19048,15174286:19049,15174291:19050,15174299:19051,15174312:19052,15174317:19053,15174318:19054,15174321:19055,15174324:19056,15174334:19057,15174529:19058,15174535:19059,15174537:19060,15174540:19061,15174549:19062,15174550:19063,15174552:19064,15174559:19065,15174565:19066,15174579:19067,15174580:19068,15174586:19069,15174587:19070,15174590:19233,15174786:19234,15174788:19235,15174789:19236,15174791:19237,15174795:19238,15174797:19239,15174802:19240,15174803:19241,15174808:19242,15174809:19243,15174814:19244,15174818:19245,15174820:19246,15174823:19247,15174824:19248,15174828:19249,15174833:19250,15174834:19251,15174837:19252,15174842:19253,15174843:19254,15174845:19255,15175043:19256,15175053:19257,15175056:19258,15175058:19259,15175062:19260,15175064:19261,15175069:19262,15175070:19263,15175071:19264,15175072:19265,15175078:19266,15175079:19267,15175081:19268,15175083:19269,15175084:19270,15175086:19271,15175087:19272,15175089:19273,15175095:19274,15175097:19275,15175100:19276,15175296:19277,15175297:19278,15175299:19279,15175301:19280,15175302:19281,15175310:19282,15175312:19283,15175315:19284,15175317:19285,15175319:19286,15175320:19287,15175324:19288,15175326:19289,15175327:19290,15175328:19291,15175330:19292,15175333:19293,15175334:19294,15175338:19295,15175339:19296,15175341:19297,15175349:19298,15175351:19299,15175353:19300,15175356:19301,15175357:19302,15175359:19303,15175557:19304,15175558:19305,15175561:19306,15175563:19307,15175564:19308,15175567:19309,15175570:19310,15175571:19311,15175574:19312,15175577:19313,15175581:19314,15175585:19315,15175587:19316,15175590:19317,15175591:19318,15175593:19319,15175604:19320,15175605:19321,15175607:19322,15175609:19323,15175610:19324,15175611:19325,15175613:19326,15175615:19489,15175808:19490,15175809:19491,15175812:19492,15175815:19493,15175818:19494,15175825:19495,15175834:19496,15175835:19497,15175844:19498,15175846:19499,15175848:19500,15175849:19501,15175850:19502,15175851:19503,15175852:19504,15175853:19505,15175854:19506,15175855:19507,15175856:19508,15175857:19509,15175865:19510,15176064:19511,15176067:19512,15176068:19513,15176070:19514,15176071:19515,15176075:19516,15176077:19517,15176081:19518,15176082:19519,15176087:19520,15176093:19521,15176098:19522,15176102:19523,15176103:19524,15176104:19525,15176107:19526,15176109:19527,15176110:19528,15176113:19529,15176114:19530,15176320:19531,15176321:19532,15176325:19533,15176326:19534,15176327:19535,15176329:19536,15176335:19537,15176336:19538,15176337:19539,15176338:19540,15176344:19541,15176345:19542,15176346:19543,15176348:19544,15176351:19545,15176352:19546,15176353:19547,15176355:19548,15176358:19549,15176360:19550,15176361:19551,15176362:19552,15176363:19553,15176366:19554,15176367:19555,15176369:19556,15176370:19557,15176373:19558,15176377:19559,15176379:19560,15176383:19561,15176584:19562,15176585:19563,15176588:19564,15176592:19565,15176595:19566,15176600:19567,15176602:19568,15176603:19569,15176606:19570,15176607:19571,15176612:19572,15176616:19573,15176618:19574,15176619:19575,15176623:19576,15176628:19577,15176634:19578,15176635:19579,15176636:19580,15176639:19581,15176838:19582,
15176850:19745,15176854:19746,15176855:19747,15176864:19748,15176865:19749,15176868:19750,15176871:19751,15176873:19752,15176874:19753,15176879:19754,15176886:19755,15176889:19756,15176893:19757,15176894:19758,15176895:19759,15177088:19760,15177091:19761,15177095:19762,15177096:19763,15177102:19764,15177104:19765,15177106:19766,15177111:19767,15177118:19768,15177119:19769,15177121:19770,15177135:19771,15177137:19772,15177145:19773,15177146:19774,15177147:19775,15177148:19776,15177149:19777,15177150:19778,15177345:19779,15177349:19780,15177360:19781,15177362:19782,15177363:19783,15177365:19784,15177369:19785,15177372:19786,15177378:19787,15177380:19788,15177396:19789,15177402:19790,15177407:19791,15177600:19792,15177601:19793,15177604:19794,15177606:19795,15177612:19796,15177614:19797,15177615:19798,15177623:19799,15177628:19800,15177631:19801,15177632:19802,15177633:19803,15177636:19804,15177639:19805,15177644:19806,15177646:19807,15177647:19808,15177649:19809,15177657:19810,15177856:19811,15177858:19812,15177859:19813,15177860:19814,15177863:19815,15177864:19816,15177866:19817,15177868:19818,15177871:19819,15177874:19820,15177875:19821,15177877:19822,15177878:19823,15177881:19824,15177883:19825,15177884:19826,15177885:19827,15177886:19828,15177891:19829,15177893:19830,15177894:19831,15177897:19832,15177901:19833,15177906:19834,15177907:19835,15177909:19836,15177912:19837,15177913:19838,15177914:20001,15177916:20002,15178122:20003,15178112:20004,15178113:20005,15178115:20006,15178116:20007,15178117:20008,15178121:20009,15178123:20010,15178133:20011,15178137:20012,15178143:20013,15178148:20014,15178149:20015,15178157:20016,15178158:20017,15178159:20018,15178161:20019,15178164:20020,15178369:20021,15178373:20022,15178380:20023,15178381:20024,15178389:20025,15178395:20026,15178396:20027,15178397:20028,15178399:20029,15178400:20030,15178402:20031,15178403:20032,15178404:20033,15178405:20034,15178406:20035,15178407:20036,15178408:20037,15178410:20038,15178413:20039,15178429:20040,15178625:20041,15178629:20042,15178633:20043,15178635:20044,15178636:20045,15178638:20046,15178644:20047,15178649:20048,15178656:20049,15178662:20050,15178664:20051,15178668:20052,15178672:20053,15178673:20054,15178678:20055,15178681:20056,15178684:20057,15178880:20058,15178886:20059,15178890:20060,15178894:20061,15178898:20062,15178900:20063,15178901:20064,15178903:20065,15178905:20066,15178906:20067,15178908:20068,15178914:20069,15178920:20070,15178925:20071,15178926:20072,15178927:20073,15178932:20074,15178933:20075,15178934:20076,15178937:20077,15178941:20078,15178942:20079,15179138:20080,15179141:20081,15179142:20082,15179146:20083,15179149:20084,15179150:20085,15179151:20086,15179154:20087,15179158:20088,15179159:20089,15179164:20090,15179166:20091,15179167:20092,15179168:20093,15179170:20094,15179172:20257,15179175:20258,15179178:20259,15179180:20260,15179184:20261,15179186:20262,15179187:20263,15179188:20264,15179194:20265,15179197:20266,15179392:20267,15179396:20268,15179404:20269,15179405:20270,15179412:20271,15179413:20272,15179414:20273,15179418:20274,15179423:20275,15179426:20276,15179431:20277,15179434:20278,15179438:20279,15179439:20280,15179441:20281,15179445:20282,15179454:20283,15179651:20284,15179657:20285,15179665:20286,15179666:20287,15179669:20288,15179673:20289,15179678:20290,15179679:20291,15179680:20292,15179684:20293,15179686:20294,15179690:20295,15179692:20296,15179696:20297,15179697:20298,15179700:20299,15179704:20300,15179707:20301,15179909:20302,15179910:20303,15179913:20304,15179917:20305,15179918:20306,15179921:20307,15179933:20308,15179937:20309,15179938:20310,15179939:20311,15179949:20312,15179950:20313,15179952:20314,15179957:20315,15179959:20316,15180163:20317,15180164:20318,15180167:20319,15180168:20320,15180172:20321,15180174:20322,15180178:20323,15180188:20324,15180190:20325,15180192:20326,15180193:20327,15180195:20328,15180196:20329,15180200:20330,15180202:20331,15180206:20332,15180218:20333,15180222:20334,15180426:20335,15180431:20336,15180436:20337,15180440:20338,15180449:20339,15180445:20340,15180446:20341,15180447:20342,15180452:20343,15180456:20344,15180460:20345,15180461:20346,15180464:20347,15180465:20348,15180466:20349,15180467:20350,15180475:20513,15180477:20514,15180479:20515,15180679:20516,15180680:20517,15180681:20518,15180684:20519,15180686:20520,15180690:20521,15180691:20522,15180693:20523,15180694:20524,15180708:20525,15180699:20526,15180703:20527,15180704:20528,15180705:20529,15180710:20530,15180714:20531,15180722:20532,15180723:20533,15180928:20534,15180726:20535,15180727:20536,15180730:20537,15180731:20538,15180735:20539,15180934:20540,15180940:20541,15180944:20542,15180954:20543,15180956:20544,15180958:20545,15180959:20546,15180960:20547,15180965:20548,15180967:20549,15180969:20550,15180973:20551,15180977:20552,15180980:20553,15180981:20554,15180987:20555,15180989:20556,15180991:20557,15181188:20558,15181189:20559,15181190:20560,15181194:20561,15181195:20562,15181199:20563,15181201:20564,15181204:20565,15181208:20566,15181211:20567,15181212:20568,15181223:20569,15181225:20570,15181227:20571,15181234:20572,15181241:20573,15181243:20574,15181244:20575,15181246:20576,15181451:20577,15181452:20578,15181457:20579,15181459:20580,15181460:20581,15181461:20582,15181462:20583,15181464:20584,15181467:20585,15181468:20586,15181473:20587,15181480:20588,15181481:20589,15181483:20590,15181487:20591,15181489:20592,15181492:20593,15181496:20594,15181499:20595,15181698:20596,15181700:20597,15181703:20598,15181704:20599,15181706:20600,15181711:20601,15181716:20602,15181718:20603,15181722:20604,15181725:20605,15181726:20606,15181728:20769,15181730:20770,15181733:20771,15181738:20772,15181739:20773,15181741:20774,15181745:20775,15181752:20776,15181756:20777,15181954:20778,15181955:20779,15181959:20780,15181961:20781,15181962:20782,15181964:20783,15181969:20784,15181973:20785,15181979:20786,15181982:20787,15181985:20788,15181991:20789,15181995:20790,15181997:20791,15181999:20792,15182e3:20793,15182004:20794,15182005:20795,15182008:20796,15182009:20797,15182010:20798,15182212:20799,15182213:20800,15182215:20801,15182216:20802,15182220:20803,15182229:20804,15182230:20805,15182233:20806,15182236:20807,15182237:20808,15182239:20809,15182240:20810,15182245:20811,15182247:20812,15182250:20813,15182253:20814,15182261:20815,15182264:20816,15182270:20817,15182464:20818,15182466:20819,15182469:20820,15182470:20821,15182474:20822,15182475:20823,15182480:20824,15182481:20825,15182484:20826,15182494:20827,15182496:20828,15182499:20829,15182508:20830,15182515:20831,15182517:20832,15182521:20833,15182523:20834,15182524:20835,15182726:20836,15182729:20837,15182732:20838,15182734:20839,15182737:20840,15182747:20841,15182760:20842,15182761:20843,15182763:20844,15182764:20845,15182769:20846,15182772:20847,15182779:20848,15182781:20849,15182782:20850,15182983:20851,15182996:20852,15183007:20853,15183011:20854,15183015:20855,15183017:20856,15183018:20857,15183019:20858,15183021:20859,15183022:20860,15183023:20861,15183024:20862,15183025:21025,15183028:21026,15183037:21027,15183039:21028,15183232:21029,15183233:21030,15183239:21031,15183246:21032,15183253:21033,15183264:21034,15183268:21035,15183270:21036,15183273:21037,15183274:21038,15183277:21039,15183279:21040,15183282:21041,15183283:21042,15183287:21043,15183492:21044,15183497:21045,15183502:21046,15183504:21047,15183505:21048,15183510:21049,15183515:21050,15183518:21051,15183520:21052,15183525:21053,15183532:21054,15183535:21055,15183536:21056,15183538:21057,15183541:21058,15183542:21059,15183546:21060,15183547:21061,15183548:21062,15183549:21063,15183746:21064,15183749:21065,15183752:21066,15183754:21067,15183764:21068,15183766:21069,15183767:21070,15183769:21071,15183770:21072,15183771:21073,15183784:21074,15183786:21075,15183794:21076,15183796:21077,15183797:21078,15183800:21079,15183801:21080,15183802:21081,15183804:21082,15183806:21083,15184001:21084,15184002:21085,15184003:21086,15184004:21087,15184006:21088,
15184009:21089,15184011:21090,15184012:21091,15184014:21092,15184015:21093,15184025:21094,15184027:21095,15184032:21096,15184037:21097,15184038:21098,15184040:21099,15184044:21100,15184049:21101,15184051:21102,15184052:21103,15184054:21104,15184057:21105,15184058:21106,15184262:21107,15184266:21108,15184277:21109,15184273:21110,15184274:21111,15184275:21112,15184281:21113,15184282:21114,15184283:21115,15184284:21116,15184285:21117,15184286:21118,15184289:21281,15184291:21282,15184295:21283,15184297:21284,15184301:21285,15184302:21286,15184304:21287,15184306:21288,15184313:21289,15184316:21290,15184317:21291,15184518:21292,15184519:21293,15184527:21294,15184532:21295,15184542:21296,15184544:21297,15184550:21298,15184560:21299,15184566:21300,15184567:21301,15184570:21302,15184571:21303,15184572:21304,15184575:21305,15184772:21306,15184775:21307,15184776:21308,15184777:21309,15184781:21310,15184783:21311,15184787:21312,15184788:21313,15184789:21314,15184791:21315,15184793:21316,15184794:21317,15184797:21318,15184806:21319,15184809:21320,15184811:21321,15184821:21322,15185027:21323,15185031:21324,15185032:21325,15185033:21326,15185039:21327,15185041:21328,15185042:21329,15185043:21330,15185046:21331,15185053:21332,15185054:21333,15185059:21334,15185062:21335,15185066:21336,15185069:21337,15185073:21338,15185084:21339,15185085:21340,15185086:21341,15185280:21342,15185281:21343,15185287:21344,15185288:21345,15185293:21346,15185297:21347,15185299:21348,15185303:21349,15185305:21350,15185306:21351,15185308:21352,15185309:21353,15185317:21354,15185319:21355,15185322:21356,15185328:21357,15185336:21358,15185338:21359,15185339:21360,15185343:21361,15185537:21362,15185538:21363,15185539:21364,15185541:21365,15185542:21366,15185544:21367,15185547:21368,15185548:21369,15185549:21370,15185553:21371,15185558:21372,15185559:21373,15185565:21374,15185566:21537,15185574:21538,15185575:21539,15185578:21540,15185587:21541,15185590:21542,15185591:21543,15185593:21544,15185794:21545,15185795:21546,15185796:21547,15185797:21548,15185798:21549,15185804:21550,15185805:21551,15185806:21552,15185815:21553,15185817:21554,15186048:21555,15185826:21556,15185829:21557,15185830:21558,15185834:21559,15185835:21560,15185837:21561,15185841:21562,15185845:21563,15185846:21564,15185849:21565,15185850:21566,15186056:21567,15186064:21568,15186065:21569,15186069:21570,15186071:21571,15186076:21572,15186077:21573,15186080:21574,15186087:21575,15186088:21576,15186092:21577,15186093:21578,15186095:21579,15186099:21580,15186102:21581,15186111:21582,15186308:21583,15186309:21584,15186311:21585,15186318:21586,15186320:21587,15186322:21588,15186328:21589,15186335:21590,15186337:21591,15186338:21592,15186341:21593,15186347:21594,15186350:21595,15186351:21596,15186355:21597,15186360:21598,15186366:21599,15186561:21600,15186566:21601,15186567:21602,15186570:21603,15186573:21604,15186577:21605,15186581:21606,15186584:21607,15186586:21608,15186589:21609,15186590:21610,15187132:21611,15187131:21612,15187133:21613,15187134:21614,15187135:21615,15187331:21616,15187332:21617,15187335:21618,15187343:21619,15187346:21620,15187347:21621,15187355:21622,15187356:21623,15187357:21624,15187361:21625,15187363:21626,15187364:21627,15187365:21628,15187366:21629,15187373:21630,15187377:21793,15187389:21794,15187390:21795,15187391:21796,15187584:21797,15187595:21798,15187597:21799,15187599:21800,15187600:21801,15187601:21802,15187606:21803,15187607:21804,15187612:21805,15187617:21806,15187618:21807,15187622:21808,15187626:21809,15187629:21810,15187636:21811,15187644:21812,15187647:21813,15187840:21814,15187843:21815,15187848:21816,15187854:21817,15187855:21818,15187867:21819,15187871:21820,15187875:21821,15187877:21822,15187880:21823,15187884:21824,15187886:21825,15187887:21826,15187890:21827,15187898:21828,15187901:21829,15187902:21830,15187903:21831,15237255:21832,15237256:21833,15237258:21834,15237261:21835,15237262:21836,15237263:21837,15237265:21838,15237267:21839,15237268:21840,15237270:21841,15237277:21842,15237278:21843,15237279:21844,15237280:21845,15237284:21846,15237286:21847,15237292:21848,15237294:21849,15237296:21850,15237300:21851,15237301:21852,15237303:21853,15237305:21854,15237306:21855,15237308:21856,15237310:21857,15237504:21858,15237508:21859,15237536:21860,15237540:21861,15237542:21862,15237549:21863,15237553:21864,15237557:21865,15237761:21866,15237768:21867,15237774:21868,15237788:21869,15237790:21870,15237798:21871,15237799:21872,15237803:21873,15237816:21874,15237817:21875,15238024:21876,15238029:21877,15238031:21878,15238034:21879,15238036:21880,15238037:21881,15238039:21882,15238040:21883,15238048:21884,15238061:21885,15238062:21886,15238064:22049,15238066:22050,15238067:22051,15238070:22052,15238073:22053,15238074:22054,15238078:22055,15238275:22056,15238283:22057,15238294:22058,15238295:22059,15238296:22060,15238300:22061,15238302:22062,15238304:22063,15238308:22064,15238311:22065,15238316:22066,15238320:22067,15238325:22068,15238330:22069,15238332:22070,15238533:22071,15238535:22072,15238538:22073,15238540:22074,15238546:22075,15238551:22076,15238560:22077,15238561:22078,15238567:22079,15238568:22080,15238569:22081,15238573:22082,15238575:22083,15238583:22084,15238785:22085,15238800:22086,15238788:22087,15238789:22088,15238790:22089,15238795:22090,15238798:22091,15238806:22092,15238808:22093,15238811:22094,15238814:22095,15238818:22096,15238830:22097,15238834:22098,15238836:22099,15238843:22100,15239051:22101,15239043:22102,15239045:22103,15239050:22104,15239054:22105,15239055:22106,15239061:22107,15239063:22108,15239067:22109,15239069:22110,15239070:22111,15239073:22112,15239076:22113,15239083:22114,15239084:22115,15239088:22116,15239089:22117,15239090:22118,15239093:22119,15239094:22120,15239096:22121,15239097:22122,15239101:22123,15239103:22124,15239296:22125,15239299:22126,15239311:22127,15239315:22128,15239316:22129,15239321:22130,15239322:22131,15239325:22132,15239329:22133,15239330:22134,15239336:22135,15239346:22136,15239348:22137,15239354:22138,15239555:22139,15239556:22140,15239557:22141,15239558:22142,15239563:22305,15239566:22306,15239567:22307,15239569:22308,15239574:22309,15239580:22310,15239584:22311,15239587:22312,15239591:22313,15239597:22314,15239604:22315,15239611:22316,15239613:22317,15239615:22318,15239808:22319,15239809:22320,15239811:22321,15239812:22322,15239815:22323,15239817:22324,15239818:22325,15239822:22326,15239825:22327,15239828:22328,15239830:22329,15239832:22330,15239834:22331,15239835:22332,15239840:22333,15239841:22334,15239843:22335,15239844:22336,15239847:22337,15239848:22338,15239849:22339,15239850:22340,15239854:22341,15239856:22342,15239858:22343,15239860:22344,15239863:22345,15239866:22346,15239868:22347,15239870:22348,15239871:22349,15240070:22350,15240080:22351,15240085:22352,15240090:22353,15240096:22354,15240098:22355,15240100:22356,15240104:22357,15240106:22358,15240109:22359,15240111:22360,15240118:22361,15240119:22362,15240125:22363,15240126:22364,15240320:22365,15240321:22366,15240327:22367,15240328:22368,15240330:22369,15240331:22370,15240596:22371,15240347:22372,15240349:22373,15240350:22374,15240351:22375,15240353:22376,15240354:22377,15240364:22378,15240365:22379,15240366:22380,15240368:22381,15240371:22382,15240375:22383,15240378:22384,15240380:22385,15240381:22386,15240578:22387,15240579:22388,15240580:22389,15240583:22390,15240589:22391,15240590:22392,15240593:22393,15240597:22394,15240598:22395,15240599:22396,15240624:22397,15240632:22398,15240637:22561,15240639:22562,15240832:22563,15240834:22564,15240836:22565,15240838:22566,15240845:22567,15240850:22568,15240852:22569,15240853:22570,15240856:22571,15240857:22572,15240859:22573,15240860:22574,15240861:22575,15240870:22576,15240871:22577,15240873:22578,15240876:22579,15240894:22580,15240895:22581,15241088:22582,15241095:22583,15241097:22584,15241103:22585,15241104:22586,15241105:22587,15241108:22588,15241117:22589,15240595:22590,15241128:22591,15241130:22592,15241142:22593,15241144:22594,
15241145:22595,15241148:22596,15241345:22597,15241350:22598,15241354:22599,15241359:22600,15241361:22601,15241365:22602,15241369:22603,15240877:22604,15241391:22605,15241401:22606,15241605:22607,15241607:22608,15241608:22609,15241610:22610,15241613:22611,15241615:22612,15241617:22613,15241618:22614,15241622:22615,15241624:22616,15241625:22617,15241626:22618,15241628:22619,15241632:22620,15241636:22621,15241637:22622,15241639:22623,15241642:22624,15241648:22625,15241651:22626,15241652:22627,15241654:22628,15241656:22629,15241660:22630,15241661:22631,15241857:22632,15241861:22633,15241874:22634,15241875:22635,15241877:22636,15241886:22637,15241894:22638,15241896:22639,15241897:22640,15241898:22641,15241903:22642,15241905:22643,15241908:22644,15241914:22645,15241917:22646,15241918:22647,15242112:22648,15242114:22649,15242119:22650,15242120:22651,15242124:22652,15242127:22653,15242131:22654,15242140:22817,15242151:22818,15242154:22819,15242159:22820,15242160:22821,15242161:22822,15242162:22823,15242167:22824,15242418:22825,15242170:22826,15242171:22827,15242173:22828,15242370:22829,15242371:22830,15242375:22831,15242380:22832,15242382:22833,15242384:22834,15242396:22835,15242398:22836,15242402:22837,15242403:22838,15242404:22839,15242405:22840,15242407:22841,15242410:22842,15242411:22843,15242415:22844,15242419:22845,15242420:22846,15242422:22847,15242431:22848,15242630:22849,15242639:22850,15242640:22851,15242641:22852,15242642:22853,15242643:22854,15242646:22855,15242649:22856,15242652:22857,15242653:22858,15242654:22859,15242655:22860,15242656:22861,15242657:22862,15242658:22863,15242660:22864,15242667:22865,15242671:22866,15242681:22867,15242682:22868,15242683:22869,15242685:22870,15242687:22871,15242881:22872,15242885:22873,15242886:22874,15242889:22875,15242891:22876,15242892:22877,15242895:22878,15242899:22879,15242904:22880,15242909:22881,15242911:22882,15242912:22883,15242914:22884,15242917:22885,15242919:22886,15242932:22887,15242934:22888,15242935:22889,15242936:22890,15242940:22891,15242941:22892,15242942:22893,15242943:22894,15243138:22895,15243143:22896,15243146:22897,15243147:22898,15243150:22899,15242925:22900,15243160:22901,15243162:22902,15243167:22903,15243168:22904,15243174:22905,15243176:22906,15243181:22907,15243187:22908,15243190:22909,15243196:22910,15243199:23073,15243392:23074,15243396:23075,15243397:23076,15243405:23077,15243406:23078,15243408:23079,15243409:23080,15243410:23081,15243416:23082,15243417:23083,15243419:23084,15243422:23085,15243425:23086,15243431:23087,15243433:23088,15243446:23089,15243448:23090,15243450:23091,15243452:23092,15243453:23093,15243648:23094,15243650:23095,15243654:23096,15243666:23097,15243667:23098,15243670:23099,15243671:23100,15243672:23101,15243673:23102,15243677:23103,15243680:23104,15243681:23105,15243682:23106,15243683:23107,15243684:23108,15243689:23109,15243692:23110,15243695:23111,15243701:23112,15243702:23113,15243703:23114,15243706:23115,15243917:23116,15243921:23117,15243926:23118,15243928:23119,15243930:23120,15243932:23121,15243937:23122,15243942:23123,15243943:23124,15243944:23125,15243949:23126,15243953:23127,15243955:23128,15243956:23129,15243957:23130,15243959:23131,15243960:23132,15243961:23133,15243967:23134,15244160:23135,15244161:23136,15244163:23137,15244165:23138,15244177:23139,15244178:23140,15244181:23141,15244183:23142,15244186:23143,15244188:23144,15244192:23145,15244195:23146,15244197:23147,15244199:23148,15243912:23149,15244218:23150,15244220:23151,15244221:23152,15244420:23153,15244421:23154,15244423:23155,15244427:23156,15244430:23157,15244431:23158,15244432:23159,15244435:23160,15244436:23161,15244441:23162,15244446:23163,15244447:23164,15244449:23165,15244451:23166,15244456:23329,15244462:23330,15244463:23331,15244465:23332,15244466:23333,15244473:23334,15244474:23335,15244476:23336,15244477:23337,15244478:23338,15244672:23339,15244675:23340,15244677:23341,15244685:23342,15244696:23343,15244701:23344,15244705:23345,15244708:23346,15244709:23347,15244719:23348,15244721:23349,15244722:23350,15244731:23351,15244931:23352,15244932:23353,15244933:23354,15244934:23355,15244935:23356,15244936:23357,15244937:23358,15244939:23359,15244940:23360,15244944:23361,15244947:23362,15244949:23363,15244951:23364,15244952:23365,15244953:23366,15244958:23367,15244960:23368,15244963:23369,15244967:23370,15244972:23371,15244973:23372,15244974:23373,15244977:23374,15244981:23375,15244990:23376,15244991:23377,15245185:23378,15245192:23379,15245193:23380,15245194:23381,15245198:23382,15245205:23383,15245206:23384,15245209:23385,15245210:23386,15245212:23387,15245215:23388,15245218:23389,15245219:23390,15245220:23391,15245226:23392,15245227:23393,15245229:23394,15245233:23395,15245235:23396,15245240:23397,15245242:23398,15245247:23399,15245441:23400,15245443:23401,15245446:23402,15245449:23403,15245450:23404,15245451:23405,15245456:23406,15245465:23407,15245458:23408,15245459:23409,15245460:23410,15245464:23411,15245466:23412,15245467:23413,15245468:23414,15245470:23415,15245471:23416,15245480:23417,15245485:23418,15245486:23419,15245488:23420,15245490:23421,15245493:23422,15245498:23585,15245500:23586,15245697:23587,15245699:23588,15245701:23589,15245704:23590,15245705:23591,15245706:23592,15245707:23593,15245710:23594,15245713:23595,15245717:23596,15245718:23597,15245720:23598,15245722:23599,15245724:23600,15245727:23601,15245728:23602,15245732:23603,15245737:23604,15245745:23605,15245753:23606,15245755:23607,15245952:23608,15245976:23609,15245978:23610,15245979:23611,15245980:23612,15245983:23613,15245984:23614,15245992:23615,15245994:23616,15246010:23617,15246013:23618,15246014:23619,15246208:23620,15246218:23621,15246219:23622,15246220:23623,15246221:23624,15246222:23625,15246225:23626,15246226:23627,15246227:23628,15246235:23629,15246238:23630,15246247:23631,15246255:23632,15246256:23633,15246257:23634,15246261:23635,15246263:23636,15246465:23637,15246470:23638,15246477:23639,15246478:23640,15246479:23641,15246485:23642,15246486:23643,15246488:23644,15246489:23645,15246490:23646,15246492:23647,15246496:23648,15246502:23649,15246503:23650,15246504:23651,15246512:23652,15246513:23653,15246514:23654,15246517:23655,15246521:23656,15246522:23657,15246526:23658,15246720:23659,15246722:23660,15246725:23661,15246726:23662,15246729:23663,15246735:23664,15246738:23665,15246743:23666,15246746:23667,15246747:23668,15246748:23669,15246753:23670,15246754:23671,15246755:23672,15246763:23673,15246766:23674,15246768:23675,15246771:23676,15246773:23677,15246778:23678,15246779:23841,15246780:23842,15246781:23843,15246985:23844,15246989:23845,15246992:23846,15246996:23847,15246997:23848,15247003:23849,15247004:23850,15247007:23851,15247008:23852,15247013:23853,15247024:23854,15247028:23855,15247029:23856,15247030:23857,15247031:23858,15247036:23859,15247252:23860,15247253:23861,15247254:23862,15247255:23863,15247256:23864,15247269:23865,15247273:23866,15247275:23867,15247277:23868,15247281:23869,15247283:23870,15247286:23871,15247289:23872,15247293:23873,15247295:23874,15247492:23875,15247493:23876,15247495:23877,15247503:23878,15247505:23879,15247506:23880,15247508:23881,15247509:23882,15247518:23883,15247520:23884,15247522:23885,15247524:23886,15247526:23887,15247531:23888,15247532:23889,15247535:23890,15247541:23891,15247543:23892,15247549:23893,15247550:23894,15247744:23895,15247747:23896,15247749:23897,15247751:23898,15247753:23899,15247757:23900,15247758:23901,15247763:23902,15247766:23903,15247767:23904,15247768:23905,15247772:23906,15247773:23907,15247777:23908,15247781:23909,15247783:23910,15247797:23911,15247798:23912,15247799:23913,15247801:23914,15247802:23915,15247803:23916,15247806:23917,15247807:23918,15248e3:23919,15248003:23920,15248006:23921,15248011:23922,15248015:23923,15248016:23924,15248018:23925,15248022:23926,15248023:23927,15248025:23928,15248031:23929,15248039:23930,15248041:23931,15248046:23932,15248047:23933,15248051:23934,15248054:24097,15248055:24098,15248059:24099,15248062:24100,
15248259:24101,15248262:24102,15248264:24103,15248265:24104,15248266:24105,15248273:24106,15248275:24107,15248276:24108,15248277:24109,15248279:24110,15248285:24111,15248287:24112,15248300:24113,15248304:24114,15248308:24115,15248309:24116,15248310:24117,15248316:24118,15248319:24119,15248517:24120,15248518:24121,15248523:24122,15248529:24123,15248540:24124,15248542:24125,15248543:24126,15248522:24127,15248557:24128,15248560:24129,15248567:24130,15248572:24131,15248770:24132,15248771:24133,15248772:24134,15248773:24135,15248774:24136,15248776:24137,15248786:24138,15248787:24139,15248788:24140,15248793:24141,15248781:24142,15248798:24143,15248803:24144,15248813:24145,15248822:24146,15248824:24147,15248825:24148,15248828:24149,15248830:24150,15249025:24151,15249028:24152,15249029:24153,15249035:24154,15249037:24155,15249039:24156,15249044:24157,15249045:24158,15249052:24159,15249054:24160,15249055:24161,15249592:24162,15249593:24163,15249597:24164,15249598:24165,15249797:24166,15249799:24167,15249801:24168,15249803:24169,15249807:24170,15249809:24171,15249811:24172,15249812:24173,15249815:24174,15249816:24175,15249819:24176,15249821:24177,15249817:24178,15249827:24179,15249828:24180,15249830:24181,15249832:24182,15249833:24183,15249837:24184,15249843:24185,15249845:24186,15249846:24187,15249851:24188,15249854:24189,15250054:24190,15250055:24353,15250059:24354,15250064:24355,15250066:24356,15250067:24357,15250073:24358,15250075:24359,15250076:24360,15250084:24361,15250105:24362,15250106:24363,15250309:24364,15250310:24365,15250313:24366,15250315:24367,15250319:24368,15250326:24369,15250325:24370,15250329:24371,15250333:24372,15250337:24373,15250344:24374,15250348:24375,15250351:24376,15250352:24377,15250354:24378,15250357:24379,15250359:24380,15250360:24381,15250366:24382,15250367:24383,15250561:24384,15250563:24385,15250569:24386,15250578:24387,15250583:24388,15250587:24389,15250853:24390,15250857:24391,15250860:24392,15250862:24393,15250879:24394,15251074:24395,15251076:24396,15251080:24397,15251085:24398,15251088:24399,15251089:24400,15251093:24401,15251102:24402,15251103:24403,15251104:24404,15251110:24405,15251115:24406,15251116:24407,15251119:24408,15251122:24409,15251125:24410,15251127:24411,15251129:24412,15251131:24413,15251328:24414,15251333:24415,15251334:24416,15251335:24417,15251336:24418,15251338:24419,15251342:24420,15251345:24421,15251348:24422,15251349:24423,15251351:24424,15251353:24425,15251364:24426,15251365:24427,15251367:24428,15251372:24429,15251376:24430,15251132:24431,15251377:24432,15251378:24433,15251380:24434,15251389:24435,15251585:24436,15251588:24437,15251589:24438,15251590:24439,15251595:24440,15251601:24441,15251604:24442,15251606:24443,15251616:24444,15251617:24445,15251618:24446,15251619:24609,15251622:24610,15251623:24611,15251633:24612,15251635:24613,15251638:24614,15251639:24615,15251640:24616,15251641:24617,15251645:24618,15251840:24619,15251841:24620,15251851:24621,15251853:24622,15251854:24623,15251855:24624,15251860:24625,15251867:24626,15251868:24627,15251869:24628,15251870:24629,15251873:24630,15251874:24631,15251881:24632,15251884:24633,15251885:24634,15251887:24635,15251888:24636,15251889:24637,15251897:24638,15251898:24639,15251899:24640,15252098:24641,15252099:24642,15252105:24643,15252112:24644,15252114:24645,15252117:24646,15252122:24647,15252123:24648,15252125:24649,15252126:24650,15252130:24651,15252135:24652,15252137:24653,15252141:24654,15252142:24655,15252147:24656,15252149:24657,15252154:24658,15252155:24659,15252352:24660,15252353:24661,15252355:24662,15252356:24663,15252359:24664,15252367:24665,15252369:24666,15252372:24667,15252380:24668,15252392:24669,15252398:24670,15252400:24671,15252401:24672,15252407:24673,15252409:24674,15252410:24675,15252397:24676,15252608:24677,15252610:24678,15252615:24679,15252616:24680,15252623:24681,15252624:24682,15252630:24683,15252631:24684,15252632:24685,15252638:24686,15252640:24687,15252641:24688,15252643:24689,15252645:24690,15252647:24691,15252648:24692,15252652:24693,15252653:24694,15252654:24695,15252660:24696,15252661:24697,15252662:24698,15252663:24699,15252666:24700,15252864:24701,15252865:24702,15252867:24865,15252871:24866,15252879:24867,15252881:24868,15252882:24869,15252883:24870,15252884:24871,15252885:24872,15252888:24873,15252893:24874,15252894:24875,15252901:24876,15253149:24877,15253152:24878,15253153:24879,15253156:24880,15253157:24881,15253158:24882,15253173:24883,15253174:24884,15253176:24885,15253182:24886,15253376:24887,15253377:24888,15253382:24889,15253386:24890,15253387:24891,15253389:24892,15253392:24893,15253394:24894,15253395:24895,15253397:24896,15253408:24897,15253411:24898,15253412:24899,15253416:24900,15253422:24901,15253425:24902,15253429:24903,15253430:24904,15253435:24905,15253438:24906,15302786:24907,15302788:24908,15302792:24909,15302796:24910,15302808:24911,15302811:24912,15302824:24913,15302825:24914,15302831:24915,15302826:24916,15302828:24917,15302829:24918,15302835:24919,15302836:24920,15302839:24921,15302847:24922,15303043:24923,15303044:24924,15303052:24925,15303067:24926,15303069:24927,15303074:24928,15303078:24929,15303079:24930,15303084:24931,15303088:24932,15303092:24933,15303097:24934,15303301:24935,15303304:24936,15303307:24937,15303308:24938,15303310:24939,15303312:24940,15303317:24941,15303319:24942,15303320:24943,15303321:24944,15303323:24945,15303328:24946,15303329:24947,15303330:24948,15303333:24949,15303344:24950,15303346:24951,15303347:24952,15303348:24953,15303350:24954,15303357:24955,15303564:24956,15303358:24957,15303555:24958,15303556:25121,15303557:25122,15303559:25123,15303560:25124,15303573:25125,15303575:25126,15303576:25127,15303577:25128,15303580:25129,15303581:25130,15303583:25131,15303589:25132,15303570:25133,15303606:25134,15303595:25135,15303599:25136,15303600:25137,15303604:25138,15303614:25139,15303615:25140,15303808:25141,15303812:25142,15303813:25143,15303814:25144,15303816:25145,15303821:25146,15303824:25147,15303828:25148,15303830:25149,15303831:25150,15303832:25151,15303834:25152,15303836:25153,15303838:25154,15303840:25155,15303845:25156,15303842:25157,15303843:25158,15303847:25159,15303849:25160,15303854:25161,15303855:25162,15303857:25163,15303860:25164,15303862:25165,15303863:25166,15303865:25167,15303866:25168,15303868:25169,15303869:25170,15304067:25171,15304071:25172,15304072:25173,15304079:25174,15304083:25175,15304087:25176,15304089:25177,15304090:25178,15304091:25179,15304097:25180,15304100:25181,15304103:25182,15304109:25183,15304116:25184,15304121:25185,15304122:25186,15304123:25187,15304321:25188,15304323:25189,15304325:25190,15304326:25191,15304330:25192,15304334:25193,15304337:25194,15304339:25195,15304340:25196,15304341:25197,15304344:25198,15304350:25199,15304353:25200,15304358:25201,15304360:25202,15304364:25203,15304365:25204,15304366:25205,15304368:25206,15304369:25207,15304370:25208,15304371:25209,15304374:25210,15304379:25211,15304380:25212,15304381:25213,15304383:25214,15304578:25377,15304579:25378,15304581:25379,15304595:25380,15304596:25381,15304599:25382,15304601:25383,15304602:25384,15304606:25385,15304612:25386,15304613:25387,15304617:25388,15304618:25389,15304620:25390,15304621:25391,15304622:25392,15304623:25393,15304624:25394,15304625:25395,15304631:25396,15304633:25397,15304635:25398,15304637:25399,15304832:25400,15304833:25401,15304836:25402,15304837:25403,15304838:25404,15304839:25405,15304841:25406,15304842:25407,15304844:25408,15304848:25409,15304850:25410,15304851:25411,15304854:25412,15304856:25413,15304860:25414,15304861:25415,15304867:25416,15304868:25417,15304869:25418,15304870:25419,15304872:25420,15304878:25421,15304879:25422,15304880:25423,15304883:25424,15304885:25425,15304886:25426,15304888:25427,15304889:25428,15304890:25429,15304892:25430,15304894:25431,15305088:25432,15305090:25433,15305091:25434,15305094:25435,15305095:25436,15305098:25437,15305101:25438,15305102:25439,15305103:25440,15305105:25441,15305112:25442,15305113:25443,15305116:25444,
15305117:25445,15305120:25446,15305121:25447,15305125:25448,15305127:25449,15305128:25450,15305129:25451,15305134:25452,15305135:25453,15305136:25454,15305141:25455,15305142:25456,15305143:25457,15305144:25458,15305145:25459,15305147:25460,15305148:25461,15305149:25462,15305151:25463,15305352:25464,15305353:25465,15305354:25466,15305357:25467,15305358:25468,15305362:25469,15305367:25470,15305369:25633,15305375:25634,15305376:25635,15305380:25636,15305381:25637,15305383:25638,15305384:25639,15305387:25640,15305391:25641,15305394:25642,15305398:25643,15305400:25644,15305402:25645,15305403:25646,15305404:25647,15305405:25648,15305407:25649,15305600:25650,15305601:25651,15305602:25652,15305603:25653,15305605:25654,15305606:25655,15305607:25656,15305608:25657,15305611:25658,15305612:25659,15305613:25660,15305614:25661,15305616:25662,15305619:25663,15305621:25664,15305623:25665,15305624:25666,15305625:25667,15305628:25668,15305629:25669,15305631:25670,15305632:25671,15305633:25672,15305635:25673,15305637:25674,15305639:25675,15305640:25676,15305644:25677,15305646:25678,15305648:25679,15305657:25680,15305659:25681,15305663:25682,15305856:25683,15305858:25684,15305864:25685,15305869:25686,15305873:25687,15305876:25688,15305877:25689,15305884:25690,15305885:25691,15305886:25692,15305887:25693,15305889:25694,15305892:25695,15305893:25696,15305895:25697,15305897:25698,15305898:25699,15305907:25700,15305908:25701,15305910:25702,15305911:25703,15306119:25704,15306120:25705,15306121:25706,15306128:25707,15306129:25708,15306130:25709,15306133:25710,15306135:25711,15306136:25712,15306138:25713,15306142:25714,15306148:25715,15306149:25716,15306151:25717,15306153:25718,15306154:25719,15306157:25720,15306159:25721,15306160:25722,15306161:25723,15306163:25724,15306164:25725,15306166:25726,15306170:25889,15306173:25890,15306175:25891,15306368:25892,15306369:25893,15306370:25894,15306376:25895,15306378:25896,15306379:25897,15306381:25898,15306383:25899,15306386:25900,15306389:25901,15306392:25902,15306395:25903,15306398:25904,15306401:25905,15306403:25906,15306404:25907,15306406:25908,15306408:25909,15306411:25910,15306420:25911,15306421:25912,15306422:25913,15306426:25914,15306409:25915,15306625:25916,15306628:25917,15306629:25918,15306630:25919,15306631:25920,15306633:25921,15306634:25922,15306635:25923,15306636:25924,15306637:25925,15306643:25926,15306649:25927,15306652:25928,15306654:25929,15306655:25930,15306658:25931,15306662:25932,15306663:25933,15306681:25934,15306679:25935,15306680:25936,15306682:25937,15306683:25938,15306685:25939,15306881:25940,15306882:25941,15306884:25942,15306888:25943,15306889:25944,15306893:25945,15306894:25946,15306895:25947,15306901:25948,15306902:25949,15306903:25950,15306911:25951,15306926:25952,15306927:25953,15306929:25954,15306930:25955,15306931:25956,15306932:25957,15306939:25958,15306943:25959,15306941:25960,15307139:25961,15307141:25962,15307144:25963,15307146:25964,15307148:25965,15307157:25966,15307161:25967,15307164:25968,15307167:25969,15307169:25970,15307171:25971,15307176:25972,15307179:25973,15307181:25974,15307182:25975,15307183:25976,15307185:25977,15307186:25978,15307396:25979,15307395:25980,15308216:25981,15308217:25982,15308222:26145,15308420:26146,15308424:26147,15308428:26148,15308429:26149,15308430:26150,15308445:26151,15308446:26152,15308447:26153,15308449:26154,15308454:26155,15308457:26156,15308459:26157,15308460:26158,15308468:26159,15308470:26160,15308474:26161,15308477:26162,15308479:26163,15308678:26164,15308680:26165,15308681:26166,15308683:26167,15308688:26168,15308689:26169,15308690:26170,15308691:26171,15308697:26172,15308698:26173,15308701:26174,15308702:26175,15308703:26176,15308704:26177,15308708:26178,15308710:26179,15308957:26180,15308958:26181,15308962:26182,15308964:26183,15308965:26184,15308966:26185,15308972:26186,15308977:26187,15308979:26188,15308983:26189,15308984:26190,15308985:26191,15308986:26192,15308988:26193,15308989:26194,15309185:26195,15309202:26196,15309204:26197,15309206:26198,15309207:26199,15309208:26200,15309217:26201,15309230:26202,15309236:26203,15309243:26204,15309244:26205,15309246:26206,15309247:26207,15309441:26208,15309442:26209,15309443:26210,15309444:26211,15309449:26212,15309457:26213,15309462:26214,15309466:26215,15309469:26216,15309471:26217,15309476:26218,15309477:26219,15309478:26220,15309481:26221,15309486:26222,15309487:26223,15309491:26224,15309498:26225,15309706:26226,15309714:26227,15054514:26228,15309720:26229,15309722:26230,15309725:26231,15309726:26232,15309727:26233,15309737:26234,15309743:26235,15309745:26236,15309754:26237,15309954:26238,15309955:26401,15309957:26402,15309961:26403,15309978:26404,15309979:26405,15309981:26406,15309985:26407,15309986:26408,15309987:26409,15309992:26410,15310001:26411,15310003:26412,15310209:26413,15310211:26414,15310218:26415,15310222:26416,15310223:26417,15310229:26418,15310231:26419,15310232:26420,15310234:26421,15310235:26422,15310243:26423,15310247:26424,15310250:26425,15310254:26426,15310259:26427,15310262:26428,15310263:26429,15310264:26430,15310267:26431,15310269:26432,15310271:26433,15310464:26434,15310473:26435,15310485:26436,15310486:26437,15310487:26438,15310489:26439,15310490:26440,15310494:26441,15310495:26442,15310498:26443,15310508:26444,15310510:26445,15310513:26446,15310514:26447,15310517:26448,15310518:26449,15310520:26450,15310521:26451,15310522:26452,15310524:26453,15310526:26454,15310527:26455,15310721:26456,15310724:26457,15310725:26458,15310727:26459,15310729:26460,15310730:26461,15310732:26462,15310733:26463,15310734:26464,15310736:26465,15310737:26466,15310740:26467,15310743:26468,15310744:26469,15310745:26470,15310749:26471,15310750:26472,15310752:26473,15310747:26474,15310753:26475,15310756:26476,15310767:26477,15310769:26478,15310772:26479,15310775:26480,15310776:26481,15310778:26482,15310983:26483,15310986:26484,15311001:26485,15310989:26486,15310990:26487,15310996:26488,15310998:26489,15311004:26490,15311006:26491,15311008:26492,15311011:26493,15311014:26494,15311019:26657,15311022:26658,15311023:26659,15311024:26660,15311026:26661,15311027:26662,15311029:26663,15311013:26664,15311038:26665,15311236:26666,15311239:26667,15311242:26668,15311249:26669,15311250:26670,15311251:26671,15311254:26672,15311255:26673,15311257:26674,15311258:26675,15311266:26676,15311267:26677,15311269:26678,15311270:26679,15311274:26680,15311276:26681,15311531:26682,15311533:26683,15311534:26684,15311536:26685,15311540:26686,15311543:26687,15311544:26688,15311546:26689,15311547:26690,15311551:26691,15311746:26692,15311749:26693,15311752:26694,15311756:26695,15311777:26696,15311779:26697,15311781:26698,15311782:26699,15311783:26700,15311786:26701,15311795:26702,15311798:26703,15312002:26704,15312007:26705,15312008:26706,15312017:26707,15312021:26708,15312022:26709,15312023:26710,15312026:26711,15312027:26712,15312028:26713,15312031:26714,15312034:26715,15312038:26716,15312039:26717,15312043:26718,15312049:26719,15312050:26720,15312051:26721,15312052:26722,15312053:26723,15312057:26724,15312058:26725,15312059:26726,15312060:26727,15312256:26728,15312257:26729,15312262:26730,15312263:26731,15312264:26732,15312269:26733,15312270:26734,15312276:26735,15312280:26736,15312281:26737,15312283:26738,15312284:26739,15312286:26740,15312287:26741,15312288:26742,15312539:26743,15312541:26744,15312543:26745,15312550:26746,15312560:26747,15312561:26748,15312562:26749,15312565:26750,15312569:26913,15312570:26914,15312573:26915,15312575:26916,15312771:26917,15312777:26918,15312787:26919,15312788:26920,15312793:26921,15312794:26922,15312796:26923,15312798:26924,15312807:26925,15312810:26926,15312811:26927,15312812:26928,15312816:26929,15312820:26930,15312821:26931,15312825:26932,15312829:26933,15312830:26934,15313026:26935,15313027:26936,15313028:26937,15313035:26938,15313036:26939,15313040:26940,15313041:26941,15313046:26942,15313054:26943,15313056:26944,15313058:26945,15313059:26946,15313060:26947,15313063:26948,15313069:26949,15313070:26950,
15313075:26951,15313077:26952,15313078:26953,15313080:26954,15313287:26955,15313281:26956,15313284:26957,15313290:26958,15313291:26959,15313292:26960,15313294:26961,15313297:26962,15313300:26963,15313302:26964,15313309:26965,15313578:26966,15313580:26967,15313582:26968,15313583:26969,15313586:26970,15313588:26971,15313589:26972,15313590:26973,15313593:26974,15313595:26975,15313598:26976,15313599:26977,15313793:26978,15313795:26979,15313798:26980,15313800:26981,15313806:26982,15313808:26983,15313810:26984,15313813:26985,15313814:26986,15313815:26987,15313819:26988,15313820:26989,15313824:26990,15313828:26991,15313829:26992,15313831:26993,15313833:26994,15313836:26995,15313842:26996,15313843:26997,15313845:26998,15313849:26999,15313850:27e3,15313853:27001,15313855:27002,15314048:27003,15314049:27004,15314050:27005,15314051:27006,15314052:27169,15314053:27170,15314056:27171,15314057:27172,15314059:27173,15314060:27174,15314061:27175,15314062:27176,15314064:27177,15314066:27178,15314070:27179,15314073:27180,15314075:27181,15314076:27182,15314080:27183,15314086:27184,15314091:27185,15314093:27186,15314099:27187,15314100:27188,15314101:27189,15314103:27190,15314105:27191,15314106:27192,15314109:27193,15314312:27194,15314315:27195,15314316:27196,15314325:27197,15314326:27198,15314327:27199,15314331:27200,15314334:27201,15314337:27202,15314339:27203,15314341:27204,15314342:27205,15314344:27206,15314346:27207,15314347:27208,15314348:27209,15314349:27210,15314350:27211,15314355:27212,15314357:27213,15314359:27214,15314360:27215,15314361:27216,15314367:27217,15314560:27218,15314564:27219,15314565:27220,15314566:27221,15314567:27222,15314569:27223,15314570:27224,15314571:27225,15314573:27226,15314575:27227,15314576:27228,15314580:27229,15314586:27230,15314589:27231,15314590:27232,15314598:27233,15314599:27234,15314601:27235,15314604:27236,15314608:27237,15314609:27238,15314610:27239,15314615:27240,15314616:27241,15314619:27242,15314620:27243,15314622:27244,15314623:27245,15314817:27246,15314823:27247,15314824:27248,15314830:27249,15314832:27250,15314839:27251,15314840:27252,15314845:27253,15314847:27254,15314853:27255,15314855:27256,15314858:27257,15314859:27258,15314863:27259,15314867:27260,15314871:27261,15314872:27262,15314873:27425,15314874:27426,15314877:27427,15314879:27428,15315072:27429,15315074:27430,15315083:27431,15315087:27432,15315089:27433,15315094:27434,15315096:27435,15315097:27436,15315098:27437,15315100:27438,15315102:27439,15315106:27440,15315107:27441,15315110:27442,15315111:27443,15315112:27444,15315113:27445,15315114:27446,15315121:27447,15315125:27448,15315126:27449,15315127:27450,15315133:27451,15315329:27452,15315331:27453,15315332:27454,15315333:27455,15315337:27456,15315338:27457,15315342:27458,15315343:27459,15315344:27460,15315347:27461,15315348:27462,15315350:27463,15315352:27464,15315355:27465,15315357:27466,15315358:27467,15315359:27468,15315363:27469,15315369:27470,15315370:27471,15315356:27472,15315371:27473,15315368:27474,15315374:27475,15315376:27476,15315378:27477,15315381:27478,15315383:27479,15315387:27480,15315878:27481,15315890:27482,15315895:27483,15315897:27484,15316107:27485,15316098:27486,15316113:27487,15316119:27488,15316120:27489,15316124:27490,15316125:27491,15316126:27492,15316143:27493,15316144:27494,15316146:27495,15316147:27496,15316148:27497,15316154:27498,15316156:27499,15316357:27500,15316157:27501,15316354:27502,15316355:27503,15316359:27504,15316362:27505,15316371:27506,15316372:27507,15316383:27508,15316387:27509,15316386:27510,15316389:27511,15316393:27512,15316394:27513,15316395:27514,15316400:27515,15316406:27516,15316407:27517,15316411:27518,15316412:27681,15316414:27682,15316611:27683,15316612:27684,15316614:27685,15316618:27686,15316621:27687,15316622:27688,15316626:27689,15316627:27690,15316629:27691,15316630:27692,15316631:27693,15316632:27694,15316641:27695,15316650:27696,15316652:27697,15316654:27698,15316657:27699,15316661:27700,15316665:27701,15316668:27702,15316671:27703,15316867:27704,15316871:27705,15316873:27706,15316874:27707,15316884:27708,15316885:27709,15316886:27710,15316887:27711,15316890:27712,15316894:27713,15316895:27714,15316896:27715,15316901:27716,15316903:27717,15316905:27718,15316907:27719,15316910:27720,15316912:27721,15316915:27722,15316916:27723,15316926:27724,15317130:27725,15317122:27726,15317127:27727,15317134:27728,15317136:27729,15317137:27730,15317138:27731,15317141:27732,15317142:27733,15317145:27734,15317148:27735,15317149:27736,15317434:27737,15317435:27738,15317436:27739,15317632:27740,15317634:27741,15317635:27742,15317636:27743,15317637:27744,15317639:27745,15317646:27746,15317647:27747,15317654:27748,15317656:27749,15317659:27750,15317662:27751,15317668:27752,15317672:27753,15317676:27754,15317678:27755,15317679:27756,15317680:27757,15317683:27758,15317684:27759,15317685:27760,15317894:27761,15317896:27762,15317899:27763,15317909:27764,15317919:27765,15317924:27766,15317927:27767,15317932:27768,15317933:27769,15317934:27770,15317936:27771,15317937:27772,15317938:27773,15317941:27774,15317944:27937,15317951:27938,15318146:27939,15318147:27940,15318153:27941,15318159:27942,15318160:27943,15318161:27944,15318162:27945,15318164:27946,15318166:27947,15318167:27948,15318169:27949,15318170:27950,15318171:27951,15318175:27952,15318178:27953,15318182:27954,15318186:27955,15318187:27956,15318191:27957,15318193:27958,15318194:27959,15318196:27960,15318199:27961,15318201:27962,15318202:27963,15318204:27964,15318205:27965,15318207:27966,15318401:27967,15318403:27968,15318404:27969,15318405:27970,15318406:27971,15318407:27972,15318419:27973,15318421:27974,15318422:27975,15318423:27976,15318424:27977,15318426:27978,15318429:27979,15318430:27980,15318440:27981,15318441:27982,15318445:27983,15318446:27984,15318447:27985,15318448:27986,15318449:27987,15318451:27988,15318453:27989,15318458:27990,15318461:27991,15318671:27992,15318672:27993,15318673:27994,15318674:27995,15318676:27996,15318678:27997,15318679:27998,15318686:27999,15318689:28e3,15318690:28001,15318691:28002,15318693:28003,14909596:8513},Ya=null,Za=null,$a={12289:65380,12290:65377,12300:65378,12301:65379,12443:65438,12444:65439,12449:65383,12450:65393,12451:65384,12452:65394,12453:65385,12454:65395,12455:65386,12456:65396,12457:65387,12458:65397,12459:65398,12461:65399,12463:65400,12465:65401,12467:65402,12469:65403,12471:65404,12473:65405,12475:65406,12477:65407,12479:65408,12481:65409,12483:65391,12484:65410,12486:65411,12488:65412,12490:65413,12491:65414,12492:65415,12493:65416,12494:65417,12495:65418,12498:65419,12501:65420,12504:65421,12507:65422,12510:65423,12511:65424,12512:65425,12513:65426,12514:65427,12515:65388,12516:65428,12517:65389,12518:65429,12519:65390,12520:65430,12521:65431,12522:65432,12523:65433,12524:65434,12525:65435,12527:65436,12530:65382,12531:65437,12539:65381,12540:65392},_a={12532:65395,12535:65436,12538:65382},ab=[65438,65439],bb=[12290,12300,12301,12289,12539,12530,12449,12451,12453,12455,12457,12515,12517,12519,12483,12540,12450,12452,12454,12456,12458,12459,12461,12463,12465,12467,12469,12471,12473,12475,12477,12479,12481,12484,12486,12488,12490,12491,12492,12493,12494,12495,12498,12501,12504,12507,12510,12511,12512,12513,12514,12516,12518,12520,12521,12522,12523,12524,12525,12527,12531,12443,12444];return Qa});
//# sourceMappingURL=encoding.maplib/js/extras/editors.default.min.js000064400000131667147361034410013471 0ustar00!function(e,t){if("function"==typeof define&&define.amd)define(["elfinder"],e);else if(t){var i=t.prototype._options.commandsOptions.edit.editors;t.prototype._options.commandsOptions.edit.editors=i.concat(e(t))}}(function(e){"use strict";var t,i=window.location.search.match(/getfile=([a-z]+)/),n=e.prototype.hasRequire,o={bmp:"image/x-ms-bmp",dng:"image/x-adobe-dng",gif:"image/gif",jpeg:"image/jpeg",jpg:"image/jpeg",pdf:"application/pdf",png:"image/png",ppm:"image/x-portable-pixmap",psd:"image/vnd.adobe.photoshop",pxd:"image/x-pixlr-data",svg:"image/svg+xml",tiff:"image/tiff",webp:"image/webp",xcf:"image/x-xcf",sketch:"application/x-sketch",ico:"image/x-icon",dds:"image/vnd-ms.dds",emf:"application/x-msmetafile"},a=function(e,i,n){t||(t=i.arrayFlip(o));var a=t[e]||i.mimeTypes[e];return n?"jpg"===a&&(a="jpeg"):"jpeg"===a&&(a="jpg"),a},r=function(e,t){var i=$.Deferred();try{var n=document.createElement("canvas"),o=n.getContext("2d"),a=new Image,r=function(){var e,o,a=n.toDataURL(t);e=(o=a.match(/^data:([a-z0-9]+\/[a-z0-9.+-]+)/i))?o[1]:"",e.toLowerCase()===t.toLowerCase()?i.resolve(n.toDataURL(t),n):i.reject()};return a.src=e,$(a).on("load",function(){try{n.width=a.width,n.height=a.height,o.drawImage(a,0,0),r()}catch(e){i.reject()}}).on("error",function(){i.reject()}),i}catch(s){return i.reject()}},s=function(e,t,i,n){var o,r=$(this).children("img:first").data("ext",a(t.mime,n)),s=$('<div class="elfinder-edit-spinner elfinder-edit-image"></div>').html('<span class="elfinder-spinner-text">'+n.i18n("ntfloadimg")+'</span><span class="elfinder-spinner"></span>').hide().appendTo(this),c=function(){r.attr("id",e+"-img").attr("src",o||i).css({height:"","max-width":"100%","max-height":"100%",cursor:"pointer"}).data("loading",function(e){var t=r.closest(".elfinder-dialog").find("button,.elfinder-titlebar-button");return t.prop("disabled",!e)[e?"removeClass":"addClass"]("ui-state-disabled"),r.css("opacity",e?"":"0.3"),s[e?"hide":"show"](),r})};i.match(/^data:/)?c():n.openUrl(t.hash,!1,function(e){o=e,r.attr("_src",i),c()})},c=function(e,t){var i,n,o,a=e.attr("style");try{e.attr("style",""),i=e.get(0),n=document.createElement("canvas"),n.width=i.width,n.height=i.height,e.attr("style",a),n.getContext("2d").drawImage(i,0,0),o=n.toDataURL(t)}catch(r){o=e.attr("src")}return o},d=function(e){var t,i=$(e),n=$.Deferred().always(function(){i.off("load",r)}),o="about:blank",a=function(){t=setTimeout(function(){var e;try{e=base.contentWindow.location.href}catch(t){e=null}e===o?n.resolve():--s>0?a():n.reject()},500)},r=function(){t&&clearTimeout(t),n.resolve()},s=20;return i.one("load",r),e.src=o,a(),n};return i&&(i=i[1],"ckeditor"===i&&(e.prototype._options.getFileCallback=function(e,t){window.opener.CKEDITOR.tools.callFunction(function(){var e=new RegExp("(?:[?&]|&amp;)CKEditorFuncNum=([^&]+)","i"),t=window.location.search.match(e);return t&&t.length>1?t[1]:""}(),t.convAbsUrl(e.url)),t.destroy(),window.close()})),[{info:{id:"tuiimgedit",name:"TUI Image Editor",iconImg:"img/editor-icons.png 0 -48",dataScheme:!0,schemeContent:!0,openMaximized:!0,canMakeEmpty:!1,integrate:{title:"TOAST UI Image Editor",link:"http://ui.toast.com/tui-image-editor/"}},mimes:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp"],html:'<div class="elfinder-edit-imageeditor"><canvas></canvas></div>',setup:function(e,t){t.UA.ltIE8||t.UA.Mobile?this.disabled=!0:(this.opts=Object.assign({version:"v3.14.3"},e.extraOptions.tuiImgEditOpts||{},{iconsPath:t.baseUrl+"img/tui-",theme:{}}),t.isSameOrigin(this.opts.iconsPath)||(this.disabled=!0,t.debug("warning","Setting `commandOptions.edit.extraOptions.tuiImgEditOpts.iconsPath` MUST follow the same origin policy.")))},init:function(e,t,i,n){this.data("url",i)},load:function(e){var t,i=this,n=this.fm,o=$.Deferred(),a=n.options.cdns,r=i.confObj.opts.version,s=function(t){var a,r,s,c,d=$(e),l=d.parent(),p=i.confObj.opts,m=p.iconsPath,u=$('<div class="tui-image-editor-container">').appendTo(l),f=[$('<div class="tui-image-editor-submenu"></div>').appendTo(u),$('<div class="tui-image-editor-controls"></div>').appendTo(u)],g=new t(e,{includeUI:{loadImage:{path:d.data("url"),name:i.file.name},theme:Object.assign(p.theme,{"menu.normalIcon.path":m+"icon-d.svg","menu.normalIcon.name":"icon-d","menu.activeIcon.path":m+"icon-b.svg","menu.activeIcon.name":"icon-b","menu.disabledIcon.path":m+"icon-a.svg","menu.disabledIcon.name":"icon-a","menu.hoverIcon.path":m+"icon-c.svg","menu.hoverIcon.name":"icon-c","submenu.normalIcon.path":m+"icon-d.svg","submenu.normalIcon.name":"icon-d","submenu.activeIcon.path":m+"icon-c.svg","submenu.activeIcon.name":"icon-c"}),initMenu:"filter",menuBarPosition:"bottom"},cssMaxWidth:Math.max(300,l.width()),cssMaxHeight:Math.max(200,l.height()-(f[0].height()+f[1].height()+3)),usageStatistics:!1}),h=d.find("canvas:first").get(0),v=function(e){if("undefined"!=typeof e){var t,i,n=$(h),o=parseInt(n.attr("width")),a=parseInt(n.attr("height")),r=o/a;0===e?(t=o,i=a):(t=parseInt(n.css("max-width"))+Number(e),i=t/r,t>o&&i>a&&(t=o,i=a)),y.text(Math.round(t/o*100)+"%"),g.resizeCanvasDimension({width:t,height:i}),c&&setTimeout(function(){c&&v(e)},50)}},b=$('<span class="ui-icon ui-icon-plusthick"></span>').data("val",10),x=$('<span class="ui-icon ui-icon-minusthick"></span>').data("val",-10),y=$("<button></button>").css("width","4em").text("%").attr("title","100%").data("val",0);u.remove(),d.removeData("url").data("mime",i.file.mime),"image/jpeg"===i.file.mime?(d.data("quality",n.storage("jpgQuality")||n.option("jpgQuality")),a=$('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>').attr("min","1").attr("max","100").attr("title","1 - 100").on("change",function(){var e=a.val();d.data("quality",e),r&&cancelAnimationFrame(r),r=requestAnimationFrame(function(){h.toBlob(function(e){e&&a.next("span").text(" ("+n.formatSize(e.size)+")")},"image/jpeg",Math.max(Math.min(e,100),1)/100)})}).val(d.data("quality")),$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>').append($("<span>").html(n.i18n("quality")+" : "),a,$("<span></span>")).prependTo(d.parent().next())):"image/svg+xml"===i.file.mime&&d.closest(".ui-dialog").trigger("changeType",{extention:"png",mime:"image/png",keepEditor:!0}),$('<div class="ui-dialog-buttonset elfinder-edit-extras"></div>').append(x,y,b).attr("title",n.i18n("scale")).on("click","span,button",function(){v($(this).data("val"))}).on("mousedown mouseup mouseleave","span",function(e){c=!1,s&&clearTimeout(s),"mousedown"===e.type&&(s=setTimeout(function(){c=!0,v($(e.target).data("val"))},500))}).prependTo(d.parent().next()),setTimeout(function(){o.resolve(g),a&&(a.trigger("change"),g.on("redoStackChanged undoStackChanged",function(){a.trigger("change")})),v(null)},100),d.find(".tui-colorpicker-palette-container").on("click",".tui-colorpicker-palette-preview",function(){$(this).closest(".color-picker-control").height("auto").find(".tui-colorpicker-slider-container").toggle()}),d.on("click",function(){d.find(".tui-colorpicker-slider-container").hide()})};return i.confObj.editor?s(i.confObj.editor):(t=$.Deferred(),n.loadCss([a.tui+"/tui-color-picker/latest/tui-color-picker.css",a.tui+"/tui-image-editor/"+r+"/tui-image-editor.css"]),n.hasRequire?(require.config({paths:{"fabric/dist/fabric.require":a.fabric+"/fabric.require.min",fabric:a.fabric+"/fabric.min","tui-code-snippet":a.tui+"/tui.code-snippet/latest/tui-code-snippet.min","tui-color-picker":a.tui+"/tui-color-picker/latest/tui-color-picker.min","tui-image-editor":a.tui+"/tui-image-editor/"+r+"/tui-image-editor.min"}}),require(["tui-image-editor"],function(e){t.resolve(e)})):n.loadScript([a.fabric+"/fabric.min.js",a.tui+"/tui.code-snippet/latest/tui-code-snippet.min.js"],function(){n.loadScript([a.tui+"/tui-color-picker/latest/tui-color-picker.min.js"],function(){n.loadScript([a.tui+"/tui-image-editor/"+r+"/tui-image-editor.min.js"],function(){t.resolve(window.tui.ImageEditor)},{loadType:"tag"})},{loadType:"tag"})},{loadType:"tag"}),t.done(function(e){i.confObj.editor=e,s(e)})),o},getContent:function(e){var t=this.editor,i=t.fm,n=$(e),o=n.data("quality");if(t.instance)return"image/jpeg"===n.data("mime")&&(o=o||i.storage("jpgQuality")||i.option("jpgQuality"),o=Math.max(.1,Math.min(1,o/100))),t.instance.toDataURL({format:a(n.data("mime"),i,!0),quality:o})},save:function(e){var t,i=$(e),n=i.data("quality"),o=i.data("hash");this.instance.deactivateAll(),"undefined"!=typeof n&&this.fm.storage("jpgQuality",n),o&&(t=this.fm.file(o),i.data("mime",t.mime))}},{info:{id:"photopea",name:"Photopea",iconImg:"img/editor-icons.png 0 -160",single:!0,noContent:!0,arrayBufferContent:!0,openMaximized:!0,canMakeEmpty:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp","image/tiff","image/webp","image/vnd.adobe.photoshop","application/pdf","image/x-portable-pixmap","image/x-sketch","image/x-icon","image/vnd-ms.dds"],integrate:{title:"Photopea",link:"https://www.photopea.com/learn/"}},mimes:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp","image/tiff","image/x-adobe-dng","image/webp","image/x-xcf","image/vnd.adobe.photoshop","application/pdf","image/x-portable-pixmap","image/x-sketch","image/x-icon","image/vnd-ms.dds","application/x-msmetafile"],html:'<iframe style="width:100%;height:100%;border:none;"></iframe>',setup:function(e,t){(t.UA.IE||t.UA.Mobile)&&(this.disabled=!0)},init:function(e,t,i,n){var r,s,c,d="https://www.photopea.com",l=$(this).hide().on("load",function(){l.show()}).on("error",function(){u.remove(),l.show()}),p=this.editor,m=p.confObj,u=$('<div class="elfinder-edit-spinner elfinder-edit-photopea"></div>').html('<span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span>').appendTo(l.parent()),f=n.arrayFlip(m.info.canMakeEmpty),g=function(e){var t=a(e,n),i=o[t];return m.mimesFlip[i]?"jpeg"===t&&(t="jpg"):t="",t&&f[i]||(t="psd",i=o[t],l.closest(".ui-dialog").trigger("changeType",{extention:t,mime:i,keepEditor:!0})),t},h=t.mime;m.mimesFlip||(m.mimesFlip=n.arrayFlip(m.mimes,!0)),m.liveMsg||(m.liveMsg=function(e,t,i){var o,a=e.get(0).contentWindow,r=0,s=null,c=$.Deferred().done(function(){t.remove(),r=1,a.postMessage(s,d)});this.load=function(){return n.getContents(i.hash,"arraybuffer").done(function(e){s=e})},this.receive=function(t){var i=t.originalEvent;i.origin===d&&i.source===a&&("done"===i.data?0===r?c.resolve():1===r?(r=2,e.trigger("contentsloaded")):o&&"pending"===o.state()&&o.reject("errDataEmpty"):"Save"===i.data?p.doSave():o&&"pending"===o.state()&&("object"==typeof i.data?o.resolve("data:"+h+";base64,"+n.arrayBufferToBase64(i.data)):o.reject("errDataEmpty")))},this.getContent=function(){var t,i;if(r>1)return o&&"pending"===o.state()&&o.reject(),o=null,o=$.Deferred(),2===r?(r=3,o.resolve("data:"+h+";base64,"+n.arrayBufferToBase64(s)),s=null,o):(e.data("mime")&&(h=e.data("mime"),t=g(h)),(i=e.data("quality"))&&(t+=":"+i/100),a.postMessage('app.activeDocument.saveToOE("'+t+'")',d),o)}}),l.parent().css("padding",0),s=g(t.mime),r=p.liveMsg=new m.liveMsg(l,u,t),$(window).on("message."+n.namespace,r.receive),r.load().done(function(){var e=JSON.stringify({files:[],environment:{lang:n.lang.replace(/_/g,"-"),customIO:{save:'app.echoToOE("Save");'}}});l.attr("src",d+"/#"+encodeURI(e))}).fail(function(e){e&&n.error(e),p.initFail=!0}),"image/jpeg"!==t.mime&&"image/webp"!==t.mime||(l.data("quality",n.storage("jpgQuality")||n.option("jpgQuality")),c=$('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>').attr("min","1").attr("max","100").attr("title","1 - 100").on("change",function(){var e=c.val();l.data("quality",e)}).val(l.data("quality")),$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>').append($("<span>").html(n.i18n("quality")+" : "),c,$("<span></span>")).prependTo(l.parent().next()))},load:function(e){var t=$.Deferred(),i=this,n=(this.fm,$(e));return i.initFail?t.reject():n.on("contentsloaded",function(){t.resolve(i.liveMsg)}),t},getContent:function(){return this.editor.liveMsg?this.editor.liveMsg.getContent():void 0},save:function(e,t){var i,n=$(e),o=n.data("quality"),a=n.data("hash");"undefined"!=typeof o&&this.fm.storage("jpgQuality",o),a?(i=this.fm.file(a),n.data("mime",i.mime)):n.removeData("mime")},close:function(e,t){$(e).attr("src",""),t&&$(window).off("message."+this.fm.namespace,t.receive)}},{info:{id:"pixo",name:"Pixo Editor",iconImg:"img/editor-icons.png 0 -208",dataScheme:!0,schemeContent:!0,single:!0,canMakeEmpty:!1,integrate:{title:"Pixo Editor",link:"https://pixoeditor.com/privacy-policy/"}},mimes:["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp"],html:'<div class="elfinder-edit-imageeditor"><img/></div>',setup:function(e,t){!t.UA.ltIE8&&e.extraOptions&&e.extraOptions.pixo&&e.extraOptions.pixo.apikey?this.editorOpts=e.extraOptions.pixo:this.disabled=!0},init:function(e,t,i,n){s.call(this,e,t,i,n)},getContent:function(){return $(this).children("img:first").attr("src")},load:function(e){var t,i,n,o,s,c=this,d=this.fm,l=$(e),p=l.children("img:first"),m=l.closest(".ui-dialog"),u=d.getUI(),f=$.Deferred(),g=$("#elfinder-pixo-container"),h=function(n){var h;g.length?g.appendTo(g.parent()):(g=$('<div id="elfinder-pixo-container" class="ui-front"></div>').css({position:"fixed",top:0,right:0,width:"100%",height:$(window).height(),overflow:"hidden"}).hide().appendTo(u.hasClass("elfinder-fullscreen")?u:"body"),u.on("resize."+d.namespace,function(e,t){e.preventDefault(),e.stopPropagation(),t&&t.fullscreen&&g.appendTo("on"===t.fullscreen?u:"body")}),d.bind("destroy",function(){s&&s.cancelEditing(),g.remove()})),p.on("click",v),h=Object.assign({type:"child",parent:g.get(0),output:{format:"png"},onSave:function(n){var s=n.toBlob().type,l=a(s,d),u=function(e){p.one("load error",function(){p.data("loading")&&p.data("loading")(!0)}).attr("crossorigin","anonymous").attr("src",e)},f=n.toDataURL();p.data("loading")(),delete e._canvas,p.data("ext")!==l?r(f,c.file.mime).done(function(n,a){a&&(e._canvas=o=a,i.trigger("change"),t&&t.show()),u(n)}).fail(function(){m.trigger("changeType",{extention:l,mime:s}),u(f)}):u(f)},onClose:function(){m.removeClass(d.res("class","preventback")),d.toggleMaximize(g,!1),g.hide(),d.toFront(m)}},c.confObj.editorOpts),c.trigger("Prepare",{node:e,editorObj:Pixo,instance:void 0,opts:h}),s=new Pixo.Bridge(h),f.resolve(s),l.on("saveAsFail",v),n&&n()},v=function(){m.addClass(d.res("class","preventback")),d.toggleMaximize(g,!0),d.toFront(g),g.show().data("curhash",c.file.hash),s.edit(p.get(0)),p.data("loading")(!0)};return p.data("loading")(),"image/jpeg"===c.file.mime&&(i=$('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>').attr("min","1").attr("max","100").attr("title","1 - 100").on("change",function(){var e=i.val();n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){o&&o.toBlob(function(e){e&&i.next("span").text(" ("+d.formatSize(e.size)+")")},"image/jpeg",Math.max(Math.min(e,100),1)/100)})}).val(d.storage("jpgQuality")||d.option("jpgQuality")),t=$('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>').hide().append($("<span>").html(d.i18n("quality")+" : "),i,$("<span></span>")).prependTo(l.parent().next()),l.data("quty",i)),"undefined"==typeof Pixo?d.loadScript(["https://pixoeditor.com:8443/editor/scripts/bridge.m.js"],function(){h(v)},{loadType:"tag"}):(h(),v()),f},save:function(e){var t,i=this,n=$(e),o=n.children("img:first");e._canvas?(n.data("quty")&&(t=n.data("quty").val(),t&&this.fm.storage("jpgQuality",t)),o.attr("src",e._canvas.toDataURL(i.file.mime,t?Math.max(Math.min(t,100),1)/100:void 0))):"data:"!==o.attr("src").substr(0,5)&&o.attr("src",c(o,this.file.mime))},close:function(e,t){t&&t.destroy()}},{setup:function(e,t){!t.UA.ltIE8&&t.options.cdns.ace||(this.disabled=!0)},info:{id:"aceeditor",name:"ACE Editor",iconImg:"img/editor-icons.png 0 -96"},load:function(e){var t=this,i=this.fm,n=$.Deferred(),o=i.options.cdns.ace,a=function(){var i,a,r,s=$(e),c=s.parent(),d=c.parent(),l=e.id+"_ace",p=(t.file.name.replace(/^.+\.([^.]+)|(.+)$/,"$1$2").toLowerCase(),{"text/x-php":"php","application/x-php":"php","text/html":"html","application/xhtml+xml":"html","text/javascript":"javascript","application/javascript":"javascript","text/css":"css","text/x-c":"c_cpp","text/x-csrc":"c_cpp","text/x-chdr":"c_cpp","text/x-c++":"c_cpp","text/x-c++src":"c_cpp","text/x-c++hdr":"c_cpp","text/x-shellscript":"sh","application/x-csh":"sh","text/x-python":"python","text/x-java":"java","text/x-java-source":"java","text/x-ruby":"ruby","text/x-perl":"perl","application/x-perl":"perl","text/x-sql":"sql","text/xml":"xml","application/docbook+xml":"xml","application/xml":"xml"});c.height(c.height()),ace.config.set("basePath",o),a=$('<div id="'+l+'" style="width:100%; height:100%;"></div>').text(s.val()).insertBefore(s.hide()),s.data("ace",!0),i=ace.edit(l),i.$blockScrolling=1/0,i.setOptions({theme:"ace/theme/monokai",fontSize:"14px",wrap:!0}),ace.config.loadModule("ace/ext/modelist",function(){r=ace.require("ace/ext/modelist").getModeForPath("/"+t.file.name).name,"text"===r&&p[t.file.mime]&&(r=p[t.file.mime]),c.prev().children(".elfinder-dialog-title").append(" ("+t.file.mime+" : "+r.split(/[\/\\]/).pop()+")"),i.setOptions({mode:"ace/mode/"+r}),"resolved"===n.state()&&d.trigger("resize")}),ace.config.loadModule("ace/ext/language_tools",function(){ace.require("ace/ext/language_tools"),i.setOptions({enableBasicAutocompletion:!0,enableSnippets:!0,enableLiveAutocompletion:!1})}),ace.config.loadModule("ace/ext/settings_menu",function(){ace.require("ace/ext/settings_menu").init(i)}),i.commands.addCommand({name:"saveFile",bindKey:{win:"Ctrl-s",mac:"Command-s"},exec:function(e){t.doSave()}}),i.commands.addCommand({name:"closeEditor",bindKey:{win:"Ctrl-w|Ctrl-q",mac:"Command-w|Command-q"},exec:function(e){t.doCancel()}}),i.resize(),$('<div class="ui-dialog-buttonset"></div>').css("float","left").append($("<button></button>").html(t.fm.i18n("TextArea")).button().on("click",function(){s.data("ace")?(s.removeData("ace"),a.hide(),s.val(i.session.getValue()).show().trigger("focus"),$(this).text("AceEditor")):(s.data("ace",!0),a.show(),i.setValue(s.hide().val(),-1),i.focus(),$(this).html(t.fm.i18n("TextArea")))})).append($("<button>Ace editor setting</button>").button({icons:{primary:"ui-icon-gear",secondary:"ui-icon-triangle-1-e"},text:!1}).on("click",function(){i.showSettingsMenu(),$("#ace_settingsmenu").css("font-size","80%").find('div[contains="setOptions"]').hide().end().parent().appendTo($("#elfinder"))})).prependTo(c.next()),t.trigger("Prepare",{node:e,editorObj:ace,instance:i,opts:{}}),n.resolve(i)};return t.confObj.loader||(t.confObj.loader=$.Deferred(),t.fm.loadScript([o+"/ace.js"],function(){t.confObj.loader.resolve()},void 0,{obj:window,name:"ace"})),t.confObj.loader.done(a),n},close:function(e,t){t&&t.destroy()},save:function(e,t){t&&$(e).data("ace")&&(e.value=t.session.getValue())},focus:function(e,t){t&&$(e).data("ace")&&t.focus()},resize:function(e,t,i,n){t&&t.resize()}},{setup:function(e,t){!t.UA.ltIE10&&t.options.cdns.codemirror||(this.disabled=!0)},info:{id:"codemirror",name:"CodeMirror",iconImg:"img/editor-icons.png 0 -176"},load:function(e){var t=this.fm,i=t.convAbsUrl(t.options.cdns.codemirror),o=$.Deferred(),a=this,r=function(t){var r,s,c,d=$(e),l=d.parent();l.height(l.height()),c={lineNumbers:!0,lineWrapping:!0,extraKeys:{"Ctrl-S":function(){a.doSave()},"Ctrl-Q":function(){a.doCancel()},"Ctrl-W":function(){a.doCancel()}}},a.trigger("Prepare",{node:e,editorObj:t,instance:void 0,opts:c}),r=t.fromTextArea(e,c),o.resolve(r);var p,m,u,f;p||(p=t.findModeByMIME(a.file.mime)),!p&&(m=a.file.name.match(/.+\.([^.]+)$/))&&(p=t.findModeByExtension(m[1])),p&&(t.modeURL=n?"codemirror/mode/%N/%N.min":i+"/mode/%N/%N.min.js",u=p.mode,f=p.mime,r.setOption("mode",f),t.autoLoadMode(r,u),l.prev().children(".elfinder-dialog-title").append(" ("+f+("null"!=u?" : "+u:"")+")")),s=$(r.getWrapperElement()).css({padding:0,border:"none"}),d.data("cm",!0),s.height("100%"),$('<div class="ui-dialog-buttonset"></div>').css("float","left").append($("<button></button>").html(a.fm.i18n("TextArea")).button().on("click",function(){d.data("cm")?(d.removeData("cm"),s.hide(),d.val(r.getValue()).show().trigger("focus"),$(this).text("CodeMirror")):(d.data("cm",!0),s.show(),r.setValue(d.hide().val()),r.refresh(),r.focus(),$(this).html(a.fm.i18n("TextArea")))})).prependTo(l.next())};return a.confObj.loader||(a.confObj.loader=$.Deferred(),n?(require.config({packages:[{name:"codemirror",location:i,main:"codemirror.min"}],map:{codemirror:{"codemirror/lib/codemirror":"codemirror"}}}),require(["codemirror","codemirror/addon/mode/loadmode.min","codemirror/mode/meta.min"],function(e){a.confObj.loader.resolve(e)})):a.fm.loadScript([i+"/codemirror.min.js"],function(){a.fm.loadScript([i+"/addon/mode/loadmode.min.js",i+"/mode/meta.min.js"],function(){a.confObj.loader.resolve(CodeMirror)})},{loadType:"tag"}),a.fm.loadCss(i+"/codemirror.css")),a.confObj.loader.done(r),o},close:function(e,t){t&&t.toTextArea()},save:function(e,t){t&&$(e).data("cm")&&(e.value=t.getValue())},focus:function(e,t){t&&$(e).data("cm")&&t.focus()},resize:function(e,t,i,n){t&&t.refresh()}},{setup:function(e,t){!t.UA.ltIE10&&t.options.cdns.simplemde||(this.disabled=!0)},info:{id:"simplemde",name:"SimpleMDE",iconImg:"img/editor-icons.png 0 -80"},exts:["md"],load:function(e){var t=this,i=this.fm,o=$(e).parent(),a=$.Deferred(),r=i.options.cdns.simplemde,s=function(i){var n,r,s,c=o.height(),d=o.outerHeight(!0)-c+14;e._setHeight=function(e){var t,i=e||o.height(),a=0;return o.children(".editor-toolbar,.editor-statusbar").each(function(){a+=$(this).outerHeight(!0)}),t=i-a-d,r.height(t),n.codemirror.refresh(),t},o.height(c),s={element:e,autofocus:!0},t.trigger("Prepare",{node:e,editorObj:i,instance:void 0,opts:s}),n=new i(s),a.resolve(n),r=$(n.codemirror.getWrapperElement()),r.css("min-height","50px").children(".CodeMirror-scroll").css("min-height","50px"),e._setHeight(c)};return t.confObj.loader||(t.confObj.loader=$.Deferred(),t.fm.loadCss(r+"/simplemde.min.css"),n?require([r+"/simplemde.min.js"],function(e){t.confObj.loader.resolve(e)}):t.fm.loadScript([r+"/simplemde.min.js"],function(){t.confObj.loader.resolve(SimpleMDE)},{loadType:"tag"})),t.confObj.loader.done(s),a},close:function(e,t){t&&t.toTextArea(),t=null},save:function(e,t){t&&(e.value=t.value())},focus:function(e,t){t&&t.codemirror.focus()},resize:function(e,t,i,n){t&&e._setHeight()}},{info:{id:"ckeditor",name:"CKEditor",iconImg:"img/editor-icons.png 0 0"},exts:["htm","html","xhtml"],setup:function(e,t){var i=this;t.options.cdns.ckeditor?(i.ckeOpts={},e.extraOptions&&(i.ckeOpts=Object.assign({},e.extraOptions.ckeditor||{}),e.extraOptions.managerUrl&&(i.managerUrl=e.extraOptions.managerUrl))):i.disabled=!0},load:function(e){var t=this,i=this.fm,n=$.Deferred(),o=function(){var o,a=$(e).parent(),r=a.closest(".elfinder-dialog"),s=a.height(),c=/([&?]getfile=)[^&]+/,d=t.confObj.managerUrl||window.location.href.replace(/#.*$/,""),l="ckeditor";c.test(d)?d=d.replace(c,"$1"+l):d+="?getfile="+l,a.height(s),o={startupFocus:!0,fullPage:!0,allowedContent:!0,filebrowserBrowseUrl:d,toolbarCanCollapse:!0,toolbarStartupExpanded:!i.UA.Mobile,removePlugins:"resize",extraPlugins:"colorbutton,justify,docprops",on:{instanceReady:function(o){var a=o.editor;a.resize("100%",s),r.one("beforedommove."+i.namespace,function(){a.destroy()}).one("dommove."+i.namespace,function(){t.load(e).done(function(e){t.instance=e})}),n.resolve(o.editor)}}},t.trigger("Prepare",{node:e,editorObj:CKEDITOR,instance:void 0,opts:o}),CKEDITOR.replace(e.id,Object.assign(o,t.confObj.ckeOpts)),CKEDITOR.on("dialogDefinition",function(e){var t=e.data.definition.dialog;t.on("show",function(e){i.getUI().append($(".cke_dialog_background_cover")).append(this.getElement().$)}),t.on("hide",function(e){$("body:first").append($(".cke_dialog_background_cover")).append(this.getElement().$)})})};return t.confObj.loader||(t.confObj.loader=$.Deferred(),window.CKEDITOR_BASEPATH=i.options.cdns.ckeditor+"/",$.getScript(i.options.cdns.ckeditor+"/ckeditor.js",function(){t.confObj.loader.resolve()})),t.confObj.loader.done(o),n},close:function(e,t){t&&t.destroy()},save:function(e,t){t&&(e.value=t.getData())},focus:function(e,t){t&&t.focus()},resize:function(e,t,i,n){t&&"ready"===t.status&&t.resize("100%",$(e).parent().height())}},{info:{id:"ckeditor5",name:"CKEditor5",iconImg:"img/editor-icons.png 0 -16"},exts:["htm","html","xhtml"],html:'<div class="edit-editor-ckeditor5"></div>',setup:function(e,t){var i=this;t.options.cdns.ckeditor5&&"function"==typeof window.Symbol&&"symbol"==typeof Symbol()?(i.ckeOpts={},e.extraOptions&&(e.extraOptions.ckeditor5Mode&&(i.ckeditor5Mode=e.extraOptions.ckeditor5Mode),i.ckeOpts=Object.assign({},e.extraOptions.ckeditor5||{}),i.ckeOpts.mode&&(i.ckeditor5Mode=i.ckeOpts.mode,delete i.ckeOpts.mode),e.extraOptions.managerUrl&&(i.managerUrl=e.extraOptions.managerUrl))):i.disabled=!0,t.bind("destroy",function(){i.editor=null})},prepare:function(e,t,i){$(e).height(e.editor.fm.getUI().height()-100)},init:function(e,t,i,n){var o=i.match(/^([\s\S]*<body[^>]*>)([\s\S]+)(<\/body>[\s\S]*)$/i),a="",r="",s="";this.css({width:"100%",height:"100%","box-sizing":"border-box"}),o?(a=o[1],r=o[2],s=o[3]):r=i,this.data("data",{header:a,body:r,footer:s}),this._setupSelEncoding(i)},load:function(e){var t,i=this,n=this.fm,o=$.Deferred(),a=i.confObj.ckeditor5Mode||"decoupled-document",r=function(){var e=n.lang.toLowerCase().replace("_","-");return"zh"===e.substr(0,2)&&"zh-cn"!==e&&(e="zh"),e}(),s=function(t){var s,d=$(e).parent();d.height(n.getUI().height()-100),s=Object.assign({toolbar:["heading","|","fontSize","fontFamily","|","bold","italic","underline","strikethrough","highlight","|","alignment","|","numberedList","bulletedList","blockQuote","indent","outdent","|","ckfinder","link","imageUpload","insertTable","mediaEmbed","|","undo","redo"],language:r},i.confObj.ckeOpts),i.trigger("Prepare",{node:e,editorObj:t,instance:void 0,opts:s}),t.create(e,s).then(function(t){var i,r,s=t.commands.get("ckfinder"),l=t.plugins.get("FileRepository"),p={};!t.ui.view.toolbar||"classic"!==a&&"decoupled-document"!==a||$(e).closest(".elfinder-dialog").children(".ui-widget-header").append($(t.ui.view.toolbar.element).css({marginRight:"-1em",marginLeft:"-1em"})),"classic"===a&&$(e).closest(".elfinder-edit-editor").css("overflow","auto"),s&&(i=function(e){return e&&e.mime.match(/^image\//i)},r=function(e){var i=t.commands.get("imageUpload");if(!i.isEnabled){var n=t.plugins.get("Notification"),o=t.locale.t;return void n.showWarning(o("Could not insert image at the current position."),{title:o("Inserting image failed"),namespace:"ckfinder"})}t.execute("imageInsert",{source:e})},s.execute=function(){var e=d.closest(".elfinder-dialog"),o=n.getCommand("getfile"),a=function(){p.hasVar&&(e.off("resize close",a),o.callback=p.callback,o.options.folders=p.folders,o.options.multiple=p.multi,n.commandMap.open=p.open,p.hasVar=!1)};e.trigger("togleminimize").one("resize close",a),p.callback=o.callback,p.folders=o.options.folders,p.multi=o.options.multiple,p.open=n.commandMap.open,p.hasVar=!0,o.callback=function(o){var a=[];return 1===o.length&&"directory"===o[0].mime?void n.one("open",function(){n.commandMap.open="getfile"}).getCommand("open").exec(o[0].hash):(n.getUI("cwd").trigger("unselectall"),$.each(o,function(e,o){i(o)?a.push(n.convAbsUrl(o.url)):t.execute("link",n.convAbsUrl(o.url))}),a.length&&r(a),void e.trigger("togleminimize"))},o.options.folders=!0,o.options.multiple=!0,n.commandMap.open="getfile",n.toast({mode:"info",msg:n.i18n("dblclickToSelect")})}),l.createUploadAdapter=function(e){return new c(e)},t.setData($(e).data("data").body),n.getUI().append($("body > div.ck-body")),$("div.ck-balloon-panel").css({"z-index":n.getMaximizeCss().zIndex+1}),o.resolve(t)})["catch"](function(e){n.error(e)})},c=function(e){var t=function(t,i,o){n.exec("upload",{files:[t]},void 0,n.cwd().hash).done(function(e){e.added&&e.added.length?n.url(e.added[0].hash,{async:!0}).done(function(e){i({"default":n.convAbsUrl(e)})}).fail(function(){o("errFileNotFound")}):o(n.i18n(e.error?e.error:"errUpload"))}).fail(function(e){var t=n.parseError(e);o(n.i18n(t?"userabort"===t?"errAbort":t:"errUploadNoFiles"))}).progress(function(t){e.uploadTotal=t.total,e.uploaded=t.progress})};this.upload=function(){return new Promise(function(i,n){e.file instanceof Promise||e.file&&"function"==typeof e.file.then?e.file.then(function(e){t(e,i,n)}):t(e.file,i,n)})},this.abort=function(){n.getUI().trigger("uploadabort")}};return i.confObj.editor?s(i.confObj.editor):(t=$.Deferred(),i.fm.loadScript([n.options.cdns.ckeditor5+"/"+a+"/ckeditor.js"],function(e){e||(e=window.BalloonEditor||window.InlineEditor||window.ClassicEditor||window.DecoupledEditor),"en"!==n.lang?i.fm.loadScript([n.options.cdns.ckeditor5+"/"+a+"/translations/"+r+".js"],function(i){t.resolve(e)},{tryRequire:!0,loadType:"tag",error:function(i){r="en",t.resolve(e)}}):t.resolve(e)},{tryRequire:!0,loadType:"tag"}),t.done(function(e){i.confObj.editor=e,s(e)})),o},getContent:function(){var e=$(this).data("data");return e.header+e.body+e.footer},close:function(e,t){t&&t.destroy()},save:function(e,t){var i=$(e),n=i.data("data");t&&(n.body=t.getData(),i.data("data",n))},focus:function(e,t){$(e).trigger("focus")}},{info:{id:"tinymce",name:"TinyMCE",iconImg:"img/editor-icons.png 0 -64"},exts:["htm","html","xhtml"],setup:function(e,t){var i=this;t.options.cdns.tinymce?(i.mceOpts={},e.extraOptions?(i.uploadOpts=Object.assign({},e.extraOptions.uploadOpts||{}),i.mceOpts=Object.assign({},e.extraOptions.tinymce||{})):i.uploadOpts={}):i.disabled=!0},load:function(e){var t=this,i=this.fm,n=$.Deferred(),o=function(){var o,a,r,s=$(e).show().parent(),c=s.closest(".elfinder-dialog"),d=s.height(),l=s.outerHeight(!0)-d,p=function(){var e;tinymce.activeEditor.windowManager.windows?(e=tinymce.activeEditor.windowManager.windows[0],a=$(e?e.getEl():void 0).hide(),r=$("#mce-modal-block").hide()):a=$(".tox-dialog-wrap").hide()},m=function(){r&&r.show(),a&&a.show()},u=tinymce.majorVersion;s.height(d),e._setHeight=function(e){if(u<5){var t,i=$(this).parent(),n=e||i.innerHeight(),o=0;i.find(".mce-container-body:first").children(".mce-top-part,.mce-statusbar").each(function(){o+=$(this).outerHeight(!0)}),t=n-o-l,i.find(".mce-edit-area iframe:first").height(t)}},o={selector:"#"+e.id,resize:!1,plugins:"print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern help",toolbar:"formatselect | bold italic strikethrough forecolor backcolor | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat",image_advtab:!0,init_instance_callback:function(o){e._setHeight(d),c.one("beforedommove."+i.namespace,function(){tinymce.execCommand("mceRemoveEditor",!1,e.id)}).one("dommove."+i.namespace,function(){t.load(e).done(function(e){t.instance=e})}),n.resolve(o)},file_picker_callback:function(e,t,n){var o=i.getCommand("getfile"),a=function(){r.hasVar&&(o.callback=r.callback,o.options.folders=r.folders,o.options.multiple=r.multi,i.commandMap.open=r.open,r.hasVar=!1),c.off("resize close",a),m()},r={};return r.callback=o.callback,r.folders=o.options.folders,r.multi=o.options.multiple,r.open=i.commandMap.open,r.hasVar=!0,o.callback=function(t){var o,a;return"directory"===t.mime?void i.one("open",function(){i.commandMap.open="getfile"}).getCommand("open").exec(t.hash):(o=i.convAbsUrl(t.url),a=t.name+" ("+i.formatSize(t.size)+")","file"==n.filetype&&e(o,{text:a,title:a}),"image"==n.filetype&&e(o,{alt:a}),"media"==n.filetype&&e(o),void c.trigger("togleminimize"))},o.options.folders=!0,o.options.multiple=!1,
i.commandMap.open="getfile",p(),c.trigger("togleminimize").one("resize close",a),i.toast({mode:"info",msg:i.i18n("dblclickToSelect")}),!1},images_upload_handler:function(e,n,o){var a=e.blob(),r=function(e){var t=e.data.dialog||{};(t.hasClass("elfinder-dialog-error")||t.hasClass("elfinder-confirm-upload"))&&(p(),t.trigger("togleminimize").one("resize close",s),i.unbind("dialogopened",r))},s=function(){c.off("resize close",s),m()},d=!0;a.name&&(d=void 0),i.bind("dialogopened",r).exec("upload",Object.assign({files:[a],clipdata:d},t.confObj.uploadOpts),void 0,i.cwd().hash).done(function(e){e.added&&e.added.length?i.url(e.added[0].hash,{async:!0}).done(function(e){m(),n(i.convAbsUrl(e))}).fail(function(){o(i.i18n("errFileNotFound"))}):o(i.i18n(e.error?e.error:"errUpload"))}).fail(function(e){var t=i.parseError(e);t&&("errUnknownCmd"===t?t="errPerm":"userabort"===t&&(t="errAbort")),o(i.i18n(t?t:"errUploadNoFiles"))})}},u>=5&&(o.height="100%"),t.trigger("Prepare",{node:e,editorObj:tinymce,instance:void 0,opts:o}),tinymce.init(Object.assign(o,t.confObj.mceOpts))};return t.confObj.loader||(t.confObj.loader=$.Deferred(),t.fm.loadScript([i.options.cdns.tinymce+(i.options.cdns.tinymce.match(/\.js/)?"":"/tinymce.min.js")],function(){t.confObj.loader.resolve()},{loadType:"tag"})),t.confObj.loader.done(o),n},close:function(e,t){t&&tinymce.execCommand("mceRemoveEditor",!1,e.id)},save:function(e,t){t&&t.save()},focus:function(e,t){t&&t.focus()},resize:function(e,t,i,n){t&&e._setHeight()}},{info:{id:"zohoeditor",name:"Zoho Editor",iconImg:"img/editor-icons.png 0 -32",cmdCheck:"ZohoOffice",preventGet:!0,hideButtons:!0,syncInterval:15e3,canMakeEmpty:!0,integrate:{title:"Zoho Office API",link:"https://www.zoho.com/officeapi/"}},mimes:["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.oasis.opendocument.text","application/rtf","text/html","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.spreadsheet","application/vnd.sun.xml.calc","text/csv","text/tab-separated-values","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.presentationml.slideshow","application/vnd.oasis.opendocument.presentation","application/vnd.sun.xml.impress"],html:'<iframe style="width:100%;max-height:100%;border:none;"></iframe>',setup:function(e,t){(t.UA.Mobile||t.UA.ltIE8)&&(this.disabled=!0)},prepare:function(e,t,i){var n=e.editor.fm.getUI();$(e).height(n.height()),t.width=Math.max(t.width||0,.8*n.width())},init:function(e,t,i,n){var o=this,a=$(this).hide(),r=n.getUI("toast"),s=$('<div class="elfinder-edit-spinner elfinder-edit-zohoeditor"></div>').html('<span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span>').appendTo(a.parent()),c=function(){var e="";return $.each(n.customData,function(t,i){e+="&"+encodeURIComponent(t)+"="+encodeURIComponent(i)}),e};$(o).data("xhr",n.request({data:{cmd:"editor",name:o.editor.confObj.info.cmdCheck,method:"init","args[target]":t.hash,"args[lang]":n.lang,"args[cdata]":c()},preventDefault:!0}).done(function(e){var t;e.zohourl?(t={css:{height:"100%"}},o.editor.trigger("Prepare",{node:o,editorObj:void 0,instance:a,opts:t}),a.attr("src",e.zohourl).show().css(t.css),e.warning&&(r.appendTo(o.closest(".ui-dialog")),n.toast({msg:n.i18n(e.warning),mode:"warning",timeOut:0,onHidden:function(){1===r.children().length&&r.appendTo(n.getUI())},button:{text:"btnYes"}}))):(e.error&&n.error(e.error),o.elfinderdialog("destroy"))}).fail(function(e){e&&n.error(e),o.elfinderdialog("destroy")}).always(function(){s.remove()}))},load:function(){},getContent:function(){},save:function(){},beforeclose:d,close:function(e){var t=(this.fm,$(e).data("xhr"));"pending"===t.state()&&t.reject()}},{info:{id:"ziparchive",name:"btnMount",iconImg:"img/toolbar.png 0 -416",cmdCheck:"ZipArchive",edit:function(e,t){var i=this,n=$.Deferred();return i.request({data:{cmd:"netmount",protocol:"ziparchive",host:e.hash,path:e.phash},preventFail:!0,notify:{type:"netmount",cnt:1,hideCnt:!0}}).done(function(e){var t;e.added&&e.added.length&&(e.added[0].phash&&(t=i.file(e.added[0].phash))&&(t.dirs||(t.dirs=1,i.change({changed:[t]}))),i.one("netmountdone",function(){i.exec("open",e.added[0].hash),i.one("opendone",function(){e.toast&&i.toast(e.toast)})})),n.resolve()}).fail(function(e){n.reject(e)}),n}},mimes:["application/zip"],load:function(){},save:function(){}},{info:{id:"textarea",name:"TextArea",useTextAreaEvent:!0},load:function(e){this.trigger("Prepare",{node:e,editorObj:void 0,instance:void 0,opts:{}}),e.setSelectionRange&&e.setSelectionRange(0,0),$(e).trigger("focus").show()},save:function(){}},{info:{id:"onlineconvert",name:"Online Convert",iconImg:"img/editor-icons.png 0 -144",cmdCheck:"OnlineConvert",preventGet:!0,hideButtons:!0,single:!0,converter:!0,canMakeEmpty:!1,integrate:{title:"ONLINE-CONVERT.COM",link:"https://online-convert.com"}},mimes:["*"],html:'<div style="width:100%;max-height:100%;"></div>',setup:function(e,t){var i=e.extraOptions.onlineConvert||{maxSize:100,showLink:!0};i.maxSize&&(this.info.maxSize=1048576*i.maxSize),this.set=Object.assign({url:"https://%s.online-convert.com%s?external_url=",conv:{Archive:{"7Z":{},BZ2:{ext:"bz"},GZ:{},ZIP:{}},Audio:{MP3:{},OGG:{ext:"oga"},WAV:{},WMA:{},AAC:{},AIFF:{ext:"aif"},FLAC:{},M4A:{},MMF:{},OPUS:{ext:"oga"}},Document:{DOC:{},DOCX:{},HTML:{},ODT:{},PDF:{},PPT:{},PPTX:{},RTF:{},SWF:{},TXT:{}},eBook:{AZW3:{ext:"azw"},ePub:{},FB2:{ext:"xml"},LIT:{},LRF:{},MOBI:{},PDB:{},PDF:{},"PDF-eBook":{ext:"pdf"},TCR:{}},Hash:{Adler32:{},"Apache-htpasswd":{},Blowfish:{},CRC32:{},CRC32B:{},Gost:{},Haval128:{},MD4:{},MD5:{},RIPEMD128:{},RIPEMD160:{},SHA1:{},SHA256:{},SHA384:{},SHA512:{},Snefru:{},"Std-DES":{},Tiger128:{},"Tiger128-calculator":{},"Tiger128-converter":{},Tiger160:{},Tiger192:{},Whirlpool:{}},Image:{BMP:{},EPS:{ext:"ai"},GIF:{},EXR:{},ICO:{},JPG:{},PNG:{},SVG:{},TGA:{},TIFF:{ext:"tif"},WBMP:{},WebP:{}},Video:{"3G2":{},"3GP":{},AVI:{},FLV:{},HLS:{ext:"m3u8"},MKV:{},MOV:{},MP4:{},"MPEG-1":{ext:"mpeg"},"MPEG-2":{ext:"mpeg"},OGG:{ext:"ogv"},OGV:{},WebM:{},WMV:{},Android:{link:"/convert-video-for-%s",ext:"mp4"},Blackberry:{link:"/convert-video-for-%s",ext:"mp4"},DPG:{link:"/convert-video-for-%s",ext:"avi"},iPad:{link:"/convert-video-for-%s",ext:"mp4"},iPhone:{link:"/convert-video-for-%s",ext:"mp4"},iPod:{link:"/convert-video-for-%s",ext:"mp4"},"Nintendo-3DS":{link:"/convert-video-for-%s",ext:"avi"},"Nintendo-DS":{link:"/convert-video-for-%s",ext:"avi"},PS3:{link:"/convert-video-for-%s",ext:"mp4"},Wii:{link:"/convert-video-for-%s",ext:"avi"},Xbox:{link:"/convert-video-for-%s",ext:"wmv"}}},catExts:{Hash:"txt"},link:'<div class="elfinder-edit-onlineconvert-link"><a href="https://www.online-convert.com" target="_blank"><span class="elfinder-button-icon"></span>ONLINE-CONVERT.COM</a></div>',useTabs:!(!$.fn.tabs||t.UA.iOS)},i)},prepare:function(e,t,i){var n=e.editor.fm.getUI();$(e).height(n.height()),t.width=Math.max(t.width||0,.8*n.width())},init:function(e,t,i,n){var a,r,s=this,c=s.editor.confObj,d=c.set,l=n.getUI("toast"),p={},m=n.uploadMimeCheck("application/zip",t.phash),u=$("base").length?document.location.href.replace(/#.*$/,""):"",f=function(e,t){var i;return d.catExts[e]?d.catExts[e]:d.conv[e]&&(i=d.conv[e][t])?(i.ext||t).toLowerCase():t.toLowerCase()},g=function(e,t){var i,o,a;o="undefined"==typeof c.api?n.request({data:{cmd:"editor",name:"OnlineConvert",method:"init"},preventDefault:!0}):$.Deferred().resolve({api:c.api}),e=e.toLowerCase(),o.done(function(n){c.api=n.api,c.api&&(e?i="?category="+e:(i="",e="all"),c.conversions||(c.conversions={}),a=c.conversions[e]?$.Deferred().resolve(c.conversions[e]):$.getJSON("https://api2.online-convert.com/conversions"+i),a.done(function(i){c.conversions[e]=i,$.each(i,function(e,t){h[d.useTabs?"children":"find"](".onlineconvert-category-"+t.category).children(".onlineconvert-"+t.target).trigger("makeoption",t)}),t&&t()}))})},h=function(){var e=$("<div></div>").on("click","button",function(){var e=$(this),t=e.data("opts")||null,i=e.closest(".onlineconvert-category").data("cname"),n=e.data("conv");c.api===!0&&k({category:i,convert:n,options:t})}).on("change",function(e){var t=$(e.target),i=t.parent(),o=t.closest(".elfinder-edit-onlineconvert-button").children("button:first"),a=o.data("opts")||{},r="boolean"===i.data("type")?t.is(":checked"):t.val();if(e.stopPropagation(),r&&("integer"===i.data("type")&&(r=parseInt(r)),i.data("pattern"))){var s=new RegExp(i.data("pattern"));s.test(r)||(requestAnimationFrame(function(){n.error('"'+n.escape(r)+'" is not match to "/'+n.escape(i.data("pattern"))+'/"')}),r=null)}r?a[t.parent().data("optkey")]=r:delete a[i.data("optkey")],o.data("opts",a)}),i=$("<ul></ul>"),a=function(e,t){var i,o,a,r=$("<p></p>").data("optkey",e).data("type",t.type),s="",c="",d=!1;return t.description&&r.attr("title",n.i18n(t.description)),t.pattern&&r.data("pattern",t.pattern),r.append($("<span></span>").text(n.i18n(e)+" : ")),"boolean"===t.type?((t["default"]||(d="allow_multiple_outputs"===e&&!m))&&(s=" checked",d&&(c=" disabled"),o=this.children("button:first"),i=o.data("opts")||{},i[e]=!0,o.data("opts",i)),r.append($('<input type="checkbox" value="true"'+s+c+"/>"))):t["enum"]?(a=$("<select></select>").append($('<option value=""></option>').text("Select...")),$.each(t["enum"],function(e,t){a.append($('<option value="'+t+'"></option>').text(t))}),r.append(a)):r.append($('<input type="text" value=""/>')),r},r=function(e){var t=this,i=$('<span class="elfinder-button-icon elfinder-button-icon-preference"></span>').on("click",function(){n.toggle()}),n=$('<div class="elfinder-edit-onlinconvert-options"></div>').hide();e.options&&$.each(e.options,function(e,i){"download_password"!==e&&n.append(a.call(t,e,i))}),t.append(i,n)},s=+new Date,l=0;return c.ext2mime||(c.ext2mime=Object.assign(n.arrayFlip(n.mimeTypes),o)),$.each(d.conv,function(o,a){var d=o.toLowerCase(),m="elfinder-edit-onlineconvert-"+d+s,g=$('<div id="'+m+'" class="onlineconvert-category onlineconvert-category-'+d+'"></div>').data("cname",o);$.each(a,function(e,i){var a=e.toLowerCase(),s=f(o,e);c.ext2mime[s]||("audio"===d||"image"===d||"video"===d?c.ext2mime[s]=d+"/x-"+a:c.ext2mime[s]="application/octet-stream"),n.uploadMimeCheck(c.ext2mime[s],t.phash)&&g.append($('<div class="elfinder-edit-onlineconvert-button onlineconvert-'+a+'"></div>').on("makeoption",function(e,t){var i=$(this);i.children(".elfinder-button-icon-preference").length||r.call(i,t)}).append($("<button></button>").text(e).data("conv",e)))}),g.children().length&&(i.append($("<li></li>").append($("<a></a>").attr("href",u+"#"+m).text(o))),e.append(g),p[d]=l++)}),d.useTabs?e.prepend(i).tabs({beforeActivate:function(e,t){g(t.newPanel.data("cname"))}}):$.each(d.conv,function(t){var i=t.toLowerCase();e.append($('<fieldset class="onlineconvert-fieldset-'+i+'"></fieldset>').append($("<legend></legend>").text(t)).append(e.children(".onlineconvert-category-"+i)))}),e}(),v=$(this).append(h,d.showLink?$(d.link):null),b=$('<div class="elfinder-edit-spinner elfinder-edit-onlineconvert"></div>').hide().html('<span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"></span>').appendTo(v.parent()),x=$('<div class="elfinder-quicklook-info-progress"></div>').appendTo(b),y=null,w=function(){return y?$.Deferred().resolve(y):(b.show(),n.forExternalUrl(t.hash,{progressBar:x}).done(function(e){y=e}).fail(function(e){e&&n.error(e),s.elfinderdialog("destroy")}).always(function(){b.hide()}))},k=function(e){$(s).data("dfrd",w().done(function(i){v.fadeOut(),j({info:"Start conversion request."}),n.request({data:{cmd:"editor",name:"OnlineConvert",method:"api","args[category]":e.category.toLowerCase(),"args[convert]":e.convert.toLowerCase(),"args[options]":JSON.stringify(e.options),"args[source]":n.convAbsUrl(i),"args[filename]":n.splitFileExtention(t.name)[0]+"."+f(e.category,e.convert),"args[mime]":t.mime},preventDefault:!0}).done(function(t){O(t.apires,e.category,e.convert)}).fail(function(e){e&&n.error(e),s.elfinderdialog("destroy")})}))},O=function(e,t,i){var o,a=[];e&&e.id?(o=e.status,"failed"===o.code?(b.hide(),e.errors&&e.errors.length&&$.each(e.errors,function(e,t){t.message&&a.push(t.message)}),n.error(a.length?a:o.info),v.fadeIn()):"completed"===o.code?M(e):(j(o),setTimeout(function(){C(e.id)},1e3))):(l.appendTo(s.closest(".ui-dialog")),e.message&&n.toast({msg:n.i18n(e.message),mode:"error",timeOut:5e3,onHidden:function(){1===l.children().length&&l.appendTo(n.getUI())}}),n.toast({msg:n.i18n("editorConvNoApi"),mode:"error",timeOut:3e3,onHidden:function(){1===l.children().length&&l.appendTo(n.getUI())}}),b.hide(),v.show())},j=function(e){b.show().children(".elfinder-spinner-text").text(e.info)},C=function(e){n.request({data:{cmd:"editor",name:"OnlineConvert",method:"api","args[jobid]":e},preventDefault:!0}).done(function(e){O(e.apires)}).fail(function(e){e&&n.error(e),s.elfinderdialog("destroy")})},M=function(e){var i=e.output,o=(e.id,"");b.hide(),i&&i.length&&(s.elfinderdialog("destroy"),$.each(i,function(e,t){t.uri&&(o+=t.uri+"\n")}),n.upload({target:t.phash,files:[o],type:"text",extraData:{contentSaveId:"OnlineConvert-"+e.id}}))},T="document";v.parent().css({overflow:"auto"}).addClass("overflow-scrolling-touch"),(r=t.mime.match(/^(audio|image|video)/))&&(T=r[1]),d.useTabs?p[T]&&h.tabs("option","active",p[T]):(a=Object.keys(d.conv).length,$.each(d.conv,function(e){return e.toLowerCase()===T?(g(e,function(){$.each(d.conv,function(e){e.toLowerCase()!==T&&g(e)})}),!1):void a--}),a||$.each(d.conv,function(e){g(e)}),v.parent().scrollTop(h.children(".onlineconvert-fieldset-"+T).offset().top))},load:function(){},getContent:function(){},save:function(){},close:function(e){var t=(this.fm,$(e).data("dfrd"));t&&"pending"===t.state()&&t.reject()}}]},window.elFinder);lib/js/extras/editors.default.js000064400000244433147361034410012703 0ustar00(function(editors, elFinder) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], editors);
	} else if (elFinder) {
		var optEditors = elFinder.prototype._options.commandsOptions.edit.editors;
		elFinder.prototype._options.commandsOptions.edit.editors = optEditors.concat(editors(elFinder));
	}
}(function(elFinder) {
	"use strict";
	var apps = {},
		// get query of getfile
		getfile = window.location.search.match(/getfile=([a-z]+)/),
		useRequire = elFinder.prototype.hasRequire,
		ext2mime = {
			bmp: 'image/x-ms-bmp',
			dng: 'image/x-adobe-dng',
			gif: 'image/gif',
			jpeg: 'image/jpeg',
			jpg: 'image/jpeg',
			pdf: 'application/pdf',
			png: 'image/png',
			ppm: 'image/x-portable-pixmap',
			psd: 'image/vnd.adobe.photoshop',
			pxd: 'image/x-pixlr-data',
			svg: 'image/svg+xml',
			tiff: 'image/tiff',
			webp: 'image/webp',
			xcf: 'image/x-xcf',
			sketch: 'application/x-sketch',
			ico: 'image/x-icon',
			dds: 'image/vnd-ms.dds',
			emf: 'application/x-msmetafile'
		},
		mime2ext,
		getExtention = function(mime, fm, jpeg) {
			if (!mime2ext) {
				mime2ext = fm.arrayFlip(ext2mime);
			}
			var ext = mime2ext[mime] || fm.mimeTypes[mime];
			if (!jpeg) {
				if (ext === 'jpeg') {
					ext = 'jpg';
				}
			} else {
				if (ext === 'jpg') {
					ext = 'jpeg';
				}
			}
			return ext;
		},
		changeImageType = function(src, toMime) {
			var dfd = jQuery.Deferred();
			try {
				var canvas = document.createElement('canvas'),
					ctx = canvas.getContext('2d'),
					img = new Image(),
					conv = function() {
						var url = canvas.toDataURL(toMime),
							mime, m;
						if (m = url.match(/^data:([a-z0-9]+\/[a-z0-9.+-]+)/i)) {
							mime = m[1];
						} else {
							mime = '';
						}
						if (mime.toLowerCase() === toMime.toLowerCase()) {
							dfd.resolve(canvas.toDataURL(toMime), canvas);
						} else {
							dfd.reject();
						}
					};

				img.src = src;
				jQuery(img).on('load', function() {
					try {
						canvas.width = img.width;
						canvas.height = img.height;
						ctx.drawImage(img, 0, 0);
						conv();
					} catch(e) {
						dfd.reject();
					}
				}).on('error', function () {
					dfd.reject();
				});
				return dfd;
			} catch(e) {
				return dfd.reject();
			}
		},
		initImgTag = function(id, file, content, fm) {
			var node = jQuery(this).children('img:first').data('ext', getExtention(file.mime, fm)),
				spnr = jQuery('<div class="elfinder-edit-spinner elfinder-edit-image"></div>')
					.html('<span class="elfinder-spinner-text">' + fm.i18n('ntfloadimg') + '</span><span class="elfinder-spinner"></span>')
					.hide()
					.appendTo(this),
				setup = function() {
					node.attr('id', id+'-img')
						.attr('src', url || content)
						.css({'height':'', 'max-width':'100%', 'max-height':'100%', 'cursor':'pointer'})
						.data('loading', function(done) {
							var btns = node.closest('.elfinder-dialog').find('button,.elfinder-titlebar-button');
							btns.prop('disabled', !done)[done? 'removeClass' : 'addClass']('ui-state-disabled');
							node.css('opacity', done? '' : '0.3');
							spnr[done? 'hide' : 'show']();
							return node;
						});
				},
				url;
			
			if (!content.match(/^data:/)) {
				fm.openUrl(file.hash, false, function(v) {
					url = v;
					node.attr('_src', content);
					setup();
				});
			} else {
				setup();
			}
		},
		imgBase64 = function(node, mime) {
			var style = node.attr('style'),
				img, canvas, ctx, data;
			try {
				// reset css for getting image size
				node.attr('style', '');
				// img node
				img = node.get(0);
				// New Canvas
				canvas = document.createElement('canvas');
				canvas.width  = img.width;
				canvas.height = img.height;
				// restore css
				node.attr('style', style);
				// Draw Image
				canvas.getContext('2d').drawImage(img, 0, 0);
				// To Base64
				data = canvas.toDataURL(mime);
			} catch(e) {
				data = node.attr('src');
			}
			return data;
		},
		iframeClose = function(ifm) {
			var $ifm = jQuery(ifm),
				dfd = jQuery.Deferred().always(function() {
					$ifm.off('load', load);
				}),
				ab = 'about:blank',
				chk = function() {
					tm = setTimeout(function() {
						var src;
						try {
							src = base.contentWindow.location.href;
						} catch(e) {
							src = null;
						}
						if (src === ab) {
							dfd.resolve();
						} else if (--cnt > 0){
							chk();
						} else {
							dfd.reject();
						}
					}, 500);
				},
				load = function() {
					tm && clearTimeout(tm);
					dfd.resolve();
				},
				cnt = 20, // 500ms * 20 = 10sec wait
				tm;
			$ifm.one('load', load);
			ifm.src = ab;
			chk();
			return dfd;
		};
	
	// check getfile callback function
	if (getfile) {
		getfile = getfile[1];
		if (getfile === 'ckeditor') {
			elFinder.prototype._options.getFileCallback = function(file, fm) {
				window.opener.CKEDITOR.tools.callFunction((function() {
					var reParam = new RegExp('(?:[\?&]|&amp;)CKEditorFuncNum=([^&]+)', 'i'),
						match = window.location.search.match(reParam);
					return (match && match.length > 1) ? match[1] : '';
				})(), fm.convAbsUrl(file.url));
				fm.destroy();
				window.close();
			};
		}
	}
	
	// return editors Array
	return [
		{
			// tui.image-editor - https://github.com/nhnent/tui.image-editor
			info : {
				id: 'tuiimgedit',
				name: 'TUI Image Editor',
				iconImg: 'img/editor-icons.png 0 -48',
				dataScheme: true,
				schemeContent: true,
				openMaximized: true,
				canMakeEmpty: false,
				integrate: {
					title: 'TOAST UI Image Editor',
					link: 'http://ui.toast.com/tui-image-editor/'
				}
			},
			// MIME types to accept
			mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
			// HTML of this editor
			html : '<div class="elfinder-edit-imageeditor"><canvas></canvas></div>',
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE8 || fm.UA.Mobile) {
					this.disabled = true;
				} else {
					this.opts = Object.assign({
						version: 'v3.14.3'
					}, opts.extraOptions.tuiImgEditOpts || {}, {
						iconsPath : fm.baseUrl + 'img/tui-',
						theme : {}
					});
					if (!fm.isSameOrigin(this.opts.iconsPath)) {
						this.disabled = true;
						fm.debug('warning', 'Setting `commandOptions.edit.extraOptions.tuiImgEditOpts.iconsPath` MUST follow the same origin policy.');
					}
				}
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, content, fm) {
				this.data('url', content);
			},
			load : function(base) {
				var self = this,
					fm   = this.fm,
					dfrd = jQuery.Deferred(),
					cdns = fm.options.cdns,
					ver  = self.confObj.opts.version,
					init = function(editor) {
						var $base = jQuery(base),
							bParent = $base.parent(),
							opts = self.confObj.opts,
							iconsPath = opts.iconsPath,
							tmpContainer = jQuery('<div class="tui-image-editor-container">').appendTo(bParent),
							tmpDiv = [
								jQuery('<div class="tui-image-editor-submenu"></div>').appendTo(tmpContainer),
								jQuery('<div class="tui-image-editor-controls"></div>').appendTo(tmpContainer)
							],
							iEditor = new editor(base, {
								includeUI: {
									loadImage: {
										path: $base.data('url'),
										name: self.file.name
									},
									theme: Object.assign(opts.theme, {
										'menu.normalIcon.path': iconsPath + 'icon-d.svg',
										'menu.normalIcon.name': 'icon-d',
										'menu.activeIcon.path': iconsPath + 'icon-b.svg',
										'menu.activeIcon.name': 'icon-b',
										'menu.disabledIcon.path': iconsPath + 'icon-a.svg',
										'menu.disabledIcon.name': 'icon-a',
										'menu.hoverIcon.path': iconsPath + 'icon-c.svg',
										'menu.hoverIcon.name': 'icon-c',
										'submenu.normalIcon.path': iconsPath + 'icon-d.svg',
										'submenu.normalIcon.name': 'icon-d',
										'submenu.activeIcon.path': iconsPath + 'icon-c.svg',
										'submenu.activeIcon.name': 'icon-c'
									}),
									initMenu: 'filter',
									menuBarPosition: 'bottom'
								},
								cssMaxWidth: Math.max(300, bParent.width()),
								cssMaxHeight: Math.max(200, bParent.height() - (tmpDiv[0].height() + tmpDiv[1].height() + 3 /*margin*/)),
								usageStatistics: false
							}),
							canvas = $base.find('canvas:first').get(0),
							zoom = function(v) {
								if (typeof v !== 'undefined') {
									var c = jQuery(canvas),
										w = parseInt(c.attr('width')),
										h = parseInt(c.attr('height')),
										a = w / h,
										mw, mh;
									if (v === 0) {
										mw = w;
										mh = h;
									} else {
										mw = parseInt(c.css('max-width')) + Number(v);
										mh = mw / a;
										if (mw > w && mh > h) {
											mw = w;
											mh = h;
										}
									}
									per.text(Math.round(mw / w * 100) + '%');
									iEditor.resizeCanvasDimension({width: mw, height: mh});
									// continually change more
									if (zoomMore) {
										setTimeout(function() {
											zoomMore && zoom(v);
										}, 50);
									}
								}
							},
							zup = jQuery('<span class="ui-icon ui-icon-plusthick"></span>').data('val', 10),
							zdown = jQuery('<span class="ui-icon ui-icon-minusthick"></span>').data('val', -10),
							per = jQuery('<button></button>').css('width', '4em').text('%').attr('title', '100%').data('val', 0),
							quty, qutyTm, zoomTm, zoomMore;

						tmpContainer.remove();
						$base.removeData('url').data('mime', self.file.mime);
						// jpeg quality controls
						if (self.file.mime === 'image/jpeg') {
							$base.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality'));
							quty = jQuery('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>')
								.attr('min', '1')
								.attr('max', '100')
								.attr('title', '1 - 100')
								.on('change', function() {
									var q = quty.val();
									$base.data('quality', q);
									qutyTm && cancelAnimationFrame(qutyTm);
									qutyTm = requestAnimationFrame(function() {
										canvas.toBlob(function(blob) {
											blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')');
										}, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100);
									});
								})
								.val($base.data('quality'));
							jQuery('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>')
								.append(
									jQuery('<span>').html(fm.i18n('quality') + ' : '), quty, jQuery('<span></span>')
								)
								.prependTo($base.parent().next());
						} else if (self.file.mime === 'image/svg+xml') {
							$base.closest('.ui-dialog').trigger('changeType', {
								extention: 'png',
								mime : 'image/png',
								keepEditor: true
							});
						}
						// zoom scale controls
						jQuery('<div class="ui-dialog-buttonset elfinder-edit-extras"></div>')
							.append(
								zdown, per, zup
							)
							.attr('title', fm.i18n('scale'))
							.on('click', 'span,button', function() {
								zoom(jQuery(this).data('val'));
							})
							.on('mousedown mouseup mouseleave', 'span', function(e) {
								zoomMore = false;
								zoomTm && clearTimeout(zoomTm);
								if (e.type === 'mousedown') {
									zoomTm = setTimeout(function() {
										zoomMore = true;
										zoom(jQuery(e.target).data('val'));
									}, 500);
								}
							})
							.prependTo($base.parent().next());

						// wait canvas ready
						setTimeout(function() {
							dfrd.resolve(iEditor);
							if (quty) {
								quty.trigger('change');
								iEditor.on('redoStackChanged undoStackChanged', function() {
									quty.trigger('change');
								});
							}
							// show initial scale
							zoom(null);
						}, 100);

						// show color slider (maybe TUI-Image-Editor's bug)
						// see https://github.com/nhn/tui.image-editor/issues/153
						$base.find('.tui-colorpicker-palette-container').on('click', '.tui-colorpicker-palette-preview', function() {
							jQuery(this).closest('.color-picker-control').height('auto').find('.tui-colorpicker-slider-container').toggle();
						});
						$base.on('click', function() {
							$base.find('.tui-colorpicker-slider-container').hide();
						});
					},
					loader;

				if (!self.confObj.editor) {
					loader = jQuery.Deferred();
					fm.loadCss([
						cdns.tui + '/tui-color-picker/latest/tui-color-picker.css',
						cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.css'
					]);
					if (fm.hasRequire) {
						require.config({
							paths : {
								'fabric/dist/fabric.require' : cdns.fabric + '/fabric.require.min', // for fabric < 2.0.1
								'fabric' : cdns.fabric + '/fabric.min', // for fabric >= 2.0.1
								'tui-code-snippet' : cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min',
								'tui-color-picker' : cdns.tui + '/tui-color-picker/latest/tui-color-picker.min',
								'tui-image-editor' : cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min'
							}
						});
						require(['tui-image-editor'], function(ImageEditor) {
							loader.resolve(ImageEditor);
						});
					} else {
						fm.loadScript([
							cdns.fabric + '/fabric.min.js',
							cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min.js'
						], function() {
							fm.loadScript([
								cdns.tui + '/tui-color-picker/latest/tui-color-picker.min.js'
							], function() {
								fm.loadScript([
									cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min.js'
								], function() {
									loader.resolve(window.tui.ImageEditor);
								}, {
									loadType: 'tag'
								});
							}, {
								loadType: 'tag'
							});
						}, {
							loadType: 'tag'
						});
					}
					loader.done(function(editor) {
						self.confObj.editor = editor;
						init(editor);
					});
				} else {
					init(self.confObj.editor);
				}
				return dfrd;
			},
			getContent : function(base) {
				var editor = this.editor,
					fm = editor.fm,
					$base = jQuery(base),
					quality = $base.data('quality');
				if (editor.instance) {
					if ($base.data('mime') === 'image/jpeg') {
						quality = quality || fm.storage('jpgQuality') || fm.option('jpgQuality');
						quality = Math.max(0.1, Math.min(1, quality / 100));
					}
					return editor.instance.toDataURL({
						format: getExtention($base.data('mime'), fm, true),
						quality: quality
					});
				}
			},
			save : function(base) {
				var $base = jQuery(base),
					quality = $base.data('quality'),
					hash = $base.data('hash'),
					file;
				this.instance.deactivateAll();
				if (typeof quality !== 'undefined') {
					this.fm.storage('jpgQuality', quality);
				}
				if (hash) {
					file = this.fm.file(hash);
					$base.data('mime', file.mime);
				}
			}
		},
		{
			// Photopea advanced image editor
			info : {
				id : 'photopea',
				name : 'Photopea',
				iconImg : 'img/editor-icons.png 0 -160',
				single: true,
				noContent: true,
				arrayBufferContent: true,
				openMaximized: true,
				// Disable file types that cannot be saved on Photopea.
				canMakeEmpty: ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', /*'image/x-adobe-dng',*/ 'image/webp', /*'image/x-xcf',*/ 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', /*'application/x-msmetafile'*/],
				integrate: {
					title: 'Photopea',
					link: 'https://www.photopea.com/learn/'
				}
			},
			mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', 'image/x-adobe-dng', 'image/webp', 'image/x-xcf', 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', 'application/x-msmetafile'],
			html : '<iframe style="width:100%;height:100%;border:none;"></iframe>',
			// setup on elFinder bootup
			setup : function(opts, fm) {
				if (fm.UA.IE || fm.UA.Mobile) {
					this.disabled = true;
				}
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, dum, fm) {
				var orig = 'https://www.photopea.com',
					ifm = jQuery(this).hide()
						//.css('box-sizing', 'border-box')
						.on('load', function() {
							//spnr.remove();
							ifm.show();
						})
						.on('error', function() {
							spnr.remove();
							ifm.show();
						}),
					editor = this.editor,
					confObj = editor.confObj,
					spnr = jQuery('<div class="elfinder-edit-spinner elfinder-edit-photopea"></div>')
						.html('<span class="elfinder-spinner-text">' + fm.i18n('nowLoading') + '</span><span class="elfinder-spinner"></span>')
						.appendTo(ifm.parent()),
					saveMimes = fm.arrayFlip(confObj.info.canMakeEmpty),
					getType = function(mime) {
						var ext = getExtention(mime, fm),
							extmime = ext2mime[ext];

						if (!confObj.mimesFlip[extmime]) {
							ext = '';
						} else if (ext === 'jpeg') {
							ext = 'jpg';
						}
						if (!ext || !saveMimes[extmime]) {
							ext = 'psd';
							extmime = ext2mime[ext];
							ifm.closest('.ui-dialog').trigger('changeType', {
								extention: ext,
								mime : extmime,
								keepEditor: true
							});
						}
						return ext;
					},
					mime = file.mime,
					liveMsg, type, quty;
				
				if (!confObj.mimesFlip) {
					confObj.mimesFlip = fm.arrayFlip(confObj.mimes, true);
				}
				if (!confObj.liveMsg) {
					confObj.liveMsg = function(ifm, spnr, file) {
						var wnd = ifm.get(0).contentWindow,
							phase = 0,
							data = null,
							dfdIni = jQuery.Deferred().done(function() {
								spnr.remove();
								phase = 1;
								wnd.postMessage(data, orig);
							}),
							dfdGet;

						this.load = function() {
							return fm.getContents(file.hash, 'arraybuffer').done(function(d) {
								data = d;
							});
						};

						this.receive = function(e) {
							var ev = e.originalEvent,
								state;
							if (ev.origin === orig && ev.source === wnd) {
								if (ev.data === 'done') {
									if (phase === 0) {
										dfdIni.resolve();
									} else if (phase === 1) {
										phase = 2;
										ifm.trigger('contentsloaded');
									} else {
										if (dfdGet && dfdGet.state() === 'pending') {
											dfdGet.reject('errDataEmpty');
										}
									}
								} else if (ev.data === 'Save') {
									editor.doSave();
								} else {
									if (dfdGet && dfdGet.state() === 'pending') {
										if (typeof ev.data === 'object') {
											dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(ev.data));
										} else {
											dfdGet.reject('errDataEmpty');
										}
									}
								}
							}
						};

						this.getContent = function() {
							var type, q;
							if (phase > 1) {
								dfdGet && dfdGet.state() === 'pending' && dfdGet.reject();
								dfdGet = null;
								dfdGet = jQuery.Deferred();
								if (phase === 2) {
									phase = 3;
									dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(data));
									data = null;
									return dfdGet;
								}
								if (ifm.data('mime')) {
									mime = ifm.data('mime');
									type = getType(mime);
								}
								if (q = ifm.data('quality')) {
									type += ':' + (q / 100);
								}
								wnd.postMessage('app.activeDocument.saveToOE("' + type + '")', orig);
								return dfdGet;
							}
						};
					};
				}

				ifm.parent().css('padding', 0);
				type = getType(file.mime);
				liveMsg = editor.liveMsg = new confObj.liveMsg(ifm, spnr, file);
				jQuery(window).on('message.' + fm.namespace, liveMsg.receive);
				liveMsg.load().done(function() {
					var d = JSON.stringify({
						files : [],
						environment : {
							lang: fm.lang.replace(/_/g, '-'),
							customIO: {"save": "app.echoToOE(\"Save\");"}
						}
					});
					ifm.attr('src', orig + '/#' + encodeURI(d));
				}).fail(function(err) {
					err && fm.error(err);
					editor.initFail = true;
				});

				// jpeg quality controls
				if (file.mime === 'image/jpeg' || file.mime === 'image/webp') {
					ifm.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality'));
					quty = jQuery('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>')
						.attr('min', '1')
						.attr('max', '100')
						.attr('title', '1 - 100')
						.on('change', function() {
							var q = quty.val();
							ifm.data('quality', q);
						})
						.val(ifm.data('quality'));
					jQuery('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>')
						.append(
							jQuery('<span>').html(fm.i18n('quality') + ' : '), quty, jQuery('<span></span>')
						)
						.prependTo(ifm.parent().next());
				}
			},
			load : function(base) {
				var dfd = jQuery.Deferred(),
					self = this,
					fm = this.fm,
					$base = jQuery(base);
				if (self.initFail) {
					dfd.reject();
				} else {
					$base.on('contentsloaded', function() {
						dfd.resolve(self.liveMsg);
					});
				}
				return dfd;
			},
			getContent : function() {
				return this.editor.liveMsg? this.editor.liveMsg.getContent() : void(0);
			},
			save : function(base, liveMsg) {
				var $base = jQuery(base),
					quality = $base.data('quality'),
					hash = $base.data('hash'),
					file;
				if (typeof quality !== 'undefined') {
					this.fm.storage('jpgQuality', quality);
				}
				if (hash) {
					file = this.fm.file(hash);
					$base.data('mime', file.mime);
				} else {
					$base.removeData('mime');
				}
			},
			// On dialog closed
			close : function(base, liveMsg) {
				jQuery(base).attr('src', '');
				liveMsg && jQuery(window).off('message.' + this.fm.namespace, liveMsg.receive);
			}
		},
		{
			// Pixo is cross-platform image editor
			info : {
				id : 'pixo',
				name : 'Pixo Editor',
				iconImg : 'img/editor-icons.png 0 -208',
				dataScheme: true,
				schemeContent: true,
				single: true,
				canMakeEmpty: false,
				integrate: {
					title: 'Pixo Editor',
					link: 'https://pixoeditor.com/privacy-policy/'
				}
			},
			// MIME types to accept
			mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
			// HTML of this editor
			html : '<div class="elfinder-edit-imageeditor"><img/></div>',
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE8 || !opts.extraOptions || !opts.extraOptions.pixo || !opts.extraOptions.pixo.apikey) {
					this.disabled = true;
				} else {
					this.editorOpts = opts.extraOptions.pixo;
				}
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, content, fm) {
				initImgTag.call(this, id, file, content, fm);
			},
			// Get data uri scheme (this: this editors HTML node)
			getContent : function() {
				return jQuery(this).children('img:first').attr('src');
			},
			// Launch Pixo editor when dialog open
			load : function(base) {
				var self = this,
					fm = this.fm,
					$base = jQuery(base),
					node = $base.children('img:first'),
					dialog = $base.closest('.ui-dialog'),
					elfNode = fm.getUI(),
					dfrd = jQuery.Deferred(),
					container = jQuery('#elfinder-pixo-container'),
					init = function(onload) {
						var opts;
							
						if (!container.length) {
							container = jQuery('<div id="elfinder-pixo-container" class="ui-front"></div>').css({
								position: 'fixed',
								top: 0,
								right: 0,
								width: '100%',
								height: jQuery(window).height(),
								overflow: 'hidden'
							}).hide().appendTo(elfNode.hasClass('elfinder-fullscreen')? elfNode : 'body');
							// bind switch fullscreen event
							elfNode.on('resize.'+fm.namespace, function(e, data) {
								e.preventDefault();
								e.stopPropagation();
								data && data.fullscreen && container.appendTo(data.fullscreen === 'on'? elfNode : 'body');
							});
							fm.bind('destroy', function() {
								editor && editor.cancelEditing();
								container.remove();
							});
						} else {
							// always moves to last
							container.appendTo(container.parent());
						}
						node.on('click', launch);
						// Constructor options
						opts = Object.assign({
							type: 'child',
							parent: container.get(0),
							output: {format: 'png'},
							onSave: function(arg) {
								// Check current file.hash, all callbacks are called on multiple instances
								var mime = arg.toBlob().type,
									ext = getExtention(mime, fm),
									draw = function(url) {
										node.one('load error', function() {
												node.data('loading') && node.data('loading')(true);
											})
											.attr('crossorigin', 'anonymous')
											.attr('src', url);
									},
									url = arg.toDataURL();
								node.data('loading')();
								delete base._canvas;
								if (node.data('ext') !== ext) {
									changeImageType(url, self.file.mime).done(function(res, cv) {
										if (cv) {
											base._canvas = canvas = cv;
											quty.trigger('change');
											qBase && qBase.show();
										}
										draw(res);
									}).fail(function() {
										dialog.trigger('changeType', {
											extention: ext,
											mime : mime
										});
										draw(url);
									});
								} else {
									draw(url);
								}
							},
							onClose: function() {
								dialog.removeClass(fm.res('class', 'preventback'));
								fm.toggleMaximize(container, false);
								container.hide();
								fm.toFront(dialog);
							}
						}, self.confObj.editorOpts);
						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: base,
							editorObj: Pixo,
							instance: void(0),
							opts: opts
						});
						// make editor instance
						editor = new Pixo.Bridge(opts);
						dfrd.resolve(editor);
						$base.on('saveAsFail', launch);
						if (onload) {
							onload();
						}
					},
					launch = function() {
						dialog.addClass(fm.res('class', 'preventback'));
						fm.toggleMaximize(container, true);
						fm.toFront(container);
						container.show().data('curhash', self.file.hash);
						editor.edit(node.get(0));
						node.data('loading')(true);
					},
					qBase, quty, qutyTm, canvas, editor;

				node.data('loading')();

				// jpeg quality controls
				if (self.file.mime === 'image/jpeg') {
					quty = jQuery('<input type="number" class="ui-corner-all elfinder-resize-quality elfinder-tabstop"/>')
						.attr('min', '1')
						.attr('max', '100')
						.attr('title', '1 - 100')
						.on('change', function() {
							var q = quty.val();
							qutyTm && cancelAnimationFrame(qutyTm);
							qutyTm = requestAnimationFrame(function() {
								if (canvas) {
									canvas.toBlob(function(blob) {
										blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')');
									}, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100);
								}
							});
						})
						.val(fm.storage('jpgQuality') || fm.option('jpgQuality'));
					qBase = jQuery('<div class="ui-dialog-buttonset elfinder-edit-extras elfinder-edit-extras-quality"></div>')
						.hide()
						.append(
							jQuery('<span>').html(fm.i18n('quality') + ' : '), quty, jQuery('<span></span>')
						)
						.prependTo($base.parent().next());
					$base.data('quty', quty);
				}

				// load script then init
				if (typeof Pixo === 'undefined') {
					fm.loadScript(['https://pixoeditor.com:8443/editor/scripts/bridge.m.js'], function() {
						init(launch);
					}, {loadType: 'tag'});
				} else {
					init();
					launch();
				}
				return dfrd;
			},
			// Convert content url to data uri scheme to save content
			save : function(base) {
				var self = this,
					$base = jQuery(base),
					node = $base.children('img:first'),
					q;
				if (base._canvas) {
					if ($base.data('quty')) {
						q = $base.data('quty').val();
						q && this.fm.storage('jpgQuality', q);
					}
					node.attr('src', base._canvas.toDataURL(self.file.mime, q? Math.max(Math.min(q, 100), 1) / 100 : void(0)));
				} else if (node.attr('src').substr(0, 5) !== 'data:') {
					node.attr('src', imgBase64(node, this.file.mime));
				}
			},
			close : function(base, editor) {
				editor && editor.destroy();
			}
		},
		{
			// ACE Editor
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE8 || !fm.options.cdns.ace) {
					this.disabled = true;
				}
			},
			// `mimes` is not set for support everything kind of text file
			info : {
				id : 'aceeditor',
				name : 'ACE Editor',
				iconImg : 'img/editor-icons.png 0 -96'
			},
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					dfrd = jQuery.Deferred(),
					cdn  = fm.options.cdns.ace,
					start = function() {
						var editor, editorBase, mode,
						ta = jQuery(textarea),
						taBase = ta.parent(),
						dialog = taBase.parent(),
						id = textarea.id + '_ace',
						ext = self.file.name.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(),
						// MIME/mode map
						mimeMode = {
							'text/x-php'			  : 'php',
							'application/x-php'		  : 'php',
							'text/html'				  : 'html',
							'application/xhtml+xml'	  : 'html',
							'text/javascript'		  : 'javascript',
							'application/javascript'  : 'javascript',
							'text/css'				  : 'css',
							'text/x-c'				  : 'c_cpp',
							'text/x-csrc'			  : 'c_cpp',
							'text/x-chdr'			  : 'c_cpp',
							'text/x-c++'			  : 'c_cpp',
							'text/x-c++src'			  : 'c_cpp',
							'text/x-c++hdr'			  : 'c_cpp',
							'text/x-shellscript'	  : 'sh',
							'application/x-csh'		  : 'sh',
							'text/x-python'			  : 'python',
							'text/x-java'			  : 'java',
							'text/x-java-source'	  : 'java',
							'text/x-ruby'			  : 'ruby',
							'text/x-perl'			  : 'perl',
							'application/x-perl'	  : 'perl',
							'text/x-sql'			  : 'sql',
							'text/xml'				  : 'xml',
							'application/docbook+xml' : 'xml',
							'application/xml'		  : 'xml'
						};

						// set base height
						taBase.height(taBase.height());

						// set basePath of ace
						ace.config.set('basePath', cdn);

						// Base node of Ace editor
						editorBase = jQuery('<div id="'+id+'" style="width:100%; height:100%;"></div>').text(ta.val()).insertBefore(ta.hide());

						// Editor flag
						ta.data('ace', true);

						// Aceeditor instance
						editor = ace.edit(id);

						// Ace editor configure
						editor.$blockScrolling = Infinity;
						editor.setOptions({
							theme: 'ace/theme/monokai',
							fontSize: '14px',
							wrap: true,
						});
						ace.config.loadModule('ace/ext/modelist', function() {
							// detect mode
							mode = ace.require('ace/ext/modelist').getModeForPath('/' + self.file.name).name;
							if (mode === 'text') {
								if (mimeMode[self.file.mime]) {
									mode = mimeMode[self.file.mime];
								}
							}
							// show MIME:mode in title bar
							taBase.prev().children('.elfinder-dialog-title').append(' (' + self.file.mime + ' : ' + mode.split(/[\/\\]/).pop() + ')');
							editor.setOptions({
								mode: 'ace/mode/' + mode
							});
							if (dfrd.state() === 'resolved') {
								dialog.trigger('resize');
							}
						});
						ace.config.loadModule('ace/ext/language_tools', function() {
							ace.require('ace/ext/language_tools');
							editor.setOptions({
								enableBasicAutocompletion: true,
								enableSnippets: true,
								enableLiveAutocompletion: false
							});
						});
						ace.config.loadModule('ace/ext/settings_menu', function() {
							ace.require('ace/ext/settings_menu').init(editor);
						});
						
						// Short cuts
						editor.commands.addCommand({
							name : "saveFile",
							bindKey: {
								win : 'Ctrl-s',
								mac : 'Command-s'
							},
							exec: function(editor) {
								self.doSave();
							}
						});
						editor.commands.addCommand({
							name : "closeEditor",
							bindKey: {
								win : 'Ctrl-w|Ctrl-q',
								mac : 'Command-w|Command-q'
							},
							exec: function(editor) {
								self.doCancel();
							}
						});

						editor.resize();

						// TextArea button and Setting button
						jQuery('<div class="ui-dialog-buttonset"></div>').css('float', 'left')
						.append(
							jQuery('<button></button>').html(self.fm.i18n('TextArea'))
							.button()
							.on('click', function(){
								if (ta.data('ace')) {
									ta.removeData('ace');
									editorBase.hide();
									ta.val(editor.session.getValue()).show().trigger('focus');
									jQuery(this).text('AceEditor');
								} else {
									ta.data('ace', true);
									editorBase.show();
									editor.setValue(ta.hide().val(), -1);
									editor.focus();
									jQuery(this).html(self.fm.i18n('TextArea'));
								}
							})
						)
						.append(
							jQuery('<button>Ace editor setting</button>')
							.button({
								icons: {
									primary: 'ui-icon-gear',
									secondary: 'ui-icon-triangle-1-e'
								},
								text: false
							})
							.on('click', function(){
								editor.showSettingsMenu();
								jQuery('#ace_settingsmenu')
									.css('font-size', '80%')
									.find('div[contains="setOptions"]').hide().end()
									.parent().appendTo(jQuery('#elfinder'));
							})
						)
						.prependTo(taBase.next());

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: ace,
							instance: editor,
							opts: {}
						});
						
						//dialog.trigger('resize');
						dfrd.resolve(editor);
					};

				// check ace & start
				if (!self.confObj.loader) {
					self.confObj.loader = jQuery.Deferred();
					self.fm.loadScript([ cdn+'/ace.js' ], function() {
						self.confObj.loader.resolve();
					}, void 0, {obj: window, name: 'ace'});
				}
				self.confObj.loader.done(start);

				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.destroy();
			},
			save : function(textarea, instance) {
				instance && jQuery(textarea).data('ace') && (textarea.value = instance.session.getValue());
			},
			focus : function(textarea, instance) {
				instance && jQuery(textarea).data('ace') && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				instance && instance.resize();
			}
		},
		{
			// CodeMirror
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE10 || !fm.options.cdns.codemirror) {
					this.disabled = true;
				}
			},
			// `mimes` is not set for support everything kind of text file
			info : {
				id : 'codemirror',
				name : 'CodeMirror',
				iconImg : 'img/editor-icons.png 0 -176'
			},
			load : function(textarea) {
				var fm = this.fm,
					cmUrl = fm.convAbsUrl(fm.options.cdns.codemirror),
					dfrd = jQuery.Deferred(),
					self = this,
					start = function(CodeMirror) {
						var ta   = jQuery(textarea),
							base = ta.parent(),
							editor, editorBase, opts;
						
						// set base height
						base.height(base.height());
						
						// CodeMirror configure options
						opts = {
							lineNumbers: true,
							lineWrapping: true,
							extraKeys : {
								'Ctrl-S': function() { self.doSave(); },
								'Ctrl-Q': function() { self.doCancel(); },
								'Ctrl-W': function() { self.doCancel(); }
							}
						};

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: CodeMirror,
							instance: void(0),
							opts: opts
						});

						// CodeMirror configure
						editor = CodeMirror.fromTextArea(textarea, opts);
						
						// return editor instance
						dfrd.resolve(editor);
						
						// Auto mode set
						var info, m, mode, spec;
						if (! info) {
							info = CodeMirror.findModeByMIME(self.file.mime);
						}
						if (! info && (m = self.file.name.match(/.+\.([^.]+)$/))) {
							info = CodeMirror.findModeByExtension(m[1]);
						}
						if (info) {
							CodeMirror.modeURL = useRequire? 'codemirror/mode/%N/%N.min' : cmUrl + '/mode/%N/%N.min.js';
							mode = info.mode;
							spec = info.mime;
							editor.setOption('mode', spec);
							CodeMirror.autoLoadMode(editor, mode);
							// show MIME:mode in title bar
							base.prev().children('.elfinder-dialog-title').append(' (' + spec + (mode != 'null'? ' : ' + mode : '') + ')');
						}
						
						// editor base node
						editorBase = jQuery(editor.getWrapperElement()).css({
							// fix CSS conflict to SimpleMDE
							padding: 0,
							border: 'none'
						});
						ta.data('cm', true);
						
						// fit height to base
						editorBase.height('100%');
						
						// TextArea button and Setting button
						jQuery('<div class="ui-dialog-buttonset"></div>').css('float', 'left')
						.append(
							jQuery('<button></button>').html(self.fm.i18n('TextArea'))
							.button()
							.on('click', function(){
								if (ta.data('cm')) {
									ta.removeData('cm');
									editorBase.hide();
									ta.val(editor.getValue()).show().trigger('focus');
									jQuery(this).text('CodeMirror');
								} else {
									ta.data('cm', true);
									editorBase.show();
									editor.setValue(ta.hide().val());
									editor.refresh();
									editor.focus();
									jQuery(this).html(self.fm.i18n('TextArea'));
								}
							})
						)
						.prependTo(base.next());
					};
				// load script then start
				if (!self.confObj.loader) {
					self.confObj.loader = jQuery.Deferred();
					if (useRequire) {
						require.config({
							packages: [{
								name: 'codemirror',
								location: cmUrl,
								main: 'codemirror.min'
							}],
							map: {
								'codemirror': {
									'codemirror/lib/codemirror': 'codemirror'
								}
							}
						});
						require([
							'codemirror',
							'codemirror/addon/mode/loadmode.min',
							'codemirror/mode/meta.min'
						], function(CodeMirror) {
							self.confObj.loader.resolve(CodeMirror);
						});
					} else {
						self.fm.loadScript([
							cmUrl + '/codemirror.min.js'
						], function() {
							self.fm.loadScript([
								cmUrl + '/addon/mode/loadmode.min.js',
								cmUrl + '/mode/meta.min.js'
							], function() {
								self.confObj.loader.resolve(CodeMirror);
							});
						}, {loadType: 'tag'});
					}
					self.fm.loadCss(cmUrl + '/codemirror.css');
				}
				self.confObj.loader.done(start);
				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.toTextArea();
			},
			save : function(textarea, instance) {
				instance && jQuery(textarea).data('cm') && (textarea.value = instance.getValue());
			},
			focus : function(textarea, instance) {
				instance && jQuery(textarea).data('cm') && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				instance && instance.refresh();
			}
		},
		{
			// SimpleMDE
			// called on initialization of elFinder cmd edit (this: this editor's config object)
			setup : function(opts, fm) {
				if (fm.UA.ltIE10 || !fm.options.cdns.simplemde) {
					this.disabled = true;
				}
			},
			info : {
				id : 'simplemde',
				name : 'SimpleMDE',
				iconImg : 'img/editor-icons.png 0 -80'
			},
			exts  : ['md'],
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					base = jQuery(textarea).parent(),
					dfrd = jQuery.Deferred(),
					cdn  = fm.options.cdns.simplemde,
					start = function(SimpleMDE) {
						var h	 = base.height(),
							delta = base.outerHeight(true) - h + 14,
							editor, editorBase, opts;
						
						// fit height function
						textarea._setHeight = function(height) {
							var h	= height || base.height(),
								ctrH = 0,
								areaH;
							base.children('.editor-toolbar,.editor-statusbar').each(function() {
								ctrH += jQuery(this).outerHeight(true);
							});
							areaH = h - ctrH - delta;
							editorBase.height(areaH);
							editor.codemirror.refresh();
							return areaH;
						};
						
						// set base height
						base.height(h);
						
						opts = {
							element: textarea,
							autofocus: true
						};

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: SimpleMDE,
							instance: void(0),
							opts: opts
						});

						// make editor
						editor = new SimpleMDE(opts);
						dfrd.resolve(editor);
						
						// editor base node
						editorBase = jQuery(editor.codemirror.getWrapperElement());
						
						// fit height to base
						editorBase.css('min-height', '50px')
							.children('.CodeMirror-scroll').css('min-height', '50px');
						textarea._setHeight(h);
					};

				// check SimpleMDE & start
				if (!self.confObj.loader) {
					self.confObj.loader = jQuery.Deferred();
					self.fm.loadCss(cdn+'/simplemde.min.css');
					if (useRequire) {
						require([
							cdn+'/simplemde.min.js'
						], function(SimpleMDE) {
							self.confObj.loader.resolve(SimpleMDE);
						});
					} else {
						self.fm.loadScript([cdn+'/simplemde.min.js'], function() {
							self.confObj.loader.resolve(SimpleMDE);
						}, {loadType: 'tag'});
					}
				}
				self.confObj.loader.done(start);

				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.toTextArea();
				instance = null;
			},
			save : function(textarea, instance) {
				instance && (textarea.value = instance.value());
			},
			focus : function(textarea, instance) {
				instance && instance.codemirror.focus();
			},
			resize : function(textarea, instance, e, data) {
				instance && textarea._setHeight();
			}
		},
		{
			// CKEditor for html file
			info : {
				id : 'ckeditor',
				name : 'CKEditor',
				iconImg : 'img/editor-icons.png 0 0'
			},
			exts  : ['htm', 'html', 'xhtml'],
			setup : function(opts, fm) {
				var confObj = this;
				if (!fm.options.cdns.ckeditor) {
					confObj.disabled = true;
				} else {
					confObj.ckeOpts = {};
					if (opts.extraOptions) {
						confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor || {});
						if (opts.extraOptions.managerUrl) {
							confObj.managerUrl = opts.extraOptions.managerUrl;
						}
					}
				}
			},
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					dfrd = jQuery.Deferred(),
					init = function() {
						var base = jQuery(textarea).parent(),
							dlg = base.closest('.elfinder-dialog'),
							h = base.height(),
							reg = /([&?]getfile=)[^&]+/,
							loc = self.confObj.managerUrl || window.location.href.replace(/#.*$/, ''),
							name = 'ckeditor',
							opts;
						
						// make manager location
						if (reg.test(loc)) {
							loc = loc.replace(reg, '$1' + name);
						} else {
							loc += '?getfile=' + name;
						}
						// set base height
						base.height(h);

						// CKEditor configure options
						opts = {
							startupFocus : true,
							fullPage: true,
							allowedContent: true,
							filebrowserBrowseUrl : loc,
							toolbarCanCollapse: true,
							toolbarStartupExpanded: !fm.UA.Mobile,
							removePlugins: 'resize',
							extraPlugins: 'colorbutton,justify,docprops',
							on: {
								'instanceReady' : function(e) {
									var editor = e.editor;
									editor.resize('100%', h);
									// re-build on dom move
									dlg.one('beforedommove.'+fm.namespace, function() {
										editor.destroy();
									}).one('dommove.'+fm.namespace, function() {
										self.load(textarea).done(function(editor) {
											self.instance = editor;
										});
									});
									// return editor instance
									dfrd.resolve(e.editor);
								}
							}
						};

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: CKEDITOR,
							instance: void(0),
							opts: opts
						});

						// CKEditor configure
						CKEDITOR.replace(textarea.id, Object.assign(opts, self.confObj.ckeOpts));
						CKEDITOR.on('dialogDefinition', function(e) {
							var dlg = e.data.definition.dialog;
							dlg.on('show', function(e) {
								fm.getUI().append(jQuery('.cke_dialog_background_cover')).append(this.getElement().$);
							});
							dlg.on('hide', function(e) {
								jQuery('body:first').append(jQuery('.cke_dialog_background_cover')).append(this.getElement().$);
							});
						});
					};

				if (!self.confObj.loader) {
					self.confObj.loader = jQuery.Deferred();
					window.CKEDITOR_BASEPATH = fm.options.cdns.ckeditor + '/';
					jQuery.getScript(fm.options.cdns.ckeditor + '/ckeditor.js', function() {
						self.confObj.loader.resolve();
					});
				}
				self.confObj.loader.done(init);
				return dfrd;
			},
			close : function(textarea, instance) {
				instance && instance.destroy();
			},
			save : function(textarea, instance) {
				instance && (textarea.value = instance.getData());
			},
			focus : function(textarea, instance) {
				instance && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				var self;
				if (instance) {
					if (instance.status === 'ready') {
						instance.resize('100%', jQuery(textarea).parent().height());
					}
				}
			}
		},
		{
			// CKEditor5 balloon mode for html file
			info : {
				id : 'ckeditor5',
				name : 'CKEditor5',
				iconImg : 'img/editor-icons.png 0 -16'
			},
			exts : ['htm', 'html', 'xhtml'],
			html : '<div class="edit-editor-ckeditor5"></div>',
			setup : function(opts, fm) {
				var confObj = this;
				// check cdn and ES6 support
				if (!fm.options.cdns.ckeditor5 || typeof window.Symbol !== 'function' || typeof Symbol() !== 'symbol') {
					confObj.disabled = true;
				} else {
					confObj.ckeOpts = {};
					if (opts.extraOptions) {
						// @deprecated option extraOptions.ckeditor5Mode
						if (opts.extraOptions.ckeditor5Mode) {
							confObj.ckeditor5Mode = opts.extraOptions.ckeditor5Mode;
						}
						confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor5 || {});
						if (confObj.ckeOpts.mode) {
							confObj.ckeditor5Mode = confObj.ckeOpts.mode;
							delete confObj.ckeOpts.mode;
						}
						if (opts.extraOptions.managerUrl) {
							confObj.managerUrl = opts.extraOptions.managerUrl;
						}
					}
				}
				fm.bind('destroy', function() {
					confObj.editor = null;
				});
			},
			// Prepare on before show dialog
			prepare : function(base, dialogOpts, file) {
				jQuery(base).height(base.editor.fm.getUI().height() - 100);
			},
			init : function(id, file, data, fm) {
				var m = data.match(/^([\s\S]*<body[^>]*>)([\s\S]+)(<\/body>[\s\S]*)$/i),
					header = '',
					body = '',
					footer ='';
				this.css({
					width: '100%',
					height: '100%',
					'box-sizing': 'border-box'
				});
				if (m) {
					header = m[1];
					body = m[2];
					footer = m[3];
				} else {
					body = data;
				}
				this.data('data', {
					header: header,
					body: body,
					footer: footer
				});
				this._setupSelEncoding(data);
			},
			load : function(editnode) {
				var self = this,
					fm   = this.fm,
					dfrd = jQuery.Deferred(),
					mode = self.confObj.ckeditor5Mode || 'decoupled-document',
					lang = (function() {
						var l = fm.lang.toLowerCase().replace('_', '-');
						if (l.substr(0, 2) === 'zh' && l !== 'zh-cn') {
							l = 'zh';
						}
						return l;
					})(),
					init = function(cEditor) {
						var base = jQuery(editnode).parent(),
							opts;
						
						// set base height
						base.height(fm.getUI().height() - 100);

						// CKEditor5 configure options
						opts = Object.assign({
							toolbar: ["heading", "|", "fontSize", "fontFamily", "|", "bold", "italic", "underline", "strikethrough", "highlight", "|", "alignment", "|", "numberedList", "bulletedList", "blockQuote", "indent", "outdent", "|", "ckfinder", "link", "imageUpload", "insertTable", "mediaEmbed", "|", "undo", "redo"],
							language: lang
						}, self.confObj.ckeOpts);

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: editnode,
							editorObj: cEditor,
							instance: void(0),
							opts: opts
						});

						cEditor
							.create(editnode, opts)
							.then(function(editor) {
								var ckf = editor.commands.get('ckfinder'),
									fileRepo = editor.plugins.get('FileRepository'),
									prevVars = {}, isImage, insertImages;
								if (editor.ui.view.toolbar && (mode === 'classic' || mode === 'decoupled-document')) {
									jQuery(editnode).closest('.elfinder-dialog').children('.ui-widget-header').append(jQuery(editor.ui.view.toolbar.element).css({marginRight:'-1em',marginLeft:'-1em'}));
								}
								if (mode === 'classic') {
									jQuery(editnode).closest('.elfinder-edit-editor').css('overflow', 'auto');
								}
								// Set up this elFinder instead of CKFinder
								if (ckf) {
									isImage = function(f) {
										return f && f.mime.match(/^image\//i);
									};
									insertImages = function(urls) {
										var imgCmd = editor.commands.get('imageUpload');
										if (!imgCmd.isEnabled) {
											var ntf = editor.plugins.get('Notification'),
												i18 = editor.locale.t;
											ntf.showWarning(i18('Could not insert image at the current position.'), {
												title: i18('Inserting image failed'),
												namespace: 'ckfinder'
											});
											return;
										}
										editor.execute('imageInsert', { source: urls });
									};
									// Take over ckfinder execute()
									ckf.execute = function() {
										var dlg = base.closest('.elfinder-dialog'),
											gf = fm.getCommand('getfile'),
											rever = function() {
												if (prevVars.hasVar) {
													dlg.off('resize close', rever);
													gf.callback = prevVars.callback;
													gf.options.folders = prevVars.folders;
													gf.options.multiple = prevVars.multi;
													fm.commandMap.open = prevVars.open;
													prevVars.hasVar = false;
												}
											};
										dlg.trigger('togleminimize').one('resize close', rever);
										prevVars.callback = gf.callback;
										prevVars.folders = gf.options.folders;
										prevVars.multi = gf.options.multiple;
										prevVars.open = fm.commandMap.open;
										prevVars.hasVar = true;
										gf.callback = function(files) {
											var imgs = [];
											if (files.length === 1 && files[0].mime === 'directory') {
												fm.one('open', function() {
													fm.commandMap.open = 'getfile';
												}).getCommand('open').exec(files[0].hash);
												return;
											}
											fm.getUI('cwd').trigger('unselectall');
											jQuery.each(files, function(i, f) {
												if (isImage(f)) {
													imgs.push(fm.convAbsUrl(f.url));
												} else {
													editor.execute('link', fm.convAbsUrl(f.url));
												}
											});
											if (imgs.length) {
												insertImages(imgs);
											}
											dlg.trigger('togleminimize');
										};
										gf.options.folders = true;
										gf.options.multiple = true;
										fm.commandMap.open = 'getfile';
										fm.toast({
											mode: 'info',
											msg: fm.i18n('dblclickToSelect')
										});
									};
								}
								// Set up image uploader
								fileRepo.createUploadAdapter = function(loader) {
									return new uploder(loader);
								};
								editor.setData(jQuery(editnode).data('data').body);
								// move .ck-body to elFinder node for fullscreen mode
								fm.getUI().append(jQuery('body > div.ck-body'));
								jQuery('div.ck-balloon-panel').css({
									'z-index': fm.getMaximizeCss().zIndex + 1
								});
								dfrd.resolve(editor);
								/*fm.log({
									defaultConfig: cEditor.defaultConfig,
									plugins: cEditor.builtinPlugins.map(function(p) { return p.pluginName; }),
									toolbars: Array.from(editor.ui.componentFactory.names())
								});*/
							})
							['catch'](function(error) { // ['cache'] instead .cache for fix error on ie8 
								fm.error(error);
							});
					},
					uploder = function(loader) {
						var upload = function(file, resolve, reject) {
							fm.exec('upload', {files: [file]}, void(0), fm.cwd().hash)
								.done(function(data){
									if (data.added && data.added.length) {
										fm.url(data.added[0].hash, { async: true }).done(function(url) {
											resolve({
												'default': fm.convAbsUrl(url)
											});
										}).fail(function() {
											reject('errFileNotFound');
										});
									} else {
										reject(fm.i18n(data.error? data.error : 'errUpload'));
									}
								})
								.fail(function(err) {
									var error = fm.parseError(err);
									reject(fm.i18n(error? (error === 'userabort'? 'errAbort' : error) : 'errUploadNoFiles'));
								})
								.progress(function(data) {
									loader.uploadTotal = data.total;
									loader.uploaded = data.progress;
								});
						};
						this.upload = function() {
							return new Promise(function(resolve, reject) {
								if (loader.file instanceof Promise || (loader.file && typeof loader.file.then === 'function')) {
									loader.file.then(function(file) {
										upload(file, resolve, reject);
									});
								} else {
									upload(loader.file, resolve, reject);
								}
							});
						};
						this.abort = function() {
							fm.getUI().trigger('uploadabort');
						};
					}, loader;

				if (!self.confObj.editor) {
					loader = jQuery.Deferred();
					self.fm.loadScript([
						fm.options.cdns.ckeditor5 + '/' + mode + '/ckeditor.js'
					], function(editor) {
						if (!editor) {
							editor = window.BalloonEditor || window.InlineEditor || window.ClassicEditor || window.DecoupledEditor;
						}
						if (fm.lang !== 'en') {
							self.fm.loadScript([
								fm.options.cdns.ckeditor5 + '/' + mode + '/translations/' + lang + '.js'
							], function(obj) {
								loader.resolve(editor);
							}, {
								tryRequire: true,
								loadType: 'tag',
								error: function(obj) {
									lang = 'en';
									loader.resolve(editor);
								}
							});
						} else {
							loader.resolve(editor);
						}
					}, {
						tryRequire: true,
						loadType: 'tag'
					});
					loader.done(function(editor) {
						self.confObj.editor = editor;
						init(editor);
					});
				} else {
					init(self.confObj.editor);
				}
				return dfrd;
			},
			getContent : function() {
				var data = jQuery(this).data('data');
				return data.header + data.body + data.footer;
			},
			close : function(editnode, instance) {
				instance && instance.destroy();
			},
			save : function(editnode, instance) {
				var elm = jQuery(editnode),
					data = elm.data('data');
				if (instance) {
					data.body = instance.getData();
					elm.data('data', data);
				}
			},
			focus : function(editnode, instance) {
				jQuery(editnode).trigger('focus');
			}
		},
		{
			// TinyMCE for html file
			info : {
				id : 'tinymce',
				name : 'TinyMCE',
				iconImg : 'img/editor-icons.png 0 -64'
			},
			exts  : ['htm', 'html', 'xhtml'],
			setup : function(opts, fm) {
				var confObj = this;
				if (!fm.options.cdns.tinymce) {
					confObj.disabled = true;
				} else {
					confObj.mceOpts = {};
					if (opts.extraOptions) {
						confObj.uploadOpts = Object.assign({}, opts.extraOptions.uploadOpts || {});
						confObj.mceOpts = Object.assign({}, opts.extraOptions.tinymce || {});
					} else {
						confObj.uploadOpts = {};
					}
				}
			},
			load : function(textarea) {
				var self = this,
					fm   = this.fm,
					dfrd = jQuery.Deferred(),
					init = function() {
						var base = jQuery(textarea).show().parent(),
							dlg = base.closest('.elfinder-dialog'),
							h = base.height(),
							delta = base.outerHeight(true) - h,
							// hide MCE dialog and modal block
							hideMceDlg = function() {
								var mceW;
								if (tinymce.activeEditor.windowManager.windows) {
									mceW = tinymce.activeEditor.windowManager.windows[0];
									mceDlg = jQuery(mceW? mceW.getEl() : void(0)).hide();
									mceCv = jQuery('#mce-modal-block').hide();
								} else {
									mceDlg = jQuery('.tox-dialog-wrap').hide();
								}
							},
							// Show MCE dialog and modal block
							showMceDlg = function() {
								mceCv && mceCv.show();
								mceDlg && mceDlg.show();
							},
							tVer = tinymce.majorVersion,
							opts, mceDlg, mceCv;

						// set base height
						base.height(h);
						// fit height function
						textarea._setHeight = function(height) {
							if (tVer < 5) {
								var base = jQuery(this).parent(),
									h = height || base.innerHeight(),
									ctrH = 0,
									areaH;
								base.find('.mce-container-body:first').children('.mce-top-part,.mce-statusbar').each(function() {
									ctrH += jQuery(this).outerHeight(true);
								});
								areaH = h - ctrH - delta;
								base.find('.mce-edit-area iframe:first').height(areaH);
							}
						};

						// TinyMCE configure options
						opts = {
							selector: '#' + textarea.id,
							resize: false,
							plugins: 'print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern help',
							toolbar: 'formatselect | bold italic strikethrough forecolor backcolor | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat',
							image_advtab: true,
							init_instance_callback : function(editor) {
								// fit height on init
								textarea._setHeight(h);
								// re-build on dom move
								dlg.one('beforedommove.'+fm.namespace, function() {
									tinymce.execCommand('mceRemoveEditor', false, textarea.id);
								}).one('dommove.'+fm.namespace, function() {
									self.load(textarea).done(function(editor) {
										self.instance = editor;
									});
								});
								// return editor instance
								dfrd.resolve(editor);
							},
							file_picker_callback : function (callback, value, meta) {
								var gf = fm.getCommand('getfile'),
									revar = function() {
										if (prevVars.hasVar) {
											gf.callback = prevVars.callback;
											gf.options.folders = prevVars.folders;
											gf.options.multiple = prevVars.multi;
											fm.commandMap.open = prevVars.open;
											prevVars.hasVar = false;
										}
										dlg.off('resize close', revar);
										showMceDlg();
									},
									prevVars = {};
								prevVars.callback = gf.callback;
								prevVars.folders = gf.options.folders;
								prevVars.multi = gf.options.multiple;
								prevVars.open = fm.commandMap.open;
								prevVars.hasVar = true;
								gf.callback = function(file) {
									var url, info;

									if (file.mime === 'directory') {
										fm.one('open', function() {
											fm.commandMap.open = 'getfile';
										}).getCommand('open').exec(file.hash);
										return;
									}

									// URL normalization
									url = fm.convAbsUrl(file.url);
									
									// Make file info
									info = file.name + ' (' + fm.formatSize(file.size) + ')';

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

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

									// Provide alternative source and posted for the media dialog
									if (meta.filetype == 'media') {
										callback(url);
									}
									dlg.trigger('togleminimize');
								};
								gf.options.folders = true;
								gf.options.multiple = false;
								fm.commandMap.open = 'getfile';
								
								hideMceDlg();
								dlg.trigger('togleminimize').one('resize close', revar);
								fm.toast({
									mode: 'info',
									msg: fm.i18n('dblclickToSelect')
								});

								return false;
							},
							images_upload_handler : function (blobInfo, success, failure) {
								var file = blobInfo.blob(),
									err = function(e) {
										var dlg = e.data.dialog || {};
		                                if (dlg.hasClass('elfinder-dialog-error') || dlg.hasClass('elfinder-confirm-upload')) {
		                                    hideMceDlg();
		                                    dlg.trigger('togleminimize').one('resize close', revert);
		                                    fm.unbind('dialogopened', err);
		                                }
									},
									revert = function() {
										dlg.off('resize close', revert);
										showMceDlg();
									},
									clipdata = true;

								// check file object
								if (file.name) {
									// file blob of client side file object
									clipdata = void(0);
								}
								fm.bind('dialogopened', err).exec('upload', Object.assign({
									files: [file],
									clipdata: clipdata // to get unique name on connector
								}, self.confObj.uploadOpts), void(0), fm.cwd().hash).done(function(data) {
									if (data.added && data.added.length) {
										fm.url(data.added[0].hash, { async: true }).done(function(url) {
											showMceDlg();
											success(fm.convAbsUrl(url));
										}).fail(function() {
											failure(fm.i18n('errFileNotFound'));
										});
									} else {
										failure(fm.i18n(data.error? data.error : 'errUpload'));
									}
								}).fail(function(err) {
									var error = fm.parseError(err);
									if (error) {
										if (error === 'errUnknownCmd') {
											error = 'errPerm';
										} else if (error === 'userabort') {
											error = 'errAbort';
										}
									}
									failure(fm.i18n(error? error : 'errUploadNoFiles'));
								});
							}
						};

						// TinyMCE 5 supports "height: 100%"
						if (tVer >= 5) {
							opts.height = '100%';
						}

						// trigger event 'editEditorPrepare'
						self.trigger('Prepare', {
							node: textarea,
							editorObj: tinymce,
							instance: void(0),
							opts: opts
						});

						// TinyMCE configure
						tinymce.init(Object.assign(opts, self.confObj.mceOpts));
					};
				
				if (!self.confObj.loader) {
					self.confObj.loader = jQuery.Deferred();
					self.fm.loadScript([fm.options.cdns.tinymce + (fm.options.cdns.tinymce.match(/\.js/)? '' : '/tinymce.min.js')], function() {
						self.confObj.loader.resolve();
					}, {
						loadType: 'tag'
					});
				}
				self.confObj.loader.done(init);
				return dfrd;
			},
			close : function(textarea, instance) {
				instance && tinymce.execCommand('mceRemoveEditor', false, textarea.id);
			},
			save : function(textarea, instance) {
				instance && instance.save();
			},
			focus : function(textarea, instance) {
				instance && instance.focus();
			},
			resize : function(textarea, instance, e, data) {
				// fit height to base node on dialog resize
				instance && textarea._setHeight();
			}
		},
		{
			info : {
				id : 'zohoeditor',
				name : 'Zoho Editor',
				iconImg : 'img/editor-icons.png 0 -32',
				cmdCheck : 'ZohoOffice',
				preventGet: true,
				hideButtons: true,
				syncInterval : 15000,
				canMakeEmpty: true,
				integrate: {
					title: 'Zoho Office API',
					link: 'https://www.zoho.com/officeapi/'
				}
			},
			mimes : [
				'application/msword',
				'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
				//'application/pdf',
				'application/vnd.oasis.opendocument.text',
				'application/rtf',
				'text/html',
				'application/vnd.ms-excel',
				'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
				'application/vnd.oasis.opendocument.spreadsheet',
				'application/vnd.sun.xml.calc',
				'text/csv',
				'text/tab-separated-values',
				'application/vnd.ms-powerpoint',
				'application/vnd.openxmlformats-officedocument.presentationml.presentation',
				'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
				'application/vnd.oasis.opendocument.presentation',
				'application/vnd.sun.xml.impress'
			],
			html : '<iframe style="width:100%;max-height:100%;border:none;"></iframe>',
			// setup on elFinder bootup
			setup : function(opts, fm) {
				if (fm.UA.Mobile || fm.UA.ltIE8) {
					this.disabled = true;
				}
			},
			// Prepare on before show dialog
			prepare : function(base, dialogOpts, file) {
				var elfNode = base.editor.fm.getUI();
				jQuery(base).height(elfNode.height());
				dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8);
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, dum, fm) {
				var ta = this,
					ifm = jQuery(this).hide(),
					uiToast = fm.getUI('toast'),
					spnr = jQuery('<div class="elfinder-edit-spinner elfinder-edit-zohoeditor"></div>')
						.html('<span class="elfinder-spinner-text">' + fm.i18n('nowLoading') + '</span><span class="elfinder-spinner"></span>')
						.appendTo(ifm.parent()),
					cdata = function() {
						var data = '';
						jQuery.each(fm.customData, function(key, val) {
							data += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val);
						});
						return data;
					};
				
				jQuery(ta).data('xhr', fm.request({
					data: {
						cmd: 'editor',
						name: ta.editor.confObj.info.cmdCheck,
						method: 'init',
						'args[target]': file.hash,
						'args[lang]' : fm.lang,
						'args[cdata]' : cdata()
					},
					preventDefault : true
				}).done(function(data) {
					var opts;
					if (data.zohourl) {
						opts = {
							css: {
								height: '100%'
							}
						};
						// trigger event 'editEditorPrepare'
						ta.editor.trigger('Prepare', {
							node: ta,
							editorObj: void(0),
							instance: ifm,
							opts: opts
						});

						ifm.attr('src', data.zohourl).show().css(opts.css);
						if (data.warning) {
							uiToast.appendTo(ta.closest('.ui-dialog'));
							fm.toast({
								msg: fm.i18n(data.warning),
								mode: 'warning',
								timeOut: 0,
								onHidden: function() {
									uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
								},
								button: {
									text: 'btnYes'
								}
							});
						}
					} else {
						data.error && fm.error(data.error);
						ta.elfinderdialog('destroy');
					}
				}).fail(function(error) {
					error && fm.error(error);
					ta.elfinderdialog('destroy');
				}).always(function() {
					spnr.remove();
				}));
			},
			load : function() {},
			getContent : function() {},
			save : function() {},
			// Before dialog close
			beforeclose : iframeClose,
			// On dialog closed
			close : function(ta) {
				var fm = this.fm,
					xhr = jQuery(ta).data('xhr');
				if (xhr.state() === 'pending') {
					xhr.reject();
				}
			}
		},
		{
			// Zip Archive with FlySystem
			info : {
				id : 'ziparchive',
				name : 'btnMount',
				iconImg : 'img/toolbar.png 0 -416',
				cmdCheck : 'ZipArchive',
				edit : function(file, editor) {
					var fm = this,
						dfrd = jQuery.Deferred();
					fm.request({
						data:{
							cmd: 'netmount',
							protocol: 'ziparchive',
							host: file.hash,
							path: file.phash
						},
						preventFail: true,
						notify : {type : 'netmount', cnt : 1, hideCnt : true}
					}).done(function(data) {
						var pdir;
						if (data.added && data.added.length) {
							if (data.added[0].phash) {
								if (pdir = fm.file(data.added[0].phash)) {
									if (! pdir.dirs) {
										pdir.dirs = 1;
										fm.change({ changed: [ pdir ] });
									}
								}
							}
							fm.one('netmountdone', function() {
								fm.exec('open', data.added[0].hash);
								fm.one('opendone', function() {
									data.toast && fm.toast(data.toast);
								});
							});
						}
						dfrd.resolve();
					})
					.fail(function(error) {
						dfrd.reject(error);
					});
					return dfrd;
				}
			},
			mimes : ['application/zip'],
			load : function() {},
			save : function(){}
		},
		{
			// Simple Text (basic textarea editor)
			info : {
				id : 'textarea',
				name : 'TextArea',
				useTextAreaEvent : true
			},
			load : function(textarea) {
				// trigger event 'editEditorPrepare'
				this.trigger('Prepare', {
					node: textarea,
					editorObj: void(0),
					instance: void(0),
					opts: {}
				});
				textarea.setSelectionRange && textarea.setSelectionRange(0, 0);
				jQuery(textarea).trigger('focus').show();
			},
			save : function(){}
		},
		{
			// File converter with online-convert.com
			info : {
				id : 'onlineconvert',
				name : 'Online Convert',
				iconImg : 'img/editor-icons.png 0 -144',
				cmdCheck : 'OnlineConvert',
				preventGet: true,
				hideButtons: true,
				single: true,
				converter: true,
				canMakeEmpty: false,
				integrate: {
					title: 'ONLINE-CONVERT.COM',
					link: 'https://online-convert.com'
				}
			},
			mimes : ['*'],
			html : '<div style="width:100%;max-height:100%;"></div>',
			// setup on elFinder bootup
			setup : function(opts, fm) {
				var mOpts = opts.extraOptions.onlineConvert || {maxSize:100,showLink:true};
				if (mOpts.maxSize) {
					this.info.maxSize = mOpts.maxSize * 1048576;
				}
				this.set = Object.assign({
					url : 'https://%s.online-convert.com%s?external_url=',
					conv : {
						Archive: {'7Z':{}, 'BZ2':{ext:'bz'}, 'GZ':{}, 'ZIP':{}},
						Audio: {'MP3':{}, 'OGG':{ext:'oga'}, 'WAV':{}, 'WMA':{}, 'AAC':{}, 'AIFF':{ext:'aif'}, 'FLAC':{}, 'M4A':{}, 'MMF':{}, 'OPUS':{ext:'oga'}},
						Document: {'DOC':{}, 'DOCX':{}, 'HTML':{}, 'ODT':{}, 'PDF':{}, 'PPT':{}, 'PPTX':{}, 'RTF':{}, 'SWF':{}, 'TXT':{}},
						eBook: {'AZW3':{ext:'azw'}, 'ePub':{}, 'FB2':{ext:'xml'}, 'LIT':{}, 'LRF':{}, 'MOBI':{}, 'PDB':{}, 'PDF':{},'PDF-eBook':{ext:'pdf'}, 'TCR':{}},
						Hash: {'Adler32':{},  'Apache-htpasswd':{}, 'Blowfish':{}, 'CRC32':{}, 'CRC32B':{}, 'Gost':{}, 'Haval128':{},'MD4':{}, 'MD5':{}, 'RIPEMD128':{}, 'RIPEMD160':{}, 'SHA1':{}, 'SHA256':{}, 'SHA384':{}, 'SHA512':{}, 'Snefru':{}, 'Std-DES':{}, 'Tiger128':{}, 'Tiger128-calculator':{}, 'Tiger128-converter':{}, 'Tiger160':{}, 'Tiger192':{}, 'Whirlpool':{}},
						Image: {'BMP':{}, 'EPS':{ext:'ai'}, 'GIF':{}, 'EXR':{}, 'ICO':{}, 'JPG':{}, 'PNG':{}, 'SVG':{}, 'TGA':{}, 'TIFF':{ext:'tif'}, 'WBMP':{}, 'WebP':{}},
						Video: {'3G2':{}, '3GP':{}, 'AVI':{}, 'FLV':{}, 'HLS':{ext:'m3u8'}, 'MKV':{}, 'MOV':{}, 'MP4':{}, 'MPEG-1':{ext:'mpeg'}, 'MPEG-2':{ext:'mpeg'}, 'OGG':{ext:'ogv'}, 'OGV':{}, 'WebM':{}, 'WMV':{}, 'Android':{link:'/convert-video-for-%s',ext:'mp4'}, 'Blackberry':{link:'/convert-video-for-%s',ext:'mp4'}, 'DPG':{link:'/convert-video-for-%s',ext:'avi'}, 'iPad':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPhone':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPod':{link:'/convert-video-for-%s',ext:'mp4'}, 'Nintendo-3DS':{link:'/convert-video-for-%s',ext:'avi'}, 'Nintendo-DS':{link:'/convert-video-for-%s',ext:'avi'}, 'PS3':{link:'/convert-video-for-%s',ext:'mp4'}, 'Wii':{link:'/convert-video-for-%s',ext:'avi'}, 'Xbox':{link:'/convert-video-for-%s',ext:'wmv'}}
					},
					catExts : {
						Hash: 'txt'
					},
					link : '<div class="elfinder-edit-onlineconvert-link"><a href="https://www.online-convert.com" target="_blank"><span class="elfinder-button-icon"></span>ONLINE-CONVERT.COM</a></div>',
					useTabs : (jQuery.fn.tabs && !fm.UA.iOS)? true : false // Can't work on iOS, I don't know why.
				}, mOpts);
			},
			// Prepare on before show dialog
			prepare : function(base, dialogOpts, file) {
				var elfNode = base.editor.fm.getUI();
				jQuery(base).height(elfNode.height());
				dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8);
			},
			// Initialization of editing node (this: this editors HTML node)
			init : function(id, file, dum, fm) {
				var ta = this,
					confObj = ta.editor.confObj,
					set = confObj.set,
					uiToast = fm.getUI('toast'),
					idxs = {},
					allowZip = fm.uploadMimeCheck('application/zip', file.phash),
					selfUrl = jQuery('base').length? document.location.href.replace(/#.*$/, '') : '',
					getExt = function(cat, con) {
						var c;
						if (set.catExts[cat]) {
							return set.catExts[cat];
						}
						if (set.conv[cat] && (c = set.conv[cat][con])) {
							return (c.ext || con).toLowerCase();
						}
						return con.toLowerCase();
					},
					setOptions = function(cat, done) {
						var type, dfdInit, dfd;
						if (typeof confObj.api === 'undefined') {
							dfdInit = fm.request({
								data: {
									cmd: 'editor',
									name: 'OnlineConvert',
									method: 'init'
								},
								preventDefault : true
							});
						} else {
							dfdInit = jQuery.Deferred().resolve({api: confObj.api});
						}
						cat = cat.toLowerCase();
						dfdInit.done(function(data) {
							confObj.api = data.api;
							if (confObj.api) {
								if (cat) {
									type = '?category=' + cat;
								} else {
									type = '';
									cat = 'all';
								}
								if (!confObj.conversions) {
									confObj.conversions = {};
								}
								if (!confObj.conversions[cat]) {
									dfd = jQuery.getJSON('https://api2.online-convert.com/conversions' + type);
								} else {
									dfd = jQuery.Deferred().resolve(confObj.conversions[cat]);
								}
								dfd.done(function(d) {
									confObj.conversions[cat] = d;
									jQuery.each(d, function(i, o) {
										btns[set.useTabs? 'children' : 'find']('.onlineconvert-category-' + o.category).children('.onlineconvert-' + o.target).trigger('makeoption', o);
									});
									done && done();
								});
							}
						});
					},
					btns = (function() {
						var btns = jQuery('<div></div>').on('click', 'button', function() {
								var b = jQuery(this),
									opts = b.data('opts') || null,
									cat = b.closest('.onlineconvert-category').data('cname'),
									con = b.data('conv');
								if (confObj.api === true) {
									api({
										category: cat,
										convert: con,
										options: opts
									});
								}
							}).on('change', function(e) {
								var t = jQuery(e.target),
									p = t.parent(), 
									b = t.closest('.elfinder-edit-onlineconvert-button').children('button:first'),
									o = b.data('opts') || {},
									v = p.data('type') === 'boolean'? t.is(':checked') : t.val();
								e.stopPropagation();
								if (v) {
									if (p.data('type') === 'integer') {
										v = parseInt(v);
									}
									if (p.data('pattern')) {
										var reg = new RegExp(p.data('pattern'));
										if (!reg.test(v)) {
											requestAnimationFrame(function() {
												fm.error('"' + fm.escape(v) + '" is not match to "/' + fm.escape(p.data('pattern')) + '/"');
											});
											v = null;
										}
									}
								}
								if (v) {
									o[t.parent().data('optkey')] = v;
								} else {
									delete o[p.data('optkey')];
								}
								b.data('opts', o);
							}),
							ul = jQuery('<ul></ul>'),
							oform = function(n, o) {
								var f = jQuery('<p></p>').data('optkey', n).data('type', o.type),
									checked = '',
									disabled = '',
									nozip = false,
									opts, btn, elm;
								if (o.description) {
									f.attr('title', fm.i18n(o.description));
								}
								if (o.pattern) {
									f.data('pattern', o.pattern);
								}
								f.append(jQuery('<span></span>').text(fm.i18n(n) + ' : '));
								if (o.type === 'boolean') {
									if (o['default'] || (nozip = (n === 'allow_multiple_outputs' && !allowZip))) {
										checked = ' checked';
										if (nozip) {
											disabled = ' disabled';
										}
										btn = this.children('button:first');
										opts = btn.data('opts') || {};
										opts[n] = true;
										btn.data('opts', opts);
									}
									f.append(jQuery('<input type="checkbox" value="true"'+checked+disabled+'/>'));
								} else if (o['enum']){
									elm = jQuery('<select></select>').append(jQuery('<option value=""></option>').text('Select...'));
									jQuery.each(o['enum'], function(i, v) {
										elm.append(jQuery('<option value="'+v+'"></option>').text(v));
									});
									f.append(elm);
								} else {
									f.append(jQuery('<input type="text" value=""/>'));
								}
								return f;
							},
							makeOption = function(o) {
								var elm = this,
									b = jQuery('<span class="elfinder-button-icon elfinder-button-icon-preference"></span>').on('click', function() {
										f.toggle();
									}),
									f = jQuery('<div class="elfinder-edit-onlinconvert-options"></div>').hide();
								if (o.options) {
									jQuery.each(o.options, function(k, v) {
										k !== 'download_password' && f.append(oform.call(elm, k, v));
									});
								}
								elm.append(b, f);
							},
							ts = (+new Date()),
							i = 0;
						
						if (!confObj.ext2mime) {
							confObj.ext2mime = Object.assign(fm.arrayFlip(fm.mimeTypes), ext2mime);
						}
						jQuery.each(set.conv, function(t, c) {
							var cname = t.toLowerCase(),
								id = 'elfinder-edit-onlineconvert-' + cname + ts,
								type = jQuery('<div id="' + id + '" class="onlineconvert-category onlineconvert-category-'+cname+'"></div>').data('cname', t),
								cext;
							jQuery.each(c, function(n, o) {
								var nl = n.toLowerCase(),
									ext = getExt(t, n);
								if (!confObj.ext2mime[ext]) {
									if (cname === 'audio' || cname === 'image' || cname === 'video') {
										confObj.ext2mime[ext] = cname + '/x-' + nl;
									} else {
										confObj.ext2mime[ext] = 'application/octet-stream';
									}
								}
								if (fm.uploadMimeCheck(confObj.ext2mime[ext], file.phash)) {
									type.append(jQuery('<div class="elfinder-edit-onlineconvert-button onlineconvert-'+nl+'"></div>').on('makeoption', function(e, data) {
										var elm = jQuery(this);
										if (!elm.children('.elfinder-button-icon-preference').length) {
											makeOption.call(elm, data);
										}
									}).append(jQuery('<button></button>').text(n).data('conv', n)));
								}
							});
							if (type.children().length) {
								ul.append(jQuery('<li></li>').append(jQuery('<a></a>').attr('href', selfUrl + '#' + id).text(t)));
								btns.append(type);
								idxs[cname] = i++;
							}
						});
						if (set.useTabs) {
							btns.prepend(ul).tabs({
								beforeActivate: function(e, ui) {
									setOptions(ui.newPanel.data('cname'));
								}
							});
						} else {
							jQuery.each(set.conv, function(t) {
								var tl = t.toLowerCase();
								btns.append(jQuery('<fieldset class="onlineconvert-fieldset-' + tl + '"></fieldset>').append(jQuery('<legend></legend>').text(t)).append(btns.children('.onlineconvert-category-' + tl)));
							});
						}
						return btns;
					})(),
					select = jQuery(this)
						.append(
							btns,
							(set.showLink? jQuery(set.link) : null)
						),
					spnr = jQuery('<div class="elfinder-edit-spinner elfinder-edit-onlineconvert"></div>')
						.hide()
						.html('<span class="elfinder-spinner-text">' + fm.i18n('nowLoading') + '</span><span class="elfinder-spinner"></span>')
						.appendTo(select.parent()),
					prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(spnr),
					_url = null,
					url = function() {
						var onetime;
						if (_url) {
							return jQuery.Deferred().resolve(_url);
						} else {
							spnr.show();
							return fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
								_url = url;
							}).fail(function(error) {
								error && fm.error(error);
								ta.elfinderdialog('destroy');
							}).always(function() {
								spnr.hide();
							});
						}
					},
					api = function(opts) {
						jQuery(ta).data('dfrd', url().done(function(url) {
							select.fadeOut();
							setStatus({info: 'Start conversion request.'});
							fm.request({
								data: {
									cmd: 'editor',
									name: 'OnlineConvert',
									method: 'api',
									'args[category]' : opts.category.toLowerCase(),
									'args[convert]'  : opts.convert.toLowerCase(),
									'args[options]'  : JSON.stringify(opts.options),
									'args[source]'   : fm.convAbsUrl(url),
									'args[filename]' : fm.splitFileExtention(file.name)[0] + '.' + getExt(opts.category, opts.convert),
									'args[mime]'     : file.mime
								},
								preventDefault : true
							}).done(function(data) {
								checkRes(data.apires, opts.category, opts.convert);
							}).fail(function(error) {
								error && fm.error(error);
								ta.elfinderdialog('destroy');
							});
						}));
					},
					checkRes = function(res, cat, con) {
						var status, err = [];
						if (res && res.id) {
							status = res.status;
							if (status.code === 'failed') {
								spnr.hide();
								if (res.errors && res.errors.length) {
									jQuery.each(res.errors, function(i, o) {
										o.message && err.push(o.message);
									});
								}
								fm.error(err.length? err : status.info);
								select.fadeIn();
							} else if (status.code === 'completed') {
								upload(res);
							} else {
								setStatus(status);
								setTimeout(function() {
									polling(res.id);
								}, 1000);
							}
						} else {
							uiToast.appendTo(ta.closest('.ui-dialog'));
							if (res.message) {
								fm.toast({
									msg: fm.i18n(res.message),
									mode: 'error',
									timeOut: 5000,
									onHidden: function() {
										uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
									}
								});
							}
							fm.toast({
								msg: fm.i18n('editorConvNoApi'),
								mode: 'error',
								timeOut: 3000,
								onHidden: function() {
									uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
								}
							});
							spnr.hide();
							select.show();
						}
					},
					setStatus = function(status) {
						spnr.show().children('.elfinder-spinner-text').text(status.info);
					},
					polling = function(jobid) {
						fm.request({
							data: {
								cmd: 'editor',
								name: 'OnlineConvert',
								method: 'api',
								'args[jobid]': jobid
							},
							preventDefault : true
						}).done(function(data) {
							checkRes(data.apires);
						}).fail(function(error) {
							error && fm.error(error);
							ta.elfinderdialog('destroy');
						});
					},
					upload = function(res) {
						var output = res.output,
							id = res.id,
							url = '';
						spnr.hide();
						if (output && output.length) {
							ta.elfinderdialog('destroy');
							jQuery.each(output, function(i, o) {
								if (o.uri) {
									url += o.uri + '\n';
								}
							});
							fm.upload({
								target: file.phash,
								files: [url],
								type: 'text',
								extraData: {
									contentSaveId: 'OnlineConvert-' + res.id
								}
							});
						}
					},
					mode = 'document',
					cl, m;
				select.parent().css({overflow: 'auto'}).addClass('overflow-scrolling-touch');
				if (m = file.mime.match(/^(audio|image|video)/)) {
					mode = m[1];
				}
				if (set.useTabs) {
					if (idxs[mode]) {
						btns.tabs('option', 'active', idxs[mode]);
					}
				} else {
					cl = Object.keys(set.conv).length;
					jQuery.each(set.conv, function(t) {
						if (t.toLowerCase() === mode) {
							setOptions(t, function() {
								jQuery.each(set.conv, function(t0) {
									t0.toLowerCase() !== mode && setOptions(t0);
								});
							});
							return false;
						}
						cl--;
					});
					if (!cl) {
						jQuery.each(set.conv, function(t) {
							setOptions(t);
						});
					}
					select.parent().scrollTop(btns.children('.onlineconvert-fieldset-' + mode).offset().top);
				}
			},
			load : function() {},
			getContent : function() {},
			save : function() {},
			// On dialog closed
			close : function(ta) {
				var fm = this.fm,
					dfrd = jQuery(ta).data('dfrd');
				if (dfrd && dfrd.state() === 'pending') {
					dfrd.reject();
				}
			}
		}
	];
}, window.elFinder));
lib/js/extras/quicklook.googledocs.js000064400000004437147361034410013732 0ustar00(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
"use strict";
try {
	if (! elFinder.prototype.commands.quicklook.plugins) {
		elFinder.prototype.commands.quicklook.plugins = [];
	}
	elFinder.prototype.commands.quicklook.plugins.push(function(ql) {
		var fm      = ql.fm,
			preview = ql.preview;
			
		preview.on('update', function(e) {
			var win  = ql.window,
				file = e.file, node, loading;
			
			if (file.mime.indexOf('application/vnd.google-apps.') === 0) {
				if (file.url == '1') {
					preview.hide();
					jQuery('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
					.on('click', function() {
						jQuery(this).html('<span class="elfinder-spinner">');
						fm.request({
							data : {cmd : 'url', target : file.hash},
							preventDefault : true
						})
						.always(function() {
							preview.show();
							jQuery(this).html('');
						})
						.done(function(data) {
							var rfile = fm.file(file.hash);
							ql.value.url = rfile.url = data.url || '';
							if (ql.value.url) {
								preview.trigger(jQuery.Event('update', {file : ql.value}));
							}
						});
					});
				}
				if (file.url !== '' && file.url != '1') {
					e.stopImmediatePropagation();

					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));

					node = jQuery('<iframe class="elfinder-quicklook-preview-iframe"></iframe>')
						.css('background-color', 'transparent')
						.on('load', function() {
							ql.hideinfo();
							loading.remove();
							node.css('background-color', '#fff');
						})
						.on('error', function() {
							loading.remove();
							node.remove();
						})
						.appendTo(preview)
						.attr('src', fm.url(file.hash));

					preview.one('change', function() {
						loading.remove();
						node.off('load').remove();
					});
				}
			}
			
		});
	});
} catch(e) {}
}));
lib/js/elFinder.resources.js000064400000031656147361034410012043 0ustar00/**
 * elFinder resources registry.
 * Store shared data
 *
 * @type Object
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.resources = {
	'class' : {
		hover       : 'ui-state-hover',
		active      : 'ui-state-active',
		disabled    : 'ui-state-disabled',
		draggable   : 'ui-draggable',
		droppable   : 'ui-droppable',
		adroppable  : 'elfinder-droppable-active',
		cwdfile     : 'elfinder-cwd-file',
		cwd         : 'elfinder-cwd',
		tree        : 'elfinder-tree',
		treeroot    : 'elfinder-navbar-root',
		navdir      : 'elfinder-navbar-dir',
		navdirwrap  : 'elfinder-navbar-dir-wrapper',
		navarrow    : 'elfinder-navbar-arrow',
		navsubtree  : 'elfinder-navbar-subtree',
		navcollapse : 'elfinder-navbar-collapsed',
		navexpand   : 'elfinder-navbar-expanded',
		treedir     : 'elfinder-tree-dir',
		placedir    : 'elfinder-place-dir',
		searchbtn   : 'elfinder-button-search',
		editing     : 'elfinder-to-editing',
		preventback : 'elfinder-prevent-back',
		tabstab     : 'ui-state-default ui-tabs-tab ui-corner-top ui-tab',
		tabsactive  : 'ui-tabs-active ui-state-active'
	},
	tpl : {
		perms      : '<span class="elfinder-perms"></span>',
		lock       : '<span class="elfinder-lock"></span>',
		symlink    : '<span class="elfinder-symlink"></span>',
		navicon    : '<span class="elfinder-nav-icon"></span>',
		navspinner : '<span class="elfinder-spinner elfinder-navbar-spinner"></span>',
		navdir     : '<div class="elfinder-navbar-wrapper{root}"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"{title}><span class="elfinder-navbar-arrow"></span><span class="elfinder-navbar-icon" {style}></span>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"></div></div>',
		placedir   : '<div class="elfinder-navbar-wrapper"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"{title}><span class="elfinder-navbar-arrow"></span><span class="elfinder-navbar-icon" {style}></span>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"></div></div>'
		
	},
	// mimes.text will be overwritten with connector config if `textMimes` is included in initial response
	// @see php/elFInder.class.php `public static $textMimes`
	mimes : {
		text : [
			'application/dash+xml',
			'application/docbook+xml',
			'application/javascript',
			'application/json',
			'application/plt',
			'application/sat',
			'application/sql',
			'application/step',
			'application/vnd.hp-hpgl',
			'application/x-awk',
			'application/x-config',
			'application/x-csh',
			'application/x-empty',
			'application/x-mpegurl',
			'application/x-perl',
			'application/x-php',
			'application/x-web-config',
			'application/xhtml+xml',
			'application/xml',
			'audio/x-mp3-playlist',
			'image/cgm',
			'image/svg+xml',
			'image/vnd.dxf',
			'model/iges'
		]
	},
	
	mixin : {
		make : function() {
			"use strict";
			var self = this,
				fm   = this.fm,
				cmd  = this.name,
				req  = this.requestCmd || cmd,
				wz   = fm.getUI('workzone'),
				org  = (this.origin && this.origin === 'navbar')? 'tree' : 'cwd',
				tree = (org === 'tree'),
				find = tree? 'navHash2Elm' : 'cwdHash2Elm',
				tarea= (! tree && fm.storage('view') != 'list'),
				sel  = fm.selected(),
				move = this.move || false,
				empty= wz.hasClass('elfinder-cwd-wrapper-empty'),
				unselect = function() {
					requestAnimationFrame(function() {
						input && input.trigger('blur');
					});
				},
				rest = function(){
					if (!overlay.is(':hidden')) {
						overlay.elfinderoverlay('hide').off('click close', cancel);
					}
					if (nnode) {
						pnode.removeClass('ui-front')
							.css('position', '')
							.off('unselect.'+fm.namespace, unselect);
						if (tarea) {
							nnode && nnode.css('max-height', '');
						} else if (!tree) {
							pnode.css('width', '')
								.parent('td').css('overflow', '');
						}
					}
				}, colwidth,
				dfrd = jQuery.Deferred()
					.fail(function(error) {
						dstCls && dst.attr('class', dstCls);
						empty && wz.addClass('elfinder-cwd-wrapper-empty');
						if (sel) {
							move && fm.trigger('unlockfiles', {files: sel});
							fm.clipboard([]);
							fm.trigger('selectfiles', { files: sel });
						}
						error && fm.error(error);
					})
					.always(function() {
						rest();
						cleanup();
						fm.enable().unbind('open', openCallback).trigger('resMixinMake');
					}),
				id    = 'tmp_'+parseInt(Math.random()*100000),
				phash = this.data && this.data.target? this.data.target : (tree? fm.file(sel[0]).hash : fm.cwd().hash),
				date = new Date(),
				file   = {
					hash  : id,
					phash : phash,
					name  : fm.uniqueName(this.prefix, phash),
					mime  : this.mime,
					read  : true,
					write : true,
					date  : 'Today '+date.getHours()+':'+date.getMinutes(),
					move  : move
				},
				dum = fm.getUI(org).trigger('create.'+fm.namespace, file),
				data = this.data || {},
				node = fm[find](id),
				nnode, pnode,
				overlay = fm.getUI('overlay'),
				cleanup = function() {
					if (node && node.length) {
						input.off();
						node.hide();
						fm.unselectfiles({files : [id]}).unbind('resize', resize);
						requestAnimationFrame(function() {
							if (tree) {
								node.closest('.elfinder-navbar-wrapper').remove();
							} else {
								node.remove();
							}
						});
					}
				},
				cancel = function(e) { 
					if (!overlay.is(':hidden')) {
						pnode.css('z-index', '');
					}
					if (! inError) {
						cleanup();
						dfrd.reject();
						if (e) {
							e.stopPropagation();
							e.preventDefault();
						}
					}
				},
				input = jQuery(tarea? '<textarea></textarea>' : '<input type="text"/>')
					.on('keyup text', function(){
						if (tarea) {
							this.style.height = '1px';
							this.style.height = this.scrollHeight + 'px';
						} else if (colwidth) {
							this.style.width = colwidth + 'px';
							if (this.scrollWidth > colwidth) {
								this.style.width = this.scrollWidth + 10 + 'px';
							}
						}
					})
					.on('keydown', function(e) {
						e.stopImmediatePropagation();
						if (e.keyCode == jQuery.ui.keyCode.ESCAPE) {
							dfrd.reject();
						} else if (e.keyCode == jQuery.ui.keyCode.ENTER) {
							e.preventDefault();
							input.trigger('blur');
						}
					})
					.on('mousedown click dblclick', function(e) {
						e.stopPropagation();
						if (e.type === 'dblclick') {
							e.preventDefault();
						}
					})
					.on('blur', function() {
						var name   = jQuery.trim(input.val()),
							parent = input.parent(),
							valid  = true,
							cut;

						if (!overlay.is(':hidden')) {
							pnode.css('z-index', '');
						}
						if (name === '') {
							return cancel();
						}
						if (!inError && parent.length) {

							if (fm.options.validName && fm.options.validName.test) {
								try {
									valid = fm.options.validName.test(name);
								} catch(e) {
									valid = false;
								}
							}
							if (!name || name === '.' || name === '..' || !valid) {
								inError = true;
								fm.error(file.mime === 'directory'? 'errInvDirname' : 'errInvName', {modal: true, close: function(){setTimeout(select, 120);}});
								return false;
							}
							if (fm.fileByName(name, phash)) {
								inError = true;
								fm.error(['errExists', name], {modal: true, close: function(){setTimeout(select, 120);}});
								return false;
							}

							cut = (sel && move)? fm.exec('cut', sel) : null;

							jQuery.when(cut)
							.done(function() {
								var toast   = {},
									nextAct = {};
								
								rest();
								input.hide().before(jQuery('<span>').text(name));

								fm.lockfiles({files : [id]});

								fm.request({
										data        : Object.assign({cmd : req, name : name, target : phash}, data || {}), 
										notify      : {type : req, cnt : 1},
										preventFail : true,
										syncOnFail  : true,
										navigate    : {toast : toast},
									})
									.fail(function(error) {
										fm.unlockfiles({files : [id]});
										inError = true;
										input.show().prev().remove();
										fm.error(error, {
											modal: true,
											close: function() {
												if (Array.isArray(error) && jQuery.inArray('errUploadMime', error) !== -1) {
													dfrd.notify('errUploadMime').reject();
												} else {
													setTimeout(select, 120);
												}
											}
										});
									})
									.done(function(data) {
										if (data && data.added && data.added[0]) {
											var item    = data.added[0],
												dirhash = item.hash,
												newItem = fm[find](dirhash),
												acts    = {
													'directory' : { cmd: 'open', msg: 'cmdopendir' },
													'text'      : { cmd: 'edit', msg: 'cmdedit' },
													'default'   : { cmd: 'open', msg: 'cmdopen' }
												},
												tmpMimes;
											if (sel && move) {
												fm.one(req+'done', function() {
													fm.exec('paste', dirhash);
												});
											}
											if (!move) {
												if (fm.mimeIsText(item.mime) && !fm.mimesCanMakeEmpty[item.mime] && fm.mimeTypes[item.mime]) {
													fm.trigger('canMakeEmptyFile', {mimes: [item.mime], unshift: true});
													tmpMimes = {};
													tmpMimes[item.mime] = fm.mimeTypes[item.mime];
													fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {}));
												}
												Object.assign(nextAct, nextAction || acts[item.mime] || acts[item.mime.split('/')[0]] || acts[(fm.mimesCanMakeEmpty[item.mime] || jQuery.inArray(item.mime, fm.resources.mimes.text) !== -1) ? 'text' : 'none'] || acts['default']);
												Object.assign(toast, nextAct.cmd ? {
													incwd    : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)]), action: nextAct},
													inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)]), action: nextAct}
												} : {
													inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)])}
												});
											}
										}
										dfrd.resolve(data);
									});
							})
							.fail(function() {
								dfrd.reject();
							});
						}
					})
					.on('dragenter dragleave dragover drop', function(e) {
						// stop bubbling to prevent upload with native drop event
						e.stopPropagation();
					}),
				select = function() {
					var name = fm.splitFileExtention(input.val())[0];
					if (!inError && fm.UA.Mobile && !fm.UA.iOS) { // since iOS has a bug? (z-index not effect) so disable it
						overlay.on('click close', cancel).elfinderoverlay('show');
						pnode.css('z-index', overlay.css('z-index') + 1);
					}
					inError = false;
					! fm.enabled() && fm.enable();
					input.trigger('focus').trigger('select');
					input[0].setSelectionRange && input[0].setSelectionRange(0, name.length);
				},
				resize = function() {
					node.trigger('scrolltoview', {blink : false});
				},
				openCallback = function() {
					dfrd && (dfrd.state() === 'pending') && dfrd.reject();
				},
				inError = false,
				nextAction,
				// for tree
				dst, dstCls, collapsed, expanded, arrow, subtree;

			if (!fm.isCommandEnabled(req, phash) || !node.length) {
				return dfrd.reject();
			}

			if (jQuery.isPlainObject(self.nextAction)){
				nextAction = Object.assign({}, self.nextAction);
			}
			
			if (tree) {
				dst = fm[find](phash);
				collapsed = fm.res('class', 'navcollapse');
				expanded  = fm.res('class', 'navexpand');
				arrow = fm.res('class', 'navarrow');
				subtree = fm.res('class', 'navsubtree');
				
				node.closest('.'+subtree).show();
				if (! dst.hasClass(collapsed)) {
					dstCls = dst.attr('class');
					dst.addClass(collapsed+' '+expanded+' elfinder-subtree-loaded');
				}
				if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
					dst.children('.'+arrow).trigger('click').data('dfrd').done(function() {
						if (input.val() === file.name) {
							input.val(fm.uniqueName(self.prefix, phash)).trigger('select').trigger('focus');
						}
					});
				}
				nnode = node.contents().filter(function(){ return this.nodeType==3 && jQuery(this).parent().attr('id') === fm.navHash2Id(file.hash); });
				pnode = nnode.parent();
				nnode.replaceWith(input.val(file.name));
			} else {
				empty && wz.removeClass('elfinder-cwd-wrapper-empty');
				nnode = node.find('.elfinder-cwd-filename');
				pnode = nnode.parent();
				if (tarea) {
					nnode.css('max-height', 'none');
				} else {
					colwidth = pnode.width();
					pnode.width(colwidth - 15)
						.parent('td').css('overflow', 'visible');
				}
				nnode.empty().append(input.val(file.name));
			}
			pnode.addClass('ui-front')
				.css('position', 'relative')
				.on('unselect.'+fm.namespace, unselect);
			
			fm.bind('resize', resize).one('open', openCallback);
			
			input.trigger('keyup');
			select();

			return dfrd;

		}
	},
	blink: function(elm, mode) {
		"use strict";
		var acts = {
			slowonce : function(){elm.hide().delay(250).fadeIn(750).delay(500).fadeOut(3500);},
			lookme   : function(){elm.show().fadeOut(500).fadeIn(750);}
		}, func;
		mode = mode || 'slowonce';
		
		func = acts[mode] || acts['lookme'];
		
		elm.stop(true, true);
		func();
	}
};
lib/js/elfinder.full.js000064400003676673147361034410011054 0ustar00/*!
 * elFinder - file manager for web
 * Version 2.1.49 (2019-04-14)
 * http://elfinder.org
 * 
 * Copyright 2009-2019, Studio 42
 * Licensed under a 3-clauses BSD license
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['jquery','jquery-ui'], factory);
	} else if (typeof exports !== 'undefined') {
		// CommonJS
		var $, ui;
		try {
			$ = require('jquery');
			ui = require('jquery-ui');
		} catch (e) {}
		module.exports = factory($, ui);
	} else {
		// Browser globals (Note: root is window)
		factory(root.jQuery, root.jQuery.ui, true);
	}
}(this, function($, _ui, toGlobal) {
toGlobal = toGlobal || false;


/*
 * File: /js/elFinder.js
 */

/**
 * @class elFinder - file manager for web
 *
 * @author Dmitry (dio) Levashov
 **/
var elFinder = function(elm, opts, bootCallback) {
		//this.time('load');
	var self = this,
		
		/**
		 * Objects array of jQuery.Deferred that calls before elFinder boot up
		 * 
		 * @type Array
		 */
		dfrdsBeforeBootup = [],
		
		/**
		 * Plugin name to check for conflicts with bootstrap etc
		 *
		 * @type Array
		 **/
		conflictChecks = ['button', 'tooltip'],
		
		/**
		 * Node on which elfinder creating
		 *
		 * @type jQuery
		 **/
		node = jQuery(elm),
		
		/**
		 * Object of events originally registered in this node
		 * 
		 * @type Object
		 */
		prevEvents = jQuery.extend(true, {}, jQuery._data(node.get(0), 'events')),
		
		/**
		 * Store node contents.
		 *
		 * @see this.destroy
		 * @type jQuery
		 **/
		prevContent = jQuery('<div/>').append(node.contents()).attr('class', node.attr('class') || '').attr('style', node.attr('style') || ''),
		
		/**
		 * Instance ID. Required to get/set cookie
		 *
		 * @type String
		 **/
		id = node.attr('id') || '',
		
		/**
		 * Events namespace
		 *
		 * @type String
		 **/
		namespace = 'elfinder-' + (id ? id : Math.random().toString().substr(2, 7)),
		
		/**
		 * Mousedown event
		 *
		 * @type String
		 **/
		mousedown = 'mousedown.'+namespace,
		
		/**
		 * Keydown event
		 *
		 * @type String
		 **/
		keydown = 'keydown.'+namespace,
		
		/**
		 * Keypress event
		 *
		 * @type String
		 **/
		keypress = 'keypress.'+namespace,
		
		/**
		 * Keypup event
		 *
		 * @type String
		 **/
		keyup    = 'keyup.'+namespace,

		/**
		 * Is shortcuts/commands enabled
		 *
		 * @type Boolean
		 **/
		enabled = false,
		
		/**
		 * Store enabled value before ajax request
		 *
		 * @type Boolean
		 **/
		prevEnabled = false,
		
		/**
		 * List of build-in events which mapped into methods with same names
		 *
		 * @type Array
		 **/
		events = ['enable', 'disable', 'load', 'open', 'reload', 'select',  'add', 'remove', 'change', 'dblclick', 'getfile', 'lockfiles', 'unlockfiles', 'selectfiles', 'unselectfiles', 'dragstart', 'dragstop', 'search', 'searchend', 'viewchange'],
		
		/**
		 * Rules to validate data from backend
		 *
		 * @type Object
		 **/
		rules = {},
		
		/**
		 * Current working directory hash
		 *
		 * @type String
		 **/
		cwd = '',
		
		/**
		 * Current working directory options default
		 *
		 * @type Object
		 **/
		cwdOptionsDefault = {
			path          : '',
			url           : '',
			tmbUrl        : '',
			disabled      : [],
			separator     : '/',
			archives      : [],
			extract       : [],
			copyOverwrite : true,
			uploadOverwrite : true,
			uploadMaxSize : 0,
			jpgQuality    : 100,
			tmbCrop       : false,
			tmb           : false // old API
		},
		
		/**
		 * Current working directory options
		 *
		 * @type Object
		 **/
		cwdOptions = {},
		
		/**
		 * Files/dirs cache
		 *
		 * @type Object
		 **/
		files = {},
		
		/**
		 * Hidden Files/dirs cache
		 *
		 * @type Object
		 **/
		hiddenFiles = {},

		/**
		 * Files/dirs hash cache of each dirs
		 *
		 * @type Object
		 **/
		ownFiles = {},
		
		/**
		 * Selected files hashes
		 *
		 * @type Array
		 **/
		selected = [],
		
		/**
		 * Events listeners
		 *
		 * @type Object
		 **/
		listeners = {},
		
		/**
		 * Shortcuts
		 *
		 * @type Object
		 **/
		shortcuts = {},
		
		/**
		 * Buffer for copied files
		 *
		 * @type Array
		 **/
		clipboard = [],
		
		/**
		 * Copied/cuted files hashes
		 * Prevent from remove its from cache.
		 * Required for dispaly correct files names in error messages
		 *
		 * @type Object
		 **/
		remember = {},
		
		/**
		 * Queue for 'open' requests
		 *
		 * @type Array
		 **/
		queue = [],
		
		/**
		 * Queue for only cwd requests e.g. `tmb`
		 *
		 * @type Array
		 **/
		cwdQueue = [],
		
		/**
		 * Commands prototype
		 *
		 * @type Object
		 **/
		base = new self.command(self),
		
		/**
		 * elFinder node width
		 *
		 * @type String
		 * @default "auto"
		 **/
		width  = 'auto',
		
		/**
		 * elFinder node height
		 * Number: pixcel or String: Number + "%"
		 *
		 * @type Number | String
		 * @default 400
		 **/
		height = 400,
		
		/**
		 * Base node object or selector
		 * Element which is the reference of the height percentage
		 *
		 * @type Object|String
		 * @default null | jQuery(window) (if height is percentage)
		 **/
		heightBase = null,
		
		/**
		 * MIME type list(Associative array) handled as a text file
		 * 
		 * @type Object|null
		 */
		textMimes = null,
		
		/**
		 * elfinder path for sound played on remove
		 * @type String
		 * @default ./sounds/
		 **/
		soundPath = 'sounds/',
		
		/**
		 * JSON.stringify of previous fm.sorters
		 * @type String
		 */
		prevSorterStr = '',

		/**
		 * Map table of file extention to MIME-Type
		 * @type Object
		 */
		extToMimeTable,

		beeper = jQuery(document.createElement('audio')).hide().appendTo('body')[0],
			
		syncInterval,
		autoSyncStop = 0,
		
		uiCmdMapPrev = '',
		
		gcJobRes = null,
		
		open = function(data) {
			// NOTES: Do not touch data object
		
			var volumeid, contextmenu, emptyDirs = {}, stayDirs = {},
				rmClass, hashes, calc, gc, collapsed, prevcwd, sorterStr;
			
			if (self.api >= 2.1) {
				// support volume driver option `uiCmdMap`
				self.commandMap = (data.options.uiCmdMap && Object.keys(data.options.uiCmdMap).length)? data.options.uiCmdMap : {};
				if (uiCmdMapPrev !== JSON.stringify(self.commandMap)) {
					uiCmdMapPrev = JSON.stringify(self.commandMap);
				}
			} else {
				self.options.sync = 0;
			}
			
			if (data.init) {
				// init - reset cache
				files = {};
				ownFiles = {};
			} else {
				// remove only files from prev cwd
				// and collapsed directory (included 100+ directories) to empty for perfomance tune in DnD
				prevcwd = cwd;
				rmClass = 'elfinder-subtree-loaded ' + self.res('class', 'navexpand');
				collapsed = self.res('class', 'navcollapse');
				hashes = Object.keys(files);
				calc = function(i) {
					if (!files[i]) {
						return true;
					}
					
					var isDir = (files[i].mime === 'directory'),
						phash = files[i].phash,
						pnav;
						
					if (
						(!isDir
							|| emptyDirs[phash]
							|| (!stayDirs[phash]
								&& self.navHash2Elm(files[i].hash).is(':hidden')
								&& self.navHash2Elm(phash).next('.elfinder-navbar-subtree').children().length > 100
							)
						)
						&& (isDir || phash !== cwd)
						&& ! remember[i]
					) {
						if (isDir && !emptyDirs[phash]) {
							emptyDirs[phash] = true;
							self.navHash2Elm(phash)
							 .removeClass(rmClass)
							 .next('.elfinder-navbar-subtree').empty();
						}
						deleteCache(files[i]);
					} else if (isDir) {
						stayDirs[phash] = true;
					}
				};
				gc = function() {
					if (hashes.length) {
						gcJobRes && gcJobRes._abort();
						gcJobRes = self.asyncJob(calc, hashes, {
							interval : 20,
							numPerOnce : 100
						}).done(function() {
							var hd = self.storage('hide') || {items: {}};
							if (Object.keys(hiddenFiles).length) {
								jQuery.each(hiddenFiles, function(h) {
									if (!hd.items[h]) {
										delete hiddenFiles[h];
									}
								});
							}
						});
					}
				};
				
				self.trigger('filesgc').one('filesgc', function() {
					hashes = [];
				});
				
				self.one('opendone', function() {
					if (prevcwd !== cwd) {
						if (! node.data('lazycnt')) {
							gc();
						} else {
							self.one('lazydone', gc);
						}
					}
				});
			}

			self.sorters = {};
			cwd = data.cwd.hash;
			cache(data.files);
			if (!files[cwd]) {
				cache([data.cwd]);
			}

			// trigger event 'sorterupdate'
			sorterStr = JSON.stringify(self.sorters);
			if (prevSorterStr !== sorterStr) {
				self.trigger('sorterupdate');
				prevSorterStr = sorterStr;
			}

			self.lastDir(cwd);
			
			self.autoSync();
		},
		
		/**
		 * Store info about files/dirs in "files" object.
		 *
		 * @param  Array  files
		 * @param  String data type
		 * @return void
		 **/
		cache = function(data, type) {
			var defsorter = { name: true, perm: true, date: true,  size: true, kind: true },
				sorterChk = !self.sorters._checked,
				l         = data.length,
				setSorter = function(file) {
					var f = file || {},
						sorters = [];
					jQuery.each(self.sortRules, function(key) {
						if (defsorter[key] || typeof f[key] !== 'undefined' || (key === 'mode' && typeof f.perm !== 'undefined')) {
							sorters.push(key);
						}
					});
					self.sorters = self.arrayFlip(sorters, true);
					self.sorters._checked = true;
				},
				keeps = ['sizeInfo'],
				changedParents = {},
				hideData = self.storage('hide') || {},
				hides = hideData.items || {},
				f, i, keepProp, parents, hidden;

			for (i = 0; i < l; i++) {
				f = Object.assign({}, data[i]);
				hidden = (!hideData.show && hides[f.hash])? true : false;
				if (f.name && f.hash && f.mime) {
					if (!hidden) {
						if (sorterChk && f.phash === cwd) {
							setSorter(f);
							sorterChk = false;
						}
						
						if (f.phash && (type === 'add' || type === 'change')) {
							if (parents = self.parents(f.phash)) {
								jQuery.each(parents, function() {
									changedParents[this] = true;
								});
							}
						}
					}

					if (files[f.hash]) {
						jQuery.each(keeps, function() {
							if(files[f.hash][this] && ! f[this]) {
								f[this] = files[f.hash][this];
							}
						});
						if (f.sizeInfo && !f.size) {
							f.size = f.sizeInfo.size;
						}
						deleteCache(files[f.hash], true);
					}
					if (hides[f.hash]) {
						hiddenFiles[f.hash] = f;
					}
					if (hidden) {
						l--;
						data.splice(i--, 1);
					} else {
						files[f.hash] = f;
						if (f.mime === 'directory' && !ownFiles[f.hash]) {
							ownFiles[f.hash] = {};
						}
						if (f.phash) {
							if (!ownFiles[f.phash]) {
								ownFiles[f.phash] = {};
							}
							ownFiles[f.phash][f.hash] = true;
						}
					}
				}
			}
			// delete sizeInfo cache
			jQuery.each(Object.keys(changedParents), function() {
				var target = files[this];
				if (target && target.sizeInfo) {
					delete target.sizeInfo;
				}
			});
			
			// for empty folder
			sorterChk && setSorter();
		},
		
		/**
		 * Delete file object from files caches
		 * 
		 * @param  Array  removed hashes
		 * @return void
		 */
		remove = function(removed) {
			var l       = removed.length,
				roots   = {},
				rm      = function(hash) {
					var file = files[hash], i;
					if (file) {
						if (file.mime === 'directory') {
							if (roots[hash]) {
								delete self.roots[roots[hash]];
							}
							// restore stats of deleted root parent directory
							jQuery.each(self.leafRoots, function(phash, roots) {
								var idx, pdir;
								if ((idx = jQuery.inArray(hash, roots))!== -1) {
									if (roots.length === 1) {
										if ((pdir = Object.assign({}, files[phash])) && pdir._realStats) {
											jQuery.each(pdir._realStats, function(k, v) {
												pdir[k] = v;
											});
											remove(files[phash]._realStats);
											self.change({ changed: [pdir] });
										}
										delete self.leafRoots[phash];
									} else {
										self.leafRoots[phash].splice(idx, 1);
									}
								}
							});
							if (self.searchStatus.state < 2) {
								jQuery.each(files, function(h, f) {
									f.phash == hash && rm(h);
								});
							}
						}
						if (file.phash) {
							if (parents = self.parents(file.phash)) {
								jQuery.each(parents, function() {
									changedParents[this] = true;
								});
							}
						}
						deleteCache(files[hash]);
					}
				},
				changedParents = {},
				parents;
		
			jQuery.each(self.roots, function(k, v) {
				roots[v] = k;
			});
			while (l--) {
				rm(removed[l]);
			}
			// delete sizeInfo cache
			jQuery.each(Object.keys(changedParents), function() {
				var target = files[this];
				if (target && target.sizeInfo) {
					delete target.sizeInfo;
				}
			});
		},
		
		/**
		 * Update file object in files caches
		 * 
		 * @param  Array  changed file objects
		 * @return void
		 */
		change = function(changed) {
			jQuery.each(changed, function(i, file) {
				var hash = file.hash;
				if (files[hash]) {
					jQuery.each(Object.keys(files[hash]), function(i, v){
						if (typeof file[v] === 'undefined') {
							delete files[hash][v];
						}
					});
				}
				files[hash] = files[hash] ? Object.assign(files[hash], file) : file;
			});
		},
		
		/**
		 * Delete cache data of files, ownFiles and self.optionsByHashes
		 * 
		 * @param  Object  file
		 * @param  Boolean update
		 * @return void
		 */
		deleteCache = function(file, update) {
			var hash = file.hash,
				phash = file.phash;
			
			if (phash && ownFiles[phash]) {
				 delete ownFiles[phash][hash];
			}
			if (!update) {
				ownFiles[hash] && delete ownFiles[hash];
				self.optionsByHashes[hash] && delete self.optionsByHashes[hash];
			}
			delete files[hash];
		},
		
		/**
		 * Maximum number of concurrent connections on request
		 * 
		 * @type Number
		 */
		requestMaxConn,
		
		/**
		 * Current number of connections
		 * 
		 * @type Number
		 */
		requestCnt = 0,
		
		/**
		 * Queue waiting for connection
		 * 
		 * @type Array
		 */
		requestQueue = [],
		
		/**
		 * Flag to cancel the `open` command waiting for connection
		 * 
		 * @type Boolean
		 */
		requestQueueSkipOpen = false,
		
		/**
		 * Exec shortcut
		 *
		 * @param  jQuery.Event  keydown/keypress event
		 * @return void
		 */
		execShortcut = function(e) {
			var code    = e.keyCode,
				ctrlKey = !!(e.ctrlKey || e.metaKey),
				isMousedown = e.type === 'mousedown',
				ddm;

			!isMousedown && (self.keyState.keyCode = code);
			self.keyState.ctrlKey  = ctrlKey;
			self.keyState.shiftKey = e.shiftKey;
			self.keyState.metaKey  = e.metaKey;
			self.keyState.altKey   = e.altKey;
			if (isMousedown) {
				return;
			} else if (e.type === 'keyup') {
				self.keyState.keyCode = null;
				return;
			}

			if (enabled) {

				jQuery.each(shortcuts, function(i, shortcut) {
					if (shortcut.type    == e.type 
					&& shortcut.keyCode  == code 
					&& shortcut.shiftKey == e.shiftKey 
					&& shortcut.ctrlKey  == ctrlKey 
					&& shortcut.altKey   == e.altKey) {
						e.preventDefault();
						e.stopPropagation();
						shortcut.callback(e, self);
						self.debug('shortcut-exec', i+' : '+shortcut.description);
					}
				});
				
				// prevent tab out of elfinder
				if (code == jQuery.ui.keyCode.TAB && !jQuery(e.target).is(':input')) {
					e.preventDefault();
				}
				
				// cancel any actions by [Esc] key
				if (e.type === 'keydown' && code == jQuery.ui.keyCode.ESCAPE) {
					// copy or cut 
					if (! node.find('.ui-widget:visible').length) {
						self.clipboard().length && self.clipboard([]);
					}
					// dragging
					if (jQuery.ui.ddmanager) {
						ddm = jQuery.ui.ddmanager.current;
						ddm && ddm.helper && ddm.cancel();
					}
					// button menus
					self.toHide(node.find('.ui-widget.elfinder-button-menu.elfinder-frontmost:visible'));
					// trigger keydownEsc
					self.trigger('keydownEsc', e);
				}

			}
		},
		date = new Date(),
		utc,
		i18n,
		inFrame = (window.parent !== window),
		parentIframe = (function() {
			var pifm, ifms;
			if (inFrame) {
				try {
					ifms = jQuery('iframe', window.parent.document);
					if (ifms.length) {
						jQuery.each(ifms, function(i, ifm) {
							if (ifm.contentWindow === window) {
								pifm = jQuery(ifm);
								return false;
							}
						});
					}
				} catch(e) {}
			}
			return pifm;
		})(),
		/**
		 * elFinder boot up function
		 * 
		 * @type Function
		 */
		bootUp,
		/**
		 * Original function of XMLHttpRequest.prototype.send
		 * 
		 * @type Function
		 */
		savedXhrSend;
	
	// opts must be an object
	if (!opts) {
		opts = {};
	}
	
	// set UA.Angle, UA.Rotated for mobile devices
	if (self.UA.Mobile) {
		jQuery(window).on('orientationchange.'+namespace, function() {
			var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0;
			if (a === -90) {
				a = 270;
			}
			self.UA.Angle = a;
			self.UA.Rotated = a % 180 === 0? false : true;
		}).trigger('orientationchange.'+namespace);
	}
	
	// check opt.bootCallback
	if (opts.bootCallback && typeof opts.bootCallback === 'function') {
		(function() {
			var func = bootCallback,
				opFunc = opts.bootCallback;
			bootCallback = function(fm, extraObj) {
				func && typeof func === 'function' && func.call(this, fm, extraObj);
				opFunc.call(this, fm, extraObj);
			};
		})();
	}
	delete opts.bootCallback;

	/**
	 * Protocol version
	 *
	 * @type String
	 **/
	this.api = null;
	
	/**
	 * elFinder use new api
	 *
	 * @type Boolean
	 **/
	this.newAPI = false;
	
	/**
	 * elFinder use old api
	 *
	 * @type Boolean
	 **/
	this.oldAPI = false;
	
	/**
	 * Net drivers names
	 *
	 * @type Array
	 **/
	this.netDrivers = [];
	
	/**
	 * Base URL of elfFinder library starting from Manager HTML
	 * 
	 * @type String
	 */
	this.baseUrl = '';
	
	/**
	 * Base URL of i18n js files
	 * baseUrl + "js/i18n/" when empty value
	 * 
	 * @type String
	 */
	this.i18nBaseUrl = '';

	/**
	 * Is elFinder CSS loaded
	 * 
	 * @type Boolean
	 */
	this.cssloaded = false;
	
	/**
	 * Current theme object
	 * 
	 * @type Object|Null
	 */
	this.theme = null;

	this.mimesCanMakeEmpty = {};

	/**
	 * Callback function at boot up that option specified at elFinder starting
	 * 
	 * @type Function
	 */
	this.bootCallback;

	/**
	 * ID. Required to create unique cookie name
	 *
	 * @type String
	 **/
	this.id = id;

	/**
	 * Method to store/fetch data
	 *
	 * @type Function
	 **/
	this.storage = (function() {
		try {
			if ('localStorage' in window && window.localStorage !== null) {
				if (self.UA.Safari) {
					// check for Mac/iOS safari private browsing mode
					window.localStorage.setItem('elfstoragecheck', 1);
					window.localStorage.removeItem('elfstoragecheck');
				}
				return self.localStorage;
			} else {
				return self.cookie;
			}
		} catch (e) {
			return self.cookie;
		}
	})();

	/**
	 * Configuration options
	 *
	 * @type Object
	 **/
	//this.options = jQuery.extend(true, {}, this._options, opts);
	this.options = Object.assign({}, this._options);
	
	// for old type configuration
	if (opts.uiOptions) {
		if (opts.uiOptions.toolbar && Array.isArray(opts.uiOptions.toolbar)) {
			if (jQuery.isPlainObject(opts.uiOptions.toolbar[opts.uiOptions.toolbar.length - 1])) {
				self.options.uiOptions.toolbarExtra = Object.assign(self.options.uiOptions.toolbarExtra || {}, opts.uiOptions.toolbar.pop());
			}
		}
	}
	
	// Overwrite if opts value is an array
	(function() {
		var arrOv = function(obj, base) {
			if (jQuery.isPlainObject(obj)) {
				jQuery.each(obj, function(k, v) {
					if (jQuery.isPlainObject(v)) {
						if (!base[k]) {
							base[k] = {};
						}
						arrOv(v, base[k]);
					} else {
						base[k] = v;
					}
				});
			}
		};
		arrOv(opts, self.options);
	})();
	
	// join toolbarExtra to toolbar
	this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra);
	delete this.options.uiOptions.toolbarExtra;

	/**
	 * Arrays that has to unbind events
	 * 
	 * @type Object
	 */
	this.toUnbindEvents = {};
	
	/**
	 * Attach listener to events
	 * To bind to multiply events at once, separate events names by space
	 * 
	 * @param  String  event(s) name(s)
	 * @param  Object  event handler or {done: handler}
	 * @param  Boolean priority first
	 * @return elFinder
	 */
	this.bind = function(event, callback, priorityFirst) {
		var i, len;
		
		if (callback && (typeof callback === 'function' || typeof callback.done === 'function')) {
			event = ('' + event).toLowerCase().replace(/^\s+|\s+$/g, '').split(/\s+/);
			
			len = event.length;
			for (i = 0; i < len; i++) {
				if (listeners[event[i]] === void(0)) {
					listeners[event[i]] = [];
				}
				listeners[event[i]][priorityFirst? 'unshift' : 'push'](callback);
			}
		}
		return this;
	};
	
	/**
	 * Remove event listener if exists
	 * To un-bind to multiply events at once, separate events names by space
	 *
	 * @param  String    event(s) name(s)
	 * @param  Function  callback
	 * @return elFinder
	 */
	this.unbind = function(event, callback) {
		var i, len, l, ci;
		
		event = ('' + event).toLowerCase().split(/\s+/);
		
		len = event.length;
		for (i = 0; i < len; i++) {
			if (l = listeners[event[i]]) {
				ci = jQuery.inArray(callback, l);
				ci > -1 && l.splice(ci, 1);
			}
		}
		
		callback = null;
		return this;
	};
	
	/**
	 * Fire event - send notification to all event listeners
	 * In the callback `this` becames an event object
	 *
	 * @param  String   event type
	 * @param  Object   data to send across event
	 * @param  Boolean  allow modify data (call by reference of data) default: true
	 * @return elFinder
	 */
	this.trigger = function(evType, data, allowModify) {
		var type      = evType.toLowerCase(),
			isopen    = (type === 'open'),
			dataIsObj = (typeof data === 'object'),
			handlers  = listeners[type] || [],
			dones     = [],
			i, l, jst, event;
		
		this.debug('event-'+type, data);
		
		if (! dataIsObj || typeof allowModify === 'undefined') {
			allowModify = true;
		}
		if (l = handlers.length) {
			event = jQuery.Event(type);
			if (data) {
				data._event = event;
			}
			if (allowModify) {
				event.data = data;
			}

			for (i = 0; i < l; i++) {
				if (! handlers[i]) {
					// probably un-binded this handler
					continue;
				}

				// handler is jQuery.Deferred(), call all functions upon completion
				if (handlers[i].done) {
					dones.push(handlers[i].done);
					continue;
				}
				
				// set `event.data` only callback has argument
				if (handlers[i].length) {
					if (!allowModify) {
						// to avoid data modifications. remember about "sharing" passing arguments in js :) 
						if (typeof jst === 'undefined') {
							try {
								jst = JSON.stringify(data);
							} catch(e) {
								jst = false;
							}
						}
						event.data = jst? JSON.parse(jst) : data;
					}
				}

				try {
					if (handlers[i].call(event, event, this) === false || event.isDefaultPrevented()) {
						this.debug('event-stoped', event.type);
						break;
					}
				} catch (ex) {
					window.console && window.console.log && window.console.log(ex);
				}
				
			}
			
			// call done functions
			if (l = dones.length) {
				for (i = 0; i < l; i++) {
					try {
						if (dones[i].call(event, event, this) === false || event.isDefaultPrevented()) {
							this.debug('event-stoped', event.type + '(done)');
							break;
						}
					} catch (ex) {
						window.console && window.console.log && window.console.log(ex);
					}
				}
			}

			if (this.toUnbindEvents[type] && this.toUnbindEvents[type].length) {
				jQuery.each(this.toUnbindEvents[type], function(i, v) {
					self.unbind(v.type, v.callback);
				});
				delete this.toUnbindEvents[type];
			}
		}
		return this;
	};
	
	/**
	 * Get event listeners
	 *
	 * @param  String   event type
	 * @return Array    listed event functions
	 */
	this.getListeners = function(event) {
		return event? listeners[event.toLowerCase()] : listeners;
	};

	// set fm.baseUrl
	this.baseUrl = (function() {
		var myTag, myCss, base, baseUrl;
		
		if (self.options.baseUrl) {
			return self.options.baseUrl;
		} else {
			baseUrl = '';
			//myTag = jQuery('head > script[src$="js/elfinder.min.js"],script[src$="js/elfinder.full.js"]:first');
			myTag = null;
			jQuery('head > script').each(function() {
				if (this.src && this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js$/i)) {
					myTag = jQuery(this);
					return false;
				}
			});
			if (myTag) {
				myCss = jQuery('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length;
				if (! myCss) {
					// to request CSS auto loading
					self.cssloaded = null;
				}
				baseUrl = myTag.attr('src').replace(/js\/[^\/]+$/, '');
				if (! baseUrl.match(/^(https?\/\/|\/)/)) {
					// check <base> tag
					if (base = jQuery('head > base[href]').attr('href')) {
						baseUrl = base.replace(/\/$/, '') + '/' + baseUrl; 
					}
				}
			}
			if (baseUrl !== '') {
				self.options.baseUrl = baseUrl;
			} else {
				if (! self.options.baseUrl) {
					self.options.baseUrl = './';
				}
				baseUrl = self.options.baseUrl;
			}
			return baseUrl;
		}
	})();
	
	this.i18nBaseUrl = (this.options.i18nBaseUrl || this.baseUrl + 'js/i18n').replace(/\/$/, '') + '/';

	this.options.maxErrorDialogs = Math.max(1, parseInt(this.options.maxErrorDialogs || 5));

	// set dispInlineRegex
	cwdOptionsDefault.dispInlineRegex = this.options.dispInlineRegex;

	// auto load required CSS
	if (this.options.cssAutoLoad) {
		(function() {
			var baseUrl = self.baseUrl;
			
			// additional CSS files
			if (Array.isArray(self.options.cssAutoLoad)) {
				if (self.cssloaded === true) {
					self.loadCss(self.options.cssAutoLoad);
				} else {
					self.bind('cssloaded', function() {
						self.loadCss(self.options.cssAutoLoad);
					});
				}
			}

			// try to load main css
			if (self.cssloaded === null) {
				// hide elFinder node while css loading
				node.data('cssautoloadHide', jQuery('<style>.elfinder{visibility:hidden;overflow:hidden}</style>'));
				jQuery('head').append(node.data('cssautoloadHide'));

				// set default theme
				if (!self.options.themes.default) {
					self.options.themes = Object.assign({
						'default' : {
							'name': 'default',
							'cssurls': 'css/theme.css',
							'author': 'elFinder Project',
							'license': '3-clauses BSD'
						}
					}, self.options.themes);
					if (!self.options.theme) {
						self.options.theme = 'default';
					}
				}

				// load CSS
				self.loadCss([baseUrl+'css/elfinder.min.css'], {
					dfd: jQuery.Deferred().always(function() {
						if (node.data('cssautoloadHide')) {
							node.data('cssautoloadHide').remove();
							node.removeData('cssautoloadHide');
						}
					}).done(function() {
						if (!self.cssloaded) {
							self.cssloaded = true;
							self.trigger('cssloaded');
						}
					}).fail(function() {
						self.cssloaded = false;
						self.error(['errRead', 'CSS (elfinder or theme)']);
					})
				});
			}
			self.options.cssAutoLoad = false;
		})();
	}

	// load theme if exists
	this.changeTheme(this.storage('theme') || this.options.theme);
	
	/**
	 * Volume option to set the properties of the root Stat
	 * 
	 * @type Object
	 */
	this.optionProperties = {
		icon: void(0),
		csscls: void(0),
		tmbUrl: void(0),
		uiCmdMap: {},
		netkey: void(0),
		disabled: []
	};
	
	if (! inFrame && ! this.options.enableAlways && jQuery('body').children().length === 2) { // only node and beeper
		this.options.enableAlways = true;
	}
	
	// make options.debug
	if (this.options.debug === true) {
		this.options.debug = 'all';
	} else if (Array.isArray(this.options.debug)) {
		(function() {
			var d = {};
			jQuery.each(self.options.debug, function() {
				d[this] = true;
			});
			self.options.debug = d;
		})();
	} else {
		this.options.debug = false;
	}
	
	/**
	 * Original functions evacuated by conflict check
	 * 
	 * @type Object
	 */
	this.noConflicts = {};
	
	/**
	 * Check and save conflicts with bootstrap etc
	 * 
	 * @type Function
	 */
	this.noConflict = function() {
		jQuery.each(conflictChecks, function(i, p) {
			if (jQuery.fn[p] && typeof jQuery.fn[p].noConflict === 'function') {
				self.noConflicts[p] = jQuery.fn[p].noConflict();
			}
		});
	};
	// do check conflict
	this.noConflict();
	
	/**
	 * Is elFinder over CORS
	 *
	 * @type Boolean
	 **/
	this.isCORS = false;
	
	// configure for CORS
	(function(){
		if (typeof self.options.cors !== 'undefined' && self.options.cors !== null) {
			self.isCORS = self.options.cors? true : false;
		} else {
			var parseUrl = document.createElement('a'),
				parseUploadUrl,
				selfProtocol = window.location.protocol,
				portReg = function(protocol) {
					protocol = (!protocol || protocol === ':')? selfProtocol : protocol;
					return protocol === 'https:'? /\:443$/ : /\:80$/;
				},
				selfHost = window.location.host.replace(portReg(selfProtocol), '');
			parseUrl.href = opts.url;
			if (opts.urlUpload && (opts.urlUpload !== opts.url)) {
				parseUploadUrl = document.createElement('a');
				parseUploadUrl.href = opts.urlUpload;
			}
			if (selfHost !== parseUrl.host.replace(portReg(parseUrl.protocol), '')
				|| (parseUrl.protocol !== ':'&& parseUrl.protocol !== '' && (selfProtocol !== parseUrl.protocol))
				|| (parseUploadUrl && 
					(selfHost !== parseUploadUrl.host.replace(portReg(parseUploadUrl.protocol), '')
					|| (parseUploadUrl.protocol !== ':' && parseUploadUrl.protocol !== '' && (selfProtocol !== parseUploadUrl.protocol))
					)
				)
			) {
				self.isCORS = true;
			}
		}
		if (self.isCORS) {
			if (!jQuery.isPlainObject(self.options.customHeaders)) {
				self.options.customHeaders = {};
			}
			if (!jQuery.isPlainObject(self.options.xhrFields)) {
				self.options.xhrFields = {};
			}
			self.options.requestType = 'post';
			self.options.customHeaders['X-Requested-With'] = 'XMLHttpRequest';
			self.options.xhrFields['withCredentials'] = true;
		}
	})();

	/**
	 * Ajax request type
	 *
	 * @type String
	 * @default "get"
	 **/
	this.requestType = /^(get|post)$/i.test(this.options.requestType) ? this.options.requestType.toLowerCase() : 'get';
	
	// set `requestMaxConn` by option
	requestMaxConn = Math.max(parseInt(this.options.requestMaxConn), 1);
	
	/**
	 * Custom data that given as options
	 * 
	 * @type Object
	 * @default {}
	 */
	this.optsCustomData = jQuery.isPlainObject(this.options.customData) ? this.options.customData : {};

	/**
	 * Any data to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 **/
	this.customData = Object.assign({}, this.optsCustomData);

	/**
	 * Previous custom data from connector
	 * 
	 * @type Object|null
	 */
	this.prevCustomData = null;

	/**
	 * Any custom headers to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	*/
	this.customHeaders = jQuery.isPlainObject(this.options.customHeaders) ? this.options.customHeaders : {};

	/**
	 * Any custom xhrFields to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	this.xhrFields = jQuery.isPlainObject(this.options.xhrFields) ? this.options.xhrFields : {};

	/**
	 * Replace XMLHttpRequest.prototype.send to extended function for 3rd party libs XHR request etc.
	 * 
	 * @type Function
	 */
	this.replaceXhrSend = function() {
		if (! savedXhrSend) {
			savedXhrSend = XMLHttpRequest.prototype.send;
		}
		XMLHttpRequest.prototype.send = function() {
			var xhr = this;
			// set request headers
			if (self.customHeaders) {
				jQuery.each(self.customHeaders, function(key) {
					xhr.setRequestHeader(key, this);
				});
			}
			// set xhrFields
			if (self.xhrFields) {
				jQuery.each(self.xhrFields, function(key) {
					if (key in xhr) {
						xhr[key] = this;
					}
				});
			}
			return savedXhrSend.apply(this, arguments);
		};
	};
	
	/**
	 * Restore saved original XMLHttpRequest.prototype.send
	 * 
	 * @type Function
	 */
	this.restoreXhrSend = function() {
		savedXhrSend && (XMLHttpRequest.prototype.send = savedXhrSend);
	};

	/**
	 * command names for into queue for only cwd requests
	 * these commands aborts before `open` request
	 *
	 * @type Array
	 * @default ['tmb', 'parents']
	 */
	this.abortCmdsOnOpen = this.options.abortCmdsOnOpen || ['tmb', 'parents'];

	/**
	 * ui.nav id prefix
	 * 
	 * @type String
	 */
	this.navPrefix = 'nav' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-';
	
	/**
	 * ui.cwd id prefix
	 * 
	 * @type String
	 */
	this.cwdPrefix = elFinder.prototype.uniqueid? ('cwd' + elFinder.prototype.uniqueid + '-') : '';
	
	// Increment elFinder.prototype.uniqueid
	++elFinder.prototype.uniqueid;
	
	/**
	 * URL to upload files
	 *
	 * @type String
	 **/
	this.uploadURL = opts.urlUpload || opts.url;
	
	/**
	 * Events namespace
	 *
	 * @type String
	 **/
	this.namespace = namespace;

	/**
	 * Today timestamp
	 *
	 * @type Number
	 **/
	this.today = (new Date(date.getFullYear(), date.getMonth(), date.getDate())).getTime()/1000;
	
	/**
	 * Yesterday timestamp
	 *
	 * @type Number
	 **/
	this.yesterday = this.today - 86400;
	
	utc = this.options.UTCDate ? 'UTC' : '';
	
	this.getHours    = 'get'+utc+'Hours';
	this.getMinutes  = 'get'+utc+'Minutes';
	this.getSeconds  = 'get'+utc+'Seconds';
	this.getDate     = 'get'+utc+'Date';
	this.getDay      = 'get'+utc+'Day';
	this.getMonth    = 'get'+utc+'Month';
	this.getFullYear = 'get'+utc+'FullYear';
	
	/**
	 * elFinder node z-index (auto detect on elFinder load)
	 *
	 * @type null | Number
	 **/
	this.zIndex;

	/**
	 * Current search status
	 * 
	 * @type Object
	 */
	this.searchStatus = {
		state  : 0, // 0: search ended, 1: search started, 2: in search result
		query  : '',
		target : '',
		mime   : '',
		mixed  : false, // in multi volumes search: false or Array that target volume ids
		ininc  : false // in incremental search
	};

	/**
	 * Interface language
	 *
	 * @type String
	 * @default "en"
	 **/
	this.lang = this.storage('lang') || this.options.lang;
	if (this.lang === 'jp') {
		this.lang = this.options.lang = 'ja';
	}

	this.viewType = this.storage('view') || this.options.defaultView || 'icons';

	this.sortType = this.storage('sortType') || this.options.sortType || 'name';
	
	this.sortOrder = this.storage('sortOrder') || this.options.sortOrder || 'asc';

	this.sortStickFolders = this.storage('sortStickFolders');
	if (this.sortStickFolders === null) {
		this.sortStickFolders = !!this.options.sortStickFolders;
	} else {
		this.sortStickFolders = !!this.sortStickFolders;
	}

	this.sortAlsoTreeview = this.storage('sortAlsoTreeview');
	if (this.sortAlsoTreeview === null || this.options.sortAlsoTreeview === null) {
		this.sortAlsoTreeview = !!this.options.sortAlsoTreeview;
	} else {
		this.sortAlsoTreeview = !!this.sortAlsoTreeview;
	}

	this.sortRules = jQuery.extend(true, {}, this._sortRules, this.options.sortRules);
	
	jQuery.each(this.sortRules, function(name, method) {
		if (typeof method != 'function') {
			delete self.sortRules[name];
		} 
	});
	
	this.compare = jQuery.proxy(this.compare, this);
	
	/**
	 * Delay in ms before open notification dialog
	 *
	 * @type Number
	 * @default 500
	 **/
	this.notifyDelay = this.options.notifyDelay > 0 ? parseInt(this.options.notifyDelay) : 500;
	
	/**
	 * Dragging UI Helper object
	 *
	 * @type jQuery | null
	 **/
	this.draggingUiHelper = null;
	
	/**
	 * Base droppable options
	 *
	 * @type Object
	 **/
	this.droppable = {
		greedy     : true,
		tolerance  : 'pointer',
		accept     : '.elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename',
		hoverClass : this.res('class', 'adroppable'),
		classes    : { // Deprecated hoverClass jQueryUI>=1.12.0
			'ui-droppable-hover': this.res('class', 'adroppable')
		},
		autoDisable: true, // elFinder original, see jquery.elfinder.js
		drop : function(e, ui) {
			var dst     = jQuery(this),
				targets = jQuery.grep(ui.helper.data('files')||[], function(h) { return h? true : false; }),
				result  = [],
				dups    = [],
				faults  = [],
				isCopy  = ui.helper.hasClass('elfinder-drag-helper-plus'),
				c       = 'class',
				cnt, hash, i, h;
			
			if (typeof e.button === 'undefined' || ui.helper.data('namespace') !== namespace || ! self.insideWorkzone(e.pageX, e.pageY)) {
				return false;
			}
			if (dst.hasClass(self.res(c, 'cwdfile'))) {
				hash = self.cwdId2Hash(dst.attr('id'));
			} else if (dst.hasClass(self.res(c, 'navdir'))) {
				hash = self.navId2Hash(dst.attr('id'));
			} else {
				hash = cwd;
			}

			cnt = targets.length;
			
			while (cnt--) {
				h = targets[cnt];
				// ignore drop into itself or in own location
				if (h != hash && files[h].phash != hash) {
					result.push(h);
				} else {
					((isCopy && h !== hash && files[hash].write)? dups : faults).push(h);
				}
			}
			
			if (faults.length) {
				return false;
			}
			
			ui.helper.data('droped', true);
			
			if (dups.length) {
				ui.helper.hide();
				self.exec('duplicate', dups, {_userAction: true});
			}
			
			if (result.length) {
				ui.helper.hide();
				self.clipboard(result, !isCopy);
				self.exec('paste', hash, {_userAction: true}, hash).always(function(){
					self.clipboard([]);
					self.trigger('unlockfiles', {files : targets});
				});
				self.trigger('drop', {files : targets});
			}
		}
	};
	
	/**
	 * Return true if filemanager is active
	 *
	 * @return Boolean
	 **/
	this.enabled = function() {
		return enabled && this.visible();
	};
	
	/**
	 * Return true if filemanager is visible
	 *
	 * @return Boolean
	 **/
	this.visible = function() {
		return node[0].elfinder && node.is(':visible');
	};
	
	/**
	 * Return file is root?
	 * 
	 * @param  Object  target file object
	 * @return Boolean
	 */
	this.isRoot = function(file) {
		return (file.isroot || ! file.phash)? true : false;
	};
	
	/**
	 * Return root dir hash for current working directory
	 * 
	 * @param  String   target hash
	 * @param  Boolean  include fake parent (optional)
	 * @return String
	 */
	this.root = function(hash, fake) {
		hash = hash || cwd;
		var dir, i;
		
		if (! fake) {
			jQuery.each(self.roots, function(id, rhash) {
				if (hash.indexOf(id) === 0) {
					dir = rhash;
					return false;
				}
			});
			if (dir) {
				return dir;
			}
		}
		
		dir = files[hash];
		while (dir && dir.phash && (fake || ! dir.isroot)) {
			dir = files[dir.phash];
		}
		if (dir) {
			return dir.hash;
		}
		
		while (i in files && files.hasOwnProperty(i)) {
			dir = files[i];
			if (dir.mime === 'directory' && !dir.phash && dir.read) {
				return dir.hash;
			}
		}
		
		return '';
	};
	
	/**
	 * Return current working directory info
	 * 
	 * @return Object
	 */
	this.cwd = function() {
		return files[cwd] || {};
	};
	
	/**
	 * Return required cwd option
	 * 
	 * @param  String  option name
	 * @param  String  target hash (optional)
	 * @return mixed
	 */
	this.option = function(name, target) {
		var res, item;
		target = target || cwd;
		if (self.optionsByHashes[target] && typeof self.optionsByHashes[target][name] !== 'undefined') {
			return self.optionsByHashes[target][name];
		}
		if (self.hasVolOptions && cwd !== target && (!(item = self.file(target)) || item.phash !== cwd)) {
			res = '';
			jQuery.each(self.volOptions, function(id, opt) {
				if (target.indexOf(id) === 0) {
					res = opt[name] || '';
					return false;
				}
			});
			return res;
		} else {
			return cwdOptions[name] || '';
		}
	};
	
	/**
	 * Return disabled commands by each folder
	 * 
	 * @param  Array  target hashes
	 * @return Array
	 */
	this.getDisabledCmds = function(targets, flip) {
		var disabled = {'hidden': true};
		if (! Array.isArray(targets)) {
			targets = [ targets ];
		}
		jQuery.each(targets, function(i, h) {
			var disCmds = self.option('disabledFlip', h);
			if (disCmds) {
				Object.assign(disabled, disCmds);
			}
		});
		return flip? disabled : Object.keys(disabled);
	};
	
	/**
	 * Return file data from current dir or tree by it's hash
	 * 
	 * @param  String  file hash
	 * @return Object
	 */
	this.file = function(hash, alsoHidden) { 
		return hash? (files[hash] || (alsoHidden? hiddenFiles[hash] : void(0))) : void(0); 
	};
	
	/**
	 * Return all cached files
	 * 
	 * @param  String  parent hash
	 * @return Object
	 */
	this.files = function(phash) {
		var items = {};
		if (phash) {
			if (!ownFiles[phash]) {
				return {};
			}
			jQuery.each(ownFiles[phash], function(h) {
				if (files[h]) {
					items[h] = files[h];
				} else {
					delete ownFiles[phash][h];
				}
			});
			return Object.assign({}, items);
		}
		return Object.assign({}, files);
	};
	
	/**
	 * Return list of file parents hashes include file hash
	 * 
	 * @param  String  file hash
	 * @return Array
	 */
	this.parents = function(hash) {
		var parents = [],
			dir;
		
		while (hash && (dir = this.file(hash))) {
			parents.unshift(dir.hash);
			hash = dir.phash;
		}
		return parents;
	};
	
	this.path2array = function(hash, i18) {
		var file, 
			path = [];
			
		while (hash) {
			if ((file = files[hash]) && file.hash) {
				path.unshift(i18 && file.i18 ? file.i18 : file.name);
				hash = file.isroot? null : file.phash;
			} else {
				path = [];
				break;
			}
		}
			
		return path;
	};
	
	/**
	 * Return file path or Get path async with jQuery.Deferred
	 * 
	 * @param  Object  file
	 * @param  Boolean i18
	 * @param  Object  asyncOpt
	 * @return String|jQuery.Deferred
	 */
	this.path = function(hash, i18, asyncOpt) { 
		var path = files[hash] && files[hash].path
			? files[hash].path
			: this.path2array(hash, i18).join(cwdOptions.separator);
		if (! asyncOpt || ! files[hash]) {
			return path;
		} else {
			asyncOpt = Object.assign({notify: {type : 'parents', cnt : 1, hideCnt : true}}, asyncOpt);
			
			var dfd    = jQuery.Deferred(),
				notify = asyncOpt.notify,
				noreq  = false,
				req    = function() {
					self.request({
						data : {cmd : 'parents', target : files[hash].phash},
						notify : notify,
						preventFail : true
					})
					.done(done)
					.fail(function() {
						dfd.reject();
					});
				},
				done   = function() {
					self.one('parentsdone', function() {
						path = self.path(hash, i18);
						if (path === '' && noreq) {
							//retry with request
							noreq = false;
							req();
						} else {
							if (notify) {
								clearTimeout(ntftm);
								notify.cnt = -(parseInt(notify.cnt || 0));
								self.notify(notify);
							}
							dfd.resolve(path);
						}
					});
				},
				ntftm;
		
			if (path) {
				return dfd.resolve(path);
			} else {
				if (self.ui['tree']) {
					// try as no request
					if (notify) {
						ntftm = setTimeout(function() {
							self.notify(notify);
						}, self.notifyDelay);
					}
					noreq = true;
					done(true);
				} else {
					req();
				}
				return dfd;
			}
		}
	};
	
	/**
	 * Return file url if set
	 * 
	 * @param  String  file hash
	 * @param  Object  Options
	 * @return String|Object of jQuery Deferred
	 */
	this.url = function(hash, o) {
		var file   = files[hash],
			opts   = o || {},
			async  = opts.async || false,
			temp   = opts.temporary || false,
			onetm  = (opts.onetime && self.option('onetimeUrl', hash)) || false,
			absurl = opts.absurl || false,
			dfrd   = (async || onetm)? jQuery.Deferred() : null,
			filter = function(url) {
				if (url && absurl) {
					url = self.convAbsUrl(url);
				}
				return url;
			},
			getUrl = function(url) {
				if (url) {
					return filter(url);
				}
				if (file.url) {
					return filter(file.url);
				}
				
				if (typeof baseUrl === 'undefined') {
					baseUrl = self.option('url', (!self.isRoot(file) && file.phash) || file.hash);
				}
				
				if (baseUrl) {
					return filter(baseUrl + jQuery.map(self.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/'));
				}

				var params = Object.assign({}, self.customData, {
					cmd: 'file',
					target: file.hash
				});
				if (self.oldAPI) {
					params.cmd = 'open';
					params.current = file.phash;
				}
				return filter(self.options.url + (self.options.url.indexOf('?') === -1 ? '?' : '&') + jQuery.param(params, true));
			}, 
			baseUrl, res;
		
		if (!file || !file.read) {
			return async? dfrd.resolve('') : '';
		}
		
		if (onetm) {
			async = true;
			this.request({
				data : { cmd : 'url', target : hash, options : { onetime: 1 } },
				preventDefault : true,
				options: {async: async},
				notify: {type : 'file', cnt : 1, hideCnt : true}
			}).done(function(data) {
				dfrd.resolve(filter(data.url || ''));
			}).fail(function() {
				dfrd.resolve('');
			});
		} else {
			if (file.url == '1' || (temp && !file.url && !(baseUrl = self.option('url', (!self.isRoot(file) && file.phash) || file.hash)))) {
				this.request({
					data : { cmd : 'url', target : hash, options : { temporary: temp? 1 : 0 } },
					preventDefault : true,
					options: {async: async},
					notify: async? {type : temp? 'file' : 'url', cnt : 1, hideCnt : true} : {}
				})
				.done(function(data) {
					file.url = data.url || '';
				})
				.fail(function() {
					file.url = '';
				})
				.always(function() {
					var url;
					if (file.url && temp) {
						url = file.url;
						file.url = '1'; // restore
					}
					if (async) {
						dfrd.resolve(getUrl(url));
					} else {
						return getUrl(url);
					}
				});
			} else {
				if (async) {
					dfrd.resolve(getUrl());
				} else {
					return getUrl();
				}
			}
		}
		if (async) {
			return dfrd;
		}
	};
	
	/**
	 * Return file url for the extarnal service
	 *
	 * @param      String  hash     The hash
	 * @param      Object  options  The options
	 * @return     Object  jQuery Deferred
	 */
	this.forExternalUrl = function(hash, options) {
		var onetime = self.option('onetimeUrl', hash),
			opts = {
				async: true,
				absurl: true
			};

		opts[onetime? 'onetime' : 'temporary'] = true;
		return self.url(hash, Object.assign({}, options, opts));
	};

	/**
	 * Return file url for open in elFinder
	 * 
	 * @param  String  file hash
	 * @param  Boolean for download link
	 * @return String
	 */
	this.openUrl = function(hash, download) {
		var file = files[hash],
			url  = '';
		
		if (!file || !file.read) {
			return '';
		}
		
		if (!download) {
			if (file.url) {
				if (file.url != 1) {
					url = file.url;
				}
			} else if (cwdOptions.url && file.hash.indexOf(self.cwd().volumeid) === 0) {
				url = cwdOptions.url + jQuery.map(this.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/');
			}
			if (url) {
				url += (url.match(/\?/)? '&' : '?') + '_'.repeat((url.match(/[\?&](_+)t=/g) || ['&t=']).sort().shift().match(/[\?&](_*)t=/)[1].length + 1) + 't=' + (file.ts || parseInt(+new Date()/1000));
				return url;
			}
		}
		
		url = this.options.url;
		url = url + (url.indexOf('?') === -1 ? '?' : '&')
			+ (this.oldAPI ? 'cmd=open&current='+file.phash : 'cmd=file')
			+ '&target=' + file.hash
			+ '&_t=' + (file.ts || parseInt(+new Date()/1000));
		
		if (download) {
			url += '&download=1';
		}
		
		jQuery.each(this.customData, function(key, val) {
			url += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val);
		});
		
		return url;
	};
	
	/**
	 * Return thumbnail url
	 * 
	 * @param  Object  file object
	 * @return String
	 */
	this.tmb = function(file) {
		var tmbUrl, tmbCrop,
			cls    = 'elfinder-cwd-bgurl',
			url    = '';

		if (jQuery.isPlainObject(file)) {
			if (self.searchStatus.state && file.hash.indexOf(self.cwd().volumeid) !== 0) {
				tmbUrl = self.option('tmbUrl', file.hash);
				tmbCrop = self.option('tmbCrop', file.hash);
			} else {
				tmbUrl = cwdOptions['tmbUrl'];
				tmbCrop = cwdOptions['tmbCrop'];
			}
			if (tmbCrop) {
				cls += ' elfinder-cwd-bgurl-crop';
			}
			if (tmbUrl === 'self' && file.mime.indexOf('image/') === 0) {
				url = self.openUrl(file.hash);
				cls += ' elfinder-cwd-bgself';
			} else if ((self.oldAPI || tmbUrl) && file && file.tmb && file.tmb != 1) {
				url = tmbUrl + file.tmb;
			} else if (self.newAPI && file && file.tmb && file.tmb != 1) {
				url = file.tmb;
			}
			if (url) {
				if (file.ts && tmbUrl !== 'self') {
					url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts;
				}
				return { url: url, className: cls };
			}
		}
		
		return false;
	};
	
	/**
	 * Return selected files hashes
	 *
	 * @return Array
	 **/
	this.selected = function() {
		return selected.slice(0);
	};
	
	/**
	 * Return selected files info
	 * 
	 * @return Array
	 */
	this.selectedFiles = function() {
		return jQuery.map(selected, function(hash) { return files[hash] ? Object.assign({}, files[hash]) : null; });
	};
	
	/**
	 * Return true if file with required name existsin required folder
	 * 
	 * @param  String  file name
	 * @param  String  parent folder hash
	 * @return Boolean
	 */
	this.fileByName = function(name, phash) {
		var hash;
	
		for (hash in files) {
			if (files.hasOwnProperty(hash) && files[hash].phash == phash && files[hash].name == name) {
				return files[hash];
			}
		}
	};
	
	/**
	 * Valid data for required command based on rules
	 * 
	 * @param  String  command name
	 * @param  Object  cammand's data
	 * @return Boolean
	 */
	this.validResponse = function(cmd, data) {
		return data.error || this.rules[this.rules[cmd] ? cmd : 'defaults'](data);
	};
	
	/**
	 * Return bytes from ini formated size
	 * 
	 * @param  String  ini formated size
	 * @return Integer
	 */
	this.returnBytes = function(val) {
		var last;
		if (isNaN(val)) {
			if (! val) {
				val = '';
			}
			// for ex. 1mb, 1KB
			val = val.replace(/b$/i, '');
			last = val.charAt(val.length - 1).toLowerCase();
			val = val.replace(/[tgmk]$/i, '');
			if (last == 't') {
				val = val * 1024 * 1024 * 1024 * 1024;
			} else if (last == 'g') {
				val = val * 1024 * 1024 * 1024;
			} else if (last == 'm') {
				val = val * 1024 * 1024;
			} else if (last == 'k') {
				val = val * 1024;
			}
			val = isNaN(val)? 0 : parseInt(val);
		} else {
			val = parseInt(val);
			if (val < 1) val = 0;
		}
		return val;
	};
	
	/**
	 * Process ajax request.
	 * Fired events :
	 * @todo
	 * @example
	 * @todo
	 * @return jQuery.Deferred
	 */
	this.request = function(opts) { 
		var self     = this,
			o        = this.options,
			dfrd     = jQuery.Deferred(),
			// request ID
			reqId    = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16), 
			// request data
			data     = Object.assign({}, self.customData, {mimes : o.onlyMimes}, opts.data || opts),
			// command name
			cmd      = data.cmd,
			// request type is binary
			isBinary = (opts.options || {}).dataType === 'binary',
			// current cmd is "open"
			isOpen   = (!opts.asNotOpen && cmd === 'open'),
			// call default fail callback (display error dialog) ?
			deffail  = !(isBinary || opts.preventDefault || opts.preventFail),
			// call default success callback ?
			defdone  = !(isBinary || opts.preventDefault || opts.preventDone),
			// options for notify dialog
			notify   = Object.assign({}, opts.notify),
			// make cancel button
			cancel   = !!opts.cancel,
			// do not normalize data - return as is
			raw      = isBinary || !!opts.raw,
			// sync files on request fail
			syncOnFail = opts.syncOnFail,
			// use lazy()
			lazy     = !!opts.lazy,
			// prepare function before done()
			prepare  = opts.prepare,
			// navigate option object when cmd done
			navigate = opts.navigate,
			// open notify dialog timeout
			timeout,
			// use browser cache
			useCache = (opts.options || {}).cache,
			// request options
			options = Object.assign({
				url      : o.url,
				async    : true,
				type     : this.requestType,
				dataType : 'json',
				cache    : (self.api >= 2.1029), // api >= 2.1029 has unique request ID
				data     : data,
				headers  : this.customHeaders,
				xhrFields: this.xhrFields
			}, opts.options || {}),
			/**
			 * Default success handler. 
			 * Call default data handlers and fire event with command name.
			 *
			 * @param Object  normalized response data
			 * @return void
			 **/
			done = function(data) {
				data.warning && self.error(data.warning);
				
				if (isOpen) {
					open(data);
				} else {
					self.updateCache(data);
				}
				
				data.changed && data.changed.length && change(data.changed);
				
				self.lazy(function() {
					// fire some event to update cache/ui
					data.removed && data.removed.length && self.remove(data);
					data.added   && data.added.length   && self.add(data);
					data.changed && data.changed.length && self.change(data);
				}).then(function() {
					// fire event with command name
					return self.lazy(function() {
						self.trigger(cmd, data, false);
					});
				}).then(function() {
					// fire event with command name + 'done'
					return self.lazy(function() {
						self.trigger(cmd + 'done');
					});
				}).then(function() {
					// make toast message
					if (data.toasts && Array.isArray(data.toasts)) {
						jQuery.each(data.toasts, function() {
							this.msg && self.toast(this);
						});
					}
					// force update content
					data.sync && self.sync();
				});
			},
			/**
			 * Request error handler. Reject dfrd with correct error message.
			 *
			 * @param jqxhr  request object
			 * @param String request status
			 * @return void
			 **/
			error = function(xhr, status) {
				var error, data, 
					d = self.options.debug;
				
				switch (status) {
					case 'abort':
						error = xhr.quiet ? '' : ['errConnect', 'errAbort'];
						break;
					case 'timeout':	    
						error = ['errConnect', 'errTimeout'];
						break;
					case 'parsererror': 
						error = ['errResponse', 'errDataNotJSON'];
						if (xhr.responseText) {
							if (! cwd || (d && (d === 'all' || d['backend-error']))) {
								error.push(xhr.responseText);
							}
						}
						break;
					default:
						if (xhr.responseText) {
							// check responseText, Is that JSON?
							try {
								data = JSON.parse(xhr.responseText);
								if (data && data.error) {
									error = data.error;
								}
							} catch(e) {}
						}
						if (! error) {
							if (xhr.status == 403) {
								error = ['errConnect', 'errAccess', 'HTTP error ' + xhr.status];
							} else if (xhr.status == 404) {
								error = ['errConnect', 'errNotFound', 'HTTP error ' + xhr.status];
							} else if (xhr.status >= 500) {
								error = ['errResponse', 'errServerError', 'HTTP error ' + xhr.status];
							} else {
								if (xhr.status == 414 && options.type === 'get') {
									// retry by POST method
									options.type = 'post';
									self.abortXHR(xhr);
									dfrd.xhr = xhr = self.transport.send(options).fail(error).done(success);
									return;
								}
								error = xhr.quiet ? '' : ['errConnect', 'HTTP error ' + xhr.status];
							} 
						}
				}
				
				self.trigger(cmd + 'done');
				dfrd.reject({error: error}, xhr, status);
			},
			/**
			 * Request success handler. Valid response data and reject/resolve dfrd.
			 *
			 * @param Object  response data
			 * @param String request status
			 * @return void
			 **/
			success = function(response) {
				var d = self.options.debug;
				
				// Set currrent request command name
				self.currentReqCmd = cmd;
				
				if (response.debug && (!d || d !== 'all')) {
					if (!d) {
						d = self.options.debug = {};
					}
					d['backend-error'] = true;
					d['warning'] = true;
				}
				
				if (raw) {
					self.abortXHR(xhr);
					response && response.debug && self.debug('backend-debug', response);
					return dfrd.resolve(response);
				}
				
				if (!response) {
					return dfrd.reject({error :['errResponse', 'errDataEmpty']}, xhr, response);
				} else if (!jQuery.isPlainObject(response)) {
					return dfrd.reject({error :['errResponse', 'errDataNotJSON']}, xhr, response);
				} else if (response.error) {
					if (isOpen) {
						// check leafRoots
						jQuery.each(self.leafRoots, function(phash, roots) {
							self.leafRoots[phash] = jQuery.grep(roots, function(h) { return h !== data.target; });
						});
					}
					return dfrd.reject({error :response.error}, xhr, response);
				}
				
				var resolve = function() {
					var pushLeafRoots = function(name) {
						if (self.leafRoots[data.target] && response[name]) {
							jQuery.each(self.leafRoots[data.target], function(i, h) {
								var root;
								if (root = self.file(h)) {
									response[name].push(root);
								}
							});
						}
					},
					setTextMimes = function() {
						self.textMimes = {};
						jQuery.each(self.res('mimes', 'text'), function() {
							self.textMimes[this.toLowerCase()] = true;
						});
					},
					actionTarget;
					
					if (isOpen) {
						pushLeafRoots('files');
					} else if (cmd === 'tree') {
						pushLeafRoots('tree');
					}
					
					response = self.normalize(response);
					
					if (!self.validResponse(cmd, response)) {
						return dfrd.reject({error :(response.norError || 'errResponse')}, xhr, response);
					}
					
					if (isOpen) {
						if (!self.api) {
							self.api    = response.api || 1;
							if (self.api == '2.0' && typeof response.options.uploadMaxSize !== 'undefined') {
								self.api = '2.1';
							}
							self.newAPI = self.api >= 2;
							self.oldAPI = !self.newAPI;
						}
						
						if (response.textMimes && Array.isArray(response.textMimes)) {
							self.resources.mimes.text = response.textMimes;
							setTextMimes();
						}
						!self.textMimes && setTextMimes();
						
						if (response.options) {
							cwdOptions = Object.assign({}, cwdOptionsDefault, response.options);
						}

						if (response.netDrivers) {
							self.netDrivers = response.netDrivers;
						}

						if (response.maxTargets) {
							self.maxTargets = response.maxTargets;
						}

						if (!!data.init) {
							self.uplMaxSize = self.returnBytes(response.uplMaxSize);
							self.uplMaxFile = !!response.uplMaxFile? Math.min(parseInt(response.uplMaxFile), 50) : 20;
						}
					}

					if (typeof prepare === 'function') {
						prepare(response);
					}
					
					if (navigate) {
						actionTarget = navigate.target || 'added';
						if (response[actionTarget] && response[actionTarget].length) {
							self.one(cmd + 'done', function() {
								var targets  = response[actionTarget],
									newItems = self.findCwdNodes(targets),
									inCwdHashes = function() {
										var cwdHash = self.cwd().hash;
										return jQuery.map(targets, function(f) { return (f.phash && cwdHash === f.phash)? f.hash : null; });
									},
									hashes   = inCwdHashes(),
									makeToast  = function(t) {
										var node = void(0),
											data = t.action? t.action.data : void(0),
											cmd, msg, done;
										if ((data || hashes.length) && t.action && (msg = t.action.msg) && (cmd = t.action.cmd) && (!t.action.cwdNot || t.action.cwdNot !== self.cwd().hash)) {
											done = t.action.done;
											data = t.action.data;
											node = jQuery('<div/>')
												.append(
													jQuery('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'
														+self.i18n(msg)
														+'</span></button>')
													.on('mouseenter mouseleave', function(e) { 
														jQuery(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
													})
													.on('click', function() {
														self.exec(cmd, data || hashes, {_userAction: true, _currentType: 'toast', _currentNode: jQuery(this) });
														if (done) {
															self.one(cmd+'done', function() {
																if (typeof done === 'function') {
																	done();
																} else if (done === 'select') {
																	self.trigger('selectfiles', {files : inCwdHashes()});
																}
															});
														}
													})
												);
										}
										delete t.action;
										t.extNode = node;
										return t;
									};
								
								if (! navigate.toast) {
									navigate.toast = {};
								}
								
								!navigate.noselect && self.trigger('selectfiles', {files : self.searchStatus.state > 1 ? jQuery.map(targets, function(f) { return f.hash; }) : hashes});
								
								if (newItems.length) {
									if (!navigate.noscroll) {
										newItems.first().trigger('scrolltoview', {blink : false});
										self.resources.blink(newItems, 'lookme');
									}
									if (jQuery.isPlainObject(navigate.toast.incwd)) {
										self.toast(makeToast(navigate.toast.incwd));
									}
								} else {
									if (jQuery.isPlainObject(navigate.toast.inbuffer)) {
										self.toast(makeToast(navigate.toast.inbuffer));
									}
								}
							});
						}
					}
					
					dfrd.resolve(response);
					
					response.debug && self.debug('backend-debug', response);
				};
				self.abortXHR(xhr);
				lazy? self.lazy(resolve) : resolve();
			},
			xhr, _xhr,
			xhrAbort = function(e) {
				if (xhr && xhr.state() === 'pending') {
					self.abortXHR(xhr, { quiet: true , abort: true });
					if (!e || (e.type !== 'unload' && e.type !== 'destroy')) {
						self.autoSync();
					}
				}
			},
			abort = function(e){
				self.trigger(cmd + 'done');
				if (e.type == 'autosync') {
					if (e.data.action != 'stop') return;
				} else if (e.type != 'unload' && e.type != 'destroy' && e.type != 'openxhrabort') {
					if (!e.data.added || !e.data.added.length) {
						return;
					}
				}
				xhrAbort(e);
			},
			request = function(mode) {
				var queueAbort = function() {
					syncOnFail = false;
					dfrd.reject();
				};
				
				if (mode) {
					if (mode === 'cmd') {
						return cmd;
					}
				}
				
				if (isOpen) {
					if (requestQueueSkipOpen) {
						return dfrd.reject();
					}
					requestQueueSkipOpen = true;
				}
				
				dfrd.always(function() {
					delete options.headers['X-elFinderReqid'];
				}).fail(function(error, xhr, response) {
					var errData = {
						cmd: cmd,
						err: error,
						xhr: xhr,
						rc: response
					};

					// unset this cmd queue when user canceling
					// see notify : function - `cancel.reject(0);`
					if (error === 0) {
						if (requestQueue.length) {
							requestQueue = jQuery.grep(requestQueue, function(req) {
								return (req('cmd') === cmd) ? false : true;
							});
						}
					}
					// trigger "requestError" event
					self.trigger('requestError', errData);
					if (errData._event && errData._event.isDefaultPrevented()) {
						deffail = false;
						syncOnFail = false;
						if (error) {
							error.error = '';
						}
					}
					// abort xhr
					xhrAbort();
					if (isOpen) {
						openDir = self.file(data.target);
						openDir && openDir.volumeid && self.isRoot(openDir) && delete self.volumeExpires[openDir.volumeid];
					}
					self.trigger(cmd + 'fail', response);
					if (error) {
						deffail ? self.error(error) : self.debug('error', self.i18n(error));
					}
					syncOnFail && self.sync();
				});

				if (!cmd) {
					syncOnFail = false;
					return dfrd.reject({error :'errCmdReq'});
				}
				
				if (self.maxTargets && data.targets && data.targets.length > self.maxTargets) {
					syncOnFail = false;
					return dfrd.reject({error :['errMaxTargets', self.maxTargets]});
				}

				defdone && dfrd.done(done);
				
				// quiet abort not completed "open" requests
				if (isOpen) {
					while ((_xhr = queue.pop())) {
						_xhr.queueAbort();
					}
					if (cwd !== data.target) {
						while ((_xhr = cwdQueue.pop())) {
							_xhr.queueAbort();
						}
					}
				}

				// trigger abort autoSync for commands to add the item
				if (jQuery.inArray(cmd, (self.cmdsToAdd + ' autosync').split(' ')) !== -1) {
					if (cmd !== 'autosync') {
						self.autoSync('stop');
						dfrd.always(function() {
							self.autoSync();
						});
					}
					self.trigger('openxhrabort');
				}

				delete options.preventFail;

				if (self.api >= 2.1029) {
					if (useCache) {
						options.headers['X-elFinderReqid'] = reqId;
					} else {
						Object.assign(options.data, { reqid : reqId });
					}
				}
				
				// function for set value of this syncOnFail
				dfrd.syncOnFail = function(state) {
					syncOnFail = !!state;
				};

				requestCnt++;

				dfrd.xhr = xhr = self.transport.send(options).always(function() {
					// set responseURL from native xhr object
					if (options._xhr && typeof options._xhr.responseURL !== 'undefined') {
						xhr.responseURL = options._xhr.responseURL || '';
					}
					--requestCnt;
					if (requestQueue.length) {
						requestQueue.shift()();
					} else {
						requestQueueSkipOpen = false;
					}
				}).fail(error).done(success);
				
				if (self.api >= 2.1029) {
					xhr._requestId = reqId;
				}
				
				if (isOpen || (data.compare && cmd === 'info')) {
					// regist function queueAbort
					xhr.queueAbort = queueAbort;
					// add autoSync xhr into queue
					queue.unshift(xhr);
					// bind abort()
					data.compare && self.bind(self.cmdsToAdd + ' autosync openxhrabort', abort);
					dfrd.always(function() {
						var ndx = jQuery.inArray(xhr, queue);
						data.compare && self.unbind(self.cmdsToAdd + ' autosync openxhrabort', abort);
						ndx !== -1 && queue.splice(ndx, 1);
					});
				} else if (jQuery.inArray(cmd, self.abortCmdsOnOpen) !== -1) {
					// regist function queueAbort
					xhr.queueAbort = queueAbort;
					// add "open" xhr, only cwd xhr into queue
					cwdQueue.unshift(xhr);
					dfrd.always(function() {
						var ndx = jQuery.inArray(xhr, cwdQueue);
						ndx !== -1 && cwdQueue.splice(ndx, 1);
					});
				}
				
				// abort pending xhr on window unload or elFinder destroy
				self.bind('unload destroy', abort);
				dfrd.always(function() {
					self.unbind('unload destroy', abort);
				});
				
				return dfrd;
			},
			queueingRequest = function() {
				// show notify
				if (notify.type && notify.cnt) {
					if (cancel) {
						notify.cancel = dfrd;
						opts.eachCancel && (notify.id = +new Date());
					}
					timeout = setTimeout(function() {
						self.notify(notify);
						dfrd.always(function() {
							notify.cnt = -(parseInt(notify.cnt)||0);
							self.notify(notify);
						});
					}, self.notifyDelay);
					
					dfrd.always(function() {
						clearTimeout(timeout);
					});
				}
				// queueing
				if (isOpen) {
					requestQueueSkipOpen = false;
				}
				if (requestCnt < requestMaxConn) {
					// do request
					return request();
				} else {
					if (isOpen) {
						requestQueue.unshift(request);
					} else {
						requestQueue.push(request);
					}
					return dfrd;
				}
			},
			bindData = {opts: opts, result: true},
			openDir;
		
		// prevent request initial request is completed
		if (!self.api && !data.init) {
			syncOnFail = false;
			return dfrd.reject();
		}

		// trigger "request.cmd" that callback be able to cancel request by substituting "false" for "event.data.result"
		self.trigger('request.' + cmd, bindData, true);
		
		if (! bindData.result) {
			self.trigger(cmd + 'done');
			return dfrd.reject();
		} else if (typeof bindData.result === 'object' && bindData.result.promise) {
			bindData.result
				.done(queueingRequest)
				.fail(function() {
					self.trigger(cmd + 'done');
					dfrd.reject();
				});
			return dfrd;
		}
		
		return queueingRequest();
	};
	
	/**
	 * Call cache()
	 * Store info about files/dirs in "files" object.
	 *
	 * @param  Array  files
	 * @return void
	 */
	this.cache = function(dataArray) {
		if (! Array.isArray(dataArray)) {
			dataArray = [ dataArray ];
		}
		cache(dataArray);
	};
	
	/**
	 * Update file object caches by respose data object
	 * 
	 * @param  Object  respose data object
	 * @return void
	 */
	this.updateCache = function(data) {
		if (jQuery.isPlainObject(data)) {
			data.files && data.files.length && cache(data.files, 'files');
			data.tree && data.tree.length && cache(data.tree, 'tree');
			data.removed && data.removed.length && remove(data.removed);
			data.added && data.added.length && cache(data.added, 'add');
			data.changed && data.changed.length && change(data.changed, 'change');
		}
	};
	
	/**
	 * Compare current files cache with new files and return diff
	 * 
	 * @param  Array   new files
	 * @param  String  target folder hash
	 * @param  Array   exclude properties to compare
	 * @return Object
	 */
	this.diff = function(incoming, onlydir, excludeProps) {
		var raw       = {},
			added     = [],
			removed   = [],
			changed   = [],
			excludes  = null,
			isChanged = function(hash) {
				var l = changed.length;

				while (l--) {
					if (changed[l].hash == hash) {
						return true;
					}
				}
			};
		
		jQuery.each(incoming, function(i, f) {
			raw[f.hash] = f;
		});
		
		// make excludes object
		if (excludeProps && excludeProps.length) {
			excludes = {};
			jQuery.each(excludeProps, function() {
				excludes[this] = true;
			});
		}
		
		// find removed
		jQuery.each(files, function(hash, f) {
			if (! raw[hash] && (! onlydir || f.phash === onlydir)) {
				removed.push(hash);
			}
		});
		
		// compare files
		jQuery.each(raw, function(hash, file) {
			var origin  = files[hash],
				orgKeys = {},
				chkKeyLen;

			if (!origin) {
				added.push(file);
			} else {
				// make orgKeys object
				jQuery.each(Object.keys(origin), function() {
					orgKeys[this] = true;
				});
				jQuery.each(file, function(prop) {
					delete orgKeys[prop];
					if (! excludes || ! excludes[prop]) {
						if (file[prop] !== origin[prop]) {
							changed.push(file);
							orgKeys = {};
							return false;
						}
					}
				});
				chkKeyLen = Object.keys(orgKeys).length;
				if (chkKeyLen !== 0) {
					if (excludes) {
						jQuery.each(orgKeys, function(prop) {
							if (excludes[prop]) {
								--chkKeyLen;
							}
						});
					}
					(chkKeyLen !== 0) && changed.push(file);
				}
			}
		});
		
		// parents of removed dirs mark as changed (required for tree correct work)
		jQuery.each(removed, function(i, hash) {
			var file  = files[hash], 
				phash = file.phash;

			if (phash 
			&& file.mime == 'directory' 
			&& jQuery.inArray(phash, removed) === -1 
			&& raw[phash] 
			&& !isChanged(phash)) {
				changed.push(raw[phash]);
			}
		});
		
		return {
			added   : added,
			removed : removed,
			changed : changed
		};
	};
	
	/**
	 * Sync content
	 * 
	 * @return jQuery.Deferred
	 */
	this.sync = function(onlydir, polling) {
		this.autoSync('stop');
		var self  = this,
			compare = function(){
				var c = '', cnt = 0, mtime = 0;
				if (onlydir && polling) {
					jQuery.each(files, function(h, f) {
						if (f.phash && f.phash === onlydir) {
							++cnt;
							mtime = Math.max(mtime, f.ts);
						}
						c = cnt+':'+mtime;
					});
				}
				return c;
			},
			comp  = compare(),
			dfrd  = jQuery.Deferred().done(function() { self.trigger('sync'); }),
			opts = [this.request({
				data           : {cmd : 'open', reload : 1, target : cwd, tree : (! onlydir && this.ui.tree) ? 1 : 0, compare : comp},
				preventDefault : true
			})],
			exParents = function() {
				var parents = [],
					curRoot = self.file(self.root(cwd)),
					curId = curRoot? curRoot.volumeid : null,
					phash = self.cwd().phash,
					isroot,pdir;
				
				while(phash) {
					if (pdir = self.file(phash)) {
						if (phash.indexOf(curId) !== 0) {
							parents.push( {target: phash, cmd: 'tree'} );
							if (! self.isRoot(pdir)) {
								parents.push( {target: phash, cmd: 'parents'} );
							}
							curRoot = self.file(self.root(phash));
							curId = curRoot? curRoot.volumeid : null;
						}
						phash = pdir.phash;
					} else {
						phash = null;
					}
				}
				return parents;
			};
		
		if (! onlydir && self.api >= 2) {
			(cwd !== this.root()) && opts.push(this.request({
				data           : {cmd : 'parents', target : cwd},
				preventDefault : true
			}));
			jQuery.each(exParents(), function(i, data) {
				opts.push(self.request({
					data           : {cmd : data.cmd, target : data.target},
					preventDefault : true
				}));
			});
		}
		jQuery.when.apply($, opts)
		.fail(function(error, xhr) {
			if (! polling || jQuery.inArray('errOpen', error) !== -1) {
				dfrd.reject(error);
				self.parseError(error) && self.request({
					data   : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1},
					notify : {type : 'open', cnt : 1, hideCnt : true}
				});
			} else {
				dfrd.reject((error && xhr.status != 0)? error : void 0);
			}
		})
		.done(function(odata) {
			var pdata, argLen, i;
			
			if (odata.cwd.compare) {
				if (comp === odata.cwd.compare) {
					return dfrd.reject();
				}
			}
			
			// for 2nd and more requests
			pdata = {tree : []};
			
			// results marge of 2nd and more requests
			argLen = arguments.length;
			if (argLen > 1) {
				for(i = 1; i < argLen; i++) {
					if (arguments[i].tree && arguments[i].tree.length) {
						pdata.tree.push.apply(pdata.tree, arguments[i].tree);
					}
				}
			}
			
			if (self.api < 2.1) {
				if (! pdata.tree) {
					pdata.tree = [];
				}
				pdata.tree.push(odata.cwd);
			}
			
			// data normalize
			odata = self.normalize(odata);
			if (!self.validResponse('open', odata)) {
				return dfrd.reject((odata.norError || 'errResponse'));
			}
			pdata = self.normalize(pdata);
			if (!self.validResponse('tree', pdata)) {
				return dfrd.reject((pdata.norError || 'errResponse'));
			}
			
			var diff = self.diff(odata.files.concat(pdata && pdata.tree ? pdata.tree : []), onlydir);

			diff.added.push(odata.cwd);
			
			self.updateCache(diff);
			
			// trigger events
			diff.removed.length && self.remove(diff);
			diff.added.length   && self.add(diff);
			diff.changed.length && self.change(diff);
			return dfrd.resolve(diff);
		})
		.always(function() {
			self.autoSync();
		});
		
		return dfrd;
	};
	
	this.upload = function(files) {
		return this.transport.upload(files, this);
	};
	
	/**
	 * Bind keybord shortcut to keydown event
	 *
	 * @example
	 *    elfinder.shortcut({ 
	 *       pattern : 'ctrl+a', 
	 *       description : 'Select all files', 
	 *       callback : function(e) { ... }, 
	 *       keypress : true|false (bind to keypress instead of keydown) 
	 *    })
	 *
	 * @param  Object  shortcut config
	 * @return elFinder
	 */
	this.shortcut = function(s) {
		var patterns, pattern, code, i, parts;
		
		if (this.options.allowShortcuts && s.pattern && jQuery.isFunction(s.callback)) {
			patterns = s.pattern.toUpperCase().split(/\s+/);
			
			for (i= 0; i < patterns.length; i++) {
				pattern = patterns[i];
				parts   = pattern.split('+');
				code    = (code = parts.pop()).length == 1 
					? (code > 0 ? code : code.charCodeAt(0))
					: (code > 0 ? code : jQuery.ui.keyCode[code]);

				if (code && !shortcuts[pattern]) {
					shortcuts[pattern] = {
						keyCode     : code,
						altKey      : jQuery.inArray('ALT', parts)   != -1,
						ctrlKey     : jQuery.inArray('CTRL', parts)  != -1,
						shiftKey    : jQuery.inArray('SHIFT', parts) != -1,
						type        : s.type || 'keydown',
						callback    : s.callback,
						description : s.description,
						pattern     : pattern
					};
				}
			}
		}
		return this;
	};
	
	/**
	 * Registered shortcuts
	 *
	 * @type Object
	 **/
	this.shortcuts = function() {
		var ret = [];
		
		jQuery.each(shortcuts, function(i, s) {
			ret.push([s.pattern, self.i18n(s.description)]);
		});
		return ret;
	};
	
	/**
	 * Get/set clipboard content.
	 * Return new clipboard content.
	 *
	 * @example
	 *   this.clipboard([]) - clean clipboard
	 *   this.clipboard([{...}, {...}], true) - put 2 files in clipboard and mark it as cutted
	 * 
	 * @param  Array    new files hashes
	 * @param  Boolean  cut files?
	 * @return Array
	 */
	this.clipboard = function(hashes, cut) {
		var map = function() { return jQuery.map(clipboard, function(f) { return f.hash; }); };

		if (hashes !== void(0)) {
			clipboard.length && this.trigger('unlockfiles', {files : map()});
			remember = {};
			
			clipboard = jQuery.map(hashes||[], function(hash) {
				var file = files[hash];
				if (file) {
					
					remember[hash] = true;
					
					return {
						hash   : hash,
						phash  : file.phash,
						name   : file.name,
						mime   : file.mime,
						read   : file.read,
						locked : file.locked,
						cut    : !!cut
					};
				}
				return null;
			});
			this.trigger('changeclipboard', {clipboard : clipboard.slice(0, clipboard.length)});
			cut && this.trigger('lockfiles', {files : map()});
		}

		// return copy of clipboard instead of refrence
		return clipboard.slice(0, clipboard.length);
	};
	
	/**
	 * Return true if command enabled
	 * 
	 * @param  String       command name
	 * @param  String|void  hash for check of own volume's disabled cmds
	 * @return Boolean
	 */
	this.isCommandEnabled = function(name, dstHash) {
		var disabled, cmd,
			cvid = self.cwd().volumeid || '';
		
		// In serach results use selected item hash to check
		if (!dstHash && self.searchStatus.state > 1 && self.selected().length) {
			dstHash = self.selected()[0];
		}
		if (dstHash && (! cvid || dstHash.indexOf(cvid) !== 0)) {
			disabled = self.option('disabledFlip', dstHash);
			//if (! disabled) {
			//	disabled = {};
			//}
		} else {
			disabled = cwdOptions.disabledFlip/* || {}*/;
		}
		cmd = this._commands[name];
		return cmd ? (cmd.alwaysEnabled || !disabled[name]) : false;
	};
	
	/**
	 * Exec command and return result;
	 *
	 * @param  String         command name
	 * @param  String|Array   usualy files hashes
	 * @param  String|Array   command options
	 * @param  String|void    hash for enabled check of own volume's disabled cmds
	 * @return jQuery.Deferred
	 */		
	this.exec = function(cmd, files, opts, dstHash) {
		var dfrd, resType;
		
		// apply commandMap for keyboard shortcut
		if (!dstHash && this.commandMap[cmd] && this.commandMap[cmd] !== 'hidden') {
			cmd = this.commandMap[cmd];
		}

		if (cmd === 'open') {
			if (this.searchStatus.state || this.searchStatus.ininc) {
				this.trigger('searchend', { noupdate: true });
			}
			this.autoSync('stop');
		}
		if (!dstHash && files) {
			if (jQuery.isArray(files)) {
				if (files.length) {
					dstHash = files[0];
				}
			} else {
				dstHash = files;
			}
		}
		dfrd = this._commands[cmd] && this.isCommandEnabled(cmd, dstHash) 
			? this._commands[cmd].exec(files, opts) 
			: jQuery.Deferred().reject('No such command');
		
		resType = typeof dfrd;
		if (!(resType === 'object' && dfrd.promise)) {
			self.debug('warning', '"cmd.exec()" should be returned "jQuery.Deferred" but cmd "' + cmd + '" returned "' + resType + '"');
			dfrd = jQuery.Deferred().resolve();
		}
		
		this.trigger('exec', { dfrd : dfrd, cmd : cmd, files : files, opts : opts, dstHash : dstHash });
		return dfrd;
	};
	
	/**
	 * Create and return dialog.
	 *
	 * @param  String|DOMElement  dialog content
	 * @param  Object             dialog options
	 * @return jQuery
	 */
	this.dialog = function(content, options) {
		var dialog = jQuery('<div/>').append(content).appendTo(node).elfinderdialog(options, self),
			dnode  = dialog.closest('.ui-dialog'),
			resize = function(){
				! dialog.data('draged') && dialog.is(':visible') && dialog.elfinderdialog('posInit');
			};
		if (dnode.length) {
			self.bind('resize', resize);
			dnode.on('remove', function() {
				self.unbind('resize', resize);
			});
		}
		return dialog;
	};
	
	/**
	 * Create and return toast.
	 *
	 * @param  Object  toast options - see ui/toast.js
	 * @return jQuery
	 */
	this.toast = function(options) {
		return jQuery('<div class="ui-front"/>').appendTo(this.ui.toast).elfindertoast(options || {}, this);
	};
	
	/**
	 * Return UI widget or node
	 *
	 * @param  String  ui name
	 * @return jQuery
	 */
	this.getUI = function(ui) {
		return this.ui[ui] || (ui? jQuery() : node);
	};
	
	/**
	 * Return elFinder.command instance or instances array
	 *
	 * @param  String  command name
	 * @return Object | Array
	 */
	this.getCommand = function(name) {
		return name === void(0) ? this._commands : this._commands[name];
	};
	
	/**
	 * Resize elfinder node
	 * 
	 * @param  String|Number  width
	 * @param  String|Number  height
	 * @return void
	 */
	this.resize = function(w, h) {
		var getMargin = function() {
				var m = node.outerHeight(true) - node.innerHeight(),
					p = node;
				
				while(p.get(0) !== heightBase.get(0)) {
					p = p.parent();
					m += p.outerHeight(true) - p.innerHeight();
					if (! p.parent().length) {
						// reached the document
						break;
					}
				}
				return m;
			},
			fit = ! node.hasClass('ui-resizable'),
			prv = node.data('resizeSize') || {w: 0, h: 0},
			mt, size = {};

		if (heightBase && heightBase.data('resizeTm')) {
			clearTimeout(heightBase.data('resizeTm'));
		}
		
		if (typeof h === 'string') {
			if (mt = h.match(/^([0-9.]+)%$/)) {
				// setup heightBase
				if (! heightBase || ! heightBase.length) {
					heightBase = jQuery(window);
				}
				if (! heightBase.data('marginToMyNode')) {
					heightBase.data('marginToMyNode', getMargin());
				}
				if (! heightBase.data('fitToBaseFunc')) {
					heightBase.data('fitToBaseFunc', function(e) {
						var tm = heightBase.data('resizeTm');
						e.preventDefault();
						e.stopPropagation();
						tm && cancelAnimationFrame(tm);
						if (! node.hasClass('elfinder-fullscreen') && (!self.UA.Mobile || heightBase.data('rotated') !== self.UA.Rotated)) {
							heightBase.data('rotated', self.UA.Rotated);
							heightBase.data('resizeTm', requestAnimationFrame(function() {
								self.restoreSize();
							}));
						}
					});
				}
				if (typeof heightBase.data('rotated') === 'undefined') {
					heightBase.data('rotated', self.UA.Rotated);
				}
				h = heightBase.height() * (mt[1] / 100) - heightBase.data('marginToMyNode');
				
				heightBase.off('resize.' + self.namespace, heightBase.data('fitToBaseFunc'));
				fit && heightBase.on('resize.' + self.namespace, heightBase.data('fitToBaseFunc'));
			}
		}
		
		node.css({ width : w, height : parseInt(h) });
		size.w = Math.round(node.width());
		size.h = Math.round(node.height());
		node.data('resizeSize', size);
		if (size.w !== prv.w || size.h !== prv.h) {
			node.trigger('resize');
			this.trigger('resize', {width : size.w, height : size.h});
		}
	};
	
	/**
	 * Restore elfinder node size
	 * 
	 * @return elFinder
	 */
	this.restoreSize = function() {
		this.resize(width, height);
	};
	
	this.show = function() {
		node.show();
		this.enable().trigger('show');
	};
	
	this.hide = function() {
		if (this.options.enableAlways) {
			prevEnabled = enabled;
			enabled = false;
		}
		this.disable();
		this.trigger('hide');
		node.hide();
	};
	
	/**
	 * Lazy execution function
	 * 
	 * @param  Object  function
	 * @param  Number  delay
	 * @param  Object  options
	 * @return Object  jQuery.Deferred
	 */
	this.lazy = function(func, delay, opts) {
		var busy = function(state) {
				var cnt = node.data('lazycnt'),
					repaint;
				
				if (state) {
					repaint = node.data('lazyrepaint')? false : opts.repaint;
					if (! cnt) {
						node.data('lazycnt', 1)
							.addClass('elfinder-processing');
					} else {
						node.data('lazycnt', ++cnt);
					}
					if (repaint) {
						node.data('lazyrepaint', true).css('display'); // force repaint
					}
				} else {
					if (cnt && cnt > 1) {
						node.data('lazycnt', --cnt);
					} else {
						repaint = node.data('lazyrepaint');
						node.data('lazycnt', 0)
							.removeData('lazyrepaint')
							.removeClass('elfinder-processing');
						repaint && node.css('display'); // force repaint;
						self.trigger('lazydone');
					}
				}
			},
			dfd  = jQuery.Deferred(),
			callFunc = function() {
				dfd.resolve(func.call(dfd));
				busy(false);
			};
		
		delay = delay || 0;
		opts = opts || {};
		busy(true);
		
		if (delay) {
			setTimeout(callFunc, delay);
		} else {
			requestAnimationFrame(callFunc);
		}
		
		return dfd;
	};
	
	/**
	 * Destroy this elFinder instance
	 *
	 * @return void
	 **/
	this.destroy = function() {
		if (node && node[0].elfinder) {
			node.hasClass('elfinder-fullscreen') && self.toggleFullscreen(node);
			this.options.syncStart = false;
			this.autoSync('forcestop');
			this.trigger('destroy').disable();
			clipboard = [];
			selected = [];
			listeners = {};
			shortcuts = {};
			jQuery(window).off('.' + namespace);
			jQuery(document).off('.' + namespace);
			self.trigger = function(){};
			jQuery(beeper).remove();
			node.off()
				.removeData()
				.empty()
				.append(prevContent.contents())
				.attr('class', prevContent.attr('class'))
				.attr('style', prevContent.attr('style'));
			delete node[0].elfinder;
			// restore kept events
			jQuery.each(prevEvents, function(n, arr) {
				jQuery.each(arr, function(i, o) {
					node.on(o.type + (o.namespace? '.'+o.namespace : ''), o.selector, o.handler);
				});
			});
		}
	};
	
	/**
	 * Start or stop auto sync
	 * 
	 * @param  String|Bool  stop
	 * @return void
	 */
	this.autoSync = function(mode) {
		var sync;
		if (self.options.sync >= 1000) {
			if (syncInterval) {
				clearTimeout(syncInterval);
				syncInterval = null;
				self.trigger('autosync', {action : 'stop'});
			}
			
			if (mode === 'stop') {
				++autoSyncStop;
			} else {
				autoSyncStop = Math.max(0, --autoSyncStop);
			}
			
			if (autoSyncStop || mode === 'forcestop' || ! self.options.syncStart) {
				return;
			} 
			
			// run interval sync
			sync = function(start){
				var timeout;
				if (cwdOptions.syncMinMs && (start || syncInterval)) {
					start && self.trigger('autosync', {action : 'start'});
					timeout = Math.max(self.options.sync, cwdOptions.syncMinMs);
					syncInterval && clearTimeout(syncInterval);
					syncInterval = setTimeout(function() {
						var dosync = true, hash = cwd, cts;
						if (cwdOptions.syncChkAsTs && files[hash] && (cts = files[hash].ts)) {
							self.request({
								data : {cmd : 'info', targets : [hash], compare : cts, reload : 1},
								preventDefault : true
							})
							.done(function(data){
								var ts;
								dosync = true;
								if (data.compare) {
									ts = data.compare;
									if (ts == cts) {
										dosync = false;
									}
								}
								if (dosync) {
									self.sync(hash).always(function(){
										if (ts) {
											// update ts for cache clear etc.
											files[hash].ts = ts;
										}
										sync();
									});
								} else {
									sync();
								}
							})
							.fail(function(error, xhr){
								var err = self.parseError(error);
								if (err && xhr.status != 0) {
									self.error(err);
									if (Array.isArray(err) && jQuery.inArray('errOpen', err) !== -1) {
										self.request({
											data   : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1},
											notify : {type : 'open', cnt : 1, hideCnt : true}
										});
									}
								} else {
									syncInterval = setTimeout(function() {
										sync();
									}, timeout);
								}
							});
						} else {
							self.sync(cwd, true).always(function(){
								sync();
							});
						}
					}, timeout);
				}
			};
			sync(true);
		}
	};
	
	/**
	 * Return bool is inside work zone of specific point
	 * 
	 * @param  Number event.pageX
	 * @param  Number event.pageY
	 * @return Bool
	 */
	this.insideWorkzone = function(x, y, margin) {
		var rectangle = this.getUI('workzone').data('rectangle');
		
		margin = margin || 1;
		if (x < rectangle.left + margin
		|| x > rectangle.left + rectangle.width + margin
		|| y < rectangle.top + margin
		|| y > rectangle.top + rectangle.height + margin) {
			return false;
		}
		return true;
	};
	
	/**
	 * Target ui node move to last of children of elFinder node fot to show front
	 * 
	 * @param  Object  target    Target jQuery node object
	 */
	this.toFront = function(target) {
		var nodes = node.children('.ui-front').removeClass('elfinder-frontmost'),
			lastnode = nodes.last();
		nodes.css('z-index', '');
		jQuery(target).addClass('ui-front elfinder-frontmost').css('z-index', lastnode.css('z-index') + 1);
	};
	
	/**
	 * Remove class 'elfinder-frontmost' and hide() to target ui node
	 *
	 * @param      Object   target  Target jQuery node object
	 * @param      Boolean  nohide  Do not hide
	 */
	this.toHide =function(target, nohide) {
		var tgt = jQuery(target),
			last;

		!nohide && tgt.hide();
		if (tgt.hasClass('elfinder-frontmost')) {
			tgt.removeClass('elfinder-frontmost');
			last = node.children('.ui-front:visible:not(.elfinder-frontmost)').last();
			if (last.length) {
				requestAnimationFrame(function() {
					if (!node.children('.elfinder-frontmost:visible').length) {
						self.toFront(last);
						last.trigger('frontmost');
					}
				});
			}
		}
	};

	/**
	 * Return css object for maximize
	 * 
	 * @return Object
	 */
	this.getMaximizeCss = function() {
		return {
			width   : '100%',
			height  : '100%',
			margin  : 0,
			top     : 0,
			left    : 0,
			display : 'block',
			position: 'fixed',
			zIndex  : Math.max(self.zIndex? (self.zIndex + 1) : 0 , 1000),
			maxWidth : '',
			maxHeight: ''
		};
	};
	
	// Closure for togglefullscreen
	(function() {
		// check is in iframe
		if (inFrame && self.UA.Fullscreen) {
			self.UA.Fullscreen = false;
			if (parentIframe && typeof parentIframe.attr('allowfullscreen') !== 'undefined') {
				self.UA.Fullscreen = true;
			}
		}

		var orgStyle, bodyOvf, resizeTm, fullElm, exitFull, toFull,
			cls = 'elfinder-fullscreen',
			clsN = 'elfinder-fullscreen-native',
			checkDialog = function() {
				var t = 0,
					l = 0;
				jQuery.each(node.children('.ui-dialog,.ui-draggable'), function(i, d) {
					var $d = jQuery(d),
						pos = $d.position();
					
					if (pos.top < 0) {
						$d.css('top', t);
						t += 20;
					}
					if (pos.left < 0) {
						$d.css('left', l);
						l += 20;
					}
				});
			},
			funcObj = self.UA.Fullscreen? {
				// native full screen mode
				
				fullElm: function() {
					return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || null;
				},
				
				exitFull: function() {
					if (document.exitFullscreen) {
						return document.exitFullscreen();
					} else if (document.webkitExitFullscreen) {
						return document.webkitExitFullscreen();
					} else if (document.mozCancelFullScreen) {
						return document.mozCancelFullScreen();
					} else if (document.msExitFullscreen) {
						return document.msExitFullscreen();
					}
				},
				
				toFull: function(elem) {
					if (elem.requestFullscreen) {
						return elem.requestFullscreen();
					} else if (elem.webkitRequestFullscreen) {
						return elem.webkitRequestFullscreen();
					} else if (elem.mozRequestFullScreen) {
						return elem.mozRequestFullScreen();
					} else if (elem.msRequestFullscreen) {
						return elem.msRequestFullscreen();
					}
					return false;
				}
			} : {
				// node element maximize mode
				
				fullElm: function() {
					var full;
					if (node.hasClass(cls)) {
						return node.get(0);
					} else {
						full = node.find('.' + cls);
						if (full.length) {
							return full.get(0);
						}
					}
					return null;
				},
				
				exitFull: function() {
					var elm;
					
					jQuery(window).off('resize.' + namespace, resize);
					if (bodyOvf !== void(0)) {
						jQuery('body').css('overflow', bodyOvf);
					}
					bodyOvf = void(0);
					
					if (orgStyle) {
						elm = orgStyle.elm;
						restoreStyle(elm);
						jQuery(elm).trigger('resize', {fullscreen: 'off'});
					}
					
					jQuery(window).trigger('resize');
				},
				
				toFull: function(elem) {
					bodyOvf = jQuery('body').css('overflow') || '';
					jQuery('body').css('overflow', 'hidden');
					
					jQuery(elem).css(self.getMaximizeCss())
						.addClass(cls)
						.trigger('resize', {fullscreen: 'on'});
					
					checkDialog();
					
					jQuery(window).on('resize.' + namespace, resize).trigger('resize');
					
					return true;
				}
			},
			restoreStyle = function(elem) {
				if (orgStyle && orgStyle.elm == elem) {
					jQuery(elem).removeClass(cls + ' ' + clsN).attr('style', orgStyle.style);
					orgStyle = null;
				}
			},
			resize = function(e) {
				var elm;
				if (e.target === window) {
					resizeTm && cancelAnimationFrame(resizeTm);
					resizeTm = requestAnimationFrame(function() {
						if (elm = funcObj.fullElm()) {
							jQuery(elm).trigger('resize', {fullscreen: 'on'});
						}
					});
				}
			};
		
		jQuery(document).on('fullscreenchange.' + namespace + ' webkitfullscreenchange.' + namespace + ' mozfullscreenchange.' + namespace + ' MSFullscreenChange.' + namespace, function(e){
			if (self.UA.Fullscreen) {
				var elm = funcObj.fullElm(),
					win = jQuery(window);
				
				resizeTm && cancelAnimationFrame(resizeTm);
				if (elm === null) {
					win.off('resize.' + namespace, resize);
					if (orgStyle) {
						elm = orgStyle.elm;
						restoreStyle(elm);
						jQuery(elm).trigger('resize', {fullscreen: 'off'});
					}
				} else {
					jQuery(elm).addClass(cls + ' ' + clsN)
						.attr('style', 'width:100%; height:100%; margin:0; padding:0;')
						.trigger('resize', {fullscreen: 'on'});
					win.on('resize.' + namespace, resize);
					checkDialog();
				}
				win.trigger('resize');
			}
		});
		
		/**
		 * Toggle Full Scrren Mode
		 * 
		 * @param  Object target
		 * @param  Bool   full
		 * @return Object | Null  DOM node object of current full scrren
		 */
		self.toggleFullscreen = function(target, full) {
			var elm = jQuery(target).get(0),
				curElm = null;
			
			curElm = funcObj.fullElm();
			if (curElm) {
				if (curElm == elm) {
					if (full === true) {
						return curElm;
					}
				} else {
					if (full === false) {
						return curElm;
					}
				}
				funcObj.exitFull();
				return null;
			} else {
				if (full === false) {
					return null;
				}
			}
			
			orgStyle = {elm: elm, style: jQuery(elm).attr('style')};
			if (funcObj.toFull(elm) !== false) {
				return elm;
			} else {
				orgStyle = null;
				return null;
			}
		};
	})();
	
	// Closure for toggleMaximize
	(function(){
		var cls = 'elfinder-maximized',
		resizeTm,
		resize = function(e) {
			if (e.target === window && e.data && e.data.elm) {
				var elm = e.data.elm;
				resizeTm && cancelAnimationFrame(resizeTm);
				resizeTm = requestAnimationFrame(function() {
					elm.trigger('resize', {maximize: 'on'});
				});
			}
		},
		exitMax = function(elm) {
			jQuery(window).off('resize.' + namespace, resize);
			jQuery('body').css('overflow', elm.data('bodyOvf'));
			elm.removeClass(cls)
				.attr('style', elm.data('orgStyle'))
				.removeData('bodyOvf')
				.removeData('orgStyle');
			elm.trigger('resize', {maximize: 'off'});
		},
		toMax = function(elm) {
			elm.data('bodyOvf', jQuery('body').css('overflow') || '')
				.data('orgStyle', elm.attr('style'))
				.addClass(cls)
				.css(self.getMaximizeCss());
			jQuery('body').css('overflow', 'hidden');
			jQuery(window).on('resize.' + namespace, {elm: elm}, resize);
			elm.trigger('resize', {maximize: 'on'});
		};
		
		/**
		 * Toggle Maximize target node
		 * 
		 * @param  Object target
		 * @param  Bool   max
		 * @return void
		 */
		self.toggleMaximize = function(target, max) {
			var elm = jQuery(target),
				maximized = elm.hasClass(cls);
			
			if (maximized) {
				if (max === true) {
					return;
				}
				exitMax(elm);
			} else {
				if (max === false) {
					return;
				}
				toMax(elm);
			}
		};
	})();
	
	/*************  init stuffs  ****************/
	Object.assign(jQuery.ui.keyCode, {
		'F1' : 112,
		'F2' : 113,
		'F3' : 114,
		'F4' : 115,
		'F5' : 116,
		'F6' : 117,
		'F7' : 118,
		'F8' : 119,
		'F9' : 120,
		'F10' : 121,
		'F11' : 122,
		'F12' : 123,
		'DIG0' : 48,
		'DIG1' : 49,
		'DIG2' : 50,
		'DIG3' : 51,
		'DIG4' : 52,
		'DIG5' : 53,
		'DIG6' : 54,
		'DIG7' : 55,
		'DIG8' : 56,
		'DIG9' : 57,
		'NUM0' : 96,
		'NUM1' : 97,
		'NUM2' : 98,
		'NUM3' : 99,
		'NUM4' : 100,
		'NUM5' : 101,
		'NUM6' : 102,
		'NUM7' : 103,
		'NUM8' : 104,
		'NUM9' : 105,
		'CONTEXTMENU' : 93,
		'DOT'  : 190
	});
	
	this.dragUpload = false;
	this.xhrUpload  = (typeof XMLHttpRequestUpload != 'undefined' || typeof XMLHttpRequestEventTarget != 'undefined') && typeof File != 'undefined' && typeof FormData != 'undefined';
	
	// configure transport object
	this.transport = {};

	if (typeof(this.options.transport) == 'object') {
		this.transport = this.options.transport;
		if (typeof(this.transport.init) == 'function') {
			this.transport.init(this);
		}
	}
	
	if (typeof(this.transport.send) != 'function') {
		this.transport.send = function(opts) {
			if (!self.UA.IE) {
				// keep native xhr object for handling property responseURL
				opts._xhr = new XMLHttpRequest();
				opts.xhr = function() { return opts._xhr; };
			}
			return jQuery.ajax(opts);
		};
	}
	
	if (this.transport.upload == 'iframe') {
		this.transport.upload = jQuery.proxy(this.uploads.iframe, this);
	} else if (typeof(this.transport.upload) == 'function') {
		this.dragUpload = !!this.options.dragUploadAllow;
	} else if (this.xhrUpload && !!this.options.dragUploadAllow) {
		this.transport.upload = jQuery.proxy(this.uploads.xhr, this);
		this.dragUpload = true;
	} else {
		this.transport.upload = jQuery.proxy(this.uploads.iframe, this);
	}

	/**
	 * Decoding 'raw' string converted to unicode
	 * 
	 * @param  String str
	 * @return String
	 */
	this.decodeRawString = function(str) {
		var charCodes = function(str) {
			var i, len, arr;
			for (i=0,len=str.length,arr=[]; i<len; i++) {
				arr.push(str.charCodeAt(i));
			}
			return arr;
		},
		scalarValues = function(arr) {
			var scalars = [], i, len, c;
			if (typeof arr === 'string') {arr = charCodes(arr);}
			for (i=0,len=arr.length; c=arr[i],i<len; i++) {
				if (c >= 0xd800 && c <= 0xdbff) {
					scalars.push((c & 1023) + 64 << 10 | arr[++i] & 1023);
				} else {
					scalars.push(c);
				}
			}
			return scalars;
		},
		decodeUTF8 = function(arr) {
			var i, len, c, str, char = String.fromCharCode;
			for (i=0,len=arr.length,str=""; c=arr[i],i<len; i++) {
				if (c <= 0x7f) {
					str += char(c);
				} else if (c <= 0xdf && c >= 0xc2) {
					str += char((c&31)<<6 | arr[++i]&63);
				} else if (c <= 0xef && c >= 0xe0) {
					str += char((c&15)<<12 | (arr[++i]&63)<<6 | arr[++i]&63);
				} else if (c <= 0xf7 && c >= 0xf0) {
					str += char(
						0xd800 | ((c&7)<<8 | (arr[++i]&63)<<2 | arr[++i]>>>4&3) - 64,
						0xdc00 | (arr[i++]&15)<<6 | arr[i]&63
					);
				} else {
					str += char(0xfffd);
				}
			}
			return str;
		};
		
		return decodeUTF8(scalarValues(str));
	};

	/**
	 * Gets target file contents by file.hash
	 *
	 * @param      String  hash          The hash
	 * @param      String  responseType  'blob' or 'arraybuffer' (default)
	 * @return     arraybuffer|blob  The contents.
	 */
	this.getContents = function(hash, responseType) {
		var self = this,
			dfd = jQuery.Deferred(),
			type = responseType || 'arraybuffer',
			url, req;

		dfd.fail(function() {
			req && req.state() === 'pending' && req.reject();
		});

		url = self.openUrl(hash);
		if (!self.isSameOrigin(url)) {
			url = self.openUrl(hash, true);
		}
		req = self.request({
			data    : {cmd : 'get'},
			options : {
				url: url,
				type: 'get',
				cache : true,
				dataType : 'binary',
				responseType : type,
				processData: false
			}
		})
		.fail(function() {
			dfd.reject();
		})
		.done(function(data) {
			dfd.resolve(data);
		});

		return dfd;
	};

	this.getMimetype = function(name, orgMime) {
		var mime = orgMime,
			ext, m;
		m = (name + '').match(/\.([^.]+)$/);
		if (m && (ext = m[1])) {
			if (!extToMimeTable) {
				extToMimeTable = self.arrayFlip(self.mimeTypes);
			}
			if (!(mime = extToMimeTable[ext.toLowerCase()])) {
				mime = orgMime;
			}
		}
		return mime;
	};

	/**
	 * Supported check hash algorisms
	 * 
	 * @type Array
	 */
	self.hashCheckers = [];

	/**
	 * Closure of getContentsHashes()
	 */
	(function(self) {
		var hashLibs = {
				check : true
			},
			md5Calc = function(arr) {
				var spark = new hashLibs.SparkMD5.ArrayBuffer(),
					job;

				job = self.asyncJob(function(buf) {
					spark.append(buf);
				}, arr).done(function() {
					job._md5 = spark.end();
				});

				return job;
			},
			shaCalc = function(arr, length) {
				var sha, job;

				try {
					sha = new hashLibs.jsSHA('SHA' + (length.substr(0, 1) === '3'? length : ('-' + length)), 'ARRAYBUFFER');
					job = self.asyncJob(function(buf) {
						sha.update(buf);
					}, arr).done(function() {
						job._sha = sha.getHash('HEX');
					});
				} catch(e) {
					job = jQuery.Deferred.reject();
				}

				return job;
			};

		// make fm.hashCheckers
		if (self.options.cdns.sparkmd5) {
			self.hashCheckers.push('md5');
		}
		if (self.options.cdns.jssha) {
			self.hashCheckers = self.hashCheckers.concat(['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128', 'shake256']);
		}

		/**
		 * Gets the contents hashes.
		 *
		 * @param      String  target      target file.hash
		 * @param      Object  needHashes  need hash lib names
		 * @return     Object  hashes with lib name as key
		 */
		self.getContentsHashes = function(target, needHashes) {
			var dfd = jQuery.Deferred(),
				needs = self.arrayFlip(needHashes || ['md5'], true),
				libs = [],
				jobs = [],
				res = {},
				req;

			dfd.fail(function() {
				req && req.reject();
			});

			if (hashLibs.check) {

				delete hashLibs.check;

				// load SparkMD5
				var libsmd5 = jQuery.Deferred();
				if (window.ArrayBuffer && self.options.cdns.sparkmd5) {
					libs.push(libsmd5);
					self.loadScript([self.options.cdns.sparkmd5],
						function(res) { 
							var SparkMD5 = res || window.SparkMD5;
							window.SparkMD5 && delete window.SparkMD5;
							libsmd5.resolve();
							if (SparkMD5) {
								hashLibs.SparkMD5 = SparkMD5;
							}
						},
						{
							tryRequire: true,
							error: function() {
								libsmd5.reject();
							}
						}
					);
				}

				// load jsSha
				var libssha = jQuery.Deferred();
				if (window.ArrayBuffer && self.options.cdns.jssha) {
					libs.push(libssha);
					self.loadScript([self.options.cdns.jssha],
						function(res) { 
							var jsSHA = res || window.jsSHA;
							window.jsSHA && delete window.jsSHA;
							libssha.resolve();
							if (jsSHA) {
								hashLibs.jsSHA = jsSHA;
							}
						},
						{
							tryRequire: true,
							error: function() {
								libssha.reject();
							}
						}
					);
				}
			}
			
			jQuery.when.apply(null, libs).always(function() {
				if (Object.keys(hashLibs).length) {
					req = self.getContents(target).done(function(arrayBuffer) {
						var arr = (arrayBuffer instanceof ArrayBuffer && arrayBuffer.byteLength > 0)? self.sliceArrayBuffer(arrayBuffer, 1048576) : false,
							i;

						if (needs.md5 && hashLibs.SparkMD5) {
							jobs.push(function() {
								var job = md5Calc(arr).done(function() {
									var f;
									res.md5 = job._md5;
									if (f = self.file(target)) {
										f.md5 = job._md5;
									}
									dfd.notify(res);
								});
								dfd.fail(function() {
									job.reject();
								});
								return job;
							});
						}
						if (hashLibs.jsSHA) {
							jQuery.each(['1', '224', '256', '384', '512', '3-224', '3-256', '3-384', '3-512', 'ke128', 'ke256'], function(i, v) {
								if (needs['sha' + v]) {
									jobs.push(function() {
										var job = shaCalc(arr, v).done(function() {
											var f;
											res['sha' + v] = job._sha;
											if (f = self.file(target)) {
												f['sha' + v] = job._sha;
											}
											dfd.notify(res);
										});
										return job;
									});
								}
							});
						}
						if (jobs.length) {
							self.sequence(jobs).always(function() {
								dfd.resolve(res);
							});
						} else {
							dfd.reject();
						}
					}).fail(function() {
						dfd.reject();
					});
				} else {
					dfd.reject();
				}
			});

			return dfd;
		};
	})(this);

	/**
	 * Parse error value to display
	 *
	 * @param  Mixed  error
	 * @return Mixed  parsed error
	 */
	this.parseError = function(error) {
		var arg = error;
		if (jQuery.isPlainObject(arg)) {
			arg = arg.error;
		}
		return arg;
	};

	/**
	 * Alias for this.trigger('error', {error : 'message'})
	 *
	 * @param  String  error message
	 * @return elFinder
	 **/
	this.error = function() {
		var arg = arguments[0],
			opts = arguments[1] || null,
			err;
		if (arguments.length == 1 && typeof(arg) === 'function') {
			return self.bind('error', arg);
		} else {
			err = this.parseError(arg);
			return (err === true || !err)? this : self.trigger('error', {error: err, opts : opts});
		}
	};
	
	// create bind/trigger aliases for build-in events
	jQuery.each(events, function(i, name) {
		self[name] = function() {
			var arg = arguments[0];
			return arguments.length == 1 && typeof(arg) == 'function'
				? self.bind(name, arg)
				: self.trigger(name, jQuery.isPlainObject(arg) ? arg : {});
		};
	});

	// bind core event handlers
	this
		.enable(function() {
			if (!enabled && self.api && self.visible() && self.ui.overlay.is(':hidden') && ! node.children('.elfinder-dialog.' + self.res('class', 'editing') + ':visible').length) {
				enabled = true;
				document.activeElement && document.activeElement.blur();
				node.removeClass('elfinder-disabled');
			}
		})
		.disable(function() {
			prevEnabled = enabled;
			enabled = false;
			node.addClass('elfinder-disabled');
		})
		.open(function() {
			selected = [];
		})
		.select(function(e) {
			var cnt = 0,
				unselects = [];
			selected = jQuery.grep(e.data.selected || e.data.value|| [], function(hash) {
				if (unselects.length || (self.maxTargets && ++cnt > self.maxTargets)) {
					unselects.push(hash);
					return false;
				} else {
					return files[hash] ? true : false;
				}
			});
			if (unselects.length) {
				self.trigger('unselectfiles', {files: unselects, inselect: true});
				self.toast({mode: 'warning', msg: self.i18n(['errMaxTargets', self.maxTargets])});
			}
		})
		.error(function(e) { 
			var opts  = {
					cssClass  : 'elfinder-dialog-error',
					title     : self.i18n('error'),
					resizable : false,
					destroyOnClose : true,
					buttons   : {}
				},
				node = self.getUI(),
				cnt = node.children('.elfinder-dialog-error').length,
				last, counter;
			
			if (cnt < self.options.maxErrorDialogs) {
				opts.buttons[self.i18n(self.i18n('btnClose'))] = function() { jQuery(this).elfinderdialog('close'); };

				if (e.data.opts && jQuery.isPlainObject(e.data.opts)) {
					Object.assign(opts, e.data.opts);
				}

				self.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-error"/>'+self.i18n(e.data.error), opts);
			} else {
				last = node.children('.elfinder-dialog-error:last').children('.ui-dialog-content:first');
				counter = last.children('.elfinder-error-counter');
				if (counter.length) {
					counter.data('cnt', parseInt(counter.data('cnt')) + 1).html(self.i18n(['moreErrors', counter.data('cnt')]));
				} else {
					counter = jQuery('<span class="elfinder-error-counter">'+ self.i18n(['moreErrors', 1]) +'</span>').data('cnt', 1);
					last.append('<br/>', counter);
				}
			}
		})
		.bind('tmb', function(e) {
			jQuery.each(e.data.images||[], function(hash, tmb) {
				if (files[hash]) {
					files[hash].tmb = tmb;
				}
			});
		})
		.bind('searchstart', function(e) {
			Object.assign(self.searchStatus, e.data);
			self.searchStatus.state = 1;
		})
		.bind('search', function(e) {
			self.searchStatus.state = 2;
		})
		.bind('searchend', function() {
			self.searchStatus.state = 0;
			self.searchStatus.ininc = false;
			self.searchStatus.mixed = false;
		})
		.bind('canMakeEmptyFile', function(e) {
			var data = e.data,
				obj = {};
			if (data && Array.isArray(data.mimes)) {
				if (!data.unshift) {
					obj = self.mimesCanMakeEmpty;
				}
				jQuery.each(data.mimes, function() {
					if (!obj[this]) {
						obj[this] = self.mimeTypes[this];
					}
				});
				if (data.unshift) {
					self.mimesCanMakeEmpty = Object.assign(obj, self.mimesCanMakeEmpty);
				}
			}
		})
		.bind('themechange', function() {
			requestAnimationFrame(function() {
				self.trigger('uiresize');
			});
		})
		;

	// We listen and emit a sound on delete according to option
	if (true === this.options.sound) {
		this.bind('playsound', function(e) {
			var play  = beeper.canPlayType && beeper.canPlayType('audio/wav; codecs="1"'),
				file = e.data && e.data.soundFile;

			play && file && play != '' && play != 'no' && jQuery(beeper).html('<source src="' + soundPath + file + '" type="audio/wav">')[0].play();
		});
	}

	// bind external event handlers
	jQuery.each(this.options.handlers, function(event, callback) {
		self.bind(event, callback);
	});

	/**
	 * History object. Store visited folders
	 *
	 * @type Object
	 **/
	this.history = new this.history(this);
	
	/**
	 * Root hashed
	 * 
	 * @type Object
	 */
	this.roots = {};
	
	/**
	 * leaf roots
	 * 
	 * @type Object
	 */
	this.leafRoots = {};
	
	this.volumeExpires = {};

	/**
	 * Loaded commands
	 *
	 * @type Object
	 **/
	this._commands = {};
	
	if (!Array.isArray(this.options.commands)) {
		this.options.commands = [];
	}
	
	if (jQuery.inArray('*', this.options.commands) !== -1) {
		this.options.commands = Object.keys(this.commands);
	}
	
	/**
	 * UI command map of cwd volume ( That volume driver option `uiCmdMap` )
	 *
	 * @type Object
	 **/
	this.commandMap = {};
	
	/**
	 * cwd options of each volume
	 * key: volumeid
	 * val: options object
	 * 
	 * @type Object
	 */
	this.volOptions = {};

	/**
	 * Has volOptions data
	 * 
	 * @type Boolean
	 */
	this.hasVolOptions = false;

	/**
	 * Hash of trash holders
	 * key: trash folder hash
	 * val: source volume hash
	 * 
	 * @type Object
	 */
	this.trashes = {};

	/**
	 * cwd options of each folder/file
	 * key: hash
	 * val: options object
	 *
	 * @type Object
	 */
	this.optionsByHashes = {};
	
	/**
	 * UI Auto Hide Functions
	 * Each auto hide function mast be call to `fm.trigger('uiautohide')` at end of process
	 *
	 * @type Array
	 **/
	this.uiAutoHide = [];
	
	// trigger `uiautohide`
	this.one('open', function() {
		if (self.uiAutoHide.length) {
			setTimeout(function() {
				self.trigger('uiautohide');
			}, 500);
		}
	});
	
	// Auto Hide Functions sequential processing start
	this.bind('uiautohide', function() {
		if (self.uiAutoHide.length) {
			self.uiAutoHide.shift()();
		}
	});

	if (this.options.width) {
		width = this.options.width;
	}
	
	if (this.options.height) {
		height = this.options.height;
	}
	
	if (this.options.heightBase) {
		heightBase = jQuery(this.options.heightBase);
	}
	
	if (this.options.soundPath) {
		soundPath = this.options.soundPath.replace(/\/+$/, '') + '/';
	} else {
		soundPath = this.baseUrl + soundPath;
	}
	
	self.one('opendone', function() {
		var tm;
		// attach events to document
		jQuery(document)
			// disable elfinder on click outside elfinder
			.on('click.'+namespace, function(e) { enabled && ! self.options.enableAlways && !jQuery(e.target).closest(node).length && self.disable(); })
			// exec shortcuts
			.on(keydown+' '+keypress+' '+keyup+' '+mousedown, execShortcut);
		
		// attach events to window
		self.options.useBrowserHistory && jQuery(window)
			.on('popstate.' + namespace, function(ev) {
				var state = ev.originalEvent.state || {},
					hasThash = state.thash? true : false,
					dialog = node.find('.elfinder-frontmost:visible'),
					input = node.find('.elfinder-navbar-dir,.elfinder-cwd-filename').find('input,textarea'),
					onOpen, toast;
				if (!hasThash) {
					state = { thash: self.cwd().hash };
					// scroll to elFinder node
					jQuery('html,body').animate({ scrollTop: node.offset().top });
				}
				if (dialog.length || input.length) {
					history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash);
					if (dialog.length) {
						if (!dialog.hasClass(self.res('class', 'preventback'))) {
							if (dialog.hasClass('elfinder-contextmenu')) {
								jQuery(document).trigger(jQuery.Event('keydown', { keyCode: jQuery.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
							} else if (dialog.hasClass('elfinder-dialog')) {
								dialog.elfinderdialog('close');
							} else {
								dialog.trigger('close');
							}
						}
					} else {
						input.trigger(jQuery.Event('keydown', { keyCode: jQuery.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
					}
				} else {
					if (hasThash) {
						!jQuery.isEmptyObject(self.files()) && self.request({
							data   : {cmd  : 'open', target : state.thash, onhistory : 1},
							notify : {type : 'open', cnt : 1, hideCnt : true},
							syncOnFail : true
						});
					} else {
						onOpen = function() {
							toast.trigger('click');
						};
						self.one('open', onOpen, true);
						toast = self.toast({
							msg: self.i18n('pressAgainToExit'),
							onHidden: function() {
								self.unbind('open', onOpen);
								history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash);
							}
						});
					}
				}
			});
		
		jQuery(window).on('resize.' + namespace, function(e){
			if (e.target === this) {
				tm && cancelAnimationFrame(tm);
				tm = requestAnimationFrame(function() {
					var prv = node.data('resizeSize') || {w: 0, h: 0},
						size = {w: Math.round(node.width()), h: Math.round(node.height())};
					node.data('resizeSize', size);
					if (size.w !== prv.w || size.h !== prv.h) {
						node.trigger('resize');
						self.trigger('resize', {width : size.w, height : size.h});
					}
				});
			}
		})
		.on('beforeunload.' + namespace,function(e){
			var msg, cnt;
			if (node.is(':visible')) {
				if (self.ui.notify.children().length && jQuery.inArray('hasNotifyDialog', self.options.windowCloseConfirm) !== -1) {
					msg = self.i18n('ntfsmth');
				} else if (node.find('.'+self.res('class', 'editing')).length && jQuery.inArray('editingFile', self.options.windowCloseConfirm) !== -1) {
					msg = self.i18n('editingFile');
				} else if ((cnt = Object.keys(self.selected()).length) && jQuery.inArray('hasSelectedItem', self.options.windowCloseConfirm) !== -1) {
					msg = self.i18n('hasSelected', ''+cnt);
				} else if ((cnt = Object.keys(self.clipboard()).length) && jQuery.inArray('hasClipboardData', self.options.windowCloseConfirm) !== -1) {
					msg = self.i18n('hasClipboard', ''+cnt);
				}
				if (msg) {
					e.returnValue = msg;
					return msg;
				}
			}
			self.trigger('unload');
		});

		// bind window onmessage for CORS
		jQuery(window).on('message.' + namespace, function(e){
			var res = e.originalEvent || null,
				obj, data;
			if (res && self.uploadURL.indexOf(res.origin) === 0) {
				try {
					obj = JSON.parse(res.data);
					data = obj.data || null;
					if (data) {
						if (data.error) {
							if (obj.bind) {
								self.trigger(obj.bind+'fail', data);
							}
							self.error(data.error);
						} else {
							data.warning && self.error(data.warning);
							self.updateCache(data);
							data.removed && data.removed.length && self.remove(data);
							data.added   && data.added.length   && self.add(data);
							data.changed && data.changed.length && self.change(data);
							if (obj.bind) {
								self.trigger(obj.bind, data);
								self.trigger(obj.bind+'done');
							}
							data.sync && self.sync();
						}
					}
				} catch (e) {
					self.sync();
				}
			}
		});

		// elFinder enable always
		if (self.options.enableAlways) {
			jQuery(window).on('focus.' + namespace, function(e){
				(e.target === this) && self.enable();
			});
			if (inFrame) {
				jQuery(window.top).on('focus.' + namespace, function() {
					if (self.enable() && (! parentIframe || parentIframe.is(':visible'))) {
						requestAnimationFrame(function() {
							jQuery(window).trigger('focus');
						});
					}
				});
			}
		} else if (inFrame) {
			jQuery(window).on('blur.' + namespace, function(e){
				enabled && e.target === this && self.disable();
			});
		}

		// return focus to the window on click (elFInder in the frame)
		if (inFrame) {
			node.on('click', function(e) {
				jQuery(window).trigger('focus');
			});
		}
		
		// elFinder to enable by mouse over
		if (self.options.enableByMouseOver) {
			node.on('mouseenter touchstart', function(e) {
				(inFrame) && jQuery(window).trigger('focus');
				! self.enabled() && self.enable();
			});
		}
	});

	// store instance in node
	node[0].elfinder = this;

	// auto load language file
	dfrdsBeforeBootup.push((function() {
		var lang   = self.lang,
			langJs = self.i18nBaseUrl + 'elfinder.' + lang + '.js',
			dfd    = jQuery.Deferred().done(function() {
				if (self.i18[lang]) {
					self.lang = lang;
				}
				self.trigger('i18load');
				i18n = self.lang === 'en' 
					? self.i18['en'] 
					: jQuery.extend(true, {}, self.i18['en'], self.i18[self.lang]);
			});
		
		if (!self.i18[lang]) {
			self.lang = 'en';
			if (self.hasRequire) {
				require([langJs], function() {
					dfd.resolve();
				}, function() {
					dfd.resolve();
				});
			} else {
				self.loadScript([langJs], function() {
					dfd.resolve();
				}, {
					loadType: 'tag',
					error : function() {
						dfd.resolve();
					}
				});
			}
		} else {
			dfd.resolve();
		}
		return dfd;
	})());
	
	// elFinder boot up function
	bootUp = function() {
		var columnNames;

		/**
		 * i18 messages
		 *
		 * @type Object
		 **/
		self.messages = i18n.messages;
		
		// check jquery ui
		if (!(jQuery.fn.selectable && jQuery.fn.draggable && jQuery.fn.droppable && jQuery.fn.resizable && jQuery.fn.slider)) {
			return alert(self.i18n('errJqui'));
		}
		
		// check node
		if (!node.length) {
			return alert(self.i18n('errNode'));
		}
		// check connector url
		if (!self.options.url) {
			return alert(self.i18n('errURL'));
		}
		
		// column key/name map for fm.getColumnName()
		columnNames = Object.assign({
			name : self.i18n('name'),
			perm : self.i18n('perms'),
			date : self.i18n('modify'),
			size : self.i18n('size'),
			kind : self.i18n('kind'),
			modestr : self.i18n('mode'),
			modeoct : self.i18n('mode'),
			modeboth : self.i18n('mode')
		}, self.options.uiOptions.cwd.listView.columnsCustomName);

		/**
		 * Gets the column name of cwd list view
		 *
		 * @param      String  key     The key
		 * @return     String  The column name.
		 */
		self.getColumnName = function(key) {
			return columnNames[key] || self.i18n(key);
		};

		/**
		 * Interface direction
		 *
		 * @type String
		 * @default "ltr"
		 **/
		self.direction = i18n.direction;
		
		/**
		 * Date/time format
		 *
		 * @type String
		 * @default "m.d.Y"
		 **/
		self.dateFormat = self.options.dateFormat || i18n.dateFormat;
		
		/**
		 * Date format like "Yesterday 10:20:12"
		 *
		 * @type String
		 * @default "{day} {time}"
		 **/
		self.fancyFormat = self.options.fancyDateFormat || i18n.fancyDateFormat;
		
		/**
		 * Date format for if upload file has not original unique name
		 * e.g. Clipboard image data, Image data taken with iOS
		 *
		 * @type String
		 * @default "ymd-His"
		 **/
		self.nonameDateFormat = (self.options.nonameDateFormat || i18n.nonameDateFormat).replace(/[\/\\]/g, '_');

		/**
		 * Css classes 
		 *
		 * @type String
		 **/
		self.cssClass = 'ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-'
				+(self.direction == 'rtl' ? 'rtl' : 'ltr')
				+(self.UA.Touch? (' elfinder-touch' + (self.options.resizable ? ' touch-punch' : '')) : '')
				+(self.UA.Mobile? ' elfinder-mobile' : '')
				+(self.UA.iOS? ' elfinder-ios' : '')
				+' '+self.options.cssClass;

		// prepare node
		node.addClass(self.cssClass)
			.on(mousedown, function() {
				!enabled && self.enable();
			});

		// draggable closure
		(function() {
			var ltr, wzRect, wzBottom, wzBottom2, nodeStyle,
				keyEvt = keydown + 'draggable' + ' keyup.' + namespace + 'draggable';
			
			/**
			 * Base draggable options
			 *
			 * @type Object
			 **/
			self.draggable = {
				appendTo   : node,
				addClasses : false,
				distance   : 4,
				revert     : true,
				refreshPositions : false,
				cursor     : 'crosshair',
				cursorAt   : {left : 50, top : 47},
				scroll     : false,
				start      : function(e, ui) {
					var helper   = ui.helper,
						targets  = jQuery.grep(helper.data('files')||[], function(h) {
							if (h) {
								remember[h] = true;
								return true;
							}
							return false;
						}),
						locked   = false,
						cnt, h;
					
					// fix node size
					nodeStyle = node.attr('style');
					node.width(node.width()).height(node.height());
					
					// set var for drag()
					ltr = (self.direction === 'ltr');
					wzRect = self.getUI('workzone').data('rectangle');
					wzBottom = wzRect.top + wzRect.height;
					wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true);
					
					self.draggingUiHelper = helper;
					cnt = targets.length;
					while (cnt--) {
						h = targets[cnt];
						if (files[h].locked) {
							locked = true;
							helper.data('locked', true);
							break;
						}
					}
					!locked && self.trigger('lockfiles', {files : targets});
		
					helper.data('autoScrTm', setInterval(function() {
						if (helper.data('autoScr')) {
							self.autoScroll[helper.data('autoScr')](helper.data('autoScrVal'));
						}
					}, 50));
				},
				drag       : function(e, ui) {
					var helper = ui.helper,
						autoScr, autoUp, bottom;
					
					if ((autoUp = wzRect.top > e.pageY) || wzBottom2 < e.pageY) {
						if (wzRect.cwdEdge > e.pageX) {
							autoScr = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down');
						} else {
							autoScr = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down');
						}
						if (!autoUp) {
							if (autoScr.substr(0, 3) === 'cwd') {
								if (wzBottom < e.pageY) {
									bottom = wzBottom;
								} else {
									autoScr = null;
								}
							} else {
								bottom = wzBottom2;
							}
						}
						if (autoScr) {
							helper.data('autoScr', autoScr);
							helper.data('autoScrVal', Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - bottom), 1.3));
						}
					}
					if (! autoScr) {
						if (helper.data('autoScr')) {
							helper.data('refreshPositions', 1).data('autoScr', null);
						}
					}
					if (helper.data('refreshPositions') && jQuery(this).elfUiWidgetInstance('draggable')) {
						if (helper.data('refreshPositions') > 0) {
							jQuery(this).draggable('option', { refreshPositions : true, elfRefresh : true });
							helper.data('refreshPositions', -1);
						} else {
							jQuery(this).draggable('option', { refreshPositions : false, elfRefresh : false });
							helper.data('refreshPositions', null);
						}
					}
				},
				stop       : function(e, ui) {
					var helper = ui.helper,
						files;
					
					jQuery(document).off(keyEvt);
					jQuery(this).elfUiWidgetInstance('draggable') && jQuery(this).draggable('option', { refreshPositions : false });
					self.draggingUiHelper = null;
					self.trigger('focus').trigger('dragstop');
					if (! helper.data('droped')) {
						files = jQuery.grep(helper.data('files')||[], function(h) { return h? true : false ;});
						self.trigger('unlockfiles', {files : files});
						self.trigger('selectfiles', {files : self.selected()});
					}
					self.enable();
					
					// restore node style
					node.attr('style', nodeStyle);
					
					helper.data('autoScrTm') && clearInterval(helper.data('autoScrTm'));
				},
				helper     : function(e, ui) {
					var element = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
						helper  = jQuery('<div class="elfinder-drag-helper"><span class="elfinder-drag-helper-icon-status"/></div>'),
						icon    = function(f) {
							var mime = f.mime, i, tmb = self.tmb(f);
							i = '<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+self.mime2class(mime)+' ui-corner-all"/>';
							if (tmb) {
								i = jQuery(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
							} else if (f.icon) {
								i = jQuery(i).css(self.getIconStyle(f, true)).get(0).outerHTML;
							}
							if (f.csscls) {
								i = '<div class="'+f.csscls+'">' + i + '</div>';
							}
							return i;
						},
						hashes, l, ctr;
					
					self.draggingUiHelper && self.draggingUiHelper.stop(true, true);
					
					self.trigger('dragstart', {target : element[0], originalEvent : e}, true);
					
					hashes = element.hasClass(self.res('class', 'cwdfile')) 
						? self.selected() 
						: [self.navId2Hash(element.attr('id'))];
					
					helper.append(icon(files[hashes[0]])).data('files', hashes).data('locked', false).data('droped', false).data('namespace', namespace).data('dropover', 0);
		
					if ((l = hashes.length) > 1) {
						helper.append(icon(files[hashes[l-1]]) + '<span class="elfinder-drag-num">'+l+'</span>');
					}
					
					jQuery(document).on(keyEvt, function(e){
						var chk = (e.shiftKey||e.ctrlKey||e.metaKey);
						if (ctr !== chk) {
							ctr = chk;
							if (helper.is(':visible') && helper.data('dropover') && ! helper.data('droped')) {
								helper.toggleClass('elfinder-drag-helper-plus', helper.data('locked')? true : ctr);
								self.trigger(ctr? 'unlockfiles' : 'lockfiles', {files : hashes, helper: helper});
							}
						}
					});
					
					return helper;
				}
			};
		})();

		// in getFileCallback set - change default actions on double click/enter/ctrl+enter
		if (self.commands.getfile) {
			if (typeof(self.options.getFileCallback) == 'function') {
				self.bind('dblclick', function(e) {
					e.preventDefault();
					self.exec('getfile').fail(function() {
						self.exec('open', e.data && e.data.file? [ e.data.file ]: void(0));
					});
				});
				self.shortcut({
					pattern     : 'enter',
					description : self.i18n('cmdgetfile'),
					callback    : function() { self.exec('getfile').fail(function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }); }
				})
				.shortcut({
					pattern     : 'ctrl+enter',
					description : self.i18n(self.OS == 'mac' ? 'cmdrename' : 'cmdopen'),
					callback    : function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }
				});
			} else {
				self.options.getFileCallback = null;
			}
		}

		// load commands
		jQuery.each(self.commands, function(name, cmd) {
			var proto = Object.assign({}, cmd.prototype),
				extendsCmd, opts;
			if (jQuery.isFunction(cmd) && !self._commands[name] && (cmd.prototype.forceLoad || jQuery.inArray(name, self.options.commands) !== -1)) {
				extendsCmd = cmd.prototype.extendsCmd || '';
				if (extendsCmd) {
					if (jQuery.isFunction(self.commands[extendsCmd])) {
						cmd.prototype = Object.assign({}, base, new self.commands[extendsCmd](), cmd.prototype);
					} else {
						return true;
					}
				} else {
					cmd.prototype = Object.assign({}, base, cmd.prototype);
				}
				self._commands[name] = new cmd();
				cmd.prototype = proto;
				opts = self.options.commandsOptions[name] || {};
				if (extendsCmd && self.options.commandsOptions[extendsCmd]) {
					opts = jQuery.extend(true, {}, self.options.commandsOptions[extendsCmd], opts);
				}
				self._commands[name].setup(name, opts);
				// setup linked commands
				if (self._commands[name].linkedCmds.length) {
					jQuery.each(self._commands[name].linkedCmds, function(i, n) {
						var lcmd = self.commands[n];
						if (jQuery.isFunction(lcmd) && !self._commands[n]) {
							lcmd.prototype = base;
							self._commands[n] = new lcmd();
							self._commands[n].setup(n, self.options.commandsOptions[n]||{});
						}
					});
				}
			}
		});

		/**
		 * UI nodes
		 *
		 * @type Object
		 **/
		self.ui = {
			// container for nav panel and current folder container
			workzone : jQuery('<div/>').appendTo(node).elfinderworkzone(self),
			// container for folders tree / places
			navbar : jQuery('<div/>').appendTo(node).elfindernavbar(self, self.options.uiOptions.navbar || {}),
			// container for for preview etc at below the navbar
			navdock : jQuery('<div/>').appendTo(node).elfindernavdock(self, self.options.uiOptions.navdock || {}),
			// contextmenu
			contextmenu : jQuery('<div/>').appendTo(node).elfindercontextmenu(self),
			// overlay
			overlay : jQuery('<div/>').appendTo(node).elfinderoverlay({
				show : function() { self.disable(); },
				hide : function() { prevEnabled && self.enable(); }
			}),
			// current folder container
			cwd : jQuery('<div/>').appendTo(node).elfindercwd(self, self.options.uiOptions.cwd || {}),
			// notification dialog window
			notify : self.dialog('', {
				cssClass      : 'elfinder-dialog-notify',
				position      : self.options.notifyDialog.position,
				absolute      : true,
				resizable     : false,
				autoOpen      : false,
				closeOnEscape : false,
				title         : '&nbsp;',
				width         : self.options.notifyDialog.width? parseInt(self.options.notifyDialog.width) : null,
				minHeight     : null
			}),
			statusbar : jQuery('<div class="ui-widget-header ui-helper-clearfix ui-corner-bottom elfinder-statusbar"/>').hide().appendTo(node),
			toast : jQuery('<div class="elfinder-toast"/>').appendTo(node),
			bottomtray : jQuery('<div class="elfinder-bottomtray">').appendTo(node)
		};

		self.trigger('uiready');

		// load required ui
		jQuery.each(self.options.ui || [], function(i, ui) {
			var name = 'elfinder'+ui,
				opts = self.options.uiOptions[ui] || {};
	
			if (!self.ui[ui] && jQuery.fn[name]) {
				// regist to self.ui before make instance
				self.ui[ui] = jQuery('<'+(opts.tag || 'div')+'/>').appendTo(node);
				self.ui[ui][name](self, opts);
			}
		});
		
		// update size	
		self.resize(width, height);
		
		// make node resizable
		if (self.options.resizable) {
			node.resizable({
				resize    : function(e, ui) {
					self.resize(ui.size.width, ui.size.height);
				},
				handles   : 'se',
				minWidth  : 300,
				minHeight : 200
			});
			if (self.UA.Touch) {
				node.addClass('touch-punch');
			}
		}

		(function() {
			var navbar = self.getUI('navbar'),
				cwd    = self.getUI('cwd').parent();
			
			self.autoScroll = {
				navbarUp   : function(v) {
					navbar.scrollTop(Math.max(0, navbar.scrollTop() - v));
				},
				navbarDown : function(v) {
					navbar.scrollTop(navbar.scrollTop() + v);
				},
				cwdUp     : function(v) {
					cwd.scrollTop(Math.max(0, cwd.scrollTop() - v));
				},
				cwdDown   : function(v) {
					cwd.scrollTop(cwd.scrollTop() + v);
				}
			};
		})();

		// Swipe on the touch devices to show/hide of toolbar or navbar
		if (self.UA.Touch) {
			(function() {
				var lastX, lastY, nodeOffset, nodeWidth, nodeTop, navbarW, toolbarH,
					navbar = self.getUI('navbar'),
					toolbar = self.getUI('toolbar'),
					moveEv = 'touchmove.stopscroll',
					moveTm,
					moveUpOn = function(e) {
						var touches = e.originalEvent.touches || [{}],
							y = touches[0].pageY || null;
						if (!lastY || y < lastY) {
							e.preventDefault();
							moveTm && clearTimeout(moveTm);
						}
					},
					moveDownOn = function(e) {
						e.preventDefault();
						moveTm && clearTimeout(moveTm);
					},
					moveOff = function() {
						moveTm = setTimeout(function() {
							node.off(moveEv);
						}, 100);
					},
					handleW, handleH = 50;

				navbar = navbar.children().length? navbar : null;
				toolbar = toolbar.length? toolbar : null;
				node.on('touchstart touchmove touchend', function(e) {
					if (e.type === 'touchend') {
						lastX = false;
						lastY = false;
						moveOff();
						return;
					}
					
					var touches = e.originalEvent.touches || [{}],
						x = touches[0].pageX || null,
						y = touches[0].pageY || null,
						ltr = (self.direction === 'ltr'),
						navbarMode, treeWidth, swipeX, moveX, toolbarT, mode;
					
					if (x === null || y === null || (e.type === 'touchstart' && touches.length > 1)) {
						return;
					}
					
					if (e.type === 'touchstart') {
						nodeOffset = node.offset();
						nodeWidth = node.width();
						if (navbar) {
							lastX = false;
							if (navbar.is(':hidden')) {
								if (! handleW) {
									handleW = Math.max(50, nodeWidth / 10);
								}
								if ((ltr? (x - nodeOffset.left) : (nodeWidth + nodeOffset.left - x)) < handleW) {
									lastX = x;
								}
							} else if (! e.originalEvent._preventSwipeX) {
								navbarW = navbar.width();
								if (ltr) {
									swipeX = (x < nodeOffset.left + navbarW);
								} else {
									swipeX = (x > nodeOffset.left + nodeWidth - navbarW);
								}
								if (swipeX) {
									handleW = Math.max(50, nodeWidth / 10);
									lastX = x;
								} else {
									lastX = false;
								}
							}
						}
						if (toolbar) {
							lastY = false;
							if (! e.originalEvent._preventSwipeY) {
								toolbarH = toolbar.height();
								nodeTop = nodeOffset.top;
								if (y - nodeTop < (toolbar.is(':hidden')? handleH : (toolbarH + 30))) {
									lastY = y;
									node.on(moveEv, toolbar.is(':hidden')? moveDownOn: moveUpOn);
								}
							}
						}
					} else {
						if (navbar && lastX !== false) {
							navbarMode = (ltr? (lastX > x) : (lastX < x))? 'navhide' : 'navshow';
							moveX = Math.abs(lastX - x);
							if (navbarMode === 'navhide' && moveX > navbarW * 0.6
								|| (moveX > (navbarMode === 'navhide'? navbarW / 3 : 45)
									&& (navbarMode === 'navshow'
										|| (ltr? x < nodeOffset.left + 20 : x > nodeOffset.left + nodeWidth - 20)
									))
							) {
								self.getUI('navbar').trigger(navbarMode, {handleW: handleW});
								lastX = false;
							}
						}
						if (toolbar && lastY !== false ) {
							toolbarT = toolbar.offset().top;
							if (Math.abs(lastY - y) > Math.min(45, toolbarH / 3)) {
								mode = (lastY > y)? 'slideUp' : 'slideDown';
								if (mode === 'slideDown' || toolbarT + 20 > y) {
									if (toolbar.is(mode === 'slideDown' ? ':hidden' : ':visible')) {
										toolbar.stop(true, true).trigger('toggle', {duration: 100, handleH: handleH});
									}
									lastY = false;
								}
							}
						}
					}
				});
			})();
		}

		if (self.dragUpload) {
			// add event listener for HTML5 DnD upload
			(function() {
				var isin = function(e) {
					return (e.target.nodeName !== 'TEXTAREA' && e.target.nodeName !== 'INPUT' && jQuery(e.target).closest('div.ui-dialog-content').length === 0);
				},
				ent       = 'native-drag-enter',
				disable   = 'native-drag-disable',
				c         = 'class',
				navdir    = self.res(c, 'navdir'),
				droppable = self.res(c, 'droppable'),
				dropover  = self.res(c, 'adroppable'),
				arrow     = self.res(c, 'navarrow'),
				clDropActive = self.res(c, 'adroppable'),
				wz        = self.getUI('workzone'),
				ltr       = (self.direction === 'ltr'),
				clearTm   = function() {
					autoScrTm && cancelAnimationFrame(autoScrTm);
					autoScrTm = null;
				},
				wzRect, autoScrFn, autoScrTm;
				
				node.on('dragenter', function(e) {
					clearTm();
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
						wzRect = wz.data('rectangle');
					}
				})
				.on('dragleave', function(e) {
					clearTm();
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
					}
				})
				.on('dragover', function(e) {
					var autoUp;
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
						e.originalEvent.dataTransfer.dropEffect = 'none';
						if (! autoScrTm) {
							autoScrTm = requestAnimationFrame(function() {
								var wzBottom = wzRect.top + wzRect.height,
									wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true),
									fn;
								if ((autoUp = e.pageY < wzRect.top) || e.pageY > wzBottom2 ) {
									if (wzRect.cwdEdge > e.pageX) {
										fn = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down');
									} else {
										fn = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down');
									}
									if (!autoUp) {
										if (fn.substr(0, 3) === 'cwd') {
											if (wzBottom < e.pageY) {
												wzBottom2 = wzBottom;
											} else {
												fn = '';
											}
										}
									}
									fn && self.autoScroll[fn](Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - wzBottom2), 1.3));
								}
								autoScrTm = null;
							});
						}
					} else {
						clearTm();
					}
				})
				.on('drop', function(e) {
					clearTm();
					if (isin(e)) {
						e.stopPropagation();
						e.preventDefault();
					}
				});
				
				node.on('dragenter', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget),
							id   = e.currentTarget.id || null,
							cwd  = null,
							elfFrom;
						if (!id) { // target is cwd
							cwd = self.cwd();
							$elm.data(disable, false);
							try {
								jQuery.each(e.originalEvent.dataTransfer.types, function(i, v){
									if (v.substr(0, 13) === 'elfinderfrom:') {
										elfFrom = v.substr(13).toLowerCase();
									}
								});
							} catch(e) {}
						}
						if (!cwd || (cwd.write && (!elfFrom || elfFrom !== (window.location.href + cwd.hash).toLowerCase()))) {
							e.preventDefault();
							e.stopPropagation();
							$elm.data(ent, true);
							$elm.addClass(clDropActive);
						} else {
							$elm.data(disable, true);
						}
					}
				})
				.on('dragleave', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget);
						e.preventDefault();
						e.stopPropagation();
						if ($elm.data(ent)) {
							$elm.data(ent, false);
						} else {
							$elm.removeClass(clDropActive);
						}
					}
				})
				.on('dragover', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget);
						e.preventDefault();
						e.stopPropagation();
						e.originalEvent.dataTransfer.dropEffect = $elm.data(disable)? 'none' : 'copy';
						$elm.data(ent, false);
					}
				})
				.on('drop', '.native-droppable', function(e){
					if (e.originalEvent && e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget),
							id;
						e.preventDefault();
						e.stopPropagation();
						$elm.removeClass(clDropActive);
						if (e.currentTarget.id) {
							id = $elm.hasClass(navdir)? self.navId2Hash(e.currentTarget.id) : self.cwdId2Hash(e.currentTarget.id);
						} else {
							id = self.cwd().hash;
						}
						e.originalEvent._target = id;
						self.exec('upload', {dropEvt: e.originalEvent, target: id}, void 0, id);
					}
				});
			})();
		}

		// trigger event cssloaded if cddAutoLoad disabled
		if (self.cssloaded === null) {
			// check css loaded and remove hide
			(function() {
				var loaded = function() {
						if (node.data('cssautoloadHide')) {
							node.data('cssautoloadHide').remove();
							node.removeData('cssautoloadHide');
						}
						self.cssloaded = true;
						requestAnimationFrame(function() {
							self.trigger('cssloaded');
						});
					},
					cnt, fi;
				if (node.css('visibility') === 'hidden') {
					cnt = 1000; // timeout 10 secs
					fi  = setInterval(function() {
						if (--cnt < 0 || node.css('visibility') !== 'hidden') {
							clearInterval(fi);
							loaded();
						}
					}, 10);
				} else {
					loaded();
				}
			})();
		} else {
			self.cssloaded = true;
			self.trigger('cssloaded');
		}

		// calculate elFinder node z-index
		self.zIndexCalc();

		// send initial request and start to pray >_<
		self.trigger('init')
			.request({
				data        : {cmd : 'open', target : self.startDir(), init : 1, tree : 1}, 
				preventDone : true,
				notify      : {type : 'open', cnt : 1, hideCnt : true},
				freeze      : true
			})
			.fail(function() {
				self.trigger('fail').disable().lastDir('');
				listeners = {};
				shortcuts = {};
				jQuery(document).add(node).off('.'+namespace);
				self.trigger = function() { };
			})
			.done(function(data) {
				var trashDisable = function(th) {
						var src = self.file(self.trashes[th]),
							d = self.options.debug,
							error;
						
						if (src && src.volumeid) {
							delete self.volOptions[src.volumeid].trashHash;
						}
						self.trashes[th] = false;
						self.debug('backend-error', 'Trash hash "'+th+'" was not found or not writable.');
					},
					toChkTh = {};
				
				// regist rawStringDecoder
				if (self.options.rawStringDecoder) {
					self.registRawStringDecoder(self.options.rawStringDecoder);
				}

				// re-calculate elFinder node z-index
				self.zIndexCalc();
				
				self.load().debug('api', self.api);
				// update ui's size after init
				node.trigger('resize');
				// initial open
				open(data);
				self.trigger('open', data, false);
				self.trigger('opendone');
				
				if (inFrame && self.options.enableAlways) {
					jQuery(window).trigger('focus');
				}
				
				// check self.trashes
				jQuery.each(self.trashes, function(th) {
					var dir = self.file(th),
						src;
					if (! dir) {
						toChkTh[th] = true;
					} else if (dir.mime !== 'directory' || ! dir.write) {
						trashDisable(th);
					}
				});
				if (Object.keys(toChkTh).length) {
					self.request({
						data : {cmd : 'info', targets : Object.keys(toChkTh)},
						preventDefault : true
					}).done(function(data) {
						if (data && data.files) {
							jQuery.each(data.files, function(i, dir) {
								if (dir.mime === 'directory' && dir.write) {
									delete toChkTh[dir.hash];
								}
							});
						}
					}).always(function() {
						jQuery.each(toChkTh, trashDisable);
					});
				}
				// to enable / disable
				self[self.options.enableAlways? 'enable' : 'disable']();
			});
		
		// self.timeEnd('load');
		// End of bootUp()
	};
	
	// call bootCallback function with elFinder instance, extraObject - { dfrdsBeforeBootup: dfrdsBeforeBootup }
	if (bootCallback && typeof bootCallback === 'function') {
		self.bootCallback = bootCallback;
		bootCallback.call(node.get(0), self, { dfrdsBeforeBootup: dfrdsBeforeBootup });
	}
	
	// call dfrdsBeforeBootup functions then boot up elFinder
	jQuery.when.apply(null, dfrdsBeforeBootup).done(function() {
		bootUp();
	}).fail(function(error) {
		self.error(error);
	});
};

//register elFinder to global scope
if (typeof toGlobal === 'undefined' || toGlobal) {
	window.elFinder = elFinder;
}

/**
 * Prototype
 * 
 * @type  Object
 */
elFinder.prototype = {
	
	uniqueid : 0,
	
	res : function(type, id) {
		return this.resources[type] && this.resources[type][id];
	}, 

	/**
	 * User os. Required to bind native shortcuts for open/rename
	 *
	 * @type String
	 **/
	OS : navigator.userAgent.indexOf('Mac') !== -1 ? 'mac' : navigator.userAgent.indexOf('Win') !== -1  ? 'win' : 'other',
	
	/**
	 * User browser UA.
	 * jQuery.browser: version deprecated: 1.3, removed: 1.9
	 *
	 * @type Object
	 **/
	UA : (function(){
		var self = this,
			webkit = !document.unqueID && !window.opera && !window.sidebar && window.localStorage && 'WebkitAppearance' in document.documentElement.style,
			chrome = webkit && window.chrome,
			/*setRotated = function() {
				var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0;
				if (a === -90) {
					a = 270;
				}
				UA.Angle = a;
				UA.Rotated = a % 180 === 0? false : true;
			},*/
			UA = {
				// Browser IE <= IE 6
				ltIE6   : typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined",
				// Browser IE <= IE 7
				ltIE7   : typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined",
				// Browser IE <= IE 8
				ltIE8   : typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined",
				// Browser IE <= IE 9
				ltIE9  : document.uniqueID && document.documentMode <= 9,
				// Browser IE <= IE 10
				ltIE10  : document.uniqueID && document.documentMode <= 10,
				// Browser IE >= IE 11
				gtIE11  : document.uniqueID && document.documentMode >= 11,
				IE      : document.uniqueID,
				Firefox : window.sidebar,
				Opera   : window.opera,
				Webkit  : webkit,
				Chrome  : chrome,
				Edge    : (chrome && window.msCredentials)? true : false,
				Safari  : webkit && !window.chrome,
				Mobile  : typeof window.orientation != "undefined",
				Touch   : typeof window.ontouchstart != "undefined",
				iOS     : navigator.platform.match(/^iP(?:[ao]d|hone)/),
				Fullscreen : (typeof (document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen) !== 'undefined'),
				Angle   : 0,
				Rotated : false,
				CSS : (function() {
					var aStyle = document.createElement('a').style,
						pStyle = document.createElement('p').style,
						css;
					css = 'position:sticky;position:-webkit-sticky;';
					css += 'width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;';
					aStyle.cssText = css;
					return {
						positionSticky : aStyle.position.indexOf('sticky')!==-1,
						widthMaxContent : aStyle.width.indexOf('max-content')!==-1,
						flex : typeof pStyle.flex !== 'undefined'
					};
				})()
			};
			return UA;
	})(),
	
	/**
	 * Has RequireJS?
	 * 
	 * @type Boolean
	 */
	hasRequire : (typeof define === 'function' && define.amd),
	
	/**
	 * Current request command
	 * 
	 * @type  String
	 */
	currentReqCmd : '',
	
	/**
	 * Current keyboard state
	 * 
	 * @type  Object
	 */
	keyState : {},
	
	/**
	 * Internationalization object
	 * 
	 * @type  Object
	 */
	i18 : {
		en : {
			translator      : '',
			language        : 'English',
			direction       : 'ltr',
			dateFormat      : 'd.m.Y H:i',
			fancyDateFormat : '$1 H:i',
			nonameDateFormat : 'ymd-His',
			messages        : {}
		},
		months : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
		monthsShort : ['msJan', 'msFeb', 'msMar', 'msApr', 'msMay', 'msJun', 'msJul', 'msAug', 'msSep', 'msOct', 'msNov', 'msDec'],

		days : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		daysShort : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
	},
	
	/**
	 * File mimetype to kind mapping
	 * 
	 * @type  Object
	 */
	kinds : 	{
			'unknown'                       : 'Unknown',
			'directory'                     : 'Folder',
			'group'                         : 'Selects',
			'symlink'                       : 'Alias',
			'symlink-broken'                : 'AliasBroken',
			'application/x-empty'           : 'TextPlain',
			'application/postscript'        : 'Postscript',
			'application/vnd.ms-office'     : 'MsOffice',
			'application/msword'            : 'MsWord',
			'application/vnd.ms-word'       : 'MsWord',
			'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : 'MsWord',
			'application/vnd.ms-word.document.macroEnabled.12'                        : 'MsWord',
			'application/vnd.openxmlformats-officedocument.wordprocessingml.template' : 'MsWord',
			'application/vnd.ms-word.template.macroEnabled.12'                        : 'MsWord',
			'application/vnd.ms-excel'      : 'MsExcel',
			'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'       : 'MsExcel',
			'application/vnd.ms-excel.sheet.macroEnabled.12'                          : 'MsExcel',
			'application/vnd.openxmlformats-officedocument.spreadsheetml.template'    : 'MsExcel',
			'application/vnd.ms-excel.template.macroEnabled.12'                       : 'MsExcel',
			'application/vnd.ms-excel.sheet.binary.macroEnabled.12'                   : 'MsExcel',
			'application/vnd.ms-excel.addin.macroEnabled.12'                          : 'MsExcel',
			'application/vnd.ms-powerpoint' : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.presentation' : 'MsPP',
			'application/vnd.ms-powerpoint.presentation.macroEnabled.12'              : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.slideshow'  : 'MsPP',
			'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'                 : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.template'   : 'MsPP',
			'application/vnd.ms-powerpoint.template.macroEnabled.12'                  : 'MsPP',
			'application/vnd.ms-powerpoint.addin.macroEnabled.12'                     : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.slide'      : 'MsPP',
			'application/vnd.ms-powerpoint.slide.macroEnabled.12'                     : 'MsPP',
			'application/pdf'               : 'PDF',
			'application/xml'               : 'XML',
			'application/vnd.oasis.opendocument.text' : 'OO',
			'application/vnd.oasis.opendocument.text-template'         : 'OO',
			'application/vnd.oasis.opendocument.text-web'              : 'OO',
			'application/vnd.oasis.opendocument.text-master'           : 'OO',
			'application/vnd.oasis.opendocument.graphics'              : 'OO',
			'application/vnd.oasis.opendocument.graphics-template'     : 'OO',
			'application/vnd.oasis.opendocument.presentation'          : 'OO',
			'application/vnd.oasis.opendocument.presentation-template' : 'OO',
			'application/vnd.oasis.opendocument.spreadsheet'           : 'OO',
			'application/vnd.oasis.opendocument.spreadsheet-template'  : 'OO',
			'application/vnd.oasis.opendocument.chart'                 : 'OO',
			'application/vnd.oasis.opendocument.formula'               : 'OO',
			'application/vnd.oasis.opendocument.database'              : 'OO',
			'application/vnd.oasis.opendocument.image'                 : 'OO',
			'application/vnd.openofficeorg.extension'                  : 'OO',
			'application/x-shockwave-flash' : 'AppFlash',
			'application/flash-video'       : 'Flash video',
			'application/x-bittorrent'      : 'Torrent',
			'application/javascript'        : 'JS',
			'application/rtf'               : 'RTF',
			'application/rtfd'              : 'RTF',
			'application/x-font-ttf'        : 'TTF',
			'application/x-font-otf'        : 'OTF',
			'application/x-rpm'             : 'RPM',
			'application/x-web-config'      : 'TextPlain',
			'application/xhtml+xml'         : 'HTML',
			'application/docbook+xml'       : 'DOCBOOK',
			'application/x-awk'             : 'AWK',
			'application/x-gzip'            : 'GZIP',
			'application/x-bzip2'           : 'BZIP',
			'application/x-xz'              : 'XZ',
			'application/zip'               : 'ZIP',
			'application/x-zip'               : 'ZIP',
			'application/x-rar'             : 'RAR',
			'application/x-tar'             : 'TAR',
			'application/x-7z-compressed'   : '7z',
			'application/x-jar'             : 'JAR',
			'text/plain'                    : 'TextPlain',
			'text/x-php'                    : 'PHP',
			'text/html'                     : 'HTML',
			'text/javascript'               : 'JS',
			'text/css'                      : 'CSS',
			'text/rtf'                      : 'RTF',
			'text/rtfd'                     : 'RTF',
			'text/x-c'                      : 'C',
			'text/x-csrc'                   : 'C',
			'text/x-chdr'                   : 'CHeader',
			'text/x-c++'                    : 'CPP',
			'text/x-c++src'                 : 'CPP',
			'text/x-c++hdr'                 : 'CPPHeader',
			'text/x-shellscript'            : 'Shell',
			'application/x-csh'             : 'Shell',
			'text/x-python'                 : 'Python',
			'text/x-java'                   : 'Java',
			'text/x-java-source'            : 'Java',
			'text/x-ruby'                   : 'Ruby',
			'text/x-perl'                   : 'Perl',
			'text/x-sql'                    : 'SQL',
			'text/xml'                      : 'XML',
			'text/x-comma-separated-values' : 'CSV',
			'text/x-markdown'               : 'Markdown',
			'image/x-ms-bmp'                : 'BMP',
			'image/jpeg'                    : 'JPEG',
			'image/gif'                     : 'GIF',
			'image/png'                     : 'PNG',
			'image/tiff'                    : 'TIFF',
			'image/x-targa'                 : 'TGA',
			'image/vnd.adobe.photoshop'     : 'PSD',
			'image/xbm'                     : 'XBITMAP',
			'image/pxm'                     : 'PXM',
			'audio/mpeg'                    : 'AudioMPEG',
			'audio/midi'                    : 'AudioMIDI',
			'audio/ogg'                     : 'AudioOGG',
			'audio/mp4'                     : 'AudioMPEG4',
			'audio/x-m4a'                   : 'AudioMPEG4',
			'audio/wav'                     : 'AudioWAV',
			'audio/x-mp3-playlist'          : 'AudioPlaylist',
			'video/x-dv'                    : 'VideoDV',
			'video/mp4'                     : 'VideoMPEG4',
			'video/mpeg'                    : 'VideoMPEG',
			'video/x-msvideo'               : 'VideoAVI',
			'video/quicktime'               : 'VideoMOV',
			'video/x-ms-wmv'                : 'VideoWM',
			'video/x-flv'                   : 'VideoFlash',
			'video/x-matroska'              : 'VideoMKV',
			'video/ogg'                     : 'VideoOGG'
		},
	
	/**
	 * File mimetype to file extention mapping
	 * 
	 * @type  Object
	 * @see   elFinder.mimetypes.js
	 */
	mimeTypes : {},
	
	/**
	 * Ajax request data validation rules
	 * 
	 * @type  Object
	 */
	rules : {
		defaults : function(data) {
			if (!data
			|| (data.added && !Array.isArray(data.added))
			||  (data.removed && !Array.isArray(data.removed))
			||  (data.changed && !Array.isArray(data.changed))) {
				return false;
			}
			return true;
		},
		open    : function(data) { return data && data.cwd && data.files && jQuery.isPlainObject(data.cwd) && Array.isArray(data.files); },
		tree    : function(data) { return data && data.tree && Array.isArray(data.tree); },
		parents : function(data) { return data && data.tree && Array.isArray(data.tree); },
		tmb     : function(data) { return data && data.images && (jQuery.isPlainObject(data.images) || Array.isArray(data.images)); },
		upload  : function(data) { return data && (jQuery.isPlainObject(data.added) || Array.isArray(data.added));},
		search  : function(data) { return data && data.files && Array.isArray(data.files); }
	},
	
	/**
	 * Commands costructors
	 *
	 * @type Object
	 */
	commands : {},
	
	/**
	 * Commands to add the item (space delimited)
	 * 
	 * @type String
	 */
	cmdsToAdd : 'archive duplicate extract mkdir mkfile paste rm upload',
	
	parseUploadData : function(text) {
		var self = this,
			data;
		
		if (!jQuery.trim(text)) {
			return {error : ['errResponse', 'errDataEmpty']};
		}
		
		try {
			data = JSON.parse(text);
		} catch (e) {
			return {error : ['errResponse', 'errDataNotJSON']};
		}
		
		data = self.normalize(data);
		if (!self.validResponse('upload', data)) {
			return {error : (response.norError || ['errResponse'])};
		}
		data.removed = jQuery.merge((data.removed || []), jQuery.map(data.added || [], function(f) { return self.file(f.hash)? f.hash : null; }));
		return data;
		
	},
	
	iframeCnt : 0,
	
	uploads : {
		// xhr muiti uploading flag
		xhrUploading: false,
		
		// Timer of request fail to sync
		failSyncTm: null,
		
		// current chunkfail requesting chunk
		chunkfailReq: {},
		
		// check file/dir exists
		checkExists: function(files, target, fm, isDir) {
			var dfrd = jQuery.Deferred(),
				names, renames = [], hashes = {}, chkFiles = [],
				cancel = function() {
					var i = files.length;
					while (--i > -1) {
						files[i]._remove = true;
					}
				},
				resolve = function() {
					dfrd.resolve(renames, hashes);
				},
				check = function() {
					var existed = [], exists = [], i, c,
						pathStr = target !== fm.cwd().hash? fm.path(target, true) + fm.option('separator', target) : '',
						confirm = function(ndx) {
							alert(1);
							var last = ndx == exists.length-1,
								opts = {
									cssClass : 'elfinder-confirm-upload',
									title  : fm.i18n('cmdupload'),
									text   : ['errExists', pathStr + exists[ndx].name, 'confirmRepl'], 
									all    : !last,
									accept : {
										label    : 'btnYes',
										callback : function(all) {
											!last && !all
												? confirm(++ndx)
												: resolve();
										}
									},
									reject : {
										label    : 'btnNo',
										callback : function(all) {
											var i;
			
											if (all) {
												i = exists.length;
												while (ndx < i--) {
													files[exists[i].i]._remove = true;
												}
											} else {
												files[exists[ndx].i]._remove = true;
											}
			
											!last && !all
												? confirm(++ndx)
												: resolve();
										}
									},
									cancel : {
										label    : 'btnCancel',
										callback : function() {
											cancel();
											resolve();
										}
									},
									buttons : [
										{
											label : 'btnBackup',
											cssClass : 'elfinder-confirm-btn-backup',
											callback : function(all) {
												var i;
												if (all) {
													i = exists.length;
													while (ndx < i--) {
														renames.push(exists[i].name);
													}
												} else {
													renames.push(exists[ndx].name);
												}
												!last && !all
													? confirm(++ndx)
													: resolve();
											}
										}
									]
								};
							
							if (!isDir) {
								opts.buttons.push({
									label : 'btnRename' + (last? '' : 'All'),
									cssClass : 'elfinder-confirm-btn-rename',
									callback : function() {
										renames = null;
										resolve();
									}
								});
							}
							if (fm.iframeCnt > 0) {
								delete opts.reject;
							}
							fm.confirm(opts);
						};
					
					if (! fm.file(target).read) {
						// for dropbox type
						resolve();
						return;
					}
					
					names = jQuery.map(files, function(file, i) { return file.name && (!fm.UA.iOS || file.name !== 'image.jpg')? {i: i, name: file.name} : null ;});
					
					fm.request({
						data : {cmd : 'ls', target : target, intersect : jQuery.map(names, function(item) { return item.name;})},
						notify : {type : 'preupload', cnt : 1, hideCnt : true},
						preventDefault : true
					})
					.done(function(data) {
						var existedArr, cwdItems;
						if (data) {
							if (data.error) {
								cancel();
							} else {
								if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
									if (data.list) {
										if (Array.isArray(data.list)) {
											existed = data.list || [];
										} else {
											existedArr = [];
											existed = jQuery.map(data.list, function(n) {
												if (typeof n === 'string') {
													return n;
												} else {
													// support to >=2.1.11 plugin Normalizer, Sanitizer
													existedArr = existedArr.concat(n);
													return false;
												}
											});
											if (existedArr.length) {
												existed = existed.concat(existedArr);
											}
											hashes = data.list;
										}
										exists = jQuery.grep(names, function(name){
											return jQuery.inArray(name.name, existed) !== -1 ? true : false ;
										});
										if (exists.length && existed.length && target == fm.cwd().hash) {
											cwdItems = jQuery.map(fm.files(target), function(file) { return file.name; } );
											if (jQuery.grep(existed, function(n) { 
												return jQuery.inArray(n, cwdItems) === -1? true : false;
											}).length){
												fm.sync();
											}
										}
									}
								}
							}
						}
						if (exists.length > 0) {
							confirm(0);
						} else {
							resolve();
						}
					})
					.fail(function(error) {
						cancel();
						resolve();
						error && fm.error(error);
					});
				};
			if (fm.api >= 2.1 && typeof files[0] == 'object') {
				check();
			} else {
				resolve();
			}
			return dfrd;
		},
		
		// check droped contents
		checkFile : function(data, fm, target) {
			if (!!data.checked || data.type == 'files') {
				return data.files;
			} else if (data.type == 'data') {
				var dfrd = jQuery.Deferred(),
				scanDfd = jQuery.Deferred(),
				files = [],
				paths = [],
				dirctorys = [],
				processing = 0,
				items,
				mkdirs = [],
				cancel = false,
				toArray = function(list) {
					return Array.prototype.slice.call(list || [], 0);
				},
				doScan = function(items) {
					var entry, readEntries,
						excludes = fm.options.folderUploadExclude[fm.OS] || null,
						length = items.length,
						check = function() {
							if (--processing < 1 && scanDfd.state() === 'pending') {
								scanDfd.resolve();
							}
						},
						pushItem = function(file) {
							if (! excludes || ! file.name.match(excludes)) {
								paths.push(entry.fullPath || '');
								files.push(file);
							}
							check();
						},
						readEntries = function(dirReader) {
							var entries = [],
								read = function() {
									dirReader.readEntries(function(results) {
										if (cancel || !results.length) {
											for (var i = 0; i < entries.length; i++) {
												if (cancel) {
													scanDfd.reject();
													break;
												}
												doScan([entries[i]]);
											}
											check();
										} else {
											entries = entries.concat(toArray(results));
											read();
										}
									}, check);
								};
							read();
						};
					
					processing++;
					for (var i = 0; i < length; i++) {
						if (cancel) {
							scanDfd.reject();
							break;
						}
						entry = items[i];
						if (entry) {
							if (entry.isFile) {
								processing++;
								entry.file(pushItem, check);
							} else if (entry.isDirectory) {
								if (fm.api >= 2.1) {
									processing++;
									mkdirs.push(entry.fullPath);
									readEntries(entry.createReader()); // Start reading dirs.
								}
							}
						}
					}
					check();
					return scanDfd;
				}, hasDirs;
				
				items = jQuery.map(data.files.items, function(item){
					return item.getAsEntry? item.getAsEntry() : item.webkitGetAsEntry();
				});
				jQuery.each(items, function(i, item) {
					if (item.isDirectory) {
						hasDirs = true;
						return false;
					}
				});
				if (items.length > 0) {
					fm.uploads.checkExists(items, target, fm, hasDirs).done(function(renames, hashes){
						var dfds = [];
						if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
							if (renames === null) {
								data.overwrite = 0;
								renames = [];
							}
							items = jQuery.grep(items, function(item){
								var i, bak, hash, dfd, hi;
								if (item.isDirectory && renames.length) {
									i = jQuery.inArray(item.name, renames);
									if (i !== -1) {
										renames.splice(i, 1);
										bak = fm.uniqueName(item.name + fm.options.backupSuffix , null, '');
										jQuery.each(hashes, function(h, name) {
											if (item.name == name) {
												hash = h;
												return false;
											}
										});
										if (! hash) {
											hash = fm.fileByName(item.name, target).hash;
										}
										fm.lockfiles({files : [hash]});
										dfd = fm.request({
											data   : {cmd : 'rename', target : hash, name : bak},
											notify : {type : 'rename', cnt : 1}
										})
										.fail(function() {
											item._remove = true;
											fm.sync();
										})
										.always(function() {
											fm.unlockfiles({files : [hash]});
										});
										dfds.push(dfd);
									}
								}
								return !item._remove? true : false;
							});
						}
						jQuery.when.apply($, dfds).done(function(){
							var notifyto, msg,
								id = +new Date();
							
							if (items.length > 0) {
								msg = fm.escape(items[0].name);
								if (items.length > 1) {
									msg += ' ... ' + items.length + fm.i18n('items');
								}
								notifyto = setTimeout(function() {
									fm.notify({
										type : 'readdir',
										id : id,
										cnt : 1,
										hideCnt: true,
										msg : fm.i18n('ntfreaddir') + ' (' + msg + ')',
										cancel: function() {
											cancel = true;
										}
									});
								}, fm.options.notifyDelay);
								doScan(items).done(function() {
									notifyto && clearTimeout(notifyto);
									fm.notify({type : 'readdir', id: id, cnt : -1});
									if (cancel) {
										dfrd.reject();
									} else {
										dfrd.resolve([files, paths, renames, hashes, mkdirs]);
									}
								}).fail(function() {
									dfrd.reject();
								});
							} else {
								dfrd.reject();
							}
						});
					});
					return dfrd.promise();
				} else {
					return dfrd.reject();
				}
			} else {
				var ret = [];
				var check = [];
				var str = data.files[0];
				if (data.type == 'html') {
					var tmp = jQuery("<html/>").append(jQuery.parseHTML(str.replace(/ src=/ig, ' _elfsrc='))),
						atag;
					jQuery('img[_elfsrc]', tmp).each(function(){
						var url, purl,
						self = jQuery(this),
						pa = self.closest('a');
						if (pa && pa.attr('href') && pa.attr('href').match(/\.(?:jpe?g|gif|bmp|png)/i)) {
							purl = pa.attr('href');
						}
						url = self.attr('_elfsrc');
						if (url) {
							if (purl) {
								jQuery.inArray(purl, ret) == -1 && ret.push(purl);
								jQuery.inArray(url, check) == -1 &&  check.push(url);
							} else {
								jQuery.inArray(url, ret) == -1 && ret.push(url);
							}
						}
						// Probably it's clipboard data
						if (ret.length === 1 && ret[0].match(/^data:image\/png/)) {
							data.clipdata = true;
						}
					});
					atag = jQuery('a[href]', tmp);
					atag.each(function(){
						var text, loc,
							parseUrl = function(url) {
								var a = document.createElement('a');
								a.href = url;
								return a;
							};
						if (text = jQuery(this).text()) {
							loc = parseUrl(jQuery(this).attr('href'));
							if (loc.href && loc.href.match(/^(?:ht|f)tp/i) && (atag.length === 1 || ! loc.pathname.match(/(?:\.html?|\/[^\/.]*)$/i) || jQuery.trim(text).match(/\.[a-z0-9-]{1,10}$/i))) {
								if (jQuery.inArray(loc.href, ret) == -1 && jQuery.inArray(loc.href, check) == -1) ret.push(loc.href);
							}
						}
					});
				} else {
					var regex, m, url;
					regex = /((?:ht|f)tps?:\/\/[-_.!~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+)/ig;
					while (m = regex.exec(str)) {
						url = m[1].replace(/&amp;/g, '&');
						if (jQuery.inArray(url, ret) == -1) ret.push(url);
					}
				}
				return ret;
			}
		},

		// upload transport using XMLHttpRequest
		xhr : function(data, fm) { 
			var self   = fm ? fm : this,
				node        = self.getUI(),
				xhr         = new XMLHttpRequest(),
				notifyto    = null, notifyto2 = null,
				dataChecked = data.checked,
				isDataType  = (data.isDataType || data.type == 'data'),
				target      = (data.target || self.cwd().hash),
				dropEvt     = (data.dropEvt || null),
				extraData  = data.extraData || null,
				chunkEnable = (self.option('uploadMaxConn', target) != -1),
				multiMax    = Math.min(5, Math.max(1, self.option('uploadMaxConn', target))),
				retryWait   = 10000, // 10 sec
				retryMax    = 30, // 10 sec * 30 = 300 secs (Max 5 mins)
				retry       = 0,
				getFile     = function(files) {
					var dfd = jQuery.Deferred(),
						file;
					if (files.promise) {
						files.always(function(f) {
							dfd.resolve(Array.isArray(f) && f.length? (isDataType? f[0][0] : f[0]) : {});
						});
					} else {
						dfd.resolve(files.length? (isDataType? files[0][0] : files[0]) : {});
					}
					return dfd;
				},
				dfrd   = jQuery.Deferred()
					.fail(function(err) {
						var error = self.parseError(err),
							userAbort;
						if (error === 'userabort') {
							userAbort = true;
							error = void 0;
						}
						if (files && (self.uploads.xhrUploading || userAbort)) {
							// send request om fail
							getFile(files).done(function(file) {
								if (!userAbort) {
									triggerError(error, file);
								}
								if (! file._cid) {
									// send sync request
									self.uploads.failSyncTm && clearTimeout(self.uploads.failSyncTm);
									self.uploads.failSyncTm = setTimeout(function() {
										self.sync(target);
									}, 1000);
								} else if (! self.uploads.chunkfailReq[file._cid]) {
									// send chunkfail request
									self.uploads.chunkfailReq[file._cid] = true;
									setTimeout(function() {
										fm.request({
											data : {
												cmd: 'upload',
												target: target,
												chunk: file._chunk,
												cid: file._cid,
												upload: ['chunkfail'],
												mimes: 'chunkfail'
											},
											options : {
												type: 'post',
												url: self.uploadURL
											},
											preventDefault: true
										}).always(function() {
											delete self.uploads.chunkfailReq[file._chunk];
										});
									}, 1000);
								}
							});
						} else {
							triggerError(error);
						}
						!userAbort && self.sync();
						self.uploads.xhrUploading = false;
						files = null;
					})
					.done(function(data) {
						self.uploads.xhrUploading = false;
						files = null;
						if (data) {
							self.currentReqCmd = 'upload';
							data.warning && triggerError(data.warning);
							self.updateCache(data);
							data.removed && data.removed.length && self.remove(data);
							data.added   && data.added.length   && self.add(data);
							data.changed && data.changed.length && self.change(data);
							self.trigger('upload', data, false);
							self.trigger('uploaddone');
							if (data.toasts && Array.isArray(data.toasts)) {
								jQuery.each(data.toasts, function() {
									this.msg && self.toast(this);
								});
							}
							data.sync && self.sync();
							data.debug && fm.debug('backend-debug', data);
						}
					})
					.always(function() {
						self.abortXHR(xhr);
						// unregist fnAbort function
						node.off('uploadabort', fnAbort);
						jQuery(window).off('unload', fnAbort);
						notifyto && clearTimeout(notifyto);
						notifyto2 && clearTimeout(notifyto2);
						dataChecked && !data.multiupload && checkNotify() && self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
						chunkMerge && notifyElm.children('.elfinder-notify-chunkmerge').length && self.notify({type : 'chunkmerge', cnt : -1});
					}),
				formData    = new FormData(),
				files       = data.input ? data.input.files : self.uploads.checkFile(data, self, target), 
				cnt         = data.checked? (isDataType? files[0].length : files.length) : files.length,
				loaded      = 0,
				prev        = 0,
				filesize    = 0,
				notify      = false,
				notifyElm   = self.ui.notify,
				cancelBtn   = true,
				abort       = false,
				checkNotify = function() {
					if (!notify && (ntfUpload = notifyElm.children('.elfinder-notify-upload')).length) {
						notify = true;
					}
					return notify;
				},
				fnAbort     = function(e, error) {
					abort = true;
					self.abortXHR(xhr, { quiet: true, abort: true });
					dfrd.reject(error);
					if (checkNotify()) {
						self.notify({type : 'upload', cnt : ntfUpload.data('cnt') * -1, progress : 0, size : 0});
					}
				},
				cancelToggle = function(show) {
					ntfUpload.children('.elfinder-notify-cancel')[show? 'show':'hide']();
				},
				startNotify = function(size) {
					if (!size) size = filesize;
					return setTimeout(function() {
						notify = true;
						self.notify({type : 'upload', cnt : cnt, progress : loaded - prev, size : size,
							cancel: function() {
								node.trigger('uploadabort', 'userabort');
							}
						});
						ntfUpload = notifyElm.children('.elfinder-notify-upload');
						prev = loaded;
						if (data.multiupload) {
							cancelBtn && cancelToggle(true);
						} else {
							cancelToggle(cancelBtn && loaded < size);
						}
					}, self.options.notifyDelay);
				},
				doRetry = function() {
					if (retry++ <= retryMax) {
						if (checkNotify() && prev) {
							self.notify({type : 'upload', cnt : 0, progress : 0, size : prev});
						}
						self.abortXHR(xhr, { quiet: true });
						prev = loaded = 0;
						setTimeout(function() {
							var reqId;
							if (! abort) {
								xhr.open('POST', self.uploadURL, true);
								if (self.api >= 2.1029) {
									reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
									(typeof formData['delete'] === 'function') && formData['delete']('reqid');
									formData.append('reqid', reqId);
									xhr._requestId = reqId;
								}
								xhr.send(formData);
							}
						}, retryWait);
					} else {
						node.trigger('uploadabort', ['errAbort', 'errTimeout']);
					}
				},
				progress = function() {
					var node;
					if (notify) {
						dfrd.notifyWith(ntfUpload, [{
							cnt: ntfUpload.data('cnt'),
							progress: ntfUpload.data('progress'),
							total: ntfUpload.data('total')
						}]);
					}
				},
				triggerError = function(err, file, unite) {
					err && self.trigger('xhruploadfail', { error: err, file: file });
					if (unite) {
						if (err) {
							if (errCnt < self.options.maxErrorDialogs) {
								if (Array.isArray(err)) {
									errors = errors.concat(err);
								} else {
									errors.push(err);
								}
							}
							errCnt++;
						}
					} else {
						if (err) {
							self.error(err);
						} else {
							if (errors.length) {
								if (errCnt >= self.options.maxErrorDialogs) {
									errors = errors.concat('moreErrors', errCnt - self.options.maxErrorDialogs);
								}
								self.error(errors);
							}
							errors = [];
							errCnt = 0;
						}
					}
				},
				errors = [],
				errCnt = 0,
				renames = (data.renames || null),
				hashes = (data.hashes || null),
				chunkMerge = false,
				ntfUpload = jQuery();
			
			// regist fnAbort function
			node.one('uploadabort', fnAbort);
			jQuery(window).one('unload.' + fm.namespace, fnAbort);
			
			!chunkMerge && (prev = loaded);
			
			if (!isDataType && !cnt) {
				return dfrd.reject(['errUploadNoFiles']);
			}
			
			xhr.addEventListener('error', function() {
				if (xhr.status == 0) {
					if (abort) {
						dfrd.reject();
					} else {
						// ff bug while send zero sized file
						// for safari - send directory
						if (!isDataType && data.files && jQuery.grep(data.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) {
							dfrd.reject(['errAbort', 'errFolderUpload']);
						} else if (data.input && jQuery.grep(data.input.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) {
							dfrd.reject(['errUploadNoFiles']);
						} else {
							doRetry();
						}
					}
				} else {
					node.trigger('uploadabort', 'errConnect');
				}
			}, false);
			
			xhr.addEventListener('load', function(e) {
				var status = xhr.status, res, curr = 0, error = '', errData, errObj;
				
				if (status >= 400) {
					if (status > 500) {
						error = 'errResponse';
					} else {
						error = ['errResponse', 'errServerError'];
					}
				} else {
					if (!xhr.responseText) {
						error = ['errResponse', 'errDataEmpty'];
					}
				}
				
				if (error) {
					node.trigger('uploadabort');
					getFile(files).done(function(file) {
						return dfrd.reject(file._cid? null : error);
					});
				}
				
				loaded = filesize;
				
				if (checkNotify() && (curr = loaded - prev)) {
					self.notify({type : 'upload', cnt : 0, progress : curr, size : 0});
					progress();
				}

				res = self.parseUploadData(xhr.responseText);
				
				// chunked upload commit
				if (res._chunkmerged) {
					formData = new FormData();
					var _file = [{_chunkmerged: res._chunkmerged, _name: res._name, _mtime: res._mtime}];
					chunkMerge = true;
					node.off('uploadabort', fnAbort);
					notifyto2 = setTimeout(function() {
						self.notify({type : 'chunkmerge', cnt : 1});
					}, self.options.notifyDelay);
					isDataType? send(_file, files[1]) : send(_file);
					return;
				}
				
				res._multiupload = data.multiupload? true : false;
				if (res.error) {
					errData = {
						cmd: 'upload',
						err: res,
						xhr: xhr,
						rc: xhr.status
					};
					self.trigger('uploadfail', res);
					// trigger "requestError" event
					self.trigger('requestError', errData);
					if (errData._event && errData._event.isDefaultPrevented()) {
						res.error = '';
					}
					if (res._chunkfailure || res._multiupload) {
						abort = true;
						self.uploads.xhrUploading = false;
						notifyto && clearTimeout(notifyto);
						if (ntfUpload.length) {
							self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
							dfrd.reject(res);
						} else {
							// for multi connection
							dfrd.reject();
						}
					} else {
						dfrd.reject(res);
					}
				} else {
					dfrd.resolve(res);
				}
			}, false);
			
			xhr.upload.addEventListener('loadstart', function(e) {
				if (!chunkMerge && e.lengthComputable) {
					loaded = e.loaded;
					retry && (loaded = 0);
					filesize = e.total;
					if (!loaded) {
						loaded = parseInt(filesize * 0.05);
					}
					if (checkNotify()) {
						self.notify({type : 'upload', cnt : 0, progress : loaded - prev, size : data.multiupload? 0 : filesize});
						prev = loaded;
						progress();
					}
				}
			}, false);
			
			xhr.upload.addEventListener('progress', function(e) {
				var curr;

				if (e.lengthComputable && !chunkMerge && xhr.readyState < 2) {
					
					loaded = e.loaded;

					// to avoid strange bug in safari (not in chrome) with drag&drop.
					// bug: macos finder opened in any folder,
					// reset safari cache (option+command+e), reload elfinder page,
					// drop file from finder
					// on first attempt request starts (progress callback called ones) but never ends.
					// any next drop - successfull.
					if (!data.checked && loaded > 0 && !notifyto) {
						notifyto = startNotify(xhr._totalSize - loaded);
					}
					
					if (!filesize) {
						filesize = e.total;
						if (!loaded) {
							loaded = parseInt(filesize * 0.05);
						}
					}
					
					curr = loaded - prev;
					if (checkNotify() && (curr/e.total) >= 0.05) {
						self.notify({type : 'upload', cnt : 0, progress : curr, size : 0});
						prev = loaded;
						progress();
					}
					
					if (! data.multiupload && loaded >= filesize) {
						cancelBtn = false;
						cancelToggle(false);
					}
				}
			}, false);
			
			var send = function(files, paths){
				var size = 0,
				fcnt = 1,
				sfiles = [],
				c = 0,
				total = cnt,
				maxFileSize,
				totalSize = 0,
				chunked = [],
				chunkID = new Date().getTime().toString().substr(-9), // for take care of the 32bit backend system
				BYTES_PER_CHUNK = Math.min((fm.uplMaxSize? fm.uplMaxSize : 2097152) - 8190, fm.options.uploadMaxChunkSize), // uplMaxSize margin 8kb or options.uploadMaxChunkSize
				blobSlice = chunkEnable? false : '',
				blobSize, blobMtime, i, start, end, chunks, blob, chunk, added, done, last, failChunk,
				multi = function(files, num){
					var sfiles = [], cid, sfilesLen = 0, cancelChk;
					if (!abort) {
						while(files.length && sfiles.length < num) {
							sfiles.push(files.shift());
						}
						sfilesLen = sfiles.length;
						if (sfilesLen) {
							cancelChk = sfilesLen;
							for (var i=0; i < sfilesLen; i++) {
								if (abort) {
									break;
								}
								cid = isDataType? (sfiles[i][0][0]._cid || null) : (sfiles[i][0]._cid || null);
								if (!!failChunk[cid]) {
									last--;
									continue;
								}
								fm.exec('upload', {
									type: data.type,
									isDataType: isDataType,
									files: sfiles[i],
									checked: true,
									target: target,
									dropEvt: dropEvt,
									renames: renames,
									hashes: hashes,
									multiupload: true,
									overwrite: data.overwrite === 0? 0 : void 0
								}, void 0, target)
								.fail(function(error) {
									if (error && error === 'No such command') {
										abort = true;
										fm.error(['errUpload', 'errPerm']);
									}
									if (cid) {	
										failChunk[cid] = true;
									}
								})
								.always(function(e) {
									if (e && e.added) added = jQuery.merge(added, e.added);
									if (last <= ++done) {
										fm.trigger('multiupload', {added: added});
										notifyto && clearTimeout(notifyto);
										if (checkNotify()) {
											self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
										}
									}
									if (files.length) {
										multi(files, 1); // Next one
									} else {
										if (--cancelChk <= 1) {
											cancelBtn = false;
											cancelToggle(false);
										}
									}
								});
							}
						}
					}
					if (sfiles.length < 1 || abort) {
						if (abort) {
							notifyto && clearTimeout(notifyto);
							if (cid) {
								failChunk[cid] = true;
							}
							dfrd.reject();
						} else {
							dfrd.resolve();
							self.uploads.xhrUploading = false;
						}
					}
				},
				check = function(){
					if (!self.uploads.xhrUploading) {
						self.uploads.xhrUploading = true;
						multi(sfiles, multiMax); // Max connection: 3
					} else {
						setTimeout(check, 100);
					}
				},
				reqId, err;

				if (! dataChecked && (isDataType || data.type == 'files')) {
					if (! (maxFileSize = fm.option('uploadMaxSize', target))) {
						maxFileSize = 0;
					}
					for (i=0; i < files.length; i++) {
						try {
							blob = files[i];
							blobSize = blob.size;
							if (blobSlice === false) {
								blobSlice = '';
								if (self.api >= 2.1) {
									if ('slice' in blob) {
										blobSlice = 'slice';
									} else if ('mozSlice' in blob) {
										blobSlice = 'mozSlice';
									} else if ('webkitSlice' in blob) {
										blobSlice = 'webkitSlice';
									}
								}
							}
						} catch(e) {
							cnt--;
							total--;
							continue;
						}
						
						// file size check
						if ((maxFileSize && blobSize > maxFileSize) || (!blobSlice && fm.uplMaxSize && blobSize > fm.uplMaxSize)) {
							triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true);
							cnt--;
							total--;
							continue;
						}
						
						// file mime check
						if (blob.type && ! self.uploadMimeCheck(blob.type, target)) {
							triggerError(['errUploadFile', blob.name, 'errUploadMime', '(' + blob.type + ')'], blob, true);
							cnt--;
							total--;
							continue;
						}
						
						if (blobSlice && blobSize > BYTES_PER_CHUNK) {
							start = 0;
							end = BYTES_PER_CHUNK;
							chunks = -1;
							total = Math.floor((blobSize - 1) / BYTES_PER_CHUNK);
							blobMtime = blob.lastModified? Math.round(blob.lastModified/1000) : 0;

							totalSize += blobSize;
							chunked[chunkID] = 0;
							while(start < blobSize) {
								chunk = blob[blobSlice](start, end);
								chunk._chunk = blob.name + '.' + (++chunks) + '_' + total + '.part';
								chunk._cid   = chunkID;
								chunk._range = start + ',' + chunk.size + ',' + blobSize;
								chunk._mtime = blobMtime;
								chunked[chunkID]++;
								
								if (size) {
									c++;
								}
								if (typeof sfiles[c] == 'undefined') {
									sfiles[c] = [];
									if (isDataType) {
										sfiles[c][0] = [];
										sfiles[c][1] = [];
									}
								}
								size = BYTES_PER_CHUNK;
								fcnt = 1;
								if (isDataType) {
									sfiles[c][0].push(chunk);
									sfiles[c][1].push(paths[i]);
								} else {
									sfiles[c].push(chunk);
								}

								start = end;
								end = start + BYTES_PER_CHUNK;
							}
							if (chunk == null) {
								triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true);
								cnt--;
								total--;
							} else {
								total += chunks;
								size = 0;
								fcnt = 1;
								c++;
							}
							continue;
						}
						if ((fm.uplMaxSize && size + blobSize > fm.uplMaxSize) || fcnt > fm.uplMaxFile) {
							size = 0;
							fcnt = 1;
							c++;
						}
						if (typeof sfiles[c] == 'undefined') {
							sfiles[c] = [];
							if (isDataType) {
								sfiles[c][0] = [];
								sfiles[c][1] = [];
							}
						}
						if (isDataType) {
							sfiles[c][0].push(blob);
							sfiles[c][1].push(paths[i]);
						} else {
							sfiles[c].push(blob);
						}
						size += blobSize;
						totalSize += blobSize;
						fcnt++;
					}
					
					if (errors.length) {
						triggerError();
					}

					if (sfiles.length == 0) {
						// no data
						data.checked = true;
						return false;
					}
					
					if (sfiles.length > 1) {
						// multi upload
						notifyto = startNotify(totalSize);
						added = [];
						done = 0;
						last = sfiles.length;
						failChunk = [];
						check();
						return true;
					}
					
					// single upload
					if (isDataType) {
						files = sfiles[0][0];
						paths = sfiles[0][1];
					} else {
						files = sfiles[0];
					}
				}
				
				if (!dataChecked) {
					if (!fm.UA.Safari || !data.files) {
						notifyto = startNotify(totalSize);
					} else {
						xhr._totalSize = totalSize;
					}
				}
				
				dataChecked = true;
				
				if (! files.length) {
					dfrd.reject(['errUploadNoFiles']);
				}
				
				xhr.open('POST', self.uploadURL, true);
				
				// set request headers
				if (fm.customHeaders) {
					jQuery.each(fm.customHeaders, function(key) {
						xhr.setRequestHeader(key, this);
					});
				}
				
				// set xhrFields
				if (fm.xhrFields) {
					jQuery.each(fm.xhrFields, function(key) {
						if (key in xhr) {
							xhr[key] = this;
						}
					});
				}

				if (self.api >= 2.1029) {
					// request ID
					reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
					formData.append('reqid', reqId);
					xhr._requestId = reqId;
				}
				formData.append('cmd', 'upload');
				formData.append(self.newAPI ? 'target' : 'current', target);
				if (renames && renames.length) {
					jQuery.each(renames, function(i, v) {
						formData.append('renames[]', v);
					});
					formData.append('suffix', fm.options.backupSuffix);
				}
				if (hashes) {
					jQuery.each(hashes, function(i, v) {
						formData.append('hashes['+ i +']', v);
					});
				}
				jQuery.each(self.customData, function(key, val) {
					formData.append(key, val);
				});
				jQuery.each(self.options.onlyMimes, function(i, mime) {
					formData.append('mimes[]', mime);
				});
				
				jQuery.each(files, function(i, file) {
					if (file._chunkmerged) {
						formData.append('chunk', file._chunkmerged);
						formData.append('upload[]', file._name);
						formData.append('mtime[]', file._mtime);
					} else {
						if (file._chunkfail) {
							formData.append('upload[]', 'chunkfail');
							formData.append('mimes', 'chunkfail');
						} else {
							formData.append('upload[]', file);
							if (data.clipdata) {
								data.overwrite = 0;
								formData.append('name[]', fm.date(fm.nonameDateFormat) + '.png');
							}
							if (file.name && fm.UA.iOS) {
								if (file.name.match(/^image\.jpe?g$/i)) {
									data.overwrite = 0;
									formData.append('name[]', fm.date(fm.nonameDateFormat) + '.jpg');
								} else if (file.name.match(/^capturedvideo\.mov$/i)) {
									data.overwrite = 0;
									formData.append('name[]', fm.date(fm.nonameDateFormat) + '.mov');
								}
							}
						}
						if (file._chunk) {
							formData.append('chunk', file._chunk);
							formData.append('cid'  , file._cid);
							formData.append('range', file._range);
							formData.append('mtime[]', file._mtime);
						} else {
							formData.append('mtime[]', file.lastModified? Math.round(file.lastModified/1000) : 0);
						}
					}
				});
				
				if (isDataType) {
					jQuery.each(paths, function(i, path) {
						formData.append('upload_path[]', path);
					});
				}
				
				if (data.overwrite === 0) {
					formData.append('overwrite', 0);
				}
				
				// send int value that which meta key was pressed when dropped  as `dropWith`
				if (dropEvt) {
					formData.append('dropWith', parseInt(
						(dropEvt.altKey  ? '1' : '0')+
						(dropEvt.ctrlKey ? '1' : '0')+
						(dropEvt.metaKey ? '1' : '0')+
						(dropEvt.shiftKey? '1' : '0'), 2));
				}
				
				// set extraData on current request
				if (extraData) {
					jQuery.each(extraData, function(key, val) {
						formData.append(key, val);
					});
				}

				xhr.send(formData);
				
				return true;
			};
			
			if (! isDataType) {
				if (files.length > 0) {
					if (! data.clipdata && renames == null) {
						var mkdirs = [],
							paths = [],
							excludes = fm.options.folderUploadExclude[fm.OS] || null;
						jQuery.each(files, function(i, file) {
							var relPath = file.webkitRelativePath || file.relativePath || '',
								idx, rootDir;
							if (! relPath) {
								return false;
							}
							if (excludes && file.name.match(excludes)) {
								file._remove = true;
								relPath = void(0);
							} else {
								// add '/' as prefix to make same to folder uploading with DnD, see #2607
								relPath = '/' + relPath.replace(/\/[^\/]*$/, '').replace(/^\//, '');
								if (relPath && jQuery.inArray(relPath, mkdirs) === -1) {
									mkdirs.push(relPath);
									// checking the root directory to supports <input type="file" webkitdirectory> see #2378
									idx = relPath.substr(1).indexOf('/');
									if (idx !== -1 && (rootDir = relPath.substr(0, idx + 1)) && jQuery.inArray(rootDir, mkdirs) === -1) {
										mkdirs.unshift(rootDir);
									}
								}
							}
							paths.push(relPath);
						});
						renames = [];
						hashes = {};
						if (mkdirs.length) {
							(function() {
								var checkDirs = jQuery.map(mkdirs, function(name) { return name.substr(1).indexOf('/') === -1 ? {name: name.substr(1)} : null;}),
									cancelDirs = [];
								fm.uploads.checkExists(checkDirs, target, fm, true).done(
									function(res, res2) {
										var dfds = [], dfd, bak, hash;
										if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
											cancelDirs = jQuery.map(checkDirs, function(dir) { return dir._remove? dir.name : null ;} );
											checkDirs = jQuery.grep(checkDirs, function(dir) { return !dir._remove? true : false ;} );
										}
										if (cancelDirs.length) {
											jQuery.each(paths.concat(), function(i, path) {
												if (jQuery.inArray(path, cancelDirs) === 0) {
													files[i]._remove = true;
													paths[i] = void(0);
												}
											});
										}
										files = jQuery.grep(files, function(file) { return file._remove? false : true; });
										paths = jQuery.grep(paths, function(path) { return path === void 0 ? false : true; });
										if (checkDirs.length) {
											dfd = jQuery.Deferred();
											if (res.length) {
												jQuery.each(res, function(i, existName) {
													// backup
													bak = fm.uniqueName(existName + fm.options.backupSuffix , null, '');
													jQuery.each(res2, function(h, name) {
														if (res[0] == name) {
															hash = h;
															return false;
														}
													});
													if (! hash) {
														hash = fm.fileByName(res[0], target).hash;
													}
													fm.lockfiles({files : [hash]});
													dfds.push(
														fm.request({
															data   : {cmd : 'rename', target : hash, name : bak},
															notify : {type : 'rename', cnt : 1}
														})
														.fail(function(error) {
															dfrd.reject(error);
															fm.sync();
														})
														.always(function() {
															fm.unlockfiles({files : [hash]});
														})
													);
												});
											} else {
												dfds.push(null);
											}
											
											jQuery.when.apply($, dfds).done(function() {
												// ensure directories
												fm.request({
													data   : {cmd : 'mkdir', target : target, dirs : mkdirs},
													notify : {type : 'mkdir', cnt : mkdirs.length},
													preventFail: true
												})
												.fail(function(error) {
													error = error || ['errUnknown'];
													if (error[0] === 'errCmdParams') {
														multiMax = 1;
													} else {
														multiMax = 0;
														dfrd.reject(error);
													}
												})
												.done(function(data) {
													var rm = false;
													if (!data.hashes) {
														data.hashes = {};
													}
													paths = jQuery.map(paths.concat(), function(p, i) {
														if (p === '/') {
															return target;
														} else {
															if (data.hashes[p]) {
																return data.hashes[p];
															} else {
																rm = true;
																files[i]._remove = true;
																return null;
															}
														}
													});
													if (rm) {
														files = jQuery.grep(files, function(file) { return file._remove? false : true; });
													}
												})
												.always(function(data) {
													if (multiMax) {
														isDataType = true;
														if (! send(files, paths)) {
															dfrd.reject();
														}
													}
												});
											});
										} else {
											dfrd.reject();
										}
									}
								);
							})();
						} else {
							fm.uploads.checkExists(files, target, fm).done(
								function(res, res2){
									if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
										hashes = res2;
										if (res === null) {
											data.overwrite = 0;
										} else {
											renames = res;
										}
										files = jQuery.grep(files, function(file){return !file._remove? true : false ;});
									}
									cnt = files.length;
									if (cnt > 0) {
										if (! send(files)) {
											dfrd.reject();
										}
									} else {
										dfrd.reject();
									}
								}
							);
						}
					} else {
						if (! send(files)) {
							dfrd.reject();
						}
					}
				} else {
					dfrd.reject();
				}
			} else {
				if (dataChecked) {
					send(files[0], files[1]);
				} else {
					files.done(function(result) { // result: [files, paths, renames, hashes, mkdirs]
						renames = [];
						cnt = result[0].length;
						if (cnt) {
							if (result[4] && result[4].length) {
								// ensure directories
								fm.request({
									data   : {cmd : 'mkdir', target : target, dirs : result[4]},
									notify : {type : 'mkdir', cnt : result[4].length},
									preventFail: true
								})
								.fail(function(error) {
									error = error || ['errUnknown'];
									if (error[0] === 'errCmdParams') {
										multiMax = 1;
									} else {
										multiMax = 0;
										dfrd.reject(error);
									}
								})
								.done(function(data) {
									var rm = false;
									if (!data.hashes) {
										data.hashes = {};
									}
									result[1] = jQuery.map(result[1], function(p, i) {
										p = p.replace(/\/[^\/]*$/, '');
										if (p === '') {
											return target;
										} else {
											if (data.hashes[p]) {
												return data.hashes[p];
											} else {
												rm = true;
												result[0][i]._remove = true;
												return null;
											}
										}
									});
									if (rm) {
										result[0] = jQuery.grep(result[0], function(file) { return file._remove? false : true; });
									}
								})
								.always(function(data) {
									if (multiMax) {
										renames = result[2];
										hashes = result[3];
										send(result[0], result[1]);
									}
								});
								return;
							} else {
								result[1] = jQuery.map(result[1], function() { return target; });
							}
							renames = result[2];
							hashes = result[3];
							send(result[0], result[1]);
						} else {
							dfrd.reject(['errUploadNoFiles']);
						}
					}).fail(function(){
						dfrd.reject();
					});
				}
			}

			return dfrd;
		},
		
		// upload transport using iframe
		iframe : function(data, fm) { 
			var self   = fm ? fm : this,
				input  = data.input? data.input : false,
				files  = !input ? self.uploads.checkFile(data, self) : false,
				dfrd   = jQuery.Deferred()
					.fail(function(error) {
						error && self.error(error);
					}),
				name = 'iframe-'+fm.namespace+(++self.iframeCnt),
				form = jQuery('<form action="'+self.uploadURL+'" method="post" enctype="multipart/form-data" encoding="multipart/form-data" target="'+name+'" style="display:none"><input type="hidden" name="cmd" value="upload" /></form>'),
				msie = this.UA.IE,
				// clear timeouts, close notification dialog, remove form/iframe
				onload = function() {
					abortto  && clearTimeout(abortto);
					notifyto && clearTimeout(notifyto);
					notify   && self.notify({type : 'upload', cnt : -cnt});
					
					setTimeout(function() {
						msie && jQuery('<iframe src="javascript:false;"/>').appendTo(form);
						form.remove();
						iframe.remove();
					}, 100);
				},
				iframe = jQuery('<iframe src="'+(msie ? 'javascript:false;' : 'about:blank')+'" name="'+name+'" style="position:absolute;left:-1000px;top:-1000px" />')
					.on('load', function() {
						iframe.off('load')
							.on('load', function() {
								onload();
								// data will be processed in callback response or window onmessage
								dfrd.resolve();
							});
							
							// notify dialog
							notifyto = setTimeout(function() {
								notify = true;
								self.notify({type : 'upload', cnt : cnt});
							}, self.options.notifyDelay);
							
							// emulate abort on timeout
							if (self.options.iframeTimeout > 0) {
								abortto = setTimeout(function() {
									onload();
									dfrd.reject(['errConnect', 'errTimeout']);
								}, self.options.iframeTimeout);
							}
							
							form.submit();
					}),
				target  = (data.target || self.cwd().hash),
				names   = [],
				dfds    = [],
				renames = [],
				hashes  = {},
				cnt, notify, notifyto, abortto;

			if (files && files.length) {
				jQuery.each(files, function(i, val) {
					form.append('<input type="hidden" name="upload[]" value="'+val+'"/>');
				});
				cnt = 1;
			} else if (input && jQuery(input).is(':file') && jQuery(input).val()) {
				if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
					names = input.files? input.files : [{ name: jQuery(input).val().replace(/^(?:.+[\\\/])?([^\\\/]+)$/, '$1') }];
					//names = jQuery.map(names, function(file){return file.name? { name: file.name } : null ;});
					dfds.push(self.uploads.checkExists(names, target, self).done(
						function(res, res2){
							hashes = res2;
							if (res === null) {
								data.overwrite = 0;
							} else{
								renames = res;
								cnt = jQuery.grep(names, function(file){return !file._remove? true : false ;}).length;
								if (cnt != names.length) {
									cnt = 0;
								}
							}
						}
					));
				}
				cnt = input.files ? input.files.length : 1;
				form.append(input);
			} else {
				return dfrd.reject();
			}
			
			jQuery.when.apply($, dfds).done(function() {
				if (cnt < 1) {
					return dfrd.reject();
				}
				form.append('<input type="hidden" name="'+(self.newAPI ? 'target' : 'current')+'" value="'+target+'"/>')
					.append('<input type="hidden" name="html" value="1"/>')
					.append('<input type="hidden" name="node" value="'+self.id+'"/>')
					.append(jQuery(input).attr('name', 'upload[]'));
				
				if (renames.length > 0) {
					jQuery.each(renames, function(i, rename) {
						form.append('<input type="hidden" name="renames[]" value="'+self.escape(rename)+'"/>');
					});
					form.append('<input type="hidden" name="suffix" value="'+fm.options.backupSuffix+'"/>');
				}
				if (hashes) {
					jQuery.each(renames, function(i, v) {
						form.append('<input type="hidden" name="['+i+']" value="'+self.escape(v)+'"/>');
					});
				}
				
				if (data.overwrite === 0) {
					form.append('<input type="hidden" name="overwrite" value="0"/>');
				}
				
				jQuery.each(self.options.onlyMimes||[], function(i, mime) {
					form.append('<input type="hidden" name="mimes[]" value="'+self.escape(mime)+'"/>');
				});
				
				jQuery.each(self.customData, function(key, val) {
					form.append('<input type="hidden" name="'+key+'" value="'+self.escape(val)+'"/>');
				});
				
				form.appendTo('body');
				iframe.appendTo('body');
			});
			
			return dfrd;
		}
	},
	
	
	/**
	 * Bind callback to event(s) The callback is executed at most once per event.
	 * To bind to multiply events at once, separate events names by space
	 *
	 * @param  String    event name
	 * @param  Function  callback
	 * @param  Boolan    priority first
	 * @return elFinder
	 */
	one : function(ev, callback, priorityFirst) {
		var self  = this,
			event = ev.toLowerCase(),
			h     = function(e, f) {
				if (!self.toUnbindEvents[event]) {
					self.toUnbindEvents[event] = [];
				}
				self.toUnbindEvents[event].push({
					type: event,
					callback: h
				});
				return (callback.done? callback.done : callback).apply(this, arguments);
			};
		if (callback.done) {
			h = {done: h};
		}
		return this.bind(event, h, priorityFirst);
	},
	
	/**
	 * Set/get data into/from localStorage
	 *
	 * @param  String       key
	 * @param  String|void  value
	 * @return String|null
	 */
	localStorage : function(key, val) {
		var self   = this,
			s      = window.localStorage,
			oldkey = 'elfinder-'+(key || '')+this.id, // old key of elFinder < 2.1.6
			prefix = window.location.pathname+'-elfinder-',
			suffix = this.id,
			clrs   = [],
			retval, oldval, t, precnt, sufcnt;

		// reset this node data
		if (typeof(key) === 'undefined') {
			precnt = prefix.length;
			sufcnt = suffix.length * -1;
			jQuery.each(s, function(key) {
				if (key.substr(0, precnt) === prefix && key.substr(sufcnt) === suffix) {
					clrs.push(key);
				}
			});
			jQuery.each(clrs, function(i, key) {
				s.removeItem(key);
			});
			return true;
		}
		
		// new key of elFinder >= 2.1.6
		key = prefix+key+suffix;
		
		if (val === null) {
			return s.removeItem(key);
		}
		
		if (val === void(0) && !(retval = s.getItem(key)) && (oldval = s.getItem(oldkey))) {
			val = oldval;
			s.removeItem(oldkey);
		}
		
		if (val !== void(0)) {
			t = typeof val;
			if (t !== 'string' && t !== 'number') {
				val = JSON.stringify(val);
			}
			try {
				s.setItem(key, val);
			} catch (e) {
				try {
					s.clear();
					s.setItem(key, val);
				} catch (e) {
					self.debug('error', e.toString());
				}
			}
			retval = s.getItem(key);
		}

		if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) {
			try {
				return JSON.parse(retval);
			} catch(e) {}
		}
		return retval;
	},
	
	/**
	 * Get/set cookie
	 *
	 * @param  String       cookie name
	 * @param  String|void  cookie value
	 * @return String|null
	 */
	cookie : function(name, value) {
		var d, o, c, i, retval, t;

		name = 'elfinder-'+name+this.id;

		if (value === void(0)) {
			if (document.cookie && document.cookie != '') {
				c = document.cookie.split(';');
				name += '=';
				for (i=0; i<c.length; i++) {
					c[i] = jQuery.trim(c[i]);
					if (c[i].substring(0, name.length) == name) {
						retval = decodeURIComponent(c[i].substring(name.length));
						if (retval.substr(0,1) === '{' || retval.substr(0,1) === '[') {
							try {
								return JSON.parse(retval);
							} catch(e) {}
						}
						return retval;
					}
				}
			}
			return null;
		}

		o = Object.assign({}, this.options.cookie);
		if (value === null) {
			value = '';
			o.expires = -1;
		} else {
			t = typeof value;
			if (t !== 'string' && t !== 'number') {
				value = JSON.stringify(value);
			}
		}
		if (typeof(o.expires) == 'number') {
			d = new Date();
			d.setTime(d.getTime()+(o.expires * 86400000));
			o.expires = d;
		}
		document.cookie = name+'='+encodeURIComponent(value)+'; expires='+o.expires.toUTCString()+(o.path ? '; path='+o.path : '')+(o.domain ? '; domain='+o.domain : '')+(o.secure ? '; secure' : '');
		if (value && (value.substr(0,1) === '{' || value.substr(0,1) === '[')) {
			try {
				return JSON.parse(value);
			} catch(e) {}
		}
		return value;
	},
	
	/**
	 * Get start directory (by location.hash or last opened directory)
	 * 
	 * @return String
	 */
	startDir : function() {
		var locHash = window.location.hash;
		if (locHash && locHash.match(/^#elf_/)) {
			return locHash.replace(/^#elf_/, '');
		} else if (this.options.startPathHash) {
			return this.options.startPathHash;
		} else {
			return this.lastDir();
		}
	},
	
	/**
	 * Get/set last opened directory
	 * 
	 * @param  String|undefined  dir hash
	 * @return String
	 */
	lastDir : function(hash) { 
		return this.options.rememberLastDir ? this.storage('lastdir', hash) : '';
	},
	
	/**
	 * Node for escape html entities in texts
	 * 
	 * @type jQuery
	 */
	_node : jQuery('<span/>'),
	
	/**
	 * Replace not html-safe symbols to html entities
	 * 
	 * @param  String  text to escape
	 * @return String
	 */
	escape : function(name) {
		return this._node.text(name).html().replace(/"/g, '&quot;').replace(/'/g, '&#039;');
	},
	
	/**
	 * Cleanup ajax data.
	 * For old api convert data into new api format
	 * 
	 * @param  String  command name
	 * @param  Object  data from backend
	 * @return Object
	 */
	normalize : function(data) {
		var self   = this,
			fileFilter = (function() {
				var func, filter;
				if (filter = self.options.fileFilter) {
					if (typeof filter === 'function') {
						func = function(file) {
							return filter.call(self, file);
						};
					} else if (filter instanceof RegExp) {
						func = function(file) {
							return filter.test(file.name);
						};
					}
				}
				return func? func : null;
			})(),
			chkCmdMap = function(opts) {
				// Disable command to replace with other command
				var disabled;
				if (opts.uiCmdMap) {
					if (jQuery.isPlainObject(opts.uiCmdMap) && Object.keys(opts.uiCmdMap).length) {
						if (!opts.disabledFlip) {
							opts.disabledFlip = {};
						}
						disabled = opts.disabledFlip;
						jQuery.each(opts.uiCmdMap, function(f, t) {
							if (t === 'hidden' && !disabled[f]) {
								opts.disabled.push(f);
								opts.disabledFlip[f] = true;
							}
						});
					} else {
						delete opts.uiCmdMap;
					}
				}
			},
			normalizeOptions = function(opts) {
				var getType = function(v) {
					var type = typeof v;
					if (type === 'object' && Array.isArray(v)) {
						type = 'array';
					}
					return type;
				};
				jQuery.each(self.optionProperties, function(k, empty) {
					if (empty !== void(0)) {
						if (opts[k] && getType(opts[k]) !== getType(empty)) {
							opts[k] = empty;
						}
					}
				});
				if (opts['disabled']) {
					opts['disabledFlip'] = self.arrayFlip(opts['disabled'], true);
				} else {
					opts['disabledFlip'] = {};
				}
				return opts;
			},
			filter = function(file, asMap, type) { 
				var res = asMap? file : true,
					ign = asMap? null : false,
					vid, targetOptions, isRoot, rootNames;
				
				if (file && file.hash && file.name && file.mime) {
					if (file.mime === 'application/x-empty') {
						file.mime = 'text/plain';
					}
					
					isRoot = self.isRoot(file);
					if (isRoot && ! file.volumeid) {
						self.debug('warning', 'The volume root statuses requires `volumeid` property.');
					}
					if (isRoot || file.mime === 'directory') {
						// Prevention of circular reference
						if (file.phash) {
							if (file.phash === file.hash) {
								error = error.concat(['Parent folder of "$1" is itself.', file.name]);
								return ign;
							}
							if (isRoot && file.volumeid && file.phash.indexOf(file.volumeid) === 0) {
								error = error.concat(['Parent folder of "$1" is inner itself.', file.name]);
								return ign;
							}
						}
						
						// set options, tmbUrls for each volume
						if (file.volumeid) {
							vid = file.volumeid;
							
							if (isRoot) {
								// make or update of leaf roots cache
								if (file.phash) {
									if (! self.leafRoots[file.phash]) {
										self.leafRoots[file.phash] = [ file.hash ];
									} else {
										if (jQuery.inArray(file.hash, self.leafRoots[file.phash]) === -1) {
											self.leafRoots[file.phash].push(file.hash);
										}
									}
								}

								self.hasVolOptions = true;
								if (! self.volOptions[vid]) {
									self.volOptions[vid] = {
										// set dispInlineRegex
										dispInlineRegex: self.options.dispInlineRegex
									};
								}
								
								targetOptions = self.volOptions[vid];
								
								if (file.options) {
									// >= v.2.1.14 has file.options
									Object.assign(targetOptions, file.options);
								}
								
								// for compat <= v2.1.13
								if (file.disabled) {
									targetOptions.disabled = file.disabled;
									targetOptions.disabledFlip = self.arrayFlip(file.disabled, true);
								}
								if (file.tmbUrl) {
									targetOptions.tmbUrl = file.tmbUrl;
								}
								
								// '/' required at the end of url
								if (targetOptions.url && targetOptions.url.substr(-1) !== '/') {
									targetOptions.url += '/';
								}

								// check uiCmdMap
								chkCmdMap(targetOptions);
								
								// check trash bin hash
								if (targetOptions.trashHash) {
									if (self.trashes[targetOptions.trashHash] === false) {
										delete targetOptions.trashHash;
									} else {
										self.trashes[targetOptions.trashHash] = file.hash;
									}
								}
								
								// set immediate properties
								jQuery.each(self.optionProperties, function(k) {
									if (targetOptions[k]) {
										file[k] = targetOptions[k];
									}
								});

								// regist fm.roots
								if (type !== 'cwd') {
									self.roots[vid] = file.hash;
								}

								// regist fm.volumeExpires
								if (file.expires) {
									self.volumeExpires[vid] = file.expires;
								}
							}
							
							if (prevId !== vid) {
								prevId = vid;
								i18nFolderName = self.option('i18nFolderName', vid);
							}
						}
						
						// volume root i18n name
						if (isRoot && ! file.i18) {
							name = 'volume_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
						
						// i18nFolderName
						if (i18nFolderName && ! file.i18) {
							name = 'folder_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
						
						if (isRoot) {
							if (rootNames = self.storage('rootNames')) {
								if (rootNames[file.hash]) {
									file._name = file.name;
									file._i18 = file.i18;
									file.name = rootNames[file.hash] = rootNames[file.hash];
									delete file.i18;
								}
								self.storage('rootNames', rootNames);
							}
						}

						// lock trash bins holder
						if (self.trashes[file.hash]) {
							file.locked = true;
						}
					} else {
						if (fileFilter) {
							try {
								if (! fileFilter(file)) {
									return ign;
								}
							} catch(e) {
								self.debug(e);
							}
						}
						if (file.size == 0) {
							file.mime = self.getMimetype(file.name, file.mime);
						}
					}
					
					if (file.options) {
						self.optionsByHashes[file.hash] = normalizeOptions(file.options);
					}
					
					delete file.options;
					
					return res;
				}
				return ign;
			},
			getDescendants = function(hashes) {
				var res = [];
				jQuery.each(self.files(), function(h, f) {
					jQuery.each(self.parents(h), function(i, ph) {
						if (jQuery.inArray(ph, hashes) !== -1 && jQuery.inArray(h, hashes) === -1) {
							res.push(h);
							return false;
						}
					});
				});
				return res;
			},
			applyLeafRootStats = function(dataArr, type) {
				jQuery.each(dataArr, function(i, f) {
					var pfile, done;
					if (self.leafRoots[f.hash]) {
						self.applyLeafRootStats(f);
					}
					// update leaf root parent stat
					if (type !== 'change' && f.phash && self.isRoot(f) && (pfile = self.file(f.phash))) {
						self.applyLeafRootStats(pfile);
						// add to data.changed
						if (!data.changed) {
							data.changed = [pfile];
						} else {
							jQuery.each(data.changed, function(i, f) {
								if (f.hash === pfile.hash) {
									data.changed[i] = pfile;
									done = true;
									return false;
								}
							});
							if (!done) {
								data.changed.push(pfile);
							}
						}
					}
				});
			},
			error = [],
			name, i18, i18nFolderName, prevId, cData;
		
		// set cunstom data
		if (data.customData && data.customData !== self.prevCustomData) {
			self.prevCustomData = data.customData;
			try {
				cData = JSON.parse(data.customData);
				if (jQuery.isPlainObject(cData)) {
					self.prevCustomData = cData;
					jQuery.each(Object.keys(cData), function(i, key) {
						if (cData[key] === null) {
							delete cData[key];
							delete self.optsCustomData[key];
						}
					});
					self.customData = Object.assign({}, self.optsCustomData, cData);
				}
			} catch(e) {}
		}

		if (data.options) {
			normalizeOptions(data.options);
		}
		
		if (data.cwd) {
			if (data.cwd.volumeid && data.options && Object.keys(data.options).length && self.isRoot(data.cwd)) {
				self.hasVolOptions = true;
				self.volOptions[data.cwd.volumeid] = data.options;
			}
			data.cwd = filter(data.cwd, true, 'cwd');
		}
		if (data.files) {
			data.files = jQuery.grep(data.files, filter);
		} 
		if (data.tree) {
			data.tree = jQuery.grep(data.tree, filter);
		}
		if (data.added) {
			data.added = jQuery.grep(data.added, filter);
		}
		if (data.changed) {
			data.changed = jQuery.grep(data.changed, filter);
		}
		if (data.removed && data.removed.length && self.searchStatus.state === 2) {
			data.removed = data.removed.concat(getDescendants(data.removed));
		}
		if (data.api) {
			data.init = true;
		}

		if (Object.keys(self.leafRoots).length) {
			data.files && applyLeafRootStats(data.files);
			data.tree && applyLeafRootStats(data.tree);
			data.added && applyLeafRootStats(data.added);
			data.changed && applyLeafRootStats(data.changed, 'change');
		}

		// merge options that apply only to cwd
		if (data.cwd && data.cwd.options && data.options) {
			Object.assign(data.options, normalizeOptions(data.cwd.options));
		}

		// '/' required at the end of url
		if (data.options && data.options.url && data.options.url.substr(-1) !== '/') {
			data.options.url += '/';
		}
		
		// check error
		if (error.length) {
			data.norError = ['errResponse'].concat(error);
		}
		
		return data;
	},
	
	/**
	 * Update sort options
	 *
	 * @param {String} sort type
	 * @param {String} sort order
	 * @param {Boolean} show folder first
	 */
	setSort : function(type, order, stickFolders, alsoTreeview) {
		this.storage('sortType', (this.sortType = this.sortRules[type] ? type : 'name'));
		this.storage('sortOrder', (this.sortOrder = /asc|desc/.test(order) ? order : 'asc'));
		this.storage('sortStickFolders', (this.sortStickFolders = !!stickFolders) ? 1 : '');
		this.storage('sortAlsoTreeview', (this.sortAlsoTreeview = !!alsoTreeview) ? 1 : '');
		this.trigger('sortchange');
	},
	
	_sortRules : {
		name : function(file1, file2) {
			return elFinder.prototype.naturalCompare(file1.i18 || file1.name, file2.i18 || file2.name);
		},
		size : function(file1, file2) { 
			var size1 = parseInt(file1.size) || 0,
				size2 = parseInt(file2.size) || 0;
				
			return size1 === size2 ? 0 : size1 > size2 ? 1 : -1;
		},
		kind : function(file1, file2) {
			return elFinder.prototype.naturalCompare(file1.mime, file2.mime);
		},
		date : function(file1, file2) { 
			var date1 = file1.ts || file1.date || 0,
				date2 = file2.ts || file2.date || 0;

			return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;
		},
		perm : function(file1, file2) { 
			var val = function(file) { return (file.write? 2 : 0) + (file.read? 1 : 0); },
				v1  = val(file1),
				v2  = val(file2);
			return v1 === v2 ? 0 : v1 > v2 ? 1 : -1;
		},
		mode : function(file1, file2) { 
			var v1 = file1.mode || (file1.perm || ''),
				v2 = file2.mode || (file2.perm || '');
			return elFinder.prototype.naturalCompare(v1, v2);
		},
		owner : function(file1, file2) { 
			var v1 = file1.owner || '',
				v2 = file2.owner || '';
			return elFinder.prototype.naturalCompare(v1, v2);
		},
		group : function(file1, file2) { 
			var v1 = file1.group || '',
				v2 = file2.group || '';
			return elFinder.prototype.naturalCompare(v1, v2);
		}
	},
	
	/**
	 * Valid sort rule names
	 * 
	 * @type Object
	 */
	sorters : {},
	
	/**
	 * Compare strings for natural sort
	 *
	 * @param  String
	 * @param  String
	 * @return Number
	 */
	naturalCompare : function(a, b) {
		var self = elFinder.prototype.naturalCompare;
		if (typeof self.loc == 'undefined') {
			self.loc = (navigator.userLanguage || navigator.browserLanguage || navigator.language || 'en-US');
		}
		if (typeof self.sort == 'undefined') {
			if ('11'.localeCompare('2', self.loc, {numeric: true}) > 0) {
				// Native support
				if (window.Intl && window.Intl.Collator) {
					self.sort = new Intl.Collator(self.loc, {numeric: true}).compare;
				} else {
					self.sort = function(a, b) {
						return a.localeCompare(b, self.loc, {numeric: true});
					};
				}
			} else {
				/*
				 * Edited for elFinder (emulates localeCompare() by numeric) by Naoki Sawada aka nao-pon
				 */
				/*
				 * Huddle/javascript-natural-sort (https://github.com/Huddle/javascript-natural-sort)
				 */
				/*
				 * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
				 * Author: Jim Palmer (based on chunking idea from Dave Koelle)
				 * http://opensource.org/licenses/mit-license.php
				 */
				self.sort = function(a, b) {
					var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
					sre = /(^[ ]*|[ ]*$)/g,
					dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
					hre = /^0x[0-9a-f]+$/i,
					ore = /^0/,
					syre = /^[\x01\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/, // symbol first - (Naoki Sawada)
					i = function(s) { return self.sort.insensitive && (''+s).toLowerCase() || ''+s; },
					// convert all to strings strip whitespace
					// first character is "_", it's smallest - (Naoki Sawada)
					x = i(a).replace(sre, '').replace(/^_/, "\x01") || '',
					y = i(b).replace(sre, '').replace(/^_/, "\x01") || '',
					// chunk/tokenize
					xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
					yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
					// numeric, hex or date detection
					xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
					yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null,
					oFxNcL, oFyNcL,
					locRes = 0;

					// first try and sort Hex codes or Dates
					if (yD) {
						if ( xD < yD ) return -1;
						else if ( xD > yD ) return 1;
					}
					// natural sorting through split numeric strings and default strings
					for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {

						// find floats not starting with '0', string or 0 if not defined (Clint Priest)
						oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
						oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;

						// handle numeric vs string comparison - number < string - (Kyle Adams)
						// but symbol first < number - (Naoki Sawada)
						if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {
							if (isNaN(oFxNcL) && (typeof oFxNcL !== 'string' || ! oFxNcL.match(syre))) {
								return 1;
							} else if (typeof oFyNcL !== 'string' || ! oFyNcL.match(syre)) {
								return -1;
							}
						}

						// use decimal number comparison if either value is string zero
						if (parseInt(oFxNcL, 10) === 0) oFxNcL = 0;
						if (parseInt(oFyNcL, 10) === 0) oFyNcL = 0;

						// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
						if (typeof oFxNcL !== typeof oFyNcL) {
							oFxNcL += '';
							oFyNcL += '';
						}

						// use locale sensitive sort for strings when case insensitive
						// note: localeCompare interleaves uppercase with lowercase (e.g. A,a,B,b)
						if (self.sort.insensitive && typeof oFxNcL === 'string' && typeof oFyNcL === 'string') {
							locRes = oFxNcL.localeCompare(oFyNcL, self.loc);
							if (locRes !== 0) return locRes;
						}

						if (oFxNcL < oFyNcL) return -1;
						if (oFxNcL > oFyNcL) return 1;
					}
					return 0;
				};
				self.sort.insensitive = true;
			}
		}
		return self.sort(a, b);
	},
	
	/**
	 * Compare files based on elFinder.sort
	 *
	 * @param  Object  file
	 * @param  Object  file
	 * @return Number
	 */
	compare : function(file1, file2) {
		var self  = this,
			type  = self.sortType,
			asc   = self.sortOrder == 'asc',
			stick = self.sortStickFolders,
			rules = self.sortRules,
			sort  = rules[type],
			d1    = file1.mime == 'directory',
			d2    = file2.mime == 'directory',
			res;
			
		if (stick) {
			if (d1 && !d2) {
				return -1;
			} else if (!d1 && d2) {
				return 1;
			}
		}
		
		res = asc ? sort(file1, file2) : sort(file2, file1);
		
		return type !== 'name' && res === 0
			? res = asc ? rules.name(file1, file2) : rules.name(file2, file1)
			: res;
	},
	
	/**
	 * Sort files based on config
	 *
	 * @param  Array  files
	 * @return Array
	 */
	sortFiles : function(files) {
		return files.sort(this.compare);
	},
	
	/**
	 * Open notification dialog 
	 * and append/update message for required notification type.
	 *
	 * @param  Object  options
	 * @example  
	 * this.notify({
	 *    type : 'copy',
	 *    msg : 'Copy files', // not required for known types @see this.notifyType
	 *    cnt : 3,
	 *    hideCnt  : false,   // true for not show count
	 *    progress : 10,      // progress bar percents (use cnt : 0 to update progress bar)
	 *    cancel   : callback // callback function for cancel button
	 * })
	 * @return elFinder
	 */
	notify : function(opts) {
		var type     = opts.type,
			id       = opts.id? 'elfinder-notify-'+opts.id : '',
			msg      = this.i18n((typeof opts.msg !== 'undefined')? opts.msg : (this.messages['ntf'+type] ? 'ntf'+type : 'ntfsmth')),
			ndialog  = this.ui.notify,
			notify   = ndialog.children('.elfinder-notify-'+type+(id? ('.'+id) : '')),
			button   = notify.children('div.elfinder-notify-cancel').children('button'),
			ntpl     = '<div class="elfinder-notify elfinder-notify-{type}'+(id? (' '+id) : '')+'"><span class="elfinder-dialog-icon elfinder-dialog-icon-{type}"/><span class="elfinder-notify-msg">{msg}</span> <span class="elfinder-notify-cnt"/><div class="elfinder-notify-progressbar"><div class="elfinder-notify-progress"/></div><div class="elfinder-notify-cancel"/></div>',
			delta    = opts.cnt,
			size     = (typeof opts.size != 'undefined')? parseInt(opts.size) : null,
			progress = (typeof opts.progress != 'undefined' && opts.progress >= 0) ? opts.progress : null,
			cancel   = opts.cancel,
			clhover  = 'ui-state-hover',
			close    = function() {
				notify._esc && jQuery(document).off('keydown', notify._esc);
				notify.remove();
				!ndialog.children().length && ndialog.elfinderdialog('close');
			},
			cnt, total, prc;

		if (!type) {
			return this;
		}
		
		if (!notify.length) {
			notify = jQuery(ntpl.replace(/\{type\}/g, type).replace(/\{msg\}/g, msg))
				.appendTo(ndialog)
				.data('cnt', 0);

			if (progress != null) {
				notify.data({progress : 0, total : 0});
			}

			if (cancel) {
				button = jQuery('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span class="ui-button-text">'+this.i18n('btnCancel')+'</span></button>')
					.on('mouseenter mouseleave', function(e) { 
						jQuery(this).toggleClass(clhover, e.type === 'mouseenter');
					});
				notify.children('div.elfinder-notify-cancel').append(button);
			}
		} else if (typeof opts.msg !== 'undefined') {
			notify.children('span.elfinder-notify-msg').html(msg);
		}

		cnt = delta + parseInt(notify.data('cnt'));
		
		if (cnt > 0) {
			if (cancel && button.length) {
				if (jQuery.isFunction(cancel) || (typeof cancel === 'object' && cancel.promise)) {
					notify._esc = function(e) {
						if (e.type == 'keydown' && e.keyCode != jQuery.ui.keyCode.ESCAPE) {
							return;
						}
						e.preventDefault();
						e.stopPropagation();
						close();
						if (cancel.promise) {
							cancel.reject(0); // 0 is canceling flag
						} else {
							cancel(e);
						}
					};
					button.on('click', function(e) {
						notify._esc(e);
					});
					jQuery(document).on('keydown.' + this.namespace, notify._esc);
				}
			}
			
			!opts.hideCnt && notify.children('.elfinder-notify-cnt').text('('+cnt+')');
			ndialog.is(':hidden') && ndialog.elfinderdialog('open', this).height('auto');
			notify.data('cnt', cnt);
			
			if ((progress != null)
			&& (total = notify.data('total')) >= 0
			&& (prc = notify.data('progress')) >= 0) {

				total += size != null? size : delta;
				prc   += progress;
				(size == null && delta < 0) && (prc += delta * 100);
				notify.data({progress : prc, total : total});
				if (size != null) {
					prc *= 100;
					total = Math.max(1, total);
				}
				progress = parseInt(prc/total);
				
				notify.find('.elfinder-notify-progress')
					.animate({
						width : (progress < 100 ? progress : 100)+'%'
					}, 20);
			}
			
		} else {
			close();
		}
		
		return this;
	},
	
	/**
	 * Open confirmation dialog 
	 *
	 * @param  Object  options
	 * @example  
	 * this.confirm({
	 *    cssClass : 'elfinder-confirm-mydialog',
	 *    title : 'Remove files',
	 *    text  : 'Here is question text',
	 *    accept : {  // accept callback - required
	 *      label : 'Continue',
	 *      callback : function(applyToAll) { fm.log('Ok') }
	 *    },
	 *    cancel : { // cancel callback - required
	 *      label : 'Cancel',
	 *      callback : function() { fm.log('Cancel')}
	 *    },
	 *    reject : { // reject callback - optionally
	 *      label : 'No',
	 *      callback : function(applyToAll) { fm.log('No')}
	 *    },
	 *    buttons : [ // additional buttons callback - optionally
	 *      {
	 *        label : 'Btn1',
	 *        callback : function(applyToAll) { fm.log('Btn1')}
	 *      }
	 *    ],
	 *    all : true  // display checkbox "Apply to all"
	 * })
	 * @return elFinder
	 */
	confirm : function(opts) {
		var self     = this,
			complete = false,
			options = {
				cssClass  : 'elfinder-dialog-confirm',
				modal     : true,
				resizable : false,
				title     : this.i18n(opts.title || 'confirmReq'),
				buttons   : {},
				close     : function() { 
					!complete && opts.cancel.callback();
					jQuery(this).elfinderdialog('destroy');
				}
			},
			apply = this.i18n('apllyAll'),
			label, checkbox, btnNum;

		if (opts.cssClass) {
			options.cssClass += ' ' + opts.cssClass;
		}
		options.buttons[this.i18n(opts.accept.label)] = function() {
			opts.accept.callback(!!(checkbox && checkbox.prop('checked')));
			complete = true;
			jQuery(this).elfinderdialog('close');
		};
		options.buttons[this.i18n(opts.accept.label)]._cssClass = 'elfinder-confirm-accept';
		
		if (opts.reject) {
			options.buttons[this.i18n(opts.reject.label)] = function() {
				opts.reject.callback(!!(checkbox && checkbox.prop('checked')));
				complete = true;
				jQuery(this).elfinderdialog('close');
			};
			options.buttons[this.i18n(opts.reject.label)]._cssClass = 'elfinder-confirm-reject';
		}
		
		if (opts.buttons && opts.buttons.length > 0) {
			btnNum = 1;
			jQuery.each(opts.buttons, function(i, v){
				options.buttons[self.i18n(v.label)] = function() {
					v.callback(!!(checkbox && checkbox.prop('checked')));
					complete = true;
					jQuery(this).elfinderdialog('close');
				};
				options.buttons[self.i18n(v.label)]._cssClass = 'elfinder-confirm-extbtn' + (btnNum++);
				if (v.cssClass) {
					options.buttons[self.i18n(v.label)]._cssClass += ' ' + v.cssClass;
				}
			});
		}
		
		options.buttons[this.i18n(opts.cancel.label)] = function() {
			jQuery(this).elfinderdialog('close');
		};
		options.buttons[this.i18n(opts.cancel.label)]._cssClass = 'elfinder-confirm-cancel';
		
		if (opts.all) {
			options.create = function() {
				var base = jQuery('<div class="elfinder-dialog-confirm-applyall"/>');
				checkbox = jQuery('<input type="checkbox" />');
				jQuery(this).next().find('.ui-dialog-buttonset')
					.prepend(base.append(jQuery('<label>'+apply+'</label>').prepend(checkbox)));
			};
		}
		
		if (opts.optionsCallback && jQuery.isFunction(opts.optionsCallback)) {
			opts.optionsCallback(options);
		}
		
		return this.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-confirm"/>' + this.i18n(opts.text), options);
	},
	
	/**
	 * Create unique file name in required dir
	 * 
	 * @param  String  file name
	 * @param  String  parent dir hash
	 * @param  String  glue
	 * @return String
	 */
	uniqueName : function(prefix, phash, glue) {
		var i = 0, ext = '', p, name;
		
		prefix = this.i18n(false, prefix);
		phash = phash || this.cwd().hash;
		glue = (typeof glue === 'undefined')? ' ' : glue;

		if (p = prefix.match(/^(.+)(\.[^.]+)$/)) {
			ext    = p[2];
			prefix = p[1];
		}
		
		name   = prefix+ext;
		
		if (!this.fileByName(name, phash)) {
			return name;
		}
		while (i < 10000) {
			name = prefix + glue + (++i) + ext;
			if (!this.fileByName(name, phash)) {
				return name;
			}
		}
		return prefix + Math.random() + ext;
	},
	
	/**
	 * Return message translated onto current language
	 * Allowed accept HTML element that was wrapped in jQuery object
	 * To be careful to XSS vulnerability of HTML element Ex. You should use `fm.escape(file.name)`
	 *
	 * @param  String|Array  message[s]|Object jQuery
	 * @return String
	 **/
	i18n : function() {
		var self = this,
			messages = this.messages, 
			input    = [],
			ignore   = [], 
			message = function(m) {
				var file;
				if (m.indexOf('#') === 0) {
					if ((file = self.file(m.substr(1)))) {
						return file.name;
					}
				}
				return m;
			},
			i, j, m, escFunc, start = 0, isErr;
		
		if (arguments.length && arguments[0] === false) {
			escFunc = function(m){ return m; };
			start = 1;
		}
		for (i = start; i< arguments.length; i++) {
			m = arguments[i];
			
			if (Array.isArray(m)) {
				for (j = 0; j < m.length; j++) {
					if (m[j] instanceof jQuery) {
						// jQuery object is HTML element
						input.push(m[j]);
					} else if (typeof m[j] !== 'undefined'){
						input.push(message('' + m[j]));
					}
				}
			} else if (m instanceof jQuery) {
				// jQuery object is HTML element
				input.push(m[j]);
			} else if (typeof m !== 'undefined'){
				input.push(message('' + m));
			}
		}
		
		for (i = 0; i < input.length; i++) {
			// dont translate placeholders
			if (jQuery.inArray(i, ignore) !== -1) {
				continue;
			}
			m = input[i];
			if (typeof m == 'string') {
				isErr = !!(messages[m] && m.match(/^err/));
				// translate message
				m = messages[m] || (escFunc? escFunc(m) : self.escape(m));
				// replace placeholders in message
				m = m.replace(/\$(\d+)/g, function(match, placeholder) {
					var res;
					placeholder = i + parseInt(placeholder);
					if (placeholder > 0 && input[placeholder]) {
						ignore.push(placeholder);
					}
					res = escFunc? escFunc(input[placeholder]) : self.escape(input[placeholder]);
					if (isErr) {
						res = '<span class="elfinder-err-var elfinder-err-var' + placeholder + '">' + res + '</span>';
					}
					return res;
				});
			} else {
				// get HTML from jQuery object
				m = m.get(0).outerHTML;
			}

			input[i] = m;
		}

		return jQuery.grep(input, function(m, i) { return jQuery.inArray(i, ignore) === -1 ? true : false; }).join('<br>');
	},
	
	/**
	 * Get icon style from file.icon
	 * 
	 * @param  Object  elFinder file object
	 * @return String|Object
	 */
	getIconStyle : function(file, asObject) {
		var self = this,
			template = {
				'background' : 'url(\'{url}\') 0 0 no-repeat',
				'background-size' : 'contain'
			},
			style = '',
			cssObj = {},
			i = 0;
		if (file.icon) {
			style = 'style="';
			jQuery.each(template, function(k, v) {
				if (i++ === 0) {
					v = v.replace('{url}', self.escape(file.icon));
				}
				if (asObject) {
					cssObj[k] = v;
				} else {
					style += k+':'+v+';';
				}
			});
			style += '"';
		}
		return asObject? cssObj : style;
	},
	
	/**
	 * Convert mimetype into css classes
	 * 
	 * @param  String  file mimetype
	 * @return String
	 */
	mime2class : function(mimeType) {
		var prefix = 'elfinder-cwd-icon-',
			mime   = mimeType.toLowerCase(),
			isText = this.textMimes[mime];
		
		mime = mime.split('/');
		if (isText) {
			mime[0] += ' ' + prefix + 'text';
		} else if (mime[1] && mime[1].match(/\+xml$/)) {
			mime[0] += ' ' + prefix + 'xml';
		}
		
		return prefix + mime[0] + (mime[1] ? ' ' + prefix + mime[1].replace(/(\.|\+)/g, '-') : '');
	},
	
	/**
	 * Return localized kind of file
	 * 
	 * @param  Object|String  file or file mimetype
	 * @return String
	 */
	mime2kind : function(f) {
		var isObj = typeof(f) == 'object' ? true : false,
			mime  = isObj ? f.mime : f,
			kind;
		

		if (isObj && f.alias && mime != 'symlink-broken') {
			kind = 'Alias';
		} else if (this.kinds[mime]) {
			if (isObj && mime === 'directory' && (! f.phash || f.isroot)) {
				kind = 'Root';
			} else {
				kind = this.kinds[mime];
			}
		}
		if (! kind) {
			if (mime.indexOf('text') === 0) {
				kind = 'Text';
			} else if (mime.indexOf('image') === 0) {
				kind = 'Image';
			} else if (mime.indexOf('audio') === 0) {
				kind = 'Audio';
			} else if (mime.indexOf('video') === 0) {
				kind = 'Video';
			} else if (mime.indexOf('application') === 0) {
				kind = 'App';
			} else {
				kind = mime;
			}
		}
		
		return this.messages['kind'+kind] ? this.i18n('kind'+kind) : mime;
	},
	
	/**
	 * Return boolean Is mime-type text file
	 * 
	 * @param  String  mime-type
	 * @return Boolean
	 */
	mimeIsText : function(mime) {
		return (this.textMimes[mime.toLowerCase()] || (mime.indexOf('text/') === 0 && mime.substr(5, 3) !== 'rtf') || mime.match(/^application\/.+\+xml$/))? true : false;
	},
	
	/**
	 * Returns a date string formatted according to the given format string
	 * 
	 * @param  String  format string
	 * @param  Object  Date object
	 * @return String
	 */
	date : function(format, date) {
		var self = this,
			output, d, dw, m, y, h, g, i, s;
		
		if (! date) {
			date = new Date();
		}
		
		h  = date[self.getHours]();
		g  = h > 12 ? h - 12 : h;
		i  = date[self.getMinutes]();
		s  = date[self.getSeconds]();
		d  = date[self.getDate]();
		dw = date[self.getDay]();
		m  = date[self.getMonth]() + 1;
		y  = date[self.getFullYear]();
		
		output = format.replace(/[a-z]/gi, function(val) {
			switch (val) {
				case 'd': return d > 9 ? d : '0'+d;
				case 'j': return d;
				case 'D': return self.i18n(self.i18.daysShort[dw]);
				case 'l': return self.i18n(self.i18.days[dw]);
				case 'm': return m > 9 ? m : '0'+m;
				case 'n': return m;
				case 'M': return self.i18n(self.i18.monthsShort[m-1]);
				case 'F': return self.i18n(self.i18.months[m-1]);
				case 'Y': return y;
				case 'y': return (''+y).substr(2);
				case 'H': return h > 9 ? h : '0'+h;
				case 'G': return h;
				case 'g': return g;
				case 'h': return g > 9 ? g : '0'+g;
				case 'a': return h >= 12 ? 'pm' : 'am';
				case 'A': return h >= 12 ? 'PM' : 'AM';
				case 'i': return i > 9 ? i : '0'+i;
				case 's': return s > 9 ? s : '0'+s;
			}
			return val;
		});
		
		return output;
	},
	
	/**
	 * Return localized date
	 * 
	 * @param  Object  file object
	 * @return String
	 */
	formatDate : function(file, t) {
		var self = this, 
			ts   = t || file.ts, 
			i18  = self.i18,
			date, format, output, d, dw, m, y, h, g, i, s;

		if (self.options.clientFormatDate && ts > 0) {

			date = new Date(ts*1000);
			format = ts >= this.yesterday 
				? this.fancyFormat 
				: this.dateFormat;

			output = self.date(format, date);
			
			return ts >= this.yesterday
				? output.replace('$1', this.i18n(ts >= this.today ? 'Today' : 'Yesterday'))
				: output;
		} else if (file.date) {
			return file.date.replace(/([a-z]+)\s/i, function(a1, a2) { return self.i18n(a2)+' '; });
		}
		
		return self.i18n('dateUnknown');
	},
	
	/**
	 * Return localized number string
	 * 
	 * @param  Number
	 * @return String
	 */
	toLocaleString : function(num) {
		var v = new Number(num);
		if (v) {
			if (v.toLocaleString) {
				return v.toLocaleString();
			} else {
				return String(num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
			}
		}
		return num;
	},
	
	/**
	 * Return css class marks file permissions
	 * 
	 * @param  Object  file 
	 * @return String
	 */
	perms2class : function(o) {
		var c = '';
		
		if (!o.read && !o.write) {
			c = 'elfinder-na';
		} else if (!o.read) {
			c = 'elfinder-wo';
		} else if (!o.write) {
			c = 'elfinder-ro';
		}
		
		if (o.type) {
			c += ' elfinder-' + this.escape(o.type);
		}
		
		return c;
	},
	
	/**
	 * Return localized string with file permissions
	 * 
	 * @param  Object  file
	 * @return String
	 */
	formatPermissions : function(f) {
		var p  = [];
			
		f.read && p.push(this.i18n('read'));
		f.write && p.push(this.i18n('write'));	

		return p.length ? p.join(' '+this.i18n('and')+' ') : this.i18n('noaccess');
	},
	
	/**
	 * Return formated file size
	 * 
	 * @param  Number  file size
	 * @return String
	 */
	formatSize : function(s) {
		var n = 1, u = 'b';
		
		if (s == 'unknown') {
			return this.i18n('unknown');
		}
		
		if (s > 1073741824) {
			n = 1073741824;
			u = 'GB';
		} else if (s > 1048576) {
			n = 1048576;
			u = 'MB';
		} else if (s > 1024) {
			n = 1024;
			u = 'KB';
		}
		s = s/n;
		return (s > 0 ? n >= 1048576 ? s.toFixed(2) : Math.round(s) : 0) +' '+u;
	},
	
	/**
	 * Return formated file mode by options.fileModeStyle
	 * 
	 * @param  String  file mode
	 * @param  String  format style
	 * @return String
	 */
	formatFileMode : function(p, style) {
		var i, o, s, b, sticy, suid, sgid, str, oct;
		
		if (!style) {
			style = this.options.fileModeStyle.toLowerCase();
		}
		p = jQuery.trim(p);
		if (p.match(/[rwxs-]{9}$/i)) {
			str = p = p.substr(-9);
			if (style == 'string') {
				return str;
			}
			oct = '';
			s = 0;
			for (i=0; i<7; i=i+3) {
				o = p.substr(i, 3);
				b = 0;
				if (o.match(/[r]/i)) {
					b += 4;
				}
				if (o.match(/[w]/i)) {
					b += 2;
				}
				if (o.match(/[xs]/i)) {
					if (o.match(/[xs]/)) {
						b += 1;
					}
					if (o.match(/[s]/i)) {
						if (i == 0) {
							s += 4;
						} else if (i == 3) {
							s += 2;
						}
					}
				}
				oct += b.toString(8);
			}
			if (s) {
				oct = s.toString(8) + oct;
			}
		} else {
			p = parseInt(p, 8);
			oct = p? p.toString(8) : '';
			if (!p || style == 'octal') {
				return oct;
			}
			o = p.toString(8);
			s = 0;
			if (o.length > 3) {
				o = o.substr(-4);
				s = parseInt(o.substr(0, 1), 8);
				o = o.substr(1);
			}
			sticy = ((s & 1) == 1); // not support
			sgid = ((s & 2) == 2);
			suid = ((s & 4) == 4);
			str = '';
			for(i=0; i<3; i++) {
				if ((parseInt(o.substr(i, 1), 8) & 4) == 4) {
					str += 'r';
				} else {
					str += '-';
				}
				if ((parseInt(o.substr(i, 1), 8) & 2) == 2) {
					str += 'w';
				} else {
					str += '-';
				}
				if ((parseInt(o.substr(i, 1), 8) & 1) == 1) {
					str += ((i==0 && suid)||(i==1 && sgid))? 's' : 'x';
				} else {
					str += '-';
				}
			}
		}
		if (style == 'both') {
			return str + ' (' + oct + ')';
		} else if (style == 'string') {
			return str;
		} else {
			return oct;
		}
	},
	
	/**
	 * Regist this.decodeRawString function
	 * 
	 * @return void
	 */
	registRawStringDecoder : function(rawStringDecoder) {
		if (jQuery.isFunction(rawStringDecoder)) {
			this.decodeRawString = this.options.rawStringDecoder = rawStringDecoder;
		}
	},
	
	/**
	 * Return boolean that uploadable MIME type into target folder
	 * 
	 * @param  String  mime    MIME type
	 * @param  String  target  target folder hash
	 * @return Bool
	 */
	uploadMimeCheck : function(mime, target) {
		target = target || this.cwd().hash;
		var res   = true, // default is allow
			mimeChecker = this.option('uploadMime', target),
			allow,
			deny,
			check = function(checker) {
				var ret = false;
				if (typeof checker === 'string' && checker.toLowerCase() === 'all') {
					ret = true;
				} else if (Array.isArray(checker) && checker.length) {
					jQuery.each(checker, function(i, v) {
						v = v.toLowerCase();
						if (v === 'all' || mime.indexOf(v) === 0) {
							ret = true;
							return false;
						}
					});
				}
				return ret;
			};
		if (mime && jQuery.isPlainObject(mimeChecker)) {
			mime = mime.toLowerCase();
			allow = check(mimeChecker.allow);
			deny = check(mimeChecker.deny);
			if (mimeChecker.firstOrder === 'allow') {
				res = false; // default is deny
				if (! deny && allow === true) { // match only allow
					res = true;
				}
			} else {
				res = true; // default is allow
				if (deny === true && ! allow) { // match only deny
					res = false;
				}
			}
		}
		return res;
	},
	
	/**
	 * call chained sequence of async deferred functions
	 * 
	 * @param  Array   tasks async functions
	 * @return Object  jQuery.Deferred
	 */
	sequence : function(tasks) {
		var l = tasks.length,
			chain = function(task, idx) {
				++idx;
				if (tasks[idx]) {
					return chain(task.then(tasks[idx]), idx);
				} else {
					return task;
				}
			};
		if (l > 1) {
			return chain(tasks[0](), 0);
		} else {
			return tasks[0]();
		}
	},
	
	/**
	 * Reload contents of target URL for clear browser cache
	 * 
	 * @param  String  url target URL
	 * @return Object  jQuery.Deferred
	 */
	reloadContents : function(url) {
		var dfd = jQuery.Deferred(),
			ifm;
		try {
			ifm = jQuery('<iframe width="1" height="1" scrolling="no" frameborder="no" style="position:absolute; top:-1px; left:-1px" crossorigin="use-credentials">')
				.attr('src', url)
				.one('load', function() {
					var ifm = jQuery(this);
					try {
						this.contentDocument.location.reload(true);
						ifm.one('load', function() {
							ifm.remove();
							dfd.resolve();
						});
					} catch(e) {
						ifm.attr('src', '').attr('src', url).one('load', function() {
							ifm.remove();
							dfd.resolve();
						});
					}
				})
				.appendTo('body');
		} catch(e) {
			ifm && ifm.remove();
			dfd.reject();
		}
		return dfd;
	},
	
	/**
	 * Make netmount option for OAuth2
	 * 
	 * @param  String   protocol
	 * @param  String   name
	 * @param  String   host
	 * @param  Object   opts  Default {noOffline: false, root: 'root', pathI18n: 'folderId', folders: true}
			}
	 * 
	 * @return Object
	 */
	makeNetmountOptionOauth : function(protocol, name, host, opt) {
		var noOffline = typeof opt === 'boolean'? opt : null, // for backward compat
			opts = Object.assign({
				noOffline : false,
				root      : 'root',
				pathI18n  : 'folderId',
				folders   : true
			}, (noOffline === null? (opt || {}) : {noOffline : noOffline})),
			addFolders = function(fm, bro, folders) {
				var self = this,
					cnt  = Object.keys(jQuery.isPlainObject(folders)? folders : {}).length,
					select;
				
				bro.next().remove();
				if (cnt) {
					select = jQuery('<select class="ui-corner-all elfinder-tabstop" style="max-width:200px;">').append(
						jQuery(jQuery.map(folders, function(n,i){return '<option value="'+fm.escape((i+'').trim())+'">'+fm.escape(n)+'</option>';}).join(''))
					).on('change click', function(e){
						var node = jQuery(this),
							path = node.val(),
							spn;
						self.inputs.path.val(path);
						if (opts.folders && (e.type === 'change' || node.data('current') !== path)) {
							node.next().remove();
							node.data('current', path);
							if (path != opts.root) {
								spn = spinner();
								if (xhr && xhr.state() === 'pending') {
									fm.abortXHR(xhr, { quiet: true , abort: true });
								}
								node.after(spn);
								xhr = fm.request({
									data : {cmd : 'netmount', protocol: protocol, host: host, user: 'init', path: path, pass: 'folders'},
									preventDefault : true
								}).done(function(data){
									addFolders.call(self, fm, node, data.folders);
								}).always(function() {
									fm.abortXHR(xhr, { quiet: true });
									spn.remove();
								}).xhr;
							}
						}
					});
					bro.after(jQuery('<div/>').append(select))
						.closest('.ui-dialog').trigger('tabstopsInit');
					select.trigger('focus');
				}
			},
			spinner = function() {
				return jQuery('<div class="elfinder-netmount-spinner"/>').append('<span class="elfinder-spinner"/>');
			},
			xhr;
		return {
			vars : {},
			name : name,
			inputs: {
				offline  : jQuery('<input type="checkbox"/>').on('change', function() {
					jQuery(this).parents('table.elfinder-netmount-tb').find('select:first').trigger('change', 'reset');
				}),
				host     : jQuery('<span><span class="elfinder-spinner"/></span><input type="hidden"/>'),
				path     : jQuery('<input type="text" value="'+opts.root+'"/>'),
				user     : jQuery('<input type="hidden"/>'),
				pass     : jQuery('<input type="hidden"/>')
			},
			select: function(fm, ev, d){
				var f = this.inputs,
					oline = f.offline,
					f0 = jQuery(f.host[0]),
					data = d || null;
				this.vars.mbtn = f.host.closest('.ui-dialog').children('.ui-dialog-buttonpane:first').find('button.elfinder-btncnt-0');
				if (! f0.data('inrequest')
						&& (f0.find('span.elfinder-spinner').length
							|| data === 'reset'
							|| (data === 'winfocus' && ! f0.siblings('span.elfinder-button-icon-reload').length))
							)
				{
					if (oline.parent().children().length === 1) {
						f.path.parent().prev().html(fm.i18n(opts.pathI18n));
						oline.attr('title', fm.i18n('offlineAccess'));
						oline.uniqueId().after(jQuery('<label/>').attr('for', oline.attr('id')).html(' '+fm.i18n('offlineAccess')));
					}
					f0.data('inrequest', true).empty().addClass('elfinder-spinner')
						.parent().find('span.elfinder-button-icon').remove();
					fm.request({
						data : {cmd : 'netmount', protocol: protocol, host: host, user: 'init', options: {id: fm.id, offline: oline.prop('checked')? 1:0, pass: f.host[1].value}},
						preventDefault : true
					}).done(function(data){
						f0.removeClass("elfinder-spinner").html(data.body.replace(/\{msg:([^}]+)\}/g, function(whole,s1){return fm.i18n(s1, host);}));
					});
					opts.noOffline && oline.closest('tr').hide();
				} else {
					oline.closest('tr')[(opts.noOffline || f.user.val())? 'hide':'show']();
					f0.data('funcexpup') && f0.data('funcexpup')();
				}
				this.vars.mbtn[jQuery(f.host[1]).val()? 'show':'hide']();
			},
			done: function(fm, data){
				var f = this.inputs,
					p = this.protocol,
					f0 = jQuery(f.host[0]),
					f1 = jQuery(f.host[1]),
					expires = '&nbsp;';
				
				opts.noOffline && f.offline.closest('tr').hide();
				if (data.mode == 'makebtn') {
					f0.removeClass('elfinder-spinner').removeData('expires').removeData('funcexpup');
					f.host.find('input').on('mouseenter mouseleave', function(){jQuery(this).toggleClass('ui-state-hover');});
					f1.val('');
					f.path.val(opts.root).next().remove();
					f.user.val('');
					f.pass.val('');
					! opts.noOffline && f.offline.closest('tr').show();
					this.vars.mbtn.hide();
				} else if (data.mode == 'folders') {
					if (data.folders) {
						addFolders.call(this, fm, f.path.nextAll(':last'), data.folders);
					}
				} else {
					if (data.expires) {
						expires = '()';
						f0.data('expires', data.expires);
					}
					f0.html(host + expires).removeClass('elfinder-spinner');
					if (data.expires) {
						f0.data('funcexpup', function() {
							var rem = Math.floor((f0.data('expires') - (+new Date()) / 1000) / 60);
							if (rem < 3) {
								f0.parent().children('.elfinder-button-icon-reload').click();
							} else {
								f0.text(f0.text().replace(/\(.*\)/, '('+fm.i18n(['minsLeft', rem])+')'));
								setTimeout(function() {
									if (f0.is(':visible')) {
										f0.data('funcexpup')();
									}
								}, 60000);
							}
						});
						f0.data('funcexpup')();
					}
					if (data.reset) {
						p.trigger('change', 'reset');
						return;
					}
					f0.parent().append(jQuery('<span class="elfinder-button-icon elfinder-button-icon-reload" title="'+fm.i18n('reAuth')+'">')
						.on('click', function() {
							f1.val('reauth');
							p.trigger('change', 'reset');
						}));
					f1.val(protocol);
					this.vars.mbtn.show();
					if (data.folders) {
						addFolders.call(this, fm, f.path, data.folders);
					}
					f.user.val('done');
					f.pass.val('done');
					f.offline.closest('tr').hide();
				}
				f0.removeData('inrequest');
			},
			fail: function(fm, err){
				jQuery(this.inputs.host[0]).removeData('inrequest');
				this.protocol.trigger('change', 'reset');
			},
			integrateInfo: opts.integrate
		};
	},
	
	/**
	 * Find cwd's nodes from files
	 * 
	 * @param  Array    files
	 * @param  Object   opts   {firstOnly: true|false}
	 */
	findCwdNodes : function(files, opts) {
		var self    = this,
			cwd     = this.getUI('cwd'),
			cwdHash = this.cwd().hash,
			newItem = jQuery();
		
		opts = opts || {};
		
		jQuery.each(files, function(i, f) {
			if (f.phash === cwdHash || self.searchStatus.state > 1) {
				newItem = newItem.add(self.cwdHash2Elm(f.hash));
				if (opts.firstOnly) {
					return false;
				}
			}
		});
		
		return newItem;
	},
	
	/**
	 * Convert from relative URL to abstract URL based on current URL
	 * 
	 * @param  String  URL
	 * @return String
	 */
	convAbsUrl : function(url) {
		if (url.match(/^http/i)) {
			return url;
		}
		if (url.substr(0,2) === '//') {
			return window.location.protocol + url;
		}
		var root = window.location.protocol + '//' + window.location.host,
			reg  = /[^\/]+\/\.\.\//,
			ret;
		if (url.substr(0, 1) === '/') {
			ret = root + url;
		} else {
			ret = root + window.location.pathname.replace(/\/[^\/]+$/, '/') + url;
		}
		ret = ret.replace('/./', '/');
		while(reg.test(ret)) {
			ret = ret.replace(reg, '');
		}
		return ret;
	},
	
	/**
	 * Is same origin to current site
	 * 
	 * @param  String  check url
	 * @return Boolean
	 */
	isSameOrigin : function (checkUrl) {
		var url;
		checkUrl = this.convAbsUrl(checkUrl);
		if (location.origin && window.URL) {
			try {
				url = new URL(checkUrl);
				return location.origin === url.origin;
			} catch(e) {}
		}
		url = document.createElement('a');
		url.href = checkUrl;
		return location.protocol === url.protocol && location.host === url.host && location.port && url.port;
	},
	
	navHash2Id : function(hash) {
		return this.navPrefix + hash;
	},
	
	navId2Hash : function(id) {
		return typeof(id) == 'string' ? id.substr(this.navPrefix.length) : false;
	},
	
	cwdHash2Id : function(hash) {
		return this.cwdPrefix + hash;
	},
	
	cwdId2Hash : function(id) {
		return typeof(id) == 'string' ? id.substr(this.cwdPrefix.length) : false;
	},
	
	/**
	 * navHash to jQuery element object
	 *
	 * @param      String  hash    nav hash
	 * @return     Object  jQuery element object
	 */
	navHash2Elm : function(hash) {
		return jQuery(document.getElementById(this.navHash2Id(hash)));
	},

	/**
	 * cwdHash to jQuery element object
	 *
	 * @param      String  hash    cwd hash
	 * @return     Object  jQuery element object
	 */
	cwdHash2Elm : function(hash) {
		return jQuery(document.getElementById(this.cwdHash2Id(hash)));
	},

	isInWindow : function(elem, nochkHide) {
		var elm, rect;
		if (! (elm = elem.get(0))) {
			return false;
		}
		if (! nochkHide && elm.offsetParent === null) {
			return false;
		}
		rect = elm.getBoundingClientRect();
		return document.elementFromPoint(rect.left, rect.top)? true : false;
	},
	
	/**
	 * calculate elFinder node z-index
	 * 
	 * @return void
	 */
	zIndexCalc : function() {
		var self = this,
			node = this.getUI(),
			ni = node.css('z-index');
		if (ni && ni !== 'auto' && ni !== 'inherit') {
			self.zIndex = ni;
		} else {
			node.parents().each(function(i, n) {
				var z = jQuery(n).css('z-index');
				if (z !== 'auto' && z !== 'inherit' && (z = parseInt(z))) {
					self.zIndex = z;
					return false;
				}
			});
		}
	},
	
	/**
	 * Load JavaScript files
	 * 
	 * @param  Array    urls      to load JavaScript file URLs
	 * @param  Function callback  call back function on script loaded
	 * @param  Object   opts      Additional options to jQuery.ajax OR {loadType: 'tag'} to load by script tag
	 * @param  Object   check     { obj: (Object)ParentObject, name: (String)"Attribute name", timeout: (Integer)milliseconds }
	 * @return elFinder
	 */
	loadScript : function(urls, callback, opts, check) {
		var defOpts = {
				dataType : 'script',
				cache    : true
			},
			success, cnt, scripts = {}, results = {};
		
		opts = opts || {};
		if (opts.tryRequire && this.hasRequire) {
			require(urls, callback, opts.error);
		} else {
			success = function() {
				var cnt, fi, hasError;
				jQuery.each(results, function(i, status) {
					if (status !== 'success' && status !== 'notmodified') {
						hasError = true;
						return false;
					}
				});
				if (!hasError) {
					if (jQuery.isFunction(callback)) {
						if (check) {
							if (typeof check.obj[check.name] === 'undefined') {
								cnt = check.timeout? (check.timeout / 10) : 1;
								fi = setInterval(function() {
									if (--cnt < 0 || typeof check.obj[check.name] !== 'undefined') {
										clearInterval(fi);
										callback();
									}
								}, 10);
							} else {
								callback();
							}
						} else {
							callback();
						}
					}
				} else {
					if (opts.error && jQuery.isFunction(opts.error)) {
						opts.error({ loadResults: results });
					}
				}
			};

			if (opts.loadType === 'tag') {
				jQuery('head > script').each(function() {
					scripts[this.src] = this;
				});
				cnt = urls.length;
				jQuery.each(urls, function(i, url) {
					var done = false,
						script;
					
					if (scripts[url]) {
						results[i] = scripts[url]._error || 'success';
						(--cnt < 1) && success();
					} else {
						script = document.createElement('script');
						script.charset = opts.charset || 'UTF-8';
						jQuery('head').append(script);
						script.onload = script.onreadystatechange = function() {
							if ( !done && (!this.readyState ||
									this.readyState === 'loaded' || this.readyState === 'complete') ) {
								done = true;
								results[i] = 'success';
								(--cnt < 1) && success();
							}
						};
						script.onerror = function(err) {
							results[i] = script._error = (err && err.type)? err.type : 'error';
							(--cnt < 1) && success();
						};
						script.src = url;
					}
				});
			} else {
				opts = jQuery.isPlainObject(opts)? Object.assign(defOpts, opts) : defOpts;
				cnt = 0;
				(function appendScript(d, status) {
					if (d !== void(0)) {
						results[cnt++] = status;
					}
					if (urls.length) {
						jQuery.ajax(Object.assign({}, opts, {
							url: urls.shift(),
							success: appendScript,
							error: appendScript
						}));
					} else {
						success();
					}
				})();
			}
		}
		return this;
	},
	
	/**
	 * Load CSS files
	 * 
	 * @param  Array    to load CSS file URLs
	 * @param  Object   options
	 * @return elFinder
	 */
	loadCss : function(urls, opts) {
		var self = this,
			clName, dfds;
		if (typeof urls === 'string') {
			urls = [ urls ];
		}
		if (opts) {
			if (opts.className) {
				clName = opts.className;
			}
			if (opts.dfd && opts.dfd.promise) {
				dfds = [];
			}
		}
		jQuery.each(urls, function(i, url) {
			var link, df;
			url = self.convAbsUrl(url).replace(/^https?:/i, '');
			if (dfds) {
				dfds[i] = jQuery.Deferred();
			}
			if (! jQuery("head > link[href='+url+']").length) {
				link = document.createElement('link');
				link.type = 'text/css';
				link.rel = 'stylesheet';
				link.href = url;
				if (clName) {
					link.className = clName;
				}
				if (dfds) {
					link.onload = function() {
						dfds[i].resolve();
					};
					link.onerror = function() {
						dfds[i].reject();
					};
				}
				jQuery('head').append(link);
			} else {
				dfds && dfds[i].resolve();
			}
		});
		if (dfds) {
			jQuery.when.apply(null, dfds).done(function() {
				opts.dfd.resolve();
			}).fail(function() {
				opts.dfd.reject();
			});
		}
		return this;
	},
	
	/**
	 * Abortable async job performer
	 * 
	 * @param func Function
	 * @param arr  Array
	 * @param opts Object
	 * 
	 * @return Object jQuery.Deferred that has an extended method _abort()
	 */
	asyncJob : function(func, arr, opts) {
		var dfrd = jQuery.Deferred(),
			abortFlg = false,
			parms = Object.assign({
				interval : 0,
				numPerOnce : 1
			}, opts || {}),
			resArr = [],
			vars =[],
			curVars = [],
			exec,
			tm;
		
		dfrd._abort = function(resolve) {
			tm && clearTimeout(tm);
			vars = [];
			abortFlg = true;
			if (dfrd.state() === 'pending') {
				dfrd[resolve? 'resolve' : 'reject'](resArr);
			}
		};
		
		dfrd.fail(function() {
			dfrd._abort();
		}).always(function() {
			dfrd._abort = function() {};
		});

		if (typeof func === 'function' && Array.isArray(arr)) {
			vars = arr.concat();
			exec = function() {
				var i, len, res;
				if (abortFlg) {
					return;
				}
				curVars = vars.splice(0, parms.numPerOnce);
				len = curVars.length;
				for (i = 0; i < len; i++) {
					if (abortFlg) {
						break;
					}
					res = func(curVars[i]);
					(res !== null) && resArr.push(res);
				}
				if (abortFlg) {
					return;
				}
				if (vars.length) {
					tm = setTimeout(exec, parms.interval);
				} else {
					dfrd.resolve(resArr);
				}
			};
			if (vars.length) {
				tm = setTimeout(exec, 0);
			} else {
				dfrd.resolve(resArr);
			}
		} else {
			dfrd.reject();
		}
		return dfrd;
	},
	
	getSize : function(targets) {
		var self = this,
			reqs = [],
			tgtlen = targets.length,
			dfrd = jQuery.Deferred().fail(function() {
				jQuery.each(reqs, function(i, req) {
					if (req) {
						req.syncOnFail && req.syncOnFail(false);
						req.reject();
					}
				});
			}),
			getLeafRoots = function(file) {
				var targets = [];
				if (file.mime === 'directory') {
					jQuery.each(self.leafRoots, function(hash, roots) {
						var phash;
						if (hash === file.hash) {
							targets.push.apply(targets, roots);
						} else {
							phash = (self.file(hash) || {}).phash;
							while(phash) {
								if (phash === file.hash) {
									targets.push.apply(targets, roots);
								}
								phash = (self.file(phash) || {}).phash;
							}
						}
					});
				}
				return targets;
			},
			checkPhash = function(hash) {
				var dfd = jQuery.Deferred(),
					dir = self.file(hash),
					target = dir? dir.phash : hash;
				if (target && ! self.file(target)) {
					self.request({
						data : {
							cmd    : 'parents',
							target : target
						},
						preventFail : true
					}).done(function() {
						self.one('parentsdone', function() {
							dfd.resolve();
						});
					}).fail(function() {
						dfd.resolve();
					});
				} else {
					dfd.resolve();
				}
				return dfd;
			},
			cache = function() {
				var dfd = jQuery.Deferred(),
					cnt = Object.keys(self.leafRoots).length;
				
				if (cnt > 0) {
					jQuery.each(self.leafRoots, function(hash) {
						checkPhash(hash).done(function() {
							--cnt;
							if (cnt < 1) {
								dfd.resolve();
							}
						});
					});
				} else {
					dfd.resolve();
				}
				return dfd;
			};

		self.autoSync('stop');
		cache().done(function() {
			var files = [], grps = {}, dfds = [], cache = [], singles = {};
			
			jQuery.each(targets, function() {
				files.push.apply(files, getLeafRoots(self.file(this)));
			});
			targets.push.apply(targets, files);
			
			jQuery.each(targets, function() {
				var root = self.root(this),
					file = self.file(this);
				if (file && (file.sizeInfo || file.mime !== 'directory')) {
					cache.push(jQuery.Deferred().resolve(file.sizeInfo? file.sizeInfo : {size: file.size, dirCnt: 0, fileCnt : 1}));
				} else {
					if (! grps[root]) {
						grps[root] = [ this ];
					} else {
						grps[root].push(this);
					}
				}
			});
			
			jQuery.each(grps, function() {
				var idx = dfds.length;
				if (this.length === 1) {
					singles[idx] = this[0];
				}
				dfds.push(self.request({
					data : {cmd : 'size', targets : this},
					preventDefault : true
				}));
			});
			reqs.push.apply(reqs, dfds);
			dfds.push.apply(dfds, cache);
			
			jQuery.when.apply($, dfds).fail(function() {
				dfrd.reject();
			}).done(function() {
				var cache = function(h, data) {
						var file;
						if (file = self.file(h)) {
							file.sizeInfo = { isCache: true };
							jQuery.each(['size', 'dirCnt', 'fileCnt'], function() {
								file.sizeInfo[this] = data[this] || 0;
							});
							file.size = parseInt(file.sizeInfo.size);
							changed.push(file);
						}
					},
					size = 0,
					fileCnt = 0,
					dirCnt = 0,
					argLen = arguments.length,
					cnts = [],
					cntsTxt = '',
					changed = [],
					i, file, data;
				
				for (i = 0; i < argLen; i++) {
					data = arguments[i];
					file = null;
					if (!data.isCache) {
						if (singles[i] && (file = self.file(singles[i]))) {
							cache(singles[i], data);
						} else if (data.sizes && jQuery.isPlainObject(data.sizes)) {
							jQuery.each(data.sizes, function(h, sizeInfo) {
								cache(h, sizeInfo);
							});
						}
					}
					size += parseInt(data.size);
					if (fileCnt !== false) {
						if (typeof data.fileCnt === 'undefined') {
							fileCnt = false;
						}
						fileCnt += parseInt(data.fileCnt || 0);
					}
					if (dirCnt !== false) {
						if (typeof data.dirCnt === 'undefined') {
							dirCnt = false;
						}
						dirCnt += parseInt(data.dirCnt || 0);
					}
				}
				changed.length && self.change({changed: changed});
				
				if (dirCnt !== false){
					cnts.push(self.i18n('folders') + ': ' + (dirCnt - (tgtlen > 1? 0 : 1)));
				}
				if (fileCnt !== false){
					cnts.push(self.i18n('files') + ': ' + fileCnt);
				}
				if (cnts.length) {
					cntsTxt = '<br>' + cnts.join(', ');
				}
				dfrd.resolve({
					size: size,
					fileCnt: fileCnt,
					dirCnt: dirCnt,
					formated: (size >= 0 ? self.formatSize(size) : self.i18n('unknown')) + cntsTxt
				});
			});
			
			self.autoSync();
		});
		
		return dfrd;
	},
	
	/**
	 * Gets the theme object by settings of options.themes
	 *
	 * @param  String  themeid  The themeid
	 * @return Object  jQuery.Deferred
	 */
	getTheme : function(themeid) {
		var self = this,
			dfd = jQuery.Deferred(),
			absUrl = function(url, base) {
				if (!base) {
					base = self.convAbsUrl(self.baseUrl);
				}
				if (Array.isArray(url)) {
					return jQuery.map(url, function(v) {
						return absUrl(v, base);
					});
				} else {
					return url.match(/^(?:http|\/\/)/i)? url : base + url.replace(/^(?:\.\/|\/)/, '');
				}
			},
			themeObj, m;
		if (themeid && (themeObj = self.options.themes[themeid])) {
			if (typeof themeObj === 'string') {
				url = absUrl(themeObj);
				if (m = url.match(/^(.+\/)[^/]+\.json$/i)) {
					jQuery.getJSON(url).done(function(data) {
						themeObj = data;
						themeObj.id = themeid;
						if (themeObj.cssurls) {
							themeObj.cssurls = absUrl(themeObj.cssurls, m[1]);
						}
						dfd.resolve(themeObj);
					}).fail(function() {
						dfd.reject();
					});
				} else {
					dfd.resolve({
						id: themeid,
						name: themeid,
						cssurls: [url]
					});
				}
			} else if (jQuery.isPlainObject(themeObj) && themeObj.cssurls) {
				themeObj.id = themeid;
				themeObj.cssurls = absUrl(themeObj.cssurls);
				if (!Array.isArray(themeObj.cssurls)) {
					themeObj.cssurls = [themeObj.cssurls];
				}
				if (!themeObj.name) {
					themeObj.name = themeid;
				}
				dfd.resolve(themeObj);
			} else {
				dfd.reject();
			}
		} else {
			dfd.reject();
		}
		return dfd;
	},

	/**
	 * Change current theme
	 *
	 * @param  String  themeid  The themeid
	 * @return Object  this elFinder instance
	 */
	changeTheme : function(themeid) {
		var self = this;
		if (themeid) {
			if (self.options.themes[themeid] && (!self.theme || self.theme.id !== themeid)) {
				self.getTheme(themeid).done(function(themeObj) {
					if (themeObj.cssurls) {
						jQuery('head>link.elfinder-theme-ext').remove();
						self.loadCss(themeObj.cssurls, {
							className: 'elfinder-theme-ext',
							dfd: jQuery.Deferred().done(function() {
								self.theme = themeObj;
								self.trigger && self.trigger('themechange');
							})
						});
					}
				});
			} else if (themeid === 'default' && self.theme) {
				jQuery('head>link.elfinder-theme-ext').remove();
				self.theme = null;
				self.trigger && self.trigger('themechange');
			}
		}
		return this;
	},

	/**
	 * Apply leaf root stats to target directory
	 *
	 * @param      object     dir     object of target directory
	 * @param      boolean    update  is force update
	 * 
	 * @return     boolean    dir object was chenged 
	 */
	applyLeafRootStats : function(dir, update) {
		var self = this,
			prev = update? dir : (self.file(dir.hash) || dir),
			prevTs = prev.ts,
			change = false;
		// backup original stats
		if (update || !dir._realStats) {
			dir._realStats = {
				locked: dir.locked || 0,
				dirs: dir.dirs || 0,
				ts: dir.ts
			};
		}
		// set lock
		dir.locked = 1;
		if (!prev.locked) {
			change = true;
		}
		// has leaf root to `dirs: 1`
		dir.dirs = 1;
		if (!prev.dirs) {
			change = true;
		}
		// set ts
		jQuery.each(self.leafRoots[dir.hash], function() {
			var f = self.file(this);
			if (f && f.ts && (dir.ts || 0) < f.ts) {
				dir.ts = f.ts;
			}
		});
		if (prevTs !== dir.ts) {
			change = true;
		}

		return change;
	},

	/**
	 * To aborted XHR object
	 * 
	 * @param Object xhr
	 * @param Object opts
	 * 
	 * @return void
	 */
	abortXHR : function(xhr, o) {
		var opts = o || {};
		
		if (xhr) {
			opts.quiet && (xhr.quiet = true);
			if (opts.abort && xhr._requestId) {
				this.request({
					data: {
						cmd: 'abort',
						id: xhr._requestId
					},
					preventDefault: true
				});
			}
			xhr.abort();
			xhr = void 0;
		}
	},

	/**
	 * Gets the request identifier
	 *
	 * @return  String  The request identifier.
	 */
	getRequestId : function() {
		return (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
	},
	
	/**
	 * Flip key and value of array or object
	 * 
	 * @param  Array | Object  { a: 1, b: 1, c: 2 }
	 * @param  Mixed           Static value
	 * @return Object          { 1: "b", 2: "c" }
	 */
	arrayFlip : function (trans, val) {
		var key,
			tmpArr = {},
			isArr = jQuery.isArray(trans);
		for (key in trans) {
			if (isArr || trans.hasOwnProperty(key)) {
				tmpArr[trans[key]] = val || key;
			}
		}
		return tmpArr;
	},
	
	/**
	 * Return array ["name without extention", "extention"]
	 * 
	 * @param String name
	 * 
	 * @return Array
	 * 
	 */
	splitFileExtention : function(name) {
		var m;
		if (m = name.match(/^(.+?)?\.((?:tar\.(?:gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(?:gz|bz2)|[a-z0-9]{1,10})$/i)) {
			if (typeof m[1] === 'undefined') {
				m[1] = '';
			}
			return [m[1], m[2]];
		} else {
			return [name, ''];
		}
	},
	
	/**
	 * Slice the ArrayBuffer by sliceSize
	 *
	 * @param      arraybuffer  arrayBuffer  The array buffer
	 * @param      Number       sliceSize    The slice size
	 * @return     Array   Array of sleced arraybuffer
	 */
	sliceArrayBuffer : function(arrayBuffer, sliceSize) {
		var segments= [],
			fi = 0;
		while(fi * sliceSize < arrayBuffer.byteLength){
			segments.push(arrayBuffer.slice(fi * sliceSize, (fi + 1) * sliceSize));
			fi++;
		}
		return segments;
	},

	arrayBufferToBase64 : function(ab) {
		if (!window.btoa) {
			return '';
		}
		var dView = new Uint8Array(ab), // Get a byte view
			arr = Array.prototype.slice.call(dView), // Create a normal array
			arr1 = arr.map(function(item) {
				return String.fromCharCode(item); // Convert
			});
	    return window.btoa(arr1.join('')); // Form a string
	},

	log : function(m) { window.console && window.console.log && window.console.log(m); return this; },
	
	debug : function(type, m) {
		var d = this.options.debug;

		if (d && (d === 'all' || d[type])) {
			window.console && window.console.log && window.console.log('elfinder debug: ['+type+'] ['+this.id+']', m);
		} 
		
		if (type === 'backend-error') {
			if (! this.cwd().hash || (d && (d === 'all' || d['backend-error']))) {
				m = Array.isArray(m)? m : [ m ];
				this.error(m);
			}
		} else if (type === 'backend-debug') {
			this.trigger('backenddebug', m);
		}
		
		return this;
	},
	time : function(l) { window.console && window.console.time && window.console.time(l); },
	timeEnd : function(l) { window.console && window.console.timeEnd && window.console.timeEnd(l); }
	

};

/**
 * for conpat ex. ie8...
 *
 * Object.keys() - JavaScript | MDN
 * https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
 */
if (!Object.keys) {
	Object.keys = (function () {
		var hasOwnProperty = Object.prototype.hasOwnProperty,
				hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
				dontEnums = [
					'toString',
					'toLocaleString',
					'valueOf',
					'hasOwnProperty',
					'isPrototypeOf',
					'propertyIsEnumerable',
					'constructor'
				],
				dontEnumsLength = dontEnums.length;

		return function (obj) {
			if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');

			var result = [];

			for (var prop in obj) {
				if (hasOwnProperty.call(obj, prop)) result.push(prop);
			}

			if (hasDontEnumBug) {
				for (var i=0; i < dontEnumsLength; i++) {
					if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
				}
			}
			return result;
		};
	})();
}
// Array.isArray
if (!Array.isArray) {
	Array.isArray = function(arr) {
		return jQuery.isArray(arr);
	};
}
// Object.assign
if (!Object.assign) {
	Object.assign = function() {
		return jQuery.extend.apply(null, arguments);
	};
}
// String.repeat
if (!String.prototype.repeat) {
	String.prototype.repeat = function(count) {
		'use strict';
		if (this == null) {
			throw new TypeError('can\'t convert ' + this + ' to object');
		}
		var str = '' + this;
		count = +count;
		if (count != count) {
			count = 0;
		}
		if (count < 0) {
			throw new RangeError('repeat count must be non-negative');
		}
		if (count == Infinity) {
			throw new RangeError('repeat count must be less than infinity');
		}
		count = Math.floor(count);
		if (str.length == 0 || count == 0) {
			return '';
		}
		// Ensuring count is a 31-bit integer allows us to heavily optimize the
		// main part. But anyway, most current (August 2014) browsers can't handle
		// strings 1 << 28 chars or longer, so:
		if (str.length * count >= 1 << 28) {
			throw new RangeError('repeat count must not overflow maximum string size');
		}
		var rpt = '';
		for (var i = 0; i < count; i++) {
			rpt += str;
		}
		return rpt;
	};
}
// String.trim
if (!String.prototype.trim) {
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g, '');
	};
}
// Array.apply
(function () {
	try {
		Array.apply(null, {});
		return;
	} catch (e) { }

	var toString = Object.prototype.toString,
		arrayType = '[object Array]',
		_apply = Function.prototype.apply,
		slice = /*@cc_on @if (@_jscript_version <= 5.8)
			function () {
				var a = [], i = this.length;
				while (i-- > 0) a[i] = this[i];
				return a;
			}@else@*/Array.prototype.slice/*@end@*/;

	Function.prototype.apply = function apply(thisArg, argArray) {
		return _apply.call(this, thisArg,
			toString.call(argArray) === arrayType ? argArray : slice.call(argArray));
	};
})();
// Array.from
if (!Array.from) {
	Array.from = function(obj) {
		return obj.length === 1 ? [obj[0]] : Array.apply(null, obj);
	};
}
// window.requestAnimationFrame and window.cancelAnimationFrame
if (!window.cancelAnimationFrame) {
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
// MIT license
(function() {
    var lastTime = 0;
    var vendors = ['ms', 'moz', 'webkit', 'o'];
    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] 
                                   || window[vendors[x]+'CancelRequestAnimationFrame'];
    }
 
    if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
              timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };
 
    if (!window.cancelAnimationFrame)
        window.cancelAnimationFrame = function(id) {
            clearTimeout(id);
        };
}());
}


/*
 * File: /js/elFinder.version.js
 */

/**
 * Application version
 *
 * @type String
 **/
elFinder.prototype.version = '2.1.49';



/*
 * File: /js/jquery.elfinder.js
 */

/*** jQuery UI droppable performance tune for elFinder ***/
(function(){
if (jQuery.ui) {
	if (jQuery.ui.ddmanager) {
		var origin = jQuery.ui.ddmanager.prepareOffsets;
		jQuery.ui.ddmanager.prepareOffsets = function( t, event ) {
			var isOutView = function(elem) {
				if (elem.is(':hidden')) {
					return true;
				}
				var rect = elem[0].getBoundingClientRect();
				return document.elementFromPoint(rect.left, rect.top) || document.elementFromPoint(rect.left + rect.width, rect.top + rect.height)? false : true;
			};
			
			if (event.type === 'mousedown' || t.options.elfRefresh) {
				var i, d,
				m = jQuery.ui.ddmanager.droppables[ t.options.scope ] || [],
				l = m.length;
				for ( i = 0; i < l; i++ ) {
					d = m[ i ];
					if (d.options.autoDisable && (!d.options.disabled || d.options.autoDisable > 1)) {
						d.options.disabled = isOutView(d.element);
						d.options.autoDisable = d.options.disabled? 2 : 1;
					}
				}
			}
			
			// call origin function
			return origin( t, event );
		};
	}
}
})();

 /**
 *
 * jquery.binarytransport.js
 *
 * @description. jQuery ajax transport for making binary data type requests.
 * @version 1.0 
 * @author Henry Algus <henryalgus@gmail.com>
 *
 */

// use this transport for "binary" data type
jQuery.ajaxTransport('+binary', function(options, originalOptions, jqXHR) {
	// check for conditions and support for blob / arraybuffer response type
	if (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob)))))
	{
		var xhr;
		return {
			// create new XMLHttpRequest
			send: function(headers, callback){
				// setup all variables
				xhr = new XMLHttpRequest();
				var url = options.url,
					type = options.type,
					async = options.async || true,
					// blob or arraybuffer. Default is blob
					dataType = options.responseType || 'blob',
					data = options.data || null,
					username = options.username,
					password = options.password;
					
				xhr.addEventListener('load', function(){
					var data = {};
					data[options.dataType] = xhr.response;
					// make callback and send data
					callback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders());
				});

				xhr.open(type, url, async, username, password);
				
				// setup custom headers
				for (var i in headers ) {
					xhr.setRequestHeader(i, headers[i] );
				}

				// setuo xhrFields
				if (options.xhrFields) {
					for (var key in options.xhrFields) {
						if (key in xhr) {
							xhr[key] = options.xhrFields[key];
						}
					}
				}

				xhr.responseType = dataType;
				xhr.send(data);
			},
			abort: function(){
				xhr.abort();
			}
		};
	}
});

/*!
 * jQuery UI Touch Punch 0.2.3
 *
 * Copyright 2011–2014, Dave Furfero
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 * Depends:
 *	jquery.ui.widget.js
 *	jquery.ui.mouse.js
 */
(function ($) {

  // Detect touch support
  jQuery.support.touch = 'ontouchend' in document;

  // Ignore browsers without touch support
  if (!jQuery.support.touch) {
	return;
  }

  var mouseProto = jQuery.ui.mouse.prototype,
	  _mouseInit = mouseProto._mouseInit,
	  _mouseDestroy = mouseProto._mouseDestroy,
	  touchHandled,
	  posX, posY;

  /**
   * Simulate a mouse event based on a corresponding touch event
   * @param {Object} event A touch event
   * @param {String} simulatedType The corresponding mouse event
   */
  function simulateMouseEvent (event, simulatedType) {

	// Ignore multi-touch events
	if (event.originalEvent.touches.length > 1) {
	  return;
	}

	if (! jQuery(event.currentTarget).hasClass('touch-punch-keep-default')) {
		event.preventDefault();
	}

	var touch = event.originalEvent.changedTouches[0],
		simulatedEvent = document.createEvent('MouseEvents');
	
	// Initialize the simulated mouse event using the touch event's coordinates
	simulatedEvent.initMouseEvent(
	  simulatedType,	// type
	  true,				// bubbles					  
	  true,				// cancelable				  
	  window,			// view						  
	  1,				// detail					  
	  touch.screenX,	// screenX					  
	  touch.screenY,	// screenY					  
	  touch.clientX,	// clientX					  
	  touch.clientY,	// clientY					  
	  false,			// ctrlKey					  
	  false,			// altKey					  
	  false,			// shiftKey					  
	  false,			// metaKey					  
	  0,				// button					  
	  null				// relatedTarget			  
	);

	// Dispatch the simulated event to the target element
	event.target.dispatchEvent(simulatedEvent);
  }

  /**
   * Handle the jQuery UI widget's touchstart events
   * @param {Object} event The widget element's touchstart event
   */
  mouseProto._touchStart = function (event) {

	var self = this;

	// Ignore the event if another widget is already being handled
	if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
	  return;
	}

	// Track element position to avoid "false" move
	posX = event.originalEvent.changedTouches[0].screenX.toFixed(0);
	posY = event.originalEvent.changedTouches[0].screenY.toFixed(0);

	// Set the flag to prevent other widgets from inheriting the touch event
	touchHandled = true;

	// Track movement to determine if interaction was a click
	self._touchMoved = false;

	// Simulate the mouseover event
	simulateMouseEvent(event, 'mouseover');

	// Simulate the mousemove event
	simulateMouseEvent(event, 'mousemove');

	// Simulate the mousedown event
	simulateMouseEvent(event, 'mousedown');
  };

  /**
   * Handle the jQuery UI widget's touchmove events
   * @param {Object} event The document's touchmove event
   */
  mouseProto._touchMove = function (event) {

	// Ignore event if not handled
	if (!touchHandled) {
	  return;
	}

	// Ignore if it's a "false" move (position not changed)
	var x = event.originalEvent.changedTouches[0].screenX.toFixed(0);
	var y = event.originalEvent.changedTouches[0].screenY.toFixed(0);
	// Ignore if it's a "false" move (position not changed)
	if (Math.abs(posX - x) <= 4 && Math.abs(posY - y) <= 4) {
		return;
	}

	// Interaction was not a click
	this._touchMoved = true;

	// Simulate the mousemove event
	simulateMouseEvent(event, 'mousemove');
  };

  /**
   * Handle the jQuery UI widget's touchend events
   * @param {Object} event The document's touchend event
   */
  mouseProto._touchEnd = function (event) {

	// Ignore event if not handled
	if (!touchHandled) {
	  return;
	}

	// Simulate the mouseup event
	simulateMouseEvent(event, 'mouseup');

	// Simulate the mouseout event
	simulateMouseEvent(event, 'mouseout');

	// If the touch interaction did not move, it should trigger a click
	if (!this._touchMoved) {

	  // Simulate the click event
	  simulateMouseEvent(event, 'click');
	}

	// Unset the flag to allow other widgets to inherit the touch event
	touchHandled = false;
	this._touchMoved = false;
  };

  /**
   * A duck punch of the jQuery.ui.mouse _mouseInit method to support touch events.
   * This method extends the widget with bound touch event handlers that
   * translate touch events to mouse events and pass them to the widget's
   * original mouse event handling methods.
   */
  mouseProto._mouseInit = function () {
	
	var self = this;

	if (self.element.hasClass('touch-punch')) {
		// Delegate the touch handlers to the widget's element
		self.element.on({
		  touchstart: jQuery.proxy(self, '_touchStart'),
		  touchmove: jQuery.proxy(self, '_touchMove'),
		  touchend: jQuery.proxy(self, '_touchEnd')
		});
	}

	// Call the original jQuery.ui.mouse init method
	_mouseInit.call(self);
  };

  /**
   * Remove the touch event handlers
   */
  mouseProto._mouseDestroy = function () {
	
	var self = this;

	if (self.element.hasClass('touch-punch')) {
		// Delegate the touch handlers to the widget's element
		self.element.off({
		  touchstart: jQuery.proxy(self, '_touchStart'),
		  touchmove: jQuery.proxy(self, '_touchMove'),
		  touchend: jQuery.proxy(self, '_touchEnd')
		});
	}

	// Call the original jQuery.ui.mouse destroy method
	_mouseDestroy.call(self);
  };

})(jQuery);

jQuery.fn.elfinder = function(o, o2) {
	
	if (o === 'instance') {
		return this.getElFinder();
	}
	
	return this.each(function() {
		
		var cmd          = typeof o  === 'string'  ? o  : '',
			bootCallback = typeof o2 === 'function'? o2 : void(0),
			opts;
		
		if (!this.elfinder) {
			if (jQuery.isPlainObject(o)) {
				new elFinder(this, o, bootCallback);
			}
		} else {
			switch(cmd) {
				case 'close':
				case 'hide':
					this.elfinder.hide();
					break;
					
				case 'open':
				case 'show':
					this.elfinder.show();
					break;
					
				case 'destroy':
					this.elfinder.destroy();
					break;
				
				case 'reload':
				case 'restart':
					if (this.elfinder) {
						opts = this.elfinder.options;
						bootCallback = this.elfinder.bootCallback;
						this.elfinder.destroy();
						new elFinder(this, jQuery.extend(true, opts, jQuery.isPlainObject(o2)? o2 : {}), bootCallback);
					}
					break;
			}
		}
	});
};

jQuery.fn.getElFinder = function() {
	var instance;
	
	this.each(function() {
		if (this.elfinder) {
			instance = this.elfinder;
			return false;
		}
	});
	
	return instance;
};

jQuery.fn.elfUiWidgetInstance = function(name) {
	try {
		return this[name]('instance');
	} catch(e) {
		// fallback for jQuery UI < 1.11
		var data = this.data('ui-' + name);
		if (data && typeof data === 'object' && data.widgetFullName === 'ui-' + name) {
			return data;
		}
		return null;
	}
};

// function scrollRight
if (! jQuery.fn.scrollRight) {
	jQuery.fn.extend({
		scrollRight: function (val) {
			var node = this.get(0);
			if (val === undefined) {
				return Math.max(0, node.scrollWidth - (node.scrollLeft + node.clientWidth));
			}
			return this.scrollLeft(node.scrollWidth - node.clientWidth - val);
		}
	});
}

// function scrollBottom
if (! jQuery.fn.scrollBottom) {
	jQuery.fn.extend({
		scrollBottom: function(val) { 
			var node = this.get(0);
			if (val === undefined) {
				return Math.max(0, node.scrollHeight - (node.scrollTop + node.clientHeight));
			}
			return this.scrollTop(node.scrollHeight - node.clientHeight - val);
		}
	});
}


/*
 * File: /js/elFinder.mimetypes.js
 */

elFinder.prototype.mimeTypes = {"application\/x-executable":"exe","application\/x-jar":"jar","application\/x-gzip":"gz","application\/x-bzip2":"tbz","application\/x-rar":"rar","text\/x-php":"php","text\/javascript":"js","application\/rtfd":"rtfd","text\/x-python":"py","text\/x-ruby":"rb","text\/x-shellscript":"sh","text\/x-perl":"pl","text\/xml":"xml","text\/x-csrc":"c","text\/x-chdr":"h","text\/x-c++src":"cpp","text\/x-c++hdr":"hh","text\/x-markdown":"md","text\/x-yaml":"yml","image\/x-ms-bmp":"bmp","image\/x-targa":"tga","image\/xbm":"xbm","image\/pxm":"pxm","audio\/wav":"wav","video\/x-dv":"dv","video\/x-ms-wmv":"wm","video\/ogg":"ogm","video\/MP2T":"m2ts","application\/x-mpegURL":"m3u8","application\/dash+xml":"mpd","application\/andrew-inset":"ez","application\/applixware":"aw","application\/atom+xml":"atom","application\/atomcat+xml":"atomcat","application\/atomsvc+xml":"atomsvc","application\/ccxml+xml":"ccxml","application\/cdmi-capability":"cdmia","application\/cdmi-container":"cdmic","application\/cdmi-domain":"cdmid","application\/cdmi-object":"cdmio","application\/cdmi-queue":"cdmiq","application\/cu-seeme":"cu","application\/davmount+xml":"davmount","application\/docbook+xml":"dbk","application\/dssc+der":"dssc","application\/dssc+xml":"xdssc","application\/ecmascript":"ecma","application\/emma+xml":"emma","application\/epub+zip":"epub","application\/exi":"exi","application\/font-tdpfr":"pfr","application\/gml+xml":"gml","application\/gpx+xml":"gpx","application\/gxf":"gxf","application\/hyperstudio":"stk","application\/inkml+xml":"ink","application\/ipfix":"ipfix","application\/java-serialized-object":"ser","application\/java-vm":"class","application\/json":"json","application\/jsonml+json":"jsonml","application\/lost+xml":"lostxml","application\/mac-binhex40":"hqx","application\/mac-compactpro":"cpt","application\/mads+xml":"mads","application\/marc":"mrc","application\/marcxml+xml":"mrcx","application\/mathematica":"ma","application\/mathml+xml":"mathml","application\/mbox":"mbox","application\/mediaservercontrol+xml":"mscml","application\/metalink+xml":"metalink","application\/metalink4+xml":"meta4","application\/mets+xml":"mets","application\/mods+xml":"mods","application\/mp21":"m21","application\/mp4":"mp4s","application\/msword":"doc","application\/mxf":"mxf","application\/octet-stream":"bin","application\/oda":"oda","application\/oebps-package+xml":"opf","application\/ogg":"ogx","application\/omdoc+xml":"omdoc","application\/onenote":"onetoc","application\/oxps":"oxps","application\/patch-ops-error+xml":"xer","application\/pdf":"pdf","application\/pgp-encrypted":"pgp","application\/pgp-signature":"asc","application\/pics-rules":"prf","application\/pkcs10":"p10","application\/pkcs7-mime":"p7m","application\/pkcs7-signature":"p7s","application\/pkcs8":"p8","application\/pkix-attr-cert":"ac","application\/pkix-cert":"cer","application\/pkix-crl":"crl","application\/pkix-pkipath":"pkipath","application\/pkixcmp":"pki","application\/pls+xml":"pls","application\/postscript":"ai","application\/prs.cww":"cww","application\/pskc+xml":"pskcxml","application\/rdf+xml":"rdf","application\/reginfo+xml":"rif","application\/relax-ng-compact-syntax":"rnc","application\/resource-lists+xml":"rl","application\/resource-lists-diff+xml":"rld","application\/rls-services+xml":"rs","application\/rpki-ghostbusters":"gbr","application\/rpki-manifest":"mft","application\/rpki-roa":"roa","application\/rsd+xml":"rsd","application\/rss+xml":"rss","application\/rtf":"rtf","application\/sbml+xml":"sbml","application\/scvp-cv-request":"scq","application\/scvp-cv-response":"scs","application\/scvp-vp-request":"spq","application\/scvp-vp-response":"spp","application\/sdp":"sdp","application\/set-payment-initiation":"setpay","application\/set-registration-initiation":"setreg","application\/shf+xml":"shf","application\/smil+xml":"smi","application\/sparql-query":"rq","application\/sparql-results+xml":"srx","application\/srgs":"gram","application\/srgs+xml":"grxml","application\/sru+xml":"sru","application\/ssdl+xml":"ssdl","application\/ssml+xml":"ssml","application\/tei+xml":"tei","application\/thraud+xml":"tfi","application\/timestamped-data":"tsd","application\/vnd.3gpp.pic-bw-large":"plb","application\/vnd.3gpp.pic-bw-small":"psb","application\/vnd.3gpp.pic-bw-var":"pvb","application\/vnd.3gpp2.tcap":"tcap","application\/vnd.3m.post-it-notes":"pwn","application\/vnd.accpac.simply.aso":"aso","application\/vnd.accpac.simply.imp":"imp","application\/vnd.acucobol":"acu","application\/vnd.acucorp":"atc","application\/vnd.adobe.air-application-installer-package+zip":"air","application\/vnd.adobe.formscentral.fcdt":"fcdt","application\/vnd.adobe.fxp":"fxp","application\/vnd.adobe.xdp+xml":"xdp","application\/vnd.adobe.xfdf":"xfdf","application\/vnd.ahead.space":"ahead","application\/vnd.airzip.filesecure.azf":"azf","application\/vnd.airzip.filesecure.azs":"azs","application\/vnd.amazon.ebook":"azw","application\/vnd.americandynamics.acc":"acc","application\/vnd.amiga.ami":"ami","application\/vnd.android.package-archive":"apk","application\/vnd.anser-web-certificate-issue-initiation":"cii","application\/vnd.anser-web-funds-transfer-initiation":"fti","application\/vnd.antix.game-component":"atx","application\/vnd.apple.installer+xml":"mpkg","application\/vnd.aristanetworks.swi":"swi","application\/vnd.astraea-software.iota":"iota","application\/vnd.audiograph":"aep","application\/vnd.blueice.multipass":"mpm","application\/vnd.bmi":"bmi","application\/vnd.businessobjects":"rep","application\/vnd.chemdraw+xml":"cdxml","application\/vnd.chipnuts.karaoke-mmd":"mmd","application\/vnd.cinderella":"cdy","application\/vnd.claymore":"cla","application\/vnd.cloanto.rp9":"rp9","application\/vnd.clonk.c4group":"c4g","application\/vnd.cluetrust.cartomobile-config":"c11amc","application\/vnd.cluetrust.cartomobile-config-pkg":"c11amz","application\/vnd.commonspace":"csp","application\/vnd.contact.cmsg":"cdbcmsg","application\/vnd.cosmocaller":"cmc","application\/vnd.crick.clicker":"clkx","application\/vnd.crick.clicker.keyboard":"clkk","application\/vnd.crick.clicker.palette":"clkp","application\/vnd.crick.clicker.template":"clkt","application\/vnd.crick.clicker.wordbank":"clkw","application\/vnd.criticaltools.wbs+xml":"wbs","application\/vnd.ctc-posml":"pml","application\/vnd.cups-ppd":"ppd","application\/vnd.curl.car":"car","application\/vnd.curl.pcurl":"pcurl","application\/vnd.dart":"dart","application\/vnd.data-vision.rdz":"rdz","application\/vnd.dece.data":"uvf","application\/vnd.dece.ttml+xml":"uvt","application\/vnd.dece.unspecified":"uvx","application\/vnd.dece.zip":"uvz","application\/vnd.denovo.fcselayout-link":"fe_launch","application\/vnd.dna":"dna","application\/vnd.dolby.mlp":"mlp","application\/vnd.dpgraph":"dpg","application\/vnd.dreamfactory":"dfac","application\/vnd.ds-keypoint":"kpxx","application\/vnd.dvb.ait":"ait","application\/vnd.dvb.service":"svc","application\/vnd.dynageo":"geo","application\/vnd.ecowin.chart":"mag","application\/vnd.enliven":"nml","application\/vnd.epson.esf":"esf","application\/vnd.epson.msf":"msf","application\/vnd.epson.quickanime":"qam","application\/vnd.epson.salt":"slt","application\/vnd.epson.ssf":"ssf","application\/vnd.eszigno3+xml":"es3","application\/vnd.ezpix-album":"ez2","application\/vnd.ezpix-package":"ez3","application\/vnd.fdf":"fdf","application\/vnd.fdsn.mseed":"mseed","application\/vnd.fdsn.seed":"seed","application\/vnd.flographit":"gph","application\/vnd.fluxtime.clip":"ftc","application\/vnd.framemaker":"fm","application\/vnd.frogans.fnc":"fnc","application\/vnd.frogans.ltf":"ltf","application\/vnd.fsc.weblaunch":"fsc","application\/vnd.fujitsu.oasys":"oas","application\/vnd.fujitsu.oasys2":"oa2","application\/vnd.fujitsu.oasys3":"oa3","application\/vnd.fujitsu.oasysgp":"fg5","application\/vnd.fujitsu.oasysprs":"bh2","application\/vnd.fujixerox.ddd":"ddd","application\/vnd.fujixerox.docuworks":"xdw","application\/vnd.fujixerox.docuworks.binder":"xbd","application\/vnd.fuzzysheet":"fzs","application\/vnd.genomatix.tuxedo":"txd","application\/vnd.geogebra.file":"ggb","application\/vnd.geogebra.tool":"ggt","application\/vnd.geometry-explorer":"gex","application\/vnd.geonext":"gxt","application\/vnd.geoplan":"g2w","application\/vnd.geospace":"g3w","application\/vnd.gmx":"gmx","application\/vnd.google-earth.kml+xml":"kml","application\/vnd.google-earth.kmz":"kmz","application\/vnd.grafeq":"gqf","application\/vnd.groove-account":"gac","application\/vnd.groove-help":"ghf","application\/vnd.groove-identity-message":"gim","application\/vnd.groove-injector":"grv","application\/vnd.groove-tool-message":"gtm","application\/vnd.groove-tool-template":"tpl","application\/vnd.groove-vcard":"vcg","application\/vnd.hal+xml":"hal","application\/vnd.handheld-entertainment+xml":"zmm","application\/vnd.hbci":"hbci","application\/vnd.hhe.lesson-player":"les","application\/vnd.hp-hpgl":"hpgl","application\/vnd.hp-hpid":"hpid","application\/vnd.hp-hps":"hps","application\/vnd.hp-jlyt":"jlt","application\/vnd.hp-pcl":"pcl","application\/vnd.hp-pclxl":"pclxl","application\/vnd.hydrostatix.sof-data":"sfd-hdstx","application\/vnd.ibm.minipay":"mpy","application\/vnd.ibm.modcap":"afp","application\/vnd.ibm.rights-management":"irm","application\/vnd.ibm.secure-container":"sc","application\/vnd.iccprofile":"icc","application\/vnd.igloader":"igl","application\/vnd.immervision-ivp":"ivp","application\/vnd.immervision-ivu":"ivu","application\/vnd.insors.igm":"igm","application\/vnd.intercon.formnet":"xpw","application\/vnd.intergeo":"i2g","application\/vnd.intu.qbo":"qbo","application\/vnd.intu.qfx":"qfx","application\/vnd.ipunplugged.rcprofile":"rcprofile","application\/vnd.irepository.package+xml":"irp","application\/vnd.is-xpr":"xpr","application\/vnd.isac.fcs":"fcs","application\/vnd.jam":"jam","application\/vnd.jcp.javame.midlet-rms":"rms","application\/vnd.jisp":"jisp","application\/vnd.joost.joda-archive":"joda","application\/vnd.kahootz":"ktz","application\/vnd.kde.karbon":"karbon","application\/vnd.kde.kchart":"chrt","application\/vnd.kde.kformula":"kfo","application\/vnd.kde.kivio":"flw","application\/vnd.kde.kontour":"kon","application\/vnd.kde.kpresenter":"kpr","application\/vnd.kde.kspread":"ksp","application\/vnd.kde.kword":"kwd","application\/vnd.kenameaapp":"htke","application\/vnd.kidspiration":"kia","application\/vnd.kinar":"kne","application\/vnd.koan":"skp","application\/vnd.kodak-descriptor":"sse","application\/vnd.las.las+xml":"lasxml","application\/vnd.llamagraphics.life-balance.desktop":"lbd","application\/vnd.llamagraphics.life-balance.exchange+xml":"lbe","application\/vnd.lotus-1-2-3":123,"application\/vnd.lotus-approach":"apr","application\/vnd.lotus-freelance":"pre","application\/vnd.lotus-notes":"nsf","application\/vnd.lotus-organizer":"org","application\/vnd.lotus-screencam":"scm","application\/vnd.lotus-wordpro":"lwp","application\/vnd.macports.portpkg":"portpkg","application\/vnd.mcd":"mcd","application\/vnd.medcalcdata":"mc1","application\/vnd.mediastation.cdkey":"cdkey","application\/vnd.mfer":"mwf","application\/vnd.mfmp":"mfm","application\/vnd.micrografx.flo":"flo","application\/vnd.micrografx.igx":"igx","application\/vnd.mif":"mif","application\/vnd.mobius.daf":"daf","application\/vnd.mobius.dis":"dis","application\/vnd.mobius.mbk":"mbk","application\/vnd.mobius.mqy":"mqy","application\/vnd.mobius.msl":"msl","application\/vnd.mobius.plc":"plc","application\/vnd.mobius.txf":"txf","application\/vnd.mophun.application":"mpn","application\/vnd.mophun.certificate":"mpc","application\/vnd.mozilla.xul+xml":"xul","application\/vnd.ms-artgalry":"cil","application\/vnd.ms-cab-compressed":"cab","application\/vnd.ms-excel":"xls","application\/vnd.ms-excel.addin.macroenabled.12":"xlam","application\/vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","application\/vnd.ms-excel.sheet.macroenabled.12":"xlsm","application\/vnd.ms-excel.template.macroenabled.12":"xltm","application\/vnd.ms-fontobject":"eot","application\/vnd.ms-htmlhelp":"chm","application\/vnd.ms-ims":"ims","application\/vnd.ms-lrm":"lrm","application\/vnd.ms-officetheme":"thmx","application\/vnd.ms-pki.seccat":"cat","application\/vnd.ms-pki.stl":"stl","application\/vnd.ms-powerpoint":"ppt","application\/vnd.ms-powerpoint.addin.macroenabled.12":"ppam","application\/vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","application\/vnd.ms-powerpoint.slide.macroenabled.12":"sldm","application\/vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","application\/vnd.ms-powerpoint.template.macroenabled.12":"potm","application\/vnd.ms-project":"mpp","application\/vnd.ms-word.document.macroenabled.12":"docm","application\/vnd.ms-word.template.macroenabled.12":"dotm","application\/vnd.ms-works":"wps","application\/vnd.ms-wpl":"wpl","application\/vnd.ms-xpsdocument":"xps","application\/vnd.mseq":"mseq","application\/vnd.musician":"mus","application\/vnd.muvee.style":"msty","application\/vnd.mynfc":"taglet","application\/vnd.neurolanguage.nlu":"nlu","application\/vnd.nitf":"ntf","application\/vnd.noblenet-directory":"nnd","application\/vnd.noblenet-sealer":"nns","application\/vnd.noblenet-web":"nnw","application\/vnd.nokia.n-gage.data":"ngdat","application\/vnd.nokia.n-gage.symbian.install":"n-gage","application\/vnd.nokia.radio-preset":"rpst","application\/vnd.nokia.radio-presets":"rpss","application\/vnd.novadigm.edm":"edm","application\/vnd.novadigm.edx":"edx","application\/vnd.novadigm.ext":"ext","application\/vnd.oasis.opendocument.chart":"odc","application\/vnd.oasis.opendocument.chart-template":"otc","application\/vnd.oasis.opendocument.database":"odb","application\/vnd.oasis.opendocument.formula":"odf","application\/vnd.oasis.opendocument.formula-template":"odft","application\/vnd.oasis.opendocument.graphics":"odg","application\/vnd.oasis.opendocument.graphics-template":"otg","application\/vnd.oasis.opendocument.image":"odi","application\/vnd.oasis.opendocument.image-template":"oti","application\/vnd.oasis.opendocument.presentation":"odp","application\/vnd.oasis.opendocument.presentation-template":"otp","application\/vnd.oasis.opendocument.spreadsheet":"ods","application\/vnd.oasis.opendocument.spreadsheet-template":"ots","application\/vnd.oasis.opendocument.text":"odt","application\/vnd.oasis.opendocument.text-master":"odm","application\/vnd.oasis.opendocument.text-template":"ott","application\/vnd.oasis.opendocument.text-web":"oth","application\/vnd.olpc-sugar":"xo","application\/vnd.oma.dd2+xml":"dd2","application\/vnd.openofficeorg.extension":"oxt","application\/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","application\/vnd.openxmlformats-officedocument.presentationml.slide":"sldx","application\/vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","application\/vnd.openxmlformats-officedocument.presentationml.template":"potx","application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application\/vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","application\/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application\/vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","application\/vnd.osgeo.mapguide.package":"mgp","application\/vnd.osgi.dp":"dp","application\/vnd.osgi.subsystem":"esa","application\/vnd.palm":"pdb","application\/vnd.pawaafile":"paw","application\/vnd.pg.format":"str","application\/vnd.pg.osasli":"ei6","application\/vnd.picsel":"efif","application\/vnd.pmi.widget":"wg","application\/vnd.pocketlearn":"plf","application\/vnd.powerbuilder6":"pbd","application\/vnd.previewsystems.box":"box","application\/vnd.proteus.magazine":"mgz","application\/vnd.publishare-delta-tree":"qps","application\/vnd.pvi.ptid1":"ptid","application\/vnd.quark.quarkxpress":"qxd","application\/vnd.realvnc.bed":"bed","application\/vnd.recordare.musicxml":"mxl","application\/vnd.recordare.musicxml+xml":"musicxml","application\/vnd.rig.cryptonote":"cryptonote","application\/vnd.rim.cod":"cod","application\/vnd.rn-realmedia":"rm","application\/vnd.rn-realmedia-vbr":"rmvb","application\/vnd.route66.link66+xml":"link66","application\/vnd.sailingtracker.track":"st","application\/vnd.seemail":"see","application\/vnd.sema":"sema","application\/vnd.semd":"semd","application\/vnd.semf":"semf","application\/vnd.shana.informed.formdata":"ifm","application\/vnd.shana.informed.formtemplate":"itp","application\/vnd.shana.informed.interchange":"iif","application\/vnd.shana.informed.package":"ipk","application\/vnd.simtech-mindmapper":"twd","application\/vnd.smaf":"mmf","application\/vnd.smart.teacher":"teacher","application\/vnd.solent.sdkm+xml":"sdkm","application\/vnd.spotfire.dxp":"dxp","application\/vnd.spotfire.sfs":"sfs","application\/vnd.stardivision.calc":"sdc","application\/vnd.stardivision.draw":"sda","application\/vnd.stardivision.impress":"sdd","application\/vnd.stardivision.math":"smf","application\/vnd.stardivision.writer":"sdw","application\/vnd.stardivision.writer-global":"sgl","application\/vnd.stepmania.package":"smzip","application\/vnd.stepmania.stepchart":"sm","application\/vnd.sun.xml.calc":"sxc","application\/vnd.sun.xml.calc.template":"stc","application\/vnd.sun.xml.draw":"sxd","application\/vnd.sun.xml.draw.template":"std","application\/vnd.sun.xml.impress":"sxi","application\/vnd.sun.xml.impress.template":"sti","application\/vnd.sun.xml.math":"sxm","application\/vnd.sun.xml.writer":"sxw","application\/vnd.sun.xml.writer.global":"sxg","application\/vnd.sun.xml.writer.template":"stw","application\/vnd.sus-calendar":"sus","application\/vnd.svd":"svd","application\/vnd.symbian.install":"sis","application\/vnd.syncml+xml":"xsm","application\/vnd.syncml.dm+wbxml":"bdm","application\/vnd.syncml.dm+xml":"xdm","application\/vnd.tao.intent-module-archive":"tao","application\/vnd.tcpdump.pcap":"pcap","application\/vnd.tmobile-livetv":"tmo","application\/vnd.trid.tpt":"tpt","application\/vnd.triscape.mxs":"mxs","application\/vnd.trueapp":"tra","application\/vnd.ufdl":"ufd","application\/vnd.uiq.theme":"utz","application\/vnd.umajin":"umj","application\/vnd.unity":"unityweb","application\/vnd.uoml+xml":"uoml","application\/vnd.vcx":"vcx","application\/vnd.visio":"vsd","application\/vnd.visionary":"vis","application\/vnd.vsf":"vsf","application\/vnd.wap.wbxml":"wbxml","application\/vnd.wap.wmlc":"wmlc","application\/vnd.wap.wmlscriptc":"wmlsc","application\/vnd.webturbo":"wtb","application\/vnd.wolfram.player":"nbp","application\/vnd.wordperfect":"wpd","application\/vnd.wqd":"wqd","application\/vnd.wt.stf":"stf","application\/vnd.xara":"xar","application\/vnd.xfdl":"xfdl","application\/vnd.yamaha.hv-dic":"hvd","application\/vnd.yamaha.hv-script":"hvs","application\/vnd.yamaha.hv-voice":"hvp","application\/vnd.yamaha.openscoreformat":"osf","application\/vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","application\/vnd.yamaha.smaf-audio":"saf","application\/vnd.yamaha.smaf-phrase":"spf","application\/vnd.yellowriver-custom-menu":"cmp","application\/vnd.zul":"zir","application\/vnd.zzazz.deck+xml":"zaz","application\/voicexml+xml":"vxml","application\/widget":"wgt","application\/winhlp":"hlp","application\/wsdl+xml":"wsdl","application\/wspolicy+xml":"wspolicy","application\/x-7z-compressed":"7z","application\/x-abiword":"abw","application\/x-ace-compressed":"ace","application\/x-apple-diskimage":"dmg","application\/x-authorware-bin":"aab","application\/x-authorware-map":"aam","application\/x-authorware-seg":"aas","application\/x-bcpio":"bcpio","application\/x-bittorrent":"torrent","application\/x-blorb":"blb","application\/x-bzip":"bz","application\/x-cbr":"cbr","application\/x-cdlink":"vcd","application\/x-cfs-compressed":"cfs","application\/x-chat":"chat","application\/x-chess-pgn":"pgn","application\/x-conference":"nsc","application\/x-cpio":"cpio","application\/x-csh":"csh","application\/x-debian-package":"deb","application\/x-dgc-compressed":"dgc","application\/x-director":"dir","application\/x-doom":"wad","application\/x-dtbncx+xml":"ncx","application\/x-dtbook+xml":"dtb","application\/x-dtbresource+xml":"res","application\/x-dvi":"dvi","application\/x-envoy":"evy","application\/x-eva":"eva","application\/x-font-bdf":"bdf","application\/x-font-ghostscript":"gsf","application\/x-font-linux-psf":"psf","application\/x-font-pcf":"pcf","application\/x-font-snf":"snf","application\/x-font-type1":"pfa","application\/x-freearc":"arc","application\/x-futuresplash":"spl","application\/x-gca-compressed":"gca","application\/x-glulx":"ulx","application\/x-gnumeric":"gnumeric","application\/x-gramps-xml":"gramps","application\/x-gtar":"gtar","application\/x-hdf":"hdf","application\/x-install-instructions":"install","application\/x-iso9660-image":"iso","application\/x-java-jnlp-file":"jnlp","application\/x-latex":"latex","application\/x-lzh-compressed":"lzh","application\/x-mie":"mie","application\/x-mobipocket-ebook":"prc","application\/x-ms-application":"application","application\/x-ms-shortcut":"lnk","application\/x-ms-wmd":"wmd","application\/x-ms-wmz":"wmz","application\/x-ms-xbap":"xbap","application\/x-msaccess":"mdb","application\/x-msbinder":"obd","application\/x-mscardfile":"crd","application\/x-msclip":"clp","application\/x-msdownload":"dll","application\/x-msmediaview":"mvb","application\/x-msmetafile":"wmf","application\/x-msmoney":"mny","application\/x-mspublisher":"pub","application\/x-msschedule":"scd","application\/x-msterminal":"trm","application\/x-mswrite":"wri","application\/x-netcdf":"nc","application\/x-nzb":"nzb","application\/x-pkcs12":"p12","application\/x-pkcs7-certificates":"p7b","application\/x-pkcs7-certreqresp":"p7r","application\/x-research-info-systems":"ris","application\/x-shar":"shar","application\/x-shockwave-flash":"swf","application\/x-silverlight-app":"xap","application\/x-sql":"sql","application\/x-stuffit":"sit","application\/x-stuffitx":"sitx","application\/x-subrip":"srt","application\/x-sv4cpio":"sv4cpio","application\/x-sv4crc":"sv4crc","application\/x-t3vm-image":"t3","application\/x-tads":"gam","application\/x-tar":"tar","application\/x-tcl":"tcl","application\/x-tex":"tex","application\/x-tex-tfm":"tfm","application\/x-texinfo":"texinfo","application\/x-tgif":"obj","application\/x-ustar":"ustar","application\/x-wais-source":"src","application\/x-x509-ca-cert":"der","application\/x-xfig":"fig","application\/x-xliff+xml":"xlf","application\/x-xpinstall":"xpi","application\/x-xz":"xz","application\/x-zmachine":"z1","application\/xaml+xml":"xaml","application\/xcap-diff+xml":"xdf","application\/xenc+xml":"xenc","application\/xhtml+xml":"xhtml","application\/xml":"xsl","application\/xml-dtd":"dtd","application\/xop+xml":"xop","application\/xproc+xml":"xpl","application\/xslt+xml":"xslt","application\/xspf+xml":"xspf","application\/xv+xml":"mxml","application\/yang":"yang","application\/yin+xml":"yin","application\/zip":"zip","audio\/adpcm":"adp","audio\/basic":"au","audio\/midi":"mid","audio\/mp4":"m4a","audio\/mpeg":"mpga","audio\/ogg":"oga","audio\/s3m":"s3m","audio\/silk":"sil","audio\/vnd.dece.audio":"uva","audio\/vnd.digital-winds":"eol","audio\/vnd.dra":"dra","audio\/vnd.dts":"dts","audio\/vnd.dts.hd":"dtshd","audio\/vnd.lucent.voice":"lvp","audio\/vnd.ms-playready.media.pya":"pya","audio\/vnd.nuera.ecelp4800":"ecelp4800","audio\/vnd.nuera.ecelp7470":"ecelp7470","audio\/vnd.nuera.ecelp9600":"ecelp9600","audio\/vnd.rip":"rip","audio\/webm":"weba","audio\/x-aac":"aac","audio\/x-aiff":"aif","audio\/x-caf":"caf","audio\/x-flac":"flac","audio\/x-matroska":"mka","audio\/x-mpegurl":"m3u","audio\/x-ms-wax":"wax","audio\/x-ms-wma":"wma","audio\/x-pn-realaudio":"ram","audio\/x-pn-realaudio-plugin":"rmp","audio\/xm":"xm","chemical\/x-cdx":"cdx","chemical\/x-cif":"cif","chemical\/x-cmdf":"cmdf","chemical\/x-cml":"cml","chemical\/x-csml":"csml","chemical\/x-xyz":"xyz","font\/collection":"ttc","font\/otf":"otf","font\/ttf":"ttf","font\/woff":"woff","font\/woff2":"woff2","image\/cgm":"cgm","image\/g3fax":"g3","image\/gif":"gif","image\/ief":"ief","image\/jpeg":"jpeg","image\/ktx":"ktx","image\/png":"png","image\/prs.btif":"btif","image\/sgi":"sgi","image\/svg+xml":"svg","image\/tiff":"tiff","image\/vnd.adobe.photoshop":"psd","image\/vnd.dece.graphic":"uvi","image\/vnd.djvu":"djvu","image\/vnd.dvb.subtitle":"sub","image\/vnd.dwg":"dwg","image\/vnd.dxf":"dxf","image\/vnd.fastbidsheet":"fbs","image\/vnd.fpx":"fpx","image\/vnd.fst":"fst","image\/vnd.fujixerox.edmics-mmr":"mmr","image\/vnd.fujixerox.edmics-rlc":"rlc","image\/vnd.ms-modi":"mdi","image\/vnd.ms-photo":"wdp","image\/vnd.net-fpx":"npx","image\/vnd.wap.wbmp":"wbmp","image\/vnd.xiff":"xif","image\/webp":"webp","image\/x-3ds":"3ds","image\/x-cmu-raster":"ras","image\/x-cmx":"cmx","image\/x-freehand":"fh","image\/x-icon":"ico","image\/x-mrsid-image":"sid","image\/x-pcx":"pcx","image\/x-pict":"pic","image\/x-portable-anymap":"pnm","image\/x-portable-bitmap":"pbm","image\/x-portable-graymap":"pgm","image\/x-portable-pixmap":"ppm","image\/x-rgb":"rgb","image\/x-xpixmap":"xpm","image\/x-xwindowdump":"xwd","message\/rfc822":"eml","model\/iges":"igs","model\/mesh":"msh","model\/vnd.collada+xml":"dae","model\/vnd.dwf":"dwf","model\/vnd.gdl":"gdl","model\/vnd.gtw":"gtw","model\/vnd.vtu":"vtu","model\/vrml":"wrl","model\/x3d+binary":"x3db","model\/x3d+vrml":"x3dv","model\/x3d+xml":"x3d","text\/cache-manifest":"appcache","text\/calendar":"ics","text\/css":"css","text\/csv":"csv","text\/html":"html","text\/n3":"n3","text\/plain":"txt","text\/prs.lines.tag":"dsc","text\/richtext":"rtx","text\/sgml":"sgml","text\/tab-separated-values":"tsv","text\/troff":"t","text\/turtle":"ttl","text\/uri-list":"uri","text\/vcard":"vcard","text\/vnd.curl":"curl","text\/vnd.curl.dcurl":"dcurl","text\/vnd.curl.mcurl":"mcurl","text\/vnd.curl.scurl":"scurl","text\/vnd.fly":"fly","text\/vnd.fmi.flexstor":"flx","text\/vnd.graphviz":"gv","text\/vnd.in3d.3dml":"3dml","text\/vnd.in3d.spot":"spot","text\/vnd.sun.j2me.app-descriptor":"jad","text\/vnd.wap.wml":"wml","text\/vnd.wap.wmlscript":"wmls","text\/x-asm":"s","text\/x-c":"cc","text\/x-fortran":"f","text\/x-java-source":"java","text\/x-nfo":"nfo","text\/x-opml":"opml","text\/x-pascal":"p","text\/x-setext":"etx","text\/x-sfv":"sfv","text\/x-uuencode":"uu","text\/x-vcalendar":"vcs","text\/x-vcard":"vcf","video\/3gpp":"3gp","video\/3gpp2":"3g2","video\/h261":"h261","video\/h263":"h263","video\/h264":"h264","video\/jpeg":"jpgv","video\/jpm":"jpm","video\/mj2":"mj2","video\/mp4":"mp4","video\/mpeg":"mpeg","video\/quicktime":"qt","video\/vnd.dece.hd":"uvh","video\/vnd.dece.mobile":"uvm","video\/vnd.dece.pd":"uvp","video\/vnd.dece.sd":"uvs","video\/vnd.dece.video":"uvv","video\/vnd.dvb.file":"dvb","video\/vnd.fvt":"fvt","video\/vnd.mpegurl":"mxu","video\/vnd.ms-playready.media.pyv":"pyv","video\/vnd.uvvu.mp4":"uvu","video\/vnd.vivo":"viv","video\/webm":"webm","video\/x-f4v":"f4v","video\/x-fli":"fli","video\/x-flv":"flv","video\/x-m4v":"m4v","video\/x-matroska":"mkv","video\/x-mng":"mng","video\/x-ms-asf":"asf","video\/x-ms-vob":"vob","video\/x-ms-wmx":"wmx","video\/x-ms-wvx":"wvx","video\/x-msvideo":"avi","video\/x-sgi-movie":"movie","video\/x-smv":"smv","x-conference\/x-cooltalk":"ice","text\/x-sql":"sql","image\/x-pixlr-data":"pxd","image\/x-adobe-dng":"dng","image\/x-sketch":"sketch","image\/x-xcf":"xcf","audio\/amr":"amr","application\/plt":"plt","application\/sat":"sat","application\/step":"step","text\/x-httpd-cgi":"cgi","text\/x-asap":"asp","text\/x-jsp":"jsp"};

/*
 * File: /js/elFinder.options.js
 */

/**
 * Default elFinder config
 *
 * @type  Object
 * @autor Dmitry (dio) Levashov
 */
elFinder.prototype._options = {
	/**
	 * URLs of 3rd party libraries CDN
	 * 
	 * @type Object
	 */
	cdns : {
		// for editor etc.
		ace        : 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1',
		codemirror : 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.2',
		ckeditor   : 'https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.10.0',
		ckeditor5  : 'https://cdn.ckeditor.com/ckeditor5/11.1.1',
		tinymce    : 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.8.3',
		simplemde  : 'https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2',
		fabric16   : 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.7',
		tui        : 'https://uicdn.toast.com',
		// for quicklook etc.
		hls        : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.10.1/hls.min.js',
		dash       : 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/2.9.1/dash.all.min.js',
		flv        : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.4.2/flv.min.js',
		prettify   : 'https://cdn.jsdelivr.net/gh/google/code-prettify@453bd5f51e61245339b738b1bbdd42d7848722ba/loader/run_prettify.js',
		psd        : 'https://cdnjs.cloudflare.com/ajax/libs/psd.js/3.2.0/psd.min.js',
		rar        : 'https://cdn.jsdelivr.net/gh/nao-pon/rar.js@6cef13ec66dd67992fc7f3ea22f132d770ebaf8b/rar.min.js',
		zlibUnzip  : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/unzip.min.js', // need check unzipFiles() in quicklook.plugins.js when update
		zlibGunzip : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/gunzip.min.js',
		marked     : 'https://cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js',
		sparkmd5   : 'https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.0/spark-md5.min.js',
		jssha      : 'https://cdnjs.cloudflare.com/ajax/libs/jsSHA/2.3.1/sha.js',
		amr        : 'https://cdn.jsdelivr.net/gh/yxl/opencore-amr-js@dcf3d2b5f384a1d9ded2a54e4c137a81747b222b/js/amrnb.js'
	},
	
	/**
	 * Connector url. Required!
	 *
	 * @type String
	 */
	url : '',

	/**
	 * Ajax request type.
	 *
	 * @type String
	 * @default "get"
	 */
	requestType : 'get',
	
	/**
	 * Use CORS to connector url
	 * 
	 * @type Boolean|null  true|false|null(Auto detect)
	 */
	cors : null,

	/**
	 * Maximum number of concurrent connections on request
	 * 
	 * @type Number
	 * @default 3
	 */
	requestMaxConn : 3,

	/**
	 * Transport to send request to backend.
	 * Required for future extensions using websockets/webdav etc.
	 * Must be an object with "send" method.
	 * transport.send must return jQuery.Deferred() object
	 *
	 * @type Object
	 * @default null
	 * @example
	 *  transport : {
	 *    init : function(elfinderInstance) { },
	 *    send : function(options) {
	 *      var dfrd = jQuery.Deferred();
	 *      // connect to backend ...
	 *      return dfrd;
	 *    },
	 *    upload : function(data) {
	 *      var dfrd = jQuery.Deferred();
	 *      // upload ...
	 *      return dfrd;
	 *    }
	 *    
	 *  }
	 **/
	transport : {},

	/**
	 * URL to upload file to.
	 * If not set - connector URL will be used
	 *
	 * @type String
	 * @default  ''
	 */
	urlUpload : '',

	/**
	 * Allow to drag and drop to upload files
	 *
	 * @type Boolean|String
	 * @default  'auto'
	 */
	dragUploadAllow : 'auto',
	
	/**
	 * Confirmation dialog displayed at the time of overwriting upload
	 * 
	 * @type Boolean
	 * @default true
	 */
	overwriteUploadConfirm : true,
	
	/**
	 * Max size of chunked data of file upload
	 * 
	 * @type Number
	 * @default  10485760(10MB)
	 */
	uploadMaxChunkSize : 10485760,
	
	/**
	 * Regular expression of file name to exclude when uploading folder
	 * 
	 * @type Object
	 * @default { win: /^(?:desktop\.ini|thumbs\.db)$/i, mac: /^\.ds_store$/i }
	 */
	folderUploadExclude : {
		win: /^(?:desktop\.ini|thumbs\.db)$/i,
		mac: /^\.ds_store$/i
	},
	
	/**
	 * Timeout for upload using iframe
	 *
	 * @type Number
	 * @default  0 - no timeout
	 */
	iframeTimeout : 0,
	
	/**
	 * Data to append to all requests and to upload files
	 *
	 * @type Object
	 * @default  {}
	 */
	customData : {},
	
	/**
	 * Event listeners to bind on elFinder init
	 *
	 * @type Object
	 * @default  {}
	 */
	handlers : {},

	/**
	 * Any custom headers to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	customHeaders : {},

	/**
	 * Any custom xhrFields to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	xhrFields : {},

	/**
	 * Interface language
	 *
	 * @type String
	 * @default "en"
	 */
	lang : 'en',

	/**
	 * Base URL of elfFinder library starting from Manager HTML
	 * Auto detect when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	baseUrl : '',

	/**
	 * Base URL of i18n js files
	 * baseUrl + "js/i18n/" when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	i18nBaseUrl : '',
	
	/**
	 * Auto load required CSS
	 * `false` to disable this function or
	 * CSS URL Array to load additional CSS files
	 * 
	 * @type Boolean|Array
	 * @default true
	 */
	cssAutoLoad : true,

	/**
	 * Theme to load
	 * {"themeid" : "Theme CSS URL"} or
	 * {"themeid" : "Theme manifesto.json URL"} or
	 * Theme manifesto.json Object
	 * {
	 *   "themeid" : {
	 *     "name":"Theme Name",
	 *     "cssurls":"Theme CSS URL",
	 *     "author":"Author Name",
	 *     "email":"Author Email",
	 *     "license":"License",
	 *     "link":"Web Site URL",
	 *     "image":"Screen Shot URL",
	 *     "description":"Description"
	 *   }
	 * }
	 * 
	 * @type Object
	 */
	themes : {},

	/**
	 * Theme id to initial theme
	 * 
	 * @type String|Null
	 */
	theme : null,

	/**
	 * Maximum value of error dialog open at the same time
	 * 
	 * @type Number
	 */
	maxErrorDialogs : 5,

	/**
	 * Additional css class for filemanager node.
	 *
	 * @type String
	 */
	cssClass : '',

	/**
	 * Active commands list. '*' means all of the commands that have been load.
	 * If some required commands will be missed here, elFinder will add its
	 *
	 * @type Array
	 */
	commands : ['*'],
	// Available commands list
	//commands : [
	//	'archive', 'back', 'chmod', 'colwidth', 'copy', 'cut', 'download', 'duplicate', 'edit', 'extract',
	//	'forward', 'fullscreen', 'getfile', 'help', 'home', 'info', 'mkdir', 'mkfile', 'netmount', 'netunmount',
	//	'open', 'opendir', 'paste', 'places', 'quicklook', 'reload', 'rename', 'resize', 'restore', 'rm',
	//	'search', 'sort', 'up', 'upload', 'view', 'zipdl'
	//],
	
	/**
	 * Commands options.
	 *
	 * @type Object
	 **/
	commandsOptions : {
		// // configure shortcuts of any command
		// // add `shortcuts` property into each command
		// any_command_name : {
		// 	shortcuts : [] // for disable this command's shortcuts
		// },
		// any_command_name : {
		// 	shortcuts : function(fm, shortcuts) {
		// 		// for add `CTRL + E` for this command action
		// 		shortcuts[0]['pattern'] += ' ctrl+e';
		// 		return shortcuts;
		// 	}
		// },
		// any_command_name : {
		// 	shortcuts : function(fm, shortcuts) {
		// 		// for full customize of this command's shortcuts
		// 		return [ { pattern: 'ctrl+e ctrl+down numpad_enter' + (fm.OS != 'mac' && ' enter') } ];
		// 	}
		// },
		// "getfile" command options.
		getfile : {
			onlyURL  : false,
			// allow to return multiple files info
			multiple : false,
			// allow to return filers info
			folders  : false,
			// action after callback (""/"close"/"destroy")
			oncomplete : '',
			// action when callback is fail (""/"close"/"destroy")
			onerror : '',
			// get path before callback call
			getPath    : true, 
			// get image sizes before callback call
			getImgSize : false
		},
		open : {
			// HTTP method that request to the connector when item URL is not valid URL.
			// If you set to "get" will be displayed request parameter in the browser's location field
			// so if you want to conceal its parameters should be given "post".
			// Nevertheless, please specify "get" if you want to enable the partial request by HTTP Range header.
			method : 'post',
			// Where to open into : 'window'(default), 'tab' or 'tabs'
			// 'tabs' opens in each tabs
			into   : 'window',
			// Default command list of action when select file
			// String value that is 'Command Name' or 'Command Name1/CommandName2...'
			selectAction : 'open'
		},
		opennew : {
			// URL of to open elFinder manager
			// Default '' : Origin URL
			url : '',
			// Use search query of origin URL
			useOriginQuery : true
		},
		// "upload" command options.
		upload : {
			// Open elFinder upload dialog: 'button' OR Open system OS upload dialog: 'uploadbutton'
			ui : 'button'
		},
		// "download" command options.
		download : {
			// max request to download files when zipdl disabled
			maxRequests : 10,
			// minimum count of files to use zipdl
			minFilesZipdl : 2
		},
		// "quicklook" command options.
		quicklook : {
			autoplay : true,
			width    : 450,
			height   : 300,
			// ControlsList of HTML5 audio/video preview
			// see https://googlechrome.github.io/samples/media/controlslist.html
			mediaControlsList : '', // e.g. 'nodownload nofullscreen noremoteplayback'
			// Show toolbar of PDF preview (with <embed> tag)
			pdfToolbar : true,
			// Maximum characters length to preview
			textMaxlen : 2000,
			// quicklook window must be contained in elFinder node on window open (true|false)
			contain : false,
			// preview window into NavDock (0 : undocked | 1 : docked(show) | 2 : docked(hide))
			docked   : 0,
			// Docked preview height ('auto' or Number of pixel) 'auto' is setted to the Navbar width
			dockHeight : 'auto',
			// media auto play when docked
			dockAutoplay : false,
			// Google Maps API key (Require Maps JavaScript API)
			googleMapsApiKey : '',
			// Google Maps API Options
			googleMapsOpts : {
				maps : {},
				kml : {
					suppressInfoWindows : false,
					preserveViewport : false
				}
			},
			// ViewerJS (https://viewerjs.org/) Options
			// To enable this you need to place ViewerJS on the same server as elFinder and specify that URL in `url`.
			viewerjs : {
				url: '', // Example '/ViewerJS/index.html'
				mimes: ['application/pdf', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation']
			},
			// MIME types to CAD-Files and 3D-Models online viewer on sharecad.org
			// Example ['image/vnd.dwg', 'image/vnd.dxf', 'model/vnd.dwf', 'application/vnd.hp-hpgl', 'application/plt', 'application/step', 'model/iges', 'application/vnd.ms-pki.stl', 'application/sat', 'image/cgm', 'application/x-msmetafile']
			sharecadMimes : [],
			// MIME types to use Google Docs online viewer
			// Example ['application/pdf', 'image/tiff', 'application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/postscript', 'application/rtf']
			googleDocsMimes : [],
			// MIME types to use Microsoft Office Online viewer
			// Example ['application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation']
			// These MIME types override "googleDocsMimes"
			officeOnlineMimes : [],
			// File size (byte) threshold when using the dim command for obtain the image size necessary to image preview
			getDimThreshold : 200000,
			// MIME-Type regular expression that does not check empty files
			mimeRegexNotEmptyCheck : /^application\/vnd\.google-apps\./
		},
		// "quicklook" command options.
		edit : {
			// dialog width, integer(px) or integer+'%' (example: 650, '80%' ...)
			dialogWidth : void(0),
			// list of allowed mimetypes to edit of text files
			// if empty - any text files can be edited
			mimes : [],
			// MIME-types of text file to make as empty files
			makeTextMimes : ['text/plain', 'text/css', 'text/html'],
			// Use the editor stored in the browser
			// This value allowd overwrite with user preferences
			useStoredEditor : false,
			// Open the maximized editor window
			// This value allowd overwrite with user preferences
			editorMaximized : false,
			// edit files in wysisyg's
			editors : [
				// {
				// 	/**
				// 	 * editor info
				// 	 * @type  Object
				// 	 */
				// 	info : { name: 'Editor Name' },
				// 	/**
				// 	 * files mimetypes allowed to edit in current wysisyg
				// 	 * @type  Array
				// 	 */
				// 	mimes : ['text/html'], 
				// 	/**
				// 	 * HTML element for editing area (optional for text editor)
				// 	 * @type  String
				// 	 */
				// 	html : '<textarea></textarea>', 
				// 	/**
				// 	 * Initialize editing area node (optional for text editor)
				// 	 * 
				// 	 * @param  String  dialog DOM id
				// 	 * @param  Object  target file object
				// 	 * @param  String  target file content (text or Data URI Scheme(binary file))
				// 	 * @param  Object  elFinder instance
				// 	 * @type  Function
				// 	 */
				// 	init : function(id, file, content, fm) {
				// 		jQuery(this).attr('id', id + '-text').val(content);
				// 	},
				// 	/**
				// 	 * Get edited contents (optional for text editor)
				// 	 * @type  Function
				// 	 */
				// 	getContent : function() {
				// 		return jQuery(this).val();
				// 	},
				// 	/**
				// 	 * Called when "edit" dialog loaded.
				// 	 * Place to init wysisyg.
				// 	 * Can return wysisyg instance
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @return Object      editor instance|jQuery.Deferred(return instance on resolve())
				// 	 */
				// 	load : function(textarea) { },
				// 	/**
				// 	 * Called before "edit" dialog closed.
				// 	 * Place to destroy wysisyg instance.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	close : function(textarea, instance) { },
				// 	/**
				// 	 * Called before file content send to backend.
				// 	 * Place to update textarea content if needed.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	save : function(textarea, instance) {},
				// 	/**
				// 	 * Called after load() or save().
				// 	 * Set focus to wysisyg editor.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	focus : function(textarea, instance) {}
				// 	/**
				// 	 * Called after dialog resized..
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @param  Object      resize event object
				// 	 * @param  Object      data object
				// 	 * @return void
				// 	 */
				// 	resize : function(textarea, instance, event, data) {}
				// 
				// }
			],
			// Character encodings of select box
			encodings : ['Big5', 'Big5-HKSCS', 'Cp437', 'Cp737', 'Cp775', 'Cp850', 'Cp852', 'Cp855', 'Cp857', 'Cp858', 
				'Cp862', 'Cp866', 'Cp874', 'EUC-CN', 'EUC-JP', 'EUC-KR', 'GB18030', 'ISO-2022-CN', 'ISO-2022-JP', 'ISO-2022-KR', 
				'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 
				'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-13', 'ISO-8859-15', 'KOI8-R', 'KOI8-U', 'Shift-JIS', 
				'Windows-1250', 'Windows-1251', 'Windows-1252', 'Windows-1253', 'Windows-1254', 'Windows-1257'],
			// options for extra editors
			extraOptions : {
				// TUI Image Editor's options
				tuiImgEditOpts : {
					// Path prefix of icon-a.svg, icon-b.svg, icon-c.svg and icon-d.svg in the Theme. 
					// `iconsPath` MUST follow the same origin policy.
					iconsPath : void(0), // default is "./img/tui-"
					// Theme object
					theme : {}
				},
				// Pixo image editor constructor options - https://pixoeditor.com/
				// Require 'apikey' to enable it
				pixo: {
					apikey: ''
				},
				// Specify the Creative Cloud API key when using Creative SDK image editor of Creative Cloud.
				// You can get the API key at https://console.adobe.io/.
				creativeCloudApiKey : '',
				// Browsing manager URL for CKEditor, TinyMCE
				// Uses self location with the empty value or not defined.
				//managerUrl : 'elfinder.html'
				managerUrl : null,
				// CKEditor5' builds mode - 'classic', 'inline' or 'balloon' 
				ckeditor5Mode : 'balloon',
				// Setting for Online-Convert.com
				onlineConvert : {
					maxSize  : 100, // (MB) Max 100MB on free account
					showLink : true // It must be enabled with free account
				}
			}
		},
		search : {
			// Incremental search from the current view
			incsearch : {
				enable : true, // is enable true or false
				minlen : 1,    // minimum number of characters
				wait   : 500   // wait milliseconds
			},
			// Additional search types
			searchTypes : {
				// "SearchMime" is implemented in default
				SearchMime : {           // The key is search type that send to the connector
					name : 'btnMime',    // Button text to be processed in i18n()
					title : 'searchMime' // Button title to be processed in i18n()
				}
			}
		},
		// "info" command options.
		info : {
			// If the URL of the Directory is null,
			// it is assumed that the link destination is a URL to open the folder in elFinder
			nullUrlDirLinkSelf : true,
			// Information items to be hidden by default
			// These name are 'size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm' and your custom info items label
			hideItems : [],
			// Maximum file size (byte) to get file contents hash (md5, sha256 ...)
			showHashMaxsize : 104857600, // 100 MB
			// Array of hash algorisms to show on info dialog
			// These name are 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128' and 'shake256'
			showHashAlgorisms : ['md5', 'sha256'],
			custom : {
				// /**
				//  * Example of custom info `desc`
				//  */
				// desc : {
				// 	/**
				// 	 * Lable (require)
				// 	 * It is filtered by the `fm.i18n()`
				// 	 * 
				// 	 * @type String
				// 	 */
				// 	label : 'Description',
				// 	
				// 	/**
				// 	 * Template (require)
				// 	 * `{id}` is replaced in dialog.id
				// 	 * 
				// 	 * @type String
				// 	 */
				// 	tpl : '<div class="elfinder-info-desc"><span class="elfinder-spinner"></span></div>',
				// 	
				// 	/**
				// 	 * Restricts to mimetypes (optional)
				// 	 * Exact match or category match
				// 	 * 
				// 	 * @type Array
				// 	 */
				// 	mimes : ['text', 'image/jpeg', 'directory'],
				// 	
				// 	/**
				// 	 * Restricts to file.hash (optional)
				// 	 * 
				// 	 * @ type Regex
				// 	 */
				// 	hashRegex : /^l\d+_/,
				// 
				// 	/**
				// 	 * Request that asks for the description and sets the field (optional)
				// 	 * 
				// 	 * @type Function
				// 	 */
				// 	action : function(file, fm, dialog) {
				// 		fm.request({
				// 		data : { cmd : 'desc', target: file.hash },
				// 			preventDefault: true,
				// 		})
				// 		.fail(function() {
				// 			dialog.find('div.elfinder-info-desc').html(fm.i18n('unknown'));
				// 		})
				// 		.done(function(data) {
				// 			dialog.find('div.elfinder-info-desc').html(data.desc);
				// 		});
				// 	}
				// }
			}
		},
		mkdir: {
			// Enable automatic switching function ["New Folder" / "Into New Folder"] of toolbar buttton
			intoNewFolderToolbtn: false
		},
		resize: {
			// defalt status of snap to 8px grid of the jpeg image ("enable" or "disable")
			grid8px : 'disable',
			// Preset size array [width, height]
			presetSize : [[320, 240], [400, 400], [640, 480], [800,600]],
			// File size (bytes) threshold when using the `dim` command for obtain the image size necessary to start editing
			getDimThreshold : 204800,
			// File size (bytes) to request to get substitute image (400px) with the `dim` command
			dimSubImgSize : 307200
		},
		rm: {
			// If trash is valid, items moves immediately to the trash holder without confirm.
			quickTrash : true,
			// Maximum wait seconds when checking the number of items to into the trash
			infoCheckWait : 10,
			// Maximum number of items that can be placed into the Trash at one time
			toTrashMaxItems : 1000
		},
		help : {
			// Tabs to show
			view : ['about', 'shortcuts', 'help', 'integrations', 'debug'],
			// HTML source URL of the heip tab
			helpSource : ''
		},
		preference : {
			// dialog width
			width: 600,
			// dialog height
			height: 400,
			// tabs setting see preference.js : build()
			categories: null,
			// preference setting see preference.js : build()
			prefs: null,
			// language setting  see preference.js : build()
			langs: null,
			// Command list of action when select file
			// Array value are 'Command Name' or 'Command Name1/CommandName2...'
			selectActions : ['open', 'edit/download', 'resize/edit/download', 'download', 'quicklook']
		}
	},
	
	/**
	 * Callback for prepare boot up
	 * 
	 * - The this object in the function is an elFinder node
	 * - The first parameter is elFinder Instance
	 * - The second parameter is an object of other parameters
	 *   For now it can use `dfrdsBeforeBootup` Array
	 * 
	 * @type Function
	 * @default null
	 * @return void
	 */
	bootCallback : null,
	
	/**
	 * Callback for "getfile" commands.
	 * Required to use elFinder with WYSIWYG editors etc..
	 *
	 * @type Function
	 * @default null (command not active)
	 */
	getFileCallback : null,
	
	/**
	 * Default directory view. icons/list
	 *
	 * @type String
	 * @default "icons"
	 */
	defaultView : 'icons',
	
	/**
	 * Hash of default directory path to open
	 * 
	 * NOTE: This setting will be disabled if the target folder is specified in location.hash.
	 * 
	 * If you want to find the hash in Javascript
	 * can be obtained with the following code. (In the case of a standard hashing method)
	 * 
	 * var volumeId = 'l1_'; // volume id
	 * var path = 'path/to/target'; // without root path
	 * //var path = 'path\\to\\target'; // use \ on windows server
	 * var hash = volumeId + btoa(path).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '.').replace(/\.+$/, '');
	 * 
	 * @type String
	 * @default ""
	 */
	startPathHash : '',

	/**
	 * Emit a sound when a file is deleted
	 * Sounds are in sounds/ folder
	 * 
	 * @type Boolean
	 * @default true
	 */
	sound : true,
	
	/**
	 * UI plugins to load.
	 * Current dir ui and dialogs loads always.
	 * Here set not required plugins as folders tree/toolbar/statusbar etc.
	 *
	 * @type Array
	 * @default ['toolbar', 'tree', 'path', 'stat']
	 * @full ['toolbar', 'places', 'tree', 'path', 'stat']
	 */
	ui : ['toolbar', 'tree', 'path', 'stat'],
	
	/**
	 * Some UI plugins options.
	 * @type Object
	 */
	uiOptions : {
		// toolbar configuration
		toolbar : [
			['home', 'back', 'forward', 'up', 'reload'],
			['netmount'],
			['mkdir', 'mkfile', 'upload'],
			['open', 'download', 'getfile'],
			['undo', 'redo'],
			['copy', 'cut', 'paste', 'rm', 'empty', 'hide'],
			['duplicate', 'rename', 'edit', 'resize', 'chmod'],
			['selectall', 'selectnone', 'selectinvert'],
			['quicklook', 'info'],
			['extract', 'archive'],
			['search'],
			['view', 'sort'],
			['help'],
			['fullscreen']
		],
		// toolbar extra options
		toolbarExtra : {
			// also displays the text label on the button (true / false / 'none')
			displayTextLabel: false,
			// Exclude `displayTextLabel` setting UA type
			labelExcludeUA: ['Mobile'],
			// auto hide on initial open
			autoHideUA: ['Mobile'],
			// Initial setting value of hide button in toolbar setting
			defaultHides: ['home', 'reload'],
			// show Preference button ('none', 'auto', 'always')
			// If you do not include 'preference' in the context menu you should specify 'auto' or 'always'
			showPreferenceButton: 'none',
			// show Preference button into contextmenu of the toolbar (true / false)
			preferenceInContextmenu: true
		},
		// directories tree options
		tree : {
			// expand current root on init
			openRootOnLoad : true,
			// expand current work directory on open
			openCwdOnOpen  : true,
			// auto loading current directory parents and do expand their node.
			syncTree : true,
			// Maximum number of display of each child trees
			// The tree of directories with children exceeding this number will be split
			subTreeMax : 100,
			// Numbar of max connctions of subdirs request
			subdirsMaxConn : 2,
			// Number of max simultaneous processing directory of subdirs
			subdirsAtOnce : 5,
			// Durations of each animations
			durations : {
				slideUpDown : 'fast',
				autoScroll : 'fast'
			}
			// ,
			// /**
			//  * Add CSS class name to navbar directories (optional)
			//  * see: https://github.com/Studio-42/elFinder/pull/1061,
			//  *      https://github.com/Studio-42/elFinder/issues/1231
			//  * 
			//  * @type Function
			//  */
			// getClass: function(dir) {
			// 	// e.g. This adds the directory's name (lowercase) with prefix as a CSS class
			// 	return 'elfinder-tree-' + dir.name.replace(/[ "]/g, '').toLowerCase();
			// }
		},
		// navbar options
		navbar : {
			minWidth : 150,
			maxWidth : 500,
			// auto hide on initial open
			autoHideUA: [] // e.g. ['Mobile']
		},
		navdock : {
			// disabled navdock ui
			disabled : false,
			// percentage of initial maximum height to work zone
			initMaxHeight : '50%',
			// percentage of maximum height to work zone by user resize action
			maxHeight : '90%'
		},
		cwd : {
			// display parent folder with ".." name :)
			oldSchool : false,
			
			// fm.UA types array to show item select checkboxes e.g. ['All'] or ['Mobile'] etc. default: ['Touch']
			showSelectCheckboxUA : ['Touch'],
			
			// file info columns displayed
			listView : {
				// name is always displayed, cols are ordered
				// e.g. ['perm', 'date', 'size', 'kind', 'owner', 'group', 'mode']
				// mode: 'mode'(by `fileModeStyle` setting), 'modestr'(rwxr-xr-x) , 'modeoct'(755), 'modeboth'(rwxr-xr-x (755))
				// 'owner', 'group' and 'mode', It's necessary set volume driver option "statOwner" to `true`
				// for custom, characters that can be used in the name is `a-z0-9_`
				columns : ['perm', 'date', 'size', 'kind'],
				// override this if you want custom columns name
				// example
				// columnsCustomName : {
				//		date : 'Last modification',
				// 		kind : 'Mime type'
				// }
				columnsCustomName : {},
				// fixed list header colmun
				fixedHeader : true
			},

			// icons view setting
			iconsView : {
				// default icon size (0-3 in default CSS (cwd.css - elfinder-cwd-size[number]))
				size: 0,
				// number of maximum size (3 in default CSS (cwd.css - elfinder-cwd-size[number]))
				// uses in preference.js
				sizeMax: 3,
				// Name of each size
				sizeNames: {
					0: 'viewSmall',
					1: 'viewMedium',
					2: 'viewLarge',
					3: 'viewExtraLarge' 
				}
			},

			// /**
			//  * Add CSS class name to cwd directories (optional)
			//  * see: https://github.com/Studio-42/elFinder/pull/1061,
			//  *      https://github.com/Studio-42/elFinder/issues/1231
			//  * 
			//  * @type Function
			//  */
			// ,
			// getClass: function(file) {
			// 	// e.g. This adds the directory's name (lowercase) with prefix as a CSS class
			// 	return 'elfinder-cwd-' + file.name.replace(/[ "]/g, '').toLowerCase();
			//}
			
			//,
			//// Template placeholders replacement rules for overwrite. see ui/cwd.js replacement
			//replacement : {
			//	tooltip : function(f, fm) {
			//		var list = fm.viewType == 'list', // current view type
			//			query = fm.searchStatus.state == 2, // is in search results
			//			title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''),
			//			info  = '';
			//		if (query && f.path) {
			//			info = fm.escape(f.path.replace(/\/[^\/]*$/, ''));
			//		} else {
			//			info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, '&#13;') : '';
			//		}
			//		if (list) {
			//			info += (info? '&#13;' : '') + fm.escape(f.name);
			//		}
			//		return info? info + '&#13;' + title : title;
			//	}
			//}
		},
		path : {
			// Move to head of work zone without UI navbar
			toWorkzoneWithoutNavbar : true
		},
		dialog : {
			// Enable to auto focusing on mouse over in the target form element
			focusOnMouseOver : true
		},
		toast : {
			animate : {
				// to show
				showMethod: 'fadeIn', // fadeIn, slideDown, and show are built into jQuery
				showDuration: 300,    // milliseconds
				showEasing: 'swing',  // swing and linear are built into jQuery
				// timeout to hide
				timeOut: 3000,
				// to hide
				hideMethod: 'fadeOut',
				hideDuration: 1500,
				hideEasing: 'swing'
			}
		}
	},

	/**
	 * MIME regex of send HTTP header "Content-Disposition: inline" or allow preview in quicklook
	 * This option will overwrite by connector configuration
	 * 
	 * @type String
	 * @default '^(?:(?:image|video|audio)|text/plain|application/pdf$)'
	 * @example
	 *  dispInlineRegex : '.',  // is allow inline of all of MIME types
	 *  dispInlineRegex : '$^', // is not allow inline of all of MIME types
	 */
	dispInlineRegex : '^(?:(?:image|video|audio)|application/(?:x-mpegURL|dash\+xml)|(?:text/plain|application/pdf)$)',

	/**
	 * Display only required files by types
	 *
	 * @type Array
	 * @default []
	 * @example
	 *  onlyMimes : ["image"] - display all images
	 *  onlyMimes : ["image/png", "application/x-shockwave-flash"] - display png and flash
	 */
	onlyMimes : [],

	/**
	 * Custom files sort rules.
	 * All default rules (name/size/kind/date/perm/mode/owner/group) set in elFinder._sortRules
	 *
	 * @type {Object}
	 * @example
	 * sortRules : {
	 *   name : function(file1, file2) { return file1.name.toLowerCase().localeCompare(file2.name.toLowerCase()); }
	 * }
	 */
	sortRules : {},

	/**
	 * Default sort type.
	 *
	 * @type {String}
	 */
	sortType : 'name',
	
	/**
	 * Default sort order.
	 *
	 * @type {String}
	 * @default "asc"
	 */
	sortOrder : 'asc',
	
	/**
	 * Display folders first?
	 *
	 * @type {Boolean}
	 * @default true
	 */
	sortStickFolders : true,
	
	/**
	 * Sort also applies to the treeview (null: disable this feature)
	 *
	 * @type Boolean|null
	 * @default false
	 */
	sortAlsoTreeview : false,
	
	/**
	 * If true - elFinder will formating dates itself, 
	 * otherwise - backend date will be used.
	 *
	 * @type Boolean
	 */
	clientFormatDate : true,
	
	/**
	 * Show UTC dates.
	 * Required set clientFormatDate to true
	 *
	 * @type Boolean
	 */
	UTCDate : false,
	
	/**
	 * File modification datetime format.
	 * Value from selected language data  is used by default.
	 * Set format here to overwrite it.
	 *
	 * @type String
	 * @default  ""
	 */
	dateFormat : '',
	
	/**
	 * File modification datetime format in form "Yesterday 12:23:01".
	 * Value from selected language data is used by default.
	 * Set format here to overwrite it.
	 * Use $1 for "Today"/"Yesterday" placeholder
	 *
	 * @type String
	 * @default  ""
	 * @example "$1 H:m:i"
	 */
	fancyDateFormat : '',
	
	/**
	 * Style of file mode at cwd-list, info dialog
	 * 'string' (ex. rwxr-xr-x) or 'octal' (ex. 755) or 'both' (ex. rwxr-xr-x (755))
	 * 
	 * @type {String}
	 * @default 'both'
	 */
	fileModeStyle : 'both',
	
	/**
	 * elFinder width
	 *
	 * @type String|Number
	 * @default  "auto"
	 */
	width : 'auto',
	
	/**
	 * elFinder node height
	 * Number: pixcel or String: Number + "%"
	 *
	 * @type Number | String
	 * @default  400
	 */
	height : 400,
	
	/**
	 * Base node object or selector
	 * Element which is the reference of the height percentage
	 *
	 * @type Object|String
	 * @default null | jQuery(window) (if height is percentage)
	 **/
	heightBase : null,
	
	/**
	 * Make elFinder resizable if jquery ui resizable available
	 *
	 * @type Boolean
	 * @default  true
	 */
	resizable : true,
	
	/**
	 * Timeout before open notifications dialogs
	 *
	 * @type Number
	 * @default  500 (.5 sec)
	 */
	notifyDelay : 500,
	
	/**
	 * Position CSS, Width of notifications dialogs
	 *
	 * @type Object
	 * @default {position: {}, width : null} - Apply CSS definition
	 * position: CSS object | null (null: position center & middle)
	 */
	notifyDialog : {position: {}, width : null},
	
	/**
	 * Dialog contained in the elFinder node
	 * 
	 * @type Boolean
	 * @default false
	 */
	dialogContained : false,
	
	/**
	 * Allow shortcuts
	 *
	 * @type Boolean
	 * @default  true
	 */
	allowShortcuts : true,
	
	/**
	 * Remeber last opened dir to open it after reload or in next session
	 *
	 * @type Boolean
	 * @default  true
	 */
	rememberLastDir : true,
	
	/**
	 * Clear historys(elFinder) on reload(not browser) function
	 * Historys was cleared on Reload function on elFinder 2.0 (value is true)
	 * 
	 * @type Boolean
	 * @default  false
	 */
	reloadClearHistory : false,
	
	/**
	 * Use browser native history with supported browsers
	 *
	 * @type Boolean
	 * @default  true
	 */
	useBrowserHistory : true,
	
	/**
	 * Lazy load config.
	 * How many files display at once?
	 *
	 * @type Number
	 * @default  50
	 */
	showFiles : 50,
	
	/**
	 * Lazy load config.
	 * Distance in px to cwd bottom edge to start display files
	 *
	 * @type Number
	 * @default  50
	 */
	showThreshold : 50,
	
	/**
	 * Additional rule to valid new file name.
	 * By default not allowed empty names or '..'
	 * This setting does not have a sense of security.
	 *
	 * @type false|RegExp|function
	 * @default  false
	 * @example
	 *  disable names with spaces:
	 *  validName : /^[^\s]+$/,
	 */
	validName : false,
	
	/**
	 * Additional rule to filtering for browsing.
	 * This setting does not have a sense of security.
	 * 
	 * The object `this` is elFinder instance object in this function
	 *
	 * @type false|RegExp|function
	 * @default  false
	 * @example
	 *  show only png and jpg files:
	 *  fileFilter : /.*\.(png|jpg)$/i,
	 *  
	 *  show only image type files:
	 *  fileFilter : function(file) { return file.mime && file.mime.match(/^image\//i); },
	 */
	fileFilter : false,
	
	/**
	 * Backup name suffix.
	 *
	 * @type String
	 * @default  "~"
	 */
	backupSuffix : '~',
	
	/**
	 * Sync content interval
	 *
	 * @type Number
	 * @default  0 (do not sync)
	 */
	sync : 0,
	
	/**
	 * Sync start on load if sync value >= 1000
	 *
	 * @type     Bool
	 * @default  true
	 */
	syncStart : true,
	
	/**
	 * How many thumbnails create in one request
	 *
	 * @type Number
	 * @default  5
	 */
	loadTmbs : 5,
	
	/**
	 * Cookie option for browsersdoes not suppot localStorage
	 *
	 * @type Object
	 */
	cookie         : {
		expires : 30,
		domain  : '',
		path    : '/',
		secure  : false
	},
	
	/**
	 * Contextmenu config
	 *
	 * @type Object
	 */
	contextmenu : {
		// navbarfolder menu
		navbar : ['open', 'opennew', 'download', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', '|', 'archive', '|', 'places', 'info', 'chmod', 'netunmount'],
		// current directory menu
		cwd    : ['undo', 'redo', '|', 'back', 'up', 'reload', '|', 'upload', 'mkdir', 'mkfile', 'paste', '|', 'empty', 'hide', '|', 'view', 'sort', 'selectall', 'colwidth', '|', 'places', 'info', 'chmod', 'netunmount', '|', 'fullscreen'],
		// current directory file menu
		files  : ['getfile', '|' ,'open', 'opennew', 'download', 'opendir', 'quicklook', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', 'edit', 'resize', '|', 'archive', 'extract', '|', 'selectall', 'selectinvert', '|', 'places', 'info', 'chmod', 'netunmount']
	},

	/**
	 * elFinder node enable always
	 * This value will set to `true` if <body> has elFinder node only
	 * 
	 * @type     Bool
	 * @default  false
	 */
	enableAlways : false,
	
	/**
	 * elFinder node enable by mouse over
	 * 
	 * @type     Bool
	 * @default  true
	 */
	enableByMouseOver : true,

	/**
	 * Show window close confirm dialog
	 * Value is which state to show
	 * 'hasNotifyDialog', 'editingFile', 'hasSelectedItem' and 'hasClipboardData'
	 * 
	 * @type     Array
	 * @default  ['hasNotifyDialog', 'editingFile']
	 */
	windowCloseConfirm : ['hasNotifyDialog', 'editingFile'],

	/**
	 * Function decoding 'raw' string converted to unicode
	 * It is used instead of fm.decodeRawString(str)
	 * 
	 * @type Null|Function
	 */
	rawStringDecoder : typeof Encoding === 'object' && jQuery.isFunction(Encoding.convert)? function(str) {
		return Encoding.convert(str, {
			to: 'UNICODE',
			type: 'string'
		});
	} : null,

	/**
	 * Debug config
	 *
	 * @type Array|String('auto')|Boolean(true|false)
	 */
	// debug : true
	debug : ['error', 'warning', 'event-destroy']
};


/*
 * File: /js/elFinder.options.netmount.js
 */

/**
 * Default elFinder config of commandsOptions.netmount
 *
 * @type  Object
 */

elFinder.prototype._options.commandsOptions.netmount = {
	ftp: {
		name : 'FTP',
		inputs: {
			host     : jQuery('<input type="text"/>'),
			port     : jQuery('<input type="number" placeholder="21" class="elfinder-input-optional"/>'),
			path     : jQuery('<input type="text" value="/"/>'),
			user     : jQuery('<input type="text"/>'),
			pass     : jQuery('<input type="password" autocomplete="new-password"/>'),
			FTPS     : jQuery('<input type="checkbox" value="1" title="File Transfer Protocol over SSL/TLS"/>'),
			encoding : jQuery('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>'),
			locale   : jQuery('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>')
		}
	},
	dropbox2: elFinder.prototype.makeNetmountOptionOauth('dropbox2', 'Dropbox', 'Dropbox', {noOffline : true,
		root : '/',
		pathI18n : 'path',
		integrate : {
			title: 'Dropbox.com',
			link: 'https://www.dropbox.com'
		}
	}),
	googledrive: elFinder.prototype.makeNetmountOptionOauth('googledrive', 'Google Drive', 'Google', {
		integrate : {
			title: 'Google Drive',
			link: 'https://www.google.com/drive/'
		}
	}),
	onedrive: elFinder.prototype.makeNetmountOptionOauth('onedrive', 'One Drive', 'OneDrive', {
		integrate : {
			title: 'Microsoft OneDrive',
			link: 'https://onedrive.live.com'
		}
	}),
	box: elFinder.prototype.makeNetmountOptionOauth('box', 'Box', 'Box', {
		noOffline : true,
		integrate : {
			title: 'Box.com',
			link: 'https://www.box.com'
		}
	})
};


/*
 * File: /js/elFinder.history.js
 */

/**
 * @class elFinder.history
 * Store visited folders
 * and provide "back" and "forward" methods
 *
 * @author Dmitry (dio) Levashov
 */
elFinder.prototype.history = function(fm) {
		var self = this,
		/**
		 * Update history on "open" event?
		 *
		 * @type Boolean
		 */
		update = true,
		/**
		 * Directories hashes storage
		 *
		 * @type Array
		 */
		history = [],
		/**
		 * Current directory index in history
		 *
		 * @type Number
		 */
		current,
		/**
		 * Clear history
		 *
		 * @return void
		 */
		reset = function() {
			history = [fm.cwd().hash];
			current = 0;
			update  = true;
		},
		/**
		 * Browser native history object
		 */
		nativeHistory = (fm.options.useBrowserHistory && window.history && window.history.pushState)? window.history : null,
		/**
		 * Open prev/next folder
		 *
		 * @Boolen  open next folder?
		 * @return jQuery.Deferred
		 */
		go = function(fwd) {
			if ((fwd && self.canForward()) || (!fwd && self.canBack())) {
				update = false;
				return fm.exec('open', history[fwd ? ++current : --current]).fail(reset);
			}
			return jQuery.Deferred().reject();
		},
		/**
		 * Sets the native history.
		 *
		 * @param String thash target hash
		 */
		setNativeHistory = function(thash) {
			if (nativeHistory && (! nativeHistory.state || nativeHistory.state.thash !== thash)) {
				nativeHistory.pushState({thash: thash}, null, location.pathname + location.search + (thash? '#elf_' + thash : ''));
			}
		};
	
	/**
	 * Return true if there is previous visited directories
	 *
	 * @return Boolen
	 */
	this.canBack = function() {
		return current > 0;
	};
	
	/**
	 * Return true if can go forward
	 *
	 * @return Boolen
	 */
	this.canForward = function() {
		return current < history.length - 1;
	};
	
	/**
	 * Go back
	 *
	 * @return void
	 */
	this.back = go;
	
	/**
	 * Go forward
	 *
	 * @return void
	 */
	this.forward = function() {
		return go(true);
	};
	
	// bind to elfinder events
	fm.bind('init', function() {
		if (nativeHistory && !nativeHistory.state) {
			setNativeHistory(fm.startDir());
		}
	})
	.open(function() {
		var l = history.length,
			cwd = fm.cwd().hash;

		if (update) {
			current >= 0 && l > current + 1 && history.splice(current+1);
			history[history.length-1] != cwd && history.push(cwd);
			current = history.length - 1;
		}
		update = true;

		setNativeHistory(cwd);
	})
	.reload(fm.options.reloadClearHistory && reset);
	
};


/*
 * File: /js/elFinder.command.js
 */

/**
 * elFinder command prototype
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.command = function(fm) {
		/**
	 * elFinder instance
	 *
	 * @type  elFinder
	 */
	this.fm = fm;
	
	/**
	 * Command name, same as class name
	 *
	 * @type  String
	 */
	this.name = '';
	
	/**
	 * Dialog class name
	 *
	 * @type  String
	 */
	this.dialogClass = '';

	/**
	 * Command icon class name with out 'elfinder-button-icon-'
	 * Use this.name if it is empty
	 *
	 * @type  String
	 */
	this.className = '';

	/**
	 * Short command description
	 *
	 * @type  String
	 */
	this.title = '';
	
	/**
	 * Linked(Child) commands name
	 * They are loaded together when tthis command is loaded.
	 * 
	 * @type  Array
	 */
	this.linkedCmds = [];
	
	/**
	 * Current command state
	 *
	 * @example
	 * this.state = -1; // command disabled
	 * this.state = 0;  // command enabled
	 * this.state = 1;  // command active (for example "fullscreen" command while elfinder in fullscreen mode)
	 * @default -1
	 * @type  Number
	 */
	this.state = -1;
	
	/**
	 * If true, command can not be disabled by connector.
	 * @see this.update()
	 *
	 * @type  Boolen
	 */
	this.alwaysEnabled = false;
	
	/**
	 * Do not change dirctory on removed current work directory
	 * 
	 * @type  Boolen
	 */
	this.noChangeDirOnRemovedCwd = false;
	
	/**
	 * If true, this means command was disabled by connector.
	 * @see this.update()
	 *
	 * @type  Boolen
	 */
	this._disabled = false;
	
	/**
	 * If true, this command is disabled on serach results
	 * 
	 * @type  Boolean
	 */
	this.disableOnSearch = false;
	
	/**
	 * Call update() when event select fired
	 * 
	 * @type  Boolean
	 */
	this.updateOnSelect = true;
	
	/**
	 * Sync toolbar button title on change
	 * 
	 * @type  Boolean
	 */
	this.syncTitleOnChange = false;

	/**
	 * Keep display of the context menu when command execution
	 * 
	 * @type  Boolean
	 */
	this.keepContextmenu = false;
	
	/**
	 * elFinder events defaults handlers.
	 * Inside handlers "this" is current command object
	 *
	 * @type  Object
	 */
	this._handlers = {
		enable  : function() { this.update(void(0), this.value); },
		disable : function() { this.update(-1, this.value); },
		'open reload load sync'    : function() { 
			this._disabled = !(this.alwaysEnabled || this.fm.isCommandEnabled(this.name));
			this.update(void(0), this.value);
			this.change(); 
		}
	};
	
	/**
	 * elFinder events handlers.
	 * Inside handlers "this" is current command object
	 *
	 * @type  Object
	 */
	this.handlers = {};
	
	/**
	 * Shortcuts
	 *
	 * @type  Array
	 */
	this.shortcuts = [];
	
	/**
	 * Command options
	 *
	 * @type  Object
	 */
	this.options = {ui : 'button'};
	
	/**
	 * Callback functions on `change` event
	 * 
	 * @type  Array
	 */
	this.listeners = [];

	/**
	 * Prepare object -
	 * bind events and shortcuts
	 *
	 * @return void
	 */
	this.setup = function(name, opts) {
		var self = this,
			fm   = this.fm,
			setCallback = function(s) {
				var cb = s.callback || function(e) {
							fm.exec(self.name, void(0), {
							_userAction: true,
							_currentType: 'shortcut'
						});
					};
				s.callback = function(e) {
					var enabled, checks = {};
					if (self.enabled()) {
						if (fm.searchStatus.state < 2) {
							enabled = fm.isCommandEnabled(self.name);
						} else {
							jQuery.each(fm.selected(), function(i, h) {
								if (fm.optionsByHashes[h]) {
									checks[h] = true;
								} else {
									jQuery.each(fm.volOptions, function(id) {
										if (!checks[id] && h.indexOf(id) === 0) {
											checks[id] = true;
											return false;
										}
									});
								}
							});
							jQuery.each(checks, function(h) {
								enabled = fm.isCommandEnabled(self.name, h);
								if (! enabled) {
									return false;
								}
							});
						}
						if (enabled) {
							self.event = e;
							cb.call(self);
							delete self.event;
						}
					}
				};
			},
			i, s, sc;

		this.name      = name;
		this.title     = fm.messages['cmd'+name] ? fm.i18n('cmd'+name)
		               : ((this.extendsCmd && fm.messages['cmd'+this.extendsCmd]) ? fm.i18n('cmd'+this.extendsCmd) : name);
		this.options   = Object.assign({}, this.options, opts);
		this.listeners = [];
		this.dialogClass = 'elfinder-dialog-' + name;

		if (opts.shortcuts) {
			if (typeof opts.shortcuts === 'function') {
				sc = opts.shortcuts(this.fm, this.shortcuts);
			} else if (Array.isArray(opts.shortcuts)) {
				sc = opts.shortcuts;
			}
			this.shortcuts = sc || [];
		}

		if (this.updateOnSelect) {
			this._handlers.select = function() { this.update(void(0), this.value); };
		}

		jQuery.each(Object.assign({}, self._handlers, self.handlers), function(cmd, handler) {
			fm.bind(cmd, jQuery.proxy(handler, self));
		});

		for (i = 0; i < this.shortcuts.length; i++) {
			s = this.shortcuts[i];
			setCallback(s);
			!s.description && (s.description = this.title);
			fm.shortcut(s);
		}

		if (this.disableOnSearch) {
			fm.bind('search searchend', function() {
				self._disabled = this.type === 'search'? true : ! (this.alwaysEnabled || fm.isCommandEnabled(name));
				self.update(void(0), self.value);
			});
		}

		this.init();
	};

	/**
	 * Command specific init stuffs
	 *
	 * @return void
	 */
	this.init = function() {};

	/**
	 * Exec command
	 *
	 * @param  Array         target files hashes
	 * @param  Array|Object  command value
	 * @return jQuery.Deferred
	 */
	this.exec = function(files, opts) { 
		return jQuery.Deferred().reject(); 
	};
	
	this.getUndo = function(opts, resData) {
		return false;
	};
	
	/**
	 * Return true if command disabled.
	 *
	 * @return Boolen
	 */
	this.disabled = function() {
		return this.state < 0;
	};
	
	/**
	 * Return true if command enabled.
	 *
	 * @return Boolen
	 */
	this.enabled = function() {
		return this.state > -1;
	};
	
	/**
	 * Return true if command active.
	 *
	 * @return Boolen
	 */
	this.active = function() {
		return this.state > 0;
	};
	
	/**
	 * Return current command state.
	 * Must be overloaded in most commands
	 *
	 * @return Number
	 */
	this.getstate = function() {
		return -1;
	};
	
	/**
	 * Update command state/value
	 * and rize 'change' event if smth changed
	 *
	 * @param  Number  new state or undefined to auto update state
	 * @param  mixed   new value
	 * @return void
	 */
	this.update = function(s, v) {
		var state = this.state,
			value = this.value;

		if (this._disabled && this.fm.searchStatus === 0) {
			this.state = -1;
		} else {
			this.state = s !== void(0) ? s : this.getstate();
		}

		this.value = v;
		
		if (state != this.state || value != this.value) {
			this.change();
		}
	};
	
	/**
	 * Bind handler / fire 'change' event.
	 *
	 * @param  Function|undefined  event callback
	 * @return void
	 */
	this.change = function(c) {
		var cmd, i;
		
		if (typeof(c) === 'function') {
			this.listeners.push(c);			
		} else {
			for (i = 0; i < this.listeners.length; i++) {
				cmd = this.listeners[i];
				try {
					cmd(this.state, this.value);
				} catch (e) {
					this.fm.debug('error', e);
				}
			}
		}
		return this;
	};
	

	/**
	 * With argument check given files hashes and return list of existed files hashes.
	 * Without argument return selected files hashes.
	 *
	 * @param  Array|String|void  hashes
	 * @return Array
	 */
	this.hashes = function(hashes) {
		return hashes
			? jQuery.grep(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) ? true : false; })
			: fm.selected();
	};
	
	/**
	 * Return only existed files from given fils hashes | selected files
	 *
	 * @param  Array|String|void  hashes
	 * @return Array
	 */
	this.files = function(hashes) {
		var fm = this.fm;
		
		return hashes
			? jQuery.map(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) || null; })
			: fm.selectedFiles();
	};

	/**
	 * Wrapper to fm.dialog()
	 *
	 * @param  String|DOMElement  content
	 * @param  Object             options
	 * @return Object             jQuery element object
	 */
	this.fmDialog = function(content, options) {
		if (options.cssClass) {
			options.cssClass += ' ' + this.dialogClass;
		} else {
			options.cssClass = this.dialogClass;
		}
		return this.fm.dialog(content, options);
	};
};


/*
 * File: /js/elFinder.resources.js
 */

/**
 * elFinder resources registry.
 * Store shared data
 *
 * @type Object
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.resources = {
	'class' : {
		hover       : 'ui-state-hover',
		active      : 'ui-state-active',
		disabled    : 'ui-state-disabled',
		draggable   : 'ui-draggable',
		droppable   : 'ui-droppable',
		adroppable  : 'elfinder-droppable-active',
		cwdfile     : 'elfinder-cwd-file',
		cwd         : 'elfinder-cwd',
		tree        : 'elfinder-tree',
		treeroot    : 'elfinder-navbar-root',
		navdir      : 'elfinder-navbar-dir',
		navdirwrap  : 'elfinder-navbar-dir-wrapper',
		navarrow    : 'elfinder-navbar-arrow',
		navsubtree  : 'elfinder-navbar-subtree',
		navcollapse : 'elfinder-navbar-collapsed',
		navexpand   : 'elfinder-navbar-expanded',
		treedir     : 'elfinder-tree-dir',
		placedir    : 'elfinder-place-dir',
		searchbtn   : 'elfinder-button-search',
		editing     : 'elfinder-to-editing',
		preventback : 'elfinder-prevent-back',
		tabstab     : 'ui-state-default ui-tabs-tab ui-corner-top ui-tab',
		tabsactive  : 'ui-tabs-active ui-state-active'
	},
	tpl : {
		perms      : '<span class="elfinder-perms"/>',
		lock       : '<span class="elfinder-lock"/>',
		symlink    : '<span class="elfinder-symlink"/>',
		navicon    : '<span class="elfinder-nav-icon"/>',
		navspinner : '<span class="elfinder-spinner elfinder-navbar-spinner"/>',
		navdir     : '<div class="elfinder-navbar-wrapper{root}"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"><span class="elfinder-navbar-arrow"/><span class="elfinder-navbar-icon" {style}/>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"/></div>',
		placedir   : '<div class="elfinder-navbar-wrapper"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}" title="{title}"><span class="elfinder-navbar-arrow"/><span class="elfinder-navbar-icon" {style}/>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"/></div>'
		
	},
	// mimes.text will be overwritten with connector config if `textMimes` is included in initial response
	// @see php/elFInder.class.php `public static $textMimes`
	mimes : {
		text : [
			'application/dash+xml',
			'application/docbook+xml',
			'application/javascript',
			'application/json',
			'application/plt',
			'application/sat',
			'application/sql',
			'application/step',
			'application/vnd.hp-hpgl',
			'application/x-awk',
			'application/x-config',
			'application/x-csh',
			'application/x-empty',
			'application/x-mpegurl',
			'application/x-perl',
			'application/x-php',
			'application/x-web-config',
			'application/xhtml+xml',
			'application/xml',
			'audio/x-mp3-playlist',
			'image/cgm',
			'image/svg+xml',
			'image/vnd.dxf',
			'model/iges'
		]
	},
	
	mixin : {
		make : function() {
						var self = this,
				fm   = this.fm,
				cmd  = this.name,
				req  = this.requestCmd || cmd,
				wz   = fm.getUI('workzone'),
				org  = (this.origin && this.origin === 'navbar')? 'tree' : 'cwd',
				tree = (org === 'tree'),
				find = tree? 'navHash2Elm' : 'cwdHash2Elm',
				tarea= (! tree && fm.storage('view') != 'list'),
				sel  = fm.selected(),
				move = this.move || false,
				empty= wz.hasClass('elfinder-cwd-wrapper-empty'),
				unselect = function() {
					requestAnimationFrame(function() {
						input && input.trigger('blur');
					});
				},
				rest = function(){
					if (!overlay.is(':hidden')) {
						overlay.elfinderoverlay('hide').off('click close', cancel);
					}
					pnode.removeClass('ui-front')
						.css('position', '')
						.off('unselect.'+fm.namespace, unselect);
					if (tarea) {
						nnode && nnode.css('max-height', '');
					} else if (!tree) {
						pnode.css('width', '')
							.parent('td').css('overflow', '');
					}
				}, colwidth,
				dfrd = jQuery.Deferred()
					.fail(function(error) {
						dstCls && dst.attr('class', dstCls);
						empty && wz.addClass('elfinder-cwd-wrapper-empty');
						if (sel) {
							move && fm.trigger('unlockfiles', {files: sel});
							fm.clipboard([]);
							fm.trigger('selectfiles', { files: sel });
						}
						error && fm.error(error);
					})
					.always(function() {
						rest();
						cleanup();
						fm.enable().unbind('open', openCallback).trigger('resMixinMake');
					}),
				id    = 'tmp_'+parseInt(Math.random()*100000),
				phash = this.data && this.data.target? this.data.target : (tree? fm.file(sel[0]).hash : fm.cwd().hash),
				date = new Date(),
				file   = {
					hash  : id,
					phash : phash,
					name  : fm.uniqueName(this.prefix, phash),
					mime  : this.mime,
					read  : true,
					write : true,
					date  : 'Today '+date.getHours()+':'+date.getMinutes(),
					move  : move
				},
				dum = fm.getUI(org).trigger('create.'+fm.namespace, file),
				data = this.data || {},
				node = fm[find](id),
				nnode, pnode,
				overlay = fm.getUI('overlay'),
				cleanup = function() {
					if (node && node.length) {
						input.off();
						node.hide();
						fm.unselectfiles({files : [id]}).unbind('resize', resize);
						requestAnimationFrame(function() {
							if (tree) {
								node.closest('.elfinder-navbar-wrapper').remove();
							} else {
								node.remove();
							}
						});
					}
				},
				cancel = function(e) { 
					if (!overlay.is(':hidden')) {
						pnode.css('z-index', '');
					}
					if (! inError) {
						cleanup();
						dfrd.reject();
						if (e) {
							e.stopPropagation();
							e.preventDefault();
						}
					}
				},
				input = jQuery(tarea? '<textarea/>' : '<input type="text"/>')
					.on('keyup text', function(){
						if (tarea) {
							this.style.height = '1px';
							this.style.height = this.scrollHeight + 'px';
						} else if (colwidth) {
							this.style.width = colwidth + 'px';
							if (this.scrollWidth > colwidth) {
								this.style.width = this.scrollWidth + 10 + 'px';
							}
						}
					})
					.on('keydown', function(e) {
						e.stopImmediatePropagation();
						if (e.keyCode == jQuery.ui.keyCode.ESCAPE) {
							dfrd.reject();
						} else if (e.keyCode == jQuery.ui.keyCode.ENTER) {
							e.preventDefault();
							input.trigger('blur');
						}
					})
					.on('mousedown click dblclick', function(e) {
						e.stopPropagation();
						if (e.type === 'dblclick') {
							e.preventDefault();
						}
					})
					.on('blur', function() {
						var name   = jQuery.trim(input.val()),
							parent = input.parent(),
							valid  = true,
							cut;

						if (!overlay.is(':hidden')) {
							pnode.css('z-index', '');
						}
						if (name === '') {
							return cancel();
						}
						if (!inError && parent.length) {

							if (fm.options.validName && fm.options.validName.test) {
								try {
									valid = fm.options.validName.test(name);
								} catch(e) {
									valid = false;
								}
							}
							if (!name || name === '.' || name === '..' || !valid) {
								inError = true;
								fm.error(file.mime === 'directory'? 'errInvDirname' : 'errInvName', {modal: true, close: function(){setTimeout(select, 120);}});
								return false;
							}
							if (fm.fileByName(name, phash)) {
								inError = true;
								fm.error(['errExists', name], {modal: true, close: function(){setTimeout(select, 120);}});
								return false;
							}

							cut = (sel && move)? fm.exec('cut', sel) : null;

							jQuery.when(cut)
							.done(function() {
								var toast   = {},
									nextAct = {};
								
								rest();
								input.hide().before(jQuery('<span>').text(name));

								fm.lockfiles({files : [id]});

								fm.request({
										data        : Object.assign({cmd : req, name : name, target : phash}, data || {}), 
										notify      : {type : req, cnt : 1},
										preventFail : true,
										syncOnFail  : true,
										navigate    : {toast : toast},
									})
									.fail(function(error) {
										fm.unlockfiles({files : [id]});
										inError = true;
										input.show().prev().remove();
										fm.error(error, {
											modal: true,
											close: function() {
												if (Array.isArray(error) && jQuery.inArray('errUploadMime', error) !== -1) {
													dfrd.notify('errUploadMime').reject();
												} else {
													setTimeout(select, 120);
												}
											}
										});
									})
									.done(function(data) {
										if (data && data.added && data.added[0]) {
											var item    = data.added[0],
												dirhash = item.hash,
												newItem = fm[find](dirhash),
												acts    = {
													'directory' : { cmd: 'open', msg: 'cmdopendir' },
													'text'      : { cmd: 'edit', msg: 'cmdedit' },
													'default'   : { cmd: 'open', msg: 'cmdopen' }
												},
												tmpMimes;
											if (sel && move) {
												fm.one(req+'done', function() {
													fm.exec('paste', dirhash);
												});
											}
											if (!move) {
												if (fm.mimeIsText(item.mime) && !fm.mimesCanMakeEmpty[item.mime] && fm.mimeTypes[item.mime]) {
													fm.trigger('canMakeEmptyFile', {mimes: [item.mime], unshift: true});
													tmpMimes = {};
													tmpMimes[item.mime] = fm.mimeTypes[item.mime];
													fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {}));
												}
												Object.assign(nextAct, nextAction || acts[item.mime] || acts[item.mime.split('/')[0]] || acts[(fm.mimesCanMakeEmpty[item.mime] || jQuery.inArray(item.mime, fm.resources.mimes.text) !== -1) ? 'text' : 'none'] || acts['default']);
												Object.assign(toast, nextAct.cmd ? {
													incwd    : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)]), action: nextAct},
													inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)]), action: nextAct}
												} : {
													inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd'+cmd)])}
												});
											}
										}
										dfrd.resolve(data);
									});
							})
							.fail(function() {
								dfrd.reject();
							});
						}
					})
					.on('dragenter dragleave dragover drop', function(e) {
						// stop bubbling to prevent upload with native drop event
						e.stopPropagation();
					}),
				select = function() {
					var name = fm.splitFileExtention(input.val())[0];
					if (!inError && fm.UA.Mobile && !fm.UA.iOS) { // since iOS has a bug? (z-index not effect) so disable it
						overlay.on('click close', cancel).elfinderoverlay('show');
						pnode.css('z-index', overlay.css('z-index') + 1);
					}
					inError = false;
					! fm.enabled() && fm.enable();
					input.trigger('focus').trigger('select');
					input[0].setSelectionRange && input[0].setSelectionRange(0, name.length);
				},
				resize = function() {
					node.trigger('scrolltoview', {blink : false});
				},
				openCallback = function() {
					dfrd && (dfrd.state() === 'pending') && dfrd.reject();
				},
				inError = false,
				nextAction,
				// for tree
				dst, dstCls, collapsed, expanded, arrow, subtree;

			if (!fm.isCommandEnabled(req, phash) || !node.length) {
				return dfrd.reject();
			}

			if (jQuery.isPlainObject(self.nextAction)){
				nextAction = Object.assign({}, self.nextAction);
			}
			
			if (tree) {
				dst = fm[find](phash);
				collapsed = fm.res('class', 'navcollapse');
				expanded  = fm.res('class', 'navexpand');
				arrow = fm.res('class', 'navarrow');
				subtree = fm.res('class', 'navsubtree');
				
				node.closest('.'+subtree).show();
				if (! dst.hasClass(collapsed)) {
					dstCls = dst.attr('class');
					dst.addClass(collapsed+' '+expanded+' elfinder-subtree-loaded');
				}
				if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
					dst.children('.'+arrow).trigger('click').data('dfrd').done(function() {
						if (input.val() === file.name) {
							input.val(fm.uniqueName(self.prefix, phash)).trigger('select').trigger('focus');
						}
					});
				}
				nnode = node.contents().filter(function(){ return this.nodeType==3 && jQuery(this).parent().attr('id') === fm.navHash2Id(file.hash); });
				pnode = nnode.parent();
				nnode.replaceWith(input.val(file.name));
			} else {
				empty && wz.removeClass('elfinder-cwd-wrapper-empty');
				nnode = node.find('.elfinder-cwd-filename');
				pnode = nnode.parent();
				if (tarea) {
					nnode.css('max-height', 'none');
				} else {
					colwidth = pnode.width();
					pnode.width(colwidth - 15)
						.parent('td').css('overflow', 'visible');
				}
				nnode.empty().append(input.val(file.name));
			}
			pnode.addClass('ui-front')
				.css('position', 'relative')
				.on('unselect.'+fm.namespace, unselect);
			
			fm.bind('resize', resize).one('open', openCallback);
			
			input.trigger('keyup');
			select();

			return dfrd;

		}
	},
	blink: function(elm, mode) {
				var acts = {
			slowonce : function(){elm.hide().delay(250).fadeIn(750).delay(500).fadeOut(3500);},
			lookme   : function(){elm.show().fadeOut(500).fadeIn(750);}
		}, func;
		mode = mode || 'slowonce';
		
		func = acts[mode] || acts['lookme'];
		
		elm.stop(true, true);
		func();
	}
};


/*
 * File: /js/jquery.dialogelfinder.js
 */

/**
 * @class dialogelfinder - open elFinder in dialog window
 *
 * @param  Object  elFinder options with dialog options
 * @example
 * jQuery(selector).dialogelfinder({
 *     // some elfinder options
 *     title          : 'My files', // dialog title, default = "Files"
 *     width          : 850,        // dialog width, default 840
 *     autoOpen       : false,      // if false - dialog will not be opened after init, default = true
 *     destroyOnClose : true        // destroy elFinder on close dialog, default = false
 * })
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.dialogelfinder = function(opts) {
		var position = 'elfinderPosition',
		destroy  = 'elfinderDestroyOnClose',
		node;
	
	this.not('.elfinder').each(function() {

		
		var doc     = jQuery(document),
			toolbar = jQuery('<div class="ui-widget-header dialogelfinder-drag ui-corner-top">'+(opts.title || 'Files')+'</div>'),
			button  = jQuery('<a href="#" class="dialogelfinder-drag-close ui-corner-all"><span class="ui-icon ui-icon-closethick"> </span></a>')
				.appendTo(toolbar)
				.on('click', function(e) {
					e.preventDefault();
					
					node.dialogelfinder('close');
				}),
			node    = jQuery(this).addClass('dialogelfinder')
				.css('position', 'absolute')
				.hide()
				.appendTo('body')
				.draggable({
					handle : '.dialogelfinder-drag',
					containment : 'window',
					stop : function() {
						node.trigger('resize');
						elfinder.trigger('resize');
					}
				})
				.elfinder(opts)
				.prepend(toolbar),
			elfinder = node.elfinder('instance');
		
		
		node.width(parseInt(node.width()) || 840) // fix width if set to "auto"
			.data(destroy, !!opts.destroyOnClose)
			.find('.elfinder-toolbar').removeClass('ui-corner-top');
		
		opts.position && node.data(position, opts.position);
		
		opts.autoOpen !== false && jQuery(this).dialogelfinder('open');

	});
	
	if (opts == 'open') {
		var node = jQuery(this),
			pos  = node.data(position) || {
				top  : parseInt(jQuery(document).scrollTop() + (jQuery(window).height() < node.height() ? 2 : (jQuery(window).height() - node.height())/2)),
				left : parseInt(jQuery(document).scrollLeft() + (jQuery(window).width() < node.width()  ? 2 : (jQuery(window).width()  - node.width())/2))
			};

		if (node.is(':hidden')) {
			node.addClass('ui-front').css(pos).show().trigger('resize');

			setTimeout(function() {
				// fix resize icon position and make elfinder active
				node.trigger('resize').trigger('mousedown');
			}, 200);
		}
	} else if (opts == 'close') {
		node = jQuery(this).removeClass('ui-front');
			
		if (node.is(':visible')) {
			!!node.data(destroy)
				? node.elfinder('destroy').remove()
				: node.elfinder('close');
		}
	} else if (opts == 'instance') {
		return jQuery(this).getElFinder();
	}

	return this;
};


/*
 * File: /js/i18n/elfinder.en.js
 */

/**
 * English translation
 * @author Troex Nevelin <troex@fury.scancode.ru>
 * @author Naoki Sawada <hypweb+elfinder@gmail.com>
 * @version 2018-12-09
 */
// elfinder.en.js is integrated into elfinder.(full|min).js by jake build
if (typeof elFinder === 'function' && elFinder.prototype.i18) {
	elFinder.prototype.i18.en = {
		translator : 'Troex Nevelin &lt;troex@fury.scancode.ru&gt;, Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;',
		language   : 'English',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // will show like: Aug 24, 2018 04:39 PM
		fancyDateFormat : '$1 h:i A', // will show like: Today 04:39 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163916
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Unknown error.',
			'errUnknownCmd'        : 'Unknown command.',
			'errJqui'              : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.',
			'errNode'              : 'elFinder requires DOM Element to be created.',
			'errURL'               : 'Invalid elFinder configuration! URL option is not set.',
			'errAccess'            : 'Access denied.',
			'errConnect'           : 'Unable to connect to backend.',
			'errAbort'             : 'Connection aborted.',
			'errTimeout'           : 'Connection timeout.',
			'errNotFound'          : 'Backend not found.',
			'errResponse'          : 'Invalid backend response.',
			'errConf'              : 'Invalid backend configuration.',
			'errJSON'              : 'PHP JSON module not installed.',
			'errNoVolumes'         : 'Readable volumes not available.',
			'errCmdParams'         : 'Invalid parameters for command "$1".',
			'errDataNotJSON'       : 'Data is not JSON.',
			'errDataEmpty'         : 'Data is empty.',
			'errCmdReq'            : 'Backend request requires command name.',
			'errOpen'              : 'Unable to open "$1".',
			'errNotFolder'         : 'Object is not a folder.',
			'errNotFile'           : 'Object is not a file.',
			'errRead'              : 'Unable to read "$1".',
			'errWrite'             : 'Unable to write into "$1".',
			'errPerm'              : 'Permission denied.',
			'errLocked'            : '"$1" is locked and can not be renamed, moved or removed.',
			'errExists'            : 'Item named "$1" already exists.',
			'errInvName'           : 'Invalid file name.',
			'errInvDirname'        : 'Invalid folder name.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Folder not found.',
			'errFileNotFound'      : 'File not found.',
			'errTrgFolderNotFound' : 'Target folder "$1" not found.',
			'errPopup'             : 'Browser prevented opening popup window. To open file enable it in browser options.',
			'errMkdir'             : 'Unable to create folder "$1".',
			'errMkfile'            : 'Unable to create file "$1".',
			'errRename'            : 'Unable to rename "$1".',
			'errCopyFrom'          : 'Copying files from volume "$1" not allowed.',
			'errCopyTo'            : 'Copying files to volume "$1" not allowed.',
			'errMkOutLink'         : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload error.',  // old name - errUploadCommon
			'errUploadFile'        : 'Unable to upload "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'No files found for upload.',
			'errUploadTotalSize'   : 'Data exceeds the maximum allowed size.', // old name - errMaxSize
			'errUploadFileSize'    : 'File exceeds maximum allowed size.', //  old name - errFileMaxSize
			'errUploadMime'        : 'File type not allowed.',
			'errUploadTransfer'    : '"$1" transfer error.',
			'errUploadTemp'        : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Unable to save "$1".',
			'errCopy'              : 'Unable to copy "$1".',
			'errMove'              : 'Unable to move "$1".',
			'errCopyInItself'      : 'Unable to copy "$1" into itself.',
			'errRm'                : 'Unable to remove "$1".',
			'errTrash'             : 'Unable into trash.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Unable to extract files from "$1".',
			'errArchive'           : 'Unable to create archive.',
			'errArcType'           : 'Unsupported archive type.',
			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
			'errCmdNoSupport'      : 'Backend does not support this command.',
			'errReplByChild'       : 'The folder "$1" can\'t be replaced by an item it contains.',
			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
			'errResize'            : 'Unable to resize "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
			'errUsupportType'      : 'Unsupported file type.',
			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			'errNetUnMount'        : 'Unable to unmount.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Create archive',
			'cmdback'      : 'Back',
			'cmdcopy'      : 'Copy',
			'cmdcut'       : 'Cut',
			'cmddownload'  : 'Download',
			'cmdduplicate' : 'Duplicate',
			'cmdedit'      : 'Edit file',
			'cmdextract'   : 'Extract files from archive',
			'cmdforward'   : 'Forward',
			'cmdgetfile'   : 'Select files',
			'cmdhelp'      : 'About this software',
			'cmdhome'      : 'Root',
			'cmdinfo'      : 'Get info & Share',
			'cmdmkdir'     : 'New folder',
			'cmdmkdirin'   : 'Into New Folder', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'New file',
			'cmdopen'      : 'Open',
			'cmdpaste'     : 'Paste',
			'cmdquicklook' : 'Preview',
			'cmdreload'    : 'Reload',
			'cmdrename'    : 'Rename',
			'cmdrm'        : 'Delete',
			'cmdtrash'     : 'Into trash', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restore', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Find files',
			'cmdup'        : 'Go to parent folder',
			'cmdupload'    : 'Upload files',
			'cmdview'      : 'View',
			'cmdresize'    : 'Resize & Rotate',
			'cmdsort'      : 'Sort',
			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'To Places', // added 28.12.2014
			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Open a folder', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Empty the folder', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Undo', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Redo', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Open in new window', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Hide (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Close',
			'btnSave'   : 'Save',
			'btnRm'     : 'Remove',
			'btnApply'  : 'Apply',
			'btnCancel' : 'Cancel',
			'btnNo'     : 'No',
			'btnYes'    : 'Yes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rename',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Open folder',
			'ntffile'     : 'Open file',
			'ntfreload'   : 'Reload folder content',
			'ntfmkdir'    : 'Creating folder',
			'ntfmkfile'   : 'Creating files',
			'ntfrm'       : 'Delete items',
			'ntfcopy'     : 'Copy items',
			'ntfmove'     : 'Move items',
			'ntfprepare'  : 'Checking existing items',
			'ntfrename'   : 'Rename files',
			'ntfupload'   : 'Uploading files',
			'ntfdownload' : 'Downloading files',
			'ntfsave'     : 'Save files',
			'ntfarchive'  : 'Creating archive',
			'ntfextract'  : 'Extracting files from archive',
			'ntfsearch'   : 'Searching files',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Doing something',
			'ntfloadimg'  : 'Loading image',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'unknown',
			'Today'       : 'Today',
			'Yesterday'   : 'Yesterday',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'May',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'January',
			'February'    : 'February',
			'March'       : 'March',
			'April'       : 'April',
			'May'         : 'May',
			'June'        : 'June',
			'July'        : 'July',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'October',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Sunday',
			'Monday'      : 'Monday',
			'Tuesday'     : 'Tuesday',
			'Wednesday'   : 'Wednesday',
			'Thursday'    : 'Thursday',
			'Friday'      : 'Friday',
			'Saturday'    : 'Saturday',
			'Sun'         : 'Sun',
			'Mon'         : 'Mon',
			'Tue'         : 'Tue',
			'Wed'         : 'Wed',
			'Thu'         : 'Thu',
			'Fri'         : 'Fri',
			'Sat'         : 'Sat',

			/******************************** sort variants ********************************/
			'sortname'          : 'by name',
			'sortkind'          : 'by kind',
			'sortsize'          : 'by size',
			'sortdate'          : 'by date',
			'sortFoldersFirst'  : 'Folders first',
			'sortperm'          : 'by permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'by group',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation required',
			'confirmRm'       : 'Are you sure you want to permanently remove items?<br/>This cannot be undone!',
			'confirmRepl'     : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)',
			'confirmRest'     : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
			'apllyAll'        : 'Apply to all',
			'name'            : 'Name',
			'size'            : 'Size',
			'perms'           : 'Permissions',
			'modify'          : 'Modified',
			'kind'            : 'Kind',
			'read'            : 'read',
			'write'           : 'write',
			'noaccess'        : 'no access',
			'and'             : 'and',
			'unknown'         : 'unknown',
			'selectall'       : 'Select all items',
			'selectfiles'     : 'Select item(s)',
			'selectffile'     : 'Select first item',
			'selectlfile'     : 'Select last item',
			'viewlist'        : 'List view',
			'viewicons'       : 'Icons view',
			'viewSmall'       : 'Small icons', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium icons', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Large icons', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra large icons', // from v2.1.39 added 22.5.2018
			'places'          : 'Places',
			'calc'            : 'Calculate',
			'path'            : 'Path',
			'aliasfor'        : 'Alias for',
			'locked'          : 'Locked',
			'dim'             : 'Dimensions',
			'files'           : 'Files',
			'folders'         : 'Folders',
			'items'           : 'Items',
			'yes'             : 'yes',
			'no'              : 'no',
			'link'            : 'Link',
			'searcresult'     : 'Search results',
			'selected'        : 'selected items',
			'about'           : 'About',
			'shortcuts'       : 'Shortcuts',
			'help'            : 'Help',
			'webfm'           : 'Web file manager',
			'ver'             : 'Version',
			'protocolver'     : 'protocol version',
			'homepage'        : 'Project home',
			'docs'            : 'Documentation',
			'github'          : 'Fork us on GitHub',
			'twitter'         : 'Follow us on Twitter',
			'facebook'        : 'Join us on Facebook',
			'team'            : 'Team',
			'chiefdev'        : 'chief developer',
			'developer'       : 'developer',
			'contributor'     : 'contributor',
			'maintainer'      : 'maintainer',
			'translator'      : 'translator',
			'icons'           : 'Icons',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'Shortcuts disabled',
			'dropFiles'       : 'Drop files here',
			'or'              : 'or',
			'selectForUpload' : 'Select files',
			'moveFiles'       : 'Move items',
			'copyFiles'       : 'Copy items',
			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'Aspect ratio',
			'scale'           : 'Scale',
			'width'           : 'Width',
			'height'          : 'Height',
			'resize'          : 'Resize',
			'crop'            : 'Crop',
			'rotate'          : 'Rotate',
			'rotate-cw'       : 'Rotate 90 degrees CW',
			'rotate-ccw'      : 'Rotate 90 degrees CCW',
			'degree'          : '°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			'confirmUnmount'      : 'Are you sure to unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Owner', // from v2.1 added 20.6.2015
			'group'           : 'Group', // from v2.1 added 20.6.2015
			'other'           : 'Other', // from v2.1 added 20.6.2015
			'execute'         : 'Execute', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Folder is empty', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
			'quality'         : 'Quality', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Background color', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Search results is empty in current view.\\A Press [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'Language', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbar settings', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Rough file size', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Select', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action when select file', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invert selection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch rename', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Number', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Add prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Add suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Selection Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Work Space', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'All', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Show hidden items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Hide hidden items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type of the Text file', // from v2.1.41 added 7.8.2018
			'add'             : 'Add', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Author', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unknown',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Folder',
			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Postscript document',
			'kindMsOffice'    : 'Microsoft Office document',
			'kindMsWord'      : 'Microsoft Word document',
			'kindMsExcel'     : 'Microsoft Excel document',
			'kindMsPP'        : 'Microsoft Powerpoint presentation',
			'kindOO'          : 'Open Office document',
			'kindAppFlash'    : 'Flash application',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent file',
			'kind7z'          : '7z archive',
			'kindTAR'         : 'TAR archive',
			'kindGZIP'        : 'GZIP archive',
			'kindBZIP'        : 'BZIP archive',
			'kindXZ'          : 'XZ archive',
			'kindZIP'         : 'ZIP archive',
			'kindRAR'         : 'RAR archive',
			'kindJAR'         : 'Java JAR file',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM package',
			// texts
			'kindText'        : 'Text document',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP source',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML document',
			'kindJS'          : 'Javascript source',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C source',
			'kindCHeader'     : 'C header source',
			'kindCPP'         : 'C++ source',
			'kindCPPHeader'   : 'C++ header source',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python source',
			'kindJava'        : 'Java source',
			'kindRuby'        : 'Ruby source',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL source',
			'kindXML'         : 'XML document',
			'kindAWK'         : 'AWK source',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML document',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'BMP image',
			'kindJPEG'        : 'JPEG image',
			'kindGIF'         : 'GIF Image',
			'kindPNG'         : 'PNG Image',
			'kindTIFF'        : 'TIFF image',
			'kindTGA'         : 'TGA image',
			'kindPSD'         : 'Adobe Photoshop image',
			'kindXBITMAP'     : 'X bitmap image',
			'kindPXM'         : 'Pixelmator image',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV movie',
			'kindVideoMPEG'   : 'MPEG movie',
			'kindVideoMPEG4'  : 'MPEG-4 movie',
			'kindVideoAVI'    : 'AVI movie',
			'kindVideoMOV'    : 'Quick Time movie',
			'kindVideoWM'     : 'Windows Media movie',
			'kindVideoFlash'  : 'Flash movie',
			'kindVideoMKV'    : 'Matroska movie',
			'kindVideoOGG'    : 'Ogg movie'
		}
	};
}



/*
 * File: /js/ui/button.js
 */

/**
 * @class  elFinder toolbar button widget.
 * If command has variants - create menu
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderbutton = function(cmd) {
		return this.each(function() {
		
		var c        = 'class',
			fm       = cmd.fm,
			disabled = fm.res(c, 'disabled'),
			active   = fm.res(c, 'active'),
			hover    = fm.res(c, 'hover'),
			item     = 'elfinder-button-menu-item',
			selected = 'elfinder-button-menu-item-selected',
			menu,
			text     = jQuery('<span class="elfinder-button-text">'+cmd.title+'</span>'),
			prvCname = 'elfinder-button-icon-' + (cmd.className? cmd.className : cmd.name),
			button   = jQuery(this).addClass('ui-state-default elfinder-button')
				.attr('title', cmd.title)
				.append('<span class="elfinder-button-icon ' + prvCname + '"/>', text)
				.on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button[e.type == 'mouseleave' ? 'removeClass' : 'addClass'](hover);})
				.on('click', function(e) { 
					if (!button.hasClass(disabled)) {
						if (menu && cmd.variants.length >= 1) {
							// close other menus
							menu.is(':hidden') && fm.getUI().click();
							e.stopPropagation();
							menu.css(getMenuOffset()).slideToggle({
								duration: 100,
								done: function(e) {
									fm[menu.is(':visible')? 'toFront' : 'toHide'](menu);
								}
							});
						} else {
							fm.exec(cmd.name, getSelected(), {_userAction: true, _currentType: 'toolbar', _currentNode: button });
						}
						
					}
				}),
			hideMenu = function() {
				fm.toHide(menu);
			},
			getMenuOffset = function() {
				var fmNode = fm.getUI(),
					baseOffset = fmNode.offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					left : buttonOffset.left - baseOffset.left,
					maxHeight : fmNode.height() - 40
				};
			},
			getSelected = function() {
				var sel = fm.selected(),
					cwd;
				if (!sel.length) {
					if (cwd = fm.cwd()) {
						sel = [ fm.cwd().hash ];
					} else {
						sel = void(0);
					}
				}
				return sel;
			},
			tm;
			
		text.hide();
		
		// set self button object to cmd object
		cmd.button = button;
		
		// if command has variants create menu
		if (Array.isArray(cmd.variants)) {
			button.addClass('elfinder-menubutton');
			
			menu = jQuery('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu ui-corner-all"/>')
				.hide()
				.appendTo(fm.getUI())
				.on('mouseenter mouseleave', '.'+item, function() { jQuery(this).toggleClass(hover); })
				.on('click', '.'+item, function(e) {
					var opts = jQuery(this).data('value');
					e.preventDefault();
					e.stopPropagation();
					button.removeClass(hover);
					fm.toHide(menu);
					if (typeof opts === 'undefined') {
						opts = {};
					}
					if (typeof opts === 'object') {
						opts._userAction = true;
					}
					fm.exec(cmd.name, getSelected(), opts);
				})
				.on('close', hideMenu);

			fm.bind('disable select', hideMenu).getUI().on('click', hideMenu);
			
			cmd.change(function() {
				menu.html('');
				jQuery.each(cmd.variants, function(i, variant) {
					menu.append(jQuery('<div class="'+item+'">'+variant[1]+'</div>').data('value', variant[0]).addClass(variant[0] == cmd.value ? selected : ''));
				});
			});
		}	
			
		cmd.change(function() {
			var cName;
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				if (cmd.disabled()) {
					button.removeClass(active+' '+hover).addClass(disabled);
				} else {
					button.removeClass(disabled);
					button[cmd.active() ? 'addClass' : 'removeClass'](active);
				}
				if (cmd.syncTitleOnChange) {
					cName = 'elfinder-button-icon-' + (cmd.className? cmd.className : cmd.name);
					if (prvCname !== cName) {
						button.children('.elfinder-button-icon').removeClass(prvCname).addClass(cName);
						prvCname = cName;
					}
					text.html(cmd.title);
					button.attr('title', cmd.title);
				}
			});
		})
		.change();
	});
};


/*
 * File: /js/ui/contextmenu.js
 */

/**
 * @class  elFinder contextmenu
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindercontextmenu = function(fm) {
		return this.each(function() {
		var self   = jQuery(this),
			cmItem = 'elfinder-contextmenu-item',
			smItem = 'elfinder-contextsubmenu-item',
			exIcon = 'elfinder-contextmenu-extra-icon',
			cHover = fm.res('class', 'hover'),
			dragOpt = {
				distance: 8,
				start: function() {
					menu.data('drag', true).data('touching') && menu.find('.'+cHover).removeClass(cHover);
				},
				stop: function() {
					menu.data('draged', true).removeData('drag');
				}
			},
			menu = jQuery(this).addClass('touch-punch ui-helper-reset ui-front ui-widget ui-state-default ui-corner-all elfinder-contextmenu elfinder-contextmenu-'+fm.direction)
				.hide()
				.on('touchstart', function(e) {
					menu.data('touching', true).children().removeClass(cHover);
				})
				.on('touchend', function(e) {
					menu.removeData('touching');
				})
				.on('mouseenter mouseleave', '.'+cmItem, function(e) {
					jQuery(this).toggleClass(cHover, (e.type === 'mouseenter' || (! menu.data('draged') && menu.data('submenuKeep'))? true : false));
					if (menu.data('draged') && menu.data('submenuKeep')) {
						menu.find('.elfinder-contextmenu-sub:visible').parent().addClass(cHover);
					}
				})
				.on('mouseenter mouseleave', '.'+exIcon, function(e) {
					jQuery(this).parent().toggleClass(cHover, e.type === 'mouseleave');
				})
				.on('mouseenter mouseleave', '.'+cmItem+',.'+smItem, function(e) {
					var setIndex = function(target, sub) {
						jQuery.each(sub? subnodes : nodes, function(i, n) {
							if (target[0] === n) {
								(sub? subnodes : nodes)._cur = i;
								if (sub) {
									subselected = target;
								} else {
									selected = target;
								}
								return false;
							}
						});
					};
					if (e.originalEvent) {
						var target = jQuery(this),
							unHover = function() {
								if (selected && !selected.children('div.elfinder-contextmenu-sub:visible').length) {
									selected.removeClass(cHover);
								}
							};
						if (e.type === 'mouseenter') {
							// mouseenter
							if (target.hasClass(smItem)) {
								// submenu
								if (subselected) {
									subselected.removeClass(cHover);
								}
								if (selected) {
									subnodes = selected.find('div.'+smItem);
								}
								setIndex(target, true);
							} else {
								// menu
								unHover();
								setIndex(target);
							}
						} else {
							// mouseleave
							if (target.hasClass(smItem)) {
								//submenu
								subselected = null;
								subnodes = null;
							} else {
								// menu
								unHover();
								(function(sel) {
									setTimeout(function() {
										if (sel === selected) {
											selected = null;
										}
									}, 250);
								})(selected);
							}
						}
					}
				})
				.on('contextmenu', function(){return false;})
				.on('mouseup', function() {
					setTimeout(function() {
						menu.removeData('draged');
					}, 100);
				})
				.draggable(dragOpt),
			ltr = fm.direction === 'ltr',
			subpos = ltr? 'left' : 'right',
			types = Object.assign({}, fm.options.contextmenu),
			tpl     = '<div class="'+cmItem+'{className}"><span class="elfinder-button-icon {icon} elfinder-contextmenu-icon"{style}/><span>{label}</span></div>',
			item = function(label, icon, callback, opts) {
				var className = '',
					style = '',
					iconClass = '',
					v, pos;
				if (opts) {
					if (opts.className) {
						className = ' ' + opts.className;
					}
					if (opts.iconClass) {
						iconClass = opts.iconClass;
						icon = '';
					}
					if (opts.iconImg) {
						v = opts.iconImg.split(/ +/);
						pos = v[1] && v[2]? fm.escape(v[1] + 'px ' + v[2] + 'px') : '';
						style = ' style="background:url(\''+fm.escape(v[0])+'\') '+(pos? pos : '0 0')+' no-repeat;'+(pos? '' : 'posbackground-size:contain;')+'"';
					}
				}
				return jQuery(tpl.replace('{icon}', icon ? 'elfinder-button-icon-'+icon : (iconClass? iconClass : ''))
						.replace('{label}', label)
						.replace('{style}', style)
						.replace('{className}', className))
					.on('click', function(e) {
						e.stopPropagation();
						e.preventDefault();
						callback();
					});
			},
			urlIcon = function(iconUrl) {
				var v = iconUrl.split(/ +/),
					pos = v[1] && v[2]? (v[1] + 'px ' + v[2] + 'px') : '';
				return {
					backgroundImage: 'url("'+v[0]+'")',
					backgroundRepeat: 'no-repeat',
					backgroundPosition: pos? pos : '',
					backgroundSize: pos? '' : 'contain'
				};
			},
			base, cwd,
			nodes, selected, subnodes, subselected, autoSyncStop, subHoverTm,

			autoToggle = function() {
				var evTouchStart = 'touchstart.contextmenuAutoToggle';
				menu.data('hideTm') && clearTimeout(menu.data('hideTm'));
				if (menu.is(':visible')) {
					menu.on('touchstart', function(e) {
						if (e.originalEvent.touches.length > 1) {
							return;
						}
						menu.stop();
						fm.toFront(menu);
						menu.data('hideTm') && clearTimeout(menu.data('hideTm'));
					})
					.data('hideTm', setTimeout(function() {
						if (menu.is(':visible')) {
							cwd.find('.elfinder-cwd-file').off(evTouchStart);
							cwd.find('.elfinder-cwd-file.ui-selected')
							.one(evTouchStart, function(e) {
								if (e.originalEvent.touches.length > 1) {
									return;
								}
								var tgt = jQuery(e.target);
								if (menu.first().length && !tgt.is('input:checkbox') && !tgt.hasClass('elfinder-cwd-select')) {
									e.stopPropagation();
									//e.preventDefault();
									open(e.originalEvent.touches[0].pageX, e.originalEvent.touches[0].pageY);
									cwd.data('longtap', true)
									tgt.one('touchend', function() {
										setTimeout(function() {
											cwd.removeData('longtap');
										}, 80);
									});
									return;
								}
								cwd.find('.elfinder-cwd-file').off(evTouchStart);
							})
							.one('unselect.'+fm.namespace, function() {
								cwd.find('.elfinder-cwd-file').off(evTouchStart);
							});
							menu.fadeOut({
								duration: 300,
								fail: function() {
									menu.css('opacity', '1').show();
								},
								done: function() {
									fm.toHide(menu);
								}
							});
						}
					}, 4500));
				}
			},
			
			keyEvts = function(e) {
				var code = e.keyCode,
					ESC = jQuery.ui.keyCode.ESCAPE,
					ENT = jQuery.ui.keyCode.ENTER,
					LEFT = jQuery.ui.keyCode.LEFT,
					RIGHT = jQuery.ui.keyCode.RIGHT,
					UP = jQuery.ui.keyCode.UP,
					DOWN = jQuery.ui.keyCode.DOWN,
					subent = fm.direction === 'ltr'? RIGHT : LEFT,
					sublev = subent === RIGHT? LEFT : RIGHT;
				
				if (jQuery.inArray(code, [ESC, ENT, LEFT, RIGHT, UP, DOWN]) !== -1) {
					e.preventDefault();
					e.stopPropagation();
					e.stopImmediatePropagation();
					if (code == ESC || code === sublev) {
						if (selected && subnodes && subselected) {
							subselected.trigger('mouseleave').trigger('submenuclose');
							selected.addClass(cHover);
							subnodes = null;
							subselected = null;
						} else {
							code == ESC && close();
						}
					} else if (code == UP || code == DOWN) {
						if (subnodes) {
							if (subselected) {
								subselected.trigger('mouseleave');
							}
							if (code == DOWN && (! subselected || subnodes.length <= ++subnodes._cur)) {
								subnodes._cur = 0;
							} else if (code == UP && (! subselected || --subnodes._cur < 0)) {
								subnodes._cur = subnodes.length - 1;
							}
							subselected = subnodes.eq(subnodes._cur).trigger('mouseenter');
						} else {
							subnodes = null;
							if (selected) {
								selected.trigger('mouseleave');
							}
							if (code == DOWN && (! selected || nodes.length <= ++nodes._cur)) {
								nodes._cur = 0;
							} else if (code == UP && (! selected || --nodes._cur < 0)) {
								nodes._cur = nodes.length - 1;
							}
							selected = nodes.eq(nodes._cur).addClass(cHover);
						}
					} else if (selected && (code == ENT || code === subent)) {
						if (selected.hasClass('elfinder-contextmenu-group')) {
							if (subselected) {
								code == ENT && subselected.click();
							} else {
								selected.trigger('mouseenter');
								subnodes = selected.find('div.'+smItem);
								subnodes._cur = 0;
								subselected = subnodes.first().addClass(cHover);
							}
						} else {
							code == ENT && selected.click();
						}
					}
				}
			},
			
			open = function(x, y, css) {
				var width      = menu.outerWidth(),
					height     = menu.outerHeight(),
					bstyle     = base.attr('style'),
					bpos       = base.offset(),
					bwidth     = base.width(),
					bheight    = base.height(),
					mw         = fm.UA.Mobile? 40 : 2,
					mh         = fm.UA.Mobile? 20 : 2,
					x          = x - (bpos? bpos.left : 0),
					y          = y - (bpos? bpos.top : 0),
					css        = Object.assign(css || {}, {
						top  : Math.max(0, y + mh + height < bheight ? y + mh : y - (y + height - bheight)),
						left : Math.max(0, (x < width + mw || x + mw + width < bwidth)? x + mw : x - mw - width),
						opacity : '1'
					}),
					evts;

				autoSyncStop = true;
				fm.autoSync('stop');
				base.width(bwidth);
				menu.stop().removeAttr('style').css(css);
				fm.toFront(menu);
				menu.show();
				base.attr('style', bstyle);
				
				css[subpos] = parseInt(menu.width());
				menu.find('.elfinder-contextmenu-sub').css(css);
				if (fm.UA.iOS) {
					jQuery('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'auto');
				}
				
				selected = null;
				subnodes = null;
				subselected = null;
				jQuery(document).on('keydown.' + fm.namespace, keyEvts);
				evts = jQuery._data(document).events;
				if (evts && evts.keydown) {
					evts.keydown.unshift(evts.keydown.pop());
				}
				
				fm.UA.Mobile && autoToggle();
				
				requestAnimationFrame(function() {
					fm.getUI().one('click.' + fm.namespace, close);
				});
			},
			
			close = function() {
				fm.getUI().off('click.' + fm.namespace, close);
				jQuery(document).off('keydown.' + fm.namespace, keyEvts);

				currentType = currentTargets = null;
				
				if (menu.is(':visible') || menu.children().length) {
					fm.toHide(menu.removeAttr('style').empty().removeData('submenuKeep'));
					try {
						if (! menu.draggable('instance')) {
							menu.draggable(dragOpt);
						}
					} catch(e) {
						if (! menu.hasClass('ui-draggable')) {
							menu.draggable(dragOpt);
						}
					}
					if (menu.data('prevNode')) {
						menu.data('prevNode').after(menu);
						menu.removeData('prevNode');
					}
					fm.trigger('closecontextmenu');
					if (fm.UA.iOS) {
						jQuery('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'touch');
					}
				}
				
				autoSyncStop && fm.searchStatus.state < 1 && ! fm.searchStatus.ininc && fm.autoSync();
				autoSyncStop = false;
			},
			
			create = function(type, targets) {
				var sep    = false,
					insSep = false,
					disabled = [],
					isCwd = type === 'cwd',
					selcnt = 0,
					cmdMap;

				currentType = type;
				currentTargets = targets;
				
				// get current uiCmdMap option
				if (!(cmdMap = fm.option('uiCmdMap', isCwd? void(0) : targets[0]))) {
					cmdMap = {};
				}
				
				if (!isCwd) {
					disabled = fm.getDisabledCmds(targets);
				}
				
				selcnt = fm.selected().length;
				if (selcnt > 1) {
					menu.append('<div class="ui-corner-top ui-widget-header elfinder-contextmenu-header"><span>'
					 + fm.i18n('selectedItems', ''+selcnt)
					 + '</span></div>');
				}
				
				nodes = jQuery();
				jQuery.each(types[type]||[], function(i, name) {
					var cmd, cmdName, useMap, node, submenu, hover;
					
					if (name === '|') {
						if (sep) {
							insSep = true;
						}
						return;
					}
					
					if (cmdMap[name]) {
						cmdName = cmdMap[name];
						useMap = true;
					} else {
						cmdName = name;
					}
					cmd = fm.getCommand(cmdName);

					if (cmd && !isCwd && (!fm.searchStatus.state || !cmd.disableOnSearch)) {
						cmd.__disabled = cmd._disabled;
						cmd._disabled = !(cmd.alwaysEnabled || (fm._commands[cmdName] ? jQuery.inArray(name, disabled) === -1 && (!useMap || !disabled[cmdName]) : false));
						jQuery.each(cmd.linkedCmds, function(i, n) {
							var c;
							if (c = fm.getCommand(n)) {
								c.__disabled = c._disabled;
								c._disabled = !(c.alwaysEnabled || (fm._commands[n] ? !disabled[n] : false));
							}
						});
					}

					if (cmd && !cmd._disabled && cmd.getstate(targets) != -1) {
						if (cmd.variants) {
							if (!cmd.variants.length) {
								return;
							}
							node = item(cmd.title, cmd.className? cmd.className : cmd.name, function(){}, cmd.contextmenuOpts);
							
							submenu = jQuery('<div class="ui-front ui-corner-all elfinder-contextmenu-sub"/>')
								.hide()
								.css('max-height', fm.getUI().height() - 30)
								.appendTo(node.append('<span class="elfinder-contextmenu-arrow"/>'));
							
							hover = function(show){
								if (! show) {
									submenu.hide();
								} else {
									var bstyle = base.attr('style');
									base.width(base.width());
									// top: '-1000px' to prevent visible scrollbar of window with the elFinder option `height: '100%'`
									submenu.css({ top: '-1000px', left: 'auto', right: 'auto' });
									var nodeOffset = node.offset(),
										nodeleft   = nodeOffset.left,
										nodetop    = nodeOffset.top,
										nodewidth  = node.outerWidth(),
										width      = submenu.outerWidth(true),
										height     = submenu.outerHeight(true),
										baseOffset = base.offset(),
										wwidth     = baseOffset.left + base.width(),
										wheight    = baseOffset.top + base.height(),
										cltr       = ltr, 
										x          = nodewidth,
										y, over;
	
									if (ltr) {
										over = (nodeleft + nodewidth + width) - wwidth;
										if (over > 10) {
											if (nodeleft > width - 5) {
												x = x - 5;
												cltr = false;
											} else {
												if (!fm.UA.Mobile) {
													x = nodewidth - over;
												}
											}
										}
									} else {
										over = width - nodeleft;
										if (over > 0) {
											if ((nodeleft + nodewidth + width - 15) < wwidth) {
												x = x - 5;
												cltr = true;
											} else {
												if (!fm.UA.Mobile) {
													x = nodewidth - over;
												}
											}
										}
									}
									over = (nodetop + 5 + height) - wheight;
									y = (over > 0 && nodetop < wheight)? 5 - over : (over > 0? 30 - height : 5);
	
									menu.find('.elfinder-contextmenu-sub:visible').hide();
									submenu.css({
										top : y,
										left : cltr? x : 'auto',
										right: cltr? 'auto' : x,
										overflowY: 'auto'
									}).show();
									base.attr('style', bstyle);
								}
							};
							
							node.addClass('elfinder-contextmenu-group')
								.on('mouseleave', '.elfinder-contextmenu-sub', function(e) {
									if (! menu.data('draged')) {
										menu.removeData('submenuKeep');
									}
								})
								.on('submenuclose', '.elfinder-contextmenu-sub', function(e) {
									hover(false);
								})
								.on('click', '.'+smItem, function(e){
									var opts, $this;
									e.stopPropagation();
									if (! menu.data('draged')) {
										$this = jQuery(this);
										if (!cmd.keepContextmenu) {
											menu.hide();
										} else {
											$this.removeClass(cHover);
											node.addClass(cHover);
										}
										opts = $this.data('exec');
										if (typeof opts === 'undefined') {
											opts = {};
										}
										if (typeof opts === 'object') {
											opts._userAction = true;
											opts._currentType = type;
											opts._currentNode = $this;
										}
										!cmd.keepContextmenu && close();
										fm.exec(cmd.name, targets, opts);
									}
								})
								.on('touchend', function(e) {
									if (! menu.data('drag')) {
										hover(true);
										menu.data('submenuKeep', true);
									}
								})
								.on('mouseenter mouseleave', function(e){
									if (! menu.data('touching')) {
										if (node.data('timer')) {
											clearTimeout(node.data('timer'));
											node.removeData('timer');
										}
										if (!jQuery(e.target).closest('.elfinder-contextmenu-sub', menu).length) {
											if (e.type === 'mouseleave') {
												if (! menu.data('submenuKeep')) {
													node.data('timer', setTimeout(function() {
														node.removeData('timer');
														hover(false);
													}, 250));
												}
											} else {
												node.data('timer', setTimeout(function() {
													node.removeData('timer');
													hover(true);
												}, nodes.find('div.elfinder-contextmenu-sub:visible').length? 250 : 0));
											}
										}
									}
								});
							
							jQuery.each(cmd.variants, function(i, variant) {
								var item = variant === '|' ? '<div class="elfinder-contextmenu-separator"/>' :
									jQuery('<div class="'+cmItem+' '+smItem+'"><span>'+variant[1]+'</span></div>').data('exec', variant[0]),
									iconClass, icon;
								if (typeof variant[2] !== 'undefined') {
									icon = jQuery('<span/>').addClass('elfinder-button-icon elfinder-contextmenu-icon');
									if (! /\//.test(variant[2])) {
										icon.addClass('elfinder-button-icon-'+variant[2]);
									} else {
										icon.css(urlIcon(variant[2]));
									}
									item.prepend(icon).addClass(smItem+'-icon');
								}
								submenu.append(item);
							});
								
						} else {
							node = item(cmd.title, cmd.className? cmd.className : cmd.name, function() {
								if (! menu.data('draged')) {
									!cmd.keepContextmenu && close();
									fm.exec(cmd.name, targets, {_userAction: true, _currentType: type, _currentNode: node});
								}
							}, cmd.contextmenuOpts);
							if (cmd.extra && cmd.extra.node) {
								jQuery('<span class="elfinder-button-icon elfinder-button-icon-'+(cmd.extra.icon || '')+' '+exIcon+'"/>')
									.append(cmd.extra.node).appendTo(node);
								jQuery(cmd.extra.node).trigger('ready', {targets: targets});
							} else {
								node.remove('.'+exIcon);
							}
						}
						
						if (cmd.extendsCmd) {
							node.children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd);
						}
						
						if (insSep) {
							menu.append('<div class="elfinder-contextmenu-separator"/>');
						}
						menu.append(node);
						sep = true;
						insSep = false;
					}
					
					if (cmd && typeof cmd.__disabled !== 'undefined') {
						cmd._disabled = cmd.__disabled;
						delete cmd.__disabled;
						jQuery.each(cmd.linkedCmds, function(i, n) {
							var c;
							if (c = fm.getCommand(n)) {
								c._disabled = c.__disabled;
								delete c.__disabled;
							}
						});
					}
				});
				nodes = menu.children('div.'+cmItem);
			},
			
			createFromRaw = function(raw) {
				currentType = 'raw';
				jQuery.each(raw, function(i, data) {
					var node;
					
					if (data === '|') {
						menu.append('<div class="elfinder-contextmenu-separator"/>');
					} else if (data.label && typeof data.callback == 'function') {
						node = item(data.label, data.icon, function() {
							if (! menu.data('draged')) {
								!data.remain && close();
								data.callback();
							}
						}, data.options || null);
						menu.append(node);
					}
				});
				nodes = menu.children('div.'+cmItem);
			},
			
			currentType = null,
			currentTargets = null;
		
		fm.one('load', function() {
			base = fm.getUI();
			cwd = fm.getUI('cwd');
			fm.bind('contextmenu', function(e) {
				var data = e.data,
					css = {},
					prevNode;

				if (data.type && data.type !== 'files') {
					cwd.trigger('unselectall');
				}
				close();

				if (data.type && data.targets) {
					fm.trigger('contextmenucreate', data);
					create(data.type, data.targets);
					fm.trigger('contextmenucreatedone', data);
				} else if (data.raw) {
					createFromRaw(data.raw);
				}

				if (menu.children().length) {
					prevNode = data.prevNode || null;
					if (prevNode) {
						menu.data('prevNode', menu.prev());
						prevNode.after(menu);
					}
					if (data.fitHeight) {
						css = {maxHeight: Math.min(fm.getUI().height(), jQuery(window).height()), overflowY: 'auto'};
						menu.draggable('destroy').removeClass('ui-draggable');
					}
					open(data.x, data.y, css);
					// call opened callback function
					if (data.opened && typeof data.opened === 'function') {
						data.opened.call(menu);
					}
				}
			})
			.one('destroy', function() { menu.remove(); })
			.bind('disable', close)
			.bind('select', function(e){
				(currentType === 'files' && (!e.data || e.data.selected.toString() !== currentTargets.toString())) && close();
			});
		})
		.shortcut({
			pattern     : fm.OS === 'mac' ? 'ctrl+m' : 'contextmenu shift+f10',
			description : 'contextmenu',
			callback    : function(e) {
				e.stopPropagation();
				e.preventDefault();
				jQuery(document).one('contextmenu.' + fm.namespace, function(e) {
					e.preventDefault();
					e.stopPropagation();
				});
				var sel = fm.selected(),
					type, targets, pos, elm;
				
				if (sel.length) {
					type = 'files';
					targets = sel;
					elm = fm.cwdHash2Elm(sel[0]);
				} else {
					type = 'cwd';
					targets = [ fm.cwd().hash ];
					pos = fm.getUI('workzone').offset();
				}
				if (! elm || ! elm.length) {
					elm = fm.getUI('workzone');
				}
				pos = elm.offset();
				pos.top += (elm.height() / 2);
				pos.left += (elm.width() / 2);
				fm.trigger('contextmenu', {
					'type'    : type,
					'targets' : targets,
					'x'       : pos.left,
					'y'       : pos.top
				});
			}
		});
		
	});
	
};


/*
 * File: /js/ui/cwd.js
 */

/**
 * elFinder current working directory ui.
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindercwd = function(fm, options) {
		this.not('.elfinder-cwd').each(function() {
		// fm.time('cwdLoad');
		
		var mobile = fm.UA.Mobile,
			list = fm.viewType == 'list',

			undef = 'undefined',
			/**
			 * Select event full name
			 *
			 * @type String
			 **/
			evtSelect = 'select.'+fm.namespace,
			
			/**
			 * Unselect event full name
			 *
			 * @type String
			 **/
			evtUnselect = 'unselect.'+fm.namespace,
			
			/**
			 * Disable event full name
			 *
			 * @type String
			 **/
			evtDisable = 'disable.'+fm.namespace,
			
			/**
			 * Disable event full name
			 *
			 * @type String
			 **/
			evtEnable = 'enable.'+fm.namespace,
			
			c = 'class',
			/**
			 * File css class
			 *
			 * @type String
			 **/
			clFile       = fm.res(c, 'cwdfile'),
			
			/**
			 * Selected css class
			 *
			 * @type String
			 **/
			fileSelector = '.'+clFile,
			
			/**
			 * Selected css class
			 *
			 * @type String
			 **/
			clSelected = 'ui-selected',
			
			/**
			 * Disabled css class
			 *
			 * @type String
			 **/
			clDisabled = fm.res(c, 'disabled'),
			
			/**
			 * Draggable css class
			 *
			 * @type String
			 **/
			clDraggable = fm.res(c, 'draggable'),
			
			/**
			 * Droppable css class
			 *
			 * @type String
			 **/
			clDroppable = fm.res(c, 'droppable'),
			
			/**
			 * Hover css class
			 *
			 * @type String
			 **/
			clHover     = fm.res(c, 'hover'),

			/**
			 * Active css class
			 *
			 * @type String
			 **/
			clActive     = fm.res(c, 'active'),

			/**
			 * Hover css class
			 *
			 * @type String
			 **/
			clDropActive = fm.res(c, 'adroppable'),

			/**
			 * Css class for temporary nodes (for mkdir/mkfile) commands
			 *
			 * @type String
			 **/
			clTmp = clFile+'-tmp',

			/**
			 * Select checkbox css class
			 * 
			 * @type String
			 */
			clSelChk = 'elfinder-cwd-selectchk',

			/**
			 * Number of thumbnails to load in one request (new api only)
			 *
			 * @type Number
			 **/
			tmbNum = fm.options.loadTmbs > 0 ? fm.options.loadTmbs : 5,
			
			/**
			 * Current search query.
			 *
			 * @type String
			 */
			query = '',

			/**
			 * Currect clipboard(cut) hashes as object key
			 * 
			 * @type Object
			 */
			clipCuts = {},

			/**
			 * Parents hashes of cwd
			 *
			 * @type Array
			 */
			cwdParents = [],
			
			/**
			 * cwd current hashes
			 * 
			 * @type Array
			 */
			cwdHashes = [],

			/**
			 * incsearch current hashes
			 * 
			 * @type Array
			 */
			incHashes = void 0,

			/**
			 * Custom columns name and order
			 *
			 * @type Array
			 */
			customCols = [],

			/**
			 * Current clicked element id of first time for dblclick
			 * 
			 * @type String
			 */
			curClickId = '',

			/**
			 * Custom columns builder
			 *
			 * @type Function
			 */
			customColsBuild = function() {
				var cols = '';
				for (var i = 0; i < customCols.length; i++) {
					cols += '<td class="elfinder-col-'+customCols[i]+'">{' + customCols[i] + '}</td>';
				}
				return cols;
			},

			/**
			 * Make template.row from customCols
			 *
			 * @type Function
			 */
			makeTemplateRow = function() {
				return '<tr id="{id}" class="'+clFile+' {permsclass} {dirclass}" title="{tooltip}"{css}><td class="elfinder-col-name"><div class="elfinder-cwd-file-wrapper"><span class="elfinder-cwd-icon {mime}"{style}/>{marker}<span class="elfinder-cwd-filename">{name}</span></div>'+selectCheckbox+'</td>'+customColsBuild()+'</tr>';
			},
			
			selectCheckbox = (jQuery.map(options.showSelectCheckboxUA, function(t) {return (fm.UA[t] || t.match(/^all$/i))? true : null;}).length)? '<div class="elfinder-cwd-select"><input type="checkbox" class="'+clSelChk+'"></div>' : '',

			colResizing = false,
			
			colWidth = null,

			/**
			 * Table header height
			 */
			thHeight,

			/**
			 * File templates
			 *
			 * @type Object
			 **/
			templates = {
				icon : '<div id="{id}" class="'+clFile+' {permsclass} {dirclass} ui-corner-all" title="{tooltip}"><div class="elfinder-cwd-file-wrapper ui-corner-all"><div class="elfinder-cwd-icon {mime} ui-corner-all" unselectable="on"{style}/>{marker}</div><div class="elfinder-cwd-filename" title="{nametitle}">{name}</div>'+selectCheckbox+'</div>',
				row  : ''
			},
			
			permsTpl = fm.res('tpl', 'perms'),
			
			lockTpl = fm.res('tpl', 'lock'),
			
			symlinkTpl = fm.res('tpl', 'symlink'),
			
			/**
			 * Template placeholders replacement rules
			 *
			 * @type Object
			 **/
			replacement = {
				id : function(f) {
					return fm.cwdHash2Id(f.hash);
				},
				name : function(f) {
					var name = fm.escape(f.i18 || f.name);
					!list && (name = name.replace(/([_.])/g, '&#8203;$1'));
					return name;
				},
				nametitle : function(f) {
					return fm.escape(f.i18 || f.name);
				},
				permsclass : function(f) {
					return fm.perms2class(f);
				},
				perm : function(f) {
					return fm.formatPermissions(f);
				},
				dirclass : function(f) {
					var cName = f.mime == 'directory' ? 'directory' : '';
					f.isroot && (cName += ' isroot');
					f.csscls && (cName += ' ' + fm.escape(f.csscls));
					options.getClass && (cName += ' ' + options.getClass(f));
					return cName;
				},
				style : function(f) {
					return f.icon? fm.getIconStyle(f) : '';
				},
				mime : function(f) {
					var cName = fm.mime2class(f.mime);
					f.icon && (cName += ' elfinder-cwd-bgurl');
					return cName;
				},
				size : function(f) {
					return (f.mime === 'directory' && !f.size)? '-' : fm.formatSize(f.size);
				},
				date : function(f) {
					return fm.formatDate(f);
				},
				kind : function(f) {
					return fm.mime2kind(f);
				},
				mode : function(f) {
					return f.perm? fm.formatFileMode(f.perm) : '';
				},
				modestr : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'string') : '';
				},
				modeoct : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'octal') : '';
				},
				modeboth : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'both') : '';
				},
				marker : function(f) {
					return (f.alias || f.mime == 'symlink-broken' ? symlinkTpl : '')+(!f.read || !f.write ? permsTpl : '')+(f.locked ? lockTpl : '');
				},
				tooltip : function(f) {
					var title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''),
						info  = '';
					if (query && f.path) {
						info = fm.escape(f.path.replace(/\/[^\/]*$/, ''));
					} else {
						info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, '&#13;') : '';
					}
					if (list) {
						info += (info? '&#13;' : '') + fm.escape(f.i18 || f.name);
					}
					return info? info + '&#13;' + title : title;
				}
			},
			
			/**
			 * Type badge CSS added flag
			 * 
			 * @type Object
			 */
			addedBadges = {},
			
			/**
			 * Type badge style sheet element
			 * 
			 * @type Object
			 */
			addBadgeStyleSheet,
			
			/**
			 * Add type badge CSS into 'head'
			 * 
			 * @type Fundtion
			 */
			addBadgeStyle = function(mime, name) {
				var sel, ext, type;
				if (mime && ! addedBadges[mime]) {
					if (typeof addBadgeStyleSheet === 'undefined') {
						if (jQuery('#elfinderAddBadgeStyle'+fm.namespace).length) {
							jQuery('#elfinderAddBadgeStyle'+fm.namespace).remove();
						}
						addBadgeStyleSheet = jQuery('<style id="addBadgeStyle'+fm.namespace+'"/>').insertBefore(jQuery('head').children(':first')).get(0).sheet || null;
					}
					if (addBadgeStyleSheet) {
						mime = mime.toLowerCase();
						type = mime.split('/');
						ext = fm.escape(fm.mimeTypes[mime] || (name.replace(/.bac?k$/i, '').match(/\.([^.]+)$/) || ['',''])[1]);
						if (ext) {
							sel = '.elfinder-cwd-icon-' + type[0].replace(/(\.|\+)/g, '-');
							if (typeof type[1] !== 'undefined') {
								sel += '.elfinder-cwd-icon-' + type[1].replace(/(\.|\+)/g, '-');
							}
							try {
								addBadgeStyleSheet.insertRule(sel + ':before{content:"' + ext.toLowerCase() + '"}', 0);
							} catch(e) {}
						}
						addedBadges[mime] = true;
					}
				}
			},
			
			/**
			 * Return file html
			 *
			 * @param  Object  file info
			 * @return String
			 **/
			itemhtml = function(f) {
				f.mime && f.mime !== 'directory' && !addedBadges[f.mime] && addBadgeStyle(f.mime, f.name);
				return templates[list ? 'row' : 'icon']
						.replace(/\{([a-z0-9_]+)\}/g, function(s, e) { 
							return replacement[e] ? replacement[e](f, fm) : (f[e] ? f[e] : ''); 
						});
			},
			
			/**
			 * jQueery node that will be selected next
			 * 
			 * @type Object jQuery node
			 */
			selectedNext = jQuery(),
			
			/**
			 * Flag. Required for msie to avoid unselect files on dragstart
			 *
			 * @type Boolean
			 **/
			selectLock = false,
			
			/**
			 * Move selection to prev/next file
			 *
			 * @param String  move direction
			 * @param Boolean append to current selection
			 * @return void
			 * @rise select			
			 */
			select = function(keyCode, append) {
				var code     = jQuery.ui.keyCode,
					prev     = keyCode == code.LEFT || keyCode == code.UP,
					sel      = cwd.find('[id].'+clSelected),
					selector = prev ? 'first:' : 'last',
					s, n, sib, top, left;

				function sibling(n, direction) {
					return n[direction+'All']('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):first');
				}
				
				if (sel.length) {
					s = sel.filter(prev ? ':first' : ':last');
					sib = sibling(s, prev ? 'prev' : 'next');
					
					if (!sib.length) {
						// there is no sibling on required side - do not move selection
						n = s;
					} else if (list || keyCode == code.LEFT || keyCode == code.RIGHT) {
						// find real prevoius file
						n = sib;
					} else {
						// find up/down side file in icons view
						top = s.position().top;
						left = s.position().left;

						n = s;
						if (prev) {
							do {
								n = n.prev('[id]');
							} while (n.length && !(n.position().top < top && n.position().left <= left));

							if (n.hasClass(clDisabled)) {
								n = sibling(n, 'next');
							}
						} else {
							do {
								n = n.next('[id]');
							} while (n.length && !(n.position().top > top && n.position().left >= left));
							
							if (n.hasClass(clDisabled)) {
								n = sibling(n, 'prev');
							}
							// there is row before last one - select last file
							if (!n.length) {
								sib = cwd.find('[id]:not(.'+clDisabled+'):last');
								if (sib.position().top > top) {
									n = sib;
								}
							}
						}
					}
					// !append && unselectAll();
				} else {
					if (selectedNext.length) {
						n = prev? selectedNext.prev() : selectedNext;
					} else {
						// there are no selected file - select first/last one
						n = cwd.find('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):'+(prev ? 'last' : 'first'));
					}
				}
				
				if (n && n.length && !n.hasClass('elfinder-cwd-parent')) {
					if (s && append) {
						// append new files to selected
						n = s.add(s[prev ? 'prevUntil' : 'nextUntil']('#'+n.attr('id'))).add(n);
					} else {
						// unselect selected files
						sel.trigger(evtUnselect);
					}
					// select file(s)
					n.trigger(evtSelect);
					// set its visible
					scrollToView(n.filter(prev ? ':first' : ':last'));
					// update cache/view
					trigger();
				}
			},
			
			selectedFiles = {},
			
			selectFile = function(hash) {
				fm.cwdHash2Elm(hash).trigger(evtSelect);
			},
			
			allSelected = false,
			
			selectAll = function() {
				var phash = fm.cwd().hash;

				selectCheckbox && selectAllCheckbox.find('input').prop('checked', true);
				fm.lazy(function() {
					var files;
					if (fm.maxTargets && (incHashes || cwdHashes).length > fm.maxTargets) {
						unselectAll({ notrigger: true });
						files = jQuery.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; });
						files = files.slice(0, fm.maxTargets);
						selectedFiles = {};
						jQuery.each(files, function(i, v) {
							selectedFiles[v.hash] = true;
							fm.cwdHash2Elm(v.hash).trigger(evtSelect);
						});
						fm.toast({mode: 'warning', msg: fm.i18n(['errMaxTargets', fm.maxTargets])});
					} else {
						cwd.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').trigger(evtSelect);
						selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true);
					}
					trigger();
					selectCheckbox && selectAllCheckbox.data('pending', false);
				}, 0, {repaint: true});
			},
			
			/**
			 * Unselect all files
			 *
			 * @param  Object  options
			 * @return void
			 */
			unselectAll = function(opts) {
				var o = opts || {};
				selectCheckbox && selectAllCheckbox.find('input').prop('checked', false);
				if (Object.keys(selectedFiles).length) {
					selectLock = false;
					selectedFiles = {};
					cwd.find('[id].'+clSelected).trigger(evtUnselect);
					selectCheckbox && cwd.find('input:checkbox.'+clSelChk).prop('checked', false);
				}
				!o.notrigger && trigger();
				selectCheckbox && selectAllCheckbox.data('pending', false);
				cwd.removeClass('elfinder-cwd-allselected');
			},
			
			selectInvert = function() {
				var invHashes = {};
				if (allSelected) {
					unselectAll();
				} else if (! Object.keys(selectedFiles).length) {
					selectAll();
				} else {
					jQuery.each((incHashes || cwdHashes), function(i, h) {
						var itemNode = fm.cwdHash2Elm(h);
						if (! selectedFiles[h]) {
							invHashes[h] = true;
							itemNode.length && itemNode.trigger(evtSelect);
						} else {
							itemNode.length && itemNode.trigger(evtUnselect);
						}
					});
					selectedFiles = invHashes;
					trigger();
				}
			},
			
			/**
			 * Return selected files hashes list
			 *
			 * @return Array
			 */
			selected = function() {
				return Object.keys(selectedFiles);
			},
			
			/**
			 * Last selected node id
			 * 
			 * @type String|Void
			 */
			lastSelect = void 0,
			
			/**
			 * Fire elfinder "select" event and pass selected files to it
			 *
			 * @return void
			 */
			trigger = function() {
				var selected = Object.keys(selectedFiles),
					opts = {
						selected : selected,
						origin : 'cwd'
					};
				
				if (oldSchoolItem && (selected.length > 1 || selected[0] !== fm.cwdId2Hash(
					oldSchoolItem.attr('id'))) && oldSchoolItem.hasClass(clSelected)) {
					oldSchoolItem.trigger(evtUnselect);
				}
				allSelected = selected.length && (selected.length === (incHashes || cwdHashes).length) && (!fm.maxTargets || selected.length <= fm.maxTargets);
				if (selectCheckbox) {
					selectAllCheckbox.find('input').prop('checked', allSelected);
					cwd[allSelected? 'addClass' : 'removeClass']('elfinder-cwd-allselected');
				}
				if (allSelected) {
					opts.selectall = true;
				} else if (! selected.length) {
					opts.unselectall = true;
				}
				fm.trigger('select', opts);
			},
			
			/**
			 * Scroll file to set it visible
			 *
			 * @param DOMElement  file/dir node
			 * @return void
			 */
			scrollToView = function(o, blink) {
				if (! o.length) {
					return;
				}
				var ftop    = o.position().top,
					fheight = o.outerHeight(true),
					wtop    = wrapper.scrollTop(),
					wheight = wrapper.get(0).clientHeight,
					thheight = tableHeader? tableHeader.outerHeight(true) : 0;

				if (ftop + thheight + fheight > wtop + wheight) {
					wrapper.scrollTop(parseInt(ftop + thheight + fheight - wheight));
				} else if (ftop < wtop) {
					wrapper.scrollTop(ftop);
				}
				list && wrapper.scrollLeft(0);
				!!blink && fm.resources.blink(o, 'lookme');
			},
			
			/**
			 * Files we get from server but not show yet
			 *
			 * @type Array
			 **/
			buffer = [],
			
			/**
			 * Extra data of buffer
			 *
			 * @type Object
			 **/
			bufferExt = {},
			
			/**
			 * Return index of elements with required hash in buffer 
			 *
			 * @param String  file hash
			 * @return Number
			 */
			index = function(hash) {
				var l = buffer.length;
				
				while (l--) {
					if (buffer[l].hash == hash) {
						return l;
					}
				}
				return -1;
			},
			
			/**
			 * Scroll start event name
			 *
			 * @type String
			 **/
			scrollStartEvent = 'elfscrstart',
			
			/**
			 * Scroll stop event name
			 *
			 * @type String
			 **/
			scrollEvent = 'elfscrstop',
			
			scrolling = false,
			
			/**
			 * jQuery UI selectable option
			 * 
			 * @type Object
			 */
			selectableOption = {
				disabled   : true,
				filter     : '[id]:first',
				stop       : trigger,
				delay      : 250,
				appendTo   : 'body',
				autoRefresh: false,
				selected   : function(e, ui) { jQuery(ui.selected).trigger(evtSelect); },
				unselected : function(e, ui) { jQuery(ui.unselected).trigger(evtUnselect); }
			},
			
			/**
			 * hashes of items displayed in current view
			 * 
			 * @type Object  ItemHash => DomId
			 */
			inViewHashes = {},
			
			/**
			 * Processing when the current view is changed (On open, search, scroll, resize etc.)
			 * 
			 * @return void
			 */
			wrapperRepaint = function(init, recnt) {
				if (!bufferExt.renderd) {
					return;
				}
				var firstNode = (list? cwd.find('tbody:first') : cwd).children('[id]'+(options.oldSchool? ':not(.elfinder-cwd-parent)' : '')+':first');
				if (!firstNode.length) {
					return;
				}
				var selectable = cwd.data('selectable'),
					rec = (function() {
						var wos = wrapper.offset(),
							ww = wrapper.width(),
							w = jQuery(window),
							x = firstNode.width() / 2,
							l = Math.min(wos.left - w.scrollLeft() + (fm.direction === 'ltr'? x : ww - x), wos.left + ww - 10),
							t = wos.top - w.scrollTop() + 10 + (list? thHeight : 0);
						return {left: Math.max(0, Math.round(l)), top: Math.max(0, Math.round(t))};
					})(),
					tgt = init? firstNode : jQuery(document.elementFromPoint(rec.left , rec.top)),
					ids = {},
					tmbs = {},
					multi = 5,
					cnt = Math.ceil((bufferExt.hpi? Math.ceil((wz.data('rectangle').height / bufferExt.hpi) * 1.5) : showFiles) / multi),
					chk = function() {
						var id, hash, file, i;
						for (i = 0; i < multi; i++) {
							id = tgt.attr('id');
							if (id) {
								bufferExt.getTmbs = [];
								hash = fm.cwdId2Hash(id);
								inViewHashes[hash] = id;
								// for tmbs
								if (bufferExt.attachTmbs[hash]) {
									tmbs[hash] = bufferExt.attachTmbs[hash];
								}
								// for selectable
								selectable && (ids[id] = true);
							}
							// next node
							tgt = tgt.next();
							if (!tgt.length) {
								break;
							}
						}
					},
					done = function() {
						var idsArr;
						if (cwd.data('selectable')) {
							Object.assign(ids, selectedFiles);
							idsArr = Object.keys(ids);
							if (idsArr.length) {
								selectableOption.filter = '#'+idsArr.join(', #');
								cwd.selectable('enable').selectable('option', {filter : selectableOption.filter}).selectable('refresh');
							}
						}
						if (Object.keys(tmbs).length) {
							bufferExt.getTmbs = [];
							attachThumbnails(tmbs);
						}
					},
					setTarget = function() {
						if (!tgt.hasClass(clFile)) {
							tgt = tgt.closest(fileSelector);
						}
					},
					arr, widget;
				
				inViewHashes = {};
				selectable && cwd.selectable('option', 'disabled');
				
				if (tgt.length) {
					if (!tgt.hasClass(clFile) && !tgt.closest(fileSelector).length) {
						// dialog, serach button etc.
						widget = fm.getUI().find('.ui-dialog:visible,.ui-widget:visible');
						if (widget.length) {
							widget.hide();
							tgt = jQuery(document.elementFromPoint(rec.left , rec.top));
							widget.show();
						} else {
							widget = null;
						}
					}
					setTarget();
					if (!tgt.length) {
						// try search 5px down
						widget && widget.hide();
						tgt = jQuery(document.elementFromPoint(rec.left , rec.top + 5));
						widget && widget.show();
						setTarget();
					}
				}

				if (tgt.length) {
					if (tgt.attr('id')) {
						if (init) {
							for (var i = 0; i < cnt; i++) {
								chk();
								if (! tgt.length) {
									break;
								}
							}
							done();
						} else {
							bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject();
							arr = new Array(cnt);
							bufferExt.repaintJob = fm.asyncJob(function() {
								chk();
								if (! tgt.length) {
									done();
									bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject();
								}
							}, arr).done(done);
						}
					}
				} else if (init && bufferExt.renderd) {
					// In initial request, cwd DOM not renderd so doing lazy check
					recnt = recnt || 0;
					if (recnt < 10) { // Prevent infinite loop
						requestAnimationFrame(function() {
							wrapperRepaint(init, ++recnt);
						});
					}
				}
			},
			
			/**
			 * Item node of oldScholl ".."
			 */
			oldSchoolItem = null,

			/**
			 * display parent folder with ".." name
			 * 
			 * @param  String  phash
			 * @return void
			 */
			oldSchool = function(p) {
				var phash = fm.cwd().phash,
					pdir  = fm.file(phash) || null,
					set   = function(pdir) {
						if (pdir) {
							oldSchoolItem = jQuery(itemhtml(jQuery.extend(true, {}, pdir, {name : '..', i18 : '..', mime : 'directory'})))
								.addClass('elfinder-cwd-parent')
								.on('dblclick', function() {
									var hash = fm.cwdId2Hash(this.id);
									fm.trigger('select', {selected : [hash]}).exec('open', hash);
								});
							(list ? oldSchoolItem.children('td:first') : oldSchoolItem).children('.elfinder-cwd-select').remove();
							(list ? cwd.find('tbody') : cwd).prepend(oldSchoolItem);
							fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
						}
					};
				if (pdir) {
					set(pdir);
				} else {
					if (fm.getUI('tree').length) {
						fm.one('parents', function() {
							set(fm.file(phash) || null);
							wrapper.trigger(scrollEvent);
						});
					} else {
						fm.request({
							data : {cmd : 'parents', target : fm.cwd().hash},
							preventFail : true
						})
						.done(function(data) {
							set(fm.file(phash) || null);
							wrapper.trigger(scrollEvent);
						});
					}
				}
			},
			
			showFiles = fm.options.showFiles,
			
			/**
			 * Cwd scroll event handler.
			 * Lazy load - append to cwd not shown files
			 *
			 * @return void
			 */
			render = function() {
				if (bufferExt.rendering || (bufferExt.renderd && ! buffer.length)) {
					return;
				}
				var place = (list ? cwd.children('table').children('tbody') : cwd),
					phash,
					chk,
					// created document fragment for jQuery >= 1.12, 2.2, 3.0
					// see Studio-42/elFinder#1544 @ github
					docFlag = jQuery.htmlPrefilter? true : false,
					tempDom = docFlag? jQuery(document.createDocumentFragment()) : jQuery('<div/>'),
					go      = function(o){
						var over  = o || null,
							html  = [],
							dirs  = false,
							atmb  = {},
							stmb  = (fm.option('tmbUrl') === 'self'),
							init  = bufferExt.renderd? false : true,
							files, locks, selected;
						
						files = buffer.splice(0, showFiles + (over || 0) / (bufferExt.hpi || 1));
						bufferExt.renderd += files.length;
						if (! buffer.length) {
							bottomMarker.hide();
							wrapper.off(scrollEvent, render);
						}
						
						locks = [];
						html = jQuery.map(files, function(f) {
							if (f.hash && f.name) {
								if (f.mime == 'directory') {
									dirs = true;
								}
								if ((f.tmb && (f.tmb != 1 || f.size > 0)) || (stmb && f.mime.indexOf('image/') === 0)) {
									atmb[f.hash] = f.tmb || 'self';
								}
								clipCuts[f.hash] && locks.push(f.hash);
								return itemhtml(f);
							}
							return null;
						});

						// html into temp node
						tempDom.empty().append(html.join(''));
						
						// make directory droppable
						dirs && !mobile && makeDroppable(tempDom);
						
						// check selected items
						selected = [];
						if (Object.keys(selectedFiles).length) {
							tempDom.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').each(function() {
								selectedFiles[fm.cwdId2Hash(this.id)] && selected.push(jQuery(this));
							});
						}
						
						// append to cwd
						place.append(docFlag? tempDom : tempDom.children());
						
						// trigger select
						if (selected.length) {
							jQuery.each(selected, function(i, n) { n.trigger(evtSelect); });
							trigger();
						}
						
						locks.length && fm.trigger('lockfiles', {files: locks});
						!bufferExt.hpi && bottomMarkerShow(place, files.length);
						
						if (list) {
							// show thead
							cwd.find('thead').show();
							// fixed table header
							fixTableHeader({fitWidth: ! colWidth});
						}
						
						if (Object.keys(atmb).length) {
							Object.assign(bufferExt.attachTmbs, atmb);
						}
						
						if (init) {
							if (! mobile && ! cwd.data('selectable')) {
								// make files selectable
								cwd.selectable(selectableOption).data('selectable', true);
							}
						}

						! scrolling && wrapper.trigger(scrollEvent);
					};
				
				if (! bufferExt.renderd) {
					// first time to go()
					bufferExt.rendering = true;
					// scroll top on dir load to avoid scroll after page reload
					wrapper.scrollTop(0);
					phash = fm.cwd().phash;
					go();
					if (options.oldSchool) {
						if (phash && !query) {
							oldSchool(phash);
						} else {
							oldSchoolItem = jQuery();
						}
					}
					if (list) {
						colWidth && setColwidth();
						fixTableHeader({fitWidth: true});
					}
					bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true);
					fm.trigger('cwdrender');
					bufferExt.rendering = false;
					wrapperRepaint(true);
				}
				if (! bufferExt.rendering && buffer.length) {
					// next go()
					if ((chk = (wrapper.height() + wrapper.scrollTop() + fm.options.showThreshold + bufferExt.row) - (bufferExt.renderd * bufferExt.hpi)) > 0) {
						bufferExt.rendering = true;
						fm.lazy(function() {
							go(chk);
							bufferExt.rendering = false;
						});
					} else {
						!fm.enabled() && resize();
					}
				} else {
					resize();
				}
			},
			
			// fixed table header jQuery object
			tableHeader = null,

			// Is UA support CSS sticky
			cssSticky = fm.UA.CSS.positionSticky && fm.UA.CSS.widthMaxContent,
			
			// To fixed table header colmun
			fixTableHeader = function(optsArg) {
				thHeight = 0;
				if (! options.listView.fixedHeader) {
					return;
				}
				var setPos = function() {
					var val, pos;
					pos = (fm.direction === 'ltr')? 'left' : 'right';
					val = ((fm.direction === 'ltr')? wrapper.scrollLeft() : table.outerWidth(true) - wrapper.width() - wrapper.scrollLeft()) * -1;
					if (base.css(pos) !== val) {
						base.css(pos, val);
					}
				},
				opts = optsArg || {},
				cnt, base, table, htable, thead, tbody, hheight, htr, btr, htd, btd, htw, btw, init;
				
				tbody = cwd.find('tbody');
				btr = tbody.children('tr:first');
				if (btr.length && btr.is(':visible')) {
					table = tbody.parent();
					if (! tableHeader) {
						init = true;
						tbody.addClass('elfinder-cwd-fixheader');
						thead = cwd.find('thead').attr('id', fm.namespace+'-cwd-thead');
						htr = thead.children('tr:first');
						hheight = htr.outerHeight(true);
						cwd.css('margin-top', hheight - parseInt(table.css('padding-top')));
						if (cssSticky) {
							tableHeader = jQuery('<div class="elfinder-table-header-sticky"/>').addClass(cwd.attr('class')).append(jQuery('<table/>').append(thead));
							cwd.after(tableHeader);
							wrapper.on('resize.fixheader', function(e) {
								e.stopPropagation();
								fixTableHeader({fitWidth: true});
							});
						} else {
							base = jQuery('<div/>').addClass(cwd.attr('class')).append(jQuery('<table/>').append(thead));
							tableHeader = jQuery('<div/>').addClass(wrapper.attr('class') + ' elfinder-cwd-fixheader')
								.removeClass('ui-droppable native-droppable')
								.css(wrapper.position())
								.css({ height: hheight, width: cwd.outerWidth() })
								.append(base);
							if (fm.direction === 'rtl') {
								tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px');
							}
							setPos();
							wrapper.after(tableHeader)
								.on('scroll.fixheader resize.fixheader', function(e) {
									setPos();
									if (e.type === 'resize') {
										e.stopPropagation();
										tableHeader.css(wrapper.position());
										wrapper.data('width', wrapper.css('overflow', 'hidden').width());
										wrapper.css('overflow', 'auto');
										fixTableHeader();
									}
								});
						}
					} else {
						thead = jQuery('#'+fm.namespace+'-cwd-thead');
						htr = thead.children('tr:first');
					}
					
					if (init || opts.fitWidth || Math.abs(btr.outerWidth() - htr.outerWidth()) > 2) {
						cnt = customCols.length + 1;
						for (var i = 0; i < cnt; i++) {
							htd = htr.children('td:eq('+i+')');
							btd = btr.children('td:eq('+i+')');
							htw = htd.width();
							btw = btd.width();
							if (typeof htd.data('delta') === 'undefined') {
								htd.data('delta', (htd.outerWidth() - htw) - (btd.outerWidth() - btw));
							}
							btw -= htd.data('delta');
							if (! init && ! opts.fitWidth && htw === btw) {
								break;
							}
							htd.css('width', btw + 'px');
						}
					}
					
					if (!cssSticky) {
						tableHeader.data('widthTimer') && cancelAnimationFrame(tableHeader.data('widthTimer'));
						tableHeader.data('widthTimer', requestAnimationFrame(function() {
							if (tableHeader) {
								tableHeader.css('width', mBoard.width() + 'px');
								if (fm.direction === 'rtl') {
									tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px');
								}
							}
						}));
					}
					thHeight = thead.height();
				}
			},
			
			// Set colmun width
			setColwidth = function() {
				if (list && colWidth) {
					var cl = 'elfinder-cwd-colwidth',
					first = cwd.find('tr[id]:first'),
					former;
					if (! first.hasClass(cl)) {
						former = cwd.find('tr.'+cl);
						former.removeClass(cl).find('td').css('width', '');
						first.addClass(cl);
						cwd.find('table:first').css('table-layout', 'fixed');
						jQuery.each(jQuery.merge(['name'], customCols), function(i, k) {
							var w = colWidth[k] || first.find('td.elfinder-col-'+k).width();
							first.find('td.elfinder-col-'+k).width(w);
						});
					}
				}
			},
			
			/**
			 * Droppable options for cwd.
			 * Drop target is `wrapper`
			 * Do not add class on childs file over
			 *
			 * @type Object
			 */
			droppable = Object.assign({}, fm.droppable, {
				over : function(e, ui) {
					var dst    = jQuery(this),
						helper = ui.helper,
						ctr    = (e.shiftKey || e.ctrlKey || e.metaKey),
						hash, status, inParent;
					e.stopPropagation();
					helper.data('dropover', helper.data('dropover') + 1);
					dst.data('dropover', true);
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					if (helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) {
						dst.removeClass(clDropActive);
						//helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					if (dst.hasClass(fm.res(c, 'cwdfile'))) {
						hash = fm.cwdId2Hash(dst.attr('id'));
						dst.data('dropover', hash);
					} else {
						hash = fm.cwd().hash;
						fm.cwd().write && dst.data('dropover', hash);
					}
					inParent = (fm.file(helper.data('files')[0]).phash === hash);
					if (dst.data('dropover') === hash) {
						jQuery.each(helper.data('files'), function(i, h) {
							if (h === hash || (inParent && !ctr && !helper.hasClass('elfinder-drag-helper-plus'))) {
								dst.removeClass(clDropActive);
								return false; // break jQuery.each
							}
						});
					} else {
						dst.removeClass(clDropActive);
					}
					if (helper.data('locked') || inParent) {
						status = 'elfinder-drag-helper-plus';
					} else {
						status = 'elfinder-drag-helper-move';
						if (ctr) {
							status += ' elfinder-drag-helper-plus';
						}
					}
					dst.hasClass(clDropActive) && helper.addClass(status);
					requestAnimationFrame(function(){ dst.hasClass(clDropActive) && helper.addClass(status); });
				},
				out : function(e, ui) {
					var helper = ui.helper;
					e.stopPropagation();
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0));
					jQuery(this).removeData('dropover')
					       .removeClass(clDropActive);
				},
				deactivate : function() {
					jQuery(this).removeData('dropover')
					       .removeClass(clDropActive);
				},
				drop : function(e, ui) {
					unselectAll({ notrigger: true });
					fm.droppable.drop.call(this, e, ui);
				}
			}),
			
			/**
			 * Make directory droppable
			 *
			 * @return void
			 */
			makeDroppable = function(place) {
				place = place? place : (list ? cwd.find('tbody') : cwd);
				var targets = place.children('.directory:not(.'+clDroppable+',.elfinder-na,.elfinder-ro)');

				if (fm.isCommandEnabled('paste')) {
					targets.droppable(droppable);
				}
				if (fm.isCommandEnabled('upload')) {
					targets.addClass('native-droppable');
				}
				
				place.children('.isroot').each(function(i, n) {
					var $n   = jQuery(n),
						hash = fm.cwdId2Hash(n.id);
					
					if (fm.isCommandEnabled('paste', hash)) {
						if (! $n.hasClass(clDroppable+',elfinder-na,elfinder-ro')) {
							$n.droppable(droppable);
						}
					} else {
						if ($n.hasClass(clDroppable)) {
							$n.droppable('destroy');
						}
					}
					if (fm.isCommandEnabled('upload', hash)) {
						if (! $n.hasClass('native-droppable,elfinder-na,elfinder-ro')) {
							$n.addClass('native-droppable');
						}
					} else {
						if ($n.hasClass('native-droppable')) {
							$n.removeClass('native-droppable');
						}
					}
				});
			},
			
			/**
			 * Preload required thumbnails and on load add css to files.
			 * Return false if required file is not visible yet (in buffer) -
			 * required for old api to stop loading thumbnails.
			 *
			 * @param  Object  file hash -> thumbnail map
			 * @param  Bool    reload
			 * @return void
			 */
			attachThumbnails = function(tmbs, reload) {
				var attach = function(node, tmb) {
						jQuery('<img/>')
							.on('load', function() {
								node.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')");
							})
							.attr('src', tmb.url);
					},
					chk  = function(hash, tmb) {
						var node = fm.cwdHash2Elm(hash),
							file, tmbObj, reloads = [];
	
						if (node.length) {
							if (tmb != '1') {
								file = fm.file(hash);
								if (file.tmb !== tmb) {
									file.tmb = tmb;
								}
								tmbObj = fm.tmb(file);
								if (reload) {
									node.find('.elfinder-cwd-icon').addClass(tmbObj.className).css('background-image', "url('"+tmbObj.url+"')");
								} else {
									attach(node, tmbObj);
								}
								delete bufferExt.attachTmbs[hash];
							} else {
								if (reload) {
									loadThumbnails([hash]);
								} else if (! bufferExt.tmbLoading[hash]) {
									bufferExt.getTmbs.push(hash);
								}
							}
						}
					};

				if (jQuery.isPlainObject(tmbs) && Object.keys(tmbs).length) {
					Object.assign(bufferExt.attachTmbs, tmbs);
					jQuery.each(tmbs, chk);
					if (! reload && bufferExt.getTmbs.length && ! Object.keys(bufferExt.tmbLoading).length) {
						loadThumbnails();
					}
				}
			},
			
			/**
			 * Load thumbnails from backend.
			 *
			 * @param  Array|void reloads  hashes list for reload thumbnail items
			 * @return void
			 */
			loadThumbnails = function(reloads) {
				var tmbs = [],
					reload = false;
				
				if (fm.oldAPI) {
					fm.request({
						data : {cmd : 'tmb', current : fm.cwd().hash},
						preventFail : true
					})
					.done(function(data) {
						if (data.images && Object.keys(data.images).length) {
							attachThumbnails(data.images);
						}
						if (data.tmb) {
							loadThumbnails();
						}
					});
					return;
				} 

				if (reloads) {
					reload = true;
					tmbs = reloads.splice(0, tmbNum);
				} else {
					tmbs = bufferExt.getTmbs.splice(0, tmbNum);
				}
				if (tmbs.length) {
					if (reload || inViewHashes[tmbs[0]] || inViewHashes[tmbs[tmbs.length-1]]) {
						jQuery.each(tmbs, function(i, h) {
							bufferExt.tmbLoading[h] = true;
						});
						fm.request({
							data : {cmd : 'tmb', targets : tmbs},
							preventFail : true
						})
						.done(function(data) {
							var errs = [],
								resLen;
							if (data.images) {
								if (resLen = Object.keys(data.images).length) {
									if (resLen < tmbs.length) {
										jQuery.each(tmbs, function(i, h) {
											if (! data.images[h]) {
												errs.push(h);
											}
										});
									}
									attachThumbnails(data.images, reload);
								} else {
									errs = tmbs;
								}
								// unset error items from bufferExt.attachTmbs
								if (errs.length) {
									jQuery.each(errs, function(i, h) {
										delete bufferExt.attachTmbs[h];
									});
								}
							}
							if (reload) {
								if (reloads.length) {
									loadThumbnails(reloads);
								}
							}
						})
						.always(function() {
							bufferExt.tmbLoading = {};
							if (! reload && bufferExt.getTmbs.length) {
								loadThumbnails();
							}
						});
					}
				}
			},
			
			/**
			 * Add new files to cwd/buffer
			 *
			 * @param  Array  new files
			 * @return void
			 */
			add = function(files, mode) {
				var place    = list ? cwd.find('tbody') : cwd,
					l        = files.length, 
					atmb     = {},
					findNode = function(file) {
						var pointer = cwd.find('[id]:first'), file2;

						while (pointer.length) {
							file2 = fm.file(fm.cwdId2Hash(pointer.attr('id')));
							if (!pointer.hasClass('elfinder-cwd-parent') && file2 && fm.compare(file, file2) < 0) {
								return pointer;
							}
							pointer = pointer.next('[id]');
						}
					},
					findIndex = function(file) {
						var l = buffer.length, i;
						
						for (i =0; i < l; i++) {
							if (fm.compare(file, buffer[i]) < 0) {
								return i;
							}
						}
						return l || -1;
					},
					// created document fragment for jQuery >= 1.12, 2.2, 3.0
					// see Studio-42/elFinder#1544 @ github
					docFlag = jQuery.htmlPrefilter? true : false,
					tempDom = docFlag? jQuery(document.createDocumentFragment()) : jQuery('<div/>'),
					file, hash, node, nodes, ndx, stmb;

				if (l > showFiles) {
					// re-render for performance tune
					content();
					selectedFiles = fm.arrayFlip(jQuery.map(files, function(f) { return f.hash; }), true);
					trigger();
				} else {
					// add the item immediately
					l && wz.removeClass('elfinder-cwd-wrapper-empty');
					
					// Self thumbnail
					stmb = (fm.option('tmbUrl') === 'self');
					
					while (l--) {
						file = files[l];
						hash = file.hash;
						
						if (fm.cwdHash2Elm(hash).length) {
							continue;
						}
						
						if ((node = findNode(file)) && ! node.length) {
							node = null;
						}
						if (! node && (ndx = findIndex(file)) >= 0) {
							buffer.splice(ndx, 0, file);
						} else {
							tempDom.empty().append(itemhtml(file));
							(file.mime === 'directory') && !mobile && makeDroppable(tempDom);
							nodes = docFlag? tempDom : tempDom.children();
							if (node) {
								node.before(nodes);
							} else {
								place.append(nodes);
							}
						}
						
						if (fm.cwdHash2Elm(hash).length) {
							if ((file.tmb && (file.tmb != 1 || file.size > 0)) || (stmb && file.mime.indexOf('image/') === 0)) {
								atmb[hash] = file.tmb || 'self';
							}
						}
					}
	
					if (list) {
						setColwidth();
						fixTableHeader({fitWidth: ! colWidth});
					}
					bottomMarkerShow(place);
					if (Object.keys(atmb).length) {
						Object.assign(bufferExt.attachTmbs, atmb);
					}
				}
			},
			
			/**
			 * Remove files from cwd/buffer
			 *
			 * @param  Array  files hashes
			 * @return void
			 */
			remove = function(files) {
				var l = files.length,
					inSearch = fm.searchStatus.state > 1,
					curCmd = fm.getCommand(fm.currentReqCmd) || {},
					hash, n, ndx, found;

				// removed cwd
				if (!fm.cwd().hash && !curCmd.noChangeDirOnRemovedCwd) {
					jQuery.each(cwdParents.reverse(), function(i, h) {
						if (fm.file(h)) {
							found = true;
							fm.one(fm.currentReqCmd + 'done', function() {
								!fm.cwd().hash && fm.exec('open', h);
							});
							return false;
						}
					});
					// fallback to fm.roots[0]
					!found && !fm.cwd().hash && fm.exec('open', fm.roots[Object.keys(fm.roots)[0]]);
					return;
				}
				
				while (l--) {
					hash = files[l];
					if ((n = fm.cwdHash2Elm(hash)).length) {
						try {
							n.remove();
							--bufferExt.renderd;
						} catch(e) {
							fm.debug('error', e);
						}
					} else if ((ndx = index(hash)) !== -1) {
						buffer.splice(ndx, 1);
					}
					selectedFiles[hash] && delete selectedFiles[hash];
					if (inSearch) {
						if ((ndx = jQuery.inArray(hash, cwdHashes)) !== -1) {
							cwdHashes.splice(ndx, 1);
						}
					}
				}
				
				inSearch && fm.trigger('cwdhasheschange', cwdHashes);
				
				if (list) {
					setColwidth();
					fixTableHeader({fitWidth: ! colWidth});
				}
			},
			
			customColsNameBuild = function() {
				var name = '',
				customColsName = '';
				for (var i = 0; i < customCols.length; i++) {
					name = fm.getColumnName(customCols[i]);
					customColsName +='<td class="elfinder-cwd-view-th-'+customCols[i]+' sortable-item">'+name+'</td>';
				}
				return customColsName;
			},
			
			setItemBoxSize = function(boxSize) {
				var place, elm;
				if (!boxSize.height) {
					place = (list ? cwd.find('tbody') : cwd);
					elm = place.find(list? 'tr:first' : '[id]:first');
					boxSize.height = elm.outerHeight(true);
					if (!list) {
						boxSize.width = elm.outerWidth(true);
					}
				}
			},

			bottomMarkerShow = function(cur, cnt) {
				var place = cur || (list ? cwd.find('tbody') : cwd),
					boxSize = itemBoxSize[fm.viewType],
					col = 1,
					row;

				if (buffer.length > 0) {
					if (!bufferExt.hpi) {
						setItemBoxSize(boxSize);
						if (! list) {
							col = Math.floor(place.width() / boxSize.width);
							bufferExt.row = boxSize.height;
							bufferExt.hpi = bufferExt.row / col;
						} else {
							bufferExt.row = bufferExt.hpi = boxSize.height;
						}
					} else if (!list) {
						col = Math.floor(place.width() / boxSize.width);
					}
					row = Math.ceil((buffer.length + (cnt || 0)) / col);
					if (list && tableHeader) {
						++row;
					}
					bottomMarker.css({top: (bufferExt.row * row) + 'px'}).show();
				}
			},
			
			wrapperContextMenu = {
				contextmenu : function(e) {
					e.preventDefault();
					if (cwd.data('longtap') !== void(0)) {
						e.stopPropagation();
						return;
					}
					fm.trigger('contextmenu', {
						'type'    : 'cwd',
						'targets' : [fm.cwd().hash],
						'x'       : e.pageX,
						'y'       : e.pageY
					});
				},
				touchstart : function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					if (cwd.data('longtap') !== false) {
						wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY});
						cwd.data('tmlongtap', setTimeout(function(){
							// long tap
							cwd.data('longtap', true);
							fm.trigger('contextmenu', {
								'type'    : 'cwd',
								'targets' : [fm.cwd().hash],
								'x'       : wrapper.data('touching').x,
								'y'       : wrapper.data('touching').y
							});
						}, 500));
					}
					cwd.data('longtap', null);
				},
				touchend : function(e) {
					if (e.type === 'touchmove') {
						if (! wrapper.data('touching') ||
								( Math.abs(wrapper.data('touching').x - e.originalEvent.touches[0].pageX)
								+ Math.abs(wrapper.data('touching').y - e.originalEvent.touches[0].pageY)) > 4) {
							wrapper.data('touching', null);
						}
					} else {
						setTimeout(function() {
							cwd.removeData('longtap');
						}, 80);
					}
					clearTimeout(cwd.data('tmlongtap'));
				},
				click : function(e) {
					if (cwd.data('longtap')) {
						e.preventDefault();
						e.stopPropagation();
					}
				}
			},
			
			/**
			 * Update directory content
			 *
			 * @return void
			 */
			content = function() {
				fm.lazy(function() {
					var phash, emptyMethod, thtr;

					wz.append(selectAllCheckbox).removeClass('elfinder-cwd-wrapper-empty elfinder-search-result elfinder-incsearch-result elfinder-letsearch-result');
					if (fm.searchStatus.state > 1 || fm.searchStatus.ininc) {
						wz.addClass('elfinder-search-result' + (fm.searchStatus.ininc? ' elfinder-'+(query.substr(0,1) === '/' ? 'let':'inc')+'search-result' : ''));
					}
					
					// abort attachThumbJob
					bufferExt.attachThumbJob && bufferExt.attachThumbJob._abort();
					
					// destroy selectable for GC
					cwd.data('selectable') && cwd.selectable('disable').selectable('destroy').removeData('selectable');
					
					// notify cwd init
					fm.trigger('cwdinit');
					
					selectedNext = jQuery();
					try {
						// to avoid problem with draggable
						cwd.empty();
					} catch (e) {
						cwd.html('');
					}
					
					if (tableHeader) {
						wrapper.off('scroll.fixheader resize.fixheader');
						tableHeader.remove();
						tableHeader = null;
					}

					cwd.removeClass('elfinder-cwd-view-icons elfinder-cwd-view-list')
						.addClass('elfinder-cwd-view-'+(list ? 'list' :'icons'))
						.attr('style', '')
						.css('height', 'auto');
					bottomMarker.hide();

					wrapper[list ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-list')._padding = parseInt(wrapper.css('padding-top')) + parseInt(wrapper.css('padding-bottom'));
					if (fm.UA.iOS) {
						wrapper.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch');
					}

					if (list) {
						cwd.html('<table><thead/><tbody/></table>');
						thtr = jQuery('<tr class="ui-state-default"><td class="elfinder-cwd-view-th-name">'+fm.getColumnName('name')+'</td>'+customColsNameBuild()+'</tr>');
						cwd.find('thead').hide().append(thtr).find('td:first').append(selectAllCheckbox);
						if (jQuery.fn.sortable) {
							thtr.addClass('touch-punch touch-punch-keep-default')
								.sortable({
								axis: 'x',
								distance: 8,
								items: '> .sortable-item',
								start: function(e, ui) {
									jQuery(ui.item[0]).data('dragging', true);
									ui.placeholder
										.width(ui.helper.removeClass('ui-state-hover').width())
										.removeClass('ui-state-active')
										.addClass('ui-state-hover')
										.css('visibility', 'visible');
								},
								update: function(e, ui){
									var target = jQuery(ui.item[0]).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', ''),
										prev, done;
									customCols = jQuery.map(jQuery(this).children(), function(n) {
										var name = jQuery(n).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '');
										if (! done) {
											if (target === name) {
												done = true;
											} else {
												prev = name;
											}
										}
										return (name === 'name')? null : name;
									});
									templates.row = makeTemplateRow();
									fm.storage('cwdCols', customCols);
									prev = '.elfinder-col-'+prev+':first';
									target = '.elfinder-col-'+target+':first';
									fm.lazy(function() {
										cwd.find('tbody tr').each(function() {
											var $this = jQuery(this);
											$this.children(prev).after($this.children(target));
										});
									});
								},
								stop: function(e, ui) {
									setTimeout(function() {
										jQuery(ui.item[0]).removeData('dragging');
									}, 100);
								}
							});
						}

						thtr.find('td').addClass('touch-punch').resizable({
							handles: fm.direction === 'ltr'? 'e' : 'w',
							start: function(e, ui) {
								var target = cwd.find('td.elfinder-col-'
									+ ui.element.attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '')
									+ ':first');
								
								ui.element
									.data('dragging', true)
									.data('resizeTarget', target)
									.data('targetWidth', target.width());
								colResizing = true;
								if (cwd.find('table').css('table-layout') !== 'fixed') {
									cwd.find('tbody tr:first td').each(function() {
										jQuery(this).width(jQuery(this).width());
									});
									cwd.find('table').css('table-layout', 'fixed');
								}
							},
							resize: function(e, ui) {
								ui.element.data('resizeTarget').width(ui.element.data('targetWidth') - (ui.originalSize.width - ui.size.width));
							},
							stop : function(e, ui) {
								colResizing = false;
								fixTableHeader({fitWidth: true});
								colWidth = {};
								cwd.find('tbody tr:first td').each(function() {
									var name = jQuery(this).attr('class').split(' ')[0].replace('elfinder-col-', '');
									colWidth[name] = jQuery(this).width();
								});
								fm.storage('cwdColWidth', colWidth);
								setTimeout(function() {
									ui.element.removeData('dragging');
								}, 100);
							}
						})
						.find('.ui-resizable-handle').addClass('ui-icon ui-icon-grip-dotted-vertical');
					}

					buffer = jQuery.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; });
					
					buffer = fm.sortFiles(buffer);
					
					if (incHashes) {
						incHashes = jQuery.map(buffer, function(f) { return f.hash; });
					} else {
						cwdHashes = jQuery.map(buffer, function(f) { return f.hash; });
					}
					
					bufferExt = {
						renderd: 0,
						attachTmbs: {},
						getTmbs: [],
						tmbLoading: {},
						lazyOpts: { tm : 0 }
					};
					
					wz[(buffer.length < 1) ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-empty');
					wrapper.off(scrollEvent, render).on(scrollEvent, render).trigger(scrollEvent);
					
					// set droppable
					if (!fm.cwd().write) {
						wrapper.removeClass('native-droppable')
						       .droppable('disable')
						       .removeClass('ui-state-disabled'); // for old jQueryUI see https://bugs.jqueryui.com/ticket/5974
					} else {
						wrapper[fm.isCommandEnabled('upload')? 'addClass' : 'removeClass']('native-droppable');
						wrapper.droppable(fm.isCommandEnabled('paste')? 'enable' : 'disable');
					}
				});
			},
			
			/**
			 * CWD node itself
			 *
			 * @type JQuery
			 **/
			cwd = jQuery(this)
				.addClass('ui-helper-clearfix elfinder-cwd')
				.attr('unselectable', 'on')
				// fix ui.selectable bugs and add shift+click support 
				.on('click.'+fm.namespace, fileSelector, function(e) {
					var p    = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
						tgt  = jQuery(e.target),
						prev,
						next,
						pl,
						nl,
						sib;

					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						e.stopPropagation();
						e.preventDefault();
						p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect);
						trigger();
						requestAnimationFrame(function() {
							tgt.prop('checked', p.hasClass(clSelected));
						});
						return;
					}

					if (cwd.data('longtap') || tgt.hasClass('elfinder-cwd-nonselect')) {
						e.stopPropagation();
						return;
					}

					if (!curClickId) {
						curClickId = p.attr('id');
						setTimeout(function() {
							curClickId = '';
						}, 500);
					}
					
					if (e.shiftKey) {
						prev = p.prevAll(lastSelect || '.'+clSelected+':first');
						next = p.nextAll(lastSelect || '.'+clSelected+':first');
						pl   = prev.length;
						nl   = next.length;
					}
					if (e.shiftKey && (pl || nl)) {
						sib = pl ? p.prevUntil('#'+prev.attr('id')) : p.nextUntil('#'+next.attr('id'));
						sib.add(p).trigger(evtSelect);
					} else if (e.ctrlKey || e.metaKey) {
						p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect);
					} else {
						if (wrapper.data('touching') && p.hasClass(clSelected)) {
							wrapper.data('touching', null);
							fm.dblclick({file : fm.cwdId2Hash(this.id)});
							return;
						} else {
							unselectAll({ notrigger: true });
							p.trigger(evtSelect);
						}
					}

					trigger();
				})
				// call fm.open()
				.on('dblclick.'+fm.namespace, fileSelector, function(e) {
					if (curClickId) {
						var hash = fm.cwdId2Hash(curClickId);
						e.stopPropagation();
						if (this.id !== curClickId) {
							jQuery(this).trigger(evtUnselect);
							jQuery('#'+curClickId).trigger(evtSelect);
							trigger();
						}
						fm.dblclick({file : hash});
					}
				})
				// for touch device
				.on('touchstart.'+fm.namespace, fileSelector, function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var p   = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
						tgt = jQuery(e.target),
						nodeName = e.target.nodeName,
						sel;
					
					if ((nodeName === 'INPUT' && e.target.type === 'text') || nodeName === 'TEXTAREA' || tgt.hasClass('elfinder-cwd-nonselect')) {
						e.stopPropagation();
						return;
					}
					
					// now name editing
					if (p.find('input:text,textarea').length) {
						e.stopPropagation();
						e.preventDefault();
						return;
					}
					
					wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY});
					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						return;
					}
					
					sel = p.prevAll('.'+clSelected+':first').length +
					      p.nextAll('.'+clSelected+':first').length;
					cwd.data('longtap', null);
					if (Object.keys(selectedFiles).length
						||
						(list && e.target.nodeName !== 'TD')
						||
						(!list && this !== e.target)
					) {
						cwd.data('longtap', false);
						p.addClass(clHover);
						p.data('tmlongtap', setTimeout(function(){
							// long tap
							cwd.data('longtap', true);
							p.trigger(evtSelect);
							trigger();
							fm.trigger('contextmenu', {
								'type'    : 'files',
								'targets' : fm.selected(),
								'x'       : e.originalEvent.touches[0].pageX,
								'y'       : e.originalEvent.touches[0].pageY
							});
						}, 500));
					}
				})
				.on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, fileSelector, function(e) {
					var tgt = jQuery(e.target),
						p;
					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						return;
					}
					if (e.target.nodeName == 'INPUT' || e.target.nodeName == 'TEXTAREA') {
						e.stopPropagation();
						return;
					}
					p = this.id ? jQuery(this) : jQuery(this).parents('[id]:first');
					clearTimeout(p.data('tmlongtap'));
					if (e.type === 'touchmove') {
						wrapper.data('touching', null);
						p.removeClass(clHover);
					} else {
						if (wrapper.data('touching') && !cwd.data('longtap') && p.hasClass(clSelected)) {
							e.preventDefault();
							wrapper.data('touching', null);
							fm.dblclick({file : fm.cwdId2Hash(this.id)});
						}
						setTimeout(function() {
							cwd.removeData('longtap');
						}, 80);
					}
				})
				// attach draggable
				.on('mouseenter.'+fm.namespace, fileSelector, function(e) {
					if (scrolling) { return; }
					var $this = jQuery(this), helper = null;

					if (!mobile && !$this.data('dragRegisted') && !$this.hasClass(clTmp) && !$this.hasClass(clDraggable) && !$this.hasClass(clDisabled)) {
						$this.data('dragRegisted', true);
						if (!fm.isCommandEnabled('copy', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0)) {
							return;
						}
						$this.on('mousedown', function(e) {
							// shiftKey or altKey + drag start for HTML5 native drag function
							// Note: can no use shiftKey with the Google Chrome 
							var metaKey = e.shiftKey || e.altKey,
								disable = false;
							if (metaKey && !fm.UA.IE && cwd.data('selectable')) {
								// destroy jQuery-ui selectable while trigger native drag
								cwd.selectable('disable').selectable('destroy').removeData('selectable');
								requestAnimationFrame(function(){
									cwd.selectable(selectableOption).selectable('option', {disabled: false}).selectable('refresh').data('selectable', true);
								});
							}
							$this.removeClass('ui-state-disabled');
							if (metaKey) {
								$this.draggable('option', 'disabled', true).attr('draggable', 'true');
							} else {
								if (!$this.hasClass(clSelected)) {
									if (list) {
										disable = jQuery(e.target).closest('span,tr').is('tr');
									} else {
										disable = jQuery(e.target).hasClass('elfinder-cwd-file');
									}
								}
								if (disable) {
									$this.draggable('option', 'disabled', true);
								} else {
									$this.draggable('option', 'disabled', false)
										  .removeAttr('draggable')
									      .draggable('option', 'cursorAt', {left: 50 - parseInt(jQuery(e.currentTarget).css('margin-left')), top: 47});
								}
							}
						})
						.on('dragstart', function(e) {
							var dt = e.dataTransfer || e.originalEvent.dataTransfer || null;
							helper = null;
							if (dt && !fm.UA.IE) {
								var p = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
									elm   = jQuery('<span>'),
									url   = '',
									durl  = null,
									murl  = null,
									files = [],
									icon  = function(f) {
										var mime = f.mime, i, tmb = fm.tmb(f);
										i = '<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+fm.mime2class(mime)+' ui-corner-all"/>';
										if (tmb) {
											i = jQuery(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
										}
										return i;
									}, l, geturl = [];
								p.trigger(evtSelect);
								trigger();
								jQuery.each(selectedFiles, function(v){
									var file = fm.file(v),
										furl = file.url;
									if (file && file.mime !== 'directory') {
										if (!furl) {
											furl = fm.url(file.hash);
										} else if (furl == '1') {
											geturl.push(v);
											return true;
										}
										if (furl) {
											furl = fm.convAbsUrl(furl);
											files.push(v);
											jQuery('<a>').attr('href', furl).text(furl).appendTo(elm);
											url += furl + "\n";
											if (!durl) {
												durl = file.mime + ':' + file.name + ':' + furl;
											}
											if (!murl) {
												murl = furl + "\n" + file.name;
											}
										}
									}
								});
								if (geturl.length) {
									jQuery.each(geturl, function(i, v){
										var rfile = fm.file(v);
										rfile.url = '';
										fm.request({
											data : {cmd : 'url', target : v},
											notify : {type : 'url', cnt : 1},
											preventDefault : true
										})
										.always(function(data) {
											rfile.url = data.url? data.url : '1';
										});
									});
									return false;
								} else if (url) {
									if (dt.setDragImage) {
										helper = jQuery('<div class="elfinder-drag-helper html5-native"></div>').append(icon(fm.file(files[0]))).appendTo(jQuery(document.body));
										if ((l = files.length) > 1) {
											helper.append(icon(fm.file(files[l-1])) + '<span class="elfinder-drag-num">'+l+'</span>');
										}
										dt.setDragImage(helper.get(0), 50, 47);
									}
									dt.effectAllowed = 'copyLink';
									dt.setData('DownloadURL', durl);
									dt.setData('text/x-moz-url', murl);
									dt.setData('text/uri-list', url);
									dt.setData('text/plain', url);
									dt.setData('text/html', elm.html());
									dt.setData('elfinderfrom', window.location.href + fm.cwd().hash);
									dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), '');
								} else {
									return false;
								}
							}
						})
						.on('dragend', function(e){
							unselectAll({ notrigger: true });
							helper && helper.remove();
						})
						.draggable(fm.draggable);
					}
				})
				// add hover class to selected file
				.on(evtSelect, fileSelector, function(e) {
					var $this = jQuery(this),
						id    = fm.cwdId2Hash($this.attr('id'));
					
					if (!selectLock && !$this.hasClass(clDisabled)) {
						lastSelect = '#'+ this.id;
						$this.addClass(clSelected).children().addClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', true);
						if (! selectedFiles[id]) {
							selectedFiles[id] = true;
						}
						// will be selected next
						selectedNext = cwd.find('[id].'+clSelected+':last').next();
					}
				})
				// remove hover class from unselected file
				.on(evtUnselect, fileSelector, function(e) {
					var $this = jQuery(this), 
						id    = fm.cwdId2Hash($this.attr('id'));
					
					if (!selectLock) {
						$this.removeClass(clSelected).children().removeClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', false);
						if (cwd.hasClass('elfinder-cwd-allselected')) {
							selectCheckbox && selectAllCheckbox.children('input').prop('checked', false);
							cwd.removeClass('elfinder-cwd-allselected');
						}
						selectedFiles[id] && delete selectedFiles[id];
					}
					
				})
				// disable files wich removing or moving
				.on(evtDisable, fileSelector, function() {
					var $this  = jQuery(this).removeClass(clHover+' '+clSelected).addClass(clDisabled), 
						child  = $this.children(),
						target = (list ? $this : child.find('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename'));
					
					child.removeClass(clHover+' '+clSelected);
					
					$this.hasClass(clDroppable) && $this.droppable('disable');
					target.hasClass(clDraggable) && target.draggable('disable');
				})
				// if any files was not removed/moved - unlock its
				.on(evtEnable, fileSelector, function() {
					var $this  = jQuery(this).removeClass(clDisabled), 
						target = list ? $this : $this.children('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename');
					
					$this.hasClass(clDroppable) && $this.droppable('enable');	
					target.hasClass(clDraggable) && target.draggable('enable');
				})
				.on('scrolltoview', fileSelector, function(e, data) {
					scrollToView(jQuery(this), (data && typeof data.blink !== 'undefined')? data.blink : true);
				})
				.on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, fileSelector, function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && (scrolling || fm.UA.Mobile)) { return; }
					fm.trigger('hover', {hash : fm.cwdId2Hash(jQuery(this).attr('id')), type : e.type});
					jQuery(this).toggleClass(clHover, (e.type == 'mouseenter'));
				})
				// for file contextmenu
				.on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, '.elfinder-cwd-file-wrapper,.elfinder-cwd-filename', function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && scrolling) { return; }
					jQuery(this).closest(fileSelector).children('.elfinder-cwd-file-wrapper,.elfinder-cwd-filename').toggleClass(clActive, (e.type == 'mouseenter'));
				})
				.on('contextmenu.'+fm.namespace, function(e) {
					var file = jQuery(e.target).closest(fileSelector);
					
					if (file.get(0) === e.target && !selectedFiles[fm.cwdId2Hash(file.get(0).id)]) {
						return;
					}

					// now filename editing
					if (file.find('input:text,textarea').length) {
						e.stopPropagation();
						return;
					}
					
					if (file.length && (e.target.nodeName != 'TD' || selectedFiles[fm.cwdId2Hash(file.get(0).id)])) {
						e.stopPropagation();
						e.preventDefault();
						if (!file.hasClass(clDisabled) && !wrapper.data('touching')) {
							if (!file.hasClass(clSelected)) {
								unselectAll({ notrigger: true });
								file.trigger(evtSelect);
								trigger();
							}
							fm.trigger('contextmenu', {
								'type'    : 'files',
								'targets' : fm.selected(),
								'x'       : e.pageX,
								'y'       : e.pageY
							});

						}
						
					}
				})
				// unselect all on cwd click
				.on('click.'+fm.namespace, function(e) {
					if (e.target === this && ! cwd.data('longtap')) {
						!e.shiftKey && !e.ctrlKey && !e.metaKey && unselectAll();
					}
				})
				// prepend fake file/dir
				.on('create.'+fm.namespace, function(e, f) {
					var parent = list ? cwd.find('tbody') : cwd,
						p = parent.find('.elfinder-cwd-parent'),
						lock = f.move || false,
						file = jQuery(itemhtml(f)).addClass(clTmp),
						selected = fm.selected();
						
					if (selected.length) {
						lock && fm.trigger('lockfiles', {files: selected});
					} else {
						unselectAll();
					}

					if (p.length) {
						p.after(file);
					} else {
						parent.prepend(file);
					}
					
					setColwidth();
					wrapper.scrollTop(0).scrollLeft(0);
				})
				// unselect all selected files
				.on('unselectall', unselectAll)
				.on('selectfile', function(e, id) {
					fm.cwdHash2Elm(id).trigger(evtSelect);
					trigger();
				})
				.on('colwidth', function() {
					if (list) {
						cwd.find('table').css('table-layout', '')
							.find('td').css('width', '');
						fixTableHeader({fitWidth: true});
						fm.storage('cwdColWidth', colWidth = null);
					}
				})
				.on('iconpref', function(e, data) {
					cwd.removeClass(function(i, cName) {
						return (cName.match(/\belfinder-cwd-size\S+/g) || []).join(' ');
					});
					iconSize = data? (parseInt(data.size) || 0) : 0;
					if (!list) {
						if (iconSize > 0) {
							cwd.addClass('elfinder-cwd-size' + iconSize);
						}
						if (bufferExt.renderd) {
							requestAnimationFrame(function() {
								itemBoxSize.icons = {};
								bufferExt.hpi = null;
								bottomMarkerShow(cwd, bufferExt.renderd);
								wrapperRepaint();
							});
						}
					}
				})
				// Change icon size with mouse wheel event
				.on('onwheel' in document ? 'wheel' : 'mousewheel', function(e) {
					var tm, size, delta;
					if (!list && ((e.ctrlKey && !e.metaKey) || (!e.ctrlKey && e.metaKey))) {
						e.stopPropagation();
						e.preventDefault();
						tm = cwd.data('wheelTm');
						if (typeof tm !== 'undefined') {
							clearTimeout(tm);
							cwd.data('wheelTm', setTimeout(function() {
								cwd.removeData('wheelTm');
							}, 200));
						} else {
							cwd.data('wheelTm', false);
							size = iconSize || 0;
							delta = e.originalEvent.deltaY ? e.originalEvent.deltaY : -(e.originalEvent.wheelDelta);
							if (delta > 0) {
								if (iconSize > 0) {
									size = iconSize - 1;
								}
							} else {
								if (iconSize < options.iconsView.sizeMax) {
									size = iconSize + 1;
								}
							}
							if (size !== iconSize) {
								fm.storage('iconsize', size);
								cwd.trigger('iconpref', {size: size});
							}
						}
					}
				}),
			wrapper = jQuery('<div class="elfinder-cwd-wrapper"/>')
				// make cwd itself droppable for folders from nav panel
				.droppable(Object.assign({}, droppable, {autoDisable: false}))
				.on('contextmenu.'+fm.namespace, wrapperContextMenu.contextmenu)
				.on('touchstart.'+fm.namespace, wrapperContextMenu.touchstart)
				.on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, wrapperContextMenu.touchend)
				.on('click.'+fm.namespace, wrapperContextMenu.click)
				.on('scroll.'+fm.namespace, function() {
					if (! scrolling) {
						cwd.data('selectable') && cwd.selectable('disable');
						wrapper.trigger(scrollStartEvent);
					}
					scrolling = true;
					bufferExt.scrtm && cancelAnimationFrame(bufferExt.scrtm);
					if (bufferExt.scrtm && Math.abs((bufferExt.scrolltop || 0) - (bufferExt.scrolltop = (this.scrollTop || jQuery(this).scrollTop()))) < 5) {
						bufferExt.scrtm = 0;
						wrapper.trigger(scrollEvent);
					}
					bufferExt.scrtm = requestAnimationFrame(function() {
						bufferExt.scrtm = 0;
						wrapper.trigger(scrollEvent);
					});
				})
				.on(scrollEvent, function() {
					scrolling = false;
					wrapperRepaint();
				}),
			
			bottomMarker = jQuery('<div>&nbsp;</div>')
				.css({position: 'absolute', width: '1px', height: '1px'})
				.hide(),
			
			selectAllCheckbox = selectCheckbox? jQuery('<div class="elfinder-cwd-selectall"><input type="checkbox"/></div>')
				.attr('title', fm.i18n('selectall'))
				.on('touchstart mousedown click', function(e) {
					e.stopPropagation();
					e.preventDefault();
					if (jQuery(this).data('pending') || e.type === 'click') {
						return false;
					}
					selectAllCheckbox.data('pending', true);
					if (cwd.hasClass('elfinder-cwd-allselected')) {
						selectAllCheckbox.find('input').prop('checked', false);
						requestAnimationFrame(function() {
							unselectAll();
						});
					} else {
						selectAll();
					}
				}) : jQuery(),
			
			restm = null,
			resize = function(init) {
				var initHeight = function() {
					if (typeof bufferExt.renderd !== 'undefined') {
						var h = 0;
						wrapper.siblings('div.elfinder-panel:visible').each(function() {
							h += jQuery(this).outerHeight(true);
						});
						wrapper.height(wz.height() - h - wrapper._padding);
					}
				};
				
				init && initHeight();
				
				restm && cancelAnimationFrame(restm);
				restm = requestAnimationFrame(function(){
					!init && initHeight();
					var wph, cwdoh;
					// fix cwd height if it less then wrapper
					cwd.css('height', 'auto');
					wph = wrapper[0].clientHeight - parseInt(wrapper.css('padding-top')) - parseInt(wrapper.css('padding-bottom')) - parseInt(cwd.css('margin-top')),
					cwdoh = cwd.outerHeight(true);
					if (cwdoh < wph) {
						cwd.height(wph);
					}
				});
				
				list && ! colResizing && (init? wrapper.trigger('resize.fixheader') : fixTableHeader());
				
				wrapperRepaint();
			},
			
			// elfinder node
			parent = jQuery(this).parent().on('resize', resize),
			
			// workzone node 
			wz = parent.children('.elfinder-workzone').append(wrapper.append(this).append(bottomMarker)),
			
			// message board
			mBoard = jQuery('<div class="elfinder-cwd-message-board"/>').insertAfter(cwd),

			// Volume expires
			vExpires = jQuery('<div class="elfinder-cwd-expires" />'),

			vExpiresTm,

			showVolumeExpires = function() {
				var remain, sec, int;
				vExpiresTm && clearTimeout(vExpiresTm);
				if (curVolId && fm.volumeExpires[curVolId]) {
					sec = fm.volumeExpires[curVolId] - ((+new Date()) / 1000);
					int = (sec % 60) + 0.1;
					remain = Math.floor(sec / 60);
					vExpires.html(fm.i18n(['minsLeft', remain])).show();
					if (remain) {
						vExpiresTm = setTimeout(showVolumeExpires, int * 1000);
					}
				}
			},

			// each item box size
			itemBoxSize = {
				icons : {},
				list : {}
			},

			// has UI tree
			hasUiTree,

			// Icon size of icons view
			iconSize,

			// Current volume id
			curVolId,
			
			winScrTm;

		// IE < 11 not support CSS `pointer-events: none`
		if (!fm.UA.ltIE10) {
			mBoard.append(jQuery('<div class="elfinder-cwd-trash" />').html(fm.i18n('volume_Trash')))
			      .append(vExpires);
		}

		// setup by options
		replacement = Object.assign(replacement, options.replacement || {});
		
		try {
			colWidth = fm.storage('cwdColWidth')? fm.storage('cwdColWidth') : null;
		} catch(e) {
			colWidth = null;
		}
		
		// setup costomCols
		fm.bind('columnpref', function(e) {
			var opts = e.data || {};
			if (customCols = fm.storage('cwdCols')) {
				customCols = jQuery.grep(customCols, function(n) {
					return (options.listView.columns.indexOf(n) !== -1)? true : false;
				});
				if (options.listView.columns.length > customCols.length) {
					jQuery.each(options.listView.columns, function(i, n) {
						if (customCols.indexOf(n) === -1) {
							customCols.push(n);
						}
					});
				}
			} else {
				customCols = options.listView.columns;
			}
			// column names array that hidden
			var columnhides = fm.storage('columnhides') || null;
			if (columnhides && Object.keys(columnhides).length)
			customCols = jQuery.grep(customCols, function(n) {
				return columnhides[n]? false : true;
			});
			// make template with customCols
			templates.row = makeTemplateRow();
			// repaint if need it
			list && opts.repaint && content();
		}).trigger('columnpref');

		if (mobile) {
			// for iOS5 bug
			jQuery('body').on('touchstart touchmove touchend', function(e){});
		}
		
		selectCheckbox && cwd.addClass('elfinder-has-checkbox');
		
		jQuery(window).on('scroll.'+fm.namespace, function() {
			winScrTm && cancelAnimationFrame(winScrTm);
			winScrTm = requestAnimationFrame(function() {
				wrapper.trigger(scrollEvent);
			});
		});
		
		jQuery(document).on('keydown.'+fm.namespace, function(e) {
			if (e.keyCode == jQuery.ui.keyCode.ESCAPE) {
				if (! fm.getUI().find('.ui-widget:visible').length) {
					unselectAll();
				}
			}
		});
		
		fm
			.one('init', function(){
				var style = document.createElement('style'),
				sheet, node, base, resizeTm, iconSize, i = 0;
				if (document.head) {
					document.head.appendChild(style);
					sheet = style.sheet;
					sheet.insertRule('.elfinder-cwd-wrapper-empty .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty .native-droppable .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder'+(mobile? 'LTap' : 'Drop'))+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty .ui-droppable-disabled .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptySearch')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-incsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyIncSearch')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-letsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyLetSearch')+'" }', i++);
				}
				if (iconSize = fm.storage('iconsize') || 0) {
					cwd.trigger('iconpref', {size: iconSize});
				}
				if (! mobile) {
					fm.one('open', function() {
						sheet && fm.zIndex && sheet.insertRule('.ui-selectable-helper{z-index:'+fm.zIndex+';}', i++);
					});
					base = jQuery('<div style="position:absolute"/>');
					node = fm.getUI();
					node.on('resize', function(e, data) {
						var offset;
						e.preventDefault();
						e.stopPropagation();
						if (data && data.fullscreen) {
							offset = node.offset();
							if (data.fullscreen === 'on') {
								base.css({top:offset.top * -1 , left:offset.left * -1 }).appendTo(node);
								selectableOption.appendTo = base;
							} else {
								base.detach();
								selectableOption.appendTo = 'body';
							}
							cwd.data('selectable') && cwd.selectable('option', {appendTo : selectableOption.appendTo});
						}
					});
				}
				hasUiTree = fm.getUI('tree').length;
			})
			.bind('enable', function() {
				resize();
			})
			.bind('request.open', function() {
				bufferExt.getTmbs = [];
			})
			.one('open', function() {
				if (fm.maxTargets) {
					tmbNum = Math.min(fm.maxTargets, tmbNum);
				}
			})
			.bind('open add remove searchend', function() {
				var phash = fm.cwd().hash,
					type = this.type;
				if (type === 'open' || type === 'searchend' || fm.searchStatus.state < 2) {
					cwdHashes = jQuery.map(fm.files(phash), function(f) { return f.hash; });
					fm.trigger('cwdhasheschange', cwdHashes);
				}
				if (type === 'open') {
					var inTrash = function() {
							var isIn = false;
							jQuery.each(cwdParents, function(i, h) {
								if (fm.trashes[h]) {
									isIn = true;
									return false;
								}
							});
							return isIn;
						},
						req = phash?
							(! fm.file(phash) || hasUiTree?
								(! hasUiTree?
									fm.request({
										data: {
											cmd    : 'parents',
											target : fm.cwd().hash
										},
										preventFail : true
									}) : (function() {
										var dfd = jQuery.Deferred();
										fm.one('treesync', function(e) {
											e.data.always(function() {
												dfd.resolve();
											});
										});
										return dfd;
									})()
								) : null
							) : null,
						cwdObj = fm.cwd();
					// add/remove volume id class
					if (cwdObj.volumeid !== curVolId) {
						vExpires.empty().hide();
						if (curVolId) {
							wrapper.removeClass('elfinder-cwd-wrapper-' + curVolId);
						}
						curVolId = cwdObj.volumeid;
						showVolumeExpires();
						wrapper.addClass('elfinder-cwd-wrapper-' + curVolId);
					}
					// add/remove trash class
					jQuery.when(req).done(function() {
						cwdParents = fm.parents(cwdObj.hash);
						wrapper[inTrash()? 'addClass':'removeClass']('elfinder-cwd-wrapper-trash');
					});
					incHashes = void 0;
					unselectAll({ notrigger: true });
					content();
				}
			})
			.bind('search', function(e) {
				cwdHashes = jQuery.map(e.data.files, function(f) { return f.hash; });
				fm.trigger('cwdhasheschange', cwdHashes);
				incHashes = void 0;
				fm.searchStatus.ininc = false;
				content();
				fm.autoSync('stop');
			})
			.bind('searchend', function(e) {
				if (query || incHashes) {
					query = '';
					if (incHashes) {
						fm.trigger('incsearchend', e.data);
					} else {
						if (!e.data || !e.data.noupdate) {
							content();
						}
					}
				}
				fm.autoSync();
			})
			.bind('searchstart', function(e) {
				unselectAll();
				query = e.data.query;
			})
			.bind('incsearchstart', function(e) {
				selectedFiles = {};
				fm.lazy(function() {
					// incremental search
					var regex, q, fst = '';
					q = query = e.data.query || '';
					if (q) {
						if (q.substr(0,1) === '/') {
							q = q.substr(1);
							fst = '^';
						}
						regex = new RegExp(fst + q.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i');
						incHashes = jQuery.grep(cwdHashes, function(hash) {
							var file = fm.file(hash);
							return (file && (file.name.match(regex) || (file.i18 && file.i18.match(regex))))? true : false;
						});
						fm.trigger('incsearch', { hashes: incHashes, query: q })
							.searchStatus.ininc = true;
						content();
						fm.autoSync('stop');
					} else {
						fm.trigger('incsearchend');
					}
				});
			})
			.bind('incsearchend', function(e) {
				query = '';
				fm.searchStatus.ininc = false;
				incHashes = void 0;
				if (!e.data || !e.data.noupdate) {
					content();
				}
				fm.autoSync();
			})
			.bind('sortchange', function() {
				var lastScrollLeft = wrapper.scrollLeft(),
					allsel = cwd.hasClass('elfinder-cwd-allselected');
				
				content();
				fm.one('cwdrender', function() {
					wrapper.scrollLeft(lastScrollLeft);
					if (allsel) {
						selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true);
					}
					(allsel || Object.keys(selectedFiles).length) && trigger();
				});
			})
			.bind('viewchange', function() {
				var l      = fm.storage('view') == 'list',
					allsel = cwd.hasClass('elfinder-cwd-allselected');
				
				if (l != list) {
					list = l;
					fm.viewType = list? 'list' : 'icons';
					if (iconSize) {
						fm.one('cwdinit', function() {
							cwd.trigger('iconpref', {size: iconSize});
						});
					}
					content();
					resize();

					if (allsel) {
						cwd.addClass('elfinder-cwd-allselected');
						selectAllCheckbox.find('input').prop('checked', true);
					}
					Object.keys(selectedFiles).length && trigger();
				}
			})
			.bind('wzresize', function() {
				var place = list ? cwd.find('tbody') : cwd,
					cwdOffset;
				resize(true);
				if (bufferExt.hpi) {
					bottomMarkerShow(place, place.find('[id]').length);
				}
				
				cwdOffset = cwd.offset();
				wz.data('rectangle', Object.assign(
					{
						width: wz.width(),
						height: wz.height(),
						cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width()
					},
					wz.offset())
				);
				
				bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true);
			})
			.bind('changeclipboard', function(e) {
				clipCuts = {};
				if (e.data && e.data.clipboard && e.data.clipboard.length) {
					jQuery.each(e.data.clipboard, function(i, f) {
						if (f.cut) {
							clipCuts[f.hash] = true;
						}
					});
				}
			})
			.bind('resMixinMake', function() {
				setColwidth();
			})
			.bind('tmbreload', function(e) {
				var imgs = {},
					files = (e.data && e.data.files)? e.data.files : null;
				
				jQuery.each(files, function(i, f) {
					if (f.tmb && f.tmb != '1') {
						imgs[f.hash] = f.tmb;
					}
				});
				if (Object.keys(imgs).length) {
					attachThumbnails(imgs, true);
				}
			})
			.add(function(e) {
				var regex = query? new RegExp(query.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i') : null,
					mime  = fm.searchStatus.mime,
					inSearch = fm.searchStatus.state > 1,
					phash = inSearch && fm.searchStatus.target? fm.searchStatus.target : fm.cwd().hash,
					curPath = fm.path(phash),
					inTarget = function(f) {
						var res, parents, path;
						res = (f.phash === phash);
						if (!res && inSearch) {
							path = f.path || fm.path(f.hash);
							res = (curPath && path.indexOf(curPath) === 0);
							if (! res && fm.searchStatus.mixed) {
								res = jQuery.grep(fm.searchStatus.mixed, function(vid) { return f.hash.indexOf(vid) === 0? true : false; }).length? true : false;
							}
						}
						if (res && inSearch) {
							if (mime) {
								res = (f.mime.indexOf(mime) === 0);
							} else {
								res = (f.name.match(regex) || (f.i18 && f.i18.match(regex)))? true : false;
							}
						}
						return res;
					},
					files = jQuery.grep(e.data.added || [], function(f) { return inTarget(f)? true : false ;});
				add(files);
				if (fm.searchStatus.state === 2) {
					jQuery.each(files, function(i, f) {
						if (jQuery.inArray(f.hash, cwdHashes) === -1) {
							cwdHashes.push(f.hash);
						}
					});
					fm.trigger('cwdhasheschange', cwdHashes);
				}
				list && resize();
				wrapper.trigger(scrollEvent);
			})
			.change(function(e) {
				var phash = fm.cwd().hash,
					sel   = fm.selected(),
					files, added;

				if (query) {
					jQuery.each(e.data.changed || [], function(i, file) {
						if (fm.cwdHash2Elm(file.hash).length) {
							remove([file.hash]);
							add([file], 'change');
							jQuery.inArray(file.hash, sel) !== -1 && selectFile(file.hash);
							added = true;
						}
					});
				} else {
					jQuery.each(jQuery.grep(e.data.changed || [], function(f) { return f.phash == phash ? true : false; }), function(i, file) {
						if (fm.cwdHash2Elm(file.hash).length) {
							remove([file.hash]);
							add([file], 'change');
							jQuery.inArray(file.hash, sel) !== -1 && selectFile(file.hash);
							added = true;
						}
					});
				}
				
				if (added) {
					fm.trigger('cwdhasheschange', cwdHashes);
					list && resize();
					wrapper.trigger(scrollEvent);
				}
				
				trigger();
			})
			.remove(function(e) {
				var place = list ? cwd.find('tbody') : cwd;
				remove(e.data.removed || []);
				trigger();
				if (buffer.length < 1 && place.children(fileSelector).length < 1) {
					wz.addClass('elfinder-cwd-wrapper-empty');
					selectCheckbox && selectAllCheckbox.find('input').prop('checked', false);
					bottomMarker.hide();
					wrapper.off(scrollEvent, render);
					resize();
				} else {
					bottomMarkerShow(place);
					wrapper.trigger(scrollEvent);
				}
			})
			// select dragged file if no selected, disable selectable
			.dragstart(function(e) {
				var target = jQuery(e.data.target),
					oe     = e.data.originalEvent;

				if (target.hasClass(clFile)) {
					
					if (!target.hasClass(clSelected)) {
						!(oe.ctrlKey || oe.metaKey || oe.shiftKey) && unselectAll({ notrigger: true });
						target.trigger(evtSelect);
						trigger();
					}
				}
				
				cwd.removeClass(clDisabled).data('selectable') && cwd.selectable('disable');
				selectLock = true;
			})
			// enable selectable
			.dragstop(function() {
				cwd.data('selectable') && cwd.selectable('enable');
				selectLock = false;
			})
			.bind('lockfiles unlockfiles selectfiles unselectfiles', function(e) {
				var events = {
						lockfiles     : evtDisable ,
						unlockfiles   : evtEnable ,
						selectfiles   : evtSelect,
						unselectfiles : evtUnselect },
					event  = events[e.type],
					files  = e.data.files || [],
					l      = files.length,
					helper = e.data.helper || jQuery(),
					parents, ctr, add;

				if (l > 0) {
					parents = fm.parents(files[0]);
				}
				if (event === evtSelect || event === evtUnselect) {
					add  = (event === evtSelect),
					jQuery.each(files, function(i, hash) {
						var all = cwd.hasClass('elfinder-cwd-allselected');
						if (! selectedFiles[hash]) {
							add && (selectedFiles[hash] = true);
						} else {
							if (all) {
								selectCheckbox && selectAllCheckbox.children('input').prop('checked', false);
								cwd.removeClass('elfinder-cwd-allselected');
								all = false;
							}
							! add && delete selectedFiles[hash];
						}
					});
				}
				if (!helper.data('locked')) {
					while (l--) {
						try {
							fm.cwdHash2Elm(files[l]).trigger(event);
						} catch(e) {}
					}
					! e.data.inselect && trigger();
				}
				if (wrapper.data('dropover') && parents.indexOf(wrapper.data('dropover')) !== -1) {
					ctr = e.type !== 'lockfiles';
					helper.toggleClass('elfinder-drag-helper-plus', ctr);
					wrapper.toggleClass(clDropActive, ctr);
				}
			})
			// select new files after some actions
			.bind('mkdir mkfile duplicate upload rename archive extract paste multiupload', function(e) {
				if (e.type == 'upload' && e.data._multiupload) return;
				var phash = fm.cwd().hash, files;
				
				unselectAll({ notrigger: true });

				jQuery.each((e.data.added || []).concat(e.data.changed || []), function(i, file) { 
					file && file.phash == phash && selectFile(file.hash);
				});
				trigger();
			})
			.shortcut({
				pattern     :'ctrl+a', 
				description : 'selectall',
				callback    : selectAll
			})
			.shortcut({
				pattern     :'ctrl+shift+i', 
				description : 'selectinvert',
				callback    : selectInvert
			})
			.shortcut({
				pattern     : 'left right up down shift+left shift+right shift+up shift+down',
				description : 'selectfiles',
				type        : 'keydown' , //fm.UA.Firefox || fm.UA.Opera ? 'keypress' : 'keydown',
				callback    : function(e) { select(e.keyCode, e.shiftKey); }
			})
			.shortcut({
				pattern     : 'home',
				description : 'selectffile',
				callback    : function(e) { 
					unselectAll({ notrigger: true });
					scrollToView(cwd.find('[id]:first').trigger(evtSelect));
					trigger();
				}
			})
			.shortcut({
				pattern     : 'end',
				description : 'selectlfile',
				callback    : function(e) { 
					unselectAll({ notrigger: true });
					scrollToView(cwd.find('[id]:last').trigger(evtSelect)) ;
					trigger();
				}
			})
			.shortcut({
				pattern     : 'page_up',
				description : 'pageTurning',
				callback    : function(e) {
					if (bufferExt.itemH) {
						wrapper.scrollTop(
							Math.round(
								wrapper.scrollTop()
								- (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH
							)
						);
					}
				}
			}).shortcut({
				pattern     : 'page_down',
				description : 'pageTurning',
				callback    : function(e) { 
					if (bufferExt.itemH) {
						wrapper.scrollTop(
							Math.round(
								wrapper.scrollTop()
								+ (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH
							)
						);
					}
				}
			});
		
	});
	
	// fm.timeEnd('cwdLoad')
	
	return this;
};


/*
 * File: /js/ui/dialog.js
 */

/**
 * @class  elFinder dialog
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderdialog = function(opts, fm) {
		var platformWin = (window.navigator.platform.indexOf('Win') != -1),
		delta       = {},
		syncSize    = { enabled: false, width: false, height: false, defaultSize: null },
		fitSize     = function(dialog) {
			var opts, node;
			if (syncSize.enabled) {
				node = fm.options.dialogContained? elfNode : jQuery(window);
				opts = {
					maxWidth : syncSize.width?  node.width() - delta.width  : null,
					maxHeight: syncSize.height? node.height() - delta.height : null
				};
				Object.assign(restoreStyle, opts);
				dialog.css(opts).trigger('resize');
				if (dialog.data('hasResizable') && (dialog.resizable('option', 'maxWidth') < opts.maxWidth || dialog.resizable('option', 'maxHeight') < opts.maxHeight)) {
					dialog.resizable('option', opts);
				}
			}
		},
		syncFunc    = function(e) {
			var dialog = e.data;
			syncTm && cancelAnimationFrame(syncTm);
			syncTm = requestAnimationFrame(function() {
				var opts, offset;
				if (syncSize.enabled) {
					fitSize(dialog);
				}
			});
		},
		checkEditing = function() {
			var cldialog = 'elfinder-dialog',
				dialogs = elfNode.children('.' + cldialog + '.' + fm.res('class', 'editing') + ':visible');
			fm[dialogs.length? 'disable' : 'enable']();
		},
		propagationEvents = {},
		syncTm, dialog, elfNode, restoreStyle;
	
	if (fm && fm.ui) {
		elfNode = fm.getUI();
	} else {
		elfNode = this.closest('.elfinder');
		if (! fm) {
			fm = elfNode.elfinder('instance');
		}
	}
	
	if (typeof opts  === 'string') {
		if ((dialog = this.closest('.ui-dialog')).length) {
			if (opts === 'open') {
				if (dialog.css('display') === 'none') {
					// Need dialog.show() and hide() to detect elements size in open() callbacks
					dialog.trigger('posinit').show().trigger('open').hide();
					dialog.fadeIn(120, function() {
						fm.trigger('dialogopened', {dialog: dialog});
					});
				}
			} else if (opts === 'close' || opts === 'destroy') {
				dialog.stop(true);
				if (dialog.is(':visible') || elfNode.is(':hidden')) {
					dialog.trigger('close');
					fm.trigger('dialogclosed', {dialog: dialog});
				}
				if (opts === 'destroy') {
					dialog.remove();
					fm.trigger('dialogremoved', {dialog: dialog});
				}
			} else if (opts === 'toTop') {
				dialog.trigger('totop');
				fm.trigger('dialogtotoped', {dialog: dialog});
			} else if (opts === 'posInit') {
				dialog.trigger('posinit');
				fm.trigger('dialogposinited', {dialog: dialog});
			} else if (opts === 'tabstopsInit') {
				dialog.trigger('tabstopsInit');
				fm.trigger('dialogtabstopsinited', {dialog: dialog});
			} else if (opts === 'checkEditing') {
				checkEditing();
			}
		}
		return this;
	}
	
	opts = Object.assign({}, jQuery.fn.elfinderdialog.defaults, opts);
	
	if (opts.allowMinimize && opts.allowMinimize === 'auto') {
		opts.allowMinimize = this.find('textarea,input').length? true : false; 
	}
	opts.openMaximized = opts.allowMinimize && opts.openMaximized;
	if (opts.headerBtnPos && opts.headerBtnPos === 'auto') {
		opts.headerBtnPos = platformWin? 'right' : 'left';
	}
	if (opts.headerBtnOrder && opts.headerBtnOrder === 'auto') {
		opts.headerBtnOrder = platformWin? 'close:maximize:minimize' : 'close:minimize:maximize';
	}
	
	if (opts.modal && opts.allowMinimize) {
		opts.allowMinimize = false;
	}
	
	if (fm.options.dialogContained) {
		syncSize.width = syncSize.height = syncSize.enabled = true;
	} else {
		syncSize.width = (opts.maxWidth === 'window');
		syncSize.height = (opts.maxHeight === 'window');
		if (syncSize.width || syncSize.height) {
			syncSize.enabled = true;
		}
	}

	propagationEvents = fm.arrayFlip(opts.propagationEvents, true);
	
	this.filter(':not(.ui-dialog-content)').each(function() {
		var self       = jQuery(this).addClass('ui-dialog-content ui-widget-content'),
			clactive   = 'elfinder-dialog-active',
			cldialog   = 'elfinder-dialog',
			clnotify   = 'elfinder-dialog-notify',
			clhover    = 'ui-state-hover',
			cltabstop  = 'elfinder-tabstop',
			cl1stfocus = 'elfinder-focus',
			clmodal    = 'elfinder-dialog-modal',
			id         = parseInt(Math.random()*1000000),
			titlebar   = jQuery('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix"><span class="elfinder-dialog-title">'+opts.title+'</span></div>'),
			buttonset  = jQuery('<div class="ui-dialog-buttonset"/>'),
			buttonpane = jQuery('<div class=" ui-helper-clearfix ui-dialog-buttonpane ui-widget-content"/>')
				.append(buttonset),
			btnWidth   = 0,
			btnCnt     = 0,
			tabstops   = jQuery(),
			evCover    = jQuery('<div style="width:100%;height:100%;position:absolute;top:0px;left:0px;"/>').hide(),
			numberToTel = function() {
				if (opts.optimizeNumber) {
					dialog.find('input[type=number]').each(function() {
						jQuery(this).attr('inputmode', 'numeric');
						jQuery(this).attr('pattern', '[0-9]*');
					});
				}
			},
			tabstopsInit = function() {
				tabstops = dialog.find('.'+cltabstop);
				if (tabstops.length) {
					tabstops.attr('tabindex', '-1');
					if (! tabstops.filter('.'+cl1stfocus).length) {
						buttonset.children('.'+cltabstop+':'+(platformWin? 'first' : 'last')).addClass(cl1stfocus);
					}
				}
			},
			tabstopNext = function(cur) {
				var elms = tabstops.filter(':visible:enabled'),
					node = cur? null : elms.filter('.'+cl1stfocus+':first');
					
				if (! node || ! node.length) {
					node = elms.first();
				}
				if (cur) {
					jQuery.each(elms, function(i, elm) {
						if (elm === cur && elms[i+1]) {
							node = elms.eq(i+1);
							return false;
						}
					});
				}
				return node;
			},
			tabstopPrev = function(cur) {
				var elms = tabstops.filter(':visible:enabled'),
					node = elms.last();
				jQuery.each(elms, function(i, elm) {
					if (elm === cur && elms[i-1]) {
						node = elms.eq(i-1);
						return false;
					}
				});
				return node;
			},
			makeHeaderBtn = function() {
				jQuery.each(opts.headerBtnOrder.split(':').reverse(), function(i, v) {
					headerBtns[v] && headerBtns[v]();
				});
				if (platformWin) {
					titlebar.children('.elfinder-titlebar-button').addClass('elfinder-titlebar-button-right');
				}
			},
			headerBtns = {
				close: function() {
					titlebar.prepend(jQuery('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button"><span class="ui-icon ui-icon-closethick"/></span>')
						.on('mousedown', function(e) {
							e.preventDefault();
							e.stopPropagation();
							self.elfinderdialog('close');
						})
					);
				},
				maximize: function() {
					if (opts.allowMaximize) {
						dialog.on('resize', function(e, data) {
							var full, elm;
							e.preventDefault();
							e.stopPropagation();
							if (data && data.maximize) {
								elm = titlebar.find('.elfinder-titlebar-full');
								full = (data.maximize === 'on');
								elm.children('span.ui-icon')
									.toggleClass('ui-icon-plusthick', ! full)
									.toggleClass('ui-icon-arrowreturnthick-1-s', full);
								if (full) {
									try {
										dialog.hasClass('ui-draggable') && dialog.draggable('disable');
										dialog.hasClass('ui-resizable') && dialog.resizable('disable');
									} catch(e) {}
									self.css('width', '100%').css('height', dialog.height() - dialog.children('.ui-dialog-titlebar').outerHeight(true) - buttonpane.outerHeight(true));
								} else {
									self.attr('style', elm.data('style'));
									elm.removeData('style');
									posCheck();
									try {
										dialog.hasClass('ui-draggable') && dialog.draggable('enable');
										dialog.hasClass('ui-resizable') && dialog.resizable('enable');
									} catch(e) {}
								}
								dialog.trigger('resize', {init: true});
							}
						});
						titlebar.prepend(jQuery('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-full"><span class="ui-icon ui-icon-plusthick"/></span>')
							.on('mousedown', function(e) {
								var elm = jQuery(this);
								e.preventDefault();
								e.stopPropagation();
								if (!dialog.hasClass('elfinder-maximized') && typeof elm.data('style') === 'undefined') {
									self.height(self.height());
									elm.data('style', self.attr('style') || '');
								}
								fm.toggleMaximize(dialog);
								typeof(opts.maximize) === 'function' && opts.maximize.call(self[0]);
							})
						);
					}
					
				},
				minimize: function() {
					var btn, mnode, doffset;
					if (opts.allowMinimize) {
						btn = jQuery('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-minimize"><span class="ui-icon ui-icon-minusthick"/></span>')
							.on('mousedown', function(e) {
								var $this = jQuery(this),
									tray = fm.getUI('bottomtray'),
									dumStyle = { width: 70, height: 24 },
									dum = jQuery('<div/>').css(dumStyle).addClass(dialog.get(0).className + ' elfinder-dialog-minimized'),
									pos = {};
								
								e.preventDefault();
								e.stopPropagation();
								if (!dialog.data('minimized')) {
									// minimize
									doffset = dialog.data('minimized', true).position();
									mnode = dialog.clone().on('mousedown', function() {
										$this.trigger('mousedown');
									}).removeClass('ui-draggable ui-resizable elfinder-frontmost');
									tray.append(dum);
									Object.assign(pos, dum.offset(), dumStyle);
									dum.remove();
									mnode.height(dialog.height()).children('.ui-dialog-content:first').empty();
									fm.toHide(dialog.before(mnode));
									mnode.children('.ui-dialog-content:first,.ui-dialog-buttonpane,.ui-resizable-handle').remove();
									mnode.find('.elfinder-titlebar-minimize,.elfinder-titlebar-full').remove();
									mnode.find('.ui-dialog-titlebar-close').on('mousedown', function(e) {
										e.stopPropagation();
										e.preventDefault();
										mnode.remove();
										dialog.show();
										self.elfinderdialog('close');
									});
									mnode.animate(pos, function() {
										mnode.attr('style', '')
										.css({ maxWidth: dialog.width() })
										.addClass('elfinder-dialog-minimized')
										.appendTo(tray);
										checkEditing();
										typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]);
									});
								} else {
									//restore
									dialog.removeData('minimized').before(mnode.css(Object.assign({'position': 'absolute'}, mnode.offset())));
									fm.toFront(mnode);
									mnode.animate(Object.assign({ width: dialog.width(), height: dialog.height() }, doffset), function() {
										dialog.show();
										fm.toFront(dialog);
										mnode.remove();
										posCheck();
										checkEditing();
										dialog.trigger('resize', {init: true});
										typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]);
									});
								}
							});
						titlebar.on('dblclick', function(e) {
							jQuery(this).children('.elfinder-titlebar-minimize').trigger('mousedown');
						}).prepend(btn);
						dialog.on('togleminimize', function() {
							btn.trigger('mousedown');
						});
					}
				}
			},
			dialog = jQuery('<div class="ui-front ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable std42-dialog touch-punch '+cldialog+' '+opts.cssClass+'"/>')
				.hide()
				.append(self)
				.appendTo(elfNode)
				.draggable({
					containment : fm.options.dialogContained? elfNode : null,
					handle : '.ui-dialog-titlebar',
					start : function() {
						evCover.show();
					},
					drag : function(e, ui) {
						var top = ui.offset.top,
							left = ui.offset.left;
						if (top < 0) {
							ui.position.top = ui.position.top - top;
						}
						if (left < 0) {
							ui.position.left = ui.position.left - left;
						}
						if (fm.options.dialogContained) {
							ui.position.top < 0 && (ui.position.top = 0);
							ui.position.left < 0 && (ui.position.left = 0);
						}
					},
					stop : function(e, ui) {
						evCover.hide();
						dialog.css({height : opts.height});
						self.data('draged', true);
					}
				})
				.css({
					width     : opts.width,
					height    : opts.height,
					minWidth  : opts.minWidth,
					minHeight : opts.minHeight,
					maxWidth  : opts.maxWidth,
					maxHeight : opts.maxHeight
				})
				.on('touchstart touchmove touchend click dblclick mouseup mouseenter mouseleave mouseout mouseover mousemove', function(e) {
					// stopPropagation of user action events
					!propagationEvents[e.type] && e.stopPropagation();
				})
				.on('mousedown', function(e) {
					!propagationEvents[e.type] && e.stopPropagation();
					requestAnimationFrame(function() {
						if (dialog.is(':visible') && !dialog.hasClass('elfinder-frontmost')) {
							toFocusNode = jQuery(':focus');
							if (!toFocusNode.length) {
								toFocusNode = void(0);
							}
							dialog.trigger('totop');
						}
					});
				})
				.on('open', function() {
					dialog.data('margin-y', self.outerHeight(true) - self.height());
					if (syncSize.enabled) {
						if (opts.height && opts.height !== 'auto') {
							dialog.trigger('resize', {init: true});
						}
						if (!syncSize.defaultSize) {
							syncSize.defaultSize = { width: self.width(), height: self.height() };
						}
						fitSize(dialog);
						dialog.trigger('resize').trigger('posinit');
						elfNode.on('resize.'+fm.namespace, dialog, syncFunc);
					}
					
					if (!dialog.hasClass(clnotify)) {
						elfNode.children('.'+cldialog+':visible:not(.'+clnotify+')').each(function() {
							var d     = jQuery(this),
								top   = parseInt(d.css('top')),
								left  = parseInt(d.css('left')),
								_top  = parseInt(dialog.css('top')),
								_left = parseInt(dialog.css('left')),
								ct    = Math.abs(top - _top) < 10,
								cl    = Math.abs(left - _left) < 10;

							if (d[0] != dialog[0] && (ct || cl)) {
								dialog.css({
									top  : ct ? (top + 10) : _top,
									left : cl ? (left + 10) : _left
								});
							}
						});
					} 
					
					if (dialog.data('modal')) {
						dialog.addClass(clmodal);
						fm.getUI('overlay').elfinderoverlay('show');
					}
					
					dialog.trigger('totop');
					
					opts.openMaximized && fm.toggleMaximize(dialog);

					fm.trigger('dialogopen', {dialog: dialog});

					typeof(opts.open) == 'function' && jQuery.proxy(opts.open, self[0])();
					
					if (opts.closeOnEscape) {
						jQuery(document).on('keydown.'+id, function(e) {
							if (e.keyCode == jQuery.ui.keyCode.ESCAPE && dialog.hasClass('elfinder-frontmost')) {
								self.elfinderdialog('close');
							}
						});
					}
					dialog.hasClass(fm.res('class', 'editing')) && checkEditing();
				})
				.on('close', function(e) {
					var dialogs, dfd;
					
					if (opts.beforeclose && typeof opts.beforeclose === 'function') {
						dfd = opts.beforeclose();
						if (!dfd || !dfd.promise) {
							dfd = !dfd? jQuery.Deferred().reject() : jQuery.Deferred().resolve();
						}
					} else {
						dfd = jQuery.Deferred().resolve();
					}
					
					dfd.done(function() {
						syncSize.enabled && elfNode.off('resize.'+fm.namespace, syncFunc);
						
						if (opts.closeOnEscape) {
							jQuery(document).off('keyup.'+id);
						}
						
						if (opts.allowMaximize) {
							fm.toggleMaximize(dialog, false);
						}
						
						fm.toHide(dialog);
						dialog.data('modal') && fm.getUI('overlay').elfinderoverlay('hide');
						
						if (typeof(opts.close) == 'function') {
							jQuery.proxy(opts.close, self[0])();
						}
						if (opts.destroyOnClose && dialog.parent().length) {
							dialog.hide().remove();
						}
						
						// get focus to next dialog
						dialogs = elfNode.children('.'+cldialog+':visible');
						
						dialog.hasClass(fm.res('class', 'editing')) && checkEditing();
					});
				})
				.on('totop frontmost', function() {
					var s = fm.storage('autoFocusDialog');
					
					dialog.data('focusOnMouseOver', s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver);
					
					if (dialog.data('minimized')) {
						titlebar.children('.elfinder-titlebar-minimize').trigger('mousedown');
					}
					
					if (!dialog.data('modal') && fm.getUI('overlay').is(':visible')) {
						fm.getUI('overlay').before(dialog);
					} else {
						fm.toFront(dialog);
					}
					elfNode.children('.'+cldialog+':not(.'+clmodal+')').removeClass(clactive);
					dialog.addClass(clactive);

					! fm.UA.Mobile && (toFocusNode || tabstopNext()).trigger('focus');

					toFocusNode = void(0);
				})
				.on('posinit', function() {
					var css = opts.position,
						nodeOffset, minTop, minLeft, outerSize, win, winSize, nodeFull;
					if (dialog.hasClass('elfinder-maximized')) {
						return;
					}
					if (! css && ! dialog.data('resizing')) {
						nodeFull = elfNode.hasClass('elfinder-fullscreen');
						dialog.css(nodeFull? {
							maxWidth  : '100%',
							maxHeight : '100%',
							overflow   : 'auto'
						} : restoreStyle);
						if (fm.UA.Mobile && !nodeFull && dialog.data('rotated') === fm.UA.Rotated) {
							return;
						}
						dialog.data('rotated', fm.UA.Rotated);
						win = jQuery(window);
						nodeOffset = elfNode.offset();
						outerSize = {
							width : dialog.outerWidth(true),
							height: dialog.outerHeight(true)
						};
						outerSize.right = nodeOffset.left + outerSize.width;
						outerSize.bottom = nodeOffset.top + outerSize.height;
						winSize = {
							scrLeft: win.scrollLeft(),
							scrTop : win.scrollTop(),
							width  : win.width(),
							height : win.height()
						};
						winSize.right = winSize.scrLeft + winSize.width;
						winSize.bottom = winSize.scrTop + winSize.height;
						
						if (fm.options.dialogContained || nodeFull) {
							minTop = 0;
							minLeft = 0;
						} else {
							minTop = nodeOffset.top * -1 + winSize.scrTop;
							minLeft = nodeOffset.left * -1 + winSize.scrLeft;
						}
						css = {
							top  : outerSize.height >= winSize.height? minTop  : Math.max(minTop, parseInt((elfNode.height() - outerSize.height)/2 - 42)),
							left : outerSize.width  >= winSize.width ? minLeft : Math.max(minLeft, parseInt((elfNode.width() - outerSize.width)/2))
						};
						if (outerSize.right + css.left > winSize.right) {
							css.left = Math.max(minLeft, winSize.right - outerSize.right);
						}
						if (outerSize.bottom + css.top > winSize.bottom) {
							css.top = Math.max(minTop, winSize.bottom - outerSize.bottom);
						}
					}
					if (opts.absolute) {
						css.position = 'absolute';
					}
					css && dialog.css(css);
				})
				.on('resize', function(e, data) {
					var oh = 0, init = data && data.init, h, minH;
					if ((data && (data.minimize || data.maxmize)) || dialog.data('minimized')) {
						return;
					}
					e.stopPropagation();
					e.preventDefault();
					dialog.children('.ui-widget-header,.ui-dialog-buttonpane').each(function() {
						oh += jQuery(this).outerHeight(true);
					});
					if (!init && syncSize.enabled && !e.originalEvent && !dialog.hasClass('elfinder-maximized')) {
						h = Math.min(syncSize.defaultSize.height, Math.max(parseInt(dialog.css('max-height')), parseInt(dialog.css('min-height'))) - oh - dialog.data('margin-y'));
					} else {
						h = dialog.height() - oh - dialog.data('margin-y');
					}
					self.height(h);
					if (init) {
						return;
					}
					posCheck();
					minH = self.height();
					minH = (h < minH)? (minH + oh + dialog.data('margin-y')) : opts.minHeight;
					dialog.css('min-height', minH);
					dialog.data('hasResizable') && dialog.resizable('option', { minHeight: minH });
					if (typeof(opts.resize) === 'function') {
						jQuery.proxy(opts.resize, self[0])(e, data);
					}
				})
				.on('tabstopsInit', tabstopsInit)
				.on('focus', '.'+cltabstop, function() {
					jQuery(this).addClass(clhover).parent('label').addClass(clhover);
					this.id && jQuery(this).parent().find('label[for='+this.id+']').addClass(clhover);
				})
				.on('click', 'select.'+cltabstop, function() {
					var node = jQuery(this);
					node.data('keepFocus')? node.removeData('keepFocus') : node.data('keepFocus', true);
				})
				.on('blur', '.'+cltabstop, function() {
					jQuery(this).removeClass(clhover).removeData('keepFocus').parent('label').removeClass(clhover);
					this.id && jQuery(this).parent().find('label[for='+this.id+']').removeClass(clhover);
				})
				.on('mouseenter mouseleave', '.'+cltabstop+',label', function(e) {
					var $this = jQuery(this), labelfor;
					if (this.nodeName === 'LABEL') {
						if (!$this.children('.'+cltabstop).length && (!(labelfor = $this.attr('for')) || !jQuery('#'+labelfor).hasClass(cltabstop))) {
							return;
						}
					}
					if (opts.btnHoverFocus && dialog.data('focusOnMouseOver')) {
						if (e.type === 'mouseenter' && ! jQuery(':focus').data('keepFocus')) {
							$this.trigger('focus');
						}
					} else {
						$this.toggleClass(clhover, e.type == 'mouseenter');
					}
				})
				.on('keydown', '.'+cltabstop, function(e) {
					var $this = jQuery(this),
						esc, move, moveTo;
					if ($this.is(':focus')) {
						esc = e.keyCode === jQuery.ui.keyCode.ESCAPE;
						if (e.keyCode === jQuery.ui.keyCode.ENTER) {
							e.preventDefault();
							$this.trigger('click');
						}  else if (((e.keyCode === jQuery.ui.keyCode.TAB) && e.shiftKey) || e.keyCode === jQuery.ui.keyCode.LEFT || e.keyCode == jQuery.ui.keyCode.UP) {
							move = 'prev';
						}  else if (e.keyCode === jQuery.ui.keyCode.TAB || e.keyCode == jQuery.ui.keyCode.RIGHT || e.keyCode == jQuery.ui.keyCode.DOWN) {
							move = 'next';
						}
						if (move
								&&
							(
								($this.is('textarea') && !(e.ctrlKey || e.metaKey))
									||
								($this.is('select,span.ui-slider-handle') && e.keyCode !== jQuery.ui.keyCode.TAB)
									||
								($this.is('input:not(:checkbox,:radio)') && (!(e.ctrlKey || e.metaKey) && e.keyCode === jQuery.ui.keyCode[move === 'prev'? 'LEFT':'RIGHT']))
							)
						) {
							e.stopPropagation();
							return;
						}
						if (!esc) {
							e.stopPropagation();
						} else if ($this.is('input:not(:checkbox,:radio),textarea')) {
							if ($this.val() !== '') {
								$this.val('');
								e.stopPropagation();
							}
						}
						if (move) {
							e.preventDefault();
							(move === 'prev'? tabstopPrev : tabstopNext)(this).trigger('focus');
						}
					}
				})
				.data({modal: opts.modal}),
			posCheck = function() {
				var node = fm.getUI(),
					pos;
				if (node.hasClass('elfinder-fullscreen')) {
					pos = dialog.position();
					dialog.css('top', Math.max(Math.min(Math.max(pos.top, 0), node.height() - 100), 0));
					dialog.css('left', Math.max(Math.min(Math.max(pos.left, 0), node.width() - 200), 0));
				}
			},
			maxSize, toFocusNode;
		
		dialog.prepend(titlebar);

		makeHeaderBtn();

		jQuery.each(opts.buttons, function(name, cb) {
			var button = jQuery('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only '
					+'elfinder-btncnt-'+(btnCnt++)+' '
					+cltabstop
					+'"><span class="ui-button-text">'+name+'</span></button>')
				.on('click', jQuery.proxy(cb, self[0]));
			if (cb._cssClass) {
				button.addClass(cb._cssClass);
			}
			if (platformWin) {
				buttonset.append(button);
			} else {
				buttonset.prepend(button);
			}
		});
		
		if (buttonset.children().length) {
			dialog.append(buttonpane);
			
			dialog.show();
			buttonpane.find('button').each(function(i, btn) {
				btnWidth += jQuery(btn).outerWidth(true);
			});
			dialog.hide();
			btnWidth += 20;
			
			if (dialog.width() < btnWidth) {
				dialog.width(btnWidth);
			}
		}
		
		dialog.append(evCover);
		
		if (syncSize.enabled) {
			delta.width = dialog.outerWidth(true) - dialog.width() + ((dialog.outerWidth() - dialog.width()) / 2);
			delta.height = dialog.outerHeight(true) - dialog.height() + ((dialog.outerHeight() - dialog.height()) / 2);
		}
		
		if (fm.options.dialogContained) {
			maxSize = {
				maxWidth: elfNode.width() - delta.width,
				maxHeight: elfNode.height() - delta.height
			};
			opts.maxWidth = opts.maxWidth? Math.min(maxSize.maxWidth, opts.maxWidth) : maxSize.maxWidth;
			opts.maxHeight = opts.maxHeight? Math.min(maxSize.maxHeight, opts.maxHeight) : maxSize.maxHeight;
			dialog.css(maxSize);
		}
		
		restoreStyle = {
			maxWidth  : dialog.css('max-width'),
			maxHeight : dialog.css('max-height'),
			overflow   : dialog.css('overflow')
		};
		
		if (opts.resizable) {
			dialog.resizable({
				minWidth   : opts.minWidth,
				minHeight  : opts.minHeight,
				maxWidth   : opts.maxWidth,
				maxHeight  : opts.maxHeight,
				start      : function() {
					evCover.show();
					if (dialog.data('resizing') !== true && dialog.data('resizing')) {
						clearTimeout(dialog.data('resizing'));
					}
					dialog.data('resizing', true);
				},
				stop       : function(e, ui) {
					evCover.hide();
					dialog.data('resizing', setTimeout(function() {
						dialog.data('resizing', false);
					}, 200));
					if (syncSize.enabled) {
						syncSize.defaultSize = { width: self.width(), height: self.height() };
					}
				}
			}).data('hasResizable', true);
		} 
		
		numberToTel();
		
		tabstopsInit();
		
		typeof(opts.create) == 'function' && jQuery.proxy(opts.create, this)();
		
		if (opts.autoOpen) {
			if (opts.open) {
				requestAnimationFrame(function() {
					self.elfinderdialog('open');
				});
			} else {
				self.elfinderdialog('open');
			}
		}

		if (opts.resize) {
			fm.bind('themechange', function() {
				setTimeout(function() {
					dialog.data('margin-y', self.outerHeight(true) - self.height());
					dialog.trigger('resize', {init: true});
				}, 300);
			});
		}
	});
	
	return this;
};

jQuery.fn.elfinderdialog.defaults = {
	cssClass  : '',
	title     : '',
	modal     : false,
	resizable : true,
	autoOpen  : true,
	closeOnEscape : true,
	destroyOnClose : false,
	buttons   : {},
	btnHoverFocus : true,
	position  : null,
	absolute  : false,
	width     : 320,
	height    : 'auto',
	minWidth  : 200,
	minHeight : 70,
	maxWidth  : null,
	maxHeight : null,
	allowMinimize : 'auto',
	allowMaximize : false,
	openMaximized : false,
	headerBtnPos : 'auto',
	headerBtnOrder : 'auto',
	optimizeNumber : true,
	propagationEvents : ['mousemove', 'mouseup']
};


/*
 * File: /js/ui/fullscreenbutton.js
 */

/**
 * @class  elFinder toolbar button to switch full scrren mode.
 *
 * @author Naoki Sawada
 **/

jQuery.fn.elfinderfullscreenbutton = function(cmd) {
		return this.each(function() {
		var button = jQuery(this).elfinderbutton(cmd),
			icon   = button.children('.elfinder-button-icon'),
			tm;
		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var fullscreen = cmd.value;
				icon.addClass('elfinder-button-icon-fullscreen').toggleClass('elfinder-button-icon-unfullscreen', fullscreen);
				cmd.className = fullscreen? 'unfullscreen' : '';
			});
		});
	});
};


/*
 * File: /js/ui/navbar.js
 */

/**
 * @class elfindernav - elFinder container for diretories tree and places
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindernavbar = function(fm, opts) {
		this.not('.elfinder-navbar').each(function() {
		var nav    = jQuery(this).hide().addClass('ui-state-default elfinder-navbar'),
			parent = nav.css('overflow', 'hidden').parent(),
			wz     = parent.children('.elfinder-workzone').append(nav),
			ltr    = fm.direction == 'ltr',
			delta, deltaW, handle, swipeHandle, autoHide, setWidth, navdock,
			setWzRect = function() {
				var cwd = fm.getUI('cwd'),
					wz  = fm.getUI('workzone'),
					wzRect = wz.data('rectangle'),
					cwdOffset = cwd.offset();
				wz.data('rectangle', Object.assign(wzRect, { cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width() }));
			},
			setDelta = function() {
				nav.css('overflow', 'hidden');
				delta  = Math.round(nav.outerHeight() - nav.height());
				deltaW = Math.round(navdock.outerWidth() - navdock.innerWidth());
				nav.css('overflow', 'auto');
			};

		fm.one('init', function() {
			navdock = fm.getUI('navdock');
			var set = function() {
					setDelta();
					fm.bind('wzresize', function() {
						var navdockH = 0;
						navdock.width(nav.outerWidth() - deltaW);
						if (navdock.children().length > 1) {
							navdockH = navdock.outerHeight(true);
						}
						nav.height(wz.height() - navdockH - delta);
					}).trigger('wzresize');
				};
			if (fm.cssloaded) {
				set();
			} else {
				fm.one('cssloaded', set);
			}
		})
		.one('opendone',function() {
			handle && handle.trigger('resize');
			nav.css('overflow', 'auto');
		}).bind('themechange', setDelta);
		
		if (fm.UA.Touch) {
			autoHide = fm.storage('autoHide') || {};
			if (typeof autoHide.navbar === 'undefined') {
				autoHide.navbar = (opts.autoHideUA && opts.autoHideUA.length > 0 && jQuery.grep(opts.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length);
				fm.storage('autoHide', autoHide);
			}
			
			if (autoHide.navbar) {
				fm.one('init', function() {
					if (nav.children().length) {
						fm.uiAutoHide.push(function(){ nav.stop(true, true).trigger('navhide', { duration: 'slow', init: true }); });
					}
				});
			}
			
			fm.bind('load', function() {
				if (nav.children().length) {
					swipeHandle = jQuery('<div class="elfinder-navbar-swipe-handle"/>').hide().appendTo(wz);
					if (swipeHandle.css('pointer-events') !== 'none') {
						swipeHandle.remove();
						swipeHandle = null;
					}
				}
			});
			
			nav.on('navshow navhide', function(e, data) {
				var mode     = (e.type === 'navshow')? 'show' : 'hide',
					duration = (data && data.duration)? data.duration : 'fast',
					handleW = (data && data.handleW)? data.handleW : Math.max(50, fm.getUI().width() / 10);
				nav.stop(true, true)[mode]({
					duration: duration,
					step    : function() {
						fm.trigger('wzresize');
					},
					complete: function() {
						if (swipeHandle) {
							if (mode === 'show') {
								swipeHandle.stop(true, true).hide();
							} else {
								swipeHandle.width(handleW? handleW : '');
								fm.resources.blink(swipeHandle, 'slowonce');
							}
						}
						fm.trigger('navbar'+ mode);
						data.init && fm.trigger('uiautohide');
						setWzRect();
					}
				});
				autoHide.navbar = (mode !== 'show');
				fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {navbar: autoHide.navbar}));
			}).on('touchstart', function(e) {
				if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
					e.originalEvent._preventSwipeX = true;
				}
			});
		}
		
		if (! fm.UA.Mobile) {
			handle = nav.resizable({
					handles : ltr ? 'e' : 'w',
					minWidth : opts.minWidth || 150,
					maxWidth : opts.maxWidth || 500,
					resize : function() {
						fm.trigger('wzresize');
					},
					stop : function(e, ui) {
						fm.storage('navbarWidth', ui.size.width);
						setWzRect();
					}
				})
				.on('resize scroll', function(e) {
					var $this = jQuery(this),
						tm = $this.data('posinit');
					e.preventDefault();
					e.stopPropagation();
					if (! ltr && e.type === 'resize') {
						nav.css('left', 0);
					}
					tm && cancelAnimationFrame(tm);
					$this.data('posinit', requestAnimationFrame(function() {
						var offset = (fm.UA.Opera && nav.scrollLeft())? 20 : 2;
						handle.css('top', 0).css({
							top  : parseInt(nav.scrollTop())+'px',
							left : ltr ? 'auto' : parseInt(nav.scrollRight() -  offset) * -1,
							right: ltr ? parseInt(nav.scrollLeft() - offset) * -1 : 'auto'
						});
						if (e.type === 'resize') {
							fm.getUI('cwd').trigger('resize');
						}
					}));
				})
				.children('.ui-resizable-handle').addClass('ui-front');
		}

		if (setWidth = fm.storage('navbarWidth')) {
			nav.width(setWidth);
		} else {
			if (fm.UA.Mobile) {
				fm.one('cssloaded', function() {
					var set = function() {
						setWidth = nav.parent().width() / 2;
						if (nav.data('defWidth') > setWidth) {
							nav.width(setWidth);
						} else {
							nav.width(nav.data('defWidth'));
						}
						nav.data('width', nav.width());
						fm.trigger('wzresize');
					};
					nav.data('defWidth', nav.width());
					jQuery(window).on('resize.' + fm.namespace, set);
					set();
				});
			}
		}

	});
	
	return this;
};


/*
 * File: /js/ui/navdock.js
 */

/**
 * @class elfindernavdock - elFinder container for preview etc at below the navbar
 *
 * @author Naoki Sawada
 **/
jQuery.fn.elfindernavdock = function(fm, opts) {
		this.not('.elfinder-navdock').each(function() {
		var self = jQuery(this).hide().addClass('ui-state-default elfinder-navdock touch-punch'),
			node = self.parent(),
			wz   = node.children('.elfinder-workzone').append(self),
			resize = function(to, h) {
				var curH = h || self.height(),
					diff = to - curH,
					len  = Object.keys(sizeSyncs).length,
					calc = len? diff / len : 0,
					ovf;
				if (diff) {
					ovf = self.css('overflow');
					self.css('overflow', 'hidden');
					self.height(to);
					jQuery.each(sizeSyncs, function(id, n) {
						n.height(n.height() + calc).trigger('resize.' + fm.namespace);
					});
					fm.trigger('wzresize');
					self.css('overflow', ovf);
				}
			},
			handle = jQuery('<div class="ui-front ui-resizable-handle ui-resizable-n"/>').appendTo(self),
			sizeSyncs = {},
			resizeFn = [],
			initMaxHeight = (parseInt(opts.initMaxHeight) || 50) / 100,
			maxHeight = (parseInt(opts.maxHeight) || 90) / 100,
			basicHeight, hasNode;
		
		
		self.data('addNode', function(cNode, opts) {
			var wzH = fm.getUI('workzone').height(),
				imaxH = wzH * initMaxHeight,
				curH, tH, mH;
			opts = Object.assign({
				first: false,
				sizeSync: true,
				init: false
			}, opts);
			if (!cNode.attr('id')) {
				cNode.attr('id', fm.namespace+'-navdock-' + (+new Date()));
			}
			opts.sizeSync && (sizeSyncs[cNode.attr('id')] = cNode);
			curH = self.height();
			tH = curH + cNode.outerHeight(true);
			
			if (opts.first) {
				handle.after(cNode);
			} else {
				self.append(cNode);
			}
			hasNode = true;
			self.resizable('enable').height(tH).show();
			
			fm.trigger('wzresize');
			
			if (opts.init) {
				mH = fm.storage('navdockHeight');
				if (mH) {
					tH = mH;
				} else {
					tH = tH > imaxH? imaxH : tH;
				}
				basicHeight = tH;
			}
			resize(Math.min(tH, wzH * maxHeight));
			
			return self;
		}).data('removeNode', function(nodeId, appendTo) {
			var cNode = jQuery('#'+nodeId);
			delete sizeSyncs[nodeId];
			self.height(self.height() - jQuery('#'+nodeId).outerHeight(true));
			if (appendTo) {
				if (appendTo === 'detach') {
					cNode = cNode.detach();
				} else {
					appendTo.append(cNode);
				}
			} else {
				cNode.remove();
			}
			if (self.children().length <= 1) {
				hasNode = false;
				self.resizable('disable').height(0).hide();
			}
			fm.trigger('wzresize');
			return cNode;
		});
		
		if (! opts.disabled) {
			fm.one('init', function() {
				var ovf;
				if (fm.getUI('navbar').children().not('.ui-resizable-handle').length) {
					self.data('dockEnabled', true);
					self.resizable({
						maxHeight: fm.getUI('workzone').height() * maxHeight,
						handles: { n: handle },
						start: function(e, ui) {
							ovf = self.css('overflow');
							self.css('overflow', 'hidden');
							fm.trigger('navdockresizestart', {event: e, ui: ui}, true);
						},
						resize: function(e, ui) {
							self.css('top', '');
							fm.trigger('wzresize', { inNavdockResize : true });
						},
						stop: function(e, ui) {
							fm.trigger('navdockresizestop', {event: e, ui: ui}, true);
							self.css('top', '');
							basicHeight = ui.size.height;
							fm.storage('navdockHeight', basicHeight);
							resize(basicHeight, ui.originalSize.height);
							self.css('overflow', ovf);
						}
					});
					fm.bind('wzresize', function(e) {
						var minH, maxH, h;
						if (self.is(':visible')) {
							maxH = fm.getUI('workzone').height() * maxHeight;
							if (! e.data || ! e.data.inNavdockResize) {
								h = self.height();
								if (maxH < basicHeight) {
									if (Math.abs(h - maxH) > 1) {
										resize(maxH);
									}
								} else {
									if (Math.abs(h - basicHeight) > 1) {
										resize(basicHeight);
									}
								}
							}
							self.resizable('option', 'maxHeight', maxH);
						}
					}).bind('themechange', function() {
						var oldH = Math.round(self.height());
						requestAnimationFrame(function() {
							var curH = Math.round(self.height()),
								diff = oldH - curH;
							if (diff !== 0) {
								resize(self.height(),  curH - diff);
							}
						});
					});
				}
				fm.bind('navbarshow navbarhide', function(e) {
					self[hasNode && e.type === 'navbarshow'? 'show' : 'hide']();
				});
			});
		}
	});
	return this;
};

/*
 * File: /js/ui/overlay.js
 */


jQuery.fn.elfinderoverlay = function(opts) {
		var fm = this.parent().elfinder('instance'),
		o, cnt, show, hide;
	
	this.filter(':not(.elfinder-overlay)').each(function() {
		opts = Object.assign({}, opts);
		jQuery(this).addClass('ui-front ui-widget-overlay elfinder-overlay')
			.hide()
			.on('mousedown', function(e) {
				e.preventDefault();
				e.stopPropagation();
			})
			.data({
				cnt  : 0,
				show : typeof(opts.show) == 'function' ? opts.show : function() { },
				hide : typeof(opts.hide) == 'function' ? opts.hide : function() { }
			});
	});
	
	if (opts == 'show') {
		o    = this.eq(0);
		cnt  = o.data('cnt') + 1;
		show = o.data('show');

		fm.toFront(o);
		o.data('cnt', cnt);

		if (o.is(':hidden')) {
			o.show();
			show();
		}
	} 
	
	if (opts == 'hide') {
		o    = this.eq(0);
		cnt  = o.data('cnt') - 1;
		hide = o.data('hide');
		
		o.data('cnt', cnt);
			
		if (cnt <= 0) {
			o.hide();
			hide();
		}
	}
	
	return this;
};


/*
 * File: /js/ui/panel.js
 */

jQuery.fn.elfinderpanel = function(fm) {
		return this.each(function() {
		var panel = jQuery(this).addClass('elfinder-panel ui-state-default ui-corner-all'),
			margin = 'margin-'+(fm.direction == 'ltr' ? 'left' : 'right');
		
		fm.one('load', function(e) {
			var navbar = fm.getUI('navbar');
			
			panel.css(margin, parseInt(navbar.outerWidth(true)));
			navbar.on('resize', function(e) {
				e.preventDefault();
				e.stopPropagation();
				panel.is(':visible') && panel.css(margin, parseInt(navbar.outerWidth(true)));
			});
		});
	});
};


/*
 * File: /js/ui/path.js
 */

/**
 * @class elFinder ui
 * Display current folder path in statusbar.
 * Click on folder name in path - open folder
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderpath = function(fm, options) {
		return this.each(function() {
		var query  = '',
			target = '',
			mimes  = [],
			place  = 'statusbar',
			clHover= fm.res('class', 'hover'),
			prefix = 'path' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-',
			wzbase = jQuery('<div class="ui-widget-header ui-helper-clearfix elfinder-workzone-path"/>'),
			path   = jQuery(this).addClass('elfinder-path').html('&nbsp;')
				.on('mousedown', 'span.elfinder-path-dir', function(e) {
					var hash = jQuery(this).attr('id').substr(prefix.length);
					e.preventDefault();
					if (hash != fm.cwd().hash) {
						jQuery(this).addClass(clHover);
						if (query) {
							fm.exec('search', query, { target: hash, mime: mimes.join(' ') });
						} else {
							fm.trigger('select', {selected : [hash]}).exec('open', hash);
						}
					}
				})
				.prependTo(fm.getUI('statusbar').show()),
			roots = jQuery('<div class="elfinder-path-roots"/>').on('click', function(e) {
				e.stopPropagation();
				e.preventDefault();
				
				var roots = jQuery.map(fm.roots, function(h) { return fm.file(h); }),
				raw = [];

				jQuery.each(roots, function(i, f) {
					if (! f.phash && fm.root(fm.cwd().hash, true) !== f.hash) {
						raw.push({
							label    : fm.escape(f.i18 || f.name),
							icon     : 'home',
							callback : function() { fm.exec('open', f.hash); },
							options  : {
								iconClass : f.csscls || '',
								iconImg   : f.icon   || ''
							}
						});
					}
				});
				fm.trigger('contextmenu', {
					raw: raw,
					x: e.pageX,
					y: e.pageY
				});
			}).append('<span class="elfinder-button-icon elfinder-button-icon-menu" />').appendTo(wzbase),
			render = function(cwd) {
				var dirs = [],
					names = [];
				jQuery.each(fm.parents(cwd), function(i, hash) {
					var c = (cwd === hash)? 'elfinder-path-dir elfinder-path-cwd' : 'elfinder-path-dir',
						f = fm.file(hash),
						name = fm.escape(f.i18 || f.name);
					names.push(name);
					dirs.push('<span id="'+prefix+hash+'" class="'+c+'" title="'+names.join(fm.option('separator'))+'">'+name+'</span>');
				});
				return dirs.join('<span class="elfinder-path-other">'+fm.option('separator')+'</span>');
			},
			toWorkzone = function() {
				var prev;
				path.children('span.elfinder-path-dir').attr('style', '');
				prev = fm.direction === 'ltr'? jQuery('#'+prefix + fm.cwd().hash).prevAll('span.elfinder-path-dir:first') : jQuery();
				path.scrollLeft(prev.length? prev.position().left : 0);
			},
			fit = function() {
				if (fm.UA.CSS.flex) {
					return;
				}
				var dirs = path.children('span.elfinder-path-dir'),
					cnt  = dirs.length,
					m, bg = 0, ids;
				
				if (place === 'workzone' || cnt < 2) {
					dirs.attr('style', '');
					return;
				}
				path.width(path.css('max-width'));
				dirs.css({maxWidth: (100/cnt)+'%', display: 'inline-block'});
				m = path.width() - 9;
				path.children('span.elfinder-path-other').each(function() {
					m -= jQuery(this).width();
				});
				ids = [];
				dirs.each(function(i) {
					var dir = jQuery(this),
						w   = dir.width();
					m -= w;
					if (w < this.scrollWidth) {
						ids.push(i);
					}
				});
				path.width('');
				if (ids.length) {
					if (m > 0) {
						m = m / ids.length;
						jQuery.each(ids, function(i, k) {
							var d = jQuery(dirs[k]);
							d.css('max-width', d.width() + m);
						});
					}
					dirs.last().attr('style', '');
				} else {
					dirs.attr('style', '');
				}
			},
			hasUiTree, hasUiStat;

		fm.one('init', function() {
			hasUiTree = fm.getUI('tree').length;
			hasUiStat = fm.getUI('stat').length;
			if (! hasUiTree && options.toWorkzoneWithoutNavbar) {
				wzbase.append(path).insertBefore(fm.getUI('workzone'));
				place = 'workzone';
				fm.bind('open', toWorkzone)
				.one('opendone', function() {
					fm.getUI().trigger('resize');
				});
			}
		})
		.bind('open searchend parents', function() {
			var dirs = [];

			query  = '';
			target = '';
			mimes  = [];
			
			path.html(render(fm.cwd().hash));
			if (Object.keys(fm.roots).length > 1) {
				path.css('margin', '');
				roots.show();
			} else {
				path.css('margin', 0);
				roots.hide();
			}
			!hasUiStat && fit();
		})
		.bind('searchstart', function(e) {
			if (e.data) {
				query  = e.data.query || '';
				target = e.data.target || '';
				mimes  = e.data.mimes || [];
			}
		})
		.bind('search', function(e) {
			var dirs = [],
				html = '';
			if (target) {
				html = render(target);
			} else {
				html = fm.i18n('btnAll');
			}
			path.html('<span class="elfinder-path-other">'+fm.i18n('searcresult') + ': </span>' + html);
			fit();
		})
		// on swipe to navbar show/hide
		.bind('navbarshow navbarhide', function() {
			var wz = fm.getUI('workzone');
			if (this.type === 'navbarshow') {
				fm.unbind('open', toWorkzone);
				path.prependTo(fm.getUI('statusbar'));
				wzbase.detach();
				place = 'statusbar';
			} else {
				wzbase.append(path).insertBefore(wz);
				place = 'workzone';
				toWorkzone();
				fm.bind('open', toWorkzone);
			}
			fm.trigger('uiresize');
		})
		.bind('resize uistatchange', fit);
	});
};


/*
 * File: /js/ui/places.js
 */

/**
 * @class elFinder places/favorites ui
 *
 * @author Dmitry (dio) Levashov
 * @author Naoki Sawada
 **/
jQuery.fn.elfinderplaces = function(fm, opts) {
		return this.each(function() {
		var dirs      = {},
			c         = 'class',
			navdir    = fm.res(c, 'navdir'),
			collapsed = fm.res(c, 'navcollapse'),
			expanded  = fm.res(c, 'navexpand'),
			hover     = fm.res(c, 'hover'),
			clroot    = fm.res(c, 'treeroot'),
			dropover  = fm.res(c, 'adroppable'),
			tpl       = fm.res('tpl', 'placedir'),
			ptpl      = fm.res('tpl', 'perms'),
			spinner   = jQuery(fm.res('tpl', 'navspinner')),
			suffix    = opts.suffix? opts.suffix : '',
			key       = 'places' + suffix,
			menuTimer = null,
			/**
			 * Convert places dir node into dir hash
			 *
			 * @param  String  directory id
			 * @return String
			 **/
			id2hash   = function(id) { return id.substr(6);	},
			/**
			 * Convert places dir hash into dir node id
			 *
			 * @param  String  directory id
			 * @return String
			 **/
			hash2id   = function(hash) { return 'place-'+hash; },

			/**
			 * Convert places dir hash into dir node elment (jQuery object)
			 *
			 * @param  String  directory id
			 * @return Object
			 **/
			hash2elm  = function(hash) { return jQuery(document.getElementById(hash2id(hash))); },
			
			/**
			 * Save current places state
			 *
			 * @return void
			 **/
			save      = function() {
				var hashes = [], data = {};
				
				hashes = jQuery.map(subtree.children().find('[id]'), function(n) {
					return id2hash(n.id);
				});
				if (hashes.length) {
					jQuery.each(hashes.reverse(), function(i, h) {
						data[h] = dirs[h];
					});
				} else {
					data = null;
				}
				
				fm.storage(key, data);
			},
			/**
			 * Init dir at places
			 *
			 * @return void
			 **/
			init = function() {
				var dat, hashes;
				key = 'places'+(opts.suffix? opts.suffix : ''),
				dirs = {};
				dat = fm.storage(key);
				if (typeof dat === 'string') {
					// old data type elFinder <= 2.1.12
					dat = jQuery.grep(dat.split(','), function(hash) { return hash? true : false;});
					jQuery.each(dat, function(i, d) {
						var dir = d.split('#');
						dirs[dir[0]] = dir[1]? dir[1] : dir[0];
					});
				} else if (jQuery.isPlainObject(dat)) {
					dirs = dat;
				}
				// allow modify `dirs`
				/**
				 * example for preset places
				 * 
				 * elfinderInstance.bind('placesload', function(e, fm) {
				 * 	//if (fm.storage(e.data.storageKey) === null) { // for first time only
				 * 	if (!fm.storage(e.data.storageKey)) {           // for empty places
				 * 		e.data.dirs[targetHash] = fallbackName;     // preset folder
				 * 	}
				 * }
				 **/
				fm.trigger('placesload', {dirs: dirs, storageKey: key}, true);
				
				hashes = Object.keys(dirs);
				if (hashes.length) {
					root.prepend(spinner);
					
					fm.request({
						data : {cmd : 'info', targets : hashes},
						preventDefault : true
					})
					.done(function(data) {
						var exists = {};
						
						data.files && data.files.length && fm.cache(data.files);
						
						jQuery.each(data.files, function(i, f) {
							var hash = f.hash;
							exists[hash] = f;
						});
						jQuery.each(dirs, function(h, f) {
							add(exists[h] || Object.assign({notfound: true}, f));
						});
						if (fm.storage('placesState') > 0) {
							root.trigger('click');
						}
					})
					.always(function() {
						spinner.remove();
					});
				}
			},
			/**
			 * Return node for given dir object
			 *
			 * @param  Object  directory object
			 * @return jQuery
			 **/
			create    = function(dir, hash) {
				return jQuery(tpl.replace(/\{id\}/, hash2id(dir? dir.hash : hash))
						.replace(/\{name\}/, fm.escape(dir? dir.i18 || dir.name : hash))
						.replace(/\{cssclass\}/, dir? (fm.perms2class(dir) + (dir.notfound? ' elfinder-na' : '') + (dir.csscls? ' '+dir.csscls : '')) : '')
						.replace(/\{permissions\}/, (dir && (!dir.read || !dir.write || dir.notfound))? ptpl : '')
						.replace(/\{title\}/, (dir && dir.path)? fm.escape(dir.path) : '')
						.replace(/\{symlink\}/, '')
						.replace(/\{style\}/, (dir && dir.icon)? fm.getIconStyle(dir) : ''));
			},
			/**
			 * Add new node into places
			 *
			 * @param  Object  directory object
			 * @return void
			 **/
			add = function(dir) {
				var node, hash;

				if (dir.mime !== 'directory') {
					return false;
				}
				hash = dir.hash;
				if (!fm.files().hasOwnProperty(hash)) {
					// update cache
					fm.trigger('tree', {tree: [dir]});
				}
				
				node = create(dir, hash);
				
				dirs[hash] = dir;
				subtree.prepend(node);
				root.addClass(collapsed);
				sortBtn.toggle(subtree.children().length > 1);
				
				return true;
			},
			/**
			 * Remove dir from places
			 *
			 * @param  String  directory hash
			 * @return String  removed name
			 **/
			remove = function(hash) {
				var name = null, tgt, cnt;

				if (dirs[hash]) {
					delete dirs[hash];
					tgt = hash2elm(hash);
					if (tgt.length) {
						name = tgt.text();
						tgt.parent().remove();
						cnt = subtree.children().length;
						sortBtn.toggle(cnt > 1);
						if (! cnt) {
							root.removeClass(collapsed);
							places.removeClass(expanded);
							subtree.slideToggle(false);
						}
					}
				}
				
				return name;
			},
			/**
			 * Move up dir on places
			 *
			 * @param  String  directory hash
			 * @return void
			 **/
			moveup = function(hash) {
				var self = hash2elm(hash),
					tgt  = self.parent(),
					prev = tgt.prev('div'),
					cls  = 'ui-state-hover',
					ctm  = fm.getUI('contextmenu');
				
				menuTimer && clearTimeout(menuTimer);
				
				if (prev.length) {
					ctm.find(':first').data('placesHash', hash);
					self.addClass(cls);
					tgt.insertBefore(prev);
					prev = tgt.prev('div');
					menuTimer = setTimeout(function() {
						self.removeClass(cls);
						if (ctm.find(':first').data('placesHash') === hash) {
							ctm.hide().empty();
						}
					}, 1500);
				}
				
				if(!prev.length) {
					self.removeClass(cls);
					ctm.hide().empty();
				}
			},
			/**
			 * Update dir at places
			 *
			 * @param  Object   directory
			 * @param  String   previous hash
			 * @return Boolean
			 **/
			update = function(dir, preHash) {
				var hash = dir.hash,
					tgt  = hash2elm(preHash || hash),
					node = create(dir, hash);

				if (tgt.length > 0) {
					tgt.parent().replaceWith(node);
					dirs[hash] = dir;
					return true;
				} else {
					return false;
				}
			},
			/**
			 * Remove all dir from places
			 *
			 * @return void
			 **/
			clear = function() {
				subtree.empty();
				root.removeClass(collapsed);
				places.removeClass(expanded);
				subtree.slideToggle(false);
			},
			/**
			 * Sort places dirs A-Z
			 *
			 * @return void
			 **/
			sort = function() {
				jQuery.each(dirs, function(h, f) {
					var dir = fm.file(h) || f,
						node = create(dir, h),
						ret = null;
					if (!dir) {
						node.hide();
					}
					if (subtree.children().length) {
						jQuery.each(subtree.children(), function() {
							var current =  jQuery(this);
							if ((dir.i18 || dir.name).localeCompare(current.children('.'+navdir).text()) < 0) {
								ret = !node.insertBefore(current);
								return ret;
							}
						});
						if (ret !== null) {
							return true;
						}
					}
					!hash2elm(h).length && subtree.append(node);
				});
				save();
			},
			// sort button
			sortBtn = jQuery('<span class="elfinder-button-icon elfinder-button-icon-sort elfinder-places-root-icon" title="'+fm.i18n('cmdsort')+'"/>')
				.hide()
				.on('click', function(e) {
					e.stopPropagation();
					subtree.empty();
					sort();
				}
			),
			/**
			 * Node - wrapper for places root
			 *
			 * @type jQuery
			 **/
			wrapper = create({
					hash  : 'root-'+fm.namespace, 
					name  : fm.i18n(opts.name, 'places'),
					read  : true,
					write : true
				}),
			/**
			 * Places root node
			 *
			 * @type jQuery
			 **/
			root = wrapper.children('.'+navdir)
				.addClass(clroot)
				.on('click', function(e) {
					e.stopPropagation();
					if (root.hasClass(collapsed)) {
						places.toggleClass(expanded);
						subtree.slideToggle();
						fm.storage('placesState', places.hasClass(expanded)? 1 : 0);
					}
				})
				.append(sortBtn),
			/**
			 * Container for dirs
			 *
			 * @type jQuery
			 **/
			subtree = wrapper.children('.'+fm.res(c, 'navsubtree')),
			
			/**
			 * Main places container
			 *
			 * @type jQuery
			 **/
			places = jQuery(this).addClass(fm.res(c, 'tree')+' elfinder-places ui-corner-all')
				.hide()
				.append(wrapper)
				.appendTo(fm.getUI('navbar'))
				.on('mouseenter mouseleave', '.'+navdir, function(e) {
					jQuery(this).toggleClass('ui-state-hover', (e.type == 'mouseenter'));
				})
				.on('click', '.'+navdir, function(e) {
					var p = jQuery(this);
					if (p.data('longtap')) {
						e.stopPropagation();
						return;
					}
					! p.hasClass('elfinder-na') && fm.exec('open', p.attr('id').substr(6));
				})
				.on('contextmenu', '.'+navdir+':not(.'+clroot+')', function(e) {
					var self = jQuery(this),
						hash = self.attr('id').substr(6);
					
					e.preventDefault();

					fm.trigger('contextmenu', {
						raw : [{
							label    : fm.i18n('moveUp'),
							icon     : 'up',
							remain   : true,
							callback : function() { moveup(hash); save(); }
						},'|',{
							label    : fm.i18n('rmFromPlaces'),
							icon     : 'rm',
							callback : function() { remove(hash); save(); }
						}],
						'x'       : e.pageX,
						'y'       : e.pageY
					});
					
					self.addClass('ui-state-hover');
					
					fm.getUI('contextmenu').children().on('mouseenter', function() {
						self.addClass('ui-state-hover');
					});
					
					fm.bind('closecontextmenu', function() {
						self.removeClass('ui-state-hover');
					});
				})
				.droppable({
					tolerance  : 'pointer',
					accept     : '.elfinder-cwd-file-wrapper,.elfinder-tree-dir,.elfinder-cwd-file',
					hoverClass : fm.res('class', 'adroppable'),
					classes    : { // Deprecated hoverClass jQueryUI>=1.12.0
						'ui-droppable-hover': fm.res('class', 'adroppable')
					},
					over       : function(e, ui) {
						var helper = ui.helper,
							dir    = jQuery.grep(helper.data('files'), function(h) { return (fm.file(h).mime === 'directory' && !dirs[h])? true : false; });
						e.stopPropagation();
						helper.data('dropover', helper.data('dropover') + 1);
						if (fm.insideWorkzone(e.pageX, e.pageY)) {
							if (dir.length > 0) {
								helper.addClass('elfinder-drag-helper-plus');
								fm.trigger('unlockfiles', {files : helper.data('files'), helper: helper});
							} else {
								jQuery(this).removeClass(dropover);
							}
						}
					},
					out : function(e, ui) {
						var helper = ui.helper;
						e.stopPropagation();
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0));
						jQuery(this).removeData('dropover')
						       .removeClass(dropover);
					},
					drop       : function(e, ui) {
						var helper  = ui.helper,
							resolve = true;
						
						jQuery.each(helper.data('files'), function(i, hash) {
							var dir = fm.file(hash);
							
							if (dir && dir.mime == 'directory' && !dirs[dir.hash]) {
								add(dir);
							} else {
								resolve = false;
							}
						});
						save();
						resolve && helper.hide();
					}
				})
				// for touch device
				.on('touchstart', '.'+navdir+':not(.'+clroot+')', function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var hash = jQuery(this).attr('id').substr(6),
					p = jQuery(this)
					.addClass(hover)
					.data('longtap', null)
					.data('tmlongtap', setTimeout(function(){
						// long tap
						p.data('longtap', true);
						fm.trigger('contextmenu', {
							raw : [{
								label    : fm.i18n('rmFromPlaces'),
								icon     : 'rm',
								callback : function() { remove(hash); save(); }
							}],
							'x'       : e.originalEvent.touches[0].pageX,
							'y'       : e.originalEvent.touches[0].pageY
						});
					}, 500));
				})
				.on('touchmove touchend', '.'+navdir+':not(.'+clroot+')', function(e) {
					clearTimeout(jQuery(this).data('tmlongtap'));
					if (e.type == 'touchmove') {
						jQuery(this).removeClass(hover);
					}
				});

		if (jQuery.fn.sortable) {
			subtree.addClass('touch-punch')
			.sortable({
				appendTo : fm.getUI(),
				revert   : false,
				helper   : function(e) {
					var dir = jQuery(e.target).parent();
						
					dir.children().removeClass('ui-state-hover');
					
					return jQuery('<div class="ui-widget elfinder-place-drag elfinder-'+fm.direction+'"/>')
							.append(jQuery('<div class="elfinder-navbar"/>').show().append(dir.clone()));

				},
				stop     : function(e, ui) {
					var target = jQuery(ui.item[0]),
						top    = places.offset().top,
						left   = places.offset().left,
						width  = places.width(),
						height = places.height(),
						x      = e.pageX,
						y      = e.pageY;
					
					if (!(x > left && x < left+width && y > top && y < y+height)) {
						remove(id2hash(target.children(':first').attr('id')));
						save();
					}
				},
				update   : function(e, ui) {
					save();
				}
			});
		}

		// "on regist" for command exec
		jQuery(this).on('regist', function(e, files){
			var added = false;
			jQuery.each(files, function(i, dir) {
				if (dir && dir.mime == 'directory' && !dirs[dir.hash]) {
					if (add(dir)) {
						added = true;
					}
				}
			});
			added && save();
		});
	

		// on fm load - show places and load files from backend
		fm.one('load', function() {
			var dat, hashes;
			
			if (fm.oldAPI) {
				return;
			}
			
			places.show().parent().show();

			init();

			fm.change(function(e) {
				var changed = false;
				jQuery.each(e.data.changed, function(i, file) {
					if (dirs[file.hash]) {
						if (file.mime !== 'directory') {
							if (remove(file.hash)) {
								changed = true;
							}
						} else {
							if (update(file)) {
								changed = true;
							}
						}
					}
				});
				changed && save();
			})
			.bind('rename', function(e) {
				var changed = false;
				if (e.data.removed) {
					jQuery.each(e.data.removed, function(i, hash) {
						if (e.data.added[i]) {
							if (update(e.data.added[i], hash)) {
								changed = true;
							}
						}
					});
				}
				changed && save();
			})
			.bind('rm paste', function(e) {
				var names = [],
					changed = false;
				if (e.data.removed) {
					jQuery.each(e.data.removed, function(i, hash) {
						var name = remove(hash);
						name && names.push(name);
					});
				}
				if (names.length) {
					changed = true;
				}
				if (e.data.added && names.length) {
					jQuery.each(e.data.added, function(i, file) {
						if (jQuery.inArray(file.name, names) !== 1) {
							file.mime == 'directory' && add(file);
						}
					});
				}
				changed && save();
			})
			.bind('sync netmount', function() {
				var ev = this,
					opSuffix = opts.suffix? opts.suffix : '',
					hashes;
				
				if (ev.type === 'sync') {
					// check is change of opts.suffix
					if (suffix !== opSuffix) {
						suffix = opSuffix;
						clear();
						init();
						return;
					}
				}
				
				hashes = Object.keys(dirs);
				if (hashes.length) {
					root.prepend(spinner);

					fm.request({
						data : {cmd : 'info', targets : hashes},
						preventDefault : true
					})
					.done(function(data) {
						var exists  = {},
							updated = false,
							cwd     = fm.cwd().hash;
						jQuery.each(data.files || [], function(i, file) {
							var hash = file.hash;
							exists[hash] = file;
							if (!fm.files().hasOwnProperty(file.hash)) {
								// update cache
								fm.trigger('tree', {tree: [file]});
							}
						});
						jQuery.each(dirs, function(h, f) {
							if (f.notfound === Boolean(exists[h])) {
								if ((f.phash === cwd && ev.type !== 'netmount') || (exists[h] && exists[h].mime !== 'directory')) {
									if (remove(h)) {
										updated = true;
									}
								} else {
									if (update(exists[h] || Object.assign({notfound: true}, f))) {
										updated = true;
									}
								}
							} else if (exists[h] && exists[h].phash != cwd) {
								// update permission of except cwd
								update(exists[h]);
							}
						});
						updated && save();
					})
					.always(function() {
						spinner.remove();
					});
				}
			});
			
		});
		
	});
};


/*
 * File: /js/ui/searchbutton.js
 */

/**
 * @class  elFinder toolbar search button widget.
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindersearchbutton = function(cmd) {
		return this.each(function() {
		var result = false,
			fm     = cmd.fm,
			disabled = fm.res('class', 'disabled'),
			isopts = cmd.options.incsearch || { enable: false },
			sTypes = cmd.options.searchTypes,
			id     = function(name){return fm.namespace + fm.escape(name);},
			toolbar= fm.getUI('toolbar'),
			btnCls = fm.res('class', 'searchbtn'),
			button = jQuery(this)
				.hide()
				.addClass('ui-widget-content elfinder-button '+btnCls)
				.on('click', function(e) {
					e.stopPropagation();
				}),
			getMenuOffset = function() {
				var fmNode = fm.getUI(),
					baseOffset = fmNode.offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					maxHeight : fmNode.height() - 40
				};
			},
			search = function() {
				input.data('inctm') && clearTimeout(input.data('inctm'));
				var val = jQuery.trim(input.val()),
					from = !jQuery('#' + id('SearchFromAll')).prop('checked'),
					mime = jQuery('#' + id('SearchMime')).prop('checked'),
					type = '';
				if (from) {
					if (jQuery('#' + id('SearchFromVol')).prop('checked')) {
						from = fm.root(fm.cwd().hash);
					} else {
						from = fm.cwd().hash;
					}
				}
				if (mime) {
					mime = val;
					val = '.';
				}
				if (typeSet) {
					type = typeSet.children('input:checked').val();
				}
				if (val) {
					input.trigger('focus');
					cmd.exec(val, from, mime, type).done(function() {
						result = true;
					}).fail(function() {
						abort();
					});
					
				} else {
					fm.trigger('searchend');
				}
			},
			abort = function() {
				input.data('inctm') && clearTimeout(input.data('inctm'));
				input.val('').trigger('blur');
				if (result || incVal) {
					result = false;
					incVal = '';
					fm.lazy(function() {
						fm.trigger('searchend');
					});
				}
			},
			incVal = '',
			input  = jQuery('<input type="text" size="42"/>')
				.on('focus', function() {
					// close other menus
					!button.hasClass('ui-state-active') && fm.getUI().click();
					inFocus = true;
					incVal = '';
					button.addClass('ui-state-active');
					fm.trigger('uiresize');
					opts && opts.css(getMenuOffset()).slideDown(function() {
						// Care for on browser window re-active
						button.addClass('ui-state-active');
						fm.toFront(opts);
					});
				})
				.on('blur', function() {
					inFocus = false;
					if (opts) {
						if (!opts.data('infocus')) {
							opts.slideUp(function() {
								button.removeClass('ui-state-active');
								fm.trigger('uiresize');
								fm.toHide(opts);
							});
						} else {
							opts.data('infocus', false);
						}
					} else {
						button.removeClass('ui-state-active');
					}
				})
				.appendTo(button)
				// to avoid fm shortcuts on arrows
				.on('keypress', function(e) {
					e.stopPropagation();
				})
				.on('keydown', function(e) {
					e.stopPropagation();
					if (e.keyCode === jQuery.ui.keyCode.ENTER) {
						search();
					} else if (e.keyCode === jQuery.ui.keyCode.ESCAPE) {
						e.preventDefault();
						abort();
					}
				}),
			opts, typeSet, cwdReady, inFocus;
		
		if (isopts.enable) {
			isopts.minlen = isopts.minlen || 2;
			isopts.wait = isopts.wait || 500;
			input
				.attr('title', fm.i18n('incSearchOnly'))
				.on('compositionstart', function() {
					input.data('composing', true);
				})
				.on('compositionend', function() {
					input.removeData('composing');
					input.trigger('input'); // for IE, edge
				})
				.on('input', function() {
					if (! input.data('composing')) {
						input.data('inctm') && clearTimeout(input.data('inctm'));
						input.data('inctm', setTimeout(function() {
							var val = input.val();
							if (val.length === 0 || val.length >= isopts.minlen) {
								(incVal !== val) && fm.trigger('incsearchstart', { query: val });
								incVal = val;
								if (val === '' && fm.searchStatus.state > 1 && fm.searchStatus.query) {
									input.val(fm.searchStatus.query).trigger('select');
								} 
							}
						}, isopts.wait));
					}
				});
			
			if (fm.UA.ltIE8) {
				input.on('keydown', function(e) {
						if (e.keyCode === 229) {
							input.data('imetm') && clearTimeout(input.data('imetm'));
							input.data('composing', true);
							input.data('imetm', setTimeout(function() {
								input.removeData('composing');
							}, 100));
						}
					})
					.on('keyup', function(e) {
						input.data('imetm') && clearTimeout(input.data('imetm'));
						if (input.data('composing')) {
							e.keyCode === jQuery.ui.keyCode.ENTER && input.trigger('compositionend');
						} else {
							input.trigger('input');
						}
					});
			}
		}
		
		jQuery('<span class="ui-icon ui-icon-search" title="'+cmd.title+'"/>')
			.appendTo(button)
			.on('mousedown', function(e) {
				e.stopPropagation();
				e.preventDefault();
				if (button.hasClass('ui-state-active')) {
					search();
				} else {
					input.trigger('focus');
				}
			});
		
		jQuery('<span class="ui-icon ui-icon-close"/>')
			.appendTo(button)
			.on('mousedown', function(e) {
				e.stopPropagation();
				e.preventDefault();
				if (input.val() === '' && !button.hasClass('ui-state-active')) {
					input.trigger('focus');
				} else {
					abort();
				}
			});
		
		// wait when button will be added to DOM
		fm.bind('toolbarload', function(){
			var parent = button.parent();
			if (parent.length) {
				toolbar.prepend(button.show());
				parent.remove();
				// position icons for ie7
				if (fm.UA.ltIE7) {
					var icon = button.children(fm.direction == 'ltr' ? '.ui-icon-close' : '.ui-icon-search');
					icon.css({
						right : '',
						left  : parseInt(button.width())-icon.outerWidth(true)
					});
				}
			}
		});
		
		fm
			.one('init', function() {
				fm.getUI('cwd').on('touchstart click', function() {
					inFocus && input.trigger('blur');
				});
			})
			.one('open', function() {
				opts = (fm.api < 2.1)? null : jQuery('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-search-menu ui-corner-all"/>')
					.append(
						jQuery('<div class="buttonset"/>')
							.append(
								jQuery('<input id="'+id('SearchFromCwd')+'" name="serchfrom" type="radio" checked="checked"/><label for="'+id('SearchFromCwd')+'">'+fm.i18n('btnCwd')+'</label>'),
								jQuery('<input id="'+id('SearchFromVol')+'" name="serchfrom" type="radio"/><label for="'+id('SearchFromVol')+'">'+fm.i18n('btnVolume')+'</label>'),
								jQuery('<input id="'+id('SearchFromAll')+'" name="serchfrom" type="radio"/><label for="'+id('SearchFromAll')+'">'+fm.i18n('btnAll')+'</label>')
							),
						jQuery('<div class="buttonset elfinder-search-type"/>')
							.append(
								jQuery('<input id="'+id('SearchName')+'" name="serchcol" type="radio" checked="checked" value="SearchName"/><label for="'+id('SearchName')+'">'+fm.i18n('btnFileName')+'</label>')
							)
					)
					.hide()
					.appendTo(fm.getUI());
				if (opts) {
					if (sTypes) {
						typeSet = opts.find('.elfinder-search-type');
						jQuery.each(cmd.options.searchTypes, function(i, v) {
							typeSet.append(jQuery('<input id="'+id(i)+'" name="serchcol" type="radio" value="'+fm.escape(i)+'"/><label for="'+id(i)+'">'+fm.i18n(v.name)+'</label>'));
						});
					}
					opts.find('div.buttonset').buttonset();
					jQuery('#'+id('SearchFromAll')).next('label').attr('title', fm.i18n('searchTarget', fm.i18n('btnAll')));
					if (sTypes) {
						jQuery.each(sTypes, function(i, v) {
							if (v.title) {
								jQuery('#'+id(i)).next('label').attr('title', fm.i18n(v.title));
							}
						});
					}
					opts.on('mousedown', 'div.buttonset', function(e){
							e.stopPropagation();
							opts.data('infocus', true);
						})
						.on('click', 'input', function(e) {
							e.stopPropagation();
							jQuery.trim(input.val())? search() : input.trigger('focus');
						})
						.on('close', function() {
							input.trigger('blur');
						});
				}
			})
			.bind('searchend', function() {
				input.val('');
			})
			.bind('open parents', function() {
				var dirs    = [],
					volroot = fm.file(fm.root(fm.cwd().hash));
				
				if (volroot) {
					jQuery.each(fm.parents(fm.cwd().hash), function(i, hash) {
						dirs.push(fm.file(hash).name);
					});
		
					jQuery('#'+id('SearchFromCwd')).next('label').attr('title', fm.i18n('searchTarget', dirs.join(fm.option('separator'))));
					jQuery('#'+id('SearchFromVol')).next('label').attr('title', fm.i18n('searchTarget', volroot.name));
				}
			})
			.bind('open', function() {
				incVal && abort();
			})
			.bind('cwdinit', function() {
				cwdReady = false;
			})
			.bind('cwdrender',function() {
				cwdReady = true;
			})
			.bind('keydownEsc', function() {
				if (incVal && incVal.substr(0, 1) === '/') {
					incVal = '';
					input.val('');
					fm.trigger('searchend');
				}
			})
			.shortcut({
				pattern     : 'ctrl+f f3',
				description : cmd.title,
				callback    : function() { 
					input.trigger('select').trigger('focus');
				}
			})
			.shortcut({
				pattern     : 'a b c d e f g h i j k l m n o p q r s t u v w x y z dig0 dig1 dig2 dig3 dig4 dig5 dig6 dig7 dig8 dig9 num0 num1 num2 num3 num4 num5 num6 num7 num8 num9',
				description : fm.i18n('firstLetterSearch'),
				callback    : function(e) { 
					if (! cwdReady) { return; }
					
					var code = e.originalEvent.keyCode,
						next = function() {
							var sel = fm.selected(),
								key = jQuery.ui.keyCode[(!sel.length || fm.cwdHash2Elm(sel[0]).next('[id]').length)? 'RIGHT' : 'HOME'];
							jQuery(document).trigger(jQuery.Event('keydown', { keyCode: key, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
						},
						val;
					if (code >= 96 && code <= 105) {
						code -= 48;
					}
					val = '/' + String.fromCharCode(code);
					if (incVal !== val) {
						input.val(val);
						incVal = val;
						fm
							.trigger('incsearchstart', { query: val })
							.one('cwdrender', next);
					} else{
						next();
					}
				}
			});

	});
};


/*
 * File: /js/ui/sortbutton.js
 */

/**
 * @class  elFinder toolbar button menu with sort variants.
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindersortbutton = function(cmd) {
		return this.each(function() {
		var fm       = cmd.fm,
			name     = cmd.name,
			c        = 'class',
			disabled = fm.res(c, 'disabled'),
			hover    = fm.res(c, 'hover'),
			item     = 'elfinder-button-menu-item',
			selected = item+'-selected',
			asc      = selected+'-asc',
			desc     = selected+'-desc',
			text     = jQuery('<span class="elfinder-button-text">'+cmd.title+'</span>'),
			button   = jQuery(this).addClass('ui-state-default elfinder-button elfinder-menubutton elfiner-button-'+name)
				.attr('title', cmd.title)
				.append('<span class="elfinder-button-icon elfinder-button-icon-'+name+'"/>', text)
				.on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button.toggleClass(hover, e.type === 'mouseenter'); })
				.on('click', function(e) {
					if (!button.hasClass(disabled)) {
						e.stopPropagation();
						menu.is(':hidden') && fm.getUI().click();
						menu.css(getMenuOffset()).slideToggle({
							duration: 100,
							done: function(e) {
								fm[menu.is(':visible')? 'toFront' : 'toHide'](menu);
							}
						});
					}
				}),
			hide = function() { fm.toHide(menu); },
			menu = jQuery('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu ui-corner-all"/>')
				.hide()
				.appendTo(fm.getUI())
				.on('mouseenter mouseleave', '.'+item, function(e) { jQuery(this).toggleClass(hover, e.type === 'mouseenter'); })
				.on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
				})
				.on('close', hide),
			update = function() {
				menu.children('[rel]').removeClass(selected+' '+asc+' '+desc)
					.filter('[rel="'+fm.sortType+'"]')
					.addClass(selected+' '+(fm.sortOrder == 'asc' ? asc : desc));

				menu.children('.elfinder-sort-stick').toggleClass(selected, fm.sortStickFolders);
				menu.children('.elfinder-sort-tree').toggleClass(selected, fm.sortAlsoTreeview);
			},
			getMenuOffset = function() {
				var baseOffset = fm.getUI().offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					left : buttonOffset.left - baseOffset.left
				};
			},
			tm;
			
		text.hide();
		
		jQuery.each(fm.sortRules, function(name, value) {
			menu.append(jQuery('<div class="'+item+'" rel="'+name+'"><span class="ui-icon ui-icon-arrowthick-1-n"/><span class="ui-icon ui-icon-arrowthick-1-s"/>'+fm.i18n('sort'+name)+'</div>').data('type', name));
		});
		
		menu.children().on('click', function(e) {
			cmd.exec([], jQuery(this).removeClass(hover).attr('rel'));
		});
		
		jQuery('<div class="'+item+' '+item+'-separated elfinder-sort-ext elfinder-sort-stick"><span class="ui-icon ui-icon-check"/>'+fm.i18n('sortFoldersFirst')+'</div>')
			.appendTo(menu)
			.on('click', function() {
				cmd.exec([], 'stick');
			});

		fm.one('init', function() {
			if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) {
				jQuery('<div class="'+item+' '+item+'-separated elfinder-sort-ext elfinder-sort-tree"><span class="ui-icon ui-icon-check"/>'+fm.i18n('sortAlsoTreeview')+'</div>')
				.appendTo(menu)
				.on('click', function() {
					cmd.exec([], 'tree');
				});
			}
		})
		.bind('disable select', hide)
		.bind('open', function() {
			menu.children('[rel]').each(function() {
				var $this = jQuery(this);
				$this.toggle(fm.sorters[$this.attr('rel')]);
			});
		}).bind('sortchange', update).getUI().on('click', hide);
		
		if (menu.children().length > 1) {
			cmd.change(function() {
					tm && cancelAnimationFrame(tm);
					tm = requestAnimationFrame(function() {
						button.toggleClass(disabled, cmd.disabled());
						update();
					});
				})
				.change();
		} else {
			button.addClass(disabled);
		}

	});
	
};


/*
 * File: /js/ui/stat.js
 */

/**
 * @class elFinder ui
 * Display number of files/selected files and its size in statusbar
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderstat = function(fm) {
		return this.each(function() {
		var size       = jQuery(this).addClass('elfinder-stat-size'),
			sel        = jQuery('<div class="elfinder-stat-selected"/>')
				.on('click', 'a', function(e) {
					var hash = jQuery(this).data('hash');
					e.preventDefault();
					fm.exec('opendir', [ hash ]);
				}),
			titleitems = fm.i18n('items'),
			titlesel   = fm.i18n('selected'),
			titlesize  = fm.i18n('size'),
			setstat    = function(files) {
				var c = 0, 
					s = 0,
					cwd = fm.cwd(),
					calc = true,
					hasSize = true;

				if (cwd.sizeInfo || cwd.size) {
					s = cwd.size;
					calc = false;
				}
				jQuery.each(files, function(i, file) {
					c++;
					if (calc) {
						s += parseInt(file.size) || 0;
						if (hasSize === true && file.mime === 'directory' && !file.sizeInfo) {
							hasSize = false;
						}
					}
				});
				size.html(titleitems+': <span class="elfinder-stat-incsearch"></span>'+c+',&nbsp;<span class="elfinder-stat-size'+(hasSize? ' elfinder-stat-size-recursive' : '')+'">'+fm.i18n(hasSize? 'sum' : 'size')+': '+fm.formatSize(s)+'</span>')
					.attr('title', size.text());
				fm.trigger('uistatchange');
			},
			setIncsearchStat = function(data) {
				size.find('span.elfinder-stat-incsearch').html(data? data.hashes.length + ' / ' : '');
				size.attr('title', size.text());
				fm.trigger('uistatchange');
			},
			setSelect = function(files) {
				var s = 0,
					c = 0,
					dirs = [],
					path, file;

				if (files.length === 1) {
					file = files[0];
					s = file.size;
					if (fm.searchStatus.state === 2) {
						path = fm.escape(file.path? file.path.replace(/\/[^\/]*$/, '') : '..');
						dirs.push('<a href="#elf_'+file.phash+'" data-hash="'+file.hash+'" title="'+path+'">'+path+'</a>');
					}
					dirs.push(fm.escape(file.i18 || file.name));
					sel.html(dirs.join('/') + (s > 0 ? ', '+fm.formatSize(s) : ''));
				} else if (files.length) {
					jQuery.each(files, function(i, file) {
						c++;
						s += parseInt(file.size)||0;
					});
					sel.html(c ? titlesel+': '+c+', '+titlesize+': '+fm.formatSize(s) : '&nbsp;');
				} else {
					sel.html('');
				}
				sel.attr('title', sel.text());
				fm.trigger('uistatchange');
			};

		fm.getUI('statusbar').prepend(size).append(sel).show();
		if (fm.UA.Mobile && jQuery.fn.tooltip) {
			fm.getUI('statusbar').tooltip({
				classes: {
					'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
				},
				tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
				track: true
			});
		}
		
		fm
		.bind('cwdhasheschange', function(e) {
			setstat(jQuery.map(e.data, function(h) { return fm.file(h); }));
		})
		.change(function(e) {
			var files = e.data.changed || [],
				cwdHash = fm.cwd().hash;
			jQuery.each(files, function() {
				if (this.hash === cwdHash) {
					if (this.size) {
						size.children('.elfinder-stat-size').addClass('elfinder-stat-size-recursive').html(fm.i18n('sum')+': '+fm.formatSize(this.size));
						size.attr('title', size.text());
					}
					return false;
				}
			});
		})
		.select(function() {
			setSelect(fm.selectedFiles());
		})
		.bind('open', function() {
			setSelect([]);
		})
		.bind('incsearch', function(e) {
			setIncsearchStat(e.data);
		})
		.bind('incsearchend', function() {
			setIncsearchStat();
		})
		;
	});
};


/*
 * File: /js/ui/toast.js
 */

/**
 * @class  elFinder toast
 * 
 * This was created inspired by the toastr. Thanks to developers of toastr.
 * CodeSeven/toastr: http://johnpapa.net <https://github.com/CodeSeven/toastr>
 *
 * @author Naoki Sawada
 **/
jQuery.fn.elfindertoast = function(opts, fm) {
		var defOpts = Object.assign({
		mode: 'success', // or 'info', 'warning' and 'error'
		msg: '',
		showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery
		showDuration: 300,
		showEasing: 'swing', //swing and linear are built into jQuery
		onShown: undefined,
		hideMethod: 'fadeOut',
		hideDuration: 1500,
		hideEasing: 'swing',
		onHidden: undefined,
		timeOut: 3000,
		extNode: undefined,
		button: undefined,
		width: undefined
	}, jQuery.isPlainObject(fm.options.uiOptions.toast.defaults)? fm.options.uiOptions.toast.defaults : {});
	return this.each(function() {
		opts = Object.assign({}, defOpts, opts || {});
		
		var self = jQuery(this),
			show = function(notm) {
				self.stop();
				fm.toFront(self);
				self[opts.showMethod]({
					duration: opts.showDuration,
					easing: opts.showEasing,
					complete: function() {
						opts.onShown && opts.onShown();
						if (!notm && opts.timeOut) {
							rmTm = setTimeout(rm, opts.timeOut);
						}
					}
				});
			},
			rm = function() {
				self[opts.hideMethod]({
					duration: opts.hideDuration,
					easing: opts.hideEasing,
					complete: function() {
						opts.onHidden && opts.onHidden();
						self.remove();
					}
				});
			},
			rmTm;
		
		self.on('click', function(e) {
			e.stopPropagation();
			e.preventDefault();
			rmTm && clearTimeout(rmTm);
			opts.onHidden && opts.onHidden();
			self.stop().remove();
		}).on('mouseenter mouseleave', function(e) {
			if (opts.timeOut) {
				rmTm && clearTimeout(rmTm);
				rmTm = null;
				if (e.type === 'mouseenter') {
					show(true);
				} else {
					rmTm = setTimeout(rm, opts.timeOut);
				}
			}
		}).hide().addClass('toast-' + opts.mode).append(jQuery('<div class="elfinder-toast-msg"/>').html(opts.msg.replace(/%([a-zA-Z0-9]+)%/g, function(m, m1) {
			return fm.i18n(m1);
		})));
		
		if (opts.extNode) {
			self.append(opts.extNode);
		}

		if (opts.button) {
			self.append(
				jQuery('<button class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"/>')
				.append(jQuery('<span class="ui-button-text"/>').text(fm.i18n(opts.button.text)))
				.on('mouseenter mouseleave', function(e) { 
					jQuery(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
				})
				.on('click', opts.button.click || function(){})
			);
		}

		if (opts.width) {
			self.css('max-width', opts.width);
		}
		
		show();
	});
};

/*
 * File: /js/ui/toolbar.js
 */

/**
 * @class  elFinder toolbar
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindertoolbar = function(fm, opts) {
		this.not('.elfinder-toolbar').each(function() {
		var commands = fm._commands,
			self     = jQuery(this).addClass('ui-helper-clearfix ui-widget-header elfinder-toolbar'),
			options  = {
				// default options
				displayTextLabel: false,
				labelExcludeUA: ['Mobile'],
				autoHideUA: ['Mobile'],
				showPreferenceButton: 'none'
			},
			filter   = function(opts) {
				return jQuery.grep(opts, function(v) {
					if (jQuery.isPlainObject(v)) {
						options = Object.assign(options, v);
						return false;
					}
					return true;
				});
			},
			render = function(disabled){
				var name,cmdPref;
				
				jQuery.each(buttons, function(i, b) { b.detach(); });
				self.empty();
				l = panels.length;
				while (l--) {
					if (panels[l]) {
						panel = jQuery('<div class="ui-widget-content ui-corner-all elfinder-buttonset"/>');
						i = panels[l].length;
						while (i--) {
							name = panels[l][i];
							if ((!disabled || !disabled[name]) && (cmd = commands[name])) {
								button = 'elfinder'+cmd.options.ui;
								if (! buttons[name] && jQuery.fn[button]) {
									buttons[name] = jQuery('<div/>')[button](cmd);
								}
								if (buttons[name]) {
									buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
									panel.prepend(buttons[name]);
								}
							}
						}
						
						panel.children().length && self.prepend(panel);
						panel.children(':gt(0)').before('<span class="ui-widget-content elfinder-toolbar-button-separator"/>');

					}
				}
				
				if (cmdPref = commands['preference']) {
					//cmdPref.state = !self.children().length? 0 : -1;
					if (options.showPreferenceButton === 'always' || (!self.children().length && options.showPreferenceButton === 'auto')) {
						//cmdPref.state = 0;
						panel = jQuery('<div class="ui-widget-content ui-corner-all elfinder-buttonset"/>');
						name = 'preference';
						button = 'elfinder'+cmd.options.ui;
						buttons[name] = jQuery('<div/>')[button](cmdPref);
						buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
						panel.prepend(buttons[name]);
						self.append(panel);
					}
				}
				
				(! self.data('swipeClose') && self.children().length)? self.show() : self.hide();
				prevHeight = self[0].clientHeight;
				fm.trigger('toolbarload').trigger('uiresize');
			},
			buttons = {},
			panels   = filter(opts || []),
			dispre   = null,
			uiCmdMapPrev = '',
			prevHeight = 0,
			contextRaw = [],
			l, i, cmd, panel, button, swipeHandle, autoHide, textLabel, resizeTm;
		
		// normalize options
		options.showPreferenceButton = options.showPreferenceButton.toLowerCase();
		
		if (options.displayTextLabel !== 'none') {
			// correction of options.displayTextLabel
			textLabel = fm.storage('toolbarTextLabel');
			if (textLabel === null) {
				textLabel = (options.displayTextLabel && (! options.labelExcludeUA || ! options.labelExcludeUA.length || ! jQuery.grep(options.labelExcludeUA, function(v){ return fm.UA[v]? true : false; }).length));
			} else {
				textLabel = (textLabel == 1);
			}
			contextRaw.push({
				label    : fm.i18n('textLabel'),
				icon     : 'text',
				callback : function() {
					textLabel = ! textLabel;
					self.css('height', '').find('.elfinder-button-text')[textLabel? 'show':'hide']();
					fm.trigger('uiresize').storage('toolbarTextLabel', textLabel? '1' : '0');
				},
			});
		}

		if (options.preferenceInContextmenu && commands['preference']) {
			contextRaw.push({
				label    : fm.i18n('toolbarPref'),
				icon     : 'preference',
				callback : function() {
					fm.exec('preference', void(0), {tab: 'toolbar'});
				}
			});
		}

		// add contextmenu
		if (contextRaw.length) {
			self.on('contextmenu', function(e) {
					e.stopPropagation();
					e.preventDefault();
					fm.trigger('contextmenu', {
						raw: contextRaw,
						x: e.pageX,
						y: e.pageY
					});
				}).on('touchstart', function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					self.data('tmlongtap') && clearTimeout(self.data('tmlongtap'));
					self.removeData('longtap')
						.data('longtap', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY})
						.data('tmlongtap', setTimeout(function() {
							self.removeData('longtapTm')
								.trigger({
									type: 'contextmenu',
									pageX: self.data('longtap').x,
									pageY: self.data('longtap').y
								})
								.data('longtap', {longtap: true});
						}, 500));
				}).on('touchmove touchend', function(e) {
					if (self.data('tmlongtap')) {
						if (e.type === 'touchend' ||
								( Math.abs(self.data('longtap').x - e.originalEvent.touches[0].pageX)
								+ Math.abs(self.data('longtap').y - e.originalEvent.touches[0].pageY)) > 4)
						clearTimeout(self.data('tmlongtap'));
						self.removeData('longtapTm');
					}
				}).on('click', function(e) {
					if (self.data('longtap') && self.data('longtap').longtap) {
						e.stopImmediatePropagation();
						e.preventDefault();
					}
				}).on('touchend click', '.elfinder-button', function(e) {
					if (self.data('longtap') && self.data('longtap').longtap) {
						e.stopImmediatePropagation();
						e.preventDefault();
					}
				}
			);
		}

		self.prev().length && self.parent().prepend(this);
		
		render();
		
		fm.bind('open sync select toolbarpref', function() {
			var disabled = Object.assign({}, fm.option('disabledFlip')),
				userHides = fm.storage('toolbarhides'),
				doRender, sel, disabledKeys;
			
			if (! userHides && Array.isArray(options.defaultHides)) {
				userHides = {};
				jQuery.each(options.defaultHides, function() {
					userHides[this] = true;
				});
				fm.storage('toolbarhides', userHides);
			}
			if (this.type === 'select') {
				if (fm.searchStatus.state < 2) {
					return;
				}
				sel = fm.selected();
				if (sel.length) {
					disabled = fm.getDisabledCmds(sel, true);
				}
			}
			
			jQuery.each(userHides, function(n) {
				if (!disabled[n]) {
					disabled[n] = true;
				}
			});
			
			if (Object.keys(fm.commandMap).length) {
				jQuery.each(fm.commandMap, function(from, to){
					if (to === 'hidden') {
						disabled[from] = true;
					}
				});
			}
			
			disabledKeys = Object.keys(disabled);
			if (!dispre || dispre.toString() !== disabledKeys.sort().toString()) {
				render(disabledKeys.length? disabled : null);
				doRender = true;
			}
			dispre = disabledKeys.sort();

			if (doRender || uiCmdMapPrev !== JSON.stringify(fm.commandMap)) {
				uiCmdMapPrev = JSON.stringify(fm.commandMap);
				if (! doRender) {
					// reset toolbar
					jQuery.each(jQuery('div.elfinder-button'), function(){
						var origin = jQuery(this).data('origin');
						if (origin) {
							jQuery(this).after(origin).detach();
						}
					});
				}
				if (Object.keys(fm.commandMap).length) {
					jQuery.each(fm.commandMap, function(from, to){
						var cmd = fm._commands[to],
							button = cmd? 'elfinder'+cmd.options.ui : null,
							btn;
						if (button && jQuery.fn[button]) {
							btn = buttons[from];
							if (btn) {
								if (! buttons[to] && jQuery.fn[button]) {
									buttons[to] = jQuery('<div/>')[button](cmd);
									if (buttons[to]) {
										buttons[to].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
										if (cmd.extendsCmd) {
											buttons[to].children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd);
										}
									}
								}
								if (buttons[to]) {
									btn.after(buttons[to]);
									buttons[to].data('origin', btn.detach());
								}
							}
						}
					});
				}
			}
		}).bind('resize', function(e) {
			resizeTm && cancelAnimationFrame(resizeTm);
			resizeTm = requestAnimationFrame(function() {
				var h = self[0].clientHeight;
				if (prevHeight !== h) {
					prevHeight = h;
					fm.trigger('uiresize');
				}
			});
		});
		
		if (fm.UA.Touch) {
			autoHide = fm.storage('autoHide') || {};
			if (typeof autoHide.toolbar === 'undefined') {
				autoHide.toolbar = (options.autoHideUA && options.autoHideUA.length > 0 && jQuery.grep(options.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length);
				fm.storage('autoHide', autoHide);
			}
			
			if (autoHide.toolbar) {
				fm.one('init', function() {
					fm.uiAutoHide.push(function(){ self.stop(true, true).trigger('toggle', { duration: 500, init: true }); });
				});
			}
			
			fm.bind('load', function() {
				swipeHandle = jQuery('<div class="elfinder-toolbar-swipe-handle"/>').hide().appendTo(fm.getUI());
				if (swipeHandle.css('pointer-events') !== 'none') {
					swipeHandle.remove();
					swipeHandle = null;
				}
			});
			
			self.on('toggle', function(e, data) {
				var wz    = fm.getUI('workzone'),
					toshow= self.is(':hidden'),
					wzh   = wz.height(),
					h     = self.height(),
					tbh   = self.outerHeight(true),
					delta = tbh - h,
					opt   = Object.assign({
						step: function(now) {
							wz.height(wzh + (toshow? (now + delta) * -1 : h - now));
							fm.trigger('resize');
						},
						always: function() {
							requestAnimationFrame(function() {
								self.css('height', '');
								fm.trigger('uiresize');
								if (swipeHandle) {
									if (toshow) {
										swipeHandle.stop(true, true).hide();
									} else {
										swipeHandle.height(data.handleH? data.handleH : '');
										fm.resources.blink(swipeHandle, 'slowonce');
									}
								}
								toshow && self.scrollTop('0px');
								data.init && fm.trigger('uiautohide');
							});
						}
					}, data);
				self.data('swipeClose', ! toshow).stop(true, true).animate({height : 'toggle'}, opt);
				autoHide.toolbar = !toshow;
				fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {toolbar: autoHide.toolbar}));
			}).on('touchstart', function(e) {
				if (self.scrollBottom() > 5) {
					e.originalEvent._preventSwipeY = true;
				}
			});
		}
	});
	
	return this;
};


/*
 * File: /js/ui/tree.js
 */

/**
 * @class  elFinder folders tree
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindertree = function(fm, opts) {
		var treeclass = fm.res('class', 'tree');
	
	this.not('.'+treeclass).each(function() {

		var c = 'class', mobile = fm.UA.Mobile,
			
			/**
			 * Root directory class name
			 *
			 * @type String
			 */
			root      = fm.res(c, 'treeroot'),

			/**
			 * Open root dir if not opened yet
			 *
			 * @type Boolean
			 */
			openRoot  = opts.openRootOnLoad,

			/**
			 * Open current work dir if not opened yet
			 *
			 * @type Boolean
			 */
			openCwd   = opts.openCwdOnOpen,

			
			/**
			 * Auto loading current directory parents and do expand their node
			 *
			 * @type Boolean
			 */
			syncTree  = openCwd || opts.syncTree,
			
			/**
			 * Subtree class name
			 *
			 * @type String
			 */
			subtree   = fm.res(c, 'navsubtree'),
			
			/**
			 * Directory class name
			 *
			 * @type String
			 */
			navdir    = fm.res(c, 'treedir'),
			
			/**
			 * Directory CSS selector
			 *
			 * @type String
			 */
			selNavdir = 'span.' + navdir,
			
			/**
			 * Collapsed arrow class name
			 *
			 * @type String
			 */
			collapsed = fm.res(c, 'navcollapse'),
			
			/**
			 * Expanded arrow class name
			 *
			 * @type String
			 */
			expanded  = fm.res(c, 'navexpand'),
			
			/**
			 * Class name to mark arrow for directory with already loaded children
			 *
			 * @type String
			 */
			loaded    = 'elfinder-subtree-loaded',
			
			/**
			 * Class name to mark need subdirs request
			 *
			 * @type String
			 */
			chksubdir = 'elfinder-subtree-chksubdir',
			
			/**
			 * Arraw class name
			 *
			 * @type String
			 */
			arrow = fm.res(c, 'navarrow'),
			
			/**
			 * Current directory class name
			 *
			 * @type String
			 */
			active    = fm.res(c, 'active'),
			
			/**
			 * Droppable dirs dropover class
			 *
			 * @type String
			 */
			dropover = fm.res(c, 'adroppable'),
			
			/**
			 * Hover class name
			 *
			 * @type String
			 */
			hover    = fm.res(c, 'hover'),
			
			/**
			 * Disabled dir class name
			 *
			 * @type String
			 */
			disabled = fm.res(c, 'disabled'),
			
			/**
			 * Draggable dir class name
			 *
			 * @type String
			 */
			draggable = fm.res(c, 'draggable'),
			
			/**
			 * Droppable dir  class name
			 *
			 * @type String
			 */
			droppable = fm.res(c, 'droppable'),
			
			/**
			 * root wrapper class
			 * 
			 * @type String
			 */
			wrapperRoot = 'elfinder-navbar-wrapper-root',

			/**
			 * Un-disabled cmd `paste` volume's root wrapper class
			 * 
			 * @type String
			 */
			pastable = 'elfinder-navbar-wrapper-pastable',
			
			/**
			 * Un-disabled cmd `upload` volume's root wrapper class
			 * 
			 * @type String
			 */
			uploadable = 'elfinder-navbar-wrapper-uploadable',
			
			/**
			 * Is position x inside Navbar
			 * 
			 * @param x Numbar
			 * 
			 * @return
			 */
			insideNavbar = function(x) {
				var left = navbar.offset().left;
					
				return left <= x && x <= left + navbar.width();
			},
			
			/**
			 * To call subdirs elements queue
			 * 
			 * @type Object
			 */
			subdirsQue = {},
			
			/**
			 * To exec subdirs elements ids
			 * 
			 */
			subdirsExecQue = [],
			
			/**
			 * Request subdirs to backend
			 * 
			 * @param id String
			 * 
			 * @return Deferred
			 */
			subdirs = function(ids) {
				var targets = [];
				jQuery.each(ids, function(i, id) {
					subdirsQue[id] && targets.push(fm.navId2Hash(id));
					delete subdirsQue[id];
				});
				if (targets.length) {
					return fm.request({
						data: {
							cmd: 'subdirs',
							targets: targets,
							preventDefault : true
						}
					}).done(function(res) {
						if (res && res.subdirs) {
							jQuery.each(res.subdirs, function(hash, subdirs) {
								var elm = fm.navHash2Elm(hash);
								elm.removeClass(chksubdir);
								elm[subdirs? 'addClass' : 'removeClass'](collapsed);
							});
						}
					});
				}
			},
			
			subdirsJobRes = null,
			
			/**
			 * To check target element is in window of subdirs
			 * 
			 * @return void
			 */
			checkSubdirs = function() {
				var ids = Object.keys(subdirsQue);
				if (ids.length) {
					subdirsJobRes && subdirsJobRes._abort();
					execSubdirsTm && clearTimeout(execSubdirsTm);
					subdirsExecQue = [];
					subdirsJobRes = fm.asyncJob(function(id) {
						return fm.isInWindow(jQuery('#'+id))? id : null;
					}, ids, { numPerOnce: 200 })
					.done(function(arr) {
						if (arr.length) {
							subdirsExecQue = arr;
							execSubdirs();
						}
					});
				}
			},
			
			subdirsPending = 0,
			execSubdirsTm,
			
			/**
			 * Exec subdirs as batch request
			 * 
			 * @return void
			 */
			execSubdirs = function() {
				var cnt = opts.subdirsMaxConn - subdirsPending,
					atOnce = fm.maxTargets? Math.min(fm.maxTargets, opts.subdirsAtOnce) : opts.subdirsAtOnce,
					i, ids;
				execSubdirsTm && cancelAnimationFrame(execSubdirsTm);
				if (subdirsExecQue.length) {
					if (cnt > 0) {
						for (i = 0; i < cnt; i++) {
							if (subdirsExecQue.length) {
								subdirsPending++;
								subdirs(subdirsExecQue.splice(0, atOnce)).always(function() {
									subdirsPending--;
									execSubdirs();
								});
							}
						}
					} else {
						execSubdirsTm = requestAnimationFrame(function() {
							subdirsExecQue.length && execSubdirs();
						});
					}
				}
			},
			
			drop = fm.droppable.drop,
			
			/**
			 * Droppable options
			 *
			 * @type Object
			 */
			droppableopts = jQuery.extend(true, {}, fm.droppable, {
				// show subfolders on dropover
				over : function(e, ui) {
					var dst    = jQuery(this),
						helper = ui.helper,
						cl     = hover+' '+dropover,
						hash, status;
					e.stopPropagation();
					helper.data('dropover', helper.data('dropover') + 1);
					dst.data('dropover', true);
					if (ui.helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) {
						dst.removeClass(cl);
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					if (! insideNavbar(e.clientX)) {
						dst.removeClass(cl);
						return;
					}
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					dst.addClass(hover);
					if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
						dst.data('expandTimer', setTimeout(function() {
							dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click');
						}, 500));
					}
					if (dst.is('.elfinder-ro,.elfinder-na')) {
						dst.removeClass(dropover);
						//helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					hash = fm.navId2Hash(dst.attr('id'));
					dst.data('dropover', hash);
					jQuery.each(ui.helper.data('files'), function(i, h) {
						if (h === hash || (fm.file(h).phash === hash && !ui.helper.hasClass('elfinder-drag-helper-plus'))) {
							dst.removeClass(cl);
							return false; // break jQuery.each
						}
					});
					if (helper.data('locked')) {
						status = 'elfinder-drag-helper-plus';
					} else {
						status = 'elfinder-drag-helper-move';
						if (e.shiftKey || e.ctrlKey || e.metaKey) {
							status += ' elfinder-drag-helper-plus';
						}
					}
					dst.hasClass(dropover) && helper.addClass(status);
					requestAnimationFrame(function(){ dst.hasClass(dropover) && helper.addClass(status); });
				},
				out : function(e, ui) {
					var dst    = jQuery(this),
						helper = ui.helper;
					e.stopPropagation();
					if (insideNavbar(e.clientX)) {
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					}
					helper.data('dropover', Math.max(helper.data('dropover') - 1, 0));
					dst.data('expandTimer') && clearTimeout(dst.data('expandTimer'));
					dst.removeData('dropover')
					   .removeClass(hover+' '+dropover);
				},
				deactivate : function() {
					jQuery(this).removeData('dropover')
					       .removeClass(hover+' '+dropover);
				},
				drop : function(e, ui) {
					insideNavbar(e.clientX) && drop.call(this, e, ui);
				}
			}),
			
			spinner = jQuery(fm.res('tpl', 'navspinner')),
			
			/**
			 * Directory html template
			 *
			 * @type String
			 */
			tpl = fm.res('tpl', 'navdir'),
			
			/**
			 * Permissions marker html template
			 *
			 * @type String
			 */
			ptpl = fm.res('tpl', 'perms'),
			
			/**
			 * Lock marker html template
			 *
			 * @type String
			 */
			ltpl = fm.res('tpl', 'lock'),
			
			/**
			 * Symlink marker html template
			 *
			 * @type String
			 */
			stpl = fm.res('tpl', 'symlink'),
			
			/**
			 * Directory hashes that has more pages
			 * 
			 * @type Object
			 */
			hasMoreDirs = {},
			
			/**
			 * Html template replacement methods
			 *
			 * @type Object
			 */
			replace = {
				id          : function(dir) { return fm.navHash2Id(dir.hash); },
				name        : function(dir) { return fm.escape(dir.i18 || dir.name); },
				cssclass    : function(dir) {
					var cname = (dir.phash && ! dir.isroot ? '' : root)+' '+navdir+' '+fm.perms2class(dir);
					dir.dirs && !dir.link && (cname += ' ' + collapsed) && dir.dirs == -1 && (cname += ' ' + chksubdir);
					opts.getClass && (cname += ' ' + opts.getClass(dir));
					dir.csscls && (cname += ' ' + fm.escape(dir.csscls));
					return cname;
				},
				root        : function(dir) {
					var cls = '';
					if (!dir.phash || dir.isroot) {
						cls += ' '+wrapperRoot;
						if (!dir.disabled || dir.disabled.length < 1) {
							cls += ' '+pastable+' '+uploadable;
						} else {
							if (jQuery.inArray('paste', dir.disabled) === -1) {
								cls += ' '+pastable;
							}
							if (jQuery.inArray('upload', dir.disabled) === -1) {
								cls += ' '+uploadable;
							}
						}
						return cls;
					} else {
						return '';
					}
				},
				permissions : function(dir) { return !dir.read || !dir.write ? ptpl : ''; },
				symlink     : function(dir) { return dir.alias ? stpl : ''; },
				style       : function(dir) { return dir.icon ? fm.getIconStyle(dir) : ''; }
			},
			
			/**
			 * Return html for given dir
			 *
			 * @param  Object  directory
			 * @return String
			 */
			itemhtml = function(dir) {
				return tpl.replace(/(?:\{([a-z]+)\})/ig, function(m, key) {
					var res = replace[key] ? replace[key](dir) : (dir[key] || '');
					if (key === 'id' && dir.dirs == -1) {
						subdirsQue[res] = res;
					}
					return res;
				});
			},
			
			/**
			 * Return only dirs from files list
			 *
			 * @param  Array   files list
			 * @param  Boolean do check exists
			 * @return Array
			 */
			filter = function(files, checkExists) {
				return jQuery.map(files || [], function(f) {
					return (f.mime === 'directory' && (!checkExists || fm.navHash2Elm(f.hash).length)) ? f : null;
				});
			},
			
			/**
			 * Find parent subtree for required directory
			 *
			 * @param  String  dir hash
			 * @return jQuery
			 */
			findSubtree = function(hash) {
				return hash ? fm.navHash2Elm(hash).next('.'+subtree) : tree;
			},
			
			/**
			 * Find directory (wrapper) in required node
			 * before which we can insert new directory
			 *
			 * @param  jQuery  parent directory
			 * @param  Object  new directory
			 * @return jQuery
			 */
			findSibling = function(subtree, dir) {
				var node = subtree.children(':first'),
					info;

				while (node.length) {
					info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')));
					
					if ((info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')))) 
					&& compare(dir, info) < 0) {
						return node;
					}
					node = node.next();
				}
				return subtree.children('button.elfinder-navbar-pager-next');
			},
			
			/**
			 * Add new dirs in tree
			 *
			 * @param  Array  dirs list
			 * @return void
			 */
			updateTree = function(dirs) {
				var length  = dirs.length,
					orphans = [],
					i = length,
					tgts = jQuery(),
					done = {},
					cwd = fm.cwd(),
					append = function(parent, dirs, start, direction) {
						var hashes = {},
							curStart = 0,
							max = fm.newAPI? Math.min(10000, Math.max(10, opts.subTreeMax)) : 10000,
							setHashes = function() {
								hashes = {};
								jQuery.each(dirs, function(i, d) {
									hashes[d.hash] = i;
								});
							},
							change = function(mode) {
								if (mode === 'prepare') {
									jQuery.each(dirs, function(i, d) {
										d.node && parent.append(d.node.hide());
									});
								} else if (mode === 'done') {
									jQuery.each(dirs, function(i, d) {
										d.node && d.node.detach().show();
									});
								}
							},
							update = function(e, data) {
								var i, changed;
								e.stopPropagation();
								
								if (data.select) {
									render(getStart(data.select));
									return;
								}
								
								if (data.change) {
									change(data.change);
									return;
								}
								
								if (data.removed && data.removed.length) {
									dirs = jQuery.grep(dirs, function(d) {
										if (data.removed.indexOf(d.hash) === -1) {
											return true;
										} else {
											!changed && (changed = true);
											return false;
										}
									});
								}
								
								if (data.added && data.added.length) {
									dirs = dirs.concat(jQuery.grep(data.added, function(d) {
										if (hashes[d.hash] === void(0)) {
											!changed && (changed = true);
											return true;
										} else {
											return false;
										}
									}));
								}
								if (changed) {
									dirs.sort(compare);
									setHashes();
									render(curStart);
								}
							},
							getStart = function(target) {
								if (hashes[target] !== void(0)) {
									return Math.floor(hashes[target] / max) * max;
								}
								return void(0);
							},
							target = fm.navId2Hash(parent.prev('[id]').attr('id')),
							render = function(start, direction) {
								var html = [],
									nodes = {},
									total, page, s, parts, prev, next, prevBtn, nextBtn;
								delete hasMoreDirs[target];
								curStart = start;
								parent.off('update.'+fm.namespace, update);
								if (dirs.length > max) {
									parent.on('update.'+fm.namespace, update);
									if (start === void(0)) {
										s = 0;
										setHashes();
										start = getStart(cwd.hash);
										if (start === void(0)) {
											start = 0;
										}
									}
									parts = dirs.slice(start, start + max);
									hasMoreDirs[target] = parent;
									prev = start? Math.max(-1, start - max) : -1;
									next = (start + max >= dirs.length)? 0 : start + max;
									total = Math.ceil(dirs.length/max);
									page = Math.ceil(start/max);
								}
								jQuery.each(parts || dirs, function(i, d) {
									html.push(itemhtml(d));
									if (d.node) {
										nodes[d.hash] = d.node;
									}
								});
								if (prev > -1) {
									prevBtn = jQuery('<button class="elfinder-navbar-pager elfinder-navbar-pager-prev"/>')
										.text(fm.i18n('btnPrevious', page, total))
										.button({
											icons: {
												primary: "ui-icon-caret-1-n"
											}
										})
										.on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
											render(prev, 'up');
										});
								} else {
									prevBtn = jQuery();
								}
								if (next) {
									nextBtn = jQuery('<button class="elfinder-navbar-pager elfinder-navbar-pager-next"/>')
										.text(fm.i18n('btnNext', page + 2, total))
										.button({
											icons: {
												primary: "ui-icon-caret-1-s"
											}
										})
										.on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
											render(next, 'down');
										});
								} else {
									nextBtn = jQuery();
								}
								detach();
								parent.empty()[parts? 'addClass' : 'removeClass']('elfinder-navbar-hasmore').append(prevBtn, html.join(''), nextBtn);
								jQuery.each(nodes, function(h, n) {
									fm.navHash2Elm(h).parent().replaceWith(n);
								});
								if (direction) {
									autoScroll(fm.navHash2Id(parts[direction === 'up'? parts.length - 1 : 0].hash));
								}
								! mobile && fm.lazy(function() { updateDroppable(null, parent); });
							},
							detach = function() {
								jQuery.each(parent.children('.elfinder-navbar-wrapper'), function(i, elm) {
									var n = jQuery(elm),
										ch = n.children('[id]:first'),
										h, c;
									if (ch.hasClass(loaded)) {
										h = fm.navId2Hash(ch.attr('id'));
										if (h && (c = hashes[h]) !== void(0)) {
											dirs[c].node = n.detach();
										}
									}
								});
							};
						
						render();
					},
					dir, html, parent, sibling, init, atonce = {}, updates = [], base, node,
					firstVol = true; // check for netmount volume
				
				while (i--) {
					dir = dirs[i];

					if (done[dir.hash] || fm.navHash2Elm(dir.hash).length) {
						continue;
					}
					done[dir.hash] = true;
					
					if ((parent = findSubtree(dir.phash)).length) {
						if (dir.phash && ((init = !parent.children().length) || parent.hasClass('elfinder-navbar-hasmore') || (sibling = findSibling(parent, dir)).length)) {
							if (init) {
								if (!atonce[dir.phash]) {
									atonce[dir.phash] = [];
								}
								atonce[dir.phash].push(dir);
							} else {
								if (sibling) {
									node = itemhtml(dir);
									sibling.before(node);
									! mobile && (tgts = tgts.add(node));
								} else {
									updates.push(dir);
								}
							}
						} else {
							node = itemhtml(dir);
							parent[firstVol || dir.phash ? 'append' : 'prepend'](node);
							firstVol = false;
							if (!dir.phash || dir.isroot) {
								base = fm.navHash2Elm(dir.hash).parent();
							}
							! mobile && updateDroppable(null, base);
						}
					} else {
						orphans.push(dir);
					}
				}

				// When init, html append at once
				if (Object.keys(atonce).length){
					jQuery.each(atonce, function(p, dirs){
						var parent = findSubtree(p),
						    html   = [];
						dirs.sort(compare);
						append(parent, dirs);
					});
				}
				
				if (updates.length) {
					parent.trigger('update.' + fm.namespace, { added : updates });
				}
				
				if (orphans.length && orphans.length < length) {
					updateTree(orphans);
					return;
				} 
				
				! mobile && tgts.length && fm.lazy(function() { updateDroppable(tgts); });
				
			},
			
			/**
			 * sort function by dir.name
			 * 
			 */
			compare = function(dir1, dir2) {
				if (! fm.sortAlsoTreeview) {
					return fm.sortRules.name(dir1, dir2);
				} else {
					var asc   = fm.sortOrder == 'asc',
						type  = fm.sortType,
						rules = fm.sortRules,
						res;
					
					res = asc? rules[fm.sortType](dir1, dir2) : rules[fm.sortType](dir2, dir1);
					
					return type !== 'name' && res === 0
						? res = asc ? rules.name(dir1, dir2) : rules.name(dir2, dir1)
						: res;
				}
			},

			/**
			 * Timer ID of autoScroll
			 * 
			 * @type  Integer
			 */
			autoScrTm,

			/**
			 * Auto scroll to cwd
			 *
			 * @return Object  jQuery Deferred
			 */
			autoScroll = function(target) {
				var dfrd = jQuery.Deferred(),
					current, parent, top, treeH, bottom, tgtTop;
				autoScrTm && clearTimeout(autoScrTm);
				autoScrTm = setTimeout(function() {
					current = jQuery(document.getElementById((target || fm.navHash2Id(fm.cwd().hash))));
					if (current.length) {
						// expand parents directory
						(openCwd? current : current.parent()).parents('.elfinder-navbar-wrapper').children('.'+loaded).addClass(expanded).next('.'+subtree).show();
						
						parent = tree.parent().stop(false, true);
						top = parent.offset().top;
						treeH = parent.height();
						bottom = top + treeH - current.outerHeight();
						tgtTop = current.offset().top;
						
						if (tgtTop < top || tgtTop > bottom) {
							parent.animate({
								scrollTop : parent.scrollTop() + tgtTop - top - treeH / 3
							}, {
								duration : opts.durations.autoScroll,
								complete : function() {	dfrd.resolve(); }
							});
						} else {
							dfrd.resolve();
						}
					} else {
						dfrd.reject();
					}
				}, 100);
				return dfrd;
			},
			/**
			 * Get hashes array of items of the bottom of the leaf root back from the target
			 * 
			 * @param Object elFinder item(directory) object
			 * @return Array hashes
			 */
			getEnds = function(d) {
				var cur = d || fm.cwd(),
					res = cur.hash? [ cur.hash ] : [],
					phash, root, dir;
				
				root = fm.root(cur.hash);
				dir = fm.file(root);
				while (dir && (phash = dir.phash)) {
					res.unshift(phash);
					root = fm.root(phash);
					dir = fm.file(root);
					if (fm.navHash2Elm(dir.hash).hasClass(loaded)) {
						break;
					}
				}
				
				return res;
			},
			
			/**
			 * Select pages back in order to display the target
			 * 
			 * @param Object elFinder item(directory) object
			 * @return Object jQuery node object of target node
			 */
			selectPages = function(current) {
				var cur = current || fm.cwd(),
					curHash = cur.hash,
					node = fm.navHash2Elm(curHash);
			
				if (!node.length) {
					while(cur && cur.phash) {
						if (hasMoreDirs[cur.phash] && !fm.navHash2Elm(cur.hash).length) {
							hasMoreDirs[cur.phash].trigger('update.'+fm.namespace, { select : cur.hash });
						}
						cur = fm.file(cur.phash);
					}
					node = fm.navHash2Elm(curHash);
				}
				
				return node;
			},
			
			/**
			 * Flag indicating that synchronization is currently in progress
			 * 
			 * @type Boolean
			 */
			syncing,

			/**
			 * Mark current directory as active
			 * If current directory is not in tree - load it and its parents
			 *
			 * @param Array directory objects of cwd
			 * @param Boolean do auto scroll
			 * @return Object jQuery Deferred
			 */
			sync = function(cwdDirs, aScr) {
				var cwd     = fm.cwd(),
					cwdhash = cwd.hash,
					autoScr = aScr === void(0)? syncTree : aScr,
					loadParents = function(dir) {
						var dfd  = jQuery.Deferred(),
							reqs = [],
							ends = getEnds(dir),
							makeReq = function(cmd, h, until) {
								var data = {
										cmd    : cmd,
										target : h
									};
								if (until) {
									data.until = until;
								}
								return fm.request({
									data : data,
									preventFail : true
								});
							},
							baseHash, baseId;
						
						reqs = jQuery.map(ends, function(h) {
							var d = fm.file(h),
								isRoot = d? fm.isRoot(d) : false,
								node = fm.navHash2Elm(h),
								getPhash = function(h, dep) {
									var d, ph,
										depth = dep || 1;
									ph = (d = fm.file(h))? d.phash : false;
									if (ph && depth > 1) {
										return getPhash(ph, --depth);
									}
									return ph;
								},
								until,
								closest = (function() {
									var phash = getPhash(h);
									until = phash;
									while (phash) {
										if (fm.navHash2Elm(phash).hasClass(loaded)) {
											break;
										}
										until = phash;
										phash = getPhash(phash);
									}
									if (!phash) {
										until = void(0);
										phash = fm.root(h);
									}
									return phash;
								})(),
								cmd;
							
							if (!node.hasClass(loaded) && (isRoot || !d || !fm.navHash2Elm(d.phash).hasClass(loaded))) {
								if (isRoot || closest === getPhash(h) || closest === getPhash(h, 2)) {
									until = void(0);
									cmd = 'tree';
									if (!isRoot) {
										h = getPhash(h);
									}
								} else {
									cmd = 'parents';
								}
								if (!baseHash) {
									baseHash = (cmd === 'tree')? h : closest;
								}
								return makeReq(cmd, h, until);
							}
							return null;
						});
						
						if (reqs.length) {
							selectPages(fm.file(baseHash));
							baseId = fm.navHash2Id(baseHash);
							autoScr && autoScroll(baseId);
							baseNode = jQuery('#'+baseId);
							spinner = jQuery(fm.res('tpl', 'navspinner')).insertBefore(baseNode.children('.'+arrow));
							baseNode.removeClass(collapsed);
							
							jQuery.when.apply($, reqs)
							.done(function() {
								var res = {},data, treeDirs, dirs, argLen, i;
								argLen = arguments.length;
								if (argLen > 0) {
									for (i = 0; i < argLen; i++) {
										data = arguments[i].tree || [];
										res[ends[i]] = Object.assign([], filter(data));
									}
								}
								dfd.resolve(res);
							})
							.fail(function() {
								dfd.reject();
							});
							
							return dfd;
						} else {
							return dfd.resolve();
						}
					},
					done= function(res, dfrd) {
						var open = function() {
								if (openRoot && baseNode) {
									findSubtree(baseNode.hash).show().prev(selNavdir).addClass(expanded);
									openRoot = false;
								}
								if (autoScr) {
									autoScroll().done(checkSubdirs);
								} else {
									checkSubdirs();
								}
							},
							current;
						
						if (res) {
							jQuery.each(res, function(endHash, dirs) {
								dirs && updateTree(dirs);
								selectPages(fm.file(endHash));
								dirs && updateArrows(dirs, loaded);
							});
						}
						
						if (cwdDirs) {
							(fm.api < 2.1) && cwdDirs.push(cwd);
							updateTree(cwdDirs);
						}
						
						// set current node
						current = selectPages();
						
						if (!current.hasClass(active)) {
							tree.find(selNavdir+'.'+active).removeClass(active);
							current.addClass(active);
						}
						
						// mark as loaded to cwd parents
						current.parents('.elfinder-navbar-wrapper').children('.'+navdir).addClass(loaded);
						
						if (res) {
							fm.lazy(open).done(function() {
								dfrd.resolve();
							});
						} else {
							open();
							dfrd.resolve();
						}
					},
					rmSpinner = function(fail) {
						if (baseNode) {
							spinner.remove();
							baseNode.addClass(collapsed + (fail? '' : (' ' + loaded)));
						}
					},
					dfrd = jQuery.Deferred(),
					baseNode, spinner;
				
				if (!fm.navHash2Elm(cwdhash).length) {
					syncing = true;
					loadParents()
					.done(function(res) {
						done(res, dfrd);
						rmSpinner();
					})
					.fail(function() { 
						rmSpinner(true);
						dfrd.reject();
					})
					.always(function() {
						syncing = false;
					});
				} else {
					done(void(0), dfrd);
				}
				
				// trigger 'treesync' with my jQuery.Deferred
				fm.trigger('treesync', dfrd);

				return dfrd;
			},
			
			/**
			 * Make writable and not root dirs droppable
			 *
			 * @return void
			 */
			updateDroppable = function(target, node) {
				var limit = 100,
					next;
				
				if (!target) {
					if (!node || node.closest('div.'+wrapperRoot).hasClass(uploadable)) {
						(node || tree.find('div.'+uploadable)).find(selNavdir+':not(.elfinder-ro,.elfinder-na)').addClass('native-droppable');
					}
					if (!node || node.closest('div.'+wrapperRoot).hasClass(pastable)) {
						target = (node || tree.find('div.'+pastable)).find(selNavdir+':not(.'+droppable+')');
					} else {
						target = jQuery();
					}
					if (node) {
						// check leaf roots
						node.children('div.'+wrapperRoot).each(function() {
							updateDroppable(null, jQuery(this));
						});
					}
				}
				
				// make droppable on async
				if (target.length) {
					fm.asyncJob(function(elm) {
						jQuery(elm).droppable(droppableopts);
					}, jQuery.makeArray(target), {
						interval : 20,
						numPerOnce : 100
					});
				}
			},
			
			/**
			 * Check required folders for subfolders and update arrow classes
			 *
			 * @param  Array  folders to check
			 * @param  String css class 
			 * @return void
			 */
			updateArrows = function(dirs, cls) {
				var sel = cls == loaded
						? '.'+collapsed+':not(.'+loaded+')'
						: ':not(.'+collapsed+')';
				
				jQuery.each(dirs, function(i, dir) {
					fm.navHash2Elm(dir.phash).filter(sel)
						.filter(function() { return jQuery.grep(jQuery(this).next('.'+subtree).children(), function(n) {
							return (jQuery(n).children().hasClass(root))? false : true;
						}).length > 0; })
						.addClass(cls);
				});
			},
			
			
			
			/**
			 * Navigation tree
			 *
			 * @type JQuery
			 */
			tree = jQuery(this).addClass(treeclass)
				// make dirs draggable and toggle hover class
				.on('mouseenter mouseleave', selNavdir, function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && scrolling) { return; }
					var link  = jQuery(this); 
					
					if (!link.hasClass(dropover+' '+disabled)) {
						if (!mobile && enter && !link.data('dragRegisted') && !link.hasClass(root+' '+draggable+' elfinder-na elfinder-wo')) {
							link.data('dragRegisted', true);
							if (fm.isCommandEnabled('copy', fm.navId2Hash(link.attr('id')))) {
								link.draggable(fm.draggable);
							}
						}
						link.toggleClass(hover, enter);
					}
				})
				// native drag enter
				.on('dragenter', selNavdir, function(e) {
					if (e.originalEvent.dataTransfer) {
						var dst = jQuery(this);
						dst.addClass(hover);
						if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
							dst.data('expandTimer', setTimeout(function() {
								dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click');
							}, 500));
						}
					}
				})
				// native drag leave
				.on('dragleave', selNavdir, function(e) {
					if (e.originalEvent.dataTransfer) {
						var dst = jQuery(this);
						dst.data('expandTimer') && clearTimeout(dst.data('expandTimer'));
						dst.removeClass(hover);
					}
				})
				// open dir or open subfolders in tree
				.on('click', selNavdir, function(e) {
					var link = jQuery(this),
						hash = fm.navId2Hash(link.attr('id')),
						file = fm.file(hash);
					
					if (link.data('longtap')) {
						link.removeData('longtap');
						e.stopPropagation();
						return;
					}
					
					if (!link.hasClass(active)) {
						tree.find(selNavdir+'.'+active).removeClass(active);
						link.addClass(active);
					}
					if (hash != fm.cwd().hash && !link.hasClass(disabled)) {
						fm.exec('open', hash).done(function() {
							fm.one('opendone', function() {
								fm.select({selected: [hash], origin: 'navbar'});
							});
						});
					} else {
						if (link.hasClass(collapsed)) {
							link.children('.'+arrow).trigger('click');
						}
						fm.select({selected: [hash], origin: 'navbar'});
					}
				})
				// for touch device
				.on('touchstart', selNavdir, function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var evt = e.originalEvent,
						p;
					
					if (e.target.nodeName === 'INPUT') {
						e.stopPropagation();
						return;
					}
					
					p = jQuery(this).addClass(hover)
					.removeData('longtap')
					.data('tmlongtap', setTimeout(function(e){
						// long tap
						p.data('longtap', true);
						fm.trigger('contextmenu', {
							'type'    : 'navbar',
							'targets' : [fm.navId2Hash(p.attr('id'))],
							'x'       : evt.touches[0].pageX,
							'y'       : evt.touches[0].pageY
						});
					}, 500));
				})
				.on('touchmove touchend', selNavdir, function(e) {
					if (e.target.nodeName === 'INPUT') {
						e.stopPropagation();
						return;
					}
					clearTimeout(jQuery(this).data('tmlongtap'));
					if (e.type == 'touchmove') {
						jQuery(this).removeClass(hover);
					}
				})
				// toggle subfolders in tree
				.on('click', selNavdir+'.'+collapsed+' .'+arrow, function(e) {
					var arrow = jQuery(this),
						link  = arrow.parent(selNavdir),
						stree = link.next('.'+subtree),
						dfrd  = jQuery.Deferred(),
						slideTH = 30, cnt;

					e.stopPropagation();

					if (link.hasClass(loaded)) {
						link.toggleClass(expanded);
						fm.lazy(function() {
							cnt = link.hasClass(expanded)? stree.children().length + stree.find('div.elfinder-navbar-subtree[style*=block]').children().length : stree.find('div:visible').length;
							if (cnt > slideTH) {
								stree.toggle();
								fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
								checkSubdirs();
							} else {
								stree.stop(true, true)[link.hasClass(expanded)? 'slideDown' : 'slideUp'](opts.durations.slideUpDown, function(){
									fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
									checkSubdirs();
								});
							}
						}).always(function() {
							dfrd.resolve();
						});
					} else {
						spinner.insertBefore(arrow);
						link.removeClass(collapsed);

						fm.request({cmd : 'tree', target : fm.navId2Hash(link.attr('id'))})
							.done(function(data) { 
								updateTree(Object.assign([], filter(data.tree))); 
								
								if (stree.children().length) {
									link.addClass(collapsed+' '+expanded);
									if (stree.children().length > slideTH) {
										stree.show();
										fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
										checkSubdirs();
									} else {
										stree.stop(true, true).slideDown(opts.durations.slideUpDown, function(){
											fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
											checkSubdirs();
										});
									}
								} 
							})
							.always(function(data) {
								spinner.remove();
								link.addClass(loaded);
								fm.one('treedone', function() {
									dfrd.resolve();
								});
							});
					}
					arrow.data('dfrd', dfrd);
				})
				.on('contextmenu', selNavdir, function(e) {
					var self = jQuery(this);
					
					// now dirname editing
					if (self.find('input:text').length) {
						e.stopPropagation();
						return;
					}
					
					e.preventDefault();

					fm.trigger('contextmenu', {
						'type'    : 'navbar',
						'targets' : [fm.navId2Hash(jQuery(this).attr('id'))],
						'x'       : e.pageX,
						'y'       : e.pageY
					});
					
					self.addClass('ui-state-hover');
					
					fm.getUI('contextmenu').children().on('mouseenter', function() {
						self.addClass('ui-state-hover');
					});
					
					fm.bind('closecontextmenu', function() {
						self.removeClass('ui-state-hover');
					});
				})
				.on('scrolltoview', selNavdir, function(e, data) {
					var self = jQuery(this);
					autoScroll(self.attr('id')).done(function() {
						if (!data || data.blink === 'undefined' || data.blink) {
							fm.resources.blink(self, 'lookme');
						}
					});
				})
				// prepend fake dir
				.on('create.'+fm.namespace, function(e, item) {
					var pdir = findSubtree(item.phash),
						lock = item.move || false,
						dir  = jQuery(itemhtml(item)).addClass('elfinder-navbar-wrapper-tmp'),
						selected = fm.selected();
						
					lock && selected.length && fm.trigger('lockfiles', {files: selected});
					pdir.prepend(dir);
				}),
			scrolling = false,
			navbarScrTm,
			// move tree into navbar
			navbar = fm.getUI('navbar').append(tree).show().on('scroll', function() {
				scrolling = true;
				navbarScrTm && cancelAnimationFrame(navbarScrTm);
				navbarScrTm = requestAnimationFrame(function() {
					scrolling = false;
					checkSubdirs();
				});
			}),
			
			prevSortTreeview = fm.sortAlsoTreeview;
			
		fm.open(function(e) {
			var data = e.data,
				dirs = filter(data.files),
				contextmenu = fm.getUI('contextmenu');

			data.init && tree.empty();

			if (fm.UA.iOS) {
				navbar.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch');
			}

			if (dirs.length) {
				fm.lazy(function() {
					if (!contextmenu.data('cmdMaps')) {
						contextmenu.data('cmdMaps', {});
					}
					updateTree(dirs);
					updateArrows(dirs, loaded);
					sync(dirs);
				});
			} else {
				sync();
			}
		})
		// add new dirs
		.add(function(e) {
			var dirs = filter(e.data.added);

			if (dirs.length) {
				updateTree(dirs);
				updateArrows(dirs, collapsed);
			}
		})
		// update changed dirs
		.change(function(e) {
			// do ot perfome while syncing
			if (syncing) {
				return;
			}

			var dirs = filter(e.data.changed, true),
				length = dirs.length,
				l    = length,
				tgts = jQuery(),
				changed = {},
				dir, phash, node, tmp, realParent, reqParent, realSibling, reqSibling, isExpanded, isLoaded, parent, subdirs;
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'prepare' });
			});
			
			while (l--) {
				dir = dirs[l];
				phash = dir.phash;
				if ((node = fm.navHash2Elm(dir.hash)).length) {
					parent = node.parent();
					if (phash) {
						realParent  = node.closest('.'+subtree);
						reqParent   = findSubtree(phash);
						realSibling = node.parent().next();
						reqSibling  = findSibling(reqParent, dir);
						
						if (!reqParent.length) {
							continue;
						}
						
						if (reqParent[0] !== realParent[0] || realSibling.get(0) !== reqSibling.get(0)) {
							reqSibling.length ? reqSibling.before(parent) : reqParent.append(parent);
						}
					}
					isExpanded = node.hasClass(expanded);
					isLoaded   = node.hasClass(loaded);
					tmp        = jQuery(itemhtml(dir));
					node.replaceWith(tmp.children(selNavdir));
					! mobile && updateDroppable(null, parent);
					
					if (dir.dirs
					&& (isExpanded || isLoaded) 
					&& (node = fm.navHash2Elm(dir.hash))
					&& node.next('.'+subtree).children().length) {
						isExpanded && node.addClass(expanded);
						isLoaded && node.addClass(loaded);
					}
					
					subdirs |= dir.dirs == -1;
				}
			}
			
			// to check subdirs
			if (subdirs) {
				checkSubdirs();
			}
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'done' });
			});
			
			length && sync(void(0), false);
		})
		// remove dirs
		.remove(function(e) {
			var dirs = e.data.removed,
				l    = dirs.length,
				node, stree, removed;
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { removed : dirs });
				node.trigger('update.'+fm.namespace, { change: 'prepare' });
			});

			while (l--) {
				if ((node = fm.navHash2Elm(dirs[l])).length) {
					removed = true;
					stree = node.closest('.'+subtree);
					node.parent().detach();
					if (!stree.children().length) {
						stree.hide().prev(selNavdir).removeClass(collapsed+' '+expanded+' '+loaded);
					}
				}
			}
			
			removed && fm.getUI('navbar').children('.ui-resizable-handle').trigger('resize');
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'done' });
			});
		})
		// lock/unlock dirs while moving
		.bind('lockfiles unlockfiles', function(e) {
			var lock = e.type == 'lockfiles',
				helperLocked = e.data.helper? e.data.helper.data('locked') : false,
				act  = (lock && !helperLocked) ? 'disable' : 'enable',
				dirs = jQuery.grep(e.data.files||[], function(h) {  
					var dir = fm.file(h);
					return dir && dir.mime == 'directory' ? true : false;
				});
				
			jQuery.each(dirs, function(i, hash) {
				var dir = fm.navHash2Elm(hash);
				
				if (dir.length && !helperLocked) {
					dir.hasClass(draggable) && dir.draggable(act);
					dir.hasClass(droppable) && dir.droppable(act);
					dir[lock ? 'addClass' : 'removeClass'](disabled);
				}
			});
		})
		.bind('sortchange', function() {
			if (fm.sortAlsoTreeview || prevSortTreeview !== fm.sortAlsoTreeview) {
				var dirs,
					ends = [],
					endsMap = {},
					endsVid = {},
					topVid = '',
					single = false,
					current;
				
				fm.lazy(function() {
					dirs = filter(fm.files());
					prevSortTreeview = fm.sortAlsoTreeview;
					
					tree.empty();
					
					// append volume roots at first
					updateTree(jQuery.map(fm.roots, function(h) {
						var dir = fm.file(h);
						return dir && !dir.phash? dir : null;
					}));
					
					if (!Object.keys(hasMoreDirs).length) {
						updateTree(dirs);
						current = selectPages();
						updateArrows(dirs, loaded);
					} else {
						ends = getEnds();
						if (ends.length > 1) {
							jQuery.each(ends, function(i, end) {
								var vid = fm.file(fm.root(end)).volumeid; 
								if (i === 0) {
									topVid = vid;
								}
								endsVid[vid] = end;
								endsMap[end] = [];
							});
							jQuery.each(dirs, function(i, d) {
								if (!d.volumeid) {
									single = true;
									return false;
								}
								endsMap[endsVid[d.volumeid] || endsVid[topVid]].push(d);
							});
						} else {
							single = true;
						}
						if (single) {
							jQuery.each(ends, function(i, endHash) {
								updateTree(dirs);
								current = selectPages(fm.file(endHash));
								updateArrows(dirs, loaded);
							});
						} else {
							jQuery.each(endsMap, function(endHash, dirs) {
								updateTree(dirs);
								current = selectPages(fm.file(endHash));
								updateArrows(dirs, loaded);
							});
						}
					}
					
					sync();
				}, 100);
			}
		});

	});
	
	return this;
};


/*
 * File: /js/ui/uploadButton.js
 */

/**
 * @class  elFinder toolbar's button tor upload file
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderuploadbutton = function(cmd) {
		return this.each(function() {
		var fm = cmd.fm,
			button = jQuery(this).elfinderbutton(cmd)
				.off('click'), 
			form = jQuery('<form/>').appendTo(button),
			input = jQuery('<input type="file" multiple="true" title="'+cmd.fm.i18n('selectForUpload')+'"/>')
				.on('change', function() {
					var _input = jQuery(this);
					if (_input.val()) {
						fm.exec('upload', {input : _input.remove()[0]}, void(0), fm.cwd().hash);
						input.clone(true).appendTo(form);
					} 
				})
				.on('dragover', function(e) {
					e.originalEvent.dataTransfer.dropEffect = 'copy';
				}),
			tm;

		form.append(input.clone(true));
				
		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var toShow = cmd.disabled();
				if (form.is('visible')) {
					!toShow && form.hide();
				} else {
					toShow && form.show();
				}
			});
		})
		.change();
	});
};


/*
 * File: /js/ui/viewbutton.js
 */

/**
 * @class  elFinder toolbar button to switch current directory view.
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderviewbutton = function(cmd) {
		return this.each(function() {
		var button = jQuery(this).elfinderbutton(cmd),
			icon   = button.children('.elfinder-button-icon'),
			text   = button.children('.elfinder-button-text'),
			tm;

		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var icons = cmd.value == 'icons';

				icon.toggleClass('elfinder-button-icon-view-list', icons);
				cmd.className = icons? 'view-list' : '';
				cmd.title = cmd.fm.i18n(icons ? 'viewlist' : 'viewicons');
				button.attr('title', cmd.title);
				text.html(cmd.title);
			});
		});
	});
};


/*
 * File: /js/ui/workzone.js
 */

/**
 * @class elfinderworkzone - elFinder container for nav and current directory
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderworkzone = function(fm) {
		var cl = 'elfinder-workzone';
	
	this.not('.'+cl).each(function() {
		var wz     = jQuery(this).addClass(cl),
			prevH  = Math.round(wz.height()),
			parent = wz.parent(),
			setDelta = function() {
				wdelta = wz.outerHeight(true) - wz.height();
			},
			fitsize = function(e) {
				var height = parent.height() - wdelta,
					style  = parent.attr('style'),
					curH   = Math.round(wz.height());
	
				if (e) {
					e.preventDefault();
					e.stopPropagation();
				}
				
				parent.css('overflow', 'hidden')
					.children(':visible:not(.'+cl+')').each(function() {
						var ch = jQuery(this);
		
						if (ch.css('position') != 'absolute' && ch.css('position') != 'fixed') {
							height -= ch.outerHeight(true);
						}
					});
				parent.attr('style', style || '');
				
				height = Math.max(0, Math.round(height));
				if (prevH !== height || curH !== height) {
					prevH  = Math.round(wz.height());
					wz.height(height);
					fm.trigger('wzresize');
				}
			},
			cssloaded = function() {
				wdelta = wz.outerHeight(true) - wz.height();
				fitsize();
			},
			wdelta;
		
		setDelta();
		parent.on('resize.' + fm.namespace, fitsize);
		fm.one('cssloaded', cssloaded)
		  .bind('uiresize', fitsize)
		  .bind('themechange', setDelta);
	});
	return this;
};


/*
 * File: /js/commands/archive.js
 */

/**
 * @class  elFinder command "archive"
 * Archive selected files
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.archive = function() {
		var self  = this,
		fm    = self.fm,
		mimes = [],
		dfrd;
		
	this.variants = [];
	
	this.disableOnSearch = false;
	
	this.nextAction = {};
	
	/**
	 * Update mimes on open/reload
	 *
	 * @return void
	 **/
	fm.bind('open reload', function() {
		self.variants = [];
		jQuery.each((mimes = fm.option('archivers')['create'] || []), function(i, mime) {
			self.variants.push([mime, fm.mime2kind(mime)]);
		});
		self.change();
	});
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			chk = (cnt && ! fm.isRoot(sel[0]) && (fm.file(sel[0].phash) || {}).write && ! jQuery.grep(sel, function(f){ return f.read ? false : true; }).length),
			cwdId;
		
		if (chk && fm.searchStatus.state > 1) {
			cwdId = fm.cwd().volumeid;
			chk = (cnt === jQuery.grep(sel, function(f) { return f.read && f.hash.indexOf(cwdId) === 0 ? true : false; }).length);
		}
		
		return chk && !this._disabled && mimes.length && (cnt || (dfrd && dfrd.state() == 'pending')) ? 0 : -1;
	};
	
	this.exec = function(hashes, type) {
		var files = this.files(hashes),
			cnt   = files.length,
			mime  = type || mimes[0],
			cwd   = fm.file(files[0].phash) || null,
			error = ['errArchive', 'errPerm', 'errCreatingTempDir', 'errFtpDownloadFile', 'errFtpUploadFile', 'errFtpMkdir', 'errArchiveExec', 'errExtractExec', 'errRm'],
			i, open;

		dfrd = jQuery.Deferred().fail(function(error) {
			error && fm.error(error);
		});

		if (! (cnt && mimes.length && jQuery.inArray(mime, mimes) !== -1)) {
			return dfrd.reject();
		}
		
		if (!cwd.write) {
			return dfrd.reject(error);
		}
		
		for (i = 0; i < cnt; i++) {
			if (!files[i].read) {
				return dfrd.reject(error);
			}
		}

		self.mime   = mime;
		self.prefix = ((cnt > 1)? 'Archive' : files[0].name) + (fm.option('archivers')['createext']? '.' + fm.option('archivers')['createext'][mime] : '');
		self.data   = {targets : self.hashes(hashes), type : mime};
		
		if (fm.cwd().hash !== cwd.hash) {
			open = fm.exec('open', cwd.hash).done(function() {
				fm.one('cwdrender', function() {
					fm.selectfiles({files : hashes});
					dfrd = jQuery.proxy(fm.res('mixin', 'make'), self)();
				});
			});
		} else {
			fm.selectfiles({files : hashes});
			dfrd = jQuery.proxy(fm.res('mixin', 'make'), self)();
		}
		
		return dfrd;
	};

};


/*
 * File: /js/commands/back.js
 */

/**
 * @class  elFinder command "back"
 * Open last visited folder
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.back = function() {
		this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'ctrl+left backspace'
	}];
	
	this.getstate = function() {
		return this.fm.history.canBack() ? 0 : -1;
	};
	
	this.exec = function() {
		return this.fm.history.back();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/chmod.js
 */

/**
 * @class elFinder command "chmod".
 * Chmod files.
 *
 * @type  elFinder.command
 * @author Naoki Sawada
 */
elFinder.prototype.commands.chmod = function() {
		this.updateOnSelect = false;
	var fm  = this.fm,
		level = {
			0 : 'owner',
			1 : 'group',
			2 : 'other'
		},
		msg = {
			read     : fm.i18n('read'),
			write    : fm.i18n('write'),
			execute  : fm.i18n('execute'),
			perm     : fm.i18n('perm'),
			kind     : fm.i18n('kind'),
			files    : fm.i18n('files')
		},
		isPerm = function(perm){
			return (!isNaN(parseInt(perm, 8) && parseInt(perm, 8) <= 511) || perm.match(/^([r-][w-][x-]){3}$/i));
		};

	this.tpl = {
		main       : '<div class="ui-helper-clearfix elfinder-info-title"><span class="elfinder-cwd-icon {class} ui-corner-all"/>{title}</div>'
					+'{dataTable}',
		itemTitle  : '<strong>{name}</strong><span id="elfinder-info-kind">{kind}</span>',
		groupTitle : '<strong>{items}: {num}</strong>',
		dataTable  : '<table id="{id}-table-perm"><tr><td>{0}</td><td>{1}</td><td>{2}</td></tr></table>'
					+'<div class="">'+msg.perm+': <input class="elfinder-tabstop elfinder-focus" id="{id}-perm" type="text" size="4" maxlength="3" value="{value}"></div>',
		fieldset   : '<fieldset id="{id}-fieldset-{level}"><legend>{f_title}{name}</legend>'
					+'<input type="checkbox" value="4" class="elfinder-tabstop" id="{id}-read-{level}-perm"{checked-r}> <label for="{id}-read-{level}-perm">'+msg.read+'</label><br>'
					+'<input type="checkbox" value="6" class="elfinder-tabstop" id="{id}-write-{level}-perm"{checked-w}> <label for="{id}-write-{level}-perm">'+msg.write+'</label><br>'
					+'<input type="checkbox" value="5" class="elfinder-tabstop" id="{id}-execute-{level}-perm"{checked-x}> <label for="{id}-execute-{level}-perm">'+msg.execute+'</label><br>'
	};

	this.shortcuts = [{
		//pattern     : 'ctrl+p'
	}];

	this.getstate = function(sel) {
		var fm = this.fm;
		sel = sel || fm.selected();
		if (sel.length == 0) {
			sel = [ fm.cwd().hash ];
		}
		return this.checkstate(this.files(sel)) ? 0 : -1;
	};
	
	this.checkstate = function(sel) {
		var cnt = sel.length;
		if (!cnt) return false;
		var chk = jQuery.grep(sel, function(f) {
			return (f.isowner && f.perm && isPerm(f.perm) && (cnt == 1 || f.mime != 'directory')) ? true : false;
		}).length;
		return (cnt == chk)? true : false;
	};

	this.exec = function(select) {
		var hashes  = this.hashes(select),
			files   = this.files(hashes);
		if (! files.length) {
			hashes = [ this.fm.cwd().hash ];
			files   = this.files(hashes);
		}
		var fm  = this.fm,
		dfrd    = jQuery.Deferred().always(function() {
			fm.enable();
		}),
		tpl     = this.tpl,
		cnt     = files.length,
		file    = files[0],
		id = fm.namespace + '-perm-' + file.hash,
		view    = tpl.main,
		checked = ' checked="checked"',
		buttons = function() {
			var buttons = {};
			buttons[fm.i18n('btnApply')] = save;
			buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
			return buttons;
		},
		save = function() {
			var perm = jQuery.trim(jQuery('#'+id+'-perm').val()),
				reqData;
			
			if (!isPerm(perm)) return false;
			
			dialog.elfinderdialog('close');
			
			reqData = {
				cmd     : 'chmod',
				targets : hashes,
				mode    : perm
			};
			fm.request({
				data : reqData,
				notify : {type : 'chmod', cnt : cnt}
			})
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(data) {
				if (data.changed && data.changed.length) {
					data.undo = {
						cmd : 'chmod',
						callback : function() {
							var reqs = [];
							jQuery.each(prevVals, function(perm, hashes) {
								reqs.push(fm.request({
									data : {cmd : 'chmod', targets : hashes, mode : perm},
									notify : {type : 'undo', cnt : hashes.length}
								}));
							});
							return jQuery.when.apply(null, reqs);
						}
					};
					data.redo = {
						cmd : 'chmod',
						callback : function() {
							return fm.request({
								data : reqData,
								notify : {type : 'redo', cnt : hashes.length}
							});
						}
					};
				}
				dfrd.resolve(data);
			});
		},
		setperm = function() {
			var perm = '';
			var _perm;
			for (var i = 0; i < 3; i++){
				_perm = 0;
				if (jQuery("#"+id+"-read-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 4);
				}
				if (jQuery("#"+id+"-write-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 2);
				}
				if (jQuery("#"+id+"-execute-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 1);
				}
				perm += _perm.toString(8);
			}
			jQuery('#'+id+'-perm').val(perm);
		},
		setcheck = function(perm) {
			var _perm;
			for (var i = 0; i < 3; i++){
				_perm = parseInt(perm.slice(i, i+1), 8);
				jQuery("#"+id+"-read-"+level[i]+'-perm').prop("checked", false);
				jQuery("#"+id+"-write-"+level[i]+'-perm').prop("checked", false);
				jQuery("#"+id+"-execute-"+level[i]+'-perm').prop("checked", false);
				if ((_perm & 4) == 4) {
					jQuery("#"+id+"-read-"+level[i]+'-perm').prop("checked", true);
				}
				if ((_perm & 2) == 2) {
					jQuery("#"+id+"-write-"+level[i]+'-perm').prop("checked", true);
				}
				if ((_perm & 1) == 1) {
					jQuery("#"+id+"-execute-"+level[i]+'-perm').prop("checked", true);
				}
			}
			setperm();
		},
		makeperm = function(files) {
			var perm = '777', ret = '', chk, _chk, _perm;
			var len = files.length;
			for (var i2 = 0; i2 < len; i2++) {
				chk = getPerm(files[i2].perm);
				if (! prevVals[chk]) {
					prevVals[chk] = [];
				}
				prevVals[chk].push(files[i2].hash);
				ret = '';
				for (var i = 0; i < 3; i++){
					_chk = parseInt(chk.slice(i, i+1), 8);
					_perm = parseInt(perm.slice(i, i+1), 8);
					if ((_chk & 4) != 4 && (_perm & 4) == 4) {
						_perm -= 4;
					}
					if ((_chk & 2) != 2 && (_perm & 2) == 2) {
						_perm -= 2;
					}
					if ((_chk & 1) != 1 && (_perm & 1) == 1) {
						_perm -= 1;
					}
					ret += _perm.toString(8);
				}
				perm = ret;
			}
			return perm;
		},
		makeName = function(name) {
			return name? ':'+name : '';
		},
		makeDataTable = function(perm, f) {
			var _perm, fieldset;
			var value = '';
			var dataTable = tpl.dataTable;
			for (var i = 0; i < 3; i++){
				_perm = parseInt(perm.slice(i, i+1), 8);
				value += _perm.toString(8);
				fieldset = tpl.fieldset.replace('{f_title}', fm.i18n(level[i])).replace('{name}', makeName(f[level[i]])).replace(/\{level\}/g, level[i]);
				dataTable = dataTable.replace('{'+i+'}', fieldset)
				                     .replace('{checked-r}', ((_perm & 4) == 4)? checked : '')
				                     .replace('{checked-w}', ((_perm & 2) == 2)? checked : '')
				                     .replace('{checked-x}', ((_perm & 1) == 1)? checked : '');
			}
			dataTable = dataTable.replace('{value}', value).replace('{valueCaption}', msg['perm']);
			return dataTable;
		},
		getPerm = function(perm){
			if (isNaN(parseInt(perm, 8))) {
				var mode_array = perm.split('');
				var a = [];

				for (var i = 0, l = mode_array.length; i < l; i++) {
					if (i === 0 || i === 3 || i === 6) {
						if (mode_array[i].match(/[r]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					} else if ( i === 1 || i === 4 || i === 7) {
						 if (mode_array[i].match(/[w]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					} else {
						if (mode_array[i].match(/[x]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					}
				}
			
				a.splice(3, 0, ",");
				a.splice(7, 0, ",");

				var b = a.join("");
				var b_array = b.split(",");
				var c = [];
			
				for (var j = 0, m = b_array.length; j < m; j++) {
					var p = parseInt(b_array[j], 2).toString(8);
					c.push(p);
				}

				perm = c.join('');
			} else {
				perm = parseInt(perm, 8).toString(8);
			}
			return perm;
		},
		opts    = {
			title : this.title,
			width : 'auto',
			buttons : buttons(),
			close : function() { jQuery(this).elfinderdialog('destroy'); }
		},
		dialog = fm.getUI().find('#'+id),
		prevVals = {},
		tmb = '', title, dataTable;

		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return jQuery.Deferred().resolve();
		}

		view  = view.replace('{class}', cnt > 1 ? 'elfinder-cwd-icon-group' : fm.mime2class(file.mime));
		if (cnt > 1) {
			title = tpl.groupTitle.replace('{items}', fm.i18n('items')).replace('{num}', cnt);
		} else {
			title = tpl.itemTitle.replace('{name}', file.name).replace('{kind}', fm.mime2kind(file));
			tmb = fm.tmb(file);
		}

		dataTable = makeDataTable(makeperm(files), files.length == 1? files[0] : {});

		view = view.replace('{title}', title).replace('{dataTable}', dataTable).replace(/{id}/g, id);

		dialog = this.fmDialog(view, opts);
		dialog.attr('id', id);

		// load thumbnail
		if (tmb) {
			jQuery('<img/>')
				.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
				.attr('src', tmb.url);
		}

		jQuery('#' + id + '-table-perm :checkbox').on('click', function(){setperm('perm');});
		jQuery('#' + id + '-perm').on('keydown', function(e) {
			var c = e.keyCode;
			if (c == jQuery.ui.keyCode.ENTER) {
				e.stopPropagation();
				save();
				return;
			}
		}).on('focus', function(e){
			jQuery(this).trigger('select');
		}).on('keyup', function(e) {
			if (jQuery(this).val().length == 3) {
				jQuery(this).trigger('select');
				setcheck(jQuery(this).val());
			}
		});
		
		return dfrd;
	};
};


/*
 * File: /js/commands/colwidth.js
 */

/**
 * @class  elFinder command "colwidth"
 * CWD list table columns width to auto
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.colwidth = function() {
		this.alwaysEnabled = true;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return this.fm.getUI('cwd').find('table').css('table-layout') === 'fixed' ? 0 : -1;
	};
	
	this.exec = function() {
		this.fm.getUI('cwd').trigger('colwidth');
		return jQuery.Deferred().resolve();
	};
	
};

/*
 * File: /js/commands/copy.js
 */

/**
 * @class elFinder command "copy".
 * Put files in filemanager clipboard.
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.copy = function() {
		this.shortcuts = [{
		pattern     : 'ctrl+c ctrl+insert'
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;

		return cnt && jQuery.grep(sel, function(f) { return f.read ? true : false; }).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm   = this.fm,
			dfrd = jQuery.Deferred()
				.fail(function(error) {
					fm.error(error);
				});

		jQuery.each(this.files(hashes), function(i, file) {
			if (! file.read) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
		});
		
		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(fm.clipboard(this.hashes(hashes)));
	};

};


/*
 * File: /js/commands/cut.js
 */

/**
 * @class elFinder command "copy".
 * Put files in filemanager clipboard.
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.cut = function() {
		var fm = this.fm;
	
	this.shortcuts = [{
		pattern     : 'ctrl+x shift+insert'
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
		
		return cnt && jQuery.grep(sel, function(f) { return f.read && ! f.locked && ! fm.isRoot(f) ? true : false; }).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var dfrd = jQuery.Deferred()
				.fail(function(error) {
					fm.error(error);
				});

		jQuery.each(this.files(hashes), function(i, file) {
			if (!(file.read && ! file.locked && ! fm.isRoot(file)) ) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});
		
		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(fm.clipboard(this.hashes(hashes), true));
	};

};


/*
 * File: /js/commands/download.js
 */

/**
 * @class elFinder command "download". 
 * Download selected files.
 * Only for new api
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
elFinder.prototype.commands.zipdl = function() {};
elFinder.prototype.commands.download = function() {
		var self   = this,
		fm     = this.fm,
		czipdl = null,
		zipOn  = false,
		mixed  = false,
		dlntf  = false,
		cpath  = window.location.pathname || '/',
		filter = function(hashes, inExec) {
			var volumeid, mixedCmd;
			
			if (czipdl !== null) {
				if (fm.searchStatus.state > 1) {
					mixed = fm.searchStatus.mixed;
				} else if (fm.leafRoots[fm.cwd().hash]) {
					volumeid = fm.cwd().volumeid;
					jQuery.each(hashes, function(i, h) {
						if (h.indexOf(volumeid) !== 0) {
							mixed = true;
							return false;
						}
					});
				}
				zipOn = (fm.isCommandEnabled('zipdl', hashes[0]));
			}

			if (mixed) {
				mixedCmd = czipdl? 'zipdl' : 'download';
				hashes = jQuery.grep(hashes, function(h) {
					var f = fm.file(h),
						res = (! f || (! czipdl && f.mime === 'directory') || ! fm.isCommandEnabled(mixedCmd, h))? false : true;
					if (f && inExec && ! res) {
						fm.cwdHash2Elm(f.hash).trigger('unselect');
					}
					return res;
				});
				if (! hashes.length) {
					return [];
				}
			} else {
				if (!fm.isCommandEnabled('download', hashes[0])) {
					return [];
				}
			}
			
			return jQuery.grep(self.files(hashes), function(f) { 
				var res = (! f.read || (! zipOn && f.mime == 'directory')) ? false : true;
				if (inExec && ! res) {
					fm.cwdHash2Elm(f.hash).trigger('unselect');
				}
				return res;
			});
		};
	
	this.linkedCmds = ['zipdl'];
	
	this.shortcuts = [{
		pattern     : 'shift+enter'
	}];
	
	this.getstate = function(select) {
		var sel    = this.hashes(select),
			cnt    = sel.length,
			maxReq = this.options.maxRequests || 10,
			mixed  = false,
			croot  = '';
		
		if (cnt < 1) {
			return -1;
		}
		cnt = filter(sel).length;
		
		return  (cnt && (zipOn || (cnt <= maxReq && ((!fm.UA.IE && !fm.UA.Mobile) || cnt == 1))) ? 0 : -1);
	};
	
	fm.bind('contextmenu', function(e){
		var fm = self.fm,
			helper = null,
			targets, file, link,
			getExtra = function(file) {
				var link = file.url || fm.url(file.hash);
				return {
					icon: 'link',
					node: jQuery('<a/>')
						.attr({href: link, target: '_blank', title: fm.i18n('link')})
						.text(file.name)
						.on('mousedown click touchstart touchmove touchend contextmenu', function(e){
							e.stopPropagation();
						})
						.on('dragstart', function(e) {
							var dt = e.dataTransfer || e.originalEvent.dataTransfer || null;
							helper = null;
							if (dt) {
								var icon  = function(f) {
										var mime = f.mime, i, tmb = fm.tmb(f);
										i = '<div class="elfinder-cwd-icon '+fm.mime2class(mime)+' ui-corner-all"/>';
										if (tmb) {
											i = jQuery(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
										}
										return i;
									};
								dt.effectAllowed = 'copyLink';
								if (dt.setDragImage) {
									helper = jQuery('<div class="elfinder-drag-helper html5-native">').append(icon(file)).appendTo(jQuery(document.body));
									dt.setDragImage(helper.get(0), 50, 47);
								}
								if (!fm.UA.IE) {
									dt.setData('elfinderfrom', window.location.href + file.phash);
									dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), '');
								}
							}
						})
						.on('dragend', function(e) {
							helper && helper.remove();
						})
				};
			};
		self.extra = null;
		if (e.data) {
			targets = e.data.targets || [];
			if (targets.length === 1 && (file = fm.file(targets[0])) && file.mime !== 'directory') {
				if (file.url != '1') {
					self.extra = getExtra(file);
				} else {
					// Get URL ondemand
					var node;
					self.extra = {
						icon: 'link',
						node: jQuery('<a/>')
							.attr({href: '#', title: fm.i18n('getLink'), draggable: 'false'})
							.text(file.name)
							.on('click touchstart', function(e){
								if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
									return;
								}
								var parent = node.parent();
								e.stopPropagation();
								e.preventDefault();
								parent.removeClass('ui-state-disabled').addClass('elfinder-button-icon-spinner');
								fm.request({
									data : {cmd : 'url', target : file.hash},
									preventDefault : true
								})
								.always(function(data) {
									parent.removeClass('elfinder-button-icon-spinner');
									if (data.url) {
										var rfile = fm.file(file.hash);
										rfile.url = data.url;
										node.replaceWith(getExtra(file).node);
									} else {
										parent.addClass('ui-state-disabled');
									}
								});

							})
					};
					node = self.extra.node;
					node.ready(function(){
						requestAnimationFrame(function(){
							node.parent().addClass('ui-state-disabled').css('pointer-events', 'auto');
						});
					});
				}
			}
		}
	}).one('open', function() {
		if (fm.api >= 2.1012) {
			czipdl = fm.getCommand('zipdl');
		}
		dlntf = fm.api > 2.1038 && !fm.isCORS;
	});
	
	this.exec = function(select) {
		var hashes  = this.hashes(select),
			fm      = this.fm,
			base    = fm.options.url,
			files   = filter(hashes, true),
			dfrd    = jQuery.Deferred(),
			iframes = '',
			cdata   = '',
			targets = {},
			i, url,
			linkdl  = false,
			getTask = function(hashes) {
				return function() {
					var dfd = jQuery.Deferred(),
						root = fm.file(fm.root(hashes[0])),
						single = (hashes.length === 1),
						volName = root? (root.i18 || root.name) : null,
						dir, dlName, phash;
					if (single) {
						if (dir = fm.file(hashes[0])) {
							dlName = (dir.i18 || dir.name);
						}
					} else {
						jQuery.each(hashes, function() {
							var d = fm.file(this);
							if (d && (!phash || phash === d.phash)) {
								phash = d.phash;
							} else {
								phash = null;
								return false;
							}
						});
						if (phash && (dir = fm.file(phash))) {
							dlName = (dir.i18 || dir.name) + '-' + hashes.length;
						}
					}
					if (dlName) {
						volName = dlName;
					}
					volName && (volName = ' (' + volName + ')');
					fm.request({
						data : {cmd : 'zipdl', targets : hashes},
						notify : {type : 'zipdl', cnt : 1, hideCnt : true, msg : fm.i18n('ntfzipdl') + volName},
						cancel : true,
						eachCancel : true,
						preventDefault : true
					}).done(function(e) {
						var zipdl, dialog, btn = {}, dllink, form, iframe, m,
							uniq = 'dlw' + (+new Date());
						if (e.error) {
							fm.error(e.error);
							dfd.resolve();
						} else if (e.zipdl) {
							zipdl = e.zipdl;
							if (dlName) {
								m = fm.splitFileExtention(zipdl.name || '');
								dlName += m[1]? ('.' + m[1]) : '.zip';
							} else {
								dlName = zipdl.name;
							}
							if ((html5dl && (!fm.UA.Safari || fm.isSameOrigin(fm.options.url))) || linkdl) {
								url = fm.options.url + (fm.options.url.indexOf('?') === -1 ? '?' : '&')
								+ 'cmd=zipdl&download=1';
								jQuery.each([hashes[0], zipdl.file, dlName, zipdl.mime], function(key, val) {
									url += '&targets%5B%5D='+encodeURIComponent(val);
								});
								jQuery.each(fm.customData, function(key, val) {
									url += '&'+encodeURIComponent(key)+'='+encodeURIComponent(val);
								});
								url += '&'+encodeURIComponent(dlName);
								dllink = jQuery('<a/>')
									.attr('href', url)
									.attr('download', fm.escape(dlName))
									.on('click', function() {
										dfd.resolve();
										dialog && dialog.elfinderdialog('destroy');
									});
								if (linkdl) {
									dllink.attr('target', '_blank')
										.append('<span class="elfinder-button-icon elfinder-button-icon-download"></span>'+fm.escape(dlName));
									btn[fm.i18n('btnCancel')] = function() {
										dialog.elfinderdialog('destroy');
									};
									dialog = self.fmDialog(dllink, {
										title: fm.i18n('link'),
										buttons: btn,
										width: '200px',
										destroyOnClose: true,
										close: function() {
											(dfd.state() !== 'resolved') && dfd.resolve();
										}
									});
								} else {
									click(dllink.hide().appendTo('body').get(0));
									dllink.remove();
								}
							} else {
								form = jQuery('<form action="'+fm.options.url+'" method="post" target="'+uniq+'" style="display:none"/>')
								.append('<input type="hidden" name="cmd" value="zipdl"/>')
								.append('<input type="hidden" name="download" value="1"/>');
								jQuery.each([hashes[0], zipdl.file, dlName, zipdl.mime], function(key, val) {
									form.append('<input type="hidden" name="targets[]" value="'+fm.escape(val)+'"/>');
								});
								jQuery.each(fm.customData, function(key, val) {
									form.append('<input type="hidden" name="'+key+'" value="'+fm.escape(val)+'"/>');
								});
								form.attr('target', uniq).appendTo('body');
								iframe = jQuery('<iframe style="display:none" name="'+uniq+'">')
									.appendTo('body')
									.ready(function() {
										form.submit().remove();
										dfd.resolve();
										setTimeout(function() {
											iframe.remove();
										}, 20000); // give 20 sec file to be saved
									});
							}
						}
					}).fail(function(error) {
						error && fm.error(error);
						dfd.resolve();
					});
					return dfd.promise();
				};
			},
			// use MouseEvent to click element for Safari etc
			click = function(a) {
				var clickEv;
				if (typeof MouseEvent === 'function') {
					clickEv = new MouseEvent('click');
				} else {
					clickEv = document.createEvent('MouseEvents');
					clickEv.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
				}
				a.dispatchEvent(clickEv);
			},
			checkCookie = function(id) {
				var name = 'elfdl' + id,
					parts;
				parts = document.cookie.split(name + "=");
				if (parts.length === 2) {
					ntftm && clearTimeout(ntftm);
					document.cookie = name + '=; path=' + cpath + '; max-age=0';
					closeNotify();
				} else {
					setTimeout(function() { checkCookie(id); }, 200);
				}
			},
			closeNotify = function() {
				if (fm.ui.notify.children('.elfinder-notify-download').length) {
					fm.notify({
						type : 'download',
						cnt : -1
					});
				}
			},
			reqids = [],
			link, html5dl, fileCnt, clickEv, cid, ntftm, reqid;
			
		if (!files.length) {
			return dfrd.reject();
		}
		
		fileCnt = jQuery.grep(files, function(f) { return f.mime === 'directory'? false : true; }).length;
		link = jQuery('<a>').hide().appendTo('body');
		html5dl = (typeof link.get(0).download === 'string');
		
		if (zipOn && (fileCnt !== files.length || fileCnt >= (this.options.minFilesZipdl || 1))) {
			link.remove();
			linkdl = (!html5dl && fm.UA.Mobile);
			if (mixed) {
				targets = {};
				jQuery.each(files, function(i, f) {
					var p = f.hash.split('_', 2);
					if (! targets[p[0]]) {
						targets[p[0]] = [ f.hash ];
					} else {
						targets[p[0]].push(f.hash);
					}
				});
				if (!linkdl && fm.UA.Mobile && Object.keys(targets).length > 1) {
					linkdl = true;
				}
			} else {
				targets = [ jQuery.map(files, function(f) { return f.hash; }) ];
			}
			dfrd = fm.sequence(jQuery.map(targets, function(t) { return getTask(t); })).always(
				function() {
					fm.trigger('download', {files : files});
				}
			);
			return dfrd;
		} else {
			reqids = [];
			for (i = 0; i < files.length; i++) {
				url = fm.openUrl(files[i].hash, true);
				if (dlntf && url.substr(0, fm.options.url.length) === fm.options.url) {
					reqid = fm.getRequestId();
					reqids.push(reqid);
					url += '&cpath=' + cpath + '&reqid=' + reqid;
					ntftm = setTimeout(function() {
						fm.notify({
							type : 'download',
							cnt : 1,
							cancel : (fm.UA.IE || fm.UA.Edge)? void(0) : function() {
								if (reqids.length) {
									jQuery.each(reqids, function() {
										fm.request({
											data: {
												cmd: 'abort',
												id: this
											},
											preventDefault: true
										});
									});
								}
								reqids = [];
							}
						});
					}, fm.notifyDelay);
					checkCookie(reqid);
				}
				if (html5dl && (!fm.UA.Safari || fm.isSameOrigin(url))) {
					click(link.attr('href', url)
						.attr('download', fm.escape(files[i].name))
						.get(0)
					);
				} else {
					if (fm.UA.Mobile) {
						setTimeout(function(){
							if (! window.open(url)) {
								fm.error('errPopup');
								ntftm && cleaerTimeout(ntftm);
								closeNotify();
							}
						}, 100);
					} else {
						iframes += '<iframe class="downloader" id="downloader-' + files[i].hash+'" style="display:none" src="'+url+'"/>';
					}
				}
			}
			link.remove();
			jQuery(iframes)
				.appendTo('body')
				.ready(function() {
					setTimeout(function() {
						jQuery(iframes).each(function() {
							jQuery('#' + jQuery(this).attr('id')).remove();
						});
					}, 20000 + (10000 * i)); // give 20 sec + 10 sec for each file to be saved
				});
			fm.trigger('download', {files : files});
			return dfrd.resolve();
		}
	};

};


/*
 * File: /js/commands/duplicate.js
 */

/**
 * @class elFinder command "duplicate"
 * Create file/folder copy with suffix "copy Number"
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.duplicate = function() {
		var fm = this.fm;
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;

		return cnt && fm.cwd().write && jQuery.grep(sel, function(f) { return f.read && f.phash === fm.cwd().hash && ! fm.isRoot(f)? true : false; }).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm     = this.fm,
			files  = this.files(hashes),
			cnt    = files.length,
			dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}), 
			args = [];
			
		if (! cnt) {
			return dfrd.reject();
		}
		
		jQuery.each(files, function(i, file) {
			if (!file.read || !fm.file(file.phash).write) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
		});
		
		if (dfrd.state() == 'rejected') {
			return dfrd;
		}
		
		return fm.request({
			data   : {cmd : 'duplicate', targets : this.hashes(hashes)},
			notify : {type : 'copy', cnt : cnt},
			navigate : {
				toast : {
					inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdduplicate')])}
				}
			}
		});
		
	};

};


/*
 * File: /js/commands/edit.js
 */

/**
 * @class elFinder command "edit". 
 * Edit text file in dialog window
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
elFinder.prototype.commands.edit = function() {
		var self  = this,
		fm    = this.fm,
		clsEditing = fm.res('class', 'editing'),
		mimesSingle = [],
		mimes = [],
		allowAll = false,
		rtrim = function(str){
			return str.replace(/\s+$/, '');
		},
		getEncSelect = function(heads) {
			var sel = jQuery('<select class="ui-corner-all"/>'),
				hval;
			if (heads) {
				jQuery.each(heads, function(i, head) {
					hval = fm.escape(head.value);
					sel.append('<option value="'+hval+'">'+(head.caption? fm.escape(head.caption) : hval)+'</option>');
				});
			}
			jQuery.each(self.options.encodings, function(i, v) {
				sel.append('<option value="'+v+'">'+v+'</option>');
			});
			return sel;
		},
		getDlgWidth = function() {
			var m, width;
			if (typeof self.options.dialogWidth === 'string' && (m = self.options.dialogWidth.match(/(\d+)%/))) {
				width = parseInt(fm.getUI().width() * (m[1] / 100));
			} else {
				width = parseInt(self.options.dialogWidth || 650);
			}
			return Math.min(width, jQuery(window).width());
		},

		/**
		 * Return files acceptable to edit
		 *
		 * @param  Array  files hashes
		 * @return Array
		 **/
		filter = function(files) {
			var cnt = files.length,
				mime, ext, skip;
			
			if (cnt > 1) {
				mime = files[0].mime;
				ext = files[0].name.replace(/^.*(\.[^.]+)$/, '$1');
			}
			return jQuery.grep(files, function(file) {
				var res;
				if (skip || file.mime === 'directory') {
					return false;
				}
				res = file.read
					&& (allowAll || fm.mimeIsText(file.mime) || jQuery.inArray(file.mime, cnt === 1? mimesSingle : mimes) !== -1) 
					&& (!self.onlyMimes.length || jQuery.inArray(file.mime, self.onlyMimes) !== -1)
					&& (cnt === 1 || (file.mime === mime && file.name.substr(ext.length * -1) === ext))
					&& (fm.uploadMimeCheck(file.mime, file.phash)? true : false)
					&& setEditors(file, cnt)
					&& Object.keys(editors).length;
				if (!res) {
					skip = true;
				}
				return res;
			});
		},

		fileSync = function(hash) {
			var old = fm.file(hash),
				f;
			fm.request({
				cmd: 'info',
				targets: [hash],
				preventDefault: true
			}).done(function(data) {
				var changed;
				if (data && data.files && data.files.length) {
					f = data.files[0];
					if (old.ts != f.ts || old.size != f.size) {
						changed = { changed: [ f ] };
						fm.updateCache(changed);
						fm.change(changed);
					}
				}
			});
		},

		/**
		 * Open dialog with textarea to edit file
		 *
		 * @param  String  id       dialog id
		 * @param  Object  file     file object
		 * @param  String  content  file content
		 * @return jQuery.Deferred
		 **/
		dialog = function(id, file, content, encoding, editor) {

			var dfrd = jQuery.Deferred(),
				_loaded = false,
				loaded = function() {
					if (!_loaded) {
						fm.toast({
							mode: 'warning',
							msg: fm.i18n('nowLoading')
						});
						return false;
					}
					return true;
				},
				save = function() {
					var encord = selEncoding? selEncoding.val():void(0),
						saveDfd = jQuery.Deferred().fail(function(err) {
							dialogNode.show().find('button.elfinder-btncnt-0,button.elfinder-btncnt-1').hide();
						}),
						conf, res;
					if (!loaded()) {
						return saveDfd.resolve();
					}
					if (ta.editor) {
						ta.editor.save(ta[0], ta.editor.instance);
						conf = ta.editor.confObj;
						if (conf.info && (conf.info.schemeContent || conf.info.arrayBufferContent)) {
							encord = 'scheme';
						}
					}
					res = getContent();
					setOld(res);
					if (res.promise) {
						res.done(function(data) {
							dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]);
						}).fail(function(err) {
							saveDfd.reject(err);
						});
					} else {
						dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]);
					}
					return saveDfd;
				},
				saveon = function() {
					if (!loaded()) { return; }
					save().fail(function(err) {
						err && fm.error(err);
					});
				},
				cancel = function() {
					ta.elfinderdialog('close');
				},
				savecl = function() {
					if (!loaded()) { return; }
					save().done(function() {
						_loaded = false;
						dialogNode.show();
						cancel();
					}).fail(function(err) {
						dialogNode.show();
						err && fm.error(err);
					});
					dialogNode.hide();
				},
				saveAs = function() {
					if (!loaded()) { return; }
					var prevOld = old,
						phash = fm.file(file.phash)? file.phash : fm.cwd().hash,
						fail = function(err) {
							dialogs.addClass(clsEditing).fadeIn(function() {
								err && fm.error(err);
							});
							old = prevOld;
							fm.disable();
						},
						make = function() {
							self.mime = saveAsFile.mime || file.mime;
							self.prefix = (saveAsFile.name || file.name).replace(/ \d+(\.[^.]+)?$/, '$1');
							self.requestCmd = 'mkfile';
							self.nextAction = {};
							self.data = {target : phash};
							jQuery.proxy(fm.res('mixin', 'make'), self)()
								.done(function(data) {
									if (data.added && data.added.length) {
										ta.data('hash', data.added[0].hash);
										save().done(function() {
											_loaded = false;
											dialogNode.show();
											cancel();
											dialogs.fadeIn();
										}).fail(fail);
									} else {
										fail();
									}
								})
								.progress(function(err) {
									if (err && err === 'errUploadMime') {
										ta.trigger('saveAsFail');
									}
								})
								.fail(fail)
								.always(function() {
									delete self.mime;
									delete self.prefix;
									delete self.nextAction;
									delete self.data;
								});
							fm.trigger('unselectfiles', { files: [ file.hash ] });
						},
						reqOpen = null,
						dialogs = fm.getUI().children('.' + self.dialogClass + ':visible');
						if (dialogNode.is(':hidden')) {
							dialogs = dialogs.add(dialogNode);
						}
						dialogs.removeClass(clsEditing).fadeOut();
					
					fm.enable();
					
					if (fm.searchStatus.state < 2 && phash !== fm.cwd().hash) {
						reqOpen = fm.exec('open', [phash], {thash: phash});
					}
					
					jQuery.when([reqOpen]).done(function() {
						reqOpen? fm.one('cwdrender', make) : make();
					}).fail(fail);
				},
				changed = function() {
					var dfd = jQuery.Deferred(),
						res, tm;
					if (!_loaded) {
						return dfd.resolve(false);
					}
					ta.editor && ta.editor.save(ta[0], ta.editor.instance);
					res = getContent();
					if (res && res.promise) {
						tm = setTimeout(function() {
							fm.notify({
								type : 'chkcontent',
								cnt : 1,
								hideCnt: true
							});
						}, 100);
						res.always(function() {
							tm && clearTimeout(tm);
							fm.notify({ type : 'chkcontent', cnt: -1 });
						}).done(function(d) {
							dfd.resolve(old !== d);
						}).fail(function(err) {
							dfd.resolve(err || true);
						});
					} else {
						dfd.resolve(old !== res);
					}
					return dfd;
				},
				opts = {
					title   : fm.escape(file.name),
					width   : getDlgWidth(),
					buttons : {},
					cssClass  : clsEditing,
					maxWidth  : 'window',
					maxHeight : 'window',
					allowMinimize : true,
					allowMaximize : true,
					openMaximized : editorMaximized() || (editor && editor.info && editor.info.openMaximized),
					btnHoverFocus : false,
					closeOnEscape : false,
					propagationEvents : ['mousemove', 'mouseup', 'click'],
					minimize : function() {
						var conf;
						if (ta.editor && dialogNode.closest('.ui-dialog').is(':hidden')) {
							conf = ta.editor.confObj;
							if (conf.info && conf.info.syncInterval) {
								fileSync(file.hash);
							}
						}
					},
					close   : function() {
						var close = function() {
								var conf;
								dfrd.resolve();
								if (ta.editor) {
									ta.editor.close(ta[0], ta.editor.instance);
									conf = ta.editor.confObj;
									if (conf.info && conf.info.syncInterval) {
										fileSync(file.hash);
									}
								}
								ta.elfinderdialog('destroy');
							},
							onlySaveAs = (typeof saveAsFile.name !== 'undefined'),
							accept = onlySaveAs? {
								label    : 'btnSaveAs',
								callback : function() {
									requestAnimationFrame(saveAs);
								}
							} : {
								label    : 'btnSaveClose',
								callback : function() {
									save().done(function() {
										close();
									});
								}
							};
						changed().done(function(change) {
							var msgs = ['confirmNotSave'];
							if (change) {
								if (typeof change === 'string') {
									msgs.unshift(change);
								}
								fm.confirm({
									title  : self.title,
									text   : msgs,
									accept : accept,
									cancel : {
										label    : 'btnClose',
										callback : close
									},
									buttons : onlySaveAs? null : [{
										label    : 'btnSaveAs',
										callback : function() {
											requestAnimationFrame(saveAs);
										}
									}]
								});
							} else {
								close();
							}
						});
					},
					open    : function() {
						var loadRes, conf, interval;
						ta.initEditArea.call(ta, id, file, content, fm);
						if (ta.editor) {
							loadRes = ta.editor.load(ta[0]) || null;
							if (loadRes && loadRes.done) {
								loadRes.always(function() {
									_loaded = true;
								}).done(function(instance) {
									ta.editor.instance = instance;
									ta.editor.focus(ta[0], ta.editor.instance);
									setOld(getContent());
									requestAnimationFrame(function() {
										dialogNode.trigger('resize');
									});
								}).fail(function(error) {
									error && fm.error(error);
									ta.elfinderdialog('destroy');
									return;
								});
							} else {
								_loaded = true;
								if (loadRes && (typeof loadRes === 'string' || Array.isArray(loadRes))) {
									fm.error(loadRes);
									ta.elfinderdialog('destroy');
									return;
								}
								ta.editor.instance = loadRes;
								ta.editor.focus(ta[0], ta.editor.instance);
								setOld(getContent());
								requestAnimationFrame(function() {
									dialogNode.trigger('resize');
								});
							}
							conf = ta.editor.confObj;
							if (conf.info && conf.info.syncInterval) {
								if (interval = parseInt(conf.info.syncInterval)) {
									setTimeout(function() {
										autoSync(interval);
									}, interval);
								}
							}
						} else {
							_loaded = true;
							setOld(getContent());
						}
					},
					resize : function(e, data) {
						ta.editor && ta.editor.resize(ta[0], ta.editor.instance, e, data || {});
					}
				},
				getContent = function() {
					return ta.getContent.call(ta, ta[0]);
				},
				setOld = function(res) {
					if (res && res.promise) {
						res.done(function(d) {
							old = d;
						});
					} else {
						old = res;
					}
				},
				autoSync = function(interval) {
					if (dialogNode.is(':visible')) {
						fileSync(file.hash);
						setTimeout(function() {
							autoSync(interval);
						}, interval);
					}
				},
				saveAsFile = {},
				ta, old, dialogNode, selEncoding, extEditor, maxW, syncInterval;
				
			if (editor) {
				if (editor.html) {
					ta = jQuery(editor.html);
				}
				extEditor = {
					init     : editor.init || null,
					load     : editor.load,
					getContent : editor.getContent || null,
					save     : editor.save,
					beforeclose : typeof editor.beforeclose == 'function' ? editor.beforeclose : void 0,
					close    : typeof editor.close == 'function' ? editor.close : function() {},
					focus    : typeof editor.focus == 'function' ? editor.focus : function() {},
					resize   : typeof editor.resize == 'function' ? editor.resize : function() {},
					instance : null,
					doSave   : saveon,
					doCancel : cancel,
					doClose  : savecl,
					file     : file,
					fm       : fm,
					confObj  : editor,
					trigger  : function(evName, data) {
						fm.trigger('editEditor' + evName, Object.assign({}, editor.info || {}, data));
					}
				};
			}
			
			if (!ta) {
				if (!fm.mimeIsText(file.mime)) {
					return dfrd.reject('errEditorNotFound');
				}
				(function() {
					var stateChange = function() {
							if (selEncoding) {
								changed().done(function(change) {
									if (change) {
										selEncoding.attr('title', fm.i18n('saveAsEncoding')).addClass('elfinder-edit-changed');
									} else {
										selEncoding.attr('title', fm.i18n('openAsEncoding')).removeClass('elfinder-edit-changed');
									}
								});
							}
						};
						
					ta = jQuery('<textarea class="elfinder-file-edit" rows="20" id="'+id+'-ta"></textarea>')
						.on('input propertychange', stateChange);
					
					if (!ta.editor || !ta.editor.info || ta.editor.info.useTextAreaEvent) {
						ta.on('keydown', function(e) {
							var code = e.keyCode,
								value, start;
							
							e.stopPropagation();
							if (code == jQuery.ui.keyCode.TAB) {
								e.preventDefault();
								// insert tab on tab press
								if (this.setSelectionRange) {
									value = this.value;
									start = this.selectionStart;
									this.value = value.substr(0, start) + "\t" + value.substr(this.selectionEnd);
									start += 1;
									this.setSelectionRange(start, start);
								}
							}
							
							if (e.ctrlKey || e.metaKey) {
								// close on ctrl+w/q
								if (code == 'Q'.charCodeAt(0) || code == 'W'.charCodeAt(0)) {
									e.preventDefault();
									cancel();
								}
								if (code == 'S'.charCodeAt(0)) {
									e.preventDefault();
									saveon();
								}
							}
							
						})
						.on('mouseenter', function(){this.focus();});
					}

					ta.initEditArea = function(id, file, content) {
						var heads = (encoding && encoding !== 'unknown')? [{value: encoding}] : [],
							wfake = jQuery('<select/>').hide(),
							setSelW = function(init) {
								init && wfake.appendTo(selEncoding.parent());
								wfake.empty().append(jQuery('<option/>').text(selEncoding.val()));
								selEncoding.width(wfake.width());
							};
						// ta.hide() for performance tune. Need ta.show() in `load()` if use textarea node.
						ta.hide().val(content);
						if (content === '' || ! encoding || encoding !== 'UTF-8') {
							heads.push({value: 'UTF-8'});
						}
						selEncoding = getEncSelect(heads).on('touchstart', function(e) {
							// for touch punch event handler
							e.stopPropagation();
						}).on('change', function() {
							// reload to change encoding if not edited
							changed().done(function(change) {
								if (! change && getContent() !== '') {
									cancel();
									edit(file, selEncoding.val(), editor).fail(function(err) { err && fm.error(err); });
								}
							});
							setSelW();
						}).on('mouseover', stateChange);
						ta.parent().next().prepend(jQuery('<div class="ui-dialog-buttonset elfinder-edit-extras"/>').append(selEncoding));
						setSelW(true);
					};
				})();
			}
			
			ta.data('hash', file.hash);
			
			if (extEditor) {
				ta.editor = extEditor;
				
				if (typeof extEditor.beforeclose === 'function') {
					opts.beforeclose = function() {
						return extEditor.beforeclose(ta[0], extEditor.instance);
					};
				}
				
				if (typeof extEditor.init === 'function') {
					ta.initEditArea = extEditor.init;
				}
				
				if (typeof extEditor.getContent === 'function') {
					ta.getContent = extEditor.getContent;
				}
			}
			
			if (! ta.initEditArea) {
				ta.initEditArea = function() {};
			}
			
			if (! ta.getContent) {
				ta.getContent = function() {
					return rtrim(ta.val());
				};
			}
			
			if (!editor || !editor.info || !editor.info.preventGet) {
				opts.buttons[fm.i18n('btnSave')]      = saveon;
				opts.buttons[fm.i18n('btnSaveClose')] = savecl;
				opts.buttons[fm.i18n('btnSaveAs')]    = saveAs;
				opts.buttons[fm.i18n('btnCancel')]    = cancel;
			}
			
			if (editor && typeof editor.prepare === 'function') {
				editor.prepare(ta, opts, file);
			}
			
			dialogNode = self.fmDialog(ta, opts)
				.attr('id', id)
				.on('keydown keyup keypress', function(e) {
					e.stopPropagation();
				})
				.css({ overflow: 'hidden', minHeight: '7em' })
				.addClass('elfinder-edit-editor')
				.closest('.ui-dialog')
				.on('changeType', function(e, data) {
					if (data.extention && data.mime) {
						var ext = data.extention,
							mime = data.mime,
							btnSet = jQuery(this).children('.ui-dialog-buttonpane').children('.ui-dialog-buttonset');
						btnSet.children('.elfinder-btncnt-0,.elfinder-btncnt-1').hide();
						saveAsFile.name = fm.splitFileExtention(file.name)[0] + '.' + data.extention;
						saveAsFile.mime = data.mime;
						if (!data.keepEditor) {
							btnSet.children('.elfinder-btncnt-2').trigger('click');
						}
					}
				});
			
			// care to viewport scale change with mobile devices
			maxW = (fm.options.dialogContained? elfNode : jQuery(window)).width();
			(dialogNode.width() > maxW) && dialogNode.width(maxW);
			
			return dfrd.promise();
		},
		
		/**
		 * Get file content and
		 * open dialog with textarea to edit file content
		 *
		 * @param  String  file hash
		 * @return jQuery.Deferred
		 **/
		edit = function(file, convert, editor) {
			var hash   = file.hash,
				opts   = fm.options,
				dfrd   = jQuery.Deferred(), 
				id     = 'edit-'+fm.namespace+'-'+file.hash,
				d      = fm.getUI().find('#'+id),
				conv   = !convert? 0 : convert,
				req, error, res;
			
			
			if (d.length) {
				d.elfinderdialog('toTop');
				return dfrd.resolve();
			}
			
			if (!file.read || (!file.write && (!editor.info || !editor.info.converter))) {
				error = ['errOpen', file.name, 'errPerm'];
				return dfrd.reject(error);
			}
			
			if (editor && editor.info) {
				if (typeof editor.info.edit === 'function') {
					res = editor.info.edit.call(fm, file, editor);
					if (res.promise) {
						res.done(function() {
							dfrd.resolve();
						}).fail(function(error) {
							dfrd.reject(error);
						});
					} else {
						res? dfrd.resolve() : dfrd.reject();
					}
					return dfrd;
				}

				if (editor.info.urlAsContent || editor.info.preventGet || editor.info.noContent) {
					req = jQuery.Deferred();
					if (editor.info.urlAsContent) {
						fm.url(hash, { async: true, onetime: true, temporary: true }).done(function(url) {
							req.resolve({content: url});
						});
					} else {
						req.resolve({});
					}
				} else {
					req = fm.request({
						data           : {cmd : 'get', target : hash, conv : conv, _t : file.ts},
						options        : {type: 'get', cache : true},
						notify         : {type : 'file', cnt : 1},
						preventDefault : true
					});
				}

				req.done(function(data) {
					var selEncoding, reg, m, res;
					if (data.doconv) {
						fm.confirm({
							title  : self.title,
							text   : data.doconv === 'unknown'? 'confirmNonUTF8' : 'confirmConvUTF8',
							accept : {
								label    : 'btnConv',
								callback : function() {  
									dfrd = edit(file, selEncoding.val(), editor);
								}
							},
							cancel : {
								label    : 'btnCancel',
								callback : function() { dfrd.reject(); }
							},
							optionsCallback : function(options) {
								options.create = function() {
									var base = jQuery('<div class="elfinder-dialog-confirm-encoding"/>'),
										head = {value: data.doconv},
										detected;
									
									if (data.doconv === 'unknown') {
										head.caption = '-';
									}
									selEncoding = getEncSelect([head]);
									jQuery(this).next().find('.ui-dialog-buttonset')
										.prepend(base.append(jQuery('<label>'+fm.i18n('encoding')+' </label>').append(selEncoding)));
								};
							}
						});
					} else {
						if ((!editor || !editor.info || !editor.info.preventGet) && fm.mimeIsText(file.mime)) {
							reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i');
							if (!editor.info.dataScheme) {
								if (window.atob && (m = data.content.match(reg))) {
									data.content = atob(data.content.substr(m[1].length));
								}
							} else {
								if (window.btoa && !data.content.match(reg)) {
									data.content = 'data:'+file.mime+';base64,'+btoa(data.content);
								}
							}
						}
						dialog(id, file, data.content, data.encoding, editor)
							.done(function(data) {
								dfrd.resolve(data);
							})
							.progress(function(encoding, newHash, data, saveDfd) {
								var ta = this;
								if (newHash) {
									hash = newHash;
								}
								fm.request({
									options : {type : 'post'},
									data : {
										cmd     : 'put',
										target  : hash,
										encoding : encoding || data.encoding,
										content : data
									},
									notify : {type : 'save', cnt : 1},
									syncOnFail : true,
									preventFail : true,
									navigate : {
										target : 'changed',
										toast : {
											inbuffer : {msg: fm.i18n(['complete', fm.i18n('btnSave')])}
										}
									}
								})
								.fail(function(error) {
									dfrd.reject(error);
									saveDfd.reject();
								})
								.done(function(data) {
									requestAnimationFrame(function(){
										ta.trigger('focus');
										ta.editor && ta.editor.focus(ta[0], ta.editor.instance);
									});
									saveDfd.resolve();
								});
							})
							.fail(function(error) {
								dfrd.reject(error);
							});
					}
				})
				.fail(function(error) {
					var err = fm.parseError(error);
					err = Array.isArray(err)? err[0] : err;
					(err !== 'errConvUTF8') && fm.sync();
					dfrd.reject(error);
				});
			}

			return dfrd.promise();
		},
		
		/**
		 * Current editors of selected files
		 * 
		 * @type Object
		 */
		editors = {},
		
		/**
		 * Fallback editor (Simple text editor)
		 * 
		 * @type Object
		 */
		fallbackEditor = {
			// Simple Text (basic textarea editor)
			info : {
				id : 'textarea',
				name : 'TextArea',
				useTextAreaEvent : true
			},
			load : function(textarea) {
				// trigger event 'editEditorPrepare'
				this.trigger('Prepare', {
					node: textarea,
					editorObj: void(0),
					instance: void(0),
					opts: {}
				});
				textarea.setSelectionRange && textarea.setSelectionRange(0, 0);
				jQuery(textarea).trigger('focus').show();
			},
			save : function(){}
		},

		/**
		 * Set current editors
		 * 
		 * @param  Object  file object
		 * @param  Number  cnt  count of selected items
		 * @return Void
		 */
		setEditors = function(file, cnt) {
			var mimeMatch = function(fileMime, editorMimes){
					if (!editorMimes) {
						return fm.mimeIsText(fileMime);
					} else {
						if (editorMimes[0] === '*' || jQuery.inArray(fileMime, editorMimes) !== -1) {
							return true;
						}
						var i, l;
						l = editorMimes.length;
						for (i = 0; i < l; i++) {
							if (fileMime.indexOf(editorMimes[i]) === 0) {
								return true;
							}
						}
						return false;
					}
				},
				extMatch = function(fileName, editorExts){
					if (!editorExts || !editorExts.length) {
						return true;
					}
					var ext = fileName.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(),
					i, l;
					l = editorExts.length;
					for (i = 0; i < l; i++) {
						if (ext === editorExts[i].toLowerCase()) {
							return true;
						}
					}
					return false;
				},
				optEditors = self.options.editors || [],
				cwdWrite = fm.cwd().write;
			
			stored = fm.storage('storedEditors') || {};
			editors = {};
			if (!optEditors.length) {
				optEditors = [fallbackEditor];
			}
			jQuery.each(optEditors, function(i, editor) {
				var name;
				if ((cnt === 1 || !editor.info.single)
						&& ((!editor.info || !editor.info.converter)? file.write : cwdWrite)
						&& (file.size > 0 || (!editor.info.converter && (editor.info.canMakeEmpty || (editor.info.canMakeEmpty !== false && fm.mimeIsText(file.mime)))))
						&& (!editor.info.maxSize || file.size <= editor.info.maxSize)
						&& mimeMatch(file.mime, editor.mimes || null)
						&& extMatch(file.name, editor.exts || null)
						&& typeof editor.load == 'function'
						&& typeof editor.save == 'function') {
					
					name = editor.info.name? editor.info.name : ('Code Editor');
					editor.id = editor.info.id? editor.info.id : ('editor' + i),
					editor.name = name;
					editor.i18n = fm.i18n(name);
					editors[editor.id] = editor;
				}
			});
			return Object.keys(editors).length? true : false;
		},
		store = function(mime, editor) {
			if (mime && editor) {
				if (!jQuery.isPlainObject(stored)) {
					stored = {};
				}
				stored[mime] = editor.id;
				fm.storage('storedEditors', stored);
				fm.trigger('selectfiles', {files : fm.selected()});
			}
		},
		useStoredEditor = function() {
			var d = fm.storage('useStoredEditor');
			return d? (d > 0) : self.options.useStoredEditor;
		},
		editorMaximized = function() {
			var d = fm.storage('editorMaximized');
			return d? (d > 0) : self.options.editorMaximized;
		},
		getSubMenuRaw = function(files, callback) {
			var subMenuRaw = [];
			jQuery.each(editors, function(id, ed) {
				subMenuRaw.push(
					{
						label    : fm.escape(ed.i18n),
						icon     : ed.info && ed.info.icon? ed.info.icon : 'edit',
						options  : { iconImg: ed.info && ed.info.iconImg? fm.baseUrl + ed.info.iconImg : void(0) },
						callback : function() {
							store(files[0].mime, ed);
							callback && callback.call(ed);
						}
					}		
				);
			});
			return subMenuRaw;
		},
		getStoreId = function(name) {
			// for compatibility to previous version
			return name.toLowerCase().replace(/ +/g, '');
		},
		getStoredEditor = function(mime) {
			var name = stored[mime];
			return name && Object.keys(editors).length? editors[getStoreId(name)] : void(0);
		},
		infoRequest = function() {

		},
		stored;
	
	
	this.shortcuts = [{
		pattern     : 'ctrl+e'
	}];
	
	this.init = function() {
		var self = this,
			fm   = this.fm,
			opts = this.options,
			cmdChecks = [],
			ccData, dfd;
		
		this.onlyMimes = this.options.mimes || [];
		
		fm.one('open', function() {
			// editors setup
			if (opts.editors && Array.isArray(opts.editors)) {
				fm.trigger('canMakeEmptyFile', {mimes: Object.keys(fm.storage('mkfileTextMimes') || {}).concat(opts.makeTextMimes || ['text/plain'])});
				jQuery.each(opts.editors, function(i, editor) {
					if (editor.info && editor.info.cmdCheck) {
						cmdChecks.push(editor.info.cmdCheck);
					}
				});
				if (cmdChecks.length) {
					if (fm.api >= 2.1030) {
						dfd = fm.request({
							data : {
								cmd: 'editor',
								name: cmdChecks,
								method: 'enabled'
							},
							preventDefault : true
						}).done(function(d) {
							ccData = d;
						}).fail(function() {
							ccData = {};
						});
					} else {
						ccData = {};
						dfd = jQuery.Deferred().resolve();
					}
				} else {
					dfd = jQuery.Deferred().resolve();
				}
				
				dfd.always(function() {
					if (ccData) {
						opts.editors = jQuery.grep(opts.editors, function(e) {
							if (e.info && e.info.cmdCheck) {
								return ccData[e.info.cmdCheck]? true : false;
							} else {
								return true;
							}
						});
					}
					jQuery.each(opts.editors, function(i, editor) {
						if (editor.setup && typeof editor.setup === 'function') {
							editor.setup.call(editor, opts, fm);
						}
						if (!editor.disabled) {
							if (editor.mimes && Array.isArray(editor.mimes)) {
								mimesSingle = mimesSingle.concat(editor.mimes);
								if (!editor.info || !editor.info.single) {
									mimes = mimes.concat(editor.mimes);
								}
							}
							if (!allowAll && editor.mimes && editor.mimes[0] === '*') {
								allowAll = true;
							}
							if (!editor.info) {
								editor.info = {};
							}
							if (editor.info.integrate) {
								fm.trigger('helpIntegration', Object.assign({cmd: 'edit'}, editor.info.integrate));
							}
							if (editor.info.canMakeEmpty) {
								fm.trigger('canMakeEmptyFile', {mimes: editor.mimes});
							}
						}
					});
					
					mimesSingle = (jQuery.uniqueSort || jQuery.unique)(mimesSingle);
					mimes = (jQuery.uniqueSort || jQuery.unique)(mimes);
					
					opts.editors = jQuery.grep(opts.editors, function(e) {
						return e.disabled? false : true;
					});
				});
			}
		})
		.bind('select', function() {
			editors = null;
		})
		.bind('contextmenucreate', function(e) {
			var file, editor,
				single = function(editor) {
					var title = self.title;
					fm.one('contextmenucreatedone', function() {
						self.title = title;
					});
					self.title = fm.escape(editor.i18n);
					if (editor.info && editor.info.iconImg) {
						self.contextmenuOpts = {
							iconImg: fm.baseUrl + editor.info.iconImg
						};
					}
					delete self.variants;
				};
			
			self.contextmenuOpts = void(0);
			if (e.data.type === 'files' && self.enabled()) {
				file = fm.file(e.data.targets[0]);
				if (setEditors(file, e.data.targets.length)) {
					if (Object.keys(editors).length > 1) {
						if (!useStoredEditor() || !(editor = getStoredEditor(file.mime))) {
							delete self.extra;
							self.variants = [];
							jQuery.each(editors, function(id, editor) {
								self.variants.push([{ editor: editor }, editor.i18n, editor.info && editor.info.iconImg? fm.baseUrl + editor.info.iconImg : 'edit']);
							});
						} else {
							single(editor);
							self.extra = {
								icon: 'menu',
								node: jQuery('<span/>')
									.attr({title: fm.i18n('select')})
									.on('click touchstart', function(e){
										if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
											return;
										}
										var node = jQuery(this);
										e.stopPropagation();
										e.preventDefault();
										fm.trigger('contextmenu', {
											raw: getSubMenuRaw(fm.selectedFiles(), function() {
												var hashes = fm.selected();
												fm.exec('edit', hashes, {editor: this});
												fm.trigger('selectfiles', {files : hashes});
											}),
											x: node.offset().left,
											y: node.offset().top
										});
									})
							};
						}
					} else {
						single(editors[Object.keys(editors)[0]]);
						delete self.extra;
					}
				}
			}
		})
		.bind('canMakeEmptyFile', function(e) {
			if (e.data && e.data.resetTexts) {
				var defs = fm.arrayFlip(self.options.makeTextMimes || ['text/plain']),
					hides = fm.storage('mkfileHides') || {};

				jQuery.each((fm.storage('mkfileTextMimes') || {}), function(mime, type) {
					if (!defs[mime]) {
						delete fm.mimesCanMakeEmpty[mime];
						delete hides[mime];
					}
				});
				fm.storage('mkfileTextMimes', null);
				if (Object.keys(hides).length) {
					fm.storage('mkfileHides', hides);
				} else {
					fm.storage('mkfileHides', null);
				}
			}
		});
	};
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;

		return cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(select, opts) {
		var fm    = this.fm, 
			files = filter(this.files(select)),
			hashes = jQuery.map(files, function(f) { return f.hash; }),
			list  = [],
			editor = opts && opts.editor? opts.editor : null,
			node = jQuery(opts && opts._currentNode? opts._currentNode : fm.cwdHash2Elm(hashes[0])),
			getEditor = function() {
				var dfd = jQuery.Deferred(),
					storedId;
				
				if (!editor && Object.keys(editors).length > 1) {
					if (useStoredEditor() && (editor = getStoredEditor(files[0].mime))) {
						return dfd.resolve(editor);
					}
					fm.trigger('contextmenu', {
						raw: getSubMenuRaw(files, function() {
							dfd.resolve(this);
						}),
						x: node.offset().left,
						y: node.offset().top + 22,
						opened: function() {
							fm.one('closecontextmenu',function() {
								requestAnimationFrame(function() {
									if (dfd.state() === 'pending') {
										dfd.reject();
									}
								});
							});
						}
					});
					
					fm.trigger('selectfiles', {files : hashes});
					
					return dfd;
				} else {
					Object.keys(editors).length > 1 && editor && store(files[0].mime, editor);
					return dfd.resolve(editor? editor : (Object.keys(editors).length? editors[Object.keys(editors)[0]] : null));
				}
			},
			dfrd = jQuery.Deferred(),
			file;

		if (editors === null) {
			setEditors(files[0], hashes.length);
		}
		
		if (!node.length) {
			node = fm.getUI('cwd');
		}
		
		getEditor().done(function(editor) {
			while ((file = files.shift())) {
				list.push(edit(file, void(0), editor).fail(function(error) {
					error && fm.error(error);
				}));
			}
			
			if (list.length) { 
				jQuery.when.apply(null, list).done(function() {
					dfrd.resolve();
				}).fail(function() {
					dfrd.reject();
				});
			} else {
				dfrd.reject();
			}
		}).fail(function() {
			dfrd.reject();
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/empty.js
 */

/**
 * @class elFinder command "empty".
 * Empty the folder
 *
 * @type  elFinder.command
 * @author  Naoki Sawada
 */
elFinder.prototype.commands.empty = function() {
		var self, fm,
		selFiles = function(select) {
			var sel = self.files(select);
			if (!sel.length) {
				sel = [ fm.cwd() ];
			}
			return sel;
		};
	
	this.linkedCmds = ['rm'];
	
	this.init = function() {
		// lazy assign to make possible to become superclass
		self = this;
		fm = this.fm;
	};

	this.getstate = function(select) {
		var sel = selFiles(select),
			cnt;
		
		cnt = sel.length;
		return jQuery.grep(sel, function(f) { return f.read && f.write && f.mime === 'directory' ? true : false; }).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var dirs = selFiles(hashes),
			cnt  = dirs.length,
			dfrd = jQuery.Deferred()
				.done(function() {
					var data = {changed: {}};
					fm.toast({msg: fm.i18n(['"'+success.join('", ')+'"', 'complete', fm.i18n('cmdempty')])});
					jQuery.each(dirs, function(i, dir) {
						data.changed[dir.hash] = dir;
					});
					fm.change(data);
				})
				.always(function() {
					var cwd = fm.cwd().hash;
					fm.trigger('selectfiles', {files: jQuery.map(dirs, function(d) { return cwd === d.phash? d.hash : null; })});
				}),
			success = [],
			done = function(res) {
				if (typeof res === 'number') {
					success.push(dirs[res].name);
					delete dirs[res].dirs;
				} else {
					res && fm.error(res);
				}
				(--cnt < 1) && dfrd[success.length? 'resolve' : 'reject']();
			};

		jQuery.each(dirs, function(i, dir) {
			var tm;
			if (!(dir.write && dir.mime === 'directory')) {
				done(['errEmpty', dir.name, 'errPerm']);
				return null;
			}
			if (!fm.isCommandEnabled('rm', dir.hash)) {
				done(['errCmdNoSupport', '"rm"']);
				return null;
			}
			tm = setTimeout(function() {
				fm.notify({type : 'search', cnt : 1, hideCnt : cnt > 1? false : true});
			}, fm.notifyDelay);
			fm.request({
				data : {cmd  : 'open', target : dir.hash},
				preventDefault : true,
				asNotOpen : true
			}).done(function(data) {
				var targets = [];
				tm && clearTimeout(tm);
				if (fm.ui.notify.children('.elfinder-notify-search').length) {
					fm.notify({type : 'search', cnt : -1, hideCnt : cnt > 1? false : true});
				}
				if (data && data.files && data.files.length) {
					if (data.files.length > fm.maxTargets) {
						done(['errEmpty', dir.name, 'errMaxTargets', fm.maxTargets]);
					} else {
						fm.updateCache(data);
						jQuery.each(data.files, function(i, f) {
							if (!f.write || f.locked) {
								done(['errEmpty', dir.name, 'errRm', f.name, 'errPerm']);
								targets = [];
								return false;
							}
							targets.push(f.hash);
						});
						if (targets.length) {
							fm.exec('rm', targets, { _userAction : true, addTexts : [ fm.i18n('folderToEmpty', dir.name) ] })
							.fail(function(error) {
								fm.trigger('unselectfiles', {files: fm.selected()});
								done(fm.parseError(error) || '');
							})
							.done(function() { done(i); });
						}
					}
				} else {
					fm.toast({ mode: 'warning', msg: fm.i18n('filderIsEmpty', dir.name)});
					done('');
				}
			}).fail(function(error) {
				done(fm.parseError(error) || '');
			});
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/extract.js
 */

/**
 * @class  elFinder command "extract"
 * Extract files from archive
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.extract = function() {
		var self    = this,
		fm      = self.fm,
		mimes   = [],
		filter  = function(files) {
			return jQuery.grep(files, function(file) { 
				return file.read && jQuery.inArray(file.mime, mimes) !== -1 ? true : false;
			});
		};
	
	this.variants = [];
	this.disableOnSearch = true;
	
	// Update mimes list on open/reload
	fm.bind('open reload', function() {
		mimes = fm.option('archivers')['extract'] || [];
		if (fm.api > 2) {
			self.variants = [[{makedir: true}, fm.i18n('cmdmkdir')], [{}, fm.i18n('btnCwd')]];
		} else {
			self.variants = [[{}, fm.i18n('btnCwd')]];
		}
		self.change();
	});
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
		
		return cnt && this.fm.cwd().write && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes, opts) {
		var files    = this.files(hashes),
			dfrd     = jQuery.Deferred(),
			cnt      = files.length,
			makedir  = opts && opts.makedir ? 1 : 0,
			i, error,
			decision;

		var overwriteAll = false;
		var omitAll = false;
		var mkdirAll = 0;

		var names = jQuery.map(fm.files(hashes), function(file) { return file.name; });
		var map = {};
		jQuery.grep(fm.files(hashes), function(file) {
			map[file.name] = file;
			return false;
		});
		
		var decide = function(decision) {
			switch (decision) {
				case 'overwrite_all' :
					overwriteAll = true;
					break;
				case 'omit_all':
					omitAll = true;
					break;
			}
		};

		var unpack = function(file) {
			if (!(file.read && fm.file(file.phash).write)) {
				error = ['errExtract', file.name, 'errPerm'];
				fm.error(error);
				dfrd.reject(error);
			} else if (jQuery.inArray(file.mime, mimes) === -1) {
				error = ['errExtract', file.name, 'errNoArchive'];
				fm.error(error);
				dfrd.reject(error);
			} else {
				fm.request({
					data:{cmd:'extract', target:file.hash, makedir:makedir},
					notify:{type:'extract', cnt:1},
					syncOnFail:true,
					navigate:{
						toast : makedir? {
							incwd    : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}},
							inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}}
						} : {
							inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')])}
						}
					}
				})
				.fail(function (error) {
					if (dfrd.state() != 'rejected') {
						dfrd.reject(error);
					}
				})
				.done(function () {
				});
			}
		};
		
		var confirm = function(files, index) {
			var file = files[index],
			name = fm.splitFileExtention(file.name)[0],
			existed = (jQuery.inArray(name, names) >= 0),
			next = function(){
				if((index+1) < cnt) {
					confirm(files, index+1);
				} else {
					dfrd.resolve();
				}
			};
			if (!makedir && existed && map[name].mime != 'directory') {
				fm.confirm(
					{
						title : fm.i18n('ntfextract'),
						text  : ['errExists', name, 'confirmRepl'],
						accept:{
							label : 'btnYes',
							callback:function (all) {
								decision = all ? 'overwrite_all' : 'overwrite';
								decide(decision);
								if(!overwriteAll && !omitAll) {
									if('overwrite' == decision) {
										unpack(file);
									}
									if((index+1) < cnt) {
										confirm(files, index+1);
									} else {
										dfrd.resolve();
									}
								} else if(overwriteAll) {
									for (i = index; i < cnt; i++) {
										unpack(files[i]);
									}
									dfrd.resolve();
								}
							}
						},
						reject : {
							label : 'btnNo',
							callback:function (all) {
								decision = all ? 'omit_all' : 'omit';
								decide(decision);
								if(!overwriteAll && !omitAll && (index+1) < cnt) {
									confirm(files, index+1);
								} else if (omitAll) {
									dfrd.resolve();
								}
							}
						},
						cancel : {
							label : 'btnCancel',
							callback:function () {
								dfrd.resolve();
							}
						},
						all : ((index+1) < cnt)
					}
				);
			} else if (!makedir) {
				if (mkdirAll == 0) {
					fm.confirm({
						title : fm.i18n('cmdextract'),
						text  : [fm.i18n('cmdextract')+' "'+file.name+'"', 'confirmRepl'],
						accept:{
							label : 'btnYes',
							callback:function (all) {
								all && (mkdirAll = 1);
								unpack(file);
								next();
							}
						},
						reject : {
							label : 'btnNo',
							callback:function (all) {
								all && (mkdirAll = -1);
								next();
							}
						},
						cancel : {
							label : 'btnCancel',
							callback:function () {
								dfrd.resolve();
							}
						},
						all : ((index+1) < cnt)
					});
				} else {
					(mkdirAll > 0) && unpack(file);
					next();
				}
			} else {
				unpack(file);
				next();
			}
		};
		
		if (!(this.enabled() && cnt && mimes.length)) {
			return dfrd.reject();
		}
		
		if(cnt > 0) {
			confirm(files, 0);
		}

		return dfrd;
	};

};


/*
 * File: /js/commands/forward.js
 */

/**
 * @class  elFinder command "forward"
 * Open next visited folder
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.forward = function() {
		this.alwaysEnabled = true;
	this.updateOnSelect = true;
	this.shortcuts = [{
		pattern     : 'ctrl+right'
	}];
	
	this.getstate = function() {
		return this.fm.history.canForward() ? 0 : -1;
	};
	
	this.exec = function() {
		return this.fm.history.forward();
	};
	
}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/fullscreen.js
 */

/**
 * @class  elFinder command "fullscreen"
 * elFinder node to full scrren mode
 *
 * @author Naoki Sawada
 **/

elFinder.prototype.commands.fullscreen = function() {
		var self   = this,
		fm     = this.fm,
		update = function(e, data) {
			e.preventDefault();
			e.stopPropagation();
			if (data && data.fullscreen) {
				self.update(void(0), (data.fullscreen === 'on'));
			}
		};

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.syncTitleOnChange = true;
	this.value = false;

	this.options = {
		ui : 'fullscreenbutton'
	};

	this.getstate = function() {
		return 0;
	};
	
	this.exec = function() {
		var node = fm.getUI().get(0),
			full = (node === fm.toggleFullscreen(node));
		self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen');
		self.update(void(0), full);
		return jQuery.Deferred().resolve();
	};
	
	fm.bind('init', function() {
		fm.getUI().off('resize.' + fm.namespace, update).on('resize.' + fm.namespace, update);
	});
};


/*
 * File: /js/commands/getfile.js
 */

/**
 * @class elFinder command "getfile". 
 * Return selected files info into outer callback.
 * For use elFinder with wysiwyg editors etc.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
(elFinder.prototype.commands.getfile = function() {
		var self   = this,
		fm     = this.fm,
		filter = function(files) {
			var o = self.options;

			files = jQuery.grep(files, function(file) {
				return (file.mime != 'directory' || o.folders) && file.read ? true : false;
			});

			return o.multiple || files.length == 1 ? files : [];
		};
	
	this.alwaysEnabled = true;
	this.callback      = fm.options.getFileCallback;
	this._disabled     = typeof(this.callback) == 'function';
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
			
		return this.callback && cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm    = this.fm,
			opts  = this.options,
			files = this.files(hashes),
			cnt   = files.length,
			url   = fm.option('url'),
			tmb   = fm.option('tmbUrl'),
			dfrd  = jQuery.Deferred()
				.done(function(data) {
					var res,
						done = function() {
							if (opts.oncomplete == 'close') {
								fm.hide();
							} else if (opts.oncomplete == 'destroy') {
								fm.destroy();
							}
						},
						fail = function(error) {
							if (opts.onerror == 'close') {
								fm.hide();
							} else if (opts.onerror == 'destroy') {
								fm.destroy();
							} else {
								error && fm.error(error);
							}
						};
					
					fm.trigger('getfile', {files : data});
					
					try {
						res = self.callback(data, fm);
					} catch(e) {
						fail(['Error in `getFileCallback`.', e.message]);
						return;
					}
					
					if (typeof res === 'object' && typeof res.done === 'function') {
						res.done(done).fail(fail);
					} else {
						done();
					}
				}),
			result = function(file) {
				return opts.onlyURL
					? opts.multiple ? jQuery.map(files, function(f) { return f.url; }) : files[0].url
					: opts.multiple ? files : files[0];
			},
			req = [], 
			i, file, dim;

		for (i = 0; i < cnt; i++) {
			file = files[i];
			if (file.mime == 'directory' && !opts.folders) {
				return dfrd.reject();
			}
			file.baseUrl = url;
			if (file.url == '1') {
				req.push(fm.request({
					data : {cmd : 'url', target : file.hash},
					notify : {type : 'url', cnt : 1, hideCnt : true},
					preventDefault : true
				})
				.done(function(data) {
					if (data.url) {
						var rfile = fm.file(this.hash);
						rfile.url = this.url = data.url;
					}
				}.bind(file)));
			} else {
				file.url = fm.url(file.hash);
			}
			if (! opts.onlyURL) {
				if (opts.getPath) {
					file.path = fm.path(file.hash);
					if (file.path === '' && file.phash) {
						// get parents
						(function() {
							var dfd  = jQuery.Deferred();
							req.push(dfd);
							fm.path(file.hash, false, {})
								.done(function(path) {
									file.path = path;
								})
								.fail(function() {
									file.path = '';
								})
								.always(function() {
									dfd.resolve();
								});
						})();
					}
				}
				if (file.tmb && file.tmb != 1) {
					file.tmb = tmb + file.tmb;
				}
				if (!file.width && !file.height) {
					if (file.dim) {
						dim = file.dim.split('x');
						file.width = dim[0];
						file.height = dim[1];
					} else if (opts.getImgSize && file.mime.indexOf('image') !== -1) {
						req.push(fm.request({
							data : {cmd : 'dim', target : file.hash},
							notify : {type : 'dim', cnt : 1, hideCnt : true},
							preventDefault : true
						})
						.done(function(data) {
							if (data.dim) {
								var dim = data.dim.split('x');
								var rfile = fm.file(this.hash);
								rfile.width = this.width = dim[0];
								rfile.height = this.height = dim[1];
							}
						}.bind(file)));
					}
				}
			}
		}
		
		if (req.length) {
			jQuery.when.apply(null, req).always(function() {
				dfrd.resolve(result(files));
			});
			return dfrd;
		}
		
		return dfrd.resolve(result(files));
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/help.js
 */

/**
 * @class  elFinder command "help"
 * "About" dialog
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.help = function() {
		var fm   = this.fm,
		self = this,
		linktpl = '<div class="elfinder-help-link"> <a href="{url}">{link}</a></div>',
		linktpltgt = '<div class="elfinder-help-link"> <a href="{url}" target="_blank">{link}</a></div>',
		atpl    = '<div class="elfinder-help-team"><div>{author}</div>{work}</div>',
		url     = /\{url\}/,
		link    = /\{link\}/,
		author  = /\{author\}/,
		work    = /\{work\}/,
		r       = 'replace',
		prim    = 'ui-priority-primary',
		sec     = 'ui-priority-secondary',
		lic     = 'elfinder-help-license',
		tab     = '<li class="' + fm.res('class', 'tabstab') + ' elfinder-help-tab-{id}"><a href="#'+fm.namespace+'-help-{id}" class="ui-tabs-anchor">{title}</a></li>',
		html    = ['<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-help">', 
				'<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'],
		stpl    = '<div class="elfinder-help-shortcut"><div class="elfinder-help-shortcut-pattern">{pattern}</div> {descrip}</div>',
		sep     = '<div class="elfinder-help-separator"/>',
		selfUrl = jQuery('base').length? document.location.href.replace(/#.*$/, '') : '',
		clTabActive = fm.res('class', 'tabsactive'),
		
		getTheme = function() {
			var src;
			if (fm.theme && fm.theme.author) {
				src = atpl[r]('elfinder-help-team', 'elfinder-help-team elfinder-help-term-theme')[r](author, fm.i18n(fm.theme.author) + (fm.theme.email? ' &lt;'+fm.theme.email+'&gt;' : ''))[r](work, fm.i18n('theme') + ' ('+fm.i18n(fm.theme.name)+')');
			} else {
				src = '<div class="elfinder-help-team elfinder-help-term-theme" style="display:none"></div>';
			}
			return src;
		},

		about = function() {
			html.push('<div id="'+fm.namespace+'-help-about" class="ui-tabs-panel ui-widget-content ui-corner-bottom"><div class="elfinder-help-logo"/>');
			html.push('<h3>elFinder</h3>');
			html.push('<div class="'+prim+'">'+fm.i18n('webfm')+'</div>');
			html.push('<div class="'+sec+'">'+fm.i18n('ver')+': '+fm.version+'</div>');
			html.push('<div class="'+sec+'">'+fm.i18n('protocolver')+': <span class="apiver"></span></div>');
			html.push('<div class="'+sec+'">jQuery/jQuery UI: '+jQuery().jquery+'/'+jQuery.ui.version+'</div>');

			html.push(sep);
			
			html.push(linktpltgt[r](url, 'https://studio-42.github.io/elFinder/')[r](link, fm.i18n('homepage')));
			html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder/wiki')[r](link, fm.i18n('docs')));
			html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder')[r](link, fm.i18n('github')));
			//html.push(linktpltgt[r](url, 'http://twitter.com/elrte_elfinder')[r](link, fm.i18n('twitter')));
			
			html.push(sep);
			
			html.push('<div class="'+prim+'">'+fm.i18n('team')+'</div>');
			
			html.push(atpl[r](author, 'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;')[r](work, fm.i18n('chiefdev')));
			html.push(atpl[r](author, 'Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;')[r](work, fm.i18n('developer')));
			html.push(atpl[r](author, 'Troex Nevelin &lt;troex@fury.scancode.ru&gt;')[r](work, fm.i18n('maintainer')));
			html.push(atpl[r](author, 'Alexey Sukhotin &lt;strogg@yandex.ru&gt;')[r](work, fm.i18n('contributor')));
			
			if (fm.i18[fm.lang].translator) {
				jQuery.each(fm.i18[fm.lang].translator.split(', '), function() {
					html.push(atpl[r](author, jQuery.trim(this))[r](work, fm.i18n('translator')+' ('+fm.i18[fm.lang].language+')'));
				});	
			}
			
			html.push(getTheme());

			html.push(sep);
			html.push('<div class="'+lic+'">'+fm.i18n('icons')+': Pixelmixer, <a href="http://p.yusukekamiyamane.com" target="_blank">Fugue</a>, <a href="https://icons8.com" target="_blank">Icons8</a></div>');
			
			html.push(sep);
			html.push('<div class="'+lic+'">Licence: 3-clauses BSD Licence</div>');
			html.push('<div class="'+lic+'">Copyright © 2009-2019, Studio 42</div>');
			html.push('<div class="'+lic+'">„ …'+fm.i18n('dontforget')+' ”</div>');
			html.push('</div>');
		},
		shortcuts = function() {
			var sh = fm.shortcuts();
			// shortcuts tab
			html.push('<div id="'+fm.namespace+'-help-shortcuts" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			
			if (sh.length) {
				html.push('<div class="ui-widget-content elfinder-help-shortcuts">');
				jQuery.each(sh, function(i, s) {
					html.push(stpl.replace(/\{pattern\}/, s[0]).replace(/\{descrip\}/, s[1]));
				});
			
				html.push('</div>');
			} else {
				html.push('<div class="elfinder-help-disabled">'+fm.i18n('shortcutsof')+'</div>');
			}
			
			
			html.push('</div>');
			
		},
		help = function() {
			// help tab
			html.push('<div id="'+fm.namespace+'-help-help" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			html.push('<a href="https://github.com/Studio-42/elFinder/wiki" target="_blank" class="elfinder-dont-panic"><span>DON\'T PANIC</span></a>');
			html.push('</div>');
			// end help
		},
		useInteg = false,
		integrations = function() {
			useInteg = true;
			html.push('<div id="'+fm.namespace+'-help-integrations" class="ui-tabs-panel ui-widget-content ui-corner-bottom"/>');
		},
		useDebug = false,
		debug = function() {
			useDebug = true;
			// debug tab
			html.push('<div id="'+fm.namespace+'-help-debug" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			html.push('<div class="ui-widget-content elfinder-help-debug"><ul></ul></div>');
			html.push('</div>');
			// end debug
		},
		debugRender = function() {
			var render = function(elm, obj) {
				jQuery.each(obj, function(k, v) {
					elm.append(jQuery('<dt/>').text(k));
					if (typeof v === 'undefined') {
						elm.append(jQuery('<dd/>').append(jQuery('<span/>').text('undfined')));
					} else if (typeof v === 'object' && !v) {
						elm.append(jQuery('<dd/>').append(jQuery('<span/>').text('null')));
					} else if (typeof v === 'object' && (jQuery.isPlainObject(v) || v.length)) {
						elm.append( jQuery('<dd/>').append(render(jQuery('<dl/>'), v)));
					} else {
						elm.append(jQuery('<dd/>').append(jQuery('<span/>').text((v && typeof v === 'object')? '[]' : (v? v : '""'))));
					}
				});
				return elm;
			},
			cnt = debugUL.children('li').length,
			targetL, target, tabId,
			info, lastUL, lastDIV;
			
			if (self.debug.options || self.debug.debug) {
				if (cnt >= 5) {
					lastUL = debugUL.children('li:last');
					lastDIV = debugDIV.children('div:last');
					if (lastDIV.is(':hidden')) {
						lastUL.remove();
						lastDIV.remove();
					} else {
						lastUL.prev().remove();
						lastDIV.prev().remove();
					}
				}
				
				tabId = fm.namespace + '-help-debug-' + (+new Date());
				targetL = jQuery('<li/>').html('<a href="'+selfUrl+'#'+tabId+'">'+self.debug.debug.cmd+'</a>').prependTo(debugUL);
				target = jQuery('<div id="'+tabId+'"/>').data('debug', self.debug);
				
				targetL.on('click.debugrender', function() {
					var debug = target.data('debug');
					target.removeData('debug');
					if (debug) {
						target.hide();
						if (debug.debug) {
							info = jQuery('<fieldset>').append(jQuery('<legend/>').text('debug'), render(jQuery('<dl/>'), debug.debug));
							target.append(info);
						}
						if (debug.options) {
							info = jQuery('<fieldset>').append(jQuery('<legend/>').text('options'), render(jQuery('<dl/>'), debug.options));
							target.append(info);
						}
						target.show();
					}
					targetL.off('click.debugrender');
				});
				
				debugUL.after(target);
				
				opened && debugDIV.tabs('refresh');
			}
		},
		content = '',
		opened, tabInteg, integDIV, tabDebug, debugDIV, debugUL;
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.state = -1;
	
	this.shortcuts = [{
		pattern     : 'f1',
		description : this.title
	}];
	
	fm.bind('load', function() {
		var parts = self.options.view || ['about', 'shortcuts', 'help', 'integrations', 'debug'],
			i, helpSource, tabBase, tabNav, tabs, delta;
		
		// remove 'preference' tab, it moved to command 'preference'
		if ((i = jQuery.inArray('preference', parts)) !== -1) {
			parts.splice(i, 1);
		}
		
		// debug tab require jQueryUI Tabs Widget
		if (! jQuery.fn.tabs) {
			if ((i = jQuery.inArray(parts, 'debug')) !== -1) {
				parts.splice(i, 1);
			}
		}
		
		jQuery.each(parts, function(i, title) {
			html.push(tab[r](/\{id\}/g, title)[r](/\{title\}/, fm.i18n(title)));
		});
		
		html.push('</ul>');

		jQuery.inArray('about', parts) !== -1 && about();
		jQuery.inArray('shortcuts', parts) !== -1 && shortcuts();
		if (jQuery.inArray('help', parts) !== -1) {
			helpSource = fm.i18nBaseUrl + 'help/%s.html.js';
			help();
		}
		jQuery.inArray('integrations', parts) !== -1 && integrations();
		jQuery.inArray('debug', parts) !== -1 && debug();
		
		html.push('</div>');
		content = jQuery(html.join(''));
		
		content.find('.ui-tabs-nav li')
			.on('mouseenter mouseleave', function(e) {
				jQuery(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
			})
			.on('focus blur', 'a', function(e) {
				jQuery(e.delegateTarget).toggleClass('ui-state-focus', e.type === 'focusin');
			})
			.children()
			.on('click', function(e) {
				var link = jQuery(this);
				
				e.preventDefault();
				e.stopPropagation();
				
				link.parent().addClass(clTabActive).siblings().removeClass(clTabActive);
				content.children('.ui-tabs-panel').hide().filter(link.attr('href')).show();
			})
			.filter(':first').trigger('click');
		
		if (useInteg) {
			tabInteg = content.find('.elfinder-help-tab-integrations').hide();
			integDIV = content.find('#'+fm.namespace+'-help-integrations').hide().append(jQuery('<div class="elfinder-help-integrations-desc"/>').html(fm.i18n('integrationWith')));
			fm.bind('helpIntegration', function(e) {
				var ul = integDIV.children('ul:first'),
					data, elm, cmdUL, cmdCls;
				if (e.data) {
					if (jQuery.isPlainObject(e.data)) {
						data = Object.assign({
							link: '',
							title: '',
							banner: ''
						}, e.data);
						if (data.title || data.link) {
							if (!data.title) {
								data.title = data.link;
							}
							if (data.link) {
								elm = jQuery('<a/>').attr('href', data.link).attr('target', '_blank').text(data.title);
							} else {
								elm = jQuery('<span/>').text(data.title);
							}
							if (data.banner) {
								elm = jQuery('<span/>').append(jQuery('<img/>').attr(data.banner), elm);
							}
						}
					} else {
						elm = jQuery(e.data);
						elm.filter('a').each(function() {
							var tgt = jQuery(this);
							if (!tgt.attr('target')) {
								tgt.attr('target', '_blank');;
							}
						});
					}
					if (elm) {
						tabInteg.show();
						if (!ul.length) {
							ul = jQuery('<ul class="elfinder-help-integrations"/>').appendTo(integDIV);
						}
						if (data && data.cmd) {
							cmdCls = 'elfinder-help-integration-' + data.cmd;
							cmdUL = ul.find('ul.' + cmdCls);
							if (!cmdUL.length) {
								cmdUL = jQuery('<ul class="'+cmdCls+'"/>');
								ul.append(jQuery('<li/>').append(jQuery('<span/>').html(fm.i18n('cmd'+data.cmd))).append(cmdUL));
							}
							elm = cmdUL.append(jQuery('<li/>').append(elm));
						} else {
							ul.append(jQuery('<li/>').append(elm));
						}
					}
				}
			}).bind('themechange', function() {
				content.find('div.elfinder-help-term-theme').replaceWith(getTheme());
			});
		}

		// debug
		if (useDebug) {
			tabDebug = content.find('.elfinder-help-tab-debug').hide();
			debugDIV = content.find('#'+fm.namespace+'-help-debug').children('div:first');
			debugUL = debugDIV.children('ul:first').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
			});

			self.debug = {};
	
			fm.bind('backenddebug', function(e) {
				// CAUTION: DO NOT TOUCH `e.data`
				if (useDebug && e.data && e.data.debug) {
					self.debug = { options : e.data.options, debug : Object.assign({ cmd : fm.currentReqCmd }, e.data.debug) };
					if (self.dialog) {
						debugRender();
					}
				}
			});
		}

		content.find('#'+fm.namespace+'-help-about').find('.apiver').text(fm.api);
		self.dialog = self.fmDialog(content, {
				title : self.title,
				width : 530,
				maxWidth: 'window',
				maxHeight: 'window',
				autoOpen : false,
				destroyOnClose : false,
				close : function() {
					if (useDebug) {
						tabDebug.hide();
						debugDIV.tabs('destroy');
					}
					opened = false;
				}
			})
			.on('click', function(e) {
				e.stopPropagation();
			})
			.css({
				overflow: 'hidden'
			});
		
		tabBase = self.dialog.children('.ui-tabs');
		tabNav = tabBase.children('.ui-tabs-nav:first');
		tabs = tabBase.children('.ui-tabs-panel');
		delta = self.dialog.outerHeight(true) - self.dialog.height();
		self.dialog.closest('.ui-dialog').on('resize', function() {
			tabs.height(self.dialog.height() - delta - tabNav.outerHeight(true) - 20);
		});
		
		if (helpSource) {
			self.dialog.one('initContents', function() {
				jQuery.ajax({
					url: self.options.helpSource? self.options.helpSource : helpSource.replace('%s', fm.lang),
					dataType: 'html'
				}).done(function(source) {
					jQuery('#'+fm.namespace+'-help-help').html(source);
				}).fail(function() {
					jQuery.ajax({
						url: helpSource.replace('%s', 'en'),
						dataType: 'html'
					}).done(function(source) {
						jQuery('#'+fm.namespace+'-help-help').html(source);
					});
				});
			});
		}
		
		self.state = 0;

		fm.trigger('helpBuilded', self.dialog);
	}).one('open', function() {
		var debug = false;
		fm.one('backenddebug', function() {
			debug =true;
		}).one('opendone', function() {
			requestAnimationFrame(function() {
				if (! debug && useDebug) {
					useDebug = false;
					tabDebug.hide();
					debugDIV.hide();
					debugUL.hide();
				}
			});
		});
	});
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(sel, opts) {
		var tab = opts? opts.tab : void(0),
			debugShow = function() {
				if (useDebug) {
					debugDIV.tabs();
					debugUL.find('a:first').trigger('click');
					tabDebug.show();
					opened = true;
				}
			};
		debugShow();
		this.dialog.trigger('initContents').elfinderdialog('open').find((tab? '.elfinder-help-tab-'+tab : '.ui-tabs-nav li') + ' a:first').trigger('click');
		return jQuery.Deferred().resolve();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/hidden.js
 */

/**
 * @class  elFinder command "hidden"
 * Always hidden command for uiCmdMap
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.hidden = function() {
		this.hidden = true;
	this.updateOnSelect = false;
	this.getstate = function() {
		return -1;
	};
};

/*
 * File: /js/commands/hide.js
 */

/**
 * @class elFinder command "hide".
 * folders/files to hide as personal setting.
 *
 * @type  elFinder.command
 * @author  Naoki Sawada
 */
elFinder.prototype.commands.hide = function() {
	
	var self = this,
		nameCache = {},
		hideData, hideCnt, cMenuType, sOrigin;

	this.syncTitleOnChange = true;

	this.shortcuts = [{
		pattern : 'ctrl+shift+dot',
		description : this.fm.i18n('toggleHidden')
	}];

	this.init = function() {
		var fm = this.fm;
		
		hideData = fm.storage('hide') || {items: {}};
		hideCnt = Object.keys(hideData.items).length;

		this.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
		self.update(void(0), self.title);
	};

	this.fm.bind('select contextmenucreate closecontextmenu', function(e, fm) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		if (e.type === 'select' && e.data) {
			sOrigin = e.data.origin;
		} else if (e.type === 'contextmenucreate') {
			cMenuType = e.data.type;
		}
		if (!sel.length || (((e.type !== 'contextmenucreate' && sOrigin !== 'navbar') || cMenuType === 'cwd') && sel[0] === fm.cwd().hash)) {
			self.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
		} else {
			self.title = fm.i18n('cmdhide');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(cMenuType === 'cwd'? (hideCnt? 0 : -1) : void(0), self.title);
		} else {
			cMenuType = '';
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	});

	this.getstate = function(sel) {
		return (cMenuType !== 'cwd' && (sel || this.fm.selected()).length) || hideCnt? 0 : -1;
	};

	this.exec = function(hashes, opts) {
		var fm = this.fm,
			dfrd = jQuery.Deferred()
				.done(function() {
					fm.trigger('hide', {items: items, opts: opts});
				})
				.fail(function(error) {
					fm.error(error);
				}),
			o = opts || {},
			items = o.targets? o.targets : (hashes || fm.selected()),
			added = [],
			removed = [],
			notifyto, files, res;

		hideData = fm.storage('hide') || {};
		if (!jQuery.isPlainObject(hideData)) {
			hideData = {};
		}
		if (!jQuery.isPlainObject(hideData.items)) {
			hideData.items = {};
		}
		if (opts._currentType === 'shortcut' || !items.length || (opts._currentType !== 'navbar' && sOrigin !=='navbar' && items[0] === fm.cwd().hash)) {
			if (hideData.show) {
				o.hide = true;
			} else if (Object.keys(hideData.items).length) {
				o.show = true;
			}
		}
		if (o.reset) {
			o.show = true;
			hideCnt = 0;
		}
		if (o.show || o.hide) {
			if (o.show) {
				hideData.show = true;
			} else {
				delete hideData.show;
			}
			if (o.show) {
				fm.storage('hide', o.reset? null : hideData);
				self.title = fm.i18n('hideHidden');
				self.update(o.reset? -1 : void(0), self.title);
				jQuery.each(hideData.items, function(h) {
					var f = fm.file(h, true);
					if (f && (fm.searchStatus.state || !f.phash || fm.file(f.phash))) {
						added.push(f);
					}
				});
				if (added.length) {
					fm.updateCache({added: added});
					fm.add({added: added});
				}
				if (o.reset) {
					hideData = {items: {}};
				}
				return dfrd.resolve();
			}
			items = Object.keys(hideData.items);
		}

		if (items.length) {
			jQuery.each(items, function(i, h) {
				var f;
				if (!hideData.items[h]) {
					f = fm.file(h);
					if (f) {
						nameCache[h] = f.i18 || f.name;
					}
					hideData.items[h] = nameCache[h]? nameCache[h] : h;
				}
			});
			hideCnt = Object.keys(hideData.items).length;
			files = this.files(items);
			fm.storage('hide', hideData);
			fm.remove({removed: items});
			if (hideData.show) {
				this.exec(void(0), {hide: true});
			}
			if (!o.hide) {
				res = {};
				res.undo = {
					cmd : 'hide',
					callback : function() {
						var nData = fm.storage('hide');
						if (nData) {
							jQuery.each(items, function(i, h) {
								delete nData.items[h];
							});
							hideCnt = Object.keys(nData.items).length;
							fm.storage('hide', nData);
							fm.trigger('hide', {items: items, opts: {}});
							self.update(hideCnt? 0 : -1);
						}
						fm.updateCache({added: files});
						fm.add({added: files});
					}
				};
				res.redo = {
					cmd : 'hide',
					callback : function() {
						return fm.exec('hide', void(0), {targets: items});
					}
				};
			}
		}

		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(res);
	};
};


/*
 * File: /js/commands/home.js
 */

(elFinder.prototype.commands.home = function() {
		this.title = 'Home';
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'ctrl+home ctrl+shift+up',
		description : 'Home'
	}];
	
	this.getstate = function() {
		var root = this.fm.root(),
			cwd  = this.fm.cwd().hash;
			
		return root && cwd && root != cwd ? 0: -1;
	};
	
	this.exec = function() {
		return this.fm.exec('open', this.fm.root());
	};
	

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/info.js
 */

/**
 * @class elFinder command "info". 
 * Display dialog with file properties.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
(elFinder.prototype.commands.info = function() {
		var m   = 'msg',
		fm  = this.fm,
		spclass = 'elfinder-spinner',
		btnclass = 'elfinder-info-button',
		msg = {
			calc     : fm.i18n('calc'),
			size     : fm.i18n('size'),
			unknown  : fm.i18n('unknown'),
			path     : fm.i18n('path'),
			aliasfor : fm.i18n('aliasfor'),
			modify   : fm.i18n('modify'),
			perms    : fm.i18n('perms'),
			locked   : fm.i18n('locked'),
			dim      : fm.i18n('dim'),
			kind     : fm.i18n('kind'),
			files    : fm.i18n('files'),
			folders  : fm.i18n('folders'),
			roots    : fm.i18n('volumeRoots'),
			items    : fm.i18n('items'),
			yes      : fm.i18n('yes'),
			no       : fm.i18n('no'),
			link     : fm.i18n('link'),
			owner    : fm.i18n('owner'),
			group    : fm.i18n('group'),
			perm     : fm.i18n('perm'),
			getlink  : fm.i18n('getLink')
		},
		applyZWSP = function(str, remove) {
			if (remove) {
				return str.replace(/\u200B/g, '');
			} else {
				return str.replace(/(\/|\\)/g, "$1\u200B");
			}
		};
	
	this.items = ['size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm'];
	if (this.options.custom && Object.keys(this.options.custom).length) {
		jQuery.each(this.options.custom, function(name, details) {
			details.label && this.items.push(details.label);
		});
	}

	this.tpl = {
		main       : '<div class="ui-helper-clearfix elfinder-info-title {dirclass}"><span class="elfinder-cwd-icon {class} ui-corner-all"{style}/>{title}</div><table class="elfinder-info-tb">{content}</table>',
		itemTitle  : '<strong>{name}</strong><span class="elfinder-info-kind">{kind}</span>',
		groupTitle : '<strong>{items}: {num}</strong>',
		row        : '<tr><td class="elfinder-info-label">{label} : </td><td class="{class}">{value}</td></tr>',
		spinner    : '<span>{text}</span> <span class="'+spclass+' '+spclass+'-{name}"/>'
	};
	
	this.alwaysEnabled = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'ctrl+i'
	}];
	
	this.init = function() {
		jQuery.each(msg, function(k, v) {
			msg[k] = fm.i18n(v);
		});
	};
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(hashes) {
		var files   = this.files(hashes);
		if (! files.length) {
			files   = this.files([ this.fm.cwd().hash ]);
		}
		var self    = this,
			fm      = this.fm,
			o       = this.options,
			tpl     = this.tpl,
			row     = tpl.row,
			cnt     = files.length,
			content = [],
			view    = tpl.main,
			l       = '{label}',
			v       = '{value}',
			reqs    = [],
			reqDfrd = null,
			opts    = {
				title : fm.i18n('selectionInfo'),
				width : 'auto',
				close : function() {
					jQuery(this).elfinderdialog('destroy');
					if (reqDfrd && reqDfrd.state() === 'pending') {
						reqDfrd.reject();
					}
					jQuery.grep(reqs, function(r) {
						r && r.state() === 'pending' && r.reject();
					});
				}
			},
			count = [],
			replSpinner = function(msg, name, className) {
				dialog.find('.'+spclass+'-'+name).parent().html(msg).addClass(className || '');
			},
			id = fm.namespace+'-info-'+jQuery.map(files, function(f) { return f.hash; }).join('-'),
			dialog = fm.getUI().find('#'+id),
			customActions = [],
			style = '',
			hashClass = 'elfinder-font-mono elfinder-info-hash',
			size, tmb, file, title, dcnt, rdcnt, path, getHashAlgorisms, hideItems;
			
		if (!cnt) {
			return jQuery.Deferred().reject();
		}
			
		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return jQuery.Deferred().resolve();
		}
		
		hideItems = fm.storage('infohides') || fm.arrayFlip(o.hideItems, true);

		if (cnt === 1) {
			file = files[0];
			
			if (file.icon) {
				style = ' '+fm.getIconStyle(file);
			}
			
			view  = view.replace('{dirclass}', file.csscls? fm.escape(file.csscls) : '').replace('{class}', fm.mime2class(file.mime)).replace('{style}', style);
			title = tpl.itemTitle.replace('{name}', fm.escape(file.i18 || file.name)).replace('{kind}', '<span title="'+fm.escape(file.mime)+'">'+fm.mime2kind(file)+'</span>');

			tmb = fm.tmb(file);
			
			if (!file.read) {
				size = msg.unknown;
			} else if (file.mime != 'directory' || file.alias) {
				size = fm.formatSize(file.size);
			} else {
				size = tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size');
				count.push(file.hash);
			}
			
			!hideItems.size && content.push(row.replace(l, msg.size).replace(v, size));
			!hideItems.aleasfor && file.alias && content.push(row.replace(l, msg.aliasfor).replace(v, file.alias));
			if (!hideItems.path) {
				if (path = fm.path(file.hash, true)) {
					content.push(row.replace(l, msg.path).replace(v, applyZWSP(fm.escape(path))).replace('{class}', 'elfinder-info-path'));
				} else {
					content.push(row.replace(l, msg.path).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'path')).replace('{class}', 'elfinder-info-path'));
					reqs.push(fm.path(file.hash, true, {notify: null})
					.fail(function() {
						replSpinner(msg.unknown, 'path');
					})
					.done(function(path) {
						replSpinner(applyZWSP(path), 'path');
					}));
				}
			}
			if (!hideItems.link && file.read) {
				var href,
				name_esc = fm.escape(file.name);
				if (file.url == '1') {
					content.push(row.replace(l, msg.link).replace(v, '<button class="'+btnclass+' '+spclass+'-url">'+msg.getlink+'</button>'));
				} else {
					if (file.url) {
						href = file.url;
					} else if (file.mime === 'directory') {
						if (o.nullUrlDirLinkSelf && file.url === null) {
							var loc = window.location;
							href = loc.pathname + loc.search + '#elf_' + file.hash;
						} else if (file.url !== '' && fm.option('url', (!fm.isRoot(file) && file.phash) || file.hash)) {
							href = fm.url(file.hash);
						}
					} else {
						href = fm.url(file.hash);
					}
					/*href && content.push(row.replace(l, msg.link).replace(v,  '<a href="'+href+'" target="_blank">'+name_esc+'</a>'));*/
					href && content.push(row.replace(l, msg.link).replace(v,  '<a href="'+href+'" target="_blank">'+name_esc+'</a> <a href="mailto:?Subject=WP File Manager Share '+name_esc+'&amp;Body='+href+'" class="mk_elfinder_share_button" title="Share"><button class="button button-primary">Share</button></a>'));	
				}
			}
			
			if (!hideItems.dim) {
				if (file.dim) { // old api
					content.push(row.replace(l, msg.dim).replace(v, file.dim));
				} else if (file.mime.indexOf('image') !== -1) {
					if (file.width && file.height) {
						content.push(row.replace(l, msg.dim).replace(v, file.width+'x'+file.height));
					} else {
						content.push(row.replace(l, msg.dim).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'dim')));
						reqs.push(fm.request({
							data : {cmd : 'dim', target : file.hash},
							preventDefault : true
						})
						.fail(function() {
							replSpinner(msg.unknown, 'dim');
						})
						.done(function(data) {
							replSpinner(data.dim || msg.unknown, 'dim');
							if (data.dim) {
								var dim = data.dim.split('x');
								var rfile = fm.file(file.hash);
								rfile.width = dim[0];
								rfile.height = dim[1];
							}
						}));
					}
				}
			}
			
			!hideItems.modify && content.push(row.replace(l, msg.modify).replace(v, fm.formatDate(file)));
			!hideItems.perms && content.push(row.replace(l, msg.perms).replace(v, fm.formatPermissions(file)));
			!hideItems.locked && content.push(row.replace(l, msg.locked).replace(v, file.locked ? msg.yes : msg.no));
			!hideItems.owner && file.owner && content.push(row.replace(l, msg.owner).replace(v, file.owner));
			!hideItems.group && file.group && content.push(row.replace(l, msg.group).replace(v, file.group));
			!hideItems.perm && file.perm && content.push(row.replace(l, msg.perm).replace(v, fm.formatFileMode(file.perm)));
			
			// Get MD5 hash
			if (window.ArrayBuffer && (fm.options.cdns.sparkmd5 || fm.options.cdns.jssha) && file.mime !== 'directory' && file.size > 0 && (!o.showHashMaxsize || file.size <= o.showHashMaxsize)) {
				getHashAlgorisms = [];
				jQuery.each(fm.storage('hashchekcer') || o.showHashAlgorisms, function(i, n) {
					if (!file[n]) {
					content.push(row.replace(l, fm.i18n(n)).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', n)));
						getHashAlgorisms.push(n);
					} else {
						content.push(row.replace(l, fm.i18n(n)).replace(v, file[n]).replace('{class}', hashClass));
					}
				});

				reqs.push(
					fm.getContentsHashes(file.hash, getHashAlgorisms).progress(function(hashes) {
						jQuery.each(getHashAlgorisms, function(i, n) {
							if (hashes[n]) {
								replSpinner(hashes[n], n, hashClass);
							}
						});
					}).always(function() {
						jQuery.each(getHashAlgorisms, function(i, n) {
							replSpinner(msg.unknown, n);
						});
					})
				);
			}
			
			// Add custom info fields
			if (o.custom) {
				jQuery.each(o.custom, function(name, details) {
					if (
					  !hideItems[details.label]
					    &&
					  (!details.mimes || jQuery.grep(details.mimes, function(m){return (file.mime === m || file.mime.indexOf(m+'/') === 0)? true : false;}).length)
					    &&
					  (!details.hashRegex || file.hash.match(details.hashRegex))
					) {
						// Add to the content
						content.push(row.replace(l, fm.i18n(details.label)).replace(v , details.tpl.replace('{id}', id)));
						// Register the action
						if (details.action && (typeof details.action == 'function')) {
							customActions.push(details.action);
						}
					}
				});
			}
		} else {
			view  = view.replace('{class}', 'elfinder-cwd-icon-group');
			title = tpl.groupTitle.replace('{items}', msg.items).replace('{num}', cnt);
			dcnt  = jQuery.grep(files, function(f) { return f.mime == 'directory' ? true : false ; }).length;
			if (!dcnt) {
				size = 0;
				jQuery.each(files, function(h, f) { 
					var s = parseInt(f.size);
					
					if (s >= 0 && size >= 0) {
						size += s;
					} else {
						size = 'unknown';
					}
				});
				content.push(row.replace(l, msg.kind).replace(v, msg.files));
				!hideItems.size && content.push(row.replace(l, msg.size).replace(v, fm.formatSize(size)));
			} else {
				rdcnt = jQuery.grep(files, function(f) { return f.mime === 'directory' && (! f.phash || f.isroot)? true : false ; }).length;
				dcnt -= rdcnt;
				content.push(row.replace(l, msg.kind).replace(v, (rdcnt === cnt || dcnt === cnt)? msg[rdcnt? 'roots' : 'folders'] : jQuery.map({roots: rdcnt, folders: dcnt, files: cnt - rdcnt - dcnt}, function(c, t) { return c? msg[t]+' '+c : null; }).join(', ')));
				!hideItems.size && content.push(row.replace(l, msg.size).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size')));
				count = jQuery.map(files, function(f) { return f.hash; });
				
			}
		}
		
		view = view.replace('{title}', title).replace('{content}', content.join('').replace(/{class}/g, ''));
		
		dialog = self.fmDialog(view, opts);
		dialog.attr('id', id).one('mousedown', '.elfinder-info-path', function() {
			jQuery(this).html(applyZWSP(jQuery(this).html(), true));
		});

		if (fm.UA.Mobile && jQuery.fn.tooltip) {
			dialog.children('.ui-dialog-content .elfinder-info-title').tooltip({
				classes: {
					'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
				},
				tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
				track: true
			});
		}

		if (file && file.url == '1') {
			dialog.on('click', '.'+spclass+'-url', function(){
				jQuery(this).parent().html(tpl.spinner.replace('{text}', fm.i18n('ntfurl')).replace('{name}', 'url'));
				fm.request({
					data : {cmd : 'url', target : file.hash},
					preventDefault : true
				})
				.fail(function() {
					replSpinner(name_esc, 'url');
				})
				.done(function(data) {
					if (data.url) {
						replSpinner('<a href="'+data.url+'" target="_blank">'+name_esc+'</a>' || name_esc, 'url');
						var rfile = fm.file(file.hash);
						rfile.url = data.url;
					} else {
						replSpinner(name_esc, 'url');
					}
				});
			});
		}

		// load thumbnail
		if (tmb) {
			jQuery('<img/>')
				.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
				.attr('src', tmb.url);
		}
		
		// send request to count total size
		if (count.length) {
			reqDfrd = fm.getSize(count).done(function(data) {
				replSpinner(data.formated, 'size');
			}).fail(function() {
				replSpinner(msg.unknown, 'size');
			});
		}
		
		// call custom actions
		if (customActions.length) {
			jQuery.each(customActions, function(i, action) {
				try {
					action(file, fm, dialog);
				} catch(e) {
					fm.debug('error', e);
				}
			});
		}
		
		return jQuery.Deferred().resolve();
	};
	
}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/mkdir.js
 */

/**
 * @class  elFinder command "mkdir"
 * Create new folder
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.mkdir = function() {
		var fm   = this.fm,
		self = this,
		curOrg;
	
	this.value           = '';
	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	this.syncTitleOnChange = true;
	this.mime            = 'directory';
	this.prefix          = 'untitled folder';
	this.exec            = function(select, cOpts) {
		var onCwd;

		if (select && select.length && cOpts && cOpts._currentType && cOpts._currentType === 'navbar') {
			this.origin = cOpts._currentType;
			this.data = {
				target: select[0]
			};
		} else {
			onCwd = fm.cwd().hash === select[0];
			this.origin = curOrg && !onCwd? curOrg : 'cwd';
			delete this.data;
		}
		if (! select && ! this.options.intoNewFolderToolbtn) {
			fm.getUI('cwd').trigger('unselectall');
		}
		//this.move = (!onCwd && curOrg !== 'navbar' && fm.selected().length)? true : false;
		this.move = this.value === fm.i18n('cmdmkdirin');
		return jQuery.proxy(fm.res('mixin', 'make'), self)();
	};
	
	this.shortcuts = [{
		pattern     : 'ctrl+shift+n'
	}];

	this.init = function() {
		if (this.options.intoNewFolderToolbtn) {
			this.syncTitleOnChange = true;
		}
	};
	
	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		
		self.className = 'mkdir';
		curOrg = e.data && sel.length? (e.data.origin || e.data.type || '') : '';
		if (!self.options.intoNewFolderToolbtn && curOrg === '') {
			curOrg = 'cwd';
		}
		if (sel.length && curOrg !== 'navbar' && curOrg !== 'cwd' && fm.cwd().hash !== sel[0]) {
			self.title = fm.i18n('cmdmkdirin');
			self.className += ' elfinder-button-icon-mkdirin';
		} else {
			self.title = fm.i18n('cmdmkdir');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(void(0), self.title);
		} else {
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	});
	
	this.getstate = function(select) {
		var cwd = fm.cwd(),
			sel = (curOrg === 'navbar' || (select && select[0] !== cwd.hash))? this.files(select || fm.selected()) : [],
			cnt = sel.length;

		if (curOrg === 'navbar') {
			return cnt && sel[0].write && sel[0].read? 0 : -1;  
		} else {
			return cwd.write && (!cnt || jQuery.grep(sel, function(f) { return f.read && ! f.locked? true : false; }).length == cnt)? 0 : -1;
		}
	};

};


/*
 * File: /js/commands/mkfile.js
 */

/**
 * @class  elFinder command "mkfile"
 * Create new empty file
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.mkfile = function() {
		var self = this;

	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	this.mime            = 'text/plain';
	this.prefix          = 'untitled file.txt';
	this.variants        = [];

	this.getTypeName = function(mime, type) {
		var fm = self.fm,
			name;
		if (name = fm.messages['kind' + fm.kinds[mime]]) {
			name = fm.i18n(['extentiontype', type.toUpperCase(), name]);
		} else {
			name = fm.i18n(['extentionfile', type.toUpperCase()]);
		}
		return name;
	};

	this.fm.bind('open reload canMakeEmptyFile', function() {
		var fm = self.fm,
			hides = fm.storage('mkfileHides') || {};
		self.variants = [];
		if (fm.mimesCanMakeEmpty) {
			jQuery.each(fm.mimesCanMakeEmpty, function(mime, type) {
				type && !hides[mime] && fm.uploadMimeCheck(mime) && self.variants.push([mime, self.getTypeName(mime, type)]);
			});
		}
		self.change();
	});

	this.getstate = function() {
		return this.fm.cwd().write ? 0 : -1;
	};

	this.exec = function(_dum, mime) {
		var fm = self.fm,
			type, err;
		if (type = fm.mimesCanMakeEmpty[mime]) {
			if (fm.uploadMimeCheck(mime)) {
				this.mime = mime;
				this.prefix = fm.i18n(['untitled file', type]);
				return jQuery.proxy(fm.res('mixin', 'make'), self)();
			}
			err = ['errMkfile', self.getTypeName(mime, type)];
		}
		return jQuery.Deferred().reject(err);
	};
};


/*
 * File: /js/commands/netmount.js
 */

/**
 * @class  elFinder command "netmount"
 * Mount network volume with user credentials.
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.netmount = function() {
		var self = this,
		hasMenus = false,
		content;

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.drivers = [];
	
	this.handlers = {
		load : function() {
			var fm = self.fm;
			self.drivers = fm.netDrivers;
			if (self.drivers.length) {
				requestAnimationFrame(function() {
					jQuery.each(self.drivers, function() {
						var d = self.options[this];
						if (d) {
							hasMenus = true;
							if (d.integrateInfo) {
								fm.trigger('helpIntegration', Object.assign({cmd: 'netmount'}, d.integrateInfo));
							}
						}
					});
				});
			}
		}
	};

	this.getstate = function() {
		return hasMenus ? 0 : -1;
	};
	
	this.exec = function() {
		var fm = self.fm,
			dfrd = jQuery.Deferred(),
			o = self.options,
			create = function() {
				var winFocus = function() {
						inputs.protocol.trigger('change', 'winfocus');
					},
					inputs = {
						protocol : jQuery('<select/>')
						.on('change', function(e, data){
							var protocol = this.value;
							content.find('.elfinder-netmount-tr').hide();
							content.find('.elfinder-netmount-tr-'+protocol).show();
							dialogNode && dialogNode.children('.ui-dialog-buttonpane:first').find('button').show();
							if (typeof o[protocol].select == 'function') {
								o[protocol].select(fm, e, data);
							}
							requestAnimationFrame(function() {
								content.find('input:text.elfinder-tabstop:visible:first').trigger('focus');
							});
						})
						.addClass('ui-corner-all')
					},
					opts = {
						title          : fm.i18n('netMountDialogTitle'),
						resizable      : false,
						modal          : true,
						destroyOnClose : false,
						open           : function() {
							jQuery(window).on('focus.'+fm.namespace, winFocus);
							inputs.protocol.trigger('change');
						},
						close          : function() { 
							dfrd.state() == 'pending' && dfrd.reject();
							jQuery(window).off('focus.'+fm.namespace, winFocus);
						},
						buttons        : {}
					},
					doMount = function() {
						var protocol = inputs.protocol.val(),
							data = {cmd : 'netmount', protocol: protocol},
							cur = o[protocol];
						jQuery.each(content.find('input.elfinder-netmount-inputs-'+protocol), function(name, input) {
							var val, elm;
							elm = jQuery(input);
							if (elm.is(':radio,:checkbox')) {
								if (elm.is(':checked')) {
									val = jQuery.trim(elm.val());
								}
							} else {
								val = jQuery.trim(elm.val());
							}
							if (val) {
								data[input.name] = val;
							}
						});
	
						if (!data.host) {
							return fm.trigger('error', {error : 'errNetMountHostReq', opts : {modal: true}});
						}
	
						fm.request({data : data, notify : {type : 'netmount', cnt : 1, hideCnt : true}})
							.done(function(data) {
								var pdir;
								if (data.added && data.added.length) {
									if (data.added[0].phash) {
										if (pdir = fm.file(data.added[0].phash)) {
											if (! pdir.dirs) {
												pdir.dirs = 1;
												fm.change({ changed: [ pdir ] });
											}
										}
									}
									fm.one('netmountdone', function() {
										fm.exec('open', data.added[0].hash);
									});
								}
								dfrd.resolve();
							})
							.fail(function(error) {
								if (cur.fail && typeof cur.fail == 'function') {
									cur.fail(fm, fm.parseError(error));
								}
								dfrd.reject(error);
							});
	
						self.dialog.elfinderdialog('close');
					},
					form = jQuery('<form autocomplete="off"/>').on('keydown', 'input', function(e) {
						var comp = true,
							next;
						if (e.keyCode === jQuery.ui.keyCode.ENTER) {
							jQuery.each(form.find('input:visible:not(.elfinder-input-optional)'), function() {
								if (jQuery(this).val() === '') {
									comp = false;
									next = jQuery(this);
									return false;
								}
							});
							if (comp) {
								doMount();
							} else {
								next.trigger('focus');
							}
						}
					}),
					hidden  = jQuery('<div/>'),
					dialog;

				content = jQuery('<table class="elfinder-info-tb elfinder-netmount-tb"/>')
					.append(jQuery('<tr/>').append(jQuery('<td>'+fm.i18n('protocol')+'</td>')).append(jQuery('<td/>').append(inputs.protocol)));

				jQuery.each(self.drivers, function(i, protocol) {
					if (o[protocol]) {
						inputs.protocol.append('<option value="'+protocol+'">'+fm.i18n(o[protocol].name || protocol)+'</option>');
						jQuery.each(o[protocol].inputs, function(name, input) {
							input.attr('name', name);
							if (input.attr('type') != 'hidden') {
								input.addClass('ui-corner-all elfinder-netmount-inputs-'+protocol);
								content.append(jQuery('<tr/>').addClass('elfinder-netmount-tr elfinder-netmount-tr-'+protocol).append(jQuery('<td>'+fm.i18n(name)+'</td>')).append(jQuery('<td/>').append(input)));
							} else {
								input.addClass('elfinder-netmount-inputs-'+protocol);
								hidden.append(input);
							}
						});
						o[protocol].protocol = inputs.protocol;
					}
				});
				
				content.append(hidden);
				
				content.find('.elfinder-netmount-tr').hide();

				opts.buttons[fm.i18n('btnMount')] = doMount;

				opts.buttons[fm.i18n('btnCancel')] = function() {
					self.dialog.elfinderdialog('close');
				};
				
				content.find('select,input').addClass('elfinder-tabstop');
				
				dialog = self.fmDialog(form.append(content), opts);
				dialogNode = dialog.closest('.ui-dialog');
				dialog.ready(function(){
					inputs.protocol.trigger('change');
					dialog.elfinderdialog('posInit');
				});
				return dialog;
			},
			dialogNode;
		
		if (!self.dialog) {
			self.dialog = create();
		} else {
			self.dialog.elfinderdialog('open');
		}

		return dfrd.promise();
	};

	self.fm.bind('netmount', function(e) {
		var d = e.data || null,
			o = self.options;
		if (d && d.protocol) {
			if (o[d.protocol] && typeof o[d.protocol].done == 'function') {
				o[d.protocol].done(self.fm, d);
				content.find('select,input').addClass('elfinder-tabstop');
				self.dialog.elfinderdialog('tabstopsInit');
			}
		}
	});

};

elFinder.prototype.commands.netunmount = function() {
	var self = this;

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.drivers = [];
	
	this.handlers = {
		load : function() {
			this.drivers = this.fm.netDrivers;
		}
	};

	this.getstate = function(sel) {
		var fm = this.fm,
			file;
		return !!sel && this.drivers.length && !this._disabled && (file = fm.file(sel[0])) && file.netkey ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var self   = this,
			fm     = this.fm,
			dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}),
			drive  = fm.file(hashes[0]),
			childrenRoots = function(hash) {
				var roots = [],
					work;
				if (fm.leafRoots) {
					work = [];
					jQuery.each(fm.leafRoots, function(phash, hashes) {
						var parents = fm.parents(phash),
							idx, deep;
						if ((idx = jQuery.inArray(hash, parents)) !== -1) {
							idx = parents.length - idx;
							jQuery.each(hashes, function(i, h) {
								work.push({i: idx, hash: h});
							});
						}
					});
					if (work.length) {
						work.sort(function(a, b) { return a.i < b.i; });
						jQuery.each(work, function(i, o) {
							roots.push(o.hash);
						});
					}
				}
				return roots;
			};

		if (this._disabled) {
			return dfrd.reject();
		}

		if (dfrd.state() == 'pending') {
			fm.confirm({
				title  : self.title,
				text   : fm.i18n('confirmUnmount', drive.name),
				accept : {
					label    : 'btnUnmount',
					callback : function() {  
						var target =  drive.hash,
							roots = childrenRoots(target),
							requests = [],
							removed = [],
							doUmount = function() {
								jQuery.when(requests).done(function() {
									fm.request({
										data   : {cmd  : 'netmount', protocol : 'netunmount', host: drive.netkey, user : target, pass : 'dum'}, 
										notify : {type : 'netunmount', cnt : 1, hideCnt : true},
										preventFail : true
									})
									.fail(function(error) {
										dfrd.reject(error);
									})
									.done(function(data) {
										drive.volumeid && delete fm.volumeExpires[drive.volumeid];
										dfrd.resolve();
									});
								}).fail(function(error) {
									if (removed.length) {
										fm.remove({ removed: removed });
									}
									dfrd.reject(error);
								});
							};
						
						if (roots.length) {
							fm.confirm({
								title : self.title,
								text  : (function() {
									var msgs = ['unmountChildren'];
									jQuery.each(roots, function(i, hash) {
										msgs.push([fm.file(hash).name]);
									});
									return msgs;
								})(),
								accept : {
									label : 'btnUnmount',
									callback : function() {
										jQuery.each(roots, function(i, hash) {
											var d = fm.file(hash);
											if (d.netkey) {
												requests.push(fm.request({
													data   : {cmd  : 'netmount', protocol : 'netunmount', host: d.netkey, user : d.hash, pass : 'dum'}, 
													notify : {type : 'netunmount', cnt : 1, hideCnt : true},
													preventDefault : true
												}).done(function(data) {
													if (data.removed) {
														d.volumeid && delete fm.volumeExpires[d.volumeid];
														removed = removed.concat(data.removed);
													}
												}));
											}
										});
										doUmount();
									}
								},
								cancel : {
									label : 'btnCancel',
									callback : function() {
										dfrd.reject();
									}
								}
							});
						} else {
							requests = null;
							doUmount();
						}
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() { dfrd.reject(); }
				}
			});
		}
			
		return dfrd;
	};

};


/*
 * File: /js/commands/open.js
 */

/**
 * @class  elFinder command "open"
 * Enter folder or open files in new windows
 *
 * @author Dmitry (dio) Levashov
 **/  
(elFinder.prototype.commands.open = function() {
		var fm = this.fm;
	this.alwaysEnabled = true;
	this.noChangeDirOnRemovedCwd = true;
	
	this._handlers = {
		dblclick : function(e) { e.preventDefault(); fm.exec('open', e.data && e.data.file? [ e.data.file ]: void(0)); },
		'select enable disable reload' : function(e) { this.update(e.type == 'disable' ? -1 : void(0));  }
	};
	
	this.shortcuts = [{
		pattern     : 'ctrl+down numpad_enter'+(fm.OS != 'mac' && ' enter')
	}];

	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
		
		return cnt == 1 
			? (sel[0].read? 0 : -1) 
			: (cnt && !fm.UA.Mobile) ? (jQuery.grep(sel, function(file) { return file.mime == 'directory' || ! file.read ? false : true;}).length == cnt ? 0 : -1) : -1;
	};
	
	this.exec = function(hashes, cOpts) {
		var dfrd  = jQuery.Deferred().fail(function(error) { error && fm.error(error); }),
			files = this.files(hashes),
			cnt   = files.length,
			thash = (typeof cOpts == 'object')? cOpts.thash : false,
			opts  = this.options,
			into  = opts.into || 'window',
			file, url, s, w, imgW, imgH, winW, winH, reg, link, html5dl, inline,
			selAct, cmd;

		if (!cnt && !thash) {
			{
				return dfrd.reject();
			}
		}

		// open folder
		if (thash || (cnt == 1 && (file = files[0]) && file.mime == 'directory')) {
			if (!thash && file && !file.read) {
				return dfrd.reject(['errOpen', file.name, 'errPerm']);
			} else {
				if (fm.keyState.ctrlKey && (fm.keyState.shiftKey || typeof fm.options.getFileCallback !== 'function')) {
					if (fm.getCommand('opennew')) {
						return fm.exec('opennew', [thash? thash : file.hash]);
					}
				}

				return fm.request({
					data   : {cmd  : 'open', target : thash || file.hash},
					notify : {type : 'open', cnt : 1, hideCnt : true},
					syncOnFail : true,
					lazy : false
				});
			}
		}
		
		files = jQuery.grep(files, function(file) { return file.mime != 'directory' ? true : false; });
		
		// nothing to open or files and folders selected - do nothing
		if (cnt != files.length) {
			return dfrd.reject();
		}
		
		var doOpen = function() {
			var wnd, target, getOnly;
			
			try {
				reg = new RegExp(fm.option('dispInlineRegex'), 'i');
			} catch(e) {
				reg = false;
			}
	
			// open files
			link     = jQuery('<a>').hide().appendTo(jQuery('body')),
			html5dl  = (typeof link.get(0).download === 'string');
			cnt = files.length;
			while (cnt--) {
				target = 'elf_open_window';
				file = files[cnt];
				
				if (!file.read) {
					return dfrd.reject(['errOpen', file.name, 'errPerm']);
				}
				
				inline = (reg && file.mime.match(reg));
				url = fm.openUrl(file.hash, !inline);
				if (fm.UA.Mobile || !inline) {
					if (html5dl) {
						if (!inline) {
							link.attr('download', file.name);
						} else {
							link.attr('target', '_blank');
						}
						link.attr('href', url).get(0).click();
					} else {
						wnd = window.open(url);
						if (!wnd) {
							return dfrd.reject('errPopup');
						}
					}
				} else {
					getOnly = (typeof opts.method === 'string' && opts.method.toLowerCase() === 'get');
					if (!getOnly
						&& url.indexOf(fm.options.url) === 0
						&& fm.customData
						&& Object.keys(fm.customData).length
						// Since playback by POST request can not be done in Chrome, media allows GET request
						&& !file.mime.match(/^(?:video|audio)/)
					) {
						// Send request as 'POST' method to hide custom data at location bar
						url = '';
					}
					if (into === 'window') {
						// set window size for image if set
						imgW = winW = Math.round(2 * screen.availWidth / 3);
						imgH = winH = Math.round(2 * screen.availHeight / 3);
						if (parseInt(file.width) && parseInt(file.height)) {
							imgW = parseInt(file.width);
							imgH = parseInt(file.height);
						} else if (file.dim) {
							s = file.dim.split('x');
							imgW = parseInt(s[0]);
							imgH = parseInt(s[1]);
						}
						if (winW >= imgW && winH >= imgH) {
							winW = imgW;
							winH = imgH;
						} else {
							if ((imgW - winW) > (imgH - winH)) {
								winH = Math.round(imgH * (winW / imgW));
							} else {
								winW = Math.round(imgW * (winH / imgH));
							}
						}
						w = 'width='+winW+',height='+winH;
						wnd = window.open(url, target, w + ',top=50,left=50,scrollbars=yes,resizable=yes,titlebar=no');
					} else {
						if (into === 'tabs') {
							target = file.hash;
						}
						wnd = window.open('about:blank', target);
					}
					
					if (!wnd) {
						return dfrd.reject('errPopup');
					}
					
					if (url === '') {
						var form = document.createElement("form");
						form.action = fm.options.url;
						form.method = 'POST';
						form.target = target;
						form.style.display = 'none';
						var params = Object.assign({}, fm.customData, {
							cmd: 'file',
							target: file.hash,
							_t: file.ts || parseInt(+new Date()/1000)
						});
						jQuery.each(params, function(key, val)
						{
							var input = document.createElement("input");
							input.name = key;
							input.value = val;
							form.appendChild(input);
						});
						
						document.body.appendChild(form);
						form.submit();
					} else if (into !== 'window') {
						wnd.location = url;
					}
					jQuery(wnd).trigger('focus');
				}
			}
			link.remove();
			return dfrd.resolve(hashes);
		};
		
		if (cnt > 1) {
			fm.confirm({
				title: 'openMulti',
				text : ['openMultiConfirm', cnt + ''],
				accept : {
					label : 'cmdopen',
					callback : function() { doOpen(); }
				},
				cancel : {
					label : 'btnCancel',
					callback : function() { 
						dfrd.reject();
					}
				},
				buttons : (fm.getCommand('zipdl') && fm.isCommandEnabled('zipdl', fm.cwd().hash))? [
					{
						label : 'cmddownload',
						callback : function() {
							fm.exec('download', hashes);
							dfrd.reject();
						}
					}
				] : []
			});
		} else {
			selAct = fm.storage('selectAction') || opts.selectAction;
			if (selAct) {
				jQuery.each(selAct.split('/'), function() {
					var cmdName = this.valueOf();
					if (cmdName !== 'open' && (cmd = fm.getCommand(cmdName)) && cmd.enabled()) {
						return false;
					}
					cmd = null;
				});
				if (cmd) {
					return fm.exec(cmd.name);
				}
			}
			doOpen();
		}
		
		return dfrd;
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/opendir.js
 */

/**
 * @class  elFinder command "opendir"
 * Enter parent folder
 *
 * @author Naoki Sawada
 **/  
elFinder.prototype.commands.opendir = function() {
		this.alwaysEnabled = true;
	
	this.getstate = function() {
		var sel = this.fm.selected(),
			cnt = sel.length,
			wz;
		if (cnt !== 1) {
			return -1;
		}
		wz = this.fm.getUI('workzone');
		return wz.hasClass('elfinder-search-result')? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm    = this.fm,
			dfrd  = jQuery.Deferred(),
			files = this.files(hashes),
			cnt   = files.length,
			hash, pcheck = null;

		if (!cnt || !files[0].phash) {
			return dfrd.reject();
		}

		hash = files[0].phash;
		fm.trigger('searchend', { noupdate: true });
		fm.request({
			data   : {cmd  : 'open', target : hash},
			notify : {type : 'open', cnt : 1, hideCnt : true},
			syncOnFail : false
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/opennew.js
 */

/**
 * @class  elFinder command "opennew"
 * Open folder in new window
 *
 * @author Naoki Sawada
 **/  
elFinder.prototype.commands.opennew = function() {
		var fm = this.fm;

	this.shortcuts = [{
		pattern  : (typeof(fm.options.getFileCallback) === 'function'? 'shift+' : '') + 'ctrl+enter'
	}];

	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
		
		return cnt === 1 
			? (sel[0].mime === 'directory' && sel[0].read? 0 : -1) 
			: -1;
	};
	
	this.exec = function(hashes) {
		var dfrd  = jQuery.Deferred(),
			files = this.files(hashes),
			cnt   = files.length,
			opts  = this.options,
			file, loc, url, win;

		// open folder to new tab (window)
		if (cnt === 1 && (file = files[0]) && file.mime === 'directory') {
			loc = window.location;
			if (opts.url) {
				url = opts.url;
			} else {
				url = loc.pathname;
			}
			if (opts.useOriginQuery) {
				if (!url.match(/\?/)) {
					url += loc.search;
				} else if (loc.search) {
					url += '&' + loc.search.substr(1);
				}
			}
			url += '#elf_' + file.hash;
			win = window.open(url, '_blank');
			setTimeout(function() {
				win.focus();
			}, 1000);
			return dfrd.resolve();
		} else {
			return dfrd.reject();
		}
	};
};


/*
 * File: /js/commands/paste.js
 */

/**
 * @class  elFinder command "paste"
 * Paste filesfrom clipboard into directory.
 * If files pasted in its parent directory - files duplicates will created
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.paste = function() {
		this.updateOnSelect  = false;
	
	this.handlers = {
		changeclipboard : function() { this.update(); }
	};

	this.shortcuts = [{
		pattern     : 'ctrl+v shift+insert'
	}];
	
	this.getstate = function(dst) {
		if (this._disabled) {
			return -1;
		}
		if (dst) {
			if (Array.isArray(dst)) {
				if (dst.length != 1) {
					return -1;
				}
				dst = this.fm.file(dst[0]);
			}
		} else {
			dst = this.fm.cwd();
		}

		return this.fm.clipboard().length && dst.mime == 'directory' && dst.write ? 0 : -1;
	};
	
	this.exec = function(select, cOpts) {
		var self   = this,
			fm     = self.fm,
			opts   = cOpts || {},
			dst    = select ? this.files(select)[0] : fm.cwd(),
			files  = fm.clipboard(),
			cnt    = files.length,
			cut    = cnt ? files[0].cut : false,
			cmd    = opts._cmd? opts._cmd : (cut? 'move' : 'copy'),
			error  = 'err' + cmd.charAt(0).toUpperCase() + cmd.substr(1),
			fpaste = [],
			fcopy  = [],
			dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				})
				.always(function() {
					fm.unlockfiles({files : jQuery.map(files, function(f) { return f.hash; })});
				}),
			copy  = function(files) {
				return files.length && fm._commands.duplicate
					? fm.exec('duplicate', files)
					: jQuery.Deferred().resolve();
			},
			paste = function(files) {
				var dfrd      = jQuery.Deferred(),
					existed   = [],
					hashes  = {},
					intersect = function(files, names) {
						var ret = [], 
							i   = files.length;

						while (i--) {
							jQuery.inArray(files[i].name, names) !== -1 && ret.unshift(i);
						}
						return ret;
					},
					confirm   = function(ndx) {
						var i    = existed[ndx],
							file = files[i],
							last = ndx == existed.length-1;

						if (!file) {
							return;
						}

						fm.confirm({
							title  : fm.i18n(cmd + 'Files'),
							text   : ['errExists', file.name, cmd === 'restore'? 'confirmRest' : 'confirmRepl'], 
							all    : !last,
							accept : {
								label    : 'btnYes',
								callback : function(all) {
									!last && !all
										? confirm(++ndx)
										: paste(files);
								}
							},
							reject : {
								label    : 'btnNo',
								callback : function(all) {
									var i;

									if (all) {
										i = existed.length;
										while (ndx < i--) {
											files[existed[i]].remove = true;
										}
									} else {
										files[existed[ndx]].remove = true;
									}

									!last && !all
										? confirm(++ndx)
										: paste(files);
								}
							},
							cancel : {
								label    : 'btnCancel',
								callback : function() {
									dfrd.resolve();
								}
							},
							buttons : [
								{
									label : 'btnBackup',
									callback : function(all) {
										var i;
										if (all) {
											i = existed.length;
											while (ndx < i--) {
												files[existed[i]].rename = true;
											}
										} else {
											files[existed[ndx]].rename = true;
										}
										!last && !all
											? confirm(++ndx)
											: paste(files);
									}
								}
							]
						});
					},
					valid     = function(names) {
						var exists = {}, existedArr;
						if (names) {
							if (Array.isArray(names)) {
								if (names.length) {
									if (typeof names[0] == 'string') {
										// elFinder <= 2.1.6 command `is` results
										existed = intersect(files, names);
									} else {
										jQuery.each(names, function(i, v) {
											exists[v.name] = v.hash;
										});
										existed = intersect(files, jQuery.map(exists, function(h, n) { return n; }));
										jQuery.each(files, function(i, file) {
											if (exists[file.name]) {
												hashes[exists[file.name]] = file.name;
											}
										});
									}
								}
							} else {
								existedArr = [];
								existed = jQuery.map(names, function(n) {
									if (typeof n === 'string') {
										return n;
									} else {
										// support to >=2.1.11 plugin Normalizer, Sanitizer
										existedArr = existedArr.concat(n);
										return false;
									}
								});
								if (existedArr.length) {
									existed = existed.concat(existedArr);
								}
								existed = intersect(files, existed);
								hashes = names;
							}
						}
						existed.length ? confirm(0) : paste(files);
					},
					paste     = function(selFiles) {
						var renames = [],
							files  = jQuery.grep(selFiles, function(file) { 
								if (file.rename) {
									renames.push(file.name);
								}
								return !file.remove ? true : false;
							}),
							cnt    = files.length,
							groups = {},
							args   = [],
							targets, reqData;

						if (!cnt) {
							return dfrd.resolve();
						}

						targets = jQuery.map(files, function(f) { return f.hash; });
						
						reqData = {cmd : 'paste', dst : dst.hash, targets : targets, cut : cut ? 1 : 0, renames : renames, hashes : hashes, suffix : fm.options.backupSuffix};
						if (fm.api < 2.1) {
							reqData.src = files[0].phash;
						}
						
						fm.request({
								data   : reqData,
								notify : {type : cmd, cnt : cnt},
								navigate : { 
									toast  : opts.noToast? {} : {
										inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd' + cmd)]), action: {
											cmd: 'open',
											msg: 'cmdopendir',
											data: [dst.hash],
											done: 'select',
											cwdNot: dst.hash
										}}
									}
								}
							})
							.done(function(data) {
								var dsts = {},
									added = data.added && data.added.length? data.added : null;
								if (cut && added) {
									// undo/redo
									jQuery.each(files, function(i, f) {
										var phash = f.phash,
											srcHash = function(name) {
												var hash;
												jQuery.each(added, function(i, f) {
													if (f.name === name) {
														hash = f.hash;
														return false;
													}
												});
												return hash;
											},
											shash = srcHash(f.name);
										if (shash) {
											if (dsts[phash]) {
												dsts[phash].push(shash);
											} else {
												dsts[phash] = [ shash ];
											}
										}
									});
									if (Object.keys(dsts).length) {
										data.undo = {
											cmd : 'move',
											callback : function() {
												var reqs = [];
												jQuery.each(dsts, function(dst, targets) {
													reqs.push(fm.request({
														data : {cmd : 'paste', dst : dst, targets : targets, cut : 1},
														notify : {type : 'undo', cnt : targets.length}
													}));
												});
												return jQuery.when.apply(null, reqs);
											}
										};
										data.redo = {
											cmd : 'move',
											callback : function() {
												return fm.request({
													data : reqData,
													notify : {type : 'redo', cnt : cnt}
												});
											}
										};
									}
								}
								dfrd.resolve(data);
							})
							.fail(function() {
								dfrd.reject();
							})
							.always(function() {
								fm.unlockfiles({files : files});
							});
					},
					internames;

				if (!fm.isCommandEnabled(self.name, dst.hash) || !files.length) {
					return dfrd.resolve();
				}
				
				if (fm.oldAPI) {
					paste(files);
				} else {
					
					if (!fm.option('copyOverwrite', dst.hash)) {
						paste(files);
					} else {
						internames = jQuery.map(files, function(f) { return f.name; });
						dst.hash == fm.cwd().hash
							? valid(jQuery.map(fm.files(), function(file) { return file.phash == dst.hash ? {hash: file.hash, name: file.name} : null; }))
							: fm.request({
								data : {cmd : 'ls', target : dst.hash, intersect : internames},
								notify : {type : 'prepare', cnt : 1, hideCnt : true},
								preventFail : true
							})
							.always(function(data) {
								valid(data.list);
							});
					}
				}
				
				return dfrd;
			},
			parents, fparents;


		if (!cnt || !dst || dst.mime != 'directory') {
			return dfrd.reject();
		}
			
		if (!dst.write)	{
			return dfrd.reject([error, files[0].name, 'errPerm']);
		}
		
		parents = fm.parents(dst.hash);
		
		jQuery.each(files, function(i, file) {
			if (!file.read) {
				return !dfrd.reject([error, file.name, 'errPerm']);
			}
			
			if (cut && file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
			
			if (jQuery.inArray(file.hash, parents) !== -1) {
				return !dfrd.reject(['errCopyInItself', file.name]);
			}
			
			if (file.mime && file.mime !== 'directory' && ! fm.uploadMimeCheck(file.mime, dst.hash)) {
				return !dfrd.reject([error, file.name, 'errUploadMime']);
			}
			
			fparents = fm.parents(file.hash);
			fparents.pop();
			if (jQuery.inArray(dst.hash, fparents) !== -1) {
				
				if (jQuery.grep(fparents, function(h) { var d = fm.file(h); return d.phash == dst.hash && d.name == file.name ? true : false; }).length) {
					return !dfrd.reject(['errReplByChild', file.name]);
				}
			}
			
			if (file.phash == dst.hash) {
				fcopy.push(file.hash);
			} else {
				fpaste.push({
					hash  : file.hash,
					phash : file.phash,
					name  : file.name
				});
			}
		});

		if (dfrd.state() == 'rejected') {
			return dfrd;
		}

		jQuery.when(
			copy(fcopy),
			paste(fpaste)
		)
		.done(function(cr, pr) {
			dfrd.resolve(pr && pr.undo? pr : void(0));
		})
		.fail(function() {
			dfrd.reject();
		})
		.always(function() {
			cut && fm.clipboard([]);
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/places.js
 */

/**
 * @class  elFinder command "places"
 * Regist to Places
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.places = function() {
		var self   = this,
	fm     = this.fm,
	filter = function(hashes) {
		return jQuery.grep(self.files(hashes), function(f) { return f.mime == 'directory' ? true : false; });
	},
	places = null;
	
	this.getstate = function(select) {
		var sel = this.hashes(select),
		cnt = sel.length;
		
		return  places && cnt && cnt == filter(sel).length ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var files = this.files(hashes);
		places.trigger('regist', [ files ]);
		return jQuery.Deferred().resolve();
	};
	
	fm.one('load', function(){
		places = fm.ui.places;
	});

};


/*
 * File: /js/commands/preference.js
 */

/**
 * @class  elFinder command "preference"
 * "Preference" dialog
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.preference = function() {
	var self    = this,
		fm      = this.fm,
		r       = 'replace',
		tab     = '<li class="' + fm.res('class', 'tabstab') + ' elfinder-preference-tab-{id}"><a href="#'+fm.namespace+'-preference-{id}" id="'+fm.namespace+'-preference-tab-{id}" class="ui-tabs-anchor {class}">{title}</a></li>',
		base    = jQuery('<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-preference">'), 
		ul      = jQuery('<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'),
		tabs    = jQuery('<div class="elfinder-preference-tabs ui-tabs-panel ui-widget-content ui-corner-bottom"/>'),
		sep     = '<div class="elfinder-preference-separator"/>',
		selfUrl = jQuery('base').length? document.location.href.replace(/#.*$/, '') : '',
		selectTab = function(tab) {
			jQuery('#'+fm.namespace+'-preference-tab-'+tab).trigger('mouseover').trigger('click');
			openTab = tab;
		},
		clTabActive = fm.res('class', 'tabsactive'),
		build   = function() {
			var cats = self.options.categories || {
					'language' : ['language'],
					'theme' : ['theme'],
					'toolbar' : ['toolbarPref'],
					'workspace' : ['iconSize','columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'showHidden'],
					'dialog' : ['autoFocusDialog'],
					'selectionInfo' : ['infoItems', 'hashChecker'],
					'reset' : ['clearBrowserData'],
					'all' : true
				},
				forms = self.options.prefs || ['language', 'theme', 'toolbarPref', 'iconSize', 'columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'showHidden', 'infoItems', 'hashChecker', 'autoFocusDialog', 'clearBrowserData'];
			
			forms = fm.arrayFlip(forms, true);
			
			if (fm.options.getFileCallback) {
				delete forms.selectAction;
			}
			
			forms.language && (forms.language = (function() {
				var langSel = jQuery('<select/>').on('change', function() {
						var lang = jQuery(this).val();
						fm.storage('lang', lang);
						jQuery('#'+fm.id).elfinder('reload');
					}),
					optTags = [],
					langs = self.options.langs || {
						ar: 'اللغة العربية',
						bg: 'Български',
						ca: 'Català',
						cs: 'Čeština',
						da: 'Dansk',
						de: 'Deutsch',
						el: 'Ελληνικά',
						en: 'English',
						es: 'Español',
						fa: 'فارسی',
						fo: 'Føroyskt',
						fr: 'Français',
						he: 'עברית',
						hr: 'Hrvatski',
						hu: 'Magyar',
						id: 'Bahasa Indonesia',
						it: 'Italiano',
						ja: '日本語',
						ko: '한국어',
						nl: 'Nederlands',
						no: 'Norsk',
						pl: 'Polski',
						pt_BR: 'Português',
						ro: 'Română',
						ru: 'Pусский',
						si: 'සිංහල',
						sk: 'Slovenčina',
						sl: 'Slovenščina',
						sr: 'Srpski',
						sv: 'Svenska',
						tr: 'Türkçe',
						ug_CN: 'ئۇيغۇرچە',
						uk: 'Український',
						vi: 'Tiếng Việt',
						zh_CN: '简体中文',
						zh_TW: '正體中文'
					};
				jQuery.each(langs, function(lang, name) {
					optTags.push('<option value="'+lang+'">'+name+'</option>');
				});
				return langSel.append(optTags.join('')).val(fm.lang);
			})());
			
			forms.theme && (forms.theme = (function() {
				var cnt = fm.options.themes? Object.keys(fm.options.themes).length : 0;
				if (cnt === 0 || (cnt === 1 && fm.options.themes.default)) {
					return null;
				}
				var themeSel = jQuery('<select/>').on('change', function() {
						var theme = jQuery(this).val();
						fm.changeTheme(theme).storage('theme', theme);
					}),
					optTags = [],
					tpl = {
						image: '<img class="elfinder-preference-theme elfinder-preference-theme-image" src="$2" />',
						link: '<a href="$1" target="_blank" title="$3">$2</a>',
						data: '<dt>$1</dt><dd><span class="elfinder-preference-theme elfinder-preference-theme-$0">$2</span></dd>'
					},
					items = ['image', 'description', 'author', 'email', 'license'],
					render = function(key, data) {
					},
					defBtn = jQuery('<button class="ui-button ui-corner-all ui-widget elfinder-preference-theme-default"/>').text(fm.i18n('default')).on('click', function(e) {
						themeSel.val('default').trigger('change');
					}),
					list = jQuery('<div class="elfinder-reference-hide-taball"/>').on('click', 'button', function() {
							var val = jQuery(this).data('themeid');
							themeSel.val(val).trigger('change');
					});

				if (!fm.options.themes.default) {
					themeSel.append('<option value="default">'+fm.i18n('default')+'</option>');
				}
				jQuery.each(fm.options.themes, function(id, val) {
					var opt = jQuery('<option class="elfinder-theme-option-'+id+'" value="'+id+'">'+fm.i18n(id)+'</option>'),
						dsc = jQuery('<fieldset class="ui-widget ui-widget-content ui-corner-all elfinder-theme-list-'+id+'"><legend>'+fm.i18n(id)+'</legend><div><span class="elfinder-spinner"/></div></fieldset>'),
						tm;
					themeSel.append(opt);
					list.append(dsc);
					tm = setTimeout(function() {
						dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id]));
					}, 10000);
					fm.getTheme(id).always(function() {
						tm && clearTimeout(tm);
					}).done(function(data) {
						var link, val = jQuery(), dl = jQuery('<dl/>');
						link = data.link? tpl.link.replace(/\$1/g, data.link).replace(/\$3/g, fm.i18n('website')) : '$2';
						if (data.name) {
							opt.html(fm.i18n(data.name));
						}
						dsc.children('legend').html(link.replace(/\$2/g, fm.i18n(data.name) || id));
						jQuery.each(items, function(i, key) {
							var t = tpl[key] || tpl.data,
								elm;
							if (data[key]) {
								elm = t.replace(/\$0/g, fm.escape(key)).replace(/\$1/g, fm.i18n(key)).replace(/\$2/g, fm.i18n(data[key]));
								if (key === 'image' && data.link) {
									elm = jQuery(elm).on('click', function() {
										themeSel.val(id).trigger('change');
									}).attr('title', fm.i18n('select'));
								}
								dl.append(elm);
							}
						});
						val = val.add(dl);
						val = val.add(jQuery('<div class="elfinder-preference-theme-btn"/>').append(jQuery('<button class="ui-button ui-corner-all ui-widget"/>').data('themeid', id).html(fm.i18n('select'))));
						dsc.find('span.elfinder-spinner').replaceWith(val);
					}).fail(function() {
						dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id]));
					});
				});
				return jQuery('<div/>').append(themeSel.val(fm.theme && fm.theme.id? fm.theme.id : 'default'), defBtn, list);
			})());

			forms.toolbarPref && (forms.toolbarPref = (function() {
				var pnls = jQuery.map(fm.options.uiOptions.toolbar, function(v) {
						return jQuery.isArray(v)? v : null;
					}),
					tags = [],
					hides = fm.storage('toolbarhides') || {};
				jQuery.each(pnls, function() {
					var cmd = this,
						name = fm.i18n('cmd'+cmd);
					if (name === 'cmd'+cmd) {
						name = fm.i18n(cmd);
					}
					tags.push('<span class="elfinder-preference-toolbar-item"><label><input type="checkbox" value="'+cmd+'" '+(hides[cmd]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('toolbarhides', hides);
					fm.trigger('toolbarpref');
				});
			})());
			
			forms.iconSize && (forms.iconSize = (function() {
				var max = fm.options.uiOptions.cwd.iconsView.sizeMax || 3,
					size = fm.storage('iconsize') || 0,
					sld = jQuery('<div class="touch-punch"/>').slider({
						classes: {
							'ui-slider-handle': 'elfinder-tabstop',
						},
						value: size,
						max: max,
						slide: function(e, ui) {
							fm.getUI('cwd').trigger('iconpref', {size: ui.value});
						},
						change: function(e, ui) {
							fm.storage('iconsize', ui.value);
						}
					});
				fm.getUI('cwd').on('iconpref', function(e, data) {
					sld.slider('option', 'value', data.size);
				});
				return sld;
			})());

			forms.columnPref && (forms.columnPref = (function() {
				var cols = fm.options.uiOptions.cwd.listView.columns,
					tags = [],
					hides = fm.storage('columnhides') || {};
				jQuery.each(cols, function() {
					var key = this,
						name = fm.getColumnName(key);
					tags.push('<span class="elfinder-preference-column-item"><label><input type="checkbox" value="'+key+'" '+(hides[key]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('columnhides', hides);
					fm.trigger('columnpref', { repaint: true });
				});
			})());
			
			forms.selectAction && (forms.selectAction = (function() {
				var actSel = jQuery('<select/>').on('change', function() {
						var act = jQuery(this).val();
						fm.storage('selectAction', act === 'default'? null : act);
					}),
					optTags = [],
					acts = self.options.selectActions,
					defAct = fm.getCommand('open').options.selectAction || 'open';
				
				if (jQuery.inArray(defAct, acts) === -1) {
					acts.unshift(defAct);
				}
				jQuery.each(acts, function(i, act) {
					var names = jQuery.map(act.split('/'), function(cmd) {
						var name = fm.i18n('cmd'+cmd);
						if (name === 'cmd'+cmd) {
							name = fm.i18n(cmd);
						}
						return name;
					});
					optTags.push('<option value="'+act+'">'+names.join('/')+'</option>');
				});
				return actSel.append(optTags.join('')).val(fm.storage('selectAction') || defAct);
			})());
			
			forms.makefileTypes && (forms.makefileTypes = (function() {
				var hides = fm.storage('mkfileHides') || {},
					getTag = function() {
						var tags = [];
						// re-assign hides
						hides = fm.storage('mkfileHides') || {};
						jQuery.each(fm.mimesCanMakeEmpty, function(mime, type) {
							var name = fm.getCommand('mkfile').getTypeName(mime, type);
							tags.push('<span class="elfinder-preference-column-item" title="'+fm.escape(name)+'"><label><input type="checkbox" value="'+mime+'" '+(hides[mime]? '' : 'checked')+'/>'+type+'</label></span>');
						});
						return tags.join(' ');
					},
					elm = jQuery('<div/>').on('change', 'input', function() {
						var v = jQuery(this).val(),
							o = jQuery(this).is(':checked');
						if (!o && !hides[v]) {
							hides[v] = true;
						} else if (o && hides[v]) {
							delete hides[v];
						}
						fm.storage('mkfileHides', hides);
						fm.trigger('canMakeEmptyFile');
					}).append(getTag()),
					add = jQuery('<div/>').append(
						jQuery('<input type="text" placeholder="'+fm.i18n('typeOfTextfile')+'"/>').on('keydown', function(e) {
							(e.keyCode === jQuery.ui.keyCode.ENTER) && jQuery(this).next().trigger('click');
						}),
						jQuery('<button class="ui-button"/>').html(fm.i18n('add')).on('click', function() {
							var input = jQuery(this).prev(),
								val = input.val(),
								uiToast = fm.getUI('toast'),
								err = function() {
									uiToast.appendTo(input.closest('.ui-dialog'));
									fm.toast({
										msg: fm.i18n('errUsupportType'),
										mode: 'warning',
										onHidden: function() {
											uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
										}
									});
									input.trigger('focus');
									return false;
								},
								tmpMimes;
							if (!val.match(/\//)) {
								val = fm.arrayFlip(fm.mimeTypes)[val];
								if (!val) {
									return err();
								}
								input.val(val);
							}
							if (!fm.mimeIsText(val) || !fm.mimeTypes[val]) {
								return err();
							}
							fm.trigger('canMakeEmptyFile', {mimes: [val], unshift: true});
							tmpMimes = {};
							tmpMimes[val] = fm.mimeTypes[val];
							fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {}));
							input.val('');
							uiToast.appendTo(input.closest('.ui-dialog'));
							fm.toast({
								msg: fm.i18n(['complete', val + ' (' + tmpMimes[val] + ')']),
								onHidden: function() {
									uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
								}
							});
						}),
						jQuery('<button class="ui-button"/>').html(fm.i18n('reset')).on('click', function() {
							fm.one('canMakeEmptyFile', {done: function() {
								elm.empty().append(getTag());
							}});
							fm.trigger('canMakeEmptyFile', {resetTexts: true});
						})
					),
					tm;
				fm.bind('canMakeEmptyFile', {done: function(e) {
					if (e.data && e.data.mimes && e.data.mimes.length) {
						elm.empty().append(getTag());
					}
				}});
				return jQuery('<div/>').append(elm, add);
			})());

			forms.useStoredEditor && (forms.useStoredEditor = jQuery('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('useStoredEditor');
				return s? (s > 0) : fm.options.commandsOptions.edit.useStoredEditor;
			})()).on('change', function(e) {
				fm.storage('useStoredEditor', jQuery(this).is(':checked')? 1 : -1);
			}));

			forms.editorMaximized && (forms.editorMaximized = jQuery('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('editorMaximized');
				return s? (s > 0) : fm.options.commandsOptions.edit.editorMaximized;
			})()).on('change', function(e) {
				fm.storage('editorMaximized', jQuery(this).is(':checked')? 1 : -1);
			}));

			if (forms.showHidden) {
				(function() {
					var setTitle = function() {
							var s = fm.storage('hide'),
								t = [],
								v;
							if (s && s.items) {
								jQuery.each(s.items, function(h, n) {
									t.push(fm.escape(n));
								});
							}
							elms.prop('disabled', !t.length)[t.length? 'removeClass' : 'addClass']('ui-state-disabled');
							v = t.length? t.join('\n') : '';
							forms.showHidden.attr('title',v);
							useTooltip && forms.showHidden.tooltip('option', 'content', v.replace(/\n/g, '<br>')).tooltip('close');
						},
						chk = jQuery('<input type="checkbox"/>').prop('checked', (function() {
							var s = fm.storage('hide');
							return s && s.show;
						})()).on('change', function(e) {
							var o = {};
							o[jQuery(this).is(':checked')? 'show' : 'hide'] = true;
							fm.exec('hide', void(0), o);
						}),
						btn = jQuery('<button class="ui-button ui-corner-all ui-widget"/>').append(fm.i18n('reset')).on('click', function() {
							fm.exec('hide', void(0), {reset: true});
							jQuery(this).parent().find('input:first').prop('checked', false);
							setTitle();
						}),
						elms = jQuery().add(chk).add(btn),
						useTooltip;
					
					forms.showHidden = jQuery('<div/>').append(chk, btn);
					fm.bind('hide', function(e) {
						var d = e.data;
						if (!d.opts || (!d.opts.show && !d.opts.hide)) {
							setTitle();
						}
					});
					if (fm.UA.Mobile && jQuery.fn.tooltip) {
						useTooltip = true;
						forms.showHidden.tooltip({
							classes: {
								'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
							},
							tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
							track: true
						}).css('user-select', 'none');
						btn.css('user-select', 'none');
					}
					setTitle();
				})();
			}
			
			forms.infoItems && (forms.infoItems = (function() {
				var items = fm.getCommand('info').items,
					tags = [],
					hides = fm.storage('infohides') || fm.arrayFlip(fm.options.commandsOptions.info.hideItems, true);
				jQuery.each(items, function() {
					var key = this,
						name = fm.i18n(key);
					tags.push('<span class="elfinder-preference-info-item"><label><input type="checkbox" value="'+key+'" '+(hides[key]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('infohides', hides);
					fm.trigger('infopref', { repaint: true });
				});
			})());
			
			forms.hashChecker && fm.hashCheckers.length && (forms.hashChecker = (function() {
				var tags = [],
					enabled = fm.arrayFlip(fm.storage('hashchekcer') || fm.options.commandsOptions.info.showHashAlgorisms, true);
				jQuery.each(fm.hashCheckers, function() {
					var cmd = this,
						name = fm.i18n(cmd);
					tags.push('<span class="elfinder-preference-hashchecker-item"><label><input type="checkbox" value="'+cmd+'" '+(enabled[cmd]? 'checked' : '')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (o) {
						enabled[v] = true;
					} else if (enabled[v]) {
						delete enabled[v];
					}
					fm.storage('hashchekcer', jQuery.grep(fm.hashCheckers, function(v) {
						return enabled[v];
					}));
				});
			})());

			forms.autoFocusDialog && (forms.autoFocusDialog = jQuery('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('autoFocusDialog');
				return s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver;
			})()).on('change', function(e) {
				fm.storage('autoFocusDialog', jQuery(this).is(':checked')? 1 : -1);
			}));
			
			forms.clearBrowserData && (forms.clearBrowserData = jQuery('<button/>').text(fm.i18n('reset')).button().on('click', function(e) {
				e.preventDefault();
				fm.storage();
				jQuery('#'+fm.id).elfinder('reload');
			}));
			
			jQuery.each(cats, function(id, prefs) {
				var dls, found;
				if (prefs === true) {
					found = 1;
				} else if (prefs) {
					dls = jQuery();
					jQuery.each(prefs, function(i, n) {
						var f, title, chks = '', cbox;
						if (f = forms[n]) {
							found = 2;
							title = fm.i18n(n);
							cbox = jQuery(f).filter('input[type="checkbox"]');
							if (!cbox.length) {
								cbox = jQuery(f).find('input[type="checkbox"]');
							}
							if (cbox.length === 1) {
								if (!cbox.attr('id')) {
									cbox.attr('id', 'elfinder-preference-'+n+'-checkbox');
								}
								title = '<label for="'+cbox.attr('id')+'">'+title+'</label>';
							} else if (cbox.length > 1) {
								chks = ' elfinder-preference-checkboxes';
							}
							dls = dls.add(jQuery('<dt class="elfinder-preference-'+n+chks+'">'+title+'</dt>')).add(jQuery('<dd class="elfinder-preference-'+n+chks+'"/>').append(f));
						}
					});
				}
				if (found) {
					ul.append(tab[r](/\{id\}/g, id)[r](/\{title\}/, fm.i18n(id))[r](/\{class\}/, openTab === id? 'elfinder-focus' : ''));
					if (found === 2) {
						tabs.append(
							jQuery('<div id="'+fm.namespace+'-preference-'+id+'" class="elfinder-preference-content"/>')
							.hide()
							.append(jQuery('<dl/>').append(dls))
						);
					}
				}
			});

			ul.on('click', 'a', function(e) {
				var t = jQuery(e.target),
					h = t.attr('href');
				e.preventDefault();
				e.stopPropagation();

				ul.children().removeClass(clTabActive);
				t.removeClass('ui-state-hover').parent().addClass(clTabActive);

				if (h.match(/all$/)) {
					tabs.addClass('elfinder-preference-taball').children().show();
				} else {
					tabs.removeClass('elfinder-preference-taball').children().hide();
					jQuery(h).show();
				}
			}).on('focus blur', 'a', function(e) {
				jQuery(this).parent().toggleClass('ui-state-focus', e.type === 'focusin');
			}).on('mouseenter mouseleave', 'li', function(e) {
				jQuery(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
			});

			tabs.find('a,input,select,button').addClass('elfinder-tabstop');
			base.append(ul, tabs);

			dialog = self.fmDialog(base, {
				title : self.title,
				width : self.options.width || 600,
				height: self.options.height || 400,
				maxWidth: 'window',
				maxHeight: 'window',
				autoOpen : false,
				destroyOnClose : false,
				allowMinimize : false,
				open : function() {
					openTab && selectTab(openTab);
					openTab = null;
				},
				resize : function() {
					tabs.height(dialog.height() - ul.outerHeight(true) - (tabs.outerHeight(true) - tabs.height()) - 5);
				}
			})
			.on('click', function(e) {
				e.stopPropagation();
			})
			.css({
				overflow: 'hidden'
			});

			dialog.closest('.ui-dialog')
			.css({
				overflow: 'hidden'
			})
			.addClass('elfinder-bg-translucent');
			
			openTab = 'all';
		},
		dialog, openTab;

	this.shortcuts = [{
		pattern     : 'ctrl+comma',
		description : this.title
	}];

	this.alwaysEnabled  = true;
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(sel, cOpts) {
		!dialog && build();
		if (cOpts) {
			if (cOpts.tab) {
				selectTab(cOpts.tab);
			} else if (cOpts._currentType === 'cwd') {
				selectTab('workspace');
			}
		}
		dialog.elfinderdialog('open');
		return jQuery.Deferred().resolve();
	};

};

/*
 * File: /js/commands/quicklook.js
 */

/**
 * @class  elFinder command "quicklook"
 * Fast preview for some files types
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.quicklook = function() {
		var self       = this,
		fm         = self.fm,
		/**
		 * window closed state
		 *
		 * @type Number
		 **/
		closed     = 0,
		/**
		 * window animated state
		 *
		 * @type Number
		 **/
		animated   = 1,
		/**
		 * window opened state
		 *
		 * @type Number
		 **/
		opened     = 2,
		/**
		 * window docked state
		 *
		 * @type Number
		 **/
		docked     = 3,
		/**
		 * window docked and hidden state
		 *
		 * @type Number
		 **/
		dockedhidden = 4,
		/**
		 * window state
		 *
		 * @type Number
		 **/
		state      = closed,
		/**
		 * Event name of update
		 * for fix conflicts with Prototype.JS
		 * 
		 * `@see https://github.com/Studio-42/elFinder/pull/2346
		 * @type String
		 **/
		evUpdate = Element.update? 'quicklookupdate' : 'update',
		/**
		 * navbar icon class
		 *
		 * @type String
		 **/
		navicon    = 'elfinder-quicklook-navbar-icon',
		/**
		 * navbar "fullscreen" icon class
		 *
		 * @type String
		 **/
		fullscreen = 'elfinder-quicklook-fullscreen',
		/**
		 * info wrapper class
		 * 
		 * @type String
		 */
		infocls    = 'elfinder-quicklook-info-wrapper',
		/**
		 * Triger keydown/keypress event with left/right arrow key code
		 *
		 * @param  Number  left/right arrow key code
		 * @return void
		 **/
		navtrigger = function(code) {
			jQuery(document).trigger(jQuery.Event('keydown', { keyCode: code, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
		},
		/**
		 * Return css for closed window
		 *
		 * @param  jQuery  file node in cwd
		 * @return void
		 **/
		closedCss = function(node) {
			var elf = fm.getUI().offset(),
				base = (function() {
					var target = node.find('.elfinder-cwd-file-wrapper');
					return target.length? target : node;
				})(),
				baseOffset = base.offset() || { top: 0, left: 0 };
			return {
				opacity : 0,
				width   : base.width(),
				height  : base.height() - 30,
				top     : baseOffset.top - elf.top,
				left    : baseOffset.left  - elf.left
			};
		},
		/**
		 * Return css for opened window
		 *
		 * @return void
		 **/
		openedCss = function() {
			var contain = self.options.contain,
				win = contain? fm.getUI() : jQuery(window),
				elf = fm.getUI().offset(),
				w = Math.min(width, win.width()-10),
				h = Math.min(height, win.height()-80);
			return {
				opacity : 1,
				width  : w,
				height : h,
				top    : parseInt((win.height() - h - 60) / 2 + (contain? 0 : win.scrollTop() - elf.top)),
				left   : parseInt((win.width() - w) / 2 + (contain? 0 : win.scrollLeft() - elf.left))
			};
		},
		
		mediaNode = {},
		support = function(codec, name) {
			var node  = name || codec.substr(0, codec.indexOf('/')),
				media = mediaNode[node]? mediaNode[node] : (mediaNode[node] = document.createElement(node)),
				value = false;
			
			try {
				value = media.canPlayType && media.canPlayType(codec);
			} catch(e) {}
			
			return (value && value !== '' && value != 'no')? true : false;
		},
		
		platformWin = (window.navigator.platform.indexOf('Win') != -1),
		
		/**
		 * Opened window width (from config)
		 *
		 * @type Number
		 **/
		width, 
		/**
		 * Opened window height (from config)
		 *
		 * @type Number
		 **/
		height, 
		/**
		 * Previous style before docked
		 *
		 * @type String
		 **/
		prevStyle,
		/**
		 * elFinder node
		 *
		 * @type jQuery
		 **/
		parent, 
		/**
		 * elFinder current directory node
		 *
		 * @type jQuery
		 **/
		cwd, 
		/**
		 * Current directory hash
		 *
		 * @type String
		 **/
		cwdHash,
		dockEnabled = false,
		navdrag = false,
		navmove = false,
		navtm   = null,
		leftKey = jQuery.ui.keyCode.LEFT,
		rightKey = jQuery.ui.keyCode.RIGHT,
		coverEv = 'mousemove touchstart ' + ('onwheel' in document? 'wheel' : 'onmousewheel' in document? 'mousewheel' : 'DOMMouseScroll'),
		title   = jQuery('<span class="elfinder-dialog-title elfinder-quicklook-title"/>'),
		icon    = jQuery('<div/>'),
		info    = jQuery('<div class="elfinder-quicklook-info"/>'),//.hide(),
		cover   = jQuery('<div class="ui-front elfinder-quicklook-cover"/>'),
		fsicon  = jQuery('<div class="'+navicon+' '+navicon+'-fullscreen"/>')
			.on('click touchstart', function(e) {
				if (navmove) {
					return;
				}
				
				var win     = self.window,
					full    = win.hasClass(fullscreen),
					$window = jQuery(window),
					resize  = function() { self.preview.trigger('changesize'); };
					
				e.stopPropagation();
				e.preventDefault();
				
				if (full) {
					navStyle = '';
					navShow();
					win.toggleClass(fullscreen)
					.css(win.data('position'));
					$window.trigger(self.resize).off(self.resize, resize);
					navbar.off('mouseenter mouseleave');
					cover.off(coverEv);
				} else {
					win.toggleClass(fullscreen)
					.data('position', {
						left   : win.css('left'), 
						top    : win.css('top'), 
						width  : win.width(), 
						height : win.height(),
						display: 'block'
					})
					.removeAttr('style');

					jQuery(window).on(self.resize, resize)
					.trigger(self.resize);

					cover.on(coverEv, function(e) {
						if (! navdrag) {
							if (e.type === 'mousemove' || e.type === 'touchstart') {
								navShow();
								navtm = setTimeout(function() {
									if (fm.UA.Mobile || navbar.parent().find('.elfinder-quicklook-navbar:hover').length < 1) {
										navbar.fadeOut('slow', function() {
											cover.show();
										});
									}
								}, 3000);
							}
							if (cover.is(':visible')) {
								coverHide();
								cover.data('tm', setTimeout(function() {
									cover.show();
								}, 3000));
							}
						}
					}).show().trigger('mousemove');
					
					navbar.on('mouseenter mouseleave', function(e) {
						if (! navdrag) {
							if (e.type === 'mouseenter') {
								navShow();
							} else {
								cover.trigger('mousemove');
							}
						}
					});
				}
				if (fm.zIndex) {
					win.css('z-index', fm.zIndex + 1);
				}
				if (fm.UA.Mobile) {
					navbar.attr('style', navStyle);
				} else {
					navbar.attr('style', navStyle).draggable(full ? 'destroy' : {
						start: function() {
							navdrag = true;
							navmove = true;
							cover.show();
							navShow();
						},
						stop: function() {
							navdrag = false;
							navStyle = self.navbar.attr('style');
							requestAnimationFrame(function() {
								navmove = false;
							});
						}
					});
				}
				jQuery(this).toggleClass(navicon+'-fullscreen-off');
				var collection = win;
				if (parent.is('.ui-resizable')) {
					collection = collection.add(parent);
				}
				collection.resizable(full ? 'enable' : 'disable').removeClass('ui-state-disabled');

				win.trigger('viewchange');
			}
		),
		
		updateOnSel = function() {
			self.update(void(0), (function() {
				var fm = self.fm,
					files = fm.selectedFiles(),
					cnt = files.length,
					inDock = self.docked(),
					getInfo = function() {
						var ts = 0;
						jQuery.each(files, function(i, f) {
							var t = parseInt(f.ts);
							if (ts >= 0) {
								if (t > ts) {
									ts = t;
								}
							} else {
								ts = 'unknown';
							}
						});
						return {
							hash : files[0].hash  + '/' + (+new Date()),
							name : fm.i18n('items') + ': ' + cnt,
							mime : 'group',
							size : spinner,
							ts   : ts,
							files : jQuery.map(files, function(f) { return f.hash; }),
							getSize : true
						};
					};
				if (! cnt) {
					cnt = 1;
					files = [fm.cwd()];
				}
				return (cnt === 1)? files[0] : getInfo();
			})());
		},
		
		navShow = function() {
			if (self.window.hasClass(fullscreen)) {
				navtm && clearTimeout(navtm);
				navtm = null;
				// if use `show()` it make infinite loop with old jQuery (jQuery/jQuery UI: 1.8.0/1.9.0)
				// see #1478 https://github.com/Studio-42/elFinder/issues/1478
				navbar.stop(true, true).css('display', 'block');
				coverHide();
			}
		},
		
		coverHide = function() {
			cover.data('tm') && clearTimeout(cover.data('tm'));
			cover.removeData('tm');
			cover.hide();
		},
			
		prev = jQuery('<div class="'+navicon+' '+navicon+'-prev"/>').on('click touchstart', function(e) { ! navmove && navtrigger(leftKey); return false; }),
		next = jQuery('<div class="'+navicon+' '+navicon+'-next"/>').on('click touchstart', function(e) { ! navmove && navtrigger(rightKey); return false; }),
		navbar  = jQuery('<div class="elfinder-quicklook-navbar"/>')
			.append(prev)
			.append(fsicon)
			.append(next)
			.append('<div class="elfinder-quicklook-navbar-separator"/>')
			.append(jQuery('<div class="'+navicon+' '+navicon+'-close"/>').on('click touchstart', function(e) { ! navmove && self.window.trigger('close'); return false; }))
		,
		titleClose = jQuery('<span class="ui-front ui-icon elfinder-icon-close ui-icon-closethick"/>').on('mousedown', function(e) {
			e.stopPropagation();
			self.window.trigger('close');
		}),
		titleDock = jQuery('<span class="ui-front ui-icon elfinder-icon-minimize ui-icon-minusthick"/>').on('mousedown', function(e) {
			e.stopPropagation();
			if (! self.docked()) {
				self.window.trigger('navdockin');
			} else {
				self.window.trigger('navdockout');
			}
		}),
		spinner = '<span class="elfinder-spinner-text">' + fm.i18n('calc') + '</span>' + '<span class="elfinder-spinner"/>',
		navStyle = '',
		init = true,
		dockHeight,	getSize, tm4cwd, dockedNode, selectTm;

	this.cover = cover;
	this.evUpdate = evUpdate;
	(this.navbar = navbar)._show = navShow;
	this.resize = 'resize.'+fm.namespace;
	this.info = jQuery('<div/>').addClass(infocls)
		.append(icon)
		.append(info);
	this.autoPlay = function() {
		if (self.opened()) {
			return !! self.options[self.docked()? 'dockAutoplay' : 'autoplay'];
		}
		return false;
	};
	this.preview = jQuery('<div class="elfinder-quicklook-preview ui-helper-clearfix"/>')
		// clean info/icon
		.on('change', function() {
			navShow();
			navbar.attr('style', navStyle);
			self.docked() && navbar.hide();
			self.preview.attr('style', '').removeClass('elfinder-overflow-auto');
			self.info.attr('style', '').hide();
			self.cover.removeClass('elfinder-quicklook-coverbg');
			icon.removeAttr('class').attr('style', '');
			info.html('');
		})
		// update info/icon
		.on(evUpdate, function(e) {
			var preview = self.preview,
				file    = e.file,
				tpl     = '<div class="elfinder-quicklook-info-data">{value}</div>',
				update  = function() {
					var win = self.window.css('overflow', 'hidden');
					name = fm.escape(file.i18 || file.name);
					!file.read && e.stopImmediatePropagation();
					self.window.data('hash', file.hash);
					self.preview.off('changesize').trigger('change').children().remove();
					title.html(name);
					
					prev.css('visibility', '');
					next.css('visibility', '');
					if (file.hash === fm.cwdId2Hash(cwd.find('[id]:not(.elfinder-cwd-parent):first').attr('id'))) {
						prev.css('visibility', 'hidden');
					}
					if (file.hash === fm.cwdId2Hash(cwd.find('[id]:last').attr('id'))) {
						next.css('visibility', 'hidden');
					}
					
					if (file.mime === 'directory') {
						getSizeHashes = [ file.hash ];
					} else if (file.mime === 'group' && file.getSize) {
						getSizeHashes = file.files;
					}
					
					info.html(
						tpl.replace(/\{value\}/, name)
						+ tpl.replace(/\{value\}/, fm.mime2kind(file))
						+ tpl.replace(/\{value\}/, getSizeHashes.length ? spinner : fm.formatSize(file.size))
						+ tpl.replace(/\{value\}/, fm.i18n('modify')+': '+ fm.formatDate(file))
					);
					
					if (getSizeHashes.length) {
						getSize = fm.getSize(getSizeHashes).done(function(data) {
							info.find('span.elfinder-spinner').parent().html(data.formated);
						}).fail(function() {
							info.find('span.elfinder-spinner').parent().html(fm.i18n('unknown'));
						}).always(function() {
							getSize = null;
						});
						getSize._hash = file.hash;
					}
					
					icon.addClass('elfinder-cwd-icon ui-corner-all '+fm.mime2class(file.mime));
					
					if (file.icon) {
						icon.css(fm.getIconStyle(file, true));
					}
					
					self.info.attr('class', infocls);
					if (file.csscls) {
						self.info.addClass(file.csscls);
					}
	
					if (file.read && (tmb = fm.tmb(file))) {
						jQuery('<img/>')
							.hide()
							.appendTo(self.preview)
							.on('load', function() {
								icon.addClass(tmb.className).css('background-image', "url('"+tmb.url+"')");
								jQuery(this).remove();
							})
							.attr('src', tmb.url);
					}
					self.info.delay(100).fadeIn(10);
					if (self.window.hasClass(fullscreen)) {
						cover.trigger('mousemove');
					}
					win.css('overflow', '');
				},
				tmb, name, getSizeHashes = [];

			if (file && ! Object.keys(file).length) {
				file = fm.cwd();
			}
			if (file && getSize && getSize.state() === 'pending' && getSize._hash !== file.hash) {
				getSize.reject();
			}
			if (file && (e.forceUpdate || self.window.data('hash') !== file.hash)) {
				update();
			} else { 
				e.stopImmediatePropagation();
			}
		});

	this.window = jQuery('<div class="ui-front ui-helper-reset ui-widget elfinder-quicklook touch-punch" style="position:absolute"/>')
		.hide()
		.addClass(fm.UA.Touch? 'elfinder-touch' : '')
		.on('click', function(e) {
			var win = this;
			e.stopPropagation();
			if (state === opened) {
				requestAnimationFrame(function() {
					state === opened && fm.toFront(win);
				});
			}
		})
		.append(
			jQuery('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix elfinder-quicklook-titlebar"/>')
			.append(
				jQuery('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button elfinder-quicklook-titlebar-icon'+(platformWin? ' elfinder-titlebar-button-right' : '')+'"/>').append(
					titleClose, titleDock
				),
				title
			),
			this.preview,
			self.info.hide(),
			cover.hide(),
			navbar
		)
		.draggable({handle : 'div.elfinder-quicklook-titlebar'})
		.on('open', function(e, clcss) {
			var win  = self.window, 
				file = self.value,
				node = fm.getUI('cwd'),
				open = function(status) {
					state = status;
					self.update(1, self.value);
					self.change();
					win.trigger('resize.' + fm.namespace);
				};

			if (!init && state === closed) {
				if (file && file.hash !== cwdHash) {
					node = fm.cwdHash2Elm(file.hash.split('/', 2)[0]);
				}
				navStyle = '';
				navbar.attr('style', '');
				state = animated;
				node.trigger('scrolltoview');
				coverHide();
				win.css(clcss || closedCss(node))
					.show()
					.animate(openedCss(), 550, function() {
						open(opened);
						navShow();
					});
				fm.toFront(win);
			} else if (state === dockedhidden) {
				fm.getUI('navdock').data('addNode')(dockedNode);
				open(docked);
				self.preview.trigger('changesize');
				fm.storage('previewDocked', '1');
				if (fm.getUI('navdock').width() === 0) {
					win.trigger('navdockout');
				}
			}
		})
		.on('close', function(e, dfd) {
			var win     = self.window,
				preview = self.preview.trigger('change'),
				file    = self.value,
				hash    = (win.data('hash') || '').split('/', 2)[0],
				close   = function(status, winhide) {
					state = status;
					winhide && fm.toHide(win);
					preview.children().remove();
					self.update(0, self.value);
					win.data('hash', '');
					dfd && dfd.resolve();
				},
				node;
				
			if (self.opened()) {
				getSize && getSize.state() === 'pending' && getSize.reject();
				if (! self.docked()) {
					state = animated;
					win.hasClass(fullscreen) && fsicon.click();
					(hash && (node = cwd.find('#'+hash)).length)
						? win.animate(closedCss(node), 500, function() { close(closed, true); })
						: close(closed, true);
				} else {
					dockedNode = fm.getUI('navdock').data('removeNode')(self.window.attr('id'), 'detach');
					close(dockedhidden);
					fm.storage('previewDocked', '2');
				}
			}
		})
		.on('navdockin', function(e, data) {
			var w      = self.window,
				box    = fm.getUI('navdock'),
				height = dockHeight || box.width(),
				opts   = data || {};
			
			if (init) {
				opts.init = true;
			}
			state = docked;
			prevStyle = w.attr('style');
			w.toggleClass('ui-front').removeClass('ui-widget').draggable('disable').resizable('disable').removeAttr('style').css({
				width: '100%',
				height: height,
				boxSizing: 'border-box',
				paddingBottom: 0,
				zIndex: 'unset'
			});
			navbar.hide();
			titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize');
			
			fm.toHide(w, true);
			box.data('addNode')(w, opts);
			
			self.preview.trigger('changesize');
			
			fm.storage('previewDocked', '1');
		})
		.on('navdockout', function(e) {
			var w   = self.window,
				box = fm.getUI('navdock'),
				dfd = jQuery.Deferred(),
				clcss = closedCss(self.preview);
			
			dockHeight = w.outerHeight();
			box.data('removeNode')(w.attr('id'), fm.getUI());
			w.toggleClass('ui-front').addClass('ui-widget').draggable('enable').resizable('enable').attr('style', prevStyle);
			titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize');
			
			state = closed;
			w.trigger('open', clcss);
			
			fm.storage('previewDocked', '0');
		})
		.on('resize.' + fm.namespace, function() {
			self.preview.trigger('changesize'); 
		});

	/**
	 * This command cannot be disable by backend
	 *
	 * @type Boolean
	 **/
	this.alwaysEnabled = true;
	
	/**
	 * Selected file
	 *
	 * @type Object
	 **/
	this.value = null;
	
	this.handlers = {
		// save selected file
		select : function(e, d) {
			selectTm && cancelAnimationFrame(selectTm);
			if (! e.data || ! e.data.selected || ! e.data.selected.length) {
				selectTm = requestAnimationFrame(function() {
					self.opened() && updateOnSel();
				});
			} else {
				self.opened() && updateOnSel();
			}
		},
		error  : function() { self.window.is(':visible') && self.window.trigger('close'); },
		'searchshow searchhide' : function() { this.opened() && this.window.trigger('close'); },
		navbarshow : function() {
			requestAnimationFrame(function() {
				self.docked() && self.preview.trigger('changesize');
			});
		},
		destroy : function() { self.window.remove(); }
	};
	
	this.shortcuts = [{
		pattern     : 'space'
	}];
	
	this.support = {
		audio : {
			ogg : support('audio/ogg;'),
			webm: support('audio/webm;'),
			mp3 : support('audio/mpeg;'),
			wav : support('audio/wav;'),
			m4a : support('audio/mp4;') || support('audio/x-m4a;') || support('audio/aac;'),
			flac: support('audio/flac;'),
			amr : support('audio/amr;')
		},
		video : {
			ogg  : support('video/ogg;'),
			webm : support('video/webm;'),
			mp4  : support('video/mp4;'),
			mkv  : support('video/x-matroska;') || support('video/webm;'),
			'3gp': support('video/3gpp;') || support('video/mp4;'), // try as mp4
			m3u8 : support('application/x-mpegURL', 'video') || support('application/vnd.apple.mpegURL', 'video'),
			mpd  : support('application/dash+xml', 'video')
		}
	};
	// for GC
	mediaNode = {};
	
	/**
	 * Return true if quickLoock window is hiddenReturn true if quickLoock window is visible and not animated
	 *
	 * @return Boolean
	 **/
	this.closed = function() {
		return (state == closed || state == dockedhidden);
	};
	
	/**
	 * Return true if quickLoock window is visible and not animated
	 *
	 * @return Boolean
	 **/
	this.opened = function() {
		return state == opened || state == docked;
	};
	
	/**
	 * Return true if quickLoock window is in NavDock
	 *
	 * @return Boolean
	 **/
	this.docked = function() {
		return state == docked;
	};
	
	/**
	 * Adds an integration into help dialog.
	 *
	 * @param Object opts  options
	 */
	this.addIntegration = function(opts) {
		requestAnimationFrame(function() {
			fm.trigger('helpIntegration', Object.assign({cmd: 'quicklook'}, opts));
		});
	};

	/**
	 * Init command.
	 * Add default plugins and init other plugins
	 *
	 * @return Object
	 **/
	this.init = function() {
		var o       = this.options, 
			win     = this.window,
			preview = this.preview,
			i, p, cwdDispInlineRegex;
		
		width  = o.width  > 0 ? parseInt(o.width)  : 450;	
		height = o.height > 0 ? parseInt(o.height) : 300;
		if (o.dockHeight !== 'auto') {
			dockHeight = parseInt(o.dockHeight);
			if (! dockHeight) {
				dockHeight = void(0);
			}
		}

		fm.one('load', function() {
			
			dockEnabled = fm.getUI('navdock').data('dockEnabled');
			
			! dockEnabled && titleDock.hide();
			
			parent = fm.getUI();
			cwd    = fm.getUI('cwd');

			if (fm.zIndex) {
				win.css('z-index', fm.zIndex + 1);
			}
			
			win.appendTo(parent);
			
			// close window on escape
			jQuery(document).on('keydown.'+fm.namespace, function(e) {
				e.keyCode == jQuery.ui.keyCode.ESCAPE && self.opened() && ! self.docked() && win.hasClass('elfinder-frontmost') && win.trigger('close');
			});
			
			win.resizable({ 
				handles   : 'se', 
				minWidth  : 350, 
				minHeight : 120, 
				resize    : function() { 
					// use another event to avoid recursion in fullscreen mode
					// may be there is clever solution, but i cant find it :(
					preview.trigger('changesize'); 
				}
			});
			
			self.change(function() {
				if (self.opened()) {
					if (self.value) {
						if (self.value.tmb && self.value.tmb == 1) {
							// try re-get file object
							self.value = Object.assign({}, fm.file(self.value.hash));
						}
						preview.trigger(jQuery.Event(evUpdate, {file : self.value}));
					}
				}
			});
			
			preview.on(evUpdate, function(e) {
				var file, hash, serach;
				
				if (file = e.file) {
					hash = file.hash;
					serach = (fm.searchStatus.mixed && fm.searchStatus.state > 1);
				
					if (file.mime !== 'directory') {
						if (parseInt(file.size) || file.mime.match(o.mimeRegexNotEmptyCheck)) {
							// set current dispInlineRegex
							self.dispInlineRegex = cwdDispInlineRegex;
							if (serach || fm.optionsByHashes[hash]) {
								try {
									self.dispInlineRegex = new RegExp(fm.option('dispInlineRegex', hash), 'i');
								} catch(e) {
									try {
										self.dispInlineRegex = new RegExp(!fm.isRoot(file)? fm.option('dispInlineRegex', file.phash) : fm.options.dispInlineRegex, 'i');
									} catch(e) {
										self.dispInlineRegex = /^$/;
									}
								}
							}
						} else {
							//  do not preview of file that size = 0
							e.stopImmediatePropagation();
						}
					} else {
						self.dispInlineRegex = /^$/;
					}
					
					self.info.show();
				} else {
					e.stopImmediatePropagation();
				}
			});

			jQuery.each(fm.commands.quicklook.plugins || [], function(i, plugin) {
				if (typeof(plugin) == 'function') {
					new plugin(self);
				}
			});
		}).one('open', function() {
			var dock = Number(fm.storage('previewDocked') || o.docked),
				win;
			if (dockEnabled && dock >= 1) {
				win = self.window;
				self.exec();
				win.trigger('navdockin', { init : true });
				if (dock === 2) {
					win.trigger('close');
				} else {
					self.update(void(0), fm.cwd());
					self.change();
				}
			}
			init = false;
		}).bind('open', function() {
			cwdHash = fm.cwd().hash;
			self.value = fm.cwd();
			// set current volume dispInlineRegex
			try {
				cwdDispInlineRegex = new RegExp(fm.option('dispInlineRegex'), 'i');
			} catch(e) {
				cwdDispInlineRegex = /^$/;
			}
		}).bind('change', function(e) {
			if (e.data && e.data.changed && self.opened()) {
				jQuery.each(e.data.changed, function() {
					if (self.window.data('hash') === this.hash) {
						self.window.data('hash', null);
						self.preview.trigger(evUpdate);
						return false;
					}
				});
			}
		}).bind('navdockresizestart navdockresizestop', function(e) {
			cover[e.type === 'navdockresizestart'? 'show' : 'hide']();
		});
	};
	
	this.getstate = function() {
		return self.opened()? 1 : 0;
	};
	
	this.exec = function() {
		self.closed() && updateOnSel();
		self.enabled() && self.window.trigger(self.opened() ? 'close' : 'open');
		return jQuery.Deferred().resolve();
	};

	this.hideinfo = function() {
		this.info.stop(true, true).hide();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/quicklook.plugins.js
 */

elFinder.prototype.commands.quicklook.plugins = [
	
	/**
	 * Images preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var mimes   = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
			preview = ql.preview,
			WebP, flipMime;
		
		// webp support
		WebP = new Image();
		WebP.onload = WebP.onerror = function() {
			if (WebP.height == 2) {
				mimes.push('image/webp');
			}
		};
		WebP.src='data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
		
		// what kind of images we can display
		jQuery.each(navigator.mimeTypes, function(i, o) {
			var mime = o.type;
			
			if (mime.indexOf('image/') === 0 && jQuery.inArray(mime, mimes)) {
				mimes.push(mime);
			} 
		});
			
		preview.on(ql.evUpdate, function(e) {
			var fm   = ql.fm,
				file = e.file,
				showed = false,
				dimreq = null,
				setdim  = function(dim) {
					var rfile = fm.file(file.hash);
					rfile.width = dim[0];
					rfile.height = dim[1];
				},
				show = function() {
					var elm, varelm, memSize, width, height, prop;
					
					dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject();
					if (showed) {
						return;
					}
					showed = true;
					
					elm = img.get(0);
					memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()});
				
					memSize && img.removeAttr('width').removeAttr('height');
					
					width  = file.width || elm.naturalWidth || elm.width || img.width();
					height = file.height || elm.naturalHeight || elm.height || img.height();
					if (!file.width || !file.height) {
						setdim([width, height]);
					}
					
					memSize && img.width(memSize.w).height(memSize.h);

					prop = (width/height).toFixed(2);
					preview.on('changesize', function() {
						var pw = parseInt(preview.width()),
							ph = parseInt(preview.height()),
							w, h;
					
						if (prop < (pw/ph).toFixed(2)) {
							h = ph;
							w = Math.floor(h * prop);
						} else {
							w = pw;
							h = Math.floor(w/prop);
						}
						img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
					
					})
					.trigger('changesize');
					
					//show image
					img.fadeIn(100);
				},
				hideInfo = function() {
					loading.remove();
					// hide info/icon
					ql.hideinfo();
				},
				url, img, loading, m;

			if (!flipMime) {
				flipMime = fm.arrayFlip(mimes);
			}
			if (flipMime[file.mime] && ql.dispInlineRegex.test(file.mime)) {
				// this is our file - stop event propagation
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));

				url = fm.openUrl(file.hash);
				
				img = jQuery('<img/>')
					.hide()
					.appendTo(preview)
					.on('load', function() {
						hideInfo();
						show();
					})
					.on('error', function() {
						loading.remove();
					})
					.attr('src', url);
				
				if (file.width && file.height) {
					show();
				} else if (file.size > (ql.options.getDimThreshold || 0)) {
					dimreq = fm.request({
						data : {cmd : 'dim', target : file.hash},
						preventDefault : true
					})
					.done(function(data) {
						if (data.dim) {
							var dim = data.dim.split('x');
							file.width = dim[0];
							file.height = dim[1];
							setdim(dim);
							show();
						}
					});
				}
			}
			
		});
	},
	
	/**
	 * PSD(Adobe Photoshop data) preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['image/vnd.adobe.photoshop', 'image/x-photoshop']),
			preview = ql.preview,
			load    = function(url, img, loading) {
				try {
					fm.replaceXhrSend();
					PSD.fromURL(url).then(function(psd) {
						var prop;
						img.attr('src', psd.image.toBase64());
						requestAnimationFrame(function() {
							prop = (img.width()/img.height()).toFixed(2);
							preview.on('changesize', function() {
								var pw = parseInt(preview.width()),
									ph = parseInt(preview.height()),
									w, h;
							
								if (prop < (pw/ph).toFixed(2)) {
									h = ph;
									w = Math.floor(h * prop);
								} else {
									w = pw;
									h = Math.floor(w/prop);
								}
								img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
							}).trigger('changesize');
							
							loading.remove();
							// hide info/icon
							ql.hideinfo();
							//show image
							img.fadeIn(100);
						});
					}, function() {
						loading.remove();
						img.remove();
					});
					fm.restoreXhrSend();
				} catch(e) {
					fm.restoreXhrSend();
					loading.remove();
					img.remove();
				}
			},
			PSD;
		
		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				url, img, loading, m,
				_define, _require;

			if (mimes[file.mime] && fm.options.cdns.psd && ! fm.UA.ltIE10 && ql.dispInlineRegex.test(file.mime)) {
				// this is our file - stop event propagation
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				url = fm.openUrl(file.hash);
				if (!fm.isSameOrigin(url)) {
					url = fm.openUrl(file.hash, true);
				}
				img = jQuery('<img/>').hide().appendTo(preview);
				
				if (PSD) {
					load(url, img, loading);
				} else {
					_define = window.define;
					_require = window.require;
					window.require = null;
					window.define = null;
					fm.loadScript(
						[ fm.options.cdns.psd ],
						function() {
							PSD = require('psd');
							_define? (window.define = _define) : (delete window.define);
							_require? (window.require = _require) : (delete window.require);
							load(url, img, loading);
						}
					);
				}
			}
		});
	},
	
	/**
	 * HTML preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['text/html', 'application/xhtml+xml']),
			preview = ql.preview;
			
		preview.on(ql.evUpdate, function(e) {
			var file = e.file, jqxhr, loading;
			
			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));

				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
				}).addClass('elfinder-overflow-auto');
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true
				})
				.done(function(data) {
					ql.hideinfo();
					var doc = jQuery('<iframe class="elfinder-quicklook-preview-html"/>').appendTo(preview)[0].contentWindow.document;
					doc.open();
					doc.write(data.content);
					doc.close();
				})
				.always(function() {
					loading.remove();
				});
			}
		});
	},
	
	/**
	 * MarkDown preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['text/x-markdown']),
			preview = ql.preview,
			marked  = null,
			show = function(data, loading) {
				ql.hideinfo();
				var doc = jQuery('<iframe class="elfinder-quicklook-preview-html"/>').appendTo(preview)[0].contentWindow.document;
				doc.open();
				doc.write(marked(data.content));
				doc.close();
				loading.remove();
			},
			error = function(loading) {
				marked = false;
				loading.remove();
			};
			
		preview.on(ql.evUpdate, function(e) {
			var file = e.file, jqxhr, loading;
			
			if (mimes[file.mime] && fm.options.cdns.marked && marked !== false && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));

				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
				}).addClass('elfinder-overflow-auto');
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true
				})
				.done(function(data) {
					if (marked || window.marked) {
						if (!marked) {
							marked = window.marked;
						}
						show(data, loading);
					} else {
						fm.loadScript([fm.options.cdns.marked],
							function(res) { 
								marked = res || window.marked || false;
								delete window.marked;
								if (marked) {
									show(data, loading);
								} else {
									error(loading);
								}
							},
							{
								tryRequire: true,
								error: function() {
									error(loading);
								}
							}
						);
					}
				})
				.fail(function() {
					error(loading);
				});
			}
		});
	},

	/**
	 * PDF/ODT/ODS/ODP preview with ViewerJS
	 * 
	 * @param elFinder.commands.quicklook
	 */
	 function(ql) {
		if (ql.options.viewerjs) {
			var fm      = ql.fm,
				preview = ql.preview,
				opts    = ql.options.viewerjs,
				mimes   = opts.url? fm.arrayFlip(opts.mimes || []) : [];

			if (opts.url) {
				preview.on('update', function(e) {
					var win  = ql.window,
						file = e.file, node, loading;

					if (mimes[file.mime]) {
						var url = fm.openUrl(file.hash);
						if (url && fm.isSameOrigin(url)) {
							e.stopImmediatePropagation();

							loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));

							node = jQuery('<iframe class="elfinder-quicklook-preview-iframe"/>')
								.css('background-color', 'transparent')
								.on('load', function() {
									ql.hideinfo();
									loading.remove();
									node.css('background-color', '#fff');
								})
								.on('error', function() {
									loading.remove();
									node.remove();
								})
								.appendTo(preview)
								.attr('src', opts.url + '#' + url);

							preview.one('change', function() {
								loading.remove();
								node.off('load').remove();
							});
						}
					}
				});
			}
		}
	},

	/**
	 * PDF preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mime    = 'application/pdf',
			preview = ql.preview,
			active  = false,
			urlhash = '',
			firefox, toolbar;
			
		if ((fm.UA.Safari && fm.OS === 'mac' && !fm.UA.iOS) || fm.UA.IE || fm.UA.Firefox) {
			active = true;
		} else {
			jQuery.each(navigator.plugins, function(i, plugins) {
				jQuery.each(plugins, function(i, plugin) {
					if (plugin.type === mime) {
						return !(active = true);
					}
				});
			});
		}

		if (active) {
			if (typeof ql.options.pdfToolbar !== 'undefined' && !ql.options.pdfToolbar) {
				urlhash = '#toolbar=0';
			}
			preview.on(ql.evUpdate, function(e) {
				var file = e.file;
				
				if (active && file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
					e.stopImmediatePropagation();
					ql.hideinfo();
					ql.cover.addClass('elfinder-quicklook-coverbg');
					jQuery('<object class="elfinder-quicklook-preview-pdf" data="'+fm.openUrl(file.hash)+urlhash+'" type="application/pdf" />')
						.on('error', function(e) {
							active = false;
							ql.update(void(0), fm.cwd());
							ql.update(void(0), file);
						})
						.appendTo(preview);
				}
				
			});
		}
	},
	
	/**
	 * Flash preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mime    = 'application/x-shockwave-flash',
			preview = ql.preview,
			active  = false;

		jQuery.each(navigator.plugins, function(i, plugins) {
			jQuery.each(plugins, function(i, plugin) {
				if (plugin.type === mime) {
					return !(active = true);
				}
			});
		});
		
		active && preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				node;
				
			if (file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
				e.stopImmediatePropagation();
				ql.hideinfo();
				node = jQuery('<embed class="elfinder-quicklook-preview-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+fm.openUrl(file.hash)+'" quality="high" type="application/x-shockwave-flash" wmode="transparent" />')
					.appendTo(preview);
			}
		});
	},
	
	/**
	 * HTML5 audio preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm       = ql.fm,
			preview  = ql.preview,
			mimes    = {
				'audio/mpeg'    : 'mp3',
				'audio/mpeg3'   : 'mp3',
				'audio/mp3'     : 'mp3',
				'audio/x-mpeg3' : 'mp3',
				'audio/x-mp3'   : 'mp3',
				'audio/x-wav'   : 'wav',
				'audio/wav'     : 'wav',
				'audio/x-m4a'   : 'm4a',
				'audio/aac'     : 'm4a',
				'audio/mp4'     : 'm4a',
				'audio/x-mp4'   : 'm4a',
				'audio/ogg'     : 'ogg',
				'audio/webm'    : 'webm',
				'audio/flac'    : 'flac',
				'audio/x-flac'  : 'flac',
				'audio/amr'     : 'amr'
			},
			node, curHash,
			win  = ql.window,
			navi = ql.navbar,
			AMR, autoplay,
			controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
			setNavi = function() {
				navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
			},
			getNode = function(src, hash) {
				return jQuery('<audio class="elfinder-quicklook-preview-audio ui-front" controls' + controlsList + ' preload="auto" autobuffer><source src="'+src+'" /></audio>')
					.on('change', function(e) {
						// Firefox fire change event on seek or volume change
						e.stopPropagation();
					})
					.on('error', function(e) {
						node && node.data('hash') === hash && reset();
					})
					.data('hash', hash)
					.appendTo(preview);
			},
			amrToWavUrl = function(hash) {
				var dfd = jQuery.Deferred(),
					loader = jQuery.Deferred().done(function() {
						fm.getContents(hash).done(function(data) {
							try {
								var buffer = AMR.toWAV(new Uint8Array(data));
								if (buffer) {
									dfd.resolve(URL.createObjectURL(new Blob([buffer], { type: 'audio/x-wav' })));
								} else {
									dfd.reject();
								}
							} catch(e) {
								dfd.reject();
							}
						}).fail(function() {
							dfd.reject();
						});
					}).fail(function() {
						AMR = false;
						dfd.reject();
					}),
					_AMR;
				if (window.TextEncoder && window.URL && URL.createObjectURL && typeof AMR === 'undefined') {
					// previous window.AMR
					_AMR = window.AMR;
					delete window.AMR;
					fm.loadScript(
						[ fm.options.cdns.amr ],
						function() { 
							AMR = window.AMR? window.AMR : false;
							// restore previous window.AMR
							window.AMR = _AMR;
							loader[AMR? 'resolve':'reject']();
						},
						{
							error: function() {
								loader.reject();
							}
						}
					);
				} else {
					loader[AMR? 'resolve':'reject']();
				}
				return dfd;
			},
			play = function(player) {
				var hash = node.data('hash'),
					playPromise;
				autoplay && (playPromise = player.play());
				// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
				if (playPromise && playPromise['catch']) {
					playPromise['catch'](function(e) {
						if (!player.paused) {
							node && node.data('hash') === hash && reset();
						}
					});
				}
			},
			reset = function() {
				if (node && node.parent().length) {
					var elm = node[0],
						url = node.children('source').attr('src');
					win.off('viewchange.audio');
					try {
						elm.pause();
						node.empty();
						if (url.match(/^blob:/)) {
							URL.revokeObjectURL(url);
						}
						elm.src = '';
						elm.load();
					} catch(e) {}
					node.remove();
					node = null;
				}
			};

		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				type = mimes[file.mime],
				html5, srcUrl;

			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && ((html5 = ql.support.audio[type]) || (type === 'amr'))) {
				autoplay = ql.autoPlay();
				curHash = file.hash;
				srcUrl = html5? fm.openUrl(curHash) : '';
				if (!html5) {
					if (fm.options.cdns.amr && type === 'amr' && AMR !== false) {
						e.stopImmediatePropagation();
						node = getNode(srcUrl, curHash);
						amrToWavUrl(file.hash).done(function(url) {
							if (curHash === file.hash) {
								var elm = node[0];
								try {
									node.children('source').attr('src', url);
									elm.pause();
									elm.load();
									play(elm);
									win.on('viewchange.audio', setNavi);
									setNavi();
								} catch(e) {
									URL.revokeObjectURL(url);
									node.remove();
								}
							} else {
								URL.revokeObjectURL(url);
							}
						}).fail(function() {
							node.remove();
						});
					}
				} else {
					e.stopImmediatePropagation();
					node = getNode(srcUrl, curHash);
					play(node[0]);
					win.on('viewchange.audio', setNavi);
					setNavi();
				}
			}
		}).on('change', reset);
	},
	
	/**
	 * HTML5 video preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm       = ql.fm,
			preview  = ql.preview,
			mimes    = {
				'video/mp4'       : 'mp4',
				'video/x-m4v'     : 'mp4',
				'video/quicktime' : 'mp4',
				'video/ogg'       : 'ogg',
				'application/ogg' : 'ogg',
				'video/webm'      : 'webm',
				'video/x-matroska': 'mkv',
				'video/3gpp'      : '3gp',
				'application/vnd.apple.mpegurl' : 'm3u8',
				'application/x-mpegurl' : 'm3u8',
				'application/dash+xml'  : 'mpd',
				'video/x-flv'     : 'flv'
			},
			node,
			win  = ql.window,
			navi = ql.navbar,
			cHls, cDash, pDash, cFlv, autoplay, tm,
			controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
			setNavi = function() {
				if (fm.UA.iOS) {
					if (win.hasClass('elfinder-quicklook-fullscreen')) {
						preview.css('height', '-webkit-calc(100% - 50px)');
						navi._show();
					} else {
						preview.css('height', '');
					}
				} else {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
				}
			},
			render = function(file, opts) {
				var errTm = function(e) {
						if (err > 1) {
							tm && clearTimeout(tm);
							tm = setTimeout(function() {
								!canPlay && reset(true);
							}, 800);
						}
					},
					err = 0, 
					canPlay;
				//reset();
				pDash = null;
				opts = opts || {};
				ql.hideinfo();
				node = jQuery('<video class="elfinder-quicklook-preview-video" controls' + controlsList + ' preload="auto" autobuffer playsinline>'
						+'</video>')
					.on('change', function(e) {
						// Firefox fire change event on seek or volume change
						e.stopPropagation();
					})
					.on('timeupdate progress', errTm)
					.on('canplay', function() {
						canPlay = true;
					})
					.data('hash', file.hash);
				// can not handling error event with jQuery `on` event handler
				node[0].addEventListener('error', function(e) {
					if (opts.src && fm.convAbsUrl(opts.src) === fm.convAbsUrl(e.target.src)) {
						++err;
						errTm();
					}
				}, true);

				if (opts.src) {
					node.append('<source src="'+opts.src+'" type="'+file.mime+'"/><source src="'+opts.src+'"/>');
				}
				
				node.appendTo(preview);

				win.on('viewchange.video', setNavi);
				setNavi();
			},
			loadHls = function(file) {
				var hls;
				render(file);
				hls = new cHls();
				hls.loadSource(fm.openUrl(file.hash));
				hls.attachMedia(node[0]);
				if (autoplay) {
					hls.on(cHls.Events.MANIFEST_PARSED, function() {
						play(node[0]);
					});
				}
			},
			loadDash = function(file) {
				render(file);
				pDash = window.dashjs.MediaPlayer().create();
				pDash.getDebug().setLogToBrowserConsole(false);
				pDash.initialize(node[0], fm.openUrl(file.hash), autoplay);
				pDash.on('error', function(e) {
					reset(true);
				});
			},
			loadFlv = function(file) {
				if (!cFlv.isSupported()) {
					cFlv = false;
					return;
				}
				var player = cFlv.createPlayer({
					type: 'flv',
					url: fm.openUrl(file.hash)
				});
				render(file);
				player.on(cFlv.Events.ERROR, function() {
					player.destroy();
					reset(true);
				});
				player.attachMediaElement(node[0]);
				player.load();
				play(player);
			},
			play = function(player) {
				var hash = node.data('hash'),
					playPromise;
				autoplay && (playPromise = player.play());
				// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
				if (playPromise && playPromise['catch']) {
					playPromise['catch'](function(e) {
						if (!player.paused) {
							node && node.data('hash') === hash && reset(true);
						}
					});
				}
			},
			reset = function(showInfo) {
				tm && clearTimeout(tm);
				if (node && node.parent().length) {
					var elm = node[0];
					win.off('viewchange.video');
					pDash && pDash.reset();
					try {
						elm.pause();
						node.empty();
						elm.src = '';
						elm.load();
					} catch(e) {}
					node.remove();
					node = null;
				}
				showInfo && ql.info.show();
			};

		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				mime = file.mime.toLowerCase(),
				type = mimes[mime],
				stock, playPromise;
			
			if (mimes[mime] && ql.dispInlineRegex.test(file.mime) && (((type === 'm3u8' || (type === 'mpd' && !fm.UA.iOS) || type === 'flv') && !fm.UA.ltIE10) || ql.support.video[type])) {
				autoplay = ql.autoPlay();
				if (ql.support.video[type] && (type !== 'm3u8' || fm.UA.Safari)) {
					e.stopImmediatePropagation();
					render(file, { src: fm.openUrl(file.hash) });
					play(node[0]);
				} else {
					if (cHls !== false && fm.options.cdns.hls && type === 'm3u8') {
						e.stopImmediatePropagation();
						if (cHls) {
							loadHls(file);
						} else {
							stock = window.Hls;
							delete window.Hls;
							fm.loadScript(
								[ fm.options.cdns.hls ],
								function(res) { 
									cHls = res || window.Hls || false;
									window.Hls = stock;
									cHls && loadHls(file);
								},
								{
									tryRequire: true,
									error : function() {
										cHls = false;
									}
								}
							);
						}
					} else if (cDash !== false && fm.options.cdns.dash && type === 'mpd') {
						e.stopImmediatePropagation();
						if (cDash) {
							loadDash(file);
						} else {
							fm.loadScript(
								[ fm.options.cdns.dash ],
								function() {
									// dashjs require window.dashjs in global scope
									cDash = window.dashjs? true : false;
									cDash && loadDash(file);
								},
								{
									tryRequire: true,
									error : function() {
										cDash = false;
									}
								}
							);
						}
					} else if (cFlv !== false && fm.options.cdns.flv && type === 'flv') {
						e.stopImmediatePropagation();
						if (cFlv) {
							loadFlv(file);
						} else {
							stock = window.flvjs;
							delete window.flvjs;
							fm.loadScript(
								[ fm.options.cdns.flv ],
								function(res) { 
									cFlv = res || window.flvjs || false;
									window.flvjs = stock;
									cFlv && loadFlv(file);
								},
								{
									tryRequire: true,
									error : function() {
										cFlv = false;
									}
								}
							);
						}
					}
				}
			}
		}).on('change', reset);
	},
	
	/**
	 * Audio/video preview plugin using browser plugins
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var preview = ql.preview,
			mimes   = [],
			node,
			win  = ql.window,
			navi = ql.navbar;
			
		jQuery.each(navigator.plugins, function(i, plugins) {
			jQuery.each(plugins, function(i, plugin) {
				(plugin.type.indexOf('audio/') === 0 || plugin.type.indexOf('video/') === 0) && mimes.push(plugin.type);
			});
		});
		mimes = ql.fm.arrayFlip(mimes);
		
		preview.on(ql.evUpdate, function(e) {
			var file  = e.file,
				mime  = file.mime,
				video,
				setNavi = function() {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
				};
			
			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime)) {
				e.stopImmediatePropagation();
				(video = mime.indexOf('video/') === 0) && ql.hideinfo();
				node = jQuery('<embed src="'+ql.fm.openUrl(file.hash)+'" type="'+mime+'" class="elfinder-quicklook-preview-'+(video ? 'video' : 'audio')+'"/>')
					.appendTo(preview);
				
				win.on('viewchange.embed', setNavi);
				setNavi();
			}
		}).on('change', function() {
			if (node && node.parent().length) {
				win.off('viewchange.embed');
				node.remove();
				node= null;
			}
		});
		
	},

	/**
	 * Archive(zip|gzip|tar) preview plugin using https://github.com/imaya/zlib.js
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['application/zip', 'application/x-gzip', 'application/x-tar']),
			preview = ql.preview,
			unzipFiles = function() {
				/** @type {Array.<string>} */
				var filenameList = [];
				/** @type {number} */
				var i;
				/** @type {number} */
				var il;
				/** @type {Array.<Zlib.Unzip.FileHeader>} */
				var fileHeaderList;
				// need check this.Y when update cdns.zlibUnzip
				this.Y();
				fileHeaderList = this.i;
				for (i = 0, il = fileHeaderList.length; i < il; ++i) {
					// need check fileHeaderList[i].J when update cdns.zlibUnzip
					filenameList[i] = fileHeaderList[i].filename + (fileHeaderList[i].J? ' (' + fm.formatSize(fileHeaderList[i].J) + ')' : '');
				}
				return filenameList;
			},
			tarFiles = function(tar) {
				var filenames = [],
					tarlen = tar.length,
					offset = 0,
					toStr = function(arr) {
						return String.fromCharCode.apply(null, arr).replace(/\0+$/, '');
					},
					h, name, prefix, size, dbs;
				while (offset < tarlen && tar[offset] !== 0) {
					h = tar.subarray(offset, offset + 512);
					name = toStr(h.subarray(0, 100));
					if (prefix = toStr(h.subarray(345, 500))) {
						name = prefix + name;
					}
					size = parseInt(toStr(h.subarray(124, 136)), 8);
					dbs = Math.ceil(size / 512) * 512;
					if (name === '././@LongLink') {
						name = toStr(tar.subarray(offset + 512, offset + 512 + dbs));
					}
					(name !== 'pax_global_header') && filenames.push(name + (size? ' (' + fm.formatSize(size) + ')': ''));
					offset = offset + 512 + dbs;
				}
				return filenames;
			},
			Zlib;

		if (window.Uint8Array && window.DataView && fm.options.cdns.zlibUnzip && fm.options.cdns.zlibGunzip) {
			preview.on(ql.evUpdate, function(e) {
				var file  = e.file,
					isTar = (file.mime === 'application/x-tar');
				if (mimes[file.mime] && (
						isTar
						|| ((typeof Zlib === 'undefined' || Zlib) && (file.mime === 'application/zip' || file.mime === 'application/x-gzip'))
					)) {
					var jqxhr, loading, url,
						req = function() {
							url = fm.openUrl(file.hash);
							if (!fm.isSameOrigin(url)) {
								url = fm.openUrl(file.hash, true);
							}
							jqxhr = fm.request({
								data    : {cmd : 'get'},
								options : {
									url: url,
									type: 'get',
									cache : true,
									dataType : 'binary',
									responseType :'arraybuffer',
									processData: false
								}
							})
							.fail(function() {
								loading.remove();
							})
							.done(function(data) {
								var unzip, filenames;
								try {
									if (file.mime === 'application/zip') {
										unzip = new Zlib.Unzip(new Uint8Array(data));
										//filenames = unzip.getFilenames();
										filenames = unzipFiles.call(unzip);
									} else if (file.mime === 'application/x-gzip') {
										unzip = new Zlib.Gunzip(new Uint8Array(data));
										filenames = tarFiles(unzip.decompress());
									} else if (file.mime === 'application/x-tar') {
										filenames = tarFiles(new Uint8Array(data));
									}
									makeList(filenames);
								} catch (e) {
									loading.remove();
									fm.debug('error', e);
								}
							});
						},
						makeList = function(filenames) {
							var header, doc;
							if (filenames && filenames.length) {
								filenames = jQuery.map(filenames, function(str) {
									return fm.decodeRawString(str);
								});
								filenames.sort();
								loading.remove();
								header = '<strong>'+fm.escape(file.mime)+'</strong> ('+fm.formatSize(file.size)+')'+'<hr/>';
								doc = jQuery('<div class="elfinder-quicklook-preview-archive-wrapper">'+header+'<pre class="elfinder-quicklook-preview-text">'+fm.escape(filenames.join("\n"))+'</pre></div>')
									.on('touchstart', function(e) {
										if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
											e.originalEvent._preventSwipeX = true;
										}
									})
									.appendTo(preview);
								ql.hideinfo();
							}
						},
						_Zlib;

					// this is our file - stop event propagation
					e.stopImmediatePropagation();
					
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						jqxhr.state() === 'pending' && jqxhr.reject();
						loading.remove();
					});
					
					if (Zlib) {
						req();
					} else {
						if (window.Zlib) {
							_Zlib = window.Zlib;
							delete window.Zlib;
						}
						fm.loadScript(
							[ fm.options.cdns.zlibUnzip, fm.options.cdns.zlibGunzip ],
							function() {
								if (window.Zlib && (Zlib = window.Zlib)) {
									if (_Zlib) {
										window.Zlib = _Zlib;
									} else {
										delete window.Zlib;
									}
									req();
								} else {
									error();
								}
							}
						);
					}
				}
			});
		}
	},

	/**
	 * RAR Archive preview plugin using https://github.com/43081j/rar.js
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(['application/x-rar']),
			preview = ql.preview,
			RAR;

		if (window.DataView) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file;
				if (mimes[file.mime] && fm.options.cdns.rar && RAR !== false) {
					var loading, url, archive, abort,
						getList = function(url) {
							if (abort) {
								loading.remove();
								return;
							}
							try {
								archive = RAR({
									file: url,
									type: 2,
									xhrHeaders: fm.customHeaders,
									xhrFields: fm.xhrFields
								}, function(err) {
									loading.remove();
									var filenames = [],
										header, doc;
									if (abort || err) {
										// An error occurred (not a rar, read error, etc)
										err && fm.debug('error', err);
										return;
									}
									jQuery.each(archive.entries, function() {
										filenames.push(this.path + (this.size? ' (' + fm.formatSize(this.size) + ')' : ''));
									});
									if (filenames.length) {
										filenames = jQuery.map(filenames, function(str) {
											return fm.decodeRawString(str);
										});
										filenames.sort();
										header = '<strong>'+fm.escape(file.mime)+'</strong> ('+fm.formatSize(file.size)+')'+'<hr/>';
										doc = jQuery('<div class="elfinder-quicklook-preview-archive-wrapper">'+header+'<pre class="elfinder-quicklook-preview-text">'+fm.escape(filenames.join("\n"))+'</pre></div>')
											.on('touchstart', function(e) {
												if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
													e.originalEvent._preventSwipeX = true;
												}
											})
											.appendTo(preview);
										ql.hideinfo();
									}
								});
							} catch(e) {
								loading.remove();
							}
						},
						error = function() {
							RAR = false;
							loading.remove();
						},
						_RAR;

					// this is our file - stop event propagation
					e.stopImmediatePropagation();
					
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						archive && (archive.abort = true);
						loading.remove();
						abort = true;
					});
					
					url = fm.openUrl(file.hash);
					if (!fm.isSameOrigin(url)) {
						url = fm.openUrl(file.hash, true);
					}
					if (RAR) {
						getList(url);
					} else {
						if (window.RarArchive) {
							_RAR = window.RarArchive;
							delete window.RarArchive;
						}
						fm.loadScript(
							[ fm.options.cdns.rar ],
							function() {
								if (fm.hasRequire) {
									require(['rar'], function(RarArchive) {
										RAR = RarArchive;
										getList(url);
									}, error);
								} else {
									if (RAR = window.RarArchive) {
										if (_RAR) {
											window.RarArchive = _RAR;
										} else {
											delete window.RarArchive;
										}
										getList(url);
									} else {
										error();
									}
								}
							},
							{
								tryRequire: true,
								error : error
							}
						);
					}
				}
			});
		}
	},

	/**
	 * CAD-Files and 3D-Models online viewer on sharecad.org
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = fm.arrayFlip(ql.options.sharecadMimes || []),
			preview = ql.preview,
			win     = ql.window,
			node;
			
		if (ql.options.sharecadMimes.length) {
			ql.addIntegration({
				title: 'ShareCAD.org CAD and 3D-Models viewer',
				link: 'https://sharecad.org/DWGOnlinePlugin'
			});
		}

		preview.on(ql.evUpdate, function(e) {
			var file = e.file;
			if (mimes[file.mime.toLowerCase()] && !fm.option('onetimeUrl', file.hash)) {
				var win     = ql.window,
					loading, url;
				
				e.stopImmediatePropagation();
				if (file.url == '1') {
					preview.hide();
					jQuery('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
					.on('click', function() {
						var self = jQuery(this);
						self.html('<span class="elfinder-spinner">');
						fm.request({
							data : {cmd : 'url', target : file.hash},
							preventDefault : true
						})
						.always(function() {
							self.html('');
						})
						.done(function(data) {
							var rfile = fm.file(file.hash);
							file.url = rfile.url = data.url || '';
							if (file.url) {
								preview.trigger({
									type: ql.evUpdate,
									file: file,
									forceUpdate: true
								});
							}
						});
					});
				}
				if (file.url !== '' && file.url != '1') {
					preview.one('change', function() {
						loading.remove();
						node.off('load').remove();
						node = null;
					}).addClass('elfinder-overflow-auto');
					
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					
					url = fm.convAbsUrl(fm.url(file.hash));
					node = jQuery('<iframe class="elfinder-quicklook-preview-iframe" scrolling="no"/>')
						.css('background-color', 'transparent')
						.appendTo(preview)
						.on('load', function() {
							ql.hideinfo();
							loading.remove();
							ql.preview.after(ql.info);
							jQuery(this).css('background-color', '#fff').show();
						})
						.on('error', function() {
							loading.remove();
							ql.preview.after(ql.info);
						})
						.attr('src', '//sharecad.org/cadframe/load?url=' + encodeURIComponent(url));
					
					ql.info.after(ql.preview);
				}
			}
			
		});
	},

	/**
	 * KML preview with GoogleMaps API
	 *
	 * @param elFinder.commands.quicklook
	 */
	function(ql) {
				var fm      = ql.fm,
			mimes   = {
				'application/vnd.google-earth.kml+xml' : true,
				'application/vnd.google-earth.kmz' : true
			},
			preview = ql.preview,
			gMaps, loadMap, wGmfail, fail, mapScr;

		if (ql.options.googleMapsApiKey) {
			ql.addIntegration({
				title: 'Google Maps',
				link: 'https://www.google.com/intl/' + fm.lang.replace('_', '-') + '/help/terms_maps.html'
			});
			gMaps = (window.google && google.maps);
			// start load maps
			loadMap = function(file, node) {
				var mapsOpts = ql.options.googleMapsOpts.maps;
				fm.forExternalUrl(file.hash).done(function(url) {
					if (url) {
						try {
							new gMaps.KmlLayer(url, Object.assign({
								map: new gMaps.Map(node.get(0), mapsOpts)
							}, ql.options.googleMapsOpts.kml));
							ql.hideinfo();
						} catch(e) {
							fail();
						}
					} else {
						fail();
					}
				});
			};
			// keep stored error handler if exists
			wGmfail = window.gm_authFailure;
			// on error function
			fail = function() {
				mapScr = null;
			};
			// API script url
			mapScr = 'https://maps.googleapis.com/maps/api/js?key=' + ql.options.googleMapsApiKey;
			// error handler
			window.gm_authFailure = function() {
				fail();
				wGmfail && wGmfail();
			};

			preview.on(ql.evUpdate, function(e) {
				var file = e.file;
				if (mapScr && mimes[file.mime.toLowerCase()]) {
					var win     = ql.window,
						getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
						loading, url, node;
				
					e.stopImmediatePropagation();
					if (getLink) {
						preview.hide();
						jQuery('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
						.on('click', function() {
							var self = jQuery(this);
							self.html('<span class="elfinder-spinner">');
							fm.request({
								data : {cmd : 'url', target : file.hash},
								preventDefault : true
							})
							.always(function() {
								self.html('');
							})
							.done(function(data) {
								var rfile = fm.file(file.hash);
								file.url = rfile.url = data.url || '';
								if (file.url) {
									preview.trigger({
										type: ql.evUpdate,
										file: file,
										forceUpdate: true
									});
								}
							});
						});
					}
					if (file.url !== '' && !getLink) {
						node = jQuery('<div style="width:100%;height:100%;"/>').appendTo(preview);
						preview.one('change', function() {
							node.remove();
							node = null;
						});
						if (!gMaps) {
							fm.loadScript([mapScr], function() {
								gMaps = window.google && google.maps;
								gMaps && loadMap(file, node);
							});
						} else {
							loadMap(file, node);
						}
					}
				}
			});
		}
	},

	/**
	 * Any supported files preview plugin using (Google docs | MS Office) online viewer
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			mimes   = Object.assign(fm.arrayFlip(ql.options.googleDocsMimes || [], 'g'), fm.arrayFlip(ql.options.officeOnlineMimes || [], 'm')),
			preview = ql.preview,
			win     = ql.window,
			navi    = ql.navbar,
			urls    = {
				g: 'docs.google.com/gview?embedded=true&url=',
				m: 'view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src='
			},
			navBottom = {
				g: '56px',
				m: '24px'
			},
			mLimits = {
				xls  : 5242880, // 5MB
				xlsb : 5242880,
				xlsx : 5242880,
				xlsm : 5242880,
				other: 10485760 // 10MB
			},
			node, enable;
		
		if (ql.options.googleDocsMimes.length) {
			enable = true;
			ql.addIntegration({
				title: 'Google Docs Viewer',
				link: 'https://docs.google.com/'
			});
		}
		if (ql.options.officeOnlineMimes.length) {
			enable = true;
			ql.addIntegration({
				title: 'MS Online Doc Viewer',
				link: 'https://products.office.com/office-online/view-office-documents-online'
			});
		}

		if (enable) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file,
					type;
				// 25MB is maximum filesize of Google Docs prevew
				if (file.size <= 26214400 && (type = mimes[file.mime])) {
					var win     = ql.window,
						setNavi = function() {
							navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? navBottom[type] : '');
						},
						ext     = fm.mimeTypes[file.mime],
						getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
						loading, url;
					
					if (type === 'm') {
						if ((mLimits[ext] && file.size > mLimits[ext]) || file.size > mLimits.other) {
							type = 'g';
						}
					}
					if (getLink) {
						preview.hide();
						jQuery('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
						.on('click', function() {
							var self = jQuery(this);
							self.html('<span class="elfinder-spinner">');
							fm.request({
								data : {cmd : 'url', target : file.hash},
								preventDefault : true
							})
							.always(function() {
								self.html('');
							})
							.done(function(data) {
								var rfile = fm.file(file.hash);
								file.url = rfile.url = data.url || '';
								if (file.url) {
									preview.trigger({
										type: ql.evUpdate,
										file: file,
										forceUpdate: true
									});
								}
							});
						});
					}
					if (file.url !== '' && !getLink) {
						e.stopImmediatePropagation();
						preview.one('change', function() {
							win.off('viewchange.googledocs');
							loading.remove();
							node.off('load').remove();
							node = null;
						}).addClass('elfinder-overflow-auto');
						
						loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
						
						node = jQuery('<iframe class="elfinder-quicklook-preview-iframe"/>')
							.css('background-color', 'transparent')
							.appendTo(preview);

						fm.forExternalUrl(file.hash).done(function(url) {
							if (url) {
								if (file.ts) {
									url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts;
								}
								node.on('load', function() {
									ql.hideinfo();
									loading.remove();
									ql.preview.after(ql.info);
									jQuery(this).css('background-color', '#fff').show();
								})
								.on('error', function() {
									loading.remove();
									ql.preview.after(ql.info);
								}).attr('src', 'https://' + urls[type] + encodeURIComponent(url));
							} else {
								loading.remove();
								node.remove();
							}
						});

						win.on('viewchange.googledocs', setNavi);
						setNavi();
						ql.info.after(ql.preview);
					}
				}
				
			});
		}
	},

	/**
	 * Texts preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
				var fm      = ql.fm,
			preview = ql.preview,
			textMaxlen = parseInt(ql.options.textMaxlen) || 2000,
			prettify = function() {
				if (fm.options.cdns.prettify) {
					fm.loadScript([fm.options.cdns.prettify + (fm.options.cdns.prettify.match(/\?/)? '&' : '?') + 'autorun=false']);
					prettify = function() { return true; };
				} else {
					prettify = function() { return false; };
				}
			},
			PRcheck = function(node, cnt) {
				if (prettify()) {
					if (typeof window.PR === 'undefined' && cnt--) {
						setTimeout(function() { PRcheck(node, cnt); }, 100);
					} else {
						if (typeof window.PR === 'object') {
							node.css('cursor', 'wait');
							requestAnimationFrame(function() {
								PR.prettyPrint && PR.prettyPrint(null, node.get(0));
								node.css('cursor', '');
							});
						} else {
							prettify = function() { return false; };
						}
					}
				}
			};
		
		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				mime = file.mime,
				jqxhr, loading;
			
			if (fm.mimeIsText(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
				e.stopImmediatePropagation();
				
				(typeof window.PR === 'undefined') && prettify();
				
				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"/></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));

				// stop loading on change file if not loadin yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
				});
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true
				})
				.done(function(data) {
					var reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i'),
						text = data.content,
						part, more, node, m;
					ql.hideinfo();
					if (window.atob && (m = text.match(reg))) {
						text = atob(text.substr(m[1].length));
					}
					
					more = text.length - textMaxlen;
					if (more > 100) {
						part = text.substr(0, textMaxlen) + '...';
					} else {
						more = 0;
					}
					
					node = jQuery('<div class="elfinder-quicklook-preview-text-wrapper"><pre class="elfinder-quicklook-preview-text prettyprint"></pre></div>');
					
					if (more) {
						node.append(jQuery('<div class="elfinder-quicklook-preview-charsleft"><hr/><span>' + fm.i18n('charsLeft', fm.toLocaleString(more)) + '</span></div>')
							.on('click', function() {
								var top = node.scrollTop();
								jQuery(this).remove();
								node.children('pre').removeClass('prettyprinted').text(text).scrollTop(top);
								PRcheck(node, 100);
							})
						);
					}
					node.children('pre').text(part || text);
					
					node.on('touchstart', function(e) {
						if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
							e.originalEvent._preventSwipeX = true;
						}
					}).appendTo(preview);
					
					PRcheck(node, 100);
				})
				.always(function() {
					loading.remove();
				});
			}
		});
	}
];


/*
 * File: /js/commands/reload.js
 */

/**
 * @class  elFinder command "reload"
 * Sync files and folders
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.reload = function() {
	"use strict";
	var self   = this,
		search = false;
	
	this.alwaysEnabled = true;
	this.updateOnSelect = true;
	
	this.shortcuts = [{
		pattern     : 'ctrl+shift+r f5'
	}];
	
	this.getstate = function() {
		return 0;
	};
	
	this.init = function() {
		this.fm.bind('search searchend', function() {
			search = this.type == 'search';
		});
	};
	
	this.fm.bind('contextmenu', function(){
		var fm = self.fm;
		if (fm.options.sync >= 1000) {
			self.extra = {
				icon: 'accept',
				node: jQuery('<span/>')
					.attr({title: fm.i18n('autoSync')})
					.on('click touchstart', function(e){
						if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
							return;
						}
						e.stopPropagation();
						e.preventDefault();
						jQuery(this).parent()
							.toggleClass('ui-state-disabled', fm.options.syncStart)
							.parent().removeClass('ui-state-hover');
						fm.options.syncStart = !fm.options.syncStart;
						fm.autoSync(fm.options.syncStart? null : 'stop');
					}).on('ready', function(){
						jQuery(this).parent().toggleClass('ui-state-disabled', !fm.options.syncStart).css('pointer-events', 'auto');
					})
			};
		}
	});
	
	this.exec = function() {
		var fm = this.fm;
		if (!search) {
			var dfrd    = fm.sync(),
				timeout = setTimeout(function() {
					fm.notify({type : 'reload', cnt : 1, hideCnt : true});
					dfrd.always(function() { fm.notify({type : 'reload', cnt  : -1}); });
				}, fm.notifyDelay);
				
			return dfrd.always(function() { 
				clearTimeout(timeout); 
				fm.trigger('reload');
			});
		} else {
			jQuery('div.elfinder-toolbar > div.'+fm.res('class', 'searchbtn') + ' > span.ui-icon-search').click();
		}
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/rename.js
 */

/**
 * @class elFinder command "rename". 
 * Rename selected file.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.rename = function() {
	"use strict";

	// set alwaysEnabled to allow root rename on client size
	this.alwaysEnabled = true;

	this.syncTitleOnChange = true;

	var self = this,
		fm = self.fm,
		request = function(dfrd, targtes, file, name) {
			var sel = targtes? [file.hash].concat(targtes) : [file.hash],
				cnt = sel.length,
				data = {}, rootNames;
			
			fm.lockfiles({files : sel});
			
			if (fm.isRoot(file)) {
				if (!(rootNames = fm.storage('rootNames'))) {
					rootNames = {};
				}
				if (name === '') {
					if (rootNames[file.hash]) {
						file.name = file._name;
						file.i18 = file._i18;
						delete rootNames[file.hash];
						delete file._name;
						delete file._i18;
					} else {
						dfrd && dfrd.reject();
						fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
						return;
					}
				} else {
					if (typeof file._name === 'undefined') {
						file._name = file.name;
						file._i18 = file.i18;
					}
					file.name = rootNames[file.hash] = name;
					delete file.i18;
				}
				fm.storage('rootNames', rootNames);
				data = { changed: [file] };
				fm.updateCache(data);
				fm.change(data);
				dfrd && dfrd.resolve(data);
				fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
				return;
			}

			data = {
				cmd : 'rename',
				name : name,
				target : file.hash
			};

			if (cnt > 1) {
				data['targets'] = targtes;
				if (name.match(/\*/)) {
					data['q'] = name;
				}
			}
			
			fm.request({
					data   : data,
					notify : {type : 'rename', cnt : cnt},
					navigate : {}
				})
				.fail(function(error) {
					var err = fm.parseError(error);
					dfrd && dfrd.reject();
					if (! err || ! Array.isArray(err) || err[0] !== 'errRename') {
						fm.sync();
					}
				})
				.done(function(data) {
					var cwdHash;
					if (data.added && data.added.length && cnt === 1) {
						data.undo = {
							cmd : 'rename',
							callback : function() {
								return fm.request({
									data   : {cmd : 'rename', target : data.added[0].hash, name : file.name},
									notify : {type : 'undo', cnt : 1}
								});
							}
						};
						data.redo = {
							cmd : 'rename',
							callback : function() {
								return fm.request({
									data   : {cmd : 'rename', target : file.hash, name : name},
									notify : {type : 'rename', cnt : 1}
								});
							}
						};
					}
					dfrd && dfrd.resolve(data);
					if (!(cwdHash = fm.cwd().hash) || cwdHash === file.hash) {
						fm.exec('open', jQuery.map(data.added, function(f) {
							return (f.mime === 'directory')? f.hash : null;
						})[0]);
					}
				})
				.always(function() {
					fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
				}
			);
		},
		getHint = function(name, target) {
			var sel = target || fm.selected(),
				splits = fm.splitFileExtention(name),
				f1 = fm.file(sel[0]),
				f2 = fm.file(sel[1]),
				ext, hint, add;
			
			ext = splits[1]? ('.' + splits[1]) : '';
			if (splits[1] && splits[0] === '*') {
				// change extention
				hint =  '"' + fm.splitFileExtention(f1.name)[0] + ext + '", ';
				hint += '"' + fm.splitFileExtention(f2.name)[0] + ext + '"';
			} else if (splits[0].length > 1) {
				if (splits[0].substr(-1) === '*') {
					// add prefix
					add = splits[0].substr(0, splits[0].length - 1);
					hint =  '"' + add + f1.name+'", ';
					hint += '"' + add + f2.name+'"';
				} else if (splits[0].substr(0, 1) === '*') {
					// add suffix
					add = splits[0].substr(1);
					hint =  '"'+fm.splitFileExtention(f1.name)[0] + add + ext + '", ';
					hint += '"'+fm.splitFileExtention(f2.name)[0] + add + ext + '"';
				}
			}
			if (!hint) {
				hint = '"'+splits[0] + '1' + ext + '", "' + splits[0] + '2' + ext + '"';
			}
			if (sel.length > 2) {
				hint += ' ...';
			}
			return hint;
		},
		batchRename = function() {
			var sel = fm.selected(),
				tplr = '<input name="type" type="radio" class="elfinder-tabstop">',
				mkChk = function(node, label) {
					return jQuery('<label class="elfinder-rename-batch-checks">' + fm.i18n(label) + '</label>').prepend(node);
				},
				name = jQuery('<input type="text" class="ui-corner-all elfinder-tabstop">'),
				num  = jQuery(tplr),
				prefix  = jQuery(tplr),
				suffix  = jQuery(tplr),
				extention  = jQuery(tplr),
				checks = jQuery('<div/>').append(
					mkChk(num, 'plusNumber'),
					mkChk(prefix, 'asPrefix'),
					mkChk(suffix, 'asSuffix'),
					mkChk(extention, 'changeExtention')
				),
				preview = jQuery('<div class="elfinder-rename-batch-preview"/>'),
				node = jQuery('<div class="elfinder-rename-batch"/>').append(
						jQuery('<div class="elfinder-rename-batch-name"/>').append(name),
						jQuery('<div class="elfinder-rename-batch-type"/>').append(checks),
						preview
					),
				opts = {
					title : fm.i18n('batchRename'),
					modal : true,
					destroyOnClose : true,
					width: Math.min(380, fm.getUI().width() - 20),
					buttons : {},
					open : function() {
						name.on('input', mkPrev).trigger('focus');
					}
				},
				getName = function() {
					var vName = name.val(),
						ext = fm.splitFileExtention(fm.file(sel[0]).name)[1];
					if (vName !== '' || num.is(':checked')) {
						if (prefix.is(':checked')) {
							vName += '*';
						} else if (suffix.is(':checked')) {
							vName = '*' + vName + '.' + ext;
						} else if (extention.is(':checked')) {
							vName = '*.' + vName;
						} else if (ext) {
							vName += '.' + ext;
						}
					}
					return vName;
				},
				mkPrev = function() {
					var vName = getName();
					if (vName !== '') {
						preview.html(fm.i18n(['renameMultiple', sel.length, getHint(vName)]));
					} else {
						preview.empty();
					}
				},
				radios = checks.find('input:radio').on('change', mkPrev),
				dialog;
			
			opts.buttons[fm.i18n('btnApply')] = function() {
				var vName = getName(),
					file, targets;
				if (vName !== '') {
					dialog.elfinderdialog('close');
					targets = sel;
					file = fm.file(targets.shift());
					request(void(0), targets, file, vName);
				}
			};
			opts.buttons[fm.i18n('btnCancel')] = function() {
				dialog.elfinderdialog('close');
			};
			if (jQuery.fn.checkboxradio) {
				radios.checkboxradio({
					create: function(e, ui) {
						if (this === num.get(0)) {
							num.prop('checked', true).change();
						}
					}
				});
			} else {
				checks.buttonset({
					create: function(e, ui) {
						num.prop('checked', true).change();
					}
				});
			}
			dialog = self.fmDialog(node, opts);
		};
	
	this.noChangeDirOnRemovedCwd = true;
	
	this.shortcuts = [{
		pattern : 'f2' + (fm.OS == 'mac' ? ' enter' : '')
	}, {
		pattern : 'shift+f2',
		description : 'batchRename',
		callback : function() {
			fm.selected().length > 1 && batchRename();
		}
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			phash, ext, mime, brk, state, isRoot;
		
		if (!cnt) {
			return -1;
		}
		
		if (cnt > 1 && sel[0].phash) {
			phash = sel[0].phash;
			ext = fm.splitFileExtention(sel[0].name)[1].toLowerCase();
			mime = sel[0].mime;
		}
		if (cnt === 1) {
			isRoot = fm.isRoot(sel[0]);
		}

		state = (cnt === 1 && (isRoot || !sel[0].locked) || (fm.api > 2.1030 && cnt === jQuery.grep(sel, function(f) {
			if (!brk && !f.locked && f.phash === phash && !fm.isRoot(f) && (mime === f.mime || ext === fm.splitFileExtention(f.name)[1].toLowerCase())) {
				return true;
			} else {
				brk && (brk = true);
				return false;
			}
		}).length)) ? 0 : -1;
		
		// because alwaysEnabled = true, it need check disabled on connector 
		if (!isRoot && state === 0 && fm.option('disabledFlip', sel[0].hash)['rename']) {
			state = -1;
		}

		if (state !== -1 && cnt > 1) {
			self.extra = {
				icon: 'preference',
				node: jQuery('<span/>')
					.attr({title: fm.i18n('batchRename')})
					.on('click touchstart', function(e){
						if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
							return;
						}
						e.stopPropagation();
						e.preventDefault();
						fm.getUI().trigger('click'); // to close the context menu immediately
						batchRename();
					})
			};
		} else {
			delete self.extra;
		}
			
		return state;
	};
	
	this.exec = function(hashes, cOpts) {
		var cwd      = fm.getUI('cwd'),
			sel      = hashes || (fm.selected().length? fm.selected() : false) || [fm.cwd().hash],
			cnt      = sel.length,
			file     = fm.file(sel.shift()),
			filename = '.elfinder-cwd-filename',
			opts     = cOpts || {},
			incwd    = (fm.cwd().hash == file.hash),
			type     = (opts._currentType === 'navbar' || opts._currentType === 'files')? opts._currentType : (incwd? 'navbar' : 'files'),
			navbar   = (type !== 'files'),
			target   = fm[navbar? 'navHash2Elm' : 'cwdHash2Elm'](file.hash),
			tarea    = (!navbar && fm.storage('view') != 'list'),
			split    = function(name) {
				var ext = fm.splitFileExtention(name)[1];
				return [name.substr(0, name.length - ext.length - 1), ext];
			},
			unselect = function() {
				requestAnimationFrame(function() {
					input && input.trigger('blur');
				});
			},
			rest     = function(){
				if (!overlay.is(':hidden')) {
					overlay.elfinderoverlay('hide').off('click close', cancel);
				}
				pnode.removeClass('ui-front')
					.css('position', '')
					.off('unselect.'+fm.namespace, unselect);
				if (tarea) {
					node && node.css('max-height', '');
				} else if (!navbar) {
					pnode.css('width', '')
						.parent('td').css('overflow', '');
				}
			}, colwidth,
			dfrd     = jQuery.Deferred()
				.fail(function(error) {
					var parent = input.parent(),
						name   = fm.escape(file.i18 || file.name);

					input.off();
					if (tarea) {
						name = name.replace(/([_.])/g, '&#8203;$1');
					}
					requestAnimationFrame(function() {
						if (navbar) {
							input.replaceWith(name);
						} else {
							if (parent.length) {
								input.remove();
								parent.html(name);
							} else {
								target.find(filename).html(name);
							}
						}
					});
					error && fm.error(error);
				})
				.always(function() {
					rest();
					fm.unbind('resize', resize);
					fm.enable();
				}),
			blur = function(e) {
				var name   = jQuery.trim(input.val()),
				splits = fm.splitFileExtention(name),
				valid  = true,
				req = function() {
					input.off();
					rest();
					if (navbar) {
						input.replaceWith(fm.escape(name));
					} else {
						node.html(fm.escape(name));
					}
					request(dfrd, sel, file, name);
				};

				if (!overlay.is(':hidden')) {
					pnode.css('z-index', '');
				}
				if (name === '') {
					if (!fm.isRoot(file)) {
						return cancel();
					}
					if (navbar) {
						input.replaceWith(fm.escape(file.name));
					} else {
						node.html(fm.escape(file.name));
					}
				}
				if (!inError && pnode.length) {
					
					input.off('blur');
					
					if (cnt === 1 && name === file.name) {
						return dfrd.reject();
					}
					if (fm.options.validName && fm.options.validName.test) {
						try {
							valid = fm.options.validName.test(name);
						} catch(e) {
							valid = false;
						}
					}
					if (name === '.' || name === '..' || !valid) {
						inError = true;
						fm.error(file.mime === 'directory'? 'errInvDirname' : 'errInvName', {modal: true, close: function(){setTimeout(select, 120);}});
						return false;
					}
					if (cnt === 1 && fm.fileByName(name, file.phash)) {
						inError = true;
						fm.error(['errExists', name], {modal: true, close: function(){setTimeout(select, 120);}});
						return false;
					}
					
					if (cnt === 1) {
						req();
					} else {
						fm.confirm({
							title : 'cmdrename',
							text  : ['renameMultiple', cnt, getHint(name, [file.hash].concat(sel))],
							accept : {
								label : 'btnYes',
								callback : req
							},
							cancel : {
								label : 'btnCancel',
								callback : function() {
									setTimeout(function() {
										inError = true;
										select();
									}, 120);
								}
							}
						});
						setTimeout(function() {
							fm.trigger('unselectfiles', {files: fm.selected()})
								.trigger('selectfiles', {files : [file.hash].concat(sel)});
						}, 120);
					}
				}
			},
			input = jQuery(tarea? '<textarea/>' : '<input type="text"/>')
				.on('keyup text', function(){
					if (tarea) {
						this.style.height = '1px';
						this.style.height = this.scrollHeight + 'px';
					} else if (colwidth) {
						this.style.width = colwidth + 'px';
						if (this.scrollWidth > colwidth) {
							this.style.width = this.scrollWidth + 10 + 'px';
						}
					}
				})
				.on('keydown', function(e) {
					e.stopImmediatePropagation();
					if (e.keyCode == jQuery.ui.keyCode.ESCAPE) {
						dfrd.reject();
					} else if (e.keyCode == jQuery.ui.keyCode.ENTER) {
						e.preventDefault();
						input.trigger('blur');
					}
				})
				.on('mousedown click dblclick', function(e) {
					e.stopPropagation();
					if (e.type === 'dblclick') {
						e.preventDefault();
					}
				})
				.on('blur', blur)
				.on('dragenter dragleave dragover drop', function(e) {
					// stop bubbling to prevent upload with native drop event
					e.stopPropagation();
				}),
			select = function() {
				var name = fm.splitFileExtention(input.val())[0];
				if (!inError && fm.UA.Mobile && !fm.UA.iOS) { // since iOS has a bug? (z-index not effect) so disable it
					overlay.on('click close', cancel).elfinderoverlay('show');
					pnode.css('z-index', overlay.css('z-index') + 1);
				}
				! fm.enabled() && fm.enable();
				if (inError) {
					inError = false;
					input.on('blur', blur);
				}
				input.trigger('focus').trigger('select');
				input[0].setSelectionRange && input[0].setSelectionRange(0, name.length);
			},
			node = navbar? target.contents().filter(function(){ return this.nodeType==3 && jQuery(this).parent().attr('id') === fm.navHash2Id(file.hash); })
					: target.find(filename),
			pnode = node.parent(),
			overlay = fm.getUI('overlay'),
			cancel = function(e) { 
				if (!overlay.is(':hidden')) {
					pnode.css('z-index', '');
				}
				if (! inError) {
					dfrd.reject();
					if (e) {
						e.stopPropagation();
						e.preventDefault();
					}
				}
			},
			resize = function() {
				target.trigger('scrolltoview', {blink : false});
			},
			inError = false;
		
		pnode.addClass('ui-front')
			.css('position', 'relative')
			.on('unselect.'+fm.namespace, unselect);
		fm.bind('resize', resize);
		if (navbar) {
			node.replaceWith(input.val(file.name));
		} else {
			if (tarea) {
				node.css('max-height', 'none');
			} else if (!navbar) {
				colwidth = pnode.width();
				pnode.width(colwidth - 15)
					.parent('td').css('overflow', 'visible');
			}
			node.empty().append(input.val(file.name));
		}
		
		if (cnt > 1 && fm.api <= 2.1030) {
			return dfrd.reject();
		}
		
		if (!file || !node.length) {
			return dfrd.reject('errCmdParams', this.title);
		}
		
		if (file.locked && !fm.isRoot(file)) {
			return dfrd.reject(['errLocked', file.name]);
		}
		
		fm.one('select', function() {
			input.parent().length && file && jQuery.inArray(file.hash, fm.selected()) === -1 && input.trigger('blur');
		});
		
		input.trigger('keyup');
		
		select();
		
		return dfrd;
	};

	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(),
			file;
		if (sel && sel.length === 1 && (file = fm.file(sel[0])) && fm.isRoot(file)) {
			self.title = fm.i18n('kindAlias') + ' (' + fm.i18n('preference') + ')';
		} else {
			self.title = fm.i18n('cmdrename');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(void(0), self.title);
		} else {
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	}).remove(function(e) {
		var rootNames;
		if (e.data && e.data.removed && (rootNames = fm.storage('rootNames'))) {
			jQuery.each(e.data.removed, function(i, h) {
				if (rootNames[h]) {
					delete rootNames[h];
				}
			});
			fm.storage('rootNames', rootNames);
		}
	});
};


/*
 * File: /js/commands/resize.js
 */

/**
 * @class  elFinder command "resize"
 * Open dialog to resize image
 *
 * @author Dmitry (dio) Levashov
 * @author Alexey Sukhotin
 * @author Naoki Sawada
 * @author Sergio Jovani
 **/
elFinder.prototype.commands.resize = function() {
	"use strict";
	var losslessRotate = 0,
		getBounceBox = function(w, h, theta) {
			var srcPts = [
					{x: w/2, y: h/2},
					{x: -w/2, y: h/2},
					{x: -w/2, y: -h/2},
					{x: w/2, y: -h/2}
				],
				dstPts = [],
				min = {x: Number.MAX_VALUE, y: Number.MAX_VALUE},
				max = {x: Number.MIN_VALUE, y: Number.MIN_VALUE};
			jQuery.each(srcPts, function(i, srcPt){
				dstPts.push({
					x: srcPt.x * Math.cos(theta) - srcPt.y * Math.sin(theta),
					y: srcPt.x * Math.sin(theta) + srcPt.y * Math.cos(theta)
				});
			});
			jQuery.each(dstPts, function(i, pt) {
				min.x = Math.min(min.x, pt.x);
				min.y = Math.min(min.y, pt.y);
				max.x = Math.max(max.x, pt.x);
				max.y = Math.max(max.y, pt.y);
			});
			return {
				width: max.x - min.x, height: max.y - min.y
			};
		};
	
	this.updateOnSelect = false;
	
	this.getstate = function() {
		var sel = this.fm.selectedFiles();
		return sel.length == 1 && sel[0].read && sel[0].write && sel[0].mime.indexOf('image/') !== -1 ? 0 : -1;
	};
	
	this.resizeRequest = function(data, f, dfrd) {
		var fm   = this.fm,
			file = f || fm.file(data.target),
			tmb  = file? file.tmb : null,
			enabled = fm.isCommandEnabled('resize', data.target);
		
		if (enabled && (! file || (file && file.read && file.write && file.mime.indexOf('image/') !== -1 ))) {
			return fm.request({
				data : Object.assign(data, {
					cmd : 'resize'
				}),
				notify : {type : 'resize', cnt : 1}
			})
			.fail(function(error) {
				if (dfrd) {
					dfrd.reject(error);
				}
			})
			.done(function() {
				if (data.quality) {
					fm.storage('jpgQuality', data.quality === fm.option('jpgQuality')? null : data.quality);
				}
				dfrd && dfrd.resolve();
			});
		} else {
			var error;
			
			if (file) {
				if (file.mime.indexOf('image/') === -1) {
					error = ['errResize', file.name, 'errUsupportType'];
				} else {
					error = ['errResize', file.name, 'errPerm'];
				}
			} else {
				error = ['errResize', data.target, 'errPerm'];
			}
			
			if (dfrd) {
				dfrd.reject(error);
			} else {
				fm.error(error);
			}
			return jQuery.Deferred().reject(error);
		}
	};
	
	this.exec = function(hashes) {
		var self  = this,
			fm    = this.fm,
			files = this.files(hashes),
			dfrd  = jQuery.Deferred(),
			api2  = (fm.api > 1),
			options = this.options,
			dialogWidth = 650,
			fmnode = fm.getUI(),
			ctrgrup = jQuery().controlgroup? 'controlgroup' : 'buttonset',
			grid8Def = typeof options.grid8px === 'undefined' || options.grid8px !== 'disable'? true : false,
			presetSize = Array.isArray(options.presetSize)? options.presetSize : [],
			clactive = 'elfinder-dialog-active',
			clsediting = fm.res('class', 'editing'),
			open = function(file, id) {
				var isJpeg   = (file.mime === 'image/jpeg'),
					dialog   = jQuery('<div class="elfinder-resize-container"/>'),
					input    = '<input type="number" class="ui-corner-all"/>',
					row      = '<div class="elfinder-resize-row"/>',
					label    = '<div class="elfinder-resize-label"/>',
					changeTm = null,
					operate  = false,
					opStart  = function() { operate = true; },
					opStop   = function() {
						if (operate) {
							operate = false;
							control.trigger('change');
						}
					},
					control  = jQuery('<div class="elfinder-resize-control"/>')
						.on('focus', 'input[type=text],input[type=number]', function() {
							jQuery(this).trigger('select');
						})
						.on('change', function() {
							changeTm && cancelAnimationFrame(changeTm);
							changeTm = requestAnimationFrame(function() {
								var panel, quty, canvas, ctx, img, sx, sy, sw, sh, deg, theta, bb;
								if (sizeImg && ! operate && (canvas = sizeImg.data('canvas'))) {
									panel = control.children('div.elfinder-resize-control-panel:visible');
									quty = panel.find('input.elfinder-resize-quality');
									if (quty.is(':visible')) {
										ctx = sizeImg.data('ctx');
										img = sizeImg.get(0);
										if (panel.hasClass('elfinder-resize-uiresize')) {
											// resize
											sw = canvas.width = width.val();
											sh = canvas.height = height.val();
											ctx.drawImage(img, 0, 0, sw, sh);
										} else if (panel.hasClass('elfinder-resize-uicrop')) {
											// crop
											sx = pointX.val();
											sy = pointY.val();
											sw = offsetX.val();
											sh = offsetY.val();
											canvas.width = sw;
											canvas.height = sh;
											ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh);
										} else {
											// rotate
											deg = degree.val();
											theta = (degree.val() * Math.PI) / 180;
											bb = getBounceBox(owidth, oheight, theta);
											sw = canvas.width = bb.width;
											sh = canvas.height = bb.height;
											ctx.save();
											if (deg % 90 !== 0) {
												ctx.fillStyle = bg.val() || '#FFF';
												ctx.fillRect(0, 0, sw, sh);
											}
											ctx.translate(sw / 2, sh / 2);
											ctx.rotate(theta);
											ctx.drawImage(img, -img.width/2, -img.height/2, owidth, oheight);
											ctx.restore();
										}
										canvas.toBlob(function(blob) {
											blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')');
										}, 'image/jpeg', Math.max(Math.min(quty.val(), 100), 1) / 100);
									}
								}
							});
						})
						.on('mouseup', 'input', function(e) {
							jQuery(e.target).trigger('change');
						}),
					preview  = jQuery('<div class="elfinder-resize-preview"/>')
						.on('touchmove', function(e) {
							if (jQuery(e.target).hasClass('touch-punch')) {
								e.stopPropagation();
								e.preventDefault();
							}
						}),
					spinner  = jQuery('<div class="elfinder-resize-loading">'+fm.i18n('ntfloadimg')+'</div>'),
					rhandle  = jQuery('<div class="elfinder-resize-handle touch-punch"/>'),
					rhandlec = jQuery('<div class="elfinder-resize-handle touch-punch"/>'),
					uiresize = jQuery('<div class="elfinder-resize-uiresize elfinder-resize-control-panel"/>'),
					uicrop   = jQuery('<div class="elfinder-resize-uicrop elfinder-resize-control-panel"/>'),
					uirotate = jQuery('<div class="elfinder-resize-rotate elfinder-resize-control-panel"/>'),
					uideg270 = jQuery('<button/>').attr('title',fm.i18n('rotate-cw')).append(jQuery('<span class="elfinder-button-icon elfinder-button-icon-rotate-l"/>')),
					uideg90  = jQuery('<button/>').attr('title',fm.i18n('rotate-ccw')).append(jQuery('<span class="elfinder-button-icon elfinder-button-icon-rotate-r"/>')),
					uiprop   = jQuery('<span />'),
					reset    = jQuery('<button class="elfinder-resize-reset">').text(fm.i18n('reset'))
						.on('click', function() {
							resetView();
						})
						.button({
							icons: {
								primary: 'ui-icon-arrowrefresh-1-n'
							},
							text: false
						}),
					uitype   = jQuery('<div class="elfinder-resize-type"/>')
						.append('<input type="radio" name="type" id="'+id+'-resize" value="resize" checked="checked" /><label for="'+id+'-resize">'+fm.i18n('resize')+'</label>',
						'<input class="api2" type="radio" name="type" id="'+id+'-crop" value="crop" /><label class="api2" for="'+id+'-crop">'+fm.i18n('crop')+'</label>',
						'<input class="api2" type="radio" name="type" id="'+id+'-rotate" value="rotate" /><label class="api2" for="'+id+'-rotate">'+fm.i18n('rotate')+'</label>'),
					mode     = 'resize',
					type     = uitype[ctrgrup]()[ctrgrup]('disable').find('input')
						.on('change', function() {
							mode = jQuery(this).val();
							
							resetView();
							resizable(true);
							croppable(true);
							rotateable(true);
							
							if (mode == 'resize') {
								uiresize.show();
								uirotate.hide();
								uicrop.hide();
								resizable();
								isJpeg && grid8px.insertAfter(uiresize.find('.elfinder-resize-grid8'));
							}
							else if (mode == 'crop') {
								uirotate.hide();
								uiresize.hide();
								uicrop.show();
								croppable();
								isJpeg && grid8px.insertAfter(uicrop.find('.elfinder-resize-grid8'));
							} else if (mode == 'rotate') {
								uiresize.hide();
								uicrop.hide();
								uirotate.show();
								rotateable();
							}
						}),
					width   = jQuery(input)
						.on('change', function() {
							var w = round(parseInt(width.val())),
								h = round(cratio ? w/ratio : parseInt(height.val()));

							if (w > 0 && h > 0) {
								resize.updateView(w, h);
								width.val(w);
								height.val(h);
							}
						}).addClass('elfinder-focus'),
					height  = jQuery(input)
						.on('change', function() {
							var h = round(parseInt(height.val())),
								w = round(cratio ? h*ratio : parseInt(width.val()));

							if (w > 0 && h > 0) {
								resize.updateView(w, h);
								width.val(w);
								height.val(h);
							}
						}),
					pointX  = jQuery(input).on('change', function(){crop.updateView();}),
					pointY  = jQuery(input).on('change', function(){crop.updateView();}),
					offsetX = jQuery(input).on('change', function(){crop.updateView('w');}),
					offsetY = jQuery(input).on('change', function(){crop.updateView('h');}),
					quality = isJpeg && api2?
						jQuery(input).val(fm.storage('jpgQuality') > 0? fm.storage('jpgQuality') : fm.option('jpgQuality'))
							.addClass('elfinder-resize-quality')
							.attr('min', '1').attr('max', '100').attr('title', '1 - 100')
							.on('blur', function(){
								var q = Math.min(100, Math.max(1, parseInt(this.value)));
								control.find('input.elfinder-resize-quality').val(q);
							})
						: null,
					degree = jQuery('<input type="number" class="ui-corner-all" maxlength="3" value="0" />')
						.on('change', function() {
							rotate.update();
						}),
					uidegslider = jQuery('<div class="elfinder-resize-rotate-slider touch-punch"/>')
						.slider({
							min: 0,
							max: 360,
							value: degree.val(),
							animate: true,
							start: opStart,
							stop: opStop,
							change: function(event, ui) {
								if (ui.value != uidegslider.slider('value')) {
									rotate.update(ui.value);
								}
							},
							slide: function(event, ui) {
								rotate.update(ui.value, false);
							}
						}).find('.ui-slider-handle')
							.addClass('elfinder-tabstop')
							.off('keydown')
							.on('keydown', function(e) {
								if (e.keyCode == jQuery.ui.keyCode.LEFT || e.keyCode == jQuery.ui.keyCode.RIGHT) {
									e.stopPropagation();
									e.preventDefault();
									rotate.update(Number(degree.val()) + (e.keyCode == jQuery.ui.keyCode.RIGHT? 1 : -1), false);
								}
							})
						.end(),
					pickimg,
					pickcanv,
					pickctx,
					pickc = {},
					pick = function(e) {
						var color, r, g, b, h, s, l;

						try {
							color = pickc[Math.round(e.offsetX)][Math.round(e.offsetY)];
						} catch(e) {}
						if (!color) return;

						r = color[0]; g = color[1]; b = color[2];
						h = color[3]; s = color[4]; l = color[5];

						setbg(r, g, b, (e.type === 'click'));
					},
					palpick = function(e) {
						setbg(jQuery(this).css('backgroundColor'), '', '', (e.type === 'click'));
					},
					setbg = function(r, g, b, off) {
						var s, m, cc;
						if (typeof r === 'string') {
							g = '';
							if (r && (s = jQuery('<span>').css('backgroundColor', r).css('backgroundColor')) && (m = s.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i))) {
								r = Number(m[1]);
								g = Number(m[2]);
								b = Number(m[3]);
							}
						}
						cc = (g === '')? r : '#' + getColorCode(r, g, b);
						bg.val(cc).css({ backgroundColor: cc, backgroundImage: 'none', color: (r+g+b < 384? '#fff' : '#000') });
						preview.css('backgroundColor', cc);
						if (off) {
							imgr.off('.picker').removeClass('elfinder-resize-picking');
							pallet.off('.picker').removeClass('elfinder-resize-picking');
						}
					},
					getColorCode = function(r, g, b) {
						return jQuery.map([r,g,b], function(c){return ('0'+parseInt(c).toString(16)).slice(-2);}).join('');
					},
					picker = jQuery('<button>').text(fm.i18n('colorPicker'))
					.on('click', function() { 
						imgr.on('mousemove.picker click.picker', pick).addClass('elfinder-resize-picking');
						pallet.on('mousemove.picker click.picker', 'span', palpick).addClass('elfinder-resize-picking');
					})
					.button({
						icons: {
							primary: 'ui-icon-pin-s'
						},
						text: false
					}),
					reseter = jQuery('<button>').text(fm.i18n('reset'))
						.on('click', function() { 
							setbg('', '', '', true);
						})
						.button({
							icons: {
								primary: 'ui-icon-arrowrefresh-1-n'
							},
							text: false
						}),
					bg = jQuery('<input class="ui-corner-all elfinder-resize-bg" type="text">')
						.on('focus', function() {
							jQuery(this).attr('style', '');
						})
						.on('blur', function() {
							setbg(jQuery(this).val());
						}),
					pallet  = jQuery('<div class="elfinder-resize-pallet">').on('click', 'span', function() {
						setbg(jQuery(this).css('backgroundColor'));
					}),
					ratio   = 1,
					prop    = 1,
					owidth  = 0,
					oheight = 0,
					cratio  = true,
					cratioc = false,
					pwidth  = 0,
					pheight = 0,
					rwidth  = 0,
					rheight = 0,
					rdegree = 0,
					grid8   = isJpeg? grid8Def : false,
					constr  = jQuery('<button>').html(fm.i18n('aspectRatio'))
						.on('click', function() {
							cratio = ! cratio;
							constr.button('option', {
								icons : { primary: cratio? 'ui-icon-locked' : 'ui-icon-unlocked'}
							});
							resize.fixHeight();
							rhandle.resizable('option', 'aspectRatio', cratio).data('uiResizable')._aspectRatio = cratio;
						})
						.button({
							icons : {
								primary: cratio? 'ui-icon-locked' : 'ui-icon-unlocked'
							},
							text: false
						}),
					constrc = jQuery('<button>').html(fm.i18n('aspectRatio'))
						.on('click', function() {
							cratioc = ! cratioc;
							constrc.button('option', {
								icons : { primary: cratioc? 'ui-icon-locked' : 'ui-icon-unlocked'}
							});
							rhandlec.resizable('option', 'aspectRatio', cratioc).data('uiResizable')._aspectRatio = cratioc;
						})
						.button({
							icons : {
								primary: cratioc? 'ui-icon-locked' : 'ui-icon-unlocked'
							},
							text: false
						}),
					grid8px = jQuery('<button>').html(fm.i18n(grid8? 'enabled' : 'disabled')).toggleClass('ui-state-active', grid8)
						.on('click', function() {
							grid8 = ! grid8;
							grid8px.html(fm.i18n(grid8? 'enabled' : 'disabled')).toggleClass('ui-state-active', grid8);
							setStep8();
						})
						.button(),
					setStep8 = function() {
						var step = grid8? 8 : 1;
						jQuery.each([width, height, offsetX, offsetY, pointX, pointY], function() {
							this.attr('step', step);
						});
						if (grid8) {
							width.val(round(width.val()));
							height.val(round(height.val()));
							offsetX.val(round(offsetX.val()));
							offsetY.val(round(offsetY.val()));
							pointX.val(round(pointX.val()));
							pointY.val(round(pointY.val()));
							if (uiresize.is(':visible')) {
								resize.updateView(width.val(), height.val());
							} else if (uicrop.is(':visible')) {
								crop.updateView();
							}
						}
					},
					setuprimg = function() {
						var r_scale,
							fail = function() {
								bg.parent().hide();
								pallet.hide();
							};
						r_scale = Math.min(pwidth, pheight) / Math.sqrt(Math.pow(owidth, 2) + Math.pow(oheight, 2));
						rwidth = Math.ceil(owidth * r_scale);
						rheight = Math.ceil(oheight * r_scale);
						imgr.width(rwidth)
							.height(rheight)
							.css('margin-top', (pheight-rheight)/2 + 'px')
							.css('margin-left', (pwidth-rwidth)/2 + 'px');
						if (imgr.is(':visible') && bg.is(':visible')) {
							if (file.mime !== 'image/png') {
								preview.css('backgroundColor', bg.val());
								pickimg = jQuery('<img>');
								if (fm.isCORS) {
									pickimg.attr('crossorigin', 'use-credentials');
								}
								pickimg.on('load', function() {
									if (pickcanv && pickcanv.width !== rwidth) {
										setColorData();
									}
								})
								.on('error', fail)
								.attr('src', canvSrc);
							} else {
								fail();
							}
						}
					},
					setupimg = function() {
						resize.updateView(owidth, oheight);
						setuprimg();
						basec
							.width(img.width())
							.height(img.height());
						imgc
							.width(img.width())
							.height(img.height());
						crop.updateView();
						jpgCalc();
					},
					setColorData = function() {
						if (pickctx) {
							var n, w, h, r, g, b, a, s, l, hsl, hue,
								data, scale, tx1, tx2, ty1, ty2, rgb,
								domi = {},
								domic = [],
								domiv, palc,
								rgbToHsl = function (r, g, b) {
									var h, s, l,
										max = Math.max(Math.max(r, g), b),
										min = Math.min(Math.min(r, g), b);
		
									// Hue, 0 ~ 359
									if (max === min) {
										h = 0;
									} else if (r === max) {
										h = ((g - b) / (max - min) * 60 + 360) % 360;
									} else if (g === max) {
										h = (b - r) / (max - min) * 60 + 120;
									} else if (b === max) {
										h = (r - g) / (max - min) * 60 + 240;
									}
									// Saturation, 0 ~ 1
									s = (max - min) / max;
									// Lightness, 0 ~ 1
									l = (r *  0.3 + g * 0.59 + b * 0.11) / 255;
		
									return [h, s, l, 'hsl'];
								},
								rgbRound = function(c) {
									return Math.round(c / 8) * 8;
								};
							
							calc:
							try {
								w = pickcanv.width = imgr.width();
								h = pickcanv.height = imgr.height();
								scale = w / owidth;
								pickctx.scale(scale, scale);
								pickctx.drawImage(pickimg.get(0), 0, 0);
			
								data = pickctx.getImageData(0, 0, w, h).data;
			
								// Range to detect the dominant color
								tx1 = w * 0.1;
								tx2 = w * 0.9;
								ty1 = h * 0.1;
								ty2 = h * 0.9;
			
								for (var y = 0; y < h - 1; y++) {
									for (var x = 0; x < w - 1; x++) {
										n = x * 4 + y * w * 4;
										// RGB
										r = data[n]; g = data[n + 1]; b = data[n + 2]; a = data[n + 3];
										// check alpha ch
										if (a !== 255) {
											bg.parent().hide();
											pallet.hide();
											break calc;
										}
										// HSL
										hsl = rgbToHsl(r, g, b);
										hue = Math.round(hsl[0]); s = Math.round(hsl[1] * 100); l = Math.round(hsl[2] * 100);
										if (! pickc[x]) {
											pickc[x] = {};
										}
										// set pickc
										pickc[x][y] = [r, g, b, hue, s, l];
										// detect the dominant color
										if ((x < tx1 || x > tx2) && (y < ty1 || y > ty2)) {
											rgb = rgbRound(r) + ',' + rgbRound(g) + ',' + rgbRound(b);
											if (! domi[rgb]) {
												domi[rgb] = 1;
											} else {
												++domi[rgb];
											}
										}
									}
								}
								
								if (! pallet.children(':first').length) {
									palc = 1;
									jQuery.each(domi, function(c, v) {
										domic.push({c: c, v: v});
									});
									jQuery.each(domic.sort(function(a, b) {
										return (a.v > b.v)? -1 : 1;
									}), function() {
										if (this.v < 2 || palc > 10) {
											return false;
										}
										pallet.append(jQuery('<span style="width:20px;height:20px;display:inline-block;background-color:rgb('+this.c+');">'));
										++palc;
									});
								}
							} catch(e) {
								picker.hide();
								pallet.hide();
							}
						}
					},
					setupPicker = function() {
						try {
							pickcanv = document.createElement('canvas');
							pickctx = pickcanv.getContext('2d');
						} catch(e) {
							picker.hide();
							pallet.hide();
						}
					},
					setupPreset = function() {
						preset.on('click', 'span.elfinder-resize-preset', function() {
							var btn = jQuery(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1],
								r = owidth / oheight;
							btn.data('s', [h, w]).text(h + 'x' + w);
							if (owidth > w || oheight > h) {
								if (owidth <= w) {
									w = round(h * r);
								} else if (oheight <= h) {
									h = round(w / r);
								} else {
									if (owidth - w > oheight - h) {
										h = round(w / r);
									} else {
										w = round(h * r);
									}
								}
							} else {
								w = owidth;
								h = oheight;
							}
							width.val(w);
							height.val(h);
							resize.updateView(w, h);
							jpgCalc();
						});
						presetc.on('click', 'span.elfinder-resize-preset', function() {
							var btn = jQuery(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1],
								x = pointX.val(),
								y = pointY.val();
							
							btn.data('s', [h, w]).text(h + 'x' + w);
							if (owidth >= w && oheight >= h) {
								if (owidth - w - x < 0) {
									x = owidth - w;
								}
								if (oheight - h - y < 0) {
									y = oheight - h;
								}
								pointX.val(x);
								pointY.val(y);
								offsetX.val(w);
								offsetY.val(h);
								crop.updateView();
								jpgCalc();
							}
						});
						presetc.children('span.elfinder-resize-preset').each(function() {
							var btn = jQuery(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1];
							
							btn[(owidth >= w && oheight >= h)? 'show' : 'hide']();
						});
					},
					dimreq  = null,
					inited  = false,
					setdim  = function(dim) {
						var rfile = fm.file(file.hash);
						rfile.width = dim[0];
						rfile.height = dim[1];
					},
					init    = function() {
						var elm, memSize, r_scale, imgRatio;
						
						if (inited) {
							return;
						}
						inited = true;
						dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject();
						
						// check lossless rotete
						if (fm.api >= 2.1030) {
							if (losslessRotate === 0) {
								fm.request({
									data: {
										cmd    : 'resize',
										target : file.hash,
										degree : 0,
										mode   : 'rotate'
									},
									preventDefault : true
								}).done(function(data) {
									losslessRotate = data.losslessRotate? 1 : -1;
									if (losslessRotate === 1 && (degree.val() % 90 === 0)) {
										uirotate.children('div.elfinder-resize-quality').hide();
									}
								}).fail(function() {
									losslessRotate = -1;
								});
							}
						} else {
							losslessRotate = -1;
						}
						
						elm = img.get(0);
						memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()});
					
						memSize && img.removeAttr('width').removeAttr('height');
						
						owidth  = file.width || elm.naturalWidth || elm.width || img.width();
						oheight = file.height || elm.naturalHeight || elm.height || img.height();
						if (!file.width || !file.height) {
							setdim([owidth, oheight]);
						}
						
						memSize && img.width(memSize.w).height(memSize.h);
						
						dMinBtn.show();
	
						imgRatio = oheight / owidth;
						
						if (imgRatio < 1 && preview.height() > preview.width() * imgRatio) {
							preview.height(preview.width() * imgRatio);
						}
						
						if (preview.height() > img.height() + 20) {
							preview.height(img.height() + 20);
						}
						
						pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
						
						spinner.remove();
						
						ratio = owidth/oheight;
	
						rhandle.append(img.show()).show();
						width.val(owidth);
						height.val(oheight);
	
						setupPicker();
						setupPreset();
						setupimg();
						
						uitype[ctrgrup]('enable');
						control.find('input,select').prop('disabled', false)
							.filter(':text').on('keydown', function(e) {
								var cOpts;
								if (e.keyCode == jQuery.ui.keyCode.ENTER) {
									e.stopPropagation();
									e.preventDefault();
									cOpts = {
										title  : jQuery('input:checked', uitype).val(),
										text   : 'confirmReq',
										accept : {
											label    : 'btnApply',
											callback : function() {  
												save();
											}
										},
										cancel : {
											label    : 'btnCancel',
											callback : function(){
												jQuery(this).trigger('focus');
											}
										}
									};
										
									if (useSaveAs) {
										cOpts['buttons'] = [{
											label    : 'btnSaveAs',
											callback : function() {
												requestAnimationFrame(saveAs);
											}
										}];
									}
									fm.confirm(cOpts);
									return;
								}
							})
							.on('keyup', function() {
								var $this = jQuery(this);
								if (! $this.hasClass('elfinder-resize-bg')) {
									requestAnimationFrame(function() {
										$this.val($this.val().replace(/[^0-9]/g, ''));
									});
								}
							})
							.filter(':first');
						
						setStep8();
						!fm.UA.Mobile && width.trigger('focus');
						resizable();
					},
					img     = jQuery('<img/>')
						.on('load', init)
						.on('error', function() {
							spinner.text('Unable to load image').css('background', 'transparent');
						}),
					basec = jQuery('<div/>'),
					imgc = jQuery('<img/>'),
					coverc = jQuery('<div/>'),
					imgr = jQuery('<img class="elfinder-resize-imgrotate" />'),
					round = function(v, max) {
						v = grid8? Math.round(v/8)*8 : Math.round(v);
						v = Math.max(0, v);
						if (max && v > max) {
							v = grid8? Math.floor(max/8)*8 : max;
						}
						return v;
					},
					resetView = function() {
						width.val(owidth);
						height.val(oheight);
						resize.updateView(owidth, oheight);
						pointX.val(0);
						pointY.val(0);
						offsetX.val(owidth);
						offsetY.val(oheight);
						crop.updateView();
						jpgCalc();
					},
					resize = {
						update : function() {
							width.val(round(img.width()/prop));
							height.val(round(img.height()/prop));
							jpgCalc();
						},
						
						updateView : function(w, h) {
							if (w > pwidth || h > pheight) {
								if (w / pwidth > h / pheight) {
									prop = pwidth / w;
									img.width(pwidth).height(round(h*prop));
								} else {
									prop = pheight / h;
									img.height(pheight).width(round(w*prop));
								}
							} else {
								img.width(round(w)).height(round(h));
							}
							
							prop = img.width()/w;
							uiprop.text('1 : '+(1/prop).toFixed(2));
							resize.updateHandle();
						},
						
						updateHandle : function() {
							rhandle.width(img.width()).height(img.height());
						},
						fixHeight : function() {
							var w, h;
							if (cratio) {
								w = width.val();
								h = round(w/ratio);
								resize.updateView(w, h);
								height.val(h);
							}
						}
					},
					crop = {
						update : function(change) {
							pointX.val(round(((rhandlec.data('x')||rhandlec.position().left))/prop, owidth));
							pointY.val(round(((rhandlec.data('y')||rhandlec.position().top))/prop, oheight));
							if (change !== 'xy') {
								offsetX.val(round((rhandlec.data('w')||rhandlec.width())/prop, owidth - pointX.val()));
								offsetY.val(round((rhandlec.data('h')||rhandlec.height())/prop, oheight - pointY.val()));
							}
							jpgCalc();
						},
						updateView : function(change) {
							var r, x, y, w, h;
							
							pointX.val(round(pointX.val(), owidth - (grid8? 8 : 1)));
							pointY.val(round(pointY.val(), oheight - (grid8? 8 : 1)));
							offsetX.val(round(offsetX.val(), owidth - pointX.val()));
							offsetY.val(round(offsetY.val(), oheight - pointY.val()));
							
							if (cratioc) {
								r = coverc.width() / coverc.height();
								if (change === 'w') {
									offsetY.val(round(parseInt(offsetX.val()) / r));
								} else if (change === 'h') {
									offsetX.val(round(parseInt(offsetY.val()) * r));
								}
							}
							x = Math.round(parseInt(pointX.val()) * prop);
							y = Math.round(parseInt(pointY.val()) * prop);
							if (change !== 'xy') {
								w = Math.round(parseInt(offsetX.val()) * prop);
								h = Math.round(parseInt(offsetY.val()) * prop);
							} else {
								w = rhandlec.data('w');
								h = rhandlec.data('h');
							}
							rhandlec.data({x: x, y: y, w: w, h: h})
								.width(w)
								.height(h)
								.css({left: x, top: y});
							coverc.width(w)
								.height(h);
						},
						resize_update : function(e, ui) {
							rhandlec.data({x: ui.position.left, y: ui.position.top, w: ui.size.width, h: ui.size.height});
							crop.update();
							crop.updateView();
						},
						drag_update : function(e, ui) {
							rhandlec.data({x: ui.position.left, y: ui.position.top});
							crop.update('xy');
						}
					},
					rotate = {
						mouseStartAngle : 0,
						imageStartAngle : 0,
						imageBeingRotated : false,
						
						setQuality : function() {
							uirotate.children('div.elfinder-resize-quality')[(losslessRotate > 0 && (degree.val() % 90) === 0)? 'hide' : 'show']();
						},
						
						update : function(value, animate) {
							if (typeof value == 'undefined') {
								rdegree = value = parseInt(degree.val());
							}
							if (typeof animate == 'undefined') {
								animate = true;
							}
							if (! animate || fm.UA.Opera || fm.UA.ltIE8) {
								imgr.rotate(value);
							} else {
								imgr.animate({rotate: value + 'deg'});
							}
							value = value % 360;
							if (value < 0) {
								value += 360;
							}
							degree.val(parseInt(value));

							uidegslider.slider('value', degree.val());
							
							rotate.setQuality();
						},
						
						execute : function ( e ) {
							
							if ( !rotate.imageBeingRotated ) return;
							
							var imageCentre = rotate.getCenter( imgr );
							var ev = e.originalEvent.touches? e.originalEvent.touches[0] : e;
							var mouseXFromCentre = ev.pageX - imageCentre[0];
							var mouseYFromCentre = ev.pageY - imageCentre[1];
							var mouseAngle = Math.atan2( mouseYFromCentre, mouseXFromCentre );
							
							var rotateAngle = mouseAngle - rotate.mouseStartAngle + rotate.imageStartAngle;
							rotateAngle = Math.round(parseFloat(rotateAngle) * 180 / Math.PI);
							
							if ( e.shiftKey ) {
								rotateAngle = Math.round((rotateAngle + 6)/15) * 15;
							}
							
							imgr.rotate(rotateAngle);
							
							rotateAngle = rotateAngle % 360;
							if (rotateAngle < 0) {
								rotateAngle += 360;
							}
							degree.val(rotateAngle);

							uidegslider.slider('value', degree.val());
							
							rotate.setQuality();
							
							return false;
						},
						
						start : function ( e ) {
							if (imgr.hasClass('elfinder-resize-picking')) {
								return;
							}
							
							opStart();
							rotate.imageBeingRotated = true;
							
							var imageCentre = rotate.getCenter( imgr );
							var ev = e.originalEvent.touches? e.originalEvent.touches[0] : e;
							var mouseStartXFromCentre = ev.pageX - imageCentre[0];
							var mouseStartYFromCentre = ev.pageY - imageCentre[1];
							rotate.mouseStartAngle = Math.atan2( mouseStartYFromCentre, mouseStartXFromCentre );
							
							rotate.imageStartAngle = parseFloat(imgr.rotate()) * Math.PI / 180.0;
							
							jQuery(document).on('mousemove', rotate.execute);
							imgr.on('touchmove', rotate.execute);
							
							return false;
						},
							
						stop : function ( e ) {
							
							if ( !rotate.imageBeingRotated ) return;
							
							jQuery(document).off('mousemove', rotate.execute);
							imgr.off('touchmove', rotate.execute);
							
							requestAnimationFrame(function() { rotate.imageBeingRotated = false; });
							opStop();
							
							return false;
						},
						
						getCenter : function ( image ) {
							
							var currentRotation = imgr.rotate();
							imgr.rotate(0);
							
							var imageOffset = imgr.offset();
							var imageCentreX = imageOffset.left + imgr.width() / 2;
							var imageCentreY = imageOffset.top + imgr.height() / 2;
							
							imgr.rotate(currentRotation);
							
							return Array( imageCentreX, imageCentreY );
						}
					},
					resizable = function(destroy) {
						if (destroy) {
							rhandle.filter(':ui-resizable').resizable('destroy');
							rhandle.hide();
						}
						else {
							rhandle.show();
							rhandle.resizable({
								alsoResize  : img,
								aspectRatio : cratio,
								resize      : resize.update,
								start       : opStart,
								stop        : function(e) {
									resize.fixHeight;
									resize.updateView(width.val(), height.val());
									opStop();
								}
							});
							dinit();
						}
					},
					croppable = function(destroy) {
						if (destroy) {
							rhandlec.filter(':ui-resizable').resizable('destroy')
								.filter(':ui-draggable').draggable('destroy');
							basec.hide();
						}
						else {
							basec.show();
							
							rhandlec
								.resizable({
									containment : basec,
									aspectRatio : cratioc,
									resize      : crop.resize_update,
									start       : opStart,
									stop        : opStop,
									handles     : 'all'
								})
								.draggable({
									handle      : coverc,
									containment : imgc,
									drag        : crop.drag_update,
									start       : opStart,
									stop        : function() {
										crop.updateView('xy');
										opStop();
									}
								});
							
							dinit();
							crop.update();
						}
					},
					rotateable = function(destroy) {
						if (destroy) {
							imgr.hide();
						}
						else {
							imgr.show();
							dinit();
						}
					},
					checkVals = function() {
						var w, h, x, y, d, q, b = '';
						
						if (mode == 'resize') {
							w = parseInt(width.val()) || 0;
							h = parseInt(height.val()) || 0;
						} else if (mode == 'crop') {
							w = parseInt(offsetX.val()) || 0;
							h = parseInt(offsetY.val()) || 0;
							x = parseInt(pointX.val()) || 0;
							y = parseInt(pointY.val()) || 0;
						} else if (mode == 'rotate') {
							w = owidth;
							h = oheight;
							d = parseInt(degree.val()) || 0;
							if (d < 0 || d > 360) {
								fm.error('Invalid rotate degree');
								return false;
							}
							if (d == 0 || d == 360) {
								fm.error('errResizeNoChange');
								return false;
							}
							b = bg.val();
						}
						q = quality? parseInt(quality.val()) : 0;
						
						if (mode != 'rotate') {
							if (w <= 0 || h <= 0) {
								fm.error('Invalid image size');
								return false;
							}
							if (w == owidth && h == oheight) {
								fm.error('errResizeNoChange');
								return false;
							}
						}
						
						return {w: w, h: h, x: x, y: y, d: d, q: q, b: b};
					},
					save = function() {
						var vals;
						
						if (vals = checkVals()) {
							dialog.elfinderdialog('close');
							self.resizeRequest({
								target : file.hash,
								width  : vals.w,
								height : vals.h,
								x      : vals.x,
								y      : vals.y,
								degree : vals.d,
								quality: vals.q,
								bg     : vals.b,
								mode   : mode
							}, file, dfrd);
						}
					},
					saveAs = function() {
						var fail = function() {
								dialogs.addClass(clsediting).fadeIn(function() {
									base.addClass(clactive);
								});
								fm.disable();
							},
							make = function() {
								self.mime = file.mime;
								self.prefix = file.name.replace(/ \d+(\.[^.]+)?$/, '$1');
								self.requestCmd = 'mkfile';
								self.nextAction = {};
								self.data = {target : file.phash};
								jQuery.proxy(fm.res('mixin', 'make'), self)()
									.done(function(data) {
										var hash, dfd;
										if (data.added && data.added.length) {
											hash = data.added[0].hash;
											dfd = fm.api < 2.1032? fm.url(file.hash, { async: true, temporary: true }) : null;
											jQuery.when(dfd).done(function(url) {
												fm.request({
													options : {type : 'post'},
													data : {
														cmd     : 'put',
														target  : hash,
														encoding: dfd? 'scheme' : 'hash', 
														content : dfd? fm.convAbsUrl(url) : file.hash
													},
													notify : {type : 'copy', cnt : 1},
													syncOnFail : true
												})
												.fail(fail)
												.done(function(data) {
													data = fm.normalize(data);
													fm.updateCache(data);
													file = fm.file(hash);
													data.changed && data.changed.length && fm.change(data);
													base.show().find('.elfinder-dialog-title').html(fm.escape(file.name));
													save();
													dialogs.fadeIn();
												});
											}).fail(fail);
										} else {
											fail();
										}
									})
									.fail(fail)
									.always(function() {
										delete self.mime;
										delete self.prefix;
										delete self.nextAction;
										delete self.data;
									});
								fm.trigger('unselectfiles', { files: [ file.hash ] });
							},
							reqOpen = null,
							dialogs;
						
						if (checkVals()) {
							dialogs = fmnode.children('.' + self.dialogClass + ':visible').removeClass(clsediting).fadeOut();
							base.removeClass(clactive);
							fm.enable();
							if (fm.searchStatus.state < 2 && file.phash !== fm.cwd().hash) {
								reqOpen = fm.exec('open', [file.phash], {thash: file.phash});
							}
							
							jQuery.when([reqOpen]).done(function() {
								reqOpen? fm.one('cwdrender', make) : make();
							}).fail(fail);
						}
					},
					buttons = {},
					hline   = 'elfinder-resize-handle-hline',
					vline   = 'elfinder-resize-handle-vline',
					rpoint  = 'elfinder-resize-handle-point',
					src     = fm.openUrl(file.hash),
					canvSrc = fm.openUrl(file.hash, !fm.isSameOrigin(src)),
					sizeImg = quality? jQuery('<img>').attr('crossorigin', fm.isCORS? 'use-credentials' : '').attr('src', canvSrc).on('load', function() {
						try {
							var canv = document.createElement('canvas');
							sizeImg.data('canvas', canv).data('ctx', canv.getContext('2d'));
							jpgCalc();
						} catch(e) {
							sizeImg.removeData('canvas').removeData('ctx');
						}
					}) : null,
					jpgCalc = function() {
						control.find('input.elfinder-resize-quality:visible').trigger('change');
					},
					dinit   = function(e) {
						if (base.hasClass('elfinder-dialog-minimized') || base.is(':hidden')) {
							return;
						}
						
						preset.hide();
						presetc.hide();
						
						var win   = fm.options.dialogContained? fmnode : jQuery(window),
							winH  = win.height(),
							winW  = win.width(),
							presW = 'auto',
							presIn = true,
							dw, ctrW, prvW;
						
						base.width(Math.min(dialogWidth, winW - 30));
						preview.attr('style', '');
						if (owidth && oheight) {
							pwidth  = preview.width()  - (rhandle.outerWidth()  - rhandle.width());
							pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
							resize.updateView(owidth, oheight);
						}
						ctrW  = dialog.find('div.elfinder-resize-control').width();
						prvW  = preview.width();
						
						dw = dialog.width() - 20;
						if (prvW > dw) {
							preview.width(dw);
							presIn = false;
						} else if ((dw - prvW) < ctrW) {
							if (winW > winH) {
								preview.width(dw - ctrW - 20);
							} else {
								preview.css({ float: 'none', marginLeft: 'auto', marginRight: 'auto'});
								presIn = false;
							}
						}
						if (presIn) {
							presW = ctrW;
						}
						pwidth  = preview.width()  - (rhandle.outerWidth()  - rhandle.width());
						if (fmnode.hasClass('elfinder-fullscreen')) {
							if (base.height() > winH) {
								winH -= 2;
								preview.height(winH - base.height() + preview.height());
								base.css('top', 0 - fmnode.offset().top);
							}
						} else {
							winH -= 30;
							(preview.height() > winH) && preview.height(winH);
						}
						pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
						if (owidth && oheight) {
							setupimg();
						}
						if (img.height() && preview.height() > img.height() + 20) {
							preview.height(img.height() + 20);
							pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
							setuprimg();
						}
						
						preset.css('width', presW).show();
						presetc.css('width', presW).show();
						if (!presetc.children('span.elfinder-resize-preset:visible').length) {
							presetc.hide();
						}
					},
					preset = (function() {
						var sets = jQuery('<fieldset class="elfinder-resize-preset-container">').append(jQuery('<legend>').html(fm.i18n('presets'))).hide(),
							hasC;
						jQuery.each(presetSize, function(i, s) {
							if (s.length === 2) {
								hasC = true;
								sets.append(jQuery('<span class="elfinder-resize-preset"/>')
									.data('s', s)
									.text(s[0]+'x'+s[1])
									.button()
								);
							}
						});
						if (!hasC) {
							return jQuery();
						} else {
							return sets;
						}
					})(),
					presetc = preset.clone(true),
					useSaveAs = fm.uploadMimeCheck(file.mime, file.phash),
					dMinBtn, base;
				
				uiresize.append(
					jQuery(row).append(jQuery(label).text(fm.i18n('width')), width),
					jQuery(row).append(jQuery(label).text(fm.i18n('height')), height, jQuery('<div class="elfinder-resize-whctrls">').append(constr, reset)),
					(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality, jQuery('<span/>')) : jQuery()),
					(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8'), grid8px) : jQuery()),
					jQuery(row).append(jQuery(label).text(fm.i18n('scale')), uiprop),
					jQuery(row).append(preset)
				);

				if (api2) {
					uicrop.append(
						jQuery(row).append(jQuery(label).text('X'), pointX),
						jQuery(row).append(jQuery(label).text('Y')).append(pointY),
						jQuery(row).append(jQuery(label).text(fm.i18n('width')), offsetX),
						jQuery(row).append(jQuery(label).text(fm.i18n('height')), offsetY, jQuery('<div class="elfinder-resize-whctrls">').append(constrc, reset.clone(true))),
						(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality.clone(true), jQuery('<span/>')) : jQuery()),
						(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8')) : jQuery()),
						jQuery(row).append(presetc)
					);
					
					uirotate.append(
						jQuery(row).addClass('elfinder-resize-degree').append(
							jQuery(label).text(fm.i18n('rotate')),
							degree,
							jQuery('<span/>').text(fm.i18n('degree')),
							jQuery('<div/>').append(uideg270, uideg90)[ctrgrup]()
						),
						jQuery(row).css('height', '20px').append(uidegslider),
						((quality)? jQuery(row)[losslessRotate < 1? 'show' : 'hide']().addClass('elfinder-resize-quality').append(
							jQuery(label).text(fm.i18n('quality')),
							quality.clone(true),
							jQuery('<span/>')) : jQuery()
						),
						jQuery(row).append(jQuery(label).text(fm.i18n('bgcolor')), bg, picker, reseter),
						jQuery(row).css('height', '20px').append(pallet)
					);
					uideg270.on('click', function() {
						rdegree = rdegree - 90;
						rotate.update(rdegree);
					});
					uideg90.on('click', function(){
						rdegree = rdegree + 90;
						rotate.update(rdegree);
					});
				}
				
				dialog.append(uitype).on('resize', function(e){
					e.stopPropagation();
				});

				if (api2) {
					control.append(/*jQuery(row), */uiresize, uicrop.hide(), uirotate.hide());
				} else {
					control.append(/*jQuery(row), */uiresize);
				}
				
				rhandle.append('<div class="'+hline+' '+hline+'-top"/>',
					'<div class="'+hline+' '+hline+'-bottom"/>',
					'<div class="'+vline+' '+vline+'-left"/>',
					'<div class="'+vline+' '+vline+'-right"/>',
					'<div class="'+rpoint+' '+rpoint+'-e"/>',
					'<div class="'+rpoint+' '+rpoint+'-se"/>',
					'<div class="'+rpoint+' '+rpoint+'-s"/>');
					
				preview.append(spinner).append(rhandle.hide()).append(img.hide());

				if (api2) {
					rhandlec.css('position', 'absolute')
						.append('<div class="'+hline+' '+hline+'-top"/>',
						'<div class="'+hline+' '+hline+'-bottom"/>',
						'<div class="'+vline+' '+vline+'-left"/>',
						'<div class="'+vline+' '+vline+'-right"/>',
						'<div class="'+rpoint+' '+rpoint+'-n"/>',
						'<div class="'+rpoint+' '+rpoint+'-e"/>',
						'<div class="'+rpoint+' '+rpoint+'-s"/>',
						'<div class="'+rpoint+' '+rpoint+'-w"/>',
						'<div class="'+rpoint+' '+rpoint+'-ne"/>',
						'<div class="'+rpoint+' '+rpoint+'-se"/>',
						'<div class="'+rpoint+' '+rpoint+'-sw"/>',
						'<div class="'+rpoint+' '+rpoint+'-nw"/>');

					preview.append(basec.css('position', 'absolute').hide().append(imgc, rhandlec.append(coverc)));
					
					preview.append(imgr.hide());
				}
				
				preview.css('overflow', 'hidden');
				
				dialog.append(preview, control);
				
				buttons[fm.i18n('btnApply')] = save;
				if (useSaveAs) {
					buttons[fm.i18n('btnSaveAs')] = function() { requestAnimationFrame(saveAs); };
				}
				buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
				
				dialog.find('input,button').addClass('elfinder-tabstop');
				
				base = self.fmDialog(dialog, {
					title          : fm.escape(file.name),
					width          : dialogWidth,
					resizable      : false,
					buttons        : buttons,
					open           : function() {
						var substituteImg = (fm.option('substituteImg', file.hash) && file.size > options.dimSubImgSize)? true : false,
							hasSize = (file.width && file.height)? true : false;
						dialog.parent().css('overflow', 'hidden');
						dMinBtn = base.find('.ui-dialog-titlebar .elfinder-titlebar-minimize').hide();
						fm.bind('resize', dinit);
						img.attr('src', src);
						imgc.attr('src', src);
						imgr.attr('src', src);
						if (api2) {
							imgr.on('mousedown touchstart', rotate.start)
								.on('touchend', rotate.stop);
							base.on('mouseup', rotate.stop);
						}
						if (hasSize && !substituteImg) {
							return init();
						}
						if (file.size > (options.getDimThreshold || 0)) {
							dimreq = fm.request({
								data : {cmd : 'dim', target : file.hash, substitute : (substituteImg? 400 : '')},
								preventDefault : true
							})
							.done(function(data) {
								if (data.dim) {
									var dim = data.dim.split('x');
									file.width = dim[0];
									file.height = dim[1];
									setdim(dim);
									if (data.url) {
										img.attr('src', data.url);
										imgc.attr('src', data.url);
										imgr.attr('src', data.url);
									}
									return init();
								}
							});
						} else if (hasSize) {
							return init();
						}
					},
					close          : function() {
						if (api2) {
							imgr.off('mousedown touchstart', rotate.start)
								.off('touchend', rotate.stop);
							jQuery(document).off('mouseup', rotate.stop);
						}
						fm.unbind('resize', dinit);
						jQuery(this).elfinderdialog('destroy');
					},
					resize         : function(e, data) {
						if (data && data.minimize === 'off') {
							dinit();
						}
					}
				}).attr('id', id).closest('.ui-dialog').addClass(clsediting);
				
				// for IE < 9 dialog mising at open second+ time.
				if (fm.UA.ltIE8) {
					jQuery('.elfinder-dialog').css('filter', '');
				}
				
				coverc.css({ 'opacity': 0.2, 'background-color': '#fff', 'position': 'absolute'}),
				rhandlec.css('cursor', 'move');
				rhandlec.find('.elfinder-resize-handle-point').css({
					'background-color' : '#fff',
					'opacity': 0.5,
					'border-color':'#000'
				});

				if (! api2) {
					uitype.find('.api2').remove();
				}
				
				control.find('input,select').prop('disabled', true);
				control.find('input.elfinder-resize-quality')
					.next('span').addClass('elfinder-resize-jpgsize').attr('title', fm.i18n('roughFileSize'));

			},
			
			id, dialog
			;
			

		if (!files.length || files[0].mime.indexOf('image/') === -1) {
			return dfrd.reject();
		}
		
		id = 'resize-'+fm.namespace+'-'+files[0].hash;
		dialog = fmnode.find('#'+id);
		
		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return dfrd.resolve();
		}
		
		open(files[0], id);
			
		return dfrd;
	};

};

(function ($) {
	
	var findProperty = function (styleObject, styleArgs) {
		var i = 0 ;
		for( i in styleArgs) {
	        if (typeof styleObject[styleArgs[i]] != 'undefined') 
	        	return styleArgs[i];
		}
		styleObject[styleArgs[i]] = '';
	    return styleArgs[i];
	};
	
	jQuery.cssHooks.rotate = {
		get: function(elem, computed, extra) {
			return jQuery(elem).rotate();
		},
		set: function(elem, value) {
			jQuery(elem).rotate(value);
			return value;
		}
	};
	jQuery.cssHooks.transform = {
		get: function(elem, computed, extra) {
			var name = findProperty( elem.style , 
				['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
			return elem.style[name];
		},
		set: function(elem, value) {
			var name = findProperty( elem.style , 
				['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
			elem.style[name] = value;
			return value;
		}
	};
	
	jQuery.fn.rotate = function(val) {
		var r;
		if (typeof val == 'undefined') {
			if (!!window.opera) {
				r = this.css('transform').match(/rotate\((.*?)\)/);
				return  ( r && r[1])?
					Math.round(parseFloat(r[1]) * 180 / Math.PI) : 0;
			} else {
				r = this.css('transform').match(/rotate\((.*?)\)/);
				return  ( r && r[1])? parseInt(r[1]) : 0;
			}
		}
		this.css('transform', 
			this.css('transform').replace(/none|rotate\(.*?\)/, '') + 'rotate(' + parseInt(val) + 'deg)');
		return this;
	};

	jQuery.fx.step.rotate  = function(fx) {
		if ( fx.state == 0 ) {
			fx.start = jQuery(fx.elem).rotate();
			fx.now = fx.start;
		}
		jQuery(fx.elem).rotate(fx.now);
	};

	if (typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined") { // IE & IE<9
		var GetAbsoluteXY = function(element) {
			var pnode = element;
			var x = pnode.offsetLeft;
			var y = pnode.offsetTop;
			
			while ( pnode.offsetParent ) {
				pnode = pnode.offsetParent;
				if (pnode != document.body && pnode.currentStyle['position'] != 'static') {
					break;
				}
				if (pnode != document.body && pnode != document.documentElement) {
					x -= pnode.scrollLeft;
					y -= pnode.scrollTop;
				}
				x += pnode.offsetLeft;
				y += pnode.offsetTop;
			}
			
			return { x: x, y: y };
		};
		
		var StaticToAbsolute = function (element) {
			if ( element.currentStyle['position'] != 'static') {
				return ;
			}

			var xy = GetAbsoluteXY(element);
			element.style.position = 'absolute' ;
			element.style.left = xy.x + 'px';
			element.style.top = xy.y + 'px';
		};

		var IETransform = function(element,transform){

			var r;
			var m11 = 1;
			var m12 = 1;
			var m21 = 1;
			var m22 = 1;

			if (typeof element.style['msTransform'] != 'undefined'){
				return true;
			}

			StaticToAbsolute(element);

			r = transform.match(/rotate\((.*?)\)/);
			var rotate =  ( r && r[1])	?	parseInt(r[1])	:	0;

			rotate = rotate % 360;
			if (rotate < 0) rotate = 360 + rotate;

			var radian= rotate * Math.PI / 180;
			var cosX =Math.cos(radian);
			var sinY =Math.sin(radian);

			m11 *= cosX;
			m12 *= -sinY;
			m21 *= sinY;
			m22 *= cosX;

			element.style.filter =  (element.style.filter || '').replace(/progid:DXImageTransform\.Microsoft\.Matrix\([^)]*\)/, "" ) +
				("progid:DXImageTransform.Microsoft.Matrix(" + 
					 "M11=" + m11 + 
					",M12=" + m12 + 
					",M21=" + m21 + 
					",M22=" + m22 + 
					",FilterType='bilinear',sizingMethod='auto expand')") 
				;

	  		var ow = parseInt(element.style.width || element.width || 0 );
	  		var oh = parseInt(element.style.height || element.height || 0 );

			radian = rotate * Math.PI / 180;
			var absCosX =Math.abs(Math.cos(radian));
			var absSinY =Math.abs(Math.sin(radian));

			var dx = (ow - (ow * absCosX + oh * absSinY)) / 2;
			var dy = (oh - (ow * absSinY + oh * absCosX)) / 2;

			element.style.marginLeft = Math.floor(dx) + "px";
			element.style.marginTop  = Math.floor(dy) + "px";

			return(true);
		};
		
		var transform_set = jQuery.cssHooks.transform.set;
		jQuery.cssHooks.transform.set = function(elem, value) {
			transform_set.apply(this, [elem, value] );
			IETransform(elem,value);
			return value;
		};
	}

})(jQuery);


/*
 * File: /js/commands/restore.js
 */

/**
 * @class  elFinder command "restore"
 * Restore items from the trash
 *
 * @author Naoki Sawada
 **/
(elFinder.prototype.commands.restore = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		fakeCnt = 0,
		getFilesRecursively = function(files) {
			var dfd = jQuery.Deferred(),
				dirs = [],
				results = [],
				reqs = [],
				phashes = [],
				getFile;
			
			dfd._xhrReject = function() {
				jQuery.each(reqs, function() {
					this && this.reject && this.reject();
				});
				getFile && getFile._xhrReject();
			};
			
			jQuery.each(files, function(i, f) {
				f.mime === 'directory'? dirs.push(f) : results.push(f);
			});
			
			if (dirs.length) {
				jQuery.each(dirs, function(i, d) {
					reqs.push(fm.request({
						data : {cmd  : 'open', target : d.hash},
						preventDefault : true,
						asNotOpen : true
					}));
					phashes[i] = d.hash;
				});
				jQuery.when.apply($, reqs).fail(function() {
					dfd.reject();
				}).done(function() {
					var items = [];
					jQuery.each(arguments, function(i, r) {
						var files;
						if (r.files) {
							if (r.files.length) {
								items = items.concat(r.files);
							} else {
								items.push({
									hash: 'fakefile_' + (fakeCnt++),
									phash: phashes[i],
									mime: 'fakefile',
									name: 'fakefile',
									ts: 0
								});
							}
						}
					});
					fm.cache(items);
					getFile = getFilesRecursively(items).done(function(res) {
						results = results.concat(res);
						dfd.resolve(results);
					});
				});
			} else {
				dfd.resolve(results);
			}
			
			return dfd;
		},
		restore = function(dfrd, files, targets, ops) {
			var rHashes = {},
				others = [],
				found = false,
				dirs = [],
				opts = ops || {},
				id = +new Date(),
				tm, getFile;
			
			fm.lockfiles({files : targets});
			
			dirs = jQuery.map(files, function(f) {
				return f.mime === 'directory'? f.hash : null;
			});
			
			dfrd.done(function() {
				dirs && fm.exec('rm', dirs, {forceRm : true, quiet : true});
			}).always(function() {
				fm.unlockfiles({files : targets});
			});
			
			tm = setTimeout(function() {
				fm.notify({type : 'search', id : id, cnt : 1, hideCnt : true, cancel : function() {
					getFile && getFile._xhrReject();
					dfrd.reject();
				}});
			}, fm.notifyDelay);

			fakeCnt = 0;
			getFile = getFilesRecursively(files).always(function() {
				tm && clearTimeout(tm);
				fm.notify({type : 'search', id: id, cnt : -1, hideCnt : true});
			}).fail(function() {
				dfrd.reject('errRestore', 'errFileNotFound');
			}).done(function(res) {
				var errFolderNotfound = ['errRestore', 'errFolderNotFound'],
					dirTop = '';
				
				if (res.length) {
					jQuery.each(res, function(i, f) {
						var phash = f.phash,
							pfile,
							srcRoot, tPath;
						while(phash) {
							if (srcRoot = fm.trashes[phash]) {
								if (! rHashes[srcRoot]) {
									if (found) {
										// Keep items of other trash
										others.push(f.hash);
										return null; // continue jQuery.each
									}
									rHashes[srcRoot] = {};
									found = true;
								}
		
								tPath = fm.path(f.hash).substr(fm.path(phash).length).replace(/\\/g, '/');
								tPath = tPath.replace(/\/[^\/]+?$/, '');
								if (tPath === '') {
									tPath = '/';
								}
								if (!rHashes[srcRoot][tPath]) {
									rHashes[srcRoot][tPath] = [];
								}
								if (f.mime === 'fakefile') {
									fm.updateCache({removed:[f.hash]});
								} else {
									rHashes[srcRoot][tPath].push(f.hash);
								}
								if (!dirTop || dirTop.length > tPath.length) {
									dirTop = tPath;
								}
								break;
							}
							
							// Go up one level for next check
							pfile = fm.file(phash);
							
							if (!pfile) {
								phash = false;
								// Detection method for search results
								jQuery.each(fm.trashes, function(ph) {
									var file = fm.file(ph),
										filePath = fm.path(ph);
									if ((!file.volumeid || f.hash.indexOf(file.volumeid) === 0) && fm.path(f.hash).indexOf(filePath) === 0) {
										phash = ph;
										return false;
									}
								});
							} else {
								phash = pfile.phash;
							}
						}
					});
					if (found) {
						jQuery.each(rHashes, function(src, dsts) {
							var dirs = Object.keys(dsts),
								cnt = dirs.length;
							fm.request({
								data   : {cmd  : 'mkdir', target : src, dirs : dirs}, 
								notify : {type : 'chkdir', cnt : cnt},
								preventFail : true
							}).fail(function(error) {
								dfrd.reject(error);
								fm.unlockfiles({files : targets});
							}).done(function(data) {
								var cmdPaste, hashes;
								
								if (hashes = data.hashes) {
									cmdPaste = fm.getCommand('paste');
									if (cmdPaste) {
										// wait until file cache made
										fm.one('mkdirdone', function() {
											var hasErr = false;
											jQuery.each(dsts, function(dir, files) {
												if (hashes[dir]) {
													if (files.length) {
														if (fm.file(hashes[dir])) {
															fm.clipboard(files, true);
															fm.exec('paste', [ hashes[dir] ], {_cmd : 'restore', noToast : (opts.noToast || dir !== dirTop)})
															.done(function(data) {
																if (data && (data.error || data.warning)) {
																	hasErr = true;
																}
															})
															.fail(function() {
																hasErr = true;
															})
															.always(function() {
																if (--cnt < 1) {
																	dfrd[hasErr? 'reject' : 'resolve']();
																	if (others.length) {
																		// Restore items of other trash
																		fm.exec('restore', others);
																	}
																}
															});
														} else {
															dfrd.reject(errFolderNotfound);
														}
													} else {
														if (--cnt < 1) {
															dfrd.resolve();
															if (others.length) {
																// Restore items of other trash
																fm.exec('restore', others);
															}
														}
													}
												}
											});
										});
									} else {
										dfrd.reject(['errRestore', 'errCmdNoSupport', '(paste)']);
									}
								} else {
									dfrd.reject(errFolderNotfound);
								}
							});
						});
					} else {
						dfrd.reject(errFolderNotfound);
					}
				} else {
					dfrd.reject('errFileNotFound');
					dirs && fm.exec('rm', dirs, {forceRm : true, quiet : true});
				}
			});
		};
	
	// for to be able to overwrite
	this.restore = restore;

	this.linkedCmds = ['copy', 'paste', 'mkdir', 'rm'];
	this.updateOnSelect = false;
	
	this.init = function() {
		// re-assign for extended command
		self = this;
		fm = this.fm;
	};

	this.getstate = function(sel, e) {
		sel = sel || fm.selected();
		return sel.length && jQuery.grep(sel, function(h) {var f = fm.file(h); return f && ! f.locked && ! fm.isRoot(f)? true : false; }).length == sel.length
			? 0 : -1;
	};
	
	this.exec = function(hashes, opts) {
		var dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}),
			files  = self.files(hashes);

		if (! files.length) {
			return dfrd.reject();
		}
		
		jQuery.each(files, function(i, file) {
			if (fm.isRoot(file)) {
				return !dfrd.reject(['errRestore', file.name]);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});

		if (dfrd.state() === 'pending') {
			this.restore(dfrd, files, hashes, opts);
		}
			
		return dfrd;
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/rm.js
 */

/**
 * @class  elFinder command "rm"
 * Delete files
 *
 * @author Dmitry (dio) Levashov
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.rm = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		tpl = '<div class="ui-helper-clearfix elfinder-rm-title"><span class="elfinder-cwd-icon {class} ui-corner-all"/>{title}<div class="elfinder-rm-desc">{desc}</div></div>',
		confirm = function(dfrd, targets, files, tHash, addTexts) {
			var cnt = targets.length,
				cwd = fm.cwd().hash,
				descs = [],
				spinner = fm.i18n('calc') + '<span class="elfinder-spinner"/>',
				dialog, text, tmb, size, f, fname;
			
			if (cnt > 1) {
				size = 0;
				jQuery.each(files, function(h, f) { 
					if (f.size && f.size != 'unknown' && f.mime !== 'directory') {
						var s = parseInt(f.size);
						if (s >= 0 && size >= 0) {
							size += s;
						}
					} else {
						size = 'unknown';
						return false;
					}
				});
				getSize = (size === 'unknown');
				descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(size)));
				text = [jQuery(tpl.replace('{class}', 'elfinder-cwd-icon-group').replace('{title}', '<strong>' + fm.i18n('items')+ ': ' + cnt + '</strong>').replace('{desc}', descs.join('<br>')))];
			} else {
				f = files[0];
				tmb = fm.tmb(f);
				getSize = (f.mime === 'directory');
				descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(f.size)));
				descs.push(fm.i18n('modify')+': '+fm.formatDate(f));
				fname = fm.escape(f.i18 || f.name).replace(/([_.])/g, '&#8203;$1');
				text = [jQuery(tpl.replace('{class}', fm.mime2class(f.mime)).replace('{title}', '<strong>' + fname + '</strong>').replace('{desc}', descs.join('<br>')))];
			}
			
			if (addTexts) {
				text = text.concat(addTexts);
			}
			
			text.push(tHash? 'confirmTrash' : 'confirmRm');
			
			dialog = fm.confirm({
				title  : self.title,
				text   : text,
				accept : {
					label    : 'btnRm',
					callback : function() {  
						if (tHash) {
							self.toTrash(dfrd, targets, tHash);
						} else {
							remove(dfrd, targets);
						}
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() {
						fm.unlockfiles({files : targets});
						if (targets.length === 1 && fm.file(targets[0]).phash !== cwd) {
							fm.select({selected : targets});
						} else {
							fm.selectfiles({files : targets});
						}
						dfrd.reject();
					}
				}
			});
			// load thumbnail
			if (tmb) {
				jQuery('<img/>')
					.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
					.attr('src', tmb.url);
			}
			
			if (getSize) {
				getSize = fm.getSize(jQuery.map(files, function(f) { return f.mime === 'directory'? f.hash : null; })).done(function(data) {
					dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+data.formated);
				}).fail(function() {
					dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+fm.i18n('unknown'));
				}).always(function() {
					getSize = false;
				});
			}
		},
		toTrash = function(dfrd, targets, tHash) {
			var dsts = {},
				itemCnt = targets.length,
				maxCnt = self.options.toTrashMaxItems,
				checkDirs = [],
				reqDfd = jQuery.Deferred(),
				req, dirs, cnt;
			
			if (itemCnt > maxCnt) {
				self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]);
				return;
			}
			
			// Directory preparation preparation and directory enumeration
			jQuery.each(targets, function(i, h) {
				var file = fm.file(h),
					path = fm.path(h).replace(/\\/g, '/'),
					m = path.match(/^[^\/]+?(\/(?:[^\/]+?\/)*)[^\/]+?$/);
				
				if (file) {
					if (m) {
						m[1] = m[1].replace(/(^\/.*?)\/?$/, '$1');
						if (! dsts[m[1]]) {
							dsts[m[1]] = [];
						}
						dsts[m[1]].push(h);
					}
					if (file.mime === 'directory') {
						checkDirs.push(h);
					}
				}
			});
			
			// Check directory information
			if (checkDirs.length) {
				req = fm.request({
					data : {cmd : 'size', targets : checkDirs},
					notify : {type: 'readdir', cnt: 1, hideCnt: true},
					preventDefault : true
				}).done(function(data) {
					var cnt = 0;
					data.fileCnt && (cnt += parseInt(data.fileCnt));
					data.dirCnt && (cnt += parseInt(data.dirCnt));
					reqDfd[cnt > maxCnt ? 'reject' : 'resolve']();
				}).fail(function() {
					reqDfd.reject();
				});
				setTimeout(function() {
					var xhr = (req && req.xhr)? req.xhr : null;
					if (xhr && xhr.state() == 'pending') {
						req.syncOnFail(false);
						req.reject();
						reqDfd.reject();
					}
				}, self.options.infoCheckWait * 1000);
			} else {
				reqDfd.resolve();
			}
			
			// Directory creation and paste command execution
			reqDfd.done(function() {
				dirs = Object.keys(dsts);
				cnt = dirs.length;
				if (cnt) {
					fm.request({
						data   : {cmd  : 'mkdir', target : tHash, dirs : dirs}, 
						notify : {type : 'chkdir', cnt : cnt},
						preventFail : true
					})
					.fail(function(error) {
						dfrd.reject(error);
						fm.unlockfiles({files : targets});
					})
					.done(function(data) {
						var margeRes = function(data, phash, reqData) {
								var undo, prevUndo, redo, prevRedo;
								jQuery.each(data, function(k, v) {
									if (Array.isArray(v)) {
										if (res[k]) {
											res[k] = res[k].concat(v);
										} else {
											res[k] = v;
										}
									}
								});
								if (data.sync) {
									res.sync = 1;
								}
								if (data.added && data.added.length) {
									undo = function() {
										var targets = [],
											dirs    = jQuery.map(data.added, function(f) { return f.mime === 'directory'? f.hash : null; });
										jQuery.each(data.added, function(i, f) {
											if (jQuery.inArray(f.phash, dirs) === -1) {
												targets.push(f.hash);
											}
										});
										return fm.exec('restore', targets, {noToast: true});
									};
									redo = function() {
										return fm.request({
											data   : reqData,
											notify : {type : 'redo', cnt : targets.length}
										});
									};
									if (res.undo) {
										prevUndo = res.undo;
										res.undo = function() {
											undo();
											prevUndo();
										};
									} else {
										res.undo = undo;
									}
									if (res.redo) {
										prevRedo = res.redo;
										res.redo = function() {
											redo();
											prevRedo();
										};
									} else {
										res.redo = redo;
									}
								}
							},
							err = ['errTrash'],
							res = {},
							hasNtf = function() {
								return fm.ui.notify.children('.elfinder-notify-trash').length;
							},
							hashes, tm, prg, prgSt;
						
						if (hashes = data.hashes) {
							prg = 1 / cnt * 100;
							prgSt = cnt === 1? 100 : 5;
							tm = setTimeout(function() {
								fm.notify({type : 'trash', cnt : 1, hideCnt : true, progress : prgSt});
							}, fm.notifyDelay);
							jQuery.each(dsts, function(dir, files) {
								var phash = fm.file(files[0]).phash,
									reqData;
								if (hashes[dir]) {
									reqData = {cmd : 'paste', dst : hashes[dir], targets : files, cut : 1};
									fm.request({
										data : reqData,
										preventDefault : true
									})
									.fail(function(error) {
										if (error) {
											err = err.concat(error);
										}
									})
									.done(function(data) {
										data = fm.normalize(data);
										fm.updateCache(data);
										margeRes(data, phash, reqData);
										if (data.warning) {
											err = err.concat(data.warning);
											delete data.warning;
										}
										// fire some event to update cache/ui
										data.removed && data.removed.length && fm.remove(data);
										data.added   && data.added.length   && fm.add(data);
										data.changed && data.changed.length && fm.change(data);
										// fire event with command name
										fm.trigger('paste', data);
										// fire event with command name + 'done'
										fm.trigger('pastedone');
										// force update content
										data.sync && fm.sync();
									})
									.always(function() {
										var hashes = [], addTexts, end = 2;
										if (hasNtf()) {
											fm.notify({type : 'trash', cnt : 0, hideCnt : true, progress : prg});
										} else {
											prgSt+= prg;
										}
										if (--cnt < 1) {
											tm && clearTimeout(tm);
											hasNtf() && fm.notify({type : 'trash', cnt  : -1});
											fm.unlockfiles({files : targets});
											if (Object.keys(res).length) {
												if (err.length > 1) {
													if (res.removed || res.removed.length) {
														hashes = jQuery.grep(targets, function(h) {
															return jQuery.inArray(h, res.removed) === -1? true : false;
														});
													}
													if (hashes.length) {
														if (err.length > end) {
															end = (fm.messages[err[end-1]] || '').indexOf('$') === -1? end : end + 1;
														}
														dfrd.reject();
														fm.exec('rm', hashes, { addTexts: err.slice(0, end), forceRm: true });
													} else {
														fm.error(err);
													}
												}
												res._noSound = true;
												if (res.undo && res.redo) {
													res.undo = {
														cmd : 'trash',
														callback : res.undo,
													};
													res.redo = {
														cmd : 'trash',
														callback : res.redo
													};
												}
												dfrd.resolve(res);
											} else {
												dfrd.reject(err);
											}
										}
									});
								}
							});
						} else {
							dfrd.reject('errFolderNotFound');
							fm.unlockfiles({files : targets});
						}
					});
				} else {
					dfrd.reject(['error', 'The folder hierarchy to be deleting can not be determined.']);
					fm.unlockfiles({files : targets});
				}
			}).fail(function() {
				self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]);
			});
		},
		remove = function(dfrd, targets, quiet) {
			var notify = quiet? {} : {type : 'rm', cnt : targets.length};
			fm.request({
				data   : {cmd  : 'rm', targets : targets}, 
				notify : notify,
				preventFail : true
			})
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(data) {
				if (data.error || data.warning) {
					data.sync = true;
				}
				dfrd.resolve(data);
			})
			.always(function() {
				fm.unlockfiles({files : targets});
			});
		},
		getTHash = function(targets) {
			var thash = null,
				root1st;
			
			if (targets && targets.length) {
				if (targets.length > 1 && fm.searchStatus.state === 2) {
					root1st = fm.file(fm.root(targets[0])).volumeid;
					if (!jQuery.grep(targets, function(h) { return h.indexOf(root1st) !== 0? true : false ; }).length) {
						thash = fm.option('trashHash', targets[0]);
					}
				} else {
					thash = fm.option('trashHash', targets[0]);
				}
			}
			return thash;
		},
		getSize = false;
	
	// for to be able to overwrite
	this.confirm = confirm;
	this.toTrash = toTrash;
	this.remove = remove;

	this.syncTitleOnChange = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'delete ctrl+backspace shift+delete'
	}];
	this.value = 'rm';
	
	this.init = function() {
		// re-assign for extended command
		self = this;
		fm = this.fm;
		// bind function of change
		self.change(function() {
			var targets;
			delete self.extra;
			self.title = fm.i18n('cmd' + self.value);
			self.className = self.value;
			self.button && self.button.children('span.elfinder-button-icon')[self.value === 'trash'? 'addClass' : 'removeClass']('elfinder-button-icon-trash');
			if (self.value === 'trash') {
				self.extra = {
					icon: 'rm',
					node: jQuery('<span/>')
						.attr({title: fm.i18n('cmdrm')})
						.on('ready', function(e, data) {
							targets = data.targets;
						})
						.on('click touchstart', function(e){
							if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
								return;
							}
							e.stopPropagation();
							e.preventDefault();
							fm.getUI().trigger('click'); // to close the context menu immediately
							fm.exec('rm', targets, {_userAction: true, forceRm : true});
						})
				};
			}
		});
	};
	
	this.getstate = function(select) {
		var sel   = this.hashes(select);
		
		return sel.length && jQuery.grep(sel, function(h) { var f = fm.file(h); return f && ! f.locked && ! fm.isRoot(f)? true : false; }).length == sel.length
			? 0 : -1;
	};
	
	this.exec = function(hashes, cOpts) {
		var opts   = cOpts || {},
			dfrd   = jQuery.Deferred()
				.always(function() {
					if (getSize && getSize.state && getSize.state() === 'pending') {
						getSize.reject();
					}
				})
				.fail(function(error) {
					error && fm.error(error);
				}).done(function(data) {
					!opts.quiet && !data._noSound && data.removed && data.removed.length && fm.trigger('playsound', {soundFile : 'rm.wav'});
				}),
			files  = self.files(hashes),
			cnt    = files.length,
			tHash  = null,
			addTexts = opts.addTexts? opts.addTexts : null,
			forceRm = opts.forceRm,
			quiet = opts.quiet,
			targets;

		if (! cnt) {
			return dfrd.reject();
		}
		
		jQuery.each(files, function(i, file) {
			if (fm.isRoot(file)) {
				return !dfrd.reject(['errRm', file.name, 'errPerm']);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});

		if (dfrd.state() === 'pending') {
			targets = self.hashes(hashes);
			cnt     = files.length;
			
			if (forceRm || (self.event && self.event.originalEvent && self.event.originalEvent.shiftKey)) {
				tHash = '';
				self.title = fm.i18n('cmdrm');
			}
			
			if (tHash === null) {
				tHash = getTHash(targets);
			}
			
			fm.lockfiles({files : targets});
			
			if (tHash && self.options.quickTrash) {
				self.toTrash(dfrd, targets, tHash);
			} else {
				if (quiet) {
					remove(dfrd, targets, quiet);
				} else {
					self.confirm(dfrd, targets, files, tHash, addTexts);
				}
			}
		}
			
		return dfrd;
	};

	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var targets = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		if (targets && targets.length) {
			self.update(void(0), (targets? getTHash(targets) : fm.option('trashHash'))? 'trash' : 'rm');
		}
	});

};


/*
 * File: /js/commands/search.js
 */

/**
 * @class  elFinder command "search"
 * Find files
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.search = function() {
	"use strict";
	this.title          = 'Find files';
	this.options        = {ui : 'searchbutton'};
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	
	/**
	 * Return command status.
	 * Search does not support old api.
	 *
	 * @return Number
	 **/
	this.getstate = function() {
		return 0;
	};
	
	/**
	 * Send search request to backend.
	 *
	 * @param  String  search string
	 * @return jQuery.Deferred
	 **/
	this.exec = function(q, target, mime, type) {
		var fm = this.fm,
			reqDef = [],
			sType = type || '',
			onlyMimes = fm.options.onlyMimes,
			phash, targetVolids = [],
			setType = function(data) {
				if (sType && sType !== 'SearchName' && sType !== 'SearchMime') {
					data.type = sType;
				}
				return data;
			};
		
		if (typeof q == 'string' && q) {
			if (typeof target == 'object') {
				mime = target.mime || '';
				target = target.target || '';
			}
			target = target? target : '';
			if (mime) {
				mime = jQuery.trim(mime).replace(',', ' ').split(' ');
				if (onlyMimes.length) {
					mime = jQuery.map(mime, function(m){ 
						m = jQuery.trim(m);
						return m && (jQuery.inArray(m, onlyMimes) !== -1
									|| jQuery.grep(onlyMimes, function(om) { return m.indexOf(om) === 0? true : false; }).length
									)? m : null;
					});
				}
			} else {
				mime = [].concat(onlyMimes);
			}

			fm.trigger('searchstart', setType({query : q, target : target, mimes : mime}));
			
			if (! onlyMimes.length || mime.length) {
				if (target === '' && fm.api >= 2.1) {
					jQuery.each(fm.roots, function(id, hash) {
						reqDef.push(fm.request({
							data   : setType({cmd : 'search', q : q, target : hash, mimes : mime}),
							notify : {type : 'search', cnt : 1, hideCnt : (reqDef.length? false : true)},
							cancel : true,
							preventDone : true
						}));
					});
				} else {
					reqDef.push(fm.request({
						data   : setType({cmd : 'search', q : q, target : target, mimes : mime}),
						notify : {type : 'search', cnt : 1, hideCnt : true},
						cancel : true,
						preventDone : true
					}));
					if (target !== '' && fm.api >= 2.1 && Object.keys(fm.leafRoots).length) {
						jQuery.each(fm.leafRoots, function(hash, roots) {
							phash = hash;
							while(phash) {
								if (target === phash) {
									jQuery.each(roots, function() {
										var f = fm.file(this);
										f && f.volumeid && targetVolids.push(f.volumeid);
										reqDef.push(fm.request({
											data   : setType({cmd : 'search', q : q, target : this, mimes : mime}),
											notify : {type : 'search', cnt : 1, hideCnt : false},
											cancel : true,
											preventDone : true
										}));
									});
								}
								phash = (fm.file(phash) || {}).phash;
							}
						});
					}
				}
			} else {
				reqDef = [jQuery.Deferred().resolve({files: []})];
			}
			
			fm.searchStatus.mixed = (reqDef.length > 1)? targetVolids : false;
			
			return jQuery.when.apply($, reqDef).done(function(data) {
				var argLen = arguments.length,
					i;
				
				data.warning && fm.error(data.warning);
				
				if (argLen > 1) {
					data.files = (data.files || []);
					for(i = 1; i < argLen; i++) {
						arguments[i].warning && fm.error(arguments[i].warning);
						
						if (arguments[i].files) {
							data.files.push.apply(data.files, arguments[i].files);
						}
					}
				}
				
				// because "preventDone : true" so update files cache
				data.files && data.files.length && fm.cache(data.files);
				
				fm.lazy(function() {
					fm.trigger('search', data);
				}).then(function() {
					// fire event with command name + 'done'
					return fm.lazy(function() {
						fm.trigger('searchdone');
					});
				}).then(function() {
					// force update content
					data.sync && fm.sync();
				});
			});
		}
		fm.getUI('toolbar').find('.'+fm.res('class', 'searchbtn')+' :text').trigger('focus');
		return jQuery.Deferred().reject();
	};

};


/*
 * File: /js/commands/selectall.js
 */

/**
 * @class  elFinder command "selectall"
 * Select ALL of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectall = function() {
	"use strict";
	var self = this,
		state = 0;
	
	this.fm.bind('select', function(e) {
		state = (e.data && e.data.selectall)? -1 : 0;
	});
	
	this.state = 0;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return state;
	};
	
	this.exec = function() {
		jQuery(document).trigger(jQuery.Event('keydown', { keyCode: 65, ctrlKey : true, shiftKey : false, altKey : false, metaKey : false }));
		return jQuery.Deferred().resolve();
	};
};


/*
 * File: /js/commands/selectinvert.js
 */

/**
 * @class  elFinder command "selectinvert"
 * Invert Selection of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectinvert = function() {
	"use strict";
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function() {
		jQuery(document).trigger(jQuery.Event('keydown', { keyCode: 73, ctrlKey : true, shiftKey : true, altKey : false, metaKey : false }));
		return jQuery.Deferred().resolve();
	};

};


/*
 * File: /js/commands/selectnone.js
 */

/**
 * @class  elFinder command "selectnone"
 * Unselect ALL of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectnone = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		state = -1;
	
	fm.bind('select', function(e) {
		state = (e.data && e.data.unselectall)? -1 : 0;
	});
	
	this.state = -1;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return state;
	};
	
	this.exec = function() {
		fm.getUI('cwd').trigger('unselectall');
		return jQuery.Deferred().resolve();
	};
};


/*
 * File: /js/commands/sort.js
 */

/**
 * @class  elFinder command "sort"
 * Change sort files rule
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.sort = function() {
	"use strict";
	var self  = this,
		fm    = self.fm,
		setVar = function() {
			self.variants = [];
			jQuery.each(fm.sortRules, function(name, value) {
				if (fm.sorters[name]) {
					var arr = (name === fm.sortType)? (fm.sortOrder === 'asc'? 'n' : 's') : '';
					self.variants.push([name, (arr? '<span class="ui-icon ui-icon-arrowthick-1-'+arr+'"></span>' : '') + '&nbsp;' + fm.i18n('sort'+name)]);
				}
			});
			self.variants.push('|');
			self.variants.push([
				'stick',
				(fm.sortStickFolders? '<span class="ui-icon ui-icon-check"/>' : '') + '&nbsp;' + fm.i18n('sortFoldersFirst')
			]);
			if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) {
				self.variants.push('|');
				self.variants.push([
					'tree',
					(fm.sortAlsoTreeview? '<span class="ui-icon ui-icon-check"/>' : '') + '&nbsp;' + fm.i18n('sortAlsoTreeview')
				]);
			}
			updateContextmenu();
		},
		updateContextmenu = function() {
			var cm = fm.getUI('contextmenu'),
				icon, sub;
			if (cm.is(':visible')) {
				icon = cm.find('span.elfinder-button-icon-sort');
				sub = icon.siblings('div.elfinder-contextmenu-sub');
				sub.find('span.ui-icon').remove();
				sub.children('div.elfinder-contextsubmenu-item').each(function() {
					var tgt = jQuery(this).children('span'),
						name = tgt.text().trim(),
						arr;
					if (name === (i18Name.stick || (i18Name.stick = fm.i18n('sortFoldersFirst')))) {
						if (fm.sortStickFolders) {
							tgt.prepend('<span class="ui-icon ui-icon-check"/>');
						}
					} else if (name === (i18Name.tree || (i18Name.tree = fm.i18n('sortAlsoTreeview')))) {
						if (fm.sortAlsoTreeview) {
							tgt.prepend('<span class="ui-icon ui-icon-check"/>');
						}
					} else if (name === (i18Name[fm.sortType] || (i18Name[fm.sortType] = fm.i18n('sort' + fm.sortType)))) {
						arr = fm.sortOrder === 'asc'? 'n' : 's';
						tgt.prepend('<span class="ui-icon ui-icon-arrowthick-1-'+arr+'"></span>');
					}
				});
			}
		},
		i18Name = {};
	
	/**
	 * Command options
	 *
	 * @type  Object
	 */
	this.options = {ui : 'sortbutton'};
	
	this.keepContextmenu = true;

	fm.bind('sortchange', setVar)
	.bind('sorterupdate', function() {
		setVar();
		fm.getUI('toolbar').find('.elfiner-button-sort .elfinder-button-menu .elfinder-button-menu-item').each(function() {
			var tgt = jQuery(this),
				rel = tgt.attr('rel');
			tgt.toggle(! rel || fm.sorters[rel]);
		});
	})
	.bind('cwdrender', function() {
		var cols = jQuery(fm.cwd).find('div.elfinder-cwd-wrapper-list table');
		if (cols.length) {
			jQuery.each(fm.sortRules, function(name, value) {
				var td = cols.find('thead tr td.elfinder-cwd-view-th-'+name);
				if (td.length) {
					var current = ( name == fm.sortType),
					sort = {
						type  : name,
						order : current ? fm.sortOrder == 'asc' ? 'desc' : 'asc' : fm.sortOrder
					},arr;
					if (current) {
						td.addClass('ui-state-active');
						arr = fm.sortOrder == 'asc' ? 'n' : 's';
						jQuery('<span class="ui-icon ui-icon-triangle-1-'+arr+'"/>').appendTo(td);
					}
					jQuery(td).on('click', function(e){
						if (! jQuery(this).data('dragging')) {
							e.stopPropagation();
							if (! fm.getUI('cwd').data('longtap')) {
								fm.exec('sort', [], sort);
							}
						}
					})
					.on('mouseenter mouseleave', function(e) {
						jQuery(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
					});
				}
				
			});
		}
	});
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(hashes, cOpt) {
		var fm = this.fm,
			sortopt = jQuery.isPlainObject(cOpt)? cOpt : (function() {
				cOpt += '';
				var sOpts = {};
				if (cOpt === 'stick') {
					sOpts.stick = !fm.sortStickFolders;
				} else if (cOpt === 'tree') {
					sOpts.tree = !fm.sortAlsoTreeview;
				} else if (fm.sorters[cOpt]) {
					if (fm.sortType === cOpt) {
						sOpts.order = fm.sortOrder === 'asc'? 'desc' : 'asc';
					} else {
						sOpts.type = cOpt;
					}
				}
				return sOpts;
			})(),
			sort = Object.assign({
				type  : fm.sortType,
				order : fm.sortOrder,
				stick : fm.sortStickFolders,
				tree  : fm.sortAlsoTreeview
			}, sortopt);

		return fm.lazy(function() {
			fm.setSort(sort.type, sort.order, sort.stick, sort.tree);
			this.resolve();
		});
	};

};


/*
 * File: /js/commands/undo.js
 */

/**
 * @class  elFinder command "undo"
 * Undo previous commands
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.undo = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		setTitle = function(undo) {
			if (undo) {
				self.title = fm.i18n('cmdundo') + ' ' + fm.i18n('cmd'+undo.cmd);
				self.state = 0;
			} else {
				self.title = fm.i18n('cmdundo');
				self.state = -1;
			}
			self.change();
		},
		cmds = [];
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'ctrl+z'
	}];
	this.syncTitleOnChange = true;
	
	this.getstate = function() {
		return cmds.length? 0 : -1;
	};
	
	this.setUndo = function(undo, redo) {
		var _undo = {};
		if (undo) {
			if (jQuery.isPlainObject(undo) && undo.cmd && undo.callback) {
				Object.assign(_undo, undo);
				if (redo) {
					delete redo.undo;
					_undo.redo = redo;
				} else {
					fm.getCommand('redo').setRedo(null);
				}
				cmds.push(_undo);
				setTitle(_undo);
			}
		}
	};
	
	this.exec = function() {
		var redo = fm.getCommand('redo'),
			dfd = jQuery.Deferred(),
			undo, res, _redo = {};
		if (cmds.length) {
			undo = cmds.pop();
			if (undo.redo) {
				Object.assign(_redo, undo.redo);
				delete undo.redo;
			} else {
				_redo = null;
			} 
			dfd.done(function() {
				if (_redo) {
					redo.setRedo(_redo, undo);
				}
			});
			
			setTitle(cmds.length? cmds[cmds.length-1] : void(0));
			
			res = undo.callback();
			
			if (res && res.done) {
				res.done(function() {
					dfd.resolve();
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.resolve();
			}
			if (cmds.length) {
				this.update(0, cmds[cmds.length - 1].name);
			} else {
				this.update(-1, '');
			}
		} else {
			dfd.reject();
		}
		return dfd;
	};
	
	fm.bind('exec', function(e) {
		var data = e.data || {};
		if (data.opts && data.opts._userAction) {
			if (data.dfrd && data.dfrd.done) {
				data.dfrd.done(function(res) {
					if (res && res.undo && res.redo) {
						res.undo.redo = res.redo;
						self.setUndo(res.undo);
					}
				});
			}
		}
	});
};

/**
 * @class  elFinder command "redo"
 * Redo previous commands
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.redo = function() {
	"use strict";
	var self = this,
		fm   = this.fm,
		setTitle = function(redo) {
			if (redo && redo.callback) {
				self.title = fm.i18n('cmdredo') + ' ' + fm.i18n('cmd'+redo.cmd);
				self.state = 0;
			} else {
				self.title = fm.i18n('cmdredo');
				self.state = -1;
			}
			self.change();
		},
		cmds = [];
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'shift+ctrl+z ctrl+y'
	}];
	this.syncTitleOnChange = true;
	
	this.getstate = function() {
		return cmds.length? 0 : -1;
	};
	
	this.setRedo = function(redo, undo) {
		if (redo === null) {
			cmds = [];
			setTitle();
		} else {
			if (redo && redo.cmd && redo.callback) {
				if (undo) {
					redo.undo = undo;
				}
				cmds.push(redo);
				setTitle(redo);
			}
		}
	};
	
	this.exec = function() {
		var undo = fm.getCommand('undo'),
			dfd = jQuery.Deferred(),
			redo, res, _undo = {}, _redo = {};
		if (cmds.length) {
			redo = cmds.pop();
			if (redo.undo) {
				Object.assign(_undo, redo.undo);
				Object.assign(_redo, redo);
				delete _redo.undo;
				dfd.done(function() {
					undo.setUndo(_undo, _redo);
				});
			}
			
			setTitle(cmds.length? cmds[cmds.length-1] : void(0));
			
			res = redo.callback();
			
			if (res && res.done) {
				res.done(function() {
					dfd.resolve();
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.resolve();
			}
			return dfd;
		} else {
			return dfd.reject();
		}
	};
};


/*
 * File: /js/commands/up.js
 */

/**
 * @class  elFinder command "up"
 * Go into parent directory
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.up = function() {
	"use strict";
	this.alwaysEnabled = true;
	this.updateOnSelect = false;
	
	this.shortcuts = [{
		pattern     : 'ctrl+up'
	}];
	
	this.getstate = function() {
		return this.fm.cwd().phash ? 0 : -1;
	};
	
	this.exec = function() {
		var fm = this.fm,
			cwdhash = fm.cwd().hash;
		return this.fm.cwd().phash ? this.fm.exec('open', this.fm.cwd().phash).done(function() {
			fm.one('opendone', function() {
				fm.selectfiles({files : [cwdhash]});
			});
		}) : jQuery.Deferred().reject();
	};

}).prototype = { forceLoad : true }; // this is required command


/*
 * File: /js/commands/upload.js
 */

/**
 * @class elFinder command "upload"
 * Upload files using iframe or XMLHttpRequest & FormData.
 * Dialog allow to send files using drag and drop
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.commands.upload = function() {
	"use strict";
	var hover = this.fm.res('class', 'hover');
	
	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	
	// Shortcut opens dialog
	this.shortcuts = [{
		pattern     : 'ctrl+u'
	}];
	
	/**
	 * Return command state
	 *
	 * @return Number
	 **/
	this.getstate = function(select) {
		var fm = this.fm, f,
		sel = (select || [fm.cwd().hash]);
		if (!this._disabled && sel.length == 1) {
			f = fm.file(sel[0]);
		}
		return (f && f.mime == 'directory' && f.write)? 0 : -1;
	};
	
	
	this.exec = function(data) {
		var fm = this.fm,
			cwdHash = fm.cwd().hash,
			getTargets = function() {
				var tgts = data && (data instanceof Array)? data : null,
					sel;
				if (! data || data instanceof Array) {
					if (! tgts && (sel = fm.selected()).length === 1 && fm.file(sel[0]).mime === 'directory') {
						tgts = sel;
					} else if (!tgts || tgts.length !== 1 || fm.file(tgts[0]).mime !== 'directory') {
						tgts = [ cwdHash ];
					}
				}
				return tgts;
			},
			targets = getTargets(),
			check = targets? targets[0] : (data && data.target? data.target : null),
			targetDir = check? fm.file(check) : fm.cwd(),
			fmUpload = function(data) {
				fm.upload(data)
					.fail(function(error) {
						dfrd.reject(error);
					})
					.done(function(data) {
						var cwd = fm.getUI('cwd'),
							node;
						dfrd.resolve(data);
						if (data && data.added && data.added[0] && ! fm.ui.notify.children('.elfinder-notify-upload').length) {
							var newItem = fm.findCwdNodes(data.added);
							if (newItem.length) {
								newItem.trigger('scrolltoview');
							} else {
								if (targetDir.hash !== cwdHash) {
									node = jQuery('<div/>').append(
										jQuery('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'+fm.i18n('cmdopendir')+'</span></button>')
										.on('mouseenter mouseleave', function(e) { 
											jQuery(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
										}).on('click', function() {
											fm.exec('open', check).done(function() {
												fm.one('opendone', function() {
													fm.trigger('selectfiles', {files : jQuery.map(data.added, function(f) {return f.hash;})});
												});
											});
										})
									);
								} else {
									fm.trigger('selectfiles', {files : jQuery.map(data.added, function(f) {return f.hash;})});
								}
								fm.toast({msg: fm.i18n(['complete', fm.i18n('cmdupload')]), extNode: node});
							}
						}
					})
					.progress(function() {
						dfrd.notifyWith(this, Array.from(arguments));
					});
			},
			upload = function(data) {
				dialog.elfinderdialog('close');
				if (targets) {
					data.target = targets[0];
				}
				fmUpload(data);
			},
			getSelector = function() {
				var hash = targetDir.hash,
					dirs = jQuery.map(fm.files(hash), function(f) {
						return (f.mime === 'directory' && f.write)? f : null; 
					});
				
				if (! dirs.length) {
					return jQuery();
				}
				
				return jQuery('<div class="elfinder-upload-dirselect elfinder-tabstop" title="' + fm.i18n('folders') + '"/>')
				.on('click', function(e) {
					e.stopPropagation();
					e.preventDefault();
					dirs = fm.sortFiles(dirs);
					var $this  = jQuery(this),
						cwd    = fm.cwd(),
						base   = dialog.closest('div.ui-dialog'),
						getRaw = function(f, icon) {
							return {
								label    : fm.escape(f.i18 || f.name),
								icon     : icon,
								remain   : false,
								callback : function() {
									var title = base.children('.ui-dialog-titlebar:first').find('span.elfinder-upload-target');
									targets = [ f.hash ];
									title.html(' - ' + fm.escape(f.i18 || f.name));
									$this.trigger('focus');
								},
								options  : {
									className : (targets && targets.length && f.hash === targets[0])? 'ui-state-active' : '',
									iconClass : f.csscls || '',
									iconImg   : f.icon   || ''
								}
							};
						},
						raw = [ getRaw(targetDir, 'opendir'), '|' ];
					jQuery.each(dirs, function(i, f) {
						raw.push(getRaw(f, 'dir'));
					});
					$this.trigger('blur');
					fm.trigger('contextmenu', {
						raw: raw,
						x: e.pageX || jQuery(this).offset().left,
						y: e.pageY || jQuery(this).offset().top,
						prevNode: base,
						fitHeight: true
					});
				}).append('<span class="elfinder-button-icon elfinder-button-icon-dir" />');
			},
			inputButton = function(type, caption) {
				var button,
					input = jQuery('<input type="file" ' + type + '/>')
					.on('click', function() {
						// for IE's bug
						if (fm.UA.IE) {
							setTimeout(function() {
								form.css('display', 'none').css('position', 'relative');
								requestAnimationFrame(function() {
									form.css('display', '').css('position', '');
								});
							}, 100);
						}
					})
					.on('change', function() {
						upload({input : input.get(0), type : 'files'});
					})
					.on('dragover', function(e) {
						e.originalEvent.dataTransfer.dropEffect = 'copy';
					}),
					form = jQuery('<form/>').append(input).on('click', function(e) {
						e.stopPropagation();
					});

				return jQuery('<div class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only elfinder-tabstop elfinder-focus"><span class="ui-button-text">'+fm.i18n(caption)+'</span></div>')
					.append(form)
					.on('click', function(e) {
						e.stopPropagation();
						e.preventDefault();
						input.trigger('click');
					})
					.on('mouseenter mouseleave', function(e) {
						jQuery(this).toggleClass(hover, e.type === 'mouseenter');
					});
			},
			dfrd = jQuery.Deferred(),
			dialog, dropbox, pastebox, dropUpload, paste, dirs, spinner, uidialog;
		
		dropUpload = function(e) {
			e.stopPropagation();
			e.preventDefault();
			var file = false,
				type = '',
				elfFrom = null,
				mycwd = '',
				data = null,
				target = e._target || null,
				trf = e.dataTransfer || null,
				kind = (trf.items && trf.items.length && trf.items[0].kind)? trf.items[0].kind : '',
				errors;
			
			if (trf) {
				try {
					elfFrom = trf.getData('elfinderfrom');
					if (elfFrom) {
						mycwd = window.location.href + fm.cwd().hash;
						if ((!target && elfFrom === mycwd) || target === mycwd) {
							dfrd.reject();
							return;
						}
					}
				} catch(e) {}
				
				if (kind === 'file' && (trf.items[0].getAsEntry || trf.items[0].webkitGetAsEntry)) {
					file = trf;
					type = 'data';
				} else if (kind !== 'string' && trf.files && trf.files.length && jQuery.inArray('Text', trf.types) === -1) {
					file = trf.files;
					type = 'files';
				} else {
					try {
						if ((data = trf.getData('text/html')) && data.match(/<(?:img|a)/i)) {
							file = [ data ];
							type = 'html';
						}
					} catch(e) {}
					if (! file) {
						if (data = trf.getData('text')) {
							file = [ data ];
							type = 'text';
						} else if (trf && trf.files) {
							// maybe folder uploading but this UA dose not support it
							kind = 'file';
						}
					}
				}
			}
			if (file) {
				fmUpload({files : file, type : type, target : target, dropEvt : e});
			} else {
				errors = ['errUploadNoFiles'];
				if (kind === 'file') {
					errors.push('errFolderUpload');
				}
				fm.error(errors);
				dfrd.reject();
			}
		};
		
		if (!targets && data) {
			if (data.input || data.files) {
				data.type = 'files';
				fmUpload(data);
			} else if (data.dropEvt) {
				dropUpload(data.dropEvt);
			}
			return dfrd;
		}
		
		paste = function(ev) {
			var e = ev.originalEvent || ev;
			var files = [], items = [];
			var file;
			if (e.clipboardData) {
				if (e.clipboardData.items && e.clipboardData.items.length){
					items = e.clipboardData.items;
					for (var i=0; i < items.length; i++) {
						if (e.clipboardData.items[i].kind == 'file') {
							file = e.clipboardData.items[i].getAsFile();
							files.push(file);
						}
					}
				} else if (e.clipboardData.files && e.clipboardData.files.length) {
					files = e.clipboardData.files;
				}
				if (files.length) {
					upload({files : files, type : 'files', clipdata : true});
					return;
				}
			}
			var my = e.target || e.srcElement;
			requestAnimationFrame(function() {
				var type = 'text',
					src;
				if (my.innerHTML) {
					jQuery(my).find('img').each(function(i, v){
						if (v.src.match(/^webkit-fake-url:\/\//)) {
							// For Safari's bug.
							// ref. https://bugs.webkit.org/show_bug.cgi?id=49141
							//      https://dev.ckeditor.com/ticket/13029
							jQuery(v).remove();
						}
					});
					
					if (jQuery(my).find('a,img').length) {
						type = 'html';
					}
					src = my.innerHTML;
					my.innerHTML = '';
					upload({files : [ src ], type : type});
				}
			});
		};
		
		dialog = jQuery('<div class="elfinder-upload-dialog-wrapper"/>')
			.append(inputButton('multiple', 'selectForUpload'));
		
		if (! fm.UA.Mobile && (function(input) {
			return (typeof input.webkitdirectory !== 'undefined' || typeof input.directory !== 'undefined');})(document.createElement('input'))) {
			dialog.append(inputButton('multiple webkitdirectory directory', 'selectFolder'));
		}
		
		if (targetDir.dirs) {
			
			if (targetDir.hash === cwdHash || fm.navHash2Elm(targetDir.hash).hasClass('elfinder-subtree-loaded')) {
				getSelector().appendTo(dialog);
			} else {
				spinner = jQuery('<div class="elfinder-upload-dirselect" title="' + fm.i18n('nowLoading') + '"/>')
					.append('<span class="elfinder-button-icon elfinder-button-icon-spinner" />')
					.appendTo(dialog);
				fm.request({cmd : 'tree', target : targetDir.hash})
					.done(function() { 
						fm.one('treedone', function() {
							spinner.replaceWith(getSelector());
							uidialog.elfinderdialog('tabstopsInit');
						});
					})
					.fail(function() {
						spinner.remove();
					});
			}
		}
		
		if (fm.dragUpload) {
			dropbox = jQuery('<div class="ui-corner-all elfinder-upload-dropbox elfinder-tabstop" contenteditable="true" data-ph="'+fm.i18n('dropPasteFiles')+'"></div>')
				.on('paste', function(e){
					paste(e);
				})
				.on('mousedown click', function(){
					jQuery(this).trigger('focus');
				})
				.on('focus', function(){
					this.innerHTML = '';
				})
				.on('mouseover', function(){
					jQuery(this).addClass(hover);
				})
				.on('mouseout', function(){
					jQuery(this).removeClass(hover);
				})
				.on('dragenter', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
				  	jQuery(this).addClass(hover);
				})
				.on('dragleave', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
				  	jQuery(this).removeClass(hover);
				})
				.on('dragover', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
					e.originalEvent.dataTransfer.dropEffect = 'copy';
					jQuery(this).addClass(hover);
				})
				.on('drop', function(e) {
					dialog.elfinderdialog('close');
					targets && (e.originalEvent._target = targets[0]);
					dropUpload(e.originalEvent);
				})
				.prependTo(dialog)
				.after('<div class="elfinder-upload-dialog-or">'+fm.i18n('or')+'</div>')[0];
			
		} else {
			pastebox = jQuery('<div class="ui-corner-all elfinder-upload-dropbox" contenteditable="true">'+fm.i18n('dropFilesBrowser')+'</div>')
				.on('paste drop', function(e){
					paste(e);
				})
				.on('mousedown click', function(){
					jQuery(this).trigger('focus');
				})
				.on('focus', function(){
					this.innerHTML = '';
				})
				.on('dragenter mouseover', function(){
					jQuery(this).addClass(hover);
				})
				.on('dragleave mouseout', function(){
					jQuery(this).removeClass(hover);
				})
				.prependTo(dialog)
				.after('<div class="elfinder-upload-dialog-or">'+fm.i18n('or')+'</div>')[0];
			
		}
		
		uidialog = this.fmDialog(dialog, {
			title          : this.title + '<span class="elfinder-upload-target">' + (targetDir? ' - ' + fm.escape(targetDir.i18 || targetDir.name) : '') + '</span>',
			modal          : true,
			resizable      : false,
			destroyOnClose : true,
			propagationEvents : ['mousemove', 'mouseup', 'click'],
			close          : function() {
				var cm = fm.getUI('contextmenu');
				if (cm.is(':visible')) {
					cm.click();
				}
			}
		});
		
		return dfrd;
	};

};


/*
 * File: /js/commands/view.js
 */

/**
 * @class  elFinder command "view"
 * Change current directory view (icons/list)
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.view = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		subMenuRaw;
	this.value          = fm.viewType;
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.options = { ui : 'viewbutton'};
	
	this.getstate = function() {
		return 0;
	};
	
	this.extra = {
		icon: 'menu',
		node: jQuery('<span/>')
			.attr({title: fm.i18n('viewtype')})
			.on('click touchstart', function(e){
				if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
					return;
				}
				var node = jQuery(this);
				e.stopPropagation();
				e.preventDefault();
				fm.trigger('contextmenu', {
					raw: getSubMenuRaw(),
					x: node.offset().left,
					y: node.offset().top
				});
			})
	};

	this.exec = function() {
		var self  = this,
			value = fm.storage('view', this.value == 'list' ? 'icons' : 'list');
		return fm.lazy(function() {
			fm.viewchange();
			self.update(void(0), value);
			this.resolve();
		});
	};

	fm.bind('init', function() {
		subMenuRaw = (function() {
			var cwd = fm.getUI('cwd'),
				raws = [],
				sizeNames = fm.options.uiOptions.cwd.iconsView.sizeNames,
				max = fm.options.uiOptions.cwd.iconsView.sizeMax,
				i, size;
			for (i = 0; i <= max; i++) {
				raws.push(
					{
						label    : fm.i18n(sizeNames[i] || ('Size-' + i + ' icons')),
						icon     : 'view',
						callback : (function(s) {
							return function() {
								cwd.trigger('iconpref', {size: s});
								fm.storage('iconsize', s);
								if (self.value === 'list') {
									self.exec();
								}
							};
						})(i)
					}
				);
			}
			raws.push('|');
			raws.push(
				{
					label    : fm.i18n('viewlist'),
					icon     : 'view-list',
					callback : function() {
						if (self.value !== 'list') {
							self.exec();
						}
					}
				}		
			);
			return raws;
		})();
	}).bind('contextmenucreate', function() {
		self.extra = {
			icon: 'menu',
			node: jQuery('<span/>')
				.attr({title: fm.i18n('cmdview')})
				.on('click touchstart', function(e){
					if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
						return;
					}
					var node = jQuery(this),
						raw = subMenuRaw.concat(),
						idx, i;
					if (self.value === 'list') {
						idx = subMenuRaw.length - 1;
					} else {
						idx = parseInt(fm.storage('iconsize') || 0);
					}
					for (i = 0; i < subMenuRaw.length; i++) {
						if (subMenuRaw[i] !== '|') {
							subMenuRaw[i].options = (i === idx? {'className': 'ui-state-active'} : void(0))
							;
						}
					}
					e.stopPropagation();
					e.preventDefault();
					fm.trigger('contextmenu', {
						raw: subMenuRaw,
						x: node.offset().left,
						y: node.offset().top
					});
				})
		};
	});

};

return elFinder;
}));lib/js/ui/overlay.js000064400000001711147361034410010365 0ustar00
jQuery.fn.elfinderoverlay = function(opts) {
	"use strict";
	var fm = this.parent().elfinder('instance'),
		o, cnt, show, hide;
	
	this.filter(':not(.elfinder-overlay)').each(function() {
		opts = Object.assign({}, opts);
		jQuery(this).addClass('ui-front ui-widget-overlay elfinder-overlay')
			.hide()
			.on('mousedown', function(e) {
				e.preventDefault();
				e.stopPropagation();
			})
			.data({
				cnt  : 0,
				show : typeof(opts.show) == 'function' ? opts.show : function() { },
				hide : typeof(opts.hide) == 'function' ? opts.hide : function() { }
			});
	});
	
	if (opts == 'show') {
		o    = this.eq(0);
		cnt  = o.data('cnt') + 1;
		show = o.data('show');

		fm.toFront(o);
		o.data('cnt', cnt);

		if (o.is(':hidden')) {
			o.show();
			show();
		}
	} 
	
	if (opts == 'hide') {
		o    = this.eq(0);
		cnt  = o.data('cnt') - 1;
		hide = o.data('hide');
		
		o.data('cnt', cnt);
			
		if (cnt <= 0) {
			o.hide();
			hide();
		}
	}
	
	return this;
};
lib/js/ui/navbar.js000064400000012337147361034410010163 0ustar00/**
 * @class elfindernav - elFinder container for diretories tree and places
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindernavbar = function(fm, opts) {
	"use strict";
	this.not('.elfinder-navbar').each(function() {
		var nav    = jQuery(this).hide().addClass('ui-state-default elfinder-navbar'),
			parent = nav.css('overflow', 'hidden').parent(),
			wz     = parent.children('.elfinder-workzone').append(nav),
			ltr    = fm.direction == 'ltr',
			delta, deltaW, handle, swipeHandle, autoHide, setWidth, navdock,
			setWzRect = function() {
				var cwd = fm.getUI('cwd'),
					wz  = fm.getUI('workzone'),
					wzRect = wz.data('rectangle'),
					cwdOffset = cwd.offset();
				wz.data('rectangle', Object.assign(wzRect, { cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width() }));
			},
			setDelta = function() {
				nav.css('overflow', 'hidden');
				delta  = Math.round(nav.outerHeight() - nav.height());
				deltaW = Math.round(navdock.outerWidth() - navdock.innerWidth());
				nav.css('overflow', 'auto');
			};

		fm.one('init', function() {
			navdock = fm.getUI('navdock');
			var set = function() {
					setDelta();
					fm.bind('wzresize', function() {
						var navdockH = 0;
						navdock.width(nav.outerWidth() - deltaW);
						if (navdock.children().length > 1) {
							navdockH = navdock.outerHeight(true);
						}
						nav.height(wz.height() - navdockH - delta);
					}).trigger('wzresize');
				};
			if (fm.cssloaded) {
				set();
			} else {
				fm.one('cssloaded', set);
			}
		})
		.one('opendone',function() {
			handle && handle.trigger('resize');
			nav.css('overflow', 'auto');
		}).bind('themechange', setDelta);
		
		if (fm.UA.Touch) {
			autoHide = fm.storage('autoHide') || {};
			if (typeof autoHide.navbar === 'undefined') {
				autoHide.navbar = (opts.autoHideUA && opts.autoHideUA.length > 0 && jQuery.grep(opts.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length);
				fm.storage('autoHide', autoHide);
			}
			
			if (autoHide.navbar) {
				fm.one('init', function() {
					if (nav.children().length) {
						fm.uiAutoHide.push(function(){ nav.stop(true, true).trigger('navhide', { duration: 'slow', init: true }); });
					}
				});
			}
			
			fm.bind('load', function() {
				if (nav.children().length) {
					swipeHandle = jQuery('<div class="elfinder-navbar-swipe-handle"></div>').hide().appendTo(wz);
					if (swipeHandle.css('pointer-events') !== 'none') {
						swipeHandle.remove();
						swipeHandle = null;
					}
				}
			});
			
			nav.on('navshow navhide', function(e, data) {
				var mode     = (e.type === 'navshow')? 'show' : 'hide',
					duration = (data && data.duration)? data.duration : 'fast',
					handleW = (data && data.handleW)? data.handleW : Math.max(50, fm.getUI().width() / 10);
				nav.stop(true, true)[mode]({
					duration: duration,
					step    : function() {
						fm.trigger('wzresize');
					},
					complete: function() {
						if (swipeHandle) {
							if (mode === 'show') {
								swipeHandle.stop(true, true).hide();
							} else {
								swipeHandle.width(handleW? handleW : '');
								fm.resources.blink(swipeHandle, 'slowonce');
							}
						}
						fm.trigger('navbar'+ mode);
						data.init && fm.trigger('uiautohide');
						setWzRect();
					}
				});
				autoHide.navbar = (mode !== 'show');
				fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {navbar: autoHide.navbar}));
			}).on('touchstart', function(e) {
				if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
					e.originalEvent._preventSwipeX = true;
				}
			});
		}
		
		if (! fm.UA.Mobile) {
			handle = nav.resizable({
					handles : ltr ? 'e' : 'w',
					minWidth : opts.minWidth || 150,
					maxWidth : opts.maxWidth || 500,
					resize : function() {
						fm.trigger('wzresize');
					},
					stop : function(e, ui) {
						fm.storage('navbarWidth', ui.size.width);
						setWzRect();
					}
				})
				.on('resize scroll', function(e) {
					var $this = jQuery(this),
						tm = $this.data('posinit');
					e.preventDefault();
					e.stopPropagation();
					if (! ltr && e.type === 'resize') {
						nav.css('left', 0);
					}
					tm && cancelAnimationFrame(tm);
					$this.data('posinit', requestAnimationFrame(function() {
						var offset = (fm.UA.Opera && nav.scrollLeft())? 20 : 2;
						handle.css('top', 0).css({
							top  : parseInt(nav.scrollTop())+'px',
							left : ltr ? 'auto' : parseInt(nav.scrollRight() -  offset) * -1,
							right: ltr ? parseInt(nav.scrollLeft() - offset) * -1 : 'auto'
						});
						if (e.type === 'resize') {
							fm.getUI('cwd').trigger('resize');
						}
					}));
				})
				.children('.ui-resizable-handle').addClass('ui-front');
		}

		if (setWidth = fm.storage('navbarWidth')) {
			nav.width(setWidth);
		} else {
			if (fm.UA.Mobile) {
				fm.one(fm.cssloaded? 'init' : 'cssloaded', function() {
					var set = function() {
						setWidth = nav.parent().width() / 2;
						if (nav.data('defWidth') > setWidth) {
							nav.width(setWidth);
						} else {
							nav.width(nav.data('defWidth'));
						}
						nav.data('width', nav.width());
						fm.trigger('wzresize');
					};
					nav.data('defWidth', nav.width());
					jQuery(window).on('resize.' + fm.namespace, set);
					set();
				});
			}
		}

	});
	
	return this;
};
lib/js/ui/fullscreenbutton.js000064400000001172147361034410012303 0ustar00/**
 * @class  elFinder toolbar button to switch full scrren mode.
 *
 * @author Naoki Sawada
 **/

jQuery.fn.elfinderfullscreenbutton = function(cmd) {
	"use strict";
	return this.each(function() {
		var button = jQuery(this).elfinderbutton(cmd),
			icon   = button.children('.elfinder-button-icon'),
			tm;
		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var fullscreen = cmd.value;
				icon.addClass('elfinder-button-icon-fullscreen').toggleClass('elfinder-button-icon-unfullscreen', fullscreen);
				cmd.className = fullscreen? 'unfullscreen' : '';
			});
		});
	});
};
lib/js/ui/toast.js000064400000005201147361034410010034 0ustar00/**
 * @class  elFinder toast
 * 
 * This was created inspired by the toastr. Thanks to developers of toastr.
 * CodeSeven/toastr: http://johnpapa.net <https://github.com/CodeSeven/toastr>
 *
 * @author Naoki Sawada
 **/
jQuery.fn.elfindertoast = function(opts, fm) {
	"use strict";
	var defOpts = Object.assign({
		mode: 'success', // or 'info', 'warning' and 'error'
		msg: '',
		showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery
		showDuration: 300,
		showEasing: 'swing', //swing and linear are built into jQuery
		onShown: undefined,
		hideMethod: 'fadeOut',
		hideDuration: 1500,
		hideEasing: 'swing',
		onHidden: undefined,
		timeOut: 3000,
		extNode: undefined,
		button: undefined,
		width: undefined
	}, jQuery.isPlainObject(fm.options.uiOptions.toast.defaults)? fm.options.uiOptions.toast.defaults : {});
	return this.each(function() {
		opts = Object.assign({}, defOpts, opts || {});
		
		var self = jQuery(this),
			show = function(notm) {
				self.stop();
				fm.toFront(self);
				self[opts.showMethod]({
					duration: opts.showDuration,
					easing: opts.showEasing,
					complete: function() {
						opts.onShown && opts.onShown();
						if (!notm && opts.timeOut) {
							rmTm = setTimeout(rm, opts.timeOut);
						}
					}
				});
			},
			rm = function() {
				self[opts.hideMethod]({
					duration: opts.hideDuration,
					easing: opts.hideEasing,
					complete: function() {
						opts.onHidden && opts.onHidden();
						self.remove();
					}
				});
			},
			rmTm;
		
		self.on('click', function(e) {
			e.stopPropagation();
			e.preventDefault();
			rmTm && clearTimeout(rmTm);
			opts.onHidden && opts.onHidden();
			self.stop().remove();
		}).on('mouseenter mouseleave', function(e) {
			if (opts.timeOut) {
				rmTm && clearTimeout(rmTm);
				rmTm = null;
				if (e.type === 'mouseenter') {
					show(true);
				} else {
					rmTm = setTimeout(rm, opts.timeOut);
				}
			}
		}).hide().addClass('toast-' + opts.mode).append(jQuery('<div class="elfinder-toast-msg"></div>').html(opts.msg.replace(/%([a-zA-Z0-9]+)%/g, function(m, m1) {
			return fm.i18n(m1);
		})));
		
		if (opts.extNode) {
			self.append(opts.extNode);
		}

		if (opts.button) {
			self.append(
				jQuery('<button class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"></button>')
				.append(jQuery('<span class="ui-button-text"></span>').text(fm.i18n(opts.button.text)))
				.on('mouseenter mouseleave', function(e) { 
					jQuery(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
				})
				.on('click', opts.button.click || function(){})
			);
		}

		if (opts.width) {
			self.css('max-width', opts.width);
		}
		
		show();
	});
};lib/js/ui/path.js000064400000012340147361034410007640 0ustar00/**
 * @class elFinder ui
 * Display current folder path in statusbar.
 * Click on folder name in path - open folder
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderpath = function(fm, options) {
	"use strict";
	return this.each(function() {
		var query  = '',
			target = '',
			mimes  = [],
			place  = 'statusbar',
			clHover= fm.res('class', 'hover'),
			prefix = 'path' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-',
			wzbase = jQuery('<div class="ui-widget-header ui-helper-clearfix elfinder-workzone-path"></div>'),
			path   = jQuery(this).addClass('elfinder-path').html('&nbsp;')
				.on('mousedown', 'span.elfinder-path-dir', function(e) {
					var hash = jQuery(this).attr('id').substr(prefix.length);
					e.preventDefault();
					if (hash != fm.cwd().hash) {
						jQuery(this).addClass(clHover);
						if (query) {
							fm.exec('search', query, { target: hash, mime: mimes.join(' ') });
						} else {
							fm.trigger('select', {selected : [hash]}).exec('open', hash);
						}
					}
				})
				.prependTo(fm.getUI('statusbar').show()),
			roots = jQuery('<div class="elfinder-path-roots"></div>').on('click', function(e) {
				e.stopPropagation();
				e.preventDefault();
				
				var roots = jQuery.map(fm.roots, function(h) { return fm.file(h); }),
				raw = [];

				jQuery.each(roots, function(i, f) {
					if (! f.phash && fm.root(fm.cwd().hash, true) !== f.hash) {
						raw.push({
							label    : fm.escape(f.i18 || f.name),
							icon     : 'home',
							callback : function() { fm.exec('open', f.hash); },
							options  : {
								iconClass : f.csscls || '',
								iconImg   : f.icon   || ''
							}
						});
					}
				});
				fm.trigger('contextmenu', {
					raw: raw,
					x: e.pageX,
					y: e.pageY
				});
			}).append('<span class="elfinder-button-icon elfinder-button-icon-menu" ></span>').appendTo(wzbase),
			render = function(cwd) {
				var dirs = [],
					names = [];
				jQuery.each(fm.parents(cwd), function(i, hash) {
					var c = (cwd === hash)? 'elfinder-path-dir elfinder-path-cwd' : 'elfinder-path-dir',
						f = fm.file(hash),
						name = fm.escape(f.i18 || f.name);
					names.push(name);
					dirs.push('<span id="'+prefix+hash+'" class="'+c+'" title="'+names.join(fm.option('separator'))+'">'+name+'</span>');
				});
				return dirs.join('<span class="elfinder-path-other">'+fm.option('separator')+'</span>');
			},
			toWorkzone = function() {
				var prev;
				path.children('span.elfinder-path-dir').attr('style', '');
				prev = fm.direction === 'ltr'? jQuery('#'+prefix + fm.cwd().hash).prevAll('span.elfinder-path-dir:first') : jQuery();
				path.scrollLeft(prev.length? prev.position().left : 0);
			},
			fit = function() {
				if (fm.UA.CSS.flex) {
					return;
				}
				var dirs = path.children('span.elfinder-path-dir'),
					cnt  = dirs.length,
					m, bg = 0, ids;
				
				if (place === 'workzone' || cnt < 2) {
					dirs.attr('style', '');
					return;
				}
				path.width(path.css('max-width'));
				dirs.css({maxWidth: (100/cnt)+'%', display: 'inline-block'});
				m = path.width() - 9;
				path.children('span.elfinder-path-other').each(function() {
					m -= jQuery(this).width();
				});
				ids = [];
				dirs.each(function(i) {
					var dir = jQuery(this),
						w   = dir.width();
					m -= w;
					if (w < this.scrollWidth) {
						ids.push(i);
					}
				});
				path.width('');
				if (ids.length) {
					if (m > 0) {
						m = m / ids.length;
						jQuery.each(ids, function(i, k) {
							var d = jQuery(dirs[k]);
							d.css('max-width', d.width() + m);
						});
					}
					dirs.last().attr('style', '');
				} else {
					dirs.attr('style', '');
				}
			},
			hasUiTree, hasUiStat;

		fm.one('init', function() {
			hasUiTree = fm.getUI('tree').length;
			hasUiStat = fm.getUI('stat').length;
			if (! hasUiTree && options.toWorkzoneWithoutNavbar) {
				wzbase.append(path).insertBefore(fm.getUI('workzone'));
				place = 'workzone';
				fm.bind('open', toWorkzone)
				.one('opendone', function() {
					fm.getUI().trigger('resize');
				});
			}
		})
		.bind('open searchend parents', function() {
			var dirs = [];

			query  = '';
			target = '';
			mimes  = [];
			
			path.html(render(fm.cwd().hash));
			if (Object.keys(fm.roots).length > 1) {
				path.css('margin', '');
				roots.show();
			} else {
				path.css('margin', 0);
				roots.hide();
			}
			!hasUiStat && fit();
		})
		.bind('searchstart', function(e) {
			if (e.data) {
				query  = e.data.query || '';
				target = e.data.target || '';
				mimes  = e.data.mimes || [];
			}
		})
		.bind('search', function(e) {
			var dirs = [],
				html = '';
			if (target) {
				html = render(target);
			} else {
				html = fm.i18n('btnAll');
			}
			path.html('<span class="elfinder-path-other">'+fm.i18n('searcresult') + ': </span>' + html);
			fit();
		})
		// on swipe to navbar show/hide
		.bind('navbarshow navbarhide', function() {
			var wz = fm.getUI('workzone');
			if (this.type === 'navbarshow') {
				fm.unbind('open', toWorkzone);
				path.prependTo(fm.getUI('statusbar'));
				wzbase.detach();
				place = 'statusbar';
			} else {
				wzbase.append(path).insertBefore(wz);
				place = 'workzone';
				toWorkzone();
				fm.bind('open', toWorkzone);
			}
			fm.trigger('uiresize');
		})
		.bind('resize uistatchange', fit);
	});
};
lib/js/ui/panel.js000064400000001057147361034410010006 0ustar00jQuery.fn.elfinderpanel = function(fm) {
	"use strict";
	return this.each(function() {
		var panel = jQuery(this).addClass('elfinder-panel ui-state-default ui-corner-all'),
			margin = 'margin-'+(fm.direction == 'ltr' ? 'left' : 'right');
		
		fm.one('load', function(e) {
			var navbar = fm.getUI('navbar');
			
			panel.css(margin, parseInt(navbar.outerWidth(true)));
			navbar.on('resize', function(e) {
				e.preventDefault();
				e.stopPropagation();
				panel.is(':visible') && panel.css(margin, parseInt(navbar.outerWidth(true)));
			});
		});
	});
};
lib/js/ui/button.js000064400000010173147361034410010221 0ustar00/**
 * @class  elFinder toolbar button widget.
 * If command has variants - create menu
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderbutton = function(cmd) {
	"use strict";
	return this.each(function() {
		
		var c        = 'class',
			fm       = cmd.fm,
			disabled = fm.res(c, 'disabled'),
			active   = fm.res(c, 'active'),
			hover    = fm.res(c, 'hover'),
			item     = 'elfinder-button-menu-item',
			selected = 'elfinder-button-menu-item-selected',
			menu,
			text     = jQuery('<span class="elfinder-button-text">'+cmd.title+'</span>'),
			prvCname = cmd.className? cmd.className : cmd.name,
			button   = jQuery(this).addClass('ui-state-default elfinder-button tool-op-'+prvCname)
				.attr('title', cmd.title)
				.append('<span class="elfinder-button-icon elfinder-button-icon-' + prvCname + '"></span>', text)
				.on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button[e.type == 'mouseleave' ? 'removeClass' : 'addClass'](hover);})
				.on('click', function(e) { 
					if (!button.hasClass(disabled)) {
						if (menu && cmd.variants.length >= 1) {
							// close other menus
							menu.is(':hidden') && fm.getUI().click();
							e.stopPropagation();
							menu.css(getMenuOffset()).slideToggle({
								duration: 100,
								done: function(e) {
									fm[menu.is(':visible')? 'toFront' : 'toHide'](menu);
								}
							});
						} else {
							fm.exec(cmd.name, getSelected(), {_userAction: true, _currentType: 'toolbar', _currentNode: button });
						}
						
					}
				}),
			hideMenu = function() {
				fm.toHide(menu);
			},
			getMenuOffset = function() {
				var fmNode = fm.getUI(),
					baseOffset = fmNode.offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					left : buttonOffset.left - baseOffset.left,
					maxHeight : fmNode.height() - 40
				};
			},
			getSelected = function() {
				var sel = fm.selected(),
					cwd;
				if (!sel.length) {
					if (cwd = fm.cwd()) {
						sel = [ fm.cwd().hash ];
					} else {
						sel = void(0);
					}
				}
				return sel;
			},
			tm;
			
		text.hide();
		
		// set self button object to cmd object
		cmd.button = button;
		
		// if command has variants create menu
		if (Array.isArray(cmd.variants)) {
			button.addClass('elfinder-menubutton');
			
			menu = jQuery('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-' + prvCname + '-menu ui-corner-all"></div>')
				.hide()
				.appendTo(fm.getUI())
				.on('mouseenter mouseleave', '.'+item, function() { jQuery(this).toggleClass(hover); })
				.on('click', '.'+item, function(e) {
					var opts = jQuery(this).data('value');
					e.preventDefault();
					e.stopPropagation();
					button.removeClass(hover);
					fm.toHide(menu);
					if (typeof opts === 'undefined') {
						opts = {};
					}
					if (typeof opts === 'object') {
						opts._userAction = true;
					}
					fm.exec(cmd.name, getSelected(), opts);
				})
				.on('close', hideMenu);

			fm.bind('disable select', hideMenu).getUI().on('click', hideMenu);
			
			cmd.change(function() {
				menu.html('');
				jQuery.each(cmd.variants, function(i, variant) {
					menu.append(jQuery('<div class="'+item+'">'+variant[1]+'</div>').data('value', variant[0]).addClass(variant[0] == cmd.value ? selected : ''));
				});
			});
		}	
			
		cmd.change(function() {
			var cName;
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				if (cmd.disabled()) {
					button.removeClass(active+' '+hover).addClass(disabled);
				} else {
					button.removeClass(disabled);
					button[cmd.active() ? 'addClass' : 'removeClass'](active);
				}
				if (cmd.syncTitleOnChange) {
					cName = cmd.className? cmd.className : cmd.name;
					if (prvCname !== cName) {
						button.children('.elfinder-button-icon').removeClass('elfinder-button-icon-' + prvCname).addClass('elfinder-button-icon-' + cName);
						if (menu) {
							menu.removeClass('elfinder-button-' + prvCname + '-menu').addClass('elfinder-button-' + cName + '-menu');
						}
						prvCname = cName;
					}
					text.html(cmd.title);
					button.attr('title', cmd.title);
				}
			});
		})
		.change();
	});
};
lib/js/ui/searchbutton.js000064400000024057147361034410011415 0ustar00/**
 * @class  elFinder toolbar search button widget.
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindersearchbutton = function(cmd) {
	"use strict";
	return this.each(function() {
		var result = false,
			fm     = cmd.fm,
			disabled = fm.res('class', 'disabled'),
			isopts = cmd.options.incsearch || { enable: false },
			sTypes = cmd.options.searchTypes,
			id     = function(name){return fm.namespace + fm.escape(name);},
			toolbar= fm.getUI('toolbar'),
			btnCls = fm.res('class', 'searchbtn'),
			button = jQuery(this)
				.hide()
				.addClass('ui-widget-content elfinder-button '+btnCls)
				.on('click', function(e) {
					e.stopPropagation();
				}),
			getMenuOffset = function() {
				var fmNode = fm.getUI(),
					baseOffset = fmNode.offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					maxHeight : fmNode.height() - 40
				};
			},
			search = function() {
				input.data('inctm') && clearTimeout(input.data('inctm'));
				var val = jQuery.trim(input.val()),
					from = !jQuery('#' + id('SearchFromAll')).prop('checked'),
					mime = jQuery('#' + id('SearchMime')).prop('checked'),
					type = '';
				if (from) {
					if (jQuery('#' + id('SearchFromVol')).prop('checked')) {
						from = fm.root(fm.cwd().hash);
					} else {
						from = fm.cwd().hash;
					}
				}
				if (mime) {
					mime = val;
					val = '.';
				}
				if (typeSet) {
					type = typeSet.children('input:checked').val();
				}
				if (val) {
					input.trigger('focus');
					cmd.exec(val, from, mime, type).done(function() {
						result = true;
					}).fail(function() {
						abort();
					});
					
				} else {
					fm.trigger('searchend');
				}
			},
			abort = function() {
				input.data('inctm') && clearTimeout(input.data('inctm'));
				input.val('').trigger('blur');
				if (result || incVal) {
					result = false;
					incVal = '';
					fm.lazy(function() {
						fm.trigger('searchend');
					});
				}
			},
			incVal = '',
			input  = jQuery('<input type="text" size="42"/>')
				.on('focus', function() {
					// close other menus
					!button.hasClass('ui-state-active') && fm.getUI().click();
					inFocus = true;
					incVal = '';
					button.addClass('ui-state-active');
					fm.trigger('uiresize');
					opts && opts.css(getMenuOffset()).slideDown(function() {
						// Care for on browser window re-active
						button.addClass('ui-state-active');
						fm.toFront(opts);
					});
				})
				.on('blur', function() {
					inFocus = false;
					if (opts) {
						if (!opts.data('infocus')) {
							opts.slideUp(function() {
								button.removeClass('ui-state-active');
								fm.trigger('uiresize');
								fm.toHide(opts);
							});
						} else {
							opts.data('infocus', false);
						}
					} else {
						button.removeClass('ui-state-active');
					}
				})
				.appendTo(button)
				// to avoid fm shortcuts on arrows
				.on('keypress', function(e) {
					e.stopPropagation();
				})
				.on('keydown', function(e) {
					e.stopPropagation();
					if (e.keyCode === jQuery.ui.keyCode.ENTER) {
						search();
					} else if (e.keyCode === jQuery.ui.keyCode.ESCAPE) {
						e.preventDefault();
						abort();
					}
				}),
			opts, typeSet, cwdReady, inFocus;
		
		if (isopts.enable) {
			isopts.minlen = isopts.minlen || 2;
			isopts.wait = isopts.wait || 500;
			input
				.attr('title', fm.i18n('incSearchOnly'))
				.on('compositionstart', function() {
					input.data('composing', true);
				})
				.on('compositionend', function() {
					input.removeData('composing');
					input.trigger('input'); // for IE, edge
				})
				.on('input', function() {
					if (! input.data('composing')) {
						input.data('inctm') && clearTimeout(input.data('inctm'));
						input.data('inctm', setTimeout(function() {
							var val = input.val();
							if (val.length === 0 || val.length >= isopts.minlen) {
								(incVal !== val) && fm.trigger('incsearchstart', {
									query: val,
									type: typeSet? typeSet.children('input:checked').val() : 'searchName'
								});
								incVal = val;
								if (val === '' && fm.searchStatus.state > 1 && fm.searchStatus.query) {
									input.val(fm.searchStatus.query).trigger('select');
								} 
							}
						}, isopts.wait));
					}
				});
			
			if (fm.UA.ltIE8) {
				input.on('keydown', function(e) {
						if (e.keyCode === 229) {
							input.data('imetm') && clearTimeout(input.data('imetm'));
							input.data('composing', true);
							input.data('imetm', setTimeout(function() {
								input.removeData('composing');
							}, 100));
						}
					})
					.on('keyup', function(e) {
						input.data('imetm') && clearTimeout(input.data('imetm'));
						if (input.data('composing')) {
							e.keyCode === jQuery.ui.keyCode.ENTER && input.trigger('compositionend');
						} else {
							input.trigger('input');
						}
					});
			}
		}
		
		jQuery('<span class="ui-icon ui-icon-search" title="'+cmd.title+'"></span>')
			.appendTo(button)
			.on('mousedown', function(e) {
				e.stopPropagation();
				e.preventDefault();
				if (button.hasClass('ui-state-active')) {
					search();
				} else {
					input.trigger('focus');
				}
			});
		
		jQuery('<span class="ui-icon ui-icon-close"></span>')
			.appendTo(button)
			.on('mousedown', function(e) {
				e.stopPropagation();
				e.preventDefault();
				if (input.val() === '' && !button.hasClass('ui-state-active')) {
					input.trigger('focus');
				} else {
					abort();
				}
			});
		
		// wait when button will be added to DOM
		fm.bind('toolbarload', function(){
			var parent = button.parent();
			if (parent.length) {
				toolbar.prepend(button.show());
				parent.remove();
				// position icons for ie7
				if (fm.UA.ltIE7) {
					var icon = button.children(fm.direction == 'ltr' ? '.ui-icon-close' : '.ui-icon-search');
					icon.css({
						right : '',
						left  : parseInt(button.width())-icon.outerWidth(true)
					});
				}
			}
		});
		
		fm
			.one('init', function() {
				fm.getUI('cwd').on('touchstart click', function() {
					inFocus && input.trigger('blur');
				});
			})
			.one('open', function() {
				opts = (fm.api < 2.1)? null : jQuery('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-search-menu ui-corner-all"></div>')
					.append(
						jQuery('<div class="buttonset"></div>')
							.append(
								jQuery('<input id="'+id('SearchFromCwd')+'" name="serchfrom" type="radio" checked="checked"/><label for="'+id('SearchFromCwd')+'">'+fm.i18n('btnCwd')+'</label>'),
								jQuery('<input id="'+id('SearchFromVol')+'" name="serchfrom" type="radio"/><label for="'+id('SearchFromVol')+'">'+fm.i18n('btnVolume')+'</label>'),
								jQuery('<input id="'+id('SearchFromAll')+'" name="serchfrom" type="radio"/><label for="'+id('SearchFromAll')+'">'+fm.i18n('btnAll')+'</label>')
							),
						jQuery('<div class="buttonset elfinder-search-type"></div>')
							.append(
								jQuery('<input id="'+id('SearchName')+'" name="serchcol" type="radio" checked="checked" value="SearchName"/><label for="'+id('SearchName')+'">'+fm.i18n('btnFileName')+'</label>')
							)
					)
					.hide()
					.appendTo(fm.getUI());
				if (opts) {
					if (sTypes) {
						typeSet = opts.find('.elfinder-search-type');
						jQuery.each(cmd.options.searchTypes, function(i, v) {
							typeSet.append(jQuery('<input id="'+id(i)+'" name="serchcol" type="radio" value="'+fm.escape(i)+'"/><label for="'+id(i)+'">'+fm.i18n(v.name)+'</label>'));
						});
					}
					opts.find('div.buttonset').buttonset();
					jQuery('#'+id('SearchFromAll')).next('label').attr('title', fm.i18n('searchTarget', fm.i18n('btnAll')));
					if (sTypes) {
						jQuery.each(sTypes, function(i, v) {
							if (v.title) {
								jQuery('#'+id(i)).next('label').attr('title', fm.i18n(v.title));
							}
						});
					}
					opts.on('mousedown', 'div.buttonset', function(e){
							e.stopPropagation();
							opts.data('infocus', true);
						})
						.on('click', 'input', function(e) {
							e.stopPropagation();
							jQuery.trim(input.val())? search() : input.trigger('focus');
						})
						.on('close', function() {
							input.trigger('blur');
						});
				}
			})
			.bind('searchend', function() {
				input.val('');
			})
			.bind('open parents', function() {
				var dirs    = [],
					volroot = fm.file(fm.root(fm.cwd().hash));
				
				if (volroot) {
					jQuery.each(fm.parents(fm.cwd().hash), function(i, hash) {
						dirs.push(fm.file(hash).name);
					});
		
					jQuery('#'+id('SearchFromCwd')).next('label').attr('title', fm.i18n('searchTarget', dirs.join(fm.option('separator'))));
					jQuery('#'+id('SearchFromVol')).next('label').attr('title', fm.i18n('searchTarget', volroot.name));
				}
			})
			.bind('open', function() {
				incVal && abort();
			})
			.bind('cwdinit', function() {
				cwdReady = false;
			})
			.bind('cwdrender',function() {
				cwdReady = true;
			})
			.bind('keydownEsc', function() {
				if (incVal && incVal.substr(0, 1) === '/') {
					incVal = '';
					input.val('');
					fm.trigger('searchend');
				}
			})
			.shortcut({
				pattern     : 'ctrl+f f3',
				description : cmd.title,
				callback    : function() { 
					input.trigger('select').trigger('focus');
				}
			})
			.shortcut({
				pattern     : 'a b c d e f g h i j k l m n o p q r s t u v w x y z dig0 dig1 dig2 dig3 dig4 dig5 dig6 dig7 dig8 dig9 num0 num1 num2 num3 num4 num5 num6 num7 num8 num9',
				description : fm.i18n('firstLetterSearch'),
				callback    : function(e) { 
					if (! cwdReady) { return; }
					
					var code = e.originalEvent.keyCode,
						next = function() {
							var sel = fm.selected(),
								key = jQuery.ui.keyCode[(!sel.length || fm.cwdHash2Elm(sel[0]).next('[id]').length)? 'RIGHT' : 'HOME'];
							jQuery(document).trigger(jQuery.Event('keydown', { keyCode: key, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
						},
						val;
					if (code >= 96 && code <= 105) {
						code -= 48;
					}
					val = '/' + String.fromCharCode(code);
					if (incVal !== val) {
						input.val(val);
						incVal = val;
						fm
							.trigger('incsearchstart', { query: val })
							.one('cwdrender', next);
					} else{
						next();
					}
				}
			});

	});
};
lib/js/ui/places.js000064400000040317147361034410010160 0ustar00/**
 * @class elFinder places/favorites ui
 *
 * @author Dmitry (dio) Levashov
 * @author Naoki Sawada
 **/
jQuery.fn.elfinderplaces = function(fm, opts) {
	"use strict";
	return this.each(function() {
		var dirs      = {},
			c         = 'class',
			navdir    = fm.res(c, 'navdir'),
			collapsed = fm.res(c, 'navcollapse'),
			expanded  = fm.res(c, 'navexpand'),
			hover     = fm.res(c, 'hover'),
			clroot    = fm.res(c, 'treeroot'),
			dropover  = fm.res(c, 'adroppable'),
			tpl       = fm.res('tpl', 'placedir'),
			ptpl      = fm.res('tpl', 'perms'),
			spinner   = jQuery(fm.res('tpl', 'navspinner')),
			suffix    = opts.suffix? opts.suffix : '',
			key       = 'places' + suffix,
			menuTimer = null,
			/**
			 * Convert places dir node into dir hash
			 *
			 * @param  String  directory id
			 * @return String
			 **/
			id2hash   = function(id) { return id.substr(6);	},
			/**
			 * Convert places dir hash into dir node id
			 *
			 * @param  String  directory id
			 * @return String
			 **/
			hash2id   = function(hash) { return 'place-'+hash; },

			/**
			 * Convert places dir hash into dir node elment (jQuery object)
			 *
			 * @param  String  directory id
			 * @return Object
			 **/
			hash2elm  = function(hash) { return jQuery(document.getElementById(hash2id(hash))); },
			
			/**
			 * Save current places state
			 *
			 * @return void
			 **/
			save      = function() {
				var hashes = [], data = {};
				
				hashes = jQuery.map(subtree.children().find('[id]'), function(n) {
					return id2hash(n.id);
				});
				if (hashes.length) {
					jQuery.each(hashes.reverse(), function(i, h) {
						data[h] = dirs[h];
					});
				} else {
					data = null;
				}
				
				fm.storage(key, data);
			},
			/**
			 * Init dir at places
			 *
			 * @return void
			 **/
			init = function() {
				var dat, hashes;
				key = 'places'+(opts.suffix? opts.suffix : ''),
				dirs = {};
				dat = fm.storage(key);
				if (typeof dat === 'string') {
					// old data type elFinder <= 2.1.12
					dat = jQuery.grep(dat.split(','), function(hash) { return hash? true : false;});
					jQuery.each(dat, function(i, d) {
						var dir = d.split('#');
						dirs[dir[0]] = dir[1]? dir[1] : dir[0];
					});
				} else if (jQuery.isPlainObject(dat)) {
					dirs = dat;
				}
				// allow modify `dirs`
				/**
				 * example for preset places
				 * 
				 * elfinderInstance.bind('placesload', function(e, fm) {
				 * 	//if (fm.storage(e.data.storageKey) === null) { // for first time only
				 * 	if (!fm.storage(e.data.storageKey)) {           // for empty places
				 * 		e.data.dirs[targetHash] = fallbackName;     // preset folder
				 * 	}
				 * }
				 **/
				fm.trigger('placesload', {dirs: dirs, storageKey: key}, true);
				
				hashes = Object.keys(dirs);
				if (hashes.length) {
					root.prepend(spinner);
					
					fm.request({
						data : {cmd : 'info', targets : hashes},
						preventDefault : true
					})
					.done(function(data) {
						var exists = {};
						
						data.files && data.files.length && fm.cache(data.files);
						
						jQuery.each(data.files, function(i, f) {
							var hash = f.hash;
							exists[hash] = f;
						});
						jQuery.each(dirs, function(h, f) {
							add(exists[h] || Object.assign({notfound: true}, f));
						});
						if (fm.storage('placesState') > 0) {
							root.trigger('click');
						}
					})
					.always(function() {
						spinner.remove();
					});
				}
			},
			/**
			 * Return node for given dir object
			 *
			 * @param  Object  directory object
			 * @return jQuery
			 **/
			create    = function(dir, hash) {
				return jQuery(tpl.replace(/\{id\}/, hash2id(dir? dir.hash : hash))
						.replace(/\{name\}/, fm.escape(dir? dir.i18 || dir.name : hash))
						.replace(/\{cssclass\}/, dir? (fm.perms2class(dir) + (dir.notfound? ' elfinder-na' : '') + (dir.csscls? ' '+dir.csscls : '')) : '')
						.replace(/\{permissions\}/, (dir && (!dir.read || !dir.write || dir.notfound))? ptpl : '')
						.replace(/\{title\}/, dir? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : '')
						.replace(/\{symlink\}/, '')
						.replace(/\{style\}/, (dir && dir.icon)? fm.getIconStyle(dir) : ''));
			},
			/**
			 * Add new node into places
			 *
			 * @param  Object  directory object
			 * @return void
			 **/
			add = function(dir) {
				var node, hash;

				if (dir.mime !== 'directory') {
					return false;
				}
				hash = dir.hash;
				if (!fm.files().hasOwnProperty(hash)) {
					// update cache
					fm.trigger('tree', {tree: [dir]});
				}
				
				node = create(dir, hash);
				
				dirs[hash] = dir;
				subtree.prepend(node);
				root.addClass(collapsed);
				sortBtn.toggle(subtree.children().length > 1);
				
				return true;
			},
			/**
			 * Remove dir from places
			 *
			 * @param  String  directory hash
			 * @return String  removed name
			 **/
			remove = function(hash) {
				var name = null, tgt, cnt;

				if (dirs[hash]) {
					delete dirs[hash];
					tgt = hash2elm(hash);
					if (tgt.length) {
						name = tgt.text();
						tgt.parent().remove();
						cnt = subtree.children().length;
						sortBtn.toggle(cnt > 1);
						if (! cnt) {
							root.removeClass(collapsed);
							places.removeClass(expanded);
							subtree.slideToggle(false);
						}
					}
				}
				
				return name;
			},
			/**
			 * Move up dir on places
			 *
			 * @param  String  directory hash
			 * @return void
			 **/
			moveup = function(hash) {
				var self = hash2elm(hash),
					tgt  = self.parent(),
					prev = tgt.prev('div'),
					cls  = 'ui-state-hover',
					ctm  = fm.getUI('contextmenu');
				
				menuTimer && clearTimeout(menuTimer);
				
				if (prev.length) {
					ctm.find(':first').data('placesHash', hash);
					self.addClass(cls);
					tgt.insertBefore(prev);
					prev = tgt.prev('div');
					menuTimer = setTimeout(function() {
						self.removeClass(cls);
						if (ctm.find(':first').data('placesHash') === hash) {
							ctm.hide().empty();
						}
					}, 1500);
				}
				
				if(!prev.length) {
					self.removeClass(cls);
					ctm.hide().empty();
				}
			},
			/**
			 * Update dir at places
			 *
			 * @param  Object   directory
			 * @param  String   previous hash
			 * @return Boolean
			 **/
			update = function(dir, preHash) {
				var hash = dir.hash,
					tgt  = hash2elm(preHash || hash),
					node = create(dir, hash);

				if (tgt.length > 0) {
					tgt.parent().replaceWith(node);
					dirs[hash] = dir;
					return true;
				} else {
					return false;
				}
			},
			/**
			 * Remove all dir from places
			 *
			 * @return void
			 **/
			clear = function() {
				subtree.empty();
				root.removeClass(collapsed);
				places.removeClass(expanded);
				subtree.slideToggle(false);
			},
			/**
			 * Sort places dirs A-Z
			 *
			 * @return void
			 **/
			sort = function() {
				jQuery.each(dirs, function(h, f) {
					var dir = fm.file(h) || f,
						node = create(dir, h),
						ret = null;
					if (!dir) {
						node.hide();
					}
					if (subtree.children().length) {
						jQuery.each(subtree.children(), function() {
							var current =  jQuery(this);
							if ((dir.i18 || dir.name).localeCompare(current.children('.'+navdir).text()) < 0) {
								ret = !node.insertBefore(current);
								return ret;
							}
						});
						if (ret !== null) {
							return true;
						}
					}
					!hash2elm(h).length && subtree.append(node);
				});
				save();
			},
			// sort button
			sortBtn = jQuery('<span class="elfinder-button-icon elfinder-button-icon-sort elfinder-places-root-icon" title="'+fm.i18n('cmdsort')+'"></span>')
				.hide()
				.on('click', function(e) {
					e.stopPropagation();
					subtree.empty();
					sort();
				}
			),
			/**
			 * Node - wrapper for places root
			 *
			 * @type jQuery
			 **/
			wrapper = create({
					hash  : 'root-'+fm.namespace, 
					name  : fm.i18n(opts.name, 'places'),
					read  : true,
					write : true
				}),
			/**
			 * Places root node
			 *
			 * @type jQuery
			 **/
			root = wrapper.children('.'+navdir)
				.addClass(clroot)
				.on('click', function(e) {
					e.stopPropagation();
					if (root.hasClass(collapsed)) {
						places.toggleClass(expanded);
						subtree.slideToggle();
						fm.storage('placesState', places.hasClass(expanded)? 1 : 0);
					}
				})
				.append(sortBtn),
			/**
			 * Container for dirs
			 *
			 * @type jQuery
			 **/
			subtree = wrapper.children('.'+fm.res(c, 'navsubtree')),
			
			/**
			 * Main places container
			 *
			 * @type jQuery
			 **/
			places = jQuery(this).addClass(fm.res(c, 'tree')+' elfinder-places ui-corner-all')
				.hide()
				.append(wrapper)
				.appendTo(fm.getUI('navbar'))
				.on('mouseenter mouseleave', '.'+navdir, function(e) {
					jQuery(this).toggleClass('ui-state-hover', (e.type == 'mouseenter'));
				})
				.on('click', '.'+navdir, function(e) {
					var p = jQuery(this);
					if (p.data('longtap')) {
						e.stopPropagation();
						return;
					}
					! p.hasClass('elfinder-na') && fm.exec('open', p.attr('id').substr(6));
				})
				.on('contextmenu', '.'+navdir+':not(.'+clroot+')', function(e) {
					var self = jQuery(this),
						hash = self.attr('id').substr(6);
					
					e.preventDefault();

					fm.trigger('contextmenu', {
						raw : [{
							label    : fm.i18n('moveUp'),
							icon     : 'up',
							remain   : true,
							callback : function() { moveup(hash); save(); }
						},'|',{
							label    : fm.i18n('rmFromPlaces'),
							icon     : 'rm',
							callback : function() { remove(hash); save(); }
						}],
						'x'       : e.pageX,
						'y'       : e.pageY
					});
					
					self.addClass('ui-state-hover');
					
					fm.getUI('contextmenu').children().on('mouseenter', function() {
						self.addClass('ui-state-hover');
					});
					
					fm.bind('closecontextmenu', function() {
						self.removeClass('ui-state-hover');
					});
				})
				.droppable({
					tolerance  : 'pointer',
					accept     : '.elfinder-cwd-file-wrapper,.elfinder-tree-dir,.elfinder-cwd-file',
					hoverClass : fm.res('class', 'adroppable'),
					classes    : { // Deprecated hoverClass jQueryUI>=1.12.0
						'ui-droppable-hover': fm.res('class', 'adroppable')
					},
					over       : function(e, ui) {
						var helper = ui.helper,
							dir    = jQuery.grep(helper.data('files'), function(h) { return (fm.file(h).mime === 'directory' && !dirs[h])? true : false; });
						e.stopPropagation();
						helper.data('dropover', helper.data('dropover') + 1);
						if (fm.insideWorkzone(e.pageX, e.pageY)) {
							if (dir.length > 0) {
								helper.addClass('elfinder-drag-helper-plus');
								fm.trigger('unlockfiles', {files : helper.data('files'), helper: helper});
							} else {
								jQuery(this).removeClass(dropover);
							}
						}
					},
					out : function(e, ui) {
						var helper = ui.helper;
						e.stopPropagation();
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0));
						jQuery(this).removeData('dropover')
						       .removeClass(dropover);
					},
					drop       : function(e, ui) {
						var helper  = ui.helper,
							resolve = true;
						
						jQuery.each(helper.data('files'), function(i, hash) {
							var dir = fm.file(hash);
							
							if (dir && dir.mime == 'directory' && !dirs[dir.hash]) {
								add(dir);
							} else {
								resolve = false;
							}
						});
						save();
						resolve && helper.hide();
					}
				})
				// for touch device
				.on('touchstart', '.'+navdir+':not(.'+clroot+')', function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var hash = jQuery(this).attr('id').substr(6),
					p = jQuery(this)
					.addClass(hover)
					.data('longtap', null)
					.data('tmlongtap', setTimeout(function(){
						// long tap
						p.data('longtap', true);
						fm.trigger('contextmenu', {
							raw : [{
								label    : fm.i18n('rmFromPlaces'),
								icon     : 'rm',
								callback : function() { remove(hash); save(); }
							}],
							'x'       : e.originalEvent.touches[0].pageX,
							'y'       : e.originalEvent.touches[0].pageY
						});
					}, 500));
				})
				.on('touchmove touchend', '.'+navdir+':not(.'+clroot+')', function(e) {
					clearTimeout(jQuery(this).data('tmlongtap'));
					if (e.type == 'touchmove') {
						jQuery(this).removeClass(hover);
					}
				});

		if (jQuery.fn.sortable) {
			subtree.addClass('touch-punch')
			.sortable({
				appendTo : fm.getUI(),
				revert   : false,
				helper   : function(e) {
					var dir = jQuery(e.target).parent();
						
					dir.children().removeClass('ui-state-hover');
					
					return jQuery('<div class="ui-widget elfinder-place-drag elfinder-'+fm.direction+'"></div>')
							.append(jQuery('<div class="elfinder-navbar"></div>').show().append(dir.clone()));

				},
				stop     : function(e, ui) {
					var target = jQuery(ui.item[0]),
						top    = places.offset().top,
						left   = places.offset().left,
						width  = places.width(),
						height = places.height(),
						x      = e.pageX,
						y      = e.pageY;
					
					if (!(x > left && x < left+width && y > top && y < y+height)) {
						remove(id2hash(target.children(':first').attr('id')));
						save();
					}
				},
				update   : function(e, ui) {
					save();
				}
			});
		}

		// "on regist" for command exec
		jQuery(this).on('regist', function(e, files){
			var added = false;
			jQuery.each(files, function(i, dir) {
				if (dir && dir.mime == 'directory' && !dirs[dir.hash]) {
					if (add(dir)) {
						added = true;
					}
				}
			});
			added && save();
		});
	

		// on fm load - show places and load files from backend
		fm.one('load', function() {
			var dat, hashes;
			
			if (fm.oldAPI) {
				return;
			}
			
			places.show().parent().show();

			init();

			fm.change(function(e) {
				var changed = false;
				jQuery.each(e.data.changed, function(i, file) {
					if (dirs[file.hash]) {
						if (file.mime !== 'directory') {
							if (remove(file.hash)) {
								changed = true;
							}
						} else {
							if (update(file)) {
								changed = true;
							}
						}
					}
				});
				changed && save();
			})
			.bind('rename', function(e) {
				var changed = false;
				if (e.data.removed) {
					jQuery.each(e.data.removed, function(i, hash) {
						if (e.data.added[i]) {
							if (update(e.data.added[i], hash)) {
								changed = true;
							}
						}
					});
				}
				changed && save();
			})
			.bind('rm paste', function(e) {
				var names = [],
					changed = false;
				if (e.data.removed) {
					jQuery.each(e.data.removed, function(i, hash) {
						var name = remove(hash);
						name && names.push(name);
					});
				}
				if (names.length) {
					changed = true;
				}
				if (e.data.added && names.length) {
					jQuery.each(e.data.added, function(i, file) {
						if (jQuery.inArray(file.name, names) !== 1) {
							file.mime == 'directory' && add(file);
						}
					});
				}
				changed && save();
			})
			.bind('sync netmount', function() {
				var ev = this,
					opSuffix = opts.suffix? opts.suffix : '',
					hashes;
				
				if (ev.type === 'sync') {
					// check is change of opts.suffix
					if (suffix !== opSuffix) {
						suffix = opSuffix;
						clear();
						init();
						return;
					}
				}
				
				hashes = Object.keys(dirs);
				if (hashes.length) {
					root.prepend(spinner);

					fm.request({
						data : {cmd : 'info', targets : hashes},
						preventDefault : true
					})
					.done(function(data) {
						var exists  = {},
							updated = false,
							cwd     = fm.cwd().hash;
						jQuery.each(data.files || [], function(i, file) {
							var hash = file.hash;
							exists[hash] = file;
							if (!fm.files().hasOwnProperty(file.hash)) {
								// update cache
								fm.updateCache({tree: [file]});
							}
						});
						jQuery.each(dirs, function(h, f) {
							if (Boolean(f.notfound) === Boolean(exists[h])) {
								if ((f.phash === cwd && ev.type !== 'netmount') || (exists[h] && exists[h].mime !== 'directory')) {
									if (remove(h)) {
										updated = true;
									}
								} else {
									if (update(exists[h] || Object.assign({notfound: true}, f))) {
										updated = true;
									}
								}
							} else if (exists[h] && exists[h].phash != cwd) {
								// update permission of except cwd
								update(exists[h]);
							}
						});
						updated && save();
					})
					.always(function() {
						spinner.remove();
					});
				}
			});
			
		});
		
	});
};
lib/js/ui/navdock.js000064400000010566147361034410010341 0ustar00/**
 * @class elfindernavdock - elFinder container for preview etc at below the navbar
 *
 * @author Naoki Sawada
 **/
jQuery.fn.elfindernavdock = function(fm, opts) {
	"use strict";
	this.not('.elfinder-navdock').each(function() {
		var self = jQuery(this).hide().addClass('ui-state-default elfinder-navdock touch-punch'),
			node = self.parent(),
			wz   = node.children('.elfinder-workzone').append(self),
			resize = function(to, h) {
				var curH = h || self.height(),
					diff = to - curH,
					len  = Object.keys(sizeSyncs).length,
					calc = len? diff / len : 0,
					ovf;
				if (diff) {
					ovf = self.css('overflow');
					self.css('overflow', 'hidden');
					self.height(to);
					jQuery.each(sizeSyncs, function(id, n) {
						n.height(n.height() + calc).trigger('resize.' + fm.namespace);
					});
					fm.trigger('wzresize');
					self.css('overflow', ovf);
				}
			},
			handle = jQuery('<div class="ui-front ui-resizable-handle ui-resizable-n"></div>').appendTo(self),
			sizeSyncs = {},
			resizeFn = [],
			initMaxHeight = (parseInt(opts.initMaxHeight) || 50) / 100,
			maxHeight = (parseInt(opts.maxHeight) || 90) / 100,
			basicHeight, hasNode;
		
		
		self.data('addNode', function(cNode, opts) {
			var wzH = fm.getUI('workzone').height(),
				imaxH = wzH * initMaxHeight,
				curH, tH, mH;
			opts = Object.assign({
				first: false,
				sizeSync: true,
				init: false
			}, opts);
			if (!cNode.attr('id')) {
				cNode.attr('id', fm.namespace+'-navdock-' + (+new Date()));
			}
			opts.sizeSync && (sizeSyncs[cNode.attr('id')] = cNode);
			curH = self.height();
			tH = curH + cNode.outerHeight(true);
			
			if (opts.first) {
				handle.after(cNode);
			} else {
				self.append(cNode);
			}
			hasNode = true;
			self.resizable('enable').height(tH).show();
			
			fm.trigger('wzresize');
			
			if (opts.init) {
				mH = fm.storage('navdockHeight');
				if (mH) {
					tH = mH;
				} else {
					tH = tH > imaxH? imaxH : tH;
				}
				basicHeight = tH;
			}
			resize(Math.min(tH, wzH * maxHeight));
			
			return self;
		}).data('removeNode', function(nodeId, appendTo) {
			var cNode = jQuery('#'+nodeId);
			delete sizeSyncs[nodeId];
			self.height(self.height() - jQuery('#'+nodeId).outerHeight(true));
			if (appendTo) {
				if (appendTo === 'detach') {
					cNode = cNode.detach();
				} else {
					appendTo.append(cNode);
				}
			} else {
				cNode.remove();
			}
			if (self.children().length <= 1) {
				hasNode = false;
				self.resizable('disable').height(0).hide();
			}
			fm.trigger('wzresize');
			return cNode;
		});
		
		if (! opts.disabled) {
			fm.one('init', function() {
				var ovf;
				if (fm.getUI('navbar').children().not('.ui-resizable-handle').length) {
					self.data('dockEnabled', true);
					self.resizable({
						maxHeight: fm.getUI('workzone').height() * maxHeight,
						handles: { n: handle },
						start: function(e, ui) {
							ovf = self.css('overflow');
							self.css('overflow', 'hidden');
							fm.trigger('navdockresizestart', {event: e, ui: ui}, true);
						},
						resize: function(e, ui) {
							self.css('top', '');
							fm.trigger('wzresize', { inNavdockResize : true });
						},
						stop: function(e, ui) {
							fm.trigger('navdockresizestop', {event: e, ui: ui}, true);
							self.css('top', '');
							basicHeight = ui.size.height;
							fm.storage('navdockHeight', basicHeight);
							resize(basicHeight, ui.originalSize.height);
							self.css('overflow', ovf);
						}
					});
					fm.bind('wzresize', function(e) {
						var minH, maxH, h;
						if (self.is(':visible')) {
							maxH = fm.getUI('workzone').height() * maxHeight;
							if (! e.data || ! e.data.inNavdockResize) {
								h = self.height();
								if (maxH < basicHeight) {
									if (Math.abs(h - maxH) > 1) {
										resize(maxH);
									}
								} else {
									if (Math.abs(h - basicHeight) > 1) {
										resize(basicHeight);
									}
								}
							}
							self.resizable('option', 'maxHeight', maxH);
						}
					}).bind('themechange', function() {
						var oldH = Math.round(self.height());
						requestAnimationFrame(function() {
							var curH = Math.round(self.height()),
								diff = oldH - curH;
							if (diff !== 0) {
								resize(self.height(),  curH - diff);
							}
						});
					});
				}
				fm.bind('navbarshow navbarhide', function(e) {
					self[hasNode && e.type === 'navbarshow'? 'show' : 'hide']();
				});
			});
		}
	});
	return this;
};lib/js/ui/toolbar.js000064400000023562147361034410010356 0ustar00/**
 * @class  elFinder toolbar
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindertoolbar = function(fm, opts) {
	"use strict";
	this.not('.elfinder-toolbar').each(function() {
		var commands = fm._commands,
			self     = jQuery(this).addClass('ui-helper-clearfix ui-widget-header elfinder-toolbar'),
			options  = {
				// default options
				displayTextLabel: false,
				labelExcludeUA: ['Mobile'],
				autoHideUA: ['Mobile'],
				showPreferenceButton: 'none'
			},
			filter   = function(opts) {
				return jQuery.grep(opts, function(v) {
					if (jQuery.isPlainObject(v)) {
						options = Object.assign(options, v);
						return false;
					}
					return true;
				});
			},
			render = function(disabled){
				var name,cmdPref;
				
				jQuery.each(buttons, function(i, b) { b.detach(); });
				self.empty();
				l = panels.length;
				while (l--) {
					if (panels[l]) {
						panel = jQuery('<div class="ui-widget-content ui-corner-all elfinder-buttonset"></div>');
						i = panels[l].length;
						while (i--) {
							name = panels[l][i];
							if ((!disabled || !disabled[name]) && (cmd = commands[name])) {
								button = 'elfinder'+cmd.options.ui;
								if (! buttons[name] && jQuery.fn[button]) {
									buttons[name] = jQuery('<div></div>')[button](cmd);
								}
								if (buttons[name]) {
									buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
									panel.prepend(buttons[name]);
								}
							}
						}
						
						panel.children().length && self.prepend(panel);
						panel.children(':gt(0)').before('<span class="ui-widget-content elfinder-toolbar-button-separator"></span>');

					}
				}
				
				if (cmdPref = commands['preference']) {
					//cmdPref.state = !self.children().length? 0 : -1;
					if (options.showPreferenceButton === 'always' || (!self.children().length && options.showPreferenceButton === 'auto')) {
						//cmdPref.state = 0;
						panel = jQuery('<div class="ui-widget-content ui-corner-all elfinder-buttonset"></div>');
						name = 'preference';
						button = 'elfinder'+cmd.options.ui;
						buttons[name] = jQuery('<div></div>')[button](cmdPref);
						buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
						panel.prepend(buttons[name]);
						self.append(panel);
					}
				}
				
				(! self.data('swipeClose') && self.children().length)? self.show() : self.hide();
				prevHeight = self[0].clientHeight;
				fm.trigger('toolbarload').trigger('uiresize');
			},
			buttons = {},
			panels   = filter(opts || []),
			dispre   = null,
			uiCmdMapPrev = '',
			prevHeight = 0,
			contextRaw = [],
			l, i, cmd, panel, button, swipeHandle, autoHide, textLabel, resizeTm;
		
		// normalize options
		options.showPreferenceButton = options.showPreferenceButton.toLowerCase();
		
		if (options.displayTextLabel !== 'none') {
			// correction of options.displayTextLabel
			textLabel = fm.storage('toolbarTextLabel');
			if (textLabel === null) {
				textLabel = (options.displayTextLabel && (! options.labelExcludeUA || ! options.labelExcludeUA.length || ! jQuery.grep(options.labelExcludeUA, function(v){ return fm.UA[v]? true : false; }).length));
			} else {
				textLabel = (textLabel == 1);
			}
			contextRaw.push({
				label    : fm.i18n('textLabel'),
				icon     : 'text',
				callback : function() {
					textLabel = ! textLabel;
					self.css('height', '').find('.elfinder-button-text')[textLabel? 'show':'hide']();
					fm.trigger('uiresize').storage('toolbarTextLabel', textLabel? '1' : '0');
				},
			});
		}

		if (options.preferenceInContextmenu && commands['preference']) {
			contextRaw.push({
				label    : fm.i18n('toolbarPref'),
				icon     : 'preference',
				callback : function() {
					fm.exec('preference', void(0), {tab: 'toolbar'});
				}
			});
		}

		// add contextmenu
		if (contextRaw.length) {
			self.on('contextmenu', function(e) {
					e.stopPropagation();
					e.preventDefault();
					fm.trigger('contextmenu', {
						raw: contextRaw,
						x: e.pageX,
						y: e.pageY
					});
				}).on('touchstart', function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					self.data('tmlongtap') && clearTimeout(self.data('tmlongtap'));
					self.removeData('longtap')
						.data('longtap', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY})
						.data('tmlongtap', setTimeout(function() {
							self.removeData('longtapTm')
								.trigger({
									type: 'contextmenu',
									pageX: self.data('longtap').x,
									pageY: self.data('longtap').y
								})
								.data('longtap', {longtap: true});
						}, 500));
				}).on('touchmove touchend', function(e) {
					if (self.data('tmlongtap')) {
						if (e.type === 'touchend' ||
								( Math.abs(self.data('longtap').x - e.originalEvent.touches[0].pageX)
								+ Math.abs(self.data('longtap').y - e.originalEvent.touches[0].pageY)) > 4)
						clearTimeout(self.data('tmlongtap'));
						self.removeData('longtapTm');
					}
				}).on('click', function(e) {
					if (self.data('longtap') && self.data('longtap').longtap) {
						e.stopImmediatePropagation();
						e.preventDefault();
					}
				}).on('touchend click', '.elfinder-button', function(e) {
					if (self.data('longtap') && self.data('longtap').longtap) {
						e.stopImmediatePropagation();
						e.preventDefault();
					}
				}
			);
		}

		self.prev().length && self.parent().prepend(this);
		
		render();
		
		fm.bind('open sync select toolbarpref', function() {
			var disabled = Object.assign({}, fm.option('disabledFlip')),
				userHides = fm.storage('toolbarhides'),
				doRender, sel, disabledKeys;
			
			if (! userHides && Array.isArray(options.defaultHides)) {
				userHides = {};
				jQuery.each(options.defaultHides, function() {
					userHides[this] = true;
				});
				fm.storage('toolbarhides', userHides);
			}
			if (this.type === 'select') {
				if (fm.searchStatus.state < 2) {
					return;
				}
				sel = fm.selected();
				if (sel.length) {
					disabled = fm.getDisabledCmds(sel, true);
				}
			}
			
			jQuery.each(userHides, function(n) {
				if (!disabled[n]) {
					disabled[n] = true;
				}
			});
			
			if (Object.keys(fm.commandMap).length) {
				jQuery.each(fm.commandMap, function(from, to){
					if (to === 'hidden') {
						disabled[from] = true;
					}
				});
			}
			
			disabledKeys = Object.keys(disabled);
			if (!dispre || dispre.toString() !== disabledKeys.sort().toString()) {
				render(disabledKeys.length? disabled : null);
				doRender = true;
			}
			dispre = disabledKeys.sort();

			if (doRender || uiCmdMapPrev !== JSON.stringify(fm.commandMap)) {
				uiCmdMapPrev = JSON.stringify(fm.commandMap);
				if (! doRender) {
					// reset toolbar
					jQuery.each(jQuery('div.elfinder-button'), function(){
						var origin = jQuery(this).data('origin');
						if (origin) {
							jQuery(this).after(origin).detach();
						}
					});
				}
				if (Object.keys(fm.commandMap).length) {
					jQuery.each(fm.commandMap, function(from, to){
						var cmd = fm._commands[to],
							button = cmd? 'elfinder'+cmd.options.ui : null,
							btn;
						if (button && jQuery.fn[button]) {
							btn = buttons[from];
							if (btn) {
								if (! buttons[to] && jQuery.fn[button]) {
									buttons[to] = jQuery('<div></div>')[button](cmd);
									if (buttons[to]) {
										buttons[to].children('.elfinder-button-text')[textLabel? 'show' : 'hide']();
										if (cmd.extendsCmd) {
											buttons[to].children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd);
										}
									}
								}
								if (buttons[to]) {
									btn.after(buttons[to]);
									buttons[to].data('origin', btn.detach());
								}
							}
						}
					});
				}
			}
		}).bind('resize', function(e) {
			resizeTm && cancelAnimationFrame(resizeTm);
			resizeTm = requestAnimationFrame(function() {
				var h = self[0].clientHeight;
				if (prevHeight !== h) {
					prevHeight = h;
					fm.trigger('uiresize');
				}
			});
		});
		
		if (fm.UA.Touch) {
			autoHide = fm.storage('autoHide') || {};
			if (typeof autoHide.toolbar === 'undefined') {
				autoHide.toolbar = (options.autoHideUA && options.autoHideUA.length > 0 && jQuery.grep(options.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length);
				fm.storage('autoHide', autoHide);
			}
			
			if (autoHide.toolbar) {
				fm.one('init', function() {
					fm.uiAutoHide.push(function(){ self.stop(true, true).trigger('toggle', { duration: 500, init: true }); });
				});
			}
			
			fm.bind('load', function() {
				swipeHandle = jQuery('<div class="elfinder-toolbar-swipe-handle"></div>').hide().appendTo(fm.getUI());
				if (swipeHandle.css('pointer-events') !== 'none') {
					swipeHandle.remove();
					swipeHandle = null;
				}
			});
			
			self.on('toggle', function(e, data) {
				var wz    = fm.getUI('workzone'),
					toshow= self.is(':hidden'),
					wzh   = wz.height(),
					h     = self.height(),
					tbh   = self.outerHeight(true),
					delta = tbh - h,
					opt   = Object.assign({
						step: function(now) {
							wz.height(wzh + (toshow? (now + delta) * -1 : h - now));
							fm.trigger('resize');
						},
						always: function() {
							requestAnimationFrame(function() {
								self.css('height', '');
								fm.trigger('uiresize');
								if (swipeHandle) {
									if (toshow) {
										swipeHandle.stop(true, true).hide();
									} else {
										swipeHandle.height(data.handleH? data.handleH : '');
										fm.resources.blink(swipeHandle, 'slowonce');
									}
								}
								toshow && self.scrollTop('0px');
								data.init && fm.trigger('uiautohide');
							});
						}
					}, data);
				self.data('swipeClose', ! toshow).stop(true, true).animate({height : 'toggle'}, opt);
				autoHide.toolbar = !toshow;
				fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {toolbar: autoHide.toolbar}));
			}).on('touchstart', function(e) {
				if (self.scrollBottom() > 5) {
					e.originalEvent._preventSwipeY = true;
				}
			});
		}
	});
	
	return this;
};
lib/js/ui/workzone.js000064400000002657147361034410010574 0ustar00/**
 * @class elfinderworkzone - elFinder container for nav and current directory
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderworkzone = function(fm) {
	"use strict";
	var cl = 'elfinder-workzone';
	
	this.not('.'+cl).each(function() {
		var wz     = jQuery(this).addClass(cl),
			prevH  = Math.round(wz.height()),
			parent = wz.parent(),
			setDelta = function() {
				wdelta = wz.outerHeight(true) - wz.height();
			},
			fitsize = function(e) {
				var height = parent.height() - wdelta,
					style  = parent.attr('style'),
					curH   = Math.round(wz.height());
	
				if (e) {
					e.preventDefault();
					e.stopPropagation();
				}
				
				parent.css('overflow', 'hidden')
					.children(':visible:not(.'+cl+')').each(function() {
						var ch = jQuery(this);
		
						if (ch.css('position') != 'absolute' && ch.css('position') != 'fixed') {
							height -= ch.outerHeight(true);
						}
					});
				parent.attr('style', style || '');
				
				height = Math.max(0, Math.round(height));
				if (prevH !== height || curH !== height) {
					prevH  = Math.round(wz.height());
					wz.height(height);
					fm.trigger('wzresize');
				}
			},
			cssloaded = function() {
				wdelta = wz.outerHeight(true) - wz.height();
				fitsize();
			},
			wdelta;
		
		setDelta();
		parent.on('resize.' + fm.namespace, fitsize);
		fm.one('cssloaded', cssloaded)
		  .bind('uiresize', fitsize)
		  .bind('themechange', setDelta);
	});
	return this;
};
lib/js/ui/viewbutton.js000064400000001402147361034410011107 0ustar00/**
 * @class  elFinder toolbar button to switch current directory view.
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderviewbutton = function(cmd) {
	"use strict";
	return this.each(function() {
		var button = jQuery(this).elfinderbutton(cmd),
			icon   = button.children('.elfinder-button-icon'),
			text   = button.children('.elfinder-button-text'),
			tm;

		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var icons = cmd.value == 'icons';

				icon.toggleClass('elfinder-button-icon-view-list', icons);
				cmd.className = icons? 'view-list' : '';
				cmd.title = cmd.fm.i18n(icons ? 'viewlist' : 'viewicons');
				button.attr('title', cmd.title);
				text.html(cmd.title);
			});
		});
	});
};
lib/js/ui/cwd.js000064400000257233147361034410007475 0ustar00/**
 * elFinder current working directory ui.
 *
 * @author Dmitry (dio) Levashov
 **/
 jQuery.fn.elfindercwd = function(fm, options) {
	"use strict";
	this.not('.elfinder-cwd').each(function() {
		// fm.time('cwdLoad');
		
		var mobile = fm.UA.Mobile,
			list = fm.viewType == 'list',

			undef = 'undefined',
			/**
			 * Select event full name
			 *
			 * @type String
			 **/
			evtSelect = 'select.'+fm.namespace,
			
			/**
			 * Unselect event full name
			 *
			 * @type String
			 **/
			evtUnselect = 'unselect.'+fm.namespace,
			
			/**
			 * Disable event full name
			 *
			 * @type String
			 **/
			evtDisable = 'disable.'+fm.namespace,
			
			/**
			 * Disable event full name
			 *
			 * @type String
			 **/
			evtEnable = 'enable.'+fm.namespace,
			
			c = 'class',
			/**
			 * File css class
			 *
			 * @type String
			 **/
			clFile       = fm.res(c, 'cwdfile'),
			
			/**
			 * Selected css class
			 *
			 * @type String
			 **/
			fileSelector = '.'+clFile,
			
			/**
			 * Selected css class
			 *
			 * @type String
			 **/
			clSelected = 'ui-selected',
			
			/**
			 * Disabled css class
			 *
			 * @type String
			 **/
			clDisabled = fm.res(c, 'disabled'),
			
			/**
			 * Draggable css class
			 *
			 * @type String
			 **/
			clDraggable = fm.res(c, 'draggable'),
			
			/**
			 * Droppable css class
			 *
			 * @type String
			 **/
			clDroppable = fm.res(c, 'droppable'),
			
			/**
			 * Hover css class
			 *
			 * @type String
			 **/
			clHover     = fm.res(c, 'hover'),

			/**
			 * Active css class
			 *
			 * @type String
			 **/
			clActive     = fm.res(c, 'active'),

			/**
			 * Hover css class
			 *
			 * @type String
			 **/
			clDropActive = fm.res(c, 'adroppable'),

			/**
			 * Css class for temporary nodes (for mkdir/mkfile) commands
			 *
			 * @type String
			 **/
			clTmp = clFile+'-tmp',

			/**
			 * Select checkbox css class
			 * 
			 * @type String
			 */
			clSelChk = 'elfinder-cwd-selectchk',

			/**
			 * Number of thumbnails to load in one request (new api only)
			 *
			 * @type Number
			 **/
			tmbNum = fm.options.loadTmbs > 0 ? fm.options.loadTmbs : 5,
			
			/**
			 * Current search query.
			 *
			 * @type String
			 */
			query = '',

			/**
			 * Currect clipboard(cut) hashes as object key
			 * 
			 * @type Object
			 */
			clipCuts = {},

			/**
			 * Parents hashes of cwd
			 *
			 * @type Array
			 */
			cwdParents = [],
			
			/**
			 * cwd current hashes
			 * 
			 * @type Array
			 */
			cwdHashes = [],

			/**
			 * incsearch current hashes
			 * 
			 * @type Array
			 */
			incHashes = void 0,

			/**
			 * Custom columns name and order
			 *
			 * @type Array
			 */
			customCols = [],

			/**
			 * Current clicked element id of first time for dblclick
			 * 
			 * @type String
			 */
			curClickId = '',

			/**
			 * Custom columns builder
			 *
			 * @type Function
			 */
			customColsBuild = function() {
				var cols = '';
				for (var i = 0; i < customCols.length; i++) {
					cols += '<td class="elfinder-col-'+customCols[i]+'">{' + customCols[i] + '}</td>';
				}
				return cols;
			},

			/**
			 * Make template.row from customCols
			 *
			 * @type Function
			 */
			makeTemplateRow = function() {
				return '<tr id="{id}" class="'+clFile+' {permsclass} {dirclass}" title="{tooltip}"{css}><td class="elfinder-col-name"><div class="elfinder-cwd-file-wrapper"><span class="elfinder-cwd-icon {mime}"{style}></span>{marker}<span class="elfinder-cwd-filename">{name}</span></div>'+selectCheckbox+'</td>'+customColsBuild()+'</tr>';
			},
			
			selectCheckbox = (jQuery.map(options.showSelectCheckboxUA, function(t) {return (fm.UA[t] || t.match(/^all$/i))? true : null;}).length)? '<div class="elfinder-cwd-select"><input type="checkbox" class="'+clSelChk+'"></div>' : '',

			colResizing = false,
			
			colWidth = null,

			/**
			 * Table header height
			 */
			thHeight,

			/**
			 * File templates
			 *
			 * @type Object
			 **/
			templates = {
				icon : '<div id="{id}" class="'+clFile+' {permsclass} {dirclass} ui-corner-all" title="{tooltip}"><div class="elfinder-cwd-file-wrapper ui-corner-all"><div class="elfinder-cwd-icon {mime} ui-corner-all" unselectable="on"{style}></div>{marker}</div><div class="elfinder-cwd-filename" title="{nametitle}">{name}</div>'+selectCheckbox+'</div>',
				row  : ''
			},
			
			permsTpl = fm.res('tpl', 'perms'),
			
			lockTpl = fm.res('tpl', 'lock'),
			
			symlinkTpl = fm.res('tpl', 'symlink'),
			
			/**
			 * Template placeholders replacement rules
			 *
			 * @type Object
			 **/
			replacement = {
				id : function(f) {
					return fm.cwdHash2Id(f.hash);
				},
				name : function(f) {
					var name = fm.escape(f.i18 || f.name);
					!list && (name = name.replace(/([_.])/g, '&#8203;$1'));
					return name;
				},
				nametitle : function(f) {
					return fm.escape(f.i18 || f.name);
				},
				permsclass : function(f) {
					return fm.perms2class(f);
				},
				perm : function(f) {
					return fm.formatPermissions(f);
				},
				dirclass : function(f) {
					var cName = f.mime == 'directory' ? 'directory' : '';
					f.isroot && (cName += ' isroot');
					f.csscls && (cName += ' ' + fm.escape(f.csscls));
					options.getClass && (cName += ' ' + options.getClass(f));
					return cName;
				},
				style : function(f) {
					return f.icon? fm.getIconStyle(f) : '';
				},
				mime : function(f) {
					var cName = fm.mime2class(f.mime);
					f.icon && (cName += ' elfinder-cwd-bgurl');
					return cName;
				},
				size : function(f) {
					return (f.mime === 'directory' && !f.size)? '-' : fm.formatSize(f.size);
				},
				date : function(f) {
					return fm.formatDate(f);
				},
				kind : function(f) {
					return fm.mime2kind(f);
				},
				mode : function(f) {
					return f.perm? fm.formatFileMode(f.perm) : '';
				},
				modestr : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'string') : '';
				},
				modeoct : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'octal') : '';
				},
				modeboth : function(f) {
					return f.perm? fm.formatFileMode(f.perm, 'both') : '';
				},
				marker : function(f) {
					return (f.alias || f.mime == 'symlink-broken' ? symlinkTpl : '')+(!f.read || !f.write ? permsTpl : '')+(f.locked ? lockTpl : '');
				},
				tooltip : function(f) {
					var title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''),
						info  = '';
					if (query && f.path) {
						info = fm.escape(f.path.replace(/\/[^\/]*$/, ''));
					} else {
						info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, '&#13;') : '';
					}
					if (list) {
						info += (info? '&#13;' : '') + fm.escape(f.i18 || f.name);
					}
					return info? info + '&#13;' + title : title;
				}
			},
			
			/**
			 * Type badge CSS added flag
			 * 
			 * @type Object
			 */
			addedBadges = {},
			
			/**
			 * Type badge style sheet element
			 * 
			 * @type Object
			 */
			addBadgeStyleSheet,
			
			/**
			 * Add type badge CSS into 'head'
			 * 
			 * @type Fundtion
			 */
			addBadgeStyle = function(mime, name) {
				var sel, ext, type;
				if (mime && ! addedBadges[mime]) {
					if (typeof addBadgeStyleSheet === 'undefined') {
						if (jQuery('#elfinderAddBadgeStyle'+fm.namespace).length) {
							jQuery('#elfinderAddBadgeStyle'+fm.namespace).remove();
						}
						addBadgeStyleSheet = jQuery('<style id="addBadgeStyle'+fm.namespace+'"></style>').insertBefore(jQuery('head').children(':first')).get(0).sheet || null;
					}
					if (addBadgeStyleSheet) {
						mime = mime.toLowerCase();
						type = mime.split('/');
						ext = fm.escape(fm.mimeTypes[mime] || (name.replace(/.bac?k$/i, '').match(/\.([^.]+)$/) || ['',''])[1]);
						if (ext) {
							sel = '.elfinder-cwd-icon-' + type[0].replace(/(\.|\+)/g, '-');
							if (typeof type[1] !== 'undefined') {
								sel += '.elfinder-cwd-icon-' + type[1].replace(/(\.|\+)/g, '-');
							}
							try {
								addBadgeStyleSheet.insertRule(sel + ':before{content:"' + ext.toLowerCase() + '"}', 0);
							} catch(e) {}
						}
						addedBadges[mime] = true;
					}
				}
			},
			
			/**
			 * Return file html
			 *
			 * @param  Object  file info
			 * @return String
			 **/
			itemhtml = function(f) {
				f.mime && f.mime !== 'directory' && !addedBadges[f.mime] && addBadgeStyle(f.mime, f.name);
				return templates[list ? 'row' : 'icon']
						.replace(/\{([a-z0-9_]+)\}/g, function(s, e) { 
							return replacement[e] ? replacement[e](f, fm) : (f[e] ? f[e] : ''); 
						});
			},
			
			/**
			 * jQueery node that will be selected next
			 * 
			 * @type Object jQuery node
			 */
			selectedNext = jQuery(),
			
			/**
			 * Flag. Required for msie to avoid unselect files on dragstart
			 *
			 * @type Boolean
			 **/
			selectLock = false,
			
			/**
			 * Move selection to prev/next file
			 *
			 * @param String  move direction
			 * @param Boolean append to current selection
			 * @return void
			 * @rise select			
			 */
			select = function(keyCode, append) {
				var code     = jQuery.ui.keyCode,
					prev     = keyCode == code.LEFT || keyCode == code.UP,
					sel      = cwd.find('[id].'+clSelected),
					selector = prev ? 'first:' : 'last',
					s, n, sib, top, left;

				function sibling(n, direction) {
					return n[direction+'All']('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):first');
				}
				
				if (sel.length) {
					s = sel.filter(prev ? ':first' : ':last');
					sib = sibling(s, prev ? 'prev' : 'next');
					
					if (!sib.length) {
						// there is no sibling on required side - do not move selection
						n = s;
					} else if (list || keyCode == code.LEFT || keyCode == code.RIGHT) {
						// find real prevoius file
						n = sib;
					} else {
						// find up/down side file in icons view
						top = s.position().top;
						left = s.position().left;

						n = s;
						if (prev) {
							do {
								n = n.prev('[id]');
							} while (n.length && !(n.position().top < top && n.position().left <= left));

							if (n.hasClass(clDisabled)) {
								n = sibling(n, 'next');
							}
						} else {
							do {
								n = n.next('[id]');
							} while (n.length && !(n.position().top > top && n.position().left >= left));
							
							if (n.hasClass(clDisabled)) {
								n = sibling(n, 'prev');
							}
							// there is row before last one - select last file
							if (!n.length) {
								sib = cwd.find('[id]:not(.'+clDisabled+'):last');
								if (sib.position().top > top) {
									n = sib;
								}
							}
						}
					}
					// !append && unselectAll();
				} else {
					if (selectedNext.length) {
						n = prev? selectedNext.prev() : selectedNext;
					} else {
						// there are no selected file - select first/last one
						n = cwd.find('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):'+(prev ? 'last' : 'first'));
					}
				}
				
				if (n && n.length && !n.hasClass('elfinder-cwd-parent')) {
					if (s && append) {
						// append new files to selected
						n = s.add(s[prev ? 'prevUntil' : 'nextUntil']('#'+n.attr('id'))).add(n);
					} else {
						// unselect selected files
						sel.trigger(evtUnselect);
					}
					// select file(s)
					n.trigger(evtSelect);
					// set its visible
					scrollToView(n.filter(prev ? ':first' : ':last'));
					// update cache/view
					trigger();
				}
			},
			
			selectedFiles = {},
			
			selectFile = function(hash) {
				fm.cwdHash2Elm(hash).trigger(evtSelect);
			},
			
			allSelected = false,
			
			selectAll = function() {
				var phash = fm.cwd().hash;

				selectCheckbox && selectAllCheckbox.find('input').prop('checked', true);
				fm.lazy(function() {
					var files;
					if (fm.maxTargets && (incHashes || cwdHashes).length > fm.maxTargets) {
						unselectAll({ notrigger: true });
						files = jQuery.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; });
						files = files.slice(0, fm.maxTargets);
						selectedFiles = {};
						jQuery.each(files, function(i, v) {
							selectedFiles[v.hash] = true;
							fm.cwdHash2Elm(v.hash).trigger(evtSelect);
						});
						fm.toast({mode: 'warning', msg: fm.i18n(['errMaxTargets', fm.maxTargets])});
					} else {
						cwd.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').trigger(evtSelect);
						selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true);
					}
					trigger();
					selectCheckbox && selectAllCheckbox.data('pending', false);
				}, 0, {repaint: true});
			},
			
			/**
			 * Unselect all files
			 *
			 * @param  Object  options
			 * @return void
			 */
			unselectAll = function(opts) {
				var o = opts || {};
				selectCheckbox && selectAllCheckbox.find('input').prop('checked', false);
				if (Object.keys(selectedFiles).length) {
					selectLock = false;
					selectedFiles = {};
					cwd.find('[id].'+clSelected).trigger(evtUnselect);
					selectCheckbox && cwd.find('input:checkbox.'+clSelChk).prop('checked', false);
				}
				!o.notrigger && trigger();
				selectCheckbox && selectAllCheckbox.data('pending', false);
				cwd.removeClass('elfinder-cwd-allselected');
			},
			
			selectInvert = function() {
				var invHashes = {};
				if (allSelected) {
					unselectAll();
				} else if (! Object.keys(selectedFiles).length) {
					selectAll();
				} else {
					jQuery.each((incHashes || cwdHashes), function(i, h) {
						var itemNode = fm.cwdHash2Elm(h);
						if (! selectedFiles[h]) {
							invHashes[h] = true;
							itemNode.length && itemNode.trigger(evtSelect);
						} else {
							itemNode.length && itemNode.trigger(evtUnselect);
						}
					});
					selectedFiles = invHashes;
					trigger();
				}
			},
			
			/**
			 * Return selected files hashes list
			 *
			 * @return Array
			 */
			selected = function() {
				return Object.keys(selectedFiles);
			},
			
			/**
			 * Last selected node id
			 * 
			 * @type String|Void
			 */
			lastSelect = void 0,
			
			/**
			 * Fire elfinder "select" event and pass selected files to it
			 *
			 * @return void
			 */
			trigger = function() {
				var selected = Object.keys(selectedFiles),
					opts = {
						selected : selected,
						origin : 'cwd'
					};
				
				if (oldSchoolItem && (selected.length > 1 || selected[0] !== fm.cwdId2Hash(
					oldSchoolItem.attr('id'))) && oldSchoolItem.hasClass(clSelected)) {
					oldSchoolItem.trigger(evtUnselect);
				}
				allSelected = selected.length && (selected.length === (incHashes || cwdHashes).length) && (!fm.maxTargets || selected.length <= fm.maxTargets);
				if (selectCheckbox) {
					selectAllCheckbox.find('input').prop('checked', allSelected);
					cwd[allSelected? 'addClass' : 'removeClass']('elfinder-cwd-allselected');
				}
				if (allSelected) {
					opts.selectall = true;
				} else if (! selected.length) {
					opts.unselectall = true;
				}
				fm.trigger('select', opts);
			},
			
			/**
			 * Scroll file to set it visible
			 *
			 * @param DOMElement  file/dir node
			 * @return void
			 */
			scrollToView = function(o, blink) {
				if (! o.length) {
					return;
				}
				var ftop    = o.position().top,
					fheight = o.outerHeight(true),
					wtop    = wrapper.scrollTop(),
					wheight = wrapper.get(0).clientHeight,
					thheight = tableHeader? tableHeader.outerHeight(true) : 0;

				if (ftop + thheight + fheight > wtop + wheight) {
					wrapper.scrollTop(parseInt(ftop + thheight + fheight - wheight));
				} else if (ftop < wtop) {
					wrapper.scrollTop(ftop);
				}
				list && wrapper.scrollLeft(0);
				!!blink && fm.resources.blink(o, 'lookme');
			},
			
			/**
			 * Files we get from server but not show yet
			 *
			 * @type Array
			 **/
			buffer = [],
			
			/**
			 * Extra data of buffer
			 *
			 * @type Object
			 **/
			bufferExt = {},
			
			/**
			 * Return index of elements with required hash in buffer 
			 *
			 * @param String  file hash
			 * @return Number
			 */
			index = function(hash) {
				var l = buffer.length;
				
				while (l--) {
					if (buffer[l].hash == hash) {
						return l;
					}
				}
				return -1;
			},
			
			/**
			 * Scroll start event name
			 *
			 * @type String
			 **/
			scrollStartEvent = 'elfscrstart',
			
			/**
			 * Scroll stop event name
			 *
			 * @type String
			 **/
			scrollEvent = 'elfscrstop',
			
			scrolling = false,
			
			/**
			 * jQuery UI selectable option
			 * 
			 * @type Object
			 */
			selectableOption = {
				disabled   : true,
				filter     : '[id]:first',
				stop       : trigger,
				delay      : 250,
				appendTo   : 'body',
				autoRefresh: false,
				selected   : function(e, ui) { jQuery(ui.selected).trigger(evtSelect); },
				unselected : function(e, ui) { jQuery(ui.unselected).trigger(evtUnselect); }
			},
			
			/**
			 * hashes of items displayed in current view
			 * 
			 * @type Object  ItemHash => DomId
			 */
			inViewHashes = {},
			
			/**
			 * Processing when the current view is changed (On open, search, scroll, resize etc.)
			 * 
			 * @return void
			 */
			wrapperRepaint = function(init, recnt) {
				if (!bufferExt.renderd) {
					return;
				}
				var firstNode = (list? cwd.find('tbody:first') : cwd).children('[id]'+(options.oldSchool? ':not(.elfinder-cwd-parent)' : '')+':first');
				if (!firstNode.length) {
					return;
				}
				var selectable = cwd.data('selectable'),
					rec = (function() {
						var wos = wrapper.offset(),
							ww = wrapper.width(),
							w = jQuery(window),
							x = firstNode.width() / 2,
							l = Math.min(wos.left - w.scrollLeft() + (fm.direction === 'ltr'? x : ww - x), wos.left + ww - 10),
							t = wos.top - w.scrollTop() + 10 + (list? thHeight : 0);
						return {left: Math.max(0, Math.round(l)), top: Math.max(0, Math.round(t))};
					})(),
					tgt = init? firstNode : jQuery(document.elementFromPoint(rec.left , rec.top)),
					ids = {},
					tmbs = {},
					multi = 5,
					cnt = Math.ceil((bufferExt.hpi? Math.ceil((wz.data('rectangle').height / bufferExt.hpi) * 1.5) : showFiles) / multi),
					chk = function() {
						var id, hash, file, i;
						for (i = 0; i < multi; i++) {
							id = tgt.attr('id');
							if (id) {
								bufferExt.getTmbs = [];
								hash = fm.cwdId2Hash(id);
								inViewHashes[hash] = id;
								// for tmbs
								if (bufferExt.attachTmbs[hash]) {
									tmbs[hash] = bufferExt.attachTmbs[hash];
								}
								// for selectable
								selectable && (ids[id] = true);
							}
							// next node
							tgt = tgt.next();
							if (!tgt.length) {
								break;
							}
						}
					},
					done = function() {
						var idsArr;
						if (cwd.data('selectable')) {
							Object.assign(ids, selectedFiles);
							idsArr = Object.keys(ids);
							if (idsArr.length) {
								selectableOption.filter = '#'+idsArr.join(', #');
								cwd.selectable('enable').selectable('option', {filter : selectableOption.filter}).selectable('refresh');
							}
						}
						if (Object.keys(tmbs).length) {
							bufferExt.getTmbs = [];
							attachThumbnails(tmbs);
						}
					},
					setTarget = function() {
						if (!tgt.hasClass(clFile)) {
							tgt = tgt.closest(fileSelector);
						}
					},
					arr, widget;
				
				inViewHashes = {};
				selectable && cwd.selectable('option', 'disabled');
				
				if (tgt.length) {
					if (!tgt.hasClass(clFile) && !tgt.closest(fileSelector).length) {
						// dialog, serach button etc.
						widget = fm.getUI().find('.ui-dialog:visible,.ui-widget:visible');
						if (widget.length) {
							widget.hide();
							tgt = jQuery(document.elementFromPoint(rec.left , rec.top));
							widget.show();
						} else {
							widget = null;
						}
					}
					setTarget();
					if (!tgt.length) {
						// try search 5px down
						widget && widget.hide();
						tgt = jQuery(document.elementFromPoint(rec.left , rec.top + 5));
						widget && widget.show();
						setTarget();
					}
				}

				if (tgt.length) {
					if (tgt.attr('id')) {
						if (init) {
							for (var i = 0; i < cnt; i++) {
								chk();
								if (! tgt.length) {
									break;
								}
							}
							done();
						} else {
							bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject();
							arr = new Array(cnt);
							bufferExt.repaintJob = fm.asyncJob(function() {
								chk();
								if (! tgt.length) {
									done();
									bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject();
								}
							}, arr).done(done);
						}
					}
				} else if (init && bufferExt.renderd) {
					// In initial request, cwd DOM not renderd so doing lazy check
					recnt = recnt || 0;
					if (recnt < 10) { // Prevent infinite loop
						requestAnimationFrame(function() {
							wrapperRepaint(init, ++recnt);
						});
					}
				}
			},
			
			/**
			 * Item node of oldScholl ".."
			 */
			oldSchoolItem = null,

			/**
			 * display parent folder with ".." name
			 * 
			 * @param  String  phash
			 * @return void
			 */
			oldSchool = function(p) {
				var phash = fm.cwd().phash,
					pdir  = fm.file(phash) || null,
					set   = function(pdir) {
						if (pdir) {
							oldSchoolItem = jQuery(itemhtml(jQuery.extend(true, {}, pdir, {name : '..', i18 : '..', mime : 'directory'})))
								.addClass('elfinder-cwd-parent')
								.on('dblclick', function() {
									fm.trigger('select', {selected : [phash]}).exec('open', phash);
								});
							(list ? oldSchoolItem.children('td:first') : oldSchoolItem).children('.elfinder-cwd-select').remove();
							if (fm.cwdHash2Elm(phash).length) {
								fm.cwdHash2Elm(phash).replaceWith(oldSchoolItem);
							} else {
								(list ? cwd.find('tbody') : cwd).prepend(oldSchoolItem);
							}
							fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
						}
					};
				if (pdir) {
					set(pdir);
				} else {
					set({hash: phash, read: true, write: true});
					if (fm.getUI('tree').length) {
						fm.one('parents', function() {
							set(fm.file(phash) || null);
							wrapper.trigger(scrollEvent);
						});
					} else {
						fm.request({
							data : {cmd : 'parents', target : fm.cwd().hash},
							preventFail : true
						})
						.done(function(data) {
							set(fm.file(phash) || null);
							wrapper.trigger(scrollEvent);
						});
					}
				}
			},
			
			showFiles = fm.options.showFiles,
			
			/**
			 * Cwd scroll event handler.
			 * Lazy load - append to cwd not shown files
			 *
			 * @return void
			 */
			render = function() {
				if (bufferExt.rendering || (bufferExt.renderd && ! buffer.length)) {
					return;
				}
				var place = (list ? cwd.children('table').children('tbody') : cwd),
					phash,
					chk,
					// created document fragment for jQuery >= 1.12, 2.2, 3.0
					// see Studio-42/elFinder#1544 @ github
					docFlag = jQuery.htmlPrefilter? true : false,
					tempDom = docFlag? jQuery(document.createDocumentFragment()) : jQuery('<div></div>'),
					go      = function(o){
						var over  = o || null,
							html  = [],
							dirs  = false,
							atmb  = {},
							stmb  = (fm.option('tmbUrl') === 'self'),
							init  = bufferExt.renderd? false : true,
							files, locks, selected;
						
						files = buffer.splice(0, showFiles + (over || 0) / (bufferExt.hpi || 1));
						bufferExt.renderd += files.length;
						if (! buffer.length) {
							bottomMarker.hide();
							wrapper.off(scrollEvent, render);
						}
						
						locks = [];
						html = jQuery.map(files, function(f) {
							if (f.hash && f.name) {
								if (f.mime == 'directory') {
									dirs = true;
								}
								if ((f.tmb && (f.tmb != 1 || f.size > 0)) || (stmb && f.mime.indexOf('image/') === 0)) {
									atmb[f.hash] = f.tmb || 'self';
								}
								clipCuts[f.hash] && locks.push(f.hash);
								return itemhtml(f);
							}
							return null;
						});

						// html into temp node
						tempDom.empty().append(html.join(''));
						
						// make directory droppable
						dirs && !mobile && makeDroppable(tempDom);
						
						// check selected items
						selected = [];
						if (Object.keys(selectedFiles).length) {
							tempDom.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').each(function() {
								selectedFiles[fm.cwdId2Hash(this.id)] && selected.push(jQuery(this));
							});
						}
						
						// append to cwd
						place.append(docFlag? tempDom : tempDom.children());
						
						// trigger select
						if (selected.length) {
							jQuery.each(selected, function(i, n) { n.trigger(evtSelect); });
							trigger();
						}
						
						locks.length && fm.trigger('lockfiles', {files: locks});
						!bufferExt.hpi && bottomMarkerShow(place, files.length);
						
						if (list) {
							// show thead
							cwd.find('thead').show();
							// fixed table header
							fixTableHeader({fitWidth: ! colWidth});
						}
						
						if (Object.keys(atmb).length) {
							Object.assign(bufferExt.attachTmbs, atmb);
						}
						
						if (init) {
							if (! mobile && ! cwd.data('selectable')) {
								// make files selectable
								cwd.selectable(selectableOption).data('selectable', true);
							}
						}

						! scrolling && wrapper.trigger(scrollEvent);
					};
				
				if (! bufferExt.renderd) {
					// first time to go()
					bufferExt.rendering = true;
					// scroll top on dir load to avoid scroll after page reload
					wrapper.scrollTop(0);
					phash = fm.cwd().phash;
					go();
					if (options.oldSchool) {
						if (phash && !query) {
							oldSchool(phash);
						} else {
							oldSchoolItem = jQuery();
						}
					}
					if (list) {
						colWidth && setColwidth();
						fixTableHeader({fitWidth: true});
					}
					bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true);
					fm.trigger('cwdrender');
					bufferExt.rendering = false;
					wrapperRepaint(true);
				}
				if (! bufferExt.rendering && buffer.length) {
					// next go()
					if ((chk = (wrapper.height() + wrapper.scrollTop() + fm.options.showThreshold + bufferExt.row) - (bufferExt.renderd * bufferExt.hpi)) > 0) {
						bufferExt.rendering = true;
						fm.lazy(function() {
							go(chk);
							bufferExt.rendering = false;
						});
					} else {
						!fm.enabled() && resize();
					}
				} else {
					resize();
				}
			},
			
			// fixed table header jQuery object
			tableHeader = null,

			// Is UA support CSS sticky
			cssSticky = fm.UA.CSS.positionSticky && fm.UA.CSS.widthMaxContent,
			
			// To fixed table header colmun
			fixTableHeader = function(optsArg) {
				thHeight = 0;
				if (! options.listView.fixedHeader) {
					return;
				}
				var setPos = function() {
					var val, pos;
					pos = (fm.direction === 'ltr')? 'left' : 'right';
					val = ((fm.direction === 'ltr')? wrapper.scrollLeft() : table.outerWidth(true) - wrapper.width() - wrapper.scrollLeft()) * -1;
					if (base.css(pos) !== val) {
						base.css(pos, val);
					}
				},
				opts = optsArg || {},
				cnt, base, table, htable, thead, tbody, hheight, htr, btr, htd, btd, htw, btw, init;
				
				tbody = cwd.find('tbody');
				btr = tbody.children('tr:first');
				if (btr.length && btr.is(':visible')) {
					table = tbody.parent();
					if (! tableHeader) {
						init = true;
						tbody.addClass('elfinder-cwd-fixheader');
						thead = cwd.find('thead').attr('id', fm.namespace+'-cwd-thead');
						htr = thead.children('tr:first');
						hheight = htr.outerHeight(true);
						cwd.css('margin-top', hheight - parseInt(table.css('padding-top')));
						if (cssSticky) {
							tableHeader = jQuery('<div class="elfinder-table-header-sticky"></div>').addClass(cwd.attr('class')).append(jQuery('<table></table>').append(thead));
							cwd.after(tableHeader);
							wrapper.on('resize.fixheader', function(e) {
								e.stopPropagation();
								fixTableHeader({fitWidth: true});
							});
						} else {
							base = jQuery('<div></div>').addClass(cwd.attr('class')).append(jQuery('<table></table>').append(thead));
							tableHeader = jQuery('<div></div>').addClass(wrapper.attr('class') + ' elfinder-cwd-fixheader')
								.removeClass('ui-droppable native-droppable')
								.css(wrapper.position())
								.css({ height: hheight, width: cwd.outerWidth() })
								.append(base);
							if (fm.direction === 'rtl') {
								tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px');
							}
							setPos();
							wrapper.after(tableHeader)
								.on('scroll.fixheader resize.fixheader', function(e) {
									setPos();
									if (e.type === 'resize') {
										e.stopPropagation();
										tableHeader.css(wrapper.position());
										wrapper.data('width', wrapper.css('overflow', 'hidden').width());
										wrapper.css('overflow', 'auto');
										fixTableHeader();
									}
								});
						}
					} else {
						thead = jQuery('#'+fm.namespace+'-cwd-thead');
						htr = thead.children('tr:first');
					}
					
					if (init || opts.fitWidth || Math.abs(btr.outerWidth() - htr.outerWidth()) > 2) {
						cnt = customCols.length + 1;
						for (var i = 0; i < cnt; i++) {
							htd = htr.children('td:eq('+i+')');
							btd = btr.children('td:eq('+i+')');
							htw = htd.width();
							btw = btd.width();
							if (typeof htd.data('delta') === 'undefined') {
								htd.data('delta', (htd.outerWidth() - htw) - (btd.outerWidth() - btw));
							}
							btw -= htd.data('delta');
							if (! init && ! opts.fitWidth && htw === btw) {
								break;
							}
							htd.css('width', btw + 'px');
						}
					}
					
					if (!cssSticky) {
						tableHeader.data('widthTimer') && cancelAnimationFrame(tableHeader.data('widthTimer'));
						tableHeader.data('widthTimer', requestAnimationFrame(function() {
							if (tableHeader) {
								tableHeader.css('width', mBoard.width() + 'px');
								if (fm.direction === 'rtl') {
									tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px');
								}
							}
						}));
					}
					thHeight = thead.height();
				}
			},
			
			// Set colmun width
			setColwidth = function() {
				if (list && colWidth) {
					var cl = 'elfinder-cwd-colwidth',
					first = cwd.find('tr[id]:first'),
					former;
					if (! first.hasClass(cl)) {
						former = cwd.find('tr.'+cl);
						former.removeClass(cl).find('td').css('width', '');
						first.addClass(cl);
						cwd.find('table:first').css('table-layout', 'fixed');
						jQuery.each(jQuery.merge(['name'], customCols), function(i, k) {
							var w = colWidth[k] || first.find('td.elfinder-col-'+k).width();
							first.find('td.elfinder-col-'+k).width(w);
						});
					}
				}
			},
			
			/**
			 * Droppable options for cwd.
			 * Drop target is `wrapper`
			 * Do not add class on childs file over
			 *
			 * @type Object
			 */
			droppable = Object.assign({}, fm.droppable, {
				over : function(e, ui) {
					var dst    = jQuery(this),
						helper = ui.helper,
						ctr    = fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey),
						hash, status, inParent;
					e.stopPropagation();
					helper.data('dropover', helper.data('dropover') + 1);
					dst.data('dropover', true);
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					if (helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) {
						dst.removeClass(clDropActive);
						//helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					if (dst.hasClass(fm.res(c, 'cwdfile'))) {
						hash = fm.cwdId2Hash(dst.attr('id'));
						dst.data('dropover', hash);
					} else {
						hash = fm.cwd().hash;
						fm.cwd().write && dst.data('dropover', hash);
					}
					inParent = (fm.file(helper.data('files')[0]).phash === hash);
					if (dst.data('dropover') === hash) {
						jQuery.each(helper.data('files'), function(i, h) {
							if (h === hash || (inParent && !ctr && !helper.hasClass('elfinder-drag-helper-plus'))) {
								dst.removeClass(clDropActive);
								return false; // break jQuery.each
							}
						});
					} else {
						dst.removeClass(clDropActive);
					}
					if (helper.data('locked') || inParent) {
						status = 'elfinder-drag-helper-plus';
					} else {
						status = 'elfinder-drag-helper-move';
						if (ctr) {
							status += ' elfinder-drag-helper-plus';
						}
					}
					dst.hasClass(clDropActive) && helper.addClass(status);
					requestAnimationFrame(function(){ dst.hasClass(clDropActive) && helper.addClass(status); });
				},
				out : function(e, ui) {
					var helper = ui.helper;
					e.stopPropagation();
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0));
					jQuery(this).removeData('dropover')
					       .removeClass(clDropActive);
				},
				deactivate : function() {
					jQuery(this).removeData('dropover')
					       .removeClass(clDropActive);
				},
				drop : function(e, ui) {
					unselectAll({ notrigger: true });
					fm.droppable.drop.call(this, e, ui);
				}
			}),
			
			/**
			 * Make directory droppable
			 *
			 * @return void
			 */
			makeDroppable = function(place) {
				place = place? place : (list ? cwd.find('tbody') : cwd);
				var targets = place.children('.directory:not(.'+clDroppable+',.elfinder-na,.elfinder-ro)');

				if (fm.isCommandEnabled('paste')) {
					targets.droppable(droppable);
				}
				if (fm.isCommandEnabled('upload')) {
					targets.addClass('native-droppable');
				}
				
				place.children('.isroot').each(function(i, n) {
					var $n   = jQuery(n),
						hash = fm.cwdId2Hash(n.id);
					
					if (fm.isCommandEnabled('paste', hash)) {
						if (! $n.hasClass(clDroppable+',elfinder-na,elfinder-ro')) {
							$n.droppable(droppable);
						}
					} else {
						if ($n.hasClass(clDroppable)) {
							$n.droppable('destroy');
						}
					}
					if (fm.isCommandEnabled('upload', hash)) {
						if (! $n.hasClass('native-droppable,elfinder-na,elfinder-ro')) {
							$n.addClass('native-droppable');
						}
					} else {
						if ($n.hasClass('native-droppable')) {
							$n.removeClass('native-droppable');
						}
					}
				});
			},
			
			/**
			 * Preload required thumbnails and on load add css to files.
			 * Return false if required file is not visible yet (in buffer) -
			 * required for old api to stop loading thumbnails.
			 *
			 * @param  Object  file hash -> thumbnail map
			 * @param  Bool    reload
			 * @return void
			 */
			attachThumbnails = function(tmbs, reload) {
				var attach = function(node, tmb) {
						jQuery('<img/>')
							.on('load', function() {
								node.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')");
							})
							.attr('src', tmb.url);
					},
					chk  = function(hash, tmb) {
						var node = fm.cwdHash2Elm(hash),
							file, tmbObj, reloads = [];
	
						if (node.length) {
							if (tmb != '1') {
								file = fm.file(hash);
								if (file.tmb !== tmb) {
									file.tmb = tmb;
								}
								tmbObj = fm.tmb(file);
								if (reload) {
									node.find('.elfinder-cwd-icon').addClass(tmbObj.className).css('background-image', "url('"+tmbObj.url+"')");
								} else {
									attach(node, tmbObj);
								}
								delete bufferExt.attachTmbs[hash];
							} else {
								if (reload) {
									loadThumbnails([hash]);
								} else if (! bufferExt.tmbLoading[hash]) {
									bufferExt.getTmbs.push(hash);
								}
							}
						}
					};

				if (jQuery.isPlainObject(tmbs) && Object.keys(tmbs).length) {
					Object.assign(bufferExt.attachTmbs, tmbs);
					jQuery.each(tmbs, chk);
					if (! reload && bufferExt.getTmbs.length && ! Object.keys(bufferExt.tmbLoading).length) {
						loadThumbnails();
					}
				}
			},
			
			/**
			 * Load thumbnails from backend.
			 *
			 * @param  Array|void reloads  hashes list for reload thumbnail items
			 * @return void
			 */
			loadThumbnails = function(reloads) {
				var tmbs = [],
					reload = false;
				
				if (fm.oldAPI) {
					fm.request({
						data : {cmd : 'tmb', current : fm.cwd().hash},
						preventFail : true
					})
					.done(function(data) {
						if (data.images && Object.keys(data.images).length) {
							attachThumbnails(data.images);
						}
						if (data.tmb) {
							loadThumbnails();
						}
					});
					return;
				} 

				if (reloads) {
					reload = true;
					tmbs = reloads.splice(0, tmbNum);
				} else {
					tmbs = bufferExt.getTmbs.splice(0, tmbNum);
				}
				if (tmbs.length) {
					if (reload || inViewHashes[tmbs[0]] || inViewHashes[tmbs[tmbs.length-1]]) {
						jQuery.each(tmbs, function(i, h) {
							bufferExt.tmbLoading[h] = true;
						});
						fm.request({
							data : {cmd : 'tmb', targets : tmbs},
							preventFail : true
						})
						.done(function(data) {
							var errs = [],
								resLen;
							if (data.images) {
								if (resLen = Object.keys(data.images).length) {
									if (resLen < tmbs.length) {
										jQuery.each(tmbs, function(i, h) {
											if (! data.images[h]) {
												errs.push(h);
											}
										});
									}
									attachThumbnails(data.images, reload);
								} else {
									errs = tmbs;
								}
								// unset error items from bufferExt.attachTmbs
								if (errs.length) {
									jQuery.each(errs, function(i, h) {
										delete bufferExt.attachTmbs[h];
									});
								}
							}
							if (reload) {
								if (reloads.length) {
									loadThumbnails(reloads);
								}
							}
						})
						.always(function() {
							bufferExt.tmbLoading = {};
							if (! reload && bufferExt.getTmbs.length) {
								loadThumbnails();
							}
						});
					}
				}
			},
			
			/**
			 * Add new files to cwd/buffer
			 *
			 * @param  Array  new files
			 * @return void
			 */
			add = function(files, mode) {
				var place    = list ? cwd.find('tbody') : cwd,
					l        = files.length, 
					atmb     = {},
					findNode = function(file) {
						var pointer = cwd.find('[id]:first'), file2;

						while (pointer.length) {
							file2 = fm.file(fm.cwdId2Hash(pointer.attr('id')));
							if (!pointer.hasClass('elfinder-cwd-parent') && file2 && fm.compare(file, file2) < 0) {
								return pointer;
							}
							pointer = pointer.next('[id]');
						}
					},
					findIndex = function(file) {
						var l = buffer.length, i;
						
						for (i =0; i < l; i++) {
							if (fm.compare(file, buffer[i]) < 0) {
								return i;
							}
						}
						return l || -1;
					},
					// created document fragment for jQuery >= 1.12, 2.2, 3.0
					// see Studio-42/elFinder#1544 @ github
					docFlag = jQuery.htmlPrefilter? true : false,
					tempDom = docFlag? jQuery(document.createDocumentFragment()) : jQuery('<div></div>'),
					file, hash, node, nodes, ndx, stmb;

				if (l > showFiles) {
					// re-render for performance tune
					content();
					selectedFiles = fm.arrayFlip(jQuery.map(files, function(f) { return f.hash; }), true);
					trigger();
				} else {
					// add the item immediately
					l && wz.removeClass('elfinder-cwd-wrapper-empty');
					
					// Self thumbnail
					stmb = (fm.option('tmbUrl') === 'self');
					
					while (l--) {
						file = files[l];
						hash = file.hash;
						
						if (fm.cwdHash2Elm(hash).length) {
							continue;
						}
						
						if ((node = findNode(file)) && ! node.length) {
							node = null;
						}
						if (! node && (ndx = findIndex(file)) >= 0) {
							buffer.splice(ndx, 0, file);
						} else {
							tempDom.empty().append(itemhtml(file));
							(file.mime === 'directory') && !mobile && makeDroppable(tempDom);
							nodes = docFlag? tempDom : tempDom.children();
							if (node) {
								node.before(nodes);
							} else {
								place.append(nodes);
							}
							++bufferExt.renderd;
						}
						
						if (fm.cwdHash2Elm(hash).length) {
							if ((file.tmb && (file.tmb != 1 || file.size > 0)) || (stmb && file.mime.indexOf('image/') === 0)) {
								atmb[hash] = file.tmb || 'self';
							}
						}
					}
	
					if (list) {
						setColwidth();
						fixTableHeader({fitWidth: ! colWidth});
					}
					bottomMarkerShow(place);
					if (Object.keys(atmb).length) {
						Object.assign(bufferExt.attachTmbs, atmb);
						if (buffer.length < 1) {
							loadThumbnails();
						}
					}
				}
			},
			
			/**
			 * Remove files from cwd/buffer
			 *
			 * @param  Array  files hashes
			 * @return void
			 */
			remove = function(files) {
				var l = files.length,
					inSearch = fm.searchStatus.state > 1,
					curCmd = fm.getCommand(fm.currentReqCmd) || {},
					hash, n, ndx, found;

				// removed cwd
				if (!fm.cwd().hash && !curCmd.noChangeDirOnRemovedCwd) {
					jQuery.each(cwdParents.reverse(), function(i, h) {
						if (fm.file(h)) {
							found = true;
							fm.one(fm.currentReqCmd + 'done', function() {
								!fm.cwd().hash && fm.exec('open', h);
							});
							return false;
						}
					});
					// fallback to fm.roots[0]
					!found && !fm.cwd().hash && fm.exec('open', fm.roots[Object.keys(fm.roots)[0]]);
					return;
				}
				
				while (l--) {
					hash = files[l];
					if ((n = fm.cwdHash2Elm(hash)).length) {
						try {
							n.remove();
							--bufferExt.renderd;
						} catch(e) {
							fm.debug('error', e);
						}
					} else if ((ndx = index(hash)) !== -1) {
						buffer.splice(ndx, 1);
					}
					selectedFiles[hash] && delete selectedFiles[hash];
					if (inSearch) {
						if ((ndx = jQuery.inArray(hash, cwdHashes)) !== -1) {
							cwdHashes.splice(ndx, 1);
						}
					}
				}
				
				inSearch && fm.trigger('cwdhasheschange', cwdHashes);
				
				if (list) {
					setColwidth();
					fixTableHeader({fitWidth: ! colWidth});
				}
			},
			
			customColsNameBuild = function() {
				var name = '',
				customColsName = '';
				for (var i = 0; i < customCols.length; i++) {
					name = fm.getColumnName(customCols[i]);
					customColsName +='<td class="elfinder-cwd-view-th-'+customCols[i]+' sortable-item">'+name+'</td>';
				}
				return customColsName;
			},
			
			setItemBoxSize = function(boxSize) {
				var place, elm;
				if (!boxSize.height) {
					place = (list ? cwd.find('tbody') : cwd);
					elm = place.find(list? 'tr:first' : '[id]:first');
					boxSize.height = elm.outerHeight(true);
					if (!list) {
						boxSize.width = elm.outerWidth(true);
					}
				}
			},

			bottomMarkerShow = function(cur, cnt) {
				var place = cur || (list ? cwd.find('tbody') : cwd),
					boxSize = itemBoxSize[fm.viewType],
					col = 1,
					row;

				if (buffer.length > 0) {
					if (!bufferExt.hpi) {
						setItemBoxSize(boxSize);
						if (! list) {
							col = Math.floor(place.width() / boxSize.width);
							bufferExt.row = boxSize.height;
							bufferExt.hpi = bufferExt.row / col;
						} else {
							bufferExt.row = bufferExt.hpi = boxSize.height;
						}
					} else if (!list) {
						col = Math.floor(place.width() / boxSize.width);
					}
					row = Math.ceil((buffer.length + (cnt || 0)) / col);
					if (list && tableHeader) {
						++row;
					}
					bottomMarker.css({top: (bufferExt.row * row) + 'px'}).show();
				}
			},
			
			wrapperContextMenu = {
				contextmenu : function(e) {
					e.preventDefault();
					if (cwd.data('longtap') !== void(0)) {
						e.stopPropagation();
						return;
					}
					fm.trigger('contextmenu', {
						'type'    : 'cwd',
						'targets' : [fm.cwd().hash],
						'x'       : e.pageX,
						'y'       : e.pageY
					});
				},
				touchstart : function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					if (cwd.data('longtap') !== false) {
						wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY});
						cwd.data('tmlongtap', setTimeout(function(){
							// long tap
							cwd.data('longtap', true);
							fm.trigger('contextmenu', {
								'type'    : 'cwd',
								'targets' : [fm.cwd().hash],
								'x'       : wrapper.data('touching').x,
								'y'       : wrapper.data('touching').y
							});
						}, 500));
					}
					cwd.data('longtap', null);
				},
				touchend : function(e) {
					if (e.type === 'touchmove') {
						if (! wrapper.data('touching') ||
								( Math.abs(wrapper.data('touching').x - e.originalEvent.touches[0].pageX)
								+ Math.abs(wrapper.data('touching').y - e.originalEvent.touches[0].pageY)) > 4) {
							wrapper.data('touching', null);
						}
					} else {
						setTimeout(function() {
							cwd.removeData('longtap');
						}, 80);
					}
					clearTimeout(cwd.data('tmlongtap'));
				},
				click : function(e) {
					if (cwd.data('longtap')) {
						e.preventDefault();
						e.stopPropagation();
					}
				}
			},
			
			/**
			 * Update directory content
			 *
			 * @return void
			 */
			content = function() {
				fm.lazy(function() {
					var phash, emptyMethod, thtr;

					wz.append(selectAllCheckbox).removeClass('elfinder-cwd-wrapper-empty elfinder-search-result elfinder-incsearch-result elfinder-letsearch-result');
					if (fm.searchStatus.state > 1 || fm.searchStatus.ininc) {
						wz.addClass('elfinder-search-result' + (fm.searchStatus.ininc? ' elfinder-'+(query.substr(0,1) === '/' ? 'let':'inc')+'search-result' : ''));
					}
					
					// abort attachThumbJob
					bufferExt.attachThumbJob && bufferExt.attachThumbJob._abort();
					
					// destroy selectable for GC
					cwd.data('selectable') && cwd.selectable('disable').selectable('destroy').removeData('selectable');
					
					// notify cwd init
					fm.trigger('cwdinit');
					
					selectedNext = jQuery();
					try {
						// to avoid problem with draggable
						cwd.empty();
					} catch (e) {
						cwd.html('');
					}
					
					if (tableHeader) {
						wrapper.off('scroll.fixheader resize.fixheader');
						tableHeader.remove();
						tableHeader = null;
					}

					cwd.removeClass('elfinder-cwd-view-icons elfinder-cwd-view-list')
						.addClass('elfinder-cwd-view-'+(list ? 'list' :'icons'))
						.attr('style', '')
						.css('height', 'auto');
					bottomMarker.hide();

					wrapper[list ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-list')._padding = parseInt(wrapper.css('padding-top')) + parseInt(wrapper.css('padding-bottom'));
					if (fm.UA.iOS) {
						wrapper.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch');
					}

					if (list) {
						cwd.html('<table><thead></thead><tbody></tbody></table>');
						thtr = jQuery('<tr class="ui-state-default"><td class="elfinder-cwd-view-th-name">'+fm.getColumnName('name')+'</td>'+customColsNameBuild()+'</tr>');
						cwd.find('thead').hide().append(thtr).find('td:first').append(selectAllCheckbox);
						if (jQuery.fn.sortable) {
							thtr.addClass('touch-punch touch-punch-keep-default')
								.sortable({
								axis: 'x',
								distance: 8,
								items: '> .sortable-item',
								start: function(e, ui) {
									jQuery(ui.item[0]).data('dragging', true);
									ui.placeholder
										.width(ui.helper.removeClass('ui-state-hover').width())
										.removeClass('ui-state-active')
										.addClass('ui-state-hover')
										.css('visibility', 'visible');
								},
								update: function(e, ui){
									var target = jQuery(ui.item[0]).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', ''),
										prev, done;
									customCols = jQuery.map(jQuery(this).children(), function(n) {
										var name = jQuery(n).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '');
										if (! done) {
											if (target === name) {
												done = true;
											} else {
												prev = name;
											}
										}
										return (name === 'name')? null : name;
									});
									templates.row = makeTemplateRow();
									fm.storage('cwdCols', customCols);
									prev = '.elfinder-col-'+prev+':first';
									target = '.elfinder-col-'+target+':first';
									fm.lazy(function() {
										cwd.find('tbody tr').each(function() {
											var $this = jQuery(this);
											$this.children(prev).after($this.children(target));
										});
									});
								},
								stop: function(e, ui) {
									setTimeout(function() {
										jQuery(ui.item[0]).removeData('dragging');
									}, 100);
								}
							});
						}

						thtr.find('td').addClass('touch-punch').resizable({
							handles: fm.direction === 'ltr'? 'e' : 'w',
							start: function(e, ui) {
								var target = cwd.find('td.elfinder-col-'
									+ ui.element.attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '')
									+ ':first');
								
								ui.element
									.data('dragging', true)
									.data('resizeTarget', target)
									.data('targetWidth', target.width());
								colResizing = true;
								if (cwd.find('table').css('table-layout') !== 'fixed') {
									cwd.find('tbody tr:first td').each(function() {
										jQuery(this).width(jQuery(this).width());
									});
									cwd.find('table').css('table-layout', 'fixed');
								}
							},
							resize: function(e, ui) {
								ui.element.data('resizeTarget').width(ui.element.data('targetWidth') - (ui.originalSize.width - ui.size.width));
							},
							stop : function(e, ui) {
								colResizing = false;
								fixTableHeader({fitWidth: true});
								colWidth = {};
								cwd.find('tbody tr:first td').each(function() {
									var name = jQuery(this).attr('class').split(' ')[0].replace('elfinder-col-', '');
									colWidth[name] = jQuery(this).width();
								});
								fm.storage('cwdColWidth', colWidth);
								setTimeout(function() {
									ui.element.removeData('dragging');
								}, 100);
							}
						})
						.find('.ui-resizable-handle').addClass('ui-icon ui-icon-grip-dotted-vertical');
					}

					buffer = jQuery.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; });
					
					buffer = fm.sortFiles(buffer);
					
					if (incHashes) {
						incHashes = jQuery.map(buffer, function(f) { return f.hash; });
					} else {
						cwdHashes = jQuery.map(buffer, function(f) { return f.hash; });
					}
					
					bufferExt = {
						renderd: 0,
						attachTmbs: {},
						getTmbs: [],
						tmbLoading: {},
						lazyOpts: { tm : 0 }
					};
					
					wz[(buffer.length < 1) ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-empty');
					wrapper.off(scrollEvent, render).on(scrollEvent, render).trigger(scrollEvent);
					
					// set droppable
					if (!fm.cwd().write) {
						wrapper.removeClass('native-droppable')
						       .droppable('disable')
						       .removeClass('ui-state-disabled'); // for old jQueryUI see https://bugs.jqueryui.com/ticket/5974
					} else {
						wrapper[fm.isCommandEnabled('upload')? 'addClass' : 'removeClass']('native-droppable');
						wrapper.droppable(fm.isCommandEnabled('paste')? 'enable' : 'disable');
					}
				});
			},
			
			/**
			 * CWD node itself
			 *
			 * @type JQuery
			 **/
			cwd = jQuery(this)
				.addClass('ui-helper-clearfix elfinder-cwd')
				.attr('unselectable', 'on')
				// fix ui.selectable bugs and add shift+click support 
				.on('click.'+fm.namespace, fileSelector, function(e) {
					var p    = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
						tgt  = jQuery(e.target),
						prev,
						next,
						pl,
						nl,
						sib;

					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						e.stopPropagation();
						e.preventDefault();
						p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect);
						trigger();
						requestAnimationFrame(function() {
							tgt.prop('checked', p.hasClass(clSelected));
						});
						return;
					}

					if (cwd.data('longtap') || tgt.hasClass('elfinder-cwd-nonselect')) {
						e.stopPropagation();
						return;
					}

					if (!curClickId) {
						curClickId = p.attr('id');
						setTimeout(function() {
							curClickId = '';
						}, 500);
					}
					
					if (e.shiftKey) {
						prev = p.prevAll(lastSelect || '.'+clSelected+':first');
						next = p.nextAll(lastSelect || '.'+clSelected+':first');
						pl   = prev.length;
						nl   = next.length;
					}
					if (e.shiftKey && (pl || nl)) {
						sib = pl ? p.prevUntil('#'+prev.attr('id')) : p.nextUntil('#'+next.attr('id'));
						sib = sib.add(p);
						if (!pl) {
							sib  = jQuery(sib.get().reverse());
						}
						sib.trigger(evtSelect);
					} else if (e.ctrlKey || e.metaKey) {
						p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect);
					} else {
						if (wrapper.data('touching') && p.hasClass(clSelected)) {
							wrapper.data('touching', null);
							fm.dblclick({file : fm.cwdId2Hash(this.id)});
							return;
						} else {
							unselectAll({ notrigger: true });
							p.trigger(evtSelect);
						}
					}

					trigger();
				})
				// call fm.open()
				.on('dblclick.'+fm.namespace, fileSelector, function(e) {
					if (curClickId) {
						var hash = fm.cwdId2Hash(curClickId);
						e.stopPropagation();
						if (this.id !== curClickId) {
							jQuery(this).trigger(evtUnselect);
							jQuery('#'+curClickId).trigger(evtSelect);
							trigger();
						}
						fm.dblclick({file : hash});
					}
				})
				// for touch device
				.on('touchstart.'+fm.namespace, fileSelector, function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var p   = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
						tgt = jQuery(e.target),
						nodeName = e.target.nodeName,
						sel;
					
					if ((nodeName === 'INPUT' && e.target.type === 'text') || nodeName === 'TEXTAREA' || tgt.hasClass('elfinder-cwd-nonselect')) {
						e.stopPropagation();
						return;
					}
					
					// now name editing
					if (p.find('input:text,textarea').length) {
						e.stopPropagation();
						e.preventDefault();
						return;
					}
					
					wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY});
					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						return;
					}
					
					sel = p.prevAll('.'+clSelected+':first').length +
					      p.nextAll('.'+clSelected+':first').length;
					cwd.data('longtap', null);
					if (Object.keys(selectedFiles).length
						||
						(list && e.target.nodeName !== 'TD')
						||
						(!list && this !== e.target)
					) {
						cwd.data('longtap', false);
						p.addClass(clHover);
						p.data('tmlongtap', setTimeout(function(){
							// long tap
							cwd.data('longtap', true);
							p.trigger(evtSelect);
							trigger();
							fm.trigger('contextmenu', {
								'type'    : 'files',
								'targets' : fm.selected(),
								'x'       : e.originalEvent.touches[0].pageX,
								'y'       : e.originalEvent.touches[0].pageY
							});
						}, 500));
					}
				})
				.on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, fileSelector, function(e) {
					var tgt = jQuery(e.target),
						p;
					if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) {
						return;
					}
					if (e.target.nodeName == 'INPUT' || e.target.nodeName == 'TEXTAREA') {
						e.stopPropagation();
						return;
					}
					p = this.id ? jQuery(this) : jQuery(this).parents('[id]:first');
					clearTimeout(p.data('tmlongtap'));
					if (e.type === 'touchmove') {
						wrapper.data('touching', null);
						p.removeClass(clHover);
					} else {
						if (wrapper.data('touching') && !cwd.data('longtap') && p.hasClass(clSelected)) {
							e.preventDefault();
							wrapper.data('touching', null);
							fm.dblclick({file : fm.cwdId2Hash(this.id)});
						}
						setTimeout(function() {
							cwd.removeData('longtap');
						}, 80);
					}
				})
				// attach draggable
				.on('mouseenter.'+fm.namespace, fileSelector, function(e) {
					if (scrolling) { return; }
					var $this = jQuery(this), helper = null;

					if (!mobile && !$this.data('dragRegisted') && !$this.hasClass(clTmp) && !$this.hasClass(clDraggable) && !$this.hasClass(clDisabled)) {
						$this.data('dragRegisted', true);
						if (!fm.isCommandEnabled('copy', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0) &&
							!fm.isCommandEnabled('cut', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0)) {
							return;
						}
						$this.on('mousedown', function(e) {
							// shiftKey or altKey + drag start for HTML5 native drag function
							// Note: can no use shiftKey with the Google Chrome 
							var metaKey = options.metakeyDragout && !fm.UA.IE && (e.shiftKey || e.altKey),
								disable = false;
							if (metaKey && cwd.data('selectable')) {
								// destroy jQuery-ui selectable while trigger native drag
								cwd.selectable('disable').selectable('destroy').removeData('selectable');
								requestAnimationFrame(function(){
									cwd.selectable(selectableOption).selectable('option', {disabled: false}).selectable('refresh').data('selectable', true);
								});
							}
							$this.removeClass('ui-state-disabled');
							if (metaKey) {
								$this.draggable('option', 'disabled', true).attr('draggable', 'true');
							} else {
								if (!$this.hasClass(clSelected)) {
									if (list) {
										disable = jQuery(e.target).closest('span,tr').is('tr');
									} else {
										disable = jQuery(e.target).hasClass('elfinder-cwd-file');
									}
								}
								if (disable) {
									// removeClass('ui-state-disabled') for old version of jQueryUI
									$this.draggable('option', 'disabled', true).removeClass('ui-state-disabled');
								} else {
									$this.draggable('option', 'disabled', false)
										  .removeAttr('draggable')
									      .draggable('option', 'cursorAt', {left: 50 - parseInt(jQuery(e.currentTarget).css('margin-left')), top: 47});
								}
							}
						})
						.on('dragstart', function(e) {
							var dt = e.dataTransfer || e.originalEvent.dataTransfer || null;
							helper = null;
							if (dt && !fm.UA.IE) {
								var p = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
									elm   = jQuery('<span>'),
									url   = '',
									durl  = null,
									murl  = null,
									files = [],
									icon  = function(f) {
										var mime = f.mime, i, tmb = fm.tmb(f);
										i = '<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+fm.mime2class(mime)+' ui-corner-all"></div>';
										if (tmb) {
											i = jQuery(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
										}
										return i;
									}, l, geturl = [];
								p.trigger(evtSelect);
								trigger();
								jQuery.each(selectedFiles, function(v){
									var file = fm.file(v),
										furl = file.url;
									if (file && file.mime !== 'directory') {
										if (!furl) {
											furl = fm.url(file.hash);
										} else if (furl == '1') {
											geturl.push(v);
											return true;
										}
										if (furl) {
											furl = fm.convAbsUrl(furl);
											files.push(v);
											jQuery('<a>').attr('href', furl).text(furl).appendTo(elm);
											url += furl + "\n";
											if (!durl) {
												durl = file.mime + ':' + file.name + ':' + furl;
											}
											if (!murl) {
												murl = furl + "\n" + file.name;
											}
										}
									}
								});
								if (geturl.length) {
									jQuery.each(geturl, function(i, v){
										var rfile = fm.file(v);
										rfile.url = '';
										fm.request({
											data : {cmd : 'url', target : v},
											notify : {type : 'url', cnt : 1},
											preventDefault : true
										})
										.always(function(data) {
											rfile.url = data.url? data.url : '1';
										});
									});
									return false;
								} else if (url) {
									if (dt.setDragImage) {
										helper = jQuery('<div class="elfinder-drag-helper html5-native"></div>').append(icon(fm.file(files[0]))).appendTo(jQuery(document.body));
										if ((l = files.length) > 1) {
											helper.append(icon(fm.file(files[l-1])) + '<span class="elfinder-drag-num">'+l+'</span>');
										}
										dt.setDragImage(helper.get(0), 50, 47);
									}
									dt.effectAllowed = 'copyLink';
									dt.setData('DownloadURL', durl);
									dt.setData('text/x-moz-url', murl);
									dt.setData('text/uri-list', url);
									dt.setData('text/plain', url);
									dt.setData('text/html', elm.html());
									dt.setData('elfinderfrom', window.location.href + fm.cwd().hash);
									dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), '');
								} else {
									return false;
								}
							}
						})
						.on('dragend', function(e){
							unselectAll({ notrigger: true });
							helper && helper.remove();
						})
						.draggable(fm.draggable);
					}
				})
				// add hover class to selected file
				.on(evtSelect, fileSelector, function(e) {
					var $this = jQuery(this),
						id    = fm.cwdId2Hash($this.attr('id'));
					
					if (!selectLock && !$this.hasClass(clDisabled)) {
						lastSelect = '#'+ this.id;
						$this.addClass(clSelected).children().addClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', true);
						if (! selectedFiles[id]) {
							selectedFiles[id] = true;
						}
						// will be selected next
						selectedNext = cwd.find('[id].'+clSelected+':last').next();
					}
				})
				// remove hover class from unselected file
				.on(evtUnselect, fileSelector, function(e) {
					var $this = jQuery(this), 
						id    = fm.cwdId2Hash($this.attr('id'));
					
					if (!selectLock) {
						$this.removeClass(clSelected).children().removeClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', false);
						if (cwd.hasClass('elfinder-cwd-allselected')) {
							selectCheckbox && selectAllCheckbox.children('input').prop('checked', false);
							cwd.removeClass('elfinder-cwd-allselected');
						}
						selectedFiles[id] && delete selectedFiles[id];
					}
					
				})
				// disable files wich removing or moving
				.on(evtDisable, fileSelector, function() {
					var $this  = jQuery(this).removeClass(clHover+' '+clSelected).addClass(clDisabled), 
						child  = $this.children(),
						target = (list ? $this : child.find('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename'));
					
					child.removeClass(clHover+' '+clSelected);
					
					$this.hasClass(clDroppable) && $this.droppable('disable');
					target.hasClass(clDraggable) && target.draggable('disable');
				})
				// if any files was not removed/moved - unlock its
				.on(evtEnable, fileSelector, function() {
					var $this  = jQuery(this).removeClass(clDisabled), 
						target = list ? $this : $this.children('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename');
					
					$this.hasClass(clDroppable) && $this.droppable('enable');	
					target.hasClass(clDraggable) && target.draggable('enable');
				})
				.on('scrolltoview', fileSelector, function(e, data) {
					scrollToView(jQuery(this), (data && typeof data.blink !== 'undefined')? data.blink : true);
				})
				.on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, fileSelector, function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && (scrolling || fm.UA.Mobile)) { return; }
					fm.trigger('hover', {hash : fm.cwdId2Hash(jQuery(this).attr('id')), type : e.type});
					jQuery(this).toggleClass(clHover, (e.type == 'mouseenter'));
				})
				// for file contextmenu
				.on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, '.elfinder-cwd-file-wrapper,.elfinder-cwd-filename', function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && scrolling) { return; }
					jQuery(this).closest(fileSelector).children('.elfinder-cwd-file-wrapper,.elfinder-cwd-filename').toggleClass(clActive, (e.type == 'mouseenter'));
				})
				.on('contextmenu.'+fm.namespace, function(e) {
					var file = jQuery(e.target).closest(fileSelector);
					
					if (file.get(0) === e.target && !selectedFiles[fm.cwdId2Hash(file.get(0).id)]) {
						return;
					}

					// now filename editing
					if (file.find('input:text,textarea').length) {
						e.stopPropagation();
						return;
					}
					
					if (file.length && (e.target.nodeName != 'TD' || selectedFiles[fm.cwdId2Hash(file.get(0).id)])) {
						e.stopPropagation();
						e.preventDefault();
						if (!file.hasClass(clDisabled) && !wrapper.data('touching')) {
							if (!file.hasClass(clSelected)) {
								unselectAll({ notrigger: true });
								file.trigger(evtSelect);
								trigger();
							}
							fm.trigger('contextmenu', {
								'type'    : 'files',
								'targets' : fm.selected(),
								'x'       : e.pageX,
								'y'       : e.pageY
							});

						}
						
					}
				})
				// unselect all on cwd click
				.on('click.'+fm.namespace, function(e) {
					if (e.target === this && ! cwd.data('longtap')) {
						!e.shiftKey && !e.ctrlKey && !e.metaKey && unselectAll();
					}
				})
				// prepend fake file/dir
				.on('create.'+fm.namespace, function(e, f) {
					var parent = list ? cwd.find('tbody') : cwd,
						p = parent.find('.elfinder-cwd-parent'),
						lock = f.move || false,
						file = jQuery(itemhtml(f)).addClass(clTmp),
						selected = fm.selected();
						
					if (selected.length) {
						lock && fm.trigger('lockfiles', {files: selected});
					} else {
						unselectAll();
					}

					if (p.length) {
						p.after(file);
					} else {
						parent.prepend(file);
					}
					
					setColwidth();
					wrapper.scrollTop(0).scrollLeft(0);
				})
				// unselect all selected files
				.on('unselectall', unselectAll)
				.on('selectfile', function(e, id) {
					fm.cwdHash2Elm(id).trigger(evtSelect);
					trigger();
				})
				.on('colwidth', function() {
					if (list) {
						cwd.find('table').css('table-layout', '')
							.find('td').css('width', '');
						fixTableHeader({fitWidth: true});
						fm.storage('cwdColWidth', colWidth = null);
					}
				})
				.on('iconpref', function(e, data) {
					cwd.removeClass(function(i, cName) {
						return (cName.match(/\belfinder-cwd-size\S+/g) || []).join(' ');
					});
					iconSize = data? (parseInt(data.size) || 0) : 0;
					if (!list) {
						if (iconSize > 0) {
							cwd.addClass('elfinder-cwd-size' + iconSize);
						}
						if (bufferExt.renderd) {
							requestAnimationFrame(function() {
								itemBoxSize.icons = {};
								bufferExt.hpi = null;
								bottomMarkerShow(cwd, bufferExt.renderd);
								wrapperRepaint();
							});
						}
					}
				})
				// Change icon size with mouse wheel event
				.on('onwheel' in document ? 'wheel' : 'mousewheel', function(e) {
					var tm, size, delta;
					if (!list && ((e.ctrlKey && !e.metaKey) || (!e.ctrlKey && e.metaKey))) {
						e.stopPropagation();
						e.preventDefault();
						tm = cwd.data('wheelTm');
						if (typeof tm !== 'undefined') {
							clearTimeout(tm);
							cwd.data('wheelTm', setTimeout(function() {
								cwd.removeData('wheelTm');
							}, 200));
						} else {
							cwd.data('wheelTm', false);
							size = iconSize || 0;
							delta = e.originalEvent.deltaY ? e.originalEvent.deltaY : -(e.originalEvent.wheelDelta);
							if (delta > 0) {
								if (iconSize > 0) {
									size = iconSize - 1;
								}
							} else {
								if (iconSize < options.iconsView.sizeMax) {
									size = iconSize + 1;
								}
							}
							if (size !== iconSize) {
								fm.storage('iconsize', size);
								cwd.trigger('iconpref', {size: size});
							}
						}
					}
				}),
			wrapper = jQuery('<div class="elfinder-cwd-wrapper"></div>')
				// make cwd itself droppable for folders from nav panel
				.droppable(Object.assign({}, droppable, {autoDisable: false}))
				.on('contextmenu.'+fm.namespace, wrapperContextMenu.contextmenu)
				.on('touchstart.'+fm.namespace, wrapperContextMenu.touchstart)
				.on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, wrapperContextMenu.touchend)
				.on('click.'+fm.namespace, wrapperContextMenu.click)
				.on('scroll.'+fm.namespace, function() {
					if (! scrolling) {
						cwd.data('selectable') && cwd.selectable('disable');
						wrapper.trigger(scrollStartEvent);
					}
					scrolling = true;
					bufferExt.scrtm && cancelAnimationFrame(bufferExt.scrtm);
					if (bufferExt.scrtm && Math.abs((bufferExt.scrolltop || 0) - (bufferExt.scrolltop = (this.scrollTop || jQuery(this).scrollTop()))) < 5) {
						bufferExt.scrtm = 0;
						wrapper.trigger(scrollEvent);
					}
					bufferExt.scrtm = requestAnimationFrame(function() {
						bufferExt.scrtm = 0;
						wrapper.trigger(scrollEvent);
					});
				})
				.on(scrollEvent, function() {
					scrolling = false;
					wrapperRepaint();
				}),
			
			bottomMarker = jQuery('<div>&nbsp;</div>')
				.css({position: 'absolute', width: '1px', height: '1px'})
				.hide(),
			
			selectAllCheckbox = selectCheckbox? jQuery('<div class="elfinder-cwd-selectall"><input type="checkbox"/></div>')
				.attr('title', fm.i18n('selectall'))
				.on('click', function(e) {
					e.stopPropagation();
					e.preventDefault();
					if (jQuery(this).data('pending')) {
						return false;
					}
					selectAllCheckbox.data('pending', true);
					if (cwd.hasClass('elfinder-cwd-allselected')) {
						selectAllCheckbox.find('input').prop('checked', false);
						requestAnimationFrame(function() {
							unselectAll();
						});
					} else {
						selectAll();
					}
				}) : jQuery(),
			
			restm = null,
			resize = function(init) {
				var initHeight = function() {
					if (typeof bufferExt.renderd !== 'undefined') {
						var h = 0;
						wrapper.siblings('div.elfinder-panel:visible').each(function() {
							h += jQuery(this).outerHeight(true);
						});
						wrapper.height(wz.height() - h - wrapper._padding);
					}
				};
				
				init && initHeight();
				
				restm && cancelAnimationFrame(restm);
				restm = requestAnimationFrame(function(){
					!init && initHeight();
					var wph, cwdoh;
					// fix cwd height if it less then wrapper
					cwd.css('height', 'auto');
					wph = wrapper[0].clientHeight - parseInt(wrapper.css('padding-top')) - parseInt(wrapper.css('padding-bottom')) - parseInt(cwd.css('margin-top')),
					cwdoh = cwd.outerHeight(true);
					if (cwdoh < wph) {
						cwd.height(wph);
					}
				});
				
				list && ! colResizing && (init? wrapper.trigger('resize.fixheader') : fixTableHeader());
				
				wrapperRepaint();
			},
			
			// elfinder node
			parent = jQuery(this).parent().on('resize', resize),
			
			// workzone node 
			wz = parent.children('.elfinder-workzone').append(wrapper.append(this).append(bottomMarker)),
			
			// message board
			mBoard = jQuery('<div class="elfinder-cwd-message-board"></div>').insertAfter(cwd),

			// Volume expires
			vExpires = jQuery('<div class="elfinder-cwd-expires" ></div>'),

			vExpiresTm,

			showVolumeExpires = function() {
				var remain, sec, int;
				vExpiresTm && clearTimeout(vExpiresTm);
				if (curVolId && fm.volumeExpires[curVolId]) {
					sec = fm.volumeExpires[curVolId] - ((+new Date()) / 1000);
					int = (sec % 60) + 0.1;
					remain = Math.floor(sec / 60);
					vExpires.html(fm.i18n(['minsLeft', remain])).show();
					if (remain) {
						vExpiresTm = setTimeout(showVolumeExpires, int * 1000);
					}
				}
			},

			// each item box size
			itemBoxSize = {
				icons : {},
				list : {}
			},

			// has UI tree
			hasUiTree,

			// Icon size of icons view
			iconSize,

			// Current volume id
			curVolId,
			
			winScrTm;

		// IE < 11 not support CSS `pointer-events: none`
		if (!fm.UA.ltIE10) {
			mBoard.append(jQuery('<div class="elfinder-cwd-trash" ></div>').html(fm.i18n('volume_Trash')))
			      .append(vExpires);
		}

		// setup by options
		replacement = Object.assign(replacement, options.replacement || {});
		
		try {
			colWidth = fm.storage('cwdColWidth')? fm.storage('cwdColWidth') : null;
		} catch(e) {
			colWidth = null;
		}
		
		// setup costomCols
		fm.bind('columnpref', function(e) {
			var opts = e.data || {};
			if (customCols = fm.storage('cwdCols')) {
				customCols = jQuery.grep(customCols, function(n) {
					return (options.listView.columns.indexOf(n) !== -1)? true : false;
				});
				if (options.listView.columns.length > customCols.length) {
					jQuery.each(options.listView.columns, function(i, n) {
						if (customCols.indexOf(n) === -1) {
							customCols.push(n);
						}
					});
				}
			} else {
				customCols = options.listView.columns;
			}
			// column names array that hidden
			var columnhides = fm.storage('columnhides') || null;
			if (columnhides && Object.keys(columnhides).length)
			customCols = jQuery.grep(customCols, function(n) {
				return columnhides[n]? false : true;
			});
			// make template with customCols
			templates.row = makeTemplateRow();
			// repaint if need it
			list && opts.repaint && content();
		}).trigger('columnpref');

		if (mobile) {
			// for iOS5 bug
			jQuery('body').on('touchstart touchmove touchend', function(e){});
		}
		
		selectCheckbox && cwd.addClass('elfinder-has-checkbox');
		
		jQuery(window).on('scroll.'+fm.namespace, function() {
			winScrTm && cancelAnimationFrame(winScrTm);
			winScrTm = requestAnimationFrame(function() {
				wrapper.trigger(scrollEvent);
			});
		});
		
		jQuery(document).on('keydown.'+fm.namespace, function(e) {
			if (e.keyCode == jQuery.ui.keyCode.ESCAPE) {
				if (! fm.getUI().find('.ui-widget:visible').length) {
					unselectAll();
				}
			}
		});
		
		fm
			.one('init', function(){
				var style = document.createElement('style'),
				sheet, node, base, resizeTm, iconSize, i = 0;
				if (document.head) {
					document.head.appendChild(style);
					sheet = style.sheet;
					sheet.insertRule('.elfinder-cwd-wrapper-empty .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty .native-droppable .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder'+(mobile? 'LTap' : 'Drop'))+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty .ui-droppable-disabled .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptySearch')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-incsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyIncSearch')+'" }', i++);
					sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-letsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyLetSearch')+'" }', i++);
				}
				if (iconSize = (fm.storage('iconsize') || options.iconsView.size || 0)) {
					iconSize = Math.min(iconSize, options.iconsView.sizeMax);
					cwd.trigger('iconpref', {size: iconSize});
				}
				if (! mobile) {
					fm.one('open', function() {
						sheet && fm.zIndex && sheet.insertRule('.ui-selectable-helper{z-index:'+fm.zIndex+';}', i++);
					});
					base = jQuery('<div style="position:absolute"></div>');
					node = fm.getUI();
					node.on('resize', function(e, data) {
						var offset;
						e.preventDefault();
						e.stopPropagation();
						if (data && data.fullscreen) {
							offset = node.offset();
							if (data.fullscreen === 'on') {
								base.css({top:offset.top * -1 , left:offset.left * -1 }).appendTo(node);
								selectableOption.appendTo = base;
							} else {
								base.detach();
								selectableOption.appendTo = 'body';
							}
							cwd.data('selectable') && cwd.selectable('option', {appendTo : selectableOption.appendTo});
						}
					});
				}
				hasUiTree = fm.getUI('tree').length;
			})
			.bind('enable', function() {
				resize();
			})
			.bind('request.open', function() {
				bufferExt.getTmbs = [];
			})
			.one('open', function() {
				if (fm.maxTargets) {
					tmbNum = Math.min(fm.maxTargets, tmbNum);
				}
			})
			.bind('open add remove searchend', function() {
				var phash = fm.cwd().hash,
					type = this.type;
				if (type === 'open' || type === 'searchend' || fm.searchStatus.state < 2) {
					cwdHashes = jQuery.map(fm.files(phash), function(f) { return f.hash; });
					fm.trigger('cwdhasheschange', cwdHashes);
				}
				if (type === 'open') {
					var inTrash = function() {
							var isIn = false;
							jQuery.each(cwdParents, function(i, h) {
								if (fm.trashes[h]) {
									isIn = true;
									return false;
								}
							});
							return isIn;
						},
						req = phash?
							(! fm.file(phash) || hasUiTree?
								(! hasUiTree?
									fm.request({
										data: {
											cmd    : 'parents',
											target : fm.cwd().hash
										},
										preventFail : true
									}) : (function() {
										var dfd = jQuery.Deferred();
										fm.one('treesync', function(e) {
											e.data.always(function() {
												dfd.resolve();
											});
										});
										return dfd;
									})()
								) : null
							) : null,
						cwdObj = fm.cwd();
					// add/remove volume id class
					if (cwdObj.volumeid !== curVolId) {
						vExpires.empty().hide();
						if (curVolId) {
							wrapper.removeClass('elfinder-cwd-wrapper-' + curVolId);
						}
						curVolId = cwdObj.volumeid;
						showVolumeExpires();
						wrapper.addClass('elfinder-cwd-wrapper-' + curVolId);
					}
					// add/remove trash class
					jQuery.when(req).done(function() {
						cwdParents = fm.parents(cwdObj.hash);
						wrapper[inTrash()? 'addClass':'removeClass']('elfinder-cwd-wrapper-trash');
					});
					incHashes = void 0;
					unselectAll({ notrigger: true });
					content();
				}
			})
			.bind('search', function(e) {
				cwdHashes = jQuery.map(e.data.files, function(f) { return f.hash; });
				fm.trigger('cwdhasheschange', cwdHashes);
				incHashes = void 0;
				fm.searchStatus.ininc = false;
				content();
				fm.autoSync('stop');
			})
			.bind('searchend', function(e) {
				if (query || incHashes) {
					query = '';
					if (incHashes) {
						fm.trigger('incsearchend', e.data);
					} else {
						if (!e.data || !e.data.noupdate) {
							content();
						}
					}
				}
				fm.autoSync();
			})
			.bind('searchstart', function(e) {
				unselectAll();
				query = e.data.query;
			})
			.bind('incsearchstart', function(e) {
				var q = e.data.query || '',
					type =  e.data.type || 'SearchName',
					searchTypes = fm.options.commandsOptions.search.searchTypes || {};

				if ((searchTypes[type] && searchTypes[type].incsearch) || type === 'SearchName') {
					selectedFiles = {};
					fm.lazy(function() {
						// incremental search
						var regex, incSearch, fst = '';
						query = q;
						if (q) {
							if (q.substr(0,1) === '/') {
								q = q.substr(1);
								fst = '^';
							}
							regex = new RegExp(fst + q.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i');
							if (type === 'SearchName') {
								incHashes = jQuery.grep(cwdHashes, function(hash) {
									var file = fm.file(hash);
									return (file && (file.name.match(regex) || (file.i18 && file.i18.match(regex))))? true : false;
								});
							} else {
								incSearch = searchTypes[type].incsearch;
								if (typeof incSearch === 'string') {
									incHashes = jQuery.grep(cwdHashes, function(hash) {
										var file = fm.file(hash);
										return (file && file[incSearch] && (file[incSearch] + '').match(regex))? true : false;
									});
								} else if (typeof incSearch === 'function') {
									try {
										incHashes = jQuery.grep(incSearch({val: q, regex: regex}, cwdHashes, fm), function(hash) {
											return fm.file(hash)? true : false;
										});
									} catch(e) {
										incHashes = [];
									}
								}
							}
							fm.trigger('incsearch', { hashes: incHashes, query: q })
								.searchStatus.ininc = true;
							content();
							fm.autoSync('stop');
						} else {
							fm.trigger('incsearchend');
						}
					});
				}
			})
			.bind('incsearchend', function(e) {
				query = '';
				fm.searchStatus.ininc = false;
				incHashes = void 0;
				if (!e.data || !e.data.noupdate) {
					content();
				}
				fm.autoSync();
			})
			.bind('sortchange', function() {
				var lastScrollLeft = wrapper.scrollLeft(),
					allsel = cwd.hasClass('elfinder-cwd-allselected');
				
				content();
				fm.one('cwdrender', function() {
					wrapper.scrollLeft(lastScrollLeft);
					if (allsel) {
						selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true);
					}
					(allsel || Object.keys(selectedFiles).length) && trigger();
				});
			})
			.bind('viewchange', function() {
				var l      = fm.viewType != 'list',
					allsel = cwd.hasClass('elfinder-cwd-allselected');
				
				if (l != list) {
					list = l;
					fm.viewType = list? 'list' : 'icons';
					if (iconSize) {
						fm.one('cwdinit', function() {
							cwd.trigger('iconpref', {size: iconSize});
						});
					}
					content();
					resize();

					if (allsel) {
						cwd.addClass('elfinder-cwd-allselected');
						selectAllCheckbox.find('input').prop('checked', true);
					}
					Object.keys(selectedFiles).length && trigger();
				}
			})
			.bind('wzresize', function() {
				var place = list ? cwd.find('tbody') : cwd,
					cwdOffset;
				resize(true);
				if (bufferExt.hpi) {
					bottomMarkerShow(place, place.find('[id]').length);
				}
				
				cwdOffset = cwd.offset();
				wz.data('rectangle', Object.assign(
					{
						width: wz.width(),
						height: wz.height(),
						cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width()
					},
					wz.offset())
				);
				
				bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true);
			})
			.bind('changeclipboard', function(e) {
				clipCuts = {};
				if (e.data && e.data.clipboard && e.data.clipboard.length) {
					jQuery.each(e.data.clipboard, function(i, f) {
						if (f.cut) {
							clipCuts[f.hash] = true;
						}
					});
				}
			})
			.bind('resMixinMake', function() {
				setColwidth();
			})
			.bind('tmbreload', function(e) {
				var imgs = {},
					files = (e.data && e.data.files)? e.data.files : null;
				
				jQuery.each(files, function(i, f) {
					if (f.tmb && f.tmb != '1') {
						imgs[f.hash] = f.tmb;
					}
				});
				if (Object.keys(imgs).length) {
					attachThumbnails(imgs, true);
				}
			})
			.add(function(e) {
				var regex = query? new RegExp(query.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i') : null,
					mime  = fm.searchStatus.mime,
					inSearch = fm.searchStatus.state > 1,
					phash = inSearch && fm.searchStatus.target? fm.searchStatus.target : fm.cwd().hash,
					curPath = fm.path(phash),
					inTarget = function(f) {
						var res, parents, path;
						res = (f.phash === phash);
						if (!res && inSearch) {
							path = f.path || fm.path(f.hash);
							res = (curPath && path.indexOf(curPath) === 0);
							if (! res && fm.searchStatus.mixed) {
								res = jQuery.grep(fm.searchStatus.mixed, function(vid) { return f.hash.indexOf(vid) === 0? true : false; }).length? true : false;
							}
						}
						if (res && inSearch) {
							if (mime) {
								res = (f.mime.indexOf(mime) === 0);
							} else {
								res = (f.name.match(regex) || (f.i18 && f.i18.match(regex)))? true : false;
							}
						}
						return res;
					},
					files = jQuery.grep(e.data.added || [], function(f) { return inTarget(f)? true : false ;});
				add(files);
				if (fm.searchStatus.state === 2) {
					jQuery.each(files, function(i, f) {
						if (jQuery.inArray(f.hash, cwdHashes) === -1) {
							cwdHashes.push(f.hash);
						}
					});
					fm.trigger('cwdhasheschange', cwdHashes);
				}
				list && resize();
				wrapper.trigger(scrollEvent);
			})
			.change(function(e) {
				var phash = fm.cwd().hash,
					sel   = fm.selected(),
					files, added;

				if (query) {
					jQuery.each(e.data.changed || [], function(i, file) {
						if (fm.cwdHash2Elm(file.hash).length) {
							remove([file.hash]);
							add([file], 'change');
							jQuery.inArray(file.hash, sel) !== -1 && selectFile(file.hash);
							added = true;
						}
					});
				} else {
					jQuery.each(jQuery.grep(e.data.changed || [], function(f) { return f.phash == phash ? true : false; }), function(i, file) {
						if (fm.cwdHash2Elm(file.hash).length) {
							remove([file.hash]);
							add([file], 'change');
							jQuery.inArray(file.hash, sel) !== -1 && selectFile(file.hash);
							added = true;
						}
					});
				}
				
				if (added) {
					fm.trigger('cwdhasheschange', cwdHashes);
					list && resize();
					wrapper.trigger(scrollEvent);
				}
				
				trigger();
			})
			.remove(function(e) {
				var place = list ? cwd.find('tbody') : cwd;
				remove(e.data.removed || []);
				trigger();
				if (buffer.length < 1 && place.children(fileSelector + (options.oldSchool? ':not(.elfinder-cwd-parent)' : '')).length < 1) {
					wz.addClass('elfinder-cwd-wrapper-empty');
					selectCheckbox && selectAllCheckbox.find('input').prop('checked', false);
					bottomMarker.hide();
					wrapper.off(scrollEvent, render);
					resize();
				} else {
					bottomMarkerShow(place);
					wrapper.trigger(scrollEvent);
				}
			})
			// select dragged file if no selected, disable selectable
			.dragstart(function(e) {
				var target = jQuery(e.data.target),
					oe     = e.data.originalEvent;

				if (target.hasClass(clFile)) {
					
					if (!target.hasClass(clSelected)) {
						!(oe.ctrlKey || oe.metaKey || oe.shiftKey) && unselectAll({ notrigger: true });
						target.trigger(evtSelect);
						trigger();
					}
				}
				
				cwd.removeClass(clDisabled).data('selectable') && cwd.selectable('disable');
				selectLock = true;
			})
			// enable selectable
			.dragstop(function() {
				cwd.data('selectable') && cwd.selectable('enable');
				selectLock = false;
			})
			.bind('lockfiles unlockfiles selectfiles unselectfiles', function(e) {
				var events = {
						lockfiles     : evtDisable ,
						unlockfiles   : evtEnable ,
						selectfiles   : evtSelect,
						unselectfiles : evtUnselect },
					event  = events[e.type],
					files  = e.data.files || [],
					l      = files.length,
					helper = e.data.helper || jQuery(),
					parents, ctr, add;

				if (l > 0) {
					parents = fm.parents(files[0]);
				}
				if (event === evtSelect || event === evtUnselect) {
					add  = (event === evtSelect),
					jQuery.each(files, function(i, hash) {
						var all = cwd.hasClass('elfinder-cwd-allselected');
						if (! selectedFiles[hash]) {
							add && (selectedFiles[hash] = true);
						} else {
							if (all) {
								selectCheckbox && selectAllCheckbox.children('input').prop('checked', false);
								cwd.removeClass('elfinder-cwd-allselected');
								all = false;
							}
							! add && delete selectedFiles[hash];
						}
					});
				}
				if (!helper.data('locked')) {
					while (l--) {
						try {
							fm.cwdHash2Elm(files[l]).trigger(event);
						} catch(e) {}
					}
					! e.data.inselect && trigger();
				}
				if (wrapper.data('dropover') && parents.indexOf(wrapper.data('dropover')) !== -1) {
					ctr = e.type !== 'lockfiles';
					helper.toggleClass('elfinder-drag-helper-plus', ctr);
					wrapper.toggleClass(clDropActive, ctr);
				}
			})
			// select new files after some actions
			.bind('mkdir mkfile duplicate upload rename archive extract paste multiupload', function(e) {
				if (e.type == 'upload' && e.data._multiupload) return;
				var phash = fm.cwd().hash, files;
				
				unselectAll({ notrigger: true });

				jQuery.each((e.data.added || []).concat(e.data.changed || []), function(i, file) { 
					file && file.phash == phash && selectFile(file.hash);
				});
				trigger();
			})
			.shortcut({
				pattern     :'ctrl+a', 
				description : 'selectall',
				callback    : selectAll
			})
			.shortcut({
				pattern     :'ctrl+shift+i', 
				description : 'selectinvert',
				callback    : selectInvert
			})
			.shortcut({
				pattern     : 'left right up down shift+left shift+right shift+up shift+down',
				description : 'selectfiles',
				type        : 'keydown' , //fm.UA.Firefox || fm.UA.Opera ? 'keypress' : 'keydown',
				callback    : function(e) { select(e.keyCode, e.shiftKey); }
			})
			.shortcut({
				pattern     : 'home',
				description : 'selectffile',
				callback    : function(e) { 
					unselectAll({ notrigger: true });
					scrollToView(cwd.find('[id]:first').trigger(evtSelect));
					trigger();
				}
			})
			.shortcut({
				pattern     : 'end',
				description : 'selectlfile',
				callback    : function(e) { 
					unselectAll({ notrigger: true });
					scrollToView(cwd.find('[id]:last').trigger(evtSelect)) ;
					trigger();
				}
			})
			.shortcut({
				pattern     : 'page_up',
				description : 'pageTurning',
				callback    : function(e) {
					if (bufferExt.itemH) {
						wrapper.scrollTop(
							Math.round(
								wrapper.scrollTop()
								- (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH
							)
						);
					}
				}
			}).shortcut({
				pattern     : 'page_down',
				description : 'pageTurning',
				callback    : function(e) { 
					if (bufferExt.itemH) {
						wrapper.scrollTop(
							Math.round(
								wrapper.scrollTop()
								+ (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH
							)
						);
					}
				}
			});
		
	});
	
	// fm.timeEnd('cwdLoad')
	
	return this;
};
lib/js/ui/contextmenu.js000064400000052721147361034410011264 0ustar00/**
 * @class  elFinder contextmenu
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindercontextmenu = function(fm) {
	"use strict";
	return this.each(function() {
		var self   = jQuery(this),
			cmItem = 'elfinder-contextmenu-item',
			smItem = 'elfinder-contextsubmenu-item',
			exIcon = 'elfinder-contextmenu-extra-icon',
			cHover = fm.res('class', 'hover'),
			dragOpt = {
				distance: 8,
				start: function() {
					menu.data('drag', true).data('touching') && menu.find('.'+cHover).removeClass(cHover);
				},
				stop: function() {
					menu.data('draged', true).removeData('drag');
				}
			},
			menu = jQuery(this).addClass('touch-punch ui-helper-reset ui-front ui-widget ui-state-default ui-corner-all elfinder-contextmenu elfinder-contextmenu-'+fm.direction)
				.hide()
				.on('touchstart', function(e) {
					menu.data('touching', true).children().removeClass(cHover);
				})
				.on('touchend', function(e) {
					menu.removeData('touching');
				})
				.on('mouseenter mouseleave', '.'+cmItem, function(e) {
					jQuery(this).toggleClass(cHover, (e.type === 'mouseenter' || (! menu.data('draged') && menu.data('submenuKeep'))? true : false));
					if (menu.data('draged') && menu.data('submenuKeep')) {
						menu.find('.elfinder-contextmenu-sub:visible').parent().addClass(cHover);
					}
				})
				.on('mouseenter mouseleave', '.'+exIcon, function(e) {
					jQuery(this).parent().toggleClass(cHover, e.type === 'mouseleave');
				})
				.on('mouseenter mouseleave', '.'+cmItem+',.'+smItem, function(e) {
					var setIndex = function(target, sub) {
						jQuery.each(sub? subnodes : nodes, function(i, n) {
							if (target[0] === n) {
								(sub? subnodes : nodes)._cur = i;
								if (sub) {
									subselected = target;
								} else {
									selected = target;
								}
								return false;
							}
						});
					};
					if (e.originalEvent) {
						var target = jQuery(this),
							unHover = function() {
								if (selected && !selected.children('div.elfinder-contextmenu-sub:visible').length) {
									selected.removeClass(cHover);
								}
							};
						if (e.type === 'mouseenter') {
							// mouseenter
							if (target.hasClass(smItem)) {
								// submenu
								if (subselected) {
									subselected.removeClass(cHover);
								}
								if (selected) {
									subnodes = selected.find('div.'+smItem);
								}
								setIndex(target, true);
							} else {
								// menu
								unHover();
								setIndex(target);
							}
						} else {
							// mouseleave
							if (target.hasClass(smItem)) {
								//submenu
								subselected = null;
								subnodes = null;
							} else {
								// menu
								unHover();
								(function(sel) {
									setTimeout(function() {
										if (sel === selected) {
											selected = null;
										}
									}, 250);
								})(selected);
							}
						}
					}
				})
				.on('contextmenu', function(){return false;})
				.on('mouseup', function() {
					setTimeout(function() {
						menu.removeData('draged');
					}, 100);
				})
				.draggable(dragOpt),
			ltr = fm.direction === 'ltr',
			subpos = ltr? 'left' : 'right',
			types = Object.assign({}, fm.options.contextmenu),
			tpl     = '<div class="'+cmItem+'{className}"><span class="elfinder-button-icon {icon} elfinder-contextmenu-icon"{style}></span><span>{label}</span></div>',
			item = function(label, icon, callback, opts) {
				var className = '',
					style = '',
					iconClass = '',
					v, pos;
				if (opts) {
					if (opts.className) {
						className = ' ' + opts.className;
					}
					if (opts.iconClass) {
						iconClass = opts.iconClass;
						icon = '';
					}
					if (opts.iconImg) {
						v = opts.iconImg.split(/ +/);
						pos = v[1] && v[2]? fm.escape(v[1] + 'px ' + v[2] + 'px') : '';
						style = ' style="background:url(\''+fm.escape(v[0])+'\') '+(pos? pos : '0 0')+' no-repeat;'+(pos? '' : 'posbackground-size:contain;')+'"';
					}
				}
				return jQuery(tpl.replace('{icon}', icon ? 'elfinder-button-icon-'+icon : (iconClass? iconClass : ''))
						.replace('{label}', label)
						.replace('{style}', style)
						.replace('{className}', className))
					.on('click', function(e) {
						e.stopPropagation();
						e.preventDefault();
						callback();
					});
			},
			urlIcon = function(iconUrl) {
				var v = iconUrl.split(/ +/),
					pos = v[1] && v[2]? (v[1] + 'px ' + v[2] + 'px') : '';
				return {
					backgroundImage: 'url("'+v[0]+'")',
					backgroundRepeat: 'no-repeat',
					backgroundPosition: pos? pos : '',
					backgroundSize: pos? '' : 'contain'
				};
			},
			base, cwd,
			nodes, selected, subnodes, subselected, autoSyncStop, subHoverTm,

			autoToggle = function() {
				var evTouchStart = 'touchstart.contextmenuAutoToggle';
				menu.data('hideTm') && clearTimeout(menu.data('hideTm'));
				if (menu.is(':visible')) {
					menu.on('touchstart', function(e) {
						if (e.originalEvent.touches.length > 1) {
							return;
						}
						menu.stop();
						fm.toFront(menu);
						menu.data('hideTm') && clearTimeout(menu.data('hideTm'));
					})
					.data('hideTm', setTimeout(function() {
						if (menu.is(':visible')) {
							cwd.find('.elfinder-cwd-file').off(evTouchStart);
							cwd.find('.elfinder-cwd-file.ui-selected')
							.one(evTouchStart, function(e) {
								if (e.originalEvent.touches.length > 1) {
									return;
								}
								var tgt = jQuery(e.target);
								if (menu.first().length && !tgt.is('input:checkbox') && !tgt.hasClass('elfinder-cwd-select')) {
									e.stopPropagation();
									//e.preventDefault();
									open(e.originalEvent.touches[0].pageX, e.originalEvent.touches[0].pageY);
									cwd.data('longtap', true)
									tgt.one('touchend', function() {
										setTimeout(function() {
											cwd.removeData('longtap');
										}, 80);
									});
									return;
								}
								cwd.find('.elfinder-cwd-file').off(evTouchStart);
							})
							.one('unselect.'+fm.namespace, function() {
								cwd.find('.elfinder-cwd-file').off(evTouchStart);
							});
							menu.fadeOut({
								duration: 300,
								fail: function() {
									menu.css('opacity', '1').show();
								},
								done: function() {
									fm.toHide(menu);
								}
							});
						}
					}, 4500));
				}
			},
			
			keyEvts = function(e) {
				var code = e.keyCode,
					ESC = jQuery.ui.keyCode.ESCAPE,
					ENT = jQuery.ui.keyCode.ENTER,
					LEFT = jQuery.ui.keyCode.LEFT,
					RIGHT = jQuery.ui.keyCode.RIGHT,
					UP = jQuery.ui.keyCode.UP,
					DOWN = jQuery.ui.keyCode.DOWN,
					subent = fm.direction === 'ltr'? RIGHT : LEFT,
					sublev = subent === RIGHT? LEFT : RIGHT;
				
				if (jQuery.inArray(code, [ESC, ENT, LEFT, RIGHT, UP, DOWN]) !== -1) {
					e.preventDefault();
					e.stopPropagation();
					e.stopImmediatePropagation();
					if (code == ESC || code === sublev) {
						if (selected && subnodes && subselected) {
							subselected.trigger('mouseleave').trigger('submenuclose');
							selected.addClass(cHover);
							subnodes = null;
							subselected = null;
						} else {
							code == ESC && close();
							fm.trigger('closecontextmenu');
						}
					} else if (code == UP || code == DOWN) {
						if (subnodes) {
							if (subselected) {
								subselected.trigger('mouseleave');
							}
							if (code == DOWN && (! subselected || subnodes.length <= ++subnodes._cur)) {
								subnodes._cur = 0;
							} else if (code == UP && (! subselected || --subnodes._cur < 0)) {
								subnodes._cur = subnodes.length - 1;
							}
							subselected = subnodes.eq(subnodes._cur).trigger('mouseenter');
						} else {
							subnodes = null;
							if (selected) {
								selected.trigger('mouseleave');
							}
							if (code == DOWN && (! selected || nodes.length <= ++nodes._cur)) {
								nodes._cur = 0;
							} else if (code == UP && (! selected || --nodes._cur < 0)) {
								nodes._cur = nodes.length - 1;
							}
							selected = nodes.eq(nodes._cur).addClass(cHover);
						}
					} else if (selected && (code == ENT || code === subent)) {
						if (selected.hasClass('elfinder-contextmenu-group')) {
							if (subselected) {
								code == ENT && subselected.click();
							} else {
								selected.trigger('mouseenter');
								subnodes = selected.find('div.'+smItem);
								subnodes._cur = 0;
								subselected = subnodes.first().addClass(cHover);
							}
						} else {
							code == ENT && selected.click();
						}
					}
				}
			},
			
			open = function(x, y, css) {
				var width      = menu.outerWidth(),
					height     = menu.outerHeight(),
					bstyle     = base.attr('style'),
					bpos       = base.offset(),
					bwidth     = base.width(),
					bheight    = base.height(),
					mw         = fm.UA.Mobile? 40 : 2,
					mh         = fm.UA.Mobile? 20 : 2,
					x          = x - (bpos? bpos.left : 0),
					y          = y - (bpos? bpos.top : 0),
					css        = Object.assign(css || {}, {
						top  : Math.max(0, y + mh + height < bheight ? y + mh : y - (y + height - bheight)),
						left : Math.max(0, (x < width + mw || x + mw + width < bwidth)? x + mw : x - mw - width),
						opacity : '1'
					}),
					evts;

				autoSyncStop = true;
				fm.autoSync('stop');
				base.width(bwidth);
				menu.stop().removeAttr('style').css(css);
				fm.toFront(menu);
				menu.show();
				base.attr('style', bstyle);
				
				css[subpos] = parseInt(menu.width());
				menu.find('.elfinder-contextmenu-sub').css(css);
				if (fm.UA.iOS) {
					jQuery('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'auto');
				}
				
				selected = null;
				subnodes = null;
				subselected = null;
				jQuery(document).on('keydown.' + fm.namespace, keyEvts);
				evts = jQuery._data(document).events;
				if (evts && evts.keydown) {
					evts.keydown.unshift(evts.keydown.pop());
				}
				
				fm.UA.Mobile && autoToggle();
				
				requestAnimationFrame(function() {
					fm.getUI().one('click.' + fm.namespace, close);
				});
			},
			
			close = function() {
				fm.getUI().off('click.' + fm.namespace, close);
				jQuery(document).off('keydown.' + fm.namespace, keyEvts);

				currentType = currentTargets = null;
				
				if (menu.is(':visible') || menu.children().length) {
					fm.toHide(menu.removeAttr('style').empty().removeData('submenuKeep'));
					try {
						if (! menu.draggable('instance')) {
							menu.draggable(dragOpt);
						}
					} catch(e) {
						if (! menu.hasClass('ui-draggable')) {
							menu.draggable(dragOpt);
						}
					}
					if (menu.data('prevNode')) {
						menu.data('prevNode').after(menu);
						menu.removeData('prevNode');
					}
					fm.trigger('closecontextmenu');
					if (fm.UA.iOS) {
						jQuery('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'touch');
					}
				}
				
				autoSyncStop && fm.searchStatus.state < 1 && ! fm.searchStatus.ininc && fm.autoSync();
				autoSyncStop = false;
			},
			
			create = function(type, targets) {
				var sep    = false,
					insSep = false,
					disabled = [],
					isCwd = type === 'cwd',
					selcnt = 0,
					cmdMap;

				currentType = type;
				currentTargets = targets;
				
				// get current uiCmdMap option
				if (!(cmdMap = fm.option('uiCmdMap', isCwd? void(0) : targets[0]))) {
					cmdMap = {};
				}
				
				if (!isCwd) {
					disabled = fm.getDisabledCmds(targets);
				}
				
				selcnt = fm.selected().length;
				if (selcnt > 1) {
					menu.append('<div class="ui-corner-top ui-widget-header elfinder-contextmenu-header"><span>'
					 + fm.i18n('selectedItems', ''+selcnt)
					 + '</span></div>');
				}
				
				nodes = jQuery();
				jQuery.each(types[type]||[], function(i, name) {
					var cmd, cmdName, useMap, node, submenu, hover;
					
					if (name === '|') {
						if (sep) {
							insSep = true;
						}
						return;
					}
					
					if (cmdMap[name]) {
						cmdName = cmdMap[name];
						useMap = true;
					} else {
						cmdName = name;
					}
					cmd = fm.getCommand(cmdName);

					if (cmd && !isCwd && (!fm.searchStatus.state || !cmd.disableOnSearch)) {
						cmd.__disabled = cmd._disabled;
						cmd._disabled = !(cmd.alwaysEnabled || (fm._commands[cmdName] ? jQuery.inArray(name, disabled) === -1 && (!useMap || !disabled[cmdName]) : false));
						jQuery.each(cmd.linkedCmds, function(i, n) {
							var c;
							if (c = fm.getCommand(n)) {
								c.__disabled = c._disabled;
								c._disabled = !(c.alwaysEnabled || (fm._commands[n] ? !disabled[n] : false));
							}
						});
					}

					if (cmd && !cmd._disabled && cmd.getstate(targets) != -1) {
						if (cmd.variants) {
							if (!cmd.variants.length) {
								return;
							}
							node = item(cmd.title, cmd.className? cmd.className : cmd.name, function(){}, cmd.contextmenuOpts);
							
							submenu = jQuery('<div class="ui-front ui-corner-all elfinder-contextmenu-sub"></div>')
								.hide()
								.css('max-height', fm.getUI().height() - 30)
								.appendTo(node.append('<span class="elfinder-contextmenu-arrow"></span>'));
							
							hover = function(show){
								if (! show) {
									submenu.hide();
								} else {
									var bstyle = base.attr('style');
									base.width(base.width());
									// top: '-1000px' to prevent visible scrollbar of window with the elFinder option `height: '100%'`
									submenu.css({ top: '-1000px', left: 'auto', right: 'auto' });
									var nodeOffset = node.offset(),
										nodeleft   = nodeOffset.left,
										nodetop    = nodeOffset.top,
										nodewidth  = node.outerWidth(),
										width      = submenu.outerWidth(true),
										height     = submenu.outerHeight(true),
										baseOffset = base.offset(),
										wwidth     = baseOffset.left + base.width(),
										wheight    = baseOffset.top + base.height(),
										cltr       = ltr, 
										x          = nodewidth,
										y, over;
	
									if (ltr) {
										over = (nodeleft + nodewidth + width) - wwidth;
										if (over > 10) {
											if (nodeleft > width - 5) {
												x = x - 5;
												cltr = false;
											} else {
												if (!fm.UA.Mobile) {
													x = nodewidth - over;
												}
											}
										}
									} else {
										over = width - nodeleft;
										if (over > 0) {
											if ((nodeleft + nodewidth + width - 15) < wwidth) {
												x = x - 5;
												cltr = true;
											} else {
												if (!fm.UA.Mobile) {
													x = nodewidth - over;
												}
											}
										}
									}
									over = (nodetop + 5 + height) - wheight;
									y = (over > 0 && nodetop < wheight)? 5 - over : (over > 0? 30 - height : 5);
	
									menu.find('.elfinder-contextmenu-sub:visible').hide();
									submenu.css({
										top : y,
										left : cltr? x : 'auto',
										right: cltr? 'auto' : x,
										overflowY: 'auto'
									}).show();
									base.attr('style', bstyle);
								}
							};
							
							node.addClass('elfinder-contextmenu-group')
								.on('mouseleave', '.elfinder-contextmenu-sub', function(e) {
									if (! menu.data('draged')) {
										menu.removeData('submenuKeep');
									}
								})
								.on('submenuclose', '.elfinder-contextmenu-sub', function(e) {
									hover(false);
								})
								.on('click', '.'+smItem, function(e){
									var opts, $this;
									e.stopPropagation();
									if (! menu.data('draged')) {
										$this = jQuery(this);
										if (!cmd.keepContextmenu) {
											menu.hide();
										} else {
											$this.removeClass(cHover);
											node.addClass(cHover);
										}
										opts = $this.data('exec');
										if (typeof opts === 'undefined') {
											opts = {};
										}
										if (typeof opts === 'object') {
											opts._userAction = true;
											opts._currentType = type;
											opts._currentNode = $this;
										}
										!cmd.keepContextmenu && close();
										fm.exec(cmd.name, targets, opts);
									}
								})
								.on('touchend', function(e) {
									if (! menu.data('drag')) {
										hover(true);
										menu.data('submenuKeep', true);
									}
								})
								.on('mouseenter mouseleave', function(e){
									if (! menu.data('touching')) {
										if (node.data('timer')) {
											clearTimeout(node.data('timer'));
											node.removeData('timer');
										}
										if (!jQuery(e.target).closest('.elfinder-contextmenu-sub', menu).length) {
											if (e.type === 'mouseleave') {
												if (! menu.data('submenuKeep')) {
													node.data('timer', setTimeout(function() {
														node.removeData('timer');
														hover(false);
													}, 250));
												}
											} else {
												node.data('timer', setTimeout(function() {
													node.removeData('timer');
													hover(true);
												}, nodes.find('div.elfinder-contextmenu-sub:visible').length? 250 : 0));
											}
										}
									}
								});
							
							jQuery.each(cmd.variants, function(i, variant) {
								var item = variant === '|' ? '<div class="elfinder-contextmenu-separator"></div>' :
									jQuery('<div class="'+cmItem+' '+smItem+'"><span>'+variant[1]+'</span></div>').data('exec', variant[0]),
									iconClass, icon;
								if (typeof variant[2] !== 'undefined') {
									icon = jQuery('<span></span>').addClass('elfinder-button-icon elfinder-contextmenu-icon');
									if (! /\//.test(variant[2])) {
										icon.addClass('elfinder-button-icon-'+variant[2]);
									} else {
										icon.css(urlIcon(variant[2]));
									}
									item.prepend(icon).addClass(smItem+'-icon');
								}
								submenu.append(item);
							});
								
						} else {
							node = item(cmd.title, cmd.className? cmd.className : cmd.name, function() {
								if (! menu.data('draged')) {
									!cmd.keepContextmenu && close();
									fm.exec(cmd.name, targets, {_userAction: true, _currentType: type, _currentNode: node});
								}
							}, cmd.contextmenuOpts);
							if (cmd.extra && cmd.extra.node) {
								jQuery('<span class="elfinder-button-icon elfinder-button-icon-'+(cmd.extra.icon || '')+' '+exIcon+'"></span>')
									.append(cmd.extra.node).appendTo(node);
								jQuery(cmd.extra.node).trigger('ready', {targets: targets});
							} else {
								node.remove('.'+exIcon);
							}
						}
						
						if (cmd.extendsCmd) {
							node.children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd);
						}
						
						if (insSep) {
							menu.append('<div class="elfinder-contextmenu-separator"></div>');
						}
						menu.append(node);
						sep = true;
						insSep = false;
					}
					
					if (cmd && typeof cmd.__disabled !== 'undefined') {
						cmd._disabled = cmd.__disabled;
						delete cmd.__disabled;
						jQuery.each(cmd.linkedCmds, function(i, n) {
							var c;
							if (c = fm.getCommand(n)) {
								c._disabled = c.__disabled;
								delete c.__disabled;
							}
						});
					}
				});
				nodes = menu.children('div.'+cmItem);
			},
			
			createFromRaw = function(raw) {
				currentType = 'raw';
				jQuery.each(raw, function(i, data) {
					var node;
					
					if (data === '|') {
						menu.append('<div class="elfinder-contextmenu-separator"></div>');
					} else if (data.label && typeof data.callback == 'function') {
						node = item(data.label, data.icon, function() {
							if (! menu.data('draged')) {
								!data.remain && close();
								data.callback();
							}
						}, data.options || null);
						menu.append(node);
					}
				});
				nodes = menu.children('div.'+cmItem);
			},
			
			currentType = null,
			currentTargets = null;
		
		fm.one('load', function() {
			base = fm.getUI();
			cwd = fm.getUI('cwd');
			fm.bind('contextmenu', function(e) {
				var data = e.data,
					css = {},
					prevNode;

				if (data.type && data.type !== 'files') {
					cwd.trigger('unselectall');
				}
				close();

				if (data.type && data.targets) {
					fm.trigger('contextmenucreate', data);
					create(data.type, data.targets);
					fm.trigger('contextmenucreatedone', data);
				} else if (data.raw) {
					createFromRaw(data.raw);
				}

				if (menu.children().length) {
					prevNode = data.prevNode || null;
					if (prevNode) {
						menu.data('prevNode', menu.prev());
						prevNode.after(menu);
					}
					if (data.fitHeight) {
						css = {maxHeight: Math.min(fm.getUI().height(), jQuery(window).height()), overflowY: 'auto'};
						menu.draggable('destroy').removeClass('ui-draggable');
					}
					open(data.x, data.y, css);
					// call opened callback function
					if (data.opened && typeof data.opened === 'function') {
						data.opened.call(menu);
					}
				}
			})
			.one('destroy', function() { menu.remove(); })
			.bind('disable', close)
			.bind('select', function(e){
				(currentType === 'files' && (!e.data || e.data.selected.toString() !== currentTargets.toString())) && close();
			});
		})
		.shortcut({
			pattern     : fm.OS === 'mac' ? 'ctrl+m' : 'contextmenu shift+f10',
			description : 'contextmenu',
			callback    : function(e) {
				e.stopPropagation();
				e.preventDefault();
				jQuery(document).one('contextmenu.' + fm.namespace, function(e) {
					e.preventDefault();
					e.stopPropagation();
				});
				var sel = fm.selected(),
					type, targets, pos, elm;
				
				if (sel.length) {
					type = 'files';
					targets = sel;
					elm = fm.cwdHash2Elm(sel[0]);
				} else {
					type = 'cwd';
					targets = [ fm.cwd().hash ];
					pos = fm.getUI('workzone').offset();
				}
				if (! elm || ! elm.length) {
					elm = fm.getUI('workzone');
				}
				pos = elm.offset();
				pos.top += (elm.height() / 2);
				pos.left += (elm.width() / 2);
				fm.trigger('contextmenu', {
					'type'    : type,
					'targets' : targets,
					'x'       : pos.left,
					'y'       : pos.top
				});
			}
		});
		
	});
	
};
lib/js/ui/sortbutton.js000064400000007246147361034410011140 0ustar00/**
 * @class  elFinder toolbar button menu with sort variants.
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfindersortbutton = function(cmd) {
	"use strict";
	return this.each(function() {
		var fm       = cmd.fm,
			name     = cmd.name,
			c        = 'class',
			disabled = fm.res(c, 'disabled'),
			hover    = fm.res(c, 'hover'),
			item     = 'elfinder-button-menu-item',
			selected = item+'-selected',
			asc      = selected+'-asc',
			desc     = selected+'-desc',
			text     = jQuery('<span class="elfinder-button-text">'+cmd.title+'</span>'),
			button   = jQuery(this).addClass('ui-state-default elfinder-button elfinder-menubutton elfiner-button-'+name)
				.attr('title', cmd.title)
				.append('<span class="elfinder-button-icon elfinder-button-icon-'+name+'"></span>', text)
				.on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button.toggleClass(hover, e.type === 'mouseenter'); })
				.on('click', function(e) {
					if (!button.hasClass(disabled)) {
						e.stopPropagation();
						menu.is(':hidden') && fm.getUI().click();
						menu.css(getMenuOffset()).slideToggle({
							duration: 100,
							done: function(e) {
								fm[menu.is(':visible')? 'toFront' : 'toHide'](menu);
							}
						});
					}
				}),
			hide = function() { fm.toHide(menu); },
			menu = jQuery('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-sort-menu ui-corner-all"></div>')
				.hide()
				.appendTo(fm.getUI())
				.on('mouseenter mouseleave', '.'+item, function(e) { jQuery(this).toggleClass(hover, e.type === 'mouseenter'); })
				.on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
				})
				.on('close', hide),
			update = function() {
				menu.children('[rel]').removeClass(selected+' '+asc+' '+desc)
					.filter('[rel="'+fm.sortType+'"]')
					.addClass(selected+' '+(fm.sortOrder == 'asc' ? asc : desc));

				menu.children('.elfinder-sort-stick').toggleClass(selected, fm.sortStickFolders);
				menu.children('.elfinder-sort-tree').toggleClass(selected, fm.sortAlsoTreeview);
			},
			getMenuOffset = function() {
				var baseOffset = fm.getUI().offset(),
					buttonOffset = button.offset();
				return {
					top : buttonOffset.top - baseOffset.top,
					left : buttonOffset.left - baseOffset.left
				};
			},
			tm;
			
		text.hide();
		
		jQuery.each(fm.sortRules, function(name, value) {
			menu.append(jQuery('<div class="'+item+'" rel="'+name+'"><span class="ui-icon ui-icon-arrowthick-1-n"></span><span class="ui-icon ui-icon-arrowthick-1-s"></span>'+fm.i18n('sort'+name)+'</div>').data('type', name));
		});
		
		menu.children().on('click', function(e) {
			cmd.exec([], jQuery(this).removeClass(hover).attr('rel'));
		});
		
		jQuery('<div class="'+item+' '+item+'-separated elfinder-sort-ext elfinder-sort-stick"><span class="ui-icon ui-icon-check"></span>'+fm.i18n('sortFoldersFirst')+'</div>')
			.appendTo(menu)
			.on('click', function() {
				cmd.exec([], 'stick');
			});

		fm.one('init', function() {
			if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) {
				jQuery('<div class="'+item+' '+item+'-separated elfinder-sort-ext elfinder-sort-tree"><span class="ui-icon ui-icon-check"></span>'+fm.i18n('sortAlsoTreeview')+'</div>')
				.appendTo(menu)
				.on('click', function() {
					cmd.exec([], 'tree');
				});
			}
		})
		.bind('disable select', hide)
		.bind('sortchange', update).getUI().on('click', hide);
		
		if (menu.children().length > 1) {
			cmd.change(function() {
					tm && cancelAnimationFrame(tm);
					tm = requestAnimationFrame(function() {
						button.toggleClass(disabled, cmd.disabled());
						update();
					});
				})
				.change();
		} else {
			button.addClass(disabled);
		}

	});
	
};
lib/js/ui/dialog.js000064400000064317147361034410010156 0ustar00/**
 * @class  elFinder dialog
 *
 * @author Dmitry (dio) Levashov
 **/
 jQuery.fn.elfinderdialog = function(opts, fm) {
	"use strict";
	var platformWin = (window.navigator.platform.indexOf('Win') != -1),
		delta       = {},
		syncSize    = { enabled: false, width: false, height: false, defaultSize: null },
		fitSize     = function(dialog) {
			var opts, node;
			if (syncSize.enabled) {
				node = fm.options.dialogContained? elfNode : jQuery(window);
				opts = {
					maxWidth : syncSize.width?  node.width() - delta.width  : null,
					maxHeight: syncSize.height? node.height() - delta.height : null
				};
				Object.assign(restoreStyle, opts);
				dialog.css(opts).trigger('resize');
				if (dialog.data('hasResizable') && (dialog.resizable('option', 'maxWidth') < opts.maxWidth || dialog.resizable('option', 'maxHeight') < opts.maxHeight)) {
					dialog.resizable('option', opts);
				}
			}
		},
		syncFunc    = function(e) {
			var dialog = e.data;
			syncTm && cancelAnimationFrame(syncTm);
			syncTm = requestAnimationFrame(function() {
				var opts, offset;
				if (syncSize.enabled) {
					fitSize(dialog);
				}
			});
		},
		checkEditing = function() {
			var cldialog = 'elfinder-dialog',
				dialogs = elfNode.children('.' + cldialog + '.' + fm.res('class', 'editing') + ':visible');
			fm[dialogs.length? 'disable' : 'enable']();
		},
		propagationEvents = {},
		syncTm, dialog, elfNode, restoreStyle;
	
	if (fm && fm.ui) {
		elfNode = fm.getUI();
	} else {
		elfNode = this.closest('.elfinder');
		if (! fm) {
			fm = elfNode.elfinder('instance');
		}
	}
	
	if (typeof opts  === 'string') {
		if ((dialog = this.closest('.ui-dialog')).length) {
			if (opts === 'open') {
				if (dialog.css('display') === 'none') {
					// Need dialog.show() and hide() to detect elements size in open() callbacks
					dialog.trigger('posinit').show().trigger('open').hide();
					dialog.fadeIn(120, function() {
						fm.trigger('dialogopened', {dialog: dialog});
					});
				}
			} else if (opts === 'close' || opts === 'destroy') {
				dialog.stop(true);
				if (dialog.is(':visible') || elfNode.is(':hidden')) {
					dialog.trigger('close');
					fm.trigger('dialogclosed', {dialog: dialog});
				}
				if (opts === 'destroy') {
					dialog.remove();
					fm.trigger('dialogremoved', {dialog: dialog});
				} else if (dialog.data('minimized')) {
					dialog.data('minimized').close();
				}
			} else if (opts === 'toTop') {
				dialog.trigger('totop');
				fm.trigger('dialogtotoped', {dialog: dialog});
			} else if (opts === 'posInit') {
				dialog.trigger('posinit');
				fm.trigger('dialogposinited', {dialog: dialog});
			} else if (opts === 'tabstopsInit') {
				dialog.trigger('tabstopsInit');
				fm.trigger('dialogtabstopsinited', {dialog: dialog});
			} else if (opts === 'checkEditing') {
				checkEditing();
			}
		}
		return this;
	}
	
	opts = Object.assign({}, jQuery.fn.elfinderdialog.defaults, opts);
	
	if (opts.allowMinimize && opts.allowMinimize === 'auto') {
		opts.allowMinimize = this.find('textarea,input').length? true : false; 
	}
	opts.openMaximized = opts.allowMinimize && opts.openMaximized;
	if (opts.headerBtnPos && opts.headerBtnPos === 'auto') {
		opts.headerBtnPos = platformWin? 'right' : 'left';
	}
	if (opts.headerBtnOrder && opts.headerBtnOrder === 'auto') {
		opts.headerBtnOrder = platformWin? 'close:maximize:minimize' : 'close:minimize:maximize';
	}
	
	if (opts.modal && opts.allowMinimize) {
		opts.allowMinimize = false;
	}
	
	if (fm.options.dialogContained) {
		syncSize.width = syncSize.height = syncSize.enabled = true;
	} else {
		syncSize.width = (opts.maxWidth === 'window');
		syncSize.height = (opts.maxHeight === 'window');
		if (syncSize.width || syncSize.height) {
			syncSize.enabled = true;
		}
	}

	propagationEvents = fm.arrayFlip(opts.propagationEvents, true);
	
	this.filter(':not(.ui-dialog-content)').each(function() {
		var self       = jQuery(this).addClass('ui-dialog-content ui-widget-content'),
			clactive   = 'elfinder-dialog-active',
			cldialog   = 'elfinder-dialog',
			clnotify   = 'elfinder-dialog-notify',
			clhover    = 'ui-state-hover',
			cltabstop  = 'elfinder-tabstop',
			cl1stfocus = 'elfinder-focus',
			clmodal    = 'elfinder-dialog-modal',
			id         = parseInt(Math.random()*1000000),
			titlebar   = jQuery('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix"><span class="elfinder-dialog-title">'+opts.title+'</span></div>'),
			buttonset  = jQuery('<div class="ui-dialog-buttonset"></div>'),
			buttonpane = jQuery('<div class=" ui-helper-clearfix ui-dialog-buttonpane ui-widget-content"></div>')
				.append(buttonset),
			btnWidth   = 0,
			btnCnt     = 0,
			tabstops   = jQuery(),
			evCover    = jQuery('<div style="width:100%;height:100%;position:absolute;top:0px;left:0px;"></div>').hide(),
			numberToTel = function() {
				if (opts.optimizeNumber) {
					dialog.find('input[type=number]').each(function() {
						jQuery(this).attr('inputmode', 'numeric');
						jQuery(this).attr('pattern', '[0-9]*');
					});
				}
			},
			tabstopsInit = function() {
				tabstops = dialog.find('.'+cltabstop);
				if (tabstops.length) {
					tabstops.attr('tabindex', '-1');
					if (! tabstops.filter('.'+cl1stfocus).length) {
						buttonset.children('.'+cltabstop+':'+(platformWin? 'first' : 'last')).addClass(cl1stfocus);
					}
				}
			},
			tabstopNext = function(cur) {
				var elms = tabstops.filter(':visible:enabled'),
					node = cur? null : elms.filter('.'+cl1stfocus+':first');
					
				if (! node || ! node.length) {
					node = elms.first();
				}
				if (cur) {
					jQuery.each(elms, function(i, elm) {
						if (elm === cur && elms[i+1]) {
							node = elms.eq(i+1);
							return false;
						}
					});
				}
				return node;
			},
			tabstopPrev = function(cur) {
				var elms = tabstops.filter(':visible:enabled'),
					node = elms.last();
				jQuery.each(elms, function(i, elm) {
					if (elm === cur && elms[i-1]) {
						node = elms.eq(i-1);
						return false;
					}
				});
				return node;
			},
			makeHeaderBtn = function() {
				jQuery.each(opts.headerBtnOrder.split(':').reverse(), function(i, v) {
					headerBtns[v] && headerBtns[v]();
				});
				if (platformWin) {
					titlebar.children('.elfinder-titlebar-button').addClass('elfinder-titlebar-button-right');
				}
			},
			headerBtns = {
				close: function() {
					titlebar.prepend(jQuery('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button"><span class="ui-icon ui-icon-closethick"></span></span>')
						.on('mousedown touchstart', function(e) {
							e.preventDefault();
							e.stopPropagation();
							self.elfinderdialog('close');
						})
					);
				},
				maximize: function() {
					if (opts.allowMaximize) {
						dialog.on('resize', function(e, data) {
							var full, elm;
							e.preventDefault();
							e.stopPropagation();
							if (data && data.maximize) {
								elm = titlebar.find('.elfinder-titlebar-full');
								full = (data.maximize === 'on');
								elm.children('span.ui-icon')
									.toggleClass('ui-icon-plusthick', ! full)
									.toggleClass('ui-icon-arrowreturnthick-1-s', full);
								if (full) {
									try {
										dialog.hasClass('ui-draggable') && dialog.draggable('disable');
										dialog.hasClass('ui-resizable') && dialog.resizable('disable');
									} catch(e) {}
									self.css('width', '100%').css('height', dialog.height() - dialog.children('.ui-dialog-titlebar').outerHeight(true) - buttonpane.outerHeight(true));
								} else {
									self.attr('style', elm.data('style'));
									elm.removeData('style');
									posCheck();
									try {
										dialog.hasClass('ui-draggable') && dialog.draggable('enable');
										dialog.hasClass('ui-resizable') && dialog.resizable('enable');
									} catch(e) {}
								}
								dialog.trigger('resize', {init: true});
							}
						});
					}
					
				},
				minimize: function() {
					var btn, mnode, doffset;
					if (opts.allowMinimize) {
						btn = jQuery('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-minimize"><span class="ui-icon ui-icon-minusthick"></span></span>')
							.on('mousedown touchstart', function(e) {
								var $this = jQuery(this),
									tray = fm.getUI('bottomtray'),
									dumStyle = { width: 70, height: 24 },
									dum = jQuery('<div></div>').css(dumStyle).addClass(dialog.get(0).className + ' elfinder-dialog-minimized'),
									close = function() {
										mnode.remove();
										dialog.removeData('minimized').show();
										self.elfinderdialog('close');
									},
									pos = {};
								
								e.preventDefault();
								e.stopPropagation();
								if (!dialog.data('minimized')) {
									// minimize
									doffset = dialog.data('minimized', {
										dialog : function() { return mnode; },
										show : function() { mnode.show(); },
										hide : function() { mnode.hide(); },
										close : close,
										title : function(v) { mnode.children('.ui-dialog-titlebar').children('.elfinder-dialog-title').text(v); }
									}).position();
									mnode = dialog.clone().on('mousedown', function() {
										$this.trigger('mousedown');
									}).removeClass('ui-draggable ui-resizable elfinder-frontmost');
									tray.append(dum);
									Object.assign(pos, dum.offset(), dumStyle);
									dum.remove();
									mnode.height(dialog.height()).children('.ui-dialog-content:first').empty();
									fm.toHide(dialog.before(mnode));
									mnode.children('.ui-dialog-content:first,.ui-dialog-buttonpane,.ui-resizable-handle').remove();
									mnode.find('.elfinder-titlebar-minimize,.elfinder-titlebar-full').remove();
									mnode.find('.ui-dialog-titlebar-close').on('mousedown', function(e) {
										e.stopPropagation();
										e.preventDefault();
										close();
									});
									mnode.animate(pos, function() {
										mnode.attr('style', '')
										.css({ maxWidth: dialog.width() })
										.addClass('elfinder-dialog-minimized')
										.appendTo(tray);
										checkEditing();
										typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]);
									});
								} else {
									//restore
									dialog.removeData('minimized').before(mnode.css(Object.assign({'position': 'absolute'}, mnode.offset())));
									fm.toFront(mnode);
									mnode.animate(Object.assign({ width: dialog.width(), height: dialog.height() }, doffset), function() {
										dialog.show();
										fm.toFront(dialog);
										mnode.remove();
										posCheck();
										checkEditing();
										dialog.trigger('resize', {init: true});
										typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]);
									});
								}
							});
						titlebar.on('dblclick', function(e) {
							jQuery(this).children('.elfinder-titlebar-minimize').trigger('mousedown');
						}).prepend(btn);
						dialog.on('togleminimize', function() {
							btn.trigger('mousedown');
						});
					}
				}
			},
			dialog = jQuery('<div class="ui-front ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable std42-dialog touch-punch '+cldialog+' '+opts.cssClass+'"></div>')
				.hide()
				.append(self)
				.appendTo(elfNode)
				.draggable({
					containment : fm.options.dialogContained? elfNode : null,
					handle : '.ui-dialog-titlebar',
					start : function() {
						evCover.show();
					},
					drag : function(e, ui) {
						var top = ui.offset.top,
							left = ui.offset.left;
						if (top < 0) {
							ui.position.top = ui.position.top - top;
						}
						if (left < 0) {
							ui.position.left = ui.position.left - left;
						}
						if (fm.options.dialogContained) {
							ui.position.top < 0 && (ui.position.top = 0);
							ui.position.left < 0 && (ui.position.left = 0);
						}
					},
					stop : function(e, ui) {
						evCover.hide();
						dialog.css({height : opts.height});
						self.data('draged', true);
					}
				})
				.css({
					width     : opts.width,
					height    : opts.height,
					minWidth  : opts.minWidth,
					minHeight : opts.minHeight,
					maxWidth  : opts.maxWidth,
					maxHeight : opts.maxHeight
				})
				.on('touchstart touchmove touchend click dblclick mouseup mouseenter mouseleave mouseout mouseover mousemove', function(e) {
					// stopPropagation of user action events
					!propagationEvents[e.type] && e.stopPropagation();
				})
				.on('mousedown', function(e) {
					!propagationEvents[e.type] && e.stopPropagation();
					requestAnimationFrame(function() {
						if (dialog.is(':visible') && !dialog.hasClass('elfinder-frontmost')) {
							toFocusNode = jQuery(':focus');
							if (!toFocusNode.length) {
								toFocusNode = void(0);
							}
							dialog.trigger('totop');
						}
					});
				})
				.on('open', function() {
					dialog.data('margin-y', self.outerHeight(true) - self.height());
					if (syncSize.enabled) {
						if (opts.height && opts.height !== 'auto') {
							dialog.trigger('resize', {init: true});
						}
						if (!syncSize.defaultSize) {
							syncSize.defaultSize = { width: self.width(), height: self.height() };
						}
						fitSize(dialog);
						dialog.trigger('resize').trigger('posinit');
						elfNode.on('resize.'+fm.namespace, dialog, syncFunc);
					}
					
					if (!dialog.hasClass(clnotify)) {
						elfNode.children('.'+cldialog+':visible:not(.'+clnotify+')').each(function() {
							var d     = jQuery(this),
								top   = parseInt(d.css('top')),
								left  = parseInt(d.css('left')),
								_top  = parseInt(dialog.css('top')),
								_left = parseInt(dialog.css('left')),
								ct    = Math.abs(top - _top) < 10,
								cl    = Math.abs(left - _left) < 10;

							if (d[0] != dialog[0] && (ct || cl)) {
								dialog.css({
									top  : ct ? (top + 10) : _top,
									left : cl ? (left + 10) : _left
								});
							}
						});
					} 
					
					if (dialog.data('modal')) {
						dialog.addClass(clmodal);
						fm.getUI('overlay').elfinderoverlay('show');
					}
					
					dialog.trigger('totop');
					
					opts.openMaximized && fm.toggleMaximize(dialog);

					fm.trigger('dialogopen', {dialog: dialog});

					typeof(opts.open) == 'function' && jQuery.proxy(opts.open, self[0])();
					
					if (opts.closeOnEscape) {
						jQuery(document).on('keydown.'+id, function(e) {
							if (e.keyCode == jQuery.ui.keyCode.ESCAPE && dialog.hasClass('elfinder-frontmost')) {
								self.elfinderdialog('close');
							}
						});
					}
					dialog.hasClass(fm.res('class', 'editing')) && checkEditing();
				})
				.on('close', function(e) {
					var dialogs, dfd;
					
					if (opts.beforeclose && typeof opts.beforeclose === 'function') {
						dfd = opts.beforeclose();
						if (!dfd || !dfd.promise) {
							dfd = !dfd? jQuery.Deferred().reject() : jQuery.Deferred().resolve();
						}
					} else {
						dfd = jQuery.Deferred().resolve();
					}
					
					dfd.done(function() {
						syncSize.enabled && elfNode.off('resize.'+fm.namespace, syncFunc);
						
						if (opts.closeOnEscape) {
							jQuery(document).off('keyup.'+id);
						}
						
						if (opts.allowMaximize) {
							fm.toggleMaximize(dialog, false);
						}
						
						fm.toHide(dialog);
						dialog.data('modal') && fm.getUI('overlay').elfinderoverlay('hide');
						
						if (typeof(opts.close) == 'function') {
							jQuery.proxy(opts.close, self[0])();
						}
						if (opts.destroyOnClose && dialog.parent().length) {
							dialog.hide().remove();
						}
						
						// get focus to next dialog
						dialogs = elfNode.children('.'+cldialog+':visible');
						
						dialog.hasClass(fm.res('class', 'editing')) && checkEditing();
					});
				})
				.on('totop frontmost', function() {
					var s = fm.storage('autoFocusDialog');
					
					dialog.data('focusOnMouseOver', s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver);
					
					if (dialog.data('minimized')) {
						titlebar.children('.elfinder-titlebar-minimize').trigger('mousedown');
					}
					
					if (!dialog.data('modal') && fm.getUI('overlay').is(':visible')) {
						fm.getUI('overlay').before(dialog);
					} else {
						fm.toFront(dialog);
					}
					elfNode.children('.'+cldialog+':not(.'+clmodal+')').removeClass(clactive);
					dialog.addClass(clactive);

					! fm.UA.Mobile && (toFocusNode || tabstopNext()).trigger('focus');

					toFocusNode = void(0);
				})
				.on('posinit', function() {
					var css = opts.position,
						nodeOffset, minTop, minLeft, outerSize, win, winSize, nodeFull;
					if (dialog.hasClass('elfinder-maximized')) {
						return;
					}
					if (! css && ! dialog.data('resizing')) {
						nodeFull = elfNode.hasClass('elfinder-fullscreen') || fm.options.enableAlways;
						dialog.css(nodeFull? {
							maxWidth  : '100%',
							maxHeight : '100%',
							overflow   : 'auto'
						} : restoreStyle);
						if (fm.UA.Mobile && !nodeFull && dialog.data('rotated') === fm.UA.Rotated) {
							return;
						}
						dialog.data('rotated', fm.UA.Rotated);
						win = jQuery(window);
						nodeOffset = elfNode.offset();
						outerSize = {
							width : dialog.outerWidth(true),
							height: dialog.outerHeight(true)
						};
						outerSize.right = nodeOffset.left + outerSize.width;
						outerSize.bottom = nodeOffset.top + outerSize.height;
						winSize = {
							scrLeft: win.scrollLeft(),
							scrTop : win.scrollTop(),
							width  : win.width(),
							height : win.height()
						};
						winSize.right = winSize.scrLeft + winSize.width;
						winSize.bottom = winSize.scrTop + winSize.height;
						
						if (fm.options.dialogContained || nodeFull) {
							minTop = 0;
							minLeft = 0;
						} else {
							minTop = nodeOffset.top * -1 + winSize.scrTop;
							minLeft = nodeOffset.left * -1 + winSize.scrLeft;
						}
						css = {
							top  : outerSize.height >= winSize.height? minTop  : Math.max(minTop, parseInt((elfNode.height() - outerSize.height)/2 - 42)),
							left : outerSize.width  >= winSize.width ? minLeft : Math.max(minLeft, parseInt((elfNode.width() - outerSize.width)/2))
						};
						if (outerSize.right + css.left > winSize.right) {
							css.left = Math.max(minLeft, winSize.right - outerSize.right);
						}
						if (outerSize.bottom + css.top > winSize.bottom) {
							css.top = Math.max(minTop, winSize.bottom - outerSize.bottom);
						}
					}
					if (opts.absolute) {
						css.position = 'absolute';
					}
					css && dialog.css(css);
				})
				.on('resize', function(e, data) {
					var oh = 0, init = data && data.init, h, minH, maxH, autoH;
					if ((data && (data.minimize || data.maxmize)) || dialog.data('minimized')) {
						return;
					}
					e.stopPropagation();
					e.preventDefault();
					dialog.children('.ui-widget-header,.ui-dialog-buttonpane').each(function() {
						oh += jQuery(this).outerHeight(true);
					});
					autoH = (opts.height === 'auto')? true : false;
					if (autoH) {
						self.css({'max-height': '', 'height': 'auto'});
					}
					if (!init && syncSize.enabled && !e.originalEvent && !dialog.hasClass('elfinder-maximized')) {
						h = dialog.height();
						minH = dialog.css('min-height') || h;
						maxH = dialog.css('max-height') || h;
						if (minH.match(/%/)) {
							minH = Math.floor((parseInt(minH) / 100) * dialog.parent().height());
						} else {
							minH = parseInt(minH);
						}
						if (maxH.match(/%/)) {
							maxH = Math.floor((parseInt(maxH) / 100) * dialog.parent().height());
						} else {
							maxH = parseInt(maxH);
						}
						h = Math.min((autoH? dialog.height() : syncSize.defaultSize.height), Math.max(maxH, minH) - oh - dialog.data('margin-y'));
					} else {
						h = dialog.height() - oh - dialog.data('margin-y');
					}
					self.css(autoH? 'max-height' : 'height', h);
					if (init) {
						return;
					}
					posCheck();
					minH = self.height();
					minH = (h < minH)? (minH + oh + dialog.data('margin-y')) : opts.minHeight;
					dialog.css('min-height', minH);
					dialog.data('hasResizable') && dialog.resizable('option', { minHeight: minH });
					if (typeof(opts.resize) === 'function') {
						jQuery.proxy(opts.resize, self[0])(e, data);
					}
				})
				.on('tabstopsInit', tabstopsInit)
				.on('focus', '.'+cltabstop, function() {
					jQuery(this).addClass(clhover).parent('label').addClass(clhover);
					this.id && jQuery(this).parent().find('label[for='+this.id+']').addClass(clhover);
				})
				.on('click', 'select.'+cltabstop, function() {
					var node = jQuery(this);
					node.data('keepFocus')? node.removeData('keepFocus') : node.data('keepFocus', true);
				})
				.on('blur', '.'+cltabstop, function() {
					jQuery(this).removeClass(clhover).removeData('keepFocus').parent('label').removeClass(clhover);
					this.id && jQuery(this).parent().find('label[for='+this.id+']').removeClass(clhover);
				})
				.on('mouseenter mouseleave', '.'+cltabstop+',label', function(e) {
					var $this = jQuery(this), labelfor;
					if (this.nodeName === 'LABEL') {
						if (!$this.children('.'+cltabstop).length && (!(labelfor = $this.attr('for')) || !jQuery('#'+labelfor).hasClass(cltabstop))) {
							return;
						}
					}
					if (opts.btnHoverFocus && dialog.data('focusOnMouseOver')) {
						if (e.type === 'mouseenter' && ! jQuery(':focus').data('keepFocus')) {
							$this.trigger('focus');
						}
					} else {
						$this.toggleClass(clhover, e.type == 'mouseenter');
					}
				})
				.on('keydown', '.'+cltabstop, function(e) {
					var $this = jQuery(this),
						esc, move, moveTo;
					if ($this.is(':focus')) {
						esc = e.keyCode === jQuery.ui.keyCode.ESCAPE;
						if (e.keyCode === jQuery.ui.keyCode.ENTER) {
							e.preventDefault();
							$this.trigger('click');
						}  else if (((e.keyCode === jQuery.ui.keyCode.TAB) && e.shiftKey) || e.keyCode === jQuery.ui.keyCode.LEFT || e.keyCode == jQuery.ui.keyCode.UP) {
							move = 'prev';
						}  else if (e.keyCode === jQuery.ui.keyCode.TAB || e.keyCode == jQuery.ui.keyCode.RIGHT || e.keyCode == jQuery.ui.keyCode.DOWN) {
							move = 'next';
						}
						if (move
								&&
							(
								($this.is('textarea') && !(e.ctrlKey || e.metaKey))
									||
								($this.is('select,span.ui-slider-handle') && e.keyCode !== jQuery.ui.keyCode.TAB)
									||
								($this.is('input:not(:checkbox,:radio)') && (!(e.ctrlKey || e.metaKey) && e.keyCode === jQuery.ui.keyCode[move === 'prev'? 'LEFT':'RIGHT']))
							)
						) {
							e.stopPropagation();
							return;
						}
						if (!esc) {
							e.stopPropagation();
						} else if ($this.is('input:not(:checkbox,:radio),textarea')) {
							if ($this.val() !== '') {
								$this.val('');
								e.stopPropagation();
							}
						}
						if (move) {
							e.preventDefault();
							(move === 'prev'? tabstopPrev : tabstopNext)(this).trigger('focus');
						}
					}
				})
				.data({modal: opts.modal}),
			posCheck = function() {
				var node = fm.getUI(),
					pos;
				if (node.hasClass('elfinder-fullscreen')) {
					pos = dialog.position();
					dialog.css('top', Math.max(Math.min(Math.max(pos.top, 0), node.height() - 100), 0));
					dialog.css('left', Math.max(Math.min(Math.max(pos.left, 0), node.width() - 200), 0));
				}
			},
			maxSize, toFocusNode;
		
		dialog.prepend(titlebar);

		makeHeaderBtn();

		jQuery.each(opts.buttons, function(name, cb) {
			var button = jQuery('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only '
					+'elfinder-btncnt-'+(btnCnt++)+' '
					+cltabstop
					+'"><span class="ui-button-text">'+name+'</span></button>')
				.on('click', jQuery.proxy(cb, self[0]));
			if (cb._cssClass) {
				button.addClass(cb._cssClass);
			}
			if (platformWin) {
				buttonset.append(button);
			} else {
				buttonset.prepend(button);
			}
		});
		
		if (buttonset.children().length) {
			dialog.append(buttonpane);
			
			dialog.show();
			buttonpane.find('button').each(function(i, btn) {
				btnWidth += jQuery(btn).outerWidth(true);
			});
			dialog.hide();
			btnWidth += 20;
			
			if (dialog.width() < btnWidth) {
				dialog.width(btnWidth);
			}
		}
		
		dialog.append(evCover);
		
		if (syncSize.enabled) {
			delta.width = dialog.outerWidth(true) - dialog.width() + ((dialog.outerWidth() - dialog.width()) / 2);
			delta.height = dialog.outerHeight(true) - dialog.height() + ((dialog.outerHeight() - dialog.height()) / 2);
		}
		
		if (fm.options.dialogContained) {
			maxSize = {
				maxWidth: elfNode.width() - delta.width,
				maxHeight: elfNode.height() - delta.height
			};
			opts.maxWidth = opts.maxWidth? Math.min(maxSize.maxWidth, opts.maxWidth) : maxSize.maxWidth;
			opts.maxHeight = opts.maxHeight? Math.min(maxSize.maxHeight, opts.maxHeight) : maxSize.maxHeight;
			dialog.css(maxSize);
		}
		
		restoreStyle = {
			maxWidth  : dialog.css('max-width'),
			maxHeight : dialog.css('max-height'),
			overflow   : dialog.css('overflow')
		};
		
		if (opts.resizable) {
			dialog.resizable({
				minWidth   : opts.minWidth,
				minHeight  : opts.minHeight,
				maxWidth   : opts.maxWidth,
				maxHeight  : opts.maxHeight,
				start      : function() {
					evCover.show();
					if (dialog.data('resizing') !== true && dialog.data('resizing')) {
						clearTimeout(dialog.data('resizing'));
					}
					dialog.data('resizing', true);
				},
				stop       : function(e, ui) {
					evCover.hide();
					dialog.data('resizing', setTimeout(function() {
						dialog.data('resizing', false);
					}, 200));
					if (syncSize.enabled) {
						syncSize.defaultSize = { width: self.width(), height: self.height() };
					}
				}
			}).data('hasResizable', true);
		} 
		
		numberToTel();
		
		tabstopsInit();
		
		typeof(opts.create) == 'function' && jQuery.proxy(opts.create, this)();
		
		if (opts.autoOpen) {
			if (opts.open) {
				requestAnimationFrame(function() {
					self.elfinderdialog('open');
				});
			} else {
				self.elfinderdialog('open');
			}
		}

		if (opts.resize) {
			fm.bind('themechange', function() {
				setTimeout(function() {
					dialog.data('margin-y', self.outerHeight(true) - self.height());
					dialog.trigger('resize', {init: true});
				}, 300);
			});
		}
	});
	
	return this;
};

jQuery.fn.elfinderdialog.defaults = {
	cssClass  : '',
	title     : '',
	modal     : false,
	resizable : true,
	autoOpen  : true,
	closeOnEscape : true,
	destroyOnClose : false,
	buttons   : {},
	btnHoverFocus : true,
	position  : null,
	absolute  : false,
	width     : 320,
	height    : 'auto',
	minWidth  : 200,
	minHeight : 70,
	maxWidth  : null,
	maxHeight : null,
	allowMinimize : 'auto',
	allowMaximize : false,
	openMaximized : false,
	headerBtnPos : 'auto',
	headerBtnOrder : 'auto',
	optimizeNumber : true,
	propagationEvents : ['mousemove', 'mouseup']
};lib/js/ui/uploadButton.js000064400000002060147361034410011362 0ustar00/**
 * @class  elFinder toolbar's button tor upload file
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderuploadbutton = function(cmd) {
	"use strict";
	return this.each(function() {
		var fm = cmd.fm,
			button = jQuery(this).elfinderbutton(cmd)
				.off('click'), 
			form = jQuery('<form></form>').appendTo(button),
			input = jQuery('<input type="file" multiple="true" title="'+cmd.fm.i18n('selectForUpload')+'"/>')
				.on('change', function() {
					var _input = jQuery(this);
					if (_input.val()) {
						fm.exec('upload', {input : _input.remove()[0]}, void(0), fm.cwd().hash);
						input.clone(true).appendTo(form);
					} 
				})
				.on('dragover', function(e) {
					e.originalEvent.dataTransfer.dropEffect = 'copy';
				}),
			tm;

		form.append(input.clone(true));
				
		cmd.change(function() {
			tm && cancelAnimationFrame(tm);
			tm = requestAnimationFrame(function() {
				var toShow = cmd.disabled();
				if (form.is('visible')) {
					!toShow && form.hide();
				} else {
					toShow && form.show();
				}
			});
		})
		.change();
	});
};
lib/js/ui/stat.js000064400000006626147361034410007671 0ustar00/**
 * @class elFinder ui
 * Display number of files/selected files and its size in statusbar
 *
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.elfinderstat = function(fm) {
	"use strict";
	return this.each(function() {
		var size       = jQuery(this).addClass('elfinder-stat-size'),
			sel        = jQuery('<div class="elfinder-stat-selected"></div>')
				.on('click', 'a', function(e) {
					var hash = jQuery(this).data('hash');
					e.preventDefault();
					fm.exec('opendir', [ hash ]);
				}),
			titleitems = fm.i18n('items'),
			titlesel   = fm.i18n('selected'),
			titlesize  = fm.i18n('size'),
			setstat    = function(files) {
				var c = 0, 
					s = 0,
					cwd = fm.cwd(),
					calc = true,
					hasSize = true;

				if (cwd.sizeInfo || cwd.size) {
					s = cwd.size;
					calc = false;
				}
				jQuery.each(files, function(i, file) {
					c++;
					if (calc) {
						s += parseInt(file.size) || 0;
						if (hasSize === true && file.mime === 'directory' && !file.sizeInfo) {
							hasSize = false;
						}
					}
				});
				size.html(titleitems+': <span class="elfinder-stat-incsearch"></span>'+c+',&nbsp;<span class="elfinder-stat-size'+(hasSize? ' elfinder-stat-size-recursive' : '')+'">'+fm.i18n(hasSize? 'sum' : 'size')+': '+fm.formatSize(s)+'</span>')
					.attr('title', size.text());
				fm.trigger('uistatchange');
			},
			setIncsearchStat = function(data) {
				size.find('span.elfinder-stat-incsearch').html(data? data.hashes.length + ' / ' : '');
				size.attr('title', size.text());
				fm.trigger('uistatchange');
			},
			setSelect = function(files) {
				var s = 0,
					c = 0,
					dirs = [],
					path, file;

				if (files.length === 1) {
					file = files[0];
					s = file.size;
					if (fm.searchStatus.state === 2) {
						path = fm.escape(file.path? file.path.replace(/\/[^\/]*$/, '') : '..');
						dirs.push('<a href="#elf_'+file.phash+'" data-hash="'+file.hash+'" title="'+path+'">'+path+'</a>');
					}
					dirs.push(fm.escape(file.i18 || file.name));
					sel.html(dirs.join('/') + (s > 0 ? ', '+fm.formatSize(s) : ''));
				} else if (files.length) {
					jQuery.each(files, function(i, file) {
						c++;
						s += parseInt(file.size)||0;
					});
					sel.html(c ? titlesel+': '+c+', '+titlesize+': '+fm.formatSize(s) : '&nbsp;');
				} else {
					sel.html('');
				}
				sel.attr('title', sel.text());
				fm.trigger('uistatchange');
			};

		fm.getUI('statusbar').prepend(size).append(sel).show();
		if (fm.UA.Mobile && jQuery.fn.tooltip) {
			fm.getUI('statusbar').tooltip({
				classes: {
					'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
				},
				tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
				track: true
			});
		}
		
		fm
		.bind('cwdhasheschange', function(e) {
			setstat(jQuery.map(e.data, function(h) { return fm.file(h); }));
		})
		.change(function(e) {
			var files = e.data.changed || [],
				cwdHash = fm.cwd().hash;
			jQuery.each(files, function() {
				if (this.hash === cwdHash) {
					if (this.size) {
						size.children('.elfinder-stat-size').addClass('elfinder-stat-size-recursive').html(fm.i18n('sum')+': '+fm.formatSize(this.size));
						size.attr('title', size.text());
					}
					return false;
				}
			});
		})
		.select(function() {
			setSelect(fm.selectedFiles());
		})
		.bind('open', function() {
			setSelect([]);
		})
		.bind('incsearch', function(e) {
			setIncsearchStat(e.data);
		})
		.bind('incsearchend', function() {
			setIncsearchStat();
		})
		;
	});
};
lib/js/ui/tree.js000064400000121147147361034410007651 0ustar00/**
 * @class  elFinder folders tree
 *
 * @author Dmitry (dio) Levashov
 **/
 jQuery.fn.elfindertree = function(fm, opts) {
	"use strict";
	var treeclass = fm.res('class', 'tree');
	
	this.not('.'+treeclass).each(function() {

		var c = 'class', mobile = fm.UA.Mobile,
			
			/**
			 * Root directory class name
			 *
			 * @type String
			 */
			root      = fm.res(c, 'treeroot'),

			/**
			 * Open root dir if not opened yet
			 *
			 * @type Boolean
			 */
			openRoot  = opts.openRootOnLoad,

			/**
			 * Open current work dir if not opened yet
			 *
			 * @type Boolean
			 */
			openCwd   = opts.openCwdOnOpen,

			
			/**
			 * Auto loading current directory parents and do expand their node
			 *
			 * @type Boolean
			 */
			syncTree  = openCwd || opts.syncTree,
			
			/**
			 * Subtree class name
			 *
			 * @type String
			 */
			subtree   = fm.res(c, 'navsubtree'),
			
			/**
			 * Directory class name
			 *
			 * @type String
			 */
			navdir    = fm.res(c, 'treedir'),
			
			/**
			 * Directory CSS selector
			 *
			 * @type String
			 */
			selNavdir = 'span.' + navdir,
			
			/**
			 * Collapsed arrow class name
			 *
			 * @type String
			 */
			collapsed = fm.res(c, 'navcollapse'),
			
			/**
			 * Expanded arrow class name
			 *
			 * @type String
			 */
			expanded  = fm.res(c, 'navexpand'),
			
			/**
			 * Class name to mark arrow for directory with already loaded children
			 *
			 * @type String
			 */
			loaded    = 'elfinder-subtree-loaded',
			
			/**
			 * Class name to mark need subdirs request
			 *
			 * @type String
			 */
			chksubdir = 'elfinder-subtree-chksubdir',
			
			/**
			 * Arraw class name
			 *
			 * @type String
			 */
			arrow = fm.res(c, 'navarrow'),
			
			/**
			 * Current directory class name
			 *
			 * @type String
			 */
			active    = fm.res(c, 'active'),
			
			/**
			 * Droppable dirs dropover class
			 *
			 * @type String
			 */
			dropover = fm.res(c, 'adroppable'),
			
			/**
			 * Hover class name
			 *
			 * @type String
			 */
			hover    = fm.res(c, 'hover'),
			
			/**
			 * Disabled dir class name
			 *
			 * @type String
			 */
			disabled = fm.res(c, 'disabled'),
			
			/**
			 * Draggable dir class name
			 *
			 * @type String
			 */
			draggable = fm.res(c, 'draggable'),
			
			/**
			 * Droppable dir  class name
			 *
			 * @type String
			 */
			droppable = fm.res(c, 'droppable'),
			
			/**
			 * root wrapper class
			 * 
			 * @type String
			 */
			wrapperRoot = 'elfinder-navbar-wrapper-root',

			/**
			 * Un-disabled cmd `paste` volume's root wrapper class
			 * 
			 * @type String
			 */
			pastable = 'elfinder-navbar-wrapper-pastable',
			
			/**
			 * Un-disabled cmd `upload` volume's root wrapper class
			 * 
			 * @type String
			 */
			uploadable = 'elfinder-navbar-wrapper-uploadable',
			
			/**
			 * Is position x inside Navbar
			 * 
			 * @param x Numbar
			 * 
			 * @return
			 */
			insideNavbar = function(x) {
				var left = navbar.offset().left;
					
				return left <= x && x <= left + navbar.width();
			},
			
			/**
			 * To call subdirs elements queue
			 * 
			 * @type Object
			 */
			subdirsQue = {},
			
			/**
			 * To exec subdirs elements ids
			 * 
			 */
			subdirsExecQue = [],
			
			/**
			 * Request subdirs to backend
			 * 
			 * @param id String
			 * 
			 * @return Deferred
			 */
			subdirs = function(ids) {
				var targets = [];
				jQuery.each(ids, function(i, id) {
					subdirsQue[id] && targets.push(fm.navId2Hash(id));
					delete subdirsQue[id];
				});
				if (targets.length) {
					return fm.request({
						data: {
							cmd: 'subdirs',
							targets: targets,
							preventDefault : true
						}
					}).done(function(res) {
						if (res && res.subdirs) {
							jQuery.each(res.subdirs, function(hash, subdirs) {
								var elm = fm.navHash2Elm(hash);
								elm.removeClass(chksubdir);
								elm[subdirs? 'addClass' : 'removeClass'](collapsed);
							});
						}
					});
				}
			},
			
			subdirsJobRes = null,
			
			/**
			 * To check target element is in window of subdirs
			 * 
			 * @return void
			 */
			checkSubdirs = function() {
				var ids = Object.keys(subdirsQue);
				if (ids.length) {
					subdirsJobRes && subdirsJobRes._abort();
					execSubdirsTm && clearTimeout(execSubdirsTm);
					subdirsExecQue = [];
					subdirsJobRes = fm.asyncJob(function(id) {
						return fm.isInWindow(jQuery('#'+id))? id : null;
					}, ids, { numPerOnce: 200 })
					.done(function(arr) {
						if (arr.length) {
							subdirsExecQue = arr;
							execSubdirs();
						}
					});
				}
			},
			
			subdirsPending = 0,
			execSubdirsTm,
			
			/**
			 * Exec subdirs as batch request
			 * 
			 * @return void
			 */
			execSubdirs = function() {
				var cnt = opts.subdirsMaxConn - subdirsPending,
					atOnce = fm.maxTargets? Math.min(fm.maxTargets, opts.subdirsAtOnce) : opts.subdirsAtOnce,
					i, ids;
				execSubdirsTm && cancelAnimationFrame(execSubdirsTm);
				if (subdirsExecQue.length) {
					if (cnt > 0) {
						for (i = 0; i < cnt; i++) {
							if (subdirsExecQue.length) {
								subdirsPending++;
								subdirs(subdirsExecQue.splice(0, atOnce)).always(function() {
									subdirsPending--;
									execSubdirs();
								});
							}
						}
					} else {
						execSubdirsTm = requestAnimationFrame(function() {
							subdirsExecQue.length && execSubdirs();
						});
					}
				}
			},
			
			drop = fm.droppable.drop,
			
			/**
			 * Droppable options
			 *
			 * @type Object
			 */
			droppableopts = jQuery.extend(true, {}, fm.droppable, {
				// show subfolders on dropover
				over : function(e, ui) {
					var dst    = jQuery(this),
						helper = ui.helper,
						cl     = hover+' '+dropover,
						hash, status;
					e.stopPropagation();
					helper.data('dropover', helper.data('dropover') + 1);
					dst.data('dropover', true);
					if (ui.helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) {
						dst.removeClass(cl);
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					if (! insideNavbar(e.clientX)) {
						dst.removeClass(cl);
						return;
					}
					helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					dst.addClass(hover);
					if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
						dst.data('expandTimer', setTimeout(function() {
							dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click');
						}, 500));
					}
					if (dst.is('.elfinder-ro,.elfinder-na')) {
						dst.removeClass(dropover);
						//helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
						return;
					}
					hash = fm.navId2Hash(dst.attr('id'));
					dst.data('dropover', hash);
					jQuery.each(ui.helper.data('files'), function(i, h) {
						if (h === hash || (fm.file(h).phash === hash && !ui.helper.hasClass('elfinder-drag-helper-plus'))) {
							dst.removeClass(cl);
							return false; // break jQuery.each
						}
					});
					if (helper.data('locked')) {
						status = 'elfinder-drag-helper-plus';
					} else {
						status = 'elfinder-drag-helper-move';
						if (fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey)) {
							status += ' elfinder-drag-helper-plus';
						}
					}
					dst.hasClass(dropover) && helper.addClass(status);
					requestAnimationFrame(function(){ dst.hasClass(dropover) && helper.addClass(status); });
				},
				out : function(e, ui) {
					var dst    = jQuery(this),
						helper = ui.helper;
					e.stopPropagation();
					if (insideNavbar(e.clientX)) {
						helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus');
					}
					helper.data('dropover', Math.max(helper.data('dropover') - 1, 0));
					dst.data('expandTimer') && clearTimeout(dst.data('expandTimer'));
					dst.removeData('dropover')
					   .removeClass(hover+' '+dropover);
				},
				deactivate : function() {
					jQuery(this).removeData('dropover')
					       .removeClass(hover+' '+dropover);
				},
				drop : function(e, ui) {
					insideNavbar(e.clientX) && drop.call(this, e, ui);
				}
			}),
			
			spinner = jQuery(fm.res('tpl', 'navspinner')),
			
			/**
			 * Directory html template
			 *
			 * @type String
			 */
			tpl = fm.res('tpl', 'navdir'),
			
			/**
			 * Permissions marker html template
			 *
			 * @type String
			 */
			ptpl = fm.res('tpl', 'perms'),
			
			/**
			 * Lock marker html template
			 *
			 * @type String
			 */
			ltpl = fm.res('tpl', 'lock'),
			
			/**
			 * Symlink marker html template
			 *
			 * @type String
			 */
			stpl = fm.res('tpl', 'symlink'),
			
			/**
			 * Directory hashes that has more pages
			 * 
			 * @type Object
			 */
			hasMoreDirs = {},
			
			/**
			 * Html template replacement methods
			 *
			 * @type Object
			 */
			replace = {
				id          : function(dir) { return fm.navHash2Id(dir.hash); },
				name        : function(dir) { return fm.escape(dir.i18 || dir.name); },
				cssclass    : function(dir) {
					var cname = (dir.phash && ! dir.isroot ? '' : root)+' '+navdir+' '+fm.perms2class(dir);
					dir.dirs && !dir.link && (cname += ' ' + collapsed) && dir.dirs == -1 && (cname += ' ' + chksubdir);
					opts.getClass && (cname += ' ' + opts.getClass(dir));
					dir.csscls && (cname += ' ' + fm.escape(dir.csscls));
					return cname;
				},
				title       : function(dir) { return opts.attrTitle? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : ''; },
				root        : function(dir) {
					var cls = '';
					if (!dir.phash || dir.isroot) {
						cls += ' '+wrapperRoot;
						if (!dir.disabled || dir.disabled.length < 1) {
							cls += ' '+pastable+' '+uploadable;
						} else {
							if (jQuery.inArray('paste', dir.disabled) === -1) {
								cls += ' '+pastable;
							}
							if (jQuery.inArray('upload', dir.disabled) === -1) {
								cls += ' '+uploadable;
							}
						}
						return cls;
					} else {
						return '';
					}
				},
				permissions : function(dir) { return !dir.read || !dir.write ? ptpl : ''; },
				symlink     : function(dir) { return dir.alias ? stpl : ''; },
				style       : function(dir) { return dir.icon ? fm.getIconStyle(dir) : ''; }
			},
			
			/**
			 * Return html for given dir
			 *
			 * @param  Object  directory
			 * @return String
			 */
			itemhtml = function(dir) {
				return tpl.replace(/(?:\{([a-z]+)\})/ig, function(m, key) {
					var res = replace[key] ? replace[key](dir) : (dir[key] || '');
					if (key === 'id' && dir.dirs == -1) {
						subdirsQue[res] = res;
					}
					return res;
				});
			},
			
			/**
			 * Return only dirs from files list
			 *
			 * @param  Array   files list
			 * @param  Boolean do check exists
			 * @return Array
			 */
			filter = function(files, checkExists) {
				return jQuery.map(files || [], function(f) {
					return (f.mime === 'directory' && (!checkExists || fm.navHash2Elm(f.hash).length)) ? f : null;
				});
			},
			
			/**
			 * Find parent subtree for required directory
			 *
			 * @param  String  dir hash
			 * @return jQuery
			 */
			findSubtree = function(hash) {
				return hash ? fm.navHash2Elm(hash).next('.'+subtree) : tree;
			},
			
			/**
			 * Find directory (wrapper) in required node
			 * before which we can insert new directory
			 *
			 * @param  jQuery  parent directory
			 * @param  Object  new directory
			 * @return jQuery
			 */
			findSibling = function(subtree, dir) {
				var node = subtree.children(':first'),
					info;

				while (node.length) {
					info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')));
					
					if ((info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')))) 
					&& compare(dir, info) < 0) {
						return node;
					}
					node = node.next();
				}
				return subtree.children('button.elfinder-navbar-pager-next');
			},
			
			/**
			 * Add new dirs in tree
			 *
			 * @param  Array  dirs list
			 * @return void
			 */
			updateTree = function(dirs) {
				var length  = dirs.length,
					orphans = [],
					i = length,
					tgts = jQuery(),
					done = {},
					cwd = fm.cwd(),
					append = function(parent, dirs, start, direction) {
						var hashes = {},
							curStart = 0,
							max = fm.newAPI? Math.min(10000, Math.max(10, opts.subTreeMax)) : 10000,
							setHashes = function() {
								hashes = {};
								jQuery.each(dirs, function(i, d) {
									hashes[d.hash] = i;
								});
							},
							change = function(mode) {
								if (mode === 'prepare') {
									jQuery.each(dirs, function(i, d) {
										d.node && parent.append(d.node.hide());
									});
								} else if (mode === 'done') {
									jQuery.each(dirs, function(i, d) {
										d.node && d.node.detach().show();
									});
								}
							},
							update = function(e, data) {
								var i, changed;
								e.stopPropagation();
								
								if (data.select) {
									render(getStart(data.select));
									return;
								}
								
								if (data.change) {
									change(data.change);
									return;
								}
								
								if (data.removed && data.removed.length) {
									dirs = jQuery.grep(dirs, function(d) {
										if (data.removed.indexOf(d.hash) === -1) {
											return true;
										} else {
											!changed && (changed = true);
											return false;
										}
									});
								}
								
								if (data.added && data.added.length) {
									dirs = dirs.concat(jQuery.grep(data.added, function(d) {
										if (hashes[d.hash] === void(0)) {
											!changed && (changed = true);
											return true;
										} else {
											return false;
										}
									}));
								}
								if (changed) {
									dirs.sort(compare);
									setHashes();
									render(curStart);
								}
							},
							getStart = function(target) {
								if (hashes[target] !== void(0)) {
									return Math.floor(hashes[target] / max) * max;
								}
								return void(0);
							},
							target = fm.navId2Hash(parent.prev('[id]').attr('id')),
							render = function(start, direction) {
								var html = [],
									nodes = {},
									total, page, s, parts, prev, next, prevBtn, nextBtn;
								delete hasMoreDirs[target];
								curStart = start;
								parent.off('update.'+fm.namespace, update);
								if (dirs.length > max) {
									parent.on('update.'+fm.namespace, update);
									if (start === void(0)) {
										s = 0;
										setHashes();
										start = getStart(cwd.hash);
										if (start === void(0)) {
											start = 0;
										}
									}
									parts = dirs.slice(start, start + max);
									hasMoreDirs[target] = parent;
									prev = start? Math.max(-1, start - max) : -1;
									next = (start + max >= dirs.length)? 0 : start + max;
									total = Math.ceil(dirs.length/max);
									page = Math.ceil(start/max);
								}
								jQuery.each(parts || dirs, function(i, d) {
									html.push(itemhtml(d));
									if (d.node) {
										nodes[d.hash] = d.node;
									}
								});
								if (prev > -1) {
									prevBtn = jQuery('<button class="elfinder-navbar-pager elfinder-navbar-pager-prev"></button>')
										.text(fm.i18n('btnPrevious', page, total))
										.button({
											icons: {
												primary: "ui-icon-caret-1-n"
											}
										})
										.on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
											render(prev, 'up');
										});
								} else {
									prevBtn = jQuery();
								}
								if (next) {
									nextBtn = jQuery('<button class="elfinder-navbar-pager elfinder-navbar-pager-next"></button>')
										.text(fm.i18n('btnNext', page + 2, total))
										.button({
											icons: {
												primary: "ui-icon-caret-1-s"
											}
										})
										.on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
											render(next, 'down');
										});
								} else {
									nextBtn = jQuery();
								}
								detach();
								parent.empty()[parts? 'addClass' : 'removeClass']('elfinder-navbar-hasmore').append(prevBtn, html.join(''), nextBtn);
								jQuery.each(nodes, function(h, n) {
									fm.navHash2Elm(h).parent().replaceWith(n);
								});
								if (direction) {
									autoScroll(fm.navHash2Id(parts[direction === 'up'? parts.length - 1 : 0].hash));
								}
								! mobile && fm.lazy(function() { updateDroppable(null, parent); });
							},
							detach = function() {
								jQuery.each(parent.children('.elfinder-navbar-wrapper'), function(i, elm) {
									var n = jQuery(elm),
										ch = n.children('[id]:first'),
										h, c;
									if (ch.hasClass(loaded)) {
										h = fm.navId2Hash(ch.attr('id'));
										if (h && (c = hashes[h]) !== void(0)) {
											dirs[c].node = n.detach();
										}
									}
								});
							};
						
						render();
					},
					dir, html, parent, sibling, init, atonce = {}, updates = [], base, node,
					lastKey, lastNodes = {};
				
				while (i--) {
					dir = dirs[i];

					if (done[dir.hash] || fm.navHash2Elm(dir.hash).length) {
						continue;
					}
					done[dir.hash] = true;
					
					if ((parent = findSubtree(dir.phash)).length) {
						lastKey = dir.phash || 'treeroot';
						if (typeof lastNodes[lastKey] === 'undefined') {
							lastNodes[lastKey] = parent.children(':last');
						}
						init = !lastNodes[lastKey].length;
						if (dir.phash && (init || parent.hasClass('elfinder-navbar-hasmore') || (sibling = findSibling(parent, dir)).length)) {
							if (init) {
								if (!atonce[dir.phash]) {
									atonce[dir.phash] = [];
								}
								atonce[dir.phash].push(dir);
							} else {
								if (sibling) {
									node = itemhtml(dir);
									sibling.before(node);
									! mobile && (tgts = tgts.add(node));
								} else {
									updates.push(dir);
								}
							}
						} else {
							node = itemhtml(dir);
							if (init) {
								parent.prepend(node);
							} else {
								lastNodes[lastKey].after(node);
							}
							if (!dir.phash || dir.isroot) {
								base = fm.navHash2Elm(dir.hash).parent();
							}
							! mobile && updateDroppable(null, base);
						}
					} else {
						orphans.push(dir);
					}
				}

				// When init, html append at once
				if (Object.keys(atonce).length){
					jQuery.each(atonce, function(p, dirs){
						var parent = findSubtree(p),
						    html   = [];
						dirs.sort(compare);
						append(parent, dirs);
					});
				}
				
				if (updates.length) {
					parent.trigger('update.' + fm.namespace, { added : updates });
				}
				
				if (orphans.length && orphans.length < length) {
					updateTree(orphans);
					return;
				} 
				
				! mobile && tgts.length && fm.lazy(function() { updateDroppable(tgts); });
				
			},
			
			/**
			 * sort function by dir.name
			 * 
			 */
			compare = function(dir1, dir2) {
				if (! fm.sortAlsoTreeview) {
					return fm.sortRules.name(dir1, dir2);
				} else {
					var asc   = fm.sortOrder == 'asc',
						type  = fm.sortType,
						rules = fm.sortRules,
						res;
					
					res = asc? rules[fm.sortType](dir1, dir2) : rules[fm.sortType](dir2, dir1);
					
					return type !== 'name' && res === 0
						? res = asc ? rules.name(dir1, dir2) : rules.name(dir2, dir1)
						: res;
				}
			},

			/**
			 * Timer ID of autoScroll
			 * 
			 * @type  Integer
			 */
			autoScrTm,

			/**
			 * Auto scroll to cwd
			 *
			 * @return Object  jQuery Deferred
			 */
			autoScroll = function(target) {
				var dfrd = jQuery.Deferred(),
					current, parent, top, treeH, bottom, tgtTop;
				autoScrTm && clearTimeout(autoScrTm);
				autoScrTm = setTimeout(function() {
					current = jQuery(document.getElementById((target || fm.navHash2Id(fm.cwd().hash))));
					if (current.length) {
						// expand parents directory
						(openCwd? current : current.parent()).parents('.elfinder-navbar-wrapper').children('.'+loaded).addClass(expanded).next('.'+subtree).show();
						
						parent = tree.parent().stop(false, true);
						top = parent.offset().top;
						treeH = parent.height();
						bottom = top + treeH - current.outerHeight();
						tgtTop = current.offset().top;
						
						if (tgtTop < top || tgtTop > bottom) {
							parent.animate({
								scrollTop : parent.scrollTop() + tgtTop - top - treeH / 3
							}, {
								duration : opts.durations.autoScroll,
								complete : function() {	dfrd.resolve(); }
							});
						} else {
							dfrd.resolve();
						}
					} else {
						dfrd.reject();
					}
				}, 100);
				return dfrd;
			},
			/**
			 * Get hashes array of items of the bottom of the leaf root back from the target
			 * 
			 * @param Object elFinder item(directory) object
			 * @return Array hashes
			 */
			getEnds = function(d) {
				var cur = d || fm.cwd(),
					res = cur.hash? [ cur.hash ] : [],
					phash, root, dir;
				
				root = fm.root(cur.hash);
				dir = fm.file(root);
				while (dir && (phash = dir.phash)) {
					res.unshift(phash);
					root = fm.root(phash);
					dir = fm.file(root);
					if (fm.navHash2Elm(dir.hash).hasClass(loaded)) {
						break;
					}
				}
				
				return res;
			},
			
			/**
			 * Select pages back in order to display the target
			 * 
			 * @param Object elFinder item(directory) object
			 * @return Object jQuery node object of target node
			 */
			selectPages = function(current) {
				var cur = current || fm.cwd(),
					curHash = cur.hash,
					node = fm.navHash2Elm(curHash);
			
				if (!node.length) {
					while(cur && cur.phash) {
						if (hasMoreDirs[cur.phash] && !fm.navHash2Elm(cur.hash).length) {
							hasMoreDirs[cur.phash].trigger('update.'+fm.namespace, { select : cur.hash });
						}
						cur = fm.file(cur.phash);
					}
					node = fm.navHash2Elm(curHash);
				}
				
				return node;
			},
			
			/**
			 * Flag indicating that synchronization is currently in progress
			 * 
			 * @type Boolean
			 */
			syncing,

			/**
			 * Mark current directory as active
			 * If current directory is not in tree - load it and its parents
			 *
			 * @param Array directory objects of cwd
			 * @param Boolean do auto scroll
			 * @return Object jQuery Deferred
			 */
			sync = function(cwdDirs, aScr) {
				var cwd     = fm.cwd(),
					cwdhash = cwd.hash,
					autoScr = aScr === void(0)? syncTree : aScr,
					loadParents = function(dir) {
						var dfd  = jQuery.Deferred(),
							reqs = [],
							ends = getEnds(dir),
							makeReq = function(cmd, h, until) {
								var data = {
										cmd    : cmd,
										target : h
									};
								if (until) {
									data.until = until;
								}
								return fm.request({
									data : data,
									preventFail : true
								});
							},
							baseHash, baseId;
						
						reqs = jQuery.map(ends, function(h) {
							var d = fm.file(h),
								isRoot = d? fm.isRoot(d) : false,
								node = fm.navHash2Elm(h),
								getPhash = function(h, dep) {
									var d, ph,
										depth = dep || 1;
									ph = (d = fm.file(h))? d.phash : false;
									if (ph && depth > 1) {
										return getPhash(ph, --depth);
									}
									return ph;
								},
								until,
								closest = (function() {
									var phash = getPhash(h);
									until = phash;
									while (phash) {
										if (fm.navHash2Elm(phash).hasClass(loaded)) {
											break;
										}
										until = phash;
										phash = getPhash(phash);
									}
									if (!phash) {
										until = void(0);
										phash = fm.root(h);
									}
									return phash;
								})(),
								cmd;
							
							if (!node.hasClass(loaded) && (isRoot || !d || !fm.navHash2Elm(d.phash).hasClass(loaded))) {
								if (isRoot || closest === getPhash(h) || closest === getPhash(h, 2)) {
									until = void(0);
									cmd = 'tree';
									if (!isRoot) {
										h = getPhash(h);
									}
								} else {
									cmd = 'parents';
								}
								if (!baseHash) {
									baseHash = (cmd === 'tree')? h : closest;
								}
								return makeReq(cmd, h, until);
							}
							return null;
						});
						
						if (reqs.length) {
							selectPages(fm.file(baseHash));
							baseId = fm.navHash2Id(baseHash);
							autoScr && autoScroll(baseId);
							baseNode = jQuery('#'+baseId);
							spinner = jQuery(fm.res('tpl', 'navspinner')).insertBefore(baseNode.children('.'+arrow));
							baseNode.removeClass(collapsed);
							
							jQuery.when.apply($, reqs)
							.done(function() {
								var res = {},data, treeDirs, dirs, argLen, i;
								argLen = arguments.length;
								if (argLen > 0) {
									for (i = 0; i < argLen; i++) {
										data = arguments[i].tree || [];
										res[ends[i]] = Object.assign([], filter(data));
									}
								}
								dfd.resolve(res);
							})
							.fail(function() {
								dfd.reject();
							});
							
							return dfd;
						} else {
							return dfd.resolve();
						}
					},
					done= function(res, dfrd) {
						var open = function() {
								if (openRoot && baseNode) {
									findSubtree(baseNode.hash).show().prev(selNavdir).addClass(expanded);
									openRoot = false;
								}
								if (autoScr) {
									autoScroll().done(checkSubdirs);
								} else {
									checkSubdirs();
								}
							},
							current;
						
						if (res) {
							jQuery.each(res, function(endHash, dirs) {
								dirs && updateTree(dirs);
								selectPages(fm.file(endHash));
								dirs && updateArrows(dirs, loaded);
							});
						}
						
						if (cwdDirs) {
							(fm.api < 2.1) && cwdDirs.push(cwd);
							updateTree(cwdDirs);
						}
						
						// set current node
						current = selectPages();
						
						if (!current.hasClass(active)) {
							tree.find(selNavdir+'.'+active).removeClass(active);
							current.addClass(active);
						}
						
						// mark as loaded to cwd parents
						current.parents('.elfinder-navbar-wrapper').children('.'+navdir).addClass(loaded);
						
						if (res) {
							fm.lazy(open).done(function() {
								dfrd.resolve();
							});
						} else {
							open();
							dfrd.resolve();
						}
					},
					rmSpinner = function(fail) {
						if (baseNode) {
							spinner.remove();
							baseNode.addClass(collapsed + (fail? '' : (' ' + loaded)));
						}
					},
					dfrd = jQuery.Deferred(),
					baseNode, spinner;
				
				if (!fm.navHash2Elm(cwdhash).length) {
					syncing = true;
					loadParents()
					.done(function(res) {
						done(res, dfrd);
						rmSpinner();
					})
					.fail(function() { 
						rmSpinner(true);
						dfrd.reject();
					})
					.always(function() {
						syncing = false;
					});
				} else {
					done(void(0), dfrd);
				}
				
				// trigger 'treesync' with my jQuery.Deferred
				fm.trigger('treesync', dfrd);

				return dfrd;
			},
			
			/**
			 * Make writable and not root dirs droppable
			 *
			 * @return void
			 */
			updateDroppable = function(target, node) {
				var limit = 100,
					next;
				
				if (!target) {
					if (!node || node.closest('div.'+wrapperRoot).hasClass(uploadable)) {
						(node || tree.find('div.'+uploadable)).find(selNavdir+':not(.elfinder-ro,.elfinder-na)').addClass('native-droppable');
					}
					if (!node || node.closest('div.'+wrapperRoot).hasClass(pastable)) {
						target = (node || tree.find('div.'+pastable)).find(selNavdir+':not(.'+droppable+')');
					} else {
						target = jQuery();
					}
					if (node) {
						// check leaf roots
						node.children('div.'+wrapperRoot).each(function() {
							updateDroppable(null, jQuery(this));
						});
					}
				}
				
				// make droppable on async
				if (target.length) {
					fm.asyncJob(function(elm) {
						jQuery(elm).droppable(droppableopts);
					}, jQuery.makeArray(target), {
						interval : 20,
						numPerOnce : 100
					});
				}
			},
			
			/**
			 * Check required folders for subfolders and update arrow classes
			 *
			 * @param  Array  folders to check
			 * @param  String css class 
			 * @return void
			 */
			updateArrows = function(dirs, cls) {
				var sel = cls == loaded
						? '.'+collapsed+':not(.'+loaded+')'
						: ':not(.'+collapsed+')';
				
				jQuery.each(dirs, function(i, dir) {
					fm.navHash2Elm(dir.phash).filter(sel)
						.filter(function() { return jQuery.grep(jQuery(this).next('.'+subtree).children(), function(n) {
							return (jQuery(n).children().hasClass(root))? false : true;
						}).length > 0; })
						.addClass(cls);
				});
			},
			
			
			
			/**
			 * Navigation tree
			 *
			 * @type JQuery
			 */
			tree = jQuery(this).addClass(treeclass)
				// make dirs draggable and toggle hover class
				.on('mouseenter mouseleave', selNavdir, function(e) {
					var enter = (e.type === 'mouseenter');
					if (enter && scrolling) { return; }
					var link  = jQuery(this),
						hash, dir; 
					
					if (!link.hasClass(dropover+' '+disabled)) {
						if (!mobile && enter && !link.data('dragRegisted') && !link.hasClass(root+' '+draggable+' elfinder-na elfinder-wo')) {
							link.data('dragRegisted', true);
							if (fm.isCommandEnabled('copy', (hash = fm.navId2Hash(link.attr('id'))))) {
								link.draggable(fm.draggable);
							}
						}
						link.toggleClass(hover, enter);
					}
					// update title attr if necessary
					if (enter && opts.attrTitle) {
						dir = fm.file(hash || fm.navId2Hash(link.attr('id')));
						if (!dir.isroot && link.attr('title') === (dir.i18 || dir.name)) {
							link.attr('title', fm.path(hash, true));
						}
					}
				})
				// native drag enter
				.on('dragenter', selNavdir, function(e) {
					if (e.originalEvent.dataTransfer) {
						var dst = jQuery(this);
						dst.addClass(hover);
						if (dst.is('.'+collapsed+':not(.'+expanded+')')) {
							dst.data('expandTimer', setTimeout(function() {
								dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click');
							}, 500));
						}
					}
				})
				// native drag leave
				.on('dragleave', selNavdir, function(e) {
					if (e.originalEvent.dataTransfer) {
						var dst = jQuery(this);
						dst.data('expandTimer') && clearTimeout(dst.data('expandTimer'));
						dst.removeClass(hover);
					}
				})
				// open dir or open subfolders in tree
				.on('click', selNavdir, function(e) {
					var link = jQuery(this),
						hash = fm.navId2Hash(link.attr('id')),
						file = fm.file(hash);
					
					if (link.data('longtap')) {
						link.removeData('longtap');
						e.stopPropagation();
						return;
					}
					
					if (!link.hasClass(active)) {
						tree.find(selNavdir+'.'+active).removeClass(active);
						link.addClass(active);
					}
					if (hash != fm.cwd().hash && !link.hasClass(disabled)) {
						fm.exec('open', hash).done(function() {
							fm.one('opendone', function() {
								fm.select({selected: [hash], origin: 'navbar'});
							});
						});
					} else {
						if (link.hasClass(collapsed)) {
							link.children('.'+arrow).trigger('click');
						}
						fm.select({selected: [hash], origin: 'navbar'});
					}
				})
				// for touch device
				.on('touchstart', selNavdir, function(e) {
					if (e.originalEvent.touches.length > 1) {
						return;
					}
					var evt = e.originalEvent,
						p;
					
					if (e.target.nodeName === 'INPUT') {
						e.stopPropagation();
						return;
					}
					
					p = jQuery(this).addClass(hover)
					.removeData('longtap')
					.data('tmlongtap', setTimeout(function(e){
						// long tap
						p.data('longtap', true);
						fm.trigger('contextmenu', {
							'type'    : 'navbar',
							'targets' : [fm.navId2Hash(p.attr('id'))],
							'x'       : evt.touches[0].pageX,
							'y'       : evt.touches[0].pageY
						});
					}, 500));
				})
				.on('touchmove touchend', selNavdir, function(e) {
					if (e.target.nodeName === 'INPUT') {
						e.stopPropagation();
						return;
					}
					clearTimeout(jQuery(this).data('tmlongtap'));
					jQuery(this).removeData('tmlongtap');
					if (e.type == 'touchmove') {
						jQuery(this).removeClass(hover);
					}
				})
				// toggle subfolders in tree
				.on('click', selNavdir+'.'+collapsed+' .'+arrow, function(e) {
					var arrow = jQuery(this),
						link  = arrow.parent(selNavdir),
						stree = link.next('.'+subtree),
						dfrd  = jQuery.Deferred(),
						slideTH = 30, cnt;

					e.stopPropagation();

					if (link.hasClass(loaded)) {
						link.toggleClass(expanded);
						fm.lazy(function() {
							cnt = link.hasClass(expanded)? stree.children().length + stree.find('div.elfinder-navbar-subtree[style*=block]').children().length : stree.find('div:visible').length;
							if (cnt > slideTH) {
								stree.toggle();
								fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
								checkSubdirs();
							} else {
								stree.stop(true, true)[link.hasClass(expanded)? 'slideDown' : 'slideUp'](opts.durations.slideUpDown, function(){
									fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
									checkSubdirs();
								});
							}
						}).always(function() {
							dfrd.resolve();
						});
					} else {
						spinner.insertBefore(arrow);
						link.removeClass(collapsed);

						fm.request({cmd : 'tree', target : fm.navId2Hash(link.attr('id'))})
							.done(function(data) { 
								updateTree(Object.assign([], filter(data.tree))); 
								
								if (stree.children().length) {
									link.addClass(collapsed+' '+expanded);
									if (stree.children().length > slideTH) {
										stree.show();
										fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
										checkSubdirs();
									} else {
										stree.stop(true, true).slideDown(opts.durations.slideUpDown, function(){
											fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1);
											checkSubdirs();
										});
									}
								} 
							})
							.always(function(data) {
								spinner.remove();
								link.addClass(loaded);
								fm.one('treedone', function() {
									dfrd.resolve();
								});
							});
					}
					arrow.data('dfrd', dfrd);
				})
				.on('contextmenu', selNavdir, function(e) {
					e.stopPropagation();
					var self = jQuery(this);
					
					// now dirname editing
					if (self.find('input:text').length) {
						return;
					}
					
					e.preventDefault();

					if (!self.data('tmlongtap')) {
						fm.trigger('contextmenu', {
							'type'    : 'navbar',
							'targets' : [fm.navId2Hash(jQuery(this).attr('id'))],
							'x'       : e.pageX,
							'y'       : e.pageY
						});
					}
					self.addClass('ui-state-hover');
					
					fm.getUI('contextmenu').children().on('mouseenter', function() {
						self.addClass('ui-state-hover');
					});
					
					fm.bind('closecontextmenu', function() {
						self.removeClass('ui-state-hover');
					});
				})
				.on('scrolltoview', selNavdir, function(e, data) {
					var self = jQuery(this);
					autoScroll(self.attr('id')).done(function() {
						if (!data || data.blink === 'undefined' || data.blink) {
							fm.resources.blink(self, 'lookme');
						}
					});
				})
				// prepend fake dir
				.on('create.'+fm.namespace, function(e, item) {
					var pdir = findSubtree(item.phash),
						lock = item.move || false,
						dir  = jQuery(itemhtml(item)).addClass('elfinder-navbar-wrapper-tmp'),
						selected = fm.selected();
						
					lock && selected.length && fm.trigger('lockfiles', {files: selected});
					pdir.prepend(dir);
				}),
			scrolling = false,
			navbarScrTm,
			// move tree into navbar
			navbar = fm.getUI('navbar').append(tree).show().on('scroll', function() {
				scrolling = true;
				navbarScrTm && cancelAnimationFrame(navbarScrTm);
				navbarScrTm = requestAnimationFrame(function() {
					scrolling = false;
					checkSubdirs();
				});
			}),
			
			prevSortTreeview = fm.sortAlsoTreeview;
			
		fm.open(function(e) {
			var data = e.data,
				dirs = filter(data.files),
				contextmenu = fm.getUI('contextmenu');

			data.init && tree.empty();

			if (fm.UA.iOS) {
				navbar.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch');
			}

			if (dirs.length) {
				fm.lazy(function() {
					if (!contextmenu.data('cmdMaps')) {
						contextmenu.data('cmdMaps', {});
					}
					updateTree(dirs);
					updateArrows(dirs, loaded);
					sync(dirs);
				});
			} else {
				sync();
			}
		})
		// add new dirs
		.add(function(e) {
			var dirs = filter(e.data.added);

			if (dirs.length) {
				updateTree(dirs);
				updateArrows(dirs, collapsed);
			}
		})
		// update changed dirs
		.change(function(e) {
			// do ot perfome while syncing
			if (syncing) {
				return;
			}

			var dirs = filter(e.data.changed, true),
				length = dirs.length,
				l    = length,
				tgts = jQuery(),
				changed = {},
				dir, phash, node, tmp, realParent, reqParent, realSibling, reqSibling, isExpanded, isLoaded, parent, subdirs;
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'prepare' });
			});
			
			while (l--) {
				dir = dirs[l];
				phash = dir.phash;
				if ((node = fm.navHash2Elm(dir.hash)).length) {
					parent = node.parent();
					if (phash) {
						realParent  = node.closest('.'+subtree);
						reqParent   = findSubtree(phash);
						realSibling = node.parent().next();
						reqSibling  = findSibling(reqParent, dir);
						
						if (!reqParent.length) {
							continue;
						}
						
						if (reqParent[0] !== realParent[0] || realSibling.get(0) !== reqSibling.get(0)) {
							reqSibling.length ? reqSibling.before(parent) : reqParent.append(parent);
						}
					}
					isExpanded = node.hasClass(expanded);
					isLoaded   = node.hasClass(loaded);
					tmp        = jQuery(itemhtml(dir));
					node.replaceWith(tmp.children(selNavdir));
					! mobile && updateDroppable(null, parent);
					
					if (dir.dirs
					&& (isExpanded || isLoaded) 
					&& (node = fm.navHash2Elm(dir.hash))
					&& node.next('.'+subtree).children().length) {
						isExpanded && node.addClass(expanded);
						isLoaded && node.addClass(loaded);
					}
					
					subdirs |= dir.dirs == -1;
				}
			}
			
			// to check subdirs
			if (subdirs) {
				checkSubdirs();
			}
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'done' });
			});
			
			length && sync(void(0), false);
		})
		// remove dirs
		.remove(function(e) {
			var dirs = e.data.removed,
				l    = dirs.length,
				node, stree, removed;
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { removed : dirs });
				node.trigger('update.'+fm.namespace, { change: 'prepare' });
			});

			while (l--) {
				if ((node = fm.navHash2Elm(dirs[l])).length) {
					removed = true;
					stree = node.closest('.'+subtree);
					node.parent().detach();
					if (!stree.children().length) {
						stree.hide().prev(selNavdir).removeClass(collapsed+' '+expanded+' '+loaded);
					}
				}
			}
			
			removed && fm.getUI('navbar').children('.ui-resizable-handle').trigger('resize');
			
			jQuery.each(hasMoreDirs, function(h, node) {
				node.trigger('update.'+fm.namespace, { change: 'done' });
			});
		})
		// lock/unlock dirs while moving
		.bind('lockfiles unlockfiles', function(e) {
			var lock = e.type == 'lockfiles',
				helperLocked = e.data.helper? e.data.helper.data('locked') : false,
				act  = (lock && !helperLocked) ? 'disable' : 'enable',
				dirs = jQuery.grep(e.data.files||[], function(h) {  
					var dir = fm.file(h);
					return dir && dir.mime == 'directory' ? true : false;
				});
				
			jQuery.each(dirs, function(i, hash) {
				var dir = fm.navHash2Elm(hash);
				
				if (dir.length && !helperLocked) {
					dir.hasClass(draggable) && dir.draggable(act);
					dir.hasClass(droppable) && dir.droppable(act);
					dir[lock ? 'addClass' : 'removeClass'](disabled);
				}
			});
		})
		.bind('sortchange', function() {
			if (fm.sortAlsoTreeview || prevSortTreeview !== fm.sortAlsoTreeview) {
				var dirs,
					ends = [],
					endsMap = {},
					endsVid = {},
					topVid = '',
					single = false,
					current;
				
				fm.lazy(function() {
					dirs = filter(fm.files());
					prevSortTreeview = fm.sortAlsoTreeview;
					
					tree.empty();
					
					// append volume roots at first
					updateTree(jQuery.map(fm.roots, function(h) {
						var dir = fm.file(h);
						return dir && !dir.phash? dir : null;
					}));
					
					if (!Object.keys(hasMoreDirs).length) {
						updateTree(dirs);
						current = selectPages();
						updateArrows(dirs, loaded);
					} else {
						ends = getEnds();
						if (ends.length > 1) {
							jQuery.each(ends, function(i, end) {
								var vid = fm.file(fm.root(end)).volumeid; 
								if (i === 0) {
									topVid = vid;
								}
								endsVid[vid] = end;
								endsMap[end] = [];
							});
							jQuery.each(dirs, function(i, d) {
								if (!d.volumeid) {
									single = true;
									return false;
								}
								endsMap[endsVid[d.volumeid] || endsVid[topVid]].push(d);
							});
						} else {
							single = true;
						}
						if (single) {
							jQuery.each(ends, function(i, endHash) {
								updateTree(dirs);
								current = selectPages(fm.file(endHash));
								updateArrows(dirs, loaded);
							});
						} else {
							jQuery.each(endsMap, function(endHash, dirs) {
								updateTree(dirs);
								current = selectPages(fm.file(endHash));
								updateArrows(dirs, loaded);
							});
						}
					}
					
					sync();
				}, 100);
			}
		});

	});
	
	return this;
};
lib/js/worker/quicklook.tiff.js000064400000000362147361034410012531 0ustar00var data = self.data;
if (data.memory) {
  Tiff.initialize({ TOTAL_MEMORY: data.memory });
}
var tiff = new Tiff({buffer: data.data});
var image = tiff.readRGBAImage();
self.res = { image: image, width: tiff.width(), height: tiff.height() };
lib/js/worker/calcfilehash.js000064400000001024147361034410012203 0ustar00var type = self.data.type,
	bin = self.data.bin,
	hashOpts = self.data.hashOpts;

self.res = {};
if (type === 'md5') {
	let sp = new self.SparkMD5.ArrayBuffer();
	sp.append(bin);
	self.res.hash = sp.end();
} else {
	let sha = new jsSHA('SHA' + (type.length === 5? type : ('-' + type)).toUpperCase(), 'ARRAYBUFFER'),
		opts = {};
	if (type === 'ke128') {
		opts.shakeLen = hashOpts.shake128len;
	} else if (type === 'ke256') {
		opts.shakeLen = hashOpts.shake256len;
	}
	sha.update(bin);
	self.res.hash = sha.getHash('HEX', opts);
}
lib/js/worker/quicklook.unzip.js000064400000003464147361034410012754 0ustar00var type = self.data.type,
	bin = self.data.bin,
	unzipFiles = function() {
		/** @type {Array.<string>} */
		var filenameList = [];
		/** @type {number} */
		var i;
		/** @type {number} */
		var il;
		/** @type {Array.<Zlib.Unzip.FileHeader>} */
		var fileHeaderList;
		// need check this.Y when update cdns.zlibUnzip
		this.Y();
		fileHeaderList = this.i;
		for (i = 0, il = fileHeaderList.length; i < il; ++i) {
			// need check fileHeaderList[i].J when update cdns.zlibUnzip
			filenameList[i] = fileHeaderList[i].filename + (fileHeaderList[i].J? ' ({formatSize(' + fileHeaderList[i].J + ')})' : '');
		}
		return filenameList;
	},
	tarFiles = function(tar) {
		var filenames = [],
			tarlen = tar.length,
			offset = 0,
			toStr = function(arr) {
				return String.fromCharCode.apply(null, arr).replace(/\0+$/, '');
			},
			h, name, prefix, size, dbs;
		while (offset < tarlen && tar[offset] !== 0) {
			h = tar.subarray(offset, offset + 512);
			name = toStr(h.subarray(0, 100));
			if (prefix = toStr(h.subarray(345, 500))) {
				name = prefix + name;
			}
			size = parseInt(toStr(h.subarray(124, 136)), 8);
			dbs = Math.ceil(size / 512) * 512;
			if (name === '././@LongLink') {
				name = toStr(tar.subarray(offset + 512, offset + 512 + dbs));
			}
			(name !== 'pax_global_header') && filenames.push(name + (size? ' ({formatSize(' + size + ')})': ''));
			offset = offset + 512 + dbs;
		}
		return filenames;
	};

self.res = {};
if (type === 'tar') {
	self.res.files = tarFiles(new Uint8Array(bin));
} else if (type === 'zip') {
	self.res.files = unzipFiles.call(new Zlib.Unzip(new Uint8Array(bin)));
} else if (type === 'gzip') {
	self.res.files = tarFiles((new Zlib.Gunzip(new Uint8Array(bin))).decompress());
} else if (type === 'bzip2') {
	self.res.files = tarFiles(self.bzip2.simple(self.bzip2.array(new Uint8Array(bin))));
}
lib/js/jquery.elfinder.js000064400000026502147361034410011402 0ustar00/*** jQuery UI droppable performance tune for elFinder ***/
(function(){
if (jQuery.ui) {
	if (jQuery.ui.ddmanager) {
		var origin = jQuery.ui.ddmanager.prepareOffsets;
		jQuery.ui.ddmanager.prepareOffsets = function( t, event ) {
			var isOutView = function(elem) {
				if (elem.is(':hidden')) {
					return true;
				}
				var rect = elem[0].getBoundingClientRect();
				return document.elementFromPoint(rect.left, rect.top) || document.elementFromPoint(rect.left + rect.width, rect.top + rect.height)? false : true;
			};
			
			if (event.type === 'mousedown' || t.options.elfRefresh) {
				var i, d,
				m = jQuery.ui.ddmanager.droppables[ t.options.scope ] || [],
				l = m.length;
				for ( i = 0; i < l; i++ ) {
					d = m[ i ];
					if (d.options.autoDisable && (!d.options.disabled || d.options.autoDisable > 1)) {
						d.options.disabled = isOutView(d.element);
						d.options.autoDisable = d.options.disabled? 2 : 1;
					}
				}
			}
			
			// call origin function
			return origin( t, event );
		};
	}
}
})();

 /**
 *
 * jquery.binarytransport
 *
 * @description. jQuery ajax transport for making binary data type requests.
 *
 */

(function($, undefined) {
	"use strict";

	// use this transport for "binary" data type
	jQuery.ajaxTransport("+binary", function(options, originalOptions, jqXHR) {
		// check for conditions and support for blob / arraybuffer response type
		if (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob))))) {
			var callback;

			// Cross domain only allowed if supported through XMLHttpRequest
			return {
				send: function( headers, complete ) {
					var i,
						dataType = options.responseType || "blob",
						xhr = options.xhr();

					xhr.open(
						options.type,
						options.url,
						options.async,
						options.username,
						options.password
					);

					// Apply custom fields if provided
					if ( options.xhrFields ) {
						for ( i in options.xhrFields ) {
							xhr[ i ] = options.xhrFields[ i ];
						}
					}

					// Override mime type if needed
					if ( options.mimeType && xhr.overrideMimeType ) {
						xhr.overrideMimeType( options.mimeType );
					}

					// X-Requested-With header
					// For cross-domain requests, seeing as conditions for a preflight are
					// akin to a jigsaw puzzle, we simply never set it to be sure.
					// (it can always be set on a per-request basis or even using ajaxSetup)
					// For same-domain requests, won't change header if already provided.
					if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
						headers[ "X-Requested-With" ] = "XMLHttpRequest";
					}

					// Set headers
					for ( i in headers ) {
						xhr.setRequestHeader( i, headers[ i ] );
					}

					// Callback
					callback = function( type ) {
						return function() {
							if ( callback ) {
								callback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = null;

								if ( type === "abort" ) {
									xhr.abort();
								} else if ( type === "error" ) {
									complete(
										xhr.status,
										xhr.statusText
									);
								} else {
									var data = {};
									data[options.dataType] = xhr.response;
									complete(
										xhr.status,
										xhr.statusText,
										data,
										xhr.getAllResponseHeaders()
									);
								}
							}
						};
					};

					// Listen to events
					xhr.onload = callback();
					xhr.onabort = xhr.onerror = xhr.ontimeout = callback( "error" );

					// Create the abort callback
					callback = callback( "abort" );

					try {
						xhr.responseType = dataType;
						// Do send the request (this may raise an exception)
						xhr.send( options.data || null );
					} catch ( e ) {
						if ( callback ) {
							throw e;
						}
					}
				},

				abort: function() {
					if ( callback ) {
						callback();
					}
				}
			};
		}
	});
})(window.jQuery);

/*!
 * jQuery UI Touch Punch 0.2.3
 *
 * Copyright 2011–2014, Dave Furfero
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 * Depends:
 *	jquery.ui.widget.js
 *	jquery.ui.mouse.js
 */
(function ($) {

  // Detect touch support
  jQuery.support.touch = 'ontouchend' in document;

  // Ignore browsers without touch support
  if (!jQuery.support.touch) {
	return;
  }

  var mouseProto = jQuery.ui.mouse.prototype,
	  _mouseInit = mouseProto._mouseInit,
	  _mouseDestroy = mouseProto._mouseDestroy,
	  touchHandled,
	  posX, posY;

  /**
   * Simulate a mouse event based on a corresponding touch event
   * @param {Object} event A touch event
   * @param {String} simulatedType The corresponding mouse event
   */
  function simulateMouseEvent (event, simulatedType) {

	// Ignore multi-touch events
	if (event.originalEvent.touches.length > 1) {
	  return;
	}

	if (! jQuery(event.currentTarget).hasClass('touch-punch-keep-default')) {
		event.preventDefault();
	}

	var touch = event.originalEvent.changedTouches[0],
		simulatedEvent = document.createEvent('MouseEvents');
	
	// Initialize the simulated mouse event using the touch event's coordinates
	simulatedEvent.initMouseEvent(
	  simulatedType,	// type
	  true,				// bubbles					  
	  true,				// cancelable				  
	  window,			// view						  
	  1,				// detail					  
	  touch.screenX,	// screenX					  
	  touch.screenY,	// screenY					  
	  touch.clientX,	// clientX					  
	  touch.clientY,	// clientY					  
	  false,			// ctrlKey					  
	  false,			// altKey					  
	  false,			// shiftKey					  
	  false,			// metaKey					  
	  0,				// button					  
	  null				// relatedTarget			  
	);

	// Dispatch the simulated event to the target element
	event.target.dispatchEvent(simulatedEvent);
  }

  /**
   * Handle the jQuery UI widget's touchstart events
   * @param {Object} event The widget element's touchstart event
   */
  mouseProto._touchStart = function (event) {

	var self = this;

	// Ignore the event if another widget is already being handled
	if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
	  return;
	}

	// Track element position to avoid "false" move
	posX = event.originalEvent.changedTouches[0].screenX.toFixed(0);
	posY = event.originalEvent.changedTouches[0].screenY.toFixed(0);

	// Set the flag to prevent other widgets from inheriting the touch event
	touchHandled = true;

	// Track movement to determine if interaction was a click
	self._touchMoved = false;

	// Simulate the mouseover event
	simulateMouseEvent(event, 'mouseover');

	// Simulate the mousemove event
	simulateMouseEvent(event, 'mousemove');

	// Simulate the mousedown event
	simulateMouseEvent(event, 'mousedown');
  };

  /**
   * Handle the jQuery UI widget's touchmove events
   * @param {Object} event The document's touchmove event
   */
  mouseProto._touchMove = function (event) {

	// Ignore event if not handled
	if (!touchHandled) {
	  return;
	}

	// Ignore if it's a "false" move (position not changed)
	var x = event.originalEvent.changedTouches[0].screenX.toFixed(0);
	var y = event.originalEvent.changedTouches[0].screenY.toFixed(0);
	// Ignore if it's a "false" move (position not changed)
	if (Math.abs(posX - x) <= 4 && Math.abs(posY - y) <= 4) {
		return;
	}

	// Interaction was not a click
	this._touchMoved = true;

	// Simulate the mousemove event
	simulateMouseEvent(event, 'mousemove');
  };

  /**
   * Handle the jQuery UI widget's touchend events
   * @param {Object} event The document's touchend event
   */
  mouseProto._touchEnd = function (event) {

	// Ignore event if not handled
	if (!touchHandled) {
	  return;
	}

	// Simulate the mouseup event
	simulateMouseEvent(event, 'mouseup');

	// Simulate the mouseout event
	simulateMouseEvent(event, 'mouseout');

	// If the touch interaction did not move, it should trigger a click
	if (!this._touchMoved) {

	  // Simulate the click event
	  simulateMouseEvent(event, 'click');
	}

	// Unset the flag to allow other widgets to inherit the touch event
	touchHandled = false;
	this._touchMoved = false;
  };

  /**
   * A duck punch of the jQuery.ui.mouse _mouseInit method to support touch events.
   * This method extends the widget with bound touch event handlers that
   * translate touch events to mouse events and pass them to the widget's
   * original mouse event handling methods.
   */
  mouseProto._mouseInit = function () {
	
	var self = this;

	if (self.element.hasClass('touch-punch')) {
		// Delegate the touch handlers to the widget's element
		self.element.on({
		  touchstart: jQuery.proxy(self, '_touchStart'),
		  touchmove: jQuery.proxy(self, '_touchMove'),
		  touchend: jQuery.proxy(self, '_touchEnd')
		});
	}

	// Call the original jQuery.ui.mouse init method
	_mouseInit.call(self);
  };

  /**
   * Remove the touch event handlers
   */
  mouseProto._mouseDestroy = function () {
	
	var self = this;

	if (self.element.hasClass('touch-punch')) {
		// Delegate the touch handlers to the widget's element
		self.element.off({
		  touchstart: jQuery.proxy(self, '_touchStart'),
		  touchmove: jQuery.proxy(self, '_touchMove'),
		  touchend: jQuery.proxy(self, '_touchEnd')
		});
	}

	// Call the original jQuery.ui.mouse destroy method
	_mouseDestroy.call(self);
  };

})(jQuery);

jQuery.fn.elfinder = function(o, o2) {
	
	if (o === 'instance') {
		return this.getElFinder();
	} else if (o === 'ondemand') {

	}
	
	return this.each(function() {
		
		var cmd          = typeof o  === 'string'  ? o  : '',
			bootCallback = typeof o2 === 'function'? o2 : void(0),
			elfinder     = this.elfinder,
			opts, reloadCallback;
		
		if (!elfinder) {
			if (jQuery.isPlainObject(o)) {
				new elFinder(this, o, bootCallback);
			}
		} else {
			switch(cmd) {
				case 'close':
				case 'hide':
					elfinder.hide();
					break;
					
				case 'open':
				case 'show':
					elfinder.show();
					break;
					
				case 'destroy':
					elfinder.destroy();
					break;
				
				case 'reload':
				case 'restart':
					if (elfinder) {
						opts = jQuery.extend(true, elfinder.options, jQuery.isPlainObject(o2)? o2 : {});
						bootCallback = elfinder.bootCallback;
						if (elfinder.reloadCallback && jQuery.isFunction(elfinder.reloadCallback)) {
							elfinder.reloadCallback(opts, bootCallback);
						} else {
							elfinder.destroy();
							new elFinder(this, opts, bootCallback);
						}
					}
					break;
			}
		}
	});
};

jQuery.fn.getElFinder = function() {
	var instance;
	
	this.each(function() {
		if (this.elfinder) {
			instance = this.elfinder;
			return false;
		}
	});
	
	return instance;
};

jQuery.fn.elfUiWidgetInstance = function(name) {
	try {
		return this[name]('instance');
	} catch(e) {
		// fallback for jQuery UI < 1.11
		var data = this.data('ui-' + name);
		if (data && typeof data === 'object' && data.widgetFullName === 'ui-' + name) {
			return data;
		}
		return null;
	}
};

// function scrollRight
if (! jQuery.fn.scrollRight) {
	jQuery.fn.extend({
		scrollRight: function (val) {
			var node = this.get(0);
			if (val === undefined) {
				return Math.max(0, node.scrollWidth - (node.scrollLeft + node.clientWidth));
			}
			return this.scrollLeft(node.scrollWidth - node.clientWidth - val);
		}
	});
}

// function scrollBottom
if (! jQuery.fn.scrollBottom) {
	jQuery.fn.extend({
		scrollBottom: function(val) { 
			var node = this.get(0);
			if (val === undefined) {
				return Math.max(0, node.scrollHeight - (node.scrollTop + node.clientHeight));
			}
			return this.scrollTop(node.scrollHeight - node.clientHeight - val);
		}
	});
}
lib/js/i18n/elfinder.de.js000064400000103630147361034410011230 0ustar00/**
 * Deutsch translation
 * @author JPG & Mace <dev@flying-datacenter.de>
 * @author tora60 from pragmaMx.org
 * @author Timo-Linde <info@timo-linde.de>
 * @author OSWorX <info@osworx.net>
 * @author Maximilian Schwarz <info@deefuse.de>
 * @author SF Webdesign <webdesign@stephan-frank.de>
 * @version 2022-02-28
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.de = {
		translator : 'JPG & Mace &lt;dev@flying-datacenter.de&gt;, tora60 from pragmaMx.org, Timo-Linde &lt;info@timo-linde.de&gt;, OSWorX &lt;info@osworx.net&gt;, Maximilian Schwarz &lt;info@deefuse.de&gt;, SF Webdesign &lt;webdesign@stephan-frank.de&gt;',
		language   : 'Deutsch',
		direction  : 'ltr',
		dateFormat : 'j. F Y H:i', // will show like: 28. Februar 2022 13:17
		fancyDateFormat : '$1 H:i', // will show like: Heute 13:17
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220228-131758
		messages   : {
			'getShareText' : 'Aktie',
			'Editor ': 'Kodex-Editor',
			/********************************** errors **********************************/
			'error'                : 'Fehler',
			'errUnknown'           : 'Unbekannter Fehler.',
			'errUnknownCmd'        : 'Unbekannter Befehl.',
			'errJqui'              : 'Ungültige jQuery UI-Konfiguration. Die Komponenten Selectable, Draggable und Droppable müssen inkludiert sein.',
			'errNode'              : 'Für elFinder muss das DOM-Element erstellt werden.',
			'errURL'               : 'Ungültige elFinder-Konfiguration! Die URL-Option ist nicht gesetzt.',
			'errAccess'            : 'Zugriff verweigert.',
			'errConnect'           : 'Verbindung zum Backend fehlgeschlagen.',
			'errAbort'             : 'Verbindung abgebrochen.',
			'errTimeout'           : 'Zeitüberschreitung der Verbindung.',
			'errNotFound'          : 'Backend nicht gefunden.',
			'errResponse'          : 'Ungültige Backend-Antwort.',
			'errConf'              : 'Ungültige Backend-Konfiguration.',
			'errJSON'              : 'PHP JSON-Modul nicht vorhanden.',
			'errNoVolumes'         : 'Keine lesbaren Laufwerke vorhanden.',
			'errCmdParams'         : 'Ungültige Parameter für Befehl: "$1".',
			'errDataNotJSON'       : 'Daten nicht im JSON-Format.',
			'errDataEmpty'         : 'Daten sind leer.',
			'errCmdReq'            : 'Backend-Anfrage benötigt Befehl.',
			'errOpen'              : 'Kann "$1" nicht öffnen.',
			'errNotFolder'         : 'Objekt ist kein Ordner.',
			'errNotFile'           : 'Objekt ist keine Datei.',
			'errRead'              : 'Kann "$1" nicht öffnen.',
			'errWrite'             : 'Kann nicht in "$1" schreiben.',
			'errPerm'              : 'Zugriff verweigert.',
			'errLocked'            : '"$1" ist gesperrt und kann nicht umbenannt, verschoben oder gelöscht werden.',
			'errExists'            : 'Die Datei "$1" existiert bereits.',
			'errInvName'           : 'Ungültiger Dateiname.',
			'errInvDirname'        : 'Ungültiger Ordnername.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Ordner nicht gefunden.',
			'errFileNotFound'      : 'Datei nicht gefunden.',
			'errTrgFolderNotFound' : 'Zielordner "$1" nicht gefunden.',
			'errPopup'             : 'Der Browser hat das Pop-Up-Fenster unterbunden. Um die Datei zu öffnen, Pop-Ups in den Browsereinstellungen aktivieren.',
			'errMkdir'             : 'Kann Ordner "$1" nicht erstellen.',
			'errMkfile'            : 'Kann Datei "$1" nicht erstellen.',
			'errRename'            : 'Kann "$1" nicht umbenennen.',
			'errCopyFrom'          : 'Kopieren von Dateien von "$1" nicht erlaubt.',
			'errCopyTo'            : 'Kopieren von Dateien nach "$1" nicht erlaubt.',
			'errMkOutLink'         : 'Der Link kann nicht außerhalb der Partition führen.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload-Fehler.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kann "$1" nicht hochladen.', // old name - errUpload
			'errUploadNoFiles'     : 'Keine Dateien zum Hochladen gefunden.',
			'errUploadTotalSize'   : 'Gesamtgröße überschreitet die Maximalgröße.', // old name - errMaxSize
			'errUploadFileSize'    : 'Die Datei überschreitet die Maximalgröße.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Dateiart (mime) nicht zulässig.',
			'errUploadTransfer'    : '"$1" Übertragungsfehler.',
			'errUploadTemp'        : 'Kann temporäre Datei nicht erstellen.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Das Objekt "$1" existiert bereits an dieser Stelle und kann nicht durch ein Objekt eines anderen Typs ersetzt werden.', // new
			'errReplace'           : 'Kann "$1" nicht ersetzen.',
			'errSave'              : 'Kann "$1" nicht speichern.',
			'errCopy'              : 'Kann "$1" nicht kopieren.',
			'errMove'              : 'Kann "$1" nicht verschieben.',
			'errCopyInItself'      : '"$1" kann sich nicht in sich selbst kopieren.',
			'errRm'                : 'Kann "$1" nicht entfernen.',
			'errTrash'             : 'Kann Objekt nicht in Mülleimer legen.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kann Quelldatei(en) nicht entfernen.',
			'errExtract'           : 'Kann "$1" nicht entpacken.',
			'errArchive'           : 'Archiv konnte nicht erstellt werden.',
			'errArcType'           : 'Archivtyp nicht untersützt.',
			'errNoArchive'         : 'Bei der Datei handelt es sich nicht um ein Archiv, oder die Archivart wird nicht unterstützt.',
			'errCmdNoSupport'      : 'Das Backend unterstützt diesen Befehl nicht.',
			'errReplByChild'       : 'Der Ordner "$1" kann nicht durch etwas ersetzt werden, das ihn selbst enthält.',
			'errArcSymlinks'       : 'Aus Sicherheitsgründen ist es verboten, ein Archiv mit symbolischen Links zu extrahieren.', // edited 24.06.2012
			'errArcMaxSize'        : 'Die Archivdateien übersteigen die maximal erlaubte Größe.',
			'errResize'            : 'Größe von "$1" kann nicht geändert werden.',
			'errResizeDegree'      : 'Ungültiger Rotationswert.',  // added 7.3.2013
			'errResizeRotate'      : 'Bild konnte nicht gedreht werden.',  // added 7.3.2013
			'errResizeSize'        : 'Ungültige Bildgröße.',  // added 7.3.2013
			'errResizeNoChange'    : 'Bildmaße nicht geändert.',  // added 7.3.2013
			'errUsupportType'      : 'Nicht unterstützte Dateiart.',
			'errNotUTF8Content'    : 'Die Datei "$1" ist nicht im UTF-8-Format und kann nicht bearbeitet werden.',  // added 9.11.2011
			'errNetMount'          : 'Verbindung mit "$1" nicht möglich.', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nicht unterstütztes Protokoll.',     // added 17.04.2012
			'errNetMountFailed'    : 'Verbindung fehlgeschlagen.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host benötigt.', // added 18.04.2012
			'errSessionExpires'    : 'Diese Sitzung ist aufgrund von Inaktivität abgelaufen.',
			'errCreatingTempDir'   : 'Erstellung des temporären Ordners nicht möglich: "$1"',
			'errFtpDownloadFile'   : 'Download der Datei über FTP nicht möglich: "$1"',
			'errFtpUploadFile'     : 'Upload der Datei zu FTP nicht möglich: "$1"',
			'errFtpMkdir'          : 'Erstellung des Remote-Ordners mit FTP nicht möglich: "$1"',
			'errArchiveExec'       : 'Fehler beim Archivieren der Dateien: "$1"',
			'errExtractExec'       : 'Fehler beim Extrahieren der Dateien: "$1"',
			'errNetUnMount'        : 'Kann nicht ausgehängt werden.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Kann nicht zu UTF-8 konvertiert werden.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Ordner kann nich hochladen werden, eventuell mit Google Chrome versuchen.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Zeitüberschreitung während der Suche nach "$1". Suchergebnis ist unvollständig.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Erneutes Anmelden ist erforderlich.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Die maximale Anzahl auswählbarer Elemente ist $1', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Datei konnte nicht aus Mülleimer wieder hergestellt werden bzw. Ziel für Wiederherstellung nicht gefunden.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Kein Editor für diesen Dateityp gefunden.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ein serverseitiger Fehler trat auf.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Konnte Ordner "$1" nicht Leeren.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Es sind noch $1 weitere Fehler.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Sie können bis zu $1 Ordner gleichzeitig erstellen.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Archiv erstellen',
			'cmdback'      : 'Zurück',
			'cmdcopy'      : 'Kopieren',
			'cmdcut'       : 'Ausschneiden',
			'cmddownload'  : 'Herunterladen',
			'cmdduplicate' : 'Duplizieren',
			'cmdedit'      : 'Datei bearbeiten',
			'cmdextract'   : 'Archiv entpacken',
			'cmdforward'   : 'Vorwärts',
			'cmdgetfile'   : 'Datei auswählen',
			'cmdhelp'      : 'Über diese Software',
			'cmdhome'      : 'Startordner',
			'cmdinfo'      : 'Informationen',
			'cmdmkdir'     : 'Neuer Ordner',
			'cmdmkdirin'   : 'In neuen Ordner', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Neuer Datei',
			'cmdopen'      : 'Öffnen',
			'cmdpaste'     : 'Einfügen',
			'cmdquicklook' : 'Vorschau',
			'cmdreload'    : 'Aktualisieren',
			'cmdrename'    : 'Umbenennen',
			'cmdrm'        : 'Löschen',
			'cmdtrash'     : 'In den Mülleimer legen', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Wiederherstellen', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Suchen',
			'cmdup'        : 'In übergeordneten Ordner wechseln',
			'cmdupload'    : 'Datei hochladen',
			'cmdview'      : 'Ansehen',
			'cmdresize'    : 'Größe ändern & drehen',
			'cmdsort'      : 'Sortieren',
			'cmdnetmount'  : 'Verbinde mit Netzwerkspeicher', // added 18.04.2012
			'cmdnetunmount': 'Abhängen', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Favoriten', // added 28.12.2014
			'cmdchmod'     : 'Berechtigung ändern', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Einen Ordner öffnen', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Spaltenbreite zurücksetzen', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Vollbild', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Verschieben', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Ordner Leeren', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Rückgängig', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Wiederholen', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Einstellungen', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Alle auswählen', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Keine auswählen', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Auswahl rückgängig machen', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'In neuem Fenster öffnen', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Verstecken', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Schließen',
			'btnSave'   : 'Speichern',
			'btnRm'     : 'Entfernen',
			'btnApply'  : 'Anwenden',
			'btnCancel' : 'Abbrechen',
			'btnNo'     : 'Nein',
			'btnYes'    : 'Ja',
			'btnMount'  : 'Verbinden',  // added 18.04.2012
			'btnApprove': 'Gehe zu $1 und genehmige', // from v2.1 added 26.04.2012
			'btnUnmount': 'Auswerfen', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konvertieren', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Arbeitspfad',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Partition',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Alle',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME-Typ', // from v2.1 added 22.5.2015
			'btnFileName':'Dateiname',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Speichern & Schließen', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sicherung', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Umbenennen',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Alle Umbenennen', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Zurück ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Weiter ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Speichern als', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Öffne Ordner',
			'ntffile'     : 'Öffne Datei',
			'ntfreload'   : 'Ordnerinhalt neu',
			'ntfmkdir'    : 'Erstelle Ordner',
			'ntfmkfile'   : 'Erstelle Dateien',
			'ntfrm'       : 'Lösche Dateien',
			'ntfcopy'     : 'Kopiere Dateien',
			'ntfmove'     : 'Verschiebe Dateien',
			'ntfprepare'  : 'Kopiervorgang initialisieren',
			'ntfrename'   : 'Benenne Dateien um',
			'ntfupload'   : 'Dateien hochladen',
			'ntfdownload' : 'Dateien herunterladen',
			'ntfsave'     : 'Speichere Datei',
			'ntfarchive'  : 'Erstelle Archiv',
			'ntfextract'  : 'Entpacke Dateien',
			'ntfsearch'   : 'Suche',
			'ntfresize'   : 'Bildgrößen ändern',
			'ntfsmth'     : 'Bin beschäftigt ..',
			'ntfloadimg'  : 'Lade Bild ..',
			'ntfnetmount' : 'Mit Netzwerkspeicher verbinden', // added 18.04.2012
			'ntfnetunmount': 'Netzwerkspeicher auswerfen', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Bildgröße erfassen', // added 20.05.2013
			'ntfreaddir'  : 'Lese Ordnerinformationen', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Hole URL von Link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ändere Dateiberechtigungen', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Upload-Dateinamen überprüfen', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Erstelle Datei zum Download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Beziehe Pfad Informationen', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Upload läuft', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Bewege in den Mülleimer', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Wiederherstellung aus Mülleimer', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Prüfe Zielordner', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Vorherige Operation rückgängig machen', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Wiederherstellen', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Überprüfe Inhalte', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Mülleimer', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'unbekannt',
			'Today'       : 'Heute',
			'Yesterday'   : 'Gestern',
			'msJan'       : 'Januar',
			'msFeb'       : 'Februar',
			'msMar'       : 'Mär',
			'msApr'       : 'Apr',
			'msMay'       : 'Mai',
			'msJun'       : 'Juni',
			'msJul'       : 'Juli',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dez',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'März',
			'April'       : 'April',
			'May'         : 'Mai',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'Dezember',
			'Sunday'      : 'Sonntag',
			'Monday'      : 'Montag',
			'Tuesday'     : 'Dienstag',
			'Wednesday'   : 'Mittwoch',
			'Thursday'    : 'Donnerstag',
			'Friday'      : 'Freitag',
			'Saturday'    : 'Samstag',
			'Sun'         : 'So',
			'Mon'         : 'Mo',
			'Tue'         : 'Di',
			'Wed'         : 'Mi',
			'Thu'         : 'Do',
			'Fri'         : 'Fr',
			'Sat'         : 'Sa',

			/******************************** sort variants ********************************/
			'sortname'          : 'nach Name',
			'sortkind'          : 'nach Art',
			'sortsize'          : 'nach Größe',
			'sortdate'          : 'nach Datum',
			'sortFoldersFirst'  : 'Ordner zuerst',
			'sortperm'          : 'nach Berechtigung', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'nach Modus',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'nach Besitzer',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'nach Gruppe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'auch Baumansicht',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Neues Textdokument.txt', // added 10.11.2015
			'untitled folder'   : 'Neuer Ordner',   // added 10.11.2015
			'Archive'           : 'Neues Archiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Neue Datei.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Datei',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Bestätigung benötigt',
			'confirmRm'       : 'Sollen die Dateien gelöscht werden?<br>Vorgang ist endgültig!',
			'confirmRepl'     : 'Datei ersetzen?',
			'confirmRest'     : 'Vorhandenes Element durch das Element aus Mülleimer ersetzen?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nicht UTF-8 kodiert<br>Zu UTF-8 konvertieren?<br>Inhalte werden zu UTF-8 konvertiert bei Speicherung.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Die Zeichencodierung dieser Datei konnte nicht erkannt werden. Es muss vorübergehend in UTF-8 zur Bearbeitung konvertiert werden.<br> Bitte eine Zeichenkodierung dieser Datei auswählen.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Die Datei wurde geändert.<br>Änderungen gehen verloren wenn nicht gespeichert wird.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Sicher diese Elemente in den Mülleimer verschieben?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Sicher alle Elemente nach "$1" verschieben?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Alles bestätigen',
			'name'            : 'Name',
			'size'            : 'Größe',
			'perms'           : 'Berechtigungen',
			'modify'          : 'Geändert',
			'kind'            : 'Typ',
			'read'            : 'Lesen',
			'write'           : 'Schreiben',
			'noaccess'        : 'Kein Zugriff',
			'and'             : 'und',
			'unknown'         : 'unbekannt',
			'selectall'       : 'Alle Dateien auswählen',
			'selectfiles'     : 'Dateien auswählen',
			'selectffile'     : 'Erste Datei auswählen',
			'selectlfile'     : 'Letzte Datei auswählen',
			'viewlist'        : 'Spaltenansicht',
			'viewicons'       : 'Symbolansicht',
			'viewSmall'       : 'Kleine Icons', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium Icons', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Große Icons', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extragroße Icons', // from v2.1.39 added 22.5.2018
			'places'          : 'Favoriten',
			'calc'            : 'Berechne',
			'path'            : 'Pfad',
			'aliasfor'        : 'Verknüpfung zu',
			'locked'          : 'Gesperrt',
			'dim'             : 'Bildgröße',
			'files'           : 'Dateien',
			'folders'         : 'Ordner',
			'items'           : 'Objekte',
			'yes'             : 'ja',
			'no'              : 'nein',
			'link'            : 'Link',
			'searcresult'     : 'Suchergebnisse',
			'selected'        : 'Objekte ausgewählt',
			'about'           : 'Über',
			'shortcuts'       : 'Tastenkombinationen',
			'help'            : 'Hilfe',
			'webfm'           : 'Web-Dateiverwaltung',
			'ver'             : 'Fassung',
			'protocolver'     : 'Protokoll-Version',
			'homepage'        : 'Projekt-Webseite',
			'docs'            : 'Dokumentation',
			'github'          : 'Forke uns auf Github',
			'twitter'         : 'Folge uns auf twitter',
			'facebook'        : 'Begleite uns auf facebook',
			'team'            : 'Mannschaft',
			'chiefdev'        : 'Chefentwickler',
			'developer'       : 'Entwickler',
			'contributor'     : 'Unterstützer',
			'maintainer'      : 'Maintainer',
			'translator'      : 'Übersetzer',
			'icons'           : 'Symbole',
			'dontforget'      : 'und vergiss nicht .. morgen ist auch noch ein Tag ..',
			'shortcutsof'     : 'Tastenkombinationen deaktiviert',
			'dropFiles'       : 'Dateien hier ablegen',
			'or'              : 'oder',
			'selectForUpload' : 'Dateien zum Upload auswählen',
			'moveFiles'       : 'Dateien verschieben',
			'copyFiles'       : 'Dateien kopieren',
			'restoreFiles'    : 'Elemente wiederherstellen', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Lösche von Favoriten',
			'aspectRatio'     : 'Seitenverhältnis',
			'scale'           : 'Maßstab',
			'width'           : 'Breite',
			'height'          : 'Höhe',
			'resize'          : 'Größe ändern',
			'crop'            : 'Zuschneiden',
			'rotate'          : 'Drehen',
			'rotate-cw'       : 'Drehe 90° im Uhrzeigersinn',
			'rotate-ccw'      : 'Drehe 90° gegen Uhrzeigersinn',
			'degree'          : '°',
			'netMountDialogTitle' : 'verbinde Netzwerkspeicher', // added 18.04.2012
			'protocol'            : 'Protokoll', // added 18.04.2012
			'host'                : 'Gastgeber', // added 18.04.2012
			'port'                : 'Hafen', // added 18.04.2012
			'user'                : 'Benutzer', // added 18.04.2012
			'pass'                : 'Passwort', // added 18.04.2012
			'confirmUnmount'      : 'Soll "$1" ausgehängt werden',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Dateien in den Browser ziehen', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Dateien hier loslassen', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodierung', // from v2.1 added 19.12.2014
			'locale'          : 'Lokal',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Ziel: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Suche nach MIME-Typ', // from v2.1 added 22.5.2015
			'owner'           : 'Besitzer', // from v2.1 added 20.6.2015
			'group'           : 'Gruppe', // from v2.1 added 20.6.2015
			'other'           : 'Andere', // from v2.1 added 20.6.2015
			'execute'         : 'Ausführen', // from v2.1 added 20.6.2015
			'perm'            : 'Berechtigung', // from v2.1 added 20.6.2015
			'mode'            : 'Modus', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Der Ordner ist leer', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Der Ordner ist leer\\A Elemente durch Ziehen hinzufügen', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Der Ordner ist leer\\A Elemente durch langes Tippen hinzufügen', // from v2.1.6 added 30.12.2015
			'quality'         : 'Qualität', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatische Synchronisation',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Nach oben bewegen',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL-Link holen', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Ausgewählte Objekte ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Ordner-ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Offline-Zugriff erlauben', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Erneut anmelden', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Wird geladen...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'mehrere Dateien öffnen', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Es wird versucht die $1 Dateien zu öffnen .. sicher im Browser öffnen?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Kein Suchergebnis', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Datei wird bearbeitet.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 Objekt(e) ausgewählt.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 Objekte im Clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementelle Suche bezieht sich nur auf die aktuelle Ansicht.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Wiederherstellen', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 abgeschlossen', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontextmenü', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Seite umblättern', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume-Rootverzeichnisse', // from v2.1.16 added 16.9.2016
			'reset'           : 'Neustart', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Hintergrund Farbe', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Farbauswahl', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Raster', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ein', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Aus', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Keine Ergebnisse in der aktuellen Anzeige', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Die Ergebnisse der ersten Buchstabensuche sind in der aktuellen Ansicht leer.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text Bezeichnung', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 Minuten übrig', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Wiedereröffnen mit ausgewählter Codierung', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Speichern mit der gewählten Kodierung', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Verzeichnis auswählen', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Erster Buchstabe suche', // from v2.1.23 added 24.3.2017
			'presets'         : 'Voreinstellungen', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Zu viele Elemente auf einmal für den Mülleimer.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Textbereich', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Leere Ordner "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Es befinden sich keine Elemente im Ordner "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Einstellungen', // from v2.1.26 added 28.6.2017
			'language'        : 'Spracheinstellungen', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialisiere die Einstellungen, welche in diesem Browser gespeichert sind', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbareinstellung', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 Zeichen übrig',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 Zeilen übrig.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Summe', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Ungefähre Dateigröße', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fokussierung auf das Element Dialog mit Mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Auswählen', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Aktion bei der Auswahl der Datei', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Öffnen mit dem zuletzt verwendeten Editor', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Auswahl umkehren', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Sicher $1 ausgewählte Elemente in $2 umbenennen?<br>Rückgängig nicht möglich!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Stapelumbenennung', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nummer', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Vorzeichen hinzufügen', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Nachzeichen hinzufügen', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Erweiterung ändern', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Spalteneinstellungen (Listenansicht)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Alle Änderungen werden sofort im Archiv angewendet.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Alle Änderungen werden nicht angewendet bis dieses Volume entfernt wird.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Die folgenden Datenträger, die auf diesem Datenträger eingehängt sind, werden ebenfalls ausgehängt. Sicher dass alle aushängt werden sollen?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Auswahl Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Datei-Hash-Algorithmen', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info-Elemente (Auswahl-Info-Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Drücken Sie erneut, um zu beenden.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Symbolleiste', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Arbeitsplatz', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Alle', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icongröße (Symbolansicht)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Öffne Editorfenster in voller Größe', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Aktuell keine API zur Bearbeitung verfügbar, bitte auf Webseite bearbeiten', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Um zu speichern nach der Bearbeitung Element entweder mit URL hochladen oder mit herunter geladener Datei', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Bearbeiten auf Seite $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrationen', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Diese Software hat folgende externe Dienste integriert. Vor Anwendung bitte die jeweiligen Nutzungsbedingungen usw. beachten', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Zeige versteckte Elemente', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Verberge versteckte Elemente', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Zeige/Verberge versteckte Elemente', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Dateiarten bei "Neue Datei" aktivieren', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Art der Textdatei', // from v2.1.41 added 7.8.2018
			'add'             : 'Neu', // from v2.1.41 added 7.8.2018
			'theme'           : 'Thema', // from v2.1.43 added 19.10.2018
			'default'         : 'Standard', // from v2.1.43 added 19.10.2018
			'description'     : 'Beschreibung', // from v2.1.43 added 19.10.2018
			'website'         : 'Webseite', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'Lizenz', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Dieses Element kann nicht gespeichert werden. Um Änderungen nicht zu verlieren, muss es auf den lokalen PC exportiert werden', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Doppelt auf Datei klicken um auszuwählen', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Gesamter Bildschirm', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unbekannt',
			'kindRoot'        : 'Stammverzeichnis', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Ordner',
			'kindSelects'     : 'Auswahlkriterien', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Verknüpfung',
			'kindAliasBroken' : 'Defekte Verknüpfung',
			// applications
			'kindApp'         : 'Programm',
			'kindPostscript'  : 'Postscript-Dokument',
			'kindMsOffice'    : 'MS Office-Dokument',
			'kindMsWord'      : 'MS Word-Dokument',
			'kindMsExcel'     : 'MS Excel-Dokument',
			'kindMsPP'        : 'MS Powerpoint-Präsentation',
			'kindOO'          : 'Open Office-Dokument',
			'kindAppFlash'    : 'Flash',
			'kindPDF'         : 'Portables Dokumentenformat (PDF)',
			'kindTorrent'     : 'Bittorrent-Datei',
			'kind7z'          : '7z-Archiv',
			'kindTAR'         : 'TAR-Archiv',
			'kindGZIP'        : 'GZIP-Archiv',
			'kindBZIP'        : 'BZIP-Archiv',
			'kindXZ'          : 'XZ-Archiv',
			'kindZIP'         : 'ZIP-Archiv',
			'kindRAR'         : 'RAR-Archiv',
			'kindJAR'         : 'Java JAR-Datei',
			'kindTTF'         : 'True Type-Schrift',
			'kindOTF'         : 'Open Type-Schrift',
			'kindRPM'         : 'RPM-Paket',
			// texts
			'kindText'        : 'Text-Dokument',
			'kindTextPlain'   : 'Text-Dokument',
			'kindPHP'         : 'PHP-Quelltext',
			'kindCSS'         : 'CSS Stilvorlage',
			'kindHTML'        : 'HTML-Dokument',
			'kindJS'          : 'Javascript-Quelltext',
			'kindRTF'         : 'Formatierte Textdatei',
			'kindC'           : 'C-Quelltext',
			'kindCHeader'     : 'C Header-Quelltext',
			'kindCPP'         : 'C++ Quelltext',
			'kindCPPHeader'   : 'C++ Header-Quelltext',
			'kindShell'       : 'Unix-Shell-Skript',
			'kindPython'      : 'Python-Quelltext',
			'kindJava'        : 'Java-Quelltext',
			'kindRuby'        : 'Ruby-Quelltext',
			'kindPerl'        : 'Perl Script',
			'kindSQL'         : 'SQL-Quelltext',
			'kindXML'         : 'XML-Dokument',
			'kindAWK'         : 'AWK-Quelltext',
			'kindCSV'         : 'Kommagetrennte Daten',
			'kindDOCBOOK'     : 'Docbook XML-Dokument',
			'kindMarkdown'    : 'Markdown-Text', // added 20.7.2015
			// images
			'kindImage'       : 'Bild',
			'kindBMP'         : 'Bitmap-Bild',
			'kindJPEG'        : 'JPEG-Bild',
			'kindGIF'         : 'GIF-Bild',
			'kindPNG'         : 'PNG-Bild',
			'kindTIFF'        : 'TIFF-Bild',
			'kindTGA'         : 'TGA-Bild',
			'kindPSD'         : 'Adobe Photoshop-Dokument',
			'kindXBITMAP'     : 'X Bitmap-Bild',
			'kindPXM'         : 'Pixelmator-Bild',
			// media
			'kindAudio'       : 'Audiodatei',
			'kindAudioMPEG'   : 'MPEG Audio',
			'kindAudioMPEG4'  : 'MPEG-4 Audio',
			'kindAudioMIDI'   : 'MIDI Audio',
			'kindAudioOGG'    : 'Ogg Vorbis Audio',
			'kindAudioWAV'    : 'WAV Audio',
			'AudioPlaylist'   : 'MP3-Playlist',
			'kindVideo'       : 'Videodatei',
			'kindVideoDV'     : 'DV Film',
			'kindVideoMPEG'   : 'MPEG Film',
			'kindVideoMPEG4'  : 'MPEG4 Film',
			'kindVideoAVI'    : 'AVI Film',
			'kindVideoMOV'    : 'QuickTime Film',
			'kindVideoWM'     : 'Windows Media Film',
			'kindVideoFlash'  : 'Flash Film',
			'kindVideoMKV'    : 'Matroska Film',
			'kindVideoOGG'    : 'Ogg Film'
		}
	};
}));lib/js/i18n/elfinder.vi.js000064400000110713147361034410011256 0ustar00/**
 * Ngôn ngữ Việt Nam translation
 * @author Chung Thủy f <chungthuyf@gmail.com>
 * @author Son Nguyen <son.nguyen@catalyst.net.nz>
 * @author Nguyễn Trần Chung <admin@chungnguyen.xyz>
 * @version 2022-03-04
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.vi = {
		translator : 'Chung Thủy f &lt;chungthuyf@gmail.com&gt;, Son Nguyen &lt;son.nguyen@catalyst.net.nz&gt;, Nguyễn Trần Chung &lt;admin@chungnguyen.xyz&gt;',
		language   : 'Ngôn ngữ Việt Nam',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 04.03.2022 11:11
		fancyDateFormat : '$1 H:i', // will show like: Hôm nay 11:11
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220304-111107
		messages   : {
			'getShareText' : 'Đăng lại',
			'Editor ': 'Trình chỉnh sửa mã',

			/********************************** errors **********************************/
			'error'                : 'Lỗi',
			'errUnknown'           : 'Lỗi không xác định được.',
			'errUnknownCmd'        : 'Lỗi không rõ lệnh.',
			'errJqui'              : 'Cấu hình jQueryUI không hợp lệ. Các thành phần lựa chọn, kéo và thả phải được bao gồm.',
			'errNode'              : 'elFinder đòi hỏi phần tử DOM phải được tạo ra.',
			'errURL'               : 'Cấu hình elFinder không hợp lệ! URL không được thiết lập tùy chọn.',
			'errAccess'            : 'Truy cập bị từ chối.',
			'errConnect'           : 'Không thể kết nối với backend.',
			'errAbort'             : 'Kết nối bị hủy bỏ.',
			'errTimeout'           : 'Thời gian chờ kết nối đã hết.',
			'errNotFound'          : 'Backend không tìm thấy.',
			'errResponse'          : 'Phản hồi backend không hợp lệ.',
			'errConf'              : 'Cấu hình backend không hợp lệ.',
			'errJSON'              : 'Mô-đun PHP JSON không được cài đặt.',
			'errNoVolumes'         : 'Tập có thể đọc không có sẵn.',
			'errCmdParams'         : 'Thông số không hợp lệ cho lệnh "$1".',
			'errDataNotJSON'       : 'Dữ liệu không phải là JSON.',
			'errDataEmpty'         : 'Dữ liệu trống.',
			'errCmdReq'            : 'Backend đòi hỏi tên lệnh.',
			'errOpen'              : 'Không thể mở "$1".',
			'errNotFolder'         : 'Đối tượng không phải là một thư mục.',
			'errNotFile'           : 'Đối tượng không phải là một tập tin.',
			'errRead'              : 'Không thể đọc "$1".',
			'errWrite'             : 'Không thể ghi vào "$1".',
			'errPerm'              : 'Quyền bị từ chối.',
			'errLocked'            : '"$1" đã bị khóa và không thể đổi tên, di chuyển hoặc loại bỏ.',
			'errExists'            : 'Tập tin có tên "$1" đã tồn tại.',
			'errInvName'           : 'Tên tập tin không hợp lệ.',
			'errInvDirname'        : 'Tên thư mục không hợp lệ.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Thư mục không tìm thấy.',
			'errFileNotFound'      : 'Tập tin không tìm thấy.',
			'errTrgFolderNotFound' : 'Thư mục đích "$1" không được tìm thấy.',
			'errPopup'             : 'Trình duyệt ngăn chặn mở cửa sổ popup.',
			'errMkdir'             : 'Không thể tạo thư mục "$1".',
			'errMkfile'            : 'Không thể tạo tập tin "$1".',
			'errRename'            : 'Không thể đổi tên "$1".',
			'errCopyFrom'          : 'Sao chép tập tin từ tập "$1" không được phép.',
			'errCopyTo'            : 'Sao chép tập tin tới tập "$1" không được phép.',
			'errMkOutLink'         : 'Không thể tạo liên kết ra bên ngoài volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Tải lên báo lỗi.',  // old name - errUploadCommon
			'errUploadFile'        : 'Không thể tải lên "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Không thấy tập tin nào để tải lên.',
			'errUploadTotalSize'   : 'Dữ liệu vượt quá kích thước tối đa cho phép.', // old name - errMaxSize
			'errUploadFileSize'    : 'Tập tin vượt quá kích thước tối đa cho phép.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Kiểu tập tin không được phép.',
			'errUploadTransfer'    : 'Lỗi khi truyền "$1".',
			'errUploadTemp'        : 'Không thể tạo thư mục tạm để tải lên.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Đối tượng "$1" đã tồn tại ở vị trí này và không thể thay thế bằng đối tượng với loại khác.', // new
			'errReplace'           : 'Không thể thay thế "$1".',
			'errSave'              : 'Không thể lưu "$1".',
			'errCopy'              : 'Không thể sao chép "$1".',
			'errMove'              : 'Không thể chuyển "$1".',
			'errCopyInItself'      : 'Không thể sao chép "$1" vào chính nó.',
			'errRm'                : 'Không thể xóa "$1".',
			'errTrash'             : 'Không thể cho vào thùng rác.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Không thể xóa tệp nguồn.',
			'errExtract'           : 'Không thể giải nén các tập tin từ"$1".',
			'errArchive'           : 'Không thể tạo ra lưu trữ.',
			'errArcType'           : 'Loại lưu trữ không được hỗ trợ.',
			'errNoArchive'         : 'Tập tin không phải là lưu trữ hoặc có kiểu lưu trữ không được hỗ trợ.',
			'errCmdNoSupport'      : 'Backend không hỗ trợ lệnh này.',
			'errReplByChild'       : 'Thư mục "$1" không thể được thay thế bằng một mục con mà nó chứa.',
			'errArcSymlinks'       : 'Vì lý do bảo mật, từ chối giải nén tập tin lưu trữ có chứa liên kết mềm.', // edited 24.06.2012
			'errArcMaxSize'        : 'Tập tin lưu trữ vượt quá kích thước tối đa cho phép.',
			'errResize'            : 'Không thể thay đổi kích thước "$1".',
			'errResizeDegree'      : 'Độ xoay không hợp lệ.',  // added 7.3.2013
			'errResizeRotate'      : 'Không thể xoay hình ảnh.',  // added 7.3.2013
			'errResizeSize'        : 'Kích thước hình ảnh không hợp lệ.',  // added 7.3.2013
			'errResizeNoChange'    : 'Kích thước hình ảnh không thay đổi.',  // added 7.3.2013
			'errUsupportType'      : 'Loại tập tin không được hỗ trợ.',
			'errNotUTF8Content'    : 'Tệp "$1" không phải bộ ký tự UTF-8 nên không thể chỉnh sửa.',  // added 9.11.2011
			'errNetMount'          : 'Không thể gắn kết "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Giao thức không được hỗ trợ.',     // added 17.04.2012
			'errNetMountFailed'    : 'Gắn (kết nối) thất bại.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Yêu cầu máy chủ.', // added 18.04.2012
			'errSessionExpires'    : 'Phiên của bạn đã hết hạn do không hoạt động.',
			'errCreatingTempDir'   : 'Không thể tạo thư mục tạm thời: "$1"',
			'errFtpDownloadFile'   : 'Không thể tải xuống tệp từ FTP: "$1"',
			'errFtpUploadFile'     : 'Không thể tải tệp lên FTP: "$1"',
			'errFtpMkdir'          : 'Không thể tạo thư mục từ xa trên FTP: "$1"',
			'errArchiveExec'       : 'Lỗi trong khi lưu trữ tệp: "$1"',
			'errExtractExec'       : 'Lỗi trong khi giải nén tập tin: "$1"',
			'errNetUnMount'        : 'Không thể gỡ gắn (liên kết).', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Không thể chuyển đổi thành UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Hãy thử trình duyệt mới hơn (vì trình duyệt hiện tại có vẻ cũ nên không hỗ trợ  tải lên thư mục).', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Đã hết thời gian trong khi tìm kiếm "$1". Kết quả tìm kiếm là một phần.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Cần ủy quyền lại.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Số lượng tối đa của các mục có thể chọn là $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Không thể khôi phục từ thùng rác. Không thể xác định đích khôi phục.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Không tìm thấy trình chỉnh sửa cho loại tệp này.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Lỗi xảy ra ở phía máy chủ.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Không thể làm rỗng thư mục "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Có thêm $1 lỗi.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Bạn có thể tạo tối đa $ 1 thư mục cùng một lúc.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Tạo tập tin nén',
			'cmdback'      : 'Trở lại',
			'cmdcopy'      : 'Sao chép',
			'cmdcut'       : 'Cắt',
			'cmddownload'  : 'Tải về',
			'cmdduplicate' : 'Bản sao',
			'cmdedit'      : 'Sửa tập tin',
			'cmdextract'   : 'Giải nén tập tin',
			'cmdforward'   : 'Trước',
			'cmdgetfile'   : 'Chọn tập tin',
			'cmdhelp'      : 'Giới thiệu phần mềm',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Thông tin',
			'cmdmkdir'     : 'Thư mục',
			'cmdmkdirin'   : 'Vào thư mục mới', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Tạo tập tin Text',
			'cmdopen'      : 'Mở',
			'cmdpaste'     : 'Dán',
			'cmdquicklook' : 'Xem trước',
			'cmdreload'    : 'Nạp lại',
			'cmdrename'    : 'Đổi tên',
			'cmdrm'        : 'Xóa',
			'cmdtrash'     : 'Vào thùng rác', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Khôi phục', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Tìm tập tin',
			'cmdup'        : 'Đi tới thư mục mẹ',
			'cmdupload'    : 'Tải tập tin lên',
			'cmdview'      : 'Xem',
			'cmdresize'    : 'Thay đổi kích thước và xoay',
			'cmdsort'      : 'Sắp xếp',
			'cmdnetmount'  : 'Gắn kết khối lượng mạng', // added 18.04.2012
			'cmdnetunmount': 'Gỡ mount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Đến địa điểm', // added 28.12.2014
			'cmdchmod'     : 'Thay đổi chế độ', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Mở một thư mục', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Đặt lại chiều rộng cột', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Toàn màn hình', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Di chuyển', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Làm rỗng thư mục', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Hủy bỏ (hoàn tác)', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Làm lại', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Sở thích', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Chọn tất cả', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Không chọn gì', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Chọn ngược lại', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Mở trong cửa sổ mới', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ẩn (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Đóng',
			'btnSave'   : 'Lưu',
			'btnRm'     : 'Gỡ bỏ',
			'btnApply'  : 'Áp dụng',
			'btnCancel' : 'Hủy bỏ',
			'btnNo'     : 'Không',
			'btnYes'    : 'Đồng ý',
			'btnMount'  : 'Gắn kết',  // added 18.04.2012
			'btnApprove': 'Đạt được $ 1 và phê duyệt', // from v2.1 added 26.04.2012
			'btnUnmount': 'Tháo gỡ', // from v2.1 added 30.04.2012
			'btnConv'   : 'Chuyển thành', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Đây',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Âm lượng',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tất cả',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Loại MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Tên tệp',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Lưu & Đóng', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sao lưu', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Đổi tên',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Đổi tên (Tất cả)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Trước đó ($ 1 / $ 2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Tiếp theo ($ 1 / $ 2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Lưu thành', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Mở thư mục',
			'ntffile'     : 'Mở tập tin',
			'ntfreload'   : 'Nạp lại nội dung thư mục',
			'ntfmkdir'    : 'Tạo thư mục',
			'ntfmkfile'   : 'Tạo tập tin',
			'ntfrm'       : 'Xóa tập tin',
			'ntfcopy'     : 'Sao chép tập tin',
			'ntfmove'     : 'Di chuyển tập tin',
			'ntfprepare'  : 'Chuẩn bị để sao chép các tập tin',
			'ntfrename'   : 'Đổi tên tập tin',
			'ntfupload'   : 'Tải tập tin lên',
			'ntfdownload' : 'Tải tập tin',
			'ntfsave'     : 'Lưu tập tin',
			'ntfarchive'  : 'Tạo tập tin nén',
			'ntfextract'  : 'Giải nén tập tin',
			'ntfsearch'   : 'Tìm kiếm tập tin',
			'ntfresize'   : 'Thay đổi kích thước hình ảnh',
			'ntfsmth'     : 'Doing something >_<',
			'ntfloadimg'  : 'Đang tải hình ảnh',
			'ntfnetmount' : 'Gắn kết khối lượng mạng', // added 18.04.2012
			'ntfnetunmount': 'Ngắt kết nối âm lượng mạng', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Nhận kích thước hình ảnh', // added 20.05.2013
			'ntfreaddir'  : 'Đọc thông tin thư mục', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Lấy URL của liên kết', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Thay đổi chế độ tệp', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Xác minh tên tệp tải lên', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Tạo một tệp để tải xuống', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Nhận thông tin đường dẫn', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Xử lý tệp đã tải lên', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Ném vào thùng rác', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Đang khôi phục từ thùng rác', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kiểm tra thư mục đích', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Hoàn tác hoạt động trước đó', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Làm lại hoàn tác trước đó', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kiểm tra nội dung', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Rác', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Chưa biết',
			'Today'       : 'Hôm nay',
			'Yesterday'   : 'Hôm qua',
			'msJan'       : 'Tháng 1',
			'msFeb'       : 'Tháng 2',
			'msMar'       : 'Tháng 3',
			'msApr'       : 'Tháng 4',
			'msMay'       : 'Tháng 5',
			'msJun'       : 'Tháng 6',
			'msJul'       : 'Tháng 7',
			'msAug'       : 'Tháng 8',
			'msSep'       : 'Tháng 9',
			'msOct'       : 'Tháng 10',
			'msNov'       : 'Tháng 11',
			'msDec'       : 'Tháng 12',
			'January'     : 'Tháng 1',
			'February'    : 'Tháng 2',
			'March'       : 'Tháng 3',
			'April'       : 'Tháng 4',
			'May'         : 'Tháng 5',
			'June'        : 'Tháng 6',
			'July'        : 'Tháng 7',
			'August'      : 'Tháng 8',
			'September'   : 'Tháng 9',
			'October'     : 'Tháng 10',
			'November'    : 'Tháng 11',
			'December'    : 'Tháng 12',
			'Sunday'      : 'Chủ nhật',
			'Monday'      : 'Thứ 2',
			'Tuesday'     : 'Thứ 3',
			'Wednesday'   : 'Thứ 4',
			'Thursday'    : 'Thứ 5',
			'Friday'      : 'Thứ 6',
			'Saturday'    : 'Thứ 7',
			'Sun'         : 'Chủ nhật',
			'Mon'         : 'Thứ 2',
			'Tue'         : 'Thứ 3',
			'Wed'         : 'Thứ 4',
			'Thu'         : 'Thứ 5',
			'Fri'         : 'Thứ 6',
			'Sat'         : 'Thứ 7',

			/******************************** sort variants ********************************/
			'sortname'          : 'theo tên',
			'sortkind'          : 'theo loại',
			'sortsize'          : 'theo kích cỡ',
			'sortdate'          : 'theo ngày',
			'sortFoldersFirst'  : 'Thư mục đầu tiên',
			'sortperm'          : 'theo quyền hạn', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'theo chế độ',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'theo người tạo',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'theo nhóm',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Ngoài ra Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Tập tin mới.txt', // added 10.11.2015
			'untitled folder'   : 'Thư mục mới',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Tập tin mới.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$ 1: Tệp',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Yêu cầu xác nhận',
			'confirmRm'       : 'Bạn có chắc chắn muốn xóa vĩnh viễn các mục?<br/>  Điều này không thể được hoàn tác!',
			'confirmRepl'     : 'Thay tập tin cũ bằng tập tin mới? (Nếu nó chứa các thư mục, nó sẽ được hợp nhất. Để sao lưu và thay thế, chọn Sao lưu.)',
			'confirmRest'     : 'Thay thế mục hiện có bằng một mục trong thùng rác?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Không có trong UTF-8 <br/> Chuyển đổi thành UTF-8? <br/> Nội dung trở thành UTF-8 bằng cách lưu sau khi chuyển đổi.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Không thể phát hiện mã hóa ký tự của tệp này. Nó cần tạm thời chuyển đổi thành UTF-8 để chỉnh sửa. <br/> Vui lòng chọn mã hóa ký tự của tệp này.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Nó đã được sửa đổi. <br/> Sẽ mất công nếu bạn không lưu các thay đổi.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Bạn có chắc chắn muốn chuyển các mục vào thùng rác?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Bạn có chắc chắn muốn chuyển các mục vào "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Áp dụng cho tất cả',
			'name'            : 'Tên',
			'size'            : 'Kích cỡ',
			'perms'           : 'Quyền',
			'modify'          : 'Sửa đổi',
			'kind'            : 'Loại',
			'read'            : 'đọc',
			'write'           : 'viết',
			'noaccess'        : 'không truy cập',
			'and'             : 'và',
			'unknown'         : 'không xác định',
			'selectall'       : 'Chọn tất cả các mục',
			'selectfiles'     : 'Chọn các mục',
			'selectffile'     : 'Chọn mục đầu tiên',
			'selectlfile'     : 'Chọn mục cuối cùng',
			'viewlist'        : 'Hiển thị danh sách',
			'viewicons'       : 'Hiển thị biểu tượng',
			'viewSmall'       : 'Biểu tượng nhỏ', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Biểu tượng vừa', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Biểu tượng lớn', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Biểu tượng cực lớn', // from v2.1.39 added 22.5.2018
			'places'          : 'Nơi',
			'calc'            : 'Tính toán',
			'path'            : 'Đường dẫn',
			'aliasfor'        : 'Bí danh cho',
			'locked'          : 'Đã khóa',
			'dim'             : 'Kích thước',
			'files'           : 'Tệp',
			'folders'         : 'Thư mục',
			'items'           : 'vật phẩm',
			'yes'             : 'Vâng',
			'no'              : 'không',
			'link'            : 'Liên kết',
			'searcresult'     : 'Kết quả tìm kiếm',
			'selected'        : 'mục đã chọn',
			'about'           : 'Về',
			'shortcuts'       : 'Lối tắt',
			'help'            : 'Giúp đỡ',
			'webfm'           : 'Trình quản lý tệp web',
			'ver'             : 'Phiên bản',
			'protocolver'     : 'phiên bản protocol',
			'homepage'        : 'Trang chủ dự án',
			'docs'            : 'Tài liệu',
			'github'          : 'Theo dõi chúng tôi trên GitHub',
			'twitter'         : 'Theo dõi chúng tôi trên Twitter',
			'facebook'        : 'Theo dõi chúng tôi trên Facebook',
			'team'            : 'Đội ngũ',
			'chiefdev'        : 'Trùm sò',
			'developer'       : 'người phát triển',
			'contributor'     : 'người đóng góp',
			'maintainer'      : 'người bảo trì',
			'translator'      : 'người dịch',
			'icons'           : 'Biểu tượng',
			'dontforget'      : 'và đừng quên lấy khăn tắm của bạn',
			'shortcutsof'     : 'Các phím tắt bị tắt',
			'dropFiles'       : 'Thả tệp vào đây',
			'or'              : 'hoặc',
			'selectForUpload' : 'Chọn tệp',
			'moveFiles'       : 'Di chuyển các mục',
			'copyFiles'       : 'Sao chép các mục',
			'restoreFiles'    : 'Khôi mục các mục', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Xóa khỏi địa điểm',
			'aspectRatio'     : 'Tỉ lệ khung hình',
			'scale'           : 'Tỉ lệ',
			'width'           : 'Rộng',
			'height'          : 'Cao',
			'resize'          : 'Thay đổi kích cỡ',
			'crop'            : 'Cắt',
			'rotate'          : 'Xoay',
			'rotate-cw'       : 'Xoay 90 độ CW',
			'rotate-ccw'      : 'Xoay 90 độ CCW',
			'degree'          : '°',
			'netMountDialogTitle' : 'Gắn kết khối lượng mạng', // added 18.04.2012
			'protocol'            : 'Giao thức', // added 18.04.2012
			'host'                : 'Chủ nhà', // added 18.04.2012
			'port'                : 'Hải cảng', // added 18.04.2012
			'user'                : 'Người sử dụng', // added 18.04.2012
			'pass'                : 'Mật khẩu', // added 18.04.2012
			'confirmUnmount'      : 'Bạn có ngắt kết nối $ 1 không?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Thả hoặc dán tệp từ trình duyệt', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Thả tệp, dán URL hoặc hình ảnh (khay nhớ tạm) vào đây', // from v2.1 added 07.04.2014
			'encoding'        : 'Mã hóa', // from v2.1 added 19.12.2014
			'locale'          : 'Địa phương',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Mục tiêu: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Tìm kiếm theo kiểu tệp (MIME)', // from v2.1 added 22.5.2015
			'owner'           : 'Chủ sở hữu', // from v2.1 added 20.6.2015
			'group'           : 'Nhóm', // from v2.1 added 20.6.2015
			'other'           : 'Khác', // from v2.1 added 20.6.2015
			'execute'         : 'Thực thi', // from v2.1 added 20.6.2015
			'perm'            : 'Quyền', // from v2.1 added 20.6.2015
			'mode'            : 'Chế độ', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Thư mục trống', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Thư mục trống\\A Kéo thả vào đây để thêm các mục', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Thư mục trống\\A Nhấn giữ để thêm các mục', // from v2.1.6 added 30.12.2015
			'quality'         : 'Chất lượng', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Tự động động bộ',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Di chuyển lên',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Lấy liên kết URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Các mục đã chọn ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID thư mục', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Cho phép truy cập ngoại tuyến', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Xác thực lại', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Đang tải...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Mở nhiều tập tin', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Bạn đang cố mở các tệp $ 1. Bạn có chắc chắn muốn mở trong trình duyệt không?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Kết quả tìm kiếm trống trong mục tiêu tìm kiếm.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Nó là một tập tin đang chỉnh sửa.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Bạn đã chọn $ 1 mục.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Bạn có $ 1 mục trong khay nhớ tạm.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Tìm kiếm gia tăng chỉ từ hiển thị hiện tại.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Phục hồi', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 hoàn thành', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Trình đơn ngữ cảnh', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Chuyển trang', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Khối lượng rễ', // from v2.1.16 added 16.9.2016
			'reset'           : 'Đặt lại', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Màu nền', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Chọn màu', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Lưới 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Đã bật', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Đã tắt', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Kết quả tìm kiếm trống trong chế độ xem hiện tại. \\ APress [Enter] để mở rộng mục tiêu tìm kiếm.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Kết quả tìm kiếm thư đầu tiên là trống trong chế độ xem hiện tại.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Nhãn văn bản', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'Còn $ 1 phút', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Mở lại với mã hóa đã chọn', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Lưu với mã hóa đã chọn', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Chọn thư mục', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Tìm kiếm chữ cái đầu tiên', // from v2.1.23 added 24.3.2017
			'presets'         : 'Đặt trước', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Có quá nhiều mục vì vậy không thể cho vào thùng rác.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Làm trống thư mục "$ 1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Không có mục nào trong thư mục "$ 1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Sự ưa thích', // from v2.1.26 added 28.6.2017
			'language'        : 'Ngôn ngữ', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Khởi tạo các cài đặt được lưu trong trình duyệt này', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Cài đặt thanh công cụ', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $ 1 ký tự còn lại.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $ 1 dòng còn lại.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Tổng', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Kích thước tệp thô', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Tập trung vào thành phần của hộp thoại bằng cách di chuột qua',  // from v2.1.30 added 2.11.2017
			'select'          : 'Lựa chọn', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Hành động khi chọn tệp', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Mở bằng trình chỉnh sửa được sử dụng lần trước', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Lựa chọn đối nghịch', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Bạn có chắc chắn muốn đổi tên $ 1 các mục đã chọn như $ 2 không? <br/> Không thể hoàn tác thao tác này!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Đổi tên hàng loạt', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Số', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Thêm tiền tố', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Thêm hậu tố', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Thay đổi phần mở rộng', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Cài đặt cột (Chế độ xem danh sách)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Tất cả các thay đổi sẽ phản ánh ngay lập tức vào kho lưu trữ.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Mọi thay đổi sẽ không phản ánh cho đến khi hủy gắn ổ đĩa này.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : '(Các) tập sau được gắn trên tập này cũng đã được ngắt kết nối. Bạn có chắc chắn để ngắt kết nối nó không?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Thông tin lựa chọn', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Các thuật toán để hiển thị hàm băm của tệp', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Mục thông tin (Bảng thông tin lựa chọn)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Nhấn một lần nữa để thoát.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Thanh công cụ', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Không gian làm việc', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Hộp thoại', // from v2.1.38 added 4.4.2018
			'all'             : 'Tất cả', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Kích thước biểu tượng (Chế độ xem biểu tượng)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Mở cửa sổ trình chỉnh sửa tối đa', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Bởi vì chuyển đổi bằng API hiện không khả dụng, vui lòng chuyển đổi trên trang web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Sau khi chuyển đổi, bạn phải tải lên với URL mục hoặc tệp đã tải xuống để lưu tệp đã chuyển đổi.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Chuyển đổi trên trang web của $ 1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Tích hợp', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'ElFinder này được tích hợp các dịch vụ bên ngoài sau. Vui lòng kiểm tra các điều khoản sử dụng, chính sách bảo mật, v.v. trước khi sử dụng.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Hiển thị các mục ẩn', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ẩn các mục ẩn', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Hiển thị / Ẩn các mục ẩn', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Loại tệp để bật với "Tệp mới"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Loại tệp văn bản', // from v2.1.41 added 7.8.2018
			'add'             : 'Thêm vào', // from v2.1.41 added 7.8.2018
			'theme'           : 'Chủ đề', // from v2.1.43 added 19.10.2018
			'default'         : 'Mặc định', // from v2.1.43 added 19.10.2018
			'description'     : 'Sự miêu tả', // from v2.1.43 added 19.10.2018
			'website'         : 'Trang mạng', // from v2.1.43 added 19.10.2018
			'author'          : 'Tác giả', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Giấy phép', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Không thể lưu mục này. Để tránh mất các chỉnh sửa, bạn cần xuất sang PC của mình.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Nhấp đúp vào tệp để chọn nó.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Sử dụng chế độ toàn màn hình', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'không xác định',
			'kindRoot'        : 'Khối lượng gốc', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Thư mục',
			'kindSelects'     : 'Lựa chọn', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Bí danh',
			'kindAliasBroken' : 'Bí danh bị hỏng',
			// applications
			'kindApp'         : 'Ứng dụng',
			'kindPostscript'  : 'Tài liệu tái bút',
			'kindMsOffice'    : 'Tài liệu Microsoft Office',
			'kindMsWord'      : 'Tài liệu Microsoft Word',
			'kindMsExcel'     : 'Tài liệu Microsoft Excel',
			'kindMsPP'        : 'Bản trình bày Microsoft Powerpoint',
			'kindOO'          : 'Mở tài liệu Office',
			'kindAppFlash'    : 'Ứng dụng flash',
			'kindPDF'         : 'Định dạng tài liệu di động (PDF)',
			'kindTorrent'     : 'Tệp bittorrent',
			'kind7z'          : 'Kho lưu trữ 7z',
			'kindTAR'         : 'TAR lưu trữ',
			'kindGZIP'        : 'Kho lưu trữ GZIP',
			'kindBZIP'        : 'Kho lưu trữ BZIP',
			'kindXZ'          : 'Kho lưu trữ XZ',
			'kindZIP'         : 'Kho lưu trữ ZIP',
			'kindRAR'         : 'Kho lưu trữ RAR',
			'kindJAR'         : 'Tệp Java JAR',
			'kindTTF'         : 'Phông chữ True Type',
			'kindOTF'         : 'Mở loại phông chữ',
			'kindRPM'         : 'Gói RPM',
			// texts
			'kindText'        : 'Tai liệu kiểm tra',
			'kindTextPlain'   : 'Văn bản thô',
			'kindPHP'         : 'Nguồn PHP',
			'kindCSS'         : 'Bảng kiểu xếp tầng',
			'kindHTML'        : 'Tài liệu HTML',
			'kindJS'          : 'Nguồn Javascript',
			'kindRTF'         : 'Định dạng văn bản phong phú',
			'kindC'           : 'Nguồn C',
			'kindCHeader'     : 'Nguồn tiêu đề C',
			'kindCPP'         : 'Nguồn C ++',
			'kindCPPHeader'   : 'Nguồn tiêu đề C ++',
			'kindShell'       : 'Tập lệnh shell Unix',
			'kindPython'      : 'Nguồn Python',
			'kindJava'        : 'Nguồn Java',
			'kindRuby'        : 'Nguồn Ruby',
			'kindPerl'        : 'Tập lệnh Perl',
			'kindSQL'         : 'Nguồn SQL',
			'kindXML'         : 'Tài liệu XML',
			'kindAWK'         : 'Nguồn AWK',
			'kindCSV'         : 'Các giá trị được phân tách bằng dấu phẩy',
			'kindDOCBOOK'     : 'Tài liệu XML của Docbook',
			'kindMarkdown'    : 'Văn bản đánh dấu', // added 20.7.2015
			// images
			'kindImage'       : 'Hình ảnh',
			'kindBMP'         : 'Hình ảnh BMP',
			'kindJPEG'        : 'Hình ảnh JPEG',
			'kindGIF'         : 'Ảnh GIF',
			'kindPNG'         : 'Hình ảnh PNG',
			'kindTIFF'        : 'Hình ảnh TIFF',
			'kindTGA'         : 'Hình ảnh TGA',
			'kindPSD'         : 'Hình ảnh Adobe Photoshop',
			'kindXBITMAP'     : 'Hình ảnh bitmap X',
			'kindPXM'         : 'Hình ảnh Pixelmator',
			// media
			'kindAudio'       : 'Phương tiện âm thanh',
			'kindAudioMPEG'   : 'Âm thanh MPEG',
			'kindAudioMPEG4'  : 'Âm thanh MPEG-4',
			'kindAudioMIDI'   : 'Âm thanh MIDI',
			'kindAudioOGG'    : 'Âm thanh Ogg Vorbis',
			'kindAudioWAV'    : 'Âm thanh WAV',
			'AudioPlaylist'   : 'Danh sách nhạc MP3',
			'kindVideo'       : 'Phương tiện video',
			'kindVideoDV'     : 'Phim DV',
			'kindVideoMPEG'   : 'Phim MPEG',
			'kindVideoMPEG4'  : 'Phim MPEG-4',
			'kindVideoAVI'    : 'Phim AVI',
			'kindVideoMOV'    : 'Phim thời gian nhanh',
			'kindVideoWM'     : 'Phim Windows Media',
			'kindVideoFlash'  : 'Phim flash',
			'kindVideoMKV'    : 'Phim matroska',
			'kindVideoOGG'    : 'Phim ogg'
		}
	};
}));

lib/js/i18n/elfinder.tr.js000064400000103226147361034410011266 0ustar00/**
 * Türkçe translation
 * @author I.Taskinoglu & A.Kaya <alikaya@armsyazilim.com>
 * @author Abdullah ELEN <abdullahelen@msn.com>
 * @author Osman KAYAN <osmnkayan@gmail.com>
 * @author alikayan95@gmail.com
 * @author Cengiz AKCAN cengiz@vobo.company
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.tr = {
		translator : 'I.Taskinoglu & A.Kaya &lt;alikaya@armsyazilim.com&gt;, Abdullah ELEN &lt;abdullahelen@msn.com&gt;, Osman KAYAN &lt;osmnkayan@gmail.com&gt;, alikayan95@gmail.com, Cengiz AKCAN cengiz@vobo.company',
		language   : 'Türkçe',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 03.03.2022 15:56
		fancyDateFormat : '$1 H:i', // will show like: Bugün 15:56
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-155625
		messages   : {
			'getShareText' : 'Paylaş',
			'Editor ': 'Kod Düzenleyici',
			

			/********************************** errors **********************************/
			'error'                : 'Hata',
			'errUnknown'           : 'Bilinmeyen hata.',
			'errUnknownCmd'        : 'Bilinmeyen komut.',
			'errJqui'              : 'Geçersiz jQuery UI yapılandırması. Seçilebilir, sürükle ve bırak bileşenlerini içermelidir.',
			'errNode'              : 'elFinder, DOM Element\'ini oluşturması gerekir.',
			'errURL'               : 'Geçersiz elFinder yapılandırması! URL seçeneği ayarlı değil.',
			'errAccess'            : 'Erişim engellendi.',
			'errConnect'           : 'Sunucuya bağlanamıyor.',
			'errAbort'             : 'Bağlantı durduruldu.',
			'errTimeout'           : 'Bağlantı zaman aşımı.',
			'errNotFound'          : 'Sunucu bulunamadı.',
			'errResponse'          : 'Geçersiz sunucu yanıtı.',
			'errConf'              : 'Geçersiz sunucu yapılandırması.',
			'errJSON'              : 'PHP JSON modülü kurulu değil.',
			'errNoVolumes'         : 'Okunabilir birimler mevcut değil.',
			'errCmdParams'         : '"$1" komutu için geçersiz parametre.',
			'errDataNotJSON'       : 'Bu veri JSON formatında değil.',
			'errDataEmpty'         : 'Boş veri.',
			'errCmdReq'            : 'Sunucu isteği için komut adı gerekli.',
			'errOpen'              : '"$1" açılamıyor.',
			'errNotFolder'         : 'Bu nesne bir klasör değil.',
			'errNotFile'           : 'Bu nesne bir dosya değil.',
			'errRead'              : '"$1" okunamıyor.',
			'errWrite'             : '"$1" yazılamıyor.',
			'errPerm'              : 'Yetki engellendi.',
			'errLocked'            : '"$1" kilitli. Bu nedenle taşıma, yeniden adlandırma veya kaldırma yapılamıyor.',
			'errExists'            : '"$1" adında bir dosya zaten var.',
			'errInvName'           : 'Geçersiz dosya ismi.',
			'errInvDirname'        : 'Geçersiz klasör ismi',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Klasör bulunamıyor.',
			'errFileNotFound'      : 'Dosya bulunamadı.',
			'errTrgFolderNotFound' : 'Hedef klasör "$1" bulunamadı.',
			'errPopup'             : 'Tarayıcı popup penceresi açmayı engelledi. Tarayıcı ayarlarından dosya açmayı aktif hale getirin.',
			'errMkdir'             : 'Klasör oluşturulamıyor "$1".',
			'errMkfile'            : '"$1" dosyası oluşturulamıyor.',
			'errRename'            : '"$1" yeniden adlandırma yapılamıyor.',
			'errCopyFrom'          : '"$1" biriminden dosya kopyalamaya izin verilmedi.',
			'errCopyTo'            : '"$1" birimine dosya kopyalamaya izin verilmedi.',
			'errMkOutLink'         : 'Kök birim dışında bir bağlantı oluşturulamıyor', // from v2.1 added 03.10.2015
			'errUpload'            : 'Dosya yükleme hatası.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" dosya yüklenemedi.', // old name - errUpload
			'errUploadNoFiles'     : 'Yüklenecek dosya bulunamadı.',
			'errUploadTotalSize'   : 'Veri izin verilen boyuttan büyük.', // old name - errMaxSize
			'errUploadFileSize'    : 'Dosya izin verilen boyuttan büyük.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Dosya türüne izin verilmedi.',
			'errUploadTransfer'    : '"$1" transfer hatası.',
			'errUploadTemp'        : 'Yükleme için geçici dosya yapılamıyor.', // from v2.1 added 26.09.2015
			'errNotReplace'        : '"$1" nesnesi bu konumda zaten var ve başka türde nesne ile değiştirilemez.', // new
			'errReplace'           : 'Değişiklik yapılamıyor "$1".',
			'errSave'              : '"$1" kaydedilemiyor.',
			'errCopy'              : '"$1" kopyalanamıyor.',
			'errMove'              : '"$1" taşınamıyor.',
			'errCopyInItself'      : '"$1" kendi içine kopyalanamaz.',
			'errRm'                : '"$1" kaldırılamıyor.',
			'errTrash'             : 'Çöp kutusuna taşınamıyor.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kaynak dosya(lar) kaldırılamıyor.',
			'errExtract'           : '"$1" kaynağından dosyalar çıkartılamıyor.',
			'errArchive'           : 'Arşiv oluşturulamıyor.',
			'errArcType'           : 'Desteklenmeyen arşiv türü.',
			'errNoArchive'         : 'Dosya arşiv değil veya desteklenmeyen arşiv türü.',
			'errCmdNoSupport'      : 'Sunucu bu komutu desteklemiyor.',
			'errReplByChild'       : '“$1” klasörü içerdiği bir öğe tarafından değiştirilemez.',
			'errArcSymlinks'       : 'Sembolik bağlantıları içeren arşivlerin açılması güvenlik nedeniyle reddedildi.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arşiv dosyaları izin verilen maksimum boyutu aştı.',
			'errResize'            : '"$1" yeniden boyutlandırılamıyor.',
			'errResizeDegree'      : 'Geçersiz döndürme derecesi.',  // added 7.3.2013
			'errResizeRotate'      : 'Resim döndürülemiyor.',  // added 7.3.2013
			'errResizeSize'        : 'Geçersiz resim boyutu.',  // added 7.3.2013
			'errResizeNoChange'    : 'Resim boyutu değiştirilemez.',  // added 7.3.2013
			'errUsupportType'      : 'Desteklenmeyen dosya türü.',
			'errNotUTF8Content'    : 'Dosya "$1" UTF-8 olmadığından düzenlenemez.',  // added 9.11.2011
			'errNetMount'          : '"$1" bağlanamadı.', // added 17.04.2012
			'errNetMountNoDriver'  : 'Desteklenmeyen protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Bağlama hatası.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Sunucu gerekli.', // added 18.04.2012
			'errSessionExpires'    : 'Uzun süre işlem yapılmadığından oturumunuz sonlandı.',
			'errCreatingTempDir'   : 'Geçici dizin oluşturulamıyor: "$1"',
			'errFtpDownloadFile'   : 'Dosya FTP: "$1" adresinden indirilemiyor.',
			'errFtpUploadFile'     : 'Dosya FTP: "$1" adresine yüklenemiyor.',
			'errFtpMkdir'          : 'FTP: "$1" üzerinde uzak dizin oluşturulamıyor.',
			'errArchiveExec'       : '"$1" Dosyalarında arşivlenirken hata oluştu.',
			'errExtractExec'       : '"$1" Dosyaları arşivden çıkartılırken hata oluştu.',
			'errNetUnMount'        : 'Bağlantı kaldırılamıyor.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8\'e dönüştürülemez.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Klasör yükleyebilmek için daha modern bir tarayıcıya ihtiyacınız var.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" araması zaman aşımına uğradı. Kısmi arama sonuçları listeleniyor.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Yeniden yetkilendirme gerekiyor.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maksimum seçilebilir öge sayısı $1 adettir', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Çöp kutusundan geri yüklenemiyor. Geri yükleme notkası belirlenemiyor.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editör bu dosya türünü bulamıyor.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Sunucu tarafında beklenilmeyen bir hata oluştu.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '"$1" klasörü boşaltılamıyor.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '"$1" veya daha fazla hata', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Tek seferde 1$\'a kadar klasör oluşturabilirsiniz.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Arşiv oluştur',
			'cmdback'      : 'Geri',
			'cmdcopy'      : 'Kopyala',
			'cmdcut'       : 'Kes',
			'cmddownload'  : 'İndir',
			'cmdduplicate' : 'Çoğalt',
			'cmdedit'      : 'Dosyayı düzenle',
			'cmdextract'   : 'Arşivden dosyaları çıkart',
			'cmdforward'   : 'İleri',
			'cmdgetfile'   : 'Dosyaları seç',
			'cmdhelp'      : 'Bu yazılım hakkında',
			'cmdhome'      : 'Anasayfa',
			'cmdinfo'      : 'Bilgi göster',
			'cmdmkdir'     : 'Yeni klasör',
			'cmdmkdirin'   : 'Yeni Klasör / aç', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Yeni dosya',
			'cmdopen'      : 'Aç',
			'cmdpaste'     : 'Yapıştır',
			'cmdquicklook' : 'Ön izleme',
			'cmdreload'    : 'Geri Yükle',
			'cmdrename'    : 'Yeniden Adlandır',
			'cmdrm'        : 'Sil',
			'cmdtrash'     : 'Çöpe at', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'geri yükle', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Dosyaları bul',
			'cmdup'        : 'Üst dizine çık',
			'cmdupload'    : 'Dosyaları yükle',
			'cmdview'      : 'Görüntüle',
			'cmdresize'    : 'Resmi yeniden boyutlandır',
			'cmdsort'      : 'Sırala',
			'cmdnetmount'  : 'Bağlı ağ birimi', // added 18.04.2012
			'cmdnetunmount': 'Devredışı bırak', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Yerlere', // added 28.12.2014
			'cmdchmod'     : 'Mod değiştir', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Klasör aç', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Sütun genişliğini sıfırla', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Tam ekran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Taşı', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Klasörü boşalt', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Geri al', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Yinele', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Tercihler', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Tümünü seç', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Seçimi temizle', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Diğerlerini seç', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Yeni Sekmede aç', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ögeyi Gizle', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Kapat',
			'btnSave'   : 'Kaydet',
			'btnRm'     : 'Kaldır',
			'btnApply'  : 'Uygula',
			'btnCancel' : 'İptal',
			'btnNo'     : 'Hayır',
			'btnYes'    : 'Evet',
			'btnMount'  : 'Bağla',  // added 18.04.2012
			'btnApprove': 'Git $1 & onayla', // from v2.1 added 26.04.2012
			'btnUnmount': 'Bağlantıyı kes', // from v2.1 added 30.04.2012
			'btnConv'   : 'Dönüştür', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Buraya',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Birim',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Hepsi',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Türü', // from v2.1 added 22.5.2015
			'btnFileName':'Dosya adı',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Kaydet & Kapat', // from v2.1 added 12.6.2015
			'btnBackup' : 'Yedekle', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Yeniden adlandır',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Yeniden adlandır(Tümü)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Önceki ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Sonraki ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Farklı Kaydet', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Klasör Aç',
			'ntffile'     : 'Dosya Aç',
			'ntfreload'   : 'Klasör içeriğini yeniden yükle',
			'ntfmkdir'    : 'Dizin oluşturuluyor',
			'ntfmkfile'   : 'Dosyaları oluşturma',
			'ntfrm'       : 'Dosyaları sil',
			'ntfcopy'     : 'Dosyaları kopyala',
			'ntfmove'     : 'Dosyaları taşı',
			'ntfprepare'  : 'Dosyaları kopyalamaya hazırla',
			'ntfrename'   : 'Dosyaları yeniden adlandır',
			'ntfupload'   : 'Dosyalar yükleniyor',
			'ntfdownload' : 'Dosyalar indiriliyor',
			'ntfsave'     : 'Dosyalar kaydediliyor',
			'ntfarchive'  : 'Arşiv oluşturuluyor',
			'ntfextract'  : 'Arşivden dosyalar çıkartılıyor',
			'ntfsearch'   : 'Dosyalar aranıyor',
			'ntfresize'   : 'Resimler boyutlandırılıyor',
			'ntfsmth'     : 'İşlem yapılıyor',
			'ntfloadimg'  : 'Resim yükleniyor',
			'ntfnetmount' : 'Ağ birimine bağlanılıyor', // added 18.04.2012
			'ntfnetunmount': 'Ağ birimi bağlantısı kesiliyor', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Resim boyutu alınıyor', // added 20.05.2013
			'ntfreaddir'  : 'Klasör bilgisi okunuyor', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Bağlantının URL\'si alınıyor', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Dosya modu değiştiriliyor', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Yüklenen dosya ismi doğrulanıyor', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'İndirilecek dosya oluşturuluyor', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Dosya yolu bilgileri alınıyor', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Yüklenen dosya işleniyor', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Çöp kutusuna atma', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Çöp kutusundan geri yükle', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Hedef klasör kontrol ediliyor', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Önceki işlemi geri alma', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Önceki geri almayı tekrarlama', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'İçeriği kontrol ediniz', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Çöp', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Bilinmiyor',
			'Today'       : 'Bugün',
			'Yesterday'   : 'Dün',
			'msJan'       : 'Oca',
			'msFeb'       : 'Şub',
			'msMar'       : 'Mart',
			'msApr'       : 'Nis',
			'msMay'       : 'Mayıs',
			'msJun'       : 'Haz',
			'msJul'       : 'Tem',
			'msAug'       : 'Ağu',
			'msSep'       : 'Eyl',
			'msOct'       : 'Ekm',
			'msNov'       : 'Kas',
			'msDec'       : 'Ara',
			'January'     : 'Ocak',
			'February'    : 'Şubat',
			'March'       : 'Mart',
			'April'       : 'Nisan',
			'May'         : 'Mayıs',
			'June'        : 'Haziran',
			'July'        : 'Temmuz',
			'August'      : 'Ağustos',
			'September'   : 'Eylül',
			'October'     : 'Ekim',
			'November'    : 'Kasım',
			'December'    : 'Aralık',
			'Sunday'      : 'Pazar',
			'Monday'      : 'Pazartesi',
			'Tuesday'     : 'Salı',
			'Wednesday'   : 'Çarşamba',
			'Thursday'    : 'Perşembe',
			'Friday'      : 'Cuma',
			'Saturday'    : 'Cumartesi',
			'Sun'         : 'Paz',
			'Mon'         : 'Pzt',
			'Tue'         : 'Sal',
			'Wed'         : 'Çar',
			'Thu'         : 'Per',
			'Fri'         : 'Cum',
			'Sat'         : 'Cmt',

			/******************************** sort variants ********************************/
			'sortname'          : 'Ada göre',
			'sortkind'          : 'Türe göre',
			'sortsize'          : 'Boyuta göre',
			'sortdate'          : 'Tarihe göre',
			'sortFoldersFirst'  : 'Önce klasörler',
			'sortperm'          : 'izinlere göre', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'moduna göre',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'sahibine göre',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'grubuna göre',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Ayrıca ağaç görünümü',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'YeniDosya.txt', // added 10.11.2015
			'untitled folder'   : 'YeniKlasor',   // added 10.11.2015
			'Archive'           : 'YeniArsiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'YeniDosya.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Dosya',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Onay gerekli',
			'confirmRm'       : 'Dosyaları kaldırmak istediğinden emin misin?<br/>Bu işlem geri alınamaz!',
			'confirmRepl'     : 'Eski dosya yenisi ile değiştirilsin mi?',
			'confirmRest'     : 'Mevcut öge çöp kutusundaki ögeyle değiştirilsin mi?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 değil<br/>UTF-8\'e dönüştürülsün mü?<br/>Dönüştürme sonrası kaydedebilmek için içeriğin UTF-8 olması gerekir.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Bu dosyanın karakter kodlaması tespit edilemedi. Düzenleme için geçici olarak UTF-8\'e dönüştürülmesi gerekir.<br/>Lütfen bu dosyanın karakter kodlamasını seçin.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Düzenlenmiş içerik.<br/>Değişiklikleri kaydetmek istemiyorsanız son yapılanlar kaybolacak.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Öğeleri çöp kutusuna taşımak istediğinizden emin misiniz?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : '"$1" değiştirmek istediğinizden emin misiniz?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Tümüne uygula',
			'name'            : 'İsim',
			'size'            : 'Boyut',
			'perms'           : 'Yetkiler',
			'modify'          : 'Değiştirildi',
			'kind'            : 'Tür',
			'read'            : 'oku',
			'write'           : 'yaz',
			'noaccess'        : 'erişim yok',
			'and'             : 've',
			'unknown'         : 'bilinimiyor',
			'selectall'       : 'Tüm dosyaları seç',
			'selectfiles'     : 'Dosya(lar)ı seç',
			'selectffile'     : 'İlk dosyayı seç',
			'selectlfile'     : 'Son dosyayı seç',
			'viewlist'        : 'Liste görünümü',
			'viewicons'       : 'Simge görünümü',
			'viewSmall'       : 'Small iconlar', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium iconlar', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Large iconlar', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra large iconlar', // from v2.1.39 added 22.5.2018
			'places'          : 'Yerler',
			'calc'            : 'Hesapla',
			'path'            : 'Yol',
			'aliasfor'        : 'Takma adı:',
			'locked'          : 'Kilitli',
			'dim'             : 'Ölçüler',
			'files'           : 'Dosyalar',
			'folders'         : 'Klasörler',
			'items'           : 'Nesneler',
			'yes'             : 'evet',
			'no'              : 'hayır',
			'link'            : 'Bağlantı',
			'searcresult'     : 'Arama sonuçları',
			'selected'        : 'Seçili öğeler',
			'about'           : 'Hakkında',
			'shortcuts'       : 'Kısayollar',
			'help'            : 'Yardım',
			'webfm'           : 'Web dosyası yöneticisi',
			'ver'             : 'Sürüm',
			'protocolver'     : 'protokol sürümü',
			'homepage'        : 'Proje Anasayfası',
			'docs'            : 'Belgeler',
			'github'          : 'Github\'ta bizi takip edin',
			'twitter'         : 'Twitter\'da bizi takip edin',
			'facebook'        : 'Facebook\'ta bize katılın',
			'team'            : 'Takım',
			'chiefdev'        : 'geliştirici şefi',
			'developer'       : 'geliştirici',
			'contributor'     : 'iştirakçi',
			'maintainer'      : 'bakıcı',
			'translator'      : 'çeviri',
			'icons'           : 'Simgeler',
			'dontforget'      : 've havlunuzu almayı unutmayın',
			'shortcutsof'     : 'Kısayollar devre dışı',
			'dropFiles'       : 'Dosyaları buraya taşı',
			'or'              : 'veya',
			'selectForUpload' : 'Yüklemek için dosyaları seçin',
			'moveFiles'       : 'Dosyaları taşı',
			'copyFiles'       : 'Dosyaları kopyala',
			'restoreFiles'    : 'Öğeleri geri yükle', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Yerlerinden sil',
			'aspectRatio'     : 'Görünüm oranı',
			'scale'           : 'Ölçeklendir',
			'width'           : 'Genişlik',
			'height'          : 'Yükseklik',
			'resize'          : 'Boyutlandır',
			'crop'            : 'Kırp',
			'rotate'          : 'Döndür',
			'rotate-cw'       : '90 derece sağa döndür',
			'rotate-ccw'      : '90 derece sola döndür',
			'degree'          : 'Derece',
			'netMountDialogTitle' : 'Bağlı (Mount) ağ birimi', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Sunucu', // added 18.04.2012
			'port'                : 'Kapı(Port)', // added 18.04.2012
			'user'                : 'Kullanıcı', // added 18.04.2012
			'pass'                : 'Şifre', // added 18.04.2012
			'confirmUnmount'      : 'Bağlantı kesilsin mi $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Dosyaları tarayıcıdan yapıştır veya bırak', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Dosyaları buraya yapıştır veya bırak', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodlama', // from v2.1 added 19.12.2014
			'locale'          : 'Yerel',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Hedef: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Giriş MIME Türüne Göre Arama', // from v2.1 added 22.5.2015
			'owner'           : 'Sahibi', // from v2.1 added 20.6.2015
			'group'           : 'Grup', // from v2.1 added 20.6.2015
			'other'           : 'Diğer', // from v2.1 added 20.6.2015
			'execute'         : 'Çalıştır', // from v2.1 added 20.6.2015
			'perm'            : 'Yetki', // from v2.1 added 20.6.2015
			'mode'            : 'Mod', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Klasör boş', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Klasör boş\\A Eklemek için sürükleyin', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Klasör boş\\A Eklemek için basılı tutun', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kalite', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Otomatik senkronizasyon',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Yukarı taşı',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL bağlantısı alın', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Seçili öğeler ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Klasör kimliği', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Çevrimdışı erişime izin ver', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Yeniden kimlik doğrulaması için', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Şimdi yükleniyor...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Çoklu dosya aç', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': '$1 dosyalarını açmaya çalışıyorsunuz. Tarayıcıda açmak istediğinizden emin misiniz?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Arama hedefinde eşleşen sonuç bulunamadı.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Dosya düzenleniyor.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 öğe seçtiniz.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Panonuzda $1 öğeniz var.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Artan arama yalnızca geçerli görünümden yapılır.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Eski durumuna getir', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 tamamlandı', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Durum menüsü', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Sayfa çevir', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Disk kök dizini', // from v2.1.16 added 16.9.2016
			'reset'           : 'Sıfırla', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Arkaplan rengi', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Renk seçici', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Izgara', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Etkin', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Engelli', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Geçerli görünümde arama sonucu bulunamadı. Arama sonucunu genişletmek için \\APress [Enter]  yapın', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Geçerli görünümde ilk harf arama sonuçları boş.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Metin etiketi', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 dakika kaldı', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Seçilen kodlamayla yeniden aç', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Seçilen kodlamayla kaydet', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Klasör seç', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'İlk arama sayfası', // from v2.1.23 added 24.3.2017
			'presets'         : 'Hazır ayarlar', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'çok fazla öge var çöp kutusuna atılamaz.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Metin alanı(TextArea)', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : '"$1" klasörünü boşalt.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : '"$1" klasöründe öge yok.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Tercih', // from v2.1.26 added 28.6.2017
			'language'        : 'Dil ayarları', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Bu tarayıcıda kayıtlı ayarları başlat', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Araç çubuğu ayarları', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 karakter kaldı',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 satır kaldı.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Toplam', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Kaba dosya boyutu', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fare ile üzerine gelince diyalog öğesi odaklansın',  // from v2.1.30 added 2.11.2017
			'select'          : 'Seç', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Dosya seçildiğinde işleme al', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Geçen sefer kullanılan editörle aç', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Zıt seçim', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '$1 seçilen öğeleri $2 gibi yeniden adlandırmak istediğinizden emin misiniz?</br>Bu geri alınamaz!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Yığın adını değiştir', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Sayı', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ön ek kele', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Son ek ekle', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Uzantıyı değiştir', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Sütun ayarları (Liste görünümü)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Tüm değişiklikler hemen arşive yansıtılacaktır.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Herhangi bir değişiklik, bu birimi kaldırılıncaya kadar yansıtılmayacaktır.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Bu cihaza monte edilen aşağıdaki birim (ler) de bağlanmamıştır. Çıkardığınızdan emin misiniz?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Seçim Bilgisi', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Dosya imza(hash) algoritmaları', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'öğelerin bilgisi (Seçim Bilgi Paneli)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Çıkmak için tekrar basın.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Araç Çubuğu', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Çalışma alanı', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Diyalog', // from v2.1.38 added 4.4.2018
			'all'             : 'Tümü', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'İcon Boyutu (İcon Görünümü İçin)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Maksimum düzenleyici penceresini aç', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'API ile dönüşüm şu anda mevcut olmadığından, lütfen web sitesinde dönüştürün.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Dönüştürmeden sonra, dönüştürülen dosyayı kaydetmek için öğe URL\'si veya indirilen bir dosya ile karşıya yüklemeniz gerekir.', //from v2.1.40 added 8.7.2018
			'convertOn'       : ' $1 site çevrildi', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Entegrasyonlar', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Bu elFinder aşağıdaki harici hizmetlere entegre edilmiştir. Lütfen kullanmadan önce kullanım koşullarını, gizlilik politikasını vb. Kontrol edin.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Gizli ögeleri aç.', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Gizli ögeleri kapat.', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Gizli ögeleri aç/kapat', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '"Yeni dosya" ile etkinleştirilecek dosya türleri', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Text dosyası tipi.', // from v2.1.41 added 7.8.2018
			'add'             : 'Ekle', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Varsayılan', // from v2.1.43 added 19.10.2018
			'description'     : 'Açıklama', // from v2.1.43 added 19.10.2018
			'website'         : 'Websayfası', // from v2.1.43 added 19.10.2018
			'author'          : 'Yazar', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Lisans', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Bu öğe kaydedilemez. Düzenlemeleri kaybetmemek için PC\'nize aktarmanız gerekir.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dosyayı seçmek için çift tıklayın.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Tam ekran modunu kullan', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Bilinmiyor',
			'kindRoot'        : 'Sürücü Kök dizini', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Klasör',
			'kindSelects'     : 'Seçim', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias (Takma ad)',
			'kindAliasBroken' : 'Bozuk alias',
			// applications
			'kindApp'         : 'Uygulama',
			'kindPostscript'  : 'Postscript dosyası',
			'kindMsOffice'    : 'Microsoft Office dosyası',
			'kindMsWord'      : 'Microsoft Word dosyası',
			'kindMsExcel'     : 'Microsoft Excel dosyası',
			'kindMsPP'        : 'Microsoft Powerpoint sunumu',
			'kindOO'          : 'Open Office dosyası',
			'kindAppFlash'    : 'Flash uygulaması',
			'kindPDF'         : 'PDF',
			'kindTorrent'     : 'Bittorrent dosyası',
			'kind7z'          : '7z arşivi',
			'kindTAR'         : 'TAR arşivi',
			'kindGZIP'        : 'GZIP arşivi',
			'kindBZIP'        : 'BZIP arşivi',
			'kindXZ'          : 'XZ arşivi',
			'kindZIP'         : 'ZIP arşivi',
			'kindRAR'         : 'RAR arşivi',
			'kindJAR'         : 'Java JAR dosyası',
			'kindTTF'         : 'True Type fontu',
			'kindOTF'         : 'Open Type fontu',
			'kindRPM'         : 'RPM paketi',
			// texts
			'kindText'        : 'Metin dosyası',
			'kindTextPlain'   : 'Düz metin',
			'kindPHP'         : 'PHP kodu',
			'kindCSS'         : 'CSS dosyası',
			'kindHTML'        : 'HTML dosyası',
			'kindJS'          : 'Javascript kodu',
			'kindRTF'         : 'Zengin Metin Belgesi',
			'kindC'           : 'C kodu',
			'kindCHeader'     : 'C başlık kodu',
			'kindCPP'         : 'C++ kodu',
			'kindCPPHeader'   : 'C++ başlık kodu',
			'kindShell'       : 'Unix shell scripti',
			'kindPython'      : 'Python kodu',
			'kindJava'        : 'Java kodu',
			'kindRuby'        : 'Ruby kodu',
			'kindPerl'        : 'Perl scripti',
			'kindSQL'         : 'SQL kodu',
			'kindXML'         : 'XML dosyası',
			'kindAWK'         : 'AWK kodu',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML dosyası',
			'kindMarkdown'    : 'Markdown dosyası', // added 20.7.2015
			// images
			'kindImage'       : 'Resim',
			'kindBMP'         : 'BMP dosyası',
			'kindJPEG'        : 'JPEG dosyası',
			'kindGIF'         : 'GIF dosyası',
			'kindPNG'         : 'PNG dosyası',
			'kindTIFF'        : 'TIFF dosyası',
			'kindTGA'         : 'TGA dosyası',
			'kindPSD'         : 'Adobe Photoshop dosyası',
			'kindXBITMAP'     : 'X bitmap dosyası',
			'kindPXM'         : 'Pixelmator dosyası',
			// media
			'kindAudio'       : 'Ses ortamı',
			'kindAudioMPEG'   : 'MPEG ses',
			'kindAudioMPEG4'  : 'MPEG-4 ses',
			'kindAudioMIDI'   : 'MIDI ses',
			'kindAudioOGG'    : 'Ogg Vorbis ses',
			'kindAudioWAV'    : 'WAV ses',
			'AudioPlaylist'   : 'MP3 listesi',
			'kindVideo'       : 'Video ortamı',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));

lib/js/i18n/elfinder.ug_CN.js000064400000123506147361034410011637 0ustar00/**
 * ئ‍ۇيغۇرچە translation
 * @author تەرجىمە قىلغۇچى:  ئۆتكۈر بىز شىركىتى info@otkur.biz
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ug_CN = {
		translator : 'تەرجىمە قىلغۇچى:  ئۆتكۈر بىز شىركىتى info@otkur.biz',
		language   : 'ئ‍ۇيغۇرچە',
		direction  : 'rtl',
		dateFormat : 'Y-m-d H:i', // will show like: 2022-03-03 16:56
		fancyDateFormat : '$1 H:i', // will show like: بۈگۈن 16:56
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-165611
		messages   : {
			'getShareText' : 'ھەمبەھىرلەش',
			'Editor ': 'كود تەھرىرلىگۈچى',

			/********************************** errors **********************************/
			'error'                : 'خاتالىق',
			'errUnknown'           : 'كۈتۈلمىگەن خاتالىقكەن.',
			'errUnknownCmd'        : 'كۈتۈلمىگەن بۇيرۇقكەن.',
			'errJqui'              : 'jQuery UI تەڭشىكى توغرا بولمىغان. چوقۇم Selectable، draggable، droppabl قاتارلىق بۆلەكلەر بولۇشى كېرەك.',
			'errNode'              : 'elFinder DOM ئېلىمىنتلىرىنى قۇرالىشى كېرەك.',
			'errURL'               : 'elFinder تەڭشىكى توغرا بولمىغان! URL تەڭشىكى يېزىلمىغان.',
			'errAccess'            : 'زىيارەت قىلىش چەكلەنگەن.',
			'errConnect'           : 'ئارقا سۇپىغا ئۇلاش مەغلۇپ بولدى..',
			'errAbort'             : 'ئارقا سۇپىغا توختىتىلدى.',
			'errTimeout'           : 'ئارقا سۇپىغا بەلگىلەنگەن ۋاقىتتا ئۇلىيالمىدى.',
			'errNotFound'          : 'ئارقا سۇپا تېپىلمىدى.',
			'errResponse'          : 'ئارقا سۇپىدىن توغرا بولمىغان ئىنكاس قايتتى.',
			'errConf'              : 'ئارقا سۇپا تەڭشىكى توغرا ئەمەس.',
			'errJSON'              : 'PHP JSON بۆلىكى قاچىلانمىغان.',
			'errNoVolumes'         : 'ئوقۇشقا بولىدىغان ھۈججەت خالتىسى يوق.',
			'errCmdParams'         : 'پارامېتىر خاتا، بۇيرۇق: "$1".',
			'errDataNotJSON'       : 'ئارقا سۇپا قايتۇرغان سانلىق مەلۇمات توغرا بولغان JSON ئەمەسكەن.',
			'errDataEmpty'         : 'ئارقا سۇپا قايتۇرغان سانلىق مەلۇمات قۇرۇقكەن.',
			'errCmdReq'            : 'ئارقا سۇپىدىكى بۇيرۇقنىڭ ئ‍سىمى تەمىنلىنىشى كېرەك.',
			'errOpen'              : '"$1"نى ئاچالمىدى.',
			'errNotFolder'         : 'ئوبىكىت مۇندەرىجە ئەمەسكەن.',
			'errNotFile'           : 'ئوبىكىت ھۈججەت ئەمەسكەن.',
			'errRead'              : '"$1"نى ئوقۇيالمىدى.',
			'errWrite'             : '"$1"نى يازالمىدى.',
			'errPerm'              : 'ھوقۇق يوق.',
			'errLocked'            : '"$1" تاقالغان,ئۆزگەرتەلمەيسىز.',
			'errExists'            : '"$1" ناملىق ھۈججەت باركەن.',
			'errInvName'           : 'توغرا بولمىغان ھۈججەت قىسقۇچ ئىسمى.',
			'errInvDirname'        : 'ھۆججەت قىسقۇچنىڭ ئىسمى ئىناۋەتسىز.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'ھۈججەت قىسقۇچنى تاپالمىدى.',
			'errFileNotFound'      : 'ھۈججەتنى تاپالمىدى.',
			'errTrgFolderNotFound' : '"$1" ناملىق ھۈججەت قىسقۇچنى تاپالمىدى.',
			'errPopup'             : 'سەكرەپ چىققان يېڭى بەتنى تور كۆرگۈچ كۆرسەتمىدى، ئۈستىدىكى ئەسكەرتىشتىن تور كۆرگۈچنى كۆرسىتىشكە تەڭشەڭ.',
			'errMkdir'             : '"$1" ناملىق ھۈججەت قىسقۇچنى قۇرالمىدى.',
			'errMkfile'            : '"$1" ناملىق ھۈججەتنى قۇرالمىدى.',
			'errRename'            : '"$1" ناملىق ھۈججەتنىڭ ئىسمىنى يېڭىلاش مەغلۇپ بولدى.',
			'errCopyFrom'          : ' "$1" ناملىق ئورۇندىن ھۈججەت كۆچۈرۈش چەكلەنگەن.',
			'errCopyTo'            : '"$1" ناملىق ئورۇنغا ھۈججەت كۆچۈرۈش چەكلەنگەن.',
			'errMkOutLink'         : 'ئاۋاز يىلتىزىنىڭ سىرتىغا ئۇلىنىش قۇرالمىدى.', // from v2.1 added 03.10.2015
			'errUpload'            : 'يۈكلەشتە خاتالىق كۆرۈلدى.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" ناملىق ھۈججەتنى يۈكلەشتە خاتالىق كۆرۈلدى.', // old name - errUpload
			'errUploadNoFiles'     : 'يۈكلىمەكچى بولغان ھۈججەت تېپىلمىدى.',
			'errUploadTotalSize'   : 'سانلىق مەلۇمات چوڭلىقى چەكلىمىدىن ئېشىپ كەتكەن..', // old name - errMaxSize
			'errUploadFileSize'    : 'ھۈججەت چوڭلىقى چەكلىمىدىن ئېشىپ كەتكەن..', //  old name - errFileMaxSize
			'errUploadMime'        : 'چەكلەنگەن ھۈججەت شەكلى.',
			'errUploadTransfer'    : '"$1" ناملىق ھۈججەتنى يوللاشتا خاتالىق كۆرۈلدى.',
			'errUploadTemp'        : 'يوللاش ئۈچۈن ۋاقىتلىق ھۆججەت ھاسىل قىلالمىدى.', // from v2.1 added 26.09.2015
			'errNotReplace'        : '"$1" ناملىق ھۈججەت باركەن، ئالماشتۇرۇشقا بولمايدۇ.', // new
			'errReplace'           : '"$1" ناملىق ھۈججەتنى ئالماشتۇرۇش مەغلۇپ بولدى.',
			'errSave'              : '"$1" ناملىق ھۈججەتنى ساقلاش مەغلۇپ بولدى.',
			'errCopy'              : '"$1" ناملىق ھۈججەتنى كۆچۈرۈش مەغلۇپ بولدى.',
			'errMove'              : '"$1" ناملىق ھۈججەتنى يۆتكەش مەغلۇپ بولدى.',
			'errCopyInItself'      : '"$1" ناملىق ھۈججەتنى ئەسلى ئورنىغا يۆتكەش مەغلۇپ بولدى.',
			'errRm'                : '"$1" ناملىق ھۈججەتنى ئۆچۈرۈش مەغلۇپ بولدى.',
			'errTrash'             : 'ئەخلەت ساندۇقىغا كىرەلمىدى.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'ئەسلى ھۈججەتنى ئۆچۈرۈش مەغلۇپ بولدى.',
			'errExtract'           : ' "$1" ناملىق مەلۇماتتىن ھۈججەت ئايرىش مەغلۇپ بولدى..',
			'errArchive'           : 'پىرىسلانغان ھۈججەت ھاسىللاش مەغلۇپ بولدى.',
			'errArcType'           : 'بۇ خىل پىرىسلانغان ھۈججەت شەكلىنى سىستېما بىر تەرەپ قىلالمىدى.',
			'errNoArchive'         : 'ھۈججەت پىرىسلانغان ھۈججەت ئەمەس، ياكى توغرا پىرىسلانمىغان.',
			'errCmdNoSupport'      : 'بۇ خىل بۇيرۇقنى بىر تەرەپ قىلالمىدى.',
			'errReplByChild'       : '“$1” ناملىق ھۈججەت قىسقۇچنى ئالماشۇتۇرۇشقا بولمايدۇ.',
			'errArcSymlinks'       : 'بىخەتەرلىك ئۈچۈن بۇ مەشغۇلات ئەمەلدىن قالدۇرۇلدى..', // edited 24.06.2012
			'errArcMaxSize'        : 'پىرىسلانغان ھۈججەتنىڭ چوڭلىقى چەكلىمىدىن ئېشىپ كەنكەن.',
			'errResize'            : ' "$1" چوڭلۇقنى تەڭشەشكە بولمىدى.',
			'errResizeDegree'      : 'توغرا بولمىغان پىقىرىتىش گىرادۇسى',  // added 7.3.2013
			'errResizeRotate'      : 'رەسىمنى پىقىرىتىشقا بولمىدى.',  // added 7.3.2013
			'errResizeSize'        : 'توغرا بولمىغان رەسىم چوڭلىقى.',  // added 7.3.2013
			'errResizeNoChange'    : 'رەسىم چوڭلىقى ئۆزگەرمىگەن.',  // added 7.3.2013
			'errUsupportType'      : 'قوللىمايدىغان ھۈججەت شەكلى.',
			'errNotUTF8Content'    : '"$1" ناملىق ھۈججەتنىڭ كودى  UTF-8ئەمەسكەن،  تەھرىرلىگىلى بولمايدۇ.',  // added 9.11.2011
			'errNetMount'          : ' "$1" نى يۈكلەشتە خاتلىق يۈز بەردى..', // added 17.04.2012
			'errNetMountNoDriver'  : 'بۇ خىل پروتوكول قوللانمىدى..',     // added 17.04.2012
			'errNetMountFailed'    : 'يۈكلەش مەغلۇپ بولدى.',         // added 17.04.2012
			'errNetMountHostReq'   : 'مۇلازىمىتىرنى كۆرسىتىپ بېرىڭ.', // added 18.04.2012
			'errSessionExpires'    : 'سىزنىڭ ھەرىكەتسىزلىكىڭىز سەۋەبىدىن ۋاقتىڭىز توشتى.',
			'errCreatingTempDir'   : 'ۋاقىتلىق مۇندەرىجە قۇرالمىدى: "$ 1"',
			'errFtpDownloadFile'   : 'FTP دىن ھۆججەت چۈشۈرۈشكە ئامالسىز: "$ 1"',
			'errFtpUploadFile'     : 'FTP غا ھۆججەت يۈكلىيەلمىدى: "$ 1"',
			'errFtpMkdir'          : 'FTP دا يىراقتىن مۇندەرىجە قۇرالمىدى: "$ 1"',
			'errArchiveExec'       : 'ھۆججەتلەرنى ئارخىپلاشتۇرغاندا خاتالىق: "$ 1"',
			'errExtractExec'       : 'ھۆججەتلەرنى چىقىرىشتا خاتالىق: "$ 1"',
			'errNetUnMount'        : 'ساناقسىز.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8 غا ئايلاندۇرغىلى بولمايدۇ', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'ئەگەر ھۆججەت قىسقۇچنى يۈكلىمەكچى بولسىڭىز ، زامانىۋى توركۆرگۈنى سىناپ بېقىڭ.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '«$ 1» نى ئىزدەۋاتقاندا ۋاقتى ئۆتتى. ئىزدەش نەتىجىسى قىسمەن.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'قايتا ھوقۇق بېرىش تەلەپ قىلىنىدۇ.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'تاللىغىلى بولىدىغان تۈرلەرنىڭ ئەڭ كۆپ سانى 1 دوللار.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'ئەخلەت ساندۇقىدىن ئەسلىگە كەلتۈرگىلى بولمايدۇ. ئەسلىگە كەلتۈرۈش مەنزىلىنى ئېنىقلىيالمىدى.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'تەھرىرلىگۈچ بۇ ھۆججەت تىپىغا تېپىلمىدى.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'مۇلازىمېتىر تەرەپتە خاتالىق كۆرۈلدى.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '"$ 1" ھۆججەت قىسقۇچىنى بوشاتقىلى بولمايدۇ.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'يەنە 1 دوللار خاتالىق بار.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'بىرلا ۋاقىتتا $ 1 ھۆججەت قىسقۇچ قۇرالايسىز.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'پىرىسلاش',
			'cmdback'      : 'قايتىش',
			'cmdcopy'      : 'كۆچۈرۈش',
			'cmdcut'       : 'كېسىش',
			'cmddownload'  : 'چۈشۈرۈش',
			'cmdduplicate' : 'نۇسخىلاش',
			'cmdedit'      : 'تەھرىرلەش',
			'cmdextract'   : 'پىرىستىن ھۈججەت چىقىرىش',
			'cmdforward'   : 'ئ‍الدىغا مېڭىش',
			'cmdgetfile'   : 'تاللاش',
			'cmdhelp'      : 'ئەپ ھەققىدە',
			'cmdhome'      : 'باش بەت',
			'cmdinfo'      : 'ئۇچۇرلىرى',
			'cmdmkdir'     : 'يېڭى ھۈججەت قىسقۇچ',
			'cmdmkdirin'   : 'يېڭى ھۆججەت قىسقۇچقا', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'يېڭى ھۈججەت',
			'cmdopen'      : 'ئېچىش',
			'cmdpaste'     : 'چاپلاش',
			'cmdquicklook' : 'كۆرۈش',
			'cmdreload'    : 'يېڭىلاش',
			'cmdrename'    : 'نام يېڭىلاش',
			'cmdrm'        : 'ئۆچۈرۈش',
			'cmdtrash'     : 'ئەخلەت ساندۇقىغا', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'ئەسلىگە كەلتۈرۈش', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'ھۈججەت ئىزدەش',
			'cmdup'        : 'ئالدىنقى مۇندەرىجىگە بېرىش',
			'cmdupload'    : 'يۈكلەش',
			'cmdview'      : 'كۆرۈش',
			'cmdresize'    : 'چوڭلىقىنى تەڭشەش',
			'cmdsort'      : 'تەرتىپ',
			'cmdnetmount'  : 'توردىن قوشۇش', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'جايلارغا', // added 28.12.2014
			'cmdchmod'     : 'ھالەتنى ئۆزگەرتىش', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'ھۆججەت قىسقۇچنى ئېچىڭ', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'ستون كەڭلىكىنى ئەسلىگە كەلتۈرۈڭ', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'تولۇق ئېكران', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'يۆتكەڭ', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'قىسقۇچنى بوش قويۇڭ', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'ئەمەلدىن قالدۇرۇش', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Redo', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'مايىللىق', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'ھەممىنى تاللاڭ', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'ھېچقايسىسىنى تاللىماڭ', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'تەتۈر تاللاش', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'يېڭى كۆزنەكتە ئېچىڭ', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'يوشۇرۇش (مايىللىق)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'تاقاش',
			'btnSave'   : 'ساقلاش',
			'btnRm'     : 'ئۆچۈرۈش',
			'btnApply'  : 'ئىشلىتىش',
			'btnCancel' : 'بېكارلاش',
			'btnNo'     : 'ياق',
			'btnYes'    : 'ھەئە',
			'btnMount'  : 'يۈكلەش',  // added 18.04.2012
			'btnApprove': 'Goto $ 1 & تەستىق', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'ئايلاندۇرۇش', // from v2.1 added 08.04.2014
			'btnCwd'    : 'بۇ يەردە',      // from v2.1 added 22.5.2015
			'btnVolume' : 'ھەجىم',    // from v2.1 added 22.5.2015
			'btnAll'    : 'ھەممىسى',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME تىپى', // from v2.1 added 22.5.2015
			'btnFileName':'ھۆججەت ئىسمى',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'ساقلاش ۋە تاقاش', // from v2.1 added 12.6.2015
			'btnBackup' : 'زاپاسلاش', // fromv2.1 added 28.11.2015
			'btnRename'    : 'ئىسىمنى ئۆزگەرتىش',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'ئالدىنقى ($ 1 / $ 2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'كېيىنكى ($ 1 / $ 2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'قىسقۇچنى ئېچىش',
			'ntffile'     : 'ھۈججەتنى ئېچىش',
			'ntfreload'   : 'يېڭىلاش',
			'ntfmkdir'    : 'قىسقۇچ قۇرۇش',
			'ntfmkfile'   : 'ھۈججەت قۇرۇش',
			'ntfrm'       : 'ئۆچۈرۈش',
			'ntfcopy'     : 'كۆچۈرۈش',
			'ntfmove'     : 'يۆتكەش',
			'ntfprepare'  : 'كۆچۈرۈش تەييارلىقى',
			'ntfrename'   : 'نام يېڭىلاش',
			'ntfupload'   : 'يۈكلەش',
			'ntfdownload' : 'چۈشۈرۈش',
			'ntfsave'     : 'ساقلاش',
			'ntfarchive'  : 'پىرىسلاش',
			'ntfextract'  : 'پىرىستىن يېشىش',
			'ntfsearch'   : 'ئىزدەش',
			'ntfresize'   : 'چوڭلىقى ئۆزگەرتىلىۋاتىدۇ',
			'ntfsmth'     : 'ئالدىراش >_<',
			'ntfloadimg'  : 'رەسىم ئېچىلىۋاتىدۇ',
			'ntfnetmount' : 'تور ھۈججىتى يۈكلىنىۋاتىدۇ', // added 18.04.2012
			'ntfnetunmount': 'تور ئاۋازىنى ئۆچۈرۈۋېتىش', // from v2.1 added 30.04.2012
			'ntfdim'      : 'رەسىم ئۆلچىمىگە ئېرىشىش', // added 20.05.2013
			'ntfreaddir'  : 'قىسقۇچ ئۇچۇرلىرىنى ئوقۇش', // from v2.1 added 01.07.2013
			'ntfurl'      : 'ئۇلىنىش ئادرېسىغا ئېرىشىش', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'ھۆججەت ھالىتىنى ئۆزگەرتىش', // from v2.1 added 20.6.2015
			'ntfpreupload': 'يۈكلەش ھۆججەت نامىنى دەلىللەش', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'چۈشۈرۈش ئۈچۈن ھۆججەت قۇرۇش', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'يول ئۇچۇرىغا ئېرىشىش', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'يۈكلەنگەن ھۆججەتنى بىر تەرەپ قىلىش', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'ئەخلەت ساندۇقىغا تاشلاش', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'ئەخلەت ساندۇقىدىن ئەسلىگە كەلتۈرۈش', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'نىشان ھۆججەت قىسقۇچىنى تەكشۈرۈش', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'ئالدىنقى مەشغۇلاتنى بىكار قىلىش', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'ئىلگىرىكى ئەمەلدىن قالدۇرۇش', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'مەزمۇننى تەكشۈرۈش', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'ئەخلەت ساندۇقى', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ئېنىق ئەمەس',
			'Today'       : 'بۈگۈن',
			'Yesterday'   : 'تۆنۈگۈن',
			'msJan'       : '1-ئاي',
			'msFeb'       : '2-ئاي',
			'msMar'       : '3-ئاي',
			'msApr'       : '4-ئاي',
			'msMay'       : '5-ئاي',
			'msJun'       : '6-ئاي',
			'msJul'       : '7-ئاي',
			'msAug'       : '8-ئاي',
			'msSep'       : '9-ئ‍اي',
			'msOct'       : '10-ئاي',
			'msNov'       : '11-ئاي',
			'msDec'       : '12-ئاي',
			'January'     : '1-ئاي',
			'February'    : '2-ئاي',
			'March'       : '3-ئاي',
			'April'       : '4-ئاي',
			'May'         : '5-ئاي',
			'June'        : '6-ئاي',
			'July'        : '7-ئاي',
			'August'      : '8-ئاي',
			'September'   : '9-ئاي',
			'October'     : '10-ئاي',
			'November'    : '11-ئاي',
			'December'    : '12-ئاي',
			'Sunday'      : 'يەكشەنبە',
			'Monday'      : 'دۈشەنبە',
			'Tuesday'     : 'سەيشەنبە',
			'Wednesday'   : 'چارشەنبە',
			'Thursday'    : 'پەيشەنبە',
			'Friday'      : 'جۈمە',
			'Saturday'    : 'شەنبە',
			'Sun'         : 'يە',
			'Mon'         : 'دۈ',
			'Tue'         : 'سە',
			'Wed'         : 'چا',
			'Thu'         : 'پە',
			'Fri'         : 'جۈ',
			'Sat'         : 'شە',

			/******************************** sort variants ********************************/
			'sortname'          : 'نامى ',
			'sortkind'          : 'شەكلى ',
			'sortsize'          : 'چوڭلىقى',
			'sortdate'          : 'ۋاقتى',
			'sortFoldersFirst'  : 'قىسقۇچلار باشتا',
			'sortperm'          : 'رۇخسەت بىلەن', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'ئىگىسى تەرىپىدىن',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'گۇرۇپپا بويىچە',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'يېڭى ھۆججەت.txt', // added 10.11.2015
			'untitled folder'   : 'يېڭى ھۆججەت قىسقۇچ',   // added 10.11.2015
			'Archive'           : 'يېڭى ئارخېۋى',  // from v2.1 added 10.11.2015
			'untitled file'     :'يېڭىھۆججەت.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: ھۆججەت',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'مۇقىملاشتۇرۇڭ',
			'confirmRm'       : 'راستىنلا ئۆچۈرەمسىز?<br/>كەينىگە قايتۇرغىلى بولمايدۇ!',
			'confirmRepl'     : 'ھازىرقى ھۈججەت بىلەن كونىسىنى ئالماشتۇرامسىز?',
			'confirmRest'     : 'مەۋجۇت نەرسىنى ئەخلەت ساندۇقىغا ئالماشتۇرۇڭ؟', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 دا ئەمەس <br/> UTF-8 غا ئايلاندۇرامسىز؟ <br/> مەزمۇن ئۆزگەرتىلگەندىن كېيىن تېجەش ئارقىلىق UTF-8 غا ئايلىنىدۇ.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'بۇ ھۆججەتنىڭ ھەرپ-بەلگە كودلىرىنى بايقىغىلى بولمايدۇ. ئۇنى تەھرىرلەش ئۈچۈن UTF-8 غا ۋاقىتلىق ئۆزگەرتىش كېرەك. <br/> بۇ ھۆججەتنىڭ ھەرپ-بەلگە كودلىرىنى تاللاڭ.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'ئۇ ئۆزگەرتىلدى. <br/> ئۆزگەرتىشنى ساقلىمىسىڭىز خىزمەتتىن ئايرىلىدۇ.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'نەرسىلەرنى ئەخلەت ساندۇقىغا يۆتكىمەكچىمۇ؟', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'تۈرلەرنى «$ 1» غا يۆتكىمەكچىمۇ؟', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'ھەممىسىگە ئىشلىتىش',
			'name'            : 'نامى',
			'size'            : 'چوڭلىقى',
			'perms'           : 'ھوقۇق',
			'modify'          : 'ئۆزگەرگەن ۋاقتى',
			'kind'            : 'تۈرى',
			'read'            : 'ئوقۇش',
			'write'           : 'يېزىش',
			'noaccess'        : 'ھوقۇق يوق',
			'and'             : 'ھەم',
			'unknown'         : 'ئېنىق ئەمەس',
			'selectall'       : 'ھەممىنى تاللاش',
			'selectfiles'     : 'تاللاش',
			'selectffile'     : 'بىرىنچىسىنى تاللاش',
			'selectlfile'     : 'ئەڭ ئاخىرقىسىنى تاللاش',
			'viewlist'        : 'جەدۋەللىك كۆرىنىشى',
			'viewicons'       : 'رەسىملىك كۆرىنىشى',
			'viewSmall'       : 'كىچىك سىنبەلگىلەر', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'ئوتتۇرا سىنبەلگىلەر', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'چوڭ سىنبەلگىلەر', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'قوشۇمچە چوڭ سىنبەلگىلەر', // from v2.1.39 added 22.5.2018
			'places'          : 'ئورنى',
			'calc'            : 'ھېسابلاش',
			'path'            : 'ئورنى',
			'aliasfor'        : 'باشقا نامى',
			'locked'          : 'تاقالغان',
			'dim'             : 'چوڭلىقى',
			'files'           : 'ھۈججەت',
			'folders'         : 'قىسقۇچ',
			'items'           : 'تۈرلەر',
			'yes'             : 'ھەئە',
			'no'              : 'ياق',
			'link'            : 'ئۇلىنىش',
			'searcresult'     : 'ئىزدەش نەتىجىسى',
			'selected'        : 'تاللانغان تۈرلەر',
			'about'           : 'چۈشەنچە',
			'shortcuts'       : 'تېز كونۇپكىلار',
			'help'            : 'ياردەم',
			'webfm'           : 'تور ھۈججەتلىرىنى باشقۇرۇش',
			'ver'             : 'نەشرى',
			'protocolver'     : 'پروتوكول نەشرى',
			'homepage'        : 'تۈر باش بېتى',
			'docs'            : 'ھۈججەت',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Follow us on twitter',
			'facebook'        : 'Join us on facebook',
			'team'            : 'گۇرۇپپا',
			'chiefdev'        : 'باش پىروگراممىر',
			'developer'       : 'پىروگراممىر',
			'contributor'     : 'تۆھپىكار',
			'maintainer'      : 'ئاسرىغۇچى',
			'translator'      : 'تەرجىمان',
			'icons'           : 'سىنبەلگە',
			'dontforget'      : 'تەرىڭىزنى سۈرتىدىغان قولياغلىقىڭىزنى ئۇنۇتماڭ جۇمۇ',
			'shortcutsof'     : 'تېز كونۇپكىلار چەكلەنگەن',
			'dropFiles'       : 'ھۈججەتنى موشۇ يەرگە تاشلاڭ',
			'or'              : 'ياكى',
			'selectForUpload' : 'يۈكلىمەكچى بولغان ھۈججەتنى تاللاڭ',
			'moveFiles'       : 'يۆتكەش',
			'copyFiles'       : 'كۆچۈرۈش',
			'restoreFiles'    : 'تۈرلەرنى ئەسلىگە كەلتۈرۈش', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'ھۈججەتلەرنى ئۆچۈرۈش',
			'aspectRatio'     : 'نىسبىتىنى ساقلاش',
			'scale'           : 'نىسبىتى',
			'width'           : 'ئۇزۇنلىقى',
			'height'          : 'ئىگىزلىكى',
			'resize'          : 'چوڭلىقىنى تەڭشەش',
			'crop'            : 'كېسىش',
			'rotate'          : 'پىقىرىتىش',
			'rotate-cw'       : 'سائەت ئىستىرىلكىسى بويىچە 90 گىرادۇس پىقىرىتىش',
			'rotate-ccw'      : 'سائەت ئىستىرىلكىسىنى تەتۈر يۆنىلىشى بويىچە 90گىرادۇس پىقىرىتىش',
			'degree'          : 'گىرادۇس',
			'netMountDialogTitle' : 'تور ئاۋازى', // added 18.04.2012
			'protocol'            : 'پىروتوكڭل', // added 18.04.2012
			'host'                : 'مۇلازىمىتىر', // added 18.04.2012
			'port'                : 'پورت', // added 18.04.2012
			'user'                : 'ئەزا', // added 18.04.2012
			'pass'                : 'ئىم', // added 18.04.2012
			'confirmUnmount'      : 'سىز $ 1 نى ھېسابلىمايسىز؟',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'توركۆرگۈدىن ھۆججەتلەرنى تاشلاش ياكى چاپلاش', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'ھۆججەتلەرنى بۇ يەرگە تاشلاڭ ، URL ياكى رەسىملەرنى چاپلاڭ', // from v2.1 added 07.04.2014
			'encoding'        : 'كودلاش', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'نىشان: $ 1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'كىرگۈزۈش MIME تىپى ئارقىلىق ئىزدەش', // from v2.1 added 22.5.2015
			'owner'           : 'ئىگىسى', // from v2.1 added 20.6.2015
			'group'           : 'گۇرۇپپا', // from v2.1 added 20.6.2015
			'other'           : 'باشقىلىرى', // from v2.1 added 20.6.2015
			'execute'         : 'ئىجرا قىلىڭ', // from v2.1 added 20.6.2015
			'perm'            : 'ئىجازەت', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'ھۆججەت قىسقۇچ قۇرۇق', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'ھۆججەت قىسقۇچ قۇرۇق \\ تۈر قوشۇش ئۈچۈن تاشلاش', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'ھۆججەت قىسقۇچ قۇرۇق \\ تۈر قوشۇش ئۈچۈن ئۇزۇن چېكىش', // from v2.1.6 added 30.12.2015
			'quality'         : 'سۈپەت', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'ئاپتوماتىك ماسقەدەملەش',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'يۆتكەڭ',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL ئۇلىنىشىغا ئېرىشىڭ', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'تاللانغان تۈرلەر ($ 1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ھۆججەت قىسقۇچ كىملىكى', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'تورسىز زىيارەت قىلىشقا يول قويۇڭ', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'قايتا دەلىللەش', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'ھازىر يۈكلەۋاتىدۇ ...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'كۆپ ھۆججەتلەرنى ئېچىڭ', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'سىز $ 1 ھۆججىتىنى ئاچماقچى بولۇۋاتىسىز. توركۆرگۈدە ئاچماقچىمۇ؟', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'ئىزدەش نەتىجىسى ئىزدەش نىشانىدا قۇرۇق.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'ئۇ ھۆججەتنى تەھرىرلەۋاتىدۇ.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'سىز $ 1 تۈرنى تاللىدىڭىز.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'چاپلاش تاختىسىدا 1 دوللارلىق نەرسە بار.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'كۆپەيتىلگەن ئىزدەش پەقەت ھازىرقى كۆرۈنۈشتىن كەلگەن.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
			'complete'        : '$ 1 تامام', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'مەزمۇن تىزىملىكى', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'بەت ئايلانمىسى', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'توم يىلتىزى', // from v2.1.16 added 16.9.2016
			'reset'           : 'ئەسلىگە قايتۇرۇش', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'تەگلىك رەڭگى', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'رەڭ تاللىغۇچ', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'قوزغىتىلدى', // from v2.1.16 added 4.10.2016
			'disabled'        : 'چەكلەنگەن', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'نۆۋەتتىكى كۆرۈنۈشتە ئىزدەش نەتىجىسى قۇرۇق. \\ APress [Enter] ئىزدەش نىشانىنى كېڭەيتىش.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'نۆۋەتتىكى كۆرۈنۈشتە بىرىنچى ھەرىپ ئىزدەش نەتىجىسى قۇرۇق.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'تېكىست بەلگىسى', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '1 مىنۇت قالدى', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'تاللانغان كودلاش ئارقىلىق قايتا ئېچىڭ', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'تاللانغان كودلاش ئارقىلىق ساقلاڭ', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'ھۆججەت قىسقۇچنى تاللاڭ', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'بىرىنچى خەت ئىزدەش', // from v2.1.23 added 24.3.2017
			'presets'         : 'ئالدىن بەلگىلەيدۇ', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'ئۇ بەك كۆپ نەرسە بولغاچقا ئەخلەت ساندۇقىغا كىرەلمەيدۇ.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : '«$ 1» ھۆججەت قىسقۇچىنى بىكار قىلىڭ.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : '«$ 1» ھۆججەت قىسقۇچىدا ھېچقانداق نەرسە يوق.', // from v2.1.25 added 22.6.2017
			'preference'      : 'مايىللىق', // from v2.1.26 added 28.6.2017
			'language'        : 'تىل', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'بۇ توركۆرگۈدە ساقلانغان تەڭشەكلەرنى قوزغىتىڭ', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'قورالبالدىقى تەڭشىكى', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... 1 دوللار قالدى.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $ 1 قۇر قالدى.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'ھۆججەت چوڭلۇقى', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'چاشقىنەك ئارقىلىق دىئالوگ ئېلېمېنتىغا دىققەت قىلىڭ',  // from v2.1.30 added 2.11.2017
			'select'          : 'تاللاڭ', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'ھۆججەت تاللىغاندا ھەرىكەت', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'ئالدىنقى قېتىم ئىشلىتىلگەن تەھرىرلىگۈچ بىلەن ئېچىڭ', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'تەتۈر تاللاش', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '$ 2 غا ئوخشاش $ 1 تاللانغان تۈرنىڭ ئىسمىنى ئۆزگەرتمەكچىمۇ؟ <br/> بۇنى ئەمەلدىن قالدۇرغىلى بولمايدۇ.', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'گۇرۇپپا نامىنى ئۆزگەرتىش', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ سان', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'ئالدى قوشۇلغۇچى قوشۇڭ', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'قوشۇمچى قوشۇڭ', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'كېڭەيتىلمىنى ئۆزگەرتىش', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'ستون تەڭشىكى (تىزىملىك كۆرۈنۈشى)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'بارلىق ئۆزگەرتىشلەر ئارخىپقا دەرھال ئەكىس ئەتتۈرىدۇ.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'بۇ ئاۋازنى قاچىلىمىغۇچە ھەر قانداق ئۆزگىرىش ئەكس ئەتمەيدۇ.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'بۇ ھەجىمگە ئورنىتىلغان تۆۋەندىكى توم (لار) مۇ ساناقسىز. ئۇنى ئۆچۈرەمسىز؟', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'تاللاش ئۇچۇرى', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'ئالگورىزىملار ھۆججەتنى كۆرسىتىپ بېرىدۇ', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'ئۇچۇر تۈرلىرى (تاللاش ئۇچۇر تاختىسى)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'چېكىنىش ئۈچۈن يەنە بىر قېتىم بېسىڭ.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'قورالبالدىقى', // from v2.1.38 added 4.4.2018
			'workspace'       : 'خىزمەت بوشلۇقى', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'ھەممىسى', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'سىنبەلگە چوڭلۇقى (سىنبەلگە كۆرۈنۈشى)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'چوڭايتىلغان تەھرىرلىگۈچ كۆزنىكىنى ئېچىڭ', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'API نى ئۆزگەرتىش ھازىرچە بولمىغاچقا ، توربېكەتكە ئايلاندۇرۇڭ.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'ئۆزگەرتىلگەندىن كېيىن ، چوقۇم ئۆزگەرتىلگەن ھۆججەتنى ساقلاش ئۈچۈن چوقۇم URL ئادرېسى ياكى چۈشۈرۈلگەن ھۆججەت بىلەن يۈكلىنىشىڭىز كېرەك.', //from v2.1.40 added 8.7.2018
			'convertOn'       : '$ 1 تور بېتىگە ئايلاندۇرۇڭ', // from v2.1.40 added 10.7.2018
			'integrations'    : 'بىرىكتۈرۈش', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'بۇ elFinder نىڭ تۆۋەندىكى تاشقى مۇلازىمەتلىرى بىرلەشتۈرۈلگەن. ئىشلىتىشتىن بۇرۇن ئىشلىتىش شەرتلىرى ، مەخپىيەتلىك تۈزۈمى قاتارلىقلارنى تەكشۈرۈپ بېقىڭ.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'يوشۇرۇن تۈرلەرنى كۆرسەت', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'يوشۇرۇن نەرسىلەرنى يوشۇرۇش', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'يوشۇرۇن تۈرلەرنى كۆرسىتىش / يوشۇرۇش', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '«يېڭى ھۆججەت» ئارقىلىق قوزغىتىدىغان ھۆججەت تىپلىرى', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'تېكىست ھۆججىتىنىڭ تىپى', // from v2.1.41 added 7.8.2018
			'add'             : 'قوش', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'سۈكۈتتىكى', // from v2.1.43 added 19.10.2018
			'description'     : 'چۈشەندۈرۈش', // from v2.1.43 added 19.10.2018
			'website'         : 'تور بېكەت', // from v2.1.43 added 19.10.2018
			'author'          : 'ئاپتور', // from v2.1.43 added 19.10.2018
			'email'           : 'ئېلخەت', // from v2.1.43 added 19.10.2018
			'license'         : 'ئىجازەتنامە', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'بۇ تۈرنى ساقلىغىلى بولمايدۇ. تەھرىرلەشنى يوقىتىپ قويۇشتىن ساقلىنىش ئۈچۈن كومپيۇتېرىڭىزغا ئېكسپورت قىلىشىڭىز كېرەك.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'ئۇنى تاللاش ئۈچۈن ھۆججەتنى قوش چېكىڭ.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'پۈتۈن ئېكران ھالىتىنى ئىشلىتىڭ', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'ئېنىق ئەمەس',
			'kindRoot'        : 'توم يىلتىز', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'ھۈججەت قىسقۇچ',
			'kindSelects'     : 'تاللاش', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'باشقا نامى',
			'kindAliasBroken' : 'باشقا نامى خاتا',
			// applications
			'kindApp'         : 'كود ھۈججىتى',
			'kindPostscript'  : 'Postscript ھۈججىتى',
			'kindMsOffice'    : 'Microsoft Office ھۈججىتى',
			'kindMsWord'      : 'Microsoft Word ھۈججىتى',
			'kindMsExcel'     : 'Microsoft Excel ھۈججىتى',
			'kindMsPP'        : 'Microsoft Powerpoint ھۈججىتى',
			'kindOO'          : 'Open Office ھۈججىتى',
			'kindAppFlash'    : 'Flash ھۈججىتى',
			'kindPDF'         : 'ئېلىپ يۈرۈشكە ئەپلىك ھۆججەت فورماتى (PDF)',
			'kindTorrent'     : 'Bittorrent ھۈججىتى',
			'kind7z'          : '7z ھۈججىتى',
			'kindTAR'         : 'TAR ھۈججىتى',
			'kindGZIP'        : 'GZIP ھۈججىتى',
			'kindBZIP'        : 'BZIP ھۈججىتى',
			'kindXZ'          : 'XZ ھۈججىتى',
			'kindZIP'         : 'ZIP ھۈججىتى',
			'kindRAR'         : 'RAR ھۈججىتى',
			'kindJAR'         : 'Java JAR ھۈججىتى',
			'kindTTF'         : 'True Type فونت',
			'kindOTF'         : 'Open Type فونت',
			'kindRPM'         : 'RPM',
			// texts
			'kindText'        : 'تېكىست',
			'kindTextPlain'   : 'تېكىست',
			'kindPHP'         : 'PHP ھۈججىتى',
			'kindCSS'         : 'CSS ھۈججىتى',
			'kindHTML'        : 'HTML ھۈججىتى',
			'kindJS'          : 'Javascript ھۈججىتى',
			'kindRTF'         : 'RTF ھۈججىتى',
			'kindC'           : 'C ھۈججىتى',
			'kindCHeader'     : 'C باش ھۈججىتى',
			'kindCPP'         : 'C++ ھۈججىتى',
			'kindCPPHeader'   : 'C++ باش ھۈججىتى',
			'kindShell'       : 'Unix سىكىرىپت ھۈججىتى',
			'kindPython'      : 'Python ھۈججىتى',
			'kindJava'        : 'Java ھۈججىتى',
			'kindRuby'        : 'Ruby ھۈججىتى',
			'kindPerl'        : 'Perl ھۈججىتى',
			'kindSQL'         : 'SQL ھۈججىتى',
			'kindXML'         : 'XML ھۈججىتى',
			'kindAWK'         : 'AWK ھۈججىتى',
			'kindCSV'         : 'CSV ھۈججىتى',
			'kindDOCBOOK'     : 'Docbook XML ھۈججىتى',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'رەسىم',
			'kindBMP'         : 'BMP رەسىم',
			'kindJPEG'        : 'JPEG رەسىم',
			'kindGIF'         : 'GIF رەسىم',
			'kindPNG'         : 'PNG رەسىم',
			'kindTIFF'        : 'TIFF رەسىم',
			'kindTGA'         : 'TGA رەسىم',
			'kindPSD'         : 'Adobe Photoshop رەسىم',
			'kindXBITMAP'     : 'X bitmap رەسىم',
			'kindPXM'         : 'Pixelmator رەسىم',
			// media
			'kindAudio'       : 'ئاۋاز',
			'kindAudioMPEG'   : 'MPEG ئاۋاز',
			'kindAudioMPEG4'  : 'MPEG-4 ئاۋاز',
			'kindAudioMIDI'   : 'MIDI ئاۋاز',
			'kindAudioOGG'    : 'Ogg Vorbis ئاۋاز',
			'kindAudioWAV'    : 'WAV ئاۋاز',
			'AudioPlaylist'   : 'MP3 قويۇش تىزىملىكى',
			'kindVideo'       : 'سىن',
			'kindVideoDV'     : 'DV سىن',
			'kindVideoMPEG'   : 'MPEG سىن',
			'kindVideoMPEG4'  : 'MPEG-4 سىن',
			'kindVideoAVI'    : 'AVI سىن',
			'kindVideoMOV'    : 'Quick Time سىن',
			'kindVideoWM'     : 'Windows Media سىن',
			'kindVideoFlash'  : 'Flash سىن',
			'kindVideoMKV'    : 'Matroska سىن',
			'kindVideoOGG'    : 'Ogg سىن'
		}
	};
}));

lib/js/i18n/elfinder.pl.js000064400000103536147361034410011260 0ustar00/**
 * Polski translation
 * @author Marcin Mikołajczyk <marcin@pjwstk.edu.pl>
 * @author Bogusław Zięba <bobi@poczta.fm>
 * @author Bogusław Zięba <bobi@poczta.fm>
 * @version 2022-03-08
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.pl = {
		translator : 'Marcin Mikołajczyk &lt;marcin@pjwstk.edu.pl&gt;, Bogusław Zięba &lt;bobi@poczta.fm&gt;, Bogusław Zięba &lt;bobi@poczta.fm&gt;',
		language   : 'Język Polski',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 08.03.2022 11:30
		fancyDateFormat : '$1 H:i', // will show like: Dzisiaj 11:30
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220308-113034
		messages   : {
			'getShareText' : 'Dzielić',
			'Editor ': 'Edytor kodu',
			/********************************** errors **********************************/
			'error'                : 'Błąd',
			'errUnknown'           : 'Nieznany błąd.',
			'errUnknownCmd'        : 'Nieznane polecenie.',
			'errJqui'              : 'Niepoprawna konfiguracja jQuery UI. Muszą być zawarte komponenty selectable, draggable i droppable.',
			'errNode'              : 'elFinder wymaga utworzenia obiektu DOM.',
			'errURL'               : 'Niepoprawna konfiguracja elFinder! Pole URL nie jest ustawione.',
			'errAccess'            : 'Dostęp zabroniony.',
			'errConnect'           : 'Błąd połączenia z zapleczem.',
			'errAbort'             : 'Połączenie zostało przerwane.',
			'errTimeout'           : 'Upłynął czas oczekiwania na połączenie.',
			'errNotFound'          : 'Zaplecze nie zostało znalezione.',
			'errResponse'          : 'Nieprawidłowa odpowiedź zaplecza.',
			'errConf'              : 'Niepoprawna konfiguracja zaplecza.',
			'errJSON'              : 'Moduł PHP JSON nie jest zainstalowany.',
			'errNoVolumes'         : 'Brak możliwości odczytu katalogów.',
			'errCmdParams'         : 'Nieprawidłowe parametry dla polecenia "$1".',
			'errDataNotJSON'       : 'Dane nie są JSON.',
			'errDataEmpty'         : 'Dane są puste.',
			'errCmdReq'            : 'Zaplecze wymaga podania nazwy polecenia.',
			'errOpen'              : 'Nie można otworzyć "$1".',
			'errNotFolder'         : 'Obiekt nie jest katalogiem.',
			'errNotFile'           : 'Obiekt nie jest plikiem.',
			'errRead'              : 'Nie można odczytać "$1".',
			'errWrite'             : 'Nie można zapisać do "$1".',
			'errPerm'              : 'Brak uprawnień.',
			'errLocked'            : '"$1" jest zablokowany i nie może zostać zmieniony, przeniesiony lub usunięty.',
			'errExists'            : 'Plik "$1" już istnieje.',
			'errInvName'           : 'Nieprawidłowa nazwa pliku.',
			'errInvDirname'        : 'Nieprawidłowa nazwa folderu.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Nie znaleziono folderu.',
			'errFileNotFound'      : 'Plik nie został znaleziony.',
			'errTrgFolderNotFound' : 'Katalog docelowy "$1" nie został znaleziony.',
			'errPopup'             : 'Przeglądarka zablokowała otwarcie nowego okna. Aby otworzyć plik, zmień ustawienia przeglądarki.',
			'errMkdir'             : 'Nie można utworzyć katalogu "$1".',
			'errMkfile'            : 'Nie można utworzyć pliku "$1".',
			'errRename'            : 'Nie można zmienić nazwy "$1".',
			'errCopyFrom'          : 'Kopiowanie z katalogu "$1" nie jest możliwe.',
			'errCopyTo'            : 'Kopiowanie do katalogu "$1" nie jest możliwe.',
			'errMkOutLink'         : 'Nie można utworzyć link do zewnętrznego katalogu głównego.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Błąd wysyłania.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nie można wysłać "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Nie znaleziono plików do wysłania.',
			'errUploadTotalSize'   : 'Przekroczono dopuszczalny rozmiar wysyłanych plików.', // old name - errMaxSize
			'errUploadFileSize'    : 'Plik przekracza dopuszczalny rozmiar.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Niedozwolony typ pliku.',
			'errUploadTransfer'    : 'Błąd przesyłania "$1".',
			'errUploadTemp'        : 'Nie można wykonać tymczasowego pliku do przesłania.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Obiekt "$1" istnieje już w tej lokalizacji i nie może być zastąpiony przez inny typ obiektu.', // new
			'errReplace'           : 'Nie można zastąpić "$1".',
			'errSave'              : 'Nie można zapisać "$1".',
			'errCopy'              : 'Nie można skopiować "$1".',
			'errMove'              : 'Nie można przenieść "$1".',
			'errCopyInItself'      : 'Nie można skopiować "$1" w miejsce jego samego.',
			'errRm'                : 'Nie można usunąć "$1".',
			'errTrash'             : 'Nie można do kosza.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Nie należy usunąć pliku(s) źródłowy.',
			'errExtract'           : 'Nie można wypakować plików z "$1".',
			'errArchive'           : 'Nie można utworzyć archiwum.',
			'errArcType'           : 'Nieobsługiwany typ archiwum.',
			'errNoArchive'         : 'Plik nie jest prawidłowym typem archiwum.',
			'errCmdNoSupport'      : 'Zaplecze nie obsługuje tego polecenia.',
			'errReplByChild'       : 'Nie można zastąpić katalogu "$1" elementem w nim zawartym',
			'errArcSymlinks'       : 'Ze względów bezpieczeństwa rozpakowywanie archiwów zawierających dowiązania symboliczne (symlinks) jest niedozwolone.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archiwum przekracza maksymalny dopuszczalny rozmiar.',
			'errResize'            : 'Nie można zmienić rozmiaru "$1".',
			'errResizeDegree'      : 'Nieprawidłowy stopień obracania.',  // added 7.3.2013
			'errResizeRotate'      : 'Nie można obrócić obrazu.',  // added 7.3.2013
			'errResizeSize'        : 'Nieprawidłowy rozmiar obrazu.',  // added 7.3.2013
			'errResizeNoChange'    : 'Nie zmieniono rozmiaru obrazu.',  // added 7.3.2013
			'errUsupportType'      : 'Nieobsługiwany typ pliku.',
			'errNotUTF8Content'    : 'Plik "$1" nie jest UTF-8 i nie może być edytowany.',  // added 9.11.2011
			'errNetMount'          : 'Nie można zamontować "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nieobsługiwany protokół.',     // added 17.04.2012
			'errNetMountFailed'    : 'Montowanie nie powiodło się.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host wymagany.', // added 18.04.2012
			'errSessionExpires'    : 'Twoja sesja wygasła z powodu nieaktywności.',
			'errCreatingTempDir'   : 'Nie można utworzyć katalogu tymczasowego: "$1"',
			'errFtpDownloadFile'   : 'Nie można pobrać pliku z FTP: "$1"',
			'errFtpUploadFile'     : 'Nie można przesłać pliku na serwer FTP: "$1"',
			'errFtpMkdir'          : 'Nie można utworzyć zdalnego katalogu FTP: "$1"',
			'errArchiveExec'       : 'Błąd podczas archiwizacji plików: "$1"',
			'errExtractExec'       : 'Błąd podczas wyodrębniania plików: "$1"',
			'errNetUnMount'        : 'Nie można odmontować', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nie wymienialne na UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Wypróbuj Google Chrome, jeśli chcesz przesłać katalog.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Upłynął limit czasu podczas wyszukiwania "$1". Wynik wyszukiwania jest częściowy.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Wymagana jest ponowna autoryzacja.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maks. liczba elementów do wyboru to $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nie można przywrócić z kosza. Nie można zidentyfikować przywrócić docelowego.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Nie znaleziono edytora tego typu pliku.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Wystąpił błąd po stronie serwera .', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nie można do pustego folderu "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Jest jeszcze $1 błąd/błędy.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Utwórz archiwum',
			'cmdback'      : 'Wstecz',
			'cmdcopy'      : 'Kopiuj',
			'cmdcut'       : 'Wytnij',
			'cmddownload'  : 'Pobierz',
			'cmdduplicate' : 'Duplikuj',
			'cmdedit'      : 'Edytuj plik',
			'cmdextract'   : 'Wypakuj pliki z archiwum',
			'cmdforward'   : 'Dalej',
			'cmdgetfile'   : 'Wybierz pliki',
			'cmdhelp'      : 'Informacje o programie',
			'cmdhome'      : 'Główny',
			'cmdinfo'      : 'Właściwości',
			'cmdmkdir'     : 'Nowy katalog',
			'cmdmkdirin'   : 'Do nowego katalogu', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nowy plik',
			'cmdopen'      : 'Otwórz',
			'cmdpaste'     : 'Wklej',
			'cmdquicklook' : 'Podgląd',
			'cmdreload'    : 'Odśwież',
			'cmdrename'    : 'Zmień nazwę',
			'cmdrm'        : 'Usuń',
			'cmdtrash'     : 'Do kosza', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Przywróć', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Wyszukaj pliki',
			'cmdup'        : 'Przejdź do katalogu nadrzędnego',
			'cmdupload'    : 'Wyślij pliki',
			'cmdview'      : 'Widok',
			'cmdresize'    : 'Zmień rozmiar i Obróć',
			'cmdsort'      : 'Sortuj',
			'cmdnetmount'  : 'Zamontuj wolumin sieciowy', // added 18.04.2012
			'cmdnetunmount': 'Odmontuj', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Do Miejsc', // added 28.12.2014
			'cmdchmod'     : 'Zmiana trybu', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Otwórz katalog', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Resetuj szerokość kolumny', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Pełny ekran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Przenieś', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Opróżnij folder', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Cofnij', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ponów', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferencje', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Zaznacz wszystko', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Odznacz wszystko', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Odwróć wybór', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Otwórz w nowym oknie', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ukryj (osobiste)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Zamknij',
			'btnSave'   : 'Zapisz',
			'btnRm'     : 'Usuń',
			'btnApply'  : 'Zastosuj',
			'btnCancel' : 'Anuluj',
			'btnNo'     : 'Nie',
			'btnYes'    : 'Tak',
			'btnMount'  : 'Montuj',  // added 18.04.2012
			'btnApprove': 'Idź do $1 & zatwierdź', // from v2.1 added 26.04.2012
			'btnUnmount': 'Odmontuj', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konwertuj', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Tutaj',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Wolumin',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Wszystko',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Typ MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nazwa pliku',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Zapisz & Zamknij', // from v2.1 added 12.6.2015
			'btnBackup' : 'Kopia zapasowa', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Zmień nazwę',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Zmień nazwę(Wszystkie)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Poprz ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Nast ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Zapisz Jako', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Otwieranie katalogu',
			'ntffile'     : 'Otwórz plik',
			'ntfreload'   : 'Odśwież zawartość katalogu',
			'ntfmkdir'    : 'Tworzenie katalogu',
			'ntfmkfile'   : 'Tworzenie plików',
			'ntfrm'       : 'Usuwanie plików',
			'ntfcopy'     : 'Kopiowanie plików',
			'ntfmove'     : 'Przenoszenie plików',
			'ntfprepare'  : 'Przygotowanie do kopiowania plików',
			'ntfrename'   : 'Zmiana nazw plików',
			'ntfupload'   : 'Wysyłanie plików',
			'ntfdownload' : 'Pobieranie plików',
			'ntfsave'     : 'Zapisywanie plików',
			'ntfarchive'  : 'Tworzenie archiwum',
			'ntfextract'  : 'Wypakowywanie plików z archiwum',
			'ntfsearch'   : 'Wyszukiwanie plików',
			'ntfresize'   : 'Zmiana rozmiaru obrazów',
			'ntfsmth'     : 'Robienie czegoś >_<',
			'ntfloadimg'  : 'Ładowanie obrazu',
			'ntfnetmount' : 'Montaż woluminu sieciowego', // added 18.04.2012
			'ntfnetunmount': 'Odłączanie woluminu sieciowego', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Pozyskiwanie wymiaru obrazu', // added 20.05.2013
			'ntfreaddir'  : 'Odczytywanie informacji katalogu', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Pobieranie URL linku', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Zmiana trybu pliku', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Weryfikacja nazwy przesłanego pliku', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Tworzenie pliku do pobrania', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Uzyskiwanie informacji o ścieżce', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Przetwarzanie przesłanego pliku', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Wykonuje wrzucanie do kosza', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Wykonuje przywracanie z kosza', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Sprawdzanie folderu docelowego', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Cofanie poprzedniej operacji', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ponownie poprzednio cofnięte', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Sprawdzanie zawartości', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Śmieci', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'nieznana',
			'Today'       : 'Dzisiaj',
			'Yesterday'   : 'Wczoraj',
			'msJan'       : 'Sty',
			'msFeb'       : 'Lut',
			'msMar'       : 'Mar',
			'msApr'       : 'Kwi',
			'msMay'       : 'Maj',
			'msJun'       : 'Cze',
			'msJul'       : 'Lip',
			'msAug'       : 'Sie',
			'msSep'       : 'Wrz',
			'msOct'       : 'Paź',
			'msNov'       : 'Lis',
			'msDec'       : 'Gru',
			'January'     : 'Styczeń',
			'February'    : 'Luty',
			'March'       : 'Marzec',
			'April'       : 'Kwiecień',
			'May'         : 'Maj',
			'June'        : 'Czerwiec',
			'July'        : 'Lipiec',
			'August'      : 'Sierpień',
			'September'   : 'Wrzesień',
			'October'     : 'Październik',
			'November'    : 'Listopad',
			'December'    : 'Grudzień',
			'Sunday'      : 'Niedziela',
			'Monday'      : 'Poniedziałek',
			'Tuesday'     : 'Wtorek',
			'Wednesday'   : 'Środa',
			'Thursday'    : 'Czwartek',
			'Friday'      : 'Piątek',
			'Saturday'    : 'Sobota',
			'Sun'         : 'Nie',
			'Mon'         : 'Pon',
			'Tue'         : 'Wto',
			'Wed'         : 'Śro',
			'Thu'         : 'Czw',
			'Fri'         : 'Pią',
			'Sat'         : 'Sob',

			/******************************** sort variants ********************************/
			'sortname'          : 'w/g nazwy',
			'sortkind'          : 'w/g typu',
			'sortsize'          : 'w/g rozmiaru',
			'sortdate'          : 'w/g daty',
			'sortFoldersFirst'  : 'katalogi pierwsze',
			'sortperm'          : 'wg/nazwy', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'wg/trybu',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'wg/właściciela',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'wg/grup',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Również drzewa katalogów',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NowyPlik.txt', // added 10.11.2015
			'untitled folder'   : 'NowyFolder',   // added 10.11.2015
			'Archive'           : 'NoweArchiwum',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NowyPlik.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 Plik',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Wymagane potwierdzenie',
			'confirmRm'       : 'Czy na pewno chcesz usunąć pliki?<br/>Tej operacji nie można cofnąć!',
			'confirmRepl'     : 'Zastąpić stary plik nowym?',
			'confirmRest'     : 'Zamienić istniejący element na pozycję w koszu?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nie w UTF-8<br/>Konwertować na UTF-8?<br/>Zawartość stanie się  UTF-8 poprzez zapisanie po konwersji.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Nie można wykryć kodowania tego pliku. Musi być tymczasowo przekształcony do UTF-8. <br/> Proszę wybrać kodowanie znaków tego pliku.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Został zmodyfikowany.<br/>Utracisz pracę, jeśli nie zapiszesz zmian.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Czy na pewno chcesz przenieść elementy do kosza?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Czy na pewno chcesz przenieść elementy do "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Zastosuj do wszystkich',
			'name'            : 'Nazwa',
			'size'            : 'Rozmiar',
			'perms'           : 'Uprawnienia',
			'modify'          : 'Zmodyfikowany',
			'kind'            : 'Typ',
			'read'            : 'odczyt',
			'write'           : 'zapis',
			'noaccess'        : 'brak dostępu',
			'and'             : 'i',
			'unknown'         : 'nieznany',
			'selectall'       : 'Zaznacz wszystkie pliki',
			'selectfiles'     : 'Zaznacz plik(i)',
			'selectffile'     : 'Zaznacz pierwszy plik',
			'selectlfile'     : 'Zaznacz ostatni plik',
			'viewlist'        : 'Widok listy',
			'viewicons'       : 'Widok ikon',
			'viewSmall'       : 'Małe ikony', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Średnie ikony', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Duże ikony', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Bardzo duże ikony', // from v2.1.39 added 22.5.2018
			'places'          : 'Ulubione',
			'calc'            : 'Obliczanie',
			'path'            : 'Ścieżka',
			'aliasfor'        : 'Alias do',
			'locked'          : 'Zablokowany',
			'dim'             : 'Wymiary',
			'files'           : 'Plik(ów)',
			'folders'         : 'Katalogi',
			'items'           : 'Element(ów)',
			'yes'             : 'tak',
			'no'              : 'nie',
			'link'            : 'Odnośnik',
			'searcresult'     : 'Wyniki wyszukiwania',
			'selected'        : 'zaznaczonych obiektów',
			'about'           : 'O programie',
			'shortcuts'       : 'Skróty klawiaturowe',
			'help'            : 'Pomoc',
			'webfm'           : 'Menedżer plików sieciowych',
			'ver'             : 'Wersja',
			'protocolver'     : 'wersja protokołu',
			'homepage'        : 'Strona projektu',
			'docs'            : 'Dokumentacja',
			'github'          : 'Obserwuj rozwój projektu na Github',
			'twitter'         : 'Śledź nas na Twitterze',
			'facebook'        : 'Dołącz do nas na Facebooku',
			'team'            : 'Zespół',
			'chiefdev'        : 'główny programista',
			'developer'       : 'programista',
			'contributor'     : 'współautor',
			'maintainer'      : 'koordynator',
			'translator'      : 'tłumacz',
			'icons'           : 'Ikony',
			'dontforget'      : 'i nie zapomnij zabrać ręcznika',
			'shortcutsof'     : 'Skróty klawiaturowe są wyłączone',
			'dropFiles'       : 'Upuść pliki tutaj',
			'or'              : 'lub',
			'selectForUpload' : 'Wybierz pliki',
			'moveFiles'       : 'Przenieś pliki',
			'copyFiles'       : 'Kopiuj pliki',
			'restoreFiles'    : 'Przywróć elementy', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Usuń z miejsc',
			'aspectRatio'     : 'Zachowaj proporcje',
			'scale'           : 'Skala',
			'width'           : 'Szerokość',
			'height'          : 'Wysokość',
			'resize'          : 'Zmień rozmiar',
			'crop'            : 'Przytnij',
			'rotate'          : 'Obróć',
			'rotate-cw'       : 'Obróć 90° w lewo',
			'rotate-ccw'      : 'Obróć 90° w prawo',
			'degree'          : '°',
			'netMountDialogTitle' : 'Montaż woluminu sieciowego', // added 18.04.2012
			'protocol'            : 'Protokół', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Użytkownik', // added 18.04.2012
			'pass'                : 'Hasło', // added 18.04.2012
			'confirmUnmount'      : 'Czy chcesz odmontować $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Upuść lub Wklej pliki z przeglądarki', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Upuść lub Wklej tutaj pliki i adresy URL', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodowanie', // from v2.1 added 19.12.2014
			'locale'          : 'Lokalne',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Docelowo: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Wyszukiwanie poprzez wpisanie typu MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Właściciel', // from v2.1 added 20.6.2015
			'group'           : 'Grupa', // from v2.1 added 20.6.2015
			'other'           : 'Inne', // from v2.1 added 20.6.2015
			'execute'         : 'Wykonaj', // from v2.1 added 20.6.2015
			'perm'            : 'Uprawnienia', // from v2.1 added 20.6.2015
			'mode'            : 'Tryb', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Katalog jest pusty', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Katalog jest pusty\\AUpuść aby dodać pozycje', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Katalog jest pusty\\ADotknij dłużej aby dodać pozycje', // from v2.1.6 added 30.12.2015
			'quality'         : 'Jakość', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto synchronizacja',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Przenieś w górę',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Pobierz URL linku', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Wybrane pozycje ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID Katalogu', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Zezwól na dostęp offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Aby ponownie uwierzytelnić', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Teraz ładuję...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Otwieranie wielu plików', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Próbujesz otworzyć $1 plików. Czy na pewno chcesz, aby otworzyć w przeglądarce?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Wynik wyszukiwania jest pusty', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Edytujesz plik.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Masz wybranych $1 pozycji.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Masz $1 pozycji w schowku.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Wyszukiwanie przyrostowe jest wyłącznie z bieżącego widoku.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Przywracanie', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 zakończone', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu kontekstowe', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Obracanie strony', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Wolumin główny', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetuj', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Kolor tła', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Wybierania kolorów', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Kratka', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Włączone', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Wyłączone', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Wyniki wyszukiwania są puste w bieżącym widoku.\\AWciśnij [Enter] aby poszerzyć zakres wyszukiwania.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Wyszukiwanie pierwszej litery brak wyników w bieżącym widoku.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etykieta tekstowa', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 min pozostało', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Otwórz ponownie z wybranym kodowaniem', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Zapisz z wybranym kodowaniem', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Wybierz katalog', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Wyszukiwanie pierwszej litery', // from v2.1.23 added 24.3.2017
			'presets'         : 'Wstępnie ustalone', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'To zbyt wiele rzeczy, więc nie mogą być w koszu.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'PoleTekstowe', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Opróżnij folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Brak elementów w folderze "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferencje', // from v2.1.26 added 28.6.2017
			'language'        : 'Ustawienie języka', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Zainicjuj ustawienia zapisane w tej przeglądarce', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Ustawienia paska narzędzi', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... pozostało $1 znak(ów).',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... pozostało $1 lini.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Suma', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Przybliżony rozmiar pliku', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Skoncentruj się na elemencie dialogowym po najechaniu myszą',  // from v2.1.30 added 2.11.2017
			'select'          : 'Wybierz', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Działanie po wybraniu pliku', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Otwórz za pomocą ostatnio używanego edytora', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Odwróć zaznaczenie', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Czy na pewno chcesz zmienić nazwę $1 wybranych elementów takich jak $2?<br/>Tego nie da się cofnąć!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Zmień partiami', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Liczba', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Dodaj prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Dodaj suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Zmień rozszerzenie', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Ustawienia kolumn (Widok listy)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Wszystkie zmiany widoczne natychmiast w archiwum.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Wszelkie zmiany nie będą widoczne, dopóki nie odłączysz tego woluminu.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Następujący wolumin (y), zamontowany na tym urządzeniu również niezamontowany. Czy na pewno chcesz go odmontować?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informacje Wyboru', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorytmy do pokazywania hash pliku', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Elementów (Wybór Panelu Informacyjnego)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Naciśnij ponownie, aby wyjść.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Pasek narzędziowy', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Obszar Pracy', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Wszystko', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Rozmiar Ikony (Podgląd ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Otwórz zmaksymalizowane okno edytora', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ponieważ konwersja przez API nie jest obecnie dostępna, należy dokonać konwersji w witrynie.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Po konwersji musisz przesłać z adresem URL pozycji lub pobranym plikiem, aby zapisać przekonwertowany plik.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konwertuj na stronie $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integracje', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Ten elFinder ma zintegrowane następujące usługi zewnętrzne. Przed użyciem ich sprawdź warunki użytkowania, politykę prywatności itp.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Pokaż ukryte pozycje', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Pokaż/Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Typy plików, które można włączyć za pomocą "Nowy plik"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Typ pliku tekstowego', // from v2.1.41 added 7.8.2018
			'add'             : 'Dodaj', // from v2.1.41 added 7.8.2018
			'theme'           : 'Motyw', // from v2.1.43 added 19.10.2018
			'default'         : 'Domyślnie', // from v2.1.43 added 19.10.2018
			'description'     : 'Opis', // from v2.1.43 added 19.10.2018
			'website'         : 'Witryna', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licencja', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Tego elementu nie można zapisać. Aby uniknąć utraty zmian, musisz wyeksportować go na swój komputer.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Kliknij dwukrotnie plik, aby go wybrać.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Użyj trybu pełnoekranowego', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Nieznany',
			'kindRoot'        : 'Główny Wolumin', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Katalog',
			'kindSelects'     : 'Zaznaczenie', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Utracony alias',
			// applications
			'kindApp'         : 'Aplikacja',
			'kindPostscript'  : 'Dokument Postscript',
			'kindMsOffice'    : 'Dokument Office',
			'kindMsWord'      : 'Dokument Word',
			'kindMsExcel'     : 'Dokument Excel',
			'kindMsPP'        : 'Prezentacja PowerPoint',
			'kindOO'          : 'Dokument OpenOffice',
			'kindAppFlash'    : 'Aplikacja Flash',
			'kindPDF'         : 'Dokument przenośny PDF',
			'kindTorrent'     : 'Plik BitTorrent',
			'kind7z'          : 'Archiwum 7z',
			'kindTAR'         : 'Archiwum TAR',
			'kindGZIP'        : 'Archiwum GZIP',
			'kindBZIP'        : 'Archiwum BZIP',
			'kindXZ'          : 'Archiwum XZ',
			'kindZIP'         : 'Archiwum ZIP',
			'kindRAR'         : 'Archiwum RAR',
			'kindJAR'         : 'Plik Java JAR',
			'kindTTF'         : 'Czcionka TrueType',
			'kindOTF'         : 'Czcionka OpenType',
			'kindRPM'         : 'Pakiet RPM',
			// texts
			'kindText'        : 'Dokument tekstowy',
			'kindTextPlain'   : 'Zwykły tekst',
			'kindPHP'         : 'Kod źródłowy PHP',
			'kindCSS'         : 'Kaskadowe arkusze stylów',
			'kindHTML'        : 'Dokument HTML',
			'kindJS'          : 'Kod źródłowy Javascript',
			'kindRTF'         : 'Tekst sformatowany RTF',
			'kindC'           : 'Kod źródłowy C',
			'kindCHeader'     : 'Plik nagłówka C',
			'kindCPP'         : 'Kod źródłowy C++',
			'kindCPPHeader'   : 'Plik nagłówka C++',
			'kindShell'       : 'Skrypt powłoki Unix',
			'kindPython'      : 'Kod źródłowy Python',
			'kindJava'        : 'Kod źródłowy Java',
			'kindRuby'        : 'Kod źródłowy Ruby',
			'kindPerl'        : 'Skrypt Perl',
			'kindSQL'         : 'Kod źródłowy SQL',
			'kindXML'         : 'Dokument XML',
			'kindAWK'         : 'Kod źródłowy AWK',
			'kindCSV'         : 'Tekst rozdzielany przecinkami CSV',
			'kindDOCBOOK'     : 'Dokument Docbook XML',
			'kindMarkdown'    : 'Tekst promocyjny', // added 20.7.2015
			// images
			'kindImage'       : 'Obraz',
			'kindBMP'         : 'Obraz BMP',
			'kindJPEG'        : 'Obraz JPEG',
			'kindGIF'         : 'Obraz GIF',
			'kindPNG'         : 'Obraz PNG',
			'kindTIFF'        : 'Obraz TIFF',
			'kindTGA'         : 'Obraz TGA',
			'kindPSD'         : 'Obraz Adobe Photoshop',
			'kindXBITMAP'     : 'Obraz X BitMap',
			'kindPXM'         : 'Obraz Pixelmator',
			// media
			'kindAudio'       : 'Plik dźwiękowy',
			'kindAudioMPEG'   : 'Plik dźwiękowy MPEG',
			'kindAudioMPEG4'  : 'Plik dźwiękowy MPEG-4',
			'kindAudioMIDI'   : 'Plik dźwiękowy MIDI',
			'kindAudioOGG'    : 'Plik dźwiękowy Ogg Vorbis',
			'kindAudioWAV'    : 'Plik dźwiękowy WAV',
			'AudioPlaylist'   : 'Lista odtwarzania MP3',
			'kindVideo'       : 'Plik wideo',
			'kindVideoDV'     : 'Plik wideo DV',
			'kindVideoMPEG'   : 'Plik wideo MPEG',
			'kindVideoMPEG4'  : 'Plik wideo MPEG-4',
			'kindVideoAVI'    : 'Plik wideo AVI',
			'kindVideoMOV'    : 'Plik wideo Quick Time',
			'kindVideoWM'     : 'Plik wideo Windows Media',
			'kindVideoFlash'  : 'Plik wideo Flash',
			'kindVideoMKV'    : 'Plik wideo Matroska',
			'kindVideoOGG'    : 'Plik wideo Ogg'
		}
	};
}));

lib/js/i18n/elfinder.id.js000064400000102244147361034410011234 0ustar00/**
 * Bahasa Indonesia translation
 * @author Suyadi <1441177004009@student.unsika.ac.id>
 * @author Ammar Faizi <ammarfaizi2@gmail.com>
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.id = {
		translator : 'Suyadi &lt;1441177004009@student.unsika.ac.id&gt;, Ammar Faizi &lt;ammarfaizi2@gmail.com&gt;',
		language   : 'Bahasa Indonesia',
		direction  : 'ltr',
		dateFormat : 'j F, Y H:i', // will show like: 2 Maret, 2022 12:14
		fancyDateFormat : '$1 H:i', // will show like: Hari ini 12:14
		nonameDateFormat : 'd m Y - H : i : s', // noname upload will show like: 02 03 2022 - 12 : 14 : 15
		messages   : {
			'getShareText' : 'Membagikan',
			'Editor ': 'Editor Kode',

			/********************************** errors **********************************/
			'error'                : 'Kesalahan',
			'errUnknown'           : 'Kesalahan tak dikenal.',
			'errUnknownCmd'        : 'Perintah tak dikenal.',
			'errJqui'              : 'Konfigurasi jQuery UI tidak valid. Komponen pemilih, penyeret dan penaruh harus disertakan.',
			'errNode'              : 'elFinder membutuhkan pembuatan elemen DOM.',
			'errURL'               : 'Konfigurasi elFinder tidak valid! opsi URL belum diatur.',
			'errAccess'            : 'Akses ditolak.',
			'errConnect'           : 'Tidak dapat tersambung ke backend.',
			'errAbort'             : 'Koneksi dibatalkan.',
			'errTimeout'           : 'Waktu koneksi habis.',
			'errNotFound'          : 'Backend tidak ditemukan.',
			'errResponse'          : 'Respon backend tidak valid.',
			'errConf'              : 'Konfigurasi elFinder tidak valid.',
			'errJSON'              : 'Modul PHP JSON belum terpasang.',
			'errNoVolumes'         : 'Tidak tersedia ruang kosong.',
			'errCmdParams'         : 'Parameter perintah "$1" tidak valid.',
			'errDataNotJSON'       : 'Data bukan merupakan JSON.',
			'errDataEmpty'         : 'Data masih kosong.',
			'errCmdReq'            : 'Permintaan ke backend membutuhkan nama perintah.',
			'errOpen'              : 'Tidak dapat membuka "$1".',
			'errNotFolder'         : 'Obyek ini bukan folder.',
			'errNotFile'           : 'Obyek ini bukan berkas.',
			'errRead'              : 'Tidak dapat membaca "$1".',
			'errWrite'             : 'Tidak dapat menulis ke "$1".',
			'errPerm'              : 'Ijin ditolak.',
			'errLocked'            : '"$1" ini terkunci dan tak dapat dipidahkan, diubah atau dihapus.',
			'errExists'            : 'Berkas bernama "$1" sudah ada.',
			'errInvName'           : 'Nama berkas tidak valid.',
			'errInvDirname'        : 'Nama folder salah.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Folder tidak ditemukan.',
			'errFileNotFound'      : 'Berkas tidak ditemukan.',
			'errTrgFolderNotFound' : 'Folder tujuan "$1" tidak ditemukan.',
			'errPopup'             : 'Peramban anda mencegah untuk membuka jendela munculan. Untuk dapat membuka berkas ini ubah pengaturan pada peramban anda.',
			'errMkdir'             : 'Tidak dapat membuat folder "$1".',
			'errMkfile'            : 'Tidak dapat membuat berkas "$1".',
			'errRename'            : 'Tidak dapat mengubah nama "$1".',
			'errCopyFrom'          : 'Tidak diizinkan menyalin berkas dari volume "$1".',
			'errCopyTo'            : 'tidak diizinkan menyalin berkas ke volume "$1".',
			'errMkOutLink'         : 'Tidak dapat membuat tautan diluar volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Kesalahan saat mengunggah.',  // old name - errUploadCommon
			'errUploadFile'        : 'Tidak dapat mengunggah "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Tak ada berkas untuk diunggah.',
			'errUploadTotalSize'   : 'Data melampaui ukuran yang diperbolehkan.', // old name - errMaxSize
			'errUploadFileSize'    : 'Berkas melampaui ukuran yang diperbolehkan.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Jenis berkas ini tidak diijinkan.',
			'errUploadTransfer'    : 'Kesalahan transfer "$1".',
			'errUploadTemp'        : 'Tidak dapat membuat file sementara untuk diupload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Obyek "$1" sudah ada di lokasi ini dan tidak dapat ditimpa oleh obyek jenis lain.', // new
			'errReplace'           : 'Tidak dapat menimpa "$1".',
			'errSave'              : 'Tidak dapat menyimpan "$1".',
			'errCopy'              : 'Tidak dapat menyalin "$1".',
			'errMove'              : 'Tidak dapat memindahkan "$1".',
			'errCopyInItself'      : 'Tidak dapat menyalin "$1" ke dirinya sendiri.',
			'errRm'                : 'Tidak dapat menghapus "$1".',
			'errTrash'             : 'Tidak dapat masuk ke tempat sampah.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Tidak dapat menghapus sumber berkas.',
			'errExtract'           : 'Tidak dapat mengekstrak berkas dari "$1".',
			'errArchive'           : 'Tidak dapat membuat arsip.',
			'errArcType'           : 'Jenis arsip tidak didukung.',
			'errNoArchive'         : 'Berkas ini bukan arsip atau arsip jenis ini tidak didukung.',
			'errCmdNoSupport'      : 'Backend tidak mendukung perintah ini.',
			'errReplByChild'       : 'Folder “$1” tidak dapat ditimpa dengan berkas didalamnya.',
			'errArcSymlinks'       : 'Untuk keamanan tak diijinkan mengekstrak arsip berisi symlink atau jenis berkas yang tak diijinkan.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arsip ini melampaui ukuran yang diijinkan.',
			'errResize'            : 'Tidak dapat mengubah ukuran "$1".',
			'errResizeDegree'      : 'Derajat putaran tidak valid.',  // added 7.3.2013
			'errResizeRotate'      : 'Citra tidak diputar.',  // added 7.3.2013
			'errResizeSize'        : 'Ukuran citra tidak valid.',  // added 7.3.2013
			'errResizeNoChange'    : 'Ukuran citra tidak diubah.',  // added 7.3.2013
			'errUsupportType'      : 'Jenis berkas tidak didukung.',
			'errNotUTF8Content'    : 'Berkas "$1" tidak dalam format UTF-8 dan tidak dapat disunting.',  // added 9.11.2011
			'errNetMount'          : 'Tidak dapat membaca susunan "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protokol tidak didukung.',     // added 17.04.2012
			'errNetMountFailed'    : 'Tidak dapat membaca susunannya.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host harus ada.', // added 18.04.2012
			'errSessionExpires'    : 'Sesi anda telah kadaluwarsa karena lama tidak aktif.',
			'errCreatingTempDir'   : 'Tidak dapat membuat direktori sementara: "$1"',
			'errFtpDownloadFile'   : 'Tidak dapat mengunduh berkas dari FTP: "$1"',
			'errFtpUploadFile'     : 'Tidak dapat mengunggah berkas dari FTP: "$1"',
			'errFtpMkdir'          : 'Tidak dapat membuat remot direktori dari FTP: "$1"',
			'errArchiveExec'       : 'Kesalahan saat mengarsipkan berkas: "$1"',
			'errExtractExec'       : 'Kesalahan saat mengekstrak berkas: "$1"',
			'errNetUnMount'        : 'Tidak dapat melakukan mount.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Tidak cocok untuk konversi ke UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Coba dengan browser yang modern, Jika akan mengupload folder.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Waktu habis selama melakukan pencarian "$1". Hasil sementara.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-authorization dibutuhkan.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Berkas maksimal yang dipilih adalah $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Tidak dapat mengembalikan berkas dari tempat sampah. Tujuan tidak ditemukan.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Tidak ditemukan editor untuk file tipe ini.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Terjadi kesalahan di sisi server.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Tidak dapat mengosongkan folder "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Ada $1 kesalahan lagi.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Anda dapat membuat hingga $1 folder sekaligus.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Buat arsip',
			'cmdback'      : 'Kembali',
			'cmdcopy'      : 'Salin',
			'cmdcut'       : 'Potong',
			'cmddownload'  : 'Unduh',
			'cmdduplicate' : 'Gandakan',
			'cmdedit'      : 'Sunting berkas',
			'cmdextract'   : 'Ekstrak berkas dari arsip',
			'cmdforward'   : 'Maju',
			'cmdgetfile'   : 'Pilih berkas',
			'cmdhelp'      : 'Tentang software ini',
			'cmdhome'      : 'Rumah',
			'cmdinfo'      : 'Dapatkan info',
			'cmdmkdir'     : 'Buat folder',
			'cmdmkdirin'   : 'Masuk ke folder baru', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Buat fail',
			'cmdopen'      : 'Buka',
			'cmdpaste'     : 'Tempel',
			'cmdquicklook' : 'Pratinjau',
			'cmdreload'    : 'Muat-ulang',
			'cmdrename'    : 'Ganti nama',
			'cmdrm'        : 'Hapus',
			'cmdtrash'     : 'Sampahkan', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Kembalikan', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Cari berkas',
			'cmdup'        : 'Ke direktori utama',
			'cmdupload'    : 'Unggah berkas',
			'cmdview'      : 'Lihat',
			'cmdresize'    : 'Ubah ukuran & Putar',
			'cmdsort'      : 'Urutkan',
			'cmdnetmount'  : 'Baca-susun volume jaringan', // added 18.04.2012
			'cmdnetunmount': 'Lepas', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Ke Tempat', // added 28.12.2014
			'cmdchmod'     : 'Mode mengubah', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Membuka folder', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Setel ulang lebar kolom', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Layar Penuh', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Pindah', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Kosongkan foldernya', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Membuka', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Mengulangi', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferensi', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Pilih Semua', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Pilih tidak ada', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Pilihan sebaliknya', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Buka di jendela baru', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Sembunyikan (Preferensi)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Tutup',
			'btnSave'   : 'Simpan',
			'btnRm'     : 'Buang',
			'btnApply'  : 'Terapkan',
			'btnCancel' : 'Batal',
			'btnNo'     : 'Tidak',
			'btnYes'    : 'Ya',
			'btnMount'  : 'Baca susunan',  // added 18.04.2012
			'btnApprove': 'Menuju ke $1 & setujui', // from v2.1 added 26.04.2012
			'btnUnmount': 'Lepas', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konversi', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Disini',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Semua',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Jenis MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nama file',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Simpan & Tutup', // from v2.1 added 12.6.2015
			'btnBackup' : 'Cadangan', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Ubah nama',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Ubah nama(Semua)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Sebelumnya ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Selanjutnya ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Simpan sebagai', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Buka folder',
			'ntffile'     : 'Buka berkas',
			'ntfreload'   : 'Muat-ulang isi folder',
			'ntfmkdir'    : 'Membuat direktori',
			'ntfmkfile'   : 'Membuat berkas',
			'ntfrm'       : 'Menghapus berkas',
			'ntfcopy'     : 'Salin berkas',
			'ntfmove'     : 'Pindahkan berkas',
			'ntfprepare'  : 'Persiapan menyalin berkas',
			'ntfrename'   : 'Ubah nama berkas',
			'ntfupload'   : 'Unggah berkas',
			'ntfdownload' : 'Mengunduh berkas',
			'ntfsave'     : 'Simpan berkas',
			'ntfarchive'  : 'Membuat arsip',
			'ntfextract'  : 'Mengekstrak berkas dari arsip',
			'ntfsearch'   : 'Mencari berkas',
			'ntfresize'   : 'Mengubah ukuran citra',
			'ntfsmth'     : 'Melakukan sesuatu',
			'ntfloadimg'  : 'Memuat citra',
			'ntfnetmount' : 'Membaca susunan volume jaringan', // added 18.04.2012
			'ntfnetunmount': 'Melepas volume jaringan', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Mendapatkan dimensi citra', // added 20.05.2013
			'ntfreaddir'  : 'Membaca informasi folder', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Mendapatkan URL dari link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Dalam mode mengubah', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Sedang memverifikasi nama file yang diupload', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Membuat file untuk didownload', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Mengambil informasi path', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Sedang mengupload file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Sedang melempar ke tempat sampah', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Sedang mengembalikan dari tempat sampah', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Mengecek folder tujuan', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Mengurungkan operasi sebelumnya', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Mengulangi yang dibatalkan sebelumnya', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Memeriksa konten', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Sampah', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'tak diketahui',
			'Today'       : 'Hari ini',
			'Yesterday'   : 'Kemarin',
			'msJan'       : 'Jan',
			'msFeb'       : 'Februari',
			'msMar'       : 'Merusak',
			'msApr'       : 'April',
			'msMay'       : 'Mei',
			'msJun'       : 'Jun',
			'msJul'       : 'Juli',
			'msAug'       : 'Agt',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nop',
			'msDec'       : 'Des',
			'January'     : 'Januari',
			'February'    : 'Pebruari',
			'March'       : 'Maret',
			'April'       : 'April',
			'May'         : 'Mei',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'Agustus',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'Nopember',
			'December'    : 'Desember',
			'Sunday'      : 'Minggu',
			'Monday'      : 'Senin',
			'Tuesday'     : 'Selasa',
			'Wednesday'   : 'Rabu',
			'Thursday'    : 'Kamis',
			'Friday'      : 'Jum \'at',
			'Saturday'    : 'Sabtu',
			'Sun'         : 'Min',
			'Mon'         : 'Sen',
			'Tue'         : 'Sel',
			'Wed'         : 'Rab',
			'Thu'         : 'Kam',
			'Fri'         : 'Jum',
			'Sat'         : 'Sab',

			/******************************** sort variants ********************************/
			'sortname'          : 'menurut nama',
			'sortkind'          : 'menurut jenis',
			'sortsize'          : 'menurut ukuran',
			'sortdate'          : 'menurut tanggal',
			'sortFoldersFirst'  : 'Utamakan folder',
			'sortperm'          : 'menurut perizinan', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'menurut mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'menurut pemilik',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'menurut grup',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Juga Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'FileBaru.txt', // added 10.11.2015
			'untitled folder'   : 'FolderBaru',   // added 10.11.2015
			'Archive'           : 'ArsipBaru',  // from v2.1 added 10.11.2015
			'untitled file'     : 'File Baru.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Berkas',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Diperlukan konfirmasi',
			'confirmRm'       : 'Anda yakin akan menghapus berkas?<br/>Ini tidak dapat kembalikan!',
			'confirmRepl'     : 'Timpa berkas lama dengan yang baru?',
			'confirmRest'     : 'Timpa berkas yang ada dengan berkas dari sampah?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Bukan UTF-8<br/>Konversi ke UTF-8?<br/>Konten akan berubah menjadi UTF-8 ketika disimpan dengan konversi.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Encoding karakter file ini tidak dapat dideteksi. Itu perlu dikonversi sementara ke UTF-8 untuk diedit.<br/>Silakan pilih pengkodean karakter dari file ini.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Telah terjadi perubahan.<br/>Kehilangan perkerjaan jika kamu tidak menyimpan.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Anda yakin untuk membuang berkas ke tempat sampah?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Anda yakin ingin memindahkan item ke "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Terapkan ke semua',
			'name'            : 'Nama',
			'size'            : 'Ukuran',
			'perms'           : 'Perijinan',
			'modify'          : 'Diubah',
			'kind'            : 'Jenis',
			'read'            : 'baca',
			'write'           : 'tulis',
			'noaccess'        : 'tidak ada akses',
			'and'             : 'dan',
			'unknown'         : 'tak diketahui',
			'selectall'       : 'Pilih semua berkas',
			'selectfiles'     : 'Pilih berkas',
			'selectffile'     : 'Pilih berkas pertama',
			'selectlfile'     : 'Pilih berkas terakhir',
			'viewlist'        : 'Tampilan daftar',
			'viewicons'       : 'Tampilan ikon',
			'viewSmall'       : 'Ikon kecil', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ikon sedang', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ikon besar', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ikon ekstra besar', // from v2.1.39 added 22.5.2018
			'places'          : 'Lokasi',
			'calc'            : 'Hitung',
			'path'            : 'Alamat',
			'aliasfor'        : 'Nama lain untuk',
			'locked'          : 'Dikunci',
			'dim'             : 'Dimensi',
			'files'           : 'Berkas',
			'folders'         : 'Folder',
			'items'           : 'Pokok',
			'yes'             : 'ya',
			'no'              : 'tidak',
			'link'            : 'Tautan',
			'searcresult'     : 'Hasil pencarian',
			'selected'        : 'Pokok terpilih',
			'about'           : 'Tentang',
			'shortcuts'       : 'Pintasan',
			'help'            : 'Bantuan',
			'webfm'           : 'Pengelola berkas web',
			'ver'             : 'Versi',
			'protocolver'     : 'versi protokol',
			'homepage'        : 'Rumah proyek',
			'docs'            : 'Dokumentasi',
			'github'          : 'Ambil kami di Github',
			'twitter'         : 'Ikuti kami di twitter',
			'facebook'        : 'Gabung dengan kami di facebook',
			'team'            : 'Tim',
			'chiefdev'        : 'kepala pengembang',
			'developer'       : 'pengembang',
			'contributor'     : 'kontributor',
			'maintainer'      : 'pengurus',
			'translator'      : 'penerjemah',
			'icons'           : 'Ikon',
			'dontforget'      : 'dan jangan lupa pakai handukmu',
			'shortcutsof'     : 'Pintasan dimatikan',
			'dropFiles'       : 'Seret berkas anda kesini',
			'or'              : 'atau',
			'selectForUpload' : 'Pilih berkas untuk diunggah',
			'moveFiles'       : 'Pindahkan berkas',
			'copyFiles'       : 'Salin berkas',
			'restoreFiles'    : 'Kembalikan berkas', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Hapus dari lokasi',
			'aspectRatio'     : 'Aspek rasio',
			'scale'           : 'Skala',
			'width'           : 'Lebar',
			'height'          : 'Tinggi',
			'resize'          : 'Ubah ukuran',
			'crop'            : 'Potong',
			'rotate'          : 'Putar',
			'rotate-cw'       : 'Putar 90 derajat ke kanan',
			'rotate-ccw'      : 'Putar 90 derajat ke kiri',
			'degree'          : '°',
			'netMountDialogTitle' : 'Baca susunan volume jaringan', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Tuan rumah', // added 18.04.2012
			'port'                : 'Pelabuhan', // added 18.04.2012
			'user'                : 'Pengguna', // added 18.04.2012
			'pass'                : 'Sandi', // added 18.04.2012
			'confirmUnmount'      : 'Apakah anda unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Seret atau Tempel file dari browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Seret file, Tempel URL atau gambar dari clipboard', // from v2.1 added 07.04.2014
			'encoding'        : 'pengkodean', // from v2.1 added 19.12.2014
			'locale'          : 'Lokasi',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Mencari berdasarkan inpu MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Pemilik', // from v2.1 added 20.6.2015
			'group'           : 'Grup', // from v2.1 added 20.6.2015
			'other'           : 'Lainnya', // from v2.1 added 20.6.2015
			'execute'         : 'Eksekusi', // from v2.1 added 20.6.2015
			'perm'            : 'Izin', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Folder kosong', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Folder kosong\\A Seret untuk tambahkan berkas', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Folder kosong\\A Tekan yang lama untuk tambahkan berkas', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kualitas', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Sinkronasi Otomatis',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Pindah ke atas',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Mendepatkan URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : '($1) berkas dipilih', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID Folder', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Izin akses offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Untuk mengautentikasi ulang', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Sedang memuat...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Membuka file bersamaan', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Anda mencoba membuka file $1. Apakah anda ingin membuka di browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Hasil pencarian kosong dalam target', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Sedang mengedit file', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Anda memilih $1 berkas', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Kamu mempunyai $i berkas di clipboard', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Hanya pencarian bertamah untuk menampilkan tampilan sekarang', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Mengembalikan lagi', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 selesai', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu konteks', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Pembalikan halaman', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'akar volume', // from v2.1.16 added 16.9.2016
			'reset'           : 'Mengatur ulang', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Warna background', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Mengambil warna', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Kotak 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Diaktifkan', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Nonaktifkan', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Hasil pencarian kosong dalam tampilan saat ini.\\ATekan [Enter] untuk memperluas target pencarian.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Hasil pencarian huruf pertama kosong dalam tampilan saat ini.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Label teks', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 menit lagi', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Buka kembali dengan penyandian yang dipilih', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Simpan dengan pengkodean yang dipilih', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Pilih folder', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Pencarian huruf pertama', // from v2.1.23 added 24.3.2017
			'presets'         : 'Preset', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Itu terlalu banyak item sehingga tidak bisa menjadi sampah.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Area Teks', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Kosongkan folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Tidak ada item dalam folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferensi', // from v2.1.26 added 28.6.2017
			'language'        : 'Bahasa', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inisialisasi pengaturan yang disimpan di browser ini', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Pengaturan bilah alat', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 karakter tersisa.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 baris tersisa.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Jumlah', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Ukuran file kasar', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fokus pada elemen dialog dengan mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Pilih', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Tindakan saat memilih file', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Buka dengan editor yang digunakan terakhir kali', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Pilihan sebaliknya', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Anda yakin ingin mengganti nama $1 item terpilih seperti $2?<br/>Ini tidak dapat diurungkan!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Ganti nama batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nomor', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Tambahkan awalan', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Tambahkan akhiran', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Ubah ekstensi', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Pengaturan kolom (Tampilan daftar)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Semua perubahan akan langsung direfleksikan ke arsip.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Perubahan apa pun tidak akan terlihat sampai volume ini dilepas.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Volume berikut yang dipasang pada volume ini juga dilepas. Apakah Anda yakin untuk melepasnya?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Info Seleksi', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritma untuk menampilkan hash file', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Item Info (Panel Info Pilihan)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Tekan lagi untuk keluar.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Bilah Alat', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Ruang Kerja', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Semua', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ukuran Ikon (Tampilan ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Buka jendela editor yang dimaksimalkan', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Karena konversi oleh API saat ini tidak tersedia, harap konversi di situs web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Setelah konversi, Anda harus mengunggah dengan URL item atau file yang diunduh untuk menyimpan file yang dikonversi.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konversi di situs $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrasi', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'ElFinder ini memiliki layanan eksternal berikut yang terintegrasi. Silakan periksa syarat penggunaan, kebijakan privasi, dll. sebelum menggunakannya.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Tampilkan item tersembunyi', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Sembunyikan item tersembunyi', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Tampilkan/Sembunyikan item tersembunyi', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Jenis file untuk diaktifkan dengan "File baru"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Jenis file teks', // from v2.1.41 added 7.8.2018
			'add'             : 'Menambahkan', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Bawaan', // from v2.1.43 added 19.10.2018
			'description'     : 'Keterangan', // from v2.1.43 added 19.10.2018
			'website'         : 'Situs web', // from v2.1.43 added 19.10.2018
			'author'          : 'Pengarang', // from v2.1.43 added 19.10.2018
			'email'           : 'Surel', // from v2.1.43 added 19.10.2018
			'license'         : 'Lisensi', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Item ini tidak dapat disimpan. Untuk menghindari kehilangan hasil edit, Anda perlu mengekspor ke PC Anda.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Klik dua kali pada file untuk memilihnya.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Gunakan mode layar penuh', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Tak diketahui',
			'kindRoot'        : 'Volume Akar', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Map',
			'kindSelects'     : 'Pilihan', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Nama lain',
			'kindAliasBroken' : 'Nama lain rusak',
			// applications
			'kindApp'         : 'Aplikasi',
			'kindPostscript'  : 'Dokumen postscript',
			'kindMsOffice'    : 'Dokumen Ms. Office',
			'kindMsWord'      : 'Dokumen Ms. Word',
			'kindMsExcel'     : 'Dokumen Ms. Excel',
			'kindMsPP'        : 'Dokumen Ms. Powerpoint',
			'kindOO'          : 'Dokumen Open Office',
			'kindAppFlash'    : 'Aplikasi Flash',
			'kindPDF'         : 'Portable Dokumen Format (PDF)',
			'kindTorrent'     : 'Berkas Bittorrent',
			'kind7z'          : 'Arsip 7z',
			'kindTAR'         : 'Arsip TAR',
			'kindGZIP'        : 'Arsip GZIP',
			'kindBZIP'        : 'Arsip BZIP',
			'kindXZ'          : 'Arsip XZ',
			'kindZIP'         : 'Arsip ZIP',
			'kindRAR'         : 'Arsip RAR',
			'kindJAR'         : 'Berkas Java JAR',
			'kindTTF'         : 'Huruf True Type',
			'kindOTF'         : 'Huruf Open Type',
			'kindRPM'         : 'Paket RPM',
			// texts
			'kindText'        : 'Dokumen teks',
			'kindTextPlain'   : 'Berkas teks biasa',
			'kindPHP'         : 'Kode-sumber PHP',
			'kindCSS'         : 'Lembar bergaya susun',
			'kindHTML'        : 'Dokumen HTML',
			'kindJS'          : 'Kode-sumber Javascript',
			'kindRTF'         : 'Berkas Rich Text',
			'kindC'           : 'Kode-sumber C',
			'kindCHeader'     : 'Kode-sumber header C',
			'kindCPP'         : 'Kode-sumber C++',
			'kindCPPHeader'   : 'Kode-sumber header C++',
			'kindShell'       : 'Berkas shell Unix',
			'kindPython'      : 'Kode-sumber Python',
			'kindJava'        : 'Kode-sumber Java',
			'kindRuby'        : 'Kode-sumber Ruby',
			'kindPerl'        : 'Kode-sumber Perl',
			'kindSQL'         : 'Kode-sumber SQL',
			'kindXML'         : 'Dokumen XML',
			'kindAWK'         : 'Kode-sumber AWK',
			'kindCSV'         : 'Dokumen CSV',
			'kindDOCBOOK'     : 'Dokumen Docbook XML',
			'kindMarkdown'    : 'teks penurunan harga', // added 20.7.2015
			// images
			'kindImage'       : 'Citra',
			'kindBMP'         : 'Citra BMP',
			'kindJPEG'        : 'Citra JPEG',
			'kindGIF'         : 'Citra GIF',
			'kindPNG'         : 'Citra PNG',
			'kindTIFF'        : 'Citra TIFF',
			'kindTGA'         : 'Citra TGA',
			'kindPSD'         : 'Citra Adobe Photoshop',
			'kindXBITMAP'     : 'Citra X bitmap',
			'kindPXM'         : 'Citra Pixelmator',
			// media
			'kindAudio'       : 'Berkas audio',
			'kindAudioMPEG'   : 'Berkas audio MPEG',
			'kindAudioMPEG4'  : 'Berkas audio MPEG-4',
			'kindAudioMIDI'   : 'Berkas audio MIDI',
			'kindAudioOGG'    : 'Berkas audio Ogg Vorbis',
			'kindAudioWAV'    : 'Berkas audio WAV',
			'AudioPlaylist'   : 'Berkas daftar putar MP3',
			'kindVideo'       : 'Berkas video',
			'kindVideoDV'     : 'Berkas video DV',
			'kindVideoMPEG'   : 'Berkas video MPEG',
			'kindVideoMPEG4'  : 'Berkas video MPEG-4',
			'kindVideoAVI'    : 'Berkas video AVI',
			'kindVideoMOV'    : 'Berkas video Quick Time',
			'kindVideoWM'     : 'Berkas video Windows Media',
			'kindVideoFlash'  : 'Berkas video Flash',
			'kindVideoMKV'    : 'Berkas video Matroska',
			'kindVideoOGG'    : 'Berkas video Ogg'
		}
	};
}));

lib/js/i18n/elfinder.sr.js000064400000040550147361034410011265 0ustar00 /**
 * Serbian translation
 * @author Momčilo m0k1 Mićanović <moki.forum@gmail.com>
 * @version 2014-12-19
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sr = {
		translator : 'Momčilo m0k1 Mićanović &lt;moki.forum@gmail.com&gt;',
		language   : 'Srpski',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i',
		fancyDateFormat : '$1 H:i',
		messages   : {
			'getShareText' : 'Објави',
			'Editor ': 'Цоде Едитор',
			
			/********************************** errors **********************************/
			'error'                : 'Greška',
			'errUnknown'           : 'Nepoznata greška.',
			'errUnknownCmd'        : 'Nepoznata komanda.',
			'errJqui'              : 'Neispravna konfiguracija jQuery UI. Komponente koje mogu da se odabiru, povlače, izbacuju moraju biti uključene.',
			'errNode'              : 'elFinder zahteva DOM Element da bude kreiran.',
			'errURL'               : 'Neispravna elFinder konfiguracija! URL opcija nije postavljena.',
			'errAccess'            : 'Pristup odbijen.',
			'errConnect'           : 'Nije moguće povezivanje s skriptom.',
			'errAbort'             : 'Veza prekinuta.',
			'errTimeout'           : 'Veza odbačena.',
			'errNotFound'          : 'Skripta nije pronađena.',
			'errResponse'          : 'Neispravan odgovor skripte.',
			'errConf'              : 'Neispravna konfiguracija skripte.',
			'errJSON'              : 'PHP JSON modul nije instaliran.',
			'errNoVolumes'         : 'Vidljivi volumeni nisu dostupni.',
			'errCmdParams'         : 'Nevažeći parametri za komandu "$1".',
			'errDataNotJSON'       : 'Podaci nisu JSON.',
			'errDataEmpty'         : 'Podaci nisu prazni.',
			'errCmdReq'            : 'Skripta zahteva komandu.',
			'errOpen'              : 'Nemoguće otvoriti "$1".',
			'errNotFolder'         : 'Objekat nije folder.',
			'errNotFile'           : 'Objekat nije datoteka.',
			'errRead'              : 'Nemoguće pročitati "$1".',
			'errWrite'             : 'Nemoguće pisati u "$1".',
			'errPerm'              : 'Dozvola je odbijena.',
			'errLocked'            : '"$1" je zaključan i nemože biti preimenovan, premešten ili obrisan.',
			'errExists'            : 'Datoteka zvana "$1" već postoji.',
			'errInvName'           : 'Neispravno ime datoteke.',
			'errFolderNotFound'    : 'Folder nije pronađen.',
			'errFileNotFound'      : 'Datoteka nije pronađena.',
			'errTrgFolderNotFound' : 'Izabrani folder "$1" nije pronađen.',
			'errPopup'             : 'Pretraživač sprečava otvaranje iskačućih prozora. Da otvorite datoteku uključite iskačuće prozore u opcijama pretraživača.',
			'errMkdir'             : 'Nemoguće kreirati folder "$1".',
			'errMkfile'            : 'Nemoguće kreirati datoteku "$1".',
			'errRename'            : 'Nemoguće preimenovati datoteku "$1".',
			'errCopyFrom'          : 'Kopiranje datoteki sa "$1" nije dozvoljeno.',
			'errCopyTo'            : 'Kopiranje datoteki na "$1" nije dozvoljeno.',
			'errUpload'            : 'Greska pri slanju.',
			'errUploadFile'        : 'Nemoguće poslati "$1".',
			'errUploadNoFiles'     : 'Nisu pronađene datoteke za slanje.',
			'errUploadTotalSize'   : 'Podaci premašuju najveću dopuštenu veličinu.',
			'errUploadFileSize'    : 'Datoteka premašuje najveću dopuštenu veličinu.',
			'errUploadMime'        : 'Vrsta datoteke nije dopuštena.',
			'errUploadTransfer'    : '"$1" greška prilikom slanja.',
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Nemožeš sačuvati "$1".',
			'errCopy'              : 'Nemožeš kopirati "$1".',
			'errMove'              : 'Nemožeš premestiti "$1".',
			'errCopyInItself'      : 'Nemožeš kopirati "$1" na istu lokaciju.',
			'errRm'                : 'Nemožeš obrisati "$1".',
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Nemoguće izvaditi datoteke iz "$1".',
			'errArchive'           : 'Nemoguće kreirati arhivu.',
			'errArcType'           : 'Nepodržani tip arhive.',
			'errNoArchive'         : 'Datoteka nije arhiva ili je nepodržani tip arhive.',
			'errCmdNoSupport'      : 'Skripta nepodržava ovu komandu.',
			'errReplByChild'       : 'Folder “$1” ne može biti zamenut stavkom koju sadrži.',
			'errArcSymlinks'       : 'Zbog bezbednosnih razloga ne možete raspakovati arhive koje sadrže simboličke veze ili datoteke sa nedozvoljenim imenima.',
			'errArcMaxSize'        : 'Arhiva je dostigla maksimalnu veličinu.',
			'errResize'            : 'Nemoguće promeniti veličinu "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',
			'errResizeRotate'      : 'Unable to rotate image.',
			'errResizeSize'        : 'Invalid image size.',
			'errResizeNoChange'    : 'Image size not changed.',
			'errUsupportType'      : 'nepodržan tip datoteke.',
			'errNotUTF8Content'    : 'Datoteka "$1" nije u UTF-8  formati i ne može biti izmenjena.',
			'errNetMount'          : 'Nije moguće montirati "$1".',
			'errNetMountNoDriver'  : 'Nepodržani protokol.',
			'errNetMountFailed'    : 'Montiranje neuspelo.',
			'errNetMountHostReq'   : 'Host je potreban.',
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Kreiraj arhivu',
			'cmdback'      : 'Nazad',
			'cmdcopy'      : 'Kopiraj',
			'cmdcut'       : 'Iseci',
			'cmddownload'  : 'Preuzmi',
			'cmdduplicate' : 'Dupliraj',
			'cmdedit'      : 'Izmeni datoteku',
			'cmdextract'   : 'Raspakuj arhivu',
			'cmdforward'   : 'Napred',
			'cmdgetfile'   : 'Izaberi datoteke',
			'cmdhelp'      : 'O ovom softveru',
			'cmdhome'      : 'Početna',
			'cmdinfo'      : 'Proveri informacije',
			'cmdmkdir'     : 'Novi folder',
			'cmdmkfile'    : 'Nova datoteka',
			'cmdopen'      : 'Otvori',
			'cmdpaste'     : 'Zalepi',
			'cmdquicklook' : 'Pregledaj',
			'cmdreload'    : 'Povno učitaj',
			'cmdrename'    : 'Preimenuj',
			'cmdrm'        : 'Obriši',
			'cmdsearch'    : 'Pronađi datoteke',
			'cmdup'        : 'Idi na nadređeni folder',
			'cmdupload'    : 'Pošalji datoteke',
			'cmdview'      : 'Pogledaj',
			'cmdresize'    : 'Promeni veličinu slike',
			'cmdsort'      : 'Sortiraj',
			'cmdnetmount'  : 'Mount network volume',
			'cmdselectall': 'Одабери све',
			'cmdfullscreen': 'Цео екран',
			
			/*********************************** buttons ***********************************/ 
			'btnClose'  : 'Zatvori',
			'btnSave'   : 'Sačuvaj',
			'btnRm'     : 'Obriši',
			'btnApply'  : 'Potvrdi',
			'btnCancel' : 'Prekini',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Da',
			'btnMount'  : 'Mount',
			
			/******************************** notifications ********************************/
			'ntfopen'     : 'Otvaranje foldera',
			'ntffile'     : 'Otvaranje datoteke',
			'ntfreload'   : 'Ponovo učitavanje sadržaja foldera',
			'ntfmkdir'    : 'Kreiranje foldera',
			'ntfmkfile'   : 'Kreiranje datoteke',
			'ntfrm'       : 'Brisanje datoteke',
			'ntfcopy'     : 'Kopiranje datoteke',
			'ntfmove'     : 'Premeštanje datoteke',
			'ntfprepare'  : 'Priprema za kopiranje dateoteke',
			'ntfrename'   : 'Primenovanje datoteke',
			'ntfupload'   : 'Slanje datoteke',
			'ntfdownload' : 'Preuzimanje datoteke',
			'ntfsave'     : 'Čuvanje datoteke',
			'ntfarchive'  : 'Kreiranje arhive',
			'ntfextract'  : 'Izdvajanje datoteka iz arhive',
			'ntfsearch'   : 'Pretraga datoteka',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Radim nešto >_<',
			'ntfloadimg'  : 'Učitavanje slike',
			'ntfnetmount' : 'Montiranje mrežnog volumena', 
			'ntfdim'      : 'Acquiring image dimension',
			
			
			/************************************ dates **********************************/
			'dateUnknown' : 'nepoznat',
			'Today'       : 'Danas',
			'Yesterday'   : 'Sutra',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Avg',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Mart',
			'April'       : 'April',
			'May'         : 'Maj',
			'June'        : 'Jun',
			'July'        : 'Jul',
			'August'      : 'Avgust',
			'September'   : 'Septembar',
			'October'     : 'Oktobar',
			'November'    : 'Novembar',
			'December'    : 'Decembar',
			'Sunday'      : 'Nedelja', 
			'Monday'      : 'Ponedeljak', 
			'Tuesday'     : 'Utorak', 
			'Wednesday'   : 'Sreda', 
			'Thursday'    : 'Četvrtak', 
			'Friday'      : 'Petak', 
			'Saturday'    : 'Subota',
			'Sun'         : 'Ned', 
			'Mon'         : 'Pon', 
			'Tue'         : 'Uto', 
			'Wed'         : 'Sre', 
			'Thu'         : 'Čet', 
			'Fri'         : 'Pet', 
			'Sat'         : 'Sub',
			
			/******************************** sort variants ********************************/
			'sortname'          : 'po imenu', 
			'sortkind'          : 'po vrsti', 
			'sortsize'          : 'po veličini',
			'sortdate'          : 'po datumu',
			'sortFoldersFirst'  : 'Prvo folderi',

			/********************************** new items **********************************/
			'untitled file.txt' : 'Нова датотека.txt', // added 10.11.2015
			'untitled folder'   : 'НевФолдер',   // added 10.11.2015
			'Archive'           : 'НоваАрхива',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Нова датотека.$1',
			'extentionfile': "$1: Datoteka", // from v2.1.41 added 6.8.2018
      		'extentiontype': "$1: $2", // from v2.1.43 added 17.10.2018
			
			/********************************** messages **********************************/
			'confirmReq'      : 'Potrebna potvrda',
			'confirmRm'       : 'Da li ste sigurni da želite da obrišete datoteke?<br/>Ovo se ne može poništiti!',
			'confirmRepl'     : 'Zameniti stare datoteke sa novima?',
			'apllyAll'        : 'Potvrdi za sve',
			'name'            : 'Ime',
			'size'            : 'Veličina',
			'perms'           : 'Dozvole',
			'modify'          : 'Izmenjeno',
			'kind'            : 'Vrsta',
			'read'            : 'čitanje',
			'write'           : 'pisanje',
			'noaccess'        : 'bez pristupa',
			'and'             : 'i',
			'unknown'         : 'nepoznato',
			'selectall'       : 'Izaberi sve datoteke',
			'selectfiles'     : 'Izaberi datoteku(e)',
			'selectffile'     : 'Izaberi prvu datoteku',
			'selectlfile'     : 'Izaberi poslednju datoteku',
			'viewlist'        : 'Popisni prikaz',
			'viewicons'       : 'Pregled ikona',
			'places'          : 'Mesta',
			'calc'            : 'Izračunaj', 
			'path'            : 'Putanja',
			'aliasfor'        : 'Nadimak za',
			'locked'          : 'Zaključano',
			'dim'             : 'Dimenzije',
			'files'           : 'Datoteke',
			'folders'         : 'Folderi',
			'items'           : 'Stavke',
			'yes'             : 'da',
			'no'              : 'ne',
			'link'            : 'Veza',
			'searcresult'     : 'Rezultati pretrage',  
			'selected'        : 'odabrane stavke',
			'about'           : 'O softveru',
			'shortcuts'       : 'Prečice',
			'help'            : 'Pomoć',
			'webfm'           : 'Web menađer datoteka',
			'ver'             : 'Verzija',
			'protocolver'     : 'verzija protokla',
			'homepage'        : 'Adresa projekta',
			'docs'            : 'Dokumentacija',
			'github'          : 'Forkuj nas na Github',
			'twitter'         : 'Prati nas na twitter',
			'facebook'        : 'Pridruži nam se na facebook',
			'team'            : 'Tim',
			'chiefdev'        : 'glavni programer',
			'developer'       : 'programer',
			'contributor'     : 'pomoćnik',
			'maintainer'      : 'održavatelj',
			'translator'      : 'prevodilac',
			'icons'           : 'Ikone',
			'dontforget'      : 'i ne zaboravite da ponesete peškir',
			'shortcutsof'     : 'Prečice isključene',
			'dropFiles'       : 'Prevucite datoteke ovde',
			'or'              : 'ili',
			'selectForUpload' : 'Odaberite datoteke za slanje',
			'moveFiles'       : 'Premesti datoteke',
			'copyFiles'       : 'Kopiraj datoteke',
			'rmFromPlaces'    : 'Ukloni iz mesta',
			'aspectRatio'     : 'Omer širine i visine',
			'scale'           : 'Razmera',
			'width'           : 'Širina',
			'height'          : 'Visina',
			'resize'          : 'Promeni veličinu',
			'crop'            : 'Iseci',
			'rotate'          : 'Rotiraj',
			'rotate-cw'       : 'Rotiraj 90 stepeni CW',
			'rotate-ccw'      : 'Rotiraj 90 stepeni CCW',
			'degree'          : 'Stepeni',
			'netMountDialogTitle' : 'Montiraj mrežni volumen', 
			'protocol'            : 'Protokol', 
			'host'                : 'Host', 
			'port'                : 'Port', 
			'user'                : 'Korisničko Ime', 
			'pass'                : 'Lozinka', 

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Nepoznat',
			'kindFolder'      : 'Folder',
			'kindAlias'       : 'Nadimak',
			'kindAliasBroken' : 'Neispravan nadimak',
			// applications
			'kindApp'         : 'Aplikacija',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint prezentacija',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash aplikacija',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent datoteka',
			'kind7z'          : '7z arhiva',
			'kindTAR'         : 'TAR arhiva',
			'kindGZIP'        : 'GZIP arhiva',
			'kindBZIP'        : 'BZIP arhiva',
			'kindXZ'          : 'XZ arhiva',
			'kindZIP'         : 'ZIP arhiva',
			'kindRAR'         : 'RAR arhiva',
			'kindJAR'         : 'Java JAR datoteka',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM paket',
			// texts
			'kindText'        : 'Teokstualni dokument',
			'kindTextPlain'   : 'Čist tekst',
			'kindPHP'         : 'PHP kod',
			'kindCSS'         : 'CSS kod',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript kod',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C kod',
			'kindCHeader'     : 'C header kod',
			'kindCPP'         : 'C++ kod',
			'kindCPPHeader'   : 'C++ header kod',
			'kindShell'       : 'Unix shell skripta',
			'kindPython'      : 'Python kod',
			'kindJava'        : 'Java kod',
			'kindRuby'        : 'Ruby kod',
			'kindPerl'        : 'Perl skripta',
			'kindSQL'         : 'SQL kod',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK kod',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			// images
			'kindImage'       : 'Slika',
			'kindBMP'         : 'BMP slika',
			'kindJPEG'        : 'JPEG slika',
			'kindGIF'         : 'GIF slika',
			'kindPNG'         : 'PNG slika',
			'kindTIFF'        : 'TIFF slika',
			'kindTGA'         : 'TGA slika',
			'kindPSD'         : 'Adobe Photoshop slika',
			'kindXBITMAP'     : 'X bitmap slika',
			'kindPXM'         : 'Pixelmator slika',
			// media
			'kindAudio'       : 'Zvuk',
			'kindAudioMPEG'   : 'MPEG zvuk',
			'kindAudioMPEG4'  : 'MPEG-4 zvuk',
			'kindAudioMIDI'   : 'MIDI zvuk',
			'kindAudioOGG'    : 'Ogg Vorbis zvuk',
			'kindAudioWAV'    : 'WAV zvuk',
			'AudioPlaylist'   : 'MP3 lista',
			'kindVideo'       : 'Video',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));
lib/js/i18n/elfinder.he.js000064400000111705147361034410011236 0ustar00/**
 * עברית translation
 * @author Yaron Shahrabani <sh.yaron@gmail.com>
 * @version 2022-03-01
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.he = {
		translator : 'Yaron Shahrabani &lt;sh.yaron@gmail.com&gt;',
		language   : 'עברית',
		direction  : 'rtl',
		dateFormat : 'd.m.Y H:i', // will show like: 01.03.2022 16:25
		fancyDateFormat : '$1 H:i', // will show like: היום 16:25
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220301-162510
		messages   : {
			'getShareText' : 'שתפו',
			'Editor ': 'עורך קוד',
			/********************************** errors **********************************/
			'error'                : 'שגיאה',
			'errUnknown'           : 'שגיאה בלתי מוכרת.',
			'errUnknownCmd'        : 'פקודה בלתי מוכרת.',
			'errJqui'              : 'תצורת ה־jQuery UI שגויה. יש לכלול רכיבים הניתנים לבחירה, גרירה והשלכה.',
			'errNode'              : 'elFinder דורש יצירה של רכיב DOM.',
			'errURL'               : 'התצורה של elFinder שגויה! אפשרות הכתובת (URL) לא הוגדרה.',
			'errAccess'            : 'הגישה נדחית.',
			'errConnect'           : 'לא ניתן להתחבר למנגנון.',
			'errAbort'             : 'החיבור בוטל.',
			'errTimeout'           : 'זמן החיבור פג.',
			'errNotFound'          : 'לא נמצא מנגנון.',
			'errResponse'          : 'תגובת המנגנון שגויה.',
			'errConf'              : 'תצורת המנגנון שגויה.',
			'errJSON'              : 'המודול PHP JSON לא מותקן.',
			'errNoVolumes'         : 'אין כוננים זמינים לקריאה.',
			'errCmdParams'         : 'פרמטרים שגויים לפקודה „$1“.',
			'errDataNotJSON'       : 'הנתונים אינם JSON.',
			'errDataEmpty'         : 'הנתונים ריקים.',
			'errCmdReq'            : 'בקשה למנגנון דורשת שם פקודה.',
			'errOpen'              : 'לא ניתן לפתוח את „$1“.',
			'errNotFolder'         : 'הפריט אינו תיקייה.',
			'errNotFile'           : 'הפריט אינו קובץ.',
			'errRead'              : 'לא ניתן לקרוא את „$1“.',
			'errWrite'             : 'לא ניתן לכתוב אל „$1“.',
			'errPerm'              : 'ההרשאה נדחתה.',
			'errLocked'            : '„$1“ נעול ואין אפשרות לשנות את שמו, להעבירו או להסירו.',
			'errExists'            : 'קובץ בשם „$1“ כבר קיים.',
			'errInvName'           : 'שם הקובץ שגוי.',
			'errInvDirname'        : 'שם תיקייה לא חוקי.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'התיקייה לא נמצאה.',
			'errFileNotFound'      : 'הקובץ לא נמצא.',
			'errTrgFolderNotFound' : 'תיקיית היעד „$1“ לא נמצאה.',
			'errPopup'             : 'הדפדפן מנע פתיחת חלון קובץ. כדי לפתוח קובץ יש לאפשר זאת בהגדרות הדפדפן.',
			'errMkdir'             : 'לא ניתן ליצור את התיקייה „$1“.',
			'errMkfile'            : 'לא ניתן ליצור את הקובץ „$1“.',
			'errRename'            : 'לא ניתן לשנות את השם של „$1“.',
			'errCopyFrom'          : 'העתקת קבצים מהכונן „$1“ אינה מאופשרת.',
			'errCopyTo'            : 'העתקת קבצים אל הכונן „$1“ אינה מאופשרת.',
			'errMkOutLink'         : 'לא ניתן ליצור קישור אל מחוץ לשורש הנפח.', // from v2.1 added 03.10.2015
			'errUpload'            : 'שגיאת העלאה.',  // old name - errUploadCommon
			'errUploadFile'        : 'לא ניתן להעלות את „$1“.', // old name - errUpload
			'errUploadNoFiles'     : 'לא נמצאו קבצים להעלאה.',
			'errUploadTotalSize'   : 'הנתונים חורגים מהגודל המרבי המותר.', // old name - errMaxSize
			'errUploadFileSize'    : 'הקובץ חורג מהגודל המרבי המותר.', //  old name - errFileMaxSize
			'errUploadMime'        : 'סוג הקובץ אינו מורשה.',
			'errUploadTransfer'    : 'שגיאת העברה „$1“.',
			'errUploadTemp'        : 'לא ניתן ליצור קובץ זמני להעלאה.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'הפריט „$1“ כבר קיים במיקום זה ואי אפשר להחליפו בפריט מסוג אחר.', // new
			'errReplace'           : 'לא ניתן להחליף את „$1“.',
			'errSave'              : 'לא ניתן לשמור את „$1“.',
			'errCopy'              : 'לא ניתן להעתיק את „$1“.',
			'errMove'              : 'לא ניתן להעביר את „$1“.',
			'errCopyInItself'      : 'לא ניתן להעתיק את „$1“ לתוך עצמו.',
			'errRm'                : 'לא ניתן להסיר את „$1“.',
			'errTrash'             : 'לא ניתן לאשפה.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'לא ניתן להסיר את קובצי המקור.',
			'errExtract'           : 'לא ניתן לחלץ קבצים מהארכיון „$1“.',
			'errArchive'           : 'לא ניתן ליצור ארכיון.',
			'errArcType'           : 'סוג הארכיון אינו נתמך.',
			'errNoArchive'         : 'הקובץ אינו ארכיון או שסוג הקובץ שלו אינו נתמך.',
			'errCmdNoSupport'      : 'המנגנון אינו תומך בפקודה זו.',
			'errReplByChild'       : 'לא ניתן להחליף את התיקייה „$1“ בפריט מתוכה.',
			'errArcSymlinks'       : 'מטעמי אבטחה לא ניתן לחלץ ארכיונים שמכילים קישורים סימבוליים או קבצים עם שמות בלתי מורשים.', // edited 24.06.2012
			'errArcMaxSize'        : 'הארכיון חורג מהגודל המרבי המותר.',
			'errResize'            : 'לא ניתן לשנות את הגודל של „$1“.',
			'errResizeDegree'      : 'מעלות ההיפוך שגויות.',  // added 7.3.2013
			'errResizeRotate'      : 'לא ניתן להפוך את התמונה.',  // added 7.3.2013
			'errResizeSize'        : 'גודל התמונה שגוי.',  // added 7.3.2013
			'errResizeNoChange'    : 'גודל התמונה לא השתנה.',  // added 7.3.2013
			'errUsupportType'      : 'סוג הקובץ אינו נתמך.',
			'errNotUTF8Content'    : 'הקובץ „$1“ הוא לא בתסדיר UTF-8 ולא ניתן לערוך אותו.',  // added 9.11.2011
			'errNetMount'          : 'לא ניתן לעגן את „$1“.', // added 17.04.2012
			'errNetMountNoDriver'  : 'פרוטוקול בלתי נתמך.',     // added 17.04.2012
			'errNetMountFailed'    : 'העיגון נכשל.',         // added 17.04.2012
			'errNetMountHostReq'   : 'נדרש מארח.', // added 18.04.2012
			'errSessionExpires'    : 'ההפעלה שלך פגה עקב חוסר פעילות.',
			'errCreatingTempDir'   : 'לא ניתן ליצור תיקייה זמנית: „$1“',
			'errFtpDownloadFile'   : 'לא ניתן להוריד קובץ מ־ FTP: „$1“',
			'errFtpUploadFile'     : 'לא ניתן להעלות קובץ ל־FTP: „$1“',
			'errFtpMkdir'          : 'לא ניתן ליצור תיקייה מרוחקת ב־FTP: „$1“',
			'errArchiveExec'       : 'שמירת הקבצים בארכיון נכשלה: „$1“',
			'errExtractExec'       : 'חילוץ קבצים נכשל: „$1“',
			'errNetUnMount'        : 'Unable to unmount.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'לא ניתן להמרה ל-UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'נסה את הדפדפן המודרני, אם תרצה להעלות את התיקיה.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'תם הזמן הקצוב בזמן חיפוש "$1". תוצאת החיפוש היא חלקית.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'נדרש אישור מחדש.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'המספר המרבי של פריטים לבחירה הוא $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'לא ניתן לשחזר מהאשפה. לא ניתן לזהות את יעד השחזור.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'עורך לא נמצא לסוג קובץ זה.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'אירעה שגיאה בצד השרת.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'לא ניתן לרוקן את התיקייה "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'יש $1 שגיאות נוספות.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'אתה יכול ליצור עד $1 תיקיות בבת אחת.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'יצירת ארכיון',
			'cmdback'      : 'חזרה',
			'cmdcopy'      : 'העתקה',
			'cmdcut'       : 'גזירה',
			'cmddownload'  : 'הורדה',
			'cmdduplicate' : 'שכפול',
			'cmdedit'      : 'עריכת קובץ',
			'cmdextract'   : 'חילוץ קבצים מארכיון',
			'cmdforward'   : 'העברה',
			'cmdgetfile'   : 'בחירת קבצים',
			'cmdhelp'      : 'פרטים על התכנית הזו',
			'cmdhome'      : 'בית',
			'cmdinfo'      : 'קבלת מידע',
			'cmdmkdir'     : 'תיקייה חדשה',
			'cmdmkdirin'   : 'לתוך תיקייה חדשה', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'קובץ חדש',
			'cmdopen'      : 'פתיחה',
			'cmdpaste'     : 'הדבקה',
			'cmdquicklook' : 'תצוגה מקדימה',
			'cmdreload'    : 'רענון',
			'cmdrename'    : 'שינוי שם',
			'cmdrm'        : 'מחיקה',
			'cmdtrash'     : 'לפח', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'לשחזר', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'חיפוש קבצים',
			'cmdup'        : 'מעבר לתיקיית ההורה',
			'cmdupload'    : 'העלאת קבצים',
			'cmdview'      : 'תצוגה',
			'cmdresize'    : 'שינוי גודל והיפוך',
			'cmdsort'      : 'מיון',
			'cmdnetmount'  : 'עיגון כונן רשת', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'למקומות', // added 28.12.2014
			'cmdchmod'     : 'שנה מצב', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'פתח תיקיה', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'אפס את רוחב העמודה', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'מסך מלא', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'לָזוּז', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'רוקן את התיקיה', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'לבטל', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'לַעֲשׂוֹת שׁוּב', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'העדפות', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'בחר הכל', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'בחר אף אחד', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'בחירה הפוך', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'פתח בחלון חדש', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'הסתר (העדפה)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'סגירה',
			'btnSave'   : 'שמירה',
			'btnRm'     : 'הסרה',
			'btnApply'  : 'החלה',
			'btnCancel' : 'ביטול',
			'btnNo'     : 'לא',
			'btnYes'    : 'כן',
			'btnMount'  : 'עיגון',  // added 18.04.2012
			'btnApprove': 'עבור אל $1 ואשר', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'להמיר', // from v2.1 added 08.04.2014
			'btnCwd'    : 'כאן',      // from v2.1 added 22.5.2015
			'btnVolume' : 'כרך',    // from v2.1 added 22.5.2015
			'btnAll'    : 'את כל',       // from v2.1 added 22.5.2015
			'btnMime'   : 'סוג MIME', // from v2.1 added 22.5.2015
			'btnFileName':'שם קובץ',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'שמור וסגור', // from v2.1 added 12.6.2015
			'btnBackup' : 'גיבוי', // fromv2.1 added 28.11.2015
			'btnRename'    : 'שנה שם',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'שנה שם (הכל)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'הקודם ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'הבא ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'שמור בשם', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'פתיחת תיקייה',
			'ntffile'     : 'פתיחת קובץ',
			'ntfreload'   : 'רענון תוכן התיקייה',
			'ntfmkdir'    : 'תיקייה נוצרת',
			'ntfmkfile'   : 'קבצים נוצרים',
			'ntfrm'       : 'קבצים נמחקים',
			'ntfcopy'     : 'קבצים מועתקים',
			'ntfmove'     : 'קבצים מועברים',
			'ntfprepare'  : 'העתקת קבצים בהכנה',
			'ntfrename'   : 'שמות קבצים משתנים',
			'ntfupload'   : 'קבצים נשלחים',
			'ntfdownload' : 'קבצים מתקבלים',
			'ntfsave'     : 'שמירת קבצים',
			'ntfarchive'  : 'ארכיון נוצר',
			'ntfextract'  : 'מחולצים קבצים מארכיון',
			'ntfsearch'   : 'קבצים בחיפוש',
			'ntfresize'   : 'גודל קבצים משתנה',
			'ntfsmth'     : 'מתבצעת פעולה',
			'ntfloadimg'  : 'נטענת תמונה',
			'ntfnetmount' : 'כונן רשת מעוגן', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'ממדי תמונה מתקבלים', // added 20.05.2013
			'ntfreaddir'  : 'קריאת מידע על תיקיות', // from v2.1 added 01.07.2013
			'ntfurl'      : 'מקבל את כתובת האתר של הקישור', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'שינוי מצב קובץ', // from v2.1 added 20.6.2015
			'ntfpreupload': 'מאמת את שם הקובץ להעלאה', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'יצירת קובץ להורדה', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'קבלת מידע על נתיב', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'מעבד את הקובץ שהועלה', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'עושה לזרוק לפח', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'עושה שחזור מהאשפה', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'בודק תיקיית יעד', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'מבטל פעולה קודמת', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'ביצוע מחדש של ביטול קודמים', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'בדיקת תכולה', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'פַּח אַשׁפָּה', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'לא ידוע',
			'Today'       : 'היום',
			'Yesterday'   : 'מחר',
			'msJan'       : 'ינו׳',
			'msFeb'       : 'פבר׳',
			'msMar'       : 'מרץ',
			'msApr'       : 'אפר׳',
			'msMay'       : 'מאי',
			'msJun'       : 'יונ׳',
			'msJul'       : 'יול׳',
			'msAug'       : 'אוג׳',
			'msSep'       : 'ספט׳',
			'msOct'       : 'אוק׳',
			'msNov'       : 'נוב׳',
			'msDec'       : 'דצמ׳',
			'January'     : 'ינואר',
			'February'    : 'פברואר',
			'March'       : 'מרץ',
			'April'       : 'אפריל',
			'May'         : 'מאי',
			'June'        : 'יוני',
			'July'        : 'יולי',
			'August'      : 'אוגוסט',
			'September'   : 'ספטמבר',
			'October'     : 'אוקטובר',
			'November'    : 'נובמבר',
			'December'    : 'דצמבר',
			'Sunday'      : 'יום ראשון',
			'Monday'      : 'יום שני',
			'Tuesday'     : 'יום שלישי',
			'Wednesday'   : 'יום רביעי',
			'Thursday'    : 'יום חמישי',
			'Friday'      : 'יום שישי',
			'Saturday'    : 'שבת',
			'Sun'         : 'א׳',
			'Mon'         : 'ב׳',
			'Tue'         : 'ג׳',
			'Wed'         : 'ד׳',
			'Thu'         : 'ה',
			'Fri'         : 'ו׳',
			'Sat'         : 'ש׳',

			/******************************** sort variants ********************************/
			'sortname'          : 'לפי שם',
			'sortkind'          : 'לפי סוג',
			'sortsize'          : 'לפי גודל',
			'sortdate'          : 'לפי תאריך',
			'sortFoldersFirst'  : 'תיקיות תחילה',
			'sortperm'          : 'על פי רשות', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'לפי מצב',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'by ownerלפי הבעלים',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'לפי קבוצה',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'גם Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'תיקייה חדשה',   // added 10.11.2015
			'Archive'           : 'ארכיון חדש',  // from v2.1 added 10.11.2015
			'untitled file'     : 'קובץ חדש.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: קובץ',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'נדרש אישור',
			'confirmRm'       : 'להסיר את הקבצים?<br/>פעולה זו בלתי הפיכה!',
			'confirmRepl'     : 'להחליף קובץ ישן בקובץ חדש?',
			'confirmRest'     : 'להחליף את הפריט הקיים בפריט שנמצא באשפה?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'לא ב-UTF-8<br/>המר ל-UTF-8?<br/>התוכן הופך ל-UTF-8 על ידי שמירה לאחר המרה.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'לא ניתן לזהות את קידוד התווים של הקובץ הזה. זה צריך להמיר זמנית ל-UTF-8 לצורך עריכה.<br/>אנא בחר קידוד תווים של קובץ זה.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'הוא השתנה.<br/>מאבד עבודה אם לא תשמור שינויים.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'האם אתה בטוח שברצונך להעביר פריטים לפח האשפה?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'האם אתה בטוח שברצונך להעביר פריטים ל-"$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'להחיל על הכול',
			'name'            : 'שם',
			'size'            : 'גודל',
			'perms'           : 'הרשאות',
			'modify'          : 'שינוי',
			'kind'            : 'סוג',
			'read'            : 'קריאה',
			'write'           : 'כתיבה',
			'noaccess'        : 'אין גישה',
			'and'             : 'וגם',
			'unknown'         : 'לא ידוע',
			'selectall'       : 'בחירת כל הקבצים',
			'selectfiles'     : 'בחירת קובץ אחד ומעלה',
			'selectffile'     : 'בחירת הקובץ הראשון',
			'selectlfile'     : 'בחירת הקובץ האחרון',
			'viewlist'        : 'תצוגת רשימה',
			'viewicons'       : 'תצוגת סמלים',
			'viewSmall'       : 'אייקונים קטנים', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'אייקונים בינוניים', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'אייקונים גדולים', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'סמלים גדולים במיוחד', // from v2.1.39 added 22.5.2018
			'places'          : 'מיקומים',
			'calc'            : 'חישוב',
			'path'            : 'נתיב',
			'aliasfor'        : 'כינוי עבור',
			'locked'          : 'נעול',
			'dim'             : 'ממדים',
			'files'           : 'קבצים',
			'folders'         : 'תיקיות',
			'items'           : 'פריטים',
			'yes'             : 'כן',
			'no'              : 'לא',
			'link'            : 'קישור',
			'searcresult'     : 'תוצאות חיפוש',
			'selected'        : 'קבצים נבחרים',
			'about'           : 'על אודות',
			'shortcuts'       : 'קיצורי דרך',
			'help'            : 'עזרה',
			'webfm'           : 'מנהל קבצים בדפדפן',
			'ver'             : 'גרסה',
			'protocolver'     : 'גרסת פרוטוקול',
			'homepage'        : 'דף הבית של המיזם',
			'docs'            : 'תיעוד',
			'github'          : 'פילוג עותק ב־Github',
			'twitter'         : 'לעקוב אחרינו בטוויטר',
			'facebook'        : 'להצטרף אלינו בפייסבוק',
			'team'            : 'צוות',
			'chiefdev'        : 'מפתח ראשי',
			'developer'       : 'מתכנת',
			'contributor'     : 'תורם',
			'maintainer'      : 'מתחזק',
			'translator'      : 'מתרגם',
			'icons'           : 'סמלים',
			'dontforget'      : 'לא לשכוח לקחת את המגבת שלך',
			'shortcutsof'     : 'קיצורי הדרך מנוטרלים',
			'dropFiles'       : 'ניתן להשליך את הקבצים לכאן',
			'or'              : 'או',
			'selectForUpload' : 'לבחור קבצים להעלאה',
			'moveFiles'       : 'העברת קבצים',
			'copyFiles'       : 'העתקת קבצים',
			'restoreFiles'    : 'שחזור פריטים', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'הסרה ממיקומים',
			'aspectRatio'     : 'יחס תצוגה',
			'scale'           : 'מתיחה',
			'width'           : 'רוחב',
			'height'          : 'גובה',
			'resize'          : 'שינוי הגודל',
			'crop'            : 'חיתוך',
			'rotate'          : 'היפוך',
			'rotate-cw'       : 'היפוך ב־90 מעלות נגד השעון',
			'rotate-ccw'      : 'היפוך ב־90 מעלות עם השעון CCW',
			'degree'          : '°',
			'netMountDialogTitle' : 'עיגון כונן רשת', // added 18.04.2012
			'protocol'            : 'פרוטוקול', // added 18.04.2012
			'host'                : 'מארח', // added 18.04.2012
			'port'                : 'פתחה', // added 18.04.2012
			'user'                : 'משתמש', // added 18.04.2012
			'pass'                : 'ססמה', // added 18.04.2012
			'confirmUnmount'      : 'האם אתה מבטל $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'שחרר או הדבק קבצים מהדפדפן', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'שחרר קבצים, הדבק כתובות URL או תמונות (לוח) כאן', // from v2.1 added 07.04.2014
			'encoding'        : 'הקידוד', // from v2.1 added 19.12.2014
			'locale'          : 'שפה',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'יעד: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'חפש לפי סוג MIME קלט', // from v2.1 added 22.5.2015
			'owner'           : 'בעלים', // from v2.1 added 20.6.2015
			'group'           : 'קְבוּצָה', // from v2.1 added 20.6.2015
			'other'           : 'אַחֵר', // from v2.1 added 20.6.2015
			'execute'         : 'לבצע', // from v2.1 added 20.6.2015
			'perm'            : 'רְשׁוּת', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'התיקייה ריקה', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'התיקיה ריקה\\השחרר כדי להוסיף פריטים', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'התיקיה ריקה\\הקשה ארוכה כדי להוסיף פריטים', // from v2.1.6 added 30.12.2015
			'quality'         : 'איכות', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'סנכרון אוטומטי',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'לזוז למעלה',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'קבל קישור כתובת URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'פריטים נבחרים ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'מזהה תיקייה', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'אפשר גישה לא מקוונת', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'לאימות מחדש', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'כעת טוען...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'פתח מספר קבצים', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'אתה מנסה לפתוח את קבצי $1. האם אתה בטוח שברצונך לפתוח בדפדפן?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'תוצאות החיפוש ריקות ביעד החיפוש.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'זה עריכת קובץ.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'בחרת $1 פריטים.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'יש לך $1 פריטים בלוח.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'חיפוש מצטבר הוא רק מהתצוגה הנוכחית.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'חזרה לשגרה', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 הושלם', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'תפריט הקשר', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'הפיכת עמודים', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'שורשי נפח', // from v2.1.16 added 16.9.2016
			'reset'           : 'איפוס', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'צבע רקע', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'בוחר צבעים', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8 פיקסלים רשת', // from v2.1.16 added 4.10.2016
			'enabled'         : 'מופעל', // from v2.1.16 added 4.10.2016
			'disabled'        : 'מושבת', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'תוצאות החיפוש ריקות בתצוגה הנוכחית.\\Aלחץ על [Enter] כדי להרחיב את יעד החיפוש.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'תוצאות החיפוש של האות הראשונה ריקות בתצוגה הנוכחית.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'תווית טקסט', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'נותרה 1 דקות', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'פתח מחדש עם הקידוד שנבחר', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'שמור עם הקידוד שנבחר', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'בחר תיקייה', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'חיפוש באות ראשונה', // from v2.1.23 added 24.3.2017
			'presets'         : 'הגדרות קבועות מראש', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'זה יותר מדי פריטים כך שהוא לא יכול לאשפה.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'רוקן את התיקיה "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'אין פריטים בתיקייה "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'הַעֲדָפָה', // from v2.1.26 added 28.6.2017
			'language'        : 'שפה', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'אתחל את ההגדרות שנשמרו בדפדפן זה', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'הגדרות סרגל הכלים', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... נותרו $1 תווים.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... נותרו שורות 1$.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'סְכוּם', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'גודל קובץ מחוספס', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'התמקד באלמנט של דיאלוג עם העברה בעכבר',  // from v2.1.30 added 2.11.2017
			'select'          : 'בחר', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'פעולה בעת בחירת קובץ', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'פתח עם העורך שבו השתמשת בפעם הקודמת', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'בחירה הפוך', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'האם אתה בטוח שברצונך לשנות את השם של $1 פריטים נבחרים כמו $2?<br/>לא ניתן לבטל זאת!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'שינוי שם אצווה', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ מספר', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'הוסף קידומת', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'הוסיפו סיומת', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'שנה סיומת', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'הגדרות עמודות (תצוגת רשימה)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'כל השינויים ישתקפו מיד לארכיון.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'כל השינויים לא ישתקפו עד לביטול הטעינה של אמצעי אחסון זה.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'הכרך/ים הבאים שהותקנו על הכרך הזה בוטלו גם הם. האם אתה בטוח שתבטל אותו?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'מידע בחירה', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'אלגוריתמים להצגת ה-hash של הקובץ', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'פריטי מידע (חלונית פרטי בחירה)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'לחץ שוב כדי לצאת.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'סרגל כלים', // from v2.1.38 added 4.4.2018
			'workspace'       : 'חלל עבודה', // from v2.1.38 added 4.4.2018
			'dialog'          : 'דיאלוג', // from v2.1.38 added 4.4.2018
			'all'             : 'את כל', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'גודל סמל (תצוגת סמלים)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'פתח את חלון העורך המקסימלי', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'מכיוון שהמרה באמצעות API אינה זמינה כעת, אנא המרה באתר.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'לאחר ההמרה, עליך להעלות עם כתובת האתר של הפריט או קובץ שהורדת כדי לשמור את הקובץ שהומר.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'המר באתר של $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'אינטגרציות', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'ל-elFinder זה משולבים השירותים החיצוניים הבאים. אנא בדוק את תנאי השימוש, מדיניות הפרטיות וכו\' לפני השימוש בו.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'הצג פריטים מוסתרים', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'הסתר פריטים מוסתרים', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'הצג/הסתר פריטים מוסתרים', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'סוגי קבצים להפעלה עם "קובץ חדש"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'סוג קובץ הטקסט', // from v2.1.41 added 7.8.2018
			'add'             : 'לְהוֹסִיף', // from v2.1.41 added 7.8.2018
			'theme'           : 'תמה', // from v2.1.43 added 19.10.2018
			'default'         : 'בְּרִירַת מֶחדָל', // from v2.1.43 added 19.10.2018
			'description'     : 'תיאור', // from v2.1.43 added 19.10.2018
			'website'         : 'Websiteאתר אינטרנט', // from v2.1.43 added 19.10.2018
			'author'          : 'מְחַבֵּר', // from v2.1.43 added 19.10.2018
			'email'           : 'אימייל', // from v2.1.43 added 19.10.2018
			'license'         : 'רישיון', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'לא ניתן לשמור את הפריט הזה. כדי למנוע אובדן של העריכות, עליך לייצא למחשב האישי שלך.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'לחץ פעמיים על הקובץ כדי לבחור אותו.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'השתמש במצב מסך מלא', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'בלתי ידוע',
			'kindRoot'        : 'שורש נפח', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'תיקייה',
			'kindSelects'     : 'סלקציות', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'כינוי',
			'kindAliasBroken' : 'כינוי שבור',
			// applications
			'kindApp'         : 'יישום',
			'kindPostscript'  : 'מסמך Postscript',
			'kindMsOffice'    : 'מסמך Microsoft Office',
			'kindMsWord'      : 'מסמך Microsoft Word',
			'kindMsExcel'     : 'מסמך Microsoft Excel',
			'kindMsPP'        : 'מצגת Microsoft Powerpoint',
			'kindOO'          : 'מסמך Open Office',
			'kindAppFlash'    : 'יישום Flash',
			'kindPDF'         : 'פורמט מסמך נייד (PDF)',
			'kindTorrent'     : 'קובץ Bittorrent',
			'kind7z'          : 'ארכיון 7z',
			'kindTAR'         : 'ארכיון TAR',
			'kindGZIP'        : 'ארכיון GZIP',
			'kindBZIP'        : 'ארכיון BZIP',
			'kindXZ'          : 'ארכיון XZ',
			'kindZIP'         : 'ארכיון ZIP',
			'kindRAR'         : 'ארכיון RAR',
			'kindJAR'         : 'קובץ JAR של Java',
			'kindTTF'         : 'גופן True Type',
			'kindOTF'         : 'גופן Open Type',
			'kindRPM'         : 'חבילת RPM',
			// texts
			'kindText'        : 'מסמך טקסט',
			'kindTextPlain'   : 'טקסט פשוט',
			'kindPHP'         : 'מקור PHP',
			'kindCSS'         : 'גיליון סגנון מדורג',
			'kindHTML'        : 'מסמך HTML',
			'kindJS'          : 'מקור Javascript',
			'kindRTF'         : 'תבנית טקסט עשיר',
			'kindC'           : 'מקור C',
			'kindCHeader'     : 'מקור כותרת C',
			'kindCPP'         : 'מקור C++',
			'kindCPPHeader'   : 'מקור כותרת C++',
			'kindShell'       : 'תסריט מעטפת יוניקס',
			'kindPython'      : 'מקור Python',
			'kindJava'        : 'מקור Java',
			'kindRuby'        : 'מקור Ruby',
			'kindPerl'        : 'תסריט Perl',
			'kindSQL'         : 'מקור SQL',
			'kindXML'         : 'מקור XML',
			'kindAWK'         : 'מקור AWK',
			'kindCSV'         : 'ערכים מופרדים בפסיקים',
			'kindDOCBOOK'     : 'מסמךDocbook XML',
			'kindMarkdown'    : 'טקסט של סימון', // added 20.7.2015
			// images
			'kindImage'       : 'תמונה',
			'kindBMP'         : 'תמונת BMP',
			'kindJPEG'        : 'תמונת JPEG',
			'kindGIF'         : 'תמונת GIF',
			'kindPNG'         : 'תמונת PNG',
			'kindTIFF'        : 'תמונת TIFF',
			'kindTGA'         : 'תמונת TGA',
			'kindPSD'         : 'תמונת Adobe Photoshop',
			'kindXBITMAP'     : 'תמונת מפת סיביות X',
			'kindPXM'         : 'תמונת Pixelmator',
			// media
			'kindAudio'       : 'מדיה מסוג שמע',
			'kindAudioMPEG'   : 'שמע MPEG',
			'kindAudioMPEG4'  : 'שמע MPEG-4',
			'kindAudioMIDI'   : 'שמע MIDI',
			'kindAudioOGG'    : 'שמע Ogg Vorbis',
			'kindAudioWAV'    : 'שמע WAV',
			'AudioPlaylist'   : 'רשימת נגינה MP3',
			'kindVideo'       : 'מדיה מסוג וידאו',
			'kindVideoDV'     : 'סרטון DV',
			'kindVideoMPEG'   : 'סרטון MPEG',
			'kindVideoMPEG4'  : 'סרטון MPEG-4',
			'kindVideoAVI'    : 'סרטון AVI',
			'kindVideoMOV'    : 'סרטון Quick Time',
			'kindVideoWM'     : 'סרטון Windows Media',
			'kindVideoFlash'  : 'סרטון Flash',
			'kindVideoMKV'    : 'סרטון Matroska',
			'kindVideoOGG'    : 'סרטון Ogg'
		}
	};
}));lib/js/i18n/elfinder.ca.js000064400000105025147361034410011223 0ustar00/**
 * Català translation
 * @author Sergio Jovani <lesergi@gmail.com>
 * @version 2022-02-28
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ca = {
		translator : 'Sergio Jovani &lt;lesergi@gmail.com&gt;',
		language   : 'Català',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // will show like: febr. 28, 2022 11:14 AM
		fancyDateFormat : '$1 h:i A', // will show like: Avui 11:14 AM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220228-111450
		messages   : {
			'getShareText' : 'Compartir',
			'Editor ': 'Editor de codi',
			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Error desconegut.',
			'errUnknownCmd'        : 'Ordre desconeguda.',
			'errJqui'              : 'La configuració de jQuery UI no és vàlida. S\'han d\'incloure els components "selectable", "draggable" i "droppable".',
			'errNode'              : 'elFinder necessita crear elements DOM.',
			'errURL'               : 'La configuració de l\'elFinder no és vàlida! L\'opció URL no està configurada.',
			'errAccess'            : 'Accés denegat.',
			'errConnect'           : 'No s\'ha pogut connectar amb el rerefons.',
			'errAbort'             : 'S\'ha interromput la connexió.',
			'errTimeout'           : 'Temps de connexió excedit.',
			'errNotFound'          : 'No s\'ha trobat el rerefons.',
			'errResponse'          : 'La resposta del rerefons no és vàlida.',
			'errConf'              : 'La configuració del rerefons no és vàlida.',
			'errJSON'              : 'No està instal·lat el mòdul JSON del PHP.',
			'errNoVolumes'         : 'No s\'han trobat volums llegibles.',
			'errCmdParams'         : 'Els paràmetres per l\'ordre "$1" no són vàlids.',
			'errDataNotJSON'       : 'Les dades no són JSON.',
			'errDataEmpty'         : 'Les dades estan buides.',
			'errCmdReq'            : 'La sol·licitud del rerefons necessita el nom de l\'ordre.',
			'errOpen'              : 'No s\'ha pogut obrir "$1".',
			'errNotFolder'         : 'L\'objecte no és una carpeta.',
			'errNotFile'           : 'L\'objecte no és un fitxer.',
			'errRead'              : 'No s\'ha pogut llegir "$1".',
			'errWrite'             : 'No s\'ha pogut escriure a "$1".',
			'errPerm'              : 'Permís denegat.',
			'errLocked'            : '"$1" està bloquejat i no podeu canviar-li el nom, moure-lo ni suprimir-lo.',
			'errExists'            : 'Ja existeix un fitxer anomenat "$1".',
			'errInvName'           : 'El nom de fitxer no és vàlid.',
			'errInvDirname'        : 'Nom de carpeta no vàlid.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'No s\'ha trobat la carpeta.',
			'errFileNotFound'      : 'No s\'ha trobat el fitxer.',
			'errTrgFolderNotFound' : 'No s\'ha trobat la carpeta de destí "$1".',
			'errPopup'             : 'El navegador ha evitat obrir una finestra emergent. Autoritzeu-la per obrir el fitxer.',
			'errMkdir'             : 'No s\'ha pogut crear la carpeta "$1".',
			'errMkfile'            : 'No s\'ha pogut crear el fitxer "$1".',
			'errRename'            : 'No s\'ha pogut canviar el nom de "$1".',
			'errCopyFrom'          : 'No està permès copiar fitxers des del volum "$1".',
			'errCopyTo'            : 'No està permès copiar fitxers al volum "$1".',
			'errMkOutLink'         : 'No es pot crear un enllaç fora de l\'arrel del volum.', // from v2.1 added 03.10.2015
			'errUpload'            : 'S\'ha produït un error en la càrrega.',  // old name - errUploadCommon
			'errUploadFile'        : 'No s\'ha pogut carregar "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'No s\'han trobat fitxers per carregar.',
			'errUploadTotalSize'   : 'Les dades excedeixen la mida màxima permesa.', // old name - errMaxSize
			'errUploadFileSize'    : 'El fitxer excedeix la mida màxima permesa.', //  old name - errFileMaxSize
			'errUploadMime'        : 'El tipus de fitxer no està permès.',
			'errUploadTransfer'    : 'S\'ha produït un error en transferir "$1".',
			'errUploadTemp'        : 'No es pot crear un fitxer temporal per carregar-lo.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'L\'objecte "$1" ja existeix en aquesta ubicació i no es pot substituir per un altre tipus.', // new
			'errReplace'           : 'No es pot substituir "$1".',
			'errSave'              : 'No s\'ha pogut desar "$1".',
			'errCopy'              : 'No s\'ha pogut copiar "$1".',
			'errMove'              : 'No s\'ha pogut moure "$1".',
			'errCopyInItself'      : 'No s\'ha pogut copiar "$1" a si mateix.',
			'errRm'                : 'No s\'ha pogut suprimir "$1".',
			'errTrash'             : 'No es pot a la paperera.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'No es poden eliminar els fitxers font.',
			'errExtract'           : 'No s\'han pogut extreure els fitxers de "$1".',
			'errArchive'           : 'No s\'ha pogut crear l\'arxiu.',
			'errArcType'           : 'El tipus d\'arxiu no està suportat.',
			'errNoArchive'         : 'El fitxer no és un arxiu o és un tipus no suportat.',
			'errCmdNoSupport'      : 'El rerefons no suporta aquesta ordre.',
			'errReplByChild'       : 'No es pot reemplaçar la carpeta “$1” per un element que conté.',
			'errArcSymlinks'       : 'Per raons de seguretat, no es permet extreure arxius que contenen enllaços simbòlics.', // edited 24.06.2012
			'errArcMaxSize'        : 'Els fitxers de l\'arxiu excedeixen la mida màxima permesa.',
			'errResize'            : 'No s\'ha pogut redimensionar "$1".',
			'errResizeDegree'      : 'El grau de rotació no és vàlid.',  // added 7.3.2013
			'errResizeRotate'      : 'No es pot girar la imatge.',  // added 7.3.2013
			'errResizeSize'        : 'Mida de la imatge no vàlida.',  // added 7.3.2013
			'errResizeNoChange'    : 'La mida de la imatge no ha canviat.',  // added 7.3.2013
			'errUsupportType'      : 'El tipus de fitxer no està suportat.',
			'errNotUTF8Content'    : 'El fitxer "$1" no està en UTF-8 i no es pot editar.',  // added 9.11.2011
			'errNetMount'          : 'No es pot muntar "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocol no compatible.',     // added 17.04.2012
			'errNetMountFailed'    : 'El muntatge ha fallat.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Es requereix amfitrió.', // added 18.04.2012
			'errSessionExpires'    : 'La teva sessió ha caducat per inactivitat.',
			'errCreatingTempDir'   : 'No es pot crear el directori temporal: "$1"',
			'errFtpDownloadFile'   : 'No es pot descarregar el fitxer des d\'FTP: "$1"',
			'errFtpUploadFile'     : 'No es pot carregar el fitxer a FTP: "$1"',
			'errFtpMkdir'          : 'No es pot crear un directori remot a FTP: "$1"',
			'errArchiveExec'       : 'Error en arxivar fitxers: "$1"',
			'errExtractExec'       : 'Error en extreure fitxers: "$1"',
			'errNetUnMount'        : 'No es pot desmuntar.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'No convertible a UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Proveu el navegador modern, si voleu carregar la carpeta.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'S\'ha esgotat el temps en cercar "$1". El resultat de la cerca és parcial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Cal una reautorització.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'El nombre màxim d\'articles seleccionables és d\' $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'No es pot restaurar des de la paperera. No es pot identificar la destinació de la restauració.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'No s\'ha trobat l\'editor per a aquest tipus de fitxer.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'S\'ha produït un error al costat del servidor.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'No es pot buidar la carpeta "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Hi ha errors d\' $1 més.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Podeu crear fins a $1 carpetes alhora.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Crea arxiu',
			'cmdback'      : 'Enrere',
			'cmdcopy'      : 'Copia',
			'cmdcut'       : 'Retalla',
			'cmddownload'  : 'Descarrega',
			'cmdduplicate' : 'Duplica',
			'cmdedit'      : 'Edita el fitxer',
			'cmdextract'   : 'Extreu els fitxers de l\'arxiu',
			'cmdforward'   : 'Endavant',
			'cmdgetfile'   : 'Selecciona els fitxers',
			'cmdhelp'      : 'Quant a aquest programari',
			'cmdhome'      : 'Inici',
			'cmdinfo'      : 'Obté informació',
			'cmdmkdir'     : 'Nova carpeta',
			'cmdmkdirin'   : 'A la carpeta nova', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nou fitxer',
			'cmdopen'      : 'Obre',
			'cmdpaste'     : 'Enganxa',
			'cmdquicklook' : 'Previsualitza',
			'cmdreload'    : 'Torna a carregar',
			'cmdrename'    : 'Canvia el nom',
			'cmdrm'        : 'Suprimeix',
			'cmdtrash'     : 'A les escombraries', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurar', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Cerca fitxers',
			'cmdup'        : 'Vés al directori superior',
			'cmdupload'    : 'Carrega fitxers',
			'cmdview'      : 'Visualitza',
			'cmdresize'    : 'Redimensiona la imatge',
			'cmdsort'      : 'Ordena',
			'cmdnetmount'  : 'Munta el volum de xarxa', // added 18.04.2012
			'cmdnetunmount': 'Desmuntar', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'A Llocs', // added 28.12.2014
			'cmdchmod'     : 'Canvia el mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Obre una carpeta', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Restableix l\'amplada de la columna', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Pantalla completa', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Moure\'s', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Buida la carpeta', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Desfer', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Refer', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferències', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Seleccionar tot', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Seleccioneu cap', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverteix la selecció', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Obre en una finestra nova', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Amaga (preferència)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Tanca',
			'btnSave'   : 'Desa',
			'btnRm'     : 'Suprimeix',
			'btnApply'  : 'Aplica',
			'btnCancel' : 'Cancel·la',
			'btnNo'     : 'No',
			'btnYes'    : 'Sí',
			'btnMount'  : 'Munta',  // added 18.04.2012
			'btnApprove': 'Anar a $1 i aprovar', // from v2.1 added 26.04.2012
			'btnUnmount': 'Desmuntar', // from v2.1 added 30.04.2012
			'btnConv'   : 'Converteix', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Aquí',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volum',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tots',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipus MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nom de l\'arxiu',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Desa i tanca', // from v2.1 added 12.6.2015
			'btnBackup' : 'Còpia de seguretat', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Canvia el nom',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Canvia el nom (tots)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Anterior ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Pròxim ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Guardar com', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'S\'està obrint la carpeta',
			'ntffile'     : 'S\'està obrint el fitxer',
			'ntfreload'   : 'S\'està tornant a carregar el contingut de la carpeta',
			'ntfmkdir'    : 'S\'està creant el directori',
			'ntfmkfile'   : 'S\'estan creant el fitxers',
			'ntfrm'       : 'S\'estan suprimint els fitxers',
			'ntfcopy'     : 'S\'estan copiant els fitxers',
			'ntfmove'     : 'S\'estan movent els fitxers',
			'ntfprepare'  : 'S\'està preparant per copiar fitxers',
			'ntfrename'   : 'S\'estan canviant els noms del fitxers',
			'ntfupload'   : 'S\'estan carregant els fitxers',
			'ntfdownload' : 'S\'estan descarregant els fitxers',
			'ntfsave'     : 'S\'estan desant els fitxers',
			'ntfarchive'  : 'S\'està creant l\'arxiu',
			'ntfextract'  : 'S\'estan extreient els fitxers de l\'arxiu',
			'ntfsearch'   : 'S\'estan cercant els fitxers',
			'ntfresize'   : 'Canviar la mida de les imatges',
			'ntfsmth'     : 'S\'estan realitzant operacions',
			'ntfloadimg'  : 'S\'està carregant la imatge',
			'ntfnetmount' : 'Muntatge del volum de xarxa', // added 18.04.2012
			'ntfnetunmount': 'S\'està desmuntant el volum de xarxa', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Adquisició de la dimensió de la imatge', // added 20.05.2013
			'ntfreaddir'  : 'Lectura de la informació de la carpeta', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Obtenint l\'URL de l\'enllaç', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Canvi de mode de fitxer', // from v2.1 added 20.6.2015
			'ntfpreupload': 'S\'està verificant el nom del fitxer de càrrega', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creació d\'un fitxer per descarregar', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Obtenció d\'informació del camí', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'S\'està processant el fitxer penjat', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Fent llençar a les escombraries', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'S\'està fent la restauració des de la paperera', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'S\'està comprovant la carpeta de destinació', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'S\'està desfent l\'operació anterior', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'S\'està refent l\'anterior desfet', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Comprovació de continguts', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Paperera', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'desconegut',
			'Today'       : 'Avui',
			'Yesterday'   : 'Ahir',
			'msJan'       : 'gen.',
			'msFeb'       : 'febr.',
			'msMar'       : 'març',
			'msApr'       : 'abr.',
			'msMay'       : 'maig',
			'msJun'       : 'juny',
			'msJul'       : 'jul.',
			'msAug'       : 'ag.',
			'msSep'       : 'set.',
			'msOct'       : 'oct.',
			'msNov'       : 'nov.',
			'msDec'       : 'des.',
			'January'     : 'gener',
			'February'    : 'febrer',
			'March'       : 'març',
			'April'       : 'Abril',
			'May'         : 'maig',
			'June'        : 'juny',
			'July'        : 'juliol',
			'August'      : 'Agost',
			'September'   : 'setembre',
			'October'     : 'Octubre',
			'November'    : 'de novembre',
			'December'    : 'desembre',
			'Sunday'      : 'diumenge',
			'Monday'      : 'dilluns',
			'Tuesday'     : 'dimarts',
			'Wednesday'   : 'dimecres',
			'Thursday'    : 'dijous',
			'Friday'      : 'divendres',
			'Saturday'    : 'dissabte',
			'Sun'         : 'diumenge',
			'Mon'         : 'dilluns',
			'Tue'         : 'dimarts',
			'Wed'         : 'dimecres',
			'Thu'         : 'dijous',
			'Fri'         : 'divendres',
			'Sat'         : 'dissabte',

			/******************************** sort variants ********************************/
			'sortname'          : 'per nom',
			'sortkind'          : 'per tipus',
			'sortsize'          : 'per mida',
			'sortdate'          : 'per data',
			'sortFoldersFirst'  : 'Primer les carpetes',
			'sortperm'          : 'amb permís', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'per modalitat',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'pel propietari',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'per grup',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'També Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Nou fitxer.txt', // added 10.11.2015
			'untitled folder'   : 'Carpeta nova',   // added 10.11.2015
			'Archive'           : 'Nou Arxiu',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Nou fitxer.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Dossier',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Es necessita confirmació',
			'confirmRm'       : 'Voleu suprimir els fitxers?<br />L\'acció es podrà desfer!',
			'confirmRepl'     : 'Voleu reemplaçar el fitxer antic amb el nou?',
			'confirmRest'     : 'Voleu substituir l\'element existent per l\'element de la paperera?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'No és a UTF-8<br/>Convertiu a UTF-8?<br/>Els continguts es converteixen en UTF-8 desant després de la conversió.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'No s\'ha pogut detectar la codificació de caràcters d\'aquest fitxer. S\'ha de convertir temporalment a UTF-8 per editar-lo.<br/>Seleccioneu la codificació de caràcters d\'aquest fitxer.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'S\'ha modificat.<br/>Perdre feina si no deseu els canvis.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Esteu segur que voleu moure els elements a la paperera?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Esteu segur que voleu moure els elements a "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Aplica a tot',
			'name'            : 'Nom',
			'size'            : 'Mida',
			'perms'           : 'Permisos',
			'modify'          : 'Modificat',
			'kind'            : 'Tipus',
			'read'            : 'llegir',
			'write'           : 'escriure',
			'noaccess'        : 'sense accés',
			'and'             : 'i',
			'unknown'         : 'desconegut',
			'selectall'       : 'Selecciona tots els fitxers',
			'selectfiles'     : 'Selecciona el(s) fitxer(s)',
			'selectffile'     : 'Selecciona el primer fitxer',
			'selectlfile'     : 'Selecciona l\'últim fitxer',
			'viewlist'        : 'Vista en llista',
			'viewicons'       : 'Vista en icones',
			'viewSmall'       : 'Petites icones', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Icones mitjanes', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Icones grans', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Icones extra grans', // from v2.1.39 added 22.5.2018
			'places'          : 'Llocs',
			'calc'            : 'Calcula',
			'path'            : 'Camí',
			'aliasfor'        : 'Àlies per',
			'locked'          : 'Bloquejat',
			'dim'             : 'Dimensions',
			'files'           : 'Fitxers',
			'folders'         : 'Carpetes',
			'items'           : 'Elements',
			'yes'             : 'sí',
			'no'              : 'no',
			'link'            : 'Enllaç',
			'searcresult'     : 'Resultats de la cerca',
			'selected'        : 'Elements seleccionats',
			'about'           : 'Quant a',
			'shortcuts'       : 'Dreceres',
			'help'            : 'Ajuda',
			'webfm'           : 'Gestor de fitxers web',
			'ver'             : 'Versió',
			'protocolver'     : 'versió de protocol',
			'homepage'        : 'Pàgina del projecte',
			'docs'            : 'Documentació',
			'github'          : 'Bifurca\'ns a GitHub',
			'twitter'         : 'Segueix-nos a Twitter',
			'facebook'        : 'Uniu-vos a Facebook',
			'team'            : 'Equip',
			'chiefdev'        : 'cap desenvolupador',
			'developer'       : 'desenvolupador',
			'contributor'     : 'col·laborador',
			'maintainer'      : 'mantenidor',
			'translator'      : 'traductor',
			'icons'           : 'Icones',
			'dontforget'      : 'i no oblideu agafar la vostra tovallola',
			'shortcutsof'     : 'Les dreceres estan inhabilitades',
			'dropFiles'       : 'Arrossegueu els fitxers aquí',
			'or'              : 'o',
			'selectForUpload' : 'Seleccioneu els fitxer a carregar',
			'moveFiles'       : 'Mou els fitxers',
			'copyFiles'       : 'Copia els fitxers',
			'restoreFiles'    : 'Restaurar elements', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Suprimeix dels llocs',
			'aspectRatio'     : 'Relació d\'aspecte',
			'scale'           : 'Escala',
			'width'           : 'Amplada',
			'height'          : 'Alçada',
			'resize'          : 'Redimensiona',
			'crop'            : 'Retalla',
			'rotate'          : 'Girar',
			'rotate-cw'       : 'Gireu 90 graus CW',
			'rotate-ccw'      : 'Gireu 90 graus cap a la dreta',
			'degree'          : '°',
			'netMountDialogTitle' : 'Munta el volum de xarxa', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Amfitrió', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Usuari', // added 18.04.2012
			'pass'                : 'Contrasenya', // added 18.04.2012
			'confirmUnmount'      : 'Esteu desmuntant $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Deixa anar o enganxar fitxers des del navegador', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Deixa anar fitxers, enganxar URL o imatges (porta-retalls) aquí', // from v2.1 added 07.04.2014
			'encoding'        : 'Codificació', // from v2.1 added 19.12.2014
			'locale'          : 'Localització',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Objectiu: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Cerca per tipus MIME d\'entrada', // from v2.1 added 22.5.2015
			'owner'           : 'Propietari', // from v2.1 added 20.6.2015
			'group'           : 'Grup', // from v2.1 added 20.6.2015
			'other'           : 'Altres', // from v2.1 added 20.6.2015
			'execute'         : 'Executar', // from v2.1 added 20.6.2015
			'perm'            : 'Permís', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'La carpeta està buida', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'La carpeta està buida\\A Drop per afegir elements', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'La carpeta està buida\\Un toc llarg per afegir elements', // from v2.1.6 added 30.12.2015
			'quality'         : 'Qualitat', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Sincronització automàtica',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Mou-te',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obteniu l\'enllaç URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Articles seleccionats ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID de la carpeta', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permet l\'accés fora de línia', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Per tornar a autenticar', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'S\'està carregant...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Obriu diversos fitxers', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Esteu provant d\'obrir els fitxers $1. Esteu segur que voleu obrir-lo al navegador?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Els resultats de la cerca estan buits a l\'objectiu de la cerca.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'És editar un fitxer.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Heu seleccionat articles d\' $1.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Tens articles d\' $1 al porta-retalls.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'La cerca incremental només és des de la vista actual.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reintegrar', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 completat', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menú contextual', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Pas de pàgina', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Arrels de volum', // from v2.1.16 added 16.9.2016
			'reset'           : 'Restableix', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Color de fons', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Selector de colors', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Quadrícula de 8 píxels', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Habilitat', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Discapacitat', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Els resultats de la cerca estan buits a la vista actual.\\APmeu [Retorn] per ampliar l\'objectiu de la cerca.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Els resultats de la cerca de la primera lletra estan buits a la vista actual.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etiqueta de text', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'Queden $1 min', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Torna a obrir amb la codificació seleccionada', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Desa amb la codificació seleccionada', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Seleccioneu la carpeta', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Recerca de la primera lletra', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Hi ha massa articles perquè no es puguin a la paperera.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Àrea de text', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Buida la carpeta "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'No hi ha elements a una carpeta "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferència', // from v2.1.26 added 28.6.2017
			'language'        : 'Llenguatge', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicialitzeu la configuració desada en aquest navegador', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Configuració de la barra d\'eines', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caràcters restants.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... Queden 1 $ línies.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Suma', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Mida aproximada del fitxer', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Centra\'t en l\'element de diàleg amb el ratolí',  // from v2.1.30 added 2.11.2017
			'select'          : 'Seleccioneu', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Acció en seleccionar un fitxer', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Obriu amb l\'editor utilitzat l\'última vegada', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverteix la selecció', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Esteu segur que voleu canviar el nom de $1 als elements seleccionats com ara $2?<br/>Això no es pot desfer!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Canviar el nom del lot', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Número', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Afegeix un prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Afegeix un sufix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Canvia l\'extensió', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Configuració de les columnes (visualització de llista)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Tots els canvis es reflectiran immediatament a l\'arxiu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Qualsevol canvi no es reflectirà fins que no desmunteu aquest volum.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Els següents volums muntats en aquest volum també s\'han desmuntat. Segur que el desmuntareu?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informació de selecció', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorismes per mostrar el hash del fitxer', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Elements d\'informació (tauler d\'informació de selecció)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Premeu de nou per sortir.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barra d\'eines', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Espai de treball', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Diàleg', // from v2.1.38 added 4.4.2018
			'all'             : 'Tots', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Mida de les icones (visualització d\'icones)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Obriu la finestra de l\'editor maximitzat', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Com que la conversió per API no està disponible actualment, feu la conversió al lloc web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Després de la conversió, s\'ha de carregar amb l\'URL de l\'element o un fitxer descarregat per desar el fitxer convertit.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Converteix al lloc de $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integracions', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Aquest elFinder té integrats els següents serveis externs. Consulteu les condicions d\'ús, la política de privadesa, etc. abans d\'utilitzar-lo.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Mostra els elements ocults', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Amaga els elements ocults', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Mostra/amaga els elements ocults', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Tipus de fitxers per activar amb "Fitxer nou"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tipus de fitxer de text', // from v2.1.41 added 7.8.2018
			'add'             : 'Afegeix', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Per defecte', // from v2.1.43 added 19.10.2018
			'description'     : 'Descripció', // from v2.1.43 added 19.10.2018
			'website'         : 'Lloc web', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'Correu electrònic', // from v2.1.43 added 19.10.2018
			'license'         : 'llicència', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Aquest element no es pot desar. Per evitar perdre les edicions, heu d\'exportar-les al vostre ordinador.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Feu doble clic al fitxer per seleccionar-lo.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Utilitzeu el mode de pantalla completa', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Desconegut',
			'kindRoot'        : 'Arrel de volum', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Carpeta',
			'kindSelects'     : 'Seleccions', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Àlies',
			'kindAliasBroken' : 'Àlies no vàlid',
			// applications
			'kindApp'         : 'Aplicació',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document del Microsoft Office',
			'kindMsWord'      : 'Document del Microsoft Word',
			'kindMsExcel'     : 'Document del Microsoft Excel',
			'kindMsPP'        : 'Presentació del Microsoft Powerpoint',
			'kindOO'          : 'Document de l\'Open Office',
			'kindAppFlash'    : 'Aplicació Flash',
			'kindPDF'         : 'Document PDF',
			'kindTorrent'     : 'Fitxer Bittorrent',
			'kind7z'          : 'Arxiu 7z',
			'kindTAR'         : 'Arxiu TAR',
			'kindGZIP'        : 'Arxiu GZIP',
			'kindBZIP'        : 'Arxiu BZIP',
			'kindXZ'          : 'Arxiu XZ',
			'kindZIP'         : 'Arxiu ZIP',
			'kindRAR'         : 'Arxiu RAR',
			'kindJAR'         : 'Fitxer JAR de Java',
			'kindTTF'         : 'Tipus de lletra True Type',
			'kindOTF'         : 'Tipus de lletra Open Type',
			'kindRPM'         : 'Paquet RPM',
			// texts
			'kindText'        : 'Document de text',
			'kindTextPlain'   : 'Document de text net',
			'kindPHP'         : 'Codi PHP',
			'kindCSS'         : 'Full d\'estils CSS',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'Codi Javascript',
			'kindRTF'         : 'Document RTF',
			'kindC'           : 'Codi C',
			'kindCHeader'     : 'Codi de caçalera C',
			'kindCPP'         : 'Codi C++',
			'kindCPPHeader'   : 'Codi de caçalera C++',
			'kindShell'       : 'Script Unix',
			'kindPython'      : 'Codi Python',
			'kindJava'        : 'Codi Java',
			'kindRuby'        : 'Codi Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'Codi SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'Codi AWK',
			'kindCSV'         : 'Document CSV',
			'kindDOCBOOK'     : 'Document XML de Docbook',
			'kindMarkdown'    : 'Text de reducció', // added 20.7.2015
			// images
			'kindImage'       : 'Imatge',
			'kindBMP'         : 'Imatge BMP',
			'kindJPEG'        : 'Imatge JPEG',
			'kindGIF'         : 'Imatge GIF',
			'kindPNG'         : 'Imatge PNG',
			'kindTIFF'        : 'Imatge TIFF',
			'kindTGA'         : 'Imatge TGA',
			'kindPSD'         : 'Imatge Adobe Photoshop',
			'kindXBITMAP'     : 'Imatge X bitmap',
			'kindPXM'         : 'Imatge Pixelmator',
			// media
			'kindAudio'       : 'Fitxer d\'àudio',
			'kindAudioMPEG'   : 'Fitxer d\'àudio MPEG',
			'kindAudioMPEG4'  : 'Fitxer d\'àudio MPEG-4',
			'kindAudioMIDI'   : 'Fitxer d\'àudio MIDI',
			'kindAudioOGG'    : 'Fitxer d\'àudio Ogg Vorbis',
			'kindAudioWAV'    : 'Fitxer d\'àudio WAV',
			'AudioPlaylist'   : 'Llista de reproducció MP3',
			'kindVideo'       : 'Fitxer de vídeo',
			'kindVideoDV'     : 'Fitxer de vídeo DV',
			'kindVideoMPEG'   : 'Fitxer de vídeo MPEG',
			'kindVideoMPEG4'  : 'Fitxer de vídeo MPEG-4',
			'kindVideoAVI'    : 'Fitxer de vídeo AVI',
			'kindVideoMOV'    : 'Fitxer de vídeo Quick Time',
			'kindVideoWM'     : 'Fitxer de vídeo Windows Media',
			'kindVideoFlash'  : 'Fitxer de vídeo Flash',
			'kindVideoMKV'    : 'Fitxer de vídeo Matroska',
			'kindVideoOGG'    : 'Fitxer de vídeo Ogg'
		}
	};
}));lib/js/i18n/elfinder.el.js000064400000132363147361034410011245 0ustar00/**
 * Ελληνικά translation
 * @author yawd <ingo@yawd.eu>
 * @version 2022-02-28
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.el = {
		translator : 'yawd &lt;ingo@yawd.eu&gt;',
		language   : 'Ελληνικά',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 28.02.2022 15:23
		fancyDateFormat : '$1 H:i', // will show like: Σήμερα 15:23
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220228-152317
		messages   : {
			'getShareText' : 'Μερίδιο',
			'Editor ': 'Επεξεργαστής κώδικα',
			/********************************** errors **********************************/
			'error'                : 'Πρόβλημα',
			'errUnknown'           : 'Άγνωστο πρόβλημα.',
			'errUnknownCmd'        : 'Άγνωστη εντολή.',
			'errJqui'              : 'Μη έγκυρη ρύθμιση του jQuery UI. Τα components "selectable", "draggable" και "droppable" πρέπει να περιληφούν.',
			'errNode'              : 'το elFinder χρειάζεται να έχει δημιουργηθεί το DOM Element.',
			'errURL'               : 'Μη έγκυρες ρυθμίσεις για το elFinder! η επιλογή URL δεν έχει οριστεί.',
			'errAccess'            : 'Απαγορεύεται η πρόσβαση.',
			'errConnect'           : 'Δεν ήταν δυνατή η σύνδεση με το backend.',
			'errAbort'             : 'Η σύνδεση εγκαταλείφθηκε.',
			'errTimeout'           : 'Η σύνδεση έληξε.',
			'errNotFound'          : 'Δε βρέθηκε το backend.',
			'errResponse'          : 'Μή έγκυρη απάντηση από το backend.',
			'errConf'              : 'Μη έγκυρες ρυθμίσεις για το backend.',
			'errJSON'              : 'Το PHP JSON module δεν είναι εγκατεστημένο.',
			'errNoVolumes'         : 'Δεν βρέθηκαν αναγνώσιμα volumes.',
			'errCmdParams'         : 'Μη έγκυρες παράμετροι για την εντολή "$1".',
			'errDataNotJSON'       : 'Τα δεδομένα δεν είναι JSON.',
			'errDataEmpty'         : 'Τα δεδομένα είναι άδεια.',
			'errCmdReq'            : 'Το Backend request χρειάζεται όνομα εντολής.',
			'errOpen'              : 'Δεν ήταν δυνατό να ανοίξει το "$1".',
			'errNotFolder'         : 'Το αντικείμενο δεν είναι φάκελος.',
			'errNotFile'           : 'Το αντικείμενο δεν είναι αρχείο.',
			'errRead'              : 'Δεν ήταν δυνατόν να διαβαστεί το "$1".',
			'errWrite'             : 'Δεν ήταν δυνατή η εγγραφή στο "$1".',
			'errPerm'              : 'Απαγορεύεται η πρόσβαση.',
			'errLocked'            : '"$1" είναι κλειδωμένο και δεν μπορεί να μετονομαστεί, μετακινηθεί ή διαγραφεί.',
			'errExists'            : 'Το αρχείο με όνομα "$1" υπάρχει ήδη.',
			'errInvName'           : 'Μη έγκυρο όνομα αρχείου.',
			'errInvDirname'        : 'Μη έγκυρο όνομα φακέλου.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Ο φάκελος δε βρέθηκε.',
			'errFileNotFound'      : 'Το αρχείο δε βρέθηκε.',
			'errTrgFolderNotFound' : 'Ο φάκελος "$1" δε βρέθηκε.',
			'errPopup'             : 'Το πρόγραμμα πλήγησης εμπόδισε το άνοιγμα αναδυόμενου παραθύρου. Για ανοίξετε το αρχείο ενεργοποιήστε το στις επιλογές του περιηγητή.',
			'errMkdir'             : 'Η δυμιουργία του φακέλου "$1" δεν ήταν δυνατή.',
			'errMkfile'            : 'Η δημιουργία του αρχείου "$1" δεν ήταν δυνατή.',
			'errRename'            : 'Η μετονομασία του αρχείου "$1" δεν ήταν δυνατή.',
			'errCopyFrom'          : 'Δεν επιτρέπεται η αντιγραφή αρχείων από το volume "$1".',
			'errCopyTo'            : 'Δεν επιτρέπεται η αντιγραφή αρχείων στο volume "$1".',
			'errMkOutLink'         : 'Δεν είναι δυνατή η δημιουργία συνδέσμου προς έξω από τη ρίζα του τόμου.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Πρόβλημα κατά το upload.',  // old name - errUploadCommon
			'errUploadFile'        : 'Το αρχείο "$1" δεν μπόρεσε να γίνει upload.', // old name - errUpload
			'errUploadNoFiles'     : 'Δεν βρέθηκαν αρχεία για upload.',
			'errUploadTotalSize'   : 'Τα δεδομένα υπερβαίνουν το επιτρεπόμενο μέγιστο μέγεθος δεδομένων.', // old name - errMaxSize
			'errUploadFileSize'    : 'Το αρχείο υπερβαίνει το επιτρεπόμενο μέγιστο μέγεθος.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ο τύπος αρχείου δεν επιτρέπεται.',
			'errUploadTransfer'    : 'Πρόβλημα μεταφοράς για το "$1".',
			'errUploadTemp'        : 'Δεν είναι δυνατή η δημιουργία προσωρινού αρχείου για μεταφόρτωση.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Το αντικείμενο "$1" υπάρχει ήδη σε αυτήν τη θέση και δεν μπορεί να αντικατασταθεί από αντικείμενο με άλλο τύπο.', // new
			'errReplace'           : 'Δεν είναι δυνατή η αντικατάσταση του "$1".',
			'errSave'              : 'Το "$1" δεν ήταν δυνατόν να αποθηκευτεί.',
			'errCopy'              : 'Δεν ήταν δυνατή η αντιγραφή του "$1".',
			'errMove'              : 'Δεν ήταν δυνατή η μετακίνηση του "$1".',
			'errCopyInItself'      : 'Δεν είναι δυνατή η αντιγραφή του "$1" στον εαυτό του.',
			'errRm'                : 'Δεν ήταν δυνατή η αφαίρεση του "$1".',
			'errTrash'             : 'Δεν είναι δυνατή η είσοδος στα σκουπίδια.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Δεν είναι δυνατή η κατάργηση των αρχείων προέλευσης.',
			'errExtract'           : 'Δεν ήταν δυνατή η ανάγνωση των αρχείων από "$1".',
			'errArchive'           : 'Δεν ήταν δυνατή η δημιουργία του αρχείου.',
			'errArcType'           : 'Ο τύπος αρχείου δεν υποστηρίζεται.',
			'errNoArchive'         : 'Το αρχείο δεν είναι έγκυρο ή δεν υποστηρίζεται ο τύπος του.',
			'errCmdNoSupport'      : 'Το backend δεν υποστηρίζει αυτή την εντολή.',
			'errReplByChild'       : 'Ο φάκελος “$1” δεν μπορεί να αντικατασταθεί από οποιοδήποτε αρχείο περιέχεται σε αυτόν.',
			'errArcSymlinks'       : 'Για λόγους ασφαλείας δεν είναι δυνατόν να διαβαστούν αρχεία που περιέχουν symlinks orη αρχεία με μη επιτρεπτά ονόματα.', // edited 24.06.2012
			'errArcMaxSize'        : 'Το μέγεθος του αρχείου υπερβαίνει το μέγιστο επιτρεπτό όριο.',
			'errResize'            : 'Δεν ήταν δυνατή η αλλαγή μεγέθους του "$1".',
			'errResizeDegree'      : 'Μη έγκυρος βαθμός περιστροφής.',  // added 7.3.2013
			'errResizeRotate'      : 'Δεν είναι δυνατή η περιστροφή της εικόνας.',  // added 7.3.2013
			'errResizeSize'        : 'Μη έγκυρο μέγεθος εικόνας.',  // added 7.3.2013
			'errResizeNoChange'    : 'Το μέγεθος της εικόνας δεν άλλαξε.',  // added 7.3.2013
			'errUsupportType'      : 'Ο τύπος αρχείου δεν υποστηρίζεται.',
			'errNotUTF8Content'    : 'Το αρχείο "$1" δεν είναι UTF-8 και δεν μπορεί να επεξεργασθεί.',  // added 9.11.2011
			'errNetMount'          : 'Δεν ήταν δυνατή η φόρτωση του "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Μη υποστηριζόμενο πρωτόκολο.',     // added 17.04.2012
			'errNetMountFailed'    : 'Η φόρτωση απέτυχε.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Απαιτείται host εξυπηρετητής.', // added 18.04.2012
			'errSessionExpires'    : 'Η συνεδρία σας έχει λήξει λόγω αδράνειας.',
			'errCreatingTempDir'   : 'Δεν είναι δυνατή η δημιουργία προσωρινού καταλόγου: "$1"',
			'errFtpDownloadFile'   : 'Δεν είναι δυνατή η λήψη του αρχείου από το FTP: "$1"',
			'errFtpUploadFile'     : 'Δεν είναι δυνατή η μεταφόρτωση του αρχείου στο FTP: "$1"',
			'errFtpMkdir'          : 'Δεν είναι δυνατή η δημιουργία απομακρυσμένου καταλόγου στο FTP: "$1"',
			'errArchiveExec'       : 'Σφάλμα κατά την αρχειοθέτηση αρχείων: "$1"',
			'errExtractExec'       : 'Σφάλμα κατά την εξαγωγή αρχείων: "$1"',
			'errNetUnMount'        : 'Δεν είναι δυνατή η αποπροσάρτηση.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Μη μετατρέψιμο σε UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Δοκιμάστε το σύγχρονο πρόγραμμα περιήγησης, εάν θέλετε να ανεβάσετε το φάκελο.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Έληξε το χρονικό όριο κατά την αναζήτηση "$1". Το αποτέλεσμα αναζήτησης είναι μερικό.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Απαιτείται εκ νέου εξουσιοδότηση.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Ο μέγιστος αριθμός επιλέξιμων στοιχείων είναι $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Δεν είναι δυνατή η επαναφορά από τον κάδο απορριμμάτων. Δεν είναι δυνατός ο προσδιορισμός του προορισμού επαναφοράς.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Δεν βρέθηκε πρόγραμμα επεξεργασίας σε αυτόν τον τύπο αρχείου.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Παρουσιάστηκε σφάλμα από την πλευρά του διακομιστή.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Δεν είναι δυνατό το άδειασμα του φακέλου "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Υπάρχουν $1 ακόμη σφάλματα.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Μπορείτε να δημιουργήσετε έως και $1 φακέλους ταυτόχρονα.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Δημιουργία archive αρχείου',
			'cmdback'      : 'Πίσω',
			'cmdcopy'      : 'Αντιγραφή',
			'cmdcut'       : 'Αφαίρεση',
			'cmddownload'  : 'Μεταφόρτωση',
			'cmdduplicate' : 'Αντίγραφο',
			'cmdedit'      : 'Επεξεργασία αρχείου',
			'cmdextract'   : 'Εξαγωγή αρχείων από archive',
			'cmdforward'   : 'Προώθηση',
			'cmdgetfile'   : 'Επιλέξτε αρχεία',
			'cmdhelp'      : 'Σχετικά με αυτό το λογισμικό',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Πληροφορίες',
			'cmdmkdir'     : 'Νέος φάκελος',
			'cmdmkdirin'   : 'Σε Νέο Φάκελο', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Νέος αρχείο',
			'cmdopen'      : 'Άνοιγμα',
			'cmdpaste'     : 'Επικόλληση',
			'cmdquicklook' : 'Προεπισκόπηση',
			'cmdreload'    : 'Ανανέωση',
			'cmdrename'    : 'Μετονομασία',
			'cmdrm'        : 'Διαγραφή',
			'cmdtrash'     : 'Στα σκουπίδια', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Επαναφέρω', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Έυρεση αρχείων',
			'cmdup'        : 'Μετάβαση στο γονικό φάκελο',
			'cmdupload'    : 'Ανέβασμα αρχείων',
			'cmdview'      : 'Προβολή',
			'cmdresize'    : 'Αλλαγή μεγέθους εικόνας',
			'cmdsort'      : 'Ταξινόμηση',
			'cmdnetmount'  : 'Προσάρτηση όγκου δικτύου', // added 18.04.2012
			'cmdnetunmount': 'Αποπροσάρτηση', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Προς τοποθεσίες', // added 28.12.2014
			'cmdchmod'     : 'Αλλαγή λειτουργίας', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ανοίξτε έναν φάκελο', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Επαναφορά πλάτους στήλης', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'ΠΛΗΡΗΣ ΟΘΟΝΗ', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Κίνηση', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Αδειάστε το φάκελο', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Αναίρεση', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Κάντε ξανά', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Προτιμήσεις', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Επιλογή όλων', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Επιλέξτε κανένα', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Αντιστροφή επιλογής', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ανοιξε σε νέο παράθυρο', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Απόκρυψη (Προτίμηση)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Κλείσιμο',
			'btnSave'   : 'Αποθήκευση',
			'btnRm'     : 'Αφαίρεση',
			'btnApply'  : 'Εφαρμογή',
			'btnCancel' : 'Ακύρωση',
			'btnNo'     : 'Όχι',
			'btnYes'    : 'Ναι',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Μεταβείτε στο $1 και εγκρίνετε', // from v2.1 added 26.04.2012
			'btnUnmount': 'Αποπροσάρτηση', // from v2.1 added 30.04.2012
			'btnConv'   : 'Μετατρέπω', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Εδώ',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Ογκος',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Ολα',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Τύπος MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Ονομα αρχείου',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Αποθήκευση & Κλείσιμο', // from v2.1 added 12.6.2015
			'btnBackup' : 'Αντιγράφων ασφαλείας', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Μετονομάζω',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Μετονομασία (Όλα)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Προηγ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Επόμενο ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Αποθήκευση ως', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Άνοιγμα φακέλου',
			'ntffile'     : 'Άνοιγμα αρχείου',
			'ntfreload'   : 'Ανανέωση περιεχομένων φακέλου',
			'ntfmkdir'    : 'Δημιουργία φακέλου',
			'ntfmkfile'   : 'Δημιουργία αρχείων',
			'ntfrm'       : 'Διαγραφή αρχείων',
			'ntfcopy'     : 'Αντιγραφή αρχείων',
			'ntfmove'     : 'Μετακίνηση αρχείων',
			'ntfprepare'  : 'Προετοιμασία αντιγραφής αρχείων',
			'ntfrename'   : 'Μετονομασία αρχείων',
			'ntfupload'   : 'Ανέβασμα αρχείων',
			'ntfdownload' : 'Μεταφόρτωση αρχείων',
			'ntfsave'     : 'Αποθήκευση αρχείων',
			'ntfarchive'  : 'Δημιουργία αρχείου',
			'ntfextract'  : 'Εξαγωγή αρχείων από το archive',
			'ntfsearch'   : 'Αναζήτηση αρχείων',
			'ntfresize'   : 'Αλλαγή μεγέθους εικόνων',
			'ntfsmth'     : 'Σύστημα απασχολημένο>_<',
			'ntfloadimg'  : 'Φόρτωση εικόνας',
			'ntfnetmount' : 'Φόρτωση δικτυακού δίσκου', // added 18.04.2012
			'ntfnetunmount': 'Αποπροσάρτηση όγκου δικτύου', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Απόκτηση διάστασης εικόνας', // added 20.05.2013
			'ntfreaddir'  : 'Ανάγνωση πληροφοριών φακέλου', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Λήψη διεύθυνσης URL του συνδέσμου', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Αλλαγή λειτουργίας αρχείου', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Επαλήθευση ονόματος αρχείου μεταφόρτωσης', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Δημιουργία αρχείου για λήψη', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Λήψη πληροφοριών διαδρομής', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Επεξεργασία του μεταφορτωμένου αρχείου', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Πετάξτε στα σκουπίδια', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Κάνω επαναφορά από τα σκουπίδια', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Έλεγχος φακέλου προορισμού', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Αναίρεση προηγούμενης λειτουργίας', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Επανάληψη της προηγούμενης αναίρεσης', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Έλεγχος περιεχομένου', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Σκουπίδια', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'άγνωστο',
			'Today'       : 'Σήμερα',
			'Yesterday'   : 'Χθές',
			'msJan'       : 'Ιαν',
			'msFeb'       : 'Φεβ',
			'msMar'       : 'Μαρ',
			'msApr'       : 'Απρ',
			'msMay'       : 'Μαϊ',
			'msJun'       : 'Ιουν',
			'msJul'       : 'Ιουλ',
			'msAug'       : 'Αυγ',
			'msSep'       : 'Σεπ',
			'msOct'       : 'Οκτ',
			'msNov'       : 'Νοεμ',
			'msDec'       : 'Δεκ',
			'January'     : 'Ιανουάριος',
			'February'    : 'Φεβρουάριος',
			'March'       : 'Μάρτιος',
			'April'       : 'Απρίλιος',
			'May'         : 'Μάϊος',
			'June'        : 'Ιούνιος',
			'July'        : 'Ιούλιος',
			'August'      : 'Αύγουστος',
			'September'   : 'Σεπτέμβριος',
			'October'     : 'Οκτώβριος',
			'November'    : 'Νοέμβριος',
			'December'    : 'Δεκέμβριος',
			'Sunday'      : 'Κυριακή',
			'Monday'      : 'Δευτέρα',
			'Tuesday'     : 'Τρίτη',
			'Wednesday'   : 'Τετάρτη',
			'Thursday'    : 'Πέμπτη',
			'Friday'      : 'Παρασκευή',
			'Saturday'    : 'Σάββατο',
			'Sun'         : 'Κυρ',
			'Mon'         : 'Δευ',
			'Tue'         : 'Τρ',
			'Wed'         : 'Τετ',
			'Thu'         : 'Πεμ',
			'Fri'         : 'Παρ',
			'Sat'         : 'Σαβ',

			/******************************** sort variants ********************************/
			'sortname'          : 'κατά όνομα',
			'sortkind'          : 'κατά είδος',
			'sortsize'          : 'κατά μέγεθος',
			'sortdate'          : 'κατά ημερομηνία',
			'sortFoldersFirst'  : 'Πρώτα οι φάκελοι',
			'sortperm'          : 'με άδεια', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'κατά τρόπο λειτουργίας',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'από τον ιδιοκτήτη',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'ανά ομάδα',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Επίσης το Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Νέο αρχείο.txt', // added 10.11.2015
			'untitled folder'   : 'Νέος φάκελος',   // added 10.11.2015
			'Archive'           : 'ΝέοΑρχείο',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Νέο αρχείο.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Αρχείο',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Απαιτείται επιβεβαίωση',
			'confirmRm'       : 'Είστε σίγουροι πως θέλετε να διαγράψετε τα αρχεία?<br/>Οι αλλαγές θα είναι μόνιμες!',
			'confirmRepl'     : 'Αντικατάσταση του παλιού αρχείου με το νέο?',
			'confirmRest'     : 'Αντικατάσταση υπάρχοντος στοιχείου με το στοιχείο στον κάδο απορριμμάτων;', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Δεν υπάρχει στο UTF-8<br/>Μετατροπή σε UTF-8;<br/>Τα περιεχόμενα γίνονται UTF-8 με αποθήκευση μετά τη μετατροπή.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Δεν ήταν δυνατός ο εντοπισμός της κωδικοποίησης χαρακτήρων αυτού του αρχείου. Πρέπει να μετατραπεί προσωρινά σε UTF-8 για επεξεργασία.<br/>Επιλέξτε την κωδικοποίηση χαρακτήρων αυτού του αρχείου.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Έχει τροποποιηθεί.<br/>Χάνεται η εργασία εάν δεν αποθηκεύσετε τις αλλαγές.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Είστε βέβαιοι ότι θέλετε να μετακινήσετε αντικείμενα στον κάδο απορριμμάτων;', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Είστε βέβαιοι ότι θέλετε να μετακινήσετε στοιχεία στο "$1";', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Εφαρμογή σε όλα',
			'name'            : 'Όνομα',
			'size'            : 'Μέγεθος',
			'perms'           : 'Δικαιώματα',
			'modify'          : 'Τροποποιήθηκε',
			'kind'            : 'Είδος',
			'read'            : 'ανάγνωση',
			'write'           : 'εγγραφή',
			'noaccess'        : 'δεν υπάρχει πρόσβαση',
			'and'             : 'και',
			'unknown'         : 'άγνωστο',
			'selectall'       : 'Επιλογή όλων',
			'selectfiles'     : 'Επιλογή αρχείων',
			'selectffile'     : 'Επιλογή πρώτου αρχείου',
			'selectlfile'     : 'Επιλογή τελευταίου αρχείου',
			'viewlist'        : 'Προβολή λίστας',
			'viewicons'       : 'Προβολή εικονιδίων',
			'viewSmall'       : 'Μικρά εικονίδια', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Μεσαία εικονίδια', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Μεγάλα εικονίδια', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Πολύ μεγάλα εικονίδια', // from v2.1.39 added 22.5.2018
			'places'          : 'Τοποθεσίες',
			'calc'            : 'Υπολογισμός',
			'path'            : 'Διαδρομή',
			'aliasfor'        : 'Ψευδώνυμο για',
			'locked'          : 'Κλειδωμένο',
			'dim'             : 'Διαστάσεις',
			'files'           : 'Αρχεία',
			'folders'         : 'Φάκελοι',
			'items'           : 'Αντικείμενα',
			'yes'             : 'ναι',
			'no'              : 'όχι',
			'link'            : 'Σύνδεσμος',
			'searcresult'     : 'Αποτελέσματα αναζήτησης',
			'selected'        : 'επιλεγμένα αντικείμενα',
			'about'           : 'Σχετικά',
			'shortcuts'       : 'Συντομεύσεις',
			'help'            : 'Βοήθεια',
			'webfm'           : 'εργαλείο διαχείρισης αρχείων από το web',
			'ver'             : 'Έκδοση',
			'protocolver'     : 'έκδοση πρωτοκόλλου',
			'homepage'        : 'Σελίδα του project',
			'docs'            : 'Τεκμηρίωση (documentation)',
			'github'          : 'Κάντε μας fork στο Github',
			'twitter'         : 'Ακολουθήστε μας στο twitter',
			'facebook'        : 'Βρείτε μας στο facebook',
			'team'            : 'Ομάδα',
			'chiefdev'        : 'κύριος προγραμματιστής',
			'developer'       : 'προγραμματιστής',
			'contributor'     : 'συνεισφορά',
			'maintainer'      : 'συντηρητής',
			'translator'      : 'μεταφραστής',
			'icons'           : 'Εικονίδια',
			'dontforget'      : 'και μην ξεχάσεις την πετσέτα σου!',
			'shortcutsof'     : 'Οι συντομεύσεις είναι απενεργοποιημένες',
			'dropFiles'       : 'Κάντε drop τα αρχεία εδώ',
			'or'              : 'ή',
			'selectForUpload' : 'Επιλογή αρχείων για ανέβασμα',
			'moveFiles'       : 'Μετακίνηση αρχείων',
			'copyFiles'       : 'Αντιγραφή αρχείων',
			'restoreFiles'    : 'Επαναφέρετε τα στοιχεία', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Αντιγραφή από τοποθεσίες',
			'aspectRatio'     : 'Αναλογία διαστάσεων',
			'scale'           : 'Κλίμακα',
			'width'           : 'Πλάτος',
			'height'          : 'Ύψος',
			'resize'          : 'Αλλαγή μεγέθους',
			'crop'            : 'Σοδειά',
			'rotate'          : 'Περιστροφή',
			'rotate-cw'       : 'Περιστροφή κατά 90 βαθμούς CW',
			'rotate-ccw'      : 'Περιστροφή κατά 90 βαθμούς CCW',
			'degree'          : 'Βαθμός',
			'netMountDialogTitle' : 'Φορτώστε δικτυακό δίσκο', // added 18.04.2012
			'protocol'            : 'Πρωτόκολλο', // added 18.04.2012
			'host'                : 'Πλήθος', // added 18.04.2012
			'port'                : 'Λιμάνι', // added 18.04.2012
			'user'                : 'Χρήστης', // added 18.04.2012
			'pass'                : 'Κωδικός', // added 18.04.2012
			'confirmUnmount'      : 'Αποπροσαρτάτε το $1;',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Απόθεση ή επικόλληση αρχείων από το πρόγραμμα περιήγησης', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Απόθεση αρχείων, επικόλληση διευθύνσεων URL ή εικόνων (πρόχειρο) εδώ', // from v2.1 added 07.04.2014
			'encoding'        : 'Κωδικοποίηση', // from v2.1 added 19.12.2014
			'locale'          : 'Μικρός λοβός',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Στόχος: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Αναζήτηση με βάση τον τύπο MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Ιδιοκτήτης', // from v2.1 added 20.6.2015
			'group'           : 'Ομιλος', // from v2.1 added 20.6.2015
			'other'           : 'Αλλος', // from v2.1 added 20.6.2015
			'execute'         : 'Εκτέλεση', // from v2.1 added 20.6.2015
			'perm'            : 'Αδεια', // from v2.1 added 20.6.2015
			'mode'            : 'Λειτουργία', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Ο φάκελος είναι κενός', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Ο φάκελος είναι κενός\\A Drop για προσθήκη στοιχείων', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Ο φάκελος είναι κενός\\Ένα παρατεταμένο πάτημα για προσθήκη στοιχείων', // from v2.1.6 added 30.12.2015
			'quality'         : 'Ποιότητα', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Αυτόματος συγχρονισμός',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Μετακινηθείτε προς τα πάνω',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Λήψη συνδέσμου URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Επιλεγμένα στοιχεία ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Αναγνωριστικό φακέλου', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Να επιτρέπεται η πρόσβαση εκτός σύνδεσης', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Για εκ νέου έλεγχο ταυτότητας', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Φορτώνει...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Άνοιγμα πολλών αρχείων', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Προσπαθείτε να ανοίξετε τα αρχεία $1. Είστε βέβαιοι ότι θέλετε να ανοίξετε στο πρόγραμμα περιήγησης;', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Τα αποτελέσματα αναζήτησης είναι κενά στον στόχο αναζήτησης.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Επεξεργάζεται ένα αρχείο.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Έχετε επιλέξει $1 στοιχεία.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Έχετε $1 στοιχεία στο πρόχειρο.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Η σταδιακή αναζήτηση προέρχεται μόνο από την τρέχουσα προβολή.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Εγκαθιστώ πάλι', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 ολοκληρώθηκε', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Μενού περιβάλλοντος', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Γυρίζοντας σελίδα', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Ρίζες όγκου', // from v2.1.16 added 16.9.2016
			'reset'           : 'Επαναφορά', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Χρώμα του φόντου', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Επιλογέας χρώματος', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Πλέγμα 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ενεργοποιήθηκε', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Ενεργοποιήθηκε', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Τα αποτελέσματα αναζήτησης είναι κενά στην τρέχουσα προβολή.\\APΠατήστε [Enter] για επέκταση του στόχου αναζήτησης.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Τα αποτελέσματα αναζήτησης πρώτου γράμματος είναι κενά στην τρέχουσα προβολή.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Ετικέτα κειμένου', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 λεπτό απομένουν', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Ανοίξτε ξανά με επιλεγμένη κωδικοποίηση', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Αποθήκευση με την επιλεγμένη κωδικοποίηση', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Επιλέξτε φάκελο', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Αναζήτηση πρώτου γράμματος', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Είναι πάρα πολλά αντικείμενα, επομένως δεν μπορεί να πάει στα σκουπίδια.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Περιοχή κειμένου', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Αδειάστε το φάκελο "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Δεν υπάρχουν στοιχεία σε ένα φάκελο "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Προτίμηση', // from v2.1.26 added 28.6.2017
			'language'        : 'Γλώσσα', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Εκκινήστε τις ρυθμίσεις που είναι αποθηκευμένες σε αυτό το πρόγραμμα περιήγησης', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Ρυθμίσεις γραμμής εργαλείων', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 χαρακτήρες απομένουν.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... Απομένουν $1 γραμμές.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Αθροισμα', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Πρόχειρο μέγεθος αρχείου', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Επικεντρωθείτε στο στοιχείο του διαλόγου με το ποντίκι',  // from v2.1.30 added 2.11.2017
			'select'          : 'Επιλέξτε', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Ενέργεια κατά την επιλογή αρχείου', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ανοίξτε με το πρόγραμμα επεξεργασίας που χρησιμοποιήθηκε την τελευταία φορά', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Αντιστροφή επιλογής', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Είστε βέβαιοι ότι θέλετε να μετονομάσετε $1 επιλεγμένα στοιχεία όπως $2;<br/>Αυτό δεν μπορεί να αναιρεθεί!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Μετονομασία παρτίδας', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Αριθμός', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Προσθήκη προθέματος', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Προσθέστε επίθημα', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Αλλάξτε την επέκταση', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Ρυθμίσεις στηλών (Προβολή λίστας)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Όλες οι αλλαγές θα εμφανιστούν αμέσως στο αρχείο.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Τυχόν αλλαγές δεν θα αντικατοπτρίζονται μέχρι να καταργήσετε την προσάρτηση αυτού του τόμου.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Οι παρακάτω τόμοι που τοποθετήθηκαν σε αυτόν τον τόμο επίσης αποπροσαρτήθηκαν. Είστε σίγουροι ότι θα το αποπροσαρτήσετε;', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Πληροφορίες επιλογής', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Αλγόριθμοι για την εμφάνιση του κατακερματισμού του αρχείου', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Στοιχεία πληροφοριών (Πίνακας πληροφοριών επιλογής)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Πατήστε ξανά για έξοδο.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Γραμμή εργαλείων', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Χώρος εργασίας', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Διάλογος', // from v2.1.38 added 4.4.2018
			'all'             : 'Ολα', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Μέγεθος εικονιδίου (Προβολή εικονιδίων)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ανοίξτε το παράθυρο μεγιστοποιημένου επεξεργαστή', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Επειδή η μετατροπή μέσω API δεν είναι διαθέσιμη αυτήν τη στιγμή, πραγματοποιήστε μετατροπή στον ιστότοπο.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Μετά τη μετατροπή, πρέπει να ανεβάσετε με τη διεύθυνση URL του στοιχείου ή ένα αρχείο λήψης για να αποθηκεύσετε το αρχείο που μετατράπηκε.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Μετατροπή στον ιστότοπο του $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Ενσωματώσεις', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Αυτό το elFinder έχει ενσωματωμένες τις ακόλουθες εξωτερικές υπηρεσίες. Ελέγξτε τους όρους χρήσης, την πολιτική απορρήτου κ.λπ. πριν το χρησιμοποιήσετε.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Εμφάνιση κρυφών στοιχείων', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Απόκρυψη κρυφών στοιχείων', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Εμφάνιση/Απόκρυψη κρυφών στοιχείων', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Τύποι αρχείων για ενεργοποίηση με "Νέο αρχείο"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Τύπος αρχείου κειμένου', // from v2.1.41 added 7.8.2018
			'add'             : 'Προσθήκη', // from v2.1.41 added 7.8.2018
			'theme'           : 'Θέμα', // from v2.1.43 added 19.10.2018
			'default'         : 'Προκαθορισμένο', // from v2.1.43 added 19.10.2018
			'description'     : 'Περιγραφή', // from v2.1.43 added 19.10.2018
			'website'         : 'Δικτυακός τόπος', // from v2.1.43 added 19.10.2018
			'author'          : 'Συγγραφέας', // from v2.1.43 added 19.10.2018
			'email'           : 'ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ', // from v2.1.43 added 19.10.2018
			'license'         : 'Δίδω άδεια', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Δεν είναι δυνατή η αποθήκευση αυτού του στοιχείου. Για να αποφύγετε την απώλεια των επεξεργασιών που πρέπει να κάνετε εξαγωγή στον υπολογιστή σας.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Κάντε διπλό κλικ στο αρχείο για να το επιλέξετε.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Χρησιμοποιήστε τη λειτουργία πλήρους οθόνης', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Άγνωστο',
			'kindRoot'        : 'Ρίζα τόμου', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Φάκελος',
			'kindSelects'     : 'Επιλογές', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Ψευδώνυμο (alias)',
			'kindAliasBroken' : 'Μη έγκυρο ψευδώνυμο',
			// applications
			'kindApp'         : 'Εφαρμογή',
			'kindPostscript'  : 'Έγγραφο Postscript',
			'kindMsOffice'    : 'Έγγραφο Microsoft Office',
			'kindMsWord'      : 'Έγγραφο Microsoft Word',
			'kindMsExcel'     : 'Έγγραφο Microsoft Excel',
			'kindMsPP'        : 'Παρουσίαση Microsoft Powerpoint',
			'kindOO'          : 'Έγγραφο Open Office',
			'kindAppFlash'    : 'Εφαρμογή Flash',
			'kindPDF'         : 'Μορφή φορητού εγγράφου (PDF)',
			'kindTorrent'     : 'Αρχείο Bittorrent',
			'kind7z'          : 'Αρχείο 7z',
			'kindTAR'         : 'Αρχείο TAR',
			'kindGZIP'        : 'Αρχείο GZIP',
			'kindBZIP'        : 'Αρχείο BZIP',
			'kindXZ'          : 'Αρχείο XZ',
			'kindZIP'         : 'Αρχείο ZIP',
			'kindRAR'         : 'Αρχείο RAR',
			'kindJAR'         : 'Αρχείο Java JAR',
			'kindTTF'         : 'Γραμματοσειρά True Type',
			'kindOTF'         : 'Γραμματοσειρά Open Type',
			'kindRPM'         : 'Πακέτο RPM',
			// texts
			'kindText'        : 'Έγγραφο κειμένου',
			'kindTextPlain'   : 'Απλό κείμενο',
			'kindPHP'         : 'Κώδικας PHP',
			'kindCSS'         : 'Φύλλο Cascading Style',
			'kindHTML'        : 'Έγγραφο HTML',
			'kindJS'          : 'Κώδικας Javascript',
			'kindRTF'         : 'Μορφή πλούσιου κειμένου',
			'kindC'           : 'Κώδικας C',
			'kindCHeader'     : 'Κώδικας κεφαλίδας C',
			'kindCPP'         : 'Κώδικας C++',
			'kindCPPHeader'   : 'Κώδικας κεφαλίδας C++',
			'kindShell'       : 'Σενάριο κελύφους Unix',
			'kindPython'      : 'Κώδικας Python',
			'kindJava'        : 'Κώδικας Java',
			'kindRuby'        : 'Κώδικας Ruby',
			'kindPerl'        : 'Σενάριο Perl',
			'kindSQL'         : 'Κώδικας SQL',
			'kindXML'         : 'Έγγραφο XML',
			'kindAWK'         : 'Κώδικας AWK',
			'kindCSV'         : 'Τιμές χωρισμένες με κόμμα',
			'kindDOCBOOK'     : 'Έγγραφο Docbook XML',
			'kindMarkdown'    : 'Markdown κείμενο', // added 20.7.2015
			// images
			'kindImage'       : 'Εικόνα',
			'kindBMP'         : 'Εικόνα BMP',
			'kindJPEG'        : 'Εικόνα JPEG',
			'kindGIF'         : 'Εικόνα GIF',
			'kindPNG'         : 'Εικόνα PNG',
			'kindTIFF'        : 'Εικόνα TIFF',
			'kindTGA'         : 'Εικόνα TGA',
			'kindPSD'         : 'Εικόνα Adobe Photoshop',
			'kindXBITMAP'     : 'Εικόνα X bitmap',
			'kindPXM'         : 'Εικόνα Pixelmator',
			// media
			'kindAudio'       : 'Αρχεία ήχου',
			'kindAudioMPEG'   : 'Ήχος MPEG',
			'kindAudioMPEG4'  : 'Εικόνα MPEG-4',
			'kindAudioMIDI'   : 'Εικόνα MIDI',
			'kindAudioOGG'    : 'Εικόνα Ogg Vorbis',
			'kindAudioWAV'    : 'Εικόνα WAV',
			'AudioPlaylist'   : 'Λίστα αναπαραγωγής MP3',
			'kindVideo'       : 'Αρχεία media',
			'kindVideoDV'     : 'Ταινία DV',
			'kindVideoMPEG'   : 'Ταινία MPEG',
			'kindVideoMPEG4'  : 'Ταινία MPEG-4',
			'kindVideoAVI'    : 'Ταινία AVI',
			'kindVideoMOV'    : 'Ταινία Quick Time',
			'kindVideoWM'     : 'Ταινία Windows Media',
			'kindVideoFlash'  : 'Ταινία flash',
			'kindVideoMKV'    : 'Ταινία matroska',
			'kindVideoOGG'    : 'Ταινία ogg'
		}
	};
}));lib/js/i18n/elfinder.en.js000064400000071750147361034410011251 0ustar00/**
 * English translation
 * @author Troex Nevelin <troex@fury.scancode.ru>
 * @author Naoki Sawada <hypweb+elfinder@gmail.com>
 * @version 2020-01-16
 */
// elfinder.en.js is integrated into elfinder.(full|min).js by jake build
if (typeof elFinder === "function" && elFinder.prototype.i18) {
  elFinder.prototype.i18.en = {
    translator:
      "Troex Nevelin &lt;troex@fury.scancode.ru&gt;, Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;",
    language: "English",
    direction: "ltr",
    dateFormat: "M d, Y h:i A", // will show like: Aug 24, 2018 04:39 PM
    fancyDateFormat: "$1 h:i A", // will show like: Today 04:39 PM
    nonameDateFormat: "ymd-His", // noname upload will show like: 180824-163916
    messages: {
      getShareText : 'Share',
      "Editor ": "Code Editor",
      /********************************** errors **********************************/
      error: "Error",
      errUnknown: "Unknown error.",
      errUnknownCmd: "Unknown command.",
      errJqui:
        "Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.",
      errNode: "elFinder requires DOM Element to be created.",
      errURL: "Invalid elFinder configuration! URL option is not set.",
      errAccess: "Access denied.",
      errConnect: "Unable to connect to backend.",
      errAbort: "Connection aborted.",
      errTimeout: "Connection timeout.",
      errNotFound: "Backend not found.",
      errResponse: "Invalid backend response.",
      errConf: "Invalid backend configuration.",
      errJSON: "PHP JSON module not installed.",
      errNoVolumes: "Readable volumes not available.",
      errCmdParams: 'Invalid parameters for command "$1".',
      errDataNotJSON: "Data is not JSON.",
      errDataEmpty: "Data is empty.",
      errCmdReq: "Backend request requires command name.",
      errOpen: 'Unable to open "$1".',
      errNotFolder: "Object is not a folder.",
      errNotFile: "Object is not a file.",
      errRead: 'Unable to read "$1".',
      errWrite: 'Unable to write into "$1".',
      errPerm: "Permission denied.",
      errLocked: '"$1" is locked and can not be renamed, moved or removed.',
      errExists: 'Item named "$1" already exists.',
      errInvName: "Invalid file name.",
      errInvDirname: "Invalid folder name.", // from v2.1.24 added 12.4.2017
      errFolderNotFound: "Folder not found.",
      errFileNotFound: "File not found.",
      errTrgFolderNotFound: 'Target folder "$1" not found.',
      errPopup:
        "Browser prevented opening popup window. To open file enable it in browser options.",
      errMkdir: 'Unable to create folder "$1".',
      errMkfile: 'Unable to create file "$1".',
      errRename: 'Unable to rename "$1".',
      errCopyFrom: 'Copying files from volume "$1" not allowed.',
      errCopyTo: 'Copying files to volume "$1" not allowed.',
      errMkOutLink: "Unable to create a link to outside the volume root.", // from v2.1 added 03.10.2015
      errUpload: "Upload error.", // old name - errUploadCommon
      errUploadFile: 'Unable to upload "$1".', // old name - errUpload
      errUploadNoFiles: "No files found for upload.",
      errUploadTotalSize: "Data exceeds the maximum allowed size.", // old name - errMaxSize
      errUploadFileSize: "File exceeds maximum allowed size.", //  old name - errFileMaxSize
      errUploadMime: "File type not allowed.",
      errUploadTransfer: '"$1" transfer error.',
      errUploadTemp: "Unable to make temporary file for upload.", // from v2.1 added 26.09.2015
      errNotReplace:
        'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
      errReplace: 'Unable to replace "$1".',
      errSave: 'Unable to save "$1".',
      errCopy: 'Unable to copy "$1".',
      errMove: 'Unable to move "$1".',
      errCopyInItself: 'Unable to copy "$1" into itself.',
      errRm: 'Unable to remove "$1".',
      errTrash: "Unable into trash.", // from v2.1.24 added 30.4.2017
      errRmSrc: "Unable remove source file(s).",
      errExtract: 'Unable to extract files from "$1".',
      errArchive: "Unable to create archive.",
      errArcType: "Unsupported archive type.",
      errNoArchive: "File is not archive or has unsupported archive type.",
      errCmdNoSupport: "Backend does not support this command.",
      errReplByChild:
        'The folder "$1" can\'t be replaced by an item it contains.',
      errArcSymlinks:
        "For security reason denied to unpack archives contains symlinks or files with not allowed names.", // edited 24.06.2012
      errArcMaxSize: "Archive files exceeds maximum allowed size.",
      errResize: 'Unable to resize "$1".',
      errResizeDegree: "Invalid rotate degree.", // added 7.3.2013
      errResizeRotate: "Unable to rotate image.", // added 7.3.2013
      errResizeSize: "Invalid image size.", // added 7.3.2013
      errResizeNoChange: "Image size not changed.", // added 7.3.2013
      errUsupportType: "Unsupported file type.",
      errNotUTF8Content: 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011
      errNetMount: 'Unable to mount "$1".', // added 17.04.2012
      errNetMountNoDriver: "Unsupported protocol.", // added 17.04.2012
      errNetMountFailed: "Mount failed.", // added 17.04.2012
      errNetMountHostReq: "Host required.", // added 18.04.2012
      errSessionExpires: "Your session has expired due to inactivity.",
      errCreatingTempDir: 'Unable to create temporary directory: "$1"',
      errFtpDownloadFile: 'Unable to download file from FTP: "$1"',
      errFtpUploadFile: 'Unable to upload file to FTP: "$1"',
      errFtpMkdir: 'Unable to create remote directory on FTP: "$1"',
      errArchiveExec: 'Error while archiving files: "$1"',
      errExtractExec: 'Error while extracting files: "$1"',
      errNetUnMount: "Unable to unmount.", // from v2.1 added 30.04.2012
      errConvUTF8: "Not convertible to UTF-8", // from v2.1 added 08.04.2014
      errFolderUpload:
        "Try the modern browser, If you'd like to upload the folder.", // from v2.1 added 26.6.2015
      errSearchTimeout:
        'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
      errReauthRequire: "Re-authorization is required.", // from v2.1.10 added 24.3.2016
      errMaxTargets: "Max number of selectable items is $1.", // from v2.1.17 added 17.10.2016
      errRestore:
        "Unable to restore from the trash. Can't identify the restore destination.", // from v2.1.24 added 3.5.2017
      errEditorNotFound: "Editor not found to this file type.", // from v2.1.25 added 23.5.2017
      errServerError: "Error occurred on the server side.", // from v2.1.25 added 16.6.2017
      errEmpty: 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
      moreErrors: "There are $1 more errors.", // from v2.1.44 added 9.12.2018

      /******************************* commands names ********************************/
      cmdarchive: "Create archive",
      cmdback: "Back",
      cmdcopy: "Copy",
      cmdcut: "Cut",
      cmddownload: "Download",
      cmdduplicate: "Duplicate",
      cmdedit: "Edit file",
      cmdextract: "Extract files from archive",
      cmdforward: "Forward",
      cmdgetfile: "Select files",
      cmdhelp: "About this software",
      cmdhome: "Root",
      cmdinfo: "Get Info & Share",
      cmdmkdir: "New folder",
      cmdmkdirin: "Into New Folder", // from v2.1.7 added 19.2.2016
      cmdmkfile: "New file",
      cmdopen: "Open",
      cmdpaste: "Paste",
      cmdquicklook: "Preview",
      cmdreload: "Reload",
      cmdrename: "Rename",
      cmdrm: "Delete",
      cmdtrash: "Into trash", //from v2.1.24 added 29.4.2017
      cmdrestore: "Restore", //from v2.1.24 added 3.5.2017
      cmdsearch: "Find files",
      cmdup: "Go to parent folder",
      cmdupload: "Upload files",
      cmdview: "View",
      cmdresize: "Resize & Rotate",
      cmdsort: "Sort",
      cmdnetmount: "Mount network volume", // added 18.04.2012
      cmdnetunmount: "Unmount", // from v2.1 added 30.04.2012
      cmdplaces: "To Places", // added 28.12.2014
      cmdchmod: "Change mode", // from v2.1 added 20.6.2015
      cmdopendir: "Open a folder", // from v2.1 added 13.1.2016
      cmdcolwidth: "Reset column width", // from v2.1.13 added 12.06.2016
      cmdfullscreen: "Full Screen", // from v2.1.15 added 03.08.2016
      cmdmove: "Move", // from v2.1.15 added 21.08.2016
      cmdempty: "Empty the folder", // from v2.1.25 added 22.06.2017
      cmdundo: "Undo", // from v2.1.27 added 31.07.2017
      cmdredo: "Redo", // from v2.1.27 added 31.07.2017
      cmdpreference: "Preferences", // from v2.1.27 added 03.08.2017
      cmdselectall: "Select all", // from v2.1.28 added 15.08.2017
      cmdselectnone: "Select none", // from v2.1.28 added 15.08.2017
      cmdselectinvert: "Invert selection", // from v2.1.28 added 15.08.2017
      cmdopennew: "Open in new window", // from v2.1.38 added 3.4.2018
      cmdhide: "Hide (Preference)", // from v2.1.41 added 24.7.2018

      /*********************************** buttons ***********************************/
      btnClose: "Close",
      btnSave: "Save",
      btnRm: "Remove",
      btnApply: "Apply",
      btnCancel: "Cancel",
      btnNo: "No",
      btnYes: "Yes",
      btnMount: "Mount", // added 18.04.2012
      btnApprove: "Goto $1 & approve", // from v2.1 added 26.04.2012
      btnUnmount: "Unmount", // from v2.1 added 30.04.2012
      btnConv: "Convert", // from v2.1 added 08.04.2014
      btnCwd: "Here", // from v2.1 added 22.5.2015
      btnVolume: "Volume", // from v2.1 added 22.5.2015
      btnAll: "All", // from v2.1 added 22.5.2015
      btnMime: "MIME Type", // from v2.1 added 22.5.2015
      btnFileName: "Filename", // from v2.1 added 22.5.2015
      btnSaveClose: "Save & Close", // from v2.1 added 12.6.2015
      btnBackup: "Backup", // fromv2.1 added 28.11.2015
      btnRename: "Rename", // from v2.1.24 added 6.4.2017
      btnRenameAll: "Rename(All)", // from v2.1.24 added 6.4.2017
      btnPrevious: "Prev ($1/$2)", // from v2.1.24 added 11.5.2017
      btnNext: "Next ($1/$2)", // from v2.1.24 added 11.5.2017
      btnSaveAs: "Save As", // from v2.1.25 added 24.5.2017

      /******************************** notifications ********************************/
      ntfopen: "Open folder",
      ntffile: "Open file",
      ntfreload: "Reload folder content",
      ntfmkdir: "Creating folder",
      ntfmkfile: "Creating files",
      ntfrm: "Delete items",
      ntfcopy: "Copy items",
      ntfmove: "Move items",
      ntfprepare: "Checking existing items",
      ntfrename: "Rename files",
      ntfupload: "Uploading files",
      ntfdownload: "Downloading files",
      ntfsave: "Save files",
      ntfarchive: "Creating archive",
      ntfextract: "Extracting files from archive",
      ntfsearch: "Searching files",
      ntfresize: "Resizing images",
      ntfsmth: "Doing something",
      ntfloadimg: "Loading image",
      ntfnetmount: "Mounting network volume", // added 18.04.2012
      ntfnetunmount: "Unmounting network volume", // from v2.1 added 30.04.2012
      ntfdim: "Acquiring image dimension", // added 20.05.2013
      ntfreaddir: "Reading folder infomation", // from v2.1 added 01.07.2013
      ntfurl: "Getting URL of link", // from v2.1 added 11.03.2014
      ntfchmod: "Changing file mode", // from v2.1 added 20.6.2015
      ntfpreupload: "Verifying upload file name", // from v2.1 added 31.11.2015
      ntfzipdl: "Creating a file for download", // from v2.1.7 added 23.1.2016
      ntfparents: "Getting path infomation", // from v2.1.17 added 2.11.2016
      ntfchunkmerge: "Processing the uploaded file", // from v2.1.17 added 2.11.2016
      ntftrash: "Doing throw in the trash", // from v2.1.24 added 2.5.2017
      ntfrestore: "Doing restore from the trash", // from v2.1.24 added 3.5.2017
      ntfchkdir: "Checking destination folder", // from v2.1.24 added 3.5.2017
      ntfundo: "Undoing previous operation", // from v2.1.27 added 31.07.2017
      ntfredo: "Redoing previous undone", // from v2.1.27 added 31.07.2017
      ntfchkcontent: "Checking contents", // from v2.1.41 added 3.8.2018

      /*********************************** volumes *********************************/
      volume_Trash: "Trash", //from v2.1.24 added 29.4.2017

      /************************************ dates **********************************/
      dateUnknown: "unknown",
      Today: "Today",
      Yesterday: "Yesterday",
      msJan: "Jan",
      msFeb: "Feb",
      msMar: "Mar",
      msApr: "Apr",
      msMay: "May",
      msJun: "Jun",
      msJul: "Jul",
      msAug: "Aug",
      msSep: "Sep",
      msOct: "Oct",
      msNov: "Nov",
      msDec: "Dec",
      January: "January",
      February: "February",
      March: "March",
      April: "April",
      May: "May",
      June: "June",
      July: "July",
      August: "August",
      September: "September",
      October: "October",
      November: "November",
      December: "December",
      Sunday: "Sunday",
      Monday: "Monday",
      Tuesday: "Tuesday",
      Wednesday: "Wednesday",
      Thursday: "Thursday",
      Friday: "Friday",
      Saturday: "Saturday",
      Sun: "Sun",
      Mon: "Mon",
      Tue: "Tue",
      Wed: "Wed",
      Thu: "Thu",
      Fri: "Fri",
      Sat: "Sat",

      /******************************** sort variants ********************************/
      sortname: "by name",
      sortkind: "by kind",
      sortsize: "by size",
      sortdate: "by date",
      sortFoldersFirst: "Folders first",
      sortperm: "by permission", // from v2.1.13 added 13.06.2016
      sortmode: "by mode", // from v2.1.13 added 13.06.2016
      sortowner: "by owner", // from v2.1.13 added 13.06.2016
      sortgroup: "by group", // from v2.1.13 added 13.06.2016
      sortAlsoTreeview: "Also Treeview", // from v2.1.15 added 01.08.2016

      /********************************** new items **********************************/
      "untitled file.txt": "NewFile.txt", // added 10.11.2015
      "untitled folder": "NewFolder", // added 10.11.2015
      Archive: "NewArchive", // from v2.1 added 10.11.2015
      "untitled file": "NewFile.$1", // from v2.1.41 added 6.8.2018
      extentionfile: "$1: File", // from v2.1.41 added 6.8.2018
      extentiontype: "$1: $2", // from v2.1.43 added 17.10.2018

      /********************************** messages **********************************/
      confirmReq: "Confirmation required",
      confirmRm:
        "Are you sure you want to permanently remove items?<br/>This cannot be undone!",
      confirmRepl:
        "Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)",
      confirmRest: "Replace existing item with the item in trash?", // fromv2.1.24 added 5.5.2017
      confirmConvUTF8:
        "Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.", // from v2.1 added 08.04.2014
      confirmNonUTF8:
        "Character encoding of this file couldn't be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.", // from v2.1.19 added 28.11.2016
      confirmNotSave:
        "It has been modified.<br/>Losing work if you do not save changes.", // from v2.1 added 15.7.2015
      confirmTrash: "Are you sure you want to move items to trash bin?", //from v2.1.24 added 29.4.2017
      confirmMove: 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019
      apllyAll: "Apply to all",
      name: "Name",
      size: "Size",
      perms: "Permissions",
      modify: "Modified",
      kind: "Kind",
      read: "read",
      write: "write",
      noaccess: "no access",
      and: "and",
      unknown: "unknown",
      selectall: "Select all items",
      selectfiles: "Select item(s)",
      selectffile: "Select first item",
      selectlfile: "Select last item",
      viewlist: "List view",
      viewicons: "Icons view",
      viewSmall: "Small icons", // from v2.1.39 added 22.5.2018
      viewMedium: "Medium icons", // from v2.1.39 added 22.5.2018
      viewLarge: "Large icons", // from v2.1.39 added 22.5.2018
      viewExtraLarge: "Extra large icons", // from v2.1.39 added 22.5.2018
      places: "Places",
      calc: "Calculating",
      path: "Path",
      aliasfor: "Alias for",
      locked: "Locked",
      dim: "Dimensions",
      files: "Files",
      folders: "Folders",
      items: "Items",
      yes: "yes",
      no: "no",
      link: "Link",
      searcresult: "Search results",
      selected: "selected items",
      about: "About",
      shortcuts: "Shortcuts",
      help: "Help",
      webfm: "Web file manager",
      ver: "Version",
      protocolver: "protocol version",
      homepage: "Project home",
      docs: "Documentation",
      github: "Fork us on GitHub",
      twitter: "Follow us on Twitter",
      facebook: "Join us on Facebook",
      team: "Team",
      chiefdev: "chief developer",
      developer: "developer",
      contributor: "contributor",
      maintainer: "maintainer",
      translator: "translator",
      icons: "Icons",
      dontforget: "and don't forget to take your towel",
      shortcutsof: "Shortcuts disabled",
      dropFiles: "Drop files here",
      or: "or",
      selectForUpload: "Select files",
      moveFiles: "Move items",
      copyFiles: "Copy items",
      restoreFiles: "Restore items", // from v2.1.24 added 5.5.2017
      rmFromPlaces: "Remove from places",
      aspectRatio: "Aspect ratio",
      scale: "Scale",
      width: "Width",
      height: "Height",
      resize: "Resize",
      crop: "Crop",
      rotate: "Rotate",
      "rotate-cw": "Rotate 90 degrees CW",
      "rotate-ccw": "Rotate 90 degrees CCW",
      degree: "°",
      netMountDialogTitle: "Mount network volume", // added 18.04.2012
      protocol: "Protocol", // added 18.04.2012
      host: "Host", // added 18.04.2012
      port: "Port", // added 18.04.2012
      user: "User", // added 18.04.2012
      pass: "Password", // added 18.04.2012
      confirmUnmount: "Are you sure to unmount $1?", // from v2.1 added 30.04.2012
      dropFilesBrowser: "Drop or Paste files from browser", // from v2.1 added 30.05.2012
      dropPasteFiles: "Drop files, Paste URLs or images(clipboard) here", // from v2.1 added 07.04.2014
      encoding: "Encoding", // from v2.1 added 19.12.2014
      locale: "Locale", // from v2.1 added 19.12.2014
      searchTarget: "Target: $1", // from v2.1 added 22.5.2015
      searchMime: "Search by input MIME Type", // from v2.1 added 22.5.2015
      owner: "Owner", // from v2.1 added 20.6.2015
      group: "Group", // from v2.1 added 20.6.2015
      other: "Other", // from v2.1 added 20.6.2015
      execute: "Execute", // from v2.1 added 20.6.2015
      perm: "Permission", // from v2.1 added 20.6.2015
      mode: "Mode", // from v2.1 added 20.6.2015
      emptyFolder: "Folder is empty", // from v2.1.6 added 30.12.2015
      emptyFolderDrop: "Folder is empty\\A Drop to add items", // from v2.1.6 added 30.12.2015
      emptyFolderLTap: "Folder is empty\\A Long tap to add items", // from v2.1.6 added 30.12.2015
      quality: "Quality", // from v2.1.6 added 5.1.2016
      autoSync: "Auto sync", // from v2.1.6 added 10.1.2016
      moveUp: "Move up", // from v2.1.6 added 18.1.2016
      getLink: "Get URL link", // from v2.1.7 added 9.2.2016
      share: 'Share',
      selectedItems: "Selected items ($1)", // from v2.1.7 added 2.19.2016
      folderId: "Folder ID", // from v2.1.10 added 3.25.2016
      offlineAccess: "Allow offline access", // from v2.1.10 added 3.25.2016
      reAuth: "To re-authenticate", // from v2.1.10 added 3.25.2016
      nowLoading: "Now loading...", // from v2.1.12 added 4.26.2016
      openMulti: "Open multiple files", // from v2.1.12 added 5.14.2016
      openMultiConfirm:
        "You are trying to open the $1 files. Are you sure you want to open in browser?", // from v2.1.12 added 5.14.2016
      emptySearch: "Search results is empty in search target.", // from v2.1.12 added 5.16.2016
      editingFile: "It is editing a file.", // from v2.1.13 added 6.3.2016
      hasSelected: "You have selected $1 items.", // from v2.1.13 added 6.3.2016
      hasClipboard: "You have $1 items in the clipboard.", // from v2.1.13 added 6.3.2016
      incSearchOnly: "Incremental search is only from the current view.", // from v2.1.13 added 6.30.2016
      reinstate: "Reinstate", // from v2.1.15 added 3.8.2016
      complete: "$1 complete", // from v2.1.15 added 21.8.2016
      contextmenu: "Context menu", // from v2.1.15 added 9.9.2016
      pageTurning: "Page turning", // from v2.1.15 added 10.9.2016
      volumeRoots: "Volume roots", // from v2.1.16 added 16.9.2016
      reset: "Reset", // from v2.1.16 added 1.10.2016
      bgcolor: "Background color", // from v2.1.16 added 1.10.2016
      colorPicker: "Color picker", // from v2.1.16 added 1.10.2016
      "8pxgrid": "8px Grid", // from v2.1.16 added 4.10.2016
      enabled: "Enabled", // from v2.1.16 added 4.10.2016
      disabled: "Disabled", // from v2.1.16 added 4.10.2016
      emptyIncSearch:
        "Search results is empty in current view.\\A Press [Enter] to expand search target.", // from v2.1.16 added 5.10.2016
      emptyLetSearch: "First letter search results is empty in current view.", // from v2.1.23 added 24.3.2017
      textLabel: "Text label", // from v2.1.17 added 13.10.2016
      minsLeft: "$1 mins left", // from v2.1.17 added 13.11.2016
      openAsEncoding: "Reopen with selected encoding", // from v2.1.19 added 2.12.2016
      saveAsEncoding: "Save with the selected encoding", // from v2.1.19 added 2.12.2016
      selectFolder: "Select folder", // from v2.1.20 added 13.12.2016
      firstLetterSearch: "First letter search", // from v2.1.23 added 24.3.2017
      presets: "Presets", // from v2.1.25 added 26.5.2017
      tooManyToTrash: "It's too many items so it can't into trash.", // from v2.1.25 added 9.6.2017
      TextArea: "TextArea", // from v2.1.25 added 14.6.2017
      folderToEmpty: 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
      filderIsEmpty: 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
      preference: "Preference", // from v2.1.26 added 28.6.2017
      language: "Language", // from v2.1.26 added 28.6.2017
      clearBrowserData: "Initialize the settings saved in this browser", // from v2.1.26 added 28.6.2017
      toolbarPref: "Toolbar settings", // from v2.1.27 added 2.8.2017
      charsLeft: "... $1 chars left.", // from v2.1.29 added 30.8.2017
      linesLeft: "... $1 lines left.", // from v2.1.52 added 16.1.2020
      sum: "Sum", // from v2.1.29 added 28.9.2017
      roughFileSize: "Rough file size", // from v2.1.30 added 2.11.2017
      autoFocusDialog: "Focus on the element of dialog with mouseover", // from v2.1.30 added 2.11.2017
      select: "Select", // from v2.1.30 added 23.11.2017
      selectAction: "Action when select file", // from v2.1.30 added 23.11.2017
      useStoredEditor: "Open with the editor used last time", // from v2.1.30 added 23.11.2017
      selectinvert: "Invert selection", // from v2.1.30 added 25.11.2017
      renameMultiple:
        "Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!", // from v2.1.31 added 4.12.2017
      batchRename: "Batch rename", // from v2.1.31 added 8.12.2017
      plusNumber: "+ Number", // from v2.1.31 added 8.12.2017
      asPrefix: "Add prefix", // from v2.1.31 added 8.12.2017
      asSuffix: "Add suffix", // from v2.1.31 added 8.12.2017
      changeExtention: "Change extention", // from v2.1.31 added 8.12.2017
      columnPref: "Columns settings (List view)", // from v2.1.32 added 6.2.2018
      reflectOnImmediate:
        "All changes will reflect immediately to the archive.", // from v2.1.33 added 2.3.2018
      reflectOnUnmount:
        "Any changes will not reflect until un-mount this volume.", // from v2.1.33 added 2.3.2018
      unmountChildren:
        "The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?", // from v2.1.33 added 5.3.2018
      selectionInfo: "Selection Info", // from v2.1.33 added 7.3.2018
      hashChecker: "Algorithms to show the file hash", // from v2.1.33 added 10.3.2018
      infoItems: "Info Items (Selection Info Panel)", // from v2.1.38 added 28.3.2018
      pressAgainToExit: "Press again to exit.", // from v2.1.38 added 1.4.2018
      toolbar: "Toolbar", // from v2.1.38 added 4.4.2018
      workspace: "Work Space", // from v2.1.38 added 4.4.2018
      dialog: "Dialog", // from v2.1.38 added 4.4.2018
      all: "All", // from v2.1.38 added 4.4.2018
      iconSize: "Icon Size (Icons view)", // from v2.1.39 added 7.5.2018
      editorMaximized: "Open the maximized editor window", // from v2.1.40 added 30.6.2018
      editorConvNoApi:
        "Because conversion by API is not currently available, please convert on the website.", //from v2.1.40 added 8.7.2018
      editorConvNeedUpload:
        "After conversion, you must be upload with the item URL or a downloaded file to save the converted file.", //from v2.1.40 added 8.7.2018
      convertOn: "Convert on the site of $1", // from v2.1.40 added 10.7.2018
      integrations: "Integrations", // from v2.1.40 added 11.7.2018
      integrationWith:
        "This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.", // from v2.1.40 added 11.7.2018
      showHidden: "Show hidden items", // from v2.1.41 added 24.7.2018
      hideHidden: "Hide hidden items", // from v2.1.41 added 24.7.2018
      toggleHidden: "Show/Hide hidden items", // from v2.1.41 added 24.7.2018
      makefileTypes: 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
      typeOfTextfile: "Type of the Text file", // from v2.1.41 added 7.8.2018
      add: "Add", // from v2.1.41 added 7.8.2018
      theme: "Theme", // from v2.1.43 added 19.10.2018
      default: "Default", // from v2.1.43 added 19.10.2018
      description: "Description", // from v2.1.43 added 19.10.2018
      website: "Website", // from v2.1.43 added 19.10.2018
      author: "Author", // from v2.1.43 added 19.10.2018
      email: "Email", // from v2.1.43 added 19.10.2018
      license: "License", // from v2.1.43 added 19.10.2018
      exportToSave:
        "This item can't be saved. To avoid losing the edits you need to export to your PC.", // from v2.1.44 added 1.12.2018
      dblclickToSelect: "Double click on the file to select it.", // from v2.1.47 added 22.1.2019
      useFullscreen: "Use fullscreen mode", // from v2.1.47 added 19.2.2019

      /********************************** mimetypes **********************************/
      kindUnknown: "Unknown",
      kindRoot: "Volume Root", // from v2.1.16 added 16.10.2016
      kindFolder: "Folder",
      kindSelects: "Selections", // from v2.1.29 added 29.8.2017
      kindAlias: "Alias",
      kindAliasBroken: "Broken alias",
      // applications
      kindApp: "Application",
      kindPostscript: "Postscript document",
      kindMsOffice: "Microsoft Office document",
      kindMsWord: "Microsoft Word document",
      kindMsExcel: "Microsoft Excel document",
      kindMsPP: "Microsoft Powerpoint presentation",
      kindOO: "Open Office document",
      kindAppFlash: "Flash application",
      kindPDF: "Portable Document Format (PDF)",
      kindTorrent: "Bittorrent file",
      kind7z: "7z archive",
      kindTAR: "TAR archive",
      kindGZIP: "GZIP archive",
      kindBZIP: "BZIP archive",
      kindXZ: "XZ archive",
      kindZIP: "ZIP archive",
      kindRAR: "RAR archive",
      kindJAR: "Java JAR file",
      kindTTF: "True Type font",
      kindOTF: "Open Type font",
      kindRPM: "RPM package",
      // texts
      kindText: "Text document",
      kindTextPlain: "Plain text",
      kindPHP: "PHP source",
      kindCSS: "Cascading style sheet",
      kindHTML: "HTML document",
      kindJS: "Javascript source",
      kindRTF: "Rich Text Format",
      kindC: "C source",
      kindCHeader: "C header source",
      kindCPP: "C++ source",
      kindCPPHeader: "C++ header source",
      kindShell: "Unix shell script",
      kindPython: "Python source",
      kindJava: "Java source",
      kindRuby: "Ruby source",
      kindPerl: "Perl script",
      kindSQL: "SQL source",
      kindXML: "XML document",
      kindAWK: "AWK source",
      kindCSV: "Comma separated values",
      kindDOCBOOK: "Docbook XML document",
      kindMarkdown: "Markdown text", // added 20.7.2015
      // images
      kindImage: "Image",
      kindBMP: "BMP image",
      kindJPEG: "JPEG image",
      kindGIF: "GIF Image",
      kindPNG: "PNG Image",
      kindTIFF: "TIFF image",
      kindTGA: "TGA image",
      kindPSD: "Adobe Photoshop image",
      kindXBITMAP: "X bitmap image",
      kindPXM: "Pixelmator image",
      // media
      kindAudio: "Audio media",
      kindAudioMPEG: "MPEG audio",
      kindAudioMPEG4: "MPEG-4 audio",
      kindAudioMIDI: "MIDI audio",
      kindAudioOGG: "Ogg Vorbis audio",
      kindAudioWAV: "WAV audio",
      AudioPlaylist: "MP3 playlist",
      kindVideo: "Video media",
      kindVideoDV: "DV movie",
      kindVideoMPEG: "MPEG movie",
      kindVideoMPEG4: "MPEG-4 movie",
      kindVideoAVI: "AVI movie",
      kindVideoMOV: "Quick Time movie",
      kindVideoWM: "Windows Media movie",
      kindVideoFlash: "Flash movie",
      kindVideoMKV: "Matroska movie",
      kindVideoOGG: "Ogg movie",
    },
  };
}
lib/js/i18n/elfinder.cs.js000064400000103154147361034410011246 0ustar00/**
 * Čeština translation
 * @author RobiNN <kelcakrobo@gmail.com>
 * @author Jay Gridley <gridley.jay@hotmail.com>
 * @version 2022-02-28
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.cs = {
		translator : 'RobiNN &lt;kelcakrobo@gmail.com&gt;, Jay Gridley &lt;gridley.jay@hotmail.com&gt;',
		language   : 'Čeština',
		direction  : 'ltr',
		dateFormat : 'd. m. Y H:i', // will show like: 28. 02. 2022 11:30
		fancyDateFormat : '$1 H:i', // will show like: Dnes 11:30
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220228-113024
		messages   : {
			'getShareText' : 'Podíl',
			'Editor ': 'Editor kódu',
			/********************************** errors **********************************/
			'error'                : 'Chyba',
			'errUnknown'           : 'Neznámá chyba.',
			'errUnknownCmd'        : 'Neznámý příkaz.',
			'errJqui'              : 'Nedostačující konfigurace jQuery UI. Musí být zahrnuty komponenty Selectable, Draggable a Droppable.',
			'errNode'              : 'elFinder vyžaduje vytvořený DOM Elementu.',
			'errURL'               : 'Chybná konfigurace elFinderu! Není nastavena hodnota URL.',
			'errAccess'            : 'Přístup zamítnut.',
			'errConnect'           : 'Nepodařilo se připojit k backendu.',
			'errAbort'             : 'Připojení zrušeno.',
			'errTimeout'           : 'Vypšel limit pro připojení.',
			'errNotFound'          : 'Backend nenalezen.',
			'errResponse'          : 'Nesprávná odpověď backendu.',
			'errConf'              : 'Nepsrávná konfigurace backendu.',
			'errJSON'              : 'PHP modul JSON není nainstalován.',
			'errNoVolumes'         : 'Není dostupný čitelný oddíl.',
			'errCmdParams'         : 'Nesprávné parametry příkazu "$1".',
			'errDataNotJSON'       : 'Data nejsou ve formátu JSON.',
			'errDataEmpty'         : 'Data jsou prázdná.',
			'errCmdReq'            : 'Dotaz backendu vyžaduje název příkazu.',
			'errOpen'              : 'Chyba při otevírání "$1".',
			'errNotFolder'         : 'Objekt není složka.',
			'errNotFile'           : 'Objekt není soubor.',
			'errRead'              : 'Chyba při čtení "$1".',
			'errWrite'             : 'Chyba při zápisu do "$1".',
			'errPerm'              : 'Přístup odepřen.',
			'errLocked'            : '"$1" je uzamčený a nemůže být přejmenován, přesunut nebo smazán.',
			'errExists'            : 'Soubor s názvem "$1" již existuje.',
			'errInvName'           : 'Nesprávný název souboru.',
			'errInvDirname'        : 'Neplatný název adresáře.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Složka nenalezena.',
			'errFileNotFound'      : 'Soubor nenalezen.',
			'errTrgFolderNotFound' : 'Cílová složka "$1" nenalezena.',
			'errPopup'             : 'Prohlížeč zabránil otevření vyskakovacího okna. K otevření souboru, povolte vyskakovací okno v prohlížeči.',
			'errMkdir'             : 'Nepodařilo se vytvořit složku "$1".',
			'errMkfile'            : 'Nepodařilo se vytvořit soubor "$1".',
			'errRename'            : 'Nepodařilo se přejmenovat "$1".',
			'errCopyFrom'          : 'Kopírování souborů z oddílu "$1" není povoleno.',
			'errCopyTo'            : 'Kopírování souborů do oddílu "$1" není povoleno.',
			'errMkOutLink'         : 'Nelze vytvořit odkaz mimo kořenového svazku.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Chyba nahrávání.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nepodařilo se nahrát "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Nejsou vybrány žádné soubory k nahrání.',
			'errUploadTotalSize'   : 'Překročena maximální povolená velikost dat.', // old name - errMaxSize
			'errUploadFileSize'    : 'Překročena maximální povolená velikost souboru.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Nepovolený typ souboru.',
			'errUploadTransfer'    : '"$1" chyba přenosu.',
			'errUploadTemp'        : 'Nelze vytvořit dočasný soubor pro upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" v tomto umístění již existuje a nelze jej nahradit s jiným typem objektu.', // new
			'errReplace'           : 'Nelze nahradit "$1".',
			'errSave'              : '"$1" nelze uložit.',
			'errCopy'              : '"$1" nelze zkopírovat.',
			'errMove'              : '"$1" nelze přemístit.',
			'errCopyInItself'      : '"$1" nelze zkopírovat do sebe sama.',
			'errRm'                : '"$1" nelze odstranit.',
			'errTrash'             : 'Nelze se dostat do koše.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Nelze odstranit zdrojový soubor(y).',
			'errExtract'           : 'Nelze extrahovat soubory z "$1".',
			'errArchive'           : 'Nelze vytvořit archív.',
			'errArcType'           : 'Nepodporovaný typ archívu.',
			'errNoArchive'         : 'Soubor není archív nebo má nepodporovaný formát.',
			'errCmdNoSupport'      : 'Backend tento příkaz nepodporuje.',
			'errReplByChild'       : 'Složka "$1" nemůže být nahrazena souborem, který sama obsahuje.',
			'errArcSymlinks'       : 'Z bezpečnostních důvodů je zakázáno rozbalit archívy obsahující symlinky.', // edited 24.06.2012
			'errArcMaxSize'        : 'Soubory archívu překračují maximální povolenou velikost.',
			'errResize'            : 'Nepodařilo se změnit velikost obrázku "$1".',
			'errResizeDegree'      : 'Neplatný stupeň rotace.',  // added 7.3.2013
			'errResizeRotate'      : 'Nelze otočit obrázek.',  // added 7.3.2013
			'errResizeSize'        : 'Neplatná velikost obrázku.',  // added 7.3.2013
			'errResizeNoChange'    : 'Velikost obrazu se nezmění.',  // added 7.3.2013
			'errUsupportType'      : 'Nepodporovaný typ souboru.',
			'errNotUTF8Content'    : 'Soubor "$1" nemá ani obsah kódovaný v UTF-8 a nelze změnit.',  // added 9.11.2011
			'errNetMount'          : 'Není možné se připojit "$ 1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nepodporovaný protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Připojení se nezdařilo.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Hostitel se vyžaduje.', // added 18.04.2012
			'errSessionExpires'    : 'Relace byla ukončena z důvodu nečinnosti.',
			'errCreatingTempDir'   : 'Nelze vytvořit dočasný adresář: "$1"',
			'errFtpDownloadFile'   : 'Nelze stáhnout soubor z FTP: "$1"',
			'errFtpUploadFile'     : 'Nelze nahrát soubor na FTP: "$1"',
			'errFtpMkdir'          : 'Nepodařilo se vytvořit vzdálený adresář na FTP: "$1"',
			'errArchiveExec'       : 'Při archivaci do souboru došlo k chybě: "$1"',
			'errExtractExec'       : 'Chyba při extrahování souboru: "$1"',
			'errNetUnMount'        : 'Nepodařilo se odpojit', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nelze převést na UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Chcete-li nahrát složku, zkuste moderní prohlížeč.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Vypršení časového limitu při hledání "$1". Je částečně výsledkem hledání.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Opětovné povolení je nutné.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maximální počet volitelných předmětů je $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nelze obnovit z koše. Nelze identifikovat cíl obnovení.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor tohoto typu souboru nebyl nalezen.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Došlo k chybě na straně serveru.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nelze vyprázdnit složku "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Existují ještě další $1 chyby.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Můžete vytvořit až $1 složek najednou.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Vytvořit archív',
			'cmdback'      : 'Zpět',
			'cmdcopy'      : 'Kopírovat',
			'cmdcut'       : 'Vyjmout',
			'cmddownload'  : 'Stáhnout',
			'cmdduplicate' : 'Duplikovat',
			'cmdedit'      : 'Upravit soubor',
			'cmdextract'   : 'Rozbalit archív',
			'cmdforward'   : 'Vpřed',
			'cmdgetfile'   : 'Vybrat soubory',
			'cmdhelp'      : 'O softwaru',
			'cmdhome'      : 'Domů',
			'cmdinfo'      : 'Zobrazit informace',
			'cmdmkdir'     : 'Nová složka',
			'cmdmkdirin'   : 'Do nové složky', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nový soubor',
			'cmdopen'      : 'Otevřít',
			'cmdpaste'     : 'Vložit',
			'cmdquicklook' : 'Náhled',
			'cmdreload'    : 'Obnovit',
			'cmdrename'    : 'Přejmenovat',
			'cmdrm'        : 'Smazat',
			'cmdtrash'     : 'Do koše', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Obnovit', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Najít soubory',
			'cmdup'        : 'Přejít do nadřazené složky',
			'cmdupload'    : 'Nahrát soubor(y)',
			'cmdview'      : 'Zobrazit',
			'cmdresize'    : 'Změnit velikost',
			'cmdsort'      : 'Seřadit',
			'cmdnetmount'  : 'Připojit síťovou jednotku', // added 18.04.2012
			'cmdnetunmount': 'Odpojit', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Umístění', // added 28.12.2014
			'cmdchmod'     : 'Změnit režim', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Otevření složky', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Obnovení šířku sloupce', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Celá obrazovka', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Posouvat', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vyprázdnit složku', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Krok zpět', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Udělat to znovu', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preference', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Vyberat vše', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Nic nevyberať', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invertovat výběr', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Otevři v novém okně', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Skrýt (Předvolba)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Zavřít',
			'btnSave'   : 'Uložit',
			'btnRm'     : 'Odstranit',
			'btnApply'  : 'Použít',
			'btnCancel' : 'Zrušit',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Ano',
			'btnMount'  : 'Připojit',  // added 18.04.2012
			'btnApprove': 'Přejít do části 1 $ & schválit', // from v2.1 added 26.04.2012
			'btnUnmount': 'Odpojit', // from v2.1 added 30.04.2012
			'btnConv'   : 'Převést', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Tu',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Médium',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Všechno',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME typ', // from v2.1 added 22.5.2015
			'btnFileName':'Název souboru',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Uložit & zavřít', // from v2.1 added 12.6.2015
			'btnBackup' : 'Zálohovat', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Přejmenovat',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Přejmenovat vše', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Předch ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Další ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Uložit jako', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Otevírání složky',
			'ntffile'     : 'Otevírání souboru',
			'ntfreload'   : 'Obnovování obsahu složky',
			'ntfmkdir'    : 'Vytváření složky',
			'ntfmkfile'   : 'Vytváření souborů',
			'ntfrm'       : 'Vymazání položek',
			'ntfcopy'     : 'Kopírování položek',
			'ntfmove'     : 'Přemístění položek',
			'ntfprepare'  : 'Kontrola existujících položek',
			'ntfrename'   : 'Přejmenovávání souborů',
			'ntfupload'   : 'Nahrávání souborů',
			'ntfdownload' : 'Stahování souborů',
			'ntfsave'     : 'Ukládání souborů',
			'ntfarchive'  : 'Vytváření archívu',
			'ntfextract'  : 'Rozbalování souborů z archívu',
			'ntfsearch'   : 'Vyhledávání souborů',
			'ntfresize'   : 'Změna velikosti obrázků',
			'ntfsmth'     : 'Čekejte prosím...',
			'ntfloadimg'  : 'Načítání obrázků',
			'ntfnetmount' : 'Připojení síťového média', // added 18.04.2012
			'ntfnetunmount': 'Odpojení síťového média', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Získejte rozměr obrazu', // added 20.05.2013
			'ntfreaddir'  : 'Přečtěte si informace o složce', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Získejte adresu URL odkazu', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Změna souboru', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Zkontrolujte název nahravaného souboru', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Vytvořit soubor ke stažení', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Získání informací o cestě', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Zpracování nahraného souboru', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Hodit do koše', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Obnova z koše', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kontrola cílové složky', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Zrušit  předchozí operaci', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Obnovit předchozí zrušení', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Koš', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'neznámý',
			'Today'       : 'Dnes',
			'Yesterday'   : 'Včera',
			'msJan'       : 'Led',
			'msFeb'       : 'Úno',
			'msMar'       : 'Bře',
			'msApr'       : 'Dub',
			'msMay'       : 'Kvě',
			'msJun'       : 'Čer',
			'msJul'       : 'Čec',
			'msAug'       : 'Srp',
			'msSep'       : 'Zář',
			'msOct'       : 'Říj',
			'msNov'       : 'Lis',
			'msDec'       : 'Pro',
			'January'     : 'Leden',
			'February'    : 'Únor',
			'March'       : 'Březen',
			'April'       : 'Duben',
			'May'         : 'Květen',
			'June'        : 'Červen',
			'July'        : 'Červenec',
			'August'      : 'Srpen',
			'September'   : 'Září',
			'October'     : 'Říjen',
			'November'    : 'Listopad',
			'December'    : 'Prosinec',
			'Sunday'      : 'Neděle',
			'Monday'      : 'Pondělí',
			'Tuesday'     : 'Úterý',
			'Wednesday'   : 'Středa',
			'Thursday'    : 'Čtvrtek',
			'Friday'      : 'Pátek',
			'Saturday'    : 'Sobota',
			'Sun'         : 'Ne',
			'Mon'         : 'Po',
			'Tue'         : 'Út',
			'Wed'         : 'St',
			'Thu'         : 'Čt',
			'Fri'         : 'Pá',
			'Sat'         : 'So',

			/******************************** sort variants ********************************/
			'sortname'          : 'dle jména',
			'sortkind'          : 'dle typu',
			'sortsize'          : 'dle velikosti',
			'sortdate'          : 'dle data',
			'sortFoldersFirst'  : 'Napřed složky',
			'sortperm'          : 'dle povolení', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'dle módu',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'dle majitele',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'dle skupiny',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Také stromové zobrazení',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Nový soubor.txt', // added 10.11.2015
			'untitled folder'   : 'Nová složka',   // added 10.11.2015
			'Archive'           : 'Nový archiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Nový soubor.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 soubor',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Požadováno potvrzení',
			'confirmRm'       : 'Opravdu chcete odstranit tyto soubory?<br/>Operace nelze vrátit!',
			'confirmRepl'     : 'Nahradit staré soubory novými?',
			'confirmRest'     : 'Nahradit stávající položku položkou z koše?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Není v UTF-8, převést do UTF-8?<br/>Obsah po převodu se stává UTF-8.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Kódování tohoto souboru nemoholo rozpoznán. Pro úpravy je třeba dočasně převést do kódování UTF-8.<br/>Prosím, vyberte kódování znaků souboru.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Byl změněn.<br/>Pokud obsahuje neuložené změny, dojde ke ztrátě práce.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Opravdu chcete položky přesunout do koše?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Opravdu chcete položky přesunout do "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Pro všechny',
			'name'            : 'Název',
			'size'            : 'Velikost',
			'perms'           : 'Práva',
			'modify'          : 'Upravený',
			'kind'            : 'Typ',
			'read'            : 'čtení',
			'write'           : 'zápis',
			'noaccess'        : 'přístup odepřen',
			'and'             : 'a',
			'unknown'         : 'neznámý',
			'selectall'       : 'Vybrat všechny položky',
			'selectfiles'     : 'Vybrat položku(y)',
			'selectffile'     : 'Vybrat první položku',
			'selectlfile'     : 'Vybrat poslední položku',
			'viewlist'        : 'Seznam',
			'viewicons'       : 'Ikony',
			'viewSmall'       : 'Malé ikony', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Střední ikony', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Velké ikony', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra velké ikony', // from v2.1.39 added 22.5.2018
			'places'          : 'Místa',
			'calc'            : 'Vypočítat',
			'path'            : 'Cesta',
			'aliasfor'        : 'Zástupce pro',
			'locked'          : 'Uzamčený',
			'dim'             : 'Rozměry',
			'files'           : 'Soubory',
			'folders'         : 'Složky',
			'items'           : 'Položky',
			'yes'             : 'ano',
			'no'              : 'ne',
			'link'            : 'Odkaz',
			'searcresult'     : 'Výsledky hledání',
			'selected'        : 'vybrané položky',
			'about'           : 'O softwaru',
			'shortcuts'       : 'Zkratky',
			'help'            : 'Nápověda',
			'webfm'           : 'Webový správce souborů',
			'ver'             : 'Verze',
			'protocolver'     : 'verze protokolu',
			'homepage'        : 'Domovská stránka projektu',
			'docs'            : 'Dokumentace',
			'github'          : 'Najdete nás na Gitgube',
			'twitter'         : 'Následujte nás na Twitteri',
			'facebook'        : 'Připojte se k nám na Facebooku',
			'team'            : 'Tým',
			'chiefdev'        : 'séf vývojářů',
			'developer'       : 'vývojár',
			'contributor'     : 'spolupracovník',
			'maintainer'      : 'údržba',
			'translator'      : 'překlad',
			'icons'           : 'Ikony',
			'dontforget'      : 'a nezapomeňte si vzít plavky',
			'shortcutsof'     : 'Zkratky nejsou povoleny',
			'dropFiles'       : 'Sem přetáhněte soubory',
			'or'              : 'nebo',
			'selectForUpload' : 'Vyberte soubory',
			'moveFiles'       : 'Přesunout sobory',
			'copyFiles'       : 'Zkopírovat soubory',
			'restoreFiles'    : 'Obnovit položky', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Odstranit z míst',
			'aspectRatio'     : 'Poměr stran',
			'scale'           : 'Měřítko',
			'width'           : 'Šířka',
			'height'          : 'Výška',
			'resize'          : 'Změnit vel.',
			'crop'            : 'Ořezat',
			'rotate'          : 'Otočit',
			'rotate-cw'       : 'Otočit o +90 stupňů',
			'rotate-ccw'      : 'Otočit o -90 stupňů',
			'degree'          : ' stupňů',
			'netMountDialogTitle' : 'Připojení síťového média', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Hostitel', // added 18.04.2012
			'port'                : 'Přístav', // added 18.04.2012
			'user'                : 'Uživatel', // added 18.04.2012
			'pass'                : 'Heslo', // added 18.04.2012
			'confirmUnmount'      : 'Chcete odpojit $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Přemístěte nebo přesuňte soubory z prohlížeče', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Zde přemístěte nebo přesuňte soubory a adresy URL', // from v2.1 added 07.04.2014
			'encoding'        : 'Kódování', // from v2.1 added 19.12.2014
			'locale'          : 'Lokalizce',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Cíl: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Vyhledávání podle vstupního MIME typu', // from v2.1 added 22.5.2015
			'owner'           : 'Majitel', // from v2.1 added 20.6.2015
			'group'           : 'Skupina', // from v2.1 added 20.6.2015
			'other'           : 'Ostatní', // from v2.1 added 20.6.2015
			'execute'         : 'Spustit', // from v2.1 added 20.6.2015
			'perm'            : 'Povolení', // from v2.1 added 20.6.2015
			'mode'            : 'Režim', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Složka je prázdná', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Složka je prázdná, přesunout nebo zkontrolovat položky', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Složka je prázdná, dlouhim kliknutím přidáte položky', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalita', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatická synchronizace',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Přesunout nahoru',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Získat URL odkaz', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Vybrané položky ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID složky', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Povolit přístup offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Znovu ověřit', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Načítání...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Otevření více souborů', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Pokoušíte se otevřít soubor $1. Chcete jej otevřít v prohlížeči?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Výsledky hledání jsou prázdné', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Upravujete soubor.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vybrali jste $1 položky.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Máte $1 položky v schránce.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementální hledání je pouze z aktuálního zobrazení.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Obnovit', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 kompletní', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontextové menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Otáčení stránky', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Kořeny média', // from v2.1.16 added 16.9.2016
			'reset'           : 'Obnovit', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Barva pozadí', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Výběr barvy', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px mřížka', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Povoleno', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Zakázáno', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Výsledky hledání jsou prázdné v aktuálním zobrazení.\\Stisknutím tlačítka [Enter] rozšíříte vyhledávání cíle.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Výsledky vyhledávání prvního listu jsou v aktuálním zobrazení prázdné.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Nápis textu', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minut zůstává', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Otevřít pomocí zvoleného kódování', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Uložit s vybraným kódováním', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Vyberte složku', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Hledání prvního listu', // from v2.1.23 added 24.3.2017
			'presets'         : 'Předvolby', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Je to příliš mnoho položek, takže se nemohou dostat do koše.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Textarea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vyprázdnit složku "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Ve složce "$1" nejsou žádné položky.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Předvolby', // from v2.1.26 added 28.6.2017
			'language'        : 'Nastavte jazyk', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializujte nastavení uložená v tomto prohlížeči', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Nastavení panelu nástrojů', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '...$1 znaků zbývá.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '...$1 řádků zůstává.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Součet', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Hrubá velikost souboru', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Zaměření na prvek dialogu s mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Vybrat', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Akce při vybraném souboru', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Otevřít pomocí naposledy použitého editoru', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Obrátit výběr položek', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Opravdu chcete přejmenovat $1 vybraných položek, jako například $2<br/>Není to možné vrátit zpět!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch přejmenování', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Číslo', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Přidat předponu', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Přidat příponu', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Změnit příponu', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Nastavení sloupců (Zobrazení seznamu)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Všechny změny se okamžitě projeví v archivu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Jakékoliv změny se nebudou odrážet, dokud nebude tento svazek odpojen.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Následující svazky namontované na tomto svazku jsou také odpojeny. Opravdu ji odpojíte?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informace o výběru', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmy pro zobrazení hashování souborů', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Informační položky (panel s informacemi o výběru)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Dalším stisknutím opustíte.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Panel nástrojů', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Pracovní prostor', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialogové okno', // from v2.1.38 added 4.4.2018
			'all'             : 'Všechno', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Velikost ikony (zobrazení ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Otevřete maximalizované okno editora', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Protože konverze podle API momentálně není k dispozici, převeďte na webové stránce.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Po konverzi musíte nahrát převeden soubor pomocí URL položky nebo stažený soubor k uložení převedeného souboru.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Převést na stránce $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrace', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Tento elFinder má integrované následující externí služby. Před použitím zkontrolujte podmínky používání, zásady ochrany osobních údajů atd.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Zobrazit skryté položky', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Skrýt skryté položky', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Zobrazit/skrýt skryté položky', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Typy souborů, jež mají být povoleny pomocí "Nový soubor"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Typ textového souboru', // from v2.1.41 added 7.8.2018
			'add'             : 'Přidat', // from v2.1.41 added 7.8.2018
			'theme'           : 'Téma', // from v2.1.43 added 19.10.2018
			'default'         : 'Výchozí', // from v2.1.43 added 19.10.2018
			'description'     : 'Popis', // from v2.1.43 added 19.10.2018
			'website'         : 'Stránka', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licence', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Tuto položku nelze uložit. Abyste se vyhnuli ztrátě úprav, musíte je exportovat do počítače.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Poklepáním na soubor jej vyberte.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Použít režim celé obrazovky', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Neznámý',
			'kindRoot'        : 'Kořen média', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Složka',
			'kindSelects'     : 'Výběry', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Přezdívka',
			'kindAliasBroken' : 'Zlomený alias',
			// applications
			'kindApp'         : 'Aplikace',
			'kindPostscript'  : 'Dokument Postscriptu',
			'kindMsOffice'    : 'Dokument Microsoft Office',
			'kindMsWord'      : 'Dokument Microsoft Word',
			'kindMsExcel'     : 'Dokument Microsoft Excel',
			'kindMsPP'        : 'Prezentace Microsoft Powerpoint',
			'kindOO'          : 'Otevřít dokument Office',
			'kindAppFlash'    : 'Flash aplikace',
			'kindPDF'         : 'PDF',
			'kindTorrent'     : 'Soubor BitTorrent',
			'kind7z'          : 'Archív 7z',
			'kindTAR'         : 'Archív TAR',
			'kindGZIP'        : 'Archív GZIP',
			'kindBZIP'        : 'Archív BZIP',
			'kindXZ'          : 'Archív XZ',
			'kindZIP'         : 'Archív ZIP',
			'kindRAR'         : 'Archív RAR',
			'kindJAR'         : 'Soubor Java JAR',
			'kindTTF'         : 'True Type písmo',
			'kindOTF'         : 'Otevřete písmo Type',
			'kindRPM'         : 'RPM balíček',
			// texts
			'kindText'        : 'Textový dokument',
			'kindTextPlain'   : 'Čistý text',
			'kindPHP'         : 'PHP zdrojový kód',
			'kindCSS'         : 'Kaskádové styly',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript zdrojový kód',
			'kindRTF'         : 'Formát RTF',
			'kindC'           : 'C zdrojový kód',
			'kindCHeader'     : 'C hlavička',
			'kindCPP'         : 'C++ zdrojový kód',
			'kindCPPHeader'   : 'C++ hlavička',
			'kindShell'       : 'Unix shell skript',
			'kindPython'      : 'Python zdrojový kód',
			'kindJava'        : 'Java zdrojový kód',
			'kindRuby'        : 'Ruby zdrojový kód',
			'kindPerl'        : 'Perl skript',
			'kindSQL'         : 'SQL zdrojový kód',
			'kindXML'         : 'Dokument XML',
			'kindAWK'         : 'AWK zdrojový kód',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Obrázek',
			'kindBMP'         : 'Obrázek BMP',
			'kindJPEG'        : 'Obrázek JPEG',
			'kindGIF'         : 'Obrázek GIF',
			'kindPNG'         : 'Obrázek PNG',
			'kindTIFF'        : 'Obrázek TIFF',
			'kindTGA'         : 'Obrázek TGA',
			'kindPSD'         : 'Obrázek Adobe Photoshop',
			'kindXBITMAP'     : 'Obrázek X bitmapa',
			'kindPXM'         : 'Obrázek Pixelmator',
			// media
			'kindAudio'       : 'Audio sobory',
			'kindAudioMPEG'   : 'Zvuk MPEG',
			'kindAudioMPEG4'  : 'Zvuk MPEG-4',
			'kindAudioMIDI'   : 'Zvuk MIDI',
			'kindAudioOGG'    : 'Zvuk Ogg Vorbis',
			'kindAudioWAV'    : 'Zvuk WAV',
			'AudioPlaylist'   : 'Seznam skladeb MP3',
			'kindVideo'       : 'Video sobory',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));lib/js/i18n/elfinder.nl.js000064400000101623147361034410011251 0ustar00/**
 * Nederlands translation
 * @author Barry vd. Heuvel <barry@fruitcakestudio.nl>
 * @author Patrick Tingen <patrick@tingen.net>
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.nl = {
		translator : 'Barry vd. Heuvel &lt;barry@fruitcakestudio.nl&gt;, Patrick Tingen &lt;patrick@tingen.net&gt;',
		language   : 'Nederlands',
		direction  : 'ltr',
		dateFormat : 'd-m-Y H:i', // will show like: 02-03-2022 15:08
		fancyDateFormat : '$1 H:i', // will show like: Vandaag 15:08
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220302-150849
		messages   : {
			'getShareText' : 'Delen',
			'Editor ': 'Code-editor',

			/********************************** errors **********************************/
			'error'                : 'Fout',
			'errUnknown'           : 'Onbekend fout',
			'errUnknownCmd'        : 'Onbekend commando',
			'errJqui'              : 'Ongeldige jQuery UI configuratie. Selectable, draggable en droppable componenten moeten aanwezig zijn',
			'errNode'              : 'Voor elFinder moet een DOM Element gemaakt worden',
			'errURL'               : 'Ongeldige elFinder configuratie! URL optie is niet ingesteld',
			'errAccess'            : 'Toegang geweigerd',
			'errConnect'           : 'Kan geen verbinding met de backend maken',
			'errAbort'             : 'Verbinding afgebroken',
			'errTimeout'           : 'Verbinding time-out',
			'errNotFound'          : 'Backend niet gevonden',
			'errResponse'          : 'Ongeldige reactie van de backend',
			'errConf'              : 'Ongeldige backend configuratie',
			'errJSON'              : 'PHP JSON module niet geïnstalleerd',
			'errNoVolumes'         : 'Leesbaar volume is niet beschikbaar',
			'errCmdParams'         : 'Ongeldige parameters voor commando "$1"',
			'errDataNotJSON'       : 'Data is niet JSON',
			'errDataEmpty'         : 'Data is leeg',
			'errCmdReq'            : 'Backend verzoek heeft een commando naam nodig',
			'errOpen'              : 'Kan "$1" niet openen',
			'errNotFolder'         : 'Object is geen map',
			'errNotFile'           : 'Object is geen bestand',
			'errRead'              : 'Kan "$1" niet lezen',
			'errWrite'             : 'Kan niet schrijven in "$1"',
			'errPerm'              : 'Toegang geweigerd',
			'errLocked'            : '"$1" is vergrendeld en kan niet hernoemd, verplaats of verwijderd worden',
			'errExists'            : 'Bestand "$1" bestaat al',
			'errInvName'           : 'Ongeldige bestandsnaam',
			'errInvDirname'        : 'Ongeldige mapnaam.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Map niet gevonden',
			'errFileNotFound'      : 'Bestand niet gevonden',
			'errTrgFolderNotFound' : 'Doelmap "$1" niet gevonden',
			'errPopup'             : 'De browser heeft voorkomen dat de pop-up is geopend. Pas de browser instellingen aan om de popup te kunnen openen',
			'errMkdir'             : 'Kan map "$1" niet aanmaken',
			'errMkfile'            : 'Kan bestand "$1" niet aanmaken',
			'errRename'            : 'Kan "$1" niet hernoemen',
			'errCopyFrom'          : 'Bestanden kopiëren van "$1" is niet toegestaan',
			'errCopyTo'            : 'Bestanden kopiëren naar "$1" is niet toegestaan',
			'errMkOutLink'         : 'Kan geen link maken buiten de hoofdmap', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload fout',  // old name - errUploadCommon
			'errUploadFile'        : 'Kan "$1" niet uploaden', // old name - errUpload
			'errUploadNoFiles'     : 'Geen bestanden gevonden om te uploaden',
			'errUploadTotalSize'   : 'Data overschrijdt de maximale grootte', // old name - errMaxSize
			'errUploadFileSize'    : 'Bestand overschrijdt de maximale grootte', //  old name - errFileMaxSize
			'errUploadMime'        : 'Bestandstype niet toegestaan',
			'errUploadTransfer'    : '"$1" overdrachtsfout',
			'errUploadTemp'        : 'Kan geen tijdelijk bestand voor de upload maken', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Object "$1" bestaat al op deze locatie en kan niet vervangen worden door een ander type object', // new
			'errReplace'           : 'Kan "$1" niet vervangen',
			'errSave'              : 'Kan "$1" niet opslaan',
			'errCopy'              : 'Kan "$1" niet kopiëren',
			'errMove'              : 'Kan "$1" niet verplaatsen',
			'errCopyInItself'      : 'Kan "$1" niet in zichzelf kopiëren',
			'errRm'                : 'Kan "$1" niet verwijderen',
			'errTrash'             : 'Kan niet in de prullenbak.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kan bronbestanden niet verwijderen',
			'errExtract'           : 'Kan de bestanden van "$1" niet uitpakken',
			'errArchive'           : 'Kan het archief niet maken',
			'errArcType'           : 'Archief type is niet ondersteund',
			'errNoArchive'         : 'Bestand is geen archief of geen ondersteund archief type',
			'errCmdNoSupport'      : 'Backend ondersteund dit commando niet',
			'errReplByChild'       : 'De map "$1" kan niet vervangen worden door een item uit die map',
			'errArcSymlinks'       : 'Om veiligheidsredenen kan een bestand met symlinks of bestanden met niet toegestane namen niet worden uitgepakt ', // edited 24.06.2012
			'errArcMaxSize'        : 'Archief overschrijdt de maximale bestandsgrootte',
			'errResize'            : 'Kan het formaat van "$1" niet wijzigen',
			'errResizeDegree'      : 'Ongeldig aantal graden om te draaien',  // added 7.3.2013
			'errResizeRotate'      : 'Afbeelding kan niet gedraaid worden',  // added 7.3.2013
			'errResizeSize'        : 'Ongeldig afbeelding formaat',  // added 7.3.2013
			'errResizeNoChange'    : 'Afbeelding formaat is niet veranderd',  // added 7.3.2013
			'errUsupportType'      : 'Bestandstype wordt niet ondersteund',
			'errNotUTF8Content'    : 'Bestand "$1" is niet in UTF-8 and kan niet aangepast worden',  // added 9.11.2011
			'errNetMount'          : 'Kan "$1" niet mounten', // added 17.04.2012
			'errNetMountNoDriver'  : 'Niet ondersteund protocol',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount mislukt',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host is verplicht', // added 18.04.2012
			'errSessionExpires'    : 'Uw sessie is verlopen vanwege inactiviteit',
			'errCreatingTempDir'   : 'Kan de tijdelijke map niet aanmaken: "$1" ',
			'errFtpDownloadFile'   : 'Kan het bestand niet downloaden vanaf FTP: "$1"',
			'errFtpUploadFile'     : 'Kan het bestand niet uploaden naar FTP: "$1"',
			'errFtpMkdir'          : 'Kan het externe map niet aanmaken op de FTP-server: "$1"',
			'errArchiveExec'       : 'Er is een fout opgetreden bij het archivering van de bestanden: "$1" ',
			'errExtractExec'       : 'Er is een fout opgetreden bij het uitpakken van de bestanden: "$1" ',
			'errNetUnMount'        : 'Kan niet unmounten', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Niet om te zetten naar UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Probeer een moderne browser als je bestanden wil uploaden', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Time-out bij zoeken naar "$1". Zoekresulataat is niet compleet', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Je moet je opnieuw aanmelden', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max aantal selecteerbare items is $1', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Kan niet herstellen uit prullenbak, weet niet waar het heen moet', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Geen editor voor dit type bestand', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Fout opgetreden op de server', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Kan folder "$1" niet legen', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Er zijn nog $1 fouten', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'U kunt maximaal $1 mappen tegelijk maken.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Maak archief',
			'cmdback'      : 'Vorige',
			'cmdcopy'      : 'Kopieer',
			'cmdcut'       : 'Knip',
			'cmddownload'  : 'Downloaden',
			'cmdduplicate' : 'Dupliceer',
			'cmdedit'      : 'Pas bestand aan',
			'cmdextract'   : 'Bestanden uit archief uitpakken',
			'cmdforward'   : 'Volgende',
			'cmdgetfile'   : 'Kies bestanden',
			'cmdhelp'      : 'Over deze software',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Bekijk info',
			'cmdmkdir'     : 'Nieuwe map',
			'cmdmkdirin'   : 'In nieuwe map', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nieuw bestand',
			'cmdopen'      : 'Open',
			'cmdpaste'     : 'Plak',
			'cmdquicklook' : 'Voorbeeld',
			'cmdreload'    : 'Vernieuwen',
			'cmdrename'    : 'Naam wijzigen',
			'cmdrm'        : 'Verwijder',
			'cmdtrash'     : 'Naar prullenbak', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Herstellen', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Zoek bestanden',
			'cmdup'        : 'Ga een map hoger',
			'cmdupload'    : 'Upload bestanden',
			'cmdview'      : 'Bekijk',
			'cmdresize'    : 'Formaat wijzigen',
			'cmdsort'      : 'Sorteren',
			'cmdnetmount'  : 'Mount netwerk volume', // added 18.04.2012
			'cmdnetunmount': 'Afmelden', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Naar Plaatsen', // added 28.12.2014
			'cmdchmod'     : 'Wijzig modus', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Open een map', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Herstel kolombreedtes', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Volledig scherm', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Verplaatsen', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Map leegmaken', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'ongedaan maken', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Opnieuw doen', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Voorkeuren', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Selecteer alles', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Deselecteer alles', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Selectie omkeren', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Open in nieuw venster', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Verberg (voorkeur)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Sluit',
			'btnSave'   : 'Opslaan',
			'btnRm'     : 'Verwijder',
			'btnApply'  : 'Toepassen',
			'btnCancel' : 'Annuleren',
			'btnNo'     : 'Nee',
			'btnYes'    : 'Ja',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Ga naar $1 & keur goed', // from v2.1 added 26.04.2012
			'btnUnmount': 'Afmelden', // from v2.1 added 30.04.2012
			'btnConv'   : 'Converteer', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Hier',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Alles',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Mime type', // from v2.1 added 22.5.2015
			'btnFileName':'Bestandsnaam',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Opslaan & Sluiten', // from v2.1 added 12.6.2015
			'btnBackup' : 'Back-up', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Hernoemen',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Hernoem alles', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Vorige ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Volgende ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Opslaan als', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Bezig met openen van map',
			'ntffile'     : 'Bezig met openen bestand',
			'ntfreload'   : 'Herladen map inhoud',
			'ntfmkdir'    : 'Bezig met map maken',
			'ntfmkfile'   : 'Bezig met Bestanden maken',
			'ntfrm'       : 'Verwijderen bestanden',
			'ntfcopy'     : 'Kopieer bestanden',
			'ntfmove'     : 'Verplaats bestanden',
			'ntfprepare'  : 'Voorbereiden kopiëren',
			'ntfrename'   : 'Hernoem bestanden',
			'ntfupload'   : 'Bestanden uploaden actief',
			'ntfdownload' : 'Bestanden downloaden actief',
			'ntfsave'     : 'Bestanden opslaan',
			'ntfarchive'  : 'Archief aan het maken',
			'ntfextract'  : 'Bestanden uitpakken actief',
			'ntfsearch'   : 'Zoeken naar bestanden',
			'ntfresize'   : 'Formaat wijzigen van afbeeldingen',
			'ntfsmth'     : 'Iets aan het doen',
			'ntfloadimg'  : 'Laden van plaatje',
			'ntfnetmount' : 'Mounten van netwerk volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounten van netwerk volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Opvragen afbeeldingen dimensies', // added 20.05.2013
			'ntfreaddir'  : 'Map informatie lezen', // from v2.1 added 01.07.2013
			'ntfurl'      : 'URL van link ophalen', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Bestandsmodus wijzigen', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Upload bestandsnaam verifiëren', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Zipbestand aan het maken', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Verzamelen padinformatie', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Aan het verwerken', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Aan het verwijderen', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Aan het herstellen', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Controleren doelmap', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Vorige bewerking ongedaan maken', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Opnieuw doen', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Inhoud controleren', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Prullenbak', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'onbekend',
			'Today'       : 'Vandaag',
			'Yesterday'   : 'Gisteren',
			'msJan'       : 'Jan',
			'msFeb'       : 'februari',
			'msMar'       : 'maart',
			'msApr'       : 'april',
			'msMay'       : 'Mei',
			'msJun'       : 'Jun',
			'msJul'       : 'juli',
			'msAug'       : 'aug',
			'msSep'       : 'september',
			'msOct'       : 'Okt',
			'msNov'       : 'november',
			'msDec'       : 'december',
			'January'     : 'Januari',
			'February'    : 'Februari',
			'March'       : 'Maart',
			'April'       : 'april',
			'May'         : 'Mei',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'Augustus',
			'September'   : 'september',
			'October'     : 'Oktober',
			'November'    : 'november',
			'December'    : 'december',
			'Sunday'      : 'Zondag',
			'Monday'      : 'Maandag',
			'Tuesday'     : 'Dinsdag',
			'Wednesday'   : 'Woensdag',
			'Thursday'    : 'Donderdag',
			'Friday'      : 'Vrijdag',
			'Saturday'    : 'Zaterdag',
			'Sun'         : 'Zo',
			'Mon'         : 'Ma',
			'Tue'         : 'Di',
			'Wed'         : 'Wo',
			'Thu'         : 'Do',
			'Fri'         : 'Vr',
			'Sat'         : 'Za',

			/******************************** sort variants ********************************/
			'sortname'          : 'op naam',
			'sortkind'          : 'op type',
			'sortsize'          : 'op grootte',
			'sortdate'          : 'op datum',
			'sortFoldersFirst'  : 'Mappen eerst',
			'sortperm'          : 'op rechten', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'op mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'op eigenaar',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'op groep',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Als boom',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NieuwBestand.txt', // added 10.11.2015
			'untitled folder'   : 'NieuweMap',   // added 10.11.2015
			'Archive'           : 'NieuwArchief',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NieuwBestand.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Bestand',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Bevestiging nodig',
			'confirmRm'       : 'Weet u zeker dat u deze bestanden wil verwijderen?<br/>Deze actie kan niet ongedaan gemaakt worden!',
			'confirmRepl'     : 'Oud bestand vervangen door het nieuwe bestand?',
			'confirmRest'     : 'Bestaand item vervangen door het item in de prullenbak?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Niet in UTF-8<br/>Converteren naar UTF-8?<br/>De inhoud wordt UTF-8 door op te slaan na de conversie', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Tekencodering van dit bestand kan niet worden gedetecteerd. Het moet tijdelijk worden geconverteerd naar UTF-8 voor bewerking.<br/>Selecteer de tekencodering van dit bestand.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Het is aangepast.<br/>Wijzigingen gaan verloren als je niet opslaat', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Weet u zeker dat u items naar de prullenbak wilt verplaatsen?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Weet u zeker dat u items naar \'$1\' wilt verplaatsen?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Toepassen op alles',
			'name'            : 'Naam',
			'size'            : 'Grootte',
			'perms'           : 'Rechten',
			'modify'          : 'Aangepast',
			'kind'            : 'Type',
			'read'            : 'lees',
			'write'           : 'schrijf',
			'noaccess'        : 'geen toegang',
			'and'             : 'en',
			'unknown'         : 'onbekend',
			'selectall'       : 'Selecteer alle bestanden',
			'selectfiles'     : 'Selecteer bestand(en)',
			'selectffile'     : 'Selecteer eerste bestand',
			'selectlfile'     : 'Selecteer laatste bestand',
			'viewlist'        : 'Lijst weergave',
			'viewicons'       : 'Icoon weergave',
			'viewSmall'       : 'Klein', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Middelgroot', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Groot', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra groot', // from v2.1.39 added 22.5.2018
			'places'          : 'Plaatsen',
			'calc'            : 'Bereken',
			'path'            : 'Pad',
			'aliasfor'        : 'Alias voor',
			'locked'          : 'Vergrendeld',
			'dim'             : 'Dimensies',
			'files'           : 'Bestanden',
			'folders'         : 'Mappen',
			'items'           : 'Artikelen',
			'yes'             : 'ja',
			'no'              : 'nee',
			'link'            : 'Koppeling',
			'searcresult'     : 'Zoek resultaten',
			'selected'        : 'geselecteerde items',
			'about'           : 'Over',
			'shortcuts'       : 'Snelkoppelingen',
			'help'            : 'Helpen',
			'webfm'           : 'Web bestandsmanager',
			'ver'             : 'Versie',
			'protocolver'     : 'protocol versie',
			'homepage'        : 'Project thuis',
			'docs'            : 'Documentatie',
			'github'          : 'Fork ons op Github',
			'twitter'         : 'Volg ons op twitter',
			'facebook'        : 'Wordt lid op facebook',
			'team'            : 'Team',
			'chiefdev'        : 'Hoofd ontwikkelaar',
			'developer'       : 'ontwikkelaar',
			'contributor'     : 'bijdrager',
			'maintainer'      : 'onderhouder',
			'translator'      : 'vertaler',
			'icons'           : 'Iconen',
			'dontforget'      : 'En vergeet je handdoek niet!',
			'shortcutsof'     : 'Snelkoppelingen uitgeschakeld',
			'dropFiles'       : 'Sleep hier uw bestanden heen',
			'or'              : 'of',
			'selectForUpload' : 'Selecteer bestanden om te uploaden',
			'moveFiles'       : 'Verplaats bestanden',
			'copyFiles'       : 'Kopieer bestanden',
			'restoreFiles'    : 'Items herstellen', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Verwijder uit Plaatsen',
			'aspectRatio'     : 'beeldverhouding',
			'scale'           : 'Schaal',
			'width'           : 'Breedte',
			'height'          : 'Hoogte',
			'resize'          : 'Verkleinen',
			'crop'            : 'Bijsnijden',
			'rotate'          : 'Draaien',
			'rotate-cw'       : 'Draai 90 graden rechtsom',
			'rotate-ccw'      : 'Draai 90 graden linksom',
			'degree'          : '°',
			'netMountDialogTitle' : 'Mount netwerk volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Gastheer', // added 18.04.2012
			'port'                : 'Poort', // added 18.04.2012
			'user'                : 'Gebruikersnaams', // added 18.04.2012
			'pass'                : 'Wachtwoord', // added 18.04.2012
			'confirmUnmount'      : 'Weet u zeker dat u $1 wil unmounten?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Sleep of plak bestanden vanuit de browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Sleep of plak bestanden hier', // from v2.1 added 07.04.2014
			'encoding'        : 'Encodering', // from v2.1 added 19.12.2014
			'locale'          : 'Localisatie',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Doel: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Zoek op invoer MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Eigenaar', // from v2.1 added 20.6.2015
			'group'           : 'Groep', // from v2.1 added 20.6.2015
			'other'           : 'Overig', // from v2.1 added 20.6.2015
			'execute'         : 'Uitvoeren', // from v2.1 added 20.6.2015
			'perm'            : 'Rechten', // from v2.1 added 20.6.2015
			'mode'            : 'Modus', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Map is leeg', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Map is leeg\\A Sleep hier naar toe om toe te voegen', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Map is leeg\\A Lang ingedrukt houden om toe te voegen', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kwaliteit', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatisch synchroniseren',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Omhoog',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Geef link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Geselecteerde items ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Map ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Toestaan offline toegang', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Opnieuw autenticeren', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Laden..', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Open meerdere bestanden', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Je probeert het $1 bestanden te openen. Weet je zeker dat je dat in je browser wil doen?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Geen zoekresultaten', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Bestand wordt bewerkt', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Je hebt $1 items geselecteerd', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Je hebt $1 items op het clipboard', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Verder zoeken kan alleen vanuit huidige view', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Herstellen', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 compleet', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Contextmenu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Pagina omslaan', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volumewortels', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetten', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Achtergrondkleur', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Kleurkiezer', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px raster', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Actief', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Inactief', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Zoekresultaten zijn leeg in actuele view\\ADruk [Enter] om zoekgebied uit te breiden', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Zoeken op eerste letter is leeg in actuele view', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Tekstlabel', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minuten over', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Opnieuw openen met geselecteerde encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Opslaan met geselecteerde encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Selecteer map', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Zoeken op eerste letter', // from v2.1.23 added 24.3.2017
			'presets'         : 'Voorkeuren', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Teveel voor in de prullenbak', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Tekstgebied', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Map "$1" legen', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Er zijn geen items in map "$1"', // from v2.1.25 added 22.6.2017
			'preference'      : 'Voorkeur', // from v2.1.26 added 28.6.2017
			'language'        : 'Taal', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialiseer instellingen van deze browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbar instellingen', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 tekens over',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 regels over.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Totaal', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Geschatte bestandsgrootte', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus op het dialoogelement met mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Selecteren', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Actie als bestand is geselecteerd', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open met laatstgebruikte editor', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Selectie omkeren', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Weet je zeker dat je $1 items wil hernoemen naar $2?<br/>Dit kan niet ongedaan worden gemaakt!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch hernoemen', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nummer', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Voeg prefix toe', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Voeg suffix toe', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Verander extentie', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Kolominstelllingen (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Aanpassingen worden direct toegepast op het archief', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Aanpassingen worden pas toegepast na re-mount van dit volume', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Deze volume(s) worden ook unmounted. Weet je het zeker?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Selectie informatie', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmes voor file hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Informatie Items (Selectie Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Druk nogmaals om te eindigen', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Werkbalk', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Werkruimte', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialoog', // from v2.1.38 added 4.4.2018
			'all'             : 'Alles', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icoongrootte (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open de maximale editor', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Conversie via API is niet beschikbaar, converteer aub op de website', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Converteer op de site $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integratie', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Deze elFinder heeft de volgende externe services. Controleer de voorwaarden, privacy policy, etc. voor gebruik', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Toon verborgen items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Verberg verborgen items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Toon/verberg verborgen items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types die aangemaakt mogen worden', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type voor tekstbestand', // from v2.1.41 added 7.8.2018
			'add'             : 'Toevoegen', // from v2.1.41 added 7.8.2018
			'theme'           : 'Thema', // from v2.1.43 added 19.10.2018
			'default'         : 'Standaard', // from v2.1.43 added 19.10.2018
			'description'     : 'Beschrijving', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Auteur', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licensie', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Dit item kan niet worden opgeslagen, exporteer naar je pc om wijzingen te bewaren', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dubbelklik op het bestand om het te selecteren.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Volledig scherm gebruiken', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Onbekend',
			'kindRoot'        : 'Volume root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Map',
			'kindSelects'     : 'Selecties', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Verbroken alias',
			// applications
			'kindApp'         : 'Applicatie',
			'kindPostscript'  : 'Postscript-document',
			'kindMsOffice'    : 'Microsoft Office-document',
			'kindMsWord'      : 'Microsoft Word-document',
			'kindMsExcel'     : 'Microsoft Excel-document',
			'kindMsPP'        : 'Microsoft Powerpoint-presentatie',
			'kindOO'          : 'Office-document openen',
			'kindAppFlash'    : 'Flash applicatie',
			'kindPDF'         : 'Draagbaar documentformaat (PDF)',
			'kindTorrent'     : 'Bittorrent bestand',
			'kind7z'          : '7z archief',
			'kindTAR'         : 'TAR archief',
			'kindGZIP'        : 'GZIP archief',
			'kindBZIP'        : 'BZIP archief',
			'kindXZ'          : 'XZ archief',
			'kindZIP'         : 'ZIP archief',
			'kindRAR'         : 'RAR archief',
			'kindJAR'         : 'Java JAR bestand',
			'kindTTF'         : 'True Type-lettertype',
			'kindOTF'         : 'Lettertype openen',
			'kindRPM'         : 'RPM pakket',
			// texts
			'kindText'        : 'Tekst bestand',
			'kindTextPlain'   : 'Tekst',
			'kindPHP'         : 'PHP bronbestand',
			'kindCSS'         : 'Trapsgewijze stijlblad',
			'kindHTML'        : 'HTML-document',
			'kindJS'          : 'Javascript bronbestand',
			'kindRTF'         : 'Rijk tekst formaat',
			'kindC'           : 'C bronbestand',
			'kindCHeader'     : 'C header bronbestand',
			'kindCPP'         : 'C++ bronbestand',
			'kindCPPHeader'   : 'C++ header bronbestand',
			'kindShell'       : 'Unix-shellscript',
			'kindPython'      : 'Python bronbestand',
			'kindJava'        : 'Java bronbestand',
			'kindRuby'        : 'Ruby bronbestand',
			'kindPerl'        : 'Perl bronbestand',
			'kindSQL'         : 'SQL bronbestand',
			'kindXML'         : 'XML-document',
			'kindAWK'         : 'AWK bronbestand',
			'kindCSV'         : 'Komma gescheiden waardes',
			'kindDOCBOOK'     : 'Docbook XML-document',
			'kindMarkdown'    : 'Markdown tekst', // added 20.7.2015
			// images
			'kindImage'       : 'Afbeelding',
			'kindBMP'         : 'BMP afbeelding',
			'kindJPEG'        : 'JPEG afbeelding',
			'kindGIF'         : 'GIF afbeelding',
			'kindPNG'         : 'PNG afbeelding',
			'kindTIFF'        : 'TIFF afbeelding',
			'kindTGA'         : 'TGA afbeelding',
			'kindPSD'         : 'Adobe Photoshop afbeelding',
			'kindXBITMAP'     : 'X bitmap afbeelding',
			'kindPXM'         : 'Pixelmator afbeelding',
			// media
			'kindAudio'       : 'Audiomedia',
			'kindAudioMPEG'   : 'MPEG-audio',
			'kindAudioMPEG4'  : 'MPEG-4-audio',
			'kindAudioMIDI'   : 'MIDI-audio',
			'kindAudioOGG'    : 'Ogg Vorbis-audio',
			'kindAudioWAV'    : 'WAV-audio',
			'AudioPlaylist'   : 'MP3-afspeellijst',
			'kindVideo'       : 'Videomedia',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));

lib/js/i18n/elfinder.it.js000064400000104227147361034410011257 0ustar00/**
 * Italiano translation
 * @author Alberto Tocci (alberto.tocci@gmail.com)
 * @author Claudio Nicora (coolsoft.ita@gmail.com)
 * @author Stefano Galeazzi <stefano.galeazzi@probanet.it>
 * @author Thomas Camaran <camaran@gmail.com>
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.it = {
		translator : 'Alberto Tocci (alberto.tocci@gmail.com), Claudio Nicora (coolsoft.ita@gmail.com), Stefano Galeazzi &lt;stefano.galeazzi@probanet.it&gt;, Thomas Camaran &lt;camaran@gmail.com&gt;',
		language   : 'Italiano',
		direction  : 'ltr',
		dateFormat : 'd/m/Y H:i', // will show like: 02/03/2022 12:52
		fancyDateFormat : '$1 H:i', // will show like: Oggi 12:52
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220302-125236
		messages   : {
			'getShareText' : 'Condividere',
			'Editor ': 'Editor di codice',

			/********************************** errors **********************************/
			'error'                : 'Errore',
			'errUnknown'           : 'Errore sconosciuto.',
			'errUnknownCmd'        : 'Comando sconosciuto.',
			'errJqui'              : 'Configurazione JQuery UI non valida. Devono essere inclusi i plugin Selectable, Draggable e Droppable.',
			'errNode'              : 'elFinder necessita dell\'elemento DOM per essere inizializzato.',
			'errURL'               : 'Configurazione non valida.Il parametro URL non è settato.',
			'errAccess'            : 'Accesso negato.',
			'errConnect'           : 'Impossibile collegarsi al backend.',
			'errAbort'             : 'Connessione annullata.',
			'errTimeout'           : 'Timeout di connessione.',
			'errNotFound'          : 'Backend non trovato.',
			'errResponse'          : 'Risposta non valida dal backend.',
			'errConf'              : 'Configurazione backend non valida.',
			'errJSON'              : 'Modulo PHP JSON non installato.',
			'errNoVolumes'         : 'Non è stato possibile leggere i volumi.',
			'errCmdParams'         : 'Parametri non validi per il comando "$1".',
			'errDataNotJSON'       : 'I dati non sono nel formato JSON.',
			'errDataEmpty'         : 'Stringa vuota.',
			'errCmdReq'            : 'La richiesta al backend richiede il nome del comando.',
			'errOpen'              : 'Impossibile aprire "$1".',
			'errNotFolder'         : 'L\'oggetto non è una cartella..',
			'errNotFile'           : 'L\'oggetto non è un file.',
			'errRead'              : 'Impossibile leggere "$1".',
			'errWrite'             : 'Non è possibile scrivere in "$1".',
			'errPerm'              : 'Permesso negato.',
			'errLocked'            : '"$1" è bloccato e non può essere rinominato, spostato o eliminato.',
			'errExists'            : 'Il file "$1" è già esistente.',
			'errInvName'           : 'Nome file non valido.',
			'errInvDirname'        : 'Nome cartella non valido.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Cartella non trovata.',
			'errFileNotFound'      : 'File non trovato.',
			'errTrgFolderNotFound' : 'La cartella di destinazione"$1" non è stata trovata.',
			'errPopup'             : 'Il tuo Browser non consente di aprire finestre di pop-up. Per aprire il file abilita questa opzione nelle impostazioni del tuo Browser.',
			'errMkdir'             : 'Impossibile creare la cartella "$1".',
			'errMkfile'            : 'Impossibile creare il file "$1".',
			'errRename'            : 'Impossibile rinominare "$1".',
			'errCopyFrom'          : 'Non è possibile copiare file da "$1".',
			'errCopyTo'            : 'Non è possibile copiare file in "$1".',
			'errMkOutLink'         : 'Impossibile creare un link all\'esterno della radice del volume.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Errore di Caricamento.',  // old name - errUploadCommon
			'errUploadFile'        : 'Impossibile Caricare "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Non sono stati specificati file da caricare.',
			'errUploadTotalSize'   : 'La dimensione totale dei file supera il limite massimo consentito.', // old name - errMaxSize
			'errUploadFileSize'    : 'Le dimensioni del file superano il massimo consentito.', //  old name - errFileMaxSize
			'errUploadMime'        : 'FileType non consentito.',
			'errUploadTransfer'    : 'Trasferimento errato del file "$1".',
			'errUploadTemp'        : 'Impossibile creare il file temporaneo per l\'upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'L\'oggetto "$1" esiste già in questa cartella e non può essere sostituito con un oggetto di un tipo differente.', // new
			'errReplace'           : 'Impossibile sostituire "$1".',
			'errSave'              : 'Impossibile salvare "$1".',
			'errCopy'              : 'Impossibile copiare "$1".',
			'errMove'              : 'Impossibile spostare "$1".',
			'errCopyInItself'      : 'Sorgente e destinazione risultato essere uguali.',
			'errRm'                : 'Impossibile rimuovere "$1".',
			'errTrash'             : 'Impossibile cestinare.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Impossibile eliminare i file origine.',
			'errExtract'           : 'Impossibile estrarre file da "$1".',
			'errArchive'           : 'Impossibile creare archivio.',
			'errArcType'           : 'Tipo di archivio non supportato.',
			'errNoArchive'         : 'Il file non è un archivio o contiene file non supportati.',
			'errCmdNoSupport'      : 'Il Backend non supporta questo comando.',
			'errReplByChild'       : 'La cartella $1 non può essere sostituita da un oggetto in essa contenuto.',
			'errArcSymlinks'       : 'Per questioni di sicurezza non è possibile estrarre archivi che contengono collegamenti..', // edited 24.06.2012
			'errArcMaxSize'        : 'La dimensione dell\'archivio supera le massime dimensioni consentite.',
			'errResize'            : 'Impossibile ridimensionare "$1".',
			'errResizeDegree'      : 'Angolo di rotazione non valido.',  // added 7.3.2013
			'errResizeRotate'      : 'Impossibile ruotare l\'immagine.',  // added 7.3.2013
			'errResizeSize'        : 'Dimensione dell\'immagine non valida.',  // added 7.3.2013
			'errResizeNoChange'    : 'Dimensione dell\'immagine non modificata.',  // added 7.3.2013
			'errUsupportType'      : 'Tipo di file non supportato.',
			'errNotUTF8Content'    : 'Il file "$1" non è nel formato UTF-8 e non può essere modificato.',  // added 9.11.2011
			'errNetMount'          : 'Impossibile montare "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocollo non supportato.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount fallito.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host richiesto.', // added 18.04.2012
			'errSessionExpires'    : 'La sessione è scaduta a causa di inattività.',
			'errCreatingTempDir'   : 'Impossibile creare la cartella temporanea: "$1"',
			'errFtpDownloadFile'   : 'Impossibile scaricare il file tramite FTP: "$1"',
			'errFtpUploadFile'     : 'Impossibile caricare il file tramite FTP: "$1"',
			'errFtpMkdir'          : 'Impossibile creare la cartella remota tramite FTP: "$1"',
			'errArchiveExec'       : 'Errore durante l\'archiviazione dei file: "$1"',
			'errExtractExec'       : 'Errore durante l\'estrazione dei file: "$1"',
			'errNetUnMount'        : 'Impossibile smontare', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Non convertibile nel formato UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Per uploadare l0intera cartella usare Google Chrome.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timeout durante la ricerca di "$1". I risultati della ricerca sono parziali.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'E\' necessaria la riautorizzazione.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Il numero massimo di oggetti selezionabili è $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Impossibile ripristinare dal cestino: destinazione di ripristino non trovata.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Impossibile trovare un editor per questo tipo di file.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Si è verificato un errore lato server.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Impossibile svuotare la cartella "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Ci sono $ 1 in più di errori.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Puoi creare fino a $ 1 cartelle alla volta.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Crea archivio',
			'cmdback'      : 'Indietro',
			'cmdcopy'      : 'Copia',
			'cmdcut'       : 'Taglia',
			'cmddownload'  : 'Scarica',
			'cmdduplicate' : 'Duplica',
			'cmdedit'      : 'Modifica File',
			'cmdextract'   : 'Estrai Archivio',
			'cmdforward'   : 'Avanti',
			'cmdgetfile'   : 'Seleziona File',
			'cmdhelp'      : 'Informazioni su...',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Informazioni',
			'cmdmkdir'     : 'Nuova cartella',
			'cmdmkdirin'   : 'In una nuova cartella', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nuovo file',
			'cmdopen'      : 'Apri',
			'cmdpaste'     : 'Incolla',
			'cmdquicklook' : 'Anteprima',
			'cmdreload'    : 'Ricarica',
			'cmdrename'    : 'Rinomina',
			'cmdrm'        : 'Elimina',
			'cmdtrash'     : 'Nel cestino', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Ripristina', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Ricerca file',
			'cmdup'        : 'Vai alla directory padre',
			'cmdupload'    : 'Carica File',
			'cmdview'      : 'Visualizza',
			'cmdresize'    : 'Ridimensiona Immagine',
			'cmdsort'      : 'Ordina',
			'cmdnetmount'  : 'Monta disco di rete', // added 18.04.2012
			'cmdnetunmount': 'Smonta', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Aggiungi ad Accesso rapido', // added 28.12.2014
			'cmdchmod'     : 'Cambia modalità', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Apri una cartella', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Reimposta dimensione colonne', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Schermo intero', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Sposta', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Svuota la cartella', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Annulla', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ripeti', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferenze', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Seleziona tutto', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Annulla selezione', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverti selezione', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Apri in una nuova finestra', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Nascondi (Preferenza)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Chiudi',
			'btnSave'   : 'Salva',
			'btnRm'     : 'Elimina',
			'btnApply'  : 'Applica',
			'btnCancel' : 'Annulla',
			'btnNo'     : 'No',
			'btnYes'    : 'Sì',
			'btnMount'  : 'Monta',  // added 18.04.2012
			'btnApprove': 'Vai a $1 & approva', // from v2.1 added 26.04.2012
			'btnUnmount': 'Smonta', // from v2.1 added 30.04.2012
			'btnConv'   : 'Converti', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Qui',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Disco',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tutti',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipo MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nome file',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Salva & Chiudi', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rinomina',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rinomina (tutto)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Indietro ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Avanti ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Salva come', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Apri cartella',
			'ntffile'     : 'Apri file',
			'ntfreload'   : 'Ricarica il contenuto della cartella',
			'ntfmkdir'    : 'Creazione delle directory in corso',
			'ntfmkfile'   : 'Creazione dei files in corso',
			'ntfrm'       : 'Eliminazione dei files in corso',
			'ntfcopy'     : 'Copia file in corso',
			'ntfmove'     : 'Spostamento file in corso',
			'ntfprepare'  : 'Preparazione della copia dei file.',
			'ntfrename'   : 'Sto rinominando i file',
			'ntfupload'   : 'Caricamento file in corso',
			'ntfdownload' : 'Downloading file in corso',
			'ntfsave'     : 'Salvataggio file in corso',
			'ntfarchive'  : 'Creazione archivio in corso',
			'ntfextract'  : 'Estrazione file dall\'archivio in corso',
			'ntfsearch'   : 'Ricerca files in corso',
			'ntfresize'   : 'Ridimensionamento immagini',
			'ntfsmth'     : 'Operazione in corso. Attendere...',
			'ntfloadimg'  : 'Caricamento immagine in corso',
			'ntfnetmount' : 'Montaggio disco di rete', // added 18.04.2012
			'ntfnetunmount': 'Smontaggio disco di rete', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Lettura dimensioni immagine', // added 20.05.2013
			'ntfreaddir'  : 'Lettura informazioni cartella', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Lettura URL del collegamento', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Modifica della modalità del file', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifica del nome del file caricato', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creazione del file da scaricare', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Ottenimento informazioni percorso', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processazione file caricato', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Spostamento nel cestino', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Ripristino dal cestino', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Controllo cartella destinazione', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Annullamento operazione precedente', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Rifacimento precedente annullamento', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Controllo dei contenuti', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Cestino', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Sconosciuto',
			'Today'       : 'Oggi',
			'Yesterday'   : 'Ieri',
			'msJan'       : 'Gen',
			'msFeb'       : 'febbraio',
			'msMar'       : 'Mar',
			'msApr'       : 'aprile',
			'msMay'       : 'Mag',
			'msJun'       : 'Giu',
			'msJul'       : 'Lug',
			'msAug'       : 'Ago',
			'msSep'       : 'Set',
			'msOct'       : 'Ott',
			'msNov'       : 'Nov',
			'msDec'       : 'Dic',
			'January'     : 'Gennaio',
			'February'    : 'Febbraio',
			'March'       : 'Marzo',
			'April'       : 'Aprile',
			'May'         : 'Maggio',
			'June'        : 'Giugno',
			'July'        : 'Luglio',
			'August'      : 'Agosto',
			'September'   : 'Settembre',
			'October'     : 'Ottobre',
			'November'    : 'Novembre',
			'December'    : 'Dicembre',
			'Sunday'      : 'Domenica',
			'Monday'      : 'Lunedì',
			'Tuesday'     : 'Martedì',
			'Wednesday'   : 'Mercoledì',
			'Thursday'    : 'Giovedì',
			'Friday'      : 'Venerdì',
			'Saturday'    : 'Sabato',
			'Sun'         : 'Dom',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mer',
			'Thu'         : 'Gio',
			'Fri'         : 'Ven',
			'Sat'         : 'Sab',

			/******************************** sort variants ********************************/
			'sortname'          : 'per nome',
			'sortkind'          : 'per tipo',
			'sortsize'          : 'per dimensione',
			'sortdate'          : 'per data',
			'sortFoldersFirst'  : 'cartelle in testa',
			'sortperm'          : 'per permessi', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'per modalità',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'per possessore',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'per gruppo',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Anche vista ad albero',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NuovoFile.txt', // added 10.11.2015
			'untitled folder'   : 'NuovaCartella',   // added 10.11.2015
			'Archive'           : 'NuovoArchivio',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NuovoFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: file',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Conferma richiesta',
			'confirmRm'       : 'Sei sicuro di voler eliminare i file?<br />L\'operazione non è reversibile!',
			'confirmRepl'     : 'Sostituire i file ?',
			'confirmRest'     : 'Rimpiazza l\'oggetto esistente con quello nel cestino?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Non in formato UTF-8<br/>Convertire in UTF-8?<br/>Il contenuto diventerà UTF-8 salvando dopo la conversione.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'La codifica caratteri di questo file non può essere determinata. Sarà temporaneamente convertito in UTF-8 per l\'editting.<br/>Per cortesia, selezionare la codifica caratteri per il file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Il contenuto è stato modificato.<br/>Le modifiche andranno perse se non si salveranno.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Sei sicuro di voler cestinare gli oggetti?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Sei sicuro di voler spostare gli articoli a "$ 1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Applica a tutti',
			'name'            : 'Nome',
			'size'            : 'Dimensione',
			'perms'           : 'Permessi',
			'modify'          : 'Modificato il',
			'kind'            : 'Tipo',
			'read'            : 'lettura',
			'write'           : 'scrittura',
			'noaccess'        : 'nessun accesso',
			'and'             : 'e',
			'unknown'         : 'sconosciuto',
			'selectall'       : 'Seleziona tutti i file',
			'selectfiles'     : 'Seleziona file',
			'selectffile'     : 'Seleziona il primo file',
			'selectlfile'     : 'Seleziona l\'ultimo file',
			'viewlist'        : 'Visualizza Elenco',
			'viewicons'       : 'Visualizza Icone',
			'viewSmall'       : 'Icone piccole', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Icone medie', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Icone grandi', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Icone molto grandi', // from v2.1.39 added 22.5.2018
			'places'          : 'Accesso rapido',
			'calc'            : 'Calcola',
			'path'            : 'Percorso',
			'aliasfor'        : 'Alias per',
			'locked'          : 'Bloccato',
			'dim'             : 'Dimensioni',
			'files'           : 'File',
			'folders'         : 'Cartelle',
			'items'           : 'Oggetti',
			'yes'             : 'sì',
			'no'              : 'no',
			'link'            : 'Collegamento',
			'searcresult'     : 'Risultati ricerca',
			'selected'        : 'oggetti selezionati',
			'about'           : 'Informazioni',
			'shortcuts'       : 'Scorciatoie',
			'help'            : 'Aiuto',
			'webfm'           : 'Gestore file WEB',
			'ver'             : 'Versione',
			'protocolver'     : 'versione protocollo',
			'homepage'        : 'Home del progetto',
			'docs'            : 'Documentazione',
			'github'          : 'Seguici su Github',
			'twitter'         : 'Seguici su Twitter',
			'facebook'        : 'Seguici su Facebook',
			'team'            : 'Gruppo',
			'chiefdev'        : 'sviluppatore capo',
			'developer'       : 'sviluppatore',
			'contributor'     : 'collaboratore',
			'maintainer'      : 'manutentore',
			'translator'      : 'traduttore',
			'icons'           : 'Icone',
			'dontforget'      : 'e non dimenticate di portare l\'asciugamano',
			'shortcutsof'     : 'Scorciatoie disabilitate',
			'dropFiles'       : 'Trascina i file qui',
			'or'              : 'o',
			'selectForUpload' : 'Seleziona file da caricare',
			'moveFiles'       : 'Sposta file',
			'copyFiles'       : 'Copia file',
			'restoreFiles'    : 'Ripristina oggetti', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Rimuovi da Accesso rapido',
			'aspectRatio'     : 'Proporzioni',
			'scale'           : 'Scala',
			'width'           : 'Larghezza',
			'height'          : 'Altezza',
			'resize'          : 'Ridimensione',
			'crop'            : 'Ritaglia',
			'rotate'          : 'Ruota',
			'rotate-cw'       : 'Ruota di 90° in senso orario',
			'rotate-ccw'      : 'Ruota di 90° in senso antiorario',
			'degree'          : 'Gradi',
			'netMountDialogTitle' : 'Monta disco di rete', // added 18.04.2012
			'protocol'            : 'Protocollo', // added 18.04.2012
			'host'                : 'Ospite', // added 18.04.2012
			'port'                : 'Porta', // added 18.04.2012
			'user'                : 'Utente', // added 18.04.2012
			'pass'                : 'Parola d\'ordine', // added 18.04.2012
			'confirmUnmount'      : 'Vuoi smontare $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Rilascia o incolla dal browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Rilascia o incolla files e indirizzi URL qui', // from v2.1 added 07.04.2014
			'encoding'        : 'Codifica', // from v2.1 added 19.12.2014
			'locale'          : 'Lingua',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destinazione: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Cerca per MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Possessore', // from v2.1 added 20.6.2015
			'group'           : 'Gruppo', // from v2.1 added 20.6.2015
			'other'           : 'Altri', // from v2.1 added 20.6.2015
			'execute'         : 'Esegui', // from v2.1 added 20.6.2015
			'perm'            : 'Permessi', // from v2.1 added 20.6.2015
			'mode'            : 'Modalità', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'La cartella è vuota', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'La cartella è vuota\\A Trascina e rilascia per aggiungere elementi', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'La cartella è vuota\\A Premi a lungo per aggiungere elementi', // from v2.1.6 added 30.12.2015
			'quality'         : 'Qualità', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Sincr. automatica',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Sposta in alto',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Mostra URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Elementi selezionati ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID cartella', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permetti accesso non in linea', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Per ri-autenticarsi', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Caricamento...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Apri più files', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Stai cercando di aprire $1 files. Sei sicuro di volerli aprire nel browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Nessun risultato soddisfa i criteri di ricerca', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Il file è in modifica.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 elementi sono selezionati.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 elementi negli appunti.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'La ricerca incrementale è solo dalla vista corrente.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reistanzia', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 completato', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contestuale', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Orientamento pagina', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Percorsi base del volume', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetta', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Colore di sfondo', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Selettore colori', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Griglia di 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Abilitato', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Disabilitato', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Nessun risultato di ricerca nella vista corrente\\APremere [Invio] per espandere l\'oggetto della ricerca.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Nessun risultato di ricerca tramite prima lettera nella vista corrente.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etichetta di testo', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minuti rimanenti', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Riapri con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Salva con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Seleziona cartella', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Cerca tramite la prima lettera', // from v2.1.23 added 24.3.2017
			'presets'         : 'Opzioni predefinite', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Troppi oggetti da spostare nel cestino', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Area di testo', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Svuota la cartella "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Non ci sono oggetti nella cartella "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferenze', // from v2.1.26 added 28.6.2017
			'language'        : 'Impostazioni Lingua', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inizializza le impostazioni salvate nel browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Impostazioni ToolBar', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caratteri rimanenti.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $ 1 righe rimaste.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Somma', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Dimensione file approssimativa', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fuoco sull\'elemento sotto al mouse',  // from v2.1.30 added 2.11.2017
			'select'          : 'Seleziona', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Azione quando un file è selezionato', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Apri con l\'editor usato l\'ultima volta', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverti selezione', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Sei sicuro di voler rinominare $1 selezionati come $2?<br/>Questo non può essere annullato!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Rinomina in batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Numero', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Aggiungi prefisso', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Aggiungi sufisso', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Cambia estensione', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Impostazioni delle colonne (visualizzazione elenco)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Tutti i cambiamenti saranno immeditamente applicati.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Qualsiasi modifica non sarà visibile fino a quando non si monta questo volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Anche i seguenti volumi montati su questo volume smontati. Sei sicuro di smontarlo?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Seleziona Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmi per visualizzare l\'hash del file', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Informazioni (pannello di informazioni sulla selezione)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Premi di nuovo per uscire.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barra degli strumenti', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Spazio di lavoro', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialogo', // from v2.1.38 added 4.4.2018
			'all'             : 'Tutti', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Dimensione icona (Visualizzazione icone)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Apri la finestra dell\'editor ingrandita', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Poiché la conversione tramite API non è attualmente disponibile, converti sul sito web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Dopo la conversione, devi essere caricato con l\'URL dell\'elemento o un file scaricato per salvare il file convertito.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Converti sul sito di $ 1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrazioni', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Questo elFinder ha i seguenti servizi esterni integrati. Si prega di verificare i termini di utilizzo, l\'informativa sulla privacy, ecc. prima di utilizzarlo.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Mostra elementi nascosti', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Nascondi oggetti nascosti', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Mostra/Nascondi elementi nascosti', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Tipi di file da abilitare con "Nuovo file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tipo di file di testo', // from v2.1.41 added 7.8.2018
			'add'             : 'Aggiungere', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'predefinita', // from v2.1.43 added 19.10.2018
			'description'     : 'Descrizione', // from v2.1.43 added 19.10.2018
			'website'         : 'Sito web', // from v2.1.43 added 19.10.2018
			'author'          : 'autrice', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licenza', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Questo elemento non può essere salvato. Per evitare di perdere le modifiche, devi esportare sul tuo PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Fare doppio clic sul file per selezionarlo.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Usa la modalità a schermo intero', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Sconosciuto',
			'kindRoot'        : 'Percorso base del volume', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Cartella',
			'kindSelects'     : 'Selezioni', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias guasto',
			// applications
			'kindApp'         : 'Applicazione',
			'kindPostscript'  : 'Documento Postscript',
			'kindMsOffice'    : 'Documento Microsoft Office',
			'kindMsWord'      : 'Documento Microsoft Word',
			'kindMsExcel'     : 'Documento Microsoft Excel',
			'kindMsPP'        : 'Presentazione Microsoft Powerpoint',
			'kindOO'          : 'Documento Open Office',
			'kindAppFlash'    : 'Applicazione Flash',
			'kindPDF'         : 'Documento PDF',
			'kindTorrent'     : 'File Bittorrent',
			'kind7z'          : 'Archivio 7z',
			'kindTAR'         : 'Archivio TAR',
			'kindGZIP'        : 'Archivio GZIP',
			'kindBZIP'        : 'Archivio BZIP',
			'kindXZ'          : 'Archivio XZ',
			'kindZIP'         : 'Archivio ZIP',
			'kindRAR'         : 'Archivio RAR',
			'kindJAR'         : 'File Java JAR',
			'kindTTF'         : 'Font True Type',
			'kindOTF'         : 'Font Open Type',
			'kindRPM'         : 'Pacchetto RPM',
			// texts
			'kindText'        : 'Documento di testo',
			'kindTextPlain'   : 'Testo Semplice',
			'kindPHP'         : 'File PHP',
			'kindCSS'         : 'Foglio di stile a cascata (CSS)',
			'kindHTML'        : 'Documento HTML',
			'kindJS'          : 'File Javascript',
			'kindRTF'         : 'File RTF (Rich Text Format)',
			'kindC'           : 'File C',
			'kindCHeader'     : 'File C (header)',
			'kindCPP'         : 'File C++',
			'kindCPPHeader'   : 'File C++ (header)',
			'kindShell'       : 'Script Unix shell',
			'kindPython'      : 'File Python',
			'kindJava'        : 'File Java',
			'kindRuby'        : 'File Ruby',
			'kindPerl'        : 'File Perl',
			'kindSQL'         : 'File SQL',
			'kindXML'         : 'File XML',
			'kindAWK'         : 'File AWK',
			'kindCSV'         : 'File CSV (Comma separated values)',
			'kindDOCBOOK'     : 'File Docbook XML',
			'kindMarkdown'    : 'Testo markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Immagine',
			'kindBMP'         : 'Immagine BMP',
			'kindJPEG'        : 'Immagine JPEG',
			'kindGIF'         : 'Immagine GIF',
			'kindPNG'         : 'Immagine PNG',
			'kindTIFF'        : 'Immagine TIFF',
			'kindTGA'         : 'Immagine TGA',
			'kindPSD'         : 'Immagine Adobe Photoshop',
			'kindXBITMAP'     : 'Immagine X bitmap',
			'kindPXM'         : 'Immagine Pixelmator',
			// media
			'kindAudio'       : 'File Audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Playlist MP3',
			'kindVideo'       : 'File Video',
			'kindVideoDV'     : 'Filmato DV',
			'kindVideoMPEG'   : 'Filmato MPEG',
			'kindVideoMPEG4'  : 'Filmato MPEG-4',
			'kindVideoAVI'    : 'Filmato AVI',
			'kindVideoMOV'    : 'Filmato Quick Time',
			'kindVideoWM'     : 'Filmato Windows Media',
			'kindVideoFlash'  : 'Filmato Flash',
			'kindVideoMKV'    : 'Filmato Matroska',
			'kindVideoOGG'    : 'Filmato Ogg'
		}
	};
}));

lib/js/i18n/elfinder.hr.js000064400000102013147361034410011243 0ustar00/**
 * Croatian translation
 * @version 2022-03-01
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.hr = {
		translator : '',
		language   : 'Croatian',
		direction  : 'ltr',
		dateFormat : 'd.m.Y. H:i', // will show like: 01.03.2022. 18:44
		fancyDateFormat : '$1 H:i', // will show like: Danas 18:44
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220301-184452
		messages   : {
			'getShareText' : 'Udio',
			'Editor ': 'Urednik koda',
			/********************************** errors **********************************/
			'error'                : 'Greška',
			'errUnknown'           : 'Nepoznata greška.',
			'errUnknownCmd'        : 'Nepoznata naredba.',
			'errJqui'              : 'Kriva jQuery UI konfiguracija. Selectable, draggable, i droppable komponente moraju biti uključene.',
			'errNode'              : 'elFinder zahtjeva DOM element da bi bio stvoren.',
			'errURL'               : 'Krivo konfiguriran elFinder. Opcija URL nije postavljena.',
			'errAccess'            : 'Zabranjen pristup.',
			'errConnect'           : 'Nije moguće spajanje na server.',
			'errAbort'             : 'Prekinuta veza.',
			'errTimeout'           : 'Veza je istekla.',
			'errNotFound'          : 'Server nije pronađen.',
			'errResponse'          : 'Krivi odgovor servera.',
			'errConf'              : 'Krivo konfiguriran server',
			'errJSON'              : 'Nije instaliran PHP JSON modul.',
			'errNoVolumes'         : 'Disk nije dostupan.',
			'errCmdParams'         : 'Krivi parametri za naredbu "$1".',
			'errDataNotJSON'       : 'Podaci nisu tipa JSON.',
			'errDataEmpty'         : 'Nema podataka.',
			'errCmdReq'            : 'Pozadinski zahtjev zahtijeva naziv naredbe.',
			'errOpen'              : 'Ne mogu otvoriti "$1".',
			'errNotFolder'         : 'Objekt nije mapa.',
			'errNotFile'           : 'Objekt nije dokument.',
			'errRead'              : 'Ne mogu pročitati "$1".',
			'errWrite'             : 'Ne mogu pisati u "$1".',
			'errPerm'              : 'Pristup zabranjen',
			'errLocked'            : '"$1" je zaključan i ne može biti preimenovan, premješten ili obrisan.',
			'errExists'            : 'Dokument s imenom "$1" već postoji.',
			'errInvName'           : 'Krivo ime dokumenta',
			'errInvDirname'        : 'Nevažeći naziv mape.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mapa nije pronađena',
			'errFileNotFound'      : 'Dokument nije pronađen',
			'errTrgFolderNotFound' : 'Mapa "$1" nije pronađena',
			'errPopup'             : 'Preglednik je spriječio otvaranje skočnog prozora. Da biste otvorili datoteku, omogućite je u opcijama preglednika.',
			'errMkdir'             : 'Ne mogu napraviti mapu "$1".',
			'errMkfile'            : 'Ne mogu napraviti dokument "$1".',
			'errRename'            : 'Ne mogu preimenovati "$1".',
			'errCopyFrom'          : 'Kopiranje s diska "$1" nije dozvoljeno.',
			'errCopyTo'            : 'Kopiranje na disk "$1" nije dozvoljeno.',
			'errMkOutLink'         : 'Nije moguće stvoriti vezu na izvan korijena volumena.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Greška pri prebacivanju dokumenta na server.',  // old name - errUploadCommon
			'errUploadFile'        : 'Ne mogu prebaciti "$1" na server', // old name - errUpload
			'errUploadNoFiles'     : 'Nema dokumenata za prebacivanje na server',
			'errUploadTotalSize'   : 'Dokumenti prelaze maksimalnu dopuštenu veličinu.', // old name - errMaxSize
			'errUploadFileSize'    : 'Dokument je prevelik.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Ovaj tip dokumenta nije dopušten.',
			'errUploadTransfer'    : '"$1" greška pri prebacivanju',
			'errUploadTemp'        : 'Ne mogu napraviti privremeni dokument za prijenos na server', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" već postoji na ovoj lokaciji i ne može se zamijeniti objektom druge vrste.', // new
			'errReplace'           : 'Ne mogu zamijeniti "$1".',
			'errSave'              : 'Ne mogu spremiti "$1".',
			'errCopy'              : 'Ne mogu kopirati "$1".',
			'errMove'              : 'Ne mogu premjestiti "$1".',
			'errCopyInItself'      : 'Ne mogu kopirati "$1" na isto mjesto.',
			'errRm'                : 'Ne mogu ukloniti "$1".',
			'errTrash'             : 'Nije moguće u smeće.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Ne mogu ukloniti izvorni kod.',
			'errExtract'           : 'Nije moguće izdvojiti datoteke iz "$1".',
			'errArchive'           : 'Nije moguće stvoriti arhivu.',
			'errArcType'           : 'Nepodržana vrsta arhive.',
			'errNoArchive'         : 'Datoteka nije arhivska ili ima nepodržanu vrstu arhive.',
			'errCmdNoSupport'      : 'Backend ne podržava ovu naredbu.',
			'errReplByChild'       : 'Mapa "$1" ne može se zamijeniti stavkom koju sadrži.',
			'errArcSymlinks'       : 'Iz sigurnosnih razloga odbijeno raspakiranje arhive sadrži simbolične veze ili datoteke s nedopuštenim nazivima.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arhivske datoteke premašuju maksimalnu dopuštenu veličinu.',
			'errResize'            : 'Nije moguće promijeniti veličinu "$1".',
			'errResizeDegree'      : 'Neispravan stupanj rotacije.',  // added 7.3.2013
			'errResizeRotate'      : 'Nije moguće rotirati sliku.',  // added 7.3.2013
			'errResizeSize'        : 'Nevažeća veličina slike.',  // added 7.3.2013
			'errResizeNoChange'    : 'Veličina slike nije promijenjena.',  // added 7.3.2013
			'errUsupportType'      : 'Nepodržana vrsta datoteke.',
			'errNotUTF8Content'    : 'Datoteka "$1" nije u UTF-8 i ne može se uređivati.',  // added 9.11.2011
			'errNetMount'          : 'Nije moguće montirati "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nepodržani protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Montiranje nije uspjelo.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Potreban host.', // added 18.04.2012
			'errSessionExpires'    : 'Vaša sesija je istekla zbog neaktivnosti.',
			'errCreatingTempDir'   : 'Nije moguće stvoriti privremeni direktorij: "$1"',
			'errFtpDownloadFile'   : 'Nije moguće preuzeti datoteku s FTP-a: "$1"',
			'errFtpUploadFile'     : 'Nije moguće prenijeti datoteku na FTP: "$1"',
			'errFtpMkdir'          : 'Nije moguće stvoriti udaljeni direktorij na FTP-u: "$1"',
			'errArchiveExec'       : 'Pogreška pri arhiviranju datoteka: "$1"',
			'errExtractExec'       : 'Pogreška prilikom izdvajanja datoteka: "$1"',
			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nije konvertibilno u UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Isprobajte Google Chrome, ako želite prenijeti mapu.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Isteklo je vrijeme tijekom pretraživanja "$1". Rezultat pretraživanja je djelomičan.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Potrebna je ponovna autorizacija.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maksimalni broj stavki koje se mogu odabrati je $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nije moguće vratiti iz smeća. Nije moguće identificirati odredište vraćanja.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Urednik nije pronađen za ovu vrstu datoteke.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Pogreška se dogodila na strani poslužitelja.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nije moguće isprazniti mapu "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Postoji još $1 pogreške.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Možete stvoriti do $1 mape odjednom.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Arhiviraj',
			'cmdback'      : 'Nazad',
			'cmdcopy'      : 'Kopiraj',
			'cmdcut'       : 'Izreži',
			'cmddownload'  : 'Preuzmi',
			'cmdduplicate' : 'Dupliciraj',
			'cmdedit'      : 'Uredi dokument',
			'cmdextract'   : 'Raspakiraj arhivu',
			'cmdforward'   : 'Naprijed',
			'cmdgetfile'   : 'Odaberi dokumente',
			'cmdhelp'      : 'O programu',
			'cmdhome'      : 'Početak',
			'cmdinfo'      : 'Info',
			'cmdmkdir'     : 'Nova mapa',
			'cmdmkdirin'   : 'U novu mapu', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nova файл',
			'cmdopen'      : 'Otvori',
			'cmdpaste'     : 'Zalijepi',
			'cmdquicklook' : 'Pregled',
			'cmdreload'    : 'Ponovo učitaj',
			'cmdrename'    : 'Preimenuj',
			'cmdrm'        : 'Obriši',
			'cmdtrash'     : 'U smeće', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Obnovi', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Pronađi',
			'cmdup'        : 'Roditeljska mapa',
			'cmdupload'    : 'Prebaci dokumente na server',
			'cmdview'      : 'Pregledaj',
			'cmdresize'    : 'Promjeni veličinu i rotiraj',
			'cmdsort'      : 'Sortiraj',
			'cmdnetmount'  : 'Spoji se na mrežni disk', // added 18.04.2012
			'cmdnetunmount': 'Odspoji disk', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Na Mjesta', // added 28.12.2014
			'cmdchmod'     : 'Promijenite način rada', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Otvori mapu', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ponovno postavite širinu stupca', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Puni zaslon', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Potez', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Ispraznite mapu', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Poništi', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'ponovo uraditi', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Odaberi sve', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Odaberi nijednu', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Obrni odabir', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Otvori u novom prozoru', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Sakrij (preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Zatvori',
			'btnSave'   : 'Spremi',
			'btnRm'     : 'Ukloni',
			'btnApply'  : 'Primjeni',
			'btnCancel' : 'Odustani',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Da',
			'btnMount'  : 'Montirajte',  // added 18.04.2012
			'btnApprove': 'Idi na $1 i odobri', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Pretvoriti', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ovdje',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volumen',    // from v2.1 added 22.5.2015
			'btnAll'    : 'svi',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME vrsta', // from v2.1 added 22.5.2015
			'btnFileName':'Naziv datoteke',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Spremi i zatvori', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sigurnosna kopija', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Preimenovati',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Preimenuj (sve)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prethodno ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Sljedeće ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Spremi kao', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Otvori mapu',
			'ntffile'     : 'Otvori dokument',
			'ntfreload'   : 'Ponovo učitaj sadržaj mape',
			'ntfmkdir'    : 'Radim mapu',
			'ntfmkfile'   : 'Radim dokumente',
			'ntfrm'       : 'Brišem dokumente',
			'ntfcopy'     : 'Kopiram dokumente',
			'ntfmove'     : 'Mičem dokumente',
			'ntfprepare'  : 'Priprema za kopiranje dokumenata',
			'ntfrename'   : 'Preimenuj dokumente',
			'ntfupload'   : 'Pohranjujem dokumente na server',
			'ntfdownload' : 'Preuzimam dokumente',
			'ntfsave'     : 'Spremi dokumente',
			'ntfarchive'  : 'Radim arhivu',
			'ntfextract'  : 'Ekstrahiranje datoteka iz arhive',
			'ntfsearch'   : 'Tražim dokumente',
			'ntfresize'   : 'Promjena veličine slika',
			'ntfsmth'     : 'Nešto radeći',
			'ntfloadimg'  : 'Učitavam sliku',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Stjecanje dimenzije slike', // added 20.05.2013
			'ntfreaddir'  : 'Čitanje podataka mape', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Dobivanje URL-a linka', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Promjena načina rada datoteke', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Provjera naziva datoteke za prijenos', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Izrada datoteke za preuzimanje', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Dobivanje informacija o putu', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Obrada učitane datoteke', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Bacam u smeće', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Vršim obnavljanje iz smeća', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Provjera odredišne mape', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Poništavanje prethodne operacije', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Provjera sadržaja', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Otpad', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'nepoznato',
			'Today'       : 'Danas',
			'Yesterday'   : 'Jučer',
			'msJan'       : 'Sij',
			'msFeb'       : 'Vel',
			'msMar'       : 'Ožu',
			'msApr'       : 'Tra',
			'msMay'       : 'Svi',
			'msJun'       : 'Lip',
			'msJul'       : 'Srp',
			'msAug'       : 'Kol',
			'msSep'       : 'Ruj',
			'msOct'       : 'Lis',
			'msNov'       : 'Stu',
			'msDec'       : 'Pro',
			'January'     : 'Siječanj',
			'February'    : 'Veljača',
			'March'       : 'Ožujak',
			'April'       : 'Travanj',
			'May'         : 'Svibanj',
			'June'        : 'Lipanj',
			'July'        : 'Srpanj',
			'August'      : 'Kolovoz',
			'September'   : 'Rujan',
			'October'     : 'Listopad',
			'November'    : 'Studeni',
			'December'    : 'Prosinac',
			'Sunday'      : 'Nedjelja',
			'Monday'      : 'Ponedjeljak',
			'Tuesday'     : 'Utorak',
			'Wednesday'   : 'Srijeda',
			'Thursday'    : 'Četvrtak',
			'Friday'      : 'Petak',
			'Saturday'    : 'Subota',
			'Sun'         : 'Ned',
			'Mon'         : 'Pon',
			'Tue'         : 'Uto',
			'Wed'         : 'Sri',
			'Thu'         : 'Čet',
			'Fri'         : 'Pet',
			'Sat'         : 'Sub',

			/******************************** sort variants ********************************/
			'sortname'          : 'po imenu',
			'sortkind'          : 'po tipu',
			'sortsize'          : 'po veličini',
			'sortdate'          : 'po datumu',
			'sortFoldersFirst'  : 'Prvo mape',
			'sortperm'          : 'po dopuštenju', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'po načinu rada',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'od strane vlasnika',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'po grupi',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Također Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NoviDokument.txt', // added 10.11.2015
			'untitled folder'   : 'NovaMapa',   // added 10.11.2015
			'Archive'           : 'NovaArhiva',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Nova datoteka.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Datoteka',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Potvrda',
			'confirmRm'       : 'Jeste li sigurni?',
			'confirmRepl'     : 'Zamijeni stare dokumente novima?',
			'confirmRest'     : 'Zamijeniti postojeću stavku stavkom u smeću?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nije u UTF-8<br/>Pretvoriti u UTF-8?<br/>Sadržaj postaje UTF-8 spremanjem nakon pretvorbe.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Nije bilo moguće otkriti kodiranje znakova ove datoteke. Mora se privremeno pretvoriti u UTF-8 radi uređivanja.<br/>Odaberite kodiranje znakova ove datoteke.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Promijenjen je.<br/>Gubi se posao ako ne spremite promjene.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Jeste li sigurni da želite premjestiti stavke u koš za smeće?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Jeste li sigurni da želite premjestiti stavke u "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Primjeni na sve ',
			'name'            : 'Ime',
			'size'            : 'Veličina',
			'perms'           : 'Dozvole',
			'modify'          : 'Modificiran',
			'kind'            : 'Tip',
			'read'            : 'čitanje',
			'write'           : 'pisanje',
			'noaccess'        : 'bez pristupa',
			'and'             : 'i',
			'unknown'         : 'nepoznato',
			'selectall'       : 'Odaberi sve',
			'selectfiles'     : 'Odaberi dokument(e)',
			'selectffile'     : 'Odaberi prvi dokument',
			'selectlfile'     : 'Odaberi zadnji dokument',
			'viewlist'        : 'Lista',
			'viewicons'       : 'Ikone',
			'viewSmall'       : 'Male ikone', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Srednje ikone', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Velike ikone', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ekstra velike ikone', // from v2.1.39 added 22.5.2018
			'places'          : 'Mjesta',
			'calc'            : 'Računaj',
			'path'            : 'Put',
			'aliasfor'        : 'Drugo ime za',
			'locked'          : 'Zaključano',
			'dim'             : 'Dimenzije',
			'files'           : 'Dokumenti',
			'folders'         : 'Mape',
			'items'           : 'Stavke',
			'yes'             : 'da',
			'no'              : 'ne',
			'link'            : 'poveznica',
			'searcresult'     : 'Rezultati pretrage',
			'selected'        : 'odabrane stavke',
			'about'           : 'Info',
			'shortcuts'       : 'Prečaci',
			'help'            : 'Pomoć',
			'webfm'           : 'Web upravitelj datoteka',
			'ver'             : 'Verzija',
			'protocolver'     : 'verzija protokola',
			'homepage'        : 'Projektni dom',
			'docs'            : 'Dokumentacija',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Follow us on twitter',
			'facebook'        : 'Join us on facebook',
			'team'            : 'Tim',
			'chiefdev'        : 'glavni developer',
			'developer'       : 'razvojni programer',
			'contributor'     : 'doprinositelj',
			'maintainer'      : 'održavatelj',
			'translator'      : 'prevoditelj',
			'icons'           : 'Ikone',
			'dontforget'      : 'i ne zaboravi uzeti svoj ručnik',
			'shortcutsof'     : 'Prečaci isključeni',
			'dropFiles'       : 'Ovdje ispusti dokumente',
			'or'              : 'ili',
			'selectForUpload' : 'Odaberi dokumente koje prebacuješ na server',
			'moveFiles'       : 'Premjesti dokumente',
			'copyFiles'       : 'Kopiraj dokumente',
			'restoreFiles'    : 'Vrati stavke', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Uklonite s mjesta',
			'aspectRatio'     : 'Omjer stranica',
			'scale'           : 'Skaliraj',
			'width'           : 'Širina',
			'height'          : 'Visina',
			'resize'          : 'Promjena veličine',
			'crop'            : 'Usjev',
			'rotate'          : 'Rotirati',
			'rotate-cw'       : 'Rotirajte za 90 stupnjeva CW',
			'rotate-ccw'      : 'Rotirajte za 90 stupnjeva u smjeru suprotnom od smjera desno',
			'degree'          : '°',
			'netMountDialogTitle' : 'Montirajte mrežni volumen', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Domaćin', // added 18.04.2012
			'port'                : 'Luka', // added 18.04.2012
			'user'                : 'Korisnik', // added 18.04.2012
			'pass'                : 'Zaporka', // added 18.04.2012
			'confirmUnmount'      : 'Jeste li isključili $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Ispustite ili zalijepite datoteke iz preglednika', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Ovdje ispustite ili zalijepite datoteke i URL-ove', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Jezik',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Cilj: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Pretraživanje po MIME vrsti unosa', // from v2.1 added 22.5.2015
			'owner'           : 'Vlasnik', // from v2.1 added 20.6.2015
			'group'           : 'Grupa', // from v2.1 added 20.6.2015
			'other'           : 'Other', // from v2.1 added 20.6.2015
			'execute'         : 'Izvrši', // from v2.1 added 20.6.2015
			'perm'            : 'Dozvole', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mapa je prazna', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mapa je prazna\\A Dovuci dokumente koje želiš dodati', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mapa je prazna\\A Pritisni dugo za dodavanje dokumenata', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvaliteta', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatska sinkronizacija',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Gore',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Nabavite URL vezu', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Odabrane stavke ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID foldera', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Dopustite izvanmrežni pristup', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Za ponovnu provjeru autentičnosti', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Učitava se...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Otvorite više datoteka', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Pokušavate otvoriti $1 datoteke. Jeste li sigurni da želite otvoriti u pregledniku?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Rezultati pretraživanja su prazni u cilju pretraživanja.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Uređuje datoteku.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Odabrali ste $1 stavke.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Imate $1 stavke u međuspremniku.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementalno pretraživanje je samo iz trenutnog prikaza.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Vratite u funkciju', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 završeno', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontekstni izbornik', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Okretanje stranice', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Korijeni volumena', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetiraj', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Boja pozadine', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Birač boja', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Mreža od 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Omogućeno', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Onemogućeno', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Rezultati pretraživanja su prazni u trenutnom prikazu.\\APritisnite [Enter] za proširenje cilja pretraživanja.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Rezultati pretraživanja prvog slova su prazni u trenutnom prikazu.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Oznaka teksta', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 preostalo min', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Ponovno otvori s odabranim kodiranjem', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Spremite s odabranim kodiranjem', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Odaberite mapu', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Pretraživanje prvog slova', // from v2.1.23 added 24.3.2017
			'presets'         : 'Unaprijed postavljene postavke', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Previše je predmeta pa ne može u smeće.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Ispraznite mapu "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Nema stavki u mapi "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'preferencija', // from v2.1.26 added 28.6.2017
			'language'        : 'Jezik', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicijalizirajte postavke spremljene u ovom pregledniku', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Postavke alatne trake', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... preostalih $1 znakova.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... preostalih $1 redaka.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'zbroj', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Gruba veličina datoteke', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Usredotočite se na element dijaloga s prelaskom miša',  // from v2.1.30 added 2.11.2017
			'select'          : 'Odaberi', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Radnja pri odabiru datoteke', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Otvorite zadnji put korištenim uređivačom', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Obrni odabir', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Jeste li sigurni da želite preimenovati $1 odabrane stavke poput $2?<br/>Ovo se ne može poništiti!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Preimenovanje grupe', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Broj', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Dodajte prefiks', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Dodajte sufiks', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Promjena ekstenzije', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Postavke stupaca (prikaz popisa)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Sve promjene će se odmah odraziti na arhivu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Sve promjene neće se odraziti sve dok ne isključite ovaj volumen.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Sljedeći volumen(i) montirani na ovaj volumen također su se demontirali. Jeste li sigurni da ćete ga isključiti?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informacije o odabiru', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmi za prikaz hash datoteke', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info stavke (Informacija o izboru)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Pritisnite ponovno za izlaz.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Alatna traka', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Radni prostor', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'svi', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Veličina ikone (prikaz ikona)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Otvorite uvećani prozor uređivača', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Budući da konverzija putem API-ja trenutno nije dostupna, molimo vas da izvršite konverziju na web stranici.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Nakon pretvorbe morate prenijeti s URL-om stavke ili preuzetu datoteku da biste spremili pretvorenu datoteku.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Pretvorite na web-mjestu od $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integracije', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Ovaj elFinder ima integrirane sljedeće vanjske usluge. Prije korištenja provjerite uvjete korištenja, politiku privatnosti itd.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Prikaži skrivene stavke', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Sakrij skrivene stavke', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Prikaži/sakrij skrivene stavke', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Vrste datoteka za omogućavanje s "Nova datoteka"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Vrsta tekstualne datoteke', // from v2.1.41 added 7.8.2018
			'add'             : 'Dodajte', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Zadano', // from v2.1.43 added 19.10.2018
			'description'     : 'Opis', // from v2.1.43 added 19.10.2018
			'website'         : 'web-mjesto', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licenca', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Ova se stavka ne može spremiti. Kako biste izbjegli gubitak uređivanja, morate ih izvesti na svoje računalo.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dvaput kliknite na datoteku da biste je odabrali.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Koristite način cijelog zaslona', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'nepoznato',
			'kindRoot'        : 'Korijen volumena', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mapa',
			'kindSelects'     : 'Selekcije', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Drugo ime',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Aplikacija',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint prezentacija',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash aplikacija',
			'kindPDF'         : 'Prijenosni format dokumenta (PDF)',
			'kindTorrent'     : 'Bittorrent dokument',
			'kind7z'          : '7z arhiva',
			'kindTAR'         : 'TAR arhiva',
			'kindGZIP'        : 'GZIP arhiva',
			'kindBZIP'        : 'BZIP arhiva',
			'kindXZ'          : 'XZ arhiva',
			'kindZIP'         : 'ZIP arhiva',
			'kindRAR'         : 'RAR arhiva',
			'kindJAR'         : 'Java JAR dokument',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Otvorite Vrsta fonta',
			'kindRPM'         : 'RPM paket',
			// texts
			'kindText'        : 'Tekst arhiva',
			'kindTextPlain'   : 'Obični tekst',
			'kindPHP'         : 'PHP izvor',
			'kindCSS'         : 'Kaskadni stilski list',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript izvor',
			'kindRTF'         : 'Format obogaćenog teksta',
			'kindC'           : 'C izvor',
			'kindCHeader'     : 'C izvor zaglavlja',
			'kindCPP'         : 'C++ izvor',
			'kindCPPHeader'   : 'C++ izvor zaglavlja',
			'kindShell'       : 'Unix shell skripta',
			'kindPython'      : 'Python izvor',
			'kindJava'        : 'Java izvor',
			'kindRuby'        : 'Ruby izvor',
			'kindPerl'        : 'Perl skripta',
			'kindSQL'         : 'SQL izvor',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK izvor',
			'kindCSV'         : 'vrijednosti razdvojene zarezom',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Markdown tekst', // added 20.7.2015
			// images
			'kindImage'       : 'slika',
			'kindBMP'         : 'BMP slika',
			'kindJPEG'        : 'JPEG slika',
			'kindGIF'         : 'GIF slika',
			'kindPNG'         : 'PNG slika',
			'kindTIFF'        : 'TIFF slika',
			'kindTGA'         : 'TGA slika',
			'kindPSD'         : 'Adobe Photoshop slika',
			'kindXBITMAP'     : 'X bitmap slika',
			'kindPXM'         : 'Pixelmator slika',
			// media
			'kindAudio'       : 'Audio mediji',
			'kindAudioMPEG'   : 'MPEG zvuk',
			'kindAudioMPEG4'  : 'MPEG-4 zvuk',
			'kindAudioMIDI'   : 'MIDI zvuk',
			'kindAudioOGG'    : 'Ogg Vorbis zvuk',
			'kindAudioWAV'    : 'WAV zvuk',
			'AudioPlaylist'   : 'MP3 lista',
			'kindVideo'       : 'Video ',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));lib/js/i18n/elfinder.zh_TW.js000064400000071226147361034410011700 0ustar00/**
 * Traditional Chinese translation
 * @author Yuwei Chuang <ywchuang.tw@gmail.com>
 * @author Danny Lin <danny0838@gmail.com>
 * @author TCC <john987john987@gmail.com>
 * @author Rick Jiang <rick.jiang@aol.com>
 * @version 2021-02-23
 */
(function (root, factory) {
  if (typeof define === "function" && define.amd) {
    define(["elfinder"], factory);
  } else if (typeof exports !== "undefined") {
    module.exports = factory(require("elfinder"));
  } else {
    factory(root.elFinder);
  }
})(this, function (elFinder) {
  elFinder.prototype.i18.zh_TW = {
    translator:
      "Yuwei Chuang &lt;ywchuang.tw@gmail.com&gt;, Danny Lin &lt;danny0838@gmail.com&gt;, TCC &lt;john987john987@gmail.com&gt;, Rick Jiang &lt;rick.jiang@aol.com&gt",
    language: "正體中文",
    direction: "ltr",
    dateFormat: "Y/m/d H:i", // Mar 13, 2012 05:27 PM
    fancyDateFormat: "$1 H:i", // will produce smth like: Today 12:25 PM
    nonameDateFormat: "ymd-His", // to apply if upload file is noname: 120513172700
    messages: {
      'getShareText' : '分享',
			'Editor ': '代碼編輯器',
      /********************************** errors **********************************/
      error: "錯誤",
      errUnknown: "未知的錯誤.",
      errUnknownCmd: "未知的指令.",
      errJqui:
        "無效的 jQuery UI 設定. 必須包含 Selectable, draggable 以及 droppable 元件.",
      errNode: "elFinder 需要能建立 DOM 元素.",
      errURL: "無效的 elFinder 設定! 尚未設定 URL 選項.",
      errAccess: "拒絕存取.",
      errConnect: "無法連線至後端.",
      errAbort: "連線中斷.",
      errTimeout: "連線逾時.",
      errNotFound: "後端不存在.",
      errResponse: "無效的後端回復.",
      errConf: "無效的後端設定.",
      errJSON: "未安裝 PHP JSON 模組.",
      errNoVolumes: "無可讀取的 volumes.",
      errCmdParams: '無效的參數, 指令: "$1".',
      errDataNotJSON: "資料不是 JSON 格式.",
      errDataEmpty: "沒有資料.",
      errCmdReq: "後端請求需要命令名稱.",
      errOpen: '無法開啟 "$1".',
      errNotFolder: "非資料夾.",
      errNotFile: "非檔案.",
      errRead: '無法讀取 "$1".',
      errWrite: '無法寫入 "$1".',
      errPerm: "無權限.",
      errLocked: '"$1" 被鎖定,不能重新命名, 移動或删除.',
      errExists: '檔案 "$1" 已經存在了.',
      errInvName: "無效的檔案名稱.",
      errInvDirname: "無效的資料夾名稱", // from v2.1.24 added 12.4.2017
      errFolderNotFound: "未找到資料夾.",
      errFileNotFound: "未找到檔案.",
      errTrgFolderNotFound: '未找到目標資料夾 "$1".',
      errPopup: "連覽器攔截了彈跳視窗. 請在瀏覽器選項允許彈跳視窗.",
      errMkdir: '不能建立資料夾 "$1".',
      errMkfile: '不能建立檔案 "$1".',
      errRename: '不能重新命名 "$1".',
      errCopyFrom: '不允許從磁碟 "$1" 複製.',
      errCopyTo: '不允複製到磁碟 "$1".',
      errMkOutLink: "無法建立連結到磁碟根目錄外面.", // from v2.1 added 03.10.2015
      errUpload: "上傳錯誤.", // old name - errUploadCommon
      errUploadFile: '無法上傳 "$1".', // old name - errUpload
      errUploadNoFiles: "未找到要上傳的檔案.",
      errUploadTotalSize: "資料超過了最大允許大小.", // old name - errMaxSize
      errUploadFileSize: "檔案超過了最大允許大小.", //  old name - errFileMaxSize
      errUploadMime: "不允許的檔案類型.",
      errUploadTransfer: '"$1" 傳輸錯誤.',
      errUploadTemp: "無法建立暫存檔以供上傳.", // from v2.1 added 26.09.2015
      errNotReplace: '"$1" 已經存在此位置, 不能被其他的替换.', // new
      errReplace: '無法替换 "$1".',
      errSave: '無法保存 "$1".',
      errCopy: '無法複製 "$1".',
      errMove: '無法移動 "$1".',
      errCopyInItself: '無法移動 "$1" 到原有位置.',
      errRm: '無法删除 "$1".',
      errTrash: "無法丟入垃圾桶", // from v2.1.24 added 30.4.2017
      errRmSrc: "無法删除來源檔案.",
      errExtract: '無法從 "$1" 解壓縮檔案.',
      errArchive: "無法建立壓縮膽.",
      errArcType: "不支援的壓縮格式.",
      errNoArchive: "檔案不是壓縮檔, 或者不支援該壓缩格式.",
      errCmdNoSupport: "後端不支援該指令.",
      errReplByChild: "資料夾 “$1” 不能被它所包含的檔案(資料夾)替换.",
      errArcSymlinks: "由於安全考量,拒絕解壓縮符號連結或含有不允許檔名的檔案.", // edited 24.06.2012
      errArcMaxSize: "待壓縮檔案的大小超出上限.",
      errResize: '無法重新調整大小 "$1".',
      errResizeDegree: "無效的旋轉角度.", // added 7.3.2013
      errResizeRotate: "無法旋轉圖片.", // added 7.3.2013
      errResizeSize: "無效的圖片大小.", // added 7.3.2013
      errResizeNoChange: "圖片大小未更改.", // added 7.3.2013
      errUsupportType: "不支援的檔案格式.",
      errNotUTF8Content: '檔案 "$1" 不是 UTF-8 格式, 不能編輯.', // added 9.11.2011
      errNetMount: '無法掛載 "$1".', // added 17.04.2012
      errNetMountNoDriver: "不支援該通訊協議.", // added 17.04.2012
      errNetMountFailed: "掛載失敗.", // added 17.04.2012
      errNetMountHostReq: "需要指定主機位置.", // added 18.04.2012
      errSessionExpires: "由於過久無活動, session 已過期.",
      errCreatingTempDir: '無法建立暫時目錄: "$1"',
      errFtpDownloadFile: '無法從 FTP 下載檔案: "$1"',
      errFtpUploadFile: '無法上傳檔案到 FTP: "$1"',
      errFtpMkdir: '無法在 FTP 建立遠端目錄: "$1"',
      errArchiveExec: '壓縮檔案時發生錯誤: "$1"',
      errExtractExec: '解壓縮檔案時發生錯誤: "$1"',
      errNetUnMount: "無法卸載", // from v2.1 added 30.04.2012
      errConvUTF8: "無法轉換為 UTF-8", // from v2.1 added 08.04.2014
      errFolderUpload: "如要上傳這個資料夾, 請嘗試 Google Chrome.", // from v2.1 added 26.6.2015
      errSearchTimeout: '搜尋 "$1" 逾時. 只列出部分搜尋結果.', // from v2.1 added 12.1.2016
      errReauthRequire: "需要重新驗證權限.", // from v2.1.10 added 24.3.2016
      errMaxTargets: "最多可選擇 $1 個物件.", // from v2.1.17 added 17.10.2016
      errRestore: "無法從垃圾桶恢復。 無法識別恢復目的地。", // from v2.1.24 added 3.5.2017
      errEditorNotFound: "編輯器找不到此文件類型。", // from v2.1.25 added 23.5.2017
      errServerError: "服務器發生錯誤。", // from v2.1.25 added 16.6.2017
      errEmpty: '無法清空"$1"文件夾', // from v2.1.25 added 22.6.2017
      moreErrors: "發生 $1 個錯誤.", // from v2.1.44 added 9.12.2018

      /******************************* commands names ********************************/
      cmdarchive: "建立壓縮檔",
      cmdback: "後退",
      cmdcopy: "複製",
      cmdcut: "剪下",
      cmddownload: "下載",
      cmdduplicate: "建立副本",
      cmdedit: "編輯檔案",
      cmdextract: "從壓縮檔解壓縮",
      cmdforward: "前進",
      cmdgetfile: "選擇檔案",
      cmdhelp: "關於本軟體",
      cmdhome: "首頁",
      cmdinfo: "查看關於",
      cmdmkdir: "建立資料夾",
      cmdmkdirin: "移入新資料夾", // from v2.1.7 added 19.2.2016
      cmdmkfile: "建立文檔",
      cmdopen: "開啟",
      cmdpaste: "貼上",
      cmdquicklook: "預覽",
      cmdreload: "更新",
      cmdrename: "重新命名",
      cmdrm: "删除",
      cmdtrash: "丟到垃圾桶", //from v2.1.24 added 29.4.2017
      cmdrestore: "恢復", //from v2.1.24 added 3.5.2017
      cmdsearch: "搜尋檔案",
      cmdup: "移到上一層資料夾",
      cmdupload: "上傳檔案",
      cmdview: "檢視",
      cmdresize: "調整大小及旋轉",
      cmdsort: "排序",
      cmdnetmount: "掛載網路磁碟", // added 18.04.2012
      cmdnetunmount: "卸載", // from v2.1 added 30.04.2012
      cmdplaces: '加到"位置"', // added 28.12.2014
      cmdchmod: "更改權限", // from v2.1 added 20.6.2015
      cmdopendir: "開啟資料夾", // from v2.1 added 13.1.2016
      cmdcolwidth: "重設欄寬", // from v2.1.13 added 12.06.2016
      cmdfullscreen: "全螢幕", // from v2.1.15 added 03.08.2016
      cmdmove: "移動", // from v2.1.15 added 21.08.2016
      cmdempty: "清空資料夾", // from v2.1.25 added 22.06.2017
      cmdundo: "上一步", // from v2.1.27 added 31.07.2017
      cmdredo: "下一步", // from v2.1.27 added 31.07.2017
      cmdpreference: "優先權", // from v2.1.27 added 03.08.2017
      cmdselectall: "全選", // from v2.1.28 added 15.08.2017
      cmdselectnone: "取消選取", // from v2.1.28 added 15.08.2017
      cmdselectinvert: "反向選取", // from v2.1.28 added 15.08.2017
      cmdopennew: "在新視窗開啟", // from v2.1.38 added 3.4.2018
      cmdhide: "隱藏(偏好)", // from v2.1.41 added 24.7.2018

      /*********************************** buttons ***********************************/
      btnClose: "關閉",
      btnSave: "儲存",
      btnRm: "删除",
      btnApply: "使用",
      btnCancel: "取消",
      btnNo: "否",
      btnYes: "是",
      btnMount: "掛載", // added 18.04.2012
      btnApprove: "移到 $1 並批准", // from v2.1 added 26.04.2012
      btnUnmount: "卸載", // from v2.1 added 30.04.2012
      btnConv: "轉換", // from v2.1 added 08.04.2014
      btnCwd: "這裡", // from v2.1 added 22.5.2015
      btnVolume: "磁碟", // from v2.1 added 22.5.2015
      btnAll: "全部", // from v2.1 added 22.5.2015
      btnMime: "MIME 類型", // from v2.1 added 22.5.2015
      btnFileName: "檔名", // from v2.1 added 22.5.2015
      btnSaveClose: "儲存並關閉", // from v2.1 added 12.6.2015
      btnBackup: "備份", // fromv2.1 added 28.11.2015
      btnRename: "重新命名", // from v2.1.24 added 6.4.2017
      btnRenameAll: "重新命名全部", // from v2.1.24 added 6.4.2017
      btnPrevious: "上一頁 ($1/$2)", // from v2.1.24 added 11.5.2017
      btnNext: "下一頁 ($1/$2)", // from v2.1.24 added 11.5.2017
      btnSaveAs: "另存新檔", // from v2.1.25 added 24.5.2017

      /******************************** notifications ********************************/
      ntfopen: "開啟資料夾",
      ntffile: "開啟檔案",
      ntfreload: "更新資料夾内容",
      ntfmkdir: "建立資料夾",
      ntfmkfile: "建立檔案",
      ntfrm: "删除檔案",
      ntfcopy: "複製檔案",
      ntfmove: "移動檔案",
      ntfprepare: "準備複製檔案",
      ntfrename: "重新命名檔案",
      ntfupload: "上傳檔案",
      ntfdownload: "下載檔案",
      ntfsave: "儲存檔案",
      ntfarchive: "建立壓縮檔",
      ntfextract: "從壓縮檔解壓縮",
      ntfsearch: "搜尋檔案",
      ntfresize: "正在更改圖片大小",
      ntfsmth: "正在忙 >_<",
      ntfloadimg: "正在讀取圖片",
      ntfnetmount: "正在掛載網路磁碟", // added 18.04.2012
      ntfnetunmount: "正在卸載網路磁碟", // from v2.1 added 30.04.2012
      ntfdim: "取得圖片大小", // added 20.05.2013
      ntfreaddir: "正在讀取資料夾資訊", // from v2.1 added 01.07.2013
      ntfurl: "正在取得連結 URL", // from v2.1 added 11.03.2014
      ntfchmod: "更改檔案模式", // from v2.1 added 20.6.2015
      ntfpreupload: "正在驗證上傳檔案名稱", // from v2.1 added 31.11.2015
      ntfzipdl: "正在建立縮檔以供下載", // from v2.1.7 added 23.1.2016
      ntfparents: "正在取得路徑資訊", // from v2.1.17 added 2.11.2016
      ntfchunkmerge: "正在處理上傳的檔案", // from v2.1.17 added 2.11.2016
      ntftrash: "正在丟到垃圾桶", // from v2.1.24 added 2.5.2017
      ntfrestore: "正從垃圾桶恢復", // from v2.1.24 added 3.5.2017
      ntfchkdir: "正在檢查目標資料夾", // from v2.1.24 added 3.5.2017
      ntfundo: "正在撤銷上一步動作", // from v2.1.27 added 31.07.2017
      ntfredo: "正在重做上一步動作", // from v2.1.27 added 31.07.2017
      ntfchkcontent: "正在確認內容", // from v2.1.41 added 3.8.2018

      /*********************************** volumes *********************************/
      volume_Trash: "垃圾桶", //from v2.1.24 added 29.4.2017

      /************************************ dates **********************************/
      dateUnknown: "未知",
      Today: "今天",
      Yesterday: "昨天",
      msJan: "一月",
      msFeb: "二月",
      msMar: "三月",
      msApr: "四月",
      msMay: "五月",
      msJun: "六月",
      msJul: "七月",
      msAug: "八月",
      msSep: "九月",
      msOct: "十月",
      msNov: "十一月",
      msDec: "十二月",
      January: "一月",
      February: "二月",
      March: "三月",
      April: "四月",
      May: "五月",
      June: "六月",
      July: "七月",
      August: "八月",
      September: "九月",
      October: "十月",
      November: "十一月",
      December: "十二月",
      Sunday: "星期日",
      Monday: "星期一",
      Tuesday: "星期二",
      Wednesday: "星期三",
      Thursday: "星期四",
      Friday: "星期五",
      Saturday: "星期六",
      Sun: "周日",
      Mon: "周一",
      Tue: "周二",
      Wed: "周三",
      Thu: "周四",
      Fri: "周五",
      Sat: "周六",

      /******************************** sort variants ********************************/
      sortname: "按名稱",
      sortkind: "按類型",
      sortsize: "按大小",
      sortdate: "按日期",
      sortFoldersFirst: "資料夾置前",
      sortperm: "按權限", // from v2.1.13 added 13.06.2016
      sortmode: "按模式", // from v2.1.13 added 13.06.2016
      sortowner: "按擁有者", // from v2.1.13 added 13.06.2016
      sortgroup: "按群組", // from v2.1.13 added 13.06.2016
      sortAlsoTreeview: "也套用於樹狀圖", // from v2.1.15 added 01.08.2016

      /********************************** new items **********************************/
      "untitled file.txt": "新檔案.txt", // added 10.11.2015
      "untitled folder": "新資料夾", // added 10.11.2015
      Archive: "新壓縮檔", // from v2.1 added 10.11.2015
      'untitled file'     : '新檔案.$1',
      extentionfile: "$1: 文件", // from v2.1.41 added 6.8.2018
      extentiontype: "$1: $2", // from v2.1.43 added 17.10.2018

      /********************************** messages **********************************/
      confirmReq: "請確認",
      confirmRm: "確定要删除檔案嗎?<br/>此操作無法回復!",
      confirmRepl: "用新檔案取代原檔案?",
      confirmRest: "用垃圾桶中的項目替換現有項目?", // fromv2.1.24 added 5.5.2017
      confirmConvUTF8:
        "不是 UTF-8 檔案<br/>轉換為 UTF-8 嗎?<br/>轉換後儲存會把內容變成 UTF-8.", // from v2.1 added 08.04.2014
      confirmNonUTF8:
        "無法偵測此檔案的字元編碼, 須暫時轉換為 UTF-8 以供編輯.<br/>請選擇此檔案的字元編碼.", // from v2.1.19 added 28.11.2016
      confirmNotSave: "此檔案已修改.<br/>若未儲存將遺失目前的工作.", // from v2.1 added 15.7.2015
      confirmTrash: "確定要將項目丟到垃圾桶嗎?", //from v2.1.24 added 29.4.2017
      apllyAll: "全部套用",
      name: "名稱",
      size: "大小",
      perms: "權限",
      modify: "修改於",
      kind: "類別",
      read: "讀取",
      write: "寫入",
      noaccess: "無權限",
      and: "和",
      unknown: "未知",
      selectall: "選擇所有檔案",
      selectfiles: "選擇檔案",
      selectffile: "選擇第一個檔案",
      selectlfile: "選擇最後一個檔案",
      viewlist: "列表檢視",
      viewicons: "圖示檢視",
      viewSmall: "小圖示", // from v2.1.39 added 22.5.2018
      viewMedium: "中圖示", // from v2.1.39 added 22.5.2018
      viewLarge: "大圖示", // from v2.1.39 added 22.5.2018
      viewExtraLarge: "超大圖示", // from v2.1.39 added 22.5.2018
      places: "位置",
      calc: "計算",
      path: "路徑",
      aliasfor: "别名",
      locked: "鎖定",
      dim: "圖片大小",
      files: "檔案",
      folders: "資料夾",
      items: "項目",
      yes: "是",
      no: "否",
      link: "連結",
      searcresult: "搜尋结果",
      selected: "選取的項目",
      about: "關於",
      shortcuts: "快捷鍵",
      help: "協助",
      webfm: "網路檔案總管",
      ver: "版本",
      protocolver: "協定版本",
      homepage: "首頁",
      docs: "文件",
      github: "在 Github 建立我們的分支",
      twitter: "在 Twitter 追蹤我們",
      facebook: "在 Facebook 加入我們",
      team: "團隊",
      chiefdev: "主要開發者",
      developer: "開發者",
      contributor: "貢獻者",
      maintainer: "維護者",
      translator: "翻譯者",
      icons: "圖示",
      dontforget: "别忘了帶上你擦汗的毛巾",
      shortcutsof: "快捷鍵已停用",
      dropFiles: "把檔案拖到此處",
      or: "或",
      selectForUpload: "選擇要上傳的檔案",
      moveFiles: "移動檔案",
      copyFiles: "複製檔案",
      restoreFiles: "恢復項目", // from v2.1.24 added 5.5.2017
      rmFromPlaces: '從"位置"中删除',
      aspectRatio: "保持比例",
      scale: "寬高比",
      width: "寬",
      height: "高",
      resize: "重新調整大小",
      crop: "裁切",
      rotate: "旋轉",
      "rotate-cw": "順時針旋轉90度",
      "rotate-ccw": "逆時針旋轉90度",
      degree: "度",
      netMountDialogTitle: "掛載網路磁碟", // added 18.04.2012
      protocol: "通訊協定", // added 18.04.2012
      host: "主機", // added 18.04.2012
      port: "連接埠", // added 18.04.2012
      user: "使用者", // added 18.04.2012
      pass: "密碼", // added 18.04.2012
      confirmUnmount: "確定要卸載 $1?", // from v2.1 added 30.04.2012
      dropFilesBrowser: "從瀏覽器拖放或貼上檔案", // from v2.1 added 30.05.2012
      dropPasteFiles: "拖放檔案或從剪貼簿貼上 URL 或圖片至此", // from v2.1 added 07.04.2014
      encoding: "編碼", // from v2.1 added 19.12.2014
      locale: "語系", // from v2.1 added 19.12.2014
      searchTarget: "目標: $1", // from v2.1 added 22.5.2015
      searchMime: "根據輸入的 MIME 類型搜尋", // from v2.1 added 22.5.2015
      owner: "擁有者", // from v2.1 added 20.6.2015
      group: "群組", // from v2.1 added 20.6.2015
      other: "其他", // from v2.1 added 20.6.2015
      execute: "執行", // from v2.1 added 20.6.2015
      perm: "權限", // from v2.1 added 20.6.2015
      mode: "模式", // from v2.1 added 20.6.2015
      emptyFolder: "資料夾是空的", // from v2.1.6 added 30.12.2015
      emptyFolderDrop: "資料夾是空的\\A 拖曳以增加項目", // from v2.1.6 added 30.12.2015
      emptyFolderLTap: "資料夾是空的\\A 長按以增加項目", // from v2.1.6 added 30.12.2015
      quality: "品質", // from v2.1.6 added 5.1.2016
      autoSync: "自動同步", // from v2.1.6 added 10.1.2016
      moveUp: "上移", // from v2.1.6 added 18.1.2016
      getLink: "取得 URL 連結", // from v2.1.7 added 9.2.2016
      selectedItems: "選取的項目 ($1)", // from v2.1.7 added 2.19.2016
      folderId: "資料夾 ID", // from v2.1.10 added 3.25.2016
      offlineAccess: "允許離線存取", // from v2.1.10 added 3.25.2016
      reAuth: "重新驗證權限", // from v2.1.10 added 3.25.2016
      nowLoading: "正在載入...", // from v2.1.12 added 4.26.2016
      openMulti: "開啟多個檔案", // from v2.1.12 added 5.14.2016
      openMultiConfirm: "確定要在瀏覽器開啟 $1 個檔案嗎?", // from v2.1.12 added 5.14.2016
      emptySearch: "在搜尋目標中的搜尋結果是空的.", // from v2.1.12 added 5.16.2016
      editingFile: "正在編輯檔案.", // from v2.1.13 added 6.3.2016
      hasSelected: "己選取 $1 個項目.", // from v2.1.13 added 6.3.2016
      hasClipboard: "剪貼簿裡有 $1 個項目.", // from v2.1.13 added 6.3.2016
      incSearchOnly: "增量搜尋只來自目前視圖.", // from v2.1.13 added 6.30.2016
      reinstate: "恢復原狀", // from v2.1.15 added 3.8.2016
      complete: "$1完成", // from v2.1.15 added 21.8.2016
      contextmenu: "情境選單", // from v2.1.15 added 9.9.2016
      pageTurning: "正在換頁", // from v2.1.15 added 10.9.2016
      volumeRoots: "磁碟根目錄", // from v2.1.16 added 16.9.2016
      reset: "重設", // from v2.1.16 added 1.10.2016
      bgcolor: "背景頻色", // from v2.1.16 added 1.10.2016
      colorPicker: "顏色選擇器", // from v2.1.16 added 1.10.2016
      "8pxgrid": "8px 網格", // from v2.1.16 added 4.10.2016
      enabled: "啟用", // from v2.1.16 added 4.10.2016
      disabled: "停用", // from v2.1.16 added 4.10.2016
      emptyIncSearch: "目前視圖的搜尋結果是空的.\\A按 [Enter] 擴大搜尋目標.", // from v2.1.16 added 5.10.2016
      emptyLetSearch: "目前視圖中的第一個字母的搜索結果是空的。", // from v2.1.23 added 24.3.2017
      textLabel: "文字標示", // from v2.1.17 added 13.10.2016
      minsLeft: "剩下 $1 分鐘", // from v2.1.17 added 13.11.2016
      openAsEncoding: "以選擇的編碼重新開啟", // from v2.1.19 added 2.12.2016
      saveAsEncoding: "以選擇的編碼儲存", // from v2.1.19 added 2.12.2016
      selectFolder: "選擇資料夾", // from v2.1.20 added 13.12.2016
      firstLetterSearch: "首字母搜索", // from v2.1.23 added 24.3.2017
      presets: "預置", // from v2.1.25 added 26.5.2017
      tooManyToTrash: "有太多項目,所以不能丟入垃圾桶。", // from v2.1.25 added 9.6.2017
      TextArea: "文字區域", // from v2.1.25 added 14.6.2017
      folderToEmpty: '$1" 資料夾是空的', // from v2.1.25 added 22.6.2017
      filderIsEmpty: '"$1" 資料夾中沒有任何項目', // from v2.1.25 added 22.6.2017
      preference: "偏好", // from v2.1.26 added 28.6.2017
      language: "語言設置", // from v2.1.26 added 28.6.2017
      clearBrowserData: "初始化保存在此瀏覽器中的設置", // from v2.1.26 added 28.6.2017
      toolbarPref: "工具欄設置", // from v2.1.27 added 2.8.2017
      charsLeft: "... 剩下 $1 個字元", // from v2.1.29 added 30.8.2017
      linesLeft: "... 剩下 $1 行", // from v2.1.52 added 16.1.2020
      sum: "總計", // from v2.1.29 added 28.9.2017
      roughFileSize: "粗略的檔案大小", // from v2.1.30 added 2.11.2017
      autoFocusDialog: "滑鼠懸停在對話框內", // from v2.1.30 added 2.11.2017
      select: "選擇", // from v2.1.30 added 23.11.2017
      selectAction: "選擇檔案時的動作", // from v2.1.30 added 23.11.2017
      useStoredEditor: "使用上次的編輯器開啟", // from v2.1.30 added 23.11.2017
      selectinvert: "反向選擇", // from v2.1.30 added 25.11.2017
      renameMultiple: "確定要重新命名 $1 為 $2 嗎?<br/>此動作無法恢復!", // from v2.1.31 added 4.12.2017
      batchRename: "批次重新命名", // from v2.1.31 added 8.12.2017
      plusNumber: "增加數量", // from v2.1.31 added 8.12.2017
      asPrefix: "新增前輟", // from v2.1.31 added 8.12.2017
      asSuffix: "新增後輟", // from v2.1.31 added 8.12.2017
      changeExtention: "變更範圍", // from v2.1.31 added 8.12.2017
      columnPref: " 列設置(列表檢視)", // from v2.1.32 added 6.2.2018
      reflectOnImmediate: "所有修改將立即套用到檔案.", // from v2.1.33 added 2.3.2018
      reflectOnUnmount: "所有修改在卸載之前不會有變化.", // from v2.1.33 added 2.3.2018
      unmountChildren: "安裝在該磁碟以下的磁碟也會卸載,你確定要卸載嗎?", // from v2.1.33 added 5.3.2018
      selectionInfo: "選擇資訊", // from v2.1.33 added 7.3.2018
      hashChecker: "顯示檔案雜湊算法", // from v2.1.33 added 10.3.2018
      infoItems: "檔案資訊(選擇資訊面板)", // from v2.1.38 added 28.3.2018
      pressAgainToExit: "再次點擊後退出", // from v2.1.38 added 1.4.2018
      toolbar: "工具列", // from v2.1.38 added 4.4.2018
      workspace: "工作區", // from v2.1.38 added 4.4.2018
      dialog: "對話框", // from v2.1.38 added 4.4.2018
      all: "全部", // from v2.1.38 added 4.4.2018
      iconSize: "圖示尺寸 (圖示顯示)", // from v2.1.39 added 7.5.2018
      editorMaximized: "開啟最大化編輯視窗", // from v2.1.40 added 30.6.2018
      editorConvNoApi: "由於使用 API 轉換功能目前無法使用,請到網站上轉換.", //from v2.1.40 added 8.7.2018
      editorConvNeedUpload:
        "轉換後,必須上傳檔案網址或一個下載的檔案,以保存轉換後的檔案.", //from v2.1.40 added 8.7.2018
      convertOn: "在 $1 網站上轉換", // from v2.1.40 added 10.7.2018
      integrations: "整合", // from v2.1.40 added 11.7.2018
      integrationWith:
        "elFinder 整合以下外部服務,使用前請先檢查使用條款、隱私權政策等.", // from v2.1.40 added 11.7.2018
      showHidden: "顯示已隱藏的項目", // from v2.1.41 added 24.7.2018
      hideHidden: "隱藏已隱藏的項目", // from v2.1.41 added 24.7.2018
      toggleHidden: "顯示/隱藏已隱藏的項目", // from v2.1.41 added 24.7.2018
      makefileTypes: '允許"新檔案"使用的檔案類型', // from v2.1.41 added 7.8.2018
      typeOfTextfile: "文字檔案類型", // from v2.1.41 added 7.8.2018
      add: "新增", // from v2.1.41 added 7.8.2018
      theme: "主題", // from v2.1.43 added 19.10.2018
      default: "預設", // from v2.1.43 added 19.10.2018
      description: "描述", // from v2.1.43 added 19.10.2018
      website: "網站", // from v2.1.43 added 19.10.2018
      author: "作者", // from v2.1.43 added 19.10.2018
      email: "信箱", // from v2.1.43 added 19.10.2018
      license: "許可證", // from v2.1.43 added 19.10.2018
      exportToSave: "檔案無法存檔,為避免遺失編輯資料,需要導出到你的電腦.", // from v2.1.44 added 1.12.2018
      dblclickToSelect: "連續點擊以選擇", // from v2.1.47 added 22.1.2019
      useFullscreen: "使用全螢幕模式", // from v2.1.47 added 19.2.2019

      /********************************** mimetypes **********************************/
      kindUnknown: "未知",
      kindRoot: "磁碟根目錄", // from v2.1.16 added 16.10.2016
      kindFolder: "資料夾",
      kindSelects: "選擇", // from v2.1.29 added 29.8.2017
      kindAlias: "别名",
      kindAliasBroken: "毀損的别名",
      // applications
      kindApp: "應用程式",
      kindPostscript: "Postscript 文件",
      kindMsOffice: "Microsoft Office 文件",
      kindMsWord: "Microsoft Word 文件",
      kindMsExcel: "Microsoft Excel 文件",
      kindMsPP: "Microsoft Powerpoint 簡報",
      kindOO: "Open Office 文件",
      kindAppFlash: "Flash 應用程式",
      kindPDF: "可攜式文件格式(PDF)",
      kindTorrent: "Bittorrent 檔案",
      kind7z: "7z 壓縮檔",
      kindTAR: "TAR 壓縮檔",
      kindGZIP: "GZIP 壓縮檔",
      kindBZIP: "BZIP 壓縮檔",
      kindXZ: "XZ 壓縮檔",
      kindZIP: "ZIP 壓縮檔",
      kindRAR: "RAR 壓縮檔",
      kindJAR: "Java JAR 檔案",
      kindTTF: "True Type 字體",
      kindOTF: "Open Type 字體",
      kindRPM: "RPM 封裝檔",
      // texts
      kindText: "文字檔案",
      kindTextPlain: "純文字",
      kindPHP: "PHP 原始碼",
      kindCSS: "階層樣式表(CSS)",
      kindHTML: "HTML 文件",
      kindJS: "Javascript 原始碼",
      kindRTF: "富文本(RTF)",
      kindC: "C 原始碼",
      kindCHeader: "C 標頭原始碼",
      kindCPP: "C++ 原始碼",
      kindCPPHeader: "C++ 標頭原始碼",
      kindShell: "Unix Shell 脚本",
      kindPython: "Python 原始碼",
      kindJava: "Java 原始碼",
      kindRuby: "Ruby 原始碼",
      kindPerl: "Perl 原始碼",
      kindSQL: "SQL 原始碼",
      kindXML: "XML 文件",
      kindAWK: "AWK 原始碼",
      kindCSV: "逗號分隔值(CSV)",
      kindDOCBOOK: "Docbook XML 文件",
      kindMarkdown: "Markdown 文本", // added 20.7.2015
      // images
      kindImage: "圖片",
      kindBMP: "BMP 圖片",
      kindJPEG: "JPEG 圖片",
      kindGIF: "GIF 圖片",
      kindPNG: "PNG 圖片",
      kindTIFF: "TIFF 圖片",
      kindTGA: "TGA 圖片",
      kindPSD: "Adobe Photoshop 圖片",
      kindXBITMAP: "X bitmap 圖片",
      kindPXM: "Pixelmator 圖片",
      // media
      kindAudio: "音訊",
      kindAudioMPEG: "MPEG 音訊",
      kindAudioMPEG4: "MPEG-4 音訊",
      kindAudioMIDI: "MIDI 音訊",
      kindAudioOGG: "Ogg Vorbis 音訊",
      kindAudioWAV: "WAV 音訊",
      AudioPlaylist: "MP3 播放清單",
      kindVideo: "影片",
      kindVideoDV: "DV 影片",
      kindVideoMPEG: "MPEG 影片",
      kindVideoMPEG4: "MPEG-4 影片",
      kindVideoAVI: "AVI 影片",
      kindVideoMOV: "Quick Time 影片",
      kindVideoWM: "Windows Media 影片",
      kindVideoFlash: "Flash 影片",
      kindVideoMKV: "Matroska 影片",
      kindVideoOGG: "Ogg 影片"
    }
  };
});
lib/js/i18n/elfinder.ru.js000064400000123414147361034410011270 0ustar00/**
 * Русский язык translation
 * @author Dmitry "dio" Levashov <dio@std42.ru>
 * @author Andrew Berezovsky <andrew.berezovsky@gmail.com>
 * @author Alex Yashkin <alex@yashkin.by>
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ru = {
		translator : 'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;, Andrew Berezovsky &lt;andrew.berezovsky@gmail.com&gt;, Alex Yashkin &lt;alex@yashkin.by&gt;',
		language   : 'Русский язык',
		direction  : 'ltr',
		dateFormat : 'd M Y H:i', // will show like: 03 Мар 2022 11:22
		fancyDateFormat : '$1 H:i', // will show like: Сегодня 11:22
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-112216
		messages   : {
			'getShareText' : 'Делиться',
			'Editor ': 'Редактор кода',

			/********************************** errors **********************************/
			'error'                : 'Ошибка',
			'errUnknown'           : 'Неизвестная ошибка.',
			'errUnknownCmd'        : 'Неизвестная команда.',
			'errJqui'              : 'Отсутствуют необходимые компоненты jQuery UI - selectable, draggable и droppable.',
			'errNode'              : 'Отсутствует DOM элемент для инициализации elFinder.',
			'errURL'               : 'Неверная конфигурация elFinder! Не указан URL.',
			'errAccess'            : 'Доступ запрещен.',
			'errConnect'           : 'Не удалось соединиться с сервером.',
			'errAbort'             : 'Соединение прервано.',
			'errTimeout'           : 'Таймаут соединения.',
			'errNotFound'          : 'Сервер не найден.',
			'errResponse'          : 'Некорректный ответ сервера.',
			'errConf'              : 'Некорректная настройка сервера.',
			'errJSON'              : 'Модуль PHP JSON не установлен.',
			'errNoVolumes'         : 'Отсутствуют корневые директории достуные для чтения.',
			'errCmdParams'         : 'Некорректные параметры команды "$1".',
			'errDataNotJSON'       : 'Данные не в формате JSON.',
			'errDataEmpty'         : 'Данные отсутствуют.',
			'errCmdReq'            : 'Для запроса к серверу необходимо указать имя команды.',
			'errOpen'              : 'Не удалось открыть "$1".',
			'errNotFolder'         : 'Объект не является папкой.',
			'errNotFile'           : 'Объект не является файлом.',
			'errRead'              : 'Ошибка чтения "$1".',
			'errWrite'             : 'Ошибка записи в "$1".',
			'errPerm'              : 'Доступ запрещен.',
			'errLocked'            : '"$1" защищен и не может быть переименован, перемещен или удален.',
			'errExists'            : 'В папке уже существует файл с именем "$1".',
			'errInvName'           : 'Недопустимое имя файла.',
			'errInvDirname'        : 'Недопустимое имя папки.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Папка не найдена.',
			'errFileNotFound'      : 'Файл не найден.',
			'errTrgFolderNotFound' : 'Целевая папка "$1" не найдена.',
			'errPopup'             : 'Браузер заблокировал открытие нового окна. Чтобы открыть файл, измените настройки браузера.',
			'errMkdir'             : 'Ошибка создания папки "$1".',
			'errMkfile'            : 'Ошибка создания файла "$1".',
			'errRename'            : 'Ошибка переименования "$1".',
			'errCopyFrom'          : 'Копирование файлов из директории "$1" запрещено.',
			'errCopyTo'            : 'Копирование файлов в директорию "$1" запрещено.',
			'errMkOutLink'         : 'Невозможно создать ссылку вне корня раздела.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Ошибка загрузки.',  // old name - errUploadCommon
			'errUploadFile'        : 'Невозможно загрузить "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Нет файлов для загрузки.',
			'errUploadTotalSize'   : 'Превышен допустимый размер загружаемых данных.', // old name - errMaxSize
			'errUploadFileSize'    : 'Размер файла превышает допустимый.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Недопустимый тип файла.',
			'errUploadTransfer'    : 'Ошибка передачи файла "$1".',
			'errUploadTemp'        : 'Невозможно создать временный файл для загрузки.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Объект "$1" по этому адресу уже существует и не может быть заменен объектом другого типа.', // new
			'errReplace'           : 'Невозможно заменить "$1".',
			'errSave'              : 'Невозможно сохранить "$1".',
			'errCopy'              : 'Невозможно скопировать "$1".',
			'errMove'              : 'Невозможно переместить "$1".',
			'errCopyInItself'      : 'Невозможно скопировать "$1" в самого себя.',
			'errRm'                : 'Невозможно удалить "$1".',
			'errTrash'             : 'Невозможно переместить в корзину.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Невозможно удалить файлы источника.',
			'errExtract'           : 'Невозможно извлечь фалы из "$1".',
			'errArchive'           : 'Невозможно создать архив.',
			'errArcType'           : 'Неподдерживаемый тип архива.',
			'errNoArchive'         : 'Файл не является архивом или неподдерживаемый тип архива.',
			'errCmdNoSupport'      : 'Сервер не поддерживает эту команду.',
			'errReplByChild'       : 'Невозможно заменить папку "$1" содержащимся в ней объектом.',
			'errArcSymlinks'       : 'По соображениям безопасности запрещена распаковка архивов, содержащих ссылки (symlinks) или файлы с недопустимыми именами.', // edited 24.06.2012
			'errArcMaxSize'        : 'Размер файлов в архиве превышает максимально разрешенный.',
			'errResize'            : 'Не удалось изменить размер "$1".',
			'errResizeDegree'      : 'Некорректный градус поворота.',  // added 7.3.2013
			'errResizeRotate'      : 'Невозможно повернуть изображение.',  // added 7.3.2013
			'errResizeSize'        : 'Некорректный размер изображения.',  // added 7.3.2013
			'errResizeNoChange'    : 'Размер изображения не изменился.',  // added 7.3.2013
			'errUsupportType'      : 'Неподдерживаемый тип файла.',
			'errNotUTF8Content'    : 'Файл "$1" содержит текст в кодировке отличной от UTF-8 и не может быть отредактирован.',  // added 9.11.2011
			'errNetMount'          : 'Невозможно подключить "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Неподдерживаемый протокол.',     // added 17.04.2012
			'errNetMountFailed'    : 'Ошибка монтирования.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Требуется указать хост.', // added 18.04.2012
			'errSessionExpires'    : 'Сессия была завершена так как превышено время отсутствия активности.',
			'errCreatingTempDir'   : 'Невозможно создать временную директорию: "$1"',
			'errFtpDownloadFile'   : 'Невозможно скачать файл с FTP: "$1"',
			'errFtpUploadFile'     : 'Невозможно загрузить файл на FTP: "$1"',
			'errFtpMkdir'          : 'Невозможно создать директорию на FTP: "$1"',
			'errArchiveExec'       : 'Ошибка при выполнении архивации: "$1"',
			'errExtractExec'       : 'Ошибка при выполнении распаковки: "$1"',
			'errNetUnMount'        : 'Невозможно отключить', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Не конвертируется в UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Если вы хотите загружать папки, попробуйте Google Chrome.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Превышено время ожидания при поиске "$1". Результаты поиска частичные.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Требуется повторная авторизация.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Максимальное число выбираемых файлов: $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Невозможно восстановить из корзины. Не удалось определить путь для восстановления.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Не найден редактор для этого типа файлов.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Возникла ошибка на стороне сервера.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Невозможно очистить папку "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Еще ошибок: $1', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Вы можете создать до $1 папки одновременно.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Создать архив',
			'cmdback'      : 'Назад',
			'cmdcopy'      : 'Копировать',
			'cmdcut'       : 'Вырезать',
			'cmddownload'  : 'Скачать',
			'cmdduplicate' : 'Сделать копию',
			'cmdedit'      : 'Редактировать файл',
			'cmdextract'   : 'Распаковать архив',
			'cmdforward'   : 'Вперед',
			'cmdgetfile'   : 'Выбрать файлы',
			'cmdhelp'      : 'О программе',
			'cmdhome'      : 'Домой',
			'cmdinfo'      : 'Свойства',
			'cmdmkdir'     : 'Новая папка',
			'cmdmkdirin'   : 'В новую папку', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Новый файл',
			'cmdopen'      : 'Открыть',
			'cmdpaste'     : 'Вставить',
			'cmdquicklook' : 'Быстрый просмотр',
			'cmdreload'    : 'Обновить',
			'cmdrename'    : 'Переименовать',
			'cmdrm'        : 'Удалить',
			'cmdtrash'     : 'Переместить в корзину', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Восстановить', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Поиск файлов',
			'cmdup'        : 'Наверх',
			'cmdupload'    : 'Загрузить файлы',
			'cmdview'      : 'Вид',
			'cmdresize'    : 'Изменить размер и повернуть',
			'cmdsort'      : 'Сортировать',
			'cmdnetmount'  : 'Подключить сетевой раздел', // added 18.04.2012
			'cmdnetunmount': 'Отключить', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'В избранное', // added 28.12.2014
			'cmdchmod'     : 'Изменить права доступа', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Открыть папку', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Сбросить ширину колонок', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Полный экран', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Переместить', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Очистить папку', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Отменить', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Вернуть', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Предпочтения', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Выбрать все', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Отменить выбор', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Инвертировать выбор', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Открыть в новом окне', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Скрыть (персонально)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Закрыть',
			'btnSave'   : 'Сохранить',
			'btnRm'     : 'Удалить',
			'btnApply'  : 'Применить',
			'btnCancel' : 'Отмена',
			'btnNo'     : 'Нет',
			'btnYes'    : 'Да',
			'btnMount'  : 'Подключить',  // added 18.04.2012
			'btnApprove': 'Перейти в $1 и применить', // from v2.1 added 26.04.2012
			'btnUnmount': 'Отключить', // from v2.1 added 30.04.2012
			'btnConv'   : 'Конвертировать', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Здесь',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Раздел',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Все',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME тип', // from v2.1 added 22.5.2015
			'btnFileName':'Имя файла',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Сохранить и закрыть', // from v2.1 added 12.6.2015
			'btnBackup' : 'Резервная копия', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Переименовать',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Переименовать (все)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Пред. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'След. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Сохранить как', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Открыть папку',
			'ntffile'     : 'Открыть файл',
			'ntfreload'   : 'Обновить текущую папку',
			'ntfmkdir'    : 'Создание папки',
			'ntfmkfile'   : 'Создание файлов',
			'ntfrm'       : 'Удалить файлы',
			'ntfcopy'     : 'Скопировать файлы',
			'ntfmove'     : 'Переместить файлы',
			'ntfprepare'  : 'Подготовка к копированию файлов',
			'ntfrename'   : 'Переименовать файлы',
			'ntfupload'   : 'Загрузка файлов',
			'ntfdownload' : 'Скачивание файлов',
			'ntfsave'     : 'Сохранить файлы',
			'ntfarchive'  : 'Создание архива',
			'ntfextract'  : 'Распаковка архива',
			'ntfsearch'   : 'Поиск файлов',
			'ntfresize'   : 'Изменение размеров изображений',
			'ntfsmth'     : 'Занят важным делом',
			'ntfloadimg'  : 'Загрузка изображения',
			'ntfnetmount' : 'Подключение сетевого диска', // added 18.04.2012
			'ntfnetunmount': 'Отключение сетевого диска', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Получение размеров изображения', // added 20.05.2013
			'ntfreaddir'  : 'Чтение информации о папке', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Получение URL ссылки', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Изменение прав доступа к файлу', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Проверка измени загруженного файла', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Создание файла для скачки', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Получение информации о пути', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Обработка загруженного файла', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Перемещение в корзину', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Восстановление из корзины', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Проверка папки назначения', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Отмена предыдущей операции', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Восстановление предыдущей операции', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Проверка содержимого', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Корзина', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'неизвестно',
			'Today'       : 'Сегодня',
			'Yesterday'   : 'Вчера',
			'msJan'       : 'Янв',
			'msFeb'       : 'Фев',
			'msMar'       : 'Мар',
			'msApr'       : 'Апр',
			'msMay'       : 'Май',
			'msJun'       : 'Июн',
			'msJul'       : 'Июл',
			'msAug'       : 'Авг',
			'msSep'       : 'Сен',
			'msOct'       : 'Окт',
			'msNov'       : 'Ноя',
			'msDec'       : 'Дек',
			'January'     : 'Январь',
			'February'    : 'Февраль',
			'March'       : 'Март',
			'April'       : 'Апрель',
			'May'         : 'Май',
			'June'        : 'Июнь',
			'July'        : 'Июль',
			'August'      : 'Август',
			'September'   : 'Сентябрь',
			'October'     : 'Октябрь',
			'November'    : 'Ноябрь',
			'December'    : 'Декабрь',
			'Sunday'      : 'Воскресенье',
			'Monday'      : 'Понедельник',
			'Tuesday'     : 'Вторник',
			'Wednesday'   : 'Среда',
			'Thursday'    : 'Четверг',
			'Friday'      : 'Пятница',
			'Saturday'    : 'Суббота',
			'Sun'         : 'Вск',
			'Mon'         : 'Пнд',
			'Tue'         : 'Втр',
			'Wed'         : 'Срд',
			'Thu'         : 'Чтв',
			'Fri'         : 'Птн',
			'Sat'         : 'Сбт',

			/******************************** sort variants ********************************/
			'sortname'          : 'по имени',
			'sortkind'          : 'по типу',
			'sortsize'          : 'по размеру',
			'sortdate'          : 'по дате',
			'sortFoldersFirst'  : 'Папки в начале',
			'sortperm'          : 'по разрешениям', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'по режиму',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'по владельцу',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'по группе',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Также и дерево каталогов',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'НовыйФайл.txt', // added 10.11.2015
			'untitled folder'   : 'НоваяПапка',   // added 10.11.2015
			'Archive'           : 'НовыйАрхив',  // from v2.1 added 10.11.2015
			'untitled file'     : 'НовыйФайл.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 Файл',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Необходимо подтверждение',
			'confirmRm'       : 'Вы уверены, что хотите удалить файлы?<br>Действие необратимо!',
			'confirmRepl'     : 'Заменить старый файл новым?',
			'confirmRest'     : 'Заменить существующий файл файлом из корзины?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Не UTF-8<br/>Сконвертировать в UTF-8?<br/>Данные станут UTF-8 при сохранении после конвертации.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Невозможно определить кодировку файла. Необходима предварительная конвертация файла в UTF-8 для дальнейшего редактирования.<br/>Выберите кодировку файла.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Произошли изменения.<br/>Если не сохраните изменения, то потеряете их.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Вы уверены, что хотите переместить файлы в корзину?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Вы уверены, что хотите переместить файлы в "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Применить для всех',
			'name'            : 'Имя',
			'size'            : 'Размер',
			'perms'           : 'Доступ',
			'modify'          : 'Изменен',
			'kind'            : 'Тип',
			'read'            : 'чтение',
			'write'           : 'запись',
			'noaccess'        : 'нет доступа',
			'and'             : 'и',
			'unknown'         : 'неизвестно',
			'selectall'       : 'Выбрать все файлы',
			'selectfiles'     : 'Выбрать файл(ы)',
			'selectffile'     : 'Выбрать первый файл',
			'selectlfile'     : 'Выбрать последний файл',
			'viewlist'        : 'В виде списка',
			'viewicons'       : 'В виде иконок',
			'viewSmall'       : 'Маленькие иконки', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Средние иконки', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Большие иконки', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Очень большие иконки', // from v2.1.39 added 22.5.2018
			'places'          : 'Избранное',
			'calc'            : 'Вычислить',
			'path'            : 'Путь',
			'aliasfor'        : 'Указывает на',
			'locked'          : 'Защита',
			'dim'             : 'Размеры',
			'files'           : 'Файлы',
			'folders'         : 'Папки',
			'items'           : 'Объекты',
			'yes'             : 'да',
			'no'              : 'нет',
			'link'            : 'Ссылка',
			'searcresult'     : 'Результаты поиска',
			'selected'        : 'выбрано',
			'about'           : 'О программе',
			'shortcuts'       : 'Горячие клавиши',
			'help'            : 'Помощь',
			'webfm'           : 'Файловый менеджер для Web',
			'ver'             : 'Версия',
			'protocolver'     : 'версия протокола',
			'homepage'        : 'Сайт проекта',
			'docs'            : 'Документация',
			'github'          : 'Форкните на GitHub',
			'twitter'         : 'Следите в Twitter',
			'facebook'        : 'Присоединяйтесь на Facebook',
			'team'            : 'Команда',
			'chiefdev'        : 'ведущий разработчик',
			'developer'       : 'разработчик',
			'contributor'     : 'участник',
			'maintainer'      : 'сопровождение проекта',
			'translator'      : 'переводчик',
			'icons'           : 'Иконки',
			'dontforget'      : 'и не забудьте взять своё полотенце',
			'shortcutsof'     : 'Горячие клавиши отключены',
			'dropFiles'       : 'Перетащите файлы сюда',
			'or'              : 'или',
			'selectForUpload' : 'Выбрать файлы для загрузки',
			'moveFiles'       : 'Переместить файлы',
			'copyFiles'       : 'Скопировать файлы',
			'restoreFiles'    : 'Восстановить файлы', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Удалить из избранного',
			'aspectRatio'     : 'Соотношение сторон',
			'scale'           : 'Масштаб',
			'width'           : 'Ширина',
			'height'          : 'Высота',
			'resize'          : 'Изменить размер',
			'crop'            : 'Обрезать',
			'rotate'          : 'Повернуть',
			'rotate-cw'       : 'Повернуть на 90 градусов по часовой стрелке',
			'rotate-ccw'      : 'Повернуть на 90 градусов против часовой стрелке',
			'degree'          : '°',
			'netMountDialogTitle' : 'Подключить сетевой диск', // added 18.04.2012
			'protocol'            : 'Протокол', // added 18.04.2012
			'host'                : 'Хост', // added 18.04.2012
			'port'                : 'Порт', // added 18.04.2012
			'user'                : 'Пользователь', // added 18.04.2012
			'pass'                : 'Пароль', // added 18.04.2012
			'confirmUnmount'      : 'Вы хотите отключить $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Перетащите или вставьте файлы из браузера', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Перетащите или вставьте файлы и ссылки сюда', // from v2.1 added 07.04.2014
			'encoding'        : 'Кодировка', // from v2.1 added 19.12.2014
			'locale'          : 'Локаль',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Цель: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Поиск по введенному MIME типу', // from v2.1 added 22.5.2015
			'owner'           : 'Владелец', // from v2.1 added 20.6.2015
			'group'           : 'Группа', // from v2.1 added 20.6.2015
			'other'           : 'Остальные', // from v2.1 added 20.6.2015
			'execute'         : 'Исполнить', // from v2.1 added 20.6.2015
			'perm'            : 'Разрешение', // from v2.1 added 20.6.2015
			'mode'            : 'Режим', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Папка пуста', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Папка пуста\\A Перетащите чтобы добавить', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Папка пуста\\A Долгое нажатие чтобы добавить', // from v2.1.6 added 30.12.2015
			'quality'         : 'Качество', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Авто синхронизация',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Передвинуть вверх',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Получить URL ссылку', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Выбранные объекты ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID папки', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Позволить автономный доступ', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Авторизоваться повторно', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Загружается...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Открыть несколько файлов', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Вы пытаетесь открыть $1 файл(а/ов). Вы уверены, что хотите открыть их в браузере?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Ничего не найдено', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Это редактируемый файл.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Вы выбрали $1 файл(-ов).', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'У вас $1 файл(-ов) в буфере обмена.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Инкрементный поиск возможен только из текущего вида.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Восстановить', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 завершен', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Контекстное меню', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Переключение страницы', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Корни томов', // from v2.1.16 added 16.9.2016
			'reset'           : 'Сбросить', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Фоновый цвет', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Выбор цвета', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px сетка', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Включено', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Отключено', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Ничего не найдено в текущем виде.\\AНажмите [Enter] для развертывания цели поиска.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Поиск по первому символу не дал результатов в текущем виде.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Текстовая метка', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 минут осталось', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Переоткрыть с выбранной кодировкой', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Сохранить с выбранной кодировкой', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Выбрать папку', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Поиск по первому символу', // from v2.1.23 added 24.3.2017
			'presets'         : 'Пресеты', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Слишком много файлов для перемещения в корзину.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Текстовая область', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Очистить папку "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Нет файлов в паке "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Настройки', // from v2.1.26 added 28.6.2017
			'language'        : 'Язык', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Сбросить настройки для этого браузера', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Настройки панели', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... еще символов: $1.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... еще строк: $1.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Общий размер', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Приблизительный размер файла', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Фокус на элементе диалога при наведении мыши',  // from v2.1.30 added 2.11.2017
			'select'          : 'Выбрать', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Действие при выборе файла', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Открывать в редакторе, выбранном в прошлый раз', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Выбрать элементы с инвертированием', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Переименовать выбранные элементы ($1 шт.) в $2?<br/>Действие нельзя отменить!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Групповое переименование', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Число', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Добавить префикс', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Добавить суффикс', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Изменить расширение', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Настройки колонок (для просмотра в виде списка)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Все изменения будут немедленно отражены в архиве.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Изменения не вступят в силу до тех пор, пока вы не размонтируете этот том.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Тома, смонтированные на этом томе, также будут размонтированы. Вы хотите отключить его?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Свойства', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Алгоритмы для отображения хеш-сумм файлов', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Элементы в панели свойств', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Нажмите снова для выхода.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Панель', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Рабочая область', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Диалог', // from v2.1.38 added 4.4.2018
			'all'             : 'Все', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Размер иконок (В виде иконок)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Открывать редактор в развернутом виде', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Так как конвертация с помощью API недоступно, произведите конвертацию на веб-сайте.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'После конвертации вы должны загрузить скачанный файл, чтобы сохранить его.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Конвертировать на сайте $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Интеграции', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Менеджер elFinder интегрирован со следующими внешними сервисами. Ознакомьтесь с правилами пользования, политиками безопасности и др. перед их использованием.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Показать скрытые элементы', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Скрыть скрытые элементы', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Показать/скрыть скрытые элементы', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Типы файлов в меню "Новый файл"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Тип текстового файла', // from v2.1.41 added 7.8.2018
			'add'             : 'Добавить', // from v2.1.41 added 7.8.2018
			'theme'           : 'Тема', // from v2.1.43 added 19.10.2018
			'default'         : 'По умолчанию', // from v2.1.43 added 19.10.2018
			'description'     : 'Описание', // from v2.1.43 added 19.10.2018
			'website'         : 'Веб-сайт', // from v2.1.43 added 19.10.2018
			'author'          : 'Автор', // from v2.1.43 added 19.10.2018
			'email'           : 'Эл. адрес', // from v2.1.43 added 19.10.2018
			'license'         : 'Лицензия', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Невозможно сохранить файл. Чтобы не потерять изменения, экспортируйте их на свой ПК.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Двойной клик по файлу для его выбора.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Использовать полноэкранный режим', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Неизвестный',
			'kindRoot'        : 'Корень тома', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Папка',
			'kindSelects'     : 'Выбор', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Ссылка',
			'kindAliasBroken' : 'Битая ссылка',
			// applications
			'kindApp'         : 'Приложение',
			'kindPostscript'  : 'Документ Postscript',
			'kindMsOffice'    : 'Документ Microsoft Office',
			'kindMsWord'      : 'Документ Microsoft Word',
			'kindMsExcel'     : 'Документ Microsoft Excel',
			'kindMsPP'        : 'Презентация Microsoft Powerpoint',
			'kindOO'          : 'Документ Open Office',
			'kindAppFlash'    : 'Приложение Flash',
			'kindPDF'         : 'Документ PDF',
			'kindTorrent'     : 'Файл Bittorrent',
			'kind7z'          : 'Архив 7z',
			'kindTAR'         : 'Архив TAR',
			'kindGZIP'        : 'Архив GZIP',
			'kindBZIP'        : 'Архив BZIP',
			'kindXZ'          : 'Архив XZ',
			'kindZIP'         : 'Архив ZIP',
			'kindRAR'         : 'Архив RAR',
			'kindJAR'         : 'Файл Java JAR',
			'kindTTF'         : 'Шрифт True Type',
			'kindOTF'         : 'Шрифт Open Type',
			'kindRPM'         : 'Пакет RPM',
			// texts
			'kindText'        : 'Текстовый документ',
			'kindTextPlain'   : 'Простой текст',
			'kindPHP'         : 'Исходник PHP',
			'kindCSS'         : 'Таблицы стилей CSS',
			'kindHTML'        : 'Документ HTML',
			'kindJS'          : 'Исходник Javascript',
			'kindRTF'         : 'Расширенный текстовый формат',
			'kindC'           : 'Исходник C',
			'kindCHeader'     : 'Заголовочный файл C',
			'kindCPP'         : 'Исходник C++',
			'kindCPPHeader'   : 'Заголовочный файл C++',
			'kindShell'       : 'Скрипт Unix shell',
			'kindPython'      : 'Исходник Python',
			'kindJava'        : 'Исходник Java',
			'kindRuby'        : 'Исходник Ruby',
			'kindPerl'        : 'Исходник Perl',
			'kindSQL'         : 'Исходник SQL',
			'kindXML'         : 'Документ XML',
			'kindAWK'         : 'Исходник AWK',
			'kindCSV'         : 'Текст с разделителями',
			'kindDOCBOOK'     : 'Документ Docbook XML',
			'kindMarkdown'    : 'Текст Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Изображение',
			'kindBMP'         : 'Изображение BMP',
			'kindJPEG'        : 'Изображение JPEG',
			'kindGIF'         : 'Изображение GIF',
			'kindPNG'         : 'Изображение PNG',
			'kindTIFF'        : 'Изображение TIFF',
			'kindTGA'         : 'Изображение TGA',
			'kindPSD'         : 'Изображение Adobe Photoshop',
			'kindXBITMAP'     : 'Изображение X bitmap',
			'kindPXM'         : 'Изображение Pixelmator',
			// media
			'kindAudio'       : 'Аудио файл',
			'kindAudioMPEG'   : 'Аудио MPEG',
			'kindAudioMPEG4'  : 'Аудио MPEG-4',
			'kindAudioMIDI'   : 'Аудио MIDI',
			'kindAudioOGG'    : 'Аудио Ogg Vorbis',
			'kindAudioWAV'    : 'Аудио WAV',
			'AudioPlaylist'   : 'Плейлист MP3',
			'kindVideo'       : 'Видео файл',
			'kindVideoDV'     : 'Видео DV',
			'kindVideoMPEG'   : 'Видео MPEG',
			'kindVideoMPEG4'  : 'Видео MPEG-4',
			'kindVideoAVI'    : 'Видео AVI',
			'kindVideoMOV'    : 'Видео Quick Time',
			'kindVideoWM'     : 'Видео Windows Media',
			'kindVideoFlash'  : 'Видео Flash',
			'kindVideoMKV'    : 'Видео Matroska',
			'kindVideoOGG'    : 'Видео Ogg'
		}
	};
}));

lib/js/i18n/elfinder.ar.js000064400000116054147361034410011246 0ustar00/**
 * Arabic translation
 * @author Khamis Alqutob <alqutob@outlook.com>
 * @author Tawfek Daghistani <tawfekov@gmail.com>
 * @author Atef Ben Ali <atef.bettaib@gmail.com>
 * @version 2022-02-25
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ar = {
		translator : 'Khamis Alqutob &lt;alqutob@outlook.com&gt;, Tawfek Daghistani &lt;tawfekov@gmail.com&gt;, Atef Ben Ali &lt;atef.bettaib@gmail.com&gt;',
		language   : 'Arabic',
		direction  : 'rtl',
		dateFormat : 'M d, Y h:i A', // will show like: شباط 25, 2022 06:20 PM
		fancyDateFormat : '$1 h:i A', // will show like: اليوم 06:20 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220225-182023
		messages   : {
			'getShareText' : 'يشارك',
			'Editor ': 'محرر الكود',
			/********************************** errors **********************************/
			'error'                : 'خطأ',
			'errUnknown'           : 'خطأ غير معروف .',
			'errUnknownCmd'        : 'أمر غير معروف .',
			'errJqui'              : 'تكوين jQuery UI غير صالح. يجب تضمين المكونات القابلة للتحديد والقابلة للسحب والإفلات',
			'errNode'              : 'يتطلب elFinder إنشاء عنصر DOM.',
			'errURL'               : 'تكوين elFinder غير صالح ! لم يتم تعيين خيار رابط URL',
			'errAccess'            : 'الوصول مرفوض .',
			'errConnect'           : 'تعذر الاتصال مع خادم الخلفية',
			'errAbort'             : 'تم فصل الإتصال',
			'errTimeout'           : 'نفذ وقت الاتصال.',
			'errNotFound'          : 'الخادوم الخلفي غير موجود .',
			'errResponse'          : 'رد غير مقبول من الخادوم الخلفي',
			'errConf'              : 'خطأ في الإعدادات الخاصة بالخادوم الخلفي ',
			'errJSON'              : 'موديول PHP JSON module غير مثبت ',
			'errNoVolumes'         : 'الأحجام المقروءة غير متوفرة',
			'errCmdParams'         : 'معلمات غير صالحة للأمر "$1".',
			'errDataNotJSON'       : 'البيانات ليست من نوع JSON ',
			'errDataEmpty'         : 'البيانات فارغة',
			'errCmdReq'            : 'الخادوم الخلفي يتطلب اسم الأمر ',
			'errOpen'              : 'غير قادر على فتح  "$1".',
			'errNotFolder'         : 'العنصر ليس مجلد',
			'errNotFile'           : 'العنصر ليس ملف',
			'errRead'              : 'غير قادر على قراءة "$1".',
			'errWrite'             : 'غير قادر على الكتابة في "$1".',
			'errPerm'              : 'وصول مرفوض ',
			'errLocked'            : '"$1" مقفل ولا يمكن إعادة تسميته أو نقله أو إزالته.',
			'errExists'            : 'العنصر الذي يحمل الاسم "$1" موجود مسبقاً.',
			'errInvName'           : 'اسم الملف غير صالح',
			'errInvDirname'        : 'اسم مجلد غير صالح',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'المجلد غير موجود',
			'errFileNotFound'      : 'الملف غير موجود',
			'errTrgFolderNotFound' : 'المجلد الهدف  "$1" غير موجود ',
			'errPopup'             : 'المتصفح منع من فتح نافذة منبثقة. لفتح ملف ، قم بتمكينه في خيارات المتصفح',
			'errMkdir'             : ' غير قادر على إنشاء مجلد "$1".',
			'errMkfile'            : ' غير قادر على إنشاء ملف "$1".',
			'errRename'            : 'غير قادر على إعادة تسمية  "$1".',
			'errCopyFrom'          : 'نسخ الملفات من الدليل "$1" غير مسموح.',
			'errCopyTo'            : 'نسخ الملفات إلى الدليل "$1" غير مسموح .',
			'errMkOutLink'         : 'تعذر إنشاء رابط إلى خارج جذر الدليل.', // from v2.1 added 03.10.2015
			'errUpload'            : 'خطأ في عملية الرفع.',  // old name - errUploadCommon
			'errUploadFile'        : 'غير قادر على رفع "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'لم يتم العثور على ملفات للتحميل .',
			'errUploadTotalSize'   : 'البيانات تتجاوز الحد الأقصى للحجم المسموح به.', // old name - errMaxSize
			'errUploadFileSize'    : 'تجاوز الملف الحد الأقصى للحجم المسموح به.', //  old name - errFileMaxSize
			'errUploadMime'        : 'نوع الملف غير مسموح به.',
			'errUploadTransfer'    : '"$1" خطأ نقل.',
			'errUploadTemp'        : 'تعذر إنشاء ملف مؤقت للتحميل .', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'الكائن "$1" موجود بالفعل في هذا الموقع ولا يمكن استبداله بكائن بنوع آخر.', // new
			'errReplace'           : 'غير قادر على استبدال "$1".',
			'errSave'              : 'غير قادر على حفظ "$1".',
			'errCopy'              : 'غير قادر على نسخ "$1".',
			'errMove'              : 'غير قادر على نقل "$1".',
			'errCopyInItself'      : 'غير قادر على نسخ "$1" داخل نفسه.',
			'errRm'                : 'غير قادر على إزالة "$1".',
			'errTrash'             : 'غير قادر في سلة المهملات', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'تعذر إزالة ملف (ملفات) المصدر.',
			'errExtract'           : 'غير قادر على استخراج الملفات من "$1".',
			'errArchive'           : 'غير قادر على إنشاء ملف مضغوط.',
			'errArcType'           : 'نوع الملف المضغوط غير مدعوم.',
			'errNoArchive'         : 'هذا الملف ليس ملف مضغوط أو ذو صيغة غير مدعومة.',
			'errCmdNoSupport'      : 'الخادوم الخلفي لا يدعم هذا الأمر ',
			'errReplByChild'       : 'لا يمكن استبدال المجلد "$1" بعنصر محتوِ فيه.',
			'errArcSymlinks'       : 'لأسباب أمنية ، تم رفض فك ضغط الأرشيفات التي تحتوي على روابط رمزية أو ملفات بأسماء غير مسموح بها.', // edited 24.06.2012
			'errArcMaxSize'        : 'تتجاوز ملفات الأرشيف الحجم الأقصى المسموح به.',
			'errResize'            : 'تعذر تغيير حجم "$1".',
			'errResizeDegree'      : 'درجة تدوير غير صالحة.',  // added 7.3.2013
			'errResizeRotate'      : 'تعذر تدوير الصورة.',  // added 7.3.2013
			'errResizeSize'        : 'حجم الصورة غير صالح.',  // added 7.3.2013
			'errResizeNoChange'    : 'حجم الصورة لم يتغير.',  // added 7.3.2013
			'errUsupportType'      : 'نوع ملف غير مدعوم.',
			'errNotUTF8Content'    : 'الملف "$1" ليس بتنسيق UTF-8 ولا يمكن تحريره.',  // added 9.11.2011
			'errNetMount'          : 'غير قادر على التثبيت "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'بروتوكول غير مدعوم.',     // added 17.04.2012
			'errNetMountFailed'    : 'فشل التثبيت.',         // added 17.04.2012
			'errNetMountHostReq'   : 'المضيف مطلوب.', // added 18.04.2012
			'errSessionExpires'    : 'انتهت جلسة العمل الخاصة بك بسبب عدم الفاعلية.',
			'errCreatingTempDir'   : 'تعذر إنشاء دليل مؤقت: "$1"',
			'errFtpDownloadFile'   : 'تعذر تنزيل الملف من FTP: "$1"',
			'errFtpUploadFile'     : 'تعذر تحميل الملف إلى FTP: "$1"',
			'errFtpMkdir'          : 'تعذر إنشاء دليل عن بعد في FTP: "$1"',
			'errArchiveExec'       : 'خطأ أثناء أرشفة الملفات: "$1"',
			'errExtractExec'       : 'خطأ أثناء استخراج الملفات: "$1"',
			'errNetUnMount'        : 'غير قادر على فك التثبيت.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'غير قابل للتحويل إلى UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'جرب المتصفح الحديث ، إذا كنت ترغب في تحميل المجلد.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'انتهت المهلة أثناء البحث "$1". نتيجة البحث جزئية.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'مطلوب إعادة التفويض.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'الحد الأقصى لعدد العناصر القابلة للتحديد هو $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'غير قادر على الاستعادة من سلة المهملات. لا يمكن تحديد وجهة الاستعادة.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'لم يتم العثور على المحرر لهذا النوع من الملفات.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'حدث خطأ من جانب الخادم.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'تعذر إفراغ المجلد "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'يوجد $1 أخطاء إضافية.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'يمكنك إنشاء ما يصل إلى $1 مجلد في وقت واحد.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'إنشاء أرشيف',
			'cmdback'      : 'العودة',
			'cmdcopy'      : 'نسخ',
			'cmdcut'       : 'قص',
			'cmddownload'  : 'تنزيل',
			'cmdduplicate' : 'تكرار',
			'cmdedit'      : 'تحرير الملف',
			'cmdextract'   : 'إستخراج الملفات من الأرشيف',
			'cmdforward'   : 'الأمام',
			'cmdgetfile'   : 'اختيار الملفات',
			'cmdhelp'      : 'عن هذه البرمجية',
			'cmdhome'      : 'الجذر',
			'cmdinfo'      : 'الحصول على معلومات والمشاركة',
			'cmdmkdir'     : 'مجلد جديد',
			'cmdmkdirin'   : 'داخل مجلد جديد', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'ملف جديد',
			'cmdopen'      : 'فتح',
			'cmdpaste'     : 'لصق',
			'cmdquicklook' : 'معاينة',
			'cmdreload'    : 'إعادة تحميل',
			'cmdrename'    : 'إعادة تسمية',
			'cmdrm'        : 'حذف',
			'cmdtrash'     : 'داخل سلة المهملات', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'إستعادة', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'بحث عن ملفات',
			'cmdup'        : 'انتقل إلى المجلد الأصل',
			'cmdupload'    : 'رفع ملفات',
			'cmdview'      : 'عرض',
			'cmdresize'    : 'تغيير الحجم والتدوير',
			'cmdsort'      : 'فرز',
			'cmdnetmount'  : 'تثبيت حجم الشبكة', // added 18.04.2012
			'cmdnetunmount': 'إلغاء التثبيت', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'الى الاماكن', // added 28.12.2014
			'cmdchmod'     : 'تغيير النمط', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'فتح مجلد', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'إعادة تعيين عرض العمود', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'ملء الشاشة', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'نقل', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'تفريغ المجلد', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'تراجع', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'إعادة', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'التفضيلات', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'تحديد الكل', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'تحديد لا شيء', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'عكس الاختيار', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'فتح في نافذة جديدة', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'إخفاء (الأفضلية)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'إغلاق',
			'btnSave'   : 'حفظ',
			'btnRm'     : 'إزالة',
			'btnApply'  : 'تطبيق',
			'btnCancel' : 'إلغاء',
			'btnNo'     : 'لا',
			'btnYes'    : 'نعم',
			'btnMount'  : 'تثبيت',  // added 18.04.2012
			'btnApprove': 'انتقل إلى $1 والموافقة', // from v2.1 added 26.04.2012
			'btnUnmount': 'إلغاء التثبيت', // from v2.1 added 30.04.2012
			'btnConv'   : 'تحويل', // from v2.1 added 08.04.2014
			'btnCwd'    : 'هنا',      // from v2.1 added 22.5.2015
			'btnVolume' : 'الحجم',    // from v2.1 added 22.5.2015
			'btnAll'    : 'الكل',       // from v2.1 added 22.5.2015
			'btnMime'   : 'نوع التمثيل الصامت', // from v2.1 added 22.5.2015
			'btnFileName':'إسم الملف',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'حفظ وإغلاق', // from v2.1 added 12.6.2015
			'btnBackup' : 'نسخ احتياطي', // fromv2.1 added 28.11.2015
			'btnRename'    : 'إعادة تسمية',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'إعادة تسمية (الجميع)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : '($1/$2) السابق', // from v2.1.24 added 11.5.2017
			'btnNext'     : '($1/$2) التالي', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'حفظ كــ', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'فتح مجلد',
			'ntffile'     : 'فتح ملف',
			'ntfreload'   : 'إعادة تحميل محتوى المجلد',
			'ntfmkdir'    : 'إنشاء مجلد',
			'ntfmkfile'   : 'إنشاء ملفات',
			'ntfrm'       : 'حذف العناصر',
			'ntfcopy'     : 'نسخ العناصر',
			'ntfmove'     : 'نقل االعناصر',
			'ntfprepare'  : 'فحص العناصر الموجودة',
			'ntfrename'   : 'إعادة تسمية الملفات',
			'ntfupload'   : 'تحميل الملفات',
			'ntfdownload' : 'تنزيل الملفات',
			'ntfsave'     : 'حفظ الملفات',
			'ntfarchive'  : 'إنشاء أرشيف',
			'ntfextract'  : 'استخراج ملفات من الأرشيف',
			'ntfsearch'   : 'البحث في الملفات',
			'ntfresize'   : 'تغيير حجم الصور',
			'ntfsmth'     : 'القيام بشيء ما',
			'ntfloadimg'  : 'تحميل الصورة',
			'ntfnetmount' : 'تثبيت حجم الشبكة', // added 18.04.2012
			'ntfnetunmount': 'إلغاء تثبيت حجم الشبكة', // from v2.1 added 30.04.2012
			'ntfdim'      : 'اكتساب أبعاد الصورة', // added 20.05.2013
			'ntfreaddir'  : 'قراءة معلومات المجلد', // from v2.1 added 01.07.2013
			'ntfurl'      : 'الحصول على URL الرابط', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'تغيير نمط الملف', // from v2.1 added 20.6.2015
			'ntfpreupload': 'التحقق من اسم ملف التحميل', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'إنشاء ملف للتنزيل', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'الحصول على معلومات المسار', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'معالجة الملف المرفوع', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'القيام بالرمي في القمامة', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'القيام بالاستعادة من سلة المهملات', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'التحقق من مجلد الوجهة', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'التراجع عن العملية السابقة', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'إعادة التراجع السابق', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'فحص المحتويات', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'مهملات', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'غير معلوم',
			'Today'       : 'اليوم',
			'Yesterday'   : 'الأمس',
			'msJan'       : 'كانون الثاني',
			'msFeb'       : 'شباط',
			'msMar'       : 'آذار',
			'msApr'       : 'نيسان',
			'msMay'       : 'أيار',
			'msJun'       : 'حزيران',
			'msJul'       : 'تموز',
			'msAug'       : 'آب',
			'msSep'       : 'أيلول',
			'msOct'       : 'تشرين الأول',
			'msNov'       : 'تشرين الثاني',
			'msDec'       : 'كانون الأول ',
			'January'     : 'كانون الثاني',
			'February'    : 'شباط',
			'March'       : 'آذار',
			'April'       : 'نيسان',
			'May'         : 'أيار',
			'June'        : 'حزيران',
			'July'        : 'تموز',
			'August'      : 'آب',
			'September'   : 'أيلول',
			'October'     : 'تشرين الأول',
			'November'    : 'تشرين الثاني',
			'December'    : 'كانون الثاني',
			'Sunday'      : 'الأحد',
			'Monday'      : 'الاثنين',
			'Tuesday'     : 'الثلاثاء',
			'Wednesday'   : 'الإربعاء',
			'Thursday'    : 'الخميس',
			'Friday'      : 'الجمعة',
			'Saturday'    : 'السبت',
			'Sun'         : 'الأحد',
			'Mon'         : 'الاثنين',
			'Tue'         : 'الثلاثاء',
			'Wed'         : 'الإربعاء',
			'Thu'         : 'الخميس',
			'Fri'         : 'الجمعة',
			'Sat'         : 'السبت',

			/******************************** sort variants ********************************/
			'sortname'          : 'حسب الاسم',
			'sortkind'          : 'حسب النوع',
			'sortsize'          : 'حسب الحجم',
			'sortdate'          : 'حسب التاريخ',
			'sortFoldersFirst'  : 'المجلدات أولا',
			'sortperm'          : 'حسب الصلاحية', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'حسب النمط',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'حسب المالك',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'حسب المجموعة',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'أيضا عرض الشجرة',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'مجلد جديد',   // added 10.11.2015
			'Archive'           : 'أرشيف جديد',  // from v2.1 added 10.11.2015
			'untitled file'     : 'الملف الجديد.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: ملف',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'التأكيد مطلوب',
			'confirmRm'       : 'هل تريد بالتأكيد إزالة العناصر نهائيًا؟ <br/> لا يمكن التراجع عن هذا الإجراء! ',
			'confirmRepl'     : 'استبدال الملف القديم بملف جديد؟ (إذا كان يحتوي على مجلدات ، فسيتم دمجه. للنسخ الاحتياطي والاستبدال ، حدد النسخ الاحتياطي.)',
			'confirmRest'     : 'هل تريد استبدال العنصر الموجود بالعنصر الموجود في المهملات؟', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'ليس بصيغة UTF-8<br/>التحويل إلى UTF-8؟<br/>تصبح المحتويات UTF-8 بالحفظ بعد التحويل.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'تعذر الكشف عن ترميز الأحرف لهذا الملف. تحتاج إلى التحويل مؤقتاً إلى UTF-8 للتحرير.<br/>الرجاء تحديد ترميز الأحرف لهذا الملف.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'لقد تم تعديله.<br/>قد تخسر العمل إذا لم تقم بحفظ التغييرات.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'هل أنت متأكد أنك تريد نقل العناصر إلى سلة المهملات؟', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'هل أنت متأكد أنك تريد نقل العناصر إلى "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'تطبيق على الكل',
			'name'            : 'الاسم',
			'size'            : 'الحجم',
			'perms'           : 'الصلاحيات',
			'modify'          : 'التعديل',
			'kind'            : 'النوع',
			'read'            : 'قابل للقراءة',
			'write'           : 'قابل للكتابة',
			'noaccess'        : 'وصول ممنوع',
			'and'             : 'و',
			'unknown'         : 'غير معروف',
			'selectall'       : 'تحديد كل العناصر',
			'selectfiles'     : 'تحديد العناصر',
			'selectffile'     : 'تحديد العنصر الأول',
			'selectlfile'     : 'تحديد العنصر الأخير',
			'viewlist'        : 'عرض القائمة',
			'viewicons'       : 'عرض أيْقونات',
			'viewSmall'       : 'أيقونات صغيرة', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'أيقونات متوسطة', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'أيقونات كبيرة', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'أيقونات كبيرة جداً', // from v2.1.39 added 22.5.2018
			'places'          : 'المواقع',
			'calc'            : 'حساب',
			'path'            : 'المسار',
			'aliasfor'        : 'اسم مستعار لـ',
			'locked'          : 'مقفل',
			'dim'             : 'الأبعاد',
			'files'           : 'ملفات',
			'folders'         : 'مجلدات',
			'items'           : 'عناصر',
			'yes'             : 'نعم',
			'no'              : 'لا',
			'link'            : 'الرابط',
			'searcresult'     : 'نتائج البحث',
			'selected'        : 'العناصر المحددة',
			'about'           : 'حول',
			'shortcuts'       : 'الاختصارات',
			'help'            : 'المساعدة',
			'webfm'           : 'مدير ملفات الويب',
			'ver'             : 'الإصدار',
			'protocolver'     : 'إصدار البرتوكول',
			'homepage'        : 'رئيسية المشروع',
			'docs'            : 'الوثائق',
			'github'          : 'شاركنا على Github',
			'twitter'         : 'تابعنا على تويتر',
			'facebook'        : 'انضم إلينا على الفيس بوك',
			'team'            : 'الفريق',
			'chiefdev'        : 'رئيس المبرمجين',
			'developer'       : 'مبرمج',
			'contributor'     : 'مساهم',
			'maintainer'      : 'مشرف',
			'translator'      : 'مترجم',
			'icons'           : 'أيقونات',
			'dontforget'      : 'ولا تنس أن تأخذ المنشفة',
			'shortcutsof'     : 'الاختصارات غير مفعلة',
			'dropFiles'       : 'إفلات الملفات هنا',
			'or'              : 'أو',
			'selectForUpload' : 'اختر الملفات',
			'moveFiles'       : 'نقل العناصر',
			'copyFiles'       : 'نسخ العناصر',
			'restoreFiles'    : 'استعادة العناصر', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'إزالة من الأماكن',
			'aspectRatio'     : 'ابعاد متزنة',
			'scale'           : 'مقياس',
			'width'           : 'عرض',
			'height'          : 'طول',
			'resize'          : 'تغيير الحجم',
			'crop'            : 'قص',
			'rotate'          : 'تدوير',
			'rotate-cw'       : 'استدارة 90 درجة مع عقارب الساعة',
			'rotate-ccw'      : 'استدارة 90 درجة عكس عقارب الساعة',
			'degree'          : '°',
			'netMountDialogTitle' : 'تثبيت حجم الشبكة', // added 18.04.2012
			'protocol'            : 'البروتوكول', // added 18.04.2012
			'host'                : 'المضيف', // added 18.04.2012
			'port'                : 'المنفذ', // added 18.04.2012
			'user'                : 'المستخدم', // added 18.04.2012
			'pass'                : 'كلمة المرور', // added 18.04.2012
			'confirmUnmount'      : 'هل أنت متأكد من إلغاء تثبيت $1؟',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'قم بإسقاط أو لصق الملفات من المتصفح', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'قم بإسقاط الملفات أو لصق الروابط أو الصور (الحافظة) هنا', // from v2.1 added 07.04.2014
			'encoding'        : 'الترميز', // from v2.1 added 19.12.2014
			'locale'          : 'اللغة',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'الهدف: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'البحث عن طريق إدخال نوع MIME', // from v2.1 added 22.5.2015
			'owner'           : 'المالك', // from v2.1 added 20.6.2015
			'group'           : 'المجموعة', // from v2.1 added 20.6.2015
			'other'           : 'أخرى', // from v2.1 added 20.6.2015
			'execute'         : 'تنفيذ', // from v2.1 added 20.6.2015
			'perm'            : 'التصريح', // from v2.1 added 20.6.2015
			'mode'            : 'النمط', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'المجلد فارغ', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'المجلد فارغ\\إفلات لإضافة عناصر', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'المجلد فارغ\\نقرة طويلة لإضافة العناصر', // from v2.1.6 added 30.12.2015
			'quality'         : 'النوعية', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'مزامنة آلية',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'تحريك لأعلى',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'الحصول على رابط URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'العناصر المحددة ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'معرف المجلد', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'السماح بالوصول دون اتصال', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'لإعادة المصادقة', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'جاري التحميل الآن...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'فتح ملفات متعددة', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'أنت تحاول فتح  $1 ملف. هل أنت متأكد أنك تريد الفتح في المتصفح؟', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'نتائج البحث فارغة في هدف البحث.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'إنها تقوم بتحرير ملف.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'لقد قمت بتحديد $1 عناصر.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'يوجد لديك $1 عناصر في الحافظة.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'البحث المتزايد هو فقط من العرض الحالي.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'إعادة', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 إكتمل', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'قائمة السياق', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'قلب الصفحة', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'جذور الحجم', // from v2.1.16 added 16.9.2016
			'reset'           : 'إعادة تعيين', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'لون الخلفية', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'أداة انتقاء اللون', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'شبكة 8 بكسل', // from v2.1.16 added 4.10.2016
			'enabled'         : 'مفعل', // from v2.1.16 added 4.10.2016
			'disabled'        : 'معطل', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'نتائج البحث فارغة في العرض الحالي. \\ اضغط على [Enter] لتوسيع هدف البحث.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'نتائج البحث الحرف الأول فارغة في العرض الحالي.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'تسمية نصية', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 دقائق باقية', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'إعادة فتح مع الترميز المحدد', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'حفظ مع الترميز المحدد', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'تحديد مجلد', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'البحث بالحرف الأول', // from v2.1.23 added 24.3.2017
			'presets'         : 'الإعدادات المسبقة', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'هناك عدد كبير جداً من العناصر لذا لا يمكن وضعها في سلة المهملات.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'منطقة النص', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'إفراغ المجلد "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'لا توجد عناصر في مجلد "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'الأفضلية', // from v2.1.26 added 28.6.2017
			'language'        : 'اللغة', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'تهيئة الإعدادات المحفوظة في هذا المتصفح', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'إعدادات شريط الأدوات', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 حروف متبقية.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 سطور متبقية.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'المجموع', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'حجم ملف تقريبي', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'التركيز على عنصر الحوار مع تمرير الماوس',  // from v2.1.30 added 2.11.2017
			'select'          : 'حدد', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'الإجراء عند تحديد الملف', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'الفتح باستخدام المحرر المستخدم آخر مرة', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'عكس الاختيار', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'هل أنت متأكد أنك تريد إعادة تسمية $1 عناصر محددة مثل $2؟<br/>هذا لا يمكن التراجع عنه !', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'إعادة تسمية الحزمة', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ رقم', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'إضافة بادئة', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'إضافة لاحقة', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'تغيير الامتداد', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'إعدادات الأعمدة (عرض القائمة)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'ستنعكس جميع التغييرات على الفور على الأرشيف.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'لن تنعكس أي تغييرات حتى يتم فك هذا المجلد.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'المجلد (المجلدات) التالية المركبة على هذا المجلد غير مثبتة أيضاً. هل أنت متأكد من إلغاء تحميله؟', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'معلومات التحديد', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'خوارزميات لإظهار تجزئة الملف', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'عناصر المعلومات (لوحة معلومات التحديد)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'اضغط مرة أخرى للخروج.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'شريط الأدوات', // from v2.1.38 added 4.4.2018
			'workspace'       : 'مساحة العمل', // from v2.1.38 added 4.4.2018
			'dialog'          : 'الحوار', // from v2.1.38 added 4.4.2018
			'all'             : 'الكل', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'حجم الأيقونة (عرض الأيقونات)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'افتح نافذة المحرر المكبرة', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'نظراً لعدم توفر التحويل بواسطة API حالياً ، يرجى التحويل على موقع الويب.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'بعد التحويل ، يجب أن تقوم بالتحميل مع عنوان رابط العنصر أو الملف الذي تم تنزيله لحفظ الملف المحول.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'تحويل على موقع $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'تكاملات', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'يحتوي elFinder على الخدمات الخارجية التالية المتكاملة. يرجى التحقق من شروط الاستخدام وسياسة الخصوصية وما إلى ذلك قبل استخدامها.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'إظهار العناصر المخفية', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'إخفاء العناصر المخفية', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'إظهار / إخفاء العناصر المخفية', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'أنواع الملفات لتفعيلها مع "ملف جديد"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'نوع الملف النصي', // from v2.1.41 added 7.8.2018
			'add'             : 'إضافة', // from v2.1.41 added 7.8.2018
			'theme'           : 'الثيم', // from v2.1.43 added 19.10.2018
			'default'         : 'الافتراضي', // from v2.1.43 added 19.10.2018
			'description'     : 'الوصف', // from v2.1.43 added 19.10.2018
			'website'         : 'الموقع الالكتروني', // from v2.1.43 added 19.10.2018
			'author'          : 'المؤلف', // from v2.1.43 added 19.10.2018
			'email'           : 'البريد الالكتروني', // from v2.1.43 added 19.10.2018
			'license'         : 'الرخصة', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'لا يمكن حفظ هذا العنصر. لتجنب فقدان التحريرات التي تحتاجها للتصدير إلى جهاز الكمبيوتر الخاص بك.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'انقر نقراً مزدوجاً فوق الملف لتحديده.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'استخدام وضع ملء الشاشة', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'غير معروف',
			'kindRoot'        : 'جذر الحجم', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'مجلد',
			'kindSelects'     : 'مختارات', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'اسم مستعار',
			'kindAliasBroken' : 'اسم مستعار مكسور',
			// applications
			'kindApp'         : 'التطبيق',
			'kindPostscript'  : 'وثيقة Postscript',
			'kindMsOffice'    : 'وثيقة Microsoft Office',
			'kindMsWord'      : 'وثيقة Microsoft Word',
			'kindMsExcel'     : 'وثيقة Microsoft Excel',
			'kindMsPP'        : 'عرض تقديمي Microsoft Powerpoint',
			'kindOO'          : 'وثيقة Open Office',
			'kindAppFlash'    : 'تطبيق فلاش',
			'kindPDF'         : 'تنسيق الوثائق المحمولة (PDF)',
			'kindTorrent'     : 'ملف Bittorrent ',
			'kind7z'          : 'أرشيف  7z',
			'kindTAR'         : 'أرشيف TAR',
			'kindGZIP'        : 'أرشيف GZIP',
			'kindBZIP'        : 'أرشيف BZIP',
			'kindXZ'          : 'أرشيف XZ',
			'kindZIP'         : 'أرشيف ZIP',
			'kindRAR'         : 'أرشيف RAR',
			'kindJAR'         : 'أرشيف Java JAR',
			'kindTTF'         : 'خط True Type ',
			'kindOTF'         : 'خط Open Type ',
			'kindRPM'         : 'حزمة RPM',
			// texts
			'kindText'        : 'وثيقة نصية',
			'kindTextPlain'   : 'نص عادي',
			'kindPHP'         : 'مصدر PHP',
			'kindCSS'         : 'ورقة الأنماط المتتالية',
			'kindHTML'        : 'وثيقة HTML',
			'kindJS'          : 'مصدر Javascript',
			'kindRTF'         : 'تنسيق نص منسق',
			'kindC'           : 'مصدر C',
			'kindCHeader'     : 'مصدر C header',
			'kindCPP'         : 'مصدر C++',
			'kindCPPHeader'   : 'مصدر C++ header',
			'kindShell'       : 'مصدر Unix shell',
			'kindPython'      : 'مصدر Python',
			'kindJava'        : 'مصدر Java',
			'kindRuby'        : 'مصدر Ruby',
			'kindPerl'        : 'مصدر Perl',
			'kindSQL'         : 'مصدر SQL',
			'kindXML'         : 'وثيقة XML',
			'kindAWK'         : 'مصدر AWK',
			'kindCSV'         : 'ملف CSV',
			'kindDOCBOOK'     : 'وثيقة Docbook XML',
			'kindMarkdown'    : 'نص Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'صورة',
			'kindBMP'         : 'صورة BMP',
			'kindJPEG'        : 'صورة JPEG',
			'kindGIF'         : 'صورة GIF',
			'kindPNG'         : 'صورة PNG',
			'kindTIFF'        : 'صورة TIFF',
			'kindTGA'         : 'صورة TGA',
			'kindPSD'         : 'صورة Adobe Photoshop',
			'kindXBITMAP'     : 'صورة X bitmap',
			'kindPXM'         : 'صورة Pixelmator',
			// media
			'kindAudio'       : 'وسائط صوت',
			'kindAudioMPEG'   : 'ملف صوتي MPEG ',
			'kindAudioMPEG4'  : 'ملف صوتي MPEG-4',
			'kindAudioMIDI'   : 'ملف صوتي MIDI',
			'kindAudioOGG'    : 'ملف صوتي Ogg Vorbis',
			'kindAudioWAV'    : 'ملف صوتي WAV',
			'AudioPlaylist'   : 'قائمة تشغيل MP3',
			'kindVideo'       : 'وسائط فيديو',
			'kindVideoDV'     : 'ملف فيديو DV',
			'kindVideoMPEG'   : 'ملف فيديو MPEG',
			'kindVideoMPEG4'  : 'ملف فيديو MPEG-4',
			'kindVideoAVI'    : 'ملف فيديو AVI',
			'kindVideoMOV'    : 'ملف فيديو Quick Time',
			'kindVideoWM'     : 'ملف فيديو Windows Media',
			'kindVideoFlash'  : 'ملف فيديو Flash',
			'kindVideoMKV'    : 'ملف فيديو Matroska',
			'kindVideoOGG'    : 'ملف فيديو Ogg'
		}
	};
}));lib/js/i18n/elfinder.uk.js000064400000123072147361034410011261 0ustar00/**
 * Українська мова translation
 * @author ITLancer
 * @author cjayho <cj.fooser@gmail.com>
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.uk = {
		translator : 'ITLancer, cjayho &lt;cj.fooser@gmail.com&gt;',
		language   : 'Українська мова',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 03.03.2022 18:02
		fancyDateFormat : '$1 H:i', // will show like: сьогодні 18:02
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-180221
		messages   : {
			'getShareText' : 'Поділіться',
			'Editor ': 'Редактор коду',

			/********************************** errors **********************************/
			'error'                : 'Помилка',
			'errUnknown'           : 'Невідома помилка.',
			'errUnknownCmd'        : 'Невідома команда.',
			'errJqui'              : 'Неправильне налаштування jQuery UI. Відсутні компоненти: selectable, draggable, droppable.',
			'errNode'              : 'Відсутній елемент DOM для створення elFinder.',
			'errURL'               : 'Неправильне налаштування! Не вказана опція URL.',
			'errAccess'            : 'Доступ заборонено.',
			'errConnect'           : 'Не вдалося з’єднатися з backend.',
			'errAbort'             : 'З’єднання розірване.',
			'errTimeout'           : 'Тайм-аут з’єднання.',
			'errNotFound'          : 'Не знайдено backend.',
			'errResponse'          : 'Неправильна відповідь від backend.',
			'errConf'              : 'Неправильне налаштування backend.',
			'errJSON'              : 'Модуль PHP JSON не встановлено.',
			'errNoVolumes'         : 'Немає доступних для читання директорій.',
			'errCmdParams'         : 'Неправильні параметри для команди "$1".',
			'errDataNotJSON'       : 'Дані не у форматі JSON.',
			'errDataEmpty'         : 'Дані відсутні.',
			'errCmdReq'            : 'Backend вимагає назву команди.',
			'errOpen'              : 'Неможливо відкрити "$1".',
			'errNotFolder'         : 'Об’єкт не є папкою.',
			'errNotFile'           : 'Об’єкт не є файлом.',
			'errRead'              : 'Неможливо прочитати "$1".',
			'errWrite'             : 'Неможливо записати в "$1".',
			'errPerm'              : 'Помилка доступу.',
			'errLocked'            : 'Файл "$1" заблоковано і його неможливо перемістити, перейменувати чи вилучити.',
			'errExists'            : 'Файл з назвою "$1" вже існує.',
			'errInvName'           : 'Недійсна назва файла.',
			'errInvDirname'        : 'Недійсна назва теки.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Теку не знайдено.',
			'errFileNotFound'      : 'Файл не знайдено.',
			'errTrgFolderNotFound' : 'Цільову теку "$1" не знайдено.',
			'errPopup'             : 'Браузер забороняє відкривати popup-вікно. Дозвольте у налаштування браузера, щоб відкрити файл.',
			'errMkdir'             : 'Неможливо створити теку "$1".',
			'errMkfile'            : 'Неможливо створити файл "$1".',
			'errRename'            : 'Неможливо перейменувати файл "$1".',
			'errCopyFrom'          : 'Копіювання файлів з тому "$1" не дозволено.',
			'errCopyTo'            : 'Копіювання файлів на том "$1" не дозволено.',
			'errMkOutLink'         : 'Неможливо створити посилання у місце за межами кореневої теки носія.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Помилка відвантаження.',  // old name - errUploadCommon
			'errUploadFile'        : 'Неможливо відвантажити файл "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Не знайдено файлів для відвантаження.',
			'errUploadTotalSize'   : 'Об\'єм даних перевищив встановлений ліміт.', // old name - errMaxSize
			'errUploadFileSize'    : 'Об\'єм файла перевищив встановлений ліміт.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Файли цього типу заборонені.',
			'errUploadTransfer'    : '"$1" : помилка передачі.',
			'errUploadTemp'        : 'Неможливо створити тимчасовий файл для відвантаження.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Об\'єкт "$1" вже існує тут та не може бути заміненим на об\'єкт іншого типу.', // new
			'errReplace'           : 'Неможливо замінити "$1".',
			'errSave'              : 'Неможливо записати "$1".',
			'errCopy'              : 'Неможливо скопіювати "$1".',
			'errMove'              : 'Неможливо перенести "$1".',
			'errCopyInItself'      : 'Неможливо скопіювати "$1" сам у себе.',
			'errRm'                : 'Неможливо вилучити "$1".',
			'errTrash'             : 'Неможливо пересунути до смітника.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Неможливо видалити оригінальний(і) файл(и).',
			'errExtract'           : 'Неможливо розпакувати файли з "$1".',
			'errArchive'           : 'Неможливо створити архів.',
			'errArcType'           : 'Тип архіву не підтримується.',
			'errNoArchive'         : 'Файл не є архівом, або є архівом, тип якого не підтримується.',
			'errCmdNoSupport'      : 'Серверна частина не підтримує цієї команди.',
			'errReplByChild'       : 'Папка “$1” не може бути замінена елементом, який вона містить.',
			'errArcSymlinks'       : 'З міркувань безпеки заборонено розпаковувати архіви з символічними посиланнями.', // edited 24.06.2012
			'errArcMaxSize'        : 'Розмір файлів архіву перевищує допустиме значення.',
			'errResize'            : 'Неможливо масштабувати "$1".',
			'errResizeDegree'      : 'Недійсний кут обертання.',  // added 7.3.2013
			'errResizeRotate'      : 'Неможливо повернути світлину.',  // added 7.3.2013
			'errResizeSize'        : 'Недійсний розмір світлини.',  // added 7.3.2013
			'errResizeNoChange'    : 'Розмір світлини не змінено.',  // added 7.3.2013
			'errUsupportType'      : 'Непідтримуваний тип файла.',
			'errNotUTF8Content'    : 'Файл "$1" не в UTF-8 і не може бути відредагований.',  // added 9.11.2011
			'errNetMount'          : 'Неможливо змонтувати "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Непідтримуваний протокл.',     // added 17.04.2012
			'errNetMountFailed'    : 'В процесі монтування сталася помилка.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Необхідно вказати хост.', // added 18.04.2012
			'errSessionExpires'    : 'Час сеансу минув через неактивність.',
			'errCreatingTempDir'   : 'НЕможливо створити тимчасову директорію: "$1"',
			'errFtpDownloadFile'   : 'Неможливо завантажити файл з FTP: "$1"',
			'errFtpUploadFile'     : 'Неможливо завантажити файл на FTP: "$1"',
			'errFtpMkdir'          : 'Неможливо створити віддалений каталог на FTP: "$1"',
			'errArchiveExec'       : 'Помилка при архівації файлів: "$1"',
			'errExtractExec'       : 'Помилка при розархівуванні файлів: "$1"',
			'errNetUnMount'        : 'Неможливо демонтувати', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Неможливо конвертувати в UTF - 8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Використовуйте Google Chrome, якщо ви хочете завантажити папку', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Час пошуку "$1" вийшов. Результат пошуку частковий', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Необхідна повторна авторизація.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Максимальна кількість об\'єктів що можна обрати складає $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Неможливо відновити зі смітника: неможливо визначити місце куди відновлювати.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Для цього типу файлів не знайдено редактора.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Помилка на боці сервера.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Неможливо спорожнити теку "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Є також ще $1 помилок.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Ви можете створити до $1 папки одночасно.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Архівувати',
			'cmdback'      : 'Назад',
			'cmdcopy'      : 'Копівати',
			'cmdcut'       : 'Вирізати',
			'cmddownload'  : 'Завантажити',
			'cmdduplicate' : 'Дублювати',
			'cmdedit'      : 'Редагувати файл',
			'cmdextract'   : 'Розпакувати файли з архіву',
			'cmdforward'   : 'Вперед',
			'cmdgetfile'   : 'Вибрати файли',
			'cmdhelp'      : 'Про програму',
			'cmdhome'      : 'Додому',
			'cmdinfo'      : 'Інформація',
			'cmdmkdir'     : 'Створити теку',
			'cmdmkdirin'   : 'До нової теки', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Створити файл',
			'cmdopen'      : 'Відкрити',
			'cmdpaste'     : 'Вставити',
			'cmdquicklook' : 'Попередній перегляд',
			'cmdreload'    : 'Перечитати',
			'cmdrename'    : 'Перейменувати',
			'cmdrm'        : 'Вилучити',
			'cmdtrash'     : 'До смітника', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Відновити', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Шукати файли',
			'cmdup'        : 'На 1 рівень вгору',
			'cmdupload'    : 'Відвантажити файли',
			'cmdview'      : 'Перегляд',
			'cmdresize'    : 'Масштабувати зображення',
			'cmdsort'      : 'Сортування',
			'cmdnetmount'  : 'Змонтувати мережевий диск', // added 18.04.2012
			'cmdnetunmount': 'Розмонтувати', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'До Місць', // added 28.12.2014
			'cmdchmod'     : 'Змінити права', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Відкрии директорію', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Скинути ширину стовпчика', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Повний екран', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Пересунути', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Спорожнити теку', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Скасувати', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Відновити', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Налаштування', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Вибрати усі', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Зняти вибір', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Інвертувати вибір', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Відкрити у новому вікні', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Сховати (Налаштування)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Закрити',
			'btnSave'   : 'Зберегти',
			'btnRm'     : 'Вилучити',
			'btnApply'  : 'Застосувати',
			'btnCancel' : 'Скасувати',
			'btnNo'     : 'Ні',
			'btnYes'    : 'Так',
			'btnMount'  : 'Підключити',  // added 18.04.2012
			'btnApprove': 'Перейти в $1 і прийняти', // from v2.1 added 26.04.2012
			'btnUnmount': 'Відключити', // from v2.1 added 30.04.2012
			'btnConv'   : 'Конвертувати', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Тут',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Розділ',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Всі',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME тип', // from v2.1 added 22.5.2015
			'btnFileName':'Назва файла',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Зберегти і вийти', // from v2.1 added 12.6.2015
			'btnBackup' : 'Резервна копія', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Перейменувати',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Перейменуваті(Усі)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Попер. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Наступ. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Зберегти як', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Відкрити теку',
			'ntffile'     : 'Відкрити файл',
			'ntfreload'   : 'Перечитати вміст теки',
			'ntfmkdir'    : 'Створення теки',
			'ntfmkfile'   : 'Створення файлів',
			'ntfrm'       : 'Вилучити файли',
			'ntfcopy'     : 'Копіювати файли',
			'ntfmove'     : 'Перенести файли',
			'ntfprepare'  : 'Підготовка до копіювання файлів',
			'ntfrename'   : 'Перейменувати файли',
			'ntfupload'   : 'Відвантажити файли',
			'ntfdownload' : 'Завантажити файли',
			'ntfsave'     : 'Записати файли',
			'ntfarchive'  : 'Створення архіву',
			'ntfextract'  : 'Розпаковування архіву',
			'ntfsearch'   : 'Пошук файлів',
			'ntfresize'   : 'Зміна розміру світлини',
			'ntfsmth'     : 'Виконуємо',
			'ntfloadimg'  : 'Завантаження зображення',
			'ntfnetmount' : 'Монтування мережевого диска', // added 18.04.2012
			'ntfnetunmount': 'Розмонтування мережевого диска', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Визначення розміру світлини', // added 20.05.2013
			'ntfreaddir'  : 'Читання інформації директорії', // from v2.1 added 01.07.2013
			'ntfurl'      : 'отримання URL посилання', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Зміна прав файлу', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Перевірка імені завантажуваного файла', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Створення файлу для завантаження', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Отримання інформації про шлях', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Обробка вивантаженого файлу', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Переміщуємо до смітника', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Відновлюємо зі смітника', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Перевіряємо теку призначення', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Скасування попередньої дії', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Повторення раніше скасованої дії', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Перевірка вмісту', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Смітник', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'невідомо',
			'Today'       : 'сьогодні',
			'Yesterday'   : 'вчора',
			'msJan'       : 'Січ',
			'msFeb'       : 'Лют',
			'msMar'       : 'Бер',
			'msApr'       : 'Кві',
			'msMay'       : 'Тра',
			'msJun'       : 'Чер',
			'msJul'       : 'Лип',
			'msAug'       : 'Сер',
			'msSep'       : 'Вер',
			'msOct'       : 'Жов',
			'msNov'       : 'Лис',
			'msDec'       : 'Гру',
			'January'     : 'січня',
			'February'    : 'лютого',
			'March'       : 'березня',
			'April'       : 'квітня',
			'May'         : 'травня',
			'June'        : 'червня',
			'July'        : 'липня',
			'August'      : 'серпня',
			'September'   : 'вересня',
			'October'     : 'жовтня',
			'November'    : 'листопада',
			'December'    : 'грудня',
			'Sunday'      : 'Неділя',
			'Monday'      : 'Понеділок',
			'Tuesday'     : 'Вівторок',
			'Wednesday'   : 'Середа',
			'Thursday'    : 'Четвер',
			'Friday'      : 'П’ятниця',
			'Saturday'    : 'Субота',
			'Sun'         : 'Нд',
			'Mon'         : 'Пн',
			'Tue'         : 'Вт',
			'Wed'         : 'Ср',
			'Thu'         : 'Чт',
			'Fri'         : 'Пт',
			'Sat'         : 'Сб',

			/******************************** sort variants ********************************/
			'sortname'          : 'за назвою',
			'sortkind'          : 'за типом',
			'sortsize'          : 'за розміром',
			'sortdate'          : 'за датою',
			'sortFoldersFirst'  : 'Список тек',
			'sortperm'          : 'за дозволами', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'за режимом',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'за власником',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'за групою',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Також вигляд дерева',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'неназваний файл.txt', // added 10.11.2015
			'untitled folder'   : 'неназвана тека',   // added 10.11.2015
			'Archive'           : 'НовийАрхів',  // from v2.1 added 10.11.2015
			'untitled file'     : 'НовийФайл.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Файл',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2 ',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Необхідне підтвердження',
			'confirmRm'       : 'Ви справді хочете вилучити файли?<br/>Операція незворотня!',
			'confirmRepl'     : 'Замінити старий файл новим? (при наявності тек вони будуть об\'єднані. Для резервної копії та заміни оберіть Резервну Копію)',
			'confirmRest'     : 'Замінити існуючий об\'єкт об\'єктом зі смітника?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Не у UTF-8<br/>Конвертувати у UTF-8?<br/>Вміст стане у UTF-8 збереженням після конвертації.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Кодування символів цього файлу неможливо визначити. Потрібно тимчасово конвертувати його у UTF-8 для редагування.<br/>Оберіть кодування цього файлу.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Було внесено зміни.<br/>Якщо ії не зберегти, їх буде втрачено.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ви точно бажаєте перемістити ці об\'єкти до смітника?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Ви точно бажаєте перемістити об\'єкти до "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Застосувати до всіх',
			'name'            : 'Назва',
			'size'            : 'Розмір',
			'perms'           : 'Доступи',
			'modify'          : 'Змінено',
			'kind'            : 'Тип',
			'read'            : 'читання',
			'write'           : 'запис',
			'noaccess'        : 'недоступно',
			'and'             : 'і',
			'unknown'         : 'невідомо',
			'selectall'       : 'Вибрати всі файли',
			'selectfiles'     : 'Вибрати файл(и)',
			'selectffile'     : 'Вибрати перший файл',
			'selectlfile'     : 'Вибрати останній файл',
			'viewlist'        : 'Списком',
			'viewicons'       : 'Значками',
			'viewSmall'       : 'Маленькі значки', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Середні значки', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Великі значки', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Дуже великі значки', // from v2.1.39 added 22.5.2018
			'places'          : 'Розташування',
			'calc'            : 'Вирахувати',
			'path'            : 'Шлях',
			'aliasfor'        : 'Аліас для',
			'locked'          : 'Заблоковано',
			'dim'             : 'Розміри',
			'files'           : 'Файли',
			'folders'         : 'теки',
			'items'           : 'Елементи',
			'yes'             : 'так',
			'no'              : 'ні',
			'link'            : 'Посилання',
			'searcresult'     : 'Результати пошуку',
			'selected'        : 'Вибрані елементи',
			'about'           : 'Про',
			'shortcuts'       : 'Ярлики',
			'help'            : 'Допомога',
			'webfm'           : 'Web-менеджер файлів',
			'ver'             : 'Версія',
			'protocolver'     : 'версія протоколу',
			'homepage'        : 'Сторінка проекту',
			'docs'            : 'Документація',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Слідкуйте у Твітері',
			'facebook'        : 'Приєднуйтесь у фейсбуці',
			'team'            : 'Автори',
			'chiefdev'        : 'головний розробник',
			'developer'       : 'розробник',
			'contributor'     : 'учасник',
			'maintainer'      : 'супроводжувач',
			'translator'      : 'перекладач',
			'icons'           : 'Значки',
			'dontforget'      : 'і не забудьте рушничок',
			'shortcutsof'     : 'Створення посилань вимкнено',
			'dropFiles'       : 'Кидайте файли сюди',
			'or'              : 'або',
			'selectForUpload' : 'Виберіть файли для відвантаження',
			'moveFiles'       : 'Перемістити файли',
			'copyFiles'       : 'Копіювати файли',
			'restoreFiles'    : 'Відновити об\'єкти', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Вилучити з розташувань',
			'aspectRatio'     : 'Співвідношення',
			'scale'           : 'Масштаб',
			'width'           : 'Ширина',
			'height'          : 'Висота',
			'resize'          : 'Змінити розмір',
			'crop'            : 'Обрізати',
			'rotate'          : 'Повернути',
			'rotate-cw'       : 'Повернути на 90 градусів за год. стр.',
			'rotate-ccw'      : 'Повернути на 90 градусів проти год. стр.',
			'degree'          : 'Градус',
			'netMountDialogTitle' : 'Змонтувати носій у мережі', // added 18.04.2012
			'protocol'            : 'версія протоколу', // added 18.04.2012
			'host'                : 'Хост', // added 18.04.2012
			'port'                : 'Порт', // added 18.04.2012
			'user'                : 'Логін', // added 18.04.2012
			'pass'                : 'Пароль', // added 18.04.2012
			'confirmUnmount'      : 'Ви відмонтовуєте $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Перетягніть або вставте файли з оглядача', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Перетягніть файли, Вставте URL або світлини (з буфера обміну) сюди', // from v2.1 added 07.04.2014
			'encoding'        : 'Кодування', // from v2.1 added 19.12.2014
			'locale'          : 'Локаль',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Призначення: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Пошук за введеним типом MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Власник', // from v2.1 added 20.6.2015
			'group'           : 'Група', // from v2.1 added 20.6.2015
			'other'           : 'Інші', // from v2.1 added 20.6.2015
			'execute'         : 'Виконання', // from v2.1 added 20.6.2015
			'perm'            : 'Дозвіл', // from v2.1 added 20.6.2015
			'mode'            : 'Режим', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Тека порожня', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Тека порожня\\A Перетягніть об\'єкти для додавання', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Тека порожня\\A Для додавання об\'єктів торкніть та утримуйте', // from v2.1.6 added 30.12.2015
			'quality'         : 'Якість', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Авто синх.',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Пересунути вгору',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Отримати URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Обрані об\'єкти ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID теки', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Дозволити доступ офлайн', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Для реаутентифікації', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Зараз завантажуємо...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Відкрити декілька файлів', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Ви намагаєтесь відкрити $1 файлів. Ви впевнені що хочете відкрити ії у оглядачі?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Пошук не дав результатів у обраному місці.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Редагує файл.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Ви обрали $1 об\'єктів.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'У вас є $1 об\'єктів у буфері обміну.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Інкрементний пошук є тільки для поточного перегляду.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Відновити', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 виконано', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Контекстне меню', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Обертання сторінки', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Кореневі теки носіїв', // from v2.1.16 added 16.9.2016
			'reset'           : 'Обнулити', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Колір фону', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Обрати колір', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'сітка 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Увімкнено', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Вимкнено', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Результати пошуку у поточному перегляді відсутні.\\AНатисніть [Enter] для розширення критеріїв пошуку.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Результати пошуку за першою літерою відсутні у поточному перегляді.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Текстова мітка', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 хв. залишилось', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Відкрити знову з обраним кодуванням', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Зберегти з обраним кодуванням', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Обрати теку', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Пошук за першою літерою', // from v2.1.23 added 24.3.2017
			'presets'         : 'Шаблони', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Дуже багато об\'єктів для переміщення у смітник.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'ТекстовеПоле', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Спорожнити теку "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Тека "$1" порожня.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Налаштування', // from v2.1.26 added 28.6.2017
			'language'        : 'Мова', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Ініціювати налаштування збережені у цьому оглядачі', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Налаштування лотку інструментів', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 символів залишилось.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 рядків залишилось.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Сума', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Приблизний розмір файу', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Фокусувати елемент діалога при наведенні курсора миші',  // from v2.1.30 added 2.11.2017
			'select'          : 'Обрати', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Дія при виборі файла', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Відкрити редактором, що використовувався крайній раз.', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Інвертувати вибір', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Ви точно хочете перейменувати $1 обраних об\'єктів на кшталт $2?<br/>Це незворотна дія!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Пакетне перейменування', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Число', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Додати префікс', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Додати суфікс', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Змінити розширення', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Налаштування стовпчиків (вигляд списку)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Усі зміни будуть негайно застосовані у архіві.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Деякі зміни не буде видно до розмонтування носія.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Наступний(і) носій(ї) на цьому носії також не змонтовані. Ви точно хочете відмонтувати носій?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Інформація про обране', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Алгоритми для показу хешу файла', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Інформаційні об\'єкти (Панель інформації про обране)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Натисніть знову для виходу.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Панель інструментів', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Робочий простір', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Діалог', // from v2.1.38 added 4.4.2018
			'all'             : 'Усі', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Розмір значків (вигляд значків)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Відкрити розгорнуте вікно редактора', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Через неможливість конвертування API, сконвертуйте на вебсайті.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Після конвертування вам треба завантажити за допомогою URL або збереженого файу, для збереження конвертованого файлу.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Конвертувати сайт з $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Інтеграції', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Цей elFinder має наступні інтегровані сервіси. Перевірте умови використання, політику приватності та інше перед використанням.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Показати приховані об\'єкти', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Сховати приховані об\'єкти', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Показати/Сховати приховані о\'єкти', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Типи файлів, які можна створювати', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Тип текстового файлу', // from v2.1.41 added 7.8.2018
			'add'             : 'Додати', // from v2.1.41 added 7.8.2018
			'theme'           : 'Тема', // from v2.1.43 added 19.10.2018
			'default'         : 'Як зазвичай', // from v2.1.43 added 19.10.2018
			'description'     : 'Опис', // from v2.1.43 added 19.10.2018
			'website'         : 'Веб-сайт', // from v2.1.43 added 19.10.2018
			'author'          : 'Автор', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Ліцензія', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Об\'єкт неможливо зберегти. Щоб уникнути втрати правок вам треба експортувати ії до себе у пристрій.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Двічі клацніть файл для вибору.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Використовувати повноекранний режим', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Невідомо',
			'kindRoot'        : 'Коренева тека носія', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Папка',
			'kindSelects'     : 'Вибір', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Аліас',
			'kindAliasBroken' : 'Пошкоджений аліас',
			// applications
			'kindApp'         : 'Програма',
			'kindPostscript'  : 'Документ Postscript',
			'kindMsOffice'    : 'Документ Microsoft Office',
			'kindMsWord'      : 'Документ Microsoft Word',
			'kindMsExcel'     : 'Документ Microsoft Excel',
			'kindMsPP'        : 'Презентація Microsoft Powerpoint',
			'kindOO'          : 'Документ Open Office',
			'kindAppFlash'    : 'Flash-додаток',
			'kindPDF'         : 'Портативний формат документів (PDF)',
			'kindTorrent'     : 'Файл Bittorrent',
			'kind7z'          : 'Архів 7z',
			'kindTAR'         : 'Архів TAR',
			'kindGZIP'        : 'Архів GZIP',
			'kindBZIP'        : 'Архів BZIP',
			'kindXZ'          : 'Архів XZ',
			'kindZIP'         : 'Архів ZIP',
			'kindRAR'         : 'Архів RAR',
			'kindJAR'         : 'Файл Java JAR',
			'kindTTF'         : 'Шрифт True Type',
			'kindOTF'         : 'Шрифт Open Type',
			'kindRPM'         : 'Пакунок RPM',
			// texts
			'kindText'        : 'Текстовий документ',
			'kindTextPlain'   : 'Простий текст',
			'kindPHP'         : 'Код PHP',
			'kindCSS'         : 'Каскадна таблиця стилів (CSS)',
			'kindHTML'        : 'Документ HTML',
			'kindJS'          : 'Код Javascript',
			'kindRTF'         : 'Файл RTF',
			'kindC'           : 'Код C',
			'kindCHeader'     : 'Заголовковий код C',
			'kindCPP'         : 'Код C++',
			'kindCPPHeader'   : 'Заголовковий код C++',
			'kindShell'       : 'Скрипт Unix shell',
			'kindPython'      : 'Код Python',
			'kindJava'        : 'Код Java',
			'kindRuby'        : 'Код Ruby',
			'kindPerl'        : 'Код Perl',
			'kindSQL'         : 'Код SQL',
			'kindXML'         : 'Документ XML',
			'kindAWK'         : 'Код AWK',
			'kindCSV'         : 'Значення розділені комою (CSV)',
			'kindDOCBOOK'     : 'Документ Docbook XML',
			'kindMarkdown'    : 'Текст Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Зображення',
			'kindBMP'         : 'Зображення BMP',
			'kindJPEG'        : 'Зображення JPEG',
			'kindGIF'         : 'Зображення GIF',
			'kindPNG'         : 'Зображення PNG',
			'kindTIFF'        : 'Зображення TIFF',
			'kindTGA'         : 'Зображення TGA',
			'kindPSD'         : 'Зображення Adobe Photoshop',
			'kindXBITMAP'     : 'Зображення X bitmap',
			'kindPXM'         : 'Зображення Pixelmator',
			// media
			'kindAudio'       : 'Аудіо',
			'kindAudioMPEG'   : 'Аудіо MPEG',
			'kindAudioMPEG4'  : 'Аудіо MPEG-4',
			'kindAudioMIDI'   : 'Аудіо MIDI',
			'kindAudioOGG'    : 'Аудіо Ogg Vorbis',
			'kindAudioWAV'    : 'Аудіо WAV',
			'AudioPlaylist'   : 'Список відтворення MP3',
			'kindVideo'       : 'Відео',
			'kindVideoDV'     : 'Відео DV',
			'kindVideoMPEG'   : 'Відео MPEG',
			'kindVideoMPEG4'  : 'Відео MPEG-4',
			'kindVideoAVI'    : 'Відео AVI',
			'kindVideoMOV'    : 'Відео Quick Time',
			'kindVideoWM'     : 'Відео Windows Media',
			'kindVideoFlash'  : 'Відео Flash',
			'kindVideoMKV'    : 'Відео Matroska',
			'kindVideoOGG'    : 'Відео Ogg'
		}
	};
}));

lib/js/i18n/elfinder.hu.js000064400000105042147361034410011253 0ustar00/**
 * Hungarian translation
 * @author Gáspár Lajos <info@glsys.eu>
 * @author karrak1
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.hu = {
		translator : 'Gáspár Lajos &lt;info@glsys.eu&gt;, karrak1',
		language   : 'Hungarian',
		direction  : 'ltr',
		dateFormat : 'Y.F.d H:i:s', // will show like: 2022.Március.02 11:28:34
		fancyDateFormat : '$1 H:i', // will show like: Ma 11:28
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220302-112834
		messages   : {
			'getShareText' : 'Részvény',
			'Editor ': 'Kódszerkesztő',

			/********************************** errors **********************************/
			'error'                : 'Hiba',
			'errUnknown'           : 'Ismeretlen hiba.',
			'errUnknownCmd'        : 'Ismeretlen parancs.',
			'errJqui'              : 'Hibás jQuery UI konfiguráció. A "selectable", "draggable" és a "droppable" komponensek szükségesek.',
			'errNode'              : 'Az elFinder "DOM" elem létrehozását igényli.',
			'errURL'               : 'Hibás elFinder konfiguráció! "URL" paraméter nincs megadva.',
			'errAccess'            : 'Hozzáférés megtagadva.',
			'errConnect'           : 'Nem sikerült csatlakozni a kiszolgálóhoz.',
			'errAbort'             : 'Kapcsolat megszakítva.',
			'errTimeout'           : 'Kapcsolat időtúllépés.',
			'errNotFound'          : 'A backend nem elérhető.',
			'errResponse'          : 'Hibás backend válasz.',
			'errConf'              : 'Hibás backend konfiguráció.',
			'errJSON'              : 'PHP JSON modul nincs telepítve.',
			'errNoVolumes'         : 'Nem állnak rendelkezésre olvasható kötetek.',
			'errCmdParams'         : 'érvénytelen paraméterek a parancsban. ("$1")',
			'errDataNotJSON'       : 'A válasz nem JSON típusú adat.',
			'errDataEmpty'         : 'Nem érkezett adat.',
			'errCmdReq'            : 'A backend kérelem parancsnevet igényel.',
			'errOpen'              : '"$1" megnyitása nem sikerült.',
			'errNotFolder'         : 'Az objektum nem egy mappa.',
			'errNotFile'           : 'Az objektum nem egy fájl.',
			'errRead'              : '"$1" olvasása nem sikerült.',
			'errWrite'             : '"$1" írása nem sikerült.',
			'errPerm'              : 'Engedély megtagadva.',
			'errLocked'            : '"$1" zárolás alatt van, és nem lehet átnevezni, mozgatni vagy eltávolítani.',
			'errExists'            : '"$1" nevű fájl már létezik.',
			'errInvName'           : 'Érvénytelen fáljnév.',
			'errInvDirname'        : 'Érvénytelen mappanév.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mappa nem található.',
			'errFileNotFound'      : 'Fájl nem található.',
			'errTrgFolderNotFound' : 'Cél mappa nem található. ("$1")',
			'errPopup'             : 'A böngésző megakadályozta egy felugró ablak megnyitását. A fájl megnyitását tegye lehetővé a böngésző beállitásaiban.',
			'errMkdir'             : '"$1" mappa létrehozása sikertelen.',
			'errMkfile'            : '"$1" fájl létrehozása sikertelen.',
			'errRename'            : '"$1" átnevezése sikertelen.',
			'errCopyFrom'          : 'Fájlok másolása a kötetről nem megengedett. ("$1")',
			'errCopyTo'            : 'Fájlok másolása a kötetre nem megengedett. ("$1")',
			'errMkOutLink'         : 'Hivatkozás létrehozása a root köteten kívül nem megengedett.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Feltöltési hiba.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nem sikerült a fájlt feltölteni. ($1)', // old name - errUpload
			'errUploadNoFiles'     : 'Nem található fájl feltöltéshez.',
			'errUploadTotalSize'   : 'Az adat meghaladja a maximálisan megengedett méretet.', // old name - errMaxSize
			'errUploadFileSize'    : 'A fájl meghaladja a maximálisan megengedett méretet.', //  old name - errFileMaxSize
			'errUploadMime'        : 'A fájltípus nem engedélyezett.',
			'errUploadTransfer'    : '"$1" transzfer hiba.',
			'errUploadTemp'        : 'Sikertelen az ideiglenes fájl léterhezozása feltöltéshez.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Az objektum "$1" már létezik ezen a helyen, és nem lehet cserélni másik típusra', // new
			'errReplace'           : '"$1" nem cserélhető.',
			'errSave'              : '"$1" mentése nem sikerült.',
			'errCopy'              : '"$1" másolása nem sikerült.',
			'errMove'              : '"$1" áthelyezése nem sikerült.',
			'errCopyInItself'      : '"$1" nem másolható saját magára.',
			'errRm'                : '"$1" törlése nem sikerült.',
			'errTrash'             : 'Nem mehet a kukába.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Forrásfájl(ok) eltávolítása sikertelen.',
			'errExtract'           : 'Nem sikerült kikibontani a "$1" fájlokat.',
			'errArchive'           : 'Nem sikerült létrehozni az archívumot.',
			'errArcType'           : 'Nem támogatott archívum típus.',
			'errNoArchive'         : 'A fájl nem archív, vagy nem támogatott archívumtípust tartalmaz.',
			'errCmdNoSupport'      : 'A backend nem támogatja ezt a parancsot.',
			'errReplByChild'       : 'Az „$1” mappát nem lehet helyettesíteni egy abban található elemmel.',
			'errArcSymlinks'       : 'Biztonsági okokból az archívumok kicsomagolásának megtagadása szimbolikus linkeket vagy fájlokat tartalmaz, amelyek nem engedélyezettek.', // edited 24.06.2012
			'errArcMaxSize'        : 'Az archív fájlok meghaladják a megengedett legnagyobb méretet.',
			'errResize'            : 'Nem lehet átméretezni a (z) "$1".',
			'errResizeDegree'      : 'Érvénytelen forgatási fok.',  // added 7.3.2013
			'errResizeRotate'      : 'Nem lehet elforgatni a képet.',  // added 7.3.2013
			'errResizeSize'        : 'Érvénytelen képméret.',  // added 7.3.2013
			'errResizeNoChange'    : 'A kép mérete nem változott.',  // added 7.3.2013
			'errUsupportType'      : 'Nem támogatott fájl típus',
			'errNotUTF8Content'    : 'Az "$1" fájl nincs az UTF-8-ban, és nem szerkeszthető.',  // added 9.11.2011
			'errNetMount'          : 'Nem lehet beilleszteni a(z) "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nem támogatott protokoll.',     // added 17.04.2012
			'errNetMountFailed'    : 'A csatlakozás nem sikerült.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host szükséges.', // added 18.04.2012
			'errSessionExpires'    : 'A session inaktivitás miatt lejárt.',
			'errCreatingTempDir'   : 'Nem lehet ideiglenes könyvtárat létrehozni: "$1"',
			'errFtpDownloadFile'   : 'Nem lehet letölteni a fájlt az FTP-ről: "$1"',
			'errFtpUploadFile'     : 'Nem lehet feltölteni a fájlt az FTP-re: "$1"',
			'errFtpMkdir'          : 'Nem sikerült távoli könyvtárat létrehozni az FTP-n: "$1"',
			'errArchiveExec'       : 'Hiba a fájlok archiválásakor: "$1"',
			'errExtractExec'       : 'Hiba a fájlok kibontásakor: "$1"',
			'errNetUnMount'        : 'Nem lehet leválasztani', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nem konvertálható UTF-8-ra', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Próbálja ki a Google Chrome-ot, ha szeretné feltölteni a mappát.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Dőtúllépés a(z) "$1" keresése közben. A keresési eredmény részleges.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Új engedélyre van szükség.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'A választható tételek maximális száma 1 USD.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nem lehet visszaállítani a kukából. Nem lehet azonosítani a visszaállítási célt.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'A szerkesztő nem található ehhez a fájltípushoz.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Hiba történt a szerver oldalon.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nem sikerült üríteni a(z) "$1" mappát.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '$1 további hiba van.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Egyszerre legfeljebb $1 mappát hozhat létre.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Archívum létrehozása',
			'cmdback'      : 'Vissza',
			'cmdcopy'      : 'Másolás',
			'cmdcut'       : 'Kivágás',
			'cmddownload'  : 'Letöltés',
			'cmdduplicate' : 'Másolat készítés',
			'cmdedit'      : 'Szerkesztés',
			'cmdextract'   : 'Kibontás',
			'cmdforward'   : 'Előre',
			'cmdgetfile'   : 'Fájlok kijelölése',
			'cmdhelp'      : 'Erről a programról...',
			'cmdhome'      : 'Főkönyvtár',
			'cmdinfo'      : 'Tulajdonságok',
			'cmdmkdir'     : 'Új mappa',
			'cmdmkdirin'   : 'Új mappába', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Új fájl',
			'cmdopen'      : 'Megnyitás',
			'cmdpaste'     : 'Beillesztés',
			'cmdquicklook' : 'Előnézet',
			'cmdreload'    : 'Frissítés',
			'cmdrename'    : 'Átnevezés',
			'cmdrm'        : 'Törlés',
			'cmdtrash'     : 'A kukába', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'visszaállítás', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Keresés',
			'cmdup'        : 'Ugrás a szülőmappába',
			'cmdupload'    : 'Feltöltés',
			'cmdview'      : 'Nézet',
			'cmdresize'    : 'Átméretezés és forgatás',
			'cmdsort'      : 'Rendezés',
			'cmdnetmount'  : 'Csatlakoztassa a hálózat hangerejét', // added 18.04.2012
			'cmdnetunmount': 'Leválaszt', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Helyekhez', // added 28.12.2014
			'cmdchmod'     : 'Módváltás', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Mappa megnyitása', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Állítsa vissza az oszlop szélességét', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Teljes képernyő', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Mozog', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Ürítse ki a mappát', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Visszavonás', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Újra', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'preferenciák', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Mindet kiválaszt', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Válasszon egyet sem', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Fordított kijelölés', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Fordított kijelölés', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Fordított kijelölés', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Bezár',
			'btnSave'   : 'Ment',
			'btnRm'     : 'Töröl',
			'btnApply'  : 'Alkalmaz',
			'btnCancel' : 'Mégsem',
			'btnNo'     : 'Nem',
			'btnYes'    : 'Igen',
			'btnMount'  : 'Csatlakoztat',  // added 18.04.2012
			'btnApprove': 'Tovább $1 és jóváhagyás', // from v2.1 added 26.04.2012
			'btnUnmount': 'Leválaszt', // from v2.1 added 30.04.2012
			'btnConv'   : 'Átalakít', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Itt',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Hangerő',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Összes',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Tipus', // from v2.1 added 22.5.2015
			'btnFileName':'Fájl név',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Mentés és Kilépés', // from v2.1 added 12.6.2015
			'btnBackup' : 'Biztonsági mentés', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Átnevezés',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Átnevezés (összes)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Előző ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Következő ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Mentés másként', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Mappa megnyitás',
			'ntffile'     : 'Fájl megnyitás',
			'ntfreload'   : 'A mappa tartalmának újratöltése',
			'ntfmkdir'    : 'Mappa létrehozása',
			'ntfmkfile'   : 'Fájlok létrehozása',
			'ntfrm'       : 'Fájlok törélse',
			'ntfcopy'     : 'Fájlok másolása',
			'ntfmove'     : 'Fájlok áthelyezése',
			'ntfprepare'  : 'Meglévő elemek ellenőrzése',
			'ntfrename'   : 'Fájlok átnevezése',
			'ntfupload'   : 'Fájlok feltöltése',
			'ntfdownload' : 'Fájlok letöltése',
			'ntfsave'     : 'Fájlok mentése',
			'ntfarchive'  : 'Archívum létrehozása',
			'ntfextract'  : 'Kibontás archívumból',
			'ntfsearch'   : 'Fájlok keresése',
			'ntfresize'   : 'Képek átméretezése',
			'ntfsmth'     : 'Csinál valamit >_<',
			'ntfloadimg'  : 'Kép betöltése',
			'ntfnetmount' : 'Hálózati meghajtó hozzáadása', // added 18.04.2012
			'ntfnetunmount': 'Hálózati meghajtó leválasztása', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Képméret megállapítása', // added 20.05.2013
			'ntfreaddir'  : 'A mappa adatainak olvasása', // from v2.1 added 01.07.2013
			'ntfurl'      : 'A link URL-jének lekérdezése', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'A fájlmód megváltoztatása', // from v2.1 added 20.6.2015
			'ntfpreupload': 'A feltöltött fájlnév ellenőrzése', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Fájl létrehozása letöltésre', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Útvonalinformációk lekérése', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'A feltöltött fájl feldolgozása', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'A szemétbe dobják', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Visszaállítás a kukából', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Célmappa ellenőrzése', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Az előző művelet visszavonása', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Az előző visszavonás újraindítása', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'A tartalom ellenőrzése', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Szemét', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Ismeretlen',
			'Today'       : 'Ma',
			'Yesterday'   : 'Tegnap',
			'msJan'       : 'jan',
			'msFeb'       : 'febr',
			'msMar'       : 'márc',
			'msApr'       : 'ápr',
			'msMay'       : 'máj',
			'msJun'       : 'jún',
			'msJul'       : 'júl',
			'msAug'       : 'aug',
			'msSep'       : 'szept',
			'msOct'       : 'okt',
			'msNov'       : 'nov',
			'msDec'       : 'dec',
			'January'     : 'Január',
			'February'    : 'Február',
			'March'       : 'Március',
			'April'       : 'Április',
			'May'         : 'Május',
			'June'        : 'Június',
			'July'        : 'Július',
			'August'      : 'Augusztus',
			'September'   : 'Szeptember',
			'October'     : 'Október',
			'November'    : 'november',
			'December'    : 'december',
			'Sunday'      : 'Vasárnap',
			'Monday'      : 'Hétfő',
			'Tuesday'     : 'Kedd',
			'Wednesday'   : 'Szerda',
			'Thursday'    : 'Csütörtök',
			'Friday'      : 'Péntek',
			'Saturday'    : 'Szombat',
			'Sun'         : 'V',
			'Mon'         : 'H',
			'Tue'         : 'K',
			'Wed'         : 'Sz',
			'Thu'         : 'Cs',
			'Fri'         : 'P',
			'Sat'         : 'Szo',

			/******************************** sort variants ********************************/
			'sortname'          : 'név szerint',
			'sortkind'          : 'kedvesen',
			'sortsize'          : 'méret szerint',
			'sortdate'          : 'dátum szerint',
			'sortFoldersFirst'  : 'Először a mappák',
			'sortperm'          : 'engedély alapján', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'mód szerint',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'tulajdonos alapján',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'csoportok szerint',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Szintén Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'Új mappa',   // added 10.11.2015
			'Archive'           : 'ÚjArchívum',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Új fájl.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : 'Új fájl.$1',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Megerősítés szükséges',
			'confirmRm'       : 'Valóban törölni akarja a kijelölt adatokat?<br/>Ez később nem fordítható vissza!',
			'confirmRepl'     : 'Lecseréli a régi fájlt egy újra? (Ha mappákat tartalmaz, a rendszer egyesíti. A biztonsági mentéshez és a cseréhez válassza a Biztonsági mentés lehetőséget.)',
			'confirmRest'     : 'Lecseréli a meglévő elemet a kukában lévő elemre?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nem UTF-8.<br/>Átalakítsam UTF-8-ra?<br/>A tartalom mentés után UTF-8 lesz..', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Ennek a fájlnak a karakterkódolása nem észlelhető. Átmenetileg át kell konvertálni UTF-8-ra a szerkesztéshez.<br/>Kérjük, válassza ki a fájl karakterkódolását.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Megváltozott.<br/>Módosítások elvesznek, ha nem menti el azokat.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Biztos, hogy áthelyezi az elemeket a kukába?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Biztosan áthelyezi az elemeket ide: "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Mindenre vonatkozik',
			'name'            : 'Név',
			'size'            : 'Méret',
			'perms'           : 'Jogok',
			'modify'          : 'Módosítva',
			'kind'            : 'Típus',
			'read'            : 'olvasás',
			'write'           : 'írás',
			'noaccess'        : '-',
			'and'             : 'és',
			'unknown'         : 'ismeretlen',
			'selectall'       : 'Összes kijelölése',
			'selectfiles'     : 'Fájlok kijelölése',
			'selectffile'     : 'Első fájl kijelölése',
			'selectlfile'     : 'Utolsó fájl kijelölése',
			'viewlist'        : 'Lista nézet',
			'viewicons'       : 'Ikon nézet',
			'viewSmall'       : 'Kis ikonok', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Közepes ikonok', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Nagy ikonok', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra nagy ikonok', // from v2.1.39 added 22.5.2018
			'places'          : 'Helyek',
			'calc'            : 'Kiszámítja',
			'path'            : 'Útvonal',
			'aliasfor'        : 'Cél',
			'locked'          : 'Zárolt',
			'dim'             : 'Méretek',
			'files'           : 'Fájlok',
			'folders'         : 'Mappák',
			'items'           : 'Elemek',
			'yes'             : 'igen',
			'no'              : 'nem',
			'link'            : 'Parancsikon',
			'searcresult'     : 'Keresés eredménye',
			'selected'        : 'kijelölt elemek',
			'about'           : 'Névjegy',
			'shortcuts'       : 'Gyorsbillenytyűk',
			'help'            : 'Súgó',
			'webfm'           : 'Webes fájlkezelő',
			'ver'             : 'Verzió',
			'protocolver'     : 'protokol verzió',
			'homepage'        : 'Projekt honlap',
			'docs'            : 'Dokumentáció',
			'github'          : 'Hozz létre egy új verziót a Github-on',
			'twitter'         : 'Kövess minket a twitter-en',
			'facebook'        : 'Csatlakozz hozzánk a facebook-on',
			'team'            : 'Csapat',
			'chiefdev'        : 'vezető fejlesztő',
			'developer'       : 'fejlesztő',
			'contributor'     : 'külsős hozzájáruló',
			'maintainer'      : 'karbantartó',
			'translator'      : 'fordító',
			'icons'           : 'Ikonok',
			'dontforget'      : 'törölközőt ne felejts el hozni!',
			'shortcutsof'     : 'Parancsikonok letiltva',
			'dropFiles'       : 'Fájlok dobása ide',
			'or'              : 'vagy',
			'selectForUpload' : 'fájlok böngészése',
			'moveFiles'       : 'Fájlok áthelyezése',
			'copyFiles'       : 'Fájlok másolása',
			'restoreFiles'    : 'Elemek visszaállítása', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Távolítsa el a helyekről',
			'aspectRatio'     : 'Oldalarány',
			'scale'           : 'Skála',
			'width'           : 'Szélesség',
			'height'          : 'Magasság',
			'resize'          : 'Átméretezés',
			'crop'            : 'Vág',
			'rotate'          : 'Forgat',
			'rotate-cw'       : 'Forgassa el 90 fokkal',
			'rotate-ccw'      : 'Forgassa el 90 fokkal CCW irányban',
			'degree'          : '°',
			'netMountDialogTitle' : 'Csatlakoztassa a hálózati kötetet', // added 18.04.2012
			'protocol'            : 'Protokoll', // added 18.04.2012
			'host'                : 'Házigazda', // added 18.04.2012
			'port'                : 'Kikötő', // added 18.04.2012
			'user'                : 'Felhasználó', // added 18.04.2012
			'pass'                : 'Jelszó', // added 18.04.2012
			'confirmUnmount'      : 'Leválasztod $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Fájlok dobása vagy beillesztése a böngészőből', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Dobja ide a fájlokat, illesszen be URL-eket vagy képeket (vágólap).', // from v2.1 added 07.04.2014
			'encoding'        : 'Kódolás', // from v2.1 added 19.12.2014
			'locale'          : 'Nyelv',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Cél: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Keresés a MIME típus bevitele alapján', // from v2.1 added 22.5.2015
			'owner'           : 'Tulajdonos', // from v2.1 added 20.6.2015
			'group'           : 'Csoport', // from v2.1 added 20.6.2015
			'other'           : 'Egyéb', // from v2.1 added 20.6.2015
			'execute'         : 'Végrehajt', // from v2.1 added 20.6.2015
			'perm'            : 'Engedély', // from v2.1 added 20.6.2015
			'mode'            : 'Mód', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'A mappa üres', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'A mappa üres\\Elem eldobása', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'A mappa üres\\Hosszú koppintás elemek hozzáadásához', // from v2.1.6 added 30.12.2015
			'quality'         : 'Minőség', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatikus szinkronizáció',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Mozgatás fel',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL-link letöltése', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Kiválasztott elemek ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Mappa ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Offline hozzáférés engedélyezése', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Újrahitelesítéshez', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Most betölt...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Több fájl megnyitása', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Megpróbálja megnyitni a $1 fájlokat. Biztosan meg akarja nyitni a böngészőben?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'A keresési eredmények üresek a keresési célban.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Ez egy fájl szerkesztése.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 elemet választott ki.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 elem van a vágólapon.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'A növekményes keresés csak az aktuális nézetből történik.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Helyezze vissza', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 kész', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Helyi menü', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Lapozás', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Kötetgyökerek', // from v2.1.16 added 16.9.2016
			'reset'           : 'Visszaállítás', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Háttérszín', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Színválasztó', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8 képpontos rács', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Engedélyezve', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Tiltva', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'A keresési eredmények üresek az aktuális nézetben.\\ANyomja meg az [Enter] billentyűt a keresési cél kibontásához.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Az első betűs keresés eredménye üres az aktuális nézetben.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Szöveges címke', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 perc van hátra', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Nyissa meg újra a kiválasztott kódolással', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Mentés a kiválasztott kódolással', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Mappa kiválasztása', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Első betű keresése', // from v2.1.23 added 24.3.2017
			'presets'         : 'Előbeállítások', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Túl sok az elem, így nem kerülhet a szemétbe.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Ürítse ki a „$1” mappát.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Nincsenek elemek a "$1" mappában.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferencia', // from v2.1.26 added 28.6.2017
			'language'        : 'Nyelv', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializálja az ebben a böngészőben mentett beállításokat', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Eszköztár beállításai', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 karakter maradt.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 sor maradt.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Összeg', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Durva fájlméret', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fókuszáljon a párbeszédpanel elemére az egérmutatóval',  // from v2.1.30 added 2.11.2017
			'select'          : 'Válassza ki', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Művelet a fájl kiválasztásakor', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Nyissa meg a legutóbb használt szerkesztővel', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Fordított kijelölés', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Biztosan át szeretné nevezni $1 kiválasztott elemet, például $2?<br/>Ez nem vonható vissza!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Kötegelt átnevezés', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Szám', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Előtag hozzáadása', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Utótag hozzáadása', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Utótag hozzáadása', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Oszlopbeállítások (lista nézet)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Minden változás azonnal megjelenik az archívumban.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'A módosítások csak akkor jelennek meg, ha leválasztják a kötetet.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Az erre a kötetre szerelt következő kötet(ek) szintén le vannak szerelve. Biztosan leválasztja?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Kiválasztási információ', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmusok a fájl hash megjelenítéséhez', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Információs elemek (Információs panel kiválasztása)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Nyomja meg újra a kilépéshez.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Eszköztár', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Munkaterület', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Párbeszéd', // from v2.1.38 added 4.4.2018
			'all'             : 'Minden', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ikonméret (Ikonok nézet)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Nyissa meg a teljes méretű szerkesztő ablakot', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Mivel az API-n keresztüli konvertálás jelenleg nem érhető el, kérjük, konvertálja a webhelyen.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'A konvertálás után fel kell töltenie az elem URL-jét vagy egy letöltött fájlt a konvertált fájl mentéséhez.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konvertálás a webhelyen: $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrációk', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Ez az elFinder a következő külső szolgáltatásokat tartalmazza. Kérjük, használat előtt ellenőrizze a használati feltételeket, az adatvédelmi szabályzatot stb.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Rejtett elemek megjelenítése', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Rejtett elemek elrejtése', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Rejtett elemek megjelenítése/elrejtése', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Az „Új fájl” funkcióval engedélyezhető fájltípusok', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'A szövegfájl típusa', // from v2.1.41 added 7.8.2018
			'add'             : 'Hozzáadás', // from v2.1.41 added 7.8.2018
			'theme'           : 'Téma', // from v2.1.43 added 19.10.2018
			'default'         : 'Alapértelmezett', // from v2.1.43 added 19.10.2018
			'description'     : 'Leírás', // from v2.1.43 added 19.10.2018
			'website'         : 'Weboldal', // from v2.1.43 added 19.10.2018
			'author'          : 'Szerző', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'Engedély', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Ez az elem nem menthető. A szerkesztések elvesztésének elkerülése érdekében exportálnia kell őket a számítógépére.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Kattintson duplán a fájlra a kiválasztásához.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Teljes képernyős mód használata', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ismeretlen',
			'kindRoot'        : 'Kötetgyökér', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mappa',
			'kindSelects'     : 'Válogatás', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Parancsikon',
			'kindAliasBroken' : 'Hibás parancsikon',
			// applications
			'kindApp'         : 'Alkalmazás',
			'kindPostscript'  : 'Postscript dokumentum',
			'kindMsOffice'    : 'Microsoft Office dokumentum',
			'kindMsWord'      : 'Microsoft Word dokumentum',
			'kindMsExcel'     : 'Microsoft Excel dokumentum',
			'kindMsPP'        : 'Microsoft Powerpoint bemutató',
			'kindOO'          : 'Open Office dokumentum',
			'kindAppFlash'    : 'Flash alkalmazás',
			'kindPDF'         : 'Hordozható dokumentum formátum (PDF)',
			'kindTorrent'     : 'Bittorrent fájl',
			'kind7z'          : '7z archívum',
			'kindTAR'         : 'TAR archívum',
			'kindGZIP'        : 'GZIP archívum',
			'kindBZIP'        : 'BZIP archívum',
			'kindXZ'          : 'XZ archívum',
			'kindZIP'         : 'ZIP archívum',
			'kindRAR'         : 'RAR archívum',
			'kindJAR'         : 'Java JAR fájl',
			'kindTTF'         : 'True Type betűtípus',
			'kindOTF'         : 'Nyissa meg a Type betűtípust',
			'kindRPM'         : 'RPM csomag',
			// texts
			'kindText'        : 'Szöveges dokumentum',
			'kindTextPlain'   : 'Egyszerű szöveg',
			'kindPHP'         : 'PHP forráskód',
			'kindCSS'         : 'Lépcsőzetes stíluslap',
			'kindHTML'        : 'HTML dokumentum',
			'kindJS'          : 'Javascript forráskód',
			'kindRTF'         : 'Rich Text formátum',
			'kindC'           : 'C forráskód',
			'kindCHeader'     : 'C header forráskód',
			'kindCPP'         : 'C++ forráskód',
			'kindCPPHeader'   : 'C++ header forráskód',
			'kindShell'       : 'Unix shell szkript',
			'kindPython'      : 'Python forráskód',
			'kindJava'        : 'Java forráskód',
			'kindRuby'        : 'Ruby forráskód',
			'kindPerl'        : 'Perl szkript',
			'kindSQL'         : 'SQL forráskód',
			'kindXML'         : 'XML dokumentum',
			'kindAWK'         : 'AWK forráskód',
			'kindCSV'         : 'Vesszővel elválasztott értékek',
			'kindDOCBOOK'     : 'Docbook XML dokumentum',
			'kindMarkdown'    : 'Markdown szöveg', // added 20.7.2015
			// images
			'kindImage'       : 'Kép',
			'kindBMP'         : 'BMP kép',
			'kindJPEG'        : 'JPEG kép',
			'kindGIF'         : 'GIF kép',
			'kindPNG'         : 'PNG kép',
			'kindTIFF'        : 'TIFF kép',
			'kindTGA'         : 'TGA kép',
			'kindPSD'         : 'Adobe Photoshop kép',
			'kindXBITMAP'     : 'X bittérképes kép',
			'kindPXM'         : 'Pixelmator kép',
			// media
			'kindAudio'       : 'Hangfájl',
			'kindAudioMPEG'   : 'MPEG hangfájl',
			'kindAudioMPEG4'  : 'MPEG-4 hangfájl',
			'kindAudioMIDI'   : 'MIDI hangfájl',
			'kindAudioOGG'    : 'Ogg Vorbis hangfájl',
			'kindAudioWAV'    : 'WAV hangfájl',
			'AudioPlaylist'   : 'MP3 lejátszási lista',
			'kindVideo'       : 'Film',
			'kindVideoDV'     : 'DV film',
			'kindVideoMPEG'   : 'MPEG film',
			'kindVideoMPEG4'  : 'MPEG-4 film',
			'kindVideoAVI'    : 'AVI film',
			'kindVideoMOV'    : 'Quick Time film',
			'kindVideoWM'     : 'Windows Media film',
			'kindVideoFlash'  : 'Flash film',
			'kindVideoMKV'    : 'Matroska film',
			'kindVideoOGG'    : 'Ogg film'
		}
	};
}));
lib/js/i18n/elfinder.sl.js000064400000102065147361034410011257 0ustar00/**
 * Slovenščina translation
 * @author Damjan Rems <d_rems at yahoo.com>
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sl = {
		translator : 'Damjan Rems &lt;d_rems at yahoo.com&gt;',
		language   : 'Slovenščina',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 03.03.2022 12:34
		fancyDateFormat : '$1 H:i', // will show like: Danes 12:34
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-123418
		messages   : {
			'getShareText' : 'Deliti',
			'Editor ': 'Urejevalnik kode',

			/********************************** errors **********************************/
			'error'                : 'Napaka',
			'errUnknown'           : 'Neznana napaka.',
			'errUnknownCmd'        : 'Neznan ukaz.',
			'errJqui'              : 'Napačna jQuery UI nastavitev. Selectable, draggable in droppable dodatki morajo biti vključeni.',
			'errNode'              : 'elFinder potrebuje "DOM Element".',
			'errURL'               : 'Napačna nastavitev elFinder-ja! Manjka URL nastavitev.',
			'errAccess'            : 'Dostop zavrnjen.',
			'errConnect'           : 'Ne morem se priključiti na "backend".',
			'errAbort'             : 'Povezava prekinjena (aborted).',
			'errTimeout'           : 'Povezava potekla (timeout).',
			'errNotFound'          : 'Nisem našel "backend-a".',
			'errResponse'          : 'Napačni "backend" odgovor.',
			'errConf'              : 'Napačna "backend" nastavitev.',
			'errJSON'              : 'JSON modul ni instaliran.',
			'errNoVolumes'         : 'Bralne količine niso na voljo.',
			'errCmdParams'         : 'Napačni parametri za ukaz "$1".',
			'errDataNotJSON'       : 'Podatki niso v JSON obliki.',
			'errDataEmpty'         : 'Ni podatkov oz. so prazni.',
			'errCmdReq'            : '"Backend" zahtevek potrebuje ime ukaza.',
			'errOpen'              : '"$1" ni možno odpreti.',
			'errNotFolder'         : 'Objekt ni mapa.',
			'errNotFile'           : 'Objekt ni datoteka.',
			'errRead'              : '"$1" ni možno brati.',
			'errWrite'             : 'Ne morem pisati v "$1".',
			'errPerm'              : 'Dostop zavrnjen.',
			'errLocked'            : '"$1" je zaklenjen(a) in je ni možno preimenovati, premakniti ali izbrisati.',
			'errExists'            : 'Datoteka z imenom "$1" že obstaja.',
			'errInvName'           : 'Napačno ime datoteke.',
			'errInvDirname'        : 'Neveljavno ime mape.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mape nisem našel.',
			'errFileNotFound'      : 'Datoteke nisem našel.',
			'errTrgFolderNotFound' : 'Ciljna mapa "$1" ne obstaja.',
			'errPopup'             : 'Brskalnik je preprečil prikaz (popup) okna. Za vpogled datoteke omogočite nastavitev v vašem brskalniku.',
			'errMkdir'             : 'Ni možno dodati mape "$1".',
			'errMkfile'            : 'Ni možno dodati datoteke "$1".',
			'errRename'            : 'Ni možno preimenovati "$1".',
			'errCopyFrom'          : 'Kopiranje datotek iz "$1" ni dovoljeno.',
			'errCopyTo'            : 'Kopiranje datotek na "$1" ni dovoljeno.',
			'errMkOutLink'         : 'Povezave z izven korenskega nosilca ni mogoče ustvariti.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Napaka pri prenosu.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" ni možno naložiti (upload).', // old name - errUpload
			'errUploadNoFiles'     : 'Ni datotek za nalaganje (upload).',
			'errUploadTotalSize'   : 'Podatki presegajo največjo dovoljeno velikost.', // old name - errMaxSize
			'errUploadFileSize'    : 'Datoteka presega največjo dovoljeno velikost.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Datoteke s to končnico niso dovoljene.',
			'errUploadTransfer'    : '"$1" napaka pri prenosu.',
			'errUploadTemp'        : 'Ni mogoče ustvariti začasne datoteke za nalaganje.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" že obstaja na tej lokaciji in ga ni mogoče nadomestiti s predmetom druge vrste.', // new
			'errReplace'           : '"$1" ni mogoče zamenjati.',
			'errSave'              : '"$1" ni možno shraniti.',
			'errCopy'              : '"$1" ni možno kopirati.',
			'errMove'              : '"$1" ni možno premakniti.',
			'errCopyInItself'      : '"$1" ni možno kopirati samo vase.',
			'errRm'                : '"$1" ni možno izbrisati.',
			'errTrash'             : 'Ni mogoče v smeti.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Izvornih datotek ni mogoče odstraniti.',
			'errExtract'           : 'Datotek iz "$1" ni možno odpakirati.',
			'errArchive'           : 'Napaka pri delanju arhiva.',
			'errArcType'           : 'Nepodprta vrsta arhiva.',
			'errNoArchive'         : 'Datoteka ni arhiv ali vrsta arhiva ni podprta.',
			'errCmdNoSupport'      : '"Backend" ne podpira tega ukaza.',
			'errReplByChild'       : 'Mape “$1” ni možno zamenjati z vsebino mape.',
			'errArcSymlinks'       : 'Zaradi varnostnih razlogov arhiva ki vsebuje "symlinks" ni možno odpakirati.', // edited 24.06.2012
			'errArcMaxSize'        : 'Datoteke v arhivu presegajo največjo dovoljeno velikost.',
			'errResize'            : '"$1" ni možno razširiti.',
			'errResizeDegree'      : 'Neveljavna stopnja vrtenja.',  // added 7.3.2013
			'errResizeRotate'      : 'Slike ni mogoče zasukati.',  // added 7.3.2013
			'errResizeSize'        : 'Neveljavna velikost slike.',  // added 7.3.2013
			'errResizeNoChange'    : 'Velikost slike ni spremenjena.',  // added 7.3.2013
			'errUsupportType'      : 'Nepodprta vrsta datoteke.',
			'errNotUTF8Content'    : 'Datoteka "$1" ni v UTF-8 in je ni mogoče urejati.',  // added 9.11.2011
			'errNetMount'          : '"$1" ni mogoče priklopiti.', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nepodprt protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Montaža ni uspela.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Potreben je gostitelj.', // added 18.04.2012
			'errSessionExpires'    : 'Vaša seja je potekla zaradi neaktivnosti.',
			'errCreatingTempDir'   : 'Ni mogoče ustvariti začasnega imenika: "$1"',
			'errFtpDownloadFile'   : 'Ni mogoče prenesti datoteke s FTP: "$1"',
			'errFtpUploadFile'     : 'Datoteke ni mogoče naložiti na FTP: "$1"',
			'errFtpMkdir'          : 'Ni mogoče ustvariti oddaljenega imenika na FTP: "$1"',
			'errArchiveExec'       : 'Napaka pri arhiviranju datotek: "$1"',
			'errExtractExec'       : 'Napaka pri ekstrakciji datotek: "$1"',
			'errNetUnMount'        : 'Ni mogoče odklopiti.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Ni mogoče pretvoriti v UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Preizkusite sodobni brskalnik, če želite naložiti mapo.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Časovna omejitev je potekla med iskanjem »$1«. Rezultat iskanja je delen.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Potrebno je ponovno pooblastilo.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Največje število izbirnih elementov je 1 dolar.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Ni mogoče obnoviti iz koša. Cilja obnovitve ni mogoče določiti.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Urejevalnika za to vrsto datoteke ni bilo mogoče najti.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Na strani strežnika je prišlo do napake.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Ni mogoče izprazniti mape "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Obstaja še 1 $ napak.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Naenkrat lahko ustvarite do $1 map.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Naredi arhiv',
			'cmdback'      : 'Nazaj',
			'cmdcopy'      : 'Kopiraj',
			'cmdcut'       : 'Izreži',
			'cmddownload'  : 'Poberi (download)',
			'cmdduplicate' : 'Podvoji',
			'cmdedit'      : 'Uredi datoteko',
			'cmdextract'   : 'Odpakiraj datoteke iz arhiva',
			'cmdforward'   : 'Naprej',
			'cmdgetfile'   : 'Izberi datoteke',
			'cmdhelp'      : 'Več o',
			'cmdhome'      : 'Domov',
			'cmdinfo'      : 'Lastnosti',
			'cmdmkdir'     : 'Nova mapa',
			'cmdmkdirin'   : 'V novo mapo', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nova datoteka',
			'cmdopen'      : 'Odpri',
			'cmdpaste'     : 'Prilepi',
			'cmdquicklook' : 'Hitri ogled',
			'cmdreload'    : 'Osveži',
			'cmdrename'    : 'Preimenuj',
			'cmdrm'        : 'Izbriši',
			'cmdtrash'     : 'V smeti', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Obnovi', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Poišči datoteke',
			'cmdup'        : 'Mapa nazaj',
			'cmdupload'    : 'Naloži (upload)',
			'cmdview'      : 'Ogled',
			'cmdresize'    : 'Povečaj (pomanjšaj) sliko',
			'cmdsort'      : 'Razvrsti',
			'cmdnetmount'  : 'Namestite omrežno glasnost', // added 18.04.2012
			'cmdnetunmount': 'Odklopi', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Na mesta', // added 28.12.2014
			'cmdchmod'     : 'Spremeni način', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Odprite mapo', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Ponastavi širino stolpca', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Celozaslonski način', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Premakni se', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Izpraznite mapo', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Razveljavi', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Ponovi', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Nastavitve', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Izberi vse', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Izberite nobenega', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Obrni izbor', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Odpri v novem oknu', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Skrij (nastavitev)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Zapri',
			'btnSave'   : 'Shrani',
			'btnRm'     : 'Izbriši',
			'btnApply'  : 'Uporabi',
			'btnCancel' : 'Prekliči',
			'btnNo'     : 'Ne',
			'btnYes'    : 'Da',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Pojdi na $1 in odobri', // from v2.1 added 26.04.2012
			'btnUnmount': 'Odklopi', // from v2.1 added 30.04.2012
			'btnConv'   : 'Pretvorba', // from v2.1 added 08.04.2014
			'btnCwd'    : 'tukaj',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Glasnost',    // from v2.1 added 22.5.2015
			'btnAll'    : 'vse',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Vrsta MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Ime datoteke',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Shrani in zapri', // from v2.1 added 12.6.2015
			'btnBackup' : 'Rezerva', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Preimenuj',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Preimenuj (vse)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prejšnja (1 $/2 $)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Naslednji (1 $/2 $)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Shrani kot', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Odpri mapo',
			'ntffile'     : 'Odpri datoteko',
			'ntfreload'   : 'Osveži vsebino mape',
			'ntfmkdir'    : 'Ustvarjam mapo',
			'ntfmkfile'   : 'Ustvarjam datoteke',
			'ntfrm'       : 'Brišem datoteke',
			'ntfcopy'     : 'Kopiram datoteke',
			'ntfmove'     : 'Premikam datoteke',
			'ntfprepare'  : 'Pripravljam se na kopiranje datotek',
			'ntfrename'   : 'Preimenujem datoteke',
			'ntfupload'   : 'Nalagam (upload) datoteke',
			'ntfdownload' : 'Pobiram (download) datoteke',
			'ntfsave'     : 'Shranjujem datoteke',
			'ntfarchive'  : 'Ustvarjam arhiv',
			'ntfextract'  : 'Razpakiram datoteke iz arhiva',
			'ntfsearch'   : 'Iščem datoteke',
			'ntfresize'   : 'Spreminjanje velikosti slik',
			'ntfsmth'     : 'Počakaj delam >_<',
			'ntfloadimg'  : 'Nalagam sliko',
			'ntfnetmount' : 'Montaža omrežne glasnosti', // added 18.04.2012
			'ntfnetunmount': 'Odstranitev omrežnega nosilca', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Pridobivanje dimenzije slike', // added 20.05.2013
			'ntfreaddir'  : 'Branje informacij o mapi', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Pridobivanje URL-ja povezave', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Spreminjanje načina datoteke', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Preverjanje imena datoteke za nalaganje', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Ustvarjanje datoteke za prenos', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Pridobivanje informacij o poti', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Obdelava naložene datoteke', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Vrzi v smeti', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Obnovitev iz koša', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Preverjanje ciljne mape', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Razveljavitev prejšnje operacije', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Ponavljanje prejšnjega razveljavljenega', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Preverjanje vsebine', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'smeti', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'neznan',
			'Today'       : 'Danes',
			'Yesterday'   : 'Včeraj',
			'msJan'       : 'Jan',
			'msFeb'       : 'februarja',
			'msMar'       : 'mar',
			'msApr'       : 'apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'jul',
			'msAug'       : 'Avg',
			'msSep'       : 'sep',
			'msOct'       : 'Okt',
			'msNov'       : 'nov',
			'msDec'       : 'dec',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Marec',
			'April'       : 'aprila',
			'May'         : 'Maj',
			'June'        : 'Junij',
			'July'        : 'Julij',
			'August'      : 'Avgust',
			'September'   : 'septembra',
			'October'     : 'Oktober',
			'November'    : 'novembra',
			'December'    : 'december',
			'Sunday'      : 'Nedelja',
			'Monday'      : 'Ponedeljek',
			'Tuesday'     : 'Torek',
			'Wednesday'   : 'Sreda',
			'Thursday'    : 'Četrtek',
			'Friday'      : 'Petek',
			'Saturday'    : 'Sobota',
			'Sun'         : 'Ned',
			'Mon'         : 'Pon',
			'Tue'         : 'Tor',
			'Wed'         : 'Sre',
			'Thu'         : 'Čet',
			'Fri'         : 'Pet',
			'Sat'         : 'Sob',

			/******************************** sort variants ********************************/
			'sortname'          : 'po imenu',
			'sortkind'          : 'po vrsti',
			'sortsize'          : 'po velikosti',
			'sortdate'          : 'po datumu',
			'sortFoldersFirst'  : 'Najprej mape',
			'sortperm'          : 'z dovoljenjem', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'po načinu',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 's strani lastnika',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'po skupini',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Tudi Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'Nova mapa',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Nova datoteka.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: datoteka',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '1 $: 2 $',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Zahtevana je potrditev',
			'confirmRm'       : 'Ste prepričani, da želite izbrisati datoteko?<br/>POZOR! Tega ukaza ni možno preklicati!',
			'confirmRepl'     : 'Zamenjam staro datoteko z novo?',
			'confirmRest'     : 'Ali želite obstoječi element zamenjati s predmetom v smetnjaku?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ni v UTF-8<br/>Pretvoriti v UTF-8?<br/>Vsebina postane UTF-8 s shranjevanjem po pretvorbi.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Kodiranja znakov te datoteke ni bilo mogoče zaznati. Za urejanje ga je treba začasno pretvoriti v UTF-8.<br/>Prosimo, izberite kodiranje znakov te datoteke.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Spremenjeno je bilo.<br/>Če ne shranite sprememb, boste izgubili delo.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ali ste prepričani, da želite premakniti predmete v koš za smeti?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Ali ste prepričani, da želite premakniti elemente v »$1«?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Uporabi pri vseh',
			'name'            : 'Ime',
			'size'            : 'Velikost',
			'perms'           : 'Dovoljenja',
			'modify'          : 'Spremenjeno',
			'kind'            : 'Vrsta',
			'read'            : 'beri',
			'write'           : 'piši',
			'noaccess'        : 'ni dostopa',
			'and'             : 'in',
			'unknown'         : 'neznan',
			'selectall'       : 'Izberi vse datoteke',
			'selectfiles'     : 'Izberi datotek(o)e',
			'selectffile'     : 'Izberi prvo datoteko',
			'selectlfile'     : 'Izberi zadnjo datoteko',
			'viewlist'        : 'Seznam',
			'viewicons'       : 'Ikone',
			'viewSmall'       : 'Majhne ikone', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Srednje ikone', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Velike ikone', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Izjemno velike ikone', // from v2.1.39 added 22.5.2018
			'places'          : 'Mesta (places)',
			'calc'            : 'Izračun',
			'path'            : 'Pot do',
			'aliasfor'        : 'Sopomenka (alias) za',
			'locked'          : 'Zaklenjeno',
			'dim'             : 'Dimenzije',
			'files'           : 'Datoteke',
			'folders'         : 'Mape',
			'items'           : 'Predmeti',
			'yes'             : 'da',
			'no'              : 'ne',
			'link'            : 'Povezava',
			'searcresult'     : 'Rezultati iskanja',
			'selected'        : 'izbrani predmeti',
			'about'           : 'Več o',
			'shortcuts'       : 'Bližnjice',
			'help'            : 'Pomoč',
			'webfm'           : 'Spletni upravitelj datotek',
			'ver'             : 'Verzija',
			'protocolver'     : 'verzija protokola',
			'homepage'        : 'Domača stran',
			'docs'            : 'Dokumentacija',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Sledi na twitterju',
			'facebook'        : 'Pridruži se nam na facebook-u',
			'team'            : 'Tim',
			'chiefdev'        : 'Glavni razvijalec',
			'developer'       : 'razvijalec',
			'contributor'     : 'sodelavec',
			'maintainer'      : 'vzdrževalec',
			'translator'      : 'prevajalec',
			'icons'           : 'Ikone',
			'dontforget'      : 'In ne pozabi na brisačo',
			'shortcutsof'     : 'Bližnjica onemogočena',
			'dropFiles'       : 'Datoteke spusti tukaj',
			'or'              : 'ali',
			'selectForUpload' : 'Izberi datoteke za nalaganje',
			'moveFiles'       : 'Premakni datoteke',
			'copyFiles'       : 'Kopiraj datoteke',
			'restoreFiles'    : 'Obnovite predmete', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Izbriši iz mesta (places)',
			'aspectRatio'     : 'Razmerje slike',
			'scale'           : 'Razširi',
			'width'           : 'Širina',
			'height'          : 'Višina',
			'resize'          : 'Povečaj',
			'crop'            : 'Obreži',
			'rotate'          : 'Zavrti',
			'rotate-cw'       : 'Zavrti 90 st. v smeri ure',
			'rotate-ccw'      : 'Zavrti 90 st. v obratni smeri ure',
			'degree'          : 'Stopnja',
			'netMountDialogTitle' : 'Namestite omrežno glasnost', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Gostitelj', // added 18.04.2012
			'port'                : 'pristanišče', // added 18.04.2012
			'user'                : 'Uporabnik', // added 18.04.2012
			'pass'                : 'Geslo', // added 18.04.2012
			'confirmUnmount'      : 'Ali odklopite $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Spustite ali prilepite datoteke iz brskalnika', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Sem spustite datoteke, prilepite URL-je ali slike (odložišče).', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodiranje', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Cilj: 1 dolar',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Iskanje po vhodni vrsti MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Lastnik', // from v2.1 added 20.6.2015
			'group'           : 'Skupina', // from v2.1 added 20.6.2015
			'other'           : 'Drugo', // from v2.1 added 20.6.2015
			'execute'         : 'Izvedite', // from v2.1 added 20.6.2015
			'perm'            : 'dovoljenje', // from v2.1 added 20.6.2015
			'mode'            : 'način', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mapa je prazna', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mapa je prazna\\A Spustite, da dodate elemente', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mapa je prazna\\A Dolg tapnite, da dodate elemente', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kakovost', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Samodejna sinhronizacija',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Pomakni se navzgor',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Pridobite URL povezavo', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Izbrani predmeti (1 $)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID mape', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Dovoli dostop brez povezave', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Za ponovno avtentikacijo', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Zdaj se nalaga ...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Odprite več datotek', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Poskušate odpreti datoteke $1. Ali ste prepričani, da želite odpreti v brskalniku?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Rezultati iskanja so prazni v iskalnem cilju.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Ureja datoteko.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Izbrali ste $1 predmetov.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'V odložišče imate 1 $ elementov.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementalno iskanje je samo iz trenutnega pogleda.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Obnovi', // from v2.1.15 added 3.8.2016
			'complete'        : '1 $ dokončan', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontekstni meni', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Obračanje strani', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volumenske korenine', // from v2.1.16 added 16.9.2016
			'reset'           : 'Ponastaviti', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Barva ozadja', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Izbirnik barv', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Mreža 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Omogočeno', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Onemogočeno', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Rezultati iskanja so prazni v trenutnem pogledu.\\APritisnite [Enter], da razširite cilj iskanja.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Besedilna oznaka', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'Še 1 min', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Ponovno odprite z izbranim kodiranjem', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Shrani z izbranim kodiranjem', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Izberite mapo', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Iskanje prve črke', // from v2.1.23 added 24.3.2017
			'presets'         : 'Prednastavitve', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Preveč je predmetov, tako da ne gre v smeti.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Izpraznite mapo "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'V mapi "$1" ni elementov.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Prednost', // from v2.1.26 added 28.6.2017
			'language'        : 'Jezik', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializirajte nastavitve, shranjene v tem brskalniku', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Nastavitve orodne vrstice', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... ostane 1 znak.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... še $1 vrstice.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'vsota', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Približna velikost datoteke', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Osredotočite se na element pogovornega okna s pomikom miške',  // from v2.1.30 added 2.11.2017
			'select'          : 'Izberite', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Dejanje ob izbiri datoteke', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Odprite z nazadnje uporabljenim urejevalnikom', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Obrni izbor', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Ali ste prepričani, da želite preimenovati izbrane elemente $1, kot je $2?<br/>Tega ni mogoče razveljaviti!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Paketno preimenovanje', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Številka', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Dodajte predpono', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Dodajte pripono', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Spremeni razširitev', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Nastavitve stolpcev (pogled seznama)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Vse spremembe se bodo takoj odrazile v arhivu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Vse spremembe se ne bodo odrazile, dokler ne odklopite tega nosilca.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Naslednji nosilci, nameščeni na ta nosilec, so se prav tako odklopili. Ali ste prepričani, da ga boste odklopili?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informacije o izbiri', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmi za prikaz hash datoteke', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Informacijski elementi (informacijska plošča za izbor)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ponovno pritisnite za izhod.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Orodna vrstica', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Delovni prostor', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'vse', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Velikost ikone (pogled ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Odprite okno povečanega urejevalnika', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Ker pretvorba prek API-ja trenutno ni na voljo, prosimo pretvorite na spletnem mestu.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Po pretvorbi morate biti naloženi z URL-jem elementa ali preneseno datoteko, da shranite pretvorjeno datoteko.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Pretvarjanje na spletnem mestu $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integracije', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Ta elFinder ima vgrajene naslednje zunanje storitve. Pred uporabo preverite pogoje uporabe, politiko zasebnosti itd.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Pokaži skrite predmete', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Skrij skrite predmete', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Pokaži/skrij skrite predmete', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Vrste datotek, ki jih želite omogočiti z "Nova datoteka"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Vrsta besedilne datoteke', // from v2.1.41 added 7.8.2018
			'add'             : 'Dodaj', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Privzeto', // from v2.1.43 added 19.10.2018
			'description'     : 'Opis', // from v2.1.43 added 19.10.2018
			'website'         : 'Spletna stran', // from v2.1.43 added 19.10.2018
			'author'          : 'Avtor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-naslov', // from v2.1.43 added 19.10.2018
			'license'         : 'Licenca', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Tega predmeta ni mogoče shraniti. Da ne bi izgubili popravkov, jih morate izvoziti v računalnik.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dvokliknite datoteko, da jo izberete.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Uporabite celozaslonski način', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Neznan',
			'kindRoot'        : 'Korenski nosilec', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mapa',
			'kindSelects'     : 'Izbori', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Sopomenka (alias)',
			'kindAliasBroken' : 'Nedelujoča sopomenka (alias)',
			// applications
			'kindApp'         : 'Program',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint predstavitev',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash program',
			'kindPDF'         : 'Prenosni format dokumenta (PDF)',
			'kindTorrent'     : 'Bittorrent datoteka',
			'kind7z'          : '7z arhiv',
			'kindTAR'         : 'TAR arhiv',
			'kindGZIP'        : 'GZIP arhiv',
			'kindBZIP'        : 'BZIP arhiv',
			'kindXZ'          : 'XZ arhiv',
			'kindZIP'         : 'ZIP arhiv',
			'kindRAR'         : 'RAR arhiv',
			'kindJAR'         : 'Java JAR datoteka',
			'kindTTF'         : 'Pisava True Type',
			'kindOTF'         : 'Odprite pisavo Type',
			'kindRPM'         : 'RPM paket',
			// texts
			'kindText'        : 'Tekst dokument',
			'kindTextPlain'   : 'Samo tekst',
			'kindPHP'         : 'PHP koda',
			'kindCSS'         : 'Cascading style sheet (CSS)',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript koda',
			'kindRTF'         : 'Rich Text Format (RTF)',
			'kindC'           : 'C koda',
			'kindCHeader'     : 'C header koda',
			'kindCPP'         : 'C++ koda',
			'kindCPPHeader'   : 'C++ header koda',
			'kindShell'       : 'Unix shell skripta',
			'kindPython'      : 'Python kdoa',
			'kindJava'        : 'Java koda',
			'kindRuby'        : 'Ruby koda',
			'kindPerl'        : 'Perl skripta',
			'kindSQL'         : 'SQL koda',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK koda',
			'kindCSV'         : 'Besedilo ločeno z vejico (CSV)',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Besedilo za znižanje vrednosti', // added 20.7.2015
			// images
			'kindImage'       : 'Slika',
			'kindBMP'         : 'BMP slika',
			'kindJPEG'        : 'JPEG slika',
			'kindGIF'         : 'GIF slika',
			'kindPNG'         : 'PNG slika',
			'kindTIFF'        : 'TIFF slika',
			'kindTGA'         : 'TGA slika',
			'kindPSD'         : 'Adobe Photoshop slika',
			'kindXBITMAP'     : 'X bitmap slika',
			'kindPXM'         : 'Pixelmator slika',
			// media
			'kindAudio'       : 'Avdio medija',
			'kindAudioMPEG'   : 'MPEG zvok',
			'kindAudioMPEG4'  : 'MPEG-4 zvok',
			'kindAudioMIDI'   : 'MIDI zvok',
			'kindAudioOGG'    : 'Ogg Vorbis zvok',
			'kindAudioWAV'    : 'WAV zvok',
			'AudioPlaylist'   : 'MP3 seznam',
			'kindVideo'       : 'Video medija',
			'kindVideoDV'     : 'DV film',
			'kindVideoMPEG'   : 'MPEG film',
			'kindVideoMPEG4'  : 'MPEG-4 film',
			'kindVideoAVI'    : 'AVI film',
			'kindVideoMOV'    : 'Quick Time film',
			'kindVideoWM'     : 'Windows Media film',
			'kindVideoFlash'  : 'Flash film',
			'kindVideoMKV'    : 'Matroska film',
			'kindVideoOGG'    : 'Ogg film'
		}
	};
}));

lib/js/i18n/elfinder.fallback.js000064400000000353147361034410012375 0ustar00(function(factory) {
	if (typeof define === 'function' && define.amd) {
		define(factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory();
	} else {
		factory();
	}
}(this, function() {
	return void 0;
}));
lib/js/i18n/elfinder.zh_CN.js000064400000077407147361034410011655 0ustar00/**
 * 简体中文 translation
 * @author 翻译者 deerchao <deerchao@gmail.com>
 * @author Andy Hu <andyhu7@yahoo.com.hk>
 * @author Max Wen<max.wen@qq.com>
 * @author Kejun Chang <changkejun@hotmail.com>
 * @author LDMING <china-live@live.cn>
 * @author Andy Lee <oraclei@126.com>
 * @author Cololi <i@cololi.moe>
 * @version 2022-03-04
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.zh_CN = {
		translator : '翻译者 deerchao &lt;deerchao@gmail.com&gt;, Andy Hu &lt;andyhu7@yahoo.com.hk&gt;, Max Wen&lt;max.wen@qq.com&gt;, Kejun Chang &lt;changkejun@hotmail.com&gt;, LDMING &lt;china-live@live.cn&gt;, Andy Lee &lt;oraclei@126.com&gt;, Cololi &lt;i@cololi.moe&gt;',
		language   : '简体中文',
		direction  : 'ltr',
		dateFormat : 'Y-m-d H:i', // will show like: 2022-03-04 11:47
		fancyDateFormat : '$1 H:i', // will show like: 今天 11:47
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220304-114755
		messages   : {
			'getShareText' : '分享',
			'Editor ': '代码编辑器',

			/********************************** errors **********************************/
			'error'                : '错误',
			'errUnknown'           : '未知的错误.',
			'errUnknownCmd'        : '未知的命令.',
			'errJqui'              : '无效的 jQuery UI 配置,必须包含 Selectable、draggable 以及 droppable 组件.',
			'errNode'              : 'elFinder 需要能创建 DOM 元素.',
			'errURL'               : '无效的 elFinder 配置! URL 选项未配置.',
			'errAccess'            : '访问被拒绝.',
			'errConnect'           : '不能连接到服务器端.',
			'errAbort'             : '连接中止.',
			'errTimeout'           : '连接超时.',
			'errNotFound'          : '未找到服务器端.',
			'errResponse'          : '无效的服务器端响应.',
			'errConf'              : '无效的服务器端配置.',
			'errJSON'              : 'PHP JSON 模块未安装.',
			'errNoVolumes'         : '无可读的卷.',
			'errCmdParams'         : '无效的命令 "$1".',
			'errDataNotJSON'       : '服务器返回的数据不符合 JSON 格式.',
			'errDataEmpty'         : '服务器返回的数据为空.',
			'errCmdReq'            : '服务器端请求需要命令名称.',
			'errOpen'              : '无法打开 "$1".',
			'errNotFolder'         : '对象不是文件夹.',
			'errNotFile'           : '对象不是文件.',
			'errRead'              : '无法读取 "$1".',
			'errWrite'             : '无法写入 "$1".',
			'errPerm'              : '没有权限.',
			'errLocked'            : '"$1" 已被锁定,不能重命名, 移动或删除.',
			'errExists'            : '文件 "$1" 已经存在.',
			'errInvName'           : '无效的文件名.',
			'errInvDirname'        : '无效的文件夹名.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : '文件夹不存在.',
			'errFileNotFound'      : '文件不存在.',
			'errTrgFolderNotFound' : '未找到目标文件夹 "$1".',
			'errPopup'             : '浏览器拦截了弹出窗口. 请在选项中允许弹出窗口.',
			'errMkdir'             : '不能创建文件夹 "$1".',
			'errMkfile'            : '不能创建文件 "$1".',
			'errRename'            : '不能重命名 "$1".',
			'errCopyFrom'          : '不允许从卷 "$1" 复制.',
			'errCopyTo'            : '不允许向卷 "$1" 复制.',
			'errMkOutLink'         : '无法创建链接到卷根以外的链接.', // from v2.1 added 03.10.2015
			'errUpload'            : '上传出错.',  // old name - errUploadCommon
			'errUploadFile'        : '无法上传 "$1".', // old name - errUpload
			'errUploadNoFiles'     : '未找到要上传的文件.',
			'errUploadTotalSize'   : '数据超过了允许的最大大小.', // old name - errMaxSize
			'errUploadFileSize'    : '文件超过了允许的最大大小.', //  old name - errFileMaxSize
			'errUploadMime'        : '不允许的文件类型.',
			'errUploadTransfer'    : '"$1" 传输错误.',
			'errUploadTemp'        : '无法为上传文件创建临时文件.', // from v2.1 added 26.09.2015
			'errNotReplace'        : ' "$1" 已存在, 不能被替换.', // new
			'errReplace'           : '无法替换 "$1".',
			'errSave'              : '无法保存 "$1".',
			'errCopy'              : '无法复制 "$1".',
			'errMove'              : '无法移动 "$1".',
			'errCopyInItself'      : '不能移动 "$1" 到原有位置.',
			'errRm'                : '无法删除 "$1".',
			'errTrash'             : '无法移到回收站.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : '不能删除源文件.',
			'errExtract'           : '无法从 "$1" 提取文件.',
			'errArchive'           : '无法创建压缩包.',
			'errArcType'           : '不支持的压缩格式.',
			'errNoArchive'         : '文件不是压缩包, 或者不支持该压缩格式.',
			'errCmdNoSupport'      : '服务器端不支持该命令.',
			'errReplByChild'       : '不能用文件夹 “$1” 下的项替换文件夹 “$1” 自身.',
			'errArcSymlinks'       : '出于安全上的考虑,不允许解压包含符号链接的压缩包.', // edited 24.06.2012
			'errArcMaxSize'        : '压缩包文件超过最大允许文件大小范围.',
			'errResize'            : '无法将调整大小到 "$1".',
			'errResizeDegree'      : '无效的旋转角度.',  // added 7.3.2013
			'errResizeRotate'      : '无法旋转图片.',  // added 7.3.2013
			'errResizeSize'        : '无效的图片尺寸.',  // added 7.3.2013
			'errResizeNoChange'    : '图片尺寸未改变.',  // added 7.3.2013
			'errUsupportType'      : '不被支持的文件格式.',
			'errNotUTF8Content'    : '文件 "$1" 不是 UTF-8 格式, 不能编辑.',  // added 9.11.2011
			'errNetMount'          : '无法装载 "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : '不支持该协议.',     // added 17.04.2012
			'errNetMountFailed'    : '装载失败.',         // added 17.04.2012
			'errNetMountHostReq'   : '需要指定主机.', // added 18.04.2012
			'errSessionExpires'    : '您的会话由于长时间未活动已过期.',
			'errCreatingTempDir'   : '无法创建临时目录 "$1"',
			'errFtpDownloadFile'   : '无法从FTP下载文件 "$1" ',
			'errFtpUploadFile'     : '无法将文件 "$1" 上传至FTP',
			'errFtpMkdir'          : '无法在FTP上创建远程目录 "$1"',
			'errArchiveExec'       : '归档文件"$1"时出错.',
			'errExtractExec'       : '解压文件"$1"时出错.',
			'errNetUnMount'        : '无法卸载.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : '未转换至UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : '如果您需要上传目录, 请尝试使用Google Chrome.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '搜索 "$1" 超时,仅显示部分搜索结果.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : '必需重新授权.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : '最大可选择项目数为 $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : '无法从回收站中恢复,无法识别还原目的地.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : '找不到这个文件的编辑器.', // from v2.1.25 added 23.5.2017
			'errServerError'       : '服务端发生错误.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '无法清空文件夹 "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '存在 $1 多个错误.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : '您一次最多可以创建 $1 个文件夹。', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : '创建压缩包',
			'cmdback'      : '后退',
			'cmdcopy'      : '复制',
			'cmdcut'       : '剪切',
			'cmddownload'  : '下载',
			'cmdduplicate' : '创建副本',
			'cmdedit'      : '编辑文件',
			'cmdextract'   : '从压缩包提取文件',
			'cmdforward'   : '前进',
			'cmdgetfile'   : '选择文件',
			'cmdhelp'      : '关于',
			'cmdhome'      : '首页',
			'cmdinfo'      : '查看详情',
			'cmdmkdir'     : '新建文件夹',
			'cmdmkdirin'   : '至新文件夹', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : '新建文件',
			'cmdopen'      : '打开',
			'cmdpaste'     : '粘贴',
			'cmdquicklook' : '预览',
			'cmdreload'    : '刷新',
			'cmdrename'    : '重命名',
			'cmdrm'        : '删除',
			'cmdtrash'     : '至回收站', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : '恢复', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : '查找文件',
			'cmdup'        : '转到上一级文件夹',
			'cmdupload'    : '上传文件',
			'cmdview'      : '查看',
			'cmdresize'    : '调整大小&旋转',
			'cmdsort'      : '排序',
			'cmdnetmount'  : '装载网络卷', // added 18.04.2012
			'cmdnetunmount': '卸载', // from v2.1 added 30.04.2012
			'cmdplaces'    : '添加到收藏夹', // added 28.12.2014
			'cmdchmod'     : '改变模式', // from v2.1 added 20.6.2015
			'cmdopendir'   : '打开文件夹', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : '设置列宽', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': '全屏显示', // from v2.1.15 added 03.08.2016
			'cmdmove'      : '移动', // from v2.1.15 added 21.08.2016
			'cmdempty'     : '清空文件夹', // from v2.1.25 added 22.06.2017
			'cmdundo'      : '撤消', // from v2.1.27 added 31.07.2017
			'cmdredo'      : '重做', // from v2.1.27 added 31.07.2017
			'cmdpreference': '偏好', // from v2.1.27 added 03.08.2017
			'cmdselectall' : '全选', // from v2.1.28 added 15.08.2017
			'cmdselectnone': '全不选', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': '反向选择', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : '在新窗口打开', // from v2.1.38 added 3.4.2018
			'cmdhide'      : '隐藏 (偏好)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : '关闭',
			'btnSave'   : '保存',
			'btnRm'     : '删除',
			'btnApply'  : '应用',
			'btnCancel' : '取消',
			'btnNo'     : '否',
			'btnYes'    : '是',
			'btnMount'  : '装载',  // added 18.04.2012
			'btnApprove': '至 $1 并确认', // from v2.1 added 26.04.2012
			'btnUnmount': '卸载', // from v2.1 added 30.04.2012
			'btnConv'   : '转换', // from v2.1 added 08.04.2014
			'btnCwd'    : '这里',      // from v2.1 added 22.5.2015
			'btnVolume' : '卷',    // from v2.1 added 22.5.2015
			'btnAll'    : '全部',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME类型', // from v2.1 added 22.5.2015
			'btnFileName':'文件名',  // from v2.1 added 22.5.2015
			'btnSaveClose': '保存并关闭', // from v2.1 added 12.6.2015
			'btnBackup' : '备份', // fromv2.1 added 28.11.2015
			'btnRename'    : '重命名',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : '重命名(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : '向前 ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : '向后 ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : '另存为', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : '打开文件夹',
			'ntffile'     : '打开文件',
			'ntfreload'   : '刷新文件夹内容',
			'ntfmkdir'    : '创建文件夹',
			'ntfmkfile'   : '创建文件',
			'ntfrm'       : '删除文件',
			'ntfcopy'     : '复制文件',
			'ntfmove'     : '移动文件',
			'ntfprepare'  : '准备复制文件',
			'ntfrename'   : '重命名文件',
			'ntfupload'   : '上传文件',
			'ntfdownload' : '下载文件',
			'ntfsave'     : '保存文件',
			'ntfarchive'  : '创建压缩包',
			'ntfextract'  : '从压缩包提取文件',
			'ntfsearch'   : '搜索文件',
			'ntfresize'   : '正在更改尺寸',
			'ntfsmth'     : '正在忙 >_<',
			'ntfloadimg'  : '正在加载图片',
			'ntfnetmount' : '正在装载网络卷', // added 18.04.2012
			'ntfnetunmount': '卸载网络卷', // from v2.1 added 30.04.2012
			'ntfdim'      : '获取图像尺寸', // added 20.05.2013
			'ntfreaddir'  : '正在读取文件夹信息', // from v2.1 added 01.07.2013
			'ntfurl'      : '正在获取链接地址', // from v2.1 added 11.03.2014
			'ntfchmod'    : '正在改变文件模式', // from v2.1 added 20.6.2015
			'ntfpreupload': '正在验证上传文件名', // from v2.1 added 31.11.2015
			'ntfzipdl'    : '正在创建一个下载文件', // from v2.1.7 added 23.1.2016
			'ntfparents'  : '正在取得路径信息', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': '正在处理上传文件', // from v2.1.17 added 2.11.2016
			'ntftrash'    : '移动到回收站', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : '从回收站恢复', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : '检查目标文件夹', // from v2.1.24 added 3.5.2017
			'ntfundo'     : '撤消上一个全局操作', // from v2.1.27 added 31.07.2017
			'ntfredo'     : '重做上一全局操作', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : '检查内容', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : '回收站', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : '未知',
			'Today'       : '今天',
			'Yesterday'   : '昨天',
			'msJan'       : '一月',
			'msFeb'       : '二月',
			'msMar'       : '三月',
			'msApr'       : '四月',
			'msMay'       : '五月',
			'msJun'       : '六月',
			'msJul'       : '七月',
			'msAug'       : '八月',
			'msSep'       : '九月',
			'msOct'       : '十月',
			'msNov'       : '十一月',
			'msDec'       : '十二月',
			'January'     : '一月',
			'February'    : '二月',
			'March'       : '三月',
			'April'       : '四月',
			'May'         : '五月',
			'June'        : '六月',
			'July'        : '七月',
			'August'      : '八月',
			'September'   : '九月',
			'October'     : '十月',
			'November'    : '十一月',
			'December'    : '十二月',
			'Sunday'      : '星期日',
			'Monday'      : '星期一',
			'Tuesday'     : '星期二',
			'Wednesday'   : '星期三',
			'Thursday'    : '星期四',
			'Friday'      : '星期五',
			'Saturday'    : '星期六',
			'Sun'         : '周日',
			'Mon'         : '周一',
			'Tue'         : '周二',
			'Wed'         : '周三',
			'Thu'         : '周四',
			'Fri'         : '周五',
			'Sat'         : '周六',

			/******************************** sort variants ********************************/
			'sortname'          : '按名称',
			'sortkind'          : '按类型',
			'sortsize'          : '按大小',
			'sortdate'          : '按日期',
			'sortFoldersFirst'  : '文件夹优先',
			'sortperm'          : '按权限排序', // from v2.1.13 added 13.06.2016
			'sortmode'          : '按属性排序',       // from v2.1.13 added 13.06.2016
			'sortowner'         : '按所有者排序',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : '按组排序',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : '同时刷新树状目录',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : '新文件.txt', // added 10.11.2015
			'untitled folder'   : '新文件夹',   // added 10.11.2015
			'Archive'           : '新压缩包',  // from v2.1 added 10.11.2015
			'untitled file'     : '新文件.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: 文件',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '1 美元:2 美元',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : '请确认',
			'confirmRm'       : '确定要删除文件吗?<br/>该操作不可撤销!',
			'confirmRepl'     : '用新的文件替换原有文件?',
			'confirmRest'     : '从回收站替换当前项?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : '文件不是UTF-8格式.<br/>转换为UTF-8吗?<br/>通过在转换后保存,内容变为UTF-8.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : '无法检测到此文件的字符编码.需要暂时转换此文件为UTF-8编码以进行编辑.<br/>请选择此文件的字符编码.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : '文件已被编辑.<br/>如果不保存直接关闭,将丢失编辑内容.', // from v2.1 added 15.7.2015
			'confirmTrash'    : '确定要将该项移动到回收站么?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : '确定要移动该项到 "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : '全部应用',
			'name'            : '名称',
			'size'            : '大小',
			'perms'           : '权限',
			'modify'          : '修改于',
			'kind'            : '类别',
			'read'            : '读取',
			'write'           : '写入',
			'noaccess'        : '无权限',
			'and'             : '和',
			'unknown'         : '未知',
			'selectall'       : '选择所有文件',
			'selectfiles'     : '选择文件',
			'selectffile'     : '选择第一个文件',
			'selectlfile'     : '选择最后一个文件',
			'viewlist'        : '列表视图',
			'viewicons'       : '图标视图',
			'viewSmall'       : '小图标', // from v2.1.39 added 22.5.2018
			'viewMedium'      : '中图标', // from v2.1.39 added 22.5.2018
			'viewLarge'       : '大图标', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : '超大图标', // from v2.1.39 added 22.5.2018
			'places'          : '位置',
			'calc'            : '计算',
			'path'            : '路径',
			'aliasfor'        : '别名',
			'locked'          : '锁定',
			'dim'             : '尺寸',
			'files'           : '文件',
			'folders'         : '文件夹',
			'items'           : '项目',
			'yes'             : '是',
			'no'              : '否',
			'link'            : '链接',
			'searcresult'     : '搜索结果',
			'selected'        : '选中的项目',
			'about'           : '关于',
			'shortcuts'       : '快捷键',
			'help'            : '帮助',
			'webfm'           : '网络文件管理器',
			'ver'             : '版本',
			'protocolver'     : '协议版本',
			'homepage'        : '项目主页',
			'docs'            : '文档',
			'github'          : '复刻我们的github',
			'twitter'         : '关注我们的twitter',
			'facebook'        : '加入我们的facebook',
			'team'            : '团队',
			'chiefdev'        : '首席开发',
			'developer'       : '开发',
			'contributor'     : '贡献',
			'maintainer'      : '维护',
			'translator'      : '翻译',
			'icons'           : '图标',
			'dontforget'      : '别忘了带上你擦汗的毛巾',
			'shortcutsof'     : '快捷键已禁用',
			'dropFiles'       : '把文件拖到这里',
			'or'              : '或者',
			'selectForUpload' : '选择要上传的文件',
			'moveFiles'       : '移动文件',
			'copyFiles'       : '复制文件',
			'restoreFiles'    : '恢复文件', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : '从这里中删除',
			'aspectRatio'     : '保持比例',
			'scale'           : '缩放比例',
			'width'           : '宽',
			'height'          : '高',
			'resize'          : '调整大小',
			'crop'            : '裁切',
			'rotate'          : '旋转',
			'rotate-cw'       : '顺时针旋转90°',
			'rotate-ccw'      : '逆时针旋转90°',
			'degree'          : '°',
			'netMountDialogTitle' : '装载网络目录', // added 18.04.2012
			'protocol'            : '协议', // added 18.04.2012
			'host'                : '主机', // added 18.04.2012
			'port'                : '端口', // added 18.04.2012
			'user'                : '用户', // added 18.04.2012
			'pass'                : '密码', // added 18.04.2012
			'confirmUnmount'      : '确实要卸载 $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': '从浏览器中拖放或粘贴文件', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : '拖放文件,粘贴网址或剪贴板图像', // from v2.1 added 07.04.2014
			'encoding'        : '编码', // from v2.1 added 19.12.2014
			'locale'          : '语言环境',   // from v2.1 added 19.12.2014
			'searchTarget'    : '目标: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : '按输入MIME类型搜索', // from v2.1 added 22.5.2015
			'owner'           : '所有者', // from v2.1 added 20.6.2015
			'group'           : '组', // from v2.1 added 20.6.2015
			'other'           : '其他', // from v2.1 added 20.6.2015
			'execute'         : '执行', // from v2.1 added 20.6.2015
			'perm'            : '许可', // from v2.1 added 20.6.2015
			'mode'            : '属性', // from v2.1 added 20.6.2015
			'emptyFolder'     : '文件夹是空的', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : '文件夹是空的\\A 拖放可追加项目', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : '文件夹是空的\\A 长按可添加项目', // from v2.1.6 added 30.12.2015
			'quality'         : '品质', // from v2.1.6 added 5.1.2016
			'autoSync'        : '自动同步',  // from v2.1.6 added 10.1.2016
			'moveUp'          : '向上移动',  // from v2.1.6 added 18.1.2016
			'getLink'         : '获取URL链接', // from v2.1.7 added 9.2.2016
			'selectedItems'   : '已选择项目 ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : '目录ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : '允许离线操作', // from v2.1.10 added 3.25.2016
			'reAuth'          : '重新验证', // from v2.1.10 added 3.25.2016
			'nowLoading'      : '正在加载...', // from v2.1.12 added 4.26.2016
			'openMulti'       : '打开多个文件', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': '您正在尝试打开$1文件.您确定要在浏览器中打开吗?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : '搜索目标中没有匹配结果', // from v2.1.12 added 5.16.2016
			'editingFile'     : '正在编辑文件.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '已选择 $1 个项目.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '剪贴板里有 $1 个项目.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : '增量搜索仅来自当前视图.', // from v2.1.13 added 6.30.2016
			'reinstate'       : '恢复', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 完成', // from v2.1.15 added 21.8.2016
			'contextmenu'     : '上下文菜单', // from v2.1.15 added 9.9.2016
			'pageTurning'     : '翻页', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : '根目录', // from v2.1.16 added 16.9.2016
			'reset'           : '重置', // from v2.1.16 added 1.10.2016
			'bgcolor'         : '背景色', // from v2.1.16 added 1.10.2016
			'colorPicker'     : '颜色选择器', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '步长(8px)', // from v2.1.16 added 4.10.2016
			'enabled'         : '启用', // from v2.1.16 added 4.10.2016
			'disabled'        : '关闭', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : '当前视图下没有匹配结果', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : '当前视图中的第一个字母搜索结果为空', // from v2.1.23 added 24.3.2017
			'textLabel'       : '文本标签', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '剩余 $1 分钟', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : '使用所选编码重新打开', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : '使用所选编码保存', // from v2.1.19 added 2.12.2016
			'selectFolder'    : '选择目录', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': '首字母搜索', // from v2.1.23 added 24.3.2017
			'presets'         : '预置', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : '项目太多,不能移动到回收站.', // from v2.1.25 added 9.6.2017
			'TextArea'        : '文本区域', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : '清空文件夹 "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : '文件夹 "$1" 为空.', // from v2.1.25 added 22.6.2017
			'preference'      : '偏好', // from v2.1.26 added 28.6.2017
			'language'        : '语言设置', // from v2.1.26 added 28.6.2017
			'clearBrowserData': '清除保存在此浏览器中的偏好设置', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : '工具栏设置', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... 剩余$1字符',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... 剩余$1行',  // from v2.1.52 added 16.1.2020
			'sum'             : '总数', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : '粗略的文件大小', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : '鼠标悬停在对话框内可编辑区域时自动获得焦点',  // from v2.1.30 added 2.11.2017
			'select'          : '选择', // from v2.1.30 added 23.11.2017
			'selectAction'    : '双击选择的文件时', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : '用上次使用的编辑器打开', // from v2.1.30 added 23.11.2017
			'selectinvert'    : '反向选择', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '确定要重命名选定项 $1 为 $2 吗?<br/>该操作不能撤消!', // from v2.1.31 added 4.12.2017
			'batchRename'     : '批量重命名', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '增加数量', // from v2.1.31 added 8.12.2017
			'asPrefix'        : '添加前缀', // from v2.1.31 added 8.12.2017
			'asSuffix'        : '添加后缀', // from v2.1.31 added 8.12.2017
			'changeExtention' : '变化范围', // from v2.1.31 added 8.12.2017
			'columnPref'      : '列设置 (列表视图)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : '所有修改将立即反馈到文档.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : '所有修改在卸载本卷之前不会反馈', // from v2.1.33 added 2.3.2018
			'unmountChildren' : '安装在本卷上的以下卷也会卸载.你确定要卸载吗?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : '选择信息', // from v2.1.33 added 7.3.2018
			'hashChecker'     : '显示文件散列值的算法', // from v2.1.33 added 10.3.2018
			'infoItems'       : '信息条目 (选择信息面板)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': '再按退出', // from v2.1.38 added 1.4.2018
			'toolbar'         : '工具条', // from v2.1.38 added 4.4.2018
			'workspace'       : '工作空间', // from v2.1.38 added 4.4.2018
			'dialog'          : '对话框', // from v2.1.38 added 4.4.2018
			'all'             : '全部', // from v2.1.38 added 4.4.2018
			'iconSize'        : '图标尺寸 (图标视图)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : '打开最大化编辑器窗口', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : '由于通过 API 转换功能当前不可用,请到网站上转换.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : '转换后,必须上传条目URL或一个下载的文件,以保存转换后的文件.', //from v2.1.40 added 8.7.2018
			'convertOn'       : '在 $1 站点上转换', // from v2.1.40 added 10.7.2018
			'integrations'    : '集成', // from v2.1.40 added 11.7.2018
			'integrationWith' : '本 elFinder 集成以下外部服务.使用前请检查使用条款、隐私政策等.', // from v2.1.40 added 11.7.2018
			'showHidden'      : '显示已隐藏的条目', // from v2.1.41 added 24.7.2018
			'hideHidden'      : '隐藏已隐藏的条目', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : '显示/隐藏已隐藏的条目', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '允许"新文件"使用的文件类型', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : '文本文件类型', // from v2.1.41 added 7.8.2018
			'add'             : '添加', // from v2.1.41 added 7.8.2018
			'theme'           : '主题', // from v2.1.43 added 19.10.2018
			'default'         : '缺省', // from v2.1.43 added 19.10.2018
			'description'     : '描述', // from v2.1.43 added 19.10.2018
			'website'         : '网站', // from v2.1.43 added 19.10.2018
			'author'          : '作者', // from v2.1.43 added 19.10.2018
			'email'           : '邮箱', // from v2.1.43 added 19.10.2018
			'license'         : '许可证', // from v2.1.43 added 19.10.2018
			'exportToSave'    : '本条目不能保存. 为避免丢失编辑数据,须要导出到你的电脑.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': '在文件上双击以选中它.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : '使用全屏模式', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : '未知',
			'kindRoot'        : '根目录', // from v2.1.16 added 16.10.2016
			'kindFolder'      : '文件夹',
			'kindSelects'     : '选择', // from v2.1.29 added 29.8.2017
			'kindAlias'       : '别名',
			'kindAliasBroken' : '错误的别名',
			// applications
			'kindApp'         : '程序',
			'kindPostscript'  : 'Postscript 文档',
			'kindMsOffice'    : 'Microsoft Office 文档',
			'kindMsWord'      : 'Microsoft Word 文档',
			'kindMsExcel'     : 'Microsoft Excel 文档',
			'kindMsPP'        : 'Microsoft Powerpoint 演示',
			'kindOO'          : 'Open Office 文档',
			'kindAppFlash'    : 'Flash 程序',
			'kindPDF'         : 'PDF 文档',
			'kindTorrent'     : 'Bittorrent 文件',
			'kind7z'          : '7z 压缩包',
			'kindTAR'         : 'TAR 压缩包',
			'kindGZIP'        : 'GZIP 压缩包',
			'kindBZIP'        : 'BZIP 压缩包',
			'kindXZ'          : 'XZ 压缩包',
			'kindZIP'         : 'ZIP 压缩包',
			'kindRAR'         : 'RAR 压缩包',
			'kindJAR'         : 'Java JAR 文件',
			'kindTTF'         : 'True Type 字体',
			'kindOTF'         : 'Open Type 字体',
			'kindRPM'         : 'RPM 包',
			// texts
			'kindText'        : '文本文件',
			'kindTextPlain'   : '纯文本',
			'kindPHP'         : 'PHP 源代码',
			'kindCSS'         : '层叠样式表(CSS)',
			'kindHTML'        : 'HTML 文档',
			'kindJS'          : 'Javascript 源代码',
			'kindRTF'         : '富文本格式(RTF)',
			'kindC'           : 'C 源代码',
			'kindCHeader'     : 'C 头文件',
			'kindCPP'         : 'C++ 源代码',
			'kindCPPHeader'   : 'C++ 头文件',
			'kindShell'       : 'Unix 外壳脚本',
			'kindPython'      : 'Python 源代码',
			'kindJava'        : 'Java 源代码',
			'kindRuby'        : 'Ruby 源代码',
			'kindPerl'        : 'Perl 源代码',
			'kindSQL'         : 'SQL 脚本',
			'kindXML'         : 'XML 文档',
			'kindAWK'         : 'AWK 源代码',
			'kindCSV'         : '逗号分隔值文件(CSV)',
			'kindDOCBOOK'     : 'Docbook XML 文档',
			'kindMarkdown'    : 'Markdown 文本', // added 20.7.2015
			// images
			'kindImage'       : '图片',
			'kindBMP'         : 'BMP 图片',
			'kindJPEG'        : 'JPEG 图片',
			'kindGIF'         : 'GIF 图片',
			'kindPNG'         : 'PNG 图片',
			'kindTIFF'        : 'TIFF 图片',
			'kindTGA'         : 'TGA 图片',
			'kindPSD'         : 'Adobe Photoshop 图片',
			'kindXBITMAP'     : 'X bitmap 图片',
			'kindPXM'         : 'Pixelmator 图片',
			// media
			'kindAudio'       : '音频',
			'kindAudioMPEG'   : 'MPEG 音频',
			'kindAudioMPEG4'  : 'MPEG-4 音频',
			'kindAudioMIDI'   : 'MIDI 音频',
			'kindAudioOGG'    : 'Ogg Vorbis 音频',
			'kindAudioWAV'    : 'WAV 音频',
			'AudioPlaylist'   : 'MP3 播放列表',
			'kindVideo'       : '视频',
			'kindVideoDV'     : 'DV 视频',
			'kindVideoMPEG'   : 'MPEG 视频',
			'kindVideoMPEG4'  : 'MPEG-4 视频',
			'kindVideoAVI'    : 'AVI 视频',
			'kindVideoMOV'    : 'Quick Time 视频',
			'kindVideoWM'     : 'Windows Media 视频',
			'kindVideoFlash'  : 'Flash 视频',
			'kindVideoMKV'    : 'Matroska 视频',
			'kindVideoOGG'    : 'Ogg 视频'
		}
	};
}));

lib/js/i18n/elfinder.fa.js000064400000123137147361034410011232 0ustar00/**
 * فارسی translation
 * @author Keyhan Mohammadpour <keyhan_universityworks@yahoo.com>
 * @author Farhad Zare <farhad@persianoc.com>
 * @version 2022-02-28
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fa = {
		translator : 'Keyhan Mohammadpour &lt;keyhan_universityworks@yahoo.com&gt;, Farhad Zare &lt;farhad@persianoc.com&gt;',
		language   : 'فارسی',
		direction  : 'rtl',
		dateFormat : 'd.m.Y H:i', // will show like: 28.02.2022 15:41
		fancyDateFormat : '$1 H:i', // will show like: امروز 15:41
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220228-154144
		messages   : {
			'getShareText' : 'اشتراک گذاری',
			'Editor ': 'ویرایشگر کد',
			/********************************** errors **********************************/
			'error'                : 'خطا',
			'errUnknown'           : 'خطای ناشناخته.',
			'errUnknownCmd'        : 'دستور ناشناخته.',
			'errJqui'              : 'تنظیمات کتابخانه JQuery UI شما به درستی انجام نشده است. این کتابخانه بایستی شامل Resizable ،Draggable و Droppable باشد.',
			'errNode'              : 'elfinder به درستی ایجاد نشده است.',
			'errURL'               : 'تنظیمات elfinder شما به درستی انجام نشده است. تنظیم Url را اصلاح نمایید.',
			'errAccess'            : 'محدودیت سطح دسترسی',
			'errConnect'           : 'امکان اتصال به مدیریت وجود ندارد.',
			'errAbort'             : 'ارتباط قطع شده است.',
			'errTimeout'           : 'مهلت زمانی ارتباط شما به اتمام رسیده است.',
			'errNotFound'          : 'تنظیم مدیریت یافت نشد.',
			'errResponse'          : 'پاسخ دریافتی از مدیریت صحیح نمی باشد.',
			'errConf'              : 'تنطیمات مدیریت به درستی انجام نشده است.',
			'errJSON'              : 'ماژول PHP JSON نصب نیست.',
			'errNoVolumes'         : 'درایوهای قابل خواندن یافت نشدند.',
			'errCmdParams'         : 'پارامترهای دستور "$1" به صورت صحیح ارسال نشده است.',
			'errDataNotJSON'       : 'داده ها در قالب JSON نمی باشند.',
			'errDataEmpty'         : 'داده دریافتی خالی است.',
			'errCmdReq'            : 'درخواست از سمت مدیریت نیازمند نام دستور می باشد.',
			'errOpen'              : 'امکان باز نمودن "$1" وجود ندارد.',
			'errNotFolder'         : 'آیتم موردنظر پوشه نیست.',
			'errNotFile'           : 'آیتم موردنظر فایل نیست.',
			'errRead'              : 'امکان خواندن "$1" وجود ندارد.',
			'errWrite'             : 'امکان نوشتن در درون "$1" وجود ندارد.',
			'errPerm'              : 'شما مجاز به انجام این عمل نمی باشید.',
			'errLocked'            : '"$1" قفل گردیده است و شما قادر به تغییر نام ، حذف و یا جابجایی آن نمی باشید.',
			'errExists'            : 'فایلی با نام "$1" هم اکنون وجود دارد.',
			'errInvName'           : 'نام انتخابی شما صحیح نمی باشد.',
			'errInvDirname'        : 'نام پوشه غیرمعتبر می باشد.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'پوشه مورد نظر یافت نشد.',
			'errFileNotFound'      : 'فایل مورد نظر یافت نشد.',
			'errTrgFolderNotFound' : 'پوشه مقصد با نام "$1" یافت نشد.',
			'errPopup'             : 'مرورگر شما ار باز شدن پنجره popup جلوگیری می کند، لطفا تنظیمات مربوطه را در مرورگر خود فعال نمایید.',
			'errMkdir'             : 'امکان ایجاد پوشه ای با نام "$1" وجود ندارد.',
			'errMkfile'            : 'امکان ایجاد فایلی با نام "$1" وجود ندارد.',
			'errRename'            : 'امکان تغییر نام فایل "$1" وجود ندارد.',
			'errCopyFrom'          : 'کپی نمودن از درایو با نام "$1" ممکن نمی باشد.',
			'errCopyTo'            : 'کپی نمودن به درایو با نام "$1" ممکن نمی باشد.',
			'errMkOutLink'         : 'امکان ایجاد لینک به خارج از مسیر ریشه وجود ندارد.', // from v2.1 added 03.10.2015
			'errUpload'            : 'خطای آپلود',  // old name - errUploadCommon
			'errUploadFile'        : 'امکان آپلود "$1" وجود ندارد.', // old name - errUpload
			'errUploadNoFiles'     : 'فایلی برای آپلود یافت نشد.',
			'errUploadTotalSize'   : 'حجم داده بیش از حد مجاز می باشد.', // old name - errMaxSize
			'errUploadFileSize'    : 'حجم فایل بیش از حد مجاز می باشد.', //  old name - errFileMaxSize
			'errUploadMime'        : 'نوع فایل انتخابی مجاز نمی باشد.',
			'errUploadTransfer'    : 'در انتقال "$1" خطایی رخ داده است.',
			'errUploadTemp'        : 'امکان ایجاد فایل موقت جهت آپلود وجود ندارد.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'آیتم "$1" از قبل وجود دارد و امکان جایگزینی آن با آیتمی از نوع دیگر وجود ندارد.', // new
			'errReplace'           : 'امکان جایگزینی "$1" وجود ندارد.',
			'errSave'              : 'امکان ذخیره کردن "$1" وجود ندارد.',
			'errCopy'              : 'امکان کپی کردن "$1" وجود ندارد.',
			'errMove'              : 'امکان جابجایی "$1" وجود ندارد.',
			'errCopyInItself'      : 'امکان کپی کردن "$1" در درون خودش وجود ندارد.',
			'errRm'                : 'امکان حذف کردن "$1" وجود ندارد.',
			'errTrash'             : 'امکان حذف وجود ندارد.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'امکان حذف فایل(ها) از مبدا وجود ندارد.',
			'errExtract'           : 'امکان استخراج فایل فشرده "$1" وجود ندارد.',
			'errArchive'           : 'امکان ایجاد فایل فشرده وجود ندارد.',
			'errArcType'           : 'نوع ناشناخته برای فایل فشرده.',
			'errNoArchive'         : 'این فایل فشرده نیست یا اینکه این نوع فایل فشرده پشتیبانی نمی شود.',
			'errCmdNoSupport'      : 'مدیریت از این دستور پشتیبانی نمی کند.',
			'errReplByChild'       : 'امکان جایگزینی پوشه "$1" با یک آیتم از درون خودش وجود ندارد.',
			'errArcSymlinks'       : 'به دلایل مسائل امنیتی امکان باز کردن فایل فشرده دارای symlinks وجود ندارد.', // edited 24.06.2012
			'errArcMaxSize'        : 'فایل های فشرده به حداکثر اندازه تعیین شده رسیده اند.',
			'errResize'            : 'امکان تغییر اندازه "$1" وجود ندارد.',
			'errResizeDegree'      : 'درجه چرخش نامعتبر است.',  // added 7.3.2013
			'errResizeRotate'      : 'امکان چرخش تصویر وجود ندارد.',  // added 7.3.2013
			'errResizeSize'        : 'اندازه تصویر نامعتبر است.',  // added 7.3.2013
			'errResizeNoChange'    : 'تغییری در اندازه تصویر ایجاد نشده است.',  // added 7.3.2013
			'errUsupportType'      : 'این نوع فایل پشتیبانی نمی شود.',
			'errNotUTF8Content'    : 'فایل "$1" به صورت UTF-8 ذخیره نشده و امکان ویرایش آن وجود ندارد.',  // added 9.11.2011
			'errNetMount'          : 'امکان اتصال "$1" وجود ندارد.', // added 17.04.2012
			'errNetMountNoDriver'  : 'این پروتکل پشتیبانی نمی شود.',     // added 17.04.2012
			'errNetMountFailed'    : 'اتصال ناموفق بود.',         // added 17.04.2012
			'errNetMountHostReq'   : 'میزبان موردنیاز است.', // added 18.04.2012
			'errSessionExpires'    : 'اعتبار جلسه کاری شما بدلیل عدم فعالیت برای مدت زمان طولانی به اتمام رسیده است.',
			'errCreatingTempDir'   : 'امکان ایجاد دایرکتوری موقت وجود ندارد: "$1"',
			'errFtpDownloadFile'   : 'امکان دریافت فایل از FTP وجود ندارد: "$1"',
			'errFtpUploadFile'     : 'امکان آپلود فایل به FTP وجود ندارد: "$1"',
			'errFtpMkdir'          : 'امکان ایجاد دایرکتوری برروی FTP وجود ندارد: "$1"',
			'errArchiveExec'       : 'خطا در زمان فشرده سازی این فایل‌ها: "$1"',
			'errExtractExec'       : 'خطا در زمان بازگشایی این فایل‌ها: "$1"',
			'errNetUnMount'        : 'امکان قطع اتصال وجود ندارد.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'امکان تبدیل به UTF-8 وجود ندارد', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'جهت آپلود کردن پوشه، از یک مرورگر مدرن استفاده نمایید.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'در هنگان جستجو برای "$1" خطایی رخ داده است. نتیجه جستجو به صورت ناتمام می باشد.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'اعتبارسنجی مجدد موردنیاز است.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'حداکثر تعداد انتخاب قابل قبول $1 می‌باشد.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'امکان بازیابی وجود ندارد. مقصد بازیابی نامشخص است.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'ویرایشگری برای این نوع فایل یافت نشد.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'خطایی در سمت سرور به وجود آمده است.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'امکان خالی کردن پوشه "$1" وجود ندارد.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '$1 خطای دیگر نیز وجود دارد.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'شما می توانید تا $1 پوشه در یک زمان ایجاد کنید.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'ایجاد فایل فشرده',
			'cmdback'      : 'بازگشت به عقب',
			'cmdcopy'      : 'کپی',
			'cmdcut'       : 'بریدن',
			'cmddownload'  : 'دانلود',
			'cmdduplicate' : 'تکثیر فایل',
			'cmdedit'      : 'ویرایش محتوای فایل',
			'cmdextract'   : 'بازگشایی فایل فشرده',
			'cmdforward'   : 'حرکت به جلو',
			'cmdgetfile'   : 'انتخاب فایل‌ها',
			'cmdhelp'      : 'درباره این نرم‌افزار',
			'cmdhome'      : 'ریشه',
			'cmdinfo'      : 'مشاهده مشخصات',
			'cmdmkdir'     : 'پوشه جدید',
			'cmdmkdirin'   : 'انتقال به پوشه جدید', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'فایل جدید',
			'cmdopen'      : 'باز کردن',
			'cmdpaste'     : 'چسباندن',
			'cmdquicklook' : 'پیش نمایش',
			'cmdreload'    : 'بارگذاری مجدد',
			'cmdrename'    : 'تغییر نام',
			'cmdrm'        : 'حذف',
			'cmdtrash'     : 'انتقال به سطل بازیافت', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'بازیابی', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'جستجوی فایل',
			'cmdup'        : 'رفتن به سطح بالاتر',
			'cmdupload'    : 'آپلود فایل',
			'cmdview'      : 'مشاهده',
			'cmdresize'    : 'تغییر اندازه و چرخش',
			'cmdsort'      : 'مرتب سازی',
			'cmdnetmount'  : 'اتصال درایو شبکه', // added 18.04.2012
			'cmdnetunmount': 'قطع اتصال', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'به مسیرهای', // added 28.12.2014
			'cmdchmod'     : 'تغییر حالت', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'بازکردن یک پوشه', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'بازنشانی عرض ستون', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'حالت نمایش تمام صفحه', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'انتقال', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'خالی کردن پوشه', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'خنثی‌سازی', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'انجام مجدد', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'تنظیمات', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'انتخاب همه موارد', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'لغو انتخاب', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'انتخاب معکوس', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'باز کردن در پنجره جدید', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'مخفی (پیشنهادی)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'بستن',
			'btnSave'   : 'ذخیره',
			'btnRm'     : 'حذف',
			'btnApply'  : 'اعمال',
			'btnCancel' : 'انصراف',
			'btnNo'     : 'خیر',
			'btnYes'    : 'بلی',
			'btnMount'  : 'اتصال',  // added 18.04.2012
			'btnApprove': 'رفتن به $1 و تایید', // from v2.1 added 26.04.2012
			'btnUnmount': 'قطع اتصال', // from v2.1 added 30.04.2012
			'btnConv'   : 'تبدیل', // from v2.1 added 08.04.2014
			'btnCwd'    : 'اینجا',      // from v2.1 added 22.5.2015
			'btnVolume' : 'درایو',    // from v2.1 added 22.5.2015
			'btnAll'    : 'همه',       // from v2.1 added 22.5.2015
			'btnMime'   : 'نوع فایل', // from v2.1 added 22.5.2015
			'btnFileName':'نام فایل',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'ذخیره و بستن', // from v2.1 added 12.6.2015
			'btnBackup' : 'پشتیبان‌گیری', // fromv2.1 added 28.11.2015
			'btnRename'    : 'تغییر نام',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'تغییر نام(همه)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'قبلی ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'بعدی ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'ذخیره با نام جدید', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'در حال باز کردن پوشه',
			'ntffile'     : 'در حال باز کردن فایل',
			'ntfreload'   : 'بارگذاری مجدد محتویات پوشه',
			'ntfmkdir'    : 'در حال ایجاد پوشه',
			'ntfmkfile'   : 'در حال ایجاد فایل',
			'ntfrm'       : 'در حال حذف موارد موردنظر',
			'ntfcopy'     : 'در حال کپی موارد موردنظر',
			'ntfmove'     : 'در حال انتقال موارد موردنظر',
			'ntfprepare'  : 'بررسی موارد موجود',
			'ntfrename'   : 'در حال تغییر نام فایل',
			'ntfupload'   : 'در حال آپلود فایل',
			'ntfdownload' : 'در حال دانلود فایل',
			'ntfsave'     : 'در حال ذخیره فایل',
			'ntfarchive'  : 'در حال ایجاد فایل فشرده',
			'ntfextract'  : 'در حال استخراج فایل ها از حالت فشرده',
			'ntfsearch'   : 'در حال جستجوی فایل',
			'ntfresize'   : 'در حال تغییر اندازه تصاویر',
			'ntfsmth'     : 'درحال انجام عملیات ....',
			'ntfloadimg'  : 'در حال بارگذاری تصویر',
			'ntfnetmount' : 'در حال اتصال درایو شبکه', // added 18.04.2012
			'ntfnetunmount': 'قطع اتصال درایو شبکه', // from v2.1 added 30.04.2012
			'ntfdim'      : 'در حال محاسبه ابعاد تصویر', // added 20.05.2013
			'ntfreaddir'  : 'در حال دریافت مشخصات پوشه', // from v2.1 added 01.07.2013
			'ntfurl'      : 'در حال دریافت URL', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'در حال تغییر نوع فایل', // from v2.1 added 20.6.2015
			'ntfpreupload': 'در حال تایید نام فایل جهت آپلود', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'در حال ایجاد فایل جهت دانلود', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'در حال دریافت اطلاعات مسیر', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'در حال پردازش فایل آپلود شده', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'در حال انتقال به سطل بازیافت', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'در حال بازیابی از سطل بازیافت', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'بررسی پوشه مقصد', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'در حال خنثی‌سازی آخرین عملیات', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'در حال انجام مجدد آخرین عملیات', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'در حال بررسی مطالب', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'سطل بازیافت', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'نامعلوم',
			'Today'       : 'امروز',
			'Yesterday'   : 'دیروز',
			'msJan'       : 'ژانویه',
			'msFeb'       : 'فوریه',
			'msMar'       : 'مارس',
			'msApr'       : 'آوریل',
			'msMay'       : 'می',
			'msJun'       : 'جون',
			'msJul'       : 'جولای',
			'msAug'       : 'آگوست',
			'msSep'       : 'سپتامبر',
			'msOct'       : 'اکتبر',
			'msNov'       : 'نوامبر',
			'msDec'       : 'دسامبر',
			'January'     : 'ژانویه',
			'February'    : 'فوریه',
			'March'       : 'مارس',
			'April'       : 'آوریل',
			'May'         : 'می',
			'June'        : 'جون',
			'July'        : 'جولای',
			'August'      : 'آگوست',
			'September'   : 'سپتامبر',
			'October'     : 'اکتبر',
			'November'    : 'نوامبر',
			'December'    : 'دسامبر',
			'Sunday'      : 'یک‌شنبه',
			'Monday'      : 'دوشنبه',
			'Tuesday'     : 'سه‌شنبه',
			'Wednesday'   : 'چهارشنبه',
			'Thursday'    : 'پنج‌شنبه',
			'Friday'      : 'جمعه',
			'Saturday'    : 'شنبه',
			'Sun'         : 'یک‌شنبه',
			'Mon'         : 'دوشنبه',
			'Tue'         : 'سه‌شنبه',
			'Wed'         : 'چهارشنبه',
			'Thu'         : 'پنج‌شنبه',
			'Fri'         : 'جمعه',
			'Sat'         : 'شنبه',

			/******************************** sort variants ********************************/
			'sortname'          : 'بر اساس نام',
			'sortkind'          : 'بر اساس نوع',
			'sortsize'          : 'بر اساس اندازه',
			'sortdate'          : 'بر اساس تاریخ',
			'sortFoldersFirst'  : 'پوشه‌ها در ابتدای لیست',
			'sortperm'          : 'براساس سطح دسترسی', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'براساس مد دسترسی',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'براساس مالک',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'براساس گروه',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'همچنین نمای درختی',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'فایل.txt جدید', // added 10.11.2015
			'untitled folder'   : 'پوشه جدید',   // added 10.11.2015
			'Archive'           : 'بایگانی جدید',  // from v2.1 added 10.11.2015
			'untitled file'     : 'فایل جدید.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: فایل',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'تایید نهایی عملیات ضروری است.',
			'confirmRm'       : 'آیا مطمئنید که موارد انتخابی حذف شوند؟ موارد حدف شده قابل بازیابی نخواهند بود!',
			'confirmRepl'     : 'مالیلد جایگزینی فایل قدیمی با فایل جدید انجام شود؟ (برای جایگزینی پوشه محتوای قدیمی با محتوای پوشه جدید ادغام خواهد شد. برای تهیه پشتیبانی و سپس جایگزینی گزینه پشتیبان‌گیری را انتخاب نمایید)',
			'confirmRest'     : 'آیا مایلید موارد موجود با موارد بازیابی شده از سطل بازیافت جایگزین شود؟', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 نیست<br/>تبدیل به UTF-8 انجام شود؟<br/>پس از ذخیره سازی محتوا به صورت UTF-8 خواهد بود.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'encoding این فایل قابل تشخیص نیست. جهت ویرایش نیاز است که به صورت موقت به UTF-8 تبدیل شود.<br/>لطفا encoding فایل را انتخاب نمایید.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'تغییراتی اعمال شده است.<br/>در صورت عدم ذخیره تغییرات از بین خواهد رفت.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'آیا مطمئنید که این موارد به سطل بازیافت منتقل شوند؟', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'آیا مطمئن هستید که می خواهید موارد را به "$1" منتقل کنید؟', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'اعمال تغییرات به همه موارد',
			'name'            : 'نام',
			'size'            : 'اندازه',
			'perms'           : 'سطح دسترسی',
			'modify'          : 'آخرین تغییرات',
			'kind'            : 'نوع',
			'read'            : 'خواندن',
			'write'           : 'نوشتن',
			'noaccess'        : 'دسترسی وجود ندارد',
			'and'             : 'و',
			'unknown'         : 'نامعلوم',
			'selectall'       : 'انتخاب همه موارد',
			'selectfiles'     : 'انتخاب یک یا چند مورد',
			'selectffile'     : 'انتخاب اولین مورد',
			'selectlfile'     : 'انتخاب آخرین مورد',
			'viewlist'        : 'حالت نمایش لیست',
			'viewicons'       : 'نمایش با آیکون',
			'viewSmall'       : 'آیکون‌های کوچک', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'آیکون‌های متوسط', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'آیکون‌های بزرگ', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'آیکون‌های خیلی بزرگ', // from v2.1.39 added 22.5.2018
			'places'          : 'مسیرها',
			'calc'            : 'محاسبه',
			'path'            : 'مسیر',
			'aliasfor'        : 'نام مستعار برای',
			'locked'          : 'قفل شده',
			'dim'             : 'ابعاد',
			'files'           : 'فایل‌ها',
			'folders'         : 'پوشه‌ها',
			'items'           : 'آیتم‌ها',
			'yes'             : 'بلی',
			'no'              : 'خیر',
			'link'            : 'لینک',
			'searcresult'     : 'نتایج جستجو',
			'selected'        : 'موارد انتخاب شده',
			'about'           : 'درباره',
			'shortcuts'       : 'میانبرها',
			'help'            : 'راهنمایی',
			'webfm'           : 'مدیر فایل تحت وب',
			'ver'             : 'نسخه',
			'protocolver'     : 'نسخه پروتکل',
			'homepage'        : 'صفحه اصلی پروژه',
			'docs'            : 'مستندات',
			'github'          : 'صفحه پروژه را در Github مشاهده کنید',
			'twitter'         : 'ما را در Twitter دنبال کنید',
			'facebook'        : 'به ما در facebook ملحق شوید',
			'team'            : 'تیم',
			'chiefdev'        : 'توسعه دهنده اصلی',
			'developer'       : 'توسعه دهنده',
			'contributor'     : 'مشارکت کننده',
			'maintainer'      : 'پشتیبان',
			'translator'      : 'مترجم',
			'icons'           : 'آیکون‌ها',
			'dontforget'      : 'و فراموش نکنید که حوله خود را بردارید',
			'shortcutsof'     : 'میانبرها غیرفعال شده‌اند.',
			'dropFiles'       : 'فایل ها در این بخش رها کنید.',
			'or'              : 'یا',
			'selectForUpload' : 'انتخاب فایل جهت آپلود',
			'moveFiles'       : 'انتقال موارد',
			'copyFiles'       : 'کپی موارد',
			'restoreFiles'    : 'بازیابی موارد', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'حذف',
			'aspectRatio'     : 'نسبت تصویر',
			'scale'           : 'مقیاس',
			'width'           : 'طول',
			'height'          : 'ارتفاع',
			'resize'          : 'تغییر اندازه',
			'crop'            : 'بریدن',
			'rotate'          : 'چرخاندن',
			'rotate-cw'       : 'چرخاندن 90 درجه در جهت عقربه‌های ساعت',
			'rotate-ccw'      : 'چرخاندن 90 درجه در جهت خلاف عقربه‌های ساعت',
			'degree'          : '°',
			'netMountDialogTitle' : 'اتصال درایو شبکه', // added 18.04.2012
			'protocol'            : 'پروتکل', // added 18.04.2012
			'host'                : 'میزبان', // added 18.04.2012
			'port'                : 'پورت', // added 18.04.2012
			'user'                : 'نام کاربری', // added 18.04.2012
			'pass'                : 'کلمه عبور', // added 18.04.2012
			'confirmUnmount'      : 'مطمئن به قطع اتصال $1 می باشد؟',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'فایل‌ها را به داخل این کادر بیندازید یا از حافظه paste کنید', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'فایل‌ها را به داخل این کادر بیندازید یا از داخل حافظه آدرس URL/تصاویر را paste کنید', // from v2.1 added 07.04.2014
			'encoding'        : 'نوع کد گذاری', // from v2.1 added 19.12.2014
			'locale'          : 'نوع Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'مقصد: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'جستجو براساس MIME Type وارد شده', // from v2.1 added 22.5.2015
			'owner'           : 'مالک', // from v2.1 added 20.6.2015
			'group'           : 'گروه', // from v2.1 added 20.6.2015
			'other'           : 'سایر', // from v2.1 added 20.6.2015
			'execute'         : 'قابل اجرا', // from v2.1 added 20.6.2015
			'perm'            : 'سطح دسترسی', // from v2.1 added 20.6.2015
			'mode'            : 'مد دسترسی', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'پوشه خالی است', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'پوشه خالی است، فایل‌ها را جهت افزودن کشیده و رها کنید', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'پوشه خالی است، یک اشاره طولانی برای افزودن فایل کافی است', // from v2.1.6 added 30.12.2015
			'quality'         : 'کیفیت', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'همگام‌سازی خودکار',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'حرکت به بالا',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'دریافت URL لینک', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'موارد انتخاب شده ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'شناسه پوشه', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'اجازه دسترسی به صورت آفلاین', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'جهت اعتبارسنجی مجدد', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'در حال بازگذاری...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'بازکردن چندین فایل', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'شما قصد باز کردن $1 فایل را دارید. آیا مایلید همه موارد در مرورگر باز شود؟', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'موردی یافت نشد.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'در حال ویرایش یک فایل.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'شما $1 مورد را انتخاب کرده‌اید.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'در حافظه $1 مورد وجود دارد.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'جستجوی افزایش فقط از نمای فعلی.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'بازگرداندن', // from v2.1.15 added 3.8.2016
			'complete'        : 'عملیات $1 انجام شد', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'منو راست', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'چرخش صفحه', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'ریشه‌های درایو', // from v2.1.16 added 16.9.2016
			'reset'           : 'بازنشانی', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'رنگ پس زمینه', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'انتخابگر رنگ', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'گرید 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'فعال شده', // from v2.1.16 added 4.10.2016
			'disabled'        : 'غیرفعال شده', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'در نمای فعلی موردی یافت نشد.\\Aبا فشردن کلید Enter مسیر جستجو را تغییر دهید.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'برای جستجوی تک حرفی در نمایش فعلی موردی یافت نشد.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'عنوان متنی', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 دقیقه باقیمانده', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'باز کردن مجدد با کد گذاری انتخاب شده', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'ذخیره با کد گذاری انتخاب شده', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'انتخاب پوشه', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'جستجوی تک حرفی', // from v2.1.23 added 24.3.2017
			'presets'         : 'از پیش تعیین شده', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'موارد زیاد است و امکان انتقال به سطل بازیافت وجود ندارد.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'ویرایش محتوا', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'خالی کردن پوشه "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'پوشه "$1" ‌ذاتا خالی است.', // from v2.1.25 added 22.6.2017
			'preference'      : 'تنظیمات', // from v2.1.26 added 28.6.2017
			'language'        : 'زبان', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'بازبینی تنظیمات ذخیره شده در این مرورگر', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'تنظیمات نوار ابزار', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 کاراکتر باقیمانده.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '$1 خط مانده است',  // from v2.1.52 added 16.1.2020
			'sum'             : 'مجموع', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'اندازه فایل نامتعارف', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'انتخاب عناصر داخل دیالوگ با mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'انتخاب', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'عملیات به هنگام انتخاب فایل', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'باز کردن با ویرایشگر مورداستفاده در آخرین دفعه', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'انتخاب معکوس', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'آیا مایل به تغییر نام $1 مورد انتخاب شده همانند $2 هستید؟<br/>امکان بازگرداندن این تغییر پس از اعمالو جود ندارد!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'تغییرنام گروهی', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ عدد', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'افزودن پیشوند', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'افزودن پسوند', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'تغییر پسوند فایل', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'تنظیمات ستون‌ها (حالت نمایش لیست)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'تمامی تغییرات به صورت آنی برروی فایل فشرده اعمال خواهد شد.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'تمامی تغییرات تا زمانی که اتصال این درایو قطع نشده است اعمال نخواهند شد.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'اتصال به درایوهای زیر قطع خواهد شد. آیا مطمئن به ادامه عملیات هستید؟', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'مشخصات', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'الگوریتم های نمایش hash فایل', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'موارد اطلاعات', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'جهت خروج مجدد فشار دهید.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'نوار ابزار', // from v2.1.38 added 4.4.2018
			'workspace'       : 'فضای کاری', // from v2.1.38 added 4.4.2018
			'dialog'          : 'پنجره دیالوگ', // from v2.1.38 added 4.4.2018
			'all'             : 'همه', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'اندازه آیکون‌ها (نمایش به صورت آیکون)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'باز کردن پنجره ویرایشگر به صورت تمام صفحه', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'بدلیل در دسترسی نبودن تبدیل از طریق API، لطفا برروی وب سایت تبدیل را انجام دهید.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'پس از تبدیل, شما بایستی از طریق آدرس URL یا فایل دریافت شده آپلود را انجاد دهید تا فایل تبدیل شده ذخیره گردد.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'تبدیل برروی سایت از $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'هماهنگ سازی‌ها', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'elFinder با سرویس های زیر هماهنگ شده است. لطفا ابتدا شرایط استفاده، مقررات حریم خصوصی و سایر موارد را مطالعه بفرمایید.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'نمایش موارد پنهان', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'موارد مخفی را پنهان کنید', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'نمایش / پنهان کردن موارد پنهان', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'انواع فایل برای فعال کردن با "فایل جدید"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'نوع فایل نوشتاری', // from v2.1.41 added 7.8.2018
			'add'             : 'اضافه کردن', // from v2.1.41 added 7.8.2018
			'theme'           : 'تم', // from v2.1.43 added 19.10.2018
			'default'         : 'پیش فرض', // from v2.1.43 added 19.10.2018
			'description'     : 'توضیحات', // from v2.1.43 added 19.10.2018
			'website'         : 'وب سایت', // from v2.1.43 added 19.10.2018
			'author'          : 'نویستده', // from v2.1.43 added 19.10.2018
			'email'           : 'ایمیل', // from v2.1.43 added 19.10.2018
			'license'         : 'لایسنس', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'این مورد ذخیره نمی شود برای جلوگیری از دست دادن ویرایش ها ، آنها را به رایانه خود منتقل کنید.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'برای انتخاب پرونده ، دوبار کلیک کنید.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'از حالت تمام صفحه استفاده کنید', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'نامعلوم',
			'kindRoot'        : 'ریشه درایو', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'پوشه',
			'kindSelects'     : 'انتخاب شده‌ها', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'اسم مستعار',
			'kindAliasBroken' : 'اسم مستعار ناقص',
			// applications
			'kindApp'         : 'برنامه',
			'kindPostscript'  : 'سند Postscript',
			'kindMsOffice'    : 'سند Microsoft Office',
			'kindMsWord'      : 'سند Microsoft Word',
			'kindMsExcel'     : 'سند Microsoft Excel',
			'kindMsPP'        : 'فایل ارایه Microsoft Powerpoint',
			'kindOO'          : 'سند Open Office',
			'kindAppFlash'    : 'برنامه فلش',
			'kindPDF'         : 'سند قابل حمل (PDF)',
			'kindTorrent'     : 'فایل تورنت',
			'kind7z'          : 'فایل فشرده 7z',
			'kindTAR'         : 'فایل فشرده TAR',
			'kindGZIP'        : 'فایل فشرده GZIP',
			'kindBZIP'        : 'فایل فشرده BZIP',
			'kindXZ'          : 'فایل فشرده XZ',
			'kindZIP'         : 'فایل فشرده ZIP',
			'kindRAR'         : 'فایل فشرده RAR',
			'kindJAR'         : 'فایل JAR مربوط به جاوا',
			'kindTTF'         : 'فونت True Type',
			'kindOTF'         : 'فونت Open Type',
			'kindRPM'         : 'بسته RPM',
			// texts
			'kindText'        : 'سند متنی',
			'kindTextPlain'   : 'سند متنی ساده',
			'kindPHP'         : 'سورس کد PHP',
			'kindCSS'         : 'فایل style sheet',
			'kindHTML'        : 'سند HTML',
			'kindJS'          : 'سورس کد Javascript',
			'kindRTF'         : 'سند متنی غنی',
			'kindC'           : 'سورس کد C',
			'kindCHeader'     : 'سورس کد C header',
			'kindCPP'         : 'سورس کد C++',
			'kindCPPHeader'   : 'سورس کد C++ header',
			'kindShell'       : 'اسکریپت شل یونیکس',
			'kindPython'      : 'سورس کد Python',
			'kindJava'        : 'سورس کد Java',
			'kindRuby'        : 'سورس کد Ruby',
			'kindPerl'        : 'اسکریپت Perl',
			'kindSQL'         : 'سورس کد SQL',
			'kindXML'         : 'سند XML',
			'kindAWK'         : 'سورس کد AWK',
			'kindCSV'         : 'مقادیر جداشده با کامل',
			'kindDOCBOOK'     : 'سند Docbook XML',
			'kindMarkdown'    : 'سند متنی Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'تصویر',
			'kindBMP'         : 'تصویر BMP',
			'kindJPEG'        : 'تصویر JPEG',
			'kindGIF'         : 'تصویر GIF',
			'kindPNG'         : 'تصویر PNG',
			'kindTIFF'        : 'تصویر TIFF',
			'kindTGA'         : 'تصویر TGA',
			'kindPSD'         : 'تصویر Adobe Photoshop',
			'kindXBITMAP'     : 'تصویر X bitmap',
			'kindPXM'         : 'تصویر Pixelmator',
			// media
			'kindAudio'       : 'فایل صوتی',
			'kindAudioMPEG'   : 'فایل صوتی MPEG',
			'kindAudioMPEG4'  : 'فایل صوتی MPEG-4',
			'kindAudioMIDI'   : 'فایل صوتی MIDI',
			'kindAudioOGG'    : 'فایل صوتی Ogg Vorbis',
			'kindAudioWAV'    : 'فایل صوتی WAV',
			'AudioPlaylist'   : 'لیست پخش MP3',
			'kindVideo'       : 'فایل ویدیویی',
			'kindVideoDV'     : 'فایل ویدیویی DV',
			'kindVideoMPEG'   : 'فایل ویدیویی MPEG',
			'kindVideoMPEG4'  : 'فایل ویدیویی MPEG-4',
			'kindVideoAVI'    : 'فایل ویدیویی AVI',
			'kindVideoMOV'    : 'فایل ویدیویی Quick Time',
			'kindVideoWM'     : 'فایل ویدیویی Windows Media',
			'kindVideoFlash'  : 'فایل ویدیویی Flash',
			'kindVideoMKV'    : 'فایل ویدیویی Matroska',
			'kindVideoOGG'    : 'فایل ویدیویی Ogg'
		}
	};
}));lib/js/i18n/elfinder.da.js000064400000100743147361034410011226 0ustar00/**
 * Danish translation
 * @author Mark Topper (webman.io)
 * @author Helmuth Mikkelsen <helmuthm@gmail.com>
 * @version 2022-02-28
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.da = {
		translator : 'Mark Topper (webman.io), Helmuth Mikkelsen &lt;helmuthm@gmail.com&gt;',
		language   : 'Danish',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 28.02.2022 11:38
		fancyDateFormat : '$1 H:i', // will show like: I dag 11:38
		nonameDateFormat : 'Ymd-His', // noname upload will show like: 20220228-113848
		messages   : {
			'getShareText' : 'Del',
			'Editor ': 'Kode Editor',
			/********************************** errors **********************************/
			'error'                : 'Fejl',
			'errUnknown'           : 'Ukendt fejl.',
			'errUnknownCmd'        : 'Ukendt kommando.',
			'errJqui'              : 'Ugyldig jQuery UI-konfiguration. Valgbare, trækbare og dropbare komponenter skal medtages.',
			'errNode'              : 'elFinder kræver DOM Element oprettet.',
			'errURL'               : 'Ugyldig elFinder konfiguration! URL option er ikke sat.',
			'errAccess'            : 'Adgang nægtet.',
			'errConnect'           : 'Kan ikke få kontatkt med backend.',
			'errAbort'             : 'Forbindelse afbrudt.',
			'errTimeout'           : 'Forbindelse timeout.',
			'errNotFound'          : 'Backend ikke fundet.',
			'errResponse'          : 'Ugyldigt backend svar.',
			'errConf'              : 'Ugyldig backend konfiguration.',
			'errJSON'              : 'PHP JSON modul ikke installeret.',
			'errNoVolumes'         : 'Læsbare diskenheder er ikke tilgængelige.',
			'errCmdParams'         : 'Ugyldige parametre for kommando "$1".',
			'errDataNotJSON'       : 'Data er ikke JSON.',
			'errDataEmpty'         : 'Data er tom.',
			'errCmdReq'            : 'Backend-anmodning kræver kommandonavn.',
			'errOpen'              : 'Kunne ikke åbne "$1".',
			'errNotFolder'         : 'Objektet er ikke en mappe.',
			'errNotFile'           : 'Objektet er ikke en fil.',
			'errRead'              : 'Kunne ikke læse "$1".',
			'errWrite'             : 'Kunne ikke skrive til "$1".',
			'errPerm'              : 'Adgang nægtet.',
			'errLocked'            : '"$1" er låst og kan ikke blive omdøbt, flyttet eller slettet.',
			'errExists'            : 'Der findes allerede en fil ved navn "$1".',
			'errInvName'           : 'Ugyldigt filnavn.',
			'errInvDirname'        : 'Ugyldigt mappenavn.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mappe ikke fundet.',
			'errFileNotFound'      : 'Fil ikke fundet.',
			'errTrgFolderNotFound' : 'Mappen "$1" blev ikke fundet.',
			'errPopup'             : 'Browser forhindrede åbning af pop up-vindue. For at åbne filen skal du aktivere den i browserindstillinger.',
			'errMkdir'             : 'Kunne ikke oprette mappen "$1".',
			'errMkfile'            : 'Kunne ikke oprette filen "$1".',
			'errRename'            : 'Kunne ikke omdøbe "$1".',
			'errCopyFrom'          : 'Kopiering af filer fra diskenhed "$1" er ikke tilladt.',
			'errCopyTo'            : 'Kopiering af filer til diskenhed "$1" er ikke tilladt.',
			'errMkOutLink'         : 'Kan ikke oprette et link til uden for diskenhedsroden.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload fejl.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kunne ikke uploade "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Ingen filer fundet til upload.',
			'errUploadTotalSize'   : 'Data overskrider den maksimalt tilladte størrelse.', // old name - errMaxSize
			'errUploadFileSize'    : 'Fil overskrider den maksimalt tilladte størrelse.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Filtype ikke godkendt.',
			'errUploadTransfer'    : '"$1" overførselsfejl.',
			'errUploadTemp'        : 'Kan ikke oprette midlertidig fil til upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" findes allerede på dette sted og kan ikke erstattes af objekt med en anden type.', // new
			'errReplace'           : 'Kan ikke erstatte "$1".',
			'errSave'              : 'Kunne ikke gemme "$1".',
			'errCopy'              : 'Kunne ikke kopiere "$1".',
			'errMove'              : 'Kunne ikke flytte "$1".',
			'errCopyInItself'      : 'Kunne ikke kopiere "$1" til sig selv.',
			'errRm'                : 'Kunne ikke slette "$1".',
			'errTrash'             : 'Kan ikke komme i papirkurven.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kunne ikke fjerne kildefil(er).',
			'errExtract'           : 'Kunne ikke udpakke filer fra "$1".',
			'errArchive'           : 'Kunne ikke oprette arkiv.',
			'errArcType'           : 'Arkivtypen er ikke understøttet.',
			'errNoArchive'         : 'Filen er ikke et arkiv eller har ien kke-understøttet arkivtype.',
			'errCmdNoSupport'      : 'Backend understøtter ikke denne kommando.',
			'errReplByChild'       : 'Mappen "$1" kan ikke erstattes af et element, den indeholder.',
			'errArcSymlinks'       : 'Af sikkerhedsmæssige årsager nægtes at udpakke arkiver der indeholder symlinks eller filer med ikke-tilladte navne.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arkivfiler overskrider den maksimalt tilladte størrelse.',
			'errResize'            : 'Kunne ikke ændre størrelsen på "$1".',
			'errResizeDegree'      : 'Ugyldig rotationsgrad.',  // added 7.3.2013
			'errResizeRotate'      : 'Kunne ikke rotere billedet.',  // added 7.3.2013
			'errResizeSize'        : 'Ugyldig billedstørrelse.',  // added 7.3.2013
			'errResizeNoChange'    : 'Billedstørrelse ikke ændret.',  // added 7.3.2013
			'errUsupportType'      : 'Ikke-understøttet filtype.',
			'errNotUTF8Content'    : 'Filen "$1" er ikke i UTF-8 og kan ikke blive redigeret.',  // added 9.11.2011
			'errNetMount'          : 'Kunne ikke mounte "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ikke-understøttet protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount mislykkedes.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Værten kræves.', // added 18.04.2012
			'errSessionExpires'    : 'Din session er udløbet på grund af inaktivitet.',
			'errCreatingTempDir'   : 'Kunne ikke oprette midlertidig mappe: "$1"',
			'errFtpDownloadFile'   : 'Kunne ikke downloade filen fra FTP: "$1"',
			'errFtpUploadFile'     : 'Kunne ikke uploade filen til FTP: "$1"',
			'errFtpMkdir'          : 'Kunne ikke oprette fjernmappe på FTP: "$1"',
			'errArchiveExec'       : 'Fejl under arkivering af filer: "$1"',
			'errExtractExec'       : 'Fejl under udpakning af filer: "$1"',
			'errNetUnMount'        : 'Kan ikke unmounte.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Kan ikke konverteres til UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Prøv den nyeste browser, hvis du vil uploade mappen.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Time out under søgning på "$1". Søgeresultatet er delvis.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-autorisation er påkrævet.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maksimalt antal valgbare emner er $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Kan ikke gendannes fra papirkurven. Kan ikke identificere gendannelsesdestinationen.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor blev ikke fundet til denne filtype.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Der opstod en fejl på serversiden.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Kunne ikke tømme mappen "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Der er $1 flere fejl.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Du kan oprette op til $1 mapper ad gangen.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Opret arkiv',
			'cmdback'      : 'Tilbage',
			'cmdcopy'      : 'Kopier',
			'cmdcut'       : 'Klip',
			'cmddownload'  : 'Downloade',
			'cmdduplicate' : 'Dupliker',
			'cmdedit'      : 'Rediger fil',
			'cmdextract'   : 'Udpak filer fra arkiv',
			'cmdforward'   : 'Frem',
			'cmdgetfile'   : 'Vælg filer',
			'cmdhelp'      : 'Om denne software',
			'cmdhome'      : 'Hjem',
			'cmdinfo'      : 'Information',
			'cmdmkdir'     : 'Ny mappe',
			'cmdmkdirin'   : 'I en ny mappe', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ny fil',
			'cmdopen'      : 'Åben',
			'cmdpaste'     : 'Indsæt',
			'cmdquicklook' : 'Vis',
			'cmdreload'    : 'Genindlæs',
			'cmdrename'    : 'Omdøb',
			'cmdrm'        : 'Slet',
			'cmdtrash'     : 'I papirkurven', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Gendan', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Find filer',
			'cmdup'        : 'Gå til overordnet mappe',
			'cmdupload'    : 'Upload filer',
			'cmdview'      : 'Vis',
			'cmdresize'    : 'Tilpas størrelse & Roter',
			'cmdsort'      : 'Sorter',
			'cmdnetmount'  : 'Mount netværksdrev', // added 18.04.2012
			'cmdnetunmount': 'Afmonter', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Til steder', // added 28.12.2014
			'cmdchmod'     : 'Skift tilstand', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Åbn en mappe', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Nulstil søjlebredde', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Fuld skærm', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Flyt', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Tøm mappe', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Fortryd', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Gentag igen', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Præferencer', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Vælg alle', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Vælg ingen', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverter valg', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Åbn i nyt vindue', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Skjul (præference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Luk',
			'btnSave'   : 'Gem',
			'btnRm'     : 'Slet',
			'btnApply'  : 'Anvend',
			'btnCancel' : 'Annuler',
			'btnNo'     : 'Nej',
			'btnYes'    : 'Ja',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Gå til $1 & godkend', // from v2.1 added 26.04.2012
			'btnUnmount': 'Afmonter', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konverter', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Her',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Diskenhed',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Alle',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME-type', // from v2.1 added 22.5.2015
			'btnFileName':'Filnavn',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Gem & Luk', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sikkerhedskopiering', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Omdøb',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Omdøb(Alle)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Forrige ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Næste ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Gem som', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Åben mappe',
			'ntffile'     : 'Åben fil',
			'ntfreload'   : 'Genindlæs mappeindhold',
			'ntfmkdir'    : 'Opretter mappe',
			'ntfmkfile'   : 'Opretter filer',
			'ntfrm'       : 'Sletter filer',
			'ntfcopy'     : 'Kopier filer',
			'ntfmove'     : 'Flytter filer',
			'ntfprepare'  : 'Kontrol af eksisterende emner',
			'ntfrename'   : 'Omdøb filer',
			'ntfupload'   : 'Uploader filer',
			'ntfdownload' : 'Downloader filer',
			'ntfsave'     : 'Gemmer filer',
			'ntfarchive'  : 'Opretter arkiv',
			'ntfextract'  : 'Udpakker filer fra arkiv',
			'ntfsearch'   : 'Søger filer',
			'ntfresize'   : 'Ændring af størrelsen på billeder',
			'ntfsmth'     : 'Gør noget',
			'ntfloadimg'  : 'Henter billede',
			'ntfnetmount' : 'Mounter netværksdrev', // added 18.04.2012
			'ntfnetunmount': 'Unmounter netværksdrev', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Henter billeddimension', // added 20.05.2013
			'ntfreaddir'  : 'Læser folderinfomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Får URL til link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ændring af filtilstand', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Bekræftelse af upload filnavn', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Oprettelse af en fil til download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Få stiinformation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Behandler den uploadede fil', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Smider i papirkurv', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Udfører gendannelse fra papirkurven', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kontrollerer destinationsmappe', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Fortryder tidligere handling', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Gentager tidligere fortryd', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrol af indhold', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Papirkurv', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ukendt',
			'Today'       : 'I dag',
			'Yesterday'   : 'I går',
			'msJan'       : 'januar',
			'msFeb'       : 'februar',
			'msMar'       : 'marts',
			'msApr'       : 'april',
			'msMay'       : 'Maj',
			'msJun'       : 'juni',
			'msJul'       : 'juli',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Marts',
			'April'       : 'April',
			'May'         : 'Maj',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Søndag',
			'Monday'      : 'Mandag',
			'Tuesday'     : 'Tirsdag',
			'Wednesday'   : 'Onsdag',
			'Thursday'    : 'Torsdag',
			'Friday'      : 'Fredag',
			'Saturday'    : 'Lørdag',
			'Sun'         : 'Søn',
			'Mon'         : 'Man',
			'Tue'         : 'Tir',
			'Wed'         : 'Ons',
			'Thu'         : 'Tor',
			'Fri'         : 'Fre',
			'Sat'         : 'Lør',

			/******************************** sort variants ********************************/
			'sortname'          : 'efter navn',
			'sortkind'          : 'efter type',
			'sortsize'          : 'efter størrelse',
			'sortdate'          : 'efter dato',
			'sortFoldersFirst'  : 'Mapper først',
			'sortperm'          : 'efter tilladelse', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'efter mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'efter ejer',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'efter gruppe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Også Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NyFil.txt', // added 10.11.2015
			'untitled folder'   : 'NyFolder',   // added 10.11.2015
			'Archive'           : 'NytArkiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NyFil.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fil',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Bekræftelse påkrævet',
			'confirmRm'       : 'Er du sikker på du vil slette valgte filer?<br/>Dette kan ikke fortrydes!',
			'confirmRepl'     : 'Erstat gammel fil med ny fil?',
			'confirmRest'     : 'Erstat eksisterende element med elementet i papirkurven?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ikke i UTF-8<br/>Konverter til UTF-8?<br/>Indholdet bliver UTF-8 ved at gemme efter konvertering.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Tegnkodning af denne fil kunne ikke registreres. Det er nødvendigt at konvertere midlertidigt til UTF-8 til redigering.<br/>Vælg tegnkodning af denne fil.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Det er blevet ændret.<br/>Du mister arbejde, hvis du ikke gemmer ændringer.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Er du sikker på, at du vil flytte emner til papirkurven?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Er du sikker på, at du vil flytte emner til "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Anvend ved alle',
			'name'            : 'Navn',
			'size'            : 'Størrelse',
			'perms'           : 'Rettigheder',
			'modify'          : 'Ændret',
			'kind'            : 'Type',
			'read'            : 'læse',
			'write'           : 'skrive',
			'noaccess'        : 'ingen adgang',
			'and'             : 'og',
			'unknown'         : 'ukendt',
			'selectall'       : 'Vælg alle filer',
			'selectfiles'     : 'Vælg fil(er)',
			'selectffile'     : 'Vælg første fil',
			'selectlfile'     : 'Vælg sidste fil',
			'viewlist'        : 'Listevisning',
			'viewicons'       : 'Ikonvisning',
			'viewSmall'       : 'Små ikoner', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium ikoner', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Store ikoner', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ekstra store ikoner', // from v2.1.39 added 22.5.2018
			'places'          : 'Placeringer',
			'calc'            : 'Beregn',
			'path'            : 'Sti',
			'aliasfor'        : 'Alias for',
			'locked'          : 'Låst',
			'dim'             : 'Størrelser',
			'files'           : 'Filer',
			'folders'         : 'Mapper',
			'items'           : 'Emner',
			'yes'             : 'ja',
			'no'              : 'nej',
			'link'            : 'Link',
			'searcresult'     : 'Søgeresultater',
			'selected'        : 'valgte emner',
			'about'           : 'Om',
			'shortcuts'       : 'Genveje',
			'help'            : 'Hjælp',
			'webfm'           : 'Internet filmanager',
			'ver'             : 'Version',
			'protocolver'     : 'protokol version',
			'homepage'        : 'Projektside',
			'docs'            : 'Dokumentation',
			'github'          : 'Fork os på Github',
			'twitter'         : 'Følg os på Twitter',
			'facebook'        : 'Følg os på Facebook',
			'team'            : 'Hold',
			'chiefdev'        : 'hovedudvikler',
			'developer'       : 'udvikler',
			'contributor'     : 'bidragyder',
			'maintainer'      : 'vedligeholder',
			'translator'      : 'oversætter',
			'icons'           : 'Ikoner',
			'dontforget'      : 'og glem ikke at tage dit håndklæde',
			'shortcutsof'     : 'Gemveje deaktiveret',
			'dropFiles'       : 'Drop filer hertil',
			'or'              : 'eller',
			'selectForUpload' : 'Vælg filer',
			'moveFiles'       : 'Flyt filer',
			'copyFiles'       : 'Kopier filer',
			'restoreFiles'    : 'Gendan emner', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Slet fra placering',
			'aspectRatio'     : 'Skærmformat',
			'scale'           : 'Skala',
			'width'           : 'Bredde',
			'height'          : 'Højde',
			'resize'          : 'Tilpas størrelse',
			'crop'            : 'Beskær',
			'rotate'          : 'Roter',
			'rotate-cw'       : 'Roter 90 grader med uret',
			'rotate-ccw'      : 'Roter 90 grader mod uret',
			'degree'          : 'Grader',
			'netMountDialogTitle' : 'Mount netwærkdrev', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Vært', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Bruger', // added 18.04.2012
			'pass'                : 'Kodeord', // added 18.04.2012
			'confirmUnmount'      : 'Unmounter du $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Slip eller indsæt filer fra browseren', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Slip filer, indsæt webadresser eller billeder (udklipsholder) her', // from v2.1 added 07.04.2014
			'encoding'        : 'Indkodning', // from v2.1 added 19.12.2014
			'locale'          : 'Sprog',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Mål: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Søg efter input MIME-type', // from v2.1 added 22.5.2015
			'owner'           : 'Ejer', // from v2.1 added 20.6.2015
			'group'           : 'Gruppe', // from v2.1 added 20.6.2015
			'other'           : 'Andet', // from v2.1 added 20.6.2015
			'execute'         : 'Udfør', // from v2.1 added 20.6.2015
			'perm'            : 'Tilladelse', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mappe er tom', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mappe er tom\\A Drop for at tilføje enmer', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mappen er tom\\A Langt tryk for at tilføje emner', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalitet', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Autosync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Flyt op',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Hent URL-link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Valgte emner ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder-ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Tillad offline adgang', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'For at godkende igen', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Indlæser nu...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Åben flere filer', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Du prøver at åbne $1-filerne. Er du sikker på, at du vil åbne i browseren?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Søgeresultaterne er tomme i søgemålet.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Redigerer en fil.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Du har valgt $1 emner.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Du har $1 emner i udklipsholder.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementel søgning er kun fra den aktuelle visning.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Genindsæt', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 færdig', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontekstmenu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Sidevending', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Diskenheds rødder', // from v2.1.16 added 16.9.2016
			'reset'           : 'Nulstil', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Baggrundsfarve', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Farvevælger', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Aktiveret', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Deaktiveret', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Søgeresultaterne er tomme i den aktuelle visning.\\ATryk på [Enter] for at udvide søgemålet.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Førstebogstavs søgeresultater er tomme i den aktuelle visning.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Tekstlabel', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minutter tilbage', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Åbn igen med valgt encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Gem med valgt encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Vælg mappe', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Førstebogstavs søgning', // from v2.1.23 added 24.3.2017
			'presets'         : 'Forudindstillinger', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Det er for mange emner, så det kan ikke komme i papirkurven.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Tøm mappen "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Der er ingen emner i mappen "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Præference', // from v2.1.26 added 28.6.2017
			'language'        : 'Sprog', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialiser de indstillinger, der er gemt i denne browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Værktøjslinjens indstillinger', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 tegn tilbage.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 linjer tilbage.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Omtrentlig filstørrelse', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fokuser på elementet i dialog med musemarkering',  // from v2.1.30 added 2.11.2017
			'select'          : 'Vælg', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Handling, når du vælger fil', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Åbn med den editor, der blev brugt sidst', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverter valg', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Er du sikker på, at du vil omdøbe $1 valgte emner som $2?<br/>Dette kan ikke fortrydes!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch omdøbning', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Tal', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Tilføj prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Tilføj suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Skift filendelse', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Kolonneindstillinger (listevisning)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Alle ændringer påvirker straks arkivet.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Eventuelle ændringer gennemføres ikke, før denne enhed fjernes.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Følgende disk(e) mounted på denne enhed unmountes også. Er du sikker på at unmounte den?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Valg info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmer, der viser filens hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info-emner (panelet til valg af info)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Tryk igen for at afslutte.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Værktøjslinje', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Arbejdsområde', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Alle', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ikonstørrelse (ikonvisning)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Åbn det maksimerede editorvindue', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Da konvertering via API ikke er tilgængelig i øjeblikket, bedes du konvertere på webstedet.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Efter konvertering skal du uploade med elementets URL eller en downloadet fil for at gemme den konverterede fil.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konverter på stedet på $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrationer', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Denne elFinder har følgende eksterne tjenester integreret. Kontroller venligst vilkårene for brug, fortrolighedspolitik osv. inden du bruger det.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Vis skjulte emner', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Skjul skjulte emner', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Vis / Skjul skjulte emner', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Filtyper, der skal aktiveres med "Ny fil"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type af tekstfilen', // from v2.1.41 added 7.8.2018
			'add'             : 'Tilføj', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Standard', // from v2.1.43 added 19.10.2018
			'description'     : 'Beskrivelse', // from v2.1.43 added 19.10.2018
			'website'         : 'Hjemmeside', // from v2.1.43 added 19.10.2018
			'author'          : 'Forfatter', // from v2.1.43 added 19.10.2018
			'email'           : 'Mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licens', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Dette element kan ikke gemmes. For at undgå at miste redigeringerne skal du eksportere til din pc.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dobbeltklik på filen for at vælge den.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Brug fuldskærmstilstand', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ukendt',
			'kindRoot'        : 'Diskenheds rod', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mappe',
			'kindSelects'     : 'Valg', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Ødelagt alias',
			// applications
			'kindApp'         : 'Applikation',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint præsentation',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash applikation',
			'kindPDF'         : 'Flytbart Dokument Format (PDF)',
			'kindTorrent'     : 'Bittorrent fil',
			'kind7z'          : '7z arkiv',
			'kindTAR'         : 'TAR arkiv',
			'kindGZIP'        : 'GZIP arkiv',
			'kindBZIP'        : 'BZIP arkiv',
			'kindXZ'          : 'XZ arkiv',
			'kindZIP'         : 'ZIP arkiv',
			'kindRAR'         : 'RAR arkiv',
			'kindJAR'         : 'Java JAR fil',
			'kindTTF'         : 'True Type skrift',
			'kindOTF'         : 'Open Type skrift',
			'kindRPM'         : 'RPM pakke',
			// texts
			'kindText'        : 'Tekstdokument',
			'kindTextPlain'   : 'Ren tekst',
			'kindPHP'         : 'PHP-kode',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML-dokument',
			'kindJS'          : 'Javascript-kode',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'Ckkode',
			'kindCHeader'     : 'C header-kode',
			'kindCPP'         : 'C++-kode',
			'kindCPPHeader'   : 'C++ header-kode',
			'kindShell'       : 'Unix-skal-script',
			'kindPython'      : 'Python-kode',
			'kindJava'        : 'Java-kode',
			'kindRuby'        : 'Ruby-kode',
			'kindPerl'        : 'Perlscript',
			'kindSQL'         : 'SQ- kode',
			'kindXML'         : 'XML-dokument',
			'kindAWK'         : 'AWK-kode',
			'kindCSV'         : 'Komma seperarede værdier',
			'kindDOCBOOK'     : 'Docbook XML-dokument',
			'kindMarkdown'    : 'Markdown-tekst', // added 20.7.2015
			// images
			'kindImage'       : 'Billede',
			'kindBMP'         : 'BMP-billede',
			'kindJPEG'        : 'JPEG-billede',
			'kindGIF'         : 'GIF-billede',
			'kindPNG'         : 'PNG-billede',
			'kindTIFF'        : 'TIFF-billede',
			'kindTGA'         : 'TGA-billede',
			'kindPSD'         : 'Adobe Photoshop-billede',
			'kindXBITMAP'     : 'X bitmap-billede',
			'kindPXM'         : 'Pixelmator-billede',
			// media
			'kindAudio'       : 'Lydmedie',
			'kindAudioMPEG'   : 'MPEG-lyd',
			'kindAudioMPEG4'  : 'MPEG-4-lyd',
			'kindAudioMIDI'   : 'MIDI-lyd',
			'kindAudioOGG'    : 'Ogg Vorbis-lyd',
			'kindAudioWAV'    : 'WAV-lyd',
			'AudioPlaylist'   : 'MP3-spilleliste',
			'kindVideo'       : 'Videomedie',
			'kindVideoDV'     : 'DV-video',
			'kindVideoMPEG'   : 'MPEG-video',
			'kindVideoMPEG4'  : 'MPEG-4-video',
			'kindVideoAVI'    : 'AVI-video',
			'kindVideoMOV'    : 'Quick Time-video',
			'kindVideoWM'     : 'Windows Media-video',
			'kindVideoFlash'  : 'Flash-video',
			'kindVideoMKV'    : 'Matroska-video',
			'kindVideoOGG'    : 'Ogg-video'
		}
	};
}));lib/js/i18n/elfinder.ro.js000064400000104147147361034410011264 0ustar00/**
 * Română translation
 * @author Cristian Tabacitu <hello@tabacitu.ro>
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ro = {
		translator : 'Cristian Tabacitu &lt;hello@tabacitu.ro&gt;',
		language   : 'Română',
		direction  : 'ltr',
		dateFormat : 'd M Y h:i', // will show like: 03 Mar 2022 11:15
		fancyDateFormat : '$1 h:i A', // will show like: Astăzi 11:15 AM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-111529
		messages   : {
			'getShareText' : 'Acțiune',
			'Editor ': 'Editor de coduri',

			/********************************** errors **********************************/
			'error'                : 'Eroare',
			'errUnknown'           : 'Eroare necunoscută.',
			'errUnknownCmd'        : 'Comandă necunoscuta.',
			'errJqui'              : 'Configurație jQuery UI necunoscută. Componentele selectable, draggable și droppable trebuie să fie incluse.',
			'errNode'              : 'elFinder necesită ca DOM Element să fie creat.',
			'errURL'               : 'Configurație elFinder nevalidă! URL option nu este setat.',
			'errAccess'            : 'Acces interzis.',
			'errConnect'           : 'Nu ne-am putut conecta la backend.',
			'errAbort'             : 'Conexiunea a fost oprită.',
			'errTimeout'           : 'Conexiunea a fost întreruptă.',
			'errNotFound'          : 'Nu am gasit backend-ul.',
			'errResponse'          : 'Răspuns backend greșit.',
			'errConf'              : 'Configurație backend greșită.',
			'errJSON'              : 'Modulul PHP JSON nu este instalat.',
			'errNoVolumes'         : 'Volumele citibile nu sunt disponibile.',
			'errCmdParams'         : 'Parametri greșiți pentru comanda "$1".',
			'errDataNotJSON'       : 'Datele nu sunt în format JSON.',
			'errDataEmpty'         : 'Datele sunt goale.',
			'errCmdReq'            : 'Cererea către backend necesită un nume de comandă.',
			'errOpen'              : 'Nu am putut deschide "$1".',
			'errNotFolder'         : 'Obiectul nu este un dosar.',
			'errNotFile'           : 'Obiectul nu este un fișier.',
			'errRead'              : 'Nu am putut citi "$1".',
			'errWrite'             : 'Nu am putu scrie în "$1".',
			'errPerm'              : 'Nu ai permisiunea necesară.',
			'errLocked'            : '"$1" este blocat și nu poate fi redenumit, mutat sau șters.',
			'errExists'            : 'Un fișier cu numele "$1" există deja.',
			'errInvName'           : 'Numele pentru fișier este greșit.',
			'errInvDirname'        : 'Nume de folder nevalid.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Nu am găsit dosarul.',
			'errFileNotFound'      : 'Nu am găsit fișierul.',
			'errTrgFolderNotFound' : 'Nu am găsit dosarul pentru destinație "$1".',
			'errPopup'             : 'Browserul tău a prevenit deschiderea ferestrei popup. Pentru a deschide fișierul permite deschidere ferestrei.',
			'errMkdir'             : 'Nu am putut crea dosarul "$1".',
			'errMkfile'            : 'Nu am putut crea fișierul "$1".',
			'errRename'            : 'Nu am putut redenumi "$1".',
			'errCopyFrom'          : 'Copierea fișierelor de pe volumul "$1" este interzisă.',
			'errCopyTo'            : 'Copierea fișierelor către volumul "$1" este interzisă.',
			'errMkOutLink'         : 'Nu am putut crea linkul în afara volumului rădăcină.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Eroare de upload.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nu am putut urca "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Nu am găsit fișiere pentru a le urca.',
			'errUploadTotalSize'   : 'Datele depâșest limita maximă de mărime.', // old name - errMaxSize
			'errUploadFileSize'    : 'Fișierul este prea mare.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Acest tip de fișier nu este permis.',
			'errUploadTransfer'    : 'Eroare la transferarea "$1".',
			'errUploadTemp'        : 'Nu am putut crea fișierul temporar pentru upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Obiectul "$1" există deja în acest loc și nu poate fi înlocuit de un obiect de alt tip.', // new
			'errReplace'           : 'Nu am putut înlocui "$1".',
			'errSave'              : 'Nu am putut salva "$1".',
			'errCopy'              : 'Nu am putut copia "$1".',
			'errMove'              : 'Nu am putut muta "$1".',
			'errCopyInItself'      : 'Nu am putut copia "$1" în el însuși.',
			'errRm'                : 'Nu am putut șterge "$1".',
			'errTrash'             : 'Imposibil în coșul de gunoi.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Nu am putut șterge fișierul sursă.',
			'errExtract'           : 'Nu am putut extrage fișierele din "$1".',
			'errArchive'           : 'Nu am putut crea arhiva.',
			'errArcType'           : 'Arhiva este de un tip nesuportat.',
			'errNoArchive'         : 'Fișierul nu este o arhiva sau este o arhivă de un tip necunoscut.',
			'errCmdNoSupport'      : 'Backend-ul nu suportă această comandă.',
			'errReplByChild'       : 'Dosarul “$1” nu poate fi înlocuit de un element pe care el îl conține.',
			'errArcSymlinks'       : 'Din motive de securitate, arhiva nu are voie să conțină symlinks sau fișiere cu nume interzise.', // edited 24.06.2012
			'errArcMaxSize'        : 'Fișierul arhivei depășește mărimea maximă permisă.',
			'errResize'            : 'Nu am putut redimensiona "$1".',
			'errResizeDegree'      : 'Grad de rotație nevalid.',  // added 7.3.2013
			'errResizeRotate'      : 'Imaginea nu a fost rotită.',  // added 7.3.2013
			'errResizeSize'        : 'Mărimea imaginii este nevalidă.',  // added 7.3.2013
			'errResizeNoChange'    : 'Mărimea imaginii nu a fost schimbată.',  // added 7.3.2013
			'errUsupportType'      : 'Tipul acesta de fișier nu este suportat.',
			'errNotUTF8Content'    : 'Fișierul "$1" nu folosește UTF-8 și nu poate fi editat.',  // added 9.11.2011
			'errNetMount'          : 'Nu am putut încărca "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocol nesuportat.',     // added 17.04.2012
			'errNetMountFailed'    : 'Încărcare eșuată.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Gazda este necesară.', // added 18.04.2012
			'errSessionExpires'    : 'Sesiunea a expirat datorită lipsei de activitate.',
			'errCreatingTempDir'   : 'Nu am putut crea fișierul temporar: "$1"',
			'errFtpDownloadFile'   : 'Nu am putut descarca fișierul de pe FTP: "$1"',
			'errFtpUploadFile'     : 'Nu am putut încărca fișierul pe FTP: "$1"',
			'errFtpMkdir'          : 'Nu am putut crea acest dosar pe FTP: "$1"',
			'errArchiveExec'       : 'Eroare la arhivarea fișierelor: "$1"',
			'errExtractExec'       : 'Eroare la dezarhivarea fișierelor: "$1"',
			'errNetUnMount'        : 'Nu am putut elimina volumul', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nu poate fi convertit la UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Pentru a urca dosare încearcă Google Chrome.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timpul expirat în timpul căutării „$1”. Rezultatul căutării este parțial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Este necesară reautorizarea.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Numărul maxim de articole selectabile este de 1 USD.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nu se poate restabili din coșul de gunoi. Nu se poate identifica destinația de restaurare.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editorul nu a fost găsit pentru acest tip de fișier.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'A apărut o eroare pe partea serverului.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nu se poate goli folderul „$1”.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Mai sunt erori de $1.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Puteți crea până la $1 foldere simultan.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Creeaza arhivă',
			'cmdback'      : 'Înapoi',
			'cmdcopy'      : 'Copiază',
			'cmdcut'       : 'Taie',
			'cmddownload'  : 'Descarcă',
			'cmdduplicate' : 'Creează duplicat',
			'cmdedit'      : 'Modifică fișier',
			'cmdextract'   : 'Extrage fișierele din arhivă',
			'cmdforward'   : 'Înainte',
			'cmdgetfile'   : 'Alege fișiere',
			'cmdhelp'      : 'Despre acest software',
			'cmdhome'      : 'Acasă',
			'cmdinfo'      : 'Informații',
			'cmdmkdir'     : 'Dosar nou',
			'cmdmkdirin'   : 'În folderul nou', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Fișier nou',
			'cmdopen'      : 'Deschide',
			'cmdpaste'     : 'Lipește',
			'cmdquicklook' : 'Previzualizează',
			'cmdreload'    : 'Reîncarcă',
			'cmdrename'    : 'Redenumește',
			'cmdrm'        : 'Șterge',
			'cmdtrash'     : 'În gunoi', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restabili', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Găsește fișiere',
			'cmdup'        : 'Mergi la dosarul părinte',
			'cmdupload'    : 'Urcă fișiere',
			'cmdview'      : 'Vezi',
			'cmdresize'    : 'Redimensionează & rotește',
			'cmdsort'      : 'Sortează',
			'cmdnetmount'  : 'Încarcă volum din rețea', // added 18.04.2012
			'cmdnetunmount': 'Elimină volum', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'La Locuri', // added 28.12.2014
			'cmdchmod'     : 'Schimbă mod', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Deschide un folder', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Resetați lățimea coloanei', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Ecran complet', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Mișcare', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Goliți folderul', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Anula', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'A reface', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferințe', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Selectează tot', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Selectați niciunul', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverseaza selectia', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Deschide într-o fereastră nouă', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ascunde (Preferință)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Închide',
			'btnSave'   : 'Salvează',
			'btnRm'     : 'Șterge',
			'btnApply'  : 'Aplică',
			'btnCancel' : 'Anulează',
			'btnNo'     : 'Nu',
			'btnYes'    : 'Da',
			'btnMount'  : 'Încarcă',  // added 18.04.2012
			'btnApprove': 'Mergi la $1 și aprobă', // from v2.1 added 26.04.2012
			'btnUnmount': 'Elimină volum', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convertește', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Aici',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volum',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Toate',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipuri MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nume fișier',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Salvează și închide', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Redenumiți',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Redenumiți(Toate)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Anterior ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Următorul ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Salvează ca', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Deschide dosar',
			'ntffile'     : 'Deschide fișier',
			'ntfreload'   : 'Actualizează conținutul dosarului',
			'ntfmkdir'    : 'Se creează dosarul',
			'ntfmkfile'   : 'Se creează fișierele',
			'ntfrm'       : 'Șterge fișiere',
			'ntfcopy'     : 'Copiază fișiere',
			'ntfmove'     : 'Mută fișiere',
			'ntfprepare'  : 'Pregătește copierea fișierelor',
			'ntfrename'   : 'Redenumește fișiere',
			'ntfupload'   : 'Se urcă fișierele',
			'ntfdownload' : 'Se descarcă fișierele',
			'ntfsave'     : 'Salvează fișiere',
			'ntfarchive'  : 'Se creează arhiva',
			'ntfextract'  : 'Se extrag fișierele din arhivă',
			'ntfsearch'   : 'Se caută fișierele',
			'ntfresize'   : 'Se redimnesionează imaginile',
			'ntfsmth'     : 'Se întamplă ceva',
			'ntfloadimg'  : 'Se încarcă imaginea',
			'ntfnetmount' : 'Se încarcă volumul din rețea', // added 18.04.2012
			'ntfnetunmount': 'Se elimină volumul din rețea', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Se preiau dimensiunile imaginii', // added 20.05.2013
			'ntfreaddir'  : 'Se citesc informațiile dosarului', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Se preia URL-ul din link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Se schimba modul de fișier', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Se verifică numele fișierului de încărcare', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Crearea unui fișier pentru descărcare', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Obținerea informațiilor despre cale', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Se procesează fișierul încărcat', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Aruncă la gunoi', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Se efectuează restaurarea din coșul de gunoi', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Se verifică folderul de destinație', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Se anulează operația anterioară', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Se reface anularea anterioară', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Verificarea conținutului', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Gunoi', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'necunoscută',
			'Today'       : 'Astăzi',
			'Yesterday'   : 'Ieri',
			'msJan'       : 'Ian',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Aprilie',
			'msMay'       : 'Mai',
			'msJun'       : 'Iun',
			'msJul'       : 'Iul',
			'msAug'       : 'aug',
			'msSep'       : 'sept',
			'msOct'       : 'oct',
			'msNov'       : 'nov',
			'msDec'       : 'Dec',
			'January'     : 'Ianuarie',
			'February'    : 'Februarie',
			'March'       : 'Martie',
			'April'       : 'Aprilie',
			'May'         : 'Mai',
			'June'        : 'Iunie',
			'July'        : 'Iulie',
			'August'      : 'August',
			'September'   : 'Septembrie',
			'October'     : 'Octombrie',
			'November'    : 'Noiembrie',
			'December'    : 'Decembrie',
			'Sunday'      : 'Duminică',
			'Monday'      : 'Luni',
			'Tuesday'     : 'Marți',
			'Wednesday'   : 'Miercuri',
			'Thursday'    : 'Joi',
			'Friday'      : 'Vineri',
			'Saturday'    : 'Sâmbătă',
			'Sun'         : 'Du',
			'Mon'         : 'Lu',
			'Tue'         : 'Ma',
			'Wed'         : 'Mi',
			'Thu'         : 'Jo',
			'Fri'         : 'Vi',
			'Sat'         : 'Sâ',

			/******************************** sort variants ********************************/
			'sortname'          : 'după nume',
			'sortkind'          : 'după tip',
			'sortsize'          : 'după mărime',
			'sortdate'          : 'după dată',
			'sortFoldersFirst'  : 'Dosarele primele',
			'sortperm'          : 'cu permisiunea', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'după mod',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'de catre proprietar',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'pe grupe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'De asemenea, Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'FisierNou.txt', // added 10.11.2015
			'untitled folder'   : 'DosarNou',   // added 10.11.2015
			'Archive'           : 'ArhivaNoua',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Fișier nou.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fișier',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Este necesară confirmare',
			'confirmRm'       : 'Ești sigur că vrei să ștergi fișierele?<br/>Acțiunea este ireversibilă!',
			'confirmRepl'     : 'Înlocuiește fișierul vechi cu cel nou?',
			'confirmRest'     : 'Înlocuiți elementul existent cu articolul din coșul de gunoi?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nu este în UTF-8<br/>Convertim la UTF-8?<br/>Conținutul devine UTF-8 după salvarea conversiei.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Codificarea caracterelor acestui fișier nu a putut fi detectată. Trebuie să se convertească temporar în UTF-8 pentru editare.<br/>Selectați codificarea caracterelor pentru acest fișier.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Au avut loc modificări.<br/>Dacă nu salvezi se vor pierde modificările.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Sigur doriți să mutați articolele în coșul de gunoi?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Sigur doriți să mutați articole în „$1”?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Aplică pentru toate',
			'name'            : 'Nume',
			'size'            : 'Mărime',
			'perms'           : 'Permisiuni',
			'modify'          : 'Modificat la',
			'kind'            : 'Tip',
			'read'            : 'citire',
			'write'           : 'scriere',
			'noaccess'        : 'acces interzis',
			'and'             : 'și',
			'unknown'         : 'necunoscut',
			'selectall'       : 'Alege toate fișierele',
			'selectfiles'     : 'Alege fișier(e)',
			'selectffile'     : 'Alege primul fișier',
			'selectlfile'     : 'Alege ultimul fișier',
			'viewlist'        : 'Vezi ca listă',
			'viewicons'       : 'Vezi ca icoane',
			'viewSmall'       : 'Pictograme mici', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Pictograme medii', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Pictograme mari', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Pictograme foarte mari', // from v2.1.39 added 22.5.2018
			'places'          : 'Locuri',
			'calc'            : 'Calculează',
			'path'            : 'Cale',
			'aliasfor'        : 'Alias pentru',
			'locked'          : 'Securizat',
			'dim'             : 'Dimensiuni',
			'files'           : 'Fișiere',
			'folders'         : 'Dosare',
			'items'           : 'Elemente',
			'yes'             : 'da',
			'no'              : 'nu',
			'link'            : 'Legătură',
			'searcresult'     : 'Rezultatele căutării',
			'selected'        : 'elemente alese',
			'about'           : 'Despre',
			'shortcuts'       : 'Scurtături',
			'help'            : 'Ajutor',
			'webfm'           : 'Manager web pentru fișiere',
			'ver'             : 'Versiune',
			'protocolver'     : 'versiune protocol',
			'homepage'        : 'Pagina proiectului',
			'docs'            : 'Documentație',
			'github'          : 'Fork nou pe Github',
			'twitter'         : 'Urmărește-ne pe twitter',
			'facebook'        : 'Alătura-te pe facebook',
			'team'            : 'Echipa',
			'chiefdev'        : 'dezvoltator șef',
			'developer'       : 'dezvoltator',
			'contributor'     : 'contribuitor',
			'maintainer'      : 'întreţinător',
			'translator'      : 'traducător',
			'icons'           : 'Icoane',
			'dontforget'      : 'și nu uita să-ți iei prosopul',
			'shortcutsof'     : 'Scurtăturile sunt dezactivate',
			'dropFiles'       : 'Dă drumul fișierelor aici',
			'or'              : 'sau',
			'selectForUpload' : 'Alege fișiere pentru a le urca',
			'moveFiles'       : 'Mută fișiere',
			'copyFiles'       : 'Copiază fișiere',
			'restoreFiles'    : 'Restaurați articolele', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Șterge din locuri',
			'aspectRatio'     : 'Raportul de aspect',
			'scale'           : 'Scală',
			'width'           : 'Lățime',
			'height'          : 'Înălțime',
			'resize'          : 'Redimensionează',
			'crop'            : 'Decupează',
			'rotate'          : 'Rotește',
			'rotate-cw'       : 'Rotește cu 90° în sensul ceasului',
			'rotate-ccw'      : 'Rotește cu 90° în sensul invers ceasului',
			'degree'          : '°',
			'netMountDialogTitle' : 'Încarcă volum din rețea', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Gazdă', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Utilizator', // added 18.04.2012
			'pass'                : 'Parolă', // added 18.04.2012
			'confirmUnmount'      : 'Vrei să elimini volumul $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drag&drop sau lipește din browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drag&drop sau lipește fișiere aici', // from v2.1 added 07.04.2014
			'encoding'        : 'Encodare', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Țintă: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Caută după tipul MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Proprietar', // from v2.1 added 20.6.2015
			'group'           : 'grup', // from v2.1 added 20.6.2015
			'other'           : 'Alte', // from v2.1 added 20.6.2015
			'execute'         : 'A executa', // from v2.1 added 20.6.2015
			'perm'            : 'Permisiune', // from v2.1 added 20.6.2015
			'mode'            : 'Mod', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Folderul este gol', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Folderul este gol\\A Drop pentru a adăuga elemente', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Dosarul este gol\\A Atingeți lung pentru a adăuga elemente', // from v2.1.6 added 30.12.2015
			'quality'         : 'Calitate', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto-sincronizare',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Mișcă-te în sus',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obțineți linkul URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Articole selectate ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID dosar', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permite accesul offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Pentru a se re-autentifica', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Acum se încarcă...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Deschideți mai multe fișiere', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Încercați să deschideți fișierele $1. Sigur doriți să deschideți în browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Rezultatele căutării sunt goale în ținta de căutare.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Este editarea unui fișier.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Ați selectat articole de 1 USD.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Aveți articole de 1 USD în clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Căutarea incrementală este numai din vizualizarea curentă.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reintroduceți', // from v2.1.15 added 3.8.2016
			'complete'        : '1 dolar complet', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Meniul contextual', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Întoarcerea paginii', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Rădăcini de volum', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetează', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Culoare de fundal', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Selector de culoare', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Grilă 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Activat', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Dezactivat', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Rezultatele căutării sunt goale în vizualizarea curentă.\\APăsați [Enter] pentru a extinde ținta de căutare.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Rezultatele căutării cu prima literă sunt goale în vizualizarea curentă.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etichetă text', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '1 $ min. rămase', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Redeschideți cu codificarea selectată', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Salvați cu codificarea selectată', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Selectați folderul', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Căutare prima literă', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presetări', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Sunt prea multe articole, așa că nu pot fi la gunoi.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Goliți folderul „$1”.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Nu există elemente într-un folder „$1”.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferinţă', // from v2.1.26 added 28.6.2017
			'language'        : 'Limba', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inițializați setările salvate în acest browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Setările barei de instrumente', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caractere rămase.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... 1 $ linii rămase.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sumă', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Dimensiunea aspră a fișierului', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Concentrați-vă pe elementul de dialog cu mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Selectați', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Acțiune când selectați fișierul', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Deschideți cu editorul folosit ultima dată', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverseaza selectia', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Sigur doriți să redenumiți $1 elementele selectate, cum ar fi $2?<br/>Acest lucru nu poate fi anulat!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Redenumirea lotului', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Număr', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Adăugați prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Adăugați sufix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Schimbați extensia', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Setări coloane (vizualizare listă)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Toate modificările se vor reflecta imediat în arhivă.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Orice modificare nu se va reflecta până când nu demontați acest volum.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Următoarele volume montate pe acest volum au fost, de asemenea, demontate. Ești sigur că o demontați?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informații de selecție', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmi pentru a afișa hash-ul fișierului', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Elemente de informații (panoul de informații de selecție)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Apăsați din nou pentru a ieși.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Bara de instrumente', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Spațiu de lucru', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Toate', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Dimensiunea pictogramei (vizualizarea pictogramelor)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Deschideți fereastra editorului maximizat', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Deoarece conversia prin API nu este disponibilă în prezent, vă rugăm să efectuați conversia pe site.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'După conversie, trebuie să fiți încărcat cu adresa URL a articolului sau cu un fișier descărcat pentru a salva fișierul convertit.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convertiți pe site-ul de $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrari', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Acest elFinder are următoarele servicii externe integrate. Vă rugăm să verificați termenii de utilizare, politica de confidențialitate etc. înainte de a o utiliza.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Afișează elementele ascunse', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ascunde elementele ascunse', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Afișează/Ascunde elementele ascunse', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Tipuri de fișiere de activat cu „Fișier nou”', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tipul fișierului text', // from v2.1.41 added 7.8.2018
			'add'             : 'Adăuga', // from v2.1.41 added 7.8.2018
			'theme'           : 'Temă', // from v2.1.43 added 19.10.2018
			'default'         : 'Mod implicit', // from v2.1.43 added 19.10.2018
			'description'     : 'Descriere', // from v2.1.43 added 19.10.2018
			'website'         : 'Site-ul web', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licență', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Acest articol nu poate fi salvat. Pentru a evita pierderea editărilor, trebuie să exportați pe computer.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Faceți dublu clic pe fișier pentru a-l selecta.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Utilizați modul ecran complet', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Necunoscut',
			'kindRoot'        : 'Rădăcină de volum', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Dosar',
			'kindSelects'     : 'Selecții', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias stricat',
			// applications
			'kindApp'         : 'Aplicație',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document Microsoft Office',
			'kindMsWord'      : 'Document Microsoft Word',
			'kindMsExcel'     : 'Document Microsoft Excel',
			'kindMsPP'        : 'Prezentare Microsoft Powerpoint',
			'kindOO'          : 'Document Open Office',
			'kindAppFlash'    : 'Aplicație Flash',
			'kindPDF'         : 'Document Portabil (PDF)',
			'kindTorrent'     : 'Fișier Bittorrent',
			'kind7z'          : 'Arhivă 7z',
			'kindTAR'         : 'Arhivă TAR',
			'kindGZIP'        : 'Arhivă GZIP',
			'kindBZIP'        : 'Arhivă BZIP',
			'kindXZ'          : 'Arhivă XZ',
			'kindZIP'         : 'Arhivă ZIP',
			'kindRAR'         : 'Arhivă RAR',
			'kindJAR'         : 'Fișier Java JAR',
			'kindTTF'         : 'Font True Type',
			'kindOTF'         : 'Font Open Type',
			'kindRPM'         : 'Pachet RPM',
			// texts
			'kindText'        : 'Document text',
			'kindTextPlain'   : 'Text simplu',
			'kindPHP'         : 'Sursă PHP',
			'kindCSS'         : 'Fișier de stil (CSS)',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'Sursă Javascript',
			'kindRTF'         : 'Text formatat (rich text)',
			'kindC'           : 'Sursă C',
			'kindCHeader'     : 'Sursă C header',
			'kindCPP'         : 'Sursă C++',
			'kindCPPHeader'   : 'Sursă C++ header',
			'kindShell'       : 'Script terminal Unix',
			'kindPython'      : 'Sursă Python',
			'kindJava'        : 'Sursă Java',
			'kindRuby'        : 'Sursă Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'Sursă SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'Sursă AWK',
			'kindCSV'         : 'Valori separate de virgulă (CSV)',
			'kindDOCBOOK'     : 'Document Docbook XML',
			'kindMarkdown'    : 'Text Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Imagine',
			'kindBMP'         : 'Imagine BMP',
			'kindJPEG'        : 'Imagine JPEG',
			'kindGIF'         : 'Imagine GIF',
			'kindPNG'         : 'Imagine PNG',
			'kindTIFF'        : 'Imagine TIFF',
			'kindTGA'         : 'Imagine TGA',
			'kindPSD'         : 'Imagine Adobe Photoshop',
			'kindXBITMAP'     : 'Imagine X bitmap',
			'kindPXM'         : 'Imagine Pixelmator',
			// media
			'kindAudio'       : 'Audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Playlist MP3',
			'kindVideo'       : 'Video',
			'kindVideoDV'     : 'Video DV',
			'kindVideoMPEG'   : 'Video MPEG',
			'kindVideoMPEG4'  : 'Video MPEG-4',
			'kindVideoAVI'    : 'Video AVI',
			'kindVideoMOV'    : 'Video Quick Time',
			'kindVideoWM'     : 'Video Windows Media',
			'kindVideoFlash'  : 'Video Flash',
			'kindVideoMKV'    : 'Video Matroska',
			'kindVideoOGG'    : 'Video Ogg'
		}
	};
}));

lib/js/i18n/elfinder.pt_BR.js000064400000104077147361034410011654 0ustar00/**
 * Português translation
 * @author Leandro Carvalho <contato@leandrowebdev.net>
 * @author Wesley Osorio<wesleyfosorio@hotmail.com>
 * @author Fernando H. Bandeira <fernando.bandeira94@gmail.com>
 * @author Gustavo Brito <britopereiragustavo@gmail.com>
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.pt_BR = {
		translator : 'Leandro Carvalho &lt;contato@leandrowebdev.net&gt;, Wesley Osorio&lt;wesleyfosorio@hotmail.com&gt;, Fernando H. Bandeira &lt;fernando.bandeira94@gmail.com&gt;, Gustavo Brito &lt;britopereiragustavo@gmail.com&gt;',
		language   : 'Português',
		direction  : 'ltr',
		dateFormat : 'd M Y H:i', // will show like: 02 março 2022 16:59
		fancyDateFormat : '$1 H:i', // will show like: Hoje 16:59
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220302-165954
		messages   : {
			'getShareText' : 'Participação',
			'Editor ': 'Editor de código',


			/********************************** errors **********************************/
			'error'                : 'Erro',
			'errUnknown'           : 'Erro desconhecido.',
			'errUnknownCmd'        : 'Comando desconhecido.',
			'errJqui'              : 'Configuração inválida do JQuery UI. Verifique se os componentes selectable, draggable e droppable estão incluídos.',
			'errNode'              : 'elFinder requer um elemento DOM para ser criado.',
			'errURL'               : 'Configuração inválida do elFinder! Você deve setar a opção da URL.',
			'errAccess'            : 'Acesso negado.',
			'errConnect'           : 'Incapaz de conectar ao backend.',
			'errAbort'             : 'Conexão abortada.',
			'errTimeout'           : 'Tempo de conexão excedido',
			'errNotFound'          : 'Backend não encontrado.',
			'errResponse'          : 'Resposta inválida do backend.',
			'errConf'              : 'Configuração inválida do backend.',
			'errJSON'              : 'Módulo PHP JSON não está instalado.',
			'errNoVolumes'         : 'Não existe nenhum volume legível disponivel.',
			'errCmdParams'         : 'Parâmetro inválido para o comando "$1".',
			'errDataNotJSON'       : 'Dados não estão no formato JSON.',
			'errDataEmpty'         : 'Dados vazios.',
			'errCmdReq'            : 'Requisição do Backend requer nome de comando.',
			'errOpen'              : 'Incapaz de abrir "$1".',
			'errNotFolder'         : 'Objeto não é uma pasta.',
			'errNotFile'           : 'Objeto não é um arquivo.',
			'errRead'              : 'Incapaz de ler "$1".',
			'errWrite'             : 'Incapaz de escrever em "$1".',
			'errPerm'              : 'Permissão negada.',
			'errLocked'            : '"$1" está bloqueado e não pode ser renomeado, movido ou removido.',
			'errExists'            : 'O nome do arquivo "$1" já existe neste local.',
			'errInvName'           : 'Nome do arquivo inválido.',
			'errInvDirname'        : 'Nome da pasta inválida.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Pasta não encontrada.',
			'errFileNotFound'      : 'Arquivo não encontrado.',
			'errTrgFolderNotFound' : 'Pasta de destino "$1" não encontrada.',
			'errPopup'             : 'O seu navegador está bloqueando popup\'s. Para abrir o arquivo, altere esta opção no seu Navegador.',
			'errMkdir'             : 'Incapaz de criar a pasta "$1".',
			'errMkfile'            : 'Incapaz de criar o arquivo "$1".',
			'errRename'            : 'Incapaz de renomear "$1".',
			'errCopyFrom'          : 'Copia dos arquivos do volume "$1" não permitida.',
			'errCopyTo'            : 'Copia dos arquivos para o volume "$1" não permitida.',
			'errMkOutLink'         : 'Incapaz de criar um link fora da unidade raiz.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Erro no upload.',  // old name - errUploadCommon
			'errUploadFile'        : 'Não foi possível fazer o upload "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Não foi encontrado nenhum arquivo para upload.',
			'errUploadTotalSize'   : 'Os dados excedem o tamanho máximo permitido.', // old name - errMaxSize
			'errUploadFileSize'    : 'Arquivo excede o tamanho máximo permitido.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Tipo de arquivo não permitido.',
			'errUploadTransfer'    : '"$1" erro na transferência.',
			'errUploadTemp'        : 'Incapaz de criar um arquivo temporário para upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objeto "$1" já existe neste local e não pode ser substituído por um objeto com outro tipo.', // new
			'errReplace'           : 'Incapaz de substituir "$1".',
			'errSave'              : 'Incapaz de salvar "$1".',
			'errCopy'              : 'Incapaz de copiar "$1".',
			'errMove'              : 'Incapaz de mover "$1".',
			'errCopyInItself'      : 'Incapaz de copiar "$1" nele mesmo.',
			'errRm'                : 'Incapaz de remover "$1".',
			'errTrash'             : 'Incapaz de deletar.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Incapaz de remover o(s) arquivo(s) fonte.',
			'errExtract'           : 'Incapaz de extrair os arquivos de "$1".',
			'errArchive'           : 'Incapaz de criar o arquivo.',
			'errArcType'           : 'Tipo de arquivo não suportado.',
			'errNoArchive'         : 'Arquivo inválido ou é de um tipo não suportado.',
			'errCmdNoSupport'      : 'Backend não suporta este comando.',
			'errReplByChild'       : 'A pasta “$1” não pode ser substituída por um item que contém.',
			'errArcSymlinks'       : 'Por razões de segurança, negada a permissão para descompactar arquivos que contenham links ou arquivos com nomes não permitidos.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arquivo excede o tamanho máximo permitido.',
			'errResize'            : 'Incapaz de redimensionar "$1".',
			'errResizeDegree'      : 'Grau de rotação inválido.',  // added 7.3.2013
			'errResizeRotate'      : 'Incapaz de rotacionar a imagem.',  // added 7.3.2013
			'errResizeSize'        : 'Tamanho inválido de imagem.',  // added 7.3.2013
			'errResizeNoChange'    : 'Tamanho da imagem não alterado.',  // added 7.3.2013
			'errUsupportType'      : 'Tipo de arquivo não suportado.',
			'errNotUTF8Content'    : 'Arquivo "$1" não está em UTF-8 e não pode ser editado.',  // added 9.11.2011
			'errNetMount'          : 'Incapaz de montar montagem "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocolo não suportado.',     // added 17.04.2012
			'errNetMountFailed'    : 'Montagem falhou.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Servidor requerido.', // added 18.04.2012
			'errSessionExpires'    : 'Sua sessão expirou por inatividade.',
			'errCreatingTempDir'   : 'Não foi possível criar um diretório temporário: "$1"',
			'errFtpDownloadFile'   : 'Não foi possível fazer o download do arquivo do FTP: "$1"',
			'errFtpUploadFile'     : 'Não foi possível fazer o upload do arquivo para o FTP: "$1"',
			'errFtpMkdir'          : 'Não foi possível criar um diretório remoto no FTP: "$1"',
			'errArchiveExec'       : 'Erro ao arquivar os arquivos: "$1"',
			'errExtractExec'       : 'Erro na extração dos arquivos: "$1"',
			'errNetUnMount'        : 'Incapaz de desmontar', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Não conversivel para UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Tente utilizar o Google Chrome, se você deseja enviar uma pasta.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Tempo limite atingido para a busca "$1". O resultado da pesquisa é parcial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-autorização é necessária.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'O número máximo de itens selecionáveis ​​é $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Não foi possível restaurar a partir do lixo. Não é possível identificar o destino da restauração.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor não encontrado para este tipo de arquivo.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Ocorreu um erro no lado do servidor.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Não foi possível esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Existem mais $1 erros.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Você pode criar até $1 pastas de uma vez.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Criar arquivo',
			'cmdback'      : 'Voltar',
			'cmdcopy'      : 'Copiar',
			'cmdcut'       : 'Cortar',
			'cmddownload'  : 'Baixar',
			'cmdduplicate' : 'Duplicar',
			'cmdedit'      : 'Editar arquivo',
			'cmdextract'   : 'Extrair arquivo de ficheiros',
			'cmdforward'   : 'Avançar',
			'cmdgetfile'   : 'Selecionar arquivos',
			'cmdhelp'      : 'Sobre este software',
			'cmdhome'      : 'Home',
			'cmdinfo'      : 'Propriedades',
			'cmdmkdir'     : 'Nova pasta',
			'cmdmkdirin'   : 'Em uma nova pasta', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Novo arquivo',
			'cmdopen'      : 'Abrir',
			'cmdpaste'     : 'Colar',
			'cmdquicklook' : 'Pré-vizualização',
			'cmdreload'    : 'Recarregar',
			'cmdrename'    : 'Renomear',
			'cmdrm'        : 'Deletar',
			'cmdtrash'     : 'Mover para a lixeira', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurar', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Achar arquivos',
			'cmdup'        : 'Ir para o diretório pai',
			'cmdupload'    : 'Fazer upload de arquivo',
			'cmdview'      : 'Vizualizar',
			'cmdresize'    : 'Redimencionar & Rotacionar',
			'cmdsort'      : 'Ordenar',
			'cmdnetmount'  : 'Montar unidade de rede', // added 18.04.2012
			'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Para locais', // added 28.12.2014
			'cmdchmod'     : 'Alterar permissão', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Abrir pasta', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Redefinir largura da coluna', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Tela cheia', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Mover', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Esvaziar a pasta', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Desfazer', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Refazer', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferências', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Selecionar tudo', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Selecionar nenhum', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverter seleção', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Abrir em nova janela', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ocultar (preferência)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Fechar',
			'btnSave'   : 'Salvar',
			'btnRm'     : 'Remover',
			'btnApply'  : 'Aplicar',
			'btnCancel' : 'Cancelar',
			'btnNo'     : 'Não',
			'btnYes'    : 'Sim',
			'btnMount'  : 'Montar',  // added 18.04.2012
			'btnApprove': 'Vá para $1 & aprove', // from v2.1 added 26.04.2012
			'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012
			'btnConv'   : 'Converter', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Aqui',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Todos',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipo MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nome do arquivo',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Salvar & Fechar', // from v2.1 added 12.6.2015
			'btnBackup' : 'Cópia de segurança', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renomear',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renomear (tudo)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Anterior ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Próximo ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Salvar como', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Abrir pasta',
			'ntffile'     : 'Abrir arquivo',
			'ntfreload'   : 'Recarregar conteudo da pasta',
			'ntfmkdir'    : 'Criar diretório',
			'ntfmkfile'   : 'Criar arquivos',
			'ntfrm'       : 'Deletar arquivos',
			'ntfcopy'     : 'Copiar arquivos',
			'ntfmove'     : 'Mover arquivos',
			'ntfprepare'  : 'Preparando para copiar arquivos',
			'ntfrename'   : 'Renomear arquivos',
			'ntfupload'   : 'Subindo os arquivos',
			'ntfdownload' : 'Baixando os arquivos',
			'ntfsave'     : 'Salvando os arquivos',
			'ntfarchive'  : 'Criando os arquivos',
			'ntfextract'  : 'Extraindo arquivos compactados',
			'ntfsearch'   : 'Procurando arquivos',
			'ntfresize'   : 'Redimensionando imagens',
			'ntfsmth'     : 'Fazendo alguma coisa',
			'ntfloadimg'  : 'Carregando Imagem',
			'ntfnetmount' : 'Montando unidade de rede', // added 18.04.2012
			'ntfnetunmount': 'Desmontando unidade de rede', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Adquirindo dimensão da imagem', // added 20.05.2013
			'ntfreaddir'  : 'Lendo informações da pasta', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Recebendo URL do link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Alterando permissões do arquivo', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verificando o nome do arquivo de upload', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Criando um arquivo para download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Obtendo informações do caminho', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processando o arquivo carregado', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Movendo para a lixeira', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurando da lixeira', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Verificando a pasta de destino', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Desfazendo a operação anterior', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Refazendo o desfazer anterior', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Verificando conteúdos', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Lixo', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Desconhecido',
			'Today'       : 'Hoje',
			'Yesterday'   : 'Ontem',
			'msJan'       : 'janeiro',
			'msFeb'       : 'Fev',
			'msMar'       : 'março',
			'msApr'       : 'Abr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'julho',
			'msAug'       : 'Ago',
			'msSep'       : 'Set',
			'msOct'       : 'Out',
			'msNov'       : 'novembro',
			'msDec'       : 'Dez',
			'January'     : 'Janeiro',
			'February'    : 'Fevereiro',
			'March'       : 'Março',
			'April'       : 'Abril',
			'May'         : 'Maio',
			'June'        : 'Junho',
			'July'        : 'Julho',
			'August'      : 'Agosto',
			'September'   : 'Setembro',
			'October'     : 'Outubro',
			'November'    : 'Novembro',
			'December'    : 'Dezembro',
			'Sunday'      : 'Domingo',
			'Monday'      : 'Segunda-feira',
			'Tuesday'     : 'Terça-feira',
			'Wednesday'   : 'Quarta-feira',
			'Thursday'    : 'Quinta-feira',
			'Friday'      : 'Sexta-feira',
			'Saturday'    : 'Sábado',
			'Sun'         : 'Dom',
			'Mon'         : 'Seg',
			'Tue'         : 'Ter',
			'Wed'         : 'Qua',
			'Thu'         : 'Qui',
			'Fri'         : 'Sex',
			'Sat'         : 'Sáb',

			/******************************** sort variants ********************************/
			'sortname'          : 'por nome',
			'sortkind'          : 'por tipo',
			'sortsize'          : 'por tam.',
			'sortdate'          : 'por data',
			'sortFoldersFirst'  : 'Pastas primeiro',
			'sortperm'          : 'Com permissão', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'Por modo',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'Por proprietário',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'Por grupo',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Vizualizar em árvore',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NovoArquivo.txt', // added 10.11.2015
			'untitled folder'   : 'NovaPasta',   // added 10.11.2015
			'Archive'           : 'NovoArquivo',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NovoArquivo.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Arquivo',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmação requerida',
			'confirmRm'       : 'Você tem certeza que deseja remover os arquivos?<br />Isto não pode ser desfeito!',
			'confirmRepl'     : 'Substituir arquivo velho com este novo?',
			'confirmRest'     : 'Substituir o item existente pelo item na lixeira?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Não está em UTF-8<br/>Converter para UTF-8?<br/>Conteúdo se torna UTF-8 após salvar as conversões.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Não foi possível detectar a codificação de caracteres deste arquivo. Ele precisa ser convertido temporariamente em UTF-8 para edição. Por favor, selecione a codificação de caracteres deste arquivo.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Isto foi modificado.<br/>Você vai perder seu trabalho caso não salve as mudanças.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Tem certeza de que deseja mover itens para a lixeira?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Tem certeza de que deseja mover itens para "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Aplicar a todos',
			'name'            : 'Nome',
			'size'            : 'Tamanho',
			'perms'           : 'Permissões',
			'modify'          : 'Modificado',
			'kind'            : 'Tipo',
			'read'            : 'Ler',
			'write'           : 'Escrever',
			'noaccess'        : 'Inacessível',
			'and'             : 'e',
			'unknown'         : 'Desconhecido',
			'selectall'       : 'Selecionar todos arquivos',
			'selectfiles'     : 'Selecionar arquivo(s)',
			'selectffile'     : 'Selecionar primeiro arquivo',
			'selectlfile'     : 'Slecionar último arquivo',
			'viewlist'        : 'Exibir como lista',
			'viewicons'       : 'Exibir como ícones',
			'viewSmall'       : 'Ícones pequenos', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Ícones médios', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Ícones grandes', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ícones gigantes', // from v2.1.39 added 22.5.2018
			'places'          : 'Lugares',
			'calc'            : 'Calcular',
			'path'            : 'Caminho',
			'aliasfor'        : 'Alias para',
			'locked'          : 'Bloqueado',
			'dim'             : 'Dimesões',
			'files'           : 'Arquivos',
			'folders'         : 'Pastas',
			'items'           : 'Itens',
			'yes'             : 'sim',
			'no'              : 'não',
			'link'            : 'Link',
			'searcresult'     : 'Resultados da pesquisa',
			'selected'        : 'itens selecionados',
			'about'           : 'Sobre',
			'shortcuts'       : 'Atalhos',
			'help'            : 'Ajuda',
			'webfm'           : 'Gerenciador de arquivos web',
			'ver'             : 'Versão',
			'protocolver'     : 'Versão do protocolo',
			'homepage'        : 'Home do projeto',
			'docs'            : 'Documentação',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Siga-nos no twitter',
			'facebook'        : 'Junte-se a nós no Facebook',
			'team'            : 'Time',
			'chiefdev'        : 'Desenvolvedor chefe',
			'developer'       : 'Desenvolvedor',
			'contributor'     : 'Contribuinte',
			'maintainer'      : 'Mantenedor',
			'translator'      : 'Tradutor',
			'icons'           : 'Ícones',
			'dontforget'      : 'e não se esqueça de levar a sua toalha',
			'shortcutsof'     : 'Atalhos desabilitados',
			'dropFiles'       : 'Solte os arquivos aqui',
			'or'              : 'ou',
			'selectForUpload' : 'Selecione arquivos para upload',
			'moveFiles'       : 'Mover arquivos',
			'copyFiles'       : 'Copiar arquivos',
			'restoreFiles'    : 'Restaurar itens', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remover de Lugares',
			'aspectRatio'     : 'Manter aspecto',
			'scale'           : 'Tamanho',
			'width'           : 'Largura',
			'height'          : 'Altura',
			'resize'          : 'Redimencionar',
			'crop'            : 'Cortar',
			'rotate'          : 'Rotacionar',
			'rotate-cw'       : 'Girar 90 graus CW',
			'rotate-ccw'      : 'Girar 90 graus CCW',
			'degree'          : '°',
			'netMountDialogTitle' : 'Montar Unidade de rede', // added 18.04.2012
			'protocol'            : 'Protocolo', // added 18.04.2012
			'host'                : 'Servidor', // added 18.04.2012
			'port'                : 'Porta', // added 18.04.2012
			'user'                : 'Usuário', // added 18.04.2012
			'pass'                : 'Senha', // added 18.04.2012
			'confirmUnmount'      : 'Deseja desmontar $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Soltar ou colar arquivos do navegador', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Solte ou cole arquivos aqui', // from v2.1 added 07.04.2014
			'encoding'        : 'Codificação', // from v2.1 added 19.12.2014
			'locale'          : 'Local',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Alvo: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Perquisar por input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Dono', // from v2.1 added 20.6.2015
			'group'           : 'Grupo', // from v2.1 added 20.6.2015
			'other'           : 'Outro', // from v2.1 added 20.6.2015
			'execute'         : 'Executar', // from v2.1 added 20.6.2015
			'perm'            : 'Permissão', // from v2.1 added 20.6.2015
			'mode'            : 'Modo', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Pasta vazia', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Pasta vazia\\A Arraste itens para os adicionar', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Pasta vazia\\A De um toque longo para adicionar itens', // from v2.1.6 added 30.12.2015
			'quality'         : 'Qualidade', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sincronização',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Mover para cima',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obter link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Itens selecionados ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID da pasta', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permitir acesso offline', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Se autenticar novamente', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Carregando...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Abrir múltiplos arquivos', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Você está tentando abrir os arquivos $1. Tem certeza de que deseja abrir no navegador?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Os resultados da pesquisa estão vazios no destino da pesquisa.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Arquivo sendo editado.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Voce selecionou $1 itens.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Você tem $1 itens na área de transferência.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'A pesquisa incremental é apenas da visualização atual.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Restabelecer', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 completo', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contextual', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Virar página', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Raízes de volume', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetar', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Cor de fundo', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Seletor de cores', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Grade 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Ativado', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Desativado', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Os resultados da pesquisa estão vazios na exibição atual.\\APressione [Enter] para expandir o alvo da pesquisa.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Os resultados da pesquisa da primeira letra estão vazios na exibição atual.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Texto do rótulo', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minutos restantes', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reabrir com a codificação selecionada', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Salvar com a codificação selecionada', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Selecione a pasta', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Buscar primeira letra', // from v2.1.23 added 24.3.2017
			'presets'         : 'Predefinições', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'São muitos itens, portanto não podem ser jogados no lixo.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Não há itens em uma pasta "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferência', // from v2.1.26 added 28.6.2017
			'language'        : 'Língua', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicialize as configurações salvas neste navegador', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Barra de ferramentas', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caracteres restantes.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 linhas restantes.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Somar', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Tamanho aproximado do arquivo', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focar no elemento do diálogo com o mouse por cima',  // from v2.1.30 added 2.11.2017
			'select'          : 'Selecione', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Ação ao selecionar arquivo', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Abrir com o editor usado pela última vez', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverter seleção', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Tem certeza de que deseja renomear $1 itens selecionados como $2?<br/>Isto não poderá ser desfeito!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Renomear Batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Número', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Adicionar prefixo', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Adicionar sufixo', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Alterar extensão', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Configurações de colunas (exibição em lista)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Todas as alterações serão refletidas imediatamente no arquivo.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Quaisquer alterações não serão refletidas até desmontar este volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'O(s) seguinte(s) volume(s) montado neste volume também desmontado. Você tem certeza que quer desmontá-lo(s)?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informações da seleção', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmos para mostrar o hash do arquivo', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Itens de informação (painel Informações de seleção)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Pressione novamente para sair.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barra de ferramentas', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Área de trabalho', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Diálogo', // from v2.1.38 added 4.4.2018
			'all'             : 'Tudo', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Tamanho do ícone (Visualização de ícones)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Abra a janela maximizada do editor', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Como a conversão por API não está disponível no momento, faça a conversão no site.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Após a conversão, você deve fazer o upload com o URL do item ou um arquivo baixado para salvar o arquivo convertido.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Converter no site $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrações', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Este elFinder possui os seguintes serviços externos integrados. Por favor, verifique os termos de uso, política de privacidade, etc. antes de usá-lo.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Mostrar itens ocultos', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ocultar itens ocultos', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Mostrar/Ocultar itens ocultos', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Tipos de arquivo para ativar com "Novo arquivo"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tipo do arquivo de texto', // from v2.1.41 added 7.8.2018
			'add'             : 'Adicionar', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Padrão', // from v2.1.43 added 19.10.2018
			'description'     : 'Descrição', // from v2.1.43 added 19.10.2018
			'website'         : 'Site da internet', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licença', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Este item não pode ser salvo. Para evitar perder as edições, você precisa exportar para o seu PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Clique duas vezes no arquivo para selecioná-lo.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Usar o modo de tela cheia', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Desconhecio',
			'kindRoot'        : 'Raiz do volume', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Pasta',
			'kindSelects'     : 'Seleções', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias inválido',
			// applications
			'kindApp'         : 'Aplicação',
			'kindPostscript'  : 'Documento Postscript',
			'kindMsOffice'    : 'Documento Microsoft Office',
			'kindMsWord'      : 'Documento Microsoft Word',
			'kindMsExcel'     : 'Documento Microsoft Excel',
			'kindMsPP'        : 'Apresentação Microsoft Powerpoint',
			'kindOO'          : 'Documento Open Office',
			'kindAppFlash'    : 'Aplicação Flash',
			'kindPDF'         : 'Formato de Documento Portátil (PDF)',
			'kindTorrent'     : 'Arquivo Bittorrent',
			'kind7z'          : 'Arquivo 7z',
			'kindTAR'         : 'Arquivo TAR',
			'kindGZIP'        : 'Arquivo GZIP',
			'kindBZIP'        : 'Arquivo BZIP',
			'kindXZ'          : 'Arquivo XZ',
			'kindZIP'         : 'Arquivo ZIP',
			'kindRAR'         : 'Arquivo RAR',
			'kindJAR'         : 'Arquivo JAR',
			'kindTTF'         : 'Tipo verdadeiro da fonte',
			'kindOTF'         : 'Abrir tipo de fonte',
			'kindRPM'         : 'Pacote RPM',
			// texts
			'kindText'        : 'Arquivo de texto',
			'kindTextPlain'   : 'Texto simples',
			'kindPHP'         : 'PHP',
			'kindCSS'         : 'Planilha em estilo cascata (CSS)',
			'kindHTML'        : 'Documento HTML',
			'kindJS'          : 'Javascript',
			'kindRTF'         : 'Formato Rich Text',
			'kindC'           : 'C',
			'kindCHeader'     : 'C cabeçalho',
			'kindCPP'         : 'C++',
			'kindCPPHeader'   : 'C++ cabeçalho',
			'kindShell'       : 'script de shell Unix',
			'kindPython'      : 'Python',
			'kindJava'        : 'Java',
			'kindRuby'        : 'Ruby',
			'kindPerl'        : 'Perl',
			'kindSQL'         : 'SQL',
			'kindXML'         : 'Documento XML',
			'kindAWK'         : 'AWK',
			'kindCSV'         : 'Valores separados por vírgula',
			'kindDOCBOOK'     : 'Documento Docbook XML',
			'kindMarkdown'    : 'Texto Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Imagem',
			'kindBMP'         : 'Imagem BMP',
			'kindJPEG'        : 'Imagem JPEG',
			'kindGIF'         : 'Imagem GIF',
			'kindPNG'         : 'Imagem PNG',
			'kindTIFF'        : 'Imagem TIFF',
			'kindTGA'         : 'Imagem TGA',
			'kindPSD'         : 'Imagem Adobe Photoshop',
			'kindXBITMAP'     : 'Imagem X bitmap',
			'kindPXM'         : 'Imagem Pixelmator',
			// media
			'kindAudio'       : 'Arquivo de audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Lista de reprodução MP3 ',
			'kindVideo'       : 'Arquivo de video',
			'kindVideoDV'     : 'DV filme',
			'kindVideoMPEG'   : 'Video MPEG',
			'kindVideoMPEG4'  : 'Video MPEG-4',
			'kindVideoAVI'    : 'Video AVI',
			'kindVideoMOV'    : 'Filme rápido',
			'kindVideoWM'     : 'Video Windows Media',
			'kindVideoFlash'  : 'Video Flash',
			'kindVideoMKV'    : 'MKV',
			'kindVideoOGG'    : 'Video Ogg'
		}
	};
}));

lib/js/i18n/elfinder.sv.js000064400000101021147361034410011260 0ustar00/**
 * Svenska translation
 * @author Gabriel Satzger <gabriel.satzger@sbg.se>
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sv = {
		translator : 'Gabriel Satzger &lt;gabriel.satzger@sbg.se&gt;',
		language   : 'Svenska',
		direction  : 'ltr',
		dateFormat : 'Y-m-d H:i', // will show like: 2022-03-03 15:33
		fancyDateFormat : '$1 H:i', // will show like: Idag 15:33
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-153348
		messages   : {
			'getShareText' : 'Dela med sig',
			'Editor ': 'Kodredigerare',

			/********************************** errors **********************************/
			'error'                : 'Fel',
			'errUnknown'           : 'Okänt error.',
			'errUnknownCmd'        : 'Okänt kommando.',
			'errJqui'              : 'Felaktig jQuery UI konfiguration. Komponenterna selectable, draggable och droppable måste vara inkluderade.',
			'errNode'              : 'elFinder kräver att DOM Elementen skapats.',
			'errURL'               : 'Felaktig elFinder konfiguration! URL parametern är inte satt.',
			'errAccess'            : 'Åtkomst nekad.',
			'errConnect'           : 'Kan inte ansluta till backend.',
			'errAbort'             : 'Anslutningen avbröts.',
			'errTimeout'           : 'Anslutningen löpte ut.',
			'errNotFound'          : 'Backend hittades inte.',
			'errResponse'          : 'Ogiltig backend svar.',
			'errConf'              : 'Ogiltig backend konfiguration.',
			'errJSON'              : 'PHP JSON modul är inte installerad.',
			'errNoVolumes'         : 'Läsbara volymer är inte tillgängliga.',
			'errCmdParams'         : 'Ogiltiga parametrar för kommandot "$1".',
			'errDataNotJSON'       : 'Datan är inte JSON.',
			'errDataEmpty'         : 'Datan är tom.',
			'errCmdReq'            : 'Backend begäran kräver kommandonamn.',
			'errOpen'              : 'Kan inte öppna "$1".',
			'errNotFolder'         : 'Objektet är inte en mapp.',
			'errNotFile'           : 'Objektet är inte en fil.',
			'errRead'              : 'Kan inte läsa "$1".',
			'errWrite'             : 'Kan inte skriva till "$1".',
			'errPerm'              : 'Tillstånd nekat.',
			'errLocked'            : '"$1" är låst och kan inte döpas om, flyttas eller tas bort.',
			'errExists'            : 'Fil med namn "$1" finns redan.',
			'errInvName'           : 'Ogiltigt filnamn.',
			'errInvDirname'        : 'Ogiltigt mappnamn.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mappen hittades inte.',
			'errFileNotFound'      : 'Filen hittades inte.',
			'errTrgFolderNotFound' : 'Målmappen "$1" hittades inte.',
			'errPopup'             : 'Webbläsaren hindrade popup-fönstret att öppnas. Ändra i webbläsarens inställningar för att kunna öppna filen.',
			'errMkdir'             : 'Kan inte skapa mappen "$1".',
			'errMkfile'            : 'Kan inte skapa filen "$1".',
			'errRename'            : 'Kan inte döpa om "$1".',
			'errCopyFrom'          : 'Kopiera filer från volym "$1" tillåts inte.',
			'errCopyTo'            : 'Kopiera filer till volym "$1" tillåts inte.',
			'errMkOutLink'         : 'Det går inte att skapa en länk utanför volymroten.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Error vid uppladdningen.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kan inte ladda upp "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Inga filer hittades för uppladdning.',
			'errUploadTotalSize'   : 'Data överskrider den högsta tillåtna storleken.', // old name - errMaxSize
			'errUploadFileSize'    : 'Filen överskrider den högsta tillåtna storleken.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Otillåten filtyp.',
			'errUploadTransfer'    : '"$1" överföringsfel.',
			'errUploadTemp'        : 'Det gick inte att göra en tillfällig fil för uppladdning.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" finns redan på den här platsen och kan inte ersättas av objekt med en annan typ.', // new
			'errReplace'           : 'Det går inte att ersätta "$1".',
			'errSave'              : 'Kan inte spara "$1".',
			'errCopy'              : 'Kan inte kopiera "$1".',
			'errMove'              : 'Kan inte flytta "$1".',
			'errCopyInItself'      : 'Kan inte flytta "$1" till sig själv.',
			'errRm'                : 'Kan inte ta bort "$1".',
			'errTrash'             : 'Kan inte hamna i papperskorgen.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Det går inte att ta bort källfil(er).',
			'errExtract'           : 'Kan inte packa upp filen från "$1".',
			'errArchive'           : 'Kan inte skapa arkiv.',
			'errArcType'           : 'Arkivtypen stöds inte.',
			'errNoArchive'         : 'Filen är inte av typen arkiv.',
			'errCmdNoSupport'      : 'Backend stöder inte detta kommando.',
			'errReplByChild'       : 'Mappen “$1” kan inte ersättas av ett objekt den innehåller.',
			'errArcSymlinks'       : 'Av säkerhetsskäl nekas arkivet att packas upp då det innehåller symboliska länkar eller filer med ej tillåtna namn.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arkivfiler överskrider största tillåtna storlek.',
			'errResize'            : 'Kan inte ändra storlek "$1".',
			'errResizeDegree'      : 'Ogiltig rotationsgrad.',  // added 7.3.2013
			'errResizeRotate'      : 'Det går inte att rotera bilden.',  // added 7.3.2013
			'errResizeSize'        : 'Ogiltig bildstorlek.',  // added 7.3.2013
			'errResizeNoChange'    : 'Bildstorleken har inte ändrats.',  // added 7.3.2013
			'errUsupportType'      : 'Filtypen stöds inte.',
			'errNotUTF8Content'    : 'Filen "$1" är inte i UTF-8 och kan inte redigeras.',  // added 9.11.2011
			'errNetMount'          : 'Kan inte koppla "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protokollet stöds inte.',     // added 17.04.2012
			'errNetMountFailed'    : 'Kopplingen misslyckades.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host krävs.', // added 18.04.2012
			'errSessionExpires'    : 'Din session har löpt ut på grund av inaktivitet.',
			'errCreatingTempDir'   : 'Det gick inte att skapa en tillfällig katalog: "$1"',
			'errFtpDownloadFile'   : 'Det gick inte att ladda ner filen från FTP: "$1"',
			'errFtpUploadFile'     : 'Det gick inte att ladda upp filen till FTP: "$1"',
			'errFtpMkdir'          : 'Det går inte att skapa fjärrkatalog på FTP: "$1"',
			'errArchiveExec'       : 'Fel vid arkivering av filer: "$1"',
			'errExtractExec'       : 'Fel vid extrahering av filer: "$1"',
			'errNetUnMount'        : 'Det går inte att avmontera.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Ej konvertibel till UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Prova den moderna webbläsaren, om du vill ladda upp mappen.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Tidsgränsen tog slut när du sökte efter "$1". Sökresultatet är delvis.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Återauktorisering krävs.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max antal valbara föremål är $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Det gick inte att återställa från papperskorgen. Kan inte identifiera återställningsdestinationen.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Det gick inte att hitta redigeraren för denna filtyp.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Fel uppstod på serversidan.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Det gick inte att tömma mappen "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Det finns $1 fler fel.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Du kan skapa upp till $1 mappar åt gången.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Skapa arkiv',
			'cmdback'      : 'Tillbaka',
			'cmdcopy'      : 'Kopiera',
			'cmdcut'       : 'Klipp ut',
			'cmddownload'  : 'Ladda ned',
			'cmdduplicate' : 'Duplicera',
			'cmdedit'      : 'Redigera fil',
			'cmdextract'   : 'Extrahera filer från arkiv',
			'cmdforward'   : 'Framåt',
			'cmdgetfile'   : 'Välj filer',
			'cmdhelp'      : 'Om denna programvara',
			'cmdhome'      : 'Hem',
			'cmdinfo'      : 'Visa info',
			'cmdmkdir'     : 'Ny mapp',
			'cmdmkdirin'   : 'Till ny mapp', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ny fil',
			'cmdopen'      : 'Öppna',
			'cmdpaste'     : 'Klistra in',
			'cmdquicklook' : 'Förhandsgranska',
			'cmdreload'    : 'Ladda om',
			'cmdrename'    : 'Döp om',
			'cmdrm'        : 'Radera',
			'cmdtrash'     : 'Till papperskorgen', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Återställ', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Hitta filer',
			'cmdup'        : 'Gå till överordnade katalog',
			'cmdupload'    : 'Ladda upp filer',
			'cmdview'      : 'Visa',
			'cmdresize'    : 'Ändra bildstorlek',
			'cmdsort'      : 'Sortera',
			'cmdnetmount'  : 'Montera nätverksvolym', // added 18.04.2012
			'cmdnetunmount': 'Avmontera', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Till platser', // added 28.12.2014
			'cmdchmod'     : 'Ändra läge', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Öppna en mapp', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Återställ kolumnbredd', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Fullskärm', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Flytta', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Töm mappen', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Ångra', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Göra om', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Inställningar', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Välj alla', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Välj ingen', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invertera urval', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Öppna i nytt fönster', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Dölj (preferens)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Stäng',
			'btnSave'   : 'Spara',
			'btnRm'     : 'Ta bort',
			'btnApply'  : 'Verkställ',
			'btnCancel' : 'Ångra',
			'btnNo'     : 'Nej',
			'btnYes'    : 'Ja',
			'btnMount'  : 'Montera',  // added 18.04.2012
			'btnApprove': 'Gå till $1 och godkänn', // from v2.1 added 26.04.2012
			'btnUnmount': 'Avmontera', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konvertera', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Här',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volym',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Allt',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME-typ', // from v2.1 added 22.5.2015
			'btnFileName':'Filnamn',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Spara & Stäng', // from v2.1 added 12.6.2015
			'btnBackup' : 'Säkerhetskopiering', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Döp om',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Byt namn (alla)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Föregående ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Nästa ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Spara som', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Öppnar mapp',
			'ntffile'     : 'Öppnar fil',
			'ntfreload'   : 'Laddar om mappinnehållet',
			'ntfmkdir'    : 'Skapar katalog',
			'ntfmkfile'   : 'Skapar fil',
			'ntfrm'       : 'Tar bort filer',
			'ntfcopy'     : 'Kopierar filer',
			'ntfmove'     : 'Flyttar filer',
			'ntfprepare'  : 'Förbereder att flytta filer',
			'ntfrename'   : 'Döper om filer',
			'ntfupload'   : 'Laddar upp filer',
			'ntfdownload' : 'Laddar ner filer',
			'ntfsave'     : 'Sparar filer',
			'ntfarchive'  : 'Skapar arkiv',
			'ntfextract'  : 'Extraherar filer från arkiv',
			'ntfsearch'   : 'Söker filer',
			'ntfresize'   : 'Ändra storlek på bilder',
			'ntfsmth'     : 'Gör någonting >_<',
			'ntfloadimg'  : 'Laddar bild',
			'ntfnetmount' : 'kopplar nätverksvolym', // added 18.04.2012
			'ntfnetunmount': 'Avmonterar nätverksvolym', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Skaffa bilddimension', // added 20.05.2013
			'ntfreaddir'  : ' Läser mappinformation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Hämtar URL till länk', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Ändra filläge', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifierar uppladdningsfilens namn', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Skapa en fil för nedladdning', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Hämta sökvägsinformation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Bearbetar den uppladdade filen', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Håller på att slänga i soporna', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Återställer från papperskorgen', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kontrollerar målmapp', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Ångra föregående åtgärd', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Gör om föregående ångrat', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrollerar innehållet', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Skräp', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'okänt',
			'Today'       : 'Idag',
			'Yesterday'   : 'Igår',
			'msJan'       : 'Jan',
			'msFeb'       : 'feb',
			'msMar'       : 'Mar',
			'msApr'       : 'apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'jul',
			'msAug'       : 'aug',
			'msSep'       : 'sep',
			'msOct'       : 'Okt',
			'msNov'       : 'nov',
			'msDec'       : 'dec',
			'January'     : 'Januari',
			'February'    : 'Februari',
			'March'       : 'Mars',
			'April'       : 'april',
			'May'         : 'Maj',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'Augusti',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'november',
			'December'    : 'december',
			'Sunday'      : 'Söndag',
			'Monday'      : 'Måndag',
			'Tuesday'     : 'Tisdag',
			'Wednesday'   : 'Onsdag',
			'Thursday'    : 'Torsdag',
			'Friday'      : 'Fredag',
			'Saturday'    : 'Lördag',
			'Sun'         : 'Sön',
			'Mon'         : 'Mån',
			'Tue'         : 'Tis',
			'Wed'         : 'Ons',
			'Thu'         : 'Tor',
			'Fri'         : 'Fre',
			'Sat'         : 'Lör',

			/******************************** sort variants ********************************/
			'sortname'          : 'efter namn',
			'sortkind'          : 'efter sort',
			'sortsize'          : 'efter storlek',
			'sortdate'          : 'efter datum',
			'sortFoldersFirst'  : 'Mappar först',
			'sortperm'          : 'med tillstånd', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'efter läge',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'efter läge',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'efter grupp',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Även Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Ny fil.txt', // added 10.11.2015
			'untitled folder'   : 'Ny mapp',   // added 10.11.2015
			'Archive'           : 'Nytt Arkiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Ny fil.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fil',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Bekräftelse krävs',
			'confirmRm'       : 'Är du säker på att du vill ta bort filer? <br/> Detta kan inte ångras!',
			'confirmRepl'     : 'Ersätt den gamla filen med en ny?',
			'confirmRest'     : 'Ersätta befintliga objekt med objektet i papperskorgen?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Inte i UTF-8<br/>Konvertera till UTF-8?<br/>Innehåll blir UTF-8 genom att spara efter konvertering.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Det gick inte att upptäcka teckenkodning för den här filen. Den måste tillfälligt konverteras till UTF-8 för redigering.<br/>Välj teckenkodning för denna fil.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Den har ändrats.<br/>Förlorar arbete om du inte sparar ändringar.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Är du säker på att du vill flytta föremål till papperskorgen?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Är du säker på att du vill flytta objekt till "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Använd för alla',
			'name'            : 'Namn',
			'size'            : 'Storlek',
			'perms'           : 'Rättigheter',
			'modify'          : 'Ändrad',
			'kind'            : 'Sort',
			'read'            : 'läs',
			'write'           : 'skriv',
			'noaccess'        : 'ingen åtkomst',
			'and'             : 'och',
			'unknown'         : 'okänd',
			'selectall'       : 'Välj alla filer',
			'selectfiles'     : 'Välj fil(er)',
			'selectffile'     : 'Välj första filen',
			'selectlfile'     : 'Välj sista filen',
			'viewlist'        : 'Listvy',
			'viewicons'       : 'Ikonvy',
			'viewSmall'       : 'Små ikoner', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medelstora ikoner', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Stora ikoner', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra stora ikoner', // from v2.1.39 added 22.5.2018
			'places'          : 'Platser',
			'calc'            : 'Beräkna',
			'path'            : 'Sökväg',
			'aliasfor'        : 'Alias för',
			'locked'          : 'Låst',
			'dim'             : 'Dimensioner',
			'files'           : 'Filer',
			'folders'         : 'Mappar',
			'items'           : 'Objekt',
			'yes'             : 'ja',
			'no'              : 'nej',
			'link'            : 'Länk',
			'searcresult'     : 'Sökresultat',
			'selected'        : 'valda objekt',
			'about'           : 'Om',
			'shortcuts'       : 'Genväg',
			'help'            : 'Hjälp',
			'webfm'           : 'Webbfilhanterare',
			'ver'             : 'Version',
			'protocolver'     : 'protokolversion',
			'homepage'        : 'Projekt hemsida',
			'docs'            : 'Dokumentation',
			'github'          : 'Forka oss på Github',
			'twitter'         : 'Följ oss på twitter',
			'facebook'        : 'Följ oss på facebook',
			'team'            : 'Team',
			'chiefdev'        : 'senior utvecklare',
			'developer'       : 'utvecklare',
			'contributor'     : 'bidragsgivare',
			'maintainer'      : 'underhållare',
			'translator'      : 'översättare',
			'icons'           : 'Ikoner',
			'dontforget'      : 'och glöm inte att ta med din handduk',
			'shortcutsof'     : 'Genvägar avaktiverade',
			'dropFiles'       : 'Släpp filerna här',
			'or'              : 'eller',
			'selectForUpload' : 'Välj filer att ladda upp',
			'moveFiles'       : 'Flytta filer',
			'copyFiles'       : 'Kopiera filer',
			'restoreFiles'    : 'Återställ objekt', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Ta bort från platser',
			'aspectRatio'     : 'Aspekt ratio',
			'scale'           : 'Skala',
			'width'           : 'Bredd',
			'height'          : 'Höjd',
			'resize'          : 'Ändra storlek',
			'crop'            : 'Beskär',
			'rotate'          : 'Rotera',
			'rotate-cw'       : 'Rotera 90 grader medurs',
			'rotate-ccw'      : 'Rotera 90 grader moturs',
			'degree'          : 'Grader',
			'netMountDialogTitle' : 'Koppla nätverksvolym', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Värd', // added 18.04.2012
			'port'                : 'Hamn', // added 18.04.2012
			'user'                : 'användare', // added 18.04.2012
			'pass'                : 'Lösenord', // added 18.04.2012
			'confirmUnmount'      : 'Avmonterar du $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Släpp eller klistra in filer från webbläsaren', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Släpp filer, klistra in webbadresser eller bilder (klippbord) här', // from v2.1 added 07.04.2014
			'encoding'        : 'Kodning', // from v2.1 added 19.12.2014
			'locale'          : 'Plats',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Mål: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Sök efter indata MIME-typ', // from v2.1 added 22.5.2015
			'owner'           : 'Ägare', // from v2.1 added 20.6.2015
			'group'           : 'Grupp', // from v2.1 added 20.6.2015
			'other'           : 'Övrig', // from v2.1 added 20.6.2015
			'execute'         : 'Kör', // from v2.1 added 20.6.2015
			'perm'            : 'Lov', // from v2.1 added 20.6.2015
			'mode'            : 'Läge', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mappen är tom', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mappen är tom\\A Släpp för att lägga till objekt', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mappen är tom\\En lång tryckning för att lägga till objekt', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalitet', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatisk synkronisering',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Flytta upp',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Få URL-länk', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Valda föremål ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Mapp-ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Tillåt offlineåtkomst', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'För att autentisera på nytt', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Laddar...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Öppna flera filer', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Du försöker öppna $1-filerna. Är du säker på att du vill öppna i webbläsaren?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Sökresultaten är tomma i sökmålet.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Det är att redigera en fil.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Du har valt $1 objekt.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Du har $1 objekt i urklippet.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementell sökning är endast från den aktuella vyn.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Återställ', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 färdig', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Innehållsmeny', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Sidvändning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volymrötter', // from v2.1.16 added 16.9.2016
			'reset'           : 'Återställa', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Bakgrundsfärg', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Färgväljare', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px rutnät', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Aktiverad', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Inaktiverad', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Sökresultaten är tomma i den aktuella vyn.\\ATryck på [Retur] för att utöka sökmålet.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Sökresultaten för första bokstaven är tomma i den aktuella vyn.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Textetikett', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 min kvar', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Öppna igen med vald kodning', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Spara med vald kodning', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Välj mapp', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Första bokstavssökning', // from v2.1.23 added 24.3.2017
			'presets'         : 'Förinställningar', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Det är för många föremål så att det inte kan hamna i papperskorgen.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Töm mappen "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Det finns inga objekt i mappen "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferens', // from v2.1.26 added 28.6.2017
			'language'        : 'Språk', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initiera inställningarna som sparats i den här webbläsaren', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Verktygsfältsinställningar', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 tecken kvar.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 rader kvar.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Belopp', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Grov filstorlek', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fokusera på elementet av dialog med muspekaren',  // from v2.1.30 added 2.11.2017
			'select'          : 'Välj', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Åtgärd när du väljer fil', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Öppna med den editor som användes förra gången', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invertera urval', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Är du säker på att du vill byta namn på $1 valda objekt som $2?<br/>Detta kan inte ångras!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Byt namn på batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nummer', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Lägg till prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Lägg till suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Ändra förlängning', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Kolumninställningar (listvy)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Alla ändringar kommer omedelbart att återspeglas i arkivet.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Eventuella ändringar kommer inte att återspeglas förrän avmontering av denna volym.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Följande volym(er) monterade på denna volym avmonterade också. Är du säker på att avmontera den?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Urvalsinformation', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmer för att visa filens hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Infoobjekt (panel med urvalsinformation)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Tryck igen för att avsluta.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Verktygsfält', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Arbetsutrymme', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Allt', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ikonstorlek (ikonvy)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Öppna fönstret för maximerad redigering', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Eftersom konvertering via API för närvarande inte är tillgänglig, vänligen konvertera på webbplatsen.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Efter konvertering måste du ladda upp med objektets URL eller en nedladdad fil för att spara den konverterade filen.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konvertera på webbplatsen för $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrationer', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Denna elFinder har följande externa tjänster integrerade. Vänligen kontrollera användarvillkoren, integritetspolicyn etc. innan du använder den.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Visa dolda föremål', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Göm dolda föremål', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Visa/dölj dolda objekt', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Filtyper att aktivera med "Ny fil"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Typ av textfil', // from v2.1.41 added 7.8.2018
			'add'             : 'Lägg till', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Standard', // from v2.1.43 added 19.10.2018
			'description'     : 'Beskrivning', // from v2.1.43 added 19.10.2018
			'website'         : 'Hemsida', // from v2.1.43 added 19.10.2018
			'author'          : 'Författare', // from v2.1.43 added 19.10.2018
			'email'           : 'E-post', // from v2.1.43 added 19.10.2018
			'license'         : 'Licens', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Det här objektet kan inte sparas. För att undvika att förlora redigeringarna måste du exportera till din PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dubbelklicka på filen för att välja den.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Använd helskärmsläge', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Okänd',
			'kindRoot'        : 'Volymrot', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mapp',
			'kindSelects'     : 'Urval', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Trasigt alias',
			// applications
			'kindApp'         : 'Applikation',
			'kindPostscript'  : 'Postscript',
			'kindMsOffice'    : 'Microsoft Office',
			'kindMsWord'      : 'Microsoft Word',
			'kindMsExcel'     : 'Microsoft Excel',
			'kindMsPP'        : 'Microsoft Powerpoint',
			'kindOO'          : 'Open Office',
			'kindAppFlash'    : 'Flash',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent',
			'kind7z'          : '7z',
			'kindTAR'         : 'TAR',
			'kindGZIP'        : 'GZIP',
			'kindBZIP'        : 'BZIP',
			'kindXZ'          : 'XZ',
			'kindZIP'         : 'ZIP',
			'kindRAR'         : 'RAR',
			'kindJAR'         : 'Java JAR',
			'kindTTF'         : 'True Type',
			'kindOTF'         : 'Open Type',
			'kindRPM'         : 'RPM',
			// texts
			'kindText'        : 'Text',
			'kindTextPlain'   : 'Vanlig text',
			'kindPHP'         : 'PHP',
			'kindCSS'         : 'Cascading stilark',
			'kindHTML'        : 'HTML',
			'kindJS'          : 'Javascript',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C',
			'kindCHeader'     : 'C header',
			'kindCPP'         : 'C++',
			'kindCPPHeader'   : 'C++ header',
			'kindShell'       : 'Unix-skalskript',
			'kindPython'      : 'Python',
			'kindJava'        : 'Java',
			'kindRuby'        : 'Ruby',
			'kindPerl'        : 'Perl',
			'kindSQL'         : 'SQL',
			'kindXML'         : 'XML',
			'kindAWK'         : 'AWK',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Bild',
			'kindBMP'         : 'BMP',
			'kindJPEG'        : 'JPEG',
			'kindGIF'         : 'GIF',
			'kindPNG'         : 'PNG',
			'kindTIFF'        : 'TIFF',
			'kindTGA'         : 'TGA',
			'kindPSD'         : 'Adobe Photoshop',
			'kindXBITMAP'     : 'X bitmap',
			'kindPXM'         : 'Pixelmator',
			// media
			'kindAudio'       : 'Ljudmedia',
			'kindAudioMPEG'   : 'MPEG-ljud',
			'kindAudioMPEG4'  : 'MPEG-4-ljud',
			'kindAudioMIDI'   : 'MIDI-ljud',
			'kindAudioOGG'    : 'Ogg Vorbis ljud',
			'kindAudioWAV'    : 'WAV-ljud',
			'AudioPlaylist'   : 'MP3-spellista',
			'kindVideo'       : 'Videomedia',
			'kindVideoDV'     : 'DV-film',
			'kindVideoMPEG'   : 'MPEG-film',
			'kindVideoMPEG4'  : 'MPEG-4 film',
			'kindVideoAVI'    : 'AVI-film',
			'kindVideoMOV'    : 'Quicktime film',
			'kindVideoWM'     : 'Windows media film',
			'kindVideoFlash'  : 'Flash film',
			'kindVideoMKV'    : 'Filmen Matroska',
			'kindVideoOGG'    : 'Ogg film'
		}
	};
}));

lib/js/i18n/help/cs.html.js000064400000001722147361034410011350 0ustar00<h2>Tipy na obsluhu</h2>
<p>Obsluha na uživatelském rozhraní je podobná standardnímu správci souborů operačního systému. Drag and Drop však není možné používat s mobilními prohlížeči. </p>
<ul>
	<li>Kliknutím pravým tlačítkem nebo dlouhým klepnutím zobrazíte kontextové menu.</li>
	<li>Přetáhněte do stromu složek nebo do aktuálního pracovního prostoru a přetáhněte / kopírujte položky.</li>
	<li>Výběr položky v pracovním prostoru můžete rozšířit pomocí kláves Shift nebo Alt (Možnost).</li>
	<li>Přemístěte soubory a složky do cílové složky nebo do pracovního prostoru.</li>
	<li>Dialog předávání může přijímat data schránky nebo seznamy adres URL a přitáhnout a odejít z jiných prohlížečů nebo správců souborů.</li>
	<li>Zatažením spusťte stisknutím klávesy Alt (Možnost) přetáhněte do vnějšího prohlížeče. Tato funkce se převezme pomocí prohlížeče Google Chrome.</li>
</ul>
lib/js/i18n/help/ko.html.js000064400000002034147361034410011351 0ustar00<h2>사용 팁</h2>
<p>UI 조작은 운영체제의 표준 파일 관리자를 사용하는 방법과 비슷합니다. 하지만 모바일 브라우저에서는 드래그앤드롭을 사용할 수 없습니다. </p>
<ul>
	<li>오른쪽 클릭하거나 길게 누르면 컨텍스트 메뉴가 나타납니다.</li>
	<li>이동/복사하려면 폴더 트리 또는 원하는 폴더로 드래그앤드롭하십시오.</li>
	<li>작업공간에서 항목을 선택하려면 Shift또는 Alt(Option) 키를 사용하여 선택 영역을 넓힐 수 있습니다.</li>
	<li>업로드 대상 폴더 또는 작업 영역으로 파일및 폴더를 드래그앤드롭하여 업로드할 수 있습니다.</li>
	<li>다른 브라우저 또는 파일관리자등에서 드래그앤드롭하거나, 클립보드를 통해 데이터또는 URL을 복사/붙여넣어 업로드할 수 있습니다.</li>
	<li>크롬브라우저의 경우, Alt(Option) 키를 누른 상태에서 브라우저 밖으로 드래그앤드롭하면 다운로드가 가능합니다.</li>
</ul>
lib/js/i18n/help/pl.html.js000064400000002007147361034410011353 0ustar00<h2>Wskazówki Obsługi</h2>
<p>Działanie w interfejsie użytkownika jest podobne do standardowego menedżera plików systemu operacyjnego. Jednak Przeciąganie i Upuszczanie nie jest możliwe w przeglądarkach mobilnych. </p>
<ul>
	<li>Kliknij prawym przyciskiem myszy lub dłużej, aby wyświetlić menu kontekstowe.</li>
	<li>Przeciągnij i upuść w drzewie folderów lub bieżącym obszarze roboczym, aby przenieść/kopiować elementy.</li>
	<li>Wybór elementu w obszarze roboczym można rozszerzyć wybór z klawiszem Shift lub Alt(Opcja).</li>
	<li>Przeciągnij i Upuść do folderu docelowego lub obszaru roboczego, aby przesłać pliki i foldery.</li>
	<li>W oknie dialogowym przesyłania można zaakceptować wklejanie/upuszczanie danych schowka lub listy adresów URL, i Przeciągnij i Upuść z innych przeglądarek lub menedżerów plików, itp.</li>
	<li>Rozpocznij Przeciąganie naciskając Alt (Opcja), aby przeciągnąć na zewnątrz przeglądarki. Stanie się operacją pobierania z Google Chrome. </li>
</ul>
lib/js/i18n/help/tr.html.js000064400000001652147361034410011372 0ustar00<h2>İşlem İpuçları</h2>
<p>Kullanıcı arayüzündeki işlem, işletim sisteminin standart dosya yöneticisine benzer. Ancak Sürükle ve Bırak özelliği mobil tarayıcılarda mümkün değildir. </p>
<ul>
	<li>Bağlam menüsünü göstermek için sağ tıklayın veya uzun dokunun.</li>
	<li>Öğeleri taşımak/kopyalamak için klasör ağacına veya geçerli çalışma alanına sürükleyip bırakın.</li>
	<li>Çalışma alanındaki öğe seçimi Shift veya Alt (Seçenek) tuşuyla genişletilebilir.</li>
	<li>Dosya ve klasör yüklemek için hedef klasöre veya çalışma alanına sürükleyip bırakın.</li>
	<li>Yükleme iletişim kutusu, pano verilerini veya URL listelerini yapıştırma/bırakma ve diğer tarayıcı veya dosya yöneticilerinden Sürükle ve Bırak vb.</li>
	<li>Dış tarayıcıya sürüklemek için Alt (Seçenek) tuşuna basarak sürükleyin. Google Chrome ile indirme işlemi olacak.</li>
</ul>
lib/js/i18n/help/ja.html.js000064400000002402147361034410011331 0ustar00<h2>操作のヒント</h2>
<p>UIの操作は、オペレーティングシステムの標準ファイルマネージャにほぼ準拠しています。ただし、モバイルブラウザではドラッグ&ドロップはできません。</p>
<ul>
	<li>右クリックまたはロングタップでコンテキストメニューを表示します。</li>
	<li>アイテムを移動/コピーするには、フォルダツリーまたはワークスペースにドラッグ&ドロップします。</li>
	<li>ワークスペース内のアイテムの選択は、ShiftキーまたはAltキー(Optionキー)で選択範囲を拡張できます。</li>
	<li>コピー先のフォルダまたはワークスペースにドラッグアンドドロップして、ファイルとフォルダをアップロードします。</li>
	<li>アップロードダイアログでは、クリップボードのデータやURLリストのペースト/ドロップ、他のブラウザやファイルマネージャからのドラッグ&ドロップなどを受け入れることができます。</li>
	<li>Altキー(Optionキー)を押しながらドラッグすると、ブラウザの外にドラッグできます。Google Chromeでダウンロード操作になります。</li>
</ul>
lib/js/i18n/help/ru.html.js000064400000003105147361034410011366 0ustar00<h2>Советы по работе</h2>
<p>Работа с пользовательским интерфейсом похожа на стандартный файловый менеджер операционной системы. Однако перетаскивание в мобильных браузерах невозможно.</p>
<ul>
	<li>Щелкните правой кнопкой мыши или используйте «длинный тап», чтобы отобразить контекстное меню.</li>
	<li>Перетащите в дерево папок или текущую рабочую область для перемещения / копирования элементов.</li>
	<li>Выбор элемента в рабочей области может быть расширен с помощью клавиши Shift или Alt (Option).</li>
	<li>Перетащите в папку назначения или рабочую область для загрузки файлов и папок.</li>
	<li>В диалоговом окне загрузки можно использовать вставку данных или списков URL-адресов из буфера обмена, а также перетаскивать из других браузеров или файловых менеджеров и т.д.</li>
	<li>Начните перетаскивание, нажав Alt (Option), чтобы перетащить за пределы браузера. Это запустить процесс скачивания в Google Chrome.</li>
</ul>
lib/js/i18n/help/sk.html.js000064400000001745147361034410011365 0ustar00<h2>Tipy na obsluhu</h2>
<p>Obsluha na používateľskom rozhraní je podobná štandardnému správcovi súborov operačného systému. Drag and Drop však nie je možné používať s mobilnými prehliadačmi. </p>
<ul>
	<li>Kliknutím pravým tlačidlom alebo dlhým klepnutím zobrazíte kontextové menu.</li>
	<li>Presuňte myšou do stromu priečinkov alebo do aktuálneho pracovného priestoru a presuňte / kopírujte položky.</li>
	<li>Výber položky v pracovnom priestore môžete rozšíriť pomocou klávesov Shift alebo Alt (Možnosť).</li>
	<li>Premiestnite súbory a priečinky do cieľovej zložky alebo do pracovného priestoru.</li>
	<li>Dialog odovzdávania môže prijímať dáta schránky alebo zoznamy adries URL a pritiahnuť a odísť z iných prehliadačov alebo správcov súborov.</li>
	<li>Potiahnutím spustite stlačením klávesu Alt (Možnosť) pretiahnite do vonkajšieho prehliadača. Táto funkcia sa prevezme pomocou prehliadača Google Chrome.</li>
</ul>
lib/js/i18n/help/es.html.js000064400000002042147361034410011346 0ustar00<h2>Consejos de operaci&oacute;n</h2>
<p>Operar en la Interfaz del Usuario es similar al administrador de archivos estandar del sistema operativo. Sin embargo, Arrastrar y soltar no es posible con los navegadores m&oacute;viles.</p>
<ul>
	<li>Click derecho o un tap largo para mostrar el men&uacute; de contexto.</li>
	<li>Arrastrar y soltar dentro del &aacute;rbol de carpetas o el espacio de trabajo actual para mover/copiar elementos.</li>
	<li>La selecci&oacute;n de elementos en el espacio de trabajo puede ampliarse con la tecla Shift o Alt (Opci&oacute;n).</li>
	<li>Arrastrar y soltar a la carpeta de destino o &aacute;rea de trabajo para cargar archivos y carpetas.</li>
	<li>El cuadro de di&aacute;logo de carga puede aceptar pegar/soltar datos del portapapeles o listas de URL y arrastrar y soltar desde otro navegador o administrador de archivos, etc.</li>
	<li>Iniciar a arrastrar presionando la tecla Alt (Opci&oacute;n) para arrastrar fuera del navegador. Se convertir&aacute; en una operaci&oacute;n de descarga con Google Chrome.</li>
</ul>
lib/js/i18n/help/de.html.js000064400000004370147361034410011335 0ustar00<h2>Anwendungstipps</h2>
<p>Die Verwendung dieser Anwendung ist ähnlich der einer lokalen Dateiverwaltung.<br><b>Hinweis</b>: auf mobilen Geräten ist das Ziehen und Ablegen (Drag and Drop) von Dateien nicht möglich.</p>
<ul>
	<li>Rechtsklick auf ein Element oder länger darauf zeigen öffnet das Kontextmenü</li>
	<li>Um Elemente in andere Ordner oder aktuellen Arbeitsbereich zu kopieren oder verschieben diese Ziehen und Ablegen</li>
	<li>Elementauswahl im Arbeitsbereich kann mit der Hochstell- oder ALT-TAste erweitert werden</li>
	<li>Um lokale Ordner und Dateien in den Zielorder oder -arbeitsbereich zu kopieren diese Ziehen und Ablegen</li>
	<li>Der Uploaddialog erlaubt Daten aus dem Clipboard (Zwischenspeicher), eine URL und Ziehen und Ablegen aus anderen Browsern und Dateiverwaltungsoberflächen</li>
	<li>Ziehen mit gedrückter ALT-Taste erlaubt einen einfachen Dateidownload (nur Google Chrome)</li>
	<li>Ordner und Dateien können ausgeblendet (versteckt) werden. Um sie wieder dauerhaft sichtbar zu machen, über die Menüleiste das "Icon Einstellungen" anklicken, dort unter Arbeitsplatz "Zeige versteckte Elemente" den Button "Neustart" anklicken</li>
	<li>Das Kontextmenü (rechte Maustaste) zeigt je nach ausgewählten Element diverse Aktionen an</li>
	<li>Je nach Art des Elements kann der Inhalt entweder mit dem integrierten Editor bearbeitet werden (z.B. .php, .txt, .ini usw.) oder wenn ein Bild dieses gedreht sowie die Größe geändert werden</li>
	<li>Zum verbinden externer Speicherorte (FTP, Dropbox, Box, GoogleDrive, OneDrive) sowie Onlineeditor <a href="https://www.zoho.com/officeplatform/integrator/" target="_blank">Zoho Office Editor</a> oder Konvertierungsdienst <a href="https://www.online-convert.com/" target="_blank">Online-Convert</a> müssen diese Anwendungen freigeschaltet als auch die entsprechenden API-Daten zum Abrufen je Dienst definiert sein.<br>Sollten diese Dienste nicht verfügbar sein, müssen diese entweder selbständig dazu programmiert werden, oder einen Entwickler des Vertrauens damit beauftragen (z.B. <a href="https://osworx.net" target="_blank">OSWorX</a>)</li>
	<li>In den Einstellungen "Menü Icon Einstellungen" kann der gesamte Arbeitsbereich, die Menüleiste sowie etliche weitere Aktionen definiert werden</li>
</ul>
lib/js/i18n/help/en.html.js000064400000001440147361034410011342 0ustar00<h2>Operation Tips</h2>
<p>Operation on the UI is similar to operating system&#39;s standard file manager. However, Drag and Drop is not possible with mobile browsers. </p>
<ul>
	<li>Right click or long tap to show the context menu.</li>
	<li>Drag and drop into the folder tree or the current workspace to move/copy items.</li>
	<li>Item selection in the workspace can be extended selection with Shift or Alt (Option) key.</li>
	<li>Drag and Drop to the destination folder or workspace to upload files and folders.</li>
	<li>The upload dialog can accept paste/drop clipboard data or URL lists and Drag and Drop from other browser or file managers etc.</li>
	<li>Drag start with pressing Alt(Option) key to drag out to outside browser. It will became download operation with Google Chrome.</li>
</ul>
lib/js/i18n/elfinder.fr.js000064400000106222147361034410011247 0ustar00/**
 * française translation
 * @author Régis Guyomarch <regisg@gmail.com>
 * @author Benoit Delachaux <benorde33@gmail.com>
 * @author Jonathan Grunder <jonathan.grunder@gmail.com>
 * @version 2022-03-01
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fr = {
		translator : 'Régis Guyomarch &lt;regisg@gmail.com&gt;, Benoit Delachaux &lt;benorde33@gmail.com&gt;, Jonathan Grunder &lt;jonathan.grunder@gmail.com&gt;',
		language   : 'française',
		direction  : 'ltr',
		dateFormat : 'd/M/Y H:i', // will show like: 01/Mar/2022 12:27
		fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 12:27
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220301-122726
		messages   : {
			'getShareText' : 'Partagez',
			'Editor ': 'Editeur de codes',
			/********************************** errors **********************************/
			'error'                : 'Erreur',
			'errUnknown'           : 'Erreur inconnue.',
			'errUnknownCmd'        : 'Commande inconnue.',
			'errJqui'              : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent être inclus.',
			'errNode'              : 'elFinder requiert que l\'élément DOM ait été créé.',
			'errURL'               : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas été définie.',
			'errAccess'            : 'Accès refusé.',
			'errConnect'           : 'Impossible de se connecter au backend.',
			'errAbort'             : 'Connexion interrompue.',
			'errTimeout'           : 'Délai de connexion dépassé.',
			'errNotFound'          : 'Backend non trouvé.',
			'errResponse'          : 'Mauvaise réponse du backend.',
			'errConf'              : 'Mauvaise configuration du backend.',
			'errJSON'              : 'Le module PHP JSON n\'est pas installé.',
			'errNoVolumes'         : 'Aucun volume lisible.',
			'errCmdParams'         : 'Mauvais paramétrage de la commande "$1".',
			'errDataNotJSON'       : 'Les données ne sont pas au format JSON.',
			'errDataEmpty'         : 'Données inexistantes.',
			'errCmdReq'            : 'La requête au Backend doit comporter le nom de la commande.',
			'errOpen'              : 'Impossible d\'ouvrir "$1".',
			'errNotFolder'         : 'Cet objet n\'est pas un dossier.',
			'errNotFile'           : 'Cet objet n\'est pas un fichier.',
			'errRead'              : 'Impossible de lire "$1".',
			'errWrite'             : 'Impossible d\'écrire dans "$1".',
			'errPerm'              : 'Permission refusée.',
			'errLocked'            : '"$1" est verrouillé et ne peut être déplacé ou supprimé.',
			'errExists'            : 'Un élément nommé "$1" existe déjà.',
			'errInvName'           : 'Nom de fichier incorrect.',
			'errInvDirname'        : 'Nom de dossier incorrect.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Dossier non trouvé.',
			'errFileNotFound'      : 'Fichier non trouvé.',
			'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvé.',
			'errPopup'             : 'Le navigateur web a empêché l\'ouverture d\'une fenêtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.',
			'errMkdir'             : 'Impossible de créer le dossier "$1".',
			'errMkfile'            : 'Impossible de créer le fichier "$1".',
			'errRename'            : 'Impossible de renommer "$1".',
			'errCopyFrom'          : 'Interdiction de copier des fichiers depuis le volume "$1".',
			'errCopyTo'            : 'Interdiction de copier des fichiers vers le volume "$1".',
			'errMkOutLink'         : 'Impossible de créer un lien en dehors du volume principal.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Erreur lors de l\'envoi du fichier.',  // old name - errUploadCommon
			'errUploadFile'        : 'Impossible d\'envoyer "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Aucun fichier à envoyer.',
			'errUploadTotalSize'   : 'Les données dépassent la taille maximale allouée.', // old name - errMaxSize
			'errUploadFileSize'    : 'Le fichier dépasse la taille maximale allouée.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Type de fichier non autorisé.',
			'errUploadTransfer'    : '"$1" erreur transfert.',
			'errUploadTemp'        : 'Impossible de créer un fichier temporaire pour transférer les fichiers.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'L\'objet "$1" existe déjà à cet endroit et ne peut être remplacé par un objet d\'un type différent.', // new
			'errReplace'           : 'Impossible de remplacer "$1".',
			'errSave'              : 'Impossible de sauvegarder "$1".',
			'errCopy'              : 'Impossible de copier "$1".',
			'errMove'              : 'Impossible de déplacer "$1".',
			'errCopyInItself'      : 'Impossible de copier "$1" sur lui-même.',
			'errRm'                : 'Impossible de supprimer "$1".',
			'errTrash'             : 'Impossible de déplacer dans la corbeille', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Impossible de supprimer le(s) fichier(s) source(s).',
			'errExtract'           : 'Imbossible d\'extraire les fichiers à partir de "$1".',
			'errArchive'           : 'Impossible de créer l\'archive.',
			'errArcType'           : 'Type d\'archive non supporté.',
			'errNoArchive'         : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supporté.',
			'errCmdNoSupport'      : 'Le Backend ne prend pas en charge cette commande.',
			'errReplByChild'       : 'Le dossier “$1” ne peut pas être remplacé par un élément qu\'il contient.',
			'errArcSymlinks'       : 'Par mesure de sécurité, il est défendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisés.', // edited 24.06.2012
			'errArcMaxSize'        : 'Les fichiers de l\'archive excèdent la taille maximale autorisée.',
			'errResize'            : 'Impossible de redimensionner "$1".',
			'errResizeDegree'      : 'Degré de rotation invalide.',  // added 7.3.2013
			'errResizeRotate'      : 'L\'image ne peut pas être tournée.',  // added 7.3.2013
			'errResizeSize'        : 'Dimension de l\'image non-valide.',  // added 7.3.2013
			'errResizeNoChange'    : 'L\'image n\'est pas redimensionnable.',  // added 7.3.2013
			'errUsupportType'      : 'Type de fichier non supporté.',
			'errNotUTF8Content'    : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut être édité.',  // added 9.11.2011
			'errNetMount'          : 'Impossible de monter "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocole non supporté.',     // added 17.04.2012
			'errNetMountFailed'    : 'Echec du montage.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Hôte requis.', // added 18.04.2012
			'errSessionExpires'    : 'Votre session a expiré en raison de son inactivité.',
			'errCreatingTempDir'   : 'Impossible de créer le répertoire temporaire : "$1"',
			'errFtpDownloadFile'   : 'Impossible de télécharger le file depuis l\'accès FTP : "$1"',
			'errFtpUploadFile'     : 'Impossible d\'envoyer le fichier vers l\'accès FTP : "$1"',
			'errFtpMkdir'          : 'Impossible de créer un répertoire distant sur l\'accès FTP :"$1"',
			'errArchiveExec'       : 'Erreur lors de l\'archivage des fichiers : "$1"',
			'errExtractExec'       : 'Erreur lors de l\'extraction des fichiers : "$1"',
			'errNetUnMount'        : 'Impossible de démonter.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Délai d’attente dépassé pour la recherche "$1". Le résultat de la recherche est partiel.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Réauthorisation requise.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Le nombre maximal d\'éléments pouvant être sélectionnés est $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu être identifiée.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Aucun éditeur n\'a été trouvé pour ce type de fichier.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Une erreur est survenue du côté serveur.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Il y a $1 d\'erreurs supplémentaires.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Vous pouvez créer jusqu\'à $1 dossiers à la fois.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Créer une archive',
			'cmdback'      : 'Précédent',
			'cmdcopy'      : 'Copier',
			'cmdcut'       : 'Couper',
			'cmddownload'  : 'Télécharger',
			'cmdduplicate' : 'Dupliquer',
			'cmdedit'      : 'Éditer le fichier',
			'cmdextract'   : 'Extraire les fichiers de l\'archive',
			'cmdforward'   : 'Suivant',
			'cmdgetfile'   : 'Sélectionner les fichiers',
			'cmdhelp'      : 'À propos de ce logiciel',
			'cmdhome'      : 'Accueil',
			'cmdinfo'      : 'Informations',
			'cmdmkdir'     : 'Nouveau dossier',
			'cmdmkdirin'   : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nouveau fichier',
			'cmdopen'      : 'Ouvrir',
			'cmdpaste'     : 'Coller',
			'cmdquicklook' : 'Prévisualiser',
			'cmdreload'    : 'Actualiser',
			'cmdrename'    : 'Renommer',
			'cmdrm'        : 'Supprimer',
			'cmdtrash'     : 'À la corbeille', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurer', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Trouver les fichiers',
			'cmdup'        : 'Remonter au dossier parent',
			'cmdupload'    : 'Envoyer les fichiers',
			'cmdview'      : 'Vue',
			'cmdresize'    : 'Redimensionner l\'image',
			'cmdsort'      : 'Trier',
			'cmdnetmount'  : 'Monter un volume réseau', // added 18.04.2012
			'cmdnetunmount': 'Démonter', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Vers Favoris', // added 28.12.2014
			'cmdchmod'     : 'Changer de mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ouvrir un dossier', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Réinitialiser largeur colone', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Plein écran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Déplacer', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vider le dossier', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Annuler', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Refaire', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Préférences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Tout sélectionner', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Tout désélectionner', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverser la sélection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ouvrir dans une nouvelle fenêtre', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Masquer (Préférence)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Fermer',
			'btnSave'   : 'Sauvegarder',
			'btnRm'     : 'Supprimer',
			'btnApply'  : 'Confirmer',
			'btnCancel' : 'Annuler',
			'btnNo'     : 'Non',
			'btnYes'    : 'Oui',
			'btnMount'  : 'Monter',  // added 18.04.2012
			'btnApprove': 'Aller à $1 & approuver', // from v2.1 added 26.04.2012
			'btnUnmount': 'Démonter', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ici',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Le volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tous',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Type MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nom du fichier',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Enregistrer & Ferme', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renommer',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Préc. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ouvrir le dossier',
			'ntffile'     : 'Ouvrir le fichier',
			'ntfreload'   : 'Actualiser le contenu du dossier',
			'ntfmkdir'    : 'Création du dossier',
			'ntfmkfile'   : 'Création des fichiers',
			'ntfrm'       : 'Supprimer les éléments',
			'ntfcopy'     : 'Copier les éléments',
			'ntfmove'     : 'Déplacer les éléments',
			'ntfprepare'  : 'Préparation de la copie des éléments',
			'ntfrename'   : 'Renommer les fichiers',
			'ntfupload'   : 'Envoi des fichiers',
			'ntfdownload' : 'Téléchargement des fichiers',
			'ntfsave'     : 'Sauvegarder les fichiers',
			'ntfarchive'  : 'Création de l\'archive',
			'ntfextract'  : 'Extraction des fichiers de l\'archive',
			'ntfsearch'   : 'Recherche des fichiers',
			'ntfresize'   : 'Redimensionner les images',
			'ntfsmth'     : 'Fait quelque chose',
			'ntfloadimg'  : 'Chargement de l\'image',
			'ntfnetmount' : 'Monte le volume réseau', // added 18.04.2012
			'ntfnetunmount': 'Démonte le volume réseau', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Calcule la dimension de l\'image', // added 20.05.2013
			'ntfreaddir'  : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Récupération de l’URL du lien', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changement de mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Vérification du nom du fichier envoyé', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Création d’un fichier pour le téléchargement', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Traitement du fichier envoyé', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Mettre à la corbeille', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Annuler l\'opération précédente', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Refaire l\'opération annulée', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Vérification du contenu', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Inconnue',
			'Today'       : 'Aujourd\'hui',
			'Yesterday'   : 'Hier',
			'msJan'       : 'Jan',
			'msFeb'       : 'Fév',
			'msMar'       : 'Mar',
			'msApr'       : 'Avr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aoû',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Déc',
			'January'     : 'Janvier',
			'February'    : 'Février',
			'March'       : 'Mars',
			'April'       : 'Avril',
			'May'         : 'Mai',
			'June'        : 'Juin',
			'July'        : 'Huillet',
			'August'      : 'Août',
			'September'   : 'Septembre',
			'October'     : 'Octobre',
			'November'    : 'Novembre',
			'December'    : 'Décembre',
			'Sunday'      : 'Dimanche',
			'Monday'      : 'Lundi',
			'Tuesday'     : 'Mardi',
			'Wednesday'   : 'Mercredi',
			'Thursday'    : 'Jeudi',
			'Friday'      : 'Vendredi',
			'Saturday'    : 'Samedi',
			'Sun'         : 'Dim',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mer',
			'Thu'         : 'Jeu',
			'Fri'         : 'Ven',
			'Sat'         : 'Sam',

			/******************************** sort variants ********************************/
			'sortname'          : 'par nom',
			'sortkind'          : 'par type',
			'sortsize'          : 'par taille',
			'sortdate'          : 'par date',
			'sortFoldersFirst'  : 'Dossiers en premier',
			'sortperm'          : 'par permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'par mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'par propriétaire',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'par groupe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Egalement arborescence',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015
			'untitled folder'   : 'NouveauDossier',   // added 10.11.2015
			'Archive'           : 'NouvelleArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NouveauFichier.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fichier',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation requise',
			'confirmRm'       : 'Êtes-vous certain de vouloir supprimer les éléments ?<br/>Cela ne peut être annulé !',
			'confirmRepl'     : 'Supprimer l\'ancien fichier par le nouveau ?',
			'confirmRest'     : 'Remplacer l\'élément existant par l\'élément de la corbeille ?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8<br/>Convertir en UTF-8 ?<br/>Les contenus deviendront UTF-8 en sauvegardant après la conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Impossible de détecter l\'encodage de ce fichier. Pour être modifié, il doit être temporairement convertit en UTF-8.<br/>Veuillez s\'il vous plaît sélectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ce fichier a été modifié.<br/>Les données seront perdues si les changements ne sont pas sauvegardés.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Êtes-vous certain de vouloir déplacer les éléments vers la corbeille?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Voulez-vous vraiment déplacer les éléments vers "$1" ?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Appliquer à tous',
			'name'            : 'Nom',
			'size'            : 'Taille',
			'perms'           : 'Autorisations',
			'modify'          : 'Modifié',
			'kind'            : 'Type',
			'read'            : 'Lecture',
			'write'           : 'Écriture',
			'noaccess'        : 'Pas d\'accès',
			'and'             : 'et',
			'unknown'         : 'inconnu',
			'selectall'       : 'Sélectionner tous les éléments',
			'selectfiles'     : 'Sélectionner le(s) élément(s)',
			'selectffile'     : 'Sélectionner le premier élément',
			'selectlfile'     : 'Sélectionner le dernier élément',
			'viewlist'        : 'Vue par liste',
			'viewicons'       : 'Vue par icônes',
			'viewSmall'       : 'Petites icônes', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Moyennes icônes', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Grandes icônes', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Très grandes icônes', // from v2.1.39 added 22.5.2018
			'places'          : 'Favoris',
			'calc'            : 'Calculer',
			'path'            : 'Chemin',
			'aliasfor'        : 'Raccourcis pour',
			'locked'          : 'Verrouiller',
			'dim'             : 'Dimensions',
			'files'           : 'Fichiers',
			'folders'         : 'Dossiers',
			'items'           : 'Éléments',
			'yes'             : 'oui',
			'no'              : 'non',
			'link'            : 'Lien',
			'searcresult'     : 'Résultats de la recherche',
			'selected'        : 'Éléments sélectionnés',
			'about'           : 'À propos',
			'shortcuts'       : 'Raccourcis',
			'help'            : 'Aide',
			'webfm'           : 'Gestionnaire de fichier Web',
			'ver'             : 'Version',
			'protocolver'     : 'Version du protocole',
			'homepage'        : 'Page du projet',
			'docs'            : 'La documentation',
			'github'          : 'Forkez-nous sur Github',
			'twitter'         : 'Suivez nous sur twitter',
			'facebook'        : 'Joignez-nous facebook',
			'team'            : 'Équipe',
			'chiefdev'        : 'Développeur en chef',
			'developer'       : 'Développeur',
			'contributor'     : 'Contributeur',
			'maintainer'      : 'Mainteneur',
			'translator'      : 'Traducteur',
			'icons'           : 'Icônes',
			'dontforget'      : 'et n\'oubliez pas votre serviette',
			'shortcutsof'     : 'Raccourcis désactivés',
			'dropFiles'       : 'Déposez les fichiers ici',
			'or'              : 'ou',
			'selectForUpload' : 'Sélectionner les fichiers à envoyer',
			'moveFiles'       : 'Déplacer les éléments',
			'copyFiles'       : 'Copier les éléments',
			'restoreFiles'    : 'Restaurer les éléments', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Retirer des favoris',
			'aspectRatio'     : 'Ratio d’affichage',
			'scale'           : 'Mise à l\'échelle',
			'width'           : 'Largeur',
			'height'          : 'Hauteur',
			'resize'          : 'Redimensionner',
			'crop'            : 'Recadrer',
			'rotate'          : 'Rotation',
			'rotate-cw'       : 'Rotation de 90 degrés horaire',
			'rotate-ccw'      : 'Rotation de 90 degrés antihoraire',
			'degree'          : '°',
			'netMountDialogTitle' : 'Monter un volume réseau', // added 18.04.2012
			'protocol'            : 'Protocole', // added 18.04.2012
			'host'                : 'Hôte', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Utilisateur', // added 18.04.2012
			'pass'                : 'Mot de passe', // added 18.04.2012
			'confirmUnmount'      : 'Démonter $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Glissez-déposez depuis le navigateur de fichier', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Glissez-déposez les fichiers ici', // from v2.1 added 07.04.2014
			'encoding'        : 'Encodage', // from v2.1 added 19.12.2014
			'locale'          : 'Encodage régional',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destination: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Recherche par type MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Propriétaire', // from v2.1 added 20.6.2015
			'group'           : 'Groupe', // from v2.1 added 20.6.2015
			'other'           : 'Autre', // from v2.1 added 20.6.2015
			'execute'         : 'Exécuter', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Le dossier est vide', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-déposez pour ajouter des éléments.', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des éléments.', // from v2.1.6 added 30.12.2015
			'quality'         : 'Qualité', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Synchronisation automatique',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Déplacer vers le haut',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obtenir le lien d’URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Éléments sélectionnés ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID du dossier', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permettre l\'accès hors-ligne', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Pour se réauthentifier', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'En cours de chargement...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. Êtes-vous sûr de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Aucun résultat trouvé avec les paramètres de recherche.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vous avez sélectionné $1 éléments.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Vous avez $1 éléments dans le presse-papier.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Recherche incrémentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Rétablir', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complété', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contextuel', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Tourner la page', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volumes principaux', // from v2.1.16 added 16.9.2016
			'reset'           : 'Réinitialiser', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Couleur de fond', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Sélecteur de couleur', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Grille 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Actif', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Inactif', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Aucun résultat trouvé.\\AAppuyez sur [Entrée] pour développer la cible de recherche.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Aucun résultat trouvé pour la recherche par première lettre.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Label texte', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins restantes', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Réouvrir avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Sauvegarder avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Choisir le dossier', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Recherche par première lettre', // from v2.1.23 added 24.3.2017
			'presets'         : 'Présélections', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Impossible de mettre autant d\'éléments à la corbeille.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Zone de texte', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Il n\'y a pas d\'élément dans le dossier "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Préférence', // from v2.1.26 added 28.6.2017
			'language'        : 'Configuration de langue', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialisation des configurations sauvegardées dans ce navigateur', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Paramètres de la barre d\'outils', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caractères restants.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 de lignes restantes.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Somme', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Concentrez-vous sur l\'élément de dialogue avec le survol de la souris',  // from v2.1.30 added 2.11.2017
			'select'          : 'Sélectionner', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action lors de la sélection d\'un fichier', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ouvrir avec le dernier éditeur utilisé', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverser la sélection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Êtes-vous sûr de vouloir renommer les éléments sélectionnés $1 en $2 ?<br/>L\'action est définitive !', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Renommer le Batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nombre', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ajouter un préfixe', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Paramètres des colonnes (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Les changements seront immédiatement appliqués à l\'archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Aucun changement ne sera appliqué tant que ce volume n\'a pas été démonté.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Le(s) volume(s) suivant(s) montés sur ce volume seront également démontés. Êtes-vous sûr de vouloir le démonter ?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informations sur la sélection', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Éléments d\'information (panneau d\'informations de sélection)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Appuyez à nouveau pour quitter.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barre d\'outils', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Espace de travail', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialogue', // from v2.1.38 added 4.4.2018
			'all'             : 'Tout', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Taille des icônes (vue Icônes)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ouvrir la fenêtre agrandie de l\'éditeur', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Étant donné que la conversion par API n\'est pas disponible actuellement, veuillez effectuer la conversion sur le site Web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Après la conversion, vous devez télécharger l\'URL de l\'élément ou un fichier téléchargé pour enregistrer le fichier converti.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convertissez sur le site de $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Intégrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Cet elFinder intègre les services externes suivants. Veuillez vérifier les conditions d\'utilisation, la politique de confidentialité, etc. avant de l\'utiliser.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Afficher les éléments cachés', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Masquer les éléments cachés', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Afficher/Masquer les éléments masqués', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Types de fichiers à activer avec "Nouveau fichier"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type de fichier texte', // from v2.1.41 added 7.8.2018
			'add'             : 'Ajouter', // from v2.1.41 added 7.8.2018
			'theme'           : 'Défaut', // from v2.1.43 added 19.10.2018
			'default'         : 'défaut', // from v2.1.43 added 19.10.2018
			'description'     : 'La description', // from v2.1.43 added 19.10.2018
			'website'         : 'Site Internet', // from v2.1.43 added 19.10.2018
			'author'          : 'Auteure', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'la licence', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Cet élément ne peut pas être enregistré. Pour éviter de perdre les modifications, vous devez exporter vers votre PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double-cliquez sur le fichier pour le sélectionner.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Utiliser le mode plein écran', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Inconnu',
			'kindRoot'        : 'Volume principal', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Dossier',
			'kindSelects'     : 'Sélections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Raccourci',
			'kindAliasBroken' : 'Raccourci cassé',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document Microsoft Office',
			'kindMsWord'      : 'Document Microsoft Word',
			'kindMsExcel'     : 'Document Microsoft Excel',
			'kindMsPP'        : 'Présentation Microsoft PowerPoint',
			'kindOO'          : 'Document OpenOffice',
			'kindAppFlash'    : 'Application Flash',
			'kindPDF'         : 'Format de document portable (PDF)',
			'kindTorrent'     : 'Fichier BitTorrent',
			'kind7z'          : 'Archive 7z',
			'kindTAR'         : 'Archive TAR',
			'kindGZIP'        : 'Archive GZIP',
			'kindBZIP'        : 'Archive BZIP',
			'kindXZ'          : 'Archive XZ',
			'kindZIP'         : 'Archive ZIP',
			'kindRAR'         : 'Archive RAR',
			'kindJAR'         : 'Fichier Java JAR',
			'kindTTF'         : 'Police True Type',
			'kindOTF'         : 'Police Open Type',
			'kindRPM'         : 'Package RPM',
			// texts
			'kindText'        : 'Document Text',
			'kindTextPlain'   : 'Texte non formaté',
			'kindPHP'         : 'Source PHP',
			'kindCSS'         : 'Feuille de style en cascade',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'Source JavaScript',
			'kindRTF'         : 'Format de texte enrichi (Rich Text Format)',
			'kindC'           : 'Source C',
			'kindCHeader'     : 'Source header C',
			'kindCPP'         : 'Source C++',
			'kindCPPHeader'   : 'Source header C++',
			'kindShell'       : 'Shell script Unix',
			'kindPython'      : 'Source Python',
			'kindJava'        : 'Source Java',
			'kindRuby'        : 'Source Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'Source SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'Source AWK',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Document Docbook XML',
			'kindMarkdown'    : 'Texte de démarque', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'Image BMP',
			'kindJPEG'        : 'Image JPEG',
			'kindGIF'         : 'Image GIF',
			'kindPNG'         : 'Image PNG',
			'kindTIFF'        : 'Image TIFF',
			'kindTGA'         : 'Image TGA',
			'kindPSD'         : 'Image Adobe Photoshop',
			'kindXBITMAP'     : 'Image X bitmap',
			'kindPXM'         : 'Image Pixelmator',
			// media
			'kindAudio'       : 'Son',
			'kindAudioMPEG'   : 'Son MPEG',
			'kindAudioMPEG4'  : 'Son MPEG-4',
			'kindAudioMIDI'   : 'Son MIDI',
			'kindAudioOGG'    : 'Son Ogg Vorbis',
			'kindAudioWAV'    : 'Son WAV',
			'AudioPlaylist'   : 'Liste de lecture audio',
			'kindVideo'       : 'Vidéo',
			'kindVideoDV'     : 'Vidéo DV',
			'kindVideoMPEG'   : 'Vidéo MPEG',
			'kindVideoMPEG4'  : 'Vidéo MPEG-4',
			'kindVideoAVI'    : 'Vidéo AVI',
			'kindVideoMOV'    : 'Vidéo Quick Time',
			'kindVideoWM'     : 'Vidéo Windows Media',
			'kindVideoFlash'  : 'Vidéo Flash',
			'kindVideoMKV'    : 'Vidéo Matroska',
			'kindVideoOGG'    : 'Vidéo Ogg'
		}
	};
}));lib/js/i18n/elfinder.fr_CA.js000064400000106225147361034410011615 0ustar00/**
 * française translation
 * @author Régis Guyomarch <regisg@gmail.com>
 * @author Benoit Delachaux <benorde33@gmail.com>
 * @author Jonathan Grunder <jonathan.grunder@gmail.com>
 * @version 2022-03-01
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fr_CA = {
		translator : 'Régis Guyomarch &lt;regisg@gmail.com&gt;, Benoit Delachaux &lt;benorde33@gmail.com&gt;, Jonathan Grunder &lt;jonathan.grunder@gmail.com&gt;',
		language   : 'française',
		direction  : 'ltr',
		dateFormat : 'd/M/Y H:i', // will show like: 01/Mar/2022 12:32
		fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 12:32
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220301-123221
		messages   : {
			'getShareText' : 'Partagez',
			'Editor ': 'Editeur de codes',
			/********************************** errors **********************************/
			'error'                : 'Erreur',
			'errUnknown'           : 'Erreur inconnue.',
			'errUnknownCmd'        : 'Commande inconnue.',
			'errJqui'              : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent être inclus.',
			'errNode'              : 'elFinder requiert que l\'élément DOM ait été créé.',
			'errURL'               : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas été définie.',
			'errAccess'            : 'Accès refusé.',
			'errConnect'           : 'Impossible de se connecter au backend.',
			'errAbort'             : 'Connexion interrompue.',
			'errTimeout'           : 'Délai de connexion dépassé.',
			'errNotFound'          : 'Backend non trouvé.',
			'errResponse'          : 'Mauvaise réponse du backend.',
			'errConf'              : 'Mauvaise configuration du backend.',
			'errJSON'              : 'Le module PHP JSON n\'est pas installé.',
			'errNoVolumes'         : 'Aucun volume lisible.',
			'errCmdParams'         : 'Mauvais paramétrage de la commande "$1".',
			'errDataNotJSON'       : 'Les données ne sont pas au format JSON.',
			'errDataEmpty'         : 'Données inexistantes.',
			'errCmdReq'            : 'La requête au Backend doit comporter le nom de la commande.',
			'errOpen'              : 'Impossible d\'ouvrir "$1".',
			'errNotFolder'         : 'Cet objet n\'est pas un dossier.',
			'errNotFile'           : 'Cet objet n\'est pas un fichier.',
			'errRead'              : 'Impossible de lire "$1".',
			'errWrite'             : 'Impossible d\'écrire dans "$1".',
			'errPerm'              : 'Permission refusée.',
			'errLocked'            : '"$1" est verrouillé et ne peut être déplacé ou supprimé.',
			'errExists'            : 'Un élément nommé "$1" existe déjà.',
			'errInvName'           : 'Nom de fichier incorrect.',
			'errInvDirname'        : 'Nom de dossier incorrect.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Dossier non trouvé.',
			'errFileNotFound'      : 'Fichier non trouvé.',
			'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvé.',
			'errPopup'             : 'Le navigateur web a empêché l\'ouverture d\'une fenêtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.',
			'errMkdir'             : 'Impossible de créer le dossier "$1".',
			'errMkfile'            : 'Impossible de créer le fichier "$1".',
			'errRename'            : 'Impossible de renommer "$1".',
			'errCopyFrom'          : 'Interdiction de copier des fichiers depuis le volume "$1".',
			'errCopyTo'            : 'Interdiction de copier des fichiers vers le volume "$1".',
			'errMkOutLink'         : 'Impossible de créer un lien en dehors du volume principal.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Erreur lors de l\'envoi du fichier.',  // old name - errUploadCommon
			'errUploadFile'        : 'Impossible d\'envoyer "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Aucun fichier à envoyer.',
			'errUploadTotalSize'   : 'Les données dépassent la taille maximale allouée.', // old name - errMaxSize
			'errUploadFileSize'    : 'Le fichier dépasse la taille maximale allouée.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Type de fichier non autorisé.',
			'errUploadTransfer'    : '"$1" erreur transfert.',
			'errUploadTemp'        : 'Impossible de créer un fichier temporaire pour transférer les fichiers.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'L\'objet "$1" existe déjà à cet endroit et ne peut être remplacé par un objet d\'un type différent.', // new
			'errReplace'           : 'Impossible de remplacer "$1".',
			'errSave'              : 'Impossible de sauvegarder "$1".',
			'errCopy'              : 'Impossible de copier "$1".',
			'errMove'              : 'Impossible de déplacer "$1".',
			'errCopyInItself'      : 'Impossible de copier "$1" sur lui-même.',
			'errRm'                : 'Impossible de supprimer "$1".',
			'errTrash'             : 'Impossible de déplacer dans la corbeille', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Impossible de supprimer le(s) fichier(s) source(s).',
			'errExtract'           : 'Imbossible d\'extraire les fichiers à partir de "$1".',
			'errArchive'           : 'Impossible de créer l\'archive.',
			'errArcType'           : 'Type d\'archive non supporté.',
			'errNoArchive'         : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supporté.',
			'errCmdNoSupport'      : 'Le Backend ne prend pas en charge cette commande.',
			'errReplByChild'       : 'Le dossier “$1” ne peut pas être remplacé par un élément qu\'il contient.',
			'errArcSymlinks'       : 'Par mesure de sécurité, il est défendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisés.', // edited 24.06.2012
			'errArcMaxSize'        : 'Les fichiers de l\'archive excèdent la taille maximale autorisée.',
			'errResize'            : 'Impossible de redimensionner "$1".',
			'errResizeDegree'      : 'Degré de rotation invalide.',  // added 7.3.2013
			'errResizeRotate'      : 'L\'image ne peut pas être tournée.',  // added 7.3.2013
			'errResizeSize'        : 'Dimension de l\'image non-valide.',  // added 7.3.2013
			'errResizeNoChange'    : 'L\'image n\'est pas redimensionnable.',  // added 7.3.2013
			'errUsupportType'      : 'Type de fichier non supporté.',
			'errNotUTF8Content'    : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut être édité.',  // added 9.11.2011
			'errNetMount'          : 'Impossible de monter "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocole non supporté.',     // added 17.04.2012
			'errNetMountFailed'    : 'Echec du montage.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Hôte requis.', // added 18.04.2012
			'errSessionExpires'    : 'Votre session a expiré en raison de son inactivité.',
			'errCreatingTempDir'   : 'Impossible de créer le répertoire temporaire : "$1"',
			'errFtpDownloadFile'   : 'Impossible de télécharger le file depuis l\'accès FTP : "$1"',
			'errFtpUploadFile'     : 'Impossible d\'envoyer le fichier vers l\'accès FTP : "$1"',
			'errFtpMkdir'          : 'Impossible de créer un répertoire distant sur l\'accès FTP :"$1"',
			'errArchiveExec'       : 'Erreur lors de l\'archivage des fichiers : "$1"',
			'errExtractExec'       : 'Erreur lors de l\'extraction des fichiers : "$1"',
			'errNetUnMount'        : 'Impossible de démonter.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Délai d’attente dépassé pour la recherche "$1". Le résultat de la recherche est partiel.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Réauthorisation requise.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Le nombre maximal d\'éléments pouvant être sélectionnés est $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu être identifiée.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Aucun éditeur n\'a été trouvé pour ce type de fichier.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Une erreur est survenue du côté serveur.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Il y a $1 d\'erreurs supplémentaires.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Vous pouvez créer jusqu\'à $1 dossiers à la fois.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Créer une archive',
			'cmdback'      : 'Précédent',
			'cmdcopy'      : 'Copier',
			'cmdcut'       : 'Couper',
			'cmddownload'  : 'Télécharger',
			'cmdduplicate' : 'Dupliquer',
			'cmdedit'      : 'Éditer le fichier',
			'cmdextract'   : 'Extraire les fichiers de l\'archive',
			'cmdforward'   : 'Suivant',
			'cmdgetfile'   : 'Sélectionner les fichiers',
			'cmdhelp'      : 'À propos de ce logiciel',
			'cmdhome'      : 'Accueil',
			'cmdinfo'      : 'Informations',
			'cmdmkdir'     : 'Nouveau dossier',
			'cmdmkdirin'   : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nouveau fichier',
			'cmdopen'      : 'Ouvrir',
			'cmdpaste'     : 'Coller',
			'cmdquicklook' : 'Prévisualiser',
			'cmdreload'    : 'Actualiser',
			'cmdrename'    : 'Renommer',
			'cmdrm'        : 'Supprimer',
			'cmdtrash'     : 'À la corbeille', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurer', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Trouver les fichiers',
			'cmdup'        : 'Remonter au dossier parent',
			'cmdupload'    : 'Envoyer les fichiers',
			'cmdview'      : 'Vue',
			'cmdresize'    : 'Redimensionner l\'image',
			'cmdsort'      : 'Trier',
			'cmdnetmount'  : 'Monter un volume réseau', // added 18.04.2012
			'cmdnetunmount': 'Démonter', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Vers Favoris', // added 28.12.2014
			'cmdchmod'     : 'Changer de mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Ouvrir un dossier', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Réinitialiser largeur colone', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Plein écran', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Déplacer', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vider le dossier', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Annuler', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Refaire', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Préférences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Tout sélectionner', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Tout désélectionner', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverser la sélection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Ouvrir dans une nouvelle fenêtre', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Masquer (Préférence)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Fermer',
			'btnSave'   : 'Sauvegarder',
			'btnRm'     : 'Supprimer',
			'btnApply'  : 'Confirmer',
			'btnCancel' : 'Annuler',
			'btnNo'     : 'Non',
			'btnYes'    : 'Oui',
			'btnMount'  : 'Monter',  // added 18.04.2012
			'btnApprove': 'Aller à $1 & approuver', // from v2.1 added 26.04.2012
			'btnUnmount': 'Démonter', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Ici',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Le volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Tous',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Type MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nom du fichier',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Enregistrer & Ferme', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renommer',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Préc. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Ouvrir le dossier',
			'ntffile'     : 'Ouvrir le fichier',
			'ntfreload'   : 'Actualiser le contenu du dossier',
			'ntfmkdir'    : 'Création du dossier',
			'ntfmkfile'   : 'Création des fichiers',
			'ntfrm'       : 'Supprimer les éléments',
			'ntfcopy'     : 'Copier les éléments',
			'ntfmove'     : 'Déplacer les éléments',
			'ntfprepare'  : 'Préparation de la copie des éléments',
			'ntfrename'   : 'Renommer les fichiers',
			'ntfupload'   : 'Envoi des fichiers',
			'ntfdownload' : 'Téléchargement des fichiers',
			'ntfsave'     : 'Sauvegarder les fichiers',
			'ntfarchive'  : 'Création de l\'archive',
			'ntfextract'  : 'Extraction des fichiers de l\'archive',
			'ntfsearch'   : 'Recherche des fichiers',
			'ntfresize'   : 'Redimensionner les images',
			'ntfsmth'     : 'Fait quelque chose',
			'ntfloadimg'  : 'Chargement de l\'image',
			'ntfnetmount' : 'Monte le volume réseau', // added 18.04.2012
			'ntfnetunmount': 'Démonte le volume réseau', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Calcule la dimension de l\'image', // added 20.05.2013
			'ntfreaddir'  : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Récupération de l’URL du lien', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changement de mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Vérification du nom du fichier envoyé', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Création d’un fichier pour le téléchargement', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Traitement du fichier envoyé', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Mettre à la corbeille', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Annuler l\'opération précédente', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Refaire l\'opération annulée', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Vérification du contenu', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Inconnue',
			'Today'       : 'Aujourd\'hui',
			'Yesterday'   : 'Hier',
			'msJan'       : 'Jan',
			'msFeb'       : 'Fév',
			'msMar'       : 'Mar',
			'msApr'       : 'Avr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aoû',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Déc',
			'January'     : 'Janvier',
			'February'    : 'Février',
			'March'       : 'Mars',
			'April'       : 'Avril',
			'May'         : 'Mai',
			'June'        : 'Juin',
			'July'        : 'Huillet',
			'August'      : 'Août',
			'September'   : 'Septembre',
			'October'     : 'Octobre',
			'November'    : 'Novembre',
			'December'    : 'Décembre',
			'Sunday'      : 'Dimanche',
			'Monday'      : 'Lundi',
			'Tuesday'     : 'Mardi',
			'Wednesday'   : 'Mercredi',
			'Thursday'    : 'Jeudi',
			'Friday'      : 'Vendredi',
			'Saturday'    : 'Samedi',
			'Sun'         : 'Dim',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mer',
			'Thu'         : 'Jeu',
			'Fri'         : 'Ven',
			'Sat'         : 'Sam',

			/******************************** sort variants ********************************/
			'sortname'          : 'par nom',
			'sortkind'          : 'par type',
			'sortsize'          : 'par taille',
			'sortdate'          : 'par date',
			'sortFoldersFirst'  : 'Dossiers en premier',
			'sortperm'          : 'par permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'par mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'par propriétaire',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'par groupe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Egalement arborescence',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015
			'untitled folder'   : 'NouveauDossier',   // added 10.11.2015
			'Archive'           : 'NouvelleArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NouveauFichier.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fichier',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation requise',
			'confirmRm'       : 'Êtes-vous certain de vouloir supprimer les éléments ?<br/>Cela ne peut être annulé !',
			'confirmRepl'     : 'Supprimer l\'ancien fichier par le nouveau ?',
			'confirmRest'     : 'Remplacer l\'élément existant par l\'élément de la corbeille ?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8<br/>Convertir en UTF-8 ?<br/>Les contenus deviendront UTF-8 en sauvegardant après la conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Impossible de détecter l\'encodage de ce fichier. Pour être modifié, il doit être temporairement convertit en UTF-8.<br/>Veuillez s\'il vous plaît sélectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ce fichier a été modifié.<br/>Les données seront perdues si les changements ne sont pas sauvegardés.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Êtes-vous certain de vouloir déplacer les éléments vers la corbeille?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Voulez-vous vraiment déplacer les éléments vers "$1" ?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Appliquer à tous',
			'name'            : 'Nom',
			'size'            : 'Taille',
			'perms'           : 'Autorisations',
			'modify'          : 'Modifié',
			'kind'            : 'Type',
			'read'            : 'Lecture',
			'write'           : 'Écriture',
			'noaccess'        : 'Pas d\'accès',
			'and'             : 'et',
			'unknown'         : 'inconnu',
			'selectall'       : 'Sélectionner tous les éléments',
			'selectfiles'     : 'Sélectionner le(s) élément(s)',
			'selectffile'     : 'Sélectionner le premier élément',
			'selectlfile'     : 'Sélectionner le dernier élément',
			'viewlist'        : 'Vue par liste',
			'viewicons'       : 'Vue par icônes',
			'viewSmall'       : 'Petites icônes', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Moyennes icônes', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Grandes icônes', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Très grandes icônes', // from v2.1.39 added 22.5.2018
			'places'          : 'Favoris',
			'calc'            : 'Calculer',
			'path'            : 'Chemin',
			'aliasfor'        : 'Raccourcis pour',
			'locked'          : 'Verrouiller',
			'dim'             : 'Dimensions',
			'files'           : 'Fichiers',
			'folders'         : 'Dossiers',
			'items'           : 'Éléments',
			'yes'             : 'oui',
			'no'              : 'non',
			'link'            : 'Lien',
			'searcresult'     : 'Résultats de la recherche',
			'selected'        : 'Éléments sélectionnés',
			'about'           : 'À propos',
			'shortcuts'       : 'Raccourcis',
			'help'            : 'Aide',
			'webfm'           : 'Gestionnaire de fichier Web',
			'ver'             : 'Version',
			'protocolver'     : 'Version du protocole',
			'homepage'        : 'Page du projet',
			'docs'            : 'La documentation',
			'github'          : 'Forkez-nous sur Github',
			'twitter'         : 'Suivez nous sur twitter',
			'facebook'        : 'Joignez-nous facebook',
			'team'            : 'Équipe',
			'chiefdev'        : 'Développeur en chef',
			'developer'       : 'Développeur',
			'contributor'     : 'Contributeur',
			'maintainer'      : 'Mainteneur',
			'translator'      : 'Traducteur',
			'icons'           : 'Icônes',
			'dontforget'      : 'et n\'oubliez pas votre serviette',
			'shortcutsof'     : 'Raccourcis désactivés',
			'dropFiles'       : 'Déposez les fichiers ici',
			'or'              : 'ou',
			'selectForUpload' : 'Sélectionner les fichiers à envoyer',
			'moveFiles'       : 'Déplacer les éléments',
			'copyFiles'       : 'Copier les éléments',
			'restoreFiles'    : 'Restaurer les éléments', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Retirer des favoris',
			'aspectRatio'     : 'Ratio d’affichage',
			'scale'           : 'Mise à l\'échelle',
			'width'           : 'Largeur',
			'height'          : 'Hauteur',
			'resize'          : 'Redimensionner',
			'crop'            : 'Recadrer',
			'rotate'          : 'Rotation',
			'rotate-cw'       : 'Rotation de 90 degrés horaire',
			'rotate-ccw'      : 'Rotation de 90 degrés antihoraire',
			'degree'          : '°',
			'netMountDialogTitle' : 'Monter un volume réseau', // added 18.04.2012
			'protocol'            : 'Protocole', // added 18.04.2012
			'host'                : 'Hôte', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Utilisateur', // added 18.04.2012
			'pass'                : 'Mot de passe', // added 18.04.2012
			'confirmUnmount'      : 'Démonter $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Glissez-déposez depuis le navigateur de fichier', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Glissez-déposez les fichiers ici', // from v2.1 added 07.04.2014
			'encoding'        : 'Encodage', // from v2.1 added 19.12.2014
			'locale'          : 'Encodage régional',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destination: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Recherche par type MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Propriétaire', // from v2.1 added 20.6.2015
			'group'           : 'Groupe', // from v2.1 added 20.6.2015
			'other'           : 'Autre', // from v2.1 added 20.6.2015
			'execute'         : 'Exécuter', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Le dossier est vide', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-déposez pour ajouter des éléments.', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des éléments.', // from v2.1.6 added 30.12.2015
			'quality'         : 'Qualité', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Synchronisation automatique',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Déplacer vers le haut',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obtenir le lien d’URL', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Éléments sélectionnés ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID du dossier', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permettre l\'accès hors-ligne', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Pour se réauthentifier', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'En cours de chargement...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. Êtes-vous sûr de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Aucun résultat trouvé avec les paramètres de recherche.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vous avez sélectionné $1 éléments.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Vous avez $1 éléments dans le presse-papier.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Recherche incrémentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Rétablir', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complété', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menu contextuel', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Tourner la page', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volumes principaux', // from v2.1.16 added 16.9.2016
			'reset'           : 'Réinitialiser', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Couleur de fond', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Sélecteur de couleur', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'Grille 8px', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Actif', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Inactif', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Aucun résultat trouvé.\\AAppuyez sur [Entrée] pour développer la cible de recherche.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Aucun résultat trouvé pour la recherche par première lettre.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Label texte', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins restantes', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Réouvrir avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Sauvegarder avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Choisir le dossier', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Recherche par première lettre', // from v2.1.23 added 24.3.2017
			'presets'         : 'Présélections', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Impossible de mettre autant d\'éléments à la corbeille.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Zone de texte', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Il n\'y a pas d\'élément dans le dossier "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Préférence', // from v2.1.26 added 28.6.2017
			'language'        : 'Configuration de langue', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialisation des configurations sauvegardées dans ce navigateur', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Paramètres de la barre d\'outils', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 caractères restants.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 de lignes restantes.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Somme', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Concentrez-vous sur l\'élément de dialogue avec le survol de la souris',  // from v2.1.30 added 2.11.2017
			'select'          : 'Sélectionner', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action lors de la sélection d\'un fichier', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Ouvrir avec le dernier éditeur utilisé', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverser la sélection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Êtes-vous sûr de vouloir renommer les éléments sélectionnés $1 en $2 ?<br/>L\'action est définitive !', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Renommer le Batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nombre', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Ajouter un préfixe', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Paramètres des colonnes (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Les changements seront immédiatement appliqués à l\'archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Aucun changement ne sera appliqué tant que ce volume n\'a pas été démonté.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Le(s) volume(s) suivant(s) montés sur ce volume seront également démontés. Êtes-vous sûr de vouloir le démonter ?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informations sur la sélection', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Éléments d\'information (panneau d\'informations de sélection)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Appuyez à nouveau pour quitter.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barre d\'outils', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Espace de travail', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialogue', // from v2.1.38 added 4.4.2018
			'all'             : 'Tout', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Taille des icônes (vue Icônes)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Ouvrir la fenêtre agrandie de l\'éditeur', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Étant donné que la conversion par API n\'est pas disponible actuellement, veuillez effectuer la conversion sur le site Web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Après la conversion, vous devez télécharger l\'URL de l\'élément ou un fichier téléchargé pour enregistrer le fichier converti.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convertissez sur le site de $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Intégrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Cet elFinder intègre les services externes suivants. Veuillez vérifier les conditions d\'utilisation, la politique de confidentialité, etc. avant de l\'utiliser.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Afficher les éléments cachés', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Masquer les éléments cachés', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Afficher/Masquer les éléments masqués', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Types de fichiers à activer avec "Nouveau fichier"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type de fichier texte', // from v2.1.41 added 7.8.2018
			'add'             : 'Ajouter', // from v2.1.41 added 7.8.2018
			'theme'           : 'Défaut', // from v2.1.43 added 19.10.2018
			'default'         : 'défaut', // from v2.1.43 added 19.10.2018
			'description'     : 'La description', // from v2.1.43 added 19.10.2018
			'website'         : 'Site Internet', // from v2.1.43 added 19.10.2018
			'author'          : 'Auteure', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'la licence', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Cet élément ne peut pas être enregistré. Pour éviter de perdre les modifications, vous devez exporter vers votre PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double-cliquez sur le fichier pour le sélectionner.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Utiliser le mode plein écran', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Inconnu',
			'kindRoot'        : 'Volume principal', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Dossier',
			'kindSelects'     : 'Sélections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Raccourci',
			'kindAliasBroken' : 'Raccourci cassé',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Document Postscript',
			'kindMsOffice'    : 'Document Microsoft Office',
			'kindMsWord'      : 'Document Microsoft Word',
			'kindMsExcel'     : 'Document Microsoft Excel',
			'kindMsPP'        : 'Présentation Microsoft PowerPoint',
			'kindOO'          : 'Document OpenOffice',
			'kindAppFlash'    : 'Application Flash',
			'kindPDF'         : 'Format de document portable (PDF)',
			'kindTorrent'     : 'Fichier BitTorrent',
			'kind7z'          : 'Archive 7z',
			'kindTAR'         : 'Archive TAR',
			'kindGZIP'        : 'Archive GZIP',
			'kindBZIP'        : 'Archive BZIP',
			'kindXZ'          : 'Archive XZ',
			'kindZIP'         : 'Archive ZIP',
			'kindRAR'         : 'Archive RAR',
			'kindJAR'         : 'Fichier Java JAR',
			'kindTTF'         : 'Police True Type',
			'kindOTF'         : 'Police Open Type',
			'kindRPM'         : 'Package RPM',
			// texts
			'kindText'        : 'Document Text',
			'kindTextPlain'   : 'Texte non formaté',
			'kindPHP'         : 'Source PHP',
			'kindCSS'         : 'Feuille de style en cascade',
			'kindHTML'        : 'Document HTML',
			'kindJS'          : 'Source JavaScript',
			'kindRTF'         : 'Format de texte enrichi (Rich Text Format)',
			'kindC'           : 'Source C',
			'kindCHeader'     : 'Source header C',
			'kindCPP'         : 'Source C++',
			'kindCPPHeader'   : 'Source header C++',
			'kindShell'       : 'Shell script Unix',
			'kindPython'      : 'Source Python',
			'kindJava'        : 'Source Java',
			'kindRuby'        : 'Source Ruby',
			'kindPerl'        : 'Script Perl',
			'kindSQL'         : 'Source SQL',
			'kindXML'         : 'Document XML',
			'kindAWK'         : 'Source AWK',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Document Docbook XML',
			'kindMarkdown'    : 'Texte de démarque', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'Image BMP',
			'kindJPEG'        : 'Image JPEG',
			'kindGIF'         : 'Image GIF',
			'kindPNG'         : 'Image PNG',
			'kindTIFF'        : 'Image TIFF',
			'kindTGA'         : 'Image TGA',
			'kindPSD'         : 'Image Adobe Photoshop',
			'kindXBITMAP'     : 'Image X bitmap',
			'kindPXM'         : 'Image Pixelmator',
			// media
			'kindAudio'       : 'Son',
			'kindAudioMPEG'   : 'Son MPEG',
			'kindAudioMPEG4'  : 'Son MPEG-4',
			'kindAudioMIDI'   : 'Son MIDI',
			'kindAudioOGG'    : 'Son Ogg Vorbis',
			'kindAudioWAV'    : 'Son WAV',
			'AudioPlaylist'   : 'Liste de lecture audio',
			'kindVideo'       : 'Vidéo',
			'kindVideoDV'     : 'Vidéo DV',
			'kindVideoMPEG'   : 'Vidéo MPEG',
			'kindVideoMPEG4'  : 'Vidéo MPEG-4',
			'kindVideoAVI'    : 'Vidéo AVI',
			'kindVideoMOV'    : 'Vidéo Quick Time',
			'kindVideoWM'     : 'Vidéo Windows Media',
			'kindVideoFlash'  : 'Vidéo Flash',
			'kindVideoMKV'    : 'Vidéo Matroska',
			'kindVideoOGG'    : 'Vidéo Ogg'
		}
	};
}));lib/js/i18n/elfinder.no.js000064400000100722147361034410011253 0ustar00/**
 * Norwegian Bokmål translation
 * @author Stian Jacobsen <stian@promonorge.no>
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.no = {
		translator : 'Stian Jacobsen &lt;stian@promonorge.no&gt;',
		language   : 'Norwegian Bokmål',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // will show like: mars 02, 2022 04:32 PM
		fancyDateFormat : '$1 h:i A', // will show like: I dag 04:32 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220302-163250
		messages   : {
			'getShareText' : 'Dele',
			'Editor ': 'Koderedigerer',

			/********************************** errors **********************************/
			'error'                : 'Feil',
			'errUnknown'           : 'Ukjent feil.',
			'errUnknownCmd'        : 'Ukjent kommando.',
			'errJqui'              : 'Ugyldig jQuery UI konfigurasjon. Selectable, draggable og droppable komponentene må være inkludert.',
			'errNode'              : 'elFinder påkrever at DOM Elementer kan opprettes.',
			'errURL'               : 'Ugyldig elFinder konfigurasjon! URL-valget er ikke satt.',
			'errAccess'            : 'Ingen adgang.',
			'errConnect'           : 'Kunne ikke koble til.',
			'errAbort'             : 'Tilkoblingen avbrutt.',
			'errTimeout'           : 'Tilkoblingen tidsavbrudd.',
			'errNotFound'          : 'Backend ble ikke funnet',
			'errResponse'          : 'Ugyldig backend respons.',
			'errConf'              : 'Ugyldig backend konfigurasjon.',
			'errJSON'              : 'PHP JSON modul er ikke installert.',
			'errNoVolumes'         : 'Lesbar volum er ikke tilgjennelig.',
			'errCmdParams'         : 'Ugyldig parameter for kommando "$1".',
			'errDataNotJSON'       : 'Innhold er ikke JSON.',
			'errDataEmpty'         : 'Innholdet er tomt.',
			'errCmdReq'            : 'Backend spørringen påkrever kommando.',
			'errOpen'              : 'Kunne ikke åpne "$1".',
			'errNotFolder'         : 'Objektet er ikke en mappe.',
			'errNotFile'           : 'Objektet er ikke en fil.',
			'errRead'              : 'Kunne ikke lese "$1".',
			'errWrite'             : 'Kunne ikke skrive til "$1".',
			'errPerm'              : 'Du har ikke rettigheter.',
			'errLocked'            : '"$1" er låst og kan ikke flyttes, slettes eller endres',
			'errExists'            : 'Filen "$1" finnes allerede.',
			'errInvName'           : 'Ugyldig filnavn.',
			'errInvDirname'        : 'Ugyldig mappenavn.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mappen finnes ikke.',
			'errFileNotFound'      : 'Filen finnes ikke.',
			'errTrgFolderNotFound' : 'Målmappen "$1" ble ikke funnet.',
			'errPopup'             : 'Nettleseren din blokkerte et pop-up vindu. For å åpne filen må du aktivere pop-up i din nettlesers innstillinger.',
			'errMkdir'             : 'Kunne ikke opprette mappen "$1".',
			'errMkfile'            : 'Kunne ikke opprette filen "$1".',
			'errRename'            : 'Kunne ikke gi nytt navn til "$1".',
			'errCopyFrom'          : 'Kopiere filer fra "$1" er ikke tillatt.',
			'errCopyTo'            : 'Kopiere filer til "$1" er ikke tillatt.',
			'errMkOutLink'         : 'Kan ikke opprette en kobling til utenfor volumroten.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Feil under opplasting.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kunne ikke laste opp "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Ingen filer funnet til opplasting.',
			'errUploadTotalSize'   : 'Innholdet overgår maksimum tillatt størrelse.', // old name - errMaxSize
			'errUploadFileSize'    : 'Filen vergår maksimum tillatt størrelse.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Filtypen ikke tillatt.',
			'errUploadTransfer'    : '"$1" overførings feil.',
			'errUploadTemp'        : 'Kan ikke lage en midlertidig fil for opplasting.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objektet "$1" eksisterer allerede på denne plasseringen og kan ikke erstattes av objektet med en annen type.', // new
			'errReplace'           : 'Kan ikke erstatte "$1".',
			'errSave'              : 'Kunne ikke lagre "$1".',
			'errCopy'              : 'Kunne ikke kopiere "$1".',
			'errMove'              : 'Kunne ikke flytte "$1".',
			'errCopyInItself'      : 'Kunne ikke kopiere "$1" til seg selv.',
			'errRm'                : 'Kunne ikke slette "$1".',
			'errTrash'             : 'Kan ikke legges i papirkurven.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Kan ikke fjerne kildefil(er).',
			'errExtract'           : 'Kunne ikke pakke ut filer fra "$1".',
			'errArchive'           : 'Kunne ikke opprette arkiv.',
			'errArcType'           : 'akriv-typen er ikke støttet.',
			'errNoArchive'         : 'Filen er ikke et arkiv eller et arkiv som ikke er støttet.',
			'errCmdNoSupport'      : 'Backend støtter ikke denne kommandoen.',
			'errReplByChild'       : 'The folder “$1” can’t be replaced by an item it contains.',
			'errArcSymlinks'       : 'Av sikkerhetsgrunner nektet å pakke ut inneholder arkiver symbolkoblinger eller filer med ikke tillatte navn.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arkivfiler overskrider maksimal tillatt størrelse.',
			'errResize'            : 'Kan ikke endre størrelsen på "$1".',
			'errResizeDegree'      : 'Ugyldig rotasjonsgrad.',  // added 7.3.2013
			'errResizeRotate'      : 'Kan ikke rotere bildet.',  // added 7.3.2013
			'errResizeSize'        : 'Ugyldig bildestørrelse.',  // added 7.3.2013
			'errResizeNoChange'    : 'Bildestørrelsen er ikke endret.',  // added 7.3.2013
			'errUsupportType'      : 'Ustøttet filtype.',
			'errNotUTF8Content'    : 'Filen "$1" er ikke i UTF-8 og kan ikke redigeres.',  // added 9.11.2011
			'errNetMount'          : 'Kan ikke montere "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ustøttet protokoll.',     // added 17.04.2012
			'errNetMountFailed'    : 'Montering mislyktes.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Vert kreves.', // added 18.04.2012
			'errSessionExpires'    : 'Økten din har utløpt på grunn av inaktivitet.',
			'errCreatingTempDir'   : 'Kan ikke opprette midlertidig katalog: "$1"',
			'errFtpDownloadFile'   : 'Kan ikke laste ned fil fra FTP: "$1"',
			'errFtpUploadFile'     : 'Kan ikke laste opp filen til FTP: "$1"',
			'errFtpMkdir'          : 'Kan ikke opprette ekstern katalog på FTP: "$1"',
			'errArchiveExec'       : 'Feil under arkivering av filer: "$1"',
			'errExtractExec'       : 'Feil under utpakking av filer: "$1"',
			'errNetUnMount'        : 'Kan ikke demontere.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Kan ikke konverteres til UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Prøv den moderne nettleseren, hvis du vil laste opp mappen.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Tidsavbrudd under søking av «$1». Søkeresultatet er delvis.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Det kreves ny autorisasjon.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maks antall valgbare varer er $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Kan ikke gjenopprette fra papirkurven. Kan ikke identifisere gjenopprettingsdestinasjonen.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Finner ikke redigeringsprogrammet for denne filtypen.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Det oppstod en feil på serversiden.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Kan ikke tømme mappen "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Det er $1 flere feil.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Du kan opprette opptil $1 mapper om gangen.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Opprett arkiv',
			'cmdback'      : 'Tilbake',
			'cmdcopy'      : 'Kopier',
			'cmdcut'       : 'Klipp ut',
			'cmddownload'  : 'Last ned',
			'cmdduplicate' : 'Dupliser',
			'cmdedit'      : 'Rediger fil',
			'cmdextract'   : 'Pakk ut filer fra arkiv',
			'cmdforward'   : 'Frem',
			'cmdgetfile'   : 'Velg filer',
			'cmdhelp'      : 'Om',
			'cmdhome'      : 'Hjem',
			'cmdinfo'      : 'Vis info',
			'cmdmkdir'     : 'Ny mappe',
			'cmdmkdirin'   : 'Inn i ny mappe', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Ny fil',
			'cmdopen'      : 'Åpne',
			'cmdpaste'     : 'Lim inn',
			'cmdquicklook' : 'Forhåndsvis',
			'cmdreload'    : 'Last inn på nytt',
			'cmdrename'    : 'Gi nytt navn',
			'cmdrm'        : 'Slett',
			'cmdtrash'     : 'Til søppel', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurere', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Find filer',
			'cmdup'        : 'Opp et nivå',
			'cmdupload'    : 'Last opp filer',
			'cmdview'      : 'Vis',
			'cmdresize'    : 'Endre størrelse og roter',
			'cmdsort'      : 'Sortere',
			'cmdnetmount'  : 'Monter nettverksvolum', // added 18.04.2012
			'cmdnetunmount': 'Demonter', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Til steder', // added 28.12.2014
			'cmdchmod'     : 'Endre modus', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Åpne en mappe', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Tilbakestill kolonnebredden', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Full skjerm', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Bevege seg', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Tøm mappen', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Angre', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Gjøre om', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferanser', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Velg alle', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Velg ingen', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Inverter utvalg', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Åpne i nytt vindu', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Skjul (preferanse)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Lukk',
			'btnSave'   : 'Lagre',
			'btnRm'     : 'Slett',
			'btnApply'  : 'Søke om',
			'btnCancel' : 'Avbryt',
			'btnNo'     : 'Nei',
			'btnYes'    : 'Ja',
			'btnMount'  : 'Monter',  // added 18.04.2012
			'btnApprove': 'Gå til $1 og godkjenn', // from v2.1 added 26.04.2012
			'btnUnmount': 'Demonter', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konvertere', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Her',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volum',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Alle',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME-type', // from v2.1 added 22.5.2015
			'btnFileName':'Filnavn',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Lagre og lukk', // from v2.1 added 12.6.2015
			'btnBackup' : 'Sikkerhetskopiering', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Gi nytt navn',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Gi nytt navn (alle)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Forrige ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Neste ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Lagre som', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Åpne mappe',
			'ntffile'     : 'Åpne fil',
			'ntfreload'   : 'Last inn mappen på nytt',
			'ntfmkdir'    : 'Oppretter mappe',
			'ntfmkfile'   : 'Oppretter filer',
			'ntfrm'       : 'Sletter filer',
			'ntfcopy'     : 'Kopierer filer',
			'ntfmove'     : 'Flytter filer',
			'ntfprepare'  : 'Gjør klar til kopiering av filer',
			'ntfrename'   : 'Gir nytt navn til filer',
			'ntfupload'   : 'Laster opp filer',
			'ntfdownload' : 'Laster ned filer',
			'ntfsave'     : 'Lagrer filer',
			'ntfarchive'  : 'Oppretter arkiv',
			'ntfextract'  : 'Pakker ut filer fra arkiv',
			'ntfsearch'   : 'Søker i filer',
			'ntfresize'   : 'Endre størrelse på bilder',
			'ntfsmth'     : 'Gjør noe... >_<',
			'ntfloadimg'  : 'Laster inn bilde',
			'ntfnetmount' : 'Montering av nettverksvolum', // added 18.04.2012
			'ntfnetunmount': 'Demonterer nettverksvolum', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Få bildedimensjon', // added 20.05.2013
			'ntfreaddir'  : 'Leser mappeinformasjon', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Henter URL til lenke', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Endre filmodus', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Bekrefter navnet på opplastingsfilen', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Opprette en fil for nedlasting', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Henter baneinformasjon', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Behandler den opplastede filen', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Kaster i søpla', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Gjenoppretter fra søpla', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Sjekker målmappen', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Angre tidligere operasjon', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Gjør om forrige angret', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrollerer innholdet', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Søppel', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'Ukjent',
			'Today'       : 'I dag',
			'Yesterday'   : 'I går',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'mars',
			'msApr'       : 'apr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'jul',
			'msAug'       : 'august',
			'msSep'       : 'sep',
			'msOct'       : 'Okt',
			'msNov'       : 'nov',
			'msDec'       : 'Des',
			'January'     : 'januar',
			'February'    : 'februar',
			'March'       : 'mars',
			'April'       : 'april',
			'May'         : 'Kan',
			'June'        : 'juni',
			'July'        : 'juli',
			'August'      : 'august',
			'September'   : 'september',
			'October'     : 'oktober',
			'November'    : 'november',
			'December'    : 'desember',
			'Sunday'      : 'søndag',
			'Monday'      : 'mandag',
			'Tuesday'     : 'tirsdag',
			'Wednesday'   : 'onsdag',
			'Thursday'    : 'Torsdag',
			'Friday'      : 'fredag',
			'Saturday'    : 'lørdag',
			'Sun'         : 'Sol',
			'Mon'         : 'man',
			'Tue'         : 'tirs',
			'Wed'         : 'ons',
			'Thu'         : 'tor',
			'Fri'         : 'fre',
			'Sat'         : 'Lør',

			/******************************** sort variants ********************************/
			'sortname'          : 'ved navn',
			'sortkind'          : 'etter slag',
			'sortsize'          : 'etter størrelse',
			'sortdate'          : 'etter dato',
			'sortFoldersFirst'  : 'Mapper først',
			'sortperm'          : 'med tillatelse', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'etter modus',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'av eier',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'etter gruppe',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Også Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'Ny mappe',   // added 10.11.2015
			'Archive'           : 'Nytt arkiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Ny fil.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Fil',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Bekreftelse nødvendig',
			'confirmRm'       : 'Er du sikker på at du ønsker å slette filene?',
			'confirmRepl'     : 'Erstatt fil?',
			'confirmRest'     : 'Vil du erstatte eksisterende element med elementet i papirkurven?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Ikke i UTF-8<br/>Konverter til UTF-8?<br/>Innhold blir UTF-8 ved å lagre etter konvertering.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Tegnkoding av denne filen kunne ikke oppdages. Den må midlertidig konvertere til UTF-8 for redigering.<br/>Velg tegnkoding for denne filen.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Den har blitt endret.<br/>Mister arbeid hvis du ikke lagrer endringer.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Er du sikker på at du vil flytte elementer til søppelbøtta?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Er du sikker på at du vil flytte elementer til "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Gjelder for alle',
			'name'            : 'Navn',
			'size'            : 'Størrelse',
			'perms'           : 'Rettigheter',
			'modify'          : 'Endret',
			'kind'            : 'Type',
			'read'            : 'les',
			'write'           : 'skriv',
			'noaccess'        : 'ingen adgang',
			'and'             : 'og',
			'unknown'         : 'ukjent',
			'selectall'       : 'Velg alle filene',
			'selectfiles'     : 'Velg fil(er)',
			'selectffile'     : 'Velg første fil',
			'selectlfile'     : 'Velg siste fil',
			'viewlist'        : 'Listevisning',
			'viewicons'       : 'Ikoner',
			'viewSmall'       : 'Små ikoner', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Middels ikoner', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Store ikoner', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Ekstra store ikoner', // from v2.1.39 added 22.5.2018
			'places'          : 'Områder',
			'calc'            : 'Beregn',
			'path'            : 'Bane',
			'aliasfor'        : 'Alias for',
			'locked'          : 'Låst',
			'dim'             : 'Størrelser',
			'files'           : 'Filer',
			'folders'         : 'Mapper',
			'items'           : 'objekter',
			'yes'             : 'ja',
			'no'              : 'nei',
			'link'            : 'Link',
			'searcresult'     : 'Søkeresultater',
			'selected'        : 'valgte filer',
			'about'           : 'Om',
			'shortcuts'       : 'Snarveier',
			'help'            : 'Hjelp',
			'webfm'           : 'Web-filbehandler',
			'ver'             : 'Versjon',
			'protocolver'     : 'protokol versjon',
			'homepage'        : 'Prosjekt hjem',
			'docs'            : 'dokumentasjon',
			'github'          : 'Fork us on Github',
			'twitter'         : 'Follow us on twitter',
			'facebook'        : 'Join us on facebook',
			'team'            : 'Team',
			'chiefdev'        : 'sjefutvikler',
			'developer'       : 'utvikler',
			'contributor'     : 'bidragsyter',
			'maintainer'      : 'vedlikeholder',
			'translator'      : 'oversetter',
			'icons'           : 'Ikoner',
			'dontforget'      : 'and don\'t forget to bring a towel',
			'shortcutsof'     : 'Snarveier avslått',
			'dropFiles'       : 'Slipp filer her',
			'or'              : 'eller',
			'selectForUpload' : 'Velg filer til opplasting',
			'moveFiles'       : 'Flytt filer',
			'copyFiles'       : 'Kopier filer',
			'restoreFiles'    : 'Gjenopprett elementer', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Fjern fra steder',
			'aspectRatio'     : 'Størrelsesforholdet',
			'scale'           : 'Skala',
			'width'           : 'Bredde',
			'height'          : 'Høyde',
			'resize'          : 'Endre størrelse',
			'crop'            : 'Avling',
			'rotate'          : 'Rotere',
			'rotate-cw'       : 'Roter 90 grader CW',
			'rotate-ccw'      : 'Roter 90 grader moturs',
			'degree'          : '°',
			'netMountDialogTitle' : 'Monter nettverksvolum', // added 18.04.2012
			'protocol'            : 'Protokoll', // added 18.04.2012
			'host'                : 'Vert', // added 18.04.2012
			'port'                : 'Havn', // added 18.04.2012
			'user'                : 'Bruker', // added 18.04.2012
			'pass'                : 'Passord', // added 18.04.2012
			'confirmUnmount'      : 'Avmonterer du $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Slipp eller lim inn filer fra nettleseren', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Slipp filer, lim inn URL-er eller bilder (utklippstavle) her', // from v2.1 added 07.04.2014
			'encoding'        : 'Koding', // from v2.1 added 19.12.2014
			'locale'          : 'Språk',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Mål: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Søk etter inndata MIME-type', // from v2.1 added 22.5.2015
			'owner'           : 'Eieren', // from v2.1 added 20.6.2015
			'group'           : 'Gruppe', // from v2.1 added 20.6.2015
			'other'           : 'Annen', // from v2.1 added 20.6.2015
			'execute'         : 'Henrette', // from v2.1 added 20.6.2015
			'perm'            : 'Tillatelse', // from v2.1 added 20.6.2015
			'mode'            : 'Modus', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mappen er tom', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mappen er tom\\A Slipp for å legge til elementer', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mappen er tom\\Et langt trykk for å legge til elementer', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalitet', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatisk synkronisering',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Flytte opp',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Få URL-lenke', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Valgte varer ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Mappe-ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Tillat tilgang uten nett', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'For å autentisere på nytt', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Laster...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Åpne flere filer', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Du prøver å åpne $1-filene. Er du sikker på at du vil åpne i nettleseren?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Søkeresultatene er tomme i søkemålet.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Det er å redigere en fil.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Du har valgt $1 varer.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Du har $1 elementer på utklippstavlen.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Inkrementelt søk er bare fra gjeldende visning.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Gjenopprett', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 fullført', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontekstmenyen', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Sidevending', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volum røtter', // from v2.1.16 added 16.9.2016
			'reset'           : 'Nullstille', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Bakgrunnsfarge', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Fargevelger', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px rutenett', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Aktivert', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Funksjonshemmet', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Søkeresultatene er tomme i gjeldende visning.\\ATrykk på [Enter] for å utvide søkemålet.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Søkeresultater for første bokstav er tomme i gjeldende visning.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Tekstetikett', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 min igjen', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Åpne på nytt med valgt koding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Lagre med valgt koding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Velg mappe', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Første bokstavsøk', // from v2.1.23 added 24.3.2017
			'presets'         : 'Forhåndsinnstillinger', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Det er for mange gjenstander, så det kan ikke gå i søppel.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Tøm mappen "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Det er ingen elementer i mappen "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferanse', // from v2.1.26 added 28.6.2017
			'language'        : 'Språk', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialiser innstillingene som er lagret i denne nettleseren', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Verktøylinjeinnstillinger', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 tegn igjen.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 linjer igjen.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Grov filstørrelse', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Fokuser på elementet av dialog med museover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Plukke ut', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Handling når du velger fil', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Åpne med redigeringsprogrammet som ble brukt sist', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Inverter utvalg', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Er du sikker på at du vil gi nytt navn til $1 valgte elementer som $2?<br/>Dette kan ikke angres!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Gi nytt navn til batch', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Nummer', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Legg til prefiks', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Legg til suffiks', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Endre utvidelse', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Kolonneinnstillinger (listevisning)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Alle endringer vil umiddelbart gjenspeiles i arkivet.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Eventuelle endringer gjenspeiles ikke før demontering av dette volumet.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Følgende volum(er) montert på dette volumet er også avmontert. Er du sikker på å demontere den?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Utvalg info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmer for å vise filhash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Infoelementer (utvalgsinfopanel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Trykk igjen for å avslutte.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Verktøylinje', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Arbeidsplass', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Alle', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Ikonstørrelse (ikonvisning)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Åpne vinduet for maksimert redigering', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Fordi konvertering via API for øyeblikket ikke er tilgjengelig, vennligst konverter på nettstedet.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Fordi konvertering via API for øyeblikket ikke er tilgjengelig, vennligst konverter på nettstedet.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konverter på nettstedet til $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrasjoner', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Denne elFinder har følgende eksterne tjenester integrert. Vennligst sjekk vilkårene for bruk, personvernerklæringen osv. før du bruker den.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Vis skjulte elementer', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Skjul skjulte elementer', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Vis/skjul skjulte elementer', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Filtyper for å aktivere med "Ny fil"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type tekstfil', // from v2.1.41 added 7.8.2018
			'add'             : 'Legge til', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Misligholde', // from v2.1.43 added 19.10.2018
			'description'     : 'Beskrivelse', // from v2.1.43 added 19.10.2018
			'website'         : 'Nettsted', // from v2.1.43 added 19.10.2018
			'author'          : 'Forfatter', // from v2.1.43 added 19.10.2018
			'email'           : 'E-post', // from v2.1.43 added 19.10.2018
			'license'         : 'Tillatelse', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Dette elementet kan ikke lagres. For å unngå å miste redigeringene må du eksportere til PC-en.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dobbeltklikk på filen for å velge den.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Bruk fullskjermmodus', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ukjent',
			'kindRoot'        : 'Volumrot', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mappe',
			'kindSelects'     : 'Utvalg', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Snarvei',
			'kindAliasBroken' : 'Ugyldig snarvei',
			// applications
			'kindApp'         : 'Programfil',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint-presentasjon',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flash',
			'kindPDF'         : 'Portabelt dokument (PDF)',
			'kindTorrent'     : 'Bittorrent-fil',
			'kind7z'          : '7z arkiv',
			'kindTAR'         : 'TAR arkiv',
			'kindGZIP'        : 'GZIP arkiv',
			'kindBZIP'        : 'BZIP arkiv',
			'kindXZ'          : 'XZ arkiv',
			'kindZIP'         : 'ZIP arkiv',
			'kindRAR'         : 'RAR ar',
			'kindJAR'         : 'Java JAR-fil',
			'kindTTF'         : 'True Type-skrift',
			'kindOTF'         : 'Åpne Type font',
			'kindRPM'         : 'RPM-pakke',
			// texts
			'kindText'        : 'Tekst dokument',
			'kindTextPlain'   : 'Ren tekst',
			'kindPHP'         : 'PHP kilde',
			'kindCSS'         : 'Cascading stilark',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript',
			'kindRTF'         : 'Rikt Tekst Format',
			'kindC'           : 'C kilde',
			'kindCHeader'     : 'C header kilde',
			'kindCPP'         : 'C++ kilde',
			'kindCPPHeader'   : 'C++ header kilde',
			'kindShell'       : 'Unix-skallskript',
			'kindPython'      : 'Python kilde',
			'kindJava'        : 'Java kilde',
			'kindRuby'        : 'Ruby kilde',
			'kindPerl'        : 'Perl-manus',
			'kindSQL'         : 'SQL skilde',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK kilde',
			'kindCSV'         : 'Kommaseparerte verdier',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Markdown-tekst', // added 20.7.2015
			// images
			'kindImage'       : 'Bilde',
			'kindBMP'         : 'BMP bilde',
			'kindJPEG'        : 'JPEG bilde',
			'kindGIF'         : 'GIF bilde',
			'kindPNG'         : 'PNG bilde',
			'kindTIFF'        : 'TIFF bilde',
			'kindTGA'         : 'TGA bilde',
			'kindPSD'         : 'Adobe Photoshop bilde',
			'kindXBITMAP'     : 'X bitmap bilde',
			'kindPXM'         : 'Pixelmator bilde',
			// media
			'kindAudio'       : 'Lydmedier',
			'kindAudioMPEG'   : 'MPEG-lyd',
			'kindAudioMPEG4'  : 'MPEG-4 lyd',
			'kindAudioMIDI'   : 'MIDI-lyd',
			'kindAudioOGG'    : 'Ogg Vorbis lyd',
			'kindAudioWAV'    : 'WAV-lyd',
			'AudioPlaylist'   : 'MP3 spilleliste',
			'kindVideo'       : 'Videomedier',
			'kindVideoDV'     : 'DV film',
			'kindVideoMPEG'   : 'MPEG film',
			'kindVideoMPEG4'  : 'MPEG-4 film',
			'kindVideoAVI'    : 'AVI film',
			'kindVideoMOV'    : 'Quick Time film',
			'kindVideoWM'     : 'Windows Media film',
			'kindVideoFlash'  : 'Flash film',
			'kindVideoMKV'    : 'Matroska film',
			'kindVideoOGG'    : 'Ogg film'
		}
	};
}));

lib/js/i18n/elfinder.LANG.js000064400000077754147361034410011402 0ustar00/**
 * elFinder translation template
 * use this file to create new translation
 * submit new translation via https://github.com/Studio-42/elFinder/issues
 * or make a pull request
 */

/**
 * XXXXX translation
 * @author Translator Name <translator@email.tld>
 * @version 201x-xx-xx
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.REPLACE_WITH_xx_OR_xx_YY_LANG_CODE = {
		translator : 'Translator name &lt;translator@email.tld&gt;',
		language   : 'Language of translation in your language',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // will show like: Mar 13, 2012 05:27 PM
		fancyDateFormat : '$1 h:i A', // will show like: Today 12:25 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 120513-172700
		messages   : {

			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Unknown error.',
			'errUnknownCmd'        : 'Unknown command.',
			'errJqui'              : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.',
			'errNode'              : 'elFinder requires DOM Element to be created.',
			'errURL'               : 'Invalid elFinder configuration! URL option is not set.',
			'errAccess'            : 'Access denied.',
			'errConnect'           : 'Unable to connect to backend.',
			'errAbort'             : 'Connection aborted.',
			'errTimeout'           : 'Connection timeout.',
			'errNotFound'          : 'Backend not found.',
			'errResponse'          : 'Invalid backend response.',
			'errConf'              : 'Invalid backend configuration.',
			'errJSON'              : 'PHP JSON module not installed.',
			'errNoVolumes'         : 'Readable volumes not available.',
			'errCmdParams'         : 'Invalid parameters for command "$1".',
			'errDataNotJSON'       : 'Data is not JSON.',
			'errDataEmpty'         : 'Data is empty.',
			'errCmdReq'            : 'Backend request requires command name.',
			'errOpen'              : 'Unable to open "$1".',
			'errNotFolder'         : 'Object is not a folder.',
			'errNotFile'           : 'Object is not a file.',
			'errRead'              : 'Unable to read "$1".',
			'errWrite'             : 'Unable to write into "$1".',
			'errPerm'              : 'Permission denied.',
			'errLocked'            : '"$1" is locked and can not be renamed, moved or removed.',
			'errExists'            : 'Item named "$1" already exists.',
			'errInvName'           : 'Invalid file name.',
			'errInvDirname'        : 'Invalid folder name.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Folder not found.',
			'errFileNotFound'      : 'File not found.',
			'errTrgFolderNotFound' : 'Target folder "$1" not found.',
			'errPopup'             : 'Browser prevented opening popup window. To open file enable it in browser options.',
			'errMkdir'             : 'Unable to create folder "$1".',
			'errMkfile'            : 'Unable to create file "$1".',
			'errRename'            : 'Unable to rename "$1".',
			'errCopyFrom'          : 'Copying files from volume "$1" not allowed.',
			'errCopyTo'            : 'Copying files to volume "$1" not allowed.',
			'errMkOutLink'         : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Upload error.',  // old name - errUploadCommon
			'errUploadFile'        : 'Unable to upload "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'No files found for upload.',
			'errUploadTotalSize'   : 'Data exceeds the maximum allowed size.', // old name - errMaxSize
			'errUploadFileSize'    : 'File exceeds maximum allowed size.', //  old name - errFileMaxSize
			'errUploadMime'        : 'File type not allowed.',
			'errUploadTransfer'    : '"$1" transfer error.',
			'errUploadTemp'        : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
			'errReplace'           : 'Unable to replace "$1".',
			'errSave'              : 'Unable to save "$1".',
			'errCopy'              : 'Unable to copy "$1".',
			'errMove'              : 'Unable to move "$1".',
			'errCopyInItself'      : 'Unable to copy "$1" into itself.',
			'errRm'                : 'Unable to remove "$1".',
			'errTrash'             : 'Unable into trash.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Unable remove source file(s).',
			'errExtract'           : 'Unable to extract files from "$1".',
			'errArchive'           : 'Unable to create archive.',
			'errArcType'           : 'Unsupported archive type.',
			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
			'errCmdNoSupport'      : 'Backend does not support this command.',
			'errReplByChild'       : 'The folder "$1" can\'t be replaced by an item it contains.',
			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
			'errResize'            : 'Unable to resize "$1".',
			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
			'errUsupportType'      : 'Unsupported file type.',
			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
			'errSessionExpires'    : 'Your session has expired due to inactivity.',
			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
			'errArchiveExec'       : 'Error while archiving files: "$1"',
			'errExtractExec'       : 'Error while extracting files: "$1"',
			'errNetUnMount'        : 'Unable to unmount.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Create archive',
			'cmdback'      : 'Back',
			'cmdcopy'      : 'Copy',
			'cmdcut'       : 'Cut',
			'cmddownload'  : 'Download',
			'cmdduplicate' : 'Duplicate',
			'cmdedit'      : 'Edit file',
			'cmdextract'   : 'Extract files from archive',
			'cmdforward'   : 'Forward',
			'cmdgetfile'   : 'Select files',
			'cmdhelp'      : 'About this software',
			'cmdhome'      : 'Root',
			'cmdinfo'      : 'Get info',
			'cmdmkdir'     : 'New folder',
			'cmdmkdirin'   : 'Into New Folder', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'New file',
			'cmdopen'      : 'Open',
			'cmdpaste'     : 'Paste',
			'cmdquicklook' : 'Preview',
			'cmdreload'    : 'Reload',
			'cmdrename'    : 'Rename',
			'cmdrm'        : 'Delete',
			'cmdtrash'     : 'Into trash', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restore', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Find files',
			'cmdup'        : 'Go to parent folder',
			'cmdupload'    : 'Upload files',
			'cmdview'      : 'View',
			'cmdresize'    : 'Resize & Rotate',
			'cmdsort'      : 'Sort',
			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'To Places', // added 28.12.2014
			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Open a folder', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Empty the folder', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Undo', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Redo', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Open in new window', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Hide (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Close',
			'btnSave'   : 'Save',
			'btnRm'     : 'Remove',
			'btnApply'  : 'Apply',
			'btnCancel' : 'Cancel',
			'btnNo'     : 'No',
			'btnYes'    : 'Yes',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Rename',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Open folder',
			'ntffile'     : 'Open file',
			'ntfreload'   : 'Reload folder content',
			'ntfmkdir'    : 'Creating folder',
			'ntfmkfile'   : 'Creating files',
			'ntfrm'       : 'Delete items',
			'ntfcopy'     : 'Copy items',
			'ntfmove'     : 'Move items',
			'ntfprepare'  : 'Checking existing items',
			'ntfrename'   : 'Rename files',
			'ntfupload'   : 'Uploading files',
			'ntfdownload' : 'Downloading files',
			'ntfsave'     : 'Save files',
			'ntfarchive'  : 'Creating archive',
			'ntfextract'  : 'Extracting files from archive',
			'ntfsearch'   : 'Searching files',
			'ntfresize'   : 'Resizing images',
			'ntfsmth'     : 'Doing something',
			'ntfloadimg'  : 'Loading image',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'unknown',
			'Today'       : 'Today',
			'Yesterday'   : 'Yesterday',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'May',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Dec',
			'January'     : 'January',
			'February'    : 'February',
			'March'       : 'March',
			'April'       : 'April',
			'May'         : 'May',
			'June'        : 'June',
			'July'        : 'July',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'October',
			'November'    : 'November',
			'December'    : 'December',
			'Sunday'      : 'Sunday',
			'Monday'      : 'Monday',
			'Tuesday'     : 'Tuesday',
			'Wednesday'   : 'Wednesday',
			'Thursday'    : 'Thursday',
			'Friday'      : 'Friday',
			'Saturday'    : 'Saturday',
			'Sun'         : 'Sun',
			'Mon'         : 'Mon',
			'Tue'         : 'Tue',
			'Wed'         : 'Wed',
			'Thu'         : 'Thu',
			'Fri'         : 'Fri',
			'Sat'         : 'Sat',

			/******************************** sort variants ********************************/
			'sortname'          : 'by name',
			'sortkind'          : 'by kind',
			'sortsize'          : 'by size',
			'sortdate'          : 'by date',
			'sortFoldersFirst'  : 'Folders first',
			'sortperm'          : 'by permission', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'by group',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'NewFolder',   // added 10.11.2015
			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
			'untitled file'     : 'NewFile.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: File',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Confirmation required',
			'confirmRm'       : 'Are you sure you want to permanently remove items?<br/>This cannot be undone!',
			'confirmRepl'     : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)',
			'confirmRest'     : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Apply to all',
			'name'            : 'Name',
			'size'            : 'Size',
			'perms'           : 'Permissions',
			'modify'          : 'Modified',
			'kind'            : 'Kind',
			'read'            : 'read',
			'write'           : 'write',
			'noaccess'        : 'no access',
			'and'             : 'and',
			'unknown'         : 'unknown',
			'selectall'       : 'Select all items',
			'selectfiles'     : 'Select item(s)',
			'selectffile'     : 'Select first item',
			'selectlfile'     : 'Select last item',
			'viewlist'        : 'List view',
			'viewicons'       : 'Icons view',
			'viewSmall'       : 'Small icons', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Medium icons', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Large icons', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra large icons', // from v2.1.39 added 22.5.2018
			'places'          : 'Places',
			'calc'            : 'Calculate',
			'path'            : 'Path',
			'aliasfor'        : 'Alias for',
			'locked'          : 'Locked',
			'dim'             : 'Dimensions',
			'files'           : 'Files',
			'folders'         : 'Folders',
			'items'           : 'Items',
			'yes'             : 'yes',
			'no'              : 'no',
			'link'            : 'Link',
			'searcresult'     : 'Search results',
			'selected'        : 'selected items',
			'about'           : 'About',
			'shortcuts'       : 'Shortcuts',
			'help'            : 'Help',
			'webfm'           : 'Web file manager',
			'ver'             : 'Version',
			'protocolver'     : 'protocol version',
			'homepage'        : 'Project home',
			'docs'            : 'Documentation',
			'github'          : 'Fork us on GitHub',
			'twitter'         : 'Follow us on Twitter',
			'facebook'        : 'Join us on Facebook',
			'team'            : 'Team',
			'chiefdev'        : 'chief developer',
			'developer'       : 'developer',
			'contributor'     : 'contributor',
			'maintainer'      : 'maintainer',
			'translator'      : 'translator',
			'icons'           : 'Icons',
			'dontforget'      : 'and don\'t forget to take your towel',
			'shortcutsof'     : 'Shortcuts disabled',
			'dropFiles'       : 'Drop files here',
			'or'              : 'or',
			'selectForUpload' : 'Select files',
			'moveFiles'       : 'Move items',
			'copyFiles'       : 'Copy items',
			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Remove from places',
			'aspectRatio'     : 'Aspect ratio',
			'scale'           : 'Scale',
			'width'           : 'Width',
			'height'          : 'Height',
			'resize'          : 'Resize',
			'crop'            : 'Crop',
			'rotate'          : 'Rotate',
			'rotate-cw'       : 'Rotate 90 degrees CW',
			'rotate-ccw'      : 'Rotate 90 degrees CCW',
			'degree'          : '°',
			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
			'protocol'            : 'Protocol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'User', // added 18.04.2012
			'pass'                : 'Password', // added 18.04.2012
			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Owner', // from v2.1 added 20.6.2015
			'group'           : 'Group', // from v2.1 added 20.6.2015
			'other'           : 'Other', // from v2.1 added 20.6.2015
			'execute'         : 'Execute', // from v2.1 added 20.6.2015
			'perm'            : 'Permission', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Folder is empty', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
			'quality'         : 'Quality', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Background color', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'Language', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Toolbar settings', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 lines left.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Rough file size', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Focus on the element of dialog with mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Select', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Action when select file', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invert selection', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch rename', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Number', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Add prefix', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Add suffix', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Selection Info', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Toolbar', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Work Space', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'All', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrations', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Show hidden items', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Hide hidden items', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Type of the Text file', // from v2.1.41 added 7.8.2018
			'add'             : 'Add', // from v2.1.41 added 7.8.2018
			'theme'           : 'Theme', // from v2.1.43 added 19.10.2018
			'default'         : 'Default', // from v2.1.43 added 19.10.2018
			'description'     : 'Description', // from v2.1.43 added 19.10.2018
			'website'         : 'Website', // from v2.1.43 added 19.10.2018
			'author'          : 'Author', // from v2.1.43 added 19.10.2018
			'email'           : 'Email', // from v2.1.43 added 19.10.2018
			'license'         : 'License', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Unknown',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Folder',
			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Broken alias',
			// applications
			'kindApp'         : 'Application',
			'kindPostscript'  : 'Postscript document',
			'kindMsOffice'    : 'Microsoft Office document',
			'kindMsWord'      : 'Microsoft Word document',
			'kindMsExcel'     : 'Microsoft Excel document',
			'kindMsPP'        : 'Microsoft Powerpoint presentation',
			'kindOO'          : 'Open Office document',
			'kindAppFlash'    : 'Flash application',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent file',
			'kind7z'          : '7z archive',
			'kindTAR'         : 'TAR archive',
			'kindGZIP'        : 'GZIP archive',
			'kindBZIP'        : 'BZIP archive',
			'kindXZ'          : 'XZ archive',
			'kindZIP'         : 'ZIP archive',
			'kindRAR'         : 'RAR archive',
			'kindJAR'         : 'Java JAR file',
			'kindTTF'         : 'True Type font',
			'kindOTF'         : 'Open Type font',
			'kindRPM'         : 'RPM package',
			// texts
			'kindText'        : 'Text document',
			'kindTextPlain'   : 'Plain text',
			'kindPHP'         : 'PHP source',
			'kindCSS'         : 'Cascading style sheet',
			'kindHTML'        : 'HTML document',
			'kindJS'          : 'Javascript source',
			'kindRTF'         : 'Rich Text Format',
			'kindC'           : 'C source',
			'kindCHeader'     : 'C header source',
			'kindCPP'         : 'C++ source',
			'kindCPPHeader'   : 'C++ header source',
			'kindShell'       : 'Unix shell script',
			'kindPython'      : 'Python source',
			'kindJava'        : 'Java source',
			'kindRuby'        : 'Ruby source',
			'kindPerl'        : 'Perl script',
			'kindSQL'         : 'SQL source',
			'kindXML'         : 'XML document',
			'kindAWK'         : 'AWK source',
			'kindCSV'         : 'Comma separated values',
			'kindDOCBOOK'     : 'Docbook XML document',
			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
			// images
			'kindImage'       : 'Image',
			'kindBMP'         : 'BMP image',
			'kindJPEG'        : 'JPEG image',
			'kindGIF'         : 'GIF Image',
			'kindPNG'         : 'PNG Image',
			'kindTIFF'        : 'TIFF image',
			'kindTGA'         : 'TGA image',
			'kindPSD'         : 'Adobe Photoshop image',
			'kindXBITMAP'     : 'X bitmap image',
			'kindPXM'         : 'Pixelmator image',
			// media
			'kindAudio'       : 'Audio media',
			'kindAudioMPEG'   : 'MPEG audio',
			'kindAudioMPEG4'  : 'MPEG-4 audio',
			'kindAudioMIDI'   : 'MIDI audio',
			'kindAudioOGG'    : 'Ogg Vorbis audio',
			'kindAudioWAV'    : 'WAV audio',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video media',
			'kindVideoDV'     : 'DV movie',
			'kindVideoMPEG'   : 'MPEG movie',
			'kindVideoMPEG4'  : 'MPEG-4 movie',
			'kindVideoAVI'    : 'AVI movie',
			'kindVideoMOV'    : 'Quick Time movie',
			'kindVideoWM'     : 'Windows Media movie',
			'kindVideoFlash'  : 'Flash movie',
			'kindVideoMKV'    : 'Matroska movie',
			'kindVideoOGG'    : 'Ogg movie'
		}
	};
}));

lib/js/i18n/elfinder.es.js000064400000104714147361034410011253 0ustar00/**
 * Español internacional translation
 * @author Julián Torres <julian.torres@pabernosmatao.com>
 * @author Luis Faura <luis@luisfaura.es>
 * @author Adrià Vilanova <me@avm99963.tk>
 * @author Wilman Marín Duran <fuclo05@hotmail.com>
 * @version 2022-02-28
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.es = {
		translator : 'Julián Torres &lt;julian.torres@pabernosmatao.com&gt;, Luis Faura &lt;luis@luisfaura.es&gt;, Adrià Vilanova &lt;me@avm99963.tk&gt;, Wilman Marín Duran &lt;fuclo05@hotmail.com&gt;',
		language   : 'Español internacional',
		direction  : 'ltr',
		dateFormat : 'M d, Y h:i A', // will show like: Feb 28, 2022 03:38 PM
		fancyDateFormat : '$1 h:i A', // will show like: Hoy 03:38 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220228-153813
		messages   : {
			'getShareText' : 'Cuota',
			'Editor ': 'Editora de código',
			/********************************** errors **********************************/
			'error'                : 'Error',
			'errUnknown'           : 'Error desconocido.',
			'errUnknownCmd'        : 'Comando desconocido.',
			'errJqui'              : 'Configuración no válida de jQuery UI. Deben estar incluidos los componentes selectable, draggable y droppable.',
			'errNode'              : 'elFinder necesita crear elementos DOM.',
			'errURL'               : '¡Configuración no válida de elFinder! La opción URL no está configurada.',
			'errAccess'            : 'Acceso denegado.',
			'errConnect'           : 'No se ha podido conectar con el backend.',
			'errAbort'             : 'Conexión cancelada.',
			'errTimeout'           : 'Conexión cancelada por timeout.',
			'errNotFound'          : 'Backend no encontrado.',
			'errResponse'          : 'Respuesta no válida del backend.',
			'errConf'              : 'Configuración no válida del backend .',
			'errJSON'              : 'El módulo PHP JSON no está instalado.',
			'errNoVolumes'         : 'No hay disponibles volúmenes legibles.',
			'errCmdParams'         : 'Parámetros no válidos para el comando "$1".',
			'errDataNotJSON'       : 'los datos no están en formato JSON.',
			'errDataEmpty'         : 'No hay datos.',
			'errCmdReq'            : 'La petición del backend necesita un nombre de comando.',
			'errOpen'              : 'No se puede abrir "$1".',
			'errNotFolder'         : 'El objeto no es una carpeta.',
			'errNotFile'           : 'El objeto no es un archivo.',
			'errRead'              : 'No se puede leer "$1".',
			'errWrite'             : 'No se puede escribir en "$1".',
			'errPerm'              : 'Permiso denegado.',
			'errLocked'            : '"$1" está bloqueado y no puede ser renombrado, movido o borrado.',
			'errExists'            : 'Ya existe un archivo llamado "$1".',
			'errInvName'           : 'Nombre de archivo no válido.',
			'errInvDirname'        : 'Nombre de carpeta inválido.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Carpeta no encontrada.',
			'errFileNotFound'      : 'Archivo no encontrado.',
			'errTrgFolderNotFound' : 'Carpeta de destino "$1" no encontrada.',
			'errPopup'             : 'El navegador impide abrir nuevas ventanas. Puede activarlo en las opciones del navegador.',
			'errMkdir'             : 'No se puede crear la carpeta "$1".',
			'errMkfile'            : 'No se puede crear el archivo "$1".',
			'errRename'            : 'No se puede renombrar "$1".',
			'errCopyFrom'          : 'No se permite copiar archivos desde el volumen "$1".',
			'errCopyTo'            : 'No se permite copiar archivos al volumen "$1".',
			'errMkOutLink'         : 'No se ha podido crear el enlace fuera del volumen raíz.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Error en el envío.',  // old name - errUploadCommon
			'errUploadFile'        : 'No se ha podido cargar "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'No hay archivos para subir.',
			'errUploadTotalSize'   : 'El tamaño de los datos excede el máximo permitido.', // old name - errMaxSize
			'errUploadFileSize'    : 'El tamaño del archivo excede el máximo permitido.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Tipo de archivo no permitido.',
			'errUploadTransfer'    : 'Error al transferir "$1".',
			'errUploadTemp'        : 'No se ha podido crear el archivo temporal para la subida.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'El objeto "$1" ya existe y no puede ser reemplazado por otro con otro tipo.', // new
			'errReplace'           : 'No se puede reemplazar "$1".',
			'errSave'              : 'No se puede guardar "$1".',
			'errCopy'              : 'No se puede copiar "$1".',
			'errMove'              : 'No se puede mover "$1".',
			'errCopyInItself'      : 'No se puede copiar "$1" en si mismo.',
			'errRm'                : 'No se puede borrar "$1".',
			'errTrash'             : 'No se puede enviar a la papelera.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'No se puede(n) borrar los archivo(s).',
			'errExtract'           : 'No se puede extraer archivos desde "$1".',
			'errArchive'           : 'No se puede crear el archivo.',
			'errArcType'           : 'Tipo de archivo no soportado.',
			'errNoArchive'         : 'El archivo no es de tipo archivo o es de un tipo no soportado.',
			'errCmdNoSupport'      : 'El backend no soporta este comando.',
			'errReplByChild'       : 'La carpeta “$1” no puede ser reemplazada por un elemento contenido en ella.',
			'errArcSymlinks'       : 'Por razones de seguridad no se pueden descomprimir archivos que contengan enlaces simbólicos.', // edited 24.06.2012
			'errArcMaxSize'        : 'El tamaño del archivo excede el máximo permitido.',
			'errResize'            : 'Error al redimensionar "$1".',
			'errResizeDegree'      : 'Grado de rotación inválido.',  // added 7.3.2013
			'errResizeRotate'      : 'Error al rotar la imagen.',  // added 7.3.2013
			'errResizeSize'        : 'Tamaño de imagen inválido.',  // added 7.3.2013
			'errResizeNoChange'    : 'No se puede cambiar el tamaño de la imagen.',  // added 7.3.2013
			'errUsupportType'      : 'Tipo de archivo no soportado.',
			'errNotUTF8Content'    : 'El archivo "$1" no está en formato UTF-8 y no puede ser editado.',  // added 9.11.2011
			'errNetMount'          : 'Fallo al montar "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Protocolo no soportado.',     // added 17.04.2012
			'errNetMountFailed'    : 'Fallo al montar.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Dominio requerido.', // added 18.04.2012
			'errSessionExpires'    : 'La sesión ha expirado por inactividad',
			'errCreatingTempDir'   : 'No se ha podido crear al directorio temporal: "$1"',
			'errFtpDownloadFile'   : 'No se ha podido descargar el archivo desde FTP: "$1"',
			'errFtpUploadFile'     : 'No se ha podido cargar el archivo a FTP: "$1"',
			'errFtpMkdir'          : 'No se ha podido crear el directorio remoto en FTP: "$1"',
			'errArchiveExec'       : 'Se ha producido un error durante el archivo: "$1"',
			'errExtractExec'       : 'Se ha producido un error durante la extracción de archivos: "$1"',
			'errNetUnMount'        : 'Imposible montar', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'No es convertible a UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Prueba con un navegador moderno, si quieres subir la carpeta completa.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Se agotó el tiempo de espera buscando "$1". Los resultados de búsqueda son parciales.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Se requiere autorizar de nuevo.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Número máximo de elementos seleccionables es $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'No se puede restaurar desde la papelera. No se puede identificar el destino de restauración.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor no encontrado para este tipo de archivo.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Error ocurrido en el lado del servidor.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'No es posible vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Hay $1 más errores.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Puede crear carpetas de hasta $1 a la vez.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Crear archivo',
			'cmdback'      : 'Atrás',
			'cmdcopy'      : 'Copiar',
			'cmdcut'       : 'Cortar',
			'cmddownload'  : 'Descargar',
			'cmdduplicate' : 'Duplicar',
			'cmdedit'      : 'Editar archivo',
			'cmdextract'   : 'Extraer elementos del archivo',
			'cmdforward'   : 'Adelante',
			'cmdgetfile'   : 'Seleccionar archivos',
			'cmdhelp'      : 'Acerca de este software',
			'cmdhome'      : 'Inicio',
			'cmdinfo'      : 'Obtener información',
			'cmdmkdir'     : 'Nueva carpeta',
			'cmdmkdirin'   : 'En una nueva carpeta', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nueva archivo',
			'cmdopen'      : 'Abrir',
			'cmdpaste'     : 'Pegar',
			'cmdquicklook' : 'Previsualizar',
			'cmdreload'    : 'Recargar',
			'cmdrename'    : 'Cambiar nombre',
			'cmdrm'        : 'Eliminar',
			'cmdtrash'     : 'Enviar a la papelera', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Restaurar', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Buscar archivos',
			'cmdup'        : 'Ir a la carpeta raíz',
			'cmdupload'    : 'Subir archivos',
			'cmdview'      : 'Ver',
			'cmdresize'    : 'Redimensionar y rotar',
			'cmdsort'      : 'Ordenar',
			'cmdnetmount'  : 'Montar volumen en red', // added 18.04.2012
			'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'A Lugares', // added 28.12.2014
			'cmdchmod'     : 'Cambiar modo', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Abrir una carpeta', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Restablecer ancho de columna', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Pantalla completa', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Mover', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vaciar la carpeta', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Deshacer', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Rehacer', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferencias', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Seleccionar todo', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Seleccionar ninguno', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invertir selección', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Abrir en nueva ventana', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Ocultar (Preferencia)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Cerrar',
			'btnSave'   : 'Guardar',
			'btnRm'     : 'Eliminar',
			'btnApply'  : 'Aplicar',
			'btnCancel' : 'Cancelar',
			'btnNo'     : 'No',
			'btnYes'    : 'Sí',
			'btnMount'  : 'Montar',  // added 18.04.2012
			'btnApprove': 'Ir a $1 y aprobar', // from v2.1 added 26.04.2012
			'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012
			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Aquí',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Volumen',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Todos',       // from v2.1 added 22.5.2015
			'btnMime'   : 'Tipo MIME', // from v2.1 added 22.5.2015
			'btnFileName':'Nombre de archivo',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Guardar y cerrar', // from v2.1 added 12.6.2015
			'btnBackup' : 'Copia de seguridad', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Renombrar',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Renombrar(Todo)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Ant ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Sig ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Guardar como', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Abrir carpeta',
			'ntffile'     : 'Abrir archivo',
			'ntfreload'   : 'Actualizar contenido de la carpeta',
			'ntfmkdir'    : 'Creando directorio',
			'ntfmkfile'   : 'Creando archivos',
			'ntfrm'       : 'Eliminando archivos',
			'ntfcopy'     : 'Copiar archivos',
			'ntfmove'     : 'Mover archivos',
			'ntfprepare'  : 'Preparar copia de archivos',
			'ntfrename'   : 'Renombrar archivos',
			'ntfupload'   : 'Subiendo archivos',
			'ntfdownload' : 'Descargando archivos',
			'ntfsave'     : 'Guardar archivos',
			'ntfarchive'  : 'Creando archivo',
			'ntfextract'  : 'Extrayendo elementos del archivo',
			'ntfsearch'   : 'Buscando archivos',
			'ntfresize'   : 'Redimensionando imágenes',
			'ntfsmth'     : 'Haciendo algo',
			'ntfloadimg'  : 'Cargando imagen',
			'ntfnetmount' : 'Montando volumen en red', // added 18.04.2012
			'ntfnetunmount': 'Desmontando volumen en red', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Adquiriendo tamaño de imagen', // added 20.05.2013
			'ntfreaddir'  : 'Leyendo información de la carpeta', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Obteniendo URL del enlace', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Cambiando el modo de archivo', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Verificando nombre del archivo subido', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Creando un archivo para descargar', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Obteniendo información de la ruta', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Procesando el archivo cargado', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Enviando a la papelera', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Restaurando desde la papelera', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Comprobando carpeta de destino', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Deshaciendo operación previa', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Rehaciendo previo deshacer', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Comprobación de contenidos', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Papelera', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'desconocida',
			'Today'       : 'Hoy',
			'Yesterday'   : 'Ayer',
			'msJan'       : 'Ene',
			'msFeb'       : 'Feb',
			'msMar'       : 'mar',
			'msApr'       : 'Abr',
			'msMay'       : 'May',
			'msJun'       : 'jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Ago',
			'msSep'       : 'sep',
			'msOct'       : 'Oct',
			'msNov'       : 'Nov',
			'msDec'       : 'Dic',
			'January'     : 'Enero',
			'February'    : 'Febrero',
			'March'       : 'Marzo',
			'April'       : 'Abril',
			'May'         : 'Mayo',
			'June'        : 'Junio',
			'July'        : 'Julio',
			'August'      : 'Agosto',
			'September'   : 'Septiembre',
			'October'     : 'Octubre',
			'November'    : 'Noviembre',
			'December'    : 'Diciembre',
			'Sunday'      : 'Domingo',
			'Monday'      : 'Lunes',
			'Tuesday'     : 'Martes',
			'Wednesday'   : 'Miércoles',
			'Thursday'    : 'Jueves',
			'Friday'      : 'Viernes',
			'Saturday'    : 'Sábado',
			'Sun'         : 'Dom',
			'Mon'         : 'Lun',
			'Tue'         : 'Mar',
			'Wed'         : 'Mie',
			'Thu'         : 'Jue',
			'Fri'         : 'Vie',
			'Sat'         : 'Sab',

			/******************************** sort variants ********************************/
			'sortname'          : 'por nombre',
			'sortkind'          : 'por tipo',
			'sortsize'          : 'por tamaño',
			'sortdate'          : 'por fecha',
			'sortFoldersFirst'  : 'Las carpetas primero',
			'sortperm'          : 'por permiso', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'por modo',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'por propietario',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'por grupo',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'También árbol de directorios',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NuevoArchivo.txt', // added 10.11.2015
			'untitled folder'   : 'NuevaCarpeta',   // added 10.11.2015
			'Archive'           : 'NuevoArchivo',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Archivo nuevo.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Archivar',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Se necesita confirmación',
			'confirmRm'       : '¿Está seguro de querer eliminar archivos?<br/>¡Esto no se puede deshacer!',
			'confirmRepl'     : '¿Reemplazar el antiguo archivo con el nuevo?',
			'confirmRest'     : '¿Reemplazar elemento existente con el elemento en la papelera?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'No está en UTF-8<br/>Convertir a UTF-8?<br/>Los contenidos se guardarán en UTF-8 tras la conversión.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Codificación de caracteres de este archivo no pudo ser detectada. Es necesario convertir temporalmente a UTF-8 para editarlo. <br/> Por favor, seleccione la codificación de caracteres de este archivo.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Ha sido modificado.<br/>Perderás los cambios si no los guardas.', // from v2.1 added 15.7.2015
			'confirmTrash'    : '¿Estás seguro que quieres mover los elementos a la papelera?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : '¿Estás segura de que quieres mover elementos a "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Aplicar a todo',
			'name'            : 'Nombre',
			'size'            : 'Tamaño',
			'perms'           : 'Permisos',
			'modify'          : 'Modificado',
			'kind'            : 'Tipo',
			'read'            : 'lectura',
			'write'           : 'escritura',
			'noaccess'        : 'sin acceso',
			'and'             : 'y',
			'unknown'         : 'desconocido',
			'selectall'       : 'Seleccionar todos los archivos',
			'selectfiles'     : 'Seleccionar archivo(s)',
			'selectffile'     : 'Seleccionar primer archivo',
			'selectlfile'     : 'Seleccionar último archivo',
			'viewlist'        : 'ver como lista',
			'viewicons'       : 'Ver como iconos',
			'viewSmall'       : 'Iconos pequeños', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Iconos medianos', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Iconos grandes', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Iconos extra grandes', // from v2.1.39 added 22.5.2018
			'places'          : 'Lugares',
			'calc'            : 'Calcular',
			'path'            : 'Ruta',
			'aliasfor'        : 'Alias para',
			'locked'          : 'Bloqueado',
			'dim'             : 'Dimensiones',
			'files'           : 'Archivos',
			'folders'         : 'Carpetas',
			'items'           : 'Elementos',
			'yes'             : 'sí',
			'no'              : 'no',
			'link'            : 'Enlace',
			'searcresult'     : 'Resultados de la búsqueda',
			'selected'        : 'elementos seleccionados',
			'about'           : 'Acerca',
			'shortcuts'       : 'Accesos directos',
			'help'            : 'Ayuda',
			'webfm'           : 'Administrador de archivos web',
			'ver'             : 'Versión',
			'protocolver'     : 'versión del protocolo',
			'homepage'        : 'Inicio',
			'docs'            : 'Documentación',
			'github'          : 'Bifúrcanos en Github',
			'twitter'         : 'Síguenos en Twitter',
			'facebook'        : 'Únete a nosotros en Facebook',
			'team'            : 'Equipo',
			'chiefdev'        : 'desarrollador jefe',
			'developer'       : 'desarrollador',
			'contributor'     : 'contribuyente',
			'maintainer'      : 'mantenedor',
			'translator'      : 'traductor',
			'icons'           : 'Iconos',
			'dontforget'      : 'y no olvide traer su toalla',
			'shortcutsof'     : 'Accesos directos desactivados',
			'dropFiles'       : 'Arrastre archivos aquí',
			'or'              : 'o',
			'selectForUpload' : 'Seleccione archivos para subir',
			'moveFiles'       : 'Mover archivos',
			'copyFiles'       : 'Copiar archivos',
			'restoreFiles'    : 'Restaurar elementos', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Eliminar en sus ubicaciones',
			'aspectRatio'     : 'Relación de aspecto',
			'scale'           : 'Escala',
			'width'           : 'Ancho',
			'height'          : 'Alto',
			'resize'          : 'Redimensionar',
			'crop'            : 'Recortar',
			'rotate'          : 'Rotar',
			'rotate-cw'       : 'Rotar 90 grados en sentido horario',
			'rotate-ccw'      : 'Rotar 90 grados en sentido anti-horario',
			'degree'          : '°',
			'netMountDialogTitle' : 'Montar volumen en red', // added 18.04.2012
			'protocol'            : 'Protocolo', // added 18.04.2012
			'host'                : 'Dominio', // added 18.04.2012
			'port'                : 'Puerto', // added 18.04.2012
			'user'                : 'Usuario', // added 18.04.2012
			'pass'                : 'Contraseña', // added 18.04.2012
			'confirmUnmount'      : '¿Desmontar $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Arrastra o pega archivos del navegador', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Arrastra o pega enlaces URL aquí', // from v2.1 added 07.04.2014
			'encoding'        : 'Codificando', // from v2.1 added 19.12.2014
			'locale'          : 'Local',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Destino: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Buscar entrada por tipo MIME', // from v2.1 added 22.5.2015
			'owner'           : 'Propietario', // from v2.1 added 20.6.2015
			'group'           : 'Grupo', // from v2.1 added 20.6.2015
			'other'           : 'Otro', // from v2.1 added 20.6.2015
			'execute'         : 'Ejecutar', // from v2.1 added 20.6.2015
			'perm'            : 'Permiso', // from v2.1 added 20.6.2015
			'mode'            : 'Modo', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'La carpeta está vacía', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'La carpeta está vacía\\A Arrastrar para añadir elementos', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'La carpeta está vacía\\A Presiona durante un rato para añadir elementos', // from v2.1.6 added 30.12.2015
			'quality'         : 'Calidad', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Sincronización automática',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Mover arriba',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Obtener enlace', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Elementos seleccionados ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID carpeta', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Permitir acceso sin conexión', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Para volver a autenticarse', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Cargando ahora...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Abrir múltiples archivos', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Estás tratando de abrir los $1 archivos. ¿Estás seguro que quieres abrir en el navegador?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'No se encontraron resultados en el objetivo de búsqueda.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Está editando un archivo.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Has seleccionado $1 elementos.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Posees $1 elementos en el portapapeles.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'La búsqueda incremental solo se realiza desde la vista actual.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Reinstanciar', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 completo', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Menú contextual', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Cambio de página', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Raíces del volumen', // from v2.1.16 added 16.9.2016
			'reset'           : 'Reiniciar', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Color de fondo', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Selector de color', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Cuadricula', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Habilitado', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Deshabilitado', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Los resultados de la búsqueda están vacíos en la vista actual. \\ APulse [Intro] para expandir el objetivo de búsqueda.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'La primera letra de los resultados de búsqueda está vacía en la vista actual.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Etiqueta de texto', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'Falta $1 minuto(s)', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Abrir nuevamente con la codificación seleccionada', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Guardar con la codificación seleccionada', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Seleccionar carpeta', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Primera letra de búsqueda', // from v2.1.23 added 24.3.2017
			'presets'         : 'Preestablecidos', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Son demasiados elementos, por lo que no puede enviarse a la papelera.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Área de texto', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'No hay elementos en la carpeta "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferencia', // from v2.1.26 added 28.6.2017
			'language'        : 'Lenguaje', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializa la configuración guardada en este navegador', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Configuración de la barra de herramientas', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '...falta $1 caracteres.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... Quedan $1 líneas.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Suma', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Tamaño de archivo aproximado', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Centrado en el elemento de diálogo con \'mouseover\'',  // from v2.1.30 added 2.11.2017
			'select'          : 'Seleccionar', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Acción cuando selecciona un archivo', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Abrir con el editor utilizado la última vez', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invertir selección', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '¿Estás seguro que quieres renombrar $1 elementos seleccionados como $2?<br/>¡Esto no puede ser deshecho!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Cambiar el nombre del lote', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Número', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Añadir prefijo', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Añadir sufijo', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Cambiar extensión', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Configuración de columnas (Vista de lista)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Todos los cambios se reflejarán inmediatamente en el archivo.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Cualquier cambio no se reflejará hasta que no se desmonte este volumen.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Los siguientes volúmenes montados en este volumen también se desmontaron. ¿Estás seguro de desmontarlo?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Información de la selección', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmos para mostrar el hash de archivos', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Elementos de información (Panel de información de selección)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Presiona de nuevo para salir.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Barra de herramienta', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Espacio de trabajo', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Diálogo', // from v2.1.38 added 4.4.2018
			'all'             : 'Todo', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Tamaño de icono (vista de iconos)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Abra la ventana del editor maximizado', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Debido a que la conversión por API no está disponible actualmente, realice la conversión en el sitio web.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Después de la conversión, debe cargar la URL del elemento o un archivo descargado para guardar el archivo convertido.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Convertir en el sitio de $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'integraciones', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Este elFinder tiene integrados los siguientes servicios externos. Consulte los términos de uso, la política de privacidad, etc. antes de usarlo.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Mostrar elementos ocultos', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Ocultar elementos ocultos', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Mostrar/Ocultar elementos ocultos', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Tipos de archivos para habilitar con "Nuevo archivo"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tipo de archivo de texto', // from v2.1.41 added 7.8.2018
			'add'             : 'Agregar', // from v2.1.41 added 7.8.2018
			'theme'           : 'Tema', // from v2.1.43 added 19.10.2018
			'default'         : 'Por defecto', // from v2.1.43 added 19.10.2018
			'description'     : 'Descripción', // from v2.1.43 added 19.10.2018
			'website'         : 'Sitio web', // from v2.1.43 added 19.10.2018
			'author'          : 'Autora', // from v2.1.43 added 19.10.2018
			'email'           : 'Correo electrónico', // from v2.1.43 added 19.10.2018
			'license'         : 'Licencia', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Este elemento no se puede guardar. Para evitar perder las ediciones, debe exportarlas a su PC.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Haga doble clic en el archivo para seleccionarlo.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Usar el modo de pantalla completa', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Desconocido',
			'kindRoot'        : 'Raíces del volumen', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Carpeta',
			'kindSelects'     : 'Selecciones', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Alias',
			'kindAliasBroken' : 'Alias roto',
			// applications
			'kindApp'         : 'Aplicación',
			'kindPostscript'  : 'Documento Postscript',
			'kindMsOffice'    : 'Documento Microsoft Office',
			'kindMsWord'      : 'Documento Microsoft Word',
			'kindMsExcel'     : 'Documento Microsoft Excel',
			'kindMsPP'        : 'Presentación Microsoft Powerpoint',
			'kindOO'          : 'Documento Open Office',
			'kindAppFlash'    : 'Aplicación Flash',
			'kindPDF'         : 'Documento PDF',
			'kindTorrent'     : 'Archivo Bittorrent',
			'kind7z'          : 'Archivo 7z',
			'kindTAR'         : 'Archivo TAR',
			'kindGZIP'        : 'Archivo GZIP',
			'kindBZIP'        : 'Archivo BZIP',
			'kindXZ'          : 'Archivo XZ',
			'kindZIP'         : 'Archivo ZIP',
			'kindRAR'         : 'Archivo RAR',
			'kindJAR'         : 'Archivo Java JAR',
			'kindTTF'         : 'Fuente True Type',
			'kindOTF'         : 'Fuente Open Type',
			'kindRPM'         : 'Paquete RPM',
			// texts
			'kindText'        : 'Documento de texto',
			'kindTextPlain'   : 'Texto plano',
			'kindPHP'         : 'Código PHP',
			'kindCSS'         : 'Hoja de estilos CSS',
			'kindHTML'        : 'Documento HTML',
			'kindJS'          : 'Código Javascript',
			'kindRTF'         : 'Documento RTF',
			'kindC'           : 'Código C',
			'kindCHeader'     : 'Código C cabeceras',
			'kindCPP'         : 'Código C++',
			'kindCPPHeader'   : 'Código C++ cabeceras',
			'kindShell'       : 'Script de terminal de Unix',
			'kindPython'      : 'Código Python',
			'kindJava'        : 'Código Java',
			'kindRuby'        : 'Código Ruby',
			'kindPerl'        : 'Código Perl',
			'kindSQL'         : 'Código QL',
			'kindXML'         : 'Documento XML',
			'kindAWK'         : 'Código AWK',
			'kindCSV'         : 'Documento CSV (valores separados por comas)',
			'kindDOCBOOK'     : 'Documento Docbook XML',
			'kindMarkdown'    : 'Texto Markdown', // added 20.7.2015
			// images
			'kindImage'       : 'Imagen',
			'kindBMP'         : 'Imagen BMP',
			'kindJPEG'        : 'Imagen JPEG',
			'kindGIF'         : 'Imagen GIF',
			'kindPNG'         : 'Imagen PNG',
			'kindTIFF'        : 'Imagen TIFF',
			'kindTGA'         : 'Imagen TGA',
			'kindPSD'         : 'Imagen Adobe Photoshop',
			'kindXBITMAP'     : 'Imagen X bitmap',
			'kindPXM'         : 'Imagen Pixelmator',
			// media
			'kindAudio'       : 'Archivo de audio',
			'kindAudioMPEG'   : 'Audio MPEG',
			'kindAudioMPEG4'  : 'Audio MPEG-4',
			'kindAudioMIDI'   : 'Audio MIDI',
			'kindAudioOGG'    : 'Audio Ogg Vorbis',
			'kindAudioWAV'    : 'Audio WAV',
			'AudioPlaylist'   : 'Lista de reproducción MP3',
			'kindVideo'       : 'Archivo de vídeo',
			'kindVideoDV'     : 'Película DV',
			'kindVideoMPEG'   : 'Película MPEG',
			'kindVideoMPEG4'  : 'Película MPEG-4',
			'kindVideoAVI'    : 'Película AVI',
			'kindVideoMOV'    : 'Película Quick Time',
			'kindVideoWM'     : 'Película Windows Media',
			'kindVideoFlash'  : 'Película Flash',
			'kindVideoMKV'    : 'Película Matroska MKV',
			'kindVideoOGG'    : 'Película Ogg'
		}
	};
}));lib/js/i18n/elfinder.si.js000064400000146476147361034410011272 0ustar00/**
 * Sinhala translation
 * @author CodeLyokoXtEAM <XcodeLyokoTEAM@gmail.com>
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.si = {
		translator : 'CodeLyokoXtEAM &lt;XcodeLyokoTEAM@gmail.com&gt;',
		language   : 'Sinhala',
		direction  : 'ltr',
		dateFormat : 'Y.m.d h:i A', // will show like: 2022.03.03 01:13 PM
		fancyDateFormat : '$1 h:i A', // will show like: අද 01:13 PM
		nonameDateFormat : 'Ymd-His', // noname upload will show like: 20220303-131342
		messages   : {
			'getShareText' : 'බෙදාගන්න',
			'Editor ': 'කේත සංස්කාරකය',

			/********************************** errors **********************************/
			'error'                : 'දෝෂයකි.',
			'errUnknown'           : 'නොදන්නා දෝෂයකි.',
			'errUnknownCmd'        : 'නොදන්නා විධානයකි.',
			'errJqui'              : 'වලංගු නොවන jQuery UI සැකැස්මකි. තේරිය හැකි, ඇදගෙන යාම සහ ඇද දැමිය හැකි කොටස් ඇතුළත් කළ යුතුය.',
			'errNode'              : 'ElFinder විසින් DOM Element නිර්මාණය කිරීමට අවශ්‍යව අැත.',
			'errURL'               : 'වලංගු නොවන elFinder සැකැස්මකි! URL විකල්පය සැකසා නැත.',
			'errAccess'            : 'භාවිතය අත්හිටුවා ඇත.',
			'errConnect'           : 'පසුබිම(Backend) වෙත සම්බන්ධ වීමට නොහැකිය.',
			'errAbort'             : 'සම්බන්ධතාවය වසාදමා ඇත.',
			'errTimeout'           : 'සම්බන්ධතා කල් ඉකුත්වී ඇත.',
			'errNotFound'          : 'පසුබිම(Backend) සොයාගත නොහැකි විය.',
			'errResponse'          : 'වලංගු නොවන පසුබිම(Backend) ප්‍රතිචාරය.',
			'errConf'              : 'වලංගු නොවන Backend සැකැස්මකි.',
			'errJSON'              : 'PHP JSON මොඩියුලය ස්ථාපනය කර නැත.',
			'errNoVolumes'         : 'කියවිය හැකි එ්කක(volumes) නොමැත.',
			'errCmdParams'         : '"$1" නම් විධානය වලංගු නොවන පරාමිතියකි.',
			'errDataNotJSON'       : 'JSON දත්ත නොවේ.',
			'errDataEmpty'         : 'හිස් දත්තයකි.',
			'errCmdReq'            : 'Backend සඳහා ඉල්ලන ලද විධානයේ නම අවශ්‍ය වේ.',
			'errOpen'              : '"$1" විවෘත කළ නොහැක.',
			'errNotFolder'         : 'අායිත්තම(object) ෆොල්ඩරයක් නොවේ.',
			'errNotFile'           : 'අායිත්තම(object) ගොනුවක් නොවේ.',
			'errRead'              : '"$1" කියවීමට නොහැක.',
			'errWrite'             : '"$1" තුල ලිවීමට නොහැකිය.',
			'errPerm'              : 'අවසරය නොමැත.',
			'errLocked'            : '"$1" අගුළු දමා ඇති අතර එය නැවත නම් කිරීම, සම්පූර්ණයෙන් විස්ථාපනය කිරීම හෝ ඉවත් කිරීම කළ නොහැක.',
			'errExists'            : '"$1" නම් ගොනුව දැනටමත් පවතී.',
			'errInvName'           : 'ගොනු නම වලංගු නොවේ.',
			'errInvDirname'        : 'ෆෝල්ඩර් නම වලංගු නොවේ.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'ෆෝල්ඩරය හමු නොවිණි.',
			'errFileNotFound'      : 'ගොනුව හමු නොවිණි.',
			'errTrgFolderNotFound' : 'ඉලක්කගත ෆෝල්ඩරය "$1" හමු නොවිනි.',
			'errPopup'             : 'බ්‍රවුසරය උත්පතන කවුළුව විවෘත කිරීම වළක්වයි. ගොනු විවෘත කිරීම සඳහා බ්‍රවුසරයේ විකල්ප තුළ එය සක්රිය කරන්න.',
			'errMkdir'             : '"$1" ෆෝල්ඩරය සෑදීමට නොහැකිය.',
			'errMkfile'            : '"$1" ගොනුව සෑදිය නොහැක.',
			'errRename'            : '"$1" නැවත නම් කිරීමට නොහැකි විය.',
			'errCopyFrom'          : '"$1" volume යෙන් ගොනු පිටපත් කිරීම තහනම්ය.',
			'errCopyTo'            : '"$1" volume යට ගොනු පිටපත් කිරීම තහනම්ය.',
			'errMkOutLink'         : 'volume root යෙන් පිටතට සබැඳිය(link) නිර්මාණය කිරීමට නොහැකි විය.', // from v2.1 added 03.10.2015
			'errUpload'            : 'උඩුගත(upload) කිරීමේ දෝෂයකි.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" උඩුගත(upload) කිරීමට නොහැකි විය.', // old name - errUpload
			'errUploadNoFiles'     : 'උඩුගත(upload) කිරීම සඳහා ගොනු කිසිවක් සොයාගත නොහැකි විය.',
			'errUploadTotalSize'   : 'දත්ත අවසර දී අැති උපරිම ප්‍රමාණය ඉක්මවා ඇත.', // old name - errMaxSize
			'errUploadFileSize'    : 'ගොනු අවසර දී අැති උපරිම ප්‍රමාණය ඉක්මවා ඇත.', //  old name - errFileMaxSize
			'errUploadMime'        : 'ගොනු වර්ගයට අවසර නැත.',
			'errUploadTransfer'    : '"$1" ව මාරු කිරීමේ දෝෂයකි.',
			'errUploadTemp'        : 'upload කිරීම සඳහා තාවකාලික ගොනුව සෑදිය නොහැක.', // from v2.1 added 26.09.2015
			'errNotReplace'        : '"$1" අායිත්තම(object) දැනටමත් මෙම ස්ථානයේ පවතී, වෙනත් වර්ගයකිනි ප්‍රතිස්ථාපනය කළ නොහැක.', // new
			'errReplace'           : '"$1" ප්‍රතිස්ථාපනය කළ නොහැක.',
			'errSave'              : '"$1" සුරැකීමට නොහැක.',
			'errCopy'              : '"$1" පිටපත් කිරීමට නොහැක.',
			'errMove'              : '"$1" සම්පූර්ණයෙන් විස්ථාපනය කිරීමට නොහැක.',
			'errCopyInItself'      : '"$1" තුලට පිටපත් කිරීමට නොහැක.',
			'errRm'                : '"$1" ඉවත් කිරීමට නොහැකි විය.',
			'errTrash'             : 'කුණු-කූඩය තුලට දැමීමට නොහැක.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'මූලාශ්‍රය ගොනු(ව) ඉවත් කළ නොහැක.',
			'errExtract'           : '"$1" වෙතින් ගොනු දිග හැරීමට නොහැක.',
			'errArchive'           : 'සංරක්ෂිතය සෑදීමට නොහැකි විය.',
			'errArcType'           : 'නොගැලපෙන සංරක්ෂණ වර්ගයකි.',
			'errNoArchive'         : 'ගොනුව නොගැලපෙන සංරක්ෂණ වර්ගයක් හෝ සංරක්ෂිතයක් නොවේ.',
			'errCmdNoSupport'      : 'පසුබිම(Backend) මෙම විධානය නොදනී.',
			'errReplByChild'       : '"$1" ෆෝල්ඩරය එහිම අඩංගු අයිතමයක් මගින් ප්‍රතිස්ථාපනය කළ නොහැක.',
			'errArcSymlinks'       : 'ආරක්ෂිත හේතුව නිසා අනුමත නොකෙරෙන සබැඳි සම්බන්දතා හෝ ලිපිගොනු නම් අඩංගු බැවින් සංරක්ෂිතය දිග හැරීම කිරීමට ඉඩ නොදෙන.', // edited 24.06.2012
			'errArcMaxSize'        : 'සංරක්ෂිතය ලිපිගොනු උපරිම ප්‍රමාණය ඉක්මවා ඇත.',
			'errResize'            : 'ප්‍රතිප්‍රමාණය කිරීමට නොහැකි විය.',
			'errResizeDegree'      : 'වලංගු නොවන භ්‍රමණ කෝණයකි.',  // added 7.3.2013
			'errResizeRotate'      : 'රූපය භ්‍රමණය කිරීමට නොහැකි විය.',  // added 7.3.2013
			'errResizeSize'        : 'රූපයේ ප්‍රමාණය වලංගු නොවේ.',  // added 7.3.2013
			'errResizeNoChange'    : 'රූපයේ ප්‍රමාණය වෙනස් නොවුණි.',  // added 7.3.2013
			'errUsupportType'      : 'නොගැලපෙන ගොනු වර්ගයකි.',
			'errNotUTF8Content'    : '"$1" ගොනුව UTF-8 හි නොමැති අතර සංස්කරණය කළ නොහැක.',  // added 9.11.2011
			'errNetMount'          : '"$1" සවි(mount) කිරීමට නොහැක.', // added 17.04.2012
			'errNetMountNoDriver'  : 'ප්‍රොටොකෝලය(protocol) නොගැලපේ.',     // added 17.04.2012
			'errNetMountFailed'    : 'සවි කිරීම(mount කිරීම) අසාර්ථක විය.',         // added 17.04.2012
			'errNetMountHostReq'   : 'ධාරකය(Host) අවශ්‍ය වේ.', // added 18.04.2012
			'errSessionExpires'    : 'ඔබේ අක්‍රියතාව හේතුවෙන් සැසිය(session) කල් ඉකුත් වී ඇත.',
			'errCreatingTempDir'   : 'තාවකාලික ඩිරෙක්ටරයක්(directory) ​​සෑදිය නොහැක: "$1"',
			'errFtpDownloadFile'   : 'FTP වලින් ගොනුව බාගත(download) කිරීමට නොහැකි විය: "$1"',
			'errFtpUploadFile'     : 'ගොනුව FTP වෙත උඩුගත(upload) කිරීමට නොහැකි විය: "$1"',
			'errFtpMkdir'          : 'FTP මත දුරස්ථ නාමාවලියක්(remote directory) නිර්මාණය කිරීමට නොහැකි විය: "$1"',
			'errArchiveExec'       : 'ගොනු සංරක්ෂණය(archiving) කිරීමේදී දෝෂයක් ඇතිවිය: "$1"',
			'errExtractExec'       : 'ගොනු දිගහැරීමේදී(extracting) දෝෂයක් ඇතිවිය: "$1"',
			'errNetUnMount'        : 'විසන්ධි කිරීමට(unmount) නොහැක.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8 වෙත පරිවර්තනය කළ නොහැක.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'ඔබ ෆෝල්ඩරය උඩුගත(upload) කිරීමට කැමති නම් නවීන බ්‍රවුසරයකින් උත්සාහ කරන්න.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" සෙවීම කල් ඉකුත්වී ඇත. සෙවුම් ප්‍රතිඵල අර්ධ වශයෙන් දිස්වේ.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'නැවත බලය(Re-authorization) ලබා දීම අවශ්‍ය වේ.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'තෝරා ගත හැකි උපරිම අයිතම සංඛ්‍යාව $1 ක් වේ.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'කුණු කූඩයෙන් නැවත ලබා ගත නොහැක. යළි පිහිටුවීමේ ගමනාන්තය(restore destination) හඳුනාගත නොහැක.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'මෙම ගොනු වර්ගයේ සංස්කාරකය හමු නොවිණි.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'සේවාදායකයේ පැත්තෙන්(server side) දෝශයක් ඇතිවිය.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '"$1" ෆෝල්ඩරය හිස් කිරීමට නොහැක.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'තවත් $1 දෝෂ ඇත.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'ඔබට එක් වරකට $1 දක්වා ෆෝල්ඩර සෑදිය හැක.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'සංරක්ෂිතය(archive) නිර්මාණය කරන්න',
			'cmdback'      : 'ආපසු',
			'cmdcopy'      : 'පිටපත් කරන්න',
			'cmdcut'       : 'මුළුමනින්ම පිටපත් කරන්න(Cut)',
			'cmddownload'  : 'බාගත කරන්න(Download)',
			'cmdduplicate' : 'අනුපිටපත් කරන්න(Duplicate)',
			'cmdedit'      : 'ගොනුව සංස්කරණය කරන්න',
			'cmdextract'   : 'සංරක්ෂිතයේ ගොනු දිගහරින්න(Extract)',
			'cmdforward'   : 'ඉදිරියට',
			'cmdgetfile'   : 'ගොනු තෝරන්න',
			'cmdhelp'      : 'මෙම මෘදුකාංගය පිළිබඳව',
			'cmdhome'      : 'නිවහන(Home)',
			'cmdinfo'      : 'තොරතුරු ලබාගන්න',
			'cmdmkdir'     : 'අළුත් ෆෝල්ඩරයක්',
			'cmdmkdirin'   : 'අළුත් ෆෝල්ඩරයක් තුළට', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'නව ගොනුවක්',
			'cmdopen'      : 'විවෘත කරන්න',
			'cmdpaste'     : 'දමන්න(Paste)',
			'cmdquicklook' : 'පූර්ව දර්ශනයක්(Preview)',
			'cmdreload'    : 'නැවත අළුත් කරන්න(Reload)',
			'cmdrename'    : 'නම වෙනස් කරන්න',
			'cmdrm'        : 'මකන්න',
			'cmdtrash'     : 'කුණු කූඩයට දමන්න', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'යළි පිහිටුවන්න(Restore)', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'ගොනු සොයන්න',
			'cmdup'        : 'ප්‍ර්‍රධාන නාමාවලිය(parent directory) වෙත යන්න',
			'cmdupload'    : 'ගොනු උඩුගත(Upload) කරන්න',
			'cmdview'      : 'දර්ශනය(View)',
			'cmdresize'    : 'ප්‍රථිප්‍රමාණය සහ භ්‍රමණය',
			'cmdsort'      : 'වර්ගීකරණය කරන්න',
			'cmdnetmount'  : 'ජාල එ්කකයක් සවි කරන්න(Mount network volume)', // added 18.04.2012
			'cmdnetunmount': 'ගලවන්න(Unmount)', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'පහසු ස්ථානයට(To Places)', // added 28.12.2014
			'cmdchmod'     : 'ක්‍රමය වෙනස් කරන්න', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'ෆෝල්ඩරය විවෘත කරන්න', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'නැවත තීරු පළල පිහිටුවන්න', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'පුළුල් තිරය', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'මාරු කරන්න(Move)', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'ෆෝල්ඩරය හිස් කරන්න', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'නිෂ්ප්‍රභ කරන්න', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'නැවත කරන්න', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'අභිමතයන් (Preferences)', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'සියල්ල තෝරන්න', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'කිසිවක් තෝරන්න එපා', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'විරුද්ධ අාකාරයට තෝරන්න', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'නව කවුළුවක විවෘත කරන්න', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'සඟවන්න (මනාපය)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'වසන්න',
			'btnSave'   : 'සුරකින්න',
			'btnRm'     : 'ඉවත් කරන්න',
			'btnApply'  : 'යොදන්න(Apply)',
			'btnCancel' : 'අවලංගු කරන්න',
			'btnNo'     : 'නැත',
			'btnYes'    : 'ඔව්',
			'btnMount'  : 'සවිකිරීම(Mount)',  // added 18.04.2012
			'btnApprove': 'කරුණාකර $1 අනුමත කරන්න', // from v2.1 added 26.04.2012
			'btnUnmount': 'ගලවන්න(Unmount)', // from v2.1 added 30.04.2012
			'btnConv'   : 'පරිවර්තනය කරන්න', // from v2.1 added 08.04.2014
			'btnCwd'    : 'මෙතන',      // from v2.1 added 22.5.2015
			'btnVolume' : 'එ්කකය(Volume)',    // from v2.1 added 22.5.2015
			'btnAll'    : 'සියල්ල',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME වර්ගය', // from v2.1 added 22.5.2015
			'btnFileName':'ගොනුවේ නම',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'සුරකින්න සහ වසන්න', // from v2.1 added 12.6.2015
			'btnBackup' : 'උපස්ථ(Backup) කරන්න', // fromv2.1 added 28.11.2015
			'btnRename'    : 'නම වෙනස් කරන්න',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'නම වෙනස් කරන්න(සියල්ල)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'පෙර ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'ඊළඟ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'වෙනත් නමකින් සුරකිමින්(Save As)', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'ෆෝල්ඩරය විවෘත කරමින්',
			'ntffile'     : 'ගොනුව විවෘත කරමින්',
			'ntfreload'   : 'ෆෝල්ඩර් අන්තර්ගතය නැවත අළුත් කරමින්(Reloading)',
			'ntfmkdir'    : 'ෆෝල්ඩරයක් නිර්මාණය කරමින්',
			'ntfmkfile'   : 'ගොනුව නිර්මාණය කරමින්',
			'ntfrm'       : 'අයිතමයන් මකමින්',
			'ntfcopy'     : 'අයිතමයන් පිටපත් කරමින්',
			'ntfmove'     : 'අයිතමයන් සම්පූර්ණයෙන් විස්ථාපනය කරමින්',
			'ntfprepare'  : 'පවතින අයිතම පිරික්සමින්',
			'ntfrename'   : 'ගොනු නැවත නම් කරමින්',
			'ntfupload'   : 'ගොනු උඩුගත(uploading) කරමින්',
			'ntfdownload' : 'ගොනු බාගත(downloading) කරමින්',
			'ntfsave'     : 'ගොනු සුරකිමින්',
			'ntfarchive'  : 'සංරක්ෂණය(archive) සාදමින්',
			'ntfextract'  : 'සංරක්ෂණයෙන්(archive) ගොනු දිගහරිමින්(Extracting)',
			'ntfsearch'   : 'ගොනු සොයමින්',
			'ntfresize'   : 'රූප ප්‍රමාණය වෙනස් කරමින්',
			'ntfsmth'     : 'දෙයක් කරමින්',
			'ntfloadimg'  : 'පින්තූරය පූරණය කරමින්(Loading)',
			'ntfnetmount' : 'ජාල එ්කකයක් සවිකරමින්(Mounting network volume)', // added 18.04.2012
			'ntfnetunmount': 'ජාල එ්කකයක් ගලවමින්(Unmounting network volume)', // from v2.1 added 30.04.2012
			'ntfdim'      : 'පිංතූරයේ මානය(dimension) ලබාගනිමින්', // added 20.05.2013
			'ntfreaddir'  : 'ෆෝල්ඩරයේ තොරතුරු කියවමින්', // from v2.1 added 01.07.2013
			'ntfurl'      : 'සබැඳියේ URL ලබා ගැනීම', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'ගොනු ආකරය වෙනස් කරමින්', // from v2.1 added 20.6.2015
			'ntfpreupload': 'උඩුගත(upload) කරන ලද ගොනු නාමය සත්‍යාපනය කරමින්(Verifying)', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'බාගත කරගැනීම(download) සඳහා ගොනුවක් නිර්මාණය කරමින්', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'මාර්ග(path) තොරතුරු ලබා ගනිමින්', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'උඩුගත කරන ලද(uploaded) ගොනුව සකසමින්', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'කුණු කූඩයට දමමින්', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'කුණු කූඩයට දැමීම යළි පිහිටුවමින්(Doing restore)', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'ගමනාන්ත(destination) ෆෝල්ඩරය පරීක්ෂා කරමින්', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'පෙර මෙහෙයුම(operation) ඉවත් කරමින්', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'පෙර ආපසු හැරවීම යළි සැකසමින්', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'අන්තර්ගතය පරීක්ෂා කිරීම', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'කුණු කූඩය', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'නොදනී',
			'Today'       : 'අද',
			'Yesterday'   : 'ඊයේ',
			'msJan'       : 'ජනවා.',
			'msFeb'       : 'පෙබ.',
			'msMar'       : 'මාර්.',
			'msApr'       : 'අප්‍රේ.',
			'msMay'       : 'මැයි',
			'msJun'       : 'ජූනි',
			'msJul'       : 'ජුලි',
			'msAug'       : 'අගෝ.',
			'msSep'       : 'සැප්.',
			'msOct'       : 'ඔක්තෝ.',
			'msNov'       : 'නොවැ.',
			'msDec'       : 'දෙසැ.',
			'January'     : 'ජනවාරි',
			'February'    : 'පෙබරවාරි',
			'March'       : 'මාර්තු',
			'April'       : 'අප්‍රේල්',
			'May'         : 'මැයි',
			'June'        : 'ජූනි',
			'July'        : 'ජුලි',
			'August'      : 'අගෝස්තු',
			'September'   : 'සැප්තැම්බර්',
			'October'     : 'ඔක්තෝම්බර්',
			'November'    : 'නොවැම්බර්',
			'December'    : 'දෙසැම්බර්',
			'Sunday'      : 'ඉරිදා',
			'Monday'      : 'සඳුදා',
			'Tuesday'     : 'අඟහරුවාදා',
			'Wednesday'   : 'බදාදා',
			'Thursday'    : 'බ්‍රහස්පතින්දා',
			'Friday'      : 'සිකුරාදා',
			'Saturday'    : 'සෙනසුරාදා',
			'Sun'         : 'ඉරිදා',
			'Mon'         : 'සඳු.',
			'Tue'         : 'අඟහ.',
			'Wed'         : 'බදාදා',
			'Thu'         : 'බ්‍රහස්.',
			'Fri'         : 'සිකු.',
			'Sat'         : 'සෙන.',

			/******************************** sort variants ********************************/
			'sortname'          : 'නම අනුව',
			'sortkind'          : 'වර්ගය අනුව',
			'sortsize'          : 'ප්‍රමාණය අනුව',
			'sortdate'          : 'දිනය අනුව',
			'sortFoldersFirst'  : 'ෆෝල්ඩර වලට පළමු තැන',
			'sortperm'          : 'අවසරය අනුව', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'අාකාරය අනුව',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'හිමිකරු අනුව',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'කණ්ඩායම අනුව',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'එලෙසටම රුක්සටහනත්(Treeview)',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
			'untitled folder'   : 'නව ෆෝල්ඩරයක්',   // added 10.11.2015
			'Archive'           : 'නව ලේඛනාගාරය',  // from v2.1 added 10.11.2015
			'untitled file'     : 'නව ගොනුව.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: ගොනුව',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'තහවුරු කිරීම අවශ්‍යයි',
			'confirmRm'       : 'අයිතමයන් සදහටම ඉවත් කිරීමට අවශ්‍ය බව ඔබට විශ්වාසද?<br/>මෙය අාපසු හැරවිය නොහැකිය!',
			'confirmRepl'     : 'පැරණි අයිතමය නව එකක මගින් ප්‍රතිස්ථාපනය කරන්නද?',
			'confirmRest'     : 'දැනට පවතින අයිතමය කුණු කූඩය තුළ පවතින අයිතමය මගින් ප්‍රතිස්ථාපනය කරන්නද?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 හි නොවේ<br/> UTF-8 වෙත පරිවර්තනය කරන්න ද?<br/>සුරැකීමෙන් පසු අන්තර්ගතය UTF-8 බවට පරිවර්තනය වේ.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'මෙම ගොනුවෙහි කේතන කේත(Character encoding) හඳුනාගත නොහැකි විය. සංස්කරණ කිරීමට එය තාවකාලිකව UTF-8 වෙත පරිවර්තනය කිරීම අවශ්‍ය වේ.<br/>කරුණාකර මෙම ගොනුවෙහි අක්ෂර කේතන කේත(character encoding) තෝරන්න.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'මෙය වෙනස් කර ඇත.<br/>ඔබට වෙනස්කම් සුරැකීමට නොහැකි නම් සිදු කරනු ලැබූ වෙනස්කම් අහිමි වේ.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'කුණු කූඩය තුලට අයිතමය යැවීමට ඔබට අවශ්‍ය ද?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'ඔබට අයිතම "$1" වෙත ගෙන යාමට අවශ්‍ය බව විශ්වාසද?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'සියල්ලටම යොදන්න',
			'name'            : 'නම',
			'size'            : 'ප්‍රමාණය',
			'perms'           : 'අවසරය',
			'modify'          : 'නවීකරණය කෙරුණ ලද්දේ',
			'kind'            : 'ජාතිය',
			'read'            : 'කියවන්න',
			'write'           : 'ලියන්න',
			'noaccess'        : 'ප්‍රවේශයක් නොමැත',
			'and'             : 'සහ',
			'unknown'         : 'නොහඳුනයි',
			'selectall'       : 'සියලු ගොනු තෝරන්න',
			'selectfiles'     : 'ගොනු(ව) තෝරන්න',
			'selectffile'     : 'පළමු ගොනුව තෝරන්න',
			'selectlfile'     : 'අවසාන ගොනුව තෝරන්න',
			'viewlist'        : 'ලැයිස්තු අාකාරය',
			'viewicons'       : 'අයිකන අාකාරය',
			'viewSmall'       : 'කුඩා අයිකන', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'මධ්යම අයිකන', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'විශාල අයිකන', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'අමතර විශාල අයිකන', // from v2.1.39 added 22.5.2018
			'places'          : 'ස්ථාන',
			'calc'            : 'ගණනය කරන්න',
			'path'            : 'මාර්ගය',
			'aliasfor'        : 'සඳහා අන්වර්ථය',
			'locked'          : 'අගුළු දමා ඇත',
			'dim'             : 'මාන(Dimensions)',
			'files'           : 'ගොනු',
			'folders'         : 'ෆෝල්ඩර',
			'items'           : 'අයිතම(Items)',
			'yes'             : 'ඔව්',
			'no'              : 'නැත',
			'link'            : 'සබැඳිය(Link)',
			'searcresult'     : 'සෙවුම් ප්‍රතිඵල',
			'selected'        : 'තෝරාගත් අයිතම',
			'about'           : 'මේ ගැන',
			'shortcuts'       : 'කෙටිමං',
			'help'            : 'උදව්',
			'webfm'           : 'වෙබ් ගොනු කළමනාකරු',
			'ver'             : 'අනුවාදය(version)',
			'protocolver'     : 'ප්‍රොටොකෝලය අනුවාදය(protocol version)',
			'homepage'        : 'ව්‍යාපෘතිය නිවහන',
			'docs'            : 'ලේඛනගත කිරීම',
			'github'          : 'Github හරහා සංවාදයේ යෙදෙන්න',
			'twitter'         : 'Twitter හරහා අපව සම්බන්ධ වන්න',
			'facebook'        : 'Facebook හරහා අප සමඟ එකතු වන්න',
			'team'            : 'කණ්ඩායම',
			'chiefdev'        : 'ප්‍රධාන සංස්කරු(chief developer)',
			'developer'       : 'සංස්කරු(developer)',
			'contributor'     : 'දායකයා(contributor)',
			'maintainer'      : 'නඩත්තු කරන්නා(maintainer)',
			'translator'      : 'පරිවර්තකයා',
			'icons'           : 'අයිකන',
			'dontforget'      : 'සහ ඔබේ තුවාය ගැනීමට අමතක නොකරන්න',
			'shortcutsof'     : 'කෙටිමං අක්‍රීය කර ඇත',
			'dropFiles'       : 'ගොනු මෙතැනට ඇද දමන්න',
			'or'              : 'හෝ',
			'selectForUpload' : 'ගොනු තෝරන්න',
			'moveFiles'       : 'අායිත්තම සම්පූර්ණයෙන් විස්ථාපනය',
			'copyFiles'       : 'අයිතමයන් පිටපත් කරන්න',
			'restoreFiles'    : 'අයිතම නැවත පිහිටුවන්න', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'ස්ථාන වලින් ඉවත් කරන්න',
			'aspectRatio'     : 'දර්ශන අනුපාතය(Aspect ratio)',
			'scale'           : 'පරිමාණය',
			'width'           : 'පළල',
			'height'          : 'උස',
			'resize'          : 'ප්‍රතිප්‍රමානණය',
			'crop'            : 'බෝග',
			'rotate'          : 'කැරකැවීම',
			'rotate-cw'       : 'අංශක 90කින් කරකවන්න CW',
			'rotate-ccw'      : 'අංශක 90කින් කරකවන්න CCW',
			'degree'          : '°',
			'netMountDialogTitle' : 'ජාල පරිමාව සවි කරන්න', // added 18.04.2012
			'protocol'            : 'ප්රොටෝකෝලය', // added 18.04.2012
			'host'                : 'සත්කාරක', // added 18.04.2012
			'port'                : 'වරාය', // added 18.04.2012
			'user'                : 'පරිශීලක', // added 18.04.2012
			'pass'                : 'මුරපදය', // added 18.04.2012
			'confirmUnmount'      : 'ඔබ $1 ඉවත් කරනවාද?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'බ්‍රවුසරයෙන් ගොනු දමන්න හෝ අලවන්න', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'මෙහි ගොනු දමන්න, URL හෝ පින්තූර (ක්ලිප්බෝඩ්) අලවන්න', // from v2.1 added 07.04.2014
			'encoding'        : 'කේතීකරණය(Encoding)', // from v2.1 added 19.12.2014
			'locale'          : 'දේශීය',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'ඉලක්කය: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'ආදාන MIME වර්ගය අනුව සොයන්න', // from v2.1 added 22.5.2015
			'owner'           : 'හිමිකරු', // from v2.1 added 20.6.2015
			'group'           : 'සමූහය', // from v2.1 added 20.6.2015
			'other'           : 'වෙනත්', // from v2.1 added 20.6.2015
			'execute'         : 'ක්‍රයාත්මක කරන්න', // from v2.1 added 20.6.2015
			'perm'            : 'අවසරය', // from v2.1 added 20.6.2015
			'mode'            : 'මාදිලිය', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'ෆෝල්ඩරය හිස්', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'ෆාේල්ඩරය හිස්\\A අායිත්තම අතහැරීමෙන් අැතුලු කරන්න', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'ෆාේල්ඩරය හිස්\\A දිර්ඝ එබීමෙන් අායිත්තම අැතුලු කරන්න', // from v2.1.6 added 30.12.2015
			'quality'         : 'ගුණාත්මකභාවය', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'ස්වයංක්‍රීය සමමුහුර්තකරණය',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'ඉහළට ගමන් කරන්න',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL සබැඳිය ලබා ගන්න', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'තෝරාගත් අයිතම ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ෆෝල්ඩර හැඳුනුම්පත', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'නොබැඳි ප්‍රවේශයට ඉඩ දෙන්න', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'නැවත සත්‍යාපනය කිරීමට', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'දැන් පූරණය වෙමින් පවතී...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'බහු ගොනු විවෘත කරන්න', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'ඔබ $1 ගොනු විවෘත කිරීමට උත්සාහ කරයි. බ්‍රව්සරයෙන් ඔබට විවෘත කිරීමට අවශ්‍ය බව ඔබට විශ්වාසද?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'සෙවුම් ඉලක්කයේ ගවේෂණ ප්‍රතිඵල නොමැත.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'එය ගොනුව සංස්කරණය කිරීමකි.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'ඔබ අයිතම $1 ප්‍රමාණයක් තෝරාගෙන ඇත.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'ඔබට පසුරු පුවරුවේ අයිතම $1ක් ඇත.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'වර්ධක සෙවීම වත්මන් දර්ශනයෙන් පමණි.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'යථා තත්ත්වයට පත් කරන්න', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 සම්පූර්ණයි', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'සන්දර්භය මෙනුව', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'පිටුව හැරවීම', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'පරිමාව මූලයන්', // from v2.1.16 added 16.9.2016
			'reset'           : 'යළි පිහිටුවන්න(Reset)', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'පසුබිම් වර්ණය', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'වර්ණ තෝරන්නා', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : 'පික්සල් 8ක දැල', // from v2.1.16 added 4.10.2016
			'enabled'         : 'සක්‍රීයයි', // from v2.1.16 added 4.10.2016
			'disabled'        : 'අක්‍රීයයි', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'වර්තමාන දර්ශනය තුළ සෙවුම් ප්‍රතිපල හිස්ව ඇත. \\A සෙවුම් ඉලක්කය පුළුල් කිරීම සඳහා [Enter] යතුර ඔබන්න.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'වර්තමාන දර්ශනයේ පළමු අකුර සෙවුම් ප්‍රතිපල හිස්ව පවතී.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'ලේබල්වල නම්', // from v2.1.17 added 13.10.2016
			'minsLeft'        : 'විනාඩි $1 ක් ගතවේ', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'තෝරාගත් කේතනය සමඟ නැවත විවෘත කරන්න', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'තෝරාගත් කේතනය සමඟ සුරකින්න', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'ෆෝල්ඩරය තෝරන්න', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'පළමු අකුරෙන් සෙවීම', // from v2.1.23 added 24.3.2017
			'presets'         : 'පෙරසිටුවීම්', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'එය බොහෝ අයිතම නිසා එය කුණු කූඩයට දැමිය නොහැක.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : '"$1" ෆෝල්ඩරය හිස් කරන්න.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : '"$1" ෆෝල්ඩරයක අයිතම නොමැත.', // from v2.1.25 added 22.6.2017
			'preference'      : 'මනාපය', // from v2.1.26 added 28.6.2017
			'language'        : 'භාෂා සැකසුම', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'මෙම බ්‍රවුසරයේ සුරකින ලද සැකසුම් ආරම්භ කරන්න', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'මෙවලම් තීරු සැකසුම', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 ක් අකුරු ඉතිරිව පවතී',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 පේළි ඉතිරියි.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'එකතුව', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'රළු ගොනු විශාලත්වය', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'මූසිකය සමඟ සංවාදයේ අංගය කෙරෙහි අවධානය යොමු කරන්න',  // from v2.1.30 added 2.11.2017
			'select'          : 'තෝරන්න', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'ගොනුවක් තේරූ විට සිදුකල යුතු දේ', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'අවසන් වරට භාවිතා කළ සංස්කාරකය සමඟ විවෘත කරන්න', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'ප්‍රතිවිරුද්ධ අාකාරයට තෝරන්න', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '$2 වැනි තෝරාගත් අයිතම $1 නැවත නම් කිරීමට ඔබට අවශ්‍ය බව ඔබට විශ්වාසද?<br/>මෙය පසුගමනය කළ නොහැක!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'කණ්ඩායම නැවත නම් කිරීම', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ අංකය', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'උපසර්ගය එකතු කරන්න', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'උපසර්ගය එකතු කරන්න', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'දිගුව වෙනස් කරන්න', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'තීරු සැකසීම් (ලැයිස්තු දසුන)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'සියලුම වෙනස්කම් සංරක්ෂිතයට වහාම පිළිබිඹු වේ.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'සියලුම වෙනස්කම් සංරක්ෂිතයට වහාම පිළිබිඹු වේ.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'මෙම වෙළුමේ සවිකර ඇති පහත වෙළුම් (ය) ද ඉවත් කරන ලදී. ඔබට එය ඉවත් කිරීමට විශ්වාසද?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'තෝරාගැනීම්වල තොරතුරු', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'ගොනු හැෂ් පෙන්වීමට ඇල්ගොරිතම', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'තොරතුරු අයිතම (තේරීම් තොරතුරු පැනලය)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'පිටවීමට නැවත ඔබන්න.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'මෙවලම් තීරුව', // from v2.1.38 added 4.4.2018
			'workspace'       : 'වැඩ අවකාශය', // from v2.1.38 added 4.4.2018
			'dialog'          : 'ඩයලොග්', // from v2.1.38 added 4.4.2018
			'all'             : 'සියලුම', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'අයිකන ප්‍රමාණය (අයිකන දසුන)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'උපරිම සංස්කාරක කවුළුව විවෘත කරන්න', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'API මගින් පරිවර්තනය දැනට නොමැති නිසා, කරුණාකර වෙබ් අඩවියට පරිවර්තනය කරන්න.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'පරිවර්තනය කිරීමෙන් පසු, ඔබ පරිවර්තනය කළ ගොනුව සුරැකීමට අයිතම URL හෝ බාගත කළ ගොනුවක් සමඟ උඩුගත කළ යුතුය.', //from v2.1.40 added 8.7.2018
			'convertOn'       : '$1 හි අඩවියට පරිවර්තනය කරන්න', // from v2.1.40 added 10.7.2018
			'integrations'    : 'ඒකාබද්ධ කිරීම්', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'මෙම elFinder පහත බාහිර සේවාවන් ඒකාබද්ධ කර ඇත. කරුණාකර එය භාවිතා කිරීමට පෙර භාවිත නියමයන්, රහස්‍යතා ප්‍රතිපත්තිය, ආදිය පරීක්ෂා කරන්න.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'සැඟවුණු අයිතම පෙන්වන්න', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'සැඟවුණු අයිතම සඟවන්න', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'සැඟවුණු අයිතම පෙන්වන්න/සඟවන්න', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '"නව ගොනුව" සමඟ සබල කිරීමට ගොනු වර්ග', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'පෙළ ගොනුවේ වර්ගය', // from v2.1.41 added 7.8.2018
			'add'             : 'එකතු කරන්න', // from v2.1.41 added 7.8.2018
			'theme'           : 'තේමාව', // from v2.1.43 added 19.10.2018
			'default'         : 'පෙරනිමිය', // from v2.1.43 added 19.10.2018
			'description'     : 'විස්තර', // from v2.1.43 added 19.10.2018
			'website'         : 'වෙබ් අඩවිය', // from v2.1.43 added 19.10.2018
			'author'          : 'කර්තෘ', // from v2.1.43 added 19.10.2018
			'email'           : 'විද්යුත් තැපෑල', // from v2.1.43 added 19.10.2018
			'license'         : 'බලපත්රය', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'මෙම අයිතමය සුරැකිය නොහැක. සංස්කරණ අහිමි වීම වළක්වා ගැනීම සඳහා ඔබ ඔබේ පරිගණකයට අපනයනය කළ යුතුය.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'ගොනුව තේරීමට එය මත දෙවරක් ක්ලික් කරන්න.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'සම්පූර්ණ තිර මාදිලිය භාවිතා කරන්න', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'නොදන්නා',
			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'ෆෝල්ඩරය',
			'kindSelects'     : 'තේරීම්', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'අන්වර්ථ නාමය',
			'kindAliasBroken' : 'කැඩුණු අන්වර්ථය',
			// applications
			'kindApp'         : 'අයදුම්පත',
			'kindPostscript'  : 'Postscript ලේඛනය',
			'kindMsOffice'    : 'Microsoft Office ලේඛනය',
			'kindMsWord'      : 'Microsoft Word ලේඛනය',
			'kindMsExcel'     : 'Microsoft Excel ලේඛනය',
			'kindMsPP'        : 'Microsoft Powerpoint ඉදිරිපත් කිරීම',
			'kindOO'          : 'Open Office ලේඛනය',
			'kindAppFlash'    : 'ෆ්ලෑෂ් යෙදුම',
			'kindPDF'         : 'අතේ ගෙන යා හැකි ලේඛන ආකෘතිය (PDF)',
			'kindTorrent'     : 'Bittorrent ගොනුව',
			'kind7z'          : '7z සංරක්ෂිතය',
			'kindTAR'         : 'TAR ලේඛනාගාරය',
			'kindGZIP'        : 'GZIP ලේඛනාගාරය',
			'kindBZIP'        : 'BZIP ලේඛනාගාරය',
			'kindXZ'          : 'XZ ලේඛනාගාරය',
			'kindZIP'         : 'ZIP සංරක්ෂිතය',
			'kindRAR'         : 'RAR ලේඛනාගාරය',
			'kindJAR'         : 'ජාවා JAR ගොනුව',
			'kindTTF'         : 'සත්‍ය අකුරු වර්ගය',
			'kindOTF'         : 'අකුරු වර්ගය විවෘත කරන්න',
			'kindRPM'         : 'RPM පැකේජය',
			// texts
			'kindText'        : 'Text ලේඛනය',
			'kindTextPlain'   : 'සරල පෙළ',
			'kindPHP'         : 'PHP මූලාශ්‍රය',
			'kindCSS'         : 'කැස්කැඩින් ස්ටයිල් ෂීට්',
			'kindHTML'        : 'HTML ලේඛනය',
			'kindJS'          : 'Javascript මූලාශ්‍රය',
			'kindRTF'         : 'පොහොසත් පෙළ ආකෘතිය',
			'kindC'           : 'C මූලාශ්‍රය',
			'kindCHeader'     : 'C header මූලාශ්‍රය',
			'kindCPP'         : 'C++ මූලාශ්‍රය',
			'kindCPPHeader'   : 'C++ header මූලාශ්‍රය',
			'kindShell'       : 'Unix shell රචනයකි',
			'kindPython'      : 'Python මූලාශ්‍රය',
			'kindJava'        : 'Java මූලාශ්‍රය',
			'kindRuby'        : 'Ruby මූලාශ්‍රය',
			'kindPerl'        : 'Perl රචනයකි',
			'kindSQL'         : 'SQL මූලාශ්‍රය',
			'kindXML'         : 'XML ලේඛනය',
			'kindAWK'         : 'AWK මූලාශ්‍රය',
			'kindCSV'         : 'කොමාවන් වෙන් කළ අගයන්',
			'kindDOCBOOK'     : 'Docbook XML ලේඛනය',
			'kindMarkdown'    : 'සලකුණු පෙළ', // added 20.7.2015
			// images
			'kindImage'       : 'පින්තූරය',
			'kindBMP'         : 'BMP පින්තූරය',
			'kindJPEG'        : 'JPEG පින්තූරය',
			'kindGIF'         : 'GIF පින්තූරය',
			'kindPNG'         : 'PNG පින්තූරය',
			'kindTIFF'        : 'TIFF පින්තූරය',
			'kindTGA'         : 'TGA පින්තූරය',
			'kindPSD'         : 'Adobe Photoshop පින්තූරය',
			'kindXBITMAP'     : 'X bitmap පින්තූරය',
			'kindPXM'         : 'Pixelmator පින්තූරය',
			// media
			'kindAudio'       : 'ශබ්ධ මාධ්‍ය',
			'kindAudioMPEG'   : 'MPEG ශබ්ධපටය',
			'kindAudioMPEG4'  : 'MPEG-4 ශබ්ධපටය',
			'kindAudioMIDI'   : 'MIDI ශබ්ධපටය',
			'kindAudioOGG'    : 'Ogg Vorbis ශබ්ධපටය',
			'kindAudioWAV'    : 'WAV ශබ්ධපටය',
			'AudioPlaylist'   : 'MP3 ධාවන ලැයිස්තුව',
			'kindVideo'       : 'Video මාධ්‍ය',
			'kindVideoDV'     : 'DV චිත්‍රපටය',
			'kindVideoMPEG'   : 'MPEG චිත්‍රපටය',
			'kindVideoMPEG4'  : 'MPEG-4 චිත්‍රපටය',
			'kindVideoAVI'    : 'AVI චිත්‍රපටය',
			'kindVideoMOV'    : 'Quick Time චිත්‍රපටය',
			'kindVideoWM'     : 'Windows Media චිත්‍රපටය',
			'kindVideoFlash'  : 'Flash චිත්‍රපටය',
			'kindVideoMKV'    : 'Matroska චිත්‍රපටය',
			'kindVideoOGG'    : 'Ogg චිත්‍රපටය'
		}
	};
}));lib/js/i18n/elfinder.ja.js000064400000114427147361034410011240 0ustar00/**
 * Japanese translation
 * @author Tomoaki Yoshida <info@yoshida-studio.jp>
 * @author Naoki Sawada <hypweb+elfinder@gmail.com>
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ja = {
		translator : 'Tomoaki Yoshida &lt;info@yoshida-studio.jp&gt;, Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;',
		language   : 'Japanese',
		direction  : 'ltr',
		dateFormat : 'Y/m/d h:i A', // will show like: 2022/03/02 01:09 PM
		fancyDateFormat : '$1 h:i A', // will show like: 今日 01:09 PM
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220302-130931
		messages   : {
			'getShareText' : '共有',
			'Editor ': 'コードエディタ',

			/********************************** errors **********************************/
			'error'                : 'エラー',
			'errUnknown'           : '不明なエラーです。',
			'errUnknownCmd'        : '不明なコマンドです。',
			'errJqui'              : '無効な jQuery UI 設定です。Selectable, Draggable, Droppable コンポーネントを含める必要があります。',
			'errNode'              : 'elFinder は DOM Element が必要です。',
			'errURL'               : '無効な elFinder 設定です! URLを設定されていません。',
			'errAccess'            : 'アクセスが拒否されました。',
			'errConnect'           : 'バックエンドとの接続ができません。',
			'errAbort'             : '接続が中断されました。',
			'errTimeout'           : '接続がタイムアウトしました。',
			'errNotFound'          : 'バックエンドが見つかりません。',
			'errResponse'          : '無効なバックエンドレスポンスです。',
			'errConf'              : 'バックエンドの設定が有効ではありません。',
			'errJSON'              : 'PHP JSON モジュールがインストールされていません。',
			'errNoVolumes'         : '読み込み可能なボリュームがありません。',
			'errCmdParams'         : 'コマンド "$1"のパラメーターが無効です。',
			'errDataNotJSON'       : 'JSONデータではありません。',
			'errDataEmpty'         : '空のデータです。',
			'errCmdReq'            : 'バックエンドリクエストはコマンド名が必要です。',
			'errOpen'              : '"$1" を開くことができません。',
			'errNotFolder'         : 'オブジェクトがフォルダではありません。',
			'errNotFile'           : 'オブジェクトがファイルではありません。',
			'errRead'              : '"$1" を読み込むことができません。',
			'errWrite'             : '"$1" に書き込むことができません。',
			'errPerm'              : '権限がありません。',
			'errLocked'            : '"$1" はロックされているので名前の変更、移動、削除ができません。',
			'errExists'            : '"$1" というアイテム名はすでに存在しています。',
			'errInvName'           : '無効なファイル名です。',
			'errInvDirname'        : '無効なフォルダ名です。',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'フォルダが見つかりません。',
			'errFileNotFound'      : 'ファイルが見つかりません。',
			'errTrgFolderNotFound' : 'ターゲットとするフォルダ "$1" が見つかりません。',
			'errPopup'             : 'ポップアップウィンドウが開けません。ファイルを開くにはブラウザの設定を変更してください。',
			'errMkdir'             : 'フォルダ "$1" を作成することができません。',
			'errMkfile'            : 'ファイル "$1" を作成することができません。',
			'errRename'            : '"$1" の名前を変更することができません。',
			'errCopyFrom'          : '"$1" からのファイルコピーは許可されていません。',
			'errCopyTo'            : '"$1" へのファイルコピーは許可されていません。',
			'errMkOutLink'         : 'ボリュームルート外へのリンクを作成することはできません。', // from v2.1 added 03.10.2015
			'errUpload'            : 'アップロードエラー',  // old name - errUploadCommon
			'errUploadFile'        : '"$1" をアップロードすることができません。', // old name - errUpload
			'errUploadNoFiles'     : 'アップロードされたファイルはありません。',
			'errUploadTotalSize'   : 'データが許容サイズを超えています。', // old name - errMaxSize
			'errUploadFileSize'    : 'ファイルが許容サイズを超えています。', //  old name - errFileMaxSize
			'errUploadMime'        : '許可されていないファイル形式です。',
			'errUploadTransfer'    : '"$1" 転送エラーです。',
			'errUploadTemp'        : 'アップロード用一時ファイルを作成できません。', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'アイテム "$1" はすでにこの場所にあり、アイテムのタイプが違うので置き換えることはできません。', // new
			'errReplace'           : '"$1" を置き換えることができません。',
			'errSave'              : '"$1" を保存することができません。',
			'errCopy'              : '"$1" をコピーすることができません。',
			'errMove'              : '"$1" を移動することができません。',
			'errCopyInItself'      : '"$1" をそれ自身の中にコピーすることはできません。',
			'errRm'                : '"$1" を削除することができません。',
			'errTrash'             : 'ごみ箱に入れることができません。', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : '元ファイルを削除することができません。',
			'errExtract'           : '"$1" を解凍することができません。',
			'errArchive'           : 'アーカイブを作成することができません。',
			'errArcType'           : 'サポート外のアーカイブ形式です。',
			'errNoArchive'         : 'アーカイブでないかサポートされていないアーカイブ形式です。',
			'errCmdNoSupport'      : 'サポートされていないコマンドです。',
			'errReplByChild'       : 'フォルダ "$1" に含まれてるアイテムを置き換えることはできません。',
			'errArcSymlinks'       : 'シンボリックリンクまたは許容されないファイル名を含むアーカイブはセキュリティ上、解凍できません。', // edited 24.06.2012
			'errArcMaxSize'        : 'アーカイブが許容されたサイズを超えています。',
			'errResize'            : '"$1" のリサイズまたは回転ができません。',
			'errResizeDegree'      : 'イメージの回転角度が不正です。',  // added 7.3.2013
			'errResizeRotate'      : 'イメージを回転できません。',  // added 7.3.2013
			'errResizeSize'        : '指定されたイメージサイズが不正です。',  // added 7.3.2013
			'errResizeNoChange'    : 'イメージサイズなどの変更点がありません。',  // added 7.3.2013
			'errUsupportType'      : 'このファイルタイプはサポートされていません。',
			'errNotUTF8Content'    : 'ファイル "$1" には UTF-8 以外の文字が含まれているので編集できません。',  // added 9.11.2011
			'errNetMount'          : '"$1" をマウントできません。', // added 17.04.2012
			'errNetMountNoDriver'  : 'サポートされていないプロトコルです。',     // added 17.04.2012
			'errNetMountFailed'    : 'マウントに失敗しました。',         // added 17.04.2012
			'errNetMountHostReq'   : 'ホスト名は必須です。', // added 18.04.2012
			'errSessionExpires'    : 'アクションがなかったため、セッションが期限切れになりました。',
			'errCreatingTempDir'   : '一時ディレクトリを作成できません:"$1"',
			'errFtpDownloadFile'   : 'FTP からファイルをダウンロードできません:"$1"',
			'errFtpUploadFile'     : 'FTP へファイルをアップロードできません:"$1"',
			'errFtpMkdir'          : 'FTP にリモートディレクトリを作成できません:"$1"',
			'errArchiveExec'       : 'ファイルのアーカイブ中にエラーが発生しました:"$1"',
			'errExtractExec'       : 'ファイルの抽出中にエラーが発生しました:"$1"',
			'errNetUnMount'        : 'アンマウントできません。', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8 に変換できませんでした。', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'フォルダをアップロードしたいのであれば、モダンブラウザを試してください。', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" を検索中にタイムアウトしました。検索結果は部分的です。', // from v2.1 added 12.1.2016
			'errReauthRequire'     : '再認可が必要です。', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : '選択可能な最大アイテム数は $1 個です。', // from v2.1.17 added 17.10.2016
			'errRestore'           : '宛先の特定ができないため、ごみ箱から戻せません。', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'このファイルタイプのエディターがありません。', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'サーバー側でエラーが発生しました。', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'フォルダ"$1"を空にすることができません。', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'さらに $1 件のエラーがあります。', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : '一度に作成できるフォルダーは $1 個までです。', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'アーカイブ作成',
			'cmdback'      : '戻る',
			'cmdcopy'      : 'コピー',
			'cmdcut'       : 'カット',
			'cmddownload'  : 'ダウンロード',
			'cmdduplicate' : '複製',
			'cmdedit'      : 'ファイル編集',
			'cmdextract'   : 'アーカイブを解凍',
			'cmdforward'   : '進む',
			'cmdgetfile'   : 'ファイル選択',
			'cmdhelp'      : 'このソフトウェアについて',
			'cmdhome'      : 'ルート',
			'cmdinfo'      : '情報',
			'cmdmkdir'     : '新規フォルダ',
			'cmdmkdirin'   : '新規フォルダへ', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : '新規ファイル',
			'cmdopen'      : '開く',
			'cmdpaste'     : 'ペースト',
			'cmdquicklook' : 'プレビュー',
			'cmdreload'    : 'リロード',
			'cmdrename'    : 'リネーム',
			'cmdrm'        : '削除',
			'cmdtrash'     : 'ごみ箱へ', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : '復元', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'ファイルを探す',
			'cmdup'        : '親フォルダへ移動',
			'cmdupload'    : 'ファイルアップロード',
			'cmdview'      : 'ビュー',
			'cmdresize'    : 'リサイズと回転',
			'cmdsort'      : 'ソート',
			'cmdnetmount'  : 'ネットワークボリュームをマウント', // added 18.04.2012
			'cmdnetunmount': 'アンマウント', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'よく使う項目へ', // added 28.12.2014
			'cmdchmod'     : '属性変更', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'フォルダを開く', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : '列幅リセット', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'フルスクリーン', // from v2.1.15 added 03.08.2016
			'cmdmove'      : '移動', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'フォルダを空に', // from v2.1.25 added 22.06.2017
			'cmdundo'      : '元に戻す', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'やり直し', // from v2.1.27 added 31.07.2017
			'cmdpreference': '個人設定', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'すべて選択', // from v2.1.28 added 15.08.2017
			'cmdselectnone': '選択解除', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': '選択を反転', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : '新しいウィンドウで開く', // from v2.1.38 added 3.4.2018
			'cmdhide'      : '非表示 (個人設定)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : '閉じる',
			'btnSave'   : '保存',
			'btnRm'     : '削除',
			'btnApply'  : '適用',
			'btnCancel' : 'キャンセル',
			'btnNo'     : 'いいえ',
			'btnYes'    : 'はい',
			'btnMount'  : 'マウント',  // added 18.04.2012
			'btnApprove': '$1へ行き認可する', // from v2.1 added 26.04.2012
			'btnUnmount': 'アンマウント', // from v2.1 added 30.04.2012
			'btnConv'   : '変換', // from v2.1 added 08.04.2014
			'btnCwd'    : 'この場所',      // from v2.1 added 22.5.2015
			'btnVolume' : 'ボリューム',    // from v2.1 added 22.5.2015
			'btnAll'    : '全て',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIMEタイプ', // from v2.1 added 22.5.2015
			'btnFileName':'ファイル名',  // from v2.1 added 22.5.2015
			'btnSaveClose': '保存して閉じる', // from v2.1 added 12.6.2015
			'btnBackup' : 'バックアップ', // fromv2.1 added 28.11.2015
			'btnRename'    : 'リネーム',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'リネーム(全て)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : '前へ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : '次へ ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : '別名保存', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'フォルダを開いています',
			'ntffile'     : 'ファイルを開いています',
			'ntfreload'   : 'フォルダを再読込しています',
			'ntfmkdir'    : 'フォルダを作成しています',
			'ntfmkfile'   : 'ファイルを作成しています',
			'ntfrm'       : 'アイテムを削除しています',
			'ntfcopy'     : 'アイテムをコピーしています',
			'ntfmove'     : 'アイテムを移動しています',
			'ntfprepare'  : '既存アイテムを確認しています',
			'ntfrename'   : 'ファイル名を変更しています',
			'ntfupload'   : 'ファイルをアップロードしています',
			'ntfdownload' : 'ファイルをダウンロードしています',
			'ntfsave'     : 'ファイルを保存しています',
			'ntfarchive'  : 'アーカイブ作成しています',
			'ntfextract'  : 'アーカイブを解凍しています',
			'ntfsearch'   : 'ファイル検索中',
			'ntfresize'   : 'リサイズしています',
			'ntfsmth'     : '処理をしています',
			'ntfloadimg'  : 'イメージを読み込んでいます',
			'ntfnetmount' : 'ネットボリュームをマウント中', // added 18.04.2012
			'ntfnetunmount': 'ネットボリュームをアンマウント中', // from v2.1 added 30.04.2012
			'ntfdim'      : '画像サイズを取得しています', // added 20.05.2013
			'ntfreaddir'  : 'フォルダ情報を読み取っています', // from v2.1 added 01.07.2013
			'ntfurl'      : 'リンクURLを取得しています', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'ファイル属性を変更しています', // from v2.1 added 20.6.2015
			'ntfpreupload': 'アップロードファイル名を検証中', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'ダウンロード用ファイルを作成中', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'パス情報を取得しています', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'アップロード済みファイルを処理中', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'ごみ箱に入れています', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'ごみ箱から元に戻しています', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : '宛先フォルダを確認しています', // from v2.1.24 added 3.5.2017
			'ntfundo'     : '前の操作を取り消して元に戻しています', // from v2.1.27 added 31.07.2017
			'ntfredo'     : '元に戻した操作をやり直しています', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'コンテンツをチェックしています', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'ごみ箱', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : '不明',
			'Today'       : '今日',
			'Yesterday'   : '昨日',
			'msJan'       : '1月',
			'msFeb'       : '2月',
			'msMar'       : '3月',
			'msApr'       : '4月',
			'msMay'       : '5月',
			'msJun'       : '6月',
			'msJul'       : '7月',
			'msAug'       : '8月',
			'msSep'       : '9月',
			'msOct'       : '10月',
			'msNov'       : '11月',
			'msDec'       : '12月',
			'January'     : '1月',
			'February'    : '2月',
			'March'       : '3月',
			'April'       : '4月',
			'May'         : '5月',
			'June'        : '6月',
			'July'        : '7月',
			'August'      : '8月',
			'September'   : '9月',
			'October'     : '10月',
			'November'    : '11月',
			'December'    : '12月',
			'Sunday'      : '日曜日',
			'Monday'      : '月曜日',
			'Tuesday'     : '火曜日',
			'Wednesday'   : '水曜日',
			'Thursday'    : '木曜日',
			'Friday'      : '金曜日',
			'Saturday'    : '土曜日',
			'Sun'         : '(日)',
			'Mon'         : '(月)',
			'Tue'         : '(火)',
			'Wed'         : '(水)',
			'Thu'         : '(木)',
			'Fri'         : '(金)',
			'Sat'         : '(土)',

			/******************************** sort variants ********************************/
			'sortname'          : '名前順',
			'sortkind'          : '種類順',
			'sortsize'          : 'サイズ順',
			'sortdate'          : '日付順',
			'sortFoldersFirst'  : 'フォルダ優先',
			'sortperm'          : '権限順', // from v2.1.13 added 13.06.2016
			'sortmode'          : '属性順',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'オーナー順',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'グループ順',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'ツリービューも',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : '新規ファイル.txt', // added 10.11.2015
			'untitled folder'   : '新規フォルダ',   // added 10.11.2015
			'Archive'           : '新規アーカイブ',  // from v2.1 added 10.11.2015
			'untitled file'     : '新規ファイル.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: ファイル',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : '処理を実行しますか?',
			'confirmRm'       : 'アイテムを完全に削除してもよろしいですか?<br/>この操作は取り消しできません!',
			'confirmRepl'     : '古いファイルを新しいファイルで上書きしますか? (フォルダが含まれている場合は統合されます。置き換える場合は「バックアップ」選択してください。)',
			'confirmRest'     : '既存のアイテムをごみ箱のアイテムで上書きしますか?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8 以外の文字が含まれています。<br/>UTF-8  に変換しますか?<br/>変換後の保存でコンテンツは UTF-8 になります。', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'このファイルの文字エンコーディングを判別できませんでした。編集するには一時的に UTF-8 に変換する必要があります。<br/>文字エンコーディングを指定してください。', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : '変更されています。<br/>保存せずに閉じると編集内容が失われます。', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'アイテムをごみ箱に移動してもよろしいですか?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'アイテムを"$1"に移動してもよろしいですか?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : '全てに適用します',
			'name'            : '名前',
			'size'            : 'サイズ',
			'perms'           : '権限',
			'modify'          : '更新',
			'kind'            : '種類',
			'read'            : '読み取り',
			'write'           : '書き込み',
			'noaccess'        : 'アクセス禁止',
			'and'             : ',',
			'unknown'         : '不明',
			'selectall'       : 'すべてのアイテムを選択',
			'selectfiles'     : 'アイテム選択',
			'selectffile'     : '最初のアイテムを選択',
			'selectlfile'     : '最後のアイテムを選択',
			'viewlist'        : 'リスト形式で表示',
			'viewicons'       : 'アイコン形式で表示',
			'viewSmall'       : '小アイコン', // from v2.1.39 added 22.5.2018
			'viewMedium'      : '中アイコン', // from v2.1.39 added 22.5.2018
			'viewLarge'       : '大アイコン', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : '特大アイコン', // from v2.1.39 added 22.5.2018
			'places'          : 'よく使う項目',
			'calc'            : '計算中',
			'path'            : 'パス',
			'aliasfor'        : 'エイリアス',
			'locked'          : 'ロック',
			'dim'             : '画素数',
			'files'           : 'ファイル',
			'folders'         : 'フォルダ',
			'items'           : 'アイテム',
			'yes'             : 'はい',
			'no'              : 'いいえ',
			'link'            : 'リンク',
			'searcresult'     : '検索結果',
			'selected'        : '選択されたアイテム',
			'about'           : '概要',
			'shortcuts'       : 'ショートカット',
			'help'            : 'ヘルプ',
			'webfm'           : 'ウェブファイルマネージャー',
			'ver'             : 'バージョン',
			'protocolver'     : 'プロトコルバージョン',
			'homepage'        : 'プロジェクトホーム',
			'docs'            : 'ドキュメンテーション',
			'github'          : 'Github でフォーク',
			'twitter'         : 'Twitter でフォロー',
			'facebook'        : 'Facebookグループ に参加',
			'team'            : 'チーム',
			'chiefdev'        : 'チーフデベロッパー',
			'developer'       : 'デベロッパー',
			'contributor'     : 'コントリビュータ',
			'maintainer'      : 'メインテナー',
			'translator'      : '翻訳者',
			'icons'           : 'アイコン',
			'dontforget'      : 'タオル忘れちゃだめよ~',
			'shortcutsof'     : 'ショートカットは利用できません',
			'dropFiles'       : 'ここにファイルをドロップ',
			'or'              : 'または',
			'selectForUpload' : 'ファイルを選択',
			'moveFiles'       : 'アイテムを移動',
			'copyFiles'       : 'アイテムをコピー',
			'restoreFiles'    : 'アイテムを元に戻す', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'ここから削除',
			'aspectRatio'     : '縦横比維持',
			'scale'           : '表示縮尺',
			'width'           : '幅',
			'height'          : '高さ',
			'resize'          : 'リサイズ',
			'crop'            : '切り抜き',
			'rotate'          : '回転',
			'rotate-cw'       : '90度左回転',
			'rotate-ccw'      : '90度右回転',
			'degree'          : '度',
			'netMountDialogTitle' : 'ネットワークボリュームのマウント', // added 18.04.2012
			'protocol'            : 'プロトコル', // added 18.04.2012
			'host'                : 'ホスト名', // added 18.04.2012
			'port'                : 'ポート', // added 18.04.2012
			'user'                : 'ユーザー名', // added 18.04.2012
			'pass'                : 'パスワード', // added 18.04.2012
			'confirmUnmount'      : '$1をアンマウントしますか?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'ブラウザからファイルをドロップまたは貼り付け', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'ここにファイルをドロップ または URLリスト, 画像(クリップボード) を貼り付け', // from v2.1 added 07.04.2014
			'encoding'        : 'エンコーディング', // from v2.1 added 19.12.2014
			'locale'          : 'ロケール',   // from v2.1 added 19.12.2014
			'searchTarget'    : '検索範囲: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : '指定した MIME タイプで検索', // from v2.1 added 22.5.2015
			'owner'           : 'オーナー', // from v2.1 added 20.6.2015
			'group'           : 'グループ', // from v2.1 added 20.6.2015
			'other'           : 'その他', // from v2.1 added 20.6.2015
			'execute'         : '実行', // from v2.1 added 20.6.2015
			'perm'            : 'パーミッション', // from v2.1 added 20.6.2015
			'mode'            : '属性', // from v2.1 added 20.6.2015
			'emptyFolder'     : '空のフォルダ', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : '空のフォルダ\\Aアイテムを追加するにはここへドロップ', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : '空のフォルダ\\Aアイテムを追加するにはここをロングタップ', // from v2.1.6 added 30.12.2015
			'quality'         : '品質', // from v2.1.6 added 5.1.2016
			'autoSync'        : '自動更新',  // from v2.1.6 added 10.1.2016
			'moveUp'          : '上へ移動',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'リンクURLを取得', // from v2.1.7 added 9.2.2016
			'selectedItems'   : '選択アイテム ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'フォルダID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'オフライン アクセスを可能にする', // from v2.1.10 added 3.25.2016
			'reAuth'          : '再認証する', // from v2.1.10 added 3.25.2016
			'nowLoading'      : '読み込んでいます...', // from v2.1.12 added 4.26.2016
			'openMulti'       : '複数ファイルオープン', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': '$1 個のファイルを開こうとしています。このままブラウザで開きますか?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : '検索対象に該当するアイテムはありません。', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'ファイルを編集中です。', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1 個のアイテムを選択中です。', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '$1 個のアイテムがクリップボードに入っています。', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : '逐次検索対象は現在のビューのみです。', // from v2.1.13 added 6.30.2016
			'reinstate'       : '元に戻す', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 完了', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'コンテキストメニュー', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'ページめくり', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'ボリュームルート', // from v2.1.16 added 16.9.2016
			'reset'           : 'リセット', // from v2.1.16 added 1.10.2016
			'bgcolor'         : '背景色', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'カラーピッカー', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8pxグリッド', // from v2.1.16 added 4.10.2016
			'enabled'         : '有効', // from v2.1.16 added 4.10.2016
			'disabled'        : '無効', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : '現在のビュー内に該当するアイテムはありません。\\A[Enter]キーで検索対象を拡げます。', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : '現在のビュー内に指定された文字で始まるアイテムはありません。', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'テキストラベル', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '残り$1分', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : '選択したエンコーディングで開き直す', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : '選択したエンコーディングで保存', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'フォルダを選択', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': '一文字目で検索', // from v2.1.23 added 24.3.2017
			'presets'         : 'プリセット', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'アイテム数が多すぎるのでごみ箱に入れられません。', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'テキストエリア', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'フォルダ"$1"を空にします。', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'フォルダ"$1"にアイテムはありません。', // from v2.1.25 added 22.6.2017
			'preference'      : '個人設定', // from v2.1.26 added 28.6.2017
			'language'        : '言語', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'ブラウザに保存された設定を初期化する', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'ツールバー設定', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... 残り $1 文字',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... 残り $1 行',  // from v2.1.52 added 16.1.2020
			'sum'             : '合計', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : '大まかなファイルサイズ', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'マウスオーバーでダイアログの要素にフォーカスする',  // from v2.1.30 added 2.11.2017
			'select'          : '選択', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'ファイル選択時の動作', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : '前回使用したエディターで開く', // from v2.1.30 added 23.11.2017
			'selectinvert'    : '選択アイテムを反転', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '選択した $1 個のアイテムを $2 のようにリネームしますか?<br/>この操作は取り消しできません!', // from v2.1.31 added 4.12.2017
			'batchRename'     : '一括リネーム', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ 連番', // from v2.1.31 added 8.12.2017
			'asPrefix'        : '先頭に追加', // from v2.1.31 added 8.12.2017
			'asSuffix'        : '末尾に追加', // from v2.1.31 added 8.12.2017
			'changeExtention' : '拡張子変更', // from v2.1.31 added 8.12.2017
			'columnPref'      : '列項目設定(リストビュー)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : '全ての変更は、直ちにアーカイブに反映されます。', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'このボリュームをアンマウントするまで、変更は反映されません。', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'このボリュームにマウントされている以下のボリュームもアンマウントされます。アンマウントしますか?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : '選択情報', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'ファイルハッシュを表示するアルゴリズム', // from v2.1.33 added 10.3.2018
			'infoItems'       : '情報項目 (選択情報パネル)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'もう一度押すと終了します。', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'ツールバー', // from v2.1.38 added 4.4.2018
			'workspace'       : 'ワークスペース', // from v2.1.38 added 4.4.2018
			'dialog'          : 'ダイアログ', // from v2.1.38 added 4.4.2018
			'all'             : 'すべて', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'アイコンサイズ (アイコンビュー)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'エディターウィンドウを最大化して開く', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : '現在 API による変換は利用できないので、Web サイトで変換を行ってください。', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : '変換後に変換されたファイルを保存するには、アイテムの URL またはダウンロードしたファイルをアップロードする必要があります。', //from v2.1.40 added 8.7.2018
			'convertOn'       : '$1 のサイト上で変換する', // from v2.1.40 added 10.7.2018
			'integrations'    : '統合', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'この elFinder は次の外部サービスが統合されています。それらの利用規約、プライバシーポリシーなどをご確認の上、ご利用ください。', // from v2.1.40 added 11.7.2018
			'showHidden'      : '非表示アイテムを表示', // from v2.1.41 added 24.7.2018
			'hideHidden'      : '非表示アイテムを隠す', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : '非表示アイテムの表示/非表示', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '「新しいファイル」で有効にするファイルタイプ', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'テキストファイルのタイプ', // from v2.1.41 added 7.8.2018
			'add'             : '追加', // from v2.1.41 added 7.8.2018
			'theme'           : 'テーマ', // from v2.1.43 added 19.10.2018
			'default'         : 'デフォルト', // from v2.1.43 added 19.10.2018
			'description'     : '説明', // from v2.1.43 added 19.10.2018
			'website'         : 'ウェブサイト', // from v2.1.43 added 19.10.2018
			'author'          : '作者', // from v2.1.43 added 19.10.2018
			'email'           : 'Eメール', // from v2.1.43 added 19.10.2018
			'license'         : 'ライセンス', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'このアイテムは保存できません。 編集内容を失わないようにするには、PCにエクスポートする必要があります。', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'ファイルをダブルクリックして選択します。', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'フルスクリーンモードの利用', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : '不明',
			'kindRoot'        : 'ボリュームルート', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'フォルダ',
			'kindSelects'     : '複数選択', // from v2.1.29 added 29.8.2017
			'kindAlias'       : '別名',
			'kindAliasBroken' : '宛先不明の別名',
			// applications
			'kindApp'         : 'アプリケーション',
			'kindPostscript'  : 'Postscript ドキュメント',
			'kindMsOffice'    : 'Microsoft Office ドキュメント',
			'kindMsWord'      : 'Microsoft Word ドキュメント',
			'kindMsExcel'     : 'Microsoft Excel ドキュメント',
			'kindMsPP'        : 'Microsoft Powerpoint プレゼンテーション',
			'kindOO'          : 'Open Office ドキュメント',
			'kindAppFlash'    : 'Flash アプリケーション',
			'kindPDF'         : 'PDF',
			'kindTorrent'     : 'Bittorrent ファイル',
			'kind7z'          : '7z アーカイブ',
			'kindTAR'         : 'TAR アーカイブ',
			'kindGZIP'        : 'GZIP アーカイブ',
			'kindBZIP'        : 'BZIP アーカイブ',
			'kindXZ'          : 'XZ アーカイブ',
			'kindZIP'         : 'ZIP アーカイブ',
			'kindRAR'         : 'RAR アーカイブ',
			'kindJAR'         : 'Java JAR ファイル',
			'kindTTF'         : 'True Type フォント',
			'kindOTF'         : 'Open Type フォント',
			'kindRPM'         : 'RPM パッケージ',
			// texts
			'kindText'        : 'Text ドキュメント',
			'kindTextPlain'   : 'プレインテキスト',
			'kindPHP'         : 'PHP ソース',
			'kindCSS'         : 'スタイルシート',
			'kindHTML'        : 'HTML ドキュメント',
			'kindJS'          : 'Javascript ソース',
			'kindRTF'         : 'Rich Text フォーマット',
			'kindC'           : 'C ソース',
			'kindCHeader'     : 'C ヘッダーソース',
			'kindCPP'         : 'C++ ソース',
			'kindCPPHeader'   : 'C++ ヘッダーソース',
			'kindShell'       : 'Unix shell スクリプト',
			'kindPython'      : 'Python ソース',
			'kindJava'        : 'Java ソース',
			'kindRuby'        : 'Ruby ソース',
			'kindPerl'        : 'Perl スクリプト',
			'kindSQL'         : 'SQL ソース',
			'kindXML'         : 'XML ドキュメント',
			'kindAWK'         : 'AWK ソース',
			'kindCSV'         : 'CSV',
			'kindDOCBOOK'     : 'Docbook XML ドキュメント',
			'kindMarkdown'    : 'Markdown テキスト', // added 20.7.2015
			// images
			'kindImage'       : 'イメージ',
			'kindBMP'         : 'BMP イメージ',
			'kindJPEG'        : 'JPEG イメージ',
			'kindGIF'         : 'GIF イメージ',
			'kindPNG'         : 'PNG イメージ',
			'kindTIFF'        : 'TIFF イメージ',
			'kindTGA'         : 'TGA イメージ',
			'kindPSD'         : 'Adobe Photoshop イメージ',
			'kindXBITMAP'     : 'X bitmap イメージ',
			'kindPXM'         : 'Pixelmator イメージ',
			// media
			'kindAudio'       : 'オーディオメディア',
			'kindAudioMPEG'   : 'MPEG オーディオ',
			'kindAudioMPEG4'  : 'MPEG-4 オーディオ',
			'kindAudioMIDI'   : 'MIDI オーディオ',
			'kindAudioOGG'    : 'Ogg Vorbis オーディオ',
			'kindAudioWAV'    : 'WAV オーディオ',
			'AudioPlaylist'   : 'MP3 プレイリスト',
			'kindVideo'       : 'ビデオメディア',
			'kindVideoDV'     : 'DV ムービー',
			'kindVideoMPEG'   : 'MPEG ムービー',
			'kindVideoMPEG4'  : 'MPEG-4 ムービー',
			'kindVideoAVI'    : 'AVI ムービー',
			'kindVideoMOV'    : 'Quick Time ムービー',
			'kindVideoWM'     : 'Windows Media ムービー',
			'kindVideoFlash'  : 'Flash ムービー',
			'kindVideoMKV'    : 'Matroska ムービー',
			'kindVideoOGG'    : 'Ogg ムービー'
		}
	};
}));

lib/js/i18n/elfinder.fo.js000064400000102062147361034410011242 0ustar00/**
 * Faroese translation
 * @author Marius Hammer <marius@vrg.fo>
 * @version 2022-03-01
 */
(function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.fo = {
		translator : 'Marius Hammer &lt;marius@vrg.fo&gt;',
		language   : 'Faroese',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 01.03.2022 11:44
		fancyDateFormat : '$1 H:i', // will show like: Í dag 11:44
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220301-114438
		messages   : {
			'getShareText' : 'Deildu',
			'Editor ': 'Kóðaritill',
			/********************************** errors **********************************/
			'error'                : 'Villa íkomin',
			'errUnknown'           : 'Ókend villa.',
			'errUnknownCmd'        : 'Ókend boð.',
			'errJqui'              : 'Ógildig jQuery UI konfiguratión. Vælbærar, sum kunnu hálast runt og kunnu sleppast skulu takast við.',
			'errNode'              : 'elFinder krevur DOM Element stovna.',
			'errURL'               : 'Ugyldig elFinder konfiguration! URL stilling er ikki ásett.',
			'errAccess'            : 'Atgongd nokta.',
			'errConnect'           : 'Far ikki samband við backend.',
			'errAbort'             : 'Sambandi avbrotið.',
			'errTimeout'           : 'Sambandi broti av.',
			'errNotFound'          : 'Backend ikki funnið.',
			'errResponse'          : 'Ógildugt backend svar.',
			'errConf'              : 'Ógildugt backend konfiguratión.',
			'errJSON'              : 'PHP JSON modulið er ikki innstallera.',
			'errNoVolumes'         : 'Lesiligar mappur er ikki atkomulig.',
			'errCmdParams'         : 'Ógildigar stillingar fyri kommando "$1".',
			'errDataNotJSON'       : 'Dáta er ikki JSON.',
			'errDataEmpty'         : 'Dáta er tømt.',
			'errCmdReq'            : 'Backend krevur eitt kommando navn.',
			'errOpen'              : 'Kundi ikki opna "$1".',
			'errNotFolder'         : 'Luturin er ikki ein mappa.',
			'errNotFile'           : 'Luturin er ikki ein fíla.',
			'errRead'              : 'Kundi ikki lesa til "$1".',
			'errWrite'             : 'Kundi ikki skriva til "$1".',
			'errPerm'              : 'Atgongd nokta.',
			'errLocked'            : '"$1" er løst og kann ikki umdoybast, flytast ella strikast.',
			'errExists'            : 'Tað finst longu ein fíla við navn "$1".',
			'errInvName'           : 'Ógildugt fíla navn.',
			'errInvDirname'        : 'Ógilt nafn möppu.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Mappa ikki funnin.',
			'errFileNotFound'      : 'Fíla ikki funnin.',
			'errTrgFolderNotFound' : 'Mappan "$1" bleiv ikke funnin.',
			'errPopup'             : 'Kagin forðaði í at opna eitt popup-vindeyga. Fyri at opna fíluna, aktivera popup-vindeygu í tínum kaga stillingum.',
			'errMkdir'             : '\'Kundi ikki stovna mappu "$1".',
			'errMkfile'            : 'Kundi ikki stovna mappu "$1".',
			'errRename'            : 'Kundi ikki umdoyba "$1".',
			'errCopyFrom'          : 'Kopiering av fílum frá mappuni "$1" er ikke loyvt.',
			'errCopyTo'            : 'Kopiering av fílum til mappuna "$1" er ikke loyvt.',
			'errMkOutLink'         : 'Ikki ført fyri at stovna leinkju til uttanfyri \'volume\' rót.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Innlegginar feilur.',  // old name - errUploadCommon
			'errUploadFile'        : 'Kundi ikki leggja "$1" inn.', // old name - errUpload
			'errUploadNoFiles'     : 'Ongar fílar funnir at leggja inn.',
			'errUploadTotalSize'   : 'Dátain er størri enn mest loyvda støddin.', // old name - errMaxSize
			'errUploadFileSize'    : 'Fíla er størri enn mest loyvda støddin.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Fílu slag ikki góðkent.',
			'errUploadTransfer'    : '"$1" innleggingar feilur.',
			'errUploadTemp'        : 'Ikki ført fyri at gera fyribils fílu fyri innlegging.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Lutur "$1" finst longu á hesum stað og can ikki skiftast út av lutið av øðrum slag.', // new
			'errReplace'           : 'Ikki ført fyri at erstattae "$1".',
			'errSave'              : 'Kundi ikki goyma "$1".',
			'errCopy'              : 'Kundi ikki kopiera "$1".',
			'errMove'              : 'Kundi ikki flyta "$1".',
			'errCopyInItself'      : 'Kundi ikki kopiera "$1" inn í seg sjálva.',
			'errRm'                : 'Kundi ikki strika "$1".',
			'errTrash'             : 'Ekki hægt að fara í ruslið.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Ikki ført fyri at strika keldu fíla(r).',
			'errExtract'           : 'Kundi ikki útpakka fílar frá "$1".',
			'errArchive'           : 'Kundi ikki stovna arkiv.',
			'errArcType'           : 'Arkiv slagið er ikki stuðla.',
			'errNoArchive'         : 'Fílan er ikki eitt arkiv ella er ikki eitt stuðla arkiva slag.',
			'errCmdNoSupport'      : 'Backend stuðlar ikki hesi boð.',
			'errReplByChild'       : 'appan "$1" kann ikki erstattast av einari vøru, hon inniheldur.',
			'errArcSymlinks'       : 'Av trygdarávum grundum, noktaði skipanin at pakka út arkivir ið innihalda symlinks ella fílur við nøvn ið ikki eru loyvd.', // edited 24.06.2012
			'errArcMaxSize'        : 'Arkiv fílar fylla meir enn mest loyvda støddin.',
			'errResize'            : 'Kundi ikki broyta støddina á "$1".',
			'errResizeDegree'      : 'Ógildugt roterings stig.',  // added 7.3.2013
			'errResizeRotate'      : 'Ikki ført fyri at rotera mynd.',  // added 7.3.2013
			'errResizeSize'        : 'Ógildug myndastødd.',  // added 7.3.2013
			'errResizeNoChange'    : 'Mynda stødd ikki broytt.',  // added 7.3.2013
			'errUsupportType'      : 'Ikki stuðla fíla slag.',
			'errNotUTF8Content'    : 'Fílan "$1" er ikki í UTF-8 og kann ikki vera rættað.',  // added 9.11.2011
			'errNetMount'          : 'Kundi ikki "mounta" "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Ikki stuðla protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Mount miseydnaðist.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Host kravt.', // added 18.04.2012
			'errSessionExpires'    : 'Tín seta er útgingin vegna óvirkniy.',
			'errCreatingTempDir'   : 'Ikki ført fyri at stovna fyribils fíluskrá: "$1"',
			'errFtpDownloadFile'   : 'Ikki ført fyri at taka fílu niður frá FTP: "$1"',
			'errFtpUploadFile'     : 'Ikki ført fyri at leggja fílu til FTP: "$1"',
			'errFtpMkdir'          : 'Ikki ført fyri at stovna fjar-fílaskrá á FTP: "$1"',
			'errArchiveExec'       : 'Villa íkomin undir arkiveran af fílar: "$1"',
			'errExtractExec'       : 'Villa íkomin undir útpakking af fílum: "$1"',
			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Kann ikki broytast til UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Royn Google Chrome, um tú ynskir at leggja mappu innn.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Tími rann út þegar leitað var að "$1". Leitarniðurstaða er að hluta.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Endurheimild er krafist.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Hámarksfjöldi vara sem hægt er að velja er $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Ekki er hægt að endurheimta úr ruslinu. Ekki er hægt að bera kennsl á endurheimtunarstaðinn.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Ritstjóri fannst ekki fyrir þessa skráartegund.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Villa kom upp á þjóninum.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Ekki tókst að tæma möppuna "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Það eru $1 villur í viðbót.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Þú getur búið til allt að $1 möppur í einu.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Stovna arkiv',
			'cmdback'      : 'Aftur\'',
			'cmdcopy'      : 'Kopier',
			'cmdcut'       : 'Klipp',
			'cmddownload'  : 'Tak niður',
			'cmdduplicate' : 'Tvífalda',
			'cmdedit'      : 'Rætta fílu',
			'cmdextract'   : 'Pakka út fílar úr arkiv',
			'cmdforward'   : 'Fram',
			'cmdgetfile'   : 'Vel fílar',
			'cmdhelp'      : 'Um hesa software',
			'cmdhome'      : 'Heim',
			'cmdinfo'      : 'Fá upplýsingar',
			'cmdmkdir'     : 'Nýggja mappu',
			'cmdmkdirin'   : 'Inn í nýja möppu', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nýggja fílu',
			'cmdopen'      : 'Opna',
			'cmdpaste'     : 'Set inn',
			'cmdquicklook' : 'Forsýning',
			'cmdreload'    : 'Les inn umaftur',
			'cmdrename'    : 'Umdoyp',
			'cmdrm'        : 'Strika',
			'cmdtrash'     : 'Í ruslið', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Endurheimta', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Finn fílar',
			'cmdup'        : 'Eitt stig upp',
			'cmdupload'    : 'Legg fílar inn',
			'cmdview'      : 'Síggj',
			'cmdresize'    : 'Tillaga stødd & Roter',
			'cmdsort'      : 'Raða',
			'cmdnetmount'  : 'Settu hljóðstyrk netkerfisins', // added 18.04.2012
			'cmdnetunmount': 'Aftengja', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Til støð', // added 28.12.2014
			'cmdchmod'     : 'Broytir stíl', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Opnaðu möppu', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Endurstilla dálkbreidd', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Fullur skjár', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Færa', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Tæmdu möppuna', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Afturkalla', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Gera aftur', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Kjörstillingar', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Velja allt', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Veldu ekkert', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Snúa vali við', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Opna í nýjum glugga', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Fela (Preference)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Lat aftur',
			'btnSave'   : 'Goym',
			'btnRm'     : 'Strika',
			'btnApply'  : 'Brúka',
			'btnCancel' : 'Angra',
			'btnNo'     : 'Nei',
			'btnYes'    : 'Ja',
			'btnMount'  : 'Mount',  // added 18.04.2012
			'btnApprove': 'Farðu í $1 og samþykktu', // from v2.1 added 26.04.2012
			'btnUnmount': 'Aftengja', // from v2.1 added 30.04.2012
			'btnConv'   : 'Konverter', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Her',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Hljóðstyrkur',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Øll',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME Slag', // from v2.1 added 22.5.2015
			'btnFileName':'Fílunavn',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Goym & Lat aftur', // from v2.1 added 12.6.2015
			'btnBackup' : 'Öryggisafrit', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Endurnefna',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Endurnefna (Allt)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Fyrri ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Næst ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Vista sem', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Opna mappu',
			'ntffile'     : '\'Opna fílu',
			'ntfreload'   : 'Les innaftur mappu innihald',
			'ntfmkdir'    : 'Stovnar mappu',
			'ntfmkfile'   : 'Stovnar fílur',
			'ntfrm'       : 'Strikar fílur',
			'ntfcopy'     : 'Kopierar fílur',
			'ntfmove'     : 'Flytur fílar',
			'ntfprepare'  : 'Ger klárt at kopiera fílar',
			'ntfrename'   : 'Umdoyp fílar',
			'ntfupload'   : 'Leggur inn fílar',
			'ntfdownload' : 'Tekur fílar niður',
			'ntfsave'     : 'Goymir fílar',
			'ntfarchive'  : 'Stovnar arkiv',
			'ntfextract'  : 'Útpakkar fílar frá arkiv',
			'ntfsearch'   : 'Leitar eftir fílum',
			'ntfresize'   : 'Broytir stødd á fílur',
			'ntfsmth'     : '\'Ger okkurt >_<',
			'ntfloadimg'  : 'Lesur mynd inn',
			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Tekur mynda vídd', // added 20.05.2013
			'ntfreaddir'  : 'Lesur mappu upplýsingar', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Far URL af leinkju', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Broyti fílu stíl', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Kannar fílunavnið á fílu', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Að búa til skrá til að sækja', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Að sækja upplýsingar um slóð', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Er að vinna úr skránni sem hlaðið var upp', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Er að henda í ruslið', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Að gera endurheimt úr ruslinu', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Athugar áfangamöppu', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Afturkallar fyrri aðgerð', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Endurgerir fyrra afturkallað', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Athugun á innihaldi', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Ruslið', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'ókent',
			'Today'       : 'Í dag',
			'Yesterday'   : 'Í gjár',
			'msJan'       : 'Jan',
			'msFeb'       : 'Feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Mai',
			'msJun'       : 'Jun',
			'msJul'       : 'Jul',
			'msAug'       : 'Aug',
			'msSep'       : 'Sep',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'Des',
			'January'     : 'Januar',
			'February'    : 'Februar',
			'March'       : 'Mars',
			'April'       : 'Apríl',
			'May'         : 'Mai',
			'June'        : 'Juni',
			'July'        : 'Juli',
			'August'      : 'August',
			'September'   : 'September',
			'October'     : 'Oktober',
			'November'    : 'November',
			'December'    : 'Desember',
			'Sunday'      : 'Sunnudag',
			'Monday'      : 'Mánadag',
			'Tuesday'     : 'Týsdag',
			'Wednesday'   : 'Mikudag',
			'Thursday'    : 'Hósdag',
			'Friday'      : 'Fríggjadag',
			'Saturday'    : 'Leygardag',
			'Sun'         : 'Sun',
			'Mon'         : 'Mán',
			'Tue'         : 'Týs',
			'Wed'         : 'Mik',
			'Thu'         : 'Hós',
			'Fri'         : 'Frí',
			'Sat'         : 'Ley',

			/******************************** sort variants ********************************/
			'sortname'          : 'eftir navn',
			'sortkind'          : 'eftir slag',
			'sortsize'          : 'eftir stødd',
			'sortdate'          : 'eftir dato',
			'sortFoldersFirst'  : 'mappur fyrst',
			'sortperm'          : 'með leyfi', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'eftir ham',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'eftir eiganda',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'eftir hópi',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Einnig Treeview',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'NýggjaFílu.txt', // added 10.11.2015
			'untitled folder'   : 'NýggjaMappu',   // added 10.11.2015
			'Archive'           : 'NýtArkiv',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Nýskrá.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Skrá',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Váttan kravd',
			'confirmRm'       : 'Ert tú vísur í at tú ynskir at strika fílarnar?<br/>Hetta kann ikki angrast!',
			'confirmRepl'     : 'Erstatta gomlu fílu við nýggja?',
			'confirmRest'     : 'Skipta út núverandi hlut með hlutnum í ruslinu?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Brúka á øll', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Ekki var hægt að greina stafakóðun þessarar skráar. Það þarf að breyta tímabundið í UTF-8 til að breyta.<br/>Vinsamlegast veldu táknkóðun þessarar skráar.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Er blivi rættað.<br/>Missir sínar broytingar um tú ikki goymir.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Ertu viss um að þú viljir færa hluti í ruslafötuna?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Ertu viss um að þú viljir færa hluti í "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Brúka til øll',
			'name'            : 'Navn',
			'size'            : 'Stødd',
			'perms'           : 'Rættindi',
			'modify'          : 'Rættað',
			'kind'            : 'Slag',
			'read'            : 'síggja',
			'write'           : 'broyta',
			'noaccess'        : 'onga atgongd',
			'and'             : 'og',
			'unknown'         : 'ókent',
			'selectall'       : 'Vel allar fílur',
			'selectfiles'     : 'Vel fílu(r)',
			'selectffile'     : 'Vel fyrstu fílu',
			'selectlfile'     : 'Vel síðstu fílu',
			'viewlist'        : 'Lista vísing',
			'viewicons'       : 'Ikon vísing',
			'viewSmall'       : 'Lítil tákn', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Miðlungs tákn', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Stór tákn', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra stór tákn', // from v2.1.39 added 22.5.2018
			'places'          : 'Støð',
			'calc'            : 'Rokna',
			'path'            : 'Stiga',
			'aliasfor'        : 'Hjánavn fyri',
			'locked'          : 'Læst',
			'dim'             : 'Vídd',
			'files'           : 'Fílur',
			'folders'         : 'Mappur',
			'items'           : 'Myndir',
			'yes'             : 'ja',
			'no'              : 'nei',
			'link'            : 'Leinkja',
			'searcresult'     : 'Leiti úrslit',
			'selected'        : 'valdar myndir',
			'about'           : 'Um',
			'shortcuts'       : 'Snarvegir',
			'help'            : 'Hjálp',
			'webfm'           : 'Web fílu umsitan',
			'ver'             : 'Útgáva',
			'protocolver'     : 'protokol versión',
			'homepage'        : 'Verkætlan heim',
			'docs'            : 'Skjalfesting',
			'github'          : 'Mynda okkum á Github',
			'twitter'         : 'Fylg okkum á twitter',
			'facebook'        : 'Fylg okkum á facebook',
			'team'            : 'Lið',
			'chiefdev'        : 'forritaleiðari',
			'developer'       : 'forritari',
			'contributor'     : 'stuðulsveitari',
			'maintainer'      : 'viðlíkahaldari',
			'translator'      : 'umsetari',
			'icons'           : 'Ikonir',
			'dontforget'      : 'og ekki gleyma að taka handklæðið þitt',
			'shortcutsof'     : 'Snarvegir sligi frá',
			'dropFiles'       : 'Slepp fílur her',
			'or'              : 'ella',
			'selectForUpload' : 'Vel fílur at leggja inn',
			'moveFiles'       : 'Flyt fílur',
			'copyFiles'       : 'Kopier fílur',
			'restoreFiles'    : 'Endurheimta hluti', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Flyt frá støð',
			'aspectRatio'     : 'Skermformat',
			'scale'           : 'Skalera',
			'width'           : 'Longd',
			'height'          : 'Hædd',
			'resize'          : 'Tilliga stødd',
			'crop'            : 'Sker til',
			'rotate'          : 'Rotera',
			'rotate-cw'       : 'Rotera 90 gradir við urið',
			'rotate-ccw'      : 'otera 90 gradir móti urið',
			'degree'          : '°',
			'netMountDialogTitle' : 'Settu hljóðstyrk netkerfisins', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Host', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Brúkari', // added 18.04.2012
			'pass'                : 'Loyniorð', // added 18.04.2012
			'confirmUnmount'      : 'Ertu að taka $1 af?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Hála ella set innn fílar frá kaga', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Hála ella set inn fílar frá URls her', // from v2.1 added 07.04.2014
			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
			'locale'          : 'Tungumál',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'skotmark: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Leita við input MIME Type', // from v2.1 added 22.5.2015
			'owner'           : 'Eigari', // from v2.1 added 20.6.2015
			'group'           : 'Bólkur', // from v2.1 added 20.6.2015
			'other'           : 'Annað', // from v2.1 added 20.6.2015
			'execute'         : 'Útfør', // from v2.1 added 20.6.2015
			'perm'            : 'Rættindi', // from v2.1 added 20.6.2015
			'mode'            : 'Mode', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Mappan er tóm', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Mappan er tóm\\Slepptu til að bæta við hlutum', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Mappan er tóm\\Langsmellið til að bæta við hlutum', // from v2.1.6 added 30.12.2015
			'quality'         : 'Gæði', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Sjálfvirk samstilling',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Fara upp',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Fáðu slóð tengil', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Valdir hlutir ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Auðkenni möppu', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Leyfa aðgang án nettengingar', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Til að sannvotta aftur', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Hleður núna...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Opnaðu margar skrár', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Þú ert að reyna að opna $1 skrárnar. Ertu viss um að þú viljir opna í vafra?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Leitarniðurstöður eru tómar í leitarmarkmiði.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Það er verið að breyta skrá.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Þú hefur valið $1 atriði.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Þú ert með $1 atriði á klippiborðinu.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Stigvaxandi leit er aðeins frá núverandi skjá.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Settu aftur inn', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 lokið', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Samhengisvalmynd', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Blaðsnúningur', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Rætur bindi', // from v2.1.16 added 16.9.2016
			'reset'           : 'Endurstilla', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Bakgrunns litur', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Litaplokkari', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Virkt', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Öryrkjar', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Leitarniðurstöður eru tómar í núverandi yfirliti.\\AÝttu á [Enter] til að stækka leitarmarkmiðið.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Fyrsta stafur leitarniðurstöður eru tómar í núverandi skjá.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Texti merki', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 mín eftir', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Opnaðu aftur með valinni kóðun', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Vistaðu með völdum kóðun', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Veldu möppu', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Fyrsta stafs leit', // from v2.1.23 added 24.3.2017
			'presets'         : 'Forstillingar', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Það er of mikið af hlutum svo það má ekki fara í ruslið.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Tæmdu möppuna "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'Það eru engin atriði í möppunni "$1".', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
			'language'        : 'Tungumál', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Uppstilltu stillingarnar sem vistaðar eru í þessum vafra', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Stillingar tækjastikunnar', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 stafir eftir.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 línur eftir.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Summa', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Gróf skráarstærð', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Einbeittu þér að þætti gluggans með músinni',  // from v2.1.30 added 2.11.2017
			'select'          : 'Veljið', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Aðgerð þegar skrá er valin', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Opna með ritlinum sem notaður var síðast', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Snúa vali við', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Ertu viss um að þú viljir endurnefna $1 valin atriði eins og $2?<br/>Ekki er hægt að afturkalla þetta!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Endurnefna runu', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Númer', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Bæta við forskeyti', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Bæta við viðskeyti', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Breyta eftirnafn', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Dálkastillingar (listayfirlit)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Allar breytingar birtast strax í skjalasafninu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Allar breytingar munu ekki endurspeglast fyrr en aftengdu þetta hljóðstyrk.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Eftirfarandi bindi(r) sem sett voru á þetta bindi voru einnig afsett. Ertu viss um að taka það af?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Upplýsingar um val', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Reiknirit til að sýna skráarhash', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Upplýsingaatriði (upplýsingaborð fyrir val)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Ýttu aftur til að hætta.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Tækjastikan', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Vinnurými', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialog', // from v2.1.38 added 4.4.2018
			'all'             : 'Allt', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Táknstærð (táknskjár)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Opnaðu hámarks ritstjóragluggann', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Vegna þess að umbreyting með API er ekki í boði eins og er, vinsamlegast umbreyttu á vefsíðunni.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Eftir umbreytingu verður þú að vera hlaðið upp með vefslóð hlutarins eða niðurhalðri skrá til að vista breyttu skrána.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Umbreyttu á síðunni $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Samþættingar', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Þessi elFinder hefur eftirfarandi ytri þjónustu samþætta. Vinsamlegast athugaðu notkunarskilmála, persónuverndarstefnu osfrv. áður en þú notar það.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Sýndu falin atriði', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Fela falin atriði', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Sýna/fela falin atriði', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Skráargerðir til að virkja með "Ný skrá"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Tegund textaskráarinnar', // from v2.1.41 added 7.8.2018
			'add'             : 'Bæta við', // from v2.1.41 added 7.8.2018
			'theme'           : 'Þema', // from v2.1.43 added 19.10.2018
			'default'         : 'Sjálfgefna', // from v2.1.43 added 19.10.2018
			'description'     : 'Lýsing', // from v2.1.43 added 19.10.2018
			'website'         : 'Vefsíða', // from v2.1.43 added 19.10.2018
			'author'          : 'Höfundur', // from v2.1.43 added 19.10.2018
			'email'           : 'Tölvupóstur', // from v2.1.43 added 19.10.2018
			'license'         : 'Leyfi', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Ekki er hægt að vista þetta atriði. Til að forðast að tapa breytingunum þarftu að flytja út á tölvuna þína.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Tvísmelltu á skrána til að velja hana.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Notaðu fullskjástillingu', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Ókent',
			'kindRoot'        : 'Hljóðstyrksrót', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Mappa',
			'kindSelects'     : 'Valmöguleikar', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Hjánavn',
			'kindAliasBroken' : 'Óvirki hjánavn',
			// applications
			'kindApp'         : 'Applikatión',
			'kindPostscript'  : 'Postscript skjal',
			'kindMsOffice'    : 'Microsoft Office skjal',
			'kindMsWord'      : 'Microsoft Word skjal',
			'kindMsExcel'     : 'Microsoft Excel skjal',
			'kindMsPP'        : 'Microsoft Powerpoint framløga',
			'kindOO'          : 'Open Office skjal',
			'kindAppFlash'    : 'Flash applikatión',
			'kindPDF'         : 'Færanlegt skjalasnið (PDF)',
			'kindTorrent'     : 'Bittorrent fíla',
			'kind7z'          : '7z arkiv',
			'kindTAR'         : 'TAR arkiv',
			'kindGZIP'        : 'GZIP arkiv',
			'kindBZIP'        : 'BZIP arkiv',
			'kindXZ'          : 'XZ arkiv',
			'kindZIP'         : 'ZIP arkiv',
			'kindRAR'         : 'RAR arkiv',
			'kindJAR'         : 'Java JAR ffílaile',
			'kindTTF'         : 'True Type leturgerð',
			'kindOTF'         : 'Opnaðu leturgerð',
			'kindRPM'         : 'RPM pakki',
			// texts
			'kindText'        : 'Text skjal',
			'kindTextPlain'   : 'Reinur tekstur',
			'kindPHP'         : 'PHP kelda',
			'kindCSS'         : 'Cascading style sheet (CSS)',
			'kindHTML'        : 'HTML skjal',
			'kindJS'          : 'Javascript kelda',
			'kindRTF'         : 'Rich Text Format (RTF)',
			'kindC'           : 'C kelda',
			'kindCHeader'     : 'C header kelda',
			'kindCPP'         : 'C++ kelda',
			'kindCPPHeader'   : 'C++ header kelda',
			'kindShell'       : 'Unix skel handrit',
			'kindPython'      : 'Python kelda',
			'kindJava'        : 'Java kelda',
			'kindRuby'        : 'Ruby kelda',
			'kindPerl'        : 'Perl handrit',
			'kindSQL'         : 'SQL kelda',
			'kindXML'         : 'XML skjal',
			'kindAWK'         : 'AWK kelda',
			'kindCSV'         : 'Comma separated values (CSV)',
			'kindDOCBOOK'     : 'Docbook XML skjal',
			'kindMarkdown'    : 'Markdown texti', // added 20.7.2015
			// images
			'kindImage'       : 'Mynd',
			'kindBMP'         : 'BMP mynd',
			'kindJPEG'        : 'JPEG mynd',
			'kindGIF'         : 'GIF mynd',
			'kindPNG'         : 'PNG mynd',
			'kindTIFF'        : 'TIFF mynd',
			'kindTGA'         : 'TGA mynd',
			'kindPSD'         : 'Adobe Photoshop mynd',
			'kindXBITMAP'     : 'X bitmap mynd',
			'kindPXM'         : 'Pixelmator mynd',
			// media
			'kindAudio'       : 'Hljóðmiðlar',
			'kindAudioMPEG'   : 'MPEG ljóðfíla',
			'kindAudioMPEG4'  : 'MPEG-4 ljóðfíla',
			'kindAudioMIDI'   : 'MIDI ljóðfíla',
			'kindAudioOGG'    : 'Ogg Vorbis ljóðfíla',
			'kindAudioWAV'    : 'WAV ljóðfíla',
			'AudioPlaylist'   : 'MP3 playlisti',
			'kindVideo'       : 'Myndbandsmiðlar',
			'kindVideoDV'     : 'DV filmur',
			'kindVideoMPEG'   : 'MPEG filmur',
			'kindVideoMPEG4'  : 'MPEG-4 filmur',
			'kindVideoAVI'    : 'AVI filmur',
			'kindVideoMOV'    : 'Quick Time filmur',
			'kindVideoWM'     : 'Windows Media filmur',
			'kindVideoFlash'  : 'Flash filmur',
			'kindVideoMKV'    : 'Matroska filmur',
			'kindVideoOGG'    : 'Ogg filmur'
		}
	};
}));lib/js/i18n/elfinder.sk.js000064400000104427147361034410011262 0ustar00/**
 * Slovenčina translation
 * @author RobiNN <kelcakrobo@gmail.com>
 * @author Jakub Ďuraš <jkblmr@gmail.com>
 * @version 2022-03-03
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.sk = {
		translator : 'RobiNN &lt;kelcakrobo@gmail.com&gt;, Jakub Ďuraš &lt;jkblmr@gmail.com&gt;',
		language   : 'Slovenčina',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 03.03.2022 11:36
		fancyDateFormat : '$1 H:i', // will show like: Dnes 11:36
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220303-113626
		messages   : {
			'getShareText' : 'zdieľam',
			'Editor ': 'Editor kódu',

			/********************************** errors **********************************/
			'error'                : 'Chyba',
			'errUnknown'           : 'Neznáma chyba.',
			'errUnknownCmd'        : 'Neznámy príkaz.',
			'errJqui'              : 'Nesprávna jQuery UI konfigurácia. Selectable, draggable a droppable musia byť načítané.',
			'errNode'              : 'elFinder vyžaduje vytvorenie DOM elementu.',
			'errURL'               : 'Nesprávna elFinder konfigurácia! URL nie je definovaná.',
			'errAccess'            : 'Prístup zamietnutý.',
			'errConnect'           : 'Nepodarilo sa pripojiť do backendu.',
			'errAbort'             : 'Spojenie bolo prerušené.',
			'errTimeout'           : 'Časový limit vypršal.',
			'errNotFound'          : 'Backend nenájdený.',
			'errResponse'          : 'Nesprávna backend odpoveď.',
			'errConf'              : 'Nesprávna backend konfigurácia.',
			'errJSON'              : 'PHP JSON modul nie je nainštalovaný.',
			'errNoVolumes'         : 'Nie sú dostupné žiadne čitateľné média.',
			'errCmdParams'         : 'Nesprávne parametre pre príkaz "$1".',
			'errDataNotJSON'       : 'Dáta nie sú formátu JSON.',
			'errDataEmpty'         : 'Prázdne dáta.',
			'errCmdReq'            : 'Backend požiadavka požaduje názov príkazu.',
			'errOpen'              : 'Nie je možné otvoriť "$1".',
			'errNotFolder'         : 'Objekt nie je priečinok.',
			'errNotFile'           : 'Objekt nie je súbor.',
			'errRead'              : 'Nie je možné prečítať "$1".',
			'errWrite'             : 'Nie je možné písať do "$1".',
			'errPerm'              : 'Prístup zamietnutý.',
			'errLocked'            : '"$1" je uzamknutý a nemôže byť premenovaný, presunutý alebo odstránený.',
			'errExists'            : 'Položka s názvom "$1" už existuje.',
			'errInvName'           : 'Neplatný názov súboru.',
			'errInvDirname'        : 'Neplatný názov priečinka.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Priečinok nebol nájdený.',
			'errFileNotFound'      : 'Súbor nenájdený.',
			'errTrgFolderNotFound' : 'Cieľový priečinok "$1" sa nenašiel.',
			'errPopup'             : 'Prehliadač zabránil otvoreniu vyskakovacieho okna. Pre otvorenie súboru povoľte vyskakovacie okná.',
			'errMkdir'             : 'Nepodarilo sa vytvoriť priečinok "$1".',
			'errMkfile'            : 'Nepodarilo sa vytvoriť súbor "$1".',
			'errRename'            : 'Nepodarilo sa premenovať "$1".',
			'errCopyFrom'          : 'Kopírovanie súborov z média "$1" nie je povolené.',
			'errCopyTo'            : 'Kopírovanie súborov na médium "$1" nie je povolené.',
			'errMkOutLink'         : 'Nie je možné vytvoriť odkaz mimo koreňového zväzku.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Chyba pri nahrávaní.',  // old name - errUploadCommon
			'errUploadFile'        : 'Nepodarilo sa nahrať "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Neboli nájdené žiadne súbory na nahranie.',
			'errUploadTotalSize'   : 'Dáta prekračujú maximálnu povolenú veľkosť.', // old name - errMaxSize
			'errUploadFileSize'    : 'Súbor prekračuje maximálnu povolenú veľkosť.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Nepovolený typ súboru.',
			'errUploadTransfer'    : 'Problém s nahrávaním "$1".',
			'errUploadTemp'        : 'Nepodarilo sa vytvoriť dočasný súbor na nahranie.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Objekt "$1" na tomto mieste už existuje a nemôže byť nahradený objektom iného typu.', // new
			'errReplace'           : 'Nie je možné nahradiť "$1".',
			'errSave'              : 'Nie je možné uložiť "$1".',
			'errCopy'              : 'Nie je možné kopírovať "$1".',
			'errMove'              : 'Nie je možné preniesť "$1".',
			'errCopyInItself'      : 'Nie je možné kopírovať "$1" do seba.',
			'errRm'                : 'Nie je možné vymazať "$1".',
			'errTrash'             : 'Nie je možné presunúť do koša.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Nie je možné odstrániť zdrojový/é súbor/y.',
			'errExtract'           : 'Nie je možné extrahovať súbory z "$1".',
			'errArchive'           : 'Nie je možné vytvoriť archív.',
			'errArcType'           : 'Nepodporovaný typ archívu.',
			'errNoArchive'         : 'Súbor nie je archív alebo má nepodporovaný typ archívu.',
			'errCmdNoSupport'      : 'Backend nepodporuje tento príkaz.',
			'errReplByChild'       : 'Priečinok "$1" nemôže byť nahradený položkou, ktorú už obsahuje.',
			'errArcSymlinks'       : 'Z bezpečnostných dôvodov bolo zakázané extrahovanie archívov obsahujúcich symlinky, alebo súborov s nepovolenými názvami.', // edited 24.06.2012
			'errArcMaxSize'        : 'Súbory archívu prekračujú maximálnu povolenú veľkosť.',
			'errResize'            : 'Nie je možné zmeniť veľkosť "$1".',
			'errResizeDegree'      : 'Neplatný stupeň otočenia.',  // added 7.3.2013
			'errResizeRotate'      : 'Nie je možné otočiť obrázok.',  // added 7.3.2013
			'errResizeSize'        : 'Neplatná veľkosť obrázka.',  // added 7.3.2013
			'errResizeNoChange'    : 'Veľkosť obrázku sa nezmenila.',  // added 7.3.2013
			'errUsupportType'      : 'Nepodporovaný typ súboru.',
			'errNotUTF8Content'    : 'Súbor "$1" nie je v UTF-8 a nemôže byť upravený.',  // added 9.11.2011
			'errNetMount'          : 'Nie je možné pripojiť "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Nepodporovaný protokol.',     // added 17.04.2012
			'errNetMountFailed'    : 'Pripájanie zlyhalo.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Hosť je požadovaný.', // added 18.04.2012
			'errSessionExpires'    : 'Vaša relácia vypršala kvôli nečinnosti.',
			'errCreatingTempDir'   : 'Nepodarilo sa vytvoriť dočasný adresár: "$1"',
			'errFtpDownloadFile'   : 'Nie je možné stiahnuť súbor z FTP: "$1"',
			'errFtpUploadFile'     : 'Nie je možné nahrať súbor na FTP: "$1"',
			'errFtpMkdir'          : 'Nedá sa vytvoriť vzdialený adresár na FTP: "$1"',
			'errArchiveExec'       : 'Chyba pri archivácii súborov: "$1"',
			'errExtractExec'       : 'Chyba pri extrahovaní súborov: "$1"',
			'errNetUnMount'        : 'Nepodarilo sa odpojiť', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Nie je prevoditeľný na UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Vyskúšajte moderný prehliadač, ak chcete nahrať priečinok.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Vypršal časový limit pri hľadaní "$1". Výsledok vyhľadávania je čiastočný.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Opätovné povolenie je potrebné.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Maximálny počet voliteľných položiek je $1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Nepodarilo sa obnoviť z koša. Cieľ obnovenia nie je možné identifikovať.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Editor tohto typu súboru nebol nájdený.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Vyskytla sa chyba na strane servera.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Nepodarilo sa vyprázdniť priečinok "$1".', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Existujú ešte ďalšie $1 chyby.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Môžete vytvoriť až $1 priečinkov naraz.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Vytvoriť archív',
			'cmdback'      : 'Späť',
			'cmdcopy'      : 'Kopírovať',
			'cmdcut'       : 'Vystrihnúť',
			'cmddownload'  : 'Stiahnuť',
			'cmdduplicate' : 'Duplikovať',
			'cmdedit'      : 'Upraviť súbor',
			'cmdextract'   : 'Extrahovať súbory z archívu',
			'cmdforward'   : 'Ďalej',
			'cmdgetfile'   : 'Vybrať súbory',
			'cmdhelp'      : 'O tomto softvéri',
			'cmdhome'      : 'Domov',
			'cmdinfo'      : 'Info',
			'cmdmkdir'     : 'Nový priečinok',
			'cmdmkdirin'   : 'Do novej zložky', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Nový súbor',
			'cmdopen'      : 'Otvoriť',
			'cmdpaste'     : 'Vložiť',
			'cmdquicklook' : 'Náhľad',
			'cmdreload'    : 'Obnoviť',
			'cmdrename'    : 'Premenovať',
			'cmdrm'        : 'Vymazať',
			'cmdtrash'     : 'Do koša', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Obnoviť', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Nájsť súbory',
			'cmdup'        : 'Prejsť do nadradeného priečinka',
			'cmdupload'    : 'Nahrať súbory',
			'cmdview'      : 'Pozrieť',
			'cmdresize'    : 'Zmeniť veľkosť obrázku',
			'cmdsort'      : 'Zoradiť',
			'cmdnetmount'  : 'Pripojiť sieťové médium', // added 18.04.2012
			'cmdnetunmount': 'Odpojiť', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Do umiestnení', // added 28.12.2014
			'cmdchmod'     : 'Zmeniť režim', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Otvoriť priečinok', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Resetovať šírku stĺpca', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Celá obrazovka', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Posúvať', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Vyprázdniť priečinok', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Krok späť', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Vykonať znova', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Preferencie', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Vybrať všetko', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Nič nevyberať', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Invertovať výber', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Otvoriť v novom okne', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Skryť (Predvoľba)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Zavrieť',
			'btnSave'   : 'Uložiť',
			'btnRm'     : 'Vymazať',
			'btnApply'  : 'Použiť',
			'btnCancel' : 'Zrušiť',
			'btnNo'     : 'Nie',
			'btnYes'    : 'Áno',
			'btnMount'  : 'Pripojiť',  // added 18.04.2012
			'btnApprove': 'Ísť na $1 & schváliť', // from v2.1 added 26.04.2012
			'btnUnmount': 'Odpojiť', // from v2.1 added 30.04.2012
			'btnConv'   : 'Previesť', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Tu',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Médium',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Všetko',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME typ', // from v2.1 added 22.5.2015
			'btnFileName':'Názov súboru',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Uložiť & zavrieť', // from v2.1 added 12.6.2015
			'btnBackup' : 'Zálohovať', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Premenovať',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Premenovať všetko', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Predchádzajúce ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'Ďalšie ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Uložiť ako', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Otváranie priečinka',
			'ntffile'     : 'Otváranie súboru',
			'ntfreload'   : 'Znovu-načítanie obsahu priečinka',
			'ntfmkdir'    : 'Vytváranie priečinka',
			'ntfmkfile'   : 'Vytváranie súborov',
			'ntfrm'       : 'Vymazanie položiek',
			'ntfcopy'     : 'Kopírovanie položiek',
			'ntfmove'     : 'Premiestnenie položiek',
			'ntfprepare'  : 'Kontrola existujúcich položiek',
			'ntfrename'   : 'Premenovanie súborov',
			'ntfupload'   : 'Nahrávanie súborov',
			'ntfdownload' : 'Sťahovanie súborov',
			'ntfsave'     : 'Uloženie súborov',
			'ntfarchive'  : 'Vytváranie archívu',
			'ntfextract'  : 'Extrahovanie súborov z archívu',
			'ntfsearch'   : 'Vyhľadávanie súborov',
			'ntfresize'   : 'Zmena veľkosti obrázkov',
			'ntfsmth'     : 'Počkajte prosím...',
			'ntfloadimg'  : 'Načítavanie obrázka',
			'ntfnetmount' : 'Pripájanie sieťového média', // added 18.04.2012
			'ntfnetunmount': 'Odpájanie sieťového média', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Získanie rozmeru obrázka', // added 20.05.2013
			'ntfreaddir'  : 'Čítajú sa informácie o priečinku', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Získanie adresy URL odkazu', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Zmena súboru', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Overenie názvu nahravaného súboru', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Vytvorenie súboru na stiahnutie', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Získanie informácií o ceste', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Spracovanie nahraného súboru', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Vhadzovanie do koša', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Vykonávanie obnovy z koša', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Kontrola cieľového priečinka', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Zrušiť predchádzajúcu operáciu', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Obnovenie predchádzajúceho zrušenia', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Kôš', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'neznámy',
			'Today'       : 'Dnes',
			'Yesterday'   : 'Včera',
			'msJan'       : 'jan',
			'msFeb'       : 'feb',
			'msMar'       : 'Mar',
			'msApr'       : 'Apr',
			'msMay'       : 'Maj',
			'msJun'       : 'Jun',
			'msJul'       : 'Júl',
			'msAug'       : 'Aug',
			'msSep'       : 'sept',
			'msOct'       : 'Okt',
			'msNov'       : 'Nov',
			'msDec'       : 'dec',
			'January'     : 'Január',
			'February'    : 'Február',
			'March'       : 'Marec',
			'April'       : 'Apríl',
			'May'         : 'Máj',
			'June'        : 'Jún',
			'July'        : 'Júl',
			'August'      : 'augusta',
			'September'   : 'septembra',
			'October'     : 'Október',
			'November'    : 'novembra',
			'December'    : 'December',
			'Sunday'      : 'Nedeľa',
			'Monday'      : 'Pondelok',
			'Tuesday'     : 'Utorok',
			'Wednesday'   : 'Streda',
			'Thursday'    : 'Štvrtok',
			'Friday'      : 'Piatok',
			'Saturday'    : 'Sobota',
			'Sun'         : 'Ned',
			'Mon'         : 'Pon',
			'Tue'         : 'Ut',
			'Wed'         : 'Str',
			'Thu'         : 'Štv',
			'Fri'         : 'Pia',
			'Sat'         : 'Sob',

			/******************************** sort variants ********************************/
			'sortname'          : 'podľa názvu',
			'sortkind'          : 'podľa druhu',
			'sortsize'          : 'podľa veľkosti',
			'sortdate'          : 'podľa dátumu',
			'sortFoldersFirst'  : 'Najskôr priečinky',
			'sortperm'          : 'podľa povolenia', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'podľa módu',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'podľa majiteľa',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'podľa skupiny',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Tiež stromové zobrazenie',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Nový súbor.txt', // added 10.11.2015
			'untitled folder'   : 'Nový priečinok',   // added 10.11.2015
			'Archive'           : 'Nový archív',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Nový súbor.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1 súbor',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Potrebné potvrdenie',
			'confirmRm'       : 'Určite chcete vymazať súbory?<br/>Nie je to možné vrátiť späť!',
			'confirmRepl'     : 'Nahradiť starý súbor za nový? (Ak obsahuje priečinky, bude zlúčené. Ak chcete zálohovať a nahradiť, vyberte možnosť Zálohovať.)',
			'confirmRest'     : 'Nahradiť existujúcu položku s položkou v koši?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Nie je v UTF-8<br/>Previesť na UTF-8?<br/>Obsah bude v UTF-8 po uložení konverzie.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Kódovanie tohto súboru nemohlo byť detekované. Pre úpravu dočasne potrebujete previesť na UTF-8 .<br/>Prosím, vyberte kódovanie znakov tohto súboru.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Bol upravený.<br/>Ak zmeny neuložíte, stratíte vykonanú prácu.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Naozaj chcete presunúť položky do koša?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Naozaj chcete presunúť položky do "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Použiť na všetky',
			'name'            : 'Názov',
			'size'            : 'Veľkosť',
			'perms'           : 'Povolenia',
			'modify'          : 'Zmenené',
			'kind'            : 'Druh',
			'read'            : 'čítať',
			'write'           : 'zapisovať',
			'noaccess'        : 'bez prístupu',
			'and'             : 'a',
			'unknown'         : 'neznámy',
			'selectall'       : 'Vybrať všetky položky',
			'selectfiles'     : 'Vybrať položku(y)',
			'selectffile'     : 'Vybrať prvú položku',
			'selectlfile'     : 'Vybrať poslednú položku',
			'viewlist'        : 'Zoznam',
			'viewicons'       : 'Ikony',
			'viewSmall'       : 'Malé ikony', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Stredné ikony', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Veľké ikony', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Extra veľké ikony', // from v2.1.39 added 22.5.2018
			'places'          : 'Miesta',
			'calc'            : 'Prepočítavanie',
			'path'            : 'Cesta',
			'aliasfor'        : 'Alias pre',
			'locked'          : 'Uzamknuté',
			'dim'             : 'Rozmery',
			'files'           : 'Súbory',
			'folders'         : 'Priečinky',
			'items'           : 'Položky',
			'yes'             : 'áno',
			'no'              : 'nie',
			'link'            : 'Odkaz',
			'searcresult'     : 'Výsledky hľadania',
			'selected'        : 'zvolené položky',
			'about'           : 'O aplikácii',
			'shortcuts'       : 'Skratky',
			'help'            : 'Pomoc',
			'webfm'           : 'Webový správca súborov',
			'ver'             : 'Verzia',
			'protocolver'     : 'verzia protokolu',
			'homepage'        : 'Domovská stránka',
			'docs'            : 'Dokumentácia',
			'github'          : 'Pozri nás na Githube',
			'twitter'         : 'Nasleduj nás na Twitteri',
			'facebook'        : 'Pripoj sa k nám na Facebooku',
			'team'            : 'Tím',
			'chiefdev'        : 'Hlavný vývojár',
			'developer'       : 'Vývojár',
			'contributor'     : 'Prispievateľ',
			'maintainer'      : 'Správca',
			'translator'      : 'Prekladateľ',
			'icons'           : 'Ikony',
			'dontforget'      : 'a nezabudnite si plavky',
			'shortcutsof'     : 'Skratky nie sú povolené',
			'dropFiles'       : 'Sem pretiahnite súbory',
			'or'              : 'alebo',
			'selectForUpload' : 'Vyberte súbory',
			'moveFiles'       : 'Premiestniť súbory',
			'copyFiles'       : 'Kopírovať súbory',
			'restoreFiles'    : 'Obnoviť položky', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Odstrániť z umiestnení',
			'aspectRatio'     : 'Pomer zobrazenia',
			'scale'           : 'Mierka',
			'width'           : 'Šírka',
			'height'          : 'Výška',
			'resize'          : 'Zmeniť veľkosť',
			'crop'            : 'Orezať',
			'rotate'          : 'Otočiť',
			'rotate-cw'       : 'Otočiť o 90 stupňov (v smere h.r.)',
			'rotate-ccw'      : 'Otočiť o 90 stupňov (proti smeru)',
			'degree'          : '°',
			'netMountDialogTitle' : 'Pripojiť sieťové médium', // added 18.04.2012
			'protocol'            : 'Protokol', // added 18.04.2012
			'host'                : 'Hosť', // added 18.04.2012
			'port'                : 'Port', // added 18.04.2012
			'user'                : 'Užívateľ', // added 18.04.2012
			'pass'                : 'Heslo', // added 18.04.2012
			'confirmUnmount'      : 'Naozaj chcete odpojiť $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Premiestnite alebo presuňte súbory z prehliadača', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Tu premiestnite alebo presuňte súbory a adresy URL', // from v2.1 added 07.04.2014
			'encoding'        : 'Kódovanie', // from v2.1 added 19.12.2014
			'locale'          : 'Lokalizácia',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Cieľ: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Vyhľadávanie podľa vstupného MIME typu', // from v2.1 added 22.5.2015
			'owner'           : 'Majiteľ', // from v2.1 added 20.6.2015
			'group'           : 'Skupina', // from v2.1 added 20.6.2015
			'other'           : 'Ostatné', // from v2.1 added 20.6.2015
			'execute'         : 'Spustiť', // from v2.1 added 20.6.2015
			'perm'            : 'Povolenie', // from v2.1 added 20.6.2015
			'mode'            : 'Režim', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Priečinok je prázdny', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Priečinok je prázdny\\A Premiestnite alebo presuňte položky', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Priečinok je prázdny\\A Dlhým kliknutím pridáte položky', // from v2.1.6 added 30.12.2015
			'quality'         : 'Kvalita', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Automatická synchronizácia',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Posunúť nahor',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Získať URL odkaz', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Vybraté položky ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'ID priečinka', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Povoliť prístup v offline režime', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'Znova overiť', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Práve načítava...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Otvorenie viacerých súborov', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Pokúšate sa otvoriť súbor $1. Naozaj ho chcete otvoriť v prehliadači?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Výsledky vyhľadávania sú prázdne v hľadanom cieli.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Je to úprava súboru.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Vybrali ste $1 položky.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Máte $1 položky v schránke.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Prírastkové hľadanie je iba z aktuálneho zobrazenia.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Obnovovanie', // from v2.1.15 added 3.8.2016
			'complete'        : '$1: kompletné', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Kontextové menu', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Otáčanie stránky', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Korene média', // from v2.1.16 added 16.9.2016
			'reset'           : 'Resetovať', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Farba pozadia', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Výber farby', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px mriežka', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Povolené', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Zakázané', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Výsledky vyhľadávania sú prázdne v aktuálnom zobrazení. Stlačením tlačidla [Enter] rozšírite vyhľadávanie cieľa.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Výsledky vyhľadávania prvého listu sú v aktuálnom zobrazení prázdne.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Nápis textu', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 minút ostáva', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Otvoriť s vybratým kódovaním', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Uložiť s vybratým kódovaním', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Vyberte priečinok', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Hľadanie prvého listu', // from v2.1.23 added 24.3.2017
			'presets'         : 'Presety', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Je to príliš veľa položiek, takže sa nemôže dostať do koša.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Textarea', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Vyprázdniť priečinok "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'V priečinku "$1" nie sú žiadne položky.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Preferencie', // from v2.1.26 added 28.6.2017
			'language'        : 'Nastavenie jazyka', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Inicializujte nastavenia uložené v tomto prehliadači', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Nastavenie panela s nástrojmi', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '...$1 znakov ostáva.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '...$1 riadkov ostáva.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Súčet', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Hrubá veľkosť súboru', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Zameranie na prvok dialógu s mouseover',  // from v2.1.30 added 2.11.2017
			'select'          : 'Vybrať', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Akcia pri vybranom súbore', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Otvoriť pomocou naposledy použitého editora', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Invertovať výber položiek', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Naozaj chcete premenovať $1 vybraných položiek, ako napríklad $2<br/>Nie je to možné vrátiť späť!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Batch premenovanie', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Číslo', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Pridať predponu', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Pridať príponu', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Zmeniť príponu', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Nastavenia stĺpcov (zoznamové zobrazenie)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Všetky zmeny sa okamžite premietnu do archívu.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Akékoľvek zmeny sa neodzrkadľujú, kým sa toto médium neodinštaluje.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Nasledujúce médium(a) pripojené v tomto médiu je tiež odpojené. Určite ho odpojiť?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Informácie o výbere', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Algoritmy na zobrazenie hashu súborov', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Informačné položky (panel s informáciami o výbere)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Opätovným stlačením opustíte.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Panel nástrojov', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Pracovný priestor', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Dialóg', // from v2.1.38 added 4.4.2018
			'all'             : 'Všetko', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Veľkosť ikony (zobrazenie ikon)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Otvorte maximalizované okno editora', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Pretože konverzia podľa rozhrania API momentálne nie je k dispozícii, skonvertujte na webovej stránke.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'Po konverzii musíte nahrať skonvertovaný súbor pomocou URL položky alebo stiahnutý súbor na uloženie skonvertovaného súboru.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Konvertovať na stránke $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Integrácie', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Tento elFinder má integrované nasledujúce externé služby. Pred použitím skontrolujte podmienky používania, zásady ochrany osobných údajov atď.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Zobraziť skryté položky', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Skryť skryté položky', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Zobraziť/skryť skryté položky', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Typy súborov, ktoré sa majú povoliť pomocou "Nový súbor"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Typ textového súboru', // from v2.1.41 added 7.8.2018
			'add'             : 'Pridať', // from v2.1.41 added 7.8.2018
			'theme'           : 'Téma', // from v2.1.43 added 19.10.2018
			'default'         : 'Predvolená', // from v2.1.43 added 19.10.2018
			'description'     : 'Popis', // from v2.1.43 added 19.10.2018
			'website'         : 'Stránka', // from v2.1.43 added 19.10.2018
			'author'          : 'Autor', // from v2.1.43 added 19.10.2018
			'email'           : 'E-mail', // from v2.1.43 added 19.10.2018
			'license'         : 'Licencia', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Túto položku nemožno uložiť. Ak chcete zabrániť strate úprav, musíte ju exportovať do počítača.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Dvakrát kliknite na súbor a vyberte ho.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Použiť režim celej obrazovky', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Neznámy',
			'kindRoot'        : 'Koreň média', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Priečinok',
			'kindSelects'     : 'Výbery', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'alias',
			'kindAliasBroken' : 'Porušený alias',
			// applications
			'kindApp'         : 'Aplikácia',
			'kindPostscript'  : 'Postscript dokument',
			'kindMsOffice'    : 'Microsoft Office dokument',
			'kindMsWord'      : 'Microsoft Word dokument',
			'kindMsExcel'     : 'Microsoft Excel dokument',
			'kindMsPP'        : 'Microsoft Powerpoint prezentácia',
			'kindOO'          : 'Open Office dokument',
			'kindAppFlash'    : 'Flashová aplikácia',
			'kindPDF'         : 'Portable Document Format (PDF)',
			'kindTorrent'     : 'Bittorrent súbor',
			'kind7z'          : '7z archív',
			'kindTAR'         : 'TAR archív',
			'kindGZIP'        : 'GZIP archív',
			'kindBZIP'        : 'BZIP archív',
			'kindXZ'          : 'XZ archív',
			'kindZIP'         : 'ZIP archív',
			'kindRAR'         : 'RAR archív',
			'kindJAR'         : 'Java JAR súbor',
			'kindTTF'         : 'True Type písmo',
			'kindOTF'         : 'Otvorte písmo Type',
			'kindRPM'         : 'RPM balík',
			// texts
			'kindText'        : 'Textový document',
			'kindTextPlain'   : 'Obyčajný text',
			'kindPHP'         : 'PHP zdrojový kód',
			'kindCSS'         : 'Kaskádové štýly (CSS)',
			'kindHTML'        : 'HTML dokument',
			'kindJS'          : 'Javascript zdrojový kód',
			'kindRTF'         : 'Formát RTF',
			'kindC'           : 'C zdrojový kód',
			'kindCHeader'     : 'C header zdrojový kód',
			'kindCPP'         : 'C++ zdrojový kód',
			'kindCPPHeader'   : 'C++ header zdrojový kód',
			'kindShell'       : 'Unix shell skript',
			'kindPython'      : 'Python zdrojový kód',
			'kindJava'        : 'Java zdrojový kód',
			'kindRuby'        : 'Ruby zdrojový kód',
			'kindPerl'        : 'Perl zdrojový kód',
			'kindSQL'         : 'SQL zdrojový kód',
			'kindXML'         : 'XML dokument',
			'kindAWK'         : 'AWK zdrojový kód',
			'kindCSV'         : 'Čiarkou oddeľované hodnoty',
			'kindDOCBOOK'     : 'Docbook XML dokument',
			'kindMarkdown'    : 'Text označenia', // added 20.7.2015
			// images
			'kindImage'       : 'Obrázok',
			'kindBMP'         : 'BMP obrázok',
			'kindJPEG'        : 'JPEG obrázok',
			'kindGIF'         : 'GIF obrázok',
			'kindPNG'         : 'PNG obrázok',
			'kindTIFF'        : 'TIFF obrázok',
			'kindTGA'         : 'TGA obrázok',
			'kindPSD'         : 'Adobe Photoshop obrázok',
			'kindXBITMAP'     : 'X bitmap obrázok',
			'kindPXM'         : 'Pixelmator obrázok',
			// media
			'kindAudio'       : 'Zvukový súbor',
			'kindAudioMPEG'   : 'MPEG zvuk',
			'kindAudioMPEG4'  : 'MPEG-4 zvuk',
			'kindAudioMIDI'   : 'MIDI zvuk',
			'kindAudioOGG'    : 'Ogg Vorbis zvuk',
			'kindAudioWAV'    : 'WAV zvuk',
			'AudioPlaylist'   : 'MP3 playlist',
			'kindVideo'       : 'Video súbor',
			'kindVideoDV'     : 'DV video',
			'kindVideoMPEG'   : 'MPEG video',
			'kindVideoMPEG4'  : 'MPEG-4 video',
			'kindVideoAVI'    : 'AVI video',
			'kindVideoMOV'    : 'Quick Time video',
			'kindVideoWM'     : 'Windows Media video',
			'kindVideoFlash'  : 'Flash video',
			'kindVideoMKV'    : 'Matroska video',
			'kindVideoOGG'    : 'Ogg video'
		}
	};
}));

lib/js/i18n/elfinder.ko.js000064400000106177147361034410011262 0ustar00/**
 * Korea-한국어 translation
 * @author Hwang Ahreum; <luckmagic@naver.com>
 * @author Park Sungyong; <sungyong@gmail.com>
 * @author Yeonjeong Woo <eat_sweetly@naver.com>
 * @author Kwon Hyungjoo <hyung778@gmail.com>
 * @version 2022-03-02
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.ko = {
		translator : 'Hwang Ahreum; &lt;luckmagic@naver.com&gt;, Park Sungyong; &lt;sungyong@gmail.com&gt;, Yeonjeong Woo &lt;eat_sweetly@naver.com&gt;, Kwon Hyungjoo &lt;hyung778@gmail.com&gt;',
		language   : 'Korea-한국어',
		direction  : 'ltr',
		dateFormat : 'Y-m-d H:i', // will show like: 2022-03-02 13:21
		fancyDateFormat : '$1 H:i', // will show like: 오늘 13:21
		nonameDateFormat : 'ymd-His', // noname upload will show like: 220302-132116
		messages   : {
			'getShareText' : '공유하다',
			'Editor ': '코드 편집기',

			/********************************** errors **********************************/
			'error'                : '오류',
			'errUnknown'           : '알 수 없는 오류.',
			'errUnknownCmd'        : '알 수 없는 명령어.',
			'errJqui'              : 'jQuery UI 설정이 올바르지 않습니다. Selectable, draggable 및 droppable 구성 요소가 포함되어 있어야 합니다.',
			'errNode'              : 'elFinder를 생성하기 위해서는 DOM Element를 요구합니다.',
			'errURL'               : 'elFinder 환경설정이 올바르지 않습니다! URL 옵션이 설정되지 않았습니다.',
			'errAccess'            : '접근 제한.',
			'errConnect'           : 'Backend에 연결할 수 없습니다.',
			'errAbort'             : '연결 실패.',
			'errTimeout'           : '연결시간 초과.',
			'errNotFound'          : 'Backend를 찾을 수 없습니다.',
			'errResponse'          : 'Backend가 응답하지 않습니다.',
			'errConf'              : 'Backend 환경설정이 올바르지 않습니다.',
			'errJSON'              : 'PHP JSON 모듈이 설치되지 않았습니다.',
			'errNoVolumes'         : '읽을 수 있는 볼륨이 없습니다.',
			'errCmdParams'         : '"$1" 명령에 잘못된 매개 변수가 있습니다.',
			'errDataNotJSON'       : '데이터가 JSON이 아닙니다.',
			'errDataEmpty'         : '데이터가 비어있습니다.',
			'errCmdReq'            : 'Backend 요청에는 명령어 이름이 필요합니다.',
			'errOpen'              : '"$1"을(를) 열 수 없습니다.',
			'errNotFolder'         : '폴더가 아닙니다.',
			'errNotFile'           : '파일이 아닙니다.',
			'errRead'              : '"$1"을(를) 읽을 수 없습니다.',
			'errWrite'             : '"$1"에 쓸 수 없습니다.',
			'errPerm'              : '권한이 없습니다.',
			'errLocked'            : '"$1"이(가) 잠겨 있습니다, 이동, 삭제가 불가능합니다',
			'errExists'            : '이미 "$1"파일이 존재합니다.',
			'errInvName'           : '파일명에 올바르지 않은 문자가 포함되었습니다.',
			'errInvDirname'        : '폴더명에 올바르지 않은 문자가 포함되었습니다.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : '폴더를 찾을 수 없습니다.',
			'errFileNotFound'      : '파일을 찾을 수 없습니다.',
			'errTrgFolderNotFound' : '"$1" 폴더를 찾을 수 없습니다.',
			'errPopup'             : '브라우저에서 팝업을 차단하였습니다. 팝업을 허용하려면 브라우저 옵션을 변경하세요.',
			'errMkdir'             : '"$1" 폴더를 생성할 수 없습니다.',
			'errMkfile'            : '"$1" 파일을 생성할 수 없습니다.',
			'errRename'            : '"$1"의 이름을 변경할 수 없습니다.',
			'errCopyFrom'          : '볼률 "$1"으(로)부터 파일을 복사할 수 없습니다.',
			'errCopyTo'            : '볼률 "$1"에 파일을 복사할 수 없습니다.',
			'errMkOutLink'         : 'root 볼륨 외부에 링크를 만들 수 없습니다.', // from v2.1 added 03.10.2015
			'errUpload'            : '업로드 오류.',  // old name - errUploadCommon
			'errUploadFile'        : '"$1"을(를) 업로드할 수 없습니다.', // old name - errUpload
			'errUploadNoFiles'     : '업로드할 파일이 없습니다.',
			'errUploadTotalSize'   : '데이터가 허용된 최대크기를 초과하였습니다.', // old name - errMaxSize
			'errUploadFileSize'    : '파일이 허용된 최대크기를 초과하였습니다.', //  old name - errFileMaxSize
			'errUploadMime'        : '잘못된 파일형식입니다.',
			'errUploadTransfer'    : '"$1" 전송 오류.',
			'errUploadTemp'        : '업로드에 필요한 임시파일 생성을 할 수 없습니다.', // from v2.1 added 26.09.2015
			'errNotReplace'        : '"$1"개체가 현재 위치에 이미 존재하며 다른 유형의 개체로 대체 할 수 없습니다.', // new
			'errReplace'           : '"$1"을(를) 변경할 수 없습니다.',
			'errSave'              : '"$1"을(를) 저장할 수 없습니다.',
			'errCopy'              : '"$1"을(를) 복사할 수 없습니다.',
			'errMove'              : '"$1"을(를) 이동할 수 없습니다.',
			'errCopyInItself'      : '"$1"을(를) 자기 자신에게 복사할 수 없습니다.',
			'errRm'                : '"$1"의 이름을 변경할 수 없습니다.',
			'errTrash'             : '휴지통으로 보낼 수 없습니다.', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : '원본 파일을 제거할 수 없습니다.',
			'errExtract'           : '"$1"에 압축을 풀 수 없습니다.',
			'errArchive'           : '압축파일을 생성할 수 없습니다.',
			'errArcType'           : '지원하지 않는 압축파일 형식입니다.',
			'errNoArchive'         : '압축파일이 아니거나 지원하지 않는 압축파일 형식입니다.',
			'errCmdNoSupport'      : 'Backend에서 이 명령을 지원하지 않습니다.',
			'errReplByChild'       : '"$1" 폴더에 덮어쓸수 없습니다.',
			'errArcSymlinks'       : '보안상의 이유로 압축파일이 심볼릭 링크를 포함하거나 허용되지 않는 이름이 있을 경우 압축 해제가 불가능합니다.', // edited 24.06.2012
			'errArcMaxSize'        : '압축파일이 허용된 최대크기를 초과하였습니다.',
			'errResize'            : '"$1"의 크기 변경을 할 수 없습니다.',
			'errResizeDegree'      : '회전가능한 각도가 아닙니다.',  // added 7.3.2013
			'errResizeRotate'      : '이미지를 회전할 수 없습니다.',  // added 7.3.2013
			'errResizeSize'        : '올바르지 않은 크기의 이미지입니다.',  // added 7.3.2013
			'errResizeNoChange'    : '이미지 크기가 변경되지 않았습니다.',  // added 7.3.2013
			'errUsupportType'      : '지원하지 않는 파일 형식.',
			'errNotUTF8Content'    : '파일 "$1"은 UTF-8 형식이 아니어서 편집할 수 없습니다.',  // added 9.11.2011
			'errNetMount'          : '"$1"을(를) 마운트할 수 없습니다.', // added 17.04.2012
			'errNetMountNoDriver'  : '지원되지 않는 프로토콜.',     // added 17.04.2012
			'errNetMountFailed'    : '마운드 실패.',         // added 17.04.2012
			'errNetMountHostReq'   : '호스트가 필요합니다.', // added 18.04.2012
			'errSessionExpires'    : '활동이 없어 세션이 만료되었습니다.',
			'errCreatingTempDir'   : '임시 폴더 생성에 실패했습니다: "$1"',
			'errFtpDownloadFile'   : 'FTP를 통한 다운로드에 실패했습니다: "$1"',
			'errFtpUploadFile'     : 'FTP에 업로드 실패했습니다: "$1"',
			'errFtpMkdir'          : 'FTP에서 폴더 생성에 실패했습니다: "$1"',
			'errArchiveExec'       : '압축중 오류가 발생했습니다: "$1"',
			'errExtractExec'       : '압축해제중 오류가 발생했습니다: "$1"',
			'errNetUnMount'        : '마운트를 해제할 수 없습니다.', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'UTF-8로 변환할 수 없습니다.', // from v2.1 added 08.04.2014
			'errFolderUpload'      : '폴더를 업로드 하려면 최신 브라우저를 사용하세요.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : '"$1" 검색중 시간을 초과하였습니다. 일부 결과만 표시됩니다.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : '재인증이 필요합니다.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : '선택 가능한 최대 개수는 $1개입니다.', // from v2.1.17 added 17.10.2016
			'errRestore'           : '휴지통에서 복원할 수 없습니다. 복원할 위치를 확인할 수 없습니다.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : '이 파일 형식을 위한 편집기를 찾지 못했습니다.', // from v2.1.25 added 23.5.2017
			'errServerError'       : '서버측에서 오류가 발생했습니다.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : '"$1" 폴더를 비울 수 없습니다.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : '$1개의 오류가 더 발생했습니다.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : '한 번에 최대 $1개의 폴더를 만들 수 있습니다.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : '압축파일생성',
			'cmdback'      : '뒤로',
			'cmdcopy'      : '복사',
			'cmdcut'       : '자르기',
			'cmddownload'  : '다운로드',
			'cmdduplicate' : '사본',
			'cmdedit'      : '편집',
			'cmdextract'   : '압축풀기',
			'cmdforward'   : '앞으로',
			'cmdgetfile'   : '선택',
			'cmdhelp'      : '이 소프트웨어는',
			'cmdhome'      : '홈',
			'cmdinfo'      : '파일정보',
			'cmdmkdir'     : '새 폴더',
			'cmdmkdirin'   : '새 폴더로', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : '새 파일',
			'cmdopen'      : '열기',
			'cmdpaste'     : '붙여넣기',
			'cmdquicklook' : '미리보기',
			'cmdreload'    : '새로고침',
			'cmdrename'    : '이름바꾸기',
			'cmdrm'        : '삭제',
			'cmdtrash'     : '휴지통으로', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : '복원', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : '파일찾기',
			'cmdup'        : '상위폴더',
			'cmdupload'    : '업로드',
			'cmdview'      : '보기',
			'cmdresize'    : '이미지 크기 변경 & 회전',
			'cmdsort'      : '정렬',
			'cmdnetmount'  : '네트워크 볼륨 마운트', // added 18.04.2012
			'cmdnetunmount': '마운트 해제', // from v2.1 added 30.04.2012
			'cmdplaces'    : '즐겨찾기로', // added 28.12.2014
			'cmdchmod'     : '모드 변경', // from v2.1 added 20.6.2015
			'cmdopendir'   : '폴더 열기', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : '컬럼 넓이 초기화', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': '전체 화면', // from v2.1.15 added 03.08.2016
			'cmdmove'      : '이동', // from v2.1.15 added 21.08.2016
			'cmdempty'     : '폴더 비우기', // from v2.1.25 added 22.06.2017
			'cmdundo'      : '실행 취소', // from v2.1.27 added 31.07.2017
			'cmdredo'      : '다시 실행', // from v2.1.27 added 31.07.2017
			'cmdpreference': '환경설정', // from v2.1.27 added 03.08.2017
			'cmdselectall' : '전체 선택', // from v2.1.28 added 15.08.2017
			'cmdselectnone': '선택 취소', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': '선택 반전', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : '새 창으로 열기', // from v2.1.38 added 3.4.2018
			'cmdhide'      : '숨기기 (환경설정)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : '닫기',
			'btnSave'   : '저장',
			'btnRm'     : '삭제',
			'btnApply'  : '적용',
			'btnCancel' : '취소',
			'btnNo'     : '아니오',
			'btnYes'    : '예',
			'btnMount'  : '마운트',  // added 18.04.2012
			'btnApprove': '$1로 이동 및 승인', // from v2.1 added 26.04.2012
			'btnUnmount': '마운트 해제', // from v2.1 added 30.04.2012
			'btnConv'   : '변환', // from v2.1 added 08.04.2014
			'btnCwd'    : '여기',      // from v2.1 added 22.5.2015
			'btnVolume' : '볼륨',    // from v2.1 added 22.5.2015
			'btnAll'    : '전체',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME 타입', // from v2.1 added 22.5.2015
			'btnFileName':'파일 이름',  // from v2.1 added 22.5.2015
			'btnSaveClose': '저장후 닫기', // from v2.1 added 12.6.2015
			'btnBackup' : '백업', // fromv2.1 added 28.11.2015
			'btnRename'    : '이름변경',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : '전체이름 변경', // from v2.1.24 added 6.4.2017
			'btnPrevious' : '이전 ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : '다음 ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : '다른 이름으로 저장하기', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : '폴더 열기',
			'ntffile'     : '파일 열기',
			'ntfreload'   : '새로고침',
			'ntfmkdir'    : '폴더 생성',
			'ntfmkfile'   : '파일 생성',
			'ntfrm'       : '삭제',
			'ntfcopy'     : '복사',
			'ntfmove'     : '이동',
			'ntfprepare'  : '복사 준비',
			'ntfrename'   : '이름바꾸기',
			'ntfupload'   : '업로드',
			'ntfdownload' : '다운로드',
			'ntfsave'     : '저장하기',
			'ntfarchive'  : '압축파일만들기',
			'ntfextract'  : '압축풀기',
			'ntfsearch'   : '검색',
			'ntfresize'   : '이미지 크기 변경',
			'ntfsmth'     : '작업중 >_<',
			'ntfloadimg'  : '이미지 불러오는 중',
			'ntfnetmount' : '네트워크 볼륨 마운트 중', // added 18.04.2012
			'ntfnetunmount': '네트워크 볼륨 마운트 해제 중', // from v2.1 added 30.04.2012
			'ntfdim'      : '이미지 해상도 가져오는 중', // added 20.05.2013
			'ntfreaddir'  : '폴더 정보 읽는 중', // from v2.1 added 01.07.2013
			'ntfurl'      : '링크 URL 가져오는 중', // from v2.1 added 11.03.2014
			'ntfchmod'    : '파일 모드 변경하는 중', // from v2.1 added 20.6.2015
			'ntfpreupload': '업로드된 파일명 검증 중', // from v2.1 added 31.11.2015
			'ntfzipdl'    : '다운로드할 파일 생성 중', // from v2.1.7 added 23.1.2016
			'ntfparents'  : '경로 정보 가져오는 중', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': '업로드된 파일 처리 중', // from v2.1.17 added 2.11.2016
			'ntftrash'    : '휴지통으로 이동 중', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : '휴지통에서 복원 중', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : '대상 폴더 점검 중', // from v2.1.24 added 3.5.2017
			'ntfundo'     : '이전 작업 취소 중', // from v2.1.27 added 31.07.2017
			'ntfredo'     : '취소된 작업 다시 하는 중', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : '내용 확인 중', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : '휴지통', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : '알 수 없음',
			'Today'       : '오늘',
			'Yesterday'   : '어제',
			'msJan'       : '1월',
			'msFeb'       : '2월',
			'msMar'       : '3월',
			'msApr'       : '4월',
			'msMay'       : '5월',
			'msJun'       : '6월',
			'msJul'       : '7월',
			'msAug'       : '8월',
			'msSep'       : '9월',
			'msOct'       : '10월',
			'msNov'       : '11월',
			'msDec'       : '12월',
			'January'     : '1월',
			'February'    : '2월',
			'March'       : '3월',
			'April'       : '4월',
			'May'         : '5월',
			'June'        : '6월',
			'July'        : '7월',
			'August'      : '8월',
			'September'   : '9월',
			'October'     : '10월',
			'November'    : '11월',
			'December'    : '12월',
			'Sunday'      : '일요일',
			'Monday'      : '월요일',
			'Tuesday'     : '화요일',
			'Wednesday'   : '수요일',
			'Thursday'    : '목요일',
			'Friday'      : '금요일',
			'Saturday'    : '토요일',
			'Sun'         : '일',
			'Mon'         : '월',
			'Tue'         : '화',
			'Wed'         : '수',
			'Thu'         : '목',
			'Fri'         : '금',
			'Sat'         : '토',

			/******************************** sort variants ********************************/
			'sortname'          : '이름',
			'sortkind'          : '종류',
			'sortsize'          : '크기',
			'sortdate'          : '날짜',
			'sortFoldersFirst'  : '폴더 먼저',
			'sortperm'          : '퍼미션별', // from v2.1.13 added 13.06.2016
			'sortmode'          : '모드별',       // from v2.1.13 added 13.06.2016
			'sortowner'         : '소유자별',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : '그룹별',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : '트리뷰도 같이',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : '새파일.txt', // added 10.11.2015
			'untitled folder'   : '새폴더',   // added 10.11.2015
			'Archive'           : '새아카이브',  // from v2.1 added 10.11.2015
			'untitled file'     : '새파일.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: 파일',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : '확인',
			'confirmRm'       : '이 파일을 정말로 삭제 하겠습니까?<br/>실행 후 되돌릴 수 없습니다!',
			'confirmRepl'     : '오래된 파일을 새 파일로 바꾸시겠습니까? (폴더가 포함되어 있으면 병합됩니다. 백업 및 교체하려면 백업을 선택하세요.)',
			'confirmRest'     : '이미 있는 파일을 휴지통에 있는 파일로 교체하시겠습니까?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'UTF-8이 아닙니다<br/>UTF-8로 변환할까요?<br/>변환후 저장하면 UTF-8로 바뀝니다.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : '이 파일의 인코딩 타입을 알아내지 못했습니다. 편집하려면 임시로 UTF-8로 변환해야 합니다.<br/>이 파일의 인코딩을 선택해주세요.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : '변경된 부분이 있습니다.<br/>저장하지 않는다면 현재 작업중인 내용을 잃을 수 있습니다.', // from v2.1 added 15.7.2015
			'confirmTrash'    : '휴지통으로 이동하시겠습니까?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : '이 파일을 정말 "$1"(으)로 이동하시겠습니까?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : '모두 적용',
			'name'            : '이름',
			'size'            : '크기',
			'perms'           : '권한',
			'modify'          : '수정된 시간',
			'kind'            : '종류',
			'read'            : '읽기',
			'write'           : '쓰기',
			'noaccess'        : '액세스 불가',
			'and'             : '와',
			'unknown'         : '알 수 없음',
			'selectall'       : '모든 파일 선택',
			'selectfiles'     : '파일 선택',
			'selectffile'     : '첫번째 파일 선택',
			'selectlfile'     : '마지막 파일 선택',
			'viewlist'        : '리스트 보기',
			'viewicons'       : '아이콘 보기',
			'viewSmall'       : '작은 아이콘', // from v2.1.39 added 22.5.2018
			'viewMedium'      : '중간 아이콘', // from v2.1.39 added 22.5.2018
			'viewLarge'       : '큰 아이콘', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : '아주 큰 아이콘', // from v2.1.39 added 22.5.2018
			'places'          : '즐겨찾기',
			'calc'            : '계산',
			'path'            : '경로',
			'aliasfor'        : '별명',
			'locked'          : '잠금',
			'dim'             : '크기',
			'files'           : '파일',
			'folders'         : '폴더',
			'items'           : '아이템',
			'yes'             : '예',
			'no'              : '아니오',
			'link'            : '링크',
			'searcresult'     : '검색 결과',
			'selected'        : '아이템 선택',
			'about'           : '이 프로그램은..',
			'shortcuts'       : '단축아이콘',
			'help'            : '도움말',
			'webfm'           : '웹 파일매니저',
			'ver'             : '버전',
			'protocolver'     : '프로토콜 버전',
			'homepage'        : '홈페이지',
			'docs'            : '문서',
			'github'          : 'Github에서 포크하기',
			'twitter'         : '트위터에서 팔로우하기',
			'facebook'        : '페이스북에서 가입하기',
			'team'            : '팀',
			'chiefdev'        : '개발팀장',
			'developer'       : '개발자',
			'contributor'     : '공헌자',
			'maintainer'      : '관리자',
			'translator'      : '번역',
			'icons'           : '아이콘',
			'dontforget'      : '그리고 수건 가져가는 것을 잊지 마세요',
			'shortcutsof'     : '단축아이콘 사용불가',
			'dropFiles'       : '여기로 이동하기',
			'or'              : '또는',
			'selectForUpload' : '업로드 파일 선택',
			'moveFiles'       : '파일 이동',
			'copyFiles'       : '파일 복사',
			'restoreFiles'    : '복원하기', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : '현재 폴더에서 삭제하기',
			'aspectRatio'     : '화면비율',
			'scale'           : '크기',
			'width'           : '가로',
			'height'          : '세로',
			'resize'          : '사이즈 변경',
			'crop'            : '자르기',
			'rotate'          : '회전',
			'rotate-cw'       : '반시계방향 90도 회전',
			'rotate-ccw'      : '시계방향 90도 회전',
			'degree'          : '도',
			'netMountDialogTitle' : '네트워크 볼륨 마운트', // added 18.04.2012
			'protocol'            : '프로토콜', // added 18.04.2012
			'host'                : '호스트', // added 18.04.2012
			'port'                : '포트', // added 18.04.2012
			'user'                : '사용자', // added 18.04.2012
			'pass'                : '비밀번호', // added 18.04.2012
			'confirmUnmount'      : '$1을(를) 마운트 해제하시겠습니까?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': '브라우저에서 파일을 끌어오거나 붙여넣으세요', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : '파일을 끌어오거나, 클립보드의 URL이나 이미지들을 붙여넣으세요', // from v2.1 added 07.04.2014
			'encoding'        : '인코딩', // from v2.1 added 19.12.2014
			'locale'          : '로케일',   // from v2.1 added 19.12.2014
			'searchTarget'    : '대상: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : '입력한 MIME 타입으로 검색하기', // from v2.1 added 22.5.2015
			'owner'           : '소유자', // from v2.1 added 20.6.2015
			'group'           : '그룹', // from v2.1 added 20.6.2015
			'other'           : '그외', // from v2.1 added 20.6.2015
			'execute'         : '실행', // from v2.1 added 20.6.2015
			'perm'            : '권한', // from v2.1 added 20.6.2015
			'mode'            : '모드', // from v2.1 added 20.6.2015
			'emptyFolder'     : '빈 폴더입니다', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : '빈 폴더입니다\\A 드래드 앤 드롭으로 파일을 추가하세요', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : '빈 폴더입니다\\A 길게 눌러 파일을 추가하세요', // from v2.1.6 added 30.12.2015
			'quality'         : '품질', // from v2.1.6 added 5.1.2016
			'autoSync'        : '자동 동기',  // from v2.1.6 added 10.1.2016
			'moveUp'          : '위로 이동',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'URL 링크 가져오기', // from v2.1.7 added 9.2.2016
			'selectedItems'   : '선택된 항목 ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : '폴더 ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : '오프라인 접근 허용', // from v2.1.10 added 3.25.2016
			'reAuth'          : '재인증하기', // from v2.1.10 added 3.25.2016
			'nowLoading'      : '로딩중...', // from v2.1.12 added 4.26.2016
			'openMulti'       : '여러 파일 열기', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': '$1 파일을 열려고 합니다. 브라우저에서 열겠습니까?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : '검색결과가 없습니다.', // from v2.1.12 added 5.16.2016
			'editingFile'     : '편집중인 파일입니다.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : '$1개를 선택했습니다.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : '클립보드에 $1개가 있습니다.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : '증분 검색은 현재 보기에서만 가능합니다.', // from v2.1.13 added 6.30.2016
			'reinstate'       : '복원', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 완료', // from v2.1.15 added 21.8.2016
			'contextmenu'     : '컨텍스트 메뉴', // from v2.1.15 added 9.9.2016
			'pageTurning'     : '페이지 전환', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : '볼륨 루트', // from v2.1.16 added 16.9.2016
			'reset'           : '초기화', // from v2.1.16 added 1.10.2016
			'bgcolor'         : '배경색', // from v2.1.16 added 1.10.2016
			'colorPicker'     : '색 선택기', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px 그리드', // from v2.1.16 added 4.10.2016
			'enabled'         : '활성', // from v2.1.16 added 4.10.2016
			'disabled'        : '비활성', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : '현재 보기에는 검색결과가 없습니다.\\A[Enter]를 눌러 검색 대상을 확장하세요.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : '현재 보기에는 첫 글자 검색 결과가 없습니다.', // from v2.1.23 added 24.3.2017
			'textLabel'       : '텍스트 라벨', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 분 남았습니다', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : '선택한 인코딩으로 다시 열기', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : '선택한 인코딩으로 저장하기', // from v2.1.19 added 2.12.2016
			'selectFolder'    : '폴더 선택', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': '첫 글자 검색', // from v2.1.23 added 24.3.2017
			'presets'         : '프리셋', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : '휴지통으로 옮기기엔 항목이 너무 많습니다.', // from v2.1.25 added 9.6.2017
			'TextArea'        : '글자영역', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : '"$1" 폴더를 비우세요.', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : '"$1" 폴더에 아무것도 없습니다.', // from v2.1.25 added 22.6.2017
			'preference'      : '환경설정', // from v2.1.26 added 28.6.2017
			'language'        : '언어 설정', // from v2.1.26 added 28.6.2017
			'clearBrowserData': '이 브라우저에 저장된 설정값 초기화하기', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : '툴바 설정', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 글자 남았습니다.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 줄 남았습니다.',  // from v2.1.52 added 16.1.2020
			'sum'             : '합계', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : '대략적인 파일 크기', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : '마우스를 가져갈 때 대화창 요소에 초점 맞추기',  // from v2.1.30 added 2.11.2017
			'select'          : '선택', // from v2.1.30 added 23.11.2017
			'selectAction'    : '파일 선택시 동작', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : '마지막 사용한 편집기로 열기', // from v2.1.30 added 23.11.2017
			'selectinvert'    : '선택 반전', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : '선택한 $1을(를) $2와 같이 바꾸겠습니까?<br/>이 작업은 되돌릴 수 없습니다!', // from v2.1.31 added 4.12.2017
			'batchRename'     : '일괄 이름 바꾸기', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ 숫자', // from v2.1.31 added 8.12.2017
			'asPrefix'        : '접두사 추가', // from v2.1.31 added 8.12.2017
			'asSuffix'        : '접미사 추가', // from v2.1.31 added 8.12.2017
			'changeExtention' : '확장자 변경', // from v2.1.31 added 8.12.2017
			'columnPref'      : '사이드바 설정 (리스트 보기)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : '모든 변경은 아카이브에 즉시 반영됩니다.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : '이 볼륨의 마운트를 해제할 때까지는 어떠한 변경사항도 반영되지 않습니다.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : '아래의 볼륨들도 이 볼륨과 함께 마운트가 해제됩니다. 계속하시겠습니까?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : '선택 정보', // from v2.1.33 added 7.3.2018
			'hashChecker'     : '파일 해쉬 알고리즘', // from v2.1.33 added 10.3.2018
			'infoItems'       : '정보 (선택 정보 패널)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': '나가기 위해서 한 번 더 누르세요.', // from v2.1.38 added 1.4.2018
			'toolbar'         : '툴바', // from v2.1.38 added 4.4.2018
			'workspace'       : '작업공간', // from v2.1.38 added 4.4.2018
			'dialog'          : '대화상자', // from v2.1.38 added 4.4.2018
			'all'             : '전체', // from v2.1.38 added 4.4.2018
			'iconSize'        : '아이콘 크기 (아이콘 보기)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : '최대화된 편집기 창을 엽니다', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : '현재 API를 통한 변환이 불가능하므로 웹 사이트에서 변환하시기 바랍니다.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : '변환 후 변환된 파일을 저장하기 위해서는 파일 URL이나 다운로드받은 파일을 업로드 해야 합니다.', //from v2.1.40 added 8.7.2018
			'convertOn'       : '$1 사이트에서 변환하시기 바랍니다.', // from v2.1.40 added 10.7.2018
			'integrations'    : '통합', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'elFinder에는 다음과 같은 외부 서비스가 통합되어 있습니다. 이용하기 전에 이용 약관, 개인정보 보호정책 등을 확인하시기 바랍니다.', // from v2.1.40 added 11.7.2018
			'showHidden'      : '숨겨진 파일 표시', // from v2.1.41 added 24.7.2018
			'hideHidden'      : '숨겨진 파일 숨기기', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : '숨겨진 항목 표시/숨기기', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : '"새 파일"에서 사용할 파일 형식', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : '텍스트 파일 유형', // from v2.1.41 added 7.8.2018
			'add'             : '추가', // from v2.1.41 added 7.8.2018
			'theme'           : '테마', // from v2.1.43 added 19.10.2018
			'default'         : '기본값', // from v2.1.43 added 19.10.2018
			'description'     : '설명', // from v2.1.43 added 19.10.2018
			'website'         : '웹사이트', // from v2.1.43 added 19.10.2018
			'author'          : '저자', // from v2.1.43 added 19.10.2018
			'email'           : '이메일', // from v2.1.43 added 19.10.2018
			'license'         : '라이선스', // from v2.1.43 added 19.10.2018
			'exportToSave'    : '이 파일은 저장될 수 없습니다. 편집한 내용을 유지하려면 PC로 내보내시기 바랍니다.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': '파일을 두 번 클릭하여 선택하세요.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : '전체 화면 모드 사용', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : '알 수 없음',
			'kindRoot'        : 'Root 볼륨', // from v2.1.16 added 16.10.2016
			'kindFolder'      : '폴더',
			'kindSelects'     : '선택', // from v2.1.29 added 29.8.2017
			'kindAlias'       : '별칭',
			'kindAliasBroken' : '손상된 별칭',
			// applications
			'kindApp'         : '응용프로그램',
			'kindPostscript'  : 'Postscript 문서',
			'kindMsOffice'    : 'Microsoft Office 문서',
			'kindMsWord'      : 'Microsoft Word 문서',
			'kindMsExcel'     : 'Microsoft Excel 문서',
			'kindMsPP'        : 'Microsoft Powerpoint 프레젠테이션',
			'kindOO'          : 'Open Office 문서',
			'kindAppFlash'    : '플래쉬 파일',
			'kindPDF'         : 'PDF 문서',
			'kindTorrent'     : '비트토렌트 파일',
			'kind7z'          : '7z 압축파일',
			'kindTAR'         : 'TAR 압축파일',
			'kindGZIP'        : 'GZIP 압축파일',
			'kindBZIP'        : 'BZIP 압축파일',
			'kindXZ'          : 'XZ 압축파일',
			'kindZIP'         : 'ZIP 압축파일',
			'kindRAR'         : 'RAR 압축파일',
			'kindJAR'         : '자바 JAR 파일',
			'kindTTF'         : '트루 타입 글꼴',
			'kindOTF'         : '오픈 타입 글꼴',
			'kindRPM'         : 'RPM 패키지',
			// texts
			'kindText'        : '텍스트 문서',
			'kindTextPlain'   : '일반 텍스트',
			'kindPHP'         : 'PHP 소스',
			'kindCSS'         : 'CSS 문서',
			'kindHTML'        : 'HTML 문서',
			'kindJS'          : '자바스크립트 소스',
			'kindRTF'         : 'RTF 형식',
			'kindC'           : 'C 소스',
			'kindCHeader'     : 'C 헤더 소스',
			'kindCPP'         : 'C++ 소스',
			'kindCPPHeader'   : 'C++ 헤더 소스',
			'kindShell'       : '유닉스 쉘 스크립트',
			'kindPython'      : '파이썬 소스',
			'kindJava'        : '자바 소스',
			'kindRuby'        : '루비 소스',
			'kindPerl'        : '펄 스크립트',
			'kindSQL'         : 'SQL 소스',
			'kindXML'         : 'XML 문서',
			'kindAWK'         : 'AWK 소스',
			'kindCSV'         : 'CSV 파일',
			'kindDOCBOOK'     : '닥북 XML 문서',
			'kindMarkdown'    : '마크다운 문서', // added 20.7.2015
			// images
			'kindImage'       : '이미지',
			'kindBMP'         : 'BMP 이미지',
			'kindJPEG'        : 'JPEG 이미지',
			'kindGIF'         : 'GIF 이미지',
			'kindPNG'         : 'PNG 이미지',
			'kindTIFF'        : 'TIFF 이미지',
			'kindTGA'         : 'TGA 이미지',
			'kindPSD'         : 'Adobe Photoshop 이미지',
			'kindXBITMAP'     : 'X 비트맵 이미지',
			'kindPXM'         : 'Pixelmator 이미지',
			// media
			'kindAudio'       : '오디오 미디어',
			'kindAudioMPEG'   : 'MPEG 오디오',
			'kindAudioMPEG4'  : 'MPEG-4 오디오',
			'kindAudioMIDI'   : 'MIDI 오디오',
			'kindAudioOGG'    : 'Ogg Vorbis 오디오',
			'kindAudioWAV'    : 'WAV 오디오',
			'AudioPlaylist'   : 'MP3 플레이 리스트',
			'kindVideo'       : '동영상 미디어',
			'kindVideoDV'     : 'DV 동영상',
			'kindVideoMPEG'   : 'MPEG 동영상',
			'kindVideoMPEG4'  : 'MPEG-4 동영상',
			'kindVideoAVI'    : 'AVI 동영상',
			'kindVideoMOV'    : '퀵 타임 동영상',
			'kindVideoWM'     : '윈도우 미디어 플레이어 동영상',
			'kindVideoFlash'  : '플래쉬 동영상',
			'kindVideoMKV'    : 'Matroska 동영상',
			'kindVideoOGG'    : 'Ogg 동영상'
		}
	};
}));

lib/js/i18n/elfinder.bg.js000064400000124076147361034410011237 0ustar00/**
 * Bulgarian translation
 * @author Stamo Petkov <stamo.petkov@gmail.com>
 * @author Nikolay Petkov <office@cmstory.com>
 * @version 2022-02-25
 */
 (function(root, factory) {
	if (typeof define === 'function' && define.amd) {
		define(['elfinder'], factory);
	} else if (typeof exports !== 'undefined') {
		module.exports = factory(require('elfinder'));
	} else {
		factory(root.elFinder);
	}
}(this, function(elFinder) {
	elFinder.prototype.i18.bg = {
		translator : 'Stamo Petkov &lt;stamo.petkov@gmail.com&gt;, Nikolay Petkov &lt;office@cmstory.com&gt;',
		language   : 'Bulgarian',
		direction  : 'ltr',
		dateFormat : 'd.m.Y H:i', // will show like: 25.02.2022 18:31
		fancyDateFormat : '$1 H:i', // will show like: днес 18:31
		nonameDateFormat : 'Ymd-His', // noname upload will show like: 20220225-183105
		messages   : {
			'getShareText' : 'Сподели',
			'Editor ': 'Редактор на кодове',
			/********************************** errors **********************************/
			'error'                : 'Грешка',
			'errUnknown'           : 'Непозната грешка.',
			'errUnknownCmd'        : 'Непозната команда.',
			'errJqui'              : 'Грешна конфигурация на jQuery UI. Компонентите selectable, draggable и droppable трябва да са включени.',
			'errNode'              : 'elFinder изисква да бъде създаден DOM елемент.',
			'errURL'               : 'Грешка в настройките на elFinder! не е зададена стойност на URL.',
			'errAccess'            : 'Достъп отказан.',
			'errConnect'           : 'Няма връзка със сървъра.',
			'errAbort'             : 'Връзката е прекъсната.',
			'errTimeout'           : 'Просрочена връзка.',
			'errNotFound'          : 'Сървърът не е намерен.',
			'errResponse'          : 'Грешен отговор от сървъра.',
			'errConf'              : 'Грешни настройки на сървъра.',
			'errJSON'              : 'Не е инсталиран модул на PHP за JSON.',
			'errNoVolumes'         : 'Няма дялове достъпни за четене.',
			'errCmdParams'         : 'Грешни параметри на командата "$1".',
			'errDataNotJSON'       : 'Данните не са JSON.',
			'errDataEmpty'         : 'Липсват данни.',
			'errCmdReq'            : 'Запитването от сървъра изисква име на команда.',
			'errOpen'              : 'Неуспешно отваряне на "$1".',
			'errNotFolder'         : 'Обектът не е папка.',
			'errNotFile'           : 'Обектът не е файл.',
			'errRead'              : 'Неуспешно прочитане на "$1".',
			'errWrite'             : 'Неуспешен запис в "$1".',
			'errPerm'              : 'Разрешение отказано.',
			'errLocked'            : '"$1" е заключен и не може да бъде преименуван, местен или премахван.',
			'errExists'            : 'Вече съществува файл с име "$1"',
			'errInvName'           : 'Грешно име на файл.',
			'errInvDirname'        : 'Невалидно име на папка.',  // from v2.1.24 added 12.4.2017
			'errFolderNotFound'    : 'Папката не е открита.',
			'errFileNotFound'      : 'Файлът не е открит.',
			'errTrgFolderNotFound' : 'Целевата папка "$1" не е намерена.',
			'errPopup'             : 'Браузъра блокира отварянето на прозорец. За да отворите файла, разрешете отварянето в настройките на браузъра.',
			'errMkdir'             : 'Неуспешно създаване на папка "$1".',
			'errMkfile'            : 'Неуспешно създаване на файл "$1".',
			'errRename'            : 'Неуспешно преименуване на "$1".',
			'errCopyFrom'          : 'Копирането на файлове от том "$1" не е разрешено.',
			'errCopyTo'            : 'Копирането на файлове в том "$1" не е разрешено.',
			'errMkOutLink'         : 'Неуспех при създаване на връзка извън началото на ресурса.', // from v2.1 added 03.10.2015
			'errUpload'            : 'Грешка при качване.',  // old name - errUploadCommon
			'errUploadFile'        : 'Неуспешно качване на "$1".', // old name - errUpload
			'errUploadNoFiles'     : 'Не са намерени файлове за качване.',
			'errUploadTotalSize'   : 'Данните превишават максимално допостумия размер.', // old name - errMaxSize
			'errUploadFileSize'    : 'Файлът превишава максимално допустимия размер.', //  old name - errFileMaxSize
			'errUploadMime'        : 'Непозволен тип на файла.',
			'errUploadTransfer'    : '"$1" грешка при предаване.',
			'errUploadTemp'        : 'Неуспешно създаване на временен файл за качване.', // from v2.1 added 26.09.2015
			'errNotReplace'        : 'Обект "$1" вече съществува на това място и не може да бъде заменен от обект от друг тип.', // new
			'errReplace'           : 'Не може да се замени "$1".',
			'errSave'              : 'Не може да се запише "$1".',
			'errCopy'              : 'Не може да се копира "$1".',
			'errMove'              : 'Не може да се премести "$1".',
			'errCopyInItself'      : 'Не може да се копира "$1" върху самия него.',
			'errRm'                : 'Не може да се премахне "$1".',
			'errTrash'             : 'Не може да се премести в кошчето', // from v2.1.24 added 30.4.2017
			'errRmSrc'             : 'Не може да се премахне изходния файл(ове).',
			'errExtract'           : 'Не може да се извлекат файловете от "$1".',
			'errArchive'           : 'Не може да се създаде архив.',
			'errArcType'           : 'Неподдържан тип на архива.',
			'errNoArchive'         : 'Файлът не е архив или е от неподдържан тип.',
			'errCmdNoSupport'      : 'Сървъра не поддържа тази команда.',
			'errReplByChild'       : 'Папката “$1” не може да бъде заменена от съдържащ се в нея елемент.',
			'errArcSymlinks'       : 'От съображения за сигурност няма да бъдат разопаковани архиви съдържащи symlinks.', // edited 24.06.2012
			'errArcMaxSize'        : 'Архивните файлове превишават максимално допустимия размер.',
			'errResize'            : 'Не може да се преоразмери "$1".',
			'errResizeDegree'      : 'Невалиден градус за ротация.',  // added 7.3.2013
			'errResizeRotate'      : 'Изображението не е ротирано.',  // added 7.3.2013
			'errResizeSize'        : 'Невалиден размер на изображение.',  // added 7.3.2013
			'errResizeNoChange'    : 'Размерът на изображението не е променен.',  // added 7.3.2013
			'errUsupportType'      : 'Неподдържан тип на файл.',
			'errNotUTF8Content'    : 'Файл "$1" не е в UTF-8 формат и не може да бъде редактиран.',  // added 9.11.2011
			'errNetMount'          : 'Не може да се монтира "$1".', // added 17.04.2012
			'errNetMountNoDriver'  : 'Неподдържан протокол.',     // added 17.04.2012
			'errNetMountFailed'    : 'Монтирането не е успешно.',         // added 17.04.2012
			'errNetMountHostReq'   : 'Хост се изисква.', // added 18.04.2012
			'errSessionExpires'    : 'Сесията ви изтече поради липса на активност.',
			'errCreatingTempDir'   : 'Не може да се създаде временна директория: "$1"',
			'errFtpDownloadFile'   : 'Не може да се изтегли файл от FTP: "$1"',
			'errFtpUploadFile'     : 'Не може да се качи файл на FTP: "$1"',
			'errFtpMkdir'          : 'Не може да се създаде директория на FTP: "$1"',
			'errArchiveExec'       : 'Грешка при архивиране на файлове: "$1"',
			'errExtractExec'       : 'Грешка при разархивиране на файлове: "$1"',
			'errNetUnMount'        : 'Не може да се размонтира', // from v2.1 added 30.04.2012
			'errConvUTF8'          : 'Не е конвертируем до UTF-8', // from v2.1 added 08.04.2014
			'errFolderUpload'      : 'Опитайте Google Chrome, ако искате да качите папка.', // from v2.1 added 26.6.2015
			'errSearchTimeout'     : 'Времето изтече при търсенето на "$1". Резултатът от търсенето е частичен.', // from v2.1 added 12.1.2016
			'errReauthRequire'     : 'Необходимо е повторно оторизиране.', // from v2.1.10 added 24.3.2016
			'errMaxTargets'        : 'Максималният брой избрани файлове е $ 1.', // from v2.1.17 added 17.10.2016
			'errRestore'           : 'Не може да се възстанови от кошчето. Не може да се определи местоположението за възстановяване.', // from v2.1.24 added 3.5.2017
			'errEditorNotFound'    : 'Не е намерен редактор за този тип файл.', // from v2.1.25 added 23.5.2017
			'errServerError'       : 'Възникна грешка на сървъра.', // from v2.1.25 added 16.6.2017
			'errEmpty'             : 'Папката "$1" не може да се изпразни.', // from v2.1.25 added 22.6.2017
			'moreErrors'           : 'Има още $1 грешки.', // from v2.1.44 added 9.12.2018
			'errMaxMkdirs'         : 'Можете да създадете до $1 папки наведнъж.', // from v2.1.58 added 20.6.2021

			/******************************* commands names ********************************/
			'cmdarchive'   : 'Създай архив',
			'cmdback'      : 'Назад',
			'cmdcopy'      : 'Копирай',
			'cmdcut'       : 'Изрежи',
			'cmddownload'  : 'Свали',
			'cmdduplicate' : 'Дублирай',
			'cmdedit'      : 'Редактирай файл',
			'cmdextract'   : 'Извлечи файловете от архива',
			'cmdforward'   : 'Напред',
			'cmdgetfile'   : 'Избери файлове',
			'cmdhelp'      : 'За тази програма',
			'cmdhome'      : 'Начало',
			'cmdinfo'      : 'Получете информация и споделете',
			'cmdmkdir'     : 'Нова папка',
			'cmdmkdirin'   : 'В нова папка', // from v2.1.7 added 19.2.2016
			'cmdmkfile'    : 'Нов файл',
			'cmdopen'      : 'Отвори',
			'cmdpaste'     : 'Вмъкни',
			'cmdquicklook' : 'Преглед',
			'cmdreload'    : 'Презареди',
			'cmdrename'    : 'Преименувай',
			'cmdrm'        : 'Изтрий',
			'cmdtrash'     : 'В кошчето', //from v2.1.24 added 29.4.2017
			'cmdrestore'   : 'Възстанови', //from v2.1.24 added 3.5.2017
			'cmdsearch'    : 'Намери файлове',
			'cmdup'        : 'Една директория нагоре',
			'cmdupload'    : 'Качи файлове',
			'cmdview'      : 'Виж',
			'cmdresize'    : 'Промени изображение',
			'cmdsort'      : 'Подреди',
			'cmdnetmount'  : 'Монтирай мрежов ресурс', // added 18.04.2012
			'cmdnetunmount': 'Размонтирай', // from v2.1 added 30.04.2012
			'cmdplaces'    : 'Към избрани', // added 28.12.2014
			'cmdchmod'     : 'Промяна на вид', // from v2.1 added 20.6.2015
			'cmdopendir'   : 'Отвори папка', // from v2.1 added 13.1.2016
			'cmdcolwidth'  : 'Нулирай ширината на колоната', // from v2.1.13 added 12.06.2016
			'cmdfullscreen': 'Цял екран', // from v2.1.15 added 03.08.2016
			'cmdmove'      : 'Премести', // from v2.1.15 added 21.08.2016
			'cmdempty'     : 'Изпразни папката', // from v2.1.25 added 22.06.2017
			'cmdundo'      : 'Отмени', // from v2.1.27 added 31.07.2017
			'cmdredo'      : 'Преправи', // from v2.1.27 added 31.07.2017
			'cmdpreference': 'Настройки', // from v2.1.27 added 03.08.2017
			'cmdselectall' : 'Избери всичко', // from v2.1.28 added 15.08.2017
			'cmdselectnone': 'Избери нищо', // from v2.1.28 added 15.08.2017
			'cmdselectinvert': 'Обърни селекцията', // from v2.1.28 added 15.08.2017
			'cmdopennew'   : 'Отвори в нов прозорец', // from v2.1.38 added 3.4.2018
			'cmdhide'      : 'Скрий (лично)', // from v2.1.41 added 24.7.2018

			/*********************************** buttons ***********************************/
			'btnClose'  : 'Затвори',
			'btnSave'   : 'Запиши',
			'btnRm'     : 'Премахни',
			'btnApply'  : 'Приложи',
			'btnCancel' : 'Отказ',
			'btnNo'     : 'Не',
			'btnYes'    : 'Да',
			'btnMount'  : 'Монтирай',  // added 18.04.2012
			'btnApprove': 'Отиди на $1 и одобри', // from v2.1 added 26.04.2012
			'btnUnmount': 'Размонтирай', // from v2.1 added 30.04.2012
			'btnConv'   : 'Конвертирай', // from v2.1 added 08.04.2014
			'btnCwd'    : 'Тук',      // from v2.1 added 22.5.2015
			'btnVolume' : 'Ресурс',    // from v2.1 added 22.5.2015
			'btnAll'    : 'Всички',       // from v2.1 added 22.5.2015
			'btnMime'   : 'MIME тип', // from v2.1 added 22.5.2015
			'btnFileName':'Име',  // from v2.1 added 22.5.2015
			'btnSaveClose': 'Запази и затвори', // from v2.1 added 12.6.2015
			'btnBackup' : 'Архивирай', // fromv2.1 added 28.11.2015
			'btnRename'    : 'Преименувай',      // from v2.1.24 added 6.4.2017
			'btnRenameAll' : 'Преименувай(Всички)', // from v2.1.24 added 6.4.2017
			'btnPrevious' : 'Пред ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnNext'     : 'След ($1/$2)', // from v2.1.24 added 11.5.2017
			'btnSaveAs'   : 'Запази като', // from v2.1.25 added 24.5.2017

			/******************************** notifications ********************************/
			'ntfopen'     : 'Отваряне на папка',
			'ntffile'     : 'Отваряне на файл',
			'ntfreload'   : 'Презареждане съдържанието на папка',
			'ntfmkdir'    : 'Създава се директория',
			'ntfmkfile'   : 'Създава се файл',
			'ntfrm'       : 'Изтриване на файлове',
			'ntfcopy'     : 'Копиране на файлове',
			'ntfmove'     : 'Преместване на файлове',
			'ntfprepare'  : 'Подготовка за копиране на файлове',
			'ntfrename'   : 'Преименуване на файлове',
			'ntfupload'   : 'Качват се файлове',
			'ntfdownload' : 'Свалят се файлове',
			'ntfsave'     : 'Запис на файлове',
			'ntfarchive'  : 'Създава се архив',
			'ntfextract'  : 'Извличат се файловете от архив',
			'ntfsearch'   : 'Търсят се файлове',
			'ntfresize'   : 'Преоразмеряват се изображения',
			'ntfsmth'     : 'Зает съм >_<',
			'ntfloadimg'  : 'Зареждат се изображения',
			'ntfnetmount' : 'Монтира се мрежов ресурс', // added 18.04.2012
			'ntfnetunmount': 'Размонтира се мрежов ресурс', // from v2.1 added 30.04.2012
			'ntfdim'      : 'Извличат се размерите на изображение', // added 20.05.2013
			'ntfreaddir'  : 'Извлича се информация за папка', // from v2.1 added 01.07.2013
			'ntfurl'      : 'Взима се URL от връзка', // from v2.1 added 11.03.2014
			'ntfchmod'    : 'Променя се вида на файл', // from v2.1 added 20.6.2015
			'ntfpreupload': 'Проверка на името на файла за качване', // from v2.1 added 31.11.2015
			'ntfzipdl'    : 'Създаване на файл за изтегляне', // from v2.1.7 added 23.1.2016
			'ntfparents'  : 'Получава се информация за пътя', // from v2.1.17 added 2.11.2016
			'ntfchunkmerge': 'Обработка на качения файл', // from v2.1.17 added 2.11.2016
			'ntftrash'    : 'Прехвърлят се позиции в кошчето', // from v2.1.24 added 2.5.2017
			'ntfrestore'  : 'Извършва се възстановяване от кошчето', // from v2.1.24 added 3.5.2017
			'ntfchkdir'   : 'Проверка на целевата папка', // from v2.1.24 added 3.5.2017
			'ntfundo'     : 'Отмяна на предишната операция', // from v2.1.27 added 31.07.2017
			'ntfredo'     : 'Възстановяване на предходните отменени', // from v2.1.27 added 31.07.2017
			'ntfchkcontent' : 'Проверка на съдържанието', // from v2.1.41 added 3.8.2018

			/*********************************** volumes *********************************/
			'volume_Trash' : 'Кошче', //from v2.1.24 added 29.4.2017

			/************************************ dates **********************************/
			'dateUnknown' : 'неизвестна',
			'Today'       : 'днес',
			'Yesterday'   : 'вчера',
			'msJan'       : 'яну',
			'msFeb'       : 'фев',
			'msMar'       : 'мар',
			'msApr'       : 'апр',
			'msMay'       : 'май',
			'msJun'       : 'юни',
			'msJul'       : 'юли',
			'msAug'       : 'авг',
			'msSep'       : 'сеп',
			'msOct'       : 'окт',
			'msNov'       : 'ное',
			'msDec'       : 'дек',
			'January'     : 'януари',
			'February'    : 'февруари',
			'March'       : 'март',
			'April'       : 'април',
			'May'         : 'май',
			'June'        : 'юни',
			'July'        : 'юли',
			'August'      : 'август',
			'September'   : 'септември',
			'October'     : 'октомври',
			'November'    : 'ноември',
			'December'    : 'декември',
			'Sunday'      : 'неделя',
			'Monday'      : 'понеделник',
			'Tuesday'     : 'вторник',
			'Wednesday'   : 'сряда',
			'Thursday'    : 'четвъртък',
			'Friday'      : 'петък',
			'Saturday'    : 'събота',
			'Sun'         : 'нед',
			'Mon'         : 'пон',
			'Tue'         : 'вто',
			'Wed'         : 'сря',
			'Thu'         : 'чет',
			'Fri'         : 'пет',
			'Sat'         : 'съб',

			/******************************** sort variants ********************************/
			'sortname'          : 'по име',
			'sortkind'          : 'по вид',
			'sortsize'          : 'по размер',
			'sortdate'          : 'по дата',
			'sortFoldersFirst'  : 'Папките първи',
			'sortperm'          : 'по права', // from v2.1.13 added 13.06.2016
			'sortmode'          : 'по вид',       // from v2.1.13 added 13.06.2016
			'sortowner'         : 'по собственик',      // from v2.1.13 added 13.06.2016
			'sortgroup'         : 'по група',      // from v2.1.13 added 13.06.2016
			'sortAlsoTreeview'  : 'Също дървовиден изглед',  // from v2.1.15 added 01.08.2016

			/********************************** new items **********************************/
			'untitled file.txt' : 'Нов файл.txt', // added 10.11.2015
			'untitled folder'   : 'Нова папка',   // added 10.11.2015
			'Archive'           : 'Нов архив',  // from v2.1 added 10.11.2015
			'untitled file'     : 'Нов файл.$1',  // from v2.1.41 added 6.8.2018
			'extentionfile'     : '$1: Файл',    // from v2.1.41 added 6.8.2018
			'extentiontype'     : '$1: $2',      // from v2.1.43 added 17.10.2018

			/********************************** messages **********************************/
			'confirmReq'      : 'Изисква се подтвърждение',
			'confirmRm'       : 'Сигурни ли сте, че желаете да премахнете файловете?<br/>Това действие е необратимо!',
			'confirmRepl'     : 'Да заменя ли стария файл с новия?',
			'confirmRest'     : 'Да се замени ли съществуващата позиция с тази в кошчето?', // fromv2.1.24 added 5.5.2017
			'confirmConvUTF8' : 'Не е в UTF-8 формат<br/>Конвертиране до UTF-8?<br/>Съдържанието става в UTF-8 формат при запазване след конверсията.', // from v2.1 added 08.04.2014
			'confirmNonUTF8'  : 'Кодирането на този файл не може да бъде открито. Необходимо е временно да се преобразува в UTF-8 за редактиране. <br/> Моля, изберете кодиране на този файл.', // from v2.1.19 added 28.11.2016
			'confirmNotSave'  : 'Има направени промени.<br/>Те ще бъдат загубени, ако не запишете промените.', // from v2.1 added 15.7.2015
			'confirmTrash'    : 'Наистина ли искате да преместите позиции в кошчето за боклук?', //from v2.1.24 added 29.4.2017
			'confirmMove'     : 'Наистина ли искате да преместите елементи в "$1"?', //from v2.1.50 added 27.7.2019
			'apllyAll'        : 'Приложи за всички',
			'name'            : 'Име',
			'size'            : 'Размер',
			'perms'           : 'Права',
			'modify'          : 'Променено',
			'kind'            : 'Вид',
			'read'            : 'четене',
			'write'           : 'запис',
			'noaccess'        : 'без достъп',
			'and'             : 'и',
			'unknown'         : 'непознат',
			'selectall'       : 'Избери всички файлове',
			'selectfiles'     : 'Избери файл(ове)',
			'selectffile'     : 'Избери първият файл',
			'selectlfile'     : 'Избери последният файл',
			'viewlist'        : 'Изглед списък',
			'viewicons'       : 'Изглед икони',
			'viewSmall'       : 'Малки икони', // from v2.1.39 added 22.5.2018
			'viewMedium'      : 'Средни икони', // from v2.1.39 added 22.5.2018
			'viewLarge'       : 'Големи икони', // from v2.1.39 added 22.5.2018
			'viewExtraLarge'  : 'Много големи икони', // from v2.1.39 added 22.5.2018
			'places'          : 'Избрани',
			'calc'            : 'Изчисли',
			'path'            : 'Път',
			'aliasfor'        : 'Връзка към',
			'locked'          : 'Заключен',
			'dim'             : 'Размери',
			'files'           : 'Файлове',
			'folders'         : 'Папки',
			'items'           : 'Позиции',
			'yes'             : 'да',
			'no'              : 'не',
			'link'            : 'Връзка',
			'searcresult'     : 'Резултати от търсенето',
			'selected'        : 'Избрани позиции',
			'about'           : 'За',
			'shortcuts'       : 'Бързи клавиши',
			'help'            : 'Помощ',
			'webfm'           : 'Файлов менажер за Интернет',
			'ver'             : 'Версия',
			'protocolver'     : 'версия на протокола',
			'homepage'        : 'Начало',
			'docs'            : 'Документация',
			'github'          : 'Разклонение в Github',
			'twitter'         : 'Последвайте ни в Twitter',
			'facebook'        : 'Присъединете се към нас във Facebook',
			'team'            : 'Екип',
			'chiefdev'        : 'Главен разработчик',
			'developer'       : 'разработчик',
			'contributor'     : 'сътрудник',
			'maintainer'      : 'поддръжка',
			'translator'      : 'преводач',
			'icons'           : 'Икони',
			'dontforget'      : 'и не забравяйте да си вземете кърпата',
			'shortcutsof'     : 'Преките пътища са изключени',
			'dropFiles'       : 'Пуснете файловете тук',
			'or'              : 'или',
			'selectForUpload' : 'Избери файлове',
			'moveFiles'       : 'Премести файлове',
			'copyFiles'       : 'Копирай файлове',
			'restoreFiles'    : 'Възстанови файлове', // from v2.1.24 added 5.5.2017
			'rmFromPlaces'    : 'Премахни от избрани',
			'aspectRatio'     : 'Отношение',
			'scale'           : 'Мащаб',
			'width'           : 'Ширина',
			'height'          : 'Височина',
			'resize'          : 'Преоразмери',
			'crop'            : 'Отрежи',
			'rotate'          : 'Ротирай',
			'rotate-cw'       : 'Ротирай 90 градуса CW',
			'rotate-ccw'      : 'Ротирай 90 градуса CCW',
			'degree'          : '°',
			'netMountDialogTitle' : 'Монтиране на мрежов ресурс', // added 18.04.2012
			'protocol'            : 'Протокол', // added 18.04.2012
			'host'                : 'Хост', // added 18.04.2012
			'port'                : 'Порт', // added 18.04.2012
			'user'                : 'Потребител', // added 18.04.2012
			'pass'                : 'Парола', // added 18.04.2012
			'confirmUnmount'      : 'Ще размонтирате $1?',  // from v2.1 added 30.04.2012
			'dropFilesBrowser': 'Пусни или вмъкни файлове от браузера', // from v2.1 added 30.05.2012
			'dropPasteFiles'  : 'Тук поснете файловете, URL адресите или изображенията от клипборда', // from v2.1 added 07.04.2014
			'encoding'        : 'Кодировка', // from v2.1 added 19.12.2014
			'locale'          : 'Локали',   // from v2.1 added 19.12.2014
			'searchTarget'    : 'Цел: $1',                // from v2.1 added 22.5.2015
			'searchMime'      : 'Търсене по въведен MIME тип', // from v2.1 added 22.5.2015
			'owner'           : 'Собственик', // from v2.1 added 20.6.2015
			'group'           : 'Група', // from v2.1 added 20.6.2015
			'other'           : 'Други', // from v2.1 added 20.6.2015
			'execute'         : 'Изпълнява', // from v2.1 added 20.6.2015
			'perm'            : 'Разрешение', // from v2.1 added 20.6.2015
			'mode'            : 'Вид', // from v2.1 added 20.6.2015
			'emptyFolder'     : 'Папката е празна', // from v2.1.6 added 30.12.2015
			'emptyFolderDrop' : 'Папката е празна\\A Влачи и пусни за да добавите файлове', // from v2.1.6 added 30.12.2015
			'emptyFolderLTap' : 'Папката е празна\\A Докоснете дълго за да добавите позиции', // from v2.1.6 added 30.12.2015
			'quality'         : 'Качество', // from v2.1.6 added 5.1.2016
			'autoSync'        : 'Автоматично синхронизиране',  // from v2.1.6 added 10.1.2016
			'moveUp'          : 'Премести нагоре',  // from v2.1.6 added 18.1.2016
			'getLink'         : 'Вземи URL връзка', // from v2.1.7 added 9.2.2016
			'selectedItems'   : 'Избрани позиции ($1)', // from v2.1.7 added 2.19.2016
			'folderId'        : 'Папка ID', // from v2.1.10 added 3.25.2016
			'offlineAccess'   : 'Позволи офлайн достъп', // from v2.1.10 added 3.25.2016
			'reAuth'          : 'За повторно удостоверяване', // from v2.1.10 added 3.25.2016
			'nowLoading'      : 'Сега се зарежда...', // from v2.1.12 added 4.26.2016
			'openMulti'       : 'Отваряне на няколко файла', // from v2.1.12 added 5.14.2016
			'openMultiConfirm': 'Опитвате се да отворите $1 файла. Наистина ли искате да ги отворите в браузъра?', // from v2.1.12 added 5.14.2016
			'emptySearch'     : 'Няма резултат от търсенето.', // from v2.1.12 added 5.16.2016
			'editingFile'     : 'Редактира се файл.', // from v2.1.13 added 6.3.2016
			'hasSelected'     : 'Вие сте избрали $1 позиции.', // from v2.1.13 added 6.3.2016
			'hasClipboard'    : 'Имате $1 позиции в клипборда.', // from v2.1.13 added 6.3.2016
			'incSearchOnly'   : 'Инкременталното търсене е само от текущия изглед.', // from v2.1.13 added 6.30.2016
			'reinstate'       : 'Възстановяване', // from v2.1.15 added 3.8.2016
			'complete'        : '$1 завършени', // from v2.1.15 added 21.8.2016
			'contextmenu'     : 'Контекстно меню', // from v2.1.15 added 9.9.2016
			'pageTurning'     : 'Завъртане на страницата', // from v2.1.15 added 10.9.2016
			'volumeRoots'     : 'Начала на ресурси', // from v2.1.16 added 16.9.2016
			'reset'           : 'Нулиране', // from v2.1.16 added 1.10.2016
			'bgcolor'         : 'Цвят на фона', // from v2.1.16 added 1.10.2016
			'colorPicker'     : 'Средство за избиране на цвят', // from v2.1.16 added 1.10.2016
			'8pxgrid'         : '8px мрежа', // from v2.1.16 added 4.10.2016
			'enabled'         : 'Активно', // from v2.1.16 added 4.10.2016
			'disabled'        : 'Неактивно', // from v2.1.16 added 4.10.2016
			'emptyIncSearch'  : 'Няма резултат от търсенето в текущия изглед.\\AНатиснете [Enter] за да разширите целта на търсене.', // from v2.1.16 added 5.10.2016
			'emptyLetSearch'  : 'Резултатите от търсенето на първата буква са празни в текущия изглед.', // from v2.1.23 added 24.3.2017
			'textLabel'       : 'Текстов етикет', // from v2.1.17 added 13.10.2016
			'minsLeft'        : '$1 мин остават', // from v2.1.17 added 13.11.2016
			'openAsEncoding'  : 'Отваряне отново с избрано кодиране', // from v2.1.19 added 2.12.2016
			'saveAsEncoding'  : 'Запазете с избраното кодиране', // from v2.1.19 added 2.12.2016
			'selectFolder'    : 'Избери папка', // from v2.1.20 added 13.12.2016
			'firstLetterSearch': 'Търсене по първа буква', // from v2.1.23 added 24.3.2017
			'presets'         : 'Мостри', // from v2.1.25 added 26.5.2017
			'tooManyToTrash'  : 'Прекалено много позиции, не може да премести в кошчето.', // from v2.1.25 added 9.6.2017
			'TextArea'        : 'Текстово поле', // from v2.1.25 added 14.6.2017
			'folderToEmpty'   : 'Изпразнете папка "$1".', // from v2.1.25 added 22.6.2017
			'filderIsEmpty'   : 'В папка "$1" няма позиции.', // from v2.1.25 added 22.6.2017
			'preference'      : 'Настройки', // from v2.1.26 added 28.6.2017
			'language'        : 'Настройка на езика', // from v2.1.26 added 28.6.2017
			'clearBrowserData': 'Инициализирайте настройките запаметени в този браузър', // from v2.1.26 added 28.6.2017
			'toolbarPref'     : 'Настройки на лентата с инструменти', // from v2.1.27 added 2.8.2017
			'charsLeft'       : '... $1 символа остават.',  // from v2.1.29 added 30.8.2017
			'linesLeft'       : '... $1 оставени редове.',  // from v2.1.52 added 16.1.2020
			'sum'             : 'Сумарно', // from v2.1.29 added 28.9.2017
			'roughFileSize'   : 'Груб размер на файла', // from v2.1.30 added 2.11.2017
			'autoFocusDialog' : 'Фокусирайте върху елемента в диалоговия прозорец с мишката',  // from v2.1.30 added 2.11.2017
			'select'          : 'Избери', // from v2.1.30 added 23.11.2017
			'selectAction'    : 'Действие при избор на файл', // from v2.1.30 added 23.11.2017
			'useStoredEditor' : 'Отворете с редактора, използван за последен път', // from v2.1.30 added 23.11.2017
			'selectinvert'    : 'Обърнете селекцията', // from v2.1.30 added 25.11.2017
			'renameMultiple'  : 'Наистина ли искате да преименувате $1 избрани позиции като $2? <br/> Това не може да бъде отменено!', // from v2.1.31 added 4.12.2017
			'batchRename'     : 'Групово преименуване', // from v2.1.31 added 8.12.2017
			'plusNumber'      : '+ Номер', // from v2.1.31 added 8.12.2017
			'asPrefix'        : 'Добави префикс', // from v2.1.31 added 8.12.2017
			'asSuffix'        : 'Добави суфикс', // from v2.1.31 added 8.12.2017
			'changeExtention' : 'Промени разширение', // from v2.1.31 added 8.12.2017
			'columnPref'      : 'Настройки за колони (Изглед в списък)', // from v2.1.32 added 6.2.2018
			'reflectOnImmediate' : 'Всички промени ще се отразят незабавно в архива.', // from v2.1.33 added 2.3.2018
			'reflectOnUnmount'   : 'Промените няма да се отразят, докато не размонтирате този диск.', // from v2.1.33 added 2.3.2018
			'unmountChildren' : 'Следните томове, монтирани на този том, също са демонтирани. Сигурен ли си, че ще го демонтираш?', // from v2.1.33 added 5.3.2018
			'selectionInfo'   : 'Информация за селекцията', // from v2.1.33 added 7.3.2018
			'hashChecker'     : 'Алгоритми за показване на файловия хеш', // from v2.1.33 added 10.3.2018
			'infoItems'       : 'Информационни елементи (информационен панел за избор)', // from v2.1.38 added 28.3.2018
			'pressAgainToExit': 'Натиснете отново, за да излезете.', // from v2.1.38 added 1.4.2018
			'toolbar'         : 'Лента с инструменти', // from v2.1.38 added 4.4.2018
			'workspace'       : 'Работно пространство', // from v2.1.38 added 4.4.2018
			'dialog'          : 'Диалог', // from v2.1.38 added 4.4.2018
			'all'             : 'Всички', // from v2.1.38 added 4.4.2018
			'iconSize'        : 'Размер на иконите (изглед с икони)', // from v2.1.39 added 7.5.2018
			'editorMaximized' : 'Отваря максимизиран прозорец на редактора', // from v2.1.40 added 30.6.2018
			'editorConvNoApi' : 'Тъй като в момента не е налична API за конверсията, моля, конвертирайте в уебсайта.', //from v2.1.40 added 8.7.2018
			'editorConvNeedUpload' : 'След конверсията трябва да го качите с URL адреса или изтегления файл, за да запазите конвертирания файл.', //from v2.1.40 added 8.7.2018
			'convertOn'       : 'Конвертиране на сайта от $1', // from v2.1.40 added 10.7.2018
			'integrations'    : 'Интеграции', // from v2.1.40 added 11.7.2018
			'integrationWith' : 'Този elFinder има следните интегрирани външни услуги. Моля, проверете условията за ползване, декларацията за поверителност и т.н., преди да ги използвате.', // from v2.1.40 added 11.7.2018
			'showHidden'      : 'Покажи скритите елементи', // from v2.1.41 added 24.7.2018
			'hideHidden'      : 'Скрий скритите елементи', // from v2.1.41 added 24.7.2018
			'toggleHidden'    : 'Покажи/скрий скритите елементи', // from v2.1.41 added 24.7.2018
			'makefileTypes'   : 'Типове файлове за активиране с "Нов файл"', // from v2.1.41 added 7.8.2018
			'typeOfTextfile'  : 'Тип на текстовия файл', // from v2.1.41 added 7.8.2018
			'add'             : 'Добавете', // from v2.1.41 added 7.8.2018
			'theme'           : 'Тема', // from v2.1.43 added 19.10.2018
			'default'         : 'По подразбиране', // from v2.1.43 added 19.10.2018
			'description'     : 'Описание', // from v2.1.43 added 19.10.2018
			'website'         : 'уебсайт', // from v2.1.43 added 19.10.2018
			'author'          : 'Автор', // from v2.1.43 added 19.10.2018
			'email'           : 'електронна поща', // from v2.1.43 added 19.10.2018
			'license'         : 'Лиценз', // from v2.1.43 added 19.10.2018
			'exportToSave'    : 'Този елемент не може да бъде запазен. За да избегнете загубата на редакциите, трябва да експортирате на вашия компютър.', // from v2.1.44 added 1.12.2018
			'dblclickToSelect': 'Щракнете двукратно върху файла, за да го изберете.', // from v2.1.47 added 22.1.2019
			'useFullscreen'   : 'Използвайте режим на цял екран', // from v2.1.47 added 19.2.2019

			/********************************** mimetypes **********************************/
			'kindUnknown'     : 'Непознат',
			'kindRoot'        : 'Начало на ресурс', // from v2.1.16 added 16.10.2016
			'kindFolder'      : 'Папка',
			'kindSelects'     : 'Селекции', // from v2.1.29 added 29.8.2017
			'kindAlias'       : 'Връзка',
			'kindAliasBroken' : 'Счупена връзка',
			// applications
			'kindApp'         : 'Приложение',
			'kindPostscript'  : 'Postscript документ',
			'kindMsOffice'    : 'Microsoft Office документ',
			'kindMsWord'      : 'Microsoft Word документ',
			'kindMsExcel'     : 'Microsoft Excel документ',
			'kindMsPP'        : 'Microsoft Powerpoint презентация',
			'kindOO'          : 'Open Office документ',
			'kindAppFlash'    : 'Flash приложение',
			'kindPDF'         : 'PDF документ',
			'kindTorrent'     : 'Bittorrent файл',
			'kind7z'          : '7z архив',
			'kindTAR'         : 'TAR архив',
			'kindGZIP'        : 'GZIP архив',
			'kindBZIP'        : 'BZIP архив',
			'kindXZ'          : 'XZ архив',
			'kindZIP'         : 'ZIP архив',
			'kindRAR'         : 'RAR архив',
			'kindJAR'         : 'Java JAR файл',
			'kindTTF'         : 'True Type шрифт',
			'kindOTF'         : 'Open Type шрифт',
			'kindRPM'         : 'RPM пакет',
			// texts
			'kindText'        : 'Текстов документ',
			'kindTextPlain'   : 'Чист текст',
			'kindPHP'         : 'PHP изходен код',
			'kindCSS'         : 'CSS таблица със стилове',
			'kindHTML'        : 'HTML документ',
			'kindJS'          : 'Javascript изходен код',
			'kindRTF'         : 'RTF текстови файл',
			'kindC'           : 'C изходен код',
			'kindCHeader'     : 'C header изходен код',
			'kindCPP'         : 'C++ изходен код',
			'kindCPPHeader'   : 'C++ header изходен код',
			'kindShell'       : 'Unix shell изходен код',
			'kindPython'      : 'Python изходен код',
			'kindJava'        : 'Java изходен код',
			'kindRuby'        : 'Ruby изходен код',
			'kindPerl'        : 'Perl изходен код',
			'kindSQL'         : 'SQL изходен код',
			'kindXML'         : 'XML документ',
			'kindAWK'         : 'AWK изходен код',
			'kindCSV'         : 'CSV стойности разделени със запетая',
			'kindDOCBOOK'     : 'Docbook XML документ',
			'kindMarkdown'    : 'Markdown текст', // added 20.7.2015
			// images
			'kindImage'       : 'Изображение',
			'kindBMP'         : 'BMP изображение',
			'kindJPEG'        : 'JPEG изображение',
			'kindGIF'         : 'GIF изображение',
			'kindPNG'         : 'PNG изображение',
			'kindTIFF'        : 'TIFF изображение',
			'kindTGA'         : 'TGA изображение',
			'kindPSD'         : 'Adobe Photoshop изображение',
			'kindXBITMAP'     : 'X bitmap изображение',
			'kindPXM'         : 'Pixelmator изображение',
			// media
			'kindAudio'       : 'Аудио медия',
			'kindAudioMPEG'   : 'MPEG звук',
			'kindAudioMPEG4'  : 'MPEG-4 звук',
			'kindAudioMIDI'   : 'MIDI звук',
			'kindAudioOGG'    : 'Ogg Vorbis звук',
			'kindAudioWAV'    : 'WAV звук',
			'AudioPlaylist'   : 'MP3 списък за изпълнение',
			'kindVideo'       : 'Видео медия',
			'kindVideoDV'     : 'DV филм',
			'kindVideoMPEG'   : 'MPEG филм',
			'kindVideoMPEG4'  : 'MPEG-4 филм',
			'kindVideoAVI'    : 'AVI филм',
			'kindVideoMOV'    : 'Quick Time филм',
			'kindVideoWM'     : 'Windows Media филм',
			'kindVideoFlash'  : 'Flash филм',
			'kindVideoMKV'    : 'Matroska филм',
			'kindVideoOGG'    : 'Ogg филм'
		}
	};
}));

Dlib/js/jquery.dialogelfinder.js000064400000006260147361034410012561 0ustar00/**
 * @class dialogelfinder - open elFinder in dialog window
 *
 * @param  Object  elFinder options with dialog options
 * @example
 * jQuery(selector).dialogelfinder({
 *     // some elfinder options
 *     title          : 'My files', // dialog title, default = "Files"
 *     width          : 850,        // dialog width, default 840
 *     autoOpen       : false,      // if false - dialog will not be opened after init, default = true
 *     destroyOnClose : true        // destroy elFinder on close dialog, default = false
 * })
 * @author Dmitry (dio) Levashov
 **/
jQuery.fn.dialogelfinder = function(opts, opts2) {
		var position = 'elfinderPosition',
		destroy  = 'elfinderDestroyOnClose',
		node, pos;

	if (jQuery.isPlainObject(opts)) {
		this.not('.elfinder').each(function() {

			opts.handlers = opts.handlers || {};

			var node    = jQuery(this),
				doc     = jQuery(document),
				toolbar = jQuery('<div class="ui-widget-header dialogelfinder-drag ui-corner-top">'+(opts.title || 'Files')+'</div>'),
				button  = jQuery('<a href="#" class="dialogelfinder-drag-close ui-corner-all"><span class="ui-icon ui-icon-closethick"> </span></a>')
					.appendTo(toolbar)
					.on('click', function(e) {
						e.preventDefault();
						node.dialogelfinder('close');
					}),
				init    = opts.handlers.init,
				elfinder;

			opts.handlers.init = function(e, fm) {
				node.prepend(toolbar);
				init && init(e, fm);
			};

			elfinder = node.addClass('elfinder dialogelfinder touch-punch')
				.css('position', 'absolute')
				.hide()
				.appendTo('body')
				.draggable({
					handle : '.dialogelfinder-drag',
					containment : 'window',
					stop : function() {
						node.trigger('resize');
						elfinder.trigger('resize');
					}
				})
				.elfinder(opts, opts2)
				.elfinder('instance');
			
			elfinder.reloadCallback = function(o, o2) {
				elfinder.destroy();
				o.handlers.init = init;
				node.dialogelfinder(o, o2).dialogelfinder('open');
			};
			
			node.width(parseInt(node.width()) || 840) // fix width if set to "auto"
				.data(destroy, !!opts.destroyOnClose)
				.find('.elfinder-toolbar').removeClass('ui-corner-top');
			
			opts.position && node.data(position, opts.position);
			
			opts.autoOpen !== false && jQuery(this).dialogelfinder('open');

		});
	} else {
		if (opts === 'open') {
			node = jQuery(this);
			pos = node.data(position) || {
				top  : parseInt(jQuery(document).scrollTop() + (jQuery(window).height() < node.height() ? 2 : (jQuery(window).height() - node.height())/2)),
				left : parseInt(jQuery(document).scrollLeft() + (jQuery(window).width() < node.width()  ? 2 : (jQuery(window).width()  - node.width())/2))
			};

			if (node.is(':hidden')) {
				node.addClass('ui-front').css(pos).show().trigger('resize');

				setTimeout(function() {
					// fix resize icon position and make elfinder active
					node.trigger('resize').trigger('mousedown');
				}, 200);
			}
		} else if (opts === 'close') {
			node = jQuery(this).removeClass('ui-front');
				
			if (node.is(':visible')) {
				!!node.data(destroy)
					? node.elfinder('destroy').remove()
					: node.elfinder('close');
			}
		} else if (opts === 'instance') {
			return jQuery(this).getElFinder();
		}
	}

	return this;
};
lib/js/elFinder.command.js000064400000020113147361034410011431 0ustar00/**
 * elFinder command prototype
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
elFinder.prototype.command = function(fm) {
	"use strict";
	/**
	 * elFinder instance
	 *
	 * @type  elFinder
	 */
	this.fm = fm;
	
	/**
	 * Command name, same as class name
	 *
	 * @type  String
	 */
	this.name = '';
	
	/**
	 * Dialog class name
	 *
	 * @type  String
	 */
	this.dialogClass = '';

	/**
	 * Command icon class name with out 'elfinder-button-icon-'
	 * Use this.name if it is empty
	 *
	 * @type  String
	 */
	this.className = '';

	/**
	 * Short command description
	 *
	 * @type  String
	 */
	this.title = '';
	
	/**
	 * Linked(Child) commands name
	 * They are loaded together when tthis command is loaded.
	 * 
	 * @type  Array
	 */
	this.linkedCmds = [];
	
	/**
	 * Current command state
	 *
	 * @example
	 * this.state = -1; // command disabled
	 * this.state = 0;  // command enabled
	 * this.state = 1;  // command active (for example "fullscreen" command while elfinder in fullscreen mode)
	 * @default -1
	 * @type  Number
	 */
	this.state = -1;
	
	/**
	 * If true, command can not be disabled by connector.
	 * @see this.update()
	 *
	 * @type  Boolen
	 */
	this.alwaysEnabled = false;
	
	/**
	 * Do not change dirctory on removed current work directory
	 * 
	 * @type  Boolen
	 */
	this.noChangeDirOnRemovedCwd = false;
	
	/**
	 * If true, this means command was disabled by connector.
	 * @see this.update()
	 *
	 * @type  Boolen
	 */
	this._disabled = false;
	
	/**
	 * If true, this command is disabled on serach results
	 * 
	 * @type  Boolean
	 */
	this.disableOnSearch = false;
	
	/**
	 * Call update() when event select fired
	 * 
	 * @type  Boolean
	 */
	this.updateOnSelect = true;
	
	/**
	 * Sync toolbar button title on change
	 * 
	 * @type  Boolean
	 */
	this.syncTitleOnChange = false;

	/**
	 * Keep display of the context menu when command execution
	 * 
	 * @type  Boolean
	 */
	this.keepContextmenu = false;
	
	/**
	 * elFinder events defaults handlers.
	 * Inside handlers "this" is current command object
	 *
	 * @type  Object
	 */
	this._handlers = {
		enable  : function() { this.update(void(0), this.value); },
		disable : function() { this.update(-1, this.value); },
		'open reload load sync'    : function() { 
			this._disabled = !(this.alwaysEnabled || this.fm.isCommandEnabled(this.name));
			this.update(void(0), this.value);
			this.change(); 
		}
	};
	
	/**
	 * elFinder events handlers.
	 * Inside handlers "this" is current command object
	 *
	 * @type  Object
	 */
	this.handlers = {};
	
	/**
	 * Shortcuts
	 *
	 * @type  Array
	 */
	this.shortcuts = [];
	
	/**
	 * Command options
	 *
	 * @type  Object
	 */
	this.options = {ui : 'button'};
	
	/**
	 * Callback functions on `change` event
	 * 
	 * @type  Array
	 */
	this.listeners = [];

	/**
	 * Prepare object -
	 * bind events and shortcuts
	 *
	 * @return void
	 */
	this.setup = function(name, opts) {
		var self = this,
			fm   = this.fm,
			setCallback = function(s) {
				var cb = s.callback || function(e) {
							fm.exec(self.name, void(0), {
							_userAction: true,
							_currentType: 'shortcut'
						});
					};
				s.callback = function(e) {
					var enabled, checks = {};
					if (self.enabled()) {
						if (fm.searchStatus.state < 2) {
							enabled = fm.isCommandEnabled(self.name);
						} else {
							jQuery.each(fm.selected(), function(i, h) {
								if (fm.optionsByHashes[h]) {
									checks[h] = true;
								} else {
									jQuery.each(fm.volOptions, function(id) {
										if (!checks[id] && h.indexOf(id) === 0) {
											checks[id] = true;
											return false;
										}
									});
								}
							});
							jQuery.each(checks, function(h) {
								enabled = fm.isCommandEnabled(self.name, h);
								if (! enabled) {
									return false;
								}
							});
						}
						if (enabled) {
							self.event = e;
							cb.call(self);
							delete self.event;
						}
					}
				};
			},
			i, s, sc;

		this.name      = name;
		this.title     = fm.messages['cmd'+name] ? fm.i18n('cmd'+name)
		               : ((this.extendsCmd && fm.messages['cmd'+this.extendsCmd]) ? fm.i18n('cmd'+this.extendsCmd) : name);
		this.options   = Object.assign({}, this.options, opts);
		this.listeners = [];
		this.dialogClass = 'elfinder-dialog-' + name;

		if (opts.shortcuts) {
			if (typeof opts.shortcuts === 'function') {
				sc = opts.shortcuts(this.fm, this.shortcuts);
			} else if (Array.isArray(opts.shortcuts)) {
				sc = opts.shortcuts;
			}
			this.shortcuts = sc || [];
		}

		if (this.updateOnSelect) {
			this._handlers.select = function() { this.update(void(0), this.value); };
		}

		jQuery.each(Object.assign({}, self._handlers, self.handlers), function(cmd, handler) {
			fm.bind(cmd, jQuery.proxy(handler, self));
		});

		for (i = 0; i < this.shortcuts.length; i++) {
			s = this.shortcuts[i];
			setCallback(s);
			!s.description && (s.description = this.title);
			fm.shortcut(s);
		}

		if (this.disableOnSearch) {
			fm.bind('search searchend', function() {
				self._disabled = this.type === 'search'? true : ! (this.alwaysEnabled || fm.isCommandEnabled(name));
				self.update(void(0), self.value);
			});
		}

		this.init();
	};

	/**
	 * Command specific init stuffs
	 *
	 * @return void
	 */
	this.init = function() {};

	/**
	 * Exec command
	 *
	 * @param  Array         target files hashes
	 * @param  Array|Object  command value
	 * @return jQuery.Deferred
	 */
	this.exec = function(files, opts) { 
		return jQuery.Deferred().reject(); 
	};
	
	this.getUndo = function(opts, resData) {
		return false;
	};
	
	/**
	 * Return true if command disabled.
	 *
	 * @return Boolen
	 */
	this.disabled = function() {
		return this.state < 0;
	};
	
	/**
	 * Return true if command enabled.
	 *
	 * @return Boolen
	 */
	this.enabled = function() {
		return this.state > -1;
	};
	
	/**
	 * Return true if command active.
	 *
	 * @return Boolen
	 */
	this.active = function() {
		return this.state > 0;
	};
	
	/**
	 * Return current command state.
	 * Must be overloaded in most commands
	 *
	 * @return Number
	 */
	this.getstate = function() {
		return -1;
	};
	
	/**
	 * Update command state/value
	 * and rize 'change' event if smth changed
	 *
	 * @param  Number  new state or undefined to auto update state
	 * @param  mixed   new value
	 * @return void
	 */
	this.update = function(s, v) {
		var state = this.state,
			value = this.value;

		if (this._disabled && this.fm.searchStatus === 0) {
			this.state = -1;
		} else {
			this.state = s !== void(0) ? s : this.getstate();
		}

		this.value = v;
		
		if (state != this.state || value != this.value) {
			this.change();
		}
	};
	
	/**
	 * Bind handler / fire 'change' event.
	 *
	 * @param  Function|undefined  event callback
	 * @return void
	 */
	this.change = function(c) {
		var cmd, i;
		
		if (typeof(c) === 'function') {
			this.listeners.push(c);			
		} else {
			for (i = 0; i < this.listeners.length; i++) {
				cmd = this.listeners[i];
				try {
					cmd(this.state, this.value);
				} catch (e) {
					this.fm.debug('error', e);
				}
			}
		}
		return this;
	};
	

	/**
	 * With argument check given files hashes and return list of existed files hashes.
	 * Without argument return selected files hashes.
	 *
	 * @param  Array|String|void  hashes
	 * @return Array
	 */
	this.hashes = function(hashes) {
		return hashes
			? jQuery.grep(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) ? true : false; })
			: fm.selected();
	};
	
	/**
	 * Return only existed files from given fils hashes | selected files
	 *
	 * @param  Array|String|void  hashes
	 * @return Array
	 */
	this.files = function(hashes) {
		var fm = this.fm;
		
		return hashes
			? jQuery.map(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) || null; })
			: fm.selectedFiles();
	};

	/**
	 * Wrapper to fm.dialog()
	 *
	 * @param  String|DOMElement  content
	 * @param  Object             options
	 * @return Object             jQuery element object
	 */
	this.fmDialog = function(content, options) {
		if (options.cssClass) {
			options.cssClass += ' ' + this.dialogClass;
		} else {
			options.cssClass = this.dialogClass;
		}
		return this.fm.dialog(content, options);
	};
};
lib/js/elFinder.options.js000064400000115725147361034410011524 0ustar00/**
 * Default elFinder config
 *
 * @type  Object
 * @autor Dmitry (dio) Levashov
 */
 elFinder.prototype._options = {
	/**
	 * URLs of 3rd party libraries CDN
	 * 
	 * @type Object
	 */
	cdns : {
		// for editor etc.
		ace        : 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12',
		codemirror : 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.61.1',
		ckeditor   : 'https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.16.1',
		ckeditor5  : 'https://cdn.ckeditor.com/ckeditor5/28.0.0',
		tinymce    : 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/5.7.1',
		simplemde  : 'https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2',
		fabric     : 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.2.0',
		fabric16   : 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.7',
		tui        : 'https://uicdn.toast.com',
		// for quicklook etc.
		hls        : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.0.2/hls.min.js',
		dash       : 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/3.2.2/dash.all.min.js',
		flv        : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.5.0/flv.min.js',
		videojs    : 'https://cdnjs.cloudflare.com/ajax/libs/video.js/7.12.1',
		prettify   : 'https://cdn.jsdelivr.net/gh/google/code-prettify@f1c3473acd1e8ea8c8c1a60c56e89f5cdd06f915/loader/run_prettify.js',
		psd        : 'https://cdnjs.cloudflare.com/ajax/libs/psd.js/3.2.0/psd.min.js',
		rar        : 'https://cdn.jsdelivr.net/gh/nao-pon/rar.js@6cef13ec66dd67992fc7f3ea22f132d770ebaf8b/rar.min.js',
		zlibUnzip  : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/unzip.min.js', // need check unzipFiles() in quicklook.plugins.js when update
		zlibGunzip : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/gunzip.min.js',
		bzip2      : 'https://cdn.jsdelivr.net/gh/nao-pon/bzip2.js@0.8.0/bzip2.js',
		marked     : 'https://cdnjs.cloudflare.com/ajax/libs/marked/2.0.3/marked.min.js',
		sparkmd5   : 'https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.0/spark-md5.min.js',
		jssha      : 'https://cdnjs.cloudflare.com/ajax/libs/jsSHA/3.2.0/sha.min.js',
		amr        : 'https://cdn.jsdelivr.net/gh/yxl/opencore-amr-js@dcf3d2b5f384a1d9ded2a54e4c137a81747b222b/js/amrnb.js',
		tiff       : 'https://cdn.jsdelivr.net/gh/seikichi/tiff.js@545ede3ee46b5a5bc5f06d65954e775aa2a64017/tiff.min.js'
	},
	
	/**
	 * Connector url. Required!
	 *
	 * @type String
	 */
	url : '',

	/**
	 * Ajax request type.
	 *
	 * @type String
	 * @default "get"
	 */
	requestType : 'get',
	
	/**
	 * Use CORS to connector url
	 * 
	 * @type Boolean|null  true|false|null(Auto detect)
	 */
	cors : null,

	/**
	 * Array of header names to return parrot out in HTTP headers received from the server
	 * 
	 * @type Array
	 */
	parrotHeaders : [],

	/**
	 * Maximum number of concurrent connections on request
	 * 
	 * @type Number
	 * @default 3
	 */
	requestMaxConn : 3,

	/**
	 * Transport to send request to backend.
	 * Required for future extensions using websockets/webdav etc.
	 * Must be an object with "send" method.
	 * transport.send must return jQuery.Deferred() object
	 *
	 * @type Object
	 * @default null
	 * @example
	 *  transport : {
	 *    init : function(elfinderInstance) { },
	 *    send : function(options) {
	 *      var dfrd = jQuery.Deferred();
	 *      // connect to backend ...
	 *      return dfrd;
	 *    },
	 *    upload : function(data) {
	 *      var dfrd = jQuery.Deferred();
	 *      // upload ...
	 *      return dfrd;
	 *    }
	 *    
	 *  }
	 **/
	transport : {},

	/**
	 * URL to upload file to.
	 * If not set - connector URL will be used
	 *
	 * @type String
	 * @default  ''
	 */
	urlUpload : '',

	/**
	 * Allow to drag and drop to upload files
	 *
	 * @type Boolean|String
	 * @default  'auto'
	 */
	dragUploadAllow : 'auto',
	
	/**
	 * Confirmation dialog displayed at the time of overwriting upload
	 * 
	 * @type Boolean
	 * @default true
	 */
	overwriteUploadConfirm : true,
	
	/**
	 * Max size of chunked data of file upload
	 * 
	 * @type Number
	 * @default  10485760(10MB)
	 */
	uploadMaxChunkSize : 10485760,
	
	/**
	 * Regular expression of file name to exclude when uploading folder
	 * 
	 * @type Object
	 * @default { win: /^(?:desktop\.ini|thumbs\.db)$/i, mac: /^\.ds_store$/i }
	 */
	folderUploadExclude : {
		win: /^(?:desktop\.ini|thumbs\.db)$/i,
		mac: /^\.ds_store$/i
	},
	
	/**
	 * Timeout for upload using iframe
	 *
	 * @type Number
	 * @default  0 - no timeout
	 */
	iframeTimeout : 0,
	
	/**
	 * Data to append to all requests and to upload files
	 *
	 * @type Object
	 * @default  {}
	 */
	customData : {},
	
	/**
	 * Event listeners to bind on elFinder init
	 *
	 * @type Object
	 * @default  {}
	 */
	handlers : {},

	/**
	 * Any custom headers to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	customHeaders : {},

	/**
	 * Any custom xhrFields to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	xhrFields : {},

	/**
	 * Interface language
	 *
	 * @type String
	 * @default "en"
	 */
	lang : 'en',

	/**
	 * Base URL of elfFinder library starting from Manager HTML
	 * Auto detect when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	baseUrl : '',

	/**
	 * Base URL of i18n js files
	 * baseUrl + "js/i18n/" when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	i18nBaseUrl : '',

	/**
	 * Base URL of worker js files
	 * baseUrl + "js/worker/" when empty value
	 * 
	 * @type String
	 * @default ""
	 */
	 workerBaseUrl : '',
	
	/**
	 * Auto load required CSS
	 * `false` to disable this function or
	 * CSS URL Array to load additional CSS files
	 * 
	 * @type Boolean|Array
	 * @default true
	 */
	cssAutoLoad : true,

	/**
	 * Theme to load
	 * {"themeid" : "Theme CSS URL"} or
	 * {"themeid" : "Theme manifesto.json URL"} or
	 * Theme manifesto.json Object
	 * {
	 *   "themeid" : {
	 *     "name":"Theme Name",
	 *     "cssurls":"Theme CSS URL",
	 *     "author":"Author Name",
	 *     "email":"Author Email",
	 *     "license":"License",
	 *     "link":"Web Site URL",
	 *     "image":"Screen Shot URL",
	 *     "description":"Description"
	 *   }
	 * }
	 * 
	 * @type Object
	 */
	themes : {},

	/**
	 * Theme id to initial theme
	 * 
	 * @type String|Null
	 */
	theme : null,

	/**
	 * Maximum value of error dialog open at the same time
	 * 
	 * @type Number
	 */
	maxErrorDialogs : 5,

	/**
	 * Additional css class for filemanager node.
	 *
	 * @type String
	 */
	cssClass : '',

	/**
	 * Active commands list. '*' means all of the commands that have been load.
	 * If some required commands will be missed here, elFinder will add its
	 *
	 * @type Array
	 */
	commands : ['*'],
	// Available commands list
	//commands : [
	//	'archive', 'back', 'chmod', 'colwidth', 'copy', 'cut', 'download', 'duplicate', 'edit', 'extract',
	//	'forward', 'fullscreen', 'getfile', 'help', 'home', 'info', 'mkdir', 'mkfile', 'netmount', 'netunmount',
	//	'open', 'opendir', 'paste', 'places', 'quicklook', 'reload', 'rename', 'resize', 'restore', 'rm',
	//	'search', 'sort', 'up', 'upload', 'view', 'zipdl'
	//],
	
	/**
	 * Commands options.
	 *
	 * @type Object
	 **/
	commandsOptions : {
		// // configure shortcuts of any command
		// // add `shortcuts` property into each command
		// any_command_name : {
		// 	shortcuts : [] // for disable this command's shortcuts
		// },
		// any_command_name : {
		// 	shortcuts : function(fm, shortcuts) {
		// 		// for add `CTRL + E` for this command action
		// 		shortcuts[0]['pattern'] += ' ctrl+e';
		// 		return shortcuts;
		// 	}
		// },
		// any_command_name : {
		// 	shortcuts : function(fm, shortcuts) {
		// 		// for full customize of this command's shortcuts
		// 		return [ { pattern: 'ctrl+e ctrl+down numpad_enter' + (fm.OS != 'mac' && ' enter') } ];
		// 	}
		// },
		// "getfile" command options.
		getfile : {
			onlyURL  : false,
			// allow to return multiple files info
			multiple : false,
			// allow to return filers info
			folders  : false,
			// action after callback (""/"close"/"destroy")
			oncomplete : '',
			// action when callback is fail (""/"close"/"destroy")
			onerror : '',
			// get path before callback call
			getPath    : true, 
			// get image sizes before callback call
			getImgSize : false
		},
		open : {
			// HTTP method that request to the connector when item URL is not valid URL.
			// If you set to "get" will be displayed request parameter in the browser's location field
			// so if you want to conceal its parameters should be given "post".
			// Nevertheless, please specify "get" if you want to enable the partial request by HTTP Range header.
			method : 'post',
			// Where to open into : 'window'(default), 'tab' or 'tabs'
			// 'tabs' opens in each tabs
			into   : 'window',
			// Default command list of action when select file
			// String value that is 'Command Name' or 'Command Name1/CommandName2...'
			selectAction : 'open'
		},
		opennew : {
			// URL of to open elFinder manager
			// Default '' : Origin URL
			url : '',
			// Use search query of origin URL
			useOriginQuery : true
		},
		// "upload" command options.
		upload : {
			// Open elFinder upload dialog: 'button' OR Open system OS upload dialog: 'uploadbutton'
			ui : 'button'
		},
		// "download" command options.
		download : {
			// max request to download files when zipdl disabled
			maxRequests : 10,
			// minimum count of files to use zipdl
			minFilesZipdl : 2
		},
		// "quicklook" command options.
		quicklook : {
			autoplay : true,
			width    : 450,
			height   : 300,
			// ControlsList of HTML5 audio/video preview
			// see https://googlechrome.github.io/samples/media/controlslist.html
			mediaControlsList : '', // e.g. 'nodownload nofullscreen noremoteplayback'
			// Show toolbar of PDF preview (with <embed> tag)
			pdfToolbar : true,
			// Maximum lines to preview at initial
			textInitialLines : 100,
			// Maximum lines to preview by prettify
			prettifyMaxLines : 300,
			// quicklook window must be contained in elFinder node on window open (true|false)
			contain : false,
			// preview window into NavDock (0 : undocked | 1 : docked(show) | 2 : docked(hide))
			docked   : 0,
			// Docked preview height ('auto' or Number of pixel) 'auto' is setted to the Navbar width
			dockHeight : 'auto',
			// media auto play when docked
			dockAutoplay : false,
			// Google Maps API key (Require Maps JavaScript API)
			googleMapsApiKey : '',
			// Google Maps API Options
			googleMapsOpts : {
				maps : {},
				kml : {
					suppressInfoWindows : false,
					preserveViewport : false
				}
			},
			// ViewerJS (https://viewerjs.org/) Options
			// To enable this you need to place ViewerJS on the same server as elFinder and specify that URL in `url`.
			viewerjs : {
				url: '', // Example '/ViewerJS/index.html'
				mimes: ['application/pdf', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation'],
				pdfNative: true // Use Native PDF Viewer first
			},
			// MIME types to CAD-Files and 3D-Models online viewer on sharecad.org
			// Example ['image/vnd.dwg', 'image/vnd.dxf', 'model/vnd.dwf', 'application/vnd.hp-hpgl', 'application/plt', 'application/step', 'model/iges', 'application/vnd.ms-pki.stl', 'application/sat', 'image/cgm', 'application/x-msmetafile']
			sharecadMimes : [],
			// MIME types to use Google Docs online viewer
			// Example ['application/pdf', 'image/tiff', 'application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/postscript', 'application/rtf']
			googleDocsMimes : [],
			// MIME types to use Microsoft Office Online viewer
			// Example ['application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation']
			// These MIME types override "googleDocsMimes"
			officeOnlineMimes : [],
			// File size threshold when using the dim command for obtain the image size necessary to image preview
			getDimThreshold : '200K',
			// Max filesize to show filenames of the zip/tar/gzip/bzip file 
			unzipMaxSize : '50M',
			// MIME-Type regular expression that does not check empty files
			mimeRegexNotEmptyCheck : /^application\/vnd\.google-apps\./
		},
		// "edit" command options.
		edit : {
			// dialog width, integer(px) or integer+'%' (example: 650, '80%' ...)
			dialogWidth : void(0),
			// dialog height, integer(px) or integer+'%' (example: 650, '80%' ...)
			dialogHeight : void(0),
			// list of allowed mimetypes to edit of text files
			// if empty - any text files can be edited
			mimes : [],
			// MIME-types to unselected as default of "File types to enable with "New file"" in preferences
			mkfileHideMimes : [],
			// MIME-types of text file to make empty file
			makeTextMimes : ['text/plain', 'text/css', 'text/html'],
			// Use the editor stored in the browser
			// This value allowd overwrite with user preferences
			useStoredEditor : false,
			// Open the maximized editor window
			// This value allowd overwrite with user preferences
			editorMaximized : false,
			// edit files in wysisyg's
			editors : [
				// {
				// 	/**
				// 	 * editor info
				// 	 * @type  Object
				// 	 */
				// 	info : { name: 'Editor Name' },
				// 	/**
				// 	 * files mimetypes allowed to edit in current wysisyg
				// 	 * @type  Array
				// 	 */
				// 	mimes : ['text/html'], 
				// 	/**
				// 	 * HTML element for editing area (optional for text editor)
				// 	 * @type  String
				// 	 */
				// 	html : '<textarea></textarea>', 
				// 	/**
				// 	 * Initialize editing area node (optional for text editor)
				// 	 * 
				// 	 * @param  String  dialog DOM id
				// 	 * @param  Object  target file object
				// 	 * @param  String  target file content (text or Data URI Scheme(binary file))
				// 	 * @param  Object  elFinder instance
				// 	 * @type  Function
				// 	 */
				// 	init : function(id, file, content, fm) {
				// 		jQuery(this).attr('id', id + '-text').val(content);
				// 	},
				// 	/**
				// 	 * Get edited contents (optional for text editor)
				// 	 * @type  Function
				// 	 */
				// 	getContent : function() {
				// 		return jQuery(this).val();
				// 	},
				// 	/**
				// 	 * Called when "edit" dialog loaded.
				// 	 * Place to init wysisyg.
				// 	 * Can return wysisyg instance
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @return Object      editor instance|jQuery.Deferred(return instance on resolve())
				// 	 */
				// 	load : function(textarea) { },
				// 	/**
				// 	 * Called before "edit" dialog closed.
				// 	 * Place to destroy wysisyg instance.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	close : function(textarea, instance) { },
				// 	/**
				// 	 * Called before file content send to backend.
				// 	 * Place to update textarea content if needed.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	save : function(textarea, instance) {},
				// 	/**
				// 	 * Called after load() or save().
				// 	 * Set focus to wysisyg editor.
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @return void
				// 	 */
				// 	focus : function(textarea, instance) {}
				// 	/**
				// 	 * Called after dialog resized..
				// 	 *
				// 	 * @param  DOMElement  textarea node
				// 	 * @param  Object      wysisyg instance (if was returned by "load" callback)
				// 	 * @param  Object      resize event object
				// 	 * @param  Object      data object
				// 	 * @return void
				// 	 */
				// 	resize : function(textarea, instance, event, data) {}
				// 
				// }
			],
			// Character encodings of select box
			encodings : ['Big5', 'Big5-HKSCS', 'Cp437', 'Cp737', 'Cp775', 'Cp850', 'Cp852', 'Cp855', 'Cp857', 'Cp858', 
				'Cp862', 'Cp866', 'Cp874', 'EUC-CN', 'EUC-JP', 'EUC-KR', 'GB18030', 'ISO-2022-CN', 'ISO-2022-JP', 'ISO-2022-KR', 
				'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 
				'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-13', 'ISO-8859-15', 'KOI8-R', 'KOI8-U', 'Shift-JIS', 
				'Windows-1250', 'Windows-1251', 'Windows-1252', 'Windows-1253', 'Windows-1254', 'Windows-1257'],
			// options for extra editors
			extraOptions : {
				// upload command options
				uploadOpts : {},
				// TUI Image Editor's options
				tuiImgEditOpts : {
					// Path prefix of icon-a.svg, icon-b.svg, icon-c.svg and icon-d.svg in the Theme. 
					// `iconsPath` MUST follow the same origin policy.
					iconsPath : void(0), // default is "./img/tui-"
					// Theme object
					theme : {}
				},
				// Pixo image editor constructor options - https://pixoeditor.com/
				// Require 'apikey' to enable it
				pixo: {
					apikey: ''
				},
				// Browsing manager URL for CKEditor, TinyMCE
				// Uses self location with the empty value or not defined.
				//managerUrl : 'elfinder.html'
				managerUrl : null,
				// CKEditor editor options
				ckeditor: {},
				// CKEditor 5 editor options
				ckeditor5: {
					// builds mode - 'classic', 'inline', 'balloon', 'balloon-block' or 'decoupled-document'
					mode: 'decoupled-document'
				},
				// TinyMCE editor options
				tinymce : {},
				// Setting for Online-Convert.com
				onlineConvert : {
					maxSize  : 100, // (MB) Max 100MB on free account
					showLink : true // It must be enabled with free account
				}
			}
		},
		fullscreen : {
			// fullscreen mode 'screen'(When the browser supports it) or 'window'
			mode: 'screen' // 'screen' or 'window'
		},
		search : {
			// Incremental search from the current view
			incsearch : {
				enable : true, // is enable true or false
				minlen : 1,    // minimum number of characters
				wait   : 500   // wait milliseconds
			},
			// Additional search types
			searchTypes : {
				// "SearchMime" is implemented in default
				SearchMime : {           // The key is search type that send to the connector
					name : 'btnMime',    // Button text to be processed in i18n()
					title : 'searchMime',// Button title to be processed in i18n()
					incsearch : 'mime'   // Incremental search target filed name of the file object
					// Or Callable function
					/* incsearch function example
					function(queryObject, cwdHashes, elFinderInstance) {
						var q = queryObject.val;
						var regex = queryObject.regex;
						var matchedHashes = jQuery.grep(cwdHashes, function(hash) {
							var file = elFinderInstance.file(hash);
							return (file && file.mime && file.mime.match(regex))? true : false;
						});
						return matchedHashes;
					}
					*/
				}
			}
		},
		// "info" command options.
		info : {
			// If the URL of the Directory is null,
			// it is assumed that the link destination is a URL to open the folder in elFinder
			nullUrlDirLinkSelf : true,
			// Information items to be hidden by default
			// These name are 'size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm' and your custom info items label
			hideItems : [],
			// Maximum file size (byte) to get file contents hash (md5, sha256 ...)
			showHashMaxsize : 104857600, // 100 MB
			// Array of hash algorisms to show on info dialog
			// These name are 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128' and 'shake256'
			showHashAlgorisms : ['md5', 'sha256'],
			// Options for fm.getContentsHashes()
			showHashOpts : {
				shake128len : 256,
				shake256len : 512
			},
			custom : {
				// /**
				//  * Example of custom info `desc`
				//  */
				// desc : {
				// 	/**
				// 	 * Lable (require)
				// 	 * It is filtered by the `fm.i18n()`
				// 	 * 
				// 	 * @type String
				// 	 */
				// 	label : 'Description',
				// 	
				// 	/**
				// 	 * Template (require)
				// 	 * `{id}` is replaced in dialog.id
				// 	 * 
				// 	 * @type String
				// 	 */
				// 	tpl : '<div class="elfinder-info-desc"><span class="elfinder-spinner"></span></div>',
				// 	
				// 	/**
				// 	 * Restricts to mimetypes (optional)
				// 	 * Exact match or category match
				// 	 * 
				// 	 * @type Array
				// 	 */
				// 	mimes : ['text', 'image/jpeg', 'directory'],
				// 	
				// 	/**
				// 	 * Restricts to file.hash (optional)
				// 	 * 
				// 	 * @ type Regex
				// 	 */
				// 	hashRegex : /^l\d+_/,
				// 
				// 	/**
				// 	 * Request that asks for the description and sets the field (optional)
				// 	 * 
				// 	 * @type Function
				// 	 */
				// 	action : function(file, fm, dialog) {
				// 		fm.request({
				// 		data : { cmd : 'desc', target: file.hash },
				// 			preventDefault: true,
				// 		})
				// 		.fail(function() {
				// 			dialog.find('div.elfinder-info-desc').html(fm.i18n('unknown'));
				// 		})
				// 		.done(function(data) {
				// 			dialog.find('div.elfinder-info-desc').html(data.desc);
				// 		});
				// 	}
				// }
			}
		},
		mkdir: {
			// Enable automatic switching function ["New Folder" / "Into New Folder"] of toolbar buttton
			intoNewFolderToolbtn: false
		},
		resize: {
			// defalt status of snap to 8px grid of the jpeg image ("enable" or "disable")
			grid8px : 'disable',
			// Preset size array [width, height]
			presetSize : [[320, 240], [400, 400], [640, 480], [800,600]],
			// File size (bytes) threshold when using the `dim` command for obtain the image size necessary to start editing
			getDimThreshold : 204800,
			// File size (bytes) to request to get substitute image (400px) with the `dim` command
			dimSubImgSize : 307200
		},
		rm: {
			// If trash is valid, items moves immediately to the trash holder without confirm.
			quickTrash : true,
			// Maximum wait seconds when checking the number of items to into the trash
			infoCheckWait : 10,
			// Maximum number of items that can be placed into the Trash at one time
			toTrashMaxItems : 1000
		},
		paste : {
			moveConfirm : false // Display confirmation dialog when moving items
		},
		help : {
			// Tabs to show
			view : ['about', 'shortcuts', 'help', 'integrations', 'debug'],
			// HTML source URL of the heip tab
			helpSource : ''
		},
		preference : {
			// dialog width
			width: 600,
			// dialog height
			height: 400,
			// tabs setting see preference.js : build()
			categories: null,
			// preference setting see preference.js : build()
			prefs: null,
			// language setting  see preference.js : build()
			langs: null,
			// Command list of action when select file
			// Array value are 'Command Name' or 'Command Name1/CommandName2...'
			selectActions : ['open', 'edit/download', 'resize/edit/download', 'download', 'quicklook']
		}
	},
	
	/**
	 * Disabled commands relationship
	 * 
	 * @type Object
	 */
	disabledCmdsRels : {
		'get'       : ['edit'],
		'rm'        : ['cut', 'empty'],
		'file&url=' : ['download', 'zipdl'] // file command and volume options url is empty
	},

	/**
	 * Callback for prepare boot up
	 * 
	 * - The this object in the function is an elFinder node
	 * - The first parameter is elFinder Instance
	 * - The second parameter is an object of other parameters
	 *   For now it can use `dfrdsBeforeBootup` Array
	 * 
	 * @type Function
	 * @default null
	 * @return void
	 */
	bootCallback : null,
	
	/**
	 * Callback for "getfile" commands.
	 * Required to use elFinder with WYSIWYG editors etc..
	 *
	 * @type Function
	 * @default null (command not active)
	 */
	getFileCallback : null,
	
	/**
	 * Default directory view. icons/list
	 *
	 * @type String
	 * @default "icons"
	 */
	defaultView : 'icons',
	
	/**
	 * Hash of default directory path to open
	 * 
	 * NOTE: This setting will be disabled if the target folder is specified in location.hash.
	 * 
	 * If you want to find the hash in Javascript
	 * can be obtained with the following code. (In the case of a standard hashing method)
	 * 
	 * var volumeId = 'l1_'; // volume id
	 * var path = 'path/to/target'; // without root path
	 * //var path = 'path\\to\\target'; // use \ on windows server
	 * var hash = volumeId + btoa(path).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '.').replace(/\.+$/, '');
	 * 
	 * @type String
	 * @default ""
	 */
	startPathHash : '',

	/**
	 * Emit a sound when a file is deleted
	 * Sounds are in sounds/ folder
	 * 
	 * @type Boolean
	 * @default true
	 */
	sound : true,
	
	/**
	 * UI plugins to load.
	 * Current dir ui and dialogs loads always.
	 * Here set not required plugins as folders tree/toolbar/statusbar etc.
	 *
	 * @type Array
	 * @default ['toolbar', 'places', 'tree', 'path', 'stat']
	 * @full ['toolbar', 'places', 'tree', 'path', 'stat']
	 */
	ui : ['toolbar', 'tree', 'path', 'stat'],
	
	/**
	 * Some UI plugins options.
	 * @type Object
	 */
	uiOptions : {
		// toolbar configuration
		toolbar : [
			['home', 'back', 'forward', 'up', 'reload'],
			['netmount'],
			['mkdir', 'mkfile', 'upload'],
			['open', 'download', 'getfile'],
			['undo', 'redo'],
			['copy', 'cut', 'paste', 'rm', 'empty', 'hide'],
			['duplicate', 'rename', 'edit', 'resize', 'chmod'],
			['selectall', 'selectnone', 'selectinvert'],
			['quicklook', 'info'],
			['extract', 'archive'],
			['search'],
			['view', 'sort'],
			['fullscreen']
		],
		// toolbar extra options
		toolbarExtra : {
			// also displays the text label on the button (true / false / 'none')
			displayTextLabel: false,
			// Exclude `displayTextLabel` setting UA type
			labelExcludeUA: ['Mobile'],
			// auto hide on initial open
			autoHideUA: ['Mobile'],
			// Initial setting value of hide button in toolbar setting
			defaultHides: ['home', 'reload'],
			// show Preference button ('none', 'auto', 'always')
			// If you do not include 'preference' in the context menu you should specify 'auto' or 'always'
			showPreferenceButton: 'none',
			// show Preference button into contextmenu of the toolbar (true / false)
			preferenceInContextmenu: false
		},
		// directories tree options
		tree : {
			// set path info to attr title
			attrTitle : true,
			// expand current root on init
			openRootOnLoad : true,
			// expand current work directory on open
			openCwdOnOpen  : true,
			// auto loading current directory parents and do expand their node.
			syncTree : true,
			// Maximum number of display of each child trees
			// The tree of directories with children exceeding this number will be split
			subTreeMax : 100,
			// Numbar of max connctions of subdirs request
			subdirsMaxConn : 2,
			// Number of max simultaneous processing directory of subdirs
			subdirsAtOnce : 5,
			// Durations of each animations
			durations : {
				slideUpDown : 'fast',
				autoScroll : 'fast'
			}
			// ,
			// /**
			//  * Add CSS class name to navbar directories (optional)
			//  * see: https://github.com/Studio-42/elFinder/pull/1061,
			//  *      https://github.com/Studio-42/elFinder/issues/1231
			//  * 
			//  * @type Function
			//  */
			// getClass: function(dir) {
			// 	// e.g. This adds the directory's name (lowercase) with prefix as a CSS class
			// 	return 'elfinder-tree-' + dir.name.replace(/[ "]/g, '').toLowerCase();
			// }
		},
		// navbar options
		navbar : {
			minWidth : 150,
			maxWidth : 500,
			// auto hide on initial open
			autoHideUA: [] // e.g. ['Mobile']
		},
		navdock : {
			// disabled navdock ui
			disabled : false,
			// percentage of initial maximum height to work zone
			initMaxHeight : '50%',
			// percentage of maximum height to work zone by user resize action
			maxHeight : '90%'
		},
		cwd : {
			// display parent folder with ".." name :)
			oldSchool : false,
			
			// fm.UA types array to show item select checkboxes e.g. ['All'] or ['Mobile'] etc. default: ['Touch']
			showSelectCheckboxUA : ['Touch'],

			// Enable dragout by dragstart with Alt key or Shift key
			metakeyDragout : true,
			
			// file info columns displayed
			listView : {
				// name is always displayed, cols are ordered
				// e.g. ['perm', 'date', 'size', 'kind', 'owner', 'group', 'mode']
				// mode: 'mode'(by `fileModeStyle` setting), 'modestr'(rwxr-xr-x) , 'modeoct'(755), 'modeboth'(rwxr-xr-x (755))
				// 'owner', 'group' and 'mode', It's necessary set volume driver option "statOwner" to `true`
				// for custom, characters that can be used in the name is `a-z0-9_`
				columns : ['perm', 'date', 'size', 'kind'],
				// override this if you want custom columns name
				// example
				// columnsCustomName : {
				//		date : 'Last modification',
				// 		kind : 'Mime type'
				// }
				columnsCustomName : {},
				// fixed list header colmun
				fixedHeader : true
			},

			// icons view setting
			iconsView : {
				// default icon size (0-3 in default CSS (cwd.css - elfinder-cwd-size[number]))
				size: 0,
				// number of maximum size (3 in default CSS (cwd.css - elfinder-cwd-size[number]))
				// uses in preference.js
				sizeMax: 3,
				// Name of each size
				sizeNames: {
					0: 'viewSmall',
					1: 'viewMedium',
					2: 'viewLarge',
					3: 'viewExtraLarge' 
				}
			},

			// /**
			//  * Add CSS class name to cwd directories (optional)
			//  * see: https://github.com/Studio-42/elFinder/pull/1061,
			//  *      https://github.com/Studio-42/elFinder/issues/1231
			//  * 
			//  * @type Function
			//  */
			// ,
			// getClass: function(file) {
			// 	// e.g. This adds the directory's name (lowercase) with prefix as a CSS class
			// 	return 'elfinder-cwd-' + file.name.replace(/[ "]/g, '').toLowerCase();
			//}
			
			//,
			//// Template placeholders replacement rules for overwrite. see ui/cwd.js replacement
			//replacement : {
			//	tooltip : function(f, fm) {
			//		var list = fm.viewType == 'list', // current view type
			//			query = fm.searchStatus.state == 2, // is in search results
			//			title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''),
			//			info  = '';
			//		if (query && f.path) {
			//			info = fm.escape(f.path.replace(/\/[^\/]*$/, ''));
			//		} else {
			//			info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, '&#13;') : '';
			//		}
			//		if (list) {
			//			info += (info? '&#13;' : '') + fm.escape(f.name);
			//		}
			//		return info? info + '&#13;' + title : title;
			//	}
			//}
		},
		path : {
			// Move to head of work zone without UI navbar
			toWorkzoneWithoutNavbar : true
		},
		dialog : {
			// Enable to auto focusing on mouse over in the target form element
			focusOnMouseOver : true
		},
		toast : {
			animate : {
				// to show
				showMethod: 'fadeIn', // fadeIn, slideDown, and show are built into jQuery
				showDuration: 300,    // milliseconds
				showEasing: 'swing',  // swing and linear are built into jQuery
				// timeout to hide
				timeOut: 3000,
				// to hide
				hideMethod: 'fadeOut',
				hideDuration: 1500,
				hideEasing: 'swing'
			}
		}
	},

	/**
	 * MIME regex of send HTTP header "Content-Disposition: inline" or allow preview in quicklook
	 * This option will overwrite by connector configuration
	 * 
	 * @type String
	 * @default '^(?:(?:image|video|audio)|text/plain|application/pdf$)'
	 * @example
	 *  dispInlineRegex : '.',  // is allow inline of all of MIME types
	 *  dispInlineRegex : '$^', // is not allow inline of all of MIME types
	 */
	dispInlineRegex : '^(?:(?:image|video|audio)|application/(?:x-mpegURL|dash\+xml)|(?:text/plain|application/pdf)$)',

	/**
	 * Display only required files by types
	 *
	 * @type Array
	 * @default []
	 * @example
	 *  onlyMimes : ["image"] - display all images
	 *  onlyMimes : ["image/png", "application/x-shockwave-flash"] - display png and flash
	 */
	onlyMimes : [],

	/**
	 * Custom files sort rules.
	 * All default rules (name/size/kind/date/perm/mode/owner/group) set in elFinder._sortRules
	 *
	 * @type {Object}
	 * @example
	 * sortRules : {
	 *   name : function(file1, file2) { return file1.name.toLowerCase().localeCompare(file2.name.toLowerCase()); }
	 * }
	 */
	sortRules : {},

	/**
	 * Default sort type.
	 *
	 * @type {String}
	 */
	sortType : 'name',
	
	/**
	 * Default sort order.
	 *
	 * @type {String}
	 * @default "asc"
	 */
	sortOrder : 'asc',
	
	/**
	 * Display folders first?
	 *
	 * @type {Boolean}
	 * @default true
	 */
	sortStickFolders : true,
	
	/**
	 * Sort also applies to the treeview (null: disable this feature)
	 *
	 * @type Boolean|null
	 * @default false
	 */
	sortAlsoTreeview : false,
	
	/**
	 * If true - elFinder will formating dates itself, 
	 * otherwise - backend date will be used.
	 *
	 * @type Boolean
	 */
	clientFormatDate : true,
	
	/**
	 * Show UTC dates.
	 * Required set clientFormatDate to true
	 *
	 * @type Boolean
	 */
	UTCDate : false,
	
	/**
	 * File modification datetime format.
	 * Value from selected language data  is used by default.
	 * Set format here to overwrite it.
	 *
	 * @type String
	 * @default  ""
	 */
	dateFormat : '',
	
	/**
	 * File modification datetime format in form "Yesterday 12:23:01".
	 * Value from selected language data is used by default.
	 * Set format here to overwrite it.
	 * Use $1 for "Today"/"Yesterday" placeholder
	 *
	 * @type String
	 * @default  ""
	 * @example "$1 H:m:i"
	 */
	fancyDateFormat : '',
	
	/**
	 * Style of file mode at cwd-list, info dialog
	 * 'string' (ex. rwxr-xr-x) or 'octal' (ex. 755) or 'both' (ex. rwxr-xr-x (755))
	 * 
	 * @type {String}
	 * @default 'both'
	 */
	fileModeStyle : 'both',
	
	/**
	 * elFinder width
	 *
	 * @type String|Number
	 * @default  "auto"
	 */
	width : 'auto',
	
	/**
	 * elFinder node height
	 * Number: pixcel or String: Number + "%"
	 *
	 * @type Number | String
	 * @default  400
	 */
	height : 400,
	
	/**
	 * Do not resize the elFinder node itself on resize parent node
	 * Specify `true` when controlling with CSS such as Flexbox
	 *
	 * @type Boolean
	 * @default false
	 */
	noResizeBySelf : false,

	/**
	 * Base node object or selector
	 * Element which is the reference of the height percentage
	 *
	 * @type Object|String
	 * @default null | jQuery(window) (if height is percentage)
	 **/
	heightBase : null,
	
	/**
	 * Make elFinder resizable if jquery ui resizable available
	 *
	 * @type Boolean
	 * @default  true
	 */
	resizable : true,
	
	/**
	 * Timeout before open notifications dialogs
	 *
	 * @type Number
	 * @default  500 (.5 sec)
	 */
	notifyDelay : 500,
	
	/**
	 * Position CSS, Width of notifications dialogs
	 *
	 * @type Object
	 * @default {position: {}, width : null} - Apply CSS definition
	 * position: CSS object | null (null: position center & middle)
	 */
	notifyDialog : {position : {}, width : null, canClose : false, hiddens : ['open']},
	
	/**
	 * Dialog contained in the elFinder node
	 * 
	 * @type Boolean
	 * @default false
	 */
	dialogContained : false,
	
	/**
	 * Allow shortcuts
	 *
	 * @type Boolean
	 * @default  true
	 */
	allowShortcuts : true,
	
	/**
	 * Remeber last opened dir to open it after reload or in next session
	 *
	 * @type Boolean
	 * @default  true
	 */
	rememberLastDir : true,
	
	/**
	 * Clear historys(elFinder) on reload(not browser) function
	 * Historys was cleared on Reload function on elFinder 2.0 (value is true)
	 * 
	 * @type Boolean
	 * @default  false
	 */
	reloadClearHistory : false,
	
	/**
	 * Use browser native history with supported browsers
	 *
	 * @type Boolean
	 * @default  true
	 */
	useBrowserHistory : true,
	
	/**
	 * Lazy load config.
	 * How many files display at once?
	 *
	 * @type Number
	 * @default  50
	 */
	showFiles : 50,
	
	/**
	 * Lazy load config.
	 * Distance in px to cwd bottom edge to start display files
	 *
	 * @type Number
	 * @default  50
	 */
	showThreshold : 50,
	
	/**
	 * Additional rule to valid new file name.
	 * By default not allowed empty names or '..'
	 * This setting does not have a sense of security.
	 *
	 * @type false|RegExp|function
	 * @default  false
	 * @example
	 *  disable names with spaces:
	 *  validName : /^[^\s]+$/,
	 */
	validName : false,
	
	/**
	 * Additional rule to filtering for browsing.
	 * This setting does not have a sense of security.
	 * 
	 * The object `this` is elFinder instance object in this function
	 *
	 * @type false|RegExp|function
	 * @default  false
	 * @example
	 *  show only png and jpg files:
	 *  fileFilter : /.*\.(png|jpg)$/i,
	 *  
	 *  show only image type files:
	 *  fileFilter : function(file) { return file.mime && file.mime.match(/^image\//i); },
	 */
	fileFilter : false,
	
	/**
	 * Backup name suffix.
	 *
	 * @type String
	 * @default  "~"
	 */
	backupSuffix : '~',
	
	/**
	 * Sync content interval
	 *
	 * @type Number
	 * @default  0 (do not sync)
	 */
	sync : 0,
	
	/**
	 * Sync start on load if sync value >= 1000
	 *
	 * @type     Bool
	 * @default  true
	 */
	syncStart : true,
	
	/**
	 * How many thumbnails create in one request
	 *
	 * @type Number
	 * @default  5
	 */
	loadTmbs : 5,
	
	/**
	 * Cookie option for browsersdoes not suppot localStorage
	 *
	 * @type Object
	 */
	cookie         : {
		expires  : 30,
		domain   : '',
		path     : '/',
		secure   : false,
		samesite : 'lax'
	},
	
	/**
	 * Contextmenu config
	 *
	 * @type Object
	 */
	contextmenu : {
		// navbarfolder menu
		navbar : ['open', 'opennew', 'download', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', '|', 'archive', '|', 'places', 'info', 'chmod', 'netunmount'],
		// current directory menu
		cwd    : ['undo', 'redo', '|', 'back', 'up', 'reload', '|', 'upload', 'mkdir', 'mkfile', 'paste', '|', 'empty', 'hide', '|', 'view', 'sort', 'selectall', 'colwidth', '|', 'places', 'info', 'chmod', 'netunmount', '|', 'fullscreen'],
		// current directory file menu
		files  : ['getfile', '|' ,'open', 'opennew', 'download', 'opendir', 'quicklook', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', 'edit', 'resize', '|', 'archive', 'extract', '|', 'selectall', 'selectinvert', '|', 'places', 'info', 'chmod', 'netunmount']
	},

	/**
	 * elFinder node enable always
	 * This value will set to `true` if <body> has elFinder node only
	 * 
	 * @type     Bool
	 * @default  false
	 */
	enableAlways : false,
	
	/**
	 * elFinder node enable by mouse over
	 * 
	 * @type     Bool
	 * @default  true
	 */
	enableByMouseOver : true,

	/**
	 * Show window close confirm dialog
	 * Value is which state to show
	 * 'hasNotifyDialog', 'editingFile', 'hasSelectedItem' and 'hasClipboardData'
	 * 
	 * @type     Array
	 * @default  ['hasNotifyDialog', 'editingFile']
	 */
	windowCloseConfirm : ['hasNotifyDialog', 'editingFile'],

	/**
	 * Function decoding 'raw' string converted to unicode
	 * It is used instead of fm.decodeRawString(str)
	 * 
	 * @type Null|Function
	 */
	rawStringDecoder : typeof Encoding === 'object' && jQuery.isFunction(Encoding.convert)? function(str) {
		return Encoding.convert(str, {
			to: 'UNICODE',
			type: 'string'
		});
	} : null,

	/**
	 * Debug config
	 *
	 * @type Array|String('auto')|Boolean(true|false)
	 */
	debug : ['error', 'warning', 'event-destroy'],

	/**
	 * Show toast messeges of backend warning (if found data `debug.backendErrors` in backend results)
	 *
	 * @type Boolean|Object (toast options)
	 */
	toastBackendWarn : true
};
lib/js/elFinder.version.js000064400000000133147361034410011500 0ustar00/**
 * Application version
 *
 * @type String
 **/
elFinder.prototype.version = '2.1.60';

lib/js/elFinder.js000064400001067345147361034410010037 0ustar00/**
 * @class elFinder - file manager for web
 *
 * @author Dmitry (dio) Levashov
 **/
 var elFinder = function(elm, opts, bootCallback) {
	"use strict";
	//this.time('load');
	var self = this,
		
		/**
		 * Objects array of jQuery.Deferred that calls before elFinder boot up
		 * 
		 * @type Array
		 */
		dfrdsBeforeBootup = [],
		
		/**
		 * Plugin name to check for conflicts with bootstrap etc
		 *
		 * @type Array
		 **/
		conflictChecks = ['button', 'tooltip'],
		
		/**
		 * Node on which elfinder creating
		 *
		 * @type jQuery
		 **/
		node = jQuery(elm),
		
		/**
		 * Object of events originally registered in this node
		 * 
		 * @type Object
		 */
		prevEvents = jQuery.extend(true, {}, jQuery._data(node.get(0), 'events')),
		
		/**
		 * Store node contents.
		 *
		 * @see this.destroy
		 * @type jQuery
		 **/
		prevContent = jQuery('<div></div>').append(node.contents()).attr('class', node.attr('class') || '').attr('style', node.attr('style') || ''),
		
		/**
		 * Instance ID. Required to get/set cookie
		 *
		 * @type String
		 **/
		id = node.attr('id') || node.attr('id', 'elfauto' + jQuery('.elfinder').length).attr('id'),
		
		/**
		 * Events namespace
		 *
		 * @type String
		 **/
		namespace = 'elfinder-' + id,
		
		/**
		 * Mousedown event
		 *
		 * @type String
		 **/
		mousedown = 'mousedown.'+namespace,
		
		/**
		 * Keydown event
		 *
		 * @type String
		 **/
		keydown = 'keydown.'+namespace,
		
		/**
		 * Keypress event
		 *
		 * @type String
		 **/
		keypress = 'keypress.'+namespace,
		
		/**
		 * Keypup event
		 *
		 * @type String
		 **/
		keyup    = 'keyup.'+namespace,

		/**
		 * Is shortcuts/commands enabled
		 *
		 * @type Boolean
		 **/
		enabled = false,
		
		/**
		 * Store enabled value before ajax request
		 *
		 * @type Boolean
		 **/
		prevEnabled = false,
		
		/**
		 * List of build-in events which mapped into methods with same names
		 *
		 * @type Array
		 **/
		events = ['enable', 'disable', 'load', 'open', 'reload', 'select',  'add', 'remove', 'change', 'dblclick', 'getfile', 'lockfiles', 'unlockfiles', 'selectfiles', 'unselectfiles', 'dragstart', 'dragstop', 'search', 'searchend', 'viewchange'],
		
		/**
		 * Rules to validate data from backend
		 *
		 * @type Object
		 **/
		rules = {},
		
		/**
		 * Current working directory hash
		 *
		 * @type String
		 **/
		cwd = '',
		
		/**
		 * Current working directory options default
		 *
		 * @type Object
		 **/
		cwdOptionsDefault = {
			path          : '',
			url           : '',
			tmbUrl        : '',
			disabled      : [],
			separator     : '/',
			archives      : [],
			extract       : [],
			copyOverwrite : true,
			uploadOverwrite : true,
			uploadMaxSize : 0,
			jpgQuality    : 100,
			tmbCrop       : false,
			tmbReqCustomData : false,
			tmb           : false // old API
		},
		
		/**
		 * Current working directory options
		 *
		 * @type Object
		 **/
		cwdOptions = {},
		
		/**
		 * Files/dirs cache
		 *
		 * @type Object
		 **/
		files = {},
		
		/**
		 * Hidden Files/dirs cache
		 *
		 * @type Object
		 **/
		hiddenFiles = {},

		/**
		 * Files/dirs hash cache of each dirs
		 *
		 * @type Object
		 **/
		ownFiles = {},
		
		/**
		 * Selected files hashes
		 *
		 * @type Array
		 **/
		selected = [],
		
		/**
		 * Events listeners
		 *
		 * @type Object
		 **/
		listeners = {},
		
		/**
		 * Shortcuts
		 *
		 * @type Object
		 **/
		shortcuts = {},
		
		/**
		 * Buffer for copied files
		 *
		 * @type Array
		 **/
		clipboard = [],
		
		/**
		 * Copied/cuted files hashes
		 * Prevent from remove its from cache.
		 * Required for dispaly correct files names in error messages
		 *
		 * @type Object
		 **/
		remember = {},
		
		/**
		 * Queue for 'open' requests
		 *
		 * @type Array
		 **/
		queue = [],
		
		/**
		 * Queue for only cwd requests e.g. `tmb`
		 *
		 * @type Array
		 **/
		cwdQueue = [],
		
		/**
		 * Commands prototype
		 *
		 * @type Object
		 **/
		base = new self.command(self),
		
		/**
		 * elFinder node width
		 *
		 * @type String
		 * @default "auto"
		 **/
		width  = 'auto',
		
		/**
		 * elFinder node height
		 * Number: pixcel or String: Number + "%"
		 *
		 * @type Number | String
		 * @default 400
		 **/
		height = 400,
		
		/**
		 * Base node object or selector
		 * Element which is the reference of the height percentage
		 *
		 * @type Object|String
		 * @default null | jQuery(window) (if height is percentage)
		 **/
		heightBase = null,
		
		/**
		 * MIME type list(Associative array) handled as a text file
		 * 
		 * @type Object|null
		 */
		textMimes = null,
		
		/**
		 * elfinder path for sound played on remove
		 * @type String
		 * @default ./sounds/
		 **/
		soundPath = '../wp-content/plugins/wp-file-manager/lib/sounds/',
		
		/**
		 * JSON.stringify of previous fm.sorters
		 * @type String
		 */
		prevSorterStr = '',

		/**
		 * Map table of file extention to MIME-Type
		 * @type Object
		 */
		extToMimeTable,

		/**
		 * Disabled page unload function
		 * @type Boolean
		 */
		diableUnloadCheck = false,

		beeper = jQuery(document.createElement('audio')).hide().appendTo('body')[0],
			
		syncInterval,
		autoSyncStop = 0,
		
		uiCmdMapPrev = '',
		
		gcJobRes = null,
		
		open = function(data) {
			// NOTES: Do not touch data object
		
			var volumeid, contextmenu, emptyDirs = {}, stayDirs = {},
				rmClass, hashes, calc, gc, collapsed, prevcwd, sorterStr, diff;
			
			if (self.api >= 2.1) {
				// support volume driver option `uiCmdMap`
				self.commandMap = (data.options.uiCmdMap && Object.keys(data.options.uiCmdMap).length)? data.options.uiCmdMap : {};
				if (uiCmdMapPrev !== JSON.stringify(self.commandMap)) {
					uiCmdMapPrev = JSON.stringify(self.commandMap);
				}
			} else {
				self.options.sync = 0;
			}
			
			if (data.init) {
				// init - reset cache
				files = {};
				ownFiles = {};
			} else {
				// remove only files from prev cwd
				// and collapsed directory (included 100+ directories) to empty for perfomance tune in DnD
				prevcwd = cwd;
				rmClass = 'elfinder-subtree-loaded ' + self.res('class', 'navexpand');
				collapsed = self.res('class', 'navcollapse');
				hashes = Object.keys(files);
				calc = function(i) {
					if (!files[i]) {
						return true;
					}
					
					var isDir = (files[i].mime === 'directory'),
						phash = files[i].phash,
						pnav;
						
					if (
						(!isDir
							|| emptyDirs[phash]
							|| (!stayDirs[phash]
								&& self.navHash2Elm(files[i].hash).is(':hidden')
								&& self.navHash2Elm(phash).next('.elfinder-navbar-subtree').children().length > 100
							)
						)
						&& (isDir || phash !== cwd)
						&& ! remember[i]
					) {
						if (isDir && !emptyDirs[phash]) {
							emptyDirs[phash] = true;
							self.navHash2Elm(phash)
							 .removeClass(rmClass)
							 .next('.elfinder-navbar-subtree').empty();
						}
						deleteCache(files[i]);
					} else if (isDir) {
						stayDirs[phash] = true;
					}
				};
				gc = function() {
					if (hashes.length) {
						gcJobRes && gcJobRes._abort();
						gcJobRes = self.asyncJob(calc, hashes, {
							interval : 20,
							numPerOnce : 100
						}).done(function() {
							var hd = self.storage('hide') || {items: {}};
							if (Object.keys(hiddenFiles).length) {
								jQuery.each(hiddenFiles, function(h) {
									if (!hd.items[h]) {
										delete hiddenFiles[h];
									}
								});
							}
						});
					}
				};
				
				self.trigger('filesgc').one('filesgc', function() {
					hashes = [];
				});
				
				self.one('opendone', function() {
					if (prevcwd !== cwd) {
						if (! node.data('lazycnt')) {
							gc();
						} else {
							self.one('lazydone', gc);
						}
					}
				});
			}

			self.sorters = {};
			cwd = data.cwd.hash;
			cache(data.files);
			if (!files[cwd]) {
				cache([data.cwd]);
			} else {
				diff = self.diff([data.cwd], true);
				if (diff.changed.length) {
					cache(diff.changed, 'change');
					self.change({changed: diff.changed});
				}
			}
			data.changed && data.changed.length && cache(data.changed, 'change');

			// trigger event 'sorterupdate'
			sorterStr = JSON.stringify(self.sorters);
			if (prevSorterStr !== sorterStr) {
				self.trigger('sorterupdate');
				prevSorterStr = sorterStr;
			}

			self.lastDir(cwd);
			
			self.autoSync();
		},
		
		/**
		 * Store info about files/dirs in "files" object.
		 *
		 * @param  Array  files
		 * @param  String data type
		 * @return void
		 **/
		cache = function(data, type) {
			var type      = type || 'files',
				keeps = ['sizeInfo', 'encoding'],
				defsorter = { name: true, perm: true, date: true,  size: true, kind: true },
				sorterChk = !self.sorters._checked && (type === 'files'),
				l         = data.length,
				setSorter = function(file) {
					var f = file || {},
						sorters = [];
					jQuery.each(self.sortRules, function(key) {
						if (defsorter[key] || typeof f[key] !== 'undefined' || (key === 'mode' && typeof f.perm !== 'undefined')) {
							sorters.push(key);
						}
					});
					self.sorters = self.arrayFlip(sorters, true);
					self.sorters._checked = true;
				},
				changedParents = {},
				hideData = self.storage('hide') || {},
				hides = hideData.items || {},
				f, i, i1, keepProp, parents, hidden;

			for (i = 0; i < l; i++) {
				f = Object.assign({}, data[i]);
				hidden = (!hideData.show && hides[f.hash])? true : false;
				if (f.name && f.hash && f.mime) {
					if (!hidden) {
						if (sorterChk && f.phash === cwd) {
							setSorter(f);
							sorterChk = false;
						}
						
						if (f.phash && (type === 'add' || (type === 'change' && (!files[f.hash] || f.size !== files[f.hash])))) {
							if (parents = self.parents(f.phash)) {
								jQuery.each(parents, function() {
									changedParents[this] = true;
								});
							}
						}
					}

					if (files[f.hash]) {
						for (i1 =0; i1 < keeps.length; i1++) {
							if(files[f.hash][keeps[i1]] && ! f[keeps[i1]]) {
								f[keeps[i1]] = files[f.hash][keeps[i1]];
							}
						}
						if (f.sizeInfo && !f.size) {
							f.size = f.sizeInfo.size;
						}
						deleteCache(files[f.hash], true);
					}
					if (hides[f.hash]) {
						hiddenFiles[f.hash] = f;
					}
					if (hidden) {
						l--;
						data.splice(i--, 1);
					} else {
						files[f.hash] = f;
						if (f.mime === 'directory' && !ownFiles[f.hash]) {
							ownFiles[f.hash] = {};
						}
						if (f.phash) {
							if (!ownFiles[f.phash]) {
								ownFiles[f.phash] = {};
							}
							ownFiles[f.phash][f.hash] = true;
						}
					}
				}
			}
			// delete sizeInfo cache
			jQuery.each(Object.keys(changedParents), function() {
				var target = files[this];
				if (target && target.sizeInfo) {
					delete target.sizeInfo;
				}
			});
			
			// for empty folder
			sorterChk && setSorter();
		},
		
		/**
		 * Delete file object from files caches
		 * 
		 * @param  Array  removed hashes
		 * @return void
		 */
		remove = function(removed) {
			var l       = removed.length,
				roots   = {},
				rm      = function(hash) {
					var file = files[hash], i;
					if (file) {
						if (file.mime === 'directory') {
							if (roots[hash]) {
								delete self.roots[roots[hash]];
							}
							// restore stats of deleted root parent directory
							jQuery.each(self.leafRoots, function(phash, roots) {
								var idx, pdir;
								if ((idx = jQuery.inArray(hash, roots))!== -1) {
									if (roots.length === 1) {
										if ((pdir = Object.assign({}, files[phash])) && pdir._realStats) {
											jQuery.each(pdir._realStats, function(k, v) {
												pdir[k] = v;
											});
											remove(files[phash]._realStats);
											self.change({ changed: [pdir] });
										}
										delete self.leafRoots[phash];
									} else {
										self.leafRoots[phash].splice(idx, 1);
									}
								}
							});
							if (self.searchStatus.state < 2) {
								jQuery.each(files, function(h, f) {
									f.phash == hash && rm(h);
								});
							}
						}
						if (file.phash) {
							if (parents = self.parents(file.phash)) {
								jQuery.each(parents, function() {
									changedParents[this] = true;
								});
							}
						}
						deleteCache(files[hash]);
					}
				},
				changedParents = {},
				parents;
		
			jQuery.each(self.roots, function(k, v) {
				roots[v] = k;
			});
			while (l--) {
				rm(removed[l]);
			}
			// delete sizeInfo cache
			jQuery.each(Object.keys(changedParents), function() {
				var target = files[this];
				if (target && target.sizeInfo) {
					delete target.sizeInfo;
				}
			});
		},
		
		/**
		 * Update file object in files caches
		 * 
		 * @param  Array  changed file objects
		 * @return void
		 * @deprecated should be use `cache(updatesArrayData, 'change');`
		 */
		change = function(changed) {
			jQuery.each(changed, function(i, file) {
				var hash = file.hash;
				if (files[hash]) {
					jQuery.each(Object.keys(files[hash]), function(i, v){
						if (typeof file[v] === 'undefined') {
							delete files[hash][v];
						}
					});
				}
				files[hash] = files[hash] ? Object.assign(files[hash], file) : file;
			});
		},
		
		/**
		 * Delete cache data of files, ownFiles and self.optionsByHashes
		 * 
		 * @param  Object  file
		 * @param  Boolean update
		 * @return void
		 */
		deleteCache = function(file, update) {
			var hash = file.hash,
				phash = file.phash;
			
			if (phash && ownFiles[phash]) {
				 delete ownFiles[phash][hash];
			}
			if (!update) {
				ownFiles[hash] && delete ownFiles[hash];
				self.optionsByHashes[hash] && delete self.optionsByHashes[hash];
			}
			delete files[hash];
		},
		
		/**
		 * Maximum number of concurrent connections on request
		 * 
		 * @type Number
		 */
		requestMaxConn,
		
		/**
		 * Current number of connections
		 * 
		 * @type Number
		 */
		requestCnt = 0,
		
		/**
		 * Queue waiting for connection
		 * 
		 * @type Array
		 */
		requestQueue = [],
		
		/**
		 * Current open command instance
		 * 
		 * @type Object
		 */
		currentOpenCmd = null,

		/**
		 * Exec shortcut
		 *
		 * @param  jQuery.Event  keydown/keypress event
		 * @return void
		 */
		execShortcut = function(e) {
			var code    = e.keyCode,
				ctrlKey = !!(e.ctrlKey || e.metaKey),
				isMousedown = e.type === 'mousedown',
				ddm;

			!isMousedown && (self.keyState.keyCode = code);
			self.keyState.ctrlKey  = ctrlKey;
			self.keyState.shiftKey = e.shiftKey;
			self.keyState.metaKey  = e.metaKey;
			self.keyState.altKey   = e.altKey;
			if (isMousedown) {
				return;
			} else if (e.type === 'keyup') {
				self.keyState.keyCode = null;
				return;
			}

			if (enabled) {

				jQuery.each(shortcuts, function(i, shortcut) {
					if (shortcut.type    == e.type 
					&& shortcut.keyCode  == code 
					&& shortcut.shiftKey == e.shiftKey 
					&& shortcut.ctrlKey  == ctrlKey 
					&& shortcut.altKey   == e.altKey) {
						e.preventDefault();
						e.stopPropagation();
						shortcut.callback(e, self);
						self.debug('shortcut-exec', i+' : '+shortcut.description);
					}
				});
				
				// prevent tab out of elfinder
				if (code == jQuery.ui.keyCode.TAB && !jQuery(e.target).is(':input')) {
					e.preventDefault();
				}
				
				// cancel any actions by [Esc] key
				if (e.type === 'keydown' && code == jQuery.ui.keyCode.ESCAPE) {
					// copy or cut 
					if (! node.find('.ui-widget:visible').length) {
						self.clipboard().length && self.clipboard([]);
					}
					// dragging
					if (jQuery.ui.ddmanager) {
						ddm = jQuery.ui.ddmanager.current;
						ddm && ddm.helper && ddm.cancel();
					}
					// button menus
					self.toHide(node.find('.ui-widget.elfinder-button-menu.elfinder-frontmost:visible'));
					// trigger keydownEsc
					self.trigger('keydownEsc', e);
				}

			}
		},
		date = new Date(),
		utc,
		i18n,
		inFrame = (window.parent !== window),
		parentIframe = (function() {
			var pifm, ifms;
			if (inFrame) {
				try {
					ifms = jQuery('iframe', window.parent.document);
					if (ifms.length) {
						jQuery.each(ifms, function(i, ifm) {
							if (ifm.contentWindow === window) {
								pifm = jQuery(ifm);
								return false;
							}
						});
					}
				} catch(e) {}
			}
			return pifm;
		})(),
		/**
		 * elFinder boot up function
		 * 
		 * @type Function
		 */
		bootUp,
		/**
		 * Original function of XMLHttpRequest.prototype.send
		 * 
		 * @type Function
		 */
		savedXhrSend;
	
	// opts must be an object
	if (!opts) {
		opts = {};
	}
	
	// set UA.Angle, UA.Rotated for mobile devices
	if (self.UA.Mobile) {
		jQuery(window).on('orientationchange.'+namespace, function() {
			var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0;
			if (a === -90) {
				a = 270;
			}
			self.UA.Angle = a;
			self.UA.Rotated = a % 180 === 0? false : true;
		}).trigger('orientationchange.'+namespace);
	}
	
	// check opt.bootCallback
	if (opts.bootCallback && typeof opts.bootCallback === 'function') {
		(function() {
			var func = bootCallback,
				opFunc = opts.bootCallback;
			bootCallback = function(fm, extraObj) {
				func && typeof func === 'function' && func.call(this, fm, extraObj);
				opFunc.call(this, fm, extraObj);
			};
		})();
	}
	delete opts.bootCallback;

	/**
	 * Protocol version
	 *
	 * @type String
	 **/
	this.api = null;
	
	/**
	 * elFinder use new api
	 *
	 * @type Boolean
	 **/
	this.newAPI = false;
	
	/**
	 * elFinder use old api
	 *
	 * @type Boolean
	 **/
	this.oldAPI = false;
	
	/**
	 * Net drivers names
	 *
	 * @type Array
	 **/
	this.netDrivers = [];
	
	/**
	 * Base URL of elfFinder library starting from Manager HTML
	 * 
	 * @type String
	 */
	this.baseUrl = '';
	
	/**
	 * Base URL of i18n js files
	 * baseUrl + "js/i18n/" when empty value
	 * 
	 * @type String
	 */
	this.i18nBaseUrl = '';

	/**
	 * Base URL of worker js files
	 * baseUrl + "js/worker/" when empty value
	 * 
	 * @type String
	 */
	 this.workerBaseUrl = '';

	/**
	 * Is elFinder CSS loaded
	 * 
	 * @type Boolean
	 */
	this.cssloaded = false;
	
	/**
	 * Current theme object
	 * 
	 * @type Object|Null
	 */
	this.theme = null;

	this.mimesCanMakeEmpty = {};

	/**
	 * Callback function at boot up that option specified at elFinder starting
	 * 
	 * @type Function
	 */
	this.bootCallback;

	/**
	 * Callback function at reload(restart) elFinder 
	 * 
	 * @type Function
	 */
	this.reloadCallback;

	/**
	 * ID. Required to create unique cookie name
	 *
	 * @type String
	 **/
	this.id = id;

	/**
	 * Method to store/fetch data
	 *
	 * @type Function
	 **/
	this.storage = (function() {
		try {
			if ('localStorage' in window && window.localStorage !== null) {
				if (self.UA.Safari) {
					// check for Mac/iOS safari private browsing mode
					window.localStorage.setItem('elfstoragecheck', 1);
					window.localStorage.removeItem('elfstoragecheck');
				}
				return self.localStorage;
			} else {
				return self.cookie;
			}
		} catch (e) {
			return self.cookie;
		}
	})();

	/**
	 * Set pause page unload check function or Get state
	 *
	 * @param      Boolean   state   To set state
	 * @param      Boolean   keep    Keep disabled
	 * @return     Boolean|void
	 */
	this.pauseUnloadCheck = function(state, keep) {
		if (typeof state === 'undefined') {
			return diableUnloadCheck;
		} else {
			diableUnloadCheck = !!state;
			if (state && !keep) {
				requestAnimationFrame(function() {
					diableUnloadCheck = false;
				});
			}
		}
	};

	/**
	 * Configuration options
	 *
	 * @type Object
	 **/
	//this.options = jQuery.extend(true, {}, this._options, opts);
	this.options = Object.assign({}, this._options);
	
	// for old type configuration
	if (opts.uiOptions) {
		if (opts.uiOptions.toolbar && Array.isArray(opts.uiOptions.toolbar)) {
			if (jQuery.isPlainObject(opts.uiOptions.toolbar[opts.uiOptions.toolbar.length - 1])) {
				self.options.uiOptions.toolbarExtra = Object.assign(self.options.uiOptions.toolbarExtra || {}, opts.uiOptions.toolbar.pop());
			}
		}
	}
	
	// Overwrite if opts value is an array
	(function() {
		var arrOv = function(obj, base) {
			if (jQuery.isPlainObject(obj)) {
				jQuery.each(obj, function(k, v) {
					if (jQuery.isPlainObject(v)) {
						if (!base[k]) {
							base[k] = {};
						}
						arrOv(v, base[k]);
					} else {
						base[k] = v;
					}
				});
			}
		};
		arrOv(opts, self.options);
	})();
	
	// join toolbarExtra to toolbar
	this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra);
	delete this.options.uiOptions.toolbarExtra;

	/**
	 * Arrays that has to unbind events
	 * 
	 * @type Object
	 */
	this.toUnbindEvents = {};
	
	/**
	 * Attach listener to events
	 * To bind to multiply events at once, separate events names by space
	 * 
	 * @param  String  event(s) name(s)
	 * @param  Object  event handler or {done: handler}
	 * @param  Boolean priority first
	 * @return elFinder
	 */
	this.bind = function(event, callback, priorityFirst) {
		var i, len;
		
		if (callback && (typeof callback === 'function' || typeof callback.done === 'function')) {
			event = ('' + event).toLowerCase().replace(/^\s+|\s+$/g, '').split(/\s+/);
			
			len = event.length;
			for (i = 0; i < len; i++) {
				if (listeners[event[i]] === void(0)) {
					listeners[event[i]] = [];
				}
				listeners[event[i]][priorityFirst? 'unshift' : 'push'](callback);
			}
		}
		return this;
	};
	
	/**
	 * Remove event listener if exists
	 * To un-bind to multiply events at once, separate events names by space
	 *
	 * @param  String    event(s) name(s)
	 * @param  Function  callback
	 * @return elFinder
	 */
	this.unbind = function(event, callback) {
		var i, len, l, ci;
		
		event = ('' + event).toLowerCase().split(/\s+/);
		
		len = event.length;
		for (i = 0; i < len; i++) {
			if (l = listeners[event[i]]) {
				ci = jQuery.inArray(callback, l);
				ci > -1 && l.splice(ci, 1);
			}
		}
		
		callback = null;
		return this;
	};
	
	/**
	 * Fire event - send notification to all event listeners
	 * In the callback `this` becames an event object
	 *
	 * @param  String   event type
	 * @param  Object   data to send across event
	 * @param  Boolean  allow modify data (call by reference of data) default: true
	 * @return elFinder
	 */
	this.trigger = function(evType, data, allowModify) {
		var type      = evType.toLowerCase(),
			isopen    = (type === 'open'),
			dataIsObj = (typeof data === 'object'),
			handlers  = listeners[type] || [],
			dones     = [],
			i, l, jst, event;
		
		this.debug('event-'+type, data);
		
		if (! dataIsObj || typeof allowModify === 'undefined') {
			allowModify = true;
		}
		if (l = handlers.length) {
			event = jQuery.Event(type);
			if (data) {
				data._getEvent = function() {
					return event;
				};
			}
			if (allowModify) {
				event.data = data;
			}

			for (i = 0; i < l; i++) {
				if (! handlers[i]) {
					// probably un-binded this handler
					continue;
				}

				// handler is jQuery.Deferred(), call all functions upon completion
				if (handlers[i].done) {
					dones.push(handlers[i].done);
					continue;
				}
				
				// set `event.data` only callback has argument
				if (handlers[i].length) {
					if (!allowModify) {
						// to avoid data modifications. remember about "sharing" passing arguments in js :) 
						if (typeof jst === 'undefined') {
							try {
								jst = JSON.stringify(data);
							} catch(e) {
								jst = false;
							}
						}
						event.data = jst? JSON.parse(jst) : data;
					}
				}

				try {
					if (handlers[i].call(event, event, this) === false || event.isDefaultPrevented()) {
						this.debug('event-stoped', event.type);
						break;
					}
				} catch (ex) {
					window.console && window.console.log && window.console.log(ex);
				}
				
			}
			
			// call done functions
			if (l = dones.length) {
				for (i = 0; i < l; i++) {
					try {
						if (dones[i].call(event, event, this) === false || event.isDefaultPrevented()) {
							this.debug('event-stoped', event.type + '(done)');
							break;
						}
					} catch (ex) {
						window.console && window.console.log && window.console.log(ex);
					}
				}
			}

			if (this.toUnbindEvents[type] && this.toUnbindEvents[type].length) {
				jQuery.each(this.toUnbindEvents[type], function(i, v) {
					self.unbind(v.type, v.callback);
				});
				delete this.toUnbindEvents[type];
			}
		}
		return this;
	};
	
	/**
	 * Get event listeners
	 *
	 * @param  String   event type
	 * @return Array    listed event functions
	 */
	this.getListeners = function(event) {
		return event? listeners[event.toLowerCase()] : listeners;
	};

	// set fm.baseUrl
	this.baseUrl = (function() {
		var myTag, base, baseUrl;
		
		if (self.options.baseUrl) {
			return self.options.baseUrl;
		} else {
			baseUrl = '';
			myTag = null;
			jQuery('head > script').each(function() {
				if (this.src && this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js(?:$|\?)/i)) {
					myTag = jQuery(this);
					return false;
				}
			});
			if (myTag) {
				baseUrl = myTag.attr('src').replace(/js\/[^\/]+$/, '');
				if (! baseUrl.match(/^(https?\/\/|\/)/)) {
					// check <base> tag
					if (base = jQuery('head > base[href]').attr('href')) {
						baseUrl = base.replace(/\/$/, '') + '/' + baseUrl; 
					}
				}
			}
			if (baseUrl !== '') {
				self.options.baseUrl = baseUrl;
			} else {
				if (! self.options.baseUrl) {
					self.options.baseUrl = './';
				}
				baseUrl = self.options.baseUrl;
			}
			return baseUrl;
		}
	})();
	
	this.i18nBaseUrl = (this.options.i18nBaseUrl || this.baseUrl + 'js/i18n').replace(/\/$/, '') + '/';
	this.workerBaseUrl = (this.options.workerBaseUrl || this.baseUrl + 'js/worker').replace(/\/$/, '') + '/';

	this.options.maxErrorDialogs = Math.max(1, parseInt(this.options.maxErrorDialogs || 5));

	// set dispInlineRegex
	cwdOptionsDefault.dispInlineRegex = this.options.dispInlineRegex;

	// auto load required CSS
	if (this.options.cssAutoLoad) {
		(function() {
			var baseUrl = self.baseUrl,
				myCss = jQuery('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length,
				rmTag = function() {
					if (node.data('cssautoloadHide')) {
						node.data('cssautoloadHide').remove();
						node.removeData('cssautoloadHide');
					}
				},
				loaded = function() {
					if (!self.cssloaded) {
						rmTag();
						self.cssloaded = true;
						self.trigger('cssloaded');
					}
				};
			
			if (! myCss) {
				// to request CSS auto loading
				self.cssloaded = null;
			}

			// additional CSS files
			if (Array.isArray(self.options.cssAutoLoad)) {
				if (!self.options.themes.default) {
					// set as default theme
					self.options.themes = Object.assign({
						'default' : {
							'name': 'default',
							'cssurls': self.options.cssAutoLoad
						}
					}, self.options.themes);
					if (!self.options.theme) {
						self.options.theme = 'default';
					}
				} else {
					if (self.cssloaded === true) {
						self.loadCss(self.options.cssAutoLoad);
					} else {
						self.bind('cssloaded', function() {
							self.loadCss(self.options.cssAutoLoad);
						});
					}
				}
			}

			// try to load main css
			if (self.cssloaded === null) {
				// hide elFinder node while css loading
				node.addClass('elfinder')
					.data('cssautoloadHide', jQuery('<style>.elfinder{visibility:hidden;overflow:hidden}</style>'));
				jQuery('head').append(node.data('cssautoloadHide'));

				// set default theme
				if (!self.options.themes.default) {
					self.options.themes = Object.assign({
						'default' : {
							'name': 'default',
							'cssurls': '',
							'author': 'elFinder Project',
							'license': '3-clauses BSD'
						}
					}, self.options.themes);
					if (!self.options.theme) {
						self.options.theme = 'default';
					}
				}

				// Delay 'visibility' check it required for browsers such as Safari
				requestAnimationFrame(function() {
					if (node.css('visibility') === 'hidden') {
						// load CSS
						self.loadCss([baseUrl+'css/elfinder.min.css'], {
							dfd: jQuery.Deferred().done(function() {
								loaded();
							}).fail(function() {
								rmTag();
								if (!self.cssloaded) {
									self.cssloaded = false;
									self.bind('init', function() {
										if (!self.cssloaded) {
											self.error(['errRead', 'CSS (elfinder.min)']);
										}
									});
								}
							})
						});
					} else {
						loaded();
					}
				});
			}
		})();
	}

	// load theme if exists
	(function() {
		var theme,
			themes = self.options.themes,
			ids = Object.keys(themes || {});
		if (ids.length) {
			theme = self.storage('theme') || self.options.theme;
			if (!themes[theme]) {
				theme = ids[0];
			}
			if (self.cssloaded) {
				self.changeTheme(theme);
			} else {
				self.bind('cssloaded', function() {
					self.changeTheme(theme);
				});
			}
		}
	})();
	
	/**
	 * Volume option to set the properties of the root Stat
	 * 
	 * @type Object
	 */
	this.optionProperties = {
		icon: void(0),
		csscls: void(0),
		tmbUrl: void(0),
		uiCmdMap: {},
		netkey: void(0),
		disabled: []
	};
	
	if (! inFrame && ! this.options.enableAlways && jQuery('body').children().length === 2) { // only node and beeper
		this.options.enableAlways = true;
	}
	
	// make options.debug
	if (this.options.debug === true) {
		this.options.debug = 'all';
	} else if (Array.isArray(this.options.debug)) {
		(function() {
			var d = {};
			jQuery.each(self.options.debug, function() {
				d[this] = true;
			});
			self.options.debug = d;
		})();
	} else {
		this.options.debug = false;
	}
	
	/**
	 * Original functions evacuated by conflict check
	 * 
	 * @type Object
	 */
	this.noConflicts = {};
	
	/**
	 * Check and save conflicts with bootstrap etc
	 * 
	 * @type Function
	 */
	this.noConflict = function() {
		jQuery.each(conflictChecks, function(i, p) {
			if (jQuery.fn[p] && typeof jQuery.fn[p].noConflict === 'function') {
				self.noConflicts[p] = jQuery.fn[p].noConflict();
			}
		});
	};
	// do check conflict
	this.noConflict();
	
	/**
	 * Is elFinder over CORS
	 *
	 * @type Boolean
	 **/
	this.isCORS = false;
	
	// configure for CORS
	(function(){
		if (typeof self.options.cors !== 'undefined' && self.options.cors !== null) {
			self.isCORS = self.options.cors? true : false;
		} else {
			var parseUrl = document.createElement('a'),
				parseUploadUrl,
				selfProtocol = window.location.protocol,
				portReg = function(protocol) {
					protocol = (!protocol || protocol === ':')? selfProtocol : protocol;
					return protocol === 'https:'? /\:443$/ : /\:80$/;
				},
				selfHost = window.location.host.replace(portReg(selfProtocol), '');
			parseUrl.href = opts.url;
			if (opts.urlUpload && (opts.urlUpload !== opts.url)) {
				parseUploadUrl = document.createElement('a');
				parseUploadUrl.href = opts.urlUpload;
			}
			if (selfHost !== parseUrl.host.replace(portReg(parseUrl.protocol), '')
				|| (parseUrl.protocol !== ':'&& parseUrl.protocol !== '' && (selfProtocol !== parseUrl.protocol))
				|| (parseUploadUrl && 
					(selfHost !== parseUploadUrl.host.replace(portReg(parseUploadUrl.protocol), '')
					|| (parseUploadUrl.protocol !== ':' && parseUploadUrl.protocol !== '' && (selfProtocol !== parseUploadUrl.protocol))
					)
				)
			) {
				self.isCORS = true;
			}
		}
		if (self.isCORS) {
			if (!jQuery.isPlainObject(self.options.customHeaders)) {
				self.options.customHeaders = {};
			}
			if (!jQuery.isPlainObject(self.options.xhrFields)) {
				self.options.xhrFields = {};
			}
			self.options.requestType = 'post';
			self.options.customHeaders['X-Requested-With'] = 'XMLHttpRequest';
			self.options.xhrFields['withCredentials'] = true;
		}
	})();

	/**
	 * Ajax request type
	 *
	 * @type String
	 * @default "get"
	 **/
	this.requestType = /^(get|post)$/i.test(this.options.requestType) ? this.options.requestType.toLowerCase() : 'get';
	
	// set `requestMaxConn` by option
	requestMaxConn = Math.max(parseInt(this.options.requestMaxConn), 1);
	
	/**
	 * Custom data that given as options
	 * 
	 * @type Object
	 * @default {}
	 */
	this.optsCustomData = jQuery.isPlainObject(this.options.customData) ? this.options.customData : {};

	/**
	 * Any data to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 **/
	this.customData = Object.assign({}, this.optsCustomData);

	/**
	 * Previous custom data from connector
	 * 
	 * @type Object|null
	 */
	this.prevCustomData = null;

	/**
	 * Any custom headers to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	*/
	this.customHeaders = jQuery.isPlainObject(this.options.customHeaders) ? this.options.customHeaders : {};

	/**
	 * Any custom xhrFields to send across every ajax request
	 *
	 * @type Object
	 * @default {}
	 */
	this.xhrFields = jQuery.isPlainObject(this.options.xhrFields) ? this.options.xhrFields : {};

	/**
	 * Replace XMLHttpRequest.prototype.send to extended function for 3rd party libs XHR request etc.
	 * 
	 * @type Function
	 */
	this.replaceXhrSend = function() {
		if (! savedXhrSend) {
			savedXhrSend = XMLHttpRequest.prototype.send;
		}
		XMLHttpRequest.prototype.send = function() {
			var xhr = this;
			// set request headers
			if (self.customHeaders) {
				jQuery.each(self.customHeaders, function(key) {
					xhr.setRequestHeader(key, this);
				});
			}
			// set xhrFields
			if (self.xhrFields) {
				jQuery.each(self.xhrFields, function(key) {
					if (key in xhr) {
						xhr[key] = this;
					}
				});
			}
			return savedXhrSend.apply(this, arguments);
		};
	};
	
	/**
	 * Restore saved original XMLHttpRequest.prototype.send
	 * 
	 * @type Function
	 */
	this.restoreXhrSend = function() {
		savedXhrSend && (XMLHttpRequest.prototype.send = savedXhrSend);
	};

	/**
	 * command names for into queue for only cwd requests
	 * these commands aborts before `open` request
	 *
	 * @type Array
	 * @default ['tmb', 'parents']
	 */
	this.abortCmdsOnOpen = this.options.abortCmdsOnOpen || ['tmb', 'parents'];

	/**
	 * ui.nav id prefix
	 * 
	 * @type String
	 */
	this.navPrefix = 'nav' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-';
	
	/**
	 * ui.cwd id prefix
	 * 
	 * @type String
	 */
	this.cwdPrefix = elFinder.prototype.uniqueid? ('cwd' + elFinder.prototype.uniqueid + '-') : '';
	
	// Increment elFinder.prototype.uniqueid
	++elFinder.prototype.uniqueid;
	
	/**
	 * URL to upload files
	 *
	 * @type String
	 **/
	this.uploadURL = opts.urlUpload || opts.url;
	
	/**
	 * Events namespace
	 *
	 * @type String
	 **/
	this.namespace = namespace;

	/**
	 * Today timestamp
	 *
	 * @type Number
	 **/
	this.today = (new Date(date.getFullYear(), date.getMonth(), date.getDate())).getTime()/1000;
	
	/**
	 * Yesterday timestamp
	 *
	 * @type Number
	 **/
	this.yesterday = this.today - 86400;
	
	utc = this.options.UTCDate ? 'UTC' : '';
	
	this.getHours    = 'get'+utc+'Hours';
	this.getMinutes  = 'get'+utc+'Minutes';
	this.getSeconds  = 'get'+utc+'Seconds';
	this.getDate     = 'get'+utc+'Date';
	this.getDay      = 'get'+utc+'Day';
	this.getMonth    = 'get'+utc+'Month';
	this.getFullYear = 'get'+utc+'FullYear';
	
	/**
	 * elFinder node z-index (auto detect on elFinder load)
	 *
	 * @type null | Number
	 **/
	this.zIndex;

	/**
	 * Current search status
	 * 
	 * @type Object
	 */
	this.searchStatus = {
		state  : 0, // 0: search ended, 1: search started, 2: in search result
		query  : '',
		target : '',
		mime   : '',
		mixed  : false, // in multi volumes search: false or Array that target volume ids
		ininc  : false // in incremental search
	};

	/**
	 * Interface language
	 *
	 * @type String
	 * @default "en"
	 **/
	this.lang = this.storage('lang') || this.options.lang;
	if (this.lang === 'jp') {
		this.lang = this.options.lang = 'ja';
	}

	this.viewType = this.storage('view') || this.options.defaultView || 'icons';

	this.sortType = this.storage('sortType') || this.options.sortType || 'name';
	
	this.sortOrder = this.storage('sortOrder') || this.options.sortOrder || 'asc';

	this.sortStickFolders = this.storage('sortStickFolders');
	if (this.sortStickFolders === null) {
		this.sortStickFolders = !!this.options.sortStickFolders;
	} else {
		this.sortStickFolders = !!this.sortStickFolders;
	}

	this.sortAlsoTreeview = this.storage('sortAlsoTreeview');
	if (this.sortAlsoTreeview === null || this.options.sortAlsoTreeview === null) {
		this.sortAlsoTreeview = !!this.options.sortAlsoTreeview;
	} else {
		this.sortAlsoTreeview = !!this.sortAlsoTreeview;
	}

	this.sortRules = jQuery.extend(true, {}, this._sortRules, this.options.sortRules);
	
	jQuery.each(this.sortRules, function(name, method) {
		if (typeof method != 'function') {
			delete self.sortRules[name];
		} 
	});
	
	this.compare = jQuery.proxy(this.compare, this);
	
	/**
	 * Delay in ms before open notification dialog
	 *
	 * @type Number
	 * @default 500
	 **/
	this.notifyDelay = this.options.notifyDelay > 0 ? parseInt(this.options.notifyDelay) : 500;
	
	/**
	 * Dragging UI Helper object
	 *
	 * @type jQuery | null
	 **/
	this.draggingUiHelper = null;
	
	/**
	 * Base droppable options
	 *
	 * @type Object
	 **/
	this.droppable = {
		greedy     : true,
		tolerance  : 'pointer',
		accept     : '.elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename',
		hoverClass : this.res('class', 'adroppable'),
		classes    : { // Deprecated hoverClass jQueryUI>=1.12.0
			'ui-droppable-hover': this.res('class', 'adroppable')
		},
		autoDisable: true, // elFinder original, see jquery.elfinder.js
		drop : function(e, ui) {
			var dst     = jQuery(this),
				targets = jQuery.grep(ui.helper.data('files')||[], function(h) { return h? true : false; }),
				result  = [],
				dups    = [],
				faults  = [],
				isCopy  = ui.helper.hasClass('elfinder-drag-helper-plus'),
				c       = 'class',
				cnt, hash, i, h;
			
			if (typeof e.button === 'undefined' || ui.helper.data('namespace') !== namespace || ! self.insideWorkzone(e.pageX, e.pageY)) {
				return false;
			}
			if (dst.hasClass(self.res(c, 'cwdfile'))) {
				hash = self.cwdId2Hash(dst.attr('id'));
			} else if (dst.hasClass(self.res(c, 'navdir'))) {
				hash = self.navId2Hash(dst.attr('id'));
			} else {
				hash = cwd;
			}

			cnt = targets.length;
			
			while (cnt--) {
				h = targets[cnt];
				// ignore drop into itself or in own location
				if (h != hash && files[h].phash != hash) {
					result.push(h);
				} else {
					((isCopy && h !== hash && files[hash].write)? dups : faults).push(h);
				}
			}
			
			if (faults.length) {
				return false;
			}
			
			ui.helper.data('droped', true);
			
			if (dups.length) {
				ui.helper.hide();
				self.exec('duplicate', dups, {_userAction: true});
			}
			
			if (result.length) {
				ui.helper.hide();
				self.clipboard(result, !isCopy);
				self.exec('paste', hash, {_userAction: true}, hash).always(function(){
					self.clipboard([]);
					self.trigger('unlockfiles', {files : targets});
				});
				self.trigger('drop', {files : targets});
			}
		}
	};
	
	/**
	 * Return true if filemanager is active
	 *
	 * @return Boolean
	 **/
	this.enabled = function() {
		return enabled && this.visible();
	};
	
	/**
	 * Return true if filemanager is visible
	 *
	 * @return Boolean
	 **/
	this.visible = function() {
		return node[0].elfinder && node.is(':visible');
	};
	
	/**
	 * Return file is root?
	 * 
	 * @param  Object  target file object
	 * @return Boolean
	 */
	this.isRoot = function(file) {
		return (file.isroot || ! file.phash)? true : false;
	};
	
	/**
	 * Return root dir hash for current working directory
	 * 
	 * @param  String   target hash
	 * @param  Boolean  include fake parent (optional)
	 * @return String
	 */
	this.root = function(hash, fake) {
		hash = hash || cwd;
		var dir, i;
		
		if (! fake) {
			jQuery.each(self.roots, function(id, rhash) {
				if (hash.indexOf(id) === 0) {
					dir = rhash;
					return false;
				}
			});
			if (dir) {
				return dir;
			}
		}
		
		dir = files[hash];
		while (dir && dir.phash && (fake || ! dir.isroot)) {
			dir = files[dir.phash];
		}
		if (dir) {
			return dir.hash;
		}
		
		while (i in files && files.hasOwnProperty(i)) {
			dir = files[i];
			if (dir.mime === 'directory' && !dir.phash && dir.read) {
				return dir.hash;
			}
		}
		
		return '';
	};
	
	/**
	 * Return current working directory info
	 * 
	 * @return Object
	 */
	this.cwd = function() {
		return files[cwd] || {};
	};
	
	/**
	 * Return required cwd option
	 * 
	 * @param  String  option name
	 * @param  String  target hash (optional)
	 * @return mixed
	 */
	this.option = function(name, target) {
		var res, item;
		target = target || cwd;
		if (self.optionsByHashes[target] && typeof self.optionsByHashes[target][name] !== 'undefined') {
			return self.optionsByHashes[target][name];
		}
		if (self.hasVolOptions && cwd !== target && (!(item = self.file(target)) || item.phash !== cwd)) {
			res = '';
			jQuery.each(self.volOptions, function(id, opt) {
				if (target.indexOf(id) === 0) {
					res = opt[name] || '';
					return false;
				}
			});
			return res;
		} else {
			return cwdOptions[name] || '';
		}
	};
	
	/**
	 * Return disabled commands by each folder
	 * 
	 * @param  Array  target hashes
	 * @return Array
	 */
	this.getDisabledCmds = function(targets, flip) {
		var disabled = {'hidden': true};
		if (! Array.isArray(targets)) {
			targets = [ targets ];
		}
		jQuery.each(targets, function(i, h) {
			var disCmds = self.option('disabledFlip', h);
			if (disCmds) {
				Object.assign(disabled, disCmds);
			}
		});
		return flip? disabled : Object.keys(disabled);
	};
	
	/**
	 * Return file data from current dir or tree by it's hash
	 * 
	 * @param  String  file hash
	 * @return Object
	 */
	this.file = function(hash, alsoHidden) { 
		return hash? (files[hash] || (alsoHidden? hiddenFiles[hash] : void(0))) : void(0); 
	};
	
	/**
	 * Return all cached files
	 * 
	 * @param  String  parent hash
	 * @return Object
	 */
	this.files = function(phash) {
		var items = {};
		if (phash) {
			if (!ownFiles[phash]) {
				return {};
			}
			jQuery.each(ownFiles[phash], function(h) {
				if (files[h]) {
					items[h] = files[h];
				} else {
					delete ownFiles[phash][h];
				}
			});
			return Object.assign({}, items);
		}
		return Object.assign({}, files);
	};
	
	/**
	 * Return list of file parents hashes include file hash
	 * 
	 * @param  String  file hash
	 * @return Array
	 */
	this.parents = function(hash) {
		var parents = [],
			dir;
		
		while (hash && (dir = this.file(hash))) {
			parents.unshift(dir.hash);
			hash = dir.phash;
		}
		return parents;
	};
	
	this.path2array = function(hash, i18) {
		var file, 
			path = [];
			
		while (hash) {
			if ((file = files[hash]) && file.hash) {
				path.unshift(i18 && file.i18 ? file.i18 : file.name);
				hash = file.isroot? null : file.phash;
			} else {
				path = [];
				break;
			}
		}
			
		return path;
	};
	
	/**
	 * Return file path or Get path async with jQuery.Deferred
	 * 
	 * @param  Object  file
	 * @param  Boolean i18
	 * @param  Object  asyncOpt
	 * @return String|jQuery.Deferred
	 */
	this.path = function(hash, i18, asyncOpt) { 
		var path = files[hash] && files[hash].path
			? files[hash].path
			: this.path2array(hash, i18).join(cwdOptions.separator);
		if (! asyncOpt || ! files[hash]) {
			return path;
		} else {
			asyncOpt = Object.assign({notify: {type : 'parents', cnt : 1, hideCnt : true}}, asyncOpt);
			
			var dfd    = jQuery.Deferred(),
				notify = asyncOpt.notify,
				noreq  = false,
				req    = function() {
					self.request({
						data : {cmd : 'parents', target : files[hash].phash},
						notify : notify,
						preventFail : true
					})
					.done(done)
					.fail(function() {
						dfd.reject();
					});
				},
				done   = function() {
					self.one('parentsdone', function() {
						path = self.path(hash, i18);
						if (path === '' && noreq) {
							//retry with request
							noreq = false;
							req();
						} else {
							if (notify) {
								clearTimeout(ntftm);
								notify.cnt = -(parseInt(notify.cnt || 0));
								self.notify(notify);
							}
							dfd.resolve(path);
						}
					});
				},
				ntftm;
		
			if (path) {
				return dfd.resolve(path);
			} else {
				if (self.ui['tree']) {
					// try as no request
					if (notify) {
						ntftm = setTimeout(function() {
							self.notify(notify);
						}, self.notifyDelay);
					}
					noreq = true;
					done(true);
				} else {
					req();
				}
				return dfd;
			}
		}
	};
	
	/**
	 * Return file url if set
	 * 
	 * @param  String  file hash
	 * @param  Object  Options
	 * @return String|Object of jQuery Deferred
	 */
	this.url = function(hash, o) {
		var file   = files[hash],
			opts   = o || {},
			async  = opts.async || false,
			temp   = opts.temporary || false,
			onetm  = (opts.onetime && self.option('onetimeUrl', hash)) || false,
			absurl = opts.absurl || false,
			dfrd   = (async || onetm)? jQuery.Deferred() : null,
			filter = function(url) {
				if (url && absurl) {
					url = self.convAbsUrl(url);
				}
				return url;
			},
			getUrl = function(url) {
				if (url) {
					return filter(url);
				}
				if (file.url) {
					return filter(file.url);
				}
				
				if (typeof baseUrl === 'undefined') {
					baseUrl = getBaseUrl();
				}
				
				if (baseUrl) {
					return filter(baseUrl + jQuery.map(self.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/'));
				}

				var params = Object.assign({}, self.customData, {
					cmd: 'file',
					target: file.hash
				});
				if (self.oldAPI) {
					params.cmd = 'open';
					params.current = file.phash;
				}
				return filter(self.options.url + (self.options.url.indexOf('?') === -1 ? '?' : '&') + jQuery.param(params, true));
			},
			getBaseUrl = function() {
				return self.option('url', (!self.isRoot(file) && file.phash) || file.hash);
			},
			baseUrl, res;
		
		if (!file || !file.read) {
			return async? dfrd.resolve('') : '';
		}
		
		if (onetm && (!file.url || file.url == '1') && !(baseUrl = getBaseUrl())) {
			async = true;
			this.request({
				data : { cmd : 'url', target : hash, options : { onetime: 1 } },
				preventDefault : true,
				options: {async: async},
				notify: {type : 'file', cnt : 1, hideCnt : true},
				progressBar: opts.progressBar
			}).done(function(data) {
				dfrd.resolve(filter(data.url || ''));
			}).fail(function() {
				dfrd.resolve('');
			});
		} else {
			if (file.url == '1' || (temp && !file.url && !(baseUrl = getBaseUrl()))) {
				this.request({
					data : { cmd : 'url', target : hash, options : { temporary: temp? 1 : 0 } },
					preventDefault : true,
					options: {async: async},
					notify: async? {type : temp? 'file' : 'url', cnt : 1, hideCnt : true} : {},
					progressBar: opts.progressBar
				})
				.done(function(data) {
					file.url = data.url || '';
				})
				.fail(function() {
					file.url = '';
				})
				.always(function() {
					var url;
					if (file.url && temp) {
						url = file.url;
						file.url = '1'; // restore
					}
					if (async) {
						dfrd.resolve(getUrl(url));
					} else {
						return getUrl(url);
					}
				});
			} else {
				if (async) {
					dfrd.resolve(getUrl());
				} else {
					return getUrl();
				}
			}
		}
		if (async) {
			return dfrd;
		}
	};
	
	/**
	 * Return file url for the extarnal service
	 *
	 * @param      String  hash     The hash
	 * @param      Object  options  The options
	 * @return     Object  jQuery Deferred
	 */
	this.forExternalUrl = function(hash, options) {
		var onetime = self.option('onetimeUrl', hash),
			opts = {
				async: true,
				absurl: true
			};

		opts[onetime? 'onetime' : 'temporary'] = true;
		return self.url(hash, Object.assign({}, options, opts));
	};

	/**
	 * Return file url for open in elFinder
	 * 
	 * @param  String  file hash
	 * @param  Boolean for download link
	 * @param      Object  requestOpts   The request options
	 * @return String
	 */
	this.openUrl = function(hash, download, callback, requestOpts) {
		var file = files[hash],
			url  = '',
			onetimeSize = (requestOpts || {}).onetimeSize || (5 * 1024 * 1024);
		
		if (!file || !file.read) {
			return '';
		}
		
		if (!download || download === 'sameorigin') {
			if (file.url) {
				if (file.url != 1) {
					url = file.url;
				}
			} else if (cwdOptions.url && file.hash.indexOf(self.cwd().volumeid) === 0) {
				url = cwdOptions.url + jQuery.map(this.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/');
			}
			if (!download || this.isSameOrigin(url)) {
				if (url) {
					url += (url.match(/\?/)? '&' : '?') + '_'.repeat((url.match(/[\?&](_+)t=/g) || ['&t=']).sort().shift().match(/[\?&](_*)t=/)[1].length + 1) + 't=' + (file.ts || parseInt(+new Date()/1000));
					if (callback) {
						callback(url);
						return;
					} else {
						return url;
					}
				}
			}
		}
		
		if (callback && this.hasParrotHeaders()) {
			if (!requestOpts) {
				requestOpts = {};
			} else {
				delete requestOpts.onetimeSize;
			}
			if (!requestOpts.onetime && !requestOpts.temporary && file.size > onetimeSize) {
				if (file.mime.match(/^video|audio/)) {
					requestOpts.temporary = true;
				} else {
					requestOpts.onetime = true;
				}
			}
			if (requestOpts.onetime || requestOpts.temporary) {
				return this.url(file.hash, Object.assign({
					async: true
				}, requestOpts)).done(function(url) {
					callback(url);
				}).fail(function() {
					callback('');
				});
			} else {
				return this.getContents(hash, 'blob', requestOpts).done(function(blob){
					url = (window.URL || window.webkitURL).createObjectURL(blob);
					callback(url);
				}).fail(function() {
					callback('');
				});
			}
		} else {
			url = this.options.url;
			url = url + (url.indexOf('?') === -1 ? '?' : '&')
				+ (this.oldAPI ? 'cmd=open&current='+file.phash : 'cmd=file')
				+ '&target=' + file.hash
				+ '&_t=' + (file.ts || parseInt(+new Date()/1000));
			
			if (download === true) {
				url += '&download=1';
			}
			
			jQuery.each(this.customData, function(key, val) {
				url += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val);
			});
			if (callback) {
				callback(url);
				return;
			} else {
				return url;
			}
		}
	};
	
	/**
	 * Return thumbnail url
	 * 
	 * @param  Object  file object
	 * @return String
	 */
	this.tmb = function(file) {
		var tmbUrl, tmbCrop,
			cls    = 'elfinder-cwd-bgurl',
			url    = '',
			cData  = {},
			n      = 0;

		if (jQuery.isPlainObject(file)) {
			if (self.searchStatus.state && file.hash.indexOf(self.cwd().volumeid) !== 0) {
				tmbUrl = self.option('tmbUrl', file.hash);
				tmbCrop = self.option('tmbCrop', file.hash);
			} else {
				tmbUrl = cwdOptions.tmbUrl;
				tmbCrop = cwdOptions.tmbCrop;
			}
			if (tmbCrop) {
				cls += ' elfinder-cwd-bgurl-crop';
			}
			if (tmbUrl === 'self' && file.mime.indexOf('image/') === 0) {
				url = self.openUrl(file.hash);
				cls += ' elfinder-cwd-bgself';
			} else if ((self.oldAPI || tmbUrl) && file && file.tmb && file.tmb != 1) {
				url = tmbUrl + file.tmb;
			} else if (self.newAPI && file && file.tmb && file.tmb != 1) {
				url = file.tmb;
			}
			if (url) {
				if (tmbUrl !== 'self') {
					if (file.ts) {
						cData._t = file.ts;
					}
					if (cwdOptions.tmbReqCustomData && Object.keys(this.customData).length) {
						cData = Object.assign(cData, this.customData);
					}
					if (Object.keys(cData).length) {
						url += (url.match(/\?/) ? '&' : '?');
						jQuery.each(cData, function (key, val) {
							url += ((n++ === 0)? '' : '&') + encodeURIComponent(key) + '=' + encodeURIComponent(val);
						});
					}
				}
				return { url: url, className: cls };
			}
		}
		
		return false;
	};
	
	/**
	 * Return selected files hashes
	 *
	 * @return Array
	 **/
	this.selected = function() {
		return selected.slice(0);
	};
	
	/**
	 * Return selected files info
	 * 
	 * @return Array
	 */
	this.selectedFiles = function() {
		return jQuery.map(selected, function(hash) { return files[hash] ? Object.assign({}, files[hash]) : null; });
	};
	
	/**
	 * Return true if file with required name existsin required folder
	 * 
	 * @param  String  file name
	 * @param  String  parent folder hash
	 * @return Boolean
	 */
	this.fileByName = function(name, phash) {
		var hash;
	
		for (hash in files) {
			if (files.hasOwnProperty(hash) && files[hash].phash == phash && files[hash].name == name) {
				return files[hash];
			}
		}
	};
	
	/**
	 * Valid data for required command based on rules
	 * 
	 * @param  String  command name
	 * @param  Object  cammand's data
	 * @return Boolean
	 */
	this.validResponse = function(cmd, data) {
		return data.error || this.rules[this.rules[cmd] ? cmd : 'defaults'](data);
	};
	
	/**
	 * Return bytes from ini formated size
	 * 
	 * @param  String  ini formated size
	 * @return Integer
	 */
	this.returnBytes = function(val) {
		var last;
		if (isNaN(val)) {
			if (! val) {
				val = '';
			}
			// for ex. 1mb, 1KB
			val = val.replace(/b$/i, '');
			last = val.charAt(val.length - 1).toLowerCase();
			val = val.replace(/[tgmk]$/i, '');
			if (last == 't') {
				val = val * 1024 * 1024 * 1024 * 1024;
			} else if (last == 'g') {
				val = val * 1024 * 1024 * 1024;
			} else if (last == 'm') {
				val = val * 1024 * 1024;
			} else if (last == 'k') {
				val = val * 1024;
			}
			val = isNaN(val)? 0 : parseInt(val);
		} else {
			val = parseInt(val);
			if (val < 1) val = 0;
		}
		return val;
	};
	
	/**
	 * Process ajax request.
	 * Fired events :
	 * @todo
	 * @example
	 * @todo
	 * @return jQuery.Deferred
	 */
	this.request = function(opts) { 
		var self     = this,
			o        = this.options,
			dfrd     = jQuery.Deferred(),
			// request ID
			reqId    = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16), 
			// request data
			data     = Object.assign({}, self.customData, {mimes : o.onlyMimes}, opts.data || opts),
			// command name
			cmd      = data.cmd,
			// request type is binary
			isBinary = (opts.options || {}).dataType === 'binary',
			// current cmd is "open"
			isOpen   = (!opts.asNotOpen && cmd === 'open'),
			// call default fail callback (display error dialog) ?
			deffail  = !(isBinary || opts.preventDefault || opts.preventFail),
			// call default success callback ?
			defdone  = !(isBinary || opts.preventDefault || opts.preventDone),
			// current progress of receive data
			prog     = opts.progressVal || 20,
			// timer of fake progress
			progTm   = null,
			// whether the notification dialog is currently displayed
			hasNotify= false,
			// options for notify dialog
			notify   = !opts.progressBar? (opts.notify? Object.assign({progress: prog * opts.notify.cnt}, opts.notify) : {}) : {},
			// make cancel button
			cancel   = !!opts.cancel,
			// do not normalize data - return as is
			raw      = isBinary || !!opts.raw,
			// sync files on request fail
			syncOnFail = opts.syncOnFail,
			// use lazy()
			lazy     = !!opts.lazy,
			// prepare function before done()
			prepare  = opts.prepare,
			// navigate option object when cmd done
			navigate = opts.navigate,
			// open notify dialog timeout
			timeout,
			// use browser cache
			useCache = (opts.options || {}).cache,
			// request options
			options = Object.assign({
				url      : o.url,
				async    : true,
				type     : this.requestType,
				dataType : 'json',
				cache    : (self.api >= 2.1029), // api >= 2.1029 has unique request ID
				data     : data,
				headers  : this.customHeaders,
				xhrFields: this.xhrFields,
				progress : function(e) {
					var p = e.loaded / e.total * 100;
					progTm && clearTimeout(progTm);
					if (opts.progressBar) {
						try {
							opts.progressBar.width(p + '%');
						} catch(e) {}
					} else {
						if (hasNotify && notify.type) {
							p = p * notify.cnt;
							if (prog < p) {
								self.notify({
									type: notify.type,
									progress: p - prog,
									cnt: 0,
									hideCnt: notify.hideCnt
								});
								prog = p;
							}
						}
					}
					if (opts.progress) {
						try {
							opts.progress(e);
						} catch(e) {}
					}
				}
			}, opts.options || {}),
			/**
			 * Default success handler. 
			 * Call default data handlers and fire event with command name.
			 *
			 * @param Object  normalized response data
			 * @return void
			 **/
			done = function(data) {
				data.warning && self.error(data.warning);
				
				if (isOpen) {
					open(data);
				} else {
					self.updateCache(data);
				}
				
				self.lazy(function() {
					// fire some event to update cache/ui
					data.removed && data.removed.length && self.remove(data);
					data.added   && data.added.length   && self.add(data);
					data.changed && data.changed.length && self.change(data);
				}).then(function() {
					// fire event with command name
					return self.lazy(function() {
						self.trigger(cmd, data, false);
					});
				}).then(function() {
					// fire event with command name + 'done'
					return self.lazy(function() {
						self.trigger(cmd + 'done');
					});
				}).then(function() {
					// make toast message
					if (data.toasts && Array.isArray(data.toasts)) {
						jQuery.each(data.toasts, function() {
							this.msg && self.toast(this);
						});
					}
					// force update content
					data.sync && self.sync();
				});
			},
			/**
			 * Request error handler. Reject dfrd with correct error message.
			 *
			 * @param jqxhr  request object
			 * @param String request status
			 * @return void
			 **/
			error = function(xhr, status) {
				var error, data, 
					d = self.options.debug;
				
				switch (status) {
					case 'abort':
						error = xhr.quiet ? '' : ['errConnect', 'errAbort'];
						break;
					case 'timeout':	    
						error = ['errConnect', 'errTimeout'];
						break;
					case 'parsererror': 
						error = ['errResponse', 'errDataNotJSON'];
						if (xhr.responseText) {
							if (! cwd || (d && (d === 'all' || d['backend-error']))) {
								error.push(xhr.responseText);
							}
						}
						break;
					default:
						if (xhr.responseText) {
							// check responseText, Is that JSON?
							try {
								data = JSON.parse(xhr.responseText);
								if (data && data.error) {
									error = data.error;
								}
							} catch(e) {}
						}
						if (! error) {
							if (xhr.status == 403) {
								error = ['errConnect', 'errAccess', 'HTTP error ' + xhr.status];
							} else if (xhr.status == 404) {
								error = ['errConnect', 'errNotFound', 'HTTP error ' + xhr.status];
							} else if (xhr.status >= 500) {
								error = ['errResponse', 'errServerError', 'HTTP error ' + xhr.status];
							} else {
								if (xhr.status == 414 && options.type === 'get') {
									// retry by POST method
									options.type = 'post';
									self.abortXHR(xhr);
									dfrd.xhr = xhr = self.transport.send(options).fail(error).done(success);
									return;
								}
								error = xhr.quiet ? '' : ['errConnect', 'HTTP error ' + xhr.status];
							} 
						}
				}
				
				self.trigger(cmd + 'done');
				dfrd.reject({error: error}, xhr, status);
			},
			/**
			 * Request success handler. Valid response data and reject/resolve dfrd.
			 *
			 * @param Object  response data
			 * @param String request status
			 * @return void
			 **/
			success = function(response) {
				// Set currrent request command name
				self.currentReqCmd = cmd;
				
				response.debug && self.responseDebug(response);
				
				self.setCustomHeaderByXhr(xhr);

				if (raw) {
					self.abortXHR(xhr);
					response && response.debug && self.debug('backend-debug', response);
					return dfrd.resolve(response);
				}
				
				if (!response) {
					return dfrd.reject({error :['errResponse', 'errDataEmpty']}, xhr, response);
				} else if (!jQuery.isPlainObject(response)) {
					return dfrd.reject({error :['errResponse', 'errDataNotJSON']}, xhr, response);
				} else if (response.error) {
					if (isOpen) {
						// check leafRoots
						jQuery.each(self.leafRoots, function(phash, roots) {
							self.leafRoots[phash] = jQuery.grep(roots, function(h) { return h !== data.target; });
						});
					}
					return dfrd.reject({error :response.error}, xhr, response);
				}
				
				var resolve = function() {
					var pushLeafRoots = function(name) {
						if (self.leafRoots[data.target] && response[name]) {
							jQuery.each(self.leafRoots[data.target], function(i, h) {
								var root;
								if (root = self.file(h)) {
									response[name].push(root);
								}
							});
						}
					},
					setTextMimes = function() {
						self.textMimes = {};
						jQuery.each(self.res('mimes', 'text'), function() {
							self.textMimes[this.toLowerCase()] = true;
						});
					},
					actionTarget;
					
					if (isOpen) {
						pushLeafRoots('files');
					} else if (cmd === 'tree') {
						pushLeafRoots('tree');
					}
					
					response = self.normalize(response);
					
					if (!self.validResponse(cmd, response)) {
						return dfrd.reject({error :(response.norError || 'errResponse')}, xhr, response);
					}
					
					if (isOpen) {
						if (!self.api) {
							self.api    = response.api || 1;
							if (self.api == '2.0' && typeof response.options.uploadMaxSize !== 'undefined') {
								self.api = '2.1';
							}
							self.newAPI = self.api >= 2;
							self.oldAPI = !self.newAPI;
						}
						
						if (response.textMimes && Array.isArray(response.textMimes)) {
							self.resources.mimes.text = response.textMimes;
							setTextMimes();
						}
						!self.textMimes && setTextMimes();
						
						if (response.options) {
							cwdOptions = Object.assign({}, cwdOptionsDefault, response.options);
						}

						if (response.netDrivers) {
							self.netDrivers = response.netDrivers;
						}

						if (response.maxTargets) {
							self.maxTargets = response.maxTargets;
						}

						if (!!data.init) {
							self.uplMaxSize = self.returnBytes(response.uplMaxSize);
							self.uplMaxFile = !!response.uplMaxFile? Math.min(parseInt(response.uplMaxFile), 50) : 20;
						}
					}

					if (typeof prepare === 'function') {
						prepare(response);
					}
					
					if (navigate) {
						actionTarget = navigate.target || 'added';
						if (response[actionTarget] && response[actionTarget].length) {
							self.one(cmd + 'done', function() {
								var targets  = response[actionTarget],
									newItems = self.findCwdNodes(targets),
									inCwdHashes = function() {
										var cwdHash = self.cwd().hash;
										return jQuery.map(targets, function(f) { return (f.phash && cwdHash === f.phash)? f.hash : null; });
									},
									hashes   = inCwdHashes(),
									makeToast  = function(t) {
										var node = void(0),
											data = t.action? t.action.data : void(0),
											cmd, msg, done;
										if ((data || hashes.length) && t.action && (msg = t.action.msg) && (cmd = t.action.cmd) && (!t.action.cwdNot || t.action.cwdNot !== self.cwd().hash)) {
											done = t.action.done;
											data = t.action.data;
											node = jQuery('<div></div>')
												.append(
													jQuery('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'
														+self.i18n(msg)
														+'</span></button>')
													.on('mouseenter mouseleave', function(e) { 
														jQuery(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
													})
													.on('click', function() {
														self.exec(cmd, data || hashes, {_userAction: true, _currentType: 'toast', _currentNode: jQuery(this) });
														if (done) {
															self.one(cmd+'done', function() {
																if (typeof done === 'function') {
																	done();
																} else if (done === 'select') {
																	self.trigger('selectfiles', {files : inCwdHashes()});
																}
															});
														}
													})
												);
										}
										delete t.action;
										t.extNode = node;
										return t;
									};
								
								if (! navigate.toast) {
									navigate.toast = {};
								}
								
								!navigate.noselect && self.trigger('selectfiles', {files : self.searchStatus.state > 1 ? jQuery.map(targets, function(f) { return f.hash; }) : hashes});
								
								if (newItems.length) {
									if (!navigate.noscroll) {
										newItems.first().trigger('scrolltoview', {blink : false});
										self.resources.blink(newItems, 'lookme');
									}
									if (jQuery.isPlainObject(navigate.toast.incwd)) {
										self.toast(makeToast(navigate.toast.incwd));
									}
								} else {
									if (jQuery.isPlainObject(navigate.toast.inbuffer)) {
										self.toast(makeToast(navigate.toast.inbuffer));
									}
								}
							});
						}
					}
					
					dfrd.resolve(response);
					
					response.debug && self.debug('backend-debug', response);
				};
				self.abortXHR(xhr);
				lazy? self.lazy(resolve) : resolve();
			},
			xhr, _xhr,
			xhrAbort = function(e) {
				if (xhr && xhr.state() === 'pending') {
					self.abortXHR(xhr, { quiet: true , abort: true });
					if (!e || (e.type !== 'unload' && e.type !== 'destroy')) {
						self.autoSync();
					}
				}
			},
			abort = function(e){
				self.trigger(cmd + 'done');
				if (e.type == 'autosync') {
					if (e.data.action != 'stop') return;
				} else if (e.type != 'unload' && e.type != 'destroy' && e.type != 'openxhrabort') {
					if (!e.data.added || !e.data.added.length) {
						return;
					}
				}
				xhrAbort(e);
			},
			request = function(mode) {
				var queueAbort = function() {
					syncOnFail = false;
					dfrd.reject();
				};
				
				if (mode) {
					if (mode === 'cmd') {
						return cmd;
					}
				}
				
				if (isOpen) {
					if (currentOpenCmd && currentOpenCmd.state() === 'pending') {
						if (currentOpenCmd._target === data.target) {
							return dfrd.reject('openabort');
						} else {
							if (currentOpenCmd.xhr) {
								currentOpenCmd.xhr.queueAbort();
							} else {
								currentOpenCmd.reject('openabort');
							}
						}
					}
					currentOpenCmd = dfrd;
					currentOpenCmd._target = data.target;
				}
				
				dfrd.always(function() {
					delete options.headers['X-elFinderReqid'];
					if (isOpen) {
						currentOpenCmd = null;
					}
				}).fail(function(error, xhr, response) {
					var errData, errMsg;

					if (isOpen && error === 'openabort') {
						error = '';
						syncOnFail = false;
					}

					errData = {
						cmd: cmd,
						err: error,
						xhr: xhr,
						rc: response
					};

					// unset this cmd queue when user canceling
					// see notify : function - `cancel.reject(0);`
					if (error === 0) {
						if (requestQueue.length) {
							requestQueue = jQuery.grep(requestQueue, function(req) {
								return (req('cmd') === cmd) ? false : true;
							});
						}
					}
					// trigger "requestError" event
					self.trigger('requestError', errData);
					if (errData._getEvent && errData._getEvent().isDefaultPrevented()) {
						deffail = false;
						syncOnFail = false;
						if (error) {
							error.error = '';
						}
					}
					// abort xhr
					xhrAbort();
					if (isOpen) {
						openDir = self.file(data.target);
						openDir && openDir.volumeid && self.isRoot(openDir) && delete self.volumeExpires[openDir.volumeid];
					}
					self.trigger(cmd + 'fail', response);
					errMsg = (typeof error === 'object')? error.error : error;
					if (errMsg) {
						deffail ? self.error(errMsg) : self.debug('error', self.i18n(errMsg));
					}
					syncOnFail && self.sync();
				});

				if (!cmd) {
					syncOnFail = false;
					return dfrd.reject({error :'errCmdReq'});
				}
				
				if (self.maxTargets && data.targets && data.targets.length > self.maxTargets) {
					syncOnFail = false;
					return dfrd.reject({error :['errMaxTargets', self.maxTargets]});
				}

				defdone && dfrd.done(done);
				
				// quiet abort not completed "open" requests
				if (isOpen) {
					while ((_xhr = queue.pop())) {
						_xhr.queueAbort();
					}
					if (cwd !== data.target) {
						while ((_xhr = cwdQueue.pop())) {
							_xhr.queueAbort();
						}
					}
				}

				// trigger abort autoSync for commands to add the item
				if (jQuery.inArray(cmd, (self.cmdsToAdd + ' autosync').split(' ')) !== -1) {
					if (cmd !== 'autosync') {
						self.autoSync('stop');
						dfrd.always(function() {
							self.autoSync();
						});
					}
					self.trigger('openxhrabort');
				}

				delete options.preventFail;

				if (self.api >= 2.1029) {
					if (useCache) {
						options.headers['X-elFinderReqid'] = reqId;
					} else {
						Object.assign(options.data, { reqid : reqId });
					}
				}
				
				// function for set value of this syncOnFail
				dfrd.syncOnFail = function(state) {
					syncOnFail = !!state;
				};

				requestCnt++;

				dfrd.xhr = xhr = self.transport.send(options).always(function() {
					// set responseURL from native xhr object
					if (options._xhr && typeof options._xhr.responseURL !== 'undefined') {
						xhr.responseURL = options._xhr.responseURL || '';
					}
					--requestCnt;
					if (requestQueue.length) {
						requestQueue.shift()();
					}
				}).fail(error).done(success);
				
				if (self.api >= 2.1029) {
					xhr._requestId = reqId;
				}
				
				if (isOpen || (data.compare && cmd === 'info')) {
					// regist function queueAbort
					xhr.queueAbort = queueAbort;
					// add autoSync xhr into queue
					queue.unshift(xhr);
					// bind abort()
					data.compare && self.bind(self.cmdsToAdd + ' autosync openxhrabort', abort);
					dfrd.always(function() {
						var ndx = jQuery.inArray(xhr, queue);
						data.compare && self.unbind(self.cmdsToAdd + ' autosync openxhrabort', abort);
						ndx !== -1 && queue.splice(ndx, 1);
					});
				} else if (jQuery.inArray(cmd, self.abortCmdsOnOpen) !== -1) {
					// regist function queueAbort
					xhr.queueAbort = queueAbort;
					// add "open" xhr, only cwd xhr into queue
					cwdQueue.unshift(xhr);
					dfrd.always(function() {
						var ndx = jQuery.inArray(xhr, cwdQueue);
						ndx !== -1 && cwdQueue.splice(ndx, 1);
					});
				}
				
				// abort pending xhr on window unload or elFinder destroy
				self.bind('unload destroy', abort);
				dfrd.always(function() {
					self.unbind('unload destroy', abort);
				});
				
				return dfrd;
			},
			queueingRequest = function() {
				// show notify
				if (notify.type && notify.cnt) {
					if (cancel) {
						notify.cancel = dfrd;
						opts.eachCancel && (notify.id = +new Date());
					}
					timeout = setTimeout(function() {
						// start fake count up
						progTm = setTimeout(progFakeUp, 1000);
						self.notify(notify);
						hasNotify = true;
						dfrd.always(function() {
							notify.cnt = -(parseInt(notify.cnt)||0);
							self.notify(notify);
							hasNotify = false;
						});
					}, self.notifyDelay);
					
					dfrd.always(function() {
						clearTimeout(timeout);
					});
				}
				// queueing
				if (requestCnt < requestMaxConn) {
					// do request
					return request();
				} else {
					if (isOpen) {
						requestQueue.unshift(request);
					} else {
						requestQueue.push(request);
					}
					return dfrd;
				}
			},
			progFakeUp = function() {
				var add;
				if (hasNotify && progTm) {
					add = 1 * notify.cnt;
					progTm = null;
					self.notify({
						type: notify.type,
						progress: add,
						cnt: 0,
						hideCnt: notify.hideCnt
					});
					prog += add;
					if ((prog / notify.cnt) < 80) {
						progTm = setTimeout(progFakeUp, 500);
					}
				}
			},
			bindData = {opts: opts, result: true},
			openDir;
		
		// prevent request initial request is completed
		if (!self.api && !data.init) {
			syncOnFail = false;
			return dfrd.reject();
		}

		// trigger "request.cmd" that callback be able to cancel request by substituting "false" for "event.data.result"
		self.trigger('request.' + cmd, bindData, true);
		
		if (! bindData.result) {
			self.trigger(cmd + 'done');
			return dfrd.reject();
		} else if (typeof bindData.result === 'object' && bindData.result.promise) {
			bindData.result
				.done(queueingRequest)
				.fail(function() {
					self.trigger(cmd + 'done');
					dfrd.reject();
				});
			return dfrd;
		}
		
		return queueingRequest();
	};
	
	/**
	 * Call cache()
	 * Store info about files/dirs in "files" object.
	 *
	 * @param  Array  files
	 * @param  String type
	 * @return void
	 */
	this.cache = function(dataArray, type) {
		if (! Array.isArray(dataArray)) {
			dataArray = [ dataArray ];
		}
		cache(dataArray, type);
	};
	
	/**
	 * Update file object caches by respose data object
	 * 
	 * @param  Object  respose data object
	 * @return void
	 */
	this.updateCache = function(data) {
		if (jQuery.isPlainObject(data)) {
			data.files && data.files.length && cache(data.files, 'files');
			data.tree && data.tree.length && cache(data.tree, 'tree');
			data.removed && data.removed.length && remove(data.removed);
			data.added && data.added.length && cache(data.added, 'add');
			data.changed && data.changed.length && cache(data.changed, 'change');
		}
	};
	
	/**
	 * Compare current files cache with new files and return diff
	 * 
	 * @param  Array   new files
	 * @param  String  target folder hash
	 * @param  Array   exclude properties to compare
	 * @return Object
	 */
	this.diff = function(incoming, onlydir, excludeProps) {
		var raw       = {},
			added     = [],
			removed   = [],
			changed   = [],
			excludes  = null,
			isChanged = function(hash) {
				var l = changed.length;

				while (l--) {
					if (changed[l].hash == hash) {
						return true;
					}
				}
			};
		
		jQuery.each(incoming, function(i, f) {
			raw[f.hash] = f;
		});
		
		// make excludes object
		if (excludeProps && excludeProps.length) {
			excludes = {};
			jQuery.each(excludeProps, function() {
				excludes[this] = true;
			});
		}
		
		// find removed
		jQuery.each(files, function(hash, f) {
			if (! raw[hash] && (! onlydir || f.phash === onlydir)) {
				removed.push(hash);
			}
		});
		
		// compare files
		jQuery.each(raw, function(hash, file) {
			var origin  = files[hash],
				orgKeys = {},
				chkKeyLen;

			if (!origin) {
				added.push(file);
			} else {
				// make orgKeys object
				jQuery.each(Object.keys(origin), function() {
					orgKeys[this] = true;
				});
				jQuery.each(file, function(prop) {
					delete orgKeys[prop];
					if (! excludes || ! excludes[prop]) {
						if (file[prop] !== origin[prop]) {
							changed.push(file);
							orgKeys = {};
							return false;
						}
					}
				});
				chkKeyLen = Object.keys(orgKeys).length;
				if (chkKeyLen !== 0) {
					if (excludes) {
						jQuery.each(orgKeys, function(prop) {
							if (excludes[prop]) {
								--chkKeyLen;
							}
						});
					}
					(chkKeyLen !== 0) && changed.push(file);
				}
			}
		});
		
		// parents of removed dirs mark as changed (required for tree correct work)
		jQuery.each(removed, function(i, hash) {
			var file  = files[hash], 
				phash = file.phash;

			if (phash 
			&& file.mime == 'directory' 
			&& jQuery.inArray(phash, removed) === -1 
			&& raw[phash] 
			&& !isChanged(phash)) {
				changed.push(raw[phash]);
			}
		});
		
		return {
			added   : added,
			removed : removed,
			changed : changed
		};
	};
	
	/**
	 * Sync content
	 * 
	 * @return jQuery.Deferred
	 */
	this.sync = function(onlydir, polling) {
		this.autoSync('stop');
		var self  = this,
			compare = function(){
				var c = '', cnt = 0, mtime = 0;
				if (onlydir && polling) {
					jQuery.each(files, function(h, f) {
						if (f.phash && f.phash === onlydir) {
							++cnt;
							mtime = Math.max(mtime, f.ts);
						}
						c = cnt+':'+mtime;
					});
				}
				return c;
			},
			comp  = compare(),
			dfrd  = jQuery.Deferred().always(function() { !reqFail && self.trigger('sync'); }),
			opts = [this.request({
				data           : {cmd : 'open', reload : 1, target : cwd, tree : (! onlydir && this.ui.tree) ? 1 : 0, compare : comp},
				preventDefault : true
			})],
			exParents = function() {
				var parents = [],
					curRoot = self.file(self.root(cwd)),
					curId = curRoot? curRoot.volumeid : null,
					phash = self.cwd().phash,
					isroot,pdir;
				
				while(phash) {
					if (pdir = self.file(phash)) {
						if (phash.indexOf(curId) !== 0) {
							parents.push( {target: phash, cmd: 'tree'} );
							if (! self.isRoot(pdir)) {
								parents.push( {target: phash, cmd: 'parents'} );
							}
							curRoot = self.file(self.root(phash));
							curId = curRoot? curRoot.volumeid : null;
						}
						phash = pdir.phash;
					} else {
						phash = null;
					}
				}
				return parents;
			},
			reqFail;
		
		if (! onlydir && self.api >= 2) {
			(cwd !== this.root()) && opts.push(this.request({
				data           : {cmd : 'parents', target : cwd},
				preventDefault : true
			}));
			jQuery.each(exParents(), function(i, data) {
				opts.push(self.request({
					data           : {cmd : data.cmd, target : data.target},
					preventDefault : true
				}));
			});
		}
		jQuery.when.apply($, opts)
		.fail(function(error, xhr) {
			reqFail = (xhr && xhr.status != 200);
			if (! polling || jQuery.inArray('errOpen', error) !== -1) {
				dfrd.reject(error);
				self.parseError(error) && self.request({
					data   : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1},
					notify : {type : 'open', cnt : 1, hideCnt : true}
				});
			} else {
				dfrd.reject((error && xhr.status != 0)? error : void 0);
			}
		})
		.done(function(odata) {
			var pdata, argLen, i;
			
			if (odata.cwd.compare) {
				if (comp === odata.cwd.compare) {
					return dfrd.reject();
				}
			}
			
			// for 2nd and more requests
			pdata = {tree : []};
			
			// results marge of 2nd and more requests
			argLen = arguments.length;
			if (argLen > 1) {
				for(i = 1; i < argLen; i++) {
					if (arguments[i].tree && arguments[i].tree.length) {
						pdata.tree.push.apply(pdata.tree, arguments[i].tree);
					}
				}
			}
			
			if (self.api < 2.1) {
				if (! pdata.tree) {
					pdata.tree = [];
				}
				pdata.tree.push(odata.cwd);
			}
			
			// data normalize
			odata = self.normalize(odata);
			if (!self.validResponse('open', odata)) {
				return dfrd.reject((odata.norError || 'errResponse'));
			}
			pdata = self.normalize(pdata);
			if (!self.validResponse('tree', pdata)) {
				return dfrd.reject((pdata.norError || 'errResponse'));
			}
			
			var diff = self.diff(odata.files.concat(pdata && pdata.tree ? pdata.tree : []), onlydir);

			diff.added.push(odata.cwd);
			
			self.updateCache(diff);
			
			// trigger events
			diff.removed.length && self.remove(diff);
			diff.added.length   && self.add(diff);
			diff.changed.length && self.change(diff);
			return dfrd.resolve(diff);
		})
		.always(function() {
			self.autoSync();
		});
		
		return dfrd;
	};
	
	this.upload = function(files) {
		return this.transport.upload(files, this);
	};
	
	/**
	 * Bind keybord shortcut to keydown event
	 *
	 * @example
	 *    elfinder.shortcut({ 
	 *       pattern : 'ctrl+a', 
	 *       description : 'Select all files', 
	 *       callback : function(e) { ... }, 
	 *       keypress : true|false (bind to keypress instead of keydown) 
	 *    })
	 *
	 * @param  Object  shortcut config
	 * @return elFinder
	 */
	this.shortcut = function(s) {
		var patterns, pattern, code, i, parts;
		
		if (this.options.allowShortcuts && s.pattern && jQuery.isFunction(s.callback)) {
			patterns = s.pattern.toUpperCase().split(/\s+/);
			
			for (i= 0; i < patterns.length; i++) {
				pattern = patterns[i];
				parts   = pattern.split('+');
				code    = (code = parts.pop()).length == 1 
					? (code > 0 ? code : code.charCodeAt(0))
					: (code > 0 ? code : jQuery.ui.keyCode[code]);

				if (code && !shortcuts[pattern]) {
					shortcuts[pattern] = {
						keyCode     : code,
						altKey      : jQuery.inArray('ALT', parts)   != -1,
						ctrlKey     : jQuery.inArray('CTRL', parts)  != -1,
						shiftKey    : jQuery.inArray('SHIFT', parts) != -1,
						type        : s.type || 'keydown',
						callback    : s.callback,
						description : s.description,
						pattern     : pattern
					};
				}
			}
		}
		return this;
	};
	
	/**
	 * Registered shortcuts
	 *
	 * @type Object
	 **/
	this.shortcuts = function() {
		var ret = [];
		
		jQuery.each(shortcuts, function(i, s) {
			ret.push([s.pattern, self.i18n(s.description)]);
		});
		return ret;
	};
	
	/**
	 * Get/set clipboard content.
	 * Return new clipboard content.
	 *
	 * @example
	 *   this.clipboard([]) - clean clipboard
	 *   this.clipboard([{...}, {...}], true) - put 2 files in clipboard and mark it as cutted
	 * 
	 * @param  Array    new files hashes
	 * @param  Boolean  cut files?
	 * @return Array
	 */
	this.clipboard = function(hashes, cut) {
		var map = function() { return jQuery.map(clipboard, function(f) { return f.hash; }); };

		if (hashes !== void(0)) {
			clipboard.length && this.trigger('unlockfiles', {files : map()});
			remember = {};
			
			clipboard = jQuery.map(hashes||[], function(hash) {
				var file = files[hash];
				if (file) {
					
					remember[hash] = true;
					
					return {
						hash   : hash,
						phash  : file.phash,
						name   : file.name,
						mime   : file.mime,
						read   : file.read,
						locked : file.locked,
						cut    : !!cut
					};
				}
				return null;
			});
			this.trigger('changeclipboard', {clipboard : clipboard.slice(0, clipboard.length)});
			cut && this.trigger('lockfiles', {files : map()});
		}

		// return copy of clipboard instead of refrence
		return clipboard.slice(0, clipboard.length);
	};
	
	/**
	 * Return true if command enabled
	 * 
	 * @param  String       command name
	 * @param  String|void  hash for check of own volume's disabled cmds
	 * @return Boolean
	 */
	this.isCommandEnabled = function(name, dstHash) {
		var disabled, cmd,
			cvid = self.cwd().volumeid || '';
		
		// In serach results use selected item hash to check
		if (!dstHash && self.searchStatus.state > 1 && self.selected().length) {
			dstHash = self.selected()[0];
		}
		if (dstHash && (! cvid || dstHash.indexOf(cvid) !== 0)) {
			disabled = self.option('disabledFlip', dstHash);
			//if (! disabled) {
			//	disabled = {};
			//}
		} else {
			disabled = cwdOptions.disabledFlip/* || {}*/;
		}
		cmd = this._commands[name];
		return cmd ? (cmd.alwaysEnabled || !disabled[name]) : false;
	};
	
	/**
	 * Exec command and return result;
	 *
	 * @param  String         command name
	 * @param  String|Array   usualy files hashes
	 * @param  String|Array   command options
	 * @param  String|void    hash for enabled check of own volume's disabled cmds
	 * @return jQuery.Deferred
	 */		
	this.exec = function(cmd, files, opts, dstHash) {
		var dfrd, resType;
		
		// apply commandMap for keyboard shortcut
		if (!dstHash && this.commandMap[cmd] && this.commandMap[cmd] !== 'hidden') {
			cmd = this.commandMap[cmd];
		}

		if (cmd === 'open') {
			if (this.searchStatus.state || this.searchStatus.ininc) {
				this.trigger('searchend', { noupdate: true });
			}
			this.autoSync('stop');
		}
		if (!dstHash && files) {
			if (jQuery.isArray(files)) {
				if (files.length) {
					dstHash = files[0];
				}
			} else {
				dstHash = files;
			}
		}
		dfrd = this._commands[cmd] && this.isCommandEnabled(cmd, dstHash) 
			? this._commands[cmd].exec(files, opts) 
			: jQuery.Deferred().reject('errUnknownCmd');
		
		resType = typeof dfrd;
		if (!(resType === 'object' && dfrd.promise)) {
			self.debug('warning', '"cmd.exec()" should be returned "jQuery.Deferred" but cmd "' + cmd + '" returned "' + resType + '"');
			dfrd = jQuery.Deferred().resolve();
		}
		
		this.trigger('exec', { dfrd : dfrd, cmd : cmd, files : files, opts : opts, dstHash : dstHash });
		return dfrd;
	};
	
	/**
	 * Create and return dialog.
	 *
	 * @param  String|DOMElement  dialog content
	 * @param  Object             dialog options
	 * @return jQuery
	 */
	this.dialog = function(content, options) {
		var dialog = jQuery('<div></div>').append(content).appendTo(node).elfinderdialog(options, self),
			dnode  = dialog.closest('.ui-dialog'),
			resize = function(){
				! dialog.data('draged') && dialog.is(':visible') && dialog.elfinderdialog('posInit');
			};
		if (dnode.length) {
			self.bind('resize', resize);
			dnode.on('remove', function() {
				self.unbind('resize', resize);
			});
		}
		return dialog;
	};
	
	/**
	 * Create and return toast.
	 *
	 * @param  Object  toast options - see ui/toast.js
	 * @return jQuery
	 */
	this.toast = function(options) {
		return jQuery('<div class="ui-front"></div>').appendTo(this.ui.toast).elfindertoast(options || {}, this);
	};
	
	/**
	 * Return UI widget or node
	 *
	 * @param  String  ui name
	 * @return jQuery
	 */
	this.getUI = function(ui) {
		return ui? (this.ui[ui] || jQuery()) : node;
	};
	
	/**
	 * Return elFinder.command instance or instances array
	 *
	 * @param  String  command name
	 * @return Object | Array
	 */
	this.getCommand = function(name) {
		return name === void(0) ? this._commands : this._commands[name];
	};
	
	/**
	 * Resize elfinder node
	 * 
	 * @param  String|Number  width
	 * @param  String|Number  height
	 * @return void
	 */
	this.resize = function(w, h) {
		var getMargin = function() {
				var m = node.outerHeight(true) - node.innerHeight(),
					p = node;
				
				while(p.get(0) !== heightBase.get(0)) {
					p = p.parent();
					m += p.outerHeight(true) - p.innerHeight();
					if (! p.parent().length) {
						// reached the document
						break;
					}
				}
				return m;
			},
			fit = ! node.hasClass('ui-resizable'),
			prv = node.data('resizeSize') || {w: 0, h: 0},
			mt, size = {};

		if (heightBase && heightBase.data('resizeTm')) {
			clearTimeout(heightBase.data('resizeTm'));
		}
		
		if (! self.options.noResizeBySelf) {
			if (typeof h === 'string') {
				if (mt = h.match(/^([0-9.]+)%$/)) {
					// setup heightBase
					if (! heightBase || ! heightBase.length) {
						heightBase = jQuery(window);
					}
					if (! heightBase.data('marginToMyNode')) {
						heightBase.data('marginToMyNode', getMargin());
					}
					if (! heightBase.data('fitToBaseFunc')) {
						heightBase.data('fitToBaseFunc', function(e) {
							var tm = heightBase.data('resizeTm');
							e.preventDefault();
							e.stopPropagation();
							tm && cancelAnimationFrame(tm);
							if (! node.hasClass('elfinder-fullscreen') && (!self.UA.Mobile || heightBase.data('rotated') !== self.UA.Rotated)) {
								heightBase.data('rotated', self.UA.Rotated);
								heightBase.data('resizeTm', requestAnimationFrame(function() {
									self.restoreSize();
								}));
							}
						});
					}
					if (typeof heightBase.data('rotated') === 'undefined') {
						heightBase.data('rotated', self.UA.Rotated);
					}
					h = heightBase.height() * (mt[1] / 100) - heightBase.data('marginToMyNode');
					
					heightBase.off('resize.' + self.namespace, heightBase.data('fitToBaseFunc'));
					fit && heightBase.on('resize.' + self.namespace, heightBase.data('fitToBaseFunc'));
				}
			}
			
			node.css({ width : w, height : parseInt(h) });
		}

		size.w = Math.round(node.width());
		size.h = Math.round(node.height());
		node.data('resizeSize', size);
		if (size.w !== prv.w || size.h !== prv.h) {
			node.trigger('resize');
			this.trigger('resize', {width : size.w, height : size.h});
		}
	};
	
	/**
	 * Restore elfinder node size
	 * 
	 * @return elFinder
	 */
	this.restoreSize = function() {
		this.resize(width, height);
	};
	
	this.show = function() {
		node.show();
		this.enable().trigger('show');
	};
	
	this.hide = function() {
		if (this.options.enableAlways) {
			prevEnabled = enabled;
			enabled = false;
		}
		this.disable();
		this.trigger('hide');
		node.hide();
	};
	
	/**
	 * Lazy execution function
	 * 
	 * @param  Object  function
	 * @param  Number  delay
	 * @param  Object  options
	 * @return Object  jQuery.Deferred
	 */
	this.lazy = function(func, delay, opts) {
		var busy = function(state) {
				var cnt = node.data('lazycnt'),
					repaint;
				
				if (state) {
					repaint = node.data('lazyrepaint')? false : opts.repaint;
					if (! cnt) {
						node.data('lazycnt', 1)
							.addClass('elfinder-processing');
					} else {
						node.data('lazycnt', ++cnt);
					}
					if (repaint) {
						node.data('lazyrepaint', true).css('display'); // force repaint
					}
				} else {
					if (cnt && cnt > 1) {
						node.data('lazycnt', --cnt);
					} else {
						repaint = node.data('lazyrepaint');
						node.data('lazycnt', 0)
							.removeData('lazyrepaint')
							.removeClass('elfinder-processing');
						repaint && node.css('display'); // force repaint;
						self.trigger('lazydone');
					}
				}
			},
			dfd  = jQuery.Deferred(),
			callFunc = function() {
				dfd.resolve(func.call(dfd));
				busy(false);
			};
		
		delay = delay || 0;
		opts = opts || {};
		busy(true);
		
		if (delay) {
			setTimeout(callFunc, delay);
		} else {
			requestAnimationFrame(callFunc);
		}
		
		return dfd;
	};
	
	/**
	 * Destroy this elFinder instance
	 *
	 * @return void
	 **/
	this.destroy = function() {
		if (node && node[0].elfinder) {
			node.hasClass('elfinder-fullscreen') && self.toggleFullscreen(node);
			this.options.syncStart = false;
			this.autoSync('forcestop');
			this.trigger('destroy').disable();
			clipboard = [];
			selected = [];
			listeners = {};
			shortcuts = {};
			jQuery(window).off('.' + namespace);
			jQuery(document).off('.' + namespace);
			self.trigger = function(){};
			jQuery(beeper).remove();
			node.off()
				.removeData()
				.empty()
				.append(prevContent.contents())
				.attr('class', prevContent.attr('class'))
				.attr('style', prevContent.attr('style'));
			delete node[0].elfinder;
			// restore kept events
			jQuery.each(prevEvents, function(n, arr) {
				jQuery.each(arr, function(i, o) {
					node.on(o.type + (o.namespace? '.'+o.namespace : ''), o.selector, o.handler);
				});
			});
		}
	};
	
	/**
	 * Start or stop auto sync
	 * 
	 * @param  String|Bool  stop
	 * @return void
	 */
	this.autoSync = function(mode) {
		var sync;
		if (self.options.sync >= 1000) {
			if (syncInterval) {
				clearTimeout(syncInterval);
				syncInterval = null;
				self.trigger('autosync', {action : 'stop'});
			}
			
			if (mode === 'stop') {
				++autoSyncStop;
			} else {
				autoSyncStop = Math.max(0, --autoSyncStop);
			}
			
			if (autoSyncStop || mode === 'forcestop' || ! self.options.syncStart) {
				return;
			} 
			
			// run interval sync
			sync = function(start){
				var timeout;
				if (cwdOptions.syncMinMs && (start || syncInterval)) {
					start && self.trigger('autosync', {action : 'start'});
					timeout = Math.max(self.options.sync, cwdOptions.syncMinMs);
					syncInterval && clearTimeout(syncInterval);
					syncInterval = setTimeout(function() {
						var dosync = true, hash = cwd, cts;
						if (cwdOptions.syncChkAsTs && files[hash] && (cts = files[hash].ts)) {
							self.request({
								data : {cmd : 'info', targets : [hash], compare : cts, reload : 1},
								preventDefault : true
							})
							.done(function(data){
								var ts;
								dosync = true;
								if (data.compare) {
									ts = data.compare;
									if (ts == cts) {
										dosync = false;
									}
								}
								if (dosync) {
									self.sync(hash).always(function(){
										if (ts) {
											// update ts for cache clear etc.
											files[hash].ts = ts;
										}
										sync();
									});
								} else {
									sync();
								}
							})
							.fail(function(error, xhr){
								var err = self.parseError(error);
								if (err && xhr.status != 0) {
									self.error(err);
									if (Array.isArray(err) && jQuery.inArray('errOpen', err) !== -1) {
										self.request({
											data   : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1},
											notify : {type : 'open', cnt : 1, hideCnt : true}
										});
									}
								} else {
									syncInterval = setTimeout(function() {
										sync();
									}, timeout);
								}
							});
						} else {
							self.sync(cwd, true).always(function(){
								sync();
							});
						}
					}, timeout);
				}
			};
			sync(true);
		}
	};
	
	/**
	 * Return bool is inside work zone of specific point
	 * 
	 * @param  Number event.pageX
	 * @param  Number event.pageY
	 * @return Bool
	 */
	this.insideWorkzone = function(x, y, margin) {
		var rectangle = this.getUI('workzone').data('rectangle');
		
		margin = margin || 1;
		if (x < rectangle.left + margin
		|| x > rectangle.left + rectangle.width + margin
		|| y < rectangle.top + margin
		|| y > rectangle.top + rectangle.height + margin) {
			return false;
		}
		return true;
	};
	
	/**
	 * Target ui node move to last of children of elFinder node fot to show front
	 * 
	 * @param  Object  target    Target jQuery node object
	 */
	this.toFront = function(target) {
		var nodes = node.children('.ui-front').removeClass('elfinder-frontmost'),
			lastnode = nodes.last();
		nodes.css('z-index', '');
		jQuery(target).addClass('ui-front elfinder-frontmost').css('z-index', lastnode.css('z-index') + 1);
	};
	
	/**
	 * Remove class 'elfinder-frontmost' and hide() to target ui node
	 *
	 * @param      Object   target  Target jQuery node object
	 * @param      Boolean  nohide  Do not hide
	 */
	this.toHide =function(target, nohide) {
		var tgt = jQuery(target),
			last;

		!nohide && tgt.hide();
		if (tgt.hasClass('elfinder-frontmost')) {
			tgt.removeClass('elfinder-frontmost');
			last = node.children('.ui-front:visible:not(.elfinder-frontmost)').last();
			if (last.length) {
				requestAnimationFrame(function() {
					if (!node.children('.elfinder-frontmost:visible').length) {
						self.toFront(last);
						last.trigger('frontmost');
					}
				});
			}
		}
	};

	/**
	 * Return css object for maximize
	 * 
	 * @return Object
	 */
	this.getMaximizeCss = function() {
		return {
			width   : '100%',
			height  : '100%',
			margin  : 0,
			top     : 0,
			left    : 0,
			display : 'block',
			position: 'fixed',
			zIndex  : Math.max(self.zIndex? (self.zIndex + 1) : 0 , 1000),
			maxWidth : '',
			maxHeight: ''
		};
	};
	
	// Closure for togglefullscreen
	(function() {
		// check is in iframe
		if (inFrame && self.UA.Fullscreen) {
			self.UA.Fullscreen = false;
			if (parentIframe && typeof parentIframe.attr('allowfullscreen') !== 'undefined') {
				self.UA.Fullscreen = true;
			}
		}

		var orgStyle, bodyOvf, resizeTm, fullElm, exitFull, toFull, funcObj,
			cls = 'elfinder-fullscreen',
			clsN = 'elfinder-fullscreen-native',
			checkDialog = function() {
				var t = 0,
					l = 0;
				jQuery.each(node.children('.ui-dialog,.ui-draggable'), function(i, d) {
					var $d = jQuery(d),
						pos = $d.position();
					
					if (pos.top < 0) {
						$d.css('top', t);
						t += 20;
					}
					if (pos.left < 0) {
						$d.css('left', l);
						l += 20;
					}
				});
			},
			setFuncObj = function() {
				var useFullscreen = self.storage('useFullscreen');
				funcObj = self.UA.Fullscreen && (useFullscreen? useFullscreen > 0 : self.options.commandsOptions.fullscreen.mode === 'screen') ? {
					// native full screen mode
					
					fullElm: function() {
						return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || null;
					},
					
					exitFull: function() {
						if (document.exitFullscreen) {
							return document.exitFullscreen();
						} else if (document.webkitExitFullscreen) {
							return document.webkitExitFullscreen();
						} else if (document.mozCancelFullScreen) {
							return document.mozCancelFullScreen();
						} else if (document.msExitFullscreen) {
							return document.msExitFullscreen();
						}
					},
					
					toFull: function(elem) {
						if (elem.requestFullscreen) {
							return elem.requestFullscreen();
						} else if (elem.webkitRequestFullscreen) {
							return elem.webkitRequestFullscreen();
						} else if (elem.mozRequestFullScreen) {
							return elem.mozRequestFullScreen();
						} else if (elem.msRequestFullscreen) {
							return elem.msRequestFullscreen();
						}
						return false;
					}
				} : {
					// node element maximize mode
					
					fullElm: function() {
						var full;
						if (node.hasClass(cls)) {
							return node.get(0);
						} else {
							full = node.find('.' + cls);
							if (full.length) {
								return full.get(0);
							}
						}
						return null;
					},
					
					exitFull: function() {
						var elm;
						
						jQuery(window).off('resize.' + namespace, resize);
						if (bodyOvf !== void(0)) {
							jQuery('body').css('overflow', bodyOvf);
						}
						bodyOvf = void(0);
						
						if (orgStyle) {
							elm = orgStyle.elm;
							restoreStyle(elm);
							jQuery(elm).trigger('resize', {fullscreen: 'off'});
						}
						
						jQuery(window).trigger('resize');
					},
					
					toFull: function(elem) {
						bodyOvf = jQuery('body').css('overflow') || '';
						jQuery('body').css('overflow', 'hidden');
						
						jQuery(elem).css(self.getMaximizeCss())
							.addClass(cls)
							.trigger('resize', {fullscreen: 'on'});
						
						checkDialog();
						
						jQuery(window).on('resize.' + namespace, resize).trigger('resize');
						
						return true;
					}
				};
			},
			restoreStyle = function(elem) {
				if (orgStyle && orgStyle.elm == elem) {
					jQuery(elem).removeClass(cls + ' ' + clsN).attr('style', orgStyle.style);
					orgStyle = null;
				}
			},
			resize = function(e) {
				var elm;
				if (e.target === window) {
					resizeTm && cancelAnimationFrame(resizeTm);
					resizeTm = requestAnimationFrame(function() {
						if (elm = funcObj.fullElm()) {
							jQuery(elm).trigger('resize', {fullscreen: 'on'});
						}
					});
				}
			};
		
		setFuncObj();

		jQuery(document).on('fullscreenchange.' + namespace + ' webkitfullscreenchange.' + namespace + ' mozfullscreenchange.' + namespace + ' MSFullscreenChange.' + namespace, function(e){
			if (self.UA.Fullscreen) {
				var elm = funcObj.fullElm(),
					win = jQuery(window);
				
				resizeTm && cancelAnimationFrame(resizeTm);
				if (elm === null) {
					win.off('resize.' + namespace, resize);
					if (orgStyle) {
						elm = orgStyle.elm;
						restoreStyle(elm);
						jQuery(elm).trigger('resize', {fullscreen: 'off'});
					}
				} else {
					jQuery(elm).addClass(cls + ' ' + clsN)
						.attr('style', 'width:100%; height:100%; margin:0; padding:0;')
						.trigger('resize', {fullscreen: 'on'});
					win.on('resize.' + namespace, resize);
					checkDialog();
				}
				win.trigger('resize');
			}
		});
		
		/**
		 * Toggle Full Scrren Mode
		 * 
		 * @param  Object target
		 * @param  Bool   full
		 * @return Object | Null  DOM node object of current full scrren
		 */
		self.toggleFullscreen = function(target, full) {
			var elm = jQuery(target).get(0),
				curElm = null;
			
			curElm = funcObj.fullElm();
			if (curElm) {
				if (curElm == elm) {
					if (full === true) {
						return curElm;
					}
				} else {
					if (full === false) {
						return curElm;
					}
				}
				funcObj.exitFull();
				return null;
			} else {
				if (full === false) {
					return null;
				}
			}
			
			setFuncObj();
			orgStyle = {elm: elm, style: jQuery(elm).attr('style')};
			if (funcObj.toFull(elm) !== false) {
				return elm;
			} else {
				orgStyle = null;
				return null;
			}
		};
	})();
	
	// Closure for toggleMaximize
	(function(){
		var cls = 'elfinder-maximized',
		resizeTm,
		resize = function(e) {
			if (e.target === window && e.data && e.data.elm) {
				var elm = e.data.elm;
				resizeTm && cancelAnimationFrame(resizeTm);
				resizeTm = requestAnimationFrame(function() {
					elm.trigger('resize', {maximize: 'on'});
				});
			}
		},
		exitMax = function(elm) {
			jQuery(window).off('resize.' + namespace, resize);
			jQuery('body').css('overflow', elm.data('bodyOvf'));
			elm.removeClass(cls)
				.attr('style', elm.data('orgStyle'))
				.removeData('bodyOvf')
				.removeData('orgStyle');
			elm.trigger('resize', {maximize: 'off'});
		},
		toMax = function(elm) {
			elm.data('bodyOvf', jQuery('body').css('overflow') || '')
				.data('orgStyle', elm.attr('style'))
				.addClass(cls)
				.css(self.getMaximizeCss());
			jQuery('body').css('overflow', 'hidden');
			jQuery(window).on('resize.' + namespace, {elm: elm}, resize);
			elm.trigger('resize', {maximize: 'on'});
		};
		
		/**
		 * Toggle Maximize target node
		 * 
		 * @param  Object target
		 * @param  Bool   max
		 * @return void
		 */
		self.toggleMaximize = function(target, max) {
			var elm = jQuery(target),
				maximized = elm.hasClass(cls);
			
			if (maximized) {
				if (max === true) {
					return;
				}
				exitMax(elm);
			} else {
				if (max === false) {
					return;
				}
				toMax(elm);
			}
		};
	})();
	
	/*************  init stuffs  ****************/
	Object.assign(jQuery.ui.keyCode, {
		'F1' : 112,
		'F2' : 113,
		'F3' : 114,
		'F4' : 115,
		'F5' : 116,
		'F6' : 117,
		'F7' : 118,
		'F8' : 119,
		'F9' : 120,
		'F10' : 121,
		'F11' : 122,
		'F12' : 123,
		'DIG0' : 48,
		'DIG1' : 49,
		'DIG2' : 50,
		'DIG3' : 51,
		'DIG4' : 52,
		'DIG5' : 53,
		'DIG6' : 54,
		'DIG7' : 55,
		'DIG8' : 56,
		'DIG9' : 57,
		'NUM0' : 96,
		'NUM1' : 97,
		'NUM2' : 98,
		'NUM3' : 99,
		'NUM4' : 100,
		'NUM5' : 101,
		'NUM6' : 102,
		'NUM7' : 103,
		'NUM8' : 104,
		'NUM9' : 105,
		'CONTEXTMENU' : 93,
		'DOT'  : 190
	});
	
	this.dragUpload = false;
	this.xhrUpload  = (typeof XMLHttpRequestUpload != 'undefined' || typeof XMLHttpRequestEventTarget != 'undefined') && typeof File != 'undefined' && typeof FormData != 'undefined';
	
	// configure transport object
	this.transport = {};

	if (typeof(this.options.transport) == 'object') {
		this.transport = this.options.transport;
		if (typeof(this.transport.init) == 'function') {
			this.transport.init(this);
		}
	}
	
	if (typeof(this.transport.send) != 'function') {
		this.transport.send = function(opts) {
			if (!self.UA.IE) {
				// keep native xhr object for handling property responseURL
				opts._xhr = new XMLHttpRequest();
				opts.xhr = function() { 
					if (opts.progress) {
						opts._xhr.addEventListener('progress', opts.progress); 
					}
					return opts._xhr;
				};
			}
			return jQuery.ajax(opts);
		};
	}
	
	if (this.transport.upload == 'iframe') {
		this.transport.upload = jQuery.proxy(this.uploads.iframe, this);
	} else if (typeof(this.transport.upload) == 'function') {
		this.dragUpload = !!this.options.dragUploadAllow;
	} else if (this.xhrUpload && !!this.options.dragUploadAllow) {
		this.transport.upload = jQuery.proxy(this.uploads.xhr, this);
		this.dragUpload = true;
	} else {
		this.transport.upload = jQuery.proxy(this.uploads.iframe, this);
	}

	/**
	 * Decoding 'raw' string converted to unicode
	 * 
	 * @param  String str
	 * @return String
	 */
	this.decodeRawString = function(str) {
		var charCodes = function(str) {
			var i, len, arr;
			for (i=0,len=str.length,arr=[]; i<len; i++) {
				arr.push(str.charCodeAt(i));
			}
			return arr;
		},
		scalarValues = function(arr) {
			var scalars = [], i, len, c;
			if (typeof arr === 'string') {arr = charCodes(arr);}
			for (i=0,len=arr.length; c=arr[i],i<len; i++) {
				if (c >= 0xd800 && c <= 0xdbff) {
					scalars.push((c & 1023) + 64 << 10 | arr[++i] & 1023);
				} else {
					scalars.push(c);
				}
			}
			return scalars;
		},
		decodeUTF8 = function(arr) {
			var i, len, c, str, char = String.fromCharCode;
			for (i=0,len=arr.length,str=""; c=arr[i],i<len; i++) {
				if (c <= 0x7f) {
					str += char(c);
				} else if (c <= 0xdf && c >= 0xc2) {
					str += char((c&31)<<6 | arr[++i]&63);
				} else if (c <= 0xef && c >= 0xe0) {
					str += char((c&15)<<12 | (arr[++i]&63)<<6 | arr[++i]&63);
				} else if (c <= 0xf7 && c >= 0xf0) {
					str += char(
						0xd800 | ((c&7)<<8 | (arr[++i]&63)<<2 | arr[++i]>>>4&3) - 64,
						0xdc00 | (arr[i++]&15)<<6 | arr[i]&63
					);
				} else {
					str += char(0xfffd);
				}
			}
			return str;
		};
		
		return decodeUTF8(scalarValues(str));
	};

	/**
	 * Gets target file contents by file.hash
	 *
	 * @param      String  hash          The hash
	 * @param      String  responseType  'blob' or 'arraybuffer' (default)
	 * @param      Object  requestOpts   The request options
	 * @return     arraybuffer|blob  The contents.
	 */
	this.getContents = function(hash, responseType, requestOpts) {
		var self = this,
			dfd = jQuery.Deferred(),
			type = responseType || 'arraybuffer',
			url, req;

		dfd.fail(function() {
			req && req.state() === 'pending' && req.reject();
		});

		url = self.openUrl(hash);
		if (!self.isSameOrigin(url)) {
			url = self.openUrl(hash, true);
		}
		req = self.request(Object.assign({
			data    : {cmd : 'get'},
			options : {
				url: url,
				type: 'get',
				cache : true,
				dataType : 'binary',
				responseType : type,
				processData: false
			},
			notify : {
				type: 'file',
				cnt: 1,
				hideCnt: true
			},
			cancel : true
		}, requestOpts || {}))
		.fail(function() {
			dfd.reject();
		})
		.done(function(data) {
			dfd.resolve(data);
		});

		return dfd;
	};

	/**
	 * Gets the binary by url.
	 *
	 * @param      {Object}    opts      The options
	 * @param      {Function}  callback  The callback
	 * @param      {Object}    requestOpts The request options
	 * @return     arraybuffer|blob  The contents.
	 */
	this.getBinaryByUrl = function(opts, callback, requestOpts) {
		var self = this,
			dfd = jQuery.Deferred(),
			url, req;

		dfd.fail(function() {
			req && req.state() === 'pending' && req.reject();
		});

		req = self.request(Object.assign({
			data    : {cmd : 'get'},
			options : Object.assign({
				type: 'get',
				cache : true,
				dataType : 'binary',
				responseType : 'blob',
				processData: false
			}, opts)
		}, requestOpts || {}))
		.fail(function() {
			dfd.reject();
		})
		.done(function(data) {
			callback && callback(data);
			dfd.resolve(data);
		});

		return dfd;
	};

	/**
	 * Gets the mimetype.
	 *
	 * @param      {string}  name     The name
	 * @param      {string}  orgMime  The organization mime
	 * @return     {string}  The mimetype.
	 */
	this.getMimetype = function(name, orgMime) {
		var mime = orgMime,
			ext, m;
		m = (name + '').match(/\.([^.]+)$/);
		if (m && (ext = m[1])) {
			if (!extToMimeTable) {
				extToMimeTable = self.arrayFlip(self.mimeTypes);
			}
			if (!(mime = extToMimeTable[ext.toLowerCase()])) {
				mime = orgMime;
			}
		}
		return mime;
	};

	/**
	 * Supported check hash algorisms
	 * 
	 * @type Array
	 */
	self.hashCheckers = [];

	/**
	 * Closure of getContentsHashes()
	 */
	(function(self) {
		var hashLibs = {};

		if (window.Worker && window.ArrayBuffer) {
			// make fm.hashCheckers
			if (self.options.cdns.sparkmd5) {
				hashLibs.SparkMD5 = true;
				self.hashCheckers.push('md5');
			}
			if (self.options.cdns.jssha) {
				hashLibs.jsSHA = true;
				self.hashCheckers = self.hashCheckers.concat(['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128', 'shake256']);
			}
		}

		/**
		 * Gets the contents hashes.
		 *
		 * @param      String  target      target file.hash
		 * @param      Object  needHashes  need hash lib names
		 * @param      Object  requestOpts The request options
		 * @return     Object  hashes with lib name as key
		 */
		self.getContentsHashes = function(target, needHashes, hashOpts, requestOpts) {
			var dfd = jQuery.Deferred(),
				needs = self.arrayFlip(needHashes || ['md5'], true),
				libs = [],
				jobs = [],
				res = {},
				opts = hashOpts? hashOpts : {
					shake128len : 256,
					shake256len : 512
				},
				req;

			dfd.fail(function() {
				req && req.reject();
			});

			if (Object.keys(hashLibs).length) {
				req = self.getContents(target, 'arraybuffer', requestOpts).done(function(arrayBuffer) {
					if (needs.md5 && hashLibs.SparkMD5) {
						jobs.push((function() {
							var job = jQuery.Deferred();
							try {
								var wk = self.getWorker();
								job.fail(function() {
									wk && wk.terminate();
								});
								wk.onmessage = function(ans) {
									wk && wk.terminate();
									if (ans.data.hash) {
										var f;
										res.md5 = ans.data.hash;
										if (f = self.file(target)) {
											f.md5 = res.md5;
										}
									} else if (ans.data.error) {
										res.md5 = ans.data.error;
									}
									dfd.notify(res);
									job.resolve();
								};
								wk.onerror = function(e) {
									job.reject();
								};
								wk.postMessage({
									scripts: [self.options.cdns.sparkmd5, self.getWorkerUrl('calcfilehash.js')],
									data: { type: 'md5', bin: arrayBuffer }
								});
								dfd.fail(function() {
									job.reject();
								});
							} catch(e) {
								job.reject();
								delete hashLibs.SparkMD5;
							}
							return job;
						})());
					}
					if (hashLibs.jsSHA) {
						jQuery.each(['1', '224', '256', '384', '512', '3-224', '3-256', '3-384', '3-512', 'ke128', 'ke256'], function(i, v) {
							if (needs['sha' + v]) {
								jobs.push((function() {
									var job = jQuery.Deferred();
									try {
										var wk = self.getWorker();
										job.fail(function() {
											wk && wk.terminate();
										});
										wk.onmessage = function(ans) {
											wk && wk.terminate();
											if (ans.data.hash) {
												var f;
												res['sha' + v] = ans.data.hash;
												if (f = self.file(target)) {
													f['sha' + v] = res['sha' + v];
												}
											} else if (ans.data.error) {
												res['sha' + v] = ans.data.error;
											}
											dfd.notify(res);
											job.resolve();
										};
										wk.onerror = function(e) {
											job.reject();
										};
										wk.postMessage({
											scripts: [self.options.cdns.jssha, self.getWorkerUrl('calcfilehash.js')],
											data: { type: v, bin: arrayBuffer, hashOpts: opts }
										});
										dfd.fail(function() {
											job.reject();
										});
									} catch(e) {
										job.reject();
										delete hashLibs.jsSHA;
									}
									return job;
								})());
							}
						});
					}
					if (jobs.length) {
						jQuery.when.apply(null, jobs).always(function() {
							dfd.resolve(res);
						});
					} else {
						dfd.reject();
					}
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.reject();
			}

			return dfd;
		};
	})(this);

	/**
	 * Parse error value to display
	 *
	 * @param  Mixed  error
	 * @return Mixed  parsed error
	 */
	this.parseError = function(error) {
		var arg = error;
		if (jQuery.isPlainObject(arg)) {
			arg = arg.error;
		}
		return arg;
	};

	/**
	 * Alias for this.trigger('error', {error : 'message'})
	 *
	 * @param  String  error message
	 * @return elFinder
	 **/
	this.error = function() {
		var arg = arguments[0],
			opts = arguments[1] || null,
			err;
		if (arguments.length == 1 && typeof(arg) === 'function') {
			return self.bind('error', arg);
		} else {
			err = this.parseError(arg);
			return (err === true || !err)? this : self.trigger('error', {error: err, opts : opts});
		}
	};
	
	// create bind/trigger aliases for build-in events
	jQuery.each(events, function(i, name) {
		self[name] = function() {
			var arg = arguments[0];
			return arguments.length == 1 && typeof(arg) == 'function'
				? self.bind(name, arg)
				: self.trigger(name, jQuery.isPlainObject(arg) ? arg : {});
		};
	});

	// bind core event handlers
	this
		.enable(function() {
			if (!enabled && self.api && self.visible() && self.ui.overlay.is(':hidden') && ! node.children('.elfinder-dialog.' + self.res('class', 'editing') + ':visible').length) {
				enabled = true;
				document.activeElement && document.activeElement.blur();
				node.removeClass('elfinder-disabled');
			}
		})
		.disable(function() {
			prevEnabled = enabled;
			enabled = false;
			node.addClass('elfinder-disabled');
		})
		.open(function() {
			selected = [];
		})
		.select(function(e) {
			var cnt = 0,
				unselects = [];
			selected = jQuery.grep(e.data.selected || e.data.value|| [], function(hash) {
				if (unselects.length || (self.maxTargets && ++cnt > self.maxTargets)) {
					unselects.push(hash);
					return false;
				} else {
					return files[hash] ? true : false;
				}
			});
			if (unselects.length) {
				self.trigger('unselectfiles', {files: unselects, inselect: true});
				self.toast({mode: 'warning', msg: self.i18n(['errMaxTargets', self.maxTargets])});
			}
		})
		.error(function(e) { 
			var opts  = {
					cssClass  : 'elfinder-dialog-error',
					title     : self.i18n('error'),
					resizable : false,
					destroyOnClose : true,
					buttons   : {}
				},
				node = self.getUI(),
				cnt = node.children('.elfinder-dialog-error').length,
				last, counter;
			
			if (cnt < self.options.maxErrorDialogs) {
				opts.buttons[self.i18n(self.i18n('btnClose'))] = function() { jQuery(this).elfinderdialog('close'); };

				if (e.data.opts && jQuery.isPlainObject(e.data.opts)) {
					Object.assign(opts, e.data.opts);
				}

				self.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-error"></span>'+self.i18n(e.data.error), opts);
			} else {
				last = node.children('.elfinder-dialog-error:last').children('.ui-dialog-content:first');
				counter = last.children('.elfinder-error-counter');
				if (counter.length) {
					counter.data('cnt', parseInt(counter.data('cnt')) + 1).html(self.i18n(['moreErrors', counter.data('cnt')]));
				} else {
					counter = jQuery('<span class="elfinder-error-counter">'+ self.i18n(['moreErrors', 1]) +'</span>').data('cnt', 1);
					last.append('<br/>', counter);
				}
			}
		})
		.bind('tmb', function(e) {
			jQuery.each(e.data.images||[], function(hash, tmb) {
				if (files[hash]) {
					files[hash].tmb = tmb;
				}
			});
		})
		.bind('searchstart', function(e) {
			Object.assign(self.searchStatus, e.data);
			self.searchStatus.state = 1;
		})
		.bind('search', function(e) {
			self.searchStatus.state = 2;
		})
		.bind('searchend', function() {
			self.searchStatus.state = 0;
			self.searchStatus.ininc = false;
			self.searchStatus.mixed = false;
		})
		.bind('canMakeEmptyFile', function(e) {
			var data = e.data,
				obj = {};
			if (data && Array.isArray(data.mimes)) {
				if (!data.unshift) {
					obj = self.mimesCanMakeEmpty;
				}
				jQuery.each(data.mimes, function() {
					if (!obj[this]) {
						obj[this] = self.mimeTypes[this];
					}
				});
				if (data.unshift) {
					self.mimesCanMakeEmpty = Object.assign(obj, self.mimesCanMakeEmpty);
				}
			}
		})
		.bind('themechange', function() {
			requestAnimationFrame(function() {
				self.trigger('uiresize');
			});
		})
		;

	// We listen and emit a sound on delete according to option
	if (true === this.options.sound) {
		this.bind('playsound', function(e) {
			var play  = beeper.canPlayType && beeper.canPlayType('audio/wav; codecs="1"'),
				file = e.data && e.data.soundFile;

			play && file && play != '' && play != 'no' && jQuery(beeper).html('<source src="' + soundPath + file + '" type="audio/wav">')[0].play();
		});
	}

	// bind external event handlers
	jQuery.each(this.options.handlers, function(event, callback) {
		self.bind(event, callback);
	});

	/**
	 * History object. Store visited folders
	 *
	 * @type Object
	 **/
	this.history = new this.history(this);
	
	/**
	 * Root hashed
	 * 
	 * @type Object
	 */
	this.roots = {};
	
	/**
	 * leaf roots
	 * 
	 * @type Object
	 */
	this.leafRoots = {};
	
	this.volumeExpires = {};

	/**
	 * Loaded commands
	 *
	 * @type Object
	 **/
	this._commands = {};
	
	if (!Array.isArray(this.options.commands)) {
		this.options.commands = [];
	}
	
	if (jQuery.inArray('*', this.options.commands) !== -1) {
		this.options.commands = Object.keys(this.commands);
	}
	
	/**
	 * UI command map of cwd volume ( That volume driver option `uiCmdMap` )
	 *
	 * @type Object
	 **/
	this.commandMap = {};
	
	/**
	 * cwd options of each volume
	 * key: volumeid
	 * val: options object
	 * 
	 * @type Object
	 */
	this.volOptions = {};

	/**
	 * Has volOptions data
	 * 
	 * @type Boolean
	 */
	this.hasVolOptions = false;

	/**
	 * Hash of trash holders
	 * key: trash folder hash
	 * val: source volume hash
	 * 
	 * @type Object
	 */
	this.trashes = {};

	/**
	 * cwd options of each folder/file
	 * key: hash
	 * val: options object
	 *
	 * @type Object
	 */
	this.optionsByHashes = {};
	
	/**
	 * UI Auto Hide Functions
	 * Each auto hide function mast be call to `fm.trigger('uiautohide')` at end of process
	 *
	 * @type Array
	 **/
	this.uiAutoHide = [];
	
	// trigger `uiautohide`
	this.one('open', function() {
		if (self.uiAutoHide.length) {
			setTimeout(function() {
				self.trigger('uiautohide');
			}, 500);
		}
	});
	
	// Auto Hide Functions sequential processing start
	this.bind('uiautohide', function() {
		if (self.uiAutoHide.length) {
			self.uiAutoHide.shift()();
		}
	});

	if (this.options.width) {
		width = this.options.width;
	}
	
	if (this.options.height) {
		height = this.options.height;
	}
	
	if (this.options.heightBase) {
		heightBase = jQuery(this.options.heightBase);
	}
	
	if (this.options.soundPath) {
		soundPath = this.options.soundPath.replace(/\/+$/, '') + '/';
	} else {
		soundPath = this.baseUrl + soundPath;
	}
	
	if (this.options.parrotHeaders && Array.isArray(this.options.parrotHeaders) && this.options.parrotHeaders.length) {
		this.parrotHeaders = this.options.parrotHeaders;
		// check sessionStorage
		jQuery.each(this.parrotHeaders, function(i, h) {
			var v = self.sessionStorage('core-ph:' + h);
			if (v) {
				self.customHeaders[h] = v;
			}
		});
	} else {
		this.parrotHeaders = [];
	}

	self.one('opendone', function() {
		var tm;
		// attach events to document
		jQuery(document)
			// disable elfinder on click outside elfinder
			.on('click.'+namespace, function(e) { enabled && ! self.options.enableAlways && !jQuery(e.target).closest(node).length && self.disable(); })
			// exec shortcuts
			.on(keydown+' '+keypress+' '+keyup+' '+mousedown, execShortcut);
		
		// attach events to window
		self.options.useBrowserHistory && jQuery(window)
			.on('popstate.' + namespace, function(ev) {
				var state = ev.originalEvent.state || {},
					hasThash = state.thash? true : false,
					dialog = node.find('.elfinder-frontmost:visible'),
					input = node.find('.elfinder-navbar-dir,.elfinder-cwd-filename').find('input,textarea'),
					onOpen, toast;
				if (!hasThash) {
					state = { thash: self.cwd().hash };
					// scroll to elFinder node
					jQuery('html,body').animate({ scrollTop: node.offset().top });
				}
				if (dialog.length || input.length) {
					history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash);
					if (dialog.length) {
						if (!dialog.hasClass(self.res('class', 'preventback'))) {
							if (dialog.hasClass('elfinder-contextmenu')) {
								jQuery(document).trigger(jQuery.Event('keydown', { keyCode: jQuery.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
							} else if (dialog.hasClass('elfinder-dialog')) {
								dialog.elfinderdialog('close');
							} else {
								dialog.trigger('close');
							}
						}
					} else {
						input.trigger(jQuery.Event('keydown', { keyCode: jQuery.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
					}
				} else {
					if (hasThash) {
						!jQuery.isEmptyObject(self.files()) && self.request({
							data   : {cmd  : 'open', target : state.thash, onhistory : 1},
							notify : {type : 'open', cnt : 1, hideCnt : true},
							syncOnFail : true
						});
					} else {
						onOpen = function() {
							toast.trigger('click');
						};
						self.one('open', onOpen, true);
						toast = self.toast({
							msg: self.i18n('pressAgainToExit'),
							onHidden: function() {
								self.unbind('open', onOpen);
								history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash);
							}
						});
					}
				}
			});
		
		jQuery(window).on('resize.' + namespace, function(e){
			if (e.target === this) {
				tm && cancelAnimationFrame(tm);
				tm = requestAnimationFrame(function() {
					var prv = node.data('resizeSize') || {w: 0, h: 0},
						size = {w: Math.round(node.width()), h: Math.round(node.height())};
					node.data('resizeSize', size);
					if (size.w !== prv.w || size.h !== prv.h) {
						node.trigger('resize');
						self.trigger('resize', {width : size.w, height : size.h});
					}
				});
			}
		})
		.on('beforeunload.' + namespace,function(e){
			var msg, cnt;
			if (!self.pauseUnloadCheck()) {
				if (node.is(':visible')) {
					if (self.ui.notify.children().length && jQuery.inArray('hasNotifyDialog', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('ntfsmth');
					} else if (node.find('.'+self.res('class', 'editing')).length && jQuery.inArray('editingFile', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('editingFile');
					} else if ((cnt = Object.keys(self.selected()).length) && jQuery.inArray('hasSelectedItem', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('hasSelected', ''+cnt);
					} else if ((cnt = Object.keys(self.clipboard()).length) && jQuery.inArray('hasClipboardData', self.options.windowCloseConfirm) !== -1) {
						msg = self.i18n('hasClipboard', ''+cnt);
					}
					if (msg) {
						e.returnValue = msg;
						return msg;
					}
				}
				self.trigger('unload');
			}
		});

		// bind window onmessage for CORS
		jQuery(window).on('message.' + namespace, function(e){
			var res = e.originalEvent || null,
				obj, data;
			if (res && (self.convAbsUrl(self.options.url).indexOf(res.origin) === 0 || self.convAbsUrl(self.uploadURL).indexOf(res.origin) === 0)) {
				try {
					obj = JSON.parse(res.data);
					data = obj.data || null;
					if (data) {
						if (data.error) {
							if (obj.bind) {
								self.trigger(obj.bind+'fail', data);
							}
							self.error(data.error);
						} else {
							data.warning && self.error(data.warning);
							self.updateCache(data);
							data.removed && data.removed.length && self.remove(data);
							data.added   && data.added.length   && self.add(data);
							data.changed && data.changed.length && self.change(data);
							if (obj.bind) {
								self.trigger(obj.bind, data);
								self.trigger(obj.bind+'done');
							}
							data.sync && self.sync();
						}
					}
				} catch (e) {
					self.sync();
				}
			}
		});

		// elFinder enable always
		if (self.options.enableAlways) {
			jQuery(window).on('focus.' + namespace, function(e){
				(e.target === this) && self.enable();
			});
			if (inFrame) {
				jQuery(window.top).on('focus.' + namespace, function() {
					if (self.enable() && (! parentIframe || parentIframe.is(':visible'))) {
						requestAnimationFrame(function() {
							jQuery(window).trigger('focus');
						});
					}
				});
			}
		} else if (inFrame) {
			jQuery(window).on('blur.' + namespace, function(e){
				enabled && e.target === this && self.disable();
			});
		}

		// return focus to the window on click (elFInder in the frame)
		if (inFrame) {
			node.on('click', function(e) {
				jQuery(window).trigger('focus');
			});
		}
		
		// elFinder to enable by mouse over
		if (self.options.enableByMouseOver) {
			node.on('mouseenter touchstart', function(e) {
				(inFrame) && jQuery(window).trigger('focus');
				! self.enabled() && self.enable();
			});
		}

		// When the browser tab turn to foreground/background
		jQuery(window).on('visibilitychange.' + namespace, function(e) {
			var background = document.hidden || document.webkitHidden || document.msHidden;
			// AutoSync turn On/Off
			if (self.options.syncStart) {
				self.autoSync(background? 'stop' : void(0));
			}
		});
	});

	// store instance in node
	node[0].elfinder = this;

	// auto load language file
	dfrdsBeforeBootup.push((function() {
		var lang   = self.lang,
			langJs = self.i18nBaseUrl + 'elfinder.' + lang + '.js',
			dfd    = jQuery.Deferred().done(function() {
				if (self.i18[lang]) {
					self.lang = lang;
				}
				self.trigger('i18load');
				i18n = self.lang === 'en' 
					? self.i18['en'] 
					: jQuery.extend(true, {}, self.i18['en'], self.i18[self.lang]);
			});
		
		if (!self.i18[lang]) {
			self.lang = 'en';
			if (self.hasRequire) {
				require([langJs], function() {
					dfd.resolve();
				}, function() {
					dfd.resolve();
				});
			} else {
				self.loadScript([langJs], function() {
					dfd.resolve();
				}, {
					loadType: 'tag',
					error : function() {
						dfd.resolve();
					}
				});
			}
		} else {
			dfd.resolve();
		}
		return dfd;
	})());
	
	// elFinder boot up function
	bootUp = function() {
		var columnNames;

		/**
		 * i18 messages
		 *
		 * @type Object
		 **/
		self.messages = i18n.messages;
		
		// check jquery ui
		if (!(jQuery.fn.selectable && jQuery.fn.draggable && jQuery.fn.droppable && jQuery.fn.resizable && jQuery.fn.button && jQuery.fn.slider)) {
			return alert(self.i18n('errJqui'));
		}
		
		// check node
		if (!node.length) {
			return alert(self.i18n('errNode'));
		}
		// check connector url
		if (!self.options.url) {
			return alert(self.i18n('errURL'));
		}
		
		// column key/name map for fm.getColumnName()
		columnNames = Object.assign({
			name : self.i18n('name'),
			perm : self.i18n('perms'),
			date : self.i18n('modify'),
			size : self.i18n('size'),
			kind : self.i18n('kind'),
			modestr : self.i18n('mode'),
			modeoct : self.i18n('mode'),
			modeboth : self.i18n('mode')
		}, self.options.uiOptions.cwd.listView.columnsCustomName);

		/**
		 * Gets the column name of cwd list view
		 *
		 * @param      String  key     The key
		 * @return     String  The column name.
		 */
		self.getColumnName = function(key) {
			var res = columnNames[key] || self.i18n(key);
			return typeof res === 'function'? res() : res;
		};

		/**
		 * Interface direction
		 *
		 * @type String
		 * @default "ltr"
		 **/
		self.direction = i18n.direction;
		
		/**
		 * Date/time format
		 *
		 * @type String
		 * @default "m.d.Y"
		 **/
		self.dateFormat = self.options.dateFormat || i18n.dateFormat;
		
		/**
		 * Date format like "Yesterday 10:20:12"
		 *
		 * @type String
		 * @default "{day} {time}"
		 **/
		self.fancyFormat = self.options.fancyDateFormat || i18n.fancyDateFormat;
		
		/**
		 * Date format for if upload file has not original unique name
		 * e.g. Clipboard image data, Image data taken with iOS
		 *
		 * @type String
		 * @default "ymd-His"
		 **/
		self.nonameDateFormat = (self.options.nonameDateFormat || i18n.nonameDateFormat).replace(/[\/\\]/g, '_');

		/**
		 * Css classes 
		 *
		 * @type String
		 **/
		self.cssClass = 'ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-'
				+(self.direction == 'rtl' ? 'rtl' : 'ltr')
				+(self.UA.Touch? (' elfinder-touch' + (self.options.resizable ? ' touch-punch' : '')) : '')
				+(self.UA.Mobile? ' elfinder-mobile' : '')
				+(self.UA.iOS? ' elfinder-ios' : '')
				+' '+self.options.cssClass;

		// prepare node
		node.addClass(self.cssClass)
			.on(mousedown, function() {
				!enabled && self.enable();
			});

		// draggable closure
		(function() {
			var ltr, wzRect, wzBottom, wzBottom2, nodeStyle,
				keyEvt = keydown + 'draggable' + ' keyup.' + namespace + 'draggable';
			
			/**
			 * Base draggable options
			 *
			 * @type Object
			 **/
			self.draggable = {
				appendTo   : node,
				addClasses : false,
				distance   : 4,
				revert     : true,
				refreshPositions : false,
				cursor     : 'crosshair',
				cursorAt   : {left : 50, top : 47},
				scroll     : false,
				start      : function(e, ui) {
					var helper   = ui.helper,
						targets  = jQuery.grep(helper.data('files')||[], function(h) {
							if (h) {
								remember[h] = true;
								return true;
							}
							return false;
						}),
						locked   = false,
						cnt, h;
					
					// fix node size
					nodeStyle = node.attr('style');
					node.width(node.width()).height(node.height());
					
					// set var for drag()
					ltr = (self.direction === 'ltr');
					wzRect = self.getUI('workzone').data('rectangle');
					wzBottom = wzRect.top + wzRect.height;
					wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true);
					
					self.draggingUiHelper = helper;
					cnt = targets.length;
					while (cnt--) {
						h = targets[cnt];
						if (files[h].locked) {
							locked = true;
							helper.data('locked', true);
							break;
						}
					}
					!locked && self.trigger('lockfiles', {files : targets});
		
					helper.data('autoScrTm', setInterval(function() {
						if (helper.data('autoScr')) {
							self.autoScroll[helper.data('autoScr')](helper.data('autoScrVal'));
						}
					}, 50));
				},
				drag       : function(e, ui) {
					var helper = ui.helper,
						autoScr, autoUp, bottom;
					
					if ((autoUp = wzRect.top > e.pageY) || wzBottom2 < e.pageY) {
						if (wzRect.cwdEdge > e.pageX) {
							autoScr = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down');
						} else {
							autoScr = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down');
						}
						if (!autoUp) {
							if (autoScr.substr(0, 3) === 'cwd') {
								if (wzBottom < e.pageY) {
									bottom = wzBottom;
								} else {
									autoScr = null;
								}
							} else {
								bottom = wzBottom2;
							}
						}
						if (autoScr) {
							helper.data('autoScr', autoScr);
							helper.data('autoScrVal', Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - bottom), 1.3));
						}
					}
					if (! autoScr) {
						if (helper.data('autoScr')) {
							helper.data('refreshPositions', 1).data('autoScr', null);
						}
					}
					if (helper.data('refreshPositions') && jQuery(this).elfUiWidgetInstance('draggable')) {
						if (helper.data('refreshPositions') > 0) {
							jQuery(this).draggable('option', { refreshPositions : true, elfRefresh : true });
							helper.data('refreshPositions', -1);
						} else {
							jQuery(this).draggable('option', { refreshPositions : false, elfRefresh : false });
							helper.data('refreshPositions', null);
						}
					}
				},
				stop       : function(e, ui) {
					var helper = ui.helper,
						files;
					
					jQuery(document).off(keyEvt);
					jQuery(this).elfUiWidgetInstance('draggable') && jQuery(this).draggable('option', { refreshPositions : false });
					self.draggingUiHelper = null;
					self.trigger('focus').trigger('dragstop');
					if (! helper.data('droped')) {
						files = jQuery.grep(helper.data('files')||[], function(h) { return h? true : false ;});
						self.trigger('unlockfiles', {files : files});
						self.trigger('selectfiles', {files : self.selected()});
					}
					self.enable();
					
					// restore node style
					node.attr('style', nodeStyle);
					
					helper.data('autoScrTm') && clearInterval(helper.data('autoScrTm'));
				},
				helper     : function(e, ui) {
					var element = this.id ? jQuery(this) : jQuery(this).parents('[id]:first'),
						helper  = jQuery('<div class="elfinder-drag-helper"><span class="elfinder-drag-helper-icon-status"></span></div>'),
						icon    = function(f) {
							var mime = f.mime, i, tmb = self.tmb(f);
							i = '<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+self.mime2class(mime)+' ui-corner-all"></div>';
							if (tmb) {
								i = jQuery(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
							} else if (f.icon) {
								i = jQuery(i).css(self.getIconStyle(f, true)).get(0).outerHTML;
							}
							if (f.csscls) {
								i = '<div class="'+f.csscls+'">' + i + '</div>';
							}
							return i;
						},
						hashes, l, ctr;
					
					self.draggingUiHelper && self.draggingUiHelper.stop(true, true);
					
					self.trigger('dragstart', {target : element[0], originalEvent : e}, true);
					
					hashes = element.hasClass(self.res('class', 'cwdfile')) 
						? self.selected() 
						: [self.navId2Hash(element.attr('id'))];
					
					helper.append(icon(files[hashes[0]])).data('files', hashes).data('locked', false).data('droped', false).data('namespace', namespace).data('dropover', 0);
		
					if ((l = hashes.length) > 1) {
						helper.append(icon(files[hashes[l-1]]) + '<span class="elfinder-drag-num">'+l+'</span>');
					}
					
					jQuery(document).on(keyEvt, function(e){
						if (self._commands.copy) {
							var chk = (e.shiftKey||e.ctrlKey||e.metaKey);
							if (ctr !== chk) {
								ctr = chk;
								if (helper.is(':visible') && helper.data('dropover') && ! helper.data('droped')) {
									helper.toggleClass('elfinder-drag-helper-plus', helper.data('locked')? true : ctr);
									self.trigger(ctr? 'unlockfiles' : 'lockfiles', {files : hashes, helper: helper});
								}
							}
						}
					});
					
					return helper;
				}
			};
		})();

		// in getFileCallback set - change default actions on double click/enter/ctrl+enter
		if (self.commands.getfile) {
			if (typeof(self.options.getFileCallback) == 'function') {
				self.bind('dblclick', function(e) {
					e.preventDefault();
					self.exec('getfile').fail(function() {
						self.exec('open', e.data && e.data.file? [ e.data.file ]: void(0));
					});
				});
				self.shortcut({
					pattern     : 'enter',
					description : self.i18n('cmdgetfile'),
					callback    : function() { self.exec('getfile').fail(function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }); }
				})
				.shortcut({
					pattern     : 'ctrl+enter',
					description : self.i18n(self.OS == 'mac' ? 'cmdrename' : 'cmdopen'),
					callback    : function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }
				});
			} else {
				self.options.getFileCallback = null;
			}
		}

		// load commands
		jQuery.each(self.commands, function(name, cmd) {
			var proto = Object.assign({}, cmd.prototype),
				extendsCmd, opts;
			if (jQuery.isFunction(cmd) && !self._commands[name] && (cmd.prototype.forceLoad || jQuery.inArray(name, self.options.commands) !== -1)) {
				extendsCmd = cmd.prototype.extendsCmd || '';
				if (extendsCmd) {
					if (jQuery.isFunction(self.commands[extendsCmd])) {
						cmd.prototype = Object.assign({}, base, new self.commands[extendsCmd](), cmd.prototype);
					} else {
						return true;
					}
				} else {
					cmd.prototype = Object.assign({}, base, cmd.prototype);
				}
				self._commands[name] = new cmd();
				cmd.prototype = proto;
				opts = self.options.commandsOptions[name] || {};
				if (extendsCmd && self.options.commandsOptions[extendsCmd]) {
					opts = jQuery.extend(true, {}, self.options.commandsOptions[extendsCmd], opts);
				}
				self._commands[name].setup(name, opts);
				// setup linked commands
				if (self._commands[name].linkedCmds.length) {
					jQuery.each(self._commands[name].linkedCmds, function(i, n) {
						var lcmd = self.commands[n];
						if (jQuery.isFunction(lcmd) && !self._commands[n]) {
							lcmd.prototype = base;
							self._commands[n] = new lcmd();
							self._commands[n].setup(n, self.options.commandsOptions[n]||{});
						}
					});
				}
			}
		});

		/**
		 * UI nodes
		 *
		 * @type Object
		 **/
		self.ui = {
			// container for nav panel and current folder container
			workzone : jQuery('<div></div>').appendTo(node).elfinderworkzone(self),
			// contaainer for folders tree / places
			navbar : jQuery('<div></div>').appendTo(node).elfindernavbar(self, self.options.uiOptions.navbar || {}),
			// container for for preview etc at below the navbar
			navdock : jQuery('<div></div>').appendTo(node).elfindernavdock(self, self.options.uiOptions.navdock || {}),
			// contextmenu
			contextmenu : jQuery('<div></div>').appendTo(node).elfindercontextmenu(self),
			// overlay
			overlay : jQuery('<div></div>').appendTo(node).elfinderoverlay({
				show : function() { self.disable(); },
				hide : function() { prevEnabled && self.enable(); }
			}),
			// current folder container
			cwd : jQuery('<div></div>').appendTo(node).elfindercwd(self, self.options.uiOptions.cwd || {}),
			// notification dialog window
			notify : self.dialog('', {
				cssClass      : 'elfinder-dialog-notify' + (self.options.notifyDialog.canClose? '' : ' elfinder-titlebar-button-hide'),
				position      : self.options.notifyDialog.position,
				absolute      : true,
				resizable     : false,
				autoOpen      : false,
				allowMinimize : true,
				closeOnEscape : self.options.notifyDialog.canClose? true : false,
				title         : '&nbsp;',
				width         : self.options.notifyDialog.width? parseInt(self.options.notifyDialog.width) : null,
				minHeight     : null,
				minimize      : function() { self.ui.notify.trigger('minimize'); }
			}),
			statusbar : jQuery('<div class="ui-widget-header ui-helper-clearfix ui-corner-bottom elfinder-statusbar"></div>').hide().appendTo(node),
			toast : jQuery('<div class="elfinder-toast"></div>').appendTo(node),
			bottomtray : jQuery('<div class="elfinder-bottomtray">').appendTo(node),
			progressbar : jQuery('<div class="elfinder-ui-progressbar">').appendTo(node)
		};

		self.trigger('uiready');

		// load required ui
		jQuery.each(self.options.ui || [], function(i, ui) {
			var name = 'elfinder'+ui,
				opts = self.options.uiOptions[ui] || {};
	
			if (!self.ui[ui] && jQuery.fn[name]) {
				// regist to self.ui before make instance
				self.ui[ui] = jQuery('<'+(opts.tag || 'div')+'/>').appendTo(node);
				self.ui[ui][name](self, opts);
			}
		});

		self.ui.progressbar.appendTo(self.ui.workzone);
		self.ui.notify.prev('.ui-dialog-titlebar').append('<div class="elfinder-ui-progressbar"></div>');

		// update size	
		self.resize(width, height);
		
		// make node resizable
		if (self.options.resizable) {
			node.resizable({
				resize    : function(e, ui) {
					self.resize(ui.size.width, ui.size.height);
				},
				handles   : 'se',
				minWidth  : 300,
				minHeight : 200
			});
			if (self.UA.Touch) {
				node.addClass('touch-punch');
			}
		}

		(function() {
			var navbar = self.getUI('navbar'),
				cwd    = self.getUI('cwd').parent();
			
			self.autoScroll = {
				navbarUp   : function(v) {
					navbar.scrollTop(Math.max(0, navbar.scrollTop() - v));
				},
				navbarDown : function(v) {
					navbar.scrollTop(navbar.scrollTop() + v);
				},
				cwdUp     : function(v) {
					cwd.scrollTop(Math.max(0, cwd.scrollTop() - v));
				},
				cwdDown   : function(v) {
					cwd.scrollTop(cwd.scrollTop() + v);
				}
			};
		})();

		// Swipe on the touch devices to show/hide of toolbar or navbar
		if (self.UA.Touch) {
			(function() {
				var lastX, lastY, nodeOffset, nodeWidth, nodeTop, navbarW, toolbarH,
					navbar = self.getUI('navbar'),
					toolbar = self.getUI('toolbar'),
					moveEv = 'touchmove.stopscroll',
					moveTm,
					moveUpOn = function(e) {
						var touches = e.originalEvent.touches || [{}],
							y = touches[0].pageY || null;
						if (!lastY || y < lastY) {
							e.preventDefault();
							moveTm && clearTimeout(moveTm);
						}
					},
					moveDownOn = function(e) {
						e.preventDefault();
						moveTm && clearTimeout(moveTm);
					},
					moveOff = function() {
						moveTm = setTimeout(function() {
							node.off(moveEv);
						}, 100);
					},
					handleW, handleH = 50;

				navbar = navbar.children().length? navbar : null;
				toolbar = toolbar.length? toolbar : null;
				node.on('touchstart touchmove touchend', function(e) {
					if (e.type === 'touchend') {
						lastX = false;
						lastY = false;
						moveOff();
						return;
					}
					
					var touches = e.originalEvent.touches || [{}],
						x = touches[0].pageX || null,
						y = touches[0].pageY || null,
						ltr = (self.direction === 'ltr'),
						navbarMode, treeWidth, swipeX, moveX, toolbarT, mode;
					
					if (x === null || y === null || (e.type === 'touchstart' && touches.length > 1)) {
						return;
					}
					
					if (e.type === 'touchstart') {
						nodeOffset = node.offset();
						nodeWidth = node.width();
						if (navbar) {
							lastX = false;
							if (navbar.is(':hidden')) {
								if (! handleW) {
									handleW = Math.max(50, nodeWidth / 10);
								}
								if ((ltr? (x - nodeOffset.left) : (nodeWidth + nodeOffset.left - x)) < handleW) {
									lastX = x;
								}
							} else if (! e.originalEvent._preventSwipeX) {
								navbarW = navbar.width();
								if (ltr) {
									swipeX = (x < nodeOffset.left + navbarW);
								} else {
									swipeX = (x > nodeOffset.left + nodeWidth - navbarW);
								}
								if (swipeX) {
									handleW = Math.max(50, nodeWidth / 10);
									lastX = x;
								} else {
									lastX = false;
								}
							}
						}
						if (toolbar) {
							lastY = false;
							if (! e.originalEvent._preventSwipeY) {
								toolbarH = toolbar.height();
								nodeTop = nodeOffset.top;
								if (y - nodeTop < (toolbar.is(':hidden')? handleH : (toolbarH + 30))) {
									lastY = y;
									node.on(moveEv, toolbar.is(':hidden')? moveDownOn: moveUpOn);
								}
							}
						}
					} else {
						if (navbar && lastX !== false) {
							navbarMode = (ltr? (lastX > x) : (lastX < x))? 'navhide' : 'navshow';
							moveX = Math.abs(lastX - x);
							if (navbarMode === 'navhide' && moveX > navbarW * 0.6
								|| (moveX > (navbarMode === 'navhide'? navbarW / 3 : 45)
									&& (navbarMode === 'navshow'
										|| (ltr? x < nodeOffset.left + 20 : x > nodeOffset.left + nodeWidth - 20)
									))
							) {
								self.getUI('navbar').trigger(navbarMode, {handleW: handleW});
								lastX = false;
							}
						}
						if (toolbar && lastY !== false ) {
							toolbarT = toolbar.offset().top;
							if (Math.abs(lastY - y) > Math.min(45, toolbarH / 3)) {
								mode = (lastY > y)? 'slideUp' : 'slideDown';
								if (mode === 'slideDown' || toolbarT + 20 > y) {
									if (toolbar.is(mode === 'slideDown' ? ':hidden' : ':visible')) {
										toolbar.stop(true, true).trigger('toggle', {duration: 100, handleH: handleH});
									}
									lastY = false;
								}
							}
						}
					}
				});
			})();
		}

		if (self.dragUpload) {
			// add event listener for HTML5 DnD upload
			(function() {
				var isin = function(e) {
					return (e.target.nodeName !== 'TEXTAREA' && e.target.nodeName !== 'INPUT' && jQuery(e.target).closest('div.ui-dialog-content').length === 0);
				},
				ent       = 'native-drag-enter',
				disable   = 'native-drag-disable',
				c         = 'class',
				navdir    = self.res(c, 'navdir'),
				droppable = self.res(c, 'droppable'),
				dropover  = self.res(c, 'adroppable'),
				arrow     = self.res(c, 'navarrow'),
				clDropActive = self.res(c, 'adroppable'),
				wz        = self.getUI('workzone'),
				ltr       = (self.direction === 'ltr'),
				clearTm   = function() {
					autoScrTm && cancelAnimationFrame(autoScrTm);
					autoScrTm = null;
				},
				wzRect, autoScrFn, autoScrTm;
				
				node.on('dragenter', function(e) {
					clearTm();
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
						wzRect = wz.data('rectangle');
					}
				})
				.on('dragleave', function(e) {
					clearTm();
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
					}
				})
				.on('dragover', function(e) {
					var autoUp;
					if (isin(e)) {
						e.preventDefault();
						e.stopPropagation();
						e.originalEvent.dataTransfer.dropEffect = 'none';
						if (! autoScrTm) {
							autoScrTm = requestAnimationFrame(function() {
								var wzBottom = wzRect.top + wzRect.height,
									wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true),
									fn;
								if ((autoUp = e.pageY < wzRect.top) || e.pageY > wzBottom2 ) {
									if (wzRect.cwdEdge > e.pageX) {
										fn = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down');
									} else {
										fn = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down');
									}
									if (!autoUp) {
										if (fn.substr(0, 3) === 'cwd') {
											if (wzBottom < e.pageY) {
												wzBottom2 = wzBottom;
											} else {
												fn = '';
											}
										}
									}
									fn && self.autoScroll[fn](Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - wzBottom2), 1.3));
								}
								autoScrTm = null;
							});
						}
					} else {
						clearTm();
					}
				})
				.on('drop', function(e) {
					clearTm();
					if (isin(e)) {
						e.stopPropagation();
						e.preventDefault();
					}
				});
				
				node.on('dragenter', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget),
							id   = e.currentTarget.id || null,
							cwd  = null,
							elfFrom;
						if (!id) { // target is cwd
							cwd = self.cwd();
							$elm.data(disable, false);
							try {
								jQuery.each(e.originalEvent.dataTransfer.types, function(i, v){
									if (v.substr(0, 13) === 'elfinderfrom:') {
										elfFrom = v.substr(13).toLowerCase();
									}
								});
							} catch(e) {}
						}
						if (!cwd || (cwd.write && (!elfFrom || elfFrom !== (window.location.href + cwd.hash).toLowerCase()))) {
							e.preventDefault();
							e.stopPropagation();
							$elm.data(ent, true);
							$elm.addClass(clDropActive);
						} else {
							$elm.data(disable, true);
						}
					}
				})
				.on('dragleave', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget);
						e.preventDefault();
						e.stopPropagation();
						if ($elm.data(ent)) {
							$elm.data(ent, false);
						} else {
							$elm.removeClass(clDropActive);
						}
					}
				})
				.on('dragover', '.native-droppable', function(e){
					if (e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget);
						e.preventDefault();
						e.stopPropagation();
						e.originalEvent.dataTransfer.dropEffect = $elm.data(disable)? 'none' : 'copy';
						$elm.data(ent, false);
					}
				})
				.on('drop', '.native-droppable', function(e){
					if (e.originalEvent && e.originalEvent.dataTransfer) {
						var $elm = jQuery(e.currentTarget),
							id;
						e.preventDefault();
						e.stopPropagation();
						$elm.removeClass(clDropActive);
						if (e.currentTarget.id) {
							id = $elm.hasClass(navdir)? self.navId2Hash(e.currentTarget.id) : self.cwdId2Hash(e.currentTarget.id);
						} else {
							id = self.cwd().hash;
						}
						e.originalEvent._target = id;
						self.exec('upload', {dropEvt: e.originalEvent, target: id}, void 0, id);
					}
				});
			})();
		}

		// trigger event cssloaded if cssAutoLoad disabled
		if (self.cssloaded === false) {
			self.cssloaded = true;
			self.trigger('cssloaded');
		}

		// calculate elFinder node z-index
		self.zIndexCalc();

		// send initial request and start to pray >_<
		self.trigger('init')
			.request({
				data        : {cmd : 'open', target : self.startDir(), init : 1, tree : 1}, 
				preventDone : true,
				notify      : {type : 'open', cnt : 1, hideCnt : true},
				freeze      : true
			})
			.fail(function() {
				self.trigger('fail').disable().lastDir('');
				listeners = {};
				shortcuts = {};
				jQuery(document).add(node).off('.'+namespace);
				self.trigger = function() { };
			})
			.done(function(data) {
				var trashDisable = function(th) {
						var src = self.file(self.trashes[th]),
							d = self.options.debug,
							error;
						
						if (src && src.volumeid) {
							delete self.volOptions[src.volumeid].trashHash;
						}
						self.trashes[th] = false;
						self.debug('backend-error', 'Trash hash "'+th+'" was not found or not writable.');
					},
					toChkTh = {};
				
				// regist rawStringDecoder
				if (self.options.rawStringDecoder) {
					self.registRawStringDecoder(self.options.rawStringDecoder);
				}

				// re-calculate elFinder node z-index
				self.zIndexCalc();
				
				self.load().debug('api', self.api);
				// update ui's size after init
				node.trigger('resize');
				// initial open
				open(data);
				self.trigger('open', data, false);
				self.trigger('opendone');
				
				if (inFrame && self.options.enableAlways) {
					jQuery(window).trigger('focus');
				}
				
				// check self.trashes
				jQuery.each(self.trashes, function(th) {
					var dir = self.file(th),
						src;
					if (! dir) {
						toChkTh[th] = true;
					} else if (dir.mime !== 'directory' || ! dir.write) {
						trashDisable(th);
					}
				});
				if (Object.keys(toChkTh).length) {
					self.request({
						data : {cmd : 'info', targets : Object.keys(toChkTh)},
						preventDefault : true
					}).done(function(data) {
						if (data && data.files) {
							jQuery.each(data.files, function(i, dir) {
								if (dir.mime === 'directory' && dir.write) {
									delete toChkTh[dir.hash];
								}
							});
						}
					}).always(function() {
						jQuery.each(toChkTh, trashDisable);
					});
				}
				// to enable / disable
				self[self.options.enableAlways? 'enable' : 'disable']();
			});
		
		// self.timeEnd('load');
		// End of bootUp()
	};
	
	// call bootCallback function with elFinder instance, extraObject - { dfrdsBeforeBootup: dfrdsBeforeBootup }
	if (bootCallback && typeof bootCallback === 'function') {
		self.bootCallback = bootCallback;
		bootCallback.call(node.get(0), self, { dfrdsBeforeBootup: dfrdsBeforeBootup });
	}
	
	// call dfrdsBeforeBootup functions then boot up elFinder
	jQuery.when.apply(null, dfrdsBeforeBootup).done(function() {
		bootUp();
	}).fail(function(error) {
		self.error(error);
	});
};

//register elFinder to global scope
if (typeof toGlobal === 'undefined' || toGlobal) {
	window.elFinder = elFinder;
}

/**
 * Prototype
 * 
 * @type  Object
 */
elFinder.prototype = {
	
	uniqueid : 0,
	
	res : function(type, id) {
		return this.resources[type] && this.resources[type][id];
	}, 

	/**
	 * User os. Required to bind native shortcuts for open/rename
	 *
	 * @type String
	 **/
	OS : navigator.userAgent.indexOf('Mac') !== -1 ? 'mac' : navigator.userAgent.indexOf('Win') !== -1  ? 'win' : 'other',
	
	/**
	 * User browser UA.
	 * jQuery.browser: version deprecated: 1.3, removed: 1.9
	 *
	 * @type Object
	 **/
	UA : (function(){
		var self = this,
			webkit = !document.unqueID && !window.opera && !window.sidebar && 'localStorage' in window && 'WebkitAppearance' in document.documentElement.style,
			chrome = webkit && window.chrome,
			/*setRotated = function() {
				var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0;
				if (a === -90) {
					a = 270;
				}
				UA.Angle = a;
				UA.Rotated = a % 180 === 0? false : true;
			},*/
			UA = {
				// Browser IE <= IE 6
				ltIE6   : typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined",
				// Browser IE <= IE 7
				ltIE7   : typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined",
				// Browser IE <= IE 8
				ltIE8   : typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined",
				// Browser IE <= IE 9
				ltIE9  : document.uniqueID && document.documentMode <= 9,
				// Browser IE <= IE 10
				ltIE10  : document.uniqueID && document.documentMode <= 10,
				// Browser IE >= IE 11
				gtIE11  : document.uniqueID && document.documentMode >= 11,
				IE      : document.uniqueID,
				Firefox : window.sidebar,
				Opera   : window.opera,
				Webkit  : webkit,
				Chrome  : chrome,
				Edge    : (chrome && window.msCredentials)? true : false,
				Safari  : webkit && !window.chrome,
				Mobile  : typeof window.orientation != "undefined",
				Touch   : typeof window.ontouchstart != "undefined",
				iOS     : navigator.platform.match(/^iP(?:[ao]d|hone)/),
				Mac     : navigator.platform.match(/^Mac/),
				Fullscreen : (typeof (document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen) !== 'undefined'),
				Angle   : 0,
				Rotated : false,
				CSS : (function() {
					var aStyle = document.createElement('a').style,
						pStyle = document.createElement('p').style,
						css;
					css = 'position:sticky;position:-webkit-sticky;';
					css += 'width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;';
					aStyle.cssText = css;
					return {
						positionSticky : aStyle.position.indexOf('sticky')!==-1,
						widthMaxContent : aStyle.width.indexOf('max-content')!==-1,
						flex : typeof pStyle.flex !== 'undefined'
					};
				})()
			};
			return UA;
	})(),
	
	/**
	 * Is cookie enabled
	 * 
	 * @type Boolean
	 */
	cookieEnabled : window.navigator.cookieEnabled,

	/**
	 * Has RequireJS?
	 * 
	 * @type Boolean
	 */
	hasRequire : (typeof define === 'function' && define.amd),
	
	/**
	 * Current request command
	 * 
	 * @type  String
	 */
	currentReqCmd : '',
	
	/**
	 * Current keyboard state
	 * 
	 * @type  Object
	 */
	keyState : {},
	
	/**
	 * Internationalization object
	 * 
	 * @type  Object
	 */
	i18 : {
		en : {
			translator      : '',
			language        : 'English',
			direction       : 'ltr',
			dateFormat      : 'd.m.Y H:i',
			fancyDateFormat : '$1 H:i',
			nonameDateFormat : 'ymd-His',
			messages        : {}
		},
		months : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
		monthsShort : ['msJan', 'msFeb', 'msMar', 'msApr', 'msMay', 'msJun', 'msJul', 'msAug', 'msSep', 'msOct', 'msNov', 'msDec'],

		days : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		daysShort : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
	},
	
	/**
	 * File mimetype to kind mapping
	 * 
	 * @type  Object
	 */
	kinds : 	{
			'unknown'                       : 'Unknown',
			'directory'                     : 'Folder',
			'group'                         : 'Selects',
			'symlink'                       : 'Alias',
			'symlink-broken'                : 'AliasBroken',
			'application/x-empty'           : 'TextPlain',
			'application/postscript'        : 'Postscript',
			'application/vnd.ms-office'     : 'MsOffice',
			'application/msword'            : 'MsWord',
			'application/vnd.ms-word'       : 'MsWord',
			'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : 'MsWord',
			'application/vnd.ms-word.document.macroEnabled.12'                        : 'MsWord',
			'application/vnd.openxmlformats-officedocument.wordprocessingml.template' : 'MsWord',
			'application/vnd.ms-word.template.macroEnabled.12'                        : 'MsWord',
			'application/vnd.ms-excel'      : 'MsExcel',
			'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'       : 'MsExcel',
			'application/vnd.ms-excel.sheet.macroEnabled.12'                          : 'MsExcel',
			'application/vnd.openxmlformats-officedocument.spreadsheetml.template'    : 'MsExcel',
			'application/vnd.ms-excel.template.macroEnabled.12'                       : 'MsExcel',
			'application/vnd.ms-excel.sheet.binary.macroEnabled.12'                   : 'MsExcel',
			'application/vnd.ms-excel.addin.macroEnabled.12'                          : 'MsExcel',
			'application/vnd.ms-powerpoint' : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.presentation' : 'MsPP',
			'application/vnd.ms-powerpoint.presentation.macroEnabled.12'              : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.slideshow'  : 'MsPP',
			'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'                 : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.template'   : 'MsPP',
			'application/vnd.ms-powerpoint.template.macroEnabled.12'                  : 'MsPP',
			'application/vnd.ms-powerpoint.addin.macroEnabled.12'                     : 'MsPP',
			'application/vnd.openxmlformats-officedocument.presentationml.slide'      : 'MsPP',
			'application/vnd.ms-powerpoint.slide.macroEnabled.12'                     : 'MsPP',
			'application/pdf'               : 'PDF',
			'application/xml'               : 'XML',
			'application/vnd.oasis.opendocument.text' : 'OO',
			'application/vnd.oasis.opendocument.text-template'         : 'OO',
			'application/vnd.oasis.opendocument.text-web'              : 'OO',
			'application/vnd.oasis.opendocument.text-master'           : 'OO',
			'application/vnd.oasis.opendocument.graphics'              : 'OO',
			'application/vnd.oasis.opendocument.graphics-template'     : 'OO',
			'application/vnd.oasis.opendocument.presentation'          : 'OO',
			'application/vnd.oasis.opendocument.presentation-template' : 'OO',
			'application/vnd.oasis.opendocument.spreadsheet'           : 'OO',
			'application/vnd.oasis.opendocument.spreadsheet-template'  : 'OO',
			'application/vnd.oasis.opendocument.chart'                 : 'OO',
			'application/vnd.oasis.opendocument.formula'               : 'OO',
			'application/vnd.oasis.opendocument.database'              : 'OO',
			'application/vnd.oasis.opendocument.image'                 : 'OO',
			'application/vnd.openofficeorg.extension'                  : 'OO',
			'application/x-shockwave-flash' : 'AppFlash',
			'application/flash-video'       : 'Flash video',
			'application/x-bittorrent'      : 'Torrent',
			'application/javascript'        : 'JS',
			'application/rtf'               : 'RTF',
			'application/rtfd'              : 'RTF',
			'application/x-font-ttf'        : 'TTF',
			'application/x-font-otf'        : 'OTF',
			'application/x-rpm'             : 'RPM',
			'application/x-web-config'      : 'TextPlain',
			'application/xhtml+xml'         : 'HTML',
			'application/docbook+xml'       : 'DOCBOOK',
			'application/x-awk'             : 'AWK',
			'application/x-gzip'            : 'GZIP',
			'application/x-bzip2'           : 'BZIP',
			'application/x-xz'              : 'XZ',
			'application/zip'               : 'ZIP',
			'application/x-zip'               : 'ZIP',
			'application/x-rar'             : 'RAR',
			'application/x-tar'             : 'TAR',
			'application/x-7z-compressed'   : '7z',
			'application/x-jar'             : 'JAR',
			'text/plain'                    : 'TextPlain',
			'text/x-php'                    : 'PHP',
			'text/html'                     : 'HTML',
			'text/javascript'               : 'JS',
			'text/css'                      : 'CSS',
			'text/rtf'                      : 'RTF',
			'text/rtfd'                     : 'RTF',
			'text/x-c'                      : 'C',
			'text/x-csrc'                   : 'C',
			'text/x-chdr'                   : 'CHeader',
			'text/x-c++'                    : 'CPP',
			'text/x-c++src'                 : 'CPP',
			'text/x-c++hdr'                 : 'CPPHeader',
			'text/x-shellscript'            : 'Shell',
			'application/x-csh'             : 'Shell',
			'text/x-python'                 : 'Python',
			'text/x-java'                   : 'Java',
			'text/x-java-source'            : 'Java',
			'text/x-ruby'                   : 'Ruby',
			'text/x-perl'                   : 'Perl',
			'text/x-sql'                    : 'SQL',
			'text/xml'                      : 'XML',
			'text/x-comma-separated-values' : 'CSV',
			'text/x-markdown'               : 'Markdown',
			'image/x-ms-bmp'                : 'BMP',
			'image/jpeg'                    : 'JPEG',
			'image/gif'                     : 'GIF',
			'image/png'                     : 'PNG',
			'image/tiff'                    : 'TIFF',
			'image/x-targa'                 : 'TGA',
			'image/vnd.adobe.photoshop'     : 'PSD',
			'image/xbm'                     : 'XBITMAP',
			'image/pxm'                     : 'PXM',
			'audio/mpeg'                    : 'AudioMPEG',
			'audio/midi'                    : 'AudioMIDI',
			'audio/ogg'                     : 'AudioOGG',
			'audio/mp4'                     : 'AudioMPEG4',
			'audio/x-m4a'                   : 'AudioMPEG4',
			'audio/wav'                     : 'AudioWAV',
			'audio/x-mp3-playlist'          : 'AudioPlaylist',
			'video/x-dv'                    : 'VideoDV',
			'video/mp4'                     : 'VideoMPEG4',
			'video/mpeg'                    : 'VideoMPEG',
			'video/x-msvideo'               : 'VideoAVI',
			'video/quicktime'               : 'VideoMOV',
			'video/x-ms-wmv'                : 'VideoWM',
			'video/x-flv'                   : 'VideoFlash',
			'video/x-matroska'              : 'VideoMKV',
			'video/ogg'                     : 'VideoOGG'
		},
	
	/**
	 * File mimetype to file extention mapping
	 * 
	 * @type  Object
	 * @see   elFinder.mimetypes.js
	 */
	mimeTypes : {},
	
	/**
	 * Ajax request data validation rules
	 * 
	 * @type  Object
	 */
	rules : {
		defaults : function(data) {
			if (!data
			|| (data.added && !Array.isArray(data.added))
			||  (data.removed && !Array.isArray(data.removed))
			||  (data.changed && !Array.isArray(data.changed))) {
				return false;
			}
			return true;
		},
		open    : function(data) { return data && data.cwd && data.files && jQuery.isPlainObject(data.cwd) && Array.isArray(data.files); },
		tree    : function(data) { return data && data.tree && Array.isArray(data.tree); },
		parents : function(data) { return data && data.tree && Array.isArray(data.tree); },
		tmb     : function(data) { return data && data.images && (jQuery.isPlainObject(data.images) || Array.isArray(data.images)); },
		upload  : function(data) { return data && (jQuery.isPlainObject(data.added) || Array.isArray(data.added));},
		search  : function(data) { return data && data.files && Array.isArray(data.files); }
	},
	
	/**
	 * Commands costructors
	 *
	 * @type Object
	 */
	commands : {},
	
	/**
	 * Commands to add the item (space delimited)
	 * 
	 * @type String
	 */
	cmdsToAdd : 'archive duplicate extract mkdir mkfile paste rm upload',
	
	parseUploadData : function(text) {
		var self = this,
			data;
		
		if (!jQuery.trim(text)) {
			return {error : ['errResponse', 'errDataEmpty']};
		}
		
		try {
			data = JSON.parse(text);
		} catch (e) {
			return {error : ['errResponse', 'errDataNotJSON']};
		}
		
		data = self.normalize(data);
		if (!self.validResponse('upload', data)) {
			return {error : (data.norError || ['errResponse'])};
		}
		data.removed = jQuery.merge((data.removed || []), jQuery.map(data.added || [], function(f) { return self.file(f.hash)? f.hash : null; }));
		return data;
		
	},
	
	iframeCnt : 0,
	
	uploads : {
		// xhr muiti uploading flag
		xhrUploading: false,
		
		// Timer of request fail to sync
		failSyncTm: null,
		
		// current chunkfail requesting chunk
		chunkfailReq: {},
		
		// check file/dir exists
		checkExists: function(files, target, fm, isDir) {
			var dfrd = jQuery.Deferred(),
				names, renames = [], hashes = {}, chkFiles = [],
				cancel = function() {
					var i = files.length;
					while (--i > -1) {
						files[i]._remove = true;
					}
				},
				resolve = function() {
					dfrd.resolve(renames, hashes);
				},
				check = function() {
					var existed = [], exists = [], i, c,
						pathStr = target !== fm.cwd().hash? fm.path(target, true) + fm.option('separator', target) : '',
						confirm = function(ndx) {
							var last = ndx == exists.length-1,
								opts = {
									cssClass : 'elfinder-confirm-upload',
									title  : fm.i18n('cmdupload'),
									text   : ['errExists', pathStr + exists[ndx].name, 'confirmRepl'], 
									all    : !last,
									accept : {
										label    : 'btnYes',
										callback : function(all) {
											!last && !all
												? confirm(++ndx)
												: resolve();
										}
									},
									reject : {
										label    : 'btnNo',
										callback : function(all) {
											var i;
			
											if (all) {
												i = exists.length;
												while (ndx < i--) {
													files[exists[i].i]._remove = true;
												}
											} else {
												files[exists[ndx].i]._remove = true;
											}
			
											!last && !all
												? confirm(++ndx)
												: resolve();
										}
									},
									cancel : {
										label    : 'btnCancel',
										callback : function() {
											cancel();
											resolve();
										}
									},
									buttons : [
										{
											label : 'btnBackup',
											cssClass : 'elfinder-confirm-btn-backup',
											callback : function(all) {
												var i;
												if (all) {
													i = exists.length;
													while (ndx < i--) {
														renames.push(exists[i].name);
													}
												} else {
													renames.push(exists[ndx].name);
												}
												!last && !all
													? confirm(++ndx)
													: resolve();
											}
										}
									]
								};
							
							if (!isDir) {
								opts.buttons.push({
									label : 'btnRename' + (last? '' : 'All'),
									cssClass : 'elfinder-confirm-btn-rename',
									callback : function() {
										renames = null;
										resolve();
									}
								});
							}
							if (fm.iframeCnt > 0) {
								delete opts.reject;
							}
							fm.confirm(opts);
						};
					
					if (! fm.file(target).read) {
						// for dropbox type
						resolve();
						return;
					}
					
					names = jQuery.map(files, function(file, i) { return file.name && (!fm.UA.iOS || file.name !== 'image.jpg')? {i: i, name: file.name} : null ;});
					
					fm.request({
						data : {cmd : 'ls', target : target, intersect : jQuery.map(names, function(item) { return item.name;})},
						notify : {type : 'preupload', cnt : 1, hideCnt : true},
						preventDefault : true
					})
					.done(function(data) {
						var existedArr, cwdItems;
						if (data) {
							if (data.error) {
								cancel();
							} else {
								if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
									if (data.list) {
										if (Array.isArray(data.list)) {
											existed = data.list || [];
										} else {
											existedArr = [];
											existed = jQuery.map(data.list, function(n) {
												if (typeof n === 'string') {
													return n;
												} else {
													// support to >=2.1.11 plugin Normalizer, Sanitizer
													existedArr = existedArr.concat(n);
													return false;
												}
											});
											if (existedArr.length) {
												existed = existed.concat(existedArr);
											}
											hashes = data.list;
										}
										exists = jQuery.grep(names, function(name){
											return jQuery.inArray(name.name, existed) !== -1 ? true : false ;
										});
										if (exists.length && existed.length && target == fm.cwd().hash) {
											cwdItems = jQuery.map(fm.files(target), function(file) { return file.name; } );
											if (jQuery.grep(existed, function(n) { 
												return jQuery.inArray(n, cwdItems) === -1? true : false;
											}).length){
												fm.sync();
											}
										}
									}
								}
							}
						}
						if (exists.length > 0) {
							confirm(0);
						} else {
							resolve();
						}
					})
					.fail(function(error) {
						cancel();
						resolve();
						error && fm.error(error);
					});
				};
			if (fm.api >= 2.1 && typeof files[0] == 'object') {
				check();
			} else {
				resolve();
			}
			return dfrd;
		},
		
		// check droped contents
		checkFile : function(data, fm, target) {
			if (!!data.checked || data.type == 'files') {
				return data.files;
			} else if (data.type == 'data') {
				var dfrd = jQuery.Deferred(),
				scanDfd = jQuery.Deferred(),
				files = [],
				paths = [],
				dirctorys = [],
				processing = 0,
				items,
				mkdirs = [],
				cancel = false,
				toArray = function(list) {
					return Array.prototype.slice.call(list || [], 0);
				},
				doScan = function(items) {
					var entry, readEntries,
						excludes = fm.options.folderUploadExclude[fm.OS] || null,
						length = items.length,
						check = function() {
							if (--processing < 1 && scanDfd.state() === 'pending') {
								scanDfd.resolve();
							}
						},
						pushItem = function(file) {
							if (! excludes || ! file.name.match(excludes)) {
								paths.push(entry.fullPath || '');
								files.push(file);
							}
							check();
						},
						readEntries = function(dirReader) {
							var entries = [],
								read = function() {
									dirReader.readEntries(function(results) {
										if (cancel || !results.length) {
											for (var i = 0; i < entries.length; i++) {
												if (cancel) {
													scanDfd.reject();
													break;
												}
												doScan([entries[i]]);
											}
											check();
										} else {
											entries = entries.concat(toArray(results));
											read();
										}
									}, check);
								};
							read();
						};
					
					processing++;
					for (var i = 0; i < length; i++) {
						if (cancel) {
							scanDfd.reject();
							break;
						}
						entry = items[i];
						if (entry) {
							if (entry.isFile) {
								processing++;
								entry.file(pushItem, check);
							} else if (entry.isDirectory) {
								if (fm.api >= 2.1) {
									processing++;
									mkdirs.push(entry.fullPath);
									readEntries(entry.createReader()); // Start reading dirs.
								}
							}
						}
					}
					check();
					return scanDfd;
				}, hasDirs;
				
				items = jQuery.map(data.files.items, function(item){
					return item.getAsEntry? item.getAsEntry() : item.webkitGetAsEntry();
				});
				jQuery.each(items, function(i, item) {
					if (item.isDirectory) {
						hasDirs = true;
						return false;
					}
				});
				if (items.length > 0) {
					fm.uploads.checkExists(items, target, fm, hasDirs).done(function(renames, hashes){
						var dfds = [];
						if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
							if (renames === null) {
								data.overwrite = 0;
								renames = [];
							}
							items = jQuery.grep(items, function(item){
								var i, bak, hash, dfd, hi;
								if (item.isDirectory && renames.length) {
									i = jQuery.inArray(item.name, renames);
									if (i !== -1) {
										renames.splice(i, 1);
										bak = fm.uniqueName(item.name + fm.options.backupSuffix , null, '');
										jQuery.each(hashes, function(h, name) {
											if (item.name == name) {
												hash = h;
												return false;
											}
										});
										if (! hash) {
											hash = fm.fileByName(item.name, target).hash;
										}
										fm.lockfiles({files : [hash]});
										dfd = fm.request({
											data   : {cmd : 'rename', target : hash, name : bak},
											notify : {type : 'rename', cnt : 1}
										})
										.fail(function() {
											item._remove = true;
											fm.sync();
										})
										.always(function() {
											fm.unlockfiles({files : [hash]});
										});
										dfds.push(dfd);
									}
								}
								return !item._remove? true : false;
							});
						}
						jQuery.when.apply($, dfds).done(function(){
							var notifyto, msg,
								id = +new Date();
							
							if (items.length > 0) {
								msg = fm.escape(items[0].name);
								if (items.length > 1) {
									msg += ' ... ' + items.length + fm.i18n('items');
								}
								notifyto = setTimeout(function() {
									fm.notify({
										type : 'readdir',
										id : id,
										cnt : 1,
										hideCnt: true,
										msg : fm.i18n('ntfreaddir') + ' (' + msg + ')',
										cancel: function() {
											cancel = true;
										}
									});
								}, fm.options.notifyDelay);
								doScan(items).done(function() {
									notifyto && clearTimeout(notifyto);
									fm.notify({type : 'readdir', id: id, cnt : -1});
									if (cancel) {
										dfrd.reject();
									} else {
										dfrd.resolve([files, paths, renames, hashes, mkdirs]);
									}
								}).fail(function() {
									dfrd.reject();
								});
							} else {
								dfrd.reject();
							}
						});
					});
					return dfrd.promise();
				} else {
					return dfrd.reject();
				}
			} else {
				var ret = [];
				var check = [];
				var str = data.files[0];
				if (data.type == 'html') {
					var tmp = jQuery("<html></html>").append(jQuery.parseHTML(str.replace(/ src=/ig, ' _elfsrc='))),
						atag;
					jQuery('img[_elfsrc]', tmp).each(function(){
						var url, purl,
						self = jQuery(this),
						pa = self.closest('a');
						if (pa && pa.attr('href') && pa.attr('href').match(/\.(?:jpe?g|gif|bmp|png)/i)) {
							purl = pa.attr('href');
						}
						url = self.attr('_elfsrc');
						if (url) {
							if (purl) {
								jQuery.inArray(purl, ret) == -1 && ret.push(purl);
								jQuery.inArray(url, check) == -1 &&  check.push(url);
							} else {
								jQuery.inArray(url, ret) == -1 && ret.push(url);
							}
						}
						// Probably it's clipboard data
						if (ret.length === 1 && ret[0].match(/^data:image\/png/)) {
							data.clipdata = true;
						}
					});
					atag = jQuery('a[href]', tmp);
					atag.each(function(){
						var text, loc,
							parseUrl = function(url) {
								var a = document.createElement('a');
								a.href = url;
								return a;
							};
						if (text = jQuery(this).text()) {
							loc = parseUrl(jQuery(this).attr('href'));
							if (loc.href && loc.href.match(/^(?:ht|f)tp/i) && (atag.length === 1 || ! loc.pathname.match(/(?:\.html?|\/[^\/.]*)$/i) || jQuery.trim(text).match(/\.[a-z0-9-]{1,10}$/i))) {
								if (jQuery.inArray(loc.href, ret) == -1 && jQuery.inArray(loc.href, check) == -1) ret.push(loc.href);
							}
						}
					});
				} else {
					var regex, m, url;
					regex = /((?:ht|f)tps?:\/\/[-_.!~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+)/ig;
					while (m = regex.exec(str)) {
						url = m[1].replace(/&amp;/g, '&');
						if (jQuery.inArray(url, ret) == -1) ret.push(url);
					}
				}
				return ret;
			}
		},

		// upload transport using XMLHttpRequest
		xhr : function(data, fm) { 
			var self   = fm ? fm : this,
				node        = self.getUI(),
				xhr         = new XMLHttpRequest(),
				notifyto    = null,
				notifyto1   = null,
				notifyto2   = null,
				dataChecked = data.checked,
				isDataType  = (data.isDataType || data.type == 'data'),
				target      = (data.target || self.cwd().hash),
				dropEvt     = (data.dropEvt || null),
				extraData   = data.extraData || null,
				chunkEnable = (self.option('uploadMaxConn', target) != -1),
				multiMax    = Math.min(5, Math.max(1, self.option('uploadMaxConn', target))),
				retryWait   = 10000, // 10 sec
				retryMax    = 30, // 10 sec * 30 = 300 secs (Max 5 mins)
				retry       = 0,
				getFile     = function(files) {
					var dfd = jQuery.Deferred(),
						file;
					if (files.promise) {
						files.always(function(f) {
							dfd.resolve(Array.isArray(f) && f.length? (isDataType? f[0][0] : f[0]) : {});
						});
					} else {
						dfd.resolve(files.length? (isDataType? files[0][0] : files[0]) : {});
					}
					return dfd;
				},
				dfrd   = jQuery.Deferred()
					.fail(function(err) {
						var error = self.parseError(err),
							userAbort;
						if (error === 'userabort') {
							userAbort = true;
							error = void 0;
						}
						if (files && (self.uploads.xhrUploading || userAbort)) {
							// send request om fail
							getFile(files).done(function(file) {
								if (!userAbort) {
									triggerError(error, file);
								}
								if (! file._cid) {
									// send sync request
									self.uploads.failSyncTm && clearTimeout(self.uploads.failSyncTm);
									self.uploads.failSyncTm = setTimeout(function() {
										self.sync(target);
									}, 1000);
								} else if (! self.uploads.chunkfailReq[file._cid]) {
									// send chunkfail request
									self.uploads.chunkfailReq[file._cid] = true;
									setTimeout(function() {
										fm.request({
											data : {
												cmd: 'upload',
												target: target,
												chunk: file._chunk,
												cid: file._cid,
												upload: ['chunkfail'],
												mimes: 'chunkfail'
											},
											options : {
												type: 'post',
												url: self.uploadURL
											},
											preventDefault: true
										}).always(function() {
											delete self.uploads.chunkfailReq[file._chunk];
										});
									}, 1000);
								}
							});
						} else {
							triggerError(error);
						}
						!userAbort && self.sync();
						self.uploads.xhrUploading = false;
						files = null;
					})
					.done(function(data) {
						self.uploads.xhrUploading = false;
						files = null;
						if (data) {
							self.currentReqCmd = 'upload';
							data.warning && triggerError(data.warning);
							self.updateCache(data);
							data.removed && data.removed.length && self.remove(data);
							data.added   && data.added.length   && self.add(data);
							data.changed && data.changed.length && self.change(data);
							self.trigger('upload', data, false);
							self.trigger('uploaddone');
							if (data.toasts && Array.isArray(data.toasts)) {
								jQuery.each(data.toasts, function() {
									this.msg && self.toast(this);
								});
							}
							data.sync && self.sync();
							if (data.debug) {
								self.responseDebug(data);
								fm.debug('backend-debug', data);
							}
						}
					})
					.always(function() {
						self.abortXHR(xhr);
						// unregist fnAbort function
						node.off('uploadabort', fnAbort);
						jQuery(window).off('unload', fnAbort);
						notifyto && clearTimeout(notifyto);
						notifyto1 && clearTimeout(notifyto1);
						notifyto2 && clearTimeout(notifyto2);
						dataChecked && !data.multiupload && checkNotify() && self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
						notifyto1 && uploadedNtf && self.notify({type : 'chunkmerge', cnt : -cnt});
						chunkMerge && notifyElm.children('.elfinder-notify-chunkmerge').length && self.notify({type : 'chunkmerge', cnt : -1});
					}),
				formData    = new FormData(),
				files       = data.input ? data.input.files : self.uploads.checkFile(data, self, target), 
				cnt         = data.checked? (isDataType? files[0].length : files.length) : files.length,
				isChunked   = false,
				loaded      = 0,
				prev        = 0,
				filesize    = 0,
				notify      = false,
				notifyElm   = self.ui.notify,
				cancelBtn   = true,
				uploadedNtf = false,
				abort       = false,
				checkNotify = function() {
					if (!notify && (ntfUpload = notifyElm.children('.elfinder-notify-upload')).length) {
						notify = true;
					}
					return notify;
				},
				fnAbort     = function(e, error) {
					abort = true;
					self.abortXHR(xhr, { quiet: true, abort: true });
					dfrd.reject(error);
					if (checkNotify()) {
						self.notify({type : 'upload', cnt : ntfUpload.data('cnt') * -1, progress : 0, size : 0});
					}
				},
				cancelToggle = function(show, hasChunk) {
					ntfUpload.children('.elfinder-notify-cancel')[show? 'show':'hide']();
					cancelBtn = show;
				},
				startNotify = function(size) {
					if (!size) size = filesize;
					return setTimeout(function() {
						notify = true;
						self.notify({type : 'upload', cnt : cnt, progress : loaded - prev, size : size,
							cancel: function() {
								node.trigger('uploadabort', 'userabort');
							}
						});
						ntfUpload = notifyElm.children('.elfinder-notify-upload');
						prev = loaded;
						if (data.multiupload) {
							cancelBtn && cancelToggle(true);
						} else {
							cancelToggle(cancelBtn && loaded < size);
						}
					}, self.options.notifyDelay);
				},
				doRetry = function() {
					if (retry++ <= retryMax) {
						if (checkNotify() && prev) {
							self.notify({type : 'upload', cnt : 0, progress : 0, size : prev});
						}
						self.abortXHR(xhr, { quiet: true });
						prev = loaded = 0;
						setTimeout(function() {
							var reqId;
							if (! abort) {
								xhr.open('POST', self.uploadURL, true);
								if (self.api >= 2.1029) {
									reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
									(typeof formData['delete'] === 'function') && formData['delete']('reqid');
									formData.append('reqid', reqId);
									xhr._requestId = reqId;
								}
								xhr.send(formData);
							}
						}, retryWait);
					} else {
						node.trigger('uploadabort', ['errAbort', 'errTimeout']);
					}
				},
				progress = function() {
					var node;
					if (notify) {
						dfrd.notifyWith(ntfUpload, [{
							cnt: ntfUpload.data('cnt'),
							progress: ntfUpload.data('progress'),
							total: ntfUpload.data('total')
						}]);
					}
				},
				triggerError = function(err, file, unite) {
					err && self.trigger('xhruploadfail', { error: err, file: file });
					if (unite) {
						if (err) {
							if (errCnt < self.options.maxErrorDialogs) {
								if (Array.isArray(err)) {
									errors = errors.concat(err);
								} else {
									errors.push(err);
								}
							}
							errCnt++;
						}
					} else {
						if (err) {
							self.error(err);
						} else {
							if (errors.length) {
								if (errCnt >= self.options.maxErrorDialogs) {
									errors = errors.concat('moreErrors', errCnt - self.options.maxErrorDialogs);
								}
								self.error(errors);
							}
							errors = [];
							errCnt = 0;
						}
					}
				},
				errors = [],
				errCnt = 0,
				renames = (data.renames || null),
				hashes = (data.hashes || null),
				chunkMerge = false,
				ntfUpload = jQuery();
			
			// regist fnAbort function
			node.one('uploadabort', fnAbort);
			jQuery(window).one('unload.' + fm.namespace, fnAbort);
			
			!chunkMerge && (prev = loaded);
			
			if (!isDataType && !cnt) {
				return dfrd.reject(['errUploadNoFiles']);
			}
			
			xhr.addEventListener('error', function() {
				if (xhr.status == 0) {
					if (abort) {
						dfrd.reject();
					} else {
						// ff bug while send zero sized file
						// for safari - send directory
						if (!isDataType && data.files && jQuery.grep(data.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) {
							dfrd.reject(['errAbort', 'errFolderUpload']);
						} else if (data.input && jQuery.grep(data.input.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) {
							dfrd.reject(['errUploadNoFiles']);
						} else {
							doRetry();
						}
					}
				} else {
					node.trigger('uploadabort', 'errConnect');
				}
			}, false);
			
			xhr.addEventListener('load', function(e) {
				var status = xhr.status, res, curr = 0, error = '', errData, errObj;
				
				self.setCustomHeaderByXhr(xhr);

				if (status >= 400) {
					if (status > 500) {
						error = 'errResponse';
					} else {
						error = ['errResponse', 'errServerError'];
					}
				} else {
					if (!xhr.responseText) {
						error = ['errResponse', 'errDataEmpty'];
					}
				}
				
				if (error) {
					node.trigger('uploadabort');
					getFile(files || {}).done(function(file) {
						return dfrd.reject(file._cid? null : error);
					});
				}
				
				loaded = filesize;
				
				if (checkNotify() && (curr = loaded - prev)) {
					self.notify({type : 'upload', cnt : 0, progress : curr, size : 0});
					progress();
				}

				res = self.parseUploadData(xhr.responseText);
				
				// chunked upload commit
				if (res._chunkmerged) {
					formData = new FormData();
					var _file = [{_chunkmerged: res._chunkmerged, _name: res._name, _mtime: res._mtime}];
					chunkMerge = true;
					node.off('uploadabort', fnAbort);
					notifyto2 = setTimeout(function() {
						self.notify({type : 'chunkmerge', cnt : 1});
					}, self.options.notifyDelay);
					isDataType? send(_file, files[1]) : send(_file);
					return;
				}
				
				res._multiupload = data.multiupload? true : false;
				if (res.error) {
					errData = {
						cmd: 'upload',
						err: res,
						xhr: xhr,
						rc: xhr.status
					};
					self.trigger('uploadfail', res);
					// trigger "requestError" event
					self.trigger('requestError', errData);
					if (errData._getEvent && errData._getEvent().isDefaultPrevented()) {
						res.error = '';
					}
					if (res._chunkfailure || res._multiupload) {
						abort = true;
						self.uploads.xhrUploading = false;
						notifyto && clearTimeout(notifyto);
						if (ntfUpload.length) {
							self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
							dfrd.reject(res);
						} else {
							// for multi connection
							dfrd.reject();
						}
					} else {
						dfrd.reject(res);
					}
				} else {
					dfrd.resolve(res);
				}
			}, false);
			
			xhr.upload.addEventListener('loadstart', function(e) {
				if (!chunkMerge && e.lengthComputable) {
					loaded = e.loaded;
					retry && (loaded = 0);
					filesize = e.total;
					if (!loaded) {
						loaded = parseInt(filesize * 0.05);
					}
					if (checkNotify()) {
						self.notify({type : 'upload', cnt : 0, progress : loaded - prev, size : data.multiupload? 0 : filesize});
						prev = loaded;
						progress();
					}
				}
			}, false);
			
			xhr.upload.addEventListener('progress', function(e) {
				var curr;

				if (e.lengthComputable && !chunkMerge && xhr.readyState < 2) {
					
					loaded = e.loaded;

					// to avoid strange bug in safari (not in chrome) with drag&drop.
					// bug: macos finder opened in any folder,
					// reset safari cache (option+command+e), reload elfinder page,
					// drop file from finder
					// on first attempt request starts (progress callback called ones) but never ends.
					// any next drop - successfull.
					if (!data.checked && loaded > 0 && !notifyto) {
						notifyto = startNotify(xhr._totalSize - loaded);
					}
					
					if (!filesize) {
						filesize = e.total;
						if (!loaded) {
							loaded = parseInt(filesize * 0.05);
						}
					}
					
					curr = loaded - prev;
					if (checkNotify() && (curr/e.total) >= 0.05) {
						self.notify({type : 'upload', cnt : 0, progress : curr, size : 0});
						prev = loaded;
						progress();
					}
					
					if (!uploadedNtf && loaded >= filesize && !isChunked) {
						// Use "chunkmerge" for "server-in-process" notification
						uploadedNtf = true;
						notifyto1 = setTimeout(function() {
							self.notify({type : 'chunkmerge', cnt : cnt});
						}, self.options.notifyDelay);
					}

					if (cancelBtn && ! data.multiupload && loaded >= filesize) {
						checkNotify() && cancelToggle(false);
					}
				}
			}, false);
			
			var send = function(files, paths){
				var size = 0,
				fcnt = 1,
				sfiles = [],
				c = 0,
				total = cnt,
				maxFileSize,
				totalSize = 0,
				chunked = [],
				chunkID = new Date().getTime().toString().substr(-9), // for take care of the 32bit backend system
				BYTES_PER_CHUNK = Math.min((fm.uplMaxSize? fm.uplMaxSize : 2097152) - 8190, fm.options.uploadMaxChunkSize), // uplMaxSize margin 8kb or options.uploadMaxChunkSize
				blobSlice = chunkEnable? false : '',
				blobSize, blobMtime, blobName, i, start, end, chunks, blob, chunk, added, done, last, failChunk,
				multi = function(files, num){
					var sfiles = [], cid, sfilesLen = 0, cancelChk, hasChunk;
					if (!abort) {
						while(files.length && sfiles.length < num) {
							sfiles.push(files.shift());
						}
						sfilesLen = sfiles.length;
						if (sfilesLen) {
							cancelChk = sfilesLen;
							for (var i=0; i < sfilesLen; i++) {
								if (abort) {
									break;
								}
								cid = isDataType? (sfiles[i][0][0]._cid || null) : (sfiles[i][0]._cid || null);
								hasChunk = (hasChunk || cid)? true : false;
								if (!!failChunk[cid]) {
									last--;
									continue;
								}
								fm.exec('upload', {
									type: data.type,
									isDataType: isDataType,
									files: sfiles[i],
									checked: true,
									target: target,
									dropEvt: dropEvt,
									renames: renames,
									hashes: hashes,
									multiupload: true,
									overwrite: data.overwrite === 0? 0 : void 0,
									clipdata: data.clipdata
								}, void 0, target)
								.fail(function(error) {
									if (error && error === 'No such command') {
										abort = true;
										fm.error(['errUpload', 'errPerm']);
									}
									if (cid) {	
										failChunk[cid] = true;
									}
								})
								.always(function(e) {
									if (e && e.added) added = jQuery.merge(added, e.added);
									if (last <= ++done) {
										fm.trigger('multiupload', {added: added});
										notifyto && clearTimeout(notifyto);
										if (checkNotify()) {
											self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0});
										}
									}
									if (files.length) {
										multi(files, 1); // Next one
									} else {
										if (--cancelChk <= 1) {
											if (cancelBtn) {
												cancelToggle(false, hasChunk);
											}
										}
										dfrd.resolve();
									}
								});
							}
						}
					}
					if (sfiles.length < 1 || abort) {
						if (abort) {
							notifyto && clearTimeout(notifyto);
							if (cid) {
								failChunk[cid] = true;
							}
							dfrd.reject();
						} else {
							dfrd.resolve();
							self.uploads.xhrUploading = false;
						}
					}
				},
				check = function(){
					if (!self.uploads.xhrUploading) {
						self.uploads.xhrUploading = true;
						multi(sfiles, multiMax); // Max connection: 3
					} else {
						setTimeout(check, 100);
					}
				},
				reqId, err;

				if (! dataChecked && (isDataType || data.type == 'files')) {
					if (! (maxFileSize = fm.option('uploadMaxSize', target))) {
						maxFileSize = 0;
					}
					for (i=0; i < files.length; i++) {
						try {
							blob = files[i];
							blobSize = blob.size;
							if (blobSlice === false) {
								blobSlice = '';
								if (self.api >= 2.1) {
									if ('slice' in blob) {
										blobSlice = 'slice';
									} else if ('mozSlice' in blob) {
										blobSlice = 'mozSlice';
									} else if ('webkitSlice' in blob) {
										blobSlice = 'webkitSlice';
									}
								}
							}
						} catch(e) {
							cnt--;
							total--;
							continue;
						}
						
						// file size check
						if ((maxFileSize && blobSize > maxFileSize) || (!blobSlice && fm.uplMaxSize && blobSize > fm.uplMaxSize)) {
							triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true);
							cnt--;
							total--;
							continue;
						}
						
						// file mime check
						if (blob.type && ! self.uploadMimeCheck(blob.type, target)) {
							triggerError(['errUploadFile', blob.name, 'errUploadMime', '(' + blob.type + ')'], blob, true);
							cnt--;
							total--;
							continue;
						}
						
						if (blobSlice && blobSize > BYTES_PER_CHUNK) {
							start = 0;
							end = BYTES_PER_CHUNK;
							chunks = -1;
							total = Math.floor((blobSize - 1) / BYTES_PER_CHUNK);
							blobMtime = blob.lastModified? Math.round(blob.lastModified/1000) : 0;
							blobName = data.clipdata? fm.date(fm.nonameDateFormat) + '.png' : blob.name;

							totalSize += blobSize;
							chunked[chunkID] = 0;
							while(start < blobSize) {
								chunk = blob[blobSlice](start, end);
								chunk._chunk = blobName + '.' + (++chunks) + '_' + total + '.part';
								chunk._cid   = chunkID;
								chunk._range = start + ',' + chunk.size + ',' + blobSize;
								chunk._mtime = blobMtime;
								chunked[chunkID]++;
								
								if (size) {
									c++;
								}
								if (typeof sfiles[c] == 'undefined') {
									sfiles[c] = [];
									if (isDataType) {
										sfiles[c][0] = [];
										sfiles[c][1] = [];
									}
								}
								size = BYTES_PER_CHUNK;
								fcnt = 1;
								if (isDataType) {
									sfiles[c][0].push(chunk);
									sfiles[c][1].push(paths[i]);
								} else {
									sfiles[c].push(chunk);
								}

								start = end;
								end = start + BYTES_PER_CHUNK;
							}
							if (chunk == null) {
								triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true);
								cnt--;
								total--;
							} else {
								total += chunks;
								size = 0;
								fcnt = 1;
								c++;
							}
							continue;
						}
						if ((fm.uplMaxSize && size + blobSize > fm.uplMaxSize) || fcnt > fm.uplMaxFile) {
							size = 0;
							fcnt = 1;
							c++;
						}
						if (typeof sfiles[c] == 'undefined') {
							sfiles[c] = [];
							if (isDataType) {
								sfiles[c][0] = [];
								sfiles[c][1] = [];
							}
						}
						if (isDataType) {
							sfiles[c][0].push(blob);
							sfiles[c][1].push(paths[i]);
						} else {
							sfiles[c].push(blob);
						}
						size += blobSize;
						totalSize += blobSize;
						fcnt++;
					}
					
					if (errors.length) {
						triggerError();
					}

					if (sfiles.length == 0) {
						// no data
						data.checked = true;
						return false;
					}
					
					if (sfiles.length > 1) {
						// multi upload
						notifyto = startNotify(totalSize);
						added = [];
						done = 0;
						last = sfiles.length;
						failChunk = [];
						check();
						return true;
					}
					
					// single upload
					if (isDataType) {
						files = sfiles[0][0];
						paths = sfiles[0][1];
					} else {
						files = sfiles[0];
					}
				}
				
				if (!dataChecked) {
					if (!fm.UA.Safari || !data.files) {
						notifyto = startNotify(totalSize);
					} else {
						xhr._totalSize = totalSize;
					}
				}
				
				dataChecked = true;
				
				if (! files.length) {
					dfrd.reject(['errUploadNoFiles']);
				}
				
				xhr.open('POST', self.uploadURL, true);
				
				// set request headers
				if (fm.customHeaders) {
					jQuery.each(fm.customHeaders, function(key) {
						xhr.setRequestHeader(key, this);
					});
				}
				
				// set xhrFields
				if (fm.xhrFields) {
					jQuery.each(fm.xhrFields, function(key) {
						if (key in xhr) {
							xhr[key] = this;
						}
					});
				}

				if (self.api >= 2.1029) {
					// request ID
					reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
					formData.append('reqid', reqId);
					xhr._requestId = reqId;
				}
				formData.append('cmd', 'upload');
				formData.append(self.newAPI ? 'target' : 'current', target);
				if (renames && renames.length) {
					jQuery.each(renames, function(i, v) {
						formData.append('renames[]', v);
					});
					formData.append('suffix', fm.options.backupSuffix);
				}
				if (hashes) {
					jQuery.each(hashes, function(i, v) {
						formData.append('hashes['+ i +']', v);
					});
				}
				jQuery.each(self.customData, function(key, val) {
					formData.append(key, val);
				});
				jQuery.each(self.options.onlyMimes, function(i, mime) {
					formData.append('mimes[]', mime);
				});
				
				jQuery.each(files, function(i, file) {
					var name, relpath;
					if (file._chunkmerged) {
						formData.append('chunk', file._chunkmerged);
						formData.append('upload[]', file._name);
						formData.append('mtime[]', file._mtime);
						data.clipdata && formData.append('overwrite', 0);
						isChunked = true;
					} else {
						if (file._chunkfail) {
							formData.append('upload[]', 'chunkfail');
							formData.append('mimes', 'chunkfail');
						} else {
							if (data.clipdata) {
								if (!file._chunk) {
									data.overwrite = 0;
									name = fm.date(fm.nonameDateFormat) + '.png';
								}
							} else {
								if (file.name) {
									name = file.name;
									if (fm.UA.iOS) {
										if (name.match(/^image\.jpe?g$/i)) {
											data.overwrite = 0;
											name = fm.date(fm.nonameDateFormat) + '.jpg';
										} else if (name.match(/^capturedvideo\.mov$/i)) {
											data.overwrite = 0;
											name = fm.date(fm.nonameDateFormat) + '.mov';
										}
									}
									relpath = (file.webkitRelativePath || file.relativePath || file._relativePath || '').replace(/[^\/]+$/, '');
									name = relpath + name;
								}
							}
							name? formData.append('upload[]', file, name) : formData.append('upload[]', file);
						}
						if (file._chunk) {
							formData.append('chunk', file._chunk);
							formData.append('cid'  , file._cid);
							formData.append('range', file._range);
							formData.append('mtime[]', file._mtime);
							isChunked = true;
						} else {
							formData.append('mtime[]', file.lastModified? Math.round(file.lastModified/1000) : 0);
						}
					}
				});
				
				if (isDataType) {
					jQuery.each(paths, function(i, path) {
						formData.append('upload_path[]', path);
					});
				}
				
				if (data.overwrite === 0) {
					formData.append('overwrite', 0);
				}
				
				// send int value that which meta key was pressed when dropped  as `dropWith`
				if (dropEvt) {
					formData.append('dropWith', parseInt(
						(dropEvt.altKey  ? '1' : '0')+
						(dropEvt.ctrlKey ? '1' : '0')+
						(dropEvt.metaKey ? '1' : '0')+
						(dropEvt.shiftKey? '1' : '0'), 2));
				}
				
				// set extraData on current request
				if (extraData) {
					jQuery.each(extraData, function(key, val) {
						formData.append(key, val);
					});
				}

				xhr.send(formData);
				
				return true;
			};
			
			if (! isDataType) {
				if (files.length > 0) {
					if (! data.clipdata && renames == null) {
						var mkdirs = [],
							paths = [],
							excludes = fm.options.folderUploadExclude[fm.OS] || null;
						jQuery.each(files, function(i, file) {
							var relPath = file.webkitRelativePath || file.relativePath || '',
								idx, rootDir;
							if (! relPath) {
								return false;
							}
							if (excludes && file.name.match(excludes)) {
								file._remove = true;
								relPath = void(0);
							} else {
								// add '/' as prefix to make same to folder uploading with DnD, see #2607
								relPath = '/' + relPath.replace(/\/[^\/]*$/, '').replace(/^\//, '');
								if (relPath && jQuery.inArray(relPath, mkdirs) === -1) {
									mkdirs.push(relPath);
									// checking the root directory to supports <input type="file" webkitdirectory> see #2378
									idx = relPath.substr(1).indexOf('/');
									if (idx !== -1 && (rootDir = relPath.substr(0, idx + 1)) && jQuery.inArray(rootDir, mkdirs) === -1) {
										mkdirs.unshift(rootDir);
									}
								}
							}
							paths.push(relPath);
						});
						renames = [];
						hashes = {};
						if (mkdirs.length) {
							(function() {
								var checkDirs = jQuery.map(mkdirs, function(name) { return name.substr(1).indexOf('/') === -1 ? {name: name.substr(1)} : null;}),
									cancelDirs = [];
								fm.uploads.checkExists(checkDirs, target, fm, true).done(
									function(res, res2) {
										var dfds = [], dfd, bak, hash;
										if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
											cancelDirs = jQuery.map(checkDirs, function(dir) { return dir._remove? dir.name : null ;} );
											checkDirs = jQuery.grep(checkDirs, function(dir) { return !dir._remove? true : false ;} );
										}
										if (cancelDirs.length) {
											jQuery.each(paths.concat(), function(i, path) {
												if (jQuery.inArray(path, cancelDirs) === 0) {
													files[i]._remove = true;
													paths[i] = void(0);
												}
											});
										}
										files = jQuery.grep(files, function(file) { return file._remove? false : true; });
										paths = jQuery.grep(paths, function(path) { return path === void 0 ? false : true; });
										if (checkDirs.length) {
											dfd = jQuery.Deferred();
											if (res.length) {
												jQuery.each(res, function(i, existName) {
													// backup
													bak = fm.uniqueName(existName + fm.options.backupSuffix , null, '');
													jQuery.each(res2, function(h, name) {
														if (res[0] == name) {
															hash = h;
															return false;
														}
													});
													if (! hash) {
														hash = fm.fileByName(res[0], target).hash;
													}
													fm.lockfiles({files : [hash]});
													dfds.push(
														fm.request({
															data   : {cmd : 'rename', target : hash, name : bak},
															notify : {type : 'rename', cnt : 1}
														})
														.fail(function(error) {
															dfrd.reject(error);
															fm.sync();
														})
														.always(function() {
															fm.unlockfiles({files : [hash]});
														})
													);
												});
											} else {
												dfds.push(null);
											}
											
											jQuery.when.apply($, dfds).done(function() {
												// ensure directories
												fm.request({
													data   : {cmd : 'mkdir', target : target, dirs : mkdirs},
													notify : {type : 'mkdir', cnt : mkdirs.length},
													preventFail: true
												})
												.fail(function(error) {
													error = error || ['errUnknown'];
													if (error[0] === 'errCmdParams') {
														multiMax = 1;
													} else {
														multiMax = 0;
														dfrd.reject(error);
													}
												})
												.done(function(data) {
													var rm = false;
													if (!data.hashes) {
														data.hashes = {};
													}
													paths = jQuery.map(paths.concat(), function(p, i) {
														if (p === '/') {
															return target;
														} else {
															if (data.hashes[p]) {
																return data.hashes[p];
															} else {
																rm = true;
																files[i]._remove = true;
																return null;
															}
														}
													});
													if (rm) {
														files = jQuery.grep(files, function(file) { return file._remove? false : true; });
													}
												})
												.always(function(data) {
													if (multiMax) {
														isDataType = true;
														if (! send(files, paths)) {
															dfrd.reject();
														}
													}
												});
											});
										} else {
											dfrd.reject();
										}
									}
								);
							})();
						} else {
							fm.uploads.checkExists(files, target, fm).done(
								function(res, res2){
									if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
										hashes = res2;
										if (res === null) {
											data.overwrite = 0;
										} else {
											renames = res;
										}
										files = jQuery.grep(files, function(file){return !file._remove? true : false ;});
									}
									cnt = files.length;
									if (cnt > 0) {
										if (! send(files)) {
											dfrd.reject();
										}
									} else {
										dfrd.reject();
									}
								}
							);
						}
					} else {
						if (! send(files)) {
							dfrd.reject();
						}
					}
				} else {
					dfrd.reject();
				}
			} else {
				if (dataChecked) {
					send(files[0], files[1]);
				} else {
					files.done(function(result) { // result: [files, paths, renames, hashes, mkdirs]
						renames = [];
						cnt = result[0].length;
						if (cnt) {
							if (result[4] && result[4].length) {
								// ensure directories
								fm.request({
									data   : {cmd : 'mkdir', target : target, dirs : result[4]},
									notify : {type : 'mkdir', cnt : result[4].length},
									preventFail: true
								})
								.fail(function(error) {
									error = error || ['errUnknown'];
									if (error[0] === 'errCmdParams') {
										multiMax = 1;
									} else {
										multiMax = 0;
										dfrd.reject(error);
									}
								})
								.done(function(data) {
									var rm = false;
									if (!data.hashes) {
										data.hashes = {};
									}
									result[1] = jQuery.map(result[1], function(p, i) {
										result[0][i]._relativePath = p.replace(/^\//, '');
										p = p.replace(/\/[^\/]*$/, '');
										if (p === '') {
											return target;
										} else {
											if (data.hashes[p]) {
												return data.hashes[p];
											} else {
												rm = true;
												result[0][i]._remove = true;
												return null;
											}
										}
									});
									if (rm) {
										result[0] = jQuery.grep(result[0], function(file) { return file._remove? false : true; });
									}
								})
								.always(function(data) {
									if (multiMax) {
										renames = result[2];
										hashes = result[3];
										send(result[0], result[1]);
									}
								});
								return;
							} else {
								result[1] = jQuery.map(result[1], function() { return target; });
							}
							renames = result[2];
							hashes = result[3];
							send(result[0], result[1]);
						} else {
							dfrd.reject(['errUploadNoFiles']);
						}
					}).fail(function(){
						dfrd.reject();
					});
				}
			}

			return dfrd;
		},
		
		// upload transport using iframe
		iframe : function(data, fm) { 
			var self   = fm ? fm : this,
				input  = data.input? data.input : false,
				files  = !input ? self.uploads.checkFile(data, self) : false,
				dfrd   = jQuery.Deferred()
					.fail(function(error) {
						error && self.error(error);
					}),
				name = 'iframe-'+fm.namespace+(++self.iframeCnt),
				form = jQuery('<form action="'+self.uploadURL+'" method="post" enctype="multipart/form-data" encoding="multipart/form-data" target="'+name+'" style="display:none"><input type="hidden" name="cmd" value="upload" /></form>'),
				msie = this.UA.IE,
				// clear timeouts, close notification dialog, remove form/iframe
				onload = function() {
					abortto  && clearTimeout(abortto);
					notifyto && clearTimeout(notifyto);
					notify   && self.notify({type : 'upload', cnt : -cnt});
					
					setTimeout(function() {
						msie && jQuery('<iframe src="javascript:false;"></iframe>').appendTo(form);
						form.remove();
						iframe.remove();
					}, 100);
				},
				iframe = jQuery('<iframe src="'+(msie ? 'javascript:false;' : 'about:blank')+'" name="'+name+'" style="position:absolute;left:-1000px;top:-1000px" ></iframe>')
					.on('load', function() {
						iframe.off('load')
							.on('load', function() {
								onload();
								// data will be processed in callback response or window onmessage
								dfrd.resolve();
							});
							
							// notify dialog
							notifyto = setTimeout(function() {
								notify = true;
								self.notify({type : 'upload', cnt : cnt});
							}, self.options.notifyDelay);
							
							// emulate abort on timeout
							if (self.options.iframeTimeout > 0) {
								abortto = setTimeout(function() {
									onload();
									dfrd.reject(['errConnect', 'errTimeout']);
								}, self.options.iframeTimeout);
							}
							
							form.submit();
					}),
				target  = (data.target || self.cwd().hash),
				names   = [],
				dfds    = [],
				renames = [],
				hashes  = {},
				cnt, notify, notifyto, abortto;

			if (files && files.length) {
				jQuery.each(files, function(i, val) {
					form.append('<input type="hidden" name="upload[]" value="'+val+'"/>');
				});
				cnt = 1;
			} else if (input && jQuery(input).is(':file') && jQuery(input).val()) {
				if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) {
					names = input.files? input.files : [{ name: jQuery(input).val().replace(/^(?:.+[\\\/])?([^\\\/]+)$/, '$1') }];
					//names = jQuery.map(names, function(file){return file.name? { name: file.name } : null ;});
					dfds.push(self.uploads.checkExists(names, target, self).done(
						function(res, res2){
							hashes = res2;
							if (res === null) {
								data.overwrite = 0;
							} else{
								renames = res;
								cnt = jQuery.grep(names, function(file){return !file._remove? true : false ;}).length;
								if (cnt != names.length) {
									cnt = 0;
								}
							}
						}
					));
				}
				cnt = input.files ? input.files.length : 1;
				form.append(input);
			} else {
				return dfrd.reject();
			}
			
			jQuery.when.apply($, dfds).done(function() {
				if (cnt < 1) {
					return dfrd.reject();
				}
				form.append('<input type="hidden" name="'+(self.newAPI ? 'target' : 'current')+'" value="'+target+'"/>')
					.append('<input type="hidden" name="html" value="1"/>')
					.append('<input type="hidden" name="node" value="'+self.id+'"/>')
					.append(jQuery(input).attr('name', 'upload[]'));
				
				if (renames.length > 0) {
					jQuery.each(renames, function(i, rename) {
						form.append('<input type="hidden" name="renames[]" value="'+self.escape(rename)+'"/>');
					});
					form.append('<input type="hidden" name="suffix" value="'+fm.options.backupSuffix+'"/>');
				}
				if (hashes) {
					jQuery.each(renames, function(i, v) {
						form.append('<input type="hidden" name="['+i+']" value="'+self.escape(v)+'"/>');
					});
				}
				
				if (data.overwrite === 0) {
					form.append('<input type="hidden" name="overwrite" value="0"/>');
				}
				
				jQuery.each(self.options.onlyMimes||[], function(i, mime) {
					form.append('<input type="hidden" name="mimes[]" value="'+self.escape(mime)+'"/>');
				});
				
				jQuery.each(self.customData, function(key, val) {
					form.append('<input type="hidden" name="'+key+'" value="'+self.escape(val)+'"/>');
				});
				
				form.appendTo('body');
				iframe.appendTo('body');
			});
			
			return dfrd;
		}
	},
	
	
	/**
	 * Bind callback to event(s) The callback is executed at most once per event.
	 * To bind to multiply events at once, separate events names by space
	 *
	 * @param  String    event name
	 * @param  Function  callback
	 * @param  Boolan    priority first
	 * @return elFinder
	 */
	one : function(ev, callback, priorityFirst) {
		var self  = this,
			event = ev.toLowerCase(),
			h     = function(e, f) {
				if (!self.toUnbindEvents[event]) {
					self.toUnbindEvents[event] = [];
				}
				self.toUnbindEvents[event].push({
					type: event,
					callback: h
				});
				return (callback.done? callback.done : callback).apply(this, arguments);
			};
		if (callback.done) {
			h = {done: h};
		}
		return this.bind(event, h, priorityFirst);
	},
	
	/**
	 * Set/get data into/from localStorage
	 *
	 * @param  String       key
	 * @param  String|void  value
	 * @return String|null
	 */
	localStorage : function(key, val) {
		var self   = this,
			s      = window.localStorage,
			oldkey = 'elfinder-'+(key || '')+this.id, // old key of elFinder < 2.1.6
			prefix = window.location.pathname+'-elfinder-',
			suffix = this.id,
			clrs   = [],
			retval, oldval, t, precnt, sufcnt;

		// reset this node data
		if (typeof(key) === 'undefined') {
			precnt = prefix.length;
			sufcnt = suffix.length * -1;
			jQuery.each(s, function(key) {
				if (key.substr(0, precnt) === prefix && key.substr(sufcnt) === suffix) {
					clrs.push(key);
				}
			});
			jQuery.each(clrs, function(i, key) {
				s.removeItem(key);
			});
			return true;
		}
		
		// new key of elFinder >= 2.1.6
		key = prefix+key+suffix;
		
		if (val === null) {
			return s.removeItem(key);
		}
		
		if (val === void(0) && !(retval = s.getItem(key)) && (oldval = s.getItem(oldkey))) {
			val = oldval;
			s.removeItem(oldkey);
		}
		
		if (val !== void(0)) {
			t = typeof val;
			if (t !== 'string' && t !== 'number') {
				val = JSON.stringify(val);
			}
			try {
				s.setItem(key, val);
			} catch (e) {
				try {
					s.clear();
					s.setItem(key, val);
				} catch (e) {
					self.debug('error', e.toString());
				}
			}
			retval = s.getItem(key);
		}

		if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) {
			try {
				return JSON.parse(retval);
			} catch(e) {}
		}
		return retval;
	},

	/**
	 * Set/get data into/from sessionStorage
	 *
	 * @param  String       key
	 * @param  String|void  value
	 * @return String|null
	 */
	sessionStorage : function(key, val) {
		var self   = this,
			s, retval, t;

		try {
			s = window.sessionStorage;
		} catch(e) {}

		if (!s) {
			return;
		}

		if (val === null) {
			return s.removeItem(key);
		}

		if (val !== void(0)) {
			t = typeof val;
			if (t !== 'string' && t !== 'number') {
				val = JSON.stringify(val);
			}
			try {
				s.setItem(key, val);
			} catch (e) {
				try {
					s.clear();
					s.setItem(key, val);
				} catch (e) {
					self.debug('error', e.toString());
				}
			}
		}
		retval = s.getItem(key);

		if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) {
			try {
				return JSON.parse(retval);
			} catch(e) {}
		}
		return retval;
	},

	/**
	 * Get/set cookie
	 *
	 * @param  String       cookie name
	 * @param  String|void  cookie value
	 * @return String|null
	 */
	cookie : function(name, value) {
		var d, o, c, i, retval, t;

		name = 'elfinder-'+name+this.id;

		if (value === void(0)) {
			if (this.cookieEnabled && document.cookie && document.cookie != '') {
				c = document.cookie.split(';');
				name += '=';
				for (i=0; i<c.length; i++) {
					c[i] = jQuery.trim(c[i]);
					if (c[i].substring(0, name.length) == name) {
						retval = decodeURIComponent(c[i].substring(name.length));
						if (retval.substr(0,1) === '{' || retval.substr(0,1) === '[') {
							try {
								return JSON.parse(retval);
							} catch(e) {}
						}
						return retval;
					}
				}
			}
			return null;
		}

		if (!this.cookieEnabled) {
			return '';
		}

		o = Object.assign({}, this.options.cookie);
		if (value === null) {
			value = '';
			o.expires = -1;
		} else {
			t = typeof value;
			if (t !== 'string' && t !== 'number') {
				value = JSON.stringify(value);
			}
		}
		if (typeof(o.expires) == 'number') {
			d = new Date();
			d.setTime(d.getTime()+(o.expires * 86400000));
			o.expires = d;
		}
		document.cookie = name+'='+encodeURIComponent(value)+'; expires='+o.expires.toUTCString()+(o.path ? '; path='+o.path : '')+(o.domain ? '; domain='+o.domain : '')+(o.secure ? '; secure' : '')+(o.samesite ? '; samesite='+o.samesite : '');
		if (value && (value.substr(0,1) === '{' || value.substr(0,1) === '[')) {
			try {
				return JSON.parse(value);
			} catch(e) {}
		}
		return value;
	},
	
	/**
	 * Get start directory (by location.hash or last opened directory)
	 * 
	 * @return String
	 */
	startDir : function() {
		var locHash = window.location.hash;
		if (locHash && locHash.match(/^#elf_/)) {
			return locHash.replace(/^#elf_/, '');
		} else if (this.options.startPathHash) {
			return this.options.startPathHash;
		} else {
			return this.lastDir();
		}
	},
	
	/**
	 * Get/set last opened directory
	 * 
	 * @param  String|undefined  dir hash
	 * @return String
	 */
	lastDir : function(hash) { 
		return this.options.rememberLastDir ? this.storage('lastdir', hash) : '';
	},
	
	/**
	 * Node for escape html entities in texts
	 * 
	 * @type jQuery
	 */
	_node : jQuery('<span></c.length;>'),
	
	/**
	 * Replace not html-safe symbols to html entities
	 * 
	 * @param  String  text to escape
	 * @return String
	 */
	escape : function(name) {
		return this._node.text(name).html().replace(/"/g, '&quot;').replace(/'/g, '&#039;');
	},
	
	/**
	 * Cleanup ajax data.
	 * For old api convert data into new api format
	 * 
	 * @param  String  command name
	 * @param  Object  data from backend
	 * @return Object
	 */
	normalize : function(data) {
		var self   = this,
			fileFilter = (function() {
				var func, filter;
				if (filter = self.options.fileFilter) {
					if (typeof filter === 'function') {
						func = function(file) {
							return filter.call(self, file);
						};
					} else if (filter instanceof RegExp) {
						func = function(file) {
							return filter.test(file.name);
						};
					}
				}
				return func? func : null;
			})(),
			chkCmdMap = function(opts) {
				// Disable command to replace with other command
				var disabled;
				if (opts.uiCmdMap) {
					if (jQuery.isPlainObject(opts.uiCmdMap) && Object.keys(opts.uiCmdMap).length) {
						if (!opts.disabledFlip) {
							opts.disabledFlip = {};
						}
						disabled = opts.disabledFlip;
						jQuery.each(opts.uiCmdMap, function(f, t) {
							if (t === 'hidden' && !disabled[f]) {
								opts.disabled.push(f);
								opts.disabledFlip[f] = true;
							}
						});
					} else {
						delete opts.uiCmdMap;
					}
				}
			},
			normalizeOptions = function(opts) {
				var getType = function(v) {
						var type = typeof v;
						if (type === 'object' && Array.isArray(v)) {
							type = 'array';
						}
						return type;
					};
				jQuery.each(self.optionProperties, function(k, empty) {
					if (empty !== void(0)) {
						if (opts[k] && getType(opts[k]) !== getType(empty)) {
							opts[k] = empty;
						}
					}
				});
				if (opts.disabled) {
					opts.disabledFlip = self.arrayFlip(opts.disabled, true);
					jQuery.each(self.options.disabledCmdsRels, function(com, rels) {
						var m, flg;
						if (opts.disabledFlip[com]) {
							flg = true;
						} else if (m = com.match(/^([^&]+)&([^=]+)=(.*)$/)) {
							if (opts.disabledFlip[m[1]] && opts[m[2]] == m[3]) {
								flg = true;
							}
						}
						if (flg) {
							jQuery.each(rels, function(i, rel) {
								if (!opts.disabledFlip[rel]) {
									opts.disabledFlip[rel] = true;
									opts.disabled.push(rel);
								}
							});
						}
					});
				} else {
					opts.disabledFlip = {};
				}
				return opts;
			},
			filter = function(file, asMap, type) { 
				var res = asMap? file : true,
					ign = asMap? null : false,
					vid, targetOptions, isRoot, rootNames;
				
				if (file && file.hash && file.name && file.mime) {
					if (file.mime === 'application/x-empty') {
						file.mime = 'text/plain';
					}
					
					isRoot = self.isRoot(file);
					if (isRoot && ! file.volumeid) {
						self.debug('warning', 'The volume root statuses requires `volumeid` property.');
					}
					if (isRoot || file.mime === 'directory') {
						// Prevention of circular reference
						if (file.phash) {
							if (file.phash === file.hash) {
								error = error.concat(['Parent folder of "$1" is itself.', file.name]);
								return ign;
							}
							if (isRoot && file.volumeid && file.phash.indexOf(file.volumeid) === 0) {
								error = error.concat(['Parent folder of "$1" is inner itself.', file.name]);
								return ign;
							}
						}
						
						// set options, tmbUrls for each volume
						if (file.volumeid) {
							vid = file.volumeid;
							
							if (isRoot) {
								// make or update of leaf roots cache
								if (file.phash) {
									if (! self.leafRoots[file.phash]) {
										self.leafRoots[file.phash] = [ file.hash ];
									} else {
										if (jQuery.inArray(file.hash, self.leafRoots[file.phash]) === -1) {
											self.leafRoots[file.phash].push(file.hash);
										}
									}
								}

								self.hasVolOptions = true;
								if (! self.volOptions[vid]) {
									self.volOptions[vid] = {
										// set dispInlineRegex
										dispInlineRegex: self.options.dispInlineRegex
									};
								}
								
								targetOptions = self.volOptions[vid];
								
								if (file.options) {
									// >= v.2.1.14 has file.options
									Object.assign(targetOptions, file.options);
								}
								
								// for compat <= v2.1.13
								if (file.disabled) {
									targetOptions.disabled = file.disabled;
									targetOptions.disabledFlip = self.arrayFlip(file.disabled, true);
								}
								if (file.tmbUrl) {
									targetOptions.tmbUrl = file.tmbUrl;
								}
								
								// '/' required at the end of url
								if (targetOptions.url && targetOptions.url.substr(-1) !== '/') {
									targetOptions.url += '/';
								}

								// check uiCmdMap
								chkCmdMap(targetOptions);
								
								// check trash bin hash
								if (targetOptions.trashHash) {
									if (self.trashes[targetOptions.trashHash] === false) {
										delete targetOptions.trashHash;
									} else {
										self.trashes[targetOptions.trashHash] = file.hash;
									}
								}
								
								// set immediate properties
								jQuery.each(self.optionProperties, function(k) {
									if (targetOptions[k]) {
										file[k] = targetOptions[k];
									}
								});

								// regist fm.roots
								if (type !== 'cwd') {
									self.roots[vid] = file.hash;
								}

								// regist fm.volumeExpires
								if (file.expires) {
									self.volumeExpires[vid] = file.expires;
								}
							}
							
							if (prevId !== vid) {
								prevId = vid;
								i18nFolderName = self.option('i18nFolderName', vid);
							}
						}
						
						// volume root i18n name
						if (isRoot && ! file.i18) {
							name = 'volume_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
						
						// i18nFolderName
						if (i18nFolderName && ! file.i18) {
							name = 'folder_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
						
						if (isRoot) {
							if (rootNames = self.storage('rootNames')) {
								if (rootNames[file.hash]) {
									file._name = file.name;
									file._i18 = file.i18;
									file.name = rootNames[file.hash] = rootNames[file.hash];
									delete file.i18;
								}
								self.storage('rootNames', rootNames);
							}
						}

						// lock trash bins holder
						if (self.trashes[file.hash]) {
							file.locked = true;
						}
					} else {
						if (fileFilter) {
							try {
								if (! fileFilter(file)) {
									return ign;
								}
							} catch(e) {
								self.debug(e);
							}
						}
						if (file.size == 0) {
							file.mime = self.getMimetype(file.name, file.mime);
						}
					}
					
					if (file.options) {
						self.optionsByHashes[file.hash] = normalizeOptions(file.options);
					}
					
					delete file.options;
					
					return res;
				}
				return ign;
			},
			getDescendants = function(hashes) {
				var res = [];
				jQuery.each(self.files(), function(h, f) {
					jQuery.each(self.parents(h), function(i, ph) {
						if (jQuery.inArray(ph, hashes) !== -1 && jQuery.inArray(h, hashes) === -1) {
							res.push(h);
							return false;
						}
					});
				});
				return res;
			},
			applyLeafRootStats = function(dataArr, type) {
				jQuery.each(dataArr, function(i, f) {
					var pfile, done;
					if (self.leafRoots[f.hash]) {
						self.applyLeafRootStats(f);
					}
					// update leaf root parent stat
					if (type !== 'change' && f.phash && self.isRoot(f) && (pfile = self.file(f.phash))) {
						self.applyLeafRootStats(pfile);
						// add to data.changed
						if (!data.changed) {
							data.changed = [pfile];
						} else {
							jQuery.each(data.changed, function(i, f) {
								if (f.hash === pfile.hash) {
									data.changed[i] = pfile;
									done = true;
									return false;
								}
							});
							if (!done) {
								data.changed.push(pfile);
							}
						}
					}
				});
			},
			error = [],
			name, i18, i18nFolderName, prevId, cData;
		
		// set cunstom data
		if (data.customData && (!self.prevCustomData || (JSON.stringify(data.customData) !== JSON.stringify(self.prevCustomData)))) {
			self.prevCustomData = data.customData;
			try {
				cData = JSON.parse(data.customData);
				if (jQuery.isPlainObject(cData)) {
					self.prevCustomData = cData;
					jQuery.each(Object.keys(cData), function(i, key) {
						if (cData[key] === null) {
							delete cData[key];
							delete self.optsCustomData[key];
						}
					});
					self.customData = Object.assign({}, self.optsCustomData, cData);
				}
			} catch(e) {}
		}

		if (data.options) {
			normalizeOptions(data.options);
		}
		
		if (data.cwd) {
			if (data.cwd.volumeid && data.options && Object.keys(data.options).length && self.isRoot(data.cwd)) {
				self.hasVolOptions = true;
				self.volOptions[data.cwd.volumeid] = data.options;
			}
			data.cwd = filter(data.cwd, true, 'cwd');
		}
		if (data.files) {
			data.files = jQuery.grep(data.files, filter);
		} 
		if (data.tree) {
			data.tree = jQuery.grep(data.tree, filter);
		}
		if (data.added) {
			data.added = jQuery.grep(data.added, filter);
		}
		if (data.changed) {
			data.changed = jQuery.grep(data.changed, filter);
		}
		if (data.removed && data.removed.length && self.searchStatus.state === 2) {
			data.removed = data.removed.concat(getDescendants(data.removed));
		}
		if (data.api) {
			data.init = true;
		}

		if (Object.keys(self.leafRoots).length) {
			data.files && applyLeafRootStats(data.files);
			data.tree && applyLeafRootStats(data.tree);
			data.added && applyLeafRootStats(data.added);
			data.changed && applyLeafRootStats(data.changed, 'change');
		}

		// merge options that apply only to cwd
		if (data.cwd && data.cwd.options && data.options) {
			Object.assign(data.options, normalizeOptions(data.cwd.options));
		}

		// '/' required at the end of url
		if (data.options && data.options.url && data.options.url.substr(-1) !== '/') {
			data.options.url += '/';
		}
		
		// check error
		if (error.length) {
			data.norError = ['errResponse'].concat(error);
		}
		
		return data;
	},
	
	/**
	 * Update sort options
	 *
	 * @param {String} sort type
	 * @param {String} sort order
	 * @param {Boolean} show folder first
	 */
	setSort : function(type, order, stickFolders, alsoTreeview) {
		this.storage('sortType', (this.sortType = this.sortRules[type] ? type : 'name'));
		this.storage('sortOrder', (this.sortOrder = /asc|desc/.test(order) ? order : 'asc'));
		this.storage('sortStickFolders', (this.sortStickFolders = !!stickFolders) ? 1 : '');
		this.storage('sortAlsoTreeview', (this.sortAlsoTreeview = !!alsoTreeview) ? 1 : '');
		this.trigger('sortchange');
	},
	
	_sortRules : {
		name : function(file1, file2) {
			return elFinder.prototype.naturalCompare(file1.i18 || file1.name, file2.i18 || file2.name);
		},
		size : function(file1, file2) { 
			var size1 = parseInt(file1.size) || 0,
				size2 = parseInt(file2.size) || 0;
				
			return size1 === size2 ? 0 : size1 > size2 ? 1 : -1;
		},
		kind : function(file1, file2) {
			return elFinder.prototype.naturalCompare(file1.mime, file2.mime);
		},
		date : function(file1, file2) { 
			var date1 = file1.ts || file1.date || 0,
				date2 = file2.ts || file2.date || 0;

			return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;
		},
		perm : function(file1, file2) { 
			var val = function(file) { return (file.write? 2 : 0) + (file.read? 1 : 0); },
				v1  = val(file1),
				v2  = val(file2);
			return v1 === v2 ? 0 : v1 > v2 ? 1 : -1;
		},
		mode : function(file1, file2) { 
			var v1 = file1.mode || (file1.perm || ''),
				v2 = file2.mode || (file2.perm || '');
			return elFinder.prototype.naturalCompare(v1, v2);
		},
		owner : function(file1, file2) { 
			var v1 = file1.owner || '',
				v2 = file2.owner || '';
			return elFinder.prototype.naturalCompare(v1, v2);
		},
		group : function(file1, file2) { 
			var v1 = file1.group || '',
				v2 = file2.group || '';
			return elFinder.prototype.naturalCompare(v1, v2);
		}
	},
	
	/**
	 * Valid sort rule names
	 * 
	 * @type Object
	 */
	sorters : {},
	
	/**
	 * Compare strings for natural sort
	 *
	 * @param  String
	 * @param  String
	 * @return Number
	 */
	naturalCompare : function(a, b) {
		var self = elFinder.prototype.naturalCompare;
		if (typeof self.loc == 'undefined') {
			self.loc = (navigator.userLanguage || navigator.browserLanguage || navigator.language || 'en-US');
		}
		if (typeof self.sort == 'undefined') {
			if ('11'.localeCompare('2', self.loc, {numeric: true}) > 0) {
				// Native support
				if (window.Intl && window.Intl.Collator) {
					self.sort = new Intl.Collator(self.loc, {numeric: true}).compare;
				} else {
					self.sort = function(a, b) {
						return a.localeCompare(b, self.loc, {numeric: true});
					};
				}
			} else {
				/*
				 * Edited for elFinder (emulates localeCompare() by numeric) by Naoki Sawada aka nao-pon
				 */
				/*
				 * Huddle/javascript-natural-sort (https://github.com/Huddle/javascript-natural-sort)
				 */
				/*
				 * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
				 * Author: Jim Palmer (based on chunking idea from Dave Koelle)
				 * http://opensource.org/licenses/mit-license.php
				 */
				self.sort = function(a, b) {
					var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
					sre = /(^[ ]*|[ ]*$)/g,
					dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
					hre = /^0x[0-9a-f]+$/i,
					ore = /^0/,
					syre = /^[\x01\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/, // symbol first - (Naoki Sawada)
					i = function(s) { return self.sort.insensitive && (''+s).toLowerCase() || ''+s; },
					// convert all to strings strip whitespace
					// first character is "_", it's smallest - (Naoki Sawada)
					x = i(a).replace(sre, '').replace(/^_/, "\x01") || '',
					y = i(b).replace(sre, '').replace(/^_/, "\x01") || '',
					// chunk/tokenize
					xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
					yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
					// numeric, hex or date detection
					xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
					yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null,
					oFxNcL, oFyNcL,
					locRes = 0;

					// first try and sort Hex codes or Dates
					if (yD) {
						if ( xD < yD ) return -1;
						else if ( xD > yD ) return 1;
					}
					// natural sorting through split numeric strings and default strings
					for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {

						// find floats not starting with '0', string or 0 if not defined (Clint Priest)
						oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
						oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;

						// handle numeric vs string comparison - number < string - (Kyle Adams)
						// but symbol first < number - (Naoki Sawada)
						if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {
							if (isNaN(oFxNcL) && (typeof oFxNcL !== 'string' || ! oFxNcL.match(syre))) {
								return 1;
							} else if (typeof oFyNcL !== 'string' || ! oFyNcL.match(syre)) {
								return -1;
							}
						}

						// use decimal number comparison if either value is string zero
						if (parseInt(oFxNcL, 10) === 0) oFxNcL = 0;
						if (parseInt(oFyNcL, 10) === 0) oFyNcL = 0;

						// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
						if (typeof oFxNcL !== typeof oFyNcL) {
							oFxNcL += '';
							oFyNcL += '';
						}

						// use locale sensitive sort for strings when case insensitive
						// note: localeCompare interleaves uppercase with lowercase (e.g. A,a,B,b)
						if (self.sort.insensitive && typeof oFxNcL === 'string' && typeof oFyNcL === 'string') {
							locRes = oFxNcL.localeCompare(oFyNcL, self.loc);
							if (locRes !== 0) return locRes;
						}

						if (oFxNcL < oFyNcL) return -1;
						if (oFxNcL > oFyNcL) return 1;
					}
					return 0;
				};
				self.sort.insensitive = true;
			}
		}
		return self.sort(a, b);
	},
	
	/**
	 * Compare files based on elFinder.sort
	 *
	 * @param  Object  file
	 * @param  Object  file
	 * @return Number
	 */
	compare : function(file1, file2) {
		var self  = this,
			type  = self.sortType,
			asc   = self.sortOrder == 'asc',
			stick = self.sortStickFolders,
			rules = self.sortRules,
			sort  = rules[type],
			d1    = file1.mime == 'directory',
			d2    = file2.mime == 'directory',
			res;
			
		if (stick) {
			if (d1 && !d2) {
				return -1;
			} else if (!d1 && d2) {
				return 1;
			}
		}
		
		res = asc ? sort(file1, file2) : sort(file2, file1);
		
		return type !== 'name' && res === 0
			? res = asc ? rules.name(file1, file2) : rules.name(file2, file1)
			: res;
	},
	
	/**
	 * Sort files based on config
	 *
	 * @param  Array  files
	 * @return Array
	 */
	sortFiles : function(files) {
		return files.sort(this.compare);
	},
	
	/**
	 * Open notification dialog 
	 * and append/update message for required notification type.
	 *
	 * @param  Object  options
	 * @example  
	 * this.notify({
	 *    type : 'copy',
	 *    msg : 'Copy files', // not required for known types @see this.notifyType
	 *    cnt : 3,
	 *    hideCnt  : false,   // true for not show count
	 *    progress : 10,      // progress bar percents (use cnt : 0 to update progress bar)
	 *    cancel   : callback // callback function for cancel button
	 * })
	 * @return elFinder
	 */
	notify : function(opts) {
		var self     = this,
			type     = opts.type,
			id       = opts.id? 'elfinder-notify-'+opts.id : '',
			msg      = this.i18n((typeof opts.msg !== 'undefined')? opts.msg : (this.messages['ntf'+type] ? 'ntf'+type : 'ntfsmth')),
			hiddens  = this.arrayFlip(this.options.notifyDialog.hiddens || []),
			ndialog  = this.ui.notify,
			dialog   = ndialog.closest('.ui-dialog'),
			notify   = ndialog.children('.elfinder-notify-'+type+(id? ('.'+id) : '')),
			button   = notify.children('div.elfinder-notify-cancel').children('button'),
			ntpl     = '<div class="elfinder-notify elfinder-notify-{type}'+(id? (' '+id) : '')+'"><span class="elfinder-dialog-icon elfinder-dialog-icon-{type}"></span><span class="elfinder-notify-msg">{msg}</span> <span class="elfinder-notify-cnt"></span><div class="elfinder-notify-progressbar"><div class="elfinder-notify-progress"></div></div><div class="elfinder-notify-cancel"></div></div>',
			delta    = opts.cnt + 0,
			size     = (typeof opts.size != 'undefined')? parseInt(opts.size) : null,
			progress = (typeof opts.progress != 'undefined' && opts.progress >= 0) ? opts.progress : null,
			fakeint  = opts.fakeinterval || 200,
			cancel   = opts.cancel,
			clhover  = 'ui-state-hover',
			close    = function() {
				var prog = notify.find('.elfinder-notify-progress'),
					rm = function() {
						notify.remove();
						if (!ndialog.children(dialog.data('minimized')? void(0) : ':visible').length) {
							if (dialog.data('minimized')) {
								dialog.data('minimized').hide();
							} else {
								ndialog.elfinderdialog('close');
							}
						}
						setProgressbar();
					};
				notify._esc && jQuery(document).off('keydown', notify._esc);
				if (notify.data('cur') < 100) {
					prog.animate({
						width : '100%'
					}, 50, function() { requestAnimationFrame(function() { rm(); }); });
				} else {
					rm();
				}
			},
			fakeUp = function(interval) {
				var cur;
				if (notify.length) {
					cur = notify.data('cur') + 1;
					if (cur <= 98) {
						notify.find('.elfinder-notify-progress').width(cur + '%');
						notify.data('cur', cur);
						setProgressbar();
						setTimeout(function() {
							interval *= 1.05; 
							fakeUp(interval);
						}, interval);
					}
				}
			},
			setProgressbar = function() {
				var cnt = 0,
					val = 0,
					ntfs = ndialog.children('.elfinder-notify'),
					w;
				if (ntfs.length) {
					ntfs.each(function() {
						cnt++;
						val += Math.min(jQuery(this).data('cur'), 100);
					});
					w = cnt? Math.floor(val / (cnt * 100) * 100) + '%' : 0;
					self.ui.progressbar.width(w);
					if (dialog.data('minimized')) {
						dialog.data('minimized').title(w);
						dialog.data('minimized').dialog().children('.ui-dialog-titlebar').children('.elfinder-ui-progressbar').width(w);
					}
				} else {
					self.ui.progressbar.width(0);
					dialog.data('minimized') && dialog.data('minimized').hide();
				}
			},
			cnt, total, prc;

		if (!type) {
			return this;
		}
		
		if (!notify.length) {
			notify = jQuery(ntpl.replace(/\{type\}/g, type).replace(/\{msg\}/g, msg));
			if (hiddens[type]) {
				notify.hide();
			} else {
				ndialog.on('minimize', function(e) {
					dialog.data('minimized') && setProgressbar();
				});
			}
			notify.appendTo(ndialog).data('cnt', 0);

			if (progress != null) {
				notify.data({progress : 0, total : 0, cur : 0});
			} else {
				notify.data({cur : 0});
				fakeUp(fakeint);
			}

			if (cancel) {
				button = jQuery('<span class="elfinder-notify-button ui-icon ui-icon-close" title="'+this.i18n('btnCancel')+'"></span>')
					.on('mouseenter mouseleave', function(e) { 
						jQuery(this).toggleClass(clhover, e.type === 'mouseenter');
					});
				notify.children('div.elfinder-notify-cancel').append(button);
			}
			ndialog.trigger('resize');
		} else if (typeof opts.msg !== 'undefined') {
			notify.children('span.elfinder-notify-msg').html(msg);
		}

		cnt = delta + parseInt(notify.data('cnt'));
		
		if (cnt > 0) {
			if (cancel && button.length) {
				if (jQuery.isFunction(cancel) || (typeof cancel === 'object' && cancel.promise)) {
					notify._esc = function(e) {
						if (e.type == 'keydown' && e.keyCode != jQuery.ui.keyCode.ESCAPE) {
							return;
						}
						e.preventDefault();
						e.stopPropagation();
						close();
						if (cancel.promise) {
							cancel.reject(0); // 0 is canceling flag
						} else {
							cancel(e);
						}
					};
					button.on('click', function(e) {
						notify._esc(e);
					});
					jQuery(document).on('keydown.' + this.namespace, notify._esc);
				}
			}
			
			!opts.hideCnt && notify.children('.elfinder-notify-cnt').text('('+cnt+')');
			if (delta > 0 && ndialog.is(':hidden') && !hiddens[type]) {
				if (dialog.data('minimized')) {
					dialog.data('minimized').show();
				} else {
					ndialog.elfinderdialog('open', this).height('auto');
				}
			}
			notify.data('cnt', cnt);
			
			if ((progress != null)
			&& (total = notify.data('total')) >= 0
			&& (prc = notify.data('progress')) >= 0) {

				total += size != null? size : delta;
				prc   += progress;
				(size == null && delta < 0) && (prc += delta * 100);
				notify.data({progress : prc, total : total});
				if (size != null) {
					prc *= 100;
					total = Math.max(1, total);
				}
				progress = Math.min(parseInt(prc/total), 100);
				
				notify.find('.elfinder-notify-progress')
					.animate({
						width : (progress < 100 ? progress : 100)+'%'
					}, 20, function() {
						notify.data('cur', progress);
						setProgressbar();
					});
			}
			
		} else {
			close();
		}
		
		return this;
	},
	
	/**
	 * Open confirmation dialog 
	 *
	 * @param  Object  options
	 * @example  
	 * this.confirm({
	 *    cssClass : 'elfinder-confirm-mydialog',
	 *    title : 'Remove files',
	 *    text  : 'Here is question text',
	 *    accept : {  // accept callback - required
	 *      label : 'Continue',
	 *      callback : function(applyToAll) { fm.log('Ok') }
	 *    },
	 *    cancel : { // cancel callback - required
	 *      label : 'Cancel',
	 *      callback : function() { fm.log('Cancel')}
	 *    },
	 *    reject : { // reject callback - optionally
	 *      label : 'No',
	 *      callback : function(applyToAll) { fm.log('No')}
	 *    },
	 *    buttons : [ // additional buttons callback - optionally
	 *      {
	 *        label : 'Btn1',
	 *        callback : function(applyToAll) { fm.log('Btn1')}
	 *      }
	 *    ],
	 *    all : true  // display checkbox "Apply to all"
	 * })
	 * @return elFinder
	 */
	confirm : function(opts) {
		var self     = this,
			complete = false,
			options = {
				cssClass  : 'elfinder-dialog-confirm',
				modal     : true,
				resizable : false,
				title     : this.i18n(opts.title || 'confirmReq'),
				buttons   : {},
				close     : function() { 
					!complete && opts.cancel.callback();
					jQuery(this).elfinderdialog('destroy');
				}
			},
			apply = this.i18n('apllyAll'),
			label, checkbox, btnNum;

		if (opts.cssClass) {
			options.cssClass += ' ' + opts.cssClass;
		}
		options.buttons[this.i18n(opts.accept.label)] = function() {
			opts.accept.callback(!!(checkbox && checkbox.prop('checked')));
			complete = true;
			jQuery(this).elfinderdialog('close');
		};
		options.buttons[this.i18n(opts.accept.label)]._cssClass = 'elfinder-confirm-accept';
		
		if (opts.reject) {
			options.buttons[this.i18n(opts.reject.label)] = function() {
				opts.reject.callback(!!(checkbox && checkbox.prop('checked')));
				complete = true;
				jQuery(this).elfinderdialog('close');
			};
			options.buttons[this.i18n(opts.reject.label)]._cssClass = 'elfinder-confirm-reject';
		}
		
		if (opts.buttons && opts.buttons.length > 0) {
			btnNum = 1;
			jQuery.each(opts.buttons, function(i, v){
				options.buttons[self.i18n(v.label)] = function() {
					v.callback(!!(checkbox && checkbox.prop('checked')));
					complete = true;
					jQuery(this).elfinderdialog('close');
				};
				options.buttons[self.i18n(v.label)]._cssClass = 'elfinder-confirm-extbtn' + (btnNum++);
				if (v.cssClass) {
					options.buttons[self.i18n(v.label)]._cssClass += ' ' + v.cssClass;
				}
			});
		}
		
		options.buttons[this.i18n(opts.cancel.label)] = function() {
			jQuery(this).elfinderdialog('close');
		};
		options.buttons[this.i18n(opts.cancel.label)]._cssClass = 'elfinder-confirm-cancel';
		
		if (opts.all) {
			options.create = function() {
				var base = jQuery('<div class="elfinder-dialog-confirm-applyall"></div>');
				checkbox = jQuery('<input type="checkbox" />');
				jQuery(this).next().find('.ui-dialog-buttonset')
					.prepend(base.append(jQuery('<label>'+apply+'</label>').prepend(checkbox)));
			};
		}
		
		if (opts.optionsCallback && jQuery.isFunction(opts.optionsCallback)) {
			opts.optionsCallback(options);
		}
		
		return this.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-confirm"></span>' + this.i18n(opts.text), options);
	},
	
	/**
	 * Create unique file name in required dir
	 * 
	 * @param  String  file name
	 * @param  String  parent dir hash
	 * @param  String  glue
	 * @return String
	 */
	uniqueName : function(prefix, phash, glue) {
		var i = 0, ext = '', p, name;
		
		prefix = this.i18n(false, prefix);
		phash = phash || this.cwd().hash;
		glue = (typeof glue === 'undefined')? ' ' : glue;

		if (p = prefix.match(/^(.+)(\.[^.]+)$/)) {
			ext    = p[2];
			prefix = p[1];
		}
		
		name   = prefix+ext;
		
		if (!this.fileByName(name, phash)) {
			return name;
		}
		while (i < 10000) {
			name = prefix + glue + (++i) + ext;
			if (!this.fileByName(name, phash)) {
				return name;
			}
		}
		return prefix + Math.random() + ext;
	},
	
	/**
	 * Return message translated onto current language
	 * Allowed accept HTML element that was wrapped in jQuery object
	 * To be careful to XSS vulnerability of HTML element Ex. You should use `fm.escape(file.name)`
	 *
	 * @param  String|Array  message[s]|Object jQuery
	 * @return String
	 **/
	i18n : function() {
		var self = this,
			messages = this.messages, 
			input    = [],
			ignore   = [], 
			message = function(m) {
				var file;
				if (m.indexOf('#') === 0) {
					if ((file = self.file(m.substr(1)))) {
						return file.name;
					}
				}
				return m;
			},
			i, j, m, escFunc, start = 0, isErr;
		
		if (arguments.length && arguments[0] === false) {
			escFunc = function(m){ return m; };
			start = 1;
		}
		for (i = start; i< arguments.length; i++) {
			m = arguments[i];
			
			if (Array.isArray(m)) {
				for (j = 0; j < m.length; j++) {
					if (m[j] instanceof jQuery) {
						// jQuery object is HTML element
						input.push(m[j]);
					} else if (typeof m[j] !== 'undefined'){
						input.push(message('' + m[j]));
					}
				}
			} else if (m instanceof jQuery) {
				// jQuery object is HTML element
				input.push(m[j]);
			} else if (typeof m !== 'undefined'){
				input.push(message('' + m));
			}
		}
		
		for (i = 0; i < input.length; i++) {
			// dont translate placeholders
			if (jQuery.inArray(i, ignore) !== -1) {
				continue;
			}
			m = input[i];
			if (typeof m == 'string') {
				isErr = !!(messages[m] && m.match(/^err/));
				// translate message
				m = messages[m] || (escFunc? escFunc(m) : self.escape(m));
				// replace placeholders in message
				m = m.replace(/\$(\d+)/g, function(match, placeholder) {
					var res;
					placeholder = i + parseInt(placeholder);
					if (placeholder > 0 && input[placeholder]) {
						ignore.push(placeholder);
					}
					res = escFunc? escFunc(input[placeholder]) : self.escape(input[placeholder]);
					if (isErr) {
						res = '<span class="elfinder-err-var elfinder-err-var' + placeholder + '">' + res + '</span>';
					}
					return res;
				});
			} else {
				// get HTML from jQuery object
				m = m.get(0).outerHTML;
			}

			input[i] = m;
		}

		return jQuery.grep(input, function(m, i) { return jQuery.inArray(i, ignore) === -1 ? true : false; }).join('<br>');
	},
	
	/**
	 * Get icon style from file.icon
	 * 
	 * @param  Object  elFinder file object
	 * @return String|Object
	 */
	getIconStyle : function(file, asObject) {
		var self = this,
			template = {
				'background' : 'url(\'{url}\') 0 0 no-repeat',
				'background-size' : 'contain'
			},
			style = '',
			cssObj = {},
			i = 0;
		if (file.icon) {
			style = 'style="';
			jQuery.each(template, function(k, v) {
				if (i++ === 0) {
					v = v.replace('{url}', self.escape(file.icon));
				}
				if (asObject) {
					cssObj[k] = v;
				} else {
					style += k+':'+v+';';
				}
			});
			style += '"';
		}
		return asObject? cssObj : style;
	},
	
	/**
	 * Convert mimetype into css classes
	 * 
	 * @param  String  file mimetype
	 * @return String
	 */
	mime2class : function(mimeType) {
		var prefix = 'elfinder-cwd-icon-',
			mime   = mimeType.toLowerCase(),
			isText = this.textMimes[mime];
		
		mime = mime.split('/');
		if (isText) {
			mime[0] += ' ' + prefix + 'text';
		} else if (mime[1] && mime[1].match(/\+xml$/)) {
			mime[0] += ' ' + prefix + 'xml';
		}
		
		return prefix + mime[0] + (mime[1] ? ' ' + prefix + mime[1].replace(/(\.|\+)/g, '-') : '');
	},
	
	/**
	 * Return localized kind of file
	 * 
	 * @param  Object|String  file or file mimetype
	 * @return String
	 */
	mime2kind : function(f) {
		var isObj = typeof(f) == 'object' ? true : false,
			mime  = isObj ? f.mime : f,
			kind;
		

		if (isObj && f.alias && mime != 'symlink-broken') {
			kind = 'Alias';
		} else if (this.kinds[mime]) {
			if (isObj && mime === 'directory' && (! f.phash || f.isroot)) {
				kind = 'Root';
			} else {
				kind = this.kinds[mime];
			}
		} else if (this.mimeTypes[mime]) {
			kind = this.mimeTypes[mime].toUpperCase();
			if (!this.messages['kind'+kind]) {
				kind = null;
			}
		}
		if (! kind) {
			if (mime.indexOf('text') === 0) {
				kind = 'Text';
			} else if (mime.indexOf('image') === 0) {
				kind = 'Image';
			} else if (mime.indexOf('audio') === 0) {
				kind = 'Audio';
			} else if (mime.indexOf('video') === 0) {
				kind = 'Video';
			} else if (mime.indexOf('application') === 0) {
				kind = 'App';
			} else {
				kind = mime;
			}
		}
		
		return this.messages['kind'+kind] ? this.i18n('kind'+kind) : mime;
	},
	
	/**
	 * Return boolean Is mime-type text file
	 * 
	 * @param  String  mime-type
	 * @return Boolean
	 */
	mimeIsText : function(mime) {
		return (this.textMimes[mime.toLowerCase()] || (mime.indexOf('text/') === 0 && mime.substr(5, 3) !== 'rtf') || mime.match(/^application\/.+\+xml$/))? true : false;
	},
	
	/**
	 * Returns a date string formatted according to the given format string
	 * 
	 * @param  String  format string
	 * @param  Object  Date object
	 * @return String
	 */
	date : function(format, date) {
		var self = this,
			output, d, dw, m, y, h, g, i, s;
		
		if (! date) {
			date = new Date();
		}
		
		h  = date[self.getHours]();
		g  = h > 12 ? h - 12 : h;
		i  = date[self.getMinutes]();
		s  = date[self.getSeconds]();
		d  = date[self.getDate]();
		dw = date[self.getDay]();
		m  = date[self.getMonth]() + 1;
		y  = date[self.getFullYear]();
		
		output = format.replace(/[a-z]/gi, function(val) {
			switch (val) {
				case 'd': return d > 9 ? d : '0'+d;
				case 'j': return d;
				case 'D': return self.i18n(self.i18.daysShort[dw]);
				case 'l': return self.i18n(self.i18.days[dw]);
				case 'm': return m > 9 ? m : '0'+m;
				case 'n': return m;
				case 'M': return self.i18n(self.i18.monthsShort[m-1]);
				case 'F': return self.i18n(self.i18.months[m-1]);
				case 'Y': return y;
				case 'y': return (''+y).substr(2);
				case 'H': return h > 9 ? h : '0'+h;
				case 'G': return h;
				case 'g': return g;
				case 'h': return g > 9 ? g : '0'+g;
				case 'a': return h >= 12 ? 'pm' : 'am';
				case 'A': return h >= 12 ? 'PM' : 'AM';
				case 'i': return i > 9 ? i : '0'+i;
				case 's': return s > 9 ? s : '0'+s;
			}
			return val;
		});
		
		return output;
	},
	
	/**
	 * Return localized date
	 * 
	 * @param  Object  file object
	 * @return String
	 */
	formatDate : function(file, t) {
		var self = this, 
			ts   = t || file.ts, 
			i18  = self.i18,
			date, format, output, d, dw, m, y, h, g, i, s;

		if (self.options.clientFormatDate && ts > 0) {

			date = new Date(ts*1000);
			format = ts >= this.yesterday 
				? this.fancyFormat 
				: this.dateFormat;

			output = self.date(format, date);
			
			return ts >= this.yesterday
				? output.replace('$1', this.i18n(ts >= this.today ? 'Today' : 'Yesterday'))
				: output;
		} else if (file.date) {
			return file.date.replace(/([a-z]+)\s/i, function(a1, a2) { return self.i18n(a2)+' '; });
		}
		
		return self.i18n('dateUnknown');
	},
	
	/**
	 * Return localized number string
	 * 
	 * @param  Number
	 * @return String
	 */
	toLocaleString : function(num) {
		var v = new Number(num);
		if (v) {
			if (v.toLocaleString) {
				return v.toLocaleString();
			} else {
				return String(num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
			}
		}
		return num;
	},
	
	/**
	 * Return css class marks file permissions
	 * 
	 * @param  Object  file 
	 * @return String
	 */
	perms2class : function(o) {
		var c = '';
		
		if (!o.read && !o.write) {
			c = 'elfinder-na';
		} else if (!o.read) {
			c = 'elfinder-wo';
		} else if (!o.write) {
			c = 'elfinder-ro';
		}
		
		if (o.type) {
			c += ' elfinder-' + this.escape(o.type);
		}
		
		return c;
	},
	
	/**
	 * Return localized string with file permissions
	 * 
	 * @param  Object  file
	 * @return String
	 */
	formatPermissions : function(f) {
		var p  = [];
			
		f.read && p.push(this.i18n('read'));
		f.write && p.push(this.i18n('write'));	

		return p.length ? p.join(' '+this.i18n('and')+' ') : this.i18n('noaccess');
	},
	
	/**
	 * Return formated file size
	 * 
	 * @param  Number  file size
	 * @return String
	 */
	formatSize : function(s) {
		var n = 1, u = 'b';
		
		if (s == 'unknown') {
			return this.i18n('unknown');
		}
		
		if (s > 1073741824) {
			n = 1073741824;
			u = 'GB';
		} else if (s > 1048576) {
			n = 1048576;
			u = 'MB';
		} else if (s > 1024) {
			n = 1024;
			u = 'KB';
		}
		s = s/n;
		return (s > 0 ? n >= 1048576 ? s.toFixed(2) : Math.round(s) : 0) +' '+u;
	},
	
	/**
	 * Return formated file mode by options.fileModeStyle
	 * 
	 * @param  String  file mode
	 * @param  String  format style
	 * @return String
	 */
	formatFileMode : function(p, style) {
		var i, o, s, b, sticy, suid, sgid, str, oct;
		
		if (!style) {
			style = this.options.fileModeStyle.toLowerCase();
		}
		p = jQuery.trim(p);
		if (p.match(/[rwxs-]{9}$/i)) {
			str = p = p.substr(-9);
			if (style == 'string') {
				return str;
			}
			oct = '';
			s = 0;
			for (i=0; i<7; i=i+3) {
				o = p.substr(i, 3);
				b = 0;
				if (o.match(/[r]/i)) {
					b += 4;
				}
				if (o.match(/[w]/i)) {
					b += 2;
				}
				if (o.match(/[xs]/i)) {
					if (o.match(/[xs]/)) {
						b += 1;
					}
					if (o.match(/[s]/i)) {
						if (i == 0) {
							s += 4;
						} else if (i == 3) {
							s += 2;
						}
					}
				}
				oct += b.toString(8);
			}
			if (s) {
				oct = s.toString(8) + oct;
			}
		} else {
			p = parseInt(p, 8);
			oct = p? p.toString(8) : '';
			if (!p || style == 'octal') {
				return oct;
			}
			o = p.toString(8);
			s = 0;
			if (o.length > 3) {
				o = o.substr(-4);
				s = parseInt(o.substr(0, 1), 8);
				o = o.substr(1);
			}
			sticy = ((s & 1) == 1); // not support
			sgid = ((s & 2) == 2);
			suid = ((s & 4) == 4);
			str = '';
			for(i=0; i<3; i++) {
				if ((parseInt(o.substr(i, 1), 8) & 4) == 4) {
					str += 'r';
				} else {
					str += '-';
				}
				if ((parseInt(o.substr(i, 1), 8) & 2) == 2) {
					str += 'w';
				} else {
					str += '-';
				}
				if ((parseInt(o.substr(i, 1), 8) & 1) == 1) {
					str += ((i==0 && suid)||(i==1 && sgid))? 's' : 'x';
				} else {
					str += '-';
				}
			}
		}
		if (style == 'both') {
			return str + ' (' + oct + ')';
		} else if (style == 'string') {
			return str;
		} else {
			return oct;
		}
	},
	
	/**
	 * Regist this.decodeRawString function
	 * 
	 * @return void
	 */
	registRawStringDecoder : function(rawStringDecoder) {
		if (jQuery.isFunction(rawStringDecoder)) {
			this.decodeRawString = this.options.rawStringDecoder = rawStringDecoder;
		}
	},
	
	/**
	 * Return boolean that uploadable MIME type into target folder
	 * 
	 * @param  String  mime    MIME type
	 * @param  String  target  target folder hash
	 * @return Bool
	 */
	uploadMimeCheck : function(mime, target) {
		target = target || this.cwd().hash;
		var res   = true, // default is allow
			mimeChecker = this.option('uploadMime', target),
			allow,
			deny,
			check = function(checker) {
				var ret = false;
				if (typeof checker === 'string' && checker.toLowerCase() === 'all') {
					ret = true;
				} else if (Array.isArray(checker) && checker.length) {
					jQuery.each(checker, function(i, v) {
						v = v.toLowerCase();
						if (v === 'all' || mime.indexOf(v) === 0) {
							ret = true;
							return false;
						}
					});
				}
				return ret;
			};
		if (mime && jQuery.isPlainObject(mimeChecker)) {
			mime = mime.toLowerCase();
			allow = check(mimeChecker.allow);
			deny = check(mimeChecker.deny);
			if (mimeChecker.firstOrder === 'allow') {
				res = false; // default is deny
				if (! deny && allow === true) { // match only allow
					res = true;
				}
			} else {
				res = true; // default is allow
				if (deny === true && ! allow) { // match only deny
					res = false;
				}
			}
		}
		return res;
	},
	
	/**
	 * call chained sequence of async deferred functions
	 * 
	 * @param  Array   tasks async functions
	 * @return Object  jQuery.Deferred
	 */
	sequence : function(tasks) {
		var l = tasks.length,
			chain = function(task, idx) {
				++idx;
				if (tasks[idx]) {
					return chain(task.then(tasks[idx]), idx);
				} else {
					return task;
				}
			};
		if (l > 1) {
			return chain(tasks[0](), 0);
		} else {
			return tasks[0]();
		}
	},
	
	/**
	 * Reload contents of target URL for clear browser cache
	 * 
	 * @param  String  url target URL
	 * @return Object  jQuery.Deferred
	 */
	reloadContents : function(url) {
		var dfd = jQuery.Deferred(),
			ifm;
		try {
			ifm = jQuery('<iframe width="1" height="1" scrolling="no" frameborder="no" style="position:absolute; top:-1px; left:-1px" crossorigin="use-credentials">')
				.attr('src', url)
				.one('load', function() {
					var ifm = jQuery(this);
					try {
						this.contentDocument.location.reload(true);
						ifm.one('load', function() {
							ifm.remove();
							dfd.resolve();
						});
					} catch(e) {
						ifm.attr('src', '').attr('src', url).one('load', function() {
							ifm.remove();
							dfd.resolve();
						});
					}
				})
				.appendTo('body');
		} catch(e) {
			ifm && ifm.remove();
			dfd.reject();
		}
		return dfd;
	},
	
	/**
	 * Make netmount option for OAuth2
	 * 
	 * @param  String   protocol
	 * @param  String   name
	 * @param  String   host
	 * @param  Object   opts  Default {noOffline: false, root: 'root', pathI18n: 'folderId', folders: true}
			}
	 * 
	 * @return Object
	 */
	makeNetmountOptionOauth : function(protocol, name, host, opt) {
		var noOffline = typeof opt === 'boolean'? opt : null, // for backward compat
			opts = Object.assign({
				noOffline : false,
				root      : 'root',
				pathI18n  : 'folderId',
				folders   : true
			}, (noOffline === null? (opt || {}) : {noOffline : noOffline})),
			addFolders = function(fm, bro, folders) {
				var self = this,
					cnt  = Object.keys(jQuery.isPlainObject(folders)? folders : {}).length,
					select;
				
				bro.next().remove();
				if (cnt) {
					select = jQuery('<select class="ui-corner-all elfinder-tabstop" style="max-width:200px;">').append(
						jQuery(jQuery.map(folders, function(n,i){return '<option value="'+fm.escape((i+'').trim())+'">'+fm.escape(n)+'</option>';}).join(''))
					).on('change click', function(e){
						var node = jQuery(this),
							path = node.val(),
							spn;
						self.inputs.path.val(path);
						if (opts.folders && (e.type === 'change' || node.data('current') !== path)) {
							node.next().remove();
							node.data('current', path);
							if (path != opts.root) {
								spn = spinner();
								if (xhr && xhr.state() === 'pending') {
									fm.abortXHR(xhr, { quiet: true , abort: true });
								}
								node.after(spn);
								xhr = fm.request({
									data : {cmd : 'netmount', protocol: protocol, host: host, user: 'init', path: path, pass: 'folders'},
									preventDefault : true
								}).done(function(data){
									addFolders.call(self, fm, node, data.folders);
								}).always(function() {
									fm.abortXHR(xhr, { quiet: true });
									spn.remove();
								}).xhr;
							}
						}
					});
					bro.after(jQuery('<div></div>').append(select))
						.closest('.ui-dialog').trigger('tabstopsInit');
					select.trigger('focus');
				}
			},
			spinner = function() {
				return jQuery('<div class="elfinder-netmount-spinner"></div>').append('<span class="elfinder-spinner"></span>');
			},
			xhr;
		return {
			vars : {},
			name : name,
			inputs: {
				offline  : jQuery('<input type="checkbox"/>').on('change', function() {
					jQuery(this).parents('table.elfinder-netmount-tb').find('select:first').trigger('change', 'reset');
				}),
				host     : jQuery('<span><span class="elfinder-spinner"></span></span><input type="hidden"/>'),
				path     : jQuery('<input type="text" value="'+opts.root+'"/>'),
				user     : jQuery('<input type="hidden"/>'),
				pass     : jQuery('<input type="hidden"/>'),
				mnt2res  : jQuery('<input type="hidden"/>')
			},
			select: function(fm, ev, d){
				var f = this.inputs,
					oline = f.offline,
					f0 = jQuery(f.host[0]),
					data = d || null;
				this.vars.mbtn = f.host.closest('.ui-dialog').children('.ui-dialog-buttonpane:first').find('button.elfinder-btncnt-0');
				if (! f0.data('inrequest')
						&& (f0.find('span.elfinder-spinner').length
							|| data === 'reset'
							|| (data === 'winfocus' && ! f0.siblings('span.elfinder-button-icon-reload').length))
							)
				{
					if (oline.parent().children().length === 1) {
						f.path.parent().prev().html(fm.i18n(opts.pathI18n));
						oline.attr('title', fm.i18n('offlineAccess'));
						oline.uniqueId().after(jQuery('<label></label>').attr('for', oline.attr('id')).html(' '+fm.i18n('offlineAccess')));
					}
					f0.data('inrequest', true).empty().addClass('elfinder-spinner')
						.parent().find('span.elfinder-button-icon').remove();
					fm.request({
						data : {cmd : 'netmount', protocol: protocol, host: host, user: 'init', options: {id: fm.id, offline: oline.prop('checked')? 1:0, pass: f.host[1].value}},
						preventDefault : true
					}).done(function(data){
						f0.removeClass("elfinder-spinner").html(data.body.replace(/\{msg:([^}]+)\}/g, function(whole,s1){return fm.i18n(s1, host);}));
					});
					opts.noOffline && oline.closest('tr').hide();
				} else {
					oline.closest('tr')[(opts.noOffline || f.user.val())? 'hide':'show']();
					f0.data('funcexpup') && f0.data('funcexpup')();
				}
				this.vars.mbtn[jQuery(f.host[1]).val()? 'show':'hide']();
			},
			done: function(fm, data){
				var f = this.inputs,
					p = this.protocol,
					f0 = jQuery(f.host[0]),
					f1 = jQuery(f.host[1]),
					expires = '&nbsp;',
					vars = this.vars,
					chk = function() {
						if (vars.oauthW && !document.hasFocus() && --vars.chkCnt) {
							p.trigger('change', 'winfocus');
							vars.tm = setTimeout(chk, 3000);
						}
					},
					btn;
				
				opts.noOffline && f.offline.closest('tr').hide();
				if (data.mode == 'makebtn') {
					f0.removeClass('elfinder-spinner').removeData('expires').removeData('funcexpup');
					btn = f.host.find('input').on('mouseenter mouseleave', function(){jQuery(this).toggleClass('ui-state-hover');});
					if (data.url) {
						btn.on('click', function() {
							vars.tm && clearTimeout(vars.tm);
							vars.oauthW = window.open(data.url);
							// To correspond to safari, authentication tab sometimes not closing in CORS environment.
							// This may be a safari bug and may improve in the future.
							if ((fm.UA.iOS || fm.UA.Mac) && fm.isCORS && !vars.chkdone) {
								vars.chkCnt = 60;
								vars.tm = setTimeout(chk, 5000);
							}
						});
					}
					f1.val('');
					f.path.val(opts.root).next().remove();
					f.user.val('');
					f.pass.val('');
					! opts.noOffline && f.offline.closest('tr').show();
					vars.mbtn.hide();
				} else if (data.mode == 'folders') {
					if (data.folders) {
						addFolders.call(this, fm, f.path.nextAll(':last'), data.folders);
					}
				} else {
					if (vars.oauthW) {
						vars.tm && clearTimeout(vars.tm);
						vars.oauthW.close();
						delete vars.oauthW;
						// The problem that Safari's authentication tab doesn't close only affects the first time.
						vars.chkdone = true;
					}
					if (data.expires) {
						expires = '()';
						f0.data('expires', data.expires);
					}
					f0.html(host + expires).removeClass('elfinder-spinner');
					if (data.expires) {
						f0.data('funcexpup', function() {
							var rem = Math.floor((f0.data('expires') - (+new Date()) / 1000) / 60);
							if (rem < 3) {
								f0.parent().children('.elfinder-button-icon-reload').click();
							} else {
								f0.text(f0.text().replace(/\(.*\)/, '('+fm.i18n(['minsLeft', rem])+')'));
								setTimeout(function() {
									if (f0.is(':visible')) {
										f0.data('funcexpup')();
									}
								}, 60000);
							}
						});
						f0.data('funcexpup')();
					}
					if (data.reset) {
						p.trigger('change', 'reset');
						return;
					}
					f0.parent().append(jQuery('<span class="elfinder-button-icon elfinder-button-icon-reload" title="'+fm.i18n('reAuth')+'">')
						.on('click', function() {
							f1.val('reauth');
							p.trigger('change', 'reset');
						}));
					f1.val(protocol);
					vars.mbtn.show();
					if (data.folders) {
						addFolders.call(this, fm, f.path, data.folders);
					}
					if (data.mnt2res) {
						f.mnt2res.val('1');
					}
					f.user.val('done');
					f.pass.val('done');
					f.offline.closest('tr').hide();
				}
				f0.removeData('inrequest');
			},
			fail: function(fm, err){
				jQuery(this.inputs.host[0]).removeData('inrequest');
				this.protocol.trigger('change', 'reset');
			},
			integrateInfo: opts.integrate
		};
	},
	
	/**
	 * Find cwd's nodes from files
	 * 
	 * @param  Array    files
	 * @param  Object   opts   {firstOnly: true|false}
	 */
	findCwdNodes : function(files, opts) {
		var self    = this,
			cwd     = this.getUI('cwd'),
			cwdHash = this.cwd().hash,
			newItem = jQuery();
		
		opts = opts || {};
		
		jQuery.each(files, function(i, f) {
			if (f.phash === cwdHash || self.searchStatus.state > 1) {
				newItem = newItem.add(self.cwdHash2Elm(f.hash));
				if (opts.firstOnly) {
					return false;
				}
			}
		});
		
		return newItem;
	},
	
	/**
	 * Convert from relative URL to abstract URL based on current URL
	 * 
	 * @param  String  URL
	 * @return String
	 */
	convAbsUrl : function(url) {
		if (url.match(/^http/i)) {
			return url;
		}
		if (url.substr(0,2) === '//') {
			return window.location.protocol + url;
		}
		var root = window.location.protocol + '//' + window.location.host,
			reg  = /[^\/]+\/\.\.\//,
			ret;
		if (url.substr(0, 1) === '/') {
			ret = root + url;
		} else {
			ret = root + window.location.pathname.replace(/\/[^\/]+$/, '/') + url;
		}
		ret = ret.replace('/./', '/');
		while(reg.test(ret)) {
			ret = ret.replace(reg, '');
		}
		return ret;
	},
	
	/**
	 * Is same origin to current site
	 * 
	 * @param  String  check url
	 * @return Boolean
	 */
	isSameOrigin : function (checkUrl) {
		var url;
		checkUrl = this.convAbsUrl(checkUrl);
		if (location.origin && window.URL) {
			try {
				url = new URL(checkUrl);
				return location.origin === url.origin;
			} catch(e) {}
		}
		url = document.createElement('a');
		url.href = checkUrl;
		return location.protocol === url.protocol && location.host === url.host && location.port && url.port;
	},
	
	navHash2Id : function(hash) {
		return this.navPrefix + hash;
	},
	
	navId2Hash : function(id) {
		return typeof(id) == 'string' ? id.substr(this.navPrefix.length) : false;
	},
	
	cwdHash2Id : function(hash) {
		return this.cwdPrefix + hash;
	},
	
	cwdId2Hash : function(id) {
		return typeof(id) == 'string' ? id.substr(this.cwdPrefix.length) : false;
	},
	
	/**
	 * navHash to jQuery element object
	 *
	 * @param      String  hash    nav hash
	 * @return     Object  jQuery element object
	 */
	navHash2Elm : function(hash) {
		return jQuery(document.getElementById(this.navHash2Id(hash)));
	},

	/**
	 * cwdHash to jQuery element object
	 *
	 * @param      String  hash    cwd hash
	 * @return     Object  jQuery element object
	 */
	cwdHash2Elm : function(hash) {
		return jQuery(document.getElementById(this.cwdHash2Id(hash)));
	},

	isInWindow : function(elem, nochkHide) {
		var elm, rect;
		if (! (elm = elem.get(0))) {
			return false;
		}
		if (! nochkHide && elm.offsetParent === null) {
			return false;
		}
		rect = elm.getBoundingClientRect();
		return document.elementFromPoint(rect.left, rect.top)? true : false;
	},
	
	/**
	 * calculate elFinder node z-index
	 * 
	 * @return void
	 */
	zIndexCalc : function() {
		var self = this,
			node = this.getUI(),
			ni = node.css('z-index');
		if (ni && ni !== 'auto' && ni !== 'inherit') {
			self.zIndex = ni;
		} else {
			node.parents().each(function(i, n) {
				var z = jQuery(n).css('z-index');
				if (z !== 'auto' && z !== 'inherit' && (z = parseInt(z))) {
					self.zIndex = z;
					return false;
				}
			});
		}
	},
	
	/**
	 * Load JavaScript files
	 * 
	 * @param  Array    urls      to load JavaScript file URLs
	 * @param  Function callback  call back function on script loaded
	 * @param  Object   opts      Additional options to jQuery.ajax OR {loadType: 'tag'} to load by script tag
	 * @param  Object   check     { obj: (Object)ParentObject, name: (String)"Attribute name", timeout: (Integer)milliseconds }
	 * @return elFinder
	 */
	loadScript : function(urls, callback, opts, check) {
		var defOpts = {
				dataType : 'script',
				cache    : true
			},
			success, cnt, scripts = {}, results = {};
		
		opts = opts || {};
		if (opts.tryRequire && this.hasRequire) {
			require(urls, callback, opts.error);
		} else {
			success = function() {
				var cnt, fi, hasError;
				jQuery.each(results, function(i, status) {
					if (status !== 'success' && status !== 'notmodified') {
						hasError = true;
						return false;
					}
				});
				if (!hasError) {
					if (jQuery.isFunction(callback)) {
						if (check) {
							if (typeof check.obj[check.name] === 'undefined') {
								cnt = check.timeout? (check.timeout / 10) : 1;
								fi = setInterval(function() {
									if (--cnt < 0 || typeof check.obj[check.name] !== 'undefined') {
										clearInterval(fi);
										callback();
									}
								}, 10);
							} else {
								callback();
							}
						} else {
							callback();
						}
					}
				} else {
					if (opts.error && jQuery.isFunction(opts.error)) {
						opts.error({ loadResults: results });
					}
				}
			};

			if (opts.loadType === 'tag') {
				jQuery('head > script').each(function() {
					scripts[this.src] = this;
				});
				cnt = urls.length;
				jQuery.each(urls, function(i, url) {
					var done = false,
						script;
					
					if (scripts[url]) {
						results[i] = scripts[url]._error || 'success';
						(--cnt < 1) && success();
					} else {
						script = document.createElement('script');
						script.charset = opts.charset || 'UTF-8';
						jQuery('head').append(script);
						script.onload = script.onreadystatechange = function() {
							if ( !done && (!this.readyState ||
									this.readyState === 'loaded' || this.readyState === 'complete') ) {
								done = true;
								results[i] = 'success';
								(--cnt < 1) && success();
							}
						};
						script.onerror = function(err) {
							results[i] = script._error = (err && err.type)? err.type : 'error';
							(--cnt < 1) && success();
						};
						script.src = url;
					}
				});
			} else {
				opts = jQuery.isPlainObject(opts)? Object.assign(defOpts, opts) : defOpts;
				cnt = 0;
				(function appendScript(d, status) {
					if (d !== void(0)) {
						results[cnt++] = status;
					}
					if (urls.length) {
						jQuery.ajax(Object.assign({}, opts, {
							url: urls.shift(),
							success: appendScript,
							error: appendScript
						}));
					} else {
						success();
					}
				})();
			}
		}
		return this;
	},
	
	/**
	 * Load CSS files
	 * 
	 * @param  Array    to load CSS file URLs
	 * @param  Object   options
	 * @return elFinder
	 */
	loadCss : function(urls, opts) {
		var self = this,
			clName, dfds;
		if (typeof urls === 'string') {
			urls = [ urls ];
		}
		if (opts) {
			if (opts.className) {
				clName = opts.className;
			}
			if (opts.dfd && opts.dfd.promise) {
				dfds = [];
			}
		}
		jQuery.each(urls, function(i, url) {
			var link, df;
			url = self.convAbsUrl(url).replace(/^https?:/i, '');
			if (dfds) {
				dfds[i] = jQuery.Deferred();
			}
			if (! jQuery('head > link[href="' + self.escape(url) + '"]').length) {
				link = document.createElement('link');
				link.type = 'text/css';
				link.rel = 'stylesheet';
				link.href = url;
				if (clName) {
					link.className = clName;
				}
				if (dfds) {
					link.onload = function() {
						dfds[i].resolve();
					};
					link.onerror = function() {
						dfds[i].reject();
					};
				}
				jQuery('head').append(link);
			} else {
				dfds && dfds[i].resolve();
			}
		});
		if (dfds) {
			jQuery.when.apply(null, dfds).done(function() {
				opts.dfd.resolve();
			}).fail(function() {
				opts.dfd.reject();
			});
		}
		return this;
	},
	
	/**
	 * Abortable async job performer
	 * 
	 * @param func Function
	 * @param arr  Array
	 * @param opts Object
	 * 
	 * @return Object jQuery.Deferred that has an extended method _abort()
	 */
	asyncJob : function(func, arr, opts) {
		var dfrd = jQuery.Deferred(),
			abortFlg = false,
			parms = Object.assign({
				interval : 0,
				numPerOnce : 1
			}, opts || {}),
			resArr = [],
			vars =[],
			curVars = [],
			exec,
			tm;
		
		dfrd._abort = function(resolve) {
			tm && clearTimeout(tm);
			vars = [];
			abortFlg = true;
			if (dfrd.state() === 'pending') {
				dfrd[resolve? 'resolve' : 'reject'](resArr);
			}
		};
		
		dfrd.fail(function() {
			dfrd._abort();
		}).always(function() {
			dfrd._abort = function() {};
		});

		if (typeof func === 'function' && Array.isArray(arr)) {
			vars = arr.concat();
			exec = function() {
				var i, len, res;
				if (abortFlg) {
					return;
				}
				curVars = vars.splice(0, parms.numPerOnce);
				len = curVars.length;
				for (i = 0; i < len; i++) {
					if (abortFlg) {
						break;
					}
					res = func(curVars[i]);
					(res !== null) && resArr.push(res);
				}
				if (abortFlg) {
					return;
				}
				if (vars.length) {
					tm = setTimeout(exec, parms.interval);
				} else {
					dfrd.resolve(resArr);
				}
			};
			if (vars.length) {
				tm = setTimeout(exec, 0);
			} else {
				dfrd.resolve(resArr);
			}
		} else {
			dfrd.reject();
		}
		return dfrd;
	},
	
	getSize : function(targets) {
		var self = this,
			reqs = [],
			tgtlen = targets.length,
			dfrd = jQuery.Deferred().fail(function() {
				jQuery.each(reqs, function(i, req) {
					if (req) {
						req.syncOnFail && req.syncOnFail(false);
						req.reject();
					}
				});
			}),
			getLeafRoots = function(file) {
				var targets = [];
				if (file.mime === 'directory') {
					jQuery.each(self.leafRoots, function(hash, roots) {
						var phash;
						if (hash === file.hash) {
							targets.push.apply(targets, roots);
						} else {
							phash = (self.file(hash) || {}).phash;
							while(phash) {
								if (phash === file.hash) {
									targets.push.apply(targets, roots);
								}
								phash = (self.file(phash) || {}).phash;
							}
						}
					});
				}
				return targets;
			},
			checkPhash = function(hash) {
				var dfd = jQuery.Deferred(),
					dir = self.file(hash),
					target = dir? dir.phash : hash;
				if (target && ! self.file(target)) {
					self.request({
						data : {
							cmd    : 'parents',
							target : target
						},
						preventFail : true
					}).done(function() {
						self.one('parentsdone', function() {
							dfd.resolve();
						});
					}).fail(function() {
						dfd.resolve();
					});
				} else {
					dfd.resolve();
				}
				return dfd;
			},
			cache = function() {
				var dfd = jQuery.Deferred(),
					cnt = Object.keys(self.leafRoots).length;
				
				if (cnt > 0) {
					jQuery.each(self.leafRoots, function(hash) {
						checkPhash(hash).done(function() {
							--cnt;
							if (cnt < 1) {
								dfd.resolve();
							}
						});
					});
				} else {
					dfd.resolve();
				}
				return dfd;
			};

		self.autoSync('stop');
		cache().done(function() {
			var files = [], grps = {}, dfds = [], cache = [], singles = {};
			
			jQuery.each(targets, function() {
				files.push.apply(files, getLeafRoots(self.file(this)));
			});
			targets.push.apply(targets, files);
			
			jQuery.each(targets, function() {
				var root = self.root(this),
					file = self.file(this);
				if (file && (file.sizeInfo || file.mime !== 'directory')) {
					cache.push(jQuery.Deferred().resolve(file.sizeInfo? file.sizeInfo : {size: file.size, dirCnt: 0, fileCnt : 1}));
				} else {
					if (! grps[root]) {
						grps[root] = [ this.toString() ];
					} else {
						grps[root].push(this.toString());
					}
				}
			});
			
			jQuery.each(grps, function() {
				var idx = dfds.length;
				if (this.length === 1) {
					singles[idx] = this[0];
				}
				dfds.push(self.request({
					data : {cmd : 'size', targets : this},
					preventDefault : true
				}));
			});
			reqs.push.apply(reqs, dfds);
			dfds.push.apply(dfds, cache);
			
			jQuery.when.apply($, dfds).fail(function() {
				dfrd.reject();
			}).done(function() {
				var cache = function(h, data) {
						var file;
						if (file = self.file(h)) {
							file.sizeInfo = { isCache: true };
							jQuery.each(['size', 'dirCnt', 'fileCnt'], function() {
								file.sizeInfo[this] = data[this] || 0;
							});
							file.size = parseInt(file.sizeInfo.size);
							changed.push(file);
						}
					},
					size = 0,
					fileCnt = 0,
					dirCnt = 0,
					argLen = arguments.length,
					cnts = [],
					cntsTxt = '',
					changed = [],
					i, file, data;
				
				for (i = 0; i < argLen; i++) {
					data = arguments[i];
					file = null;
					if (!data.isCache) {
						if (singles[i] && (file = self.file(singles[i]))) {
							cache(singles[i], data);
						} else if (data.sizes && jQuery.isPlainObject(data.sizes)) {
							jQuery.each(data.sizes, function(h, sizeInfo) {
								cache(h, sizeInfo);
							});
						}
					}
					size += parseInt(data.size);
					if (fileCnt !== false) {
						if (typeof data.fileCnt === 'undefined') {
							fileCnt = false;
						} else {
							fileCnt += parseInt(data.fileCnt || 0);
						}
					}
					if (dirCnt !== false) {
						if (typeof data.dirCnt === 'undefined') {
							dirCnt = false;
						} else {
							dirCnt += parseInt(data.dirCnt || 0);
						}
					}
				}
				changed.length && self.change({changed: changed});
				
				if (dirCnt !== false){
					cnts.push(self.i18n('folders') + ': ' + (dirCnt - (tgtlen > 1? 0 : 1)));
				}
				if (fileCnt !== false){
					cnts.push(self.i18n('files') + ': ' + fileCnt);
				}
				if (cnts.length) {
					cntsTxt = '<br>' + cnts.join(', ');
				}
				dfrd.resolve({
					size: size,
					fileCnt: fileCnt,
					dirCnt: dirCnt,
					formated: (size >= 0 ? self.formatSize(size) : self.i18n('unknown')) + cntsTxt
				});
			});
			
			self.autoSync();
		});
		
		return dfrd;
	},

	/**
	 * Worker Object URL for Blob URL of getWorker()
	 */
	wkObjUrl : null,

	/**
	 * Gets the web worker.
	 *
	 * @param      {Object}  options  The options
	 * @return     {Worker}  The worker.
	 */
	getWorker : function(options){
		// for to make blob URL
		function woker() {
			self.onmessage = function(e) {
				var d = e.data;
				try {
					self.data = d.data;
					if (d.scripts) {
						for(var i = 0; i < d.scripts.length; i++) {
							importScripts(d.scripts[i]);
						}
					}
					self.postMessage(self.res);
				} catch (e) {
					self.postMessage({error: e.toString()});
				}
			};
		}
		// get woker
		var wk;
		try {
			if (!this.wkObjUrl) {
				this.wkObjUrl = (window.URL || window.webkitURL).createObjectURL(new Blob(
					[woker.toString().replace(/\s+/g, ' ').replace(/ *([^\w]) */g, '$1').replace(/^function\b.+?\{|\}$/g, '')],
					{ type:'text/javascript' }
				));
			}
			wk = new Worker(this.wkObjUrl, options);
		} catch(e) {
			this.debug('error', e.toString());
		}
		return wk;
	},

	/**
	 * Get worker absolute URL by filename
	 *
	 * @param      {string}  filename  The filename
	 * @return     {<type>}  The worker url.
	 */
	getWorkerUrl : function(filename) {
		return this.convAbsUrl(this.baseUrl + 'js/worker/' + filename);
	},

	/**
	 * Gets the theme object by settings of options.themes
	 *
	 * @param  String  themeid  The themeid
	 * @return Object  jQuery.Deferred
	 */
	getTheme : function(themeid) {
		var self = this,
			dfd = jQuery.Deferred(),
			absUrl = function(url, base) {
				if (!base) {
					base = self.convAbsUrl(self.baseUrl);
				}
				if (Array.isArray(url)) {
					return jQuery.map(url, function(v) {
						return absUrl(v, base);
					});
				} else {
					return url.match(/^(?:http|\/\/)/i)? url : base + url.replace(/^(?:\.\/|\/)/, '');
				}
			},
			themeObj, m;
		if (themeid && (themeObj = self.options.themes[themeid])) {
			if (typeof themeObj === 'string') {
				url = absUrl(themeObj);
				if (m = url.match(/^(.+\/)[^/]+\.json$/i)) {
					jQuery.getJSON(url).done(function(data) {
						themeObj = data;
						themeObj.id = themeid;
						if (themeObj.cssurls) {
							themeObj.cssurls = absUrl(themeObj.cssurls, m[1]);
						}
						dfd.resolve(themeObj);
					}).fail(function() {
						dfd.reject();
					});
				} else {
					dfd.resolve({
						id: themeid,
						name: themeid,
						cssurls: [url]
					});
				}
			} else if (jQuery.isPlainObject(themeObj) && themeObj.cssurls) {
				themeObj.id = themeid;
				themeObj.cssurls = absUrl(themeObj.cssurls);
				if (!Array.isArray(themeObj.cssurls)) {
					themeObj.cssurls = [themeObj.cssurls];
				}
				if (!themeObj.name) {
					themeObj.name = themeid;
				}
				dfd.resolve(themeObj);
			} else {
				dfd.reject();
			}
		} else {
			dfd.reject();
		}
		return dfd;
	},

	/**
	 * Change current theme
	 *
	 * @param  String  themeid  The themeid
	 * @return Object  this elFinder instance
	 */
	changeTheme : function(themeid) {
		var self = this;
		if (themeid) {
			if (self.options.themes[themeid] && (!self.theme || self.theme.id !== themeid)) {
				self.getTheme(themeid).done(function(themeObj) {
					if (themeObj.cssurls) {
						jQuery('head>link.elfinder-theme-ext').remove();
						self.loadCss(themeObj.cssurls, {
							className: 'elfinder-theme-ext',
							dfd: jQuery.Deferred().done(function() {
								self.theme = themeObj;
								self.trigger && self.trigger('themechange');
							})
						});
					}
				});
			} else if (themeid === 'default' && self.theme && self.theme.id !== 'default') {
				jQuery('head>link.elfinder-theme-ext').remove();
				self.theme = null;
				self.trigger && self.trigger('themechange');
			}
		}
		return this;
	},

	/**
	 * Apply leaf root stats to target directory
	 *
	 * @param      object     dir     object of target directory
	 * @param      boolean    update  is force update
	 * 
	 * @return     boolean    dir object was chenged 
	 */
	applyLeafRootStats : function(dir, update) {
		var self = this,
			prev = update? dir : (self.file(dir.hash) || dir),
			prevTs = prev.ts,
			change = false;
		// backup original stats
		if (update || !dir._realStats) {
			dir._realStats = {
				locked: dir.locked || 0,
				dirs: dir.dirs || 0,
				ts: dir.ts
			};
		}
		// set lock
		dir.locked = 1;
		if (!prev.locked) {
			change = true;
		}
		// has leaf root to `dirs: 1`
		dir.dirs = 1;
		if (!prev.dirs) {
			change = true;
		}
		// set ts
		jQuery.each(self.leafRoots[dir.hash], function() {
			var f = self.file(this);
			if (f && f.ts && (dir.ts || 0) < f.ts) {
				dir.ts = f.ts;
			}
		});
		if (prevTs !== dir.ts) {
			change = true;
		}

		return change;
	},

	/**
	 * To aborted XHR object
	 * 
	 * @param Object xhr
	 * @param Object opts
	 * 
	 * @return void
	 */
	abortXHR : function(xhr, o) {
		var opts = o || {};
		
		if (xhr) {
			opts.quiet && (xhr.quiet = true);
			if (opts.abort && xhr._requestId) {
				this.request({
					data: {
						cmd: 'abort',
						id: xhr._requestId
					},
					preventDefault: true
				});
			}
			xhr.abort();
			xhr = void 0;
		}
	},

	/**
	 * Sets the custom header by xhr response header with options.parrotHeaders
	 *
	 * @param Object xhr
	 * 
	 * @return void
	 */
	setCustomHeaderByXhr : function(xhr) {
		var self = this;
		if (xhr.getResponseHeader && self.parrotHeaders && self.parrotHeaders.length) {
			jQuery.each(self.parrotHeaders, function(i, h) {
				var val = xhr.getResponseHeader(h);
				if (val) {
					self.customHeaders[h] = val;
					self.sessionStorage('core-ph:'+h, val);
				} else if (typeof val === 'string') {
					delete self.customHeaders[h];
					self.sessionStorage('core-ph:'+h, null);
				}
			});
		}
	},

	/**
	 * Determines if parrot headers.
	 *
	 * @return     {boolean}  True if parrot headers, False otherwise.
	 */
	hasParrotHeaders : function() {
		var res = false,
			phs = this.parrotHeaders;
		if (Object.keys(this.customHeaders).length) {
			for (var i = 0; i < phs.length; i++) {
				if (this.customHeaders[phs[i]]) {
					res = true;
					break;
				}
			}
		}
		return res;
	},

	/**
	 * Gets the request identifier
	 *
	 * @return  String  The request identifier.
	 */
	getRequestId : function() {
		return (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16);
	},
	
	/**
	 * Flip key and value of array or object
	 * 
	 * @param  Array | Object  { a: 1, b: 1, c: 2 }
	 * @param  Mixed           Static value
	 * @return Object          { 1: "b", 2: "c" }
	 */
	arrayFlip : function (trans, val) {
		var key,
			tmpArr = {},
			isArr = jQuery.isArray(trans);
		for (key in trans) {
			if (isArr || trans.hasOwnProperty(key)) {
				tmpArr[trans[key]] = val || key;
			}
		}
		return tmpArr;
	},
	
	/**
	 * Return array ["name without extention", "extention"]
	 * 
	 * @param String name
	 * 
	 * @return Array
	 * 
	 */
	splitFileExtention : function(name) {
		var m;
		if (m = name.match(/^(.+?)?\.((?:tar\.(?:gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(?:gz|bz2)|[a-z0-9]{1,10})$/i)) {
			if (typeof m[1] === 'undefined') {
				m[1] = '';
			}
			return [m[1], m[2]];
		} else {
			return [name, ''];
		}
	},
	
	/**
	 * Slice the ArrayBuffer by sliceSize
	 *
	 * @param      arraybuffer  arrayBuffer  The array buffer
	 * @param      Number       sliceSize    The slice size
	 * @return     Array   Array of sleced arraybuffer
	 */
	sliceArrayBuffer : function(arrayBuffer, sliceSize) {
		var segments= [],
			fi = 0;
		while(fi * sliceSize < arrayBuffer.byteLength){
			segments.push(arrayBuffer.slice(fi * sliceSize, (fi + 1) * sliceSize));
			fi++;
		}
		return segments;
	},

	arrayBufferToBase64 : function(ab) {
		if (!window.btoa) {
			return '';
		}
		var dView = new Uint8Array(ab), // Get a byte view
			arr = Array.prototype.slice.call(dView), // Create a normal array
			arr1 = arr.map(function(item) {
				return String.fromCharCode(item); // Convert
			});
	    return window.btoa(arr1.join('')); // Form a string
	},

	log : function(m) { window.console && window.console.log && window.console.log(m); return this; },
	
	debug : function(type, m) {
		var self = this,
			d = this.options.debug,
			tb = this.options.toastBackendWarn,
			tbOpts, showlog;

		if (type === 'backend-error') {
			if (! this.cwd().hash || (d && (d === 'all' || d['backend-error']))) {
				m = Array.isArray(m)? m : [ m ];
				this.error(m);
			}
		} else if (type === 'backend-warning') {
			showlog = true;
			if (tb) {
				tbOpts = jQuery.isPlainObject(tb)? tb : {};
				jQuery.each(Array.isArray(m)? m : [ m ], function(i, m) {
					self.toast(Object.assign({
						mode : 'warning',
						msg: m
					}, tbOpts));
				});
			}
		} else if (type === 'backend-debug') {
			this.trigger('backenddebug', m);
		}
		
		if (showlog || (d && (d === 'all' || d[type]))) {
			window.console && window.console.log && window.console.log('elfinder debug: ['+type+'] ['+this.id+']', m);
		}

		return this;
	},

	/**
	 * Parse response.debug and trigger debug
	 *
	 * @param      Object  response  The response
	 */
	responseDebug : function(response) {
		var rd = response.debug,
			d;
		if (rd) {
			// set options.debug
			d = this.options.debug;
			if (!d || d !== 'all') {
				if (!d) {
					d = this.options.debug = {};
				}
				d['backend-error'] = true;
				d['warning'] = true;
			}
			if (rd.mountErrors && (typeof rd.mountErrors === 'string' || (Array.isArray(rd.mountErrors) && rd.mountErrors.length))) {
				this.debug('backend-error', rd.mountErrors);
			}
			if (rd.backendErrors && (typeof rd.backendErrors === 'string' || (Array.isArray(rd.backendErrors) && rd.backendErrors.length))) {
				this.debug('backend-warning', rd.backendErrors);
			}
		}
	},

	time : function(l) { window.console && window.console.time && window.console.time(l); },
	timeEnd : function(l) { window.console && window.console.timeEnd && window.console.timeEnd(l); }
	

};

/**
 * for conpat ex. ie8...
 *
 * Object.keys() - JavaScript | MDN
 * https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
 */
if (!Object.keys) {
	Object.keys = (function () {
		var hasOwnProperty = Object.prototype.hasOwnProperty,
				hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
				dontEnums = [
					'toString',
					'toLocaleString',
					'valueOf',
					'hasOwnProperty',
					'isPrototypeOf',
					'propertyIsEnumerable',
					'constructor'
				],
				dontEnumsLength = dontEnums.length;

		return function (obj) {
			if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');

			var result = [];

			for (var prop in obj) {
				if (hasOwnProperty.call(obj, prop)) result.push(prop);
			}

			if (hasDontEnumBug) {
				for (var i=0; i < dontEnumsLength; i++) {
					if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
				}
			}
			return result;
		};
	})();
}
// Array.isArray
if (!Array.isArray) {
	Array.isArray = function(arr) {
		return jQuery.isArray(arr);
	};
}
// Object.assign
if (!Object.assign) {
	Object.assign = function() {
		return jQuery.extend.apply(null, arguments);
	};
}
// String.repeat
if (!String.prototype.repeat) {
	String.prototype.repeat = function(count) {
		'use strict';
		if (this == null) {
			throw new TypeError('can\'t convert ' + this + ' to object');
		}
		var str = '' + this;
		count = +count;
		if (count != count) {
			count = 0;
		}
		if (count < 0) {
			throw new RangeError('repeat count must be non-negative');
		}
		if (count == Infinity) {
			throw new RangeError('repeat count must be less than infinity');
		}
		count = Math.floor(count);
		if (str.length == 0 || count == 0) {
			return '';
		}
		// Ensuring count is a 31-bit integer allows us to heavily optimize the
		// main part. But anyway, most current (August 2014) browsers can't handle
		// strings 1 << 28 chars or longer, so:
		if (str.length * count >= 1 << 28) {
			throw new RangeError('repeat count must not overflow maximum string size');
		}
		var rpt = '';
		for (var i = 0; i < count; i++) {
			rpt += str;
		}
		return rpt;
	};
}
// String.trim
if (!String.prototype.trim) {
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g, '');
	};
}
// Array.apply
(function () {
	try {
		Array.apply(null, {});
		return;
	} catch (e) { }

	var toString = Object.prototype.toString,
		arrayType = '[object Array]',
		_apply = Function.prototype.apply,
		slice = /*@cc_on @if (@_jscript_version <= 5.8)
			function () {
				var a = [], i = this.length;
				while (i-- > 0) a[i] = this[i];
				return a;
			}@else@*/Array.prototype.slice/*@end@*/;

	Function.prototype.apply = function apply(thisArg, argArray) {
		return _apply.call(this, thisArg,
			toString.call(argArray) === arrayType ? argArray : slice.call(argArray));
	};
})();
// Array.from
if (!Array.from) {
	Array.from = function(obj) {
		return obj.length === 1 ? [obj[0]] : Array.apply(null, obj);
	};
}
// window.requestAnimationFrame and window.cancelAnimationFrame
if (!window.cancelAnimationFrame) {
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
// MIT license
(function() {
    var lastTime = 0;
    var vendors = ['ms', 'moz', 'webkit', 'o'];
    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] 
                                   || window[vendors[x]+'CancelRequestAnimationFrame'];
    }
 
    if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
              timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };
 
    if (!window.cancelAnimationFrame)
        window.cancelAnimationFrame = function(id) {
            clearTimeout(id);
        };
}());
}
lib/js/elfinder.min.js000064400001767643147361034410010671 0ustar00/*!
 * elFinder - file manager for web
 * Version 2.1.49 (2019-04-14)
 * http://elfinder.org
 * 
 * Copyright 2009-2019, Studio 42
 * Licensed under a 3-clauses BSD license
 */
!function(e,t){if("function"==typeof define&&define.amd)define(["jquery","jquery-ui"],t);else if("undefined"!=typeof exports){var n,i;try{n=require("jquery"),i=require("jquery-ui")}catch(a){}module.exports=t(n,i)}else t(e.jQuery,e.jQuery.ui,!0)}(this,function(e,t,n){n=n||!1;var i=function(t,n,a){var o,r,s,l,c,d,p,u=this,h=[],f=["button","tooltip"],m=e(t),g=e.extend(!0,{},e._data(m.get(0),"events")),v=e("<div/>").append(m.contents()).attr("class",m.attr("class")||"").attr("style",m.attr("style")||""),b=m.attr("id")||"",y="elfinder-"+(b?b:Math.random().toString().substr(2,7)),w="mousedown."+y,x="keydown."+y,k="keypress."+y,C="keyup."+y,z=!1,T=!1,A=["enable","disable","load","open","reload","select","add","remove","change","dblclick","getfile","lockfiles","unlockfiles","selectfiles","unselectfiles","dragstart","dragstop","search","searchend","viewchange"],S="",I={path:"",url:"",tmbUrl:"",disabled:[],separator:"/",archives:[],extract:[],copyOverwrite:!0,uploadOverwrite:!0,uploadMaxSize:0,jpgQuality:100,tmbCrop:!1,tmb:!1},O={},j={},M={},D={},F=[],E={},U={},P=[],R={},q=[],H=[],_=new u.command(u),N="auto",L=400,W=null,B="sounds/",$="",K=e(document.createElement("audio")).hide().appendTo("body")[0],V=0,X="",G=null,J=function(t){var n,i,a,o,r,s,l,c={},d={};u.api>=2.1?(u.commandMap=t.options.uiCmdMap&&Object.keys(t.options.uiCmdMap).length?t.options.uiCmdMap:{},X!==JSON.stringify(u.commandMap)&&(X=JSON.stringify(u.commandMap))):u.options.sync=0,t.init?(j={},D={}):(s=S,n="elfinder-subtree-loaded "+u.res("class","navexpand"),r=u.res("class","navcollapse"),i=Object.keys(j),a=function(e){if(!j[e])return!0;var t="directory"===j[e].mime,i=j[e].phash;!(!t||c[i]||!d[i]&&u.navHash2Elm(j[e].hash).is(":hidden")&&u.navHash2Elm(i).next(".elfinder-navbar-subtree").children().length>100)||!t&&i===S||R[e]?t&&(d[i]=!0):(t&&!c[i]&&(c[i]=!0,u.navHash2Elm(i).removeClass(n).next(".elfinder-navbar-subtree").empty()),ee(j[e]))},o=function(){i.length&&(G&&G._abort(),G=u.asyncJob(a,i,{interval:20,numPerOnce:100}).done(function(){var t=u.storage("hide")||{items:{}};Object.keys(M).length&&e.each(M,function(e){t.items[e]||delete M[e]})}))},u.trigger("filesgc").one("filesgc",function(){i=[]}),u.one("opendone",function(){s!==S&&(m.data("lazycnt")?u.one("lazydone",o):o())})),u.sorters={},S=t.cwd.hash,Y(t.files),j[S]||Y([t.cwd]),l=JSON.stringify(u.sorters),$!==l&&(u.trigger("sorterupdate"),$=l),u.lastDir(S),u.autoSync()},Y=function(t,n){var i,a,o,r,s={name:!0,perm:!0,date:!0,size:!0,kind:!0},l=!u.sorters._checked,c=t.length,d=function(t){var n=t||{},i=[];e.each(u.sortRules,function(e){(s[e]||"undefined"!=typeof n[e]||"mode"===e&&"undefined"!=typeof n.perm)&&i.push(e)}),u.sorters=u.arrayFlip(i,!0),u.sorters._checked=!0},p=["sizeInfo"],h={},f=u.storage("hide")||{},m=f.items||{};for(a=0;a<c;a++)i=Object.assign({},t[a]),r=!(f.show||!m[i.hash]),i.name&&i.hash&&i.mime&&(r||(l&&i.phash===S&&(d(i),l=!1),!i.phash||"add"!==n&&"change"!==n||(o=u.parents(i.phash))&&e.each(o,function(){h[this]=!0})),j[i.hash]&&(e.each(p,function(){j[i.hash][this]&&!i[this]&&(i[this]=j[i.hash][this])}),i.sizeInfo&&!i.size&&(i.size=i.sizeInfo.size),ee(j[i.hash],!0)),m[i.hash]&&(M[i.hash]=i),r?(c--,t.splice(a--,1)):(j[i.hash]=i,"directory"!==i.mime||D[i.hash]||(D[i.hash]={}),i.phash&&(D[i.phash]||(D[i.phash]={}),D[i.phash][i.hash]=!0)));e.each(Object.keys(h),function(){var e=j[this];e&&e.sizeInfo&&delete e.sizeInfo}),l&&d()},Q=function(t){var n,i=t.length,a={},o=function(t){var i=j[t];i&&("directory"===i.mime&&(a[t]&&delete u.roots[a[t]],e.each(u.leafRoots,function(n,i){var a,o;(a=e.inArray(t,i))!==-1&&(1===i.length?((o=Object.assign({},j[n]))&&o._realStats&&(e.each(o._realStats,function(e,t){o[e]=t}),Q(j[n]._realStats),u.change({changed:[o]})),delete u.leafRoots[n]):u.leafRoots[n].splice(a,1))}),u.searchStatus.state<2&&e.each(j,function(e,n){n.phash==t&&o(e)})),i.phash&&(n=u.parents(i.phash))&&e.each(n,function(){r[this]=!0}),ee(j[t]))},r={};for(e.each(u.roots,function(e,t){a[t]=e});i--;)o(t[i]);e.each(Object.keys(r),function(){var e=j[this];e&&e.sizeInfo&&delete e.sizeInfo})},Z=function(t){e.each(t,function(t,n){var i=n.hash;j[i]&&e.each(Object.keys(j[i]),function(e,t){"undefined"==typeof n[t]&&delete j[i][t]}),j[i]=j[i]?Object.assign(j[i],n):n})},ee=function(e,t){var n=e.hash,i=e.phash;i&&D[i]&&delete D[i][n],t||(D[n]&&delete D[n],u.optionsByHashes[n]&&delete u.optionsByHashes[n]),delete j[n]},te=0,ne=[],ie=!1,ae=function(t){var n,i=t.keyCode,a=!(!t.ctrlKey&&!t.metaKey),o="mousedown"===t.type;if(!o&&(u.keyState.keyCode=i),u.keyState.ctrlKey=a,u.keyState.shiftKey=t.shiftKey,u.keyState.metaKey=t.metaKey,u.keyState.altKey=t.altKey,!o)return"keyup"===t.type?void(u.keyState.keyCode=null):void(z&&(e.each(U,function(e,n){n.type==t.type&&n.keyCode==i&&n.shiftKey==t.shiftKey&&n.ctrlKey==a&&n.altKey==t.altKey&&(t.preventDefault(),t.stopPropagation(),n.callback(t,u),u.debug("shortcut-exec",e+" : "+n.description))}),i!=e.ui.keyCode.TAB||e(t.target).is(":input")||t.preventDefault(),"keydown"===t.type&&i==e.ui.keyCode.ESCAPE&&(m.find(".ui-widget:visible").length||u.clipboard().length&&u.clipboard([]),e.ui.ddmanager&&(n=e.ui.ddmanager.current,n&&n.helper&&n.cancel()),u.toHide(m.find(".ui-widget.elfinder-button-menu.elfinder-frontmost:visible")),u.trigger("keydownEsc",t))))},oe=new Date,re=window.parent!==window,se=function(){var t,n;if(re)try{n=e("iframe",window.parent.document),n.length&&e.each(n,function(n,i){if(i.contentWindow===window)return t=e(i),!1})}catch(i){}return t}();n||(n={}),u.UA.Mobile&&e(window).on("orientationchange."+y,function(){var e=(screen&&screen.orientation&&screen.orientation.angle||window.orientation||0)+0;e===-90&&(e=270),u.UA.Angle=e,u.UA.Rotated=e%180!==0}).trigger("orientationchange."+y),n.bootCallback&&"function"==typeof n.bootCallback&&!function(){var e=a,t=n.bootCallback;a=function(n,i){e&&"function"==typeof e&&e.call(this,n,i),t.call(this,n,i)}}(),delete n.bootCallback,this.api=null,this.newAPI=!1,this.oldAPI=!1,this.netDrivers=[],this.baseUrl="",this.i18nBaseUrl="",this.cssloaded=!1,this.theme=null,this.mimesCanMakeEmpty={},this.bootCallback,this.id=b,this.storage=function(){try{return"localStorage"in window&&null!==window.localStorage?(u.UA.Safari&&(window.localStorage.setItem("elfstoragecheck",1),window.localStorage.removeItem("elfstoragecheck")),u.localStorage):u.cookie}catch(e){return u.cookie}}(),this.options=Object.assign({},this._options),n.uiOptions&&n.uiOptions.toolbar&&Array.isArray(n.uiOptions.toolbar)&&e.isPlainObject(n.uiOptions.toolbar[n.uiOptions.toolbar.length-1])&&(u.options.uiOptions.toolbarExtra=Object.assign(u.options.uiOptions.toolbarExtra||{},n.uiOptions.toolbar.pop())),function(){var t=function(n,i){e.isPlainObject(n)&&e.each(n,function(n,a){e.isPlainObject(a)?(i[n]||(i[n]={}),t(a,i[n])):i[n]=a})};t(n,u.options)}(),this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra),delete this.options.uiOptions.toolbarExtra,this.toUnbindEvents={},this.bind=function(e,t,n){var i,a;if(t&&("function"==typeof t||"function"==typeof t.done))for(e=(""+e).toLowerCase().replace(/^\s+|\s+$/g,"").split(/\s+/),a=e.length,i=0;i<a;i++)void 0===E[e[i]]&&(E[e[i]]=[]),E[e[i]][n?"unshift":"push"](t);return this},this.unbind=function(t,n){var i,a,o,r;for(t=(""+t).toLowerCase().split(/\s+/),a=t.length,i=0;i<a;i++)(o=E[t[i]])&&(r=e.inArray(n,o),r>-1&&o.splice(r,1));return n=null,this},this.trigger=function(t,n,i){var a,o,r,s,l=t.toLowerCase(),c="object"==typeof n,d=E[l]||[],p=[];if(this.debug("event-"+l,n),c&&"undefined"!=typeof i||(i=!0),o=d.length){for(s=e.Event(l),n&&(n._event=s),i&&(s.data=n),a=0;a<o;a++)if(d[a])if(d[a].done)p.push(d[a].done);else{if(d[a].length&&!i){if("undefined"==typeof r)try{r=JSON.stringify(n)}catch(h){r=!1}s.data=r?JSON.parse(r):n}try{if(d[a].call(s,s,this)===!1||s.isDefaultPrevented()){this.debug("event-stoped",s.type);break}}catch(f){window.console&&window.console.log&&window.console.log(f)}}if(o=p.length)for(a=0;a<o;a++)try{if(p[a].call(s,s,this)===!1||s.isDefaultPrevented()){this.debug("event-stoped",s.type+"(done)");break}}catch(f){window.console&&window.console.log&&window.console.log(f)}this.toUnbindEvents[l]&&this.toUnbindEvents[l].length&&(e.each(this.toUnbindEvents[l],function(e,t){u.unbind(t.type,t.callback)}),delete this.toUnbindEvents[l])}return this},this.getListeners=function(e){return e?E[e.toLowerCase()]:E},this.baseUrl=function(){var t,n,i,a;return u.options.baseUrl?u.options.baseUrl:(a="",t=null,e("head > script").each(function(){if(this.src&&this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js$/i))return t=e(this),!1}),t&&(n=e('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length,n||(u.cssloaded=null),a=t.attr("src").replace(/js\/[^\/]+$/,""),a.match(/^(https?\/\/|\/)/)||(i=e("head > base[href]").attr("href"))&&(a=i.replace(/\/$/,"")+"/"+a)),""!==a?u.options.baseUrl=a:(u.options.baseUrl||(u.options.baseUrl="./"),a=u.options.baseUrl),a)}(),this.i18nBaseUrl=(this.options.i18nBaseUrl||this.baseUrl+"js/i18n").replace(/\/$/,"")+"/",this.options.maxErrorDialogs=Math.max(1,parseInt(this.options.maxErrorDialogs||5)),I.dispInlineRegex=this.options.dispInlineRegex,this.options.cssAutoLoad&&!function(){var t=u.baseUrl;Array.isArray(u.options.cssAutoLoad)&&(u.cssloaded===!0?u.loadCss(u.options.cssAutoLoad):u.bind("cssloaded",function(){u.loadCss(u.options.cssAutoLoad)})),null===u.cssloaded&&(m.data("cssautoloadHide",e("<style>.elfinder{visibility:hidden;overflow:hidden}</style>")),e("head").append(m.data("cssautoloadHide")),u.options.themes["default"]||(u.options.themes=Object.assign({"default":{name:"default",cssurls:"css/theme.css",author:"elFinder Project",license:"3-clauses BSD"}},u.options.themes),u.options.theme||(u.options.theme="default")),u.loadCss([t+"css/elfinder.min.css"],{dfd:e.Deferred().always(function(){m.data("cssautoloadHide")&&(m.data("cssautoloadHide").remove(),m.removeData("cssautoloadHide"))}).done(function(){u.cssloaded||(u.cssloaded=!0,u.trigger("cssloaded"))}).fail(function(){u.cssloaded=!1,u.error(["errRead","CSS (elfinder or theme)"])})})),u.options.cssAutoLoad=!1}(),this.changeTheme(this.storage("theme")||this.options.theme),this.optionProperties={icon:void 0,csscls:void 0,tmbUrl:void 0,uiCmdMap:{},netkey:void 0,disabled:[]},re||this.options.enableAlways||2!==e("body").children().length||(this.options.enableAlways=!0),this.options.debug===!0?this.options.debug="all":Array.isArray(this.options.debug)?!function(){var t={};e.each(u.options.debug,function(){t[this]=!0}),u.options.debug=t}():this.options.debug=!1,this.noConflicts={},this.noConflict=function(){e.each(f,function(t,n){e.fn[n]&&"function"==typeof e.fn[n].noConflict&&(u.noConflicts[n]=e.fn[n].noConflict())})},this.noConflict(),this.isCORS=!1,function(){if("undefined"!=typeof u.options.cors&&null!==u.options.cors)u.isCORS=!!u.options.cors;else{var t,i=document.createElement("a"),a=window.location.protocol,o=function(e){return e=e&&":"!==e?e:a,"https:"===e?/\:443$/:/\:80$/},r=window.location.host.replace(o(a),"");i.href=n.url,n.urlUpload&&n.urlUpload!==n.url&&(t=document.createElement("a"),t.href=n.urlUpload),(r!==i.host.replace(o(i.protocol),"")||":"!==i.protocol&&""!==i.protocol&&a!==i.protocol||t&&(r!==t.host.replace(o(t.protocol),"")||":"!==t.protocol&&""!==t.protocol&&a!==t.protocol))&&(u.isCORS=!0)}u.isCORS&&(e.isPlainObject(u.options.customHeaders)||(u.options.customHeaders={}),e.isPlainObject(u.options.xhrFields)||(u.options.xhrFields={}),u.options.requestType="post",u.options.customHeaders["X-Requested-With"]="XMLHttpRequest",u.options.xhrFields.withCredentials=!0)}(),this.requestType=/^(get|post)$/i.test(this.options.requestType)?this.options.requestType.toLowerCase():"get",s=Math.max(parseInt(this.options.requestMaxConn),1),this.optsCustomData=e.isPlainObject(this.options.customData)?this.options.customData:{},this.customData=Object.assign({},this.optsCustomData),this.prevCustomData=null,this.customHeaders=e.isPlainObject(this.options.customHeaders)?this.options.customHeaders:{},this.xhrFields=e.isPlainObject(this.options.xhrFields)?this.options.xhrFields:{},this.replaceXhrSend=function(){p||(p=XMLHttpRequest.prototype.send),XMLHttpRequest.prototype.send=function(){var t=this;return u.customHeaders&&e.each(u.customHeaders,function(e){t.setRequestHeader(e,this)}),u.xhrFields&&e.each(u.xhrFields,function(e){e in t&&(t[e]=this)}),p.apply(this,arguments)}},this.restoreXhrSend=function(){p&&(XMLHttpRequest.prototype.send=p)},this.abortCmdsOnOpen=this.options.abortCmdsOnOpen||["tmb","parents"],this.navPrefix="nav"+(i.prototype.uniqueid?i.prototype.uniqueid:"")+"-",this.cwdPrefix=i.prototype.uniqueid?"cwd"+i.prototype.uniqueid+"-":"",++i.prototype.uniqueid,this.uploadURL=n.urlUpload||n.url,this.namespace=y,this.today=new Date(oe.getFullYear(),oe.getMonth(),oe.getDate()).getTime()/1e3,this.yesterday=this.today-86400,l=this.options.UTCDate?"UTC":"",this.getHours="get"+l+"Hours",this.getMinutes="get"+l+"Minutes",this.getSeconds="get"+l+"Seconds",this.getDate="get"+l+"Date",this.getDay="get"+l+"Day",this.getMonth="get"+l+"Month",this.getFullYear="get"+l+"FullYear",this.zIndex,this.searchStatus={state:0,query:"",target:"",mime:"",mixed:!1,ininc:!1},this.lang=this.storage("lang")||this.options.lang,"jp"===this.lang&&(this.lang=this.options.lang="ja"),this.viewType=this.storage("view")||this.options.defaultView||"icons",this.sortType=this.storage("sortType")||this.options.sortType||"name",this.sortOrder=this.storage("sortOrder")||this.options.sortOrder||"asc",this.sortStickFolders=this.storage("sortStickFolders"),null===this.sortStickFolders?this.sortStickFolders=!!this.options.sortStickFolders:this.sortStickFolders=!!this.sortStickFolders,this.sortAlsoTreeview=this.storage("sortAlsoTreeview"),null===this.sortAlsoTreeview||null===this.options.sortAlsoTreeview?this.sortAlsoTreeview=!!this.options.sortAlsoTreeview:this.sortAlsoTreeview=!!this.sortAlsoTreeview,this.sortRules=e.extend(!0,{},this._sortRules,this.options.sortRules),e.each(this.sortRules,function(e,t){"function"!=typeof t&&delete u.sortRules[e]}),this.compare=e.proxy(this.compare,this),this.notifyDelay=this.options.notifyDelay>0?parseInt(this.options.notifyDelay):500,this.draggingUiHelper=null,this.droppable={greedy:!0,tolerance:"pointer",accept:".elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename",hoverClass:this.res("class","adroppable"),classes:{"ui-droppable-hover":this.res("class","adroppable")},autoDisable:!0,drop:function(t,n){var i,a,o,r=e(this),s=e.grep(n.helper.data("files")||[],function(e){return!!e}),l=[],c=[],d=[],p=n.helper.hasClass("elfinder-drag-helper-plus"),h="class";if("undefined"==typeof t.button||n.helper.data("namespace")!==y||!u.insideWorkzone(t.pageX,t.pageY))return!1;for(a=r.hasClass(u.res(h,"cwdfile"))?u.cwdId2Hash(r.attr("id")):r.hasClass(u.res(h,"navdir"))?u.navId2Hash(r.attr("id")):S,i=s.length;i--;)o=s[i],o!=a&&j[o].phash!=a?l.push(o):(p&&o!==a&&j[a].write?c:d).push(o);return!d.length&&(n.helper.data("droped",!0),c.length&&(n.helper.hide(),u.exec("duplicate",c,{_userAction:!0})),void(l.length&&(n.helper.hide(),u.clipboard(l,!p),u.exec("paste",a,{_userAction:!0},a).always(function(){u.clipboard([]),u.trigger("unlockfiles",{files:s})}),u.trigger("drop",{files:s}))))}},this.enabled=function(){return z&&this.visible()},this.visible=function(){return m[0].elfinder&&m.is(":visible")},this.isRoot=function(e){return!(!e.isroot&&e.phash)},this.root=function(t,n){t=t||S;var i,a;if(!n&&(e.each(u.roots,function(e,n){if(0===t.indexOf(e))return i=n,!1}),i))return i;for(i=j[t];i&&i.phash&&(n||!i.isroot);)i=j[i.phash];if(i)return i.hash;for(;a in j&&j.hasOwnProperty(a);)if(i=j[a],"directory"===i.mime&&!i.phash&&i.read)return i.hash;return""},this.cwd=function(){return j[S]||{}},this.option=function(t,n){var i,a;return n=n||S,u.optionsByHashes[n]&&"undefined"!=typeof u.optionsByHashes[n][t]?u.optionsByHashes[n][t]:!u.hasVolOptions||S===n||(a=u.file(n))&&a.phash===S?O[t]||"":(i="",e.each(u.volOptions,function(e,a){if(0===n.indexOf(e))return i=a[t]||"",!1}),i)},this.getDisabledCmds=function(t,n){var i={hidden:!0};return Array.isArray(t)||(t=[t]),e.each(t,function(e,t){var n=u.option("disabledFlip",t);n&&Object.assign(i,n)}),n?i:Object.keys(i)},this.file=function(e,t){return e?j[e]||(t?M[e]:void 0):void 0},this.files=function(t){var n={};return t?D[t]?(e.each(D[t],function(e){j[e]?n[e]=j[e]:delete D[t][e]}),Object.assign({},n)):{}:Object.assign({},j)},this.parents=function(e){for(var t,n=[];e&&(t=this.file(e));)n.unshift(t.hash),e=t.phash;return n},this.path2array=function(e,t){for(var n,i=[];e;){if(!(n=j[e])||!n.hash){i=[];break}i.unshift(t&&n.i18?n.i18:n.name),e=n.isroot?null:n.phash}return i},this.path=function(t,n,i){var a=j[t]&&j[t].path?j[t].path:this.path2array(t,n).join(O.separator);if(i&&j[t]){i=Object.assign({notify:{type:"parents",cnt:1,hideCnt:!0}},i);var o,r=e.Deferred(),s=i.notify,l=!1,c=function(){u.request({data:{cmd:"parents",target:j[t].phash},notify:s,preventFail:!0}).done(d).fail(function(){r.reject()})},d=function(){u.one("parentsdone",function(){a=u.path(t,n),""===a&&l?(l=!1,c()):(s&&(clearTimeout(o),s.cnt=-parseInt(s.cnt||0),u.notify(s)),r.resolve(a))})};return a?r.resolve(a):(u.ui.tree?(s&&(o=setTimeout(function(){u.notify(s)},u.notifyDelay)),l=!0,d(!0)):c(),r)}return a},this.url=function(t,n){var i,a=j[t],o=n||{},r=o.async||!1,s=o.temporary||!1,l=o.onetime&&u.option("onetimeUrl",t)||!1,c=o.absurl||!1,d=r||l?e.Deferred():null,p=function(e){return e&&c&&(e=u.convAbsUrl(e)),e},h=function(n){if(n)return p(n);if(a.url)return p(a.url);if("undefined"==typeof i&&(i=u.option("url",!u.isRoot(a)&&a.phash||a.hash)),i)return p(i+e.map(u.path2array(t),function(e){return encodeURIComponent(e)}).slice(1).join("/"));var o=Object.assign({},u.customData,{cmd:"file",target:a.hash});return u.oldAPI&&(o.cmd="open",o.current=a.phash),p(u.options.url+(u.options.url.indexOf("?")===-1?"?":"&")+e.param(o,!0))};if(!a||!a.read)return r?d.resolve(""):"";if(l)r=!0,this.request({data:{cmd:"url",target:t,options:{onetime:1}},preventDefault:!0,options:{async:r},notify:{type:"file",cnt:1,hideCnt:!0}}).done(function(e){d.resolve(p(e.url||""))}).fail(function(){d.resolve("")});else if("1"==a.url||s&&!a.url&&!(i=u.option("url",!u.isRoot(a)&&a.phash||a.hash)))this.request({data:{cmd:"url",target:t,options:{temporary:s?1:0}},preventDefault:!0,options:{async:r},notify:r?{type:s?"file":"url",cnt:1,hideCnt:!0}:{}}).done(function(e){a.url=e.url||""}).fail(function(){a.url=""}).always(function(){var e;return a.url&&s&&(e=a.url,a.url="1"),r?void d.resolve(h(e)):h(e)});else{if(!r)return h();d.resolve(h())}return r?d:void 0},this.forExternalUrl=function(e,t){var n=u.option("onetimeUrl",e),i={async:!0,absurl:!0};return i[n?"onetime":"temporary"]=!0,u.url(e,Object.assign({},t,i))},this.openUrl=function(t,n){var i=j[t],a="";return i&&i.read?!n&&(i.url?1!=i.url&&(a=i.url):O.url&&0===i.hash.indexOf(u.cwd().volumeid)&&(a=O.url+e.map(this.path2array(t),function(e){return encodeURIComponent(e)}).slice(1).join("/")),a)?a+=(a.match(/\?/)?"&":"?")+"_".repeat((a.match(/[\?&](_+)t=/g)||["&t="]).sort().shift().match(/[\?&](_*)t=/)[1].length+1)+"t="+(i.ts||parseInt(+new Date/1e3)):(a=this.options.url,a=a+(a.indexOf("?")===-1?"?":"&")+(this.oldAPI?"cmd=open&current="+i.phash:"cmd=file")+"&target="+i.hash+"&_t="+(i.ts||parseInt(+new Date/1e3)),n&&(a+="&download=1"),e.each(this.customData,function(e,t){a+="&"+encodeURIComponent(e)+"="+encodeURIComponent(t)}),a):""},this.tmb=function(t){var n,i,a="elfinder-cwd-bgurl",o="";return!(!e.isPlainObject(t)||(u.searchStatus.state&&0!==t.hash.indexOf(u.cwd().volumeid)?(n=u.option("tmbUrl",t.hash),i=u.option("tmbCrop",t.hash)):(n=O.tmbUrl,i=O.tmbCrop),i&&(a+=" elfinder-cwd-bgurl-crop"),"self"===n&&0===t.mime.indexOf("image/")?(o=u.openUrl(t.hash),a+=" elfinder-cwd-bgself"):(u.oldAPI||n)&&t&&t.tmb&&1!=t.tmb?o=n+t.tmb:u.newAPI&&t&&t.tmb&&1!=t.tmb&&(o=t.tmb),!o))&&(t.ts&&"self"!==n&&(o+=(o.match(/\?/)?"&":"?")+"_t="+t.ts),{url:o,className:a})},this.selected=function(){return F.slice(0)},this.selectedFiles=function(){return e.map(F,function(e){return j[e]?Object.assign({},j[e]):null})},this.fileByName=function(e,t){var n;for(n in j)if(j.hasOwnProperty(n)&&j[n].phash==t&&j[n].name==e)return j[n]},this.validResponse=function(e,t){return t.error||this.rules[this.rules[e]?e:"defaults"](t)},this.returnBytes=function(e){var t;return isNaN(e)?(e||(e=""),e=e.replace(/b$/i,""),t=e.charAt(e.length-1).toLowerCase(),e=e.replace(/[tgmk]$/i,""),"t"==t?e=1024*e*1024*1024*1024:"g"==t?e=1024*e*1024*1024:"m"==t?e=1024*e*1024:"k"==t&&(e=1024*e),e=isNaN(e)?0:parseInt(e)):(e=parseInt(e),e<1&&(e=0)),e},this.request=function(t){var n,i,a,o,r=this,l=this.options,c=e.Deferred(),d=(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16),p=Object.assign({},r.customData,{mimes:l.onlyMimes},t.data||t),u=p.cmd,h="binary"===(t.options||{}).dataType,f=!t.asNotOpen&&"open"===u,m=!(h||t.preventDefault||t.preventFail),g=!(h||t.preventDefault||t.preventDone),v=Object.assign({},t.notify),b=!!t.cancel,y=h||!!t.raw,w=t.syncOnFail,x=!!t.lazy,k=t.prepare,C=t.navigate,z=(t.options||{}).cache,T=Object.assign({url:l.url,async:!0,type:this.requestType,dataType:"json",cache:r.api>=2.1029,data:p,headers:this.customHeaders,xhrFields:this.xhrFields},t.options||{}),A=function(t){t.warning&&r.error(t.warning),f?J(t):r.updateCache(t),t.changed&&t.changed.length&&Z(t.changed),r.lazy(function(){t.removed&&t.removed.length&&r.remove(t),t.added&&t.added.length&&r.add(t),t.changed&&t.changed.length&&r.change(t)}).then(function(){return r.lazy(function(){r.trigger(u,t,!1)})}).then(function(){return r.lazy(function(){r.trigger(u+"done")})}).then(function(){t.toasts&&Array.isArray(t.toasts)&&e.each(t.toasts,function(){this.msg&&r.toast(this)}),t.sync&&r.sync()})},j=function(e,t){var n,i,a=r.options.debug;switch(t){case"abort":n=e.quiet?"":["errConnect","errAbort"];break;case"timeout":n=["errConnect","errTimeout"];break;case"parsererror":n=["errResponse","errDataNotJSON"],e.responseText&&(!S||a&&("all"===a||a["backend-error"]))&&n.push(e.responseText);break;default:if(e.responseText)try{i=JSON.parse(e.responseText),i&&i.error&&(n=i.error)}catch(o){}if(!n)if(403==e.status)n=["errConnect","errAccess","HTTP error "+e.status];else if(404==e.status)n=["errConnect","errNotFound","HTTP error "+e.status];else if(e.status>=500)n=["errResponse","errServerError","HTTP error "+e.status];else{if(414==e.status&&"get"===T.type)return T.type="post",r.abortXHR(e),void(c.xhr=e=r.transport.send(T).fail(n).done(M));n=e.quiet?"":["errConnect","HTTP error "+e.status]}}r.trigger(u+"done"),c.reject({error:n},e,t)},M=function(t){var n=r.options.debug;if(r.currentReqCmd=u,!t.debug||n&&"all"===n||(n||(n=r.options.debug={}),n["backend-error"]=!0,n.warning=!0),y)return r.abortXHR(i),t&&t.debug&&r.debug("backend-debug",t),c.resolve(t);if(!t)return c.reject({error:["errResponse","errDataEmpty"]},i,t);if(!e.isPlainObject(t))return c.reject({error:["errResponse","errDataNotJSON"]},i,t);if(t.error)return f&&e.each(r.leafRoots,function(t,n){r.leafRoots[t]=e.grep(n,function(e){return e!==p.target})}),c.reject({error:t.error},i,t);var a=function(){var n,a=function(n){r.leafRoots[p.target]&&t[n]&&e.each(r.leafRoots[p.target],function(e,i){var a;(a=r.file(i))&&t[n].push(a)})},o=function(){r.textMimes={},e.each(r.res("mimes","text"),function(){r.textMimes[this.toLowerCase()]=!0})};return f?a("files"):"tree"===u&&a("tree"),t=r.normalize(t),r.validResponse(u,t)?(f&&(r.api||(r.api=t.api||1,"2.0"==r.api&&"undefined"!=typeof t.options.uploadMaxSize&&(r.api="2.1"),r.newAPI=r.api>=2,r.oldAPI=!r.newAPI),t.textMimes&&Array.isArray(t.textMimes)&&(r.resources.mimes.text=t.textMimes,o()),!r.textMimes&&o(),t.options&&(O=Object.assign({},I,t.options)),t.netDrivers&&(r.netDrivers=t.netDrivers),t.maxTargets&&(r.maxTargets=t.maxTargets),p.init&&(r.uplMaxSize=r.returnBytes(t.uplMaxSize),r.uplMaxFile=t.uplMaxFile?Math.min(parseInt(t.uplMaxFile),50):20)),"function"==typeof k&&k(t),C&&(n=C.target||"added",t[n]&&t[n].length&&r.one(u+"done",function(){var i=t[n],a=r.findCwdNodes(i),o=function(){var t=r.cwd().hash;return e.map(i,function(e){return e.phash&&t===e.phash?e.hash:null})},s=o(),l=function(t){var n,i,a,l=void 0,c=t.action?t.action.data:void 0;return(c||s.length)&&t.action&&(i=t.action.msg)&&(n=t.action.cmd)&&(!t.action.cwdNot||t.action.cwdNot!==r.cwd().hash)&&(a=t.action.done,c=t.action.data,l=e("<div/>").append(e('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'+r.i18n(i)+"</span></button>").on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click",function(){r.exec(n,c||s,{_userAction:!0,_currentType:"toast",_currentNode:e(this)}),a&&r.one(n+"done",function(){"function"==typeof a?a():"select"===a&&r.trigger("selectfiles",{files:o()})})}))),delete t.action,t.extNode=l,t};C.toast||(C.toast={}),!C.noselect&&r.trigger("selectfiles",{files:r.searchStatus.state>1?e.map(i,function(e){return e.hash}):s}),a.length?(C.noscroll||(a.first().trigger("scrolltoview",{blink:!1}),r.resources.blink(a,"lookme")),e.isPlainObject(C.toast.incwd)&&r.toast(l(C.toast.incwd))):e.isPlainObject(C.toast.inbuffer)&&r.toast(l(C.toast.inbuffer))})),c.resolve(t),void(t.debug&&r.debug("backend-debug",t))):c.reject({error:t.norError||"errResponse"},i,t)};r.abortXHR(i),x?r.lazy(a):a()},D=function(e){i&&"pending"===i.state()&&(r.abortXHR(i,{quiet:!0,abort:!0}),(!e||"unload"!==e.type&&"destroy"!==e.type)&&r.autoSync())},F=function(e){if(r.trigger(u+"done"),"autosync"==e.type){if("stop"!=e.data.action)return}else if(!("unload"==e.type||"destroy"==e.type||"openxhrabort"==e.type||e.data.added&&e.data.added.length))return;D(e)},E=function(t){var n=function(){w=!1,c.reject()};if(t&&"cmd"===t)return u;if(f){if(ie)return c.reject();ie=!0}if(c.always(function(){delete T.headers["X-elFinderReqid"]}).fail(function(t,n,i){var a={cmd:u,err:t,xhr:n,rc:i};0===t&&ne.length&&(ne=e.grep(ne,function(e){return e("cmd")!==u})),r.trigger("requestError",a),a._event&&a._event.isDefaultPrevented()&&(m=!1,w=!1,t&&(t.error="")),D(),f&&(o=r.file(p.target),o&&o.volumeid&&r.isRoot(o)&&delete r.volumeExpires[o.volumeid]),r.trigger(u+"fail",i),t&&(m?r.error(t):r.debug("error",r.i18n(t))),w&&r.sync()}),!u)return w=!1,c.reject({error:"errCmdReq"});if(r.maxTargets&&p.targets&&p.targets.length>r.maxTargets)return w=!1,c.reject({error:["errMaxTargets",r.maxTargets]});if(g&&c.done(A),f){for(;a=q.pop();)a.queueAbort();if(S!==p.target)for(;a=H.pop();)a.queueAbort()}return e.inArray(u,(r.cmdsToAdd+" autosync").split(" "))!==-1&&("autosync"!==u&&(r.autoSync("stop"),c.always(function(){r.autoSync()})),r.trigger("openxhrabort")),delete T.preventFail,r.api>=2.1029&&(z?T.headers["X-elFinderReqid"]=d:Object.assign(T.data,{reqid:d})),c.syncOnFail=function(e){w=!!e},te++,c.xhr=i=r.transport.send(T).always(function(){T._xhr&&"undefined"!=typeof T._xhr.responseURL&&(i.responseURL=T._xhr.responseURL||""),--te,ne.length?ne.shift()():ie=!1}).fail(j).done(M),r.api>=2.1029&&(i._requestId=d),f||p.compare&&"info"===u?(i.queueAbort=n,q.unshift(i),p.compare&&r.bind(r.cmdsToAdd+" autosync openxhrabort",F),c.always(function(){var t=e.inArray(i,q);p.compare&&r.unbind(r.cmdsToAdd+" autosync openxhrabort",F),t!==-1&&q.splice(t,1)})):e.inArray(u,r.abortCmdsOnOpen)!==-1&&(i.queueAbort=n,H.unshift(i),c.always(function(){var t=e.inArray(i,H);t!==-1&&H.splice(t,1)})),r.bind("unload destroy",F),c.always(function(){r.unbind("unload destroy",F)}),c},U=function(){return v.type&&v.cnt&&(b&&(v.cancel=c,t.eachCancel&&(v.id=+new Date)),n=setTimeout(function(){r.notify(v),c.always(function(){v.cnt=-(parseInt(v.cnt)||0),r.notify(v)})},r.notifyDelay),c.always(function(){clearTimeout(n)})),f&&(ie=!1),te<s?E():(f?ne.unshift(E):ne.push(E),c)},P={opts:t,result:!0};return r.api||p.init?(r.trigger("request."+u,P,!0),P.result?"object"==typeof P.result&&P.result.promise?(P.result.done(U).fail(function(){r.trigger(u+"done"),c.reject()}),c):U():(r.trigger(u+"done"),c.reject())):(w=!1,c.reject())},this.cache=function(e){Array.isArray(e)||(e=[e]),Y(e)},this.updateCache=function(t){e.isPlainObject(t)&&(t.files&&t.files.length&&Y(t.files,"files"),t.tree&&t.tree.length&&Y(t.tree,"tree"),t.removed&&t.removed.length&&Q(t.removed),t.added&&t.added.length&&Y(t.added,"add"),t.changed&&t.changed.length&&Z(t.changed,"change"))},this.diff=function(t,n,i){var a={},o=[],r=[],s=[],l=null,c=function(e){for(var t=s.length;t--;)if(s[t].hash==e)return!0};return e.each(t,function(e,t){a[t.hash]=t}),i&&i.length&&(l={},e.each(i,function(){l[this]=!0})),e.each(j,function(e,t){a[e]||n&&t.phash!==n||r.push(e)}),e.each(a,function(t,n){var i,a=j[t],r={};a?(e.each(Object.keys(a),function(){r[this]=!0}),e.each(n,function(e){if(delete r[e],!(l&&l[e]||n[e]===a[e]))return s.push(n),r={},!1}),i=Object.keys(r).length,0!==i&&(l&&e.each(r,function(e){l[e]&&--i}),0!==i&&s.push(n))):o.push(n)}),e.each(r,function(t,n){var i=j[n],o=i.phash;o&&"directory"==i.mime&&e.inArray(o,r)===-1&&a[o]&&!c(o)&&s.push(a[o])}),{added:o,removed:r,changed:s}},this.sync=function(t,n){this.autoSync("stop");var i=this,a=function(){var i="",a=0,o=0;return t&&n&&e.each(j,function(e,n){n.phash&&n.phash===t&&(++a,o=Math.max(o,n.ts)),i=a+":"+o}),i},o=a(),r=e.Deferred().done(function(){i.trigger("sync")}),s=[this.request({data:{cmd:"open",reload:1,target:S,tree:!t&&this.ui.tree?1:0,compare:o},preventDefault:!0})],l=function(){for(var e,t=[],n=i.file(i.root(S)),a=n?n.volumeid:null,o=i.cwd().phash;o;)(e=i.file(o))?(0!==o.indexOf(a)&&(t.push({target:o,cmd:"tree"}),i.isRoot(e)||t.push({target:o,cmd:"parents"}),n=i.file(i.root(o)),a=n?n.volumeid:null),o=e.phash):o=null;return t};return!t&&i.api>=2&&(S!==this.root()&&s.push(this.request({data:{cmd:"parents",target:S},preventDefault:!0})),e.each(l(),function(e,t){s.push(i.request({data:{cmd:t.cmd,target:t.target},preventDefault:!0}))})),e.when.apply(e,s).fail(function(t,a){n&&e.inArray("errOpen",t)===-1?r.reject(t&&0!=a.status?t:void 0):(r.reject(t),i.parseError(t)&&i.request({data:{cmd:"open",target:i.lastDir("")||i.root(),tree:1,init:1},notify:{type:"open",cnt:1,hideCnt:!0}}))}).done(function(e){var n,a,s;if(e.cwd.compare&&o===e.cwd.compare)return r.reject();if(n={tree:[]},a=arguments.length,a>1)for(s=1;s<a;s++)arguments[s].tree&&arguments[s].tree.length&&n.tree.push.apply(n.tree,arguments[s].tree);if(i.api<2.1&&(n.tree||(n.tree=[]),n.tree.push(e.cwd)),e=i.normalize(e),!i.validResponse("open",e))return r.reject(e.norError||"errResponse");if(n=i.normalize(n),!i.validResponse("tree",n))return r.reject(n.norError||"errResponse");var l=i.diff(e.files.concat(n&&n.tree?n.tree:[]),t);return l.added.push(e.cwd),i.updateCache(l),l.removed.length&&i.remove(l),l.added.length&&i.add(l),l.changed.length&&i.change(l),r.resolve(l)}).always(function(){i.autoSync()}),r},this.upload=function(e){return this.transport.upload(e,this)},this.shortcut=function(t){var n,i,a,o,r;if(this.options.allowShortcuts&&t.pattern&&e.isFunction(t.callback))for(n=t.pattern.toUpperCase().split(/\s+/),o=0;o<n.length;o++)i=n[o],r=i.split("+"),a=1==(a=r.pop()).length?a>0?a:a.charCodeAt(0):a>0?a:e.ui.keyCode[a],a&&!U[i]&&(U[i]={keyCode:a,altKey:e.inArray("ALT",r)!=-1,ctrlKey:e.inArray("CTRL",r)!=-1,shiftKey:e.inArray("SHIFT",r)!=-1,type:t.type||"keydown",callback:t.callback,description:t.description,pattern:i});return this},this.shortcuts=function(){var t=[];return e.each(U,function(e,n){t.push([n.pattern,u.i18n(n.description)])}),t},this.clipboard=function(t,n){var i=function(){return e.map(P,function(e){return e.hash})};return void 0!==t&&(P.length&&this.trigger("unlockfiles",{files:i()}),R={},P=e.map(t||[],function(e){var t=j[e];return t?(R[e]=!0,{hash:e,phash:t.phash,name:t.name,mime:t.mime,read:t.read,locked:t.locked,cut:!!n}):null}),this.trigger("changeclipboard",{clipboard:P.slice(0,P.length)}),n&&this.trigger("lockfiles",{
files:i()})),P.slice(0,P.length)},this.isCommandEnabled=function(e,t){var n,i,a=u.cwd().volumeid||"";return!t&&u.searchStatus.state>1&&u.selected().length&&(t=u.selected()[0]),n=!t||a&&0===t.indexOf(a)?O.disabledFlip:u.option("disabledFlip",t),i=this._commands[e],!!i&&(i.alwaysEnabled||!n[e])},this.exec=function(t,n,i,a){var o,r;return!a&&this.commandMap[t]&&"hidden"!==this.commandMap[t]&&(t=this.commandMap[t]),"open"===t&&((this.searchStatus.state||this.searchStatus.ininc)&&this.trigger("searchend",{noupdate:!0}),this.autoSync("stop")),!a&&n&&(e.isArray(n)?n.length&&(a=n[0]):a=n),o=this._commands[t]&&this.isCommandEnabled(t,a)?this._commands[t].exec(n,i):e.Deferred().reject("No such command"),r=typeof o,"object"===r&&o.promise||(u.debug("warning",'"cmd.exec()" should be returned "jQuery.Deferred" but cmd "'+t+'" returned "'+r+'"'),o=e.Deferred().resolve()),this.trigger("exec",{dfrd:o,cmd:t,files:n,opts:i,dstHash:a}),o},this.dialog=function(t,n){var i=e("<div/>").append(t).appendTo(m).elfinderdialog(n,u),a=i.closest(".ui-dialog"),o=function(){!i.data("draged")&&i.is(":visible")&&i.elfinderdialog("posInit")};return a.length&&(u.bind("resize",o),a.on("remove",function(){u.unbind("resize",o)})),i},this.toast=function(t){return e('<div class="ui-front"/>').appendTo(this.ui.toast).elfindertoast(t||{},this)},this.getUI=function(t){return this.ui[t]||(t?e():m)},this.getCommand=function(e){return void 0===e?this._commands:this._commands[e]},this.resize=function(t,n){var i,a=function(){for(var e=m.outerHeight(!0)-m.innerHeight(),t=m;t.get(0)!==W.get(0)&&(t=t.parent(),e+=t.outerHeight(!0)-t.innerHeight(),t.parent().length););return e},o=!m.hasClass("ui-resizable"),r=m.data("resizeSize")||{w:0,h:0},s={};W&&W.data("resizeTm")&&clearTimeout(W.data("resizeTm")),"string"==typeof n&&(i=n.match(/^([0-9.]+)%$/))&&(W&&W.length||(W=e(window)),W.data("marginToMyNode")||W.data("marginToMyNode",a()),W.data("fitToBaseFunc")||W.data("fitToBaseFunc",function(e){var t=W.data("resizeTm");e.preventDefault(),e.stopPropagation(),t&&cancelAnimationFrame(t),m.hasClass("elfinder-fullscreen")||u.UA.Mobile&&W.data("rotated")===u.UA.Rotated||(W.data("rotated",u.UA.Rotated),W.data("resizeTm",requestAnimationFrame(function(){u.restoreSize()})))}),"undefined"==typeof W.data("rotated")&&W.data("rotated",u.UA.Rotated),n=W.height()*(i[1]/100)-W.data("marginToMyNode"),W.off("resize."+u.namespace,W.data("fitToBaseFunc")),o&&W.on("resize."+u.namespace,W.data("fitToBaseFunc"))),m.css({width:t,height:parseInt(n)}),s.w=Math.round(m.width()),s.h=Math.round(m.height()),m.data("resizeSize",s),s.w===r.w&&s.h===r.h||(m.trigger("resize"),this.trigger("resize",{width:s.w,height:s.h}))},this.restoreSize=function(){this.resize(N,L)},this.show=function(){m.show(),this.enable().trigger("show")},this.hide=function(){this.options.enableAlways&&(T=z,z=!1),this.disable(),this.trigger("hide"),m.hide()},this.lazy=function(t,n,i){var a=function(e){var t,n=m.data("lazycnt");e?(t=!m.data("lazyrepaint")&&i.repaint,n?m.data("lazycnt",++n):m.data("lazycnt",1).addClass("elfinder-processing"),t&&m.data("lazyrepaint",!0).css("display")):n&&n>1?m.data("lazycnt",--n):(t=m.data("lazyrepaint"),m.data("lazycnt",0).removeData("lazyrepaint").removeClass("elfinder-processing"),t&&m.css("display"),u.trigger("lazydone"))},o=e.Deferred(),r=function(){o.resolve(t.call(o)),a(!1)};return n=n||0,i=i||{},a(!0),n?setTimeout(r,n):requestAnimationFrame(r),o},this.destroy=function(){m&&m[0].elfinder&&(m.hasClass("elfinder-fullscreen")&&u.toggleFullscreen(m),this.options.syncStart=!1,this.autoSync("forcestop"),this.trigger("destroy").disable(),P=[],F=[],E={},U={},e(window).off("."+y),e(document).off("."+y),u.trigger=function(){},e(K).remove(),m.off().removeData().empty().append(v.contents()).attr("class",v.attr("class")).attr("style",v.attr("style")),delete m[0].elfinder,e.each(g,function(t,n){e.each(n,function(e,t){m.on(t.type+(t.namespace?"."+t.namespace:""),t.selector,t.handler)})}))},this.autoSync=function(t){var n;if(u.options.sync>=1e3){if(r&&(clearTimeout(r),r=null,u.trigger("autosync",{action:"stop"})),"stop"===t?++V:V=Math.max(0,--V),V||"forcestop"===t||!u.options.syncStart)return;n=function(t){var i;O.syncMinMs&&(t||r)&&(t&&u.trigger("autosync",{action:"start"}),i=Math.max(u.options.sync,O.syncMinMs),r&&clearTimeout(r),r=setTimeout(function(){var t,a=!0,o=S;O.syncChkAsTs&&j[o]&&(t=j[o].ts)?u.request({data:{cmd:"info",targets:[o],compare:t,reload:1},preventDefault:!0}).done(function(e){var i;a=!0,e.compare&&(i=e.compare,i==t&&(a=!1)),a?u.sync(o).always(function(){i&&(j[o].ts=i),n()}):n()}).fail(function(t,a){var o=u.parseError(t);o&&0!=a.status?(u.error(o),Array.isArray(o)&&e.inArray("errOpen",o)!==-1&&u.request({data:{cmd:"open",target:u.lastDir("")||u.root(),tree:1,init:1},notify:{type:"open",cnt:1,hideCnt:!0}})):r=setTimeout(function(){n()},i)}):u.sync(S,!0).always(function(){n()})},i))},n(!0)}},this.insideWorkzone=function(e,t,n){var i=this.getUI("workzone").data("rectangle");return n=n||1,!(e<i.left+n||e>i.left+i.width+n||t<i.top+n||t>i.top+i.height+n)},this.toFront=function(t){var n=m.children(".ui-front").removeClass("elfinder-frontmost"),i=n.last();n.css("z-index",""),e(t).addClass("ui-front elfinder-frontmost").css("z-index",i.css("z-index")+1)},this.toHide=function(t,n){var i,a=e(t);!n&&a.hide(),a.hasClass("elfinder-frontmost")&&(a.removeClass("elfinder-frontmost"),i=m.children(".ui-front:visible:not(.elfinder-frontmost)").last(),i.length&&requestAnimationFrame(function(){m.children(".elfinder-frontmost:visible").length||(u.toFront(i),i.trigger("frontmost"))}))},this.getMaximizeCss=function(){return{width:"100%",height:"100%",margin:0,top:0,left:0,display:"block",position:"fixed",zIndex:Math.max(u.zIndex?u.zIndex+1:0,1e3),maxWidth:"",maxHeight:""}},function(){re&&u.UA.Fullscreen&&(u.UA.Fullscreen=!1,se&&"undefined"!=typeof se.attr("allowfullscreen")&&(u.UA.Fullscreen=!0));var t,n,i,a="elfinder-fullscreen",o="elfinder-fullscreen-native",r=function(){var t=0,n=0;e.each(m.children(".ui-dialog,.ui-draggable"),function(i,a){var o=e(a),r=o.position();r.top<0&&(o.css("top",t),t+=20),r.left<0&&(o.css("left",n),n+=20)})},s=u.UA.Fullscreen?{fullElm:function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||null},exitFull:function(){return document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen?document.msExitFullscreen():void 0},toFull:function(e){return e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():!!e.msRequestFullscreen&&e.msRequestFullscreen()}}:{fullElm:function(){var e;return m.hasClass(a)?m.get(0):(e=m.find("."+a),e.length?e.get(0):null)},exitFull:function(){var i;e(window).off("resize."+y,c),void 0!==n&&e("body").css("overflow",n),n=void 0,t&&(i=t.elm,l(i),e(i).trigger("resize",{fullscreen:"off"})),e(window).trigger("resize")},toFull:function(t){return n=e("body").css("overflow")||"",e("body").css("overflow","hidden"),e(t).css(u.getMaximizeCss()).addClass(a).trigger("resize",{fullscreen:"on"}),r(),e(window).on("resize."+y,c).trigger("resize"),!0}},l=function(n){t&&t.elm==n&&(e(n).removeClass(a+" "+o).attr("style",t.style),t=null)},c=function(t){var n;t.target===window&&(i&&cancelAnimationFrame(i),i=requestAnimationFrame(function(){(n=s.fullElm())&&e(n).trigger("resize",{fullscreen:"on"})}))};e(document).on("fullscreenchange."+y+" webkitfullscreenchange."+y+" mozfullscreenchange."+y+" MSFullscreenChange."+y,function(n){if(u.UA.Fullscreen){var d=s.fullElm(),p=e(window);i&&cancelAnimationFrame(i),null===d?(p.off("resize."+y,c),t&&(d=t.elm,l(d),e(d).trigger("resize",{fullscreen:"off"}))):(e(d).addClass(a+" "+o).attr("style","width:100%; height:100%; margin:0; padding:0;").trigger("resize",{fullscreen:"on"}),p.on("resize."+y,c),r()),p.trigger("resize")}}),u.toggleFullscreen=function(n,i){var a=e(n).get(0),o=null;if(o=s.fullElm()){if(o==a){if(i===!0)return o}else if(i===!1)return o;return s.exitFull(),null}return i===!1?null:(t={elm:a,style:e(a).attr("style")},s.toFull(a)!==!1?a:(t=null,null))}}(),function(){var t,n="elfinder-maximized",i=function(e){if(e.target===window&&e.data&&e.data.elm){var n=e.data.elm;t&&cancelAnimationFrame(t),t=requestAnimationFrame(function(){n.trigger("resize",{maximize:"on"})})}},a=function(t){e(window).off("resize."+y,i),e("body").css("overflow",t.data("bodyOvf")),t.removeClass(n).attr("style",t.data("orgStyle")).removeData("bodyOvf").removeData("orgStyle"),t.trigger("resize",{maximize:"off"})},o=function(t){t.data("bodyOvf",e("body").css("overflow")||"").data("orgStyle",t.attr("style")).addClass(n).css(u.getMaximizeCss()),e("body").css("overflow","hidden"),e(window).on("resize."+y,{elm:t},i),t.trigger("resize",{maximize:"on"})};u.toggleMaximize=function(t,i){var r=e(t),s=r.hasClass(n);if(s){if(i===!0)return;a(r)}else{if(i===!1)return;o(r)}}}(),Object.assign(e.ui.keyCode,{F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,DIG0:48,DIG1:49,DIG2:50,DIG3:51,DIG4:52,DIG5:53,DIG6:54,DIG7:55,DIG8:56,DIG9:57,NUM0:96,NUM1:97,NUM2:98,NUM3:99,NUM4:100,NUM5:101,NUM6:102,NUM7:103,NUM8:104,NUM9:105,CONTEXTMENU:93,DOT:190}),this.dragUpload=!1,this.xhrUpload=("undefined"!=typeof XMLHttpRequestUpload||"undefined"!=typeof XMLHttpRequestEventTarget)&&"undefined"!=typeof File&&"undefined"!=typeof FormData,this.transport={},"object"==typeof this.options.transport&&(this.transport=this.options.transport,"function"==typeof this.transport.init&&this.transport.init(this)),"function"!=typeof this.transport.send&&(this.transport.send=function(t){return u.UA.IE||(t._xhr=new XMLHttpRequest,t.xhr=function(){return t._xhr}),e.ajax(t)}),"iframe"==this.transport.upload?this.transport.upload=e.proxy(this.uploads.iframe,this):"function"==typeof this.transport.upload?this.dragUpload=!!this.options.dragUploadAllow:this.xhrUpload&&this.options.dragUploadAllow?(this.transport.upload=e.proxy(this.uploads.xhr,this),this.dragUpload=!0):this.transport.upload=e.proxy(this.uploads.iframe,this),this.decodeRawString=function(e){var t=function(e){var t,n,i;for(t=0,n=e.length,i=[];t<n;t++)i.push(e.charCodeAt(t));return i},n=function(e){var n,i,a,o=[];for("string"==typeof e&&(e=t(e)),n=0,i=e.length;a=e[n],n<i;n++)a>=55296&&a<=56319?o.push((1023&a)+64<<10|1023&e[++n]):o.push(a);return o},i=function(e){var t,n,i,a,o=String.fromCharCode;for(t=0,n=e.length,a="";i=e[t],t<n;t++)a+=i<=127?o(i):i<=223&&i>=194?o((31&i)<<6|63&e[++t]):i<=239&&i>=224?o((15&i)<<12|(63&e[++t])<<6|63&e[++t]):i<=247&&i>=240?o(55296|((7&i)<<8|(63&e[++t])<<2|e[++t]>>>4&3)-64,56320|(15&e[t++])<<6|63&e[t]):o(65533);return a};return i(n(e))},this.getContents=function(t,n){var i,a,o=this,r=e.Deferred(),s=n||"arraybuffer";return r.fail(function(){a&&"pending"===a.state()&&a.reject()}),i=o.openUrl(t),o.isSameOrigin(i)||(i=o.openUrl(t,!0)),a=o.request({data:{cmd:"get"},options:{url:i,type:"get",cache:!0,dataType:"binary",responseType:s,processData:!1}}).fail(function(){r.reject()}).done(function(e){r.resolve(e)}),r},this.getMimetype=function(e,t){var n,i,a=t;return i=(e+"").match(/\.([^.]+)$/),i&&(n=i[1])&&(o||(o=u.arrayFlip(u.mimeTypes)),(a=o[n.toLowerCase()])||(a=t)),a},u.hashCheckers=[],function(t){var n={check:!0},i=function(e){var i,a=new n.SparkMD5.ArrayBuffer;return i=t.asyncJob(function(e){a.append(e)},e).done(function(){i._md5=a.end()})},a=function(i,a){var o,r;try{o=new n.jsSHA("SHA"+("3"===a.substr(0,1)?a:"-"+a),"ARRAYBUFFER"),r=t.asyncJob(function(e){o.update(e)},i).done(function(){r._sha=o.getHash("HEX")})}catch(s){r=e.Deferred.reject()}return r};t.options.cdns.sparkmd5&&t.hashCheckers.push("md5"),t.options.cdns.jssha&&(t.hashCheckers=t.hashCheckers.concat(["sha1","sha224","sha256","sha384","sha512","sha3-224","sha3-256","sha3-384","sha3-512","shake128","shake256"])),t.getContentsHashes=function(o,r){var s,l=e.Deferred(),c=t.arrayFlip(r||["md5"],!0),d=[],p=[],u={};if(l.fail(function(){s&&s.reject()}),n.check){delete n.check;var h=e.Deferred();window.ArrayBuffer&&t.options.cdns.sparkmd5&&(d.push(h),t.loadScript([t.options.cdns.sparkmd5],function(e){var t=e||window.SparkMD5;window.SparkMD5&&delete window.SparkMD5,h.resolve(),t&&(n.SparkMD5=t)},{tryRequire:!0,error:function(){h.reject()}}));var f=e.Deferred();window.ArrayBuffer&&t.options.cdns.jssha&&(d.push(f),t.loadScript([t.options.cdns.jssha],function(e){var t=e||window.jsSHA;window.jsSHA&&delete window.jsSHA,f.resolve(),t&&(n.jsSHA=t)},{tryRequire:!0,error:function(){f.reject()}}))}return e.when.apply(null,d).always(function(){Object.keys(n).length?s=t.getContents(o).done(function(r){var s=r instanceof ArrayBuffer&&r.byteLength>0&&t.sliceArrayBuffer(r,1048576);c.md5&&n.SparkMD5&&p.push(function(){var e=i(s).done(function(){var n;u.md5=e._md5,(n=t.file(o))&&(n.md5=e._md5),l.notify(u)});return l.fail(function(){e.reject()}),e}),n.jsSHA&&e.each(["1","224","256","384","512","3-224","3-256","3-384","3-512","ke128","ke256"],function(e,n){c["sha"+n]&&p.push(function(){var e=a(s,n).done(function(){var i;u["sha"+n]=e._sha,(i=t.file(o))&&(i["sha"+n]=e._sha),l.notify(u)});return e})}),p.length?t.sequence(p).always(function(){l.resolve(u)}):l.reject()}).fail(function(){l.reject()}):l.reject()}),l}}(this),this.parseError=function(t){var n=t;return e.isPlainObject(n)&&(n=n.error),n},this.error=function(){var e,t=arguments[0],n=arguments[1]||null;return 1==arguments.length&&"function"==typeof t?u.bind("error",t):(e=this.parseError(t),e!==!0&&e?u.trigger("error",{error:e,opts:n}):this)},e.each(A,function(t,n){u[n]=function(){var t=arguments[0];return 1==arguments.length&&"function"==typeof t?u.bind(n,t):u.trigger(n,e.isPlainObject(t)?t:{})}}),this.enable(function(){!z&&u.api&&u.visible()&&u.ui.overlay.is(":hidden")&&!m.children(".elfinder-dialog."+u.res("class","editing")+":visible").length&&(z=!0,document.activeElement&&document.activeElement.blur(),m.removeClass("elfinder-disabled"))}).disable(function(){T=z,z=!1,m.addClass("elfinder-disabled")}).open(function(){F=[]}).select(function(t){var n=0,i=[];F=e.grep(t.data.selected||t.data.value||[],function(e){return i.length||u.maxTargets&&++n>u.maxTargets?(i.push(e),!1):!!j[e]}),i.length&&(u.trigger("unselectfiles",{files:i,inselect:!0}),u.toast({mode:"warning",msg:u.i18n(["errMaxTargets",u.maxTargets])}))}).error(function(t){var n,i,a={cssClass:"elfinder-dialog-error",title:u.i18n("error"),resizable:!1,destroyOnClose:!0,buttons:{}},o=u.getUI(),r=o.children(".elfinder-dialog-error").length;r<u.options.maxErrorDialogs?(a.buttons[u.i18n(u.i18n("btnClose"))]=function(){e(this).elfinderdialog("close")},t.data.opts&&e.isPlainObject(t.data.opts)&&Object.assign(a,t.data.opts),u.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-error"/>'+u.i18n(t.data.error),a)):(n=o.children(".elfinder-dialog-error:last").children(".ui-dialog-content:first"),i=n.children(".elfinder-error-counter"),i.length?i.data("cnt",parseInt(i.data("cnt"))+1).html(u.i18n(["moreErrors",i.data("cnt")])):(i=e('<span class="elfinder-error-counter">'+u.i18n(["moreErrors",1])+"</span>").data("cnt",1),n.append("<br/>",i)))}).bind("tmb",function(t){e.each(t.data.images||[],function(e,t){j[e]&&(j[e].tmb=t)})}).bind("searchstart",function(e){Object.assign(u.searchStatus,e.data),u.searchStatus.state=1}).bind("search",function(e){u.searchStatus.state=2}).bind("searchend",function(){u.searchStatus.state=0,u.searchStatus.ininc=!1,u.searchStatus.mixed=!1}).bind("canMakeEmptyFile",function(t){var n=t.data,i={};n&&Array.isArray(n.mimes)&&(n.unshift||(i=u.mimesCanMakeEmpty),e.each(n.mimes,function(){i[this]||(i[this]=u.mimeTypes[this])}),n.unshift&&(u.mimesCanMakeEmpty=Object.assign(i,u.mimesCanMakeEmpty)))}).bind("themechange",function(){requestAnimationFrame(function(){u.trigger("uiresize")})}),!0===this.options.sound&&this.bind("playsound",function(t){var n=K.canPlayType&&K.canPlayType('audio/wav; codecs="1"'),i=t.data&&t.data.soundFile;n&&i&&""!=n&&"no"!=n&&e(K).html('<source src="'+B+i+'" type="audio/wav">')[0].play()}),e.each(this.options.handlers,function(e,t){u.bind(e,t)}),this.history=new this.history(this),this.roots={},this.leafRoots={},this.volumeExpires={},this._commands={},Array.isArray(this.options.commands)||(this.options.commands=[]),e.inArray("*",this.options.commands)!==-1&&(this.options.commands=Object.keys(this.commands)),this.commandMap={},this.volOptions={},this.hasVolOptions=!1,this.trashes={},this.optionsByHashes={},this.uiAutoHide=[],this.one("open",function(){u.uiAutoHide.length&&setTimeout(function(){u.trigger("uiautohide")},500)}),this.bind("uiautohide",function(){u.uiAutoHide.length&&u.uiAutoHide.shift()()}),this.options.width&&(N=this.options.width),this.options.height&&(L=this.options.height),this.options.heightBase&&(W=e(this.options.heightBase)),B=this.options.soundPath?this.options.soundPath.replace(/\/+$/,"")+"/":this.baseUrl+B,u.one("opendone",function(){var t;e(document).on("click."+y,function(t){z&&!u.options.enableAlways&&!e(t.target).closest(m).length&&u.disable()}).on(x+" "+k+" "+C+" "+w,ae),u.options.useBrowserHistory&&e(window).on("popstate."+y,function(t){var n,i,a=t.originalEvent.state||{},o=!!a.thash,r=m.find(".elfinder-frontmost:visible"),s=m.find(".elfinder-navbar-dir,.elfinder-cwd-filename").find("input,textarea");o||(a={thash:u.cwd().hash},e("html,body").animate({scrollTop:m.offset().top})),r.length||s.length?(history.pushState(a,null,location.pathname+location.search+"#elf_"+a.thash),r.length?r.hasClass(u.res("class","preventback"))||(r.hasClass("elfinder-contextmenu")?e(document).trigger(e.Event("keydown",{keyCode:e.ui.keyCode.ESCAPE,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1})):r.hasClass("elfinder-dialog")?r.elfinderdialog("close"):r.trigger("close")):s.trigger(e.Event("keydown",{keyCode:e.ui.keyCode.ESCAPE,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1}))):o?!e.isEmptyObject(u.files())&&u.request({data:{cmd:"open",target:a.thash,onhistory:1},notify:{type:"open",cnt:1,hideCnt:!0},syncOnFail:!0}):(n=function(){i.trigger("click")},u.one("open",n,!0),i=u.toast({msg:u.i18n("pressAgainToExit"),onHidden:function(){u.unbind("open",n),history.pushState(a,null,location.pathname+location.search+"#elf_"+a.thash)}}))}),e(window).on("resize."+y,function(e){e.target===this&&(t&&cancelAnimationFrame(t),t=requestAnimationFrame(function(){var e=m.data("resizeSize")||{w:0,h:0},t={w:Math.round(m.width()),h:Math.round(m.height())};m.data("resizeSize",t),t.w===e.w&&t.h===e.h||(m.trigger("resize"),u.trigger("resize",{width:t.w,height:t.h}))}))}).on("beforeunload."+y,function(t){var n,i;return m.is(":visible")&&(u.ui.notify.children().length&&e.inArray("hasNotifyDialog",u.options.windowCloseConfirm)!==-1?n=u.i18n("ntfsmth"):m.find("."+u.res("class","editing")).length&&e.inArray("editingFile",u.options.windowCloseConfirm)!==-1?n=u.i18n("editingFile"):(i=Object.keys(u.selected()).length)&&e.inArray("hasSelectedItem",u.options.windowCloseConfirm)!==-1?n=u.i18n("hasSelected",""+i):(i=Object.keys(u.clipboard()).length)&&e.inArray("hasClipboardData",u.options.windowCloseConfirm)!==-1&&(n=u.i18n("hasClipboard",""+i)),n)?(t.returnValue=n,n):void u.trigger("unload")}),e(window).on("message."+y,function(e){var t,n,i=e.originalEvent||null;if(i&&0===u.uploadURL.indexOf(i.origin))try{t=JSON.parse(i.data),n=t.data||null,n&&(n.error?(t.bind&&u.trigger(t.bind+"fail",n),u.error(n.error)):(n.warning&&u.error(n.warning),u.updateCache(n),n.removed&&n.removed.length&&u.remove(n),n.added&&n.added.length&&u.add(n),n.changed&&n.changed.length&&u.change(n),t.bind&&(u.trigger(t.bind,n),u.trigger(t.bind+"done")),n.sync&&u.sync()))}catch(e){u.sync()}}),u.options.enableAlways?(e(window).on("focus."+y,function(e){e.target===this&&u.enable()}),re&&e(window.top).on("focus."+y,function(){!u.enable()||se&&!se.is(":visible")||requestAnimationFrame(function(){e(window).trigger("focus")})})):re&&e(window).on("blur."+y,function(e){z&&e.target===this&&u.disable()}),re&&m.on("click",function(t){e(window).trigger("focus")}),u.options.enableByMouseOver&&m.on("mouseenter touchstart",function(t){re&&e(window).trigger("focus"),!u.enabled()&&u.enable()})}),m[0].elfinder=this,h.push(function(){var t=u.lang,n=u.i18nBaseUrl+"elfinder."+t+".js",i=e.Deferred().done(function(){u.i18[t]&&(u.lang=t),u.trigger("i18load"),c="en"===u.lang?u.i18.en:e.extend(!0,{},u.i18.en,u.i18[u.lang])});return u.i18[t]?i.resolve():(u.lang="en",u.hasRequire?require([n],function(){i.resolve()},function(){i.resolve()}):u.loadScript([n],function(){i.resolve()},{loadType:"tag",error:function(){i.resolve()}})),i}()),d=function(){var t;return u.messages=c.messages,e.fn.selectable&&e.fn.draggable&&e.fn.droppable&&e.fn.resizable&&e.fn.slider?m.length?u.options.url?(t=Object.assign({name:u.i18n("name"),perm:u.i18n("perms"),date:u.i18n("modify"),size:u.i18n("size"),kind:u.i18n("kind"),modestr:u.i18n("mode"),modeoct:u.i18n("mode"),modeboth:u.i18n("mode")},u.options.uiOptions.cwd.listView.columnsCustomName),u.getColumnName=function(e){return t[e]||u.i18n(e)},u.direction=c.direction,u.dateFormat=u.options.dateFormat||c.dateFormat,u.fancyFormat=u.options.fancyDateFormat||c.fancyDateFormat,u.nonameDateFormat=(u.options.nonameDateFormat||c.nonameDateFormat).replace(/[\/\\]/g,"_"),u.cssClass="ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-"+("rtl"==u.direction?"rtl":"ltr")+(u.UA.Touch?" elfinder-touch"+(u.options.resizable?" touch-punch":""):"")+(u.UA.Mobile?" elfinder-mobile":"")+(u.UA.iOS?" elfinder-ios":"")+" "+u.options.cssClass,m.addClass(u.cssClass).on(w,function(){!z&&u.enable()}),function(){var t,n,i,a,o,r=x+"draggable keyup."+y+"draggable";u.draggable={appendTo:m,addClasses:!1,distance:4,revert:!0,refreshPositions:!1,cursor:"crosshair",cursorAt:{left:50,top:47},scroll:!1,start:function(r,s){var l,c,d=s.helper,p=e.grep(d.data("files")||[],function(e){return!!e&&(R[e]=!0,!0)}),h=!1;for(o=m.attr("style"),m.width(m.width()).height(m.height()),t="ltr"===u.direction,n=u.getUI("workzone").data("rectangle"),i=n.top+n.height,a=i-u.getUI("navdock").outerHeight(!0),u.draggingUiHelper=d,l=p.length;l--;)if(c=p[l],j[c].locked){h=!0,d.data("locked",!0);break}!h&&u.trigger("lockfiles",{files:p}),d.data("autoScrTm",setInterval(function(){d.data("autoScr")&&u.autoScroll[d.data("autoScr")](d.data("autoScrVal"))},50))},drag:function(o,r){var s,l,c,d=r.helper;((l=n.top>o.pageY)||a<o.pageY)&&(s=n.cwdEdge>o.pageX?(t?"navbar":"cwd")+(l?"Up":"Down"):(t?"cwd":"navbar")+(l?"Up":"Down"),l||("cwd"===s.substr(0,3)?i<o.pageY?c=i:s=null:c=a),s&&(d.data("autoScr",s),d.data("autoScrVal",Math.pow(l?n.top-o.pageY:o.pageY-c,1.3)))),s||d.data("autoScr")&&d.data("refreshPositions",1).data("autoScr",null),d.data("refreshPositions")&&e(this).elfUiWidgetInstance("draggable")&&(d.data("refreshPositions")>0?(e(this).draggable("option",{refreshPositions:!0,elfRefresh:!0}),d.data("refreshPositions",-1)):(e(this).draggable("option",{refreshPositions:!1,elfRefresh:!1}),d.data("refreshPositions",null)))},stop:function(t,n){var i,a=n.helper;e(document).off(r),e(this).elfUiWidgetInstance("draggable")&&e(this).draggable("option",{refreshPositions:!1}),u.draggingUiHelper=null,u.trigger("focus").trigger("dragstop"),a.data("droped")||(i=e.grep(a.data("files")||[],function(e){return!!e}),u.trigger("unlockfiles",{files:i}),u.trigger("selectfiles",{files:u.selected()})),u.enable(),m.attr("style",o),a.data("autoScrTm")&&clearInterval(a.data("autoScrTm"))},helper:function(t,n){var i,a,o,s=this.id?e(this):e(this).parents("[id]:first"),l=e('<div class="elfinder-drag-helper"><span class="elfinder-drag-helper-icon-status"/></div>'),c=function(t){var n,i=t.mime,a=u.tmb(t);return n='<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+u.mime2class(i)+' ui-corner-all"/>',a?n=e(n).addClass(a.className).css("background-image","url('"+a.url+"')").get(0).outerHTML:t.icon&&(n=e(n).css(u.getIconStyle(t,!0)).get(0).outerHTML),t.csscls&&(n='<div class="'+t.csscls+'">'+n+"</div>"),n};return u.draggingUiHelper&&u.draggingUiHelper.stop(!0,!0),u.trigger("dragstart",{target:s[0],originalEvent:t},!0),i=s.hasClass(u.res("class","cwdfile"))?u.selected():[u.navId2Hash(s.attr("id"))],l.append(c(j[i[0]])).data("files",i).data("locked",!1).data("droped",!1).data("namespace",y).data("dropover",0),(a=i.length)>1&&l.append(c(j[i[a-1]])+'<span class="elfinder-drag-num">'+a+"</span>"),e(document).on(r,function(e){var t=e.shiftKey||e.ctrlKey||e.metaKey;o!==t&&(o=t,l.is(":visible")&&l.data("dropover")&&!l.data("droped")&&(l.toggleClass("elfinder-drag-helper-plus",!!l.data("locked")||o),u.trigger(o?"unlockfiles":"lockfiles",{files:i,helper:l})))}),l}}}(),u.commands.getfile&&("function"==typeof u.options.getFileCallback?(u.bind("dblclick",function(e){e.preventDefault(),u.exec("getfile").fail(function(){u.exec("open",e.data&&e.data.file?[e.data.file]:void 0)})}),u.shortcut({pattern:"enter",description:u.i18n("cmdgetfile"),callback:function(){u.exec("getfile").fail(function(){u.exec("mac"==u.OS?"rename":"open")})}}).shortcut({pattern:"ctrl+enter",description:u.i18n("mac"==u.OS?"cmdrename":"cmdopen"),callback:function(){u.exec("mac"==u.OS?"rename":"open")}})):u.options.getFileCallback=null),e.each(u.commands,function(t,n){var i,a,o=Object.assign({},n.prototype);if(e.isFunction(n)&&!u._commands[t]&&(n.prototype.forceLoad||e.inArray(t,u.options.commands)!==-1)){if(i=n.prototype.extendsCmd||""){if(!e.isFunction(u.commands[i]))return!0;n.prototype=Object.assign({},_,new u.commands[i],n.prototype)}else n.prototype=Object.assign({},_,n.prototype);u._commands[t]=new n,n.prototype=o,a=u.options.commandsOptions[t]||{},i&&u.options.commandsOptions[i]&&(a=e.extend(!0,{},u.options.commandsOptions[i],a)),u._commands[t].setup(t,a),u._commands[t].linkedCmds.length&&e.each(u._commands[t].linkedCmds,function(t,n){var i=u.commands[n];e.isFunction(i)&&!u._commands[n]&&(i.prototype=_,u._commands[n]=new i,u._commands[n].setup(n,u.options.commandsOptions[n]||{}))})}}),u.ui={workzone:e("<div/>").appendTo(m).elfinderworkzone(u),navbar:e("<div/>").appendTo(m).elfindernavbar(u,u.options.uiOptions.navbar||{}),navdock:e("<div/>").appendTo(m).elfindernavdock(u,u.options.uiOptions.navdock||{}),contextmenu:e("<div/>").appendTo(m).elfindercontextmenu(u),overlay:e("<div/>").appendTo(m).elfinderoverlay({show:function(){u.disable()},hide:function(){T&&u.enable()}}),cwd:e("<div/>").appendTo(m).elfindercwd(u,u.options.uiOptions.cwd||{}),notify:u.dialog("",{cssClass:"elfinder-dialog-notify",position:u.options.notifyDialog.position,absolute:!0,resizable:!1,autoOpen:!1,closeOnEscape:!1,title:"&nbsp;",width:u.options.notifyDialog.width?parseInt(u.options.notifyDialog.width):null,minHeight:null}),statusbar:e('<div class="ui-widget-header ui-helper-clearfix ui-corner-bottom elfinder-statusbar"/>').hide().appendTo(m),toast:e('<div class="elfinder-toast"/>').appendTo(m),bottomtray:e('<div class="elfinder-bottomtray">').appendTo(m)},u.trigger("uiready"),e.each(u.options.ui||[],function(t,n){var i="elfinder"+n,a=u.options.uiOptions[n]||{};!u.ui[n]&&e.fn[i]&&(u.ui[n]=e("<"+(a.tag||"div")+"/>").appendTo(m),u.ui[n][i](u,a))}),u.resize(N,L),u.options.resizable&&(m.resizable({resize:function(e,t){u.resize(t.size.width,t.size.height)},handles:"se",minWidth:300,minHeight:200}),u.UA.Touch&&m.addClass("touch-punch")),function(){var e=u.getUI("navbar"),t=u.getUI("cwd").parent();u.autoScroll={navbarUp:function(t){e.scrollTop(Math.max(0,e.scrollTop()-t))},navbarDown:function(t){e.scrollTop(e.scrollTop()+t)},cwdUp:function(e){t.scrollTop(Math.max(0,t.scrollTop()-e))},cwdDown:function(e){t.scrollTop(t.scrollTop()+e)}}}(),u.UA.Touch&&!function(){var e,t,n,i,a,o,r,s,l,c=u.getUI("navbar"),d=u.getUI("toolbar"),p="touchmove.stopscroll",h=function(e){var n=e.originalEvent.touches||[{}],i=n[0].pageY||null;(!t||i<t)&&(e.preventDefault(),s&&clearTimeout(s))},f=function(e){e.preventDefault(),s&&clearTimeout(s)},g=function(){s=setTimeout(function(){m.off(p)},100)},v=50;c=c.children().length?c:null,d=d.length?d:null,m.on("touchstart touchmove touchend",function(s){if("touchend"===s.type)return e=!1,t=!1,void g();var b,y,w,x,k,C=s.originalEvent.touches||[{}],z=C[0].pageX||null,T=C[0].pageY||null,A="ltr"===u.direction;null===z||null===T||"touchstart"===s.type&&C.length>1||("touchstart"===s.type?(n=m.offset(),i=m.width(),c&&(e=!1,c.is(":hidden")?(l||(l=Math.max(50,i/10)),(A?z-n.left:i+n.left-z)<l&&(e=z)):s.originalEvent._preventSwipeX||(o=c.width(),y=A?z<n.left+o:z>n.left+i-o,y?(l=Math.max(50,i/10),e=z):e=!1)),d&&(t=!1,s.originalEvent._preventSwipeY||(r=d.height(),a=n.top,T-a<(d.is(":hidden")?v:r+30)&&(t=T,m.on(p,d.is(":hidden")?f:h))))):(c&&e!==!1&&(b=(A?e>z:e<z)?"navhide":"navshow",w=Math.abs(e-z),("navhide"===b&&w>.6*o||w>("navhide"===b?o/3:45)&&("navshow"===b||(A?z<n.left+20:z>n.left+i-20)))&&(u.getUI("navbar").trigger(b,{handleW:l}),e=!1)),d&&t!==!1&&(x=d.offset().top,Math.abs(t-T)>Math.min(45,r/3)&&(k=t>T?"slideUp":"slideDown",("slideDown"===k||x+20>T)&&(d.is("slideDown"===k?":hidden":":visible")&&d.stop(!0,!0).trigger("toggle",{duration:100,handleH:v}),t=!1)))))})}(),u.dragUpload&&!function(){var t,n,i=function(t){return"TEXTAREA"!==t.target.nodeName&&"INPUT"!==t.target.nodeName&&0===e(t.target).closest("div.ui-dialog-content").length},a="native-drag-enter",o="native-drag-disable",r="class",s=u.res(r,"navdir"),l=(u.res(r,"droppable"),u.res(r,"adroppable"),u.res(r,"navarrow"),u.res(r,"adroppable")),c=u.getUI("workzone"),d="ltr"===u.direction,p=function(){n&&cancelAnimationFrame(n),n=null};m.on("dragenter",function(e){p(),i(e)&&(e.preventDefault(),e.stopPropagation(),t=c.data("rectangle"))}).on("dragleave",function(e){p(),i(e)&&(e.preventDefault(),e.stopPropagation())}).on("dragover",function(e){var a;i(e)?(e.preventDefault(),e.stopPropagation(),e.originalEvent.dataTransfer.dropEffect="none",n||(n=requestAnimationFrame(function(){var i,o=t.top+t.height,r=o-u.getUI("navdock").outerHeight(!0);((a=e.pageY<t.top)||e.pageY>r)&&(i=t.cwdEdge>e.pageX?(d?"navbar":"cwd")+(a?"Up":"Down"):(d?"cwd":"navbar")+(a?"Up":"Down"),a||"cwd"===i.substr(0,3)&&(o<e.pageY?r=o:i=""),i&&u.autoScroll[i](Math.pow(a?t.top-e.pageY:e.pageY-r,1.3))),n=null}))):p()}).on("drop",function(e){p(),i(e)&&(e.stopPropagation(),e.preventDefault())}),m.on("dragenter",".native-droppable",function(t){if(t.originalEvent.dataTransfer){var n,i=e(t.currentTarget),r=t.currentTarget.id||null,s=null;if(!r){s=u.cwd(),i.data(o,!1);try{e.each(t.originalEvent.dataTransfer.types,function(e,t){"elfinderfrom:"===t.substr(0,13)&&(n=t.substr(13).toLowerCase())})}catch(t){}}s&&(!s.write||n&&n===(window.location.href+s.hash).toLowerCase())?i.data(o,!0):(t.preventDefault(),t.stopPropagation(),i.data(a,!0),i.addClass(l))}}).on("dragleave",".native-droppable",function(t){if(t.originalEvent.dataTransfer){var n=e(t.currentTarget);t.preventDefault(),t.stopPropagation(),n.data(a)?n.data(a,!1):n.removeClass(l)}}).on("dragover",".native-droppable",function(t){if(t.originalEvent.dataTransfer){var n=e(t.currentTarget);t.preventDefault(),t.stopPropagation(),t.originalEvent.dataTransfer.dropEffect=n.data(o)?"none":"copy",n.data(a,!1)}}).on("drop",".native-droppable",function(t){if(t.originalEvent&&t.originalEvent.dataTransfer){var n,i=e(t.currentTarget);t.preventDefault(),t.stopPropagation(),i.removeClass(l),n=t.currentTarget.id?i.hasClass(s)?u.navId2Hash(t.currentTarget.id):u.cwdId2Hash(t.currentTarget.id):u.cwd().hash,t.originalEvent._target=n,u.exec("upload",{dropEvt:t.originalEvent,target:n},void 0,n)}})}(),null===u.cssloaded?!function(){var e,t,n=function(){m.data("cssautoloadHide")&&(m.data("cssautoloadHide").remove(),m.removeData("cssautoloadHide")),u.cssloaded=!0,requestAnimationFrame(function(){u.trigger("cssloaded")})};"hidden"===m.css("visibility")?(e=1e3,t=setInterval(function(){(--e<0||"hidden"!==m.css("visibility"))&&(clearInterval(t),n())},10)):n()}():(u.cssloaded=!0,
u.trigger("cssloaded")),u.zIndexCalc(),void u.trigger("init").request({data:{cmd:"open",target:u.startDir(),init:1,tree:1},preventDone:!0,notify:{type:"open",cnt:1,hideCnt:!0},freeze:!0}).fail(function(){u.trigger("fail").disable().lastDir(""),E={},U={},e(document).add(m).off("."+y),u.trigger=function(){}}).done(function(t){var n=function(e){var t=u.file(u.trashes[e]);u.options.debug;t&&t.volumeid&&delete u.volOptions[t.volumeid].trashHash,u.trashes[e]=!1,u.debug("backend-error",'Trash hash "'+e+'" was not found or not writable.')},i={};u.options.rawStringDecoder&&u.registRawStringDecoder(u.options.rawStringDecoder),u.zIndexCalc(),u.load().debug("api",u.api),m.trigger("resize"),J(t),u.trigger("open",t,!1),u.trigger("opendone"),re&&u.options.enableAlways&&e(window).trigger("focus"),e.each(u.trashes,function(e){var t=u.file(e);t?"directory"===t.mime&&t.write||n(e):i[e]=!0}),Object.keys(i).length&&u.request({data:{cmd:"info",targets:Object.keys(i)},preventDefault:!0}).done(function(t){t&&t.files&&e.each(t.files,function(e,t){"directory"===t.mime&&t.write&&delete i[t.hash]})}).always(function(){e.each(i,n)}),u[u.options.enableAlways?"enable":"disable"]()})):alert(u.i18n("errURL")):alert(u.i18n("errNode")):alert(u.i18n("errJqui"))},a&&"function"==typeof a&&(u.bootCallback=a,a.call(m.get(0),u,{dfrdsBeforeBootup:h})),e.when.apply(null,h).done(function(){d()}).fail(function(e){u.error(e)})};return("undefined"==typeof n||n)&&(window.elFinder=i),i.prototype={uniqueid:0,res:function(e,t){return this.resources[e]&&this.resources[e][t]},OS:navigator.userAgent.indexOf("Mac")!==-1?"mac":navigator.userAgent.indexOf("Win")!==-1?"win":"other",UA:function(){var e=!document.unqueID&&!window.opera&&!window.sidebar&&window.localStorage&&"WebkitAppearance"in document.documentElement.style,t=e&&window.chrome,n={ltIE6:"undefined"==typeof window.addEventListener&&"undefined"==typeof document.documentElement.style.maxHeight,ltIE7:"undefined"==typeof window.addEventListener&&"undefined"==typeof document.querySelectorAll,ltIE8:"undefined"==typeof window.addEventListener&&"undefined"==typeof document.getElementsByClassName,ltIE9:document.uniqueID&&document.documentMode<=9,ltIE10:document.uniqueID&&document.documentMode<=10,gtIE11:document.uniqueID&&document.documentMode>=11,IE:document.uniqueID,Firefox:window.sidebar,Opera:window.opera,Webkit:e,Chrome:t,Edge:!(!t||!window.msCredentials),Safari:e&&!window.chrome,Mobile:"undefined"!=typeof window.orientation,Touch:"undefined"!=typeof window.ontouchstart,iOS:navigator.platform.match(/^iP(?:[ao]d|hone)/),Fullscreen:"undefined"!=typeof(document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen||document.msExitFullscreen),Angle:0,Rotated:!1,CSS:function(){var e,t=document.createElement("a").style,n=document.createElement("p").style;return e="position:sticky;position:-webkit-sticky;",e+="width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;",t.cssText=e,{positionSticky:t.position.indexOf("sticky")!==-1,widthMaxContent:t.width.indexOf("max-content")!==-1,flex:"undefined"!=typeof n.flex}}()};return n}(),hasRequire:"function"==typeof define&&define.amd,currentReqCmd:"",keyState:{},i18:{en:{translator:"",language:"English",direction:"ltr",dateFormat:"d.m.Y H:i",fancyDateFormat:"$1 H:i",nonameDateFormat:"ymd-His",messages:{}},months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["msJan","msFeb","msMar","msApr","msMay","msJun","msJul","msAug","msSep","msOct","msNov","msDec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},kinds:{unknown:"Unknown",directory:"Folder",group:"Selects",symlink:"Alias","symlink-broken":"AliasBroken","application/x-empty":"TextPlain","application/postscript":"Postscript","application/vnd.ms-office":"MsOffice","application/msword":"MsWord","application/vnd.ms-word":"MsWord","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"MsWord","application/vnd.ms-word.document.macroEnabled.12":"MsWord","application/vnd.openxmlformats-officedocument.wordprocessingml.template":"MsWord","application/vnd.ms-word.template.macroEnabled.12":"MsWord","application/vnd.ms-excel":"MsExcel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"MsExcel","application/vnd.ms-excel.sheet.macroEnabled.12":"MsExcel","application/vnd.openxmlformats-officedocument.spreadsheetml.template":"MsExcel","application/vnd.ms-excel.template.macroEnabled.12":"MsExcel","application/vnd.ms-excel.sheet.binary.macroEnabled.12":"MsExcel","application/vnd.ms-excel.addin.macroEnabled.12":"MsExcel","application/vnd.ms-powerpoint":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.presentation":"MsPP","application/vnd.ms-powerpoint.presentation.macroEnabled.12":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.slideshow":"MsPP","application/vnd.ms-powerpoint.slideshow.macroEnabled.12":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.template":"MsPP","application/vnd.ms-powerpoint.template.macroEnabled.12":"MsPP","application/vnd.ms-powerpoint.addin.macroEnabled.12":"MsPP","application/vnd.openxmlformats-officedocument.presentationml.slide":"MsPP","application/vnd.ms-powerpoint.slide.macroEnabled.12":"MsPP","application/pdf":"PDF","application/xml":"XML","application/vnd.oasis.opendocument.text":"OO","application/vnd.oasis.opendocument.text-template":"OO","application/vnd.oasis.opendocument.text-web":"OO","application/vnd.oasis.opendocument.text-master":"OO","application/vnd.oasis.opendocument.graphics":"OO","application/vnd.oasis.opendocument.graphics-template":"OO","application/vnd.oasis.opendocument.presentation":"OO","application/vnd.oasis.opendocument.presentation-template":"OO","application/vnd.oasis.opendocument.spreadsheet":"OO","application/vnd.oasis.opendocument.spreadsheet-template":"OO","application/vnd.oasis.opendocument.chart":"OO","application/vnd.oasis.opendocument.formula":"OO","application/vnd.oasis.opendocument.database":"OO","application/vnd.oasis.opendocument.image":"OO","application/vnd.openofficeorg.extension":"OO","application/x-shockwave-flash":"AppFlash","application/flash-video":"Flash video","application/x-bittorrent":"Torrent","application/javascript":"JS","application/rtf":"RTF","application/rtfd":"RTF","application/x-font-ttf":"TTF","application/x-font-otf":"OTF","application/x-rpm":"RPM","application/x-web-config":"TextPlain","application/xhtml+xml":"HTML","application/docbook+xml":"DOCBOOK","application/x-awk":"AWK","application/x-gzip":"GZIP","application/x-bzip2":"BZIP","application/x-xz":"XZ","application/zip":"ZIP","application/x-zip":"ZIP","application/x-rar":"RAR","application/x-tar":"TAR","application/x-7z-compressed":"7z","application/x-jar":"JAR","text/plain":"TextPlain","text/x-php":"PHP","text/html":"HTML","text/javascript":"JS","text/css":"CSS","text/rtf":"RTF","text/rtfd":"RTF","text/x-c":"C","text/x-csrc":"C","text/x-chdr":"CHeader","text/x-c++":"CPP","text/x-c++src":"CPP","text/x-c++hdr":"CPPHeader","text/x-shellscript":"Shell","application/x-csh":"Shell","text/x-python":"Python","text/x-java":"Java","text/x-java-source":"Java","text/x-ruby":"Ruby","text/x-perl":"Perl","text/x-sql":"SQL","text/xml":"XML","text/x-comma-separated-values":"CSV","text/x-markdown":"Markdown","image/x-ms-bmp":"BMP","image/jpeg":"JPEG","image/gif":"GIF","image/png":"PNG","image/tiff":"TIFF","image/x-targa":"TGA","image/vnd.adobe.photoshop":"PSD","image/xbm":"XBITMAP","image/pxm":"PXM","audio/mpeg":"AudioMPEG","audio/midi":"AudioMIDI","audio/ogg":"AudioOGG","audio/mp4":"AudioMPEG4","audio/x-m4a":"AudioMPEG4","audio/wav":"AudioWAV","audio/x-mp3-playlist":"AudioPlaylist","video/x-dv":"VideoDV","video/mp4":"VideoMPEG4","video/mpeg":"VideoMPEG","video/x-msvideo":"VideoAVI","video/quicktime":"VideoMOV","video/x-ms-wmv":"VideoWM","video/x-flv":"VideoFlash","video/x-matroska":"VideoMKV","video/ogg":"VideoOGG"},mimeTypes:{},rules:{defaults:function(e){return!(!e||e.added&&!Array.isArray(e.added)||e.removed&&!Array.isArray(e.removed)||e.changed&&!Array.isArray(e.changed))},open:function(t){return t&&t.cwd&&t.files&&e.isPlainObject(t.cwd)&&Array.isArray(t.files)},tree:function(e){return e&&e.tree&&Array.isArray(e.tree)},parents:function(e){return e&&e.tree&&Array.isArray(e.tree)},tmb:function(t){return t&&t.images&&(e.isPlainObject(t.images)||Array.isArray(t.images))},upload:function(t){return t&&(e.isPlainObject(t.added)||Array.isArray(t.added))},search:function(e){return e&&e.files&&Array.isArray(e.files)}},commands:{},cmdsToAdd:"archive duplicate extract mkdir mkfile paste rm upload",parseUploadData:function(t){var n,i=this;if(!e.trim(t))return{error:["errResponse","errDataEmpty"]};try{n=JSON.parse(t)}catch(a){return{error:["errResponse","errDataNotJSON"]}}return n=i.normalize(n),i.validResponse("upload",n)?(n.removed=e.merge(n.removed||[],e.map(n.added||[],function(e){return i.file(e.hash)?e.hash:null})),n):{error:response.norError||["errResponse"]}},iframeCnt:0,uploads:{xhrUploading:!1,failSyncTm:null,chunkfailReq:{},checkExists:function(t,n,i,a){var o,r=e.Deferred(),s=[],l={},c=function(){for(var e=t.length;--e>-1;)t[e]._remove=!0},d=function(){r.resolve(s,l)},p=function(){var r=[],p=[],u=n!==i.cwd().hash?i.path(n,!0)+i.option("separator",n):"",h=function(e){var n=e==p.length-1,o={cssClass:"elfinder-confirm-upload",title:i.i18n("cmdupload"),text:["errExists",u+p[e].name,"confirmRepl"],all:!n,accept:{label:"btnYes",callback:function(t){n||t?d():h(++e)}},reject:{label:"btnNo",callback:function(i){var a;if(i)for(a=p.length;e<a--;)t[p[a].i]._remove=!0;else t[p[e].i]._remove=!0;n||i?d():h(++e)}},cancel:{label:"btnCancel",callback:function(){c(),d()}},buttons:[{label:"btnBackup",cssClass:"elfinder-confirm-btn-backup",callback:function(t){var i;if(t)for(i=p.length;e<i--;)s.push(p[i].name);else s.push(p[e].name);n||t?d():h(++e)}}]};a||o.buttons.push({label:"btnRename"+(n?"":"All"),cssClass:"elfinder-confirm-btn-rename",callback:function(){s=null,d()}}),i.iframeCnt>0&&delete o.reject,i.confirm(o)};return i.file(n).read?(o=e.map(t,function(e,t){return!e.name||i.UA.iOS&&"image.jpg"===e.name?null:{i:t,name:e.name}}),void i.request({data:{cmd:"ls",target:n,intersect:e.map(o,function(e){return e.name})},notify:{type:"preupload",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(t){var a,s;t&&(t.error?c():i.options.overwriteUploadConfirm&&i.option("uploadOverwrite",n)&&t.list&&(Array.isArray(t.list)?r=t.list||[]:(a=[],r=e.map(t.list,function(e){return"string"==typeof e?e:(a=a.concat(e),!1)}),a.length&&(r=r.concat(a)),l=t.list),p=e.grep(o,function(t){return e.inArray(t.name,r)!==-1}),p.length&&r.length&&n==i.cwd().hash&&(s=e.map(i.files(n),function(e){return e.name}),e.grep(r,function(t){return e.inArray(t,s)===-1}).length&&i.sync()))),p.length>0?h(0):d()}).fail(function(e){c(),d(),e&&i.error(e)})):void d()};return i.api>=2.1&&"object"==typeof t[0]?p():d(),r},checkFile:function(t,n,i){if(t.checked||"files"==t.type)return t.files;if("data"==t.type){var a,o,r=e.Deferred(),s=e.Deferred(),l=[],c=[],d=0,p=[],u=!1,h=function(e){return Array.prototype.slice.call(e||[],0)},f=function(e){var t,i,a=n.options.folderUploadExclude[n.OS]||null,o=e.length,r=function(){--d<1&&"pending"===s.state()&&s.resolve()},m=function(e){a&&e.name.match(a)||(c.push(t.fullPath||""),l.push(e)),r()},i=function(e){var t=[],n=function(){e.readEntries(function(e){if(u||!e.length){for(var i=0;i<t.length;i++){if(u){s.reject();break}f([t[i]])}r()}else t=t.concat(h(e)),n()},r)};n()};d++;for(var g=0;g<o;g++){if(u){s.reject();break}t=e[g],t&&(t.isFile?(d++,t.file(m,r)):t.isDirectory&&n.api>=2.1&&(d++,p.push(t.fullPath),i(t.createReader())))}return r(),s};return a=e.map(t.files.items,function(e){return e.getAsEntry?e.getAsEntry():e.webkitGetAsEntry()}),e.each(a,function(e,t){if(t.isDirectory)return o=!0,!1}),a.length>0?(n.uploads.checkExists(a,i,n,o).done(function(o,s){var d=[];n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",i)&&(null===o&&(t.overwrite=0,o=[]),a=e.grep(a,function(t){var a,r,l,c;return t.isDirectory&&o.length&&(a=e.inArray(t.name,o),a!==-1&&(o.splice(a,1),r=n.uniqueName(t.name+n.options.backupSuffix,null,""),e.each(s,function(e,n){if(t.name==n)return l=e,!1}),l||(l=n.fileByName(t.name,i).hash),n.lockfiles({files:[l]}),c=n.request({data:{cmd:"rename",target:l,name:r},notify:{type:"rename",cnt:1}}).fail(function(){t._remove=!0,n.sync()}).always(function(){n.unlockfiles({files:[l]})}),d.push(c))),!t._remove})),e.when.apply(e,d).done(function(){var e,t,i=+new Date;a.length>0?(t=n.escape(a[0].name),a.length>1&&(t+=" ... "+a.length+n.i18n("items")),e=setTimeout(function(){n.notify({type:"readdir",id:i,cnt:1,hideCnt:!0,msg:n.i18n("ntfreaddir")+" ("+t+")",cancel:function(){u=!0}})},n.options.notifyDelay),f(a).done(function(){e&&clearTimeout(e),n.notify({type:"readdir",id:i,cnt:-1}),u?r.reject():r.resolve([l,c,o,s,p])}).fail(function(){r.reject()})):r.reject()})}),r.promise()):r.reject()}var m=[],g=[],v=t.files[0];if("html"==t.type){var b,y=e("<html/>").append(e.parseHTML(v.replace(/ src=/gi," _elfsrc=")));e("img[_elfsrc]",y).each(function(){var n,i,a=e(this),o=a.closest("a");o&&o.attr("href")&&o.attr("href").match(/\.(?:jpe?g|gif|bmp|png)/i)&&(i=o.attr("href")),n=a.attr("_elfsrc"),n&&(i?(e.inArray(i,m)==-1&&m.push(i),e.inArray(n,g)==-1&&g.push(n)):e.inArray(n,m)==-1&&m.push(n)),1===m.length&&m[0].match(/^data:image\/png/)&&(t.clipdata=!0)}),b=e("a[href]",y),b.each(function(){var t,n,i=function(e){var t=document.createElement("a");return t.href=e,t};(t=e(this).text())&&(n=i(e(this).attr("href")),n.href&&n.href.match(/^(?:ht|f)tp/i)&&(1===b.length||!n.pathname.match(/(?:\.html?|\/[^\/.]*)$/i)||e.trim(t).match(/\.[a-z0-9-]{1,10}$/i))&&e.inArray(n.href,m)==-1&&e.inArray(n.href,g)==-1&&m.push(n.href))})}else{var w,x,k;for(w=/((?:ht|f)tps?:\/\/[-_.!~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+)/gi;x=w.exec(v);)k=x[1].replace(/&amp;/g,"&"),e.inArray(k,m)==-1&&m.push(k)}return m},xhr:function(t,n){var i=n?n:this,a=i.getUI(),o=new XMLHttpRequest,r=null,s=null,l=t.checked,c=t.isDataType||"data"==t.type,d=t.target||i.cwd().hash,p=t.dropEvt||null,u=t.extraData||null,h=i.option("uploadMaxConn",d)!=-1,f=Math.min(5,Math.max(1,i.option("uploadMaxConn",d))),m=1e4,g=30,v=0,b=function(t){var n=e.Deferred();return t.promise?t.always(function(e){n.resolve(Array.isArray(e)&&e.length?c?e[0][0]:e[0]:{})}):n.resolve(t.length?c?t[0][0]:t[0]:{}),n},y=e.Deferred().fail(function(e){var t,a=i.parseError(e);"userabort"===a&&(t=!0,a=void 0),x&&(i.uploads.xhrUploading||t)?b(x).done(function(e){t||P(a,e),e._cid?i.uploads.chunkfailReq[e._cid]||(i.uploads.chunkfailReq[e._cid]=!0,setTimeout(function(){n.request({data:{cmd:"upload",target:d,chunk:e._chunk,cid:e._cid,upload:["chunkfail"],mimes:"chunkfail"},options:{type:"post",url:i.uploadURL},preventDefault:!0}).always(function(){delete i.uploads.chunkfailReq[e._chunk]})},1e3)):(i.uploads.failSyncTm&&clearTimeout(i.uploads.failSyncTm),i.uploads.failSyncTm=setTimeout(function(){i.sync(d)},1e3))}):P(a),!t&&i.sync(),i.uploads.xhrUploading=!1,x=null}).done(function(t){i.uploads.xhrUploading=!1,x=null,t&&(i.currentReqCmd="upload",t.warning&&P(t.warning),i.updateCache(t),t.removed&&t.removed.length&&i.remove(t),t.added&&t.added.length&&i.add(t),t.changed&&t.changed.length&&i.change(t),i.trigger("upload",t,!1),i.trigger("uploaddone"),t.toasts&&Array.isArray(t.toasts)&&e.each(t.toasts,function(){this.msg&&i.toast(this)}),t.sync&&i.sync(),t.debug&&n.debug("backend-debug",t))}).always(function(){i.abortXHR(o),a.off("uploadabort",M),e(window).off("unload",M),r&&clearTimeout(r),s&&clearTimeout(s),l&&!t.multiupload&&j()&&i.notify({type:"upload",cnt:-k,progress:0,size:0}),N&&S.children(".elfinder-notify-chunkmerge").length&&i.notify({type:"chunkmerge",cnt:-1})}),w=new FormData,x=t.input?t.input.files:i.uploads.checkFile(t,i,d),k=t.checked&&c?x[0].length:x.length,C=0,z=0,T=0,A=!1,S=i.ui.notify,I=!0,O=!1,j=function(){return!A&&(L=S.children(".elfinder-notify-upload")).length&&(A=!0),A},M=function(e,t){O=!0,i.abortXHR(o,{quiet:!0,abort:!0}),y.reject(t),j()&&i.notify({type:"upload",cnt:L.data("cnt")*-1,progress:0,size:0})},D=function(e){L.children(".elfinder-notify-cancel")[e?"show":"hide"]()},F=function(e){return e||(e=T),setTimeout(function(){A=!0,i.notify({type:"upload",cnt:k,progress:C-z,size:e,cancel:function(){a.trigger("uploadabort","userabort")}}),L=S.children(".elfinder-notify-upload"),z=C,t.multiupload?I&&D(!0):D(I&&C<e)},i.options.notifyDelay)},E=function(){v++<=g?(j()&&z&&i.notify({type:"upload",cnt:0,progress:0,size:z}),i.abortXHR(o,{quiet:!0}),z=C=0,setTimeout(function(){var e;O||(o.open("POST",i.uploadURL,!0),i.api>=2.1029&&(e=(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16),"function"==typeof w["delete"]&&w["delete"]("reqid"),w.append("reqid",e),o._requestId=e),o.send(w))},m)):a.trigger("uploadabort",["errAbort","errTimeout"])},U=function(){A&&y.notifyWith(L,[{cnt:L.data("cnt"),progress:L.data("progress"),total:L.data("total")}])},P=function(e,t,n){e&&i.trigger("xhruploadfail",{error:e,file:t}),n?e&&(q<i.options.maxErrorDialogs&&(Array.isArray(e)?R=R.concat(e):R.push(e)),q++):e?i.error(e):(R.length&&(q>=i.options.maxErrorDialogs&&(R=R.concat("moreErrors",q-i.options.maxErrorDialogs)),i.error(R)),R=[],q=0)},R=[],q=0,H=t.renames||null,_=t.hashes||null,N=!1,L=e();if(a.one("uploadabort",M),e(window).one("unload."+n.namespace,M),!N&&(z=C),!c&&!k)return y.reject(["errUploadNoFiles"]);o.addEventListener("error",function(){0==o.status?O?y.reject():!c&&t.files&&e.grep(t.files,function(e){return!e.type&&e.size===(i.UA.Safari?1802:0)}).length?y.reject(["errAbort","errFolderUpload"]):t.input&&e.grep(t.input.files,function(e){return!e.type&&e.size===(i.UA.Safari?1802:0)}).length?y.reject(["errUploadNoFiles"]):E():a.trigger("uploadabort","errConnect")},!1),o.addEventListener("load",function(e){var n,l,d=o.status,p=0,u="";if(d>=400?u=d>500?"errResponse":["errResponse","errServerError"]:o.responseText||(u=["errResponse","errDataEmpty"]),u&&(a.trigger("uploadabort"),b(x).done(function(e){return y.reject(e._cid?null:u)})),C=T,j()&&(p=C-z)&&(i.notify({type:"upload",cnt:0,progress:p,size:0}),U()),n=i.parseUploadData(o.responseText),n._chunkmerged){w=new FormData;var h=[{_chunkmerged:n._chunkmerged,_name:n._name,_mtime:n._mtime}];return N=!0,a.off("uploadabort",M),s=setTimeout(function(){i.notify({type:"chunkmerge",cnt:1})},i.options.notifyDelay),void(c?W(h,x[1]):W(h))}n._multiupload=!!t.multiupload,n.error?(l={cmd:"upload",err:n,xhr:o,rc:o.status},i.trigger("uploadfail",n),i.trigger("requestError",l),l._event&&l._event.isDefaultPrevented()&&(n.error=""),n._chunkfailure||n._multiupload?(O=!0,i.uploads.xhrUploading=!1,r&&clearTimeout(r),L.length?(i.notify({type:"upload",cnt:-k,progress:0,size:0}),y.reject(n)):y.reject()):y.reject(n)):y.resolve(n)},!1),o.upload.addEventListener("loadstart",function(e){!N&&e.lengthComputable&&(C=e.loaded,v&&(C=0),T=e.total,C||(C=parseInt(.05*T)),j()&&(i.notify({type:"upload",cnt:0,progress:C-z,size:t.multiupload?0:T}),z=C,U()))},!1),o.upload.addEventListener("progress",function(e){var n;e.lengthComputable&&!N&&o.readyState<2&&(C=e.loaded,!t.checked&&C>0&&!r&&(r=F(o._totalSize-C)),T||(T=e.total,C||(C=parseInt(.05*T))),n=C-z,j()&&n/e.total>=.05&&(i.notify({type:"upload",cnt:0,progress:n,size:0}),z=C,U()),!t.multiupload&&C>=T&&(I=!1,D(!1)))},!1);var W=function(a,s){var m,g,v,b,x,C,z,T,A,S,M,E,U,q,N=0,L=1,W=[],B=0,$=k,K=0,V=[],X=(new Date).getTime().toString().substr(-9),G=Math.min((n.uplMaxSize?n.uplMaxSize:2097152)-8190,n.options.uploadMaxChunkSize),J=!h&&"",Y=function(a,o){var s,l,u=[],h=0;if(!O){for(;a.length&&u.length<o;)u.push(a.shift());if(h=u.length){l=h;for(var f=0;f<h&&!O;f++)s=c?u[f][0][0]._cid||null:u[f][0]._cid||null,U[s]?E--:n.exec("upload",{type:t.type,isDataType:c,files:u[f],checked:!0,target:d,dropEvt:p,renames:H,hashes:_,multiupload:!0,overwrite:0===t.overwrite?0:void 0},void 0,d).fail(function(e){e&&"No such command"===e&&(O=!0,n.error(["errUpload","errPerm"])),s&&(U[s]=!0)}).always(function(t){t&&t.added&&(S=e.merge(S,t.added)),E<=++M&&(n.trigger("multiupload",{added:S}),r&&clearTimeout(r),j()&&i.notify({type:"upload",cnt:-k,progress:0,size:0})),a.length?Y(a,1):--l<=1&&(I=!1,D(!1))})}}(u.length<1||O)&&(O?(r&&clearTimeout(r),s&&(U[s]=!0),y.reject()):(y.resolve(),i.uploads.xhrUploading=!1))},Q=function(){i.uploads.xhrUploading?setTimeout(Q,100):(i.uploads.xhrUploading=!0,Y(W,f))};if(!l&&(c||"files"==t.type)){for((m=n.option("uploadMaxSize",d))||(m=0),b=0;b<a.length;b++){try{T=a[b],g=T.size,J===!1&&(J="",i.api>=2.1&&("slice"in T?J="slice":"mozSlice"in T?J="mozSlice":"webkitSlice"in T&&(J="webkitSlice")))}catch(Z){k--,$--;continue}if(m&&g>m||!J&&n.uplMaxSize&&g>n.uplMaxSize)P(["errUploadFile",T.name,"errUploadFileSize"],T,!0),k--,$--;else if(!T.type||i.uploadMimeCheck(T.type,d))if(J&&g>G){for(x=0,C=G,z=-1,$=Math.floor((g-1)/G),v=T.lastModified?Math.round(T.lastModified/1e3):0,K+=g,V[X]=0;x<g;)A=T[J](x,C),A._chunk=T.name+"."+ ++z+"_"+$+".part",A._cid=X,A._range=x+","+A.size+","+g,A._mtime=v,V[X]++,N&&B++,"undefined"==typeof W[B]&&(W[B]=[],c&&(W[B][0]=[],W[B][1]=[])),N=G,L=1,c?(W[B][0].push(A),W[B][1].push(s[b])):W[B].push(A),x=C,C=x+G;null==A?(P(["errUploadFile",T.name,"errUploadFileSize"],T,!0),k--,$--):($+=z,N=0,L=1,B++)}else(n.uplMaxSize&&N+g>n.uplMaxSize||L>n.uplMaxFile)&&(N=0,L=1,B++),"undefined"==typeof W[B]&&(W[B]=[],c&&(W[B][0]=[],W[B][1]=[])),c?(W[B][0].push(T),W[B][1].push(s[b])):W[B].push(T),N+=g,K+=g,L++;else P(["errUploadFile",T.name,"errUploadMime","("+T.type+")"],T,!0),k--,$--}if(R.length&&P(),0==W.length)return t.checked=!0,!1;if(W.length>1)return r=F(K),S=[],M=0,E=W.length,U=[],Q(),!0;c?(a=W[0][0],s=W[0][1]):a=W[0]}return l||(n.UA.Safari&&t.files?o._totalSize=K:r=F(K)),l=!0,a.length||y.reject(["errUploadNoFiles"]),o.open("POST",i.uploadURL,!0),n.customHeaders&&e.each(n.customHeaders,function(e){o.setRequestHeader(e,this)}),n.xhrFields&&e.each(n.xhrFields,function(e){e in o&&(o[e]=this)}),i.api>=2.1029&&(q=(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16),w.append("reqid",q),o._requestId=q),w.append("cmd","upload"),w.append(i.newAPI?"target":"current",d),H&&H.length&&(e.each(H,function(e,t){w.append("renames[]",t)}),w.append("suffix",n.options.backupSuffix)),_&&e.each(_,function(e,t){w.append("hashes["+e+"]",t)}),e.each(i.customData,function(e,t){w.append(e,t)}),e.each(i.options.onlyMimes,function(e,t){w.append("mimes[]",t)}),e.each(a,function(e,i){i._chunkmerged?(w.append("chunk",i._chunkmerged),w.append("upload[]",i._name),w.append("mtime[]",i._mtime)):(i._chunkfail?(w.append("upload[]","chunkfail"),w.append("mimes","chunkfail")):(w.append("upload[]",i),t.clipdata&&(t.overwrite=0,w.append("name[]",n.date(n.nonameDateFormat)+".png")),i.name&&n.UA.iOS&&(i.name.match(/^image\.jpe?g$/i)?(t.overwrite=0,w.append("name[]",n.date(n.nonameDateFormat)+".jpg")):i.name.match(/^capturedvideo\.mov$/i)&&(t.overwrite=0,w.append("name[]",n.date(n.nonameDateFormat)+".mov")))),i._chunk?(w.append("chunk",i._chunk),w.append("cid",i._cid),w.append("range",i._range),w.append("mtime[]",i._mtime)):w.append("mtime[]",i.lastModified?Math.round(i.lastModified/1e3):0))}),c&&e.each(s,function(e,t){w.append("upload_path[]",t)}),0===t.overwrite&&w.append("overwrite",0),p&&w.append("dropWith",parseInt((p.altKey?"1":"0")+(p.ctrlKey?"1":"0")+(p.metaKey?"1":"0")+(p.shiftKey?"1":"0"),2)),u&&e.each(u,function(e,t){w.append(e,t)}),o.send(w),!0};if(c)l?W(x[0],x[1]):x.done(function(t){if(H=[],k=t[0].length){if(t[4]&&t[4].length)return void n.request({data:{cmd:"mkdir",target:d,dirs:t[4]},notify:{type:"mkdir",cnt:t[4].length},preventFail:!0}).fail(function(e){e=e||["errUnknown"],"errCmdParams"===e[0]?f=1:(f=0,y.reject(e))}).done(function(n){var i=!1;n.hashes||(n.hashes={}),t[1]=e.map(t[1],function(e,a){return e=e.replace(/\/[^\/]*$/,""),""===e?d:n.hashes[e]?n.hashes[e]:(i=!0,t[0][a]._remove=!0,null)}),i&&(t[0]=e.grep(t[0],function(e){return!e._remove}))}).always(function(e){f&&(H=t[2],_=t[3],W(t[0],t[1]))});t[1]=e.map(t[1],function(){return d}),H=t[2],_=t[3],W(t[0],t[1])}else y.reject(["errUploadNoFiles"])}).fail(function(){y.reject()});else if(x.length>0)if(t.clipdata||null!=H)W(x)||y.reject();else{var B=[],$=[],K=n.options.folderUploadExclude[n.OS]||null;e.each(x,function(t,n){var i,a,o=n.webkitRelativePath||n.relativePath||"";return!!o&&(K&&n.name.match(K)?(n._remove=!0,o=void 0):(o="/"+o.replace(/\/[^\/]*$/,"").replace(/^\//,""),o&&e.inArray(o,B)===-1&&(B.push(o),i=o.substr(1).indexOf("/"),i!==-1&&(a=o.substr(0,i+1))&&e.inArray(a,B)===-1&&B.unshift(a))),void jQuery.push(o))}),H=[],_={},B.length?!function(){var t=e.map(B,function(e){return e.substr(1).indexOf("/")===-1?{name:e.substr(1)}:null}),i=[];n.uploads.checkExists(t,d,n,!0).done(function(a,o){var r,s,l,p=[];n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",d)&&(i=e.map(t,function(e){return e._remove?e.name:null}),t=e.grep(t,function(e){return!e._remove})),i.length&&e.each(jQuery.concat(),function(t,n){0===e.inArray(n,i)&&(x[t]._remove=!0,$[t]=void 0)}),x=e.grep(x,function(e){return!e._remove}),$=e.grep($,function(e){return void 0!==e}),t.length?(r=e.Deferred(),a.length?e.each(a,function(t,i){s=n.uniqueName(i+n.options.backupSuffix,null,""),e.each(o,function(e,t){if(a[0]==t)return l=e,!1}),l||(l=n.fileByName(a[0],d).hash),n.lockfiles({files:[l]}),p.push(n.request({data:{cmd:"rename",target:l,name:s},notify:{type:"rename",cnt:1}}).fail(function(e){y.reject(e),n.sync()}).always(function(){n.unlockfiles({files:[l]})}))}):p.push(null),e.when.apply(e,p).done(function(){n.request({data:{cmd:"mkdir",target:d,dirs:B},notify:{type:"mkdir",cnt:B.length},preventFail:!0}).fail(function(e){e=e||["errUnknown"],"errCmdParams"===e[0]?f=1:(f=0,y.reject(e))}).done(function(t){var n=!1;t.hashes||(t.hashes={}),$=e.map(jQuery.concat(),function(e,i){return"/"===e?d:t.hashes[e]?t.hashes[e]:(n=!0,x[i]._remove=!0,null)}),n&&(x=e.grep(x,function(e){return!e._remove}))}).always(function(e){f&&(c=!0,W(x,$)||y.reject())})})):y.reject()})}():n.uploads.checkExists(x,d,n).done(function(i,a){n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",d)&&(_=a,null===i?t.overwrite=0:H=i,x=e.grep(x,function(e){return!e._remove})),k=x.length,k>0?W(x)||y.reject():y.reject()})}else y.reject();return y},iframe:function(t,n){var i,a,o,r,s=n?n:this,l=!!t.input&&t.input,c=!l&&s.uploads.checkFile(t,s),d=e.Deferred().fail(function(e){e&&s.error(e)}),p="iframe-"+n.namespace+ ++s.iframeCnt,u=e('<form action="'+s.uploadURL+'" method="post" enctype="multipart/form-data" encoding="multipart/form-data" target="'+p+'" style="display:none"><input type="hidden" name="cmd" value="upload" /></form>'),h=this.UA.IE,f=function(){r&&clearTimeout(r),o&&clearTimeout(o),a&&s.notify({type:"upload",cnt:-i}),setTimeout(function(){h&&e('<iframe src="javascript:false;"/>').appendTo(u),u.remove(),m.remove()},100)},m=e('<iframe src="'+(h?"javascript:false;":"about:blank")+'" name="'+p+'" style="position:absolute;left:-1000px;top:-1000px" />').on("load",function(){m.off("load").on("load",function(){f(),d.resolve()}),o=setTimeout(function(){a=!0,s.notify({type:"upload",cnt:i})},s.options.notifyDelay),s.options.iframeTimeout>0&&(r=setTimeout(function(){f(),d.reject(["errConnect","errTimeout"])},s.options.iframeTimeout)),u.submit()}),g=t.target||s.cwd().hash,v=[],b=[],y=[],w={};if(c&&c.length)e.each(c,function(e,t){u.append('<input type="hidden" name="upload[]" value="'+t+'"/>')}),i=1;else{if(!(l&&e(l).is(":file")&&e(l).val()))return d.reject();n.options.overwriteUploadConfirm&&n.option("uploadOverwrite",g)&&(v=l.files?l.files:[{name:e(l).val().replace(/^(?:.+[\\\/])?([^\\\/]+)$/,"$1")}],b.push(s.uploads.checkExists(v,g,s).done(function(n,a){w=a,null===n?t.overwrite=0:(y=n,i=e.grep(v,function(e){return!e._remove}).length,i!=v.length&&(i=0))}))),i=l.files?l.files.length:1,u.append(l)}return e.when.apply(e,b).done(function(){return i<1?d.reject():(u.append('<input type="hidden" name="'+(s.newAPI?"target":"current")+'" value="'+g+'"/>').append('<input type="hidden" name="html" value="1"/>').append('<input type="hidden" name="node" value="'+s.id+'"/>').append(e(l).attr("name","upload[]")),y.length>0&&(e.each(y,function(e,t){u.append('<input type="hidden" name="renames[]" value="'+s.escape(t)+'"/>')}),u.append('<input type="hidden" name="suffix" value="'+n.options.backupSuffix+'"/>')),w&&e.each(y,function(e,t){u.append('<input type="hidden" name="['+e+']" value="'+s.escape(t)+'"/>')}),0===t.overwrite&&u.append('<input type="hidden" name="overwrite" value="0"/>'),e.each(s.options.onlyMimes||[],function(e,t){u.append('<input type="hidden" name="mimes[]" value="'+s.escape(t)+'"/>')}),e.each(s.customData,function(e,t){u.append('<input type="hidden" name="'+e+'" value="'+s.escape(t)+'"/>')}),u.appendTo("body"),void m.appendTo("body"))}),d}},one:function(e,t,n){var i=this,a=e.toLowerCase(),o=function(e,n){return i.toUnbindEvents[a]||(i.toUnbindEvents[a]=[]),i.toUnbindEvents[a].push({type:a,callback:o}),(t.done?t.done:t).apply(this,arguments)};return t.done&&(o={done:o}),this.bind(a,o,n)},localStorage:function(t,n){var i,a,o,r,s,l=this,c=window.localStorage,d="elfinder-"+(t||"")+this.id,p=window.location.pathname+"-elfinder-",u=this.id,h=[];if("undefined"==typeof t)return r=p.length,s=u.length*-1,e.each(c,function(e){e.substr(0,r)===p&&e.substr(s)===u&&h.push(e)}),e.each(h,function(e,t){c.removeItem(t)}),!0;if(t=p+t+u,null===n)return c.removeItem(t);if(void 0===n&&!(i=c.getItem(t))&&(a=c.getItem(d))&&(n=a,c.removeItem(d)),void 0!==n){o=typeof n,"string"!==o&&"number"!==o&&(n=JSON.stringify(n));try{c.setItem(t,n)}catch(f){try{c.clear(),c.setItem(t,n)}catch(f){l.debug("error",f.toString())}}i=c.getItem(t)}if(i&&("{"===i.substr(0,1)||"["===i.substr(0,1)))try{return JSON.parse(i)}catch(f){}return i},cookie:function(t,n){var i,a,o,r,s,l;if(t="elfinder-"+t+this.id,void 0===n){if(document.cookie&&""!=document.cookie)for(o=document.cookie.split(";"),t+="=",r=0;r<o.length;r++)if(o[r]=e.trim(o[r]),o[r].substring(0,t.length)==t){if(s=decodeURIComponent(o[r].substring(t.length)),"{"===s.substr(0,1)||"["===s.substr(0,1))try{return JSON.parse(s)}catch(c){}return s}return null}if(a=Object.assign({},this.options.cookie),null===n?(n="",a.expires=-1):(l=typeof n,"string"!==l&&"number"!==l&&(n=JSON.stringify(n))),"number"==typeof a.expires&&(i=new Date,i.setTime(i.getTime()+864e5*a.expires),a.expires=i),document.cookie=t+"="+encodeURIComponent(n)+"; expires="+a.expires.toUTCString()+(a.path?"; path="+a.path:"")+(a.domain?"; domain="+a.domain:"")+(a.secure?"; secure":""),n&&("{"===n.substr(0,1)||"["===n.substr(0,1)))try{return JSON.parse(n)}catch(c){}return n},startDir:function(){var e=window.location.hash;return e&&e.match(/^#elf_/)?e.replace(/^#elf_/,""):this.options.startPathHash?this.options.startPathHash:this.lastDir()},lastDir:function(e){return this.options.rememberLastDir?this.storage("lastdir",e):""},_node:e("<span/>"),escape:function(e){return this._node.text(e).html().replace(/"/g,"&quot;").replace(/'/g,"&#039;")},normalize:function(t){var n,i,a,o,r,s=this,l=function(){var e,t;return(t=s.options.fileFilter)&&("function"==typeof t?e=function(e){return t.call(s,e)}:t instanceof RegExp&&(e=function(e){return t.test(e.name)})),e?e:null}(),c=function(t){var n;t.uiCmdMap&&(e.isPlainObject(t.uiCmdMap)&&Object.keys(t.uiCmdMap).length?(t.disabledFlip||(t.disabledFlip={}),n=t.disabledFlip,e.each(t.uiCmdMap,function(e,i){"hidden"!==i||n[e]||(t.disabled.push(e),t.disabledFlip[e]=!0)})):delete t.uiCmdMap)},d=function(t){var n=function(e){var t=typeof e;return"object"===t&&Array.isArray(e)&&(t="array"),t};return e.each(s.optionProperties,function(e,i){void 0!==i&&t[e]&&n(t[e])!==n(i)&&(t[e]=i)}),t.disabled?t.disabledFlip=s.arrayFlip(t.disabled,!0):t.disabledFlip={},t},p=function(t,r,p){var u,h,m,g,v=!r||t,b=!!r&&null;
if(t&&t.hash&&t.name&&t.mime){if("application/x-empty"===t.mime&&(t.mime="text/plain"),m=s.isRoot(t),m&&!t.volumeid&&s.debug("warning","The volume root statuses requires `volumeid` property."),m||"directory"===t.mime){if(t.phash){if(t.phash===t.hash)return f=f.concat(['Parent folder of "$1" is itself.',t.name]),b;if(m&&t.volumeid&&0===t.phash.indexOf(t.volumeid))return f=f.concat(['Parent folder of "$1" is inner itself.',t.name]),b}t.volumeid&&(u=t.volumeid,m&&(t.phash&&(s.leafRoots[t.phash]?e.inArray(t.hash,s.leafRoots[t.phash])===-1&&s.leafRoots[t.phash].push(t.hash):s.leafRoots[t.phash]=[t.hash]),s.hasVolOptions=!0,s.volOptions[u]||(s.volOptions[u]={dispInlineRegex:s.options.dispInlineRegex}),h=s.volOptions[u],t.options&&Object.assign(h,t.options),t.disabled&&(h.disabled=t.disabled,h.disabledFlip=s.arrayFlip(t.disabled,!0)),t.tmbUrl&&(h.tmbUrl=t.tmbUrl),h.url&&"/"!==h.url.substr(-1)&&(h.url+="/"),c(h),h.trashHash&&(s.trashes[h.trashHash]===!1?delete h.trashHash:s.trashes[h.trashHash]=t.hash),e.each(s.optionProperties,function(e){h[e]&&(t[e]=h[e])}),"cwd"!==p&&(s.roots[u]=t.hash),t.expires&&(s.volumeExpires[u]=t.expires)),o!==u&&(o=u,a=s.option("i18nFolderName",u))),m&&!t.i18&&(n="volume_"+t.name,i=s.i18n(!1,n),n!==i&&(t.i18=i)),a&&!t.i18&&(n="folder_"+t.name,i=s.i18n(!1,n),n!==i&&(t.i18=i)),m&&(g=s.storage("rootNames"))&&(g[t.hash]&&(t._name=t.name,t._i18=t.i18,t.name=g[t.hash]=g[t.hash],delete t.i18),s.storage("rootNames",g)),s.trashes[t.hash]&&(t.locked=!0)}else{if(l)try{if(!l(t))return b}catch(y){s.debug(y)}0==t.size&&(t.mime=s.getMimetype(t.name,t.mime))}return t.options&&(s.optionsByHashes[t.hash]=d(t.options)),delete t.options,v}return b},u=function(t){var n=[];return e.each(s.files(),function(i,a){e.each(s.parents(i),function(a,o){if(e.inArray(o,t)!==-1&&e.inArray(i,t)===-1)return n.push(i),!1})}),n},h=function(n,i){e.each(n,function(n,a){var o,r;s.leafRoots[a.hash]&&s.applyLeafRootStats(a),"change"!==i&&a.phash&&s.isRoot(a)&&(o=s.file(a.phash))&&(s.applyLeafRootStats(o),t.changed?(e.each(t.changed,function(e,n){if(n.hash===o.hash)return t.changed[e]=o,r=!0,!1}),r||t.changed.push(o)):t.changed=[o])})},f=[];if(t.customData&&t.customData!==s.prevCustomData){s.prevCustomData=t.customData;try{r=JSON.parse(t.customData),e.isPlainObject(r)&&(s.prevCustomData=r,e.each(Object.keys(r),function(e,t){null===r[t]&&(delete r[t],delete s.optsCustomData[t])}),s.customData=Object.assign({},s.optsCustomData,r))}catch(m){}}return t.options&&d(t.options),t.cwd&&(t.cwd.volumeid&&t.options&&Object.keys(t.options).length&&s.isRoot(t.cwd)&&(s.hasVolOptions=!0,s.volOptions[t.cwd.volumeid]=t.options),t.cwd=p(t.cwd,!0,"cwd")),t.files&&(t.files=e.grep(t.files,p)),t.tree&&(t.tree=e.grep(t.tree,p)),t.added&&(t.added=e.grep(t.added,p)),t.changed&&(t.changed=e.grep(t.changed,p)),t.removed&&t.removed.length&&2===s.searchStatus.state&&(t.removed=t.removed.concat(u(t.removed))),t.api&&(t.init=!0),Object.keys(s.leafRoots).length&&(t.files&&h(t.files),t.tree&&h(t.tree),t.added&&h(t.added),t.changed&&h(t.changed,"change")),t.cwd&&t.cwd.options&&t.options&&Object.assign(t.options,d(t.cwd.options)),t.options&&t.options.url&&"/"!==t.options.url.substr(-1)&&(t.options.url+="/"),f.length&&(t.norError=["errResponse"].concat(f)),t},setSort:function(e,t,n,i){this.storage("sortType",this.sortType=this.sortRules[e]?e:"name"),this.storage("sortOrder",this.sortOrder=/asc|desc/.test(t)?t:"asc"),this.storage("sortStickFolders",(this.sortStickFolders=!!n)?1:""),this.storage("sortAlsoTreeview",(this.sortAlsoTreeview=!!i)?1:""),this.trigger("sortchange")},_sortRules:{name:function(e,t){return i.prototype.naturalCompare(e.i18||e.name,t.i18||t.name)},size:function(e,t){var n=parseInt(e.size)||0,i=parseInt(t.size)||0;return n===i?0:n>i?1:-1},kind:function(e,t){return i.prototype.naturalCompare(e.mime,t.mime)},date:function(e,t){var n=e.ts||e.date||0,i=t.ts||t.date||0;return n===i?0:n>i?1:-1},perm:function(e,t){var n=function(e){return(e.write?2:0)+(e.read?1:0)},i=n(e),a=n(t);return i===a?0:i>a?1:-1},mode:function(e,t){var n=e.mode||e.perm||"",a=t.mode||t.perm||"";return i.prototype.naturalCompare(n,a)},owner:function(e,t){var n=e.owner||"",a=t.owner||"";return i.prototype.naturalCompare(n,a)},group:function(e,t){var n=e.group||"",a=t.group||"";return i.prototype.naturalCompare(n,a)}},sorters:{},naturalCompare:function(e,t){var n=i.prototype.naturalCompare;return"undefined"==typeof n.loc&&(n.loc=navigator.userLanguage||navigator.browserLanguage||navigator.language||"en-US"),"undefined"==typeof n.sort&&("11".localeCompare("2",n.loc,{numeric:!0})>0?window.Intl&&window.Intl.Collator?n.sort=new Intl.Collator(n.loc,{numeric:!0}).compare:n.sort=function(e,t){return e.localeCompare(t,n.loc,{numeric:!0})}:(n.sort=function(e,t){var i,a,o=/(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,r=/(^[ ]*|[ ]*$)/g,s=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,l=/^0x[0-9a-f]+$/i,c=/^0/,d=/^[\x01\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/,p=function(e){return n.sort.insensitive&&(""+e).toLowerCase()||""+e},u=p(e).replace(r,"").replace(/^_/,"")||"",h=p(t).replace(r,"").replace(/^_/,"")||"",f=u.replace(o,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),m=h.replace(o,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),g=parseInt(u.match(l))||1!=f.length&&u.match(s)&&Date.parse(u),v=parseInt(h.match(l))||g&&h.match(s)&&Date.parse(h)||null,b=0;if(v){if(g<v)return-1;if(g>v)return 1}for(var y=0,w=Math.max(f.length,m.length);y<w;y++){if(i=!(f[y]||"").match(c)&&parseFloat(f[y])||f[y]||0,a=!(m[y]||"").match(c)&&parseFloat(m[y])||m[y]||0,isNaN(i)!==isNaN(a)){if(isNaN(i)&&("string"!=typeof i||!i.match(d)))return 1;if("string"!=typeof a||!a.match(d))return-1}if(0===parseInt(i,10)&&(i=0),0===parseInt(a,10)&&(a=0),typeof i!=typeof a&&(i+="",a+=""),n.sort.insensitive&&"string"==typeof i&&"string"==typeof a&&(b=i.localeCompare(a,n.loc),0!==b))return b;if(i<a)return-1;if(i>a)return 1}return 0},n.sort.insensitive=!0)),n.sort(e,t)},compare:function(e,t){var n,i=this,a=i.sortType,o="asc"==i.sortOrder,r=i.sortStickFolders,s=i.sortRules,l=s[a],c="directory"==e.mime,d="directory"==t.mime;if(r){if(c&&!d)return-1;if(!c&&d)return 1}return n=o?l(e,t):l(t,e),"name"!==a&&0===n?n=o?s.name(e,t):s.name(t,e):n},sortFiles:function(e){return e.sort(this.compare)},notify:function(t){var n,i,a,o=t.type,r=t.id?"elfinder-notify-"+t.id:"",s=this.i18n("undefined"!=typeof t.msg?t.msg:this.messages["ntf"+o]?"ntf"+o:"ntfsmth"),l=this.ui.notify,c=l.children(".elfinder-notify-"+o+(r?"."+r:"")),d=c.children("div.elfinder-notify-cancel").children("button"),p='<div class="elfinder-notify elfinder-notify-{type}'+(r?" "+r:"")+'"><span class="elfinder-dialog-icon elfinder-dialog-icon-{type}"/><span class="elfinder-notify-msg">{msg}</span> <span class="elfinder-notify-cnt"/><div class="elfinder-notify-progressbar"><div class="elfinder-notify-progress"/></div><div class="elfinder-notify-cancel"/></div>',u=t.cnt,h="undefined"!=typeof t.size?parseInt(t.size):null,f="undefined"!=typeof t.progress&&t.progress>=0?t.progress:null,m=t.cancel,g="ui-state-hover",v=function(){c._esc&&e(document).off("keydown",c._esc),c.remove(),!l.children().length&&l.elfinderdialog("close")};return o?(c.length?"undefined"!=typeof t.msg&&c.children("span.elfinder-notify-msg").html(s):(c=e(p.replace(/\{type\}/g,o).replace(/\{msg\}/g,s)).appendTo(l).data("cnt",0),null!=f&&c.data({progress:0,total:0}),m&&(d=e('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span class="ui-button-text">'+this.i18n("btnCancel")+"</span></button>").on("mouseenter mouseleave",function(t){e(this).toggleClass(g,"mouseenter"===t.type)}),c.children("div.elfinder-notify-cancel").append(d))),n=u+parseInt(c.data("cnt")),n>0?(m&&d.length&&(e.isFunction(m)||"object"==typeof m&&m.promise)&&(c._esc=function(t){"keydown"==t.type&&t.keyCode!=e.ui.keyCode.ESCAPE||(t.preventDefault(),t.stopPropagation(),v(),m.promise?m.reject(0):m(t))},d.on("click",function(e){c._esc(e)}),e(document).on("keydown."+this.namespace,c._esc)),!t.hideCnt&&c.children(".elfinder-notify-cnt").text("("+n+")"),l.is(":hidden")&&l.elfinderdialog("open",this).height("auto"),c.data("cnt",n),null!=f&&(i=c.data("total"))>=0&&(a=c.data("progress"))>=0&&(i+=null!=h?h:u,a+=f,null==h&&u<0&&(a+=100*u),c.data({progress:a,total:i}),null!=h&&(a*=100,i=Math.max(1,i)),f=parseInt(a/i),c.find(".elfinder-notify-progress").animate({width:(f<100?f:100)+"%"},20))):v(),this):this},confirm:function(t){var n,i,a=this,o=!1,r={cssClass:"elfinder-dialog-confirm",modal:!0,resizable:!1,title:this.i18n(t.title||"confirmReq"),buttons:{},close:function(){!o&&t.cancel.callback(),e(this).elfinderdialog("destroy")}},s=this.i18n("apllyAll");return t.cssClass&&(r.cssClass+=" "+t.cssClass),r.buttons[this.i18n(t.accept.label)]=function(){t.accept.callback(!(!n||!n.prop("checked"))),o=!0,e(this).elfinderdialog("close")},r.buttons[this.i18n(t.accept.label)]._cssClass="elfinder-confirm-accept",t.reject&&(r.buttons[this.i18n(t.reject.label)]=function(){t.reject.callback(!(!n||!n.prop("checked"))),o=!0,e(this).elfinderdialog("close")},r.buttons[this.i18n(t.reject.label)]._cssClass="elfinder-confirm-reject"),t.buttons&&t.buttons.length>0&&(i=1,e.each(t.buttons,function(t,s){r.buttons[a.i18n(s.label)]=function(){s.callback(!(!n||!n.prop("checked"))),o=!0,e(this).elfinderdialog("close")},r.buttons[a.i18n(s.label)]._cssClass="elfinder-confirm-extbtn"+i++,s.cssClass&&(r.buttons[a.i18n(s.label)]._cssClass+=" "+s.cssClass)})),r.buttons[this.i18n(t.cancel.label)]=function(){e(this).elfinderdialog("close")},r.buttons[this.i18n(t.cancel.label)]._cssClass="elfinder-confirm-cancel",t.all&&(r.create=function(){var t=e('<div class="elfinder-dialog-confirm-applyall"/>');n=e('<input type="checkbox" />'),e(this).next().find(".ui-dialog-buttonset").prepend(t.append(e("<label>"+s+"</label>").prepend(n)))}),t.optionsCallback&&e.isFunction(t.optionsCallback)&&t.optionsCallback(r),this.dialog('<span class="elfinder-dialog-icon elfinder-dialog-icon-confirm"/>'+this.i18n(t.text),r)},uniqueName:function(e,t,n){var i,a,o=0,r="";if(e=this.i18n(!1,e),t=t||this.cwd().hash,n="undefined"==typeof n?" ":n,(i=e.match(/^(.+)(\.[^.]+)$/))&&(r=i[2],e=i[1]),a=e+r,!this.fileByName(a,t))return a;for(;o<1e4;)if(a=e+n+ ++o+r,!this.fileByName(a,t))return a;return e+Math.random()+r},i18n:function(){var t,n,i,a,o,r=this,s=this.messages,l=[],c=[],d=function(e){var t;return 0===e.indexOf("#")&&(t=r.file(e.substr(1)))?t.name:e},p=0;for(arguments.length&&arguments[0]===!1&&(a=function(e){return e},p=1),t=p;t<arguments.length;t++)if(i=arguments[t],Array.isArray(i))for(n=0;n<i.length;n++)i[n]instanceof jQuery?l.push(i[n]):"undefined"!=typeof i[n]&&l.push(d(""+i[n]));else i instanceof jQuery?l.push(i[n]):"undefined"!=typeof i&&l.push(d(""+i));for(t=0;t<l.length;t++)e.inArray(t,c)===-1&&(i=l[t],"string"==typeof i?(o=!(!s[i]||!i.match(/^err/)),i=s[i]||(a?a(i):r.escape(i)),i=i.replace(/\$(\d+)/g,function(e,n){var i;return n=t+parseInt(n),n>0&&l[n]&&c.push(n),i=a?a(l[n]):r.escape(l[n]),o&&(i='<span class="elfinder-err-var elfinder-err-var'+n+'">'+i+"</span>"),i})):i=i.get(0).outerHTML,l[t]=i);return e.grep(l,function(t,n){return e.inArray(n,c)===-1}).join("<br>")},getIconStyle:function(t,n){var i=this,a={background:"url('{url}') 0 0 no-repeat","background-size":"contain"},o="",r={},s=0;return t.icon&&(o='style="',e.each(a,function(e,a){0===s++&&(a=a.replace("{url}",i.escape(t.icon))),n?r[e]=a:o+=e+":"+a+";"}),o+='"'),n?r:o},mime2class:function(e){var t="elfinder-cwd-icon-",n=e.toLowerCase(),i=this.textMimes[n];return n=n.split("/"),i?n[0]+=" "+t+"text":n[1]&&n[1].match(/\+xml$/)&&(n[0]+=" "+t+"xml"),t+n[0]+(n[1]?" "+t+n[1].replace(/(\.|\+)/g,"-"):"")},mime2kind:function(e){var t,n="object"==typeof e,i=n?e.mime:e;return n&&e.alias&&"symlink-broken"!=i?t="Alias":this.kinds[i]&&(t=!n||"directory"!==i||e.phash&&!e.isroot?this.kinds[i]:"Root"),t||(t=0===i.indexOf("text")?"Text":0===i.indexOf("image")?"Image":0===i.indexOf("audio")?"Audio":0===i.indexOf("video")?"Video":0===i.indexOf("application")?"App":i),this.messages["kind"+t]?this.i18n("kind"+t):i},mimeIsText:function(e){return!!(this.textMimes[e.toLowerCase()]||0===e.indexOf("text/")&&"rtf"!==e.substr(5,3)||e.match(/^application\/.+\+xml$/))},date:function(e,t){var n,i,a,o,r,s,l,c,d,p=this;return t||(t=new Date),s=t[p.getHours](),l=s>12?s-12:s,c=t[p.getMinutes](),d=t[p.getSeconds](),i=t[p.getDate](),a=t[p.getDay](),o=t[p.getMonth]()+1,r=t[p.getFullYear](),n=e.replace(/[a-z]/gi,function(e){switch(e){case"d":return i>9?i:"0"+i;case"j":return i;case"D":return p.i18n(p.i18.daysShort[a]);case"l":return p.i18n(p.i18.days[a]);case"m":return o>9?o:"0"+o;case"n":return o;case"M":return p.i18n(p.i18.monthsShort[o-1]);case"F":return p.i18n(p.i18.months[o-1]);case"Y":return r;case"y":return(""+r).substr(2);case"H":return s>9?s:"0"+s;case"G":return s;case"g":return l;case"h":return l>9?l:"0"+l;case"a":return s>=12?"pm":"am";case"A":return s>=12?"PM":"AM";case"i":return c>9?c:"0"+c;case"s":return d>9?d:"0"+d}return e})},formatDate:function(e,t){var n,i,a,o=this,r=t||e.ts;o.i18;return o.options.clientFormatDate&&r>0?(n=new Date(1e3*r),i=r>=this.yesterday?this.fancyFormat:this.dateFormat,a=o.date(i,n),r>=this.yesterday?a.replace("$1",this.i18n(r>=this.today?"Today":"Yesterday")):a):e.date?e.date.replace(/([a-z]+)\s/i,function(e,t){return o.i18n(t)+" "}):o.i18n("dateUnknown")},toLocaleString:function(e){var t=new Number(e);return t?t.toLocaleString?t.toLocaleString():String(e).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"):e},perms2class:function(e){var t="";return e.read||e.write?e.read?e.write||(t="elfinder-ro"):t="elfinder-wo":t="elfinder-na",e.type&&(t+=" elfinder-"+this.escape(e.type)),t},formatPermissions:function(e){var t=[];return e.read&&t.push(this.i18n("read")),e.write&&t.push(this.i18n("write")),t.length?t.join(" "+this.i18n("and")+" "):this.i18n("noaccess")},formatSize:function(e){var t=1,n="b";return"unknown"==e?this.i18n("unknown"):(e>1073741824?(t=1073741824,n="GB"):e>1048576?(t=1048576,n="MB"):e>1024&&(t=1024,n="KB"),e/=t,(e>0?t>=1048576?e.toFixed(2):Math.round(e):0)+" "+n)},formatFileMode:function(t,n){var i,a,o,r,s,l,c,d,p;if(n||(n=this.options.fileModeStyle.toLowerCase()),t=e.trim(t),t.match(/[rwxs-]{9}$/i)){if(d=t=t.substr(-9),"string"==n)return d;for(p="",o=0,i=0;i<7;i+=3)a=t.substr(i,3),r=0,a.match(/[r]/i)&&(r+=4),a.match(/[w]/i)&&(r+=2),a.match(/[xs]/i)&&(a.match(/[xs]/)&&(r+=1),a.match(/[s]/i)&&(0==i?o+=4:3==i&&(o+=2))),p+=r.toString(8);o&&(p=o.toString(8)+p)}else{if(t=parseInt(t,8),p=t?t.toString(8):"",!t||"octal"==n)return p;for(a=t.toString(8),o=0,a.length>3&&(a=a.substr(-4),o=parseInt(a.substr(0,1),8),a=a.substr(1)),s=1==(1&o),c=2==(2&o),l=4==(4&o),d="",i=0;i<3;i++)d+=4==(4&parseInt(a.substr(i,1),8))?"r":"-",d+=2==(2&parseInt(a.substr(i,1),8))?"w":"-",d+=1==(1&parseInt(a.substr(i,1),8))?0==i&&l||1==i&&c?"s":"x":"-"}return"both"==n?d+" ("+p+")":"string"==n?d:p},registRawStringDecoder:function(t){e.isFunction(t)&&(this.decodeRawString=this.options.rawStringDecoder=t)},uploadMimeCheck:function(t,n){n=n||this.cwd().hash;var i,a,o=!0,r=this.option("uploadMime",n),s=function(n){var i=!1;return"string"==typeof n&&"all"===n.toLowerCase()?i=!0:Array.isArray(n)&&n.length&&e.each(n,function(e,n){if(n=n.toLowerCase(),"all"===n||0===t.indexOf(n))return i=!0,!1}),i};return t&&e.isPlainObject(r)&&(t=t.toLowerCase(),i=s(r.allow),a=s(r.deny),"allow"===r.firstOrder?(o=!1,a||i!==!0||(o=!0)):(o=!0,a!==!0||i||(o=!1))),o},sequence:function(e){var t=e.length,n=function(t,i){return++i,e[i]?n(t.then(e[i]),i):t};return t>1?n(e[0](),0):e[0]()},reloadContents:function(t){var n,i=e.Deferred();try{n=e('<iframe width="1" height="1" scrolling="no" frameborder="no" style="position:absolute; top:-1px; left:-1px" crossorigin="use-credentials">').attr("src",t).one("load",function(){var n=e(this);try{this.contentDocument.location.reload(!0),n.one("load",function(){n.remove(),i.resolve()})}catch(a){n.attr("src","").attr("src",t).one("load",function(){n.remove(),i.resolve()})}}).appendTo("body")}catch(a){n&&n.remove(),i.reject()}return i},makeNetmountOptionOauth:function(t,n,i,a){var o,r="boolean"==typeof a?a:null,s=Object.assign({noOffline:!1,root:"root",pathI18n:"folderId",folders:!0},null===r?a||{}:{noOffline:r}),l=function(n,a,r){var d,p=this,u=Object.keys(e.isPlainObject(r)?r:{}).length;a.next().remove(),u&&(d=e('<select class="ui-corner-all elfinder-tabstop" style="max-width:200px;">').append(e(e.map(r,function(e,t){return'<option value="'+n.escape((t+"").trim())+'">'+n.escape(e)+"</option>"}).join(""))).on("change click",function(a){var r,d=e(this),u=d.val();p.inputs.path.val(u),!s.folders||"change"!==a.type&&d.data("current")===u||(d.next().remove(),d.data("current",u),u!=s.root&&(r=c(),o&&"pending"===o.state()&&n.abortXHR(o,{quiet:!0,abort:!0}),d.after(r),o=n.request({data:{cmd:"netmount",protocol:t,host:i,user:"init",path:u,pass:"folders"},preventDefault:!0}).done(function(e){l.call(p,n,d,e.folders)}).always(function(){n.abortXHR(o,{quiet:!0}),r.remove()}).xhr))}),a.after(e("<div/>").append(d)).closest(".ui-dialog").trigger("tabstopsInit"),d.trigger("focus"))},c=function(){return e('<div class="elfinder-netmount-spinner"/>').append('<span class="elfinder-spinner"/>')};return{vars:{},name:n,inputs:{offline:e('<input type="checkbox"/>').on("change",function(){e(this).parents("table.elfinder-netmount-tb").find("select:first").trigger("change","reset")}),host:e('<span><span class="elfinder-spinner"/></span><input type="hidden"/>'),path:e('<input type="text" value="'+s.root+'"/>'),user:e('<input type="hidden"/>'),pass:e('<input type="hidden"/>')},select:function(n,a,o){var r=this.inputs,l=r.offline,c=e(r.host[0]),d=o||null;this.vars.mbtn=r.host.closest(".ui-dialog").children(".ui-dialog-buttonpane:first").find("button.elfinder-btncnt-0"),c.data("inrequest")||!c.find("span.elfinder-spinner").length&&"reset"!==d&&("winfocus"!==d||c.siblings("span.elfinder-button-icon-reload").length)?(l.closest("tr")[s.noOffline||r.user.val()?"hide":"show"](),c.data("funcexpup")&&c.data("funcexpup")()):(1===l.parent().children().length&&(r.path.parent().prev().html(n.i18n(s.pathI18n)),l.attr("title",n.i18n("offlineAccess")),l.uniqueId().after(e("<label/>").attr("for",l.attr("id")).html(" "+n.i18n("offlineAccess")))),c.data("inrequest",!0).empty().addClass("elfinder-spinner").parent().find("span.elfinder-button-icon").remove(),n.request({data:{cmd:"netmount",protocol:t,host:i,user:"init",options:{id:n.id,offline:l.prop("checked")?1:0,pass:r.host[1].value}},preventDefault:!0}).done(function(e){c.removeClass("elfinder-spinner").html(e.body.replace(/\{msg:([^}]+)\}/g,function(e,t){return n.i18n(t,i)}))}),s.noOffline&&l.closest("tr").hide()),this.vars.mbtn[e(r.host[1]).val()?"show":"hide"]()},done:function(n,a){var o=this.inputs,r=this.protocol,c=e(o.host[0]),d=e(o.host[1]),p="&nbsp;";if(s.noOffline&&o.offline.closest("tr").hide(),"makebtn"==a.mode)c.removeClass("elfinder-spinner").removeData("expires").removeData("funcexpup"),o.host.find("input").on("mouseenter mouseleave",function(){e(this).toggleClass("ui-state-hover")}),d.val(""),o.path.val(s.root).next().remove(),o.user.val(""),o.pass.val(""),!s.noOffline&&o.offline.closest("tr").show(),this.vars.mbtn.hide();else if("folders"==a.mode)a.folders&&l.call(this,n,o.path.nextAll(":last"),a.folders);else{if(a.expires&&(p="()",c.data("expires",a.expires)),c.html(i+p).removeClass("elfinder-spinner"),a.expires&&(c.data("funcexpup",function(){var e=Math.floor((c.data("expires")-+new Date/1e3)/60);e<3?c.parent().children(".elfinder-button-icon-reload").click():(c.text(c.text().replace(/\(.*\)/,"("+n.i18n(["minsLeft",e])+")")),setTimeout(function(){c.is(":visible")&&c.data("funcexpup")()},6e4))}),c.data("funcexpup")()),a.reset)return void r.trigger("change","reset");c.parent().append(e('<span class="elfinder-button-icon elfinder-button-icon-reload" title="'+n.i18n("reAuth")+'">').on("click",function(){d.val("reauth"),r.trigger("change","reset")})),d.val(t),this.vars.mbtn.show(),a.folders&&l.call(this,n,o.path,a.folders),o.user.val("done"),o.pass.val("done"),o.offline.closest("tr").hide()}c.removeData("inrequest")},fail:function(t,n){e(this.inputs.host[0]).removeData("inrequest"),this.protocol.trigger("change","reset")},integrateInfo:s.integrate}},findCwdNodes:function(t,n){var i=this,a=(this.getUI("cwd"),this.cwd().hash),o=e();return n=n||{},e.each(t,function(e,t){if((t.phash===a||i.searchStatus.state>1)&&(o=o.add(i.cwdHash2Elm(t.hash)),n.firstOnly))return!1}),o},convAbsUrl:function(e){if(e.match(/^http/i))return e;if("//"===e.substr(0,2))return window.location.protocol+e;var t,n=window.location.protocol+"//"+window.location.host,i=/[^\/]+\/\.\.\//;for(t="/"===e.substr(0,1)?n+e:n+window.location.pathname.replace(/\/[^\/]+$/,"/")+e,t=t.replace("/./","/");i.test(t);)t=t.replace(i,"");return t},isSameOrigin:function(e){var t;if(e=this.convAbsUrl(e),location.origin&&window.URL)try{return t=new URL(e),location.origin===t.origin}catch(n){}return t=document.createElement("a"),t.href=e,location.protocol===t.protocol&&location.host===t.host&&location.port&&t.port},navHash2Id:function(e){return this.navPrefix+e},navId2Hash:function(e){return"string"==typeof e&&e.substr(this.navPrefix.length)},cwdHash2Id:function(e){return this.cwdPrefix+e},cwdId2Hash:function(e){return"string"==typeof e&&e.substr(this.cwdPrefix.length)},navHash2Elm:function(t){return e(document.getElementById(this.navHash2Id(t)))},cwdHash2Elm:function(t){return e(document.getElementById(this.cwdHash2Id(t)))},isInWindow:function(e,t){var n,i;return!!(n=e.get(0))&&(!(!t&&null===n.offsetParent)&&(i=n.getBoundingClientRect(),!!document.elementFromPoint(i.left,i.top)))},zIndexCalc:function(){var t=this,n=this.getUI(),i=n.css("z-index");i&&"auto"!==i&&"inherit"!==i?t.zIndex=i:n.parents().each(function(n,i){var a=e(i).css("z-index");if("auto"!==a&&"inherit"!==a&&(a=parseInt(a)))return t.zIndex=a,!1})},loadScript:function(t,n,i,a){var o,r,s={dataType:"script",cache:!0},l={},c={};return i=i||{},i.tryRequire&&this.hasRequire?require(t,n,i.error):(o=function(){var t,o,r;e.each(c,function(e,t){if("success"!==t&&"notmodified"!==t)return r=!0,!1}),r?i.error&&e.isFunction(i.error)&&i.error({loadResults:c}):e.isFunction(n)&&(a&&"undefined"==typeof a.obj[a.name]?(t=a.timeout?a.timeout/10:1,o=setInterval(function(){(--t<0||"undefined"!=typeof a.obj[a.name])&&(clearInterval(o),n())},10)):n())},"tag"===i.loadType?(e("head > script").each(function(){l[this.src]=this}),r=t.length,e.each(t,function(t,n){var a,s=!1;l[n]?(c[t]=l[n]._error||"success",--r<1&&o()):(a=document.createElement("script"),a.charset=i.charset||"UTF-8",e("head").append(a),a.onload=a.onreadystatechange=function(){s||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(s=!0,c[t]="success",--r<1&&o())},a.onerror=function(e){c[t]=a._error=e&&e.type?e.type:"error",--r<1&&o()},a.src=n)})):(i=e.isPlainObject(i)?Object.assign(s,i):s,r=0,function d(n,a){void 0!==n&&(c[r++]=a),t.length?e.ajax(Object.assign({},i,{url:t.shift(),success:d,error:d})):o()}())),this},loadCss:function(t,n){var i,a,o=this;return"string"==typeof t&&(t=[t]),n&&(n.className&&(i=n.className),n.dfd&&n.dfd.promise&&(a=[])),e.each(t,function(t,n){var r;n=o.convAbsUrl(n).replace(/^https?:/i,""),a&&(a[t]=e.Deferred()),e("head > link[href='+url+']").length?a&&a[t].resolve():(r=document.createElement("link"),r.type="text/css",r.rel="stylesheet",r.href=n,i&&(r.className=i),a&&(r.onload=function(){a[t].resolve()},r.onerror=function(){a[t].reject()}),e("head").append(r))}),a&&e.when.apply(null,a).done(function(){n.dfd.resolve()}).fail(function(){n.dfd.reject()}),this},asyncJob:function(t,n,i){var a,o,r=e.Deferred(),s=!1,l=Object.assign({interval:0,numPerOnce:1},i||{}),c=[],d=[],p=[];return r._abort=function(e){o&&clearTimeout(o),d=[],s=!0,"pending"===r.state()&&r[e?"resolve":"reject"](c)},r.fail(function(){r._abort()}).always(function(){r._abort=function(){}}),"function"==typeof t&&Array.isArray(n)?(d=n.concat(),a=function(){var e,n,i;if(!s){for(p=d.splice(0,l.numPerOnce),n=p.length,e=0;e<n&&!s;e++)i=t(p[e]),null!==i&&c.push(i);s||(d.length?o=setTimeout(a,l.interval):r.resolve(c))}},d.length?o=setTimeout(a,0):r.resolve(c)):r.reject(),r},getSize:function(t){var n=this,i=[],a=t.length,o=e.Deferred().fail(function(){e.each(i,function(e,t){t&&(t.syncOnFail&&t.syncOnFail(!1),t.reject())})}),r=function(t){var i=[];return"directory"===t.mime&&e.each(n.leafRoots,function(e,a){var o;if(e===t.hash)i.push.apply(i,a);else for(o=(n.file(e)||{}).phash;o;)o===t.hash&&i.push.apply(i,a),o=(n.file(o)||{}).phash}),i},s=function(t){var i=e.Deferred(),a=n.file(t),o=a?a.phash:t;return o&&!n.file(o)?n.request({data:{cmd:"parents",target:o},preventFail:!0}).done(function(){n.one("parentsdone",function(){i.resolve()})}).fail(function(){i.resolve()}):i.resolve(),i},l=function(){var t=e.Deferred(),i=Object.keys(n.leafRoots).length;return i>0?e.each(n.leafRoots,function(e){s(e).done(function(){--i,i<1&&t.resolve()})}):t.resolve(),t};return n.autoSync("stop"),l().done(function(){var s=[],l={},c=[],d=[],p={};e.each(t,function(){s.push.apply(s,r(n.file(this)))}),t.push.apply(t,s),e.each(t,function(){var t=n.root(this),i=n.file(this);i&&(i.sizeInfo||"directory"!==i.mime)?d.push(e.Deferred().resolve(i.sizeInfo?i.sizeInfo:{size:i.size,dirCnt:0,fileCnt:1})):l[t]?l[t].push(this):l[t]=[this]}),e.each(l,function(){var e=c.length;1===this.length&&(p[e]=this[0]),c.push(n.request({data:{cmd:"size",targets:this},preventDefault:!0}))}),i.push.apply(i,c),c.push.apply(c,d),e.when.apply(e,c).fail(function(){o.reject()}).done(function(){var t,i,r,s=function(t,i){var a;(a=n.file(t))&&(a.sizeInfo={isCache:!0},e.each(["size","dirCnt","fileCnt"],function(){a.sizeInfo[this]=i[this]||0}),a.size=parseInt(a.sizeInfo.size),m.push(a))},l=0,c=0,d=0,u=arguments.length,h=[],f="",m=[];for(t=0;t<u;t++)r=arguments[t],i=null,r.isCache||(p[t]&&(i=n.file(p[t]))?s(p[t],r):r.sizes&&e.isPlainObject(r.sizes)&&e.each(r.sizes,function(e,t){s(e,t)})),l+=parseInt(r.size),c!==!1&&("undefined"==typeof r.fileCnt&&(c=!1),c+=parseInt(r.fileCnt||0)),d!==!1&&("undefined"==typeof r.dirCnt&&(d=!1),d+=parseInt(r.dirCnt||0));m.length&&n.change({changed:m}),d!==!1&&h.push(n.i18n("folders")+": "+(d-(a>1?0:1))),c!==!1&&h.push(n.i18n("files")+": "+c),h.length&&(f="<br>"+h.join(", ")),o.resolve({size:l,fileCnt:c,dirCnt:d,formated:(l>=0?n.formatSize(l):n.i18n("unknown"))+f})}),n.autoSync()}),o},getTheme:function(t){var n,i,a=this,o=e.Deferred(),r=function(t,n){return n||(n=a.convAbsUrl(a.baseUrl)),Array.isArray(t)?e.map(t,function(e){return r(e,n)}):t.match(/^(?:http|\/\/)/i)?t:n+t.replace(/^(?:\.\/|\/)/,"")};return t&&(n=a.options.themes[t])?"string"==typeof n?(url=r(n),(i=url.match(/^(.+\/)[^/]+\.json$/i))?e.getJSON(url).done(function(e){n=e,n.id=t,n.cssurls&&(n.cssurls=r(n.cssurls,i[1])),o.resolve(n)}).fail(function(){o.reject()}):o.resolve({id:t,name:t,cssurls:[url]})):e.isPlainObject(n)&&n.cssurls?(n.id=t,n.cssurls=r(n.cssurls),Array.isArray(n.cssurls)||(n.cssurls=[n.cssurls]),n.name||(n.name=t),o.resolve(n)):o.reject():o.reject(),o},changeTheme:function(t){var n=this;return t&&(!n.options.themes[t]||n.theme&&n.theme.id===t?"default"===t&&n.theme&&(e("head>link.elfinder-theme-ext").remove(),n.theme=null,n.trigger&&n.trigger("themechange")):n.getTheme(t).done(function(t){t.cssurls&&(e("head>link.elfinder-theme-ext").remove(),n.loadCss(t.cssurls,{className:"elfinder-theme-ext",dfd:e.Deferred().done(function(){n.theme=t,n.trigger&&n.trigger("themechange")})}))})),this},applyLeafRootStats:function(t,n){var i=this,a=n?t:i.file(t.hash)||t,o=a.ts,r=!1;return!n&&t._realStats||(t._realStats={locked:t.locked||0,dirs:t.dirs||0,ts:t.ts}),t.locked=1,a.locked||(r=!0),t.dirs=1,a.dirs||(r=!0),e.each(i.leafRoots[t.hash],function(){var e=i.file(this);e&&e.ts&&(t.ts||0)<e.ts&&(t.ts=e.ts)}),o!==t.ts&&(r=!0),r},abortXHR:function(e,t){var n=t||{};e&&(n.quiet&&(e.quiet=!0),n.abort&&e._requestId&&this.request({data:{cmd:"abort",id:e._requestId},preventDefault:!0}),e.abort(),e=void 0)},getRequestId:function(){return(+new Date).toString(16)+Math.floor(1e3*Math.random()).toString(16)},arrayFlip:function(t,n){var i,a={},o=e.isArray(t);for(i in t)(o||t.hasOwnProperty(i))&&(a[t[i]]=n||i);return a},splitFileExtention:function(e){var t;return(t=e.match(/^(.+?)?\.((?:tar\.(?:gz|bz|bz2|z|lzo))|cpio\.gz|ps\.gz|xcf\.(?:gz|bz2)|[a-z0-9]{1,10})$/i))?("undefined"==typeof t[1]&&(t[1]=""),[t[1],t[2]]):[e,""]},sliceArrayBuffer:function(e,t){for(var n=[],i=0;i*t<e.byteLength;)n.push(e.slice(i*t,(i+1)*t)),i++;return n},arrayBufferToBase64:function(e){if(!window.btoa)return"";var t=new Uint8Array(e),n=Array.prototype.slice.call(t),i=n.map(function(e){return String.fromCharCode(e)});return window.btoa(i.join(""))},log:function(e){return window.console&&window.console.log&&window.console.log(e),this},debug:function(e,t){var n=this.options.debug;return n&&("all"===n||n[e])&&window.console&&window.console.log&&window.console.log("elfinder debug: ["+e+"] ["+this.id+"]",t),"backend-error"===e?(!this.cwd().hash||n&&("all"===n||n["backend-error"]))&&(t=Array.isArray(t)?t:[t],this.error(t)):"backend-debug"===e&&this.trigger("backenddebug",t),this},time:function(e){window.console&&window.console.time&&window.console.time(e)},timeEnd:function(e){window.console&&window.console.timeEnd&&window.console.timeEnd(e)}},Object.keys||(Object.keys=function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),n=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=n.length;return function(a){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError("Object.keys called on non-object");var o=[];for(var r in a)e.call(a,r)&&o.push(r);if(t)for(var s=0;s<i;s++)e.call(a,n[s])&&o.push(n[s]);return o}}()),Array.isArray||(Array.isArray=function(e){return jQuery.isArray(e)}),Object.assign||(Object.assign=function(){return jQuery.extend.apply(null,arguments)}),String.prototype.repeat||(String.prototype.repeat=function(e){"use strict";if(null==this)throw new TypeError("can't convert "+this+" to object");var t=""+this;if(e=+e,e!=e&&(e=0),e<0)throw new RangeError("repeat count must be non-negative");if(e==1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0==t.length||0==e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var n="",i=0;i<e;i++)n+=t;return n}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),function(){try{return void Array.apply(null,{})}catch(e){}var t=Object.prototype.toString,n="[object Array]",i=Function.prototype.apply,a=Array.prototype.slice;Function.prototype.apply=function(e,o){return i.call(this,e,t.call(o)===n?o:a.call(o))}}(),Array.from||(Array.from=function(e){return 1===e.length?[e[0]]:Array.apply(null,e)}),window.cancelAnimationFrame||!function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,n){var i=(new Date).getTime(),a=Math.max(0,16-(i-e)),o=window.setTimeout(function(){t(i+a)},a);return e=i+a,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),i.prototype.version="2.1.49",function(){if(e.ui&&e.ui.ddmanager){var t=e.ui.ddmanager.prepareOffsets;e.ui.ddmanager.prepareOffsets=function(n,i){var a=function(e){if(e.is(":hidden"))return!0;var t=e[0].getBoundingClientRect();return!document.elementFromPoint(t.left,t.top)&&!document.elementFromPoint(t.left+t.width,t.top+t.height)};if("mousedown"===i.type||n.options.elfRefresh){
var o,r,s=e.ui.ddmanager.droppables[n.options.scope]||[],l=s.length;for(o=0;o<l;o++)r=s[o],r.options.autoDisable&&(!r.options.disabled||r.options.autoDisable>1)&&(r.options.disabled=a(r.element),r.options.autoDisable=r.options.disabled?2:1)}return t(n,i)}}}(),e.ajaxTransport("+binary",function(e,t,n){if(window.FormData&&(e.dataType&&"binary"==e.dataType||e.data&&(window.ArrayBuffer&&e.data instanceof ArrayBuffer||window.Blob&&e.data instanceof Blob))){var i;return{send:function(t,n){i=new XMLHttpRequest;var a=e.url,o=e.type,r=e.async||!0,s=e.responseType||"blob",l=e.data||null,c=e.username,d=e.password;i.addEventListener("load",function(){var t={};t[e.dataType]=i.response,n(i.status,i.statusText,t,i.getAllResponseHeaders())}),i.open(o,a,r,c,d);for(var p in t)i.setRequestHeader(p,t[p]);if(e.xhrFields)for(var u in e.xhrFields)u in i&&(i[u]=e.xhrFields[u]);i.responseType=s,i.send(l)},abort:function(){i.abort()}}}}),function(e){function t(t,n){if(!(t.originalEvent.touches.length>1)){e(t.currentTarget).hasClass("touch-punch-keep-default")||t.preventDefault();var i=t.originalEvent.changedTouches[0],a=document.createEvent("MouseEvents");a.initMouseEvent(n,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),t.target.dispatchEvent(a)}}if(e.support.touch="ontouchend"in document,e.support.touch){var n,i,a,o=e.ui.mouse.prototype,r=o._mouseInit,s=o._mouseDestroy;o._touchStart=function(e){var o=this;!n&&o._mouseCapture(e.originalEvent.changedTouches[0])&&(i=e.originalEvent.changedTouches[0].screenX.toFixed(0),a=e.originalEvent.changedTouches[0].screenY.toFixed(0),n=!0,o._touchMoved=!1,t(e,"mouseover"),t(e,"mousemove"),t(e,"mousedown"))},o._touchMove=function(e){if(n){var o=e.originalEvent.changedTouches[0].screenX.toFixed(0),r=e.originalEvent.changedTouches[0].screenY.toFixed(0);Math.abs(i-o)<=4&&Math.abs(a-r)<=4||(this._touchMoved=!0,t(e,"mousemove"))}},o._touchEnd=function(e){n&&(t(e,"mouseup"),t(e,"mouseout"),this._touchMoved||t(e,"click"),n=!1,this._touchMoved=!1)},o._mouseInit=function(){var t=this;t.element.hasClass("touch-punch")&&t.element.on({touchstart:e.proxy(t,"_touchStart"),touchmove:e.proxy(t,"_touchMove"),touchend:e.proxy(t,"_touchEnd")}),r.call(t)},o._mouseDestroy=function(){var t=this;t.element.hasClass("touch-punch")&&t.element.off({touchstart:e.proxy(t,"_touchStart"),touchmove:e.proxy(t,"_touchMove"),touchend:e.proxy(t,"_touchEnd")}),s.call(t)}}}(jQuery),e.fn.elfinder=function(t,n){return"instance"===t?this.getElFinder():this.each(function(){var a,o="string"==typeof t?t:"",r="function"==typeof n?n:void 0;if(this.elfinder)switch(o){case"close":case"hide":this.elfinder.hide();break;case"open":case"show":this.elfinder.show();break;case"destroy":this.elfinder.destroy();break;case"reload":case"restart":this.elfinder&&(a=this.elfinder.options,r=this.elfinder.bootCallback,this.elfinder.destroy(),new i(this,e.extend(!0,a,e.isPlainObject(n)?n:{}),r))}else e.isPlainObject(t)&&new i(this,t,r)})},e.fn.getElFinder=function(){var e;return this.each(function(){if(this.elfinder)return e=this.elfinder,!1}),e},e.fn.elfUiWidgetInstance=function(e){try{return this[e]("instance")}catch(t){var n=this.data("ui-"+e);return n&&"object"==typeof n&&n.widgetFullName==="ui-"+e?n:null}},e.fn.scrollRight||e.fn.extend({scrollRight:function(e){var t=this.get(0);return void 0===e?Math.max(0,t.scrollWidth-(t.scrollLeft+t.clientWidth)):this.scrollLeft(t.scrollWidth-t.clientWidth-e)}}),e.fn.scrollBottom||e.fn.extend({scrollBottom:function(e){var t=this.get(0);return void 0===e?Math.max(0,t.scrollHeight-(t.scrollTop+t.clientHeight)):this.scrollTop(t.scrollHeight-t.clientHeight-e)}}),i.prototype.mimeTypes={"application/x-executable":"exe","application/x-jar":"jar","application/x-gzip":"gz","application/x-bzip2":"tbz","application/x-rar":"rar","text/x-php":"php","text/javascript":"js","application/rtfd":"rtfd","text/x-python":"py","text/x-ruby":"rb","text/x-shellscript":"sh","text/x-perl":"pl","text/xml":"xml","text/x-csrc":"c","text/x-chdr":"h","text/x-c++src":"cpp","text/x-c++hdr":"hh","text/x-markdown":"md","text/x-yaml":"yml","image/x-ms-bmp":"bmp","image/x-targa":"tga","image/xbm":"xbm","image/pxm":"pxm","audio/wav":"wav","video/x-dv":"dv","video/x-ms-wmv":"wm","video/ogg":"ogm","video/MP2T":"m2ts","application/x-mpegURL":"m3u8","application/dash+xml":"mpd","application/andrew-inset":"ez","application/applixware":"aw","application/atom+xml":"atom","application/atomcat+xml":"atomcat","application/atomsvc+xml":"atomsvc","application/ccxml+xml":"ccxml","application/cdmi-capability":"cdmia","application/cdmi-container":"cdmic","application/cdmi-domain":"cdmid","application/cdmi-object":"cdmio","application/cdmi-queue":"cdmiq","application/cu-seeme":"cu","application/davmount+xml":"davmount","application/docbook+xml":"dbk","application/dssc+der":"dssc","application/dssc+xml":"xdssc","application/ecmascript":"ecma","application/emma+xml":"emma","application/epub+zip":"epub","application/exi":"exi","application/font-tdpfr":"pfr","application/gml+xml":"gml","application/gpx+xml":"gpx","application/gxf":"gxf","application/hyperstudio":"stk","application/inkml+xml":"ink","application/ipfix":"ipfix","application/java-serialized-object":"ser","application/java-vm":"class","application/json":"json","application/jsonml+json":"jsonml","application/lost+xml":"lostxml","application/mac-binhex40":"hqx","application/mac-compactpro":"cpt","application/mads+xml":"mads","application/marc":"mrc","application/marcxml+xml":"mrcx","application/mathematica":"ma","application/mathml+xml":"mathml","application/mbox":"mbox","application/mediaservercontrol+xml":"mscml","application/metalink+xml":"metalink","application/metalink4+xml":"meta4","application/mets+xml":"mets","application/mods+xml":"mods","application/mp21":"m21","application/mp4":"mp4s","application/msword":"doc","application/mxf":"mxf","application/octet-stream":"bin","application/oda":"oda","application/oebps-package+xml":"opf","application/ogg":"ogx","application/omdoc+xml":"omdoc","application/onenote":"onetoc","application/oxps":"oxps","application/patch-ops-error+xml":"xer","application/pdf":"pdf","application/pgp-encrypted":"pgp","application/pgp-signature":"asc","application/pics-rules":"prf","application/pkcs10":"p10","application/pkcs7-mime":"p7m","application/pkcs7-signature":"p7s","application/pkcs8":"p8","application/pkix-attr-cert":"ac","application/pkix-cert":"cer","application/pkix-crl":"crl","application/pkix-pkipath":"pkipath","application/pkixcmp":"pki","application/pls+xml":"pls","application/postscript":"ai","application/prs.cww":"cww","application/pskc+xml":"pskcxml","application/rdf+xml":"rdf","application/reginfo+xml":"rif","application/relax-ng-compact-syntax":"rnc","application/resource-lists+xml":"rl","application/resource-lists-diff+xml":"rld","application/rls-services+xml":"rs","application/rpki-ghostbusters":"gbr","application/rpki-manifest":"mft","application/rpki-roa":"roa","application/rsd+xml":"rsd","application/rss+xml":"rss","application/rtf":"rtf","application/sbml+xml":"sbml","application/scvp-cv-request":"scq","application/scvp-cv-response":"scs","application/scvp-vp-request":"spq","application/scvp-vp-response":"spp","application/sdp":"sdp","application/set-payment-initiation":"setpay","application/set-registration-initiation":"setreg","application/shf+xml":"shf","application/smil+xml":"smi","application/sparql-query":"rq","application/sparql-results+xml":"srx","application/srgs":"gram","application/srgs+xml":"grxml","application/sru+xml":"sru","application/ssdl+xml":"ssdl","application/ssml+xml":"ssml","application/tei+xml":"tei","application/thraud+xml":"tfi","application/timestamped-data":"tsd","application/vnd.3gpp.pic-bw-large":"plb","application/vnd.3gpp.pic-bw-small":"psb","application/vnd.3gpp.pic-bw-var":"pvb","application/vnd.3gpp2.tcap":"tcap","application/vnd.3m.post-it-notes":"pwn","application/vnd.accpac.simply.aso":"aso","application/vnd.accpac.simply.imp":"imp","application/vnd.acucobol":"acu","application/vnd.acucorp":"atc","application/vnd.adobe.air-application-installer-package+zip":"air","application/vnd.adobe.formscentral.fcdt":"fcdt","application/vnd.adobe.fxp":"fxp","application/vnd.adobe.xdp+xml":"xdp","application/vnd.adobe.xfdf":"xfdf","application/vnd.ahead.space":"ahead","application/vnd.airzip.filesecure.azf":"azf","application/vnd.airzip.filesecure.azs":"azs","application/vnd.amazon.ebook":"azw","application/vnd.americandynamics.acc":"acc","application/vnd.amiga.ami":"ami","application/vnd.android.package-archive":"apk","application/vnd.anser-web-certificate-issue-initiation":"cii","application/vnd.anser-web-funds-transfer-initiation":"fti","application/vnd.antix.game-component":"atx","application/vnd.apple.installer+xml":"mpkg","application/vnd.aristanetworks.swi":"swi","application/vnd.astraea-software.iota":"iota","application/vnd.audiograph":"aep","application/vnd.blueice.multipass":"mpm","application/vnd.bmi":"bmi","application/vnd.businessobjects":"rep","application/vnd.chemdraw+xml":"cdxml","application/vnd.chipnuts.karaoke-mmd":"mmd","application/vnd.cinderella":"cdy","application/vnd.claymore":"cla","application/vnd.cloanto.rp9":"rp9","application/vnd.clonk.c4group":"c4g","application/vnd.cluetrust.cartomobile-config":"c11amc","application/vnd.cluetrust.cartomobile-config-pkg":"c11amz","application/vnd.commonspace":"csp","application/vnd.contact.cmsg":"cdbcmsg","application/vnd.cosmocaller":"cmc","application/vnd.crick.clicker":"clkx","application/vnd.crick.clicker.keyboard":"clkk","application/vnd.crick.clicker.palette":"clkp","application/vnd.crick.clicker.template":"clkt","application/vnd.crick.clicker.wordbank":"clkw","application/vnd.criticaltools.wbs+xml":"wbs","application/vnd.ctc-posml":"pml","application/vnd.cups-ppd":"ppd","application/vnd.curl.car":"car","application/vnd.curl.pcurl":"pcurl","application/vnd.dart":"dart","application/vnd.data-vision.rdz":"rdz","application/vnd.dece.data":"uvf","application/vnd.dece.ttml+xml":"uvt","application/vnd.dece.unspecified":"uvx","application/vnd.dece.zip":"uvz","application/vnd.denovo.fcselayout-link":"fe_launch","application/vnd.dna":"dna","application/vnd.dolby.mlp":"mlp","application/vnd.dpgraph":"dpg","application/vnd.dreamfactory":"dfac","application/vnd.ds-keypoint":"kpxx","application/vnd.dvb.ait":"ait","application/vnd.dvb.service":"svc","application/vnd.dynageo":"geo","application/vnd.ecowin.chart":"mag","application/vnd.enliven":"nml","application/vnd.epson.esf":"esf","application/vnd.epson.msf":"msf","application/vnd.epson.quickanime":"qam","application/vnd.epson.salt":"slt","application/vnd.epson.ssf":"ssf","application/vnd.eszigno3+xml":"es3","application/vnd.ezpix-album":"ez2","application/vnd.ezpix-package":"ez3","application/vnd.fdf":"fdf","application/vnd.fdsn.mseed":"mseed","application/vnd.fdsn.seed":"seed","application/vnd.flographit":"gph","application/vnd.fluxtime.clip":"ftc","application/vnd.framemaker":"fm","application/vnd.frogans.fnc":"fnc","application/vnd.frogans.ltf":"ltf","application/vnd.fsc.weblaunch":"fsc","application/vnd.fujitsu.oasys":"oas","application/vnd.fujitsu.oasys2":"oa2","application/vnd.fujitsu.oasys3":"oa3","application/vnd.fujitsu.oasysgp":"fg5","application/vnd.fujitsu.oasysprs":"bh2","application/vnd.fujixerox.ddd":"ddd","application/vnd.fujixerox.docuworks":"xdw","application/vnd.fujixerox.docuworks.binder":"xbd","application/vnd.fuzzysheet":"fzs","application/vnd.genomatix.tuxedo":"txd","application/vnd.geogebra.file":"ggb","application/vnd.geogebra.tool":"ggt","application/vnd.geometry-explorer":"gex","application/vnd.geonext":"gxt","application/vnd.geoplan":"g2w","application/vnd.geospace":"g3w","application/vnd.gmx":"gmx","application/vnd.google-earth.kml+xml":"kml","application/vnd.google-earth.kmz":"kmz","application/vnd.grafeq":"gqf","application/vnd.groove-account":"gac","application/vnd.groove-help":"ghf","application/vnd.groove-identity-message":"gim","application/vnd.groove-injector":"grv","application/vnd.groove-tool-message":"gtm","application/vnd.groove-tool-template":"tpl","application/vnd.groove-vcard":"vcg","application/vnd.hal+xml":"hal","application/vnd.handheld-entertainment+xml":"zmm","application/vnd.hbci":"hbci","application/vnd.hhe.lesson-player":"les","application/vnd.hp-hpgl":"hpgl","application/vnd.hp-hpid":"hpid","application/vnd.hp-hps":"hps","application/vnd.hp-jlyt":"jlt","application/vnd.hp-pcl":"pcl","application/vnd.hp-pclxl":"pclxl","application/vnd.hydrostatix.sof-data":"sfd-hdstx","application/vnd.ibm.minipay":"mpy","application/vnd.ibm.modcap":"afp","application/vnd.ibm.rights-management":"irm","application/vnd.ibm.secure-container":"sc","application/vnd.iccprofile":"icc","application/vnd.igloader":"igl","application/vnd.immervision-ivp":"ivp","application/vnd.immervision-ivu":"ivu","application/vnd.insors.igm":"igm","application/vnd.intercon.formnet":"xpw","application/vnd.intergeo":"i2g","application/vnd.intu.qbo":"qbo","application/vnd.intu.qfx":"qfx","application/vnd.ipunplugged.rcprofile":"rcprofile","application/vnd.irepository.package+xml":"irp","application/vnd.is-xpr":"xpr","application/vnd.isac.fcs":"fcs","application/vnd.jam":"jam","application/vnd.jcp.javame.midlet-rms":"rms","application/vnd.jisp":"jisp","application/vnd.joost.joda-archive":"joda","application/vnd.kahootz":"ktz","application/vnd.kde.karbon":"karbon","application/vnd.kde.kchart":"chrt","application/vnd.kde.kformula":"kfo","application/vnd.kde.kivio":"flw","application/vnd.kde.kontour":"kon","application/vnd.kde.kpresenter":"kpr","application/vnd.kde.kspread":"ksp","application/vnd.kde.kword":"kwd","application/vnd.kenameaapp":"htke","application/vnd.kidspiration":"kia","application/vnd.kinar":"kne","application/vnd.koan":"skp","application/vnd.kodak-descriptor":"sse","application/vnd.las.las+xml":"lasxml","application/vnd.llamagraphics.life-balance.desktop":"lbd","application/vnd.llamagraphics.life-balance.exchange+xml":"lbe","application/vnd.lotus-1-2-3":123,"application/vnd.lotus-approach":"apr","application/vnd.lotus-freelance":"pre","application/vnd.lotus-notes":"nsf","application/vnd.lotus-organizer":"org","application/vnd.lotus-screencam":"scm","application/vnd.lotus-wordpro":"lwp","application/vnd.macports.portpkg":"portpkg","application/vnd.mcd":"mcd","application/vnd.medcalcdata":"mc1","application/vnd.mediastation.cdkey":"cdkey","application/vnd.mfer":"mwf","application/vnd.mfmp":"mfm","application/vnd.micrografx.flo":"flo","application/vnd.micrografx.igx":"igx","application/vnd.mif":"mif","application/vnd.mobius.daf":"daf","application/vnd.mobius.dis":"dis","application/vnd.mobius.mbk":"mbk","application/vnd.mobius.mqy":"mqy","application/vnd.mobius.msl":"msl","application/vnd.mobius.plc":"plc","application/vnd.mobius.txf":"txf","application/vnd.mophun.application":"mpn","application/vnd.mophun.certificate":"mpc","application/vnd.mozilla.xul+xml":"xul","application/vnd.ms-artgalry":"cil","application/vnd.ms-cab-compressed":"cab","application/vnd.ms-excel":"xls","application/vnd.ms-excel.addin.macroenabled.12":"xlam","application/vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","application/vnd.ms-excel.sheet.macroenabled.12":"xlsm","application/vnd.ms-excel.template.macroenabled.12":"xltm","application/vnd.ms-fontobject":"eot","application/vnd.ms-htmlhelp":"chm","application/vnd.ms-ims":"ims","application/vnd.ms-lrm":"lrm","application/vnd.ms-officetheme":"thmx","application/vnd.ms-pki.seccat":"cat","application/vnd.ms-pki.stl":"stl","application/vnd.ms-powerpoint":"ppt","application/vnd.ms-powerpoint.addin.macroenabled.12":"ppam","application/vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","application/vnd.ms-powerpoint.slide.macroenabled.12":"sldm","application/vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","application/vnd.ms-powerpoint.template.macroenabled.12":"potm","application/vnd.ms-project":"mpp","application/vnd.ms-word.document.macroenabled.12":"docm","application/vnd.ms-word.template.macroenabled.12":"dotm","application/vnd.ms-works":"wps","application/vnd.ms-wpl":"wpl","application/vnd.ms-xpsdocument":"xps","application/vnd.mseq":"mseq","application/vnd.musician":"mus","application/vnd.muvee.style":"msty","application/vnd.mynfc":"taglet","application/vnd.neurolanguage.nlu":"nlu","application/vnd.nitf":"ntf","application/vnd.noblenet-directory":"nnd","application/vnd.noblenet-sealer":"nns","application/vnd.noblenet-web":"nnw","application/vnd.nokia.n-gage.data":"ngdat","application/vnd.nokia.n-gage.symbian.install":"n-gage","application/vnd.nokia.radio-preset":"rpst","application/vnd.nokia.radio-presets":"rpss","application/vnd.novadigm.edm":"edm","application/vnd.novadigm.edx":"edx","application/vnd.novadigm.ext":"ext","application/vnd.oasis.opendocument.chart":"odc","application/vnd.oasis.opendocument.chart-template":"otc","application/vnd.oasis.opendocument.database":"odb","application/vnd.oasis.opendocument.formula":"odf","application/vnd.oasis.opendocument.formula-template":"odft","application/vnd.oasis.opendocument.graphics":"odg","application/vnd.oasis.opendocument.graphics-template":"otg","application/vnd.oasis.opendocument.image":"odi","application/vnd.oasis.opendocument.image-template":"oti","application/vnd.oasis.opendocument.presentation":"odp","application/vnd.oasis.opendocument.presentation-template":"otp","application/vnd.oasis.opendocument.spreadsheet":"ods","application/vnd.oasis.opendocument.spreadsheet-template":"ots","application/vnd.oasis.opendocument.text":"odt","application/vnd.oasis.opendocument.text-master":"odm","application/vnd.oasis.opendocument.text-template":"ott","application/vnd.oasis.opendocument.text-web":"oth","application/vnd.olpc-sugar":"xo","application/vnd.oma.dd2+xml":"dd2","application/vnd.openofficeorg.extension":"oxt","application/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","application/vnd.openxmlformats-officedocument.presentationml.slide":"sldx","application/vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","application/vnd.openxmlformats-officedocument.presentationml.template":"potx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application/vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","application/vnd.osgeo.mapguide.package":"mgp","application/vnd.osgi.dp":"dp","application/vnd.osgi.subsystem":"esa","application/vnd.palm":"pdb","application/vnd.pawaafile":"paw","application/vnd.pg.format":"str","application/vnd.pg.osasli":"ei6","application/vnd.picsel":"efif","application/vnd.pmi.widget":"wg","application/vnd.pocketlearn":"plf","application/vnd.powerbuilder6":"pbd","application/vnd.previewsystems.box":"box","application/vnd.proteus.magazine":"mgz","application/vnd.publishare-delta-tree":"qps","application/vnd.pvi.ptid1":"ptid","application/vnd.quark.quarkxpress":"qxd","application/vnd.realvnc.bed":"bed","application/vnd.recordare.musicxml":"mxl","application/vnd.recordare.musicxml+xml":"musicxml","application/vnd.rig.cryptonote":"cryptonote","application/vnd.rim.cod":"cod","application/vnd.rn-realmedia":"rm","application/vnd.rn-realmedia-vbr":"rmvb","application/vnd.route66.link66+xml":"link66","application/vnd.sailingtracker.track":"st","application/vnd.seemail":"see","application/vnd.sema":"sema","application/vnd.semd":"semd","application/vnd.semf":"semf","application/vnd.shana.informed.formdata":"ifm","application/vnd.shana.informed.formtemplate":"itp","application/vnd.shana.informed.interchange":"iif","application/vnd.shana.informed.package":"ipk","application/vnd.simtech-mindmapper":"twd","application/vnd.smaf":"mmf","application/vnd.smart.teacher":"teacher","application/vnd.solent.sdkm+xml":"sdkm","application/vnd.spotfire.dxp":"dxp","application/vnd.spotfire.sfs":"sfs","application/vnd.stardivision.calc":"sdc","application/vnd.stardivision.draw":"sda","application/vnd.stardivision.impress":"sdd","application/vnd.stardivision.math":"smf","application/vnd.stardivision.writer":"sdw","application/vnd.stardivision.writer-global":"sgl","application/vnd.stepmania.package":"smzip","application/vnd.stepmania.stepchart":"sm","application/vnd.sun.xml.calc":"sxc","application/vnd.sun.xml.calc.template":"stc","application/vnd.sun.xml.draw":"sxd","application/vnd.sun.xml.draw.template":"std","application/vnd.sun.xml.impress":"sxi","application/vnd.sun.xml.impress.template":"sti","application/vnd.sun.xml.math":"sxm","application/vnd.sun.xml.writer":"sxw","application/vnd.sun.xml.writer.global":"sxg","application/vnd.sun.xml.writer.template":"stw","application/vnd.sus-calendar":"sus","application/vnd.svd":"svd","application/vnd.symbian.install":"sis","application/vnd.syncml+xml":"xsm","application/vnd.syncml.dm+wbxml":"bdm","application/vnd.syncml.dm+xml":"xdm","application/vnd.tao.intent-module-archive":"tao","application/vnd.tcpdump.pcap":"pcap","application/vnd.tmobile-livetv":"tmo","application/vnd.trid.tpt":"tpt","application/vnd.triscape.mxs":"mxs","application/vnd.trueapp":"tra","application/vnd.ufdl":"ufd","application/vnd.uiq.theme":"utz","application/vnd.umajin":"umj","application/vnd.unity":"unityweb","application/vnd.uoml+xml":"uoml","application/vnd.vcx":"vcx","application/vnd.visio":"vsd","application/vnd.visionary":"vis","application/vnd.vsf":"vsf","application/vnd.wap.wbxml":"wbxml","application/vnd.wap.wmlc":"wmlc","application/vnd.wap.wmlscriptc":"wmlsc","application/vnd.webturbo":"wtb","application/vnd.wolfram.player":"nbp","application/vnd.wordperfect":"wpd","application/vnd.wqd":"wqd","application/vnd.wt.stf":"stf","application/vnd.xara":"xar","application/vnd.xfdl":"xfdl","application/vnd.yamaha.hv-dic":"hvd","application/vnd.yamaha.hv-script":"hvs","application/vnd.yamaha.hv-voice":"hvp","application/vnd.yamaha.openscoreformat":"osf","application/vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","application/vnd.yamaha.smaf-audio":"saf","application/vnd.yamaha.smaf-phrase":"spf","application/vnd.yellowriver-custom-menu":"cmp","application/vnd.zul":"zir","application/vnd.zzazz.deck+xml":"zaz","application/voicexml+xml":"vxml","application/widget":"wgt","application/winhlp":"hlp","application/wsdl+xml":"wsdl","application/wspolicy+xml":"wspolicy","application/x-7z-compressed":"7z","application/x-abiword":"abw","application/x-ace-compressed":"ace","application/x-apple-diskimage":"dmg","application/x-authorware-bin":"aab","application/x-authorware-map":"aam","application/x-authorware-seg":"aas","application/x-bcpio":"bcpio","application/x-bittorrent":"torrent","application/x-blorb":"blb","application/x-bzip":"bz","application/x-cbr":"cbr","application/x-cdlink":"vcd","application/x-cfs-compressed":"cfs","application/x-chat":"chat","application/x-chess-pgn":"pgn","application/x-conference":"nsc","application/x-cpio":"cpio","application/x-csh":"csh","application/x-debian-package":"deb","application/x-dgc-compressed":"dgc","application/x-director":"dir","application/x-doom":"wad","application/x-dtbncx+xml":"ncx","application/x-dtbook+xml":"dtb","application/x-dtbresource+xml":"res","application/x-dvi":"dvi","application/x-envoy":"evy","application/x-eva":"eva","application/x-font-bdf":"bdf","application/x-font-ghostscript":"gsf","application/x-font-linux-psf":"psf","application/x-font-pcf":"pcf","application/x-font-snf":"snf","application/x-font-type1":"pfa","application/x-freearc":"arc","application/x-futuresplash":"spl","application/x-gca-compressed":"gca","application/x-glulx":"ulx","application/x-gnumeric":"gnumeric","application/x-gramps-xml":"gramps","application/x-gtar":"gtar","application/x-hdf":"hdf","application/x-install-instructions":"install","application/x-iso9660-image":"iso","application/x-java-jnlp-file":"jnlp","application/x-latex":"latex","application/x-lzh-compressed":"lzh","application/x-mie":"mie","application/x-mobipocket-ebook":"prc","application/x-ms-application":"application","application/x-ms-shortcut":"lnk","application/x-ms-wmd":"wmd","application/x-ms-wmz":"wmz","application/x-ms-xbap":"xbap","application/x-msaccess":"mdb","application/x-msbinder":"obd","application/x-mscardfile":"crd","application/x-msclip":"clp","application/x-msdownload":"dll","application/x-msmediaview":"mvb","application/x-msmetafile":"wmf","application/x-msmoney":"mny","application/x-mspublisher":"pub","application/x-msschedule":"scd","application/x-msterminal":"trm","application/x-mswrite":"wri","application/x-netcdf":"nc","application/x-nzb":"nzb","application/x-pkcs12":"p12","application/x-pkcs7-certificates":"p7b","application/x-pkcs7-certreqresp":"p7r","application/x-research-info-systems":"ris","application/x-shar":"shar","application/x-shockwave-flash":"swf","application/x-silverlight-app":"xap","application/x-sql":"sql","application/x-stuffit":"sit","application/x-stuffitx":"sitx","application/x-subrip":"srt","application/x-sv4cpio":"sv4cpio","application/x-sv4crc":"sv4crc","application/x-t3vm-image":"t3","application/x-tads":"gam","application/x-tar":"tar","application/x-tcl":"tcl","application/x-tex":"tex","application/x-tex-tfm":"tfm","application/x-texinfo":"texinfo","application/x-tgif":"obj","application/x-ustar":"ustar","application/x-wais-source":"src","application/x-x509-ca-cert":"der","application/x-xfig":"fig","application/x-xliff+xml":"xlf","application/x-xpinstall":"xpi","application/x-xz":"xz","application/x-zmachine":"z1","application/xaml+xml":"xaml","application/xcap-diff+xml":"xdf","application/xenc+xml":"xenc","application/xhtml+xml":"xhtml","application/xml":"xsl","application/xml-dtd":"dtd","application/xop+xml":"xop","application/xproc+xml":"xpl","application/xslt+xml":"xslt","application/xspf+xml":"xspf","application/xv+xml":"mxml","application/yang":"yang","application/yin+xml":"yin","application/zip":"zip","audio/adpcm":"adp","audio/basic":"au","audio/midi":"mid","audio/mp4":"m4a","audio/mpeg":"mpga","audio/ogg":"oga","audio/s3m":"s3m","audio/silk":"sil","audio/vnd.dece.audio":"uva","audio/vnd.digital-winds":"eol","audio/vnd.dra":"dra","audio/vnd.dts":"dts","audio/vnd.dts.hd":"dtshd","audio/vnd.lucent.voice":"lvp","audio/vnd.ms-playready.media.pya":"pya","audio/vnd.nuera.ecelp4800":"ecelp4800","audio/vnd.nuera.ecelp7470":"ecelp7470","audio/vnd.nuera.ecelp9600":"ecelp9600","audio/vnd.rip":"rip","audio/webm":"weba","audio/x-aac":"aac","audio/x-aiff":"aif","audio/x-caf":"caf","audio/x-flac":"flac","audio/x-matroska":"mka","audio/x-mpegurl":"m3u","audio/x-ms-wax":"wax","audio/x-ms-wma":"wma","audio/x-pn-realaudio":"ram","audio/x-pn-realaudio-plugin":"rmp","audio/xm":"xm","chemical/x-cdx":"cdx","chemical/x-cif":"cif","chemical/x-cmdf":"cmdf","chemical/x-cml":"cml","chemical/x-csml":"csml","chemical/x-xyz":"xyz","font/collection":"ttc","font/otf":"otf","font/ttf":"ttf","font/woff":"woff","font/woff2":"woff2","image/cgm":"cgm","image/g3fax":"g3","image/gif":"gif","image/ief":"ief","image/jpeg":"jpeg","image/ktx":"ktx","image/png":"png","image/prs.btif":"btif","image/sgi":"sgi","image/svg+xml":"svg","image/tiff":"tiff","image/vnd.adobe.photoshop":"psd","image/vnd.dece.graphic":"uvi","image/vnd.djvu":"djvu","image/vnd.dvb.subtitle":"sub","image/vnd.dwg":"dwg","image/vnd.dxf":"dxf","image/vnd.fastbidsheet":"fbs","image/vnd.fpx":"fpx","image/vnd.fst":"fst","image/vnd.fujixerox.edmics-mmr":"mmr","image/vnd.fujixerox.edmics-rlc":"rlc","image/vnd.ms-modi":"mdi","image/vnd.ms-photo":"wdp","image/vnd.net-fpx":"npx","image/vnd.wap.wbmp":"wbmp","image/vnd.xiff":"xif","image/webp":"webp","image/x-3ds":"3ds","image/x-cmu-raster":"ras","image/x-cmx":"cmx","image/x-freehand":"fh","image/x-icon":"ico","image/x-mrsid-image":"sid","image/x-pcx":"pcx","image/x-pict":"pic","image/x-portable-anymap":"pnm","image/x-portable-bitmap":"pbm","image/x-portable-graymap":"pgm","image/x-portable-pixmap":"ppm","image/x-rgb":"rgb","image/x-xpixmap":"xpm","image/x-xwindowdump":"xwd","message/rfc822":"eml","model/iges":"igs","model/mesh":"msh","model/vnd.collada+xml":"dae","model/vnd.dwf":"dwf","model/vnd.gdl":"gdl","model/vnd.gtw":"gtw","model/vnd.vtu":"vtu","model/vrml":"wrl","model/x3d+binary":"x3db","model/x3d+vrml":"x3dv","model/x3d+xml":"x3d","text/cache-manifest":"appcache","text/calendar":"ics","text/css":"css","text/csv":"csv","text/html":"html","text/n3":"n3","text/plain":"txt","text/prs.lines.tag":"dsc","text/richtext":"rtx","text/sgml":"sgml","text/tab-separated-values":"tsv","text/troff":"t","text/turtle":"ttl","text/uri-list":"uri","text/vcard":"vcard","text/vnd.curl":"curl","text/vnd.curl.dcurl":"dcurl","text/vnd.curl.mcurl":"mcurl","text/vnd.curl.scurl":"scurl","text/vnd.fly":"fly","text/vnd.fmi.flexstor":"flx","text/vnd.graphviz":"gv","text/vnd.in3d.3dml":"3dml","text/vnd.in3d.spot":"spot","text/vnd.sun.j2me.app-descriptor":"jad","text/vnd.wap.wml":"wml","text/vnd.wap.wmlscript":"wmls","text/x-asm":"s","text/x-c":"cc","text/x-fortran":"f","text/x-java-source":"java","text/x-nfo":"nfo","text/x-opml":"opml","text/x-pascal":"p","text/x-setext":"etx","text/x-sfv":"sfv","text/x-uuencode":"uu","text/x-vcalendar":"vcs","text/x-vcard":"vcf","video/3gpp":"3gp","video/3gpp2":"3g2","video/h261":"h261","video/h263":"h263","video/h264":"h264","video/jpeg":"jpgv","video/jpm":"jpm","video/mj2":"mj2","video/mp4":"mp4","video/mpeg":"mpeg","video/quicktime":"qt","video/vnd.dece.hd":"uvh","video/vnd.dece.mobile":"uvm","video/vnd.dece.pd":"uvp","video/vnd.dece.sd":"uvs","video/vnd.dece.video":"uvv","video/vnd.dvb.file":"dvb","video/vnd.fvt":"fvt","video/vnd.mpegurl":"mxu","video/vnd.ms-playready.media.pyv":"pyv","video/vnd.uvvu.mp4":"uvu","video/vnd.vivo":"viv","video/webm":"webm","video/x-f4v":"f4v","video/x-fli":"fli","video/x-flv":"flv","video/x-m4v":"m4v","video/x-matroska":"mkv","video/x-mng":"mng","video/x-ms-asf":"asf","video/x-ms-vob":"vob","video/x-ms-wmx":"wmx","video/x-ms-wvx":"wvx","video/x-msvideo":"avi","video/x-sgi-movie":"movie","video/x-smv":"smv","x-conference/x-cooltalk":"ice","text/x-sql":"sql","image/x-pixlr-data":"pxd","image/x-adobe-dng":"dng","image/x-sketch":"sketch","image/x-xcf":"xcf","audio/amr":"amr","application/plt":"plt","application/sat":"sat","application/step":"step","text/x-httpd-cgi":"cgi","text/x-asap":"asp","text/x-jsp":"jsp"},i.prototype._options={cdns:{ace:"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1",codemirror:"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.2",ckeditor:"https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.10.0",ckeditor5:"https://cdn.ckeditor.com/ckeditor5/11.1.1",tinymce:"https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.8.3",simplemde:"https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2",fabric16:"https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.7",tui:"https://uicdn.toast.com",hls:"https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.10.1/hls.min.js",dash:"https://cdnjs.cloudflare.com/ajax/libs/dashjs/2.9.1/dash.all.min.js",flv:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.4.2/flv.min.js",prettify:"https://cdn.jsdelivr.net/gh/google/code-prettify@453bd5f51e61245339b738b1bbdd42d7848722ba/loader/run_prettify.js",psd:"https://cdnjs.cloudflare.com/ajax/libs/psd.js/3.2.0/psd.min.js",rar:"https://cdn.jsdelivr.net/gh/nao-pon/rar.js@6cef13ec66dd67992fc7f3ea22f132d770ebaf8b/rar.min.js",zlibUnzip:"https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/unzip.min.js",zlibGunzip:"https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/gunzip.min.js",marked:"https://cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js",sparkmd5:"https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.0/spark-md5.min.js",jssha:"https://cdnjs.cloudflare.com/ajax/libs/jsSHA/2.3.1/sha.js",amr:"https://cdn.jsdelivr.net/gh/yxl/opencore-amr-js@dcf3d2b5f384a1d9ded2a54e4c137a81747b222b/js/amrnb.js"},url:"",requestType:"get",cors:null,requestMaxConn:3,transport:{},urlUpload:"",dragUploadAllow:"auto",
overwriteUploadConfirm:!0,uploadMaxChunkSize:10485760,folderUploadExclude:{win:/^(?:desktop\.ini|thumbs\.db)$/i,mac:/^\.ds_store$/i},iframeTimeout:0,customData:{},handlers:{},customHeaders:{},xhrFields:{},lang:"en",baseUrl:"",i18nBaseUrl:"",cssAutoLoad:!0,themes:{},theme:null,maxErrorDialogs:5,cssClass:"",commands:["*"],commandsOptions:{getfile:{onlyURL:!1,multiple:!1,folders:!1,oncomplete:"",onerror:"",getPath:!0,getImgSize:!1},open:{method:"post",into:"window",selectAction:"open"},opennew:{url:"",useOriginQuery:!0},upload:{ui:"button"},download:{maxRequests:10,minFilesZipdl:2},quicklook:{autoplay:!0,width:450,height:300,mediaControlsList:"",pdfToolbar:!0,textMaxlen:2e3,contain:!1,docked:0,dockHeight:"auto",dockAutoplay:!1,googleMapsApiKey:"",googleMapsOpts:{maps:{},kml:{suppressInfoWindows:!1,preserveViewport:!1}},viewerjs:{url:"",mimes:["application/pdf","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"]},sharecadMimes:[],googleDocsMimes:[],officeOnlineMimes:[],getDimThreshold:2e5,mimeRegexNotEmptyCheck:/^application\/vnd\.google-apps\./},edit:{dialogWidth:void 0,mimes:[],makeTextMimes:["text/plain","text/css","text/html"],useStoredEditor:!1,editorMaximized:!1,editors:[],encodings:["Big5","Big5-HKSCS","Cp437","Cp737","Cp775","Cp850","Cp852","Cp855","Cp857","Cp858","Cp862","Cp866","Cp874","EUC-CN","EUC-JP","EUC-KR","GB18030","ISO-2022-CN","ISO-2022-JP","ISO-2022-KR","ISO-8859-1","ISO-8859-2","ISO-8859-3","ISO-8859-4","ISO-8859-5","ISO-8859-6","ISO-8859-7","ISO-8859-8","ISO-8859-9","ISO-8859-13","ISO-8859-15","KOI8-R","KOI8-U","Shift-JIS","Windows-1250","Windows-1251","Windows-1252","Windows-1253","Windows-1254","Windows-1257"],extraOptions:{tuiImgEditOpts:{iconsPath:void 0,theme:{}},pixo:{apikey:""},creativeCloudApiKey:"",managerUrl:null,ckeditor5Mode:"balloon",onlineConvert:{maxSize:100,showLink:!0}}},search:{incsearch:{enable:!0,minlen:1,wait:500},searchTypes:{SearchMime:{name:"btnMime",title:"searchMime"}}},info:{nullUrlDirLinkSelf:!0,hideItems:[],showHashMaxsize:104857600,showHashAlgorisms:["md5","sha256"],custom:{}},mkdir:{intoNewFolderToolbtn:!1},resize:{grid8px:"disable",presetSize:[[320,240],[400,400],[640,480],[800,600]],getDimThreshold:204800,dimSubImgSize:307200},rm:{quickTrash:!0,infoCheckWait:10,toTrashMaxItems:1e3},help:{view:["about","shortcuts","help","integrations","debug"],helpSource:""},preference:{width:600,height:400,categories:null,prefs:null,langs:null,selectActions:["open","edit/download","resize/edit/download","download","quicklook"]}},bootCallback:null,getFileCallback:null,defaultView:"icons",startPathHash:"",sound:!0,ui:["toolbar","tree","path","stat"],uiOptions:{toolbar:[["home","back","forward","up","reload"],["netmount"],["mkdir","mkfile","upload"],["open","download","getfile"],["undo","redo"],["copy","cut","paste","rm","empty","hide"],["duplicate","rename","edit","resize","chmod"],["selectall","selectnone","selectinvert"],["quicklook","info"],["extract","archive"],["search"],["view","sort"],["preference","help"],["fullscreen"]],toolbarExtra:{displayTextLabel:!1,labelExcludeUA:["Mobile"],autoHideUA:["Mobile"],defaultHides:["home","reload"],showPreferenceButton:"none",preferenceInContextmenu:!0},tree:{openRootOnLoad:!0,openCwdOnOpen:!0,syncTree:!0,subTreeMax:100,subdirsMaxConn:2,subdirsAtOnce:5,durations:{slideUpDown:"fast",autoScroll:"fast"}},navbar:{minWidth:150,maxWidth:500,autoHideUA:[]},navdock:{disabled:!1,initMaxHeight:"50%",maxHeight:"90%"},cwd:{oldSchool:!1,showSelectCheckboxUA:["Touch"],listView:{columns:["perm","date","size","kind"],columnsCustomName:{},fixedHeader:!0},iconsView:{size:0,sizeMax:3,sizeNames:{0:"viewSmall",1:"viewMedium",2:"viewLarge",3:"viewExtraLarge"}}},path:{toWorkzoneWithoutNavbar:!0},dialog:{focusOnMouseOver:!0},toast:{animate:{showMethod:"fadeIn",showDuration:300,showEasing:"swing",timeOut:3e3,hideMethod:"fadeOut",hideDuration:1500,hideEasing:"swing"}}},dispInlineRegex:"^(?:(?:image|video|audio)|application/(?:x-mpegURL|dash+xml)|(?:text/plain|application/pdf)$)",onlyMimes:[],sortRules:{},sortType:"name",sortOrder:"asc",sortStickFolders:!0,sortAlsoTreeview:!1,clientFormatDate:!0,UTCDate:!1,dateFormat:"",fancyDateFormat:"",fileModeStyle:"both",width:"auto",height:400,heightBase:null,resizable:!0,notifyDelay:500,notifyDialog:{position:{},width:null},dialogContained:!1,allowShortcuts:!0,rememberLastDir:!0,reloadClearHistory:!1,useBrowserHistory:!0,showFiles:50,showThreshold:50,validName:!1,fileFilter:!1,backupSuffix:"~",sync:0,syncStart:!0,loadTmbs:5,cookie:{expires:30,domain:"",path:"/",secure:!1},contextmenu:{navbar:["open","opennew","download","|","upload","mkdir","|","copy","cut","paste","duplicate","|","rm","empty","hide","|","rename","|","archive","|","places","info","chmod","netunmount"],cwd:["undo","redo","|","back","up","reload","|","upload","mkdir","mkfile","paste","|","empty","hide","|","view","sort","selectall","colwidth","|","places","info","chmod","netunmount","|","fullscreen","|","preference"],files:["getfile","|","open","opennew","download","opendir","quicklook","|","upload","mkdir","|","copy","cut","paste","duplicate","|","rm","empty","hide","|","rename","edit","resize","|","archive","extract","|","selectall","selectinvert","|","places","info","chmod","netunmount"]},enableAlways:!1,enableByMouseOver:!0,windowCloseConfirm:["hasNotifyDialog","editingFile"],rawStringDecoder:"object"==typeof Encoding&&e.isFunction(Encoding.convert)?function(e){return Encoding.convert(e,{to:"UNICODE",type:"string"})}:null,debug:["error","warning","event-destroy"]},i.prototype._options.commandsOptions.netmount={ftp:{name:"FTP",inputs:{host:e('<input type="text"/>'),port:e('<input type="number" placeholder="21" class="elfinder-input-optional"/>'),path:e('<input type="text" value="/"/>'),user:e('<input type="text"/>'),pass:e('<input type="password" autocomplete="new-password"/>'),FTPS:e('<input type="checkbox" value="1" title="File Transfer Protocol over SSL/TLS"/>'),encoding:e('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>'),locale:e('<input type="text" placeholder="Optional" class="elfinder-input-optional"/>')}},dropbox2:i.prototype.makeNetmountOptionOauth("dropbox2","Dropbox","Dropbox",{noOffline:!0,root:"/",pathI18n:"path",integrate:{title:"Dropbox.com",link:"https://www.dropbox.com"}}),googledrive:i.prototype.makeNetmountOptionOauth("googledrive","Google Drive","Google",{integrate:{title:"Google Drive",link:"https://www.google.com/drive/"}}),onedrive:i.prototype.makeNetmountOptionOauth("onedrive","One Drive","OneDrive",{integrate:{title:"Microsoft OneDrive",link:"https://onedrive.live.com"}}),box:i.prototype.makeNetmountOptionOauth("box","Box","Box",{noOffline:!0,integrate:{title:"Box.com",link:"https://www.box.com"}})},i.prototype.history=function(t){var n,i=this,a=!0,o=[],r=function(){o=[t.cwd().hash],n=0,a=!0},s=t.options.useBrowserHistory&&window.history&&window.history.pushState?window.history:null,l=function(s){return s&&i.canForward()||!s&&i.canBack()?(a=!1,t.exec("open",o[s?++n:--n]).fail(r)):e.Deferred().reject()},c=function(e){!s||s.state&&s.state.thash===e||s.pushState({thash:e},null,location.pathname+location.search+(e?"#elf_"+e:""))};this.canBack=function(){return n>0},this.canForward=function(){return n<o.length-1},this.back=l,this.forward=function(){return l(!0)},t.bind("init",function(){s&&!s.state&&c(t.startDir())}).open(function(){var e=o.length,i=t.cwd().hash;a&&(n>=0&&e>n+1&&o.splice(n+1),o[o.length-1]!=i&&o.push(i),n=o.length-1),a=!0,c(i)}).reload(t.options.reloadClearHistory&&r)},i.prototype.command=function(t){this.fm=t,this.name="",this.dialogClass="",this.className="",this.title="",this.linkedCmds=[],this.state=-1,this.alwaysEnabled=!1,this.noChangeDirOnRemovedCwd=!1,this._disabled=!1,this.disableOnSearch=!1,this.updateOnSelect=!0,this.syncTitleOnChange=!1,this.keepContextmenu=!1,this._handlers={enable:function(){this.update(void 0,this.value)},disable:function(){this.update(-1,this.value)},"open reload load sync":function(){this._disabled=!(this.alwaysEnabled||this.fm.isCommandEnabled(this.name)),this.update(void 0,this.value),this.change()}},this.handlers={},this.shortcuts=[],this.options={ui:"button"},this.listeners=[],this.setup=function(t,n){var i,a,o,r=this,s=this.fm,l=function(t){var n=t.callback||function(e){s.exec(r.name,void 0,{_userAction:!0,_currentType:"shortcut"})};t.callback=function(t){var i,a={};r.enabled()&&(s.searchStatus.state<2?i=s.isCommandEnabled(r.name):(e.each(s.selected(),function(t,n){s.optionsByHashes[n]?a[n]=!0:e.each(s.volOptions,function(e){if(!a[e]&&0===n.indexOf(e))return a[e]=!0,!1})}),e.each(a,function(e){if(i=s.isCommandEnabled(r.name,e),!i)return!1})),i&&(r.event=t,n.call(r),delete r.event))}};for(this.name=t,this.title=s.messages["cmd"+t]?s.i18n("cmd"+t):this.extendsCmd&&s.messages["cmd"+this.extendsCmd]?s.i18n("cmd"+this.extendsCmd):t,this.options=Object.assign({},this.options,n),this.listeners=[],this.dialogClass="elfinder-dialog-"+t,n.shortcuts&&("function"==typeof n.shortcuts?o=n.shortcuts(this.fm,this.shortcuts):Array.isArray(n.shortcuts)&&(o=n.shortcuts),this.shortcuts=o||[]),this.updateOnSelect&&(this._handlers.select=function(){this.update(void 0,this.value)}),e.each(Object.assign({},r._handlers,r.handlers),function(t,n){s.bind(t,e.proxy(n,r))}),i=0;i<this.shortcuts.length;i++)a=this.shortcuts[i],l(a),!a.description&&(a.description=this.title),s.shortcut(a);this.disableOnSearch&&s.bind("search searchend",function(){r._disabled="search"===this.type||!(this.alwaysEnabled||s.isCommandEnabled(t)),r.update(void 0,r.value)}),this.init()},this.init=function(){},this.exec=function(t,n){return e.Deferred().reject()},this.getUndo=function(e,t){return!1},this.disabled=function(){return this.state<0},this.enabled=function(){return this.state>-1},this.active=function(){return this.state>0},this.getstate=function(){return-1},this.update=function(e,t){var n=this.state,i=this.value;this._disabled&&0===this.fm.searchStatus?this.state=-1:this.state=void 0!==e?e:this.getstate(),this.value=t,n==this.state&&i==this.value||this.change()},this.change=function(e){var t,n;if("function"==typeof e)this.listeners.push(e);else for(n=0;n<this.listeners.length;n++){t=this.listeners[n];try{t(this.state,this.value)}catch(i){this.fm.debug("error",i)}}return this},this.hashes=function(n){return n?e.grep(Array.isArray(n)?n:[n],function(e){return!!t.file(e)}):t.selected()},this.files=function(t){var n=this.fm;return t?e.map(Array.isArray(t)?t:[t],function(e){return n.file(e)||null}):n.selectedFiles()},this.fmDialog=function(e,t){return t.cssClass?t.cssClass+=" "+this.dialogClass:t.cssClass=this.dialogClass,this.fm.dialog(e,t)}},i.prototype.resources={"class":{hover:"ui-state-hover",active:"ui-state-active",disabled:"ui-state-disabled",draggable:"ui-draggable",droppable:"ui-droppable",adroppable:"elfinder-droppable-active",cwdfile:"elfinder-cwd-file",cwd:"elfinder-cwd",tree:"elfinder-tree",treeroot:"elfinder-navbar-root",navdir:"elfinder-navbar-dir",navdirwrap:"elfinder-navbar-dir-wrapper",navarrow:"elfinder-navbar-arrow",navsubtree:"elfinder-navbar-subtree",navcollapse:"elfinder-navbar-collapsed",navexpand:"elfinder-navbar-expanded",treedir:"elfinder-tree-dir",placedir:"elfinder-place-dir",searchbtn:"elfinder-button-search",editing:"elfinder-to-editing",preventback:"elfinder-prevent-back",tabstab:"ui-state-default ui-tabs-tab ui-corner-top ui-tab",tabsactive:"ui-tabs-active ui-state-active"},tpl:{perms:'<span class="elfinder-perms"/>',lock:'<span class="elfinder-lock"/>',symlink:'<span class="elfinder-symlink"/>',navicon:'<span class="elfinder-nav-icon"/>',navspinner:'<span class="elfinder-spinner elfinder-navbar-spinner"/>',navdir:'<div class="elfinder-navbar-wrapper{root}"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}"><span class="elfinder-navbar-arrow"/><span class="elfinder-navbar-icon" {style}/>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"/></div>',placedir:'<div class="elfinder-navbar-wrapper"><span id="{id}" class="ui-corner-all elfinder-navbar-dir {cssclass}" title="{title}"><span class="elfinder-navbar-arrow"/><span class="elfinder-navbar-icon" {style}/>{symlink}{permissions}{name}</span><div class="elfinder-navbar-subtree" style="display:none"/></div>'},mimes:{text:["application/dash+xml","application/docbook+xml","application/javascript","application/json","application/plt","application/sat","application/sql","application/step","application/vnd.hp-hpgl","application/x-awk","application/x-config","application/x-csh","application/x-empty","application/x-mpegurl","application/x-perl","application/x-php","application/x-web-config","application/xhtml+xml","application/xml","audio/x-mp3-playlist","image/cgm","image/svg+xml","image/vnd.dxf","model/iges"]},mixin:{make:function(){var t,n,i,a,o,r,s,l,c,d,p=this,u=this.fm,h=this.name,f=this.requestCmd||h,m=u.getUI("workzone"),g=this.origin&&"navbar"===this.origin?"tree":"cwd",v="tree"===g,b=v?"navHash2Elm":"cwdHash2Elm",y=!v&&"list"!=u.storage("view"),w=u.selected(),x=this.move||!1,k=m.hasClass("elfinder-cwd-wrapper-empty"),C=function(){requestAnimationFrame(function(){U&&U.trigger("blur")})},z=function(){D.is(":hidden")||D.elfinderoverlay("hide").off("click close",E),i.removeClass("ui-front").css("position","").off("unselect."+u.namespace,C),y?n&&n.css("max-height",""):v||i.css("width","").parent("td").css("overflow","")},T=e.Deferred().fail(function(e){r&&o.attr("class",r),k&&m.addClass("elfinder-cwd-wrapper-empty"),w&&(x&&u.trigger("unlockfiles",{files:w}),u.clipboard([]),u.trigger("selectfiles",{files:w})),e&&u.error(e)}).always(function(){z(),F(),u.enable().unbind("open",q).trigger("resMixinMake")}),A="tmp_"+parseInt(1e5*Math.random()),S=this.data&&this.data.target?this.data.target:v?u.file(w[0]).hash:u.cwd().hash,I=new Date,O={hash:A,phash:S,name:u.uniqueName(this.prefix,S),mime:this.mime,read:!0,write:!0,date:"Today "+I.getHours()+":"+I.getMinutes(),move:x},j=(u.getUI(g).trigger("create."+u.namespace,O),this.data||{}),M=u[b](A),D=u.getUI("overlay"),F=function(){M&&M.length&&(U.off(),M.hide(),u.unselectfiles({files:[A]}).unbind("resize",R),requestAnimationFrame(function(){v?M.closest(".elfinder-navbar-wrapper").remove():M.remove()}))},E=function(e){D.is(":hidden")||i.css("z-index",""),H||(F(),T.reject(),e&&(e.stopPropagation(),e.preventDefault()))},U=e(y?"<textarea/>":'<input type="text"/>').on("keyup text",function(){y?(this.style.height="1px",this.style.height=this.scrollHeight+"px"):t&&(this.style.width=t+"px",this.scrollWidth>t&&(this.style.width=this.scrollWidth+10+"px"))}).on("keydown",function(t){t.stopImmediatePropagation(),t.keyCode==e.ui.keyCode.ESCAPE?T.reject():t.keyCode==e.ui.keyCode.ENTER&&(t.preventDefault(),U.trigger("blur"))}).on("mousedown click dblclick",function(e){e.stopPropagation(),"dblclick"===e.type&&e.preventDefault()}).on("blur",function(){var t,n=e.trim(U.val()),o=U.parent(),r=!0;if(D.is(":hidden")||i.css("z-index",""),""===n)return E();if(!H&&o.length){if(u.options.validName&&u.options.validName.test)try{r=u.options.validName.test(n)}catch(s){r=!1}if(!n||"."===n||".."===n||!r)return H=!0,u.error("directory"===O.mime?"errInvDirname":"errInvName",{modal:!0,close:function(){setTimeout(P,120)}}),!1;if(u.fileByName(n,S))return H=!0,u.error(["errExists",n],{modal:!0,close:function(){setTimeout(P,120)}}),!1;t=w&&x?u.exec("cut",w):null,e.when(t).done(function(){var t={},i={};z(),U.hide().before(e("<span>").text(n)),u.lockfiles({files:[A]}),u.request({data:Object.assign({cmd:f,name:n,target:S},j||{}),notify:{type:f,cnt:1},preventFail:!0,syncOnFail:!0,navigate:{toast:t}}).fail(function(t){u.unlockfiles({files:[A]}),H=!0,U.show().prev().remove(),u.error(t,{modal:!0,close:function(){Array.isArray(t)&&e.inArray("errUploadMime",t)!==-1?T.notify("errUploadMime").reject():setTimeout(P,120)}})}).done(function(n){if(n&&n.added&&n.added[0]){var o,r=n.added[0],s=r.hash,l=(u[b](s),{directory:{cmd:"open",msg:"cmdopendir"},text:{cmd:"edit",msg:"cmdedit"},"default":{cmd:"open",msg:"cmdopen"}});w&&x&&u.one(f+"done",function(){u.exec("paste",s)}),x||(u.mimeIsText(r.mime)&&!u.mimesCanMakeEmpty[r.mime]&&u.mimeTypes[r.mime]&&(u.trigger("canMakeEmptyFile",{mimes:[r.mime],unshift:!0}),o={},o[r.mime]=u.mimeTypes[r.mime],u.storage("mkfileTextMimes",Object.assign(o,u.storage("mkfileTextMimes")||{}))),Object.assign(i,a||l[r.mime]||l[r.mime.split("/")[0]]||l[u.mimesCanMakeEmpty[r.mime]||e.inArray(r.mime,u.resources.mimes.text)!==-1?"text":"none"]||l["default"]),Object.assign(t,i.cmd?{incwd:{msg:u.i18n(["complete",u.i18n("cmd"+h)]),action:i},inbuffer:{msg:u.i18n(["complete",u.i18n("cmd"+h)]),action:i}}:{inbuffer:{msg:u.i18n(["complete",u.i18n("cmd"+h)])}}))}T.resolve(n)})}).fail(function(){T.reject()})}}).on("dragenter dragleave dragover drop",function(e){e.stopPropagation()}),P=function(){var e=u.splitFileExtention(U.val())[0];H||!u.UA.Mobile||u.UA.iOS||(D.on("click close",E).elfinderoverlay("show"),i.css("z-index",D.css("z-index")+1)),H=!1,!u.enabled()&&u.enable(),U.trigger("focus").trigger("select"),U[0].setSelectionRange&&U[0].setSelectionRange(0,e.length)},R=function(){M.trigger("scrolltoview",{blink:!1})},q=function(){T&&"pending"===T.state()&&T.reject()},H=!1;return u.isCommandEnabled(f,S)&&M.length?(e.isPlainObject(p.nextAction)&&(a=Object.assign({},p.nextAction)),v?(o=u[b](S),s=u.res("class","navcollapse"),l=u.res("class","navexpand"),c=u.res("class","navarrow"),d=u.res("class","navsubtree"),M.closest("."+d).show(),o.hasClass(s)||(r=o.attr("class"),o.addClass(s+" "+l+" elfinder-subtree-loaded")),o.is("."+s+":not(."+l+")")&&o.children("."+c).trigger("click").data("dfrd").done(function(){U.val()===O.name&&U.val(u.uniqueName(p.prefix,S)).trigger("select").trigger("focus")}),n=M.contents().filter(function(){return 3==this.nodeType&&e(this).parent().attr("id")===u.navHash2Id(O.hash)}),i=n.parent(),n.replaceWith(U.val(O.name))):(k&&m.removeClass("elfinder-cwd-wrapper-empty"),n=M.find(".elfinder-cwd-filename"),i=n.parent(),y?n.css("max-height","none"):(t=i.width(),i.width(t-15).parent("td").css("overflow","visible")),n.empty().append(U.val(O.name))),i.addClass("ui-front").css("position","relative").on("unselect."+u.namespace,C),u.bind("resize",R).one("open",q),U.trigger("keyup"),P(),T):T.reject()}},blink:function(e,t){var n,i={slowonce:function(){e.hide().delay(250).fadeIn(750).delay(500).fadeOut(3500)},lookme:function(){e.show().fadeOut(500).fadeIn(750)}};t=t||"slowonce",n=i[t]||i.lookme,e.stop(!0,!0),n()}},e.fn.dialogelfinder=function(t){var n,i="elfinderPosition",a="elfinderDestroyOnClose";if(this.not(".elfinder").each(function(){var n=(e(document),e('<div class="ui-widget-header dialogelfinder-drag ui-corner-top">'+(t.title||"Files")+"</div>")),o=(e('<a href="#" class="dialogelfinder-drag-close ui-corner-all"><span class="ui-icon ui-icon-closethick"> </span></a>').appendTo(n).on("click",function(e){e.preventDefault(),o.dialogelfinder("close")}),e(this).addClass("dialogelfinder").css("position","absolute").hide().appendTo("body").draggable({handle:".dialogelfinder-drag",containment:"window",stop:function(){o.trigger("resize"),r.trigger("resize")}}).elfinder(t).prepend(n)),r=o.elfinder("instance");o.width(parseInt(o.width())||840).data(a,!!t.destroyOnClose).find(".elfinder-toolbar").removeClass("ui-corner-top"),t.position&&o.data(i,t.position),t.autoOpen!==!1&&e(this).dialogelfinder("open")}),"open"==t){var n=e(this),o=n.data(i)||{top:parseInt(e(document).scrollTop()+(e(window).height()<n.height()?2:(e(window).height()-n.height())/2)),left:parseInt(e(document).scrollLeft()+(e(window).width()<n.width()?2:(e(window).width()-n.width())/2))};n.is(":hidden")&&(n.addClass("ui-front").css(o).show().trigger("resize"),setTimeout(function(){n.trigger("resize").trigger("mousedown")},200))}else if("close"==t)n=e(this).removeClass("ui-front"),n.is(":visible")&&(n.data(a)?n.elfinder("destroy").remove():n.elfinder("close"));else if("instance"==t)return e(this).getElFinder();return this},"function"==typeof i&&i.prototype.i18&&(i.prototype.i18.en={translator:"Troex Nevelin &lt;troex@fury.scancode.ru&gt;, Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;",language:"English",direction:"ltr",dateFormat:"M d, Y h:i A",fancyDateFormat:"$1 h:i A",nonameDateFormat:"ymd-His",messages:{error:"Error",errUnknown:"Unknown error.",errUnknownCmd:"Unknown command.",errJqui:"Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.",errNode:"elFinder requires DOM Element to be created.",errURL:"Invalid elFinder configuration! URL option is not set.",errAccess:"Access denied.",errConnect:"Unable to connect to backend.",errAbort:"Connection aborted.",errTimeout:"Connection timeout.",errNotFound:"Backend not found.",errResponse:"Invalid backend response.",errConf:"Invalid backend configuration.",errJSON:"PHP JSON module not installed.",errNoVolumes:"Readable volumes not available.",errCmdParams:'Invalid parameters for command "$1".',errDataNotJSON:"Data is not JSON.",errDataEmpty:"Data is empty.",errCmdReq:"Backend request requires command name.",errOpen:'Unable to open "$1".',errNotFolder:"Object is not a folder.",errNotFile:"Object is not a file.",errRead:'Unable to read "$1".',errWrite:'Unable to write into "$1".',errPerm:"Permission denied.",errLocked:'"$1" is locked and can not be renamed, moved or removed.',errExists:'Item named "$1" already exists.',errInvName:"Invalid file name.",errInvDirname:"Invalid folder name.",errFolderNotFound:"Folder not found.",errFileNotFound:"File not found.",errTrgFolderNotFound:'Target folder "$1" not found.',errPopup:"Browser prevented opening popup window. To open file enable it in browser options.",errMkdir:'Unable to create folder "$1".',errMkfile:'Unable to create file "$1".',errRename:'Unable to rename "$1".',errCopyFrom:'Copying files from volume "$1" not allowed.',errCopyTo:'Copying files to volume "$1" not allowed.',errMkOutLink:"Unable to create a link to outside the volume root.",errUpload:"Upload error.",errUploadFile:'Unable to upload "$1".',errUploadNoFiles:"No files found for upload.",errUploadTotalSize:"Data exceeds the maximum allowed size.",errUploadFileSize:"File exceeds maximum allowed size.",errUploadMime:"File type not allowed.",errUploadTransfer:'"$1" transfer error.',errUploadTemp:"Unable to make temporary file for upload.",errNotReplace:'Object "$1" already exists at this location and can not be replaced by object with another type.',errReplace:'Unable to replace "$1".',errSave:'Unable to save "$1".',errCopy:'Unable to copy "$1".',errMove:'Unable to move "$1".',errCopyInItself:'Unable to copy "$1" into itself.',errRm:'Unable to remove "$1".',errTrash:"Unable into trash.",errRmSrc:"Unable remove source file(s).",errExtract:'Unable to extract files from "$1".',errArchive:"Unable to create archive.",errArcType:"Unsupported archive type.",errNoArchive:"File is not archive or has unsupported archive type.",errCmdNoSupport:"Backend does not support this command.",errReplByChild:'The folder "$1" can\'t be replaced by an item it contains.',errArcSymlinks:"For security reason denied to unpack archives contains symlinks or files with not allowed names.",errArcMaxSize:"Archive files exceeds maximum allowed size.",errResize:'Unable to resize "$1".',errResizeDegree:"Invalid rotate degree.",errResizeRotate:"Unable to rotate image.",errResizeSize:"Invalid image size.",errResizeNoChange:"Image size not changed.",errUsupportType:"Unsupported file type.",errNotUTF8Content:'File "$1" is not in UTF-8 and cannot be edited.',errNetMount:'Unable to mount "$1".',errNetMountNoDriver:"Unsupported protocol.",errNetMountFailed:"Mount failed.",errNetMountHostReq:"Host required.",errSessionExpires:"Your session has expired due to inactivity.",errCreatingTempDir:'Unable to create temporary directory: "$1"',errFtpDownloadFile:'Unable to download file from FTP: "$1"',errFtpUploadFile:'Unable to upload file to FTP: "$1"',errFtpMkdir:'Unable to create remote directory on FTP: "$1"',errArchiveExec:'Error while archiving files: "$1"',errExtractExec:'Error while extracting files: "$1"',errNetUnMount:"Unable to unmount.",errConvUTF8:"Not convertible to UTF-8",errFolderUpload:"Try the modern browser, If you'd like to upload the folder.",errSearchTimeout:'Timed out while searching "$1". Search result is partial.',errReauthRequire:"Re-authorization is required.",errMaxTargets:"Max number of selectable items is $1.",errRestore:"Unable to restore from the trash. Can't identify the restore destination.",errEditorNotFound:"Editor not found to this file type.",errServerError:"Error occurred on the server side.",errEmpty:'Unable to empty folder "$1".',moreErrors:"There are $1 more errors.",cmdarchive:"Create archive",cmdback:"Back",cmdcopy:"Copy",cmdcut:"Cut",cmddownload:"Download",cmdduplicate:"Duplicate",cmdedit:"Edit file",cmdextract:"Extract files from archive",cmdforward:"Forward",cmdgetfile:"Select files",cmdhelp:"About this software",cmdhome:"Root",cmdinfo:"Get info",cmdmkdir:"New folder",cmdmkdirin:"Into New Folder",cmdmkfile:"New file",cmdopen:"Open",cmdpaste:"Paste",cmdquicklook:"Preview",cmdreload:"Reload",cmdrename:"Rename",cmdrm:"Delete",cmdtrash:"Into trash",cmdrestore:"Restore",cmdsearch:"Find files",cmdup:"Go to parent folder",cmdupload:"Upload files",cmdview:"View",cmdresize:"Resize & Rotate",cmdsort:"Sort",cmdnetmount:"Mount network volume",cmdnetunmount:"Unmount",cmdplaces:"To Places",cmdchmod:"Change mode",cmdopendir:"Open a folder",cmdcolwidth:"Reset column width",cmdfullscreen:"Full Screen",cmdmove:"Move",cmdempty:"Empty the folder",cmdundo:"Undo",cmdredo:"Redo",cmdpreference:"Preferences",cmdselectall:"Select all",cmdselectnone:"Select none",cmdselectinvert:"Invert selection",cmdopennew:"Open in new window",cmdhide:"Hide (Preference)",btnClose:"Close",btnSave:"Save",btnRm:"Remove",btnApply:"Apply",btnCancel:"Cancel",btnNo:"No",btnYes:"Yes",btnMount:"Mount",btnApprove:"Goto $1 & approve",btnUnmount:"Unmount",btnConv:"Convert",btnCwd:"Here",btnVolume:"Volume",btnAll:"All",btnMime:"MIME Type",btnFileName:"Filename",btnSaveClose:"Save & Close",btnBackup:"Backup",btnRename:"Rename",btnRenameAll:"Rename(All)",btnPrevious:"Prev ($1/$2)",btnNext:"Next ($1/$2)",btnSaveAs:"Save As",ntfopen:"Open folder",ntffile:"Open file",ntfreload:"Reload folder content",ntfmkdir:"Creating folder",ntfmkfile:"Creating files",ntfrm:"Delete items",ntfcopy:"Copy items",ntfmove:"Move items",ntfprepare:"Checking existing items",ntfrename:"Rename files",ntfupload:"Uploading files",ntfdownload:"Downloading files",ntfsave:"Save files",ntfarchive:"Creating archive",ntfextract:"Extracting files from archive",ntfsearch:"Searching files",ntfresize:"Resizing images",ntfsmth:"Doing something",ntfloadimg:"Loading image",ntfnetmount:"Mounting network volume",ntfnetunmount:"Unmounting network volume",ntfdim:"Acquiring image dimension",ntfreaddir:"Reading folder infomation",ntfurl:"Getting URL of link",ntfchmod:"Changing file mode",ntfpreupload:"Verifying upload file name",ntfzipdl:"Creating a file for download",ntfparents:"Getting path infomation",ntfchunkmerge:"Processing the uploaded file",ntftrash:"Doing throw in the trash",ntfrestore:"Doing restore from the trash",ntfchkdir:"Checking destination folder",ntfundo:"Undoing previous operation",ntfredo:"Redoing previous undone",ntfchkcontent:"Checking contents",volume_Trash:"Trash",dateUnknown:"unknown",Today:"Today",Yesterday:"Yesterday",msJan:"Jan",msFeb:"Feb",msMar:"Mar",msApr:"Apr",msMay:"May",msJun:"Jun",msJul:"Jul",msAug:"Aug",msSep:"Sep",msOct:"Oct",msNov:"Nov",msDec:"Dec",January:"January",February:"February",March:"March",April:"April",May:"May",June:"June",July:"July",August:"August",September:"September",October:"October",November:"November",December:"December",Sunday:"Sunday",Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday",Sun:"Sun",Mon:"Mon",Tue:"Tue",Wed:"Wed",Thu:"Thu",Fri:"Fri",Sat:"Sat",sortname:"by name",sortkind:"by kind",sortsize:"by size",sortdate:"by date",sortFoldersFirst:"Folders first",sortperm:"by permission",sortmode:"by mode",sortowner:"by owner",sortgroup:"by group",sortAlsoTreeview:"Also Treeview","untitled file.txt":"NewFile.txt","untitled folder":"NewFolder",Archive:"NewArchive","untitled file":"NewFile.$1",extentionfile:"$1: File",extentiontype:"$1: $2",confirmReq:"Confirmation required",confirmRm:"Are you sure you want to permanently remove items?<br/>This cannot be undone!",confirmRepl:"Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)",confirmRest:"Replace existing item with the item in trash?",confirmConvUTF8:"Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.",confirmNonUTF8:"Character encoding of this file couldn't be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.",confirmNotSave:"It has been modified.<br/>Losing work if you do not save changes.",confirmTrash:"Are you sure you want to move items to trash bin?",apllyAll:"Apply to all",name:"Name",size:"Size",perms:"Permissions",modify:"Modified",kind:"Kind",read:"read",write:"write",noaccess:"no access",and:"and",unknown:"unknown",selectall:"Select all items",selectfiles:"Select item(s)",selectffile:"Select first item",selectlfile:"Select last item",viewlist:"List view",viewicons:"Icons view",viewSmall:"Small icons",viewMedium:"Medium icons",viewLarge:"Large icons",viewExtraLarge:"Extra large icons",places:"Places",calc:"Calculate",path:"Path",aliasfor:"Alias for",locked:"Locked",dim:"Dimensions",files:"Files",folders:"Folders",items:"Items",yes:"yes",no:"no",link:"Link",searcresult:"Search results",selected:"selected items",about:"About",shortcuts:"Shortcuts",help:"Help",webfm:"Web file manager",ver:"Version",protocolver:"protocol version",homepage:"Project home",docs:"Documentation",github:"Fork us on GitHub",twitter:"Follow us on Twitter",facebook:"Join us on Facebook",team:"Team",chiefdev:"chief developer",developer:"developer",contributor:"contributor",maintainer:"maintainer",translator:"translator",icons:"Icons",dontforget:"and don't forget to take your towel",shortcutsof:"Shortcuts disabled",dropFiles:"Drop files here",or:"or",selectForUpload:"Select files",moveFiles:"Move items",copyFiles:"Copy items",restoreFiles:"Restore items",rmFromPlaces:"Remove from places",aspectRatio:"Aspect ratio",scale:"Scale",width:"Width",height:"Height",resize:"Resize",crop:"Crop",rotate:"Rotate","rotate-cw":"Rotate 90 degrees CW","rotate-ccw":"Rotate 90 degrees CCW",degree:"°",netMountDialogTitle:"Mount network volume",protocol:"Protocol",host:"Host",port:"Port",user:"User",pass:"Password",confirmUnmount:"Are you sure to unmount $1?",dropFilesBrowser:"Drop or Paste files from browser",dropPasteFiles:"Drop files, Paste URLs or images(clipboard) here",encoding:"Encoding",locale:"Locale",searchTarget:"Target: $1",searchMime:"Search by input MIME Type",owner:"Owner",group:"Group",other:"Other",execute:"Execute",perm:"Permission",mode:"Mode",emptyFolder:"Folder is empty",emptyFolderDrop:"Folder is empty\\A Drop to add items",emptyFolderLTap:"Folder is empty\\A Long tap to add items",quality:"Quality",autoSync:"Auto sync",moveUp:"Move up",getLink:"Get URL link",selectedItems:"Selected items ($1)",folderId:"Folder ID",offlineAccess:"Allow offline access",reAuth:"To re-authenticate",nowLoading:"Now loading...",openMulti:"Open multiple files",openMultiConfirm:"You are trying to open the $1 files. Are you sure you want to open in browser?",emptySearch:"Search results is empty in search target.",editingFile:"It is editing a file.",hasSelected:"You have selected $1 items.",hasClipboard:"You have $1 items in the clipboard.",incSearchOnly:"Incremental search is only from the current view.",reinstate:"Reinstate",complete:"$1 complete",
contextmenu:"Context menu",pageTurning:"Page turning",volumeRoots:"Volume roots",reset:"Reset",bgcolor:"Background color",colorPicker:"Color picker","8pxgrid":"8px Grid",enabled:"Enabled",disabled:"Disabled",emptyIncSearch:"Search results is empty in current view.\\A Press [Enter] to expand search target.",emptyLetSearch:"First letter search results is empty in current view.",textLabel:"Text label",minsLeft:"$1 mins left",openAsEncoding:"Reopen with selected encoding",saveAsEncoding:"Save with the selected encoding",selectFolder:"Select folder",firstLetterSearch:"First letter search",presets:"Presets",tooManyToTrash:"It's too many items so it can't into trash.",TextArea:"TextArea",folderToEmpty:'Empty the folder "$1".',filderIsEmpty:'There are no items in a folder "$1".',preference:"Preference",language:"Language",clearBrowserData:"Initialize the settings saved in this browser",toolbarPref:"Toolbar settings",charsLeft:"... $1 chars left.",sum:"Sum",roughFileSize:"Rough file size",autoFocusDialog:"Focus on the element of dialog with mouseover",select:"Select",selectAction:"Action when select file",useStoredEditor:"Open with the editor used last time",selectinvert:"Invert selection",renameMultiple:"Are you sure you want to rename $1 selected items like $2?<br/>This cannot be undone!",batchRename:"Batch rename",plusNumber:"+ Number",asPrefix:"Add prefix",asSuffix:"Add suffix",changeExtention:"Change extention",columnPref:"Columns settings (List view)",reflectOnImmediate:"All changes will reflect immediately to the archive.",reflectOnUnmount:"Any changes will not reflect until un-mount this volume.",unmountChildren:"The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?",selectionInfo:"Selection Info",hashChecker:"Algorithms to show the file hash",infoItems:"Info Items (Selection Info Panel)",pressAgainToExit:"Press again to exit.",toolbar:"Toolbar",workspace:"Work Space",dialog:"Dialog",all:"All",iconSize:"Icon Size (Icons view)",editorMaximized:"Open the maximized editor window",editorConvNoApi:"Because conversion by API is not currently available, please convert on the website.",editorConvNeedUpload:"After conversion, you must be upload with the item URL or a downloaded file to save the converted file.",convertOn:"Convert on the site of $1",integrations:"Integrations",integrationWith:"This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.",showHidden:"Show hidden items",hideHidden:"Hide hidden items",toggleHidden:"Show/Hide hidden items",makefileTypes:'File types to enable with "New file"',typeOfTextfile:"Type of the Text file",add:"Add",theme:"Theme","default":"Default",description:"Description",website:"Website",author:"Author",email:"Email",license:"License",exportToSave:"This item can't be saved. To avoid losing the edits you need to export to your PC.",kindUnknown:"Unknown",kindRoot:"Volume Root",kindFolder:"Folder",kindSelects:"Selections",kindAlias:"Alias",kindAliasBroken:"Broken alias",kindApp:"Application",kindPostscript:"Postscript document",kindMsOffice:"Microsoft Office document",kindMsWord:"Microsoft Word document",kindMsExcel:"Microsoft Excel document",kindMsPP:"Microsoft Powerpoint presentation",kindOO:"Open Office document",kindAppFlash:"Flash application",kindPDF:"Portable Document Format (PDF)",kindTorrent:"Bittorrent file",kind7z:"7z archive",kindTAR:"TAR archive",kindGZIP:"GZIP archive",kindBZIP:"BZIP archive",kindXZ:"XZ archive",kindZIP:"ZIP archive",kindRAR:"RAR archive",kindJAR:"Java JAR file",kindTTF:"True Type font",kindOTF:"Open Type font",kindRPM:"RPM package",kindText:"Text document",kindTextPlain:"Plain text",kindPHP:"PHP source",kindCSS:"Cascading style sheet",kindHTML:"HTML document",kindJS:"Javascript source",kindRTF:"Rich Text Format",kindC:"C source",kindCHeader:"C header source",kindCPP:"C++ source",kindCPPHeader:"C++ header source",kindShell:"Unix shell script",kindPython:"Python source",kindJava:"Java source",kindRuby:"Ruby source",kindPerl:"Perl script",kindSQL:"SQL source",kindXML:"XML document",kindAWK:"AWK source",kindCSV:"Comma separated values",kindDOCBOOK:"Docbook XML document",kindMarkdown:"Markdown text",kindImage:"Image",kindBMP:"BMP image",kindJPEG:"JPEG image",kindGIF:"GIF Image",kindPNG:"PNG Image",kindTIFF:"TIFF image",kindTGA:"TGA image",kindPSD:"Adobe Photoshop image",kindXBITMAP:"X bitmap image",kindPXM:"Pixelmator image",kindAudio:"Audio media",kindAudioMPEG:"MPEG audio",kindAudioMPEG4:"MPEG-4 audio",kindAudioMIDI:"MIDI audio",kindAudioOGG:"Ogg Vorbis audio",kindAudioWAV:"WAV audio",AudioPlaylist:"MP3 playlist",kindVideo:"Video media",kindVideoDV:"DV movie",kindVideoMPEG:"MPEG movie",kindVideoMPEG4:"MPEG-4 movie",kindVideoAVI:"AVI movie",kindVideoMOV:"Quick Time movie",kindVideoWM:"Windows Media movie",kindVideoFlash:"Flash movie",kindVideoMKV:"Matroska movie",kindVideoOGG:"Ogg movie"}}),e.fn.elfinderbutton=function(t){return this.each(function(){var n,i,a="class",o=t.fm,r=o.res(a,"disabled"),s=o.res(a,"active"),l=o.res(a,"hover"),c="elfinder-button-menu-item",d="elfinder-button-menu-item-selected",p=e('<span class="elfinder-button-text">'+t.title+"</span>"),u="elfinder-button-icon-"+(t.className?t.className:t.name),h=e(this).addClass("ui-state-default elfinder-button").attr("title",t.title).append('<span class="elfinder-button-icon '+u+'"/>',p).on("mouseenter mouseleave",function(e){!h.hasClass(r)&&h["mouseleave"==e.type?"removeClass":"addClass"](l)}).on("click",function(e){h.hasClass(r)||(n&&t.variants.length>=1?(n.is(":hidden")&&o.getUI().click(),e.stopPropagation(),n.css(m()).slideToggle({duration:100,done:function(e){o[n.is(":visible")?"toFront":"toHide"](n)}})):o.exec(t.name,g(),{_userAction:!0,_currentType:"toolbar",_currentNode:h}))}),f=function(){o.toHide(n)},m=function(){var e=o.getUI(),t=e.offset(),n=h.offset();return{top:n.top-t.top,left:n.left-t.left,maxHeight:e.height()-40}},g=function(){var e,t=o.selected();return t.length||(t=(e=o.cwd())?[o.cwd().hash]:void 0),t};p.hide(),t.button=h,Array.isArray(t.variants)&&(h.addClass("elfinder-menubutton"),n=e('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu ui-corner-all"/>').hide().appendTo(o.getUI()).on("mouseenter mouseleave","."+c,function(){e(this).toggleClass(l)}).on("click","."+c,function(i){var a=e(this).data("value");i.preventDefault(),i.stopPropagation(),h.removeClass(l),o.toHide(n),"undefined"==typeof a&&(a={}),"object"==typeof a&&(a._userAction=!0),o.exec(t.name,g(),a)}).on("close",f),o.bind("disable select",f).getUI().on("click",f),t.change(function(){n.html(""),e.each(t.variants,function(i,a){n.append(e('<div class="'+c+'">'+a[1]+"</div>").data("value",a[0]).addClass(a[0]==t.value?d:""))})})),t.change(function(){var e;i&&cancelAnimationFrame(i),i=requestAnimationFrame(function(){t.disabled()?h.removeClass(s+" "+l).addClass(r):(h.removeClass(r),h[t.active()?"addClass":"removeClass"](s)),t.syncTitleOnChange&&(e="elfinder-button-icon-"+(t.className?t.className:t.name),u!==e&&(h.children(".elfinder-button-icon").removeClass(u).addClass(e),u=e),p.html(t.title),h.attr("title",t.title))})}).change()})},e.fn.elfindercontextmenu=function(t){return this.each(function(){var n,i,a,o,r,s,l,c=(e(this),"elfinder-contextmenu-item"),d="elfinder-contextsubmenu-item",p="elfinder-contextmenu-extra-icon",u=t.res("class","hover"),h={distance:8,start:function(){f.data("drag",!0).data("touching")&&f.find("."+u).removeClass(u)},stop:function(){f.data("draged",!0).removeData("drag")}},f=e(this).addClass("touch-punch ui-helper-reset ui-front ui-widget ui-state-default ui-corner-all elfinder-contextmenu elfinder-contextmenu-"+t.direction).hide().on("touchstart",function(e){f.data("touching",!0).children().removeClass(u)}).on("touchend",function(e){f.removeData("touching")}).on("mouseenter mouseleave","."+c,function(t){e(this).toggleClass(u,!("mouseenter"!==t.type&&(f.data("draged")||!f.data("submenuKeep")))),f.data("draged")&&f.data("submenuKeep")&&f.find(".elfinder-contextmenu-sub:visible").parent().addClass(u)}).on("mouseenter mouseleave","."+p,function(t){e(this).parent().toggleClass(u,"mouseleave"===t.type)}).on("mouseenter mouseleave","."+c+",."+d,function(t){var n=function(t,n){e.each(n?r:a,function(e,i){if(t[0]===i)return(n?r:a)._cur=e,n?s=t:o=t,!1})};if(t.originalEvent){var i=e(this),l=function(){o&&!o.children("div.elfinder-contextmenu-sub:visible").length&&o.removeClass(u)};"mouseenter"===t.type?i.hasClass(d)?(s&&s.removeClass(u),o&&(r=o.find("div."+d)),n(i,!0)):(l(),n(i)):i.hasClass(d)?(s=null,r=null):(l(),function(e){setTimeout(function(){e===o&&(o=null)},250)}(o))}}).on("contextmenu",function(){return!1}).on("mouseup",function(){setTimeout(function(){f.removeData("draged")},100)}).draggable(h),m="ltr"===t.direction,g=m?"left":"right",v=Object.assign({},t.options.contextmenu),b='<div class="'+c+'{className}"><span class="elfinder-button-icon {icon} elfinder-contextmenu-icon"{style}/><span>{label}</span></div>',y=function(n,i,a,o){var r,s,l="",c="",d="";return o&&(o.className&&(l=" "+o.className),o.iconClass&&(d=o.iconClass,i=""),o.iconImg&&(r=o.iconImg.split(/ +/),s=r[1]&&r[2]?t.escape(r[1]+"px "+r[2]+"px"):"",c=" style=\"background:url('"+t.escape(r[0])+"') "+(s?s:"0 0")+" no-repeat;"+(s?"":"posbackground-size:contain;")+'"')),e(b.replace("{icon}",i?"elfinder-button-icon-"+i:d?d:"").replace("{label}",n).replace("{style}",c).replace("{className}",l)).on("click",function(e){e.stopPropagation(),e.preventDefault(),a()})},w=function(e){var t=e.split(/ +/),n=t[1]&&t[2]?t[1]+"px "+t[2]+"px":"";return{backgroundImage:'url("'+t[0]+'")',backgroundRepeat:"no-repeat",backgroundPosition:n?n:"",backgroundSize:n?"":"contain"}},x=function(){var n="touchstart.contextmenuAutoToggle";f.data("hideTm")&&clearTimeout(f.data("hideTm")),f.is(":visible")&&f.on("touchstart",function(e){e.originalEvent.touches.length>1||(f.stop(),t.toFront(f),f.data("hideTm")&&clearTimeout(f.data("hideTm")))}).data("hideTm",setTimeout(function(){f.is(":visible")&&(i.find(".elfinder-cwd-file").off(n),i.find(".elfinder-cwd-file.ui-selected").one(n,function(t){if(!(t.originalEvent.touches.length>1)){var a=e(t.target);return!f.first().length||a.is("input:checkbox")||a.hasClass("elfinder-cwd-select")?void i.find(".elfinder-cwd-file").off(n):(t.stopPropagation(),C(t.originalEvent.touches[0].pageX,t.originalEvent.touches[0].pageY),i.data("longtap",!0),void a.one("touchend",function(){setTimeout(function(){i.removeData("longtap")},80)}))}}).one("unselect."+t.namespace,function(){i.find(".elfinder-cwd-file").off(n)}),f.fadeOut({duration:300,fail:function(){f.css("opacity","1").show()},done:function(){t.toHide(f)}}))},4500))},k=function(n){var i=n.keyCode,l=e.ui.keyCode.ESCAPE,c=e.ui.keyCode.ENTER,p=e.ui.keyCode.LEFT,h=e.ui.keyCode.RIGHT,f=e.ui.keyCode.UP,m=e.ui.keyCode.DOWN,g="ltr"===t.direction?h:p,v=g===h?p:h;e.inArray(i,[l,c,p,h,f,m])!==-1&&(n.preventDefault(),n.stopPropagation(),n.stopImmediatePropagation(),i==l||i===v?o&&r&&s?(s.trigger("mouseleave").trigger("submenuclose"),o.addClass(u),r=null,s=null):i==l&&z():i==f||i==m?r?(s&&s.trigger("mouseleave"),i==m&&(!s||r.length<=++r._cur)?r._cur=0:i==f&&(!s||--r._cur<0)&&(r._cur=r.length-1),s=r.eq(r._cur).trigger("mouseenter")):(r=null,o&&o.trigger("mouseleave"),i==m&&(!o||a.length<=++a._cur)?a._cur=0:i==f&&(!o||--a._cur<0)&&(a._cur=a.length-1),o=a.eq(a._cur).addClass(u)):!o||i!=c&&i!==g||(o.hasClass("elfinder-contextmenu-group")?s?i==c&&s.click():(o.trigger("mouseenter"),r=o.find("div."+d),r._cur=0,s=r.first().addClass(u)):i==c&&o.click()))},C=function(i,a,c){var d,p=f.outerWidth(),u=f.outerHeight(),h=n.attr("style"),m=n.offset(),v=n.width(),b=n.height(),y=t.UA.Mobile?40:2,w=t.UA.Mobile?20:2,i=i-(m?m.left:0),a=a-(m?m.top:0),c=Object.assign(c||{},{top:Math.max(0,a+w+u<b?a+w:a-(a+u-b)),left:Math.max(0,i<p+y||i+y+p<v?i+y:i-y-p),opacity:"1"});l=!0,t.autoSync("stop"),n.width(v),f.stop().removeAttr("style").css(c),t.toFront(f),f.show(),n.attr("style",h),c[g]=parseInt(f.width()),f.find(".elfinder-contextmenu-sub").css(c),t.UA.iOS&&e("div.elfinder div.overflow-scrolling-touch").css("-webkit-overflow-scrolling","auto"),o=null,r=null,s=null,e(document).on("keydown."+t.namespace,k),d=e._data(document).events,d&&d.keydown&&d.keydown.unshift(d.keydown.pop()),t.UA.Mobile&&x(),requestAnimationFrame(function(){t.getUI().one("click."+t.namespace,z)})},z=function(){if(t.getUI().off("click."+t.namespace,z),e(document).off("keydown."+t.namespace,k),S=I=null,f.is(":visible")||f.children().length){t.toHide(f.removeAttr("style").empty().removeData("submenuKeep"));try{f.draggable("instance")||f.draggable(h)}catch(n){f.hasClass("ui-draggable")||f.draggable(h)}f.data("prevNode")&&(f.data("prevNode").after(f),f.removeData("prevNode")),t.trigger("closecontextmenu"),t.UA.iOS&&e("div.elfinder div.overflow-scrolling-touch").css("-webkit-overflow-scrolling","touch")}l&&t.searchStatus.state<1&&!t.searchStatus.ininc&&t.autoSync(),l=!1},T=function(i,o){var r,s=!1,l=!1,h=[],g="cwd"===i,b=0;S=i,I=o,(r=t.option("uiCmdMap",g?void 0:o[0]))||(r={}),g||(h=t.getDisabledCmds(o)),b=t.selected().length,b>1&&f.append('<div class="ui-corner-top ui-widget-header elfinder-contextmenu-header"><span>'+t.i18n("selectedItems",""+b)+"</span></div>"),a=e(),e.each(v[i]||[],function(v,b){var x,k,C,T,A,S;if("|"===b)return void(s&&(l=!0));if(r[b]?(k=r[b],C=!0):k=b,x=t.getCommand(k),!x||g||t.searchStatus.state&&x.disableOnSearch||(x.__disabled=x._disabled,x._disabled=!(x.alwaysEnabled||!!t._commands[k]&&!(e.inArray(b,h)!==-1||C&&h[k])),e.each(x.linkedCmds,function(e,n){var i;(i=t.getCommand(n))&&(i.__disabled=i._disabled,i._disabled=!(i.alwaysEnabled||!!t._commands[n]&&!h[n]))})),x&&!x._disabled&&x.getstate(o)!=-1){if(x.variants){if(!x.variants.length)return;T=y(x.title,x.className?x.className:x.name,function(){},x.contextmenuOpts),A=e('<div class="ui-front ui-corner-all elfinder-contextmenu-sub"/>').hide().css("max-height",t.getUI().height()-30).appendTo(T.append('<span class="elfinder-contextmenu-arrow"/>')),S=function(e){if(e){var i=n.attr("style");n.width(n.width()),A.css({top:"-1000px",left:"auto",right:"auto"});var a,o,r=T.offset(),s=r.left,l=r.top,c=T.outerWidth(),d=A.outerWidth(!0),p=A.outerHeight(!0),u=n.offset(),h=u.left+n.width(),g=u.top+n.height(),v=m,b=c;m?(o=s+c+d-h,o>10&&(s>d-5?(b-=5,v=!1):t.UA.Mobile||(b=c-o))):(o=d-s,o>0&&(s+c+d-15<h?(b-=5,v=!0):t.UA.Mobile||(b=c-o))),o=l+5+p-g,a=o>0&&l<g?5-o:o>0?30-p:5,f.find(".elfinder-contextmenu-sub:visible").hide(),A.css({top:a,left:v?b:"auto",right:v?"auto":b,overflowY:"auto"}).show(),n.attr("style",i)}else A.hide()},T.addClass("elfinder-contextmenu-group").on("mouseleave",".elfinder-contextmenu-sub",function(e){f.data("draged")||f.removeData("submenuKeep")}).on("submenuclose",".elfinder-contextmenu-sub",function(e){S(!1)}).on("click","."+d,function(n){var a,r;n.stopPropagation(),f.data("draged")||(r=e(this),x.keepContextmenu?(r.removeClass(u),T.addClass(u)):f.hide(),a=r.data("exec"),"undefined"==typeof a&&(a={}),"object"==typeof a&&(a._userAction=!0,a._currentType=i,a._currentNode=r),!x.keepContextmenu&&z(),t.exec(x.name,o,a))}).on("touchend",function(e){f.data("drag")||(S(!0),f.data("submenuKeep",!0))}).on("mouseenter mouseleave",function(t){f.data("touching")||(T.data("timer")&&(clearTimeout(T.data("timer")),T.removeData("timer")),e(t.target).closest(".elfinder-contextmenu-sub",f).length||("mouseleave"===t.type?f.data("submenuKeep")||T.data("timer",setTimeout(function(){T.removeData("timer"),S(!1)},250)):T.data("timer",setTimeout(function(){T.removeData("timer"),S(!0)},a.find("div.elfinder-contextmenu-sub:visible").length?250:0))))}),e.each(x.variants,function(t,n){var i,a="|"===n?'<div class="elfinder-contextmenu-separator"/>':e('<div class="'+c+" "+d+'"><span>'+n[1]+"</span></div>").data("exec",n[0]);"undefined"!=typeof n[2]&&(i=e("<span/>").addClass("elfinder-button-icon elfinder-contextmenu-icon"),/\//.test(n[2])?i.css(w(n[2])):i.addClass("elfinder-button-icon-"+n[2]),a.prepend(i).addClass(d+"-icon")),A.append(a)})}else T=y(x.title,x.className?x.className:x.name,function(){f.data("draged")||(!x.keepContextmenu&&z(),t.exec(x.name,o,{_userAction:!0,_currentType:i,_currentNode:T}))},x.contextmenuOpts),x.extra&&x.extra.node?(e('<span class="elfinder-button-icon elfinder-button-icon-'+(x.extra.icon||"")+" "+p+'"/>').append(x.extra.node).appendTo(T),e(x.extra.node).trigger("ready",{targets:o})):T.remove("."+p);x.extendsCmd&&T.children("span.elfinder-button-icon").addClass("elfinder-button-icon-"+x.extendsCmd),l&&f.append('<div class="elfinder-contextmenu-separator"/>'),f.append(T),s=!0,l=!1}x&&"undefined"!=typeof x.__disabled&&(x._disabled=x.__disabled,delete x.__disabled,e.each(x.linkedCmds,function(e,n){var i;(i=t.getCommand(n))&&(i._disabled=i.__disabled,delete i.__disabled)}))}),a=f.children("div."+c)},A=function(t){S="raw",e.each(t,function(e,t){var n;"|"===t?f.append('<div class="elfinder-contextmenu-separator"/>'):t.label&&"function"==typeof t.callback&&(n=y(t.label,t.icon,function(){f.data("draged")||(!t.remain&&z(),t.callback())},t.options||null),f.append(n))}),a=f.children("div."+c)},S=null,I=null;t.one("load",function(){n=t.getUI(),i=t.getUI("cwd"),t.bind("contextmenu",function(n){var a,o=n.data,r={};o.type&&"files"!==o.type&&i.trigger("unselectall"),z(),o.type&&o.targets?(t.trigger("contextmenucreate",o),T(o.type,o.targets),t.trigger("contextmenucreatedone",o)):o.raw&&A(o.raw),f.children().length&&(a=o.prevNode||null,a&&(f.data("prevNode",f.prev()),a.after(f)),o.fitHeight&&(r={maxHeight:Math.min(t.getUI().height(),e(window).height()),overflowY:"auto"},f.draggable("destroy").removeClass("ui-draggable")),C(o.x,o.y,r),o.opened&&"function"==typeof o.opened&&o.opened.call(f))}).one("destroy",function(){f.remove()}).bind("disable",z).bind("select",function(e){"files"===S&&(!e.data||e.data.selected.toString()!==I.toString())&&z()})}).shortcut({pattern:"mac"===t.OS?"ctrl+m":"contextmenu shift+f10",description:"contextmenu",callback:function(n){n.stopPropagation(),n.preventDefault(),e(document).one("contextmenu."+t.namespace,function(e){e.preventDefault(),e.stopPropagation()});var i,a,o,r,s=t.selected();s.length?(i="files",a=s,r=t.cwdHash2Elm(s[0])):(i="cwd",a=[t.cwd().hash],o=t.getUI("workzone").offset()),r&&r.length||(r=t.getUI("workzone")),o=r.offset(),o.top+=r.height()/2,o.left+=r.width()/2,t.trigger("contextmenu",{type:i,targets:a,x:o.left,y:o.top})}})})},e.fn.elfindercwd=function(t,n){return this.not(".elfinder-cwd").each(function(){var i,a,o,r,s,l,c,d=t.UA.Mobile,p="list"==t.viewType,u="select."+t.namespace,h="unselect."+t.namespace,f="disable."+t.namespace,m="enable."+t.namespace,g="class",v=t.res(g,"cwdfile"),b="."+v,y="ui-selected",w=t.res(g,"disabled"),x=t.res(g,"draggable"),k=t.res(g,"droppable"),C=t.res(g,"hover"),z=t.res(g,"active"),T=t.res(g,"adroppable"),A=v+"-tmp",S="elfinder-cwd-selectchk",I=t.options.loadTmbs>0?t.options.loadTmbs:5,O="",j={},M=[],D=[],F=void 0,E=[],U="",P=function(){for(var e="",t=0;t<E.length;t++)e+='<td class="elfinder-col-'+E[t]+'">{'+E[t]+"}</td>";return e},R=function(){return'<tr id="{id}" class="'+v+' {permsclass} {dirclass}" title="{tooltip}"{css}><td class="elfinder-col-name"><div class="elfinder-cwd-file-wrapper"><span class="elfinder-cwd-icon {mime}"{style}/>{marker}<span class="elfinder-cwd-filename">{name}</span></div>'+q+"</td>"+P()+"</tr>"},q=e.map(n.showSelectCheckboxUA,function(e){return!(!t.UA[e]&&!e.match(/^all$/i))||null}).length?'<div class="elfinder-cwd-select"><input type="checkbox" class="'+S+'"></div>':"",H=!1,_=null,N={icon:'<div id="{id}" class="'+v+' {permsclass} {dirclass} ui-corner-all" title="{tooltip}"><div class="elfinder-cwd-file-wrapper ui-corner-all"><div class="elfinder-cwd-icon {mime} ui-corner-all" unselectable="on"{style}/>{marker}</div><div class="elfinder-cwd-filename" title="{nametitle}">{name}</div>'+q+"</div>",row:""},L=t.res("tpl","perms"),W=t.res("tpl","lock"),B=t.res("tpl","symlink"),$={id:function(e){return t.cwdHash2Id(e.hash)},name:function(e){var n=t.escape(e.i18||e.name);return!p&&(n=n.replace(/([_.])/g,"&#8203;$1")),n},nametitle:function(e){return t.escape(e.i18||e.name)},permsclass:function(e){return t.perms2class(e)},perm:function(e){return t.formatPermissions(e)},dirclass:function(e){var i="directory"==e.mime?"directory":"";return e.isroot&&(i+=" isroot"),e.csscls&&(i+=" "+t.escape(e.csscls)),n.getClass&&(i+=" "+n.getClass(e)),i},style:function(e){return e.icon?t.getIconStyle(e):""},mime:function(e){var n=t.mime2class(e.mime);return e.icon&&(n+=" elfinder-cwd-bgurl"),n},size:function(e){return"directory"!==e.mime||e.size?t.formatSize(e.size):"-"},date:function(e){return t.formatDate(e)},kind:function(e){return t.mime2kind(e)},mode:function(e){return e.perm?t.formatFileMode(e.perm):""},modestr:function(e){return e.perm?t.formatFileMode(e.perm,"string"):""},modeoct:function(e){return e.perm?t.formatFileMode(e.perm,"octal"):""},modeboth:function(e){return e.perm?t.formatFileMode(e.perm,"both"):""},marker:function(e){return(e.alias||"symlink-broken"==e.mime?B:"")+(e.read&&e.write?"":L)+(e.locked?W:"")},tooltip:function(e){var n=t.formatDate(e)+(e.size>0?" ("+t.formatSize(e.size)+")":""),i="";return i=O&&e.path?t.escape(e.path.replace(/\/[^\/]*$/,"")):e.tooltip?t.escape(e.tooltip).replace(/\r/g,"&#13;"):"",p&&(i+=(i?"&#13;":"")+t.escape(e.i18||e.name)),i?i+"&#13;"+n:n}},K={},V=function(n,i){var o,r,s;if(n&&!K[n]&&("undefined"==typeof a&&(e("#elfinderAddBadgeStyle"+t.namespace).length&&e("#elfinderAddBadgeStyle"+t.namespace).remove(),a=e('<style id="addBadgeStyle'+t.namespace+'"/>').insertBefore(e("head").children(":first")).get(0).sheet||null),a)){if(n=n.toLowerCase(),s=n.split("/"),r=t.escape(t.mimeTypes[n]||(i.replace(/.bac?k$/i,"").match(/\.([^.]+)$/)||["",""])[1])){o=".elfinder-cwd-icon-"+s[0].replace(/(\.|\+)/g,"-"),"undefined"!=typeof s[1]&&(o+=".elfinder-cwd-icon-"+s[1].replace(/(\.|\+)/g,"-"));try{a.insertRule(o+':before{content:"'+r.toLowerCase()+'"}',0)}catch(l){}}K[n]=!0}},X=function(e){return e.mime&&"directory"!==e.mime&&!K[e.mime]&&V(e.mime,e.name),N[p?"row":"icon"].replace(/\{([a-z0-9_]+)\}/g,function(n,i){return $[i]?$[i](e,t):e[i]?e[i]:""})},G=e(),J=!1,Y=function(t,n){function i(e,t){return e[t+"All"]("[id]:not(."+w+"):not(.elfinder-cwd-parent):first")}var a,o,r,s,l,c=e.ui.keyCode,d=t==c.LEFT||t==c.UP,f=Ue.find("[id]."+y);if(f.length)if(a=f.filter(d?":first":":last"),r=i(a,d?"prev":"next"),r.length)if(p||t==c.LEFT||t==c.RIGHT)o=r;else if(s=a.position().top,l=a.position().left,o=a,d){do o=o.prev("[id]");while(o.length&&!(o.position().top<s&&o.position().left<=l));o.hasClass(w)&&(o=i(o,"next"))}else{do o=o.next("[id]");while(o.length&&!(o.position().top>s&&o.position().left>=l));o.hasClass(w)&&(o=i(o,"prev")),o.length||(r=Ue.find("[id]:not(."+w+"):last"),r.position().top>s&&(o=r))}else o=a;else o=G.length?d?G.prev():G:Ue.find("[id]:not(."+w+"):not(.elfinder-cwd-parent):"+(d?"last":"first"));o&&o.length&&!o.hasClass("elfinder-cwd-parent")&&(a&&n?o=a.add(a[d?"prevUntil":"nextUntil"]("#"+o.attr("id"))).add(o):f.trigger(h),o.trigger(u),re(o.filter(d?":first":":last")),oe())},Q={},Z=function(e){t.cwdHash2Elm(e).trigger(u)},ee=!1,te=function(){t.cwd().hash;q&&qe.find("input").prop("checked",!0),t.lazy(function(){var n;t.maxTargets&&(F||D).length>t.maxTargets?(ne({notrigger:!0}),n=e.map(F||D,function(e){return t.file(e)||null}),n=n.slice(0,t.maxTargets),Q={},e.each(n,function(e,n){Q[n.hash]=!0,t.cwdHash2Elm(n.hash).trigger(u)}),t.toast({mode:"warning",msg:t.i18n(["errMaxTargets",t.maxTargets])})):(Ue.find("[id]:not(."+y+"):not(.elfinder-cwd-parent)").trigger(u),Q=t.arrayFlip(F||D,!0)),oe(),q&&qe.data("pending",!1)},0,{repaint:!0})},ne=function(e){var t=e||{};q&&qe.find("input").prop("checked",!1),Object.keys(Q).length&&(J=!1,Q={},Ue.find("[id]."+y).trigger(h),q&&Ue.find("input:checkbox."+S).prop("checked",!1)),!t.notrigger&&oe(),q&&qe.data("pending",!1),Ue.removeClass("elfinder-cwd-allselected")},ie=function(){var n={};ee?ne():Object.keys(Q).length?(e.each(F||D,function(e,i){var a=t.cwdHash2Elm(i);Q[i]?a.length&&a.trigger(h):(n[i]=!0,a.length&&a.trigger(u))}),Q=n,oe()):te()},ae=void 0,oe=function(){var e=Object.keys(Q),n={selected:e,origin:"cwd"};ge&&(e.length>1||e[0]!==t.cwdId2Hash(ge.attr("id")))&&ge.hasClass(y)&&ge.trigger(h),ee=e.length&&e.length===(F||D).length&&(!t.maxTargets||e.length<=t.maxTargets),q&&(qe.find("input").prop("checked",ee),Ue[ee?"addClass":"removeClass"]("elfinder-cwd-allselected")),ee?n.selectall=!0:e.length||(n.unselectall=!0),t.trigger("select",n)},re=function(e,n){if(e.length){var i=e.position().top,a=e.outerHeight(!0),o=Pe.scrollTop(),r=Pe.get(0).clientHeight,s=we?we.outerHeight(!0):0;i+s+a>o+r?Pe.scrollTop(parseInt(i+s+a-r)):i<o&&Pe.scrollTop(i),p&&Pe.scrollLeft(0),!!n&&t.resources.blink(e,"lookme")}},se=[],le={},ce=function(e){for(var t=se.length;t--;)if(se[t].hash==e)return t;return-1},de="elfscrstart",pe="elfscrstop",ue=!1,he={disabled:!0,filter:"[id]:first",stop:oe,delay:250,appendTo:"body",autoRefresh:!1,selected:function(t,n){e(n.selected).trigger(u)},unselected:function(t,n){e(n.unselected).trigger(h)}},fe={},me=function(a,o){if(le.renderd){var r=(p?Ue.find("tbody:first"):Ue).children("[id]"+(n.oldSchool?":not(.elfinder-cwd-parent)":"")+":first");if(r.length){var s,l,c=Ue.data("selectable"),d=function(){var n=Pe.offset(),a=Pe.width(),o=e(window),s=r.width()/2,l=Math.min(n.left-o.scrollLeft()+("ltr"===t.direction?s:a-s),n.left+a-10),c=n.top-o.scrollTop()+10+(p?i:0);return{left:Math.max(0,Math.round(l)),top:Math.max(0,Math.round(c))}}(),u=a?r:e(document.elementFromPoint(d.left,d.top)),h={},f={},m=5,g=Math.ceil((le.hpi?Math.ceil(Le.data("rectangle").height/le.hpi*1.5):be)/m),y=function(){var e,n,i;for(i=0;i<m&&(e=u.attr("id"),e&&(le.getTmbs=[],n=t.cwdId2Hash(e),fe[n]=e,le.attachTmbs[n]&&(f[n]=le.attachTmbs[n]),c&&(h[e]=!0)),u=u.next(),u.length);i++);},w=function(){var e;Ue.data("selectable")&&(Object.assign(h,Q),e=Object.keys(h),e.length&&(he.filter="#"+e.join(", #"),Ue.selectable("enable").selectable("option",{filter:he.filter}).selectable("refresh"))),Object.keys(f).length&&(le.getTmbs=[],Ae(f))},x=function(){u.hasClass(v)||(u=u.closest(b))};if(fe={},c&&Ue.selectable("option","disabled"),u.length&&(u.hasClass(v)||u.closest(b).length||(l=t.getUI().find(".ui-dialog:visible,.ui-widget:visible"),l.length?(l.hide(),u=e(document.elementFromPoint(d.left,d.top)),l.show()):l=null),x(),u.length||(l&&l.hide(),u=e(document.elementFromPoint(d.left,d.top+5)),l&&l.show(),x())),u.length){if(u.attr("id"))if(a){for(var k=0;k<g&&(y(),u.length);k++);w()}else le.repaintJob&&"pending"===le.repaintJob.state()&&le.repaintJob.reject(),s=new Array(g),le.repaintJob=t.asyncJob(function(){y(),u.length||(w(),le.repaintJob&&"pending"===le.repaintJob.state()&&le.repaintJob.reject())},s).done(w)}else a&&le.renderd&&(o=o||0,o<10&&requestAnimationFrame(function(){me(a,++o)}))}}},ge=null,ve=function(n){var i=t.cwd().phash,a=t.file(i)||null,o=function(n){n&&(ge=e(X(e.extend(!0,{},n,{name:"..",i18:"..",mime:"directory"}))).addClass("elfinder-cwd-parent").on("dblclick",function(){var e=t.cwdId2Hash(this.id);t.trigger("select",{selected:[e]}).exec("open",e)}),(p?ge.children("td:first"):ge).children(".elfinder-cwd-select").remove(),(p?Ue.find("tbody"):Ue).prepend(ge),t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1))};a?o(a):t.getUI("tree").length?t.one("parents",function(){o(t.file(i)||null),Pe.trigger(pe)}):t.request({data:{cmd:"parents",target:t.cwd().hash},preventFail:!0}).done(function(e){o(t.file(i)||null),Pe.trigger(pe)})},be=t.options.showFiles,ye=function(){if(!(le.rendering||le.renderd&&!se.length)){var i,a,o=p?Ue.children("table").children("tbody"):Ue,r=!!e.htmlPrefilter,s=e(r?document.createDocumentFragment():"<div/>"),l=function(n){var i,a,l,c=n||null,h=[],f=!1,m={},g="self"===t.option("tmbUrl"),v=!le.renderd;i=se.splice(0,be+(c||0)/(le.hpi||1)),le.renderd+=i.length,se.length||(Re.hide(),Pe.off(pe,ye)),a=[],h=e.map(i,function(e){return e.hash&&e.name?("directory"==e.mime&&(f=!0),(e.tmb&&(1!=e.tmb||e.size>0)||g&&0===e.mime.indexOf("image/"))&&(m[e.hash]=e.tmb||"self"),j[e.hash]&&a.push(e.hash),X(e)):null}),s.empty().append(h.join("")),f&&!d&&Te(s),l=[],Object.keys(Q).length&&s.find("[id]:not(."+y+"):not(.elfinder-cwd-parent)").each(function(){Q[t.cwdId2Hash(this.id)]&&l.push(e(this))}),o.append(r?s:s.children()),l.length&&(e.each(l,function(e,t){t.trigger(u)}),oe()),a.length&&t.trigger("lockfiles",{files:a}),!le.hpi&&De(o,i.length),p&&(Ue.find("thead").show(),ke({fitWidth:!_})),Object.keys(m).length&&Object.assign(le.attachTmbs,m),v&&(d||Ue.data("selectable")||Ue.selectable(he).data("selectable",!0)),!ue&&Pe.trigger(pe)};le.renderd||(le.rendering=!0,Pe.scrollTop(0),i=t.cwd().phash,l(),n.oldSchool&&(i&&!O?ve(i):ge=e()),p&&(_&&Ce(),ke({fitWidth:!0})),le.itemH=(p?o.find("tr:first"):o.find("[id]:first")).outerHeight(!0),t.trigger("cwdrender"),le.rendering=!1,me(!0)),!le.rendering&&se.length?(a=Pe.height()+Pe.scrollTop()+t.options.showThreshold+le.row-le.renderd*le.hpi)>0?(le.rendering=!0,t.lazy(function(){l(a),le.rendering=!1})):!t.enabled()&&_e():_e()}},we=null,xe=t.UA.CSS.positionSticky&&t.UA.CSS.widthMaxContent,ke=function(a){if(i=0,n.listView.fixedHeader){var o,r,s,l,c,d,p,u,h,f,m,g,v,b=function(){var e,n;n="ltr"===t.direction?"left":"right",e=("ltr"===t.direction?Pe.scrollLeft():s.outerWidth(!0)-Pe.width()-Pe.scrollLeft())*-1,r.css(n)!==e&&r.css(n,e)},y=a||{};if(c=Ue.find("tbody"),u=c.children("tr:first"),u.length&&u.is(":visible")){if(s=c.parent(),we?(l=e("#"+t.namespace+"-cwd-thead"),p=l.children("tr:first")):(v=!0,c.addClass("elfinder-cwd-fixheader"),l=Ue.find("thead").attr("id",t.namespace+"-cwd-thead"),p=l.children("tr:first"),d=p.outerHeight(!0),Ue.css("margin-top",d-parseInt(s.css("padding-top"))),xe?(we=e('<div class="elfinder-table-header-sticky"/>').addClass(Ue.attr("class")).append(e("<table/>").append(l)),Ue.after(we),Pe.on("resize.fixheader",function(e){e.stopPropagation(),ke({fitWidth:!0})})):(r=e("<div/>").addClass(Ue.attr("class")).append(e("<table/>").append(l)),we=e("<div/>").addClass(Pe.attr("class")+" elfinder-cwd-fixheader").removeClass("ui-droppable native-droppable").css(Pe.position()).css({height:d,width:Ue.outerWidth()}).append(r),"rtl"===t.direction&&we.css("left",Pe.data("width")-Pe.width()+"px"),b(),Pe.after(we).on("scroll.fixheader resize.fixheader",function(e){b(),"resize"===e.type&&(e.stopPropagation(),we.css(Pe.position()),Pe.data("width",Pe.css("overflow","hidden").width()),Pe.css("overflow","auto"),ke())}))),v||y.fitWidth||Math.abs(u.outerWidth()-p.outerWidth())>2){o=E.length+1;for(var w=0;w<o&&(h=p.children("td:eq("+w+")"),f=u.children("td:eq("+w+")"),m=h.width(),g=f.width(),"undefined"==typeof h.data("delta")&&h.data("delta",h.outerWidth()-m-(f.outerWidth()-g)),g-=h.data("delta"),v||y.fitWidth||m!==g);w++)h.css("width",g+"px")}xe||(we.data("widthTimer")&&cancelAnimationFrame(we.data("widthTimer")),we.data("widthTimer",requestAnimationFrame(function(){we&&(we.css("width",We.width()+"px"),"rtl"===t.direction&&we.css("left",Pe.data("width")-Pe.width()+"px"))}))),i=l.height()}}},Ce=function(){if(p&&_){var t,n="elfinder-cwd-colwidth",i=Ue.find("tr[id]:first");i.hasClass(n)||(t=Ue.find("tr."+n),t.removeClass(n).find("td").css("width",""),i.addClass(n),Ue.find("table:first").css("table-layout","fixed"),e.each(e.merge(["name"],E),function(e,t){var n=_[t]||i.find("td.elfinder-col-"+t).width();i.find("td.elfinder-col-"+t).width(n)}))}},ze=Object.assign({},t.droppable,{over:function(n,i){var a,o,r,s=e(this),l=i.helper,c=n.shiftKey||n.ctrlKey||n.metaKey;return n.stopPropagation(),l.data("dropover",l.data("dropover")+1),s.data("dropover",!0),l.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"),l.data("namespace")===t.namespace&&t.insideWorkzone(n.pageX,n.pageY)?(s.hasClass(t.res(g,"cwdfile"))?(a=t.cwdId2Hash(s.attr("id")),s.data("dropover",a)):(a=t.cwd().hash,t.cwd().write&&s.data("dropover",a)),
r=t.file(l.data("files")[0]).phash===a,s.data("dropover")===a?e.each(l.data("files"),function(e,t){if(t===a||r&&!c&&!l.hasClass("elfinder-drag-helper-plus"))return s.removeClass(T),!1}):s.removeClass(T),l.data("locked")||r?o="elfinder-drag-helper-plus":(o="elfinder-drag-helper-move",c&&(o+=" elfinder-drag-helper-plus")),s.hasClass(T)&&l.addClass(o),void requestAnimationFrame(function(){s.hasClass(T)&&l.addClass(o)})):void s.removeClass(T)},out:function(t,n){var i=n.helper;t.stopPropagation(),i.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus").data("dropover",Math.max(i.data("dropover")-1,0)),e(this).removeData("dropover").removeClass(T)},deactivate:function(){e(this).removeData("dropover").removeClass(T)},drop:function(e,n){ne({notrigger:!0}),t.droppable.drop.call(this,e,n)}}),Te=function(n){n=n?n:p?Ue.find("tbody"):Ue;var i=n.children(".directory:not(."+k+",.elfinder-na,.elfinder-ro)");t.isCommandEnabled("paste")&&i.droppable(ze),t.isCommandEnabled("upload")&&i.addClass("native-droppable"),n.children(".isroot").each(function(n,i){var a=e(i),o=t.cwdId2Hash(i.id);t.isCommandEnabled("paste",o)?a.hasClass(k+",elfinder-na,elfinder-ro")||a.droppable(ze):a.hasClass(k)&&a.droppable("destroy"),t.isCommandEnabled("upload",o)?a.hasClass("native-droppable,elfinder-na,elfinder-ro")||a.addClass("native-droppable"):a.hasClass("native-droppable")&&a.removeClass("native-droppable")})},Ae=function(n,i){var a=function(t,n){e("<img/>").on("load",function(){t.find(".elfinder-cwd-icon").addClass(n.className).css("background-image","url('"+n.url+"')")}).attr("src",n.url)},o=function(e,n){var o,r,s=t.cwdHash2Elm(e);s.length&&("1"!=n?(o=t.file(e),o.tmb!==n&&(o.tmb=n),r=t.tmb(o),i?s.find(".elfinder-cwd-icon").addClass(r.className).css("background-image","url('"+r.url+"')"):a(s,r),delete le.attachTmbs[e]):i?Se([e]):le.tmbLoading[e]||le.getTmbs.push(e))};e.isPlainObject(n)&&Object.keys(n).length&&(Object.assign(le.attachTmbs,n),e.each(n,o),i||!le.getTmbs.length||Object.keys(le.tmbLoading).length||Se())},Se=function(n){var i=[],a=!1;return t.oldAPI?void t.request({data:{cmd:"tmb",current:t.cwd().hash},preventFail:!0}).done(function(e){e.images&&Object.keys(e.images).length&&Ae(e.images),e.tmb&&Se()}):(n?(a=!0,i=n.splice(0,I)):i=le.getTmbs.splice(0,I),void(i.length&&(a||fe[i[0]]||fe[i[i.length-1]])&&(e.each(i,function(e,t){le.tmbLoading[t]=!0}),t.request({data:{cmd:"tmb",targets:i},preventFail:!0}).done(function(t){var o,r=[];t.images&&((o=Object.keys(t.images).length)?(o<i.length&&e.each(i,function(e,n){t.images[n]||r.push(n)}),Ae(t.images,a)):r=i,r.length&&e.each(r,function(e,t){delete le.attachTmbs[t]})),a&&n.length&&Se(n)}).always(function(){le.tmbLoading={},!a&&le.getTmbs.length&&Se()}))))},Ie=function(n,i){var a,o,r,s,l,c,u=p?Ue.find("tbody"):Ue,h=n.length,f={},m=function(e){for(var n,i=Ue.find("[id]:first");i.length;){if(n=t.file(t.cwdId2Hash(i.attr("id"))),!i.hasClass("elfinder-cwd-parent")&&n&&t.compare(e,n)<0)return i;i=i.next("[id]")}},g=function(e){var n,i=se.length;for(n=0;n<i;n++)if(t.compare(e,se[n])<0)return n;return i||-1},v=!!e.htmlPrefilter,b=e(v?document.createDocumentFragment():"<div/>");if(h>be)Ee(),Q=t.arrayFlip(e.map(n,function(e){return e.hash}),!0),oe();else{for(h&&Le.removeClass("elfinder-cwd-wrapper-empty"),c="self"===t.option("tmbUrl");h--;)a=n[h],o=a.hash,t.cwdHash2Elm(o).length||((r=m(a))&&!r.length&&(r=null),!r&&(l=g(a))>=0?se.splice(l,0,a):(b.empty().append(X(a)),"directory"===a.mime&&!d&&Te(b),s=v?b:b.children(),r?r.before(s):u.append(s)),t.cwdHash2Elm(o).length&&(a.tmb&&(1!=a.tmb||a.size>0)||c&&0===a.mime.indexOf("image/"))&&(f[o]=a.tmb||"self"));p&&(Ce(),ke({fitWidth:!_})),De(u),Object.keys(f).length&&Object.assign(le.attachTmbs,f)}},Oe=function(n){var i,a,o,r,s=n.length,l=t.searchStatus.state>1,c=t.getCommand(t.currentReqCmd)||{};if(!t.cwd().hash&&!c.noChangeDirOnRemovedCwd)return e.each(M.reverse(),function(e,n){if(t.file(n))return r=!0,t.one(t.currentReqCmd+"done",function(){!t.cwd().hash&&t.exec("open",n)}),!1}),void(!r&&!t.cwd().hash&&t.exec("open",t.roots[Object.keys(t.roots)[0]]));for(;s--;){if(i=n[s],(a=t.cwdHash2Elm(i)).length)try{a.remove(),--le.renderd}catch(d){t.debug("error",d)}else(o=ce(i))!==-1&&se.splice(o,1);Q[i]&&delete Q[i],l&&(o=e.inArray(i,D))!==-1&&D.splice(o,1)}l&&t.trigger("cwdhasheschange",D),p&&(Ce(),ke({fitWidth:!_}))},je=function(){for(var e="",n="",i=0;i<E.length;i++)e=t.getColumnName(E[i]),n+='<td class="elfinder-cwd-view-th-'+E[i]+' sortable-item">'+e+"</td>";return n},Me=function(e){var t,n;e.height||(t=p?Ue.find("tbody"):Ue,n=t.find(p?"tr:first":"[id]:first"),e.height=n.outerHeight(!0),p||(e.width=n.outerWidth(!0)))},De=function(e,n){var i,a=e||(p?Ue.find("tbody"):Ue),o=Ke[t.viewType],r=1;se.length>0&&(le.hpi?p||(r=Math.floor(a.width()/o.width)):(Me(o),p?le.row=le.hpi=o.height:(r=Math.floor(a.width()/o.width),le.row=o.height,le.hpi=le.row/r)),i=Math.ceil((se.length+(n||0))/r),p&&we&&++i,Re.css({top:le.row*i+"px"}).show())},Fe={contextmenu:function(e){return e.preventDefault(),void 0!==Ue.data("longtap")?void e.stopPropagation():void t.trigger("contextmenu",{type:"cwd",targets:[t.cwd().hash],x:e.pageX,y:e.pageY})},touchstart:function(e){e.originalEvent.touches.length>1||(Ue.data("longtap")!==!1&&(Pe.data("touching",{x:e.originalEvent.touches[0].pageX,y:e.originalEvent.touches[0].pageY}),Ue.data("tmlongtap",setTimeout(function(){Ue.data("longtap",!0),t.trigger("contextmenu",{type:"cwd",targets:[t.cwd().hash],x:Pe.data("touching").x,y:Pe.data("touching").y})},500))),Ue.data("longtap",null))},touchend:function(e){"touchmove"===e.type?(!Pe.data("touching")||Math.abs(Pe.data("touching").x-e.originalEvent.touches[0].pageX)+Math.abs(Pe.data("touching").y-e.originalEvent.touches[0].pageY)>4)&&Pe.data("touching",null):setTimeout(function(){Ue.removeData("longtap")},80),clearTimeout(Ue.data("tmlongtap"))},click:function(e){Ue.data("longtap")&&(e.preventDefault(),e.stopPropagation())}},Ee=function(){t.lazy(function(){var n;Le.append(qe).removeClass("elfinder-cwd-wrapper-empty elfinder-search-result elfinder-incsearch-result elfinder-letsearch-result"),(t.searchStatus.state>1||t.searchStatus.ininc)&&Le.addClass("elfinder-search-result"+(t.searchStatus.ininc?" elfinder-"+("/"===O.substr(0,1)?"let":"inc")+"search-result":"")),le.attachThumbJob&&le.attachThumbJob._abort(),Ue.data("selectable")&&Ue.selectable("disable").selectable("destroy").removeData("selectable"),t.trigger("cwdinit"),G=e();try{Ue.empty()}catch(i){Ue.html("")}we&&(Pe.off("scroll.fixheader resize.fixheader"),we.remove(),we=null),Ue.removeClass("elfinder-cwd-view-icons elfinder-cwd-view-list").addClass("elfinder-cwd-view-"+(p?"list":"icons")).attr("style","").css("height","auto"),Re.hide(),Pe[p?"addClass":"removeClass"]("elfinder-cwd-wrapper-list")._padding=parseInt(Pe.css("padding-top"))+parseInt(Pe.css("padding-bottom")),t.UA.iOS&&Pe.removeClass("overflow-scrolling-touch").addClass("overflow-scrolling-touch"),p&&(Ue.html("<table><thead/><tbody/></table>"),n=e('<tr class="ui-state-default"><td class="elfinder-cwd-view-th-name">'+t.getColumnName("name")+"</td>"+je()+"</tr>"),Ue.find("thead").hide().append(n).find("td:first").append(qe),e.fn.sortable&&n.addClass("touch-punch touch-punch-keep-default").sortable({axis:"x",distance:8,items:"> .sortable-item",start:function(t,n){e(n.item[0]).data("dragging",!0),n.placeholder.width(n.helper.removeClass("ui-state-hover").width()).removeClass("ui-state-active").addClass("ui-state-hover").css("visibility","visible")},update:function(n,i){var a,o,r=e(i.item[0]).attr("class").split(" ")[0].replace("elfinder-cwd-view-th-","");E=e.map(e(this).children(),function(t){var n=e(t).attr("class").split(" ")[0].replace("elfinder-cwd-view-th-","");return o||(r===n?o=!0:a=n),"name"===n?null:n}),N.row=R(),t.storage("cwdCols",E),a=".elfinder-col-"+a+":first",r=".elfinder-col-"+r+":first",t.lazy(function(){Ue.find("tbody tr").each(function(){var t=e(this);t.children(a).after(t.children(r))})})},stop:function(t,n){setTimeout(function(){e(n.item[0]).removeData("dragging")},100)}}),n.find("td").addClass("touch-punch").resizable({handles:"ltr"===t.direction?"e":"w",start:function(t,n){var i=Ue.find("td.elfinder-col-"+n.element.attr("class").split(" ")[0].replace("elfinder-cwd-view-th-","")+":first");n.element.data("dragging",!0).data("resizeTarget",i).data("targetWidth",i.width()),H=!0,"fixed"!==Ue.find("table").css("table-layout")&&(Ue.find("tbody tr:first td").each(function(){e(this).width(e(this).width())}),Ue.find("table").css("table-layout","fixed"))},resize:function(e,t){t.element.data("resizeTarget").width(t.element.data("targetWidth")-(t.originalSize.width-t.size.width))},stop:function(n,i){H=!1,ke({fitWidth:!0}),_={},Ue.find("tbody tr:first td").each(function(){var t=e(this).attr("class").split(" ")[0].replace("elfinder-col-","");_[t]=e(this).width()}),t.storage("cwdColWidth",_),setTimeout(function(){i.element.removeData("dragging")},100)}}).find(".ui-resizable-handle").addClass("ui-icon ui-icon-grip-dotted-vertical")),se=e.map(F||D,function(e){return t.file(e)||null}),se=t.sortFiles(se),F?F=e.map(se,function(e){return e.hash}):D=e.map(se,function(e){return e.hash}),le={renderd:0,attachTmbs:{},getTmbs:[],tmbLoading:{},lazyOpts:{tm:0}},Le[se.length<1?"addClass":"removeClass"]("elfinder-cwd-wrapper-empty"),Pe.off(pe,ye).on(pe,ye).trigger(pe),t.cwd().write?(Pe[t.isCommandEnabled("upload")?"addClass":"removeClass"]("native-droppable"),Pe.droppable(t.isCommandEnabled("paste")?"enable":"disable")):Pe.removeClass("native-droppable").droppable("disable").removeClass("ui-state-disabled")})},Ue=e(this).addClass("ui-helper-clearfix elfinder-cwd").attr("unselectable","on").on("click."+t.namespace,b,function(n){var i,a,o,r,s,l=this.id?e(this):e(this).parents("[id]:first"),c=e(n.target);if(q&&(c.is("input:checkbox."+S)||c.hasClass("elfinder-cwd-select")))return n.stopPropagation(),n.preventDefault(),l.trigger(l.hasClass(y)?h:u),oe(),void requestAnimationFrame(function(){c.prop("checked",l.hasClass(y))});if(Ue.data("longtap")||c.hasClass("elfinder-cwd-nonselect"))return void n.stopPropagation();if(U||(U=l.attr("id"),setTimeout(function(){U=""},500)),n.shiftKey&&(i=l.prevAll(ae||"."+y+":first"),a=l.nextAll(ae||"."+y+":first"),o=i.length,r=a.length),n.shiftKey&&(o||r))s=o?l.prevUntil("#"+i.attr("id")):l.nextUntil("#"+a.attr("id")),s.add(l).trigger(u);else if(n.ctrlKey||n.metaKey)l.trigger(l.hasClass(y)?h:u);else{if(Pe.data("touching")&&l.hasClass(y))return Pe.data("touching",null),void t.dblclick({file:t.cwdId2Hash(this.id)});ne({notrigger:!0}),l.trigger(u)}oe()}).on("dblclick."+t.namespace,b,function(n){if(U){var i=t.cwdId2Hash(U);n.stopPropagation(),this.id!==U&&(e(this).trigger(h),e("#"+U).trigger(u),oe()),t.dblclick({file:i})}}).on("touchstart."+t.namespace,b,function(n){if(!(n.originalEvent.touches.length>1)){var i,a=this.id?e(this):e(this).parents("[id]:first"),o=e(n.target),r=n.target.nodeName;if("INPUT"===r&&"text"===n.target.type||"TEXTAREA"===r||o.hasClass("elfinder-cwd-nonselect"))return void n.stopPropagation();if(a.find("input:text,textarea").length)return n.stopPropagation(),void n.preventDefault();Pe.data("touching",{x:n.originalEvent.touches[0].pageX,y:n.originalEvent.touches[0].pageY}),q&&(o.is("input:checkbox."+S)||o.hasClass("elfinder-cwd-select"))||(i=a.prevAll("."+y+":first").length+a.nextAll("."+y+":first").length,Ue.data("longtap",null),(Object.keys(Q).length||p&&"TD"!==n.target.nodeName||!p&&this!==n.target)&&(Ue.data("longtap",!1),a.addClass(C),a.data("tmlongtap",setTimeout(function(){Ue.data("longtap",!0),a.trigger(u),oe(),t.trigger("contextmenu",{type:"files",targets:t.selected(),x:n.originalEvent.touches[0].pageX,y:n.originalEvent.touches[0].pageY})},500))))}}).on("touchmove."+t.namespace+" touchend."+t.namespace,b,function(n){var i,a=e(n.target);if(!q||!a.is("input:checkbox."+S)&&!a.hasClass("elfinder-cwd-select")){if("INPUT"==n.target.nodeName||"TEXTAREA"==n.target.nodeName)return void n.stopPropagation();i=this.id?e(this):e(this).parents("[id]:first"),clearTimeout(i.data("tmlongtap")),"touchmove"===n.type?(Pe.data("touching",null),i.removeClass(C)):(Pe.data("touching")&&!Ue.data("longtap")&&i.hasClass(y)&&(n.preventDefault(),Pe.data("touching",null),t.dblclick({file:t.cwdId2Hash(this.id)})),setTimeout(function(){Ue.removeData("longtap")},80))}}).on("mouseenter."+t.namespace,b,function(n){if(!ue){var i=e(this),a=null;if(!(d||i.data("dragRegisted")||i.hasClass(A)||i.hasClass(x)||i.hasClass(w))){if(i.data("dragRegisted",!0),!t.isCommandEnabled("copy",t.searchStatus.state>1||i.hasClass("isroot")?t.cwdId2Hash(i.attr("id")):void 0))return;i.on("mousedown",function(n){var a=n.shiftKey||n.altKey,o=!1;a&&!t.UA.IE&&Ue.data("selectable")&&(Ue.selectable("disable").selectable("destroy").removeData("selectable"),requestAnimationFrame(function(){Ue.selectable(he).selectable("option",{disabled:!1}).selectable("refresh").data("selectable",!0)})),i.removeClass("ui-state-disabled"),a?i.draggable("option","disabled",!0).attr("draggable","true"):(i.hasClass(y)||(o=p?e(n.target).closest("span,tr").is("tr"):e(n.target).hasClass("elfinder-cwd-file")),o?i.draggable("option","disabled",!0):i.draggable("option","disabled",!1).removeAttr("draggable").draggable("option","cursorAt",{left:50-parseInt(e(n.currentTarget).css("margin-left")),top:47}))}).on("dragstart",function(n){var i=n.dataTransfer||n.originalEvent.dataTransfer||null;if(a=null,i&&!t.UA.IE){var o,r=this.id?e(this):e(this).parents("[id]:first"),s=e("<span>"),l="",c=null,d=null,p=[],h=function(n){var i,a=n.mime,o=t.tmb(n);return i='<div class="elfinder-cwd-icon elfinder-cwd-icon-drag '+t.mime2class(a)+' ui-corner-all"/>',o&&(i=e(i).addClass(o.className).css("background-image","url('"+o.url+"')").get(0).outerHTML),i},f=[];if(r.trigger(u),oe(),e.each(Q,function(n){var i=t.file(n),a=i.url;if(i&&"directory"!==i.mime){if(a){if("1"==a)return f.push(n),!0}else a=t.url(i.hash);a&&(a=t.convAbsUrl(a),p.push(n),e("<a>").attr("href",a).text(a).appendTo(s),l+=a+"\n",c||(c=i.mime+":"+i.name+":"+a),d||(d=a+"\n"+i.name))}}),f.length)return e.each(f,function(e,n){var i=t.file(n);i.url="",t.request({data:{cmd:"url",target:n},notify:{type:"url",cnt:1},preventDefault:!0}).always(function(e){i.url=e.url?e.url:"1"})}),!1;if(!l)return!1;i.setDragImage&&(a=e('<div class="elfinder-drag-helper html5-native"></div>').append(h(t.file(p[0]))).appendTo(e(document.body)),(o=p.length)>1&&a.append(h(t.file(p[o-1]))+'<span class="elfinder-drag-num">'+o+"</span>"),i.setDragImage(a.get(0),50,47)),i.effectAllowed="copyLink",i.setData("DownloadURL",c),i.setData("text/x-moz-url",d),i.setData("text/uri-list",l),i.setData("text/plain",l),i.setData("text/html",s.html()),i.setData("elfinderfrom",window.location.href+t.cwd().hash),i.setData("elfinderfrom:"+i.getData("elfinderfrom"),"")}}).on("dragend",function(e){ne({notrigger:!0}),a&&a.remove()}).draggable(t.draggable)}}}).on(u,b,function(n){var i=e(this),a=t.cwdId2Hash(i.attr("id"));J||i.hasClass(w)||(ae="#"+this.id,i.addClass(y).children().addClass(C).find("input:checkbox."+S).prop("checked",!0),Q[a]||(Q[a]=!0),G=Ue.find("[id]."+y+":last").next())}).on(h,b,function(n){var i=e(this),a=t.cwdId2Hash(i.attr("id"));J||(i.removeClass(y).children().removeClass(C).find("input:checkbox."+S).prop("checked",!1),Ue.hasClass("elfinder-cwd-allselected")&&(q&&qe.children("input").prop("checked",!1),Ue.removeClass("elfinder-cwd-allselected")),Q[a]&&delete Q[a])}).on(f,b,function(){var t=e(this).removeClass(C+" "+y).addClass(w),n=t.children(),i=p?t:n.find("div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename");n.removeClass(C+" "+y),t.hasClass(k)&&t.droppable("disable"),i.hasClass(x)&&i.draggable("disable")}).on(m,b,function(){var t=e(this).removeClass(w),n=p?t:t.children("div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename");t.hasClass(k)&&t.droppable("enable"),n.hasClass(x)&&n.draggable("enable")}).on("scrolltoview",b,function(t,n){re(e(this),!n||"undefined"==typeof n.blink||n.blink)}).on("mouseenter."+t.namespace+" mouseleave."+t.namespace,b,function(n){var i="mouseenter"===n.type;i&&(ue||t.UA.Mobile)||(t.trigger("hover",{hash:t.cwdId2Hash(e(this).attr("id")),type:n.type}),e(this).toggleClass(C,"mouseenter"==n.type))}).on("mouseenter."+t.namespace+" mouseleave."+t.namespace,".elfinder-cwd-file-wrapper,.elfinder-cwd-filename",function(t){var n="mouseenter"===t.type;n&&ue||e(this).closest(b).children(".elfinder-cwd-file-wrapper,.elfinder-cwd-filename").toggleClass(z,"mouseenter"==t.type)}).on("contextmenu."+t.namespace,function(n){var i=e(n.target).closest(b);if(i.get(0)!==n.target||Q[t.cwdId2Hash(i.get(0).id)])return i.find("input:text,textarea").length?void n.stopPropagation():void(i.length&&("TD"!=n.target.nodeName||Q[t.cwdId2Hash(i.get(0).id)])&&(n.stopPropagation(),n.preventDefault(),i.hasClass(w)||Pe.data("touching")||(i.hasClass(y)||(ne({notrigger:!0}),i.trigger(u),oe()),t.trigger("contextmenu",{type:"files",targets:t.selected(),x:n.pageX,y:n.pageY}))))}).on("click."+t.namespace,function(e){e.target!==this||Ue.data("longtap")||!e.shiftKey&&!e.ctrlKey&&!e.metaKey&&ne()}).on("create."+t.namespace,function(n,i){var a=p?Ue.find("tbody"):Ue,o=a.find(".elfinder-cwd-parent"),r=i.move||!1,s=e(X(i)).addClass(A),l=t.selected();l.length?r&&t.trigger("lockfiles",{files:l}):ne(),o.length?o.after(s):a.prepend(s),Ce(),Pe.scrollTop(0).scrollLeft(0)}).on("unselectall",ne).on("selectfile",function(e,n){t.cwdHash2Elm(n).trigger(u),oe()}).on("colwidth",function(){p&&(Ue.find("table").css("table-layout","").find("td").css("width",""),ke({fitWidth:!0}),t.storage("cwdColWidth",_=null))}).on("iconpref",function(e,t){Ue.removeClass(function(e,t){return(t.match(/\belfinder-cwd-size\S+/g)||[]).join(" ")}),s=t?parseInt(t.size)||0:0,p||(s>0&&Ue.addClass("elfinder-cwd-size"+s),le.renderd&&requestAnimationFrame(function(){Ke.icons={},le.hpi=null,De(Ue,le.renderd),me()}))}).on("onwheel"in document?"wheel":"mousewheel",function(e){var i,a,o;!p&&(e.ctrlKey&&!e.metaKey||!e.ctrlKey&&e.metaKey)&&(e.stopPropagation(),e.preventDefault(),i=Ue.data("wheelTm"),"undefined"!=typeof i?(clearTimeout(i),Ue.data("wheelTm",setTimeout(function(){Ue.removeData("wheelTm")},200))):(Ue.data("wheelTm",!1),a=s||0,o=e.originalEvent.deltaY?e.originalEvent.deltaY:-e.originalEvent.wheelDelta,o>0?s>0&&(a=s-1):s<n.iconsView.sizeMax&&(a=s+1),a!==s&&(t.storage("iconsize",a),Ue.trigger("iconpref",{size:a}))))}),Pe=e('<div class="elfinder-cwd-wrapper"/>').droppable(Object.assign({},ze,{autoDisable:!1})).on("contextmenu."+t.namespace,Fe.contextmenu).on("touchstart."+t.namespace,Fe.touchstart).on("touchmove."+t.namespace+" touchend."+t.namespace,Fe.touchend).on("click."+t.namespace,Fe.click).on("scroll."+t.namespace,function(){ue||(Ue.data("selectable")&&Ue.selectable("disable"),Pe.trigger(de)),ue=!0,le.scrtm&&cancelAnimationFrame(le.scrtm),le.scrtm&&Math.abs((le.scrolltop||0)-(le.scrolltop=this.scrollTop||e(this).scrollTop()))<5&&(le.scrtm=0,Pe.trigger(pe)),le.scrtm=requestAnimationFrame(function(){le.scrtm=0,Pe.trigger(pe)})}).on(pe,function(){ue=!1,me()}),Re=e("<div>&nbsp;</div>").css({position:"absolute",width:"1px",height:"1px"}).hide(),qe=q?e('<div class="elfinder-cwd-selectall"><input type="checkbox"/></div>').attr("title",t.i18n("selectall")).on("touchstart mousedown click",function(t){return t.stopPropagation(),t.preventDefault(),!e(this).data("pending")&&"click"!==t.type&&(qe.data("pending",!0),void(Ue.hasClass("elfinder-cwd-allselected")?(qe.find("input").prop("checked",!1),requestAnimationFrame(function(){ne()})):te()))}):e(),He=null,_e=function(t){var n=function(){if("undefined"!=typeof le.renderd){var t=0;Pe.siblings("div.elfinder-panel:visible").each(function(){t+=e(this).outerHeight(!0)}),Pe.height(Le.height()-t-Pe._padding)}};t&&n(),He&&cancelAnimationFrame(He),He=requestAnimationFrame(function(){!t&&n();var e,i;Ue.css("height","auto"),e=Pe[0].clientHeight-parseInt(Pe.css("padding-top"))-parseInt(Pe.css("padding-bottom"))-parseInt(Ue.css("margin-top")),i=Ue.outerHeight(!0),i<e&&Ue.height(e)}),p&&!H&&(t?Pe.trigger("resize.fixheader"):ke()),me()},Ne=e(this).parent().on("resize",_e),Le=Ne.children(".elfinder-workzone").append(Pe.append(this).append(Re)),We=e('<div class="elfinder-cwd-message-board"/>').insertAfter(Ue),Be=e('<div class="elfinder-cwd-expires" />'),$e=function(){var e,n,i;o&&clearTimeout(o),l&&t.volumeExpires[l]&&(n=t.volumeExpires[l]-+new Date/1e3,i=n%60+.1,e=Math.floor(n/60),Be.html(t.i18n(["minsLeft",e])).show(),e&&(o=setTimeout($e,1e3*i)))},Ke={icons:{},list:{}};t.UA.ltIE10||We.append(e('<div class="elfinder-cwd-trash" />').html(t.i18n("volume_Trash"))).append(Be),$=Object.assign($,n.replacement||{});try{_=t.storage("cwdColWidth")?t.storage("cwdColWidth"):null}catch(Ve){_=null}t.bind("columnpref",function(i){var a=i.data||{};(E=t.storage("cwdCols"))?(E=e.grep(E,function(e){return n.listView.columns.indexOf(e)!==-1}),n.listView.columns.length>E.length&&e.each(n.listView.columns,function(e,t){E.indexOf(t)===-1&&E.push(t)})):E=n.listView.columns;var o=t.storage("columnhides")||null;o&&Object.keys(o).length&&(E=e.grep(E,function(e){return!o[e]})),N.row=R(),p&&a.repaint&&Ee()}).trigger("columnpref"),d&&e("body").on("touchstart touchmove touchend",function(e){}),q&&Ue.addClass("elfinder-has-checkbox"),e(window).on("scroll."+t.namespace,function(){c&&cancelAnimationFrame(c),c=requestAnimationFrame(function(){Pe.trigger(pe)})}),e(document).on("keydown."+t.namespace,function(n){n.keyCode==e.ui.keyCode.ESCAPE&&(t.getUI().find(".ui-widget:visible").length||ne())}),t.one("init",function(){var n,i,a,o,s=document.createElement("style"),l=0;document.head&&(document.head.appendChild(s),n=s.sheet,n.insertRule('.elfinder-cwd-wrapper-empty .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyFolder")+'" }',l++),n.insertRule('.elfinder-cwd-wrapper-empty .native-droppable .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyFolder"+(d?"LTap":"Drop"))+'" }',l++),n.insertRule('.elfinder-cwd-wrapper-empty .ui-droppable-disabled .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyFolder")+'" }',l++),n.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptySearch")+'" }',l++),n.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-incsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyIncSearch")+'" }',l++),n.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-letsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+t.i18n("emptyLetSearch")+'" }',l++)),(o=t.storage("iconsize")||0)&&Ue.trigger("iconpref",{size:o}),d||(t.one("open",function(){n&&t.zIndex&&n.insertRule(".ui-selectable-helper{z-index:"+t.zIndex+";}",l++)}),a=e('<div style="position:absolute"/>'),i=t.getUI(),i.on("resize",function(e,t){var n;e.preventDefault(),e.stopPropagation(),t&&t.fullscreen&&(n=i.offset(),"on"===t.fullscreen?(a.css({top:n.top*-1,left:n.left*-1}).appendTo(i),he.appendTo=a):(a.detach(),he.appendTo="body"),Ue.data("selectable")&&Ue.selectable("option",{appendTo:he.appendTo}))})),r=t.getUI("tree").length}).bind("enable",function(){_e()}).bind("request.open",function(){le.getTmbs=[]}).one("open",function(){t.maxTargets&&(I=Math.min(t.maxTargets,I))}).bind("open add remove searchend",function(){var n=t.cwd().hash,i=this.type;if(("open"===i||"searchend"===i||t.searchStatus.state<2)&&(D=e.map(t.files(n),function(e){return e.hash}),t.trigger("cwdhasheschange",D)),"open"===i){var a=function(){var n=!1;return e.each(M,function(e,i){if(t.trashes[i])return n=!0,!1}),n},o=n&&(!t.file(n)||r)?r?function(){var n=e.Deferred();return t.one("treesync",function(e){e.data.always(function(){n.resolve()})}),n}():t.request({data:{cmd:"parents",target:t.cwd().hash},preventFail:!0}):null,s=t.cwd();s.volumeid!==l&&(Be.empty().hide(),l&&Pe.removeClass("elfinder-cwd-wrapper-"+l),l=s.volumeid,$e(),Pe.addClass("elfinder-cwd-wrapper-"+l)),e.when(o).done(function(){M=t.parents(s.hash),Pe[a()?"addClass":"removeClass"]("elfinder-cwd-wrapper-trash")}),F=void 0,ne({notrigger:!0}),Ee()}}).bind("search",function(n){D=e.map(n.data.files,function(e){return e.hash}),t.trigger("cwdhasheschange",D),F=void 0,t.searchStatus.ininc=!1,Ee(),t.autoSync("stop")}).bind("searchend",function(e){(O||F)&&(O="",F?t.trigger("incsearchend",e.data):e.data&&e.data.noupdate||Ee()),t.autoSync()}).bind("searchstart",function(e){ne(),O=e.data.query}).bind("incsearchstart",function(n){Q={},t.lazy(function(){var i,a,o="";a=O=n.data.query||"",a?("/"===a.substr(0,1)&&(a=a.substr(1),o="^"),i=new RegExp(o+a.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g,"\\$1"),"i"),F=e.grep(D,function(e){var n=t.file(e);return!(!n||!(n.name.match(i)||n.i18&&n.i18.match(i)))}),t.trigger("incsearch",{hashes:F,query:a}).searchStatus.ininc=!0,Ee(),t.autoSync("stop")):t.trigger("incsearchend")})}).bind("incsearchend",function(e){O="",t.searchStatus.ininc=!1,F=void 0,e.data&&e.data.noupdate||Ee(),t.autoSync()}).bind("sortchange",function(){var e=Pe.scrollLeft(),n=Ue.hasClass("elfinder-cwd-allselected");Ee(),t.one("cwdrender",function(){Pe.scrollLeft(e),n&&(Q=t.arrayFlip(F||D,!0)),(n||Object.keys(Q).length)&&oe()})}).bind("viewchange",function(){var e="list"==t.storage("view"),n=Ue.hasClass("elfinder-cwd-allselected");e!=p&&(p=e,t.viewType=p?"list":"icons",s&&t.one("cwdinit",function(){Ue.trigger("iconpref",{size:s})}),Ee(),_e(),n&&(Ue.addClass("elfinder-cwd-allselected"),qe.find("input").prop("checked",!0)),Object.keys(Q).length&&oe())}).bind("wzresize",function(){var e,n=p?Ue.find("tbody"):Ue;_e(!0),le.hpi&&De(n,n.find("[id]").length),e=Ue.offset(),Le.data("rectangle",Object.assign({width:Le.width(),height:Le.height(),cwdEdge:"ltr"===t.direction?e.left:e.left+Ue.width()},Le.offset())),le.itemH=(p?n.find("tr:first"):n.find("[id]:first")).outerHeight(!0)}).bind("changeclipboard",function(t){j={},t.data&&t.data.clipboard&&t.data.clipboard.length&&e.each(t.data.clipboard,function(e,t){t.cut&&(j[t.hash]=!0)})}).bind("resMixinMake",function(){Ce()}).bind("tmbreload",function(t){var n={},i=t.data&&t.data.files?t.data.files:null;e.each(i,function(e,t){t.tmb&&"1"!=t.tmb&&(n[t.hash]=t.tmb)}),Object.keys(n).length&&Ae(n,!0)}).add(function(n){var i=O?new RegExp(O.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g,"\\$1"),"i"):null,a=t.searchStatus.mime,o=t.searchStatus.state>1,r=o&&t.searchStatus.target?t.searchStatus.target:t.cwd().hash,s=t.path(r),l=function(n){var l,c;return l=n.phash===r,!l&&o&&(c=n.path||t.path(n.hash),l=s&&0===c.indexOf(s),!l&&t.searchStatus.mixed&&(l=!!e.grep(t.searchStatus.mixed,function(e){return 0===n.hash.indexOf(e)}).length)),l&&o&&(l=a?0===n.mime.indexOf(a):!!(n.name.match(i)||n.i18&&n.i18.match(i))),l},c=e.grep(n.data.added||[],function(e){return!!l(e)});Ie(c),2===t.searchStatus.state&&(e.each(c,function(t,n){e.inArray(n.hash,D)===-1&&D.push(n.hash)}),t.trigger("cwdhasheschange",D)),p&&_e(),Pe.trigger(pe)}).change(function(n){var i,a=t.cwd().hash,o=t.selected();O?e.each(n.data.changed||[],function(n,a){t.cwdHash2Elm(a.hash).length&&(Oe([a.hash]),Ie([a],"change"),e.inArray(a.hash,o)!==-1&&Z(a.hash),i=!0)}):e.each(e.grep(n.data.changed||[],function(e){return e.phash==a}),function(n,a){t.cwdHash2Elm(a.hash).length&&(Oe([a.hash]),Ie([a],"change"),e.inArray(a.hash,o)!==-1&&Z(a.hash),i=!0)}),i&&(t.trigger("cwdhasheschange",D),p&&_e(),Pe.trigger(pe)),oe()}).remove(function(e){var t=p?Ue.find("tbody"):Ue;Oe(e.data.removed||[]),oe(),se.length<1&&t.children(b).length<1?(Le.addClass("elfinder-cwd-wrapper-empty"),q&&qe.find("input").prop("checked",!1),Re.hide(),Pe.off(pe,ye),_e()):(De(t),Pe.trigger(pe))}).dragstart(function(t){var n=e(t.data.target),i=t.data.originalEvent;n.hasClass(v)&&(n.hasClass(y)||(!(i.ctrlKey||i.metaKey||i.shiftKey)&&ne({notrigger:!0}),n.trigger(u),oe())),Ue.removeClass(w).data("selectable")&&Ue.selectable("disable"),J=!0}).dragstop(function(){Ue.data("selectable")&&Ue.selectable("enable"),J=!1}).bind("lockfiles unlockfiles selectfiles unselectfiles",function(n){var i,a,o,r={lockfiles:f,unlockfiles:m,selectfiles:u,unselectfiles:h},s=r[n.type],l=n.data.files||[],c=l.length,d=n.data.helper||e();if(c>0&&(i=t.parents(l[0])),s!==u&&s!==h||(o=s===u,e.each(l,function(e,t){var n=Ue.hasClass("elfinder-cwd-allselected");Q[t]?(n&&(q&&qe.children("input").prop("checked",!1),Ue.removeClass("elfinder-cwd-allselected"),n=!1),!o&&delete Q[t]):o&&(Q[t]=!0)})),!d.data("locked")){for(;c--;)try{t.cwdHash2Elm(l[c]).trigger(s)}catch(n){}!n.data.inselect&&oe()}Pe.data("dropover")&&i.indexOf(Pe.data("dropover"))!==-1&&(a="lockfiles"!==n.type,d.toggleClass("elfinder-drag-helper-plus",a),Pe.toggleClass(T,a))}).bind("mkdir mkfile duplicate upload rename archive extract paste multiupload",function(n){if("upload"!=n.type||!n.data._multiupload){var i=t.cwd().hash;ne({notrigger:!0}),e.each((n.data.added||[]).concat(n.data.changed||[]),function(e,t){t&&t.phash==i&&Z(t.hash)}),oe()}}).shortcut({pattern:"ctrl+a",description:"selectall",callback:te}).shortcut({pattern:"ctrl+shift+i",description:"selectinvert",callback:ie}).shortcut({pattern:"left right up down shift+left shift+right shift+up shift+down",description:"selectfiles",type:"keydown",callback:function(e){Y(e.keyCode,e.shiftKey)}}).shortcut({pattern:"home",description:"selectffile",callback:function(e){ne({notrigger:!0}),re(Ue.find("[id]:first").trigger(u)),oe()}}).shortcut({pattern:"end",description:"selectlfile",callback:function(e){ne({notrigger:!0}),re(Ue.find("[id]:last").trigger(u)),oe()}}).shortcut({pattern:"page_up",description:"pageTurning",callback:function(e){le.itemH&&Pe.scrollTop(Math.round(Pe.scrollTop()-Math.floor((Pe.height()+(p?le.itemH*-1:16))/le.itemH)*le.itemH))}}).shortcut({pattern:"page_down",description:"pageTurning",callback:function(e){le.itemH&&Pe.scrollTop(Math.round(Pe.scrollTop()+Math.floor((Pe.height()+(p?le.itemH*-1:16))/le.itemH)*le.itemH))}})}),this},e.fn.elfinderdialog=function(t,n){var i,a,o,r,s=window.navigator.platform.indexOf("Win")!=-1,l={},c={enabled:!1,width:!1,height:!1,defaultSize:null},d=function(t){var i,a;c.enabled&&(a=n.options.dialogContained?o:e(window),i={maxWidth:c.width?a.width()-l.width:null,maxHeight:c.height?a.height()-l.height:null},Object.assign(r,i),t.css(i).trigger("resize"),t.data("hasResizable")&&(t.resizable("option","maxWidth")<i.maxWidth||t.resizable("option","maxHeight")<i.maxHeight)&&t.resizable("option",i))},p=function(e){var t=e.data;i&&cancelAnimationFrame(i),i=requestAnimationFrame(function(){c.enabled&&d(t)})},u=function(){var e="elfinder-dialog",t=o.children("."+e+"."+n.res("class","editing")+":visible");n[t.length?"disable":"enable"]()},h={};return n&&n.ui?o=n.getUI():(o=this.closest(".elfinder"),n||(n=o.elfinder("instance"))),"string"==typeof t?((a=this.closest(".ui-dialog")).length&&("open"===t?"none"===a.css("display")&&(a.trigger("posinit").show().trigger("open").hide(),a.fadeIn(120,function(){n.trigger("dialogopened",{dialog:a})})):"close"===t||"destroy"===t?(a.stop(!0),(a.is(":visible")||o.is(":hidden"))&&(a.trigger("close"),n.trigger("dialogclosed",{dialog:a})),"destroy"===t&&(a.remove(),n.trigger("dialogremoved",{dialog:a}))):"toTop"===t?(a.trigger("totop"),n.trigger("dialogtotoped",{dialog:a})):"posInit"===t?(a.trigger("posinit"),n.trigger("dialogposinited",{dialog:a})):"tabstopsInit"===t?(a.trigger("tabstopsInit"),n.trigger("dialogtabstopsinited",{dialog:a})):"checkEditing"===t&&u()),this):(t=Object.assign({},e.fn.elfinderdialog.defaults,t),t.allowMinimize&&"auto"===t.allowMinimize&&(t.allowMinimize=!!this.find("textarea,input").length),t.openMaximized=t.allowMinimize&&t.openMaximized,t.headerBtnPos&&"auto"===t.headerBtnPos&&(t.headerBtnPos=s?"right":"left"),t.headerBtnOrder&&"auto"===t.headerBtnOrder&&(t.headerBtnOrder=s?"close:maximize:minimize":"close:minimize:maximize"),t.modal&&t.allowMinimize&&(t.allowMinimize=!1),n.options.dialogContained?c.width=c.height=c.enabled=!0:(c.width="window"===t.maxWidth,
c.height="window"===t.maxHeight,(c.width||c.height)&&(c.enabled=!0)),h=n.arrayFlip(t.propagationEvents,!0),this.filter(":not(.ui-dialog-content)").each(function(){var i,a,f=e(this).addClass("ui-dialog-content ui-widget-content"),m="elfinder-dialog-active",g="elfinder-dialog",v="elfinder-dialog-notify",b="ui-state-hover",y="elfinder-tabstop",w="elfinder-focus",x="elfinder-dialog-modal",k=parseInt(1e6*Math.random()),C=e('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix"><span class="elfinder-dialog-title">'+t.title+"</span></div>"),z=e('<div class="ui-dialog-buttonset"/>'),T=e('<div class=" ui-helper-clearfix ui-dialog-buttonpane ui-widget-content"/>').append(z),A=0,S=0,I=e(),O=e('<div style="width:100%;height:100%;position:absolute;top:0px;left:0px;"/>').hide(),j=function(){t.optimizeNumber&&P.find("input[type=number]").each(function(){e(this).attr("inputmode","numeric"),e(this).attr("pattern","[0-9]*")})},M=function(){I=P.find("."+y),I.length&&(I.attr("tabindex","-1"),I.filter("."+w).length||z.children("."+y+":"+(s?"first":"last")).addClass(w))},D=function(t){var n=I.filter(":visible:enabled"),i=t?null:n.filter("."+w+":first");return i&&i.length||(i=n.first()),t&&e.each(n,function(e,a){if(a===t&&n[e+1])return i=n.eq(e+1),!1}),i},F=function(t){var n=I.filter(":visible:enabled"),i=n.last();return e.each(n,function(e,a){if(a===t&&n[e-1])return i=n.eq(e-1),!1}),i},E=function(){e.each(t.headerBtnOrder.split(":").reverse(),function(e,t){U[t]&&U[t]()}),s&&C.children(".elfinder-titlebar-button").addClass("elfinder-titlebar-button-right")},U={close:function(){C.prepend(e('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button"><span class="ui-icon ui-icon-closethick"/></span>').on("mousedown",function(e){e.preventDefault(),e.stopPropagation(),f.elfinderdialog("close")}))},maximize:function(){t.allowMaximize&&(P.on("resize",function(e,t){var n,i;if(e.preventDefault(),e.stopPropagation(),t&&t.maximize){if(i=C.find(".elfinder-titlebar-full"),n="on"===t.maximize,i.children("span.ui-icon").toggleClass("ui-icon-plusthick",!n).toggleClass("ui-icon-arrowreturnthick-1-s",n),n){try{P.hasClass("ui-draggable")&&P.draggable("disable"),P.hasClass("ui-resizable")&&P.resizable("disable")}catch(e){}f.css("width","100%").css("height",P.height()-P.children(".ui-dialog-titlebar").outerHeight(!0)-T.outerHeight(!0))}else{f.attr("style",i.data("style")),i.removeData("style"),R();try{P.hasClass("ui-draggable")&&P.draggable("enable"),P.hasClass("ui-resizable")&&P.resizable("enable")}catch(e){}}P.trigger("resize",{init:!0})}}),C.prepend(e('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-full"><span class="ui-icon ui-icon-plusthick"/></span>').on("mousedown",function(i){var a=e(this);i.preventDefault(),i.stopPropagation(),P.hasClass("elfinder-maximized")||"undefined"!=typeof a.data("style")||(f.height(f.height()),a.data("style",f.attr("style")||"")),n.toggleMaximize(P),"function"==typeof t.maximize&&t.maximize.call(f[0])})))},minimize:function(){var i,a,o;t.allowMinimize&&(i=e('<span class="ui-widget-header ui-corner-all elfinder-titlebar-button elfinder-titlebar-minimize"><span class="ui-icon ui-icon-minusthick"/></span>').on("mousedown",function(i){var r=e(this),s=n.getUI("bottomtray"),l={width:70,height:24},c=e("<div/>").css(l).addClass(P.get(0).className+" elfinder-dialog-minimized"),d={};i.preventDefault(),i.stopPropagation(),P.data("minimized")?(P.removeData("minimized").before(a.css(Object.assign({position:"absolute"},a.offset()))),n.toFront(a),a.animate(Object.assign({width:P.width(),height:P.height()},o),function(){P.show(),n.toFront(P),a.remove(),R(),u(),P.trigger("resize",{init:!0}),"function"==typeof t.minimize&&t.minimize.call(f[0])})):(o=P.data("minimized",!0).position(),a=P.clone().on("mousedown",function(){r.trigger("mousedown")}).removeClass("ui-draggable ui-resizable elfinder-frontmost"),s.append(c),Object.assign(d,c.offset(),l),c.remove(),a.height(P.height()).children(".ui-dialog-content:first").empty(),n.toHide(P.before(a)),a.children(".ui-dialog-content:first,.ui-dialog-buttonpane,.ui-resizable-handle").remove(),a.find(".elfinder-titlebar-minimize,.elfinder-titlebar-full").remove(),a.find(".ui-dialog-titlebar-close").on("mousedown",function(e){e.stopPropagation(),e.preventDefault(),a.remove(),P.show(),f.elfinderdialog("close")}),a.animate(d,function(){a.attr("style","").css({maxWidth:P.width()}).addClass("elfinder-dialog-minimized").appendTo(s),u(),"function"==typeof t.minimize&&t.minimize.call(f[0])}))}),C.on("dblclick",function(t){e(this).children(".elfinder-titlebar-minimize").trigger("mousedown")}).prepend(i),P.on("togleminimize",function(){i.trigger("mousedown")}))}},P=e('<div class="ui-front ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable std42-dialog touch-punch '+g+" "+t.cssClass+'"/>').hide().append(f).appendTo(o).draggable({containment:n.options.dialogContained?o:null,handle:".ui-dialog-titlebar",start:function(){O.show()},drag:function(e,t){var i=t.offset.top,a=t.offset.left;i<0&&(t.position.top=t.position.top-i),a<0&&(t.position.left=t.position.left-a),n.options.dialogContained&&(t.position.top<0&&(t.position.top=0),t.position.left<0&&(t.position.left=0))},stop:function(e,n){O.hide(),P.css({height:t.height}),f.data("draged",!0)}}).css({width:t.width,height:t.height,minWidth:t.minWidth,minHeight:t.minHeight,maxWidth:t.maxWidth,maxHeight:t.maxHeight}).on("touchstart touchmove touchend click dblclick mouseup mouseenter mouseleave mouseout mouseover mousemove",function(e){!h[e.type]&&e.stopPropagation()}).on("mousedown",function(t){!h[t.type]&&t.stopPropagation(),requestAnimationFrame(function(){P.is(":visible")&&!P.hasClass("elfinder-frontmost")&&(a=e(":focus"),a.length||(a=void 0),P.trigger("totop"))})}).on("open",function(){P.data("margin-y",f.outerHeight(!0)-f.height()),c.enabled&&(t.height&&"auto"!==t.height&&P.trigger("resize",{init:!0}),c.defaultSize||(c.defaultSize={width:f.width(),height:f.height()}),d(P),P.trigger("resize").trigger("posinit"),o.on("resize."+n.namespace,P,p)),P.hasClass(v)||o.children("."+g+":visible:not(."+v+")").each(function(){var t=e(this),n=parseInt(t.css("top")),i=parseInt(t.css("left")),a=parseInt(P.css("top")),o=parseInt(P.css("left")),r=Math.abs(n-a)<10,s=Math.abs(i-o)<10;t[0]!=P[0]&&(r||s)&&P.css({top:r?n+10:a,left:s?i+10:o})}),P.data("modal")&&(P.addClass(x),n.getUI("overlay").elfinderoverlay("show")),P.trigger("totop"),t.openMaximized&&n.toggleMaximize(P),n.trigger("dialogopen",{dialog:P}),"function"==typeof t.open&&e.proxy(t.open,f[0])(),t.closeOnEscape&&e(document).on("keydown."+k,function(t){t.keyCode==e.ui.keyCode.ESCAPE&&P.hasClass("elfinder-frontmost")&&f.elfinderdialog("close")}),P.hasClass(n.res("class","editing"))&&u()}).on("close",function(i){var a,r;t.beforeclose&&"function"==typeof t.beforeclose?(r=t.beforeclose(),r&&r.promise||(r=r?e.Deferred().resolve():e.Deferred().reject())):r=e.Deferred().resolve(),r.done(function(){c.enabled&&o.off("resize."+n.namespace,p),t.closeOnEscape&&e(document).off("keyup."+k),t.allowMaximize&&n.toggleMaximize(P,!1),n.toHide(P),P.data("modal")&&n.getUI("overlay").elfinderoverlay("hide"),"function"==typeof t.close&&e.proxy(t.close,f[0])(),t.destroyOnClose&&P.parent().length&&P.hide().remove(),a=o.children("."+g+":visible"),P.hasClass(n.res("class","editing"))&&u()})}).on("totop frontmost",function(){var e=n.storage("autoFocusDialog");P.data("focusOnMouseOver",e?e>0:n.options.uiOptions.dialog.focusOnMouseOver),P.data("minimized")&&C.children(".elfinder-titlebar-minimize").trigger("mousedown"),!P.data("modal")&&n.getUI("overlay").is(":visible")?n.getUI("overlay").before(P):n.toFront(P),o.children("."+g+":not(."+x+")").removeClass(m),P.addClass(m),!n.UA.Mobile&&(a||D()).trigger("focus"),a=void 0}).on("posinit",function(){var i,a,s,l,c,d,p,u=t.position;if(!P.hasClass("elfinder-maximized")){if(!u&&!P.data("resizing")){if(p=o.hasClass("elfinder-fullscreen"),P.css(p?{maxWidth:"100%",maxHeight:"100%",overflow:"auto"}:r),n.UA.Mobile&&!p&&P.data("rotated")===n.UA.Rotated)return;P.data("rotated",n.UA.Rotated),c=e(window),i=o.offset(),l={width:P.outerWidth(!0),height:P.outerHeight(!0)},l.right=i.left+l.width,l.bottom=i.top+l.height,d={scrLeft:c.scrollLeft(),scrTop:c.scrollTop(),width:c.width(),height:c.height()},d.right=d.scrLeft+d.width,d.bottom=d.scrTop+d.height,n.options.dialogContained||p?(a=0,s=0):(a=i.top*-1+d.scrTop,s=i.left*-1+d.scrLeft),u={top:l.height>=d.height?a:Math.max(a,parseInt((o.height()-l.height)/2-42)),left:l.width>=d.width?s:Math.max(s,parseInt((o.width()-l.width)/2))},l.right+u.left>d.right&&(u.left=Math.max(s,d.right-l.right)),l.bottom+u.top>d.bottom&&(u.top=Math.max(a,d.bottom-l.bottom))}t.absolute&&(u.position="absolute"),u&&P.css(u)}}).on("resize",function(n,i){var a,o,r=0,s=i&&i.init;i&&(i.minimize||i.maxmize)||P.data("minimized")||(n.stopPropagation(),n.preventDefault(),P.children(".ui-widget-header,.ui-dialog-buttonpane").each(function(){r+=e(this).outerHeight(!0)}),a=s||!c.enabled||n.originalEvent||P.hasClass("elfinder-maximized")?P.height()-r-P.data("margin-y"):Math.min(c.defaultSize.height,Math.max(parseInt(P.css("max-height")),parseInt(P.css("min-height")))-r-P.data("margin-y")),f.height(a),s||(R(),o=f.height(),o=a<o?o+r+P.data("margin-y"):t.minHeight,P.css("min-height",o),P.data("hasResizable")&&P.resizable("option",{minHeight:o}),"function"==typeof t.resize&&e.proxy(t.resize,f[0])(n,i)))}).on("tabstopsInit",M).on("focus","."+y,function(){e(this).addClass(b).parent("label").addClass(b),this.id&&e(this).parent().find("label[for="+this.id+"]").addClass(b)}).on("click","select."+y,function(){var t=e(this);t.data("keepFocus")?t.removeData("keepFocus"):t.data("keepFocus",!0)}).on("blur","."+y,function(){e(this).removeClass(b).removeData("keepFocus").parent("label").removeClass(b),this.id&&e(this).parent().find("label[for="+this.id+"]").removeClass(b)}).on("mouseenter mouseleave","."+y+",label",function(n){var i,a=e(this);("LABEL"!==this.nodeName||a.children("."+y).length||(i=a.attr("for"))&&e("#"+i).hasClass(y))&&(t.btnHoverFocus&&P.data("focusOnMouseOver")?"mouseenter"!==n.type||e(":focus").data("keepFocus")||a.trigger("focus"):a.toggleClass(b,"mouseenter"==n.type))}).on("keydown","."+y,function(t){var n,i,a=e(this);if(a.is(":focus")){if(n=t.keyCode===e.ui.keyCode.ESCAPE,t.keyCode===e.ui.keyCode.ENTER?(t.preventDefault(),a.trigger("click")):t.keyCode===e.ui.keyCode.TAB&&t.shiftKey||t.keyCode===e.ui.keyCode.LEFT||t.keyCode==e.ui.keyCode.UP?i="prev":t.keyCode!==e.ui.keyCode.TAB&&t.keyCode!=e.ui.keyCode.RIGHT&&t.keyCode!=e.ui.keyCode.DOWN||(i="next"),i&&(a.is("textarea")&&!t.ctrlKey&&!t.metaKey||a.is("select,span.ui-slider-handle")&&t.keyCode!==e.ui.keyCode.TAB||a.is("input:not(:checkbox,:radio)")&&!t.ctrlKey&&!t.metaKey&&t.keyCode===e.ui.keyCode["prev"===i?"LEFT":"RIGHT"]))return void t.stopPropagation();n?a.is("input:not(:checkbox,:radio),textarea")&&""!==a.val()&&(a.val(""),t.stopPropagation()):t.stopPropagation(),i&&(t.preventDefault(),("prev"===i?F:D)(this).trigger("focus"))}}).data({modal:t.modal}),R=function(){var e,t=n.getUI();t.hasClass("elfinder-fullscreen")&&(e=P.position(),P.css("top",Math.max(Math.min(Math.max(e.top,0),t.height()-100),0)),P.css("left",Math.max(Math.min(Math.max(e.left,0),t.width()-200),0)))};P.prepend(C),E(),e.each(t.buttons,function(t,n){var i=e('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only elfinder-btncnt-'+S++ +" "+y+'"><span class="ui-button-text">'+t+"</span></button>").on("click",e.proxy(n,f[0]));n._cssClass&&i.addClass(n._cssClass),s?z.append(i):z.prepend(i)}),z.children().length&&(P.append(T),P.show(),T.find("button").each(function(t,n){A+=e(n).outerWidth(!0)}),P.hide(),A+=20,P.width()<A&&P.width(A)),P.append(O),c.enabled&&(l.width=P.outerWidth(!0)-P.width()+(P.outerWidth()-P.width())/2,l.height=P.outerHeight(!0)-P.height()+(P.outerHeight()-P.height())/2),n.options.dialogContained&&(i={maxWidth:o.width()-l.width,maxHeight:o.height()-l.height},t.maxWidth=t.maxWidth?Math.min(i.maxWidth,t.maxWidth):i.maxWidth,t.maxHeight=t.maxHeight?Math.min(i.maxHeight,t.maxHeight):i.maxHeight,P.css(i)),r={maxWidth:P.css("max-width"),maxHeight:P.css("max-height"),overflow:P.css("overflow")},t.resizable&&P.resizable({minWidth:t.minWidth,minHeight:t.minHeight,maxWidth:t.maxWidth,maxHeight:t.maxHeight,start:function(){O.show(),P.data("resizing")!==!0&&P.data("resizing")&&clearTimeout(P.data("resizing")),P.data("resizing",!0)},stop:function(e,t){O.hide(),P.data("resizing",setTimeout(function(){P.data("resizing",!1)},200)),c.enabled&&(c.defaultSize={width:f.width(),height:f.height()})}}).data("hasResizable",!0),j(),M(),"function"==typeof t.create&&e.proxy(t.create,this)(),t.autoOpen&&(t.open?requestAnimationFrame(function(){f.elfinderdialog("open")}):f.elfinderdialog("open")),t.resize&&n.bind("themechange",function(){setTimeout(function(){P.data("margin-y",f.outerHeight(!0)-f.height()),P.trigger("resize",{init:!0})},300)})}),this)},e.fn.elfinderdialog.defaults={cssClass:"",title:"",modal:!1,resizable:!0,autoOpen:!0,closeOnEscape:!0,destroyOnClose:!1,buttons:{},btnHoverFocus:!0,position:null,absolute:!1,width:320,height:"auto",minWidth:200,minHeight:70,maxWidth:null,maxHeight:null,allowMinimize:"auto",allowMaximize:!1,openMaximized:!1,headerBtnPos:"auto",headerBtnOrder:"auto",optimizeNumber:!0,propagationEvents:["mousemove","mouseup"]},e.fn.elfinderfullscreenbutton=function(t){return this.each(function(){var n,i=e(this).elfinderbutton(t),a=i.children(".elfinder-button-icon");t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){var e=t.value;a.addClass("elfinder-button-icon-fullscreen").toggleClass("elfinder-button-icon-unfullscreen",e),t.className=e?"unfullscreen":""})})})},e.fn.elfindernavbar=function(t,n){return this.not(".elfinder-navbar").each(function(){var i,a,o,r,s,l,c,d=e(this).hide().addClass("ui-state-default elfinder-navbar"),p=d.css("overflow","hidden").parent(),u=p.children(".elfinder-workzone").append(d),h="ltr"==t.direction,f=function(){var e=t.getUI("cwd"),n=t.getUI("workzone"),i=n.data("rectangle"),a=e.offset();n.data("rectangle",Object.assign(i,{cwdEdge:"ltr"===t.direction?a.left:a.left+e.width()}))},m=function(){d.css("overflow","hidden"),i=Math.round(d.outerHeight()-d.height()),a=Math.round(c.outerWidth()-c.innerWidth()),d.css("overflow","auto")};t.one("init",function(){c=t.getUI("navdock");var e=function(){m(),t.bind("wzresize",function(){var e=0;c.width(d.outerWidth()-a),c.children().length>1&&(e=c.outerHeight(!0)),d.height(u.height()-e-i)}).trigger("wzresize")};t.cssloaded?e():t.one("cssloaded",e)}).one("opendone",function(){o&&o.trigger("resize"),d.css("overflow","auto")}).bind("themechange",m),t.UA.Touch&&(s=t.storage("autoHide")||{},"undefined"==typeof s.navbar&&(s.navbar=n.autoHideUA&&n.autoHideUA.length>0&&e.grep(n.autoHideUA,function(e){return!!t.UA[e]}).length,t.storage("autoHide",s)),s.navbar&&t.one("init",function(){d.children().length&&t.uiAutoHide.push(function(){d.stop(!0,!0).trigger("navhide",{duration:"slow",init:!0})})}),t.bind("load",function(){d.children().length&&(r=e('<div class="elfinder-navbar-swipe-handle"/>').hide().appendTo(u),"none"!==r.css("pointer-events")&&(r.remove(),r=null))}),d.on("navshow navhide",function(e,n){var i="navshow"===e.type?"show":"hide",a=n&&n.duration?n.duration:"fast",o=n&&n.handleW?n.handleW:Math.max(50,t.getUI().width()/10);d.stop(!0,!0)[i]({duration:a,step:function(){t.trigger("wzresize")},complete:function(){r&&("show"===i?r.stop(!0,!0).hide():(r.width(o?o:""),t.resources.blink(r,"slowonce"))),t.trigger("navbar"+i),n.init&&t.trigger("uiautohide"),f()}}),s.navbar="show"!==i,t.storage("autoHide",Object.assign(t.storage("autoHide"),{navbar:s.navbar}))}).on("touchstart",function(n){e(this)["scroll"+("ltr"===t.direction?"Right":"Left")]()>5&&(n.originalEvent._preventSwipeX=!0)})),t.UA.Mobile||(o=d.resizable({handles:h?"e":"w",minWidth:n.minWidth||150,maxWidth:n.maxWidth||500,resize:function(){t.trigger("wzresize")},stop:function(e,n){t.storage("navbarWidth",n.size.width),f()}}).on("resize scroll",function(n){var i=e(this),a=i.data("posinit");n.preventDefault(),n.stopPropagation(),h||"resize"!==n.type||d.css("left",0),a&&cancelAnimationFrame(a),i.data("posinit",requestAnimationFrame(function(){var e=t.UA.Opera&&d.scrollLeft()?20:2;o.css("top",0).css({top:parseInt(d.scrollTop())+"px",left:h?"auto":parseInt(d.scrollRight()-e)*-1,right:h?parseInt(d.scrollLeft()-e)*-1:"auto"}),"resize"===n.type&&t.getUI("cwd").trigger("resize")}))}).children(".ui-resizable-handle").addClass("ui-front")),(l=t.storage("navbarWidth"))?d.width(l):t.UA.Mobile&&t.one("cssloaded",function(){var n=function(){l=d.parent().width()/2,d.data("defWidth")>l?d.width(l):d.width(d.data("defWidth")),d.data("width",d.width()),t.trigger("wzresize")};d.data("defWidth",d.width()),e(window).on("resize."+t.namespace,n),n()})}),this},e.fn.elfindernavdock=function(t,n){return this.not(".elfinder-navdock").each(function(){var i,a,o=e(this).hide().addClass("ui-state-default elfinder-navdock touch-punch"),r=o.parent(),s=(r.children(".elfinder-workzone").append(o),function(n,i){var a,r=i||o.height(),s=n-r,l=Object.keys(c).length,d=l?s/l:0;s&&(a=o.css("overflow"),o.css("overflow","hidden"),o.height(n),e.each(c,function(e,n){n.height(n.height()+d).trigger("resize."+t.namespace)}),t.trigger("wzresize"),o.css("overflow",a))}),l=e('<div class="ui-front ui-resizable-handle ui-resizable-n"/>').appendTo(o),c={},d=(parseInt(n.initMaxHeight)||50)/100,p=(parseInt(n.maxHeight)||90)/100;o.data("addNode",function(e,n){var r,u,h,f=t.getUI("workzone").height(),m=f*d;return n=Object.assign({first:!1,sizeSync:!0,init:!1},n),e.attr("id")||e.attr("id",t.namespace+"-navdock-"+ +new Date),n.sizeSync&&(c[e.attr("id")]=e),r=o.height(),u=r+e.outerHeight(!0),n.first?l.after(e):o.append(e),a=!0,o.resizable("enable").height(u).show(),t.trigger("wzresize"),n.init&&(h=t.storage("navdockHeight"),u=h?h:u>m?m:u,i=u),s(Math.min(u,f*p)),o}).data("removeNode",function(n,i){var r=e("#"+n);return delete c[n],o.height(o.height()-e("#"+n).outerHeight(!0)),i?"detach"===i?r=r.detach():i.append(r):r.remove(),o.children().length<=1&&(a=!1,o.resizable("disable").height(0).hide()),t.trigger("wzresize"),r}),n.disabled||t.one("init",function(){var e;t.getUI("navbar").children().not(".ui-resizable-handle").length&&(o.data("dockEnabled",!0),o.resizable({maxHeight:t.getUI("workzone").height()*p,handles:{n:l},start:function(n,i){e=o.css("overflow"),o.css("overflow","hidden"),t.trigger("navdockresizestart",{event:n,ui:i},!0)},resize:function(e,n){o.css("top",""),t.trigger("wzresize",{inNavdockResize:!0})},stop:function(n,a){t.trigger("navdockresizestop",{event:n,ui:a},!0),o.css("top",""),i=a.size.height,t.storage("navdockHeight",i),s(i,a.originalSize.height),o.css("overflow",e)}}),t.bind("wzresize",function(e){var n,a;o.is(":visible")&&(n=t.getUI("workzone").height()*p,e.data&&e.data.inNavdockResize||(a=o.height(),n<i?Math.abs(a-n)>1&&s(n):Math.abs(a-i)>1&&s(i)),o.resizable("option","maxHeight",n))}).bind("themechange",function(){var e=Math.round(o.height());requestAnimationFrame(function(){var t=Math.round(o.height()),n=e-t;0!==n&&s(o.height(),t-n)})})),t.bind("navbarshow navbarhide",function(e){o[a&&"navbarshow"===e.type?"show":"hide"]()})})}),this},e.fn.elfinderoverlay=function(t){var n,i,a,o,r=this.parent().elfinder("instance");return this.filter(":not(.elfinder-overlay)").each(function(){t=Object.assign({},t),e(this).addClass("ui-front ui-widget-overlay elfinder-overlay").hide().on("mousedown",function(e){e.preventDefault(),e.stopPropagation()}).data({cnt:0,show:"function"==typeof t.show?t.show:function(){},hide:"function"==typeof t.hide?t.hide:function(){}})}),"show"==t&&(n=this.eq(0),i=n.data("cnt")+1,a=n.data("show"),r.toFront(n),n.data("cnt",i),n.is(":hidden")&&(n.show(),a())),"hide"==t&&(n=this.eq(0),i=n.data("cnt")-1,o=n.data("hide"),n.data("cnt",i),i<=0&&(n.hide(),o())),this},e.fn.elfinderpanel=function(t){return this.each(function(){var n=e(this).addClass("elfinder-panel ui-state-default ui-corner-all"),i="margin-"+("ltr"==t.direction?"left":"right");t.one("load",function(e){var a=t.getUI("navbar");n.css(i,parseInt(a.outerWidth(!0))),a.on("resize",function(e){e.preventDefault(),e.stopPropagation(),n.is(":visible")&&n.css(i,parseInt(a.outerWidth(!0)))})})})},e.fn.elfinderpath=function(t,n){return this.each(function(){var a,o,r="",s="",l=[],c="statusbar",d=t.res("class","hover"),p="path"+(i.prototype.uniqueid?i.prototype.uniqueid:"")+"-",u=e('<div class="ui-widget-header ui-helper-clearfix elfinder-workzone-path"/>'),h=e(this).addClass("elfinder-path").html("&nbsp;").on("mousedown","span.elfinder-path-dir",function(n){var i=e(this).attr("id").substr(p.length);n.preventDefault(),i!=t.cwd().hash&&(e(this).addClass(d),r?t.exec("search",r,{target:i,mime:l.join(" ")}):t.trigger("select",{selected:[i]}).exec("open",i))}).prependTo(t.getUI("statusbar").show()),f=e('<div class="elfinder-path-roots"/>').on("click",function(n){n.stopPropagation(),n.preventDefault();var i=e.map(t.roots,function(e){return t.file(e)}),a=[];e.each(i,function(e,n){n.phash||t.root(t.cwd().hash,!0)===n.hash||a.push({label:t.escape(n.i18||n.name),icon:"home",callback:function(){t.exec("open",n.hash)},options:{iconClass:n.csscls||"",iconImg:n.icon||""}})}),t.trigger("contextmenu",{raw:a,x:n.pageX,y:n.pageY})}).append('<span class="elfinder-button-icon elfinder-button-icon-menu" />').appendTo(u),m=function(n){var i=[],a=[];return e.each(t.parents(n),function(e,o){var r=n===o?"elfinder-path-dir elfinder-path-cwd":"elfinder-path-dir",s=t.file(o),l=t.escape(s.i18||s.name);a.push(l),i.push('<span id="'+p+o+'" class="'+r+'" title="'+a.join(t.option("separator"))+'">'+l+"</span>")}),i.join('<span class="elfinder-path-other">'+t.option("separator")+"</span>")},g=function(){var n;h.children("span.elfinder-path-dir").attr("style",""),n="ltr"===t.direction?e("#"+p+t.cwd().hash).prevAll("span.elfinder-path-dir:first"):e(),h.scrollLeft(n.length?n.position().left:0)},v=function(){if(!t.UA.CSS.flex){var n,i,a=h.children("span.elfinder-path-dir"),o=a.length;if("workzone"===c||o<2)return void a.attr("style","");h.width(h.css("max-width")),a.css({maxWidth:100/o+"%",display:"inline-block"}),n=h.width()-9,h.children("span.elfinder-path-other").each(function(){n-=e(this).width()}),i=[],a.each(function(t){var a=e(this),o=a.width();n-=o,o<this.scrollWidth&&i.push(t)}),h.width(""),i.length?(n>0&&(n/=i.length,e.each(i,function(t,i){var o=e(a[i]);o.css("max-width",o.width()+n)})),a.last().attr("style","")):a.attr("style","")}};t.one("init",function(){a=t.getUI("tree").length,o=t.getUI("stat").length,!a&&n.toWorkzoneWithoutNavbar&&(u.append(h).insertBefore(t.getUI("workzone")),c="workzone",t.bind("open",g).one("opendone",function(){t.getUI().trigger("resize")}))}).bind("open searchend parents",function(){r="",s="",l=[],h.html(m(t.cwd().hash)),Object.keys(t.roots).length>1?(h.css("margin",""),f.show()):(h.css("margin",0),f.hide()),!o&&v()}).bind("searchstart",function(e){e.data&&(r=e.data.query||"",s=e.data.target||"",l=e.data.mimes||[])}).bind("search",function(e){var n="";n=s?m(s):t.i18n("btnAll"),h.html('<span class="elfinder-path-other">'+t.i18n("searcresult")+": </span>"+n),v()}).bind("navbarshow navbarhide",function(){var e=t.getUI("workzone");"navbarshow"===this.type?(t.unbind("open",g),h.prependTo(t.getUI("statusbar")),u.detach(),c="statusbar"):(u.append(h).insertBefore(e),c="workzone",g(),t.bind("open",g)),t.trigger("uiresize")}).bind("resize uistatchange",v)})},e.fn.elfinderplaces=function(t,n){return this.each(function(){var i={},a="class",o=t.res(a,"navdir"),r=t.res(a,"navcollapse"),s=t.res(a,"navexpand"),l=t.res(a,"hover"),c=t.res(a,"treeroot"),d=t.res(a,"adroppable"),p=t.res("tpl","placedir"),u=t.res("tpl","perms"),h=e(t.res("tpl","navspinner")),f=n.suffix?n.suffix:"",m="places"+f,g=null,v=function(e){return e.substr(6)},b=function(e){return"place-"+e},y=function(t){return e(document.getElementById(b(t)))},w=function(){var n=[],a={};n=e.map(D.children().find("[id]"),function(e){return v(e.id)}),n.length?e.each(n.reverse(),function(e,t){a[t]=i[t]}):a=null,t.storage(m,a)},x=function(){var a,o;m="places"+(n.suffix?n.suffix:""),i={},a=t.storage(m),"string"==typeof a?(a=e.grep(a.split(","),function(e){return!!e}),e.each(a,function(e,t){var n=t.split("#");i[n[0]]=n[1]?n[1]:n[0]})):e.isPlainObject(a)&&(i=a),t.trigger("placesload",{dirs:i,storageKey:m},!0),o=Object.keys(i),o.length&&(M.prepend(h),t.request({data:{cmd:"info",targets:o},preventDefault:!0}).done(function(n){var a={};n.files&&n.files.length&&t.cache(n.files),e.each(n.files,function(e,t){var n=t.hash;a[n]=t}),e.each(i,function(e,t){C(a[e]||Object.assign({notfound:!0},t))}),t.storage("placesState")>0&&M.trigger("click")}).always(function(){h.remove()}))},k=function(n,i){return e(p.replace(/\{id\}/,b(n?n.hash:i)).replace(/\{name\}/,t.escape(n?n.i18||n.name:i)).replace(/\{cssclass\}/,n?t.perms2class(n)+(n.notfound?" elfinder-na":"")+(n.csscls?" "+n.csscls:""):"").replace(/\{permissions\}/,!n||n.read&&n.write&&!n.notfound?"":u).replace(/\{title\}/,n&&n.path?t.escape(n.path):"").replace(/\{symlink\}/,"").replace(/\{style\}/,n&&n.icon?t.getIconStyle(n):""))},C=function(e){var n,a;return"directory"===e.mime&&(a=e.hash,t.files().hasOwnProperty(a)||t.trigger("tree",{tree:[e]}),n=k(e,a),i[a]=e,D.prepend(n),M.addClass(r),O.toggle(D.children().length>1),!0)},z=function(e){var t,n,a=null;return i[e]&&(delete i[e],t=y(e),t.length&&(a=t.text(),t.parent().remove(),n=D.children().length,O.toggle(n>1),n||(M.removeClass(r),F.removeClass(s),D.slideToggle(!1)))),a},T=function(e){var n=y(e),i=n.parent(),a=i.prev("div"),o="ui-state-hover",r=t.getUI("contextmenu");g&&clearTimeout(g),a.length&&(r.find(":first").data("placesHash",e),n.addClass(o),i.insertBefore(a),a=i.prev("div"),g=setTimeout(function(){n.removeClass(o),r.find(":first").data("placesHash")===e&&r.hide().empty()},1500)),a.length||(n.removeClass(o),r.hide().empty())},A=function(e,t){var n=e.hash,a=y(t||n),o=k(e,n);return a.length>0&&(a.parent().replaceWith(o),i[n]=e,!0)},S=function(){D.empty(),M.removeClass(r),F.removeClass(s),D.slideToggle(!1)},I=function(){e.each(i,function(n,i){var a=t.file(n)||i,r=k(a,n),s=null;return a||r.hide(),!(!D.children().length||(e.each(D.children(),function(){var t=e(this);if((a.i18||a.name).localeCompare(t.children("."+o).text())<0)return s=!r.insertBefore(t)}),null===s))||void(!y(n).length&&D.append(r))}),w()},O=e('<span class="elfinder-button-icon elfinder-button-icon-sort elfinder-places-root-icon" title="'+t.i18n("cmdsort")+'"/>').hide().on("click",function(e){e.stopPropagation(),D.empty(),I()}),j=k({hash:"root-"+t.namespace,name:t.i18n(n.name,"places"),read:!0,write:!0}),M=j.children("."+o).addClass(c).on("click",function(e){e.stopPropagation(),M.hasClass(r)&&(F.toggleClass(s),D.slideToggle(),t.storage("placesState",F.hasClass(s)?1:0))}).append(O),D=j.children("."+t.res(a,"navsubtree")),F=e(this).addClass(t.res(a,"tree")+" elfinder-places ui-corner-all").hide().append(j).appendTo(t.getUI("navbar")).on("mouseenter mouseleave","."+o,function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click","."+o,function(n){var i=e(this);return i.data("longtap")?void n.stopPropagation():void(!i.hasClass("elfinder-na")&&t.exec("open",i.attr("id").substr(6)))}).on("contextmenu","."+o+":not(."+c+")",function(n){var i=e(this),a=i.attr("id").substr(6);n.preventDefault(),t.trigger("contextmenu",{raw:[{label:t.i18n("moveUp"),icon:"up",remain:!0,callback:function(){T(a),w()}},"|",{label:t.i18n("rmFromPlaces"),icon:"rm",callback:function(){z(a),w()}}],x:n.pageX,y:n.pageY}),i.addClass("ui-state-hover"),t.getUI("contextmenu").children().on("mouseenter",function(){i.addClass("ui-state-hover")}),t.bind("closecontextmenu",function(){i.removeClass("ui-state-hover")})}).droppable({tolerance:"pointer",accept:".elfinder-cwd-file-wrapper,.elfinder-tree-dir,.elfinder-cwd-file",hoverClass:t.res("class","adroppable"),classes:{"ui-droppable-hover":t.res("class","adroppable")},over:function(n,a){var o=a.helper,r=e.grep(o.data("files"),function(e){return"directory"===t.file(e).mime&&!i[e]});n.stopPropagation(),o.data("dropover",o.data("dropover")+1),t.insideWorkzone(n.pageX,n.pageY)&&(r.length>0?(o.addClass("elfinder-drag-helper-plus"),t.trigger("unlockfiles",{files:o.data("files"),helper:o})):e(this).removeClass(d))},out:function(t,n){var i=n.helper;t.stopPropagation(),i.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus").data("dropover",Math.max(i.data("dropover")-1,0)),e(this).removeData("dropover").removeClass(d)},drop:function(n,a){var o=a.helper,r=!0;e.each(o.data("files"),function(e,n){var a=t.file(n);a&&"directory"==a.mime&&!i[a.hash]?C(a):r=!1}),w(),r&&o.hide()}}).on("touchstart","."+o+":not(."+c+")",function(n){if(!(n.originalEvent.touches.length>1))var i=e(this).attr("id").substr(6),a=e(this).addClass(l).data("longtap",null).data("tmlongtap",setTimeout(function(){a.data("longtap",!0),t.trigger("contextmenu",{raw:[{label:t.i18n("rmFromPlaces"),icon:"rm",callback:function(){z(i),w()}}],x:n.originalEvent.touches[0].pageX,y:n.originalEvent.touches[0].pageY})},500))}).on("touchmove touchend","."+o+":not(."+c+")",function(t){clearTimeout(e(this).data("tmlongtap")),"touchmove"==t.type&&e(this).removeClass(l)});e.fn.sortable&&D.addClass("touch-punch").sortable({appendTo:t.getUI(),revert:!1,helper:function(n){var i=e(n.target).parent();return i.children().removeClass("ui-state-hover"),e('<div class="ui-widget elfinder-place-drag elfinder-'+t.direction+'"/>').append(e('<div class="elfinder-navbar"/>').show().append(i.clone()))},stop:function(t,n){var i=e(n.item[0]),a=F.offset().top,o=F.offset().left,r=F.width(),s=F.height(),l=t.pageX,c=t.pageY;l>o&&l<o+r&&c>a&&c<c+s||(z(v(i.children(":first").attr("id"))),w())},update:function(e,t){w()}}),e(this).on("regist",function(t,n){var a=!1;e.each(n,function(e,t){t&&"directory"==t.mime&&!i[t.hash]&&C(t)&&(a=!0)}),a&&w()}),t.one("load",function(){t.oldAPI||(F.show().parent().show(),x(),t.change(function(t){var n=!1;e.each(t.data.changed,function(e,t){i[t.hash]&&("directory"!==t.mime?z(t.hash)&&(n=!0):A(t)&&(n=!0))}),n&&w()}).bind("rename",function(t){var n=!1;t.data.removed&&e.each(t.data.removed,function(e,i){t.data.added[e]&&A(t.data.added[e],i)&&(n=!0)}),n&&w()}).bind("rm paste",function(t){var n=[],i=!1;t.data.removed&&e.each(t.data.removed,function(e,t){var i=z(t);i&&n.push(i)}),n.length&&(i=!0),t.data.added&&n.length&&e.each(t.data.added,function(t,i){1!==e.inArray(i.name,n)&&"directory"==i.mime&&C(i)}),i&&w()}).bind("sync netmount",function(){var a,o=this,r=n.suffix?n.suffix:"";return"sync"===o.type&&f!==r?(f=r,S(),void x()):(a=Object.keys(i),void(a.length&&(M.prepend(h),t.request({data:{cmd:"info",targets:a},preventDefault:!0}).done(function(n){var a={},r=!1,s=t.cwd().hash;e.each(n.files||[],function(e,n){var i=n.hash;a[i]=n,t.files().hasOwnProperty(n.hash)||t.trigger("tree",{tree:[n]})}),e.each(i,function(e,t){t.notfound===Boolean(a[e])?t.phash===s&&"netmount"!==o.type||a[e]&&"directory"!==a[e].mime?z(e)&&(r=!0):A(a[e]||Object.assign({notfound:!0},t))&&(r=!0):a[e]&&a[e].phash!=s&&A(a[e])}),r&&w()}).always(function(){h.remove()}))))}))})})},e.fn.elfindersearchbutton=function(t){return this.each(function(){var n,i,a,o,r=!1,s=t.fm,l=(s.res("class","disabled"),t.options.incsearch||{enable:!1}),c=t.options.searchTypes,d=function(e){return s.namespace+s.escape(e)},p=s.getUI("toolbar"),u=s.res("class","searchbtn"),h=e(this).hide().addClass("ui-widget-content elfinder-button "+u).on("click",function(e){e.stopPropagation()}),f=function(){var e=s.getUI(),t=e.offset(),n=h.offset();return{top:n.top-t.top,maxHeight:e.height()-40}},m=function(){b.data("inctm")&&clearTimeout(b.data("inctm"));var n=e.trim(b.val()),a=!e("#"+d("SearchFromAll")).prop("checked"),o=e("#"+d("SearchMime")).prop("checked"),l="";
a&&(a=e("#"+d("SearchFromVol")).prop("checked")?s.root(s.cwd().hash):s.cwd().hash),o&&(o=n,n="."),i&&(l=i.children("input:checked").val()),n?(b.trigger("focus"),t.exec(n,a,o,l).done(function(){r=!0}).fail(function(){g()})):s.trigger("searchend")},g=function(){b.data("inctm")&&clearTimeout(b.data("inctm")),b.val("").trigger("blur"),(r||v)&&(r=!1,v="",s.lazy(function(){s.trigger("searchend")}))},v="",b=e('<input type="text" size="42"/>').on("focus",function(){!h.hasClass("ui-state-active")&&s.getUI().click(),o=!0,v="",h.addClass("ui-state-active"),s.trigger("uiresize"),n&&n.css(f()).slideDown(function(){h.addClass("ui-state-active"),s.toFront(n)})}).on("blur",function(){o=!1,n?n.data("infocus")?n.data("infocus",!1):n.slideUp(function(){h.removeClass("ui-state-active"),s.trigger("uiresize"),s.toHide(n)}):h.removeClass("ui-state-active")}).appendTo(h).on("keypress",function(e){e.stopPropagation()}).on("keydown",function(t){t.stopPropagation(),t.keyCode===e.ui.keyCode.ENTER?m():t.keyCode===e.ui.keyCode.ESCAPE&&(t.preventDefault(),g())});l.enable&&(l.minlen=l.minlen||2,l.wait=l.wait||500,b.attr("title",s.i18n("incSearchOnly")).on("compositionstart",function(){b.data("composing",!0)}).on("compositionend",function(){b.removeData("composing"),b.trigger("input")}).on("input",function(){b.data("composing")||(b.data("inctm")&&clearTimeout(b.data("inctm")),b.data("inctm",setTimeout(function(){var e=b.val();(0===e.length||e.length>=l.minlen)&&(v!==e&&s.trigger("incsearchstart",{query:e}),v=e,""===e&&s.searchStatus.state>1&&s.searchStatus.query&&b.val(s.searchStatus.query).trigger("select"))},l.wait)))}),s.UA.ltIE8&&b.on("keydown",function(e){229===e.keyCode&&(b.data("imetm")&&clearTimeout(b.data("imetm")),b.data("composing",!0),b.data("imetm",setTimeout(function(){b.removeData("composing")},100)))}).on("keyup",function(t){b.data("imetm")&&clearTimeout(b.data("imetm")),b.data("composing")?t.keyCode===e.ui.keyCode.ENTER&&b.trigger("compositionend"):b.trigger("input")})),e('<span class="ui-icon ui-icon-search" title="'+t.title+'"/>').appendTo(h).on("mousedown",function(e){e.stopPropagation(),e.preventDefault(),h.hasClass("ui-state-active")?m():b.trigger("focus")}),e('<span class="ui-icon ui-icon-close"/>').appendTo(h).on("mousedown",function(e){e.stopPropagation(),e.preventDefault(),""!==b.val()||h.hasClass("ui-state-active")?g():b.trigger("focus")}),s.bind("toolbarload",function(){var e=h.parent();if(e.length&&(p.prepend(h.show()),e.remove(),s.UA.ltIE7)){var t=h.children("ltr"==s.direction?".ui-icon-close":".ui-icon-search");t.css({right:"",left:parseInt(h.width())-t.outerWidth(!0)})}}),s.one("init",function(){s.getUI("cwd").on("touchstart click",function(){o&&b.trigger("blur")})}).one("open",function(){n=s.api<2.1?null:e('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu elfinder-button-search-menu ui-corner-all"/>').append(e('<div class="buttonset"/>').append(e('<input id="'+d("SearchFromCwd")+'" name="serchfrom" type="radio" checked="checked"/><label for="'+d("SearchFromCwd")+'">'+s.i18n("btnCwd")+"</label>"),e('<input id="'+d("SearchFromVol")+'" name="serchfrom" type="radio"/><label for="'+d("SearchFromVol")+'">'+s.i18n("btnVolume")+"</label>"),e('<input id="'+d("SearchFromAll")+'" name="serchfrom" type="radio"/><label for="'+d("SearchFromAll")+'">'+s.i18n("btnAll")+"</label>")),e('<div class="buttonset elfinder-search-type"/>').append(e('<input id="'+d("SearchName")+'" name="serchcol" type="radio" checked="checked" value="SearchName"/><label for="'+d("SearchName")+'">'+s.i18n("btnFileName")+"</label>"))).hide().appendTo(s.getUI()),n&&(c&&(i=n.find(".elfinder-search-type"),e.each(t.options.searchTypes,function(t,n){i.append(e('<input id="'+d(t)+'" name="serchcol" type="radio" value="'+s.escape(t)+'"/><label for="'+d(t)+'">'+s.i18n(n.name)+"</label>"))})),n.find("div.buttonset").buttonset(),e("#"+d("SearchFromAll")).next("label").attr("title",s.i18n("searchTarget",s.i18n("btnAll"))),c&&e.each(c,function(t,n){n.title&&e("#"+d(t)).next("label").attr("title",s.i18n(n.title))}),n.on("mousedown","div.buttonset",function(e){e.stopPropagation(),n.data("infocus",!0)}).on("click","input",function(t){t.stopPropagation(),e.trim(b.val())?m():b.trigger("focus")}).on("close",function(){b.trigger("blur")}))}).bind("searchend",function(){b.val("")}).bind("open parents",function(){var t=[],n=s.file(s.root(s.cwd().hash));n&&(e.each(s.parents(s.cwd().hash),function(e,n){t.push(s.file(n).name)}),e("#"+d("SearchFromCwd")).next("label").attr("title",s.i18n("searchTarget",t.join(s.option("separator")))),e("#"+d("SearchFromVol")).next("label").attr("title",s.i18n("searchTarget",n.name)))}).bind("open",function(){v&&g()}).bind("cwdinit",function(){a=!1}).bind("cwdrender",function(){a=!0}).bind("keydownEsc",function(){v&&"/"===v.substr(0,1)&&(v="",b.val(""),s.trigger("searchend"))}).shortcut({pattern:"ctrl+f f3",description:t.title,callback:function(){b.trigger("select").trigger("focus")}}).shortcut({pattern:"a b c d e f g h i j k l m n o p q r s t u v w x y z dig0 dig1 dig2 dig3 dig4 dig5 dig6 dig7 dig8 dig9 num0 num1 num2 num3 num4 num5 num6 num7 num8 num9",description:s.i18n("firstLetterSearch"),callback:function(t){if(a){var n,i=t.originalEvent.keyCode,o=function(){var t=s.selected(),n=e.ui.keyCode[!t.length||s.cwdHash2Elm(t[0]).next("[id]").length?"RIGHT":"HOME"];e(document).trigger(e.Event("keydown",{keyCode:n,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1}))};i>=96&&i<=105&&(i-=48),n="/"+String.fromCharCode(i),v!==n?(b.val(n),v=n,s.trigger("incsearchstart",{query:n}).one("cwdrender",o)):o()}}})})},e.fn.elfindersortbutton=function(t){return this.each(function(){var n,i=t.fm,a=t.name,o="class",r=i.res(o,"disabled"),s=i.res(o,"hover"),l="elfinder-button-menu-item",c=l+"-selected",d=c+"-asc",p=c+"-desc",u=e('<span class="elfinder-button-text">'+t.title+"</span>"),h=e(this).addClass("ui-state-default elfinder-button elfinder-menubutton elfiner-button-"+a).attr("title",t.title).append('<span class="elfinder-button-icon elfinder-button-icon-'+a+'"/>',u).on("mouseenter mouseleave",function(e){!h.hasClass(r)&&h.toggleClass(s,"mouseenter"===e.type)}).on("click",function(e){h.hasClass(r)||(e.stopPropagation(),m.is(":hidden")&&i.getUI().click(),m.css(v()).slideToggle({duration:100,done:function(e){i[m.is(":visible")?"toFront":"toHide"](m)}}))}),f=function(){i.toHide(m)},m=e('<div class="ui-front ui-widget ui-widget-content elfinder-button-menu ui-corner-all"/>').hide().appendTo(i.getUI()).on("mouseenter mouseleave","."+l,function(t){e(this).toggleClass(s,"mouseenter"===t.type)}).on("click",function(e){e.preventDefault(),e.stopPropagation()}).on("close",f),g=function(){m.children("[rel]").removeClass(c+" "+d+" "+p).filter('[rel="'+i.sortType+'"]').addClass(c+" "+("asc"==i.sortOrder?d:p)),m.children(".elfinder-sort-stick").toggleClass(c,i.sortStickFolders),m.children(".elfinder-sort-tree").toggleClass(c,i.sortAlsoTreeview)},v=function(){var e=i.getUI().offset(),t=h.offset();return{top:t.top-e.top,left:t.left-e.left}};u.hide(),e.each(i.sortRules,function(t,n){m.append(e('<div class="'+l+'" rel="'+t+'"><span class="ui-icon ui-icon-arrowthick-1-n"/><span class="ui-icon ui-icon-arrowthick-1-s"/>'+i.i18n("sort"+t)+"</div>").data("type",t))}),m.children().on("click",function(n){t.exec([],e(this).removeClass(s).attr("rel"))}),e('<div class="'+l+" "+l+'-separated elfinder-sort-ext elfinder-sort-stick"><span class="ui-icon ui-icon-check"/>'+i.i18n("sortFoldersFirst")+"</div>").appendTo(m).on("click",function(){t.exec([],"stick")}),i.one("init",function(){i.ui.tree&&null!==i.options.sortAlsoTreeview&&e('<div class="'+l+" "+l+'-separated elfinder-sort-ext elfinder-sort-tree"><span class="ui-icon ui-icon-check"/>'+i.i18n("sortAlsoTreeview")+"</div>").appendTo(m).on("click",function(){t.exec([],"tree")})}).bind("disable select",f).bind("open",function(){m.children("[rel]").each(function(){var t=e(this);t.toggle(i.sorters[t.attr("rel")])})}).bind("sortchange",g).getUI().on("click",f),m.children().length>1?t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){h.toggleClass(r,t.disabled()),g()})}).change():h.addClass(r)})},e.fn.elfinderstat=function(t){return this.each(function(){var n=e(this).addClass("elfinder-stat-size"),i=e('<div class="elfinder-stat-selected"/>').on("click","a",function(n){var i=e(this).data("hash");n.preventDefault(),t.exec("opendir",[i])}),a=t.i18n("items"),o=t.i18n("selected"),r=t.i18n("size"),s=function(i){var o=0,r=0,s=t.cwd(),l=!0,c=!0;(s.sizeInfo||s.size)&&(r=s.size,l=!1),e.each(i,function(e,t){o++,l&&(r+=parseInt(t.size)||0,c!==!0||"directory"!==t.mime||t.sizeInfo||(c=!1))}),n.html(a+': <span class="elfinder-stat-incsearch"></span>'+o+',&nbsp;<span class="elfinder-stat-size'+(c?" elfinder-stat-size-recursive":"")+'">'+t.i18n(c?"sum":"size")+": "+t.formatSize(r)+"</span>").attr("title",n.text()),t.trigger("uistatchange")},l=function(e){n.find("span.elfinder-stat-incsearch").html(e?e.hashes.length+" / ":""),n.attr("title",n.text()),t.trigger("uistatchange")},c=function(n){var a,s,l=0,c=0,d=[];1===n.length?(s=n[0],l=s.size,2===t.searchStatus.state&&(a=t.escape(s.path?s.path.replace(/\/[^\/]*$/,""):".."),d.push('<a href="#elf_'+s.phash+'" data-hash="'+s.hash+'" title="'+a+'">'+a+"</a>")),d.push(t.escape(s.i18||s.name)),i.html(d.join("/")+(l>0?", "+t.formatSize(l):""))):n.length?(e.each(n,function(e,t){c++,l+=parseInt(t.size)||0}),i.html(c?o+": "+c+", "+r+": "+t.formatSize(l):"&nbsp;")):i.html(""),i.attr("title",i.text()),t.trigger("uistatchange")};t.getUI("statusbar").prepend(n).append(i).show(),t.UA.Mobile&&e.fn.tooltip&&t.getUI("statusbar").tooltip({classes:{"ui-tooltip":"elfinder-ui-tooltip ui-widget-shadow"},tooltipClass:"elfinder-ui-tooltip ui-widget-shadow",track:!0}),t.bind("cwdhasheschange",function(n){s(e.map(n.data,function(e){return t.file(e)}))}).change(function(i){var a=i.data.changed||[],o=t.cwd().hash;e.each(a,function(){if(this.hash===o)return this.size&&(n.children(".elfinder-stat-size").addClass("elfinder-stat-size-recursive").html(t.i18n("sum")+": "+t.formatSize(this.size)),n.attr("title",n.text())),!1})}).select(function(){c(t.selectedFiles())}).bind("open",function(){c([])}).bind("incsearch",function(e){l(e.data)}).bind("incsearchend",function(){l()})})},e.fn.elfindertoast=function(t,n){var i=Object.assign({mode:"success",msg:"",showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1500,hideEasing:"swing",onHidden:void 0,timeOut:3e3,extNode:void 0,button:void 0,width:void 0},e.isPlainObject(n.options.uiOptions.toast.defaults)?n.options.uiOptions.toast.defaults:{});return this.each(function(){t=Object.assign({},i,t||{});var a,o=e(this),r=function(e){o.stop(),n.toFront(o),o[t.showMethod]({duration:t.showDuration,easing:t.showEasing,complete:function(){t.onShown&&t.onShown(),!e&&t.timeOut&&(a=setTimeout(s,t.timeOut))}})},s=function(){o[t.hideMethod]({duration:t.hideDuration,easing:t.hideEasing,complete:function(){t.onHidden&&t.onHidden(),o.remove()}})};o.on("click",function(e){e.stopPropagation(),e.preventDefault(),a&&clearTimeout(a),t.onHidden&&t.onHidden(),o.stop().remove()}).on("mouseenter mouseleave",function(e){t.timeOut&&(a&&clearTimeout(a),a=null,"mouseenter"===e.type?r(!0):a=setTimeout(s,t.timeOut))}).hide().addClass("toast-"+t.mode).append(e('<div class="elfinder-toast-msg"/>').html(t.msg.replace(/%([a-zA-Z0-9]+)%/g,function(e,t){return n.i18n(t)}))),t.extNode&&o.append(t.extNode),t.button&&o.append(e('<button class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"/>').append(e('<span class="ui-button-text"/>').text(n.i18n(t.button.text))).on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click",t.button.click||function(){})),t.width&&o.css("max-width",t.width),r()})},e.fn.elfindertoolbar=function(t,n){return this.not(".elfinder-toolbar").each(function(){var i,a,o,r,s,l,c,d,p,u=t._commands,h=e(this).addClass("ui-helper-clearfix ui-widget-header elfinder-toolbar"),f={displayTextLabel:!1,labelExcludeUA:["Mobile"],autoHideUA:["Mobile"],showPreferenceButton:"none"},m=function(t){return e.grep(t,function(t){return!e.isPlainObject(t)||(f=Object.assign(f,t),!1)})},g=function(n){var l,c;for(e.each(v,function(e,t){t.detach()}),h.empty(),i=b.length;i--;)if(b[i]){for(r=e('<div class="ui-widget-content ui-corner-all elfinder-buttonset"/>'),a=b[i].length;a--;)l=b[i][a],n&&n[l]||!(o=u[l])||(s="elfinder"+o.options.ui,!v[l]&&e.fn[s]&&(v[l]=e("<div/>")[s](o)),v[l]&&(v[l].children(".elfinder-button-text")[d?"show":"hide"](),r.prepend(v[l])));r.children().length&&h.prepend(r),r.children(":gt(0)").before('<span class="ui-widget-content elfinder-toolbar-button-separator"/>')}(c=u.preference)&&("always"===f.showPreferenceButton||!h.children().length&&"auto"===f.showPreferenceButton)&&(r=e('<div class="ui-widget-content ui-corner-all elfinder-buttonset"/>'),l="preference",s="elfinder"+o.options.ui,v[l]=e("<div/>")[s](c),v[l].children(".elfinder-button-text")[d?"show":"hide"](),r.prepend(v[l]),h.append(r)),!h.data("swipeClose")&&h.children().length?h.show():h.hide(),x=h[0].clientHeight,t.trigger("toolbarload").trigger("uiresize")},v={},b=m(n||[]),y=null,w="",x=0,k=[];f.showPreferenceButton=f.showPreferenceButton.toLowerCase(),"none"!==f.displayTextLabel&&(d=t.storage("toolbarTextLabel"),d=null===d?f.displayTextLabel&&(!f.labelExcludeUA||!f.labelExcludeUA.length||!e.grep(f.labelExcludeUA,function(e){return!!t.UA[e]}).length):1==d,k.push({label:t.i18n("textLabel"),icon:"text",callback:function(){d=!d,h.css("height","").find(".elfinder-button-text")[d?"show":"hide"](),t.trigger("uiresize").storage("toolbarTextLabel",d?"1":"0")}})),f.preferenceInContextmenu&&u.preference&&k.push({label:t.i18n("toolbarPref"),icon:"preference",callback:function(){t.exec("preference",void 0,{tab:"toolbar"})}}),k.length&&h.on("contextmenu",function(e){e.stopPropagation(),e.preventDefault(),t.trigger("contextmenu",{raw:k,x:e.pageX,y:e.pageY})}).on("touchstart",function(e){e.originalEvent.touches.length>1||(h.data("tmlongtap")&&clearTimeout(h.data("tmlongtap")),h.removeData("longtap").data("longtap",{x:e.originalEvent.touches[0].pageX,y:e.originalEvent.touches[0].pageY}).data("tmlongtap",setTimeout(function(){h.removeData("longtapTm").trigger({type:"contextmenu",pageX:h.data("longtap").x,pageY:h.data("longtap").y}).data("longtap",{longtap:!0})},500)))}).on("touchmove touchend",function(e){h.data("tmlongtap")&&(("touchend"===e.type||Math.abs(h.data("longtap").x-e.originalEvent.touches[0].pageX)+Math.abs(h.data("longtap").y-e.originalEvent.touches[0].pageY)>4)&&clearTimeout(h.data("tmlongtap")),h.removeData("longtapTm"))}).on("click",function(e){h.data("longtap")&&h.data("longtap").longtap&&(e.stopImmediatePropagation(),e.preventDefault())}).on("touchend click",".elfinder-button",function(e){h.data("longtap")&&h.data("longtap").longtap&&(e.stopImmediatePropagation(),e.preventDefault())}),h.prev().length&&h.parent().prepend(this),g(),t.bind("open sync select toolbarpref",function(){var n,i,a,o=Object.assign({},t.option("disabledFlip")),r=t.storage("toolbarhides");if(!r&&Array.isArray(f.defaultHides)&&(r={},e.each(f.defaultHides,function(){r[this]=!0}),t.storage("toolbarhides",r)),"select"===this.type){if(t.searchStatus.state<2)return;i=t.selected(),i.length&&(o=t.getDisabledCmds(i,!0))}e.each(r,function(e){o[e]||(o[e]=!0)}),Object.keys(t.commandMap).length&&e.each(t.commandMap,function(e,t){"hidden"===t&&(o[e]=!0)}),a=Object.keys(o),y&&y.toString()===a.sort().toString()||(g(a.length?o:null),n=!0),y=a.sort(),(n||w!==JSON.stringify(t.commandMap))&&(w=JSON.stringify(t.commandMap),n||e.each(e("div.elfinder-button"),function(){var t=e(this).data("origin");t&&e(this).after(t).detach()}),Object.keys(t.commandMap).length&&e.each(t.commandMap,function(n,i){var a,o=t._commands[i],r=o?"elfinder"+o.options.ui:null;r&&e.fn[r]&&(a=v[n],a&&(!v[i]&&e.fn[r]&&(v[i]=e("<div/>")[r](o),v[i]&&(v[i].children(".elfinder-button-text")[d?"show":"hide"](),o.extendsCmd&&v[i].children("span.elfinder-button-icon").addClass("elfinder-button-icon-"+o.extendsCmd))),v[i]&&(a.after(v[i]),v[i].data("origin",a.detach()))))}))}).bind("resize",function(e){p&&cancelAnimationFrame(p),p=requestAnimationFrame(function(){var e=h[0].clientHeight;x!==e&&(x=e,t.trigger("uiresize"))})}),t.UA.Touch&&(c=t.storage("autoHide")||{},"undefined"==typeof c.toolbar&&(c.toolbar=f.autoHideUA&&f.autoHideUA.length>0&&e.grep(f.autoHideUA,function(e){return!!t.UA[e]}).length,t.storage("autoHide",c)),c.toolbar&&t.one("init",function(){t.uiAutoHide.push(function(){h.stop(!0,!0).trigger("toggle",{duration:500,init:!0})})}),t.bind("load",function(){l=e('<div class="elfinder-toolbar-swipe-handle"/>').hide().appendTo(t.getUI()),"none"!==l.css("pointer-events")&&(l.remove(),l=null)}),h.on("toggle",function(e,n){var i=t.getUI("workzone"),a=h.is(":hidden"),o=i.height(),r=h.height(),s=h.outerHeight(!0),d=s-r,p=Object.assign({step:function(e){i.height(o+(a?(e+d)*-1:r-e)),t.trigger("resize")},always:function(){requestAnimationFrame(function(){h.css("height",""),t.trigger("uiresize"),l&&(a?l.stop(!0,!0).hide():(l.height(n.handleH?n.handleH:""),t.resources.blink(l,"slowonce"))),a&&h.scrollTop("0px"),n.init&&t.trigger("uiautohide")})}},n);h.data("swipeClose",!a).stop(!0,!0).animate({height:"toggle"},p),c.toolbar=!a,t.storage("autoHide",Object.assign(t.storage("autoHide"),{toolbar:c.toolbar}))}).on("touchstart",function(e){h.scrollBottom()>5&&(e.originalEvent._preventSwipeY=!0)}))}),this},e.fn.elfindertree=function(t,n){var i=t.res("class","tree");return this.not("."+i).each(function(){var a,o,r,s,l="class",c=t.UA.Mobile,d=t.res(l,"treeroot"),p=n.openRootOnLoad,u=n.openCwdOnOpen,h=u||n.syncTree,f=t.res(l,"navsubtree"),m=t.res(l,"treedir"),g="span."+m,v=t.res(l,"navcollapse"),b=t.res(l,"navexpand"),y="elfinder-subtree-loaded",w="elfinder-subtree-chksubdir",x=t.res(l,"navarrow"),k=t.res(l,"active"),C=t.res(l,"adroppable"),z=t.res(l,"hover"),T=t.res(l,"disabled"),A=t.res(l,"draggable"),S=t.res(l,"droppable"),I="elfinder-navbar-wrapper-root",O="elfinder-navbar-wrapper-pastable",j="elfinder-navbar-wrapper-uploadable",M=function(e){var t=se.offset().left;return t<=e&&e<=t+se.width()},D={},F=[],E=function(n){var i=[];if(e.each(n,function(e,n){D[n]&&i.push(t.navId2Hash(n)),delete D[n]}),i.length)return t.request({data:{cmd:"subdirs",targets:i,preventDefault:!0}}).done(function(n){n&&n.subdirs&&e.each(n.subdirs,function(e,n){var i=t.navHash2Elm(e);i.removeClass(w),i[n?"addClass":"removeClass"](v)})})},U=null,P=function(){var n=Object.keys(D);n.length&&(U&&U._abort(),a&&clearTimeout(a),F=[],U=t.asyncJob(function(n){return t.isInWindow(e("#"+n))?n:null},n,{numPerOnce:200}).done(function(e){e.length&&(F=e,q())}))},R=0,q=function(){var e,i=n.subdirsMaxConn-R,o=t.maxTargets?Math.min(t.maxTargets,n.subdirsAtOnce):n.subdirsAtOnce;if(a&&cancelAnimationFrame(a),F.length)if(i>0)for(e=0;e<i;e++)F.length&&(R++,E(F.splice(0,o)).always(function(){R--,q()}));else a=requestAnimationFrame(function(){F.length&&q()})},H=t.droppable.drop,_=e.extend(!0,{},t.droppable,{over:function(n,i){var a,o,r=e(this),s=i.helper,l=z+" "+C;return n.stopPropagation(),s.data("dropover",s.data("dropover")+1),r.data("dropover",!0),i.helper.data("namespace")===t.namespace&&t.insideWorkzone(n.pageX,n.pageY)?M(n.clientX)?(s.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"),r.addClass(z),r.is("."+v+":not(."+b+")")&&r.data("expandTimer",setTimeout(function(){r.is("."+v+"."+z)&&r.children("."+x).trigger("click")},500)),r.is(".elfinder-ro,.elfinder-na")?void r.removeClass(C):(a=t.navId2Hash(r.attr("id")),r.data("dropover",a),e.each(i.helper.data("files"),function(e,n){if(n===a||t.file(n).phash===a&&!i.helper.hasClass("elfinder-drag-helper-plus"))return r.removeClass(l),!1}),s.data("locked")?o="elfinder-drag-helper-plus":(o="elfinder-drag-helper-move",(n.shiftKey||n.ctrlKey||n.metaKey)&&(o+=" elfinder-drag-helper-plus")),r.hasClass(C)&&s.addClass(o),void requestAnimationFrame(function(){r.hasClass(C)&&s.addClass(o)}))):void r.removeClass(l):(r.removeClass(l),void s.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"))},out:function(t,n){var i=e(this),a=n.helper;t.stopPropagation(),M(t.clientX)&&a.removeClass("elfinder-drag-helper-move elfinder-drag-helper-plus"),a.data("dropover",Math.max(a.data("dropover")-1,0)),i.data("expandTimer")&&clearTimeout(i.data("expandTimer")),i.removeData("dropover").removeClass(z+" "+C)},deactivate:function(){e(this).removeData("dropover").removeClass(z+" "+C)},drop:function(e,t){M(e.clientX)&&H.call(this,e,t)}}),N=e(t.res("tpl","navspinner")),L=t.res("tpl","navdir"),W=t.res("tpl","perms"),B=(t.res("tpl","lock"),t.res("tpl","symlink")),$={},K={id:function(e){return t.navHash2Id(e.hash)},name:function(e){return t.escape(e.i18||e.name)},cssclass:function(e){var i=(e.phash&&!e.isroot?"":d)+" "+m+" "+t.perms2class(e);return e.dirs&&!e.link&&(i+=" "+v)&&e.dirs==-1&&(i+=" "+w),n.getClass&&(i+=" "+n.getClass(e)),e.csscls&&(i+=" "+t.escape(e.csscls)),i},root:function(t){var n="";return!t.phash||t.isroot?(n+=" "+I,!t.disabled||t.disabled.length<1?n+=" "+O+" "+j:(e.inArray("paste",t.disabled)===-1&&(n+=" "+O),e.inArray("upload",t.disabled)===-1&&(n+=" "+j)),n):""},permissions:function(e){return e.read&&e.write?"":W},symlink:function(e){return e.alias?B:""},style:function(e){return e.icon?t.getIconStyle(e):""}},V=function(e){return L.replace(/(?:\{([a-z]+)\})/gi,function(t,n){var i=K[n]?K[n](e):e[n]||"";return"id"===n&&e.dirs==-1&&(D[i]=i),i})},X=function(n,i){return e.map(n||[],function(e){return"directory"!==e.mime||i&&!t.navHash2Elm(e.hash).length?null:e})},G=function(e){return e?t.navHash2Elm(e).next("."+f):oe},J=function(e,n){for(var i,a=e.children(":first");a.length;){if(i=t.file(t.navId2Hash(a.children("[id]").attr("id"))),(i=t.file(t.navId2Hash(a.children("[id]").attr("id"))))&&Q(n,i)<0)return a;a=a.next()}return e.children("button.elfinder-navbar-pager-next")},Y=function(i){for(var a,o,r,s,l,d,p=i.length,u=[],h=p,f=e(),m={},g=t.cwd(),v=function(i,a,o,r){var s={},l=0,d=t.newAPI?Math.min(1e4,Math.max(10,n.subTreeMax)):1e4,p=function(){s={},e.each(a,function(e,t){s[t.hash]=e})},u=function(t){"prepare"===t?e.each(a,function(e,t){t.node&&i.append(t.node.hide())}):"done"===t&&e.each(a,function(e,t){t.node&&t.node.detach().show()})},h=function(t,n){var i;return t.stopPropagation(),n.select?void v(f(n.select)):n.change?void u(n.change):(n.removed&&n.removed.length&&(a=e.grep(a,function(e){return n.removed.indexOf(e.hash)===-1||(!i&&(i=!0),!1)})),n.added&&n.added.length&&(a=a.concat(e.grep(n.added,function(e){return void 0===s[e.hash]&&(!i&&(i=!0),!0)}))),void(i&&(a.sort(Q),p(),v(l))))},f=function(e){if(void 0!==s[e])return Math.floor(s[e]/d)*d},m=t.navId2Hash(i.prev("[id]").attr("id")),v=function(n,o){var r,s,u,y,w,x,k,C,z=[],T={};delete $[m],l=n,i.off("update."+t.namespace,h),a.length>d&&(i.on("update."+t.namespace,h),void 0===n&&(u=0,p(),n=f(g.hash),void 0===n&&(n=0)),y=a.slice(n,n+d),$[m]=i,w=n?Math.max(-1,n-d):-1,x=n+d>=a.length?0:n+d,r=Math.ceil(a.length/d),s=Math.ceil(n/d)),e.each(y||a,function(e,t){z.push(V(t)),t.node&&(T[t.hash]=t.node)}),k=w>-1?e('<button class="elfinder-navbar-pager elfinder-navbar-pager-prev"/>').text(t.i18n("btnPrevious",s,r)).button({icons:{primary:"ui-icon-caret-1-n"}}).on("click",function(e){e.preventDefault(),e.stopPropagation(),v(w,"up")}):e(),C=x?e('<button class="elfinder-navbar-pager elfinder-navbar-pager-next"/>').text(t.i18n("btnNext",s+2,r)).button({icons:{primary:"ui-icon-caret-1-s"}}).on("click",function(e){e.preventDefault(),e.stopPropagation(),v(x,"down")}):e(),b(),i.empty()[y?"addClass":"removeClass"]("elfinder-navbar-hasmore").append(k,z.join(""),C),e.each(T,function(e,n){t.navHash2Elm(e).parent().replaceWith(n)}),o&&Z(t.navHash2Id(y["up"===o?y.length-1:0].hash)),!c&&t.lazy(function(){ie(null,i)})},b=function(){e.each(i.children(".elfinder-navbar-wrapper"),function(n,i){var o,r,l=e(i),c=l.children("[id]:first");c.hasClass(y)&&(o=t.navId2Hash(c.attr("id")),o&&void 0!==(r=s[o])&&(a[r].node=l.detach()))})};v()},b={},w=[],x=!0;h--;)a=i[h],m[a.hash]||t.navHash2Elm(a.hash).length||(m[a.hash]=!0,(o=G(a.phash)).length?a.phash&&((s=!o.children().length)||o.hasClass("elfinder-navbar-hasmore")||(r=J(o,a)).length)?s?(b[a.phash]||(b[a.phash]=[]),b[a.phash].push(a)):r?(d=V(a),r.before(d),!c&&(f=f.add(d))):w.push(a):(d=V(a),o[x||a.phash?"append":"prepend"](d),x=!1,a.phash&&!a.isroot||(l=t.navHash2Elm(a.hash).parent()),!c&&ie(null,l)):u.push(a));return Object.keys(b).length&&e.each(b,function(e,t){var n=G(e);t.sort(Q),v(n,t)}),w.length&&o.trigger("update."+t.namespace,{added:w}),u.length&&u.length<p?void Y(u):void(!c&&f.length&&t.lazy(function(){ie(f)}))},Q=function(e,n){if(t.sortAlsoTreeview){var i,a="asc"==t.sortOrder,o=t.sortType,r=t.sortRules;return i=a?r[t.sortType](e,n):r[t.sortType](n,e),"name"!==o&&0===i?i=a?r.name(e,n):r.name(n,e):i}return t.sortRules.name(e,n)},Z=function(i){var a,r,s,l,c,d,p=e.Deferred();return o&&clearTimeout(o),o=setTimeout(function(){a=e(document.getElementById(i||t.navHash2Id(t.cwd().hash))),a.length?((u?a:a.parent()).parents(".elfinder-navbar-wrapper").children("."+y).addClass(b).next("."+f).show(),r=oe.parent().stop(!1,!0),s=r.offset().top,l=r.height(),c=s+l-a.outerHeight(),d=a.offset().top,d<s||d>c?r.animate({scrollTop:r.scrollTop()+d-s-l/3},{duration:n.durations.autoScroll,complete:function(){p.resolve()}}):p.resolve()):p.reject()},100),p},ee=function(e){var n,i,a,o=e||t.cwd(),r=o.hash?[o.hash]:[];for(i=t.root(o.hash),a=t.file(i);a&&(n=a.phash)&&(r.unshift(n),i=t.root(n),a=t.file(i),!t.navHash2Elm(a.hash).hasClass(y)););return r},te=function(e){var n=e||t.cwd(),i=n.hash,a=t.navHash2Elm(i);if(!a.length){for(;n&&n.phash;)$[n.phash]&&!t.navHash2Elm(n.hash).length&&$[n.phash].trigger("update."+t.namespace,{select:n.hash}),n=t.file(n.phash);a=t.navHash2Elm(i)}return a},ne=function(n,i){var a,o,s=t.cwd(),l=s.hash,c=void 0===i?h:i,d=function(n){var i,r,s=e.Deferred(),l=[],d=ee(n),p=function(e,n,i){var a={cmd:e,target:n};return i&&(a.until=i),t.request({data:a,preventFail:!0})};return l=e.map(d,function(e){var n,a,o=t.file(e),r=!!o&&t.isRoot(o),s=t.navHash2Elm(e),l=function(e,n){var i,a,o=n||1;return a=!!(i=t.file(e))&&i.phash,a&&o>1?l(a,--o):a},c=function(){var i=l(e);for(n=i;i&&!t.navHash2Elm(i).hasClass(y);)n=i,i=l(i);return i||(n=void 0,i=t.root(e)),i}();return s.hasClass(y)||!r&&o&&t.navHash2Elm(o.phash).hasClass(y)?null:(r||c===l(e)||c===l(e,2)?(n=void 0,a="tree",r||(e=l(e))):a="parents",i||(i="tree"===a?e:c),p(a,e,n))}),l.length?(te(t.file(i)),r=t.navHash2Id(i),c&&Z(r),a=e("#"+r),o=e(t.res("tpl","navspinner")).insertBefore(a.children("."+x)),a.removeClass(v),e.when.apply(e,l).done(function(){var e,t,n,i={};if(t=arguments.length,t>0)for(n=0;n<t;n++)e=arguments[n].tree||[],i[d[n]]=Object.assign([],X(e));s.resolve(i)}).fail(function(){s.reject()}),s):s.resolve()},u=function(i,o){var r,l=function(){p&&a&&(G(a.hash).show().prev(g).addClass(b),p=!1),c?Z().done(P):P()};i&&e.each(i,function(e,n){n&&Y(n),te(t.file(e)),n&&ae(n,y)}),n&&(t.api<2.1&&n.push(s),Y(n)),r=te(),r.hasClass(k)||(oe.find(g+"."+k).removeClass(k),r.addClass(k)),r.parents(".elfinder-navbar-wrapper").children("."+m).addClass(y),i?t.lazy(l).done(function(){o.resolve()}):(l(),o.resolve())},f=function(e){a&&(o.remove(),a.addClass(v+(e?"":" "+y)))},w=e.Deferred();return t.navHash2Elm(l).length?u(void 0,w):(r=!0,d().done(function(e){u(e,w),f()}).fail(function(){f(!0),w.reject()}).always(function(){r=!1})),t.trigger("treesync",w),w},ie=function(n,i){n||(i&&!i.closest("div."+I).hasClass(j)||(i||oe.find("div."+j)).find(g+":not(.elfinder-ro,.elfinder-na)").addClass("native-droppable"),n=!i||i.closest("div."+I).hasClass(O)?(i||oe.find("div."+O)).find(g+":not(."+S+")"):e(),i&&i.children("div."+I).each(function(){ie(null,e(this))})),n.length&&t.asyncJob(function(t){e(t).droppable(_)},e.makeArray(n),{interval:20,numPerOnce:100})},ae=function(n,i){var a=i==y?"."+v+":not(."+y+")":":not(."+v+")";e.each(n,function(n,o){t.navHash2Elm(o.phash).filter(a).filter(function(){return e.grep(e(this).next("."+f).children(),function(t){return!e(t).children().hasClass(d)}).length>0}).addClass(i)})},oe=e(this).addClass(i).on("mouseenter mouseleave",g,function(n){var i="mouseenter"===n.type;if(!i||!re){var a=e(this);a.hasClass(C+" "+T)||(c||!i||a.data("dragRegisted")||a.hasClass(d+" "+A+" elfinder-na elfinder-wo")||(a.data("dragRegisted",!0),t.isCommandEnabled("copy",t.navId2Hash(a.attr("id")))&&a.draggable(t.draggable)),a.toggleClass(z,i))}}).on("dragenter",g,function(t){if(t.originalEvent.dataTransfer){var n=e(this);n.addClass(z),n.is("."+v+":not(."+b+")")&&n.data("expandTimer",setTimeout(function(){n.is("."+v+"."+z)&&n.children("."+x).trigger("click")},500))}}).on("dragleave",g,function(t){if(t.originalEvent.dataTransfer){var n=e(this);n.data("expandTimer")&&clearTimeout(n.data("expandTimer")),n.removeClass(z)}}).on("click",g,function(n){var i=e(this),a=t.navId2Hash(i.attr("id"));t.file(a);return i.data("longtap")?(i.removeData("longtap"),void n.stopPropagation()):(i.hasClass(k)||(oe.find(g+"."+k).removeClass(k),i.addClass(k)),void(a==t.cwd().hash||i.hasClass(T)?(i.hasClass(v)&&i.children("."+x).trigger("click"),t.select({selected:[a],origin:"navbar"})):t.exec("open",a).done(function(){t.one("opendone",function(){t.select({selected:[a],origin:"navbar"})})})))}).on("touchstart",g,function(n){if(!(n.originalEvent.touches.length>1)){var i,a=n.originalEvent;return"INPUT"===n.target.nodeName?void n.stopPropagation():void(i=e(this).addClass(z).removeData("longtap").data("tmlongtap",setTimeout(function(e){i.data("longtap",!0),t.trigger("contextmenu",{type:"navbar",targets:[t.navId2Hash(i.attr("id"))],x:a.touches[0].pageX,y:a.touches[0].pageY})},500)))}}).on("touchmove touchend",g,function(t){return"INPUT"===t.target.nodeName?void t.stopPropagation():(clearTimeout(e(this).data("tmlongtap")),void("touchmove"==t.type&&e(this).removeClass(z)))}).on("click",g+"."+v+" ."+x,function(i){var a,o=e(this),r=o.parent(g),s=r.next("."+f),l=e.Deferred(),c=30;i.stopPropagation(),r.hasClass(y)?(r.toggleClass(b),t.lazy(function(){a=r.hasClass(b)?s.children().length+s.find("div.elfinder-navbar-subtree[style*=block]").children().length:s.find("div:visible").length,a>c?(s.toggle(),t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()):s.stop(!0,!0)[r.hasClass(b)?"slideDown":"slideUp"](n.durations.slideUpDown,function(){t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()})}).always(function(){l.resolve()})):(N.insertBefore(o),r.removeClass(v),t.request({cmd:"tree",target:t.navId2Hash(r.attr("id"))}).done(function(e){Y(Object.assign([],X(e.tree))),s.children().length&&(r.addClass(v+" "+b),s.children().length>c?(s.show(),t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()):s.stop(!0,!0).slideDown(n.durations.slideUpDown,function(){t.draggingUiHelper&&t.draggingUiHelper.data("refreshPositions",1),P()}))}).always(function(e){N.remove(),r.addClass(y),t.one("treedone",function(){l.resolve()})})),o.data("dfrd",l)}).on("contextmenu",g,function(n){var i=e(this);return i.find("input:text").length?void n.stopPropagation():(n.preventDefault(),t.trigger("contextmenu",{type:"navbar",targets:[t.navId2Hash(e(this).attr("id"))],x:n.pageX,y:n.pageY}),i.addClass("ui-state-hover"),t.getUI("contextmenu").children().on("mouseenter",function(){i.addClass("ui-state-hover")}),void t.bind("closecontextmenu",function(){i.removeClass("ui-state-hover")}))}).on("scrolltoview",g,function(n,i){var a=e(this);Z(a.attr("id")).done(function(){i&&"undefined"!==i.blink&&!i.blink||t.resources.blink(a,"lookme")})}).on("create."+t.namespace,function(n,i){var a=G(i.phash),o=i.move||!1,r=e(V(i)).addClass("elfinder-navbar-wrapper-tmp"),s=t.selected();o&&s.length&&t.trigger("lockfiles",{files:s}),a.prepend(r)}),re=!1,se=t.getUI("navbar").append(oe).show().on("scroll",function(){re=!0,
s&&cancelAnimationFrame(s),s=requestAnimationFrame(function(){re=!1,P()})}),le=t.sortAlsoTreeview;t.open(function(e){var n=e.data,i=X(n.files),a=t.getUI("contextmenu");n.init&&oe.empty(),t.UA.iOS&&se.removeClass("overflow-scrolling-touch").addClass("overflow-scrolling-touch"),i.length?t.lazy(function(){a.data("cmdMaps")||a.data("cmdMaps",{}),Y(i),ae(i,y),ne(i)}):ne()}).add(function(e){var t=X(e.data.added);t.length&&(Y(t),ae(t,v))}).change(function(n){if(!r){var i,a,o,s,l,d,p,u,h,m,v,w,x=X(n.data.changed,!0),k=x.length,C=k;e();for(e.each($,function(e,n){n.trigger("update."+t.namespace,{change:"prepare"})});C--;)if(i=x[C],a=i.phash,(o=t.navHash2Elm(i.hash)).length){if(v=o.parent(),a){if(l=o.closest("."+f),d=G(a),p=o.parent().next(),u=J(d,i),!d.length)continue;d[0]===l[0]&&p.get(0)===u.get(0)||(u.length?u.before(v):d.append(v))}h=o.hasClass(b),m=o.hasClass(y),s=e(V(i)),o.replaceWith(s.children(g)),!c&&ie(null,v),i.dirs&&(h||m)&&(o=t.navHash2Elm(i.hash))&&o.next("."+f).children().length&&(h&&o.addClass(b),m&&o.addClass(y)),w|=i.dirs==-1}w&&P(),e.each($,function(e,n){n.trigger("update."+t.namespace,{change:"done"})}),k&&ne(void 0,!1)}}).remove(function(n){var i,a,o,r=n.data.removed,s=r.length;for(e.each($,function(e,n){n.trigger("update."+t.namespace,{removed:r}),n.trigger("update."+t.namespace,{change:"prepare"})});s--;)(i=t.navHash2Elm(r[s])).length&&(o=!0,a=i.closest("."+f),i.parent().detach(),a.children().length||a.hide().prev(g).removeClass(v+" "+b+" "+y));o&&t.getUI("navbar").children(".ui-resizable-handle").trigger("resize"),e.each($,function(e,n){n.trigger("update."+t.namespace,{change:"done"})})}).bind("lockfiles unlockfiles",function(n){var i="lockfiles"==n.type,a=!!n.data.helper&&n.data.helper.data("locked"),o=i&&!a?"disable":"enable",r=e.grep(n.data.files||[],function(e){var n=t.file(e);return!(!n||"directory"!=n.mime)});e.each(r,function(e,n){var r=t.navHash2Elm(n);r.length&&!a&&(r.hasClass(A)&&r.draggable(o),r.hasClass(S)&&r.droppable(o),r[i?"addClass":"removeClass"](T))})}).bind("sortchange",function(){if(t.sortAlsoTreeview||le!==t.sortAlsoTreeview){var n,i,a=[],o={},r={},s="",l=!1;t.lazy(function(){n=X(t.files()),le=t.sortAlsoTreeview,oe.empty(),Y(e.map(t.roots,function(e){var n=t.file(e);return n&&!n.phash?n:null})),Object.keys($).length?(a=ee(),a.length>1?(e.each(a,function(e,n){var i=t.file(t.root(n)).volumeid;0===e&&(s=i),r[i]=n,o[n]=[]}),e.each(n,function(e,t){return t.volumeid?void o[r[t.volumeid]||r[s]].push(t):(l=!0,!1)})):l=!0,l?e.each(a,function(e,a){Y(n),i=te(t.file(a)),ae(n,y)}):e.each(o,function(e,n){Y(n),i=te(t.file(e)),ae(n,y)})):(Y(n),i=te(),ae(n,y)),ne()},100)}})}),this},e.fn.elfinderuploadbutton=function(t){return this.each(function(){var n,i=t.fm,a=e(this).elfinderbutton(t).off("click"),o=e("<form/>").appendTo(a),r=e('<input type="file" multiple="true" title="'+t.fm.i18n("selectForUpload")+'"/>').on("change",function(){var t=e(this);t.val()&&(i.exec("upload",{input:t.remove()[0]},void 0,i.cwd().hash),r.clone(!0).appendTo(o))}).on("dragover",function(e){e.originalEvent.dataTransfer.dropEffect="copy"});o.append(r.clone(!0)),t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){var e=t.disabled();o.is("visible")?!e&&o.hide():e&&o.show()})}).change()})},e.fn.elfinderviewbutton=function(t){return this.each(function(){var n,i=e(this).elfinderbutton(t),a=i.children(".elfinder-button-icon"),o=i.children(".elfinder-button-text");t.change(function(){n&&cancelAnimationFrame(n),n=requestAnimationFrame(function(){var e="icons"==t.value;a.toggleClass("elfinder-button-icon-view-list",e),t.className=e?"view-list":"",t.title=t.fm.i18n(e?"viewlist":"viewicons"),i.attr("title",t.title),o.html(t.title)})})})},e.fn.elfinderworkzone=function(t){var n="elfinder-workzone";return this.not("."+n).each(function(){var i,a=e(this).addClass(n),o=Math.round(a.height()),r=a.parent(),s=function(){i=a.outerHeight(!0)-a.height()},l=function(s){var l=r.height()-i,c=r.attr("style"),d=Math.round(a.height());s&&(s.preventDefault(),s.stopPropagation()),r.css("overflow","hidden").children(":visible:not(."+n+")").each(function(){var t=e(this);"absolute"!=t.css("position")&&"fixed"!=t.css("position")&&(l-=t.outerHeight(!0))}),r.attr("style",c||""),l=Math.max(0,Math.round(l)),o===l&&d===l||(o=Math.round(a.height()),a.height(l),t.trigger("wzresize"))},c=function(){i=a.outerHeight(!0)-a.height(),l()};s(),r.on("resize."+t.namespace,l),t.one("cssloaded",c).bind("uiresize",l).bind("themechange",s)}),this},i.prototype.commands.archive=function(){var t,n=this,i=n.fm,a=[];this.variants=[],this.disableOnSearch=!1,this.nextAction={},i.bind("open reload",function(){n.variants=[],e.each(a=i.option("archivers").create||[],function(e,t){n.variants.push([t,i.mime2kind(t)])}),n.change()}),this.getstate=function(n){var o,r=this.files(n),s=r.length,l=s&&!i.isRoot(r[0])&&(i.file(r[0].phash)||{}).write&&!e.grep(r,function(e){return!e.read}).length;return l&&i.searchStatus.state>1&&(o=i.cwd().volumeid,l=s===e.grep(r,function(e){return!(!e.read||0!==e.hash.indexOf(o))}).length),l&&!this._disabled&&a.length&&(s||t&&"pending"==t.state())?0:-1},this.exec=function(o,r){var s,l,c=this.files(o),d=c.length,p=r||a[0],u=i.file(c[0].phash)||null,h=["errArchive","errPerm","errCreatingTempDir","errFtpDownloadFile","errFtpUploadFile","errFtpMkdir","errArchiveExec","errExtractExec","errRm"];if(t=e.Deferred().fail(function(e){e&&i.error(e)}),!d||!a.length||e.inArray(p,a)===-1)return t.reject();if(!u.write)return t.reject(h);for(s=0;s<d;s++)if(!c[s].read)return t.reject(h);return n.mime=p,n.prefix=(d>1?"Archive":c[0].name)+(i.option("archivers").createext?"."+i.option("archivers").createext[p]:""),n.data={targets:n.hashes(o),type:p},i.cwd().hash!==u.hash?l=i.exec("open",u.hash).done(function(){i.one("cwdrender",function(){i.selectfiles({files:o}),t=e.proxy(i.res("mixin","make"),n)()})}):(i.selectfiles({files:o}),t=e.proxy(i.res("mixin","make"),n)()),t}},(i.prototype.commands.back=function(){this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+left backspace"}],this.getstate=function(){return this.fm.history.canBack()?0:-1},this.exec=function(){return this.fm.history.back()}}).prototype={forceLoad:!0},i.prototype.commands.chmod=function(){this.updateOnSelect=!1;var t=this.fm,n={0:"owner",1:"group",2:"other"},i={read:t.i18n("read"),write:t.i18n("write"),execute:t.i18n("execute"),perm:t.i18n("perm"),kind:t.i18n("kind"),files:t.i18n("files")},a=function(e){return!isNaN(parseInt(e,8)&&parseInt(e,8)<=511)||e.match(/^([r-][w-][x-]){3}$/i)};this.tpl={main:'<div class="ui-helper-clearfix elfinder-info-title"><span class="elfinder-cwd-icon {class} ui-corner-all"/>{title}</div>{dataTable}',itemTitle:'<strong>{name}</strong><span id="elfinder-info-kind">{kind}</span>',groupTitle:"<strong>{items}: {num}</strong>",dataTable:'<table id="{id}-table-perm"><tr><td>{0}</td><td>{1}</td><td>{2}</td></tr></table><div class="">'+i.perm+': <input class="elfinder-tabstop elfinder-focus" id="{id}-perm" type="text" size="4" maxlength="3" value="{value}"></div>',fieldset:'<fieldset id="{id}-fieldset-{level}"><legend>{f_title}{name}</legend><input type="checkbox" value="4" class="elfinder-tabstop" id="{id}-read-{level}-perm"{checked-r}> <label for="{id}-read-{level}-perm">'+i.read+'</label><br><input type="checkbox" value="6" class="elfinder-tabstop" id="{id}-write-{level}-perm"{checked-w}> <label for="{id}-write-{level}-perm">'+i.write+'</label><br><input type="checkbox" value="5" class="elfinder-tabstop" id="{id}-execute-{level}-perm"{checked-x}> <label for="{id}-execute-{level}-perm">'+i.execute+"</label><br>"},this.shortcuts=[{}],this.getstate=function(e){var t=this.fm;return e=e||t.selected(),0==e.length&&(e=[t.cwd().hash]),this.checkstate(this.files(e))?0:-1},this.checkstate=function(t){var n=t.length;if(!n)return!1;var i=e.grep(t,function(e){return!(!(e.isowner&&e.perm&&a(e.perm))||1!=n&&"directory"==e.mime)}).length;return n==i},this.exec=function(t){var o=this.hashes(t),r=this.files(o);r.length||(o=[this.fm.cwd().hash],r=this.files(o));var s,l,c=this.fm,d=e.Deferred().always(function(){c.enable()}),p=this.tpl,u=r.length,h=r[0],f=c.namespace+"-perm-"+h.hash,m=p.main,g=' checked="checked"',v=function(){var e={};return e[c.i18n("btnApply")]=b,e[c.i18n("btnCancel")]=function(){A.elfinderdialog("close")},e},b=function(){var t,n=e.trim(e("#"+f+"-perm").val());return!!a(n)&&(A.elfinderdialog("close"),t={cmd:"chmod",targets:o,mode:n},void c.request({data:t,notify:{type:"chmod",cnt:u}}).fail(function(e){d.reject(e)}).done(function(n){n.changed&&n.changed.length&&(n.undo={cmd:"chmod",callback:function(){var t=[];return e.each(S,function(e,n){t.push(c.request({data:{cmd:"chmod",targets:n,mode:e},notify:{type:"undo",cnt:n.length}}))}),e.when.apply(null,t)}},n.redo={cmd:"chmod",callback:function(){return c.request({data:t,notify:{type:"redo",cnt:o.length}})}}),d.resolve(n)}))},y=function(){for(var t,i="",a=0;a<3;a++)t=0,e("#"+f+"-read-"+n[a]+"-perm").is(":checked")&&(t=4|t),e("#"+f+"-write-"+n[a]+"-perm").is(":checked")&&(t=2|t),e("#"+f+"-execute-"+n[a]+"-perm").is(":checked")&&(t=1|t),i+=t.toString(8);e("#"+f+"-perm").val(i)},w=function(t){for(var i,a=0;a<3;a++)i=parseInt(t.slice(a,a+1),8),e("#"+f+"-read-"+n[a]+"-perm").prop("checked",!1),e("#"+f+"-write-"+n[a]+"-perm").prop("checked",!1),e("#"+f+"-execute-"+n[a]+"-perm").prop("checked",!1),4==(4&i)&&e("#"+f+"-read-"+n[a]+"-perm").prop("checked",!0),2==(2&i)&&e("#"+f+"-write-"+n[a]+"-perm").prop("checked",!0),1==(1&i)&&e("#"+f+"-execute-"+n[a]+"-perm").prop("checked",!0);y()},x=function(e){for(var t,n,i,a="777",o="",r=e.length,s=0;s<r;s++){t=z(e[s].perm),S[t]||(S[t]=[]),S[t].push(e[s].hash),o="";for(var l=0;l<3;l++)n=parseInt(t.slice(l,l+1),8),i=parseInt(a.slice(l,l+1),8),4!=(4&n)&&4==(4&i)&&(i-=4),2!=(2&n)&&2==(2&i)&&(i-=2),1!=(1&n)&&1==(1&i)&&(i-=1),o+=i.toString(8);a=o}return a},k=function(e){return e?":"+e:""},C=function(e,t){for(var a,o,r="",s=p.dataTable,l=0;l<3;l++)a=parseInt(e.slice(l,l+1),8),r+=a.toString(8),o=p.fieldset.replace("{f_title}",c.i18n(n[l])).replace("{name}",k(t[n[l]])).replace(/\{level\}/g,n[l]),s=s.replace("{"+l+"}",o).replace("{checked-r}",4==(4&a)?g:"").replace("{checked-w}",2==(2&a)?g:"").replace("{checked-x}",1==(1&a)?g:"");return s=s.replace("{value}",r).replace("{valueCaption}",i.perm)},z=function(e){if(isNaN(parseInt(e,8))){for(var t=e.split(""),n=[],i=0,a=t.length;i<a;i++)0===i||3===i||6===i?t[i].match(/[r]/i)?n.push(1):t[i].match(/[-]/)&&n.push(0):1===i||4===i||7===i?t[i].match(/[w]/i)?n.push(1):t[i].match(/[-]/)&&n.push(0):t[i].match(/[x]/i)?n.push(1):t[i].match(/[-]/)&&n.push(0);n.splice(3,0,","),n.splice(7,0,",");for(var o=n.join(""),r=o.split(","),s=[],l=0,c=r.length;l<c;l++){var d=parseInt(r[l],2).toString(8);s.push(d)}e=s.join("")}else e=parseInt(e,8).toString(8);return e},T={title:this.title,width:"auto",buttons:v(),close:function(){e(this).elfinderdialog("destroy")}},A=c.getUI().find("#"+f),S={},I="";return A.length?(A.elfinderdialog("toTop"),e.Deferred().resolve()):(m=m.replace("{class}",u>1?"elfinder-cwd-icon-group":c.mime2class(h.mime)),u>1?s=p.groupTitle.replace("{items}",c.i18n("items")).replace("{num}",u):(s=p.itemTitle.replace("{name}",h.name).replace("{kind}",c.mime2kind(h)),I=c.tmb(h)),l=C(x(r),1==r.length?r[0]:{}),m=m.replace("{title}",s).replace("{dataTable}",l).replace(/{id}/g,f),A=this.fmDialog(m,T),A.attr("id",f),I&&e("<img/>").on("load",function(){A.find(".elfinder-cwd-icon").addClass(I.className).css("background-image","url('"+I.url+"')")}).attr("src",I.url),e("#"+f+"-table-perm :checkbox").on("click",function(){y("perm")}),e("#"+f+"-perm").on("keydown",function(t){var n=t.keyCode;if(n==e.ui.keyCode.ENTER)return t.stopPropagation(),void b()}).on("focus",function(t){e(this).trigger("select")}).on("keyup",function(t){3==e(this).val().length&&(e(this).trigger("select"),w(e(this).val()))}),d)}},i.prototype.commands.colwidth=function(){this.alwaysEnabled=!0,this.updateOnSelect=!1,this.getstate=function(){return"fixed"===this.fm.getUI("cwd").find("table").css("table-layout")?0:-1},this.exec=function(){return this.fm.getUI("cwd").trigger("colwidth"),e.Deferred().resolve()}},i.prototype.commands.copy=function(){this.shortcuts=[{pattern:"ctrl+c ctrl+insert"}],this.getstate=function(t){var n=this.files(t),i=n.length;return i&&e.grep(n,function(e){return!!e.read}).length==i?0:-1},this.exec=function(t){var n=this.fm,i=e.Deferred().fail(function(e){n.error(e)});return e.each(this.files(t),function(e,t){if(!t.read)return!i.reject(["errCopy",t.name,"errPerm"])}),"rejected"==i.state()?i:i.resolve(n.clipboard(this.hashes(t)))}},i.prototype.commands.cut=function(){var t=this.fm;this.shortcuts=[{pattern:"ctrl+x shift+insert"}],this.getstate=function(n){var i=this.files(n),a=i.length;return a&&e.grep(i,function(e){return!(!e.read||e.locked||t.isRoot(e))}).length==a?0:-1},this.exec=function(n){var i=e.Deferred().fail(function(e){t.error(e)});return e.each(this.files(n),function(e,n){return!n.read||n.locked||t.isRoot(n)?!i.reject(["errCopy",n.name,"errPerm"]):n.locked?!i.reject(["errLocked",n.name]):void 0}),"rejected"==i.state()?i:i.resolve(t.clipboard(this.hashes(n),!0))}},i.prototype.commands.zipdl=function(){},i.prototype.commands.download=function(){var t=this,n=this.fm,i=null,a=!1,o=!1,r=!1,s=window.location.pathname||"/",l=function(r,s){var l,c;if(null!==i&&(n.searchStatus.state>1?o=n.searchStatus.mixed:n.leafRoots[n.cwd().hash]&&(l=n.cwd().volumeid,e.each(r,function(e,t){if(0!==t.indexOf(l))return o=!0,!1})),a=n.isCommandEnabled("zipdl",r[0])),o){if(c=i?"zipdl":"download",r=e.grep(r,function(e){var t=n.file(e),a=!(!t||!i&&"directory"===t.mime||!n.isCommandEnabled(c,e));return t&&s&&!a&&n.cwdHash2Elm(t.hash).trigger("unselect"),a}),!r.length)return[]}else if(!n.isCommandEnabled("download",r[0]))return[];return e.grep(t.files(r),function(e){var t=!(!e.read||!a&&"directory"==e.mime);return s&&!t&&n.cwdHash2Elm(e.hash).trigger("unselect"),t})};this.linkedCmds=["zipdl"],this.shortcuts=[{pattern:"shift+enter"}],this.getstate=function(e){var t=this.hashes(e),i=t.length,o=this.options.maxRequests||10;return i<1?-1:(i=l(t).length,i&&(a||i<=o&&(!n.UA.IE&&!n.UA.Mobile||1==i))?0:-1)},n.bind("contextmenu",function(n){var i,a,o=t.fm,r=null,s=function(t){var n=t.url||o.url(t.hash);return{icon:"link",node:e("<a/>").attr({href:n,target:"_blank",title:o.i18n("link")}).text(t.name).on("mousedown click touchstart touchmove touchend contextmenu",function(e){e.stopPropagation()}).on("dragstart",function(n){var i=n.dataTransfer||n.originalEvent.dataTransfer||null;if(r=null,i){var a=function(t){var n,i=t.mime,a=o.tmb(t);return n='<div class="elfinder-cwd-icon '+o.mime2class(i)+' ui-corner-all"/>',a&&(n=e(n).addClass(a.className).css("background-image","url('"+a.url+"')").get(0).outerHTML),n};i.effectAllowed="copyLink",i.setDragImage&&(r=e('<div class="elfinder-drag-helper html5-native">').append(a(t)).appendTo(e(document.body)),i.setDragImage(r.get(0),50,47)),o.UA.IE||(i.setData("elfinderfrom",window.location.href+t.phash),i.setData("elfinderfrom:"+i.getData("elfinderfrom"),""))}}).on("dragend",function(e){r&&r.remove()})}};if(t.extra=null,n.data&&(i=n.data.targets||[],1===i.length&&(a=o.file(i[0]))&&"directory"!==a.mime))if("1"!=a.url)t.extra=s(a);else{var l;t.extra={icon:"link",node:e("<a/>").attr({href:"#",title:o.i18n("getLink"),draggable:"false"}).text(a.name).on("click touchstart",function(e){if(!("touchstart"===e.type&&e.originalEvent.touches.length>1)){var t=l.parent();e.stopPropagation(),e.preventDefault(),t.removeClass("ui-state-disabled").addClass("elfinder-button-icon-spinner"),o.request({data:{cmd:"url",target:a.hash},preventDefault:!0}).always(function(e){if(t.removeClass("elfinder-button-icon-spinner"),e.url){var n=o.file(a.hash);n.url=e.url,l.replaceWith(s(a).node)}else t.addClass("ui-state-disabled")})}})},l=t.extra.node,l.ready(function(){requestAnimationFrame(function(){l.parent().addClass("ui-state-disabled").css("pointer-events","auto")})})}}).one("open",function(){n.api>=2.1012&&(i=n.getCommand("zipdl")),r=n.api>2.1038&&!n.isCORS}),this.exec=function(n){var i,c,d,p,u,h,f,m=this.hashes(n),g=this.fm,v=(g.options.url,l(m,!0)),b=e.Deferred(),y="",w={},x=!1,k=function(n){return function(){var i,a,o,r=e.Deferred(),s=g.file(g.root(n[0])),l=1===n.length,d=s?s.i18||s.name:null;return l?(i=g.file(n[0]))&&(a=i.i18||i.name):(e.each(n,function(){var e=g.file(this);return!e||o&&o!==e.phash?(o=null,!1):void(o=e.phash)}),o&&(i=g.file(o))&&(a=(i.i18||i.name)+"-"+n.length)),a&&(d=a),d&&(d=" ("+d+")"),g.request({data:{cmd:"zipdl",targets:n},notify:{type:"zipdl",cnt:1,hideCnt:!0,msg:g.i18n("ntfzipdl")+d},cancel:!0,eachCancel:!0,preventDefault:!0}).done(function(i){var o,s,l,d,u,h,f={},m="dlw"+ +new Date;i.error?(g.error(i.error),r.resolve()):i.zipdl&&(o=i.zipdl,a?(h=g.splitFileExtention(o.name||""),a+=h[1]?"."+h[1]:".zip"):a=o.name,p&&(!g.UA.Safari||g.isSameOrigin(g.options.url))||x?(c=g.options.url+(g.options.url.indexOf("?")===-1?"?":"&")+"cmd=zipdl&download=1",e.each([n[0],o.file,a,o.mime],function(e,t){c+="&targets%5B%5D="+encodeURIComponent(t)}),e.each(g.customData,function(e,t){c+="&"+encodeURIComponent(e)+"="+encodeURIComponent(t)}),c+="&"+encodeURIComponent(a),l=e("<a/>").attr("href",c).attr("download",g.escape(a)).on("click",function(){r.resolve(),s&&s.elfinderdialog("destroy")}),x?(l.attr("target","_blank").append('<span class="elfinder-button-icon elfinder-button-icon-download"></span>'+g.escape(a)),f[g.i18n("btnCancel")]=function(){s.elfinderdialog("destroy")},s=t.fmDialog(l,{title:g.i18n("link"),buttons:f,width:"200px",destroyOnClose:!0,close:function(){"resolved"!==r.state()&&r.resolve()}})):(C(l.hide().appendTo("body").get(0)),l.remove())):(d=e('<form action="'+g.options.url+'" method="post" target="'+m+'" style="display:none"/>').append('<input type="hidden" name="cmd" value="zipdl"/>').append('<input type="hidden" name="download" value="1"/>'),e.each([n[0],o.file,a,o.mime],function(e,t){d.append('<input type="hidden" name="targets[]" value="'+g.escape(t)+'"/>')}),e.each(g.customData,function(e,t){d.append('<input type="hidden" name="'+e+'" value="'+g.escape(t)+'"/>')}),d.attr("target",m).appendTo("body"),u=e('<iframe style="display:none" name="'+m+'">').appendTo("body").ready(function(){d.submit().remove(),r.resolve(),setTimeout(function(){u.remove()},2e4)})))}).fail(function(e){e&&g.error(e),r.resolve()}),r.promise()}},C=function(e){var t;"function"==typeof MouseEvent?t=new MouseEvent("click"):(t=document.createEvent("MouseEvents"),t.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null)),e.dispatchEvent(t)},z=function(e){var t,n="elfdl"+e;t=document.cookie.split(n+"="),2===t.length?(h&&clearTimeout(h),document.cookie=n+"=; path="+s+"; max-age=0",T()):setTimeout(function(){z(e)},200)},T=function(){g.ui.notify.children(".elfinder-notify-download").length&&g.notify({type:"download",cnt:-1})},A=[];if(!v.length)return b.reject();if(u=e.grep(v,function(e){return"directory"!==e.mime}).length,d=e("<a>").hide().appendTo("body"),p="string"==typeof d.get(0).download,a&&(u!==v.length||u>=(this.options.minFilesZipdl||1)))return d.remove(),x=!p&&g.UA.Mobile,o?(w={},e.each(v,function(e,t){var n=t.hash.split("_",2);w[n[0]]?w[n[0]].push(t.hash):w[n[0]]=[t.hash]}),!x&&g.UA.Mobile&&Object.keys(w).length>1&&(x=!0)):w=[e.map(v,function(e){return e.hash})],b=g.sequence(e.map(w,function(e){return k(e)})).always(function(){g.trigger("download",{files:v})});for(A=[],i=0;i<v.length;i++)c=g.openUrl(v[i].hash,!0),r&&c.substr(0,g.options.url.length)===g.options.url&&(f=g.getRequestId(),A.push(f),c+="&cpath="+s+"&reqid="+f,h=setTimeout(function(){g.notify({type:"download",cnt:1,cancel:g.UA.IE||g.UA.Edge?void 0:function(){A.length&&e.each(A,function(){g.request({data:{cmd:"abort",id:this},preventDefault:!0})}),A=[]}})},g.notifyDelay),z(f)),!p||g.UA.Safari&&!g.isSameOrigin(c)?g.UA.Mobile?setTimeout(function(){window.open(c)||(g.error("errPopup"),h&&cleaerTimeout(h),T())},100):y+='<iframe class="downloader" id="downloader-'+v[i].hash+'" style="display:none" src="'+c+'"/>':C(d.attr("href",c).attr("download",g.escape(v[i].name)).get(0));return d.remove(),e(y).appendTo("body").ready(function(){setTimeout(function(){e(y).each(function(){e("#"+e(this).attr("id")).remove()})},2e4+1e4*i)}),g.trigger("download",{files:v}),b.resolve()}},i.prototype.commands.duplicate=function(){var t=this.fm;this.getstate=function(n){var i=this.files(n),a=i.length;return a&&t.cwd().write&&e.grep(i,function(e){return!(!e.read||e.phash!==t.cwd().hash||t.isRoot(e))}).length==a?0:-1},this.exec=function(t){var n=this.fm,i=this.files(t),a=i.length,o=e.Deferred().fail(function(e){e&&n.error(e)});return a?(e.each(i,function(e,t){if(!t.read||!n.file(t.phash).write)return!o.reject(["errCopy",t.name,"errPerm"])}),"rejected"==o.state()?o:n.request({data:{cmd:"duplicate",targets:this.hashes(t)},notify:{type:"copy",cnt:a},navigate:{toast:{inbuffer:{msg:n.i18n(["complete",n.i18n("cmdduplicate")])}}}})):o.reject()}},i.prototype.commands.edit=function(){var t,n=this,i=this.fm,a=i.res("class","editing"),o=[],r=[],s=!1,l=function(e){return e.replace(/\s+$/,"")},c=function(t){var a,o=e('<select class="ui-corner-all"/>');return t&&e.each(t,function(e,t){a=i.escape(t.value),o.append('<option value="'+a+'">'+(t.caption?i.escape(t.caption):a)+"</option>")}),e.each(n.options.encodings,function(e,t){o.append('<option value="'+t+'">'+t+"</option>")}),o},d=function(){var t,a;return a="string"==typeof n.options.dialogWidth&&(t=n.options.dialogWidth.match(/(\d+)%/))?parseInt(i.getUI().width()*(t[1]/100)):parseInt(n.options.dialogWidth||650),Math.min(a,e(window).width())},p=function(t){var a,l,c,d=t.length;return d>1&&(a=t[0].mime,l=t[0].name.replace(/^.*(\.[^.]+)$/,"$1")),e.grep(t,function(t){var p;return!c&&"directory"!==t.mime&&(p=t.read&&(s||i.mimeIsText(t.mime)||e.inArray(t.mime,1===d?o:r)!==-1)&&(!n.onlyMimes.length||e.inArray(t.mime,n.onlyMimes)!==-1)&&(1===d||t.mime===a&&t.name.substr(l.length*-1)===l)&&!!i.uploadMimeCheck(t.mime,t.phash)&&v(t,d)&&Object.keys(m).length,p||(c=!0),p)})},u=function(e){var t,n=i.file(e);i.request({cmd:"info",targets:[e],preventDefault:!0}).done(function(e){var a;e&&e.files&&e.files.length&&(t=e.files[0],n.ts==t.ts&&n.size==t.size||(a={changed:[t]},i.updateCache(a),i.change(a)))})},h=function(t,o,r,s,p){var h,m,g,v,b,y,x=e.Deferred(),k=!1,C=function(){return!!k||(i.toast({mode:"warning",msg:i.i18n("nowLoading")}),!1)},z=function(){var t,n,i=v?v.val():void 0,a=e.Deferred().fail(function(e){g.show().find("button.elfinder-btncnt-0,button.elfinder-btncnt-1").hide()});return C()?(h.editor&&(h.editor.save(h[0],h.editor.instance),t=h.editor.confObj,t.info&&(t.info.schemeContent||t.info.arrayBufferContent)&&(i="scheme")),n=M(),D(n),n.promise?n.done(function(e){x.notifyWith(h,[i,h.data("hash"),m,a])}).fail(function(e){a.reject(e)}):x.notifyWith(h,[i,h.data("hash"),m,a]),a):a.resolve()},T=function(){C()&&z().fail(function(e){e&&i.error(e)})},A=function(){h.elfinderdialog("close")},S=function(){C()&&(z().done(function(){k=!1,g.show(),A()}).fail(function(e){g.show(),e&&i.error(e)}),g.hide())},I=function(){if(C()){var t=m,r=i.file(o.phash)?o.phash:i.cwd().hash,s=function(e){d.addClass(a).fadeIn(function(){e&&i.error(e)}),m=t,i.disable()},l=function(){n.mime=E.mime||o.mime,n.prefix=(E.name||o.name).replace(/ \d+(\.[^.]+)?$/,"$1"),n.requestCmd="mkfile",n.nextAction={},n.data={target:r},e.proxy(i.res("mixin","make"),n)().done(function(e){e.added&&e.added.length?(h.data("hash",e.added[0].hash),z().done(function(){k=!1,g.show(),A(),d.fadeIn()}).fail(s)):s()}).progress(function(e){e&&"errUploadMime"===e&&h.trigger("saveAsFail")}).fail(s).always(function(){delete n.mime,delete n.prefix,delete n.nextAction,delete n.data}),i.trigger("unselectfiles",{files:[o.hash]})},c=null,d=i.getUI().children("."+n.dialogClass+":visible");g.is(":hidden")&&(d=d.add(g)),d.removeClass(a).fadeOut(),i.enable(),i.searchStatus.state<2&&r!==i.cwd().hash&&(c=i.exec("open",[r],{thash:r})),e.when([c]).done(function(){c?i.one("cwdrender",l):l()}).fail(s)}},O=function(){var t,n,a=e.Deferred();return k?(h.editor&&h.editor.save(h[0],h.editor.instance),t=M(),t&&t.promise?(n=setTimeout(function(){i.notify({type:"chkcontent",cnt:1,hideCnt:!0})},100),t.always(function(){n&&clearTimeout(n),i.notify({type:"chkcontent",cnt:-1})}).done(function(e){a.resolve(m!==e)}).fail(function(e){a.resolve(e||!0)})):a.resolve(m!==t),a):a.resolve(!1)},j={title:i.escape(o.name),width:d(),buttons:{},cssClass:a,maxWidth:"window",maxHeight:"window",allowMinimize:!0,allowMaximize:!0,openMaximized:w()||p&&p.info&&p.info.openMaximized,btnHoverFocus:!1,closeOnEscape:!1,propagationEvents:["mousemove","mouseup","click"],minimize:function(){var e;h.editor&&g.closest(".ui-dialog").is(":hidden")&&(e=h.editor.confObj,e.info&&e.info.syncInterval&&u(o.hash))},close:function(){var e=function(){var e;x.resolve(),h.editor&&(h.editor.close(h[0],h.editor.instance),e=h.editor.confObj,e.info&&e.info.syncInterval&&u(o.hash)),h.elfinderdialog("destroy")},t="undefined"!=typeof E.name,a=t?{label:"btnSaveAs",callback:function(){requestAnimationFrame(I)}}:{label:"btnSaveClose",callback:function(){z().done(function(){e()})}};O().done(function(o){var r=["confirmNotSave"];o?("string"==typeof o&&r.unshift(o),i.confirm({title:n.title,text:r,accept:a,cancel:{label:"btnClose",callback:e},buttons:t?null:[{label:"btnSaveAs",callback:function(){requestAnimationFrame(I)}}]})):e()})},open:function(){var e,n,a;if(h.initEditArea.call(h,t,o,r,i),h.editor){if(e=h.editor.load(h[0])||null,e&&e.done)e.always(function(){k=!0}).done(function(e){h.editor.instance=e,h.editor.focus(h[0],h.editor.instance),D(M()),requestAnimationFrame(function(){g.trigger("resize")})}).fail(function(e){e&&i.error(e),h.elfinderdialog("destroy")});else{if(k=!0,e&&("string"==typeof e||Array.isArray(e)))return i.error(e),void h.elfinderdialog("destroy");h.editor.instance=e,h.editor.focus(h[0],h.editor.instance),D(M()),requestAnimationFrame(function(){g.trigger("resize")})}n=h.editor.confObj,n.info&&n.info.syncInterval&&(a=parseInt(n.info.syncInterval))&&setTimeout(function(){F(a)},a)}else k=!0,D(M())},resize:function(e,t){h.editor&&h.editor.resize(h[0],h.editor.instance,e,t||{})}},M=function(){return h.getContent.call(h,h[0])},D=function(e){e&&e.promise?e.done(function(e){m=e}):m=e},F=function(e){g.is(":visible")&&(u(o.hash),setTimeout(function(){F(e)},e))},E={};if(p&&(p.html&&(h=e(p.html)),b={init:p.init||null,load:p.load,getContent:p.getContent||null,save:p.save,beforeclose:"function"==typeof p.beforeclose?p.beforeclose:void 0,close:"function"==typeof p.close?p.close:function(){},focus:"function"==typeof p.focus?p.focus:function(){},resize:"function"==typeof p.resize?p.resize:function(){},instance:null,doSave:T,doCancel:A,doClose:S,file:o,fm:i,confObj:p,trigger:function(e,t){i.trigger("editEditor"+e,Object.assign({},p.info||{},t))}}),!h){if(!i.mimeIsText(o.mime))return x.reject("errEditorNotFound");!function(){var n=function(){v&&O().done(function(e){e?v.attr("title",i.i18n("saveAsEncoding")).addClass("elfinder-edit-changed"):v.attr("title",i.i18n("openAsEncoding")).removeClass("elfinder-edit-changed")})};h=e('<textarea class="elfinder-file-edit" rows="20" id="'+t+'-ta"></textarea>').on("input propertychange",n),h.editor&&h.editor.info&&!h.editor.info.useTextAreaEvent||h.on("keydown",function(t){var n,i,a=t.keyCode;t.stopPropagation(),a==e.ui.keyCode.TAB&&(t.preventDefault(),this.setSelectionRange&&(n=this.value,i=this.selectionStart,this.value=n.substr(0,i)+"\t"+n.substr(this.selectionEnd),i+=1,this.setSelectionRange(i,i))),(t.ctrlKey||t.metaKey)&&(a!="Q".charCodeAt(0)&&a!="W".charCodeAt(0)||(t.preventDefault(),A()),a=="S".charCodeAt(0)&&(t.preventDefault(),T()))}).on("mouseenter",function(){this.focus()}),h.initEditArea=function(t,a,o){var r=s&&"unknown"!==s?[{value:s}]:[],l=e("<select/>").hide(),d=function(t){t&&l.appendTo(v.parent()),l.empty().append(e("<option/>").text(v.val())),v.width(l.width())};h.hide().val(o),""!==o&&s&&"UTF-8"===s||r.push({value:"UTF-8"}),v=c(r).on("touchstart",function(e){e.stopPropagation()}).on("change",function(){O().done(function(e){e||""===M()||(A(),f(a,v.val(),p).fail(function(e){e&&i.error(e)}))}),d()}).on("mouseover",n),h.parent().next().prepend(e('<div class="ui-dialog-buttonset elfinder-edit-extras"/>').append(v)),d(!0)}}()}return h.data("hash",o.hash),b&&(h.editor=b,"function"==typeof b.beforeclose&&(j.beforeclose=function(){return b.beforeclose(h[0],b.instance)}),"function"==typeof b.init&&(h.initEditArea=b.init),"function"==typeof b.getContent&&(h.getContent=b.getContent)),h.initEditArea||(h.initEditArea=function(){}),h.getContent||(h.getContent=function(){return l(h.val())}),p&&p.info&&p.info.preventGet||(j.buttons[i.i18n("btnSave")]=T,j.buttons[i.i18n("btnSaveClose")]=S,j.buttons[i.i18n("btnSaveAs")]=I,j.buttons[i.i18n("btnCancel")]=A),p&&"function"==typeof p.prepare&&p.prepare(h,j,o),g=n.fmDialog(h,j).attr("id",t).on("keydown keyup keypress",function(e){e.stopPropagation()}).css({overflow:"hidden",minHeight:"7em"}).addClass("elfinder-edit-editor").closest(".ui-dialog").on("changeType",function(t,n){if(n.extention&&n.mime){var a=(n.extention,n.mime,e(this).children(".ui-dialog-buttonpane").children(".ui-dialog-buttonset"));a.children(".elfinder-btncnt-0,.elfinder-btncnt-1").hide(),E.name=i.splitFileExtention(o.name)[0]+"."+n.extention,E.mime=n.mime,n.keepEditor||a.children(".elfinder-btncnt-2").trigger("click")}}),y=(i.options.dialogContained?elfNode:e(window)).width(),g.width()>y&&g.width(y),x.promise()},f=function(t,a,o){var r,s,l,d=t.hash,p=(i.options,e.Deferred()),u="edit-"+i.namespace+"-"+t.hash,m=i.getUI().find("#"+u),g=a?a:0;if(m.length)return m.elfinderdialog("toTop"),p.resolve();if(!(t.read&&(t.write||o.info&&o.info.converter)))return s=["errOpen",t.name,"errPerm"],p.reject(s);if(o&&o.info){if("function"==typeof o.info.edit)return l=o.info.edit.call(i,t,o),l.promise?l.done(function(){p.resolve()}).fail(function(e){p.reject(e)}):l?p.resolve():p.reject(),p;o.info.urlAsContent||o.info.preventGet||o.info.noContent?(r=e.Deferred(),o.info.urlAsContent?i.url(d,{async:!0,onetime:!0,temporary:!0}).done(function(e){r.resolve({content:e})}):r.resolve({})):r=i.request({data:{cmd:"get",target:d,conv:g,_t:t.ts},options:{type:"get",cache:!0},notify:{type:"file",cnt:1},preventDefault:!0}),r.done(function(a){var r,s,l;a.doconv?i.confirm({title:n.title,text:"unknown"===a.doconv?"confirmNonUTF8":"confirmConvUTF8",accept:{label:"btnConv",callback:function(){p=f(t,r.val(),o)}},cancel:{label:"btnCancel",callback:function(){p.reject()}},optionsCallback:function(t){t.create=function(){var t=e('<div class="elfinder-dialog-confirm-encoding"/>'),n={value:a.doconv};"unknown"===a.doconv&&(n.caption="-"),r=c([n]),e(this).next().find(".ui-dialog-buttonset").prepend(t.append(e("<label>"+i.i18n("encoding")+" </label>").append(r)))}}}):(o&&o.info&&o.info.preventGet||!i.mimeIsText(t.mime)||(s=new RegExp("^(data:"+t.mime.replace(/([.+])/g,"\\$1")+";base64,)","i"),o.info.dataScheme?window.btoa&&!a.content.match(s)&&(a.content="data:"+t.mime+";base64,"+btoa(a.content)):window.atob&&(l=a.content.match(s))&&(a.content=atob(a.content.substr(l[1].length)))),h(u,t,a.content,a.encoding,o).done(function(e){p.resolve(e)}).progress(function(e,t,n,a){var o=this;t&&(d=t),i.request({options:{type:"post"},data:{cmd:"put",target:d,encoding:e||n.encoding,content:n},notify:{type:"save",cnt:1},syncOnFail:!0,preventFail:!0,navigate:{target:"changed",toast:{inbuffer:{msg:i.i18n(["complete",i.i18n("btnSave")])}}}}).fail(function(e){p.reject(e),a.reject()}).done(function(e){requestAnimationFrame(function(){o.trigger("focus"),o.editor&&o.editor.focus(o[0],o.editor.instance)}),a.resolve()})}).fail(function(e){p.reject(e)}))}).fail(function(e){var t=i.parseError(e);t=Array.isArray(t)?t[0]:t,"errConvUTF8"!==t&&i.sync(),p.reject(e)})}return p.promise()},m={},g={info:{id:"textarea",name:"TextArea",useTextAreaEvent:!0},
load:function(t){this.trigger("Prepare",{node:t,editorObj:void 0,instance:void 0,opts:{}}),t.setSelectionRange&&t.setSelectionRange(0,0),e(t).trigger("focus").show()},save:function(){}},v=function(a,o){var r=function(t,n){if(n){if("*"===n[0]||e.inArray(t,n)!==-1)return!0;var a,o;for(o=n.length,a=0;a<o;a++)if(0===t.indexOf(n[a]))return!0;return!1}return i.mimeIsText(t)},s=function(e,t){if(!t||!t.length)return!0;var n,i,a=e.replace(/^.+\.([^.]+)|(.+)$/,"$1$2").toLowerCase();for(i=t.length,n=0;n<i;n++)if(a===t[n].toLowerCase())return!0;return!1},l=n.options.editors||[],c=i.cwd().write;return t=i.storage("storedEditors")||{},m={},l.length||(l=[g]),e.each(l,function(e,t){var n;(1===o||!t.info.single)&&(t.info&&t.info.converter?c:a.write)&&(a.size>0||!t.info.converter&&(t.info.canMakeEmpty||t.info.canMakeEmpty!==!1&&i.mimeIsText(a.mime)))&&(!t.info.maxSize||a.size<=t.info.maxSize)&&r(a.mime,t.mimes||null)&&s(a.name,t.exts||null)&&"function"==typeof t.load&&"function"==typeof t.save&&(n=t.info.name?t.info.name:"Editor "+e,t.id=t.info.id?t.info.id:"editor"+e,t.name=n,t.i18n=i.i18n(n),m[t.id]=t)}),!!Object.keys(m).length},b=function(n,a){n&&a&&(e.isPlainObject(t)||(t={}),t[n]=a.id,i.storage("storedEditors",t),i.trigger("selectfiles",{files:i.selected()}))},y=function(){var e=i.storage("useStoredEditor");return e?e>0:n.options.useStoredEditor},w=function(){var e=i.storage("editorMaximized");return e?e>0:n.options.editorMaximized},x=function(t,n){var a=[];return e.each(m,function(e,o){a.push({label:i.escape(o.i18n),icon:o.info&&o.info.icon?o.info.icon:"edit",options:{iconImg:o.info&&o.info.iconImg?i.baseUrl+o.info.iconImg:void 0},callback:function(){b(t[0].mime,o),n&&n.call(o)}})}),a},k=function(e){return e.toLowerCase().replace(/ +/g,"")},C=function(e){var n=t[e];return n&&Object.keys(m).length?m[k(n)]:void 0};this.shortcuts=[{pattern:"ctrl+e"}],this.init=function(){var t,n,i=this,a=this.fm,l=this.options,c=[];this.onlyMimes=this.options.mimes||[],a.one("open",function(){l.editors&&Array.isArray(l.editors)&&(a.trigger("canMakeEmptyFile",{mimes:Object.keys(a.storage("mkfileTextMimes")||{}).concat(l.makeTextMimes||["text/plain"])}),e.each(l.editors,function(e,t){t.info&&t.info.cmdCheck&&c.push(t.info.cmdCheck)}),c.length?a.api>=2.103?n=a.request({data:{cmd:"editor",name:c,method:"enabled"},preventDefault:!0}).done(function(e){t=e}).fail(function(){t={}}):(t={},n=e.Deferred().resolve()):n=e.Deferred().resolve(),n.always(function(){t&&(l.editors=e.grep(l.editors,function(e){return!e.info||!e.info.cmdCheck||!!t[e.info.cmdCheck]})),e.each(l.editors,function(e,t){t.setup&&"function"==typeof t.setup&&t.setup.call(t,l,a),t.disabled||(t.mimes&&Array.isArray(t.mimes)&&(o=o.concat(t.mimes),t.info&&t.info.single||(r=r.concat(t.mimes))),!s&&t.mimes&&"*"===t.mimes[0]&&(s=!0),t.info||(t.info={}),t.info.integrate&&a.trigger("helpIntegration",Object.assign({cmd:"edit"},t.info.integrate)),t.info.canMakeEmpty&&a.trigger("canMakeEmptyFile",{mimes:t.mimes}))}),o=(e.uniqueSort||e.unique)(o),r=(e.uniqueSort||e.unique)(r),l.editors=e.grep(l.editors,function(e){return!e.disabled})}))}).bind("select",function(){m=null}).bind("contextmenucreate",function(t){var n,o,r=function(e){var t=i.title;a.one("contextmenucreatedone",function(){i.title=t}),i.title=a.escape(e.i18n),e.info&&e.info.iconImg&&(i.contextmenuOpts={iconImg:a.baseUrl+e.info.iconImg}),delete i.variants};i.contextmenuOpts=void 0,"files"===t.data.type&&i.enabled()&&(n=a.file(t.data.targets[0]),v(n,t.data.targets.length)&&(Object.keys(m).length>1?y()&&(o=C(n.mime))?(r(o),i.extra={icon:"menu",node:e("<span/>").attr({title:a.i18n("select")}).on("click touchstart",function(t){if(!("touchstart"===t.type&&t.originalEvent.touches.length>1)){var n=e(this);t.stopPropagation(),t.preventDefault(),a.trigger("contextmenu",{raw:x(a.selectedFiles(),function(){var e=a.selected();a.exec("edit",e,{editor:this}),a.trigger("selectfiles",{files:e})}),x:n.offset().left,y:n.offset().top})}})}):(delete i.extra,i.variants=[],e.each(m,function(e,t){i.variants.push([{editor:t},t.i18n,t.info&&t.info.iconImg?a.baseUrl+t.info.iconImg:"edit"])})):(r(m[Object.keys(m)[0]]),delete i.extra)))}).bind("canMakeEmptyFile",function(t){if(t.data&&t.data.resetTexts){var n=a.arrayFlip(i.options.makeTextMimes||["text/plain"]),o=a.storage("mkfileHides")||{};e.each(a.storage("mkfileTextMimes")||{},function(e,t){n[e]||(delete a.mimesCanMakeEmpty[e],delete o[e])}),a.storage("mkfileTextMimes",null),Object.keys(o).length?a.storage("mkfileHides",o):a.storage("mkfileHides",null)}})},this.getstate=function(e){var t=this.files(e),n=t.length;return n&&p(t).length==n?0:-1},this.exec=function(t,n){var i,a=this.fm,o=p(this.files(t)),r=e.map(o,function(e){return e.hash}),s=[],l=n&&n.editor?n.editor:null,c=e(n&&n._currentNode?n._currentNode:a.cwdHash2Elm(r[0])),d=function(){var t=e.Deferred();return!l&&Object.keys(m).length>1?y()&&(l=C(o[0].mime))?t.resolve(l):(a.trigger("contextmenu",{raw:x(o,function(){t.resolve(this)}),x:c.offset().left,y:c.offset().top+22,opened:function(){a.one("closecontextmenu",function(){requestAnimationFrame(function(){"pending"===t.state()&&t.reject()})})}}),a.trigger("selectfiles",{files:r}),t):(Object.keys(m).length>1&&l&&b(o[0].mime,l),t.resolve(l?l:Object.keys(m).length?m[Object.keys(m)[0]]:null))},u=e.Deferred();return null===m&&v(o[0],r.length),c.length||(c=a.getUI("cwd")),d().done(function(t){for(;i=o.shift();)s.push(f(i,void 0,t).fail(function(e){e&&a.error(e)}));s.length?e.when.apply(null,s).done(function(){u.resolve()}).fail(function(){u.reject()}):u.reject()}).fail(function(){u.reject()}),u}},i.prototype.commands.empty=function(){var t,n,i=function(e){var i=t.files(e);return i.length||(i=[n.cwd()]),i};this.linkedCmds=["rm"],this.init=function(){t=this,n=this.fm},this.getstate=function(t){var n,a=i(t);return n=a.length,e.grep(a,function(e){return!(!e.read||!e.write||"directory"!==e.mime)}).length==n?0:-1},this.exec=function(t){var a=i(t),o=a.length,r=e.Deferred().done(function(){var t={changed:{}};n.toast({msg:n.i18n(['"'+s.join('", ')+'"',"complete",n.i18n("cmdempty")])}),e.each(a,function(e,n){t.changed[n.hash]=n}),n.change(t)}).always(function(){var t=n.cwd().hash;n.trigger("selectfiles",{files:e.map(a,function(e){return t===e.phash?e.hash:null})})}),s=[],l=function(e){"number"==typeof e?(s.push(a[e].name),delete a[e].dirs):e&&n.error(e),--o<1&&r[s.length?"resolve":"reject"]()};return e.each(a,function(t,i){var a;return i.write&&"directory"===i.mime?n.isCommandEnabled("rm",i.hash)?(a=setTimeout(function(){n.notify({type:"search",cnt:1,hideCnt:!(o>1)})},n.notifyDelay),void n.request({data:{cmd:"open",target:i.hash},preventDefault:!0,asNotOpen:!0}).done(function(r){var s=[];a&&clearTimeout(a),n.ui.notify.children(".elfinder-notify-search").length&&n.notify({type:"search",cnt:-1,hideCnt:!(o>1)}),r&&r.files&&r.files.length?r.files.length>n.maxTargets?l(["errEmpty",i.name,"errMaxTargets",n.maxTargets]):(n.updateCache(r),e.each(r.files,function(e,t){return!t.write||t.locked?(l(["errEmpty",i.name,"errRm",t.name,"errPerm"]),s=[],!1):void s.push(t.hash)}),s.length&&n.exec("rm",s,{_userAction:!0,addTexts:[n.i18n("folderToEmpty",i.name)]}).fail(function(e){n.trigger("unselectfiles",{files:n.selected()}),l(n.parseError(e)||"")}).done(function(){l(t)})):(n.toast({mode:"warning",msg:n.i18n("filderIsEmpty",i.name)}),l(""))}).fail(function(e){l(n.parseError(e)||"")})):(l(["errCmdNoSupport",'"rm"']),null):(l(["errEmpty",i.name,"errPerm"]),null)}),r}},i.prototype.commands.extract=function(){var t=this,n=t.fm,i=[],a=function(t){return e.grep(t,function(t){return!(!t.read||e.inArray(t.mime,i)===-1)})};this.variants=[],this.disableOnSearch=!0,n.bind("open reload",function(){i=n.option("archivers").extract||[],n.api>2?t.variants=[[{makedir:!0},n.i18n("cmdmkdir")],[{},n.i18n("btnCwd")]]:t.variants=[[{},n.i18n("btnCwd")]],t.change()}),this.getstate=function(e){var t=this.files(e),n=t.length;return n&&this.fm.cwd().write&&a(t).length==n?0:-1},this.exec=function(t,a){var o,r,s,l=this.files(t),c=e.Deferred(),d=l.length,p=a&&a.makedir?1:0,u=!1,h=!1,f=0,m=e.map(n.files(t),function(e){return e.name}),g={};e.grep(n.files(t),function(e){return g[e.name]=e,!1});var v=function(e){switch(e){case"overwrite_all":u=!0;break;case"omit_all":h=!0}},b=function(t){t.read&&n.file(t.phash).write?e.inArray(t.mime,i)===-1?(r=["errExtract",t.name,"errNoArchive"],n.error(r),c.reject(r)):n.request({data:{cmd:"extract",target:t.hash,makedir:p},notify:{type:"extract",cnt:1},syncOnFail:!0,navigate:{toast:p?{incwd:{msg:n.i18n(["complete",n.i18n("cmdextract")]),action:{cmd:"open",msg:"cmdopen"}},inbuffer:{msg:n.i18n(["complete",n.i18n("cmdextract")]),action:{cmd:"open",msg:"cmdopen"}}}:{inbuffer:{msg:n.i18n(["complete",n.i18n("cmdextract")])}}}}).fail(function(e){"rejected"!=c.state()&&c.reject(e)}).done(function(){}):(r=["errExtract",t.name,"errPerm"],n.error(r),c.reject(r))},y=function(t,i){var a=t[i],r=n.splitFileExtention(a.name)[0],l=e.inArray(r,m)>=0,w=function(){i+1<d?y(t,i+1):c.resolve()};!p&&l&&"directory"!=g[r].mime?n.confirm({title:n.i18n("ntfextract"),text:["errExists",r,"confirmRepl"],accept:{label:"btnYes",callback:function(e){if(s=e?"overwrite_all":"overwrite",v(s),u||h){if(u){for(o=i;o<d;o++)b(t[o]);c.resolve()}}else"overwrite"==s&&b(a),i+1<d?y(t,i+1):c.resolve()}},reject:{label:"btnNo",callback:function(e){s=e?"omit_all":"omit",v(s),!u&&!h&&i+1<d?y(t,i+1):h&&c.resolve()}},cancel:{label:"btnCancel",callback:function(){c.resolve()}},all:i+1<d}):p?(b(a),w()):0==f?n.confirm({title:n.i18n("cmdextract"),text:[n.i18n("cmdextract")+' "'+a.name+'"',"confirmRepl"],accept:{label:"btnYes",callback:function(e){e&&(f=1),b(a),w()}},reject:{label:"btnNo",callback:function(e){e&&(f=-1),w()}},cancel:{label:"btnCancel",callback:function(){c.resolve()}},all:i+1<d}):(f>0&&b(a),w())};return this.enabled()&&d&&i.length?(d>0&&y(l,0),c):c.reject()}},(i.prototype.commands.forward=function(){this.alwaysEnabled=!0,this.updateOnSelect=!0,this.shortcuts=[{pattern:"ctrl+right"}],this.getstate=function(){return this.fm.history.canForward()?0:-1},this.exec=function(){return this.fm.history.forward()}}).prototype={forceLoad:!0},i.prototype.commands.fullscreen=function(){var t=this,n=this.fm,i=function(e,n){e.preventDefault(),e.stopPropagation(),n&&n.fullscreen&&t.update(void 0,"on"===n.fullscreen)};this.alwaysEnabled=!0,this.updateOnSelect=!1,this.syncTitleOnChange=!0,this.value=!1,this.options={ui:"fullscreenbutton"},this.getstate=function(){return 0},this.exec=function(){var i=n.getUI().get(0),a=i===n.toggleFullscreen(i);return t.title=n.i18n(a?"reinstate":"cmdfullscreen"),t.update(void 0,a),e.Deferred().resolve()},n.bind("init",function(){n.getUI().off("resize."+n.namespace,i).on("resize."+n.namespace,i)})},(i.prototype.commands.getfile=function(){var t=this,n=this.fm,i=function(n){var i=t.options;return n=e.grep(n,function(e){return!("directory"==e.mime&&!i.folders||!e.read)}),i.multiple||1==n.length?n:[]};this.alwaysEnabled=!0,this.callback=n.options.getFileCallback,this._disabled="function"==typeof this.callback,this.getstate=function(e){var t=this.files(e),n=t.length;return this.callback&&n&&i(t).length==n?0:-1},this.exec=function(n){var i,a,o,r=this.fm,s=this.options,l=this.files(n),c=l.length,d=r.option("url"),p=r.option("tmbUrl"),u=e.Deferred().done(function(e){var n,i=function(){"close"==s.oncomplete?r.hide():"destroy"==s.oncomplete&&r.destroy()},a=function(e){"close"==s.onerror?r.hide():"destroy"==s.onerror?r.destroy():e&&r.error(e)};r.trigger("getfile",{files:e});try{n=t.callback(e,r)}catch(o){return void a(["Error in `getFileCallback`.",o.message])}"object"==typeof n&&"function"==typeof n.done?n.done(i).fail(a):i()}),h=function(t){return s.onlyURL?s.multiple?e.map(l,function(e){return e.url}):l[0].url:s.multiple?l:l[0]},f=[];for(i=0;i<c;i++){if(a=l[i],"directory"==a.mime&&!s.folders)return u.reject();a.baseUrl=d,"1"==a.url?f.push(r.request({data:{cmd:"url",target:a.hash},notify:{type:"url",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){if(e.url){var t=r.file(this.hash);t.url=this.url=e.url}}.bind(a))):a.url=r.url(a.hash),s.onlyURL||(s.getPath&&(a.path=r.path(a.hash),""===a.path&&a.phash&&!function(){var t=e.Deferred();f.push(t),r.path(a.hash,!1,{}).done(function(e){a.path=e}).fail(function(){a.path=""}).always(function(){t.resolve()})}()),a.tmb&&1!=a.tmb&&(a.tmb=p+a.tmb),a.width||a.height||(a.dim?(o=a.dim.split("x"),a.width=o[0],a.height=o[1]):s.getImgSize&&a.mime.indexOf("image")!==-1&&f.push(r.request({data:{cmd:"dim",target:a.hash},notify:{type:"dim",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){if(e.dim){var t=e.dim.split("x"),n=r.file(this.hash);n.width=this.width=t[0],n.height=this.height=t[1]}}.bind(a)))))}return f.length?(e.when.apply(null,f).always(function(){u.resolve(h(l))}),u):u.resolve(h(l))}}).prototype={forceLoad:!0},(i.prototype.commands.help=function(){var t,n,i,a,o,r,s=this.fm,l=this,c='<div class="elfinder-help-link"> <a href="{url}" target="_blank">{link}</a></div>',d='<div class="elfinder-help-team"><div>{author}</div>{work}</div>',p=/\{url\}/,u=/\{link\}/,h=/\{author\}/,f=/\{work\}/,m="replace",g="ui-priority-primary",v="ui-priority-secondary",b="elfinder-help-license",y='<li class="'+s.res("class","tabstab")+' elfinder-help-tab-{id}"><a href="#'+s.namespace+'-help-{id}" class="ui-tabs-anchor">{title}</a></li>',w=['<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-help">','<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'],x='<div class="elfinder-help-shortcut"><div class="elfinder-help-shortcut-pattern">{pattern}</div> {descrip}</div>',k='<div class="elfinder-help-separator"/>',C=e("base").length?document.location.href.replace(/#.*$/,""):"",z=s.res("class","tabsactive"),T=function(){var e;return e=s.theme&&s.theme.author?d[m]("elfinder-help-team","elfinder-help-team elfinder-help-term-theme")[m](h,s.i18n(s.theme.author)+(s.theme.email?" &lt;"+s.theme.email+"&gt;":""))[m](f,s.i18n("theme")+" ("+s.i18n(s.theme.name)+")"):'<div class="elfinder-help-team elfinder-help-term-theme" style="display:none"></div>'},A=function(){w.push('<div id="'+s.namespace+'-help-about" class="ui-tabs-panel ui-widget-content ui-corner-bottom"><div class="elfinder-help-logo"/>'),w.push("<h3>elFinder</h3>"),w.push('<div class="'+g+'">'+s.i18n("webfm")+"</div>"),w.push('<div class="'+v+'">'+s.i18n("ver")+": "+s.version+"</div>"),w.push('<div class="'+v+'">'+s.i18n("protocolver")+': <span class="apiver"></span></div>'),w.push('<div class="'+v+'">jQuery/jQuery UI: '+e().jquery+"/"+e.ui.version+"</div>"),w.push(k),w.push(c[m](p,"https://studio-42.github.io/elFinder/")[m](u,s.i18n("homepage"))),w.push(c[m](p,"https://github.com/Studio-42/elFinder/wiki")[m](u,s.i18n("docs"))),w.push(c[m](p,"https://github.com/Studio-42/elFinder")[m](u,s.i18n("github"))),w.push(k),w.push('<div class="'+g+'">'+s.i18n("team")+"</div>"),w.push(d[m](h,'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;')[m](f,s.i18n("chiefdev"))),w.push(d[m](h,"Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;")[m](f,s.i18n("developer"))),w.push(d[m](h,"Troex Nevelin &lt;troex@fury.scancode.ru&gt;")[m](f,s.i18n("maintainer"))),w.push(d[m](h,"Alexey Sukhotin &lt;strogg@yandex.ru&gt;")[m](f,s.i18n("contributor"))),s.i18[s.lang].translator&&e.each(s.i18[s.lang].translator.split(", "),function(){w.push(d[m](h,e.trim(this))[m](f,s.i18n("translator")+" ("+s.i18[s.lang].language+")"))}),w.push(T()),w.push(k),w.push('<div class="'+b+'">'+s.i18n("icons")+': Pixelmixer, <a href="http://p.yusukekamiyamane.com" target="_blank">Fugue</a>, <a href="https://icons8.com" target="_blank">Icons8</a></div>'),w.push(k),w.push('<div class="'+b+'">Licence: 3-clauses BSD Licence</div>'),w.push('<div class="'+b+'">Copyright © 2009-2019, Studio 42</div>'),w.push('<div class="'+b+'">„ …'+s.i18n("dontforget")+" ”</div>"),w.push("</div>")},S=function(){var t=s.shortcuts();w.push('<div id="'+s.namespace+'-help-shortcuts" class="ui-tabs-panel ui-widget-content ui-corner-bottom">'),t.length?(w.push('<div class="ui-widget-content elfinder-help-shortcuts">'),e.each(t,function(e,t){w.push(x.replace(/\{pattern\}/,t[0]).replace(/\{descrip\}/,t[1]))}),w.push("</div>")):w.push('<div class="elfinder-help-disabled">'+s.i18n("shortcutsof")+"</div>"),w.push("</div>")},I=function(){w.push('<div id="'+s.namespace+'-help-help" class="ui-tabs-panel ui-widget-content ui-corner-bottom">'),w.push('<a href="https://github.com/Studio-42/elFinder/wiki" target="_blank" class="elfinder-dont-panic"><span>DON\'T PANIC</span></a>'),w.push("</div>")},O=!1,j=function(){O=!0,w.push('<div id="'+s.namespace+'-help-integrations" class="ui-tabs-panel ui-widget-content ui-corner-bottom"/>')},M=!1,D=function(){M=!0,w.push('<div id="'+s.namespace+'-help-debug" class="ui-tabs-panel ui-widget-content ui-corner-bottom">'),w.push('<div class="ui-widget-content elfinder-help-debug"><ul></ul></div>'),w.push("</div>")},F=function(){var n,i,a,c,d,p,u=function(t,n){return e.each(n,function(n,i){t.append(e("<dt/>").text(n)),"undefined"==typeof i?t.append(e("<dd/>").append(e("<span/>").text("undfined"))):"object"!=typeof i||i?"object"==typeof i&&(e.isPlainObject(i)||i.length)?t.append(e("<dd/>").append(u(e("<dl/>"),i))):t.append(e("<dd/>").append(e("<span/>").text(i&&"object"==typeof i?"[]":i?i:'""'))):t.append(e("<dd/>").append(e("<span/>").text("null")))}),t},h=r.children("li").length;(l.debug.options||l.debug.debug)&&(h>=5&&(d=r.children("li:last"),p=o.children("div:last"),p.is(":hidden")?(d.remove(),p.remove()):(d.prev().remove(),p.prev().remove())),a=s.namespace+"-help-debug-"+ +new Date,n=e("<li/>").html('<a href="'+C+"#"+a+'">'+l.debug.debug.cmd+"</a>").prependTo(r),i=e('<div id="'+a+'"/>').data("debug",l.debug),n.on("click.debugrender",function(){var t=i.data("debug");i.removeData("debug"),t&&(i.hide(),t.debug&&(c=e("<fieldset>").append(e("<legend/>").text("debug"),u(e("<dl/>"),t.debug)),i.append(c)),t.options&&(c=e("<fieldset>").append(e("<legend/>").text("options"),u(e("<dl/>"),t.options)),i.append(c)),i.show()),n.off("click.debugrender")}),r.after(i),t&&o.tabs("refresh"))},E="";this.alwaysEnabled=!0,this.updateOnSelect=!1,this.state=-1,this.shortcuts=[{pattern:"f1",description:this.title}],s.bind("load",function(){var c,d,p,u,h,f,g=l.options.view||["about","shortcuts","help","integrations","debug"];(c=e.inArray("preference",g))!==-1&&g.splice(c,1),e.fn.tabs||(c=e.inArray(g,"debug"))!==-1&&g.splice(c,1),e.each(g,function(e,t){w.push(y[m](/\{id\}/g,t)[m](/\{title\}/,s.i18n(t)))}),w.push("</ul>"),e.inArray("about",g)!==-1&&A(),e.inArray("shortcuts",g)!==-1&&S(),e.inArray("help",g)!==-1&&(d=s.i18nBaseUrl+"help/%s.html.js",I()),e.inArray("integrations",g)!==-1&&j(),e.inArray("debug",g)!==-1&&D(),w.push("</div>"),E=e(w.join("")),E.find(".ui-tabs-nav li").on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"===t.type)}).on("focus blur","a",function(t){e(t.delegateTarget).toggleClass("ui-state-focus","focusin"===t.type)}).children().on("click",function(t){var n=e(this);t.preventDefault(),t.stopPropagation(),n.parent().addClass(z).siblings().removeClass(z),E.children(".ui-tabs-panel").hide().filter(n.attr("href")).show()}).filter(":first").trigger("click"),O&&(n=E.find(".elfinder-help-tab-integrations").hide(),i=E.find("#"+s.namespace+"-help-integrations").hide().append(e('<div class="elfinder-help-integrations-desc"/>').html(s.i18n("integrationWith"))),s.bind("helpIntegration",function(t){var a,o,r,l,c=i.children("ul:first");t.data&&(e.isPlainObject(t.data)?(a=Object.assign({link:"",title:"",banner:""},t.data),(a.title||a.link)&&(a.title||(a.title=a.link),o=a.link?e("<a/>").attr("href",a.link).attr("target","_blank").text(a.title):e("<span/>").text(a.title),a.banner&&(o=e("<span/>").append(e("<img/>").attr(a.banner),o)))):(o=e(t.data),o.filter("a").each(function(){var t=e(this);t.attr("target")||t.attr("target","_blank")})),o&&(n.show(),c.length||(c=e('<ul class="elfinder-help-integrations"/>').appendTo(i)),a&&a.cmd?(l="elfinder-help-integration-"+a.cmd,r=c.find("ul."+l),r.length||(r=e('<ul class="'+l+'"/>'),c.append(e("<li/>").append(e("<span/>").html(s.i18n("cmd"+a.cmd))).append(r))),o=r.append(e("<li/>").append(o))):c.append(e("<li/>").append(o))))}).bind("themechange",function(){E.find("div.elfinder-help-term-theme").replaceWith(T())})),M&&(a=E.find(".elfinder-help-tab-debug").hide(),o=E.find("#"+s.namespace+"-help-debug").children("div:first"),r=o.children("ul:first").on("click",function(e){e.preventDefault(),e.stopPropagation()}),l.debug={},s.bind("backenddebug",function(e){M&&e.data&&e.data.debug&&(l.debug={options:e.data.options,debug:Object.assign({cmd:s.currentReqCmd},e.data.debug)},l.dialog&&F())})),E.find("#"+s.namespace+"-help-about").find(".apiver").text(s.api),l.dialog=l.fmDialog(E,{title:l.title,width:530,maxWidth:"window",maxHeight:"window",autoOpen:!1,destroyOnClose:!1,close:function(){M&&(a.hide(),o.tabs("destroy")),t=!1}}).on("click",function(e){e.stopPropagation()}).css({overflow:"hidden"}),p=l.dialog.children(".ui-tabs"),u=p.children(".ui-tabs-nav:first"),h=p.children(".ui-tabs-panel"),f=l.dialog.outerHeight(!0)-l.dialog.height(),l.dialog.closest(".ui-dialog").on("resize",function(){h.height(l.dialog.height()-f-u.outerHeight(!0)-20)}),d&&l.dialog.one("initContents",function(){e.ajax({url:l.options.helpSource?l.options.helpSource:d.replace("%s",s.lang),dataType:"html"}).done(function(t){e("#"+s.namespace+"-help-help").html(t)}).fail(function(){e.ajax({url:d.replace("%s","en"),dataType:"html"}).done(function(t){e("#"+s.namespace+"-help-help").html(t)})})}),l.state=0,s.trigger("helpBuilded",l.dialog)}).one("open",function(){var e=!1;s.one("backenddebug",function(){e=!0}).one("opendone",function(){requestAnimationFrame(function(){!e&&M&&(M=!1,a.hide(),o.hide(),r.hide())})})}),this.getstate=function(){return 0},this.exec=function(n,i){var s=i?i.tab:void 0,l=function(){M&&(o.tabs(),r.find("a:first").trigger("click"),a.show(),t=!0)};return l(),this.dialog.trigger("initContents").elfinderdialog("open").find((s?".elfinder-help-tab-"+s:".ui-tabs-nav li")+" a:first").trigger("click"),e.Deferred().resolve()}}).prototype={forceLoad:!0},i.prototype.commands.hidden=function(){this.hidden=!0,this.updateOnSelect=!1,this.getstate=function(){return-1}},i.prototype.commands.hide=function(){var t,n,i,a,o=this,r={};this.syncTitleOnChange=!0,this.shortcuts=[{pattern:"ctrl+shift+dot",description:this.fm.i18n("toggleHidden")}],this.init=function(){var e=this.fm;t=e.storage("hide")||{items:{}},n=Object.keys(t.items).length,this.title=e.i18n(t.show?"hideHidden":"showHidden"),o.update(void 0,o.title)},this.fm.bind("select contextmenucreate closecontextmenu",function(e,r){var s=(e.data?e.data.selected||e.data.targets:null)||r.selected();"select"===e.type&&e.data?a=e.data.origin:"contextmenucreate"===e.type&&(i=e.data.type),!s.length||("contextmenucreate"!==e.type&&"navbar"!==a||"cwd"===i)&&s[0]===r.cwd().hash?o.title=r.i18n(t.show?"hideHidden":"showHidden"):o.title=r.i18n("cmdhide"),"closecontextmenu"!==e.type?o.update("cwd"===i?n?0:-1:void 0,o.title):(i="",requestAnimationFrame(function(){o.update(void 0,o.title)}))}),this.getstate=function(e){return"cwd"!==i&&(e||this.fm.selected()).length||n?0:-1},this.exec=function(i,s){var l,c,d=this.fm,p=e.Deferred().done(function(){d.trigger("hide",{items:h,opts:s})}).fail(function(e){d.error(e)}),u=s||{},h=u.targets?u.targets:i||d.selected(),f=[];if(t=d.storage("hide")||{},e.isPlainObject(t)||(t={}),e.isPlainObject(t.items)||(t.items={}),("shortcut"===s._currentType||!h.length||"navbar"!==s._currentType&&"navbar"!==a&&h[0]===d.cwd().hash)&&(t.show?u.hide=!0:Object.keys(t.items).length&&(u.show=!0)),u.reset&&(u.show=!0,n=0),u.show||u.hide){if(u.show?t.show=!0:delete t.show,u.show)return d.storage("hide",u.reset?null:t),o.title=d.i18n("hideHidden"),o.update(u.reset?-1:void 0,o.title),e.each(t.items,function(e){var t=d.file(e,!0);t&&(d.searchStatus.state||!t.phash||d.file(t.phash))&&f.push(t)}),f.length&&(d.updateCache({added:f}),d.add({added:f})),u.reset&&(t={items:{}}),p.resolve();h=Object.keys(t.items)}return h.length&&(e.each(h,function(e,n){var i;t.items[n]||(i=d.file(n),i&&(r[n]=i.i18||i.name),t.items[n]=r[n]?r[n]:n)}),n=Object.keys(t.items).length,l=this.files(h),d.storage("hide",t),d.remove({removed:h}),t.show&&this.exec(void 0,{hide:!0}),u.hide||(c={},c.undo={cmd:"hide",callback:function(){var t=d.storage("hide");t&&(e.each(h,function(e,n){delete t.items[n]}),n=Object.keys(t.items).length,d.storage("hide",t),d.trigger("hide",{items:h,opts:{}}),o.update(n?0:-1)),d.updateCache({added:l}),d.add({added:l})}},c.redo={cmd:"hide",callback:function(){return d.exec("hide",void 0,{targets:h})}})),"rejected"==p.state()?p:p.resolve(c)}},(i.prototype.commands.home=function(){this.title="Home",this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+home ctrl+shift+up",description:"Home"}],this.getstate=function(){var e=this.fm.root(),t=this.fm.cwd().hash;return e&&t&&e!=t?0:-1},this.exec=function(){return this.fm.exec("open",this.fm.root())}}).prototype={forceLoad:!0},(i.prototype.commands.info=function(){var t=this.fm,n="elfinder-spinner",i="elfinder-info-button",a={calc:t.i18n("calc"),size:t.i18n("size"),unknown:t.i18n("unknown"),path:t.i18n("path"),aliasfor:t.i18n("aliasfor"),modify:t.i18n("modify"),perms:t.i18n("perms"),locked:t.i18n("locked"),dim:t.i18n("dim"),kind:t.i18n("kind"),files:t.i18n("files"),folders:t.i18n("folders"),roots:t.i18n("volumeRoots"),items:t.i18n("items"),yes:t.i18n("yes"),no:t.i18n("no"),link:t.i18n("link"),owner:t.i18n("owner"),group:t.i18n("group"),perm:t.i18n("perm"),getlink:t.i18n("getLink")},o=function(e,t){return t?e.replace(/\u200B/g,""):e.replace(/(\/|\\)/g,"$1​")};this.items=["size","aliasfor","path","link","dim","modify","perms","locked","owner","group","perm"],this.options.custom&&Object.keys(this.options.custom).length&&e.each(this.options.custom,function(e,t){t.label&&this.items.push(t.label)}),this.tpl={main:'<div class="ui-helper-clearfix elfinder-info-title {dirclass}"><span class="elfinder-cwd-icon {class} ui-corner-all"{style}/>{title}</div><table class="elfinder-info-tb">{content}</table>',itemTitle:'<strong>{name}</strong><span class="elfinder-info-kind">{kind}</span>',groupTitle:"<strong>{items}: {num}</strong>",row:'<tr><td class="elfinder-info-label">{label} : </td><td class="{class}">{value}</td></tr>',spinner:'<span>{text}</span> <span class="'+n+" "+n+'-{name}"/>'},this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+i"}],this.init=function(){e.each(a,function(e,n){a[e]=t.i18n(n)})},this.getstate=function(){return 0},this.exec=function(t){var r=this.files(t);r.length||(r=this.files([this.fm.cwd().hash]));var s,l,c,d,p,u,h,f,m,g=this,v=this.fm,b=this.options,y=this.tpl,w=y.row,x=r.length,k=[],C=y.main,z="{label}",T="{value}",A=[],S=null,I={title:v.i18n("selectionInfo"),width:"auto",close:function(){e(this).elfinderdialog("destroy"),S&&"pending"===S.state()&&S.reject(),e.grep(A,function(e){e&&"pending"===e.state()&&e.reject()})}},O=[],j=function(e,t,i){D.find("."+n+"-"+t).parent().html(e).addClass(i||"")},M=v.namespace+"-info-"+e.map(r,function(e){return e.hash}).join("-"),D=v.getUI().find("#"+M),F=[],E="",U="elfinder-font-mono elfinder-info-hash";if(!x)return e.Deferred().reject();if(D.length)return D.elfinderdialog("toTop"),e.Deferred().resolve();if(m=v.storage("infohides")||v.arrayFlip(b.hideItems,!0),1===x){if(c=r[0],c.icon&&(E=" "+v.getIconStyle(c)),C=C.replace("{dirclass}",c.csscls?v.escape(c.csscls):"").replace("{class}",v.mime2class(c.mime)).replace("{style}",E),d=y.itemTitle.replace("{name}",v.escape(c.i18||c.name)).replace("{kind}",'<span title="'+v.escape(c.mime)+'">'+v.mime2kind(c)+"</span>"),l=v.tmb(c),c.read?"directory"!=c.mime||c.alias?s=v.formatSize(c.size):(s=y.spinner.replace("{text}",a.calc).replace("{name}","size"),O.push(c.hash)):s=a.unknown,!m.size&&k.push(w.replace(z,a.size).replace(T,s)),!m.aleasfor&&c.alias&&k.push(w.replace(z,a.aliasfor).replace(T,c.alias)),m.path||((h=v.path(c.hash,!0))?k.push(w.replace(z,a.path).replace(T,o(v.escape(h))).replace("{class}","elfinder-info-path")):(k.push(w.replace(z,a.path).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}","path")).replace("{class}","elfinder-info-path")),A.push(v.path(c.hash,!0,{notify:null}).fail(function(){j(a.unknown,"path")}).done(function(e){j(o(e),"path")})))),!m.link&&c.read){var P,R=v.escape(c.name);if("1"==c.url)k.push(w.replace(z,a.link).replace(T,'<button class="'+i+" "+n+'-url">'+a.getlink+"</button>"));else{if(c.url)P=c.url;else if("directory"===c.mime)if(b.nullUrlDirLinkSelf&&null===c.url){var q=window.location;P=q.pathname+q.search+"#elf_"+c.hash}else""!==c.url&&v.option("url",!v.isRoot(c)&&c.phash||c.hash)&&(P=v.url(c.hash));else P=v.url(c.hash);P&&k.push(w.replace(z,a.link).replace(T,'<a href="'+P+'" target="_blank">'+R+"</a>"))}}m.dim||(c.dim?k.push(w.replace(z,a.dim).replace(T,c.dim)):c.mime.indexOf("image")!==-1&&(c.width&&c.height?k.push(w.replace(z,a.dim).replace(T,c.width+"x"+c.height)):(k.push(w.replace(z,a.dim).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}","dim"))),A.push(v.request({data:{cmd:"dim",target:c.hash},preventDefault:!0}).fail(function(){j(a.unknown,"dim")}).done(function(e){if(j(e.dim||a.unknown,"dim"),e.dim){var t=e.dim.split("x"),n=v.file(c.hash);n.width=t[0],n.height=t[1]}}))))),!m.modify&&k.push(w.replace(z,a.modify).replace(T,v.formatDate(c))),!m.perms&&k.push(w.replace(z,a.perms).replace(T,v.formatPermissions(c))),!m.locked&&k.push(w.replace(z,a.locked).replace(T,c.locked?a.yes:a.no)),!m.owner&&c.owner&&k.push(w.replace(z,a.owner).replace(T,c.owner)),!m.group&&c.group&&k.push(w.replace(z,a.group).replace(T,c.group)),!m.perm&&c.perm&&k.push(w.replace(z,a.perm).replace(T,v.formatFileMode(c.perm))),window.ArrayBuffer&&(v.options.cdns.sparkmd5||v.options.cdns.jssha)&&"directory"!==c.mime&&c.size>0&&(!b.showHashMaxsize||c.size<=b.showHashMaxsize)&&(f=[],e.each(v.storage("hashchekcer")||b.showHashAlgorisms,function(e,t){c[t]?k.push(w.replace(z,v.i18n(t)).replace(T,c[t]).replace("{class}",U)):(k.push(w.replace(z,v.i18n(t)).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}",t))),f.push(t))}),A.push(v.getContentsHashes(c.hash,f).progress(function(t){e.each(f,function(e,n){t[n]&&j(t[n],n,U)})}).always(function(){e.each(f,function(e,t){j(a.unknown,t)})}))),b.custom&&e.each(b.custom,function(t,n){m[n.label]||n.mimes&&!e.grep(n.mimes,function(e){return c.mime===e||0===c.mime.indexOf(e+"/")}).length||n.hashRegex&&!c.hash.match(n.hashRegex)||(k.push(w.replace(z,v.i18n(n.label)).replace(T,n.tpl.replace("{id}",M))),n.action&&"function"==typeof n.action&&F.push(n.action))})}else C=C.replace("{class}","elfinder-cwd-icon-group"),d=y.groupTitle.replace("{items}",a.items).replace("{num}",x),p=e.grep(r,function(e){return"directory"==e.mime}).length,p?(u=e.grep(r,function(e){return!("directory"!==e.mime||e.phash&&!e.isroot)}).length,p-=u,k.push(w.replace(z,a.kind).replace(T,u===x||p===x?a[u?"roots":"folders"]:e.map({roots:u,folders:p,files:x-u-p},function(e,t){return e?a[t]+" "+e:null}).join(", "))),!m.size&&k.push(w.replace(z,a.size).replace(T,y.spinner.replace("{text}",a.calc).replace("{name}","size"))),O=e.map(r,function(e){return e.hash})):(s=0,e.each(r,function(e,t){var n=parseInt(t.size);n>=0&&s>=0?s+=n:s="unknown"}),k.push(w.replace(z,a.kind).replace(T,a.files)),!m.size&&k.push(w.replace(z,a.size).replace(T,v.formatSize(s))));return C=C.replace("{title}",d).replace("{content}",k.join("").replace(/{class}/g,"")),D=g.fmDialog(C,I),D.attr("id",M).one("mousedown",".elfinder-info-path",function(){e(this).html(o(e(this).html(),!0))}),v.UA.Mobile&&e.fn.tooltip&&D.children(".ui-dialog-content .elfinder-info-title").tooltip({classes:{"ui-tooltip":"elfinder-ui-tooltip ui-widget-shadow"},tooltipClass:"elfinder-ui-tooltip ui-widget-shadow",track:!0}),c&&"1"==c.url&&D.on("click","."+n+"-url",function(){e(this).parent().html(y.spinner.replace("{text}",v.i18n("ntfurl")).replace("{name}","url")),
v.request({data:{cmd:"url",target:c.hash},preventDefault:!0}).fail(function(){j(R,"url")}).done(function(e){if(e.url){j('<a href="'+e.url+'" target="_blank">'+R+"</a>"||R,"url");var t=v.file(c.hash);t.url=e.url}else j(R,"url")})}),l&&e("<img/>").on("load",function(){D.find(".elfinder-cwd-icon").addClass(l.className).css("background-image","url('"+l.url+"')")}).attr("src",l.url),O.length&&(S=v.getSize(O).done(function(e){j(e.formated,"size")}).fail(function(){j(a.unknown,"size")})),F.length&&e.each(F,function(e,t){try{t(c,v,D)}catch(n){v.debug("error",n)}}),e.Deferred().resolve()}}).prototype={forceLoad:!0},i.prototype.commands.mkdir=function(){var t,n=this.fm,i=this;this.value="",this.disableOnSearch=!0,this.updateOnSelect=!1,this.syncTitleOnChange=!0,this.mime="directory",this.prefix="untitled folder",this.exec=function(a,o){var r;return a&&a.length&&o&&o._currentType&&"navbar"===o._currentType?(this.origin=o._currentType,this.data={target:a[0]}):(r=n.cwd().hash===a[0],this.origin=t&&!r?t:"cwd",delete this.data),a||this.options.intoNewFolderToolbtn||n.getUI("cwd").trigger("unselectall"),this.move=this.value===n.i18n("cmdmkdirin"),e.proxy(n.res("mixin","make"),i)()},this.shortcuts=[{pattern:"ctrl+shift+n"}],this.init=function(){this.options.intoNewFolderToolbtn&&(this.syncTitleOnChange=!0)},n.bind("select contextmenucreate closecontextmenu",function(e){var a=(e.data?e.data.selected||e.data.targets:null)||n.selected();i.className="mkdir",t=e.data&&a.length?e.data.origin||e.data.type||"":"",i.options.intoNewFolderToolbtn||""!==t||(t="cwd"),a.length&&"navbar"!==t&&"cwd"!==t&&n.cwd().hash!==a[0]?(i.title=n.i18n("cmdmkdirin"),i.className+=" elfinder-button-icon-mkdirin"):i.title=n.i18n("cmdmkdir"),"closecontextmenu"!==e.type?i.update(void 0,i.title):requestAnimationFrame(function(){i.update(void 0,i.title)})}),this.getstate=function(i){var a=n.cwd(),o="navbar"===t||i&&i[0]!==a.hash?this.files(i||n.selected()):[],r=o.length;return"navbar"===t?r&&o[0].write&&o[0].read?0:-1:!a.write||r&&e.grep(o,function(e){return!(!e.read||e.locked)}).length!=r?-1:0}},i.prototype.commands.mkfile=function(){var t=this;this.disableOnSearch=!0,this.updateOnSelect=!1,this.mime="text/plain",this.prefix="untitled file.txt",this.variants=[],this.getTypeName=function(e,n){var i,a=t.fm;return i=(i=a.messages["kind"+a.kinds[e]])?a.i18n(["extentiontype",n.toUpperCase(),i]):a.i18n(["extentionfile",n.toUpperCase()])},this.fm.bind("open reload canMakeEmptyFile",function(){var n=t.fm,i=n.storage("mkfileHides")||{};t.variants=[],n.mimesCanMakeEmpty&&e.each(n.mimesCanMakeEmpty,function(e,a){a&&!i[e]&&n.uploadMimeCheck(e)&&t.variants.push([e,t.getTypeName(e,a)])}),t.change()}),this.getstate=function(){return this.fm.cwd().write?0:-1},this.exec=function(n,i){var a,o,r=t.fm;if(a=r.mimesCanMakeEmpty[i]){if(r.uploadMimeCheck(i))return this.mime=i,this.prefix=r.i18n(["untitled file",a]),e.proxy(r.res("mixin","make"),t)();o=["errMkfile",t.getTypeName(i,a)]}return e.Deferred().reject(o)}},i.prototype.commands.netmount=function(){var t,n=this,i=!1;this.alwaysEnabled=!0,this.updateOnSelect=!1,this.drivers=[],this.handlers={load:function(){var t=n.fm;n.drivers=t.netDrivers,n.drivers.length&&requestAnimationFrame(function(){e.each(n.drivers,function(){var e=n.options[this];e&&(i=!0,e.integrateInfo&&t.trigger("helpIntegration",Object.assign({cmd:"netmount"},e.integrateInfo)))})})}},this.getstate=function(){return i?0:-1},this.exec=function(){var i,a=n.fm,o=e.Deferred(),r=n.options,s=function(){var s,l=function(){c.protocol.trigger("change","winfocus")},c={protocol:e("<select/>").on("change",function(e,n){var o=this.value;t.find(".elfinder-netmount-tr").hide(),t.find(".elfinder-netmount-tr-"+o).show(),i&&i.children(".ui-dialog-buttonpane:first").find("button").show(),"function"==typeof r[o].select&&r[o].select(a,e,n),requestAnimationFrame(function(){t.find("input:text.elfinder-tabstop:visible:first").trigger("focus")})}).addClass("ui-corner-all")},d={title:a.i18n("netMountDialogTitle"),resizable:!1,modal:!0,destroyOnClose:!1,open:function(){e(window).on("focus."+a.namespace,l),c.protocol.trigger("change")},close:function(){"pending"==o.state()&&o.reject(),e(window).off("focus."+a.namespace,l)},buttons:{}},p=function(){var i=c.protocol.val(),s={cmd:"netmount",protocol:i},l=r[i];return e.each(t.find("input.elfinder-netmount-inputs-"+i),function(t,n){var i,a;a=e(n),a.is(":radio,:checkbox")?a.is(":checked")&&(i=e.trim(a.val())):i=e.trim(a.val()),i&&(s[n.name]=i)}),s.host?(a.request({data:s,notify:{type:"netmount",cnt:1,hideCnt:!0}}).done(function(e){var t;e.added&&e.added.length&&(e.added[0].phash&&(t=a.file(e.added[0].phash))&&(t.dirs||(t.dirs=1,a.change({changed:[t]}))),a.one("netmountdone",function(){a.exec("open",e.added[0].hash)})),o.resolve()}).fail(function(e){l.fail&&"function"==typeof l.fail&&l.fail(a,a.parseError(e)),o.reject(e)}),void n.dialog.elfinderdialog("close")):a.trigger("error",{error:"errNetMountHostReq",opts:{modal:!0}})},u=e('<form autocomplete="off"/>').on("keydown","input",function(t){var n,i=!0;t.keyCode===e.ui.keyCode.ENTER&&(e.each(u.find("input:visible:not(.elfinder-input-optional)"),function(){if(""===e(this).val())return i=!1,n=e(this),!1}),i?p():n.trigger("focus"))}),h=e("<div/>");return t=e('<table class="elfinder-info-tb elfinder-netmount-tb"/>').append(e("<tr/>").append(e("<td>"+a.i18n("protocol")+"</td>")).append(e("<td/>").append(c.protocol))),e.each(n.drivers,function(n,i){r[i]&&(c.protocol.append('<option value="'+i+'">'+a.i18n(r[i].name||i)+"</option>"),e.each(r[i].inputs,function(n,o){o.attr("name",n),"hidden"!=o.attr("type")?(o.addClass("ui-corner-all elfinder-netmount-inputs-"+i),t.append(e("<tr/>").addClass("elfinder-netmount-tr elfinder-netmount-tr-"+i).append(e("<td>"+a.i18n(n)+"</td>")).append(e("<td/>").append(o)))):(o.addClass("elfinder-netmount-inputs-"+i),h.append(o))}),r[i].protocol=c.protocol)}),t.append(h),t.find(".elfinder-netmount-tr").hide(),d.buttons[a.i18n("btnMount")]=p,d.buttons[a.i18n("btnCancel")]=function(){n.dialog.elfinderdialog("close")},t.find("select,input").addClass("elfinder-tabstop"),s=n.fmDialog(u.append(t),d),i=s.closest(".ui-dialog"),s.ready(function(){c.protocol.trigger("change"),s.elfinderdialog("posInit")}),s};return n.dialog?n.dialog.elfinderdialog("open"):n.dialog=s(),o.promise()},n.fm.bind("netmount",function(e){var i=e.data||null,a=n.options;i&&i.protocol&&a[i.protocol]&&"function"==typeof a[i.protocol].done&&(a[i.protocol].done(n.fm,i),t.find("select,input").addClass("elfinder-tabstop"),n.dialog.elfinderdialog("tabstopsInit"))})},i.prototype.commands.netunmount=function(){this.alwaysEnabled=!0,this.updateOnSelect=!1,this.drivers=[],this.handlers={load:function(){this.drivers=this.fm.netDrivers}},this.getstate=function(e){var t,n=this.fm;return e&&this.drivers.length&&!this._disabled&&(t=n.file(e[0]))&&t.netkey?0:-1},this.exec=function(t){var n=this,i=this.fm,a=e.Deferred().fail(function(e){e&&i.error(e)}),o=i.file(t[0]),r=function(t){var n,a=[];return i.leafRoots&&(n=[],e.each(i.leafRoots,function(a,o){var r,s=i.parents(a);(r=e.inArray(t,s))!==-1&&(r=s.length-r,e.each(o,function(e,t){n.push({i:r,hash:t})}))}),n.length&&(n.sort(function(e,t){return e.i<t.i}),e.each(n,function(e,t){a.push(t.hash)}))),a};return this._disabled?a.reject():("pending"==a.state()&&i.confirm({title:n.title,text:i.i18n("confirmUnmount",o.name),accept:{label:"btnUnmount",callback:function(){var t=o.hash,s=r(t),l=[],c=[],d=function(){e.when(l).done(function(){i.request({data:{cmd:"netmount",protocol:"netunmount",host:o.netkey,user:t,pass:"dum"},notify:{type:"netunmount",cnt:1,hideCnt:!0},preventFail:!0}).fail(function(e){a.reject(e)}).done(function(e){o.volumeid&&delete i.volumeExpires[o.volumeid],a.resolve()})}).fail(function(e){c.length&&i.remove({removed:c}),a.reject(e)})};s.length?i.confirm({title:n.title,text:function(){var t=["unmountChildren"];return e.each(s,function(e,n){t.push([i.file(n).name])}),t}(),accept:{label:"btnUnmount",callback:function(){e.each(s,function(e,t){var n=i.file(t);n.netkey&&l.push(i.request({data:{cmd:"netmount",protocol:"netunmount",host:n.netkey,user:n.hash,pass:"dum"},notify:{type:"netunmount",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){e.removed&&(n.volumeid&&delete i.volumeExpires[n.volumeid],c=c.concat(e.removed))}))}),d()}},cancel:{label:"btnCancel",callback:function(){a.reject()}}}):(l=null,d())}},cancel:{label:"btnCancel",callback:function(){a.reject()}}}),a)}},(i.prototype.commands.open=function(){var t=this.fm;this.alwaysEnabled=!0,this.noChangeDirOnRemovedCwd=!0,this._handlers={dblclick:function(e){e.preventDefault(),t.exec("open",e.data&&e.data.file?[e.data.file]:void 0)},"select enable disable reload":function(e){this.update("disable"==e.type?-1:void 0)}},this.shortcuts=[{pattern:"ctrl+down numpad_enter"+("mac"!=t.OS&&" enter")}],this.getstate=function(n){var i=this.files(n),a=i.length;return 1==a?i[0].read?0:-1:a&&!t.UA.Mobile&&e.grep(i,function(e){return!("directory"==e.mime||!e.read)}).length==a?0:-1},this.exec=function(n,i){var a,o,r,s,l,c,d,p,u,h,f,m,g,v,b=e.Deferred().fail(function(e){e&&t.error(e)}),y=this.files(n),w=y.length,x="object"==typeof i&&i.thash,k=this.options,C=k.into||"window";if(!w&&!x)return b.reject();if(x||1==w&&(a=y[0])&&"directory"==a.mime)return x||!a||a.read?t.keyState.ctrlKey&&(t.keyState.shiftKey||"function"!=typeof t.options.getFileCallback)&&t.getCommand("opennew")?t.exec("opennew",[x?x:a.hash]):t.request({data:{cmd:"open",target:x||a.hash},notify:{type:"open",cnt:1,hideCnt:!0},syncOnFail:!0,lazy:!1}):b.reject(["errOpen",a.name,"errPerm"]);if(y=e.grep(y,function(e){return"directory"!=e.mime}),w!=y.length)return b.reject();var z=function(){var i,g,v;try{u=new RegExp(t.option("dispInlineRegex"),"i")}catch(x){u=!1}for(h=e("<a>").hide().appendTo(e("body")),f="string"==typeof h.get(0).download,w=y.length;w--;){if(g="elf_open_window",a=y[w],!a.read)return b.reject(["errOpen",a.name,"errPerm"]);if(m=u&&a.mime.match(u),o=t.openUrl(a.hash,!m),t.UA.Mobile||!m){if(f)m?h.attr("target","_blank"):h.attr("download",a.name),h.attr("href",o).get(0).click();else if(i=window.open(o),!i)return b.reject("errPopup")}else{if(v="string"==typeof k.method&&"get"===k.method.toLowerCase(),!v&&0===o.indexOf(t.options.url)&&t.customData&&Object.keys(t.customData).length&&!a.mime.match(/^(?:video|audio)/)&&(o=""),"window"===C?(l=d=Math.round(2*screen.availWidth/3),c=p=Math.round(2*screen.availHeight/3),parseInt(a.width)&&parseInt(a.height)?(l=parseInt(a.width),c=parseInt(a.height)):a.dim&&(r=a.dim.split("x"),l=parseInt(r[0]),c=parseInt(r[1])),d>=l&&p>=c?(d=l,p=c):l-d>c-p?p=Math.round(c*(d/l)):d=Math.round(l*(p/c)),s="width="+d+",height="+p,i=window.open(o,g,s+",top=50,left=50,scrollbars=yes,resizable=yes,titlebar=no")):("tabs"===C&&(g=a.hash),i=window.open("about:blank",g)),!i)return b.reject("errPopup");if(""===o){var z=document.createElement("form");z.action=t.options.url,z.method="POST",z.target=g,z.style.display="none";var T=Object.assign({},t.customData,{cmd:"file",target:a.hash,_t:a.ts||parseInt(+new Date/1e3)});e.each(T,function(e,t){var n=document.createElement("input");n.name=e,n.value=t,z.appendChild(n)}),document.body.appendChild(z),z.submit()}else"window"!==C&&(i.location=o);e(i).trigger("focus")}}return h.remove(),b.resolve(n)};if(w>1)t.confirm({title:"openMulti",text:["openMultiConfirm",w+""],accept:{label:"cmdopen",callback:function(){z()}},cancel:{label:"btnCancel",callback:function(){b.reject()}},buttons:t.getCommand("zipdl")&&t.isCommandEnabled("zipdl",t.cwd().hash)?[{label:"cmddownload",callback:function(){t.exec("download",n),b.reject()}}]:[]});else{if(g=t.storage("selectAction")||k.selectAction,g&&(e.each(g.split("/"),function(){var e=this.valueOf();return("open"===e||!(v=t.getCommand(e))||!v.enabled())&&void(v=null)}),v))return t.exec(v.name);z()}return b}}).prototype={forceLoad:!0},i.prototype.commands.opendir=function(){this.alwaysEnabled=!0,this.getstate=function(){var e,t=this.fm.selected(),n=t.length;return 1!==n?-1:(e=this.fm.getUI("workzone"),e.hasClass("elfinder-search-result")?0:-1)},this.exec=function(t){var n,i=this.fm,a=e.Deferred(),o=this.files(t),r=o.length;return r&&o[0].phash?(n=o[0].phash,i.trigger("searchend",{noupdate:!0}),i.request({data:{cmd:"open",target:n},notify:{type:"open",cnt:1,hideCnt:!0},syncOnFail:!1}),a):a.reject()}},i.prototype.commands.opennew=function(){var t=this.fm;this.shortcuts=[{pattern:("function"==typeof t.options.getFileCallback?"shift+":"")+"ctrl+enter"}],this.getstate=function(e){var t=this.files(e),n=t.length;return 1===n&&"directory"===t[0].mime&&t[0].read?0:-1},this.exec=function(t){var n,i,a,o,r=e.Deferred(),s=this.files(t),l=s.length,c=this.options;return 1===l&&(n=s[0])&&"directory"===n.mime?(i=window.location,a=c.url?c.url:i.pathname,c.useOriginQuery&&(a.match(/\?/)?i.search&&(a+="&"+i.search.substr(1)):a+=i.search),a+="#elf_"+n.hash,o=window.open(a,"_blank"),setTimeout(function(){o.focus()},1e3),r.resolve()):r.reject()}},i.prototype.commands.paste=function(){this.updateOnSelect=!1,this.handlers={changeclipboard:function(){this.update()}},this.shortcuts=[{pattern:"ctrl+v shift+insert"}],this.getstate=function(e){if(this._disabled)return-1;if(e){if(Array.isArray(e)){if(1!=e.length)return-1;e=this.fm.file(e[0])}}else e=this.fm.cwd();return this.fm.clipboard().length&&"directory"==e.mime&&e.write?0:-1},this.exec=function(t,n){var i,a,o=this,r=o.fm,s=n||{},l=t?this.files(t)[0]:r.cwd(),c=r.clipboard(),d=c.length,p=!!d&&c[0].cut,u=s._cmd?s._cmd:p?"move":"copy",h="err"+u.charAt(0).toUpperCase()+u.substr(1),f=[],m=[],g=e.Deferred().fail(function(e){e&&r.error(e)}).always(function(){r.unlockfiles({files:e.map(c,function(e){return e.hash})})}),v=function(t){return t.length&&r._commands.duplicate?r.exec("duplicate",t):e.Deferred().resolve()},b=function(t){var n,i=e.Deferred(),a=[],c={},d=function(t,n){for(var i=[],a=t.length;a--;)e.inArray(t[a].name,n)!==-1&&i.unshift(a);return i},h=function(e){var n=a[e],o=t[n],s=e==a.length-1;o&&r.confirm({title:r.i18n(u+"Files"),text:["errExists",o.name,"restore"===u?"confirmRest":"confirmRepl"],all:!s,accept:{label:"btnYes",callback:function(n){s||n?m(t):h(++e)}},reject:{label:"btnNo",callback:function(n){var i;if(n)for(i=a.length;e<i--;)t[a[i]].remove=!0;else t[a[e]].remove=!0;s||n?m(t):h(++e)}},cancel:{label:"btnCancel",callback:function(){i.resolve()}},buttons:[{label:"btnBackup",callback:function(n){var i;if(n)for(i=a.length;e<i--;)t[a[i]].rename=!0;else t[a[e]].rename=!0;s||n?m(t):h(++e)}}]})},f=function(n){var i,o={};n&&(Array.isArray(n)?n.length&&("string"==typeof n[0]?a=d(t,n):(e.each(n,function(e,t){o[t.name]=t.hash}),a=d(t,e.map(o,function(e,t){return t})),e.each(t,function(e,t){o[t.name]&&(c[o[t.name]]=t.name)}))):(i=[],a=e.map(n,function(e){return"string"==typeof e?e:(i=i.concat(e),!1)}),i.length&&(a=a.concat(i)),a=d(t,a),c=n)),a.length?h(0):m(t)},m=function(t){var n,a,o=[],d=e.grep(t,function(e){return e.rename&&o.push(e.name),!e.remove}),h=d.length;return h?(n=e.map(d,function(e){return e.hash}),a={cmd:"paste",dst:l.hash,targets:n,cut:p?1:0,renames:o,hashes:c,suffix:r.options.backupSuffix},r.api<2.1&&(a.src=d[0].phash),void r.request({data:a,notify:{type:u,cnt:h},navigate:{toast:s.noToast?{}:{inbuffer:{msg:r.i18n(["complete",r.i18n("cmd"+u)]),action:{cmd:"open",msg:"cmdopendir",data:[l.hash],done:"select",cwdNot:l.hash}}}}}).done(function(t){var n={},o=t.added&&t.added.length?t.added:null;p&&o&&(e.each(d,function(t,i){var a=i.phash,r=function(t){var n;return e.each(o,function(e,i){if(i.name===t)return n=i.hash,!1}),n},s=r(i.name);s&&(n[a]?n[a].push(s):n[a]=[s])}),Object.keys(n).length&&(t.undo={cmd:"move",callback:function(){var t=[];return e.each(n,function(e,n){t.push(r.request({data:{cmd:"paste",dst:e,targets:n,cut:1},notify:{type:"undo",cnt:n.length}}))}),e.when.apply(null,t)}},t.redo={cmd:"move",callback:function(){return r.request({data:a,notify:{type:"redo",cnt:h}})}})),i.resolve(t)}).fail(function(){i.reject()}).always(function(){r.unlockfiles({files:d})})):i.resolve()};return r.isCommandEnabled(o.name,l.hash)&&t.length?(r.oldAPI?m(t):r.option("copyOverwrite",l.hash)?(n=e.map(t,function(e){return e.name}),l.hash==r.cwd().hash?f(e.map(r.files(),function(e){return e.phash==l.hash?{hash:e.hash,name:e.name}:null})):r.request({data:{cmd:"ls",target:l.hash,intersect:n},notify:{type:"prepare",cnt:1,hideCnt:!0},preventFail:!0}).always(function(e){f(e.list)})):m(t),i):i.resolve()};return d&&l&&"directory"==l.mime?l.write?(i=r.parents(l.hash),e.each(c,function(t,n){return n.read?p&&n.locked?!g.reject(["errLocked",n.name]):e.inArray(n.hash,i)!==-1?!g.reject(["errCopyInItself",n.name]):n.mime&&"directory"!==n.mime&&!r.uploadMimeCheck(n.mime,l.hash)?!g.reject([h,n.name,"errUploadMime"]):(a=r.parents(n.hash),a.pop(),e.inArray(l.hash,a)!==-1&&e.grep(a,function(e){var t=r.file(e);return t.phash==l.hash&&t.name==n.name}).length?!g.reject(["errReplByChild",n.name]):void(n.phash==l.hash?m.push(n.hash):f.push({hash:n.hash,phash:n.phash,name:n.name}))):!g.reject([h,n.name,"errPerm"])}),"rejected"==g.state()?g:(e.when(v(m),b(f)).done(function(e,t){g.resolve(t&&t.undo?t:void 0)}).fail(function(){g.reject()}).always(function(){p&&r.clipboard([])}),g)):g.reject([h,c[0].name,"errPerm"]):g.reject()}},i.prototype.commands.places=function(){var t=this,n=this.fm,i=function(n){return e.grep(t.files(n),function(e){return"directory"==e.mime})},a=null;this.getstate=function(e){var t=this.hashes(e),n=t.length;return a&&n&&n==i(t).length?0:-1},this.exec=function(t){var n=this.files(t);return a.trigger("regist",[n]),e.Deferred().resolve()},n.one("load",function(){a=n.ui.places})},i.prototype.commands.preference=function(){var t,n,i=this,a=this.fm,o="replace",r='<li class="'+a.res("class","tabstab")+' elfinder-preference-tab-{id}"><a href="#'+a.namespace+'-preference-{id}" id="'+a.namespace+'-preference-tab-{id}" class="ui-tabs-anchor {class}">{title}</a></li>',s=e('<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-preference">'),l=e('<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'),c=e('<div class="elfinder-preference-tabs ui-tabs-panel ui-widget-content ui-corner-bottom"/>'),d=(e("base").length?document.location.href.replace(/#.*$/,""):"",function(t){e("#"+a.namespace+"-preference-tab-"+t).trigger("mouseover").trigger("click"),n=t}),p=a.res("class","tabsactive"),u=function(){var u=i.options.categories||{language:["language"],theme:["theme"],toolbar:["toolbarPref"],workspace:["iconSize","columnPref","selectAction","makefileTypes","useStoredEditor","editorMaximized","showHidden"],dialog:["autoFocusDialog"],selectionInfo:["infoItems","hashChecker"],reset:["clearBrowserData"],all:!0},h=i.options.prefs||["language","theme","toolbarPref","iconSize","columnPref","selectAction","makefileTypes","useStoredEditor","editorMaximized","showHidden","infoItems","hashChecker","autoFocusDialog","clearBrowserData"];h=a.arrayFlip(h,!0),a.options.getFileCallback&&delete h.selectAction,h.language&&(h.language=function(){var t=e("<select/>").on("change",function(){var t=e(this).val();a.storage("lang",t),e("#"+a.id).elfinder("reload")}),n=[],o=i.options.langs||{ar:"اللغة العربية",bg:"Български",ca:"Català",cs:"Čeština",da:"Dansk",de:"Deutsch",el:"Ελληνικά",en:"English",es:"Español",fa:"فارسی",fo:"Føroyskt",fr:"Français",he:"עברית",hr:"Hrvatski",hu:"Magyar",id:"Bahasa Indonesia",it:"Italiano",ja:"日本語",ko:"한국어",nl:"Nederlands",no:"Norsk",pl:"Polski",pt_BR:"Português",ro:"Română",ru:"Pусский",si:"සිංහල",sk:"Slovenčina",sl:"Slovenščina",sr:"Srpski",sv:"Svenska",tr:"Türkçe",ug_CN:"ئۇيغۇرچە",uk:"Український",vi:"Tiếng Việt",zh_CN:"简体中文",zh_TW:"正體中文"};return e.each(o,function(e,t){n.push('<option value="'+e+'">'+t+"</option>")}),t.append(n.join("")).val(a.lang)}()),h.theme&&(h.theme=function(){var t=a.options.themes?Object.keys(a.options.themes).length:0;if(0===t||1===t&&a.options.themes["default"])return null;var n=e("<select/>").on("change",function(){var t=e(this).val();a.changeTheme(t).storage("theme",t)}),i={image:'<img class="elfinder-preference-theme elfinder-preference-theme-image" src="$2" />',link:'<a href="$1" target="_blank" title="$3">$2</a>',data:'<dt>$1</dt><dd><span class="elfinder-preference-theme elfinder-preference-theme-$0">$2</span></dd>'},o=["image","description","author","email","license"],r=e('<button class="ui-button ui-corner-all ui-widget elfinder-preference-theme-default"/>').text(a.i18n("default")).on("click",function(e){n.val("default").trigger("change")}),s=e('<div class="elfinder-reference-hide-taball"/>').on("click","button",function(){var t=e(this).data("themeid");n.val(t).trigger("change")});return a.options.themes["default"]||n.append('<option value="default">'+a.i18n("default")+"</option>"),e.each(a.options.themes,function(t,r){var l,c=e('<option class="elfinder-theme-option-'+t+'" value="'+t+'">'+a.i18n(t)+"</option>"),d=e('<fieldset class="ui-widget ui-widget-content ui-corner-all elfinder-theme-list-'+t+'"><legend>'+a.i18n(t)+'</legend><div><span class="elfinder-spinner"/></div></fieldset>');n.append(c),s.append(d),l=setTimeout(function(){d.find("span.elfinder-spinner").replaceWith(a.i18n(["errRead",t]))},1e4),a.getTheme(t).always(function(){l&&clearTimeout(l)}).done(function(r){var s,l=e(),p=e("<dl/>");s=r.link?i.link.replace(/\$1/g,r.link).replace(/\$3/g,a.i18n("website")):"$2",r.name&&c.html(a.i18n(r.name)),d.children("legend").html(s.replace(/\$2/g,a.i18n(r.name)||t)),e.each(o,function(o,s){var l,c=i[s]||i.data;r[s]&&(l=c.replace(/\$0/g,a.escape(s)).replace(/\$1/g,a.i18n(s)).replace(/\$2/g,a.i18n(r[s])),"image"===s&&r.link&&(l=e(l).on("click",function(){n.val(t).trigger("change")}).attr("title",a.i18n("select"))),p.append(l))}),l=l.add(p),l=l.add(e('<div class="elfinder-preference-theme-btn"/>').append(e('<button class="ui-button ui-corner-all ui-widget"/>').data("themeid",t).html(a.i18n("select")))),d.find("span.elfinder-spinner").replaceWith(l)}).fail(function(){d.find("span.elfinder-spinner").replaceWith(a.i18n(["errRead",t]))})}),e("<div/>").append(n.val(a.theme&&a.theme.id?a.theme.id:"default"),r,s)}()),h.toolbarPref&&(h.toolbarPref=function(){var t=e.map(a.options.uiOptions.toolbar,function(t){return e.isArray(t)?t:null}),n=[],i=a.storage("toolbarhides")||{};return e.each(t,function(){var e=this,t=a.i18n("cmd"+e);t==="cmd"+e&&(t=a.i18n(e)),n.push('<span class="elfinder-preference-toolbar-item"><label><input type="checkbox" value="'+e+'" '+(i[e]?"":"checked")+"/>"+t+"</label></span>")}),e(n.join(" ")).on("change","input",function(){var t=e(this).val(),n=e(this).is(":checked");n||i[t]?n&&i[t]&&delete i[t]:i[t]=!0,a.storage("toolbarhides",i),a.trigger("toolbarpref")})}()),h.iconSize&&(h.iconSize=function(){var t=a.options.uiOptions.cwd.iconsView.sizeMax||3,n=a.storage("iconsize")||0,i=e('<div class="touch-punch"/>').slider({classes:{"ui-slider-handle":"elfinder-tabstop"},value:n,max:t,slide:function(e,t){a.getUI("cwd").trigger("iconpref",{size:t.value})},change:function(e,t){a.storage("iconsize",t.value)}});return a.getUI("cwd").on("iconpref",function(e,t){i.slider("option","value",t.size)}),i}()),h.columnPref&&(h.columnPref=function(){var t=a.options.uiOptions.cwd.listView.columns,n=[],i=a.storage("columnhides")||{};return e.each(t,function(){var e=this,t=a.getColumnName(e);n.push('<span class="elfinder-preference-column-item"><label><input type="checkbox" value="'+e+'" '+(i[e]?"":"checked")+"/>"+t+"</label></span>")}),e(n.join(" ")).on("change","input",function(){var t=e(this).val(),n=e(this).is(":checked");n||i[t]?n&&i[t]&&delete i[t]:i[t]=!0,a.storage("columnhides",i),a.trigger("columnpref",{repaint:!0})})}()),h.selectAction&&(h.selectAction=function(){var t=e("<select/>").on("change",function(){var t=e(this).val();a.storage("selectAction","default"===t?null:t)}),n=[],o=i.options.selectActions,r=a.getCommand("open").options.selectAction||"open";return e.inArray(r,o)===-1&&o.unshift(r),e.each(o,function(t,i){var o=e.map(i.split("/"),function(e){var t=a.i18n("cmd"+e);return t==="cmd"+e&&(t=a.i18n(e)),t});n.push('<option value="'+i+'">'+o.join("/")+"</option>")}),t.append(n.join("")).val(a.storage("selectAction")||r)}()),h.makefileTypes&&(h.makefileTypes=function(){var t=a.storage("mkfileHides")||{},n=function(){var n=[];return t=a.storage("mkfileHides")||{},e.each(a.mimesCanMakeEmpty,function(e,i){var o=a.getCommand("mkfile").getTypeName(e,i);n.push('<span class="elfinder-preference-column-item" title="'+a.escape(o)+'"><label><input type="checkbox" value="'+e+'" '+(t[e]?"":"checked")+"/>"+i+"</label></span>")}),n.join(" ")},i=e("<div/>").on("change","input",function(){var n=e(this).val(),i=e(this).is(":checked");i||t[n]?i&&t[n]&&delete t[n]:t[n]=!0,a.storage("mkfileHides",t),a.trigger("canMakeEmptyFile")}).append(n()),o=e("<div/>").append(e('<input type="text" placeholder="'+a.i18n("typeOfTextfile")+'"/>').on("keydown",function(t){t.keyCode===e.ui.keyCode.ENTER&&e(this).next().trigger("click")}),e('<button class="ui-button"/>').html(a.i18n("add")).on("click",function(){var t,n=e(this).prev(),i=n.val(),o=a.getUI("toast"),r=function(){return o.appendTo(n.closest(".ui-dialog")),a.toast({msg:a.i18n("errUsupportType"),mode:"warning",onHidden:function(){1===o.children().length&&o.appendTo(a.getUI())}}),n.trigger("focus"),!1};if(!i.match(/\//)){if(i=a.arrayFlip(a.mimeTypes)[i],!i)return r();n.val(i)}return a.mimeIsText(i)&&a.mimeTypes[i]?(a.trigger("canMakeEmptyFile",{mimes:[i],unshift:!0}),t={},t[i]=a.mimeTypes[i],a.storage("mkfileTextMimes",Object.assign(t,a.storage("mkfileTextMimes")||{})),n.val(""),o.appendTo(n.closest(".ui-dialog")),void a.toast({msg:a.i18n(["complete",i+" ("+t[i]+")"]),onHidden:function(){1===o.children().length&&o.appendTo(a.getUI())}})):r()}),e('<button class="ui-button"/>').html(a.i18n("reset")).on("click",function(){a.one("canMakeEmptyFile",{done:function(){i.empty().append(n())}}),a.trigger("canMakeEmptyFile",{resetTexts:!0})}));return a.bind("canMakeEmptyFile",{done:function(e){e.data&&e.data.mimes&&e.data.mimes.length&&i.empty().append(n())}}),e("<div/>").append(i,o)}()),h.useStoredEditor&&(h.useStoredEditor=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("useStoredEditor");return e?e>0:a.options.commandsOptions.edit.useStoredEditor}()).on("change",function(t){a.storage("useStoredEditor",e(this).is(":checked")?1:-1)})),h.editorMaximized&&(h.editorMaximized=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("editorMaximized");return e?e>0:a.options.commandsOptions.edit.editorMaximized}()).on("change",function(t){a.storage("editorMaximized",e(this).is(":checked")?1:-1)})),h.showHidden&&!function(){var t,n=function(){var n,i=a.storage("hide"),o=[];i&&i.items&&e.each(i.items,function(e,t){o.push(a.escape(t))}),r.prop("disabled",!o.length)[o.length?"removeClass":"addClass"]("ui-state-disabled"),n=o.length?o.join("\n"):"",h.showHidden.attr("title",n),t&&h.showHidden.tooltip("option","content",n.replace(/\n/g,"<br>")).tooltip("close")},i=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("hide");return e&&e.show}()).on("change",function(t){var n={};n[e(this).is(":checked")?"show":"hide"]=!0,a.exec("hide",void 0,n)}),o=e('<button class="ui-button ui-corner-all ui-widget"/>').append(a.i18n("reset")).on("click",function(){a.exec("hide",void 0,{reset:!0}),e(this).parent().find("input:first").prop("checked",!1),n()}),r=e().add(i).add(o);h.showHidden=e("<div/>").append(i,o),a.bind("hide",function(e){var t=e.data;t.opts&&(t.opts.show||t.opts.hide)||n()}),a.UA.Mobile&&e.fn.tooltip&&(t=!0,h.showHidden.tooltip({classes:{"ui-tooltip":"elfinder-ui-tooltip ui-widget-shadow"},tooltipClass:"elfinder-ui-tooltip ui-widget-shadow",track:!0}).css("user-select","none"),o.css("user-select","none")),n()}(),h.infoItems&&(h.infoItems=function(){var t=a.getCommand("info").items,n=[],i=a.storage("infohides")||a.arrayFlip(a.options.commandsOptions.info.hideItems,!0);return e.each(t,function(){var e=this,t=a.i18n(e);n.push('<span class="elfinder-preference-info-item"><label><input type="checkbox" value="'+e+'" '+(i[e]?"":"checked")+"/>"+t+"</label></span>")}),e(n.join(" ")).on("change","input",function(){var t=e(this).val(),n=e(this).is(":checked");n||i[t]?n&&i[t]&&delete i[t]:i[t]=!0,a.storage("infohides",i),a.trigger("infopref",{repaint:!0})})}()),h.hashChecker&&a.hashCheckers.length&&(h.hashChecker=function(){var t=[],n=a.arrayFlip(a.storage("hashchekcer")||a.options.commandsOptions.info.showHashAlgorisms,!0);return e.each(a.hashCheckers,function(){var e=this,i=a.i18n(e);t.push('<span class="elfinder-preference-hashchecker-item"><label><input type="checkbox" value="'+e+'" '+(n[e]?"checked":"")+"/>"+i+"</label></span>")}),e(t.join(" ")).on("change","input",function(){var t=e(this).val(),i=e(this).is(":checked");i?n[t]=!0:n[t]&&delete n[t],a.storage("hashchekcer",e.grep(a.hashCheckers,function(e){return n[e]}))})}()),h.autoFocusDialog&&(h.autoFocusDialog=e('<input type="checkbox"/>').prop("checked",function(){var e=a.storage("autoFocusDialog");return e?e>0:a.options.uiOptions.dialog.focusOnMouseOver}()).on("change",function(t){a.storage("autoFocusDialog",e(this).is(":checked")?1:-1)})),h.clearBrowserData&&(h.clearBrowserData=e("<button/>").text(a.i18n("reset")).button().on("click",function(t){t.preventDefault(),a.storage(),e("#"+a.id).elfinder("reload")})),e.each(u,function(t,i){var s,d;i===!0?d=1:i&&(s=e(),e.each(i,function(t,n){var i,o,r,l="";(i=h[n])&&(d=2,o=a.i18n(n),r=e(i).filter('input[type="checkbox"]'),r.length||(r=e(i).find('input[type="checkbox"]')),1===r.length?(r.attr("id")||r.attr("id","elfinder-preference-"+n+"-checkbox"),o='<label for="'+r.attr("id")+'">'+o+"</label>"):r.length>1&&(l=" elfinder-preference-checkboxes"),s=s.add(e('<dt class="elfinder-preference-'+n+l+'">'+o+"</dt>")).add(e('<dd class="elfinder-preference-'+n+l+'"/>').append(i)))})),d&&(l.append(r[o](/\{id\}/g,t)[o](/\{title\}/,a.i18n(t))[o](/\{class\}/,n===t?"elfinder-focus":"")),2===d&&c.append(e('<div id="'+a.namespace+"-preference-"+t+'" class="elfinder-preference-content"/>').hide().append(e("<dl/>").append(s))))}),l.on("click","a",function(t){var n=e(t.target),i=n.attr("href");t.preventDefault(),t.stopPropagation(),l.children().removeClass(p),n.removeClass("ui-state-hover").parent().addClass(p),i.match(/all$/)?c.addClass("elfinder-preference-taball").children().show():(c.removeClass("elfinder-preference-taball").children().hide(),e(i).show())}).on("focus blur","a",function(t){e(this).parent().toggleClass("ui-state-focus","focusin"===t.type)}).on("mouseenter mouseleave","li",function(t){e(this).toggleClass("ui-state-hover","mouseenter"===t.type)}),c.find("a,input,select,button").addClass("elfinder-tabstop"),s.append(l,c),t=i.fmDialog(s,{title:i.title,width:i.options.width||600,height:i.options.height||400,maxWidth:"window",maxHeight:"window",autoOpen:!1,destroyOnClose:!1,allowMinimize:!1,open:function(){n&&d(n),n=null},resize:function(){c.height(t.height()-l.outerHeight(!0)-(c.outerHeight(!0)-c.height())-5)}}).on("click",function(e){e.stopPropagation()}).css({overflow:"hidden"}),t.closest(".ui-dialog").css({overflow:"hidden"}).addClass("elfinder-bg-translucent"),n="all"};this.shortcuts=[{pattern:"ctrl+comma",description:this.title}],this.alwaysEnabled=!0,this.getstate=function(){return 0},this.exec=function(n,i){return!t&&u(),i&&(i.tab?d(i.tab):"cwd"===i._currentType&&d("workspace")),t.elfinderdialog("open"),e.Deferred().resolve()}},(i.prototype.commands.quicklook=function(){var t,n,i,a,o,r,s,l,c,d,p=this,u=p.fm,h=0,f=1,m=2,g=3,v=4,b=h,y=Element.update?"quicklookupdate":"update",w="elfinder-quicklook-navbar-icon",x="elfinder-quicklook-fullscreen",k="elfinder-quicklook-info-wrapper",C=function(t){e(document).trigger(e.Event("keydown",{keyCode:t,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1}))},z=function(e){var t=u.getUI().offset(),n=function(){var t=e.find(".elfinder-cwd-file-wrapper");return t.length?t:e}(),i=n.offset()||{top:0,
left:0};return{opacity:0,width:n.width(),height:n.height()-30,top:i.top-t.top,left:i.left-t.left}},T=function(){var i=p.options.contain,a=i?u.getUI():e(window),o=u.getUI().offset(),r=Math.min(t,a.width()-10),s=Math.min(n,a.height()-80);return{opacity:1,width:r,height:s,top:parseInt((a.height()-s-60)/2+(i?0:a.scrollTop()-o.top)),left:parseInt((a.width()-r)/2+(i?0:a.scrollLeft()-o.left))}},A={},S=function(e,t){var n=t||e.substr(0,e.indexOf("/")),i=A[n]?A[n]:A[n]=document.createElement(n),a=!1;try{a=i.canPlayType&&i.canPlayType(e)}catch(o){}return!(!a||""===a||"no"==a)},I=window.navigator.platform.indexOf("Win")!=-1,O=!1,j=!1,M=!1,D=null,F=e.ui.keyCode.LEFT,E=e.ui.keyCode.RIGHT,U="mousemove touchstart "+("onwheel"in document?"wheel":"onmousewheel"in document?"mousewheel":"DOMMouseScroll"),P=e('<span class="elfinder-dialog-title elfinder-quicklook-title"/>'),R=e("<div/>"),q=e('<div class="elfinder-quicklook-info"/>'),H=e('<div class="ui-front elfinder-quicklook-cover"/>'),_=e('<div class="'+w+" "+w+'-fullscreen"/>').on("click touchstart",function(t){if(!M){var n=p.window,i=n.hasClass(x),o=e(window),r=function(){p.preview.trigger("changesize")};t.stopPropagation(),t.preventDefault(),i?(J="",L(),n.toggleClass(x).css(n.data("position")),o.trigger(p.resize).off(p.resize,r),K.off("mouseenter mouseleave"),H.off(U)):(n.toggleClass(x).data("position",{left:n.css("left"),top:n.css("top"),width:n.width(),height:n.height(),display:"block"}).removeAttr("style"),e(window).on(p.resize,r).trigger(p.resize),H.on(U,function(e){j||("mousemove"!==e.type&&"touchstart"!==e.type||(L(),D=setTimeout(function(){(u.UA.Mobile||K.parent().find(".elfinder-quicklook-navbar:hover").length<1)&&K.fadeOut("slow",function(){H.show()})},3e3)),H.is(":visible")&&(W(),H.data("tm",setTimeout(function(){H.show()},3e3))))}).show().trigger("mousemove"),K.on("mouseenter mouseleave",function(e){j||("mouseenter"===e.type?L():H.trigger("mousemove"))})),u.zIndex&&n.css("z-index",u.zIndex+1),u.UA.Mobile?K.attr("style",J):K.attr("style",J).draggable(i?"destroy":{start:function(){j=!0,M=!0,H.show(),L()},stop:function(){j=!1,J=p.navbar.attr("style"),requestAnimationFrame(function(){M=!1})}}),e(this).toggleClass(w+"-fullscreen-off");var s=n;a.is(".ui-resizable")&&(s=s.add(a)),s.resizable(i?"enable":"disable").removeClass("ui-state-disabled"),n.trigger("viewchange")}}),N=function(){p.update(void 0,function(){var t=p.fm,n=t.selectedFiles(),i=n.length,a=(p.docked(),function(){var a=0;return e.each(n,function(e,t){var n=parseInt(t.ts);a>=0?n>a&&(a=n):a="unknown"}),{hash:n[0].hash+"/"+ +new Date,name:t.i18n("items")+": "+i,mime:"group",size:G,ts:a,files:e.map(n,function(e){return e.hash}),getSize:!0}});return i||(i=1,n=[t.cwd()]),1===i?n[0]:a()}())},L=function(){p.window.hasClass(x)&&(D&&clearTimeout(D),D=null,K.stop(!0,!0).css("display","block"),W())},W=function(){H.data("tm")&&clearTimeout(H.data("tm")),H.removeData("tm"),H.hide()},B=e('<div class="'+w+" "+w+'-prev"/>').on("click touchstart",function(e){return!M&&C(F),!1}),$=e('<div class="'+w+" "+w+'-next"/>').on("click touchstart",function(e){return!M&&C(E),!1}),K=e('<div class="elfinder-quicklook-navbar"/>').append(B).append(_).append($).append('<div class="elfinder-quicklook-navbar-separator"/>').append(e('<div class="'+w+" "+w+'-close"/>').on("click touchstart",function(e){return!M&&p.window.trigger("close"),!1})),V=e('<span class="ui-front ui-icon elfinder-icon-close ui-icon-closethick"/>').on("mousedown",function(e){e.stopPropagation(),p.window.trigger("close")}),X=e('<span class="ui-front ui-icon elfinder-icon-minimize ui-icon-minusthick"/>').on("mousedown",function(e){e.stopPropagation(),p.docked()?p.window.trigger("navdockout"):p.window.trigger("navdockin")}),G='<span class="elfinder-spinner-text">'+u.i18n("calc")+'</span><span class="elfinder-spinner"/>',J="",Y=!0;this.cover=H,this.evUpdate=y,(this.navbar=K)._show=L,this.resize="resize."+u.namespace,this.info=e("<div/>").addClass(k).append(R).append(q),this.autoPlay=function(){return!!p.opened()&&!!p.options[p.docked()?"dockAutoplay":"autoplay"]},this.preview=e('<div class="elfinder-quicklook-preview ui-helper-clearfix"/>').on("change",function(){L(),K.attr("style",J),p.docked()&&K.hide(),p.preview.attr("style","").removeClass("elfinder-overflow-auto"),p.info.attr("style","").hide(),p.cover.removeClass("elfinder-quicklook-coverbg"),R.removeAttr("class").attr("style",""),q.html("")}).on(y,function(t){var n,i,a=(p.preview,t.file),r='<div class="elfinder-quicklook-info-data">{value}</div>',s=function(){var s=p.window.css("overflow","hidden");i=u.escape(a.i18||a.name),!a.read&&t.stopImmediatePropagation(),p.window.data("hash",a.hash),p.preview.off("changesize").trigger("change").children().remove(),P.html(i),B.css("visibility",""),jQuery.css("visibility",""),a.hash===u.cwdId2Hash(o.find("[id]:not(.elfinder-cwd-parent):first").attr("id"))&&B.css("visibility","hidden"),a.hash===u.cwdId2Hash(o.find("[id]:last").attr("id"))&&jQuery.css("visibility","hidden"),"directory"===a.mime?c=[a.hash]:"group"===a.mime&&a.getSize&&(c=a.files),q.html(r.replace(/\{value\}/,i)+r.replace(/\{value\}/,u.mime2kind(a))+r.replace(/\{value\}/,c.length?G:u.formatSize(a.size))+r.replace(/\{value\}/,u.i18n("modify")+": "+u.formatDate(a))),c.length&&(l=u.getSize(c).done(function(e){q.find("span.elfinder-spinner").parent().html(e.formated)}).fail(function(){q.find("span.elfinder-spinner").parent().html(u.i18n("unknown"))}).always(function(){l=null}),l._hash=a.hash),R.addClass("elfinder-cwd-icon ui-corner-all "+u.mime2class(a.mime)),a.icon&&R.css(u.getIconStyle(a,!0)),p.info.attr("class",k),a.csscls&&p.info.addClass(a.csscls),a.read&&(n=u.tmb(a))&&e("<img/>").hide().appendTo(p.preview).on("load",function(){R.addClass(n.className).css("background-image","url('"+n.url+"')"),e(this).remove()}).attr("src",n.url),p.info.delay(100).fadeIn(10),p.window.hasClass(x)&&H.trigger("mousemove"),s.css("overflow","")},c=[];a&&!Object.keys(a).length&&(a=u.cwd()),a&&l&&"pending"===l.state()&&l._hash!==a.hash&&l.reject(),a&&(t.forceUpdate||p.window.data("hash")!==a.hash)?s():t.stopImmediatePropagation()}),this.window=e('<div class="ui-front ui-helper-reset ui-widget elfinder-quicklook touch-punch" style="position:absolute"/>').hide().addClass(u.UA.Touch?"elfinder-touch":"").on("click",function(e){var t=this;e.stopPropagation(),b===m&&requestAnimationFrame(function(){b===m&&u.toFront(t)})}).append(e('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix elfinder-quicklook-titlebar"/>').append(e('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button elfinder-quicklook-titlebar-icon'+(I?" elfinder-titlebar-button-right":"")+'"/>').append(V,X),P),this.preview,p.info.hide(),H.hide(),K).draggable({handle:"div.elfinder-quicklook-titlebar"}).on("open",function(e,t){var n=p.window,i=p.value,a=u.getUI("cwd"),o=function(e){b=e,p.update(1,p.value),p.change(),n.trigger("resize."+u.namespace)};Y||b!==h?b===v&&(u.getUI("navdock").data("addNode")(c),o(g),p.preview.trigger("changesize"),u.storage("previewDocked","1"),0===u.getUI("navdock").width()&&n.trigger("navdockout")):(i&&i.hash!==r&&(a=u.cwdHash2Elm(i.hash.split("/",2)[0])),J="",K.attr("style",""),b=f,a.trigger("scrolltoview"),W(),n.css(t||z(a)).show().animate(T(),550,function(){o(m),L()}),u.toFront(n))}).on("close",function(e,t){var n,i=p.window,a=p.preview.trigger("change"),r=(p.value,(i.data("hash")||"").split("/",2)[0]),s=function(e,n){b=e,n&&u.toHide(i),a.children().remove(),p.update(0,p.value),i.data("hash",""),t&&t.resolve()};p.opened()&&(l&&"pending"===l.state()&&l.reject(),p.docked()?(c=u.getUI("navdock").data("removeNode")(p.window.attr("id"),"detach"),s(v),u.storage("previewDocked","2")):(b=f,i.hasClass(x)&&_.click(),r&&(n=o.find("#"+r)).length?i.animate(z(n),500,function(){s(h,!0)}):s(h,!0)))}).on("navdockin",function(e,t){var n=p.window,a=u.getUI("navdock"),o=s||a.width(),r=t||{};Y&&(r.init=!0),b=g,i=n.attr("style"),n.toggleClass("ui-front").removeClass("ui-widget").draggable("disable").resizable("disable").removeAttr("style").css({width:"100%",height:o,boxSizing:"border-box",paddingBottom:0,zIndex:"unset"}),K.hide(),X.toggleClass("ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize"),u.toHide(n,!0),a.data("addNode")(n,r),p.preview.trigger("changesize"),u.storage("previewDocked","1")}).on("navdockout",function(t){var n=p.window,a=u.getUI("navdock"),o=(e.Deferred(),z(p.preview));s=n.outerHeight(),a.data("removeNode")(n.attr("id"),u.getUI()),n.toggleClass("ui-front").addClass("ui-widget").draggable("enable").resizable("enable").attr("style",i),X.toggleClass("ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize"),b=h,n.trigger("open",o),u.storage("previewDocked","0")}).on("resize."+u.namespace,function(){p.preview.trigger("changesize")}),this.alwaysEnabled=!0,this.value=null,this.handlers={select:function(e,t){d&&cancelAnimationFrame(d),e.data&&e.data.selected&&e.data.selected.length?p.opened()&&N():d=requestAnimationFrame(function(){p.opened()&&N()})},error:function(){p.window.is(":visible")&&p.window.trigger("close")},"searchshow searchhide":function(){this.opened()&&this.window.trigger("close")},navbarshow:function(){requestAnimationFrame(function(){p.docked()&&p.preview.trigger("changesize")})},destroy:function(){p.window.remove()}},this.shortcuts=[{pattern:"space"}],this.support={audio:{ogg:S("audio/ogg;"),webm:S("audio/webm;"),mp3:S("audio/mpeg;"),wav:S("audio/wav;"),m4a:S("audio/mp4;")||S("audio/x-m4a;")||S("audio/aac;"),flac:S("audio/flac;"),amr:S("audio/amr;")},video:{ogg:S("video/ogg;"),webm:S("video/webm;"),mp4:S("video/mp4;"),mkv:S("video/x-matroska;")||S("video/webm;"),"3gp":S("video/3gpp;")||S("video/mp4;"),m3u8:S("application/x-mpegURL","video")||S("application/vnd.apple.mpegURL","video"),mpd:S("application/dash+xml","video")}},A={},this.closed=function(){return b==h||b==v},this.opened=function(){return b==m||b==g},this.docked=function(){return b==g},this.addIntegration=function(e){requestAnimationFrame(function(){u.trigger("helpIntegration",Object.assign({cmd:"quicklook"},e))})},this.init=function(){var i,l=this.options,c=this.window,d=this.preview;t=l.width>0?parseInt(l.width):450,n=l.height>0?parseInt(l.height):300,"auto"!==l.dockHeight&&(s=parseInt(l.dockHeight),s||(s=void 0)),u.one("load",function(){O=u.getUI("navdock").data("dockEnabled"),!O&&X.hide(),a=u.getUI(),o=u.getUI("cwd"),u.zIndex&&c.css("z-index",u.zIndex+1),c.appendTo(a),e(document).on("keydown."+u.namespace,function(t){t.keyCode==e.ui.keyCode.ESCAPE&&p.opened()&&!p.docked()&&c.hasClass("elfinder-frontmost")&&c.trigger("close")}),c.resizable({handles:"se",minWidth:350,minHeight:120,resize:function(){d.trigger("changesize")}}),p.change(function(){p.opened()&&p.value&&(p.value.tmb&&1==p.value.tmb&&(p.value=Object.assign({},u.file(p.value.hash))),d.trigger(e.Event(y,{file:p.value})))}),d.on(y,function(e){var t,n,a;if(t=e.file){if(n=t.hash,a=u.searchStatus.mixed&&u.searchStatus.state>1,"directory"!==t.mime)if(parseInt(t.size)||t.mime.match(l.mimeRegexNotEmptyCheck)){if(p.dispInlineRegex=i,a||u.optionsByHashes[n])try{p.dispInlineRegex=new RegExp(u.option("dispInlineRegex",n),"i")}catch(e){try{p.dispInlineRegex=new RegExp(u.isRoot(t)?u.options.dispInlineRegex:u.option("dispInlineRegex",t.phash),"i")}catch(e){p.dispInlineRegex=/^$/}}}else e.stopImmediatePropagation();else p.dispInlineRegex=/^$/;p.info.show()}else e.stopImmediatePropagation()}),e.each(u.commands.quicklook.plugins||[],function(e,t){"function"==typeof t&&new t(p)})}).one("open",function(){var e,t=Number(u.storage("previewDocked")||l.docked);O&&t>=1&&(e=p.window,p.exec(),e.trigger("navdockin",{init:!0}),2===t?e.trigger("close"):(p.update(void 0,u.cwd()),p.change())),Y=!1}).bind("open",function(){r=u.cwd().hash,p.value=u.cwd();try{i=new RegExp(u.option("dispInlineRegex"),"i")}catch(e){i=/^$/}}).bind("change",function(t){t.data&&t.data.changed&&p.opened()&&e.each(t.data.changed,function(){if(p.window.data("hash")===this.hash)return p.window.data("hash",null),p.preview.trigger(y),!1})}).bind("navdockresizestart navdockresizestop",function(e){H["navdockresizestart"===e.type?"show":"hide"]()})},this.getstate=function(){return p.opened()?1:0},this.exec=function(){return p.closed()&&N(),p.enabled()&&p.window.trigger(p.opened()?"close":"open"),e.Deferred().resolve()},this.hideinfo=function(){this.info.stop(!0,!0).hide()}}).prototype={forceLoad:!0},i.prototype.commands.quicklook.plugins=[function(t){var n,i,a=["image/jpeg","image/png","image/gif","image/svg+xml","image/x-ms-bmp"],o=t.preview;n=new Image,n.onload=n.onerror=function(){2==n.height&&a.push("image/webp")},n.src="data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA",e.each(navigator.mimeTypes,function(t,n){var i=n.type;0===i.indexOf("image/")&&e.inArray(i,a)&&a.push(i)}),o.on(t.evUpdate,function(n){var r,s,l,c=t.fm,d=n.file,p=!1,u=null,h=function(e){var t=c.file(d.hash);t.width=e[0],t.height=e[1]},f=function(){var e,t,n,i,a;u&&u.state&&"pending"===u.state()&&u.reject(),p||(p=!0,e=s.get(0),t=d.width&&d.height?{w:d.width,h:d.height}:e.naturalWidth?null:{w:s.width(),h:s.height()},t&&s.removeAttr("width").removeAttr("height"),n=d.width||e.naturalWidth||e.width||s.width(),i=d.height||e.naturalHeight||e.height||s.height(),d.width&&d.height||h([n,i]),t&&s.width(t.w).height(t.h),a=(n/i).toFixed(2),o.on("changesize",function(){var e,t,n=parseInt(o.width()),i=parseInt(o.height());a<(n/i).toFixed(2)?(t=i,e=Math.floor(t*a)):(e=n,t=Math.floor(e/a)),s.width(e).height(t).css("margin-top",t<i?Math.floor((i-t)/2):0)}).trigger("changesize"),s.fadeIn(100))},m=function(){l.remove(),t.hideinfo()};i||(i=c.arrayFlip(a)),i[d.mime]&&t.dispInlineRegex.test(d.mime)&&(n.stopImmediatePropagation(),l=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+c.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),r=c.openUrl(d.hash),s=e("<img/>").hide().appendTo(o).on("load",function(){m(),f()}).on("error",function(){l.remove()}).attr("src",r),d.width&&d.height?f():d.size>(t.options.getDimThreshold||0)&&(u=c.request({data:{cmd:"dim",target:d.hash},preventDefault:!0}).done(function(e){if(e.dim){var t=e.dim.split("x");d.width=t[0],d.height=t[1],h(t),f()}})))})},function(t){var n,i=t.fm,a=i.arrayFlip(["image/vnd.adobe.photoshop","image/x-photoshop"]),o=t.preview,r=function(e,a,r){try{i.replaceXhrSend(),n.fromURL(e).then(function(e){var n;a.attr("src",e.image.toBase64()),requestAnimationFrame(function(){n=(a.width()/a.height()).toFixed(2),o.on("changesize",function(){var e,t,i=parseInt(o.width()),r=parseInt(o.height());n<(i/r).toFixed(2)?(t=r,e=Math.floor(t*n)):(e=i,t=Math.floor(e/n)),a.width(e).height(t).css("margin-top",t<r?Math.floor((r-t)/2):0)}).trigger("changesize"),r.remove(),t.hideinfo(),a.fadeIn(100)})},function(){r.remove(),a.remove()}),i.restoreXhrSend()}catch(s){i.restoreXhrSend(),r.remove(),a.remove()}};o.on(t.evUpdate,function(s){var l,c,d,p,u,h=s.file;a[h.mime]&&i.options.cdns.psd&&!i.UA.ltIE10&&t.dispInlineRegex.test(h.mime)&&(s.stopImmediatePropagation(),d=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+i.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),l=i.openUrl(h.hash),i.isSameOrigin(l)||(l=i.openUrl(h.hash,!0)),c=e("<img/>").hide().appendTo(o),n?r(l,c,d):(p=window.define,u=window.require,window.require=null,window.define=null,i.loadScript([i.options.cdns.psd],function(){n=require("psd"),p?window.define=p:delete window.define,u?window.require=u:delete window.require,r(l,c,d)})))})},function(t){var n=t.fm,i=n.arrayFlip(["text/html","application/xhtml+xml"]),a=t.preview;a.on(t.evUpdate,function(o){var r,s,l=o.file;i[l.mime]&&t.dispInlineRegex.test(l.mime)&&(!t.options.getSizeMax||l.size<=t.options.getSizeMax)&&(o.stopImmediatePropagation(),s=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),a.one("change",function(){"pending"==r.state()&&r.reject()}).addClass("elfinder-overflow-auto"),r=n.request({data:{cmd:"get",target:l.hash,conv:1,_t:l.ts},options:{type:"get",cache:!0},preventDefault:!0}).done(function(n){t.hideinfo();var i=e('<iframe class="elfinder-quicklook-preview-html"/>').appendTo(a)[0].contentWindow.document;i.open(),i.write(n.content),i.close()}).always(function(){s.remove()}))})},function(t){var n=t.fm,i=n.arrayFlip(["text/x-markdown"]),a=t.preview,o=null,r=function(n,i){t.hideinfo();var r=e('<iframe class="elfinder-quicklook-preview-html"/>').appendTo(a)[0].contentWindow.document;r.open(),r.write(o(n.content)),r.close(),i.remove()},s=function(e){o=!1,e.remove()};a.on(t.evUpdate,function(l){var c,d,p=l.file;i[p.mime]&&n.options.cdns.marked&&o!==!1&&t.dispInlineRegex.test(p.mime)&&(!t.options.getSizeMax||p.size<=t.options.getSizeMax)&&(l.stopImmediatePropagation(),d=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),a.one("change",function(){"pending"==c.state()&&c.reject()}).addClass("elfinder-overflow-auto"),c=n.request({data:{cmd:"get",target:p.hash,conv:1,_t:p.ts},options:{type:"get",cache:!0},preventDefault:!0}).done(function(e){o||window.marked?(o||(o=window.marked),r(e,d)):n.loadScript([n.options.cdns.marked],function(t){o=t||window.marked||!1,delete window.marked,o?r(e,d):s(d)},{tryRequire:!0,error:function(){s(d)}})}).fail(function(){s(d)}))})},function(t){if(t.options.viewerjs){var n=t.fm,i=t.preview,a=t.options.viewerjs,o=a.url?n.arrayFlip(a.mimes||[]):[];a.url&&i.on("update",function(r){var s,l,c=(t.window,r.file);if(o[c.mime]){var d=n.openUrl(c.hash);d&&n.isSameOrigin(d)&&(r.stopImmediatePropagation(),l=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),s=e('<iframe class="elfinder-quicklook-preview-iframe"/>').css("background-color","transparent").on("load",function(){t.hideinfo(),l.remove(),s.css("background-color","#fff")}).on("error",function(){l.remove(),s.remove()}).appendTo(i).attr("src",a.url+"#"+d),i.one("change",function(){l.remove(),s.off("load").remove()}))}})}},function(t){var n=t.fm,i="application/pdf",a=t.preview,o=!1,r="";n.UA.Safari&&"mac"===n.OS&&!n.UA.iOS||n.UA.IE||n.UA.Firefox?o=!0:e.each(navigator.plugins,function(t,n){e.each(n,function(e,t){if(t.type===i)return!(o=!0)})}),o&&("undefined"==typeof t.options.pdfToolbar||t.options.pdfToolbar||(r="#toolbar=0"),a.on(t.evUpdate,function(s){var l=s.file;o&&l.mime===i&&t.dispInlineRegex.test(l.mime)&&(s.stopImmediatePropagation(),t.hideinfo(),t.cover.addClass("elfinder-quicklook-coverbg"),e('<object class="elfinder-quicklook-preview-pdf" data="'+n.openUrl(l.hash)+r+'" type="application/pdf" />').on("error",function(e){o=!1,t.update(void 0,n.cwd()),t.update(void 0,l)}).appendTo(a))}))},function(t){var n=t.fm,i="application/x-shockwave-flash",a=t.preview,o=!1;e.each(navigator.plugins,function(t,n){e.each(n,function(e,t){if(t.type===i)return!(o=!0)})}),o&&a.on(t.evUpdate,function(o){var r,s=o.file;s.mime===i&&t.dispInlineRegex.test(s.mime)&&(o.stopImmediatePropagation(),t.hideinfo(),r=e('<embed class="elfinder-quicklook-preview-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+n.openUrl(s.hash)+'" quality="high" type="application/x-shockwave-flash" wmode="transparent" />').appendTo(a))})},function(t){var n,i,a,o,r=t.fm,s=t.preview,l={"audio/mpeg":"mp3","audio/mpeg3":"mp3","audio/mp3":"mp3","audio/x-mpeg3":"mp3","audio/x-mp3":"mp3","audio/x-wav":"wav","audio/wav":"wav","audio/x-m4a":"m4a","audio/aac":"m4a","audio/mp4":"m4a","audio/x-mp4":"m4a","audio/ogg":"ogg","audio/webm":"webm","audio/flac":"flac","audio/x-flac":"flac","audio/amr":"amr"},c=t.window,d=t.navbar,p="string"==typeof t.options.mediaControlsList&&t.options.mediaControlsList?' controlsList="'+r.escape(t.options.mediaControlsList)+'"':"",u=function(){d.css("bottom",c.hasClass("elfinder-quicklook-fullscreen")?"50px":"")},h=function(t,i){return e('<audio class="elfinder-quicklook-preview-audio ui-front" controls'+p+' preload="auto" autobuffer><source src="'+t+'" /></audio>').on("change",function(e){e.stopPropagation()}).on("error",function(e){n&&n.data("hash")===i&&g()}).data("hash",i).appendTo(s)},f=function(t){var n,i=e.Deferred(),o=e.Deferred().done(function(){r.getContents(t).done(function(e){try{var t=a.toWAV(new Uint8Array(e));t?i.resolve(URL.createObjectURL(new Blob([t],{type:"audio/x-wav"}))):i.reject()}catch(n){i.reject()}}).fail(function(){i.reject()})}).fail(function(){a=!1,i.reject()});return window.TextEncoder&&window.URL&&URL.createObjectURL&&"undefined"==typeof a?(n=window.AMR,delete window.AMR,r.loadScript([r.options.cdns.amr],function(){a=!!window.AMR&&window.AMR,window.AMR=n,o[a?"resolve":"reject"]()},{error:function(){o.reject()}})):o[a?"resolve":"reject"](),i},m=function(e){var t,i=n.data("hash");o&&(t=e.play()),t&&t["catch"]&&t["catch"](function(t){e.paused||n&&n.data("hash")===i&&g()})},g=function(){if(n&&n.parent().length){var e=n[0],t=n.children("source").attr("src");c.off("viewchange.audio");try{e.pause(),n.empty(),t.match(/^blob:/)&&URL.revokeObjectURL(t),e.src="",e.load()}catch(i){}n.remove(),n=null}};s.on(t.evUpdate,function(e){var s,d,p=e.file,g=l[p.mime];l[p.mime]&&t.dispInlineRegex.test(p.mime)&&((s=t.support.audio[g])||"amr"===g)&&(o=t.autoPlay(),i=p.hash,d=s?r.openUrl(i):"",s?(e.stopImmediatePropagation(),n=h(d,i),m(n[0]),c.on("viewchange.audio",u),u()):r.options.cdns.amr&&"amr"===g&&a!==!1&&(e.stopImmediatePropagation(),n=h(d,i),f(p.hash).done(function(e){if(i===p.hash){var t=n[0];try{n.children("source").attr("src",e),t.pause(),t.load(),m(t),c.on("viewchange.audio",u),u()}catch(a){URL.revokeObjectURL(e),n.remove()}}else URL.revokeObjectURL(e)}).fail(function(){n.remove()})))}).on("change",g)},function(t){var n,i,a,o,r,s,l,c=t.fm,d=t.preview,p={"video/mp4":"mp4","video/x-m4v":"mp4","video/quicktime":"mp4","video/ogg":"ogg","application/ogg":"ogg","video/webm":"webm","video/x-matroska":"mkv","video/3gpp":"3gp","application/vnd.apple.mpegurl":"m3u8","application/x-mpegurl":"m3u8","application/dash+xml":"mpd","video/x-flv":"flv"},u=t.window,h=t.navbar,f="string"==typeof t.options.mediaControlsList&&t.options.mediaControlsList?' controlsList="'+c.escape(t.options.mediaControlsList)+'"':"",m=function(){c.UA.iOS?u.hasClass("elfinder-quicklook-fullscreen")?(d.css("height","-webkit-calc(100% - 50px)"),h._show()):d.css("height",""):h.css("bottom",u.hasClass("elfinder-quicklook-fullscreen")?"50px":"")},g=function(i,a){var r,s=function(e){p>1&&(l&&clearTimeout(l),l=setTimeout(function(){!r&&x(!0)},800))},p=0;o=null,a=a||{},t.hideinfo(),n=e('<video class="elfinder-quicklook-preview-video" controls'+f+' preload="auto" autobuffer playsinline></video>').on("change",function(e){e.stopPropagation()}).on("timeupdate progress",s).on("canplay",function(){r=!0}).data("hash",i.hash),n[0].addEventListener("error",function(e){a.src&&c.convAbsUrl(a.src)===c.convAbsUrl(e.target.src)&&(++p,s())},!0),a.src&&n.append('<source src="'+a.src+'" type="'+i.mime+'"/><source src="'+a.src+'"/>'),n.appendTo(d),u.on("viewchange.video",m),m()},v=function(e){var t;g(e),t=new i,t.loadSource(c.openUrl(e.hash)),t.attachMedia(n[0]),s&&t.on(i.Events.MANIFEST_PARSED,function(){w(n[0])})},b=function(e){g(e),o=window.dashjs.MediaPlayer().create(),o.getDebug().setLogToBrowserConsole(!1),o.initialize(n[0],c.openUrl(e.hash),s),o.on("error",function(e){x(!0)})},y=function(e){if(!r.isSupported())return void(r=!1);var t=r.createPlayer({type:"flv",url:c.openUrl(e.hash)});g(e),t.on(r.Events.ERROR,function(){t.destroy(),x(!0)}),t.attachMediaElement(n[0]),t.load(),w(t)},w=function(e){var t,i=n.data("hash");s&&(t=e.play()),t&&t["catch"]&&t["catch"](function(t){e.paused||n&&n.data("hash")===i&&x(!0)})},x=function(e){if(l&&clearTimeout(l),n&&n.parent().length){var i=n[0];u.off("viewchange.video"),o&&o.reset();try{i.pause(),n.empty(),i.src="",i.load()}catch(a){}n.remove(),n=null}e&&t.info.show()};d.on(t.evUpdate,function(e){var o,l=e.file,d=l.mime.toLowerCase(),u=p[d];p[d]&&t.dispInlineRegex.test(l.mime)&&(("m3u8"===u||"mpd"===u&&!c.UA.iOS||"flv"===u)&&!c.UA.ltIE10||t.support.video[u])&&(s=t.autoPlay(),t.support.video[u]&&("m3u8"!==u||c.UA.Safari)?(e.stopImmediatePropagation(),g(l,{src:c.openUrl(l.hash)}),w(n[0])):i!==!1&&c.options.cdns.hls&&"m3u8"===u?(e.stopImmediatePropagation(),i?v(l):(o=window.Hls,delete window.Hls,c.loadScript([c.options.cdns.hls],function(e){i=e||window.Hls||!1,window.Hls=o,i&&v(l)},{tryRequire:!0,error:function(){i=!1}}))):a!==!1&&c.options.cdns.dash&&"mpd"===u?(e.stopImmediatePropagation(),a?b(l):c.loadScript([c.options.cdns.dash],function(){a=!!window.dashjs,a&&b(l)},{tryRequire:!0,error:function(){a=!1}})):r!==!1&&c.options.cdns.flv&&"flv"===u&&(e.stopImmediatePropagation(),r?y(l):(o=window.flvjs,delete window.flvjs,c.loadScript([c.options.cdns.flv],function(e){r=e||window.flvjs||!1,window.flvjs=o,r&&y(l)},{tryRequire:!0,error:function(){r=!1}}))))}).on("change",x)},function(t){var n,i=t.preview,a=[],o=t.window,r=t.navbar;e.each(navigator.plugins,function(t,n){e.each(n,function(e,t){(0===t.type.indexOf("audio/")||0===t.type.indexOf("video/"))&&a.push(t.type)})}),a=t.fm.arrayFlip(a),i.on(t.evUpdate,function(s){var l,c=s.file,d=c.mime,p=function(){r.css("bottom",o.hasClass("elfinder-quicklook-fullscreen")?"50px":"")};a[c.mime]&&t.dispInlineRegex.test(c.mime)&&(s.stopImmediatePropagation(),(l=0===d.indexOf("video/"))&&t.hideinfo(),n=e('<embed src="'+t.fm.openUrl(c.hash)+'" type="'+d+'" class="elfinder-quicklook-preview-'+(l?"video":"audio")+'"/>').appendTo(i),o.on("viewchange.embed",p),p())}).on("change",function(){n&&n.parent().length&&(o.off("viewchange.embed"),n.remove(),n=null)})},function(t){var n,i=t.fm,a=i.arrayFlip(["application/zip","application/x-gzip","application/x-tar"]),o=t.preview,r=function(){var e,t,n,a=[];for(this.Y(),n=this.i,e=0,t=n.length;e<t;++e)a[e]=n[e].filename+(n[e].J?" ("+i.formatSize(n[e].J)+")":"");return a},s=function(e){for(var t,n,a,o,r,s=[],l=e.length,c=0,d=function(e){return String.fromCharCode.apply(null,e).replace(/\0+$/,"")};c<l&&0!==e[c];)t=e.subarray(c,c+512),n=d(t.subarray(0,100)),(a=d(t.subarray(345,500)))&&(n=a+n),o=parseInt(d(t.subarray(124,136)),8),r=512*Math.ceil(o/512),"././@LongLink"===n&&(n=d(e.subarray(c+512,c+512+r))),"pax_global_header"!==n&&s.push(n+(o?" ("+i.formatSize(o)+")":"")),c=c+512+r;return s};window.Uint8Array&&window.DataView&&i.options.cdns.zlibUnzip&&i.options.cdns.zlibGunzip&&o.on(t.evUpdate,function(l){var c=l.file,d="application/x-tar"===c.mime;if(a[c.mime]&&(d||("undefined"==typeof n||n)&&("application/zip"===c.mime||"application/x-gzip"===c.mime))){var p,u,h,f,m=function(){h=i.openUrl(c.hash),i.isSameOrigin(h)||(h=i.openUrl(c.hash,!0)),p=i.request({data:{cmd:"get"},options:{url:h,type:"get",cache:!0,dataType:"binary",responseType:"arraybuffer",processData:!1}}).fail(function(){u.remove()}).done(function(e){var t,a;try{"application/zip"===c.mime?(t=new n.Unzip(new Uint8Array(e)),a=r.call(t)):"application/x-gzip"===c.mime?(t=new n.Gunzip(new Uint8Array(e)),a=s(t.decompress())):"application/x-tar"===c.mime&&(a=s(new Uint8Array(e))),g(a)}catch(o){u.remove(),i.debug("error",o)}})},g=function(n){var a,r;n&&n.length&&(n=e.map(n,function(e){return i.decodeRawString(e)}),n.sort(),u.remove(),a="<strong>"+i.escape(c.mime)+"</strong> ("+i.formatSize(c.size)+")<hr/>",r=e('<div class="elfinder-quicklook-preview-archive-wrapper">'+a+'<pre class="elfinder-quicklook-preview-text">'+i.escape(n.join("\n"))+"</pre></div>").on("touchstart",function(t){e(this)["scroll"+("ltr"===i.direction?"Right":"Left")]()>5&&(t.originalEvent._preventSwipeX=!0)}).appendTo(o),t.hideinfo())};l.stopImmediatePropagation(),u=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+i.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),o.one("change",function(){"pending"===p.state()&&p.reject(),u.remove()}),n?m():(window.Zlib&&(f=window.Zlib,delete window.Zlib),i.loadScript([i.options.cdns.zlibUnzip,i.options.cdns.zlibGunzip],function(){window.Zlib&&(n=window.Zlib)?(f?window.Zlib=f:delete window.Zlib,m()):error()}))}})},function(t){var n,i=t.fm,a=i.arrayFlip(["application/x-rar"]),o=t.preview;window.DataView&&o.on(t.evUpdate,function(r){var s=r.file;if(a[s.mime]&&i.options.cdns.rar&&n!==!1){var l,c,d,p,u,h=function(a){if(p)return void l.remove();try{d=n({file:a,type:2,xhrHeaders:i.customHeaders,xhrFields:i.xhrFields},function(n){l.remove();var a,r,c=[];return p||n?void(n&&i.debug("error",n)):(e.each(d.entries,function(){c.push(this.path+(this.size?" ("+i.formatSize(this.size)+")":""))}),void(c.length&&(c=e.map(c,function(e){return i.decodeRawString(e)}),c.sort(),a="<strong>"+i.escape(s.mime)+"</strong> ("+i.formatSize(s.size)+")<hr/>",r=e('<div class="elfinder-quicklook-preview-archive-wrapper">'+a+'<pre class="elfinder-quicklook-preview-text">'+i.escape(c.join("\n"))+"</pre></div>").on("touchstart",function(t){e(this)["scroll"+("ltr"===i.direction?"Right":"Left")]()>5&&(t.originalEvent._preventSwipeX=!0)}).appendTo(o),t.hideinfo())))})}catch(r){l.remove()}},f=function(){n=!1,l.remove()};r.stopImmediatePropagation(),l=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+i.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),o.one("change",function(){d&&(d.abort=!0),l.remove(),p=!0}),c=i.openUrl(s.hash),i.isSameOrigin(c)||(c=i.openUrl(s.hash,!0)),n?h(c):(window.RarArchive&&(u=window.RarArchive,delete window.RarArchive),i.loadScript([i.options.cdns.rar],function(){i.hasRequire?require(["rar"],function(e){n=e,h(c)},f):(n=window.RarArchive)?(u?window.RarArchive=u:delete window.RarArchive,h(c)):f()},{tryRequire:!0,error:f}))}})},function(t){var n,i=t.fm,a=i.arrayFlip(t.options.sharecadMimes||[]),o=t.preview;t.window;t.options.sharecadMimes.length&&t.addIntegration({title:"ShareCAD.org CAD and 3D-Models viewer",link:"https://sharecad.org/DWGOnlinePlugin"}),o.on(t.evUpdate,function(r){var s=r.file;if(a[s.mime.toLowerCase()]&&!i.option("onetimeUrl",s.hash)){var l,c;t.window;r.stopImmediatePropagation(),"1"==s.url&&(o.hide(),e('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+i.i18n("getLink")+"</button></div>").appendTo(t.info.find(".elfinder-quicklook-info")).on("click",function(){var n=e(this);n.html('<span class="elfinder-spinner">'),i.request({data:{cmd:"url",target:s.hash},preventDefault:!0}).always(function(){n.html("")}).done(function(e){var n=i.file(s.hash);s.url=n.url=e.url||"",s.url&&o.trigger({type:t.evUpdate,file:s,forceUpdate:!0})})})),""!==s.url&&"1"!=s.url&&(o.one("change",function(){l.remove(),n.off("load").remove(),n=null}).addClass("elfinder-overflow-auto"),l=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+i.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),c=i.convAbsUrl(i.url(s.hash)),n=e('<iframe class="elfinder-quicklook-preview-iframe" scrolling="no"/>').css("background-color","transparent").appendTo(o).on("load",function(){t.hideinfo(),l.remove(),t.preview.after(t.info),e(this).css("background-color","#fff").show()}).on("error",function(){l.remove(),t.preview.after(t.info)}).attr("src","//sharecad.org/cadframe/load?url="+encodeURIComponent(c)),t.info.after(t.preview))}})},function(t){var n,i,a,o,r,s=t.fm,l={"application/vnd.google-earth.kml+xml":!0,
"application/vnd.google-earth.kmz":!0},c=t.preview;t.options.googleMapsApiKey&&(t.addIntegration({title:"Google Maps",link:"https://www.google.com/intl/"+s.lang.replace("_","-")+"/help/terms_maps.html"}),n=window.google&&google.maps,i=function(e,i){var a=t.options.googleMapsOpts.maps;s.forExternalUrl(e.hash).done(function(e){if(e)try{new n.KmlLayer(e,Object.assign({map:new n.Map(i.get(0),a)},t.options.googleMapsOpts.kml)),t.hideinfo()}catch(r){o()}else o()})},a=window.gm_authFailure,o=function(){r=null},r="https://maps.googleapis.com/maps/api/js?key="+t.options.googleMapsApiKey,window.gm_authFailure=function(){o(),a&&a()},c.on(t.evUpdate,function(a){var o=a.file;if(r&&l[o.mime.toLowerCase()]){var d,p=(t.window,"1"==o.url&&!s.option("onetimeUrl",o.hash));a.stopImmediatePropagation(),p&&(c.hide(),e('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+s.i18n("getLink")+"</button></div>").appendTo(t.info.find(".elfinder-quicklook-info")).on("click",function(){var n=e(this);n.html('<span class="elfinder-spinner">'),s.request({data:{cmd:"url",target:o.hash},preventDefault:!0}).always(function(){n.html("")}).done(function(e){var n=s.file(o.hash);o.url=n.url=e.url||"",o.url&&c.trigger({type:t.evUpdate,file:o,forceUpdate:!0})})})),""===o.url||p||(d=e('<div style="width:100%;height:100%;"/>').appendTo(c),c.one("change",function(){d.remove(),d=null}),n?i(o,d):s.loadScript([r],function(){n=window.google&&google.maps,n&&i(o,d)}))}}))},function(t){var n,i,a=t.fm,o=Object.assign(a.arrayFlip(t.options.googleDocsMimes||[],"g"),a.arrayFlip(t.options.officeOnlineMimes||[],"m")),r=t.preview,s=(t.window,t.navbar),l={g:"docs.google.com/gview?embedded=true&url=",m:"view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src="},c={g:"56px",m:"24px"},d={xls:5242880,xlsb:5242880,xlsx:5242880,xlsm:5242880,other:10485760};t.options.googleDocsMimes.length&&(i=!0,t.addIntegration({title:"Google Docs Viewer",link:"https://docs.google.com/"})),t.options.officeOnlineMimes.length&&(i=!0,t.addIntegration({title:"MS Online Doc Viewer",link:"https://products.office.com/office-online/view-office-documents-online"})),i&&r.on(t.evUpdate,function(i){var p,u=i.file;if(u.size<=26214400&&(p=o[u.mime])){var h,f=t.window,m=function(){s.css("bottom",f.hasClass("elfinder-quicklook-fullscreen")?c[p]:"")},g=a.mimeTypes[u.mime],v="1"==u.url&&!a.option("onetimeUrl",u.hash);"m"===p&&(d[g]&&u.size>d[g]||u.size>d.other)&&(p="g"),v&&(r.hide(),e('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+a.i18n("getLink")+"</button></div>").appendTo(t.info.find(".elfinder-quicklook-info")).on("click",function(){var n=e(this);n.html('<span class="elfinder-spinner">'),a.request({data:{cmd:"url",target:u.hash},preventDefault:!0}).always(function(){n.html("")}).done(function(e){var n=a.file(u.hash);u.url=n.url=e.url||"",u.url&&r.trigger({type:t.evUpdate,file:u,forceUpdate:!0})})})),""===u.url||v||(i.stopImmediatePropagation(),r.one("change",function(){f.off("viewchange.googledocs"),h.remove(),n.off("load").remove(),n=null}).addClass("elfinder-overflow-auto"),h=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+a.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),n=e('<iframe class="elfinder-quicklook-preview-iframe"/>').css("background-color","transparent").appendTo(r),a.forExternalUrl(u.hash).done(function(i){i?(u.ts&&(i+=(i.match(/\?/)?"&":"?")+"_t="+u.ts),n.on("load",function(){t.hideinfo(),h.remove(),t.preview.after(t.info),e(this).css("background-color","#fff").show()}).on("error",function(){h.remove(),t.preview.after(t.info)}).attr("src","https://"+l[p]+encodeURIComponent(i))):(h.remove(),n.remove())}),f.on("viewchange.googledocs",m),m(),t.info.after(t.preview))}})},function(t){var n=t.fm,i=t.preview,a=parseInt(t.options.textMaxlen)||2e3,o=function(){n.options.cdns.prettify?(n.loadScript([n.options.cdns.prettify+(n.options.cdns.prettify.match(/\?/)?"&":"?")+"autorun=false"]),o=function(){return!0}):o=function(){return!1}},r=function(e,t){o()&&("undefined"==typeof window.PR&&t--?setTimeout(function(){r(e,t)},100):"object"==typeof window.PR?(e.css("cursor","wait"),requestAnimationFrame(function(){PR.prettyPrint&&PR.prettyPrint(null,e.get(0)),e.css("cursor","")})):o=function(){return!1})};i.on(t.evUpdate,function(s){var l,c,d=s.file;d.mime;n.mimeIsText(d.mime)&&(!t.options.getSizeMax||d.size<=t.options.getSizeMax)&&(s.stopImmediatePropagation(),"undefined"==typeof window.PR&&o(),c=e('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+n.i18n("nowLoading")+'</span><span class="elfinder-spinner"/></div>').appendTo(t.info.find(".elfinder-quicklook-info")),i.one("change",function(){"pending"==l.state()&&l.reject()}),l=n.request({data:{cmd:"get",target:d.hash,conv:1,_t:d.ts},options:{type:"get",cache:!0},preventDefault:!0}).done(function(o){var s,l,c,p,u=new RegExp("^(data:"+d.mime.replace(/([.+])/g,"\\$1")+";base64,)","i"),h=o.content;t.hideinfo(),window.atob&&(p=h.match(u))&&(h=atob(h.substr(p[1].length))),l=h.length-a,l>100?s=h.substr(0,a)+"...":l=0,c=e('<div class="elfinder-quicklook-preview-text-wrapper"><pre class="elfinder-quicklook-preview-text prettyprint"></pre></div>'),l&&c.append(e('<div class="elfinder-quicklook-preview-charsleft"><hr/><span>'+n.i18n("charsLeft",n.toLocaleString(l))+"</span></div>").on("click",function(){var t=c.scrollTop();e(this).remove(),c.children("pre").removeClass("prettyprinted").text(h).scrollTop(t),r(c,100)})),c.children("pre").text(s||h),c.on("touchstart",function(t){e(this)["scroll"+("ltr"===n.direction?"Right":"Left")]()>5&&(t.originalEvent._preventSwipeX=!0)}).appendTo(i),r(c,100)}).always(function(){c.remove()}))})}],(i.prototype.commands.reload=function(){"use strict";var t=this,n=!1;this.alwaysEnabled=!0,this.updateOnSelect=!0,this.shortcuts=[{pattern:"ctrl+shift+r f5"}],this.getstate=function(){return 0},this.init=function(){this.fm.bind("search searchend",function(){n="search"==this.type})},this.fm.bind("contextmenu",function(){var n=t.fm;n.options.sync>=1e3&&(t.extra={icon:"accept",node:e("<span/>").attr({title:n.i18n("autoSync")}).on("click touchstart",function(t){"touchstart"===t.type&&t.originalEvent.touches.length>1||(t.stopPropagation(),t.preventDefault(),e(this).parent().toggleClass("ui-state-disabled",n.options.syncStart).parent().removeClass("ui-state-hover"),n.options.syncStart=!n.options.syncStart,n.autoSync(n.options.syncStart?null:"stop"))}).on("ready",function(){e(this).parent().toggleClass("ui-state-disabled",!n.options.syncStart).css("pointer-events","auto")})})}),this.exec=function(){var t=this.fm;if(!n){var i=t.sync(),a=setTimeout(function(){t.notify({type:"reload",cnt:1,hideCnt:!0}),i.always(function(){t.notify({type:"reload",cnt:-1})})},t.notifyDelay);return i.always(function(){clearTimeout(a),t.trigger("reload")})}e("div.elfinder-toolbar > div."+t.res("class","searchbtn")+" > span.ui-icon-search").click()}}).prototype={forceLoad:!0},i.prototype.commands.rename=function(){"use strict";this.alwaysEnabled=!0,this.syncTitleOnChange=!0;var t=this,n=t.fm,i=function(t,i,a,o){var r,s=i?[a.hash].concat(i):[a.hash],l=s.length,c={};if(n.lockfiles({files:s}),n.isRoot(a)){if((r=n.storage("rootNames"))||(r={}),""===o){if(!r[a.hash])return t&&t.reject(),void n.unlockfiles({files:s}).trigger("selectfiles",{files:s});a.name=a._name,a.i18=a._i18,delete r[a.hash],delete a._name,delete a._i18}else"undefined"==typeof a._name&&(a._name=a.name,a._i18=a.i18),a.name=r[a.hash]=o,delete a.i18;return n.storage("rootNames",r),c={changed:[a]},n.updateCache(c),n.change(c),t&&t.resolve(c),void n.unlockfiles({files:s}).trigger("selectfiles",{files:s})}c={cmd:"rename",name:o,target:a.hash},l>1&&(c.targets=i,o.match(/\*/)&&(c.q=o)),n.request({data:c,notify:{type:"rename",cnt:l},navigate:{}}).fail(function(e){var i=n.parseError(e);t&&t.reject(),i&&Array.isArray(i)&&"errRename"===i[0]||n.sync()}).done(function(i){var r;i.added&&i.added.length&&1===l&&(i.undo={cmd:"rename",callback:function(){return n.request({data:{cmd:"rename",target:i.added[0].hash,name:a.name},notify:{type:"undo",cnt:1}})}},i.redo={cmd:"rename",callback:function(){return n.request({data:{cmd:"rename",target:a.hash,name:o},notify:{type:"rename",cnt:1}})}}),t&&t.resolve(i),(r=n.cwd().hash)&&r!==a.hash||n.exec("open",e.map(i.added,function(e){return"directory"===e.mime?e.hash:null})[0])}).always(function(){n.unlockfiles({files:s}).trigger("selectfiles",{files:s})})},a=function(e,t){var i,a,o,r=t||n.selected(),s=n.splitFileExtention(e),l=n.file(r[0]),c=n.file(r[1]);return i=s[1]?"."+s[1]:"",s[1]&&"*"===s[0]?(a='"'+n.splitFileExtention(l.name)[0]+i+'", ',a+='"'+n.splitFileExtention(c.name)[0]+i+'"'):s[0].length>1&&("*"===s[0].substr(-1)?(o=s[0].substr(0,s[0].length-1),a='"'+o+l.name+'", ',a+='"'+o+c.name+'"'):"*"===s[0].substr(0,1)&&(o=s[0].substr(1),a='"'+n.splitFileExtention(l.name)[0]+o+i+'", ',a+='"'+n.splitFileExtention(c.name)[0]+o+i+'"')),a||(a='"'+s[0]+"1"+i+'", "'+s[0]+"2"+i+'"'),r.length>2&&(a+=" ..."),a},o=function(){var o,r=n.selected(),s='<input name="type" type="radio" class="elfinder-tabstop">',l=function(t,i){return e('<label class="elfinder-rename-batch-checks">'+n.i18n(i)+"</label>").prepend(t)},c=e('<input type="text" class="ui-corner-all elfinder-tabstop">'),d=e(s),p=e(s),u=e(s),h=e(s),f=e("<div/>").append(l(d,"plusNumber"),l(p,"asPrefix"),l(u,"asSuffix"),l(h,"changeExtention")),m=e('<div class="elfinder-rename-batch-preview"/>'),g=e('<div class="elfinder-rename-batch"/>').append(e('<div class="elfinder-rename-batch-name"/>').append(c),e('<div class="elfinder-rename-batch-type"/>').append(f),m),v={title:n.i18n("batchRename"),modal:!0,destroyOnClose:!0,width:Math.min(380,n.getUI().width()-20),buttons:{},open:function(){c.on("input",y).trigger("focus")}},b=function(){var e=c.val(),t=n.splitFileExtention(n.file(r[0]).name)[1];return(""!==e||d.is(":checked"))&&(p.is(":checked")?e+="*":u.is(":checked")?e="*"+e+"."+t:h.is(":checked")?e="*."+e:t&&(e+="."+t)),e},y=function(){var e=b();""!==e?m.html(n.i18n(["renameMultiple",r.length,a(e)])):m.empty()},w=f.find("input:radio").on("change",y);v.buttons[n.i18n("btnApply")]=function(){var e,t,a=b();""!==a&&(o.elfinderdialog("close"),t=r,e=n.file(t.shift()),i(void 0,t,e,a))},v.buttons[n.i18n("btnCancel")]=function(){o.elfinderdialog("close")},e.fn.checkboxradio?w.checkboxradio({create:function(e,t){this===d.get(0)&&d.prop("checked",!0).change()}}):f.buttonset({create:function(e,t){d.prop("checked",!0).change()}}),o=t.fmDialog(g,v)};this.noChangeDirOnRemovedCwd=!0,this.shortcuts=[{pattern:"f2"+("mac"==n.OS?" enter":"")},{pattern:"shift+f2",description:"batchRename",callback:function(){n.selected().length>1&&o()}}],this.getstate=function(i){var a,r,s,l,c,d,p=this.files(i),u=p.length;return u?(u>1&&p[0].phash&&(a=p[0].phash,r=n.splitFileExtention(p[0].name)[1].toLowerCase(),s=p[0].mime),1===u&&(d=n.isRoot(p[0])),c=1===u&&(d||!p[0].locked)||n.api>2.103&&u===e.grep(p,function(e){return!(l||e.locked||e.phash!==a||n.isRoot(e)||s!==e.mime&&r!==n.splitFileExtention(e.name)[1].toLowerCase())||(l&&(l=!0),!1)}).length?0:-1,!d&&0===c&&n.option("disabledFlip",p[0].hash).rename&&(c=-1),c!==-1&&u>1?t.extra={icon:"preference",node:e("<span/>").attr({title:n.i18n("batchRename")}).on("click touchstart",function(e){"touchstart"===e.type&&e.originalEvent.touches.length>1||(e.stopPropagation(),e.preventDefault(),n.getUI().trigger("click"),o())})}:delete t.extra,c):-1},this.exec=function(t,o){var r,s=(n.getUI("cwd"),t||!!n.selected().length&&n.selected()||[n.cwd().hash]),l=s.length,c=n.file(s.shift()),d=".elfinder-cwd-filename",p=o||{},u=n.cwd().hash==c.hash,h="navbar"===p._currentType||"files"===p._currentType?p._currentType:u?"navbar":"files",f="files"!==h,m=n[f?"navHash2Elm":"cwdHash2Elm"](c.hash),g=!f&&"list"!=n.storage("view"),v=function(){requestAnimationFrame(function(){x&&x.trigger("blur")})},b=function(){T.is(":hidden")||T.elfinderoverlay("hide").off("click close",A),z.removeClass("ui-front").css("position","").off("unselect."+n.namespace,v),g?C&&C.css("max-height",""):f||z.css("width","").parent("td").css("overflow","")},y=e.Deferred().fail(function(e){var t=x.parent(),i=n.escape(c.i18||c.name);x.off(),g&&(i=i.replace(/([_.])/g,"&#8203;$1")),requestAnimationFrame(function(){f?x.replaceWith(i):t.length?(x.remove(),t.html(i)):m.find(d).html(i)}),e&&n.error(e)}).always(function(){b(),n.unbind("resize",S),n.enable()}),w=function(t){var o=e.trim(x.val()),r=(n.splitFileExtention(o),!0),d=function(){x.off(),b(),f?x.replaceWith(n.escape(o)):C.html(n.escape(o)),i(y,s,c,o)};if(T.is(":hidden")||z.css("z-index",""),""===o){if(!n.isRoot(c))return A();f?x.replaceWith(n.escape(c.name)):C.html(n.escape(c.name))}if(!I&&z.length){if(x.off("blur"),1===l&&o===c.name)return y.reject();if(n.options.validName&&n.options.validName.test)try{r=n.options.validName.test(o)}catch(t){r=!1}if("."===o||".."===o||!r)return I=!0,n.error("directory"===c.mime?"errInvDirname":"errInvName",{modal:!0,close:function(){setTimeout(k,120)}}),!1;if(1===l&&n.fileByName(o,c.phash))return I=!0,n.error(["errExists",o],{modal:!0,close:function(){setTimeout(k,120)}}),!1;1===l?d():(n.confirm({title:"cmdrename",text:["renameMultiple",l,a(o,[c.hash].concat(s))],accept:{label:"btnYes",callback:d},cancel:{label:"btnCancel",callback:function(){setTimeout(function(){I=!0,k()},120)}}}),setTimeout(function(){n.trigger("unselectfiles",{files:n.selected()}).trigger("selectfiles",{files:[c.hash].concat(s)})},120))}},x=e(g?"<textarea/>":'<input type="text"/>').on("keyup text",function(){g?(this.style.height="1px",this.style.height=this.scrollHeight+"px"):r&&(this.style.width=r+"px",this.scrollWidth>r&&(this.style.width=this.scrollWidth+10+"px"))}).on("keydown",function(t){t.stopImmediatePropagation(),t.keyCode==e.ui.keyCode.ESCAPE?y.reject():t.keyCode==e.ui.keyCode.ENTER&&(t.preventDefault(),x.trigger("blur"))}).on("mousedown click dblclick",function(e){e.stopPropagation(),"dblclick"===e.type&&e.preventDefault()}).on("blur",w).on("dragenter dragleave dragover drop",function(e){e.stopPropagation()}),k=function(){var e=n.splitFileExtention(x.val())[0];I||!n.UA.Mobile||n.UA.iOS||(T.on("click close",A).elfinderoverlay("show"),z.css("z-index",T.css("z-index")+1)),!n.enabled()&&n.enable(),I&&(I=!1,x.on("blur",w)),x.trigger("focus").trigger("select"),x[0].setSelectionRange&&x[0].setSelectionRange(0,e.length)},C=f?m.contents().filter(function(){return 3==this.nodeType&&e(this).parent().attr("id")===n.navHash2Id(c.hash)}):m.find(d),z=C.parent(),T=n.getUI("overlay"),A=function(e){T.is(":hidden")||z.css("z-index",""),I||(y.reject(),e&&(e.stopPropagation(),e.preventDefault()))},S=function(){m.trigger("scrolltoview",{blink:!1})},I=!1;return z.addClass("ui-front").css("position","relative").on("unselect."+n.namespace,v),n.bind("resize",S),f?C.replaceWith(x.val(c.name)):(g?C.css("max-height","none"):f||(r=z.width(),z.width(r-15).parent("td").css("overflow","visible")),C.empty().append(x.val(c.name))),l>1&&n.api<=2.103?y.reject():c&&C.length?c.locked&&!n.isRoot(c)?y.reject(["errLocked",c.name]):(n.one("select",function(){x.parent().length&&c&&e.inArray(c.hash,n.selected())===-1&&x.trigger("blur")}),x.trigger("keyup"),k(),y):y.reject("errCmdParams",this.title)},n.bind("select contextmenucreate closecontextmenu",function(e){var i,a=(e.data?e.data.selected||e.data.targets:null)||n.selected();a&&1===a.length&&(i=n.file(a[0]))&&n.isRoot(i)?t.title=n.i18n("kindAlias")+" ("+n.i18n("preference")+")":t.title=n.i18n("cmdrename"),"closecontextmenu"!==e.type?t.update(void 0,t.title):requestAnimationFrame(function(){t.update(void 0,t.title)})}).remove(function(t){var i;t.data&&t.data.removed&&(i=n.storage("rootNames"))&&(e.each(t.data.removed,function(e,t){i[t]&&delete i[t]}),n.storage("rootNames",i))})},i.prototype.commands.resize=function(){"use strict";var t=0,n=function(t,n,i){var a=[{x:t/2,y:n/2},{x:-t/2,y:n/2},{x:-t/2,y:-n/2},{x:t/2,y:-n/2}],o=[],r={x:Number.MAX_VALUE,y:Number.MAX_VALUE},s={x:Number.MIN_VALUE,y:Number.MIN_VALUE};return e.each(a,function(e,t){o.push({x:t.x*Math.cos(i)-t.y*Math.sin(i),y:t.x*Math.sin(i)+t.y*Math.cos(i)})}),e.each(o,function(e,t){r.x=Math.min(r.x,t.x),r.y=Math.min(r.y,t.y),s.x=Math.max(s.x,t.x),s.y=Math.max(s.y,t.y)}),{width:s.x-r.x,height:s.y-r.y}};this.updateOnSelect=!1,this.getstate=function(){var e=this.fm.selectedFiles();return 1==e.length&&e[0].read&&e[0].write&&e[0].mime.indexOf("image/")!==-1?0:-1},this.resizeRequest=function(t,n,i){var a=this.fm,o=n||a.file(t.target),r=(o?o.tmb:null,a.isCommandEnabled("resize",t.target));if(r&&(!o||o&&o.read&&o.write&&o.mime.indexOf("image/")!==-1))return a.request({data:Object.assign(t,{cmd:"resize"}),notify:{type:"resize",cnt:1}}).fail(function(e){i&&i.reject(e)}).done(function(){t.quality&&a.storage("jpgQuality",t.quality===a.option("jpgQuality")?null:t.quality),i&&i.resolve()});var s;return s=o?o.mime.indexOf("image/")===-1?["errResize",o.name,"errUsupportType"]:["errResize",o.name,"errPerm"]:["errResize",t.target,"errPerm"],i?i.reject(s):a.error(s),e.Deferred().reject(s)},this.exec=function(i){var a,o,r=this,s=this.fm,l=this.files(i),c=e.Deferred(),d=s.api>1,p=this.options,u=650,h=s.getUI(),f=e().controlgroup?"controlgroup":"buttonset",m="undefined"==typeof p.grid8px||"disable"!==p.grid8px,g=Array.isArray(p.presetSize)?p.presetSize:[],v="elfinder-dialog-active",b=s.res("class","editing"),y=function(i,a){var o,l,y,w,x,k="image/jpeg"===i.mime,C=e('<div class="elfinder-resize-container"/>'),z='<input type="number" class="ui-corner-all"/>',T='<div class="elfinder-resize-row"/>',A='<div class="elfinder-resize-label"/>',S=null,I=!1,O=function(){I=!0},j=function(){I&&(I=!1,M.trigger("change"))},M=e('<div class="elfinder-resize-control"/>').on("focus","input[type=text],input[type=number]",function(){e(this).trigger("select")}).on("change",function(){S&&cancelAnimationFrame(S),S=requestAnimationFrame(function(){var e,t,i,a,o,r,l,c,d,p,u,h;nt&&!I&&(i=nt.data("canvas"))&&(e=M.children("div.elfinder-resize-control-panel:visible"),t=e.find("input.elfinder-resize-quality"),t.is(":visible")&&(a=nt.data("ctx"),o=nt.get(0),e.hasClass("elfinder-resize-uiresize")?(c=i.width=jQuery.val(),d=i.height=K.val(),a.drawImage(o,0,0,c,d)):e.hasClass("elfinder-resize-uicrop")?(r=V.val(),l=X.val(),c=G.val(),d=J.val(),i.width=c,i.height=d,a.drawImage(o,r,l,c,d,0,0,c,d)):(p=Q.val(),u=Q.val()*Math.PI/180,h=n(pe,ue,u),c=i.width=h.width,d=i.height=h.height,a.save(),p%90!==0&&(a.fillStyle=se.val()||"#FFF",a.fillRect(0,0,c,d)),a.translate(c/2,d/2),a.rotate(u),a.drawImage(o,-o.width/2,-o.height/2,pe,ue),a.restore()),i.toBlob(function(e){e&&t.next("span").text(" ("+s.formatSize(e.size)+")")},"image/jpeg",Math.max(Math.min(t.val(),100),1)/100)))})}).on("mouseup","input",function(t){e(t.target).trigger("change")}),D=e('<div class="elfinder-resize-preview"/>').on("touchmove",function(t){e(t.target).hasClass("touch-punch")&&(t.stopPropagation(),t.preventDefault())}),F=e('<div class="elfinder-resize-loading">'+s.i18n("ntfloadimg")+"</div>"),E=e('<div class="elfinder-resize-handle touch-punch"/>'),U=e('<div class="elfinder-resize-handle touch-punch"/>'),P=e('<div class="elfinder-resize-uiresize elfinder-resize-control-panel"/>'),R=e('<div class="elfinder-resize-uicrop elfinder-resize-control-panel"/>'),q=e('<div class="elfinder-resize-rotate elfinder-resize-control-panel"/>'),H=e("<button/>").attr("title",s.i18n("rotate-cw")).append(e('<span class="elfinder-button-icon elfinder-button-icon-rotate-l"/>')),_=e("<button/>").attr("title",s.i18n("rotate-ccw")).append(e('<span class="elfinder-button-icon elfinder-button-icon-rotate-r"/>')),N=e("<span />"),L=e('<button class="elfinder-resize-reset">').text(s.i18n("reset")).on("click",function(){_e()}).button({icons:{primary:"ui-icon-arrowrefresh-1-n"},text:!1}),W=e('<div class="elfinder-resize-type"/>').append('<input type="radio" name="type" id="'+a+'-resize" value="resize" checked="checked" /><label for="'+a+'-resize">'+s.i18n("resize")+"</label>",'<input class="api2" type="radio" name="type" id="'+a+'-crop" value="crop" /><label class="api2" for="'+a+'-crop">'+s.i18n("crop")+"</label>",'<input class="api2" type="radio" name="type" id="'+a+'-rotate" value="rotate" /><label class="api2" for="'+a+'-rotate">'+s.i18n("rotate")+"</label>"),B="resize",$=(W[f]()[f]("disable").find("input").on("change",function(){B=e(this).val(),_e(),Be(!0),$e(!0),Ke(!0),"resize"==B?(P.show(),q.hide(),R.hide(),Be(),k&&Ce.insertAfter(P.find(".elfinder-resize-grid8"))):"crop"==B?(q.hide(),P.hide(),R.show(),$e(),k&&Ce.insertAfter(R.find(".elfinder-resize-grid8"))):"rotate"==B&&(P.hide(),R.hide(),q.show(),Ke())}),e(z).on("change",function(){var e=He(parseInt(jQuery.val())),t=He(he?e/ce:parseInt(K.val()));e>0&&t>0&&(Ne.updateView(e,t),jQuery.val(e),K.val(t))}).addClass("elfinder-focus")),K=e(z).on("change",function(){var e=He(parseInt(K.val())),t=He(he?e*ce:parseInt(jQuery.val()));t>0&&e>0&&(Ne.updateView(t,e),jQuery.val(t),K.val(e))}),V=e(z).on("change",function(){Le.updateView()}),X=e(z).on("change",function(){Le.updateView()}),G=e(z).on("change",function(){Le.updateView("w")}),J=e(z).on("change",function(){Le.updateView("h")}),Y=k&&d?e(z).val(s.storage("jpgQuality")>0?s.storage("jpgQuality"):s.option("jpgQuality")).addClass("elfinder-resize-quality").attr("min","1").attr("max","100").attr("title","1 - 100").on("blur",function(){var e=Math.min(100,Math.max(1,parseInt(this.value)));M.find("input.elfinder-resize-quality").val(e)}):null,Q=e('<input type="number" class="ui-corner-all" maxlength="3" value="0" />').on("change",function(){We.update()}),Z=e('<div class="elfinder-resize-rotate-slider touch-punch"/>').slider({min:0,max:360,value:Q.val(),animate:!0,start:O,stop:j,change:function(e,t){t.value!=Z.slider("value")&&We.update(t.value)},slide:function(e,t){We.update(t.value,!1)}}).find(".ui-slider-handle").addClass("elfinder-tabstop").off("keydown").on("keydown",function(t){t.keyCode!=e.ui.keyCode.LEFT&&t.keyCode!=e.ui.keyCode.RIGHT||(t.stopPropagation(),t.preventDefault(),We.update(Number(Q.val())+(t.keyCode==e.ui.keyCode.RIGHT?1:-1),!1))}).end(),ee={},te=function(e){var t,n,i,a,o,r,s;try{t=ee[Math.round(e.offsetX)][Math.round(e.offsetY)]}catch(e){}t&&(n=t[0],i=t[1],a=t[2],o=t[3],r=t[4],s=t[5],ie(n,i,a,"click"===e.type))},ne=function(t){ie(e(this).css("backgroundColor"),"","","click"===t.type)},ie=function(t,n,i,a){var o,r,s;"string"==typeof t&&(n="",t&&(o=e("<span>").css("backgroundColor",t).css("backgroundColor"))&&(r=o.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i))&&(t=Number(r[1]),n=Number(r[2]),i=Number(r[3]))),s=""===n?t:"#"+ae(t,n,i),se.val(s).css({backgroundColor:s,backgroundImage:"none",color:t+n+i<384?"#fff":"#000"}),D.css("backgroundColor",s),a&&(qe.off(".picker").removeClass("elfinder-resize-picking"),le.off(".picker").removeClass("elfinder-resize-picking"))},ae=function(t,n,i){return e.map([t,n,i],function(e){return("0"+parseInt(e).toString(16)).slice(-2)}).join("")},oe=e("<button>").text(s.i18n("colorPicker")).on("click",function(){qe.on("mousemove.picker click.picker",te).addClass("elfinder-resize-picking"),le.on("mousemove.picker click.picker","span",ne).addClass("elfinder-resize-picking")}).button({icons:{primary:"ui-icon-pin-s"},text:!1}),re=e("<button>").text(s.i18n("reset")).on("click",function(){ie("","","",!0)}).button({icons:{primary:"ui-icon-arrowrefresh-1-n"},text:!1}),se=e('<input class="ui-corner-all elfinder-resize-bg" type="text">').on("focus",function(){e(this).attr("style","")}).on("blur",function(){ie(e(this).val())}),le=e('<div class="elfinder-resize-pallet">').on("click","span",function(){ie(e(this).css("backgroundColor"))}),ce=1,de=1,pe=0,ue=0,he=!0,fe=!1,me=0,ge=0,ve=0,be=0,ye=0,we=!!k&&m,xe=e("<button>").html(s.i18n("aspectRatio")).on("click",function(){he=!he,xe.button("option",{icons:{primary:he?"ui-icon-locked":"ui-icon-unlocked"}}),Ne.fixHeight(),E.resizable("option","aspectRatio",he).data("uiResizable")._aspectRatio=he}).button({icons:{primary:he?"ui-icon-locked":"ui-icon-unlocked"},text:!1}),ke=e("<button>").html(s.i18n("aspectRatio")).on("click",function(){fe=!fe,ke.button("option",{icons:{primary:fe?"ui-icon-locked":"ui-icon-unlocked"}}),U.resizable("option","aspectRatio",fe).data("uiResizable")._aspectRatio=fe}).button({icons:{primary:fe?"ui-icon-locked":"ui-icon-unlocked"},text:!1}),Ce=e("<button>").html(s.i18n(we?"enabled":"disabled")).toggleClass("ui-state-active",we).on("click",function(){we=!we,Ce.html(s.i18n(we?"enabled":"disabled")).toggleClass("ui-state-active",we),ze()}).button(),ze=function(){var t=we?8:1;e.each([$,K,G,J,V,X],function(){this.attr("step",t)}),we&&(jQuery.val(He(jQuery.val())),K.val(He(K.val())),G.val(He(G.val())),J.val(He(J.val())),V.val(He(V.val())),X.val(He(X.val())),P.is(":visible")?Ne.updateView(jQuery.val(),K.val()):R.is(":visible")&&Le.updateView())},Te=function(){var t,n=function(){se.parent().hide(),le.hide()};t=Math.min(me,ge)/Math.sqrt(Math.pow(pe,2)+Math.pow(ue,2)),ve=Math.ceil(pe*t),be=Math.ceil(ue*t),qe.width(ve).height(be).css("margin-top",(ge-be)/2+"px").css("margin-left",(me-ve)/2+"px"),qe.is(":visible")&&se.is(":visible")&&("image/png"!==i.mime?(D.css("backgroundColor",se.val()),o=e("<img>"),s.isCORS&&o.attr("crossorigin","use-credentials"),o.on("load",function(){l&&l.width!==ve&&Se()}).on("error",n).attr("src",tt)):n())},Ae=function(){Ne.updateView(pe,ue),Te(),Ue.width(Ee.width()).height(Ee.height()),Pe.width(Ee.width()).height(Ee.height()),Le.updateView(),it()},Se=function(){if(y){var t,n,i,a,r,s,c,d,p,u,h,f,m,g,v,b,w,x,k,C={},z=[],T=function(e,t,n){var i,a,o,r=Math.max(Math.max(e,t),n),s=Math.min(Math.min(e,t),n);return r===s?i=0:e===r?i=((t-n)/(r-s)*60+360)%360:t===r?i=(n-e)/(r-s)*60+120:n===r&&(i=(e-t)/(r-s)*60+240),a=(r-s)/r,o=(.3*e+.59*t+.11*n)/255,[i,a,o,"hsl"]},A=function(e){return 8*Math.round(e/8)};e:try{n=l.width=qe.width(),i=l.height=qe.height(),m=n/pe,y.scale(m,m),y.drawImage(o.get(0),0,0),f=y.getImageData(0,0,n,i).data,g=.1*n,v=.9*n,b=.1*i,w=.9*i;for(var S=0;S<i-1;S++)for(var I=0;I<n-1;I++){if(t=4*I+S*n*4,a=f[t],r=f[t+1],s=f[t+2],c=f[t+3],255!==c){se.parent().hide(),le.hide();break e}u=T(a,r,s),h=Math.round(u[0]),d=Math.round(100*u[1]),p=Math.round(100*u[2]),ee[I]||(ee[I]={}),ee[I][S]=[a,r,s,h,d,p],(I<g||I>v)&&(S<b||S>w)&&(x=A(a)+","+A(r)+","+A(s),C[x]?++C[x]:C[x]=1)}le.children(":first").length||(k=1,e.each(C,function(e,t){z.push({c:e,v:t})}),e.each(z.sort(function(e,t){return e.v>t.v?-1:1}),function(){return!(this.v<2||k>10)&&(le.append(e('<span style="width:20px;height:20px;display:inline-block;background-color:rgb('+this.c+');">')),void++k)}))}catch(O){oe.hide(),le.hide()}}},Ie=function(){try{l=document.createElement("canvas"),y=l.getContext("2d")}catch(e){oe.hide(),le.hide()}},Oe=function(){ot.on("click","span.elfinder-resize-preset",function(){var t=e(this),n=t.data("s")[0],i=t.data("s")[1],a=pe/ue;t.data("s",[i,n]).text(i+"x"+n),pe>n||ue>i?pe<=n?n=He(i*a):ue<=i?i=He(n/a):pe-n>ue-i?i=He(n/a):n=He(i*a):(n=pe,i=ue),jQuery.val(n),K.val(i),Ne.updateView(n,i),it()}),rt.on("click","span.elfinder-resize-preset",function(){var t=e(this),n=t.data("s")[0],i=t.data("s")[1],a=V.val(),o=X.val();t.data("s",[i,n]).text(i+"x"+n),pe>=n&&ue>=i&&(pe-n-a<0&&(a=pe-n),ue-i-o<0&&(o=ue-i),V.val(a),X.val(o),G.val(n),J.val(i),Le.updateView(),it())}),rt.children("span.elfinder-resize-preset").each(function(){var t=e(this),n=t.data("s")[0],i=t.data("s")[1];t[pe>=n&&ue>=i?"show":"hide"]()})},je=null,Me=!1,De=function(e){var t=s.file(i.hash);t.width=e[0],t.height=e[1]},Fe=function(){var n,a,o;Me||(Me=!0,je&&je.state&&"pending"===je.state()&&je.reject(),s.api>=2.103?0===t&&s.request({data:{cmd:"resize",target:i.hash,degree:0,mode:"rotate"},preventDefault:!0}).done(function(e){t=e.losslessRotate?1:-1,1===t&&Q.val()%90===0&&q.children("div.elfinder-resize-quality").hide()}).fail(function(){t=-1}):t=-1,n=Ee.get(0),a=i.width&&i.height?{w:i.width,h:i.height}:n.naturalWidth?null:{w:Ee.width(),h:Ee.height()},a&&Ee.removeAttr("width").removeAttr("height"),pe=i.width||n.naturalWidth||n.width||Ee.width(),ue=i.height||n.naturalHeight||n.height||Ee.height(),i.width&&i.height||De([pe,ue]),a&&Ee.width(a.w).height(a.h),w.show(),o=ue/pe,o<1&&D.height()>D.width()*o&&D.height(D.width()*o),D.height()>Ee.height()+20&&D.height(Ee.height()+20),ge=D.height()-(E.outerHeight()-E.height()),F.remove(),ce=pe/ue,E.append(Ee.show()).show(),jQuery.val(pe),K.val(ue),Ie(),Oe(),Ae(),W[f]("enable"),M.find("input,select").prop("disabled",!1).filter(":text").on("keydown",function(t){var n;if(t.keyCode==e.ui.keyCode.ENTER)return t.stopPropagation(),t.preventDefault(),n={title:e("input:checked",W).val(),text:"confirmReq",accept:{label:"btnApply",callback:function(){Xe()}},cancel:{label:"btnCancel",callback:function(){e(this).trigger("focus")}}},st&&(n.buttons=[{label:"btnSaveAs",callback:function(){requestAnimationFrame(Ge)}}]),void s.confirm(n)}).on("keyup",function(){var t=e(this);t.hasClass("elfinder-resize-bg")||requestAnimationFrame(function(){t.val(t.val().replace(/[^0-9]/g,""))})}).filter(":first"),ze(),!s.UA.Mobile&&jQuery.trigger("focus"),Be())},Ee=e("<img/>").on("load",Fe).on("error",function(){F.text("Unable to load image").css("background","transparent")}),Ue=e("<div/>"),Pe=e("<img/>"),Re=e("<div/>"),qe=e('<img class="elfinder-resize-imgrotate" />'),He=function(e,t){return e=we?8*Math.round(e/8):Math.round(e),e=Math.max(0,e),t&&e>t&&(e=we?8*Math.floor(t/8):t),e},_e=function(){jQuery.val(pe),K.val(ue),Ne.updateView(pe,ue),V.val(0),X.val(0),G.val(pe),J.val(ue),Le.updateView(),it()},Ne={update:function(){jQuery.val(He(Ee.width()/de)),K.val(He(Ee.height()/de)),it()},updateView:function(e,t){e>me||t>ge?e/me>t/ge?(de=me/e,Ee.width(me).height(He(t*de))):(de=ge/t,Ee.height(ge).width(He(e*de))):Ee.width(He(e)).height(He(t)),de=Ee.width()/e,N.text("1 : "+(1/de).toFixed(2)),Ne.updateHandle()},updateHandle:function(){E.width(Ee.width()).height(Ee.height())},fixHeight:function(){var e,t;he&&(e=jQuery.val(),t=He(e/ce),Ne.updateView(e,t),K.val(t))}},Le={update:function(e){V.val(He((U.data("x")||U.position().left)/de,pe)),X.val(He((U.data("y")||U.position().top)/de,ue)),"xy"!==e&&(G.val(He((U.data("w")||U.width())/de,pe-V.val())),J.val(He((U.data("h")||U.height())/de,ue-X.val()))),it()},updateView:function(e){var t,n,i,a,o;V.val(He(V.val(),pe-(we?8:1))),X.val(He(X.val(),ue-(we?8:1))),G.val(He(G.val(),pe-V.val())),J.val(He(J.val(),ue-X.val())),fe&&(t=Re.width()/Re.height(),"w"===e?J.val(He(parseInt(G.val())/t)):"h"===e&&G.val(He(parseInt(J.val())*t))),n=Math.round(parseInt(V.val())*de),i=Math.round(parseInt(X.val())*de),"xy"!==e?(a=Math.round(parseInt(G.val())*de),o=Math.round(parseInt(J.val())*de)):(a=U.data("w"),o=U.data("h")),U.data({x:n,y:i,w:a,h:o}).width(a).height(o).css({left:n,top:i}),Re.width(a).height(o)},resize_update:function(e,t){U.data({x:t.position.left,y:t.position.top,w:t.size.width,h:t.size.height}),Le.update(),Le.updateView()},drag_update:function(e,t){U.data({x:t.position.left,y:t.position.top}),Le.update("xy")}},We={mouseStartAngle:0,imageStartAngle:0,imageBeingRotated:!1,setQuality:function(){q.children("div.elfinder-resize-quality")[t>0&&Q.val()%90===0?"hide":"show"]()},update:function(e,t){"undefined"==typeof e&&(ye=e=parseInt(Q.val())),"undefined"==typeof t&&(t=!0),!t||s.UA.Opera||s.UA.ltIE8?qe.rotate(e):qe.animate({rotate:e+"deg"}),e%=360,e<0&&(e+=360),Q.val(parseInt(e)),Z.slider("value",Q.val()),We.setQuality()},execute:function(e){if(We.imageBeingRotated){var t=We.getCenter(qe),n=e.originalEvent.touches?e.originalEvent.touches[0]:e,i=n.pageX-t[0],a=n.pageY-t[1],o=Math.atan2(a,i),r=o-We.mouseStartAngle+We.imageStartAngle;return r=Math.round(180*parseFloat(r)/Math.PI),e.shiftKey&&(r=15*Math.round((r+6)/15)),qe.rotate(r),r%=360,r<0&&(r+=360),Q.val(r),Z.slider("value",Q.val()),We.setQuality(),!1}},start:function(t){if(!qe.hasClass("elfinder-resize-picking")){O(),We.imageBeingRotated=!0;var n=We.getCenter(qe),i=t.originalEvent.touches?t.originalEvent.touches[0]:t,a=i.pageX-n[0],o=i.pageY-n[1];
return We.mouseStartAngle=Math.atan2(o,a),We.imageStartAngle=parseFloat(qe.rotate())*Math.PI/180,e(document).on("mousemove",We.execute),qe.on("touchmove",We.execute),!1}},stop:function(t){if(We.imageBeingRotated)return e(document).off("mousemove",We.execute),qe.off("touchmove",We.execute),requestAnimationFrame(function(){We.imageBeingRotated=!1}),j(),!1},getCenter:function(e){var t=qe.rotate();qe.rotate(0);var n=qe.offset(),i=n.left+qe.width()/2,a=n.top+qe.height()/2;return qe.rotate(t),Array(i,a)}},Be=function(e){e?(E.filter(":ui-resizable").resizable("destroy"),E.hide()):(E.show(),E.resizable({alsoResize:Ee,aspectRatio:he,resize:Ne.update,start:O,stop:function(e){Ne.fixHeight,Ne.updateView(jQuery.val(),K.val()),j()}}),at())},$e=function(e){e?(U.filter(":ui-resizable").resizable("destroy").filter(":ui-draggable").draggable("destroy"),Ue.hide()):(Ue.show(),U.resizable({containment:Ue,aspectRatio:fe,resize:Le.resize_update,start:O,stop:j,handles:"all"}).draggable({handle:Re,containment:Pe,drag:Le.drag_update,start:O,stop:function(){Le.updateView("xy"),j()}}),at(),Le.update())},Ke=function(e){e?qe.hide():(qe.show(),at())},Ve=function(){var e,t,n,i,a,o,r="";if("resize"==B)e=parseInt(jQuery.val())||0,t=parseInt(K.val())||0;else if("crop"==B)e=parseInt(G.val())||0,t=parseInt(J.val())||0,n=parseInt(V.val())||0,i=parseInt(X.val())||0;else if("rotate"==B){if(e=pe,t=ue,a=parseInt(Q.val())||0,a<0||a>360)return s.error("Invalid rotate degree"),!1;if(0==a||360==a)return s.error("errResizeNoChange"),!1;r=se.val()}if(o=Y?parseInt(Y.val()):0,"rotate"!=B){if(e<=0||t<=0)return s.error("Invalid image size"),!1;if(e==pe&&t==ue)return s.error("errResizeNoChange"),!1}return{w:e,h:t,x:n,y:i,d:a,q:o,b:r}},Xe=function(){var e;(e=Ve())&&(C.elfinderdialog("close"),r.resizeRequest({target:i.hash,width:e.w,height:e.h,x:e.x,y:e.y,degree:e.d,quality:e.q,bg:e.b,mode:B},i,c))},Ge=function(){var t,n=function(){t.addClass(b).fadeIn(function(){x.addClass(v)}),s.disable()},a=function(){r.mime=i.mime,r.prefix=i.name.replace(/ \d+(\.[^.]+)?$/,"$1"),r.requestCmd="mkfile",r.nextAction={},r.data={target:i.phash},e.proxy(s.res("mixin","make"),r)().done(function(a){var o,r;a.added&&a.added.length?(o=a.added[0].hash,r=s.api<2.1032?s.url(i.hash,{async:!0,temporary:!0}):null,e.when(r).done(function(e){s.request({options:{type:"post"},data:{cmd:"put",target:o,encoding:r?"scheme":"hash",content:r?s.convAbsUrl(e):i.hash},notify:{type:"copy",cnt:1},syncOnFail:!0}).fail(n).done(function(e){e=s.normalize(e),s.updateCache(e),i=s.file(o),e.changed&&e.changed.length&&s.change(e),x.show().find(".elfinder-dialog-title").html(s.escape(i.name)),Xe(),t.fadeIn()})}).fail(n)):n()}).fail(n).always(function(){delete r.mime,delete r.prefix,delete r.nextAction,delete r.data}),s.trigger("unselectfiles",{files:[i.hash]})},o=null;Ve()&&(t=h.children("."+r.dialogClass+":visible").removeClass(b).fadeOut(),x.removeClass(v),s.enable(),s.searchStatus.state<2&&i.phash!==s.cwd().hash&&(o=s.exec("open",[i.phash],{thash:i.phash})),e.when([o]).done(function(){o?s.one("cwdrender",a):a()}).fail(n))},Je={},Ye="elfinder-resize-handle-hline",Qe="elfinder-resize-handle-vline",Ze="elfinder-resize-handle-point",et=s.openUrl(i.hash),tt=s.openUrl(i.hash,!s.isSameOrigin(et)),nt=Y?e("<img>").attr("crossorigin",s.isCORS?"use-credentials":"").attr("src",tt).on("load",function(){try{var e=document.createElement("canvas");nt.data("canvas",e).data("ctx",e.getContext("2d")),it()}catch(t){nt.removeData("canvas").removeData("ctx")}}):null,it=function(){M.find("input.elfinder-resize-quality:visible").trigger("change")},at=function(t){if(!x.hasClass("elfinder-dialog-minimized")&&!x.is(":hidden")){ot.hide(),rt.hide();var n,i,a,o=s.options.dialogContained?h:e(window),r=o.height(),l=o.width(),c="auto",d=!0;x.width(Math.min(u,l-30)),D.attr("style",""),pe&&ue&&(me=D.width()-(E.outerWidth()-E.width()),ge=D.height()-(E.outerHeight()-E.height()),Ne.updateView(pe,ue)),i=C.find("div.elfinder-resize-control").width(),a=D.width(),n=C.width()-20,a>n?(D.width(n),d=!1):n-a<i&&(l>r?D.width(n-i-20):(D.css({"float":"none",marginLeft:"auto",marginRight:"auto"}),d=!1)),d&&(c=i),me=D.width()-(E.outerWidth()-E.width()),h.hasClass("elfinder-fullscreen")?x.height()>r&&(r-=2,D.height(r-x.height()+D.height()),x.css("top",0-h.offset().top)):(r-=30,D.height()>r&&D.height(r)),ge=D.height()-(E.outerHeight()-E.height()),pe&&ue&&Ae(),Ee.height()&&D.height()>Ee.height()+20&&(D.height(Ee.height()+20),ge=D.height()-(E.outerHeight()-E.height()),Te()),ot.css("width",c).show(),rt.css("width",c).show(),rt.children("span.elfinder-resize-preset:visible").length||rt.hide()}},ot=function(){var t,n=e('<fieldset class="elfinder-resize-preset-container">').append(e("<legend>").html(s.i18n("presets"))).hide();return e.each(g,function(i,a){2===a.length&&(t=!0,n.append(e('<span class="elfinder-resize-preset"/>').data("s",a).text(a[0]+"x"+a[1]).button()))}),t?n:e()}(),rt=ot.clone(!0),st=s.uploadMimeCheck(i.mime,i.phash);P.append(e(T).append(e(A).text(s.i18n("width")),$),e(T).append(e(A).text(s.i18n("height")),K,e('<div class="elfinder-resize-whctrls">').append(xe,L)),Y?e(T).append(e(A).text(s.i18n("quality")),Y,e("<span/>")):e(),k?e(T).append(e(A).text(s.i18n("8pxgrid")).addClass("elfinder-resize-grid8"),Ce):e(),e(T).append(e(A).text(s.i18n("scale")),N),e(T).append(ot)),d&&(R.append(e(T).append(e(A).text("X"),V),e(T).append(e(A).text("Y")).append(X),e(T).append(e(A).text(s.i18n("width")),G),e(T).append(e(A).text(s.i18n("height")),J,e('<div class="elfinder-resize-whctrls">').append(ke,L.clone(!0))),Y?e(T).append(e(A).text(s.i18n("quality")),Y.clone(!0),e("<span/>")):e(),k?e(T).append(e(A).text(s.i18n("8pxgrid")).addClass("elfinder-resize-grid8")):e(),e(T).append(rt)),q.append(e(T).addClass("elfinder-resize-degree").append(e(A).text(s.i18n("rotate")),Q,e("<span/>").text(s.i18n("degree")),e("<div/>").append(H,_)[f]()),e(T).css("height","20px").append(Z),Y?e(T)[t<1?"show":"hide"]().addClass("elfinder-resize-quality").append(e(A).text(s.i18n("quality")),Y.clone(!0),e("<span/>")):e(),e(T).append(e(A).text(s.i18n("bgcolor")),se,oe,re),e(T).css("height","20px").append(le)),H.on("click",function(){ye-=90,We.update(ye)}),_.on("click",function(){ye+=90,We.update(ye)})),C.append(W).on("resize",function(e){e.stopPropagation()}),d?M.append(P,R.hide(),q.hide()):M.append(P),E.append('<div class="'+Ye+" "+Ye+'-top"/>','<div class="'+Ye+" "+Ye+'-bottom"/>','<div class="'+Qe+" "+Qe+'-left"/>','<div class="'+Qe+" "+Qe+'-right"/>','<div class="'+Ze+" "+Ze+'-e"/>','<div class="'+Ze+" "+Ze+'-se"/>','<div class="'+Ze+" "+Ze+'-s"/>'),D.append(F).append(E.hide()).append(Ee.hide()),d&&(U.css("position","absolute").append('<div class="'+Ye+" "+Ye+'-top"/>','<div class="'+Ye+" "+Ye+'-bottom"/>','<div class="'+Qe+" "+Qe+'-left"/>','<div class="'+Qe+" "+Qe+'-right"/>','<div class="'+Ze+" "+Ze+'-n"/>','<div class="'+Ze+" "+Ze+'-e"/>','<div class="'+Ze+" "+Ze+'-s"/>','<div class="'+Ze+" "+Ze+'-w"/>','<div class="'+Ze+" "+Ze+'-ne"/>','<div class="'+Ze+" "+Ze+'-se"/>','<div class="'+Ze+" "+Ze+'-sw"/>','<div class="'+Ze+" "+Ze+'-nw"/>'),D.append(Ue.css("position","absolute").hide().append(Pe,U.append(Re))),D.append(qe.hide())),D.css("overflow","hidden"),C.append(D,M),Je[s.i18n("btnApply")]=Xe,st&&(Je[s.i18n("btnSaveAs")]=function(){requestAnimationFrame(Ge)}),Je[s.i18n("btnCancel")]=function(){C.elfinderdialog("close")},C.find("input,button").addClass("elfinder-tabstop"),x=r.fmDialog(C,{title:s.escape(i.name),width:u,resizable:!1,buttons:Je,open:function(){var e=!!(s.option("substituteImg",i.hash)&&i.size>p.dimSubImgSize),t=!(!i.width||!i.height);if(C.parent().css("overflow","hidden"),w=x.find(".ui-dialog-titlebar .elfinder-titlebar-minimize").hide(),s.bind("resize",at),Ee.attr("src",et),Pe.attr("src",et),qe.attr("src",et),d&&(qe.on("mousedown touchstart",We.start).on("touchend",We.stop),x.on("mouseup",We.stop)),t&&!e)return Fe();if(i.size>(p.getDimThreshold||0))je=s.request({data:{cmd:"dim",target:i.hash,substitute:e?400:""},preventDefault:!0}).done(function(e){if(e.dim){var t=e.dim.split("x");return i.width=t[0],i.height=t[1],De(t),e.url&&(Ee.attr("src",e.url),Pe.attr("src",e.url),qe.attr("src",e.url)),Fe()}});else if(t)return Fe()},close:function(){d&&(qe.off("mousedown touchstart",We.start).off("touchend",We.stop),e(document).off("mouseup",We.stop)),s.unbind("resize",at),e(this).elfinderdialog("destroy")},resize:function(e,t){t&&"off"===t.minimize&&at()}}).attr("id",a).closest(".ui-dialog").addClass(b),s.UA.ltIE8&&e(".elfinder-dialog").css("filter",""),Re.css({opacity:.2,"background-color":"#fff",position:"absolute"}),U.css("cursor","move"),U.find(".elfinder-resize-handle-point").css({"background-color":"#fff",opacity:.5,"border-color":"#000"}),d||W.find(".api2").remove(),M.find("input,select").prop("disabled",!0),M.find("input.elfinder-resize-quality").next("span").addClass("elfinder-resize-jpgsize").attr("title",s.i18n("roughFileSize"))};return l.length&&l[0].mime.indexOf("image/")!==-1?(a="resize-"+s.namespace+"-"+l[0].hash,o=h.find("#"+a),o.length?(o.elfinderdialog("toTop"),c.resolve()):(y(l[0],a),c)):c.reject()}},function(e){var t=function(e,t){var n=0;for(n in t)if("undefined"!=typeof e[t[n]])return t[n];return e[t[n]]="",t[n]};if(e.cssHooks.rotate={get:function(t,n,i){return e(t).rotate()},set:function(t,n){return e(t).rotate(n),n}},e.cssHooks.transform={get:function(e,n,i){var a=t(e.style,["WebkitTransform","MozTransform","OTransform","msTransform","transform"]);return e.style[a]},set:function(e,n){var i=t(e.style,["WebkitTransform","MozTransform","OTransform","msTransform","transform"]);return e.style[i]=n,n}},e.fn.rotate=function(e){var t;return"undefined"==typeof e?window.opera?(t=this.css("transform").match(/rotate\((.*?)\)/),t&&t[1]?Math.round(180*parseFloat(t[1])/Math.PI):0):(t=this.css("transform").match(/rotate\((.*?)\)/),t&&t[1]?parseInt(t[1]):0):(this.css("transform",this.css("transform").replace(/none|rotate\(.*?\)/,"")+"rotate("+parseInt(e)+"deg)"),this)},e.fx.step.rotate=function(t){0==t.state&&(t.start=e(t.elem).rotate(),t.now=t.start),e(t.elem).rotate(t.now)},"undefined"==typeof window.addEventListener&&"undefined"==typeof document.getElementsByClassName){var n=function(e){for(var t=e,n=t.offsetLeft,i=t.offsetTop;t.offsetParent&&(t=t.offsetParent,t==document.body||"static"==t.currentStyle.position);)t!=document.body&&t!=document.documentElement&&(n-=t.scrollLeft,i-=t.scrollTop),n+=t.offsetLeft,i+=t.offsetTop;return{x:n,y:i}},i=function(e){if("static"==e.currentStyle.position){var t=n(e);e.style.position="absolute",e.style.left=t.x+"px",e.style.top=t.y+"px"}},a=function(e,t){var n,a=1,o=1,r=1,s=1;if("undefined"!=typeof e.style.msTransform)return!0;i(e),n=t.match(/rotate\((.*?)\)/);var l=n&&n[1]?parseInt(n[1]):0;l%=360,l<0&&(l=360+l);var c=l*Math.PI/180,d=Math.cos(c),p=Math.sin(c);a*=d,o*=-p,r*=p,s*=d,e.style.filter=(e.style.filter||"").replace(/progid:DXImageTransform\.Microsoft\.Matrix\([^)]*\)/,"")+("progid:DXImageTransform.Microsoft.Matrix(M11="+a+",M12="+o+",M21="+r+",M22="+s+",FilterType='bilinear',sizingMethod='auto expand')");var u=parseInt(e.style.width||e.width||0),h=parseInt(e.style.height||e.height||0);c=l*Math.PI/180;var f=Math.abs(Math.cos(c)),m=Math.abs(Math.sin(c)),g=(u-(u*f+h*m))/2,v=(h-(u*m+h*f))/2;return e.style.marginLeft=Math.floor(g)+"px",e.style.marginTop=Math.floor(v)+"px",!0},o=e.cssHooks.transform.set;e.cssHooks.transform.set=function(e,t){return o.apply(this,[e,t]),a(e,t),t}}}(jQuery),(i.prototype.commands.restore=function(){"use strict";var t=this,n=this.fm,i=0,a=function(t){var o,r=e.Deferred(),s=[],l=[],c=[],d=[];return r._xhrReject=function(){e.each(c,function(){this&&this.reject&&this.reject()}),o&&o._xhrReject()},e.each(t,function(e,t){"directory"===t.mime?s.push(t):l.push(t)}),s.length?(e.each(s,function(e,t){c.push(n.request({data:{cmd:"open",target:t.hash},preventDefault:!0,asNotOpen:!0})),d[e]=t.hash}),e.when.apply(e,c).fail(function(){r.reject()}).done(function(){var t=[];e.each(arguments,function(e,n){n.files&&(n.files.length?t=t.concat(n.files):t.push({hash:"fakefile_"+i++,phash:d[e],mime:"fakefile",name:"fakefile",ts:0}))}),n.cache(t),o=a(t).done(function(e){l=l.concat(e),r.resolve(l)})})):r.resolve(l),r},o=function(t,o,r,s){var l,c,d={},p=[],u=!1,h=[],f=s||{},m=+new Date;n.lockfiles({files:r}),h=e.map(o,function(e){return"directory"===e.mime?e.hash:null}),t.done(function(){h&&n.exec("rm",h,{forceRm:!0,quiet:!0})}).always(function(){n.unlockfiles({files:r})}),l=setTimeout(function(){n.notify({type:"search",id:m,cnt:1,hideCnt:!0,cancel:function(){c&&c._xhrReject(),t.reject()}})},n.notifyDelay),i=0,c=a(o).always(function(){l&&clearTimeout(l),n.notify({type:"search",id:m,cnt:-1,hideCnt:!0})}).fail(function(){t.reject("errRestore","errFileNotFound")}).done(function(i){var a=["errRestore","errFolderNotFound"],o="";i.length?(e.each(i,function(t,i){for(var a,r,s,l=i.phash;l;){if(r=n.trashes[l]){if(!d[r]){if(u)return p.push(i.hash),null;d[r]={},u=!0}s=n.path(i.hash).substr(n.path(l).length).replace(/\\/g,"/"),s=s.replace(/\/[^\/]+?$/,""),""===s&&(s="/"),d[r][s]||(d[r][s]=[]),"fakefile"===i.mime?n.updateCache({removed:[i.hash]}):d[r][s].push(i.hash),(!o||o.length>s.length)&&(o=s);break}a=n.file(l),a?l=a.phash:(l=!1,e.each(n.trashes,function(e){var t=n.file(e),a=n.path(e);if((!t.volumeid||0===i.hash.indexOf(t.volumeid))&&0===n.path(i.hash).indexOf(a))return l=e,!1}))}}),u?e.each(d,function(i,s){var l=Object.keys(s),c=l.length;n.request({data:{cmd:"mkdir",target:i,dirs:l},notify:{type:"chkdir",cnt:c},preventFail:!0}).fail(function(e){t.reject(e),n.unlockfiles({files:r})}).done(function(i){var r,l;(l=i.hashes)?(r=n.getCommand("paste"),r?n.one("mkdirdone",function(){var i=!1;e.each(s,function(e,r){l[e]&&(r.length?n.file(l[e])?(n.clipboard(r,!0),n.exec("paste",[l[e]],{_cmd:"restore",noToast:f.noToast||e!==o}).done(function(e){e&&(e.error||e.warning)&&(i=!0)}).fail(function(){i=!0}).always(function(){--c<1&&(t[i?"reject":"resolve"](),p.length&&n.exec("restore",p))})):t.reject(a):--c<1&&(t.resolve(),p.length&&n.exec("restore",p)))})}):t.reject(["errRestore","errCmdNoSupport","(paste)"])):t.reject(a)})}):t.reject(a)):(t.reject("errFileNotFound"),h&&n.exec("rm",h,{forceRm:!0,quiet:!0}))})};this.restore=o,this.linkedCmds=["copy","paste","mkdir","rm"],this.updateOnSelect=!1,this.init=function(){t=this,n=this.fm},this.getstate=function(t,i){return t=t||n.selected(),t.length&&e.grep(t,function(e){var t=n.file(e);return!(!t||t.locked||n.isRoot(t))}).length==t.length?0:-1},this.exec=function(i,a){var o=e.Deferred().fail(function(e){e&&n.error(e)}),r=t.files(i);return r.length?(e.each(r,function(e,t){return n.isRoot(t)?!o.reject(["errRestore",t.name]):t.locked?!o.reject(["errLocked",t.name]):void 0}),"pending"===o.state()&&this.restore(o,r,i,a),o):o.reject()}}).prototype={forceLoad:!0},i.prototype.commands.rm=function(){"use strict";var t=this,n=this.fm,i='<div class="ui-helper-clearfix elfinder-rm-title"><span class="elfinder-cwd-icon {class} ui-corner-all"/>{title}<div class="elfinder-rm-desc">{desc}</div></div>',a=function(a,o,s,c,d){var p,u,h,f,m,g,v=o.length,b=n.cwd().hash,y=[],w=n.i18n("calc")+'<span class="elfinder-spinner"/>';v>1?(f=0,e.each(s,function(e,t){if(!t.size||"unknown"==t.size||"directory"===t.mime)return f="unknown",!1;var n=parseInt(t.size);n>=0&&f>=0&&(f+=n)}),l="unknown"===f,y.push(n.i18n("size")+": "+(l?w:n.formatSize(f))),u=[e(i.replace("{class}","elfinder-cwd-icon-group").replace("{title}","<strong>"+n.i18n("items")+": "+v+"</strong>").replace("{desc}",y.join("<br>")))]):(m=s[0],h=n.tmb(m),l="directory"===m.mime,y.push(n.i18n("size")+": "+(l?w:n.formatSize(m.size))),y.push(n.i18n("modify")+": "+n.formatDate(m)),g=n.escape(m.i18||m.name).replace(/([_.])/g,"&#8203;$1"),u=[e(i.replace("{class}",n.mime2class(m.mime)).replace("{title}","<strong>"+g+"</strong>").replace("{desc}",y.join("<br>")))]),d&&(u=u.concat(d)),u.push(c?"confirmTrash":"confirmRm"),p=n.confirm({title:t.title,text:u,accept:{label:"btnRm",callback:function(){c?t.toTrash(a,o,c):r(a,o)}},cancel:{label:"btnCancel",callback:function(){n.unlockfiles({files:o}),1===o.length&&n.file(o[0]).phash!==b?n.select({selected:o}):n.selectfiles({files:o}),a.reject()}}}),h&&e("<img/>").on("load",function(){p.find(".elfinder-cwd-icon").addClass(h.className).css("background-image","url('"+h.url+"')")}).attr("src",h.url),l&&(l=n.getSize(e.map(s,function(e){return"directory"===e.mime?e.hash:null})).done(function(e){p.find("span.elfinder-spinner").parent().html(n.i18n("size")+": "+e.formated)}).fail(function(){p.find("span.elfinder-spinner").parent().html(n.i18n("size")+": "+n.i18n("unknown"))}).always(function(){l=!1}))},o=function(i,a,o){var r,s,l,c={},d=a.length,p=t.options.toTrashMaxItems,u=[],h=e.Deferred();return d>p?void t.confirm(i,a,t.files(a),null,[n.i18n("tooManyToTrash")]):(e.each(a,function(e,t){var i=n.file(t),a=n.path(t).replace(/\\/g,"/"),o=a.match(/^[^\/]+?(\/(?:[^\/]+?\/)*)[^\/]+?$/);i&&(o&&(o[1]=o[1].replace(/(^\/.*?)\/?$/,"$1"),c[o[1]]||(c[o[1]]=[]),c[o[1]].push(t)),"directory"===i.mime&&u.push(t))}),u.length?(r=n.request({data:{cmd:"size",targets:u},notify:{type:"readdir",cnt:1,hideCnt:!0},preventDefault:!0}).done(function(e){var t=0;e.fileCnt&&(t+=parseInt(e.fileCnt)),e.dirCnt&&(t+=parseInt(e.dirCnt)),h[t>p?"reject":"resolve"]()}).fail(function(){h.reject()}),setTimeout(function(){var e=r&&r.xhr?r.xhr:null;e&&"pending"==e.state()&&(r.syncOnFail(!1),r.reject(),h.reject())},1e3*t.options.infoCheckWait)):h.resolve(),void h.done(function(){s=Object.keys(c),l=s.length,l?n.request({data:{cmd:"mkdir",target:o,dirs:s},notify:{type:"chkdir",cnt:l},preventFail:!0}).fail(function(e){i.reject(e),n.unlockfiles({files:a})}).done(function(t){var o,r,s,d,p=function(t,i,o){var r,s,l,c;e.each(t,function(e,t){Array.isArray(t)&&(h[e]?h[e]=h[e].concat(t):h[e]=t)}),t.sync&&(h.sync=1),t.added&&t.added.length&&(r=function(){var i=[],a=e.map(t.added,function(e){return"directory"===e.mime?e.hash:null});return e.each(t.added,function(t,n){e.inArray(n.phash,a)===-1&&i.push(n.hash)}),n.exec("restore",i,{noToast:!0})},l=function(){return n.request({data:o,notify:{type:"redo",cnt:a.length}})},h.undo?(s=h.undo,h.undo=function(){r(),s()}):h.undo=r,h.redo?(c=h.redo,h.redo=function(){l(),c()}):h.redo=l)},u=["errTrash"],h={},f=function(){return n.ui.notify.children(".elfinder-notify-trash").length};(o=t.hashes)?(s=1/l*100,d=1===l?100:5,r=setTimeout(function(){n.notify({type:"trash",cnt:1,hideCnt:!0,progress:d})},n.notifyDelay),e.each(c,function(t,c){var m,g=n.file(c[0]).phash;o[t]&&(m={cmd:"paste",dst:o[t],targets:c,cut:1},n.request({data:m,preventDefault:!0}).fail(function(e){e&&(u=u.concat(e))}).done(function(e){e=n.normalize(e),n.updateCache(e),p(e,g,m),e.warning&&(u=u.concat(e.warning),delete e.warning),e.removed&&e.removed.length&&n.remove(e),e.added&&e.added.length&&n.add(e),e.changed&&e.changed.length&&n.change(e),n.trigger("paste",e),n.trigger("pastedone"),e.sync&&n.sync()}).always(function(){var t=[],o=2;f()?n.notify({type:"trash",cnt:0,hideCnt:!0,progress:s}):d+=s,--l<1&&(r&&clearTimeout(r),f()&&n.notify({type:"trash",cnt:-1}),n.unlockfiles({files:a}),Object.keys(h).length?(u.length>1&&((h.removed||h.removed.length)&&(t=e.grep(a,function(t){return e.inArray(t,h.removed)===-1})),t.length?(u.length>o&&(o=(n.messages[u[o-1]]||"").indexOf("$")===-1?o:o+1),i.reject(),n.exec("rm",t,{addTexts:u.slice(0,o),forceRm:!0})):n.error(u)),h._noSound=!0,h.undo&&h.redo&&(h.undo={cmd:"trash",callback:h.undo},h.redo={cmd:"trash",callback:h.redo}),i.resolve(h)):i.reject(u))}))})):(i.reject("errFolderNotFound"),n.unlockfiles({files:a}))}):(i.reject(["error","The folder hierarchy to be deleting can not be determined."]),n.unlockfiles({files:a}))}).fail(function(){t.confirm(i,a,t.files(a),null,[n.i18n("tooManyToTrash")])}))},r=function(e,t,i){var a=i?{}:{type:"rm",cnt:t.length};n.request({data:{cmd:"rm",targets:t},notify:a,preventFail:!0}).fail(function(t){e.reject(t)}).done(function(t){(t.error||t.warning)&&(t.sync=!0),e.resolve(t)}).always(function(){n.unlockfiles({files:t})})},s=function(t){var i,a=null;return t&&t.length&&(t.length>1&&2===n.searchStatus.state?(i=n.file(n.root(t[0])).volumeid,e.grep(t,function(e){return 0!==e.indexOf(i)}).length||(a=n.option("trashHash",t[0]))):a=n.option("trashHash",t[0])),a},l=!1;this.confirm=a,this.toTrash=o,this.remove=r,this.syncTitleOnChange=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"delete ctrl+backspace shift+delete"}],this.value="rm",this.init=function(){t=this,n=this.fm,t.change(function(){var i;delete t.extra,t.title=n.i18n("cmd"+t.value),t.className=t.value,t.button&&t.button.children("span.elfinder-button-icon")["trash"===t.value?"addClass":"removeClass"]("elfinder-button-icon-trash"),"trash"===t.value&&(t.extra={icon:"rm",node:e("<span/>").attr({title:n.i18n("cmdrm")}).on("ready",function(e,t){i=t.targets}).on("click touchstart",function(e){"touchstart"===e.type&&e.originalEvent.touches.length>1||(e.stopPropagation(),e.preventDefault(),n.getUI().trigger("click"),n.exec("rm",i,{_userAction:!0,forceRm:!0}))})})})},this.getstate=function(t){var i=this.hashes(t);return i.length&&e.grep(i,function(e){var t=n.file(e);return!(!t||t.locked||n.isRoot(t))}).length==i.length?0:-1},this.exec=function(i,a){var o,c=a||{},d=e.Deferred().always(function(){l&&l.state&&"pending"===l.state()&&l.reject()}).fail(function(e){e&&n.error(e)}).done(function(e){!c.quiet&&!e._noSound&&e.removed&&e.removed.length&&n.trigger("playsound",{soundFile:"rm.wav"})}),p=t.files(i),u=p.length,h=null,f=c.addTexts?c.addTexts:null,m=c.forceRm,g=c.quiet;return u?(e.each(p,function(e,t){return n.isRoot(t)?!d.reject(["errRm",t.name,"errPerm"]):t.locked?!d.reject(["errLocked",t.name]):void 0}),"pending"===d.state()&&(o=t.hashes(i),u=p.length,(m||t.event&&t.event.originalEvent&&t.event.originalEvent.shiftKey)&&(h="",t.title=n.i18n("cmdrm")),null===h&&(h=s(o)),n.lockfiles({files:o}),h&&t.options.quickTrash?t.toTrash(d,o,h):g?r(d,o,g):t.confirm(d,o,p,h,f)),d):d.reject()},n.bind("select contextmenucreate closecontextmenu",function(e){var i=(e.data?e.data.selected||e.data.targets:null)||n.selected();i&&i.length&&t.update(void 0,(i?s(i):n.option("trashHash"))?"trash":"rm")})},i.prototype.commands.search=function(){"use strict";this.title="Find files",this.options={ui:"searchbutton"},this.alwaysEnabled=!0,this.updateOnSelect=!1,this.getstate=function(){return 0},this.exec=function(t,n,i,a){var o,r=this.fm,s=[],l=a||"",c=r.options.onlyMimes,d=[],p=function(e){return l&&"SearchName"!==l&&"SearchMime"!==l&&(e.type=l),e};return"string"==typeof t&&t?("object"==typeof n&&(i=n.mime||"",n=n.target||""),n=n?n:"",i?(i=e.trim(i).replace(","," ").split(" "),c.length&&(i=e.map(i,function(t){return t=e.trim(t),t&&(e.inArray(t,c)!==-1||e.grep(c,function(e){return 0===t.indexOf(e)}).length)?t:null}))):i=[].concat(c),r.trigger("searchstart",p({query:t,target:n,mimes:i})),!c.length||i.length?""===n&&r.api>=2.1?e.each(r.roots,function(e,n){s.push(r.request({data:p({cmd:"search",q:t,target:n,mimes:i}),notify:{type:"search",cnt:1,hideCnt:!s.length},cancel:!0,preventDone:!0}))}):(s.push(r.request({data:p({cmd:"search",q:t,target:n,mimes:i}),notify:{type:"search",cnt:1,hideCnt:!0},cancel:!0,preventDone:!0})),""!==n&&r.api>=2.1&&Object.keys(r.leafRoots).length&&e.each(r.leafRoots,function(a,l){for(o=a;o;)n===o&&e.each(l,function(){var e=r.file(this);e&&e.volumeid&&d.push(e.volumeid),s.push(r.request({data:p({cmd:"search",q:t,target:this,mimes:i}),notify:{type:"search",cnt:1,hideCnt:!1},cancel:!0,preventDone:!0}))}),o=(r.file(o)||{}).phash})):s=[e.Deferred().resolve({files:[]})],r.searchStatus.mixed=s.length>1&&d,e.when.apply(e,s).done(function(e){var t,n=arguments.length;if(e.warning&&r.error(e.warning),n>1)for(e.files=e.files||[],t=1;t<n;t++)arguments[t].warning&&r.error(arguments[t].warning),arguments[t].files&&e.files.push.apply(e.files,arguments[t].files);e.files&&e.files.length&&r.cache(e.files),r.lazy(function(){r.trigger("search",e)}).then(function(){return r.lazy(function(){r.trigger("searchdone")})}).then(function(){e.sync&&r.sync()})})):(r.getUI("toolbar").find("."+r.res("class","searchbtn")+" :text").trigger("focus"),e.Deferred().reject())}},i.prototype.commands.selectall=function(){"use strict";var t=0;this.fm.bind("select",function(e){t=e.data&&e.data.selectall?-1:0}),this.state=0,this.updateOnSelect=!1,this.getstate=function(){return t},this.exec=function(){return e(document).trigger(e.Event("keydown",{keyCode:65,ctrlKey:!0,shiftKey:!1,altKey:!1,metaKey:!1})),e.Deferred().resolve()}},i.prototype.commands.selectinvert=function(){"use strict";this.updateOnSelect=!1,this.getstate=function(){return 0},this.exec=function(){return e(document).trigger(e.Event("keydown",{keyCode:73,ctrlKey:!0,shiftKey:!0,altKey:!1,metaKey:!1})),e.Deferred().resolve()}},i.prototype.commands.selectnone=function(){"use strict";var t=this.fm,n=-1;t.bind("select",function(e){n=e.data&&e.data.unselectall?-1:0}),this.state=-1,this.updateOnSelect=!1,this.getstate=function(){return n},this.exec=function(){return t.getUI("cwd").trigger("unselectall"),e.Deferred().resolve()}},i.prototype.commands.sort=function(){"use strict";var t=this,n=t.fm,i=function(){t.variants=[],e.each(n.sortRules,function(e,i){if(n.sorters[e]){var a=e===n.sortType?"asc"===n.sortOrder?"n":"s":"";t.variants.push([e,(a?'<span class="ui-icon ui-icon-arrowthick-1-'+a+'"></span>':"")+"&nbsp;"+n.i18n("sort"+e)])}}),t.variants.push("|"),t.variants.push(["stick",(n.sortStickFolders?'<span class="ui-icon ui-icon-check"/>':"")+"&nbsp;"+n.i18n("sortFoldersFirst")]),n.ui.tree&&null!==n.options.sortAlsoTreeview&&(t.variants.push("|"),t.variants.push(["tree",(n.sortAlsoTreeview?'<span class="ui-icon ui-icon-check"/>':"")+"&nbsp;"+n.i18n("sortAlsoTreeview")])),a()},a=function(){var t,i,a=n.getUI("contextmenu");a.is(":visible")&&(t=a.find("span.elfinder-button-icon-sort"),i=t.siblings("div.elfinder-contextmenu-sub"),i.find("span.ui-icon").remove(),i.children("div.elfinder-contextsubmenu-item").each(function(){var t,i=e(this).children("span"),a=i.text().trim();a===(o.stick||(o.stick=n.i18n("sortFoldersFirst")))?n.sortStickFolders&&i.prepend('<span class="ui-icon ui-icon-check"/>'):a===(o.tree||(o.tree=n.i18n("sortAlsoTreeview")))?n.sortAlsoTreeview&&i.prepend('<span class="ui-icon ui-icon-check"/>'):a===(o[n.sortType]||(o[n.sortType]=n.i18n("sort"+n.sortType)))&&(t="asc"===n.sortOrder?"n":"s",i.prepend('<span class="ui-icon ui-icon-arrowthick-1-'+t+'"></span>'))}))},o={};this.options={ui:"sortbutton"},this.keepContextmenu=!0,n.bind("sortchange",i).bind("sorterupdate",function(){i(),n.getUI("toolbar").find(".elfiner-button-sort .elfinder-button-menu .elfinder-button-menu-item").each(function(){var t=e(this),i=t.attr("rel");t.toggle(!i||n.sorters[i])})}).bind("cwdrender",function(){var t=e(n.cwd).find("div.elfinder-cwd-wrapper-list table");t.length&&e.each(n.sortRules,function(i,a){var o=t.find("thead tr td.elfinder-cwd-view-th-"+i);if(o.length){var r,s=i==n.sortType,l={type:i,order:s?"asc"==n.sortOrder?"desc":"asc":n.sortOrder};s&&(o.addClass("ui-state-active"),r="asc"==n.sortOrder?"n":"s",e('<span class="ui-icon ui-icon-triangle-1-'+r+'"/>').appendTo(o)),e(o).on("click",function(t){e(this).data("dragging")||(t.stopPropagation(),n.getUI("cwd").data("longtap")||n.exec("sort",[],l))}).on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"===t.type)})}})}),this.getstate=function(){return 0},this.exec=function(t,n){var i=this.fm,a=e.isPlainObject(n)?n:function(){n+="";var e={};return"stick"===n?e.stick=!i.sortStickFolders:"tree"===n?e.tree=!i.sortAlsoTreeview:i.sorters[n]&&(i.sortType===n?e.order="asc"===i.sortOrder?"desc":"asc":e.type=n),e}(),o=Object.assign({type:i.sortType,order:i.sortOrder,stick:i.sortStickFolders,tree:i.sortAlsoTreeview},a);return i.lazy(function(){i.setSort(o.type,o.order,o.stick,o.tree),this.resolve()})}},i.prototype.commands.undo=function(){"use strict";var t=this,n=this.fm,i=function(e){e?(t.title=n.i18n("cmdundo")+" "+n.i18n("cmd"+e.cmd),t.state=0):(t.title=n.i18n("cmdundo"),t.state=-1),t.change()},a=[];this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+z"}],this.syncTitleOnChange=!0,this.getstate=function(){return a.length?0:-1},this.setUndo=function(t,o){var r={};t&&e.isPlainObject(t)&&t.cmd&&t.callback&&(Object.assign(r,t),o?(delete o.undo,r.redo=o):n.getCommand("redo").setRedo(null),a.push(r),i(r))},this.exec=function(){var t,o,r=n.getCommand("redo"),s=e.Deferred(),l={};return a.length?(t=a.pop(),t.redo?(Object.assign(l,t.redo),delete t.redo):l=null,s.done(function(){l&&r.setRedo(l,t)}),i(a.length?a[a.length-1]:void 0),o=t.callback(),o&&o.done?o.done(function(){s.resolve()}).fail(function(){s.reject()}):s.resolve(),a.length?this.update(0,a[a.length-1].name):this.update(-1,"")):s.reject(),s},n.bind("exec",function(e){var n=e.data||{};n.opts&&n.opts._userAction&&n.dfrd&&n.dfrd.done&&n.dfrd.done(function(e){e&&e.undo&&e.redo&&(e.undo.redo=e.redo,t.setUndo(e.undo))})})},i.prototype.commands.redo=function(){"use strict";var t=this,n=this.fm,i=function(e){e&&e.callback?(t.title=n.i18n("cmdredo")+" "+n.i18n("cmd"+e.cmd),t.state=0):(t.title=n.i18n("cmdredo"),t.state=-1),t.change()},a=[];this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"shift+ctrl+z ctrl+y"}],this.syncTitleOnChange=!0,this.getstate=function(){return a.length?0:-1},this.setRedo=function(e,t){null===e?(a=[],i()):e&&e.cmd&&e.callback&&(t&&(e.undo=t),a.push(e),i(e))},this.exec=function(){var t,o,r=n.getCommand("undo"),s=e.Deferred(),l={},c={};return a.length?(t=a.pop(),t.undo&&(Object.assign(l,t.undo),Object.assign(c,t),delete c.undo,s.done(function(){r.setUndo(l,c)})),i(a.length?a[a.length-1]:void 0),o=t.callback(),o&&o.done?o.done(function(){s.resolve()}).fail(function(){s.reject()}):s.resolve(),s):s.reject()}},(i.prototype.commands.up=function(){"use strict";this.alwaysEnabled=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+up"}],this.getstate=function(){return this.fm.cwd().phash?0:-1},this.exec=function(){var t=this.fm,n=t.cwd().hash;return this.fm.cwd().phash?this.fm.exec("open",this.fm.cwd().phash).done(function(){t.one("opendone",function(){t.selectfiles({files:[n]})})}):e.Deferred().reject()}}).prototype={forceLoad:!0},i.prototype.commands.upload=function(){"use strict";var t=this.fm.res("class","hover");this.disableOnSearch=!0,this.updateOnSelect=!1,this.shortcuts=[{pattern:"ctrl+u"}],this.getstate=function(e){var t,n=this.fm,i=e||[n.cwd().hash];return this._disabled||1!=i.length||(t=n.file(i[0])),t&&"directory"==t.mime&&t.write?0:-1},this.exec=function(n){var i,a,o,r,s,l,c,d=this.fm,p=d.cwd().hash,u=function(){var e,t=n&&n instanceof Array?n:null;return(!n||n instanceof Array)&&(t||1!==(e=d.selected()).length||"directory"!==d.file(e[0]).mime?t&&1===t.length&&"directory"===d.file(t[0]).mime||(t=[p]):t=e),t},h=u(),f=h?h[0]:n&&n.target?n.target:null,m=f?d.file(f):d.cwd(),g=function(t){d.upload(t).fail(function(e){w.reject(e)}).done(function(t){var n;d.getUI("cwd");if(w.resolve(t),t&&t.added&&t.added[0]&&!d.ui.notify.children(".elfinder-notify-upload").length){var i=d.findCwdNodes(t.added);i.length?i.trigger("scrolltoview"):(m.hash!==p?n=e("<div/>").append(e('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'+d.i18n("cmdopendir")+"</span></button>").on("mouseenter mouseleave",function(t){e(this).toggleClass("ui-state-hover","mouseenter"==t.type)}).on("click",function(){d.exec("open",f).done(function(){d.one("opendone",function(){d.trigger("selectfiles",{files:e.map(t.added,function(e){return e.hash})})})})})):d.trigger("selectfiles",{files:e.map(t.added,function(e){return e.hash})}),d.toast({msg:d.i18n(["complete",d.i18n("cmdupload")]),extNode:n}))}}).progress(function(){w.notifyWith(this,Array.from(arguments))})},v=function(e){i.elfinderdialog("close"),h&&(e.target=h[0]),g(e)},b=function(){var t=m.hash,n=e.map(d.files(t),function(e){
return"directory"===e.mime&&e.write?e:null});return n.length?e('<div class="elfinder-upload-dirselect elfinder-tabstop" title="'+d.i18n("folders")+'"/>').on("click",function(t){t.stopPropagation(),t.preventDefault(),n=d.sortFiles(n);var a=e(this),o=(d.cwd(),i.closest("div.ui-dialog")),r=function(e,t){return{label:d.escape(e.i18||e.name),icon:t,remain:!1,callback:function(){var t=o.children(".ui-dialog-titlebar:first").find("span.elfinder-upload-target");h=[e.hash],t.html(" - "+d.escape(e.i18||e.name)),a.trigger("focus")},options:{className:h&&h.length&&e.hash===h[0]?"ui-state-active":"",iconClass:e.csscls||"",iconImg:e.icon||""}}},s=[r(m,"opendir"),"|"];e.each(n,function(e,t){s.push(r(t,"dir"))}),a.trigger("blur"),d.trigger("contextmenu",{raw:s,x:t.pageX||e(this).offset().left,y:t.pageY||e(this).offset().top,prevNode:o,fitHeight:!0})}).append('<span class="elfinder-button-icon elfinder-button-icon-dir" />'):e()},y=function(n,i){var a=e('<input type="file" '+n+"/>").on("click",function(){d.UA.IE&&setTimeout(function(){o.css("display","none").css("position","relative"),requestAnimationFrame(function(){o.css("display","").css("position","")})},100)}).on("change",function(){v({input:a.get(0),type:"files"})}).on("dragover",function(e){e.originalEvent.dataTransfer.dropEffect="copy"}),o=e("<form/>").append(a).on("click",function(e){e.stopPropagation()});return e('<div class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only elfinder-tabstop elfinder-focus"><span class="ui-button-text">'+d.i18n(i)+"</span></div>").append(o).on("click",function(e){e.stopPropagation(),e.preventDefault(),a.trigger("click")}).on("mouseenter mouseleave",function(n){e(this).toggleClass(t,"mouseenter"===n.type)})},w=e.Deferred();return r=function(t){t.stopPropagation(),t.preventDefault();var n,i=!1,a="",o=null,r="",s=null,l=t._target||null,c=t.dataTransfer||null,p=c.items&&c.items.length&&c.items[0].kind?c.items[0].kind:"";if(c){try{if(o=c.getData("elfinderfrom"),o&&(r=window.location.href+d.cwd().hash,!l&&o===r||l===r))return void w.reject()}catch(t){}if("file"===p&&(c.items[0].getAsEntry||c.items[0].webkitGetAsEntry))i=c,a="data";else if("string"!==p&&c.files&&c.files.length&&e.inArray("Text",c.types)===-1)i=c.files,a="files";else{try{(s=c.getData("text/html"))&&s.match(/<(?:img|a)/i)&&(i=[s],a="html")}catch(t){}i||((s=c.getData("text"))?(i=[s],a="text"):c&&c.files&&(p="file"))}}i?g({files:i,type:a,target:l,dropEvt:t}):(n=["errUploadNoFiles"],"file"===p&&n.push("errFolderUpload"),d.error(n),w.reject())},!h&&n?(n.input||n.files?(n.type="files",g(n)):n.dropEvt&&r(n.dropEvt),w):(s=function(t){var n,i=t.originalEvent||t,a=[],o=[];if(i.clipboardData){if(i.clipboardData.items&&i.clipboardData.items.length){o=i.clipboardData.items;for(var r=0;r<o.length;r++)"file"==i.clipboardData.items[r].kind&&(n=i.clipboardData.items[r].getAsFile(),a.push(n))}else i.clipboardData.files&&i.clipboardData.files.length&&(a=i.clipboardData.files);if(a.length)return void v({files:a,type:"files",clipdata:!0})}var s=i.target||i.srcElement;requestAnimationFrame(function(){var t,n="text";s.innerHTML&&(e(s).find("img").each(function(t,n){n.src.match(/^webkit-fake-url:\/\//)&&e(n).remove()}),e(s).find("a,img").length&&(n="html"),t=s.innerHTML,s.innerHTML="",v({files:[t],type:n}))})},i=e('<div class="elfinder-upload-dialog-wrapper"/>').append(y("multiple","selectForUpload")),!d.UA.Mobile&&function(e){return"undefined"!=typeof e.webkitdirectory||"undefined"!=typeof e.directory}(document.createElement("input"))&&i.append(y("multiple webkitdirectory directory","selectFolder")),m.dirs&&(m.hash===p||d.navHash2Elm(m.hash).hasClass("elfinder-subtree-loaded")?b().appendTo(i):(l=e('<div class="elfinder-upload-dirselect" title="'+d.i18n("nowLoading")+'"/>').append('<span class="elfinder-button-icon elfinder-button-icon-spinner" />').appendTo(i),d.request({cmd:"tree",target:m.hash}).done(function(){d.one("treedone",function(){l.replaceWith(b()),c.elfinderdialog("tabstopsInit")})}).fail(function(){l.remove()}))),d.dragUpload?a=e('<div class="ui-corner-all elfinder-upload-dropbox elfinder-tabstop" contenteditable="true" data-ph="'+d.i18n("dropPasteFiles")+'"></div>').on("paste",function(e){s(e)}).on("mousedown click",function(){e(this).trigger("focus")}).on("focus",function(){this.innerHTML=""}).on("mouseover",function(){e(this).addClass(t)}).on("mouseout",function(){e(this).removeClass(t)}).on("dragenter",function(n){n.stopPropagation(),n.preventDefault(),e(this).addClass(t)}).on("dragleave",function(n){n.stopPropagation(),n.preventDefault(),e(this).removeClass(t)}).on("dragover",function(n){n.stopPropagation(),n.preventDefault(),n.originalEvent.dataTransfer.dropEffect="copy",e(this).addClass(t)}).on("drop",function(e){i.elfinderdialog("close"),h&&(e.originalEvent._target=h[0]),r(e.originalEvent)}).prependTo(i).after('<div class="elfinder-upload-dialog-or">'+d.i18n("or")+"</div>")[0]:o=e('<div class="ui-corner-all elfinder-upload-dropbox" contenteditable="true">'+d.i18n("dropFilesBrowser")+"</div>").on("paste drop",function(e){s(e)}).on("mousedown click",function(){e(this).trigger("focus")}).on("focus",function(){this.innerHTML=""}).on("dragenter mouseover",function(){e(this).addClass(t)}).on("dragleave mouseout",function(){e(this).removeClass(t)}).prependTo(i).after('<div class="elfinder-upload-dialog-or">'+d.i18n("or")+"</div>")[0],c=this.fmDialog(i,{title:this.title+'<span class="elfinder-upload-target">'+(m?" - "+d.escape(m.i18||m.name):"")+"</span>",modal:!0,resizable:!1,destroyOnClose:!0,propagationEvents:["mousemove","mouseup","click"],close:function(){var e=d.getUI("contextmenu");e.is(":visible")&&e.click()}}),w)}},i.prototype.commands.view=function(){"use strict";var t,n=this,i=this.fm;this.value=i.viewType,this.alwaysEnabled=!0,this.updateOnSelect=!1,this.options={ui:"viewbutton"},this.getstate=function(){return 0},this.extra={icon:"menu",node:e("<span/>").attr({title:i.i18n("viewtype")}).on("click touchstart",function(t){if(!("touchstart"===t.type&&t.originalEvent.touches.length>1)){var n=e(this);t.stopPropagation(),t.preventDefault(),i.trigger("contextmenu",{raw:getSubMenuRaw(),x:n.offset().left,y:n.offset().top})}})},this.exec=function(){var e=this,t=i.storage("view","list"==this.value?"icons":"list");return i.lazy(function(){i.viewchange(),e.update(void 0,t),this.resolve()})},i.bind("init",function(){t=function(){var e,t=i.getUI("cwd"),a=[],o=i.options.uiOptions.cwd.iconsView.sizeNames,r=i.options.uiOptions.cwd.iconsView.sizeMax;for(e=0;e<=r;e++)a.push({label:i.i18n(o[e]||"Size-"+e+" icons"),icon:"view",callback:function(e){return function(){t.trigger("iconpref",{size:e}),i.storage("iconsize",e),"list"===n.value&&n.exec()}}(e)});return a.push("|"),a.push({label:i.i18n("viewlist"),icon:"view-list",callback:function(){"list"!==n.value&&n.exec()}}),a}()}).bind("contextmenucreate",function(){n.extra={icon:"menu",node:e("<span/>").attr({title:i.i18n("cmdview")}).on("click touchstart",function(a){if(!("touchstart"===a.type&&a.originalEvent.touches.length>1)){var o,r,s=e(this);t.concat();for(o="list"===n.value?t.length-1:parseInt(i.storage("iconsize")||0),r=0;r<t.length;r++)"|"!==t[r]&&(t[r].options=r===o?{className:"ui-state-active"}:void 0);a.stopPropagation(),a.preventDefault(),i.trigger("contextmenu",{raw:t,x:s.offset().left,y:s.offset().top})}})}})},i});lib/js/commands/hide.js000064400000010415147361034410011002 0ustar00/**
 * @class elFinder command "hide".
 * folders/files to hide as personal setting.
 *
 * @type  elFinder.command
 * @author  Naoki Sawada
 */
elFinder.prototype.commands.hide = function() {
	"use strict";

	var self = this,
		nameCache = {},
		hideData, hideCnt, cMenuType, sOrigin;

	this.syncTitleOnChange = true;

	this.shortcuts = [{
		pattern : 'ctrl+shift+dot',
		description : this.fm.i18n('toggleHidden')
	}];

	this.init = function() {
		var fm = this.fm;
		
		hideData = fm.storage('hide') || {items: {}};
		hideCnt = Object.keys(hideData.items).length;

		this.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
		self.update(void(0), self.title);
	};

	this.fm.bind('select contextmenucreate closecontextmenu', function(e, fm) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		if (e.type === 'select' && e.data) {
			sOrigin = e.data.origin;
		} else if (e.type === 'contextmenucreate') {
			cMenuType = e.data.type;
		}
		if (!sel.length || (((e.type !== 'contextmenucreate' && sOrigin !== 'navbar') || cMenuType === 'cwd') && sel[0] === fm.cwd().hash)) {
			self.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
		} else {
			self.title = fm.i18n('cmdhide');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(cMenuType === 'cwd'? (hideCnt? 0 : -1) : void(0), self.title);
		} else {
			cMenuType = '';
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	});

	this.getstate = function(sel) {
		return (this.fm.cookieEnabled && cMenuType !== 'cwd' && (sel || this.fm.selected()).length) || hideCnt? 0 : -1;
	};

	this.exec = function(hashes, opts) {
		var fm = this.fm,
			dfrd = jQuery.Deferred()
				.done(function() {
					fm.trigger('hide', {items: items, opts: opts});
				})
				.fail(function(error) {
					fm.error(error);
				}),
			o = opts || {},
			items = o.targets? o.targets : (hashes || fm.selected()),
			added = [],
			removed = [],
			notifyto, files, res;

		hideData = fm.storage('hide') || {};
		if (!jQuery.isPlainObject(hideData)) {
			hideData = {};
		}
		if (!jQuery.isPlainObject(hideData.items)) {
			hideData.items = {};
		}
		if (opts._currentType === 'shortcut' || !items.length || (opts._currentType !== 'navbar' && sOrigin !=='navbar' && items[0] === fm.cwd().hash)) {
			if (hideData.show) {
				o.hide = true;
			} else if (Object.keys(hideData.items).length) {
				o.show = true;
			}
		}
		if (o.reset) {
			o.show = true;
			hideCnt = 0;
		}
		if (o.show || o.hide) {
			if (o.show) {
				hideData.show = true;
			} else {
				delete hideData.show;
			}
			if (o.show) {
				fm.storage('hide', o.reset? null : hideData);
				self.title = fm.i18n('hideHidden');
				self.update(o.reset? -1 : void(0), self.title);
				jQuery.each(hideData.items, function(h) {
					var f = fm.file(h, true);
					if (f && (fm.searchStatus.state || !f.phash || fm.file(f.phash))) {
						added.push(f);
					}
				});
				if (added.length) {
					fm.updateCache({added: added});
					fm.add({added: added});
				}
				if (o.reset) {
					hideData = {items: {}};
				}
				return dfrd.resolve();
			}
			items = Object.keys(hideData.items);
		}

		if (items.length) {
			jQuery.each(items, function(i, h) {
				var f;
				if (!hideData.items[h]) {
					f = fm.file(h);
					if (f) {
						nameCache[h] = f.i18 || f.name;
					}
					hideData.items[h] = nameCache[h]? nameCache[h] : h;
				}
			});
			hideCnt = Object.keys(hideData.items).length;
			files = this.files(items);
			fm.storage('hide', hideData);
			fm.remove({removed: items});
			if (hideData.show) {
				this.exec(void(0), {hide: true});
			}
			if (!o.hide) {
				res = {};
				res.undo = {
					cmd : 'hide',
					callback : function() {
						var nData = fm.storage('hide');
						if (nData) {
							jQuery.each(items, function(i, h) {
								delete nData.items[h];
							});
							hideCnt = Object.keys(nData.items).length;
							fm.storage('hide', nData);
							fm.trigger('hide', {items: items, opts: {}});
							self.update(hideCnt? 0 : -1);
						}
						fm.updateCache({added: files});
						fm.add({added: files});
					}
				};
				res.redo = {
					cmd : 'hide',
					callback : function() {
						return fm.exec('hide', void(0), {targets: items});
					}
				};
			}
		}

		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(res);
	};
};
lib/js/commands/paste.js000064400000024253147361034410011212 0ustar00/**
 * @class  elFinder command "paste"
 * Paste filesfrom clipboard into directory.
 * If files pasted in its parent directory - files duplicates will created
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.paste = function() {
	"use strict";
	this.updateOnSelect  = false;
	
	this.handlers = {
		changeclipboard : function() { this.update(); }
	};

	this.shortcuts = [{
		pattern     : 'ctrl+v shift+insert'
	}];
	
	this.getstate = function(dst) {
		if (this._disabled) {
			return -1;
		}
		if (dst) {
			if (Array.isArray(dst)) {
				if (dst.length != 1) {
					return -1;
				}
				dst = this.fm.file(dst[0]);
			}
		} else {
			dst = this.fm.cwd();
		}

		return this.fm.clipboard().length && dst.mime == 'directory' && dst.write ? 0 : -1;
	};
	
	this.exec = function(select, cOpts) {
		var self   = this,
			fm     = self.fm,
			opts   = cOpts || {},
			dst    = select ? this.files(select)[0] : fm.cwd(),
			files  = fm.clipboard(),
			cnt    = files.length,
			cut    = cnt ? files[0].cut : false,
			cmd    = opts._cmd? opts._cmd : (cut? 'move' : 'copy'),
			error  = 'err' + cmd.charAt(0).toUpperCase() + cmd.substr(1),
			fpaste = [],
			fcopy  = [],
			dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				})
				.always(function() {
					fm.unlockfiles({files : jQuery.map(files, function(f) { return f.hash; })});
				}),
			copy  = function(files) {
				return files.length && fm._commands.duplicate
					? fm.exec('duplicate', files)
					: jQuery.Deferred().resolve();
			},
			paste = function(files) {
				var dfrd      = jQuery.Deferred(),
					existed   = [],
					hashes  = {},
					intersect = function(files, names) {
						var ret = [], 
							i   = files.length;

						while (i--) {
							jQuery.inArray(files[i].name, names) !== -1 && ret.unshift(i);
						}
						return ret;
					},
					confirm   = function(ndx) {
						var i    = existed[ndx],
							file = files[i],
							last = ndx == existed.length-1;

						if (!file) {
							return;
						}

						fm.confirm({
							title  : fm.i18n(cmd + 'Files'),
							text   : ['errExists', file.name, cmd === 'restore'? 'confirmRest' : 'confirmRepl'], 
							all    : !last,
							accept : {
								label    : 'btnYes',
								callback : function(all) {
									!last && !all
										? confirm(++ndx)
										: paste(files);
								}
							},
							reject : {
								label    : 'btnNo',
								callback : function(all) {
									var i;

									if (all) {
										i = existed.length;
										while (ndx < i--) {
											files[existed[i]].remove = true;
										}
									} else {
										files[existed[ndx]].remove = true;
									}

									!last && !all
										? confirm(++ndx)
										: paste(files);
								}
							},
							cancel : {
								label    : 'btnCancel',
								callback : function() {
									dfrd.resolve();
								}
							},
							buttons : [
								{
									label : 'btnBackup',
									callback : function(all) {
										var i;
										if (all) {
											i = existed.length;
											while (ndx < i--) {
												files[existed[i]].rename = true;
											}
										} else {
											files[existed[ndx]].rename = true;
										}
										!last && !all
											? confirm(++ndx)
											: paste(files);
									}
								}
							]
						});
					},
					valid     = function(names) {
						var exists = {}, existedArr;
						if (names) {
							if (Array.isArray(names)) {
								if (names.length) {
									if (typeof names[0] == 'string') {
										// elFinder <= 2.1.6 command `is` results
										existed = intersect(files, names);
									} else {
										jQuery.each(names, function(i, v) {
											exists[v.name] = v.hash;
										});
										existed = intersect(files, jQuery.map(exists, function(h, n) { return n; }));
										jQuery.each(files, function(i, file) {
											if (exists[file.name]) {
												hashes[exists[file.name]] = file.name;
											}
										});
									}
								}
							} else {
								existedArr = [];
								existed = jQuery.map(names, function(n) {
									if (typeof n === 'string') {
										return n;
									} else {
										// support to >=2.1.11 plugin Normalizer, Sanitizer
										existedArr = existedArr.concat(n);
										return false;
									}
								});
								if (existedArr.length) {
									existed = existed.concat(existedArr);
								}
								existed = intersect(files, existed);
								hashes = names;
							}
						}
						existed.length ? confirm(0) : paste(files);
					},
					paste     = function(selFiles) {
						var renames = [],
							files  = jQuery.grep(selFiles, function(file) { 
								if (file.rename) {
									renames.push(file.name);
								}
								return !file.remove ? true : false;
							}),
							cnt    = files.length,
							groups = {},
							args   = [],
							targets, reqData;

						if (!cnt) {
							return dfrd.resolve();
						}

						targets = jQuery.map(files, function(f) { return f.hash; });
						
						reqData = {cmd : 'paste', dst : dst.hash, targets : targets, cut : cut ? 1 : 0, renames : renames, hashes : hashes, suffix : fm.options.backupSuffix};
						if (fm.api < 2.1) {
							reqData.src = files[0].phash;
						}
						
						fm.request({
								data   : reqData,
								notify : {type : cmd, cnt : cnt},
								cancel : true,
								navigate : { 
									toast  : opts.noToast? {} : {
										inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmd' + cmd)]), action: {
											cmd: 'open',
											msg: 'cmdopendir',
											data: [dst.hash],
											done: 'select',
											cwdNot: dst.hash
										}}
									}
								}
							})
							.done(function(data) {
								var dsts = {},
									added = data.added && data.added.length? data.added : null;
								if (cut && added) {
									// undo/redo
									jQuery.each(files, function(i, f) {
										var phash = f.phash,
											srcHash = function(name) {
												var hash;
												jQuery.each(added, function(i, f) {
													if (f.name === name) {
														hash = f.hash;
														return false;
													}
												});
												return hash;
											},
											shash = srcHash(f.name);
										if (shash) {
											if (dsts[phash]) {
												dsts[phash].push(shash);
											} else {
												dsts[phash] = [ shash ];
											}
										}
									});
									if (Object.keys(dsts).length) {
										data.undo = {
											cmd : 'move',
											callback : function() {
												var reqs = [];
												jQuery.each(dsts, function(dst, targets) {
													reqs.push(fm.request({
														data : {cmd : 'paste', dst : dst, targets : targets, cut : 1},
														notify : {type : 'undo', cnt : targets.length}
													}));
												});
												return jQuery.when.apply(null, reqs);
											}
										};
										data.redo = {
											cmd : 'move',
											callback : function() {
												return fm.request({
													data : reqData,
													notify : {type : 'redo', cnt : cnt}
												});
											}
										};
									}
								}
								dfrd.resolve(data);
							})
							.fail(function(flg) {
								dfrd.reject();
								if (flg === 0) {
									// canceling
									fm.sync();
								}
							})
							.always(function() {
								fm.unlockfiles({files : files});
							});
					},
					internames;

				if (!fm.isCommandEnabled(self.name, dst.hash) || !files.length) {
					return dfrd.resolve();
				}
				
				if (fm.oldAPI) {
					paste(files);
				} else {
					
					if (!fm.option('copyOverwrite', dst.hash)) {
						paste(files);
					} else {
						internames = jQuery.map(files, function(f) { return f.name; });
						dst.hash == fm.cwd().hash
							? valid(jQuery.map(fm.files(), function(file) { return file.phash == dst.hash ? {hash: file.hash, name: file.name} : null; }))
							: fm.request({
								data : {cmd : 'ls', target : dst.hash, intersect : internames},
								notify : {type : 'prepare', cnt : 1, hideCnt : true},
								preventFail : true
							})
							.always(function(data) {
								valid(data.list);
							});
					}
				}
				
				return dfrd;
			},
			parents, fparents, cutDfrd;


		if (!cnt || !dst || dst.mime != 'directory') {
			return dfrd.reject();
		}
			
		if (!dst.write)	{
			return dfrd.reject([error, files[0].name, 'errPerm']);
		}
		
		parents = fm.parents(dst.hash);
		
		jQuery.each(files, function(i, file) {
			if (!file.read) {
				return !dfrd.reject([error, file.name, 'errPerm']);
			}
			
			if (cut && file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
			
			if (jQuery.inArray(file.hash, parents) !== -1) {
				return !dfrd.reject(['errCopyInItself', file.name]);
			}
			
			if (file.mime && file.mime !== 'directory' && ! fm.uploadMimeCheck(file.mime, dst.hash)) {
				return !dfrd.reject([error, file.name, 'errUploadMime']);
			}
			
			fparents = fm.parents(file.hash);
			fparents.pop();
			if (jQuery.inArray(dst.hash, fparents) !== -1) {
				
				if (jQuery.grep(fparents, function(h) { var d = fm.file(h); return d.phash == dst.hash && d.name == file.name ? true : false; }).length) {
					return !dfrd.reject(['errReplByChild', file.name]);
				}
			}
			
			if (file.phash == dst.hash) {
				fcopy.push(file.hash);
			} else {
				fpaste.push({
					hash  : file.hash,
					phash : file.phash,
					name  : file.name
				});
			}
		});

		if (dfrd.state() === 'rejected') {
			return dfrd;
		}

		cutDfrd = jQuery.Deferred();
		if (cut && self.options.moveConfirm) {
			fm.confirm({
				title  : 'moveFiles',
				text   : fm.i18n('confirmMove', dst.i18 || dst.name),
				accept : {
					label    : 'btnYes',
					callback : function() {  
						cutDfrd.resolve();
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() {
						cutDfrd.reject();
					}
				}
			});
		} else {
			cutDfrd.resolve();
		}

		cutDfrd.done(function() {
			jQuery.when(
				copy(fcopy),
				paste(fpaste)
			)
			.done(function(cr, pr) {
				dfrd.resolve(pr && pr.undo? pr : void(0));
			})
			.fail(function() {
				dfrd.reject();
			})
			.always(function() {
				cut && fm.clipboard([]);
			});
		}).fail(function() {
			dfrd.reject();
		});
		
		return dfrd;
	};

};
lib/js/commands/search.js000064400000010016147361034410011333 0ustar00/**
 * @class  elFinder command "search"
 * Find files
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.search = function() {
	"use strict";
	this.title          = 'Find files';
	this.options        = {ui : 'searchbutton'};
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	
	/**
	 * Return command status.
	 * Search does not support old api.
	 *
	 * @return Number
	 **/
	this.getstate = function() {
		return 0;
	};
	
	/**
	 * Send search request to backend.
	 *
	 * @param  String  search string
	 * @return jQuery.Deferred
	 **/
	this.exec = function(q, target, mime, type) {
		var fm = this.fm,
			reqDef = [],
			sType = type || '',
			onlyMimes = fm.options.onlyMimes,
			phash, targetVolids = [],
			setType = function(data) {
				if (sType && sType !== 'SearchName' && sType !== 'SearchMime') {
					data.type = sType;
				}
				return data;
			},
			rootCnt;
		
		if (typeof q == 'string' && q) {
			if (typeof target == 'object') {
				mime = target.mime || '';
				target = target.target || '';
			}
			target = target? target : '';
			if (mime) {
				mime = jQuery.trim(mime).replace(',', ' ').split(' ');
				if (onlyMimes.length) {
					mime = jQuery.map(mime, function(m){ 
						m = jQuery.trim(m);
						return m && (jQuery.inArray(m, onlyMimes) !== -1
									|| jQuery.grep(onlyMimes, function(om) { return m.indexOf(om) === 0? true : false; }).length
									)? m : null;
					});
				}
			} else {
				mime = [].concat(onlyMimes);
			}

			fm.trigger('searchstart', setType({query : q, target : target, mimes : mime}));
			
			if (! onlyMimes.length || mime.length) {
				if (target === '' && fm.api >= 2.1) {
					rootCnt = Object.keys(fm.roots).length;
					jQuery.each(fm.roots, function(id, hash) {
						reqDef.push(fm.request({
							data   : setType({cmd : 'search', q : q, target : hash, mimes : mime}),
							notify : {type : 'search', cnt : 1, hideCnt : (rootCnt > 1? false : true)},
							cancel : true,
							preventDone : true
						}));
					});
				} else {
					reqDef.push(fm.request({
						data   : setType({cmd : 'search', q : q, target : target, mimes : mime}),
						notify : {type : 'search', cnt : 1, hideCnt : true},
						cancel : true,
						preventDone : true
					}));
					if (target !== '' && fm.api >= 2.1 && Object.keys(fm.leafRoots).length) {
						jQuery.each(fm.leafRoots, function(hash, roots) {
							phash = hash;
							while(phash) {
								if (target === phash) {
									jQuery.each(roots, function() {
										var f = fm.file(this);
										f && f.volumeid && targetVolids.push(f.volumeid);
										reqDef.push(fm.request({
											data   : setType({cmd : 'search', q : q, target : this, mimes : mime}),
											notify : {type : 'search', cnt : 1, hideCnt : false},
											cancel : true,
											preventDone : true
										}));
									});
								}
								phash = (fm.file(phash) || {}).phash;
							}
						});
					}
				}
			} else {
				reqDef = [jQuery.Deferred().resolve({files: []})];
			}
			
			fm.searchStatus.mixed = (reqDef.length > 1)? targetVolids : false;
			
			return jQuery.when.apply($, reqDef).done(function(data) {
				var argLen = arguments.length,
					i;
				
				data.warning && fm.error(data.warning);
				
				if (argLen > 1) {
					data.files = (data.files || []);
					for(i = 1; i < argLen; i++) {
						arguments[i].warning && fm.error(arguments[i].warning);
						
						if (arguments[i].files) {
							data.files.push.apply(data.files, arguments[i].files);
						}
					}
				}
				
				// because "preventDone : true" so update files cache
				data.files && data.files.length && fm.cache(data.files);
				
				fm.lazy(function() {
					fm.trigger('search', data);
				}).then(function() {
					// fire event with command name + 'done'
					return fm.lazy(function() {
						fm.trigger('searchdone');
					});
				}).then(function() {
					// force update content
					data.sync && fm.sync();
				});
			});
		}
		fm.getUI('toolbar').find('.'+fm.res('class', 'searchbtn')+' :text').trigger('focus');
		return jQuery.Deferred().reject();
	};

};
lib/js/commands/rm.js000064400000034652147361034410010520 0ustar00/**
 * @class  elFinder command "rm"
 * Delete files
 *
 * @author Dmitry (dio) Levashov
 * @author Naoki Sawada
 **/
 elFinder.prototype.commands.rm = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		tpl = '<div class="ui-helper-clearfix elfinder-rm-title"><span class="elfinder-cwd-icon {class} ui-corner-all"></span>{title}<div class="elfinder-rm-desc">{desc}</div></div>',
		confirm = function(dfrd, targets, files, tHash, addTexts) {
			var cnt = targets.length,
				cwd = fm.cwd().hash,
				descs = [],
				spinner = fm.i18n('calc') + '<span class="elfinder-spinner"></span>',
				dialog, text, tmb, size, f, fname;
			
			if (cnt > 1) {
				size = 0;
				jQuery.each(files, function(h, f) { 
					if (f.size && f.size != 'unknown' && f.mime !== 'directory') {
						var s = parseInt(f.size);
						if (s >= 0 && size >= 0) {
							size += s;
						}
					} else {
						size = 'unknown';
						return false;
					}
				});
				getSize = (size === 'unknown');
				descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(size)));
				text = [jQuery(tpl.replace('{class}', 'elfinder-cwd-icon-group').replace('{title}', '<strong>' + fm.i18n('items')+ ': ' + cnt + '</strong>').replace('{desc}', descs.join('<br>')))];
			} else {
				f = files[0];
				tmb = fm.tmb(f);
				getSize = (f.mime === 'directory');
				descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(f.size)));
				descs.push(fm.i18n('modify')+': '+fm.formatDate(f));
				fname = fm.escape(f.i18 || f.name).replace(/([_.])/g, '&#8203;$1');
				text = [jQuery(tpl.replace('{class}', fm.mime2class(f.mime)).replace('{title}', '<strong>' + fname + '</strong>').replace('{desc}', descs.join('<br>')))];
			}
			
			if (addTexts) {
				text = text.concat(addTexts);
			}
			
			text.push(tHash? 'confirmTrash' : 'confirmRm');
			
			dialog = fm.confirm({
				title  : self.title,
				text   : text,
				accept : {
					label    : 'btnRm',
					callback : function() {  
						if (tHash) {
							self.toTrash(dfrd, targets, tHash);
						} else {
							remove(dfrd, targets);
						}
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() {
						fm.unlockfiles({files : targets});
						if (targets.length === 1 && fm.file(targets[0]).phash !== cwd) {
							fm.select({selected : targets});
						} else {
							fm.selectfiles({files : targets});
						}
						dfrd.reject();
					}
				}
			});
			// load thumbnail
			if (tmb) {
				jQuery('<img/>')
					.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
					.attr('src', tmb.url);
			}
			
			if (getSize) {
				getSize = fm.getSize(jQuery.map(files, function(f) { return f.mime === 'directory'? f.hash : null; })).done(function(data) {
					dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+data.formated);
				}).fail(function() {
					dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+fm.i18n('unknown'));
				}).always(function() {
					getSize = false;
				});
			}
		},
		toTrash = function(dfrd, targets, tHash) {
			var dsts = {},
				itemCnt = targets.length,
				maxCnt = self.options.toTrashMaxItems,
				checkDirs = [],
				reqDfd = jQuery.Deferred(),
				req, dirs, cnt;
			
			if (itemCnt > maxCnt) {
				self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]);
				return;
			}
			
			// Directory preparation preparation and directory enumeration
			jQuery.each(targets, function(i, h) {
				var file = fm.file(h),
					path = fm.path(h).replace(/\\/g, '/'),
					m = path.match(/^[^\/]+?(\/(?:[^\/]+?\/)*)[^\/]+?$/);
				
				if (file) {
					if (m) {
						m[1] = m[1].replace(/(^\/.*?)\/?$/, '$1');
						if (! dsts[m[1]]) {
							dsts[m[1]] = [];
						}
						dsts[m[1]].push(h);
					}
					if (file.mime === 'directory') {
						checkDirs.push(h);
					}
				}
			});
			
			// Check directory information
			if (checkDirs.length) {
				req = fm.request({
					data : {cmd : 'size', targets : checkDirs},
					notify : {type: 'readdir', cnt: 1, hideCnt: true},
					preventDefault : true
				}).done(function(data) {
					var cnt = 0;
					data.fileCnt && (cnt += parseInt(data.fileCnt));
					data.dirCnt && (cnt += parseInt(data.dirCnt));
					reqDfd[cnt > maxCnt ? 'reject' : 'resolve']();
				}).fail(function() {
					reqDfd.reject();
				});
				setTimeout(function() {
					var xhr = (req && req.xhr)? req.xhr : null;
					if (xhr && xhr.state() == 'pending') {
						req.syncOnFail(false);
						req.reject();
						reqDfd.reject();
					}
				}, self.options.infoCheckWait * 1000);
			} else {
				reqDfd.resolve();
			}
			
			// Directory creation and paste command execution
			reqDfd.done(function() {
				dirs = Object.keys(dsts);
				cnt = dirs.length;
				if (cnt) {
					fm.request({
						data   : {cmd  : 'mkdir', target : tHash, dirs : dirs}, 
						notify : {type : 'chkdir', cnt : cnt},
						preventFail : true
					})
					.fail(function(error) {
						dfrd.reject(error);
						fm.unlockfiles({files : targets});
					})
					.done(function(data) {
						var margeRes = function(data, phash, reqData) {
								var undo, prevUndo, redo, prevRedo;
								jQuery.each(data, function(k, v) {
									if (Array.isArray(v)) {
										if (res[k]) {
											res[k] = res[k].concat(v);
										} else {
											res[k] = v;
										}
									}
								});
								if (data.sync) {
									res.sync = 1;
								}
								if (data.added && data.added.length) {
									undo = function() {
										var targets = [],
											dirs    = jQuery.map(data.added, function(f) { return f.mime === 'directory'? f.hash : null; });
										jQuery.each(data.added, function(i, f) {
											if (jQuery.inArray(f.phash, dirs) === -1) {
												targets.push(f.hash);
											}
										});
										return fm.exec('restore', targets, {noToast: true});
									};
									redo = function() {
										return fm.request({
											data   : reqData,
											notify : {type : 'redo', cnt : targets.length}
										});
									};
									if (res.undo) {
										prevUndo = res.undo;
										res.undo = function() {
											undo();
											prevUndo();
										};
									} else {
										res.undo = undo;
									}
									if (res.redo) {
										prevRedo = res.redo;
										res.redo = function() {
											redo();
											prevRedo();
										};
									} else {
										res.redo = redo;
									}
								}
							},
							err = ['errTrash'],
							res = {},
							hasNtf = function() {
								return fm.ui.notify.children('.elfinder-notify-trash').length;
							},
							hashes, tm, prg, prgSt;
						
						if (hashes = data.hashes) {
							prg = 1 / cnt * 100;
							prgSt = cnt === 1? 100 : 5;
							tm = setTimeout(function() {
								fm.notify({type : 'trash', cnt : 1, hideCnt : true, progress : prgSt});
							}, fm.notifyDelay);
							jQuery.each(dsts, function(dir, files) {
								var phash = fm.file(files[0]).phash,
									reqData;
								if (hashes[dir]) {
									reqData = {cmd : 'paste', dst : hashes[dir], targets : files, cut : 1};
									fm.request({
										data : reqData,
										preventDefault : true
									})
									.fail(function(error) {
										if (error) {
											err = err.concat(error);
										}
									})
									.done(function(data) {
										data = fm.normalize(data);
										fm.updateCache(data);
										margeRes(data, phash, reqData);
										if (data.warning) {
											err = err.concat(data.warning);
											delete data.warning;
										}
										// fire some event to update cache/ui
										data.removed && data.removed.length && fm.remove(data);
										data.added   && data.added.length   && fm.add(data);
										data.changed && data.changed.length && fm.change(data);
										// fire event with command name
										fm.trigger('paste', data);
										// fire event with command name + 'done'
										fm.trigger('pastedone');
										// force update content
										data.sync && fm.sync();
									})
									.always(function() {
										var hashes = [], addTexts, end = 2;
										if (hasNtf()) {
											fm.notify({type : 'trash', cnt : 0, hideCnt : true, progress : prg});
										} else {
											prgSt+= prg;
										}
										if (--cnt < 1) {
											tm && clearTimeout(tm);
											hasNtf() && fm.notify({type : 'trash', cnt  : -1});
											fm.unlockfiles({files : targets});
											if (Object.keys(res).length) {
												if (err.length > 1) {
													if (res.removed || res.removed.length) {
														hashes = jQuery.grep(targets, function(h) {
															return jQuery.inArray(h, res.removed) === -1? true : false;
														});
													}
													if (hashes.length) {
														if (err.length > end) {
															end = (fm.messages[err[end-1]] || '').indexOf('$') === -1? end : end + 1;
														}
														dfrd.reject();
														fm.exec('rm', hashes, { addTexts: err.slice(0, end), forceRm: true });
													} else {
														fm.error(err);
													}
												}
												res._noSound = true;
												if (res.undo && res.redo) {
													res.undo = {
														cmd : 'trash',
														callback : res.undo,
													};
													res.redo = {
														cmd : 'trash',
														callback : res.redo
													};
												}
												dfrd.resolve(res);
											} else {
												dfrd.reject(err);
											}
										}
									});
								}
							});
						} else {
							dfrd.reject('errFolderNotFound');
							fm.unlockfiles({files : targets});
						}
					});
				} else {
					dfrd.reject(['error', 'The folder hierarchy to be deleting can not be determined.']);
					fm.unlockfiles({files : targets});
				}
			}).fail(function() {
				self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]);
			});
		},
		remove = function(dfrd, targets, quiet) {
			var notify = quiet? {} : {type : 'rm', cnt : targets.length};
			fm.request({
				data   : {cmd  : 'rm', targets : targets}, 
				notify : notify,
				preventFail : true
			})
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(data) {
				if (data.error || data.warning) {
					data.sync = true;
				}
				dfrd.resolve(data);
			})
			.always(function() {
				fm.unlockfiles({files : targets});
			});
		},
		getTHash = function(targets) {
			var thash = null,
				root1st;
			
			if (targets && targets.length) {
				if (targets.length > 1 && fm.searchStatus.state === 2) {
					root1st = fm.file(fm.root(targets[0])).volumeid;
					if (!jQuery.grep(targets, function(h) { return h.indexOf(root1st) !== 0? true : false ; }).length) {
						thash = fm.option('trashHash', targets[0]);
					}
				} else {
					thash = fm.option('trashHash', targets[0]);
				}
			}
			return thash;
		},
		getSize = false;
	
	// for to be able to overwrite
	this.confirm = confirm;
	this.toTrash = toTrash;
	this.remove = remove;

	this.syncTitleOnChange = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'delete ctrl+backspace shift+delete'
	}];
	this.value = 'rm';
	
	this.init = function() {
		var update = function(origin) {
			var targets;
			delete self.extra;
			self.title = fm.i18n('cmd' + self.value);
			self.className = self.value;
			self.button && self.button.children('span.elfinder-button-icon')[self.value === 'trash'? 'addClass' : 'removeClass']('elfinder-button-icon-trash');
			if (origin && origin !== 'cwd' && (self.state > -1 || origin === 'navbar')) {
				if (self.value === 'trash') {
					self.extra = {
						icon: 'rm',
						node: jQuery('<span></span>')
							.attr({title: fm.i18n('cmdrm')})
							.on('ready', function(e, data) {
								targets = data.targets;
							})
							.on('click touchstart', function(e){
								if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
									return;
								}
								e.stopPropagation();
								e.preventDefault();
								fm.getUI().trigger('click'); // to close the context menu immediately
								fm.exec('rm', targets, {_userAction: true, forceRm : true});
							})
					};
				}
			}
		};
		// re-assign for extended command
		self = this;
		fm = this.fm;
		// bind function of change
		self.change(function() {
			update();
		});
		fm.bind('contextmenucreate', function(e) {
			update(e.data.type);
		});
	};
	
	this.getstate = function(select) {
		var sel   = this.hashes(select),
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(h) {
					var f;
					fres = fres && (f = fm.file(h)) && ! f.locked && ! fm.isRoot(f)? true : false;
					return fres;
				});
			};
		
		return sel.length && filter(sel).length == sel.length ? 0 : -1;
	};
	
	this.exec = function(hashes, cOpts) {
		var opts   = cOpts || {},
			dfrd   = jQuery.Deferred()
				.always(function() {
					if (getSize && getSize.state && getSize.state() === 'pending') {
						getSize.reject();
					}
				})
				.fail(function(error) {
					error && fm.error(error);
				}).done(function(data) {
					!opts.quiet && !data._noSound && data.removed && data.removed.length && fm.trigger('playsound', {soundFile : 'rm.wav'});
				}),
			files  = self.files(hashes),
			cnt    = files.length,
			tHash  = null,
			addTexts = opts.addTexts? opts.addTexts : null,
			forceRm = opts.forceRm,
			quiet = opts.quiet,
			targets;

		if (! cnt) {
			return dfrd.reject();
		}
		
		jQuery.each(files, function(i, file) {
			if (fm.isRoot(file)) {
				return !dfrd.reject(['errRm', file.name, 'errPerm']);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});

		if (dfrd.state() === 'pending') {
			targets = self.hashes(hashes);
			cnt     = files.length;
			
			if (forceRm || (self.event && self.event.originalEvent && self.event.originalEvent.shiftKey)) {
				tHash = '';
				self.title = fm.i18n('cmdrm');
			}
			
			if (tHash === null) {
				tHash = getTHash(targets);
			}
			
			fm.lockfiles({files : targets});
			
			if (tHash && self.options.quickTrash) {
				self.toTrash(dfrd, targets, tHash);
			} else {
				if (quiet) {
					remove(dfrd, targets, quiet);
				} else {
					self.confirm(dfrd, targets, files, tHash, addTexts);
				}
			}
		}
			
		return dfrd;
	};

	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var targets = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		if (targets && targets.length) {
			self.update(void(0), (targets? getTHash(targets) : fm.option('trashHash'))? 'trash' : 'rm');
		}
	});

};
lib/js/commands/reload.js000064400000003560147361034410011342 0ustar00/**
 * @class  elFinder command "reload"
 * Sync files and folders
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.reload = function() {
	"use strict";
	var self   = this,
		search = false;
	
	this.alwaysEnabled = true;
	this.updateOnSelect = true;
	
	this.shortcuts = [{
		pattern     : 'ctrl+shift+r f5'
	}];
	
	this.getstate = function() {
		return 0;
	};
	
	this.init = function() {
		this.fm.bind('search searchend', function() {
			search = this.type == 'search';
		});
	};
	
	this.fm.bind('contextmenu', function(){
		var fm = self.fm;
		if (fm.options.sync >= 1000) {
			self.extra = {
				icon: 'accept',
				node: jQuery('<span></span>')
					.attr({title: fm.i18n('autoSync')})
					.on('click touchstart', function(e){
						if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
							return;
						}
						e.stopPropagation();
						e.preventDefault();
						jQuery(this).parent()
							.toggleClass('ui-state-disabled', fm.options.syncStart)
							.parent().removeClass('ui-state-hover');
						fm.options.syncStart = !fm.options.syncStart;
						fm.autoSync(fm.options.syncStart? null : 'stop');
					}).on('ready', function(){
						jQuery(this).parent().toggleClass('ui-state-disabled', !fm.options.syncStart).css('pointer-events', 'auto');
					})
			};
		}
	});
	
	this.exec = function() {
		var fm = this.fm;
		if (!search) {
			var dfrd    = fm.sync(),
				timeout = setTimeout(function() {
					fm.notify({type : 'reload', cnt : 1, hideCnt : true});
					dfrd.always(function() { fm.notify({type : 'reload', cnt  : -1}); });
				}, fm.notifyDelay);
				
			return dfrd.always(function() { 
				clearTimeout(timeout); 
				fm.trigger('reload');
			});
		} else {
			jQuery('div.elfinder-toolbar > div.'+fm.res('class', 'searchbtn') + ' > span.ui-icon-search').click();
		}
	};

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/selectinvert.js000064400000000727147361034410012605 0ustar00/**
 * @class  elFinder command "selectinvert"
 * Invert Selection of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectinvert = function() {
	"use strict";
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function() {
		jQuery(document).trigger(jQuery.Event('keydown', { keyCode: 73, ctrlKey : true, shiftKey : true, altKey : false, metaKey : false }));
		return jQuery.Deferred().resolve();
	};

};
lib/js/commands/selectall.js000064400000001136147361034410012041 0ustar00/**
 * @class  elFinder command "selectall"
 * Select ALL of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectall = function() {
	"use strict";
	var self = this,
		state = 0;
	
	this.fm.bind('select', function(e) {
		state = (e.data && e.data.selectall)? -1 : 0;
	});
	
	this.state = 0;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return state;
	};
	
	this.exec = function() {
		jQuery(document).trigger(jQuery.Event('keydown', { keyCode: 65, ctrlKey : true, shiftKey : false, altKey : false, metaKey : false }));
		return jQuery.Deferred().resolve();
	};
};
lib/js/commands/opennew.js000064400000002332147361034410011543 0ustar00/**
 * @class  elFinder command "opennew"
 * Open folder in new window
 *
 * @author Naoki Sawada
 **/  
elFinder.prototype.commands.opennew = function() {
	"use strict";
	var fm = this.fm;

	this.shortcuts = [{
		pattern  : (typeof(fm.options.getFileCallback) === 'function'? 'shift+' : '') + 'ctrl+enter'
	}];

	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
		
		return cnt === 1 
			? (sel[0].mime === 'directory' && sel[0].read? 0 : -1) 
			: -1;
	};
	
	this.exec = function(hashes) {
		var dfrd  = jQuery.Deferred(),
			files = this.files(hashes),
			cnt   = files.length,
			opts  = this.options,
			file, loc, url, win;

		// open folder to new tab (window)
		if (cnt === 1 && (file = files[0]) && file.mime === 'directory') {
			loc = window.location;
			if (opts.url) {
				url = opts.url;
			} else {
				url = loc.pathname;
			}
			if (opts.useOriginQuery) {
				if (!url.match(/\?/)) {
					url += loc.search;
				} else if (loc.search) {
					url += '&' + loc.search.substr(1);
				}
			}
			url += '#elf_' + file.hash;
			win = window.open(url, '_blank');
			setTimeout(function() {
				win.focus();
			}, 1000);
			return dfrd.resolve();
		} else {
			return dfrd.reject();
		}
	};
};
lib/js/commands/colwidth.js000064400000000740147361034410011706 0ustar00/**
 * @class  elFinder command "colwidth"
 * CWD list table columns width to auto
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.colwidth = function() {
	"use strict";
	this.alwaysEnabled = true;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return this.fm.getUI('cwd').find('table').css('table-layout') === 'fixed' ? 0 : -1;
	};
	
	this.exec = function() {
		this.fm.getUI('cwd').trigger('colwidth');
		return jQuery.Deferred().resolve();
	};
	
};lib/js/commands/upload.js000064400000030630147361034410011356 0ustar00/**
 * @class elFinder command "upload"
 * Upload files using iframe or XMLHttpRequest & FormData.
 * Dialog allow to send files using drag and drop
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
 elFinder.prototype.commands.upload = function() {
	"use strict";
	var hover = this.fm.res('class', 'hover');
	
	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	
	// Shortcut opens dialog
	this.shortcuts = [{
		pattern     : 'ctrl+u'
	}];
	
	/**
	 * Return command state
	 *
	 * @return Number
	 **/
	this.getstate = function(select) {
		var fm = this.fm, f,
		sel = (select || [fm.cwd().hash]);
		if (!this._disabled && sel.length == 1) {
			f = fm.file(sel[0]);
		}
		return (f && f.mime == 'directory' && f.write)? 0 : -1;
	};
	
	
	this.exec = function(data) {
		var fm = this.fm,
			cwdHash = fm.cwd().hash,
			getTargets = function() {
				var tgts = data && (data instanceof Array)? data : null,
					sel;
				if (! data || data instanceof Array) {
					if (! tgts && (sel = fm.selected()).length === 1 && fm.file(sel[0]).mime === 'directory') {
						tgts = sel;
					} else if (!tgts || tgts.length !== 1 || fm.file(tgts[0]).mime !== 'directory') {
						tgts = [ cwdHash ];
					}
				}
				return tgts;
			},
			targets = getTargets(),
			check = targets? targets[0] : (data && data.target? data.target : null),
			targetDir = check? fm.file(check) : fm.cwd(),
			fmUpload = function(data) {
				fm.upload(data)
					.fail(function(error) {
						dfrd.reject(error);
					})
					.done(function(data) {
						var cwd = fm.getUI('cwd'),
							node;
						dfrd.resolve(data);
						if (data && data.added && data.added[0] && ! fm.ui.notify.children('.elfinder-notify-upload').length) {
							var newItem = fm.findCwdNodes(data.added);
							if (newItem.length) {
								newItem.trigger('scrolltoview');
							} else {
								if (targetDir.hash !== cwdHash) {
									node = jQuery('<div></div>').append(
										jQuery('<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all elfinder-tabstop"><span class="ui-button-text">'+fm.i18n('cmdopendir')+'</span></button>')
										.on('mouseenter mouseleave', function(e) { 
											jQuery(this).toggleClass('ui-state-hover', e.type == 'mouseenter');
										}).on('click', function() {
											fm.exec('open', check).done(function() {
												fm.one('opendone', function() {
													fm.trigger('selectfiles', {files : jQuery.map(data.added, function(f) {return f.hash;})});
												});
											});
										})
									);
								} else {
									fm.trigger('selectfiles', {files : jQuery.map(data.added, function(f) {return f.hash;})});
								}
								fm.toast({msg: fm.i18n(['complete', fm.i18n('cmdupload')]), extNode: node});
							}
						}
					})
					.progress(function() {
						dfrd.notifyWith(this, Array.from(arguments));
					});
			},
			upload = function(data) {
				dialog.elfinderdialog('close');
				if (targets) {
					data.target = targets[0];
				}
				fmUpload(data);
			},
			getSelector = function() {
				var hash = targetDir.hash,
					dirs = jQuery.map(fm.files(hash), function(f) {
						return (f.mime === 'directory' && f.write)? f : null; 
					});
				
				if (! dirs.length) {
					return jQuery();
				}
				
				return jQuery('<div class="elfinder-upload-dirselect elfinder-tabstop" title="' + fm.i18n('folders') + '"></div>')
				.on('click', function(e) {
					e.stopPropagation();
					e.preventDefault();
					dirs = fm.sortFiles(dirs);
					var $this  = jQuery(this),
						cwd    = fm.cwd(),
						base   = dialog.closest('div.ui-dialog'),
						getRaw = function(f, icon) {
							return {
								label    : fm.escape(f.i18 || f.name),
								icon     : icon,
								remain   : false,
								callback : function() {
									var title = base.children('.ui-dialog-titlebar:first').find('span.elfinder-upload-target');
									targets = [ f.hash ];
									title.html(' - ' + fm.escape(f.i18 || f.name));
									$this.trigger('focus');
								},
								options  : {
									className : (targets && targets.length && f.hash === targets[0])? 'ui-state-active' : '',
									iconClass : f.csscls || '',
									iconImg   : f.icon   || ''
								}
							};
						},
						raw = [ getRaw(targetDir, 'opendir'), '|' ];
					jQuery.each(dirs, function(i, f) {
						raw.push(getRaw(f, 'dir'));
					});
					$this.trigger('blur');
					fm.trigger('contextmenu', {
						raw: raw,
						x: e.pageX || jQuery(this).offset().left,
						y: e.pageY || jQuery(this).offset().top,
						prevNode: base,
						fitHeight: true
					});
				}).append('<span class="elfinder-button-icon elfinder-button-icon-dir" ></span>');
			},
			inputButton = function(type, caption) {
				var button,
					input = jQuery('<input type="file" ' + type + '/>')
					.on('click', function() {
						// for IE's bug
						if (fm.UA.IE) {
							setTimeout(function() {
								form.css('display', 'none').css('position', 'relative');
								requestAnimationFrame(function() {
									form.css('display', '').css('position', '');
								});
							}, 100);
						}
					})
					.on('change', function() {
						upload({input : input.get(0), type : 'files'});
					})
					.on('dragover', function(e) {
						e.originalEvent.dataTransfer.dropEffect = 'copy';
					}),
					form = jQuery('<form></form>').append(input).on('click', function(e) {
						e.stopPropagation();
					});

				return jQuery('<div class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only elfinder-tabstop elfinder-focus"><span class="ui-button-text">'+fm.i18n(caption)+'</span></div>')
					.append(form)
					.on('click', function(e) {
						e.stopPropagation();
						e.preventDefault();
						input.trigger('click');
					})
					.on('mouseenter mouseleave', function(e) {
						jQuery(this).toggleClass(hover, e.type === 'mouseenter');
					});
			},
			dfrd = jQuery.Deferred(),
			dialog, dropbox, pastebox, dropUpload, paste, dirs, spinner, uidialog;
		
		dropUpload = function(e) {
			e.stopPropagation();
			e.preventDefault();
			var file = false,
				type = '',
				elfFrom = null,
				mycwd = '',
				data = null,
				target = e._target || null,
				trf = e.dataTransfer || null,
				kind = '',
				errors;
			
			if (trf) {
				if (trf.types && trf.types.length && jQuery.inArray('Files', trf.types) !== -1) {
				    kind = 'file';
				}
				else if (trf.items && trf.items.length && trf.items[0].kind) {
				    kind = trf.items[0].kind;
				}

				try {
					elfFrom = trf.getData('elfinderfrom');
					if (elfFrom) {
						mycwd = window.location.href + fm.cwd().hash;
						if ((!target && elfFrom === mycwd) || target === mycwd) {
							dfrd.reject();
							return;
						}
					}
				} catch(e) {}
				
				if (kind === 'file' && (trf.items[0].getAsEntry || trf.items[0].webkitGetAsEntry)) {
					file = trf;
					type = 'data';
				} else if (kind !== 'string' && trf.files && trf.files.length && jQuery.inArray('Text', trf.types) === -1) {
					file = trf.files;
					type = 'files';
				} else {
					try {
						if ((data = trf.getData('text/html')) && data.match(/<(?:img|a)/i)) {
							file = [ data ];
							type = 'html';
						}
					} catch(e) {}
					if (! file) {
						if (data = trf.getData('text')) {
							file = [ data ];
							type = 'text';
						} else if (trf && trf.files) {
							// maybe folder uploading but this UA dose not support it
							kind = 'file';
						}
					}
				}
			}
			if (file) {
				fmUpload({files : file, type : type, target : target, dropEvt : e});
			} else {
				errors = ['errUploadNoFiles'];
				if (kind === 'file') {
					errors.push('errFolderUpload');
				}
				fm.error(errors);
				dfrd.reject();
			}
		};
		
		if (!targets && data) {
			if (data.input || data.files) {
				data.type = 'files';
				fmUpload(data);
			} else if (data.dropEvt) {
				dropUpload(data.dropEvt);
			}
			return dfrd;
		}
		
		paste = function(ev) {
			var e = ev.originalEvent || ev;
			var files = [], items = [];
			var file;
			if (e.clipboardData) {
				if (e.clipboardData.items && e.clipboardData.items.length){
					items = e.clipboardData.items;
					for (var i=0; i < items.length; i++) {
						if (e.clipboardData.items[i].kind == 'file') {
							file = e.clipboardData.items[i].getAsFile();
							files.push(file);
						}
					}
				} else if (e.clipboardData.files && e.clipboardData.files.length) {
					files = e.clipboardData.files;
				}
				if (files.length) {
					upload({files : files, type : 'files', clipdata : true});
					return;
				}
			}
			var my = e.target || e.srcElement;
			requestAnimationFrame(function() {
				var type = 'text',
					src;
				if (my.innerHTML) {
					jQuery(my).find('img').each(function(i, v){
						if (v.src.match(/^webkit-fake-url:\/\//)) {
							// For Safari's bug.
							// ref. https://bugs.webkit.org/show_bug.cgi?id=49141
							//      https://dev.ckeditor.com/ticket/13029
							jQuery(v).remove();
						}
					});
					
					if (jQuery(my).find('a,img').length) {
						type = 'html';
					}
					src = my.innerHTML;
					my.innerHTML = '';
					upload({files : [ src ], type : type});
				}
			});
		};
		
		dialog = jQuery('<div class="elfinder-upload-dialog-wrapper"></div>')
			.append(inputButton('multiple', 'selectForUpload'));
		
		if (! fm.UA.Mobile && (function(input) {
			return (typeof input.webkitdirectory !== 'undefined' || typeof input.directory !== 'undefined');})(document.createElement('input'))) {
			dialog.append(inputButton('multiple webkitdirectory directory', 'selectFolder'));
		}
		
		if (targetDir.dirs) {
			
			if (targetDir.hash === cwdHash || fm.navHash2Elm(targetDir.hash).hasClass('elfinder-subtree-loaded')) {
				getSelector().appendTo(dialog);
			} else {
				spinner = jQuery('<div class="elfinder-upload-dirselect" title="' + fm.i18n('nowLoading') + '"></div>')
					.append('<span class="elfinder-button-icon elfinder-button-icon-spinner" ></span>')
					.appendTo(dialog);
				fm.request({cmd : 'tree', target : targetDir.hash})
					.done(function() { 
						fm.one('treedone', function() {
							spinner.replaceWith(getSelector());
							uidialog.elfinderdialog('tabstopsInit');
						});
					})
					.fail(function() {
						spinner.remove();
					});
			}
		}
		
		if (fm.dragUpload) {
			dropbox = jQuery('<div class="ui-corner-all elfinder-upload-dropbox elfinder-tabstop" contenteditable="true" data-ph="'+fm.i18n('dropPasteFiles')+'"></div>')
				.on('paste', function(e){
					paste(e);
				})
				.on('mousedown click', function(){
					jQuery(this).trigger('focus');
				})
				.on('focus', function(){
					this.innerHTML = '';
				})
				.on('mouseover', function(){
					jQuery(this).addClass(hover);
				})
				.on('mouseout', function(){
					jQuery(this).removeClass(hover);
				})
				.on('dragenter', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
				  	jQuery(this).addClass(hover);
				})
				.on('dragleave', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
				  	jQuery(this).removeClass(hover);
				})
				.on('dragover', function(e) {
					e.stopPropagation();
				  	e.preventDefault();
					e.originalEvent.dataTransfer.dropEffect = 'copy';
					jQuery(this).addClass(hover);
				})
				.on('drop', function(e) {
					dialog.elfinderdialog('close');
					targets && (e.originalEvent._target = targets[0]);
					dropUpload(e.originalEvent);
				})
				.prependTo(dialog)
				.after('<div class="elfinder-upload-dialog-or">'+fm.i18n('or')+'</div>')[0];
			
		} else {
			pastebox = jQuery('<div class="ui-corner-all elfinder-upload-dropbox" contenteditable="true">'+fm.i18n('dropFilesBrowser')+'</div>')
				.on('paste drop', function(e){
					paste(e);
				})
				.on('mousedown click', function(){
					jQuery(this).trigger('focus');
				})
				.on('focus', function(){
					this.innerHTML = '';
				})
				.on('dragenter mouseover', function(){
					jQuery(this).addClass(hover);
				})
				.on('dragleave mouseout', function(){
					jQuery(this).removeClass(hover);
				})
				.prependTo(dialog)
				.after('<div class="elfinder-upload-dialog-or">'+fm.i18n('or')+'</div>')[0];
			
		}
		
		uidialog = this.fmDialog(dialog, {
			title          : this.title + '<span class="elfinder-upload-target">' + (targetDir? ' - ' + fm.escape(targetDir.i18 || targetDir.name) : '') + '</span>',
			modal          : true,
			resizable      : false,
			destroyOnClose : true,
			propagationEvents : ['mousemove', 'mouseup', 'click'],
			close          : function() {
				var cm = fm.getUI('contextmenu');
				if (cm.is(':visible')) {
					cm.click();
				}
			}
		});
		
		return dfrd;
	};

};
lib/js/commands/netmount.js000064400000024671147361034410011753 0ustar00/**
 * @class  elFinder command "netmount"
 * Mount network volume with user credentials.
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.netmount = function() {
	"use strict";
	var self = this,
		hasMenus = false,
		content;

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.drivers = [];
	
	this.handlers = {
		load : function() {
			this.button.hide();
			var fm = self.fm;
			if (fm.cookieEnabled) {
				fm.one('open', function() {
					self.drivers = fm.netDrivers;
					if (self.drivers.length) {
						jQuery.each(self.drivers, function() {
							var d = self.options[this];
							if (d) {
								hasMenus = true;
								if (d.integrateInfo) {
									fm.trigger('helpIntegration', Object.assign({cmd: 'netmount'}, d.integrateInfo));
								}
							}
						});
					}
				});
			}
		}
	};

	this.getstate = function() {
		return hasMenus ? 0 : -1;
	};
	
	this.exec = function() {
		var fm = self.fm,
			dfrd = jQuery.Deferred(),
			o = self.options,
			create = function() {
				var winFocus = function() {
						inputs.protocol.trigger('change', 'winfocus');
					},
					inputs = {
						protocol : jQuery('<select></select>')
						.on('change', function(e, data){
							var protocol = this.value;
							content.find('.elfinder-netmount-tr').hide();
							content.find('.elfinder-netmount-tr-'+protocol).show();
							dialogNode && dialogNode.children('.ui-dialog-buttonpane:first').find('button').show();
							if (typeof o[protocol].select == 'function') {
								o[protocol].select(fm, e, data);
							}
						})
						.addClass('ui-corner-all')
					},
					opts = {
						title          : fm.i18n('netMountDialogTitle'),
						resizable      : true,
						modal          : true,
						destroyOnClose : false,
						open           : function() {
							jQuery(window).on('focus.'+fm.namespace, winFocus);
							inputs.protocol.trigger('change');
						},
						close          : function() { 
							dfrd.state() == 'pending' && dfrd.reject();
							jQuery(window).off('focus.'+fm.namespace, winFocus);
						},
						buttons        : {}
					},
					doMount = function() {
						var protocol = inputs.protocol.val(),
							data = {cmd : 'netmount', protocol: protocol},
							cur = o[protocol],
							mnt2res;
						jQuery.each(content.find('input.elfinder-netmount-inputs-'+protocol), function(name, input) {
							var val, elm;
							elm = jQuery(input);
							if (elm.is(':radio,:checkbox')) {
								if (elm.is(':checked')) {
									val = jQuery.trim(elm.val());
								}
							} else {
								val = jQuery.trim(elm.val());
							}
							if (val) {
								data[input.name] = val;
							}
						});

						if (!data.host) {
							return fm.trigger('error', {error : 'errNetMountHostReq', opts : {modal: true}});
						}

						if (data.mnt2res) {
							mnt2res = true;
						}

						fm.request({data : data, notify : {type : 'netmount', cnt : 1, hideCnt : true}})
							.done(function(data) {
								var pdir;
								if (data.added && data.added.length) {
									mnt2res && inputs.protocol.trigger('change', 'reset');
									if (data.added[0].phash) {
										if (pdir = fm.file(data.added[0].phash)) {
											if (! pdir.dirs) {
												pdir.dirs = 1;
												fm.change({ changed: [ pdir ] });
											}
										}
									}
									fm.one('netmountdone', function() {
										fm.exec('open', data.added[0].hash);
									});
								}
								dfrd.resolve();
							})
							.fail(function(error) {
								if (cur.fail && typeof cur.fail == 'function') {
									cur.fail(fm, fm.parseError(error));
								}
								dfrd.reject(error);
							});
	
						self.dialog.elfinderdialog('close');
					},
					form = jQuery('<form autocomplete="off"></form>').on('keydown', 'input', function(e) {
						var comp = true,
							next;
						if (e.keyCode === jQuery.ui.keyCode.ENTER) {
							jQuery.each(form.find('input:visible:not(.elfinder-input-optional)'), function() {
								if (jQuery(this).val() === '') {
									comp = false;
									next = jQuery(this);
									return false;
								}
							});
							if (comp) {
								doMount();
							} else {
								next.trigger('focus');
							}
						}
					}),
					hidden  = jQuery('<div></div>'),
					dialog;

				content = jQuery('<table class="elfinder-info-tb elfinder-netmount-tb"></table>')
					.append(jQuery('<tr></tr>').append(jQuery('<td>'+fm.i18n('protocol')+'</td>')).append(jQuery('<td></td>').append(inputs.protocol)));

				jQuery.each(self.drivers, function(i, protocol) {
					if (o[protocol]) {
						inputs.protocol.append('<option value="'+protocol+'">'+fm.i18n(o[protocol].name || protocol)+'</option>');
						jQuery.each(o[protocol].inputs, function(name, input) {
							input.attr('name', name);
							if (input.attr('type') != 'hidden') {
								input.addClass('ui-corner-all elfinder-netmount-inputs-'+protocol);
								content.append(jQuery('<tr></tr>').addClass('elfinder-netmount-tr elfinder-netmount-tr-'+protocol).append(jQuery('<td>'+fm.i18n(name)+'</td>')).append(jQuery('<td></td>').append(input)));
							} else {
								input.addClass('elfinder-netmount-inputs-'+protocol);
								hidden.append(input);
							}
						});
						o[protocol].protocol = inputs.protocol;
					}
				});
				
				content.append(hidden);
				
				content.find('.elfinder-netmount-tr').hide();
				content.find('.elfinder-netmount-tr-' + self.drivers[0]).show();

				opts.buttons[fm.i18n('btnMount')] = doMount;

				opts.buttons[fm.i18n('btnCancel')] = function() {
					self.dialog.elfinderdialog('close');
				};
				
				content.find('select,input').addClass('elfinder-tabstop');
				
				dialog = self.fmDialog(form.append(content), opts).ready(function() {
					inputs.protocol.trigger('change');
					dialog.elfinderdialog('posInit');
				});
				dialogNode = dialog.closest('.ui-dialog');
				return dialog;
			},
			dialogNode;
		
		if (!self.dialog) {
			self.dialog = create();
		} else {
			self.dialog.elfinderdialog('open');
		}

		return dfrd.promise();
	};

	self.fm.bind('netmount', function(e) {
		var d = e.data || null,
			o = self.options,
			done = function() {
				if (o[d.protocol] && typeof o[d.protocol].done == 'function') {
					o[d.protocol].done(self.fm, d);
					content.find('select,input').addClass('elfinder-tabstop');
					self.dialog.elfinderdialog('tabstopsInit');
				}
			};
		if (d && d.protocol) {
			if (d.mode && d.mode === 'redirect') {
				// To support of third-party cookie blocking (ITP) on CORS
				// On iOS and iPadOS 13.4 and Safari 13.1 on macOS, the session cannot be continued when redirecting OAuth in CORS mode
				self.fm.request({
					data : {cmd : 'netmount', protocol : d.protocol, host: d.host, user : 'init', pass : 'return', options: d.options}, 
					preventDefault : true
				}).done(function(data) {
					d = JSON.parse(data.body);
					done();
				});
			} else {
				done();
			}
		}
	});

};

elFinder.prototype.commands.netunmount = function() {
	var self = this;

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.drivers = [];
	
	this.handlers = {
		load : function() {
			this.drivers = this.fm.netDrivers;
		}
	};

	this.getstate = function(sel) {
		var fm = this.fm,
			file;
		return !!sel && this.drivers.length && !this._disabled && (file = fm.file(sel[0])) && file.netkey ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var self   = this,
			fm     = this.fm,
			dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}),
			drive  = fm.file(hashes[0]),
			childrenRoots = function(hash) {
				var roots = [],
					work;
				if (fm.leafRoots) {
					work = [];
					jQuery.each(fm.leafRoots, function(phash, hashes) {
						var parents = fm.parents(phash),
							idx, deep;
						if ((idx = jQuery.inArray(hash, parents)) !== -1) {
							idx = parents.length - idx;
							jQuery.each(hashes, function(i, h) {
								work.push({i: idx, hash: h});
							});
						}
					});
					if (work.length) {
						work.sort(function(a, b) { return a.i < b.i; });
						jQuery.each(work, function(i, o) {
							roots.push(o.hash);
						});
					}
				}
				return roots;
			};

		if (this._disabled) {
			return dfrd.reject();
		}

		if (dfrd.state() == 'pending') {
			fm.confirm({
				title  : self.title,
				text   : fm.i18n('confirmUnmount', drive.name),
				accept : {
					label    : 'btnUnmount',
					callback : function() {  
						var target =  drive.hash,
							roots = childrenRoots(target),
							requests = [],
							removed = [],
							doUmount = function() {
								jQuery.when(requests).done(function() {
									fm.request({
										data   : {cmd  : 'netmount', protocol : 'netunmount', host: drive.netkey, user : target, pass : 'dum'}, 
										notify : {type : 'netunmount', cnt : 1, hideCnt : true},
										preventFail : true
									})
									.fail(function(error) {
										dfrd.reject(error);
									})
									.done(function(data) {
										drive.volumeid && delete fm.volumeExpires[drive.volumeid];
										dfrd.resolve();
									});
								}).fail(function(error) {
									if (removed.length) {
										fm.remove({ removed: removed });
									}
									dfrd.reject(error);
								});
							};
						
						if (roots.length) {
							fm.confirm({
								title : self.title,
								text  : (function() {
									var msgs = ['unmountChildren'];
									jQuery.each(roots, function(i, hash) {
										msgs.push([fm.file(hash).name]);
									});
									return msgs;
								})(),
								accept : {
									label : 'btnUnmount',
									callback : function() {
										jQuery.each(roots, function(i, hash) {
											var d = fm.file(hash);
											if (d.netkey) {
												requests.push(fm.request({
													data   : {cmd  : 'netmount', protocol : 'netunmount', host: d.netkey, user : d.hash, pass : 'dum'}, 
													notify : {type : 'netunmount', cnt : 1, hideCnt : true},
													preventDefault : true
												}).done(function(data) {
													if (data.removed) {
														d.volumeid && delete fm.volumeExpires[d.volumeid];
														removed = removed.concat(data.removed);
													}
												}));
											}
										});
										doUmount();
									}
								},
								cancel : {
									label : 'btnCancel',
									callback : function() {
										dfrd.reject();
									}
								}
							});
						} else {
							requests = null;
							doUmount();
						}
					}
				},
				cancel : {
					label    : 'btnCancel',
					callback : function() { dfrd.reject(); }
				}
			});
		}
			
		return dfrd;
	};

};
lib/js/commands/resize.js000064400000150255147361034410011401 0ustar00/**
 * @class  elFinder command "resize"
 * Open dialog to resize image
 *
 * @author Dmitry (dio) Levashov
 * @author Alexey Sukhotin
 * @author Naoki Sawada
 * @author Sergio Jovani
 **/
 elFinder.prototype.commands.resize = function() {
	"use strict";
	var fm = this.fm,
		losslessRotate = 0,
		getBounceBox = function(w, h, theta) {
			var srcPts = [
					{x: w/2, y: h/2},
					{x: -w/2, y: h/2},
					{x: -w/2, y: -h/2},
					{x: w/2, y: -h/2}
				],
				dstPts = [],
				min = {x: Number.MAX_VALUE, y: Number.MAX_VALUE},
				max = {x: Number.MIN_VALUE, y: Number.MIN_VALUE};
			jQuery.each(srcPts, function(i, srcPt){
				dstPts.push({
					x: srcPt.x * Math.cos(theta) - srcPt.y * Math.sin(theta),
					y: srcPt.x * Math.sin(theta) + srcPt.y * Math.cos(theta)
				});
			});
			jQuery.each(dstPts, function(i, pt) {
				min.x = Math.min(min.x, pt.x);
				min.y = Math.min(min.y, pt.y);
				max.x = Math.max(max.x, pt.x);
				max.y = Math.max(max.y, pt.y);
			});
			return {
				width: max.x - min.x, height: max.y - min.y
			};
		};
	
	this.updateOnSelect = false;
	
	this.getstate = function() {
		var sel = fm.selectedFiles();
		return sel.length == 1 && sel[0].read && sel[0].write && sel[0].mime.indexOf('image/') !== -1 ? 0 : -1;
	};
	
	this.resizeRequest = function(data, f, dfrd) {
		var file = f || fm.file(data.target),
			tmb  = file? file.tmb : null,
			enabled = fm.isCommandEnabled('resize', data.target);
		
		if (enabled && (! file || (file && file.read && file.write && file.mime.indexOf('image/') !== -1 ))) {
			return fm.request({
				data : Object.assign(data, {
					cmd : 'resize'
				}),
				notify : {type : 'resize', cnt : 1}
			})
			.fail(function(error) {
				if (dfrd) {
					dfrd.reject(error);
				}
			})
			.done(function() {
				if (data.quality) {
					fm.storage('jpgQuality', data.quality === fm.option('jpgQuality')? null : data.quality);
				}
				dfrd && dfrd.resolve();
			});
		} else {
			var error;
			
			if (file) {
				if (file.mime.indexOf('image/') === -1) {
					error = ['errResize', file.name, 'errUsupportType'];
				} else {
					error = ['errResize', file.name, 'errPerm'];
				}
			} else {
				error = ['errResize', data.target, 'errPerm'];
			}
			
			if (dfrd) {
				dfrd.reject(error);
			} else {
				fm.error(error);
			}
			return jQuery.Deferred().reject(error);
		}
	};
	
	this.exec = function(hashes) {
		var self  = this,
			files = this.files(hashes),
			dfrd  = jQuery.Deferred(),
			api2  = (fm.api > 1),
			options = this.options,
			dialogWidth = 650,
			fmnode = fm.getUI(),
			ctrgrup = jQuery().controlgroup? 'controlgroup' : 'buttonset',
			grid8Def = typeof options.grid8px === 'undefined' || options.grid8px !== 'disable'? true : false,
			presetSize = Array.isArray(options.presetSize)? options.presetSize : [],
			clactive = 'elfinder-dialog-active',
			clsediting = fm.res('class', 'editing'),
			open = function(file, id, src) {
				var isJpeg   = (file.mime === 'image/jpeg'),
					dialog   = jQuery('<div class="elfinder-resize-container"></div>'),
					input    = '<input type="number" class="ui-corner-all"/>',
					row      = '<div class="elfinder-resize-row"></div>',
					label    = '<div class="elfinder-resize-label"></div>',
					changeTm = null,
					operate  = false,
					opStart  = function() { operate = true; },
					opStop   = function() {
						if (operate) {
							operate = false;
							control.trigger('change');
						}
					},
					control  = jQuery('<div class="elfinder-resize-control"></div>')
						.on('focus', 'input[type=text],input[type=number]', function() {
							jQuery(this).trigger('select');
						})
						.on('change', function() {
							changeTm && cancelAnimationFrame(changeTm);
							changeTm = requestAnimationFrame(function() {
								var panel, quty, canvas, ctx, img, sx, sy, sw, sh, deg, theta, bb;
								if (sizeImg && ! operate && (canvas = sizeImg.data('canvas'))) {
									panel = control.children('div.elfinder-resize-control-panel:visible');
									quty = panel.find('input.elfinder-resize-quality');
									if (quty.is(':visible')) {
										ctx = sizeImg.data('ctx');
										img = sizeImg.get(0);
										if (panel.hasClass('elfinder-resize-uiresize')) {
											// resize
											sw = canvas.width = width.val();
											sh = canvas.height = height.val();
											ctx.drawImage(img, 0, 0, sw, sh);
										} else if (panel.hasClass('elfinder-resize-uicrop')) {
											// crop
											sx = pointX.val();
											sy = pointY.val();
											sw = offsetX.val();
											sh = offsetY.val();
											canvas.width = sw;
											canvas.height = sh;
											ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh);
										} else {
											// rotate
											deg = degree.val();
											theta = (degree.val() * Math.PI) / 180;
											bb = getBounceBox(owidth, oheight, theta);
											sw = canvas.width = bb.width;
											sh = canvas.height = bb.height;
											ctx.save();
											if (deg % 90 !== 0) {
												ctx.fillStyle = bg.val() || '#FFF';
												ctx.fillRect(0, 0, sw, sh);
											}
											ctx.translate(sw / 2, sh / 2);
											ctx.rotate(theta);
											ctx.drawImage(img, -img.width/2, -img.height/2, owidth, oheight);
											ctx.restore();
										}
										canvas.toBlob(function(blob) {
											if (blob) {
												size1 = blob.size;
												quty.next('span').text(' (' + fm.formatSize(blob.size) + ')');
											}
										}, 'image/jpeg', Math.max(Math.min(quty.val(), 100), 1) / 100);
									}
								}
							});
						})
						.on('mouseup', 'input', function(e) {
							jQuery(e.target).trigger('change');
						}),
					preview  = jQuery('<div class="elfinder-resize-preview"></div>')
						.on('touchmove', function(e) {
							if (jQuery(e.target).hasClass('touch-punch')) {
								e.stopPropagation();
								e.preventDefault();
							}
						}),
					spinner  = jQuery('<div class="elfinder-resize-loading">'+fm.i18n('ntfloadimg')+'</div>'),
					rhandle  = jQuery('<div class="elfinder-resize-handle touch-punch"></div>'),
					rhandlec = jQuery('<div class="elfinder-resize-handle touch-punch"></div>'),
					uiresize = jQuery('<div class="elfinder-resize-uiresize elfinder-resize-control-panel"></div>'),
					uicrop   = jQuery('<div class="elfinder-resize-uicrop elfinder-resize-control-panel"></div>'),
					uirotate = jQuery('<div class="elfinder-resize-rotate elfinder-resize-control-panel"></div>'),
					uideg270 = jQuery('<button></button>').attr('title',fm.i18n('rotate-cw')).append(jQuery('<span class="elfinder-button-icon elfinder-button-icon-rotate-l"></span>')),
					uideg90  = jQuery('<button></button>').attr('title',fm.i18n('rotate-ccw')).append(jQuery('<span class="elfinder-button-icon elfinder-button-icon-rotate-r"></span>')),
					uiprop   = jQuery('<span ></span>'),
					reset    = jQuery('<button class="elfinder-resize-reset">').text(fm.i18n('reset'))
						.on('click', function() {
							resetView();
						})
						.button({
							icons: {
								primary: 'ui-icon-arrowrefresh-1-n'
							},
							text: false
						}),
					uitype   = jQuery('<div class="elfinder-resize-type"></div>')
						.append('<input type="radio" name="type" id="'+id+'-resize" value="resize" checked="checked" /><label for="'+id+'-resize">'+fm.i18n('resize')+'</label>',
						'<input class="api2" type="radio" name="type" id="'+id+'-crop" value="crop" /><label class="api2" for="'+id+'-crop">'+fm.i18n('crop')+'</label>',
						'<input class="api2" type="radio" name="type" id="'+id+'-rotate" value="rotate" /><label class="api2" for="'+id+'-rotate">'+fm.i18n('rotate')+'</label>'),
					mode     = 'resize',
					type     = uitype[ctrgrup]()[ctrgrup]('disable').find('input')
						.on('change', function() {
							mode = jQuery(this).val();
							
							resetView();
							resizable(true);
							croppable(true);
							rotateable(true);
							
							if (mode == 'resize') {
								uiresize.show();
								uirotate.hide();
								uicrop.hide();
								resizable();
								isJpeg && grid8px.insertAfter(uiresize.find('.elfinder-resize-grid8'));
							}
							else if (mode == 'crop') {
								uirotate.hide();
								uiresize.hide();
								uicrop.show();
								croppable();
								isJpeg && grid8px.insertAfter(uicrop.find('.elfinder-resize-grid8'));
							} else if (mode == 'rotate') {
								uiresize.hide();
								uicrop.hide();
								uirotate.show();
								rotateable();
							}
						}),
					width   = jQuery(input)
						.on('change', function() {
							var w = round(parseInt(width.val())),
								h = round(cratio ? w/ratio : parseInt(height.val()));

							if (w > 0 && h > 0) {
								resize.updateView(w, h);
								width.val(w);
								height.val(h);
							}
						}).addClass('elfinder-focus'),
					height  = jQuery(input)
						.on('change', function() {
							var h = round(parseInt(height.val())),
								w = round(cratio ? h*ratio : parseInt(width.val()));

							if (w > 0 && h > 0) {
								resize.updateView(w, h);
								width.val(w);
								height.val(h);
							}
						}),
					pointX  = jQuery(input).on('change', function(){crop.updateView();}),
					pointY  = jQuery(input).on('change', function(){crop.updateView();}),
					offsetX = jQuery(input).on('change', function(){crop.updateView('w');}),
					offsetY = jQuery(input).on('change', function(){crop.updateView('h');}),
					quality = isJpeg && api2?
						jQuery(input).val(fm.storage('jpgQuality') > 0? fm.storage('jpgQuality') : fm.option('jpgQuality'))
							.addClass('elfinder-resize-quality')
							.attr('min', '1').attr('max', '100').attr('title', '1 - 100')
							.on('blur', function(){
								var q = Math.min(100, Math.max(1, parseInt(this.value)));
								control.find('input.elfinder-resize-quality').val(q);
							})
						: null,
					degree = jQuery('<input type="number" class="ui-corner-all" maxlength="3" value="0" />')
						.on('change', function() {
							rotate.update();
						}),
					uidegslider = jQuery('<div class="elfinder-resize-rotate-slider touch-punch"></div>')
						.slider({
							min: 0,
							max: 360,
							value: degree.val(),
							animate: true,
							start: opStart,
							stop: opStop,
							change: function(event, ui) {
								if (ui.value != uidegslider.slider('value')) {
									rotate.update(ui.value);
								}
							},
							slide: function(event, ui) {
								rotate.update(ui.value, false);
							}
						}).find('.ui-slider-handle')
							.addClass('elfinder-tabstop')
							.off('keydown')
							.on('keydown', function(e) {
								if (e.keyCode == jQuery.ui.keyCode.LEFT || e.keyCode == jQuery.ui.keyCode.RIGHT) {
									e.stopPropagation();
									e.preventDefault();
									rotate.update(Number(degree.val()) + (e.keyCode == jQuery.ui.keyCode.RIGHT? 1 : -1), false);
								}
							})
						.end(),
					pickimg,
					pickcanv,
					pickctx,
					pickc = {},
					pick = function(e) {
						var color, r, g, b, h, s, l;

						try {
							color = pickc[Math.round(e.offsetX)][Math.round(e.offsetY)];
						} catch(e) {}
						if (!color) return;

						r = color[0]; g = color[1]; b = color[2];
						h = color[3]; s = color[4]; l = color[5];

						setbg(r, g, b, (e.type === 'click'));
					},
					palpick = function(e) {
						setbg(jQuery(this).css('backgroundColor'), '', '', (e.type === 'click'));
					},
					setbg = function(r, g, b, off) {
						var s, m, cc;
						if (typeof r === 'string') {
							g = '';
							if (r && (s = jQuery('<span>').css('backgroundColor', r).css('backgroundColor')) && (m = s.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i))) {
								r = Number(m[1]);
								g = Number(m[2]);
								b = Number(m[3]);
							}
						}
						cc = (g === '')? r : '#' + getColorCode(r, g, b);
						bg.val(cc).css({ backgroundColor: cc, backgroundImage: 'none', color: (r+g+b < 384? '#fff' : '#000') });
						preview.css('backgroundColor', cc);
						if (off) {
							imgr.off('.picker').removeClass('elfinder-resize-picking');
							pallet.off('.picker').removeClass('elfinder-resize-picking');
						}
					},
					getColorCode = function(r, g, b) {
						return jQuery.map([r,g,b], function(c){return ('0'+parseInt(c).toString(16)).slice(-2);}).join('');
					},
					picker = jQuery('<button>').text(fm.i18n('colorPicker'))
					.on('click', function() { 
						imgr.on('mousemove.picker click.picker', pick).addClass('elfinder-resize-picking');
						pallet.on('mousemove.picker click.picker', 'span', palpick).addClass('elfinder-resize-picking');
					})
					.button({
						icons: {
							primary: 'ui-icon-pin-s'
						},
						text: false
					}),
					reseter = jQuery('<button>').text(fm.i18n('reset'))
						.on('click', function() { 
							setbg('', '', '', true);
						})
						.button({
							icons: {
								primary: 'ui-icon-arrowrefresh-1-n'
							},
							text: false
						}),
					bg = jQuery('<input class="ui-corner-all elfinder-resize-bg" type="text">')
						.on('focus', function() {
							jQuery(this).attr('style', '');
						})
						.on('blur', function() {
							setbg(jQuery(this).val());
						}),
					pallet  = jQuery('<div class="elfinder-resize-pallet">').on('click', 'span', function() {
						setbg(jQuery(this).css('backgroundColor'));
					}),
					ratio   = 1,
					prop    = 1,
					owidth  = 0,
					oheight = 0,
					cratio  = true,
					cratioc = false,
					pwidth  = 0,
					pheight = 0,
					rwidth  = 0,
					rheight = 0,
					rdegree = 0,
					grid8   = isJpeg? grid8Def : false,
					constr  = jQuery('<button>').html(fm.i18n('aspectRatio'))
						.on('click', function() {
							cratio = ! cratio;
							constr.button('option', {
								icons : { primary: cratio? 'ui-icon-locked' : 'ui-icon-unlocked'}
							});
							resize.fixHeight();
							rhandle.resizable('option', 'aspectRatio', cratio).data('uiResizable')._aspectRatio = cratio;
						})
						.button({
							icons : {
								primary: cratio? 'ui-icon-locked' : 'ui-icon-unlocked'
							},
							text: false
						}),
					constrc = jQuery('<button>').html(fm.i18n('aspectRatio'))
						.on('click', function() {
							cratioc = ! cratioc;
							constrc.button('option', {
								icons : { primary: cratioc? 'ui-icon-locked' : 'ui-icon-unlocked'}
							});
							rhandlec.resizable('option', 'aspectRatio', cratioc).data('uiResizable')._aspectRatio = cratioc;
						})
						.button({
							icons : {
								primary: cratioc? 'ui-icon-locked' : 'ui-icon-unlocked'
							},
							text: false
						}),
					grid8px = jQuery('<button>').html(fm.i18n(grid8? 'enabled' : 'disabled')).toggleClass('ui-state-active', grid8)
						.on('click', function() {
							grid8 = ! grid8;
							grid8px.html(fm.i18n(grid8? 'enabled' : 'disabled')).toggleClass('ui-state-active', grid8);
							setStep8();
						})
						.button(),
					setStep8 = function() {
						var step = grid8? 8 : 1;
						jQuery.each([width, height, offsetX, offsetY, pointX, pointY], function() {
							this.attr('step', step);
						});
						if (grid8) {
							width.val(round(width.val()));
							height.val(round(height.val()));
							offsetX.val(round(offsetX.val()));
							offsetY.val(round(offsetY.val()));
							pointX.val(round(pointX.val()));
							pointY.val(round(pointY.val()));
							if (uiresize.is(':visible')) {
								resize.updateView(width.val(), height.val());
							} else if (uicrop.is(':visible')) {
								crop.updateView();
							}
						}
					},
					setuprimg = function() {
						var r_scale,
							fail = function() {
								bg.parent().hide();
								pallet.hide();
							};
						r_scale = Math.min(pwidth, pheight) / Math.sqrt(Math.pow(owidth, 2) + Math.pow(oheight, 2));
						rwidth = Math.ceil(owidth * r_scale);
						rheight = Math.ceil(oheight * r_scale);
						imgr.width(rwidth)
							.height(rheight)
							.css('margin-top', (pheight-rheight)/2 + 'px')
							.css('margin-left', (pwidth-rwidth)/2 + 'px');
						if (imgr.is(':visible') && bg.is(':visible')) {
							if (file.mime !== 'image/png') {
								preview.css('backgroundColor', bg.val());
								pickimg = jQuery('<img>');
								if (fm.isCORS) {
									pickimg.attr('crossorigin', 'use-credentials');
								}
								pickimg.on('load', function() {
									if (pickcanv && pickcanv.width !== rwidth) {
										setColorData();
									}
								})
								.on('error', fail)
								.attr('src', canvSrc);
							} else {
								fail();
							}
						}
					},
					setupimg = function() {
						resize.updateView(owidth, oheight);
						setuprimg();
						basec
							.width(img.width())
							.height(img.height());
						imgc
							.width(img.width())
							.height(img.height());
						crop.updateView();
						jpgCalc();
					},
					setColorData = function() {
						if (pickctx) {
							var n, w, h, r, g, b, a, s, l, hsl, hue,
								data, scale, tx1, tx2, ty1, ty2, rgb,
								domi = {},
								domic = [],
								domiv, palc,
								rgbToHsl = function (r, g, b) {
									var h, s, l,
										max = Math.max(Math.max(r, g), b),
										min = Math.min(Math.min(r, g), b);
		
									// Hue, 0 ~ 359
									if (max === min) {
										h = 0;
									} else if (r === max) {
										h = ((g - b) / (max - min) * 60 + 360) % 360;
									} else if (g === max) {
										h = (b - r) / (max - min) * 60 + 120;
									} else if (b === max) {
										h = (r - g) / (max - min) * 60 + 240;
									}
									// Saturation, 0 ~ 1
									s = (max - min) / max;
									// Lightness, 0 ~ 1
									l = (r *  0.3 + g * 0.59 + b * 0.11) / 255;
		
									return [h, s, l, 'hsl'];
								},
								rgbRound = function(c) {
									return Math.round(c / 8) * 8;
								};
							
							calc:
							try {
								w = pickcanv.width = imgr.width();
								h = pickcanv.height = imgr.height();
								scale = w / owidth;
								pickctx.scale(scale, scale);
								pickctx.drawImage(pickimg.get(0), 0, 0);
			
								data = pickctx.getImageData(0, 0, w, h).data;
			
								// Range to detect the dominant color
								tx1 = w * 0.1;
								tx2 = w * 0.9;
								ty1 = h * 0.1;
								ty2 = h * 0.9;
			
								for (var y = 0; y < h - 1; y++) {
									for (var x = 0; x < w - 1; x++) {
										n = x * 4 + y * w * 4;
										// RGB
										r = data[n]; g = data[n + 1]; b = data[n + 2]; a = data[n + 3];
										// check alpha ch
										if (a !== 255) {
											bg.parent().hide();
											pallet.hide();
											break calc;
										}
										// HSL
										hsl = rgbToHsl(r, g, b);
										hue = Math.round(hsl[0]); s = Math.round(hsl[1] * 100); l = Math.round(hsl[2] * 100);
										if (! pickc[x]) {
											pickc[x] = {};
										}
										// set pickc
										pickc[x][y] = [r, g, b, hue, s, l];
										// detect the dominant color
										if ((x < tx1 || x > tx2) && (y < ty1 || y > ty2)) {
											rgb = rgbRound(r) + ',' + rgbRound(g) + ',' + rgbRound(b);
											if (! domi[rgb]) {
												domi[rgb] = 1;
											} else {
												++domi[rgb];
											}
										}
									}
								}
								
								if (! pallet.children(':first').length) {
									palc = 1;
									jQuery.each(domi, function(c, v) {
										domic.push({c: c, v: v});
									});
									jQuery.each(domic.sort(function(a, b) {
										return (a.v > b.v)? -1 : 1;
									}), function() {
										if (this.v < 2 || palc > 10) {
											return false;
										}
										pallet.append(jQuery('<span style="width:20px;height:20px;display:inline-block;background-color:rgb('+this.c+');">'));
										++palc;
									});
								}
							} catch(e) {
								picker.hide();
								pallet.hide();
							}
						}
					},
					setupPicker = function() {
						try {
							pickcanv = document.createElement('canvas');
							pickctx = pickcanv.getContext('2d');
						} catch(e) {
							picker.hide();
							pallet.hide();
						}
					},
					setupPreset = function() {
						preset.on('click', 'span.elfinder-resize-preset', function() {
							var btn = jQuery(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1],
								r = owidth / oheight;
							btn.data('s', [h, w]).text(h + 'x' + w);
							if (owidth > w || oheight > h) {
								if (owidth <= w) {
									w = round(h * r);
								} else if (oheight <= h) {
									h = round(w / r);
								} else {
									if (owidth - w > oheight - h) {
										h = round(w / r);
									} else {
										w = round(h * r);
									}
								}
							} else {
								w = owidth;
								h = oheight;
							}
							width.val(w);
							height.val(h);
							resize.updateView(w, h);
							jpgCalc();
						});
						presetc.on('click', 'span.elfinder-resize-preset', function() {
							var btn = jQuery(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1],
								x = pointX.val(),
								y = pointY.val();
							
							btn.data('s', [h, w]).text(h + 'x' + w);
							if (owidth >= w && oheight >= h) {
								if (owidth - w - x < 0) {
									x = owidth - w;
								}
								if (oheight - h - y < 0) {
									y = oheight - h;
								}
								pointX.val(x);
								pointY.val(y);
								offsetX.val(w);
								offsetY.val(h);
								crop.updateView();
								jpgCalc();
							}
						});
						presetc.children('span.elfinder-resize-preset').each(function() {
							var btn = jQuery(this),
								w = btn.data('s')[0],
								h = btn.data('s')[1];
							
							btn[(owidth >= w && oheight >= h)? 'show' : 'hide']();
						});
					},
					dimreq  = null,
					inited  = false,
					setdim  = function(dim) {
						var rfile = fm.file(file.hash);
						rfile.width = dim[0];
						rfile.height = dim[1];
					},
					init    = function() {
						var elm, memSize, r_scale, imgRatio;
						
						if (inited) {
							return;
						}
						inited = true;
						dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject();
						
						// check lossless rotete
						if (fm.api >= 2.1030) {
							if (losslessRotate === 0) {
								fm.request({
									data: {
										cmd    : 'resize',
										target : file.hash,
										degree : 0,
										mode   : 'rotate'
									},
									preventDefault : true
								}).done(function(data) {
									losslessRotate = data.losslessRotate? 1 : -1;
									if (losslessRotate === 1 && (degree.val() % 90 === 0)) {
										uirotate.children('div.elfinder-resize-quality').hide();
									}
								}).fail(function() {
									losslessRotate = -1;
								});
							}
						} else {
							losslessRotate = -1;
						}
						
						elm = img.get(0);
						memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()});
					
						memSize && img.removeAttr('width').removeAttr('height');
						
						owidth  = file.width || elm.naturalWidth || elm.width || img.width();
						oheight = file.height || elm.naturalHeight || elm.height || img.height();
						if (!file.width || !file.height) {
							setdim([owidth, oheight]);
						}
						
						memSize && img.width(memSize.w).height(memSize.h);
						
						dMinBtn.show();
	
						imgRatio = oheight / owidth;
						
						if (imgRatio < 1 && preview.height() > preview.width() * imgRatio) {
							preview.height(preview.width() * imgRatio);
						}
						
						if (preview.height() > img.height() + 20) {
							preview.height(img.height() + 20);
						}
						
						pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
						
						spinner.remove();
						
						ratio = owidth/oheight;
	
						rhandle.append(img.show()).show();
						width.val(owidth);
						height.val(oheight);
	
						setupPicker();
						setupPreset();
						setupimg();
						
						uitype[ctrgrup]('enable');
						control.find('input,select').prop('disabled', false)
							.filter(':text').on('keydown', function(e) {
								var cOpts;
								if (e.keyCode == jQuery.ui.keyCode.ENTER) {
									e.stopPropagation();
									e.preventDefault();
									cOpts = {
										title  : jQuery('input:checked', uitype).val(),
										text   : 'confirmReq',
										accept : {
											label    : 'btnApply',
											callback : function() {  
												save();
											}
										},
										cancel : {
											label    : 'btnCancel',
											callback : function(){
												jQuery(this).trigger('focus');
											}
										}
									};
										
									if (useSaveAs) {
										cOpts['buttons'] = [{
											label    : 'btnSaveAs',
											callback : function() {
												requestAnimationFrame(saveAs);
											}
										}];
									}
									fm.confirm(cOpts);
									return;
								}
							})
							.on('keyup', function() {
								var $this = jQuery(this);
								if (! $this.hasClass('elfinder-resize-bg')) {
									requestAnimationFrame(function() {
										$this.val($this.val().replace(/[^0-9]/g, ''));
									});
								}
							})
							.filter(':first');
						
						setStep8();
						!fm.UA.Mobile && width.trigger('focus');
						resizable();
					},
					img     = jQuery('<img/>')
						.on('load', init)
						.on('error', function() {
							spinner.html(fm.i18n('ntfsmth')).css('background', 'transparent');
						}),
					basec = jQuery('<div></div>'),
					imgc = jQuery('<img/>'),
					coverc = jQuery('<div></div>'),
					imgr = jQuery('<img class="elfinder-resize-imgrotate" />'),
					round = function(v, max) {
						v = grid8? Math.round(v/8)*8 : Math.round(v);
						v = Math.max(0, v);
						if (max && v > max) {
							v = grid8? Math.floor(max/8)*8 : max;
						}
						return v;
					},
					resetView = function() {
						width.val(owidth);
						height.val(oheight);
						resize.updateView(owidth, oheight);
						pointX.val(0);
						pointY.val(0);
						offsetX.val(owidth);
						offsetY.val(oheight);
						crop.updateView();
						jpgCalc();
					},
					resize = {
						update : function() {
							width.val(round(img.width()/prop));
							height.val(round(img.height()/prop));
							jpgCalc();
						},
						
						updateView : function(w, h) {
							if (w > pwidth || h > pheight) {
								if (w / pwidth > h / pheight) {
									prop = pwidth / w;
									img.width(pwidth).height(round(h*prop));
								} else {
									prop = pheight / h;
									img.height(pheight).width(round(w*prop));
								}
							} else {
								img.width(round(w)).height(round(h));
							}
							
							prop = img.width()/w;
							uiprop.text('1 : '+(1/prop).toFixed(2));
							resize.updateHandle();
						},
						
						updateHandle : function() {
							rhandle.width(img.width()).height(img.height());
						},
						fixHeight : function() {
							var w, h;
							if (cratio) {
								w = width.val();
								h = round(w/ratio);
								resize.updateView(w, h);
								height.val(h);
							}
						}
					},
					crop = {
						update : function(change) {
							pointX.val(round(((rhandlec.data('x')||rhandlec.position().left))/prop, owidth));
							pointY.val(round(((rhandlec.data('y')||rhandlec.position().top))/prop, oheight));
							if (change !== 'xy') {
								offsetX.val(round((rhandlec.data('w')||rhandlec.width())/prop, owidth - pointX.val()));
								offsetY.val(round((rhandlec.data('h')||rhandlec.height())/prop, oheight - pointY.val()));
							}
							jpgCalc();
						},
						updateView : function(change) {
							var r, x, y, w, h;
							
							pointX.val(round(pointX.val(), owidth - (grid8? 8 : 1)));
							pointY.val(round(pointY.val(), oheight - (grid8? 8 : 1)));
							offsetX.val(round(offsetX.val(), owidth - pointX.val()));
							offsetY.val(round(offsetY.val(), oheight - pointY.val()));
							
							if (cratioc) {
								r = coverc.width() / coverc.height();
								if (change === 'w') {
									offsetY.val(round(parseInt(offsetX.val()) / r));
								} else if (change === 'h') {
									offsetX.val(round(parseInt(offsetY.val()) * r));
								}
							}
							x = Math.round(parseInt(pointX.val()) * prop);
							y = Math.round(parseInt(pointY.val()) * prop);
							if (change !== 'xy') {
								w = Math.round(parseInt(offsetX.val()) * prop);
								h = Math.round(parseInt(offsetY.val()) * prop);
							} else {
								w = rhandlec.data('w');
								h = rhandlec.data('h');
							}
							rhandlec.data({x: x, y: y, w: w, h: h})
								.width(w)
								.height(h)
								.css({left: x, top: y});
							coverc.width(w)
								.height(h);
						},
						resize_update : function(e, ui) {
							rhandlec.data({x: ui.position.left, y: ui.position.top, w: ui.size.width, h: ui.size.height});
							crop.update();
							crop.updateView();
						},
						drag_update : function(e, ui) {
							rhandlec.data({x: ui.position.left, y: ui.position.top});
							crop.update('xy');
						}
					},
					rotate = {
						mouseStartAngle : 0,
						imageStartAngle : 0,
						imageBeingRotated : false,
						
						setQuality : function() {
							uirotate.children('div.elfinder-resize-quality')[(losslessRotate > 0 && (degree.val() % 90) === 0)? 'hide' : 'show']();
						},
						
						update : function(value, animate) {
							if (typeof value == 'undefined') {
								rdegree = value = parseInt(degree.val());
							}
							if (typeof animate == 'undefined') {
								animate = true;
							}
							if (! animate || fm.UA.Opera || fm.UA.ltIE8) {
								imgr.rotate(value);
							} else {
								imgr.animate({rotate: value + 'deg'});
							}
							value = value % 360;
							if (value < 0) {
								value += 360;
							}
							degree.val(parseInt(value));

							uidegslider.slider('value', degree.val());
							
							rotate.setQuality();
						},
						
						execute : function ( e ) {
							
							if ( !rotate.imageBeingRotated ) return;
							
							var imageCentre = rotate.getCenter( imgr );
							var ev = e.originalEvent.touches? e.originalEvent.touches[0] : e;
							var mouseXFromCentre = ev.pageX - imageCentre[0];
							var mouseYFromCentre = ev.pageY - imageCentre[1];
							var mouseAngle = Math.atan2( mouseYFromCentre, mouseXFromCentre );
							
							var rotateAngle = mouseAngle - rotate.mouseStartAngle + rotate.imageStartAngle;
							rotateAngle = Math.round(parseFloat(rotateAngle) * 180 / Math.PI);
							
							if ( e.shiftKey ) {
								rotateAngle = Math.round((rotateAngle + 6)/15) * 15;
							}
							
							imgr.rotate(rotateAngle);
							
							rotateAngle = rotateAngle % 360;
							if (rotateAngle < 0) {
								rotateAngle += 360;
							}
							degree.val(rotateAngle);

							uidegslider.slider('value', degree.val());
							
							rotate.setQuality();
							
							return false;
						},
						
						start : function ( e ) {
							if (imgr.hasClass('elfinder-resize-picking')) {
								return;
							}
							
							opStart();
							rotate.imageBeingRotated = true;
							
							var imageCentre = rotate.getCenter( imgr );
							var ev = e.originalEvent.touches? e.originalEvent.touches[0] : e;
							var mouseStartXFromCentre = ev.pageX - imageCentre[0];
							var mouseStartYFromCentre = ev.pageY - imageCentre[1];
							rotate.mouseStartAngle = Math.atan2( mouseStartYFromCentre, mouseStartXFromCentre );
							
							rotate.imageStartAngle = parseFloat(imgr.rotate()) * Math.PI / 180.0;
							
							jQuery(document).on('mousemove', rotate.execute);
							imgr.on('touchmove', rotate.execute);
							
							return false;
						},
							
						stop : function ( e ) {
							
							if ( !rotate.imageBeingRotated ) return;
							
							jQuery(document).off('mousemove', rotate.execute);
							imgr.off('touchmove', rotate.execute);
							
							requestAnimationFrame(function() { rotate.imageBeingRotated = false; });
							opStop();
							
							return false;
						},
						
						getCenter : function ( image ) {
							
							var currentRotation = imgr.rotate();
							imgr.rotate(0);
							
							var imageOffset = imgr.offset();
							var imageCentreX = imageOffset.left + imgr.width() / 2;
							var imageCentreY = imageOffset.top + imgr.height() / 2;
							
							imgr.rotate(currentRotation);
							
							return Array( imageCentreX, imageCentreY );
						}
					},
					resizable = function(destroy) {
						if (destroy) {
							rhandle.filter(':ui-resizable').resizable('destroy');
							rhandle.hide();
						}
						else {
							rhandle.show();
							rhandle.resizable({
								alsoResize  : img,
								aspectRatio : cratio,
								resize      : resize.update,
								start       : opStart,
								stop        : function(e) {
									resize.fixHeight;
									resize.updateView(width.val(), height.val());
									opStop();
								}
							});
							dinit();
						}
					},
					croppable = function(destroy) {
						if (destroy) {
							rhandlec.filter(':ui-resizable').resizable('destroy')
								.filter(':ui-draggable').draggable('destroy');
							basec.hide();
						}
						else {
							basec.show();
							
							rhandlec
								.resizable({
									containment : basec,
									aspectRatio : cratioc,
									resize      : crop.resize_update,
									start       : opStart,
									stop        : opStop,
									handles     : 'all'
								})
								.draggable({
									handle      : coverc,
									containment : imgc,
									drag        : crop.drag_update,
									start       : opStart,
									stop        : function() {
										crop.updateView('xy');
										opStop();
									}
								});
							
							dinit();
							crop.update();
						}
					},
					rotateable = function(destroy) {
						if (destroy) {
							imgr.hide();
						}
						else {
							imgr.show();
							dinit();
						}
					},
					checkVals = function() {
						var w, h, x, y, d, q, b = '';
						
						if (mode == 'resize') {
							w = parseInt(width.val()) || 0;
							h = parseInt(height.val()) || 0;
						} else if (mode == 'crop') {
							w = parseInt(offsetX.val()) || 0;
							h = parseInt(offsetY.val()) || 0;
							x = parseInt(pointX.val()) || 0;
							y = parseInt(pointY.val()) || 0;
						} else if (mode == 'rotate') {
							w = owidth;
							h = oheight;
							d = parseInt(degree.val()) || 0;
							if (d < 0 || d > 360) {
								fm.error('Invalid rotate degree');
								return false;
							}
							if (d == 0 || d == 360) {
								fm.error('errResizeNoChange');
								return false;
							}
							b = bg.val();
						}
						q = quality? parseInt(quality.val()) : 0;
						
						if (mode != 'rotate') {
							if (w <= 0 || h <= 0) {
								fm.error('Invalid image size');
								return false;
							}
							if (w == owidth && h == oheight && parseInt(size0 / 1000) === parseInt(size1/1000)) {
								fm.error('errResizeNoChange');
								return false;
							}
						}
						
						return {w: w, h: h, x: x, y: y, d: d, q: q, b: b};
					},
					save = function() {
						var vals;
						
						if (vals = checkVals()) {
							dialog.elfinderdialog('close');
							self.resizeRequest({
								target : file.hash,
								width  : vals.w,
								height : vals.h,
								x      : vals.x,
								y      : vals.y,
								degree : vals.d,
								quality: vals.q,
								bg     : vals.b,
								mode   : mode
							}, file, dfrd);
						}
					},
					saveAs = function() {
						var fail = function() {
								dialogs.addClass(clsediting).fadeIn(function() {
									base.addClass(clactive);
								});
								fm.disable();
							},
							make = function() {
								self.mime = file.mime;
								self.prefix = file.name.replace(/ \d+(\.[^.]+)?$/, '$1');
								self.requestCmd = 'mkfile';
								self.nextAction = {};
								self.data = {target : file.phash};
								jQuery.proxy(fm.res('mixin', 'make'), self)()
									.done(function(data) {
										var hash, dfd;
										if (data.added && data.added.length) {
											hash = data.added[0].hash;
											dfd = fm.api < 2.1032? fm.url(file.hash, { async: true, temporary: true }) : null;
											jQuery.when(dfd).done(function(url) {
												fm.request({
													options : {type : 'post'},
													data : {
														cmd     : 'put',
														target  : hash,
														encoding: dfd? 'scheme' : 'hash', 
														content : dfd? fm.convAbsUrl(url) : file.hash
													},
													notify : {type : 'copy', cnt : 1},
													syncOnFail : true
												})
												.fail(fail)
												.done(function(data) {
													data = fm.normalize(data);
													fm.updateCache(data);
													file = fm.file(hash);
													data.changed && data.changed.length && fm.change(data);
													base.show().find('.elfinder-dialog-title').html(fm.escape(file.name));
													save();
													dialogs.fadeIn();
												});
											}).fail(fail);
										} else {
											fail();
										}
									})
									.fail(fail)
									.always(function() {
										delete self.mime;
										delete self.prefix;
										delete self.nextAction;
										delete self.data;
									});
								fm.trigger('unselectfiles', { files: [ file.hash ] });
							},
							reqOpen = null,
							dialogs;
						
						if (checkVals()) {
							dialogs = fmnode.children('.' + self.dialogClass + ':visible').removeClass(clsediting).fadeOut();
							base.removeClass(clactive);
							fm.enable();
							if (fm.searchStatus.state < 2 && file.phash !== fm.cwd().hash) {
								reqOpen = fm.exec('open', [file.phash], {thash: file.phash});
							}
							
							jQuery.when([reqOpen]).done(function() {
								reqOpen? fm.one('cwdrender', make) : make();
							}).fail(fail);
						}
					},
					buttons = {},
					hline   = 'elfinder-resize-handle-hline',
					vline   = 'elfinder-resize-handle-vline',
					rpoint  = 'elfinder-resize-handle-point',
					canvSrc = src,
					sizeImg = quality? jQuery('<img>').attr('crossorigin', fm.isCORS? 'use-credentials' : '').attr('src', canvSrc).on('load', function() {
						try {
							var canv = document.createElement('canvas');
							sizeImg.data('canvas', canv).data('ctx', canv.getContext('2d'));
							jpgCalc();
						} catch(e) {
							sizeImg.removeData('canvas').removeData('ctx');
						}
					}) : null,
					jpgCalc = function() {
						control.find('input.elfinder-resize-quality:visible').trigger('change');
					},
					dinit   = function(e) {
						if (base.hasClass('elfinder-dialog-minimized') || base.is(':hidden')) {
							return;
						}
						
						preset.hide();
						presetc.hide();
						
						var win   = fm.options.dialogContained? fmnode : jQuery(window),
							winH  = win.height(),
							winW  = win.width(),
							presW = 'auto',
							presIn = true,
							dw, ctrW, prvW;
						
						base.width(Math.min(dialogWidth, winW - 30));
						preview.attr('style', '');
						if (owidth && oheight) {
							pwidth  = preview.width()  - (rhandle.outerWidth()  - rhandle.width());
							pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
							resize.updateView(owidth, oheight);
						}
						ctrW  = dialog.find('div.elfinder-resize-control').width();
						prvW  = preview.width();
						
						dw = dialog.width() - 20;
						if (prvW > dw) {
							preview.width(dw);
							presIn = false;
						} else if ((dw - prvW) < ctrW) {
							if (winW > winH) {
								preview.width(dw - ctrW - 20);
							} else {
								preview.css({ float: 'none', marginLeft: 'auto', marginRight: 'auto'});
								presIn = false;
							}
						}
						if (presIn) {
							presW = ctrW;
						}
						pwidth  = preview.width()  - (rhandle.outerWidth()  - rhandle.width());
						if (fmnode.hasClass('elfinder-fullscreen')) {
							if (base.height() > winH) {
								winH -= 2;
								preview.height(winH - base.height() + preview.height());
								base.css('top', 0 - fmnode.offset().top);
							}
						} else {
							winH -= 30;
							(preview.height() > winH) && preview.height(winH);
						}
						pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
						if (owidth && oheight) {
							setupimg();
						}
						if (img.height() && preview.height() > img.height() + 20) {
							preview.height(img.height() + 20);
							pheight = preview.height() - (rhandle.outerHeight() - rhandle.height());
							setuprimg();
						}
						
						preset.css('width', presW).show();
						presetc.css('width', presW).show();
						if (!presetc.children('span.elfinder-resize-preset:visible').length) {
							presetc.hide();
						}
						dialog.elfinderdialog('posInit');
					},
					preset = (function() {
						var sets = jQuery('<fieldset class="elfinder-resize-preset-container">').append(jQuery('<legend>').html(fm.i18n('presets'))).css('box-sizing', 'border-box').hide(),
							hasC;
						jQuery.each(presetSize, function(i, s) {
							if (s.length === 2) {
								hasC = true;
								sets.append(jQuery('<span class="elfinder-resize-preset"></span>')
									.data('s', s)
									.text(s[0]+'x'+s[1])
									.button()
								);
							}
						});
						if (!hasC) {
							return jQuery();
						} else {
							return sets;
						}
					})(),
					presetc = preset.clone(true),
					useSaveAs = fm.uploadMimeCheck(file.mime, file.phash),
					dMinBtn, base;
				
				size0 = size1 = file.size;
				uiresize.append(
					jQuery(row).append(jQuery(label).text(fm.i18n('width')), width),
					jQuery(row).append(jQuery(label).text(fm.i18n('height')), height, jQuery('<div class="elfinder-resize-whctrls">').append(constr, reset)),
					(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality, jQuery('<span></span>')) : jQuery()),
					(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8'), grid8px) : jQuery()),
					jQuery(row).append(jQuery(label).text(fm.i18n('scale')), uiprop),
					jQuery(row).append(preset)
				);

				if (api2) {
					uicrop.append(
						jQuery(row).append(jQuery(label).text('X'), pointX),
						jQuery(row).append(jQuery(label).text('Y')).append(pointY),
						jQuery(row).append(jQuery(label).text(fm.i18n('width')), offsetX),
						jQuery(row).append(jQuery(label).text(fm.i18n('height')), offsetY, jQuery('<div class="elfinder-resize-whctrls">').append(constrc, reset.clone(true))),
						(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality.clone(true), jQuery('<span></span>')) : jQuery()),
						(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8')) : jQuery()),
						jQuery(row).append(presetc)
					);
					
					uirotate.append(
						jQuery(row).addClass('elfinder-resize-degree').append(
							jQuery(label).text(fm.i18n('rotate')),
							degree,
							jQuery('<span></span>').text(fm.i18n('degree')),
							jQuery('<div></div>').append(uideg270, uideg90)[ctrgrup]()
						),
						jQuery(row).css('height', '20px').append(uidegslider),
						((quality)? jQuery(row)[losslessRotate < 1? 'show' : 'hide']().addClass('elfinder-resize-quality').append(
							jQuery(label).text(fm.i18n('quality')),
							quality.clone(true),
							jQuery('<span></span>')) : jQuery()
						),
						jQuery(row).append(jQuery(label).text(fm.i18n('bgcolor')), bg, picker, reseter),
						jQuery(row).css('height', '20px').append(pallet)
					);
					uideg270.on('click', function() {
						rdegree = rdegree - 90;
						rotate.update(rdegree);
					});
					uideg90.on('click', function(){
						rdegree = rdegree + 90;
						rotate.update(rdegree);
					});
				}
				
				dialog.append(uitype).on('resize', function(e){
					e.stopPropagation();
				});

				if (api2) {
					control.append(/*jQuery(row), */uiresize, uicrop.hide(), uirotate.hide());
				} else {
					control.append(/*jQuery(row), */uiresize);
				}
				
				rhandle.append('<div class="'+hline+' '+hline+'-top"></div>',
					'<div class="'+hline+' '+hline+'-bottom"></div>',
					'<div class="'+vline+' '+vline+'-left"></div>',
					'<div class="'+vline+' '+vline+'-right"></div>',
					'<div class="'+rpoint+' '+rpoint+'-e"></div>',
					'<div class="'+rpoint+' '+rpoint+'-se"></div>',
					'<div class="'+rpoint+' '+rpoint+'-s"></div>');
					
				preview.append(spinner).append(rhandle.hide()).append(img.hide());

				if (api2) {
					rhandlec.css('position', 'absolute')
						.append('<div class="'+hline+' '+hline+'-top"></div>',
						'<div class="'+hline+' '+hline+'-bottom"></div>',
						'<div class="'+vline+' '+vline+'-left"></div>',
						'<div class="'+vline+' '+vline+'-right"></div>',
						'<div class="'+rpoint+' '+rpoint+'-n"></div>',
						'<div class="'+rpoint+' '+rpoint+'-e"></div>',
						'<div class="'+rpoint+' '+rpoint+'-s"></div>',
						'<div class="'+rpoint+' '+rpoint+'-w"></div>',
						'<div class="'+rpoint+' '+rpoint+'-ne"></div>',
						'<div class="'+rpoint+' '+rpoint+'-se"></div>',
						'<div class="'+rpoint+' '+rpoint+'-sw"></div>',
						'<div class="'+rpoint+' '+rpoint+'-nw"></div>');

					preview.append(basec.css('position', 'absolute').hide().append(imgc, rhandlec.append(coverc)));
					
					preview.append(imgr.hide());
				}
				
				preview.css('overflow', 'hidden');
				
				dialog.append(preview, control);
				
				buttons[fm.i18n('btnApply')] = save;
				if (useSaveAs) {
					buttons[fm.i18n('btnSaveAs')] = function() { requestAnimationFrame(saveAs); };
				}
				buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
				
				dialog.find('input,button').addClass('elfinder-tabstop');
				
				base = self.fmDialog(dialog, {
					title          : fm.escape(file.name),
					width          : dialogWidth,
					resizable      : false,
					buttons        : buttons,
					open           : function() {
						var doDimReq = function(force) {
								dimreq = fm.request({
									data : {cmd : 'dim', target : file.hash, substitute : substituteImg? 400 : ''},
									preventDefault : true
								})
								.done(function(data) {
									if (!data.url && needPng) {
										dialog.elfinderdialog('close');
										fm.error(['errOpen', file.name]);
									} else {
										if (data.dim) {
											var dim = data.dim.split('x');
											file.width = dim[0];
											file.height = dim[1];
											setdim(dim);
											if (data.url) {
												img.attr('src', data.url);
												imgc.attr('src', data.url);
												imgr.attr('src', data.url);
											}
											return init();
										}
									}
								});
							},
							needPng = !{'image/jpeg':true,'image/png':true,'image/gif':true,}[file.mime],
							substituteImg = fm.option('substituteImg', file.hash) && (needPng || file.size > options.dimSubImgSize)? true : false,
							hasSize = (file.width && file.height)? true : false;
						dMinBtn = base.find('.ui-dialog-titlebar .elfinder-titlebar-minimize').hide();
						fm.bind('resize', dinit);
						img.attr('src', src).one('error.dimreq', function() {
							doDimReq(true);
						});
						imgc.attr('src', src);
						imgr.attr('src', src);
						if (api2) {
							imgr.on('mousedown touchstart', rotate.start)
								.on('touchend', rotate.stop);
							base.on('mouseup', rotate.stop);
						}
						if (hasSize && !substituteImg) {
							return init();
						}
						if (file.size > (options.getDimThreshold || 0)) {
							img.off('error.dimreq');
							doDimReq();
						} else if (hasSize) {
							return init();
						}
					},
					close          : function() {
						if (api2) {
							imgr.off('mousedown touchstart', rotate.start)
								.off('touchend', rotate.stop);
							jQuery(document).off('mouseup', rotate.stop);
						}
						fm.unbind('resize', dinit);
						jQuery(this).elfinderdialog('destroy');
					},
					resize         : function(e, data) {
						if (data && data.minimize === 'off') {
							dinit();
						}
					}
				}).attr('id', id).closest('.ui-dialog').addClass(clsediting);
				
				// for IE < 9 dialog mising at open second+ time.
				if (fm.UA.ltIE8) {
					jQuery('.elfinder-dialog').css('filter', '');
				}
				
				coverc.css({ 'opacity': 0.2, 'background-color': '#fff', 'position': 'absolute'}),
				rhandlec.css('cursor', 'move');
				rhandlec.find('.elfinder-resize-handle-point').css({
					'background-color' : '#fff',
					'opacity': 0.5,
					'border-color':'#000'
				});

				if (! api2) {
					uitype.find('.api2').remove();
				}
				
				control.find('input,select').prop('disabled', true);
				control.find('input.elfinder-resize-quality')
					.next('span').addClass('elfinder-resize-jpgsize').attr('title', fm.i18n('roughFileSize'));

			},
			
			id, dialog, size0, size1
			;
			

		if (!files.length || files[0].mime.indexOf('image/') === -1) {
			return dfrd.reject();
		}
		
		id = 'resize-'+fm.namespace+'-'+files[0].hash;
		dialog = fmnode.find('#'+id);
		
		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return dfrd.resolve();
		}
		
		
		fm.openUrl(files[0].hash, 'sameorigin', function(src) {
			open(files[0], id, src);
		});
			
		return dfrd;
	};

};

(function ($) {
	
	var findProperty = function (styleObject, styleArgs) {
		var i = 0 ;
		for( i in styleArgs) {
	        if (typeof styleObject[styleArgs[i]] != 'undefined') 
	        	return styleArgs[i];
		}
		styleObject[styleArgs[i]] = '';
	    return styleArgs[i];
	};
	
	jQuery.cssHooks.rotate = {
		get: function(elem, computed, extra) {
			return jQuery(elem).rotate();
		},
		set: function(elem, value) {
			jQuery(elem).rotate(value);
			return value;
		}
	};
	jQuery.cssHooks.transform = {
		get: function(elem, computed, extra) {
			var name = findProperty( elem.style , 
				['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
			return elem.style[name];
		},
		set: function(elem, value) {
			var name = findProperty( elem.style , 
				['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
			elem.style[name] = value;
			return value;
		}
	};
	
	jQuery.fn.rotate = function(val) {
		var r;
		if (typeof val == 'undefined') {
			if (!!window.opera) {
				r = this.css('transform').match(/rotate\((.*?)\)/);
				return  ( r && r[1])?
					Math.round(parseFloat(r[1]) * 180 / Math.PI) : 0;
			} else {
				r = this.css('transform').match(/rotate\((.*?)\)/);
				return  ( r && r[1])? parseInt(r[1]) : 0;
			}
		}
		this.css('transform', 
			this.css('transform').replace(/none|rotate\(.*?\)/, '') + 'rotate(' + parseInt(val) + 'deg)');
		return this;
	};

	jQuery.fx.step.rotate  = function(fx) {
		if ( fx.state == 0 ) {
			fx.start = jQuery(fx.elem).rotate();
			fx.now = fx.start;
		}
		jQuery(fx.elem).rotate(fx.now);
	};

	if (typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined") { // IE & IE<9
		var GetAbsoluteXY = function(element) {
			var pnode = element;
			var x = pnode.offsetLeft;
			var y = pnode.offsetTop;
			
			while ( pnode.offsetParent ) {
				pnode = pnode.offsetParent;
				if (pnode != document.body && pnode.currentStyle['position'] != 'static') {
					break;
				}
				if (pnode != document.body && pnode != document.documentElement) {
					x -= pnode.scrollLeft;
					y -= pnode.scrollTop;
				}
				x += pnode.offsetLeft;
				y += pnode.offsetTop;
			}
			
			return { x: x, y: y };
		};
		
		var StaticToAbsolute = function (element) {
			if ( element.currentStyle['position'] != 'static') {
				return ;
			}

			var xy = GetAbsoluteXY(element);
			element.style.position = 'absolute' ;
			element.style.left = xy.x + 'px';
			element.style.top = xy.y + 'px';
		};

		var IETransform = function(element,transform){

			var r;
			var m11 = 1;
			var m12 = 1;
			var m21 = 1;
			var m22 = 1;

			if (typeof element.style['msTransform'] != 'undefined'){
				return true;
			}

			StaticToAbsolute(element);

			r = transform.match(/rotate\((.*?)\)/);
			var rotate =  ( r && r[1])	?	parseInt(r[1])	:	0;

			rotate = rotate % 360;
			if (rotate < 0) rotate = 360 + rotate;

			var radian= rotate * Math.PI / 180;
			var cosX =Math.cos(radian);
			var sinY =Math.sin(radian);

			m11 *= cosX;
			m12 *= -sinY;
			m21 *= sinY;
			m22 *= cosX;

			element.style.filter =  (element.style.filter || '').replace(/progid:DXImageTransform\.Microsoft\.Matrix\([^)]*\)/, "" ) +
				("progid:DXImageTransform.Microsoft.Matrix(" + 
					 "M11=" + m11 + 
					",M12=" + m12 + 
					",M21=" + m21 + 
					",M22=" + m22 + 
					",FilterType='bilinear',sizingMethod='auto expand')") 
				;

	  		var ow = parseInt(element.style.width || element.width || 0 );
	  		var oh = parseInt(element.style.height || element.height || 0 );

			radian = rotate * Math.PI / 180;
			var absCosX =Math.abs(Math.cos(radian));
			var absSinY =Math.abs(Math.sin(radian));

			var dx = (ow - (ow * absCosX + oh * absSinY)) / 2;
			var dy = (oh - (ow * absSinY + oh * absCosX)) / 2;

			element.style.marginLeft = Math.floor(dx) + "px";
			element.style.marginTop  = Math.floor(dy) + "px";

			return(true);
		};
		
		var transform_set = jQuery.cssHooks.transform.set;
		jQuery.cssHooks.transform.set = function(elem, value) {
			transform_set.apply(this, [elem, value] );
			IETransform(elem,value);
			return value;
		};
	}

})(jQuery);
lib/js/commands/mkfile.js000064400000003213147361034410011336 0ustar00/**
 * @class  elFinder command "mkfile"
 * Create new empty file
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.mkfile = function() {
	"use strict";
	var self = this;

	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	this.mime            = 'text/plain';
	this.prefix          = 'untitled file.txt';
	this.variants        = [];

	this.getTypeName = function(mime, type) {
		var fm = self.fm,
			name;
		if (name = fm.messages['kind' + fm.kinds[mime]]) {
			name = fm.i18n(['extentiontype', type.toUpperCase(), name]);
		} else {
			name = fm.i18n(['extentionfile', type.toUpperCase()]);
		}
		return name;
	};

	this.fm.bind('open reload canMakeEmptyFile', function() {
		var fm = self.fm,
			hides = fm.getCommand('edit').getMkfileHides();
		self.variants = [];
		if (fm.mimesCanMakeEmpty) {
			jQuery.each(fm.mimesCanMakeEmpty, function(mime, type) {
				type && !hides[mime] && fm.uploadMimeCheck(mime) && self.variants.push([mime, self.getTypeName(mime, type)]);
			});
		}
		self.change();
	});

	this.getstate = function() {
		return this.fm.cwd().write ? 0 : -1;
	};

	this.exec = function(_dum, mime) {
		var fm = self.fm,
			type, err;
		if (type = fm.mimesCanMakeEmpty[mime]) {
			if (fm.uploadMimeCheck(mime)) {
				this.mime = mime;
				this.prefix = fm.i18n(['untitled file', type]);
				
				var prefix_val = this.prefix;
				if(prefix_val.includes("untitled file")){
					prefix_val.replace("untitled file", "NewFile");
					this.prefix = prefix_val;
				}
				return jQuery.proxy(fm.res('mixin', 'make'), self)();
			}
			err = ['errMkfile', self.getTypeName(mime, type)];
		}
		return jQuery.Deferred().reject(err);
	};
};
lib/js/commands/undo.js000064400000007167147361034410011050 0ustar00/**
 * @class  elFinder command "undo"
 * Undo previous commands
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.undo = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		setTitle = function(undo) {
			if (undo) {
				self.title = fm.i18n('cmdundo') + ' ' + fm.i18n('cmd'+undo.cmd);
				self.state = 0;
			} else {
				self.title = fm.i18n('cmdundo');
				self.state = -1;
			}
			self.change();
		},
		cmds = [];
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'ctrl+z'
	}];
	this.syncTitleOnChange = true;
	
	this.getstate = function() {
		return cmds.length? 0 : -1;
	};
	
	this.setUndo = function(undo, redo) {
		var _undo = {};
		if (undo) {
			if (jQuery.isPlainObject(undo) && undo.cmd && undo.callback) {
				Object.assign(_undo, undo);
				if (redo) {
					delete redo.undo;
					_undo.redo = redo;
				} else {
					fm.getCommand('redo').setRedo(null);
				}
				cmds.push(_undo);
				setTitle(_undo);
			}
		}
	};
	
	this.exec = function() {
		var redo = fm.getCommand('redo'),
			dfd = jQuery.Deferred(),
			undo, res, _redo = {};
		if (cmds.length) {
			undo = cmds.pop();
			if (undo.redo) {
				Object.assign(_redo, undo.redo);
				delete undo.redo;
			} else {
				_redo = null;
			} 
			dfd.done(function() {
				if (_redo) {
					redo.setRedo(_redo, undo);
				}
			});
			
			setTitle(cmds.length? cmds[cmds.length-1] : void(0));
			
			res = undo.callback();
			
			if (res && res.done) {
				res.done(function() {
					dfd.resolve();
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.resolve();
			}
			if (cmds.length) {
				this.update(0, cmds[cmds.length - 1].name);
			} else {
				this.update(-1, '');
			}
		} else {
			dfd.reject();
		}
		return dfd;
	};
	
	fm.bind('exec', function(e) {
		var data = e.data || {};
		if (data.opts && data.opts._userAction) {
			if (data.dfrd && data.dfrd.done) {
				data.dfrd.done(function(res) {
					if (res && res.undo && res.redo) {
						res.undo.redo = res.redo;
						self.setUndo(res.undo);
					}
				});
			}
		}
	});
};

/**
 * @class  elFinder command "redo"
 * Redo previous commands
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.redo = function() {
	"use strict";
	var self = this,
		fm   = this.fm,
		setTitle = function(redo) {
			if (redo && redo.callback) {
				self.title = fm.i18n('cmdredo') + ' ' + fm.i18n('cmd'+redo.cmd);
				self.state = 0;
			} else {
				self.title = fm.i18n('cmdredo');
				self.state = -1;
			}
			self.change();
		},
		cmds = [];
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'shift+ctrl+z ctrl+y'
	}];
	this.syncTitleOnChange = true;
	
	this.getstate = function() {
		return cmds.length? 0 : -1;
	};
	
	this.setRedo = function(redo, undo) {
		if (redo === null) {
			cmds = [];
			setTitle();
		} else {
			if (redo && redo.cmd && redo.callback) {
				if (undo) {
					redo.undo = undo;
				}
				cmds.push(redo);
				setTitle(redo);
			}
		}
	};
	
	this.exec = function() {
		var undo = fm.getCommand('undo'),
			dfd = jQuery.Deferred(),
			redo, res, _undo = {}, _redo = {};
		if (cmds.length) {
			redo = cmds.pop();
			if (redo.undo) {
				Object.assign(_undo, redo.undo);
				Object.assign(_redo, redo);
				delete _redo.undo;
				dfd.done(function() {
					undo.setUndo(_undo, _redo);
				});
			}
			
			setTitle(cmds.length? cmds[cmds.length-1] : void(0));
			
			res = redo.callback();
			
			if (res && res.done) {
				res.done(function() {
					dfd.resolve();
				}).fail(function() {
					dfd.reject();
				});
			} else {
				dfd.resolve();
			}
			return dfd;
		} else {
			return dfd.reject();
		}
	};
};
lib/js/commands/cut.js000064400000002172147361034410010665 0ustar00/**
 * @class elFinder command "copy".
 * Put files in filemanager clipboard.
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
 elFinder.prototype.commands.cut = function() {
	"use strict";
	var fm = this.fm;
	
	this.shortcuts = [{
		pattern     : 'ctrl+x shift+insert'
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(f) {
					fres = fres && f.read && ! f.locked && ! fm.isRoot(f) ? true : false;
					return fres;
				});
			};
		
		return cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var dfrd = jQuery.Deferred()
				.fail(function(error) {
					fm.error(error);
				});

		jQuery.each(this.files(hashes), function(i, file) {
			if (!(file.read && ! file.locked && ! fm.isRoot(file)) ) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});
		
		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(fm.clipboard(this.hashes(hashes), true));
	};

};
lib/js/commands/extract.js000064400000012265147361034410011550 0ustar00/**
 * @class  elFinder command "extract"
 * Extract files from archive
 *
 * @author Dmitry (dio) Levashov
 **/
 elFinder.prototype.commands.extract = function() {
	"use strict";
	var self    = this,
		fm      = self.fm,
		mimes   = [],
		filter  = function(files) {
			var fres = true;
			return jQuery.grep(files, function(file) { 
				fres = fres && file.read && jQuery.inArray(file.mime, mimes) !== -1 ? true : false;
				return fres;
			});
		};
	
	this.variants = [];
	this.disableOnSearch = true;
	
	// Update mimes list on open/reload
	fm.bind('open reload', function() {
		mimes = fm.option('archivers')['extract'] || [];
		if (fm.api > 2) {
			self.variants = [[{makedir: true}, fm.i18n('cmdmkdir')], [{}, fm.i18n('btnCwd')]];
		} else {
			self.variants = [[{}, fm.i18n('btnCwd')]];
		}
		self.change();
	});
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			cwdHash, cwdChk;
		if (!cnt || filter(sel).length != cnt) {
			return -1;
		} else if (fm.searchStatus.state > 0) {
			cwdHash = this.fm.cwd().hash;
			jQuery.each(sel, function(i, file) {
				cwdChk = (file.phash === cwdHash);
				return cwdChk;
			});
			return cwdChk? 0 : -1;
		} else {
			return this.fm.cwd().write? 0 : -1;
		}
	};
	
	this.exec = function(hashes, opts) {
		var files    = this.files(hashes),
			dfrd     = jQuery.Deferred(),
			cnt      = files.length,
			makedir  = opts && opts.makedir ? 1 : 0,
			i, error,
			decision,

			overwriteAll = false,
			omitAll = false,
			mkdirAll = 0,
			siblings = fm.files(files[0].phash),

			names = [],
			map = {};

		jQuery.each(siblings, function(id, file) {
			map[file.name] = file;
			names.push(file.name);
		});
		
		var decide = function(decision) {
			switch (decision) {
				case 'overwrite_all' :
					overwriteAll = true;
					break;
				case 'omit_all':
					omitAll = true;
					break;
			}
		};

		var unpack = function(file) {
			if (!(file.read && fm.file(file.phash).write)) {
				error = ['errExtract', file.name, 'errPerm'];
				fm.error(error);
				dfrd.reject(error);
			} else if (jQuery.inArray(file.mime, mimes) === -1) {
				error = ['errExtract', file.name, 'errNoArchive'];
				fm.error(error);
				dfrd.reject(error);
			} else {
				fm.request({
					data:{cmd:'extract', target:file.hash, makedir:makedir},
					notify:{type:'extract', cnt:1},
					syncOnFail:true,
					navigate:{
						toast : makedir? {
							incwd    : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}},
							inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}}
						} : {
							inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')])}
						}
					}
				})
				.fail(function (error) {
					if (dfrd.state() != 'rejected') {
						dfrd.reject(error);
					}
				})
				.done(function () {
				});
			}
		};
		
		var confirm = function(files, index) {
			var file = files[index],
			name = fm.splitFileExtention(file.name)[0],
			existed = (jQuery.inArray(name, names) >= 0),
			next = function(){
				if((index+1) < cnt) {
					confirm(files, index+1);
				} else {
					dfrd.resolve();
				}
			};
			if (!makedir && existed && map[name].mime != 'directory') {
				fm.confirm(
					{
						title : fm.i18n('ntfextract'),
						text  : ['errExists', name, 'confirmRepl'],
						accept:{
							label : 'btnYes',
							callback:function (all) {
								decision = all ? 'overwrite_all' : 'overwrite';
								decide(decision);
								if(!overwriteAll && !omitAll) {
									if('overwrite' == decision) {
										unpack(file);
									}
									if((index+1) < cnt) {
										confirm(files, index+1);
									} else {
										dfrd.resolve();
									}
								} else if(overwriteAll) {
									for (i = index; i < cnt; i++) {
										unpack(files[i]);
									}
									dfrd.resolve();
								}
							}
						},
						reject : {
							label : 'btnNo',
							callback:function (all) {
								decision = all ? 'omit_all' : 'omit';
								decide(decision);
								if(!overwriteAll && !omitAll && (index+1) < cnt) {
									confirm(files, index+1);
								} else if (omitAll) {
									dfrd.resolve();
								}
							}
						},
						cancel : {
							label : 'btnCancel',
							callback:function () {
								dfrd.resolve();
							}
						},
						all : ((index+1) < cnt)
					}
				);
			} else if (!makedir) {
				if (mkdirAll == 0) {
					fm.confirm({
						title : fm.i18n('cmdextract'),
						text  : [fm.i18n('cmdextract')+' "'+file.name+'"', 'confirmRepl'],
						accept:{
							label : 'btnYes',
							callback:function (all) {
								all && (mkdirAll = 1);
								unpack(file);
								next();
							}
						},
						reject : {
							label : 'btnNo',
							callback:function (all) {
								all && (mkdirAll = -1);
								next();
							}
						},
						cancel : {
							label : 'btnCancel',
							callback:function () {
								dfrd.resolve();
							}
						},
						all : ((index+1) < cnt)
					});
				} else {
					(mkdirAll > 0) && unpack(file);
					next();
				}
			} else {
				unpack(file);
				next();
			}
		};
		
		if (!(this.enabled() && cnt && mimes.length)) {
			return dfrd.reject();
		}
		
		if(cnt > 0) {
			confirm(files, 0);
		}

		return dfrd;
	};

};
lib/js/commands/download.js000064400000041155147361034410011705 0ustar00/**
 * @class elFinder command "download". 
 * Download selected files.
 * Only for new api
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
 elFinder.prototype.commands.zipdl = function() {};
 elFinder.prototype.commands.download = function() {
   "use strict";
   var self   = this,
     fm     = this.fm,
     czipdl = null,
     zipOn  = false,
     mixed  = false,
     dlntf  = false,
     cpath  = window.location.pathname || '/',
     filter = function(hashes, inExec) {
       var volumeid, mixedCmd;
       
       if (czipdl !== null) {
         if (fm.searchStatus.state > 1) {
           mixed = fm.searchStatus.mixed;
         } else if (fm.leafRoots[fm.cwd().hash]) {
           volumeid = fm.cwd().volumeid;
           jQuery.each(hashes, function(i, h) {
             if (h.indexOf(volumeid) !== 0) {
               mixed = true;
               return false;
             }
           });
         }
         zipOn = (fm.isCommandEnabled('zipdl', hashes[0]));
       }
 
       if (mixed) {
         mixedCmd = czipdl? 'zipdl' : 'download';
         hashes = jQuery.grep(hashes, function(h) {
           var f = fm.file(h),
             res = (! f || (! czipdl && f.mime === 'directory') || ! fm.isCommandEnabled(mixedCmd, h))? false : true;
           if (f && inExec && ! res) {
             fm.cwdHash2Elm(f.hash).trigger('unselect');
           }
           return res;
         });
         if (! hashes.length) {
           return [];
         }
       } else {
         if (!fm.isCommandEnabled('download', hashes[0])) {
           return [];
         }
       }
       
       return jQuery.grep(self.files(hashes), function(f) { 
         var res = (! f.read || (! zipOn && f.mime == 'directory')) ? false : true;
         if (inExec && ! res) {
           fm.cwdHash2Elm(f.hash).trigger('unselect');
         }
         return res;
       });
     };
   
   this.linkedCmds = ['zipdl'];
   
   this.shortcuts = [{
     pattern     : 'shift+enter'
   }];
   
   this.getstate = function(select) {
     var sel    = this.hashes(select),
       cnt    = sel.length,
       maxReq = this.options.maxRequests || 10,
       mixed  = false,
       croot  = '';
     
     if (cnt < 1) {
       return -1;
     }
     cnt = filter(sel).length;
     
     return  (cnt && (zipOn || (cnt <= maxReq && ((!fm.UA.IE && !fm.UA.Mobile) || cnt == 1))) ? 0 : -1);
   };
   
   fm.bind('contextmenu', function(e){
     var fm = self.fm,
       helper = null,
       targets, file, link,
       getExtra = function(file) {
         var link = file.url || fm.url(file.hash);
         return {
           icon: 'link',
           node: jQuery('<a></a>')
             .attr({href: link, target: '_blank', title: fm.i18n('link')})
             .text(file.name)
             .on('mousedown click touchstart touchmove touchend contextmenu', function(e){
               e.stopPropagation();
             })
             .on('dragstart', function(e) {
               var dt = e.dataTransfer || e.originalEvent.dataTransfer || null;
               helper = null;
               if (dt) {
                 var icon  = function(f) {
                     var mime = f.mime, i, tmb = fm.tmb(f);
                     i = '<div class="elfinder-cwd-icon '+fm.mime2class(mime)+' ui-corner-all"></div>';
                     if (tmb) {
                       i = jQuery(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML;
                     }
                     return i;
                   };
                 dt.effectAllowed = 'copyLink';
                 if (dt.setDragImage) {
                   helper = jQuery('<div class="elfinder-drag-helper html5-native">').append(icon(file)).appendTo(jQuery(document.body));
                   dt.setDragImage(helper.get(0), 50, 47);
                 }
                 if (!fm.UA.IE) {
                   dt.setData('elfinderfrom', window.location.href + file.phash);
                   dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), '');
                 }
               }
             })
             .on('dragend', function(e) {
               helper && helper.remove();
             })
         };
       };
     self.extra = null;
     if (e.data) {
       targets = e.data.targets || [];
       if (targets.length === 1 && (file = fm.file(targets[0])) && file.mime !== 'directory') {
         if (file.url != '1') {
           self.extra = getExtra(file);
         } else {
           // Get URL ondemand
           var node;
           self.extra = {
             icon: 'link',
             node: jQuery('<a></a>')
               .attr({href: '#', title: fm.i18n('getLink'), draggable: 'false'})
               .text(file.name)
               .on('click touchstart', function(e){
                 if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
                   return;
                 }
                 var parent = node.parent();
                 e.stopPropagation();
                 e.preventDefault();
                 parent.removeClass('ui-state-disabled').addClass('elfinder-button-icon-spinner');
                 fm.request({
                   data : {cmd : 'url', target : file.hash},
                   preventDefault : true
                 })
                 .always(function(data) {
                   parent.removeClass('elfinder-button-icon-spinner');
                   if (data.url) {
                     var rfile = fm.file(file.hash);
                     rfile.url = data.url;
                     node.replaceWith(getExtra(file).node);
                   } else {
                     parent.addClass('ui-state-disabled');
                   }
                 });
 
               })
           };
           node = self.extra.node;
           node.ready(function(){
             requestAnimationFrame(function(){
               node.parent().addClass('ui-state-disabled').css('pointer-events', 'auto');
             });
           });
         }
       }
     }
   }).one('open', function() {
     if (fm.api >= 2.1012) {
       czipdl = fm.getCommand('zipdl');
     }
     dlntf = fm.cookieEnabled && fm.api > 2.1038 && !fm.isCORS;
   });
   
   this.exec = function(select) {
     var hashes  = this.hashes(select),
       fm      = this.fm,
       base    = fm.options.url,
       files   = filter(hashes, true),
       dfrd    = jQuery.Deferred(),
       iframes = '',
       cdata   = '',
       targets = {},
       i, url,
       linkdl  = false,
       getTask = function(hashes) {
         return function() {
           var dfd = jQuery.Deferred(),
             root = fm.file(fm.root(hashes[0])),
             single = (hashes.length === 1),
             volName = root? (root.i18 || root.name) : null,
             dir, dlName, phash;
           if (single) {
             if (dir = fm.file(hashes[0])) {
               dlName = (dir.i18 || dir.name);
             }
           } else {
             jQuery.each(hashes, function() {
               var d = fm.file(this);
               if (d && (!phash || phash === d.phash)) {
                 phash = d.phash;
               } else {
                 phash = null;
                 return false;
               }
             });
             if (phash && (dir = fm.file(phash))) {
               dlName = (dir.i18 || dir.name) + '-' + hashes.length;
             }
           }
           if (dlName) {
             volName = dlName;
           }
           volName && (volName = ' (' + volName + ')');
           fm.request({
             data : {cmd : 'zipdl', targets : hashes},
             notify : {type : 'zipdl', cnt : 1, hideCnt : true, msg : fm.i18n('ntfzipdl') + volName},
             cancel : true,
             eachCancel : true,
             preventDefault : true
           }).done(function(e) {
             var zipdl, dialog, btn = {}, dllink, form, iframe, m,
               uniq = 'dlw' + (+new Date()),
               zipdlFn = function(url) {
                 dllink = jQuery('<a></a>')
                   .attr('href', url)
                   .attr('download', fm.escape(dlName))
                   .on('click', function() {
                     dfd.resolve();
                     dialog && dialog.elfinderdialog('destroy');
                   });
                 if (linkdl) {
                   dllink.attr('target', '_blank')
                     .append('<span class="elfinder-button-icon elfinder-button-icon-download"></span>'+fm.escape(dlName));
                   btn[fm.i18n('btnCancel')] = function() {
                     dialog.elfinderdialog('destroy');
                   };
                   dialog = self.fmDialog(dllink, {
                     title: fm.i18n('link'),
                     buttons: btn,
                     width: '200px',
                     destroyOnClose: true,
                     close: function() {
                       (dfd.state() !== 'resolved') && dfd.resolve();
                     }
                   });
                 } else {
                   click(dllink.hide().appendTo('body').get(0));
                   dllink.remove();
                 }
               };
             if (e.error) {
               fm.error(e.error);
               dfd.resolve();
             } else if (e.zipdl) {
               zipdl = e.zipdl;
               if (dlName) {
                 m = fm.splitFileExtention(zipdl.name || '');
                 dlName += m[1]? ('.' + m[1]) : '.zip';
               } else {
                 dlName = zipdl.name;
               }
               if (html5dl || linkdl) {
                 url = fm.options.url + (fm.options.url.indexOf('?') === -1 ? '?' : '&')
                 + 'cmd=zipdl&download=1';
                 jQuery.each([hashes[0], zipdl.file, dlName, zipdl.mime], function(key, val) {
                   url += '&targets%5B%5D='+encodeURIComponent(val);
                 });
                 jQuery.each(fm.customData, function(key, val) {
                   url += '&'+encodeURIComponent(key)+'='+encodeURIComponent(val);
                 });
                 url += '&'+encodeURIComponent(dlName);
                 if (fm.hasParrotHeaders()) {
                   fm.getBinaryByUrl({url: url}, function(blob) {
                     if (blob instanceof Blob) {
                       url = (window.URL || window.webkitURL).createObjectURL(blob);
                       zipdlFn(url);
                     } else {
                       fm.error(['errUploadTransfer', fm.i18n('kindZIP')]);
                     }
                   });
                 } else {
                   zipdlFn(url);
                 }
               } else {
                 form = jQuery('<form action="'+fm.options.url+'" method="post" target="'+uniq+'" style="display:none"></form>')
                 .append('<input type="hidden" name="cmd" value="zipdl"/>')
                 .append('<input type="hidden" name="download" value="1"/>');
                 jQuery.each([hashes[0], zipdl.file, dlName, zipdl.mime], function(key, val) {
                   form.append('<input type="hidden" name="targets[]" value="'+fm.escape(val)+'"/>');
                 });
                 jQuery.each(fm.customData, function(key, val) {
                   form.append('<input type="hidden" name="'+key+'" value="'+fm.escape(val)+'"/>');
                 });
                 form.attr('target', uniq).appendTo('body');
                 iframe = jQuery('<iframe style="display:none" name="'+uniq+'">')
                   .appendTo('body')
                   .ready(function() {
                     form.submit().remove();
                     dfd.resolve();
                     setTimeout(function() {
                       iframe.remove();
                     }, 20000); // give 20 sec file to be saved
                   });
               }
             }
           }).fail(function(error) {
             error && fm.error(error);
             dfd.resolve();
           });
           return dfd.promise();
         };
       },
       // use MouseEvent to click element for Safari etc
       click = function(a) {
         var clickEv;
         if (typeof MouseEvent === 'function') {
           clickEv = new MouseEvent('click');
         } else {
           clickEv = document.createEvent('MouseEvents');
           clickEv.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
         }
         fm.pauseUnloadCheck(true);
         a.dispatchEvent(clickEv);
       },
       checkCookie = function(id) {
         var name = 'elfdl' + id,
           parts;
         parts = document.cookie.split(name + "=");
         if (parts.length === 2) {
           ntftm && clearTimeout(ntftm);
           document.cookie = name + '=; path=' + cpath + '; max-age=0';
           closeNotify();
         } else {
           setTimeout(function() { checkCookie(id); }, 200);
         }
       },
       closeNotify = function() {
         if (fm.ui.notify.children('.elfinder-notify-download').length) {
           fm.notify({
             type : 'download',
             cnt : -1
           });
         }
       },
       reqids = [],
       link, html5dl, fileCnt, clickEv, cid, ntftm, reqid, getUrlDfrd, urls;
       
     if (!files.length) {
       return dfrd.reject();
     }
     
     fileCnt = jQuery.grep(files, function(f) { return f.mime === 'directory'? false : true; }).length;
     link = jQuery('<a>').hide().appendTo('body');
     html5dl = (typeof link.get(0).download === 'string');
     
     if (zipOn && (fileCnt !== files.length || fileCnt >= (this.options.minFilesZipdl || 1))) {
       link.remove();
       linkdl = (!html5dl && fm.UA.Mobile);
       if (mixed) {
         targets = {};
         jQuery.each(files, function(i, f) {
           var p = f.hash.split('_', 2);
           if (! targets[p[0]]) {
             targets[p[0]] = [ f.hash ];
           } else {
             targets[p[0]].push(f.hash);
           }
         });
         if (!linkdl && fm.UA.Mobile && Object.keys(targets).length > 1) {
           linkdl = true;
         }
       } else {
         targets = [ jQuery.map(files, function(f) { return f.hash; }) ];
       }
       dfrd = fm.sequence(jQuery.map(targets, function(t) { return getTask(t); })).always(
         function() {
           fm.trigger('download', {files : files});
         }
       );
       return dfrd;
     } else {
       reqids = [];
       getUrlDfrd = jQuery.Deferred().done(function(urls) {
         for (i = 0; i < urls.length; i++) {
           url = urls[i];
           if (dlntf && url.substr(0, fm.options.url.length) === fm.options.url) {
             reqid = fm.getRequestId();
             reqids.push(reqid);
             url += '&cpath=' + cpath + '&reqid=' + reqid;
             ntftm = setTimeout(function() {
               fm.notify({
                 type : 'download',
                 cnt : 1,
                 cancel : (fm.UA.IE || fm.UA.Edge)? void(0) : function() {
                   if (reqids.length) {
                     jQuery.each(reqids, function() {
                       fm.request({
                         data: {
                           cmd: 'abort',
                           id: this
                         },
                         preventDefault: true
                       });
                     });
                   }
                   reqids = [];
                 }
               });
             }, fm.notifyDelay);
             checkCookie(reqid);
           }
           if (html5dl) {
             click(link.attr('href', url)
               .attr('download', fm.escape(files[i].name))
               .get(0)
             );
           } else {
             if (fm.UA.Mobile) {
               setTimeout(function(){
                 if (! window.open(url)) {
                   fm.error('errPopup');
                   ntftm && cleaerTimeout(ntftm);
                   closeNotify();
                 }
               }, 100);
             } else {
               iframes += '<iframe class="downloader" id="downloader-' + files[i].hash+'" style="display:none" src="'+url+'"></iframe>';
             }
           }
         }
         link.remove();
         jQuery(iframes)
           .appendTo('body')
           .ready(function() {
             setTimeout(function() {
               jQuery(iframes).each(function() {
                 jQuery('#' + jQuery(this).attr('id')).remove();
               });
             }, 20000 + (10000 * i)); // give 20 sec + 10 sec for each file to be saved
           });
         fm.trigger('download', {files : files});
         dfrd.resolve();
       });
       fileCnt = files.length;
       urls = [];
       for (i = 0; i < files.length; i++) {
         fm.openUrl(files[i].hash, true, function(v) {
           v && urls.push(v);
           if (--fileCnt < 1) {
             getUrlDfrd.resolve(urls);
           }
         });
       }
       return dfrd;
     }
   };
 
 }; lib/js/commands/chmod.js000064400000022567147361034410011176 0ustar00/**
 * @class elFinder command "chmod".
 * Chmod files.
 *
 * @type  elFinder.command
 * @author Naoki Sawada
 */
 elFinder.prototype.commands.chmod = function() {
	"use strict";
	this.updateOnSelect = false;
	var fm  = this.fm,
		level = {
			0 : 'owner',
			1 : 'group',
			2 : 'other'
		},
		msg = {
			read     : fm.i18n('read'),
			write    : fm.i18n('write'),
			execute  : fm.i18n('execute'),
			perm     : fm.i18n('perm'),
			kind     : fm.i18n('kind'),
			files    : fm.i18n('files')
		},
		isPerm = function(perm){
			return (!isNaN(parseInt(perm, 8)) && parseInt(perm, 8) <= 511) || perm.match(/^([r-][w-][x-]){3}$/i);
		};

	this.tpl = {
		main       : '<div class="ui-helper-clearfix elfinder-info-title"><span class="elfinder-cwd-icon {class} ui-corner-all"></span>{title}</div>'
					+'{dataTable}',
		itemTitle  : '<strong>{name}</strong><span id="elfinder-info-kind">{kind}</span>',
		groupTitle : '<strong>{items}: {num}</strong>',
		dataTable  : '<table id="{id}-table-perm"><tr><td>{0}</td><td>{1}</td><td>{2}</td></tr></table>'
					+'<div class="">'+msg.perm+': <input class="elfinder-tabstop elfinder-focus" id="{id}-perm" type="text" size="4" maxlength="3" value="{value}"></div>',
		fieldset   : '<fieldset id="{id}-fieldset-{level}"><legend>{f_title}{name}</legend>'
					+'<input type="checkbox" value="4" class="elfinder-tabstop" id="{id}-read-{level}-perm"{checked-r}> <label for="{id}-read-{level}-perm">'+msg.read+'</label><br>'
					+'<input type="checkbox" value="6" class="elfinder-tabstop" id="{id}-write-{level}-perm"{checked-w}> <label for="{id}-write-{level}-perm">'+msg.write+'</label><br>'
					+'<input type="checkbox" value="5" class="elfinder-tabstop" id="{id}-execute-{level}-perm"{checked-x}> <label for="{id}-execute-{level}-perm">'+msg.execute+'</label><br>'
	};

	this.shortcuts = [{
		//pattern     : 'ctrl+p'
	}];

	this.getstate = function(sel) {
		var fm = this.fm;
		sel = sel || fm.selected();
		if (sel.length == 0) {
			sel = [ fm.cwd().hash ];
		}
		return this.checkstate(this.files(sel)) ? 0 : -1;
	};
	
	this.checkstate = function(sel) {
		var cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return jQuery.grep(sel, function(f) {
					fres = fres && f.isowner && f.perm && isPerm(f.perm) && (cnt == 1 || f.mime != 'directory') ? true : false;
					return fres;
				});
			};
		return (cnt && cnt === filter(sel).length)? true : false;
	};

	this.exec = function(select) {
		var hashes  = this.hashes(select),
			files   = this.files(hashes);
		if (! files.length) {
			hashes = [ this.fm.cwd().hash ];
			files   = this.files(hashes);
		}
		var fm  = this.fm,
		dfrd    = jQuery.Deferred().always(function() {
			fm.enable();
		}),
		tpl     = this.tpl,
		cnt     = files.length,
		file    = files[0],
		id = fm.namespace + '-perm-' + file.hash,
		view    = tpl.main,
		checked = ' checked="checked"',
		buttons = function() {
			var buttons = {};
			buttons[fm.i18n('btnApply')] = save;
			buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
			return buttons;
		},
		save = function() {
			var perm = jQuery.trim(jQuery('#'+id+'-perm').val()),
				reqData;
			
			if (!isPerm(perm)) return false;
			
			dialog.elfinderdialog('close');
			
			reqData = {
				cmd     : 'chmod',
				targets : hashes,
				mode    : perm
			};
			fm.request({
				data : reqData,
				notify : {type : 'chmod', cnt : cnt}
			})
			.fail(function(error) {
				dfrd.reject(error);
			})
			.done(function(data) {
				if (data.changed && data.changed.length) {
					data.undo = {
						cmd : 'chmod',
						callback : function() {
							var reqs = [];
							jQuery.each(prevVals, function(perm, hashes) {
								reqs.push(fm.request({
									data : {cmd : 'chmod', targets : hashes, mode : perm},
									notify : {type : 'undo', cnt : hashes.length}
								}));
							});
							return jQuery.when.apply(null, reqs);
						}
					};
					data.redo = {
						cmd : 'chmod',
						callback : function() {
							return fm.request({
								data : reqData,
								notify : {type : 'redo', cnt : hashes.length}
							});
						}
					};
				}
				dfrd.resolve(data);
			});
		},
		setperm = function() {
			var perm = '';
			var _perm;
			for (var i = 0; i < 3; i++){
				_perm = 0;
				if (jQuery("#"+id+"-read-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 4);
				}
				if (jQuery("#"+id+"-write-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 2);
				}
				if (jQuery("#"+id+"-execute-"+level[i]+'-perm').is(':checked')) {
					_perm = (_perm | 1);
				}
				perm += _perm.toString(8);
			}
			jQuery('#'+id+'-perm').val(perm);
		},
		setcheck = function(perm) {
			var _perm;
			for (var i = 0; i < 3; i++){
				_perm = parseInt(perm.slice(i, i+1), 8);
				jQuery("#"+id+"-read-"+level[i]+'-perm').prop("checked", false);
				jQuery("#"+id+"-write-"+level[i]+'-perm').prop("checked", false);
				jQuery("#"+id+"-execute-"+level[i]+'-perm').prop("checked", false);
				if ((_perm & 4) == 4) {
					jQuery("#"+id+"-read-"+level[i]+'-perm').prop("checked", true);
				}
				if ((_perm & 2) == 2) {
					jQuery("#"+id+"-write-"+level[i]+'-perm').prop("checked", true);
				}
				if ((_perm & 1) == 1) {
					jQuery("#"+id+"-execute-"+level[i]+'-perm').prop("checked", true);
				}
			}
			setperm();
		},
		makeperm = function(files) {
			var perm = '777', ret = '', chk, _chk, _perm;
			var len = files.length;
			for (var i2 = 0; i2 < len; i2++) {
				chk = getPerm(files[i2].perm);
				if (! prevVals[chk]) {
					prevVals[chk] = [];
				}
				prevVals[chk].push(files[i2].hash);
				ret = '';
				for (var i = 0; i < 3; i++){
					_chk = parseInt(chk.slice(i, i+1), 8);
					_perm = parseInt(perm.slice(i, i+1), 8);
					if ((_chk & 4) != 4 && (_perm & 4) == 4) {
						_perm -= 4;
					}
					if ((_chk & 2) != 2 && (_perm & 2) == 2) {
						_perm -= 2;
					}
					if ((_chk & 1) != 1 && (_perm & 1) == 1) {
						_perm -= 1;
					}
					ret += _perm.toString(8);
				}
				perm = ret;
			}
			return perm;
		},
		makeName = function(name) {
			return name? ':'+name : '';
		},
		makeDataTable = function(perm, f) {
			var _perm, fieldset;
			var value = '';
			var dataTable = tpl.dataTable;
			for (var i = 0; i < 3; i++){
				_perm = parseInt(perm.slice(i, i+1), 8);
				value += _perm.toString(8);
				fieldset = tpl.fieldset.replace('{f_title}', fm.i18n(level[i])).replace('{name}', makeName(f[level[i]])).replace(/\{level\}/g, level[i]);
				dataTable = dataTable.replace('{'+i+'}', fieldset)
				                     .replace('{checked-r}', ((_perm & 4) == 4)? checked : '')
				                     .replace('{checked-w}', ((_perm & 2) == 2)? checked : '')
				                     .replace('{checked-x}', ((_perm & 1) == 1)? checked : '');
			}
			dataTable = dataTable.replace('{value}', value).replace('{valueCaption}', msg['perm']);
			return dataTable;
		},
		getPerm = function(perm){
			if (isNaN(parseInt(perm, 8))) {
				var mode_array = perm.split('');
				var a = [];

				for (var i = 0, l = mode_array.length; i < l; i++) {
					if (i === 0 || i === 3 || i === 6) {
						if (mode_array[i].match(/[r]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					} else if ( i === 1 || i === 4 || i === 7) {
						 if (mode_array[i].match(/[w]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					} else {
						if (mode_array[i].match(/[x]/i)) {
							a.push(1);
						} else if (mode_array[i].match(/[-]/)) {
							a.push(0);
						}
					}
				}
			
				a.splice(3, 0, ",");
				a.splice(7, 0, ",");

				var b = a.join("");
				var b_array = b.split(",");
				var c = [];
			
				for (var j = 0, m = b_array.length; j < m; j++) {
					var p = parseInt(b_array[j], 2).toString(8);
					c.push(p);
				}

				perm = c.join('');
			} else {
				perm = parseInt(perm, 8).toString(8);
			}
			return perm;
		},
		opts    = {
			title : this.title,
			width : 'auto',
			buttons : buttons(),
			close : function() { jQuery(this).elfinderdialog('destroy'); }
		},
		dialog = fm.getUI().find('#'+id),
		prevVals = {},
		tmb = '', title, dataTable;

		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return jQuery.Deferred().resolve();
		}

		view  = view.replace('{class}', cnt > 1 ? 'elfinder-cwd-icon-group' : fm.mime2class(file.mime));
		if (cnt > 1) {
			title = tpl.groupTitle.replace('{items}', fm.i18n('items')).replace('{num}', cnt);
		} else {
			title = tpl.itemTitle.replace('{name}', file.name).replace('{kind}', fm.mime2kind(file));
			tmb = fm.tmb(file);
		}

		dataTable = makeDataTable(makeperm(files), files.length == 1? files[0] : {});

		view = view.replace('{title}', title).replace('{dataTable}', dataTable).replace(/{id}/g, id);

		dialog = this.fmDialog(view, opts);
		dialog.attr('id', id);

		// load thumbnail
		if (tmb) {
			jQuery('<img/>')
				.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
				.attr('src', tmb.url);
		}

		jQuery('#' + id + '-table-perm :checkbox').on('click', function(){setperm('perm');});
		jQuery('#' + id + '-perm').on('keydown', function(e) {
			var c = e.keyCode;
			if (c == jQuery.ui.keyCode.ENTER) {
				e.stopPropagation();
				save();
				return;
			}
		}).on('focus', function(e){
			jQuery(this).trigger('select');
		}).on('keyup', function(e) {
			if (jQuery(this).val().length == 3) {
				jQuery(this).trigger('select');
				setcheck(jQuery(this).val());
			}
		});
		
		return dfrd;
	};
};
lib/js/commands/quicklook.plugins.js000064400000165010147361034410013554 0ustar00elFinder.prototype.commands.quicklook.plugins = [
	
	/**
	 * Images preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var mimes   = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
			getDimSize = ql.fm.returnBytes((ql.options.getDimThreshold || 0)),
			preview = ql.preview,
			WebP, flipMime;
		
		// webp support
		WebP = new Image();
		WebP.onload = WebP.onerror = function() {
			if (WebP.height == 2) {
				mimes.push('image/webp');
			}
		};
		WebP.src='data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
		
		// what kind of images we can display
		jQuery.each(navigator.mimeTypes, function(i, o) {
			var mime = o.type;
			
			if (mime.indexOf('image/') === 0 && jQuery.inArray(mime, mimes)) {
				mimes.push(mime);
			} 
		});
			
		preview.on(ql.evUpdate, function(e) {
			var fm   = ql.fm,
				file = e.file,
				showed = false,
				dimreq = null,
				setdim  = function(dim) {
					var rfile = fm.file(file.hash);
					rfile.width = dim[0];
					rfile.height = dim[1];
				},
				show = function() {
					var elm, varelm, memSize, width, height, prop;
					
					dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject();
					if (showed) {
						return;
					}
					showed = true;
					
					elm = img.get(0);
					memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()});
				
					memSize && img.removeAttr('width').removeAttr('height');
					
					width  = file.width || elm.naturalWidth || elm.width || img.width();
					height = file.height || elm.naturalHeight || elm.height || img.height();
					if (!file.width || !file.height) {
						setdim([width, height]);
					}
					
					memSize && img.width(memSize.w).height(memSize.h);

					prop = (width/height).toFixed(2);
					preview.on('changesize', function() {
						var pw = parseInt(preview.width()),
							ph = parseInt(preview.height()),
							w, h;
					
						if (prop < (pw/ph).toFixed(2)) {
							h = ph;
							w = Math.floor(h * prop);
						} else {
							w = pw;
							h = Math.floor(w/prop);
						}
						img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
					
					})
					.trigger('changesize');
					
					//show image
					img.fadeIn(100);
				},
				hideInfo = function() {
					loading.remove();
					// hide info/icon
					ql.hideinfo();
				},
				url, img, loading, prog, m, opDfd;

			if (!flipMime) {
				flipMime = fm.arrayFlip(mimes);
			}
			if (flipMime[file.mime] && ql.dispInlineRegex.test(file.mime)) {
				// this is our file - stop event propagation
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				img = jQuery('<img/>')
					.hide()
					.appendTo(preview)
					.on('load', function() {
						hideInfo();
						show();
					})
					.on('error', function() {
						loading.remove();
					});
				opDfd = fm.openUrl(file.hash, false, function(url) {
					img.attr('src', url);
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});

				if (file.width && file.height) {
					show();
				} else if (file.size > getDimSize) {
					dimreq = fm.request({
						data : {cmd : 'dim', target : file.hash},
						preventDefault : true
					})
					.done(function(data) {
						if (data.dim) {
							var dim = data.dim.split('x');
							file.width = dim[0];
							file.height = dim[1];
							setdim(dim);
							show();
						}
					});
				}
			}
			
		});
	},
	
	/**
	 * TIFF image preview
	 *
	 * @param  object  ql  elFinder.commands.quicklook
	 */
	function(ql) {
		"use strict";
		var fm   = ql.fm,
			mime = 'image/tiff',
			preview = ql.preview;
		if (window.Worker && window.Uint8Array) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file,
					err = function(e) {
						wk && wk.terminate();
						loading.remove();
						fm.debug('error', e);
					},
					setdim = function(dim) {
						var rfile = fm.file(file.hash);
						rfile.width = dim[0];
						rfile.height = dim[1];
					},
					loading, prog, url, base, wk, opDfd;
				if (file.mime === mime) {
					e.stopImmediatePropagation();

					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						wk && wk.terminate();
						loading.remove();
					});

					opDfd = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog }).done(function(data) {
						if (data) {
							base = jQuery('<div></div>').css({width:'100%',height:'100%'}).hide().appendTo(preview);
							try {
								wk = fm.getWorker();
								wk.onmessage = function(res) {
									var data = res.data,
										cv, co, id, prop;
									wk && wk.terminate();
									cv = document.createElement('canvas');
									co = cv.getContext('2d');
									cv.width = data.width;
									cv.height = data.height;
									id = co.createImageData(data.width, data.height);
									(id).data.set(new Uint8Array(data.image));
									co.putImageData(id, 0, 0);
									base.append(cv).show();
									loading.remove();
									prop = (data.width/data.height).toFixed(2);
									preview.on('changesize', function() {
										var pw = parseInt(preview.width()),
											ph = parseInt(preview.height()),
											w, h;
										if (prop < (pw/ph).toFixed(2)) {
											h = ph;
											w = Math.floor(h * prop);
										} else {
											w = pw;
											h = Math.floor(w/prop);
										}
										jQuery(cv).width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
									}).trigger('changesize');
									if (!file.width || !file.height) {
										setdim([data.width, data.height]);
									}
									ql.hideinfo();
								};
								wk.onerror = err;
								wk.postMessage({
									scripts: [fm.options.cdns.tiff, document.location.origin+'/wp-content/plugins/wp-file-manager/lib/js/worker/quicklook.tiff.js'],
									data: { data: data }
								});
							} catch(e) {
								err(e);
							}
						} else {
							err();
						}
					});
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
			});
		}
	},

	/**
	 * PSD(Adobe Photoshop data) preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = fm.arrayFlip(['image/vnd.adobe.photoshop', 'image/x-photoshop']),
			preview = ql.preview,
			load    = function(url, img, loading) {
				try {
					fm.replaceXhrSend();
					PSD.fromURL(url).then(function(psd) {
						var prop;
						img.attr('src', psd.image.toBase64());
						requestAnimationFrame(function() {
							prop = (img.width()/img.height()).toFixed(2);
							preview.on('changesize', function() {
								var pw = parseInt(preview.width()),
									ph = parseInt(preview.height()),
									w, h;
							
								if (prop < (pw/ph).toFixed(2)) {
									h = ph;
									w = Math.floor(h * prop);
								} else {
									w = pw;
									h = Math.floor(w/prop);
								}
								img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
							}).trigger('changesize');
							
							loading.remove();
							// hide info/icon
							ql.hideinfo();
							//show image
							img.fadeIn(100);
						});
					}, function() {
						loading.remove();
						img.remove();
					});
					fm.restoreXhrSend();
				} catch(e) {
					fm.restoreXhrSend();
					loading.remove();
					img.remove();
				}
			},
			PSD;
		
		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				url, img, loading, prog, m,
				_define, _require, opDfd;

			if (mimes[file.mime] && fm.options.cdns.psd && ! fm.UA.ltIE10 && ql.dispInlineRegex.test(file.mime)) {
				// this is our file - stop event propagation
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
				opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
					if (url) {
						img = jQuery('<img/>').hide().appendTo(preview);
						if (PSD) {
							load(url, img, loading);
						} else {
							_define = window.define;
							_require = window.require;
							window.require = null;
							window.define = null;
							fm.loadScript(
								[ fm.options.cdns.psd ],
								function() {
									PSD = require('psd');
									_define? (window.define = _define) : (delete window.define);
									_require? (window.require = _require) : (delete window.require);
									load(url, img, loading);
								}
							);
						}
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			}
		});
	},
	
	/**
	 * HTML preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = fm.arrayFlip(['text/html', 'application/xhtml+xml']),
			preview = ql.preview;
			
		preview.on(ql.evUpdate, function(e) {
			var file = e.file, jqxhr, loading, prog;
			
			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
				}).addClass('elfinder-overflow-auto');
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true,
					progressBar    : prog
				})
				.done(function(data) {
					ql.hideinfo();
					var doc = jQuery('<iframe class="elfinder-quicklook-preview-html"></iframe>').appendTo(preview)[0].contentWindow.document;
					doc.open();
					doc.write(data.content);
					doc.close();
				})
				.always(function() {
					loading.remove();
				});
			}
		});
	},
	
	/**
	 * MarkDown preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = fm.arrayFlip(['text/x-markdown']),
			preview = ql.preview,
			marked  = null,
			show = function(data, loading) {
				ql.hideinfo();
				var doc = jQuery('<iframe class="elfinder-quicklook-preview-html"></iframe>').appendTo(preview)[0].contentWindow.document;
				doc.open();
				doc.write(marked(data.content));
				doc.close();
				loading.remove();
			},
			error = function(loading) {
				marked = false;
				loading.remove();
			};
			
		preview.on(ql.evUpdate, function(e) {
			var file = e.file, jqxhr, loading, prog;
			
			if (mimes[file.mime] && fm.options.cdns.marked && marked !== false && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
				e.stopImmediatePropagation();

				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
				}).addClass('elfinder-overflow-auto');
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true,
					progressBar    : prog
				})
				.done(function(data) {
					if (marked || window.marked) {
						if (!marked) {
							marked = window.marked;
						}
						show(data, loading);
					} else {
						fm.loadScript([fm.options.cdns.marked],
							function(res) { 
								marked = res || window.marked || false;
								delete window.marked;
								if (marked) {
									show(data, loading);
								} else {
									error(loading);
								}
							},
							{
								tryRequire: true,
								error: function() {
									error(loading);
								}
							}
						);
					}
				})
				.fail(function() {
					error(loading);
				});
			}
		});
	},

	/**
	 * PDF/ODT/ODS/ODP preview with ViewerJS
	 * 
	 * @param elFinder.commands.quicklook
	 */
	 function(ql) {
		if (ql.options.viewerjs) {
			var fm      = ql.fm,
				preview = ql.preview,
				opts    = ql.options.viewerjs,
				mimes   = opts.url? fm.arrayFlip(opts.mimes || []) : [],
				win     = ql.window,
				navi    = ql.navbar,
				setNavi = function() {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '30px' : '');
				};

			if (opts.url) {
				preview.on('update', function(e) {
					var file = e.file, node, loading, prog, opDfd;

					if (mimes[file.mime] && (file.mime !== 'application/pdf' || !opts.pdfNative || !ql.flags.pdfNative)) {
						e.stopImmediatePropagation();
						loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
						prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
						opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
							if (url) {
								node = jQuery('<iframe class="elfinder-quicklook-preview-iframe"></iframe>')
									.css('background-color', 'transparent')
									.on('load', function() {
										ql.hideinfo();
										loading.remove();
										node.css('background-color', '#fff');
									})
									.on('error', function() {
										loading.remove();
										node.remove();
									})
									.appendTo(preview)
									.attr('src', opts.url + '#' + url);

								win.on('viewchange.viewerjs', setNavi);
								setNavi();

								preview.one('change', function() {
									win.off('viewchange.viewerjs');
									loading.remove();
									node.off('load').remove();
								});
							}
						}, { progressBar: prog });
						// stop loading on change file if not loaded yet
						preview.one('change', function() {
							opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
						});
					}
				});
			}
		}
	},

	/**
	 * PDF preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mime    = 'application/pdf',
			preview = ql.preview,
			active  = false,
			urlhash = '',
			firefox, toolbar;
			
		if ((fm.UA.Safari && fm.OS === 'mac' && !fm.UA.iOS) || fm.UA.IE || fm.UA.Firefox) {
			active = true;
		} else {
			jQuery.each(navigator.plugins, function(i, plugins) {
				jQuery.each(plugins, function(i, plugin) {
					if (plugin.type === mime) {
						return !(active = true);
					}
				});
			});
		}

		ql.flags.pdfNative = active;
		if (active) {
			if (typeof ql.options.pdfToolbar !== 'undefined' && !ql.options.pdfToolbar) {
				urlhash = '#toolbar=0';
			}
			preview.on(ql.evUpdate, function(e) {
				var file = e.file,
					opDfd;
				
				if (active && file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
					e.stopImmediatePropagation();
					opDfd = fm.openUrl(file.hash, false, function(url) {
						if (url) {
							ql.hideinfo();
							ql.cover.addClass('elfinder-quicklook-coverbg');
							jQuery('<object class="elfinder-quicklook-preview-pdf" data="'+url+urlhash+'" type="application/pdf" ></object>')
								.on('error', function(e) {
									active = false;
									ql.update(void(0), fm.cwd());
									ql.update(void(0), file);
								})
								.appendTo(preview);
						}
					});
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
				
			});
		}
	},
	
	/**
	 * Flash preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mime    = 'application/x-shockwave-flash',
			preview = ql.preview,
			active  = false;

		jQuery.each(navigator.plugins, function(i, plugins) {
			jQuery.each(plugins, function(i, plugin) {
				if (plugin.type === mime) {
					return !(active = true);
				}
			});
		});
		
		active && preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				node, opDfd;
				
			if (file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
				e.stopImmediatePropagation();
				opDfd = fm.openUrl(file.hash, false, function(url) {
					if (url) {
						ql.hideinfo();
						node = jQuery('<embed class="elfinder-quicklook-preview-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+url+'" quality="high" type="application/x-shockwave-flash" wmode="transparent" />')
							.appendTo(preview);
					}
				});
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			}
		});
	},
	
	/**
	 * HTML5 audio preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm       = ql.fm,
			preview  = ql.preview,
			mimes    = {
				'audio/mpeg'    : 'mp3',
				'audio/mpeg3'   : 'mp3',
				'audio/mp3'     : 'mp3',
				'audio/x-mpeg3' : 'mp3',
				'audio/x-mp3'   : 'mp3',
				'audio/x-wav'   : 'wav',
				'audio/wav'     : 'wav',
				'audio/x-m4a'   : 'm4a',
				'audio/aac'     : 'm4a',
				'audio/mp4'     : 'm4a',
				'audio/x-mp4'   : 'm4a',
				'audio/ogg'     : 'ogg',
				'audio/webm'    : 'webm',
				'audio/flac'    : 'flac',
				'audio/x-flac'  : 'flac',
				'audio/amr'     : 'amr'
			},
			node, curHash,
			win  = ql.window,
			navi = ql.navbar,
			AMR, autoplay,
			controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
			setNavi = function() {
				navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
			},
			getNode = function(src, hash) {
				return jQuery('<audio class="elfinder-quicklook-preview-audio ui-front" controls' + controlsList + ' preload="auto" autobuffer><source src="'+src+'" ></source></audio>')
					.on('change', function(e) {
						// Firefox fire change event on seek or volume change
						e.stopPropagation();
					})
					.on('error', function(e) {
						node && node.data('hash') === hash && reset();
					})
					.data('hash', hash)
					.appendTo(preview);
			},
			amrToWavUrl = function(hash) {
				var dfd = jQuery.Deferred(),
					loader = jQuery.Deferred().done(function() {
						var opDfd;
						opDfd = fm.getContents(hash, 'arraybuffer', { progressBar: prog }).done(function(data) {
							try {
								var buffer = AMR.toWAV(new Uint8Array(data));
								if (buffer) {
									dfd.resolve(URL.createObjectURL(new Blob([buffer], { type: 'audio/x-wav' })));
								} else {
									dfd.reject();
								}
							} catch(e) {
								dfd.reject();
							}
						}).fail(function() {
							dfd.reject();
						});
						// stop loading on change file if not loaded yet
						preview.one('change', function() {
							opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
						});
					}).fail(function() {
						AMR = false;
						dfd.reject();
					}),
					_AMR;
				if (window.TextEncoder && window.URL && URL.createObjectURL && typeof AMR === 'undefined') {
					// previous window.AMR
					_AMR = window.AMR;
					delete window.AMR;
					fm.loadScript(
						[ fm.options.cdns.amr ],
						function() { 
							AMR = window.AMR? window.AMR : false;
							// restore previous window.AMR
							window.AMR = _AMR;
							loader[AMR? 'resolve':'reject']();
						},
						{
							error: function() {
								loader.reject();
							}
						}
					);
				} else {
					loader[AMR? 'resolve':'reject']();
				}
				return dfd;
			},
			play = function(player) {
				var hash = node.data('hash'),
					playPromise;
				autoplay && (playPromise = player.play());
				// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
				if (playPromise && playPromise['catch']) {
					playPromise['catch'](function(e) {
						if (!player.paused) {
							node && node.data('hash') === hash && reset();
						}
					});
				}
			},
			reset = function() {
				if (node && node.parent().length) {
					var elm = node[0],
						url = node.children('source').attr('src');
					win.off('viewchange.audio');
					try {
						elm.pause();
						node.empty();
						if (url.match(/^blob:/)) {
							URL.revokeObjectURL(url);
						}
						elm.src = '';
						elm.load();
					} catch(e) {}
					node.remove();
					node = null;
				}
			},
			loading, prog;

		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				type = mimes[file.mime],
				html5, opDfd;

			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && ((html5 = ql.support.audio[type]) || (type === 'amr'))) {
				autoplay = ql.autoPlay();
				curHash = file.hash;
				if (!html5) {
					if (fm.options.cdns.amr && type === 'amr' && AMR !== false) {
						e.stopImmediatePropagation();
						loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
						prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
						node = getNode('', curHash);
						amrToWavUrl(file.hash).done(function(url) {
							loading.remove();
							if (curHash === file.hash) {
								var elm = node[0];
								try {
									node.children('source').attr('src', url);
									elm.pause();
									elm.load();
									play(elm);
									win.on('viewchange.audio', setNavi);
									setNavi();
								} catch(e) {
									URL.revokeObjectURL(url);
									node.remove();
								}
							} else {
								URL.revokeObjectURL(url);
							}
						}).fail(function() {
							node.remove();
						});
					}
				} else {
					e.stopImmediatePropagation();
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					opDfd = fm.openUrl(curHash, false, function(url) {
						loading.remove();
						if (url) {
							node = getNode(url, curHash);
							play(node[0]);
							win.on('viewchange.audio', setNavi);
							setNavi();
						} else {
							node.remove();
						}
					}, { progressBar: prog });
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
			}
		}).one('change', reset);
	},
	
	/**
	 * HTML5 video preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm       = ql.fm,
			preview  = ql.preview,
			mimes    = {
				'video/mp4'       : 'mp4',
				'video/x-m4v'     : 'mp4',
				'video/quicktime' : 'mp4',
				'video/mpeg'      : 'mpeg',
				'video/ogg'       : 'ogg',
				'application/ogg' : 'ogg',
				'video/webm'      : 'webm',
				'video/x-matroska': 'mkv',
				'video/3gpp'      : '3gp',
				'application/vnd.apple.mpegurl' : 'm3u8',
				'application/x-mpegurl' : 'm3u8',
				'application/dash+xml'  : 'mpd',
				'video/x-flv'     : 'flv',
				'video/x-msvideo' : 'avi'
			},
			node,
			win  = ql.window,
			navi = ql.navbar,
			cHls, cDash, pDash, cFlv, cVideojs, autoplay, tm, loading, prog,
			controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
			setNavi = function() {
				if (fm.UA.iOS) {
					if (win.hasClass('elfinder-quicklook-fullscreen')) {
						preview.css('height', '-webkit-calc(100% - 50px)');
						navi._show();
					} else {
						preview.css('height', '');
					}
				} else {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
				}
			},
			render = function(file, opts) {
				var errTm = function(e) {
						if (err > 1) {
							tm && clearTimeout(tm);
							tm = setTimeout(function() {
								!canPlay && reset(true);
							}, 800);
						}
					},
					err = 0, 
					canPlay;
				//reset();
				pDash = null;
				opts = opts || {};
				ql.hideinfo();
				node = jQuery('<video class="elfinder-quicklook-preview-video" controls' + controlsList + ' preload="auto" autobuffer playsinline>'
						+'</video>')
					.on('change', function(e) {
						// Firefox fire change event on seek or volume change
						e.stopPropagation();
					})
					.on('timeupdate progress', errTm)
					.on('canplay', function() {
						canPlay = true;
					})
					.data('hash', file.hash);
				// can not handling error event with jQuery `on` event handler
				node[0].addEventListener('error', function(e) {
					if (opts.src && fm.convAbsUrl(opts.src) === fm.convAbsUrl(e.target.src)) {
						++err;
						errTm();
					}
				}, true);

				if (opts.src) {
					node.append('<source src="'+opts.src+'" type="'+file.mime+'"></source><source src="'+opts.src+'"></source>');
				}
				
				node.appendTo(preview);

				win.on('viewchange.video', setNavi);
				setNavi();
			},
			loadHls = function(file) {
				var hls, opDfd;
				opDfd = fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						render(file);
						hls = new cHls();
						hls.loadSource(url);
						hls.attachMedia(node[0]);
						if (autoplay) {
							hls.on(cHls.Events.MANIFEST_PARSED, function() {
								play(node[0]);
							});
						}
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			loadDash = function(file) {
				var opDfd;
				opDfd = fm.openUrl(file.hash, false, function(url) {
					var debug;
					loading.remove();
					if (url) {
						render(file);
						pDash = window.dashjs.MediaPlayer().create();
						debug = pDash.getDebug();
						if (debug.setLogLevel) {
							debug.setLogLevel(dashjs.Debug.LOG_LEVEL_FATAL);
						} else if (debug.setLogToBrowserConsole) {
							debug.setLogToBrowserConsole(false);
						}
						pDash.initialize(node[0], url, autoplay);
						pDash.on('error', function(e) {
							reset(true);
						});
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			loadFlv = function(file) {
				var opDfd
				if (!cFlv.isSupported()) {
					cFlv = false;
					return;
				}
				opDfd = fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						var player = cFlv.createPlayer({
							type: 'flv',
							url: url
						});
						render(file);
						player.on(cFlv.Events.ERROR, function() {
							player.destroy();
							reset(true);
						});
						player.attachMediaElement(node[0]);
						player.load();
						play(player);
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			loadVideojs = function(file) {
				var opDfd;
				opDfd = fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						render(file);
						node[0].src = url;
						cVideojs(node[0], {
							src: url
						});
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			},
			play = function(player) {
				var hash = node.data('hash'),
					playPromise;
				autoplay && (playPromise = player.play());
				// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
				if (playPromise && playPromise['catch']) {
					playPromise['catch'](function(e) {
						if (!player.paused) {
							node && node.data('hash') === hash && reset(true);
						}
					});
				}
			},
			reset = function(showInfo) {
				tm && clearTimeout(tm);
				if (node && node.parent().length) {
					var elm = node[0];
					win.off('viewchange.video');
					pDash && pDash.reset();
					try {
						elm.pause();
						node.empty();
						elm.src = '';
						elm.load();
					} catch(e) {}
					node.remove();
					node = null;
				}
				showInfo && ql.info.show();
			};

		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				mime = file.mime.toLowerCase(),
				type = mimes[mime],
				stock, playPromise, opDfd;
			
			if (mimes[mime] && ql.dispInlineRegex.test(file.mime) /*&& (((type === 'm3u8' || (type === 'mpd' && !fm.UA.iOS) || type === 'flv') && !fm.UA.ltIE10) || ql.support.video[type])*/) {
				autoplay = ql.autoPlay();
				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>');
				prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
				if (ql.support.video[type] && (type !== 'm3u8' || fm.UA.Safari)) {
					e.stopImmediatePropagation();
					loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
					opDfd = fm.openUrl(file.hash, false, function(url) {
						loading.remove();
						if (url) {
							render(file, { src: url });
							play(node[0]);
						}
					}, { progressBar: prog });
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				} else {
					if (cHls !== false && fm.options.cdns.hls && type === 'm3u8') {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cHls) {
							loadHls(file);
						} else {
							stock = window.Hls;
							delete window.Hls;
							fm.loadScript(
								[ fm.options.cdns.hls ],
								function(res) { 
									cHls = res || window.Hls || false;
									window.Hls = stock;
									cHls && loadHls(file);
								},
								{
									tryRequire: true,
									error : function() {
										cHls = false;
									}
								}
							);
						}
					} else if (cDash !== false && fm.options.cdns.dash && type === 'mpd') {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cDash) {
							loadDash(file);
						} else {
							fm.loadScript(
								[ fm.options.cdns.dash ],
								function() {
									// dashjs require window.dashjs in global scope
									cDash = window.dashjs? true : false;
									cDash && loadDash(file);
								},
								{
									tryRequire: true,
									error : function() {
										cDash = false;
									}
								}
							);
						}
					} else if (cFlv !== false && fm.options.cdns.flv && type === 'flv') {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cFlv) {
							loadFlv(file);
						} else {
							stock = window.flvjs;
							delete window.flvjs;
							fm.loadScript(
								[ fm.options.cdns.flv ],
								function(res) { 
									cFlv = res || window.flvjs || false;
									window.flvjs = stock;
									cFlv && loadFlv(file);
								},
								{
									tryRequire: true,
									error : function() {
										cFlv = false;
									}
								}
							);
						}
					} else if (fm.options.cdns.videojs) {
						e.stopImmediatePropagation();
						loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
						if (cVideojs) {
							loadVideojs(file);
						} else {
							fm.loadScript(
								[ fm.options.cdns.videojs + '/video.min.js' ],
								function(res) { 
									cVideojs = res || window.videojs || false;
									//window.flvjs = stock;
									cVideojs && loadVideojs(file);
								},
								{
									tryRequire: true,
									error : function() {
										cVideojs = false;
									}
								}
							).loadCss([fm.options.cdns.videojs + '/video-js.min.css']);
						}
					}
				}
			}
		}).one('change', reset);
	},
	
	/**
	 * Audio/video preview plugin using browser plugins
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var preview = ql.preview,
			mimes   = [],
			node,
			win  = ql.window,
			navi = ql.navbar;
			
		jQuery.each(navigator.plugins, function(i, plugins) {
			jQuery.each(plugins, function(i, plugin) {
				(plugin.type.indexOf('audio/') === 0 || plugin.type.indexOf('video/') === 0) && mimes.push(plugin.type);
			});
		});
		mimes = ql.fm.arrayFlip(mimes);
		
		preview.on(ql.evUpdate, function(e) {
			var file  = e.file,
				mime  = file.mime,
				video, opDfd, loading, prog,
				setNavi = function() {
					navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
				};
			
			if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime)) {
				e.stopImmediatePropagation();
				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
				opDfd = ql.fm.openUrl(file.hash, false, function(url) {
					loading.remove();
					if (url) {
						(video = mime.indexOf('video/') === 0) && ql.hideinfo();
						node = jQuery('<embed src="'+url+'" type="'+mime+'" class="elfinder-quicklook-preview-'+(video ? 'video' : 'audio')+'"/>')
							.appendTo(preview);
						
						win.on('viewchange.embed', setNavi);
						setNavi();
					}
				}, { progressBar: prog });
				// stop loading on change file if not loaded yet
				preview.one('change', function() {
					opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
				});
			}
		}).one('change', function() {
			if (node && node.parent().length) {
				win.off('viewchange.embed');
				node.remove();
				node= null;
			}
		});
		
	},

	/**
	 * Archive(zip|gzip|tar|bz2) preview plugin using https://github.com/imaya/zlib.js
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = fm.arrayFlip(['application/zip', 'application/x-gzip', 'application/x-tar', 'application/x-bzip2']),
			preview = ql.preview,
			sizeMax = fm.returnBytes(ql.options.unzipMaxSize || 0),
			Zlib    = (fm.options.cdns.zlibUnzip && fm.options.cdns.zlibGunzip)? true : false,
			bzip2   = fm.options.cdns.bzip2? true : false;

		if (window.Worker && window.Uint8Array && window.DataView) {
			preview.on(ql.evUpdate, function(e) {
				var file  = e.file,
					isTar = (file.mime === 'application/x-tar'),
					isBzip2 = (file.mime === 'application/x-bzip2'),
					isZlib = (file.mime === 'application/zip' || file.mime === 'application/x-gzip');
				if (mimes[file.mime] && (!sizeMax || file.size <= sizeMax) && (
						isTar
						|| (isBzip2 && bzip2)
						|| (isZlib && Zlib)
					)) {
					var jqxhr, wk, loading, prog, url,
						req = function() {
							jqxhr = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog })
							.fail(function() {
								loading.remove();
							})
							.done(function(data) {
								var unzip, filenames,
									err = function(e) {
										wk && wk.terminate();
										loading.remove();
										if (isZlib) {
											Zlib = false;
										} else if (isBzip2) {
											bzip2 = false;
										}
										fm.debug('error', e);
									};
								try {
									wk = fm.getWorker();
									wk.onmessage = function(res) {
										wk && wk.terminate();
										loading.remove();
										if (!res.data || res.data.error) {
											new Error(res.data && res.data.error? res.data.error : '');
										} else {
											makeList(res.data.files);
										}
									};
									wk.onerror = err;
									if (file.mime === 'application/x-tar') {
										wk.postMessage({
											scripts: [fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'tar', bin: data }
										});
									} else if (file.mime === 'application/zip') {
										wk.postMessage({
											scripts: [fm.options.cdns.zlibUnzip, fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'zip', bin: data }
										});
									} else if (file.mime === 'application/x-gzip') {
										wk.postMessage({
											scripts: [fm.options.cdns.zlibGunzip, fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'gzip', bin: data }
										});

									} else if (file.mime === 'application/x-bzip2') {
										wk.postMessage({
											scripts: [fm.options.cdns.bzip2, fm.getWorkerUrl('quicklook.unzip.js')],
											data: { type: 'bzip2', bin: data }
										});
									}
								} catch (e) {
									err(e);
								}
							});
						},
						makeList = function(filenames) {
							var header, list, doc, tsize = 0;
							if (filenames && filenames.length) {
								filenames = jQuery.map(filenames, function(str) {
									return fm.decodeRawString(str);
								});
								filenames.sort();
								list = fm.escape(filenames.join("\n").replace(/\{formatSize\((\d+)\)\}/g, function(m, s) {
									tsize += parseInt(s);
									return fm.formatSize(s);
								}));
								header = '<strong>'+fm.escape(file.mime)+'</strong> ('+fm.formatSize(file.size)+' / '+fm.formatSize(tsize)+')'+'<hr/>';
								doc = jQuery('<div class="elfinder-quicklook-preview-archive-wrapper">'+header+'<pre class="elfinder-quicklook-preview-text">'+list+'</pre></div>')
									.on('touchstart', function(e) {
										if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
											e.originalEvent._preventSwipeX = true;
										}
									})
									.appendTo(preview);
								ql.hideinfo();
							}
							loading.remove();
						};

					// this is our file - stop event propagation
					e.stopImmediatePropagation();
					
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						jqxhr.state() === 'pending' && jqxhr.reject();
						wk && wk.terminate();
						loading.remove();
					});
					
					req();
				}
			});
		}
	},

	/**
	 * RAR Archive preview plugin using https://github.com/43081j/rar.js
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = fm.arrayFlip(['application/x-rar']),
			preview = ql.preview,
			RAR;

		if (window.DataView) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file;
				if (mimes[file.mime] && fm.options.cdns.rar && RAR !== false) {
					var loading, prog, url, archive, abort,
						getList = function(url) {
							if (abort) {
								loading.remove();
								return;
							}
							try {
								archive = RAR({
									file: url,
									type: 2,
									xhrHeaders: fm.customHeaders,
									xhrFields: fm.xhrFields
								}, function(err) {
									loading.remove();
									var filenames = [],
										header, doc;
									if (abort || err) {
										// An error occurred (not a rar, read error, etc)
										err && fm.debug('error', err);
										return;
									}
									jQuery.each(archive.entries, function() {
										filenames.push(this.path + (this.size? ' (' + fm.formatSize(this.size) + ')' : ''));
									});
									if (filenames.length) {
										filenames = jQuery.map(filenames, function(str) {
											return fm.decodeRawString(str);
										});
										filenames.sort();
										header = '<strong>'+fm.escape(file.mime)+'</strong> ('+fm.formatSize(file.size)+')'+'<hr/>';
										doc = jQuery('<div class="elfinder-quicklook-preview-archive-wrapper">'+header+'<pre class="elfinder-quicklook-preview-text">'+fm.escape(filenames.join("\n"))+'</pre></div>')
											.on('touchstart', function(e) {
												if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
													e.originalEvent._preventSwipeX = true;
												}
											})
											.appendTo(preview);
										ql.hideinfo();
									}
								});
							} catch(e) {
								loading.remove();
							}
						},
						error = function() {
							RAR = false;
							loading.remove();
						},
						_RAR, opDfd;

					// this is our file - stop event propagation
					e.stopImmediatePropagation();
					
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						archive && (archive.abort = true);
						loading.remove();
						abort = true;
					});
					
					opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
						if (url) {
							if (RAR) {
								getList(url);
							} else {
								if (window.RarArchive) {
									_RAR = window.RarArchive;
									delete window.RarArchive;
								}
								fm.loadScript(
									[ fm.options.cdns.rar ],
									function() {
										if (fm.hasRequire) {
											require(['rar'], function(RarArchive) {
												RAR = RarArchive;
												getList(url);
											}, error);
										} else {
											if (RAR = window.RarArchive) {
												if (_RAR) {
													window.RarArchive = _RAR;
												} else {
													delete window.RarArchive;
												}
												getList(url);
											} else {
												error();
											}
										}
									},
									{
										tryRequire: true,
										error : error
									}
								);
							}
						}
					}, { progressBar: prog, temporary: true });
					// stop loading on change file if not loaded yet
					preview.one('change', function() {
						opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
					});
				}
			});
		}
	},

	/**
	 * CAD-Files and 3D-Models online viewer on sharecad.org
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = fm.arrayFlip(ql.options.sharecadMimes || []),
			preview = ql.preview,
			win     = ql.window,
			node;
			
		if (ql.options.sharecadMimes.length) {
			ql.addIntegration({
				title: 'ShareCAD.org CAD and 3D-Models viewer',
				link: 'https://sharecad.org/DWGOnlinePlugin'
			});
		}

		preview.on(ql.evUpdate, function(e) {
			var file = e.file;
			if (mimes[file.mime.toLowerCase()] && fm.option('onetimeUrl', file.hash)) {
				var win     = ql.window,
					loading, prog, url;
				
				e.stopImmediatePropagation();
				if (file.url == '1') {
					preview.hide();
					jQuery('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
					.on('click', function() {
						var self = jQuery(this);
						self.html('<span class="elfinder-spinner">');
						fm.request({
							data : {cmd : 'url', target : file.hash},
							preventDefault : true,
							progressBar : prog
						})
						.always(function() {
							self.html('');
						})
						.done(function(data) {
							var rfile = fm.file(file.hash);
							file.url = rfile.url = data.url || '';
							if (file.url) {
								preview.trigger({
									type: ql.evUpdate,
									file: file,
									forceUpdate: true
								});
							}
						});
					});
				}
				if (file.url !== '' && file.url != '1') {
					preview.one('change', function() {
						loading.remove();
						node.off('load').remove();
						node = null;
					}).addClass('elfinder-overflow-auto');
					
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					
					url = fm.convAbsUrl(fm.url(file.hash));
					node = jQuery('<iframe class="elfinder-quicklook-preview-iframe" scrolling="no"></iframe>')
						.css('background-color', 'transparent')
						.appendTo(preview)
						.on('load', function() {
							ql.hideinfo();
							loading.remove();
							ql.preview.after(ql.info);
							jQuery(this).css('background-color', '#fff').show();
						})
						.on('error', function() {
							loading.remove();
							ql.preview.after(ql.info);
						})
						.attr('src', '//sharecad.org/cadframe/load?url=' + encodeURIComponent(url));
					
					ql.info.after(ql.preview);
				}
			}
			
		});
	},

	/**
	 * KML preview with GoogleMaps API
	 *
	 * @param elFinder.commands.quicklook
	 */
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = {
				'application/vnd.google-earth.kml+xml' : true,
				'application/vnd.google-earth.kmz' : true
			},
			preview = ql.preview,
			gMaps, loadMap, wGmfail, fail, mapScr;

		if (ql.options.googleMapsApiKey) {
			ql.addIntegration({
				title: 'Google Maps',
				link: 'https://www.google.com/intl/' + fm.lang.replace('_', '-') + '/help/terms_maps.html'
			});
			gMaps = (window.google && google.maps);
			// start load maps
			loadMap = function(file, node, prog) {
				var mapsOpts = ql.options.googleMapsOpts.maps;
				fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
					if (url) {
						try {
							new gMaps.KmlLayer(url, Object.assign({
								map: new gMaps.Map(node.get(0), mapsOpts)
							}, ql.options.googleMapsOpts.kml));
							ql.hideinfo();
						} catch(e) {
							fail();
						}
					} else {
						fail();
					}
				});
			};
			// keep stored error handler if exists
			wGmfail = window.gm_authFailure;
			// on error function
			fail = function() {
				mapScr = null;
			};
			// API script url
			mapScr = 'https://maps.googleapis.com/maps/api/js?key=' + ql.options.googleMapsApiKey;
			// error handler
			window.gm_authFailure = function() {
				fail();
				wGmfail && wGmfail();
			};

			preview.on(ql.evUpdate, function(e) {
				var file = e.file;
				if (mapScr && mimes[file.mime.toLowerCase()]) {
					var win     = ql.window,
						getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
						loading, prog, url, node;
				
					e.stopImmediatePropagation();
					loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
					prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);
					if (getLink) {
						preview.hide();
						jQuery('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
						.on('click', function() {
							var self = jQuery(this);
							self.html('<span class="elfinder-spinner">');
							fm.request({
								data : {cmd : 'url', target : file.hash},
								preventDefault : true,
								progressBar : prog
							})
							.always(function() {
								loading.remove();
								self.html('');
							})
							.done(function(data) {
								var rfile = fm.file(file.hash);
								file.url = rfile.url = data.url || '';
								if (file.url) {
									preview.trigger({
										type: ql.evUpdate,
										file: file,
										forceUpdate: true
									});
								}
							});
						});
					}
					if (file.url !== '' && !getLink) {
						node = jQuery('<div style="width:100%;height:100%;"></div>').appendTo(preview);
						preview.one('change', function() {
							node.remove();
							node = null;
						});
						if (!gMaps) {
							fm.loadScript([mapScr], function() {
								gMaps = window.google && google.maps;
								gMaps && loadMap(file, node, prog);
							});
						} else {
							loadMap(file, node, prog);
						}
					}
				}
			});
		}
	},

	/**
	 * Any supported files preview plugin using (Google docs | MS Office) online viewer
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			mimes   = Object.assign(fm.arrayFlip(ql.options.googleDocsMimes || [], 'g'), fm.arrayFlip(ql.options.officeOnlineMimes || [], 'm')),
			preview = ql.preview,
			win     = ql.window,
			navi    = ql.navbar,
			urls    = {
				g: 'docs.google.com/gview?embedded=true&url=',
				m: 'view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src='
			},
			navBottom = {
				g: '56px',
				m: '24px'
			},
			mLimits = {
				xls  : 5242880, // 5MB
				xlsb : 5242880,
				xlsx : 5242880,
				xlsm : 5242880,
				other: 10485760 // 10MB
			},
			node, enable;
		
		if (ql.options.googleDocsMimes.length) {
			enable = true;
			ql.addIntegration({
				title: 'Google Docs Viewer',
				link: 'https://docs.google.com/'
			});
		}
		if (ql.options.officeOnlineMimes.length) {
			enable = true;
			ql.addIntegration({
				title: 'MS Online Doc Viewer',
				link: 'https://products.office.com/office-online/view-office-documents-online'
			});
		}

		if (enable) {
			preview.on(ql.evUpdate, function(e) {
				var file = e.file,
					type, dfd;
				// 25MB is maximum filesize of Google Docs prevew
				if (file.size <= 26214400 && (type = mimes[file.mime])) {
					var win     = ql.window,
						setNavi = function() {
							navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? navBottom[type] : '');
						},
						ext     = fm.mimeTypes[file.mime],
						getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
						loading, prog, url, tm;
					
					if (type === 'm') {
						if ((mLimits[ext] && file.size > mLimits[ext]) || file.size > mLimits.other) {
							type = 'g';
						}
					}
					if (getLink) {
						preview.hide();
						jQuery('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
						.on('click', function() {
							var self = jQuery(this);
							self.html('<span class="elfinder-spinner">');
							fm.request({
								data : {cmd : 'url', target : file.hash},
								preventDefault : true
							})
							.always(function() {
								self.html('');
							})
							.done(function(data) {
								var rfile = fm.file(file.hash);
								file.url = rfile.url = data.url || '';
								if (file.url) {
									preview.trigger({
										type: ql.evUpdate,
										file: file,
										forceUpdate: true
									});
								}
							});
						});
					}
					if (file.url !== '' && !getLink) {
						e.stopImmediatePropagation();
						preview.one('change', function() {
							dfd && dfd.status && dfd.status() === 'pending' && dfd.reject();
							win.off('viewchange.googledocs');
							loading.remove();
							node.off('load').remove();
							node = null;
						}).addClass('elfinder-overflow-auto');
						
						loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
						prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

						node = jQuery('<iframe class="elfinder-quicklook-preview-iframe"></iframe>')
							.css('background-color', 'transparent')
							.appendTo(preview);

						dfd = fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
							var load = function() {
									try {
										if (node && (!node.attr('src') || node.get(0).contentWindow.document/*maybe HTTP 204*/)) {
											node.attr('src', 'https://' + urls[type] + encodeURIComponent(url));
											// Retry because Google Docs viewer sometimes returns HTTP 204
											tm = setTimeout(load, 2000);
										}
									} catch(e) {}
								};
							if (url) {
								if (file.ts) {
									url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts;
								}
								node.on('load', function() {
									tm && clearTimeout(tm);
									ql.hideinfo();
									loading.remove();
									ql.preview.after(ql.info);
									jQuery(this).css('background-color', '#fff').show();
								})
								.on('error', function() {
									tm && clearTimeout(tm);
									loading.remove();
									ql.preview.after(ql.info);
								});
								load();
							} else {
								loading.remove();
								node.remove();
							}
						});

						win.on('viewchange.googledocs', setNavi);
						setNavi();
						ql.info.after(ql.preview);
					}
				}
				
			});
		}
	},

	/**
	 * Texts preview plugin
	 *
	 * @param elFinder.commands.quicklook
	 **/
	function(ql) {
		"use strict";
		var fm      = ql.fm,
			preview = ql.preview,
			textLines = parseInt(ql.options.textInitialLines) || 150,
			prettifyLines = parseInt(ql.options.prettifyMaxLines) || 500,
			PR, _PR,
			error = function() {
				prettify = function() { return false; };
				_PR && (window.PR = _PR);
				PR = false;
			},
			prettify = function(node) {
				if (fm.options.cdns.prettify) {
					prettify = function(node) {
						setTimeout(function() {
							PRcheck(node);
						}, 100);
						return 'pending';
					};
					if (window.PR) {
						_PR = window.PR;
					}
					fm.loadScript([fm.options.cdns.prettify + (fm.options.cdns.prettify.match(/\?/)? '&' : '?') + 'autorun=false'], function(wPR) {
						PR = wPR || window.PR;
						if (typeof PR === 'object') {
							prettify = function() { return true; };
							if (_PR) {
								window.PR = _PR;
							} else {
								delete window.PR;
							}
							exec(node);
						} else {
							error();
						}
					}, {
						tryRequire: true,
						error : error
					});
				} else {
					error();
				}
			},
			exec = function(node) {
				if (node && !node.hasClass('prettyprinted')) {
					node.css('cursor', 'wait');
					requestAnimationFrame(function() {
						PR.prettyPrint && PR.prettyPrint(null, node.get(0));
						node.css('cursor', '');
					});
				}
			},
			PRcheck = function(node) {
				var status = prettify(node);
				if (status === true) {
					exec(node);
				}
			};
		
		preview.on(ql.evUpdate, function(e) {
			var file = e.file,
				mime = file.mime,
				jqxhr, loading, prog, encSelect;
			
			if (fm.mimeIsText(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax) && PR !== false) {
				e.stopImmediatePropagation();
				
				loading = jQuery('<div class="elfinder-quicklook-info-data"><span class="elfinder-spinner-text">'+fm.i18n('nowLoading')+'</span><span class="elfinder-spinner"></span></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
				prog = jQuery('<div class="elfinder-quicklook-info-progress"></div>').appendTo(loading);

				// stop loading on change file if not loadin yet
				preview.one('change', function() {
					jqxhr.state() == 'pending' && jqxhr.reject();
					encSelect && encSelect.remove();
				});
				
				jqxhr = fm.request({
					data           : {cmd : 'get', target : file.hash, conv : (file.encoding || 1), _t : file.ts},
					options        : {type: 'get', cache : true},
					preventDefault : true,
					progressBar    : prog
				})
				.done(function(data) {
					var reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i'),
						text = data.content,
						part, more, node, lines, m;
					if (typeof text !== 'string') {
						return;
					}
					ql.hideinfo();
					if (window.atob && (m = text.match(reg))) {
						text = atob(text.substr(m[1].length));
					}
					
					lines = text.match(/([^\r\n]{1,100}[\r\n]*)/g);
					more = lines.length - textLines;
					if (more > 10) {
						part = lines.splice(0, textLines).join('');
					} else {
						more = 0;
					}

					node = jQuery('<div class="elfinder-quicklook-preview-text-wrapper"><pre class="elfinder-quicklook-preview-text prettyprint"></pre></div>');
					
					if (more) {
						node.append(jQuery('<div class="elfinder-quicklook-preview-charsleft"><hr/><span>' + fm.i18n('linesLeft', fm.toLocaleString(more)) + '</span></div>')
							.on('click', function() {
								var top = node.scrollTop();
								jQuery(this).remove();
								node.children('pre').removeClass('prettyprinted').text(text).scrollTop(top);
								if (lines.length <= prettifyLines) {
									PRcheck(node);
								}
							})
						);
					}
					node.children('pre').text(part || text);
					
					node.on('touchstart', function(e) {
						if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
							e.originalEvent._preventSwipeX = true;
						}
					}).appendTo(preview);

					// make toast message
					if (data.toasts && Array.isArray(data.toasts)) {
						jQuery.each(data.toasts, function() {
							this.msg && fm.toast(this);
						});
					}

					PRcheck(node);
				})
				.always(function(data) {
					var cmdEdit, sel, head;
					if (cmdEdit = fm.getCommand('edit')) {
						head = [];
						if (data && data.encoding) {
							head.push({value: data.encoding});
						}
						head.push({value: 'UTF-8'});
						sel = cmdEdit.getEncSelect(head);
						sel.on('change', function() {
							file.encoding = sel.val();
							fm.cache(file, 'change');
							preview.trigger({
								type: ql.evUpdate,
								file: file,
								forceUpdate: true
							});
						});
						encSelect = jQuery('<div class="elfinder-quicklook-encoding"></div>').append(sel);
						ql.window.append(encSelect);
					}
					loading.remove();
				});
			}
		});
	}
];
lib/js/commands/places.js000064400000001405147361034410011337 0ustar00/**
 * @class  elFinder command "places"
 * Regist to Places
 *
 * @author Naoki Sawada
 **/
 elFinder.prototype.commands.places = function() {
	"use strict";
	var self   = this,
	fm     = this.fm,
	filter = function(hashes) {
		var fres = true;
		return jQuery.grep(self.files(hashes), function(f) {
			fres = fres && f.mime == 'directory' ? true : false;
			return fres;
		});
	},
	places = null;
	
	this.getstate = function(select) {
		var sel = this.hashes(select),
		cnt = sel.length;
		
		return  places && cnt && cnt == filter(sel).length ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var files = this.files(hashes);
		places.trigger('regist', [ files ]);
		return jQuery.Deferred().resolve();
	};
	
	fm.one('load', function(){
		places = fm.ui.places;
	});

};
lib/js/commands/restore.js000064400000016711147361034410011561 0ustar00/**
 * @class  elFinder command "restore"
 * Restore items from the trash
 *
 * @author Naoki Sawada
 **/
(elFinder.prototype.commands.restore = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		fakeCnt = 0,
		getFilesRecursively = function(files) {
			var dfd = jQuery.Deferred(),
				dirs = [],
				results = [],
				reqs = [],
				phashes = [],
				getFile;
			
			dfd._xhrReject = function() {
				jQuery.each(reqs, function() {
					this && this.reject && this.reject();
				});
				getFile && getFile._xhrReject();
			};
			
			jQuery.each(files, function(i, f) {
				f.mime === 'directory'? dirs.push(f) : results.push(f);
			});
			
			if (dirs.length) {
				jQuery.each(dirs, function(i, d) {
					reqs.push(fm.request({
						data : {cmd  : 'open', target : d.hash},
						preventDefault : true,
						asNotOpen : true
					}));
					phashes[i] = d.hash;
				});
				jQuery.when.apply($, reqs).fail(function() {
					dfd.reject();
				}).done(function() {
					var items = [];
					jQuery.each(arguments, function(i, r) {
						var files;
						if (r.files) {
							if (r.files.length) {
								items = items.concat(r.files);
							} else {
								items.push({
									hash: 'fakefile_' + (fakeCnt++),
									phash: phashes[i],
									mime: 'fakefile',
									name: 'fakefile',
									ts: 0
								});
							}
						}
					});
					fm.cache(items);
					getFile = getFilesRecursively(items).done(function(res) {
						results = results.concat(res);
						dfd.resolve(results);
					});
				});
			} else {
				dfd.resolve(results);
			}
			
			return dfd;
		},
		restore = function(dfrd, files, targets, ops) {
			var rHashes = {},
				others = [],
				found = false,
				dirs = [],
				opts = ops || {},
				id = +new Date(),
				tm, getFile;
			
			fm.lockfiles({files : targets});
			
			dirs = jQuery.map(files, function(f) {
				return f.mime === 'directory'? f.hash : null;
			});
			
			dfrd.done(function() {
				dirs && fm.exec('rm', dirs, {forceRm : true, quiet : true});
			}).always(function() {
				fm.unlockfiles({files : targets});
			});
			
			tm = setTimeout(function() {
				fm.notify({type : 'search', id : id, cnt : 1, hideCnt : true, cancel : function() {
					getFile && getFile._xhrReject();
					dfrd.reject();
				}});
			}, fm.notifyDelay);

			fakeCnt = 0;
			getFile = getFilesRecursively(files).always(function() {
				tm && clearTimeout(tm);
				fm.notify({type : 'search', id: id, cnt : -1, hideCnt : true});
			}).fail(function() {
				dfrd.reject('errRestore', 'errFileNotFound');
			}).done(function(res) {
				var errFolderNotfound = ['errRestore', 'errFolderNotFound'],
					dirTop = '';
				
				if (res.length) {
					jQuery.each(res, function(i, f) {
						var phash = f.phash,
							pfile,
							srcRoot, tPath;
						while(phash) {
							if (srcRoot = fm.trashes[phash]) {
								if (! rHashes[srcRoot]) {
									if (found) {
										// Keep items of other trash
										others.push(f.hash);
										return null; // continue jQuery.each
									}
									rHashes[srcRoot] = {};
									found = true;
								}
		
								tPath = fm.path(f.hash).substr(fm.path(phash).length).replace(/\\/g, '/');
								tPath = tPath.replace(/\/[^\/]+?$/, '');
								if (tPath === '') {
									tPath = '/';
								}
								if (!rHashes[srcRoot][tPath]) {
									rHashes[srcRoot][tPath] = [];
								}
								if (f.mime === 'fakefile') {
									fm.updateCache({removed:[f.hash]});
								} else {
									rHashes[srcRoot][tPath].push(f.hash);
								}
								if (!dirTop || dirTop.length > tPath.length) {
									dirTop = tPath;
								}
								break;
							}
							
							// Go up one level for next check
							pfile = fm.file(phash);
							
							if (!pfile) {
								phash = false;
								// Detection method for search results
								jQuery.each(fm.trashes, function(ph) {
									var file = fm.file(ph),
										filePath = fm.path(ph);
									if ((!file.volumeid || f.hash.indexOf(file.volumeid) === 0) && fm.path(f.hash).indexOf(filePath) === 0) {
										phash = ph;
										return false;
									}
								});
							} else {
								phash = pfile.phash;
							}
						}
					});
					if (found) {
						jQuery.each(rHashes, function(src, dsts) {
							var dirs = Object.keys(dsts),
								cnt = dirs.length;
							fm.request({
								data   : {cmd  : 'mkdir', target : src, dirs : dirs}, 
								notify : {type : 'chkdir', cnt : cnt},
								preventFail : true
							}).fail(function(error) {
								dfrd.reject(error);
								fm.unlockfiles({files : targets});
							}).done(function(data) {
								var cmdPaste, hashes;
								
								if (hashes = data.hashes) {
									cmdPaste = fm.getCommand('paste');
									if (cmdPaste) {
										// wait until file cache made
										fm.one('mkdirdone', function() {
											var hasErr = false;
											jQuery.each(dsts, function(dir, files) {
												if (hashes[dir]) {
													if (files.length) {
														if (fm.file(hashes[dir])) {
															fm.clipboard(files, true);
															fm.exec('paste', [ hashes[dir] ], {_cmd : 'restore', noToast : (opts.noToast || dir !== dirTop)})
															.done(function(data) {
																if (data && (data.error || data.warning)) {
																	hasErr = true;
																}
															})
															.fail(function() {
																hasErr = true;
															})
															.always(function() {
																if (--cnt < 1) {
																	dfrd[hasErr? 'reject' : 'resolve']();
																	if (others.length) {
																		// Restore items of other trash
																		fm.exec('restore', others);
																	}
																}
															});
														} else {
															dfrd.reject(errFolderNotfound);
														}
													} else {
														if (--cnt < 1) {
															dfrd.resolve();
															if (others.length) {
																// Restore items of other trash
																fm.exec('restore', others);
															}
														}
													}
												}
											});
										});
									} else {
										dfrd.reject(['errRestore', 'errCmdNoSupport', '(paste)']);
									}
								} else {
									dfrd.reject(errFolderNotfound);
								}
							});
						});
					} else {
						dfrd.reject(errFolderNotfound);
					}
				} else {
					dfrd.reject('errFileNotFound');
					dirs && fm.exec('rm', dirs, {forceRm : true, quiet : true});
				}
			});
		};
	
	// for to be able to overwrite
	this.restore = restore;

	this.linkedCmds = ['copy', 'paste', 'mkdir', 'rm'];
	this.updateOnSelect = false;
	
	this.init = function() {
		// re-assign for extended command
		self = this;
		fm = this.fm;
	};

	this.getstate = function(sel, e) {
		sel = sel || fm.selected();
		return sel.length && jQuery.grep(sel, function(h) {var f = fm.file(h); return f && ! f.locked && ! fm.isRoot(f)? true : false; }).length == sel.length
			? 0 : -1;
	};
	
	this.exec = function(hashes, opts) {
		var dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}),
			files  = self.files(hashes);

		if (! files.length) {
			return dfrd.reject();
		}
		
		jQuery.each(files, function(i, file) {
			if (fm.isRoot(file)) {
				return !dfrd.reject(['errRestore', file.name]);
			}
			if (file.locked) {
				return !dfrd.reject(['errLocked', file.name]);
			}
		});

		if (dfrd.state() === 'pending') {
			this.restore(dfrd, files, hashes, opts);
		}
			
		return dfrd;
	};

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/rename.js000064400000037653147361034410011355 0ustar00/**
 * @class elFinder command "rename". 
 * Rename selected file.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.rename = function() {
	"use strict";

	// set alwaysEnabled to allow root rename on client size
	this.alwaysEnabled = true;

	this.syncTitleOnChange = true;

	var self = this,
		fm = self.fm,
		request = function(dfrd, targtes, file, name) {
			var sel = targtes? [file.hash].concat(targtes) : [file.hash],
				cnt = sel.length,
				data = {}, rootNames;
			
			fm.lockfiles({files : sel});
			
			if (fm.isRoot(file) && !file.netkey) {
				if (!(rootNames = fm.storage('rootNames'))) {
					rootNames = {};
				}
				if (name === '') {
					if (rootNames[file.hash]) {
						file.name = file._name;
						file.i18 = file._i18;
						delete rootNames[file.hash];
						delete file._name;
						delete file._i18;
					} else {
						dfrd && dfrd.reject();
						fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
						return;
					}
				} else {
					if (typeof file._name === 'undefined') {
						file._name = file.name;
						file._i18 = file.i18;
					}
					file.name = rootNames[file.hash] = name;
					delete file.i18;
				}
				fm.storage('rootNames', rootNames);
				data = { changed: [file] };
				fm.updateCache(data);
				fm.change(data);
				dfrd && dfrd.resolve(data);
				fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
				return;
			}

			data = {
				cmd : 'rename',
				name : name,
				target : file.hash
			};

			if (cnt > 1) {
				data['targets'] = targtes;
				if (name.match(/\*/)) {
					data['q'] = name;
				}
			}
			
			fm.request({
					data   : data,
					notify : {type : 'rename', cnt : cnt},
					navigate : {}
				})
				.fail(function(error) {
					var err = fm.parseError(error);
					dfrd && dfrd.reject();
					if (! err || ! Array.isArray(err) || err[0] !== 'errRename') {
						fm.sync();
					}
				})
				.done(function(data) {
					var cwdHash;
					if (data.added && data.added.length && cnt === 1) {
						data.undo = {
							cmd : 'rename',
							callback : function() {
								return fm.request({
									data   : {cmd : 'rename', target : data.added[0].hash, name : file.name},
									notify : {type : 'undo', cnt : 1}
								});
							}
						};
						data.redo = {
							cmd : 'rename',
							callback : function() {
								return fm.request({
									data   : {cmd : 'rename', target : file.hash, name : name},
									notify : {type : 'rename', cnt : 1}
								});
							}
						};
					}
					dfrd && dfrd.resolve(data);
					if (!(cwdHash = fm.cwd().hash) || cwdHash === file.hash) {
						fm.exec('open', jQuery.map(data.added, function(f) {
							return (f.mime === 'directory')? f.hash : null;
						})[0]);
					}
				})
				.always(function() {
					fm.unlockfiles({files : sel}).trigger('selectfiles', {files : sel});
				}
			);
		},
		getHint = function(name, target) {
			var sel = target || fm.selected(),
				splits = fm.splitFileExtention(name),
				f1 = fm.file(sel[0]),
				f2 = fm.file(sel[1]),
				ext, hint, add;
			
			ext = splits[1]? ('.' + splits[1]) : '';
			if (splits[1] && splits[0] === '*') {
				// change extention
				hint =  '"' + fm.splitFileExtention(f1.name)[0] + ext + '", ';
				hint += '"' + fm.splitFileExtention(f2.name)[0] + ext + '"';
			} else if (splits[0].length > 1) {
				if (splits[0].substr(-1) === '*') {
					// add prefix
					add = splits[0].substr(0, splits[0].length - 1);
					hint =  '"' + add + f1.name+'", ';
					hint += '"' + add + f2.name+'"';
				} else if (splits[0].substr(0, 1) === '*') {
					// add suffix
					add = splits[0].substr(1);
					hint =  '"'+fm.splitFileExtention(f1.name)[0] + add + ext + '", ';
					hint += '"'+fm.splitFileExtention(f2.name)[0] + add + ext + '"';
				}
			}
			if (!hint) {
				hint = '"'+splits[0] + '1' + ext + '", "' + splits[0] + '2' + ext + '"';
			}
			if (sel.length > 2) {
				hint += ' ...';
			}
			return hint;
		},
		batchRename = function() {
			var sel = fm.selected(),
				tplr = '<input name="type" type="radio" class="elfinder-tabstop">',
				mkChk = function(node, label) {
					return jQuery('<label class="elfinder-rename-batch-checks">' + fm.i18n(label) + '</label>').prepend(node);
				},
				name = jQuery('<input type="text" class="ui-corner-all elfinder-tabstop">'),
				num  = jQuery(tplr),
				prefix  = jQuery(tplr),
				suffix  = jQuery(tplr),
				extention  = jQuery(tplr),
				checks = jQuery('<div></div>').append(
					mkChk(num, 'plusNumber'),
					mkChk(prefix, 'asPrefix'),
					mkChk(suffix, 'asSuffix'),
					mkChk(extention, 'changeExtention')
				),
				preview = jQuery('<div class="elfinder-rename-batch-preview"></div>'),
				node = jQuery('<div class="elfinder-rename-batch"></div>').append(
						jQuery('<div class="elfinder-rename-batch-name"></div>').append(name),
						jQuery('<div class="elfinder-rename-batch-type"></div>').append(checks),
						preview
					),
				opts = {
					title : fm.i18n('batchRename'),
					modal : true,
					destroyOnClose : true,
					width: Math.min(380, fm.getUI().width() - 20),
					buttons : {},
					open : function() {
						name.on('input', mkPrev).trigger('focus');
					}
				},
				getName = function() {
					var vName = name.val(),
						ext = fm.splitFileExtention(fm.file(sel[0]).name)[1];
					if (vName !== '' || num.is(':checked')) {
						if (prefix.is(':checked')) {
							vName += '*';
						} else if (suffix.is(':checked')) {
							vName = '*' + vName + '.' + ext;
						} else if (extention.is(':checked')) {
							vName = '*.' + vName;
						} else if (ext) {
							vName += '.' + ext;
						}
					}
					return vName;
				},
				mkPrev = function() {
					var vName = getName();
					if (vName !== '') {
						preview.html(fm.i18n(['renameMultiple', sel.length, getHint(vName)]));
					} else {
						preview.empty();
					}
				},
				radios = checks.find('input:radio').on('change', mkPrev),
				dialog;
			
			opts.buttons[fm.i18n('btnApply')] = function() {
				var vName = getName(),
					file, targets;
				if (vName !== '') {
					dialog.elfinderdialog('close');
					targets = sel;
					file = fm.file(targets.shift());
					request(void(0), targets, file, vName);
				}
			};
			opts.buttons[fm.i18n('btnCancel')] = function() {
				dialog.elfinderdialog('close');
			};
			if (jQuery.fn.checkboxradio) {
				radios.checkboxradio({
					create: function(e, ui) {
						if (this === num.get(0)) {
							num.prop('checked', true).change();
						}
					}
				});
			} else {
				checks.buttonset({
					create: function(e, ui) {
						num.prop('checked', true).change();
					}
				});
			}
			dialog = self.fmDialog(node, opts);
		};
	
	this.noChangeDirOnRemovedCwd = true;
	
	this.shortcuts = [{
		pattern : 'f2' + (fm.OS == 'mac' ? ' enter' : '')
	}, {
		pattern : 'shift+f2',
		description : 'batchRename',
		callback : function() {
			fm.selected().length > 1 && batchRename();
		}
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			phash, ext, mime, brk, state, isRoot;
		
		if (!cnt) {
			return -1;
		}
		
		if (cnt > 1 && sel[0].phash) {
			phash = sel[0].phash;
			ext = fm.splitFileExtention(sel[0].name)[1].toLowerCase();
			mime = sel[0].mime;
		}
		if (cnt === 1) {
			isRoot = fm.isRoot(sel[0]);
		}

		state = (cnt === 1 && ((fm.cookieEnabled && isRoot) || !sel[0].locked) || (fm.api > 2.1030 && cnt === jQuery.grep(sel, function(f) {
			if (!brk && !f.locked && f.phash === phash && !fm.isRoot(f) && (mime === f.mime || ext === fm.splitFileExtention(f.name)[1].toLowerCase())) {
				return true;
			} else {
				brk && (brk = true);
				return false;
			}
		}).length)) ? 0 : -1;
		
		// because alwaysEnabled = true, it need check disabled on connector 
		if (!isRoot && state === 0 && fm.option('disabledFlip', sel[0].hash)['rename']) {
			state = -1;
		}

		if (state !== -1 && cnt > 1) {
			self.extra = {
				icon: 'preference',
				node: jQuery('<span></span>')
					.attr({title: fm.i18n('batchRename')})
					.on('click touchstart', function(e){
						if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
							return;
						}
						e.stopPropagation();
						e.preventDefault();
						fm.getUI().trigger('click'); // to close the context menu immediately
						batchRename();
					})
			};
		} else {
			delete self.extra;
		}
			
		return state;
	};
	
	this.exec = function(hashes, cOpts) {
		var cwd      = fm.getUI('cwd'),
			sel      = hashes || (fm.selected().length? fm.selected() : false) || [fm.cwd().hash],
			cnt      = sel.length,
			file     = fm.file(sel.shift()),
			filename = '.elfinder-cwd-filename',
			opts     = cOpts || {},
			incwd    = (fm.cwd().hash == file.hash),
			type     = (opts._currentType === 'navbar' || opts._currentType === 'files')? opts._currentType : (incwd? 'navbar' : 'files'),
			navbar   = (type !== 'files'),
			target   = fm[navbar? 'navHash2Elm' : 'cwdHash2Elm'](file.hash),
			tarea    = (!navbar && fm.storage('view') != 'list'),
			split    = function(name) {
				var ext = fm.splitFileExtention(name)[1];
				return [name.substr(0, name.length - ext.length - 1), ext];
			},
			unselect = function() {
				requestAnimationFrame(function() {
					input && input.trigger('blur');
				});
			},
			rest     = function(){
				if (!overlay.is(':hidden')) {
					overlay.elfinderoverlay('hide').off('click close', cancel);
				}
				pnode.removeClass('ui-front')
					.css('position', '')
					.off('unselect.'+fm.namespace, unselect);
				if (tarea) {
					node && node.css('max-height', '');
				} else if (!navbar) {
					pnode.css('width', '')
						.parent('td').css('overflow', '');
				}
			}, colwidth,
			dfrd     = jQuery.Deferred()
				.fail(function(error) {
					var parent = input.parent(),
						name   = fm.escape(file.i18 || file.name);

					input.off();
					if (tarea) {
						name = name.replace(/([_.])/g, '&#8203;$1');
					}
					requestAnimationFrame(function() {
						if (navbar) {
							input.replaceWith(name);
						} else {
							if (parent.length) {
								input.remove();
								parent.html(name);
							} else {
								target.find(filename).html(name);
							}
						}
					});
					error && fm.error(error);
				})
				.always(function() {
					rest();
					fm.unbind('resize', resize);
					fm.enable();
				}),
			blur = function(e) {
				var name   = jQuery.trim(input.val()),
				splits = fm.splitFileExtention(name),
				valid  = true,
				req = function() {
					input.off();
					rest();
					if (navbar) {
						input.replaceWith(fm.escape(name));
					} else {
						node.html(fm.escape(name));
					}
					request(dfrd, sel, file, name);
				};

				if (!overlay.is(':hidden')) {
					pnode.css('z-index', '');
				}
				if (name === '') {
					if (!fm.isRoot(file)) {
						return cancel();
					}
					if (navbar) {
						input.replaceWith(fm.escape(file.name));
					} else {
						node.html(fm.escape(file.name));
					}
				}
				if (!inError && pnode.length) {
					
					input.off('blur');
					
					if (cnt === 1 && name === file.name) {
						return dfrd.reject();
					}
					if (fm.options.validName && fm.options.validName.test) {
						try {
							valid = fm.options.validName.test(name);
						} catch(e) {
							valid = false;
						}
					}
					if (name === '.' || name === '..' || !valid) {
						inError = true;
						fm.error(file.mime === 'directory'? 'errInvDirname' : 'errInvName', {modal: true, close: function(){setTimeout(select, 120);}});
						return false;
					}
					if (cnt === 1 && fm.fileByName(name, file.phash)) {
						inError = true;
						fm.error(['errExists', name], {modal: true, close: function(){setTimeout(select, 120);}});
						return false;
					}
					
					if (cnt === 1) {
						req();
					} else {
						fm.confirm({
							title : 'cmdrename',
							text  : ['renameMultiple', cnt, getHint(name, [file.hash].concat(sel))],
							accept : {
								label : 'btnYes',
								callback : req
							},
							cancel : {
								label : 'btnCancel',
								callback : function() {
									setTimeout(function() {
										inError = true;
										select();
									}, 120);
								}
							}
						});
						setTimeout(function() {
							fm.trigger('unselectfiles', {files: fm.selected()})
								.trigger('selectfiles', {files : [file.hash].concat(sel)});
						}, 120);
					}
				}
			},
			input = jQuery(tarea? '<textarea></textarea>' : '<input type="text"/>')
				.on('keyup text', function(){
					if (tarea) {
						this.style.height = '1px';
						this.style.height = this.scrollHeight + 'px';
					} else if (colwidth) {
						this.style.width = colwidth + 'px';
						if (this.scrollWidth > colwidth) {
							this.style.width = this.scrollWidth + 10 + 'px';
						}
					}
				})
				.on('keydown', function(e) {
					e.stopImmediatePropagation();
					if (e.keyCode == jQuery.ui.keyCode.ESCAPE) {
						dfrd.reject();
					} else if (e.keyCode == jQuery.ui.keyCode.ENTER) {
						e.preventDefault();
						input.trigger('blur');
					}
				})
				.on('mousedown click dblclick', function(e) {
					e.stopPropagation();
					if (e.type === 'dblclick') {
						e.preventDefault();
					}
				})
				.on('blur', blur)
				.on('dragenter dragleave dragover drop', function(e) {
					// stop bubbling to prevent upload with native drop event
					e.stopPropagation();
				}),
			select = function() {
				var name = fm.splitFileExtention(input.val())[0];
				if (!inError && fm.UA.Mobile && !fm.UA.iOS) { // since iOS has a bug? (z-index not effect) so disable it
					overlay.on('click close', cancel).elfinderoverlay('show');
					pnode.css('z-index', overlay.css('z-index') + 1);
				}
				! fm.enabled() && fm.enable();
				if (inError) {
					inError = false;
					input.on('blur', blur);
				}
				input.trigger('focus').trigger('select');
				input[0].setSelectionRange && input[0].setSelectionRange(0, name.length);
			},
			node = navbar? target.contents().filter(function(){ return this.nodeType==3 && jQuery(this).parent().attr('id') === fm.navHash2Id(file.hash); })
					: target.find(filename),
			pnode = node.parent(),
			overlay = fm.getUI('overlay'),
			cancel = function(e) { 
				if (!overlay.is(':hidden')) {
					pnode.css('z-index', '');
				}
				if (! inError) {
					dfrd.reject();
					if (e) {
						e.stopPropagation();
						e.preventDefault();
					}
				}
			},
			resize = function() {
				target.trigger('scrolltoview', {blink : false});
			},
			inError = false;
		
		pnode.addClass('ui-front')
			.css('position', 'relative')
			.on('unselect.'+fm.namespace, unselect);
		fm.bind('resize', resize);
		if (navbar) {
			node.replaceWith(input.val(file.name));
		} else {
			if (tarea) {
				node.css('max-height', 'none');
			} else if (!navbar) {
				colwidth = pnode.width();
				pnode.width(colwidth - 15)
					.parent('td').css('overflow', 'visible');
			}
			node.empty().append(input.val(file.name));
		}
		
		if (cnt > 1 && fm.api <= 2.1030) {
			return dfrd.reject();
		}
		
		if (!file || !node.length) {
			return dfrd.reject('errCmdParams', this.title);
		}
		
		if (file.locked && !fm.isRoot(file)) {
			return dfrd.reject(['errLocked', file.name]);
		}
		
		fm.one('select', function() {
			input.parent().length && file && jQuery.inArray(file.hash, fm.selected()) === -1 && input.trigger('blur');
		});
		
		input.trigger('keyup');
		
		select();
		
		return dfrd;
	};

	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(),
			file;
		if (sel && sel.length === 1 && (file = fm.file(sel[0])) && fm.isRoot(file)) {
			self.title = fm.i18n('kindAlias') + ' (' + fm.i18n('preference') + ')';
		} else {
			self.title = fm.i18n('cmdrename');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(void(0), self.title);
		} else {
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	}).remove(function(e) {
		var rootNames;
		if (e.data && e.data.removed && (rootNames = fm.storage('rootNames'))) {
			jQuery.each(e.data.removed, function(i, h) {
				if (rootNames[h]) {
					delete rootNames[h];
				}
			});
			fm.storage('rootNames', rootNames);
		}
	});
};
lib/js/commands/empty.js000064400000006503147361034410011232 0ustar00/**
 * @class elFinder command "empty".
 * Empty the folder
 *
 * @type  elFinder.command
 * @author  Naoki Sawada
 */
 elFinder.prototype.commands.empty = function() {
	"use strict";
	var self, fm,
		selFiles = function(select) {
			var sel = self.files(select);
			if (!sel.length) {
				sel = [ fm.cwd() ];
			}
			return sel;
		};
	
	this.linkedCmds = ['rm'];
	
	this.init = function() {
		// lazy assign to make possible to become superclass
		self = this;
		fm = this.fm;
	};

	this.getstate = function(select) {
		var sel = selFiles(select),
			cnt,
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(f) {
					fres = fres && f.read && f.write && f.mime === 'directory' ? true : false;
					return fres;
				});
			};
		
		cnt = sel.length;
		return filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var dirs = selFiles(hashes),
			cnt  = dirs.length,
			dfrd = jQuery.Deferred()
				.done(function() {
					var data = {changed: {}};
					fm.toast({msg: fm.i18n(['"'+success.join('", ')+'"', 'complete', fm.i18n('cmdempty')])});
					jQuery.each(dirs, function(i, dir) {
						data.changed[dir.hash] = dir;
					});
					fm.change(data);
				})
				.always(function() {
					var cwd = fm.cwd().hash;
					fm.trigger('selectfiles', {files: jQuery.map(dirs, function(d) { return cwd === d.phash? d.hash : null; })});
				}),
			success = [],
			done = function(res) {
				if (typeof res === 'number') {
					success.push(dirs[res].name);
					delete dirs[res].dirs;
				} else {
					res && fm.error(res);
				}
				(--cnt < 1) && dfrd[success.length? 'resolve' : 'reject']();
			};

		jQuery.each(dirs, function(i, dir) {
			var tm;
			if (!(dir.write && dir.mime === 'directory')) {
				done(['errEmpty', dir.name, 'errPerm']);
				return null;
			}
			if (!fm.isCommandEnabled('rm', dir.hash)) {
				done(['errCmdNoSupport', '"rm"']);
				return null;
			}
			tm = setTimeout(function() {
				fm.notify({type : 'search', cnt : 1, hideCnt : cnt > 1? false : true});
			}, fm.notifyDelay);
			fm.request({
				data : {cmd  : 'open', target : dir.hash},
				preventDefault : true,
				asNotOpen : true
			}).done(function(data) {
				var targets = [];
				tm && clearTimeout(tm);
				if (fm.ui.notify.children('.elfinder-notify-search').length) {
					fm.notify({type : 'search', cnt : -1, hideCnt : cnt > 1? false : true});
				}
				if (data && data.files && data.files.length) {
					if (data.files.length > fm.maxTargets) {
						done(['errEmpty', dir.name, 'errMaxTargets', fm.maxTargets]);
					} else {
						fm.updateCache(data);
						jQuery.each(data.files, function(i, f) {
							if (!f.write || f.locked) {
								done(['errEmpty', dir.name, 'errRm', f.name, 'errPerm']);
								targets = [];
								return false;
							}
							targets.push(f.hash);
						});
						if (targets.length) {
							fm.exec('rm', targets, { _userAction : true, addTexts : [ fm.i18n('folderToEmpty', dir.name) ] })
							.fail(function(error) {
								fm.trigger('unselectfiles', {files: fm.selected()});
								done(fm.parseError(error) || '');
							})
							.done(function() { done(i); });
						}
					}
				} else {
					fm.toast({ mode: 'warning', msg: fm.i18n('filderIsEmpty', dir.name)});
					done('');
				}
			}).fail(function(error) {
				done(fm.parseError(error) || '');
			});
		});
		
		return dfrd;
	};

};
lib/js/commands/copy.js000064400000001732147361034410011045 0ustar00/**
 * @class elFinder command "copy".
 * Put files in filemanager clipboard.
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
 elFinder.prototype.commands.copy = function() {
	"use strict";
	this.shortcuts = [{
		pattern     : 'ctrl+c ctrl+insert'
	}];
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(f) {
					fres = fres && f.read ? true : false;
					return fres;
				});
			};

		return cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm   = this.fm,
			dfrd = jQuery.Deferred()
				.fail(function(error) {
					fm.error(error);
				});

		jQuery.each(this.files(hashes), function(i, file) {
			if (! file.read) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
		});
		
		return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(fm.clipboard(this.hashes(hashes)));
	};

};
lib/js/commands/archive.js000064400000004742147361034410011520 0ustar00/**
 * @class  elFinder command "archive"
 * Archive selected files
 *
 * @author Dmitry (dio) Levashov
 **/
 elFinder.prototype.commands.archive = function() {
	"use strict";
	var self  = this,
		fm    = self.fm,
		mimes = [],
		dfrd;
		
	this.variants = [];
	
	this.disableOnSearch = false;
	
	this.nextAction = {};
	
	/**
	 * Update mimes on open/reload
	 *
	 * @return void
	 **/
	fm.bind('open reload', function() {
		self.variants = [];
		jQuery.each((mimes = fm.option('archivers')['create'] || []), function(i, mime) {
			self.variants.push([mime, fm.mime2kind(mime)]);
		});
		self.change();
	});
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			chk = (cnt && ! fm.isRoot(sel[0]) && (fm.file(sel[0].phash) || {}).write),
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(f) {
					fres = fres && f.read && f.hash.indexOf(cwdId) === 0 ? true : false;
					return fres;
				});
			},
			cwdId;
		
		if (chk && fm.searchStatus.state > 1) {
			if (chk = (cnt === filter(sel).length)) {
				cwdId = fm.cwd().volumeid;
			}
		}
		
		return chk && !this._disabled && mimes.length && (cnt || (dfrd && dfrd.state() == 'pending')) ? 0 : -1;
	};
	
	this.exec = function(hashes, type) {
		var files = this.files(hashes),
			cnt   = files.length,
			mime  = type || mimes[0],
			cwd   = fm.file(files[0].phash) || null,
			error = ['errArchive', 'errPerm', 'errCreatingTempDir', 'errFtpDownloadFile', 'errFtpUploadFile', 'errFtpMkdir', 'errArchiveExec', 'errExtractExec', 'errRm'],
			i, open;

		dfrd = jQuery.Deferred().fail(function(error) {
			error && fm.error(error);
		});

		if (! (cnt && mimes.length && jQuery.inArray(mime, mimes) !== -1)) {
			return dfrd.reject();
		}
		
		if (!cwd.write) {
			return dfrd.reject(error);
		}
		
		for (i = 0; i < cnt; i++) {
			if (!files[i].read) {
				return dfrd.reject(error);
			}
		}

		self.mime   = mime;
		self.prefix = ((cnt > 1)? 'Archive' : files[0].name) + (fm.option('archivers')['createext']? '.' + fm.option('archivers')['createext'][mime] : '');
		self.data   = {targets : self.hashes(hashes), type : mime};
		
		if (fm.cwd().hash !== cwd.hash) {
			open = fm.exec('open', cwd.hash).done(function() {
				fm.one('cwdrender', function() {
					fm.selectfiles({files : hashes});
					dfrd = jQuery.proxy(fm.res('mixin', 'make'), self)();
				});
			});
		} else {
			fm.selectfiles({files : hashes});
			dfrd = jQuery.proxy(fm.res('mixin', 'make'), self)();
		}
		
		return dfrd;
	};

};
lib/js/commands/view.js000064400000005464147361034410011053 0ustar00/**
 * @class  elFinder command "view"
 * Change current directory view (icons/list)
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.view = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		subMenuRaw;
	this.value          = fm.viewType;
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;

	this.options = { ui : 'viewbutton'};
	
	this.getstate = function() {
		return 0;
	};
	
	this.extra = {
		icon: 'menu',
		node: jQuery('<span></span>')
			.attr({title: fm.i18n('viewtype')})
			.on('click touchstart', function(e){
				if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
					return;
				}
				var node = jQuery(this);
				e.stopPropagation();
				e.preventDefault();
				fm.trigger('contextmenu', {
					raw: getSubMenuRaw(),
					x: node.offset().left,
					y: node.offset().top
				});
			})
	};

	this.exec = function() {
		var self  = this,
			value = this.value == 'list' ? 'icons' : 'list';
			
		fm.storage('view', value);
		return fm.lazy(function() {
			fm.viewchange();
			self.update(void(0), value);
			this.resolve();
		});
	};

	fm.bind('init', function() {
		subMenuRaw = (function() {
			var cwd = fm.getUI('cwd'),
				raws = [],
				sizeNames = fm.options.uiOptions.cwd.iconsView.sizeNames,
				max = fm.options.uiOptions.cwd.iconsView.sizeMax,
				i, size;
			for (i = 0; i <= max; i++) {
				raws.push(
					{
						label    : fm.i18n(sizeNames[i] || ('Size-' + i + ' icons')),
						icon     : 'view',
						callback : (function(s) {
							return function() {
								cwd.trigger('iconpref', {size: s});
								fm.storage('iconsize', s);
								if (self.value === 'list') {
									self.exec();
								}
							};
						})(i)
					}
				);
			}
			raws.push('|');
			raws.push(
				{
					label    : fm.i18n('viewlist'),
					icon     : 'view-list',
					callback : function() {
						if (self.value !== 'list') {
							self.exec();
						}
					}
				}		
			);
			return raws;
		})();
	}).bind('contextmenucreate', function() {
		self.extra = {
			icon: 'menu',
			node: jQuery('<span></span>')
				.attr({title: fm.i18n('cmdview')})
				.on('click touchstart', function(e){
					if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
						return;
					}
					var node = jQuery(this),
						raw = subMenuRaw.concat(),
						idx, i;
					if (self.value === 'list') {
						idx = subMenuRaw.length - 1;
					} else {
						idx = parseInt(fm.storage('iconsize') || 0);
					}
					for (i = 0; i < subMenuRaw.length; i++) {
						if (subMenuRaw[i] !== '|') {
							subMenuRaw[i].options = (i === idx? {'className': 'ui-state-active'} : void(0))
							;
						}
					}
					e.stopPropagation();
					e.preventDefault();
					fm.trigger('contextmenu', {
						raw: subMenuRaw,
						x: node.offset().left,
						y: node.offset().top
					});
				})
		};
	});

};
lib/js/commands/open.js000064400000015443147361034410011040 0ustar00/**
 * @class  elFinder command "open"
 * Enter folder or open files in new windows
 *
 * @author Dmitry (dio) Levashov
 **/  
 (elFinder.prototype.commands.open = function() {
	"use strict";
	var fm = this.fm,
		self = this;
	this.alwaysEnabled = true;
	this.noChangeDirOnRemovedCwd = true;
	
	this._handlers = {
		dblclick : function(e) {
			var arg = e.data && e.data.file? [ e.data.file ]: void(0);
			if (self.getstate(arg) === 0) {
				e.preventDefault();
				fm.exec('open', arg);
			}
		},
		'select enable disable reload' : function(e) { this.update(e.type == 'disable' ? -1 : void(0));  }
	};
	
	this.shortcuts = [{
		pattern     : 'ctrl+down numpad_enter'+(fm.OS != 'mac' && ' enter')
	}];

	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(file) {
					fres = fres && file.mime == 'directory' || ! file.read ? false : true;
					return fres;
				});
			};
		
		return cnt == 1 
			? (sel[0].read ? 0 : -1)
			: (cnt && !fm.UA.Mobile) ? (jQuery.grep(sel, function(file) { return file.mime == 'directory' || ! file.read ? false : true;}).length == cnt ? 0 : -1) : -1;
	};
	
	this.exec = function(hashes, cOpts) {
		var dfrd  = jQuery.Deferred().fail(function(error) { error && fm.error(error); }),
			files = this.files(hashes),
			cnt   = files.length,
			thash = (typeof cOpts == 'object')? cOpts.thash : false,
			opts  = this.options,
			into  = opts.into || 'window',
			file, url, s, w, imgW, imgH, winW, winH, reg, link, html5dl, inline,
			selAct, cmd;

		if (!cnt && !thash) {
			{
				return dfrd.reject();
			}
		}

		// open folder
		if (thash || (cnt == 1 && (file = files[0]) && file.mime == 'directory')) {
			if (!thash && file && !file.read) {
				return dfrd.reject(['errOpen', file.name, 'errPerm']);
			} else {
				if (fm.keyState.ctrlKey && (fm.keyState.shiftKey || typeof fm.options.getFileCallback !== 'function')) {
					if (fm.getCommand('opennew')) {
						return fm.exec('opennew', [thash? thash : file.hash]);
					}
				}

				return fm.request({
					data   : {cmd  : 'open', target : thash || file.hash},
					notify : {type : 'open', cnt : 1, hideCnt : true},
					syncOnFail : true,
					lazy : false
				});
			}
		}
		
		files = jQuery.grep(files, function(file) { return file.mime != 'directory' ? true : false; });
		
		// nothing to open or files and folders selected - do nothing
		if (cnt != files.length) {
			return dfrd.reject();
		}
		
		var doOpen = function() {
			var openCB = function(url) {
					var link = jQuery('<a rel="noopener">').hide().appendTo(jQuery('body'));
					if (fm.UA.Mobile || !inline) {
						if (html5dl) {
							if (!inline) {
								link.attr('download', file.name);
							} else {
								link.attr('target', '_blank');
							}
							link.attr('href', url).get(0).click();
						} else {
							wnd = window.open(url);
							if (!wnd) {
								return dfrd.reject('errPopup');
							}
						}
					} else {
						getOnly = (typeof opts.method === 'string' && opts.method.toLowerCase() === 'get');
						if (!getOnly
							&& url.indexOf(fm.options.url) === 0
							&& fm.customData
							&& Object.keys(fm.customData).length
							// Since playback by POST request can not be done in Chrome, media allows GET request
							&& !file.mime.match(/^(?:video|audio)/)
						) {
							// Send request as 'POST' method to hide custom data at location bar
							url = '';
						}
						if (into === 'window') {
							// set window size for image if set
							imgW = winW = Math.round(2 * screen.availWidth / 3);
							imgH = winH = Math.round(2 * screen.availHeight / 3);
							if (parseInt(file.width) && parseInt(file.height)) {
								imgW = parseInt(file.width);
								imgH = parseInt(file.height);
							} else if (file.dim) {
								s = file.dim.split('x');
								imgW = parseInt(s[0]);
								imgH = parseInt(s[1]);
							}
							if (winW >= imgW && winH >= imgH) {
								winW = imgW;
								winH = imgH;
							} else {
								if ((imgW - winW) > (imgH - winH)) {
									winH = Math.round(imgH * (winW / imgW));
								} else {
									winW = Math.round(imgW * (winH / imgH));
								}
							}
							w = 'width='+winW+',height='+winH;
							wnd = window.open(url, target, w + ',top=50,left=50,scrollbars=yes,resizable=yes,titlebar=no');
						} else {
							if (into === 'tabs') {
								target = file.hash;
							}
							wnd = window.open('about:blank', target);
						}
						
						if (!wnd) {
							return dfrd.reject('errPopup');
						}
						
						if (url === '') {
							var form = document.createElement("form");
							form.action = fm.options.url;
							form.method = 'POST';
							form.target = target;
							form.style.display = 'none';
							var params = Object.assign({}, fm.customData, {
								cmd: 'file',
								target: file.hash,
								_t: file.ts || parseInt(+new Date()/1000)
							});
							jQuery.each(params, function(key, val)
							{
								var input = document.createElement("input");
								input.name = key;
								input.value = val;
								form.appendChild(input);
							});
							
							document.body.appendChild(form);
							form.submit();
						} else if (into !== 'window') {
							wnd.location = url;
						}
						jQuery(wnd).trigger('focus');
					}
					link.remove();
				},
				wnd, target, getOnly;
			
			try {
				reg = new RegExp(fm.option('dispInlineRegex'), 'i');
			} catch(e) {
				reg = false;
			}
	
			// open files
			html5dl  = (typeof jQuery('<a>').get(0).download === 'string');
			cnt = files.length;
			while (cnt--) {
				target = 'elf_open_window';
				file = files[cnt];
				
				if (!file.read) {
					return dfrd.reject(['errOpen', file.name, 'errPerm']);
				}
				
				inline = (reg && file.mime.match(reg));
				fm.openUrl(file.hash, !inline, openCB);
			}
			return dfrd.resolve(hashes);
		};
		
		if (cnt > 1) {
			fm.confirm({
				title: 'openMulti',
				text : ['openMultiConfirm', cnt + ''],
				accept : {
					label : 'cmdopen',
					callback : function() { doOpen(); }
				},
				cancel : {
					label : 'btnCancel',
					callback : function() { 
						dfrd.reject();
					}
				},
				buttons : (fm.getCommand('zipdl') && fm.isCommandEnabled('zipdl', fm.cwd().hash))? [
					{
						label : 'cmddownload',
						callback : function() {
							fm.exec('download', hashes);
							dfrd.reject();
						}
					}
				] : []
			});
		} else {
			selAct = fm.storage('selectAction') || opts.selectAction;
			if (selAct) {
				jQuery.each(selAct.split('/'), function() {
					var cmdName = this.valueOf();
					if (cmdName !== 'open' && (cmd = fm.getCommand(cmdName)) && cmd.enabled()) {
						return false;
					}
					cmd = null;
				});
				if (cmd) {
					return fm.exec(cmd.name);
				}
			}
			doOpen();
		}
		
		return dfrd;
	};

}).prototype = { forceLoad : true }; // this is required commandlib/js/commands/forward.js000064400000000775147361034410011545 0ustar00/**
 * @class  elFinder command "forward"
 * Open next visited folder
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.forward = function() {
	"use strict";
	this.alwaysEnabled = true;
	this.updateOnSelect = true;
	this.shortcuts = [{
		pattern     : 'ctrl+right'
	}];
	
	this.getstate = function() {
		return this.fm.history.canForward() ? 0 : -1;
	};
	
	this.exec = function() {
		return this.fm.history.forward();
	};
	
}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/quicklook.js000064400000057575147361034410012114 0ustar00/**
 * @class  elFinder command "quicklook"
 * Fast preview for some files types
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.quicklook = function() {
	"use strict";
	var self       = this,
		fm         = self.fm,
		/**
		 * window closed state
		 *
		 * @type Number
		 **/
		closed     = 0,
		/**
		 * window animated state
		 *
		 * @type Number
		 **/
		animated   = 1,
		/**
		 * window opened state
		 *
		 * @type Number
		 **/
		opened     = 2,
		/**
		 * window docked state
		 *
		 * @type Number
		 **/
		docked     = 3,
		/**
		 * window docked and hidden state
		 *
		 * @type Number
		 **/
		dockedhidden = 4,
		/**
		 * window state
		 *
		 * @type Number
		 **/
		state      = closed,
		/**
		 * Event name of update
		 * for fix conflicts with Prototype.JS
		 * 
		 * `@see https://github.com/Studio-42/elFinder/pull/2346
		 * @type String
		 **/
		evUpdate = Element.update? 'quicklookupdate' : 'update',
		/**
		 * navbar icon class
		 *
		 * @type String
		 **/
		navicon    = 'elfinder-quicklook-navbar-icon',
		/**
		 * navbar "fullscreen" icon class
		 *
		 * @type String
		 **/
		fullscreen = 'elfinder-quicklook-fullscreen',
		/**
		 * info wrapper class
		 * 
		 * @type String
		 */
		infocls    = 'elfinder-quicklook-info-wrapper',
		/**
		 * Triger keydown/keypress event with left/right arrow key code
		 *
		 * @param  Number  left/right arrow key code
		 * @return void
		 **/
		navtrigger = function(code) {
			jQuery(document).trigger(jQuery.Event('keydown', { keyCode: code, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false }));
		},
		/**
		 * Return css for closed window
		 *
		 * @param  jQuery  file node in cwd
		 * @return void
		 **/
		closedCss = function(node) {
			var elf = fm.getUI().offset(),
				base = (function() {
					var target = node.find('.elfinder-cwd-file-wrapper');
					return target.length? target : node;
				})(),
				baseOffset = base.offset() || { top: 0, left: 0 };
			return {
				opacity : 0,
				width   : base.width(),
				height  : base.height() - 30,
				top     : baseOffset.top - elf.top,
				left    : baseOffset.left  - elf.left
			};
		},
		/**
		 * Return css for opened window
		 *
		 * @return void
		 **/
		openedCss = function() {
			var contain = self.options.contain || fm.options.dialogContained,
				win = contain? fm.getUI() : jQuery(window),
				elf = fm.getUI().offset(),
				w = Math.min(width, win.width()-10),
				h = Math.min(height, win.height()-80);
			return {
				opacity : 1,
				width  : w,
				height : h,
				top    : parseInt((win.height() - h - 60) / 2 + (contain? 0 : win.scrollTop() - elf.top)),
				left   : parseInt((win.width() - w) / 2 + (contain? 0 : win.scrollLeft() - elf.left))
			};
		},
		
		mediaNode = {},
		support = function(codec, name) {
			var node  = name || codec.substr(0, codec.indexOf('/')),
				media = mediaNode[node]? mediaNode[node] : (mediaNode[node] = document.createElement(node)),
				value = false;
			
			try {
				value = media.canPlayType && media.canPlayType(codec);
			} catch(e) {}
			
			return (value && value !== '' && value != 'no')? true : false;
		},
		
		platformWin = (window.navigator.platform.indexOf('Win') != -1),
		
		/**
		 * Opened window width (from config)
		 *
		 * @type Number
		 **/
		width, 
		/**
		 * Opened window height (from config)
		 *
		 * @type Number
		 **/
		height, 
		/**
		 * Previous style before docked
		 *
		 * @type String
		 **/
		prevStyle,
		/**
		 * elFinder node
		 *
		 * @type jQuery
		 **/
		parent, 
		/**
		 * elFinder current directory node
		 *
		 * @type jQuery
		 **/
		cwd, 
		/**
		 * Current directory hash
		 *
		 * @type String
		 **/
		cwdHash,
		dockEnabled = false,
		navdrag = false,
		navmove = false,
		navtm   = null,
		leftKey = jQuery.ui.keyCode.LEFT,
		rightKey = jQuery.ui.keyCode.RIGHT,
		coverEv = 'mousemove touchstart ' + ('onwheel' in document? 'wheel' : 'onmousewheel' in document? 'mousewheel' : 'DOMMouseScroll'),
		title   = jQuery('<span class="elfinder-dialog-title elfinder-quicklook-title"></span>'),
		icon    = jQuery('<div></div>'),
		info    = jQuery('<div class="elfinder-quicklook-info"></div>'),//.hide(),
		cover   = jQuery('<div class="ui-front elfinder-quicklook-cover"></div>'),
		fsicon  = jQuery('<div class="'+navicon+' '+navicon+'-fullscreen"></div>')
			.on('click touchstart', function(e) {
				if (navmove) {
					return;
				}
				
				var win     = self.window,
					full    = win.hasClass(fullscreen),
					$window = jQuery(window),
					resize  = function() { self.preview.trigger('changesize'); };
					
				e.stopPropagation();
				e.preventDefault();
				
				if (full) {
					navStyle = '';
					navShow();
					win.toggleClass(fullscreen)
					.css(win.data('position'));
					$window.trigger(self.resize).off(self.resize, resize);
					navbar.off('mouseenter mouseleave');
					cover.off(coverEv);
				} else {
					win.toggleClass(fullscreen)
					.data('position', {
						left   : win.css('left'), 
						top    : win.css('top'), 
						width  : win.width(), 
						height : win.height(),
						display: 'block'
					})
					.removeAttr('style');

					jQuery(window).on(self.resize, resize)
					.trigger(self.resize);

					cover.on(coverEv, function(e) {
						if (! navdrag) {
							if (e.type === 'mousemove' || e.type === 'touchstart') {
								navShow();
								navtm = setTimeout(function() {
									if (fm.UA.Mobile || navbar.parent().find('.elfinder-quicklook-navbar:hover').length < 1) {
										navbar.fadeOut('slow', function() {
											cover.show();
										});
									}
								}, 3000);
							}
							if (cover.is(':visible')) {
								coverHide();
								cover.data('tm', setTimeout(function() {
									cover.show();
								}, 3000));
							}
						}
					}).show().trigger('mousemove');
					
					navbar.on('mouseenter mouseleave', function(e) {
						if (! navdrag) {
							if (e.type === 'mouseenter') {
								navShow();
							} else {
								cover.trigger('mousemove');
							}
						}
					});
				}
				if (fm.zIndex) {
					win.css('z-index', fm.zIndex + 1);
				}
				if (fm.UA.Mobile) {
					navbar.attr('style', navStyle);
				} else {
					navbar.attr('style', navStyle).draggable(full ? 'destroy' : {
						start: function() {
							navdrag = true;
							navmove = true;
							cover.show();
							navShow();
						},
						stop: function() {
							navdrag = false;
							navStyle = self.navbar.attr('style');
							requestAnimationFrame(function() {
								navmove = false;
							});
						}
					});
				}
				jQuery(this).toggleClass(navicon+'-fullscreen-off');
				var collection = win;
				if (parent.is('.ui-resizable')) {
					collection = collection.add(parent);
				}
				collection.resizable(full ? 'enable' : 'disable').removeClass('ui-state-disabled');

				win.trigger('viewchange');
			}
		),
		
		updateOnSel = function() {
			self.update(void(0), (function() {
				var fm = self.fm,
					files = fm.selectedFiles(),
					cnt = files.length,
					inDock = self.docked(),
					getInfo = function() {
						var ts = 0;
						jQuery.each(files, function(i, f) {
							var t = parseInt(f.ts);
							if (ts >= 0) {
								if (t > ts) {
									ts = t;
								}
							} else {
								ts = 'unknown';
							}
						});
						return {
							hash : files[0].hash  + '/' + (+new Date()),
							name : fm.i18n('items') + ': ' + cnt,
							mime : 'group',
							size : spinner,
							ts   : ts,
							files : jQuery.map(files, function(f) { return f.hash; }),
							getSize : true
						};
					};
				if (! cnt) {
					cnt = 1;
					files = [fm.cwd()];
				}
				return (cnt === 1)? files[0] : getInfo();
			})());
		},
		
		navShow = function() {
			if (self.window.hasClass(fullscreen)) {
				navtm && clearTimeout(navtm);
				navtm = null;
				// if use `show()` it make infinite loop with old jQuery (jQuery/jQuery UI: 1.8.0/1.9.0)
				// see #1478 https://github.com/Studio-42/elFinder/issues/1478
				navbar.stop(true, true).css('display', 'block');
				coverHide();
			}
		},
		
		coverHide = function() {
			cover.data('tm') && clearTimeout(cover.data('tm'));
			cover.removeData('tm');
			cover.hide();
		},
			
		prev = jQuery('<div class="'+navicon+' '+navicon+'-prev"></div>').on('click touchstart', function(e) { ! navmove && navtrigger(leftKey); return false; }),
		next = jQuery('<div class="'+navicon+' '+navicon+'-next"></div>').on('click touchstart', function(e) { ! navmove && navtrigger(rightKey); return false; }),
		navbar  = jQuery('<div class="elfinder-quicklook-navbar"></div>')
			.append(prev)
			.append(fsicon)
			.append(next)
			.append('<div class="elfinder-quicklook-navbar-separator"></div>')
			.append(jQuery('<div class="'+navicon+' '+navicon+'-close"></div>').on('click touchstart', function(e) { ! navmove && self.window.trigger('close'); return false; }))
		,
		titleClose = jQuery('<span class="ui-front ui-icon elfinder-icon-close ui-icon-closethick"></span>').on('mousedown', function(e) {
			e.stopPropagation();
			self.window.trigger('close');
		}),
		titleDock = jQuery('<span class="ui-front ui-icon elfinder-icon-minimize ui-icon-minusthick"></span>').on('mousedown', function(e) {
			e.stopPropagation();
			if (! self.docked()) {
				self.window.trigger('navdockin');
			} else {
				self.window.trigger('navdockout');
			}
		}),
		spinner = '<span class="elfinder-spinner-text">' + fm.i18n('calc') + '</span>' + '<span class="elfinder-spinner"></span>',
		navStyle = '',
		init = true,
		dockHeight,	getSize, tm4cwd, dockedNode, selectTm;

	/**
	 * Any flags for each plugin
	 */
	this.flags = {};
	
	this.cover = cover;
	this.evUpdate = evUpdate;
	(this.navbar = navbar)._show = navShow;
	this.resize = 'resize.'+fm.namespace;
	this.info = jQuery('<div></div>').addClass(infocls)
		.append(icon)
		.append(info);
	this.autoPlay = function() {
		if (self.opened()) {
			return !! self.options[self.docked()? 'dockAutoplay' : 'autoplay'];
		}
		return false;
	};
	this.preview = jQuery('<div class="elfinder-quicklook-preview ui-helper-clearfix"></div>')
		// clean info/icon
		.on('change', function() {
			navShow();
			navbar.attr('style', navStyle);
			self.docked() && navbar.hide();
			self.preview.attr('style', '').removeClass('elfinder-overflow-auto');
			self.info.attr('style', '').hide();
			self.cover.removeClass('elfinder-quicklook-coverbg');
			icon.removeAttr('class').attr('style', '');
			info.html('');
		})
		// update info/icon
		.on(evUpdate, function(e) {
			var preview = self.preview,
				file    = e.file,
				tpl     = '<div class="elfinder-quicklook-info-data">{value}</div>',
				update  = function() {
					var win = self.window.css('overflow', 'hidden');
					name = fm.escape(file.i18 || file.name);
					!file.read && e.stopImmediatePropagation();
					self.window.data('hash', file.hash);
					self.preview.off('changesize').trigger('change').children().remove();
					title.html(name);
					
					prev.css('visibility', '');
					next.css('visibility', '');
					if (file.hash === fm.cwdId2Hash(cwd.find('[id]:not(.elfinder-cwd-parent):first').attr('id'))) {
						prev.css('visibility', 'hidden');
					}
					if (file.hash === fm.cwdId2Hash(cwd.find('[id]:last').attr('id'))) {
						next.css('visibility', 'hidden');
					}
					
					if (file.mime === 'directory') {
						getSizeHashes = [ file.hash ];
					} else if (file.mime === 'group' && file.getSize) {
						getSizeHashes = file.files;
					}
					
					info.html(
						tpl.replace(/\{value\}/, name)
						+ tpl.replace(/\{value\}/, fm.mime2kind(file))
						+ tpl.replace(/\{value\}/, getSizeHashes.length ? spinner : fm.formatSize(file.size))
						+ tpl.replace(/\{value\}/, fm.i18n('modify')+': '+ fm.formatDate(file))
					);
					
					if (getSizeHashes.length) {
						getSize = fm.getSize(getSizeHashes).done(function(data) {
							info.find('span.elfinder-spinner').parent().html(data.formated);
						}).fail(function() {
							info.find('span.elfinder-spinner').parent().html(fm.i18n('unknown'));
						}).always(function() {
							getSize = null;
						});
						getSize._hash = file.hash;
					}
					
					icon.addClass('elfinder-cwd-icon ui-corner-all '+fm.mime2class(file.mime));
					
					if (file.icon) {
						icon.css(fm.getIconStyle(file, true));
					}
					
					self.info.attr('class', infocls);
					if (file.csscls) {
						self.info.addClass(file.csscls);
					}
	
					if (file.read && (tmb = fm.tmb(file))) {
						jQuery('<img/>')
							.hide()
							.appendTo(self.preview)
							.on('load', function() {
								icon.addClass(tmb.className).css('background-image', "url('"+tmb.url+"')");
								jQuery(this).remove();
							})
							.attr('src', tmb.url);
					}
					self.info.delay(100).fadeIn(10);
					if (self.window.hasClass(fullscreen)) {
						cover.trigger('mousemove');
					}
					win.css('overflow', '');
				},
				tmb, name, getSizeHashes = [];

			if (file && ! Object.keys(file).length) {
				file = fm.cwd();
			}
			if (file && getSize && getSize.state() === 'pending' && getSize._hash !== file.hash) {
				getSize.reject();
			}
			if (file && (e.forceUpdate || self.window.data('hash') !== file.hash)) {
				update();
			} else { 
				e.stopImmediatePropagation();
			}
		});

	this.window = jQuery('<div class="ui-front ui-helper-reset ui-widget elfinder-quicklook touch-punch" style="position:absolute"></div>')
		.hide()
		.addClass(fm.UA.Touch? 'elfinder-touch' : '')
		.on('click', function(e) {
			var win = this;
			e.stopPropagation();
			if (state === opened) {
				requestAnimationFrame(function() {
					state === opened && fm.toFront(win);
				});
			}
		})
		.append(
			jQuery('<div class="ui-dialog-titlebar ui-widget-header ui-corner-top ui-helper-clearfix elfinder-quicklook-titlebar"></div>')
			.append(
				jQuery('<span class="ui-widget-header ui-dialog-titlebar-close ui-corner-all elfinder-titlebar-button elfinder-quicklook-titlebar-icon'+(platformWin? ' elfinder-titlebar-button-right' : '')+'"></span>').append(
					titleClose, titleDock
				),
				title
			),
			this.preview,
			self.info.hide(),
			cover.hide(),
			navbar
		)
		.draggable({handle : 'div.elfinder-quicklook-titlebar'})
		.on('open', function(e, clcss) {
			var win  = self.window, 
				file = self.value,
				node = fm.getUI('cwd'),
				open = function(status) {
					state = status;
					self.update(1, self.value);
					self.change();
					win.trigger('resize.' + fm.namespace);
				};

			if (!init && state === closed) {
				if (file && file.hash !== cwdHash) {
					node = fm.cwdHash2Elm(file.hash.split('/', 2)[0]);
				}
				navStyle = '';
				navbar.attr('style', '');
				state = animated;
				node.trigger('scrolltoview');
				coverHide();
				win.css(clcss || closedCss(node))
					.show()
					.animate(openedCss(), 550, function() {
						open(opened);
						navShow();
					});
				fm.toFront(win);
			} else if (state === dockedhidden) {
				fm.getUI('navdock').data('addNode')(dockedNode);
				open(docked);
				self.preview.trigger('changesize');
				fm.storage('previewDocked', '1');
				if (fm.getUI('navdock').width() === 0) {
					win.trigger('navdockout');
				}
			}
		})
		.on('close', function(e, dfd) {
			var win     = self.window,
				preview = self.preview.trigger('change'),
				file    = self.value,
				hash    = (win.data('hash') || '').split('/', 2)[0],
				close   = function(status, winhide) {
					state = status;
					winhide && fm.toHide(win);
					preview.children().remove();
					self.update(0, self.value);
					win.data('hash', '');
					dfd && dfd.resolve();
				},
				node;
				
			if (self.opened()) {
				getSize && getSize.state() === 'pending' && getSize.reject();
				if (! self.docked()) {
					state = animated;
					win.hasClass(fullscreen) && fsicon.click();
					(hash && (node = cwd.find('#'+hash)).length)
						? win.animate(closedCss(node), 500, function() {
							preview.off('changesize');
							close(closed, true);
						})
						: close(closed, true);
				} else {
					dockedNode = fm.getUI('navdock').data('removeNode')(self.window.attr('id'), 'detach');
					close(dockedhidden);
					fm.storage('previewDocked', '2');
				}
			}
		})
		.on('navdockin', function(e, data) {
			var w      = self.window,
				box    = fm.getUI('navdock'),
				height = dockHeight || box.width(),
				opts   = data || {};
			
			if (init) {
				opts.init = true;
			}
			state = docked;
			prevStyle = w.attr('style');
			w.toggleClass('ui-front').removeClass('ui-widget').draggable('disable').resizable('disable').removeAttr('style').css({
				width: '100%',
				height: height,
				boxSizing: 'border-box',
				paddingBottom: 0,
				zIndex: 'unset'
			});
			navbar.hide();
			titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize');
			
			fm.toHide(w, true);
			box.data('addNode')(w, opts);
			
			self.preview.trigger('changesize');
			
			fm.storage('previewDocked', '1');
		})
		.on('navdockout', function(e) {
			var w   = self.window,
				box = fm.getUI('navdock'),
				dfd = jQuery.Deferred(),
				clcss = closedCss(self.preview);
			
			dockHeight = w.outerHeight();
			box.data('removeNode')(w.attr('id'), fm.getUI());
			w.toggleClass('ui-front').addClass('ui-widget').draggable('enable').resizable('enable').attr('style', prevStyle);
			titleDock.toggleClass('ui-icon-plusthick ui-icon-minusthick elfinder-icon-full elfinder-icon-minimize');
			
			state = closed;
			w.trigger('open', clcss);
			
			fm.storage('previewDocked', '0');
		})
		.on('resize.' + fm.namespace, function() {
			self.preview.trigger('changesize'); 
		});

	/**
	 * This command cannot be disable by backend
	 *
	 * @type Boolean
	 **/
	this.alwaysEnabled = true;
	
	/**
	 * Selected file
	 *
	 * @type Object
	 **/
	this.value = null;
	
	this.handlers = {
		// save selected file
		select : function(e, d) {
			selectTm && cancelAnimationFrame(selectTm);
			if (! e.data || ! e.data.selected || ! e.data.selected.length) {
				selectTm = requestAnimationFrame(function() {
					self.opened() && updateOnSel();
				});
			} else {
				self.opened() && updateOnSel();
			}
		},
		error  : function() { self.window.is(':visible') && self.window.trigger('close'); },
		'searchshow searchhide' : function() { this.opened() && this.window.trigger('close'); },
		navbarshow : function() {
			requestAnimationFrame(function() {
				self.docked() && self.preview.trigger('changesize');
			});
		},
		destroy : function() { self.window.remove(); }
	};
	
	this.shortcuts = [{
		pattern     : 'space'
	}];
	
	this.support = {
		audio : {
			ogg : support('audio/ogg;'),
			webm: support('audio/webm;'),
			mp3 : support('audio/mpeg;'),
			wav : support('audio/wav;'),
			m4a : support('audio/mp4;') || support('audio/x-m4a;') || support('audio/aac;'),
			flac: support('audio/flac;'),
			amr : support('audio/amr;')
		},
		video : {
			ogg  : support('video/ogg;'),
			webm : support('video/webm;'),
			mp4  : support('video/mp4;'),
			mkv  : support('video/x-matroska;') || support('video/webm;'),
			'3gp': support('video/3gpp;') || support('video/mp4;'), // try as mp4
			m3u8 : support('application/x-mpegURL', 'video') || support('application/vnd.apple.mpegURL', 'video'),
			mpd  : support('application/dash+xml', 'video')
		}
	};
	// for GC
	mediaNode = {};
	
	/**
	 * Return true if quickLoock window is hiddenReturn true if quickLoock window is visible and not animated
	 *
	 * @return Boolean
	 **/
	this.closed = function() {
		return (state == closed || state == dockedhidden);
	};
	
	/**
	 * Return true if quickLoock window is visible and not animated
	 *
	 * @return Boolean
	 **/
	this.opened = function() {
		return state == opened || state == docked;
	};
	
	/**
	 * Return true if quickLoock window is in NavDock
	 *
	 * @return Boolean
	 **/
	this.docked = function() {
		return state == docked;
	};
	
	/**
	 * Adds an integration into help dialog.
	 *
	 * @param Object opts  options
	 */
	this.addIntegration = function(opts) {
		requestAnimationFrame(function() {
			fm.trigger('helpIntegration', Object.assign({cmd: 'quicklook'}, opts));
		});
	};

	/**
	 * Init command.
	 * Add default plugins and init other plugins
	 *
	 * @return Object
	 **/
	this.init = function() {
		var o       = this.options, 
			win     = this.window,
			preview = this.preview,
			i, p, cwdDispInlineRegex;
		
		width  = o.width  > 0 ? parseInt(o.width)  : 450;	
		height = o.height > 0 ? parseInt(o.height) : 300;
		if (o.dockHeight !== 'auto') {
			dockHeight = parseInt(o.dockHeight);
			if (! dockHeight) {
				dockHeight = void(0);
			}
		}

		fm.one('load', function() {
			
			dockEnabled = fm.getUI('navdock').data('dockEnabled');
			
			! dockEnabled && titleDock.hide();
			
			parent = fm.getUI();
			cwd    = fm.getUI('cwd');

			if (fm.zIndex) {
				win.css('z-index', fm.zIndex + 1);
			}
			
			win.appendTo(parent);
			
			// close window on escape
			jQuery(document).on('keydown.'+fm.namespace, function(e) {
				e.keyCode == jQuery.ui.keyCode.ESCAPE && self.opened() && ! self.docked() && win.hasClass('elfinder-frontmost') && win.trigger('close');
			});
			
			win.resizable({ 
				handles   : 'se', 
				minWidth  : 350, 
				minHeight : 120, 
				resize    : function() { 
					// use another event to avoid recursion in fullscreen mode
					// may be there is clever solution, but i cant find it :(
					preview.trigger('changesize'); 
				}
			});
			
			self.change(function() {
				if (self.opened()) {
					if (self.value) {
						if (self.value.tmb && self.value.tmb == 1) {
							// try re-get file object
							self.value = Object.assign({}, fm.file(self.value.hash));
						}
						preview.trigger(jQuery.Event(evUpdate, {file : self.value}));
					}
				}
			});
			
			preview.on(evUpdate, function(e) {
				var file, hash, serach;
				
				if (file = e.file) {
					hash = file.hash;
					serach = (fm.searchStatus.mixed && fm.searchStatus.state > 1);
				
					if (file.mime !== 'directory') {
						if (parseInt(file.size) || file.mime.match(o.mimeRegexNotEmptyCheck)) {
							// set current dispInlineRegex
							self.dispInlineRegex = cwdDispInlineRegex;
							if (serach || fm.optionsByHashes[hash]) {
								try {
									self.dispInlineRegex = new RegExp(fm.option('dispInlineRegex', hash), 'i');
								} catch(e) {
									try {
										self.dispInlineRegex = new RegExp(!fm.isRoot(file)? fm.option('dispInlineRegex', file.phash) : fm.options.dispInlineRegex, 'i');
									} catch(e) {
										self.dispInlineRegex = /^$/;
									}
								}
							}
						} else {
							//  do not preview of file that size = 0
							e.stopImmediatePropagation();
						}
					} else {
						self.dispInlineRegex = /^$/;
					}
					
					self.info.show();
				} else {
					e.stopImmediatePropagation();
				}
			});

			jQuery.each(fm.commands.quicklook.plugins || [], function(i, plugin) {
				if (typeof(plugin) == 'function') {
					new plugin(self);
				}
			});
		}).one('open', function() {
			var dock = Number(fm.storage('previewDocked') || o.docked),
				win;
			if (dockEnabled && dock >= 1) {
				win = self.window;
				self.exec();
				win.trigger('navdockin', { init : true });
				if (dock === 2) {
					win.trigger('close');
				} else {
					self.update(void(0), fm.cwd());
					self.change();
				}
			}
			init = false;
		}).bind('open', function() {
			cwdHash = fm.cwd().hash;
			self.value = fm.cwd();
			// set current volume dispInlineRegex
			try {
				cwdDispInlineRegex = new RegExp(fm.option('dispInlineRegex'), 'i');
			} catch(e) {
				cwdDispInlineRegex = /^$/;
			}
		}).bind('change', function(e) {
			if (e.data && e.data.changed && self.opened()) {
				jQuery.each(e.data.changed, function() {
					if (self.window.data('hash') === this.hash) {
						self.window.data('hash', null);
						self.preview.trigger(evUpdate);
						return false;
					}
				});
			}
		}).bind('navdockresizestart navdockresizestop', function(e) {
			cover[e.type === 'navdockresizestart'? 'show' : 'hide']();
		});
	};
	
	this.getstate = function() {
		return self.opened()? 1 : 0;
	};
	
	this.exec = function() {
		self.closed() && updateOnSel();
		self.enabled() && self.window.trigger(self.opened() ? 'close' : 'open');
		return jQuery.Deferred().resolve();
	};

	this.hideinfo = function() {
		this.info.stop(true, true).hide();
	};

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/mkdir.js000064400000005016147361034410011200 0ustar00/**
 * @class  elFinder command "mkdir"
 * Create new folder
 *
 * @author Dmitry (dio) Levashov
 **/
 elFinder.prototype.commands.mkdir = function() {
	"use strict";
	var fm   = this.fm,
		self = this,
		curOrg;
	
	this.value           = '';
	this.disableOnSearch = true;
	this.updateOnSelect  = false;
	this.syncTitleOnChange = true;
	this.mime            = 'directory';
	this.prefix          = 'untitled folder';
	this.exec            = function(select, cOpts) {
		var onCwd;

		if (select && select.length && cOpts && cOpts._currentType && cOpts._currentType === 'navbar') {
			this.origin = cOpts._currentType;
			this.data = {
				target: select[0]
			};
		} else {
			onCwd = fm.cwd().hash === select[0];
			this.origin = curOrg && !onCwd? curOrg : 'cwd';
			delete this.data;
		}
		if (! select && ! this.options.intoNewFolderToolbtn) {
			fm.getUI('cwd').trigger('unselectall');
		}
		//this.move = (!onCwd && curOrg !== 'navbar' && fm.selected().length)? true : false;
		this.move = this.value === fm.i18n('cmdmkdirin');
		return jQuery.proxy(fm.res('mixin', 'make'), self)();
	};
	
	this.shortcuts = [{
		pattern     : 'ctrl+shift+n'
	}];

	this.init = function() {
		if (this.options.intoNewFolderToolbtn) {
			this.syncTitleOnChange = true;
		}
	};
	
	fm.bind('select contextmenucreate closecontextmenu', function(e) {
		var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
		
		self.className = 'mkdir';
		curOrg = e.data && sel.length? (e.data.origin || e.data.type || '') : '';
		if (!self.options.intoNewFolderToolbtn && curOrg === '') {
			curOrg = 'cwd';
		}
		if (sel.length && curOrg !== 'navbar' && curOrg !== 'cwd' && fm.cwd().hash !== sel[0]) {
			self.title = fm.i18n('cmdmkdirin');
			self.className += ' elfinder-button-icon-mkdirin';
		} else {
			self.title = fm.i18n('cmdmkdir');
		}
		if (e.type !== 'closecontextmenu') {
			self.update(void(0), self.title);
		} else {
			requestAnimationFrame(function() {
				self.update(void(0), self.title);
			});
		}
	});
	
	this.getstate = function(select) {
		var cwd = fm.cwd(),
			sel = (curOrg === 'navbar' || (select && select[0] !== cwd.hash))? this.files(select || fm.selected()) : [],
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(f) {
					fres = fres && f.read && ! f.locked? true : false;
					return fres;
				});
			};

		if (curOrg === 'navbar') {
			return cnt && sel[0].write && sel[0].read? 0 : -1;  
		} else {
			return cwd.write && (!cnt || filter(sel).length == cnt)? 0 : -1;
		}
	};

};
lib/js/commands/duplicate.js000064400000002560147361034410012045 0ustar00/**
 * @class elFinder command "duplicate"
 * Create file/folder copy with suffix "copy Number"
 *
 * @type  elFinder.command
 * @author  Dmitry (dio) Levashov
 */
 elFinder.prototype.commands.duplicate = function() {
	"use strict";
	var fm = this.fm;
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length,
			filter = function(files) {
				var fres = true;
				return jQuery.grep(files, function(f) {
					fres = fres && f.read && f.phash === fm.cwd().hash && ! fm.isRoot(f)? true : false;
					return fres;
				});
			};

		return cnt && fm.cwd().write && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm     = this.fm,
			files  = this.files(hashes),
			cnt    = files.length,
			dfrd   = jQuery.Deferred()
				.fail(function(error) {
					error && fm.error(error);
				}), 
			args = [];
			
		if (! cnt) {
			return dfrd.reject();
		}
		
		jQuery.each(files, function(i, file) {
			if (!file.read || !fm.file(file.phash).write) {
				return !dfrd.reject(['errCopy', file.name, 'errPerm']);
			}
		});
		
		if (dfrd.state() == 'rejected') {
			return dfrd;
		}
		
		return fm.request({
			data   : {cmd : 'duplicate', targets : this.hashes(hashes)},
			notify : {type : 'copy', cnt : cnt},
			navigate : {
				toast : {
					inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdduplicate')])}
				}
			}
		});
		
	};

};
lib/js/commands/selectnone.js000064400000001022147361034410012222 0ustar00/**
 * @class  elFinder command "selectnone"
 * Unselect ALL of cwd items
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.selectnone = function() {
	"use strict";
	var self = this,
		fm = this.fm,
		state = -1;
	
	fm.bind('select', function(e) {
		state = (e.data && e.data.unselectall)? -1 : 0;
	});
	
	this.state = -1;
	this.updateOnSelect = false;
	
	this.getstate = function() {
		return state;
	};
	
	this.exec = function() {
		fm.getUI('cwd').trigger('unselectall');
		return jQuery.Deferred().resolve();
	};
};
lib/js/commands/back.js000064400000001000147361034410010757 0ustar00/**
 * @class  elFinder command "back"
 * Open last visited folder
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.back = function() {
	"use strict";
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts      = [{
		pattern     : 'ctrl+left backspace'
	}];
	
	this.getstate = function() {
		return this.fm.history.canBack() ? 0 : -1;
	};
	
	this.exec = function() {
		return this.fm.history.back();
	};

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/edit.js000064400000104756147361034410011032 0ustar00/**
 * @class elFinder command "edit". 
 * Edit text file in dialog window
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
 elFinder.prototype.commands.edit = function() {
	"use strict";
	var self  = this,
		fm    = this.fm,
		clsEditing = fm.res('class', 'editing'),
		mimesSingle = [],
		mimes = [],
		allowAll = false,
		rtrim = function(str){
			return str.replace(/\s+$/, '');
		},
		getEncSelect = function(heads) {
			var sel = jQuery('<select class="ui-corner-all"></select>'),
				hval;
			if (heads) {
				jQuery.each(heads, function(i, head) {
					hval = fm.escape(head.value);
					sel.append('<option value="'+hval+'">'+(head.caption? fm.escape(head.caption) : hval)+'</option>');
				});
			}
			jQuery.each(self.options.encodings, function(i, v) {
				sel.append('<option value="'+v+'">'+v+'</option>');
			});
			return sel;
		},
		getDlgWidth = function() {
			var win = fm.options.dialogContained? fm.getUI() : jQuery(window),
				m, width;
			if (typeof self.options.dialogWidth === 'string' && (m = self.options.dialogWidth.match(/(\d+)%/))) {
				width = parseInt(win.width() * (m[1] / 100));
			} else {
				width = parseInt(self.options.dialogWidth || 650);
			}
			return Math.min(width, win.width());
		},
		getDlgHeight = function() {
			if (!self.options.dialogHeight) {
				return void(0);
			}
			var win = fm.options.dialogContained? fm.getUI() : jQuery(window),
				m, height;
			if (typeof self.options.dialogHeight === 'string' && (m = self.options.dialogHeight.match(/(\d+)%/))) {
				height = parseInt(win.height() * (m[1] / 100));
			} else {
				height = parseInt(self.options.dialogHeight || win.height());
			}
			return Math.min(height, win.height());
		},

		/**
		 * Return files acceptable to edit
		 *
		 * @param  Array  files hashes
		 * @return Array
		 **/
		filter = function(files) {
			var cnt = files.length,
				mime, ext, skip;
			
			if (cnt > 1) {
				mime = files[0].mime;
				ext = files[0].name.replace(/^.*(\.[^.]+)$/, '$1');
			}
			return jQuery.grep(files, function(file) {
				var res;
				if (skip || file.mime === 'directory') {
					return false;
				}
				res = file.read
					&& (allowAll || fm.mimeIsText(file.mime) || jQuery.inArray(file.mime, cnt === 1? mimesSingle : mimes) !== -1) 
					&& (!self.onlyMimes.length || jQuery.inArray(file.mime, self.onlyMimes) !== -1)
					&& (cnt === 1 || (file.mime === mime && file.name.substr(ext.length * -1) === ext))
					&& (fm.uploadMimeCheck(file.mime, file.phash)? true : false)
					&& setEditors(file, cnt)
					&& Object.keys(editors).length;
				if (!res) {
					skip = true;
				}
				return res;
			});
		},

		fileSync = function(hash) {
			var old = fm.file(hash),
				f;
			fm.request({
				cmd: 'info',
				targets: [hash],
				preventDefault: true
			}).done(function(data) {
				var changed;
				if (data && data.files && data.files.length) {
					f = data.files[0];
					if (old.ts != f.ts || old.size != f.size) {
						changed = { changed: [ f ] };
						fm.updateCache(changed);
						fm.change(changed);
					}
				}
			});
		},

		/**
		 * Open dialog with textarea to edit file
		 *
		 * @param  String  id       dialog id
		 * @param  Object  file     file object
		 * @param  String  content  file content
		 * @return jQuery.Deferred
		 **/
		dialog = function(id, file, content, encoding, editor, toasts) {

			var dfrd = jQuery.Deferred(),
				_loaded = false,
				loaded = function() {
					if (!_loaded) {
						fm.toast({
							mode: 'warning',
							msg: fm.i18n('nowLoading')
						});
						return false;
					}
					return true;
				},
				makeToasts = function() {
					// make toast message
					if (toasts && Array.isArray(toasts)) {
						jQuery.each(toasts, function() {
							this.msg && fm.toast(this);
						});
					}
				},
				save = function() {
					var encord = selEncoding? selEncoding.val():void(0),
						saveDfd = jQuery.Deferred().fail(function(err) {
							dialogNode.show().find('button.elfinder-btncnt-0,button.elfinder-btncnt-1').hide();
						}),
						conf, res, tm;
					if (!loaded()) {
						return saveDfd.resolve();
					}
					if (ta.editor) {
						ta.editor.save(ta[0], ta.editor.instance);
						conf = ta.editor.confObj;
						if (conf.info && (conf.info.schemeContent || conf.info.arrayBufferContent)) {
							encord = 'scheme';
						}
					}
					res = getContent();
					setOld(res);
					if (res.promise) {
						tm = setTimeout(function() {
							fm.notify({
								type : 'chkcontent',
								cnt : 1,
								hideCnt: true,
								cancel : function() {
									res.reject();
								}
							});
						}, 100);
						res.always(function() {
							tm && clearTimeout(tm);
							fm.notify({ type : 'chkcontent', cnt: -1 });
						}).done(function(data) {
							dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]);
						}).fail(function(err) {
							saveDfd.reject(err);
						});
					} else {
						dfrd.notifyWith(ta, [encord, ta.data('hash'), old, saveDfd]);
					}
					return saveDfd;
				},
				saveon = function() {
					if (!loaded()) { return; }
					save().fail(function(err) {
						err && fm.error(err);
					});
				},
				cancel = function() {
					ta.elfinderdialog('close');
				},
				savecl = function() {
					if (!loaded()) { return; }
					dialogNode.hide();
					save().done(function() {
						_loaded = false;
						dialogNode.show();
						cancel();
					}).fail(function(err) {
						dialogNode.show();
						err && fm.error(err);
					});
				},
				saveAs = function() {
					if (!loaded()) { return; }
					var prevOld = old,
						phash = file.phash,
						fail = function(err) {
							dialogs.addClass(clsEditing).fadeIn(function() {
								err && fm.error(err);
							});
							old = prevOld;
							fm.disable();
						},
						make = function() {
							self.mime = saveAsFile.mime || file.mime;
							self.prefix = (saveAsFile.name || file.name).replace(/ \d+(\.[^.]+)?$/, '$1');
							self.requestCmd = 'mkfile';
							self.nextAction = {};
							self.data = {target : phash};
							jQuery.proxy(fm.res('mixin', 'make'), self)()
								.done(function(data) {
									var oldHash;
									if (data.added && data.added.length) {
										oldHash = ta.data('hash');
										ta.data('hash', data.added[0].hash);
										save().done(function() {
											_loaded = false;
											dialogNode.show();
											cancel();
											dialogs.fadeIn();
										}).fail(function() {
											fm.exec('rm', [data.added[0].hash], { forceRm: true, quiet: true });
											ta.data('hash', oldHash);
											dialogNode.find('button.elfinder-btncnt-2').hide();
											fail();
										});
									} else {
										fail();
									}
								})
								.progress(function(err) {
									if (err && err === 'errUploadMime') {
										ta.trigger('saveAsFail');
									}
								})
								.fail(fail)
								.always(function() {
									delete self.mime;
									delete self.prefix;
									delete self.nextAction;
									delete self.data;
								});
							fm.trigger('unselectfiles', { files: [ file.hash ] });
						},
						reqOpen = null,
						reqInfo = null,
						dialogs = fm.getUI().children('.' + self.dialogClass + ':visible');
						if (dialogNode.is(':hidden')) {
							dialogs = dialogs.add(dialogNode);
						}
						dialogs.removeClass(clsEditing).fadeOut();
					
					fm.enable();
					
					if (fm.searchStatus.state < 2 && phash !== fm.cwd().hash) {
						reqOpen = fm.exec('open', [phash], {thash: phash});
					} else if (!fm.file(phash)) {
						reqInfo = fm.request({cmd: 'info', targets: [phash]}); 
					}
					
					jQuery.when([reqOpen, reqInfo]).done(function() {
						if (reqInfo) {
							fm.one('infodone', function() {
								fm.file(phash)? make() : fail('errFolderNotFound');
							});
						} else {
							reqOpen? fm.one('cwdrender', make) : make();
						}
					}).fail(fail);
				},
				changed = function() {
					var dfd = jQuery.Deferred(),
						res, tm;
					if (!_loaded) {
						return dfd.resolve(false);
					}
					ta.editor && ta.editor.save(ta[0], ta.editor.instance);
					res = getContent();
					if (res && res.promise) {
						tm = setTimeout(function() {
							fm.notify({
								type : 'chkcontent',
								cnt : 1,
								hideCnt: true,
								cancel : function() {
									res.reject();
								}
							});
						}, 100);
						res.always(function() {
							tm && clearTimeout(tm);
							fm.notify({ type : 'chkcontent', cnt: -1 });
						}).done(function(d) {
							dfd.resolve(old !== d);
						}).fail(function(err) {
							dfd.resolve(err || (old === undefined? false : true));
						});
					} else {
						dfd.resolve(old !== res);
					}
					return dfd;
				},
				opts = {
					title   : fm.escape(file.name),
					width   : getDlgWidth(),
					height  : getDlgHeight(),
					buttons : {},
					cssClass  : clsEditing,
					maxWidth  : 'window',
					maxHeight : 'window',
					allowMinimize : true,
					allowMaximize : true,
					openMaximized : editorMaximized() || (editor && editor.info && editor.info.openMaximized),
					btnHoverFocus : false,
					closeOnEscape : false,
					propagationEvents : ['mousemove', 'mouseup', 'click'],
					minimize : function() {
						var conf;
						if (ta.editor && dialogNode.closest('.ui-dialog').is(':hidden')) {
							conf = ta.editor.confObj;
							if (conf.info && conf.info.syncInterval) {
								fileSync(file.hash);
							}
						}
					},
					close   : function() {
						var close = function() {
								var conf;
								dfrd.resolve();
								if (ta.editor) {
									ta.editor.close(ta[0], ta.editor.instance);
									conf = ta.editor.confObj;
									if (conf.info && conf.info.syncInterval) {
										fileSync(file.hash);
									}
								}
								ta.elfinderdialog('destroy');
							},
							onlySaveAs = (typeof saveAsFile.name !== 'undefined'),
							accept = onlySaveAs? {
								label    : 'btnSaveAs',
								callback : function() {
									requestAnimationFrame(saveAs);
								}
							} : {
								label    : 'btnSaveClose',
								callback : function() {
									save().done(function() {
										close();
									});
								}
							};
						changed().done(function(change) {
							var msgs = ['confirmNotSave'];
							if (change) {
								if (typeof change === 'string') {
									msgs.unshift(change);
								}
								fm.confirm({
									title  : self.title,
									text   : msgs,
									accept : accept,
									cancel : {
										label    : 'btnClose',
										callback : close
									},
									buttons : onlySaveAs? null : [{
										label    : 'btnSaveAs',
										callback : function() {
											requestAnimationFrame(saveAs);
										}
									}]
								});
							} else {
								close();
							}
						});
					},
					open    : function() {
						var loadRes, conf, interval;
						ta.initEditArea.call(ta, id, file, content, fm);
						if (ta.editor) {
							loadRes = ta.editor.load(ta[0]) || null;
							if (loadRes && loadRes.done) {
								loadRes.always(function() {
									_loaded = true;
								}).done(function(instance) {
									ta.editor.instance = instance;
									ta.editor.focus(ta[0], ta.editor.instance);
									setOld(getContent());
									requestAnimationFrame(function() {
										dialogNode.trigger('resize');
									});
								}).fail(function(error) {
									error && fm.error(error);
									ta.elfinderdialog('destroy');
									return;
								}).always(makeToasts);
							} else {
								_loaded = true;
								if (loadRes && (typeof loadRes === 'string' || Array.isArray(loadRes))) {
									fm.error(loadRes);
									ta.elfinderdialog('destroy');
									return;
								}
								ta.editor.instance = loadRes;
								ta.editor.focus(ta[0], ta.editor.instance);
								setOld(getContent());
								requestAnimationFrame(function() {
									dialogNode.trigger('resize');
								});
								makeToasts();
							}
							conf = ta.editor.confObj;
							if (conf.info && conf.info.syncInterval) {
								if (interval = parseInt(conf.info.syncInterval)) {
									setTimeout(function() {
										autoSync(interval);
									}, interval);
								}
							}
						} else {
							_loaded = true;
							setOld(getContent());
						}
					},
					resize : function(e, data) {
						ta.editor && ta.editor.resize(ta[0], ta.editor.instance, e, data || {});
					}
				},
				getContent = function() {
					var res = ta.getContent.call(ta, ta[0]);
					if (res === undefined || res === false || res === null) {
						res = jQuery.Deferred().reject();
					}
					return res;
				},
				setOld = function(res) {
					if (res && res.promise) {
						res.done(function(d) {
							old = d;
						});
					} else {
						old = res;
					}
				},
				autoSync = function(interval) {
					if (dialogNode.is(':visible')) {
						fileSync(file.hash);
						setTimeout(function() {
							autoSync(interval);
						}, interval);
					}
				},
				stateChange = function() {
					if (selEncoding) {
						changed().done(function(change) {
							if (change) {
								selEncoding.attr('title', fm.i18n('saveAsEncoding')).addClass('elfinder-edit-changed');
							} else {
								selEncoding.attr('title', fm.i18n('openAsEncoding')).removeClass('elfinder-edit-changed');
							}
						});
					}
				},
				saveAsFile = {},
				ta, old, dialogNode, selEncoding, extEditor, maxW, syncInterval;
				
			if (editor) {
				if (editor.html) {
					ta = jQuery(editor.html);
				}
				extEditor = {
					init     : editor.init || null,
					load     : editor.load,
					getContent : editor.getContent || null,
					save     : editor.save,
					beforeclose : typeof editor.beforeclose == 'function' ? editor.beforeclose : void 0,
					close    : typeof editor.close == 'function' ? editor.close : function() {},
					focus    : typeof editor.focus == 'function' ? editor.focus : function() {},
					resize   : typeof editor.resize == 'function' ? editor.resize : function() {},
					instance : null,
					doSave   : saveon,
					doCancel : cancel,
					doClose  : savecl,
					file     : file,
					fm       : fm,
					confObj  : editor,
					trigger  : function(evName, data) {
						fm.trigger('editEditor' + evName, Object.assign({}, editor.info || {}, data));
					}
				};
			}
			
			if (!ta) {
				if (!fm.mimeIsText(file.mime)) {
					return dfrd.reject('errEditorNotFound');
				}
				(function() {
					ta = jQuery('<textarea class="elfinder-file-edit" rows="20" id="'+id+'-ta"></textarea>')
						.on('input propertychange', stateChange);
					
					if (!editor || !editor.info || editor.info.useTextAreaEvent) {
						ta.on('keydown', function(e) {
							var code = e.keyCode,
								value, start;
							
							e.stopPropagation();
							if (code == jQuery.ui.keyCode.TAB) {
								e.preventDefault();
								// insert tab on tab press
								if (this.setSelectionRange) {
									value = this.value;
									start = this.selectionStart;
									this.value = value.substr(0, start) + "\t" + value.substr(this.selectionEnd);
									start += 1;
									this.setSelectionRange(start, start);
								}
							}
							
							if (e.ctrlKey || e.metaKey) {
								// close on ctrl+w/q
								if (code == 'Q'.charCodeAt(0) || code == 'W'.charCodeAt(0)) {
									e.preventDefault();
									cancel();
								}
								if (code == 'S'.charCodeAt(0)) {
									e.preventDefault();
									saveon();
								}
							}
							
						})
						.on('mouseenter', function(){this.focus();});
					}

					ta.initEditArea = function(id, file, content) {
						// ta.hide() for performance tune. Need ta.show() in `load()` if use textarea node.
						ta.hide().val(content);
						this._setupSelEncoding(content);
					};
				})();
			}

			// extended function to setup selector of encoding for text editor
			ta._setupSelEncoding = function(content) {
				var heads = (encoding && encoding !== 'unknown')? [{value: encoding}] : [],
					wfake = jQuery('<select></select>').hide(),
					setSelW = function(init) {
						init && wfake.appendTo(selEncoding.parent());
						wfake.empty().append(jQuery('<option></option>').text(selEncoding.val()));
						selEncoding.width(wfake.width());
					};
				if (content === '' || ! encoding || encoding !== 'UTF-8') {
					heads.push({value: 'UTF-8'});
				}
				selEncoding = getEncSelect(heads).on('touchstart', function(e) {
					// for touch punch event handler
					e.stopPropagation();
				}).on('change', function() {
					// reload to change encoding if not edited
					changed().done(function(change) {
						if (! change && getContent() !== '') {
							cancel();
							edit(file, selEncoding.val(), editor).fail(function(err) { err && fm.error(err); });
						}
					});
					setSelW();
				}).on('mouseover', stateChange);
				ta.parent().next().prepend(jQuery('<div class="ui-dialog-buttonset elfinder-edit-extras"></div>').append(selEncoding));
				setSelW(true);
			};

			ta.data('hash', file.hash);
			
			if (extEditor) {
				ta.editor = extEditor;
				
				if (typeof extEditor.beforeclose === 'function') {
					opts.beforeclose = function() {
						return extEditor.beforeclose(ta[0], extEditor.instance);
					};
				}
				
				if (typeof extEditor.init === 'function') {
					ta.initEditArea = extEditor.init;
				}
				
				if (typeof extEditor.getContent === 'function') {
					ta.getContent = extEditor.getContent;
				}
			}
			
			if (! ta.initEditArea) {
				ta.initEditArea = function() {};
			}
			
			if (! ta.getContent) {
				ta.getContent = function() {
					return rtrim(ta.val());
				};
			}
			
			if (!editor || !editor.info || !editor.info.preventGet) {
				opts.buttons[fm.i18n('btnSave')]      = saveon;
				opts.buttons[fm.i18n('btnSaveClose')] = savecl;
				opts.buttons[fm.i18n('btnSaveAs')]    = saveAs;
				opts.buttons[fm.i18n('btnCancel')]    = cancel;
			}
			
			if (editor && typeof editor.prepare === 'function') {
				editor.prepare(ta, opts, file);
			}
			
			dialogNode = self.fmDialog(ta, opts)
				.attr('id', id)
				.on('keydown keyup keypress', function(e) {
					e.stopPropagation();
				})
				.css({ overflow: 'hidden', minHeight: '7em' })
				.addClass('elfinder-edit-editor')
				.closest('.ui-dialog')
				.on('changeType', function(e, data) {
					if (data.extention && data.mime) {
						var ext = data.extention,
							mime = data.mime,
							btnSet = jQuery(this).children('.ui-dialog-buttonpane').children('.ui-dialog-buttonset');
						btnSet.children('.elfinder-btncnt-0,.elfinder-btncnt-1').hide();
						saveAsFile.name = fm.splitFileExtention(file.name)[0] + '.' + data.extention;
						saveAsFile.mime = data.mime;
						if (!data.keepEditor) {
							btnSet.children('.elfinder-btncnt-2').trigger('click');
						}
					}
				});
			
			// care to viewport scale change with mobile devices
			maxW = (fm.options.dialogContained? fm.getUI() : jQuery(window)).width();
			(dialogNode.width() > maxW) && dialogNode.width(maxW);
			
			return dfrd.promise();
		},
		
		/**
		 * Get file content and
		 * open dialog with textarea to edit file content
		 *
		 * @param  String  file hash
		 * @return jQuery.Deferred
		 **/
		edit = function(file, convert, editor) {
			var hash   = file.hash,
				opts   = fm.options,
				dfrd   = jQuery.Deferred(), 
				id     = 'edit-'+fm.namespace+'-'+file.hash,
				d      = fm.getUI().find('#'+id),
				conv   = !convert? 0 : convert,
				noContent = false,
				req, error, res;
			
			
			if (d.length) {
				d.elfinderdialog('toTop');
				return dfrd.resolve();
			}
			
			if (!file.read || (!file.write && (!editor.info || !editor.info.converter))) {
				error = ['errOpen', file.name, 'errPerm'];
				return dfrd.reject(error);
			}
			
			if (editor && editor.info) {
				if (typeof editor.info.edit === 'function') {
					res = editor.info.edit.call(fm, file, editor);
					if (res.promise) {
						res.done(function() {
							dfrd.resolve();
						}).fail(function(error) {
							dfrd.reject(error);
						});
					} else {
						res? dfrd.resolve() : dfrd.reject();
					}
					return dfrd;
				}

				noContent = editor.info.preventGet || editor.info.noContent;
				if (editor.info.urlAsContent || noContent) {
					req = jQuery.Deferred();
					if (editor.info.urlAsContent) {
						fm.url(hash, { async: true, onetime: true, temporary: true }).done(function(url) {
							req.resolve({content: url});
						});
					} else {
						req.resolve({});
					}
				} else {
					if (conv) {
						file.encoding = conv;
						fm.cache(file, 'change');
					}
					req = fm.request({
						data           : {cmd : 'get', target : hash, conv : conv, _t : file.ts},
						options        : {type: 'get', cache : true},
						notify         : {type : 'file', cnt : 1},
						preventDefault : true
					});
				}

				req.done(function(data) {
					var selEncoding, reg, m, res;
					if (data.doconv) {
						fm.confirm({
							title  : self.title,
							text   : data.doconv === 'unknown'? 'confirmNonUTF8' : 'confirmConvUTF8',
							accept : {
								label    : 'btnConv',
								callback : function() {  
									dfrd = edit(file, selEncoding.val(), editor);
								}
							},
							cancel : {
								label    : 'btnCancel',
								callback : function() { dfrd.reject(); }
							},
							optionsCallback : function(options) {
								options.create = function() {
									var base = jQuery('<div class="elfinder-dialog-confirm-encoding"></div>'),
										head = {value: data.doconv},
										detected;
									
									if (data.doconv === 'unknown') {
										head.caption = '-';
									}
									selEncoding = getEncSelect([head]);
									jQuery(this).next().find('.ui-dialog-buttonset')
										.prepend(base.append(jQuery('<label>'+fm.i18n('encoding')+' </label>').append(selEncoding)));
								};
							}
						});
					} else {
						if (!noContent && fm.mimeIsText(file.mime)) {
							reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i');
							if (!editor.info.dataScheme) {
								if (window.atob && (m = data.content.match(reg))) {
									data.content = atob(data.content.substr(m[1].length));
								}
							} else {
								if (window.btoa && !data.content.match(reg)) {
									data.content = 'data:'+file.mime+';base64,'+btoa(data.content);
								}
							}
						}
						dialog(id, file, data.content, data.encoding, editor, data.toasts)
							.done(function(data) {
								dfrd.resolve(data);
							})
							.progress(function(encoding, newHash, data, saveDfd) {
								var ta = this;
								if (newHash) {
									hash = newHash;
								}
								fm.request({
									options : {type : 'post'},
									data : {
										cmd     : 'put',
										target  : hash,
										encoding : encoding || data.encoding,
										content : data
									},
									notify : {type : 'save', cnt : 1},
									syncOnFail : true,
									preventFail : true,
									navigate : {
										target : 'changed',
										toast : {
											inbuffer : {msg: fm.i18n(['complete', fm.i18n('btnSave')])}
										}
									}
								})
								.fail(function(error) {
									dfrd.reject(error);
									saveDfd.reject();
								})
								.done(function(data) {
									requestAnimationFrame(function(){
										ta.trigger('focus');
										ta.editor && ta.editor.focus(ta[0], ta.editor.instance);
									});
									saveDfd.resolve();
								});
							})
							.fail(function(error) {
								dfrd.reject(error);
							});
					}
				})
				.fail(function(error) {
					var err = fm.parseError(error);
					err = Array.isArray(err)? err[0] : err;
					if (file.encoding) {
						file.encoding = '';
						fm.cache(file, 'change');
					}
					(err !== 'errConvUTF8') && fm.sync();
					dfrd.reject(error);
				});
			}

			return dfrd.promise();
		},
		
		/**
		 * Current editors of selected files
		 * 
		 * @type Object
		 */
		editors = {},
		
		/**
		 * Fallback editor (Simple text editor)
		 * 
		 * @type Object
		 */
		fallbackEditor = {
			// Simple Text (basic textarea editor)
			info : {
				id : 'textarea',
				name : 'TextArea',
				useTextAreaEvent : true
			},
			load : function(textarea) {
				// trigger event 'editEditorPrepare'
				this.trigger('Prepare', {
					node: textarea,
					editorObj: void(0),
					instance: void(0),
					opts: {}
				});
				textarea.setSelectionRange && textarea.setSelectionRange(0, 0);
				jQuery(textarea).trigger('focus').show();
			},
			save : function(){}
		},

		/**
		 * Set current editors
		 * 
		 * @param  Object  file object
		 * @param  Number  cnt  count of selected items
		 * @return Void
		 */
		setEditors = function(file, cnt) {
			var mimeMatch = function(fileMime, editorMimes){
					if (!editorMimes) {
						return fm.mimeIsText(fileMime);
					} else {
						if (editorMimes[0] === '*' || jQuery.inArray(fileMime, editorMimes) !== -1) {
							return true;
						}
						var i, l;
						l = editorMimes.length;
						for (i = 0; i < l; i++) {
							if (fileMime.indexOf(editorMimes[i]) === 0) {
								return true;
							}
						}
						return false;
					}
				},
				extMatch = function(fileName, editorExts){
					if (!editorExts || !editorExts.length) {
						return true;
					}
					var ext = fileName.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(),
					i, l;
					l = editorExts.length;
					for (i = 0; i < l; i++) {
						if (ext === editorExts[i].toLowerCase()) {
							return true;
						}
					}
					return false;
				},
				optEditors = self.options.editors || [],
				cwdWrite = fm.cwd().write;
			
			stored = fm.storage('storedEditors') || {};
			editors = {};
			if (!optEditors.length) {
				optEditors = [fallbackEditor];
			}
			jQuery.each(optEditors, function(i, editor) {
				var name;
				if ((cnt === 1 || !editor.info.single)
						&& ((!editor.info || !editor.info.converter)? file.write : cwdWrite)
						&& (file.size > 0 || (!editor.info.converter && editor.info.canMakeEmpty !== false && fm.mimesCanMakeEmpty[file.mime]))
						&& (!editor.info.maxSize || file.size <= editor.info.maxSize)
						&& mimeMatch(file.mime, editor.mimes || null)
						&& extMatch(file.name, editor.exts || null)
						&& typeof editor.load == 'function'
						&& typeof editor.save == 'function') {
					
					name = editor.info.name? editor.info.name : ('Editor ');
					editor.id = editor.info.id? editor.info.id : ('editor' + i),
					editor.name = name;
					editor.i18n = fm.i18n(name);
					editors[editor.id] = editor;
				}
			});
			return Object.keys(editors).length? true : false;
		},
		store = function(mime, editor) {
			if (mime && editor) {
				if (!jQuery.isPlainObject(stored)) {
					stored = {};
				}
				stored[mime] = editor.id;
				fm.storage('storedEditors', stored);
				fm.trigger('selectfiles', {files : fm.selected()});
			}
		},
		useStoredEditor = function() {
			var d = fm.storage('useStoredEditor');
			return d? (d > 0) : self.options.useStoredEditor;
		},
		editorMaximized = function() {
			var d = fm.storage('editorMaximized');
			return d? (d > 0) : self.options.editorMaximized;
		},
		getSubMenuRaw = function(files, callback) {
			var subMenuRaw = [];
			jQuery.each(editors, function(id, ed) {
				subMenuRaw.push(
					{
						label    : fm.escape(ed.i18n),
						icon     : ed.info && ed.info.icon? ed.info.icon : 'edit',
						options  : { iconImg: ed.info && ed.info.iconImg? fm.baseUrl + ed.info.iconImg : void(0) },
						callback : function() {
							store(files[0].mime, ed);
							callback && callback.call(ed);
						}
					}		
				);
			});
			return subMenuRaw;
		},
		getStoreId = function(name) {
			// for compatibility to previous version
			return name.toLowerCase().replace(/ +/g, '');
		},
		getStoredEditor = function(mime) {
			var name = stored[mime];
			return name && Object.keys(editors).length? editors[getStoreId(name)] : void(0);
		},
		infoRequest = function() {

		},
		stored;
	
	// make public method
	this.getEncSelect = getEncSelect;

	this.shortcuts = [{
		pattern     : 'ctrl+e'
	}];
	
	this.init = function() {
		var self = this,
			fm   = this.fm,
			opts = this.options,
			cmdChecks = [],
			ccData, dfd;
		
		this.onlyMimes = this.options.mimes || [];
		
		fm.one('open', function() {
			// editors setup
			if (opts.editors && Array.isArray(opts.editors)) {
				fm.trigger('canMakeEmptyFile', {mimes: Object.keys(fm.storage('mkfileTextMimes') || {}).concat(opts.makeTextMimes || ['text/plain'])});
				jQuery.each(opts.editors, function(i, editor) {
					if (editor.info && editor.info.cmdCheck) {
						cmdChecks.push(editor.info.cmdCheck);
					}
				});
				if (cmdChecks.length) {
					if (fm.api >= 2.1030) {
						dfd = fm.request({
							data : {
								cmd: 'editor',
								name: cmdChecks,
								method: 'enabled'
							},
							preventDefault : true
						}).done(function(d) {
							ccData = d;
						}).fail(function() {
							ccData = {};
						});
					} else {
						ccData = {};
						dfd = jQuery.Deferred().resolve();
					}
				} else {
					dfd = jQuery.Deferred().resolve();
				}
				
				dfd.always(function() {
					if (ccData) {
						opts.editors = jQuery.grep(opts.editors, function(e) {
							if (e.info && e.info.cmdCheck) {
								return ccData[e.info.cmdCheck]? true : false;
							} else {
								return true;
							}
						});
					}
					jQuery.each(opts.editors, function(i, editor) {
						if (editor.setup && typeof editor.setup === 'function') {
							editor.setup.call(editor, opts, fm);
						}
						if (!editor.disabled) {
							if (editor.mimes && Array.isArray(editor.mimes)) {
								mimesSingle = mimesSingle.concat(editor.mimes);
								if (!editor.info || !editor.info.single) {
									mimes = mimes.concat(editor.mimes);
								}
							}
							if (!allowAll && editor.mimes && editor.mimes[0] === '*') {
								allowAll = true;
							}
							if (!editor.info) {
								editor.info = {};
							}
							if (editor.info.integrate) {
								fm.trigger('helpIntegration', Object.assign({cmd: 'edit'}, editor.info.integrate));
							}
							if (editor.info.canMakeEmpty) {
								fm.trigger('canMakeEmptyFile', {mimes: Array.isArray(editor.info.canMakeEmpty)? editor.info.canMakeEmpty : editor.mimes});
							}
						}
					});
					
					mimesSingle = (jQuery.uniqueSort || jQuery.unique)(mimesSingle);
					mimes = (jQuery.uniqueSort || jQuery.unique)(mimes);
					
					opts.editors = jQuery.grep(opts.editors, function(e) {
						return e.disabled? false : true;
					});
				});
			}
		})
		.bind('select', function() {
			editors = null;
		})
		.bind('contextmenucreate', function(e) {
			var file, editor,
				single = function(editor) {
					var title = self.title;
					fm.one('contextmenucreatedone', function() {
						self.title = title;
					});
					self.title = fm.escape(editor.i18n);
					if (editor.info && editor.info.iconImg) {
						self.contextmenuOpts = {
							iconImg: fm.baseUrl + editor.info.iconImg
						};
					}
					delete self.variants;
				};
			
			self.contextmenuOpts = void(0);
			if (e.data.type === 'files' && self.enabled()) {
				file = fm.file(e.data.targets[0]);
				if (setEditors(file, e.data.targets.length)) {
					if (Object.keys(editors).length > 1) {
						if (!useStoredEditor() || !(editor = getStoredEditor(file.mime))) {
							delete self.extra;
							self.variants = [];
							jQuery.each(editors, function(id, editor) {
								self.variants.push([{ editor: editor }, editor.i18n, editor.info && editor.info.iconImg? fm.baseUrl + editor.info.iconImg : 'edit']);
							});
						} else {
							single(editor);
							self.extra = {
								icon: 'menu',
								node: jQuery('<span></span>')
									.attr({title: fm.i18n('select')})
									.on('click touchstart', function(e){
										if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
											return;
										}
										var node = jQuery(this);
										e.stopPropagation();
										e.preventDefault();
										fm.trigger('contextmenu', {
											raw: getSubMenuRaw(fm.selectedFiles(), function() {
												var hashes = fm.selected();
												fm.exec('edit', hashes, {editor: this});
												fm.trigger('selectfiles', {files : hashes});
											}),
											x: node.offset().left,
											y: node.offset().top
										});
									})
							};
						}
					} else {
						single(editors[Object.keys(editors)[0]]);
						delete self.extra;
					}
				}
			}
		})
		.bind('canMakeEmptyFile', function(e) {
			if (e.data && e.data.resetTexts) {
				var defs = fm.arrayFlip(self.options.makeTextMimes || ['text/plain']),
					hides = self.getMkfileHides();

				jQuery.each((fm.storage('mkfileTextMimes') || {}), function(mime, type) {
					if (!defs[mime]) {
						delete fm.mimesCanMakeEmpty[mime];
						delete hides[mime];
					}
				});
				fm.storage('mkfileTextMimes', null);
				if (Object.keys(hides).length) {
					fm.storage('mkfileHides', hides);
				} else {
					fm.storage('mkfileHides', null);
				}
			}
		});
	};
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;

		return cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(select, opts) {
		var fm    = this.fm, 
			files = filter(this.files(select)),
			hashes = jQuery.map(files, function(f) { return f.hash; }),
			list  = [],
			editor = opts && opts.editor? opts.editor : null,
			node = jQuery(opts && opts._currentNode? opts._currentNode : fm.cwdHash2Elm(hashes[0])),
			getEditor = function() {
				var dfd = jQuery.Deferred(),
					storedId;
				
				if (!editor && Object.keys(editors).length > 1) {
					if (useStoredEditor() && (editor = getStoredEditor(files[0].mime))) {
						return dfd.resolve(editor);
					}
					fm.trigger('contextmenu', {
						raw: getSubMenuRaw(files, function() {
							dfd.resolve(this);
						}),
						x: node.offset().left,
						y: node.offset().top + 22,
						opened: function() {
							fm.one('closecontextmenu',function() {
								requestAnimationFrame(function() {
									if (dfd.state() === 'pending') {
										dfd.reject();
									}
								});
							});
						}
					});
					
					fm.trigger('selectfiles', {files : hashes});
					
					return dfd;
				} else {
					Object.keys(editors).length > 1 && editor && store(files[0].mime, editor);
					return dfd.resolve(editor? editor : (Object.keys(editors).length? editors[Object.keys(editors)[0]] : null));
				}
			},
			dfrd = jQuery.Deferred(),
			file;

		if (editors === null) {
			setEditors(files[0], hashes.length);
		}
		
		if (!node.length) {
			node = fm.getUI('cwd');
		}
		
		getEditor().done(function(editor) {
			while ((file = files.shift())) {
				list.push(edit(file, (file.encoding || void(0)), editor).fail(function(error) {
					error && fm.error(error);
				}));
			}
			
			if (list.length) { 
				jQuery.when.apply(null, list).done(function() {
					dfrd.resolve();
				}).fail(function() {
					dfrd.reject();
				});
			} else {
				dfrd.reject();
			}
		}).fail(function() {
			dfrd.reject();
		});
		
		return dfrd;
	};

	this.getMkfileHides = function() {
		return fm.storage('mkfileHides') || fm.arrayFlip(self.options.mkfileHideMimes || []);
	};

};
lib/js/commands/fullscreen.js000064400000002062147361034410012232 0ustar00/**
 * @class  elFinder command "fullscreen"
 * elFinder node to full scrren mode
 *
 * @author Naoki Sawada
 **/

elFinder.prototype.commands.fullscreen = function() {
	"use strict";
	var self   = this,
		fm     = this.fm,
		update = function(e, data) {
			var full;
			e.preventDefault();
			e.stopPropagation();
			if (data && data.fullscreen) {
				full = (data.fullscreen === 'on');
				self.update(void(0), full);
				self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen');
			}
		};

	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.syncTitleOnChange = true;
	this.value = false;

	this.options = {
		ui : 'fullscreenbutton'
	};

	this.getstate = function() {
		return 0;
	};
	
	this.exec = function() {
		var node = fm.getUI().get(0),
			full = (node === fm.toggleFullscreen(node));
		self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen');
		self.update(void(0), full);
		return jQuery.Deferred().resolve();
	};
	
	fm.bind('init', function() {
		fm.getUI().off('resize.' + fm.namespace, update).on('resize.' + fm.namespace, update);
	});
};
lib/js/commands/help.js000064400000034323147361034410011025 0ustar00/**
 * @class  elFinder command "help"
 * "About" dialog
 *
 * @author Dmitry (dio) Levashov
 **/
 (elFinder.prototype.commands.help = function() {
	"use strict";
	var fm   = this.fm,
		self = this,
		linktpl = '<div class="elfinder-help-link"> <a href="{url}">{link}</a></div>',
		linktpltgt = '<div class="elfinder-help-link"> <a href="{url}" target="_blank">{link}</a></div>',
		atpl    = '<div class="elfinder-help-team"><div>{author}</div>{work}</div>',
		url     = /\{url\}/,
		link    = /\{link\}/,
		author  = /\{author\}/,
		work    = /\{work\}/,
		r       = 'replace',
		prim    = 'ui-priority-primary',
		sec     = 'ui-priority-secondary',
		lic     = 'elfinder-help-license',
		tab     = '<li class="' + fm.res('class', 'tabstab') + ' elfinder-help-tab-{id}"><a href="#'+fm.namespace+'-help-{id}" class="ui-tabs-anchor">{title}</a></li>',
		html    = ['<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-help">', 
				'<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'],
		stpl    = '<div class="elfinder-help-shortcut"><div class="elfinder-help-shortcut-pattern">{pattern}</div> {descrip}</div>',
		sep     = '<div class="elfinder-help-separator"></div>',
		selfUrl = jQuery('base').length? fm.escape(document.location.href.replace(/#.*$/, '')) : '',
		clTabActive = fm.res('class', 'tabsactive'),
		
		getTheme = function() {
			var src;
			if (fm.theme && fm.theme.author) {
				src = atpl[r]('elfinder-help-team', 'elfinder-help-team elfinder-help-term-theme')[r](author, fm.i18n(fm.theme.author) + (fm.theme.email? ' &lt;'+fm.theme.email+'&gt;' : ''))[r](work, fm.i18n('theme') + ' ('+fm.i18n(fm.theme.name)+')');
			} else {
				src = '<div class="elfinder-help-team elfinder-help-term-theme" style="display:none"></div>';
			}
			return src;
		},

		about = function() {
			html.push('<div id="'+fm.namespace+'-help-about" class="ui-tabs-panel ui-widget-content ui-corner-bottom"><div class="elfinder-help-logo"></div>');
			html.push('<h3>elFinder</h3>');
			html.push('<div class="'+prim+'">'+fm.i18n('webfm')+'</div>');
			html.push('<div class="'+sec+'">'+fm.i18n('ver')+': '+fm.version+'</div>');
			html.push('<div class="'+sec+'">'+fm.i18n('protocolver')+': <span class="apiver"></span></div>');
			html.push('<div class="'+sec+'">jQuery/jQuery UI: '+jQuery().jquery+'/'+jQuery.ui.version+'</div>');

			html.push(sep);
			
			html.push(linktpltgt[r](url, 'https://studio-42.github.io/elFinder/')[r](link, fm.i18n('homepage')));
			html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder/wiki')[r](link, fm.i18n('docs')));
			html.push(linktpltgt[r](url, 'https://github.com/Studio-42/elFinder')[r](link, fm.i18n('github')));
			//html.push(linktpltgt[r](url, 'http://twitter.com/elrte_elfinder')[r](link, fm.i18n('twitter')));
			
			html.push(sep);
			
			html.push('<div class="'+prim+'">'+fm.i18n('team')+'</div>');
			
			html.push(atpl[r](author, 'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;')[r](work, fm.i18n('chiefdev')));
			html.push(atpl[r](author, 'Naoki Sawada &lt;hypweb+elfinder@gmail.com&gt;')[r](work, fm.i18n('developer')));
			html.push(atpl[r](author, 'Troex Nevelin &lt;troex@fury.scancode.ru&gt;')[r](work, fm.i18n('maintainer')));
			html.push(atpl[r](author, 'Alexey Sukhotin &lt;strogg@yandex.ru&gt;')[r](work, fm.i18n('contributor')));
			
			if (fm.i18[fm.lang].translator) {
				jQuery.each(fm.i18[fm.lang].translator.split(', '), function() {
					html.push(atpl[r](author, jQuery.trim(this))[r](work, fm.i18n('translator')+' ('+fm.i18[fm.lang].language+')'));
				});	
			}
			
			html.push(getTheme());

			html.push(sep);
			html.push('<div class="'+lic+'">'+fm.i18n('icons')+': Pixelmixer, <a href="http://p.yusukekamiyamane.com" target="_blank">Fugue</a>, <a href="https://icons8.com" target="_blank">Icons8</a></div>');
			
			html.push(sep);
			html.push('<div class="'+lic+'">Licence: 3-clauses BSD Licence</div>');
			html.push('<div class="'+lic+'">Copyright © 2009-2021, Studio 42</div>');
			html.push('<div class="'+lic+'">„ …'+fm.i18n('dontforget')+' ”</div>');
			html.push('</div>');
		},
		shortcuts = function() {
			var sh = fm.shortcuts();
			// shortcuts tab
			html.push('<div id="'+fm.namespace+'-help-shortcuts" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			
			if (sh.length) {
				html.push('<div class="ui-widget-content elfinder-help-shortcuts">');
				jQuery.each(sh, function(i, s) {
					html.push(stpl.replace(/\{pattern\}/, s[0]).replace(/\{descrip\}/, s[1]));
				});
			
				html.push('</div>');
			} else {
				html.push('<div class="elfinder-help-disabled">'+fm.i18n('shortcutsof')+'</div>');
			}
			
			
			html.push('</div>');
			
		},
		help = function() {
			// help tab
			html.push('<div id="'+fm.namespace+'-help-help" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			html.push('<a href="https://github.com/Studio-42/elFinder/wiki" target="_blank" class="elfinder-dont-panic"><span>DON\'T PANIC</span></a>');
			html.push('</div>');
			// end help
		},
		useInteg = false,
		integrations = function() {
			useInteg = true;
			html.push('<div id="'+fm.namespace+'-help-integrations" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>');
		},
		useDebug = false,
		debug = function() {
			useDebug = true;
			// debug tab
			html.push('<div id="'+fm.namespace+'-help-debug" class="ui-tabs-panel ui-widget-content ui-corner-bottom">');
			html.push('<div class="ui-widget-content elfinder-help-debug"><ul></ul></div>');
			html.push('</div>');
			// end debug
		},
		debugRender = function() {
			var render = function(elm, obj) {
				jQuery.each(obj, function(k, v) {
					elm.append(jQuery('<dt></dt>').text(k));
					if (typeof v === 'undefined') {
						elm.append(jQuery('<dd></dd>').append(jQuery('<span></span>').text('undfined')));
					} else if (typeof v === 'object' && !v) {
						elm.append(jQuery('<dd></dd>').append(jQuery('<span></span>').text('null')));
					} else if (typeof v === 'object' && (jQuery.isPlainObject(v) || v.length)) {
						elm.append( jQuery('<dd></dd>').append(render(jQuery('<dl></dl>'), v)));
					} else {
						elm.append(jQuery('<dd></dd>').append(jQuery('<span></span>').text((v && typeof v === 'object')? '[]' : (v? v : '""'))));
					}
				});
				return elm;
			},
			cnt = debugUL.children('li').length,
			targetL, target, tabId,
			info, lastUL, lastDIV;
			
			if (self.debug.options || self.debug.debug) {
				if (cnt >= 5) {
					lastUL = debugUL.children('li:last');
					lastDIV = debugDIV.children('div:last');
					if (lastDIV.is(':hidden')) {
						lastUL.remove();
						lastDIV.remove();
					} else {
						lastUL.prev().remove();
						lastDIV.prev().remove();
					}
				}
				
				tabId = fm.namespace + '-help-debug-' + (+new Date());
				targetL = jQuery('<li></li>').html('<a href="'+selfUrl+'#'+tabId+'">'+self.debug.debug.cmd+'</a>').prependTo(debugUL);
				target = jQuery('<div id="'+tabId+'"></div>').data('debug', self.debug);
				
				targetL.on('click.debugrender', function() {
					var debug = target.data('debug');
					target.removeData('debug');
					if (debug) {
						target.hide();
						if (debug.debug) {
							info = jQuery('<fieldset>').append(jQuery('<legend></legend>').text('debug'), render(jQuery('<dl></dl>'), debug.debug));
							target.append(info);
						}
						if (debug.options) {
							info = jQuery('<fieldset>').append(jQuery('<legend></legend>').text('options'), render(jQuery('<dl></dl>'), debug.options));
							target.append(info);
						}
						target.show();
					}
					targetL.off('click.debugrender');
				});
				
				debugUL.after(target);
				
				opened && debugDIV.tabs('refresh');
			}
		},
		content = '',
		opened, tabInteg, integDIV, tabDebug, debugDIV, debugUL;
	
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.state = -1;
	
	this.shortcuts = [{
		pattern     : 'f1',
		description : this.title
	}];
	
	fm.bind('load', function() {
		var parts = self.options.view || ['about', 'shortcuts', 'help', 'integrations', 'debug'],
			i, helpSource, tabBase, tabNav, tabs, delta;
		
		// remove 'preference' tab, it moved to command 'preference'
		if ((i = jQuery.inArray('preference', parts)) !== -1) {
			parts.splice(i, 1);
		}
		
		// debug tab require jQueryUI Tabs Widget
		if (! jQuery.fn.tabs) {
			if ((i = jQuery.inArray(parts, 'debug')) !== -1) {
				parts.splice(i, 1);
			}
		}
		
		jQuery.each(parts, function(i, title) {
			html.push(tab[r](/\{id\}/g, title)[r](/\{title\}/, fm.i18n(title)));
		});
		
		html.push('</ul>');

		jQuery.inArray('about', parts) !== -1 && about();
		jQuery.inArray('shortcuts', parts) !== -1 && shortcuts();
		if (jQuery.inArray('help', parts) !== -1) {
			helpSource = fm.i18nBaseUrl + 'help/%s.html.js';
			help();
		}
		jQuery.inArray('integrations', parts) !== -1 && integrations();
		jQuery.inArray('debug', parts) !== -1 && debug();
		
		html.push('</div>');
		content = jQuery(html.join(''));
		
		content.find('.ui-tabs-nav li')
			.on('mouseenter mouseleave', function(e) {
				jQuery(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
			})
			.on('focus blur', 'a', function(e) {
				jQuery(e.delegateTarget).toggleClass('ui-state-focus', e.type === 'focusin');
			})
			.children()
			.on('click', function(e) {
				var link = jQuery(this);
				
				e.preventDefault();
				e.stopPropagation();
				
				link.parent().addClass(clTabActive).siblings().removeClass(clTabActive);
				content.children('.ui-tabs-panel').hide().filter(link.attr('href')).show();
			})
			.filter(':first').trigger('click');
		
		if (useInteg) {
			tabInteg = content.find('.elfinder-help-tab-integrations').hide();
			integDIV = content.find('#'+fm.namespace+'-help-integrations').hide().append(jQuery('<div class="elfinder-help-integrations-desc"></div>').html(fm.i18n('integrationWith')));
			fm.bind('helpIntegration', function(e) {
				var ul = integDIV.children('ul:first'),
					data, elm, cmdUL, cmdCls;
				if (e.data) {
					if (jQuery.isPlainObject(e.data)) {
						data = Object.assign({
							link: '',
							title: '',
							banner: ''
						}, e.data);
						if (data.title || data.link) {
							if (!data.title) {
								data.title = data.link;
							}
							if (data.link) {
								elm = jQuery('<a></a>').attr('href', data.link).attr('target', '_blank').text(data.title);
							} else {
								elm = jQuery('<span></span>').text(data.title);
							}
							if (data.banner) {
								elm = jQuery('<span></span>').append(jQuery('<img/>').attr(data.banner), elm);
							}
						}
					} else {
						elm = jQuery(e.data);
						elm.filter('a').each(function() {
							var tgt = jQuery(this);
							if (!tgt.attr('target')) {
								tgt.attr('target', '_blank');;
							}
						});
					}
					if (elm) {
						tabInteg.show();
						if (!ul.length) {
							ul = jQuery('<ul class="elfinder-help-integrations"></ul>').appendTo(integDIV);
						}
						if (data && data.cmd) {
							cmdCls = 'elfinder-help-integration-' + data.cmd;
							cmdUL = ul.find('ul.' + cmdCls);
							if (!cmdUL.length) {
								cmdUL = jQuery('<ul class="'+cmdCls+'"></ul>');
								ul.append(jQuery('<li></li>').append(jQuery('<span></span>').html(fm.i18n('cmd'+data.cmd))).append(cmdUL));
							}
							elm = cmdUL.append(jQuery('<li></li>').append(elm));
						} else {
							ul.append(jQuery('<li></li>').append(elm));
						}
					}
				}
			}).bind('themechange', function() {
				content.find('div.elfinder-help-term-theme').replaceWith(getTheme());
			});
		}

		// debug
		if (useDebug) {
			tabDebug = content.find('.elfinder-help-tab-debug').hide();
			debugDIV = content.find('#'+fm.namespace+'-help-debug').children('div:first');
			debugUL = debugDIV.children('ul:first').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
			});

			self.debug = {};
	
			fm.bind('backenddebug', function(e) {
				// CAUTION: DO NOT TOUCH `e.data`
				if (useDebug && e.data && e.data.debug) {
					self.debug = { options : e.data.options, debug : Object.assign({ cmd : fm.currentReqCmd }, e.data.debug) };
					if (self.dialog) {
						debugRender();
					}
				}
			});
		}

		content.find('#'+fm.namespace+'-help-about').find('.apiver').text(fm.api);
		self.dialog = self.fmDialog(content, {
				title : self.title,
				width : 530,
				maxWidth: 'window',
				maxHeight: 'window',
				autoOpen : false,
				destroyOnClose : false,
				close : function() {
					if (useDebug) {
						tabDebug.hide();
						debugDIV.tabs('destroy');
					}
					opened = false;
				}
			})
			.on('click', function(e) {
				e.stopPropagation();
			})
			.css({
				overflow: 'hidden'
			});
		
		tabBase = self.dialog.children('.ui-tabs');
		tabNav = tabBase.children('.ui-tabs-nav:first');
		tabs = tabBase.children('.ui-tabs-panel');
		delta = self.dialog.outerHeight(true) - self.dialog.height();
		self.dialog.closest('.ui-dialog').on('resize', function() {
			tabs.height(self.dialog.height() - delta - tabNav.outerHeight(true) - 20);
		});
		
		if (helpSource) {
			self.dialog.one('initContents', function() {
				jQuery.ajax({
					url: self.options.helpSource? self.options.helpSource : helpSource.replace('%s', fm.lang),
					dataType: 'html'
				}).done(function(source) {
					jQuery('#'+fm.namespace+'-help-help').html(source);
				}).fail(function() {
					jQuery.ajax({
						url: helpSource.replace('%s', 'en'),
						dataType: 'html'
					}).done(function(source) {
						jQuery('#'+fm.namespace+'-help-help').html(source);
					});
				});
			});
		}
		
		self.state = 0;

		fm.trigger('helpBuilded', self.dialog);
	}).one('open', function() {
		var debug = false;
		fm.one('backenddebug', function() {
			debug =true;
		}).one('opendone', function() {
			requestAnimationFrame(function() {
				if (! debug && useDebug) {
					useDebug = false;
					tabDebug.hide();
					debugDIV.hide();
					debugUL.hide();
				}
			});
		});
	});
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(sel, opts) {
		var tab = opts? opts.tab : void(0),
			debugShow = function() {
				if (useDebug) {
					debugDIV.tabs();
					debugUL.find('a:first').trigger('click');
					tabDebug.show();
					opened = true;
				}
			};
		debugShow();
		this.dialog.trigger('initContents').elfinderdialog('open').find((tab? '.elfinder-help-tab-'+tab : '.ui-tabs-nav li') + ' a:first').trigger('click');
		return jQuery.Deferred().resolve();
	};

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/hidden.js000064400000000424147361034410011323 0ustar00/**
 * @class  elFinder command "hidden"
 * Always hidden command for uiCmdMap
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.hidden = function() {
	"use strict";
	this.hidden = true;
	this.updateOnSelect = false;
	this.getstate = function() {
		return -1;
	};
};lib/js/commands/getfile.js000064400000010103147361034410011502 0ustar00/**
 * @class elFinder command "getfile". 
 * Return selected files info into outer callback.
 * For use elFinder with wysiwyg editors etc.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
 (elFinder.prototype.commands.getfile = function() {
	"use strict";
	var self   = this,
		fm     = this.fm,
		filter = function(files) {
			var o = self.options,
				fres = true;

			files = jQuery.grep(files, function(file) {
				fres = fres && (file.mime != 'directory' || o.folders) && file.read ? true : false;
				return fres;
			});

			return o.multiple || files.length == 1 ? files : [];
		};
	
	this.alwaysEnabled = true;
	this.callback      = fm.options.getFileCallback;
	this._disabled     = typeof(this.callback) == 'function';
	
	this.getstate = function(select) {
		var sel = this.files(select),
			cnt = sel.length;
			
		return this.callback && cnt && filter(sel).length == cnt ? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm    = this.fm,
			opts  = this.options,
			files = this.files(hashes),
			cnt   = files.length,
			url   = fm.option('url'),
			tmb   = fm.option('tmbUrl'),
			dfrd  = jQuery.Deferred()
				.done(function(data) {
					var res,
						done = function() {
							if (opts.oncomplete == 'close') {
								fm.hide();
							} else if (opts.oncomplete == 'destroy') {
								fm.destroy();
							}
						},
						fail = function(error) {
							if (opts.onerror == 'close') {
								fm.hide();
							} else if (opts.onerror == 'destroy') {
								fm.destroy();
							} else {
								error && fm.error(error);
							}
						};
					
					fm.trigger('getfile', {files : data});
					
					try {
						res = self.callback(data, fm);
					} catch(e) {
						fail(['Error in `getFileCallback`.', e.message]);
						return;
					}
					
					if (typeof res === 'object' && typeof res.done === 'function') {
						res.done(done).fail(fail);
					} else {
						done();
					}
				}),
			result = function(file) {
				return opts.onlyURL
					? opts.multiple ? jQuery.map(files, function(f) { return f.url; }) : files[0].url
					: opts.multiple ? files : files[0];
			},
			req = [], 
			i, file, dim;

		for (i = 0; i < cnt; i++) {
			file = files[i];
			if (file.mime == 'directory' && !opts.folders) {
				return dfrd.reject();
			}
			file.baseUrl = url;
			if (file.url == '1') {
				req.push(fm.request({
					data : {cmd : 'url', target : file.hash},
					notify : {type : 'url', cnt : 1, hideCnt : true},
					preventDefault : true
				})
				.done(function(data) {
					if (data.url) {
						var rfile = fm.file(this.hash);
						rfile.url = this.url = data.url;
					}
				}.bind(file)));
			} else {
				file.url = fm.url(file.hash);
			}
			if (! opts.onlyURL) {
				if (opts.getPath) {
					file.path = fm.path(file.hash);
					if (file.path === '' && file.phash) {
						// get parents
						(function() {
							var dfd  = jQuery.Deferred();
							req.push(dfd);
							fm.path(file.hash, false, {})
								.done(function(path) {
									file.path = path;
								})
								.fail(function() {
									file.path = '';
								})
								.always(function() {
									dfd.resolve();
								});
						})();
					}
				}
				if (file.tmb && file.tmb != 1) {
					file.tmb = tmb + file.tmb;
				}
				if (!file.width && !file.height) {
					if (file.dim) {
						dim = file.dim.split('x');
						file.width = dim[0];
						file.height = dim[1];
					} else if (opts.getImgSize && file.mime.indexOf('image') !== -1) {
						req.push(fm.request({
							data : {cmd : 'dim', target : file.hash},
							notify : {type : 'dim', cnt : 1, hideCnt : true},
							preventDefault : true
						})
						.done(function(data) {
							if (data.dim) {
								var dim = data.dim.split('x');
								var rfile = fm.file(this.hash);
								rfile.width = this.width = dim[0];
								rfile.height = this.height = dim[1];
							}
						}.bind(file)));
					}
				}
			}
		}
		
		if (req.length) {
			jQuery.when.apply(null, req).always(function() {
				dfrd.resolve(result(files));
			});
			return dfrd;
		}
		
		return dfrd.resolve(result(files));
	};

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/home.js000064400000001020147361034410011011 0ustar00(elFinder.prototype.commands.home = function() {
	"use strict";
	this.title = 'Home';
	this.alwaysEnabled  = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'ctrl+home ctrl+shift+up',
		description : 'Home'
	}];
	
	this.getstate = function() {
		var root = this.fm.root(),
			cwd  = this.fm.cwd().hash;
			
		return root && cwd && root != cwd ? 0: -1;
	};
	
	this.exec = function() {
		return this.fm.exec('open', this.fm.root());
	};
	

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/up.js000064400000001306147361034410010514 0ustar00/**
 * @class  elFinder command "up"
 * Go into parent directory
 *
 * @author Dmitry (dio) Levashov
 **/
(elFinder.prototype.commands.up = function() {
	"use strict";
	this.alwaysEnabled = true;
	this.updateOnSelect = false;
	
	this.shortcuts = [{
		pattern     : 'ctrl+up'
	}];
	
	this.getstate = function() {
		return this.fm.cwd().phash ? 0 : -1;
	};
	
	this.exec = function() {
		var fm = this.fm,
			cwdhash = fm.cwd().hash;
		return this.fm.cwd().phash ? this.fm.exec('open', this.fm.cwd().phash).done(function() {
			fm.one('opendone', function() {
				fm.selectfiles({files : [cwdhash]});
			});
		}) : jQuery.Deferred().reject();
	};

}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/info.js000064400000032207147361034410011027 0ustar00/**
 * @class elFinder command "info". 
 * Display dialog with file properties.
 *
 * @author Dmitry (dio) Levashov, dio@std42.ru
 **/
 (elFinder.prototype.commands.info = function() {
	"use strict";
	var m   = 'msg',
		fm  = this.fm,
		spclass = 'elfinder-spinner',
		btnclass = 'elfinder-info-button',
		msg = {
			calc     : fm.i18n('calc'),
			size     : fm.i18n('size'),
			unknown  : fm.i18n('unknown'),
			path     : fm.i18n('path'),
			aliasfor : fm.i18n('aliasfor'),
			modify   : fm.i18n('modify'),
			perms    : fm.i18n('perms'),
			locked   : fm.i18n('locked'),
			dim      : fm.i18n('dim'),
			kind     : fm.i18n('kind'),
			files    : fm.i18n('files'),
			folders  : fm.i18n('folders'),
			roots    : fm.i18n('volumeRoots'),
			items    : fm.i18n('items'),
			yes      : fm.i18n('yes'),
			no       : fm.i18n('no'),
			link     : fm.i18n('link'),
			owner    : fm.i18n('owner'),
			group    : fm.i18n('group'),
			perm     : fm.i18n('perm'),
			getlink  : fm.i18n('getLink'),
			share    : fm.i18n('getShareText')
		},
		applyZWSP = function(str, remove) {
			if (remove) {
				return str.replace(/\u200B/g, '');
			} else {
				return str.replace(/(\/|\\)/g, "$1\u200B");
			}
		};
	
	this.items = ['size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm'];
	if (this.options.custom && Object.keys(this.options.custom).length) {
		jQuery.each(this.options.custom, function(name, details) {
			details.label && this.items.push(details.label);
		});
	}

	this.tpl = {
		main       : '<div class="ui-helper-clearfix elfinder-info-title {dirclass}"><span class="elfinder-cwd-icon {class} ui-corner-all"{style}></span>{title}</div><table class="elfinder-info-tb">{content}</table>',
		itemTitle  : '<strong>{name}</strong><span class="elfinder-info-kind">{kind}</span>',
		groupTitle : '<strong>{items}: {num}</strong>',
		row        : '<tr><td class="elfinder-info-label">{label} : </td><td class="{class}">{value}</td></tr>',
		spinner    : '<span>{text}</span> <span class="'+spclass+' '+spclass+'-{name}"></span>'
	};
	
	this.alwaysEnabled = true;
	this.updateOnSelect = false;
	this.shortcuts = [{
		pattern     : 'ctrl+i'
	}];
	
	this.init = function() {
		jQuery.each(msg, function(k, v) {
			msg[k] = fm.i18n(v);
		});
	};
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(hashes) {
		var files   = this.files(hashes);
		if (! files.length) {
			files   = this.files([ this.fm.cwd().hash ]);
		}
		var self    = this,
			fm      = this.fm,
			o       = this.options,
			tpl     = this.tpl,
			row     = tpl.row,
			cnt     = files.length,
			content = [],
			view    = tpl.main,
			l       = '{label}',
			v       = '{value}',
			reqs    = [],
			reqDfrd = null,
			opts    = {
				title : fm.i18n('selectionInfo'),
				width : 'auto',
				close : function() {
					jQuery(this).elfinderdialog('destroy');
					if (reqDfrd && reqDfrd.state() === 'pending') {
						reqDfrd.reject();
					}
					jQuery.grep(reqs, function(r) {
						r && r.state() === 'pending' && r.reject();
					});
				}
			},
			count = [],
			replSpinner = function(msg, name, className) {
				dialog.find('.'+spclass+'-'+name).parent().html(msg).addClass(className || '');
			},
			id = fm.namespace+'-info-'+jQuery.map(files, function(f) { return f.hash; }).join('-'),
			dialog = fm.getUI().find('#'+id),
			customActions = [],
			style = '',
			hashClass = 'elfinder-font-mono elfinder-info-hash',
			getHashAlgorisms = [],
			ndialog  = fm.ui.notify,
			size, tmb, file, title, dcnt, rdcnt, path, hideItems, hashProg;

		if (ndialog.is(':hidden') && ndialog.children('.elfinder-notify').length) {
			ndialog.elfinderdialog('open').height('auto');
		}

		if (!cnt) {
			return jQuery.Deferred().reject();
		}
			
		if (dialog.length) {
			dialog.elfinderdialog('toTop');
			return jQuery.Deferred().resolve();
		}
		
		hideItems = fm.storage('infohides') || fm.arrayFlip(o.hideItems, true);

		if (cnt === 1) {
			file = files[0];
			
			if (file.icon) {
				style = ' '+fm.getIconStyle(file);
			}
			
			view  = view.replace('{dirclass}', file.csscls? fm.escape(file.csscls) : '').replace('{class}', fm.mime2class(file.mime)).replace('{style}', style);
			title = tpl.itemTitle.replace('{name}', fm.escape(file.i18 || file.name)).replace('{kind}', '<span title="'+fm.escape(file.mime)+'">'+fm.mime2kind(file)+'</span>');

			tmb = fm.tmb(file);
			
			if (!file.read) {
				size = msg.unknown;
			} else if (file.mime != 'directory' || file.alias) {
				size = fm.formatSize(file.size);
			} else {
				size = tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size');
				count.push(file.hash);
			}
			
			!hideItems.size && content.push(row.replace(l, msg.size).replace(v, size));
			!hideItems.aleasfor && file.alias && content.push(row.replace(l, msg.aliasfor).replace(v, file.alias));
			if (!hideItems.path) {
				if (path = fm.path(file.hash, true)) {
					content.push(row.replace(l, msg.path).replace(v, applyZWSP(fm.escape(path))).replace('{class}', 'elfinder-info-path'));
				} else {
					content.push(row.replace(l, msg.path).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'path')).replace('{class}', 'elfinder-info-path'));
					reqs.push(fm.path(file.hash, true, {notify: null})
					.fail(function() {
						replSpinner(msg.unknown, 'path');
					})
					.done(function(path) {
						replSpinner(applyZWSP(path), 'path');
					}));
				}
			}
			if (!hideItems.link && file.read) {
				var href,
				name_esc = fm.escape(file.name);
				if (file.url == '1') {
					content.push(row.replace(l, msg.link).replace(v, '<button class="'+btnclass+' '+spclass+'-url">'+msg.getlink+'</button>'));
				} else {
					msg.share =  msg.share == undefined ? 'Share' : msg.share;
					if (file.url) {
						href = file.url;
					} else if (file.mime === 'directory') {
						if (o.nullUrlDirLinkSelf && file.url === null) {
							var loc = window.location;
							href = loc.pathname + loc.search + '#elf_' + file.hash;
						} else if (file.url !== '' && fm.option('url', (!fm.isRoot(file) && file.phash) || file.hash)) {
							href = fm.url(file.hash);
						}
					} else {
						href = fm.url(file.hash);
						var network_href = fm_get_network_url();
						if(network_href) {
							var filename = href.substring(href.lastIndexOf('/') + 1);
							href = network_href+filename;
						}					
					}
					href && content.push(row.replace(l, msg.link).replace(v,  '<a href="'+href+'" target="_blank">'+name_esc+'</a>'));
				}
			}
			
			if (!hideItems.dim) {
				if (file.dim) { // old api
					content.push(row.replace(l, msg.dim).replace(v, file.dim));
				} else if (file.mime.indexOf('image') !== -1) {
					if (file.width && file.height) {
						content.push(row.replace(l, msg.dim).replace(v, file.width+'x'+file.height));
					} else if (file.size && file.size !== '0') {
						content.push(row.replace(l, msg.dim).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'dim')));
						reqs.push(fm.request({
							data : {cmd : 'dim', target : file.hash},
							preventDefault : true
						})
						.fail(function() {
							replSpinner(msg.unknown, 'dim');
						})
						.done(function(data) {
							replSpinner(data.dim || msg.unknown, 'dim');
							if (data.dim) {
								var dim = data.dim.split('x');
								var rfile = fm.file(file.hash);
								rfile.width = dim[0];
								rfile.height = dim[1];
							}
						}));
					}
				}
			}
			
			!hideItems.modify && content.push(row.replace(l, msg.modify).replace(v, fm.formatDate(file)));
			//!hideItems.perms && content.push(row.replace(l, msg.perms).replace(v, fm.formatPermissions(file)));
			!hideItems.locked && content.push(row.replace(l, msg.locked).replace(v, file.locked ? msg.yes : msg.no));
			!hideItems.owner && file.owner && content.push(row.replace(l, msg.owner).replace(v, file.owner));
			!hideItems.group && file.group && content.push(row.replace(l, msg.group).replace(v, file.group));
			!hideItems.perm && file.perm && content.push(row.replace(l, msg.perm).replace(v, fm.formatFileMode(file.perm)));
			
			// Get MD5, SHA hashes
			// if (window.ArrayBuffer && (fm.options.cdns.sparkmd5 || fm.options.cdns.jssha) && file.mime !== 'directory' && file.size > 0 && (!o.showHashMaxsize || file.size <= o.showHashMaxsize)) {
			// 	getHashAlgorisms = [];
			// 	jQuery.each(fm.storage('hashchekcer') || o.showHashAlgorisms, function(i, n) {
			// 		if (!file[n]) {
			// 			content.push(row.replace(l, fm.i18n(n)).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', n)));
			// 			getHashAlgorisms.push(n);
			// 		} else {
			// 			content.push(row.replace(l, fm.i18n(n)).replace(v, file[n]).replace('{class}', hashClass));
			// 		}
			// 	});

			// 	if (getHashAlgorisms.length) {
			// 		hashProg = jQuery('<div class="elfinder-quicklook-info-progress"></div>');
			// 		reqs.push(
			// 			fm.getContentsHashes(file.hash, getHashAlgorisms, o.showHashOpts, { progressBar : hashProg }).progress(function(hashes) {
			// 				jQuery.each(getHashAlgorisms, function(i, n) {
			// 					if (hashes[n]) {
			// 						replSpinner(hashes[n], n, hashClass);
			// 					}
			// 				});
			// 			}).always(function() {
			// 				jQuery.each(getHashAlgorisms, function(i, n) {
			// 					replSpinner(msg.unknown, n);
			// 				});
			// 			})
			// 		);
			// 	}
			// }
			
			// Add custom info fields
			if (o.custom) {
				jQuery.each(o.custom, function(name, details) {
					if (
					  !hideItems[details.label]
					    &&
					  (!details.mimes || jQuery.grep(details.mimes, function(m){return (file.mime === m || file.mime.indexOf(m+'/') === 0)? true : false;}).length)
					    &&
					  (!details.hashRegex || file.hash.match(details.hashRegex))
					) {
						// Add to the content
						content.push(row.replace(l, fm.i18n(details.label)).replace(v , details.tpl.replace('{id}', id)));
						// Register the action
						if (details.action && (typeof details.action == 'function')) {
							customActions.push(details.action);
						}
					}
				});
			}
		} else {
			view  = view.replace('{class}', 'elfinder-cwd-icon-group');
			title = tpl.groupTitle.replace('{items}', msg.items).replace('{num}', cnt);
			dcnt  = jQuery.grep(files, function(f) { return f.mime == 'directory' ? true : false ; }).length;
			if (!dcnt) {
				size = 0;
				jQuery.each(files, function(h, f) { 
					var s = parseInt(f.size);
					
					if (s >= 0 && size >= 0) {
						size += s;
					} else {
						size = 'unknown';
					}
				});
				content.push(row.replace(l, msg.kind).replace(v, msg.files));
				!hideItems.size && content.push(row.replace(l, msg.size).replace(v, fm.formatSize(size)));
			} else {
				rdcnt = jQuery.grep(files, function(f) { return f.mime === 'directory' && (! f.phash || f.isroot)? true : false ; }).length;
				dcnt -= rdcnt;
				content.push(row.replace(l, msg.kind).replace(v, (rdcnt === cnt || dcnt === cnt)? msg[rdcnt? 'roots' : 'folders'] : jQuery.map({roots: rdcnt, folders: dcnt, files: cnt - rdcnt - dcnt}, function(c, t) { return c? msg[t]+' '+c : null; }).join(', ')));
				!hideItems.size && content.push(row.replace(l, msg.size).replace(v, tpl.spinner.replace('{text}', msg.calc).replace('{name}', 'size')));
				count = jQuery.map(files, function(f) { return f.hash; });
				
			}
		}
		
		view = view.replace('{title}', title).replace('{content}', content.join('').replace(/{class}/g, ''));
		
		dialog = self.fmDialog(view, opts);
		dialog.attr('id', id).one('mousedown', '.elfinder-info-path', function() {
			jQuery(this).html(applyZWSP(jQuery(this).html(), true));
		});

		if (getHashAlgorisms.length) {
			hashProg.appendTo(dialog.find('.'+spclass+'-'+getHashAlgorisms[0]).parent());
		}

		if (fm.UA.Mobile && jQuery.fn.tooltip) {
			dialog.children('.ui-dialog-content .elfinder-info-title').tooltip({
				classes: {
					'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
				},
				tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
				track: true
			});
		}

		if (file && file.url == '1') {
			dialog.on('click', '.'+spclass+'-url', function(){
				jQuery(this).parent().html(tpl.spinner.replace('{text}', fm.i18n('ntfurl')).replace('{name}', 'url'));
				fm.request({
					data : {cmd : 'url', target : file.hash},
					preventDefault : true
				})
				.fail(function() {
					replSpinner(name_esc, 'url');
				})
				.done(function(data) {
					if (data.url) {
						replSpinner('<a href="'+data.url+'" target="_blank">'+name_esc+'</a>' || name_esc, 'url');
						var rfile = fm.file(file.hash);
						rfile.url = data.url;
					} else {
						replSpinner(name_esc, 'url');
					}
				});
			});
		}

		// load thumbnail
		if (tmb) {
			jQuery('<img/>')
				.on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); })
				.attr('src', tmb.url);
		}
		
		// send request to count total size
		if (count.length) {
			reqDfrd = fm.getSize(count).done(function(data) {
				replSpinner(data.formated, 'size');
			}).fail(function() {
				replSpinner(msg.unknown, 'size');
			});
		}
		
		// call custom actions
		if (customActions.length) {
			jQuery.each(customActions, function(i, action) {
				try {
					action(file, fm, dialog);
				} catch(e) {
					fm.debug('error', e);
				}
			});
		}
		
		return jQuery.Deferred().resolve();
	};
	
}).prototype = { forceLoad : true }; // this is required command
lib/js/commands/preference.js000064400000052570147361034410012217 0ustar00/**
 * @class  elFinder command "preference"
 * "Preference" dialog
 *
 * @author Naoki Sawada
 **/
elFinder.prototype.commands.preference = function() {
	var self    = this,
		fm      = this.fm,
		r       = 'replace',
		tab     = '<li class="' + fm.res('class', 'tabstab') + ' elfinder-preference-tab-{id}"><a href="#'+fm.namespace+'-preference-{id}" id="'+fm.namespace+'-preference-tab-{id}" class="ui-tabs-anchor {class}">{title}</a></li>',
		base    = jQuery('<div class="ui-tabs ui-widget ui-widget-content ui-corner-all elfinder-preference">'), 
		ul      = jQuery('<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-top">'),
		tabs    = jQuery('<div class="elfinder-preference-tabs ui-tabs-panel ui-widget-content ui-corner-bottom"></div>'),
		sep     = '<div class="elfinder-preference-separator"></div>',
		selfUrl = jQuery('base').length? document.location.href.replace(/#.*$/, '') : '',
		selectTab = function(tab) {
			jQuery('#'+fm.namespace+'-preference-tab-'+tab).trigger('mouseover').trigger('click');
			openTab = tab;
		},
		clTabActive = fm.res('class', 'tabsactive'),
		build   = function() {
			var cats = self.options.categories || {
					'language' : ['language'],
					'theme' : ['theme'],
					'toolbar' : ['toolbarPref'],
					'workspace' : ['iconSize','columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'useFullscreen', 'showHidden'],
					'dialog' : ['autoFocusDialog'],
					'selectionInfo' : ['infoItems', 'hashChecker'],
					'reset' : ['clearBrowserData'],
					'all' : true
				},
				forms = self.options.prefs || ['language', 'theme', 'toolbarPref', 'iconSize', 'columnPref', 'selectAction', 'makefileTypes', 'useStoredEditor', 'editorMaximized', 'useFullscreen', 'showHidden', 'infoItems', 'hashChecker', 'autoFocusDialog', 'clearBrowserData'];
			
			if (!fm.cookieEnabled) {
				delete cats.language;
			}

			forms = fm.arrayFlip(forms, true);
			
			if (fm.options.getFileCallback) {
				delete forms.selectAction;
			}
			if (!fm.UA.Fullscreen) {
				delete forms.useFullscreen;
			}

			forms.language && (forms.language = (function() {
				var langSel = jQuery('<select></select>').on('change', function() {
						var lang = jQuery(this).val();
						fm.storage('lang', lang);
						jQuery('#'+fm.id).elfinder('reload');
					}),
					optTags = [],
					langs = self.options.langs || {
						ar: 'العربية',
						bg: 'Български',
						ca: 'Català',
						cs: 'Čeština',
						da: 'Dansk',
						de: 'Deutsch',
						el: 'Ελληνικά',
						en: 'English',
						es: 'Español',
						fa: 'فارسی',
						fo: 'Føroyskt',
						fr: 'Français',
						fr_CA: 'Français (Canada)',
						he: 'עברית',
						hr: 'Hrvatski',
						hu: 'Magyar',
						id: 'Bahasa Indonesia',
						it: 'Italiano',
						ja: '日本語',
						ko: '한국어',
						nl: 'Nederlands',
						no: 'Norsk',
						//pl: 'Polski',
						pt_BR: 'Português',
						ro: 'Română',
						ru: 'Pусский',
						si: 'සිංහල',
						sk: 'Slovenčina',
						sl: 'Slovenščina',
						sr: 'Srpski',
						sv: 'Svenska',
						tr: 'Türkçe',
						ug_CN: 'ئۇيغۇرچە',
						uk: 'Український',
						vi: 'Tiếng Việt',
						zh_CN: '简体中文',
						zh_TW: '正體中文'
					};
				if (!fm.cookieEnabled) {
					return jQuery();
				}
				jQuery.each(langs, function(lang, name) {
					optTags.push('<option value="'+lang+'">'+name+'</option>');
				});
				return langSel.append(optTags.join('')).val(fm.lang);
			})());
			
			forms.theme && (forms.theme = (function() {
				var cnt = fm.options.themes? Object.keys(fm.options.themes).length : 0;
				if (cnt === 0 || (cnt === 1 && fm.options.themes.default)) {
					return null;
				}
				var themeSel = jQuery('<select></select>').on('change', function() {
						var theme = jQuery(this).val();
						fm.changeTheme(theme).storage('theme', theme);
					}),
					optTags = [],
					tpl = {
						image: '<img class="elfinder-preference-theme elfinder-preference-theme-image" src="$2" />',
						link: '<a href="$1" target="_blank" title="$3">$2</a>',
						data: '<dt>$1</dt><dd><span class="elfinder-preference-theme elfinder-preference-theme-$0">$2</span></dd>'
					},
					items = ['image', 'description', 'author', 'email', 'license'],
					render = function(key, data) {
					},
					defBtn = jQuery('<button class="ui-button ui-corner-all ui-widget elfinder-preference-theme-default"></button>').text(fm.i18n('default')).on('click', function(e) {
						themeSel.val('default').trigger('change');
					}),
					list = jQuery('<div class="elfinder-reference-hide-taball"></div>').on('click', 'button', function() {
							var val = jQuery(this).data('themeid');
							themeSel.val(val).trigger('change');
					});

				if (!fm.options.themes.default) {
					themeSel.append('<option value="default">'+fm.i18n('default')+'</option>');
				}
				jQuery.each(fm.options.themes, function(id, val) {
					var opt = jQuery('<option class="elfinder-theme-option-'+id+'" value="'+id+'">'+fm.i18n(id)+'</option>'),
						dsc = jQuery('<fieldset class="ui-widget ui-widget-content ui-corner-all elfinder-theme-list-'+id+'"><legend>'+fm.i18n(id)+'</legend><div><span class="elfinder-spinner"></span></div></fieldset>'),
						tm;
					themeSel.append(opt);
					list.append(dsc);
					tm = setTimeout(function() {
						dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id]));
					}, 10000);
					fm.getTheme(id).always(function() {
						tm && clearTimeout(tm);
					}).done(function(data) {
						var link, val = jQuery(), dl = jQuery('<dl></dl>');
						link = data.link? tpl.link.replace(/\$1/g, data.link).replace(/\$3/g, fm.i18n('website')) : '$2';
						if (data.name) {
							opt.html(fm.i18n(data.name));
						}
						dsc.children('legend').html(link.replace(/\$2/g, fm.i18n(data.name) || id));
						jQuery.each(items, function(i, key) {
							var t = tpl[key] || tpl.data,
								elm;
							if (data[key]) {
								elm = t.replace(/\$0/g, fm.escape(key)).replace(/\$1/g, fm.i18n(key)).replace(/\$2/g, fm.i18n(data[key]));
								if (key === 'image' && data.link) {
									elm = jQuery(elm).on('click', function() {
										themeSel.val(id).trigger('change');
									}).attr('title', fm.i18n('select'));
								}
								dl.append(elm);
							}
						});
						val = val.add(dl);
						val = val.add(jQuery('<div class="elfinder-preference-theme-btn"></div>').append(jQuery('<button class="ui-button ui-corner-all ui-widget"></button>').data('themeid', id).html(fm.i18n('select'))));
						dsc.find('span.elfinder-spinner').replaceWith(val);
					}).fail(function() {
						dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id]));
					});
				});
				return jQuery('<div></div>').append(themeSel.val(fm.theme && fm.theme.id? fm.theme.id : 'default'), defBtn, list);
			})());

			forms.toolbarPref && (forms.toolbarPref = (function() {
				var pnls = jQuery.map(fm.options.uiOptions.toolbar, function(v) {
						return jQuery.isArray(v)? v : null;
					}),
					tags = [],
					hides = fm.storage('toolbarhides') || {};
				jQuery.each(pnls, function() {
					var cmd = this,
						name = fm.i18n('cmd'+cmd);
					if (name === 'cmd'+cmd) {
						name = fm.i18n(cmd);
					}
					tags.push('<span class="elfinder-preference-toolbar-item"><label><input type="checkbox" value="'+cmd+'" '+(hides[cmd]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('toolbarhides', hides);
					fm.trigger('toolbarpref');
				});
			})());
			
			forms.iconSize && (forms.iconSize = (function() {
				var max = fm.options.uiOptions.cwd.iconsView.sizeMax || 3,
					size = fm.storage('iconsize') || fm.options.uiOptions.cwd.iconsView.size || 0,
					sld = jQuery('<div class="touch-punch"></div>').slider({
						classes: {
							'ui-slider-handle': 'elfinder-tabstop',
						},
						value: size,
						max: max,
						slide: function(e, ui) {
							fm.getUI('cwd').trigger('iconpref', {size: ui.value});
						},
						change: function(e, ui) {
							fm.storage('iconsize', ui.value);
						}
					});
				fm.getUI('cwd').on('iconpref', function(e, data) {
					sld.slider('option', 'value', data.size);
				});
				return sld;
			})());

			forms.columnPref && (forms.columnPref = (function() {
				var cols = fm.options.uiOptions.cwd.listView.columns,
					tags = [],
					hides = fm.storage('columnhides') || {};
				jQuery.each(cols, function() {
					var key = this,
						name = fm.getColumnName(key);
					tags.push('<span class="elfinder-preference-column-item"><label><input type="checkbox" value="'+key+'" '+(hides[key]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('columnhides', hides);
					fm.trigger('columnpref', { repaint: true });
				});
			})());
			
			forms.selectAction && (forms.selectAction = (function() {
				var actSel = jQuery('<select></select>').on('change', function() {
						var act = jQuery(this).val();
						fm.storage('selectAction', act === 'default'? null : act);
					}),
					optTags = [],
					acts = self.options.selectActions,
					defAct = fm.getCommand('open').options.selectAction || 'open';
				
				if (jQuery.inArray(defAct, acts) === -1) {
					acts.unshift(defAct);
				}
				jQuery.each(acts, function(i, act) {
					var names = jQuery.map(act.split('/'), function(cmd) {
						var name = fm.i18n('cmd'+cmd);
						if (name === 'cmd'+cmd) {
							name = fm.i18n(cmd);
						}
						return name;
					});
					optTags.push('<option value="'+act+'">'+names.join('/')+'</option>');
				});
				return actSel.append(optTags.join('')).val(fm.storage('selectAction') || defAct);
			})());
			
			forms.makefileTypes && (forms.makefileTypes = (function() {
				var hides = fm.getCommand('edit').getMkfileHides(),
					getTag = function() {
						var tags = [];
						// re-assign hides
						hides = fm.getCommand('edit').getMkfileHides();
						jQuery.each(fm.mimesCanMakeEmpty, function(mime, type) {
							var name = fm.getCommand('mkfile').getTypeName(mime, type);
							tags.push('<span class="elfinder-preference-column-item" title="'+fm.escape(name)+'"><label><input type="checkbox" value="'+mime+'" '+(hides[mime]? '' : 'checked')+'/>'+type+'</label></span>');
						});
						return tags.join(' ');
					},
					elm = jQuery('<div></div>').on('change', 'input', function() {
						var v = jQuery(this).val(),
							o = jQuery(this).is(':checked');
						if (!o && !hides[v]) {
							hides[v] = true;
						} else if (o && hides[v]) {
							delete hides[v];
						}
						fm.storage('mkfileHides', hides);
						fm.trigger('canMakeEmptyFile');
					}).append(getTag()),
					add = jQuery('<div></div>').append(
						jQuery('<input type="text" placeholder="'+fm.i18n('typeOfTextfile')+'"/>').on('keydown', function(e) {
							(e.keyCode === jQuery.ui.keyCode.ENTER) && jQuery(this).next().trigger('click');
						}),
						jQuery('<button class="ui-button"></button>').html(fm.i18n('add')).on('click', function() {
							var input = jQuery(this).prev(),
								val = input.val(),
								uiToast = fm.getUI('toast'),
								err = function() {
									uiToast.appendTo(input.closest('.ui-dialog'));
									fm.toast({
										msg: fm.i18n('errUsupportType'),
										mode: 'warning',
										onHidden: function() {
											uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
										}
									});
									input.trigger('focus');
									return false;
								},
								tmpMimes;
							if (!val.match(/\//)) {
								val = fm.arrayFlip(fm.mimeTypes)[val];
								if (!val) {
									return err();
								}
								input.val(val);
							}
							if (!fm.mimeIsText(val) || !fm.mimeTypes[val]) {
								return err();
							}
							fm.trigger('canMakeEmptyFile', {mimes: [val], unshift: true});
							tmpMimes = {};
							tmpMimes[val] = fm.mimeTypes[val];
							fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {}));
							input.val('');
							uiToast.appendTo(input.closest('.ui-dialog'));
							fm.toast({
								msg: fm.i18n(['complete', val + ' (' + tmpMimes[val] + ')']),
								onHidden: function() {
									uiToast.children().length === 1 && uiToast.appendTo(fm.getUI());
								}
							});
						}),
						jQuery('<button class="ui-button"></button>').html(fm.i18n('reset')).on('click', function() {
							fm.one('canMakeEmptyFile', {done: function() {
								elm.empty().append(getTag());
							}});
							fm.trigger('canMakeEmptyFile', {resetTexts: true});
						})
					),
					tm;
				fm.bind('canMakeEmptyFile', {done: function(e) {
					if (e.data && e.data.mimes && e.data.mimes.length) {
						elm.empty().append(getTag());
					}
				}});
				return jQuery('<div></div>').append(elm, add);
			})());

			forms.useStoredEditor && (forms.useStoredEditor = jQuery('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('useStoredEditor');
				return s? (s > 0) : fm.options.commandsOptions.edit.useStoredEditor;
			})()).on('change', function(e) {
				fm.storage('useStoredEditor', jQuery(this).is(':checked')? 1 : -1);
			}));

			forms.editorMaximized && (forms.editorMaximized = jQuery('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('editorMaximized');
				return s? (s > 0) : fm.options.commandsOptions.edit.editorMaximized;
			})()).on('change', function(e) {
				fm.storage('editorMaximized', jQuery(this).is(':checked')? 1 : -1);
			}));

			forms.useFullscreen && (forms.useFullscreen = jQuery('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('useFullscreen');
				return s? (s > 0) : fm.options.commandsOptions.fullscreen.mode === 'screen';
			})()).on('change', function(e) {
				fm.storage('useFullscreen', jQuery(this).is(':checked')? 1 : -1);
			}));

			if (forms.showHidden) {
				(function() {
					var setTitle = function() {
							var s = fm.storage('hide'),
								t = [],
								v;
							if (s && s.items) {
								jQuery.each(s.items, function(h, n) {
									t.push(fm.escape(n));
								});
							}
							elms.prop('disabled', !t.length)[t.length? 'removeClass' : 'addClass']('ui-state-disabled');
							v = t.length? t.join('\n') : '';
							forms.showHidden.attr('title',v);
							useTooltip && forms.showHidden.tooltip('option', 'content', v.replace(/\n/g, '<br>')).tooltip('close');
						},
						chk = jQuery('<input type="checkbox"/>').prop('checked', (function() {
							var s = fm.storage('hide');
							return s && s.show;
						})()).on('change', function(e) {
							var o = {};
							o[jQuery(this).is(':checked')? 'show' : 'hide'] = true;
							fm.exec('hide', void(0), o);
						}),
						btn = jQuery('<button class="ui-button ui-corner-all ui-widget"></button>').append(fm.i18n('reset')).on('click', function() {
							fm.exec('hide', void(0), {reset: true});
							jQuery(this).parent().find('input:first').prop('checked', false);
							setTitle();
						}),
						elms = jQuery().add(chk).add(btn),
						useTooltip;
					
					forms.showHidden = jQuery('<div></div>').append(chk, btn);
					fm.bind('hide', function(e) {
						var d = e.data;
						if (!d.opts || (!d.opts.show && !d.opts.hide)) {
							setTitle();
						}
					});
					if (fm.UA.Mobile && jQuery.fn.tooltip) {
						useTooltip = true;
						forms.showHidden.tooltip({
							classes: {
								'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow'
							},
							tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow',
							track: true
						}).css('user-select', 'none');
						btn.css('user-select', 'none');
					}
					setTitle();
				})();
			}
			
			forms.infoItems && (forms.infoItems = (function() {
				var items = fm.getCommand('info').items,
					tags = [],
					hides = fm.storage('infohides') || fm.arrayFlip(fm.options.commandsOptions.info.hideItems, true);
				jQuery.each(items, function() {
					var key = this,
						name = fm.i18n(key);
					tags.push('<span class="elfinder-preference-info-item"><label><input type="checkbox" value="'+key+'" '+(hides[key]? '' : 'checked')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (!o && !hides[v]) {
						hides[v] = true;
					} else if (o && hides[v]) {
						delete hides[v];
					}
					fm.storage('infohides', hides);
					fm.trigger('infopref', { repaint: true });
				});
			})());
			
			forms.hashChecker && fm.hashCheckers.length && (forms.hashChecker = (function() {
				var tags = [],
					enabled = fm.arrayFlip(fm.storage('hashchekcer') || fm.options.commandsOptions.info.showHashAlgorisms, true);
				jQuery.each(fm.hashCheckers, function() {
					var cmd = this,
						name = fm.i18n(cmd);
					tags.push('<span class="elfinder-preference-hashchecker-item"><label><input type="checkbox" value="'+cmd+'" '+(enabled[cmd]? 'checked' : '')+'/>'+name+'</label></span>');
				});
				return jQuery(tags.join(' ')).on('change', 'input', function() {
					var v = jQuery(this).val(),
						o = jQuery(this).is(':checked');
					if (o) {
						enabled[v] = true;
					} else if (enabled[v]) {
						delete enabled[v];
					}
					fm.storage('hashchekcer', jQuery.grep(fm.hashCheckers, function(v) {
						return enabled[v];
					}));
				});
			})());

			forms.autoFocusDialog && (forms.autoFocusDialog = jQuery('<input type="checkbox"/>').prop('checked', (function() {
				var s = fm.storage('autoFocusDialog');
				return s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver;
			})()).on('change', function(e) {
				fm.storage('autoFocusDialog', jQuery(this).is(':checked')? 1 : -1);
			}));
			
			forms.clearBrowserData && (forms.clearBrowserData = jQuery('<button></button>').text(fm.i18n('reset')).button().on('click', function(e) {
				e.preventDefault();
				fm.storage();
				jQuery('#'+fm.id).elfinder('reload');
			}));
			
			jQuery.each(cats, function(id, prefs) {
				var dls, found;
				if (prefs === true) {
					found = 1;
				} else if (prefs) {
					dls = jQuery();
					jQuery.each(prefs, function(i, n) {
						var f, title, chks = '', cbox;
						if (f = forms[n]) {
							found = 2;
							title = fm.i18n(n);
							cbox = jQuery(f).filter('input[type="checkbox"]');
							if (!cbox.length) {
								cbox = jQuery(f).find('input[type="checkbox"]');
							}
							if (cbox.length === 1) {
								if (!cbox.attr('id')) {
									cbox.attr('id', 'elfinder-preference-'+n+'-checkbox');
								}
								title = '<label for="'+cbox.attr('id')+'">'+title+'</label>';
							} else if (cbox.length > 1) {
								chks = ' elfinder-preference-checkboxes';
							}
							dls = dls.add(jQuery('<dt class="elfinder-preference-'+n+chks+'">'+title+'</dt>')).add(jQuery('<dd class="elfinder-preference-'+n+chks+'"></dd>').append(f));
						}
					});
				}
				if (found) {
					ul.append(tab[r](/\{id\}/g, id)[r](/\{title\}/, fm.i18n(id))[r](/\{class\}/, openTab === id? 'elfinder-focus' : ''));
					if (found === 2) {
						tabs.append(
							jQuery('<div id="'+fm.namespace+'-preference-'+id+'" class="elfinder-preference-content"></div>')
							.hide()
							.append(jQuery('<dl></dl>').append(dls))
						);
					}
				}
			});

			ul.on('click', 'a', function(e) {
				var t = jQuery(e.target),
					h = t.attr('href');
				e.preventDefault();
				e.stopPropagation();

				ul.children().removeClass(clTabActive);
				t.removeClass('ui-state-hover').parent().addClass(clTabActive);

				if (h.match(/all$/)) {
					tabs.addClass('elfinder-preference-taball').children().show();
				} else {
					tabs.removeClass('elfinder-preference-taball').children().hide();
					jQuery(h).show();
				}
			}).on('focus blur', 'a', function(e) {
				jQuery(this).parent().toggleClass('ui-state-focus', e.type === 'focusin');
			}).on('mouseenter mouseleave', 'li', function(e) {
				jQuery(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
			});

			tabs.find('a,input,select,button').addClass('elfinder-tabstop');
			base.append(ul, tabs);

			dialog = self.fmDialog(base, {
				title : self.title,
				width : self.options.width || 600,
				height: self.options.height || 400,
				maxWidth: 'window',
				maxHeight: 'window',
				autoOpen : false,
				destroyOnClose : false,
				allowMinimize : false,
				open : function() {
					openTab && selectTab(openTab);
					openTab = null;
				},
				resize : function() {
					tabs.height(dialog.height() - ul.outerHeight(true) - (tabs.outerHeight(true) - tabs.height()) - 5);
				}
			})
			.on('click', function(e) {
				e.stopPropagation();
			})
			.css({
				overflow: 'hidden'
			});

			dialog.closest('.ui-dialog')
			.css({
				overflow: 'hidden'
			})
			.addClass('elfinder-bg-translucent');
			
			openTab = 'all';
		},
		dialog, openTab;

	this.shortcuts = [{
		pattern     : 'ctrl+comma',
		description : this.title
	}];

	this.alwaysEnabled  = false;
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(sel, cOpts) {
		!dialog && build();
		if (cOpts) {
			if (cOpts.tab) {
				selectTab(cOpts.tab);
			} else if (cOpts._currentType === 'cwd') {
				selectTab('workspace');
			}
		}
		dialog.elfinderdialog('open');
		return jQuery.Deferred().resolve();
	};

};lib/js/commands/sort.js000064400000010505147361034410011060 0ustar00/**
 * @class  elFinder command "sort"
 * Change sort files rule
 *
 * @author Dmitry (dio) Levashov
 **/
elFinder.prototype.commands.sort = function() {
	"use strict";
	var self  = this,
		fm    = self.fm,
		setVar = function() {
			self.variants = [];
			jQuery.each(fm.sortRules, function(name, value) {
				if (fm.sorters[name]) {
					var arr = (name === fm.sortType)? (fm.sortOrder === 'asc'? 'n' : 's') : '';
					self.variants.push([name, (arr? '<span class="ui-icon ui-icon-arrowthick-1-'+arr+'"></span>' : '') + '&nbsp;' + fm.i18n('sort'+name)]);
				}
			});
			self.variants.push('|');
			self.variants.push([
				'stick',
				(fm.sortStickFolders? '<span class="ui-icon ui-icon-check"></span>' : '') + '&nbsp;' + fm.i18n('sortFoldersFirst')
			]);
			if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) {
				self.variants.push('|');
				self.variants.push([
					'tree',
					(fm.sortAlsoTreeview? '<span class="ui-icon ui-icon-check"></span>' : '') + '&nbsp;' + fm.i18n('sortAlsoTreeview')
				]);
			}
			updateContextmenu();
		},
		updateContextmenu = function() {
			var cm = fm.getUI('contextmenu'),
				icon, sub;
			if (cm.is(':visible')) {
				icon = cm.find('span.elfinder-button-icon-sort');
				sub = icon.siblings('div.elfinder-contextmenu-sub');
				sub.find('span.ui-icon').remove();
				sub.children('div.elfinder-contextsubmenu-item').each(function() {
					var tgt = jQuery(this).children('span'),
						name = tgt.text().trim(),
						arr;
					if (name === (i18Name.stick || (i18Name.stick = fm.i18n('sortFoldersFirst')))) {
						if (fm.sortStickFolders) {
							tgt.prepend('<span class="ui-icon ui-icon-check"></span>');
						}
					} else if (name === (i18Name.tree || (i18Name.tree = fm.i18n('sortAlsoTreeview')))) {
						if (fm.sortAlsoTreeview) {
							tgt.prepend('<span class="ui-icon ui-icon-check"></span>');
						}
					} else if (name === (i18Name[fm.sortType] || (i18Name[fm.sortType] = fm.i18n('sort' + fm.sortType)))) {
						arr = fm.sortOrder === 'asc'? 'n' : 's';
						tgt.prepend('<span class="ui-icon ui-icon-arrowthick-1-'+arr+'"></span>');
					}
				});
			}
		},
		i18Name = {};
	
	/**
	 * Command options
	 *
	 * @type  Object
	 */
	this.options = {ui : 'sortbutton'};
	
	this.keepContextmenu = true;

	fm.bind('sortchange', setVar)
	.bind('sorterupdate', function() {
		setVar();
		fm.getUI().children('.elfinder-button-sort-menu').children('.elfinder-button-menu-item').each(function() {
			var tgt = jQuery(this),
				rel = tgt.attr('rel');
			tgt.toggle(!!(! rel || fm.sorters[rel]));
		});
	})
	.bind('cwdrender', function() {
		var cols = jQuery(fm.cwd).find('div.elfinder-cwd-wrapper-list table');
		if (cols.length) {
			jQuery.each(fm.sortRules, function(name, value) {
				var td = cols.find('thead tr td.elfinder-cwd-view-th-'+name);
				if (td.length) {
					var current = ( name == fm.sortType),
					sort = {
						type  : name,
						order : current ? fm.sortOrder == 'asc' ? 'desc' : 'asc' : fm.sortOrder
					},arr;
					if (current) {
						td.addClass('ui-state-active');
						arr = fm.sortOrder == 'asc' ? 'n' : 's';
						jQuery('<span class="ui-icon ui-icon-triangle-1-'+arr+'"></span>').appendTo(td);
					}
					jQuery(td).on('click', function(e){
						if (! jQuery(this).data('dragging')) {
							e.stopPropagation();
							if (! fm.getUI('cwd').data('longtap')) {
								fm.exec('sort', [], sort);
							}
						}
					})
					.on('mouseenter mouseleave', function(e) {
						jQuery(this).toggleClass('ui-state-hover', e.type === 'mouseenter');
					});
				}
				
			});
		}
	});
	
	this.getstate = function() {
		return 0;
	};
	
	this.exec = function(hashes, cOpt) {
		var fm = this.fm,
			sortopt = jQuery.isPlainObject(cOpt)? cOpt : (function() {
				cOpt += '';
				var sOpts = {};
				if (cOpt === 'stick') {
					sOpts.stick = !fm.sortStickFolders;
				} else if (cOpt === 'tree') {
					sOpts.tree = !fm.sortAlsoTreeview;
				} else if (fm.sorters[cOpt]) {
					if (fm.sortType === cOpt) {
						sOpts.order = fm.sortOrder === 'asc'? 'desc' : 'asc';
					} else {
						sOpts.type = cOpt;
					}
				}
				return sOpts;
			})(),
			sort = Object.assign({
				type  : fm.sortType,
				order : fm.sortOrder,
				stick : fm.sortStickFolders,
				tree  : fm.sortAlsoTreeview
			}, sortopt);

		return fm.lazy(function() {
			fm.setSort(sort.type, sort.order, sort.stick, sort.tree);
			this.resolve();
		});
	};

};
lib/js/commands/opendir.js000064400000001566147361034410011540 0ustar00/**
 * @class  elFinder command "opendir"
 * Enter parent folder
 *
 * @author Naoki Sawada
 **/  
elFinder.prototype.commands.opendir = function() {
	"use strict";
	this.alwaysEnabled = true;
	
	this.getstate = function() {
		var sel = this.fm.selected(),
			cnt = sel.length,
			wz;
		if (cnt !== 1) {
			return -1;
		}
		wz = this.fm.getUI('workzone');
		return wz.hasClass('elfinder-search-result')? 0 : -1;
	};
	
	this.exec = function(hashes) {
		var fm    = this.fm,
			dfrd  = jQuery.Deferred(),
			files = this.files(hashes),
			cnt   = files.length,
			hash, pcheck = null;

		if (!cnt || !files[0].phash) {
			return dfrd.reject();
		}

		hash = files[0].phash;
		fm.trigger('searchend', { noupdate: true });
		fm.request({
			data   : {cmd  : 'open', target : hash},
			notify : {type : 'open', cnt : 1, hideCnt : true},
			syncOnFail : false
		});
		
		return dfrd;
	};

};
lib/files/.trash/.gitkeep000064400000000000147361034410011235 0ustar00lib/files/.gitkeep000064400000000000147361034410010036 0ustar00css/fm_custom_style.css000064400000014442147361034410011272 0ustar00.fmInnerWrap{
	background:#fff;
	border:1px solid #ddd;
	padding:30px;
	color:#404040;
	font-size:14px;
	font-family:Arial, Helvetica, sans-serif;
}
.fmInnerWrap p{
	color:#404040;
	font-size:14px;
	font-family:Arial, Helvetica, sans-serif;
}
.fmInnerWrap h3.mainHeading{
	color:#000;
	font-size:22px;
	line-height:30px;
	font-family:Arial, Helvetica, sans-serif;
	font-weight:700;
	margin:0;
	margin-bottom:25px;
	padding-bottom:15px;
	border-bottom:1px solid #ddd;
}
.fmInnerWrap h3.mainHeading .headingIcon{
	float:left;
	display:inline-block;
	margin-right:15px;
}
.fmInnerWrap .labelHeading{
	display:block;
	font-size:16px;
	line-height:24px;
	font-family:Arial, Helvetica, sans-serif;
	font-weight:700;
	margin-bottom:10px;
	color:#404040;
}
.fmInnerWrap .labelHeadingInline{
	display:inline-block;
	font-size:16px;
	font-family:Arial, Helvetica, sans-serif;
	font-weight:700;
	color:#404040;
}
.rootPageWrap .fmInnerWrap .codeTagEle .labelHeadingInline{
	margin-top: -3px;
}
.fmInnerWrap code{
	background:#ebebeb;
	padding:2px 5px;
	color:#404040;
	font-size:16px;
	line-height:24px;
	font-family:Arial, Helvetica, sans-serif;
	font-weight:300;
}
.fmInnerWrap input.fmInput {
	font-size: 16px;
	font-weight: 300;
	font-family: Arial, Helvetica, sans-serif;
	box-shadow: none;
	-webkit-box-shadow: none;
	border: 1px solid #ddd;
	padding: 10px 18px;
	color: #808080;
	height: inherit;
	line-height: inherit;
	width: 100%;
}
.fmInnerWrap .emText{
	font-style:italic;
	font-size:16px;
	line-height:24px;
	font-family:Arial, Helvetica, sans-serif;
	font-weight:300;
	color:#808080;
}
.fmError{
	position:relative;
	background:#f7f1f1;
	color:#cf3636;
	font-size:14px;
	padding:10px;
	padding-left:40px;
	font-style:italic;
}
.fmError::before{
	content:url('images/warning-icon.png');
	position:absolute;
	left:15px;
}
.btnDv .fmCustomBtn {
	border: none;
	background: #267ddd;
	color: #fff;
	text-shadow: none;
	font-size: 16px;
	font-family: Arial, Helvetica, sans-serif;
	font-weight: 700;
	height: inherit;
	line-height: inherit;
	padding: 15px 20px;
	border-radius: 5px;
	box-shadow: none !important;
	-webkit-box-shadow: none !important;
}
.fmInnerWrap .rootDirectoryForm .emText{
	margin-top:15px;
	margin-bottom:10px;
}
.fmInnerWrap .rootDirectoryForm .codeTagEle{
	margin-bottom:15px;
}
.fmInnerWrap .btnDv{
	margin-top:30px;
}
/***/
.shortcodeDocList{
	margin:0;
	padding:0;
	list-style:none;
}
.shortcodeDocList li{
	font-size:14px;
	font-family: Arial, Helvetica, sans-serif;
	line-height:24px;
	padding:12px;
	margin:0;
	color:#404040;
}
.shortcodeDocList li::after{
	content:"";
	display:table;
	clear:both;
}
.shortcodeDocList li .lftTxt{
	float:left;
	width:30px;
}
.shortcodeDocList li .rtTxt{
	float:left;
	width:95%;
}
.shortcodeDocList li:nth-child(even){
	background:#fff;
}
.shortcodeDocList li:nth-child(odd){
	background:#f4f4f4;
}
.shortcodeDocList li .num {
	display: inline-block;
	box-sizing: border-box;
	width: 22px;
	height: 22px;
	color: #fff;
	background: #267ddd;
	text-align: center;
	padding: 1px;
	font-weight: 700;
	border-radius: 50%;
	-webkit-border-radius: 50%;
	line-height: 20px;
}
.shortcodeDocList li .strongText{
	font-weight:700;
}

.twoColListWrap{
	margin-bottom: 15px;
}
.twoColListWrap .numList{
	float:left;
	width:50%;
	margin:0;
	padding:0;
	list-style:none;
}
.twoColListWrap .numList li{
	font-size:14px;
	font-family: Arial, Helvetica, sans-serif;
	line-height:24px;
	padding:6px 12px;
	margin:0;
	color:#404040;
}
.twoColListWrap .numList .num{
	color:#267ddd;
	font-weight:700;
	margin-right:15px;
}
.twoColListWrap .numList .strongText{
	font-weight:700;
}
.twoColListWrap .numList .lineText{
}
.twoColListWrap::after{
	display:table;
	clear:both;
	content:"";
}
.fm_codeParaTxt{
	border-bottom:1px solid #ddd;
	margin-bottom:25px;
	padding-bottom:15px;
}
.fm_codeParaTxt .para{
	font-size:14px;
	color:#404040;
	font-family: Arial, Helvetica, sans-serif;
	margin-bottom:10px;
	line-height: 24px;
}
.fm_codeParaTxt .para::after{
	content:"";
	display:table;
	clear:both;
}
.fm_codeParaTxt .para code{
	font-size:14px;
}
.fm_codeParaTxt .para strong{
	font-weight:700;
	color:#404040;
}
.fm_codeParaTxt .lftText{
	float:left;
	width:38px;
}
.fm_codeParaTxt .rtTxt{
	float:left;
	width: 95%;
}
.fmShorcodePage .subHeading{
	color:#404040;
	font-family: Arial, Helvetica, sans-serif;
	font-weight:700;
	font-size:14px;
	padding:12px;
	margin-top:10px;
}
.fmShorcodePage .subHeading .num{
	color:#267ddd;
	margin-right: 6px;
}
.fmGitForm .form-table-dv{
	margin-bottom:15px;
}
.fmGitForm .form-table-dv .fmInput{
	font-size:14px;
}
.gitPageWrap .gitSec2{
	margin-bottom:30px;
	margin-top:30px;
}
.gitPageWrap .greyBox{
	background:#f4f4f4;
	padding:30px;
	border:1px solid #ddd;
}
.gitStepWrap p{
	font-size:16px;
}
.gitStepWrap p.descTxt{
	margin:0;
}
.gitStepWrap .btnDv{
	margin-top:15px;
}
.gitStepWrap .stepArea {
	margin-bottom: 30px;
}
.gitStepWrap .stepArea.last {
	margin-bottom: 10px;
}
/**email notification**/
.emailNotiTable td .regular-text {
	padding: 12px;
	border: 1px solid #ddd;
	box-shadow: none;
	width: 75%;
	margin-bottom: 15px;
}
.emailNotiTable .fm_addMoreBtnDv{
	margin-bottom: 20px;
}
.emailNotiTable .fm_addMoreBtnDv .button.add_more_ten_email {
	color: #fff;
	background: #267ddd;
	border-radius: 30px;
	border: none;
	font-size: 14px;
	font-weight: 700;
	padding: 14px 35px;
	line-height: normal;
	height: inherit;
	text-transform: uppercase;
}
.emailNotiTable .delete_ten_email {
	display: inline-block;
	position: relative;
	width: 30px;
	height: 18px;
	outline:none !important;
	margin-left:10px;
}
.emailNotiTable .delete_ten_email img {
	top: 6px;
	position: absolute;
}
.grp_root{
	margin-bottom:30px;
}
.rootTwoColWrap::after{
	content:"";
	display:table;
	clear:both;
}
.rootTwoColWrap .checkCol{
	float:left;
	width:30px;
	box-sizing: border-box;
}
.rootTwoColWrap .fmError{
	float:left;
	width:calc(100% - 30px);
	box-sizing: border-box;
}
.fm_codeParaTxt .rtTxt {
    padding-left: 40px;
    box-sizing: border-box;
}
@media only screen and (max-width:767px){
.fmInnerWrap {
    padding: 20px;
}
}css/fm_script.css000064400000030404147361034410010040 0ustar00
@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-ExtraBold.eot');
    src: url('../lib/fonts/raleway/Raleway-ExtraBold.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-ExtraBold.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-ExtraBold.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-ExtraBold.ttf') format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Bold.eot');
    src: url('../lib/fonts/raleway/Raleway-Bold.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Bold.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Bold.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Bold.ttf') format('truetype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Black.eot');
    src: url('../lib/fonts/raleway/Raleway-Black.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Black.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Black.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Black.ttf') format('truetype');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Regular.eot');
    src: url('../lib/fonts/raleway/Raleway-Regular.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Regular.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Regular.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-Medium.eot');
    src: url('../lib/fonts/raleway/Raleway-Medium.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-Medium.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-Medium.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-Medium.ttf') format('truetype');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Raleway';
    src: url('../lib/fonts/raleway/Raleway-SemiBold.eot');
    src: url('../lib/fonts/raleway/Raleway-SemiBold.eot?#iefix') format('embedded-opentype'),
        url('../lib/fonts/raleway/Raleway-SemiBold.woff2') format('woff2'),
        url('../lib/fonts/raleway/Raleway-SemiBold.woff') format('woff'),
        url('../lib/fonts/raleway/Raleway-SemiBold.ttf') format('truetype');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}


.wfmrs {
	width: 100%;
	background: #f5f5f5;
	border: 1px solid #cdcdcd;
	border-left: 4px solid #0073aa;
	display: none;
	overflow: auto;
}

.wfmrs .l_wfmrs {
	width: 200px;
	float: left;
}

.wfmrs .l_wfmrs img {
	float: left;
	padding: 10px;
}

.wfmrs .r_wfmrs {
	float: left;
	padding: 15px 10px;
}

.close_fm_help {
	text-decoration: none;
	border-radius: 4px;
	padding: 5px 15px;
	color: #fff;
	font-size: 16px;
	margin: 10px;
}

.close_fm_help:hover {
	color: #fff !important;
}

.close_fm_help.fm_close_btn {
	float: right;
	cursor: pointer;
	text-decoration: none;
	background: #e00e0e;
	border-radius: 100%;
	padding: 0px 6px;
	display: block;
	color: #fff;
	font-size: 10px;
	margin: 0px;
}

.close_fm_help.fm_close_btn_1 {
	background: #fbc21c;
	border-bottom: 3px solid #b18400;
	margin-right: 0px;
	margin-left: 0px;
}

.close_fm_help.fm_close_btn_2 {
	background: #239200;
	border-bottom: 3px solid #155600;
	margin-right: 0px;
}

.close_fm_help.fm_close_btn_3 {
	background: #ff1105;
	border-bottom: 3px solid #b30900;
}

.clear {
	clear: both;
}

.wp_fm_loader {
	max-width: 100px;
}

.lokhal_verify_email_popup {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	display: none;
	z-index: 100;
}

.lokhal_verify_email_popup_overlay {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background: rgba(0, 0, 0, 0.5);
	display: none;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl {
	display: table;
	width: 100%;
	height: 100%;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel {
	display: table-cell;
	vertical-align: middle;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel .popup_inner_lokhal {
	padding: 0 40px;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel .lokhal_verify_email_popup_content {
	background: #fff;
	max-width: 700px;
	margin: 0 auto;
	padding: 30px;
	position: relative;
	text-align: center;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel .lokhal_verify_email_popup_content .btn_dv {
	margin-top: 30px;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel .lokhal_verify_email_popup_content a.lokhal_cancel {
	position: absolute;
	right: 15px;
	top: 15px;
	text-decoration: none;
	transition: all 0.5s ease;
	-webkit-transition: all 0.5s ease;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel .lokhal_verify_email_popup_content a.lokhal_cancel:hover {
	opacity: 0.8;
	transition: all 0.5s ease;
	-webkit-transition: all 0.5s ease;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel .lokhal_verify_email_popup_content .lokhal_desc {
	font-size: 16px;
	max-width: 450px;
	margin: 0 auto;
	margin-bottom: 30px;
	color: #808080;
}

.lokhal_verify_email_popup .lokhal_verify_email_popup_tbl .lokhal_verify_email_popup_cel .lokhal_verify_email_popup_content h3 {
	font-size: 36px;
	font-family: 'Raleway';
	font-weight: 700;
	color: #000;
	margin-bottom: 25px;
}

.lokhal_verify_email_popup .form_grp {
	overflow: auto;
	margin-bottom: 15px;
}

.lokhal_verify_email_popup .form_grp .form_twocol {
	width: 50%;
	float: left;
	box-sizing: border-box;
	padding: 0 5px;
}

.lokhal_verify_email_popup .form_grp .form_onecol {
	box-sizing: border-box;
	padding: 0 5px;
}

.lokhal_verify_email_popup .form_grp input {
	width: 100%;
	border: 1px solid #ddd;
	box-shadow: none !important;
	padding: 10px;
}

.lokhal_verify_email_popup .fm_bot_links {
	border-top: 1px solid #ddd;
	padding-top: 20px;
	margin-top: 40px;
}

.lokhal_verify_email_popup .fm_bot_links a {
	font-size: 16px;
	text-decoration: none;
	margin: 0 15px;
	color: #016cb0;
}

.lokhal_verify_email_popup .btn_dv .verify_local_email {
	background: #016cb0 !important;
	width: 165px;
	height: 50px;
	padding: 0;
	border: none;
	font-size: 16px;
	text-transform: uppercase;
	margin-right: 15px;
	font-weight: 700;
}

.lokhal_verify_email_popup .btn_dv .verify_local_email .btn-text {
	display: inline-block;
	padding: 0 15px;
	margin-right: 0;
	vertical-align: middle;
	float: left;
	line-height: inherit;
	height: 50px;
	padding-top: 8px;
	box-sizing: border-box;
	width: 109px;
}

.lokhal_verify_email_popup .btn_dv .verify_local_email .btn-text-icon {
	display: inline-block;
	width: 56px;
	text-align: center;
	vertical-align: middle;
	float: left;
	line-height: inherit;
	border-radius: 0 3px 3px 0;
	position: relative;
	overflow: hidden;
	background: #004270;
	height: 50px;
	padding-top: 14px;
	box-sizing: border-box;
}

.lokhal_verify_email_popup .btn_dv .verify_local_email:hover .btn-text-icon img {
	-webkit-animation-name: moving;
	-webkit-animation-duration: 0.8s;
}

.lokhal_verify_email_popup .btn_dv .verify_local_email:hover .btn-text-icon {
	background: #012842;
}

.lokhal_verify_email_popup .btn_dv .lokhal_cancel {
	border: 2px solid #016cb0;
	font-size: 16px;
	text-transform: uppercase;
	height: inherit;
	background: #fff;
	width: 165px;
	height: 50px;
	margin-left: 15px;
	font-weight: 700;
}

.lokhal_verify_email_popup .btn_dv .lokhal_cancel:hover {
	border: 2px solid #016cb0;
	background: #fff;
}

.wp_fm_lang h3.fm_heading {}

.wp_fm_lang h3.fm_heading .fm_head_icon {
	width: 33px;
    vertical-align: text-top;
	float: left;
	margin-right: 10px;
	/* padding-top: 6px; */
}

.wp_fm_lang h3.fm_heading .fm_head_icon img {
	margin-top: -3px;
}

.wp_fm_lang h3.fm_heading .fm_head_txt {
	margin-right: 10px;
	padding-top: 6px;
	display: inline-block;
}

.wp_fm_lang h3.fm_heading .fm_pro_btn{
	border: none;
    border-radius: 5px;
    margin-top: 0;
    padding: 0px 11px;
    height: 30px;
    line-height: 30px;
    background: #007cba;
    border-color: #007cba;
    font-size: 13px;
    font-weight: normal;
    border-radius: 3px;
}
.wp_fm_lang h3.fm_heading .fm_pro_btn:hover{
    background: #0071a1;
    border-color: #0071a1;
}
.button.button-primary:focus,
.wp_fm_lang h3.fm_heading .fm_pro_btn:hover,
.wp_fm_lang h3.fm_heading .fm_pro_btn:focus{
	box-shadow: none;
}

h3.fm-topoption .switch_txt_theme {
	font-size: 12px;
	padding-top: 6px;
	display: inline-block;
	float: left;
	margin-right: 10px;
}

.elfinder .elfinder-navbar {
	z-index: 1;
}

.elfinder-button-search input {
	font-size: 12px;
	font-weight: 100;
}

.elfinder-frontmost .elfinder-quicklook-titlebar {}

.elfinder-frontmost .elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon {
	margin: 0px 0 0 3px;
}

.elfinder-frontmost .elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon.elfinder-icon-minimize {
	margin-top: -18px;
	margin-right: 25px;
}

.elfinder-frontmost .elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon.ui-icon-plusthick {
	margin-top: -18px;
	margin-right: 25px;
}

.error_msg {
	color: #F00;
	display: none;
}

.elfinder-info-tb tr:last-child,
.elfinder-info-tb tr:nth-last-child(2) {
	display: none;
}

@-webkit-keyframes moving {
	0% {
		margin-left: 0;
	}

	25% {
		margin-left: -80px;
	}

	100% {
		margin-left: 0;
	}
}

/****/
/**custom scroller**/
.elfinder div.elfinder-bottomtray {
	position: absolute !important;
	bottom: 30px !important;
	z-index: 1;
}

.ui-front.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-draggable.std42-dialog.touch-punch.elfinder-dialog.ui-resizable.elfinder-dialog-edit.elfinder-to-editing.elfinder-frontmost.elfinder-dialog-active.elfinder-maximized.ui-draggable-disabled.ui-resizable-disabled {
	position: absolute !important;
}

.mk_elfinder_share_button .button {
	font-size: 12px;
	padding: 2px 15px;
	height: auto;
	line-height: normal;
	min-height: auto;
}
.fm_msg_popup {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 9999;
	background: rgba(0, 0, 0, 0.7);
}

.fm_msg_popup .fm_msg_popup_tbl {
	display: table;
	width: 100%;
	height: 100%;
}

.fm_msg_popup .fm_msg_popup_tbl .fm_msg_popup_cell {
	display: table-cell;
	vertical-align: middle;
}

.fm_msg_popup .fm_msg_popup_tbl .fm_msg_popup_cell .fm_msg_popup_inner {
	max-width: 400px;
	margin: 0 auto;
	background: #fff;
	padding: 30px;
	text-align: center;
	border-radius: 5px;
	-webkit-border-radius: 5px;
	box-shadow: 10px 10px 5px rgba(0, 0, 0, 0.4);
}

.fm_msg_popup .fm_msg_popup_tbl .fm_msg_popup_cell .fm_msg_popup_inner .fm_msg_text {
	margin-bottom: 25px;
	font-size: 15px;
	color: #ff2400;
}

.fm_msg_btn_dv {
	display: none;
}

.fm_msg_popup .fm_msg_popup_tbl .fm_msg_popup_cell .fm_msg_popup_inner .fm_msg_btn_dv a {

	padding: 0px 30px;
}

.check_syntax_loading {
	color: #000;
}

.no_syntax_error_found {
	color: #076b34;
}

button.ui-button-text.check-syntax-cta {
	padding: 5px 9px;
	border-radius: 4px;
	outline: 0px;
	background: #3077ac;
	position: relative;
	top: 5px;
	color: #fff;
}

button.ui-button-text.check-syntax-cta:hover {
	background: #1f5884;
}

#wp_file_manager .ui-dialog.elfinder-to-editing.elfinder-dialog-edit {
	z-index: 99 !important;
}

.elfinder-dialog.elfinder-to-editing.elfinder-maximized{ min-height: inherit !important; }css/fm-backup.css000064400000030155147361034410007722 0ustar00button{
    outline: none !important;
    transition: all 0.3s ease;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
}
.restore_btn, .del_btn, .log_btn{
    transition: all 0.3s ease;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
}

.del_btn:hover, .log_btn:hover {
    background: #696868;
    color: #ffffff;
    transition: all 0.3s ease;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
}
.wrap.restore-sec {
    background: #fff;
    padding: 25px;
    border: 1px #dddddd solid;
	margin-top:20px;
}
.wrap.restore-sec .title {
    border-bottom: 1px #dddddd solid;
    padding-bottom: 15px;
}
.wrap.restore-sec .title h3 {
    padding: 0px;
    margin: 0px;
    color: #000;
    font-size: 22px;
    font-weight: 700;
}
.schedule-back{
	padding:35px 0px;
	    border-bottom: 1px #ddd solid;
}
.schedule-back::after{
    content:"";
    display:table;
    clear:both;
}
.schedule-back .files{
	width:50%;
	float:left;
	margin-bottom: 20px;
	 margin-top: 15px
}
.schedule-back .files .finner::after{
    content:"";
    display:table;
    clear:both;
}
.schedule-back .files h4 {
    font-weight: bold;
    font-size: 16px;
    margin-bottom: 10px;
	font-family: sans-serif;
}
.schedule-back .files p {
    font-size: 14px;
}
.schedule-back .files .backup_btn{
    background: #267ddd;
    color: #fff;
    padding: 12px 20px;
    text-decoration: none;
    border-radius: 3px;
    font-size: 16px;
    float: left;
    margin-top: 20px;
	font-weight:500;
}

.schedule-back .well {
    background: #f1f1f1;
    clear: both;
    padding: 15px;
    border-radius: 5px;
    border: 1px #ddd solid;
    font-size: 14px;
}
.log-message{
	padding:40px 0px;
	border-bottom: 1px #ddd solid;
    clear:both;
}
.log-message p{
    background: #f4f4f4;
    padding: 12px 20px;
    border-radius: 3px;
    margin-top: 25px;
    margin-bottom: 0px;
    border: 1px #ddd solid;
}
.existing-back{
	padding-top:40px;
	padding-bottom:20px;
}
.existing-back h3{
	margin:0px;
	padding:0px;
	font-size: 22px;
    font-weight: 700;
    margin-bottom: 20px
}
.existing-back h3 span{
	background: #0e6bb7;
    font-size: 14px;
    font-weight: 500;
    color: #fff;
    width: 30px !important;
    display: inline-block;
    text-align: center;
    margin-left: 10px;
    padding: 2px;
    border-radius: 10px;
    vertical-align: top;
}
strong {
    font-weight: 700;
}
p{
	font-size:14px;
}
.existing-back p a{
    text-decoration: none;
}
.existing-back p{
	margin:10px 0px;
}

.backup-main{
	border:1px #ddd solid;
	padding:10px;
	font-weight:bold;
}
.backup-main .backup-date{
    width: 230px;
    display:inline-block;
    position: relative;
}

.database-sec{
	    border: 1px #ddd solid;
    padding: 15px 10px;
    font-weight: bold;
	border-top:0px !important;
	background:#f4f4f4;
}
.database-sec::after{
    content:"";
    dispaly:table;
    clear:both;
}
.database-sec .backup-date {
    width: 230px;
    display: inline-block;
    position: relative;
    vertical-align: middle;
}
.database-sec a, .bck_action .fm-download-all.button {
    color: #404040;
    text-decoration: none;
    background: #fff;
    padding: 7px 15px;
    border-radius: 5px;
    border: 1px #ddd solid;
    font-size: 12px;
    display: inline-block;
    margin-bottom: 3px;
    line-height: 1.4em;
}
.database-sec a:hover{
	color: #404040;
}
.bck_action .fm-download-all.button:hover{
    background: #696868;
    color: #ffffff;
}
.action-sec a{
	color: #404040;
    text-decoration: none;
    background: #fff;
    padding: 7px 15px;
    margin-left: 10px;
    border-radius: 5px;
    border: 1px #ddd solid;
	font-weight: bold;
}
.action-sec {
    margin-top: 30px;
	    margin-bottom: 20px;
}
.action-sec strong {
    margin-right: 15px;
}
.action-sec i {
    font-size: 14px;
    color: #999;
    margin-left: 15px;
}
.light-back{
	background:#f4f4f4 !important;
	color:#898989 !important;
}
.fm_open_files_options{
    border:1px solid #ddd;
    clear: both;
    padding: 20px;
    margin-top: 20px;
    position:relative;
}
.double-col li{
    list-style:none;
    margin:0px;
}
.double-col::after{
    content:"";
    display:table;
    clear:both;
}
.double-col .inner-col-wrap{
    margin-bottom:20px;
}
.double-col h4{
    margin: 0px 0px 17px;
    font-size: 16px;
    font-weight: bold;
}
.double-col .inner-col-wrap::after{
    content:"";
    display:table;
    clear:both;
}
.double-col .inner-col-half .colmn-div3{
    float: left;
    width: calc(33.3333% - 20px);
    margin-right: 20px;
}
.double-col .inner-col-half .backup_btn {
    background: #0e6bb7;
    color: #fff;
    border: none;
    padding: 7px 12px 8px;
    border-radius: 3px;
    cursor: pointer;
}
.fm_open_files_options::before{
    content:"";
    position: absolute;
    top: -9px;
    left: 20px;
    right: 0;
    width: 15px;
    height: 15px;
    transform: rotate(-135deg);
    -webkit-transform: rotate(-135deg);
    -moz-transform: rotate(-135deg);
    -o-transform: rotate(-135deg);
    -ms-transform: rotate(-135deg);
    border-right: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    background: #fff;
}

/* All pop-ups css*/
.fmbkp_console_popup, .restore_backup_popup, .dlt_backup_popup, .dlt_success_popup{
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: none;
    background: rgba(0,0,0,0.5);
    z-index: 9999;
}
.fmbkp_console_popup_tbl, .restore_backup_popup_tbl, .dlt_backup_popup_tbl, .dlt_success_popup_tbl{
    display:table;
    width:100%;
    height:100%;
}
.fmbkp_console_popup_cel, .restore_backup_popup_cel, .dlt_backup_popup_cel, .dlt_success_popup_cel{
    display:table-cell;
    vertical-align:middle;
}
.fmbkp_console_popup_inner, .restore_backup_popup_inner, .dlt_backup_popup_inner, .dlt_success_popup_inner{
    max-width: 450px;
    margin: 0 auto;
    background: #fff;
    position: relative;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 5px 15px rgba(0,0,0,.5);
}
.fmbkp_console_popup_inner, .restore_backup_popup_inner{
    border-bottom: 10px solid #0e6bb7;
}
.dlt_backup_popup_inner{
    border-bottom: 10px solid #de524b;
}
.dlt_success_popup_inner{
    border-bottom: 10px solid green;
}
.fmbkp_console_popup_inner .close_fm_console , .close_restore_backup, .close_dlt_backup, .close_dlt_success {
    position: absolute;
    color: #fff;
    text-decoration: none;
    right: 20px;
    font-size: 30px;
    top: 20px;
}
.schedule-back h3{
    margin: 0px;
    padding: 25px 20px;
    font-size: 22px;
    font-weight: 700;
    border-bottom: 1px solid #e5e5e5;
    text-align: center;
    background: #0e6bb7;
    color: #fff;
}
.schedule-back .dlt_backup_popup h3{
    background: #de524b;
}
.schedule-back .dlt_success_popup h3{
    background: green;
}
.log-message h3{
	margin:0px;
	padding:0px;
	font-size: 22px;
    font-weight: 700;
}
.restore_btn_wrap, .dlt_btn_wrap, .dlt_success_wrap{
    padding: 20px 20px 30px;
    text-align: center;
}
.backup_btn_common{
    border: none;
    width: 76px;
    line-height: 30px;
    padding: 0px;
    color: #fff;
    border-radius: 3px;
    cursor:pointer;
}
.restore_cancel,  .dlt_cancel{
    background: #de524b;
}
.restore_confirmed, .dlt_btn_wrap .dlt_confirmed{
    background: #156bb7;
}
.dlt_confirmed_success{
    background: green;
}
/**/          
#fmbkp_console {
    clear: both;
    color: #fff;
    padding-bottom: 15px;
}
#fmbkp_console .fm_console_success{
    color: green;
}
.fm_console_success.log_msg_align_center {
    color: #ffffff !important;
}
#fmbkp_console .fm_console_log_pop{
    margin: 0px;
    margin-bottom: 15px;
    padding: 25px 20px;
    font-size: 22px;
    color: #fff;
    font-weight: 700;
    border-bottom: 1px solid #e5e5e5;
    text-align: left;
    background: #0e6bb7;
}

#fmbkp_console p{
    padding: 10px 20px;
    margin: 0px;
    color: #444;
}
#fmbkp_console p.backup_wait{
    margin: 0px;
    margin-bottom: 15px;
    padding: 25px 20px;
    font-size: 22px;
    line-height: 18px;
    color: #fff;
    font-weight: 700;
    border-bottom: 1px solid #e5e5e5;
    text-align: left;
    background: #0e6bb7;
}
#fmbkp_console .fm_console_error {
	color: red;
}
.no_backup {
	text-align: center;
	color: #fe0505;
	padding: 15px;
	margin: 0;
	font-size: 18px;
	margin-top: 20px;
}
.fmbkp_console_loader img {
	width: 70px;
	height: 20px;
}
.backup-main::after{
    content:"";
    display:table;
    clear:both;
}
.bck_action {
	width: calc(100% - 495px);
	display: inline-block;
	vertical-align: middle;
}
.action_ele {
	width: 252px;
	display: inline-block;
    vertical-align: middle;
}
.database-sec::after{
    content:"";
    display:table;
    clear:both;
}
.exitBackBtn{
	border: none;
	padding: 6px 15px 7px;
	cursor: pointer;
    border-radius:5px;
    color: #fff;
    margin-bottom: 3px;
}
.restore_btn{
    background: #0e6bb7;
}
.del_btn{
    background: #de524c;
	
}
.log_btn{
    background: #fff;
	color: #404040;
    border:1px solid #ddd;

}
.log_msg_align_center {
    text-align: center;
    text-transform: uppercase !important;
}
.disabled_btn {
	cursor: default;
	pointer-events: none;
	background: #ddd;
	color: #fff;
}
.mrt10 {
    margin-right: 10px;
}
.styledCheckbox {
    display: inline-block;
    position: relative;
    cursor: pointer;
    font-size: 16px;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    width: 16px;
    height: 16px;
}
.styledCheckbox input {
    position: absolute;
    opacity: 0 !important;
    cursor: pointer;
    z-index: 1;
    margin: 0;
}
.fm_checkmark {
    position: absolute;
    top: 0;
    left: 0;
    height: 16px;
    width: 16px;
    background-color: #fff;
    border: 1px solid #ddd;
}
.fm_checkmark:after {
    content: "";
    position: absolute;
    display: none;
}
.styledCheckbox .fm_checkmark:after {
    left: 6px;
    top: 3px;
    width: 3px;
    height: 7px;
    border: solid #0073aa;
    border-width: 0 2px 2px 0;
    -webkit-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    transform: rotate(45deg);
}
.styledCheckbox input:checked ~ .fm_checkmark:after {
    display: block;
}
span.chk-label {
    vertical-align: middle;
}
.backup-date span.chk-label,
.styledCheckbox {
    vertical-align: middle;
}

.bck_action a:hover,
.restore_cancel:hover, .dlt_cancel:hover {
    background: #696868;
    color: #ffffff;
    transition: all 0.3s ease;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
}
.double-col .inner-col-half .backup_btn:hover,
.restore_btn:hover, .restore_confirmed:hover,.dlt_confirmed:hover{
    background: #00669b !important;
    border-color: #00669b !important;
    color: #ffffff;
    transition: all 0.3s ease;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
}
a:focus{
    box-shadow: none;
}
a.close_restore_backup:active, a.close_restore_backup:hover,
a.close_dlt_backup:active, a.close_dlt_backup:hover,
a.close_dlt_success:active,a.close_dlt_success:hover  {
    color: #ffffff;
}
#fmbkp_console ul {
    margin: 0;
    padding: 12px 20px;
}
.fm-running-list, #fmbkp_console ul li {
    position: relative;
}
#fmbkp_console ul li.fm-running-list {
    padding: 4px 0;
    padding-left: 22px;
    margin: 0;
}
.fm-running-list:before {
    font-family: dashicons;
    display: inline-flex;
    font-weight: 400;
    font-style: normal;
    text-decoration: inherit;
    text-transform: none;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    font-size: 13px;
    text-align: center;
    transition: color .1s ease-in;
    align-items: center;
    justify-content: center;
    border-radius: 100%;
    width: 16px;
    height: 16px;
    position: absolute;
    top: 6px;
    left: 0px;
    line-height: 13px;
}
.fm-running-list.fm-custom-checked:before {
    content: "\f15e";
    background: green;
    color: #fff;
  
}
.fm-custom-checked{
    color: green;
}
.fm-running-list.fm-custom-unchecked:before {
    content: "\f335";
    color: #fff;
    background: red;
}
#fmbkp_console .fm-custom-unchecked span, .fm-custom-unchecked{
    color: red;
}
.fmrestore_console_popup{
    display: none;
}css/fm_common.css000064400000000463147361034410010026 0ustar00.toplevel_page_wp_file_manager .wp-menu-image img{
    width: 23px;
    padding-top: 5px !important;
}
.wp-filemanager-wrap .elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td .elfinder-cwd-select, .wp-filemanager-wrap  .elfinder .elfinder-cwd table thead td .elfinder-cwd-selectall {
    display: none;
}css/fm_custom.css000064400000010573147361034410010053 0ustar00.boxSizing *{
	box-sizing:border-box;
	-moz-box-sizing:border-box;
	-webkit-box-sizing:border-box;
}
.fm_notificationWrap .tab {
    border-bottom: 1px solid #ccc;
}
.fm_notificationWrap .tab::after {
	content:"";
	display:table;
	clear:both;
}
/* Style the buttons inside the tab */
.fm_notificationWrap .tab a {
	background-color: inherit;
	float: left;
	border: none;
	outline: none;
	cursor: pointer;
	padding: 14px 16px;
	transition: 0.3s;
	font-size: 17px;
	color: #000;
	width: 33.3333334%;
	display: inline-block;
	text-align: center;
	position:relative;
}

.fm_notificationWrap .tab a.active::before{
	content:"";
	height:3px;
	position:absolute;
	bottom:-1px;
	left:0;
	right:0;
	background:#09F;
}
.fm_notificationWrap .tab a.active::after {
	content: "";
	position: absolute;
	width: 0;
	height: 0;
	border-left: 12px solid transparent;
	border-right: 12px solid transparent;
	border-top: 11px solid #09F;
	bottom: -10px;
	left: 46%;
}
/* Style the tab content */
.fm_notificationWrap .tabcontent {
    display: none;
    padding: 25px;
}
.fm_notificationWrap .fmNotifyWrap{
	background:#fff;
	padding-bottom: 25px;
}
.fm_notificationWrap .fmNotifyWrap p.description{
	padding:0 25px;
}
.fm_notificationWrap .fmNotifyWrap p.description.noPadding{
	padding:0px;
}
.fm_notificationWrap .fmNotifyWrap p.description.mb15{
	margin:15px 0;
}
.fm_notificationWrap .fmNotifyWrap p.submit{
	padding:0 25px;
}
.fm_notificationWrap .fmNotifyWrap p.submit .button {
	background: #09F;
	border: none;
	padding: 8px 25px;
	color: #fff;
	text-shadow: none;
	font-size: 16px;
	height: inherit;
	box-shadow: none;
	border-radius: 0px;
}
.fmNotifyWrap .form-table .regular-text{
	border:1px solid #ddd;
	padding: 10px;
}
.fmNotifyWrap input[type='text']{
	border:1px solid #ddd;
	padding: 10px;
}
.fmNotifyWrap .fm_addMoreBtnDv{
	margin-top:10px;
	margin-bottom: 20px;
}
.fmNotifyWrap .fm_addMoreBtnDv .add_more_ten_email {
	border: 1px solid #ddd;
	box-shadow: none;
	border-radius: 0;
	padding: 5px 20px;
	height: inherit;
	background: #ddd;
	font-weight: 600;
}
.fmNotifyWrap .delete_ten_email{
	color:#F00;
}
.fmNotifyWrap #admin-email-description{
	padding:0;
	color: #a1a1a1;
}
.fm_headingTitle{
	margin: 0;
    margin-bottom: 0px;
	padding: 15px;
	border-bottom: 1px solid #ddd;
	margin-bottom: 15px;
	background: #fff;
}
.fm_rootWrap{
}
.fm_rootWrap .fm_whiteBg{
	background:#fff;
	padding:25px;
}
.fm_rootWrap .regular-text{
	border:1px solid #ddd;
	padding: 10px;
}
.fm_rootWrap .description.mb15{
	margin:15px 0px;
}
.fm_rootWrap p.submit .button{
	border: none;
    background: #267ddd;
    color: #fff;
    text-shadow: none;
    font-size: 16px;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: 700;
    height: inherit;
    line-height: inherit;
    padding: 12px 20px;
    border-radius: 5px;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}
.fm_rootWrap p.submit .button:hover,
.fm_rootWrap p.submit .button:focus{
	background: #0071a1; 
}

.fm_systemPropertyTbl th, .fm_systemPropertyTbl td{
	padding:12px;
	border:1px solid #f0f0f0;
	text-align: left;
}

.fm_systemPropertyWrap .fm_BuyProBtn{
	margin-bottom: -6px;
	margin-top: -6px;
	margin-left: 10px;
}
.fm_BuyProBtn:hover,
.fm_BuyProBtn:focus{ box-shadow:none !important; }
td.fm-tr-inline p {
    margin: 0 !important;
}
td.fm-tr-inline input {
    float: left;
    margin: 3px 6px 0 0;
}
.fm-packet-area span.mb-value {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
}

.fm-packet-area {
    display: inline-block;
    position: relative;
}
.fm-packet-area input::-webkit-outer-spin-button,
.fm-packet-area input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.fm-packet-area input[type=number] {
  -moz-appearance: textfield;
}
.fm-packet-area input.regular-text {
    padding-right: 21px;
}
.rtl .fm-packet-area span.mb-value {
    right: unset;
    left: 10px;
}
.form-table .input-addon{
	padding: 0.5rem 0.75rem;
	margin-bottom: 0;
	font-size: 1rem;
	font-weight: 400;
	line-height: 2;
	color: #464a4c;
	text-align: center;
	background-color: #eceeef;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-radius: 0.25rem;
	display: inline-block;
}
.fmInput{
	width:60% !important;
  }css/jquery-ui.css000064400000106235147361034410010012 0ustar00/*! jQuery UI - v1.12.1 - 2021-01-02
* http://jqueryui.com
* Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-draggable-handle {
	-ms-touch-action: none;
	touch-action: none;
}
/* Layout helpers
----------------------------------*/
.ui-helper-hidden {
	display: none;
}
.ui-helper-hidden-accessible {
	border: 0;
	clip: rect(0 0 0 0);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
}
.ui-helper-reset {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	line-height: 1.3;
	text-decoration: none;
	font-size: 100%;
	list-style: none;
}
.ui-helper-clearfix:before,
.ui-helper-clearfix:after {
	content: "";
	display: table;
	border-collapse: collapse;
}
.ui-helper-clearfix:after {
	clear: both;
}
.ui-helper-zfix {
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	position: absolute;
	opacity: 0;
	filter:Alpha(Opacity=0); /* support: IE8 */
}

.ui-front {
	z-index: 100;
}


/* Interaction Cues
----------------------------------*/
.ui-state-disabled {
	cursor: default !important;
	pointer-events: none;
}


/* Icons
----------------------------------*/
.ui-icon {
	display: inline-block;
	vertical-align: middle;
	margin-top: -.25em;
	position: relative;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
}

.ui-widget-icon-block {
	left: 50%;
	margin-left: -8px;
	display: block;
}

/* Misc visuals
----------------------------------*/

/* Overlays */
.ui-widget-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
.ui-resizable {
	position: relative;
}
.ui-resizable-handle {
	position: absolute;
	font-size: 0.1px;
	display: block;
	-ms-touch-action: none;
	touch-action: none;
}
.ui-resizable-disabled .ui-resizable-handle,
.ui-resizable-autohide .ui-resizable-handle {
	display: none;
}
.ui-resizable-n {
	cursor: n-resize;
	height: 7px;
	width: 100%;
	top: -5px;
	left: 0;
}
.ui-resizable-s {
	cursor: s-resize;
	height: 7px;
	width: 100%;
	bottom: -5px;
	left: 0;
}
.ui-resizable-e {
	cursor: e-resize;
	width: 7px;
	right: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-w {
	cursor: w-resize;
	width: 7px;
	left: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-se {
	cursor: se-resize;
	width: 12px;
	height: 12px;
	right: 1px;
	bottom: 1px;
}
.ui-resizable-sw {
	cursor: sw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	bottom: -5px;
}
.ui-resizable-nw {
	cursor: nw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	top: -5px;
}
.ui-resizable-ne {
	cursor: ne-resize;
	width: 9px;
	height: 9px;
	right: -5px;
	top: -5px;
}
.ui-selectable {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-selectable-helper {
	position: absolute;
	z-index: 100;
	border: 1px dotted black;
}
.ui-sortable-handle {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-accordion .ui-accordion-header {
	display: block;
	cursor: pointer;
	position: relative;
	margin: 2px 0 0 0;
	padding: .5em .5em .5em .7em;
	font-size: 100%;
}
.ui-accordion .ui-accordion-content {
	padding: 1em 2.2em;
	border-top: 0;
	overflow: auto;
}
.ui-autocomplete {
	position: absolute;
	top: 0;
	left: 0;
	cursor: default;
}
.ui-menu {
	list-style: none;
	padding: 0;
	margin: 0;
	display: block;
	outline: 0;
}
.ui-menu .ui-menu {
	position: absolute;
}
.ui-menu .ui-menu-item {
	margin: 0;
	cursor: pointer;
	/* support: IE10, see #8844 */
	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
.ui-menu .ui-menu-item-wrapper {
	position: relative;
	padding: 3px 1em 3px .4em;
}
.ui-menu .ui-menu-divider {
	margin: 5px 0;
	height: 0;
	font-size: 0;
	line-height: 0;
	border-width: 1px 0 0 0;
}
.ui-menu .ui-state-focus,
.ui-menu .ui-state-active {
	margin: -1px;
}

/* icon support */
.ui-menu-icons {
	position: relative;
}
.ui-menu-icons .ui-menu-item-wrapper {
	padding-left: 2em;
}

/* left-aligned */
.ui-menu .ui-icon {
	position: absolute;
	top: 0;
	bottom: 0;
	left: .2em;
	margin: auto 0;
}

/* right-aligned */
.ui-menu .ui-menu-icon {
	left: auto;
	right: 0;
}
.ui-button {
	padding: .4em 1em;
	display: inline-block;
	position: relative;
	line-height: normal;
	margin-right: .1em;
	cursor: pointer;
	vertical-align: middle;
	text-align: center;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;

	/* Support: IE <= 11 */
	overflow: visible;
}

.ui-button,
.ui-button:link,
.ui-button:visited,
.ui-button:hover,
.ui-button:active {
	text-decoration: none;
}

/* to make room for the icon, a width needs to be set here */
.ui-button-icon-only {
	width: 2em;
	box-sizing: border-box;
	text-indent: -9999px;
	white-space: nowrap;
}

/* no icon support for input elements */
input.ui-button.ui-button-icon-only {
	text-indent: 0;
}

/* button icon element(s) */
.ui-button-icon-only .ui-icon {
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -8px;
	margin-left: -8px;
}

.ui-button.ui-icon-notext .ui-icon {
	padding: 0;
	width: 2.1em;
	height: 2.1em;
	text-indent: -9999px;
	white-space: nowrap;

}

input.ui-button.ui-icon-notext .ui-icon {
	width: auto;
	height: auto;
	text-indent: 0;
	white-space: normal;
	padding: .4em 1em;
}

/* workarounds */
/* Support: Firefox 5 - 40 */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
	border: 0;
	padding: 0;
}
.ui-controlgroup {
	vertical-align: middle;
	display: inline-block;
}
.ui-controlgroup > .ui-controlgroup-item {
	float: left;
	margin-left: 0;
	margin-right: 0;
}
.ui-controlgroup > .ui-controlgroup-item:focus,
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
	z-index: 9999;
}
.ui-controlgroup-vertical > .ui-controlgroup-item {
	display: block;
	float: none;
	width: 100%;
	margin-top: 0;
	margin-bottom: 0;
	text-align: left;
}
.ui-controlgroup-vertical .ui-controlgroup-item {
	box-sizing: border-box;
}
.ui-controlgroup .ui-controlgroup-label {
	padding: .4em 1em;
}
.ui-controlgroup .ui-controlgroup-label span {
	font-size: 80%;
}
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
	border-left: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
	border-top: none;
}
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
	border-right: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
	border-bottom: none;
}

/* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input {

	/* Support: IE8 only, Android < 4.4 only */
	width: 75%;
	width: calc( 100% - 2.4em );
}
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
	border-top-style: solid;
}

.ui-checkboxradio-label .ui-icon-background {
	box-shadow: inset 1px 1px 1px #ccc;
	border-radius: .12em;
	border: none;
}
.ui-checkboxradio-radio-label .ui-icon-background {
	width: 16px;
	height: 16px;
	border-radius: 1em;
	overflow: visible;
	border: none;
}
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
	background-image: none;
	width: 8px;
	height: 8px;
	border-width: 4px;
	border-style: solid;
}
.ui-checkboxradio-disabled {
	pointer-events: none;
}
.ui-datepicker {
	width: 17em;
	padding: .2em .2em 0;
	display: none;
}
.ui-datepicker .ui-datepicker-header {
	position: relative;
	padding: .2em 0;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
	position: absolute;
	top: 2px;
	width: 1.8em;
	height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
	top: 1px;
}
.ui-datepicker .ui-datepicker-prev {
	left: 2px;
}
.ui-datepicker .ui-datepicker-next {
	right: 2px;
}
.ui-datepicker .ui-datepicker-prev-hover {
	left: 1px;
}
.ui-datepicker .ui-datepicker-next-hover {
	right: 1px;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
	display: block;
	position: absolute;
	left: 50%;
	margin-left: -8px;
	top: 50%;
	margin-top: -8px;
}
.ui-datepicker .ui-datepicker-title {
	margin: 0 2.3em;
	line-height: 1.8em;
	text-align: center;
}
.ui-datepicker .ui-datepicker-title select {
	font-size: 1em;
	margin: 1px 0;
}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year {
	width: 45%;
}
.ui-datepicker table {
	width: 100%;
	font-size: .9em;
	border-collapse: collapse;
	margin: 0 0 .4em;
}
.ui-datepicker th {
	padding: .7em .3em;
	text-align: center;
	font-weight: bold;
	border: 0;
}
.ui-datepicker td {
	border: 0;
	padding: 1px;
}
.ui-datepicker td span,
.ui-datepicker td a {
	display: block;
	padding: .2em;
	text-align: right;
	text-decoration: none;
}
.ui-datepicker .ui-datepicker-buttonpane {
	background-image: none;
	margin: .7em 0 0 0;
	padding: 0 .2em;
	border-left: 0;
	border-right: 0;
	border-bottom: 0;
}
.ui-datepicker .ui-datepicker-buttonpane button {
	float: right;
	margin: .5em .2em .4em;
	cursor: pointer;
	padding: .2em .6em .3em .6em;
	width: auto;
	overflow: visible;
}
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
	float: left;
}

/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi {
	width: auto;
}
.ui-datepicker-multi .ui-datepicker-group {
	float: left;
}
.ui-datepicker-multi .ui-datepicker-group table {
	width: 95%;
	margin: 0 auto .4em;
}
.ui-datepicker-multi-2 .ui-datepicker-group {
	width: 50%;
}
.ui-datepicker-multi-3 .ui-datepicker-group {
	width: 33.3%;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
	width: 25%;
}
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
	border-left-width: 0;
}
.ui-datepicker-multi .ui-datepicker-buttonpane {
	clear: left;
}
.ui-datepicker-row-break {
	clear: both;
	width: 100%;
	font-size: 0;
}

/* RTL support */
.ui-datepicker-rtl {
	direction: rtl;
}
.ui-datepicker-rtl .ui-datepicker-prev {
	right: 2px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next {
	left: 2px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-prev:hover {
	right: 1px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next:hover {
	left: 1px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane {
	clear: right;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
	float: left;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
.ui-datepicker-rtl .ui-datepicker-group {
	float: right;
}
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
	border-right-width: 0;
	border-left-width: 1px;
}

/* Icons */
.ui-datepicker .ui-icon {
	display: block;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
	left: .5em;
	top: .3em;
}
.ui-dialog {
	position: absolute;
	top: 0;
	left: 0;
	padding: .2em;
	outline: 0;
}
.ui-dialog .ui-dialog-titlebar {
	padding: .4em 1em;
	position: relative;
}
.ui-dialog .ui-dialog-title {
	float: left;
	margin: .1em 0;
	white-space: nowrap;
	width: 90%;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-dialog .ui-dialog-titlebar-close {
	position: absolute;
	right: .3em;
	top: 50%;
	width: 20px;
	margin: -10px 0 0 0;
	padding: 1px;
	height: 20px;
}
.ui-dialog .ui-dialog-content {
	position: relative;
	border: 0;
	padding: .5em 1em;
	background: none;
	overflow: auto;
}
.ui-dialog .ui-dialog-buttonpane {
	text-align: left;
	border-width: 1px 0 0 0;
	background-image: none;
	margin-top: .5em;
	padding: .3em 1em .5em .4em;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
	float: right;
}
.ui-dialog .ui-dialog-buttonpane button {
	margin: .5em .4em .5em 0;
	cursor: pointer;
}
.ui-dialog .ui-resizable-n {
	height: 2px;
	top: 0;
}
.ui-dialog .ui-resizable-e {
	width: 2px;
	right: 0;
}
.ui-dialog .ui-resizable-s {
	height: 2px;
	bottom: 0;
}
.ui-dialog .ui-resizable-w {
	width: 2px;
	left: 0;
}
.ui-dialog .ui-resizable-se,
.ui-dialog .ui-resizable-sw,
.ui-dialog .ui-resizable-ne,
.ui-dialog .ui-resizable-nw {
	width: 7px;
	height: 7px;
}
.ui-dialog .ui-resizable-se {
	right: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-sw {
	left: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-ne {
	right: 0;
	top: 0;
}
.ui-dialog .ui-resizable-nw {
	left: 0;
	top: 0;
}
.ui-draggable .ui-dialog-titlebar {
	cursor: move;
}
.ui-progressbar {
	height: 2em;
	text-align: left;
	overflow: hidden;
}
.ui-progressbar .ui-progressbar-value {
	margin: -1px;
	height: 100%;
}
.ui-progressbar .ui-progressbar-overlay {
	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
	height: 100%;
	filter: alpha(opacity=25); /* support: IE8 */
	opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
	background-image: none;
}
.ui-selectmenu-menu {
	padding: 0;
	margin: 0;
	position: absolute;
	top: 0;
	left: 0;
	display: none;
}
.ui-selectmenu-menu .ui-menu {
	overflow: auto;
	overflow-x: hidden;
	padding-bottom: 1px;
}
.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
	font-size: 1em;
	font-weight: bold;
	line-height: 1.5;
	padding: 2px 0.4em;
	margin: 0.5em 0 0 0;
	height: auto;
	border: 0;
}
.ui-selectmenu-open {
	display: block;
}
.ui-selectmenu-text {
	display: block;
	margin-right: 20px;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-selectmenu-button.ui-button {
	text-align: left;
	white-space: nowrap;
	width: 14em;
}
.ui-selectmenu-icon.ui-icon {
	float: right;
	margin-top: 0;
}
.ui-slider {
	position: relative;
	text-align: left;
}
.ui-slider .ui-slider-handle {
	position: absolute;
	z-index: 2;
	width: 1.2em;
	height: 1.2em;
	cursor: default;
	-ms-touch-action: none;
	touch-action: none;
}
.ui-slider .ui-slider-range {
	position: absolute;
	z-index: 1;
	font-size: .7em;
	display: block;
	border: 0;
	background-position: 0 0;
}

/* support: IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
	filter: inherit;
}

.ui-slider-horizontal {
	height: .8em;
}
.ui-slider-horizontal .ui-slider-handle {
	top: -.3em;
	margin-left: -.6em;
}
.ui-slider-horizontal .ui-slider-range {
	top: 0;
	height: 100%;
}
.ui-slider-horizontal .ui-slider-range-min {
	left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
	right: 0;
}

.ui-slider-vertical {
	width: .8em;
	height: 100px;
}
.ui-slider-vertical .ui-slider-handle {
	left: -.3em;
	margin-left: 0;
	margin-bottom: -.6em;
}
.ui-slider-vertical .ui-slider-range {
	left: 0;
	width: 100%;
}
.ui-slider-vertical .ui-slider-range-min {
	bottom: 0;
}
.ui-slider-vertical .ui-slider-range-max {
	top: 0;
}
.ui-spinner {
	position: relative;
	display: inline-block;
	overflow: hidden;
	padding: 0;
	vertical-align: middle;
}
.ui-spinner-input {
	border: none;
	background: none;
	color: inherit;
	padding: .222em 0;
	margin: .2em 0;
	vertical-align: middle;
	margin-left: .4em;
	margin-right: 2em;
}
.ui-spinner-button {
	width: 1.6em;
	height: 50%;
	font-size: .5em;
	padding: 0;
	margin: 0;
	text-align: center;
	position: absolute;
	cursor: default;
	display: block;
	overflow: hidden;
	right: 0;
}
/* more specificity required here to override default borders */
.ui-spinner a.ui-spinner-button {
	border-top-style: none;
	border-bottom-style: none;
	border-right-style: none;
}
.ui-spinner-up {
	top: 0;
}
.ui-spinner-down {
	bottom: 0;
}
.ui-tabs {
	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
	padding: .2em;
}
.ui-tabs .ui-tabs-nav {
	margin: 0;
	padding: .2em .2em 0;
}
.ui-tabs .ui-tabs-nav li {
	list-style: none;
	float: left;
	position: relative;
	top: 0;
	margin: 1px .2em 0 0;
	border-bottom-width: 0;
	padding: 0;
	white-space: nowrap;
}
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
	float: left;
	padding: .5em 1em;
	text-decoration: none;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
	margin-bottom: -1px;
	padding-bottom: 1px;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
	cursor: text;
}
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
	cursor: pointer;
}
.ui-tabs .ui-tabs-panel {
	display: block;
	border-width: 0;
	padding: 1em 1.4em;
	background: none;
}
.ui-tooltip {
	padding: 8px;
	position: absolute;
	z-index: 9999;
	max-width: 300px;
}
body .ui-tooltip {
	border-width: 2px;
}

/* Component containers
----------------------------------*/
.ui-widget {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget .ui-widget {
	font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget.ui-widget-content {
	border: 1px solid #c5c5c5;
}
.ui-widget-content {
	border: 1px solid #dddddd;
	background: #ffffff;
	color: #333333;
}
.ui-widget-content a {
	color: #333333;
}
.ui-widget-header {
	border: 1px solid #dddddd;
	background: #e9e9e9;
	color: #333333;
	font-weight: bold;
}
.ui-widget-header a {
	color: #333333;
}

/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default,
.ui-button,

/* We use html here because we need a greater specificity to make sure disabled
works properly when clicked or hovered */
html .ui-button.ui-state-disabled:hover,
html .ui-button.ui-state-disabled:active {
	border: 1px solid #c5c5c5;
	background: #f6f6f6;
	font-weight: normal;
	color: #454545;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited,
a.ui-button,
a:link.ui-button,
a:visited.ui-button,
.ui-button {
	color: #454545;
	text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus,
.ui-button:hover,
.ui-button:focus {
	border: 1px solid #cccccc;
	background: #ededed;
	font-weight: normal;
	color: #2b2b2b;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited,
.ui-state-focus a,
.ui-state-focus a:hover,
.ui-state-focus a:link,
.ui-state-focus a:visited,
a.ui-button:hover,
a.ui-button:focus {
	color: #2b2b2b;
	text-decoration: none;
}

.ui-visual-focus {
	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
	border: 1px solid #003eff;
	background: #007fff;
	font-weight: normal;
	color: #ffffff;
}
.ui-icon-background,
.ui-state-active .ui-icon-background {
	border: #003eff;
	background-color: #ffffff;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
	color: #ffffff;
	text-decoration: none;
}

/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
	border: 1px solid #dad55e;
	background: #fffa90;
	color: #777620;
}
.ui-state-checked {
	border: 1px solid #dad55e;
	background: #fffa90;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
	color: #777620;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
	border: 1px solid #f1a899;
	background: #fddfdf;
	color: #5f3f3f;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
	color: #5f3f3f;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
	color: #5f3f3f;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
	font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
	opacity: .7;
	filter:Alpha(Opacity=70); /* support: IE8 */
	font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
	opacity: .35;
	filter:Alpha(Opacity=35); /* support: IE8 */
	background-image: none;
}
.ui-state-disabled .ui-icon {
	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
}

/* Icons
----------------------------------*/

/* states and images */
.ui-icon {
	width: 16px;
	height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-widget-header .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon,
.ui-button:hover .ui-icon,
.ui-button:focus .ui-icon {
	background-image: url("images/ui-icons_555555_256x240.png");
}
.ui-state-active .ui-icon,
.ui-button:active .ui-icon {
	background-image: url("images/ui-icons_ffffff_256x240.png");
}
.ui-state-highlight .ui-icon,
.ui-button .ui-state-highlight.ui-icon {
	background-image: url("images/ui-icons_777620_256x240.png");
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
	background-image: url("images/ui-icons_cc0000_256x240.png");
}
.ui-button .ui-icon {
	background-image: url("images/ui-icons_777777_256x240.png");
}

/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-caret-1-n { background-position: 0 0; }
.ui-icon-caret-1-ne { background-position: -16px 0; }
.ui-icon-caret-1-e { background-position: -32px 0; }
.ui-icon-caret-1-se { background-position: -48px 0; }
.ui-icon-caret-1-s { background-position: -65px 0; }
.ui-icon-caret-1-sw { background-position: -80px 0; }
.ui-icon-caret-1-w { background-position: -96px 0; }
.ui-icon-caret-1-nw { background-position: -112px 0; }
.ui-icon-caret-2-n-s { background-position: -128px 0; }
.ui-icon-caret-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -65px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -65px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }


/* Misc visuals
----------------------------------*/

/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
	border-top-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
	border-top-right-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
	border-bottom-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
	border-bottom-right-radius: 3px;
}

/* Overlays */
.ui-widget-overlay {
	background: #aaaaaa;
	opacity: .3;
	filter: Alpha(Opacity=30); /* support: IE8 */
}
.ui-widget-shadow {
	-webkit-box-shadow: 0px 0px 5px #666666;
	box-shadow: 0px 0px 5px #666666;
}
css/images/ui-icons_cc0000_256x240.png000064400000011012147361034410013012 0ustar00�PNG


IHDR��IJ�gAMA���a cHRMz&�����u0�`:�p��Q<PLTE��������������������������������������������������������������������������������������������Z�ZtRNSXG|"2���wf�����ZNz�@e�S�F��caM�hm�s�}�����䁎]����������b�p�
Ιi�8*�yѧȓ�د�͐���ǫ�ʄbKGD�HtIME�)�r�kkIDATx��]c۶�H�阒�K�8n�&s6/�^]�umԦk�:����z�����;<�R�h�l�G����@Y���� �d�Mز�0rz7/��	f@e�b��`@�c���`��r~��&A-�����
2���9��~�
�tΠ ����2'�L�`�Dz���x�0�O��;)��>��L�S:1��ǀ5��Ի�B������EDDDDDD���	n�JX��yO�4��'��|���J�����f7�ńU@	�D���!�!�~{�=ɖ��s�LBI�`�܂��f�hm����,�ף�mV$����=d�c@�.�=�s���i��ށG��/�B�ܽ�Ƿ�J��I��<\i�
�
���뷕�#���˜�: ��Hle����F�<\�|��O�d1�s�9+3;-�˟5�ׄ�H�,�0n9�o������=D�O�H./H��:ݩ۾\���dDDDDDD�ME�m�=݌IJ�]��
.U��ր�*���lm���.���^���N����Ɋt�o�o����zQ?/O��Z6�'^{Å��|x�K,�=��#�m���[;'��aK4��k4��je��NϷ؀�tFko��N�X�{��p�d0�	����z�`]�t�`���ę�1����XL��B ��$�
K�Z�����p�N���y���~>&"""""bԸܻ8wTȣ��36�X���n�;�����g`��Z/'����ʎ�;��7}�jm��tx�շd��0�O/!`/�/���$���3�j�^_pМ��7N@n�H,�0o�'����i ���� ������M�}�R���Y�@����;=������[҉`��O���a���<1�^C��B����k��_DDDD�Fz�od�|�U��5��i)���bz_ip5RR�WbT�!l�@�R5�Cf|�Be:��.�3��m�G/t{��߈��"��g���M`\X��9A)�)�SXb7t,i��X����;6*�@�+4t�F�#H�M�����
2�1�&C��!�O�
��/��+���n��}HFH@_t�?""""�f!S~B�~�[�[C�n*7��r���`�r�\*f49��qK���E
@g�JqW8d�(n� '4*�^QL��W�mR�Es�����C߶�Tf+[�uz��I�	���t��U��m5�AZQiB�� 1�D'���Y�D�JCc���8]�&�{0���������TG$!	&�j�I����`
�CU\��h���<�@��{��1�{�.���J��}L�iR �7m>H�UxW�i�Ju���y�����U>�b����.p��K!/�|oO��ׯ$@����nr@I���0pxx�`_2 ���?-� �x��~�9pT
�GDt'�=�!���|/\�
�����c�&�, ۟N����&�B} ��<�9~Fu!y���;�L`X�\��!�-����&-����%b2�1v
F���.�7��N���N����������U~�# �
V홛s0��uW80�-p��%�d��C�-Jt��������v7�DDDD����?=�6�m�#A���G�m�Q#�vc�kyޞ[�&�k�B�������d�u@��6�?�43�E��S��&�wZG�JE��?�]�y�Yi2=�\��k��h5(�3����Tq;���1�c��r����7o�_�;�9f~/_{�A����o�
��B�A��?�6�Bn�”&HV�_,\
��ٯ������.R�:V3mt�	�fO<}v��6ʤ}g�=^����`��Od|��x�S߷�kg>����80����v���(�,`�
u���h�.l����)�cb����,��C��j�j�[Rߧ��i�2�DZ�1@�&�Ƀ?�/�����	H��uj��g�O�c���|��(��9h���h��a��0��C#^$d�a��#�$ɟrwv�__��~S��z�¼z�u�Z����ZV���wZ	j�P*ܓ�@&��
�w��H�����8�,��<�O����r����%@���s>St�Qs��M�?�N{�
0>yA���AQm�����=X	rqQt�
(""""b��i��1��\�y�[U�޻�iA
+��·�@����W_
_���)�K�?�܇'O�&��h����V���M9̦��/a!��Q�	������¿�+���,�iӍؔ=d]�:�t3���*AW�1^��n�_I�r��J���4M���=�ݷ�=S���P�-#PNF�
���*R�kgj>�L���
W�u4����K!�Z���?5�Ci���/e���0!2���uP�T�)�9�-`>���3^j��M�Q�i�`����ol�_]�f�v%�e��(���O����H�4���p�,�D�Ϟ�?;�����u��@-�Rnf�j�����ġy�&��+[}J|.Ȇ��s8;S�/���A2|_�5J��G���W{p�P�a���i���s�fgggp����M���Y����s=a%G@��j��h��m��`i%cL0�k؇�����?��G�a���H�H��I=��_�"�Q��&���˚
�����ի#$.�W��1�`�s2"""��xw������m7j@\\�ͨ�㶛5�)u����ꎣ޵
,a�O��ř��y�,�_�/h]\���h޴9��`�#
M	[z��KuO_z˿Dܫ��*��kOJ�(7��v��\�e�
I�T}aTn�a��*���ba�oۺ�HX����a�E��zn
��NS�����&Sn4��A@��r8OW+�&�����bov,
�zh���&��T���ǀa�5:�=��S���D0��}b�!p��Zpވ�XG:`�����?�iYx��6�0�ي������KF>�3�Ȭ��D��P��#^>@(0(�R������ȠB�F�W���mA|�%C�B6 &&UZ����H�h���	��"�07�B�L	(�?�F�3��:&`f�)��!n��E���[��c��ǀ��|�c�w�`�~@DDDD�͆�9���~��ݔ^��
��\�)�\�������7���UV�?I�@��+3�}�T���&�
)�
�s!N��֫Cњ��jE&��n߆s?����'�5�{���O���v��9(�-�o�_Hu����K��J�G���PZ��)��j\X��_ThM��<:��{��y������ �����a����!)l�?\�
���>W�����ޠ��d����ܵ��r�L��u����W^h�z�n��*w���}>�.��ϕox^��V�2�U+��3��N�_�7]��$邶_��|]�rS��W�����p(?Og���-���?�h���_��!��\_�L�CV���47��L!~B@�=��u�g���#`����B��B��-Ⳁ3Q�6�.��}�������v)A�SY2p���>`ԚAPbt�*�U� I맃�����Uh� ������v��ڑ��Hu��ڕ��Jw�#""""""<��K�G���5$��/��� �?=7��$�L���%�7vD��c�M�DDDDDDDl����� !��5!�h�HD��k@��U�@��R��Pno/_ڵ7S_�Cu�������W�_�kU���_��8�c@Z��cA��w�1r����}݇O%tEXtdate:create2020-12-13T14:23:47+00:00!��%tEXtdate:modify1985-10-26T08:15:00+00:00"�StEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_ffffff_256x240.png000064400000014527147361034410013366 0ustar00�PNG


IHDR�E�r@gAMA���a cHRMz&�����u0�`:�p��Q<bKGD���̿tIME�(�u�:IDATx��]m�]�Y~�)*��|�&q��4!K�K$�d�k~���#>�u�Ҫ�n��?šv�BRi]9�?7�Z��?XS�T�1��8�jڵC��Oi��"��k>�8�ܻ���<��{�yg����9g�wfNB��F]���" pD���u!��":X�M��_?�}�M�&
�9������CD�!��5N�"�%}��c�c?7�i�5���<��6
z͕�!@��<��yZs.���Sw��:n�P���(�^z
‘w������6
z�(��ק���n%s-@��?��sp?��֤��F�4��߂:F]��$�$t���Xu1���#ZG$@���# pD�H����iG]���f�ty��im�JͦZ|���|�/2/��2Wo7�9�r��m���*]]oe^��r7�&���oJ��]\���@v�lu>��Ǿ^���k��ޠ��C�f����9���s	�`a��t>��˿�!��G4�H��	8"G$@�����Q`�@HFx���P��w7K>�Fe	�Y�TIu��N9��˷��B�
��Y�j���{W�S�'�\�䨛گ>�*��%EpU?�9}��@>U0_�>�����Y������	D�Ԁ�"��/�|�O����t�6��MJ@Eꄕ�g�Β_^�2�Enϻ���2K�U���q��ag�k�O��G�6��[�l��O��6��U��e���ٻ@7��y��X�.�u����Yn���R	Twp裀�}���8 pDK`���# pD�H��	8Dt@��h��p��i�h�t�z����VZ�x���.�~9�[�㷬̷��y��w��u�X[��0N.e��y��t�iR}�Xn�-�O�b��9����^���N�m��F�Q�>��[����/N:��o��9�3O-�� �}}�tT�=I��~%(�"�����һ��J��{ͥty��r��W�0�v���H������x�!>w�>m篃����g?�I�GG+�AR���Ԗ3��Il�]���t�r�����Ӂ�Kg��ޅ����ނ����r)�+���N��"®�&��4E5�<A�ӯ.|r��G� "q\|_@D(���	8"G$@����6V��\�y�}���
Pc�楳�NǺ+v0���f+�>��0��|-�M-q����T���K?�P�Df�la6��4Җ���q��=r��d�����絧����?,:y����5,՘X�.�tu��=��חT8ʝ�;�{e�X��R;xل�U����Fg9WH�K��@�o��B¦FW៳m��-F�,~�:E[6���py��gؑ=�Cȟ\��\����cL�/���Bqx�ll��2��F�ׯIQ~J���˛�yw�<fRQ*ƨ;�f8��m��!dz�1��~�>�n�)�y>'�(b3�4Dw���隷
��#��G$@���# p��
����ϗmsِ�����-��z��A���}��Np�AyV���m�Ww�u<�;2�Vj��;���Xe)�_�	ĥ�%Ү�HcՐ>�VoSu��YB��A���d-��wiQ����r����Le k	��E�h�mf��/�ou��I�\�#�`��|��߶��D�'�v���@�)a	t5�0Oe�a�T��4%�/�k���	(�?E����L
.'F��v���n�Gp�=G䳉�]���6"@�Q	�~ƍm�)���F�g�V��ĝ1����0B�[~4�O��RT��q�0,�G0n��b��/ bK	8"G$@��I����P�?�V����@��sd�k�.5t�]�5݊���ݚ9������h:�e+��L:e8�Y�J	:��
-��z�+����<n&H��}ź��D���¾E�z��r	]M�5u����E-"�����s谵��D���]�"Fj ,�A�.��p���Dq�&&��$���$�ʙ,��1��߯�)I
$8V��uƄY�	�g1g\�krfMJ�����I��SLb��!�&�Po�QZ+n
�Y"�8W�;w�)��~Ko�U��F�p�u|�Y���>�4Ƹϒ�Uܐ��DW���)NfqJ��؀憼���-�~�	�-2�#��P'L.�(�����G�������:��ő���/���<)~ܒ�1|�z��(]�gpY#@I�Y�bsh+�z�~�Z��->
��a�����:f1W�m-r�������3N�*~�w�1�β2W�S8���8	`<�|���}{��>��y3��	��zR�.3u���
~W;��������	��j�8��ۤ&s���L�qo3�.��"����;~/���`�1�w�0�{-Jfq�U҄�gB.�b�C�8�I�˞�0�
�	�B��4��>'��H��R�mf$ޕ�\/�_���Az�˷�	��l�{�pH1נ�_k����Y � ��0��F��0�$����l�0�a`>H*?M�貣mՆ�ny�X{�b
���A`O<:>��.��~ߨՍ78!\��=�h��L�t�#�;�Q��# pD�H�����d�Ap-�6�
GFӡEܤ�Ya�:�I�a�"_Q�+�y�����%G��Ы�n��`G}�_B����K]J��a�Z��"M�"k��"V�"�{���e��
�l"�Y��=�ې�ƙ��l����y�Ԩ�Jz�A���k2���ڵ��o�-k��Ƥ>'���mgV0b)@��"|�`��p�����K���!��W]
&�'�n�2-0��$�9���Ԣ�y�}�Wn�+�|EK�ž����.-��;8wR�a��F-�rN�s�'�66p�X�w�]�a?��;C�~��؋o�|�+���X�}��ź�]��\1�X���L���-~���
��m@P�״9u�*�bg���"z��B�D��?���	�
�+������rX���/�N��R��U�ߗ%ٗ�<N�����fDЛx�>L��3�_�˳�LH�'ig�KU�5"����&��g����9�����ᙊP�u�3�M;"���j�,k�"��P��a'��~�zv����!ڠ��'�1�tS���1�*n[�&��AP��)��o�%!�#���W�y����(�]T�'���)��Q�&r8���r�)��^�;ك�
ݡ������n��ϡ�3�mҲ]�*f5�kZ�]Nd�ESyߩ~�0��@ې�\pVKm�|��
�U�d�����~�R��#�G$@���#<�ncnL�+�F��g7{��ݞ��1�t1F�v�X]ƌ����6�g�׍��EՑ��:C���'��i��~�Bz�$}������3tRK_ZB9k��0�H]���]1��G��-�"�g��K��$@?+�4kTI����/En9Κ�~�?C�-t���
��x���M��~�L�6����7�ۍ]LQ8�����Q��$@n��ϑ����s�hQ�^�O�i7��B	D�+|���'�y����m��,
�i�+�M�#�oѱ,dr���������{�;QT�>�c�w-\\g|�m<n-����ヌ�
N�tp�)&��c��=-��9�0�IvFAOXp��ݾ�w�U�`?&� ă�ayqh���6��5��)XUh�	'=��*��ºU��Һ�E�5�[,=�+Z�_@��x�����n�:�x��<�W� ]�z�;��P�J�|���p�㓸���ܓ5�r��\@)w�i��g
���)9@U?��i����/����ҭ1��.��i�����ߓ�^V��|��xN���n�N��c��'�� �d��0�{��3����.��h��r]<��H�`�rg�ϔW~��?���-I��G���o�á,���q_p	�!f� ��_�n��Nǚul��{p{��;1�ҋ� ���&p&0�	'��u�d���(��sc�G����B+�t*d��z��v]���G���a �q-𣀕l�0�!p�D���0J�C��	ѷH��������OG�Q�����K�<u,�D�ʂ�����6t[`��]���Aڧ��ڴ���m��Jr�C�8��DH���C%�"k��x�xrx�G]�@~|�:�⽦��?�_u�#�C�^������t���B�A��e;fs��qO1�I���i�yvcaL�Q�g~K-�I��k̸�n�����c�v��U�.9�f1>�lP�mʯ/I
~�Pq����<mg�|��L�f�h���E/s��%�[DE��r�mͰB�ea��7I�����V2ŷ3"p��o/Zr��=R!*��|�-�t�����3�ߗ�����v}w�ft�h�6i��Ɛ;8p
�CWȕ��?U�I���l
��$� +���j���*���0��ӏ��M�m���|����d�j��v��
�( �3r�
�����&XҤKF5��L����ֆFw�<~�e߯��o��ɨ�.�1E�8�70pD�H��	8"G$����tB$a�1�0�WB�
�p�*������	�JG�a�Ɖ�U��ks��F��ц%��M�|Eʩ����06�<R�-0�6K��7�I�6���f�iR�r0��އ6��ѣKw�I�TI~Z���
�߲�By�L0�w����Rn��6
�C�M,�7j�OnbH'/6���	,�G&��o
v�7@c�N~p��6�2`;� H��t[��
T�ó�.�.݆��8"G$@���C%	/�%�<`/�F���Z.��9�X-�}���g��+x��S�+�je��&d-�ND�D �/R�r��M�~���ͣ�~�Ô�`�R�n�E��6��N�N�)uʶ���;ն�0������D���i��d�����N��+��x�W��*ǣ��t38�c8`
���&����a�i�}�av�ÌN��p���d��э/R_@��/��8z{q�Up���	����l�z}��?�~�fqj�&d]������oⒺB��8-g�����|�a�c0��K����t�n���=�Df�0��tO���>�_�_��>}C@�8��r���# p�p���|o�7���
[>�Z^Y����פ�bS�k��aˇ]�Q�k���4q8]Dk*wm49l���7jy���+:񕭏1�D����ղ���%�+5�a�w��U~{��J/�5����R𵮈�TZ��,�
"�O|	�Q����I��_�Q5}��K~|�2]~�����"Uq;��G��}���rR~W͟�
����5����<��s�k����w��u��������!>�'����\��,���>���}�x
�oͻxs���u�m�+O��)D���z@)�ʗ(w/)r�S%�99娑�*������b����o/��M@�7\����
�M�*� �C�cLO������UW�m�	rOUU@�ZWEƄ�n��!j��ڡ�:Oo��A�ZԦ���f!�1b[>�Z^3�	!�#zG$@���# pD��;e��<�do�d�m���T1v�o�T��̡ٕ�4�!B�J�װf�ObM�t�(N��@5}����
�ĤU��I+A�	���d�&TDT�~�����ڞC���E����A�~���� zG4�H��	8"G$@�ۗ�hd4��� t�^��pt�g	2�f����Nտ<�b��X�F���?@�����W
̪$�z�4���yF����^[	�e�f�b��?j�/�g��A�(;ٟ�:��K��Zt�q�a��r��
��.��c_֠��8�տĖA���3�`���s���o�C�������8�Ǜ��	мV�խ~��0�A�c��"���|��޻6%tEXtdate:create2020-12-13T14:23:47+00:00!��%tEXtdate:modify1985-10-26T08:15:00+00:00"�StEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_444444_256x240.png000064400000015662147361034410012713 0ustar00�PNG


IHDR�E�r@gAMA���a cHRMz&�����u0�`:�p��Q<bKGDD�<��tIME�(�u��IDATx��k�%Gu�m;���!�^��l0�[�HXĹ�H��:w8;�������g1s����]�&��<�����������Clfq؅!,"�·�Wu׫��{�v�Gwn�>U�UuN=�ΩS����d�5�x^/2ڄ���̈́�,ڬ+M�^���O��r�`:�S|{Y�`���`k?��a��6���1��@�5S�#�Gd��)�q�vXu�B@�*�J@`H�N�A�1n:�P��,D:A��q+�=��f�]S��q!���+Lm�>|���XhN�^�4
Aٔ�3C���J����`Z�Uێ=s�4����)��-��`F8�i�RY��CP�����C�Z�:ڬ�{���p�����@������pxh8�4^o��;�o2���Yؔ1m�=��	v�Ա���E�GJH���i��U�g�>͵k�6��R_�}�Sk��=��~5<eҷ���.��ܙ�n�oF��d{յ�U�^@��>]�L��-oz�	��e��%PEdR��=�I�l�O\r�6`�S�`��dxup���/
����@������pxh8�t��W�믕��9������К�� {��\B0�]��(eQ�����T��Q5�[	\B��{��V������C�!4({\�h�w�g�{
�Kh��l�X�vp-��Z�^IA:�Ш����ur&�%5�t�S���Ch���NKgn�\Pv:�[(���ݘ8�nb�K�Uk��]Ҷ�A�^�50��\B�i�.�.��4l]�[mkA���L"��.�v���2=�[�Yo�8�2��c`�`��
�T�y�6�ʸ�h
��V~~��~%����pxh8�4^/
���C�;K��	�pшV�g��RH ����Z��Ҳ�ܭL�fSm\�tl�����ehW��0�K@�9Լ��E��V����rs
�Ͽ[
���m�m�������ۚ^ؠ+o
sq�nۂ�� �fIcρ.�w{��ҫ5E�9�mcy���PJ٬0�)��b���^A��n90W����{��ϷŶ	�����Y�4P�- ��**� ��:�P�6=�
�|W�C���/��#�ڃ��qL���r���9�˒��
�'0��3g*�)�l��f_*��T�՜���)��������\Rvp3�
�."̣`��nի.��\ߤ͔N�Cm�s%��,���F^��pxh8�4^/
��^c���
���`�W��]S��o��]`Y����L0i�]V	c��>�
�z��\e�X�����oJ}@H��ٲ{�-.6f�FV;��u�L;[�@.{W��4m
���%���:���*�-��c7��0q�%�z�}g�P"^@Z�eO��!A��1�m�}�vu&6�z��M>6i�UVɚ�$�����dzu!�B��� �C�~yXM2��E/̽�X5��h���!�Hm�&�O!�w�8dP��
Qՠ�/PkCm�,�M{�lu�Z�:�t�D���eM׼Y�+�2�~/�����@������p���K[6����.ۤ�	���-���*6h?C�r��]�IL��O�XHZ�pU]֧���@�*�y�;n�-�J��R��=�O$!����U5������G*���"R}��ez@�M�,s�.��5&{g㧫�/[�Sqs�8ľ��*3{��i�b�W�ל\9�:���Z!����u�5	r�UЛ2�D��bz��L2�9��O�[��_���l����O�p=VBG"��"X�_�O���7e��*���َd2�'j
� �t�@d�'��Gx$���Y���.�d�����8ދ����+1l!��£/��C}���>]�Ǧ�@������p���&+
�}I�2Ƣ��]��A����68T9�G-�~B����2q���z^{��x\�S\�:�\�SJ���~Dݯy��n�	���OH�$�B�I�|�2��W�C��ܨI:]$:�^�΢b�K<�a!,�&�r�s��8X�.�P����~Oq��{�kY`Xg�G8���3\�I�O���-B�5o+c���"����e/
�Ivi��((E d<�^W�\��-��L&����9I�����)�ƥ����8;���!�5p
�U�a/iΔl��E<�t!(f}7 “�	~̧����jCl3�^�II�8,m�>,�U!�9�z�����ǒ�k�y�E<ߐ˿4��=�Y(R)'b1���do�+�]K'�q!���F��Pa�#��'������xAR(v���w1w�s:�?q'�nf��OOg���c>�l.b����dp]
V�?�p�iC\����z�X�0�k����]���c��ަ�^BXf谧0�5�U��ڽ$�B|���	��y�;�A��.��|/���K��x�f�ಈ�sO)�<�!�qf5}��̻��<���A�3�M��7��qPɤ]��c�`��Lq���h�ȴ TW��8wF��
��L"�z
���^`G�[UE0�h����ȼ,h���]�z�j��{ Ȱ�$s��b�Sd���W�.���)^���!���|����W@!�;�\�l�<�!�)b9yˁ�!�E@b�0��/�~�R7^!(��������a���$�(�<*�@������px-<��g8A����l=\N�tìR�>��e��Jyˆ#9��s���}�|�R?��B�6�3c�%����]�y�m�o�V��^̔R��4{�����r�Zp��u�r�9n���nV�&������
�B_�q�X���0A���_�E8�a/(�O|��3\j�ݥh1i��q_V��6�(!�,�mk�b?�'y#��<�M�r�CLtz鑫��W]�o�/.�\�3��l>��CH�4Z:`��3l�w���ɒ5S�&�,�HA	���?���O7��Ȫ����y�*9j�n�Rko�{lp�S��e�Y���<Ӈu�����r!����
%��g�td���3תk��7��NH��� ����5�;�Ǜh��
��j�<s<�U�갆͙��<�>���y^�0.�e��L����b����?�
��[*�w��Դ"~L�m�i_�$����;H�[d�OQ���Wg~Qa��v`'����U,WS��}a�-|���K��Kl�1���
���=���6/�[�:���IP�6w�ʟ�~6?7��9��t��Bɺ�ȕ)�C�F���h��k��I`�z�6i���F��s�3��Gآ�fP��؟w�#cXS�����6�χ�;>*�'"!����S��~)Z�!`�@�Q�A����%&��?g��.n^�[�CA�9�`����o1To�����(��|��5�= 4��>�NE@�p����p��~���$�S&�q�N��w��8JHH�.ad�/�.uS�?�͙_7��)D�ߍ�0���~�>-��ӗ��FZ�c� 1ْ��h6���G��8?S���$�������eЁ�?w�!� ����𺀆�@������p4O��X�N�IT��rH�<�ݡ;ކ�L'P�5����h&۵�k�>��(��G8�=��;xw��BLQ;F��΋�n�c���-�|��
���+��y{�"����A�GH_�Y�$o��D�YL�v�6���}�If�0͂bQE<�cg�&��
�Kq�����X=�W�b�N���nW�ǫ�]�"ټ��r��ͅC�y��ϐ�L�D�����U��˳�}/ÀI`�+�&p���')\}���>�/��|�OI�
72��~�~��h�2D��9�|��PՄ�x0cEQ��^��.�O�9ߏod��������(]4�#eL���T�g��\g1�<fQ'��u�<�/?�'�^A=�!Ў�_\���1�����c�q�EA�=�!�b����.3�`�rij3$�
�Sz

sWՔ=�,�ЉZ?,+���L�W��+�<��ڿ͙�#�c����`':��6Δ.S�K���?R��+@�0�z?!�X��,����n�Qq;{^���U�;+�|a�f�dzBVK���|=�h'�_�i�$��n�3<]%`�5�<�(]�LH�v~��A�r_a�U���7Ad����n:�p.����NE�:ZW�\��U�rf��	���,b���`G:����"���vGE��'xx1�(b���y��\�9֜��\��\��D��ح���Dݠvq6���.�8D:����)��=C�o���-�c�ml��`�i�v+���
�<�4!�|�.���iR?�q�����p��>�8bGnSy��A�RJm5��PV8��@3Zt������i���nu���g�c�"Ìm�4w��IV��$����!�I����c)�d�}�E�~J�^������/qwGb���*�X*Ț���qS���h�.�C����@Ñ�CZ�w�d��k�5�{��R�q9�Z�(����>�
^��0��{�G������;r��J؟�н^��"�<f��?Qb_fƅ�SEթ��
��&���j|�2������K�:
�
X�*I��F9��kY�"��F*����F�H=�jZ�W�<�sA�>ټ��'5��Xb�;�m
���HH�b<RH��?��`�i {�4��<�^�k��zR�.����ۤ��vG�!����Ie��;"S��y�6��	�˜�e��h��F:��+��O���W��H�?'��u�w��q��*�p1a�Ns��Чc���ȪA�*����7��1e�����Ne��ӣ2=@��[�	`z��ʸ���?Pӑ}���/k�廓t/<E�{��1n�=_�۝(#3C���P���x������4%}ϠW'�;��[=�4wGZ�S�6^�$�!��SJ��vs+�s�U�)�t8`�M���Á�,�ɛ�1�`<1c��X�Ixm`������pxh8�4^��u��`�!+!P��	#�c�U�X-��`'�B�F*<-m
6"MC�����wDA?"��A���8�U\e(�;�]����N��\��{�x!�5}Qy�N�lC
G�[�;]|���:tT���:"+�j��6���CV
��6"�aIA'��r�`��*�_oQ�'�'Y4X��q��

X���b��)�`��9	�@���N.��b��™�,�A�i-ݞ<]YL�u�7K

a��!@7��!�'
?̝�@:W)Oݒ�n�,p9�p�4&�u3uK«���pxh8�4^/
G^L{o=F���4�6��}�g����%@�n�~�r�J&ϰ�1^G�a�8��=��~d���A��͗x%!��ZB�;d�����L��8�[v��o��BZt��p�i~ȅ�=�!p����
vj0�T���#w��8ö�?�kx�k2����_�*�8����n�.�j�\�7yW<ÕLr/��.��
�W���{�s��<�x;�8�\<�H;��v�
!O/��}ytOF��.7���Q��7��P���ȳ}��/#E���/���0�t%�9�;�M�KL*��%�!�������V
G�+������A,�<��M^΅�OH���s���2�}d�����O�w��Q�y����4~��pxh8�4^�Tl�ԥ/�ń�EŹ����|��WD���y�����K����7���4�2ξ�.�\�\�y8��K��?/�_��6���~�o��C@�?�m�U��,����h�Um��ߖ~>�~ķ�ߖs����4]|=�u�K"�*V���J6���C�;�n�.����a��Po0K�3��Gث���������Rm
�3OGC�q�8��	5�����@�؁V�\R���%��g��9��[3��	Ω�D�e��Gh���
��
��{\����&>̇�)�{?,o��P���篘B�.ܔ�)���хd�߃!@Lm���W�I&��,={v��{<C��1�Q����_�(6z���V��*�_�ԒpL�@�c��,��vR�mm��ߖ~>�~ķ�ߖS���t@�ե.	����,GY͜�S��0�]8��Ӽe��.ߠ�5 ���q�Fw���_H����rnb�uȰg3�.ߠ��
B�
l8�4^/
����@ÑU�N�v�G����j]�.�c�P�nݚB���N�CB^l\g�H��3�`c�Ηw�����C���������C�!f�	Ӂ/`7��(��0^!9�9�z��&@%�?2f�f��-�(s^���=*�/5^/
����@����غ�B��,���Bf	��{�۬H <*B�}�gа�n���Ags �
�A�ֺ=�{� �]��CX�SC�W/�1���'�-�VXeEٶ`5�)7��1���~�+�`��%��?�`�p�x�K;��*u��~�佁����1�<���f��e�*��}�kP�#�ʱ��	�Q
���}�P���zyh�J{(;�0����5�4[W���?k���*�%tEXtdate:create2020-12-13T14:23:47+00:00!��%tEXtdate:modify1985-10-26T08:15:00+00:00"�StEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_777620_256x240.png000064400000011012147361034410012701 0ustar00�PNG


IHDR��IJ�gAMA���a cHRMz&�����u0�`:�p��Q<PLTEwv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv a��(ZtRNSXG|"2���wf�����ZNz�@e�S�F��caM�hm�s�}�����䁎]����������b�p�
Ιi�8*�yѧȓ�د�͐���ǫ�ʄbKGD�HtIME�)�r�kkIDATx��]c۶�H�阒�K�8n�&s6/�^]�umԦk�:����z�����;<�R�h�l�G����@Y���� �d�Mز�0rz7/��	f@e�b��`@�c���`��r~��&A-�����
2���9��~�
�tΠ ����2'�L�`�Dz���x�0�O��;)��>��L�S:1��ǀ5��Ի�B������EDDDDDD���	n�JX��yO�4��'��|���J�����f7�ńU@	�D���!�!�~{�=ɖ��s�LBI�`�܂��f�hm����,�ף�mV$����=d�c@�.�=�s���i��ށG��/�B�ܽ�Ƿ�J��I��<\i�
�
���뷕�#���˜�: ��Hle����F�<\�|��O�d1�s�9+3;-�˟5�ׄ�H�,�0n9�o������=D�O�H./H��:ݩ۾\���dDDDDDD�ME�m�=݌IJ�]��
.U��ր�*���lm���.���^���N����Ɋt�o�o����zQ?/O��Z6�'^{Å��|x�K,�=��#�m���[;'��aK4��k4��je��NϷ؀�tFko��N�X�{��p�d0�	����z�`]�t�`���ę�1����XL��B ��$�
K�Z�����p�N���y���~>&"""""bԸܻ8wTȣ��36�X���n�;�����g`��Z/'����ʎ�;��7}�jm��tx�շd��0�O/!`/�/���$���3�j�^_pМ��7N@n�H,�0o�'����i ���� ������M�}�R���Y�@����;=������[҉`��O���a���<1�^C��B����k��_DDDD�Fz�od�|�U��5��i)���bz_ip5RR�WbT�!l�@�R5�Cf|�Be:��.�3��m�G/t{��߈��"��g���M`\X��9A)�)�SXb7t,i��X����;6*�@�+4t�F�#H�M�����
2�1�&C��!�O�
��/��+���n��}HFH@_t�?""""�f!S~B�~�[�[C�n*7��r���`�r�\*f49��qK���E
@g�JqW8d�(n� '4*�^QL��W�mR�Es�����C߶�Tf+[�uz��I�	���t��U��m5�AZQiB�� 1�D'���Y�D�JCc���8]�&�{0���������TG$!	&�j�I����`
�CU\��h���<�@��{��1�{�.���J��}L�iR �7m>H�UxW�i�Ju���y�����U>�b����.p��K!/�|oO��ׯ$@����nr@I���0pxx�`_2 ���?-� �x��~�9pT
�GDt'�=�!���|/\�
�����c�&�, ۟N����&�B} ��<�9~Fu!y���;�L`X�\��!�-����&-����%b2�1v
F���.�7��N���N����������U~�# �
V홛s0��uW80�-p��%�d��C�-Jt��������v7�DDDD����?=�6�m�#A���G�m�Q#�vc�kyޞ[�&�k�B�������d�u@��6�?�43�E��S��&�wZG�JE��?�]�y�Yi2=�\��k��h5(�3����Tq;���1�c��r����7o�_�;�9f~/_{�A����o�
��B�A��?�6�Bn�”&HV�_,\
��ٯ������.R�:V3mt�	�fO<}v��6ʤ}g�=^����`��Od|��x�S߷�kg>����80����v���(�,`�
u���h�.l����)�cb����,��C��j�j�[Rߧ��i�2�DZ�1@�&�Ƀ?�/�����	H��uj��g�O�c���|��(��9h���h��a��0��C#^$d�a��#�$ɟrwv�__��~S��z�¼z�u�Z����ZV���wZ	j�P*ܓ�@&��
�w��H�����8�,��<�O����r����%@���s>St�Qs��M�?�N{�
0>yA���AQm�����=X	rqQt�
(""""b��i��1��\�y�[U�޻�iA
+��·�@����W_
_���)�K�?�܇'O�&��h����V���M9̦��/a!��Q�	������¿�+���,�iӍؔ=d]�:�t3���*AW�1^��n�_I�r��J���4M���=�ݷ�=S���P�-#PNF�
���*R�kgj>�L���
W�u4����K!�Z���?5�Ci���/e���0!2���uP�T�)�9�-`>���3^j��M�Q�i�`����ol�_]�f�v%�e��(���O����H�4���p�,�D�Ϟ�?;�����u��@-�Rnf�j�����ġy�&��+[}J|.Ȇ��s8;S�/���A2|_�5J��G���W{p�P�a���i���s�fgggp����M���Y����s=a%G@��j��h��m��`i%cL0�k؇�����?��G�a���H�H��I=��_�"�Q��&���˚
�����ի#$.�W��1�`�s2"""��xw������m7j@\\�ͨ�㶛5�)u����ꎣ޵
,a�O��ř��y�,�_�/h]\���h޴9��`�#
M	[z��KuO_z˿Dܫ��*��kOJ�(7��v��\�e�
I�T}aTn�a��*���ba�oۺ�HX����a�E��zn
��NS�����&Sn4��A@��r8OW+�&�����bov,
�zh���&��T���ǀa�5:�=��S���D0��}b�!p��Zpވ�XG:`�����?�iYx��6�0�ي������KF>�3�Ȭ��D��P��#^>@(0(�R������ȠB�F�W���mA|�%C�B6 &&UZ����H�h���	��"�07�B�L	(�?�F�3��:&`f�)��!n��E���[��c��ǀ��|�c�w�`�~@DDDD�͆�9���~��ݔ^��
��\�)�\�������7���UV�?I�@��+3�}�T���&�
)�
�s!N��֫Cњ��jE&��n߆s?����'�5�{���O���v��9(�-�o�_Hu����K��J�G���PZ��)��j\X��_ThM��<:��{��y������ �����a����!)l�?\�
���>W�����ޠ��d����ܵ��r�L��u����W^h�z�n��*w���}>�.��ϕox^��V�2�U+��3��N�_�7]��$邶_��|]�rS��W�����p(?Og���-���?�h���_��!��\_�L�CV���47��L!~B@�=��u�g���#`����B��B��-Ⳁ3Q�6�.��}�������v)A�SY2p���>`ԚAPbt�*�U� I맃�����Uh� ������v��ڑ��Hu��ڕ��Jw�#""""""<��K�G���5$��/��� �?=7��$�L���%�7vD��c�M�DDDDDDDl����� !��5!�h�HD��k@��U�@��R��Pno/_ڵ7S_�Cu�������W�_�kU���_��8�c@Z��cA��w�1r����}݇O%tEXtdate:create2020-12-13T14:23:47+00:00!��%tEXtdate:modify1985-10-26T08:15:00+00:00"�StEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_777777_256x240.png000064400000015707147361034410012735 0ustar00�PNG


IHDR�E�r@gAMA���a cHRMz&�����u0�`:�p��Q<bKGDwd�ǭtIME�)�r�k�IDATx��{�eE}�?H(cX�1�²[R�`����J�H��E�$U��Œ�cE���Q�2;#��fŹc�,Hj�cQ5��5P�qK���$��1���%'�W�9�:��;��=���s�=��>������׿��h2�t</
�mBڃ��f���6+�J�D��0���&�s؇N��_�Bs�&�ڏ>~?��
c{v��j%�ؿ��)��#D�E��F
Iܤ�G���
�R�SơC��$ELځ!�GD�NP)~��tϷ=;��wהme�B�zs�
S���M,4�R�m�� 1�z�̐!(�hnE�6�UjնcO��6�y7��Yʶ~fK��1l��WM�.Ӟ�*��+p��ŔG��Uz��F��Qb�^��pxh8�4^/
����@����q��MF{7��2�m�0?�Ξ:�vux����r�n0s��Os횶����Wr��G��hA���2���t[l{S��O��7#��N�G�=��ZƪS/�co�.����7���Vk�2O���j�blc�l`.[���<%}a������x��t�7^�p�����@������pxh8�4^��CF�W�믕��9������К�� {��\B0�]��(eQ���G���؅�jl���*�,)����C���
r)BhP���/0���r�H(�0��,@�%6���qp-��Z�^IA:�����ur��%U|��)I���!4��ig�371�������E:��q7����n�05A���uP��y
̺8�Pj���K�9
[��E�Z���.�Ȫ����.�L��u֛���L��;X�t�0Ua���2�9�@�às���_!�_	l8�4^/
����@����7�&�R�?�~¥\4����F�>�2H6F��{�V�C��l9w����L�.;�S&�2�+�@��%��j����n+�Nti�����߭t�h�׶K��J`��mM/lЕ����S�m��mu����@��݅�=�n���"k�ݶ��m�EJ)��:�uPSV�+ (�-�*ty�}o�����6�ׁ��vh[�Y+��[@VUT���:�P�6=�
�|W�C���/�&#�ڃ��IL���r���9�˒��
�'0��3g*�)
�hv�/�h*�j΁D���ػ�{�K�n�T��E�y�ۭz��p�뛴�ҩ~��}��� �,�#	/
�_
n8�4^/
����@�1Huv��l0�\�ޮ���7��.�,vYً�&�4�.����n��S=�n�2o��_���7�> dAb���~������j��.4�Icg�hÉwu�N���Љ�^�M�z�3:0뫲����B�r�fSz!�����]�sUϷ�lJd +
� ����|��L�Wmu���j�uQ��G�	��(�"ö���ֺ�c � �B�V��M+V=A�=������4S�<��#s/5V��.�~�{32[�I���AH�]$	���!���jm�n.�R�$��V7�ŪM�I$�l��d�:X��t͛�(�a��xxh8�4^/
��	@kXI�����M*�Љ�Ѣ�)�b���04(�.�M3Q#?]!i�UuY�a�N�Y̫����U��*E LJ�{���"
���O��9U{���D&���"2}��ez@�M�,s�u�kL��&OW?_�(ȧ��>�qH|gUf�xm�d%�>��9�rV��;UO��2�_�$Uk2���5����?��� �P���쀆m�#�.V������c%t�H��<"Q�����[���[@V�:�<ۑL&�DJ�A����"�=��>�#�|^����eݓ,�Ҵ]^#�{	V�~%�A��[n��iG�9@����°�ꙴ�>]�Ǧ�@������p��̦+
�}I�2���]��!��q�mp�rJ�Z4�6�<!Y�e�,��2�l-񸌧��uֹ���"0k����_�=������r)��O�3%�^����p�&�l��{
;���GX�I����[�ʝυ��`	��CU�sD�=�=��1�e�q`�ᄶ��pq&�?��v(v"�y[�%�D��|MH�( ϰKS��@)!����_�*�,�&`2�巈��I"0Ǽփ�n�۸�;��1�g�
≯FN�;�B�%�"�0@^����w�b<	���|ڐ���{�6�6C�e�� �#B�B�H}�AHE`���!�@}En��evp/4��/4shV��TʉX�����l%�kI�$?.�����X�*�y"��!�I�f|��d��#<^�L���V��9���x/3������"�O?������Y\��U���E����h&(� 8���0h'yW����'�w(����:�)yMj�m�v/	����{������_BPd��X���j�@��pY�ǹ���Y��0�8��>��_��Umv� ���&d�J�8�d�.��6�B�M!S�r,�G-o��*��q�4[1=�kجDW�;rߪ*��v.1�X�`A3D���ů����b��&����N���篥_E��Ds0�x�+C�d�ʾ�Ut��^#�����Jg��
§���-�+��#���� bx���J�x]��`/S�0��~���&�FI�Q^/
�����h�1A��YZ��p9y�
�J�����.��&���
Gs����}�|�R?��B�>�3c�%���k`�.s���6�7�+P��/eJ��}���1^�U9e-���&�}9���w��nQ����������Г0�$��:`�.0A7��N�.p��9�^P�>;�g��P�K�b�2��>Q"�Gڴ�����){zx���S��O�fb���f9�a�
:=q��	.Ƿ���C.�Yvh|��!$`�-0п���;JzR��d�L��Ru�H?ZP��z��3�2��M�-Dup��:�\%G-�.���V��'9�:?P��e��ȳ}X|���.�].�{�P�Z�����S�p�ZuM�&��	��t�����p��x+-�2xBZM�g�'�jSְ9s�����g�=����e��s����^ʿ���7y�B�� 1�R-�&t�@�Ƙ��eIb|~-�Á4�h��"�˴��ϼV��%�I�;���{�D�&1�������=��/s�/�Q�&�3>;4��'R�4��;��o��|���&A)��I��V(2���@��2��7�K��D�L��uR��N��\'�I�Uۤ���ygl�Q��P�[a�f�A�nb�|^Q1�!��)���C�p;�#�-����UBu���S����f�������%&�?g��.n^�[$CA�9D�`}�O���&R5j�Q|O� c�]z@hd�}����
�vn���rw����$�S&�q�N��w��8FHH�.al�/�.uS�?�-¯[
��Q�ߍ�0���~�>-��ӗ�쏌���}��dK���@�3>����Lb�,�㺪��k,Ox�AJL��
Q�
��4^/
����y��U�4�T���t�S����m`:�����E�0ݮuBk���@A>����Ż���
1��y0�up^��f>Nȭ�J�ǹ���"o͐�g(�m!��dz��5p���a�휛�=���Nن~Y�/1��YP,�DO>�'ح�E� {�R\)|uz}��(�BO�U����#/������}W�H6����gvs!��Pf^��3dB����3u�B�J|�sy���e0	,p%��dAN�؝���"���o��ԧ�E~��)�_�F�xQ��/�O^�_��V=g�Ow���
V�.�+��"�����8<�`7'�d颹)c���RDz�I�Z�X��E�|�7�����F�8S�@;fqYw\�Sc^s��g�qƕ-����E��}t�a���K3�!yo`�1���0wUM�cʢ
���ò�Z���]��!����p�⿖p���tz�8S�L.I��P�/�H�1E�����U���?~����6�ngs���87��
vV0�������QK���|#�h'�_�i�X�u7�����5F4x�Q����F��t?��@T��C��7Cl����n6�p.��U��NE�9�V���9�rf��	1�k	���`G6����"���v�E��'yx�h�Q����ǹJs�9�����{��_����[q/�\��A��lv��]��I�l��_D���N���3t�&�����e,���{��o����u�'p����0M�:��n���C��
N#���7�g���B��m*/z9-��VS
�e���|
4�E7�ώ��\=�V�^��h~��Zl��������<ɪ��B�t�����?`>6ɛ�r}�a����/���O���E�ᯀkZ��qw,V-�󚂈�P	�hg�M����y�	^/
G^k������Eگsנ3���K����빢�����x;xӠ3�Qbp����C�Pw���V�ި�N��U����/3
�B�)AQu�~r�QZ�U��Q�U���8?�>`�UGa�Kq�/i��B��!�Rs�"�_����� j�k�Q��EOQMk�j�G@�p.h�O6/���I
m!����Ҧۙ��D/�#�LZ��ۉ��@�-,yJxFA��Q��_���\�w����/�臸���!M
�s�>�H����Xguy�Q�i2��*t�)��$�������5�7P��.&,��iNs�t,��,�j��JD�q[��m��7��1c���vW�!����Ie��C����O����χ8%�Ge�Yko	�v�+ʸ���?Pӱ}���/k�廓tS/<E����1��}_�۝(#3CH��P���y������,%}ϠW'�;��[=�4w�Z�S�6^�$�!E$��-vs+�s�U�)�t8`�M���Á�,��q�h<1c��X�Ixm`������pxh8�4^��X��o16��aQ��H�A�	�0�;F[��Ւa�A�vr�*jd��Ҧ�a#�4t�(��,~G�RJ*�o-O�]�U���ŪiK �+8�3�*�d�ބC)^H~M?����fg�lC
G�[�GG ���%П֡��Ψ��YT�O��	���Bٯ��yXR�	�>��F/X������[�I�3,*��S�/
���Ţ�(�������`}��D,(�"H��`�p��4�l�bZ�D�'OW��h�+RCC�-yЍ�Y���s'!����nI�C��C#\r=��h�Lݒ���ï6^/
����@Ñ��[���9�3\�;4[C#=��G=� h�Mݏ^NW��9��:,��Gs���n2�C�d!���2�&�s\K�t���=�:�-�*��%���A$-�����G8�4?�B��8����;5�F�T���cw��8ö�?�kx�k��j�c�/~}�����_���.�j�[\��xW<ÕLr/��.��
�W���{#�2�9x^�vrq��x^��v�e1�e����<�R�����p?]na'٣LOo&q���c�g��y� E���?���Ga�+�J$s�
v�����̟2$J��LqW3������W���7�7�C�D��0~ķx%�>1 �X(Ϲ
G�`j�!�������F����o�p��r������pxh82��P����R�������
�^�[����~F:�.��f���~�o���8�uw���
^���u]��Y��
�O�	����|���@4d���mS�Q\���WӣeW��C|[����V~[���OK�t�Mt1�R�D�U���͕l��w؇zwp��]���W��v���`��
�鑫���K�~����-�ְ|1�t4�0w��q>�Psߜ���Id�hE�%u]�\�1{�Θ���M`OpN�$</�/���#����=���65���|���S��~X�B�!�~��_1�j]�)}S���/��G" ��C@4	���F_&���D�xv��{B����(�r���ݯH�j�$�+�o�د~jIDp\�@��+yz;���6~h�oK?�B?���o˿)~�yUY: u��R�D����"GYN��K��.F�޶i�~�o�����p��w��̟K����snj�
س�~�o����!
��6^/
����@�����A��y���Q�6p<�ZW��K�:��z�[��P���S��Y7��:���� ���� /�`d�8�Fz�C������Tx�Dq���ۜB��k ���3|�|���9/`����/
����@������pl]h��^@���l!���=�mV$!���3h�Zw��Ags �
ɾ�A�ֺ=�{� �]��CX�S#b�^��9@O [��ʊ�m�j�Sn����3�W��W����KY�|�	�|�N�H����*u��~����h�=�kP�#�ʱ��	�Q
����P���zy{x�U�Cٹ�q�����	���غ����椛@^��%tEXtdate:create2020-12-13T14:23:47+00:00!��%tEXtdate:modify1985-10-26T08:15:00+00:00"�StEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_555555_256x240.png000064400000015642147361034410012717 0ustar00�PNG


IHDR�E�r@gAMA���a cHRMz&�����u0�`:�p��Q<bKGDU���ItIME�)�r�k�IDATx��{�$G}�?m;���!�>��l�ܮ��G$,��&�%�|�ܢ�ց��]�]��=�Β?ptg�Y�G� ��b��	'���8$�f�;�#���A��G������3;��=��L��������W�^<������������&�=�Ll&<D�YV�D�^`��O��r�`:
$)��=�Ls��L�=?��a|��6���I#V+A��1L)�P!��)$q��<�ą��U`����r�2�t )b��B�zDD���'O��{�5���[Y`�]az��GtwS�S��l�� 1�z�̐!(�h~�L�`V�U�{
�gӜws��l�g����p�U�f�2��CP�����C�[mVF�y��h8�J`��	�px4�
�'@��	�px4� w��d��p��)c�F{���S�����>R$)g�3W����i���mk~[�+�O}�#c
P���_
OB��mz�-��=�)w����i'�#�@�]ƪS/�c>]�Lϟ[���	��e�%PEdR��=��\��')�W0�ʩk0�o2�:���A
�'@��	�px4�
�'@��	�p�3�����_+-��s�E�K%2�5�UA��(�<�`���+Hʢ�=l���>0�b'G��n%p	U"�YR[�����R�Р�q�_`�ɟ��H�5`.��@�%6�b)���Z|������t�QiE�� LcJ�xw�]��K��� 7��������$0txzl�\�Y�wk�!uS��[�L��K�:(�˼f]�K(����lN��źuѶ'�vw�IdU�)n�K9(��u��f��c/ӯ<��-�!LU��i���{�&��0�l�W��WO������h8<O�����7�&�R�?�~¥\4����F�ޥ2$�\ܽW��ޡZZ���Հ��l��k���)��2�+�@��%��j����n+������\C���V�{�s�kۥbg%��@���6��[�\ܩ۶`�6��Y��s�K���ݞs7��j�A�i��ܶ�<k��PJ٬0�)��b��p���D\����������b�`�s�	`&�����
����4ԩ�ҧ�U����t�}�4��L�Ob����3�
���\��0U�<�1ߜ9SMi�E��}���N@S	Vs$VK��S��޸咲C��9Uhua��v�^u9���&m�t�jc�(��h[OL9x4~)���h8<O�������5�ή��=�
&}�K��5��F�����!+{�����e�0���s�`�G��U���u����u�M��B��-����b��5���߮�`���b�p�U��Ӵy4t���tS�����lh�b�=9v�)��W]_P�꾪��w6%2Ȋ���G�'�W>~@�˫��:S�E�������� *
�p�v��]�Zwt�D�Cȟ��y�Uw�{���'�!`5͔��:���K�U�=�����Œ�@mRa��l�{IB%�b��5}�Z��ƀ��T7	셲��j��D�e�![�0��14]�f���hX�{4�
�'@��	�px4�G�ְ,�6y��M*��I�Ѣ�)�b���04(�.�M3Q#?]���᪺��0B'�ׁL�*�y�;y�[t�ӅR�޽��HCt5�o՜���Oy��"#��L�s��Ϳ����k���5&{g����/[�Sqs�8$���*3{��i���>��9�rV��;UO��2�_	��5�L�xh���D����y�B(�pE�w@ö��y�L�`�~��:yD��0�H�j��r~z�V�(��U��&�v$�I>�J�@P���lO$���H!�`;p�dvY�$��4m����Z�U��_�a31�<z�a;9�wϛ���xl*<O�����%̦+
�}I�2���
���CD�Cq�mp�rJ�Z4�6�<!Y�m�Y�����س��qOq-�s-O))0k��X�_s����3�!m�h �!��gJ���J��FM��"�Q�:�s·X�I�	a�7K�;�?�r9������{�{��c\��:3<�qm
����LZ��P�(DV�2�K~	��|MH�H����T�QPR d<���(�׸J�- �L�����9�s�k=�6��K��9c�qv/�Ìkp
�U�a�,i�1��y��-%M����$p���iC���O���6C�e����a�P!���
� ���`�G�*P_��x,�~�2;����r����4��E*�(�4���A�r�ص$p����Yxa���<~ݐ�$_3�q2e�a/ �@����}sw�1�3�w�aF�4��9�ӿ�E���<��K�������s�h&(� ��qm�����s�yl��+����:�)yMj�m�v/	���m�kQ��y���A��.���^`M�W�o��������xJ!��)�3���Uޓ~ˣ�.d?3�ل��|�A����K��al!ު ������Q�LG��ʠ"��o�sg�9���z���#
�^�f%��ؑ�TU�=�����4�@��]�z�j��{ ��o"���������s�h���ye�Q�g���B~���+`D���N�t�I� �����r�z$����f��
���ԍ�E���e�����a�����(�<*����h8<O���c�>�	2Z��p9y�
�J�����.��"���-���G��� ���~:���2x]�ό%�XJ~���-���
�
��@=�#��)�:�i�Gy1W唵�����s�_�R�Y��;���[�摒�V��"O������p�	����:-��Q��{A�����RC�.ŋI�|��DD�iӊٗ�YS���h?�x��M<�M�r�CLtz��O�\�o�/.�G\�3��8��CH�4Z9`��3l�w���ɒ5�H���vQ~���?���b�e�[���d9u��J�Z�-]j��-|�
Np�u~�1�<;��g���4�=.�{\�������Y�.�ǵ���TJ'�Z�m�S�����?��-�X��>�Ohզ:�as�|3����|��)��f��0S}i~x1��o����m
�ʻ��XjZ?��6�4�/KR����;Hӏ��.*��5��~Ia��`'���*!��$���4�-|���˜��l�I������{U�^ʷ�M��˲IP�6w��ʟL~6�0ȳ9��l��Œu7�+S��x�T+���?�������Uۤ���yGl�Qdg(�-��E�͠ 75�|^Q1�!֔�w�!f������I��%d�P]y���_�VnX3�u�g���y���؟��t'�����PPv5���O���&R5j��(��|��5殎< 46�}�Q@�p����p��I��$�3&�q�N��w��8JHH�.al�/�.uS�?��¯���Q�ߍ�0���~�>m�՗/[�?2Ҋ:�	R�-	kL�f��D<￞O�sE�=L�������<�Q(1�sG4D(���h8<O�����h"��Ꝧ��r���yʫCw<�
"��
��R�?@]���ZǵV
���(�Qp��N�ɝ��3���_���"���	��[�87��W��E�-D�Ӄ,���N��I�ƹ�ڳ���m�����a�ŢJt��q�ݚ\$�7p/ŕ�W�����Z�	��3t�t��p�:<Y��*��W���n.D���+\~�L1Ruv�^�W��s.���&��d�,����i�P�pQ��ޞ���O��?�����/Hu��ɫ��ժ�,��B�#�ƃ�E���(x��?�� � ���	>Y�h�Gʘb+;���mR�.b,n�:��7���)?�
�1��v��e�q���Q��y�g\iQ�bp�H�[���w@�v��K�4���F�?���US���hC'~�aY�?�	O������C~��;��+�
�;���q�t�2\�~>��"�_�c�H�'#$�U��~�����<]��!�rn\u�`�1�������^5G�F�A�.Nn~UN�'¯���pw�"���qF�gB��c�
���
sQY|������RV��0ù<�W9�;]l�h]�r]��
���;,č�}�44��F9 3x[d�@��vx���b��'xx�h�Q����ǹJs�9�����{��_��7c��Z2�������.v7%!�! �u�3C8�6G���,(6GG�c�ml�@���ۭ\�+���	Y�t٭��{H��A�i�������ù;r�ʋ^DK)�Ք�3BYm� _�h�M;��#�5WϻչW�?�_<��fl�g����;O����� �/p�����M���\sHa� ��ˇ(:�S�/��`{�k�Ú�x��;�U�c��@1*�fqv:n
<���<$x4�
G���������"�׹k���
���r�u\Q�ii}�����qЙ��������;r��J�?[�{��8E{�V��ľ�4�Q�Eթ��
D��	&(�_�����=�S��%W��,ŕ���ga���J�5�M�"�-������> [�մv��y�F�d��67Nj�b�I�`�;�)�v�c��i<R�����h��w�y�������{5�	"D��'�;�:}�M:�now����[�T��#6����jS8�6}�=�,�����Xguy�Q�i2��*t�+��$����]q?k�o�ʟ\LXf�Ӝ�4��X� �D5HQ%������on̚]���N	���Q�D=@����	`v�+ʸ���?Pӱ}���_�|��N�M�����vƸ��|mow���!94J#�?o�
��r{г��=�^�l��Nl!l���k�Ni��'�)"�R2Z��Vh礫�S��p�8~��	lq�#I,�{�1�h<1c��Xx�$�6���h8<O������ȣc�	t��-�!P��	��c�U�X-��`'�$P##OK�B��X��a�@!�~G�#RJ*
귖'��*C�ܛ�ŪiK �+8�IV�K�zo¡/$��U^th�3��!�#�-�#;]|���:tR��]:"+�j���	 1���Bٯ��񰤠#�>��F/�X/
ۯ�(ԓ��,�z�8�b��B,�Ww��I�t����D�G( j��:�$^�
gnL��-����v���$0����Ƹ�44��R���؟�П(0�0w���Jy閄�1�^��9�0�%�Ә����-	�n8�J`��	�px4�
�'@Ñ'�i��"#@��p!o�ڏ�l��H=�$���G/��l�9���:,��Gr���l��C�d!�8��2�"�s\K�t���=�:�-�*��%�[�AD�]~�E�#g�q�bo��n�c���L�p*_��;�m�a[��v�5<�5��u�����J>�z���_���.�j�[\��x=Wx�+��^`?]ޥ%�W���{#�2�9xN�vrq�w�"��Kb�K�ۍ+"<�B������p?]nf'أLOo&q���c�g��y�@���B����Ga�+�J$s�
v�����T:q�������fJ�[5A�:��-�� !@tƏ���B�'d����9W�hL�>�c�,��]�~Tl^=l�
��-7�
�'@��	�pd��PW���R���[���
Z^�[����~F:����f���~�o���8�ew��
^������土j�-�w�-��h�<��ۦ^��&"/_M��]���m��S�G|[�m�7�?-mL��7��\�K]yW�jg�6W����`��u�w�oO_��5~�z�YX�w(�R�`������Vz�CK�5,_̼�<����x�O'�\7�o/p��bZʹ��˟K�!f��sp�
���S?	�	��Gh���M�{��qmj��������!`	x3Շ��]�>��u��M�+��PNQ@l��$�v��|�d2�&�œ�C����&�(G)���~E���U�')_XY~��껖DD�cRS|����
lk㇆����)�#��������W��R�.uID�k\��s�U�d����a��᭛&�w�-����<���4�z�e�B
WW���sS��o��<�!�w�-�o�pxm`��	�px4�
�'@��	�p�� ���.��Y8�~[W��+�:��zM�nM�ޓ�N�CB��\g�(O�3�`k@�/�aE]��y����7�#z��
&L��ݠ£$�C�x�T����=�6y���Ș���>��y�.����px4�
�'@��	�px4[�m� �����2K�l���fEr�Q2�����鎚u���X!��7H؞n�=�k�.��CX��FԼz&���=�l��*+�g+Vs���=i�}F����
2L=���i��r$�/\)���W�.7�z�a����r�=�kP�#��5[Σ��- `5�+B�~����۬���5�;���GMx�
���x���}�J�۶�%tEXtdate:create2020-12-13T14:23:47+00:00!��%tEXtdate:modify1985-10-26T08:15:00+00:00"�StEXtSoftwareAdobe ImageReadyq�e<IEND�B`�index.php000064400000000000147361034410006355 0ustar00languages/wp-file-manager-sq.mo000064400000044214147361034410012453 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&m�&� (��(3�)K*?S*%�*�*$�*��*��+Sw,`�,,-<=-4z-3�-�-�-./.$K.)p.�.�.�.�.#�.	/	/)///G/c/�/�/*�/�/�/#�/=02J0:}0�0
�0�0
�0�01!
1/1)B1l1�1A�1�1��1�2�23$3>A3��3!n4'�4�4�4�4�4�5�67�*7o�7�L8��8!�9�9�9::`):B�:!�:�:	; $;E;U;m;�;]�;|�;/o<0�<
�<
�<G�<+.= Z="{=*�=�=�=�=2�=1>#K>ko>h�>D?/L?|?�?,�?F�?.@:@S@m@%}@!�@�@*�@�@�@
AA,ACA*WA
�A�A�A%�A/�A"B9B$PBuB�B<�B�B#�BC'C)DC	nC(xC"�C�C�CD�CD(8D/aD �D�D!�D�D
E	E)(ERE qE-�E�E�E�E2�E&'F�NF(G4EGhzGS�GT7H}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: 
PO-Revision-Date: 2022-03-01 18:15+0530
Last-Translator: 
Language-Team: 
Language: sq
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* për të gjitha operacionet dhe për të lejuar disa operacione, mund të përmendni emrin e operacionit si like, allow_operations="upload, download". Shënim: ndahet me presje (,). Parazgjedhja: *-> Do të ndalojë përdorues të veçantë duke vendosur id-të e tyre të ndara me presje (,). Nëse përdoruesi është Ban, atëherë ata nuk do të kenë mundësi të hyjnë në menaxherin e skedarëve wp në pjesën e përparme.-> Tema e Menaxherit të Skedarëve. Default: Light-> Skedari Modifikohet ose Krijoni formatin e datës. Default: d M, Y h:i A-> Gjuha e menaxherit të skedarëve. Parazgjedhur: English(en)-> Pamja UI e Skedarit. Default: gridVeprimiVeprimet pas rezervimit të zgjedhurAdmin mund të kufizojë veprimet e çdo përdoruesi. Gjithashtu fshehni skedarët dhe dosjet dhe mund të vendosni shtigje të ndryshme - të ndryshme të dosjeve për përdorues të ndryshëm.Admin mund të kufizojë veprimet e çdo përdoruesi. Gjithashtu fshehni skedarët dhe dosjet dhe mund të vendosni shtigje të ndryshme - të ndryshme të dosjeve për role të përdoruesve të ndryshëm.Pas aktivizimit të plehrave, skedarët tuaj do të shkojnë në dosjen e plehrave.Pasi ta keni mundësuar këtë, të gjitha skedarët do të shkojnë në bibliotekën e mediave.Gjithçka u kryeJeni i sigurt që dëshironi të hiqni rezervat e zgjedhura?Je i sigurt që dëshiron ta fshish këtë rezervë?Jeni i sigurt që doni ta riktheni këtë rezervë?Data e rezervimitRezervimi TaniOpsionet e rezervimit:Të dhënat rezervë (kliko për të shkarkuar)Skedarët rezervë do të jenë nënRezervimi po ekzekutohet, ju lutem prisniRezervimi u fshi me sukses.Rezervimi/RivendosjaRezervimet u hoqën me sukses!ndalimShfletuesi dhe OS (HTTP_USER_AGENT)Bleni PROBleni ProAnuloNdryshoni Temën Këtu:Klikoni për të blerë PROPamja e redaktuesit të koditKonfirmoKopjoni skedarë ose dosjeAktualisht nuk u gjet asnjë rezervë (t).Fshi skedarëtE errëtRezervimi i bazës së të dhënaveRezervimi i bazës së të dhënave është bërë në datë Rezervimi i bazës së të dhënave është kryer.Rezervimi i bazës së të dhënave u rikuperua me sukses.ParazgjedhurParazgjedhur:FshijHiq zgjedhjenHidhe poshtë këtë njoftim.DhuroniShkarkoni Regjistrat e SkedarëveShkarkoni skedarëKopjoni ose klononi një dosje ose skedarRedakto Regjistrat e SkedarëveRedakto një skedarTë aktivizohet ngarkimi i skedarëve në Bibliotekën e mediave?Të aktivizohet Plehra?Gabim: Rezervimi nuk mund të rivendoset sepse rezervimi i bazës së të dhënave është i madh në madhësi. Ju lutemi, përpiquni të rritni madhësinë maksimale të lejuar nga cilësimet e Preferencave.Rezervimet ekzistueseNxjerr arkivin ose skedarin zipSkedari - Kodi i ShkurtërSkedari - Karakteristikat e sistemitSkeda Root Rrugor, ju mund të ndryshoni sipas zgjedhjes suaj.Skedari ka një redaktues kodi me shumë tema. Mund të zgjidhni çdo temë për redaktuesin e kodit. Do të shfaqet kur të ndryshoni ndonjë skedar. Gjithashtu mund të lejoni modalitetin në ekran të plotë të redaktuesit të kodit.Lista e Operacioneve të Dosjeve:Skedari nuk ekziston për ta shkarkuar.Rezervimi i skedarëveGriNdihmoniKëtu "test" është emri i dosjes që ndodhet në direktoriumin rrënjë, ose mund të jepni rrugën për nën-dosjet si "wp-content/plugins". Nëse lihet bosh ose bosh, do të ketë akses në të gjitha dosjet në direktorinë rrënjë. Parazgjedhja: Drejtoria rrënjësoreKëtu administratori mund të japë qasje në rolet e përdoruesit për të përdorur menaxherin e skedarëve. Admin mund të vendosë Dosjen e Hyrjes së Paracaktuar dhe gjithashtu të kontrollojë madhësinë e ngarkimit të administratorit të skedarëve.Informacioni i skedaritKod i pavlefshëm i sigurisë.Ai do t'i lejojë të gjitha rolet të kenë qasje në menaxherin e skedarëve në pjesën e përparme ose mund ta përdorni thjesht për role të veçanta përdoruesi, si p.sh.Do të kyçet e përmendur në presje. ju mund të kyçni më shumë si ".php,.css,.js" etj. Parazgjedhja: NullDo të tregojë menaxherin e skedarëve në pjesën e përparme. Por vetëm Administratori mund ta qaset atë dhe do ta kontrollojë nga cilësimet e menaxherit të skedarëve.Do të tregojë menaxherin e skedarëve në pjesën e përparme. Mund të kontrolloni të gjitha cilësimet nga cilësimet e menaxherit të skedarëve. Do të funksionojë njësoj si Menaxheri i skedarëve WP.Mesazhi i Regjistrimit të FunditDritaShkrimetBëni direktori ose dosjeBëni skedarinMadhësia maksimale e lejuar në kohën e rivendosjes së rezervës së bazës së të dhënave.Madhësia maksimale e ngarkimit të skedarit (upload_max_filesize)Kufiri i kujtesës (memory_limit)ID-ja e rezervës mungon.Lloji i parametrit mungon.Mungojnë parametrat e kërkuar.Jo faleminderitAsnjë mesazh regjistriNuk u gjet asnjë regjistër!Shënim:Shënim: Këto janë pamje ekrani demo. Ju lutemi blini File Manager pro tek funksionet Logs.Shënim: Kjo është vetëm një pamje ekrani demonstruese. Për të marrë cilësimet, ju lutemi blini versionin tonë pro.Asgjë nuk është zgjedhur për kopje rezervëAsgjë nuk është zgjedhur për kopje rezervë.Ne rregullNe rregullTë tjerët (Çdo direktori tjetër që gjendet brenda përmbajtjes wp)Të tjerët rezervimin e bërë në datën Rezervimi i të tjerëve u krye.Rezervimi i të tjerëve dështoi.Rezervimet e tjera u rikuperuan me sukses.Versioni PHPParametrat:Ngjit një skedar ose dosjeJu lutemi shkruani adresën e postës elektronike.Ju lutemi shkruani emrin.Ju lutemi shkruani emrin e modelit.Ju lutemi ndryshojeni këtë me kujdes, rruga e gabuar mund të çojë shtojcën e menaxherit të skedarit.Ju lutemi rrisni vlerën e fushës nëse po merrni mesazh gabimi në kohën e rivendosjes së rezervës.ShtojcaRezervimi i shtojcave është bërë në datë Rezervimi i shtojcave u krye.Rezervimi i shtojcave dështoi.Rezervimi i shtojcave u rikuperua me sukses.Posto madhësinë maksimale të ngarkimit të skedarit (post_max_size)PreferencatPolitika e privatësisëRruga e Rrënjës PublikeRISHIKON DOSJATHiqni ose fshini skedarët dhe dosjetRiemërtoni një skedar ose dosjeRiktheRivendosja po funksionon, ju lutemi prisniSUKSESRuaj ndryshimetPo kursen ...Kërkoni gjëraÇështja e sigurisë.Selektoj të gjithaZgjidhni kopjet rezervë për t'i fshirë!CilësimetCilësimet - Redaktuesi i koditCilësimet - Të përgjithshmeCilësimet - Kufizimet e PërdoruesitCilësimet - Kufizimet e rolit të përdoruesitCilësimet u ruajtën.Kodi i shkurtër - PROThjesht prerë një skedar ose dosjeKarakteristikat e sistemitKushtet e shërbimitRezervimi me sa duket pati sukses dhe tani është i plotë.TematRezervimi i temave u bë në datë Rezervimi i temave u krye.Rezervimi i temave dështoi.Rezervimi i temave u rikuperua me sukses.Koha taniKoha e ndërprerjes (max_execution_time)Për të bërë një arkiv ose zipSotP USRDORIMI:Nuk mund të krijohet një kopje rezervë e bazës së të dhënave.Rezervimi nuk mund të hiqet!Nuk mund të rikuperohet rezervimi i DB.Në pamundësi për të rivendosur të tjerët.Nuk mund të rikthehet shtojcat.Nuk mund të rikthehen temat.Nuk mund të rikthehen ngarkimet.Ngarko Dosjet e SkedarëveNgarko skedarëtNgarkimetRezervimet e ngarkimeve bëhen në datë Rezervimi i ngarkimeve u krye.Rezervimi i ngarkimeve dështoi.Rezervimi i ngarkimeve u restaurua me sukses.VerifikoShiko RegjistrinMenaxheri i skedarëve WPMenaxheri i skedarëve WP - Rezervimi / RikuperimiKontributi i Menaxheri i skedarëve WPNa pëlqen të krijojmë miq të rinj! Abonohuni më poshtë dhe ne premtojmë të
    ju mbajmë të azhurnuar me shtojcat, azhurnimet tona më të fundit,
    marrëveshje të mrekullueshme dhe disa oferta speciale.Mirësevini në File ManagerJu nuk keni bërë asnjë ndryshim për t'u ruajtur.për akses në lejen e leximit të skedarëve, vini re: e vërtetë/e gabuar, e paracaktuar: e vërtetëpër qasje në lejet e shkrimit të skedarëve, vini re: true/false, default: falsedo të fshihet i përmendur këtu. Shënim: ndahet me presje (,). Parazgjedhja: Nulllanguages/wp-file-manager-hu_HU.mo000064400000045312147361034410013040 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(�$).�)L"*5o*0�*�*3�*�+��+A�,J1-|-E�--�-?�-=.Y.#r./�.,�."�.*/%A/1g/�/6�/�/�/�/0!$0F0]0i0*�0�0�0�00�0%19E11�1�1�1"�1
�1�1
212P2k252�2��2"�3(�3�3&4R54��4q5"�5�5�5
�5�5��6�7�7�8u9�z9�:�:�:�:%�:%�:_;=};�;$�;<#<@<P<d<|<o�<~�</t=0�=�=�=A�=5'>)]>*�>6�>�>
�>$?$(?"M?#p?v�?k@w@C�@3�@8�@@7A7xA
�A�A�A�AB$BAB)RB|B�B�B�B�B�B=�B&C 5CVC.sC4�C�C�C%D*DBDE]D�D,�D+�D-E52EhE$tE#�E�E�E8�E6F;<F,xF2�F'�F1G2GLG
aG#oG+�G.�G;�G*H7HLH8\H�H��H �I)�IF�IRJbgJ}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 12:35+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: hu_HU
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* minden művelethez és bizonyos műveletek engedélyezéséhez megadhatja a művelet nevét, mint például, enabled_operations="upload,download". Megjegyzés: vesszővel (,) elválasztva. Alapértelmezett: *-> Megtiltja az egyes felhasználókat azáltal, hogy csak vesszővel elválasztott azonosítót tesz ((). Ha a felhasználó Ban, akkor nem fog tudni hozzáférni a wp fájlkezelőhöz a kezelőfelületen.-> Fájlkezelő téma. Alapértelmezett: Light-> File Modified vagy Create date formátum. Alapértelmezés: d M, Y h: i A-> Fájlkezelő nyelve. Alapértelmezett: English(en)-> Filemanager UI nézet. Alapértelmezett: gridAkcióMűveletek a kiválasztott biztonsági mentésekkelAz adminisztrátor korlátozhatja bármely felhasználó műveleteit. A fájlokat és mappákat is elrejtheti, és különböző - különböző mappák elérési útjait állíthatja be a különböző felhasználók számára.Az adminisztrátor korlátozhatja bármely felhasználói szerepkör műveleteit. A fájlokat és mappákat is elrejtheti, és különböző - különböző mappák elérési útjait állíthatja be a különböző felhasználói szerepkörökhöz.A kuka engedélyezése után a fájlok a kuka mappába kerülnek.Ennek engedélyezése után az összes fájl a média könyvtárba kerül.Minden készBiztosan el akarja távolítani a kijelölt biztonsági másolatokat?Biztosan törli ezt a biztonsági másolatot?Biztosan vissza akarja állítani ezt a biztonsági másolatot?Biztonsági mentés dátumaBiztonsági mentés mostBiztonsági mentési lehetőségek:Biztonsági adatok (kattintson a letöltéshez)A biztonsági mentési fájlok alatt lesznekA biztonsági mentés fut, várjonA biztonsági mentés sikeresen törölve.Biztonsági mentés visszaállításaA biztonsági másolatok sikeresen eltávolítva!TilalomBöngésző és operációs rendszer (HTTP_USER_AGENT)Vásároljon PRO-tVásároljon PRO-tMegszüntetiTéma módosítása itt:Kattintson a PRO vásárlásáhozKódszerkesztő nézetmegerősítFájlok vagy mappák másolásaJelenleg nincsenek biztonsági másolatok.FÁJLOK TÖRLÉSESötétAdatbázis biztonsági mentéseAz adatbázis mentése a dátummal megtörtént Adatbázis biztonsági mentés kész.Az adatbázis biztonsági mentése sikeresen visszaállt.AlapértelmezettAlapértelmezett:TörölTörölje a kijelöléstUtasítsa el ezt az értesítést.AdományozFájlnaplók letöltéseFájlok letöltéseMásoljon vagy klónozzon egy mappát vagy fájltFájlnaplók szerkesztéseFájl szerkesztéseEngedélyezi a fájlok feltöltését a médiatárba?Engedélyezi a kukát?Hiba: Nem lehet visszaállítani a biztonsági másolatot, mert az adatbázis biztonsági mentése nagy méretű. Kérjük, próbálja meg növelni a Maximális megengedett méretet a Beállítások beállításainál.Meglévő biztonsági mentés (ek)Kivonat archív vagy tömörített fájlFájlkezelő - rövid kódFájlkezelő - Rendszer tulajdonságaiA File Manager gyökérútvonalát megváltoztathatja az Ön választása szerint.A File Manager rendelkezik több témájú kódszerkesztővel. Bármely témát kiválaszthat a kódszerkesztő számára. Bármely fájl szerkesztésekor megjelenik. Engedélyezheti a kódszerkesztő teljes képernyős módját is.Fájlműveletek listája:A fájl nem létezik letöltésre.FájlmentésszürkeSegítségItt a "teszt" a gyökérkönyvtárban található mappa neve, vagy megadhatja az almappák elérési útját, például "wp-content/plugins". Ha üresen hagyja vagy üresen hagyja, akkor a gyökérkönyvtár összes mappájához hozzáfér. Alapértelmezés: GyökérkönyvtárItt az adminisztrátor hozzáférést adhat a felhasználói szerepkörökhöz a fájlkezelő használatához. Az adminisztrátor beállíthatja az alapértelmezett hozzáférési mappát, és szabályozhatja a fájlkezelő feltöltési méretét is.A fájl adataiÉrvénytelen biztonsági kód.Lehetővé teszi, hogy minden szerepkör hozzáférjen a fájlkezelőhöz a kezelőfelületen, vagy egyszerűen használható bizonyos felhasználói szerepkörökhöz, mint például a enabled_roles="editor,author" (vesszővel (,) elválasztva)A vesszővel említett zárolás lesz. zárolhat többet, mint például ".php,.css, .js" stb. Alapértelmezés: NullAz előlapon megjelenik a fájlkezelő. De csak a rendszergazda férhet hozzá, és a fájlkezelő beállításaiból irányíthatja.Az előlapon megjelenik a fájlkezelő. Az összes beállítást a fájlkezelő beállításaiból vezérelheti. Ugyanúgy fog működni, mint a háttér WP fájlkezelője.Utolsó naplóüzenetFényNaplókKészítsen könyvtárat vagy mappátKészítsen könyvtárat vagy mappátMaximális megengedett méret az adatbázis biztonsági mentésének visszaállítása idején.A fájl maximális feltöltési mérete (upload_max_filesize)Memória korlát (memory_limit)Hiányzik a biztonsági azonosító.Hiányzó paramétertípus.Hiányzik a szükséges paraméter.Nem köszönömNincs naplóüzenetNem található napló!Jegyzet:Megjegyzés: Ezek bemutató képernyőképek. Kérjük, vásárolja meg a File Manager pro to Logs funkciókat.Megjegyzés: Ez csak egy bemutató képernyőkép. A beállítások megszerzéséhez kérjük, vásárolja meg a pro verziót.Semmi sincs kiválasztva biztonsági mentéshezSemmi sincs kiválasztva biztonsági mentéshez.rendbenRendbenEgyéb (bármely más könyvtár megtalálható a wp-tartalomban)Mások biztonsági mentése a dátummal megtörtént A többi biztonsági mentés elkészült.Mások biztonsági mentése nem sikerült.Mások biztonsági mentése sikeresen visszaállítva.PHP verzióParaméterek:Illesszen be egy fájlt vagy mappátKérjük, adja meg az e-mail címet.Kérjük, adja meg a keresztnevet.Kérjük, adja meg a vezetéknevet.Kérjük, változtassa meg ezt gondosan, a rossz elérési út a fájlkezelő beépülő modul lefutásához vezethet.Kérjük, növelje a mező értékét, ha hibaüzenetet kap a biztonsági mentés visszaállítása során.BővítményekA beépülő modulok biztonsági mentése a dátummal megtörtént A bővítmények biztonsági mentése megtörtént.A beépülő modulok biztonsági mentése nem sikerült.A beépülő modulok biztonsági mentése sikeresen visszaállt.A fájl maximális feltöltési mérete (post_max_size)preferenciákAdatvédelmi irányelvekNyilvános gyökérútFÁJLOK VISSZAÁLLÍTÁSAFájl szerkesztéseNevezzen át egy fájlt vagy mappátvisszaállításA visszaállítás fut, kérjük, várjonSIKERVáltoztatások mentéseMegtakarítás...Keressen dolgokatBiztonsági probléma.Mindet kiválasztVálassza ki a törölni kívánt biztonsági másolat(oka)t!BeállításokBeállítások - KódszerkesztőBeállítások - ÁltalánosBeállítások - Felhasználói korlátozásokBeállítások - Felhasználói szerepkorlátozásokBeállítások elmentve.Rövid kód – PROEgyszerű fájl vagy mappa kivágásaRendszer tulajdonságaiSzolgáltatás feltételeiA biztonsági mentés láthatóan sikerült, és most befejeződött.TémákA témák mentése a dátummal megtörtént A témák biztonsági mentése elkészült.A témák biztonsági mentése nem sikerült.A témák biztonsági mentése sikeresen visszaállt.Itt az időIdőtúllépés (max_execution_time)Archívum vagy zip készítéséhezMaHASZNÁLAT:Nem lehet adatbázis biztonsági másolatot készíteni.Nem sikerült eltávolítani a biztonsági másolatot!Nem sikerült visszaállítani a DB biztonsági másolatot.Nem sikerült visszaállítani a többieket.Nem sikerült visszaállítani a bővítményeket.Nem lehet visszaállítani a témákat.Nem sikerült visszaállítani a feltöltéseket.Fájlnaplók feltöltéseFájlok feltöltéseFeltöltésekA feltöltés dátuma megtörtént A feltöltések biztonsági mentése kész.A biztonsági mentés feltöltése sikertelen.A feltöltések biztonsági mentése sikeresen visszaállt.EllenőrizzeNapló megtekintéseWP fájlkezelőWP fájlkezelő - Biztonsági mentés / VisszaállításWP fájlkezelő hozzájárulásSzeretünk új barátokat szerezni! Iratkozzon fel alább, és megígérjük
    naprakész legyen a legújabb új beépülő moduljainkkal,
    fantasztikus ajánlatok és néhány különleges ajánlat.Üdvözöljük a FájlkezelőbenNem végzett változtatásokat mentésre.a fájlok olvasási engedélyéhez: igaz/hamis, alapértelmezett: igaza fájlok írási engedélyeihez, megjegyzés: igaz/hamis, alapértelmezett: hamisitt megemlítve el fog rejtőzni. Megjegyzés: vesszővel (,) elválasztva. Alapértelmezés: Nulllanguages/wp-file-manager-vi.po000064400000073061147361034410012453 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 13:04+0530\n"
"PO-Revision-Date: 2022-02-28 13:08+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: Vietnamese\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Đã khôi phục bản sao lưu chủ đề thành công."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Không thể khôi phục chủ đề."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Đã khôi phục bản sao lưu tải lên thành công."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Không thể khôi phục tải lên."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Đã khôi phục thành công bản sao lưu khác."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Không thể khôi phục những người khác."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Đã khôi phục bản sao lưu plugin thành công."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Không thể khôi phục các plugin."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Đã khôi phục thành công sao lưu cơ sở dữ liệu."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Tất cả đã được làm xong"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Không thể khôi phục bản sao lưu DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Đã xóa bản sao lưu thành công!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Không thể xóa bản sao lưu!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Sao lưu cơ sở dữ liệu được thực hiện vào ngày "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Sao lưu plugin được thực hiện vào ngày "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Sao lưu chủ đề được thực hiện vào ngày "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Tải lên bản sao lưu được thực hiện vào ngày "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Sao lưu những người khác được thực hiện vào ngày "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Nhật ký"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Không tìm thấy nhật ký nào!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Không có gì được chọn để sao lưu"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Vấn đề an ninh."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Đã sao lưu cơ sở dữ liệu."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Không thể tạo bản sao lưu cơ sở dữ liệu."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Đã sao lưu plugin xong."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Sao lưu plugin không thành công."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Đã hoàn tất sao lưu chủ đề."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Sao lưu chủ đề không thành công."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Đã hoàn tất tải lên sao lưu."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Sao lưu tải lên không thành công."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Những người khác đã sao lưu xong."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Sao lưu những người khác không thành công."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Trình quản lý tệp WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Cài đặt"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Sở thích"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Thuộc tính hệ thống"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Mã ngắn - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Phục hồi dữ liệu đã lưu"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Mua chuyên nghiệp"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Quyên góp"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Tệp không tồn tại để tải xuống."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Mã bảo mật không hợp lệ."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Thiếu id dự phòng."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Thiếu loại tham số."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Thiếu các thông số bắt buộc."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Lỗi: Không thể khôi phục bản sao lưu vì bản sao lưu cơ sở dữ liệu có dung "
"lượng lớn. Vui lòng cố gắng tăng kích thước tối đa cho phép từ cài đặt Tùy "
"chọn."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Chọn (các) bản sao lưu để xóa!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Bạn có chắc chắn muốn xóa (các) bản sao lưu đã chọn không?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Quá trình sao lưu đang chạy, vui lòng đợi"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Quá trình khôi phục đang chạy, vui lòng đợi"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Không có gì được chọn để sao lưu."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Trình quản lý tệp WP - Sao lưu / Khôi phục"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Tùy chọn sao lưu:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Sao lưu cơ sở dữ liệu"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Sao lưu tệp"

#: inc/backup.php:68
msgid "Plugins"
msgstr "bổ sung"

#: inc/backup.php:71
msgid "Themes"
msgstr "Chủ đề"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Tải lên"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Khác (Bất kỳ thư mục nào khác được tìm thấy bên trong wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Sao lưu ngay"

#: inc/backup.php:89
msgid "Time now"
msgstr "Hiện tại"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SỰ THÀNH CÔNG"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Đã xóa thành công bản sao lưu."

#: inc/backup.php:102
msgid "Ok"
msgstr "Đồng ý"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "XÓA CÁC TẬP TIN"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Bạn có chắc chắn muốn xóa bản sao lưu này không?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Huỷ bỏ"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Xác nhận"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "PHỤC HỒI CÁC TẬP TIN"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Bạn có chắc chắn muốn khôi phục bản sao lưu này không?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Tin nhắn nhật ký cuối cùng"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Bản sao lưu dường như đã thành công và hiện đã hoàn tất."

#: inc/backup.php:171
msgid "No log message"
msgstr "Không có thông báo nhật ký"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "(Các) bản sao lưu hiện có"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Ngày sao lưu"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Sao lưu dữ liệu (nhấp để tải xuống)"

#: inc/backup.php:190
msgid "Action"
msgstr "Hoạt động"

#: inc/backup.php:210
msgid "Today"
msgstr "Hôm nay"

#: inc/backup.php:239
msgid "Restore"
msgstr "Khôi phục"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Xóa bỏ"

#: inc/backup.php:241
msgid "View Log"
msgstr "Xem nhật kí"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Hiện tại không tìm thấy (các) bản sao lưu."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Các hành động trên (các) bản sao lưu đã chọn"

#: inc/backup.php:251
msgid "Select All"
msgstr "Chọn tất cả"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Bỏ chọn"

#: inc/backup.php:254
msgid "Note:"
msgstr "Ghi chú:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Các tệp sao lưu sẽ được"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Đóng góp của Trình quản lý tệp WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Lưu ý: Đây là những ảnh chụp màn hình demo. Vui lòng mua File Manager chuyên "
"nghiệp cho các chức năng Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Nhấp để mua CHUYÊN NGHIỆP"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Mua CHUYÊN NGHIỆP"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Chỉnh sửa nhật ký tệp"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Tải xuống nhật ký tệp"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Tải lên nhật ký tệp"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Đã lưu cài đặt."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Loại bỏ thông báo này."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Bạn chưa thực hiện bất kỳ thay đổi nào để được lưu."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Đường dẫn gốc công khai"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Đường dẫn gốc của File Manager, bạn có thể thay đổi tùy theo lựa chọn của "
"mình."

#: inc/root.php:59
msgid "Default:"
msgstr "Mặc định:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Vui lòng thay đổi điều này một cách cẩn thận, đường dẫn sai có thể dẫn đến "
"plugin trình quản lý tệp đi xuống."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Bật Thùng rác?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Sau khi bật thùng rác, các tệp của bạn sẽ chuyển đến thư mục thùng rác."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Bật Tải tệp lên Thư viện Phương tiện?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Sau khi bật điều này, tất cả các tệp sẽ chuyển đến thư viện phương tiện."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Kích thước tối đa cho phép tại thời điểm khôi phục sao lưu cơ sở dữ liệu."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Vui lòng tăng giá trị trường nếu bạn nhận được thông báo lỗi tại thời điểm "
"khôi phục sao lưu."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Lưu thay đổi"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Cài đặt - Chung"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Lưu ý: Đây chỉ là một ảnh chụp màn hình demo. Để có được cài đặt, vui lòng "
"mua phiên bản chuyên nghiệp của chúng tôi."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Tại đây, quản trị viên có thể cấp quyền truy cập vào các vai trò của người "
"dùng để sử dụng trình quản lý tệp. Quản trị viên có thể đặt Thư mục Truy cập "
"Mặc định và cũng có thể kiểm soát kích thước tải lên của trình quản lý tệp."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Cài đặt - Trình chỉnh sửa mã"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Trình quản lý tệp có một trình chỉnh sửa mã với nhiều chủ đề. Bạn có thể "
"chọn bất kỳ chủ đề nào cho trình soạn thảo mã. Nó sẽ hiển thị khi bạn chỉnh "
"sửa bất kỳ tệp nào. Ngoài ra, bạn có thể cho phép chế độ toàn màn hình của "
"trình soạn thảo mã."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Chế độ xem trình soạn thảo mã"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Cài đặt - Hạn chế Người dùng"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Quản trị viên có thể hạn chế hành động của bất kỳ người dùng nào. Cũng ẩn "
"các tệp và thư mục và có thể đặt các đường dẫn thư mục khác nhau cho những "
"người dùng khác nhau."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Cài đặt - Hạn chế về vai trò của người dùng"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Quản trị viên có thể hạn chế các hành động của bất kỳ người dùng nào. Đồng "
"thời ẩn các tệp và thư mục và có thể đặt các đường dẫn thư mục khác nhau cho "
"các vai trò người dùng khác nhau."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Trình quản lý tệp - Mã ngắn"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "SỬ DỤNG:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Nó sẽ hiển thị trình quản lý tệp trên giao diện người dùng. Bạn có thể kiểm "
"soát tất cả các cài đặt từ cài đặt trình quản lý tệp. Nó sẽ hoạt động giống "
"như Trình quản lý tệp WP phụ trợ."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Nó sẽ hiển thị trình quản lý tệp trên giao diện người dùng. Nhưng chỉ Quản "
"trị viên mới có thể truy cập nó và sẽ kiểm soát từ cài đặt trình quản lý tệp."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Thông số:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Nó sẽ cho phép tất cả các vai trò truy cập trình quản lý tệp trên giao diện "
"người dùng hoặc Bạn có thể sử dụng đơn giản cho các vai trò người dùng cụ "
"thể như allow_roles = \"editor, author\" (phân cách bằng dấu phẩy (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Ở đây \"test\" là tên của thư mục nằm trên thư mục gốc, hoặc bạn có thể cung "
"cấp đường dẫn cho các thư mục con như \"wp-content / plugins\". Nếu để trống "
"hoặc để trống nó sẽ truy cập tất cả các thư mục trên thư mục gốc. Mặc định: "
"Thư mục gốc"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "để truy cập quyền ghi tệp, lưu ý: true / false, default: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "để truy cập quyền đọc tệp, lưu ý: true / false, default: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"nó sẽ ẩn được đề cập ở đây. Lưu ý: phân cách bằng dấu phẩy (,). Mặc định: "
"Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Nó sẽ khóa được đề cập trong dấu phẩy. bạn có thể khóa nhiều hơn như \"."
"php, .css, .js\", v.v. Mặc định: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* Đối với tất cả các hoạt động và để cho phép một số hoạt động, bạn có thể "
"đề cập đến tên hoạt động như, allow_operations = \"tải lên, tải xuống\". Lưu "
"ý: phân cách bằng dấu phẩy (,). Mặc định: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Danh sách thao tác tệp:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Tạo thư mục hoặc thư mục"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Tạo tệp"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Đổi tên tệp hoặc thư mục"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Nhân bản hoặc sao chép một thư mục hoặc tệp tin"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Dán tệp hoặc thư mục"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Lệnh cấm"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Để tạo một kho lưu trữ hoặc zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Giải nén tệp lưu trữ hoặc nén"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Sao chép tệp hoặc thư mục"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Cắt một tệp hoặc thư mục đơn giản"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Chỉnh sửa tệp"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Xóa hoặc xóa các tệp và thư mục"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Tải tập tin"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Tải tệp lên"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Tìm kiếm mọi thứ"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Thông tin về tệp"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Cứu giúp"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Nó sẽ cấm những người dùng cụ thể bằng cách chỉ đặt id của họ được phân "
"tách bằng dấu phẩy (,). Nếu người dùng là Ban thì họ sẽ không thể truy cập "
"trình quản lý tệp wp trên giao diện người dùng."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Giao diện người dùng Filemanager. Mặc định: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Đã sửa đổi tệp hoặc tạo định dạng ngày. Mặc định: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Ngôn ngữ trình quản lý tệp. Mặc định: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Chủ đề quản lý tệp. Mặc định: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Trình quản lý tệp - Thuộc tính hệ thống"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Phiên bản PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Kích thước tải lên tệp tối đa (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Kích thước tải lên tệp tối đa của bài đăng (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Giới hạn bộ nhớ (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Thời gian chờ (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Trình duyệt và hệ điều hành (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Thay đổi chủ đề tại đây:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Mặc định"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Tối"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Ánh sáng"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Màu xám"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Chào mừng bạn đến với Trình quản lý tệp"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Chúng tôi thích kết bạn mới! Đăng ký bên dưới và chúng tôi hứa sẽ\n"
"    luôn cập nhật cho bạn các plugin, bản cập nhật mới nhất của chúng tôi,\n"
"    giao dịch tuyệt vời và một vài ưu đãi đặc biệt."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Vui lòng nhập Tên."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Vui lòng nhập Họ."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Vui lòng nhập địa chỉ email."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Kiểm chứng"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Không, cám ơn"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Điều khoản dịch vụ"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Chính sách bảo mật"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Tiết kiệm..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "đồng ý"

#~ msgid "Backup not found!"
#~ msgstr "Không tìm thấy bản sao lưu!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Đã xóa bản sao lưu thành công!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Không có gì được chọn để sao lưu</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Vấn đề bảo mật.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Đã hoàn tất sao lưu cơ sở dữ liệu.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Không thể tạo bản sao lưu cơ sở dữ liệu."
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Đã hoàn tất sao lưu các plugin.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sao lưu plugin không thành công.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Đã hoàn tất sao lưu chủ đề.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sao lưu chủ đề không thành công.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Đã hoàn tất sao lưu tải lên.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sao lưu tải lên không thành công.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Người khác đã sao lưu xong.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sao lưu những người khác không thành "
#~ "công.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Tất cả đã được làm xong</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Quản lý các tệp WP của bạn."

#~ msgid "Extensions"
#~ msgstr "Tiện ích mở rộng"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Xin đóng góp một số đóng góp, để làm cho plugin ổn định hơn. Bạn có thể "
#~ "trả số tiền bạn chọn."
languages/wp-file-manager-zh_CN.mo000064400000037743147361034410013042 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�R(��(,�)?�)3*/6*f*m*��*�+?�+9�+(,'5,!],!,�,�,�,�,�,�,-
/-=-S-*W-�-�-�-�-�-�-�-�-.*.	7.A.Q.q.�.�.�.�.�.�.�.�.�.!/%/8/!E/g/uz/�/�/020?Q0��0U1k1�1	�1�1��1��253B3�X3i4{u4��4}5�5�5�5�50�5.�5'6C6V6l6�6�6�6	�6V�6]7z7�7�7�79�7�78$8:8	V8	`8j8�8�8�8H�8E9W9^9{9�9�9.�9	�9�9::!):K:g:n:�:�:	�:�:�:�:�:�:�:;;+;G;Z;g;�;�;-�;�;�;�;<<=<J<i<�<�<�<�<�<�<==,=B=U=b=i=�=�=�=�=�=�="�=>�->�>*�>>?<T?Q�?}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 13:11+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: zh_CN
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* 对于所有操作并允许某些操作,您可以提及操作名称,allowed_operations="upload,download"。注意:用逗号(,)分隔。默认: *-> 它将通过将特定用户的 id 用逗号 (,) 分隔来禁止特定用户。如果用户是 Ban,那么他们将无法访问前端的 wp 文件管理器。-> 文件管理器主题。默认值:Light-> 文件修改或创建日期格式。默认值:d M, Y h:i A-> 文件管理器语言。默认值: English(en)-> 文件管理器 UI 视图。默认值:grid行动对选定备份的操作管理员可以限制任何用户的操作。还可以隐藏文件和文件夹,并可以为不同的用户设置不同的文件夹路径。管理员可以限制任何用户角色的操作。还可以隐藏文件和文件夹,并可以为不同的用户角色设置不同的文件夹路径。启用垃圾箱后,您的文件将进入垃圾箱文件夹。启用此功能后,所有文件都将转到媒体库。全做完了您确定要删除选定的备份吗?您确定要删除此备份吗?您确定要恢复此备份吗?备份日期立即备份备份选项:备份数据(点击下载)备份文件将在正在备份,请稍候备份已成功删除。备份/恢复备份删除成功!ban浏览器和操作系统 (HTTP_USER_AGENT)购买专业版购买专业版取消在此处更改主题:点击购买专业版代码编辑器视图确认复制文件或文件夹目前没有找到备份。删除文件黑暗的数据库备份数据库备份在日期完成 数据库备份完成。数据库备份恢复成功。默认默认:删除取消选择忽略此通知。捐下载文件日志下载文件复制或克隆文件夹或文件编辑文件日志编辑文件启用文件上传到媒体库?启用垃圾箱?错误:无法恢复备份,因为数据库备份过大。请尝试从首选项设置中增加最大允许大小。现有备份提取存档或压缩文件文件管理器 - 简码文件管理器 - 系统属性文件管理器根路径,你可以根据你的选择改变。文件管理器具有多个主题的代码编辑器。您可以为代码编辑器选择任何主题。它会在您编辑任何文件时显示。您也可以允许代码编辑器的全屏模式。文件操作列表:要下载的文件不存在。文件备份灰色的帮助这里的“test”是位于根目录的文件夹的名称,或者您可以为子文件夹提供路径,如“wp-content/plugins”。如果留空或为空,它将访问根目录上的所有文件夹。默认值:根目录在这里 admin 可以授予对用户角色的访问权限以使用文件管理器。管理员可以设置默认访问文件夹并控制文件管理器的上传大小。文件信息安全代码无效。它将允许所有角色访问前端的文件管理器,或者您可以简单地使用特定的用户角色,例如 allowed_roles="editor,author" (用逗号(,)分隔)它将锁定逗号中提到的。您可以锁定更多,如“.php、.css、.js”等。默认值:Null它将在前端显示文件管理器。但只有管理员可以访问它,并将通过文件管理器设置进行控制。它将在前端显示文件管理器。您可以从文件管理器设置中控制所有设置。它将与后端 WP 文件管理器相同。最后一条日志消息光日志制作目录或文件夹制作文件数据库备份还原时允许的最大大小。最大文件上传大小 (upload_max_filesize)内存限制 (memory_limit)缺少备份 ID。缺少参数类型。缺少必需的参数。不,谢谢没有日志消息没有找到日志!笔记:注意:这些是演示屏幕截图。请购买文件管理器 pro 到日志功能。注意:这只是一个演示屏幕截图。要获得设置,请购买我们的专业版。未选择任何备份未选择任何备份。好的好的其他(在 wp-content 中找到的任何其他目录)其他备份在日期完成 其他备份完成。其他备份失败。其他备份恢复成功。PHP版本参数:粘贴文件或文件夹请输入电子邮件地址。请输入名字。请输入姓氏。请小心更改,错误的路径会导致文件管理器插件失效。如果您在备份还原时收到错误消息,请增加字段值。插件插件备份在日期完成 插件备份完成。插件备份失败。插件备份已成功恢复。发布最大文件上传大小 (post_max_size)首选项隐私政策公共根路径恢复文件移除或删除文件和文件夹重命名文件或文件夹恢复正在恢复,请稍候成功保存更改保存...搜索东西安全问题。全选选择要删除的备份!设置设置 - 代码编辑器设置 - 常规设置 - 用户限制设置 - 用户角色限制设置已保存。简码 - PRO简单剪切文件或文件夹系统属性服务条款备份显然成功了,现在已经完成。主题主题备份在日期完成 主题备份完成。主题备份失败。主题备份已成功恢复。是时候了超时(max_execution_time)制作存档或压缩文件今天用:无法创建数据库备份。无法删除备份!无法恢复数据库备份。无法恢复其他人。无法恢复插件。无法恢复主题。无法恢复上传。上传文件日志上传文件上传上传备份完成日期 上传备份完成。上传备份失败。上传备份成功恢复。核实查看日志WP文件管理器WP 文件管理器 - 备份/恢复WP 文件管理器贡献我们喜欢结交新朋友!在下面订阅,我们承诺
    让您及时了解我们最新的插件、更新、
    很棒的交易和一些特别优惠。欢迎使用文件管理器您尚未进行任何要保存的更改。获取读取文件权限,注意:true/false,默认:true获取写文件权限,注意:true/false,默认:false它会隐藏这里提到的。注意:用逗号(,)分隔。默认值:空languages/wp-file-manager-tr_TR.po000064400000067047147361034410013076 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 12:18+0530\n"
"PO-Revision-Date: 2022-02-28 12:24+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: tr_TR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Tema yedeği başarıyla geri yüklendi."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Temalar geri yüklenemiyor."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Yüklemeler yedekleme başarıyla geri yüklendi."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Yüklemeler geri yüklenemiyor."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Diğerleri yedekleme başarıyla geri yüklendi."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Diğerleri geri yüklenemiyor."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Eklenti yedeklemesi başarıyla geri yüklendi."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Eklentiler geri yüklenemiyor."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Veritabanı yedeklemesi başarıyla geri yüklendi."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Hepsi tamam"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB yedeklemesi geri yüklenemiyor."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Yedekler başarıyla kaldırıldı!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Yedekleme kaldırılamıyor!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Tarihte veritabanı yedeklemesi yapıldı "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Eklenti yedeklemesi o tarihte yapıldı "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Tarihte yapılan tema yedeklemesi "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Yedeklemenin yapıldığı tarihte yüklenir "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Diğerleri yedekleme tarihinde yapıldı "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Kütükler"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Günlük bulunamadı!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Yedekleme için hiçbir şey seçilmedi"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Güvenlik sorunu."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Veritabanı yedeklemesi yapıldı."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Veritabanı yedeği oluşturulamıyor."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Eklenti yedeklemesi yapıldı."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Eklentiler yedekleme başarısız oldu."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Tema yedeklemesi yapıldı."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Temalar yedekleme başarısız oldu."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Yüklemeler yedekleme tamamlandı."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Yüklemeler yedekleme başarısız oldu."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Diğerleri yedekleme yapıldı."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Diğerleri yedekleme başarısız oldu."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP Dosya Yöneticisi"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Ayarlar"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Tercihler"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Sistem özellikleri"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kısa kod - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Yedekle/Geri Yükle"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Profesyonel Satın Alın"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "bağış yap"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "İndirilecek dosya yok."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Geçersiz Güvenlik Kodu."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Yedek kimliği eksik."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametre türü eksik."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Gerekli parametreler eksik."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Hata: Veritabanı yedeklemesinin boyutu ağır olduğundan yedekleme geri "
"yüklenemiyor. Lütfen Tercihler ayarlarından izin verilen maksimum boyutu "
"artırmayı deneyin."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Silinecek yedekleri seçin!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Seçili yedekleri kaldırmak istediğinizden emin misiniz?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Yedekleme çalışıyor, lütfen bekleyin"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Geri yükleme çalışıyor, lütfen bekleyin"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Yedekleme için hiçbir şey seçilmedi."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP Dosya Yöneticisi - Yedekleme/Geri Yükleme"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Yedekleme Seçenekleri:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Veritabanı Yedekleme"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Veritabanı Yedekleme"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Eklentiler"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temalar"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Yüklemeler"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Diğerleri (wp içeriğinde bulunan diğer dizinler)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Şimdi yedekle"

#: inc/backup.php:89
msgid "Time now"
msgstr "Şimdi zamanı"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "BAŞARI"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Yedekleme başarıyla silindi."

#: inc/backup.php:102
msgid "Ok"
msgstr "Tamam mı"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "DOSYALARI SİL"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Bu yedeği silmek istediğinizden emin misiniz?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "İptal etmek"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Onaylamak"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "DOSYALARI GERİ YÜKLE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Bu yedeği geri yüklemek istediğinizden emin misiniz?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Son Günlük Mesajı"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Görünüşe göre yedekleme başarılı oldu ve şimdi tamamlandı."

#: inc/backup.php:171
msgid "No log message"
msgstr "Günlük mesajı yok"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Mevcut Yedek(ler)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Yedekleme Tarihi"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Yedekleme verileri (indirmek için tıklayın)"

#: inc/backup.php:190
msgid "Action"
msgstr "Aksiyon"

#: inc/backup.php:210
msgid "Today"
msgstr "Bugün"

#: inc/backup.php:239
msgid "Restore"
msgstr "Onarmak"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Sil"

#: inc/backup.php:241
msgid "View Log"
msgstr "Günlüğü Görüntüle"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Şu anda yedek(ler) bulunamadı."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Seçilen yedekleme(ler)deki işlemler"

#: inc/backup.php:251
msgid "Select All"
msgstr "Hepsini seç"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Seçimi kaldır"

#: inc/backup.php:254
msgid "Note:"
msgstr "not"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Yedekleme dosyaları altında olacak"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP Dosya Yöneticisi Katkısı"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Not: Bunlar demo ekran görüntüleridir. Lütfen Logs işlevleri için File "
"Manager pro satın alın."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "PRO'yu Satın Almak İçin Tıklayın"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "PRO'yu satın al"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Dosya Günlüklerini Düzenle"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Dosya Günlüklerini İndirin"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Dosya Günlüklerini Yükle"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Ayarlar kaydedildi."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Bu bildirimi reddedin."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Kaydedilecek herhangi bir değişiklik yapmadınız."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Genel Kök Yolu"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Dosya Yöneticisi Kök Yolu, tercihinize göre değiştirebilirsiniz."

#: inc/root.php:59
msgid "Default:"
msgstr "Varsayılan:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Lütfen bunu dikkatli bir şekilde değiştirin, yanlış yol dosya yöneticisi "
"eklentisinin çökmesine neden olabilir."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Çöp Kutusu Etkinleştirilsin mi?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Çöp kutusunu etkinleştirdikten sonra dosyalarınız çöp klasörüne gidecektir."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Dosyaların Medya Kitaplığına Yüklenmesi Etkinleştirilsin mi?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Bunu etkinleştirdikten sonra tüm dosyalar medya kitaplığına gidecektir."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Veritabanı yedekleme geri yüklemesi sırasında izin verilen maksimum boyut."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Yedekleme geri yükleme sırasında hata mesajı alıyorsanız lütfen alan "
"değerini artırın."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Değişiklikleri Kaydet"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Ayarlar - Genel"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Not: Bu sadece bir demo ekran görüntüsüdür. Ayarları almak için lütfen pro "
"sürümümüzü satın alın."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Burada yönetici, dosya yöneticisini kullanmak için kullanıcı rollerine "
"erişim verebilir. Yönetici, Varsayılan Erişim Klasörünü ayarlayabilir ve "
"ayrıca dosya yöneticisinin yükleme boyutunu kontrol edebilir."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Ayarlar - Kod düzenleyici"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Dosya Yöneticisi, birden çok tema içeren bir kod düzenleyiciye sahiptir. Kod "
"düzenleyici için herhangi bir tema seçebilirsiniz. Herhangi bir dosyayı "
"düzenlediğinizde görüntülenecektir. Ayrıca tam ekran kod düzenleyici moduna "
"izin verebilirsiniz."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kod düzenleyici Görünümü"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Ayarlar - Kullanıcı Kısıtlamaları"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Yönetici, herhangi bir kullanıcının eylemlerini kısıtlayabilir. Ayrıca dosya "
"ve klasörleri gizleyebilir ve farklı kullanıcılar için farklı - farklı "
"klasör yolları ayarlayabilirsiniz."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Ayarlar - Kullanıcı Rolü Kısıtlamaları"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Yönetici, herhangi bir kullanıcı rolünün eylemlerini kısıtlayabilir. Ayrıca "
"dosya ve klasörleri gizleyebilir ve farklı kullanıcı rolleri için farklı - "
"farklı klasör yolları ayarlayabilirsiniz."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Dosya Yöneticisi - Kısa Kod"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "KULLANIM:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Ön uçta dosya yöneticisini gösterecektir. Tüm ayarları dosya yöneticisi "
"ayarlarından kontrol edebilirsiniz. Arka uç WP Dosya Yöneticisi ile aynı "
"şekilde çalışacaktır."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Ön uçta dosya yöneticisini gösterecektir. Ancak buna yalnızca Yönetici "
"erişebilir ve dosya yöneticisi ayarlarından kontrol eder."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "parametreler:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Tüm rollerin ön uçtaki dosya yöneticisine erişmesine izin verir veya belirli "
"kullanıcı rolleri için allow_roles=\"editor,author\" (virgülle (,) ile "
"ayrılmış) gibi basit bir şekilde kullanabilirsiniz."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Burada \"test\", kök dizinde bulunan klasörün adıdır veya \"wp-content/"
"plugins\" gibi alt klasörler için yol verebilirsiniz. Boş veya boş "
"bırakılırsa, kök dizindeki tüm klasörlere erişecektir. Varsayılan: Kök dizin"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"dosya izinlerini yazmak için erişim için, not: doğru/yanlış, varsayılan: "
"yanlış"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"dosyaları okuma iznine erişim için, not: doğru/yanlış, varsayılan: doğru"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"burada belirtilenleri gizleyecektir. Not: virgül (,) ile ayrılmış. "
"Varsayılan: Boş"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Virgülle belirtilen kilitlenir. \".php,.css,.js\" vb. gibi daha fazlasını "
"kilitleyebilirsiniz. Varsayılan: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* tüm işlemler için ve bazı işlemlere izin vermek için işlem adını "
"allow_processs=\"upload,download\" gibi belirtebilirsiniz. Not: virgül (,) "
"ile ayrılmış. Varsayılan: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Dosya İşlemleri Listesi:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Dizin veya klasör oluştur"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "dosya yap"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Bir dosyayı veya klasörü yeniden adlandırın"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Bir klasörü veya dosyayı çoğaltın veya klonlayın"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Bir dosya veya klasör yapıştırın"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "yasaklamak"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Arşiv veya zip yapmak için"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Arşivi veya sıkıştırılmış dosyayı çıkarın"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Dosyaları veya klasörleri kopyalayın"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Basitçe bir dosya veya klasörü kesin"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Bir dosyayı düzenleyin"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Dosyaları ve klasörleri kaldırın veya silin"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Dosyaları indir"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Dosyaları yükle"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Şeyleri ara"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Dosya bilgisi"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Yardım"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Belirli kullanıcıları yalnızca kimliklerini virgülle (,) ayırarak "
"yasaklayacaktır. Kullanıcı Ban ise, ön uçta wp dosya yöneticisine "
"erişemezler."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Dosya Yöneticisi Kullanıcı Arayüzü Görünümü. Varsayılan: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Dosya Değiştirildi veya Tarih formatı oluştur. Varsayılan: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Dosya yöneticisi Dil. Varsayılan: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Dosya Yöneticisi Teması. Varsayılan: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Dosya Yöneticisi - Sistem Özellikleri"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP sürümü"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimum dosya yükleme boyutu (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Maksimum dosya yükleme boyutunu yayınla (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Bellek Sınırı (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Zaman aşımı (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Tarayıcı ve İşletim Sistemi (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Temayı Buradan Değiştirin:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Varsayılan"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "karanlık"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Işık"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Gri"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Dosya Yöneticisine Hoş Geldiniz"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Yeni arkadaşlar edinmeyi seviyoruz! Aşağıdan abone olun ve söz veriyoruz\n"
"    en yeni eklentilerimiz, güncellemelerimiz ile sizi güncel tutmak,\n"
"    harika fırsatlar ve birkaç özel teklif."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Lütfen Adınızı Girin."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Lütfen Soyadı Giriniz."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Lütfen E-posta Adresini Girin."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Doğrulayın"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Hayır teşekkürler"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Kullanım Şartları"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Gizlilik Politikası"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "kaydediliyor..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "TAMAM MI"

#~ msgid "Backup not found!"
#~ msgstr "Yedek bulunamadı!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Yedekleme başarıyla kaldırıldı!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Yedekleme için hiçbir şey seçilmedi</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Güvenlik Sorunu.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Veritabanı yedeklemesi tamamlandı.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Veritabanı yedeği oluşturulamıyor.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Eklentiler yedeklemesi tamamlandı.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Eklentiler yedekleme başarısız oldu.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Tema yedeklemesi tamamlandı.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Temalar yedekleme başarısız oldu.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Yükleme tamamlandı.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Yükleme yedeklemesi başarısız oldu.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Diğerlerinin yedeklemesi tamamlandı.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Diğerleri yedekleme başarısız oldu.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Her Şey Tamamlandı</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "WP dosyalarınızı yönetin."

#~ msgid "Extensions"
#~ msgstr "Uzantıları"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Lütfen eklentiyi daha kararlı hale getirmek için biraz bağış yapın. "
#~ "İstediğiniz miktarı ödeyebilirsiniz."
languages/wp-file-manager-ca.mo000064400000044520147361034410012413 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�N(�)0�)E�)@9*Rz*�*4�*�	+��+R,K�,-F&-;m-<�-�-.".6B.(y.1�.2�./5%/[/ g/
�/
�/
�/�/�/�/	�/020M0]0'b0=�0-�0G�0>1J1	W1a1x1�1�1�1*�1�12?!2a2�|2L3i3�3)�3K�3�4�4&5 F5g5l5�r5�o6G7^7�{7d?8��8�:9�9:	::
6:cA:7�:!�:-�:-;#K;o;{;�;�;r�;�(<4�<5�<'=/=<7=2t="�=*�=9�=/>;>H>+e>�>�>i�>s$?
�?3�?)�?1@C3@<w@
�@�@�@�@&A$*AOA*XA�A�A�A�A�A�A.�A

BB:B$QB/vB�B�B!�B�BCICaC,gC"�C,�C<�C!D#*DNDeDjD<oD.�D?�D!E%=E cE%�E�E�E
�E=�E+F3IFE}F
�F�F�F9�F%/G�UGH"9HQ\HW�HII}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 15:00+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: ca
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* Per a totes les operacions i per permetre alguna operació, podeu esmentar el nom de l'operació com, per exemple, allow_operations="upload,download". Nota: separats per comes (,). Per defecte: *-> Prohibirà a usuaris particulars només posar els seus identificadors separats per comes (,). Si l'usuari és Ban, no podrà accedir al gestor de fitxers wp a la portada.-> Tema del gestor de fitxers. Per defecte: Llum-> Fitxer modificat o Crea format de data. Per defecte: d M, Y h: i A-> Idioma del gestor de fitxers. Valor per defecte: anglès (en)-> Visualització de la interfície d'usuari Filemanager. Per defecte: quadrículaAccióAccions sobre les còpies de seguretat seleccionadesL'administrador pot restringir les accions de qualsevol usuari. També amagueu fitxers i carpetes i podeu establir camins de carpetes diferents per a diferents usuaris.L’administrador pot restringir les accions de qualsevol funció d’usuari. També amagueu fitxers i carpetes i podeu establir diferents camins de carpetes diferents per als diferents rols dels usuaris.Després d'activar la paperera, els fitxers es dirigiran a la carpeta de paperera.Després d'activar-ho, tots els fitxers aniran a la biblioteca multimèdia.Tot fetEsteu segur que voleu eliminar les còpies de seguretat seleccionades?Esteu segur que voleu suprimir aquesta còpia de seguretat?Esteu segur que voleu restaurar aquesta còpia de seguretat?Data de còpia de seguretatFeu una còpia de seguretat araOpcions de còpia de seguretat:Dades de còpia de seguretat (feu clic per baixar-les)Hi haurà fitxers de còpia de seguretatLa còpia de seguretat s'està executant, espereuLa còpia de seguretat s'ha suprimit correctament.Restaurar còpia de seguretatLes còpies de seguretat s'han eliminat correctament.ProhibicióNavegador i SO (HTTP_USER_AGENT)Compra PROCompra ProCancel · larCanvieu el tema aquí:Feu clic per comprar PROVista de l'editor de codiConfirmeuCopieu fitxers o carpetesActualment no s'ha trobat cap còpia de seguretat.ESBORRAR ARXIUSFoscCòpia de seguretat de la base de dadesCòpia de seguretat de la base de dades realitzada a la data Còpia de seguretat de la base de dades feta.La còpia de seguretat de la base de dades s'ha restaurat correctament.Per defectePer defecte:SuprimeixAnul·leu la seleccióRebutgeu aquest avís.DonarBaixeu registres de fitxersDescarregueu fitxersDupliqueu o cloneu una carpeta o un fitxerEdita els registres de fitxersEditeu un fitxerVoleu activar la pujada de fitxers a la biblioteca multimèdia?Voleu activar la paperera?Error: no es pot restaurar la còpia de seguretat perquè la còpia de seguretat de la base de dades és gran. Si us plau, intenteu augmentar la mida màxima permesa des de la configuració de Preferències.Còpia de seguretat existentExtreu arxiu o fitxer comprimitGestor de fitxers: codi curtGestor de fitxers: propietats del sistemaCamí arrel del gestor de fitxers, podeu canviar segons la vostra elecció.File Manager té un editor de codi amb diversos temes. Podeu seleccionar qualsevol tema per a l'editor de codi. Es mostrarà quan editeu qualsevol fitxer. També podeu permetre el mode de pantalla completa de l'editor de codi.Llista d'operacions de fitxers:El fitxer no existeix per descarregar.Còpia de seguretat dels fitxersGrisAjudaAquí "prova" és el nom de la carpeta que es troba al directori arrel, o podeu donar el camí per a subcarpetes com ara "wp-content/plugins". Si es deixa en blanc o buit, accedirà a totes les carpetes del directori arrel. Per defecte: directori arrelAquí l'administrador pot donar accés a rols d'usuari per utilitzar el gestor de fitxers. L'administrador pot configurar la carpeta d'accés per defecte i també controlar la mida de càrrega del gestor de fitxers.Informació del fitxerCodi de seguretat no vàlid.Permetrà que tots els rols accedeixin al gestor de fitxers a la portada o podeu utilitzar-lo senzillament per a rols d'usuari concrets, com ara allow_roles="editor,author" (separat per coma (,))Es bloquejarà esmentat entre comes. podeu bloquejar més com ".php,.css,.js", etc. Per defecte: nulMostrarà el gestor de fitxers a la portada. Però només l'administrador hi pot accedir i controlarà des de la configuració del gestor de fitxers.Mostrarà el gestor de fitxers a la portada. Podeu controlar tota la configuració des de la configuració del gestor de fitxers. Funcionarà igual que el gestor de fitxers WP de fons.Últim missatge de registreLlumRegistresFeu directori o carpetaFeu fitxerMida màxima permesa en el moment de la restauració de la còpia de seguretat de la base de dades.Mida màxima de pujada de fitxers (upload_max_filesize)Límit de memòria (memory_limit)Falta l'identificador de còpia de seguretat.Falta el tipus de paràmetre.Falten els paràmetres obligatoris.No gràciesCap missatge de registreNo s'han trobat registres.Nota:Nota: són captures de pantalla de demostració. Si us plau, compreu File Manager pro a les funcions de registres.Nota: Aquesta és només una captura de pantalla de demostració. Per obtenir la configuració, si us plau, compreu la nostra versió professional.No s'ha seleccionat res per a la còpia de seguretatNo s'ha seleccionat res per a la còpia de seguretat.D'acordD'acordAltres (qualsevol altre directori que es trobi a wp-content)Altres còpies de seguretat realitzades a la data Còpia de seguretat d'altres feta.La còpia de seguretat d'altres ha fallat.Altres còpies de seguretat s'han restaurat correctament.Versió PHPParàmetres:Enganxeu un fitxer o carpetaIntroduïu l'adreça de correu electrònic.Introduïu el nom.Introduïu el cognom.Si us plau, canvieu-ho amb cura, el camí equivocat pot fer que el connector del gestor de fitxers baixi.Augmenteu el valor del camp si rebeu un missatge d'error en el moment de la restauració de la còpia de seguretat.ConnectorsCòpia de seguretat dels connectors feta a la data Còpia de seguretat dels connectors feta.La còpia de seguretat dels connectors ha fallat.La còpia de seguretat dels connectors s'ha restaurat correctament.Publica la mida màxima de pujada del fitxer (post_max_size)PreferènciesPolítica de privacitatCamí d’arrel públicRESTAURAR ARXIUSElimineu o suprimiu fitxers i carpetesCanvieu el nom d'un fitxer o carpetaRestauraLa restauració s'està executant, espereuÈXITGuardar canvisS'està desant ...Cerca cosesProblema de seguretat.Seleccionar totSeleccioneu còpies de seguretat per suprimir!ConfiguracióConfiguració: editor de codisConfiguració: generalConfiguració: restriccions d'usuariConfiguració: restriccions del rol de l'usuariConfiguració desada.Shortcode - PROTall simple d'un fitxer o carpetaPropietats del sistemaTermes del serveiAparentment, la còpia de seguretat ha tingut èxit i ara està completa.TemesCòpia de seguretat de temes feta a la data Còpia de seguretat de temes feta.La còpia de seguretat dels temes ha fallat.La còpia de seguretat de temes s'ha restaurat correctament.Hora araTemps d'espera (max_execution_time)Per fer un arxiu o zipAvuiÚS:No es pot crear una còpia de seguretat de la base de dades.No s'ha pogut eliminar la còpia de seguretat.No es pot restaurar la còpia de seguretat de la base de dades.No es poden restaurar els altres.No es poden restaurar els connectors.No es poden restaurar els temes.No es poden restaurar les càrregues.Penja registres de fitxersPengeu fitxersCàrreguesCòpies de seguretat de les càrregues realitzades a la data Còpia de seguretat de les càrregues feta.La còpia de seguretat de les càrregues ha fallat.La còpia de seguretat de les càrregues s'ha restaurat correctament.VerifiqueuVeure el registreGestor de fitxers WPGestor de fitxers WP - Còpia de seguretat / restauracióContribució del gestor de fitxers WPEns encanta fer nous amics! Subscriviu-vos a continuació i us ho prometem
    estarà al dia amb els nostres nous connectors, actualitzacions,
    ofertes increïbles i algunes ofertes especials.Benvingut al Gestor de fitxersNo heu fet cap canvi per desar-lo.per accedir al permís de lectura de fitxers, nota: true/false, per defecte: trueper accedir als permisos d'escriptura dels fitxers, nota: true/false, per defecte: falss'amagarà aquí esmentat. Nota: separats per comes (,). Per defecte: nullanguages/wp-file-manager-ru_RU.mo000064400000057725147361034410013077 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&&c(��)Q+pd+W�+v-,�,L�,-6.sV/s�/>0mT0]�0g 14�19�1?�1h726�2T�2<,3/i3<�3�3(�34#444%A4+g4,�4�41�4S5_5y5?�5a�5(6^F6�6�6�6�6-7/7*H7s7O�76�7#8G88 �8[�86�9J4:2:C�:��:��;/&=;V=6�=
�=�=��=��?"PA1sA|�A�"C�CCE4PF�F�F/�F�F��F_�G&�GP	H1ZHC�H�H(�H%I6I�LI�JS�JTPK�K�Kc�KNLFbLB�L[�LHMYM+mMR�M,�M4N�NN�O�O\P)_PF�PY�PY*Q�Q5�Q4�Q#R=,R5jR�R9�R
�R%�R$S=S*SS~SG�S�S,�STM<TQ�T&�TU8UQU)qUd�UVR	V!\VX~VO�V9'W*aW$�W�W�WX�WB3XQvX;�X=Y7BY?zY.�Y�YZSZ5lZE�Z@�Z)[!<["^[m�[/�[[\D{]i�]�*^��^�I_}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
PO-Revision-Date: 2022-03-01 18:25+0530
Last-Translator: 
Language-Team: 
Language: ru
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* для всех операций и для разрешения какой-либо операции вы можете указать имя операции, например, allow_operations="upload,download". Примечание: через запятую (,). По умолчанию: *-> Он заблокирует определенных пользователей, просто поместив их идентификаторы через запятую (,). Если пользователь заблокирован, он не сможет получить доступ к файловому менеджеру wp через интерфейс пользователя.-> Тема файлового менеджера. По умолчанию: Light-> Файл изменен или формат даты создания. По умолчанию: d M, Y h: i A-> Язык файлового менеджера. По умолчанию: English(en)-> Просмотр пользовательского интерфейса Filemanager. По умолчанию: gridДействиеДействия с выбранными резервными копиямиАдминистратор может ограничить действия любого пользователя. Также можно скрыть файлы и папки и установить разные пути к папкам для разных пользователей.Администратор может ограничить действия любой пользовательской роли. Также можно скрыть файлы и папки и установить разные пути к папкам для разных ролей пользователей.После включения корзины ваши файлы будут отправлены в корзину.После включения все файлы будут отправлены в медиа-библиотеку.Все сделаноВы действительно хотите удалить выбранные резервные копии?Вы уверены, что хотите удалить эту резервную копию?Вы уверены, что хотите восстановить эту резервную копию?Дата резервного копированияСделать резервную копию сейчасПараметры резервного копирования:Данные резервного копирования (нажмите, чтобы загрузить)Файлы резервных копий будут вРезервное копирование выполняется, подождитеРезервная копия успешно удалена.Резервное восстановлениеРезервные копии успешно удалены!ЗапретитьБраузер и ОС (HTTP_USER_AGENT)Купить PROКупить ProОтменаИзменить тему здесь:Нажмите, чтобы купить PROПросмотр редактора кодаПодтверждатьКопировать файлы или папкиВ настоящее время резервных копий не найдено.УДАЛИТЬ ФАЙЛЫТемныйРезервное копирование базы данныхРезервное копирование базы данных выполнено на дату Бэкап БД сделан.Резервная копия базы данных успешно восстановлена.По умолчаниюПо умолчанию:УдалитьОтменить выборЗакрыть это уведомление.ПожертвоватьСкачать файлы журналовСкачать файлыДублировать или клонировать папку или файлРедактировать журналы файловРедактировать файлРазрешить загрузку файлов в медиатеку?Включить корзину?Ошибка: Невозможно восстановить резервную копию, так как резервная копия базы данных имеет большой размер. Попробуйте увеличить Максимально допустимый размер в настройках «Предпочтения».Существующие резервные копииИзвлечь архив или заархивированный файлФайловый менеджер - шорткодФайловый менеджер - Свойства системыКорневой путь файлового менеджера, вы можете изменить по своему усмотрению.В файловом менеджере есть редактор кода с несколькими темами. Вы можете выбрать любую тему для редактора кода. Он будет отображаться при редактировании любого файла. Также вы можете разрешить полноэкранный режим редактора кода.Список файловых операций:Файл не существует для загрузки.Резервное копирование файловсерыйПомощьЗдесь «тест» — это имя папки, расположенной в корневом каталоге, или вы можете указать путь для подпапок, например «wp-content/plugins». Если оставить пустым или пустым, он будет иметь доступ ко всем папкам в корневом каталоге. По умолчанию: корневой каталогЗдесь администратор может предоставить доступ к ролям пользователей для использования файлового менеджера. Администратор может установить папку доступа по умолчанию, а также контролировать размер загрузки файлового менеджера.Информация о файлеНеверный код безопасности.Это позволит всем ролям получить доступ к файловому менеджеру на внешнем интерфейсе, или вы можете просто использовать для определенных ролей пользователей, например, allow_roles="editor,author" (разделенные запятой (,))Это заблокирует указанное через запятую. вы можете заблокировать больше, например ".php,.css,.js" и т. д. По умолчанию: NullОн покажет файловый менеджер на переднем конце. Но только администратор может получить к нему доступ и будет управлять настройками файлового менеджера.Он покажет файловый менеджер на переднем конце. Вы можете контролировать все настройки из настроек файлового менеджера. Он будет работать так же, как бэкэнд Диспетчер файлов WP.Последнее сообщение журналаСветЖурналыСделать каталог или папкуСделать файлМаксимально допустимый размер на момент восстановления резервной копии базы данных.Максимальный размер загружаемого файла (upload_max_filesize)Лимит памяти (memory_limit)Отсутствует идентификатор резервной копии.Отсутствует тип параметра.Отсутствуют обязательные параметры.Нет, спасибоНет сообщения журналаЖурналов не найдено!Примечание:Примечание. Это демонстрационные снимки экрана. Пожалуйста, купите File Manager Pro для работы с журналами.Примечание. Это всего лишь демонстрационный снимок экрана. Чтобы получить настройки, пожалуйста, купите нашу профессиональную версию.Ничего не выбрано для резервного копированияНичего не выбрано для резервного копирования.ОКОКДругое (любые другие каталоги, найденные внутри wp-content)Остальные резервные копии сделаны на дату Сделано резервное копирование других.Сбой резервного копирования других.Остальные резервные копии успешно восстановлены.Версия PHPПараметры:Вставить файл или папкуПожалуйста, введите адрес электронной почты.Пожалуйста, введите имя.Пожалуйста, введите фамилию.Пожалуйста, измените это внимательно, неправильный путь может привести к отказу плагина файлового менеджера.Пожалуйста, увеличьте значение поля, если вы получаете сообщение об ошибке во время восстановления из резервной копии.ПлагиныРезервное копирование плагинов выполнено на дату Бэкап плагинов сделан.Сбой резервного копирования плагинов.Резервная копия плагинов успешно восстановлена.Максимальный размер загружаемого файла (post_max_size)ПредпочтенияПолитика конфиденциальностиОбщедоступный корневой путьВОССТАНОВИТЬ ФАЙЛЫУдалить или удалить файлы и папкиПереименовать файл или папкуВосстановитьИдет восстановление, подождитеУСПЕХСохранить измененияСохранение ...Искать вещиПроблема безопасности.Выбрать всеВыберите резервные копии для удаления!НастройкиНастройки - Код-редакторНастройки - ОбщиеНастройки - Ограничения для пользователейНастройки - Ограничения ролей пользователейНастройки сохранены.Шорткод - PROПросто вырезать файл или папкуСвойства системыУсловия использованияРезервное копирование, по-видимому, выполнено успешно.ТемыРезервное копирование тем выполнено на дату Бэкап темы сделан.Не удалось выполнить резервное копирование тем.Резервная копия тем успешно восстановлена.Сделать резервную копию сейчасВремя вышло (max_execution_time)Сделать архив или zipСегодняИСПОЛЬЗОВАТЬ:Невозможно создать резервную копию базы данных.Невозможно удалить резервную копию!Невозможно восстановить резервную копию БД.Невозможно восстановить другие.Невозможно восстановить плагины.Невозможно восстановить темы.Невозможно восстановить загрузки.Загрузить файлы журналовЗагрузить файлыЗагрузкиЗагружает резервную копию, сделанную на дату Загружается резервная копия.Не удалось загрузить резервную копию.Резервная копия загружена успешно.ПроверятьПосмотреть журналДиспетчер файлов WPДиспетчер файлов WP - Резервное копирование / восстановлениеВклад диспетчера файлов WPМы любим заводить новых друзей! Подпишитесь ниже, и мы обещаем
    держать вас в курсе наших последних новых плагинов, обновлений,
    отличные предложения и несколько специальных предложений.Добро пожаловать в файловый менеджерВы не вносили никаких изменений, которые нужно сохранить.для доступа к разрешению на чтение файлов, примечание: true/false, по умолчанию: trueдля доступа к разрешениям на запись файлов, примечание: true/false, по умолчанию: falseэто скроет упомянутое здесь. Примечание: через запятую (,). По умолчанию: нольlanguages/wp-file-manager-et.po000064400000065016147361034410012446 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 17:28+0530\n"
"PO-Revision-Date: 2022-02-28 15:55+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-SearchPath-1: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Teemade varundamine õnnestus."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Teemasid ei saa taastada."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Üleslaadimiste varundamine õnnestus."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Üleslaadimisi ei saa taastada."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Teiste varukoopia taastamine õnnestus."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Teisi ei saa taastada."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Pistikprogrammide varukoopia taastamine õnnestus."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Pistikprogramme ei saa taastada."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Andmebaasi varukoopia taastamine õnnestus."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Kõik tehtud"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB varundamist ei saa taastada."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Varukoopiad eemaldati edukalt!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Varukoopiat ei saa eemaldada!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Andmebaasi varundamine on kuupäeval tehtud "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Pluginate varundamine on kuupäeval tehtud "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Teemade varundamine on kuupäeval tehtud "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Üleslaadimine on kuupäeval tehtud "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Teiste varundamine on kuupäeval tehtud "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Logid"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Palke ei leitud!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Varundamiseks pole midagi valitud"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Turvaprobleem."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Andmebaasi varundamine tehtud."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Andmebaasi varukoopiat ei saa luua."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Pluginate varundamine on tehtud."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Pluginate varundamine ebaõnnestus."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Teemade varundamine on tehtud."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Teemade varundamine ebaõnnestus."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Üleslaadimiste varukoopia on tehtud."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Varundamise üleslaadimine ebaõnnestus."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Teised varukoopiad tehtud."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Teiste varundamine ebaõnnestus."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP-failihaldur"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Seaded"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Eelistused"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Süsteemi atribuudid"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Lühikood – PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Varundamine/taastamine"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Osta Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Anneta"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Faili pole allalaadimiseks olemas."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Vale turvakood."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Varunduse ID puudub."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parameetri tüüp puudub."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Nõutavad parameetrid puuduvad."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Viga: varukoopiat ei saa taastada, kuna andmebaasi varukoopia on mahukas. "
"Palun proovige eelistuste seadetes suurendada maksimaalset lubatud suurust."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Valige kustutamiseks varukoopia(d)!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Kas soovite kindlasti valitud varukoopiad eemaldada?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Varundamine töötab, palun oota"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Taastamine töötab, palun oodake"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Varundamiseks pole midagi valitud."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP-failihaldur - varundamine / taastamine"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Varundamisvalikud:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Andmebaasi varundamine"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Failide varundamine"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Pistikprogrammid"

#: inc/backup.php:71
msgid "Themes"
msgstr "Themes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Üleslaadimised"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Teised (kõik muud kataloogid, mis on leitud wp-sisust)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Varunda kohe"

#: inc/backup.php:89
msgid "Time now"
msgstr "Aeg kohe"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "EDU"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Varundamine edukalt kustutatud."

#: inc/backup.php:102
msgid "Ok"
msgstr "Okei"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "Kustuta failid"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Kas soovite kindlasti selle varukoopia kustutada?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Tühista"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Kinnitage"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "TAASTA FILISID"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Kas olete kindel, et soovite selle varukoopia taastada?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Viimane logisõnum"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Ilmselt õnnestus varundamine ja see on nüüd valmis."

#: inc/backup.php:171
msgid "No log message"
msgstr "Logisõnumit pole"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Olemasolevad varukoopiad"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Varundamise kuupäev"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Varukoopiad (klõpsake allalaadimiseks)"

#: inc/backup.php:190
msgid "Action"
msgstr "Tegevus"

#: inc/backup.php:210
msgid "Today"
msgstr "Täna"

#: inc/backup.php:239
msgid "Restore"
msgstr "Taastama"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Kustuta"

#: inc/backup.php:241
msgid "View Log"
msgstr "Vaata logi"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Praegu ei leitud varukoopiaid."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Toimingud valitud varukoopia (te) ga"

#: inc/backup.php:251
msgid "Select All"
msgstr "Vali kõik"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Tühistage valik"

#: inc/backup.php:254
msgid "Note:"
msgstr "Märge:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Varukoopiad jäävad alla"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP-failihalduri kaastöö"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Märkus. Need on demo ekraanipildid. Ostke funktsioonid File Manager pro to "
"Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klõpsake PRO ostmiseks"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Osta PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Redigeeri failide logisid"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Failide logide allalaadimine"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Failide logide üleslaadimine"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Seaded on salvestatud."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Loobu sellest teatest."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Te pole salvestamiseks muudatusi teinud."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Avalik juurtee"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Failihalduri juurtee, saate muuta vastavalt oma valikule."

#: inc/root.php:59
msgid "Default:"
msgstr "Vaikimisi:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Muutke seda hoolikalt, vale tee võib viia failihalduri pistikprogrammi alla."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Kas lubada prügikast?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Pärast prügikasti lubamist lähevad teie failid prügikasti."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Kas lubada failide üleslaadimine meediumiteeki?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Pärast selle lubamist lähevad kõik failid meediumiteeki."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "Maksimaalne lubatud suurus andmebaasi varukoopia taastamise ajal."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Kui saate varunduse taastamise ajal veateate, suurendage välja väärtust."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Salvesta muudatused"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Seaded - üldine"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Märkus. See on lihtsalt demo ekraanipilt. Seadete saamiseks palun ostke meie "
"pro versioon."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Siin saab admin lubada failihalduri kasutamiseks juurdepääsu "
"kasutajarollidele. Administraator saab määrata vaikepöörduskataloogi ja "
"kontrollida ka failihalduri üleslaadimise suurust."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Seaded - koodiredaktor"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Failihalduril on mitme teemaga koodiredaktor. Koodiredaktori jaoks saate "
"valida mis tahes teema. See kuvatakse mis tahes faili muutmisel. Samuti "
"saate lubada koodiredaktori täisekraanrežiimi."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Koodiredaktori vaade"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Seaded - kasutaja piirangud"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administraator saab piirata mis tahes kasutaja toiminguid. Peida ka failid "
"ja kaustad ning saab määrata erinevatele kasutajatele erinevaid kaustateid."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Seaded - kasutajarollide piirangud"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administraator saab piirata mis tahes kasutajarollide toiminguid. Peida ka "
"failid ja kaustad ning saab määrata erinevate kasutajate rollide jaoks "
"erinevaid kaustade teid."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Failihaldur PRO - Código de acceso"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "KASUTAMINE:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Esiküljel kuvatakse failihaldur. Saate kõiki sätteid juhtida failihalduri "
"seadetest. See töötab samamoodi nagu taustaprogrammi WP failihaldur."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Esiküljel kuvatakse failihaldur. Kuid sellele pääseb juurde ainult "
"administraator, kes juhib failihalduri sätete kaudu."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parameetrid:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"See võimaldab kõigil rollidel pääseda juurde failihaldurile esiotsas või "
"seda saab lihtsalt kasutada teatud kasutajarollide jaoks, näiteks "
"lubatud_roles=\"editor,author\" (eraldatud komaga (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Siin on \"test\" kausta nimi, mis asub juurkataloogis, või võite anda "
"alamkaustadele tee nagu \"wp-content/plugins\". Kui jätate tühjaks või "
"tühjaks, pääseb see juurde kõikidele juurkataloogi kaustadele. Vaikimisi: "
"juurkataloog"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"failide kirjutamisõiguste saamiseks märkus: tõene/väär, vaikimisi: väär"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "failide lugemisõiguse saamiseks märkige: tõene/väär, vaikimisi: tõene"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"see peidab siin mainitud. Märkus: eraldatud komaga (,). Vaikimisi: null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"See lukustub komades mainitud. saate lukustada rohkem kui \".php,.css,.js\" "
"jne. Vaikimisi: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* kõigi toimingute jaoks ja mõne toimingu lubamiseks võite mainida toimingu "
"nime nagu, enabled_operations=\"upload,download\". Märkus: eraldatud komaga "
"(,). Vaikimisi: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Failitoimingute loend:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Tee kataloog või kaust"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Tee fail"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Nimetage fail või kaust ümber"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Kausta või faili kopeerimine või kloonimine"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Kleepige fail või kaust"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Keeldu"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Arhiivi või ZIP-i loomiseks"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Väljavõte arhiivist või ZIP-failist"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Failide või kaustade kopeerimine"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Lihtne faili või kausta lõikamine"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Redigeerige faili"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Failide ja kaustade eemaldamine või kustutamine"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Failide allalaadimine"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Faile üles laadima"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Otsige asju"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Faili teave"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Abi"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> See keelab konkreetsed kasutajad, pannes nende ID-d komadega eraldatuks "
"(,). Kui kasutaja on keelatud, ei pääse see kasutajaliideses juurde wp-"
"failihaldurile."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanageri kasutajaliidese vaade. Vaikimisi: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Faili muudetud või Loo kuupäeva vorming. Vaikimisi: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Failihalduri keel. Vaikimisi: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Failihalduri teema. Vaikimisi: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Failihaldur - süsteemi atribuudid"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP versioon"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimaalne faili üleslaadimise suurus (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Postituse maksimaalne faili üleslaadimise suurus (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Mälupiirang (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Aeg maha (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Brauser ja operatsioonisüsteem (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Muuda teemat siin:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Vaikimisi"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Tume"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Valgus"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Hall"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Tere tulemast failihaldurisse"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Meile meeldib uusi sõpru leida! Telli allpool ja lubame\n"
"    hoia teid kursis meie uusimate uute pistikprogrammide, värskenduste,\n"
"    vinged pakkumised ja mõned eripakkumised."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Palun sisestage eesnimi."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Palun sisestage perekonnanimi."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Sisestage palun e-posti aadress."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Kontrollige"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ei aitäh"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Kasutustingimused"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Privaatsuspoliitika"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Salvestamine ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Okei"

#~ msgid "Backup not found!"
#~ msgstr "Varukoopiat ei leitud!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Varukoopia eemaldamine õnnestus!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Varundamiseks pole midagi valitud</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Turvaprobleem.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Andmebaasi varundamine on tehtud.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Andmebaasi varukoopiat ei saa luua.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Pistikprogrammide varundamine on "
#~ "tehtud.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Pistikprogrammide varundamine nurjus.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Teemade varundamine on tehtud.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Teemade varundamine ebaõnnestus.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Üleslaadimine on varundatud.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Üleslaadimise varundamine ebaõnnestus.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Teised varundamine on tehtud.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Teiste varundamine nurjus.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Kõik valmis</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "WP-failide haldamine."

#~ msgid "Extensions"
#~ msgstr "Laiendused"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Palun anna mõned annetused, et muuta plugin stabiilsemaks. Saate maksta "
#~ "teie valitud summa."
languages/wp-file-manager-id_ID.mo000064400000042013147361034410012773 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�L(�
)$�)D�).5**d*�*#�*��*�c+C,E\,
�,8�,(�,0-C-T-g-$v-"�-)�-�-..1.!:.\.e.n.z.�.�.
�.�.+�.
///.,/[/({/�/�/	�/�/�/
�/�/
0#0
50
C0&Q0x0��0;1M1i1�1;�1��1�2�2�2�23�3�
4�4�4��4t�5�"6��6n7�7�7�7	�7G�73�7-8I8`8${8�8�8�8�8Q�8cA9%�9&�9�9�9;�9+8:d:�:%�:	�:
�:�:�:;-;`M;a�;<*<B<^<'x<3�<
�<�<�<= =4=
P='^=�=�=�=�=�=�=�=
�=> > 2>&S>z>�>#�>�>�>4�>?(#?L?f?%~?�? �?�?�?�?(@0@#P@"t@�@�@ �@�@
AA%A?AXA&sA	�A�A�A$�A�A�B�B4�BC CHdC]�C}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-01 11:07+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: id_ID
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* untuk semua operasi dan untuk mengizinkan beberapa operasi, Anda dapat menyebutkan nama operasi seperti, allow_operations="upload,download". Catatan: dipisahkan dengan koma (,). Bawaan: *-> Ini akan melarang pengguna tertentu dengan hanya menempatkan id mereka dipisahkan dengan koma (,). Jika pengguna Ban maka mereka tidak akan dapat mengakses pengelola file wp di ujung depan.-> Tema Manajer File. default: Light-> File Dimodifikasi atau Buat format tanggal. default: d M, Y h:i A-> Bahasa pengelola file. default: English(en)-> Tampilan UI Manajer File. default: gridTindakanTindakan pada cadangan yang dipilihAdmin dapat membatasi tindakan pengguna mana pun. Juga menyembunyikan file dan folder dan dapat mengatur jalur folder yang berbeda - beda untuk pengguna yang berbeda.Admin dapat membatasi tindakan peran pengguna apa pun. Juga menyembunyikan file dan folder dan dapat mengatur berbeda - jalur folder yang berbeda untuk peran pengguna yang berbeda.Setelah mengaktifkan sampah, file Anda akan masuk ke folder sampah.Setelah mengaktifkan ini semua file akan masuk ke perpustakaan media.Semua selesaiApakah Anda yakin ingin menghapus cadangan yang dipilih?Anda yakin ingin menghapus cadangan ini?Apakah Anda yakin ingin memulihkan cadangan ini?Tanggal CadanganCadangkan SekarangOpsi Cadangan:Cadangan data (klik untuk mengunduh)File cadangan akan berada di bawahPencadangan sedang berjalan, harap tungguCadangan berhasil dihapus.Cadangkan/PulihkanCadangan berhasil dihapus!MelarangPeramban dan OS (HTTP_USER_AGENT)Beli PROBeli ProMembatalkanUbah Tema Di Sini:Klik untuk Membeli PROTampilan editor kodeKonfirmasiSalin file atau folderSaat ini tidak ada cadangan yang ditemukan.HAPUS FILEGelapCadangan Basis DataPencadangan basis data dilakukan pada tanggal Pencadangan basis data selesai.Cadangan basis data berhasil dipulihkan.defaultdefault:MenghapusBatalkan pilihanTutup pemberitahuan ini.MenyumbangkanUnduh File LogUnduh fileGandakan atau klon folder atau fileEdit File LogMengedit fileAktifkan Unggah File ke Pustaka Media?Aktifkan Sampah?Kesalahan: Tidak dapat memulihkan cadangan karena cadangan basis data berukuran besar. Silakan coba untuk meningkatkan Ukuran maksimum yang diizinkan dari pengaturan Preferensi.Cadangan yang AdaEkstrak arsip atau file zipManajer File - Kode PendekManajer File - Properti SistemFile Manager Root Path, bisa anda ubah sesuai pilihan anda.File Manager memiliki editor kode dengan banyak tema. Anda dapat memilih tema apa saja untuk editor kode. Ini akan ditampilkan ketika Anda mengedit file apa pun. Anda juga dapat mengizinkan mode layar penuh editor kode.Daftar Operasi File:File tidak ada untuk diunduh.Pencadangan FileAbu-abuTolongDi sini "test" adalah nama folder yang terletak di direktori root, atau Anda dapat memberikan path untuk sub folder seperti "wp-content/plugins". Jika dibiarkan kosong atau kosong itu akan mengakses semua folder di direktori root. Default: Direktori rootDi sini admin dapat memberikan akses ke peran pengguna untuk menggunakan filemanager. Admin dapat mengatur Default Access Folder dan juga mengontrol ukuran upload filemanager.Info berkasKode keamanan salah.Ini akan memungkinkan semua peran mengakses pengelola file di ujung depan atau Anda dapat menggunakan sederhana untuk peran pengguna tertentu seperti allow_roles="editor,author" (dipisahkan dengan koma (,))Ini akan mengunci disebutkan dalam koma. Anda dapat mengunci lebih banyak seperti ".php,.css,.js" dll. Default: NullIni akan menampilkan pengelola file di ujung depan. Tetapi hanya Administrator yang dapat mengaksesnya dan akan mengontrol dari pengaturan pengelola file.Ini akan menampilkan pengelola file di ujung depan. Anda dapat mengontrol semua pengaturan dari pengaturan pengelola file. Ini akan bekerja sama dengan backend Manajer File WP.Pesan Log TerakhirCahayaLogBuat direktori atau folderBuat fileUkuran maksimum yang diizinkan pada saat pemulihan cadangan basis data.Ukuran unggahan file maksimum (upload_max_filesize)Batas Memori (memory_limit)ID cadangan tidak ada.Jenis parameter tidak ada.Parameter yang diperlukan tidak ada.Tidak, terima kasihTidak ada pesan logTidak ada log yang ditemukan!catatan:Catatan: Ini adalah screenshot demo. Silakan beli File Manager pro ke fungsi Log.Catatan: Ini hanya tangkapan layar demo. Untuk mendapatkan pengaturan, silakan beli versi pro kami.Tidak ada yang dipilih untuk cadanganTidak ada yang dipilih untuk cadangan.baikBaikLainnya (Direktori lain yang ditemukan di dalam wp-content)Pencadangan lainnya dilakukan pada tanggal Pencadangan lainnya selesai.Pencadangan lainnya gagal.Cadangan lainnya berhasil dipulihkan.versi PHPParameter:Tempel file atau folderSilahkan Masukkan Alamat Email.Silahkan Masukkan Nama Depan.Silakan Masukkan Nama Belakang.Harap ubah ini dengan hati-hati, jalur yang salah dapat menyebabkan plugin pengelola file turun.Harap tingkatkan nilai bidang jika Anda mendapatkan pesan kesalahan pada saat pemulihan cadangan.PluginPencadangan plugin dilakukan pada tanggal Pencadangan plugin selesai.Pencadangan plugin gagal.Pencadangan plugin berhasil dipulihkan.Posting ukuran unggah file maksimum (post_max_size)PreferensiKebijakan pribadiJalur Akar PublikKEMBALIKAN FILEHapus atau hapus file dan folderGanti nama file atau folderMengembalikanPemulihan sedang berjalan, harap tungguKEBERHASILANSimpan perubahanPenghematan...Cari hal-halMasalah Keamanan.Pilih SemuaPilih cadangan untuk dihapus!PengaturanPengaturan - Editor kodePengaturan - UmumPengaturan - Pembatasan PenggunaPengaturan - Pembatasan Peran PenggunaPengaturan disimpan.Kode pendek - PROSederhana memotong file atau folderProperti sistemPersyaratan LayananPencadangan tampaknya berhasil dan sekarang selesai.TemaPencadangan tema dilakukan pada tanggal Pencadangan tema selesai.Pencadangan tema gagal.Pencadangan tema berhasil dipulihkan.Waktu sekarangWaktu habis (max_execution_time)Untuk membuat arsip atau zipHari iniMENGGUNAKAN:Tidak dapat membuat cadangan basis data.Tidak dapat menghapus cadangan!Tidak dapat memulihkan cadangan DB.Tidak dapat memulihkan orang lain.Tidak dapat memulihkan plugin.Tidak dapat memulihkan tema.Tidak dapat memulihkan unggahan.Unggah File LogUnggah berkasUnggahUpload backup dilakukan pada tanggal Upload cadangan selesai.Gagal mengunggah cadangan.Unggahan cadangan berhasil dipulihkan.MemeriksaMelihat logManajer File WPManajer File WP - Cadangkan/PulihkanKontribusi Manajer File WPKami senang membuat teman baru! Berlangganan di bawah dan kami berjanji untuk
    membuat Anda tetap up-to-date dengan plugin terbaru kami, update,
    penawaran luar biasa dan beberapa penawaran khusus.Selamat datang di Manajer FileAnda belum membuat perubahan apa pun untuk disimpan.untuk akses izin membaca file, catatan: benar/salah, default: benaruntuk akses untuk menulis izin file, catatan: true/false, default: falseitu akan menyembunyikan disebutkan di sini. Catatan: dipisahkan dengan koma (,). Bawaan: Nulllanguages/wp-file-manager-uz_UZ.po000064400000061312147361034410013105 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 12:34+0530\n"
"PO-Revision-Date: 2022-02-28 13:03+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: Uzbek\n"
"Language: uz_UZ\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Mavzular zaxirasi muvaffaqiyatli tiklandi."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Mavzularni tiklab bo‘lmadi."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Yuklashlarning zaxira nusxasi muvaffaqiyatli tiklandi."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Yuklanganlarni tiklab bo‘lmadi."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Boshqalarning zaxira nusxasi muvaffaqiyatli tiklandi."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Boshqalarni tiklash imkonsiz."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Plaginlarning zaxira nusxasi muvaffaqiyatli tiklandi."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Plaginlarni tiklash imkonsiz."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Maʼlumotlar bazasining zaxira nusxasi muvaffaqiyatli tiklandi."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Hammasi tayyor"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Maʼlumotlar bazasi zaxirasini tiklab boʻlmadi."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Zaxira nusxalari muvaffaqiyatli olib tashlandi!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Zaxira nusxasini olib tashlab bo‘lmadi!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Ma'lumotlar bazasini zahiralash sanada amalga oshirildi"

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Plaginlarni zahiralash sanada amalga oshirildi"

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Mavzularni zaxiralash sanada amalga oshirildi"

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Zaxira yuklangan sanada amalga oshirildi"

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Boshqalar esa zahiraviy nusxasi sanada bajarilgan"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Jurnallar"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Hech qanday jurnal topilmadi!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Zaxira uchun hech narsa tanlanmagan"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Xavfsizlik muammosi."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Ma'lumotlar bazasini zaxiralash amalga oshirildi."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Maʼlumotlar bazasi zahirasini yaratib boʻlmadi."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Plaginlarni zaxiralash amalga oshirildi."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Plaginlarni zaxiralash amalga oshmadi."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Mavzular zaxiralandi."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Mavzular zaxiralanmadi."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Yuklashlarning zaxira nusxasi bajarildi."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Yuklashlar zaxiralanmadi."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Boshqalar zaxiralandi."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Boshqalarning zaxira nusxasi amalga oshmadi."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP Fayl menejeri"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Sozlamalar"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Afzalliklar"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Tizim xususiyatlari"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Qisqa kod - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Zaxiralash/tiklash"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Pro sotib oling"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Bag'ishlang"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Yuklab olish uchun fayl mavjud emas."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Xavfsizlik kodi yaroqsiz."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Zaxira identifikatori yetishmayapti."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametr turi etishmayotgan."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Kerakli parametrlar etishmayapti."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Xato: Zaxira nusxasini tiklab boʻlmadi, chunki maʼlumotlar bazasi "
"zahirasining hajmi katta. Iltimos, Sozlamalar sozlamalaridan ruxsat etilgan "
"maksimal hajmni oshirishga harakat qiling."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Yo'q qilish uchun zaxira nusxa(lar)ni tanlang!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Haqiqatan ham tanlangan zahira(lar)ni olib tashlamoqchimisiz?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Zaxiralash ishlayapti, kuting"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Qayta tiklash ishlayapti, kuting"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Zaxira uchun hech narsa tanlanmagan."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP fayl menejeri - Zaxiralash/tiklash"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Zaxiralash imkoniyatlari:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Ma'lumotlar bazasini zaxiralash"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Fayllarni zaxiralash"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plaginlar"

#: inc/backup.php:71
msgid "Themes"
msgstr "Mavzular"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Yuklashlar"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Boshqalar (wp-content ichida topilgan boshqa kataloglar)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Hozir zaxiralash"

#: inc/backup.php:89
msgid "Time now"
msgstr "Hozir vaqt"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "MUVAFFAQIYAT"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Zaxira nusxasi muvaffaqiyatli oʻchirildi."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "FAYLLARNI O'CHIRISh"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Haqiqatan ham bu zaxira nusxasini oʻchirib tashlamoqchimisiz?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Bekor qilish"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Tasdiqlash"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "FAYLLARNI QAYTA QILISH"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Haqiqatan ham ushbu zaxira nusxasini tiklamoqchimisiz?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Oxirgi jurnal xabari"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Zaxira nusxalash muvaffaqiyatli bo'ldi va hozir tugallandi."

#: inc/backup.php:171
msgid "No log message"
msgstr "Jurnal xabari yo'q"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Mavjud zaxira(lar)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Zaxira sanasi"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Ma'lumotlarni zaxiralash (yuklab olish uchun bosing)"

#: inc/backup.php:190
msgid "Action"
msgstr "Harakat"

#: inc/backup.php:210
msgid "Today"
msgstr "Bugun"

#: inc/backup.php:239
msgid "Restore"
msgstr "Qayta tiklash"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Oʻchirish"

#: inc/backup.php:241
msgid "View Log"
msgstr "Jurnalni ko'rish"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Hozirda hech qanday zaxira(lar) topilmadi."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Tanlangan zahira(lar)dagi harakatlar"

#: inc/backup.php:251
msgid "Select All"
msgstr "Hammasini belgilash"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Tanlovni bekor qiling"

#: inc/backup.php:254
msgid "Note:"
msgstr "Eslatma:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Zaxira fayllar ostida bo'ladi"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP fayl menejeri hissasi"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Eslatma: Bu demo skrinshotlar. Iltimos, Logs funksiyalariga File Manager pro "
"sotib oling."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "PRO sotib olish uchun bosing"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "PROni sotib oling"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Fayl jurnallarini tahrirlash"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Fayllar jurnalini yuklab oling"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Fayl jurnallarini yuklash"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Sozlamalar saqlandi."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Ushbu bildirishnomani rad eting."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Saqlash uchun hech qanday o'zgartirish kiritmadingiz."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Umumiy ildiz yo'li"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Fayl menejeri ildiz yo'li, siz tanlaganingizga ko'ra o'zgartirishingiz "
"mumkin."

#: inc/root.php:59
msgid "Default:"
msgstr "Standart:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Iltimos, buni ehtiyotkorlik bilan o'zgartiring, noto'g'ri yo'l fayl "
"boshqaruvchisi plagini ishlamay qolishiga olib kelishi mumkin."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Chiqindixona yoqilsinmi?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Axlat qutisini faollashtirgandan so'ng, fayllaringiz axlat qutisiga o'tadi."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Fayllarni media kutubxonaga yuklash yoqilsinmi?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Buni yoqgandan so'ng, barcha fayllar media kutubxonasiga o'tadi."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Ma'lumotlar bazasining zaxira nusxasini tiklash vaqtida ruxsat etilgan "
"maksimal hajm."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Zaxira nusxasini tiklash vaqtida xato xabari olayotgan bo'lsangiz, maydon "
"qiymatini oshiring."

#: inc/root.php:90
msgid "Save Changes"
msgstr "O'zgarishlarni saqlash"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Sozlamalar - Umumiy"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Eslatma: Bu faqat bitta demo ekran tasviridir. Sozlashni olish uchun pro "
"versiyasini sotib oling."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Bu erda administrator fayl boshqaruvchisidan foydalanish uchun foydalanuvchi "
"rollariga ruxsat berishi mumkin. Administrator standart kirish papkasini "
"o'rnatishi va filemanager fayllarini yuklash hajmini boshqarishi mumkin."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Sozlamalar - kod muharriri"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Fayl menejerida bir nechta mavzular bilan kod muharriri mavjud. Kod "
"muharriri uchun har qanday mavzuni tanlashingiz mumkin. Har qanday faylni "
"tahrirlashda ko'rsatiladi. Bundan tashqari siz to'liq kodli tartibga ruxsat "
"berishingiz mumkin."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kod muharriri ko'rinishi"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Sozlamalar - Foydalanuvchi cheklovlari"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administrator har qanday userrole ishini cheklashi mumkin. Bundan tashqari, "
"fayllar va papkalarni yashirish va turli xil foydalanuvchilar rollari uchun "
"turli xil papka yo'llarini o'rnatishingiz mumkin."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Sozlash - foydalanuvchi roli cheklovlari"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administrator har qanday foydalanuvchi rolining harakatlarini cheklashi "
"mumkin. Bundan tashqari, fayllar va papkalarni yashirish va turli xil "
"foydalanuvchi rollari uchun turli xil papkalar yo'llarini o'rnatishi mumkin."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Fayl menejeri - Qisqa kod"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "FOYDALANISH:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"U old tomonda fayl menejerini ko'rsatadi. Siz barcha sozlamalarni fayl "
"boshqaruvchisi sozlamalaridan boshqarishingiz mumkin. U backend WP File "
"Manager bilan bir xil ishlaydi."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"U old tomonda fayl menejerini ko'rsatadi. Lekin unga faqat Administrator "
"kirishi mumkin va fayl boshqaruvchisi sozlamalaridan nazorat qiladi."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametrlar:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Bu barcha rollarga fayl boshqaruvchisiga kirishga ruxsat beradi yoki ruxsat "
"etilgan_roles=\"editor,author\" (vergul(,) bilan ajratilgan) kabi ma'lum "
"foydalanuvchi rollari uchun oddiy foydalanishingiz mumkin."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Bu erda \"test\" - bu ildiz katalogida joylashgan papkaning nomi yoki siz "
"\"wp-content/plugins\" kabi pastki papkalarga yo'l berishingiz mumkin. Bo'sh "
"yoki bo'sh qo'yilsa, u ildiz katalogidagi barcha papkalarga kira oladi. "
"Standart: ildiz katalogi"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"fayllarni yozish uchun ruxsat olish uchun, eslatma: rost/noto'g'ri, "
"standart: noto'g'ri"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"fayllarni o'qish uchun ruxsat uchun, eslatma: rost/noto'g'ri, standart: rost"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"bu erda eslatib o'tilgan yashiriladi. Eslatma: vergul (,) bilan ajratiladi. "
"Standart: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"U vergulda eslatib o'tilgan qulflanadi. siz \".php,.css,.js\" va boshqalar "
"kabi ko'proq qulflashingiz mumkin. Standart: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* barcha operatsiyalar uchun va ba'zi operatsiyalarga ruxsat berish uchun "
"siz operatsiya nomini allow_operations=\"yuklash, yuklab olish\" kabi zikr "
"qilishingiz mumkin. Eslatma: vergul (,) bilan ajratiladi. Standart: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Fayl operatsiyalari ro'yxati:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Katalog yoki papka yarating"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Fayl yaratish"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Fayl yoki jild nomini o'zgartiring"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Jild yoki faylni nusxalash yoki klonlash"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Fayl yoki jildni joylashtiring"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Taqiqlash"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Arxiv yoki zip yaratish uchun"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Arxiv yoki ziplangan faylni chiqarib oling"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Fayllar yoki papkalarni nusxalash"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Fayl yoki papkani kesish oddiy"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Faylni tahrirlash"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Fayl va papkalarni olib tashlang yoki o'chiring"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Fayllarni yuklab oling"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Fayllarni yuklash"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Narsalarni qidirish"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Fayl haqida ma'lumot"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Yordam bering"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Bu ma'lum foydalanuvchilarning identifikatorlarini vergul (,) bilan "
"ajratib qo'yish orqali taqiqlaydi. Agar foydalanuvchi Ban bo'lsa, u holda "
"ular wp fayl boshqaruvchisiga kirish imkoniga ega bo'lmaydi."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI ko'rinishi. Standart: panjara"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> O'zgartirilgan fayl yoki sana formatini yaratish. Standart: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Fayl menejeri tili. Standart: Inglizcha(uz)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Fayl menejeri mavzusi. Standart: Yengil"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Fayl menejeri - tizim xususiyatlari"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP versiyasi"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimal faylni yuklash hajmi (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Maksimal faylni yuklash hajmini joylashtiring (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Xotira cheklovi (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Vaqt tugashi (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Brauzer va OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Bu yerda mavzuni o'zgartiring:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Standart"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Qorong'i"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Nur"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Kulrang"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Fayl menejeriga xush kelibsiz"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Biz yangi do'stlar orttirishni yaxshi ko'ramiz! Quyida obuna bo'ling va biz "
"sizni eng so'nggi yangi plaginlarimiz, yangilanishlarimiz, ajoyib "
"takliflarimiz va bir nechta maxsus takliflarimizdan xabardor qilishni va'da "
"qilamiz."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Iltimos, Ismingizni kiriting."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Iltimos, familiyani kiriting."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Iltimos, elektron pochta manzilini kiriting."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Tasdiqlash"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Yo'q, rahmat"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Xizmat ko'rsatish shartlari"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Maxfiylik siyosati"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Saqlanmoqda..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Manage your WP files."
#~ msgstr "WP fayllarini boshqaring."

#~ msgid "Extensions"
#~ msgstr "Kengaytmalar"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Iltimos, plaginni yanada barqaror qilish uchun ba'zi ehsonlar qo'shing. "
#~ "Tanlagan miqdoringizni to'lashingiz mumkin."
languages/wp-file-manager-bs_BA.mo000064400000043520147361034410012775 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&��(�X)/*GF*6�*=�*+(
+�3+��+E�,E�,
-@--<n-:�-�-!�- .4:.,o.$�.)�."�.)/8/!@/b/k/t/|/�/�/	�/�/3�/0/0&503\0(�06�0�0�0�011.171T1-g1�1�11�1�1�2�2(�2 �2&3MC3��3k4#�4�4�4�4�4��5�6�6��6l�7�8��8g9	�9�9�9�9T�9>:$V:{:�:�:�:�: �:
;V;^s;)�;*�;'<-<F3<+z<%�<%�</�<"=
.=9=V=o=|=l�=g�=b>5i>'�>(�>8�>C)?m?y?�?�?'�?�?�?�?@&@
8@F@Z@n@.z@�@�@�@#�@'A+ABA'SA{A�A8�A�A'�AB$$B-IBwB+�B�B�B	�B6�BC,2C_C{C�C �C�C�C
D-D*:D*eD2�D�D�D�D?�D -E�NEF6)FL`FN�FS�F}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 10:52+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: bs_BA
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e;esc_attr__
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* za sve operacije i da biste dozvolili neke operacije možete spomenuti naziv operacije kao, dozvoljeno_operacije="upload,download". Napomena: odvojeno zarezom (,). Zadano: *-> Zabranit će određenim korisnicima samo stavljajući njihove ID-ove razdvojene zarezima (,). Ako je korisnik Ban, tada neće moći pristupiti wp upravitelju datoteka na prednjoj strani.-> Tema Upravitelja datotekama. Zadano: Svjetlo-> Izmijenjena datoteka ili Stvori format datuma. Zadano: d M, Y h: i A-> Jezik upravitelja datotekama. Zadano: engleski (hr)-> Prikaz korisničkog sučelja Filemanager-a. Zadano: mrežaAkcijaRadnje po odabranim sigurnosnim kopijamaAdministrator može ograničiti radnje bilo kojeg korisnika. Takođe sakrijte datoteke i mape i možete postaviti različite - različite putanje mapa za različite korisnike.Administrator može ograničiti radnje bilo koje korisničke uloge. Takođe sakrijte datoteke i mape i možete postaviti različite putanje mapa za različite uloge korisnika.Nakon omogućavanja otpada, vaše će datoteke ići u mapu za smeće.Nakon što ovo omogućite, sve datoteke će ići u biblioteku medija.Sve završenoJeste li sigurni da želite ukloniti odabrane sigurnosne kopije?Jeste li sigurni da želite izbrisati ovu sigurnosnu kopiju?Jeste li sigurni da želite vratiti ovu sigurnosnu kopiju?Datum sigurnosne kopijeNapravite sigurnosnu kopiju odmahOpcije sigurnosne kopije:Sigurnosna kopija podataka (kliknite za preuzimanje)Datoteke za sigurnosne kopije će biti ispodIzrada sigurnosne kopije, sačekajteSigurnosna kopija uspješno je izbrisana.Izrada sigurnosne kopije/vraćanjeSigurnosne kopije su uspješno uklonjene!ZabranaPreglednik i OS (HTTP_USER_AGENT)Kupi PROKupi ProOtkažiPromijenite temu ovdje:Kliknite da kupite PROPrikaz uređivača kodaPotvrditeKopirajte datoteke ili mapeTrenutno nije pronađena nijedna sigurnosna kopija.Brisanje datotekaTamnoIzrada sigurnosne kopije baze podatakaIzrađena sigurnosna kopija baze podataka na datum Izrađena rezervna kopija baze podataka.Sigurnosna kopija baze podataka uspješno je vraćena.ZadanoZadano:IzbrišiPoništi odabirOdbaci ovu obavijest.DoniratiPreuzmite zapisnike datotekaPreuzmite datotekeDuplicirajte ili klonirajte mapu ili datotekuUredi zapise datotekaUredite datotekuOmogućiti prijenos datoteka u biblioteku medija?Omogućiti otpad?Greška: Nije moguće vratiti sigurnosnu kopiju jer je sigurnosna kopija baze podataka velika. Molimo pokušajte povećati maksimalnu dozvoljenu veličinu u postavkama Preferences.Postojeće sigurnosne kopijeIzdvojite arhivu ili arhiviranu datotekuUpravitelj datoteka - kratki kodUpravitelj datoteka - Svojstva sistemaKorijenski put upravitelja datoteka, možete promijeniti prema vašem izboru.Upravitelj datoteka ima uređivač koda s više tema. Možete odabrati bilo koju temu za uređivanje koda. Prikazaće se kada uredite bilo koju datoteku. Takođe možete dozvoliti preko cijelog ekrana uređivač koda.Lista operacija datoteka:Datoteka ne postoji za preuzimanje.Datoteke sigurnosne kopijesivaPomoćOvdje je "test" naziv foldera koji se nalazi u korijenskom direktoriju, ili možete dati putanju za podfoldere kao što je "wp-content/plugins". Ako ostavite prazno ili prazno, pristupit će svim folderima u korijenskom direktoriju. Zadano: korijenski direktorijOvdje administrator može dati pristup korisničkim ulogama za korištenje upravitelja datoteka. Administrator može postaviti zadanu pristupnu mapu i takođe kontrolirati veličinu otpremanja upravitelja datoteka.Informacije o datoteciNevažeći sigurnosni kod.Omogućit će svim ulogama pristup upravitelju datoteka na prednjem kraju ili možete jednostavno koristiti za određene korisničke uloge kao što je dozvoljeno_roles="urednik,autor" (odvojeno zarezom(,))Zaključaće se spomenuto u zarezima. možete zaključati više kao ".php,.css,.js" itd. Podrazumevano: NullNa prednjem kraju će se prikazati upravitelj datoteka. Ali samo administrator mu može pristupiti i kontrolirat će iz postavki upravitelja datoteka.Na prednjem kraju će se prikazati upravitelj datoteka. Možete kontrolirati sva podešavanja iz postavki upravitelja datoteka. Radit će isto kao backend WP upravitelj datotekama.Posljednja poruka dnevnikaSvjetlostTrupciNapravite direktorij ili mapuNapravi datotekuMaksimalna dozvoljena veličina u vrijeme vraćanja sigurnosne kopije baze podataka.Maksimalna veličina otpremanja datoteke (upload_max_filesize)Ograničenje memorije (memory_limit)Nedostaje sigurnosna kopija id.Nedostaje tip parametra.Nedostaju potrebni parametri.Ne hvalaNema poruke dnevnikaNije pronađen nijedan zapisnik!Bilješka:Napomena: Ovo su demo snimke zaslona. Molimo kupite File Manager pro za funkcije Logs.Napomena: Ovo je samo demo snimak zaslona. Da biste dobili postavke, kupite našu pro verziju.Ništa nije odabrano za sigurnosnu kopijuNišta nije odabrano za sigurnosnu kopiju.ureduUreduOstalo (Bilo koji drugi direktorij koji se nalazi unutar wp-sadržaja)Ostale sigurnosne kopije urađene na datum Ostalo sigurnosno kopiranje urađeno.Druge sigurnosne kopije nisu uspjele.Ostale sigurnosne kopije su uspješno vraćene.PHP verzijaParametri:Zalijepite datoteku ili mapuUnesite adresu e-pošte.Unesite ime.Unesite prezime.Molimo vas pažljivo promijenite ovo, pogrešan put može dovesti do pada dodatka za upravljanje datotekama.Molimo povećajte vrijednost polja ako dobijete poruku o grešci u vrijeme vraćanja sigurnosne kopije.DodaciIzrada sigurnosne kopije dodataka izvršena na datum Sigurnosna kopija dodataka je urađena.Sigurnosna kopija dodataka nije uspjela.Izrada sigurnosne kopije dodataka uspješno je vraćena.Objavi maksimalnu veličinu za učitavanje datoteke (post_max_size)PreferencesPolitika privatnostiJavni korijenski putVRAĆI DATOTEKEUklonite ili izbrišite datoteke i mapePreimenujte datoteku ili mapuVratiVraćanje je u toku, sačekajteUSPJEHSačuvaj promjeneSpremanje ...Pretražujte stvariSigurnosno pitanje.Označi sveOdaberite sigurnosnu(e) kopiju(e) za brisanje!PostavkePostavke - Uređivač kodaPostavke - OpštePostavke - Korisnička ograničenjaPostavke - Ograničenja uloga korisnikaPostavke su sačuvane.Kratki kod - PROJednostavno izrežite datoteku ili mapuSvojstva sistemaUslovi korištenjaSigurnosna kopija je očito uspjela i sada je završena.TemeIzrada sigurnosne kopije tema na datum Urađena rezervna kopija tema.Sigurnosna kopija tema nije uspjela.Sigurnosna kopija tema uspješno je vraćena.Vrijeme je sadaVremensko ograničenje (max_execution_time)Da napravite arhivu ili zipDanasUPOTREBA:Nije moguće kreirati sigurnosnu kopiju baze podataka.Ukloniti sigurnosnu kopiju!Nije moguće vratiti sigurnosnu kopiju DB-a.Nije moguće vratiti druge.Nije moguće vratiti dodatke.Nije moguće vratiti teme.Otpremanja nije moguće vratiti.Otpremi zapisnike datotekaOtpremi datotekeOtpremanjaPrenosi sigurnosne kopije izvršene na datum Sigurnosna kopija otpremanja je završena.Sigurnosna kopija otpremanja nije uspjela.Sigurnosna kopija prijenosa uspješno je vraćena.PotvrdiView LogWP upravitelj datotekamaWP upravitelj datotekama - Izrada sigurnosne kopije / vraćanjeDoprinos WP upravitelja datotekaVolimo sklapati nove prijatelje! Pretplatite se ispod i mi to obećavamo
    budite u toku sa našim najnovijim novim dodacima, ažuriranjima,
    sjajne ponude i nekoliko specijalnih ponuda.Dobrodošli u File ManagerNiste unijeli nikakve promjene koje želite sačuvati.za dozvolu za pristup čitanju datoteka, napomena: true/false, default: trueza pristup dozvolama za pisanje datoteka, napomena: true/false, default: falseto će sakriti spomenuto ovdje. Napomena: odvojeno zarezom (,). Podrazumevano: Nulllanguages/wp-file-manager-af.po000064400000065144147361034410012426 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 12:37+0530\n"
"PO-Revision-Date: 2022-02-25 15:14+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Rugsteun van temas is suksesvol herstel."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Kan nie temas herstel nie."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Rugsteun van oplaaie is suksesvol herstel."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Kan nie oplaaie herstel nie."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Ander rugsteun is suksesvol herstel."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Kan nie ander herstel nie."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Inprop-rugsteun is suksesvol herstel."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Kan nie inproppe herstel nie."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Databasis-rugsteun is suksesvol herstel."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Alles klaar"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Kan nie DB-rugsteun herstel nie."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Rugsteun suksesvol verwyder!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Kon nie rugsteun verwyder nie!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Databasis rugsteun op datum gedoen "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Insteek-rugsteun op datum gedoen "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Rugsteun van temas op datum gedoen "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Laai rugsteun op datum op "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Ander rugsteun op datum gedoen"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Logs"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Geen logboeke gevind nie!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Niks gekies vir rugsteun nie"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Sekuriteitskwessie."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Databasis rugsteun gedoen."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Kan nie databasisrugsteun skep nie."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Inprop-rugsteun gedoen."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Inprop-rugsteun het misluk."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Rugsteun van temas gedoen."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Tema-rugsteun het misluk."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Oplaaie rugsteun gedoen."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Oplaai-rugsteun het misluk."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Ander rugsteun gedoen."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Ander rugsteun het misluk."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Naam van die inprop"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "instellings"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Voorkeure"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Stelsel Eienskappe"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kortkode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Rugsteun/herstel"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Koop Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "skenk"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Lêer bestaan ​​nie om af te laai nie."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Ongeldige sekuriteitskode."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Rugsteun-ID ontbreek."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametersoort ontbreek."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Ontbrekende vereiste parameters."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Fout: Kan nie rugsteun herstel nie, want databasisrugsteun is groot. Probeer "
"asseblief om Maksimum toegelate grootte vanaf Voorkeure-instellings te "
"vergroot."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Kies rugsteun(e) om uit te vee!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Is u seker dat u geselekteerde rugsteun (e) wil verwyder?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Rugsteun loop, wag asseblief"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Herstel loop, wag asseblief"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Niks gekies vir rugsteun nie."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP-lêerbestuurder - Rugsteun / Herstel"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Rugsteunopsies:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Databasis-rugsteun"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Lêers rugsteun"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Inproppe"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temas"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Oplaaie"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Ander (enige ander gidse wat binne wp-inhoud voorkom)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Maak nou 'n rugsteun"

#: inc/backup.php:89
msgid "Time now"
msgstr "Nou tyd"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUKSES"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Rugsteun suksesvol uitgevee."

#: inc/backup.php:102
msgid "Ok"
msgstr "Oké"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "Vee lêers uit"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Is u seker u wil hierdie rugsteun verwyder?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Kanselleer"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Bevestig"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "HERSTEL LILERS"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Is u seker dat u hierdie rugsteun wil herstel?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Laaste logboodskap"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Die rugsteun het blykbaar geslaag en is nou voltooi."

#: inc/backup.php:171
msgid "No log message"
msgstr "Geen logboodskap nie"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Bestaande rugsteun (e)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Rugsteundatum"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Rugsteundata (klik om af te laai)"

#: inc/backup.php:190
msgid "Action"
msgstr "Aksie"

#: inc/backup.php:210
msgid "Today"
msgstr "Vandag"

#: inc/backup.php:239
msgid "Restore"
msgstr "Herstel"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Vee uit"

#: inc/backup.php:241
msgid "View Log"
msgstr "Sien log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Tans is geen rugsteun (s) gevind nie."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Handelinge met geselekteerde rugsteun (e)"

#: inc/backup.php:251
msgid "Select All"
msgstr "Kies Alles"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deselekteer"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Rugsteunlêers sal onder wees"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "  WP-lêerbestuurder bydrae"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Opmerking: dit is demo-skermkiekies. Koop File Manager pro na Logs-funksies."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klik om PRO te koop"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Koop PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Wysig lêerlogboeke"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Laai lêerlêers af"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Laai lêers op"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Instellings gestoor."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Maak hierdie kennisgewing van die hand."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "U het geen veranderinge aangebring om gestoor te word nie."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Openbare wortelpad"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Lêerbestuurder se wortelpad, u kan verander volgens u keuse."

#: inc/root.php:59
msgid "Default:"
msgstr "Verstek:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Verander dit noukeurig, verkeerde pad kan daartoe lei dat die "
"invoegtoepassing van die lêerbestuurder afgaan."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Skakel asblik in?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Nadat die asblik geaktiveer is, gaan u lêers na die asblikmap."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Aktiveer lêers wat na mediabiblioteek opgelaai word?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Nadat dit aangeskakel is, gaan alle lêers na die mediabiblioteek."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maksimum toegelate grootte ten tyde van die herstel van databasisrugsteun."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Verhoog asseblief veldwaarde as jy foutboodskap kry ten tyde van "
"rugsteunherstel."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Stoor veranderinge"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Stellings - Algemene"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Let wel: Hierdie is net 'n demo skermkiekie. Om instellings te kry, koop "
"asseblief ons pro-weergawe."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Hier kan admin toegang gee tot gebruikersrolle om filemanager te gebruik. "
"Admin kan die standaard toegangsmap instel en ook die oplaai grootte van "
"lêerbestuurder beheer."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Instellings - Kode-redakteur"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Lêer Bestuurder het 'n kode redakteur met verskeie temas. U kan enige tema "
"vir kode redakteur kies. Dit sal vertoon wanneer u enige lêer wysig. Ook kan "
"jy die volle skerm modus van kode redakteur toelaat."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kode-redakteur sien"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Stellings - Gebruikersbeperkings"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Admin kan aksies van enige gebruiker beperk. Versteek ook lêers en vouers en "
"stel verskillende - verskillende vouerspaaie vir verskillende gebruikers in."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Stellings - Gebruikersrolbeperkings"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Admin kan aksies van enige gebruikerrol beperk. Versteek ook lêers en vouers "
"en stel verskillende - verskillende vouerspaaie vir verskillende "
"gebruikersrolle in."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Lêerbestuurder - kortkode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "GEBRUIK:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Dit sal lêerbestuurder aan die voorkant wys. U kan alle instellings vanaf "
"lêerbestuurderinstellings beheer. Dit sal dieselfde werk as backend WP File "
"Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Dit sal lêerbestuurder aan die voorkant wys. Maar slegs administrateur kan "
"toegang daartoe kry en sal beheer vanaf lêerbestuurderinstellings."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Grense:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Dit sal alle rolle toelaat om toegang tot lêerbestuurder aan die voorkant te "
"kry, of jy kan eenvoudig gebruik vir spesifieke gebruikersrolle soos "
"allow_roles=\"redakteur, skrywer\" (geskei deur komma(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Hier is \"toets\" die naam van die gids wat in die wortelgids geleë is, of "
"jy kan 'n pad vir sub-vouers gee soos \"wp-content/plugins\". As dit leeg of "
"leeg gelaat word, sal dit toegang tot alle dopgehou in die wortelgids kry. "
"Verstek: Wortelgids"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"vir toegang tot skryftoestemmings vir lêers, let op: waar/onwaar, verstek: "
"onwaar"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"vir toegang tot leestoestemming vir lêers, let wel: waar/onwaar, verstek: "
"waar"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"dit sal versteek hier genoem. Let wel: geskei deur komma(,). Verstek: Nul"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Dit sal in kommas genoem word sluit. jy kan meer sluit soos \".php,.css,.js"
"\" ens. Verstek: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* vir alle operasies en om een ​​of ander operasie toe te laat, kan u die naam "
"van die operasie noem soos, allow_operations=\"oplaai, aflaai\". Let wel: "
"geskei deur komma(,). Verstek: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lêerbewerkingslys:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Maak 'n gids of 'n vouer"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Maak lêer"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Hernoem 'n lêer of vouer"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Dupliseer of kloon 'n vouer of lêer"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Plak 'n lêer of vouer"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Verbod"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Om 'n argief of rits te maak"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Pak argief of lêer met rits uit"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopieer lêers of vouers"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Sny 'n lêer of vouer eenvoudig"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Wysig 'n lêer"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Verwyder of verwyder lêers en vouers"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Laai lêers af"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Laai lêers op"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Soek dinge"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Inligting van die lêer"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Hulp"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Dit sal bepaalde gebruikers verbied deur net hul ID's geskei deur komma's "
"(,). As die gebruiker Ban is, kan hulle nie toegang tot die wp-"
"lêerbestuurder op die voorkant hê nie."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI-aansig. Verstek: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Lêer gewysig of skep datumformaat. Standaard: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Lêerbestuurder Taal. Verstek: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Lêerbestuurder-tema. Verstek: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Lêerbestuurder - stelseleienskappe"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP weergawe"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimum lêeroplaaigrootte (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Plaas maksimum lêeroplaaigrootte (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Geheue limiet (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Time-out (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Blaaier en bedryfstelsel (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Verander tema hier:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Verstek"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Donker"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Lig"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grys"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Welkom by File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Ons is mal daaroor om nuwe vriende te maak! Teken hieronder in en ons belowe "
"om\n"
"    hou u op hoogte van ons nuutste nuwe inproppe, opdaterings,\n"
"    fantastiese aanbiedings en 'n paar spesiale aanbiedings."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Voer asseblief die voornaam in."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Voer asb. Van in."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Voer asb e-posadres in."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verifieer"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nee dankie"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Diensvoorwaardes"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Privaatheidsbeleid"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Stoor tans ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Rugsteun nie gevind nie!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Rugsteun suksesvol verwyder!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Niks gekies vir rugsteun nie</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Veiligheidskwessie. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rugsteun van databasis gedoen. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Kan nie databasis-rugsteun skep nie. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Insteek-rugsteun gedoen. </span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Terugvoer van inproppe kon nie. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rugsteun van temas gedoen. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Rugsteun van temas het misluk. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rugsteun oplaaie is gedoen. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Kon nie rugsteun oplaai nie. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Ander rugsteun gedoen. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Ander rugsteun het misluk. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Almal gedoen </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code> [wp_file_manager view = \"list\" lang = \"en\" theme = \"light\" "
#~ "dateformat = \"d M, Y h: i A\" allowed_roles = \"redakteur, outeur\" "
#~ "access_folder = \"wp-content / plugins\" write = \"waar\" lees = \"onwaar"
#~ "\" hide_files = \"kumar, abc.php\" lock_extensions = \". php, .css\" "
#~ "allow_operations = \"oplaai, aflaai\" ban_user_ids = \"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Bestuur jou WP-lêers."

#, fuzzy
#~| msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgid "<p class=\"fm_console_error\">No logs found!</p>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Terugvoer van inproppe kon nie. </span>"

#~ msgid "Extensions"
#~ msgstr "uitbreidings"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Dra asseblief 'n donasie by, om die plugin stabieler te maak. U kan die "
#~ "bedrag van u keuse betaal."
languages/wp-file-manager-bs_BA.po000064400000067307147361034410013011 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 15:47+0530\n"
"PO-Revision-Date: 2022-03-03 10:52+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: bs_BA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n"
"%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Sigurnosna kopija tema uspješno je vraćena."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Nije moguće vratiti teme."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Sigurnosna kopija prijenosa uspješno je vraćena."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Otpremanja nije moguće vratiti."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Ostale sigurnosne kopije su uspješno vraćene."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Nije moguće vratiti druge."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Izrada sigurnosne kopije dodataka uspješno je vraćena."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Nije moguće vratiti dodatke."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Sigurnosna kopija baze podataka uspješno je vraćena."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Sve završeno"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Nije moguće vratiti sigurnosnu kopiju DB-a."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Sigurnosne kopije su uspješno uklonjene!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Ukloniti sigurnosnu kopiju!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Izrađena sigurnosna kopija baze podataka na datum "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Izrada sigurnosne kopije dodataka izvršena na datum "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Izrada sigurnosne kopije tema na datum "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Prenosi sigurnosne kopije izvršene na datum "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Ostale sigurnosne kopije urađene na datum "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Trupci"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nije pronađen nijedan zapisnik!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Ništa nije odabrano za sigurnosnu kopiju"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Sigurnosno pitanje."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Izrađena rezervna kopija baze podataka."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Nije moguće kreirati sigurnosnu kopiju baze podataka."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Sigurnosna kopija dodataka je urađena."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Sigurnosna kopija dodataka nije uspjela."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Urađena rezervna kopija tema."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Sigurnosna kopija tema nije uspjela."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Sigurnosna kopija otpremanja je završena."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Sigurnosna kopija otpremanja nije uspjela."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Ostalo sigurnosno kopiranje urađeno."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Druge sigurnosne kopije nisu uspjele."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP upravitelj datotekama"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Postavke"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferences"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Svojstva sistema"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kratki kod - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Izrada sigurnosne kopije/vraćanje"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Kupi Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donirati"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Datoteka ne postoji za preuzimanje."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Nevažeći sigurnosni kod."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Nedostaje sigurnosna kopija id."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Nedostaje tip parametra."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Nedostaju potrebni parametri."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Greška: Nije moguće vratiti sigurnosnu kopiju jer je sigurnosna kopija baze "
"podataka velika. Molimo pokušajte povećati maksimalnu dozvoljenu veličinu u "
"postavkama Preferences."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Odaberite sigurnosnu(e) kopiju(e) za brisanje!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Jeste li sigurni da želite ukloniti odabrane sigurnosne kopije?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Izrada sigurnosne kopije, sačekajte"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Vraćanje je u toku, sačekajte"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Ništa nije odabrano za sigurnosnu kopiju."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP upravitelj datotekama - Izrada sigurnosne kopije / vraćanje"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opcije sigurnosne kopije:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Izrada sigurnosne kopije baze podataka"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Datoteke sigurnosne kopije"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Dodaci"

#: inc/backup.php:71
msgid "Themes"
msgstr "Teme"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Otpremanja"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Ostalo (Bilo koji drugi direktorij koji se nalazi unutar wp-sadržaja)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Napravite sigurnosnu kopiju odmah"

#: inc/backup.php:89
msgid "Time now"
msgstr "Vrijeme je sada"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "USPJEH"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Sigurnosna kopija uspješno je izbrisana."

#: inc/backup.php:102
msgid "Ok"
msgstr "Uredu"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "Brisanje datoteka"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Jeste li sigurni da želite izbrisati ovu sigurnosnu kopiju?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Otkaži"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Potvrdite"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "VRAĆI DATOTEKE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Jeste li sigurni da želite vratiti ovu sigurnosnu kopiju?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Posljednja poruka dnevnika"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Sigurnosna kopija je očito uspjela i sada je završena."

#: inc/backup.php:171
msgid "No log message"
msgstr "Nema poruke dnevnika"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Postojeće sigurnosne kopije"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Datum sigurnosne kopije"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Sigurnosna kopija podataka (kliknite za preuzimanje)"

#: inc/backup.php:190
msgid "Action"
msgstr "Akcija"

#: inc/backup.php:210
msgid "Today"
msgstr "Danas"

#: inc/backup.php:239
msgid "Restore"
msgstr "Vrati"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Izbriši"

#: inc/backup.php:241
msgid "View Log"
msgstr "View Log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Trenutno nije pronađena nijedna sigurnosna kopija."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Radnje po odabranim sigurnosnim kopijama"

#: inc/backup.php:251
msgid "Select All"
msgstr "Označi sve"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Poništi odabir"

#: inc/backup.php:254
msgid "Note:"
msgstr "Bilješka:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Datoteke za sigurnosne kopije će biti ispod"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Doprinos WP upravitelja datoteka"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Napomena: Ovo su demo snimke zaslona. Molimo kupite File Manager pro za "
"funkcije Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Kliknite da kupite PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Kupi PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Uredi zapise datoteka"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Preuzmite zapisnike datoteka"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Otpremi zapisnike datoteka"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Postavke su sačuvane."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Odbaci ovu obavijest."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Niste unijeli nikakve promjene koje želite sačuvati."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Javni korijenski put"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Korijenski put upravitelja datoteka, možete promijeniti prema vašem izboru."

#: inc/root.php:59
msgid "Default:"
msgstr "Zadano:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Molimo vas pažljivo promijenite ovo, pogrešan put može dovesti do pada "
"dodatka za upravljanje datotekama."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Omogućiti otpad?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Nakon omogućavanja otpada, vaše će datoteke ići u mapu za smeće."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Omogućiti prijenos datoteka u biblioteku medija?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Nakon što ovo omogućite, sve datoteke će ići u biblioteku medija."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maksimalna dozvoljena veličina u vrijeme vraćanja sigurnosne kopije baze "
"podataka."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Molimo povećajte vrijednost polja ako dobijete poruku o grešci u vrijeme "
"vraćanja sigurnosne kopije."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Sačuvaj promjene"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Postavke - Opšte"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Napomena: Ovo je samo demo snimak zaslona. Da biste dobili postavke, kupite "
"našu pro verziju."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Ovdje administrator može dati pristup korisničkim ulogama za korištenje "
"upravitelja datoteka. Administrator može postaviti zadanu pristupnu mapu i "
"takođe kontrolirati veličinu otpremanja upravitelja datoteka."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Postavke - Uređivač koda"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Upravitelj datoteka ima uređivač koda s više tema. Možete odabrati bilo koju "
"temu za uređivanje koda. Prikazaće se kada uredite bilo koju datoteku. "
"Takođe možete dozvoliti preko cijelog ekrana uređivač koda."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Prikaz uređivača koda"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Postavke - Korisnička ograničenja"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administrator može ograničiti radnje bilo kojeg korisnika. Takođe sakrijte "
"datoteke i mape i možete postaviti različite - različite putanje mapa za "
"različite korisnike."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Postavke - Ograničenja uloga korisnika"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administrator može ograničiti radnje bilo koje korisničke uloge. Takođe "
"sakrijte datoteke i mape i možete postaviti različite putanje mapa za "
"različite uloge korisnika."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Upravitelj datoteka - kratki kod"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "UPOTREBA:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Na prednjem kraju će se prikazati upravitelj datoteka. Možete kontrolirati "
"sva podešavanja iz postavki upravitelja datoteka. Radit će isto kao backend "
"WP upravitelj datotekama."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Na prednjem kraju će se prikazati upravitelj datoteka. Ali samo "
"administrator mu može pristupiti i kontrolirat će iz postavki upravitelja "
"datoteka."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametri:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Omogućit će svim ulogama pristup upravitelju datoteka na prednjem kraju ili "
"možete jednostavno koristiti za određene korisničke uloge kao što je "
"dozvoljeno_roles=\"urednik,autor\" (odvojeno zarezom(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Ovdje je \"test\" naziv foldera koji se nalazi u korijenskom direktoriju, "
"ili možete dati putanju za podfoldere kao što je \"wp-content/plugins\". Ako "
"ostavite prazno ili prazno, pristupit će svim folderima u korijenskom "
"direktoriju. Zadano: korijenski direktorij"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"za pristup dozvolama za pisanje datoteka, napomena: true/false, default: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"za dozvolu za pristup čitanju datoteka, napomena: true/false, default: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"to će sakriti spomenuto ovdje. Napomena: odvojeno zarezom (,). "
"Podrazumevano: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Zaključaće se spomenuto u zarezima. možete zaključati više kao \".php,.css,."
"js\" itd. Podrazumevano: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* za sve operacije i da biste dozvolili neke operacije možete spomenuti "
"naziv operacije kao, dozvoljeno_operacije=\"upload,download\". Napomena: "
"odvojeno zarezom (,). Zadano: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lista operacija datoteka:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Napravite direktorij ili mapu"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Napravi datoteku"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Preimenujte datoteku ili mapu"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplicirajte ili klonirajte mapu ili datoteku"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Zalijepite datoteku ili mapu"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Zabrana"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Da napravite arhivu ili zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Izdvojite arhivu ili arhiviranu datoteku"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopirajte datoteke ili mape"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Jednostavno izrežite datoteku ili mapu"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Uredite datoteku"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Uklonite ili izbrišite datoteke i mape"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Preuzmite datoteke"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Otpremi datoteke"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Pretražujte stvari"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informacije o datoteci"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Pomoć"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Zabranit će određenim korisnicima samo stavljajući njihove ID-ove "
"razdvojene zarezima (,). Ako je korisnik Ban, tada neće moći pristupiti wp "
"upravitelju datoteka na prednjoj strani."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Prikaz korisničkog sučelja Filemanager-a. Zadano: mreža"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Izmijenjena datoteka ili Stvori format datuma. Zadano: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Jezik upravitelja datotekama. Zadano: engleski (hr)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema Upravitelja datotekama. Zadano: Svjetlo"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Upravitelj datoteka - Svojstva sistema"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP verzija"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimalna veličina otpremanja datoteke (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Objavi maksimalnu veličinu za učitavanje datoteke (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Ograničenje memorije (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Vremensko ograničenje (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Preglednik i OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Promijenite temu ovdje:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Zadano"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Tamno"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Svjetlost"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "siva"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Dobrodošli u File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Volimo sklapati nove prijatelje! Pretplatite se ispod i mi to obećavamo\n"
"    budite u toku sa našim najnovijim novim dodacima, ažuriranjima,\n"
"    sjajne ponude i nekoliko specijalnih ponuda."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Unesite ime."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Unesite prezime."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Unesite adresu e-pošte."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Potvrdi"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ne hvala"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Uslovi korištenja"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Politika privatnosti"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Spremanje ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "uredu"

#~ msgid "Backup not found!"
#~ msgstr "Sigurnosna kopija nije pronađena!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Sigurnosna kopija je uspješno uklonjena!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ništa nije odabrano za sigurnosnu "
#~ "kopiju</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sigurnosno izdanje. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Izrađena sigurnosna kopija baze "
#~ "podataka. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nije moguće stvoriti sigurnosnu kopiju "
#~ "baze podataka. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Izrađena sigurnosna kopija dodataka. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nije uspjelo sigurnosno kopiranje "
#~ "dodataka. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Izrađeno sigurnosno kopiranje tema. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Izrada sigurnosne kopije tema nije "
#~ "uspjela. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Prijenos sigurnosne kopije je završen. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sigurnosna kopija prijenosa nije "
#~ "uspjela. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Za ostale je napravljena sigurnosna "
#~ "kopija. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sigurnosna kopija drugih nije uspjela. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Sve gotovo </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Upravljajte WP datotekama."

#~ msgid "Extensions"
#~ msgstr "Ekstenzije"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Molimo da dodate neku donaciju, kako biste učinili plugin stabilnijim. "
#~ "Možete platiti količinu po vašem izboru."
languages/wp-file-manager-gu.mo000064400000064531147361034410012447 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�N(�*T�+�-,a�,Y-w-Q�-��-��/�&1��1O2�m2l�2~\3�3 �3&4hC46�4h�4UL5%�5L�564.6c6�6�6$�6F�6#7>7O[7O�7)�7%8%58U[86�8j�8S9i9�9�9.�9�9<:/=:xm:<�:2#;�V;-�;}<"�=i�=:>MV>��>38?6lAi�A
B-B	=B0GB�xD%JF3pF��F�|Hn^I��J,NL{L�LK�L�LMr�M4�M1/N@aN:�N�N-�N.O
NO�\O�3PP
QQ[Q�Q�Q��Q?QR-�R=�Ra�R_SySF�SZ�SN2TT�T��T��UxVX�V=�VI(WmrW�W`X%vX#�X;�Xm�XLjY!�Yn�YHZ(XZ,�Z�Z)�Z �ZQ[k[4�[0�[U�[h@\)�\)�\I�\+G]s]�]^O#^4s^@�^d�^N_3b_L�_	�_�_U`CW`^�`X�`dSa[�aab3vb)�b�bO�b=:c@xcj�c$d4d.HdJwd>�d�eR�fa$g��g�h��h}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-02 10:57+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: gu
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* તમામ કામગીરી માટે અને અમુક કામગીરીને મંજૂરી આપવા માટે તમે ઓપરેશન નામનો ઉલ્લેખ કરી શકો છો જેમ કે, મંજૂર_ઓપરેશન="અપલોડ, ડાઉનલોડ". નોંધ: અલ્પવિરામ (,) દ્વારા વિભાજિત. ડિફૉલ્ટ: *-> તે ચોક્કસ વપરાશકર્તાઓને અલ્પવિરામ (,) દ્વારા અલગ કરાયેલ તેમના આઈડી મૂકીને પ્રતિબંધિત કરશે. જો વપરાશકર્તા પ્રતિબંધિત છે તો તેઓ આગળના છેડે wp ફાઇલ મેનેજરને ઍક્સેસ કરી શકશે નહીં.-> ફાઇલ મેનેજર થીમ. મૂળભૂત: પ્રકાશ-> ફાઇલ સંશોધિત અથવા તારીખ ફોર્મેટ બનાવો. ડિફોલ્ટ: d M, Y h:i A-> ફાઇલ મેનેજર ભાષા. મૂળભૂત: અંગ્રેજી(en)-> ફાઇલમેનેજર UI વ્યૂ. ડિફૉલ્ટ: ગ્રીડક્રિયાપસંદ કરેલ બેકઅપ(ઓ) પરની ક્રિયાઓએડમિન કોઈપણ વપરાશકર્તાની ક્રિયાઓ પ્રતિબંધિત કરી શકે છે. પણ ફાઇલો અને ફોલ્ડર્સને છુપાવી શકો છો અને અલગ અલગ સેટ કરી શકો છો - જુદા જુદા વપરાશકર્તાઓ માટે અલગ ફોલ્ડર પાથ.એડમિન કોઈપણ userrole ની ક્રિયાઓ પ્રતિબંધિત કરી શકે છે. ફાઇલો અને ફોલ્ડર્સ પણ છુપાવો અને જુદા જુદા વપરાશકર્તાઓની ભૂમિકાઓ માટે અલગ-અલગ ફોલ્ડર્સ પાથ સેટ કરી શકો છો.ટ્રેશને સક્ષમ કર્યા પછી, તમારી ફાઇલો ટ્રેશ ફોલ્ડરમાં જશે.આને સક્ષમ કર્યા પછી બધી ફાઇલો મીડિયા લાઇબ્રેરીમાં જશે.બધુ થઈ ગયુંશું તમે ખરેખર પસંદ કરેલ બેકઅપ(ઓ) દૂર કરવા માંગો છો?શું તમે ખરેખર આ બેકઅપ કાઢી નાખવા માંગો છો?શું તમે ખરેખર આ બેકઅપ પુનઃસ્થાપિત કરવા માંગો છો?બેકઅપ તારીખહવે બેકઅપ લોબેકઅપ વિકલ્પો:બેકઅપ ડેટા (ડાઉનલોડ કરવા માટે ક્લિક કરો)બેકઅપ ફાઈલો હેઠળ હશેબેકઅપ ચાલી રહ્યું છે, કૃપા કરીને રાહ જુઓબેકઅપ સફળતાપૂર્વક કાઢી નાખ્યું.બેકઅપ/રીસ્ટોરબેકઅપ સફળતાપૂર્વક દૂર કર્યા!પ્રતિબંધબ્રાઉઝર અને OS (HTTP_USER_AGENT)પ્રો ખરીદોપ્રો ખરીદોરદ કરોથીમ અહીં બદલો:પ્રો ખરીદવા માટે ક્લિક કરોકોડ એડિટર જુઓપુષ્ટિ કરોફાઇલો અથવા ફોલ્ડર્સની નકલ કરોહાલમાં કોઈ બેકઅપ(ઓ) મળ્યું નથી.ફાઇલો કાઢી નાખોશ્યામડેટાબેઝ બેકઅપડેટાબેઝ બેકઅપ તારીખે પૂર્ણ થયુંડેટાબેઝ બેકઅપ પૂર્ણ.ડેટાબેઝ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત.ડિફૉલ્ટડિફૉલ્ટ:કાઢી નાખોનાપસંદ કરોઆ નોટિસ કાઢી નાખો.દાન કરવુંફાઇલ લૉગ્સ ડાઉનલોડ કરોફાઇલો ડાઉનલોડ કરોફોલ્ડર અથવા ફાઇલનું ડુપ્લિકેટ અથવા ક્લોન કરોફાઇલ લૉગ્સ સંપાદિત કરોફાઇલમાં ફેરફાર કરોમીડિયા લાઇબ્રેરીમાં ફાઇલો અપલોડ કરવાનું સક્ષમ કરીએ?ટ્રેશ સક્ષમ કરીએ?ભૂલ: બેકઅપ પુનઃસ્થાપિત કરવામાં અસમર્થ કારણ કે ડેટાબેઝ બેકઅપ કદમાં ભારે છે. કૃપા કરીને પસંદગી સેટિંગ્સમાંથી મહત્તમ માન્ય કદ વધારવાનો પ્રયાસ કરો.હાલનું બેકઅપઆર્કાઇવ અથવા ઝિપ કરેલી ફાઇલને બહાર કાઢોફાઇલ મેનેજર - શોર્ટકોડફાઇલ મેનેજર - સિસ્ટમ ગુણધર્મોફાઇલ મેનેજર રૂટ પાથ, તમે તમારી પસંદગી અનુસાર બદલી શકો છો.ફાઇલ વ્યવસ્થાપક પાસે બહુવિધ થીમ્સ સાથેનો કોડ એડિટર છે તમે કોડ એડિટર માટે કોઈપણ થીમ પસંદ કરી શકો છો. જ્યારે તમે કોઈપણ ફાઇલ સંપાદિત કરો ત્યારે તે પ્રદર્શિત થશે. પણ તમે કોડ એડિટરના પૂર્ણસ્ક્રીન મોડને મંજૂરી આપી શકો છો.ફાઇલ કામગીરીની સૂચિ:ડાઉનલોડ કરવા માટે ફાઇલ અસ્તિત્વમાં નથી.ફાઈલો બેકઅપભૂખરામદદઅહીં "ટેસ્ટ" એ ફોલ્ડરનું નામ છે જે રૂટ ડાયરેક્ટરી પર સ્થિત છે, અથવા તમે "wp-content/plugins" જેવા સબ ફોલ્ડર્સ માટે પાથ આપી શકો છો. જો ખાલી અથવા ખાલી છોડો તો તે રૂટ ડિરેક્ટરી પરના તમામ ફોલ્ડર્સને ઍક્સેસ કરશે. ડિફૉલ્ટ: રૂટ ડિરેક્ટરીઅહીં એડમિન ફાઇલમેનિઅરનો ઉપયોગ કરવા માટે વપરાશકર્તા ભૂમિકાઓને ઍક્સેસ આપી શકે છે. એડમિન ડિફૉલ્ટ ઍક્સેસ ફોલ્ડર સેટ કરી શકે છે અને ફાઇલમેનિઅરનું અપલોડ માપ પણ નિયંત્રિત કરી શકે છે.ફાઇલની માહિતીઅમાન્ય સુરક્ષા કોડ.તે બધી ભૂમિકાઓને ફ્રન્ટ એન્ડ પર ફાઇલ મેનેજરને ઍક્સેસ કરવાની મંજૂરી આપશે અથવા તમે ચોક્કસ વપરાશકર્તા ભૂમિકાઓ માટે સરળ ઉપયોગ કરી શકો છો જેમ કે allow_roles="editor,author" (અલ્પવિરામ દ્વારા વિભાજિત(,))તે અલ્પવિરામમાં ઉલ્લેખિત લૉક કરશે. તમે ".php,.css,.js" વગેરે જેવા વધુ લોક કરી શકો છો. ડિફોલ્ટ: નલતે ફ્રન્ટ એન્ડ પર ફાઇલ મેનેજર બતાવશે. પરંતુ માત્ર એડમિનિસ્ટ્રેટર જ તેને એક્સેસ કરી શકે છે અને તે ફાઇલ મેનેજર સેટિંગ્સમાંથી નિયંત્રિત કરશે.તે ફ્રન્ટ એન્ડ પર ફાઇલ મેનેજર બતાવશે. તમે ફાઇલ મેનેજર સેટિંગ્સમાંથી બધી સેટિંગ્સને નિયંત્રિત કરી શકો છો. તે બેકએન્ડ WP ફાઇલ મેનેજરની જેમ જ કામ કરશે.છેલ્લો લોગ સંદેશપ્રકાશલોગ્સડિરેક્ટરી અથવા ફોલ્ડર બનાવોફાઇલ બનાવોડેટાબેઝ બેકઅપ પુનઃસ્થાપના સમયે મહત્તમ માન્ય કદ.મહત્તમ ફાઇલ અપલોડ કદ (અપલોડ_માક્સ_ફાઇલેસીઝ) મેમરી મર્યાદા (memory_limit)બેકઅપ આઈડી ખૂટે છે.પેરામીટર પ્રકાર ખૂટે છે.જરૂરી પરિમાણો ખૂટે છે.ના આભારકોઈ લોગ સંદેશ નથીકોઈ લોગ મળ્યા નથી!નૉૅધ:નોંધ: આ ડેમો સ્ક્રીનશૉટ્સ છે. કૃપા કરીને લોગ્સ ફંક્શન માટે ફાઇલ મેનેજર પ્રો ખરીદો.નોંધ: આ ફક્ત એક ડેમો સ્ક્રીન છે સેટિંગ્સ મેળવવા માટે અમારા પ્રો આવૃત્તિ ખરીદી કરો.બેકઅપ માટે કંઈપણ પસંદ કરેલ નથીબેકઅપ માટે કંઈપણ પસંદ કરેલ નથી.બરાબરબરાબરઅન્ય (wp-content ની અંદર જોવા મળતી અન્ય કોઈપણ ડિરેક્ટરીઓ)અન્ય બેકઅપ તારીખે પૂર્ણઅન્ય બેકઅપ પૂર્ણ.અન્ય બેકઅપ નિષ્ફળ થયું.અન્ય બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત.PHP આવૃત્તિપરિમાણો:ફાઇલ અથવા ફોલ્ડર પેસ્ટ કરોકૃપા કરીને ઇમેઇલ સરનામું દાખલ કરો.કૃપા કરીને પ્રથમ નામ દાખલ કરો.કૃપા કરીને છેલ્લું નામ દાખલ કરો.કૃપા કરીને આને કાળજીપૂર્વક બદલો, ખોટો રસ્તો ફાઈલ મેનેજર પ્લગઈનને નીચે જઈ શકે છે.જો તમને બેકઅપ પુનઃસ્થાપના સમયે ભૂલ સંદેશો મળે તો કૃપા કરીને ફીલ્ડ મૂલ્ય વધારો.પ્લગઇન્સપ્લગઇન્સ બેકઅપ તારીખે પૂર્ણ થયુંપ્લગઈન્સ બેકઅપ થઈ ગયું.પ્લગઈન્સ બેકઅપ નિષ્ફળ થયું.પ્લગઈન્સ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત.મહત્તમ ફાઇલ અપલોડ કદ પોસ્ટ કરો (પોસ્ટ_મેક્સ_સાઇઝ)પસંદગીઓગોપનીયતા નીતિજાહેર રુટ પાથફાઇલો પુનઃસ્થાપિત કરોફાઇલો અને ફોલ્ડર્સ દૂર કરો અથવા કાઢી નાખોફાઇલ અથવા ફોલ્ડરનું નામ બદલોપુનઃસ્થાપિતરિસ્ટોર ચાલી રહ્યું છે, કૃપા કરીને રાહ જુઓસફળતાફેરફારો સંગ્રહસાચવી રહ્યું છે...વસ્તુઓ શોધોસુરક્ષા સમસ્યા.બધા પસંદ કરોકાઢી નાખવા માટે બેકઅપ પસંદ કરો!સેટિંગ્સસેટિંગ્સ - કોડ-એડિટરસેટિંગ્સ - સામાન્યસેટિંગ્સ - વપરાશકર્તા પ્રતિબંધોસેટિંગ્સ - વપરાશકર્તા ભૂમિકા પ્રતિબંધોસેટિંગ્સ સાચવી.શોર્ટકોડ – પ્રોફાઇલ અથવા ફોલ્ડરને સરળ કાપોસિસ્ટમ ગુણધર્મોસેવાની શરતોબેકઅપ દેખીતી રીતે સફળ થયું અને હવે પૂર્ણ થયું છે.થીમ્સથીમ્સ બેકઅપ તારીખે પૂર્ણ થયુંથીમ્સ બેકઅપ થઈ ગયું.થીમ્સ બેકઅપ નિષ્ફળ થયું.થીમ્સ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત.હવે સમયસમયસમાપ્તિ (max_execution_time)આર્કાઇવ અથવા ઝિપ બનાવવા માટેઆજેવાપરવુ:ડેટાબેઝ બેકઅપ બનાવવામાં અસમર્થ.બેકઅપ દૂર કરવામાં અસમર્થ!DB બેકઅપ પુનઃસ્થાપિત કરવામાં અસમર્થ.અન્ય પુનઃસ્થાપિત કરવામાં અસમર્થ.પ્લગઈન્સ પુનઃસ્થાપિત કરવામાં અસમર્થ.થીમ્સ પુનઃસ્થાપિત કરવામાં અસમર્થ.અપલોડ્સ પુનઃસ્થાપિત કરવામાં અસમર્થ.ફાઇલો લોગ અપલોડ કરોફાઇલો અપલોડ કરોઅપલોડ્સઅપલોડ બેકઅપ તારીખે પૂર્ણ થયુંઅપલોડ બેકઅપ પૂર્ણ થયું.અપલોડ બેકઅપ નિષ્ફળ થયું.અપલોડ્સ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત.ચકાસોલોગ જુઓWP ફાઇલ વ્યવસ્થાપકWP ફાઇલ મેનેજર - બેકઅપ/રીસ્ટોરWP ફાઇલ મેનેજરનું યોગદાનઅમને નવા મિત્રો બનાવવાનું ગમે છે! નીચે સબ્સ્ક્રાઇબ કરો અને અમે તમને અમારા નવીનતમ નવા પ્લગિન્સ, અપડેટ્સ, અદ્ભુત ડીલ્સ અને કેટલીક વિશેષ ઑફર્સ સાથે અપ-ટૂ-ડેટ રાખવાનું વચન આપીએ છીએ.ફાઇલ મેનેજરમાં આપનું સ્વાગત છેતમે સાચવવા માટે કોઈ ફેરફાર કર્યા નથી.ફાઇલો વાંચવાની પરવાનગી મેળવવા માટે, નોંધ કરો: true/false, default: trueફાઇલો લખવાની પરવાનગી મેળવવા માટે, નોંધ કરો: true/false, default: falseતે અહીં ઉલ્લેખ છુપાવશે. નોંધ: અલ્પવિરામ (,) દ્વારા વિભાજિત. ડિફૉલ્ટ: નલlanguages/wp-file-manager-af.mo000064400000041403147361034410012413 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�_(�)'�)>�)-7*'e*�*)�*��*�X+?�+B;,~,9�,+�,.�,
---B-!R-t-�-�-�-�-�-*.,.5.
>.I.].q.�.�.%�.�.�.�.#�./(5/^/f/o/w/'�/�/�/�/$�/�/
050R0�d01 1:1#U1=y1��1�2*�2�2�2�2��2��3~4�4��4^|5��5�k677#7(7
A7JL71�7�7�7�7 8
68A8V8p8Lv8d�8(9E9c9f95k9�9�9�9$�9:$:,:C:[:{:n�:Q�:N;!W;y;�;%�;1�;	<<"<5<%D<j<�<�<�<�<�<
�<�<
�<�<='=D= Y=#z=�=�=�=�=�=4>;>#A>e>�>(�>�>�>�>?
?#?:? Y?z?�?�?�?�?�?	@@,@E@*a@	�@�@�@'�@�@��@�A:�AOBRfBI�B}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 15:14+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: af
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e;esc_attr__
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* vir alle operasies en om een ​​of ander operasie toe te laat, kan u die naam van die operasie noem soos, allow_operations="oplaai, aflaai". Let wel: geskei deur komma(,). Verstek: *-> Dit sal bepaalde gebruikers verbied deur net hul ID's geskei deur komma's (,). As die gebruiker Ban is, kan hulle nie toegang tot die wp-lêerbestuurder op die voorkant hê nie.-> Lêerbestuurder-tema. Verstek: Light-> Lêer gewysig of skep datumformaat. Standaard: d M, Y h:i A-> Lêerbestuurder Taal. Verstek: English(en)-> Filemanager UI-aansig. Verstek: gridAksieHandelinge met geselekteerde rugsteun (e)Admin kan aksies van enige gebruiker beperk. Versteek ook lêers en vouers en stel verskillende - verskillende vouerspaaie vir verskillende gebruikers in.Admin kan aksies van enige gebruikerrol beperk. Versteek ook lêers en vouers en stel verskillende - verskillende vouerspaaie vir verskillende gebruikersrolle in.Nadat die asblik geaktiveer is, gaan u lêers na die asblikmap.Nadat dit aangeskakel is, gaan alle lêers na die mediabiblioteek.Alles klaarIs u seker dat u geselekteerde rugsteun (e) wil verwyder?Is u seker u wil hierdie rugsteun verwyder?Is u seker dat u hierdie rugsteun wil herstel?RugsteundatumMaak nou 'n rugsteunRugsteunopsies:Rugsteundata (klik om af te laai)Rugsteunlêers sal onder weesRugsteun loop, wag assebliefRugsteun suksesvol uitgevee.Rugsteun/herstelRugsteun suksesvol verwyder!VerbodBlaaier en bedryfstelsel (HTTP_USER_AGENT)Koop PROKoop ProKanselleerVerander tema hier:Klik om PRO te koopKode-redakteur sienBevestigKopieer lêers of vouersTans is geen rugsteun (s) gevind nie.Vee lêers uitDonkerDatabasis-rugsteunDatabasis rugsteun op datum gedoen Databasis rugsteun gedoen.Databasis-rugsteun is suksesvol herstel.VerstekVerstek:Vee uitDeselekteerMaak hierdie kennisgewing van die hand.skenkLaai lêerlêers afLaai lêers afDupliseer of kloon 'n vouer of lêerWysig lêerlogboekeWysig 'n lêerAktiveer lêers wat na mediabiblioteek opgelaai word?Skakel asblik in?Fout: Kan nie rugsteun herstel nie, want databasisrugsteun is groot. Probeer asseblief om Maksimum toegelate grootte vanaf Voorkeure-instellings te vergroot.Bestaande rugsteun (e)Pak argief of lêer met rits uitLêerbestuurder - kortkodeLêerbestuurder - stelseleienskappeLêerbestuurder se wortelpad, u kan verander volgens u keuse.Lêer Bestuurder het 'n kode redakteur met verskeie temas. U kan enige tema vir kode redakteur kies. Dit sal vertoon wanneer u enige lêer wysig. Ook kan jy die volle skerm modus van kode redakteur toelaat.Lêerbewerkingslys:Lêer bestaan ​​nie om af te laai nie.Lêers rugsteunGrysHulpHier is "toets" die naam van die gids wat in die wortelgids geleë is, of jy kan 'n pad vir sub-vouers gee soos "wp-content/plugins". As dit leeg of leeg gelaat word, sal dit toegang tot alle dopgehou in die wortelgids kry. Verstek: WortelgidsHier kan admin toegang gee tot gebruikersrolle om filemanager te gebruik. Admin kan die standaard toegangsmap instel en ook die oplaai grootte van lêerbestuurder beheer.Inligting van die lêerOngeldige sekuriteitskode.Dit sal alle rolle toelaat om toegang tot lêerbestuurder aan die voorkant te kry, of jy kan eenvoudig gebruik vir spesifieke gebruikersrolle soos allow_roles="redakteur, skrywer" (geskei deur komma(,))Dit sal in kommas genoem word sluit. jy kan meer sluit soos ".php,.css,.js" ens. Verstek: NullDit sal lêerbestuurder aan die voorkant wys. Maar slegs administrateur kan toegang daartoe kry en sal beheer vanaf lêerbestuurderinstellings.Dit sal lêerbestuurder aan die voorkant wys. U kan alle instellings vanaf lêerbestuurderinstellings beheer. Dit sal dieselfde werk as backend WP File Manager.Laaste logboodskapLigLogsMaak 'n gids of 'n vouerMaak lêerMaksimum toegelate grootte ten tyde van die herstel van databasisrugsteun.Maksimum lêeroplaaigrootte (upload_max_filesize)Geheue limiet (memory_limit)Rugsteun-ID ontbreek.Parametersoort ontbreek.Ontbrekende vereiste parameters.Nee dankieGeen logboodskap nieGeen logboeke gevind nie!Nota:Opmerking: dit is demo-skermkiekies. Koop File Manager pro na Logs-funksies.Let wel: Hierdie is net 'n demo skermkiekie. Om instellings te kry, koop asseblief ons pro-weergawe.Niks gekies vir rugsteun nieNiks gekies vir rugsteun nie.OKOkéAnder (enige ander gidse wat binne wp-inhoud voorkom)Ander rugsteun op datum gedoenAnder rugsteun gedoen.Ander rugsteun het misluk.Ander rugsteun is suksesvol herstel.PHP weergaweGrense:Plak 'n lêer of vouerVoer asb e-posadres in.Voer asseblief die voornaam in.Voer asb. Van in.Verander dit noukeurig, verkeerde pad kan daartoe lei dat die invoegtoepassing van die lêerbestuurder afgaan.Verhoog asseblief veldwaarde as jy foutboodskap kry ten tyde van rugsteunherstel.InproppeInsteek-rugsteun op datum gedoen Inprop-rugsteun gedoen.Inprop-rugsteun het misluk.Inprop-rugsteun is suksesvol herstel.Plaas maksimum lêeroplaaigrootte (post_max_size)VoorkeurePrivaatheidsbeleidOpenbare wortelpadHERSTEL LILERSVerwyder of verwyder lêers en vouersHernoem 'n lêer of vouerHerstelHerstel loop, wag assebliefSUKSESStoor veranderingeStoor tans ...Soek dingeSekuriteitskwessie.Kies AllesKies rugsteun(e) om uit te vee!instellingsInstellings - Kode-redakteurStellings - AlgemeneStellings - GebruikersbeperkingsStellings - GebruikersrolbeperkingsInstellings gestoor.Kortkode - PROSny 'n lêer of vouer eenvoudigStelsel EienskappeDiensvoorwaardesDie rugsteun het blykbaar geslaag en is nou voltooi.TemasRugsteun van temas op datum gedoen Rugsteun van temas gedoen.Tema-rugsteun het misluk.Rugsteun van temas is suksesvol herstel.Nou tydTime-out (max_execution_time)Om 'n argief of rits te maakVandagGEBRUIK:Kan nie databasisrugsteun skep nie.Kon nie rugsteun verwyder nie!Kan nie DB-rugsteun herstel nie.Kan nie ander herstel nie.Kan nie inproppe herstel nie.Kan nie temas herstel nie.Kan nie oplaaie herstel nie.Laai lêers opLaai lêers opOplaaieLaai rugsteun op datum op Oplaaie rugsteun gedoen.Oplaai-rugsteun het misluk.Rugsteun van oplaaie is suksesvol herstel.VerifieerSien logNaam van die inpropWP-lêerbestuurder - Rugsteun / Herstel  WP-lêerbestuurder bydraeOns is mal daaroor om nuwe vriende te maak! Teken hieronder in en ons belowe om
    hou u op hoogte van ons nuutste nuwe inproppe, opdaterings,
    fantastiese aanbiedings en 'n paar spesiale aanbiedings.Welkom by File ManagerU het geen veranderinge aangebring om gestoor te word nie.vir toegang tot leestoestemming vir lêers, let wel: waar/onwaar, verstek: waarvir toegang tot skryftoestemmings vir lêers, let op: waar/onwaar, verstek: onwaardit sal versteek hier genoem. Let wel: geskei deur komma(,). Verstek: Nullanguages/wp-file-manager-eu.mo000064400000043144147361034410012442 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�N(�)4�)G�)<5*(r*�*)�*��*��+G1,8y,�,=�,4�,71-i-y-�-+�-*�-*�-&!.H.$`.�.%�.	�.	�.�.�.�.�.	/ /(3/\/p/v/)�/!�/:�/
0!0-0	50?0R0#W0{0.�0 �0�08�011�O1�1,2"@20c2K�2��2 �3!�3�344� 4�5�5	6�&6u�6�^7��7�8�8�8�8�8K9;Z9�9�9�9"�9
::7:R:`X:[�:%;&;;b;g;Jl;&�; �;(�;5(<^<k<!x<%�<�<�<Z�<bJ=�=*�=�=!�=5 >=V>�>�>�>�>*�> ?4?,A?	n?x?
�?
�?�?�?�?	�?�?@( @$I@n@�@(�@�@�@:�@$A%*APAiA2�A�A!�A�AB
B'B;B!UB"wB�B�B�B �BC#C0*C[C%xC0�C	�C�C�C5D%;D�aD#+E$OEStEO�EKF}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 11:57+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: eu
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* Eragiketa guztietarako eta eragiketa batzuk ahalbidetzeko, eragiketaren izena aipa dezakezu, hala nola, allow_operations="upload,download". Oharra: komaz bereizita (,). Lehenetsia: *-> Erabiltzaile partikularrak debekatuko ditu komaz bereizitako IDak jarrita (,). Erabiltzailea Debekatuta badago, ezin izango dute frontendean wp fitxategi kudeatzailea sartu.-> Fitxategi kudeatzailearen gaia. Lehenetsia: Light-> Fitxategia aldatu edo Sortu data formatua. Lehenetsia: d M, Y h: i A-> Fitxategi kudeatzailea Hizkuntza. Lehenetsia: English(en)-> Filemanager UI View. Lehenetsia: gridEkintzaAukeratutako babeskopien gaineko ekintzakAdministratzaileak edozein erabiltzaileren ekintzak muga ditzake. Fitxategiak eta karpetak ere ezkutatu eta erabiltzaile desberdinentzako karpeten bide desberdinak ezar ditzakezu.Administratzaileak edozein erabiltzaileren ekintzak muga ditzake. Fitxategiak eta karpetak ezkutatu eta karpeta desberdinak ezar ditzakezu erabiltzaileen rol desberdinetarako.Zakarrontzia gaitu ondoren, zure fitxategiak zakarrontzira joango dira.Gaitu ondoren fitxategi guztiak mediatekara joango dira.Dena egindaZiur zaude hautatutako segurtasun kopiak kendu nahi dituzula?Ziur zaude segurtasun kopia hau ezabatu nahi duzula?Ziur zaude segurtasun kopia hau leheneratu nahi duzula?Babeskopia-dataBabeskopia orainBabeskopien aukerak:Babeskopia datuak (egin klik deskargatzeko)Babeskopien fitxategiak azpian egongo diraBabeskopiak martxan daude, itxaron mesedezBabeskopiak behar bezala ezabatu dira.Babeskopia/BerreskuratuBabeskopiak behar bezala kendu dira!DebekuArakatzailea eta OS (HTTP_USER_AGENT)Erosi PROErosi ProUtziHemen aldatu gaia:Egin klik PRO erostekoKode editorea IkusiBerretsiKopiatu fitxategiak edo karpetakUne honetan ez da babeskopiarik aurkitu.EZABATU FITXATEGIAKIlunaDatu basearen babeskopiaDatu-basearen babeskopia egunean egin da Datu-basearen babeskopia egin da.Datu basearen segurtasun kopia behar bezala berrezarri da.LehenetsiaLehenetsia:EzabatuDesautatuBaztertu ohar hau.EmanDeskargatu fitxategien erregistroakDeskargatu fitxategiakKarpeta edo fitxategi bat bikoiztu edo klonatuEditatu fitxategien erregistroakEditatu fitxategi batMultimedia liburutegian fitxategiak kargatu nahi dituzu?Zaborrontzia gaitu nahi duzu?Errorea: Ezin da babeskopia berrezarri datu-basearen babeskopia tamaina handikoa delako. Mesedez, saiatu Hobespenen ezarpenetatik onartutako Gehienezko tamaina handitzen.Dauden segurtasun kopiakAtera artxiboa edo konprimitutako fitxategiaFitxategi kudeatzailea - ShortcodeFitxategi kudeatzailea - Sistemaren propietateakFitxategi kudeatzailearen erro bidea, zure aukeraren arabera alda dezakezu.Fitxategi kudeatzaileak kode editorea du gai anitzekin. Kode editorerako edozein gai hauta dezakezu. Edozein fitxategi editatzen duzunean bistaratuko da. Kode editorearen pantaila osoko modua ere baimendu dezakezu.Fitxategien eragiketen zerrenda:Ez dago fitxategia deskargatzeko.Fitxategien babeskopiagrisaLaguntzaHemen "test" erroko direktorioan dagoen karpetaren izena da, edo azpikarpeten bidea eman dezakezu "wp-content/plugins" bezala. Hutsik edo hutsik uzten baduzu, erroko direktorioko karpeta guztietara sartuko da. Lehenetsia: Erro direktorioaHemen administratzaileak erabiltzaileen roletarako sarbidea eman dezake filemanager erabiltzeko. Administratzaileak sarbide-karpeta lehenetsia ezar dezake eta fitxategi-kudeatzailearen igoeraren tamaina ere kontrola dezake.Fitxategiaren informazioaSegurtasun kodea baliogabea.Rol guztiei fitxategi-kudeatzailea atzitzeko aukera emango die frontend-ean edo erabiltzaile-rol jakin batzuetarako erabil dezakezu, hala nola, allow_roles="editor,author" (komaz bereizita (,))Koma artean aipatutako blokeatuko da. ".php,.css,.js" eta abar bezalako gehiago blokeatu ditzakezu. Lehenetsia: nuluaFitxategi-kudeatzailea frontend-ean erakutsiko du. Baina Administratzaileak bakarrik atzi dezake eta fitxategi-kudeatzailearen ezarpenetatik kontrolatuko du.Fitxategi-kudeatzailea frontend-ean erakutsiko du. Fitxategi-kudeatzailearen ezarpenetatik ezarpen guztiak kontrola ditzakezu. Backend WP Fitxategi-kudeatzaileak bezala funtzionatuko du.Azken erregistro mezuaArgiaErregistroakEgin direktorioa edo karpetaEgin fitxategiaOnartutako gehienezko tamaina datu-basearen babeskopia leheneratzeko unean.Gehienezko fitxategi kargaren tamaina (upload_max_filesize)Memoriaren muga (memory_limit)Babeskopiaren IDa falta da.Parametro mota falta da.Beharrezko parametroak falta dira.Ez eskerrik askoEz dago egunkari mezurikEz da egunkaririk aurkitu!Ohar:Oharra: Demo pantaila-argazkiak dira. Mesedez, erosi File Manager pro egunkariak funtzioetarako.Oharra: hau demo pantaila-argazkia da. Ezarpenak lortzeko, mesedez erosi gure pro bertsioa.Ez da ezer hautatu babeskopia egitekoEz da ezer hautatu babeskopia egiteko.AdosAdosBeste batzuk (wp-content barruan aurkitzen diren beste edozein direktorio)Beste kopia batzuk egunean egindakoak Beste batzuen babeskopia eginda.Beste batzuen babeskopia huts egin dute.Beste segurtasun kopia batzuk ongi zaharberritu dira.PHP bertsioaParametroak:Itsatsi fitxategi edo karpeta batMesedez, idatzi helbide elektronikoa.Mesedez, jarri izena.Mesedez, idatzi abizena.Aldatu hau arretaz, bide okerrak fitxategi kudeatzailearen plugina jaistera eraman dezake.Mesedez, handitu eremuaren balioa babeskopia leheneratzeko unean errore-mezua jasotzen ari bazara.PluginakPluginen segurtasun kopia egunean egin da Pluginen babeskopia egin da.Pluginen babeskopia huts egin du.Pluginen segurtasun kopia behar bezala berrezarri da.Igotako gehienezko fitxategi kargaren tamaina (post_max_size)LehentasunakPribatutasun politikaSustraien bide publikoaFITXATEGIAK BERRESKURATUKendu edo ezabatu fitxategiak eta karpetakAldatu fitxategi edo karpeta batBerreskuratuBerreskuratzea martxan dago, itxaron mesedezARRAKASTAAldaketak gordeGordetzen ...Gauzak bilatuSegurtasun Arazoa.Hautatu guztiakHautatu ezabatzeko babeskopiak!EzarpenakEzarpenak - Kode editoreaEzarpenak - OrokorraEzarpenak - Erabiltzaileen murriztapenakEzarpenak - Erabiltzaile rolen mugakEzarpenak gorde dira.Shortcode - PROFitxategi edo karpeta bat moztu sinplekiSistemaren propietateakZerbitzu-baldintzakBadirudi babeskopiak arrakasta izan duela eta amaitu dela.GaiakGaien segurtasun kopia egunean egina Gaien babeskopia eginda.Gaien babeskopiak huts egin du.Gaien segurtasun kopia behar bezala berrezarri da.OrduaDenbora-muga (max_execution_time)Artxiboa edo zip kodea egitekoGaurERABILERA:Ezin da sortu datu-basearen babeskopia.Ezin da kendu babeskopia!Ezin da DB babeskopia leheneratu.Ezin dira beste batzuk leheneratu.Ezin dira pluginak leheneratu.Ezin dira gaiak leheneratu.Ezin dira kargak leheneratu.Kargatu fitxategiak erregistroakFitxategiak igoKargakKargatutako segurtasun kopiak egunean egin dira Kargatzen babeskopia eginda.Ezin izan dira kargatzen babeskopiak.Kargak babeskopiak behar bezala berrezarri dira.EgiaztatuIkusi erregistroaWP fitxategi kudeatzaileaWP Fitxategi Kudeatzailea - Babeskopia / BerreskuratuWP fitxategi kudeatzailearen ekarpenaLagun berriak egitea maite dugu! Harpidetu behean eta hala agintzen dugu
    eguneratuta mantendu zaitez gure azken plugin berriekin, eguneratzeekin,
    eskaintza bikainak eta eskaintza berezi batzuk.Ongi etorri fitxategi kudeatzaileraEz duzu gordetzeko aldaketarik egin.fitxategiak irakurtzeko baimena eskuratzeko, oharra: egia/gezurra, lehenetsia: egiafitxategiak idazteko baimenak sartzeko, oharra: egia/gezurra, lehenetsia: falsehemen aipatua ezkutatuko da. Oharra: komaz bereizita (,). Lehenetsia: nulualanguages/wp-file-manager-ms_MY.po000064400000233045147361034410013061 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Theme Editor\n"
"POT-Creation-Date: 2022-02-28 10:54+0530\n"
"PO-Revision-Date: 2022-03-01 11:21+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ms_MY\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Sandaran tema berjaya dipulihkan."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Tidak dapat memulihkan tema."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Sandaran muat naik berjaya dipulihkan."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Tidak dapat memulihkan muat naik."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Sandaran yang lain berjaya dipulihkan."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Tidak dapat memulihkan orang lain."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Sandaran pemalam berjaya dipulihkan."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Tidak dapat memulihkan pemalam."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Sandaran pangkalan data berjaya dipulihkan."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Semua Selesai"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Tidak dapat memulihkan sandaran DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Sandaran berjaya dikeluarkan!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Tidak dapat mengeluarkan sandaran!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Sandaran pangkalan data dilakukan pada tarikh "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Sandaran pemalam dilakukan pada tarikh "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Pencadangan tema dilakukan pada tarikh "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Muat naik sandaran dilakukan pada tarikh "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Sandaran yang lain dilakukan pada tarikh "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "balak"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Log tidak dijumpai!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Tiada apa-apa yang dipilih untuk sandaran"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Isu Keselamatan."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Sandaran pangkalan data selesai."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Tidak dapat membuat sandaran pangkalan data."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Sandaran pemalam selesai."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Sandaran pemalam gagal."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Sandaran tema selesai."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Sandaran tema gagal."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Muat naik sandaran selesai."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Sandaran muat naik gagal."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Sandaran yang lain selesai."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Sandaran yang lain gagal."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Pengurus Fail WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Tetapan"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Keutamaan"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Sifat Sistem"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kod pendek - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Sandaran/Pulihkan"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Beli Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Sumbang"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Fail tidak wujud untuk dimuat turun."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Kod Keselamatan Tidak Sah."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Id sandaran tiada."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Jenis parameter tiada."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Parameter yang diperlukan tidak ada."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Ralat: Tidak dapat memulihkan sandaran kerana sandaran pangkalan data "
"bersaiz berat. Sila cuba tingkatkan saiz Maksimum yang dibenarkan daripada "
"tetapan Keutamaan."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Pilih sandaran untuk dipadamkan!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Adakah anda pasti mahu membuang sandaran yang dipilih?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Sandaran sedang berjalan, sila tunggu"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Pemulihan sedang berjalan, sila tunggu"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Tiada apa-apa yang dipilih untuk sandaran."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Pengurus Fail WP - Sandaran / Pulihkan"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Pilihan Sandaran:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Sandaran Pangkalan Data"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Sandaran Fail"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Pemalam"

#: inc/backup.php:71
msgid "Themes"
msgstr "Tema"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Muat naik"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Lain-lain (Sebarang direktori lain terdapat di dalam wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Sandarkan Sekarang"

#: inc/backup.php:89
msgid "Time now"
msgstr "Masa sekarang"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "KEJAYAAN"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Sandaran berjaya dipadamkan."

#: inc/backup.php:102
msgid "Ok"
msgstr "Okey"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "HAPUS FILES"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Adakah anda pasti mahu memadamkan sandaran ini?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Batal"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Sahkan"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "KEMBALIKAN FIL"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Adakah anda pasti mahu memulihkan sandaran ini?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Mesej Log Terakhir"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Sandaran nampaknya berjaya dan kini lengkap."

#: inc/backup.php:171
msgid "No log message"
msgstr "Tiada mesej log"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Sandaran Sedia Ada"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Tarikh Sandaran"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Data sandaran (klik untuk memuat turun)"

#: inc/backup.php:190
msgid "Action"
msgstr "Tindakan"

#: inc/backup.php:210
msgid "Today"
msgstr "Hari ini"

#: inc/backup.php:239
msgid "Restore"
msgstr "Pulihkan"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Padam"

#: inc/backup.php:241
msgid "View Log"
msgstr "Lihat Log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Buat masa ini tidak ada sandaran."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Tindakan apabila sandaran terpilih"

#: inc/backup.php:251
msgid "Select All"
msgstr "Pilih semua"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Nyahpilih"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Fail sandaran akan berada di bawah"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Sumbangan Pengurus Fail WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nota: Ini adalah tangkapan skrin demo. Sila beli fungsi Pengurus Fail pro ke "
"Log."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klik untuk Beli PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Beli PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Sunting Fail Log"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Muat turun Log Fail"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Muat Naik Log Fail"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Tetapan disimpan."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Ketepikan notis ini."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Anda belum membuat perubahan untuk disimpan."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Laluan Akar Awam"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Laluan Akar Pengurus Fail, anda boleh menukar mengikut pilihan anda."

#: inc/root.php:59
msgid "Default:"
msgstr "Lalai:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Tolong ubah ini dengan berhati-hati, jalan yang salah boleh menyebabkan "
"pemalam pengurus fail turun."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Dayakan Sampah?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Setelah mengaktifkan sampah, fail anda akan masuk ke folder sampah."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Dayakan Muat Naik Fail ke Perpustakaan Media?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Setelah mengaktifkan ini semua fail akan masuk ke perpustakaan media."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Saiz maksimum yang dibenarkan pada masa pemulihan sandaran pangkalan data."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Sila tingkatkan nilai medan jika anda mendapat mesej ralat pada masa "
"pemulihan sandaran."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Simpan Perubahan"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Tetapan - Umum"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nota: Ini hanya tangkapan skrin demo. Untuk mendapatkan tetapan sila beli "
"versi pro kami."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Di sini admin dapat memberi akses kepada peranan pengguna untuk menggunakan "
"filemanager. Admin boleh menetapkan Folder Akses Lalai dan juga mengawal "
"ukuran muat naik filemanager."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Tetapan - Penyunting kod"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Pengurus Fail mempunyai penyunting kod dengan pelbagai tema. Anda boleh "
"memilih mana-mana tema untuk penyunting kod. Ia akan dipaparkan semasa anda "
"mengedit fail apa pun. Anda juga boleh membenarkan mod skrin penuh "
"penyunting kod."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Paparan editor kod"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Tetapan - Sekatan Pengguna"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Pentadbir boleh menyekat tindakan mana-mana pengguna. Sembunyikan juga fail "
"dan folder dan boleh menetapkan jalur folder yang berbeza untuk pengguna "
"yang berbeza."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Tetapan - Sekatan Peranan Pengguna"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Pentadbir boleh menyekat tindakan mana-mana pengguna. Sembunyikan juga fail "
"dan folder dan boleh tetapkan jalur folder yang berbeza untuk peranan "
"pengguna yang berbeza."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Pengurus Fail - Kod Pendek"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "GUNAKAN:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Ia akan menunjukkan pengurus fail di bahagian hadapan. Anda boleh mengawal "
"semua tetapan daripada tetapan pengurus fail. Ia akan berfungsi sama seperti "
"Pengurus Fail WP belakang."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Ia akan menunjukkan pengurus fail di bahagian hadapan. Tetapi hanya "
"Pentadbir boleh mengaksesnya dan akan mengawal dari tetapan pengurus fail."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parameter:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Ia akan membenarkan semua peranan untuk mengakses pengurus fail di bahagian "
"hadapan atau Anda boleh menggunakan mudah untuk peranan pengguna tertentu "
"seperti dibenarkan_roles=\"editor,author\" (dipisahkan dengan koma(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Di sini \"ujian\" ialah nama folder yang terletak pada direktori akar, atau "
"anda boleh memberikan laluan untuk sub folder seperti \"wp-content/plugins"
"\". Jika dibiarkan kosong atau kosong ia akan mengakses semua folder pada "
"direktori akar. Lalai: Direktori akar"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"untuk akses untuk menulis kebenaran fail, nota: benar/salah, lalai: palsu"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "untuk kebenaran akses membaca fail, nota: benar/salah, lalai: benar"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"ia akan menyembunyikan yang disebut di sini. Nota: dipisahkan dengan "
"koma(,). Lalai: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Ia akan mengunci yang disebut dalam koma. anda boleh mengunci lebih banyak "
"seperti \".php,.css,.js\" dsb. Lalai: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* untuk semua operasi dan untuk membenarkan beberapa operasi anda boleh "
"menyebut nama operasi seperti, allowed_operations=\"upload,download\". Nota: "
"dipisahkan dengan koma(,). Lalai: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Senarai Operasi Fail:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Buat direktori atau folder"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Buat fail"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Namakan semula fail atau folder"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Gandakan atau klon folder atau fail"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Tampal fail atau folder"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Larangan"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Untuk membuat arkib atau zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Ekstrak fail arkib atau zip"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Salin fail atau folder"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Potong fail atau folder dengan mudah"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Edit fail"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Keluarkan atau hapus fail dan folder"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Muat turun fail"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Memuat naik fail"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Cari barang"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Maklumat fail"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Tolonglah"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Ini akan melarang pengguna tertentu dengan hanya meletakkan ID mereka "
"dengan tanda koma (,). Sekiranya pengguna adalah Ban maka mereka tidak akan "
"dapat mengakses pengurus fail wp di bahagian depan."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Paparan UI Filemanager. Lalai: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Fail diubah suai atau Buat format tarikh. Lalai: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Bahasa pengurus fail. Lalai: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema Pengurus Fail. Lalai: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Pengurus Fail - Sifat Sistem"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versi PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Saiz muat naik fail maksimum (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Hantar saiz muat naik fail maksimum (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Had Memori (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Waktu tamat (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Penyemak Imbas dan OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Tukar Tema Di Sini:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Lalai"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Gelap"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Cahaya"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Kelabu"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Selamat datang ke Pengurus Fail"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Kami gemar membuat rakan baru! Langgan di bawah dan kami berjanji untuk\n"
"    membuat anda terkini dengan plugin, kemas kini baru kami yang terkini,\n"
"    tawaran hebat dan beberapa tawaran istimewa."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Sila Masukkan Nama Depan."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Sila Masukkan Nama Akhir."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Sila Masukkan Alamat E-mel."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Sahkan"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Tidak, Terima kasih"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Syarat Perkhidmatan"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Dasar Privasi"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Menyimpan ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "okey"

#~ msgid "Backup not found!"
#~ msgstr "Sandaran tidak dijumpai!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Sandaran berjaya dikeluarkan!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Tidak ada yang dipilih untuk sandaran</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Isu Keselamatan. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Penyimpanan pangkalan data selesai.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Tidak dapat membuat sandaran pangkalan "
#~ "data. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Sandaran pemalam selesai</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sandaran pemalam gagal. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Penyelesaian tema selesai. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sandaran tema gagal. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Muat naik sandaran selesai. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Gagal memuat naik gagal. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sandaran yang lain selesai. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sandaran yang lain gagal. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Semua Selesai </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Imej"

#~ msgid "of"
#~ msgstr "daripada"

#~ msgid "Close"
#~ msgstr "Tutup"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Ciri ini memerlukan bingkai sebaris. Anda mempunyai iframe yang "
#~ "dilumpuhkan atau penyemak imbas anda tidak menyokongnya."

#~ msgid "Theme Editor"
#~ msgstr "Penyunting Tema"

#~ msgid "Plugin Editor"
#~ msgstr "Penyunting Pemalam"

#~ msgid "Access Control"
#~ msgstr "Kawalan Akses"

#~ msgid "Notify Me"
#~ msgstr "Beritahu saya"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "bahasa telah berjaya dimuat turun."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Folder bahasa gagal diturunkan."

#~ msgid "Security token expired!"
#~ msgstr "Token keselamatan tamat!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "bahasa telah berjaya dimuat turun."

#~ msgid "Currently language "
#~ msgstr "Bahasa sekarang "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " tidak ada. Sila klik pada pautan bahasa permintaan."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran yang mencukupi untuk mengedit pemalam "
#~ "untuk laman web ini."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Tidak ada plugin yang dipasang di laman web ini."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Tidak ada tema yang dipasang di laman web ini."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">Masukkan nama folder! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Masukkan nama fail! </p>"

#~ msgid "Open"
#~ msgstr "Buka"

#~ msgid "Preview"
#~ msgstr "Pratonton"

#~ msgid "Edit"
#~ msgstr "Edit"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Adakah anda pasti mahu membatalkan muat naik fail?"

#~ msgid "File renamed successfully."
#~ msgstr "Fail berjaya dinamakan semula."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Adakah anda pasti mahu memadam folder?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Folder berjaya dipadamkan."

#~ msgid "File deleted successfully."
#~ msgstr "Fail berjaya dipadamkan."

#~ msgid "Folder renamed successfully."
#~ msgstr "Folder dinamakan semula dengan jayanya."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Tidak dibenarkan melebihi 30 aksara.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Permintaan tidak sah!"

#~ msgid "No change in file!"
#~ msgstr "Tiada perubahan fail!"

#~ msgid "File saved successfully!"
#~ msgstr "Fail berjaya disimpan!"

#~ msgid "File not saved!"
#~ msgstr "Fail tidak disimpan!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Tidak dapat mengesahkan token keselamatan!"

#~ msgid "Folder created successfully!"
#~ msgstr "Folder berjaya dibuat!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Format folder ini tidak dibenarkan memuat naik dengan wordpress!"

#~ msgid "Folder already exists!"
#~ msgstr "Folder sudah ada!"

#~ msgid "File created successfully!"
#~ msgstr "Fail berjaya dibuat!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Sambungan fail ini tidak dibenarkan dibuat!"

#~ msgid "File already exists!"
#~ msgstr "Fail sudah ada!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Sila masukkan pelanjutan fail yang sah!"

#~ msgid "Folder does not exists!"
#~ msgstr "Folder tidak wujud!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Folder berjaya dipadamkan!"

#~ msgid "File deleted successfully!"
#~ msgstr "Fail berjaya dipadamkan!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "Sambungan fail ini tidak dibenarkan dimuat naik dengan wordpress!"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Fail berjaya dimuat naik: Laluan fail yang dimuat naik ialah"

#~ msgid "No file selected"
#~ msgstr "Tiada fail yang dipilih"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Tidak dapat menamakan semula fail! Cuba lagi."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Folder dinamakan semula dengan jayanya!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Sila masukkan nama folder yang betul"

#~ msgid "How can we help?"
#~ msgstr "Bagaimana kita boleh menolong?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "Sumber pembelajaran, sokongan profesional dan bantuan pakar."

#~ msgid "Documentation"
#~ msgstr "Dokumentasi"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Dapatkan jawapan dengan cepat dari dokumentasi lengkap kami."

#~ msgid "Learn More"
#~ msgstr "Ketahui Lebih Lanjut"

#~ msgid "Contact Us"
#~ msgstr "Hubungi Kami"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr ""
#~ "Hantarkan tiket sokongan untuk jawapan pada pertanyaan yang mungkin anda "
#~ "ada."

#~ msgid "Request a Feature"
#~ msgstr "Minta Ciri"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr ""
#~ "Beritahu kami apa yang anda mahukan dan tambahkan pada peta jalan kami."

#~ msgid "Tell us what you think!"
#~ msgstr "Beritahu kami apa yang anda fikirkan!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Nilai dan beri kami ulasan mengenai Wordpress!"

#~ msgid "Leave a Review"
#~ msgstr "Leave a Review"

#~ msgid "Update"
#~ msgstr "Kemas kini"

#~ msgid "Installed"
#~ msgstr "Dipasang"

#~ msgid "Theme Editor Pro Language:"
#~ msgstr "Bahasa Pro Editor Tema:"

#~ msgid " language"
#~ msgstr " bahasa"

#~ msgid "Click here to install/update "
#~ msgstr "Klik di sini untuk memasang / mengemas kini "

#~ msgid " language translation for Theme Editor Pro."
#~ msgstr " terjemahan bahasa untuk Theme Editor Pro."

#~ msgid "Available languages"
#~ msgstr "Bahasa yang ada"

#~ msgid "Click here to download all available languages."
#~ msgstr "Klik di sini untuk memuat turun semua bahasa yang ada."

#~ msgid "Request a language"
#~ msgstr "Minta bahasa"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Beritahu kami bahasa mana yang ingin anda tambahkan."

#~ msgid "Contact us"
#~ msgstr "Hubungi Kami"

#~ msgid "Notifications"
#~ msgstr "Pemberitahuan"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> Catatan: Ini hanya tangkapan skrin. Beli Versi PRO untuk ciri "
#~ "ini. </strong>"

#~ msgid "Permissions"
#~ msgstr "Kebenaran"

#~ msgid "Edit Plugin"
#~ msgstr "Edit Pemalam"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Pemalam ini sedang diaktifkan! </strong> Peringatan: Tidak "
#~ "melakukan perubahan pada pemalam aktif. Sekiranya perubahan anda "
#~ "menyebabkan ralat maut, pemalam akan dinyahaktifkan secara automatik."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Penyuntingan <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (aktif)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Melayari <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (tidak aktif)"

#~ msgid "Update File"
#~ msgstr "Kemas kini Fail"

#~ msgid "Download Plugin"
#~ msgstr "Muat turun Pemalam"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Anda perlu membuat fail ini dapat ditulis sebelum dapat menyimpan "
#~ "perubahan. Lihat <a href=\"https://wordpress.org/support/article/changing-"
#~ "file-permissions/\" target=\"_blank\"> Codex </a> untuk maklumat lebih "
#~ "lanjut."

#~ msgid "Select plugin to edit:"
#~ msgstr "Pilih pemalam untuk diedit:"

#~ msgid "Create Folder and File"
#~ msgstr "Buat Folder dan Fail"

#~ msgid "Create"
#~ msgstr "Buat"

#~ msgid "Remove Folder and File"
#~ msgstr "Keluarkan Folder dan Fail"

#~ msgid "Remove "
#~ msgstr "Keluarkan"

#~ msgid "To"
#~ msgstr "Ke"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Pilihan: Sub-Direktori"

#~ msgid "Choose File "
#~ msgstr "Pilih fail"

#~ msgid "No file Chosen "
#~ msgstr "Tiada fail dipilih "

#~ msgid "Create a New Folder: "
#~ msgstr "Buat Folder Baru:"

#~ msgid "New folder will be created in: "
#~ msgstr "Folder baru akan dibuat di:"

#~ msgid "New Folder Name: "
#~ msgstr "Nama Folder Baru:"

#~ msgid "Create New Folder"
#~ msgstr "Buat Folder Baru"

#~ msgid "Create a New File: "
#~ msgstr "Buat Fail Baru:"

#~ msgid "New File will be created in: "
#~ msgstr "Fail Baru akan dibuat dalam:"

#~ msgid "New File Name: "
#~ msgstr "Nama Fail Baru:"

#~ msgid "Create New File"
#~ msgstr "Buat Fail Baru"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr ""
#~ "Amaran: sila berhati-hati sebelum membuang folder atau fail apa pun."

#~ msgid "Current Theme Path: "
#~ msgstr "Laluan Tema Semasa:"

#~ msgid "Remove Folder: "
#~ msgstr "Keluarkan Folder:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Laluan Folder yang ingin anda alih keluar: "

#~ msgid "Remove Folder"
#~ msgstr "Keluarkan Folder"

#~ msgid "Remove File: "
#~ msgstr "Alih keluar Fail:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Laluan Fail yang ingin anda alih keluar: "

#~ msgid "Remove File"
#~ msgstr "Alih keluar Fail"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Sila Masukkan Alamat E-mel yang Sah."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr ""
#~ "Amaran: Harap berhati-hati sebelum menamakan semula folder atau fail apa "
#~ "pun."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Fail / Folder akan dinamakan semula dalam:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Namakan Fail / Folder:"

#~ msgid "Follow us"
#~ msgstr "Ikut kami"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Penyunting Tema Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Editor Tema Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Editor Tema Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Editor Tema Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Youtube Editor Tema"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Pergi ke laman ThemeEditor"

#~ msgid "Theme Editor Links"
#~ msgstr "Pergi ke laman ThemeEditor"

#~ msgid "Child Theme"
#~ msgstr "Tema Kanak-kanak"

#~ msgid "Child Theme Permissions"
#~ msgstr "Kebenaran Tema Kanak-kanak"

#~ msgid " is not available. Please click "
#~ msgstr " tidak boleh didapati. Sila klik "

#~ msgid "here"
#~ msgstr "di sini"

#~ msgid "to request language."
#~ msgstr "untuk meminta bahasa."

#~ msgid "Click"
#~ msgstr "Klik"

#~ msgid "to install "
#~ msgstr "memasang"

#~ msgid " language translation  for Theme Editor Pro"
#~ msgstr " terjemahan bahasa untuk Theme Editor Pro"

#~ msgid "Success: Settings Saved!"
#~ msgstr "Kejayaan: Tetapan Disimpan!"

#~ msgid "No changes have been made to save."
#~ msgstr "Tidak ada perubahan yang dibuat untuk disimpan."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Dayakan Editor Tema Untuk Tema"

#~ msgid "Yes"
#~ msgstr "Ya"

#~ msgid "No"
#~ msgstr "Tidak"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ini akan Mengaktifkan / Menyahaktifkan penyunting tema. <br/><strong "
#~ "class=\"defs\">Lalai: </strong> Ya"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Lumpuhkan Editor Tema WordPress Lalai?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ini akan Mengaktifkan / Menyahaktifkan editor tema Lalai. <br/><strong "
#~ "class=\"defs\">Lalai: </strong> Ya"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Dayakan Editor Plugin Untuk Pemalam"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ini akan Mengaktifkan / Melumpuhkan editor pemalam. <br/><strong class="
#~ "\"defs\">Lalai: </strong> Ya"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Lumpuhkan Editor Plugin WordPress Lalai?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ini akan Mengaktifkan / Melumpuhkan editor pemalam Lalai. <br/><strong "
#~ "class=\"defs\">Lalai: </strong> Ya"

#~ msgid "Code Editor"
#~ msgstr "Penyunting Kod"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Membolehkan anda memilih tema untuk penyunting tema. <br/><strong class="
#~ "\"defs\">Lalai: </strong> Kobalt"

#~ msgid "Edit Themes"
#~ msgstr "Edit Tema"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Tema ini sedang diaktifkan! </strong> Peringatan: Tidak membuat "
#~ "perubahan pada tema aktif tidak digalakkan."

#~ msgid "Editing"
#~ msgstr "Penyuntingan"

#~ msgid "Browsing"
#~ msgstr "Melayari"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Kemas kini Fail dan Cuba Aktifkan Semula"

#~ msgid "Download Theme"
#~ msgstr "Muat turun Tema"

#~ msgid "Select theme to edit:"
#~ msgstr "Pilih tema untuk diedit:"

#~ msgid "Theme Files"
#~ msgstr "Fail Tema"

#~ msgid "Choose File"
#~ msgstr "Pilih fail"

#~ msgid "No File Chosen"
#~ msgstr "Tiada fail dipilih"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr ""
#~ "Amaran: Harap berhati-hati sebelum mengeluarkan folder atau fail apa pun."

#~ msgid "Child Theme Permission"
#~ msgstr "Kebenaran Tema Kanak-kanak"

#~ msgid "Translations"
#~ msgstr "Terjemahan"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat tema kanak-kanak baru."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran untuk mengubah konfigurasi tema kanak-"
#~ "kanak yang ada."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Anda tidak mempunyai kebenaran untuk mendua tema kanak-kanak."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran untuk mengakses menu pertanyaan / pemilih."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "Anda tidak mempunyai kebenaran untuk mengakses fon web & menu CSS."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Anda tidak mempunyai kebenaran untuk menyalin fail."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Anda tidak mempunyai kebenaran untuk menghapus fail kanak-kanak."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran untuk memuat naik tangkapan skrin baru."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Anda tidak mempunyai kebenaran untuk memuat naik gambar baru."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Anda tidak mempunyai kebenaran untuk menghapus gambar."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Anda tidak mempunyai kebenaran untuk memuat turun fail."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat direktori baru."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat fail baru."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk mengemas kini fail!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat folder!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk menghapus folder!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk memadam fail!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk memuat naik fail!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Kebenaran Tema Kanak-kanak berjaya disimpan."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "Tidak ada perubahan yang dibuat dalam kebenaran tema anak untuk disimpan."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Mesej kebenaran Tema Kanak-kanak berjaya disimpan."

#~ msgid "Users"
#~ msgstr "Pengguna"

#~ msgid "Create New Child Theme"
#~ msgstr "Buat Tema Kanak-kanak Baru"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Konfigurasikan Tema Kanak-kanak Sedia Ada"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Gandakan Tema Kanak-kanak"

#~ msgid "Query/ Selector"
#~ msgstr "Pertanyaan / Pemilih"

#~ msgid "Web/font"
#~ msgstr "Web / fon"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Salin Tema Ibu Bapa Fail Ke Tema Anak"

#~ msgid "Deleted Child Files"
#~ msgstr "Fail Kanak-kanak yang Dihapuskan"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Muat naik Tangkapan Skrin Baru"

#~ msgid "Upload New Images"
#~ msgstr "Muat Naik Gambar Baru"

#~ msgid "Deleted Images "
#~ msgstr "Gambar yang Dihapuskan"

#~ msgid "Download Images"
#~ msgstr "Muat turun Imej"

#~ msgid "Create New Directory"
#~ msgstr "Buat Direktori Baru"

#~ msgid "Create New Files"
#~ msgstr "Buat Fail Baru"

#~ msgid "Export Theme"
#~ msgstr "Tema Eksport"

#~ msgid "User Roles"
#~ msgstr "Peranan Pengguna"

#~ msgid "Query/ Seletor"
#~ msgstr "Pertanyaan / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Gambar yang Dihapuskan"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Mesej Kebenaran Tema Kanak-kanak"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat Tema Kanak-kanak baru."

#~ msgid "Query/Selector"
#~ msgstr "Pertanyaan / Pemilih"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran untuk mengakses menu pertanyaan / pemilih."

#~ msgid " Web/font"
#~ msgstr "Web / fon"

#~ msgid " Export Theme"
#~ msgstr "Tema Eksport"

#~ msgid "Save Child Theme Message"
#~ msgstr "Mesej Kebenaran Tema Kanak-kanak"

#~ msgid "Please select atleast one image."
#~ msgstr "Pilih sekurang-kurangnya satu gambar."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Anda tidak mempunyai kebenaran untuk menghapus gambar."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Anda tidak mempunyai kebenaran untuk memuat naik gambar baru."

#~ msgid "You don't have the permission to download."
#~ msgstr "Anda tidak mempunyai kebenaran untuk memuat turun."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat direktori baru."

#~ msgid "Please choose file type."
#~ msgstr "Sila pilih jenis fail."

#~ msgid "Please enter file name."
#~ msgstr "Sila masukkan nama fail."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat fail baru."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr "Adakah anda pasti menyalin fail induk ke tema anak?"

#~ msgid "Please select file(s)."
#~ msgstr "Sila pilih fail."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Anda tidak mempunyai kebenaran untuk menyalin fail."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Adakah anda pasti mahu menghapus fail yang dipilih?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Anda tidak mempunyai kebenaran untuk menghapus fail anak."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran untuk memuat naik tangkapan skrin baru."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Anda tidak mempunyai kebenaran untuk mengeksport tema."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran untuk mengakses menu Pertanyaan / Pemilih."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Anda tidak mempunyai kebenaran untuk mengakses menu Web Font & CSS."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Tema Analisis Semasa:"

#~ msgid "Preview Theme"
#~ msgstr "Tema Pratonton"

#~ msgid "Parent Themes"
#~ msgstr "Tema Ibu Bapa"

#~ msgid "Child Themes"
#~ msgstr "Tema Kanak-kanak"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Ralat: Tetapan Tidak Disimpan!"

#~ msgid "Email List"
#~ msgstr "Senarai E-mel"

#~ msgid "Email Address"
#~ msgstr "Alamat emel"

#~ msgid "Enter Email"
#~ msgstr "Masukkan email"

#~ msgid "Add More"
#~ msgstr "Tambah Lagi"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Alamat ini digunakan untuk tujuan pemberitahuan, seperti pemberitahuan "
#~ "tema / pemalam."

#~ msgid "Theme Notification"
#~ msgstr "Pemberitahuan Tema"

#~ msgid "Notify on file update"
#~ msgstr "Maklumkan pada kemas kini fail"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Pemberitahuan mengenai pengeditan atau kemas kini fail tema. <br/> "
#~ "<strong> Lalai: </strong> Ya"

#~ msgid "Notify on files download"
#~ msgstr "Beritahu pada muat turun fail"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Pemberitahuan mengenai muat turun edit fail tema. <br/> <strong> Lalai: </"
#~ "strong> Ya"

#~ msgid "Notify on theme download"
#~ msgstr "Maklumkan semasa memuat turun tema"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Pemberitahuan mengenai muat turun tema. <br/> <strong> Lalai: </strong> Ya"

#~ msgid "Notify on files upload"
#~ msgstr "Maklumkan pada muat naik fail"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Pemberitahuan mengenai fail yang dimuat naik dalam tema. <br/> <strong> "
#~ "Lalai: </strong> Ya"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Maklumkan pada buat fail / folder baru"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Pemberitahuan tentang membuat fail / folder baru dalam tema. <br/> "
#~ "<strong> Lalai: </strong> Ya"

#~ msgid "Notify on delete"
#~ msgstr "Maklumkan semasa hapus"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Beritahu untuk menghapus fail dan folder dalam tema. <br/> <strong> "
#~ "Lalai: </strong> Ya"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Maklumkan mengenai membuat tema Anak Baru"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Maklumkan mengenai tema Buat Anak Baru. <br/> <strong> Lalai: </strong> Ya"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Maklumkan untuk mengkonfigurasi tema Anak Sedia Ada"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Beritahu untuk mengkonfigurasi tema Anak Sedia Ada. <br/> <strong> Lalai: "
#~ "</strong> Ya"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Beritahu mengenai tema Pendua Anak"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Beritahu mengenai Konfigurasikan tema Anak yang Ada. <br/> <strong> "
#~ "Lalai: </strong> Ya"

#~ msgid "Plugin Notification"
#~ msgstr "Pemberitahuan Pemalam"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Pemberitahuan mengenai pengeditan atau kemas kini fail tema. <br/> "
#~ "<strong> Lalai: </strong> ya"

#~ msgid "Notify on Plugin download"
#~ msgstr "Maklumkan pada muat turun Plugin"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Pemberitahuan mengenai muat turun Plugin. <br/> <strong> Lalai: </strong> "
#~ "Ya"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Pemberitahuan mengenai muat naik fail dalam tema. <br/> <strong> Lalai: </"
#~ "strong> Ya"

#~ msgid "Permission saved successfully."
#~ msgstr "Kebenaran berjaya disimpan."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr ""
#~ "Alamak! Kebenaran tidak dapat disimpan kerana anda belum membuat "
#~ "perubahan."

#~ msgid "Allowed User Roles"
#~ msgstr "Peranan Pengguna yang Dibolehkan"

#~ msgid "Update theme files"
#~ msgstr "Kemas kini fail tema"

#~ msgid "Create new theme files and folders"
#~ msgstr "Buat fail dan folder tema baru"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Muat naik fail tema dan folder baru"

#~ msgid "Download theme files"
#~ msgstr "Muat turun fail tema"

#~ msgid "Download theme"
#~ msgstr "Muat turun tema"

#~ msgid "Update plugin files"
#~ msgstr "Kemas kini fail pemalam"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Buat fail dan folder pemalam baru"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Muat naik fail dan folder pemalam baru"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Padamkan fail dan folder pemalam"

#~ msgid "Download plugin files"
#~ msgstr "Muat turun fail pemalam"

#~ msgid "Download plugin"
#~ msgstr "Muat turun pemalam"

#~ msgid "Rename File"
#~ msgstr "Namakan semula Fail"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Tema Editor PRO - Sila masukkan butiran pesanan anda di bawah. Jika tidak "
#~ "<a href=\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank"
#~ "\" class=\"page-title-action button button-primary\" title=\"click to buy "
#~ "Licence Key\">Beli Sekarang </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "ID PESANAN (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Masukkan ID Pesanan"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Sila Periksa e-mel anda untuk mendapatkan ID pesanan."

#~ msgid "LICENCE KEY *"
#~ msgstr "KUNCI LESEN *"

#~ msgid "Enter License Key"
#~ msgstr "Masukkan Kunci Lesen"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Sila Periksa E-mel Anda untuk Kunci Lesen."

#~ msgid "Click To Verify"
#~ msgstr "Klik Untuk mengesahkan"

#~ msgid "URL/None"
#~ msgstr "URL / Tiada"

#~ msgid "Origin"
#~ msgstr "Asal"

#~ msgid "Color 1"
#~ msgstr "Warna 1"

#~ msgid "Color 2"
#~ msgstr "Warna 2"

#~ msgid "Width/None"
#~ msgstr "Lebar / Tiada"

#~ msgid "Style"
#~ msgstr "Gaya"

#~ msgid "Color"
#~ msgstr "Warna"

#~ msgid "Configure Child Theme"
#~ msgstr "Konfigurasikan Tema Kanak-kanak"

#~ msgid "Duplicate Child theme"
#~ msgstr "Gandakan Tema Kanak-kanak"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Setelah menganalisis, tema ini berfungsi dengan baik. Anda boleh "
#~ "menggunakannya sebagai Tema Anak anda."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr ""
#~ "Setelah menganalisis tema kanak-kanak ini nampaknya berfungsi dengan "
#~ "betul."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Tema ini memuatkan lembaran gaya tambahan selepas fail <code> style.css </"
#~ "code>:"

#~ msgid "The theme"
#~ msgstr "Nama Tema"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr "tidak dapat dianalisis kerana pratonton tidak dibuat dengan betul"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Tema Kanak-kanak ini belum dikonfigurasikan untuk pemalam ini"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Configurator membuat pengubahsuaian yang signifikan pada tema anak, "
#~ "termasuk perubahan helaian gaya dan fungsi php tambahan. Pertimbangkan "
#~ "untuk menggunakan pilihan tema anak DUPLICATE (lihat langkah 1, di atas) "
#~ "dan simpan yang asli sebagai sandaran."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "Semua maklumat webfonts / css berjaya disimpan."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Sila masukkan nilai untuk webfonts / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Anda tidak mempunyai kebenaran untuk mengemas kini fon web / css."

#~ msgid "All information saved successfully."
#~ msgstr "Semua maklumat berjaya disimpan."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Adakah anda pasti mahu MENGESAN semula? Ini akan menghancurkan setiap "
#~ "kerja yang telah anda lakukan di Configurator."

#~ msgid "Selectors"
#~ msgstr "Pemilih"

#~ msgid "Edit Selector"
#~ msgstr "Edit Pemilih"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "Lembaran gaya tidak dapat dipaparkan."

#~ msgid "(Child Only)"
#~ msgstr "(Kanak-kanak Sahaja)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Sila masukkan Tema Kanak-kanak yang sah."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Sila masukkan nama Tema Kanak-kanak yang sah."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> ada. Sila masukkan Tema Kanak-kanak yang lain"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "Halaman tidak dapat dimuat dengan betul."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Perpustakaan jQuery yang bertentangan atau ketinggalan zaman dimuat oleh "
#~ "pemalam lain:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr ""
#~ "Menyahaktifkan atau mengganti pemalam boleh menyelesaikan masalah ini."

#~ msgid "No result found for the selection."
#~ msgstr "Hasil tidak dijumpai untuk pemilihan."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sMengapa saya melihat ini?%s"

#~ msgid "Parent / Child"
#~ msgstr "Ibu bapa / Anak"

#~ msgid "Select an action:"
#~ msgstr "Pilih tindakan:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Buat Tema Kanak-kanak baru"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Konfigurasikan Tema Kanak-kanak yang ada"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Gandakan Tema Kanak-kanak yang ada"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Pilih Tema Ibu Bapa:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Menganalisis Tema Ibu Bapa"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Klik \"Analisis\" untuk menentukan kebergantungan helaian gaya dan "
#~ "kemungkinan masalah lain."

#~ msgid "Analyze"
#~ msgstr "Menganalisis"

#~ msgid "Select a Child Theme:"
#~ msgstr "Pilih Tema Kanak-kanak:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Menganalisis Tema Kanak-kanak"

#~ msgid "Name the new theme directory:"
#~ msgstr "Namakan direktori tema baru:"

#~ msgid "Directory Name"
#~ msgstr "Nama Direktori"

#~ msgid "NOTE:"
#~ msgstr "NOTA:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Ini BUKAN nama Tema Kanak-kanak. Anda boleh menyesuaikan nama, "
#~ "keterangan, dll di langkah 7, di bawah."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Sahkan direktori Tema Kanak-kanak:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Untuk pengesahan sahaja (anda tidak dapat mengubah direktori Tema Kanak-"
#~ "kanak yang ada)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Pilih tempat menyimpan gaya baru:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Lembaran Gaya Utama (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Simpan gaya tersuai baru terus ke lembaran gaya utama Tema Kanak-kanak, "
#~ "menggantikan nilai yang ada. Lembaran gaya utama akan dimuat mengikut "
#~ "urutan yang ditetapkan oleh tema."

#~ msgid "Separate Stylesheet"
#~ msgstr "Lembaran Gaya yang berasingan"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Simpan gaya tersuai baru ke helaian gaya yang terpisah dan gabungkan gaya "
#~ "tema anak yang ada dengan ibu bapa untuk membentuk garis dasar. Pilih "
#~ "pilihan ini jika anda ingin mengekalkan gaya tema kanak-kanak yang ada "
#~ "dan bukannya menimpanya. Pilihan ini juga membolehkan anda menyesuaikan "
#~ "helaian gaya yang dimuat setelah lembaran gaya utama."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Pilih pengendalian lembaran gaya Tema Ibu Bapa:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Gunakan barisan gaya WordPress."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "Biarkan Configurator menentukan tindakan dan kebergantungan yang sesuai "
#~ "dan mengemas kini fail fungsi secara automatik."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "Gunakan <code> @import </code> di helaian gaya tema anak."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Hanya gunakan pilihan ini jika helaian gaya induk tidak dapat dimuat "
#~ "menggunakan barisan gaya WordPress. Tidak digalakkan menggunakan <code> "
#~ "@import </code>."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Jangan tambah pengendalian helaian gaya ibu bapa."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Pilih pilihan ini jika tema ini sudah menangani lembaran gaya tema induk "
#~ "atau jika fail <code> style.css </code> tema induk tidak digunakan untuk "
#~ "penampilannya."

#~ msgid "Advanced handling options"
#~ msgstr "Pilihan pengendalian lanjutan"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Abaikan helaian gaya tema ibu bapa."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Pilih pilihan ini jika tema ini sudah menangani helaian gaya tema induk "
#~ "atau jika fail gaya.css tema induk tidak digunakan untuk penampilannya."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Perbaiki templat tajuk dalam tema anak."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Biarkan Configurator (cuba) menyelesaikan masalah helaian gaya yang "
#~ "disenaraikan di atas. Ini dapat menyelesaikan banyak, tetapi tidak semua, "
#~ "masalah biasa."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Keluarkan kebergantungan helaian gaya"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Secara lalai, susunan helaian gaya yang dimuat sebelum lembaran gaya "
#~ "utama dipelihara dengan memperlakukannya sebagai dependensi. Dalam "
#~ "beberapa kes, helaian gaya dikesan dalam pratonton yang tidak digunakan "
#~ "di seluruh laman web. Sekiranya perlu, kebergantungan dapat dikeluarkan "
#~ "untuk helaian gaya tertentu di bawah."

#~ msgid "Child Theme Name"
#~ msgstr "Nama Tema Kanak-kanak"

#~ msgid "Theme Name"
#~ msgstr "Nama Tema"

#~ msgid "Theme Website"
#~ msgstr "Laman Web Tema"

#~ msgid "Author"
#~ msgstr "Pengarang"

#~ msgid "Author Website"
#~ msgstr "Laman Web Pengarang"

#~ msgid "Theme Description"
#~ msgstr "Huraian Tema"

#~ msgid "Description"
#~ msgstr "Penerangan"

#~ msgid "Tags"
#~ msgstr "Teg"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Salin Menu, Widget dan Tetapan Penyesuai lain dari Tema Ibu Bapa ke Tema "
#~ "Anak:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Pilihan ini menggantikan Menu, Widget dan Tetapan Penyesuai Tema Anak "
#~ "yang ada dengan Tema Orang Tua. Anda hanya perlu menggunakan pilihan ini "
#~ "pada kali pertama anda mengkonfigurasi Tema Kanak-kanak."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Klik untuk menjalankan Configurator:"

#~ msgid "Query / Selector"
#~ msgstr "Pertanyaan / Pemilih"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "Untuk mencari pemilih tertentu dalam blok pertanyaan @media, pertama "
#~ "pilih pertanyaan, kemudian pemilih. Gunakan pertanyaan \"asas\" untuk "
#~ "mengedit semua pemilih lain."

#~ msgid "@media Query"
#~ msgstr "Pertanyaan @media"

#~ msgid "( or \"base\" )"
#~ msgstr "(atau \"asas\")"

#~ msgid "Selector"
#~ msgstr "Pemilih"

#~ msgid "Query/Selector Action"
#~ msgstr "Pertanyaan / Tindakan Pemilih"

#~ msgid "Save Child Values"
#~ msgstr "Simpan Nilai Anak"

#~ msgid "Delete Child Values"
#~ msgstr "Padamkan Nilai Anak"

#~ msgid "Property"
#~ msgstr "Harta tanah"

#~ msgid "Baseline Value"
#~ msgstr "Nilai Asas"

#~ msgid "Child Value"
#~ msgstr "Nilai Anak"

#~ msgid "error"
#~ msgstr "kesilapan"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr ""
#~ "Anda tidak mempunyai kebenaran untuk mengkonfigurasi tema kanak-kanak."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s tidak wujud. Sila pilih Tema Ibu Bapa yang sah."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Fail Fungsi diperlukan dan tidak dapat dihapuskan."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Sila pilih Tema Ibu Bapa yang sah."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Sila pilih Tema Kanak-kanak yang sah."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Sila masukkan nama direktori Tema Kanak-kanak yang sah."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> ada. Sila masukkan nama templat Tema Kanak-kanak yang "
#~ "lain."

#~ msgid "Your theme directories are not writable."
#~ msgstr "Direktori tema anda tidak boleh ditulis."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Tidak dapat menaik taraf tema kanak-kanak"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "Lembaran gaya anda tidak boleh ditulis."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "Tag PHP penutup dikesan dalam fail fungsi tema Anak sehingga pilihan "
#~ "\"Pengendalian Lembar Gaya Orang Tua\" tidak dikonfigurasi. Menutup PHP "
#~ "di akhir fail tidak digalakkan kerana boleh menyebabkan tajuk HTTP "
#~ "pramatang. Sila edit <code> functions.php </code> untuk membuang tag "
#~ "<code>?&gt;</code> akhir dan klik \"Jana / Bangun semula Filem Tema Kanak-"
#~ "kanak\" sekali lagi."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Tidak dapat menyalin fail: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Tidak dapat menghapus fail %s."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "tidak dapat menyalin %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "dir tidak sah: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Terdapat ralat semasa menetapkan semula kebenaran."

#~ msgid "Could not upload file."
#~ msgstr "Tidak dapat memuat naik fail."

#~ msgid "Invalid theme root directory."
#~ msgstr "Direktori root tema tidak sah."

#~ msgid "No writable temp directory."
#~ msgstr "Tiada direktori temp yang boleh ditulis."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Membongkar gagal -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Pek gagal -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Melebihi bilangan gaya maksimum."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Ralat semasa memindahkan fail: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Tidak dapat menetapkan kebenaran menulis."

#~ msgid "Error:"
#~ msgstr "Ralat:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr ""
#~ "Tema Anak Analisis Semasa <strong>%s</strong> telah ditetapkan semula."

#~ msgid "Update Key saved successfully."
#~ msgstr "Kunci Kemas kini berjaya disimpan."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Fail Tema Kanak-kanak berjaya diubah suai."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Tema Kanak-kanak <strong>%s</strong> telah berjaya dihasilkan."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Fon Web & CSS"

#~ msgid "Parent Styles"
#~ msgstr "Gaya Ibu Bapa"

#~ msgid "Child Styles"
#~ msgstr "Gaya Kanak-kanak"

#~ msgid "View Child Images"
#~ msgstr "Lihat Imej Kanak-kanak"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Gunakan <code> @import url ([path]); </code> untuk memautkan helaian gaya "
#~ "tambahan. Plugin ini menggunakan kata kunci <code> @import </code> untuk "
#~ "mengenal pasti dan menukarnya menjadi tag <code> &lt;link&gt;</code>. "
#~ "<strong> Contoh: </strong>"

#~ msgid "Save"
#~ msgstr "Jimat"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr ""
#~ "Memuat naik gambar dengan nama yang sama akan diganti dengan gambar yang "
#~ "ada."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Muat Naik Gambar Tema Kanak-kanak Baru"

#~ msgid "Delete Selected Images"
#~ msgstr "Padamkan Gambar Terpilih"

#~ msgid "Create a New Directory"
#~ msgstr "Buat Direktori Baru"

#~ msgid "New Directory will be created in"
#~ msgstr "Direktori Baru akan dibuat di"

#~ msgid "New Directory Name"
#~ msgstr "Nama Direktori Baru"

#~ msgid "Create a New File"
#~ msgstr "Buat Fail Baru"

#~ msgid "New File will be created in"
#~ msgstr "Fail Baru akan dibuat di"

#~ msgid "New File Name"
#~ msgstr "Nama Fail Baru"

#~ msgid "File Type Extension"
#~ msgstr "Sambungan Jenis Fail"

#~ msgid "Choose File Type"
#~ msgstr "Pilih Jenis Fail"

#~ msgid "PHP File"
#~ msgstr "Fail PHP"

#~ msgid "CSS File"
#~ msgstr "Fail CSS"

#~ msgid "JS File"
#~ msgstr "Fail JS"

#~ msgid "Text File"
#~ msgstr "Fail Teks"

#~ msgid "PHP File Type"
#~ msgstr "Jenis Fail PHP"

#~ msgid "Simple PHP File"
#~ msgstr "Fail PHP ringkas"

#~ msgid "Wordpress Template File"
#~ msgstr "Fail Templat Wordpress"

#~ msgid "Template Name"
#~ msgstr "Nama Templat"

#~ msgid "Parent Templates"
#~ msgstr "Templat Ibu Bapa"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Salin templat PHP dari tema induk dengan memilihnya di sini. Configurator "
#~ "mendefinisikan templat sebagai fail PHP Tema yang tidak mempunyai fungsi "
#~ "atau kelas PHP. Fail PHP yang lain tidak dapat diganti dengan selamat "
#~ "oleh tema anak."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "PERHATIAN: Sekiranya tema anak anda aktif, versi tema kanak-kanak fail "
#~ "akan digunakan dan bukannya ibu bapa sebaik sahaja disalin."

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "fail dihasilkan secara berasingan dan tidak dapat disalin di sini."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Salin Dipilih ke Tema Kanak-kanak"

#~ msgid " Child Theme Files "
#~ msgstr "Fail Tema Kanak-kanak"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Klik untuk mengedit fail menggunakan Tema Editor"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Padamkan templat tema kanak-kanak dengan memilihnya di sini."

#~ msgid "Delete Selected"
#~ msgstr "Padam Terpilih"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Tangkapan Skrin Tema Kanak-kanak"

#~ msgid "Upload New Screenshot"
#~ msgstr "Muat Naik Tangkapan Skrin Baru"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Tangkapan skrin tema mestilah nisbah 4: 3 (mis., 880 piksel x 660 piksel) "
#~ "JPG, PNG atau GIF. Ia akan dinamakan semula"

#~ msgid "Screenshot"
#~ msgstr "Tangkapan Skrin"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Muat Naik Gambar Tema Kanak-kanak Baru"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "Gambar tema berada di bawah direktori gambar dalam tema anak anda dan "
#~ "dimaksudkan untuk penggunaan gaya gaya sahaja. Gunakan Perpustakaan Media "
#~ "untuk gambar kandungan."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Pratonton Tema Kanak-kanak Semasa (Analisis semasa)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Pratonton Tema Kanak-kanak Semasa"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Eksport Tema Kanak-kanak sebagai Arkib Zip"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Klik \"Export Zip\" untuk menyimpan sandaran tema kanak-kanak yang sedang "
#~ "dimuat. Anda boleh mengeksport tema anda dari tab Ibu Bapa / Anak."

#~ msgid "Export Child Theme"
#~ msgstr "Eksport Tema Kanak-kanak"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Fail Tema Kanak-kanak berjaya disalin!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr "Fail yang anda cuba salin dari Parent Templates tidak ada"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Fail yang anda cuba salin dari Parent Templates sudah ada dalam fail Tema "
#~ "Kanak-kanak."

#~ msgid "Child "
#~ msgstr "Anak"

#~ msgid " and Parent "
#~ msgstr "dan Ibu Bapa"

#~ msgid " directories doesn't exist!"
#~ msgstr "direktori tidak wujud!"

#~ msgid " directory doesn't exist!"
#~ msgstr "direktori tidak wujud!"

#~ msgid "Parent "
#~ msgstr "Ibu bapa"

#~ msgid "Unknown error! "
#~ msgstr "Ralat tidak diketahui!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk menyalin fail!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Semua fail yang dipilih berjaya dihapuskan!"

#~ msgid " does not exists!"
#~ msgstr "tidak wujud!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Sambungan fail ini tidak dibenarkan dimuat naik!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Gambar berjaya dimuat naik!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Terdapat beberapa masalah dalam memuat naik gambar!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Sambungan fail ini tidak dibenarkan memuat naik sebagai tangkapan skrin "
#~ "oleh wordpress!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Fail berjaya dimuat naik!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Fail Tema Kanak-kanak tidak dapat diubah suai."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Fail berjaya dipadam!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk menghapus fail!"

#~ msgid "Entered directory name already exists"
#~ msgstr "Nama direktori yang dimasukkan sudah ada"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat direktori!"

#~ msgid "Wordpress template file created"
#~ msgstr "Fail templat Wordpress dibuat"

#~ msgid "Wordpress template file not created"
#~ msgstr "Fail templat Wordpress tidak dibuat"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP berjaya membuat fail"

#~ msgid "PHP file not created"
#~ msgstr "Fail PHP tidak dibuat"

#~ msgid " file not created"
#~ msgstr "fail tidak dibuat"

#~ msgid "Already exists"
#~ msgstr "Sudah wujud"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Anda tidak mempunyai kebenaran untuk membuat fail!"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr "buat, edit, muat naik, muat turun, hapus Fail Tema dan folder"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Folder bahasa telah diturunkan."

#~ msgid "Add single or multiple languages."
#~ msgstr "Tambahkan bahasa tunggal atau berbilang."

#~ msgid "Add single language file"
#~ msgstr "Tambahkan fail bahasa tunggal"

#~ msgid "Please click on language button."
#~ msgstr "Sila tekan butang bahasa."

#~ msgid "Add all languages zip folder"
#~ msgstr "Tambahkan folder zip semua bahasa"

#~ msgid "Zip Download"
#~ msgstr "Muat turun Zip"
languages/wp-file-manager-ceb.po000064400000061323147361034410012564 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 16:02+0530\n"
"PO-Revision-Date: 2022-03-03 11:05+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: ceb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Ang pag-backup sa mga tema malampuson nga napasig-uli."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Dili mabalik ang mga tema."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Malampuson nga napasig-uli ang mga backup nga gi-upload."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Dili mabalik ang mga upload."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Ang uban nga backup malampuson nga gipahiuli."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Dili mapasig-uli ang uban."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Malampuson nga nabalik ang backup sa mga plugin."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Dili mabalik ang mga plugins."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Malampuson nga nabalik ang backup sa database."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Tanan Nahuman"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Dili mabalik ang backup sa DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Malampusong natangtang ang mga backup!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Dili matangtang ang backup!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Ang pag-backup sa database gihimo sa petsa"

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Ang pag-backup sa mga plugin gihimo sa petsa"

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Ang pag-backup sa mga tema gihimo sa petsa"

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Ang mga pag-upload sa backup nahimo sa petsa"

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Ang uban nga pag-backup gihimo sa petsa"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Mga troso"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Wala'y nakit-an nga mga troso!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Walay gipili para sa backup"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Isyu sa Seguridad."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Gihimo ang backup sa database."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Dili makahimo og backup sa database."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Nahuman ang pag-backup sa mga plugin."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Napakyas ang pag-backup sa mga plugin."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Gihimo ang pag-backup sa mga tema."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Ang pag-backup sa mga tema napakyas."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Nahuman ang pag-upload sa backup."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Napakyas ang pag-upload sa backup."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Ang uban na-backup na."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Ang uban napakyas sa pag-backup."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP File Manager"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Mga Setting"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Mga gusto"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Sistema sa Kinaiyahan"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO "

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "I-backup/Iuli"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Pagpalit Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donate"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Wala ang file aron ma-download."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Dili balido nga Security Code."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Nawala ang backup id."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Nawala ang tipo sa parameter."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Nawala ang gikinahanglan nga mga parameter."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Sayop: Dili mabalik ang backup tungod kay ang backup sa database bug-at ang "
"gidak-on. Palihug sulayi nga dugangan ang Maximum nga gitugot nga gidak-on "
"gikan sa mga setting sa Preferences."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Pilia ang (mga) backup nga papason!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr ""
"Sigurado ka ba nga gusto nimong tangtangon ang pinili nga (mga) backup?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Nagdagan ang backup, palihug paghulat"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Ang pag-uli nagdagan, palihug paghulat"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Walay gipili para sa backup."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP File Manager - I-backup/Iuli"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Mga Opsyon sa Pag-backup:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Pag-backup sa Database"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Pag-backup sa mga File"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Mga plugin"

#: inc/backup.php:71
msgid "Themes"
msgstr "Mga tema"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Mga upload"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr ""
"Ang uban (Bisan unsang ubang mga direktoryo nga makita sa sulod sa wp-"
"content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Tabang karon"

#: inc/backup.php:89
msgid "Time now"
msgstr "Panahon na karon"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "KALAMPUSAN"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Malampuson nga natangtang ang backup."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "pagtangtang sa mga file"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Sigurado ka ba nga gusto nimong papason kini nga backup?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Pagkanselar"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Sa pagmatuod sa"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "I-ULI ANG MGA FILES"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Sigurado ka ba nga gusto nimo ibalik kini nga backup?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Katapusan nga Mensahe sa Log"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Ang backup dayag nga milampos ug karon kompleto na."

#: inc/backup.php:171
msgid "No log message"
msgstr "Walay log message"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Anaa nga (mga) backup"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Petsa sa Pag-backup"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Pag-backup sa datos (i-klik aron ma-download)"

#: inc/backup.php:190
msgid "Action"
msgstr "Aksyon"

#: inc/backup.php:210
msgid "Today"
msgstr "Karon"

#: inc/backup.php:239
msgid "Restore"
msgstr "Iuli"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Pagtangtang"

#: inc/backup.php:241
msgid "View Log"
msgstr "Tan-awa ang Log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Sa pagkakaron walay (mga) backup nga nakit-an."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Mga aksyon sa pinili nga (mga) backup"

#: inc/backup.php:251
msgid "Select All"
msgstr "Pilia ang Tanan"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Ayaw pagpili"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Ang mga backup nga file anaa sa ilawom"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Kontribusyon sa WP File Manager"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Hinumdomi: Kini ang mga screenshot sa demo. Palihug paliton ang File Manager "
"pro sa mga function sa Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Pag-klik aron Pagpalit PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Pagpalit PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "I-edit ang mga Log sa File"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Pag-download sa mga File Log"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Pag-upload sa mga File Log"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Gitipigan ang mga setting."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Isalikway kini nga pahibalo."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Wala ka makahimo ug bisan unsang mga pagbag-o aron maluwas."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Publikong Root Path"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path, mahimo nimong usbon sumala sa imong gusto."

#: inc/root.php:59
msgid "Default:"
msgstr "Default:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Palihug usba kini pag-ayo, ang sayup nga agianan mahimo’g magdala sa plugin "
"sa file manager nga mahulog."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "I-enable ang Basura?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Human ma-enable ang basura, ang imong mga file moadto sa trash folder."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Giunsa ang Pag-upload sa mga File sa Media Library?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Pagkahuman niini, ang tanan nga mga file moadto sa librarya sa media."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Pinakataas nga gitugot nga gidak-on sa panahon sa pag-backup sa database."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Palihog dugangi ang bili sa field kung nakadawat ka og mensahe sa sayop sa "
"panahon sa pag-backup sa pagpasig-uli."

#: inc/root.php:90
msgid "Save Changes"
msgstr "I-save ang mga Kausaban"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Mga Setting - Heneral"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Mubo nga sulat: Kini usa lamang ka screenshot sa demo. Aron makuha ang mga "
"setting palihug palita ang among pro nga bersyon."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Ang admin dinhi makahatag sa access sa mga papel sa user aron magamit ang "
"filemanager. Ang Admin mahimo magtakda sa Default Access Folder ug usab "
"kontrolon ang upload nga sukod sa filemanager."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Mga Setting - Code-editor"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Ang File Manager adunay editor sa code nga dunay daghang mga tema. Makapili "
"ka sa bisan unsang tema alang sa editor sa code. Ipakita kini sa dihang mag-"
"edit ka sa bisan unsang file. Mahimo usab nimo tugotan ang fullscreen mode "
"sa code editor."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "View sa Code-editor"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Mga Setting - Mga Pagpanghilawas sa Gumagamit"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Ang Admin mahimong makapugong sa mga lihok sa bisan kinsa nga tiggamit. Usba "
"usab ang mga file ug mga folder ug maka-set sa lain-laing mga lain-laing mga "
"folder sa mga dalan alang sa lain-laing mga tiggamit."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Mga Setting - Mga Gikinahanglan nga Mga Paghukom sa Tanan"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Ang Admin mahimong makapugong sa mga lihok sa bisan unsang userrole. Usba "
"usab ang mga file ug mga folder ug maka-set sa lain-laing mga lain-laing mga "
"folder sa mga dalan alang sa nagkalain-laing papel sa tiggamit."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Tagdumala sa File - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "PAGGAMIT:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Kini magpakita sa file manager sa atubangan nga tumoy. Mahimo nimong "
"kontrolon ang tanan nga mga setting gikan sa mga setting sa file manager. "
"Kini molihok sama sa backend WP File Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Kini magpakita sa file manager sa atubangan nga tumoy. Apan ang "
"Administrator lamang ang maka-access niini ug makontrol gikan sa mga setting "
"sa file manager."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parameter:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Gitugotan niini ang tanan nga mga tahas nga maka-access sa file manager sa "
"atubangan nga tumoy o Mahimo nimo nga yano nga paggamit alang sa partikular "
"nga mga tahas sa gumagamit sama sa gitugotan_roles=\"editor, awtor"
"\" (gibulag sa koma (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Dinhi ang \"pagsulay\" mao ang ngalan sa folder nga nahimutang sa root "
"directory, o mahimo nimong hatagan ang agianan alang sa mga sub folder sama "
"sa \"wp-content/plugins\". Kung biyaan nga blangko o walay sulod kini maka-"
"access sa tanan nga mga folder sa root directory. Default: Direktoryo sa "
"gamut"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"alang sa pag-access sa pagsulat sa mga permiso sa mga file, timan-i: tinuod/"
"sayup, default: bakak"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"alang sa pag-access sa pagtugot sa pagbasa sa mga file, timan-i: tinuod/"
"sayup, default: tinuod"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"kini magtago nga gihisgotan dinhi. Mubo nga sulat: gibulag sa comma(,). "
"Default: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"I-lock kini nga gihisgutan sa mga koma. mahimo nimong i-lock ang dugang sama "
"sa \".php,.css,.js\" ug uban pa. Default: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* para sa tanan nga mga operasyon ug aron tugotan ang pipila ka operasyon "
"mahimo nimong hisgutan ang ngalan sa operasyon sama sa, allowed_operations="
"\"upload,download\". Mubo nga sulat: gibulag sa comma(,). Default: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Listahan sa mga Operasyon sa File:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Paghimo og direktoryo o folder"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Paghimo file"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Usba ang ngalan sa usa ka file o folder"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Pagdoble o pag-clone sa usa ka folder o file"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Idikit ang usa ka file o folder"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Giwala"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Aron makahimo og archive o zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Kuhaa ang archive o gi-zip nga file"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopyaha ang mga file o folder"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Yano nga pagputol sa usa ka file o folder"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Usba ang usa ka file"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Pagtangtang o pagtangtang sa mga file ug folder"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Pag-download sa mga file"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Pag-upload og mga file"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Pangitaa ang mga butang"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Impormasyon sa file"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Tabang"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Gidili niini ang mga partikular nga tiggamit pinaagi lamang sa pagbutang "
"sa ilang mga id nga gibulag sa mga koma(,). Kung ang user kay Ban unya dili "
"sila maka-access sa wp file manager sa front end."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Pagtan-aw sa UI sa Filemanager. Default: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Gibag-o sa File o Paghimo format sa petsa. Default: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Pinulongan sa manedyer sa file. Default: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema sa File Manager. Default: Kahayag"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "File Manager - Sistema sa Kinaiyahan"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP version"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Ang kinadak-ang gidak-on sa pag-upload sa file (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Pag-upload sa gidak-on sa gidak-on sa upload (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Limitahan sa Memoryal (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Timeout (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Browser ug OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Usba ang Tema Dinhi:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Default"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Ngitngit"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Kahayag"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Gray"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Welcome sa File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Ganahan mi maghimo ug bag-ong mga higala! Mag-subscribe sa ubos ug misaad "
"kami nga ipadayon ka sa pinakabag-o nga bag-ong mga plugins, updates, nindot "
"nga mga deal ug pipila ka espesyal nga mga tanyag."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Palihug Isulod ang Unang Ngalan."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Palihug Isulod ang Apelyido."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Palihug Pagsulod sa Email Address."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "I-verify"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Dili Salamat"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Mga Termino sa Serbisyo"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Patakaran sa Pagkapribado"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Nagtipig..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK ra"

#~ msgid "Manage your WP files."
#~ msgstr "Pagdumala sa imong mga file sa WP."

#~ msgid "Extensions"
#~ msgstr "Mga extension"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Palihug pagtampo og pipila nga donasyon, aron mahimo ang plugin nga mas "
#~ "lig-on. Makabayad ka sa kantidad nga imong pilion."
languages/wp-file-manager-sv_SE.po000064400000233132147361034410013051 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Theme Editor Pro\n"
"POT-Creation-Date: 2022-02-28 11:46+0530\n"
"PO-Revision-Date: 2022-03-02 11:12+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sv_SE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Teman har återställts."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Det gick inte att återställa teman."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Uppladdningskopieringen har återställts."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Det gick inte att återställa uppladdningar."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Övriga säkerhetskopior har återställts."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Det går inte att återställa andra."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Plugin-säkerhetskopian har återställts."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Det gick inte att återställa plugins."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Databasbackup har återställts."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Klart"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Det gick inte att återställa DB-säkerhetskopiering."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Säkerhetskopior har tagits bort!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Det gick inte att ta bort säkerhetskopian!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Säkerhetskopiering av databas gjort på datum "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Plugin-säkerhetskopiering gjord på datum "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Teman säkerhetskopieras på datum "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Uppladdningar säkerhetskopierade på datum "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Andra säkerhetskopior gjorda på datum "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Loggar"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Inga loggar hittades!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Inget valt för säkerhetskopiering"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Säkerhetsproblem."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Databassäkerhetskopiering gjord."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Det gick inte att skapa säkerhetskopia av databasen."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Plugins backup klar."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Säkerhetskopiering av plugins misslyckades."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Säkerhetskopiering av plugins misslyckades."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Säkerhetskopiering av teman misslyckades."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Uppladdningar säkerhetskopiering klar."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Uppladdningssäkerhetskopiering misslyckades."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Övriga säkerhetskopieringar gjorda."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Andra säkerhetskopiering misslyckades."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP filhanterare"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "inställningar"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "preferenser"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Systemegenskaper"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kortkod - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Säkerhetskopiera/återställa"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Köp Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donera"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Filen finns inte att ladda ner."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Ogiltig säkerhetskod."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Säkerhetskopierings-id saknas."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametertyp saknas."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Saknade nödvändiga parametrar."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Fel: Det gick inte att återställa säkerhetskopian eftersom "
"databassäkerhetskopieringen är stor. Försök att öka den högsta tillåtna "
"storleken från inställningarna."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Välj säkerhetskopior att radera!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Är du säker på att du vill ta bort valda säkerhetskopior?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Säkerhetskopian körs, vänta"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Återställning körs, vänta"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Inget valt för säkerhetskopiering."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP filhanterare - Säkerhetskopiering / återställning"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Alternativ för säkerhetskopiering:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Säkerhetskopiering av databas"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Säkerhetskopiering av filer"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Teman"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Uppladdningar"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Övriga (Alla andra kataloger som finns i wp-innehåll)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Säkerhetskopiera nu"

#: inc/backup.php:89
msgid "Time now"
msgstr "Tid nu"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "FRAMGÅNG"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Säkerhetskopian har tagits bort."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "RADERA FILER"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Är du säker på att du vill ta bort den här säkerhetskopian?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Avbryt"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Bekräfta"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ÅTERSTÄLLA FILER"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Är du säker på att du vill återställa den här säkerhetskopian?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Senaste loggmeddelande"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Säkerhetskopian lyckades uppenbarligen och är nu klar."

#: inc/backup.php:171
msgid "No log message"
msgstr "Inget loggmeddelande"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Befintlig säkerhetskopia"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Säkerhetskopieringsdatum"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Backup data (klicka för att ladda ner)"

#: inc/backup.php:190
msgid "Action"
msgstr "Handling"

#: inc/backup.php:210
msgid "Today"
msgstr "I dag"

#: inc/backup.php:239
msgid "Restore"
msgstr "Återställ"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Radera"

#: inc/backup.php:241
msgid "View Log"
msgstr "Visa logg"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "För närvarande hittades inga säkerhetskopior."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Åtgärder vid valda säkerhetskopior"

#: inc/backup.php:251
msgid "Select All"
msgstr "Välj alla"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Välja bort"

#: inc/backup.php:254
msgid "Note:"
msgstr "Notera:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Säkerhetskopieringsfiler kommer att vara under"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP filhanterare-bidrag"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Obs! Dessa är demo-skärmdumpar. Köp File Manager pro till Logs-funktioner."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klicka för att köpa PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Köp PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Redigera filloggar"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Ladda ner filloggar"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Ladda upp filloggar"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Inställningar Sparade."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Ignorera denna notis."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Du har inte gjort några ändringar för att sparas."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Offentlig rotväg"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path, du kan ändra enligt ditt val."

#: inc/root.php:59
msgid "Default:"
msgstr "Standard:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Ändra detta noggrant, fel sökväg kan leda till att filhanteraren plugin går "
"ner."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Aktivera papperskorgen?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Efter att ha aktiverat papperskorgen går dina filer till papperskorgen."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Aktivera filer som överförs till mediebiblioteket?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Efter att ha aktiverat detta går alla filer till mediebiblioteket."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maximal tillåten storlek vid tidpunkten för återställning av "
"databassäkerhetskopiering."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Öka fältvärdet om du får ett felmeddelande vid tidpunkten för "
"säkerhetskopiering."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Spara ändringar"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Inställningar - Allmänt"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Obs: Detta är bara en demo-skärmdump. För att få inställningar, vänligen köp "
"vår pro-version."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Här kan admin ge åtkomst till användarroller för att använda filmanager. "
"Admin kan ställa in standardåtkomstmapp och även styra uppladdningsstorlek "
"för filhanteraren."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Inställningar - Kodredigerare"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager har en kodredigerare med flera teman. Du kan välja vilket tema "
"som helst för kodredigeraren. Den visas när du redigerar en fil. Du kan "
"också tillåta helskärmsläge för kodredigeraren."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kodredigerare Visa"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Inställningar - Användarbegränsningar"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Admin kan begränsa alla användares åtgärder. Dölj också filer och mappar och "
"kan ställa in olika - olika mappvägar för olika användare."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Inställningar - Användarrollbegränsningar"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Admin kan begränsa alla användarrollers åtgärder. Dölj också filer och "
"mappar och kan ställa in olika - olika mappvägar för olika användarroller."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Filhanteraren - kortkod"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ANVÄNDA SIG AV:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Det kommer att visa filhanteraren på gränssnittet. Du kan styra alla "
"inställningar från filhanterarens inställningar. Det kommer att fungera på "
"samma sätt som backend WP filhanterare."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Det kommer att visa filhanteraren på gränssnittet. Men bara administratören "
"kan komma åt det och styr från filhanterarens inställningar."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametrar:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Det kommer att tillåta alla roller att få åtkomst till filhanteraren i "
"användargränssnittet eller Du kan enkelt använda för särskilda "
"användarroller som allow_roles=\"editor,author\" (avgränsad med komma(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Här är \"test\" namnet på mappen som finns i rotkatalogen, eller så kan du "
"ge sökvägen till undermappar som \"wp-content/plugins\". Om det lämnas tomt "
"eller tomt kommer det åtkomst till alla mappar i rotkatalogen. Standard: "
"Rotkatalog"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"för åtkomst till skrivbehörigheter för filer, notera: true/false, standard: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "för åtkomst till läsbehörighet, notera: sant/falskt, standard: sant"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"det kommer att gömma sig som nämns här. Obs: avgränsad med kommatecken(,). "
"Standard: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Det kommer att låsa som nämns med kommatecken. du kan låsa fler som \".php,."
"css,.js\" etc. Standard: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* för alla operationer och för att tillåta vissa operationer kan du nämna "
"operationens namn som, allow_operations=\"ladda upp, ladda ner\". Obs: "
"avgränsad med kommatecken(,). Standard: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lista över filoperationer:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Skapa katalog eller mapp"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Skapa fil"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Byt namn på en fil eller mapp"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplicera eller klona en mapp eller fil"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Klistra in en fil eller mapp"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "förbjuda"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Att skapa ett arkiv eller zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extrahera arkiv eller zippad fil"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopiera filer eller mappar"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Enkelt klippa en fil eller mapp"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Redigera en fil"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Ta bort eller ta bort filer och mappar"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Ladda ner filer"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Ladda upp filer"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Sök efter saker"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Info om filen"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Hjälp"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"->  Det kommer att förbjuda vissa användare genom att bara sätta sina id "
"separerade med kommatecken (,). Om användaren är förbjuden kommer de inte "
"att få tillgång till wp-filhanteraren i frontend."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI View. Standard: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Filändrad eller Skapa datumformat. Standard: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Filhanterarens språk. Standard: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> File Manager Theme. Standard: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Filhanteraren - Systemegenskaper"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP-version"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maximal filöverföringsstorlek (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Lägg upp maximal filöverföringsstorlek (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Minnesgräns (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Timeout (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Webbläsare och operativsystem (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Ändra tema här:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Standard"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Mörk"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Ljus"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "grå"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Välkommen till File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Vi älskar att få nya vänner! Prenumerera nedan och vi lovar att\n"
"    hålla dig uppdaterad med våra senaste nya plugins, uppdateringar,\n"
"    fantastiska erbjudanden och några specialerbjudanden."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Vänligen ange förnamn."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Ange efternamn."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Ange e-postadress."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Kontrollera"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nej tack"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Användarvillkor"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Integritetspolicy"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Sparande..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Backup hittades inte!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Säkerhetskopieringen har tagits bort!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Inget valt för säkerhetskopiering</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Säkerhetsproblem. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Säkerhetskopiering av databas klar. </"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Det gick inte att skapa säkerhetskopia "
#~ "av databasen. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Säkerhetskopiering av insticksprogram. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Säkerhetskopiering av plugins "
#~ "misslyckades. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Säkerhetskopiering av teman är klar. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Säkerhetskopiering av teman "
#~ "misslyckades. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Uppladdning av säkerhetskopiering är "
#~ "klar. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Säkerhetskopiering av uppladdningar "
#~ "misslyckades. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Övriga säkerhetskopior är klara. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Övrig säkerhetskopiering misslyckades. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Allt klart </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Bild"

#~ msgid "of"
#~ msgstr "av"

#~ msgid "Close"
#~ msgstr "Stänga"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Den här funktionen kräver inbyggda ramar. Du har inaktiverat iframes "
#~ "eller så stöder inte din webbläsare dem."

#~ msgid "Theme Editor"
#~ msgstr "Temaredigerare"

#~ msgid "Plugin Editor"
#~ msgstr "Plugin Editor"

#~ msgid "Access Control"
#~ msgstr "Åtkomstkontroll"

#~ msgid "Notify Me"
#~ msgstr "Meddela mig"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "språket har laddats ner."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Det gick inte att ladda ned språkmappen."

#~ msgid "Security token expired!"
#~ msgstr "Säkerhetstoken har upphört!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "språket har laddats ner."

#~ msgid "Currently language "
#~ msgstr "För närvarande språk "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " inte tillgänglig. Klicka på länken för begärningsspråk."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr ""
#~ "Du har inte tillräckliga behörigheter för att redigera plugins för den "
#~ "här webbplatsen."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Det finns inga plugins installerade på den här webbplatsen."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Det finns inga teman installerade på denna webbplats."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">Ange mappnamn! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Ange filnamn! </p>"

#~ msgid "Open"
#~ msgstr "Öppna"

#~ msgid "Preview"
#~ msgstr "Förhandsvisning"

#~ msgid "Edit"
#~ msgstr "Redigera"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Är du säker på att du vill avbryta uppladdningen?"

#~ msgid "File renamed successfully."
#~ msgstr "Filen har fått nytt namn."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Är du säker på att du vill ta bort mappen?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Mappen har tagits bort."

#~ msgid "File deleted successfully."
#~ msgstr "Filen har tagits bort."

#~ msgid "Folder renamed successfully."
#~ msgstr "Mappen har bytt namn."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Inte tillåtet mer än 30 tecken.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Ogiltig Förfrågan!"

#~ msgid "No change in file!"
#~ msgstr "Ingen ändring i filen!"

#~ msgid "File saved successfully!"
#~ msgstr "Filen har sparats!"

#~ msgid "File not saved!"
#~ msgstr "Filen sparades inte!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Det går inte att verifiera säkerhetstoken!"

#~ msgid "Folder created successfully!"
#~ msgstr "Mappen skapades framgångsrikt!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Det här mappformatet får inte laddas upp med wordpress!"

#~ msgid "Folder already exists!"
#~ msgstr "Mappen finns redan!"

#~ msgid "File created successfully!"
#~ msgstr "Filen har lyckats!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Det här tillägget är inte tillåtet att skapa!"

#~ msgid "File already exists!"
#~ msgstr "Filen finns redan!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Ange ett giltigt filtillägg!"

#~ msgid "Folder does not exists!"
#~ msgstr "Mappen finns inte!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Mappen har tagits bort!"

#~ msgid "File deleted successfully!"
#~ msgstr "Filen har tagits bort!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "Det här filtillägget får inte laddas upp med wordpress!"

#~ msgid " already exists"
#~ msgstr " Existerar redan"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Filen har laddats upp: Uppladdad filsökväg är "

#~ msgid "No file selected"
#~ msgstr "Ingen fil vald"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Det gick inte att byta namn på filen! Försök igen."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Mappen har fått nytt namn!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Ange rätt mappnamn"

#~ msgid "How can we help?"
#~ msgstr "Hur kan vi hjälpa?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "Lärande resurser, professionellt stöd och experthjälp."

#~ msgid "Documentation"
#~ msgstr "Documentation"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Hitta svar snabbt från vår omfattande dokumentation."

#~ msgid "Learn More"
#~ msgstr "Läs mer"

#~ msgid "Contact Us"
#~ msgstr "Kontakta oss"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr "Skicka in en supportbiljett för svar på frågor du kan ha."

#~ msgid "Request a Feature"
#~ msgstr "Begär en funktion"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "Berätta vad du vill ha och lägg till det i vår färdplan."

#~ msgid "Tell us what you think!"
#~ msgstr "Berätta vad du tycker!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Betygsätt och ge oss en recension på Wordpress!"

#~ msgid "Leave a Review"
#~ msgstr "Lämna en recension"

#~ msgid "Update"
#~ msgstr "Uppdatering"

#~ msgid "Click here to install/update "
#~ msgstr "Klicka här för att installera / uppdatera "

#~ msgid " language translation for Theme Editor."
#~ msgstr " språköversättning för Theme Editor."

#~ msgid "Installed"
#~ msgstr "Installerad"

#~ msgid "English is the default language of Theme Editor. "
#~ msgstr "Engelska är standardspråket för Theme Editor."

#~ msgid "Request "
#~ msgstr "Begäran "

#~ msgid "Click here to request"
#~ msgstr "Klicka här för att begära"

#~ msgid "language translation for Theme Editor"
#~ msgstr "språköversättning för Theme Editor"

#~ msgid "Theme Editor Language:"
#~ msgstr "Theme Editor-språk:"

#~ msgid " language"
#~ msgstr " språk"

#~ msgid "Available languages"
#~ msgstr "Tillgängliga språk"

#~ msgid "Click here to download all available languages."
#~ msgstr "Klicka här för att ladda ner alla tillgängliga språk."

#~ msgid "Request a language"
#~ msgstr "Begär ett språk"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Berätta vilket språk du vill lägga till."

#~ msgid "Contact us"
#~ msgstr "Kontakta oss"

#~ msgid "Notifications"
#~ msgstr "Meddelanden"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> Obs! Det här är bara en skärmdump. Köp PRO-version för den här "
#~ "funktionen. </strong>"

#~ msgid "Permissions"
#~ msgstr "Behörigheter"

#~ msgid "Edit Plugin"
#~ msgstr "Redigera plugin"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Det här pluginet är för närvarande aktiverat! </strong> Varning: "
#~ "Att göra ändringar av aktiva plugins rekommenderas inte. Om dina "
#~ "ändringar orsakar ett allvarligt fel inaktiveras plugin automatiskt."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Redigering <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (aktiv)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Bläddring <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (inaktiv)"

#~ msgid "Update File"
#~ msgstr "Uppdatera fil"

#~ msgid "Download Plugin"
#~ msgstr "Ladda ner plugin"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Du måste göra den här filen skrivbar innan du kan spara dina ändringar. "
#~ "Se <a href=\"https://wordpress.org/support/article/changing-file-"
#~ "permissions/\" target=\"_blank\"> Codex </a> för mer information."

#~ msgid "Select plugin to edit:"
#~ msgstr "Välj plugin för att redigera:"

#~ msgid "Create Folder and File"
#~ msgstr "Skapa mapp och fil"

#~ msgid "Create"
#~ msgstr "Skapa"

#~ msgid "Remove Folder and File"
#~ msgstr "Ta bort mapp och fil"

#~ msgid "Remove "
#~ msgstr "Avlägsna"

#~ msgid "To"
#~ msgstr "Till"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Valfritt: Underkatalog"

#~ msgid "Choose File "
#~ msgstr "Välj FIL"

#~ msgid "No file Chosen "
#~ msgstr "Ingen fil vald "

#~ msgid "Create a New Folder: "
#~ msgstr "Skapa en ny mapp:"

#~ msgid "New folder will be created in: "
#~ msgstr "Ny mapp skapas i:"

#~ msgid "New Folder Name: "
#~ msgstr "Nytt mappnamn:"

#~ msgid "Create New Folder"
#~ msgstr "Skapa ny mapp"

#~ msgid "Create a New File: "
#~ msgstr "Skapa en ny fil:"

#~ msgid "New File will be created in: "
#~ msgstr "Ny fil skapas i:"

#~ msgid "New File Name: "
#~ msgstr "Nytt filnamn:"

#~ msgid "Create New File"
#~ msgstr "Skapa ny fil"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr "Varning: var försiktig innan du tar bort någon mapp eller fil."

#~ msgid "Current Theme Path: "
#~ msgstr "Nuvarande temabana:"

#~ msgid "Remove Folder: "
#~ msgstr "Ta bort mapp:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Mappsökväg som du vill ta bort: "

#~ msgid "Remove Folder"
#~ msgstr "Ta bort mapp"

#~ msgid "Remove File: "
#~ msgstr "Ta bort fil:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Filväg som du vill ta bort: "

#~ msgid "Remove File"
#~ msgstr "Ta bort fil"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Ange giltig e-postadress."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr "Varning: Var försiktig innan du byter namn på någon mapp eller fil."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Fil / mapp kommer att byta namn på:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Fil- / mappbyte:"

#~ msgid "Rename File"
#~ msgstr "Döp om fil"

#~ msgid "Follow us"
#~ msgstr "Följ oss"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Temaredaktör Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Temaredaktör Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Temaredaktör Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Theme Editor Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Theme Editor Youtube"

#~ msgid "Logo"
#~ msgstr "Logotyp"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Gå till ThemeEditor-webbplatsen"

#~ msgid "Theme Editor Links"
#~ msgstr "Temaredaktörslänkar"

#~ msgid "Child Theme"
#~ msgstr "Barn tema"

#~ msgid "Child Theme Permissions"
#~ msgstr "Barn temat tillstånd"

#~ msgid " is not available. Please click "
#~ msgstr " är inte tillgänglig. var god klicka "

#~ msgid "here"
#~ msgstr "här"

#~ msgid "to request language."
#~ msgstr "för att begära språk."

#~ msgid "Click"
#~ msgstr "Klick"

#~ msgid "to install "
#~ msgstr "att installera "

#~ msgid " language translation  for Theme Editor."
#~ msgstr " språköversättning för Theme Editor."

#~ msgid "Success: Settings Saved!"
#~ msgstr "Framgång: Inställningar sparade!"

#~ msgid "No changes have been made to save."
#~ msgstr "Inga ändringar har gjorts för att spara."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Aktivera temaredigerare för teman"

#~ msgid "Yes"
#~ msgstr "Ja"

#~ msgid "No"
#~ msgstr "Nej"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Detta aktiverar / inaktiverar temaredigeraren. <br/><strong class=\"defs"
#~ "\">Standard: </strong>Ja"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Inaktivera standard WordPress Theme Editor?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Detta aktiverar / inaktiverar standardtema-redigeraren. <br/><strong "
#~ "class=\"defs\">Standard: </strong>Ja"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Aktivera Plugin Editor för Plugin"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Detta aktiverar / inaktiverar plugin-redigeraren. <br/><strong class="
#~ "\"defs\">Standard: </strong>Ja"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Inaktivera standard WordPress Plugin Editor?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Detta aktiverar / inaktiverar standardinsticksprogrammet. <br/><strong "
#~ "class=\"defs\">Standard: </strong>Ja"

#~ msgid "Code Editor"
#~ msgstr "Kodredigerare"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Låter dig välja tema för temaredigerare. <br/><strong class=\"defs"
#~ "\">Standard: </strong>Kobolt"

#~ msgid "Edit Themes"
#~ msgstr "Redigera teman"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Detta tema är för närvarande aktiverat! </strong> Varning: Att "
#~ "göra ändringar i aktiva teman rekommenderas inte."

#~ msgid "Editing"
#~ msgstr "Redigering"

#~ msgid "Browsing"
#~ msgstr "Bläddring"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Uppdatera fil och försök att återaktivera"

#~ msgid "Download Theme"
#~ msgstr "Ladda ner tema"

#~ msgid "Select theme to edit:"
#~ msgstr "Välj tema att redigera:"

#~ msgid "Theme Files"
#~ msgstr "Temafiler"

#~ msgid "Choose File"
#~ msgstr "Välj FIL"

#~ msgid "No File Chosen"
#~ msgstr "Ingen fil vald"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr "Varning: Var försiktig innan du tar bort någon mapp eller fil."

#~ msgid "Child Theme Permission"
#~ msgstr "Barn tematillstånd"

#~ msgid "Translations"
#~ msgstr "Översättningar"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr "skapa, redigera, ladda upp, ladda ner, ta bort temafiler och mappar"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Du har inte behörighet att skapa ett nytt underordnat tema."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr ""
#~ "Du har inte behörighet att ändra konfigurera befintligt underordnat tema."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Du har inte behörighet att duplicera underordnat tema."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "Du har inte behörighet att komma till frågan / väljarmenyn."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "Du har inte behörighet att komma åt webbfonter och CSS-menyn."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Du har inte behörighet att kopiera filer."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Du har inte behörighet att ta bort underordnade filer."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "Du har inte behörighet att ladda upp en ny skärmdump."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Du har inte behörighet att ladda upp nya bilder."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Du har inte behörighet att radera bilder."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Du har inte behörighet att ladda ner filen."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Du har inte behörighet att skapa en ny katalog."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Du har inte behörighet att skapa en ny fil."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Du har inte behörighet att uppdatera filen!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Du har inte behörighet att skapa mapp!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Du har inte behörighet att radera mapp!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Du har inte behörighet att radera fil!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Du har inte behörighet att ladda upp filen!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Behörigheter för barntema sparades."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "Det görs inga ändringar i behörigheterna för underordnade temat som ska "
#~ "sparas."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Behörighetsmeddelande för barntema sparades."

#~ msgid "Users"
#~ msgstr "Användare"

#~ msgid "Create New Child Theme"
#~ msgstr "Skapa nytt barntema"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Konfigurera ett befintligt barns teman"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Duplicera teman för barn"

#~ msgid "Query/ Selector"
#~ msgstr "Fråga / väljare"

#~ msgid "Web/font"
#~ msgstr "Webb / teckensnitt"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Kopiera fil Föräldratema till barntema"

#~ msgid "Deleted Child Files"
#~ msgstr "Borttagna barnfiler"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Ladda upp ny skärmdump"

#~ msgid "Upload New Images"
#~ msgstr "Ladda upp nya bilder"

#~ msgid "Deleted Images "
#~ msgstr "Borttagna bilder"

#~ msgid "Download Images"
#~ msgstr "Ladda ner bilder"

#~ msgid "Create New Directory"
#~ msgstr "Skapa ny katalog"

#~ msgid "Create New Files"
#~ msgstr "Skapa nya filer"

#~ msgid "Export Theme"
#~ msgstr "Exportera tema"

#~ msgid "User Roles"
#~ msgstr "Användarroller"

#~ msgid "Query/ Seletor"
#~ msgstr "Fråga / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Borttagna bilder"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Meddelande om tillstånd för barntema"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Du har inte behörighet att skapa ett nytt barntema."

#~ msgid "Query/Selector"
#~ msgstr "Fråga / väljare"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "Du har inte behörighet att komma till frågan / väljarmenyn."

#~ msgid " Web/font"
#~ msgstr "Webb / teckensnitt"

#~ msgid " Export Theme"
#~ msgstr "Exportera tema"

#~ msgid "Save Child Theme Message"
#~ msgstr "Meddelande om tillstånd för barntema"

#~ msgid "Please select atleast one image."
#~ msgstr "Välj minst en bild."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Du har inte behörighet att ta bort bilder."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Du har inte behörighet att ladda upp nya bilder."

#~ msgid "You don't have the permission to download."
#~ msgstr "Du har inte behörighet att ladda ner."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Du har inte behörighet att skapa en ny katalog."

#~ msgid "Please choose file type."
#~ msgstr "Välj filtyp."

#~ msgid "Please enter file name."
#~ msgstr "Ange filnamn."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Du har inte behörighet att skapa en ny fil."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr "Är du säker på att kopiera överordnade filer till underordnat tema?"

#~ msgid "Please select file(s)."
#~ msgstr "Välj fil (er)."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Du har inte behörighet att kopiera filer."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Är du säker på att du vill ta bort valda filer?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Du har inte behörighet att ta bort underordnade filer."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "Du har inte behörighet att ta bort underordnade filer."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Du har inte behörighet att exportera tema."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "Du har inte behörighet att komma till menyn Fråga / väljare."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Du har inte behörighet att komma åt menyn Web Fonts & CSS."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Nuvarande analystema:"

#~ msgid "Preview Theme"
#~ msgstr "Förhandsgranska tema"

#~ msgid "Parent Themes"
#~ msgstr "Överordnade teman"

#~ msgid "Child Themes"
#~ msgstr "Barnteman"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Fel: Inställningar sparades inte!"

#~ msgid "Email List"
#~ msgstr "E-postlista"

#~ msgid "Email Address"
#~ msgstr "E-postadress"

#~ msgid "Enter Email"
#~ msgstr "Skriv in e-mail"

#~ msgid "Add More"
#~ msgstr "Lägga till mer"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Den här adressen används för anmälningssyfte, som teman / plugin-anmälan."

#~ msgid "Theme Notification"
#~ msgstr "Tema anmälan"

#~ msgid "Notify on file update"
#~ msgstr "Meddela om filuppdatering"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Avisering om redigering eller uppdatering av temafiler. <br/> <strong> "
#~ "Standard: </strong> Ja"

#~ msgid "Notify on files download"
#~ msgstr "Meddela vid nedladdning av filer"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Meddelande om nedladdning av temafilredigering. <br/> <strong> Standard: "
#~ "</strong> Ja"

#~ msgid "Notify on theme download"
#~ msgstr "Meddela vid nedladdning av tema"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Meddelande om nedladdning av tema. <br/> <strong> Standard: </strong> Ja"

#~ msgid "Notify on files upload"
#~ msgstr "Meddela vid uppladdning av filer"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Meddelande om filer som laddas upp i tema. <br/> <strong> Standard: </"
#~ "strong> Ja"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Meddela vid skapa ny fil / mapp"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Meddelande om att skapa en ny fil / mapp i temat. <br/> <strong> "
#~ "Standard: </strong> Ja"

#~ msgid "Notify on delete"
#~ msgstr "Meddela vid radering"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Meddela vid radering av alla filer och mappar i teman. <br/> <strong> "
#~ "Standard: </strong> Ja"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Meddela om skapa tema för nytt barn"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Meddela om teman Skapa nya barn. <br/> <strong> Standard: </strong> Ja"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Meddela vid konfigurera teman för befintligt barn"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Meddela vid konfigurera ett befintligt barns teman. <br/> <strong> "
#~ "Standard: </strong> Ja"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Meddela om Duplicate Child-teman"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Meddela om Konfigurera teman för befintliga barn. <br/> <strong> "
#~ "Standard: </strong> Ja"

#~ msgid "Plugin Notification"
#~ msgstr "Meddelande om plugin"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Meddelande om redigering eller uppdatering av temafiler. <br/> <strong> "
#~ "Standard: </strong> ja"

#~ msgid "Notify on Plugin download"
#~ msgstr "Meddela vid nedladdning av plugin"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Meddelande om nedladdning av plugin. <br/> <strong> Standard: </strong> Ja"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Meddelande om filöverföring i tema. <br/> <strong> Standard: </strong> Ja"

#~ msgid "Permission saved successfully."
#~ msgstr "Behörigheten sparades."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr ""
#~ "hoppsan! Behörigheten kan inte sparas eftersom du inte har gjort några "
#~ "ändringar."

#~ msgid "Allowed User Roles"
#~ msgstr "Tillåtna användarroller"

#~ msgid "Update theme files"
#~ msgstr "Uppdatera temafiler"

#~ msgid "Create new theme files and folders"
#~ msgstr "Skapa nya temafiler och mappar"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Ladda upp nya temafiler och mappar"

#~ msgid "Download theme files"
#~ msgstr "Ladda ner temafiler"

#~ msgid "Download theme"
#~ msgstr "Ladda ner tema"

#~ msgid "Update plugin files"
#~ msgstr "Uppdatera plugin-filer"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Uppdatera plugin-filer"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Ladda upp nya plugin-filer och mappar"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Ta bort plugin-filer och mappar"

#~ msgid "Download plugin files"
#~ msgstr "Ladda ner plugin-filer"

#~ msgid "Download plugin"
#~ msgstr "Ladda ner plugin"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Theme Editor PRO - Lägg till din beställningsinformation nedan. Om inte "
#~ "<a href=\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank"
#~ "\" class=\"page-title-action button button-primary\" title=\"click to buy "
#~ "Licence Key\">Köp nu </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "BESTÄLLNINGSID (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Ange order-ID"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Kontrollera din e-post för beställnings-ID."

#~ msgid "LICENCE KEY *"
#~ msgstr "LICENSNYCKEL *"

#~ msgid "Enter License Key"
#~ msgstr "Ange licensnyckel"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Kontrollera din e-post för licensnyckel."

#~ msgid "Click To Verify"
#~ msgstr "Klicka för att verifiera"

#~ msgid "URL/None"
#~ msgstr "URL / Ingen"

#~ msgid "Origin"
#~ msgstr "Ursprung"

#~ msgid "Color 1"
#~ msgstr "Färg 1"

#~ msgid "Color 2"
#~ msgstr "Färg 2"

#~ msgid "Width/None"
#~ msgstr "Bredd / Ingen"

#~ msgid "Style"
#~ msgstr "Style"

#~ msgid "Color"
#~ msgstr "Färg"

#~ msgid "Configure Child Theme"
#~ msgstr "Konfigurera barntema"

#~ msgid "Duplicate Child theme"
#~ msgstr "Duplicera teman för barn"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Efter analysen fungerar det här temat bra. Du kan använda detta som ditt "
#~ "barns tema."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr "Efter att ha analyserat verkar detta barns tema fungera korrekt."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Detta tema laddar ytterligare formatmallar efter filen <code> style.css </"
#~ "code>:"

#~ msgid "The theme"
#~ msgstr "Temanamn"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr ""
#~ "kunde inte analyseras eftersom förhandsgranskningen inte renderades "
#~ "korrekt"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Detta underordnade tema har inte konfigurerats för detta plugin"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Configurator gör betydande ändringar i underordnat tema, inklusive "
#~ "formatmalländringar och ytterligare php-funktioner. Överväg att använda "
#~ "alternativet DUPLICATE-temat för barn (se steg 1 ovan) och behålla "
#~ "originalet som en säkerhetskopia."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "All webbfonts / css-information har sparats."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Ange värde för webbfonts / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Du har inte behörighet att uppdatera webbfonts / css."

#~ msgid "All information saved successfully."
#~ msgstr "All information sparades framgångsrikt."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Är du säker på att du vill återställa? Detta kommer att förstöra allt "
#~ "arbete du har gjort i Configurator."

#~ msgid "Selectors"
#~ msgstr "Väljare"

#~ msgid "Edit Selector"
#~ msgstr "Redigera väljaren"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "Stilarket kan inte visas."

#~ msgid "(Child Only)"
#~ msgstr "(Endast barn)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Ange ett giltigt barntema."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Ange ett giltigt barntema namn."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> existerar. Ange ett annat barns tema"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "Sidan kunde inte laddas korrekt."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Motstridiga eller inaktuella jQuery-bibliotek laddades med ett annat "
#~ "plugin:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr "Att avaktivera eller ersätta plugins kan lösa problemet."

#~ msgid "No result found for the selection."
#~ msgstr "Inget resultat hittades för valet."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sVarför ser jag detta?%s"

#~ msgid "Parent / Child"
#~ msgstr "Förälder / barn"

#~ msgid "Select an action:"
#~ msgstr "Välj en åtgärd:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Skapa ett nytt barntema"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Konfigurera ett befintligt barnetema"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Duplicera ett befintligt barnetema"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Välj ett överordnat tema:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Analysera överordnat tema"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Klicka på \"Analysera\" för att fastställa beroenden för formatmallar och "
#~ "andra potentiella problem."

#~ msgid "Analyze"
#~ msgstr "Analysera"

#~ msgid "Select a Child Theme:"
#~ msgstr "Välj ett barntema:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Analysera barnens tema"

#~ msgid "Name the new theme directory:"
#~ msgstr "Namnge den nya temakatalogen:"

#~ msgid "Directory Name"
#~ msgstr "Katalognamn"

#~ msgid "NOTE:"
#~ msgstr "NOTERA:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Detta är INTE namnet på Child Theme. Du kan anpassa namnet, beskrivningen "
#~ "etc. i steg 7 nedan."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Verifiera barnkatalogen:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Endast för verifiering (du kan inte ändra katalogen för ett befintligt "
#~ "barnetema)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Välj var du vill spara nya stilar:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Primär stilark (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Spara nya anpassade formatmallar direkt till det primära formatmallen för "
#~ "underordnat tema och ersätt de befintliga värdena. Det primära "
#~ "formatmallen laddas i den ordning som temat har ställt in."

#~ msgid "Separate Stylesheet"
#~ msgstr "Separat stilark"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Spara nya anpassade stilar i ett separat formatmall och kombinera "
#~ "eventuella befintliga underordnade temastilar med föräldern för att bilda "
#~ "baslinjen. Välj det här alternativet om du vill behålla befintliga "
#~ "underordnade temastilar istället för att skriva över dem. Med det här "
#~ "alternativet kan du också anpassa formatmallar som laddas efter det "
#~ "primära formatmallen."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Välj hantering av överordnat tema:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Använd WordPress-stilkön."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "Låt Configurator bestämma lämpliga åtgärder och beroenden och uppdatera "
#~ "funktionsfilen automatiskt."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "Använd <code> @import </code> i den underordnade teman."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Använd endast det här alternativet om det överordnade formatmallen inte "
#~ "kan laddas med WordPress-stilkön. Användning av <code> @import </code> "
#~ "rekommenderas inte."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Lägg inte till någon överordnad stilarkhantering."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Välj det här alternativet om det här temat redan hanterar formatmallen "
#~ "för det överordnade temat eller om överordnat temas <code> style.css </"
#~ "code> -fil inte används för dess utseende."

#~ msgid "Advanced handling options"
#~ msgstr "Avancerade hanteringsalternativ"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Ignorera överordnade temastilar."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Välj det här alternativet om det här temat redan hanterar formatmallen "
#~ "för det överordnade temat eller om överordnat temas style.css-fil inte "
#~ "används för att se ut."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Reparera rubrikmallen i underordnat tema."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Låt Configurator (försöka) lösa eventuella problem med stilarket som "
#~ "anges ovan. Detta kan lösa många, men inte alla, vanliga problem."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Ta bort beroenden för formatmallar"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Som standard bevaras ordningen på formatmallar som laddas före det "
#~ "primära formatmallen genom att behandla dem som beroenden. I vissa fall "
#~ "upptäcks formatmallar i förhandsgranskningen som inte används på hela "
#~ "webbplatsen. Om det behövs kan beroendet tas bort för specifika "
#~ "formatmallar nedan."

#~ msgid "Child Theme Name"
#~ msgstr "Namn på barntema"

#~ msgid "Theme Name"
#~ msgstr "Temanamn"

#~ msgid "Theme Website"
#~ msgstr "Temawebbplats"

#~ msgid "Author"
#~ msgstr "Författare"

#~ msgid "Author Website"
#~ msgstr "Författarens webbplats"

#~ msgid "Theme Description"
#~ msgstr "Temabeskrivning"

#~ msgid "Description"
#~ msgstr "Beskrivning"

#~ msgid "Tags"
#~ msgstr "Taggar"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Kopiera menyer, widgetar och andra anpassningsinställningar från "
#~ "föräldratemat till barntema:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Det här alternativet ersätter barntemas befintliga menyer, widgets och "
#~ "andra anpassningsinställningar med de från överordnat tema. Du behöver "
#~ "bara använda det här alternativet första gången du konfigurerar ett "
#~ "barntema."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Klicka för att köra Configurator:"

#~ msgid "Query / Selector"
#~ msgstr "Fråga / väljare"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "För att hitta specifika väljare i @media-frågeblock, välj först frågan "
#~ "och sedan väljaren. Använd \"bas\" -frågan för att redigera alla andra "
#~ "väljare."

#~ msgid "@media Query"
#~ msgstr "@media Fråga"

#~ msgid "( or \"base\" )"
#~ msgstr "(eller \"bas\")"

#~ msgid "Selector"
#~ msgstr "Väljare"

#~ msgid "Query/Selector Action"
#~ msgstr "Fråga / väljaråtgärd"

#~ msgid "Save Child Values"
#~ msgstr "Spara barnvärden"

#~ msgid "Delete Child Values"
#~ msgstr "Ta bort underordnade värden"

#~ msgid "Property"
#~ msgstr "egendom"

#~ msgid "Baseline Value"
#~ msgstr "Basvärde"

#~ msgid "Child Value"
#~ msgstr "Barnvärde"

#~ msgid "error"
#~ msgstr "fel"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "Du har inte behörighet att konfigurera underordnade teman."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s finns inte. Välj ett giltigt överordnat tema."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Funktionsfilen krävs och kan inte raderas."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Välj ett giltigt överordnat tema."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Välj ett giltigt barntema."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Ange ett giltigt katalogtema för barntema."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr "<strong>%s</strong> existerar. Ange ett annat namn för barntema."

#~ msgid "Your theme directories are not writable."
#~ msgstr "Dina temakataloger är inte skrivbara."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Det gick inte att uppgradera underordnat tema"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "Ditt formatmall är inte skrivbart."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "En avslutande PHP-tagg upptäcktes i Child-temafunktionsfilen så "
#~ "alternativet \"Parent Stylesheet Handling\" konfigurerades inte. Att "
#~ "stänga PHP i slutet av filen avskräcks eftersom det kan orsaka för tidiga "
#~ "HTTP-rubriker. Redigera <code> functions.php </code> för att ta bort den "
#~ "slutliga <code>?&gt;</code> -taggen och klicka på \"Generate / Rebuild "
#~ "Child Theme Files\" igen."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Det gick inte att kopiera filen: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Det gick inte att ta bort %s-filen."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "kunde inte kopiera %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "ogiltig dir: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Det uppstod fel vid återställning av behörigheter."

#~ msgid "Could not upload file."
#~ msgstr "Det gick inte att ladda upp filen."

#~ msgid "Invalid theme root directory."
#~ msgstr "Ogiltig rotkatalog för tema."

#~ msgid "No writable temp directory."
#~ msgstr "Ingen skrivbar tempkatalog."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Uppackningen misslyckades -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Pack misslyckades -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Maximalt antal format överskridits."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Fel vid flytt av fil: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Det gick inte att ställa in skrivbehörigheter."

#~ msgid "Error:"
#~ msgstr "Fel:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr "Nuvarande analysbarntema <strong>%s</strong> har återställts."

#~ msgid "Update Key saved successfully."
#~ msgstr "Uppdateringsnyckeln sparades."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Barnens temafiler har ändrats."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Barntema <strong>%s</strong> har genererats framgångsrikt."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Webbteckensnitt och CSS"

#~ msgid "Parent Styles"
#~ msgstr "Föräldrastilar"

#~ msgid "Child Styles"
#~ msgstr "Barnstilar"

#~ msgid "View Child Images"
#~ msgstr "Visa barnbilder"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Använd <code> @import url ([path]); </code> för att länka ytterligare "
#~ "formatmallar. Detta plugin använder nyckelordet <code> @import </code> "
#~ "för att identifiera dem och konvertera dem till <code>&lt;link&gt;</code> "
#~ "-taggar. <strong> Exempel: </strong>"

#~ msgid "Save"
#~ msgstr "Spara"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr ""
#~ "Uppladdning av bild med samma namn kommer att ersättas med befintlig bild."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Ladda upp en ny barntema"

#~ msgid "Delete Selected Images"
#~ msgstr "Radera valda bilder"

#~ msgid "Create a New Directory"
#~ msgstr "Skapa en ny katalog"

#~ msgid "New Directory will be created in"
#~ msgstr "Ny katalog skapas i"

#~ msgid "New Directory Name"
#~ msgstr "Nytt katalognamn"

#~ msgid "Create a New File"
#~ msgstr "Skapa en ny fil"

#~ msgid "New File will be created in"
#~ msgstr "Ny fil skapas i"

#~ msgid "New File Name"
#~ msgstr "Nytt filnamn"

#~ msgid "File Type Extension"
#~ msgstr "Filtypstillägg"

#~ msgid "Choose File Type"
#~ msgstr "Välj filtyp"

#~ msgid "PHP File"
#~ msgstr "PHP-fil"

#~ msgid "CSS File"
#~ msgstr "CSS-fil"

#~ msgid "JS File"
#~ msgstr "JS-fil"

#~ msgid "Text File"
#~ msgstr "Textfil"

#~ msgid "PHP File Type"
#~ msgstr "PHP-filtyp"

#~ msgid "Simple PHP File"
#~ msgstr "Enkel PHP-fil"

#~ msgid "Wordpress Template File"
#~ msgstr "Wordpress mallfil"

#~ msgid "Template Name"
#~ msgstr "Mallnamn"

#~ msgid "Parent Templates"
#~ msgstr "Överordnade mallar"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Kopiera PHP-mallar från det överordnade temat genom att välja dem här. "
#~ "Configurator definierar en mall som en temaphp-fil utan PHP-funktioner "
#~ "eller klasser. Andra PHP-filer kan inte säkert åsidosättas av ett "
#~ "underordnat tema."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "FÖRSIKTIGHET: Om ditt barns tema är aktivt, kommer barnets tematversion "
#~ "av filen att användas istället för föräldern omedelbart efter att den har "
#~ "kopierats."

#~ msgid "The "
#~ msgstr "De"

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "filen genereras separat och kan inte kopieras här."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Kopiera Selected to Child Theme"

#~ msgid " Child Theme Files "
#~ msgstr "Barn temafiler"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Klicka för att redigera filer med temaredigeraren"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Ta bort underordnade temamallar genom att välja dem här."

#~ msgid "Delete Selected"
#~ msgstr "Radera valda"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Skärmdump för temat för barn"

#~ msgid "Upload New Screenshot"
#~ msgstr "Ladda upp ny skärmdump"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Temaskärmbilden ska vara i förhållandet 4: 3 (t.ex. 880 pixlar x 660 "
#~ "pixlar) JPG, PNG eller GIF. Det kommer att döpas om"

#~ msgid "Screenshot"
#~ msgstr "Skärmdump"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Ladda upp en ny barntema"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "Temabilder finns under bildkatalogen i ditt barns tema och är endast "
#~ "avsedda för stilark. Använd mediebiblioteket för innehållsbilder."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Förhandsgranska aktuellt barns tema (aktuell analys)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Förhandsgranska aktuellt barntema"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Exportera barntema som zip-arkiv"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Klicka på \"Exportera zip\" för att spara en säkerhetskopia av det för "
#~ "närvarande laddade underordnade temat. Du kan exportera något av dina "
#~ "teman från fliken Förälder / barn."

#~ msgid "Export Child Theme"
#~ msgstr "Exportera barntema"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Barnens temafil (er) kopierades framgångsrikt!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr "Filen som du försöker kopiera från överordnade mallar finns inte"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Filen som du försöker kopiera från överordnade mallar finns redan i "
#~ "underordnade temafiler."

#~ msgid "Child "
#~ msgstr "Barn"

#~ msgid " and Parent "
#~ msgstr "och förälder"

#~ msgid " directories doesn't exist!"
#~ msgstr "kataloger finns inte!"

#~ msgid " directory doesn't exist!"
#~ msgstr "katalog finns inte!"

#~ msgid "Parent "
#~ msgstr "Förälder"

#~ msgid "Unknown error! "
#~ msgstr "Okänt fel!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Du har inte behörighet att kopiera filerna!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Alla valda filer har tagits bort!"

#~ msgid " does not exists!"
#~ msgstr "existerar inte!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Det här filtillägget får inte laddas upp!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Bilden har laddats upp!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Det finns något problem med att ladda upp bild!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Det här filtillägget får inte laddas upp som skärmdump av wordpress!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Filen har laddats upp!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Barntema-filer kan inte ändras."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Fil (er) har tagits bort!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Du har inte behörighet att radera filer!"

#~ msgid "Entered directory name already exists"
#~ msgstr "Det angivna katalognamnet finns redan"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Du har inte behörighet att skapa katalog!"

#~ msgid "Wordpress template file created"
#~ msgstr "Wordpress-mallfil skapad"

#~ msgid "Wordpress template file not created"
#~ msgstr "Wordpress-mallfilen har inte skapats"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP-skapad fil lyckades"

#~ msgid "PHP file not created"
#~ msgstr "PHP-fil har inte skapats"

#~ msgid " file not created"
#~ msgstr "filen har inte skapats"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Du har inte behörighet att skapa fil!"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Språkmappen har nedlagts."

#~ msgid "Add single or multiple languages."
#~ msgstr "Lägg till enstaka eller flera språk."

#~ msgid "Add single language file"
#~ msgstr "Lägg till en språkfil"

#~ msgid "Please click on language button."
#~ msgstr "Klicka på språkknappen."

#~ msgid "Add all languages zip folder"
#~ msgstr "Lägg till alla språk zip-mappen"

#~ msgid "Zip Download"
#~ msgstr "Zip-nedladdning"
languages/wp-file-manager-bg_BG.po000064400000104161147361034410012771 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 15:28+0530\n"
"PO-Revision-Date: 2022-02-28 14:54+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: bg_BG\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Архивирането на теми се възстанови успешно."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Темите не могат да бъдат възстановени."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Архивите за качване са възстановени успешно."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Качванията не могат да бъдат възстановени."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Други резервни копия са възстановени успешно."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Не може да се възстановят други."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Архивирането на приставки е възстановено успешно."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Приставките не могат да бъдат възстановени."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Архивирането на база данни е възстановено успешно."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Готово"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Не може да се възстанови резервно копие на DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Архивите бяха премахнати успешно!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Архивът не може да бъде премахнат!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Архивиране на базата данни направено на дата "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Архивирането на приставки е направено на дата "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Архивирането на теми е направено на дата "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Качва резервно копие, направено на дата "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Други архивиране направено на дата "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Дневници"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Няма намерени дневници!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Нищо не е избрано за архивиране"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Проблем със сигурността."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Архивирането на базата данни е извършено."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Не може да се създаде резервно копие на базата данни."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Архивирането на плъгините е извършено."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Архивирането на плъгини не бе успешно."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Архивирането на теми е направено."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Архивирането на теми не бе успешно."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Архивирането на качванията е извършено."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Архивирането на качванията не бе успешно."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Други архивиране е направено."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Архивирането на други бе неуспешно."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP файлов мениджър"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Настройки"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Предпочитания"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Системни свойства"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Кратък код - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Архивиране/Възстановяване"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Купете Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Дарете"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Файлът не съществува за изтегляне."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Невалиден код за сигурност."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Липсва резервен идентификационен номер."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Липсва тип параметър."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Липсват необходимите параметри."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Грешка: Не може да се възстанови архивирането, тъй като архивирането на "
"базата данни е голямо по размер. Моля, опитайте да увеличите максималния "
"разрешен размер от настройките за предпочитания."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Изберете резервно(и) копие(и) за изтриване!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Наистина ли искате да премахнете избраните архиви?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Архивирането работи, моля, изчакайте"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Възстановяването тече, моля, изчакайте"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Нищо не е избрано за архивиране."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP файлов мениджър - Архивиране / Възстановяване"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Опции за архивиране:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Архивиране на база данни"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Архивиране на файлове"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Приставки"

#: inc/backup.php:71
msgid "Themes"
msgstr "Теми"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Качвания"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Други (Всички други директории, намерени във wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Архивиране сега"

#: inc/backup.php:89
msgid "Time now"
msgstr "Време сега"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "УСПЕХ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Архивирането е успешно изтрито."

#: inc/backup.php:102
msgid "Ok"
msgstr "Добре"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ИЗТРИЙ ФАЙЛОВЕТЕ"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Наистина ли искате да изтриете този архив?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Отказ"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Потвърдете"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ВЪЗСТАНОВЯВАНЕ НА ФАЙЛОВЕ"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Наистина ли искате да възстановите това архивиране?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Последно съобщение в дневника"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Архивирането очевидно е успяло и вече е завършено."

#: inc/backup.php:171
msgid "No log message"
msgstr "Няма регистрационно съобщение"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Съществуващи резервни копия"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Дата на архивиране"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Архивиране на данни (щракнете за изтегляне)"

#: inc/backup.php:190
msgid "Action"
msgstr "Действие"

#: inc/backup.php:210
msgid "Today"
msgstr "Днес"

#: inc/backup.php:239
msgid "Restore"
msgstr "Възстанови"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Изтрий"

#: inc/backup.php:241
msgid "View Log"
msgstr "Преглед на дневника"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Понастоящем не са намерени резервни копия."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Действия при избрани архиви"

#: inc/backup.php:251
msgid "Select All"
msgstr "Избери всички"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Премахнете избора"

#: inc/backup.php:254
msgid "Note:"
msgstr "Забележка:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Файловете за архивиране ще бъдат под"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Принос на WP файлов мениджър"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Забележка: Това са демонстрационни екранни снимки. Моля, купете File Manager "
"pro за функции Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Кликнете, за да купите PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Купете PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Редактиране на регистрационни файлове"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Изтеглете файлове с файлове"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Качване на файлове от дневници"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Настройките са запазени."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Отхвърлете това известие."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Не сте направили промени, които да бъдат запазени."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Обществен корен път"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Основен път на файловия мениджър, можете да промените според вашия избор."

#: inc/root.php:59
msgid "Default:"
msgstr "По подразбиране:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Моля, променете това внимателно, грешният път може да доведе до слизане на "
"приставката за файлов мениджър."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Активиране на кошчето?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"След активиране на кошчето вашите файлове ще отидат в папката за боклук."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Активиране на качването на файлове в медийната библиотека?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"След като активирате това, всички файлове ще отидат в медийната библиотека."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Максимално позволен размер към момента на възстановяване на резервно копие "
"на базата данни."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Моля, увеличете стойността на полето, ако получавате съобщение за грешка по "
"време на възстановяване на резервно копие."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Запазите промените"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Настройки - Общи"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Забележка: Това е само демонстрационна екранна снимка. За да получите "
"настройки, моля, купете нашата професионална версия."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Тук администраторът може да даде достъп до потребителски роли, за да "
"използва файловия мениджър. Администраторът може да зададе папка по "
"подразбиране и да контролира размера на качването на файловия мениджър."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Настройки - редактор на код"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager има редактор на код с множество теми. Можете да изберете всяка "
"тема за редактор на код. Той ще се покаже, когато редактирате всеки файл. "
"Също така можете да разрешите цял екран режим на редактор на код."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Изглед на редактор на код"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Настройки - Потребителски ограничения"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Администраторът може да ограничи действията на всеки потребител. Също така "
"скривайте файлове и папки и можете да задавате различни - различни пътища на "
"папки за различни потребители."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Настройки - Ограничения на потребителските роли"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Администраторът може да ограничи действията на всяка потребителска роля. "
"Също така скривайте файлове и папки и можете да зададете различни - различни "
"пътища на папки за различни роли на потребители."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Файлов диспечер - Кратък код"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "УПОТРЕБА:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Той ще покаже файлов мениджър на предния край. Можете да контролирате всички "
"настройки от настройките на файловия мениджър. Той ще работи по същия начин "
"като бекенд WP файлов мениджър."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Той ще покаже файлов мениджър на предния край. Но само администраторът има "
"достъп до него и ще контролира от настройките на файловия мениджър."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Параметри:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Това ще позволи на всички роли да имат достъп до файловия мениджър в предния "
"край или можете просто да използвате за конкретни потребителски роли, като "
"например allowed_roles=\"editor,author\" (разделен със запетая (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Тук \"test\" е името на папката, която се намира в основната директория, или "
"можете да дадете път за подпапки като \"wp-content/plugins\". Ако оставите "
"празно или празно, ще има достъп до всички папки в основната директория. По "
"подразбиране: Основна директория"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"за достъп до разрешения за запис на файлове, забележка: true/false, по "
"подразбиране: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"за достъп до разрешение за четене на файлове, забележка: true/false, по "
"подразбиране: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"ще скрие споменатото тук. Забележка: разделено със запетая (,). По "
"подразбиране: нула"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Ще се заключи, споменато със запетаи. можете да заключите повече като \"."
"php,.css,.js\" и т.н. По подразбиране: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* за всички операции и за да разрешите някои операции, можете да споменете "
"име на операцията като, allowed_operations=\"качване, изтегляне\". "
"Забележка: разделено със запетая (,). По подразбиране: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Списък с операции с файлове:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Направете директория или папка"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Направете файл"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Преименувайте файл или папка"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Дублирайте или клонирайте папка или файл"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Поставете файл или папка"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Забрана"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "За да направите архив или цип"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extract archive or zipped file"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Копирайте файлове или папки"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Просто изрежете файл или папка"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Редактирайте файл"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Премахване или изтриване на файлове и папки"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Изтеглете файлове"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Качване на файлове"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Търсете неща"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Информация за файла"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Помогне"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Ще забрани определени потребители, като просто постави техните "
"идентификатори, разделени със запетаи (,). Ако потребителят е Бан, той няма "
"да има достъп до wp файлов мениджър отпред."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr ""
"-> Изглед на потребителския интерфейс на Filemanager. По подразбиране: мрежа"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> File Modified или Create date format. По подразбиране: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Език на файловия мениджър. По подразбиране: английски (bg)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Тема на файловия мениджър. По подразбиране: Светлина"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Файлов диспечер - Свойства на системата"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP версия"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Максимален размер на файла за качване (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Публикувайте максимален размер на файла за качване (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Ограничение на паметта (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Време за изчакване (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Браузър и ОС (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Промяна на темата тук:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "По подразбиране"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Тъмно"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Светлина"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Сиво"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Добре дошли във File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Обичаме да създаваме нови приятели! Абонирайте се по-долу и ние обещаваме\n"
"    Ви информираме за последните ни нови плъгини, актуализации,\n"
"    страхотни оферти и няколко специални оферти."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Моля, въведете Име."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Моля, въведете фамилно име."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Моля, въведете имейл адрес."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Проверете"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Не благодаря"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Условия за ползване"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Политика за поверителност"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Запазва се ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Добре"

#~ msgid "Backup not found!"
#~ msgstr "Архивът не е намерен!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Архивът бе премахнат успешно!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Нищо не е избрано за архивиране</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Проблем със сигурността. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Извършено е архивиране на базата "
#~ "данни. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не може да се създаде резервно копие на "
#~ "базата данни. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Извършено е архивиране на приставки. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Архивирането на приставки не бе успешно. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Готово архивиране на теми. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Архивирането на теми не бе успешно. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Качването на резервно копие е "
#~ "извършено. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Архивирането на качванията не бе "
#~ "успешно. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Други архивиране направено. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Архивирането на други не бе успешно. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Готово </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Управлявайте вашите WP файлове."

#~ msgid "Extensions"
#~ msgstr "Разширения"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Моля, дайте малко дарение, за да направите плъгина по-стабилен. Можете да "
#~ "платите сума по ваш избор."
languages/wp-file-manager-cy.mo000064400000042676147361034410012455 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&��(�S)'
*M2*3�**�*
�*&�*�+��+G{,B�,-4->M-=�-�-�-�-&
.4.(R.){.�.(�.�.�.	/	/'/./?/T/	f/p/2�/�/�/&�/4�/'206Z0�0�0�0
�0�0�0�0�0$
121I15V1�1��1$A2'f2�2%�2;�2�3�3(4 )4J4P4�U4�U566�16c7�t7�8�8�8�8�8�8E�8839l9�9�9�9
�9
�9�9:Y:Re:-�:.�:;;B;+b;#�;�;/�;�;<<.<I<\<^t<T�<(=,0= ]=+~=)�=;�=
>>/>
K>%Y>>�>�>
�>�>	�>�>�>
?!?
6?A?[?#t?(�?�?
�?�?@@L-@z@,�@*�@-�@+A
3A>A\AsAzA"�A�A�A�A�A
BB;BUBoB1{B$�B!�B4�B)C	0C:C0KC|C��CmD7�DO�D\EOnE}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 16:40+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: cy
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 5;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* ar gyfer pob gweithrediad ac i ganiatáu rhywfaint o lawdriniaeth gallwch sôn am enw gweithrediad fel, allowed_operations = "llwytho i lawr, llwytho i lawr". Nodyn: wedi'i wahanu gan goma(,). Rhagosodedig: *-> Bydd yn gwahardd defnyddwyr penodol trwy roi eu cymalau wedi'u gwahanu gan atalnodau (,). Os yw'r defnyddiwr yn Ban yna ni fydd yn gallu cyrchu rheolwr ffeiliau wp yn y pen blaen.Thema Rheolwr Ffeil. Rhagosodiad: Light-> Ffeil wedi'i haddasu neu Creu fformat dyddiad. Rhagosodiad: d M, Y h: i A.-> Rheolwr ffeiliau Iaith. Rhagosodiad: English(en)-> Golwg UI Filemanager. Rhagosodiad: gridGweithreduCamau gweithredu wrth gefn (au) detholGall gweinyddiaeth gyfyngu ar weithredoedd unrhyw ddefnyddiwr. Hefyd cuddio ffeiliau a ffolderau a gallant osod gwahanol lwybrau ffolderi gwahanol ar gyfer gwahanol ddefnyddwyr.Gall gweinyddiaeth gyfyngu ar weithredoedd unrhyw ddefnyddiwr. Hefyd cuddio ffeiliau a ffolderau a gallant osod gwahanol lwybrau ffolderi gwahanol ar gyfer rolau gwahanol ddefnyddwyr.Ar ôl galluogi sbwriel, bydd eich ffeiliau'n mynd i'r ffolder sbwriel.Ar ôl galluogi hyn bydd pob ffeil yn mynd i lyfrgell y cyfryngau.Pawb Wedi'i WneudYdych chi'n sicr am gael gwared ar gefn (au) dethol?Ydych chi'n siŵr eich bod chi am ddileu'r copi wrth gefn hwn?Ydych chi'n siŵr eich bod chi am adfer y copi wrth gefn hwn?Dyddiad wrth gefnGwneud copi wrth gefn NawrDewisiadau wrth gefn:Data wrth gefn (cliciwch i lawrlwytho)Bydd ffeiliau wrth gefn o danMae'r copi wrth gefn yn rhedeg, arhoswchDilewyd y copi wrth gefn yn llwyddiannus.Gwneud copi wrth gefn / adferTynnu copïau wrth gefn yn llwyddiannus!GwaharddPorwr ac OS (HTTP_USER_AGENT)Prynu PROPrynu ProCansloNewid Thema Yma:Cliciwch i Brynu PROGolygydd cod-ViewCadarnhauCopïwch ffeiliau neu ffolderauAr hyn o bryd ni ddarganfuwyd copi wrth gefn (au).FILES DILEUTywyllGwneud copi wrth gefn o'r gronfa ddataGwneud copi wrth gefn o'r gronfa ddata ar y dyddiad Gwneud copi wrth gefn o'r gronfa ddata.Adfer copi wrth gefn o'r gronfa ddata yn llwyddiannus.RhagosodiadRhagosodiad:DileuDad-ddewisGwrthod yr hysbysiad hwn.RhowchDadlwythwch Logiau FfeiliauDadlwythwch ffeiliauDyblygu neu glonio ffolder neu ffeilGolygu Logiau FfeiliauGolygu ffeilGalluogi Ffeiliau i'w Llwytho i Lyfrgell y Cyfryngau?Galluogi Sbwriel?Gwall: Methu adfer copi wrth gefn oherwydd bod copi wrth gefn cronfa ddata yn drwm o ran maint. Ceisiwch gynyddu'r maint mwyaf a ganiateir o osodiadau Dewisiadau.Gwneud copi wrth gefn (au) presennolDetholiad archif neu ffeil wedi'i sipioRheolwr Ffeiliau - Cod ByrRheolwr Ffeiliau - Priodweddau SystemLlwybr Rheolwr Gwreiddiau, gallwch newid yn ôl eich dewis.Mae gan y Rheolwr Ffeil olygydd cod gyda sawl thema. Gallwch ddewis unrhyw thema ar gyfer golygydd cod. Bydd yn arddangos pan fyddwch chi'n golygu unrhyw ffeil. Hefyd gallwch ganiatáu modd sgrin lawn o olygydd cod.Rhestr Gweithrediadau Ffeil:Nid yw'r ffeil yn bodoli i'w lawrlwytho.Gwneud copi wrth gefn o ffeiliauLlwydHelpYma "prawf" yw enw'r ffolder sydd wedi'i leoli ar y cyfeiriadur gwraidd, neu gallwch roi llwybr ar gyfer is-ffolderi fel "wp-content/plugins". Os gadewch yn wag neu'n wag bydd yn cyrchu'r holl ffolderi ar y cyfeiriadur gwraidd. Diofyn: Cyfeiriadur gwraiddYma gall admin roi mynediad i rolau defnyddwyr i ddefnyddio rheolwr ffeiliau. Gall Gweinyddiaeth osod Ffolder Mynediad Diofyn a hefyd reoli maint uwchlwytho rheolwr ffeiliau.Gwybodaeth am y ffeilCod Diogelwch Annilys.Bydd yn caniatáu i bob rôl gael mynediad i'r rheolwr ffeiliau ar y pen blaen neu Gallwch chi ei ddefnyddio'n syml ar gyfer rolau defnyddiwr penodol fel y caniatâd_roles = "golygydd, awdur" (wedi'i wahanu gan atalnod(,))Bydd yn cloi a grybwyllir mewn atalnodau. gallwch gloi mwy fel ".php,.css,.js" ac ati. Diofyn: NullBydd yn dangos rheolwr ffeiliau ar y pen blaen. Ond dim ond Gweinyddwr all gael mynediad iddo a bydd yn rheoli o osodiadau rheolwr ffeiliau.Bydd yn dangos rheolwr ffeiliau ar y pen blaen. Gallwch reoli pob gosodiad o osodiadau rheolwr ffeiliau. Bydd yn gweithio yr un peth â Rheolwr Ffeil WP ôl-wyneb.Neges Log OlafGolauLogiauGwneud cyfeiriadur neu ffolderGwneud ffeilUchafswm maint a ganiateir ar adeg adfer copi wrth gefn cronfa ddata.Uchafswm maint uwchlwytho ffeiliau (upload_max_filesize)Terfyn Cof (memory_limit)Id wrth gefn ar goll.Math paramedr ar goll.Y paramedrau gofynnol ar goll.Dim DiolchDim neges logNi chafwyd hyd i logiau!Nodyn:Nodyn: Mae'r rhain yn sgrinluniau demo. Prynwch Rheolwr Ffeil pro i swyddogaethau Logiau.Nodyn: Dim ond screenshot demo yw hwn. I gael gosodiadau, prynwch ein fersiwn pro.Dim byd wedi'i ddewis ar gyfer copi wrth gefnDim byd wedi'i ddewis ar gyfer copi wrth gefn.iawnIawnEraill (Unrhyw gyfeiriaduron eraill a geir y tu mewn i gynnwys wp)Eraill wrth gefn wedi'i wneud ar y dyddiad Copi wrth gefn eraill wedi'i wneud.Methodd wrth gefn eraill.Adferwyd copi wrth gefn eraill yn llwyddiannus.Fersiwn PHPParamedrau:Gludwch ffeil neu ffolderRhowch y Cyfeiriad E-bost.Rhowch Enw Cyntaf.Rhowch yr Enw Diwethaf.Newidiwch hwn yn ofalus, gall llwybr anghywir arwain at ategyn rheolwr ffeiliau i fynd i lawr.Cynyddwch werth y maes os ydych chi'n cael neges gwall ar adeg adfer copi wrth gefn.AtegionGwneud copi wrth gefn o ategion ar ddyddiad Gwneud copi wrth gefn o ategion.Wedi methu gwneud copi wrth gefn o ategion.Adferwyd ategion ategion yn llwyddiannus.Postiwch uchafswm maint uwchlwytho ffeiliau (post_max_size)DewisiadauPolisi PreifatrwyddLlwybr Gwreiddiau CyhoeddusFILES RESTORETynnu neu ddileu ffeiliau a ffolderauAil-enwi ffeil neu ffolderAdferMae Restore yn rhedeg, arhoswchLLWYDDIANTArbed NewidiadauArbed ...Chwilio pethauMater Diogelwch.Dewiswch BawbDewiswch wrth gefn(au) i'w dileu!GosodiadauGosodiadau - Golygydd codGosodiadau - CyffredinolGosodiadau - Cyfyngiadau DefnyddiwrGosodiadau - Cyfyngiadau Rôl DefnyddiwrGosodiadau wedi'u cadw.Cod byr - PROTorri ffeil neu ffolder yn symlPriodweddau SystemTelerau GwasanaethMae'n debyg bod y copi wrth gefn wedi llwyddo ac mae bellach wedi'i gwblhau.ThemesGwneud copi wrth gefn o themâu ar ddyddiad Mae copi wrth gefn o themâu wedi'i wneud.Wedi methu gwneud copi wrth gefn o'r themâu.Adferwyd themâu wrth gefn yn llwyddiannus.Amser nawrAmserlen (max_execution_time)I wneud archif neu sipHeddiwDEFNYDD:Methu creu cronfa ddata wrth gefn.Methu tynnu copi wrth gefn!Methu adfer copi wrth gefn DB.Methu adfer eraill.Methu adfer ategion.Methu adfer themâu.Methu adfer uwchlwythiadau.Llwythwch Logiau FfeiliauLlwythwch ffeiliau i fynyLlwythiadauLlwythiadau wrth gefn wedi'u llwytho ar ddyddiad Llwythiadau wrth gefn wedi'u gwneud.Methodd uwchlwythiadau wrth gefn.Llwythiadau wrth gefn wedi'u hadfer yn llwyddiannus.GwirioGweld LogRheolwr Ffeil WPRheolwr Ffeil WP - Gwneud copi wrth gefn / AdferCyfraniad Rheolwr Ffeil WPRydyn ni'n caru gwneud ffrindiau newydd! Tanysgrifiwch isod ac rydym yn addo
    rhoi'r wybodaeth ddiweddaraf i chi am ein ategion, diweddariadau, diweddaraf
    bargeinion anhygoel ac ychydig o gynigion arbennig.Croeso i'r Rheolwr FfeiliauNid ydych wedi gwneud unrhyw newidiadau i gael eu cadw.i gael caniatâd i ddarllen ffeiliau, nodwch: gwir/anghywir, rhagosodedig: gwirar gyfer mynediad i ganiatâd ysgrifennu ffeiliau, nodwch: gwir/anghywir, rhagosodedig: ffugbydd yn cuddio a grybwyllir yma. Nodyn: wedi'i wahanu gan goma(,). Diofyn: Nulllanguages/wp-file-manager-da_DK.po000064400000065200147361034410012773 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 16:40+0530\n"
"PO-Revision-Date: 2022-03-02 11:06+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: da_DK\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Sikkerhedskopiering af temaer blev gendannet."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Kunne ikke gendanne temaer."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Uploads backup gendannet."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Kunne ikke gendanne uploads."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Andre sikkerhedskopier blev gendannet."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Kan ikke gendanne andre."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Plugin-backup gendannet."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Kunne ikke gendanne plugins."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Databasesikkerhedskopiering blev gendannet."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Helt færdig"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Kan ikke gendanne DB-sikkerhedskopi."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Sikkerhedskopier blev fjernet med succes!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Kunne ikke fjerne sikkerhedskopien!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Databasesikkerhedskopiering udført på dato "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Plugin-backup udført den dato "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Sikkerhedskopiering af temaer udført den dato "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Uploads backup udført på dato "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Andre sikkerhedskopier udført på dato "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Logfiler"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Ingen logfiler fundet!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Der er ikke valgt noget til backup"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Sikkerhedsproblem."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Sikkerhedskopiering af database udført."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Kan ikke oprette Sikkerhedskopiering af database."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Plugins backup udført."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Sikkerhedskopiering af plugins mislykkedes."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Sikkerhedskopiering af temaer udført."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Sikkerhedskopiering af temaer mislykkedes."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Uploader backup udført."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Uploads backup mislykkedes."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Andre sikkerhedskopiering udført."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Andre sikkerhedskopiering mislykkedes."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP filhåndtering"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Indstillinger"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Præferencer"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Systemegenskaber"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kort kode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Sikkerhedskopiering/gendannelse"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Køb Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Doner"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Filen findes ikke til download."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Ugyldig sikkerhedskode."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Manglende backup-id."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Manglende parametertype."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Manglende krævede parametre."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Fejl: Kan ikke gendanne sikkerhedskopien, fordi "
"databasesikkerhedskopieringen er stor. Prøv at øge den maksimalt tilladte "
"størrelse fra indstillingerne for præferencer."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Vælg backup(r) for at slette!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Er du sikker på, at du vil fjerne de valgte sikkerhedskopier?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Backup kører. Vent venligst"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Gendannelse kører, vent venligst"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Der er ikke valgt noget til backup."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP filhåndtering - Sikkerhedskopiering / gendannelse"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Backupmuligheder:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Sikkerhedskopiering af database"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Backup af filer"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temaer"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Uploads"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Andre (Andre mapper, der findes i wp-indhold)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Backup nu"

#: inc/backup.php:89
msgid "Time now"
msgstr "Tid nu"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUCCES"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Backup blev slettet."

#: inc/backup.php:102
msgid "Ok"
msgstr "Okay"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "SLET FILER"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Er du sikker på, at du vil slette denne sikkerhedskopi?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Afbestille"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Bekræfte"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "GENDAN FILER"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Er du sikker på, at du vil gendanne denne sikkerhedskopi?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Sidste logmeddelelse"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Backup lykkedes tilsyneladende og er nu afsluttet."

#: inc/backup.php:171
msgid "No log message"
msgstr "Ingen logmeddelelse"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Eksisterende sikkerhedskopi (er)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Sikkerhedskopieringsdato"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Backup data (klik for at downloade)"

#: inc/backup.php:190
msgid "Action"
msgstr "Handling"

#: inc/backup.php:210
msgid "Today"
msgstr "I dag"

#: inc/backup.php:239
msgid "Restore"
msgstr "Gendan"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Slet"

#: inc/backup.php:241
msgid "View Log"
msgstr "Vis log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Der findes i øjeblikket ingen sikkerhedskopier."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Handlinger efter valgt (e) sikkerhedskopi (er)"

#: inc/backup.php:251
msgid "Select All"
msgstr "Vælg alle"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Fravælg markeringen"

#: inc/backup.php:254
msgid "Note:"
msgstr "Bemærk:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Backup filer vil være under"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP filhåndtering-bidrag"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Bemærk: Disse er demo-skærmbilleder. Køb File Manager pro til Logfunktioner."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klik for at købe PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Køb PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Rediger logfiler"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Download fillogfiler"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Upload filer Logfiler"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Indstillinger gemt."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Afvis denne meddelelse."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Du har ikke foretaget nogen ændringer, der skal gemmes."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Offentlig rodsti"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager-rodsti, du kan ændre alt efter dit valg."

#: inc/root.php:59
msgid "Default:"
msgstr "Standard:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Ændr dette omhyggeligt, forkert sti kan få filhåndterings-plugin til at gå "
"ned."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Aktivere papirkurven?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Efter aktivering af papirkurven går dine filer til papirkurven."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Aktivere filer, der uploades til mediebiblioteket?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Efter at have aktiveret dette, går alle filer til mediebiblioteket."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maksimal tilladt størrelse på tidspunktet for gendannelse af "
"databasesikkerhedskopi."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Forøg venligst feltværdien, hvis du får fejlmeddelelse på tidspunktet for "
"gendannelse af sikkerhedskopien."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Gem ændringer"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Indstillinger - Generelt"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Bemærk: Dette er kun et demo-screenshot. For at få indstillinger skal du "
"købe vores pro-version."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Her kan admin give adgang til brugerroller for at bruge filemanager. "
"Administrator kan indstille standardadgangsmappe og også kontrollere "
"uploadstørrelse på filadministrator."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Indstillinger - Kode-editor"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager har en kodeditor med flere temaer. Du kan vælge ethvert tema "
"til kodeditor. Det vises, når du redigerer en fil. Du kan også tillade "
"fuldskærmstilstand for kodeditor."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kode-editor Vis"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Indstillinger - Brugerbegrænsninger"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administrator kan begrænse enhver brugers handlinger. Skjul også filer og "
"mapper og kan indstille forskellige - forskellige mappestier til forskellige "
"brugere."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Indstillinger - Begrænsninger i brugerrolle"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administrator kan begrænse handlinger fra enhver brugerrolle. Skjul også "
"filer og mapper og kan indstille forskellige - forskellige mappestier til "
"forskellige brugerroller."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Filhåndtering - Kort kode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "BRUG:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Det vil vise filhåndtering på frontend. Du kan styre alle indstillinger fra "
"filhåndteringsindstillinger. Det fungerer på samme måde som backend WP "
"filhåndtering."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Det vil vise filhåndtering på frontend. Men kun administrator kan få adgang "
"til det og vil styre fra filhåndteringsindstillinger."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametre:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Det vil tillade alle roller at få adgang til filhåndtering på frontend, "
"eller du kan simpelt bruge til bestemte brugerroller som f.eks. allow_roles="
"\"editor,author\" (adskilt af komma(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Her er \"test\" navnet på mappen, som er placeret i rodmappen, eller du kan "
"give stien til undermapper som \"wp-content/plugins\". Hvis det efterlades "
"tomt eller tomt, vil det få adgang til alle mapper i rodmappen. Standard: "
"Rodmappe"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "for adgang til at skrive filer, bemærk: sand/falsk, standard: falsk"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"for adgang til tilladelse til at læse filer, bemærk: sand/falsk, standard: "
"sand"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "det vil skjule nævnt her. Bemærk: adskilt af komma(,). Standard: Nul"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Det vil låse nævnt i kommaer. du kan låse flere som \".php,.css,.js\" osv. "
"Standard: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* for alle operationer og for at tillade nogle operationer kan du nævne "
"operationens navn som, allow_operations=\"upload,download\". Bemærk: adskilt "
"af komma(,). Standard: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Liste over filoperationer:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Opret mappe eller mappe"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Opret fil"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Omdøb en fil eller mappe"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Kopier eller klon en mappe eller fil"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Indsæt en fil eller mappe"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Forbyde"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "At oprette et arkiv eller zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Uddrag arkiv eller zip-fil"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopier filer eller mapper"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Enkelt klippe en fil eller mappe"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Rediger en fil"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Fjern eller slet filer og mapper"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Download filer"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Upload filer"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Søg efter ting"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Info om filen"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Hjælp"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Det vil forbyde bestemte brugere ved blot at sætte deres id adskilt med "
"kommaer (,). Hvis brugeren er Ban, vil de ikke få adgang til wp-"
"filhåndtering i frontend."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI View. Standard: gitter"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Filændret eller Opret datoformat. Standard: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Filhåndterings sprog. Standard: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Filhåndteringstema. Standard: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Filhåndtering - Systemegenskaber"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP-version"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimal filoverførselsstørrelse (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Opret maksimal filoverførselsstørrelse (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Hukommelsesgrænse (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Tiden er gået (maks. Udførelsestid)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Browser og OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Skift tema her:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Standard"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Mørk"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Lys"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grå"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Velkommen til File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Vi elsker at få nye venner! Abonner nedenfor, og vi lover at\n"
"    holde dig opdateret med vores nyeste nye plugins, opdateringer,\n"
"    fantastiske tilbud og et par specielle tilbud."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Indtast fornavn."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Indtast venligst efternavn."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Indtast venligst e-mail-adresse."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verificere"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nej tak"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Terms of Service"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Fortrolighedspolitik"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Gemmer ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Okay"

#~ msgid "Backup not found!"
#~ msgstr "Backup ikke fundet!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Backup fjernet med succes!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Intet valgt til sikkerhedskopiering</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sikkerhedsproblem.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Databasesikkerhedskopiering udført. </"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sikkerhedskopiering af database kunne "
#~ "ikke oprettes. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Plugins-sikkerhedskopi udført.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Backup af plugins mislykkedes. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sikkerhedskopiering af temaer udført.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sikkerhedskopiering af temaer "
#~ "mislykkedes.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Uploads backup udført. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sikkerhedskopiering af uploads "
#~ "mislykkedes.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Andre sikkerhedskopieringer er udført."
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Anden sikkerhedskopiering mislykkedes. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Alle udført </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Administrer dine WP-filer."

#~ msgid "Extensions"
#~ msgstr "Udvidelser"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Vær venlig at bidrage med en donation for at gøre plugin mere stabil. Du "
#~ "kan betale beløb efter eget valg."
languages/wp-file-manager-gl_ES.mo000064400000044471147361034410013026 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(�)2�)M�)=K*)�*�*4�*��*��+If,I�,
�,A-4G-5|-�-"�- �-6.2I.1|./�. �.4�.4/ A/
b/
m/x/�/�/�/	�/�/1�/&080$?0:d0*�0A�011+1
41B1V1 Z1{1*�1�1�1=�1(2�?23%$3&J3,q3L�3��3"�4%�4 5@5E5K5�O6-7"F7�i7l.8��8�19�9:		::
0:^>::�:"�:"�:;!:;\;$h;�;�;n�;{<1�<2�<�<=?=/D=$t=$�=9�=�=>>,/>\>n>j�>j�>Y?9f?*�?-�?A�?=;@y@�@�@�@)�@&�@	A)(ARAYAhAuA�A�A-�A�A!�A
B'!B5IBB�B$�B�B�BG�B=C+CC#oC3�C9�C
D$D1DNDSD9XD,�D=�D�D'E DE!eE�E�E�E.�E&�E4F5HF	~F�F�F<�F'�F�G�G%�GcHb�HU�H}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 18:34+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: gl_ES
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* Para todas as operacións e para permitir algunha operación, pode mencionar o nome da operación como permitido_operations="cargar, descargar". Nota: separados por coma (,). Predeterminado: *-> Prohibirá a determinados usuarios só poñendo os seus identificadores separados por comas (,). Se o usuario é Ban, non poderán acceder ao xestor de ficheiros wp na interface.-> Tema Xestor de ficheiros. Predeterminado: Light-> Arquivo modificado ou Crear formato de data. Predeterminado: d M, Y h: i A-> Idioma do xestor de ficheiros. Predeterminado: English(en)-> Filemanager UI View. Por defecto: gridAcciónAccións sobre as copias de seguridade seleccionadasO administrador pode restrinxir as accións de calquera usuario. Tamén oculta ficheiros e cartafoles e pode establecer camiños de cartafoles diferentes para diferentes usuarios.O administrador pode restrinxir as accións de calquera rol de usuario. Tamén oculta ficheiros e cartafoles e pode definir camiños de cartafoles diferentes para papeis de usuarios diferentes.Despois de habilitar o lixo, os teus ficheiros irán ao cartafol do lixo.Despois de habilitalo, todos os ficheiros irán á biblioteca multimedia.Todo feitoSeguro que queres eliminar as copias de seguridade seleccionadas?Seguro que queres eliminar esta copia de seguridade?Seguro que queres restaurar esta copia de seguridade?Data de copia de seguridadeFai unha copia de seguridade agoraOpcións de copia de seguridade:Datos de copia de seguridade (fai clic para descargar)Os ficheiros de copia de seguridade estarán baixoA copia de seguridade está en execución. AgardeEliminouse correctamente a copia de seguridade.Copia de seguranza/RestauraciónElimináronse correctamente as copias de seguridade.ProhibiciónNavegador e SO (HTTP_USER_AGENT)Compra PROCompra ProCancelarCambia de tema aquí:Fai clic para comprar PROVista do editor de códigoConfirmarCopia ficheiros ou cartafolesActualmente non se atoparon copias de seguridade.ELIMINA FICHEIROSEscuroCopia de seguridade da base de datosA copia de seguridade da base de datos realizouse na data Copia de seguranza da base de datos feita.Restaurouse correctamente a copia de seguridade da base de datos.PredeterminadoPredeterminado:EliminarDeseleccionarRexeita este aviso.DoaDescargar rexistros de ficheirosDescargar ficheirosDuplicar ou clonar un cartafol ou ficheiroEditar rexistros de ficheirosEdite un ficheiroQueres activar a carga de ficheiros na biblioteca multimedia?Queres activar o lixo?Erro: non se puido restaurar a copia de seguranza porque a copia de seguranza da base de datos ten un gran tamaño. Tenta aumentar o tamaño máximo permitido desde a configuración de Preferencias.Copia de seguridade existenteExtraer arquivo ou arquivo comprimidoXestor de ficheiros: código abreviadoXestor de ficheiros - Propiedades do sistemaCamiño raíz do xestor de ficheiros, pode cambiar segundo a súa elección.O Xestor de ficheiros ten un editor de código con varios temas. Podes seleccionar calquera tema para o editor de código. Amosarase cando edite calquera ficheiro. Tamén pode permitir o modo de pantalla completa do editor de código.Lista de operacións de ficheiros:O ficheiro non existe para descargar.Copia de seguridade de ficheirosGrisAxudaAquí "proba" é o nome do cartafol que se atopa no directorio raíz, ou pode dar o camiño para os subcartafoles como "wp-content/plugins". Se o deixas en branco ou baleiro accederá a todos os cartafoles do directorio raíz. Predeterminado: directorio raízAquí o administrador pode dar acceso aos roles de usuario para usar o xestor de ficheiros. O administrador pode configurar o cartafol de acceso predeterminado e tamén controlar o tamaño de carga do xestor de ficheiros.Información do ficheiroCódigo de seguridade non válido.Permitirá que todos os roles accedan ao xestor de ficheiros na interface ou Podes usar de forma sinxela para roles de usuario particulares como allow_roles="editor,author" (separado por coma (,))Bloquearase mencionado entre comas. pode bloquear máis como ".php,.css,.js" etc. Valor predeterminado: nuloMostrará o xestor de ficheiros na interface. Pero só o administrador pode acceder a el e controlará desde a configuración do xestor de ficheiros.Mostrará o xestor de ficheiros na interface. Podes controlar todas as opcións desde a configuración do xestor de ficheiros. Funcionará igual que o Xestor de ficheiros WP de fondo.Última mensaxe de rexistroLuzRexistrosFacer directorio ou cartafolFacer arquivoTamaño máximo permitido no momento da restauración da copia de seguridade da base de datos.Tamaño máximo de carga de ficheiro (upload_max_filesize)Límite de memoria (memoria_limit)Falta o ID de copia de seguridade.Falta o tipo de parámetro.Faltan os parámetros requiridos.Non, grazasNon hai ningunha mensaxe de rexistroNon se atoparon rexistros.Nota:Nota: Estas son capturas de pantalla de demostración. Compre File Manager pro para as funcións de Rexistros.Nota: Esta é só unha captura de pantalla de demostración. Para obter configuración, compra a nosa versión profesional.Non se seleccionou nada para a copia de seguranzaNon se seleccionou nada para a copia de seguranza.OkOkOutros (Calquera outro directorio atopado dentro de wp-content)Outras copias de seguridade realizadas na data Feito a copia de seguridade doutros.Fallou a copia de seguranza doutros.Outras copias de seguridade restauráronse correctamente.Versión PHPParámetros:Pega un ficheiro ou cartafolIntroduza o enderezo de correo electrónico.Introduza o nome.Introduza o apelido.Cambie isto coidadosamente, o camiño incorrecto pode levar a baixar o complemento do xestor de ficheiros.Aumente o valor do campo se recibe unha mensaxe de erro no momento da restauración da copia de seguranza.ComplementosA copia de seguridade dos complementos foi feita na data Copia de seguranza dos complementos feita.Fallou a copia de seguranza dos complementos.A copia de seguridade dos complementos restaurouse correctamente.Envía o tamaño máximo de carga do ficheiro (post_max_size)PreferenciasPolítica de PrivacidadeCamiño de raíz públicoRESTAURAR FICHEIROSElimina ou elimina ficheiros e cartafolesCambia o nome dun ficheiro ou cartafolRestaurarA restauración estase executando, agardeÉXITOGardar cambiosGardando ...Busca cousasProblema de seguridade.Seleccionar todoSelecciona copias de seguranza para eliminar.ConfiguraciónConfiguración: editor de códigoConfiguración - XeralConfiguración: restricións de usuarioConfiguración - Restricións de funcións de usuarioConfiguración gardada.Shortcode - PROCorte simple dun arquivo ou cartafolPropiedades do sistemaTermos de servizoA copia de seguridade aparentemente tivo éxito e agora está completa.TemasCopia de seguridade de temas feita na data Copia de seguranza dos temas feita.Produciuse un erro na copia de seguranza dos temas.A copia de seguridade de temas restaurouse correctamente.Hora agoraTempo de espera (max_execution_time)Para facer un arquivo ou zipHoxeUSO:Non se puido crear a copia de seguranza da base de datos.Non se puido eliminar a copia de seguridade.Non se pode restaurar a copia de seguridade da base de datos.Non se poden restaurar outros.Non se poden restaurar os complementos.Non se poden restaurar os temas.Non se poden restaurar as cargas.Cargar ficheiros de rexistrosCargar ficheirosCargasAs copias de seguridade realizáronse na data Feito a copia de seguranza das cargas.Produciuse un erro na copia de seguranza das cargas.As copias de seguridade restauráronse correctamente.VerificarVer rexistroXestor de ficheiros WPXestor de ficheiros WP - Copia de seguridade / restauraciónContribución do xestor de ficheiros WPEncántanos facer novos amigos. Subscríbete a continuación e prometemos facelo
    estar ao día cos nosos novos complementos, actualizacións,
    ofertas incribles e algunhas ofertas especiais.Benvido ao Xestor de ficheirosNon fixo ningún cambio para gardalo.para acceder ao permiso de lectura de ficheiros, nota: verdadeiro/falso, predeterminado: verdadeiropara acceder aos permisos de escritura de ficheiros, nota: verdadeiro/falso, predeterminado: falsoocultarase aquí mencionado. Nota: separados por coma (,). Valor predeterminado: nulolanguages/wp-file-manager-bel.mo000064400000057453147361034410012603 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&N(vh)T�*t4+a�+p,|,J�,%�,;�-~8/��/<0mP0e�0e$16�16�1A�1U:2U�2L�2P33B�31�3�3(474H4]4n4+�4(�4�4/�4U*5�5
�5E�5e�5WS6Y�67767G73c7�72�7�7O�72O8�8E�8"�8=90A:@r:7�:G�:�3;��;,u=1�=8�=
>>�+>��?$�A-�A��A�ZC� D4E8LF�F�F3�F�F��FY�G2�GPH/fHA�H�H5�H+!IMI�]I�JS�JT�J
RK
]KlhKJ�K< L4]LQ�L�L�L'	MS1M-�M9�M��M��N�OX�OJ�ODAPL�Pl�P@Q'WQ,Q�QK�Q3RHR?YR�R�R�R�R�RSO$StS.�S�SB�SKT_T~T6�T%�T%�TnU�UR�UD�U>'VFfV�VI�V6	W
@WKW^eWD�WI	X/SX3�X-�X9�X0YPYnYSYR�Y]&ZD�Z�Z�Z"�Zg[-�[F�[F�\SA]��]�(^u�^}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 10:40+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: be
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* для ўсіх аперацый і для дазволу некаторых аперацый вы можаце ўказаць назву аперацыі, напрыклад, allow_operations="upload,download". Заўвага: праз коску (,). Па змаўчанні: *-> Гэта забароніць пэўных карыстальнікаў, проста паставіўшы іх ідэнтыфікатары, падзеленыя коскамі (,). Калі карыстальнік забаронены, ён не зможа атрымаць доступ да файлавага мэнэджара wp на пярэдняй панэлі.-> Тэма дыспетчара файлаў. Па змаўчанні: святло-> Зменены файл альбо Стварыць фармат даты. Па змаўчанні: d M, Y h: i A-> Мова дыспетчара файлаў. Па змаўчанні: англійская (en)-> Прагляд карыстацкага інтэрфейсу Filemanager. Па змаўчанні: сеткаДзеяннеДзеянні з выбранымі рэзервовымі копіяміАдміністратар можа абмежаваць дзеянні любога карыстальніка. Акрамя таго, можна схаваць файлы і тэчкі і можа ўсталяваць розныя шляхі для розных карыстальнікаў.Адміністратар можа абмежаваць дзеянні любой карыстальніцкай ролі. Акрамя таго, можна схаваць файлы і тэчкі і можа ўсталяваць розныя шляхі для розных роляў карыстальнікаў.Пасля ўключэння смецця вашы файлы будуць пераходзіць у папку смецця.Пасля ўключэння гэтага ўсе файлы будуць пераходзіць у медыя-бібліятэку.Усё гатоваВы ўпэўнены, што хочаце выдаліць выбраныя рэзервовыя копіі?Вы ўпэўнены, што хочаце выдаліць гэту рэзервовую копію?Вы ўпэўнены, што хочаце аднавіць гэту рэзервовую копію?Дата рэзервовага капіраванняРэзервовае капіраванне заразПараметры рэзервовага капіравання:Рэзервовыя дадзеныя (націсніце, каб загрузіць)Файлы рэзервовых копій будуць знаходзіцца падРэзервовае капіраванне працуе, пачакайцеРэзервовае капіраванне паспяхова выдалена.Рэзервовае капіраванне / аднаўленнеРэзервовыя копіі выдалены!ЗабараніцьБраўзэр і АС (HTTP_USER_AGENT)купіць PROКупляйце ProАдмяніцьЗмяніць тэму тут:Націсніце, каб купіць PROВыгляд рэдактара кодаПацвердзіцеСкапіруйце файлы ці тэчкіУ цяперашні час рэзервовых копій не знойдзена.ВЫДАЛІЦЬ ФАЙЛЫЦёмныРэзервовае капіраванне базы дадзеныхРэзервовае капіраванне базы дадзеных зроблена на дату Рэзервовае капіраванне базы дадзеных зроблена.Рэзервовае капіраванне базы дадзеных адноўлена.Па змаўчанніПа змаўчанні:ВыдаліцьАдмяніць выбарАдхіліць гэтае апавяшчэнне.ахвяравацьСпампаваць часопісы файлаўСпампаваць файлыДублюйце альбо кланіруйце тэчку альбо файлРэдагаваць часопісы файлаўЗмяніць файлУключыць загрузку файлаў у медыятэку?Уключыць сметніцу?Памылка: немагчыма аднавіць рэзервовую копію, таму што рэзервовая копія базы дадзеных мае вялікі памер. Паспрабуйце павялічыць максімальна дазволены памер у наладах налад.Існуючыя рэзервовыя копііВыняць архіў альбо архіваваны файлФайлавы менеджэр - кароткі кодДыспетчар файлаў - Уласцівасці сістэмыКаранёвы шлях файлавага мэнэджара, вы можаце змяніць яго ў адпаведнасці з вашым выбарам.Файлавы менеджэр мае рэдактар ​​кода з некалькімі тэмамі. Вы можаце выбраць любую тэму для рэдактара кода. Ён будзе адлюстроўвацца пры рэдагаванні любога файла. Таксама вы можаце дазволіць поўнаэкранны рэжым рэдактара кода.Спіс аперацый з файламі:Файл не існуе для загрузкі.Рэзервовае капіраванне файлаўШэрыДапамажыцеТут "test" - гэта назва папкі, якая знаходзіцца ў каранёвым каталогу, або вы можаце даць шлях для падтэчак, напрыклад, "wp-content/plugins". Калі пакінуць поле пустым або пустым, ён атрымае доступ да ўсіх тэчак у каранёвым каталогу. Па змаўчанні: Каранёвы каталогТут адміністратар можа даць доступ да роляў карыстальнікаў для выкарыстання файлавага мэнэджэра. Адміністратар можа ўсталяваць папку доступу па змаўчанні, а таксама кантраляваць памер загрузкі файлавага менеджэра.Інфармацыя пра файлНесапраўдны код бяспекі.Гэта дазволіць усім ролям атрымліваць доступ да файлавага мэнэджара на пярэднім канцы або вы можаце проста выкарыстоўваць для пэўных роляў карыстальнікаў, напрыклад, allow_roles = "рэдактар, аўтар" (падзелены коскай (,))Ён будзе заблакіраваны, згаданы праз коскі. вы можаце заблакаваць больш, як ".php,.css,.js" і г.д. Па змаўчанні: НульЁн пакажа файлавы менеджэр на пярэднім канцы. Але толькі адміністратар мае доступ да яго і будзе кіраваць з налад файлавага мэнэджара.Ён пакажа файлавы менеджэр на пярэднім канцы. Вы можаце кіраваць усімі наладамі з налад файлавага мэнэджара. Ён будзе працаваць гэтак жа, як і бэкэнд Файлавы менеджэр WP.Апошняе паведамленне часопісаСвятлоЧасопісыЗрабіце каталог альбо тэчкуСтварыць файлМаксімальна дазволены памер на момант аднаўлення рэзервовай копіі базы дадзеных.Максімальны памер загружанага файла (upload_max_filesize)Абмежаванне памяці (memory_limit)Адсутнічае ідэнтыфікатар рэзервовай копіі.Адсутнічае тып параметра.Адсутнічаюць неабходныя параметры.Не, дзякуйНяма паведамлення ў часопісеЧасопісаў не знойдзена!нататка:Заўвага: Гэта дэманстрацыйныя скрыншоты. Калі ласка, купіце File Manager pro для функцый часопісаў.Заўвага: Гэта проста дэманстрацыйны скрыншот. Каб атрымаць налады, купіце нашу версію pro.Нічога не выбрана для рэзервовага капіяванняНічога не выбрана для рэзервовага капіявання.добраДобраІншыя (любыя іншыя каталогі, якія знаходзяцца ўнутры wp-content)Іншыя рэзервовыя копіі зроблены на дату Іншыя рэзервовыя копіі зроблены.Збой іншых рэзервовых копій.Іншыя рэзервовыя копіі паспяхова адноўлены.Версія PHPПараметры:Устаўце файл ці тэчкуКалі ласка, увядзіце адрас электроннай пошты.Калі ласка, увядзіце імя.Калі ласка, увядзіце прозвішча.Калі ласка, змяніце гэта ўважліва, няправільны шлях можа прывесці да падзення ўбудовы файлавага мэнэджара.Калі ласка, павялічце значэнне поля, калі вы атрымліваеце паведамленне пра памылку падчас аднаўлення рэзервовай копіі.УбудовыРэзервовае капіраванне убудоў зроблена на дату Рэзервовае капіраванне убудоў зроблена.Збой рэзервовага капіравання убудоў.Рэзервовае капіраванне убудоў адноўлена.Апублікаваць максімальны памер загружанага файла (post_max_size)ПрэферэнцыіПалітыка прыватнасціГрамадскі каранёвы шляхАДНАВІЦЬ ФАЙЛЫВыдаленне альбо выдаленне файлаў і тэчакПерайменаваць файл ці тэчкуАднавіцьАднаўленне выконваецца, пачакайцеПОСПЕХЗахаваць зменыЗахаванне ...Шукайце рэчыПытанне бяспекі.Абраць усёВыберыце рэзервовую копію(ы) для выдалення!наладыНалады - рэдактар ​​кодаНалады - АгульныяНалады - Абмежаванні карыстальнікаўНалады - Абмежаванні роляў карыстальнікаНалады захаваны.Шорт-код - PROПроста выражыце файл ці тэчкуўласцівасці сістэмыЎмовы абслугоўванняРэзервовае капіраванне, відаць, атрымалася, і яно завершана.ТэмыРэзервовае капіраванне тэм зроблена на дату Рэзервовае капіраванне тэм зроблена.Збой рэзервовага капіравання тэм.Рэзервовае капіраванне тэм адноўлена.Час заразЧас чакання (максімальны_ час_выканання)Каб зрабіць архіў альбо архіўСённяВЫКАРЫСТАННЕ:Немагчыма стварыць рэзервовую копію базы дадзеных.Немагчыма выдаліць рэзервовую копію!Немагчыма аднавіць рэзервовую копію БД.Немагчыма аднавіць іншыя.Немагчыма аднавіць убудовы.Немагчыма аднавіць тэмы.Немагчыма аднавіць запампоўкі.Загрузіць часопісы файлаўЗагрузіць файлыЗагружаеЗагружае рэзервовую копію, зробленую на дату Рэзервовае капіраванне запамповак зроблена.Не атрымалася рэзервовага капіравання запамповак.Загрузка рэзервовай копіі адноўлена.ПраверцеПрагляд часопісаДыспетчар файлаў WPФайлавы менеджэр WP - Рэзервовае капіраванне / аднаўленнеУклад Файлавы менеджэр WPМы любім знаходзіць новых сяброў! Падпішыцеся ніжэй, і мы абяцаем
    будзеце ў курсе нашых апошніх новых убудоў, абнаўленняў,
    дзіўныя прапановы і некалькі спецыяльных прапаноў.Сардэчна запрашаем у дыспетчар файлаўВы не ўносілі ніякіх змяненняў для захавання.для доступу да дазволу на чытанне файлаў, звярніце ўвагу: true/false, па змаўчанні: trueдля доступу да дазволу запісу файлаў, звярніце ўвагу: true/false, па змаўчанні: falseён схавае згаданае тут. Заўвага: праз коску (,). Па змаўчанні: Нульlanguages/wp-file-manager-ro_RO.po000064400000066712147361034410013062 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Wp File Manager\n"
"POT-Creation-Date: 2022-02-28 11:13+0530\n"
"PO-Revision-Date: 2022-03-01 18:10+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
"%100<=19) ? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Backup-ul temelor a fost restaurat cu succes."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Nu s-au putut restabili temele."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Backupurile încărcate au fost restaurate cu succes."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Imposibil de restabilit încărcările."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Altele au fost restaurate cu succes."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Imposibil de restabilit altele."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Backup-ul pluginurilor a fost restaurat cu succes."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Nu s-au putut restabili pluginurile."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Backup-ul bazei de date a fost restaurat cu succes."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Totul este gata"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Imposibil de restaurat backupul DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Copiile de rezervă au fost eliminate!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Nu s-a putut elimina copia de rezervă!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Copierea de rezervă a bazei de date a fost făcută la dată "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Backup-ul pluginurilor a fost făcut la data respectivă "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Teme de backup realizate la data "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Încărcări de backup efectuate la data "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Alți copii de rezervă efectuate la data "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Jurnale"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nu s-au găsit jurnale!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Nu s-a selectat nimic pentru backup"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Problema de securitate."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Backup-ul bazei de date este finalizat."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Nu se poate crea o copie de rezervă a bazei de date."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Copierea de rezervă a pluginurilor este finalizată."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Backup-ul pluginurilor a eșuat."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Copierea de rezervă a temelor este finalizată."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Backupul temelor a eșuat."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Încărcări de rezervă finalizate."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Backupul încărcărilor nu a reușit."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Copilul de rezervă al altora este finalizat."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Backup-ul altora a eșuat."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Manager de fișiere WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Setări"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferințe"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Proprietatile sistemului"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Backup/Restaurare"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Cumpărați Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donează"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Fișierul nu există pentru descărcare."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Cod de securitate invalid."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "ID-ul de rezervă lipsește."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Tip parametru lipsă."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Lipsesc parametrii necesari."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Eroare: nu se poate restabili backupul deoarece backupul bazei de date are o "
"dimensiune mare. Vă rugăm să încercați să măriți dimensiunea maximă permisă "
"din setările Preferințe."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Selectați copiile de rezervă de șters!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Sigur doriți să eliminați copiile de rezervă selectate?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Backupul se execută, vă rugăm să așteptați"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Restaurarea rulează, așteptați"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Nu s-a selectat nimic pentru backup."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Manager de fișiere WP - Backup / Restaurare"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opțiuni de backup:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Copie de rezervă a bazei de date"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Backup de fișiere"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Pluginuri"

#: inc/backup.php:71
msgid "Themes"
msgstr "Teme"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Încărcări"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Altele (Orice alte directoare găsite în wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Faceți backup acum"

#: inc/backup.php:89
msgid "Time now"
msgstr "Timpul acum"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUCCES"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Copia de rezervă a fost ștearsă."

#: inc/backup.php:102
msgid "Ok"
msgstr "O.K"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "DELETE FILES"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Sigur doriți să ștergeți această copie de rezervă?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Anulare"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "A confirma"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RESTAURĂ FIȘIERE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Sigur doriți să restaurați această copie de rezervă?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Ultimul mesaj de jurnal"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Se pare că backup-ul a reușit și acum este complet."

#: inc/backup.php:171
msgid "No log message"
msgstr "Fără mesaj jurnal"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Backup-uri existente"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Data de rezervă"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Date de rezervă (faceți clic pentru a descărca)"

#: inc/backup.php:190
msgid "Action"
msgstr "Acțiune"

#: inc/backup.php:210
msgid "Today"
msgstr "Azi"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restabili"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Șterge"

#: inc/backup.php:241
msgid "View Log"
msgstr "Vizualizare jurnal"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "În prezent nu s-au găsit copii de rezervă."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Acțiuni la copiile de rezervă selectate"

#: inc/backup.php:251
msgid "Select All"
msgstr "Selectează tot"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deselectați"

#: inc/backup.php:254
msgid "Note:"
msgstr "Notă:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Fișierele de rezervă vor fi sub"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Contribuția Manager de fișiere WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Notă: Acestea sunt capturi de ecran demo. Vă rugăm să cumpărați File Manager "
"pro pentru funcțiile Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Faceți clic pentru a cumpăra PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Cumpărați PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Editați jurnalele de fișiere"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Descărcați jurnalele de fișiere"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Încărcați jurnalele de fișiere"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Setari Salvate."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Respingeți această notificare."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Nu ați făcut nicio modificare pentru a fi salvat."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Calea rădăcinii publice"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path, puteți schimba în funcție de alegerea dvs."

#: inc/root.php:59
msgid "Default:"
msgstr "Mod implicit:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Vă rugăm să schimbați cu atenție această cale, o cale greșită poate duce la "
"coborârea pluginului managerului de fișiere."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Activați Coșul de gunoi?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"După activarea coșului de gunoi, fișierele dvs. vor merge în folderul coș de "
"gunoi."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Activați fișierele încărcate în biblioteca media?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "După activare, toate fișierele vor merge în biblioteca media."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Dimensiunea maximă permisă în momentul restaurării copiei de rezervă a bazei "
"de date."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Vă rugăm să măriți valoarea câmpului dacă primiți un mesaj de eroare în "
"momentul restaurării copiei de rezervă."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Salvează modificările"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Setări - Generalități"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Notă: Aceasta este doar o captură de ecran demonstrativă. Pentru a obține "
"setări, vă rugăm să cumpărați versiunea noastră pro."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Aici administratorul poate da acces la rolurile utilizatorilor pentru a "
"utiliza fișierul de gestionare a fișierelor. Administratorul poate seta "
"folderul de acces implicit și, de asemenea, poate controla dimensiunea de "
"încărcare a managerului de fișiere."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Setări - Editor de cod"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Managerul de fișiere are un editor de cod cu mai multe teme. Puteți selecta "
"orice temă pentru editorul de cod. Se va afișa când editați orice fișier. De "
"asemenea, puteți permite modul ecran complet al editorului de cod."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Vizualizare editor de cod"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Setări - Restricții de utilizator"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administratorul poate restricționa acțiunile oricărui utilizator. Ascundeți, "
"de asemenea, fișiere și foldere și puteți seta diferite căi de foldere "
"pentru utilizatori diferiți."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Setări - Restricții ale rolului utilizatorului"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administratorul poate restricționa acțiunile oricărui rol de utilizator. "
"Ascundeți, de asemenea, fișiere și foldere și puteți seta căi de foldere "
"diferite - pentru diferite roluri ale utilizatorilor."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Manager fișiere - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "UTILIZARE:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Va afișa managerul de fișiere pe front-end. Puteți controla toate setările "
"din setările managerului de fișiere. Va funcționa la fel ca și Managerul de "
"fișiere WP de backend."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Va afișa managerul de fișiere pe front-end. Dar numai Administratorul îl "
"poate accesa și va controla din setările managerului de fișiere."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametri:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Acesta va permite tuturor rolurilor să acceseze managerul de fișiere pe "
"front-end sau puteți utiliza simplu pentru anumite roluri de utilizator, cum "
"ar fi allow_roles=\"editor,author\" (separat prin virgulă (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Aici „test” este numele folderului care se află în directorul rădăcină, sau "
"puteți da calea pentru sub foldere, cum ar fi „wp-content/plugins”. Dacă "
"lăsați necompletat sau gol, va accesa toate folderele din directorul "
"rădăcină. Implicit: director rădăcină"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"pentru acces la permisiuni de scriere a fișierelor, notă: adevărat/fals, "
"implicit: fals"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"pentru acces la permisiunea de citire a fișierelor, notă: adevărat/fals, "
"implicit: adevărat"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"se va ascunde menționat aici. Notă: separate prin virgulă (,). Implicit: nul"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Se va bloca menționat în virgule. puteți bloca mai multe ca „.php,.css,.js” "
"etc. Implicit: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* pentru toate operațiunile și pentru a permite o anumită operațiune, puteți "
"menționa numele operațiunii ca, allow_operations=\"upload,download\". Notă: "
"separate prin virgulă (,). Mod implicit: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lista operațiunilor de fișiere:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Creați director sau folder"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Creați fișier"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Redenumiți un fișier sau folder"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplicați sau clonați un folder sau un fișier"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Lipiți un fișier sau un folder"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Interzice"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Pentru a face o arhivă sau zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extrageți arhiva sau fișierul zip"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copiați fișiere sau foldere"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Simplu tăiați un fișier sau un folder"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Editați un fișier"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Eliminați sau ștergeți fișiere și foldere"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Descărcați fișiere"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Încărca fișiere"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Căutați lucruri"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informații despre fișier"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Ajutor"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Va interzice anumiți utilizatori doar punând ID-urile lor separate de "
"virgule (,). Dacă utilizatorul este Ban, nu va putea accesa managerul de "
"fișiere wp din front-end."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI View. Implicit: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Fișier modificat sau Creați formatul datei. Implicit: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Limba managerului de fișiere. Implicit: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema Manager fișiere. Implicit: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Manager fișiere - Proprietăți sistem"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versiunea PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Dimensiunea maximă de încărcare a fișierului (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Postați dimensiunea maximă de încărcare a fișierului (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Limita de memorie (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Expirare (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Browser și SO (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Schimbați tema aici:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Mod implicit"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Întuneric"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Ușoară"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "gri"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Bine ați venit la Manager fișiere"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Ne place să ne facem noi prieteni! Abonați-vă mai jos și promitem să\n"
"    vă ține la curent cu cele mai noi pluginuri noi, actualizări,\n"
"    oferte minunate și câteva oferte speciale."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Vă rugăm să introduceți prenumele."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Vă rugăm să introduceți numele de familie."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Vă rugăm să introduceți adresa de e-mail."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verifica"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nu multumesc"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Termenii serviciului"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Politica de Confidențialitate"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Economisire..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "O.K"

#~ msgid "Backup not found!"
#~ msgstr "Copia de rezervă nu a fost găsită!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Copia de rezervă a fost eliminată cu succes!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nimic selectat pentru backup</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Problemă de securitate.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">S-a făcut backupul bazei de date.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Imposibil de creat backupul bazei de "
#~ "date. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">S-a făcut backup pentru pluginuri.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Backup-ul pluginurilor a eșuat.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">S-a făcut backupul temelor.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Backup-ul temelor a eșuat.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">S-a efectuat încărcarea.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Backupul la încărcare a eșuat.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">S-au făcut alte copii de rezervă.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Copiile de rezervă ale altora nu au "
#~ "reușit. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Tot gata</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
languages/wp-file-manager-ur.po000064400000077302147361034410012465 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 12:29+0530\n"
"PO-Revision-Date: 2022-02-28 12:33+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: ur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "تھیمز کا بیک اپ کامیابی کے ساتھ بحال ہوا۔"

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "تھیمز کو بحال کرنے سے قاصر۔"

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "اپ لوڈز کا بیک اپ کامیابی کے ساتھ بحال ہوا۔"

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "اپ لوڈز کو بحال کرنے سے قاصر۔"

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "دوسرے کا بیک اپ کامیابی کے ساتھ بحال ہوا۔"

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "دوسروں کو بحال کرنے سے قاصر۔"

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "پلگ ان کا بیک اپ کامیابی کے ساتھ بحال ہوا۔"

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "پلگ ان کو بحال کرنے سے قاصر۔"

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "ڈیٹا بیس کا بیک اپ کامیابی کے ساتھ بحال ہوا۔"

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "سب ہو گیا"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB بیک اپ کو بحال کرنے سے قاصر۔"

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "بیک اپ کامیابی کے ساتھ ہٹا دیئے گئے!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "بیک اپ کو ہٹانے سے قاصر!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "ڈیٹا بیس کا بیک اپ تاریخ کو ہوا "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "تاریخ میں پلگ ان کا بیک اپ ہوگیا "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "تھیمز کا بیک اپ تاریخ پر ہوا "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "تاریخ کو اپ لوڈ بیک اپ ہوگیا "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "دوسروں کا بیک اپ تاریخ پر ہوا "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "نوشتہ جات"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "کوئی نوشتہ نہیں ملا!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "بیک اپ کے لیے کچھ بھی منتخب نہیں کیا گیا۔"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "سیکیورٹی کا مسئلہ۔"

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "ڈیٹا بیس کا بیک اپ ہو گیا۔"

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "ڈیٹا بیس بیک اپ بنانے سے قاصر۔"

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "پلگ انز کا بیک اپ ہو گیا۔"

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "پلگ انز کا بیک اپ ناکام ہو گیا۔"

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "تھیمز کا بیک اپ ہو گیا۔"

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "تھیمز کا بیک اپ ناکام ہو گیا۔"

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "اپ لوڈز کا بیک اپ ہو گیا۔"

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "اپ لوڈز کا بیک اپ ناکام ہو گیا۔"

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "دوسروں کا بیک اپ ہو گیا۔"

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "دیگر کا بیک اپ ناکام ہو گیا۔"

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP فائل منیجر"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "ترتیبات"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "ترجیحات"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "سسٹم پراپرٹیز"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "مختصر - پی ار او"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "بیک اپ/بحال"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "پرو خریدیں"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "عطیہ کریں"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "ڈاؤن لوڈ کرنے کے لئے فائل موجود نہیں ہے۔"

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "غلط حفاظتی کوڈ۔"

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "گمشدہ بیک اپ آئی ڈی"

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "پیرامیٹر کی قسم غائب ہے۔"

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "لاپتہ مطلوبہ پیرامیٹرز۔"

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"خرابی: بیک اپ بحال کرنے سے قاصر کیونکہ ڈیٹا بیس بیک اپ سائز میں بھاری ہے۔ "
"براہ کرم ترجیحات کی ترتیبات سے زیادہ سے زیادہ اجازت شدہ سائز کو بڑھانے کی "
"کوشش کریں۔"

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "حذف کرنے کے لیے بیک اپ منتخب کریں!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "کیا آپ واقعی منتخب بیک اپ (زبانیں) ہٹانا چاہتے ہیں؟"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "بیک اپ چل رہا ہے ، براہ کرم انتظار کریں"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "بحالی چل رہی ہے، براہ کرم انتظار کریں۔"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "بیک اپ کے لیے کچھ بھی منتخب نہیں کیا گیا۔"

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP فائل منیجر - بیک اپ / بحال کریں"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "بیک اپ کے اختیارات:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "ڈیٹا بیس کا بیک اپ"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "فائلوں کا بیک اپ"

#: inc/backup.php:68
msgid "Plugins"
msgstr "پلگ انز"

#: inc/backup.php:71
msgid "Themes"
msgstr "موضوعات"

#: inc/backup.php:74
msgid "Uploads"
msgstr "اپ لوڈز"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "دوسرے (کسی بھی دوسری ڈائرکٹریوں میں WP- مشمولات کے اندر موجود)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "ابھی بیک اپ"

#: inc/backup.php:89
msgid "Time now"
msgstr "اب وقت ہوا ہے"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "کامیابی"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "بیک اپ کامیابی کے ساتھ حذف ہوگیا۔"

#: inc/backup.php:102
msgid "Ok"
msgstr "ٹھیک ہے"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "فائلیں حذف کریں"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "کیا آپ واقعی یہ بیک اپ حذف کرنا چاہتے ہیں؟"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "منسوخ کریں"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "تصدیق کریں"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "فائلوں کو بحال کریں"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "کیا آپ واقعی یہ بیک اپ بحال کرنا چاہتے ہیں؟"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "آخری لاگ پیغام"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "بیک اپ بظاہر کامیاب ہوگیا اور اب مکمل ہے۔"

#: inc/backup.php:171
msgid "No log message"
msgstr "کوئی لاگ پیغام نہیں ہے"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "موجودہ بیک اپ (زبانیں)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "بیک اپ کی تاریخ"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "بیک اپ ڈیٹا (ڈاؤن لوڈ کرنے کے لئے کلک کریں)"

#: inc/backup.php:190
msgid "Action"
msgstr "عمل"

#: inc/backup.php:210
msgid "Today"
msgstr "آج"

#: inc/backup.php:239
msgid "Restore"
msgstr "بحال کریں"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "حذف کریں"

#: inc/backup.php:241
msgid "View Log"
msgstr "لاگ دیکھیں"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "فی الحال کوئی بیک اپ نہیں ملا ہے۔"

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "منتخب کردہ بیک اپ پر کام"

#: inc/backup.php:251
msgid "Select All"
msgstr "تمام منتخب کریں"

#: inc/backup.php:252
msgid "Deselect"
msgstr "غیر منتخب کریں"

#: inc/backup.php:254
msgid "Note:"
msgstr "نوٹ:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "بیک اپ فائلوں کے تحت ہوں گے"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP فائل مینیجر کی شراکت"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"نوٹ: یہ ڈیمو اسکرین شاٹس ہیں۔ براہ کرم نوٹس افعال کے لئے فائل مینیجر کو "
"خریدیں"

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "PRO خریدنے کے لیے کلک کریں۔"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "پی ار او خریدیں"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "فائلیں لاگ میں ترمیم کریں"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "فائلوں کا نوشتہ ڈاؤن لوڈ کریں"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "فائلوں کے لاگز اپ لوڈ کریں"

#: inc/root.php:43
msgid "Settings saved."
msgstr "ترتیبات محفوظ ہوگئیں۔"

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "اس نوٹس کو مسترد کریں۔"

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "آپ نے بچانے کیلئے کوئی تبدیلیاں نہیں کی ہیں۔"

#: inc/root.php:55
msgid "Public Root Path"
msgstr "عوامی جڑ کا راستہ"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "فائل مینیجر روٹ راہ ، آپ اپنی پسند کے مطابق تبدیل کرسکتے ہیں۔"

#: inc/root.php:59
msgid "Default:"
msgstr "پہلے سے طے شدہ:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"براہ کرم اس کو احتیاط سے تبدیل کریں ، غلط راستہ فائل مینیجر پلگ ان کو نیچے "
"جانے کی راہنمائی کرسکتا ہے۔"

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "کوڑے دان کو چالو کریں؟"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"کوڑے دان کو چالو کرنے کے بعد ، آپ کی فائلیں کوڑے دان کے فولڈر میں جائیں گی۔"

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "میڈیا لائبریری میں فائلیں اپ لوڈ کریں کو قابل بنائیں؟"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "اس کو چالو کرنے کے بعد تمام فائلیں میڈیا لائبریری میں جائیں گی۔"

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "ڈیٹا بیس بیک اپ کی بحالی کے وقت زیادہ سے زیادہ اجازت شدہ سائز۔"

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"اگر آپ کو بیک اپ کی بحالی کے وقت ایرر میسج موصول ہو رہا ہے تو براہ کرم فیلڈ "
"ویلیو میں اضافہ کریں۔"

#: inc/root.php:90
msgid "Save Changes"
msgstr "تبدیلیاں محفوظ کرو"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "ترتیبات - عام"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"نوٹ: یہ صرف ایک ڈیمو اسکرین شاٹ ہے۔ ترتیبات حاصل کرنے کے لئے براہ کرم ہمارا "
"حامی ورژن خریدیں۔"

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"یہاں منتظم فائل مینجر کو استعمال کرنے کے لئے صارف کے کرداروں تک رسائی دے "
"سکتا ہے۔ ایڈمن ڈیفالٹ ایکسیس فولڈر سیٹ کرسکتے ہیں اور فائل مینجر کے اپلوڈ "
"سائز کو بھی کنٹرول کرسکتے ہیں۔"

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "ترتیبات - کوڈ ایڈیٹر"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"فائل مینیجر کے پاس ایک کوڈ ایڈیٹر ہے جس میں متعدد موضوعات ہیں۔ آپ کوڈ ایڈیٹر "
"کے لئے کسی بھی تھیم کو منتخب کرسکتے ہیں۔ جب آپ کسی بھی فائل میں ترمیم کریں "
"گے تو یہ ظاہر ہوگا۔ نیز آپ کوڈ ایڈیٹر کے پورے اسکرین وضع کی اجازت دے سکتے "
"ہیں۔"

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "کوڈ ایڈیٹر دیکھیں"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "ترتیبات - صارف کی پابندیاں"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"ایڈمن کسی بھی صارف کے اقدامات کو محدود کرسکتا ہے۔ فائلوں اور فولڈروں کو بھی "
"چھپائیں اور مختلف صارفین کے لئے مختلف - فولڈر کے مختلف راستے ترتیب دے سکتے "
"ہیں۔"

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "ترتیبات - صارف کے کردار پر پابندیاں"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"ایڈمن کسی بھی صارف کے عمل کو روک سکتا ہے۔ فائلوں اور فولڈروں کو بھی چھپائیں "
"اور مختلف سیٹ کرسکتے ہیں - مختلف صارفین کے رول کے لئے مختلف فولڈر راہیں۔"

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "فائل منیجر - مختصر"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "استعمال:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"یہ سامنے کے آخر میں فائل مینیجر کو دکھائے گا۔ آپ فائل مینیجر کی ترتیبات سے "
"تمام ترتیبات کو کنٹرول کر سکتے ہیں۔ یہ بیک اینڈ ڈبلیو پی فائل مینیجر کی طرح "
"کام کرے گا۔"

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"یہ سامنے کے آخر میں فائل مینیجر کو دکھائے گا۔ لیکن صرف ایڈمنسٹریٹر ہی اس تک "
"رسائی حاصل کر سکتا ہے اور فائل مینیجر کی ترتیبات سے کنٹرول کرے گا۔"

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "پیرامیٹرز:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"یہ تمام کرداروں کو فرنٹ اینڈ پر فائل مینیجر تک رسائی کی اجازت دے گا یا آپ "
"صارف کے مخصوص کرداروں کے لیے آسان استعمال کر سکتے ہیں جیسے اجازت_رول="
"\"ایڈیٹر، مصنف\" (کوما سے الگ کیا گیا(،))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"یہاں \"ٹیسٹ\" فولڈر کا نام ہے جو روٹ ڈائرکٹری پر واقع ہے، یا آپ ذیلی فولڈرز "
"کے لیے راستہ دے سکتے ہیں جیسے \"wp-content/plugins\"۔ اگر خالی یا خالی چھوڑ "
"دیں تو یہ روٹ ڈائرکٹری کے تمام فولڈرز تک رسائی حاصل کر لے گا۔ ڈیفالٹ: روٹ "
"ڈائریکٹری"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"فائلوں کو لکھنے کی اجازت تک رسائی کے لیے، نوٹ: true/false، default: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"فائلوں کو پڑھنے کی اجازت تک رسائی کے لیے، نوٹ: true/false، default: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "اس کا ذکر یہاں چھپ جائے گا۔ نوٹ: کوما (،) سے الگ کیا گیا۔ طے شدہ: صفر"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"اس کا ذکر کوما میں بند کر دیا جائے گا۔ آپ مزید لاک کر سکتے ہیں جیسے \".php,."
"css,.js\" وغیرہ۔ ڈیفالٹ: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* تمام آپریشنز کے لیے اور کچھ آپریشن کی اجازت دینے کے لیے آپ آپریشن کے نام "
"کا ذکر کر سکتے ہیں جیسے کہ اجازت_آپریشن=\"اپ لوڈ، ڈاؤن لوڈ\"۔ نوٹ: کوما (،) "
"سے الگ کیا گیا۔ ڈیفالٹ: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "فائل آپریشن کی فہرست:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "ڈائریکٹری یا فولڈر بنائیں"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "فائل بنائیں"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "ایک فائل یا فولڈر کا نام تبدیل کریں"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "کسی فولڈر یا فائل کو ڈپلیکیٹ یا کلون کریں"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "ایک فائل یا فولڈر چسپاں کریں"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "پابندی لگانا"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "آرکائیو یا زپ بنانے کے ل"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "آرکائیو یا زپ شدہ فائل کو نکالیں"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "فائلیں یا فولڈرز کاپی کریں"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "سادہ فائل یا فولڈر کٹ"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "ایک فائل میں ترمیم کریں"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "فائلیں اور فولڈرز کو حذف کریں یا حذف کریں"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "فائلیں ڈاؤن لوڈ کریں"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "فائلیں اپ لوڈ کرو"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "چیزیں تلاش کریں"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "فائل کی معلومات"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "مدد"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> یہ خاص طور پر صارفین کو اپنے ایڈز کوما (،) کے ذریعہ تقسیم کرکے پابندی "
"لگائے گا۔ اگر صارف پابندی ہے تو وہ سامنے کے آخر میں ڈبلیو پی پی فائل مینیجر "
"تک رسائی حاصل نہیں کرسکیں گے۔"

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> فائل مینجر UI دیکھیں۔ پہلے سے طے شدہ: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> فائل میں تبدیلی یا تاریخ کی شکل بنائیں۔ پہلے سے طے شدہ: d M، Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> فائل منیجر کی زبان۔ پہلے سے طے شدہ: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> فائل مینیجر تھیم۔ پہلے سے طے شدہ: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "فائل منیجر۔ سسٹم کی خصوصیات"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "پی ایچ پی ورژن"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "زیادہ سے زیادہ فائل اپلوڈ سائز (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "زیادہ سے زیادہ فائل اپ لوڈ سائز (post_max_size) پوسٹ کریں"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "میموری کی حد (میموری_ لیمٹ)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "ٹائم آؤٹ(max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "براؤزر اور او ایس (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "تھیم یہاں تبدیل کریں:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "پہلے سے طے شدہ"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "گہرا"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "ہلکا"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "سرمئی"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "فائل مینیجر میں خوش آمدید"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"ہمیں نئے دوست بنانا پسند ہے! ذیل میں سبسکرائب کریں اور ہم وعدہ کرتے ہیں\n"
"    ہمارے حالیہ نئے پلگ ان ، تازہ کاریوں ،\n"
"    زبردست سودے اور کچھ خصوصی پیش کشیں۔"

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "براہ کرم پہلا نام درج کریں۔"

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "براہ کرم آخری نام درج کریں"

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "برائے مہربانی ای میل ایڈریس درج کریں۔"

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "تصدیق کریں"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "نہیں شکریہ"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "سروس کی شرائط"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "رازداری کی پالیسی"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "بچت…"

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "ٹھیک ہے"

#~ msgid "Backup not found!"
#~ msgstr "بیک اپ نہیں ملا!"

#~ msgid "Backup removed successfully!"
#~ msgstr "بیک اپ کامیابی کے ساتھ ہٹا دیا گیا!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">بیک اپ کامیابی کے ساتھ ہٹا دیا گیا!</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">سیکیورٹی کا مسئلہ.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">ڈیٹا بیس کا بیک اپ ہوگیا۔</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">ڈیٹا بیس کا بیک اپ بنانے سے قاصر۔</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">پلگ ان کا بیک اپ ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">پلگ ان کا بیک اپ ناکام ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">تھیمز کا بیک اپ مکمل ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">تھیمز کا بیک اپ ناکام ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">اپ لوڈز کا بیک اپ ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">اپ لوڈز کا بیک اپ ناکام ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">دوسروں کا بیک اپ ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">دوسروں کا بیک اپ ناکام ہوگیا۔</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">سب ہوگیا</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "اپنے WP فائلوں کا نظم کریں."

#~ msgid "Extensions"
#~ msgstr "توسیع"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "براہ کرم زیادہ مستحکم پلگ ان بنانے کیلئے، کچھ عطیہ کریں. آپ اپنی پسند کی "
#~ "رقم ادا کر سکتے ہیں."
languages/wp-file-manager-da_DK.mo000064400000041624147361034410012774 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(��('�)=�)/
*(=*f*.o*��*�@+@�+D0,u,>�,8�,:�,5-	N-X-#j-�-�-�-�-)�-'./.O.X.
a.l.|.�.	�.�.0�.
�.//-(/(V/+/�/	�/�/�/�/�/�/0$0?0P02_0�0��0 U1v1�1!�16�1�2�2�2�233�3��3
�4�4��4Z�5��5�q67.727;7	S7V]78�7!�78$8=8[8c8w8�8O�8c�8"K9#n9�9�9-�9(�9"�9&:&=:d:
p:{: �:�:�:S�:n8;�;�;�;+�;<8,<e<r<�<�< �<�<�<!�<	==
=*=:=
M=X=
w=�=�=$�=,�=> > 0>Q>b>2s>�>/�>&�>*?-/?]?%d?�?�?�?1�?#�?$
@/@H@e@�@�@�@�@ �@�@AA
9ADALA5^A�A��AbB8}BQ�BDCFMC}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-02 11:06+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: da_DK
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* for alle operationer og for at tillade nogle operationer kan du nævne operationens navn som, allow_operations="upload,download". Bemærk: adskilt af komma(,). Standard: *-> Det vil forbyde bestemte brugere ved blot at sætte deres id adskilt med kommaer (,). Hvis brugeren er Ban, vil de ikke få adgang til wp-filhåndtering i frontend.-> Filhåndteringstema. Standard: Light-> Filændret eller Opret datoformat. Standard: d M, Y h: i A-> Filhåndterings sprog. Standard: English(en)-> Filemanager UI View. Standard: gitterHandlingHandlinger efter valgt (e) sikkerhedskopi (er)Administrator kan begrænse enhver brugers handlinger. Skjul også filer og mapper og kan indstille forskellige - forskellige mappestier til forskellige brugere.Administrator kan begrænse handlinger fra enhver brugerrolle. Skjul også filer og mapper og kan indstille forskellige - forskellige mappestier til forskellige brugerroller.Efter aktivering af papirkurven går dine filer til papirkurven.Efter at have aktiveret dette, går alle filer til mediebiblioteket.Helt færdigEr du sikker på, at du vil fjerne de valgte sikkerhedskopier?Er du sikker på, at du vil slette denne sikkerhedskopi?Er du sikker på, at du vil gendanne denne sikkerhedskopi?SikkerhedskopieringsdatoBackup nuBackupmuligheder:Backup data (klik for at downloade)Backup filer vil være underBackup kører. Vent venligstBackup blev slettet.Sikkerhedskopiering/gendannelseSikkerhedskopier blev fjernet med succes!ForbydeBrowser og OS (HTTP_USER_AGENT)Køb PROKøb ProAfbestilleSkift tema her:Klik for at købe PROKode-editor VisBekræfteKopier filer eller mapperDer findes i øjeblikket ingen sikkerhedskopier.SLET FILERMørkSikkerhedskopiering af databaseDatabasesikkerhedskopiering udført på dato Sikkerhedskopiering af database udført.Databasesikkerhedskopiering blev gendannet.StandardStandard:SletFravælg markeringenAfvis denne meddelelse.DonerDownload fillogfilerDownload filerKopier eller klon en mappe eller filRediger logfilerRediger en filAktivere filer, der uploades til mediebiblioteket?Aktivere papirkurven?Fejl: Kan ikke gendanne sikkerhedskopien, fordi databasesikkerhedskopieringen er stor. Prøv at øge den maksimalt tilladte størrelse fra indstillingerne for præferencer.Eksisterende sikkerhedskopi (er)Uddrag arkiv eller zip-filFilhåndtering - Kort kodeFilhåndtering - SystemegenskaberFile Manager-rodsti, du kan ændre alt efter dit valg.File Manager har en kodeditor med flere temaer. Du kan vælge ethvert tema til kodeditor. Det vises, når du redigerer en fil. Du kan også tillade fuldskærmstilstand for kodeditor.Liste over filoperationer:Filen findes ikke til download.Backup af filerGråHjælpHer er "test" navnet på mappen, som er placeret i rodmappen, eller du kan give stien til undermapper som "wp-content/plugins". Hvis det efterlades tomt eller tomt, vil det få adgang til alle mapper i rodmappen. Standard: RodmappeHer kan admin give adgang til brugerroller for at bruge filemanager. Administrator kan indstille standardadgangsmappe og også kontrollere uploadstørrelse på filadministrator.Info om filenUgyldig sikkerhedskode.Det vil tillade alle roller at få adgang til filhåndtering på frontend, eller du kan simpelt bruge til bestemte brugerroller som f.eks. allow_roles="editor,author" (adskilt af komma(,))Det vil låse nævnt i kommaer. du kan låse flere som ".php,.css,.js" osv. Standard: NullDet vil vise filhåndtering på frontend. Men kun administrator kan få adgang til det og vil styre fra filhåndteringsindstillinger.Det vil vise filhåndtering på frontend. Du kan styre alle indstillinger fra filhåndteringsindstillinger. Det fungerer på samme måde som backend WP filhåndtering.Sidste logmeddelelseLysLogfilerOpret mappe eller mappeOpret filMaksimal tilladt størrelse på tidspunktet for gendannelse af databasesikkerhedskopi.Maksimal filoverførselsstørrelse (upload_max_filesize)Hukommelsesgrænse (memory_limit)Manglende backup-id.Manglende parametertype.Manglende krævede parametre.Nej takIngen logmeddelelseIngen logfiler fundet!Bemærk:Bemærk: Disse er demo-skærmbilleder. Køb File Manager pro til Logfunktioner.Bemærk: Dette er kun et demo-screenshot. For at få indstillinger skal du købe vores pro-version.Der er ikke valgt noget til backupDer er ikke valgt noget til backup.OkayOkayAndre (Andre mapper, der findes i wp-indhold)Andre sikkerhedskopier udført på dato Andre sikkerhedskopiering udført.Andre sikkerhedskopiering mislykkedes.Andre sikkerhedskopier blev gendannet.PHP-versionParametre:Indsæt en fil eller mappeIndtast venligst e-mail-adresse.Indtast fornavn.Indtast venligst efternavn.Ændr dette omhyggeligt, forkert sti kan få filhåndterings-plugin til at gå ned.Forøg venligst feltværdien, hvis du får fejlmeddelelse på tidspunktet for gendannelse af sikkerhedskopien.PluginsPlugin-backup udført den dato Plugins backup udført.Sikkerhedskopiering af plugins mislykkedes.Plugin-backup gendannet.Opret maksimal filoverførselsstørrelse (post_max_size)PræferencerFortrolighedspolitikOffentlig rodstiGENDAN FILERFjern eller slet filer og mapperOmdøb en fil eller mappeGendanGendannelse kører, vent venligstSUCCESGem ændringerGemmer ...Søg efter tingSikkerhedsproblem.Vælg alleVælg backup(r) for at slette!IndstillingerIndstillinger - Kode-editorIndstillinger - GenereltIndstillinger - BrugerbegrænsningerIndstillinger - Begrænsninger i brugerrolleIndstillinger gemt.Kort kode - PROEnkelt klippe en fil eller mappeSystemegenskaberTerms of ServiceBackup lykkedes tilsyneladende og er nu afsluttet.TemaerSikkerhedskopiering af temaer udført den dato Sikkerhedskopiering af temaer udført.Sikkerhedskopiering af temaer mislykkedes.Sikkerhedskopiering af temaer blev gendannet.Tid nuTiden er gået (maks. Udførelsestid)At oprette et arkiv eller zipI dagBRUG:Kan ikke oprette Sikkerhedskopiering af database.Kunne ikke fjerne sikkerhedskopien!Kan ikke gendanne DB-sikkerhedskopi.Kan ikke gendanne andre.Kunne ikke gendanne plugins.Kunne ikke gendanne temaer.Kunne ikke gendanne uploads.Upload filer LogfilerUpload filerUploadsUploads backup udført på dato Uploader backup udført.Uploads backup mislykkedes.Uploads backup gendannet.VerificereVis logWP filhåndteringWP filhåndtering - Sikkerhedskopiering / gendannelseWP filhåndtering-bidragVi elsker at få nye venner! Abonner nedenfor, og vi lover at
    holde dig opdateret med vores nyeste nye plugins, opdateringer,
    fantastiske tilbud og et par specielle tilbud.Velkommen til File ManagerDu har ikke foretaget nogen ændringer, der skal gemmes.for adgang til tilladelse til at læse filer, bemærk: sand/falsk, standard: sandfor adgang til at skrive filer, bemærk: sand/falsk, standard: falskdet vil skjule nævnt her. Bemærk: adskilt af komma(,). Standard: Nullanguages/wp-file-manager-gu.po000064400000102125147361034410012442 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 09:41+0530\n"
"PO-Revision-Date: 2022-03-02 10:57+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: gu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "થીમ્સ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "થીમ્સ પુનઃસ્થાપિત કરવામાં અસમર્થ."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "અપલોડ્સ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "અપલોડ્સ પુનઃસ્થાપિત કરવામાં અસમર્થ."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "અન્ય બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "અન્ય પુનઃસ્થાપિત કરવામાં અસમર્થ."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "પ્લગઈન્સ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "પ્લગઈન્સ પુનઃસ્થાપિત કરવામાં અસમર્થ."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "ડેટાબેઝ બેકઅપ સફળતાપૂર્વક પુનઃસ્થાપિત."

#: file_folder_manager.php:286 file_folder_manager.php:297 file_folder_manager.php:588
#: file_folder_manager.php:592
msgid "All Done"
msgstr "બધુ થઈ ગયું"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB બેકઅપ પુનઃસ્થાપિત કરવામાં અસમર્થ."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "બેકઅપ સફળતાપૂર્વક દૂર કર્યા!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "બેકઅપ દૂર કરવામાં અસમર્થ!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "ડેટાબેઝ બેકઅપ તારીખે પૂર્ણ થયું"

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "પ્લગઇન્સ બેકઅપ તારીખે પૂર્ણ થયું"

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "થીમ્સ બેકઅપ તારીખે પૂર્ણ થયું"

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "અપલોડ બેકઅપ તારીખે પૂર્ણ થયું"

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "અન્ય બેકઅપ તારીખે પૂર્ણ"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "લોગ્સ"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "કોઈ લોગ મળ્યા નથી!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "બેકઅપ માટે કંઈપણ પસંદ કરેલ નથી"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "સુરક્ષા સમસ્યા."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "ડેટાબેઝ બેકઅપ પૂર્ણ."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "ડેટાબેઝ બેકઅપ બનાવવામાં અસમર્થ."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "પ્લગઈન્સ બેકઅપ થઈ ગયું."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "પ્લગઈન્સ બેકઅપ નિષ્ફળ થયું."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "થીમ્સ બેકઅપ થઈ ગયું."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "થીમ્સ બેકઅપ નિષ્ફળ થયું."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "અપલોડ બેકઅપ પૂર્ણ થયું."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "અપલોડ બેકઅપ નિષ્ફળ થયું."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "અન્ય બેકઅપ પૂર્ણ."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "અન્ય બેકઅપ નિષ્ફળ થયું."

#: file_folder_manager.php:761 file_folder_manager.php:762 lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP ફાઇલ વ્યવસ્થાપક"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "સેટિંગ્સ"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "પસંદગીઓ"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "સિસ્ટમ ગુણધર્મો"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "શોર્ટકોડ – પ્રો"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "બેકઅપ/રીસ્ટોર"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "પ્રો ખરીદો"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "દાન કરવું"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "ડાઉનલોડ કરવા માટે ફાઇલ અસ્તિત્વમાં નથી."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "અમાન્ય સુરક્ષા કોડ."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "બેકઅપ આઈડી ખૂટે છે."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "પેરામીટર પ્રકાર ખૂટે છે."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "જરૂરી પરિમાણો ખૂટે છે."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum "
"allowed size  from Preferences settings."
msgstr ""
"ભૂલ: બેકઅપ પુનઃસ્થાપિત કરવામાં અસમર્થ કારણ કે ડેટાબેઝ બેકઅપ કદમાં ભારે છે. કૃપા કરીને પસંદગી સેટિંગ્સમાંથી મહત્તમ માન્ય કદ "
"વધારવાનો પ્રયાસ કરો."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "કાઢી નાખવા માટે બેકઅપ પસંદ કરો!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "શું તમે ખરેખર પસંદ કરેલ બેકઅપ(ઓ) દૂર કરવા માંગો છો?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "બેકઅપ ચાલી રહ્યું છે, કૃપા કરીને રાહ જુઓ"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "રિસ્ટોર ચાલી રહ્યું છે, કૃપા કરીને રાહ જુઓ"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "બેકઅપ માટે કંઈપણ પસંદ કરેલ નથી."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP ફાઇલ મેનેજર - બેકઅપ/રીસ્ટોર"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "બેકઅપ વિકલ્પો:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "ડેટાબેઝ બેકઅપ"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "ફાઈલો બેકઅપ"

#: inc/backup.php:68
msgid "Plugins"
msgstr "પ્લગઇન્સ"

#: inc/backup.php:71
msgid "Themes"
msgstr "થીમ્સ"

#: inc/backup.php:74
msgid "Uploads"
msgstr "અપલોડ્સ"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "અન્ય (wp-content ની અંદર જોવા મળતી અન્ય કોઈપણ ડિરેક્ટરીઓ)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "હવે બેકઅપ લો"

#: inc/backup.php:89
msgid "Time now"
msgstr "હવે સમય"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "સફળતા"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "બેકઅપ સફળતાપૂર્વક કાઢી નાખ્યું."

#: inc/backup.php:102
msgid "Ok"
msgstr "બરાબર"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ફાઇલો કાઢી નાખો"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "શું તમે ખરેખર આ બેકઅપ કાઢી નાખવા માંગો છો?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "રદ કરો"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "પુષ્ટિ કરો"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ફાઇલો પુનઃસ્થાપિત કરો"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "શું તમે ખરેખર આ બેકઅપ પુનઃસ્થાપિત કરવા માંગો છો?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "છેલ્લો લોગ સંદેશ"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "બેકઅપ દેખીતી રીતે સફળ થયું અને હવે પૂર્ણ થયું છે."

#: inc/backup.php:171
msgid "No log message"
msgstr "કોઈ લોગ સંદેશ નથી"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "હાલનું બેકઅપ"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "બેકઅપ તારીખ"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "બેકઅપ ડેટા (ડાઉનલોડ કરવા માટે ક્લિક કરો)"

#: inc/backup.php:190
msgid "Action"
msgstr "ક્રિયા"

#: inc/backup.php:210
msgid "Today"
msgstr "આજે"

#: inc/backup.php:239
msgid "Restore"
msgstr "પુનઃસ્થાપિત"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "કાઢી નાખો"

#: inc/backup.php:241
msgid "View Log"
msgstr "લોગ જુઓ"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "હાલમાં કોઈ બેકઅપ(ઓ) મળ્યું નથી."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "પસંદ કરેલ બેકઅપ(ઓ) પરની ક્રિયાઓ"

#: inc/backup.php:251
msgid "Select All"
msgstr "બધા પસંદ કરો"

#: inc/backup.php:252
msgid "Deselect"
msgstr "નાપસંદ કરો"

#: inc/backup.php:254
msgid "Note:"
msgstr "નૉૅધ:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "બેકઅપ ફાઈલો હેઠળ હશે"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP ફાઇલ મેનેજરનું યોગદાન"

#: inc/logs.php:7
msgid "Note: These are demo screenshots. Please buy File Manager pro to Logs functions."
msgstr "નોંધ: આ ડેમો સ્ક્રીનશૉટ્સ છે. કૃપા કરીને લોગ્સ ફંક્શન માટે ફાઇલ મેનેજર પ્રો ખરીદો."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "પ્રો ખરીદવા માટે ક્લિક કરો"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27 inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "પ્રો ખરીદો"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "ફાઇલ લૉગ્સ સંપાદિત કરો"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "ફાઇલ લૉગ્સ ડાઉનલોડ કરો"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "ફાઇલો લોગ અપલોડ કરો"

#: inc/root.php:43
msgid "Settings saved."
msgstr "સેટિંગ્સ સાચવી."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "આ નોટિસ કાઢી નાખો."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "તમે સાચવવા માટે કોઈ ફેરફાર કર્યા નથી."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "જાહેર રુટ પાથ"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "ફાઇલ મેનેજર રૂટ પાથ, તમે તમારી પસંદગી અનુસાર બદલી શકો છો."

#: inc/root.php:59
msgid "Default:"
msgstr "ડિફૉલ્ટ:"

#: inc/root.php:60
msgid "Please change this carefully, wrong path can lead file manager plugin to go down."
msgstr "કૃપા કરીને આને કાળજીપૂર્વક બદલો, ખોટો રસ્તો ફાઈલ મેનેજર પ્લગઈનને નીચે જઈ શકે છે."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "ટ્રેશ સક્ષમ કરીએ?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "ટ્રેશને સક્ષમ કર્યા પછી, તમારી ફાઇલો ટ્રેશ ફોલ્ડરમાં જશે."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "મીડિયા લાઇબ્રેરીમાં ફાઇલો અપલોડ કરવાનું સક્ષમ કરીએ?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "આને સક્ષમ કર્યા પછી બધી ફાઇલો મીડિયા લાઇબ્રેરીમાં જશે."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "ડેટાબેઝ બેકઅપ પુનઃસ્થાપના સમયે મહત્તમ માન્ય કદ."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid "Please increase field value if you are getting error message at the time of backup restore."
msgstr "જો તમને બેકઅપ પુનઃસ્થાપના સમયે ભૂલ સંદેશો મળે તો કૃપા કરીને ફીલ્ડ મૂલ્ય વધારો."

#: inc/root.php:90
msgid "Save Changes"
msgstr "ફેરફારો સંગ્રહ"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "સેટિંગ્સ - સામાન્ય"

#: inc/settings.php:11 inc/settings.php:26
msgid "Note: This is just a demo screenshot. To get settings please buy our pro version."
msgstr "નોંધ: આ ફક્ત એક ડેમો સ્ક્રીન છે સેટિંગ્સ મેળવવા માટે અમારા પ્રો આવૃત્તિ ખરીદી કરો."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also "
"control upload size of filemanager."
msgstr ""
"અહીં એડમિન ફાઇલમેનિઅરનો ઉપયોગ કરવા માટે વપરાશકર્તા ભૂમિકાઓને ઍક્સેસ આપી શકે છે. એડમિન ડિફૉલ્ટ ઍક્સેસ ફોલ્ડર સેટ કરી શકે છે અને "
"ફાઇલમેનિઅરનું અપલોડ માપ પણ નિયંત્રિત કરી શકે છે."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "સેટિંગ્સ - કોડ-એડિટર"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any theme for code editor. It will "
"display when you edit any file. Also you can allow fullscreen mode of code editor."
msgstr ""
"ફાઇલ વ્યવસ્થાપક પાસે બહુવિધ થીમ્સ સાથેનો કોડ એડિટર છે તમે કોડ એડિટર માટે કોઈપણ થીમ પસંદ કરી શકો છો. જ્યારે તમે કોઈપણ ફાઇલ "
"સંપાદિત કરો ત્યારે તે પ્રદર્શિત થશે. પણ તમે કોડ એડિટરના પૂર્ણસ્ક્રીન મોડને મંજૂરી આપી શકો છો."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "કોડ એડિટર જુઓ"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "સેટિંગ્સ - વપરાશકર્તા પ્રતિબંધો"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can set different - different "
"folders paths for different users."
msgstr ""
"એડમિન કોઈપણ વપરાશકર્તાની ક્રિયાઓ પ્રતિબંધિત કરી શકે છે. પણ ફાઇલો અને ફોલ્ડર્સને છુપાવી શકો છો અને અલગ અલગ સેટ કરી શકો છો "
"- જુદા જુદા વપરાશકર્તાઓ માટે અલગ ફોલ્ડર પાથ."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "સેટિંગ્સ - વપરાશકર્તા ભૂમિકા પ્રતિબંધો"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and can set different - different "
"folders paths for different users roles."
msgstr ""
"એડમિન કોઈપણ userrole ની ક્રિયાઓ પ્રતિબંધિત કરી શકે છે. ફાઇલો અને ફોલ્ડર્સ પણ છુપાવો અને જુદા જુદા વપરાશકર્તાઓની ભૂમિકાઓ "
"માટે અલગ-અલગ ફોલ્ડર્સ પાથ સેટ કરી શકો છો."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "ફાઇલ મેનેજર - શોર્ટકોડ"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17 inc/shortcode_docs.php:19
msgid "USE:"
msgstr "વાપરવુ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from file manager settings. It will "
"work same as backend WP File Manager."
msgstr ""
"તે ફ્રન્ટ એન્ડ પર ફાઇલ મેનેજર બતાવશે. તમે ફાઇલ મેનેજર સેટિંગ્સમાંથી બધી સેટિંગ્સને નિયંત્રિત કરી શકો છો. તે બેકએન્ડ WP ફાઇલ મેનેજરની "
"જેમ જ કામ કરશે."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it and will control from file "
"manager settings."
msgstr ""
"તે ફ્રન્ટ એન્ડ પર ફાઇલ મેનેજર બતાવશે. પરંતુ માત્ર એડમિનિસ્ટ્રેટર જ તેને એક્સેસ કરી શકે છે અને તે ફાઇલ મેનેજર સેટિંગ્સમાંથી નિયંત્રિત કરશે."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "પરિમાણો:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can simple use for particular user roles "
"as like allowed_roles=\"editor,author\" (seprated by comma(,))"
msgstr ""
"તે બધી ભૂમિકાઓને ફ્રન્ટ એન્ડ પર ફાઇલ મેનેજરને ઍક્સેસ કરવાની મંજૂરી આપશે અથવા તમે ચોક્કસ વપરાશકર્તા ભૂમિકાઓ માટે સરળ ઉપયોગ કરી "
"શકો છો જેમ કે allow_roles=\"editor,author\" (અલ્પવિરામ દ્વારા વિભાજિત(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or you can give path for sub folders "
"as like \"wp-content/plugins\". If leave blank or empty it will access all folders on root directory. "
"Default: Root directory"
msgstr ""
"અહીં \"ટેસ્ટ\" એ ફોલ્ડરનું નામ છે જે રૂટ ડાયરેક્ટરી પર સ્થિત છે, અથવા તમે \"wp-content/plugins\" જેવા સબ ફોલ્ડર્સ માટે પાથ આપી "
"શકો છો. જો ખાલી અથવા ખાલી છોડો તો તે રૂટ ડિરેક્ટરી પરના તમામ ફોલ્ડર્સને ઍક્સેસ કરશે. ડિફૉલ્ટ: રૂટ ડિરેક્ટરી"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "ફાઇલો લખવાની પરવાનગી મેળવવા માટે, નોંધ કરો: true/false, default: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "ફાઇલો વાંચવાની પરવાનગી મેળવવા માટે, નોંધ કરો: true/false, default: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "તે અહીં ઉલ્લેખ છુપાવશે. નોંધ: અલ્પવિરામ (,) દ્વારા વિભાજિત. ડિફૉલ્ટ: નલ"

#: inc/shortcode_docs.php:36
msgid "It will lock mentioned in commas. you can lock more as like \".php,.css,.js\" etc. Default: Null"
msgstr "તે અલ્પવિરામમાં ઉલ્લેખિત લૉક કરશે. તમે \".php,.css,.js\" વગેરે જેવા વધુ લોક કરી શકો છો. ડિફોલ્ટ: નલ"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation name as like, allowed_operations="
"\"upload,download\". Note: seprated by comma(,). Default: *"
msgstr ""
"* તમામ કામગીરી માટે અને અમુક કામગીરીને મંજૂરી આપવા માટે તમે ઓપરેશન નામનો ઉલ્લેખ કરી શકો છો જેમ કે, મંજૂર_ઓપરેશન=\"અપલોડ, "
"ડાઉનલોડ\". નોંધ: અલ્પવિરામ (,) દ્વારા વિભાજિત. ડિફૉલ્ટ: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "ફાઇલ કામગીરીની સૂચિ:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "ડિરેક્ટરી અથવા ફોલ્ડર બનાવો"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "ફાઇલ બનાવો"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "ફાઇલ અથવા ફોલ્ડરનું નામ બદલો"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "ફોલ્ડર અથવા ફાઇલનું ડુપ્લિકેટ અથવા ક્લોન કરો"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "ફાઇલ અથવા ફોલ્ડર પેસ્ટ કરો"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "પ્રતિબંધ"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "આર્કાઇવ અથવા ઝિપ બનાવવા માટે"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "આર્કાઇવ અથવા ઝિપ કરેલી ફાઇલને બહાર કાઢો"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "ફાઇલો અથવા ફોલ્ડર્સની નકલ કરો"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "ફાઇલ અથવા ફોલ્ડરને સરળ કાપો"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "ફાઇલમાં ફેરફાર કરો"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "ફાઇલો અને ફોલ્ડર્સ દૂર કરો અથવા કાઢી નાખો"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "ફાઇલો ડાઉનલોડ કરો"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "ફાઇલો અપલોડ કરો"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "વસ્તુઓ શોધો"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "ફાઇલની માહિતી"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "મદદ"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they "
"will not able to access wp file manager on front end."
msgstr ""
"-> તે ચોક્કસ વપરાશકર્તાઓને અલ્પવિરામ (,) દ્વારા અલગ કરાયેલ તેમના આઈડી મૂકીને પ્રતિબંધિત કરશે. જો વપરાશકર્તા પ્રતિબંધિત છે તો "
"તેઓ આગળના છેડે wp ફાઇલ મેનેજરને ઍક્સેસ કરી શકશે નહીં."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> ફાઇલમેનેજર UI વ્યૂ. ડિફૉલ્ટ: ગ્રીડ"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> ફાઇલ સંશોધિત અથવા તારીખ ફોર્મેટ બનાવો. ડિફોલ્ટ: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> ફાઇલ મેનેજર ભાષા. મૂળભૂત: અંગ્રેજી(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> ફાઇલ મેનેજર થીમ. મૂળભૂત: પ્રકાશ"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "ફાઇલ મેનેજર - સિસ્ટમ ગુણધર્મો"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP આવૃત્તિ"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "મહત્તમ ફાઇલ અપલોડ કદ (અપલોડ_માક્સ_ફાઇલેસીઝ) "

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "મહત્તમ ફાઇલ અપલોડ કદ પોસ્ટ કરો (પોસ્ટ_મેક્સ_સાઇઝ)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "મેમરી મર્યાદા (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "સમયસમાપ્તિ (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "બ્રાઉઝર અને OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "થીમ અહીં બદલો:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "ડિફૉલ્ટ"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "શ્યામ"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "પ્રકાશ"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "ભૂખરા"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "ફાઇલ મેનેજરમાં આપનું સ્વાગત છે"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"અમને નવા મિત્રો બનાવવાનું ગમે છે! નીચે સબ્સ્ક્રાઇબ કરો અને અમે તમને અમારા નવીનતમ નવા પ્લગિન્સ, અપડેટ્સ, અદ્ભુત ડીલ્સ અને કેટલીક "
"વિશેષ ઑફર્સ સાથે અપ-ટૂ-ડેટ રાખવાનું વચન આપીએ છીએ."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "કૃપા કરીને પ્રથમ નામ દાખલ કરો."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "કૃપા કરીને છેલ્લું નામ દાખલ કરો."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "કૃપા કરીને ઇમેઇલ સરનામું દાખલ કરો."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "ચકાસો"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "ના આભાર"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "સેવાની શરતો"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "ગોપનીયતા નીતિ"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "સાચવી રહ્યું છે..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "બરાબર"

#~ msgid "Manage your WP files."
#~ msgstr "તમારા WP ફાઇલો મેનેજ કરો"

#~ msgid "Extensions"
#~ msgstr "એક્સ્ટેન્શન્સ"

#~ msgid "Please contribute some donation, to make plugin more stable. You can pay amount of your choice."
#~ msgstr "પ્લગઇન વધુ સ્થિર બનાવવા માટે, કેટલાક દાન ફાળો કૃપા કરીને. તમે તમારી પસંદગીની રકમ ચૂકવી શકો છો"
languages/wp-file-manager-eo.mo000064400000041671147361034410012437 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�N(��(0�)B�)4*'M*u*y*��*�;+2�+;,X,2d,7�,:�,
--#-$3-X-#t-�-�-�-
�-"�-
..2.9.P.e.t.}."�.�.�.�."�.
/%-/	S/
]/h/	o/y/�/�/�/+�/�/�/>
0L0�`0�0#1 61"W1Dz1��1�2 �2�2�2�2�2��3�4�4��4]�5��5�~6!787	@7J7
i7@w7;�7�78*8A8
^8i8�8�8a�8b9h9�9�9�94�9&�9:%:%D:
j:u:�:!�:�:�:f�:Lb;	�;%�;#�;(<%,<<R<�<�<�<�<+�<�<	="&=I=Q=
d=r=�=
�="�=�=�=�=�= >1>F>&X>>�>,�>�>�>�>#?05?	f?p?�?�?�?%�?�?"�?@":@]@x@�@�@�@,�@�@#A-3AaAjAzA+�A"�A��A�B �BH�BPCLlC}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 15:39+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: eo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* por ĉiuj operacioj kaj por permesi iun operacion vi povas mencii operacionomon kiel, allow_operations="alŝuti, elŝuti". Noto: apartigita per komo (,). Defaŭlte: *-> Ĝi malpermesos apartajn uzantojn nur metante iliajn identigilojn kun komoj (,). Se uzanto estas Ban, tiam ili ne povos aliri wp-dosieradministrilon ĉe antaŭa finaĵo.-> Temo pri Dosieradministrilo. Defaŭlta: Light-> Dosiera Modifita aŭ Kreu datformaton. Defaŭlta: d M, Y h: i A-> Dosieradministrilo Lingvo. Defaŭlta: English(en)-> Filemanager UI-Vido. Defaŭlta: gridAgoAgoj sur elektitaj sekurkopiojAdministranto povas limigi agojn de iu ajn uzanto. Ankaŭ kaŝu dosierojn kaj dosierujojn kaj povas agordi malsamajn - malsamajn dosierujojn por diversaj uzantoj.Administranto povas limigi agojn de iu ajn userrolo. Ankaŭ kaŝu dosierojn kaj dosierujojn kaj povas agordi malsamajn - malsamajn dosierujojn por malsamaj roloj de uzantoj.Post ebligi rubujon, viaj dosieroj iros al rubujo.Post tio, ĉiuj dosieroj iros al amaskomunikila biblioteko.Ĉio FaritaĈu vi certe volas forigi elektitajn sekurkopiojn?Ĉu vi certas, ke vi volas forigi ĉi tiun sekurkopion?Ĉu vi certas, ke vi volas restarigi ĉi tiun sekurkopion?Rezerva DatoRezerva NunRezerva Opcioj:Rezerva datumo (alklaku por elŝuti)Rezervaj dosieroj estos subSekurkopio funkcias, bonvolu atendiSekurkopio sukcese forigita.Rezerva/RestarigiSekurkopioj forigitaj sukcese!MalpermesoFoliumilo kaj OS (HTTP_USER_AGENT)Aĉetu PROAĉetu ProfesiulonNuligiŜanĝu Temon Ĉi tie:Klaku por Aĉeti PROKodo-redaktiloKonfirmuKopiu dosierojn aŭ dosierujojnNuntempe neniu sekurkopio trovita.DELETE FILESMalhelaDatumbaza SekurkopioDatumbaza rezervo farita ĝis nun Sekurkopio de datumbazo farita.Datumbaza rezervo sukcese restaŭris.DefaŭltaDefaŭlta:ForigiMalelektiMalakceptu ĉi tiun avizon.DoniElŝuti dosierojnElŝuti dosierojnDuplikas aŭ klonas dosierujon aŭ dosieronRedaktu dosierojnRedaktu dosieronĈu ebligi alŝutojn de dosieroj al amaskomunikila biblioteko?Ĉu ebligi rubujon?Eraro: Ne eblas restarigi sekurkopion ĉar datumbaza sekurkopio estas peza en grandeco. Bonvolu provi pliigi Maksimuman permesitan grandecon de Preferoj.Ekzistantaj SekurkopiojĈerpu arkivon aŭ zipitan dosieronDosieradministrilo - mallongkodoDosieradministrilo - Sistemaj EcojDosiera Administranto-Radika Vojo, vi povas ŝanĝi laŭ via elekto.Dosieradministrilo havas kodredaktilon kun multaj temoj. Vi povas elekti iun ajn temon por kodredaktilo. Ĝi aperos kiam vi redaktos iun ajn dosieron. Ankaŭ vi povas permesi plenekranan reĝimon de kodredaktilo.Listo de Dosieraj Operacioj:Dosiero ne ekzistas por elŝuti.Dosieroj RezervaGrizaHelpuĈi tie "testo" estas la nomo de dosierujo, kiu troviĝas en radika dosierujo, aŭ vi povas doni vojon por subdosierujoj kiel "wp-content/kromaĵoj". Se lasas malplena aŭ malplena ĝi aliros ĉiujn dosierujojn en radika dosierujo. Defaŭlte: Radika dosierujoĈi tie administranto povas doni aliron al uzantaj roloj por uzi dosieradministrilon. Administranto povas agordi Defaŭltan Aliran Dosierujon kaj ankaŭ regi alŝutajn grandecojn de dosieradministrilo.Informo pri dosieroNevalida Sekureca Kodo.Ĝi permesos al ĉiuj roloj aliri dosiermanaĝeron ĉe la frontfino aŭ Vi povas simple uzi por apartaj uzantroloj kiel kiel allow_roles="redaktoro, aŭtoro" (disigita per komo(,))Ĝi ŝlosos menciitan en komoj. vi povas ŝlosi pli kiel ".php,.css,.js" ktp. Defaŭlte: NulaĜi montros dosiermanaĝeron ĉe la antaŭa fino. Sed nur Administranto povas aliri ĝin kaj kontrolos de dosiermanaĝera agordo.Ĝi montros dosiermanaĝeron ĉe la antaŭa fino. Vi povas kontroli ĉiujn agordojn de agordoj de dosiermanaĝero. Ĝi funkcios same kiel backend WP File Manager.Lasta Ensaluta MesaĝoMalpezaRegistrojFaru dosierujon aŭ dosierujonFaru dosieronMaksimuma permesita grandeco dum datumbaza sekurkopio restarigo.Maksimuma grandeco de alŝuta dosiero (upload_max_filesize)Memora Limo (memory_limit)Mankas rezerva identigilo.Mankas parametro-tipo.Mankas bezonataj parametroj.Ne, dankonNeniu protokola mesaĝoNeniuj protokoloj trovitaj!Noto:Noto: Ĉi tiuj estas elmontraj ekrankopioj. Bonvolu aĉeti dosieradministrilon por Logs-funkcioj.Noto: Ĉi tio estas nur demo-ekrankopio. Por akiri agordojn bonvolu aĉeti nian profesian version.Nenio elektita por sekurkopioNenio elektita por sekurkopio.boneBoneAliaj (Ĉiuj aliaj adresaroj trovitaj en wp-content)Aliaj sekurkopioj plenumitaj ĝis nun Aliaj sekurkopioj farita.Aliaj sekurkopioj malsukcesis.Aliaj sekurkopioj sukcese restaŭris.PHP-versioParametroj:Algluu dosieron aŭ dosierujonBonvolu Enigi Retpoŝtan Adreson.Bonvolu Enigi Antaŭnomon.Bonvolu Enigi Familian nomon.Bonvolu ŝanĝi ĉi tion zorge, malĝusta vojo povas konduki al dosieradministrila kromaĵo malsupren.Bonvolu pliigi kampvaloron se vi ricevas erarmesaĝon dum rezerva restarigo.KromaĵojKromaĵoj-sekurkopio farita ĝis nun Sekurkopio de kromprogramoj farita.Sekurkopio de kromprogramoj malsukcesis.Kromaĵoj-rezervo sukcese restarigis.Afiŝu maksimuman dosieron alŝuti grandecon (post_max_size)PreferojPrivateca PolitikoPublika Radika VojoRESTORI DOSIEROJNForigi aŭ forigi dosierojn kaj dosierujojnRenomi dosieron aŭ dosierujonRestaŭriRestarigo funkcias, bonvolu atendiSUKCESOKonservu ŜanĝojnŜparante ...Serĉu aferojnSekureca Problemo.Elekti ĉiujnElektu sekurkopion(j)n por forigi!AgordojAgordoj - KodredaktiloAgordoj - ĜeneralajAgordoj - Uzaj LimigojAgordoj - Limigoj de Uzanto-RoloAgordoj konservitaj.mallongkodo - PROSimpla tranĉi dosieron aŭ dosierujonPropraĵoj de la sistemoTerms of ServiceLa rezervo ŝajne sukcesis kaj nun finiĝis.ThemesTemoj rezervo farita je dato Temoj rezervo farita.Sekurkopio de la temoj malsukcesis.Sekurkopioj de sekurkopioj restarigitaj sukcese.Tempo nunTempolimo (max_execution_time)Por fari arkivon aŭ poŝtonHodiaŭUZO:Ne eblas krei datumbazan sekurkopion.Ne eblas forigi sekurkopion!Ne eblas restarigi DB-sekurkopion.Ne povas restarigi aliajn.Ne eblas restarigi kromprogramojn.Ne eblas restarigi temojn.Ne eblas restarigi alŝutojn.Alŝutu dosierojnAlŝutu dosierojnAlŝutojAlŝutoj de sekurkopioj plenumitaj ĝis nun Sekurkopio de alŝutoj farita.Sekurkopio de alŝutoj malsukcesis.Alŝutoj de sekurkopioj restarigitaj sukcese.KonfirmuVidi protokolonWP-DosieradministriloWP-Dosieradministrilo - Rezerva / RestarigaKontribuo de WP-DosieradministriloNi amas fari novajn amikojn! Abonu sube kaj ni promesas
    tenu vin ĝisdata kun niaj plej novaj novaj aldonaĵoj, ĝisdatigoj,
    bonegaj ofertoj kaj kelkaj specialaj ofertoj.Bonvenon al DosieradministriloVi ne faris savindajn ŝanĝojn.por aliro al permeso legi dosierojn, notu: vera/malvera, defaŭlte: verapor aliro por skribi dosierojn permesojn, notu: vera/malvera, defaŭlte: malveraĝi kaŝos ĉi tie menciitan. Noto: apartigita per komo (,). Defaŭlte: Nulalanguages/wp-file-manager-sl_SI.po000064400000234611147361034410013046 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Theme Editor Pro\n"
"POT-Creation-Date: 2022-02-28 11:28+0530\n"
"PO-Revision-Date: 2022-02-28 11:33+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sl_SI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n"
"%100<=4 ? 2 : 3);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Varnostno kopiranje tem je uspešno obnovljeno."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Tem ni mogoče obnoviti."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Naložene varnostne kopije so bile uspešno obnovljene."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Naloženih datotek ni mogoče obnoviti."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Druga varnostna kopija je bila uspešno obnovljena."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Drugih ni mogoče obnoviti."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Varnostno kopiranje vtičnikov je uspešno obnovljeno."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Vtičnikov ni mogoče obnoviti."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Varnostno kopiranje baze podatkov je bilo uspešno obnovljeno."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Končano"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Varnostne kopije DB ni mogoče obnoviti."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Varnostne kopije so bile uspešno odstranjene!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Varnostne kopije ni mogoče odstraniti!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Varnostno kopiranje zbirke podatkov izvedeno na datum "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Varnostno kopiranje vtičnikov narejeno na datum "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Varnostno kopiranje tem je bilo izvedeno na datum "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Naloži varnostno kopijo, opravljeno na datum "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Drugi varnostno kopiranje narejeno na datum "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Dnevniki"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Ni zapisov!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Nič ni izbrano za varnostno kopiranje"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Varnostna težava."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Varnostno kopiranje baze podatkov opravljeno."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Varnostne kopije baze podatkov ni mogoče ustvariti."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Varnostno kopiranje vtičnikov je opravljeno."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Varnostno kopiranje vtičnikov ni uspelo."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Varnostno kopiranje tem je opravljeno."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Varnostno kopiranje tem ni uspelo."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Varnostna kopija nalaganja je končana."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Varnostno kopiranje nalaganja ni uspelo."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Varnostno kopiranje drugih opravljeno."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Druge varnostne kopije niso uspele."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Upravitelj datotek WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Nastavitve"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preference"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Lastnosti sistema"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kratka koda - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Varnostno kopiranje/obnovitev"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Nakup Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Podarite"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Datoteka ne obstaja za prenos."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Neveljavna varnostna koda."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Manjka varnostna kopija ID."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Manjka vrsta parametra."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Manjkajo zahtevani parametri."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Napaka: varnostne kopije ni mogoče obnoviti, ker je varnostna kopija baze "
"podatkov velika. Poskusite povečati največjo dovoljeno velikost v "
"nastavitvah Nastavitve."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Izberite varnostno(e) kopijo(e) za brisanje!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Ali ste prepričani, da želite odstraniti izbrane varnostne kopije?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Varnostno kopiranje se izvaja, počakajte"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Obnovitev teče, počakajte"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Nič ni izbrano za varnostno kopiranje."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Upravitelj datotek WP - Varnostno kopiranje / obnovitev"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Možnosti varnostnega kopiranja:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Varnostno kopiranje zbirke podatkov"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Varnostno kopiranje datotek"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Vtičniki"

#: inc/backup.php:71
msgid "Themes"
msgstr "Themes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Prenosi"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Drugo (Vsi drugi imeniki, najdeni znotraj wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Varnostno kopirajte zdaj"

#: inc/backup.php:89
msgid "Time now"
msgstr "Čas zdaj"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "USPEH"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Varnostno kopiranje je bilo uspešno izbrisano."

#: inc/backup.php:102
msgid "Ok"
msgstr "V redu"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "IZBRIŠI DATOTEKE"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Ali ste prepričani, da želite izbrisati to varnostno kopijo?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Prekliči"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Potrdite"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "OBNOVITE DATOTEKE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Ali ste prepričani, da želite obnoviti to varnostno kopijo?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Zadnje dnevniško sporočilo"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Varnostno kopiranje je očitno uspelo in je zdaj končano."

#: inc/backup.php:171
msgid "No log message"
msgstr "Ni dnevnika"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Obstoječe varnostne kopije"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Datum varnostne kopije"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Varnostno kopiranje podatkov (kliknite za prenos)"

#: inc/backup.php:190
msgid "Action"
msgstr "Akcija"

#: inc/backup.php:210
msgid "Today"
msgstr "Danes"

#: inc/backup.php:239
msgid "Restore"
msgstr "Obnovi"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Izbriši"

#: inc/backup.php:241
msgid "View Log"
msgstr "Ogled dnevnika"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Trenutno ni mogoče najti nobene varnostne kopije."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Dejanja ob izbrani varnostni kopiji"

#: inc/backup.php:251
msgid "Select All"
msgstr "Izberi vse"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Prekliči izbiro"

#: inc/backup.php:254
msgid "Note:"
msgstr "Opomba:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Datoteke za varnostne kopije bodo pod"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Prispevek upravitelja datotek WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Opomba: To so demo posnetki zaslona. Prosimo, kupite File Manager pro za "
"funkcije Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Kliknite za nakup PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Nakup PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Urejanje dnevnikov datotek"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Prenesite dnevnike datotek"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Naloži dnevnike datotek"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Nastavitve so shranjene."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Zavrni to obvestilo."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Niste naredili nobenih sprememb, ki bi jih morali shraniti."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Javna korenska pot"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Koreninsko pot upravitelja datotek lahko spremenite po svoji izbiri."

#: inc/root.php:59
msgid "Default:"
msgstr "Privzeto:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Prosimo, natančno spremenite to, napačna pot lahko povzroči, da se vtičnik "
"upravitelja datotek spusti."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Želite omogočiti smetnjak?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Po omogočitvi smeti bodo vaše datoteke šle v mapo smetnjaka."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Omogočiti nalaganje datotek v medijsko knjižnico?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Po omogočitvi tega bodo vse datoteke šle v medijsko knjižnico."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Največja dovoljena velikost v času obnovitve varnostne kopije baze podatkov."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Povečajte vrednost polja, če se ob obnovitvi varnostne kopije prikaže "
"sporočilo o napaki."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Shrani spremembe"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Nastavitve - Splošno"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Opomba: To je samo predstavitveni posnetek zaslona. Če želite dobiti "
"nastavitve, kupite našo različico pro."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Tu lahko skrbnik omogoči dostop do uporabniških vlog za uporabo upravitelja "
"datotek. Skrbnik lahko nastavi privzeto mapo za dostop in nadzoruje tudi "
"velikost nalaganja upravitelja datotek."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Nastavitve - Urejevalnik kod"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Upravitelj datotek ima urejevalnik kod z več temami. Za urejevalnik kode "
"lahko izberete katero koli temo. Prikaže se, ko uredite katero koli "
"datoteko. Prav tako lahko dovolite celozaslonski način urejevalnika kode."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Pogled urejevalnika kod"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Nastavitve - Uporabniške omejitve"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Skrbnik lahko omeji dejanja katerega koli uporabnika. Datoteke in mape lahko "
"tudi skrijete in lahko nastavite različne poti map do različnih uporabnikov."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Nastavitve - Omejitve vloge uporabnika"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Skrbnik lahko omeji dejanja katere koli uporabniške vloge. Datoteke in mape "
"lahko tudi skrijete in lahko nastavite različne poti map do različnih vlog "
"uporabnikov."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Upravitelj datotek - kratka koda"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "UPORABA:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Na sprednjem delu bo prikazal upravitelja datotek. Vse nastavitve lahko "
"nadzirate v nastavitvah upravitelja datotek. Deloval bo enako kot backend WP "
"File Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Na sprednjem delu bo prikazal upravitelja datotek. Toda samo skrbnik lahko "
"dostopa do njega in bo upravljal iz nastavitev upravitelja datotek."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametri:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Vsem vlogam bo omogočil dostop do upravitelja datotek na sprednji strani ali "
"pa ga lahko preprosto uporabite za določene uporabniške vloge, kot je "
"dovoljeno_roles=\"urednik,avtor\" (ločeno z vejico(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Tukaj je \"test\" ime mape, ki se nahaja v korenskem imeniku, ali pa lahko "
"podate pot za podmape, kot je \"wp-content/plugins\". Če pustite prazno ali "
"prazno, bo dostopal do vseh map v korenskem imeniku. Privzeto: korenski "
"imenik"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"za dostop do dovoljenj za pisanje datotek, opomba: true/false, privzeto: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"za dostop do dovoljenja za branje datotek, opomba: true/false, privzeto: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "bo skrilo omenjeno tukaj. Opomba: ločeno z vejico (,). Privzeto: nič"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Omenjeno bo z vejicami. lahko zaklenete več kot \".php,.css,.js\" itd. "
"Privzeto: nič"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* za vse operacije in za dovolitev nekaterih operacij lahko navedete ime "
"operacije, kot je npr. allowed_operations=\"upload,download\". Opomba: "
"ločeno z vejico (,). Privzeto: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Seznam operacij datotek:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Naredite imenik ali mapo"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Ustvari datoteko"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Preimenujte datoteko ali mapo"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Podvojite ali klonirajte mapo ali datoteko"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Prilepite datoteko ali mapo"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Prepoved"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Če želite narediti arhiv ali zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Izvlecite arhiv ali stisnjeno datoteko"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopirajte datoteke ali mape"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Preprosto izrežite datoteko ali mapo"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Uredite datoteko"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Odstranite ali izbrišite datoteke in mape"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Prenesite datoteke"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Naložite datoteke"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Iščite stvari"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informacije o datoteki"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Pomoč"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"->  Prepovedala bo določene uporabnike, tako da bo njihove ID-je ločila z "
"vejicami (,). Če je uporabnik Ban, potem na sprednjem delu ne bo mogel "
"dostopati do upravitelja datotek wp."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Pogled uporabniškega vmesnika Filemanager. Privzeto: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Datoteka spremenjena ali Ustvari obliko datuma. Privzeto: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Jezik upravitelja datotek. Privzeto: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema upravitelja datotek. Privzeto: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Upravitelj datotek - sistemske lastnosti"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Različica PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Največja velikost datoteke za nalaganje (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Objavi največjo velikost datoteke za nalaganje (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Omejitev pomnilnika (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Časovna omejitev (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Brskalnik in OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Spremeni temo tukaj:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Privzeto"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Temno"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Svetloba"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "siva"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Dobrodošli v upravitelju datotek"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Radi ustvarjamo nove prijatelje! Naročite se spodaj in obljubljamo vam\n"
"    boste na tekočem z našimi najnovejšimi novimi vtičniki, posodobitvami,\n"
"    super ponudbe in nekaj posebnih ponudb."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Vnesite ime."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Vnesite priimek."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Vnesite e-poštni naslov."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Preverite"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ne hvala"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Pogoji storitve"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Politika zasebnosti"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Shranjevanje ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "v redu"

#~ msgid "Backup not found!"
#~ msgstr "Varnostne kopije ni mogoče najti!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Varnostna kopija je bila uspešno odstranjena!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Za varnostno kopiranje ni izbrano nič</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Varnostna težava. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Končano varnostno kopiranje zbirke "
#~ "podatkov. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Varnostne kopije baze podatkov ni mogoče "
#~ "ustvariti. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Končano varnostno kopiranje vtičnikov. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Varnostno kopiranje vtičnikov ni uspelo. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Končano varnostno kopiranje tem. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Varnostno kopiranje tem ni uspelo. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Nalaganje varnostnih kopij je končano. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Varnostna kopija naloženih datotek ni "
#~ "uspela. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Drugi varnostno kopiranje narejeno. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Varnostno kopiranje drugih ni uspelo. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Vse končano </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Slika"

#~ msgid "of"
#~ msgstr "od"

#~ msgid "Close"
#~ msgstr "Zapri"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Ta funkcija zahteva vstavljene okvirje. Imate onemogočene vgradne okvire "
#~ "ali jih brskalnik ne podpira."

#~ msgid "Theme Editor"
#~ msgstr "Urejevalnik tem"

#~ msgid "Plugin Editor"
#~ msgstr "Urejevalnik vtičnikov"

#~ msgid "Access Control"
#~ msgstr "Nadzor dostopa"

#~ msgid "Notify Me"
#~ msgstr "Obvesti me"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "jezik je bil uspešno prenesen."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Mape jezikov ni bilo mogoče prenesti."

#~ msgid "Security token expired!"
#~ msgstr "Varnostni žeton je potekel!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "jezik je bil uspešno prenesen."

#~ msgid "Currently language "
#~ msgstr "Trenutno jezik "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " ni na voljo. Prosimo, kliknite na jezikovno povezavo zahteve."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr "Nimate dovolj dovoljenj za urejanje vtičnikov za to spletno mesto."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Na tej strani ni nameščenih vtičnikov."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Na tej spletni strani ni nameščenih nobenih tem."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">Vnesite ime mape! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Vnesite ime datoteke! </p>"

#~ msgid "Open"
#~ msgstr "Odprto"

#~ msgid "Preview"
#~ msgstr "Predogled"

#~ msgid "Edit"
#~ msgstr "Uredi"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Ali ste prepričani, da želite prekiniti nalaganje datotek?"

#~ msgid "File renamed successfully."
#~ msgstr "Datoteka je bila uspešno preimenovana."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Ali ste prepričani, da želite izbrisati mapo?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Mapa je bila uspešno izbrisana."

#~ msgid "File deleted successfully."
#~ msgstr "Datoteka je bila uspešno izbrisana."

#~ msgid "Folder renamed successfully."
#~ msgstr "Mapa je bila uspešno preimenovana."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Ni dovoljeno več kot 30 znakov.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Neveljavna Zahteva!"

#~ msgid "No change in file!"
#~ msgstr "V datoteki ni sprememb!"

#~ msgid "File saved successfully!"
#~ msgstr "Datoteka je bila uspešno shranjena!"

#~ msgid "File not saved!"
#~ msgstr "Datoteka ni shranjena!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Varnostnega žetona ni mogoče preveriti!"

#~ msgid "Folder created successfully!"
#~ msgstr "Mapa je bila uspešno ustvarjena!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Wordpress te oblike mape ne sme naložiti!"

#~ msgid "Folder already exists!"
#~ msgstr "Mapa že obstaja!"

#~ msgid "File created successfully!"
#~ msgstr "Datoteka je bila uspešno ustvarjena!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Te končnice datoteke ni dovoljeno ustvarjati!"

#~ msgid "File already exists!"
#~ msgstr "Datoteka že obstaja!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Vnesite veljavno pripono datoteke!"

#~ msgid "Folder does not exists!"
#~ msgstr "Mapa ne obstaja!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Mapa je bila uspešno izbrisana!"

#~ msgid "File deleted successfully!"
#~ msgstr "Datoteka je bila uspešno izbrisana!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "Te razširitve datoteke ni dovoljeno naložiti s strani wordpress!"

#~ msgid " already exists"
#~ msgstr " Že obstaja"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Datoteka je bila uspešno naložena: pot naložene datoteke je "

#~ msgid "No file selected"
#~ msgstr "Izbrana ni nobena datoteka"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Datoteke ni mogoče preimenovati! Poskusi ponovno."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Mapa je bila uspešno preimenovana!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Vnesite pravilno ime mape"

#~ msgid "How can we help?"
#~ msgstr "Kako lahko pomagamo?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "Učni viri, strokovna podpora in strokovna pomoč."

#~ msgid "Documentation"
#~ msgstr "Dokumentacija"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Hitro poiščite odgovore v naši obsežni dokumentaciji."

#~ msgid "Learn More"
#~ msgstr "Learn More"

#~ msgid "Contact Us"
#~ msgstr "Kontaktiraj nas"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr "Predložite vstopnico za odgovore na vprašanja, ki jih imate."

#~ msgid "Request a Feature"
#~ msgstr "Zahtevajte funkcijo"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "Povejte nam, kaj želite, in to bomo dodali našemu načrtu."

#~ msgid "Tell us what you think!"
#~ msgstr "Povej nam kaj misliš!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Ocenite in nam dajte oceno na Wordpressu!"

#~ msgid "Leave a Review"
#~ msgstr "Pustite oceno"

#~ msgid "Update"
#~ msgstr "Nadgradnja"

#~ msgid "Click here to install/update "
#~ msgstr "Kliknite tukaj za namestitev / posodobitev "

#~ msgid " language translation for Theme Editor."
#~ msgstr " jezikovni prevod za urejevalnik tem."

#~ msgid "Installed"
#~ msgstr "Nameščeno"

#~ msgid "English is the default language of Theme Editor. "
#~ msgstr "Angleščina je privzeti jezik urejevalnika tem. "

#~ msgid "Request "
#~ msgstr "Prošnja "

#~ msgid "Click here to request"
#~ msgstr "Za zahtevo kliknite tukaj"

#~ msgid "language translation for Theme Editor"
#~ msgstr "jezikovni prevod za urejevalnik tem"

#~ msgid "Theme Editor Language:"
#~ msgstr "Jezik urejevalnika tem:"

#~ msgid " language"
#~ msgstr " jezik"

#~ msgid "Available languages"
#~ msgstr "Razpoložljivi jeziki"

#~ msgid "Click here to download all available languages."
#~ msgstr "Kliknite tukaj za prenos vseh razpoložljivih jezikov."

#~ msgid "Request a language"
#~ msgstr "Zahtevajte jezik"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Povejte nam, kateri jezik želite dodati."

#~ msgid "Contact us"
#~ msgstr "Kontaktiraj nas"

#~ msgid "Notifications"
#~ msgstr "Obvestila"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> Opomba: To je samo posnetek zaslona. Za to funkcijo kupite "
#~ "različico PRO. </strong>"

#~ msgid "Permissions"
#~ msgstr "Dovoljenja"

#~ msgid "Edit Plugin"
#~ msgstr "Uredi vtičnik"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Ta vtičnik je trenutno aktiviran! </strong> Opozorilo: "
#~ "Spreminjanje aktivnih vtičnikov ni priporočljivo. Če vaše spremembe "
#~ "povzročijo usodno napako, se vtičnik samodejno deaktivira."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Urejanje <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (aktivno)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Brskanje <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (neaktivno)"

#~ msgid "Update File"
#~ msgstr "Posodobi datoteko"

#~ msgid "Download Plugin"
#~ msgstr "Prenesite vtičnik"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Preden lahko shranite spremembe, morate to datoteko zapisati. Za več "
#~ "informacij glejte <a href=\"https://wordpress.org/support/article/"
#~ "changing-file-permissions/\" target=\"_blank\"> Codex </a>."

#~ msgid "Select plugin to edit:"
#~ msgstr "Izberite vtičnik za urejanje:"

#~ msgid "Create Folder and File"
#~ msgstr "Ustvari mapo in datoteko"

#~ msgid "Create"
#~ msgstr "Ustvari"

#~ msgid "Remove Folder and File"
#~ msgstr "Odstranite mapo in datoteko"

#~ msgid "Remove "
#~ msgstr "Odstrani"

#~ msgid "To"
#~ msgstr "Za"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Izbirno: podimenik"

#~ msgid "Choose File "
#~ msgstr "Izberite datoteko"

#~ msgid "No file Chosen "
#~ msgstr "Nobena datoteka ni izbrana "

#~ msgid "Create a New Folder: "
#~ msgstr "Ustvari novo mapo:"

#~ msgid "New folder will be created in: "
#~ msgstr "Nova mapa bo ustvarjena v:"

#~ msgid "New Folder Name: "
#~ msgstr "Ime nove mape:"

#~ msgid "Create New Folder"
#~ msgstr "Ustvari novo mapo"

#~ msgid "Create a New File: "
#~ msgstr "Ustvari novo datoteko:"

#~ msgid "New File will be created in: "
#~ msgstr "Nova datoteka bo ustvarjena v:"

#~ msgid "New File Name: "
#~ msgstr "Novo ime datoteke:"

#~ msgid "Create New File"
#~ msgstr "Ustvari novo datoteko"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr ""
#~ "Opozorilo: bodite previdni, preden odstranite katero koli mapo ali "
#~ "datoteko."

#~ msgid "Current Theme Path: "
#~ msgstr "Trenutna tematska pot:"

#~ msgid "Remove Folder: "
#~ msgstr "Odstrani mapo:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Pot mape, ki jo želite odstraniti: "

#~ msgid "Remove Folder"
#~ msgstr "Odstrani mapo"

#~ msgid "Remove File: "
#~ msgstr "Odstrani datoteko:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Pot do datoteke, ki jo želite odstraniti: "

#~ msgid "Remove File"
#~ msgstr "Odstrani datoteko"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Vnesite veljaven e-poštni naslov."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr ""
#~ "Opozorilo: Pred preimenovanjem katere koli mape ali datoteke bodite "
#~ "previdni."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Datoteka / mapa bo preimenovana v:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Preimenovanje datoteke / mape:"

#~ msgid "Rename File"
#~ msgstr "Preimenuj datoteko"

#~ msgid "Follow us"
#~ msgstr "Sledi nam"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Urejevalnik tem Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Urejevalnik tem Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Urejevalnik teme Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Urejevalnik tem Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Urejevalnik tem Youtube"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Pojdite na spletno mesto ThemeEditor"

#~ msgid "Theme Editor Links"
#~ msgstr "Povezave do urejevalnika tem"

#~ msgid "Child Theme"
#~ msgstr "Otroška tema"

#~ msgid "Child Theme Permissions"
#~ msgstr "Dovoljenja za otroško temo"

#~ msgid " is not available. Please click "
#~ msgstr " ni na voljo. Prosim kliknite "

#~ msgid "here"
#~ msgstr "tukaj"

#~ msgid "to request language."
#~ msgstr "zahtevati jezik."

#~ msgid "Click"
#~ msgstr "Kliknite"

#~ msgid "to install "
#~ msgstr "namestiti"

#~ msgid " language translation  for Theme Editor."
#~ msgstr " jezikovni prevod za urejevalnik tem."

#~ msgid "Success: Settings Saved!"
#~ msgstr "Uspeh: nastavitve shranjene!"

#~ msgid "No changes have been made to save."
#~ msgstr "Spremenjene niso bile nobene spremembe."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Omogoči urejevalnik tem za teme"

#~ msgid "Yes"
#~ msgstr "Da"

#~ msgid "No"
#~ msgstr "Ne"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "To bo omogočilo / onemogočilo urejevalnik tem. <br/><strong class=\"defs"
#~ "\">Privzeto: </strong>Da"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Želite onemogočiti privzeti urejevalnik tem WordPress?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "S tem boste omogočili / onemogočili privzeti urejevalnik tem. <br/"
#~ "><strong class=\"defs\">Privzeto: </strong>Da"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Omogoči urejevalnik vtičnikov za vtičnik"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "To bo omogočilo / onemogočilo urejevalnik vtičnikov. <br/><strong class="
#~ "\"defs\">Privzeto: </strong>Da"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Želite onemogočiti privzeti urejevalnik vtičnikov WordPress?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "S tem boste omogočili / onemogočili privzeti urejevalnik vtičnikov. <br/"
#~ "><strong class=\"defs\">Privzeto: </strong>Da"

#~ msgid "Code Editor"
#~ msgstr "Urejevalnik kod"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Omogoča izbiro teme za urejevalnik tem. <br/><strong class=\"defs"
#~ "\">Privzeto: </strong>Cobalt"

#~ msgid "Edit Themes"
#~ msgstr "Urejanje tem"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Ta tema je trenutno aktivirana! </strong> Opozorilo: "
#~ "Spreminjanje aktivnih tem ni priporočljivo."

#~ msgid "Editing"
#~ msgstr "Urejanje"

#~ msgid "Browsing"
#~ msgstr "Brskanje"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Posodobite datoteko in poskusite znova aktivirati"

#~ msgid "Download Theme"
#~ msgstr "Prenesite temo"

#~ msgid "Select theme to edit:"
#~ msgstr "Izberite temo za urejanje:"

#~ msgid "Theme Files"
#~ msgstr "Tematske datoteke"

#~ msgid "Choose File"
#~ msgstr "Izberite datoteko"

#~ msgid "No File Chosen"
#~ msgstr "Datoteka ni izbrana"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr ""
#~ "Opozorilo: Prosimo, bodite previdni, preden odstranite katero koli mapo "
#~ "ali datoteko."

#~ msgid "Child Theme Permission"
#~ msgstr "Dovoljenje za otroško temo"

#~ msgid "Translations"
#~ msgstr "Prevodi"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr ""
#~ "ustvarjati, urejati, nalagati, prenašati, brisati tematske datoteke in "
#~ "mape"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Nimate dovoljenja za ustvarjanje nove podrejene teme."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr ""
#~ "Nimate dovoljenja za spreminjanje konfiguracije obstoječe podrejene teme."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Nimate dovoljenja za podvajanje podrejene teme."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "Nimate dovoljenja za dostop do menija poizvedbe / izbirnika."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "Nimate dovoljenja za dostop do spletnih pisav in menija CSS."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Nimate dovoljenja za kopiranje datotek."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Nimate dovoljenja za brisanje podrejenih datotek."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "Nimate dovoljenja za nalaganje novega posnetka zaslona."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Nimate dovoljenja za nalaganje novih slik."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Nimate dovoljenja za brisanje slik."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Nimate dovoljenja za prenos datoteke."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Nimate dovoljenja za ustvarjanje novega imenika."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Nimate dovoljenja za ustvarjanje nove datoteke."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Nimate dovoljenja za posodobitev datoteke!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Nimate dovoljenja za ustvarjanje mape!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Nimate dovoljenja za brisanje mape!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Nimate dovoljenja za brisanje datoteke!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Nimate dovoljenja za nalaganje datoteke!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Dovoljenja za podrejeno temo so bila uspešno shranjena."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "V dovoljenjih za podrejeno temo, ki jih je treba shraniti, ni sprememb."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Sporočilo o dovoljenju za podrejeno temo je uspešno shranjeno."

#~ msgid "Users"
#~ msgstr "Uporabniki"

#~ msgid "Create New Child Theme"
#~ msgstr "Ustvari novo otroško temo"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Konfigurirajte obstoječe podrejene teme"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Podvojene otroške teme"

#~ msgid "Query/ Selector"
#~ msgstr "Poizvedba / izbirnik"

#~ msgid "Web/font"
#~ msgstr "Splet / pisava"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Kopiraj starševsko temo datoteke v podrejeno temo"

#~ msgid "Deleted Child Files"
#~ msgstr "Izbrisane podrejene datoteke"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Naložite nov posnetek zaslona"

#~ msgid "Upload New Images"
#~ msgstr "Naložite nove slike"

#~ msgid "Deleted Images "
#~ msgstr "Izbrisane slike"

#~ msgid "Download Images"
#~ msgstr "Prenesite slike"

#~ msgid "Create New Directory"
#~ msgstr "Ustvari nov imenik"

#~ msgid "Create New Files"
#~ msgstr "Ustvari nove datoteke"

#~ msgid "Export Theme"
#~ msgstr "Izvozi temo"

#~ msgid "User Roles"
#~ msgstr "Uporabniške vloge"

#~ msgid "Query/ Seletor"
#~ msgstr "Poizvedba / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Izbrisane slike"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Sporočilo o dovoljenju za podrejeno temo"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Nimate dovoljenja za ustvarjanje nove otroške teme."

#~ msgid "Query/Selector"
#~ msgstr "Poizvedba / izbirnik"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "Nimate dovoljenja za dostop do menija poizvedbe / izbirnika."

#~ msgid " Web/font"
#~ msgstr "Splet / pisava"

#~ msgid " Export Theme"
#~ msgstr "Izvozi temo"

#~ msgid "Save Child Theme Message"
#~ msgstr "Sporočilo o dovoljenju za podrejeno temo"

#~ msgid "Please select atleast one image."
#~ msgstr "Izberite vsaj eno sliko."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Nimate dovoljenja za brisanje slik."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Nimate dovoljenja za nalaganje novih slik."

#~ msgid "You don't have the permission to download."
#~ msgstr "Nimate dovoljenja za prenos."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Nimate dovoljenja za ustvarjanje novega imenika."

#~ msgid "Please choose file type."
#~ msgstr "Izberite vrsto datoteke."

#~ msgid "Please enter file name."
#~ msgstr "Vnesite ime datoteke."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Nimate dovoljenja za ustvarjanje nove datoteke."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr ""
#~ "Ali ste prepričani, da nadrejene datoteke kopirate v podrejeno temo?"

#~ msgid "Please select file(s)."
#~ msgstr "Izberite datoteke."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Nimate dovoljenja za kopiranje datotek."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Ali ste prepričani, da želite izbrisati izbrane datoteke?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Nimate dovoljenja za brisanje podrejenih datotek."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "Nimate dovoljenja za nalaganje novega posnetka zaslona."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Nimate dovoljenja za izvoz teme."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "Nimate dovoljenja za dostop do menija Query / Selector."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Nimate dovoljenja za dostop do menija Spletne pisave in CSS."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Trenutna tema analize:"

#~ msgid "Preview Theme"
#~ msgstr "Predogled teme"

#~ msgid "Parent Themes"
#~ msgstr "Teme staršev"

#~ msgid "Child Themes"
#~ msgstr "Otroške teme"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Napaka: nastavitve niso shranjene!"

#~ msgid "Email List"
#~ msgstr "E-poštni seznam"

#~ msgid "Email Address"
#~ msgstr "Email naslov"

#~ msgid "Enter Email"
#~ msgstr "Vnesite e-pošto"

#~ msgid "Add More"
#~ msgstr "Dodaj Več"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Ta naslov se uporablja za namene obveščanja, kot je obvestilo o temi / "
#~ "vtičniku."

#~ msgid "Theme Notification"
#~ msgstr "Obvestilo o temi"

#~ msgid "Notify on file update"
#~ msgstr "Obvesti o posodobitvi datoteke"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Obvestilo o urejanju ali posodobitvi datoteke teme. <br/> <strong> "
#~ "Privzeto: </strong> Da"

#~ msgid "Notify on files download"
#~ msgstr "Obvesti o prenosu datotek"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Obvestilo o prenosu datoteke teme. <br/> <strong> Privzeto: </strong> Da"

#~ msgid "Notify on theme download"
#~ msgstr "Obvesti o prenosu teme"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr "Obvestilo o prenosu teme. <br/> <strong> Privzeto: </strong> Da"

#~ msgid "Notify on files upload"
#~ msgstr "Obvesti o prenosu datotek"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Obvestilo o nalaganju datotek v temi. <br/> <strong> Privzeto: </strong> "
#~ "Da"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Obvesti o ustvarjanju nove datoteke / mape"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Obvestilo o ustvarjanju nove datoteke / mape v temi. <br/> <strong> "
#~ "Privzeto: </strong> Da"

#~ msgid "Notify on delete"
#~ msgstr "Obvesti o brisanju"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Obvesti o izbrisu katere koli datoteke in mape v temah. <br/> <strong> "
#~ "Privzeto: </strong> Da"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Obvesti o ustvarjanju teme New Child"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Obvesti o temah Ustvari novega otroka. <br/> <strong> Privzeto: </strong> "
#~ "Da"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Obvestite o konfiguriranju obstoječih podrejenih tem"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Obvesti me o konfiguriranju obstoječih podrejenih tem. <br/> <strong> "
#~ "Privzeto: </strong> Da"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Obvestila o podvojenih otroških temah"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Obvestilo o konfiguriranju obstoječih podrejenih tem. <br/> <strong> "
#~ "Privzeto: </strong> Da"

#~ msgid "Plugin Notification"
#~ msgstr "Obvestilo o vtičnikih"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Obvestilo o urejanju ali posodobitvi datoteke teme. <br/> <strong> "
#~ "Privzeto: </strong> da"

#~ msgid "Notify on Plugin download"
#~ msgstr "Obvesti o prenosu vtičnika"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr "Obvestilo o prenosu vtičnika. <br/> <strong> Privzeto: </strong> Da"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Obvestilo o nalaganju datoteke v temi. <br/> <strong> Privzeto: </strong> "
#~ "Da"

#~ msgid "Permission saved successfully."
#~ msgstr "Dovoljenje je uspešno shranjeno."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr ""
#~ "Ups! Dovoljenja ni mogoče shraniti, ker niste naredili nobenih sprememb."

#~ msgid "Allowed User Roles"
#~ msgstr "Dovoljene uporabniške vloge"

#~ msgid "Update theme files"
#~ msgstr "Posodobite teme"

#~ msgid "Create new theme files and folders"
#~ msgstr "Ustvarite nove datoteke in mape tem"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Naložite nove datoteke in mape tem"

#~ msgid "Download theme files"
#~ msgstr "Prenesite datoteke s temami"

#~ msgid "Download theme"
#~ msgstr "Prenesite temo"

#~ msgid "Update plugin files"
#~ msgstr "Posodobite datoteke vtičnikov"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Ustvarite nove datoteke in mape vtičnikov"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Naložite nove datoteke in mape vtičnikov"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Izbrišite datoteke in mape vtičnikov"

#~ msgid "Download plugin files"
#~ msgstr "Prenesite datoteke vtičnikov"

#~ msgid "Download plugin"
#~ msgstr "Prenesite vtičnik"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Urejevalnik tem PRO - spodaj dodajte podrobnosti o naročilu. Če ne <a "
#~ "href=\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" "
#~ "class=\"page-title-action button button-primary\" title=\"click to buy "
#~ "Licence Key\">Kupite zdaj </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "ŠTEVILKA NAROČILA (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Vnesite ID naročila"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Prosimo, preverite svoj e-poštni naslov za ID naročila."

#~ msgid "LICENCE KEY *"
#~ msgstr "KLJUČ LICENCE *"

#~ msgid "Enter License Key"
#~ msgstr "Vnesite licenčni ključ"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Prosimo, preverite svoj e-poštni naslov za licenčni ključ."

#~ msgid "Click To Verify"
#~ msgstr "Kliknite za preverjanje"

#~ msgid "URL/None"
#~ msgstr "URL / Noben"

#~ msgid "Origin"
#~ msgstr "Izvor"

#~ msgid "Color 1"
#~ msgstr "1. barva"

#~ msgid "Color 2"
#~ msgstr "2. barva"

#~ msgid "Width/None"
#~ msgstr "Širina / Brez"

#~ msgid "Style"
#~ msgstr "Slog"

#~ msgid "Color"
#~ msgstr "Barva"

#~ msgid "Configure Child Theme"
#~ msgstr "Konfigurirajte otroško temo"

#~ msgid "Duplicate Child theme"
#~ msgstr "Podvojene otroške teme"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Po analizi ta tema deluje v redu. To lahko uporabite kot svojo otroško "
#~ "temo."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr "Po analizi te podrejene teme se zdi, da deluje pravilno."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Ta tema naloži dodatne slogovne datoteke po datoteki <code> style.css </"
#~ "code>:"

#~ msgid "The theme"
#~ msgstr "Ime teme"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr "ni bilo mogoče analizirati, ker se predogled ni upodobil pravilno"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Ta podrejena tema ni konfigurirana za ta vtičnik"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Konfigurator naredi bistvene spremembe podrejene teme, vključno s "
#~ "spremembami v slogovnem listu in dodatnimi funkcijami php. Prosimo, "
#~ "razmislite o uporabi možnosti DUPLICATE podrejene teme (glejte 1. korak "
#~ "zgoraj) in ohranite izvirnik kot varnostno kopijo."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "Vse informacije o spletnih pisavah / CSS so bile uspešno shranjene."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Vnesite vrednost za spletne pisave / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Nimate dovoljenja za posodobitev spletnih pisav / css."

#~ msgid "All information saved successfully."
#~ msgstr "Vse informacije so bile uspešno shranjene."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Ali ste prepričani, da želite PONOVITI? S tem boste uničili vsa dela, ki "
#~ "ste jih opravili v konfiguratorju."

#~ msgid "Selectors"
#~ msgstr "Selektorji"

#~ msgid "Edit Selector"
#~ msgstr "Uredi izbirnik"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "Preglednice ni mogoče prikazati."

#~ msgid "(Child Only)"
#~ msgstr "(Samo za otroke)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Vnesite veljavno otroško temo."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Vnesite veljavno ime otroške teme."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> obstaja. Vnesite drugo otroško temo"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "Strani ni bilo mogoče pravilno naložiti."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Nasprotujoče si ali zastarele knjižnice jQuery je naložil drug vtičnik:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr "Z deaktivacijo ali zamenjavo vtičnikov lahko to težavo odpravite."

#~ msgid "No result found for the selection."
#~ msgstr "Za izbor ni bilo mogoče najti nobenega rezultata."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sZakaj to vidim?%s"

#~ msgid "Parent / Child"
#~ msgstr "Starš / otrok"

#~ msgid "Select an action:"
#~ msgstr "Izberite dejanje:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Ustvari novo otroško temo"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Konfigurirajte obstoječo otroško temo"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Podvojite obstoječo otroško temo"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Izberite starševsko temo:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Analizirajte starševsko temo"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Kliknite \"Analiziraj\", da določite odvisnosti slogovnega lista in druge "
#~ "morebitne težave."

#~ msgid "Analyze"
#~ msgstr "Analizirajte"

#~ msgid "Select a Child Theme:"
#~ msgstr "Izberite otroško temo:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Analizirajte otroško temo"

#~ msgid "Name the new theme directory:"
#~ msgstr "Poimenujte novi imenik tem:"

#~ msgid "Directory Name"
#~ msgstr "Ime imenika"

#~ msgid "NOTE:"
#~ msgstr "OPOMBA:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "To NI ime Otroška tema. Ime, opis itd. Lahko prilagodite v 7. koraku "
#~ "spodaj."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Preverite imenik podrejenih tem:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Samo za preverjanje (ne morete spremeniti imenika obstoječe podrejene "
#~ "teme)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Izberite, kam želite shraniti nove sloge:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Primarni slogi (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Nove sloge po meri shranite neposredno v primarni seznam slogov podrejene "
#~ "teme in nadomestite obstoječe vrednosti. Primarni slog se naloži v "
#~ "vrstnem redu, ki ga določi tema."

#~ msgid "Separate Stylesheet"
#~ msgstr "Ločen tabelo s slogi"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Shranite nove sloge po meri v ločen slog in združite vse obstoječe sloge "
#~ "podrejene teme s staršem, da oblikujete osnovno črto. Izberite to "
#~ "možnost, če želite ohraniti obstoječe podrejene sloge tem, namesto da bi "
#~ "jih prepisali. Ta možnost omogoča tudi prilagajanje slogovnih listov, ki "
#~ "se naložijo po primarnem slogovnem listu."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Izberite obdelavo slogov za nadrejene teme:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Uporabite čakalno vrsto WordPress."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "Konfigurator naj določi ustrezna dejanja in odvisnosti ter samodejno "
#~ "posodobi datoteko funkcij."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "V tabeli slogi podrejene teme uporabite <code> @import </code>."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "To možnost uporabite samo, če nadrejenega sloga ni mogoče naložiti s "
#~ "pomočjo čakalne vrste slogov WordPress. Uporaba <code> @import </code> ni "
#~ "priporočljiva."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Ne dodajajte nobenega obvladovanja nadrejenega sloga."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Izberite to možnost, če ta tema že obravnava tabelo s slogi nadrejene "
#~ "teme ali če datoteka <code> style.css </code> nadrejene teme ni "
#~ "uporabljena za njen videz."

#~ msgid "Advanced handling options"
#~ msgstr "Napredne možnosti upravljanja"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Prezri preglednice slogov nadrejene teme."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Izberite to možnost, če ta tema že obdeluje tabelo s slogi nadrejene teme "
#~ "ali če datoteka style.css nadrejene teme ni uporabljena za njen videz."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Popravite predlogo glave v podrejeni temi."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Naj Configurator (poskusi) razreši vse zgoraj navedene težave s tabelo s "
#~ "slogi. To lahko odpravi številne, vendar ne vseh pogostih težav."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Odstranite odvisnosti slogovnega lista"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Privzeto se vrstni red tabel slogov, ki se naložijo pred primarnim "
#~ "slogom, ohrani tako, da se obravnavajo kot odvisnosti. V nekaterih "
#~ "primerih v predogledu zaznajo slogovne liste, ki se ne uporabljajo po "
#~ "celotnem spletnem mestu. Če je potrebno, lahko za določene spodnje tabele "
#~ "slogov odstranite odvisnost."

#~ msgid "Child Theme Name"
#~ msgstr "Ime otroške teme"

#~ msgid "Theme Name"
#~ msgstr "Ime teme"

#~ msgid "Theme Website"
#~ msgstr "Tematsko spletno mesto"

#~ msgid "Author"
#~ msgstr "Avtor"

#~ msgid "Author Website"
#~ msgstr "Spletno mesto avtorja"

#~ msgid "Theme Description"
#~ msgstr "Opis teme"

#~ msgid "Description"
#~ msgstr "Description"

#~ msgid "Tags"
#~ msgstr "Oznake"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Kopirajte menije, pripomočke in druge nastavitve po meri iz nadrejene "
#~ "teme v podrejeno temo:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Ta možnost nadomešča obstoječe menije, pripomočke in druge nastavitve po "
#~ "meri otroške teme z nadrejenimi temami. To možnost bi morali uporabiti "
#~ "šele, ko prvič konfigurirate podrejeno temo."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Kliknite, da zaženete konfigurator:"

#~ msgid "Query / Selector"
#~ msgstr "Poizvedba / izbirnik"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "Če želite poiskati določene izbirnike znotraj poizvedbenih blokov @media, "
#~ "najprej izberite poizvedbo, nato izbirnik. Uporabite poizvedbo \"base\" "
#~ "za urejanje vseh drugih izbirnikov."

#~ msgid "@media Query"
#~ msgstr "@media Query"

#~ msgid "( or \"base\" )"
#~ msgstr "(ali \"osnova\")"

#~ msgid "Selector"
#~ msgstr "Izbirnik"

#~ msgid "Query/Selector Action"
#~ msgstr "Dejanje poizvedbe / izbirnika"

#~ msgid "Save Child Values"
#~ msgstr "Shrani otroške vrednote"

#~ msgid "Delete Child Values"
#~ msgstr "Izbriši podrejene vrednosti"

#~ msgid "Property"
#~ msgstr "Nepremičnina"

#~ msgid "Baseline Value"
#~ msgstr "Izhodiščna vrednost"

#~ msgid "Child Value"
#~ msgstr "Podrejena vrednost"

#~ msgid "error"
#~ msgstr "napaka"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "Nimate dovoljenja za konfiguriranje podrejenih tem."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s ne obstaja. Izberite veljavno starševsko temo."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Datoteka s funkcijami je potrebna in je ni mogoče izbrisati."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Izberite veljavno starševsko temo."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Izberite veljavno otroško temo."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Vnesite veljavno ime imenika podrejene teme."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> obstaja. Vnesite drugo ime predloge za podrejeno temo."

#~ msgid "Your theme directories are not writable."
#~ msgstr "V vaše imenike tem ni mogoče pisati."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Podrejene teme ni bilo mogoče nadgraditi"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "V tabelo slogi ni mogoče pisati."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "Zaključna oznaka PHP je bila zaznana v datoteki funkcij podrejene teme, "
#~ "zato možnost »Nadzor nadrejenega sloga« ni bila konfigurirana. Zapiranja "
#~ "PHP na koncu datoteke ne priporočamo, saj lahko povzroči prezgodnje glave "
#~ "HTTP. Uredite <code> functions.php </code>, da odstranite končno oznako "
#~ "<code>?&gt;</code>, in znova kliknite »Ustvari / obnovi datoteke "
#~ "podrejenih tem«."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Datoteke ni bilo mogoče kopirati: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Datoteke %s ni bilo mogoče izbrisati."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "ni bilo mogoče kopirati %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "neveljaven direktorij: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Pri ponastavitvi dovoljenj je prišlo do napak."

#~ msgid "Could not upload file."
#~ msgstr "Datoteke ni bilo mogoče naložiti."

#~ msgid "Invalid theme root directory."
#~ msgstr "Neveljaven korenski imenik teme."

#~ msgid "No writable temp directory."
#~ msgstr "Brez začasnega začasnega imenika."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Razpakiranje ni uspelo -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Paket ni uspel -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Preseženo je največje število slogov."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Napaka pri premikanju datoteke: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Dovoljenj za pisanje ni bilo mogoče nastaviti."

#~ msgid "Error:"
#~ msgstr "Napaka:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr ""
#~ "Trenutna analiza podrejene teme <strong>%s</strong> je ponastavljena."

#~ msgid "Update Key saved successfully."
#~ msgstr "Ključ za posodobitev je bil uspešno shranjen."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Datoteke podrejenih tem so bile uspešno spremenjene."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Otroška tema <strong>%s</strong> je bila uspešno ustvarjena."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Spletne pisave in CSS"

#~ msgid "Parent Styles"
#~ msgstr "Nadrejeni slogi"

#~ msgid "Child Styles"
#~ msgstr "Otroški slogi"

#~ msgid "View Child Images"
#~ msgstr "Oglejte si otrokove slike"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Uporabite <code> @import url ([path]); </code> za povezavo dodatnih "
#~ "slogov. Ta vtičnik uporablja ključno besedo <code> @import </code>, da "
#~ "jih prepozna in pretvori v oznake <code>&lt;link&gt;</code>. <strong> "
#~ "Primer: </strong>"

#~ msgid "Save"
#~ msgstr "Shrani"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr "Nalaganje slike z istim imenom bo nadomestilo z obstoječo sliko."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Naložite novo sliko otroške teme"

#~ msgid "Delete Selected Images"
#~ msgstr "Izbriši izbrane slike"

#~ msgid "Create a New Directory"
#~ msgstr "Ustvarite nov imenik"

#~ msgid "New Directory will be created in"
#~ msgstr "Nov imenik bo ustvarjen v"

#~ msgid "New Directory Name"
#~ msgstr "Novo ime imenika"

#~ msgid "Create a New File"
#~ msgstr "Ustvari novo datoteko"

#~ msgid "New File will be created in"
#~ msgstr "Nova datoteka bo ustvarjena v"

#~ msgid "New File Name"
#~ msgstr "Novo ime datoteke"

#~ msgid "File Type Extension"
#~ msgstr "Razširitev vrste datoteke"

#~ msgid "Choose File Type"
#~ msgstr "Izberite vrsto datoteke"

#~ msgid "PHP File"
#~ msgstr "Datoteka PHP"

#~ msgid "CSS File"
#~ msgstr "Datoteka CSS"

#~ msgid "JS File"
#~ msgstr "Datoteka JS"

#~ msgid "Text File"
#~ msgstr "Besedilna datoteka"

#~ msgid "PHP File Type"
#~ msgstr "Vrsta datoteke PHP"

#~ msgid "Simple PHP File"
#~ msgstr "Preprosta datoteka PHP"

#~ msgid "Wordpress Template File"
#~ msgstr "Datoteka predloge Wordpress"

#~ msgid "Template Name"
#~ msgstr "Ime predloge"

#~ msgid "Parent Templates"
#~ msgstr "Nadrejene predloge"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Kopirajte predloge PHP iz nadrejene teme, tako da jih izberete tukaj. "
#~ "Konfigurator definira predlogo kot tematsko datoteko PHP, ki nima funkcij "
#~ "ali razredov PHP. Druge datoteke PHP ne more varno preglasiti podrejena "
#~ "tema."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "POZOR: Če je vaša podrejena tema aktivna, se namesto nadrejene takoj po "
#~ "kopiranju uporabi nadrejena različica datoteke."

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "datoteka se ustvari ločeno in je tukaj ni mogoče kopirati."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Kopiraj izbrano v otroško temo"

#~ msgid " Child Theme Files "
#~ msgstr "Otroške tematske datoteke"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Kliknite za urejanje datotek z urejevalnikom tem"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Izbrišite predloge podrejenih tem, tako da jih izberete tukaj."

#~ msgid "Delete Selected"
#~ msgstr "Izbriši izbrano"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Posnetek zaslona otroške teme"

#~ msgid "Upload New Screenshot"
#~ msgstr "Naložite nov posnetek zaslona"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Posnetek zaslona teme mora biti v razmerju 4: 3 (npr. 880px x 660px) JPG, "
#~ "PNG ali GIF. Preimenovan bo"

#~ msgid "Screenshot"
#~ msgstr "Posnetek zaslona"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Naložite novo sliko otroške teme"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "Tematske slike se nahajajo v imeniku slik v vaši podrejeni temi in so "
#~ "namenjene samo uporabi stilskih listov. Za vsebinske slike uporabite "
#~ "Media Library."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Predogled trenutne otroške teme (trenutna analiza)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Predogled trenutne otroške teme"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Izvozi podrejeno temo v arhiv Zip"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Kliknite »Izvozi zip«, da shranite varnostno kopijo trenutno naložene "
#~ "podrejene teme. Na zavihek Starš / otrok lahko izvozite katero koli temo."

#~ msgid "Export Child Theme"
#~ msgstr "Izvozi otroško temo"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Datoteke podrejene teme so bile uspešno kopirane!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr ""
#~ "Datoteka, ki jo poskušate kopirati iz Nadrejenih predlog, ne obstaja"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Datoteka, ki jo poskušate kopirati iz starševskih predlog, je že prisotna "
#~ "v datotekah podrejene teme."

#~ msgid "Child "
#~ msgstr "Otrok"

#~ msgid " and Parent "
#~ msgstr "in Starš"

#~ msgid " directories doesn't exist!"
#~ msgstr "imeniki ne obstajajo!"

#~ msgid " directory doesn't exist!"
#~ msgstr "imenik ne obstaja!"

#~ msgid "Parent "
#~ msgstr "Starš"

#~ msgid "Unknown error! "
#~ msgstr "Neznana napaka!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Nimate dovoljenja za kopiranje datotek!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Vse izbrane datoteke so bile uspešno izbrisane!"

#~ msgid " does not exists!"
#~ msgstr "ne obstaja!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Te končnice datoteke ni dovoljeno naložiti!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Slika je bila uspešno naložena!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Pri nalaganju slike je nekaj težav!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Te končnice datoteke WordPress ne sme naložiti kot posnetek zaslona!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Datoteka je bila uspešno naložena!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Datotek podrejenih tem ni mogoče spreminjati."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Datoteke so bile uspešno izbrisane!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Nimate dovoljenja za brisanje datotek!"

#~ msgid "Entered directory name already exists"
#~ msgstr "Vneseno ime imenika že obstaja"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Nimate dovoljenja za ustvarjanje imenika!"

#~ msgid "Wordpress template file created"
#~ msgstr "Datoteka predloge Wordpress je ustvarjena"

#~ msgid "Wordpress template file not created"
#~ msgstr "Datoteka predloge Wordpress ni ustvarjena"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP je uspešno ustvaril datoteko"

#~ msgid "PHP file not created"
#~ msgstr "Datoteka PHP ni ustvarjena"

#~ msgid " file not created"
#~ msgstr "datoteka ni ustvarjena"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Nimate dovoljenja za ustvarjanje datoteke!"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Mapa za jezik je bila preobremenjena."

#~ msgid "Add single or multiple languages."
#~ msgstr "Dodajte en ali več jezikov."

#~ msgid "Add single language file"
#~ msgstr "Dodajte enojezično datoteko"

#~ msgid "Please click on language button."
#~ msgstr "Kliknite na jezikovni gumb."

#~ msgid "Add all languages zip folder"
#~ msgstr "Dodaj zip mapo vseh jezikov"

#~ msgid "Zip Download"
#~ msgstr "Zip prenos"
languages/wp-file-manager-el.po000064400000101441147361034410012427 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 16:49+0530\n"
"PO-Revision-Date: 2022-03-03 11:32+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Το αντίγραφο ασφαλείας θεμάτων αποκαταστάθηκε με επιτυχία."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Δεν είναι δυνατή η επαναφορά θεμάτων."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Το αντίγραφο ασφαλείας των μεταφορτώσεων αποκαταστάθηκε με επιτυχία."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Δεν είναι δυνατή η επαναφορά μεταφορτώσεων."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Τα άλλα αντίγραφα ασφαλείας αποκαταστάθηκαν με επιτυχία."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Δεν είναι δυνατή η επαναφορά άλλων."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Το αντίγραφο ασφαλείας των προσθηκών αποκαταστάθηκε με επιτυχία."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Δεν είναι δυνατή η επαναφορά των προσθηκών."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Το αντίγραφο ασφαλείας της βάσης δεδομένων αποκαταστάθηκε με επιτυχία."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Ολα τελείωσαν"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Δεν είναι δυνατή η επαναφορά του αντιγράφου ασφαλείας DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Τα αντίγραφα ασφαλείας καταργήθηκαν με επιτυχία!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Δεν είναι δυνατή η κατάργηση του αντιγράφου ασφαλείας!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr ""
"Η δημιουργία αντιγράφων ασφαλείας της βάσης δεδομένων έγινε την ημερομηνία"

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Η δημιουργία αντιγράφων ασφαλείας των προσθηκών έγινε την ημερομηνία"

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Η δημιουργία αντιγράφων ασφαλείας θεμάτων έγινε την ημερομηνία"

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Η μεταφόρτωση αντιγράφων ασφαλείας έγινε την ημερομηνία"

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Άλλα αντίγραφα ασφαλείας ολοκληρώθηκε την ημερομηνία"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "κούτσουρα"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Δεν βρέθηκαν αρχεία καταγραφής!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Δεν έχει επιλεγεί τίποτα για δημιουργία αντιγράφων ασφαλείας"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Θέμα ασφαλείας."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Έγινε η δημιουργία αντιγράφων ασφαλείας της βάσης δεδομένων."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Δεν είναι δυνατή η δημιουργία αντιγράφων ασφαλείας βάσης δεδομένων."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Έγινε η δημιουργία αντιγράφων ασφαλείας των προσθηκών."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Η δημιουργία αντιγράφων ασφαλείας προσθηκών απέτυχε."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Η δημιουργία αντιγράφων ασφαλείας θεμάτων ολοκληρώθηκε."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Η δημιουργία αντιγράφων ασφαλείας θεμάτων απέτυχε."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Ολοκληρώθηκε η μεταφόρτωση αντιγράφων ασφαλείας."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Η δημιουργία αντιγράφων ασφαλείας μεταφορτώσεων απέτυχε."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Η δημιουργία αντιγράφων ασφαλείας άλλων ολοκληρώθηκε."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Άλλα αντίγραφα ασφαλείας απέτυχε."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Διαχείριση αρχείων WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Ρυθμίσεις"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Προτιμήσεις"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Ιδιότητες συστήματος"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Σύντομος κώδικας - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Δημιουργία αντιγράφων ασφαλείας/Επαναφορά"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Αγοράστε Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Προσφέρω"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Το αρχείο δεν υπάρχει για λήψη."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Μη έγκυρος κωδικός ασφαλείας."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Λείπει το αναγνωριστικό αντιγράφου ασφαλείας."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Λείπει ο τύπος παραμέτρου."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Λείπουν οι απαιτούμενες παράμετροι."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Σφάλμα: Δεν είναι δυνατή η επαναφορά του αντιγράφου ασφαλείας επειδή το "
"αντίγραφο ασφαλείας της βάσης δεδομένων είναι μεγάλο σε μέγεθος. Προσπαθήστε "
"να αυξήσετε το Μέγιστο επιτρεπόμενο μέγεθος από τις ρυθμίσεις Προτιμήσεων."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Επιλέξτε αντίγραφα ασφαλείας για διαγραφή!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε επιλεγμένα αντίγραφα ασφαλείας;"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Η δημιουργία αντιγράφων ασφαλείας εκτελείται, περιμένετε"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Η επαναφορά εκτελείται, περιμένετε"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Δεν έχει επιλεγεί τίποτα για δημιουργία αντιγράφων ασφαλείας."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Διαχείριση αρχείων WP - Δημιουργία αντιγράφων ασφαλείας/Επαναφορά"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Επιλογές δημιουργίας αντιγράφων ασφαλείας:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Δημιουργία αντιγράφων ασφαλείας βάσης δεδομένων"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Δημιουργία αντιγράφων ασφαλείας αρχείων"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Πρόσθετα"

#: inc/backup.php:71
msgid "Themes"
msgstr "Θέματα"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Μεταφορτώσεις"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Άλλοι (Οποιοι άλλοι κατάλογοι βρίσκονται μέσα στο wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Δημιουργία αντιγράφων ασφαλείας τώρα"

#: inc/backup.php:89
msgid "Time now"
msgstr "Ώρα τώρα"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ΕΠΙΤΥΧΙΑ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Το αντίγραφο ασφαλείας διαγράφηκε με επιτυχία."

#: inc/backup.php:102
msgid "Ok"
msgstr "Εντάξει"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ΔΙΑΓΡΑΦΗ ΑΡΧΕΙΩΝ"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αντίγραφο ασφαλείας;"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Ματαίωση"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Επιβεβαιώνω"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ΕΠΑΝΑΦΟΡΑ ΑΡΧΕΙΩΝ"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Είστε βέβαιοι ότι θέλετε να επαναφέρετε αυτό το αντίγραφο ασφαλείας;"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Τελευταίο μήνυμα καταγραφής"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Το αντίγραφο ασφαλείας προφανώς πέτυχε και έχει πλέον ολοκληρωθεί."

#: inc/backup.php:171
msgid "No log message"
msgstr "Κανένα μήνυμα καταγραφής"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Υπάρχοντα αντίγραφα ασφαλείας"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Ημερομηνία δημιουργίας αντιγράφων ασφαλείας"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Δημιουργία αντιγράφων ασφαλείας δεδομένων (κάντε κλικ για λήψη)"

#: inc/backup.php:190
msgid "Action"
msgstr "Action"

#: inc/backup.php:210
msgid "Today"
msgstr "Σήμερα"

#: inc/backup.php:239
msgid "Restore"
msgstr "Επαναφέρω"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Διαγράφω"

#: inc/backup.php:241
msgid "View Log"
msgstr "Προβολή αρχείου καταγραφής"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Αυτήν τη στιγμή δεν βρέθηκαν αντίγραφα ασφαλείας."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Ενέργειες σε επιλεγμένα αντίγραφα ασφαλείας"

#: inc/backup.php:251
msgid "Select All"
msgstr "Επιλογή όλων"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Αποεπιλογή"

#: inc/backup.php:254
msgid "Note:"
msgstr "Σημείωση:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Τα αρχεία αντιγράφων ασφαλείας θα βρίσκονται κάτω"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Συνεισφορά διαχειριστή αρχείων WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Σημείωση: Αυτά είναι στιγμιότυπα οθόνης επίδειξης. Αγοράστε τις λειτουργίες "
"File Manager pro to Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Κάντε κλικ για να αγοράσετε PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Αγοράστε PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Επεξεργασία αρχείων καταγραφής"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Λήψη αρχείων καταγραφής"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Μεταφόρτωση αρχείων καταγραφής"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Οι ρυθμίσεις αποθηκεύτηκαν."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Παράβλεψη αυτής της ειδοποίησης."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Δεν έχετε κάνει καμία αλλαγή για αποθήκευση."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Public Root Path"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Διαδρομή ρίζας Διαχείριση αρχείων, μπορείτε να αλλάξετε ανάλογα με την "
"επιλογή σας."

#: inc/root.php:59
msgid "Default:"
msgstr "Προκαθορισμένο:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Αλλάξτε αυτό προσεκτικά, η λανθασμένη διαδρομή μπορεί να οδηγήσει στην "
"κατάρριψη της προσθήκης διαχείρισης αρχείων."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Ενεργοποίηση του Κάδου απορριμμάτων;"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Αφού ενεργοποιήσετε τον κάδο απορριμμάτων, τα αρχεία σας θα μεταβούν στον "
"φάκελο απορριμμάτων."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Ενεργοποίηση αποστολής αρχείων στη βιβλιοθήκη πολυμέσων;"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Αφού την ενεργοποιήσετε όλα τα αρχεία θα μεταβούν στη βιβλιοθήκη πολυμέσων."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Μέγιστο επιτρεπόμενο μέγεθος τη στιγμή της επαναφοράς του αντιγράφου "
"ασφαλείας της βάσης δεδομένων."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Αυξήστε την τιμή του πεδίου εάν λαμβάνετε μήνυμα σφάλματος τη στιγμή της "
"επαναφοράς αντιγράφων ασφαλείας."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Αποθήκευσε τις αλλαγές"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Ρυθμίσεις - Γενικά"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Σημείωση: Πρόκειται μόνο για ένα στιγμιότυπο οθόνης. Για να λάβετε "
"ρυθμίσεις, παρακαλώ αγοράστε την επαγγελματική μας έκδοση."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Εδώ ο διαχειριστής μπορεί να δώσει πρόσβαση στους ρόλους των χρηστών για να "
"χρησιμοποιήσει το filemanager. Ο διαχειριστής μπορεί να ορίσει τον "
"προεπιλεγμένο φάκελο πρόσβασης και επίσης να ελέγξει το μέγεθος φόρτωσης του "
"filemanager."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Ρυθμίσεις - Επεξεργαστής κώδικα"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Ο Διαχειριστής αρχείων έχει έναν επεξεργαστή κώδικα με πολλά θέματα. "
"Μπορείτε να επιλέξετε οποιοδήποτε θέμα για τον επεξεργαστή κωδικών. "
"Εμφανίζεται όταν επεξεργάζεστε οποιοδήποτε αρχείο. Επίσης, μπορείτε να "
"επιτρέψετε τη λειτουργία πλήρους οθόνης του επεξεργαστή κώδικα."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Προβολή κώδικα επεξεργαστή"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Ρυθμίσεις - Περιορισμοί χρήστη"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Ο διαχειριστής μπορεί να περιορίσει τις ενέργειες κάποιου χρήστη. Επίσης, "
"αποκρύπτει αρχεία και φακέλους και μπορεί να ορίσει διαφορετικές διαδρομές "
"διαφορετικών φακέλων για διαφορετικούς χρήστες."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Ρυθμίσεις - Περιορισμοί ρόλων χρήστη"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Ο διαχειριστής μπορεί να περιορίσει τις ενέργειες οποιουδήποτε χρήστη. "
"Επίσης, αποκρύπτει αρχεία και φακέλους και μπορεί να ορίσει διαφορετικές "
"διαδρομές διαφορετικών φακέλων για διαφορετικούς ρόλους χρηστών."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Διαχείριση αρχείων - Σύντομος κώδικας"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ΧΡΗΣΗ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Θα εμφανίσει τη διαχείριση αρχείων στο μπροστινό μέρος. Μπορείτε να ελέγξετε "
"όλες τις ρυθμίσεις από τις ρυθμίσεις διαχείρισης αρχείων. Θα λειτουργεί όπως "
"το backend WP File Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Θα εμφανίσει τη διαχείριση αρχείων στο μπροστινό μέρος. Αλλά μόνο ο "
"Διαχειριστής μπορεί να έχει πρόσβαση σε αυτό και θα το ελέγξει από τις "
"ρυθμίσεις διαχείρισης αρχείων."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Παράμετροι:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Θα επιτρέψει σε όλους τους ρόλους να έχουν πρόσβαση στον διαχειριστή αρχείων "
"στη διεπαφή ή Μπορείτε να χρησιμοποιήσετε απλά για συγκεκριμένους ρόλους "
"χρήστη, όπως allow_roles=\"editor,author\" (διαχωρίζονται με κόμμα(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Εδώ \"test\" είναι το όνομα του φακέλου που βρίσκεται στον ριζικό κατάλογο ή "
"μπορείτε να δώσετε διαδρομή για υποφακέλους όπως \"wp-content/plugins\". Εάν "
"αφήσετε κενό ή κενό, θα έχει πρόσβαση σε όλους τους φακέλους στον ριζικό "
"κατάλογο. Προεπιλογή: Κατάλογος ρίζας"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"για πρόσβαση σε δικαιώματα εγγραφής αρχείων, σημειώστε: true/false, default: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"για πρόσβαση σε δικαιώματα ανάγνωσης αρχείων, σημείωση: true/false, default: "
"true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"θα κρυφτεί που αναφέρεται εδώ. Σημείωση: χωρίζεται με κόμμα(,). Προεπιλογή: "
"Μηδενικό"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Θα κλειδώσει που αναφέρεται στα κόμματα. μπορείτε να κλειδώσετε περισσότερα "
"όπως \".php,.css,.js\" κ.λπ. Προεπιλογή: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* για όλες τις λειτουργίες και για να επιτρέψετε κάποια λειτουργία, μπορείτε "
"να αναφέρετε το όνομα της λειτουργίας ως like, allow_operations=\"upload,"
"download\". Σημείωση: χωρίζεται με κόμμα(,). Προκαθορισμένο: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Λίστα λειτουργιών αρχείων:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Δημιουργία καταλόγου ή φακέλου"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Δημιουργία αρχείου"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Μετονομάστε ένα αρχείο ή φάκελο"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Αντιγράψτε ή κλωνοποιήστε έναν φάκελο ή ένα αρχείο"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Επικολλήστε ένα αρχείο ή φάκελο"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Απαγόρευση"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Για να δημιουργήσετε ένα αρχείο ή zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Εξαγωγή αρχείου ή συμπιεσμένου αρχείου"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Αντιγραφή αρχείων ή φακέλων"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Απλή αποκοπή ενός αρχείου ή φακέλου"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Επεξεργαστείτε ένα αρχείο"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Αφαιρέστε ή διαγράψτε αρχεία και φακέλους"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Λήψη αρχείων"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Μεταφόρτωση αρχείων"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Ψάξε πράγματα"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Πληροφορίες αρχείου"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Βοήθεια"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Θα απαγορεύσει συγκεκριμένους χρήστες βάζοντας απλώς τα αναγνωριστικά "
"τους διαχωρισμένα με κόμμα(,). Εάν ο χρήστης είναι Ban, τότε δεν θα έχει "
"πρόσβαση στον διαχειριστή αρχείων wp στο μπροστινό μέρος."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Προβολή διεπαφής χρήστη Filemager. Προεπιλογή: πλέγμα"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Τροποποίηση αρχείου ή Δημιουργία μορφής ημερομηνίας. Προεπιλογή: d M, Y h:"
"i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Γλώσσα διαχείρισης αρχείων. Προεπιλογή: Αγγλικά (en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Θέμα Διαχείριση αρχείων. Προεπιλογή: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Διαχείριση αρχείων - Ιδιότητες συστήματος"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Έκδοση PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Μέγιστο μέγεθος μεταφόρτωσης αρχείου (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Δημοσίευση μέγιστου μεγέθους μεταφόρτωσης αρχείου (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Όριο μνήμης (memory_limit))"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Χρονικό όριο (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Πρόγραμμα περιήγησης και λειτουργικό σύστημα (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Αλλάξτε το θέμα εδώ:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Προκαθορισμένο"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Σκοτάδι"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Φως"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Γκρί"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Καλώς ορίσατε στη Διαχείριση αρχείων"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Μας αρέσει να κάνουμε νέους φίλους! Εγγραφείτε παρακάτω και υποσχόμαστε να "
"σας κρατάμε ενήμερους για τις τελευταίες μας νέες προσθήκες, ενημερώσεις, "
"εκπληκτικές προσφορές και μερικές ειδικές προσφορές."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Παρακαλώ εισάγετε Όνομα."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Παρακαλώ εισάγετε Επώνυμο."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Εισαγάγετε τη διεύθυνση email."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Επαληθεύω"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Οχι ευχαριστώ"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Όροι χρήσης"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Πολιτική Απορρήτου"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Οικονομία..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Εντάξει"

#~ msgid "Manage your WP files."
#~ msgstr "Διαχειριστείτε τα αρχεία WP"

#~ msgid "Extensions"
#~ msgstr "Επεκτάσεις"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Συμπληρώστε κάποια δωρεά, για να κάνετε το plugin πιο σταθερό. Μπορείτε "
#~ "να πληρώσετε το ποσό της επιλογής σας."
languages/wp-file-manager-fa_IR.mo000064400000054240147361034410013010 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&L('])0�*a�*A+1Z+�+J�+�+�,u.q�.�.p/i�/q�/"_07�0*�0U�0I;1R�16�1&2662m25�2�2�2�2.�2'3 B3
c35n3K�3�3
424RJ4C�4Y�4
;5I5X5_5(|5�5/�5�5G6)J6(t6K�6(�67"28DU8#�80�8q�8�a9�:3;*H;s;�;��;:=T>(l>E�>��?��@A�B�B�B-�B�BsCC�C(�C.�C*!D6LD�D�D$�D�D��D��EM(FNvF�F�Fd�FD8G0}G7�GR�G9HQH:dH3�H&�H7�H�2I��I�JR�J?�JE*KTpKN�KL%&LLLiL?�L(�L�LGMLMYMsM#�M�M�MC�M N&/NVN*rN8�N�N�N@OHO)bOl�O	�OJP;NPL�P`�P8QQQ*oQ
�Q�QP�QRI-R3wR@�R8�R=%S3cS&�S�SH�S5T7LTD�T�T�T�TCU%OU5uU#�VO�V�W{�W�X}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 18:16+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: fa_IR
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* برای همه عملیات و اجازه دادن به برخی از عملیات، می توانید نام عملیات را به عنوان like, allow_operations="upload,download" ذکر کنید. توجه: با کاما (،) جدا شده است. پیش فرض: *-> فقط با قرار دادن شناسه های آنها که با کاما (،) جدا شده اند، کاربران خاصی را ممنوع می کند. اگر کاربر Ban باشد، نمی‌تواند به مدیریت فایل wp در فرانت اند دسترسی پیدا کند.-> تم مدیر فایل. پیش فرض: نور-> فایل اصلاح شده یا ایجاد فرمت تاریخ. پیش‌فرض: d M، Y h:i A-> زبان مدیر فایل. پیش فرض: انگلیسی (en)-> نمای UI Filemager. پیش فرض: شبکهعملاقدامات مربوط به پشتیبان (های) انتخاب شدهمدیر می تواند اعمال هر کاربر را محدود کند. همچنین فایل ها و پوشه ها را مخفی کنید و می توانید راه های مختلف پوشه های مختلف را برای کاربران مختلف تنظیم کنید.Admin می تواند اعمال هر کاربر را محدود کند. همچنین فایل ها و پوشه ها را مخفی کنید و می توانید راه های مختلف پوشه های مختلف را برای نقش های مختلف کاربران تنظیم کنید.پس از فعال کردن سطل زباله، فایل های شما به پوشه سطل زباله می روند.پس از فعال کردن این، همه فایل‌ها به کتابخانه رسانه خواهند رفت.همه انجام شدآیا مطمئن هستید که می خواهید پشتیبان(های) انتخابی را حذف کنید؟آیا مطمئن هستید که می خواهید این نسخه پشتیبان را حذف کنید؟آیا مطمئن هستید که می خواهید این نسخه پشتیبان را بازیابی کنید؟تاریخ پشتیبان گیریهمین حالا نسخه پشتیبان تهیه کنگزینه های پشتیبان گیری:پشتیبان گیری از اطلاعات (برای دانلود کلیک کنید)فایل های پشتیبان در زیر قرار خواهند گرفتپشتیبان‌گیری در حال اجرا است، لطفاً صبر کنیدپشتیبان گیری با موفقیت حذف شد.پشتیبان گیری بازیابیپشتیبان گیری با موفقیت حذف شد!ممنوع کردنمرورگر و سیستم عامل (HTTP_USER_AGENT)خرید PROخرید حرفه ایلغو کنیدتم را در اینجا تغییر دهید:برای خرید PRO کلیک کنیدکد ویرایشگر نمایشتاییدفایل ها یا پوشه ها را کپی کنیددر حال حاضر هیچ نسخه پشتیبان (ها) یافت نشد.فایلهاروحذف کنتاریکپشتیبان گیری از پایگاه دادهپشتیبان گیری از پایگاه داده در تاریخ انجام شدپشتیبان گیری از پایگاه داده انجام شد.پشتیبان گیری از پایگاه داده با موفقیت بازیابی شد.پیش فرضپیش فرض:حذفلغو انتخاب کنیداین اطلاعیه را رد کنیداهدا کنیدلاگ فایل ها را دانلود کنیددانلود فایل هایک پوشه یا فایل را کپی یا شبیه سازی کنیدویرایش فایل‌های گزارشیک فایل را ویرایش کنیدآپلود فایل ها در کتابخانه رسانه فعال شود؟حذف‌شده‌ها فعال شود؟خطا: امکان بازیابی نسخه پشتیبان وجود ندارد زیرا نسخه پشتیبان پایگاه داده حجم بالایی دارد. لطفاً سعی کنید حداکثر اندازه مجاز را از تنظیمات برگزیده افزایش دهید.پشتیبان (های) موجودبایگانی یا فایل فشرده را استخراج کنیدمدیر فایل - کد کوتاهمدیر فایل - ویژگی های سیستممسیر ریشه فایل منیجر را می توانید بنا به انتخاب خود تغییر دهید.مدیر فایل دارای یک ویرایشگر کد با چندین تم است. شما می توانید هر تم برای ویرایشگر کد را انتخاب کنید. هنگامی که شما هر فایل را ویرایش می کنید، آن نمایش داده می شود. همچنین شما می توانید حالت تمام صفحه ویرایشگر کد را اجازه دهید.لیست عملیات فایل:فایل برای دانلود وجود ندارد.پشتیبان گیری از فایل هاخاکستریکمکدر اینجا "test" نام پوشه ای است که در دایرکتوری ریشه قرار دارد، یا می توانید مسیر را برای زیر پوشه ها مانند "wp-content/plugins" بدهید. اگر خالی یا خالی بماند، به تمام پوشه‌های دایرکتوری ریشه دسترسی خواهد داشت. پیش فرض: دایرکتوری ریشهدر اینجا مدیر می تواند دسترسی به نقش های کاربر را برای استفاده از مدیر فایل استفاده کند. Admin می تواند پوشه پیش فرض دسترسی را تنظیم کند و اندازه آپلود فایل manager را نیز کنترل کند.اطلاعات فایلکد امنیتی نامعتبر است.به همه نقش‌ها اجازه می‌دهد به مدیر فایل در قسمت جلویی دسترسی داشته باشند یا می‌توانید برای نقش‌های کاربری خاص مانند allow_roles="editor,author" به سادگی استفاده کنید (با کاما(،) جدا شده‌اند.قفل خواهد شد که در کاما ذکر شده است. شما می توانید موارد بیشتری مانند ".php,.css،.js" و غیره قفل کنید. پیش فرض: تهیاین فایل منیجر را در قسمت جلویی نمایش می دهد. اما فقط مدیر می تواند به آن دسترسی داشته باشد و از تنظیمات مدیر فایل کنترل می کند.این فایل منیجر را در قسمت جلویی نمایش می دهد. شما می توانید تمام تنظیمات را از تنظیمات مدیر فایل کنترل کنید. مانند مدیریت فایل WP باطن کار خواهد کرد.آخرین پیام ورودسبکسیاهههای مربوطدایرکتوری یا پوشه بسازیدفایل درست کنیدحداکثر اندازه مجاز در زمان بازیابی نسخه پشتیبان از پایگاه داده.حداکثر اندازه آپلود فایل (upload_max_filesize)محدودیت حافظه (memory_limit)شناسه پشتیبان موجود نیست.نوع پارامتر موجود نیست.عدم وجود پارامترهای مورد نیازنه ممنونپیامی وجود نداردهیچ گزارشی پیدا نشد!توجه داشته باشید:توجه: این ها اسکرین شات های نمایشی هستند. لطفاً توابع مدیر فایل حرفه ای را بخرید.توجه: این فقط یک عکس نسخه ی نمایشی است. برای دریافت تنظیمات لطفا نسخه حرفه ای ما را بخرید.هیچ چیزی برای پشتیبان گیری انتخاب نشده استهیچ چیزی برای پشتیبان گیری انتخاب نشده است.خوبخوبسایرین (هر دایرکتوری دیگری که در داخل wp-content یافت می شود)پشتیبان گیری دیگران در تاریخ انجام شدپشتیبان گیری بقیه انجام شدپشتیبان گیری دیگران انجام نشد.سایر نسخه های پشتیبان با موفقیت بازیابی شدند.نسخه پی اچ پیمولفه های:یک فایل یا پوشه را جایگذاری کنیدلطفا آدرس ایمیل را وارد کنیدلطفا نام را وارد کنیدلطفا نام خانوادگی را وارد کنیدلطفاً این را با دقت تغییر دهید، مسیر اشتباه می‌تواند منجر به از کار افتادن افزونه مدیر فایل شود.اگر در زمان بازیابی نسخه پشتیبان پیام خطا دریافت می کنید، لطفاً مقدار فیلد را افزایش دهید.پلاگین هاپشتیبان‌گیری از پلاگین‌ها در تاریخ انجام شدپشتیبان گیری از افزونه ها انجام شد.پشتیبان‌گیری از افزونه‌ها انجام نشد.پشتیبان‌گیری افزونه‌ها با موفقیت بازیابی شد.حداکثر اندازه بارگذاری فایل ارسال (post_max_size)اولویت هاسیاست حفظ حریم خصوصیمسیر ریشه عمومیبازیابی فایل هافایل ها و پوشه ها را حذف یا حذف کنیدتغییر نام فایل یا پوشهبازگرداندنبازیابی در حال اجرا است، لطفاً صبر کنیدموفقیتذخیره تغییراتصرفه جویی در...چیزها را جستجو کنیدمشکل امنیتی.انتخاب همهپشتیبان (های) را برای حذف انتخاب کنید!تنظیماتتنظیمات - کد ویراستارتنظیمات - عمومیتنظیمات - محدودیت کاربرتنظیمات - محدودیت های نقش کاربرتنظیمات ذخیره شد.کوتاه - PROبه سادگی یک فایل یا پوشه را برش دهیدخصوصیات سیستمشرایط استفاده از خدماتظاهراً نسخه پشتیبان با موفقیت انجام شد و اکنون کامل شده است.تم هاپشتیبان‌گیری از تم‌ها در تاریخ انجام شدپشتیبان‌گیری از تم‌ها انجام شد.پشتیبان‌گیری از طرح‌های زمینه انجام نشد.پشتیبان‌گیری از طرح‌های زمینه با موفقیت بازیابی شد.ساعت هم اکنونوقفه (max_execution_time)برای ایجاد آرشیو یا زیپامروزاستفاده کنید:ایجاد نسخه پشتیبان از پایگاه داده ممکن نیست.پشتیبان حذف نشد!امکان بازیابی نسخه پشتیبان DB وجود ندارد.قادر به بازیابی دیگران نیست.امکان بازیابی افزونه ها وجود ندارد.امکان بازیابی تم ها وجود ندارد.امکان بازیابی آپلودها وجود ندارد.گزارش فایل‌ها را آپلود کنیدفایل ها را آپلود کنیدآپلودهاآپلودهای پشتیبان در تاریخ انجام شده استپشتیبان‌گیری آپلود انجام شد.پشتیبان‌گیری آپلود انجام نشد.پشتیبان آپلودها با موفقیت بازیابی شد.تایید کنیدمشاهده گزارشWP مدیر فایل مدیریت فایل WP - پشتیبان گیری / بازیابیمشارکت مدیریت فایل WPما عاشق پیدا کردن دوستان جدید هستیم! در زیر مشترک شوید و ما قول می دهیم که شما را از آخرین افزونه های جدید، به روز رسانی ها، معاملات عالی و چند پیشنهاد ویژه به روز نگه داریم.به File Manager خوش آمدیدشما هیچ تغییری ایجاد نکرده اید تا ذخیره شود.برای دسترسی به مجوز خواندن فایل ها، توجه داشته باشید: true/false، پیش فرض: trueبرای دسترسی به مجوزهای نوشتن فایل، توجه داشته باشید: true/false، default: falseدر اینجا ذکر شده پنهان خواهد شد. توجه: با کاما (،) جدا شده است. پیش فرض: صفرlanguages/wp-file-manager-sq.po000064400000243547147361034410012470 0ustar00msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2022-02-28 11:33+0530\n"
"PO-Revision-Date: 2022-03-01 18:15+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sq\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Rezervimi i temave u rikuperua me sukses."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Nuk mund të rikthehen temat."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Rezervimi i ngarkimeve u restaurua me sukses."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Nuk mund të rikthehen ngarkimet."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Rezervimet e tjera u rikuperuan me sukses."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Në pamundësi për të rivendosur të tjerët."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Rezervimi i shtojcave u rikuperua me sukses."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Nuk mund të rikthehet shtojcat."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Rezervimi i bazës së të dhënave u rikuperua me sukses."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Gjithçka u krye"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Nuk mund të rikuperohet rezervimi i DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Rezervimet u hoqën me sukses!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Rezervimi nuk mund të hiqet!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Rezervimi i bazës së të dhënave është bërë në datë "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Rezervimi i shtojcave është bërë në datë "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Rezervimi i temave u bë në datë "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Rezervimet e ngarkimeve bëhen në datë "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Të tjerët rezervimin e bërë në datën "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Shkrimet"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nuk u gjet asnjë regjistër!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Asgjë nuk është zgjedhur për kopje rezervë"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Çështja e sigurisë."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Rezervimi i bazës së të dhënave është kryer."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Nuk mund të krijohet një kopje rezervë e bazës së të dhënave."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Rezervimi i shtojcave u krye."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Rezervimi i shtojcave dështoi."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Rezervimi i temave u krye."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Rezervimi i temave dështoi."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Rezervimi i ngarkimeve u krye."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Rezervimi i ngarkimeve dështoi."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Rezervimi i të tjerëve u krye."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Rezervimi i të tjerëve dështoi."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Menaxheri i skedarëve WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Cilësimet"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferencat"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Karakteristikat e sistemit"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kodi i shkurtër - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Rezervimi/Rivendosja"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Bleni Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Dhuroni"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Skedari nuk ekziston për ta shkarkuar."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Kod i pavlefshëm i sigurisë."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "ID-ja e rezervës mungon."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Lloji i parametrit mungon."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Mungojnë parametrat e kërkuar."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Gabim: Rezervimi nuk mund të rivendoset sepse rezervimi i bazës së të "
"dhënave është i madh në madhësi. Ju lutemi, përpiquni të rritni madhësinë "
"maksimale të lejuar nga cilësimet e Preferencave."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Zgjidhni kopjet rezervë për t'i fshirë!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Jeni i sigurt që dëshironi të hiqni rezervat e zgjedhura?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Rezervimi po ekzekutohet, ju lutem prisni"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Rivendosja po funksionon, ju lutemi prisni"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Asgjë nuk është zgjedhur për kopje rezervë."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Menaxheri i skedarëve WP - Rezervimi / Rikuperimi"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opsionet e rezervimit:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Rezervimi i bazës së të dhënave"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Rezervimi i skedarëve"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Shtojca"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temat"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Ngarkimet"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Të tjerët (Çdo direktori tjetër që gjendet brenda përmbajtjes wp)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Rezervimi Tani"

#: inc/backup.php:89
msgid "Time now"
msgstr "Koha tani"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUKSES"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Rezervimi u fshi me sukses."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ne rregull"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "Fshi skedarët"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Je i sigurt që dëshiron ta fshish këtë rezervë?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Anulo"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Konfirmo"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RISHIKON DOSJAT"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Jeni i sigurt që doni ta riktheni këtë rezervë?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Mesazhi i Regjistrimit të Fundit"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Rezervimi me sa duket pati sukses dhe tani është i plotë."

#: inc/backup.php:171
msgid "No log message"
msgstr "Asnjë mesazh regjistri"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Rezervimet ekzistuese"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Data e rezervimit"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Të dhënat rezervë (kliko për të shkarkuar)"

#: inc/backup.php:190
msgid "Action"
msgstr "Veprimi"

#: inc/backup.php:210
msgid "Today"
msgstr "Sot"

#: inc/backup.php:239
msgid "Restore"
msgstr "Rikthe"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Fshij"

#: inc/backup.php:241
msgid "View Log"
msgstr "Shiko Regjistrin"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Aktualisht nuk u gjet asnjë rezervë (t)."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Veprimet pas rezervimit të zgjedhur"

#: inc/backup.php:251
msgid "Select All"
msgstr "Selektoj të gjitha"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Hiq zgjedhjen"

#: inc/backup.php:254
msgid "Note:"
msgstr "Shënim:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Skedarët rezervë do të jenë nën"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Kontributi i Menaxheri i skedarëve WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Shënim: Këto janë pamje ekrani demo. Ju lutemi blini File Manager pro tek "
"funksionet Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klikoni për të blerë PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Bleni PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Redakto Regjistrat e Skedarëve"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Shkarkoni Regjistrat e Skedarëve"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Ngarko Dosjet e Skedarëve"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Cilësimet u ruajtën."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Hidhe poshtë këtë njoftim."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Ju nuk keni bërë asnjë ndryshim për t'u ruajtur."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Rruga e Rrënjës Publike"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Skeda Root Rrugor, ju mund të ndryshoni sipas zgjedhjes suaj."

#: inc/root.php:59
msgid "Default:"
msgstr "Parazgjedhur:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Ju lutemi ndryshojeni këtë me kujdes, rruga e gabuar mund të çojë shtojcën e "
"menaxherit të skedarit."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Të aktivizohet Plehra?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Pas aktivizimit të plehrave, skedarët tuaj do të shkojnë në dosjen e "
"plehrave."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Të aktivizohet ngarkimi i skedarëve në Bibliotekën e mediave?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Pasi ta keni mundësuar këtë, të gjitha skedarët do të shkojnë në bibliotekën "
"e mediave."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Madhësia maksimale e lejuar në kohën e rivendosjes së rezervës së bazës së "
"të dhënave."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Ju lutemi rrisni vlerën e fushës nëse po merrni mesazh gabimi në kohën e "
"rivendosjes së rezervës."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Ruaj ndryshimet"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Cilësimet - Të përgjithshme"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Shënim: Kjo është vetëm një pamje ekrani demonstruese. Për të marrë "
"cilësimet, ju lutemi blini versionin tonë pro."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Këtu administratori mund të japë qasje në rolet e përdoruesit për të "
"përdorur menaxherin e skedarëve. Admin mund të vendosë Dosjen e Hyrjes së "
"Paracaktuar dhe gjithashtu të kontrollojë madhësinë e ngarkimit të "
"administratorit të skedarëve."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Cilësimet - Redaktuesi i kodit"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Skedari ka një redaktues kodi me shumë tema. Mund të zgjidhni çdo temë për "
"redaktuesin e kodit. Do të shfaqet kur të ndryshoni ndonjë skedar. "
"Gjithashtu mund të lejoni modalitetin në ekran të plotë të redaktuesit të "
"kodit."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Pamja e redaktuesit të kodit"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Cilësimet - Kufizimet e Përdoruesit"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Admin mund të kufizojë veprimet e çdo përdoruesi. Gjithashtu fshehni "
"skedarët dhe dosjet dhe mund të vendosni shtigje të ndryshme - të ndryshme "
"të dosjeve për përdorues të ndryshëm."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Cilësimet - Kufizimet e rolit të përdoruesit"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Admin mund të kufizojë veprimet e çdo përdoruesi. Gjithashtu fshehni "
"skedarët dhe dosjet dhe mund të vendosni shtigje të ndryshme - të ndryshme "
"të dosjeve për role të përdoruesve të ndryshëm."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Skedari - Kodi i Shkurtër"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "P USRDORIMI:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Do të tregojë menaxherin e skedarëve në pjesën e përparme. Mund të "
"kontrolloni të gjitha cilësimet nga cilësimet e menaxherit të skedarëve. Do "
"të funksionojë njësoj si Menaxheri i skedarëve WP."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Do të tregojë menaxherin e skedarëve në pjesën e përparme. Por vetëm "
"Administratori mund ta qaset atë dhe do ta kontrollojë nga cilësimet e "
"menaxherit të skedarëve."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametrat:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Ai do t'i lejojë të gjitha rolet të kenë qasje në menaxherin e skedarëve në "
"pjesën e përparme ose mund ta përdorni thjesht për role të veçanta "
"përdoruesi, si p.sh."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Këtu \"test\" është emri i dosjes që ndodhet në direktoriumin rrënjë, ose "
"mund të jepni rrugën për nën-dosjet si \"wp-content/plugins\". Nëse lihet "
"bosh ose bosh, do të ketë akses në të gjitha dosjet në direktorinë rrënjë. "
"Parazgjedhja: Drejtoria rrënjësore"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"për qasje në lejet e shkrimit të skedarëve, vini re: true/false, default: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"për akses në lejen e leximit të skedarëve, vini re: e vërtetë/e gabuar, e "
"paracaktuar: e vërtetë"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"do të fshihet i përmendur këtu. Shënim: ndahet me presje (,). Parazgjedhja: "
"Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Do të kyçet e përmendur në presje. ju mund të kyçni më shumë si \".php,.css,."
"js\" etj. Parazgjedhja: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* për të gjitha operacionet dhe për të lejuar disa operacione, mund të "
"përmendni emrin e operacionit si like, allow_operations=\"upload, download"
"\". Shënim: ndahet me presje (,). Parazgjedhja: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lista e Operacioneve të Dosjeve:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Bëni direktori ose dosje"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Bëni skedarin"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Riemërtoni një skedar ose dosje"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Kopjoni ose klononi një dosje ose skedar"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Ngjit një skedar ose dosje"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "ndalim"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Për të bërë një arkiv ose zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Nxjerr arkivin ose skedarin zip"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopjoni skedarë ose dosje"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Thjesht prerë një skedar ose dosje"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Redakto një skedar"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Hiqni ose fshini skedarët dhe dosjet"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Shkarkoni skedarë"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Ngarko skedarët"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Kërkoni gjëra"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informacioni i skedarit"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Ndihmoni"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Do të ndalojë përdorues të veçantë duke vendosur id-të e tyre të ndara me "
"presje (,). Nëse përdoruesi është Ban, atëherë ata nuk do të kenë mundësi të "
"hyjnë në menaxherin e skedarëve wp në pjesën e përparme."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Pamja UI e Skedarit. Default: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Skedari Modifikohet ose Krijoni formatin e datës. Default: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Gjuha e menaxherit të skedarëve. Parazgjedhur: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema e Menaxherit të Skedarëve. Default: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Skedari - Karakteristikat e sistemit"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versioni PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Madhësia maksimale e ngarkimit të skedarit (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Posto madhësinë maksimale të ngarkimit të skedarit (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Kufiri i kujtesës (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Koha e ndërprerjes (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Shfletuesi dhe OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Ndryshoni Temën Këtu:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Parazgjedhur"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "E errët"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Drita"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Gri"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Mirësevini në File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Na pëlqen të krijojmë miq të rinj! Abonohuni më poshtë dhe ne premtojmë të\n"
"    ju mbajmë të azhurnuar me shtojcat, azhurnimet tona më të fundit,\n"
"    marrëveshje të mrekullueshme dhe disa oferta speciale."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Ju lutemi shkruani emrin."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Ju lutemi shkruani emrin e modelit."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Ju lutemi shkruani adresën e postës elektronike."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verifiko"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Jo faleminderit"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Kushtet e shërbimit"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Politika e privatësisë"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Po kursen ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Ne rregull"

#~ msgid "Backup not found!"
#~ msgstr "Rezervimi nuk u gjet!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Rezervimi u hoq me sukses!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Asgjë nuk është zgjedhur për rezervë</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Çështja e Sigurisë. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rezervimi i bazës së të dhënave u "
#~ "krye. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nuk mund të krijohet një kopje rezervë e "
#~ "bazës së të dhënave. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rezervimi i shtojcave u krye. </span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Rezervimi i shtojcave dështoi. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rezervimi i temave u krye. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Rezervimi i temave dështoi. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rezervimi i ngarkimeve u krye. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Rezervimi i ngarkimeve dështoi. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Rezervimi i të tjerëve u bë. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Rezervimi i të tjerëve dështoi. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Të gjitha të bëra </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Imazh"

#~ msgid "of"
#~ msgstr "e"

#~ msgid "Close"
#~ msgstr "Mbylle"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Kjo karakteristikë kërkon korniza inline. Ju keni iframe të çaktivizuara "
#~ "ose shfletuesi juaj nuk i mbështet ato."

#~ msgid "Theme Editor"
#~ msgstr "Redaktuesi i temës"

#~ msgid "Plugin Editor"
#~ msgstr "Redaktuesi i shtojcave"

#~ msgid "Access Control"
#~ msgstr "Kontrolli i Hyrjes"

#~ msgid "Notify Me"
#~ msgstr "Me njofto"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "gjuha është shkarkuar me sukses."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Dosja e gjuhës dështoi të zvogëlohej."

#~ msgid "Security token expired!"
#~ msgstr "Shenja e sigurisë ka skaduar!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "gjuha është shkarkuar me sukses."

#~ msgid "Currently language "
#~ msgstr "Gjuha aktualisht "

#~ msgid " not available. Please click on the request language link."
#~ msgstr ""
#~ " i padisponueshem. Ju lutemi klikoni në lidhjen e gjuhës së kërkesës."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr ""
#~ "Ju nuk keni leje të mjaftueshme për të redaktuar shtojcat për këtë sit."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Nuk ka asnjë shtojcë të instaluar në këtë sit."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Nuk ka tema të instaluara në këtë sit."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">Ju lutemi shkruani emrin e dosjes! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Ju lutemi shkruani emrin e skedarit! </p>"

#~ msgid "Open"
#~ msgstr "E hapur"

#~ msgid "Preview"
#~ msgstr "Paraqitje"

#~ msgid "Edit"
#~ msgstr "Redakto"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Jeni i sigurt që doni të abortoni ngarkimin e skedarit?"

#~ msgid "File renamed successfully."
#~ msgstr "Skedari u riemërua me sukses."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Jeni i sigurt që dëshironi të fshini dosjen?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Dosja u fshi me sukses."

#~ msgid "File deleted successfully."
#~ msgstr "Skedari u fshi me sukses."

#~ msgid "Folder renamed successfully."
#~ msgstr "Dosja u riemërua me sukses."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Nuk lejohen më shumë se 30 karaktere.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Kërkesë e pavlefshme!"

#~ msgid "No change in file!"
#~ msgstr "Asnjë ndryshim në dosje!"

#~ msgid "File saved successfully!"
#~ msgstr "Skedari u ruajt me sukses!"

#~ msgid "File not saved!"
#~ msgstr "Skedari nuk u ruajt!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Nuk mund të verifikohet shenja e sigurisë!"

#~ msgid "Folder created successfully!"
#~ msgstr "Dosja u krijua me sukses!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Ky format i dosjes nuk lejohet të ngarkohet nga wordpress!"

#~ msgid "Folder already exists!"
#~ msgstr "Dosja tashmë ekziston!"

#~ msgid "File created successfully!"
#~ msgstr "Skedari u krijua me sukses!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Kjo shtesë skedari nuk lejohet të krijohet!"

#~ msgid "File already exists!"
#~ msgstr "Skedari ekziston tashmë!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Ju lutemi shkruani një shtesë të vlefshme skedari!"

#~ msgid "Folder does not exists!"
#~ msgstr "Dosja nuk ekziston!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Dosja u fshi me sukses!"

#~ msgid "File deleted successfully!"
#~ msgstr "Skedari u fshi me sukses!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "Kjo shtesë skedari nuk lejohet të ngarkohet nga wordpress!"

#~ msgid " already exists"
#~ msgstr " Tashmë ekziston"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Skedari u ngarkua me sukses: Rruga e skedarit të ngarkuar është "

#~ msgid "No file selected"
#~ msgstr "Asnjë skedar i zgjedhur"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Nuk mund të riemërtohet skedari! Provo përsëri."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Dosja u riemërua me sukses!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Ju lutemi shkruani emrin e saktë të dosjes"

#~ msgid "How can we help?"
#~ msgstr "Si mund të ndihmojmë?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr ""
#~ "Burimet e të mësuarit, mbështetja profesionale dhe ndihma e ekspertëve."

#~ msgid "Documentation"
#~ msgstr "Dokumentacioni"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Gjeni përgjigje shpejt nga dokumentacioni ynë gjithëpërfshirës."

#~ msgid "Learn More"
#~ msgstr "Mëso më shumë"

#~ msgid "Contact Us"
#~ msgstr "Na kontaktoni"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr ""
#~ "Dorëzoni një biletë ndihme për përgjigje në pyetjet që mund të keni."

#~ msgid "Request a Feature"
#~ msgstr "Kërkoni një veçori"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "Na tregoni se çfarë dëshironi dhe do ta shtoni në hartën tonë."

#~ msgid "Tell us what you think!"
#~ msgstr "Na tregoni se çfarë mendoni!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Vlerësoni dhe na jepni një përmbledhje në Wordpress!"

#~ msgid "Leave a Review"
#~ msgstr "Lini një përmbledhje"

#~ msgid "Update"
#~ msgstr "Përditëso"

#~ msgid "Click here to install/update "
#~ msgstr "Klikoni këtu për të instaluar / azhurnuar "

#~ msgid " language translation for Theme Editor."
#~ msgstr " jezikovni prevod za urejevalnik tem."

#~ msgid "Installed"
#~ msgstr "I instaluar"

#~ msgid "English is the default language of Theme Editor. "
#~ msgstr "Anglishtja është gjuha e paracaktuar e Editor Editor. "

#~ msgid "Request "
#~ msgstr "Kërkesë "

#~ msgid "Click here to request"
#~ msgstr "Klikoni këtu për të kërkuar"

#~ msgid "language translation for Theme Editor"
#~ msgstr "përkthimi i gjuhës për Editor Editor"

#~ msgid "Theme Editor Language:"
#~ msgstr "Gjuha e redaktuesit të temës:"

#~ msgid " language"
#~ msgstr " gjuhe"

#~ msgid "Available languages"
#~ msgstr "Razpoložljivi jeziki"

#~ msgid "Click here to download all available languages."
#~ msgstr "Kliknite tukaj za prenos vseh razpoložljivih jezikov."

#~ msgid "Request a language"
#~ msgstr "Zahtevajte jezik"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Na trego cilën gjuhë dëshiron të shtosh."

#~ msgid "Contact us"
#~ msgstr "Na kontaktoni"

#~ msgid "Notifications"
#~ msgstr "Njoftimet"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> Shënim: Kjo është vetëm një pamje në ekran. Bleni Versionin PRO "
#~ "për këtë veçori. </strong>"

#~ msgid "Permissions"
#~ msgstr "Permissions"

#~ msgid "Edit Plugin"
#~ msgstr "Redakto shtojcën"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Kjo shtojcë është aktualisht e aktivizuar! </strong> "
#~ "Paralajmërim: Bërja e ndryshimeve në shtojcat aktive nuk rekomandohet. "
#~ "Nëse ndryshimet tuaja shkaktojnë një gabim fatal, shtojca do të "
#~ "çaktivizohet automatikisht."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Redaktimi <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (aktiv)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Shfletimi <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (joaktiv)"

#~ msgid "Update File"
#~ msgstr "Dosja e azhurnimit"

#~ msgid "Download Plugin"
#~ msgstr "Shkarkoni shtojcën"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Ju duhet ta bëni këtë skedar të shkruara para se të ruani ndryshimet "
#~ "tuaja. Shikoni <a href=\"https://wordpress.org/support/article/changing-"
#~ "file-permissions/\" target=\"_blank\"> Codex </a> për më shumë "
#~ "informacion."

#~ msgid "Select plugin to edit:"
#~ msgstr "Zgjidhni shtojcën për të ndryshuar:"

#~ msgid "Create Folder and File"
#~ msgstr "Krijoni Dosje dhe Skedar"

#~ msgid "Create"
#~ msgstr "Krijoni"

#~ msgid "Remove Folder and File"
#~ msgstr "Hiq Dosjen dhe Skedarin"

#~ msgid "Remove "
#~ msgstr "Hiq"

#~ msgid "To"
#~ msgstr "Për të"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Opsionale: Nën-Drejtoria"

#~ msgid "Choose File "
#~ msgstr "Zgjidhni Skedarin"

#~ msgid "No file Chosen "
#~ msgstr "Asnjë skedar i zgjedhur "

#~ msgid "Create a New Folder: "
#~ msgstr "Krijoni një dosje të re:"

#~ msgid "New folder will be created in: "
#~ msgstr "Dosje e re do të krijohet në:"

#~ msgid "New Folder Name: "
#~ msgstr "Emri i Dosjes së Re:"

#~ msgid "Create New Folder"
#~ msgstr "Krijo një dosje të re"

#~ msgid "Create a New File: "
#~ msgstr "Krijoni një Skedar të Ri:"

#~ msgid "New File will be created in: "
#~ msgstr "Skedari i ri do të krijohet në:"

#~ msgid "New File Name: "
#~ msgstr "Emri i ri i skedarit:"

#~ msgid "Create New File"
#~ msgstr "Krijoni Skedar të Ri"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr ""
#~ "Paralajmërim: ju lutemi kini kujdes para se të hiqni ndonjë dosje ose "
#~ "skedar."

#~ msgid "Current Theme Path: "
#~ msgstr "Rruga aktuale e temës:"

#~ msgid "Remove Folder: "
#~ msgstr "Hiq dosjen:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Rruga e Dosjes që dëshironi të hiqni: "

#~ msgid "Remove Folder"
#~ msgstr "Hiq dosjen"

#~ msgid "Remove File: "
#~ msgstr "Hiq skedarin:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Skeda e Rrugës të cilën dëshironi të hiqni: "

#~ msgid "Remove File"
#~ msgstr "Hiq skedarin"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Ju lutemi shkruani adresën e vlefshme të postës elektronike."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr ""
#~ "Paralajmërim: Ju lutemi kini kujdes para se të riemërtoni ndonjë dosje "
#~ "ose skedar."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Skedari / Dosja do të riemërtohet në:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Riemërtoni skedarin / dosjen:"

#~ msgid "Rename File"
#~ msgstr "Riemërtoni Skedarin"

#~ msgid "Follow us"
#~ msgstr "Na ndiq"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Redaktues Temash Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Redaktues Temash Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Redaktuesi i temës Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Redaktuesi i temës Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Redaktuesi i temës Youtube"

#~ msgid "Logo"
#~ msgstr "Logoja"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Shko tek faqja ThemeEditor"

#~ msgid "Theme Editor Links"
#~ msgstr "Lidhjet e Redaktorit të Temave"

#~ msgid "Child Theme"
#~ msgstr "Tema e Fëmijëve"

#~ msgid "Child Theme Permissions"
#~ msgstr "Lejet e Temës së Fëmijëve"

#~ msgid " is not available. Please click "
#~ msgstr " nuk është në dispozicion. Ju lutemi klikoni "

#~ msgid "here"
#~ msgstr "ketu"

#~ msgid "to request language."
#~ msgstr "për të kërkuar gjuhë."

#~ msgid "Click"
#~ msgstr "Klikoni"

#~ msgid "to install "
#~ msgstr "për të instaluar"

#~ msgid " language translation  for Theme Editor."
#~ msgstr " përkthimi i gjuhës për Editor Editor."

#~ msgid "Success: Settings Saved!"
#~ msgstr "Suksesi: Cilësimet u ruajtën!"

#~ msgid "No changes have been made to save."
#~ msgstr "Asnjë ndryshim nuk është bërë për të ruajtur."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Aktivizo Redaktuesin e Temave për Temat"

#~ msgid "Yes"
#~ msgstr "po"

#~ msgid "No"
#~ msgstr "Jo"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Kjo do të Aktivizojë / Çaktivizojë redaktuesin e temës. <br/><strong "
#~ "class=\"defs\">Parazgjedhja: </strong>Po"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Të çaktivizohet Redaktori i Parazgjedhur i Themeit WordPress?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Kjo do të Aktivizojë / Çaktivizojë redaktuesin e temës Default. <br/"
#~ "><strong class=\"defs\">Parazgjedhur: </strong>Po"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Aktivizo Redaktuesin e Shtojcave për Shtojcën"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Kjo do të Aktivizojë / Çaktivizojë redaktuesin e shtojcave. <br/><strong "
#~ "class=\"defs\">Parazgjedhja: </strong>Po"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Të çaktivizohet Redaktori i Parazgjedhur i Shtojcave WordPress?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Kjo do të Aktivizojë / Çaktivizojë Redaktuesin e Shtojcës Default. <br/"
#~ "><strong class=\"defs\">Parazgjedhur: </strong>Po"

#~ msgid "Code Editor"
#~ msgstr "Redaktuesi i kodit"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Ju lejon të zgjidhni temën për redaktuesin e temës. <br/><strong class="
#~ "\"defs\">Default: </strong>Kobalt"

#~ msgid "Edit Themes"
#~ msgstr "Redaktoni Temat"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Kjo temë është aktivizuar aktualisht! </strong> Paralajmërim: "
#~ "Bërja e ndryshimeve në temat aktive nuk rekomandohet."

#~ msgid "Editing"
#~ msgstr "Redaktimi"

#~ msgid "Browsing"
#~ msgstr "Shfletimi"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Azhurnoni skedarin dhe përpiquni të riaktivizoni"

#~ msgid "Download Theme"
#~ msgstr "Shkarko Temen"

#~ msgid "Select theme to edit:"
#~ msgstr "Zgjidhni temën për të redaktuar:"

#~ msgid "Theme Files"
#~ msgstr "Skedarët e temave"

#~ msgid "Choose File"
#~ msgstr "Zgjidhni Skedarin"

#~ msgid "No File Chosen"
#~ msgstr "Asnjë Skedar i Zgjedhur"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr ""
#~ "Paralajmërim: Ju lutemi kini kujdes para se të hiqni ndonjë dosje ose "
#~ "skedar."

#~ msgid "Child Theme Permission"
#~ msgstr "Leja e Temës së Fëmijëve"

#~ msgid "Translations"
#~ msgstr "Përkthime"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr ""
#~ "krijoni, modifikoni, ngarkoni, shkarkoni, fshini Skedarët e Temave dhe "
#~ "dosjet"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Ju nuk keni leje për të krijuar temë të re për fëmijë."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr ""
#~ "Ju nuk keni lejen për të ndryshuar konfigurimin e temës ekzistuese të "
#~ "fëmijës."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Ju nuk keni leje për të kopjuar temën e fëmijës."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "Ju nuk keni leje për të hyrë në menunë e pyetësit / përzgjedhësit."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "Ju nuk keni leje për të hyrë në gërmat e internetit dhe menunë CSS."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Ju nuk keni leje për të kopjuar skedarë."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Ju nuk keni leje për të fshirë skedarët e fëmijëve."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "Ju nuk keni leje për të ngarkuar pamje të re të ekranit."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Ju nuk keni leje për të ngarkuar imazhe të reja."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Ju nuk keni leje për të fshirë imazhe."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Ju nuk keni leje për të shkarkuar skedarin."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Ju nuk keni lejen për të krijuar një direktori të re."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Ju nuk keni leje për të krijuar skedar të ri."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Ju nuk keni leje për të azhurnuar skedarin!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Ju nuk keni leje për të krijuar dosje!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Ju nuk keni leje për të fshirë dosjen!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Ju nuk keni leje për të fshirë skedarin!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Ju nuk keni leje për të ngarkuar skedarin!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Lejet e temës për fëmijë u ruajtën me sukses."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "Nuk ka ndryshime të bëra në lejet e temës së fëmijëve për t'u ruajtur."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Mesazhi i lejes së temës së fëmijës u ruajt me sukses."

#~ msgid "Users"
#~ msgstr "Përdoruesit"

#~ msgid "Create New Child Theme"
#~ msgstr "Krijoni një temë të re për fëmijë"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Konfiguroni temat ekzistuese të fëmijëve"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Dublikoni Temat e Fëmijëve"

#~ msgid "Query/ Selector"
#~ msgstr "Kërkuesi / Përzgjedhësi"

#~ msgid "Web/font"
#~ msgstr "Ueb / shkronjë"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Kopjoni Skedarin Prind Theme tek Fëmija Theme"

#~ msgid "Deleted Child Files"
#~ msgstr "Skedarët e Fshirë të Fëmijëve"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Ngarko Skenarin e Ri"

#~ msgid "Upload New Images"
#~ msgstr "Ngarko imazhe të reja"

#~ msgid "Deleted Images "
#~ msgstr "Imazhe të fshira"

#~ msgid "Download Images"
#~ msgstr "Shkarkoni imazhe"

#~ msgid "Create New Directory"
#~ msgstr "Krijoni Drejtori të Re"

#~ msgid "Create New Files"
#~ msgstr "Krijoni skedarë të rinj"

#~ msgid "Export Theme"
#~ msgstr "Eksporto Temën"

#~ msgid "User Roles"
#~ msgstr "Rolet e përdoruesit"

#~ msgid "Query/ Seletor"
#~ msgstr "Kërkues / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Imazhe të fshira"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Mesazh për Lejen e Temës së Fëmijëve"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Ju nuk keni lejen për të krijuar një temë të re për fëmijë."

#~ msgid "Query/Selector"
#~ msgstr "Kërkuesi / Përzgjedhësi"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "Ju nuk keni leje për të hyrë në menunë e pyetësit / zgjedhësit."

#~ msgid " Web/font"
#~ msgstr "Ueb / shkronjë"

#~ msgid " Export Theme"
#~ msgstr "Eksporto Temën"

#~ msgid "Save Child Theme Message"
#~ msgstr "Mesazh për Lejen e Temës së Fëmijëve"

#~ msgid "Please select atleast one image."
#~ msgstr "Ju lutemi zgjidhni së paku një imazh."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Ju nuk keni leje për të fshirë imazhe."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Ju nuk keni leje për të ngarkuar imazhe të reja."

#~ msgid "You don't have the permission to download."
#~ msgstr "Ju nuk keni leje për të shkarkuar."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Ju nuk keni leje për të krijuar një direktori të re."

#~ msgid "Please choose file type."
#~ msgstr "Ju lutemi zgjidhni llojin e skedarit."

#~ msgid "Please enter file name."
#~ msgstr "Ju lutemi shkruani emrin e skedarit."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Ju nuk keni leje për të krijuar skedar të ri."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr ""
#~ "A jeni i sigurt për të kopjuar skedarët prindër në temën e fëmijëve?"

#~ msgid "Please select file(s)."
#~ msgstr "Ju lutemi zgjidhni skedarin (et)."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Ju nuk keni leje për të kopjuar skedarë."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Jeni i sigurt që dëshironi të fshini skedarët (et) e zgjedhur?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Ju nuk keni lejen për të fshirë skedarët fëmijë."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "Ju nuk keni leje për të ngarkuar pamje të re të ekranit."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Ju nuk keni lejen për të eksportuar temën."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "Ju nuk keni leje për të hyrë në menunë Kërkesë / Përzgjedhësi."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Ju nuk keni leje për të hyrë në menunë e Fonts në Web dhe CSS."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Tema e analizës aktuale:"

#~ msgid "Preview Theme"
#~ msgstr "Tema e pamjes paraprake"

#~ msgid "Parent Themes"
#~ msgstr "Temat e Prindërve"

#~ msgid "Child Themes"
#~ msgstr "Temat e fëmijëve"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Gabim: Cilësimet nuk janë ruajtur!"

#~ msgid "Email List"
#~ msgstr "Lista e emailit"

#~ msgid "Email Address"
#~ msgstr "Adresa e emailit"

#~ msgid "Enter Email"
#~ msgstr "Vendosni Emailin"

#~ msgid "Add More"
#~ msgstr "Shto Më shumë"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Kjo adresë përdoret për qëllime njoftimi, si njoftimi i temës / shtojcës."

#~ msgid "Theme Notification"
#~ msgstr "Njoftimi i temës"

#~ msgid "Notify on file update"
#~ msgstr "Njofto për azhurnimin e skedarit"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Njoftimi për modifikimin ose azhurnimin e skedarit të temës. <br/> "
#~ "<strong> Parazgjedhur: </strong> Po"

#~ msgid "Notify on files download"
#~ msgstr "Njofto për shkarkimin e skedarëve"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Njoftimi për shkarkimin e redaktimit të skedarit temë. <br/> <strong> "
#~ "Parazgjedhur: </strong> Po"

#~ msgid "Notify on theme download"
#~ msgstr "Njofto për shkarkimin e temës"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Njoftimi për shkarkimin e temës. <br/> <strong> Parazgjedhur: </strong> Po"

#~ msgid "Notify on files upload"
#~ msgstr "Njofto për ngarkimin e skedarëve"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Njoftimi për skedarët e ngarkuar në temë. <br/> <strong> Parazgjedhur: </"
#~ "strong> Po"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Njofto për krijimin e skedarit / dosjes së re"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Njoftimi për krijimin e një skedari / dosjeje të re në temë. <br/> "
#~ "<strong> Parazgjedhur: </strong> Po"

#~ msgid "Notify on delete"
#~ msgstr "Njofto mbi fshirjen"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Njofto për fshirjen e ndonjë skedari dhe dosjeje në tema. <br/> <strong> "
#~ "Parazgjedhja: </strong> Po"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Njofto për krijimin e temës Fëmija i Ri"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Njoftoni në Krijoni tema të reja për fëmijë. <br/> <strong> Parazgjedhja: "
#~ "</strong> Po"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Njofto për konfigurimin e temave të Fëmijëve Ekzistues"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Njofto për konfigurimin e temave të Fëmijëve Ekzistues. <br/> <strong> "
#~ "Parazgjedhja: </strong> Po"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Njoftoj në Duplicate temat e fëmijëve"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Njofto për konfigurimin e temave ekzistuese të fëmijëve. <br/> <strong> "
#~ "Parazgjedhja: </strong> Po"

#~ msgid "Plugin Notification"
#~ msgstr "Njoftimi i shtojcës"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Njoftimi për modifikimin ose azhurnimin e skedarit të temës. <br/> "
#~ "<strong> Parazgjedhur: </strong> po"

#~ msgid "Notify on Plugin download"
#~ msgstr "Njofto për shkarkimin e Shtojcës"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Njoftimi për shkarkimin e Shtojcës. <br/> <strong> Parazgjedhur: </"
#~ "strong> Po"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Njoftimi për ngarkimin e skedarit në temë. <br/> <strong> Parazgjedhur: </"
#~ "strong> Po"

#~ msgid "Permission saved successfully."
#~ msgstr "Leja u ruajt me sukses."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr "Oops! Leja nuk mund të ruhet sepse nuk keni bërë asnjë ndryshim."

#~ msgid "Allowed User Roles"
#~ msgstr "Rolet e lejuara të përdoruesit"

#~ msgid "Update theme files"
#~ msgstr "Azhurnoni skedarët e temave"

#~ msgid "Create new theme files and folders"
#~ msgstr "Krijoni skedarë dhe dosje të reja me tema"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Ngarko skedarë dhe dosje të reja të temave"

#~ msgid "Download theme files"
#~ msgstr "Shkarkoni skedarët e temave"

#~ msgid "Download theme"
#~ msgstr "Shkarko temë"

#~ msgid "Update plugin files"
#~ msgstr "Azhurnoni skedarët e shtojcave"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Krijoni skedarë dhe dosje të reja shtojcash"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Ngarko skedarë dhe dosje të reja shtojcash"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Fshini skedarët dhe dosjet e shtojcave"

#~ msgid "Download plugin files"
#~ msgstr "Shkarkoni skedarë shtojcash"

#~ msgid "Download plugin"
#~ msgstr "Shkarkoni shtojcën"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Editor Editor PRO - Ju lutemi shtoni detajet e porosisë tuaj më poshtë. "
#~ "Nese jo <a href=\"https://themeeditor.pro/product/theme-editor/\" target="
#~ "\"_blank\" class=\"page-title-action button button-primary\" title="
#~ "\"click to buy Licence Key\">Bleni Tani </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "ID e RENDIT (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Futni ID-në e Rendit"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Ju lutemi kontrolloni emailin tuaj për ID të porosisë."

#~ msgid "LICENCE KEY *"
#~ msgstr "ÇELEYSI I LICENCS *"

#~ msgid "Enter License Key"
#~ msgstr "Fut çelësin e licencës"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Ju lutemi kontrolloni postën elektronike për çelësin e licencës."

#~ msgid "Click To Verify"
#~ msgstr "Klikoni për të verifikuar"

#~ msgid "URL/None"
#~ msgstr "URL / Asnjë"

#~ msgid "Origin"
#~ msgstr "Origjina"

#~ msgid "Color 1"
#~ msgstr "Ngjyra 1"

#~ msgid "Color 2"
#~ msgstr "Ngjyra 2"

#~ msgid "Width/None"
#~ msgstr "Gjerësia / Asnjë"

#~ msgid "Style"
#~ msgstr "Stili"

#~ msgid "Color"
#~ msgstr "Ngjyrë"

#~ msgid "Configure Child Theme"
#~ msgstr "Konfiguro temën e fëmijës"

#~ msgid "Duplicate Child theme"
#~ msgstr "Dublikoni Temat e Fëmijëve"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Pas analizimit, kjo temë po funksionon mirë. Ju mund ta përdorni këtë si "
#~ "temën tuaj të fëmijës."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr ""
#~ "Pas analizimit, kjo temë për fëmijë duket se po funksionon si duhet."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Kjo temë ngarkon fletë stilesh shtesë pas skedarit <code> style.css </"
#~ "code>:"

#~ msgid "The theme"
#~ msgstr "Emri i temës"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr "nuk mund të analizohej sepse pamja paraprake nuk u dha si duhet"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Kjo temë për fëmijë nuk është konfiguruar për këtë shtojcë"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Konfiguruesi bën modifikime të rëndësishme në temën e fëmijës, duke "
#~ "përfshirë ndryshimet e fletëve të stileve dhe funksione shtesë të php. Ju "
#~ "lutemi merrni parasysh përdorimin e opsionit DUPLICATE temë për fëmijë "
#~ "(shih hapin 1, më lart) dhe mbajtjen e origjinalit si një kopje rezervë."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "Të gjitha informacionet në internet / css u ruajtën me sukses."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Ju lutemi shkruani vlerën për webfonts / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Ju nuk keni leje për të azhurnuar webfonts / css."

#~ msgid "All information saved successfully."
#~ msgstr "Të gjitha informacionet u ruajtën me sukses."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Jeni i sigurt që dëshironi të RISHIKONI? Kjo do të shkatërrojë çdo punë "
#~ "që keni bërë në Konfiguruesin."

#~ msgid "Selectors"
#~ msgstr "Përzgjedhësit"

#~ msgid "Edit Selector"
#~ msgstr "Ndrysho zgjedhësin"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "Stilet e stileve nuk mund të shfaqen."

#~ msgid "(Child Only)"
#~ msgstr "(Vetëm për fëmijë)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Ju lutemi shkruani një Temë të vlefshme për Fëmijën."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Ju lutemi shkruani një emër të vlefshëm të Temës së Fëmijëve."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr ""
#~ "<strong>%s</strong> ekziston Ju lutemi shkruani një temë tjetër për fëmijë"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "Faqja nuk mund të ngarkohej si duhet."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Bibliotekat jQuery konfliktuale ose të vjetruara u ngarkuan nga një "
#~ "shtesë tjetër:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr ""
#~ "Çaktivizimi ose zëvendësimi i shtojcave mund ta zgjidhë këtë çështje."

#~ msgid "No result found for the selection."
#~ msgstr "Nuk u gjet asnjë rezultat për zgjedhjen."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sPse po e shoh këtë?%s"

#~ msgid "Parent / Child"
#~ msgstr "Prindi / Fëmija"

#~ msgid "Select an action:"
#~ msgstr "Zgjidhni një veprim:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Krijoni një Temë të re për Fëmijën"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Konfiguroni një Temë ekzistuese të Fëmijëve"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Dublikoni një Temë ekzistuese të Fëmijëve"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Zgjidhni një temë prindërore:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Analizoni Temën e Prindit"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Klikoni \"Analizo\" për të përcaktuar varësitë e fletëve të stileve dhe "
#~ "çështje të tjera të mundshme."

#~ msgid "Analyze"
#~ msgstr "Analizoni"

#~ msgid "Select a Child Theme:"
#~ msgstr "Zgjidhni një temë për fëmijë:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Analizoni temën e fëmijës"

#~ msgid "Name the new theme directory:"
#~ msgstr "Emërtoni direktorinë e temës së re:"

#~ msgid "Directory Name"
#~ msgstr "Emri i Drejtorisë"

#~ msgid "NOTE:"
#~ msgstr "SHËNIM:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Ky NUK është emri i Temës së Fëmijës. Ju mund ta personalizoni emrin, "
#~ "përshkrimin, etj. Në hapin 7, më poshtë."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Verifikoni drejtorinë e temës së fëmijëve:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Vetëm për verifikim (nuk mund të modifikoni drejtorinë e një teme "
#~ "ekzistuese për fëmijë)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Zgjidhni ku të ruani stilet e reja:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Fleta kryesore e stilit (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Ruani stilet e reja të personalizuara drejtpërdrejt në fletën kryesore të "
#~ "stileve të Fëmijëve, duke zëvendësuar vlerat ekzistuese. Fleta kryesore e "
#~ "stileve do të ngarkohet sipas renditjes së caktuar nga tema."

#~ msgid "Separate Stylesheet"
#~ msgstr "Fletë stilesh të ndara"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Ruani stilet e reja të personalizuara në një fletë stilesh të veçanta dhe "
#~ "kombinoni të gjitha stilet ekzistuese të temave për fëmijë me prindin për "
#~ "të formuar bazën fillestare. Zgjidhni këtë opsion nëse doni të ruani "
#~ "stilet ekzistuese të temës së fëmijëve në vend që t'i mbishkruani ato. Ky "
#~ "opsion ju lejon gjithashtu të personalizoni fletët e stileve që ngarkohen "
#~ "pas fletës kryesore të stileve."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Zgjidhni trajtimin e fletëve të stileve të temës prindërore:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Përdorni radhën e stilit WordPress."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "Lëreni Konfiguruesin të përcaktojë veprimet dhe varësitë e duhura dhe "
#~ "azhurnoni automatikisht skedarin e funksioneve."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr ""
#~ "Përdorni <code> @import </code> në fletën e stileve të temës për fëmijë."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Përdorni këtë mundësi vetëm nëse stili i prindit nuk mund të ngarkohet "
#~ "duke përdorur radhën e stilit WordPress. Përdorimi i <code> @import </"
#~ "code> nuk rekomandohet."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Mos shtoni asnjë trajtim të fletëve të stileve prindërore."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Zgjidhni këtë opsion nëse kjo temë trajton tashmë fletën e stileve të "
#~ "temës prindërore ose nëse skedari <code> style.css </code> i temës mëmë "
#~ "nuk përdoret për paraqitjen e saj."

#~ msgid "Advanced handling options"
#~ msgstr "Opsione të përparuara të trajtimit"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Injoroni fletët e stileve të temës prindërore."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Zgjidhni këtë opsion nëse kjo temë tashmë trajton fletën e stileve të "
#~ "temës prindërore ose nëse skedari style.css i temës prindërore nuk "
#~ "përdoret për paraqitjen e saj."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Riparoni modelin e titullit në temën fëmijë."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Lëreni Konfiguruesin (të përpiqet të) zgjidhë çështjet e fletëve të "
#~ "stileve të renditura më sipër. Kjo mund të rregullojë shumë, por jo të "
#~ "gjitha, problemet e zakonshme."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Hiqni varësitë e fletëve të stileve"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Si parazgjedhje, rendi i fletëve të stileve që ngarkohen para fletës "
#~ "kryesore të stileve ruhet duke i trajtuar ato si varësi. Në disa raste, "
#~ "fletët e stileve zbulohen në pamje paraprake që nuk përdoren në të gjithë "
#~ "sitin. Nëse është e nevojshme, varësia mund të hiqet për fletët e stileve "
#~ "specifike më poshtë."

#~ msgid "Child Theme Name"
#~ msgstr "Emri i temës së fëmijës"

#~ msgid "Theme Name"
#~ msgstr "Emri i temës"

#~ msgid "Theme Website"
#~ msgstr "Uebfaqja e temës"

#~ msgid "Author"
#~ msgstr "Autor"

#~ msgid "Author Website"
#~ msgstr "Uebfaqja e autorit"

#~ msgid "Theme Description"
#~ msgstr "Përshkrimi i temës"

#~ msgid "Description"
#~ msgstr "Përshkrim"

#~ msgid "Tags"
#~ msgstr "Etiketat"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Kopjoni Menutë, Veglat dhe Cilësimet e tjera të Përshtatësit nga Tema e "
#~ "Prindit tek Tema e Fëmijëve:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Ky opsion zëvendëson Menutë ekzistuese të Temës së Fëmijëve, Veglat dhe "
#~ "Cilësimet e tjera të Përshtatësit me ato nga Tema e Prindit. Këtë opsion "
#~ "duhet ta përdorni vetëm herën e parë që konfiguroni një Temë për Fëmijët."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Klikoni për të ekzekutuar Konfiguruesin:"

#~ msgid "Query / Selector"
#~ msgstr "Kërkuesi / Përzgjedhësi"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "Për të gjetur përzgjedhës specifik brenda blloqeve të pyetjes @media, së "
#~ "pari zgjidhni pyetjen, pastaj zgjedhësin. Përdorni pyetjen \"bazë\" për "
#~ "të redaktuar të gjithë përzgjedhësit e tjerë."

#~ msgid "@media Query"
#~ msgstr "@ Pyetja mediatike"

#~ msgid "( or \"base\" )"
#~ msgstr "(ose \"baza\")"

#~ msgid "Selector"
#~ msgstr "Përzgjedhësi"

#~ msgid "Query/Selector Action"
#~ msgstr "Veprimi i pyetësit / përzgjedhësit"

#~ msgid "Save Child Values"
#~ msgstr "Ruaj vlerat e fëmijëve"

#~ msgid "Delete Child Values"
#~ msgstr "Fshi vlerat e fëmijëve"

#~ msgid "Property"
#~ msgstr "Prona"

#~ msgid "Baseline Value"
#~ msgstr "Vlera bazë"

#~ msgid "Child Value"
#~ msgstr "Vlera e Fëmijës"

#~ msgid "error"
#~ msgstr "gabim"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "Ju nuk keni leje për të konfiguruar temat e fëmijëve."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr ""
#~ "%s nuk ekziston. Ju lutemi zgjidhni një Temë të vlefshme Prindërore."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Skedari Funksionet kërkohet dhe nuk mund të fshihet."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Ju lutemi zgjidhni një Temë të vlefshme Prindërore."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Ju lutemi zgjidhni një Temë të vlefshme për Fëmijën."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Ju lutemi shkruani një emër të vlefshëm të drejtorisë së Fëmijëve."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> ekziston Ju lutemi shkruani një emër tjetër modeli të "
#~ "Temës së Fëmijëve."

#~ msgid "Your theme directories are not writable."
#~ msgstr "Drejtoritë tuaja të temave nuk mund të shkruhen."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Nuk mund të azhurnohet tema e fëmijës"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "Stili juaj nuk mund të shkruhet."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "Një etiketë mbyllëse PHP u zbulua në skedarin e funksioneve të temës "
#~ "Child kështu që opsioni \"Trajtimi i fletëve të stilit prindëror\" nuk "
#~ "ishte konfiguruar. Mbyllja e PHP në fund të skedarit dekurajohet pasi "
#~ "mund të shkaktojë header të parakohshëm HTTP. Ju lutemi ndryshoni <code> "
#~ "Funksionet.php </code> për të hequr etiketën përfundimtare <code>?&gt;</"
#~ "code> dhe klikoni përsëri \"Gjeneroni / Rindërtoni Skedarët e Temave të "
#~ "Fëmijëve\" përsëri."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Skedari nuk mund të kopjohet: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Skedari %s nuk mund të fshihet."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "nuk mund të kopjonte %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "dir e pavlefshme: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Kishte gabime gjatë rivendosjes së lejeve."

#~ msgid "Could not upload file."
#~ msgstr "Skedari nuk mund të ngarkohej."

#~ msgid "Invalid theme root directory."
#~ msgstr "Drejtoria rrënjësore e temës së pavlefshme."

#~ msgid "No writable temp directory."
#~ msgstr "Asnjë direktori e shkruajtshme temp."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Shkyçja dështoi -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Pakoja dështoi -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Numri maksimal i stileve është tejkaluar."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Gabim në lëvizjen e skedarit: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Nuk mund të vendosen lejet e shkrimit."

#~ msgid "Error:"
#~ msgstr "Gabim:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr ""
#~ "Analiza aktuale Tema e fëmijëve <strong>%s</strong> është rivendosur."

#~ msgid "Update Key saved successfully."
#~ msgstr "Çelësi i azhurnimit u ruajt me sukses."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Skedarët e Temës së Fëmijëve u modifikuan me sukses."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Tema e fëmijëve <strong>%s</strong> është gjeneruar me sukses."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Fonte uebi dhe CSS"

#~ msgid "Parent Styles"
#~ msgstr "Stilet e prindërve"

#~ msgid "Child Styles"
#~ msgstr "Stilet e fëmijëve"

#~ msgid "View Child Images"
#~ msgstr "Shikoni imazhet e fëmijëve"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Përdorni <code> @import url ([shtegu]); </code> për të lidhur fletët "
#~ "shtesë të stileve. Kjo Shtojcë përdor fjalën kyçe <code> @import </code> "
#~ "për t'i identifikuar dhe kthyer ato në etiketat <code>&lt;link&gt;</"
#~ "code>. <strong> Shembull: </strong>"

#~ msgid "Save"
#~ msgstr "Ruaj"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr ""
#~ "Ngarkimi i imazhit me të njëjtin emër do të zëvendësohet me imazhin "
#~ "ekzistues."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Ngarko imazhin e ri të temës së fëmijës"

#~ msgid "Delete Selected Images"
#~ msgstr "Fshi imazhet e zgjedhura"

#~ msgid "Create a New Directory"
#~ msgstr "Krijoni një Drejtori të Re"

#~ msgid "New Directory will be created in"
#~ msgstr "Drejtoria e Re do të krijohet në"

#~ msgid "New Directory Name"
#~ msgstr "Emri i Re i Drejtorisë"

#~ msgid "Create a New File"
#~ msgstr "Krijoni një Skedar të Ri"

#~ msgid "New File will be created in"
#~ msgstr "Skedari i ri do të krijohet në"

#~ msgid "New File Name"
#~ msgstr "Emri i ri i skedarit"

#~ msgid "File Type Extension"
#~ msgstr "Zgjerimi i Llojit të Skedarit"

#~ msgid "Choose File Type"
#~ msgstr "Zgjidhni Llojin e Skedarit"

#~ msgid "PHP File"
#~ msgstr "Skedari PHP"

#~ msgid "CSS File"
#~ msgstr "Skedari CSS"

#~ msgid "JS File"
#~ msgstr "Dosja JS"

#~ msgid "Text File"
#~ msgstr "Skedari i tekstit"

#~ msgid "PHP File Type"
#~ msgstr "Lloji i skedarit PHP"

#~ msgid "Simple PHP File"
#~ msgstr "Skedar i thjeshtë PHP"

#~ msgid "Wordpress Template File"
#~ msgstr "Skedari i Modelit Wordpress"

#~ msgid "Template Name"
#~ msgstr "Emri i shabllonit"

#~ msgid "Parent Templates"
#~ msgstr "Modelet e prindërve"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Kopjoni modelet PHP nga tema mëmë duke i zgjedhur këtu. Konfiguruesi "
#~ "përcakton një model si një skedar PHP i Temës që nuk ka funksione ose "
#~ "klasa PHP. Skedarët e tjerë PHP nuk mund të mbivlerësohen në mënyrë të "
#~ "sigurt nga një temë për fëmijë."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "KUJDES: Nëse tema e fëmijës suaj është aktive, versioni i temës fëmijë të "
#~ "skedarit do të përdoret në vend të prindit menjëherë pasi të kopjohet."

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "skedari gjenerohet veçmas dhe nuk mund të kopjohet këtu."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Kopjimi i zgjedhur në temën e fëmijës"

#~ msgid " Child Theme Files "
#~ msgstr "Skedarët e temave për fëmijë"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Klikoni për të redaktuar skedarët duke përdorur Editor Editor"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Fshini modelet e temave për fëmijë duke i zgjedhur këtu."

#~ msgid "Delete Selected"
#~ msgstr "Fshij të zgjedhur"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Foto nga tema e fëmijëve"

#~ msgid "Upload New Screenshot"
#~ msgstr "Ngarko pamjen e re të ekranit"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Pamja e ekranit të temës duhet të jetë një raport 4: 3 (p.sh., 880px x "
#~ "660px) JPG, PNG ose GIF. Do të riemërtohet"

#~ msgid "Screenshot"
#~ msgstr "Pamja e ekranit"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Ngarko imazhin e ri të temës së fëmijës"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "Imazhet e temave gjenden nën drejtorinë e imazheve në temën e fëmijës "
#~ "tuaj dhe janë të destinuara vetëm për përdorimin e fletëve të stileve. "
#~ "Përdorni Bibliotekën e Mediave për imazhe me përmbajtje."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Shikoni temën aktuale të fëmijës (analiza aktuale)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Shikoni temën aktuale të fëmijës"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Eksporto temën e fëmijës si arkiv zip"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Klikoni \"Eksporto Zip\" për të ruajtur një kopje rezervë të temës së "
#~ "ngarkuar aktualisht të fëmijëve. Mund të eksportoni ndonjë nga temat "
#~ "tuaja nga skeda Prind / Fëmijë."

#~ msgid "Export Child Theme"
#~ msgstr "Eksporto temën e fëmijës"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Skedarët (temat) e Fëmijëve u kopjuan me sukses!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr ""
#~ "Skedari që jeni duke u munduar të kopjoni nga Modelet Prindërore nuk "
#~ "ekziston"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Skedari të cilin po përpiqeni të kopjoni nga Modelet e Prindërve është "
#~ "tashmë i pranishëm në skedarët e Temës së Fëmijëve."

#~ msgid "Child "
#~ msgstr "Fëmijë"

#~ msgid " and Parent "
#~ msgstr "dhe Prindi"

#~ msgid " directories doesn't exist!"
#~ msgstr "drejtoritë nuk ekzistojnë!"

#~ msgid " directory doesn't exist!"
#~ msgstr "direktoria nuk ekziston!"

#~ msgid "Parent "
#~ msgstr "Prindi"

#~ msgid "Unknown error! "
#~ msgstr "Gabim i panjohur!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Ju nuk keni leje për të kopjuar skedarët!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Të gjitha skedarët (et) e zgjedhur janë fshirë me sukses!"

#~ msgid " does not exists!"
#~ msgstr "nuk ekziston!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Kjo shtesë e skedarit nuk lejohet të ngarkohet!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Imazhi u ngarkua me sukses!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Ka ndonjë problem në ngarkimin e imazhit!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Kjo shtesë skedari nuk lejohet të ngarkohet si pamje nga ekrani nga "
#~ "wordpress!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Skedari u ngarkua me sukses!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Skedarët e Temës së Fëmijëve nuk mund të modifikohen."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Skedari (et) u fshinë me sukses!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Ju nuk keni leje për të fshirë skedarët!"

#~ msgid "Entered directory name already exists"
#~ msgstr "Emri i regjistrit të futur ekziston tashmë"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Ju nuk keni leje për të krijuar direktori!"

#~ msgid "Wordpress template file created"
#~ msgstr "Skedari i shabllonit Wordpress u krijua"

#~ msgid "Wordpress template file not created"
#~ msgstr "Skedari i shabllonit Wordpress nuk u krijua"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP krijoi skedarin me sukses"

#~ msgid "PHP file not created"
#~ msgstr "Skedari PHP nuk u krijua"

#~ msgid " file not created"
#~ msgstr "skedari nuk u krijua"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Ju nuk keni leje për të krijuar skedar!"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Dosja e gjuhës është dobësuar."

#~ msgid "Add single or multiple languages."
#~ msgstr "Shtoni gjuhë të vetme ose të shumëfishta."

#~ msgid "Add single language file"
#~ msgstr "Shto skedar me një gjuhë"

#~ msgid "Please click on language button."
#~ msgstr "Ju lutemi klikoni në butonin e gjuhës."

#~ msgid "Add all languages zip folder"
#~ msgstr "Shtoni të gjitha gjuhët dosje zip"

#~ msgid "Zip Download"
#~ msgstr "Shkarkim Zip"
languages/wp-file-manager-hi_IN.po000064400000112207147361034410013017 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 10:18+0530\n"
"PO-Revision-Date: 2022-02-28 10:24+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: hi_IN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "थीम बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।"

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "विषयों को पुनर्स्थापित करने में असमर्थ।"

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "अपलोड बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।"

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "अपलोड को पुनर्स्थापित करने में असमर्थ।"

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "अन्य बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।"

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "दूसरों को पुनर्स्थापित करने में असमर्थ।"

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "प्लगइन्स बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।"

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "प्लगइन्स को पुनर्स्थापित करने में असमर्थ।"

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "डेटाबेस बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।"

#: file_folder_manager.php:286 file_folder_manager.php:297 file_folder_manager.php:588
#: file_folder_manager.php:592
msgid "All Done"
msgstr "सब कुछ कर दिया"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "डीबी बैकअप बहाल करने में असमर्थ।"

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "बैकअप सफलतापूर्वक निकाले गए!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "बैकअप निकालने में असमर्थ!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "डेटाबेस बैकअप दिनांक को किया गया "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "प्लगइन्स बैकअप दिनांक को किया गया "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "थीम बैकअप दिनांक को किया गया "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "अपलोड बैकअप दिनांक को किया गया "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "अन्य बैकअप दिनांक को किया गया "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "लॉग्स"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "कोई लॉग नहीं मिला!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "बैकअप के लिए कुछ भी नहीं चुना गया"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "सुरक्षा का मसला।"

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "डेटाबेस बैकअप किया गया।"

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "डेटाबेस बैकअप बनाने में असमर्थ।"

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "प्लगइन्स बैकअप हो गया।"

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "प्लगइन्स बैकअप विफल।"

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "थीम बैकअप किया गया।"

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "थीम बैकअप विफल।"

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "अपलोड बैकअप हो गया।"

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "अपलोड बैकअप विफल रहा।"

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "अन्य बैकअप किया गया।"

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "अन्य बैकअप विफल।"

#: file_folder_manager.php:761 file_folder_manager.php:762 lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP फ़ाइल प्रबंधक"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "सेटिंग्स"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "पसंद"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "प्रणाली के गुण"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "शोर्टकोड - प्रो"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "बैकअप बहाल"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "PRO खरीदे"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "दान"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-error-settings_updated"
"\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-settings_updated"
"\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "फ़ाइल डाउनलोड करने के लिए मौजूद नहीं है।"

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "अवैध सुरक्षा कोड।"

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "बैकअप आईडी मौजूद नहीं है."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "पैरामीटर प्रकार मौजूद नहीं है."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "आवश्यक पैरामीटर गुम हैं।"

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. Please try to "
"increase Maximum allowed size  from Preferences settings."
msgstr ""
"त्रुटि: बैकअप को पुनर्स्थापित करने में असमर्थ क्योंकि डेटाबेस बैकअप आकार में भारी है। कृपया वरीयताएँ सेटिंग से अधिकतम "
"अनुमत आकार बढ़ाने का प्रयास करें।"

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "हटाने के लिए बैकअप चुनें!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "क्या आप वाकई चयनित बैकअप हटाना चाहते हैं?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "बैकअप चल रहा है, कृपया प्रतीक्षा करें"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "पुनर्स्थापना चल रही है, कृपया प्रतीक्षा करें"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "बैकअप के लिए कुछ भी नहीं चुना गया।"

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP फ़ाइल प्रबंधक - बैकअप / पुनर्स्थापना"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "बैकअप विकल्प:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "डेटाबेस बैकअप"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "फ़ाइलें बैकअप"

#: inc/backup.php:68
msgid "Plugins"
msgstr "प्लग-इन"

#: inc/backup.php:71
msgid "Themes"
msgstr "थीमे"

#: inc/backup.php:74
msgid "Uploads"
msgstr "उपलोड्स"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "अन्य (wp-content के अंदर पाई जाने वाली कोई अन्य निर्देशिका)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "अब समर्थन देना"

#: inc/backup.php:89
msgid "Time now"
msgstr "अब समय"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "सफलता"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "बैकअप सफलतापूर्वक हटा दिया गया।"

#: inc/backup.php:102
msgid "Ok"
msgstr "ठीक है"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "फाइलों को नष्ट"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "क्या आप वाकई इस बैकअप को हटाना चाहते हैं?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "रद्द करना"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "पुष्टि करें"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "फ़ाइलें पुनर्स्थापित करें"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "क्या आप वाकई इस बैकअप को पुनर्स्थापित करना चाहते हैं?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "अंतिम लॉग संदेश"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "बैकअप स्पष्ट रूप से सफल हुआ और अब पूरा हो गया है।"

#: inc/backup.php:171
msgid "No log message"
msgstr "कोई लॉग संदेश नहीं"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "मौजूदा बैकअप"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "बैकअप तिथि"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "बैकअप डेटा (डाउनलोड करने के लिए क्लिक करें)"

#: inc/backup.php:190
msgid "Action"
msgstr "कार्य"

#: inc/backup.php:210
msgid "Today"
msgstr "आज"

#: inc/backup.php:239
msgid "Restore"
msgstr "पुनर्स्थापित"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "हटाएं"

#: inc/backup.php:241
msgid "View Log"
msgstr "लॉग देखें"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "वर्तमान में कोई बैकअप नहीं मिला।"

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "चयनित बैकअप पर कार्रवाई"

#: inc/backup.php:251
msgid "Select All"
msgstr "सभी का चयन करे"

#: inc/backup.php:252
msgid "Deselect"
msgstr "अचयनित"

#: inc/backup.php:254
msgid "Note:"
msgstr "नोट:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "बैकअप फ़ाइलें अंतर्गत होंगी"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP फ़ाइल प्रबंधक योगदान"

#: inc/logs.php:7
msgid "Note: These are demo screenshots. Please buy File Manager pro to Logs functions."
msgstr "नोट: ये डेमो स्क्रीनशॉट हैं। कृपया लॉग्स फ़ंक्शन के लिए फ़ाइल प्रबंधक प्रो खरीदें।"

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "प्रो खरीदने के लिए क्लिक करें"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27 inc/system_properties.php:5
#: lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "PRO खरीदे"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "फ़ाइलें लॉग संपादित करें"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "फ़ाइलें लॉग डाउनलोड करें"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "फ़ाइलें लॉग अपलोड करें"

#: inc/root.php:43
msgid "Settings saved."
msgstr "सेटिंग्स को सहेजा गया।"

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "इस नोटिस को खारिज करें।"

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "आपने सहेजे जाने के लिए कोई परिवर्तन नहीं किया है।"

#: inc/root.php:55
msgid "Public Root Path"
msgstr "सार्वजनिक रूट पाथ"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "फ़ाइल प्रबंधक रूट पाथ, आप अपनी पसंद के अनुसार बदल सकते हैं।"

#: inc/root.php:59
msgid "Default:"
msgstr "डिफ़ॉल्ट:"

#: inc/root.php:60
msgid "Please change this carefully, wrong path can lead file manager plugin to go down."
msgstr "कृपया इसे सावधानी से बदलें, गलत पाथ फ़ाइल प्रबंधक प्लगइन को नीचे जाने के लिए प्रेरित कर सकता है।"

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "ट्रैश सक्षम करें?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "ट्रैश को इनेबल करने के बाद आपकी फाइल्स ट्रैश फोल्डर में चली जाएंगी।"

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "मीडिया लाइब्रेरी में फ़ाइलें अपलोड सक्षम करें?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "इसे सक्षम करने के बाद सभी फाइलें मीडिया लाइब्रेरी में चली जाएंगी।"

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "डेटाबेस बैकअप पुनर्स्थापना के समय अधिकतम अनुमत आकार।"

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of backup restore."
msgstr "यदि आपको बैकअप पुनर्स्थापना के समय त्रुटि संदेश मिल रहा है, तो कृपया फ़ील्ड मान बढ़ाएँ।"

#: inc/root.php:90
msgid "Save Changes"
msgstr "परिवर्तनों को सुरक्षित करें"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "सेटिंग - सामान्य"

#: inc/settings.php:11 inc/settings.php:26
msgid "Note: This is just a demo screenshot. To get settings please buy our pro version."
msgstr "नोट: यह सिर्फ एक डेमो स्क्रीनशॉट है। सेटिंग्स प्राप्त करने के लिए कृपया हमारा प्रो संस्करण खरीदें।"

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set Default Access "
"Folder and also control upload size of filemanager."
msgstr ""
"यहां व्यवस्थापक फ़ाइल प्रबंधक का उपयोग करने के लिए उपयोगकर्ता भूमिकाओं तक पहुंच प्रदान कर सकता है। व्यवस्थापक "
"डिफ़ॉल्ट एक्सेस फ़ोल्डर सेट कर सकता है और फ़ाइल प्रबंधक के अपलोड आकार को भी नियंत्रित कर सकता है।"

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "सेटिंग्स - कोड-संपादक"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any theme for code editor. "
"It will display when you edit any file. Also you can allow fullscreen mode of code editor."
msgstr ""
"फ़ाइल प्रबंधक में कई विषयों के साथ एक कोड संपादक होता है। आप कोड संपादक के लिए किसी भी विषय का चयन कर सकते "
"हैं। जब आप किसी फ़ाइल को संपादित करते हैं तो यह प्रदर्शित होगा। इसके अलावा आप कोड संपादक के फुलस्क्रीन मोड की "
"अनुमति दे सकते हैं।"

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "कोड-संपादक दृश्य"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "सेटिंग्स - उपयोगकर्ता प्रतिबंध"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can set different - "
"different folders paths for different users."
msgstr ""
"व्यवस्थापक किसी भी उपयोगकर्ता के कार्यों को प्रतिबंधित कर सकता है। फ़ाइलों और फ़ोल्डरों को भी छुपाएं और अलग-अलग "
"उपयोगकर्ताओं के लिए अलग-अलग फ़ोल्डर पथ सेट कर सकते हैं।"

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "सेटिंग्स - उपयोगकर्ता भूमिका प्रतिबंध"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and can set different - "
"different folders paths for different users roles."
msgstr ""
"व्यवस्थापक किसी भी उपयोगकर्ता भूमिका की कार्रवाइयों को प्रतिबंधित कर सकता है। फ़ाइलों और फ़ोल्डरों को भी छुपाएं "
"और अलग-अलग उपयोगकर्ता भूमिकाओं के लिए अलग-अलग फ़ोल्डर पथ सेट कर सकते हैं।"

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "फ़ाइल प्रबंधक - शोर्टकोड"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17 inc/shortcode_docs.php:19
msgid "USE:"
msgstr "प्रयोग करें:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from file manager "
"settings. It will work same as backend WP File Manager."
msgstr ""
"यह फ्रंट एंड पर फाइल मैनेजर दिखाएगा। आप फ़ाइल प्रबंधक सेटिंग्स से सभी सेटिंग्स को नियंत्रित कर सकते हैं। यह बैकएंड WP "
"फाइल मैनेजर की तरह ही काम करेगा।"

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it and will control "
"from file manager settings."
msgstr ""
"यह फ्रंट एंड पर फाइल मैनेजर दिखाएगा। लेकिन केवल व्यवस्थापक ही इसे एक्सेस कर सकता है और फ़ाइल प्रबंधक सेटिंग्स से "
"नियंत्रित करेगा।"

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "पैरामीटर:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can simple use for "
"particular user roles as like allowed_roles=\"editor,author\" (seprated by comma(,))"
msgstr ""
"यह सभी भूमिकाओं को फ्रंट एंड पर फ़ाइल प्रबंधक तक पहुंचने की अनुमति देगा या आप विशेष उपयोगकर्ता भूमिकाओं के लिए "
"सरल उपयोग कर सकते हैं जैसे allow_roles=\"editor,author\" (अल्पविराम (,) द्वारा अलग)"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or you can give path "
"for sub folders as like \"wp-content/plugins\". If leave blank or empty it will access all "
"folders on root directory. Default: Root directory"
msgstr ""
"यहां \"परीक्षण\" फ़ोल्डर का नाम है जो रूट निर्देशिका पर स्थित है, या आप \"wp-content/plugins\" जैसे उप "
"फ़ोल्डरों के लिए पथ दे सकते हैं। यदि खाली या खाली छोड़ दें तो यह रूट निर्देशिका पर सभी फ़ोल्डरों तक पहुंच जाएगा। "
"डिफ़ॉल्ट: रूट निर्देशिका"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "फ़ाइल अनुमतियाँ लिखने तक पहुँच के लिए, ध्यान दें: सही/गलत, डिफ़ॉल्ट: असत्य"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "फ़ाइलों को पढ़ने की अनुमति तक पहुंच के लिए, ध्यान दें: सत्य/गलत, डिफ़ॉल्ट: सत्य"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "यह यहां उल्लिखित छुपाएगा। नोट: अल्पविराम (,) से अलग। डिफ़ॉल्ट: शून्य"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js\" etc. Default: Null"
msgstr ""
"यह कॉमा में उल्लिखित लॉक हो जाएगा। आप \".php,.css,.js\" आदि की तरह अधिक लॉक कर सकते हैं। डिफ़ॉल्ट: नल"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation name as like, "
"allowed_operations=\"upload,download\". Note: seprated by comma(,). Default: *"
msgstr ""
"* सभी ऑपरेशनों के लिए और कुछ ऑपरेशन की अनुमति देने के लिए आप ऑपरेशन नाम का उल्लेख कर सकते हैं जैसे, "
"allow_operations=\"upload,download\"। नोट: अल्पविराम (,) से अलग। चूक जाना: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "फ़ाइल संचालन सूची:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "डायरेक्टरी या फोल्डर बनाएं"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "फ़ाइल बनाओ"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "फ़ाइल या फ़ोल्डर का नाम बदलें"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "किसी फ़ोल्डर या फ़ाइल को डुप्लिकेट या क्लोन करें"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "फ़ाइल या फ़ोल्डर पेस्ट करें"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "प्रतिबंध"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "संग्रह या ज़िप बनाने के लिए"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "संग्रह या ज़िप की गई फ़ाइल निकालें"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "फ़ाइलें या फ़ोल्डर कॉपी करें"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "फ़ाइल या फ़ोल्डर को सरल काटें"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "एक फ़ाइल संपादित करें"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "फ़ाइलें और फ़ोल्डर हटाएं या हटाएं"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "फ़ाइलें डाउनलोड करें"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "फाइल अपलोड करो"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "चीजें खोजें"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "फ़ाइल की जानकारी"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "मदद"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by commas(,). If user is "
"Ban then they will not able to access wp file manager on front end."
msgstr ""
"-> यह विशेष उपयोगकर्ताओं को केवल अल्पविराम (,) द्वारा अलग-अलग आईडी डालकर प्रतिबंधित कर देगा। अगर यूजर बैन "
"है तो वे फ्रंट एंड पर wp फाइल मैनेजर को एक्सेस नहीं कर पाएंगे।"

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> फ़ाइल प्रबंधक UI देखें। डिफ़ॉल्ट: ग्रिड"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> फ़ाइल संशोधित या दिनांक स्वरूप बनाएँ। डिफ़ॉल्ट: डी एम, वाई एच: मैं ए"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> फ़ाइल प्रबंधक भाषा। डिफ़ॉल्ट: अंग्रेजी (एन)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> फ़ाइल प्रबंधक थीम। डिफ़ॉल्ट: लाइट"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "फ़ाइल प्रबंधक - सिस्टम गुण"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP संस्करण"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "अधिकतम फ़ाइल अपलोड आकार (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "अधिकतम फ़ाइल अपलोड आकार पोस्ट करें (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "मेमोरी लिमिट (मेमोरी_लिमिट)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "समय समाप्त (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "ब्राउज़र और ओएस (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "यहां थीम बदलें:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "डिफ़ॉल्ट"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "डार्क"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "लाइट"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "ग्रे"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "फ़ाइल प्रबंधक में आपका स्वागत है"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"हम नए दोस्त बनाना पसंद करते हैं! नीचे सदस्यता लें और हम वादा करते हैं\n"
"    आपको हमारे नवीनतम नए प्लगइन्स, अपडेट के साथ अप-टू-डेट रखें,\n"
"    शानदार डील और कुछ खास ऑफर्स।"

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "कृपया प्रथम नाम दर्ज करें।"

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "कृपया अंतिम नाम दर्ज करें।"

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "कृपया ईमेल पता दर्ज करें।"

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "सत्यापित करें"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "जी नहीं, धन्यवाद"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "सेवा की शर्तें"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "गोपनीयता नीति"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "सहेजा जा रहा है..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "ठीक है"

#~ msgid "Backup not found!"
#~ msgstr "बैकअप नहीं मिला!"

#~ msgid "Backup removed successfully!"
#~ msgstr "बैकअप सफलतापूर्वक निकाला गया!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr "<span class=\"fm_console_error\">बैकअप के लिए कुछ भी नहीं चुना गया</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">सुरक्षा समस्या.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">डेटाबेस बैकअप हो गया।</span>"

#~ msgid "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr "<span class=\"fm_console_error\">डेटाबेस बैकअप बनाने में असमर्थ।</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">प्लगइन्स का बैकअप हो गया।</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">प्लगइन्स बैकअप विफल रहा।</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">थीम का बैकअप हो गया.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">थीम बैकअप विफल।</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">अपलोड बैकअप हो गया।</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">अपलोड बैकअप विफल रहा।</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">अन्य बैकअप किया गया।</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">अन्य बैकअप विफल रहा।</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">सब हो गया</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat=\"d M, Y h:i A\" "
#~ "allowed_roles=\"editor,author\" access_folder=\"wp-content/plugins\" write = \"true\" read = "
#~ "\"false\" hide_files = \"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat=\"d M, Y h:i A\" "
#~ "allowed_roles=\"editor,author\" access_folder=\"wp-content/plugins\" write = \"true\" read = "
#~ "\"false\" hide_files = \"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "अपने WP फ़ाइलों को प्रबंधित करें।"

#~ msgid "Extensions"
#~ msgstr "एक्सटेंशन"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay amount of your "
#~ "choice."
#~ msgstr ""
#~ "प्लगइन को अधिक स्थिर बनाने के लिए कृपया कुछ दान में योगदान करें आप अपनी पसंद की राशि का भुगतान कर सकते हैं"
languages/wp-file-manager-es_ES.po000064400000062516147361034410013036 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 17:12+0530\n"
"PO-Revision-Date: 2022-02-28 15:53+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Copia de seguridad de temas restaurada con éxito."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "No se pueden restaurar los temas."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Sube la copia de seguridad restaurada con éxito."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "No se pueden restaurar las cargas."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "La copia de seguridad de otros se restauró con éxito."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "No se pueden restaurar otros."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "La copia de seguridad de los complementos se restauró correctamente."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "No se pueden restaurar los complementos."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "La copia de seguridad de la base de datos se restauró correctamente."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Todo listo"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "No se puede restaurar la copia de seguridad de la base de datos."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "¡Las copias de seguridad se eliminaron correctamente!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "¡No se puede eliminar la copia de seguridad!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Copia de seguridad de la base de datos realizada el día"

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Copia de seguridad de complementos realizada el día"

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Copia de seguridad de temas realizada el día"

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Sube la copia de seguridad realizada el día"

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Otra copia de seguridad realizada en la fecha"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Registros"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "¡No se encontraron registros!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Nada seleccionado para la copia de seguridad"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Problema de seguridad."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Copia de seguridad de la base de datos realizada."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "No se puede crear una copia de seguridad de la base de datos."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Copia de seguridad de complementos hecha."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "La copia de seguridad de los complementos falló."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Copia de seguridad de temas hecha."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "La copia de seguridad de los temas falló."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Copia de seguridad de subidas hecha."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "La copia de seguridad de las subidas falló."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Otras copias de seguridad hechas."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "La copia de seguridad de otros falló."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Administrador de archivos WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Ajustes"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "preferencias"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Propiedades del sistema"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Código corto - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Copia de seguridad de restauracion"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Comprar profesional"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donar"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "El archivo no existe para descargar."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Código de seguridad invalido."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Falta la identificación de respaldo."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Falta el tipo de parámetro."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Faltan parámetros requeridos."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Error: no se puede restaurar la copia de seguridad porque la copia de "
"seguridad de la base de datos es muy grande. Intente aumentar el Tamaño "
"máximo permitido desde la configuración de Preferencias."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "¡Seleccione la(s) copia(s) de seguridad para eliminar!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr ""
"¿Está seguro de que desea eliminar las copias de seguridad seleccionadas?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "La copia de seguridad se está ejecutando, por favor espere"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "La restauración se está ejecutando, por favor espere"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Nada seleccionado para la copia de seguridad."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Administrador de archivos WP - Copia de seguridad/restauración"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opciones de copia de seguridad:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Copia de seguridad de la base de datos"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Copia de seguridad de archivos"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Complementos"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temas"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Cargas"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Otros (Cualquier otro directorio encontrado dentro de wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Copia ahora"

#: inc/backup.php:89
msgid "Time now"
msgstr "Ahora"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ÉXITO"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Copia de seguridad eliminada con éxito."

#: inc/backup.php:102
msgid "Ok"
msgstr "OK"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "BORRAR ARCHIVOS"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "¿Está seguro de que desea eliminar esta copia de seguridad?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Cancelar"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Confirmar"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RESTAURAR ARCHIVOS"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "¿Está seguro de que desea restaurar esta copia de seguridad?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Último mensaje de registro"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "La copia de seguridad aparentemente tuvo éxito y ahora está completa."

#: inc/backup.php:171
msgid "No log message"
msgstr "Sin mensaje de registro"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Copias de seguridad existentes"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Fecha de copia de seguridad"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Copia de seguridad de datos (haga clic para descargar)"

#: inc/backup.php:190
msgid "Action"
msgstr "Acción"

#: inc/backup.php:210
msgid "Today"
msgstr "Hoy dia"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restaurar"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Borrar"

#: inc/backup.php:241
msgid "View Log"
msgstr "Ver registro"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Actualmente no se encontraron copias de seguridad."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Acciones sobre las copias de seguridad seleccionadas"

#: inc/backup.php:251
msgid "Select All"
msgstr "Seleccionar todo"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deseleccionar"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Los archivos de copia de seguridad estarán bajo"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Contribución del administrador de archivos WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nota: Estas son capturas de pantalla de demostración. Compre File Manager "
"pro para las funciones de Registros."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Haga clic para comprar PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Comprar PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Editar registros de archivos"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Descargar registros de archivos"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Subir registros de archivos"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Ajustes guardados."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Descartar este aviso."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "No ha realizado ningún cambio para ser guardado."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Ruta raíz pública"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Ruta raíz del administrador de archivos, puede cambiar según su elección."

#: inc/root.php:59
msgid "Default:"
msgstr "Por defecto:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Cambie esto con cuidado, la ruta incorrecta puede hacer que el complemento "
"del administrador de archivos se caiga."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "¿Habilitar papelera?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Después de habilitar la papelera, sus archivos irán a la carpeta de papelera."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "¿Habilitar la carga de archivos en la biblioteca multimedia?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Después de habilitar esto, todos los archivos irán a la biblioteca de medios."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Tamaño máximo permitido en el momento de la restauración de la copia de "
"seguridad de la base de datos."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Aumente el valor del campo si recibe un mensaje de error en el momento de la "
"restauración de la copia de seguridad."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Guardar cambios"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Ajustes - General"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nota: Esta es sólo una captura de pantalla de demostración. Para obtener "
"ajustes por favor compre nuestra versión profesional."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Aquí admin puede dar acceso a funciones de usuario para utilizar "
"filemanager. Admin puede establecer la carpeta de acceso predeterminada y "
"también controlar el tamaño de carga de filemanager."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Configuración - Editor de código"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Administrador de archivos tiene un editor de código con varios temas. Puede "
"seleccionar cualquier tema para el editor de código. Se mostrará cuando "
"edite cualquier archivo. También puede permitir el modo de pantalla completa "
"del editor de código."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Editor de código Ver"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Configuración - Restricciones de usuario"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Admin puede restringir las acciones de cualquier usuario. También ocultar "
"archivos y carpetas y puede establecer diferentes rutas de carpetas "
"diferentes para diferentes usuarios."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Configuración - Restricciones de función de usuario"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Admin puede restringir las acciones de cualquier userrole. También ocultar "
"archivos y carpetas y puede establecer diferentes rutas de carpetas "
"diferentes para diferentes roles de usuarios."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Administrador de archivos - Código corto"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "UTILIZAR:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Mostrará el administrador de archivos en el front-end. Puede controlar todas "
"las configuraciones desde la configuración del administrador de archivos. "
"Funcionará igual que el administrador de archivos WP backend."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Mostrará el administrador de archivos en el front-end. Pero solo el "
"administrador puede acceder a él y lo controlará desde la configuración del "
"administrador de archivos."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parámetros:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Permitirá que todos los roles accedan al administrador de archivos en el "
"front-end o puede usarlo simplemente para roles de usuario particulares como "
"allow_roles=\"editor,author\" (separado por coma (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Aquí \"prueba\" es el nombre de la carpeta que se encuentra en el directorio "
"raíz, o puede proporcionar la ruta para las subcarpetas como \"wp-content/"
"plugins\". Si se deja en blanco o vacío, accederá a todas las carpetas del "
"directorio raíz. Predeterminado: directorio raíz"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"para acceder a los permisos de escritura de archivos, nota: verdadero/falso, "
"predeterminado: falso"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"para acceder al permiso de lectura de archivos, nota: verdadero/falso, "
"predeterminado: verdadero"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"se ocultará mencionado aquí. Nota: separados por comas (,). Predeterminado: "
"nulo"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Se bloqueará mencionado entre comas. puede bloquear más como \".php, .css, ."
"js\", etc. Valor predeterminado: nulo"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* para todas las operaciones y para permitir alguna operación, puede "
"mencionar el nombre de la operación como, operaciones_permitidas=\"cargar, "
"descargar\". Nota: separados por comas (,). Por defecto: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lista de operaciones de archivo:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Crear directorio o carpeta"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "hacer archivo"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Cambiar el nombre de un archivo o carpeta"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplicar o clonar una carpeta o archivo"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Pegar un archivo o carpeta"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Prohibición"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Para hacer un archivo o zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extraer archivo o archivo comprimido"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copiar archivos o carpetas"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Simplemente corte un archivo o carpeta"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "editar un archivo"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Eliminar o eliminar archivos y carpetas"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Descargar archivos"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Subir archivos"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "buscar cosas"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Información del archivo"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Ayuda"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Prohibirá a usuarios particulares simplemente poniendo sus "
"identificaciones separadas por comas (,). Si el usuario es Ban, entonces no "
"podrá acceder al administrador de archivos wp en el front-end."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr ""
"-> Vista de interfaz de usuario del administrador de archivos. "
"Predeterminado: cuadrícula"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Archivo Modificado o Crear formato de fecha. Predeterminado: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Administrador de archivos Idioma. Predeterminado: inglés (en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema del administrador de archivos. Predeterminado: Luz"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Administrador de archivos - Propiedades del sistema"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versión de PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Tamaño máximo de carga de archivos (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Publicar el tamaño máximo de la subida de archivos (tamaño_max_puesta)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Límite de memoria (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Tiempo de espera (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Navegador y sistema operativo (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Cambiar tema aquí:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Por defecto"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Oscuro"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Ligero"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "gris"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Bienvenido al Administrador de archivos"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"¡Nos encanta hacer nuevos amigos! Suscríbase a continuación y prometemos "
"mantenerlo actualizado con nuestros últimos complementos, actualizaciones, "
"ofertas increíbles y algunas ofertas especiales."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Ingrese el nombre."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Ingrese el apellido."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Ingrese la dirección de correo electrónico."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verificar"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "No, gracias"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Términos de servicio"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Política de privacidad"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Ahorro..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Manage your WP files."
#~ msgstr "Administre sus archivos WP."

#~ msgid "Extensions"
#~ msgstr "Extensiones"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Por favor contribuya con alguna donación, para que el plugin sea más "
#~ "estable. Usted puede pagar la cantidad de su elección."
languages/wp-file-manager-de_DE.po000064400000066544147361034410013005 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 16:45+0530\n"
"PO-Revision-Date: 2022-02-25 16:48+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Themes-Backup erfolgreich wiederhergestellt."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Themen können nicht wiederhergestellt werden."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Lädt die Sicherung erfolgreich wiederhergestellt hoch."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Uploads können nicht wiederhergestellt werden."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Andere Sicherung erfolgreich wiederhergestellt."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Andere können nicht wiederhergestellt werden."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Plugins-Backup erfolgreich wiederhergestellt."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Plugins können nicht wiederhergestellt werden."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Datenbanksicherung erfolgreich wiederhergestellt."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Alles erledigt"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB-Backup kann nicht wiederhergestellt werden."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Sicherungen erfolgreich entfernt!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Backup kann nicht entfernt werden!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Datenbanksicherung am Datum durchgeführt "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Plugin-Backup am Datum durchgeführt done "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Theme-Backup am Datum durchgeführt "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Lädt die Sicherung hoch, die am Datum erstellt wurde "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Andere Sicherung am Datum durchgeführt "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Protokolle"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Keine Protokolle gefunden!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Nichts für Sicherung ausgewählt"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Sicherheitsproblem."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Datenbanksicherung durchgeführt."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Datenbanksicherung kann nicht erstellt werden."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Plugin-Backup durchgeführt."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Plug-in-Sicherung fehlgeschlagen."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Themes-Backup durchgeführt."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Designsicherung fehlgeschlagen."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Upload-Backup fertig."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Sicherung der Uploads fehlgeschlagen."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Andere Sicherung durchgeführt."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Andere Sicherung fehlgeschlagen."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP-Dateimanager"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "die Einstellungen"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Einstellungen"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Systemeigenschaften"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Backup wiederherstellen"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Pro kaufen"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Spenden"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Datei ist nicht zum Herunterladen vorhanden."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Ungültiger Sicherheitscode."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Fehlende Backup-ID."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametertyp fehlt."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Fehlende erforderliche Parameter."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Fehler: Die Sicherung kann nicht wiederhergestellt werden, da die "
"Datenbanksicherung sehr groß ist. Bitte versuchen Sie, die maximal zulässige "
"Größe in den Einstellungen zu erhöhen."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Backup(s) zum Löschen auswählen!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Möchten Sie die ausgewählte(n) Sicherung(en) wirklich entfernen?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Backup läuft, bitte warten"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Wiederherstellung läuft, bitte warten"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Nichts für Sicherung ausgewählt."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP-Dateimanager - Sichern/Wiederherstellen"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Backup-Optionen:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Datenbanksicherung"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Dateisicherung"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Themen"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Uploads"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Andere (Alle anderen Verzeichnisse in wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Jetzt sichern"

#: inc/backup.php:89
msgid "Time now"
msgstr "Zeit jetzt"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ERFOLG"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Sicherung erfolgreich gelöscht."

#: inc/backup.php:102
msgid "Ok"
msgstr "OK"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "DATEIEN LÖSCHEN"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Möchten Sie diese Sicherung wirklich löschen?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Stornieren"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Bestätigen"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "DATEIEN WIEDERHERSTELLEN"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Möchten Sie diese Sicherung wirklich wiederherstellen?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Letzte Protokollnachricht"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Die Sicherung ist anscheinend gelungen und ist nun abgeschlossen."

#: inc/backup.php:171
msgid "No log message"
msgstr "Keine Log-Meldung"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Vorhandene Sicherung(en)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Backup-Datum"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Backup-Daten (zum Download anklicken)"

#: inc/backup.php:190
msgid "Action"
msgstr "Aktion"

#: inc/backup.php:210
msgid "Today"
msgstr "Heute"

#: inc/backup.php:239
msgid "Restore"
msgstr "Wiederherstellen"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Löschen"

#: inc/backup.php:241
msgid "View Log"
msgstr "Protokoll anzeigen"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Derzeit keine Sicherung(en) gefunden."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Aktionen für ausgewählte(s) Backup(s)"

#: inc/backup.php:251
msgid "Select All"
msgstr "Wählen Sie Alle"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Abwählen"

#: inc/backup.php:254
msgid "Note:"
msgstr "Hinweis:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Backup-Dateien werden unter"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Beitrag zum WP-Dateimanager"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Hinweis: Dies sind Demo-Screenshots. Bitte kaufen Sie File Manager Pro für "
"Logs-Funktionen."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klicken Sie hier, um PRO zu kaufen"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "PRO kaufen"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Dateiprotokolle bearbeiten"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Dateiprotokolle herunterladen"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Dateiprotokolle hochladen"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Einstellungen gespeichert."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Ignoriere die Nachricht."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Sie haben keine zu speichernden Änderungen vorgenommen."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Öffentlicher Root-Pfad"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Dateimanager-Stammpfad, können Sie nach Belieben ändern."

#: inc/root.php:59
msgid "Default:"
msgstr "Standard:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Bitte ändern Sie dies sorgfältig, ein falscher Pfad kann dazu führen, dass "
"das Dateimanager-Plugin ausfällt."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Papierkorb aktivieren?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Nachdem Sie den Papierkorb aktiviert haben, werden Ihre Dateien in den "
"Papierkorbordner verschoben."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Hochladen von Dateien in die Medienbibliothek aktivieren?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Nachdem Sie dies aktiviert haben, werden alle Dateien in die "
"Medienbibliothek verschoben."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maximal zulässige Größe zum Zeitpunkt der Wiederherstellung der "
"Datenbanksicherung."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Bitte erhöhen Sie den Feldwert, wenn Sie beim Wiederherstellen der Sicherung "
"eine Fehlermeldung erhalten."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Änderungen speichern"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Einstellungen - Allgemeines"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Hinweis: Dies ist nur ein Demo-Screenshot. Um Einstellungen zu erhalten, "
"kaufen Sie bitte unsere Pro-Version."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Hier kann der Administrator Zugriff auf Benutzerrollen gewähren, um den "
"Dateimanager zu verwenden. Der Administrator kann den Standardzugriffsordner "
"festlegen und auch die Uploadgröße des Dateimanagers steuern."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Einstellungen - Code-Editor"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Der Dateimanager verfügt über einen Code-Editor mit mehreren Themen. Sie "
"können ein beliebiges Thema für den Code-Editor auswählen. Es wird "
"angezeigt, wenn Sie eine Datei bearbeiten. Sie können auch den Vollbildmodus "
"des Code-Editors zulassen."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Code-Editor-Ansicht"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Einstellungen - Benutzerbeschränkungen"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Der Administrator kann die Aktionen jedes Benutzers einschränken. Verstecken "
"Sie auch Dateien und Ordner und können Sie verschiedene - verschiedene "
"Ordnerpfade für verschiedene Benutzer festlegen."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Einstellungen - Benutzerrollenbeschränkungen"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Der Administrator kann die Aktionen jeder Benutzerrolle einschränken. "
"Verstecken Sie auch Dateien und Ordner und können Sie verschiedene - "
"verschiedene Ordnerpfade für verschiedene Benutzerrollen festlegen."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Dateimanager - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "BENUTZEN:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Es zeigt den Dateimanager am Frontend. Sie können alle Einstellungen über "
"die Dateimanagereinstellungen steuern. Es funktioniert genauso wie der "
"Backend-WP-Dateimanager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Es zeigt den Dateimanager am Frontend. Aber nur der Administrator kann "
"darauf zugreifen und die Einstellungen des Dateimanagers steuern."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parameter:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Es ermöglicht allen Rollen den Zugriff auf den Dateimanager am Frontend oder "
"Sie können es einfach für bestimmte Benutzerrollen verwenden, z."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Hier ist \"test\" der Name des Ordners, der sich im Stammverzeichnis "
"befindet, oder Sie können den Pfad für Unterordner wie \"wp-content/plugins"
"\" angeben. Wenn Sie das Feld leer oder leer lassen, wird auf alle Ordner im "
"Stammverzeichnis zugegriffen. Standard: Root-Verzeichnis"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "für den Zugriff auf Schreibrechte, Hinweis: true/false, default: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"für den Zugriff auf die Berechtigung zum Lesen von Dateien, Hinweis: wahr/"
"falsch, Standard: wahr"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"es wird hier erwähnt verstecken. Hinweis: durch Komma (,) getrennt. "
"Standard: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Es wird in Kommas erwähnt sperren. Sie können mehr wie \".php,.css,.js\" "
"usw. sperren. Standard: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* Für alle Operationen und um einige Operationen zuzulassen, können Sie den "
"Operationsnamen wie \"allowed_operations=\"upload,download\" angeben. "
"Hinweis: durch Komma (,) getrennt. Standard: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Liste der Dateioperationen:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Verzeichnis oder Ordner erstellen"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Datei erstellen"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Benennen Sie eine Datei oder einen Ordner um"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Einen Ordner oder eine Datei duplizieren oder klonen"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Datei oder Ordner einfügen"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Verbot"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Um ein Archiv oder eine Zip zu erstellen"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Archiv oder gezippte Datei extrahieren"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Dateien oder Ordner kopieren"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Einfach eine Datei oder einen Ordner ausschneiden"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Bearbeiten einer Datei"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Dateien und Ordner entfernen oder löschen"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Dateien herunterladen"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Daten hochladen"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Dinge suchen"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Info zur Datei"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Hilfe"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Es wird bestimmte Benutzer sperren, indem nur ihre IDs durch Kommas (,) "
"getrennt werden. Wenn der Benutzer Ban ist, kann er am Frontend nicht auf "
"den wp-Dateimanager zugreifen."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Dateimanager-UI-Ansicht. Standard: Raster"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Datei geändert oder Datumsformat erstellen. Standard: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Dateimanager-Sprache. Standard: Englisch(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Dateimanager-Theme. Standard: Licht"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Dateimanager - Systemeigenschaften"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP-Version"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maximale Datei-Upload-Größe (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Maximale Datei-Upload-Größe des Posts (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Speicherlimit (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Zeitüberschreitung (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Browser und Betriebssystem (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Ändern Sie das Thema hier:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Standard"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Dunkel"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Licht"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grau"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Willkommen beim Dateimanager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Wir lieben es, neue Freunde zu finden! Abonnieren Sie unten und wir "
"versprechen es\n"
"    halten Sie mit unseren neuesten neuen Plugins, Updates,\n"
"    tolle Angebote und ein paar Sonderangebote."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Bitte Vornamen eingeben."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Bitte Nachname eingeben."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Bitte E-Mail-Adresse eingeben."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Überprüfen"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nein danke"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Nutzungsbedingungen"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Datenschutz-Bestimmungen"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Speichern..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Sicherung nicht gefunden!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Sicherung erfolgreich entfernt!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nichts für die Sicherung ausgewählt</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sicherheitsproblem.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Datenbanksicherung durchgeführt.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Datenbanksicherung kann nicht erstellt "
#~ "werden.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Plugins-Backup fertig.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Plug-in-Sicherung fehlgeschlagen.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Themes-Backup fertig.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Themes-Backup fehlgeschlagen.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Uploads Backup abgeschlossen.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Upload-Backup fehlgeschlagen.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Andere Sicherungen durchgeführt.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Andere Sicherung fehlgeschlagen.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Alles erledigt</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Verwalten Sie Ihre WP-Dateien."

#~ msgid "Extensions"
#~ msgstr "Erweiterungen"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Bitte spenden Sie eine Spende, um das Plugin stabiler zu machen. Sie "
#~ "können den Betrag Ihrer Wahl bezahlen."
languages/wp-file-manager-nn_NO.mo000064400000042151147361034410013035 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�3(��(&�)A�).�)&$*K*,T*��*�+G�+F,Z,@a,9�,?�,-+-%@-$f-#�-!�-�-�-...-4.	b.	l.v.}.�.�.�.�.)�.// /-5/(c/.�/�/�/�/�/�/0
00&,0S0e03t0�0��0 u1�1�1 �1=�1�+2�2%3'373<3�B3�$4
�4�4��4W�5�6��6^7p7t7�7�7]�77898U8p8�8�8�8�8�8W�8d79*�9+�9�9�9/�9)):#S:$w:)�:�:�:�:"�:;9;LX;N�;�;�;'<)C<.m<*�<�<�<�<�<!=#)=
M=&X==�=
�=
�=�=	�=&�=
�=>>#7>-[>�>�>�>�>�>;�>,?-3?&a?(�?0�?�? �?@&@,@.2@!a@(�@�@�@�@#A*A=ALA.YA&�A,�A3�ABB!B72BjB��B4C3OCM�CN�CH D}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Theme Editor Pro
PO-Revision-Date: 2022-03-01 18:05+0530
Last-Translator: 
Language-Team: 
Language: nn_NO
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* for alle operasjoner og for å tillate noen operasjoner kan du nevne operasjonsnavn som like, allow_operations="last opp, last ned". Merk: atskilt med komma(,). Standard: *->  Det vil forby bestemte brukere ved å bare sette ID-ene deres adskilt med komma (,). Hvis brukeren er Ban, vil de ikke få tilgang til wp-filbehandling på frontend.-> Filbehandlingstema. Standard: Light-> Filmodifisert eller Opprett datoformat. Standard: d M, Y h:i A-> Filbehandling språk. Standard: English(en)-> Filemanager UI View. Standard: gridHandlingHandlinger ved valgt (e) sikkerhetskopi (er)Administrator kan begrense alle brukeres handlinger. Skjul også filer og mapper og kan angi forskjellige - forskjellige mappestier for forskjellige brukere.Administrator kan begrense handlingene til enhver brukerroll. Skjul også filer og mapper og kan angi forskjellige - forskjellige mappestier for forskjellige brukerroller.Etter at du har aktivert papirkurven, går filene dine til papirkurven.Etter at du har aktivert dette, går alle filene til mediebiblioteket.FerdigEr du sikker på at du vil fjerne valgt (e) sikkerhetskopi (er)?Er du sikker på at du vil slette denne sikkerhetskopien?Er du sikker på at du vil gjenopprette denne sikkerhetskopien?SikkerhetsdatoSikkerhetskopier nåAlternativer for sikkerhetskopiering:Backup data (klikk for å laste ned)Sikkerhetskopifiler vil være underSikkerhetskopiering kjører, ventSikkerhetskopien ble slettet.Gjenopprette fra sikkerhetskopiSikkerhetskopieringer fjernet!forbyNettleser og operativsystem (HTTP_USER_AGENT)Kjøp PROKjøp ProAvbrytEndre tema her:Klikk for å kjøpe PROKode-editor VisBekrefteKopier filer eller mapperForeløpig ingen sikkerhetskopier funnet.SLETT FILERMørkSikkerhetskopiering av databasenDatabasesikkerhetskopiering utført på dato Sikkerhetskopiering av database utført.Databasesikkerhetskopiering ble gjenopprettet.MisligholdeMisligholde:SlettFjern markeringenAvvis denne meldingen.DonereLast ned filloggerLast ned filerDupliser eller klon en mappe eller filRediger filloggerRediger en filAktivere filer som lastes opp til mediebiblioteket?Vil du aktivere papirkurven?Feil: Kan ikke gjenopprette sikkerhetskopien fordi databasesikkerhetskopieringen er stor. Vennligst prøv å øke Maksimal tillatt størrelse fra Innstillinger-innstillingene.Eksisterende sikkerhetskopi (er)Pakk ut arkiv eller zip-filFilbehandling - Kort kodeFilbehandling - SystemegenskaperFile Manager Root Path, du kan endre i henhold til ditt valg.File Manager har en kodeditor med flere temaer. Du kan velge hvilket som helst tema for kodeditor. Den vises når du redigerer en fil. Du kan også tillate fullskjermmodus for kodeditor.Liste over filoperasjoner:Filen eksisterer ikke for nedlasting.Backup av filerGråHjelpHer er "test" navnet på mappen som ligger i rotkatalogen, eller du kan gi bane for undermapper som "wp-content/plugins". Hvis la stå tomt eller tomt, vil det få tilgang til alle mappene i rotkatalogen. Standard: RotkatalogHer kan admin gi tilgang til brukerroller for å bruke filmanager. Administrator kan angi standard tilgangsmappe og også kontrollere opplastingsstørrelsen på filadministratoren.Info om filenUgyldig sikkerhetskode.Det vil tillate alle roller å få tilgang til filbehandler på grensesnittet, eller du kan enkelt bruke for bestemte brukerroller som for eksempel allow_roles="editor,author" (atskilt med komma(,))Den vil låse nevnt i komma. du kan låse flere som ".php,.css,.js" osv. Standard: NullDet vil vise filbehandler på grensesnittet. Men bare administrator har tilgang til den og vil kontrollere fra filbehandlingsinnstillingene.Det vil vise filbehandler på grensesnittet. Du kan kontrollere alle innstillinger fra filbehandlingsinnstillingene. Det vil fungere på samme måte som backend WP filbehandling.Siste loggmeldingLysTømmerstokkerLag katalog eller mappeLag filMaksimal tillatt størrelse på tidspunktet for gjenoppretting av sikkerhetskopi av database.Maksimal filopplastingsstørrelse (upload_max_filesize)Memory Limit (memory_limit)Mangler sikkerhetskopi-ID.Manglende parametertype.Mangler nødvendige parametere.Nei takkIngen loggmeldingIngen logger funnet!Merk:Merk: Dette er demo-skjermbilder. Vennligst kjøp File Manager pro til Logs-funksjoner.Merk: Dette er bare et demo-skjermbilde. For å få innstillinger, vennligst kjøp vår pro-versjon.Ingenting er valgt for sikkerhetskopieringIngenting er valgt for sikkerhetskopiering.OKOkAndre (andre kataloger som finnes i wp-innhold)Andre sikkerhetskopier er gjort på dato Andre sikkerhetskopiering er gjort.Andre sikkerhetskopiering mislyktes.Andre sikkerhetskopier ble gjenopprettet.PHP-versjonParametere:Lim inn en fil eller mappeVennligst skriv inn e-postadresse.Vennligst skriv inn fornavn.Vennligst skriv inn etternavn.Endre dette nøye, feil bane kan føre til at filbehandling plugin går ned.Øk feltverdien hvis du får feilmelding ved gjenoppretting av sikkerhetskopi.PluginsPlugins backup gjort på dato Sikkerhetskopiering av plugins utført.Sikkerhetskopiering av plugins mislyktes.Plugins-sikkerhetskopiering ble gjenopprettet.Legg ut maks filstørrelse (post_max_size)PreferanserPersonvernreglerOffentlig rotstiGJENBESTILL FILERFjern eller slett filer og mapperGi nytt navn til en fil eller mappeRestaurereGjenoppretting kjører, vennligst ventSUKSESSLagre endringerLagrer ...Søk på tingSikkerhetsproblem.Velg alleVelg sikkerhetskopi(er) for å slette!InnstillingerInnstillinger - Kode-editorInnstillinger - GenereltInnstillinger - BrukerbegrensningerInnstillinger - Begrensninger for brukerrolleInstillinger lagret.Kortkode - PROEnkelt kutte en fil eller mappeSystem egenskaperVilkår for brukSikkerhetskopien lyktes tilsynelatende og er nå fullført.TemaerSikkerhetskopiering av temaer gjort på dato Sikkerhetskopiering av temaer utført.Sikkerhetskopiering av temaer mislyktes.Sikkerhetskopiering av temaer ble gjenopprettet.Tid nåTidsavbrudd (max_execution_time)Å lage et arkiv eller zipI dagBRUK:Kan ikke opprette databasesikkerhetskopiering.Kan ikke fjerne sikkerhetskopien!Kan ikke gjenopprette DB-sikkerhetskopi.Kan ikke gjenopprette andre.Kan ikke gjenopprette plugins.Kan ikke gjenopprette temaer.Kan ikke gjenopprette opplastinger.Last opp filloggerLast opp filerOpplastingerLaster opp sikkerhetskopiering gjort på dato Laster opp sikkerhetskopiering ferdig.Opplasting av sikkerhetskopiering mislyktes.Opplastingen av sikkerhetskopien ble gjenopprettet.BekrefteSe LoggWP filbehandlingWP filbehandling - Sikkerhetskopiering / gjenopprettingWP filbehandling-bidragVi elsker å få nye venner! Abonner nedenfor, og vi lover å
    holde deg oppdatert med de nyeste nye plugins, oppdateringer,
    fantastiske tilbud og noen få spesialtilbud.Velkommen til File ManagerDu har ikke gjort noen endringer for å bli lagret.for tilgang til tillatelse til å lese filer, merk: true/false, default: truefor tilgang til å skrive filer tillatelser, merk: true/false, standard: usantdet vil gjemme seg nevnt her. Merk: atskilt med komma(,). Standard: Nulllanguages/wp-file-manager-sk_SK.po000064400000237766147361034410013065 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Theme Editor Pro\n"
"POT-Creation-Date: 2022-02-28 11:25+0530\n"
"PO-Revision-Date: 2022-02-28 11:28+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sk_SK\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Zálohovanie motívov bolo úspešne obnovené."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Témy sa nepodarilo obnoviť."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Zálohovanie nahrávok bolo úspešne obnovené."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Nepodarilo sa obnoviť nahrané súbory."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Záloha ostatných bola úspešne obnovená."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Nie je možné obnoviť ostatných."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Záloha doplnkov bola úspešne obnovená."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Nepodarilo sa obnoviť doplnky."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Záloha databázy bola úspešne obnovená."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Všetko hotové"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Nie je možné obnoviť zálohu databázy."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Zálohy boli úspešne odstránené!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Zálohu sa nepodarilo odstrániť!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Zálohovanie databázy vykonané k dátumu "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Zálohovanie doplnkov bolo vykonané k dátumu "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Zálohovanie motívov bolo vykonané k dátumu "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Zálohy nahrávania boli vykonané k dátumu "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Ostatné zálohovanie vykonané k dátumu "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Záznamy"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nenašli sa žiadne protokoly!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Na zálohovanie nebolo vybraté nič"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Bezpečnostný problém."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Záloha databázy dokončená."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Nie je možné vytvoriť zálohu databázy."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Zálohovanie pluginov je hotové."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Zálohovanie doplnkov zlyhalo."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Zálohovanie tém je hotové."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Zálohovanie motívov zlyhalo."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Záloha nahrávania bola dokončená."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Zálohovanie nahrávania zlyhalo."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Ostatné zálohovanie hotovo."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Iné zálohovanie zlyhalo."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Správca súborov WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "nastavenie"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Predvoľby"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Vlastnosti systému"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Krátky kód - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Zálohovanie/obnovenie"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Kúpte si Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Prispieť"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Súbor neexistuje na stiahnutie."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Neplatný bezpečnostný kód."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Chýba záložné ID."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Chýba typ parametra."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Chýbajú požadované parametre."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Chyba: Zálohu nie je možné obnoviť, pretože záloha databázy má veľkú "
"veľkosť. Skúste zvýšiť maximálnu povolenú veľkosť v nastaveniach predvolieb."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Vyberte zálohy, ktoré chcete odstrániť!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Naozaj chcete odstrániť vybraté zálohy?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Zálohovanie je spustené, čakajte prosím"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Obnovenie je spustené, čakajte"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Na zálohovanie nebolo vybraté nič."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Správca súborov WP - zálohovanie / obnovenie"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Možnosti zálohovania:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Zálohovanie databázy"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Zálohovanie súborov"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Pluginy"

#: inc/backup.php:71
msgid "Themes"
msgstr "Témy"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Načítania"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Ostatné (Akékoľvek iné adresáre nájdené vo vnútri wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Zálohujte teraz"

#: inc/backup.php:89
msgid "Time now"
msgstr "Teraz čas"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ÚSPECH"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Záloha bola úspešne odstránená."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "VYMAZAŤ SÚBORY"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Naozaj chcete odstrániť túto zálohu?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Zrušiť"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Potvrdiť"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "OBNOVIŤ SÚBORY"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Naozaj chcete obnoviť túto zálohu?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Posledná správa z protokolu"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Zdá sa, že zálohovanie bolo úspešné a teraz je dokončené."

#: inc/backup.php:171
msgid "No log message"
msgstr "Žiadna správa z denníka"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Existujúce zálohy"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Dátum zálohy"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Záložné údaje (kliknutím ich stiahnete)"

#: inc/backup.php:190
msgid "Action"
msgstr "Akcia"

#: inc/backup.php:210
msgid "Today"
msgstr "Dnes"

#: inc/backup.php:239
msgid "Restore"
msgstr "Obnoviť"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Odstrániť"

#: inc/backup.php:241
msgid "View Log"
msgstr "Prezrieť záznam"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Momentálne sa nenašli žiadne zálohy."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Akcie pri vybratých zálohách"

#: inc/backup.php:251
msgid "Select All"
msgstr "Vybrať všetko"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Zrušiť výber"

#: inc/backup.php:254
msgid "Note:"
msgstr "Poznámka:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Záložné súbory budú pod"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Príspevok správcu súborov WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Poznámka: Toto sú ukážkové snímky obrazovky. Zakúpte si funkcie File Manager "
"pro do denníkov."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Kliknutím kúpite PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Kúpte si PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Upravte protokoly súborov"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Stiahnite si protokoly súborov"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Odovzdajte protokoly súborov"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Nastavenia boli uložené."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Zamietnuť toto oznámenie."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Neurobili ste žiadne zmeny, ktoré by sa dali uložiť."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Verejná koreňová cesta"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Root Path File Manager môžete zmeniť podľa vášho výberu."

#: inc/root.php:59
msgid "Default:"
msgstr "Predvolená hodnota:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Zmeňte to opatrne, nesprávna cesta môže viesť doplnok správcu súborov k pádu."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Povoliť kôš?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Po povolení koša sa vaše súbory dostanú do priečinka koša."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Povoliť nahrávanie súborov do knižnice médií?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Po povolení tejto možnosti sa všetky súbory dostanú do knižnice médií."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "Maximálna povolená veľkosť v čase obnovy zálohy databázy."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Ak sa počas obnovy zálohy zobrazuje chybové hlásenie, zvýšte hodnotu poľa."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Uložiť zmeny"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Nastavenia - Všeobecné"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Poznámka: Toto je iba ukážkový screenshot. Ak chcete získať nastavenia, "
"zakúpte si našu profesionálnu verziu."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Tu môže správca poskytnúť prístup k rolám používateľov na použitie správcu "
"súborov. Správca môže nastaviť predvolený priečinok prístupu a tiež ovládať "
"veľkosť nahrávania správcu súborov."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Nastavenia - editor kódov"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Správca súborov má editor kódov s viacerými témami. Pre editor kódu môžete "
"zvoliť ľubovoľnú tému. Zobrazí sa pri úprave ľubovoľného súboru. Môžete tiež "
"povoliť režim celej obrazovky editora kódu."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Zobrazenie editora kódu"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Nastavenia - obmedzenia používateľa"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Správca môže obmedziť akcie ľubovoľného používateľa. Skryte tiež súbory a "
"priečinky a môžete nastaviť rôzne cesty rôznych priečinkov pre rôznych "
"používateľov."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Nastavenia - obmedzenia roly používateľa"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Správca môže obmedziť akcie ľubovoľnej užívateľskej domény. Skryte tiež "
"súbory a priečinky a môžete nastaviť rôzne cesty rôznych priečinkov pre "
"rôzne roly používateľov."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Správca súborov - krátky kód"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "POUŽITIE:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Na frontende sa zobrazí správca súborov. Všetky nastavenia môžete ovládať z "
"nastavení správcu súborov. Bude to fungovať rovnako ako backend WP File "
"Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Na frontende sa zobrazí správca súborov. Prístup k nemu má však iba správca "
"a bude ho ovládať z nastavení správcu súborov."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametre:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Umožní všetkým rolám prístup k správcovi súborov na frontende alebo môžete "
"jednoducho použiť pre konkrétne používateľské roly, ako napríklad "
"allow_roles=\"editor,author\" (oddelené čiarkou(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Tu je \"test\" názov priečinka, ktorý sa nachádza v koreňovom adresári, "
"alebo môžete zadať cestu pre podpriečinky ako \"wp-content/plugins\". Ak "
"necháte prázdne alebo prázdne, pristúpi sa ku všetkým priečinkom v koreňovom "
"adresári. Predvolené: Koreňový adresár"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"pre prístup k oprávneniam na zapisovanie súborov, poznámka: true/false, "
"default: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"pre povolenie prístupu na čítanie súborov, poznámka: true/false, predvolená "
"hodnota: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"skryje sa tu spomínané. Poznámka: oddelené čiarkou (,). Predvolená hodnota: "
"Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Zamkne sa uvedené v čiarkach. môžete uzamknúť viac ako napríklad \".php,."
"css,.js\" atď. Predvolená hodnota: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* pre všetky operácie a na umožnenie niektorých operácií môžete uviesť názov "
"operácie ako like, allow_operations=\"upload,download\". Poznámka: oddelené "
"čiarkou (,). Predvolené: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Zoznam operácií so súbormi:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Vytvorte adresár alebo priečinok"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Vytvorte súbor"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Premenujte súbor alebo priečinok"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplikujte alebo klonujte priečinok alebo súbor"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Prilepte súbor alebo priečinok"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Ban"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Vytvorenie archívu alebo zipu"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extrahujte archív alebo komprimovaný súbor"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopírujte súbory alebo priečinky"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Jednoduché vyrezanie súboru alebo priečinka"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Upravte súbor"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Odstráňte alebo odstráňte súbory a priečinky"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Stiahnutie súborov"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Nahrať súbory"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Hľadajte veci"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informácie o súbore"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Pomoc"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Zakáže konkrétnym používateľom iba vloženie ich identifikátorov "
"oddelených čiarkami (,). Ak je používateľ Ban, nebude mať prístup k "
"správcovi súborov wp na klientskom rozhraní."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr ""
"-> Zobrazenie používateľského rozhrania Filemanager. Predvolená hodnota: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Súbor zmenený alebo Vytvoriť formát dátumu. Predvolené: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Jazyk správcu súborov. Predvolená hodnota: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Téma Správca súborov. Predvolené: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Správca súborov - vlastnosti systému"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Verzia PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maximálna veľkosť nahrávaného súboru (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Zverejniť maximálnu veľkosť nahrávaného súboru (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Limit pamäte (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Časový limit (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Prehliadač a OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Tu zmeniť tému:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Predvolené"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Tma"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Svetlo"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Šedá"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Vitajte v Správcovi súborov"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Radi nadväzujeme nové priateľstvá! Prihláste sa na odber nižšie a sľubujeme\n"
"    budeme vás informovať o našich najnovších nových doplnkoch, "
"aktualizáciách,\n"
"    úžasné ponuky a niekoľko špeciálnych ponúk."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Zadajte krstné meno."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Zadajte priezvisko."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Zadajte e-mailovú adresu."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Overiť"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nie ďakujem"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Podmienky služby"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Zásady ochrany osobných údajov"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Ukladá sa ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Ok"

#~ msgid "Backup not found!"
#~ msgstr "Záloha sa nenašla!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Záloha bola úspešne odstránená!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nie je vybraté nič na zálohovanie</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Problém so zabezpečením. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Zálohovanie databázy je hotové. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nie je možné vytvoriť zálohu databázy. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Zálohovanie doplnkov je hotové. </span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohovanie doplnkov zlyhalo. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Zálohovanie motívov je hotové. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohovanie motívov zlyhalo. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Nahrávanie zálohy je hotové. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohovanie nahrávok zlyhalo. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Ostatné zálohovanie hotové. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohovanie ostatných zlyhalo. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Hotovo </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Obrázok"

#~ msgid "of"
#~ msgstr "z"

#~ msgid "Close"
#~ msgstr "Zavrieť"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Táto funkcia vyžaduje vložené rámy. Máte zakázané prvky iframe alebo ich "
#~ "prehliadač nepodporuje."

#~ msgid "Theme Editor"
#~ msgstr "Editor tém"

#~ msgid "Plugin Editor"
#~ msgstr "Editor doplnkov"

#~ msgid "Access Control"
#~ msgstr "Riadenie prístupu"

#~ msgid "Notify Me"
#~ msgstr "Upozorni ma"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "jazyk bol úspešne stiahnutý."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Priečinok jazyka sa nepodarilo stiahnuť."

#~ msgid "Security token expired!"
#~ msgstr "Platnosť bezpečnostného tokenu uplynula!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "jazyk bol úspešne stiahnutý."

#~ msgid "Currently language "
#~ msgstr "Momentálne jazyk "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " nie je k dispozícií. Kliknite na odkaz na požadovaný jazyk."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr "Na úpravu doplnkov pre tento web nemáte dostatočné povolenie."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Na tomto webe nie sú nainštalované žiadne doplnky."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Na tomto webe nie sú nainštalované žiadne motívy."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">Zadajte názov priečinka! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Zadajte názov súboru! </p>"

#~ msgid "Open"
#~ msgstr "Otvorené"

#~ msgid "Preview"
#~ msgstr "Náhľad"

#~ msgid "Edit"
#~ msgstr "Úpravy"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Naozaj chcete prerušiť nahrávanie súborov?"

#~ msgid "File renamed successfully."
#~ msgstr "Súbor bol úspešne premenovaný."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Naozaj chcete odstrániť priečinok?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Priečinok bol úspešne odstránený."

#~ msgid "File deleted successfully."
#~ msgstr "Súbor bol úspešne odstránený."

#~ msgid "Folder renamed successfully."
#~ msgstr "Priečinok bol úspešne premenovaný."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Nie je povolených viac ako 30 znakov.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Neplatná požiadavka!"

#~ msgid "No change in file!"
#~ msgstr "Žiadna zmena v súbore!"

#~ msgid "File saved successfully!"
#~ msgstr "Súbor bol úspešne uložený!"

#~ msgid "File not saved!"
#~ msgstr "Súbor nebol uložený!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Bezpečnostný token sa nepodarilo overiť!"

#~ msgid "Folder created successfully!"
#~ msgstr "Priečinok bol úspešne vytvorený!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Tento formát priečinka nie je povolené nahrávať pomocou wordpressu!"

#~ msgid "Folder already exists!"
#~ msgstr "Priečinok už existuje!"

#~ msgid "File created successfully!"
#~ msgstr "Súbor bol úspešne vytvorený!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Vytváranie tejto prípony súboru nie je povolené!"

#~ msgid "File already exists!"
#~ msgstr "Súbor už existuje!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Zadajte platnú príponu súboru!"

#~ msgid "Folder does not exists!"
#~ msgstr "Priečinok neexistuje!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Priečinok bol úspešne odstránený!"

#~ msgid "File deleted successfully!"
#~ msgstr "Súbor bol úspešne odstránený!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "Nahrávanie tejto prípony súboru nie je povolené wordpressom!"

#~ msgid " already exists"
#~ msgstr " Už existuje"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Súbor bol úspešne nahraný: Cesta k nahranému súboru je "

#~ msgid "No file selected"
#~ msgstr "Nie je vybraný žiadny súbor"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Súbor sa nedá premenovať! Skúste to znova."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Priečinok bol úspešne premenovaný!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Zadajte správny názov priečinka"

#~ msgid "How can we help?"
#~ msgstr "Ako môžeme pomôcť?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "Učebné zdroje, odborná podpora a pomoc odborníkov."

#~ msgid "Documentation"
#~ msgstr "Dokumentácia"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Odpovede rýchlo nájdete v našej komplexnej dokumentácii."

#~ msgid "Learn More"
#~ msgstr "Uč sa viac"

#~ msgid "Contact Us"
#~ msgstr "Kontaktuj nás"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr "Odošlite lístok s podporou pre odpovede na vaše otázky."

#~ msgid "Request a Feature"
#~ msgstr "Vyžiadajte si funkciu"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "Povedzte nám, čo chcete, a pridá to do nášho plánu."

#~ msgid "Tell us what you think!"
#~ msgstr "Povedz nám čo si myslíš!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Ohodnoťte a dajte nám recenziu na Wordpresse!"

#~ msgid "Leave a Review"
#~ msgstr "Zanechajte recenziu"

#~ msgid "Update"
#~ msgstr "Aktualizácia"

#~ msgid "Click here to install/update "
#~ msgstr "Kliknite tu pre inštaláciu / aktualizáciu"

#~ msgid " language translation for Theme Editor."
#~ msgstr " jazykový preklad pre editor tém."

#~ msgid "Installed"
#~ msgstr "Nainštalované"

#~ msgid "English is the default language of Theme Editor. "
#~ msgstr "Predvoleným jazykom editora tém je angličtina. "

#~ msgid "Request "
#~ msgstr "Žiadosť "

#~ msgid "Click here to request"
#~ msgstr "Kliknutím tu požiadate"

#~ msgid "language translation for Theme Editor"
#~ msgstr "jazykový preklad pre editor tém"

#~ msgid "Theme Editor Language:"
#~ msgstr "Jazyk editora témy:"

#~ msgid " language"
#~ msgstr " Jazyk"

#~ msgid "Available languages"
#~ msgstr "Dostupné jazyky"

#~ msgid "Click here to download all available languages."
#~ msgstr "Kliknutím sem stiahnete všetky dostupné jazyky."

#~ msgid "Request a language"
#~ msgstr "Vyžiadajte si jazyk"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Povedzte nám, ktorý jazyk chcete pridať."

#~ msgid "Contact us"
#~ msgstr "Kontaktuj nás"

#~ msgid "Notifications"
#~ msgstr "Oznámenia"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> Poznámka: Toto je iba snímka obrazovky. Kúpte si pre túto "
#~ "funkciu verziu PRO. </strong>"

#~ msgid "Permissions"
#~ msgstr "Povolenia"

#~ msgid "Edit Plugin"
#~ msgstr "Upraviť doplnok"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Tento doplnok je momentálne aktivovaný! </strong> Upozornenie: "
#~ "Vykonávanie zmien v aktívnych doplnkoch sa neodporúča. Ak vaše zmeny "
#~ "spôsobia závažnú chybu, doplnok sa automaticky deaktivuje."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Úpravy <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (aktívne)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Prehliadanie <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (neaktívne)"

#~ msgid "Update File"
#~ msgstr "Aktualizovať súbor"

#~ msgid "Download Plugin"
#~ msgstr "Stiahnite si doplnok"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Pred uložením zmien musíte do tohto súboru urobiť zápis. Ďalšie "
#~ "informácie nájdete v <a href=\"https://wordpress.org/support/article/"
#~ "changing-file-permissions/\" target=\"_blank\"> kódexe </a>."

#~ msgid "Select plugin to edit:"
#~ msgstr "Vyberte doplnok, ktorý chcete upraviť:"

#~ msgid "Create Folder and File"
#~ msgstr "Vytvorte priečinok a súbor"

#~ msgid "Create"
#~ msgstr "Vytvoriť"

#~ msgid "Remove Folder and File"
#~ msgstr "Odstrániť priečinok a súbor"

#~ msgid "Remove "
#~ msgstr "Odstrániť"

#~ msgid "To"
#~ msgstr "To"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Voliteľné: podadresár"

#~ msgid "Choose File "
#~ msgstr "Vyberte súbor"

#~ msgid "No file Chosen "
#~ msgstr "Žiaden súbor nie je vybraný "

#~ msgid "Create a New Folder: "
#~ msgstr "Vytvorte nový priečinok:"

#~ msgid "New folder will be created in: "
#~ msgstr "Nový priečinok sa vytvorí v:"

#~ msgid "New Folder Name: "
#~ msgstr "Nový názov priečinka:"

#~ msgid "Create New Folder"
#~ msgstr "Vytvorte nový priečinok"

#~ msgid "Create a New File: "
#~ msgstr "Vytvoriť nový súbor:"

#~ msgid "New File will be created in: "
#~ msgstr "Nový súbor bude vytvorený v:"

#~ msgid "New File Name: "
#~ msgstr "Nový názov súboru:"

#~ msgid "Create New File"
#~ msgstr "Vytvoriť nový súbor"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr ""
#~ "Varovanie: Pred odstránením ľubovoľného priečinka alebo súboru buďte "
#~ "opatrní."

#~ msgid "Current Theme Path: "
#~ msgstr "Aktuálna cesta témy:"

#~ msgid "Remove Folder: "
#~ msgstr "Odstrániť priečinok:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Cesta k priečinku, ktorý chcete odstrániť: "

#~ msgid "Remove Folder"
#~ msgstr "Odstrániť priečinok"

#~ msgid "Remove File: "
#~ msgstr "Odstrániť súbor:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Cesta k súboru, ktorú chcete odstrániť: "

#~ msgid "Remove File"
#~ msgstr "Odstrániť súbor"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Zadajte e-mailovú adresu."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr ""
#~ "Varovanie: Pred premenovaním ľubovoľného priečinka alebo súboru buďte "
#~ "opatrní."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Súbor / priečinok bude premenovaný v:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Premenovanie súboru / priečinka:"

#~ msgid "Rename File"
#~ msgstr "Premenovať súbor"

#~ msgid "Follow us"
#~ msgstr "Nasleduj nás"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Editor tém Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Editor tém Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Editor tém na Twitteri"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Editor tém prepojený"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Editor tém Youtube"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Prejdite na stránku ThemeEditor"

#~ msgid "Theme Editor Links"
#~ msgstr "Odkazy na editor tém"

#~ msgid "Child Theme"
#~ msgstr "Detská téma"

#~ msgid "Child Theme Permissions"
#~ msgstr "Povolenia témy dieťaťa"

#~ msgid " is not available. Please click "
#~ msgstr "nie je k dispozícii. Prosím kliknite"

#~ msgid "here"
#~ msgstr "tu"

#~ msgid "to request language."
#~ msgstr "požiadať o jazyk."

#~ msgid "Click"
#~ msgstr "Kliknite"

#~ msgid "to install "
#~ msgstr "inštalovať "

#~ msgid " language translation  for Theme Editor."
#~ msgstr " jazykový preklad pre editor tém."

#~ msgid "Success: Settings Saved!"
#~ msgstr "Úspech: Nastavenia boli uložené!"

#~ msgid "No changes have been made to save."
#~ msgstr "Na uloženie neboli urobené žiadne zmeny."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Povoliť editor tém pre témy"

#~ msgid "Yes"
#~ msgstr "Áno"

#~ msgid "No"
#~ msgstr "Nie"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Týmto povolíte / zakážete editor tém. <br/><strong class=\"defs"
#~ "\">Predvolené nastavenie: </strong>Áno"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Zakázať predvolený editor tém WordPress?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Týmto povolíte / zakážete predvolený editor tém. <br/><strong class=\"defs"
#~ "\">Predvolené: </strong>Áno"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Povoliť editor doplnkov pre doplnky"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Týmto povolíte / zakážete editor doplnkov. <br/><strong class=\"defs"
#~ "\">Predvolené nastavenie: </strong>Áno"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Zakázať predvolený editor doplnkov WordPress?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Týmto povolíte alebo zakážete predvolený editor doplnkov. <br/><strong "
#~ "class=\"defs\">Predvolené: </strong> Áno"

#~ msgid "Code Editor"
#~ msgstr "Editor kódu"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Umožňuje vám zvoliť tému pre editor tém. <br/><strong class=\"defs"
#~ "\">Predvolené: </strong>Kobalt"

#~ msgid "Edit Themes"
#~ msgstr "Upraviť témy"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Tento motív je momentálne aktivovaný! </strong> Varovanie: "
#~ "Neodporúča sa vykonávať zmeny v aktívnych motívoch."

#~ msgid "Editing"
#~ msgstr "Úpravy"

#~ msgid "Browsing"
#~ msgstr "Prehliadanie"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Aktualizujte súbor a pokúste sa znova aktivovať"

#~ msgid "Download Theme"
#~ msgstr "Stiahnuť tému"

#~ msgid "Select theme to edit:"
#~ msgstr "Vyberte motív, ktorý chcete upraviť:"

#~ msgid "Theme Files"
#~ msgstr "Súbory tém"

#~ msgid "Choose File"
#~ msgstr "Vyberte súbor"

#~ msgid "No File Chosen"
#~ msgstr "Žiaden súbor nie je vybraný"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr ""
#~ "Varovanie: Pred odstránením ľubovoľného priečinka alebo súboru buďte "
#~ "opatrní."

#~ msgid "Child Theme Permission"
#~ msgstr "Povolenie témy dieťaťa"

#~ msgid "Translations"
#~ msgstr "Preklady"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr ""
#~ "vytvárať, upravovať, nahrávať, sťahovať, mazať súbory a priečinky tém"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Nemáte povolenie na vytvorenie novej podradenej témy."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr "Nemáte povolenie na zmenu konfigurácie existujúcej podradenej témy."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Nemáte povolenie na duplikovanie podradenej témy."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "Nemáte povolenie na prístup k ponuke dopytu / selektora."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "Nemáte povolenie na prístup k webovým fontom a ponuke CSS."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Na kopírovanie súborov nemáte povolenie."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Nemáte povolenie na odstránenie podradených súborov."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "Nemáte povolenie na nahrávanie nových snímok obrazovky."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Nemáte povolenie na nahrávanie nových obrázkov."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Nemáte povolenie na mazanie obrázkov."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Na stiahnutie súboru nemáte povolenie."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Nemáte povolenie na vytvorenie nového adresára."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Nemáte povolenie na vytvorenie nového súboru."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Nemáte povolenie na aktualizáciu súboru!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Nemáte povolenie na vytvorenie priečinka!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Nemáte povolenie na odstránenie priečinka!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Nemáte povolenie na odstránenie súboru!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Nemáte povolenie na nahrávanie súboru!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Povolenia podradenej témy boli úspešne uložené."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "V povoleniach podradenej témy, ktoré sa majú uložiť, nie sú vykonané "
#~ "žiadne zmeny."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Správa o povolení témy dieťaťa sa úspešne uložila."

#~ msgid "Users"
#~ msgstr "Používatelia"

#~ msgid "Create New Child Theme"
#~ msgstr "Vytvorte tému nového dieťaťa"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Konfigurujte existujúce motívy dieťaťa"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Duplicitné podradené motívy"

#~ msgid "Query/ Selector"
#~ msgstr "Dopyt / selektor"

#~ msgid "Web/font"
#~ msgstr "Web / písmo"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Skopírujte nadradenú tému súboru na detskú tému"

#~ msgid "Deleted Child Files"
#~ msgstr "Odstránené podradené súbory"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Odovzdajte nové snímanie obrazovky"

#~ msgid "Upload New Images"
#~ msgstr "Odovzdajte nové obrázky"

#~ msgid "Deleted Images "
#~ msgstr "Odstránené obrázky"

#~ msgid "Download Images"
#~ msgstr "Stiahnutie obrázkov"

#~ msgid "Create New Directory"
#~ msgstr "Vytvorte nový adresár"

#~ msgid "Create New Files"
#~ msgstr "Vytvorte nové súbory"

#~ msgid "Export Theme"
#~ msgstr "Exportovať tému"

#~ msgid "User Roles"
#~ msgstr "Roly používateľov"

#~ msgid "Query/ Seletor"
#~ msgstr "Dopyt / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Odstránené obrázky"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Správa o povolení témy dieťaťa"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Nemáte povolenie na vytvorenie novej podradenej témy."

#~ msgid "Query/Selector"
#~ msgstr "Dopyt / selektor"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "Nemáte povolenie na prístup k ponuke dopytu / selektora."

#~ msgid " Web/font"
#~ msgstr "Web / písmo"

#~ msgid " Export Theme"
#~ msgstr "Exportovať tému"

#~ msgid "Save Child Theme Message"
#~ msgstr "Správa o povolení témy dieťaťa"

#~ msgid "Please select atleast one image."
#~ msgstr "Vyberte aspoň jeden obrázok."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Nemáte povolenie na mazanie obrázkov."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Nemáte povolenie na nahrávanie nových obrázkov."

#~ msgid "You don't have the permission to download."
#~ msgstr "Na stiahnutie nemáte povolenie."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Nemáte povolenie na vytvorenie nového adresára."

#~ msgid "Please choose file type."
#~ msgstr "Vyberte typ súboru."

#~ msgid "Please enter file name."
#~ msgstr "Zadajte názov súboru."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Nemáte povolenie na vytvorenie nového súboru."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr "Naozaj chcete skopírovať nadradené súbory do podradenej témy?"

#~ msgid "Please select file(s)."
#~ msgstr "Vyberte súbory."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Nemáte povolenie na kopírovanie súborov."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Naozaj chcete odstrániť vybraté súbory?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Nemáte povolenie na odstránenie podradených súborov."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "Nemáte povolenie na nahrávanie nových snímok obrazovky."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Nemáte povolenie na exportovanie témy."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "Nemáte povolenie na prístup do ponuky Dotaz / Selektor."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Nemáte povolenie na prístup do ponuky Web Fonts & CSS."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Aktuálna téma analýzy:"

#~ msgid "Preview Theme"
#~ msgstr "Ukážka témy"

#~ msgid "Parent Themes"
#~ msgstr "Nadradené témy"

#~ msgid "Child Themes"
#~ msgstr "Detské témy"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Chyba: Nastavenia sa neuložili!"

#~ msgid "Email List"
#~ msgstr "Zoznam e-mailov"

#~ msgid "Email Address"
#~ msgstr "Emailová adresa"

#~ msgid "Enter Email"
#~ msgstr "Zadajte e-mail"

#~ msgid "Add More"
#~ msgstr "Pridať VIAC"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Táto adresa sa používa na účely upozornenia, ako je napríklad upozornenie "
#~ "na tému alebo doplnok."

#~ msgid "Theme Notification"
#~ msgstr "Oznámenie témy"

#~ msgid "Notify on file update"
#~ msgstr "Upozorniť na aktualizáciu súboru"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Oznámenie o úprave alebo aktualizácii súboru motívu. <br/> <strong> "
#~ "Predvolené nastavenie: </strong> Áno"

#~ msgid "Notify on files download"
#~ msgstr "Upozorniť na stiahnutie súborov"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Oznámenie o stiahnutí úprav súboru témy. <br/> <strong> Predvolené "
#~ "nastavenie: </strong> Áno"

#~ msgid "Notify on theme download"
#~ msgstr "Upozorniť na stiahnutie motívu"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Oznámenie o stiahnutí motívu. <br/> <strong> Predvolené nastavenie: </"
#~ "strong> Áno"

#~ msgid "Notify on files upload"
#~ msgstr "Upozorniť na nahranie súborov"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Oznámenie o nahrávaní súborov v motíve. <br/> <strong> Predvolené "
#~ "nastavenie: </strong> Áno"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Upozorniť na vytvorenie nového súboru / priečinka"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Oznámenie o vytvorení nového súboru alebo priečinka v motíve. <br/> "
#~ "<strong> Predvolené nastavenie: </strong> Áno"

#~ msgid "Notify on delete"
#~ msgstr "Upozorniť na odstránenie"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Upozorniť na odstránenie ľubovoľného súboru a priečinka v motívoch. <br/> "
#~ "<strong> Predvolené nastavenie: </strong> Áno"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Upozorniť na vytvorenie motívu Nové dieťa"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Upozorniť pri vytváraní nových motívov dieťaťa. <br/> <strong> "
#~ "Predvolené: </strong> Áno"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Upozorniť na konfiguráciu tém existujúceho dieťaťa"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Upozorniť na konfiguráciu existujúcich motívov dieťaťa. <br/> <strong> "
#~ "Predvolené nastavenie: </strong> Áno"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Upozorniť na duplikované podradené témy"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Upozorniť pri konfigurácii motívov existujúceho dieťaťa. <br/> <strong> "
#~ "Predvolené nastavenie: </strong> Áno"

#~ msgid "Plugin Notification"
#~ msgstr "Oznámenie o doplnku"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Oznámenie o úprave alebo aktualizácii súboru motívu. <br/> <strong> "
#~ "Predvolené nastavenie: </strong> áno"

#~ msgid "Notify on Plugin download"
#~ msgstr "Upozorniť na stiahnutie doplnku"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Oznámenie o stiahnutí doplnku. <br/> <strong> Predvolené nastavenie: </"
#~ "strong> Áno"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Oznámenie o nahraní súboru v motíve. <br/> <strong> Predvolené "
#~ "nastavenie: </strong> Áno"

#~ msgid "Permission saved successfully."
#~ msgstr "Povolenie bolo úspešne uložené."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr ""
#~ "Ojoj! Povolenie nie je možné uložiť, pretože ste neurobili žiadne zmeny."

#~ msgid "Allowed User Roles"
#~ msgstr "Povolené roly používateľa"

#~ msgid "Update theme files"
#~ msgstr "Aktualizujte súbory motívov"

#~ msgid "Create new theme files and folders"
#~ msgstr "Vytvorte nové súbory a priečinky tém"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Načítajte nové súbory a priečinky tém"

#~ msgid "Download theme files"
#~ msgstr "Stiahnite si súbory tém"

#~ msgid "Download theme"
#~ msgstr "Stiahnuť tému"

#~ msgid "Update plugin files"
#~ msgstr "Aktualizujte súbory doplnkov"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Vytvorte nové súbory a priečinky doplnkov"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Nahrajte nové súbory a priečinky doplnkov"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Odstráňte súbory a priečinky doplnkov"

#~ msgid "Download plugin files"
#~ msgstr "Stiahnite si súbory doplnkov"

#~ msgid "Download plugin"
#~ msgstr "Stiahnite si doplnok"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Editor tém PRO - nižšie uveďte podrobnosti objednávky. Ak nie <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Kúpiť teraz </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "ČÍSLO OBJEDNÁVKY (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Zadajte ID objednávky"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Skontrolujte ID svojho e-mailu."

#~ msgid "LICENCE KEY *"
#~ msgstr "LICENČNÝ KLÍČ *"

#~ msgid "Enter License Key"
#~ msgstr "Zadajte licenčný kľúč"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Skontrolujte prosím svoj e-mail, či neobsahuje licenčný kľúč."

#~ msgid "Click To Verify"
#~ msgstr "Kliknite na položku Overiť"

#~ msgid "URL/None"
#~ msgstr "URL / Žiadne"

#~ msgid "Origin"
#~ msgstr "Pôvod"

#~ msgid "Color 1"
#~ msgstr "Farba 1"

#~ msgid "Color 2"
#~ msgstr "Farba 2"

#~ msgid "Width/None"
#~ msgstr "Šírka / žiadna"

#~ msgid "Style"
#~ msgstr "Štýl"

#~ msgid "Color"
#~ msgstr "Farba"

#~ msgid "Configure Child Theme"
#~ msgstr "Konfigurácia témy dieťaťa"

#~ msgid "Duplicate Child theme"
#~ msgstr "Duplicitné podradené motívy"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Po analýze táto téma funguje dobre. Môžete to použiť ako svoju detskú "
#~ "tému."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr "Po analýze sa zdá, že táto podradená téma funguje správne."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Táto téma načítava ďalšie tabuľky štýlov po súbore <code> style.css </"
#~ "code>:"

#~ msgid "The theme"
#~ msgstr "Názov témy"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr "nebolo možné analyzovať, pretože ukážka sa nevykreslila správne"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Táto podradená téma nebola nakonfigurovaná pre tento doplnok"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Konfigurátor významne upravuje podradenú tému, vrátane zmien štýlov a "
#~ "ďalších funkcií php. Zvážte použitie možnosti DUPLIKOVAŤ podradenú tému "
#~ "(pozri krok 1 vyššie) a originál si ponechať ako zálohu."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "Všetky informácie webfonts / css sa úspešne uložili."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Zadajte hodnotu pre webfonts / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Nemáte povolenie na aktualizáciu webfonts / css."

#~ msgid "All information saved successfully."
#~ msgstr "Všetky informácie sa úspešne uložili."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Naozaj chcete vynulovať? Zničí sa tým všetka práca, ktorú ste vykonali v "
#~ "konfigurátore."

#~ msgid "Selectors"
#~ msgstr "Selektory"

#~ msgid "Edit Selector"
#~ msgstr "Upraviť výber"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "Šablónu so štýlmi nie je možné zobraziť."

#~ msgid "(Child Only)"
#~ msgstr "(Iba dieťa)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Zadajte platnú tému dieťaťa."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Zadajte platný názov témy dieťaťa."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> existuje. Zadajte inú tému dieťaťa"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "Stránku sa nepodarilo načítať správne."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Konfliktné alebo zastarané knižnice jQuery boli načítané iným doplnkom:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr "Tento problém môže vyriešiť deaktivácia alebo výmena doplnkov."

#~ msgid "No result found for the selection."
#~ msgstr "Pre výber sa nenašiel žiadny výsledok."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sPrečo to vidím?%s"

#~ msgid "Parent / Child"
#~ msgstr "Rodič / dieťa"

#~ msgid "Select an action:"
#~ msgstr "Vyberte akciu:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Vytvorte novú tému dieťaťa"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Nakonfigurujte existujúcu podradenú tému"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Duplikujte existujúcu podradenú tému"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Vyberte nadradenú tému:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Analyzujte nadradenú tému"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Kliknutím na tlačidlo „Analyzovať“ určíte závislosti štýlov a ďalšie "
#~ "potenciálne problémy."

#~ msgid "Analyze"
#~ msgstr "Analyzovať"

#~ msgid "Select a Child Theme:"
#~ msgstr "Vyberte tému dieťaťa:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Analyzujte tému dieťaťa"

#~ msgid "Name the new theme directory:"
#~ msgstr "Pomenujte nový adresár tém:"

#~ msgid "Directory Name"
#~ msgstr "Názov adresára"

#~ msgid "NOTE:"
#~ msgstr "POZNÁMKA:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Toto NIE je názov témy dieťaťa. Názov, popis atď. Môžete prispôsobiť v "
#~ "kroku 7 nižšie."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Adresár témy Overiť dieťa:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Iba na overenie (nemôžete zmeniť adresár existujúcej podradenej témy)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Vyberte, kam chcete uložiť nové štýly:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Primárna šablóna so štýlmi (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Uložiť nové vlastné štýly priamo do primárnej šablóny štýlov podradenej "
#~ "témy a nahradiť tak existujúce hodnoty. Primárna šablóna so štýlmi sa "
#~ "načíta v poradí stanovenom témou."

#~ msgid "Separate Stylesheet"
#~ msgstr "Samostatná šablóna so štýlmi"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Uložte nové vlastné štýly do samostatnej šablóny so štýlmi a skombinujte "
#~ "všetky existujúce podradené štýly motívov s rodičmi do základnej čiary. "
#~ "Túto možnosť vyberte, ak chcete zachovať existujúce štýly podradených "
#~ "motívov namiesto ich prepisovania. Táto možnosť vám tiež umožňuje "
#~ "prispôsobiť šablóny štýlov, ktoré sa načítajú po primárnej šablóne so "
#~ "štýlmi."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Vyberte prácu so šablónou štýlov nadradenej témy:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Použite rad štýlov WordPress."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "Nechajte konfigurátor, aby určil príslušné akcie a závislosti a "
#~ "automaticky aktualizoval súbor funkcií."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr ""
#~ "V šablóne so štýlmi podradených motívov použite <code> @import </code>."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Túto možnosť použite, iba ak nie je možné načítať nadradenú šablónu so "
#~ "štýlmi pomocou frontu štýlov WordPress. Používanie <code> @import </code> "
#~ "sa neodporúča."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Nepridávajte žiadne nadradené spracovanie štýlov."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Túto možnosť vyberte, ak táto téma už spracováva šablónu štýlov "
#~ "nadradenej témy alebo ak sa na jej vzhľad nepoužíva súbor <code> style."
#~ "css </code> nadradenej témy."

#~ msgid "Advanced handling options"
#~ msgstr "Pokročilé možnosti manipulácie"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Ignorujte šablóny štýlov nadradených tém."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Túto možnosť vyberte, ak táto téma už spracováva šablónu štýlov "
#~ "nadradenej témy alebo ak sa na jej vzhľad nepoužíva súbor style.css "
#~ "nadradenej témy."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Opravte šablónu hlavičky v podradenej téme."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Nechajte konfigurátora (pokúsiť sa) vyriešiť všetky problémy so štýlmi "
#~ "uvedené vyššie. Týmto sa dá vyriešiť veľa, ale nie všetky bežné problémy."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Odstráňte závislosti šablón štýlov"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Poradie štýlov, ktoré sa načítajú pred primárnou šablónou štýlov, sa "
#~ "predvolene zachováva tak, že sa s nimi zaobchádza ako so závislosťami. V "
#~ "niektorých prípadoch sa v ukážke zistia šablóny štýlov, ktoré sa "
#~ "nepoužívajú na celom webe. V prípade potreby je možné odstrániť závislosť "
#~ "pre konkrétne tabuľky štýlov uvedené nižšie."

#~ msgid "Child Theme Name"
#~ msgstr "Názov témy dieťaťa"

#~ msgid "Theme Name"
#~ msgstr "Názov témy"

#~ msgid "Theme Website"
#~ msgstr "Tematický web"

#~ msgid "Author"
#~ msgstr "Autor"

#~ msgid "Author Website"
#~ msgstr "Autorský web"

#~ msgid "Theme Description"
#~ msgstr "Popis témy"

#~ msgid "Description"
#~ msgstr "Popis"

#~ msgid "Tags"
#~ msgstr "Značky"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Ponuky, widgety a ďalšie nastavenia prispôsobenia od nadradenej témy po "
#~ "tému dieťaťa:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Táto možnosť nahradí existujúce ponuky, widgety a ďalšie nastavenia "
#~ "prispôsobovacieho nástroja podradenej témy témami z nadradenej témy. Túto "
#~ "možnosť by ste mali použiť iba pri prvej konfigurácii podradenej témy."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Kliknutím spustíte konfigurátor:"

#~ msgid "Query / Selector"
#~ msgstr "Dopyt / selektor"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "Ak chcete nájsť konkrétne selektory v rámci blokov dotazov @media, "
#~ "najskôr vyberte dotaz a potom selektor. Pomocou základného dotazu môžete "
#~ "upraviť všetky ostatné selektory."

#~ msgid "@media Query"
#~ msgstr "@media Dotaz"

#~ msgid "( or \"base\" )"
#~ msgstr "(alebo „základňa“)"

#~ msgid "Selector"
#~ msgstr "Selektor"

#~ msgid "Query/Selector Action"
#~ msgstr "Akcia Dotaz / Selektor"

#~ msgid "Save Child Values"
#~ msgstr "Uložiť hodnoty dieťaťa"

#~ msgid "Delete Child Values"
#~ msgstr "Odstrániť hodnoty dieťaťa"

#~ msgid "Property"
#~ msgstr "Nehnuteľnosť"

#~ msgid "Baseline Value"
#~ msgstr "Východisková hodnota"

#~ msgid "Child Value"
#~ msgstr "Hodnota dieťaťa"

#~ msgid "error"
#~ msgstr "chyba"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "Nemáte povolenie na konfiguráciu podradených tém."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s neexistuje. Vyberte platnú nadradenú tému."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Súbor Functions je povinný a nemožno ho vymazať."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Vyberte platnú nadradenú tému."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Vyberte platnú tému dieťaťa."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Zadajte platný názov adresára témy dieťaťa."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> existuje. Zadajte iný názov šablóny detskej témy."

#~ msgid "Your theme directories are not writable."
#~ msgstr "Do vašich adresárov tém nie je možné zapisovať."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Podradenú tému sa nepodarilo inovovať"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "Na vašu šablónu štýlov sa nedá zapisovať."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "V súbore funkcií detských tém bola zistená uzatváracia značka PHP, takže "
#~ "nebola nakonfigurovaná možnosť „Rodičovská úprava štýlov“. Uzatváranie "
#~ "PHP na konci súboru sa neodporúča, pretože by to mohlo spôsobiť predčasné "
#~ "hlavičky HTTP. Upravte súbor <code> functions.php </code>, aby ste "
#~ "odstránili výslednú značku <code>?&gt;</code>, a kliknite znova na "
#~ "možnosť „Generovať / znova vytvoriť súbory podradených tém“."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Súbor sa nepodarilo skopírovať: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Súbor %s sa nepodarilo odstrániť."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "%s sa nepodarilo skopírovať"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "neplatný adresár: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Pri resetovaní povolení sa vyskytli chyby."

#~ msgid "Could not upload file."
#~ msgstr "Súbor sa nepodarilo nahrať."

#~ msgid "Invalid theme root directory."
#~ msgstr "Neplatný koreňový adresár témy."

#~ msgid "No writable temp directory."
#~ msgstr "Žiadny dočasný adresár, do ktorého je možné zapísať."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Rozbalenie zlyhalo -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Balenie zlyhalo -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Bol prekročený maximálny počet štýlov."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Chyba pri presúvaní súboru: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Nepodarilo sa nastaviť oprávnenie na zápis."

#~ msgid "Error:"
#~ msgstr "Chyba:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr ""
#~ "Aktuálna podradená téma dieťaťa <strong>%s</strong> bola resetovaná."

#~ msgid "Update Key saved successfully."
#~ msgstr "Aktualizačný kľúč bol úspešne uložený."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Súbory podradenej témy boli úspešne zmenené."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Podradená téma <strong>%s</strong> bola vygenerovaná úspešne."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Webové písma a CSS"

#~ msgid "Parent Styles"
#~ msgstr "Rodičovské štýly"

#~ msgid "Child Styles"
#~ msgstr "Štýly dieťaťa"

#~ msgid "View Child Images"
#~ msgstr "Zobraziť obrázky dieťaťa"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Na prepojenie ďalších šablón štýlov použite <code> @import url ([path]); "
#~ "</code>. Tento doplnok používa kľúčové slovo <code> @import </code> na "
#~ "ich identifikáciu a ich prevod na značky <code>&lt;link&gt;</code>. "
#~ "<strong> Príklad: </strong>"

#~ msgid "Save"
#~ msgstr "Uložiť"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr "Nahraním obrázka s rovnakým názvom sa nahradí existujúci obrázok."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Nahrajte obrázok nového dieťaťa"

#~ msgid "Delete Selected Images"
#~ msgstr "Odstrániť vybrané obrázky"

#~ msgid "Create a New Directory"
#~ msgstr "Vytvorte nový adresár"

#~ msgid "New Directory will be created in"
#~ msgstr "Nový adresár bude vytvorený v"

#~ msgid "New Directory Name"
#~ msgstr "Nový názov adresára"

#~ msgid "Create a New File"
#~ msgstr "Vytvorte nový súbor"

#~ msgid "New File will be created in"
#~ msgstr "Nový súbor bude vytvorený v"

#~ msgid "New File Name"
#~ msgstr "Nový názov súboru"

#~ msgid "File Type Extension"
#~ msgstr "Prípona typu súboru"

#~ msgid "Choose File Type"
#~ msgstr "Vyberte typ súboru"

#~ msgid "PHP File"
#~ msgstr "Súbor PHP"

#~ msgid "CSS File"
#~ msgstr "Súbor CSS*"

#~ msgid "JS File"
#~ msgstr "Súbor JS"

#~ msgid "Text File"
#~ msgstr "Textový súbor"

#~ msgid "PHP File Type"
#~ msgstr "Typ súboru PHP"

#~ msgid "Simple PHP File"
#~ msgstr "Jednoduchý súbor PHP"

#~ msgid "Wordpress Template File"
#~ msgstr "Súbor šablóny Wordpress"

#~ msgid "Template Name"
#~ msgstr "Názov šablóny"

#~ msgid "Parent Templates"
#~ msgstr "Rodičovské šablóny"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Skopírujte šablóny PHP z nadradenej témy tak, že ich tu vyberiete. "
#~ "Konfigurátor definuje šablónu ako súbor Theme Theme bez akýchkoľvek "
#~ "funkcií alebo tried PHP. Ostatné súbory PHP nemôžu byť bezpečne prepísané "
#~ "podradenou témou."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "UPOZORNENIE: Ak je váš podradený motív aktívny, okamžite po skopírovaní "
#~ "sa namiesto rodiča použije verzia podradeného motívu."

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "súbor sa generuje osobitne a nemožno ho sem skopírovať."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Kopírovať vybraté do detských tém"

#~ msgid " Child Theme Files "
#~ msgstr "Súbory detských tém"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Kliknutím upravíte súbory pomocou editora tém"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Tu môžete odstrániť šablóny podradených motívov."

#~ msgid "Delete Selected"
#~ msgstr "Zmaž označené"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Screenshot témy dieťaťa"

#~ msgid "Upload New Screenshot"
#~ msgstr "Nahrajte novú snímku obrazovky"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Screenshot témy by mal mať pomer 4: 3 (napr. 880px x 660px) JPG, PNG "
#~ "alebo GIF. Bude premenovaná"

#~ msgid "Screenshot"
#~ msgstr "Screenshot"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Nahrajte obrázok nového dieťaťa"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "Obrázky témy sa nachádzajú v adresári obrázkov v podradenej téme a sú "
#~ "určené iba na použitie šablóny so štýlmi. Pre obrázky obsahu použite "
#~ "knižnicu médií."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Ukážka aktuálnej témy dieťaťa (aktuálna analýza)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Ukážka aktuálnej témy dieťaťa"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Exportovať detskú tému ako archív Zip"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Kliknutím na tlačidlo „Exportovať súbor Zip“ uložte zálohu aktuálne "
#~ "načítanej podradenej témy. Ktorékoľvek zo svojich tém môžete exportovať z "
#~ "karty Rodič / Dieťa."

#~ msgid "Export Child Theme"
#~ msgstr "Exportovať detskú tému"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Súbory podradenej témy boli úspešne skopírované!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr ""
#~ "Súbor, ktorý sa pokúšate skopírovať z nadradených šablón, neexistuje"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Súbor, ktorý sa pokúšate skopírovať z nadradených šablón, sa už nachádza "
#~ "v súboroch podradenej témy."

#~ msgid "Child "
#~ msgstr "Dieťa"

#~ msgid " and Parent "
#~ msgstr "a rodič"

#~ msgid " directories doesn't exist!"
#~ msgstr "adresáre neexistujú!"

#~ msgid " directory doesn't exist!"
#~ msgstr "adresár neexistuje!"

#~ msgid "Parent "
#~ msgstr "Rodič"

#~ msgid "Unknown error! "
#~ msgstr "Neznáma chyba!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Nemáte povolenie na kopírovanie súborov!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Všetky vybrané súbory boli úspešne odstránené!"

#~ msgid " does not exists!"
#~ msgstr "neexistuje!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Nahrávanie tejto prípony súboru nie je povolené!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Obrázok bol úspešne nahraný!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Pri nahrávaní obrázka sa vyskytol problém!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Túto príponu súboru nie je možné nahrávať ako snímku obrazovky pomocou "
#~ "wordpressu!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Súbor bol úspešne nahraný!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Súbory podradenej témy nemožno upraviť."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Súbory boli úspešne odstránené!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Nemáte povolenie na mazanie súborov!"

#~ msgid "Entered directory name already exists"
#~ msgstr "Zadaný názov adresára už existuje"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Nemáte povolenie na vytvorenie adresára!"

#~ msgid "Wordpress template file created"
#~ msgstr "Bol vytvorený súbor šablóny Wordpress"

#~ msgid "Wordpress template file not created"
#~ msgstr "Súbor šablóny Wordpress nebol vytvorený"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP vytvoril súbor úspešne"

#~ msgid "PHP file not created"
#~ msgstr "Súbor PHP nebol vytvorený"

#~ msgid " file not created"
#~ msgstr "súbor nebol vytvorený"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Nemáte povolenie na vytvorenie súboru!"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Priečinok jazyka bol zmenšený."

#~ msgid "Add single or multiple languages."
#~ msgstr "Pridajte jeden alebo viac jazykov."

#~ msgid "Add single language file"
#~ msgstr "Pridajte súbor v jednom jazyku"

#~ msgid "Please click on language button."
#~ msgstr "Kliknite na tlačidlo jazyka."

#~ msgid "Add all languages zip folder"
#~ msgstr "Pridajte priečinok zip všetkých jazykov"

#~ msgid "Zip Download"
#~ msgstr "Na stiahnutie"
languages/wp-file-manager-tr_TR.mo000064400000043454147361034410013067 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�W(�
)0�)O�)2/*Jb*�*%�*��*��+Tt,L�,-:"-/]-7�-�-�-�-.�-$,.)Q.{.�.#�.
�.1�./ /9/F/%d/�/	�/'�/ �/�/	
00**0"U03x0�0�0�0�0�0�0�017,1d1�1B�1"�1�2�25�2�2'3E:3�3�4�4�4�4�4��4��5
�6�6��6q�7�	8��8J9_9
f9q9	�9N�94�9:;:Q:i:�:�:�:�:f�:p0;'�;(�;�;	�;4<):<d<'�<0�<
�<
�<%�<=?=Y=xr=`�=
L>(W>�>'�>/�>9�>	1?;?P?`?/w?0�?�?-�?@@.@>@K@]@j@�@�@�@&�@,�@
A!A'1AYAmAD�A�A"�A�A$B(3B\B#kB�B�B	�B&�B�B"C$CCCbC~C�C�C�C-�C"D()D1RD�D�D�D.�D�D�
E!�E4�EP)FXzFX�F}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 12:24+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: tr_TR
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* tüm işlemler için ve bazı işlemlere izin vermek için işlem adını allow_processs="upload,download" gibi belirtebilirsiniz. Not: virgül (,) ile ayrılmış. Varsayılan: *-> Belirli kullanıcıları yalnızca kimliklerini virgülle (,) ayırarak yasaklayacaktır. Kullanıcı Ban ise, ön uçta wp dosya yöneticisine erişemezler.-> Dosya Yöneticisi Teması. Varsayılan: Light-> Dosya Değiştirildi veya Tarih formatı oluştur. Varsayılan: d M, Y h:i A-> Dosya yöneticisi Dil. Varsayılan: English(en)-> Dosya Yöneticisi Kullanıcı Arayüzü Görünümü. Varsayılan: gridAksiyonSeçilen yedekleme(ler)deki işlemlerYönetici, herhangi bir kullanıcının eylemlerini kısıtlayabilir. Ayrıca dosya ve klasörleri gizleyebilir ve farklı kullanıcılar için farklı - farklı klasör yolları ayarlayabilirsiniz.Yönetici, herhangi bir kullanıcı rolünün eylemlerini kısıtlayabilir. Ayrıca dosya ve klasörleri gizleyebilir ve farklı kullanıcı rolleri için farklı - farklı klasör yolları ayarlayabilirsiniz.Çöp kutusunu etkinleştirdikten sonra dosyalarınız çöp klasörüne gidecektir.Bunu etkinleştirdikten sonra tüm dosyalar medya kitaplığına gidecektir.Hepsi tamamSeçili yedekleri kaldırmak istediğinizden emin misiniz?Bu yedeği silmek istediğinizden emin misiniz?Bu yedeği geri yüklemek istediğinizden emin misiniz?Yedekleme TarihiŞimdi yedekleYedekleme Seçenekleri:Yedekleme verileri (indirmek için tıklayın)Yedekleme dosyaları altında olacakYedekleme çalışıyor, lütfen bekleyinYedekleme başarıyla silindi.Yedekle/Geri YükleYedekler başarıyla kaldırıldı!yasaklamakTarayıcı ve İşletim Sistemi (HTTP_USER_AGENT)PRO'yu satın alProfesyonel Satın Alınİptal etmekTemayı Buradan Değiştirin:PRO'yu Satın Almak İçin TıklayınKod düzenleyici GörünümüOnaylamakDosyaları veya klasörleri kopyalayınŞu anda yedek(ler) bulunamadı.DOSYALARI SİLkaranlıkVeritabanı YedeklemeTarihte veritabanı yedeklemesi yapıldı Veritabanı yedeklemesi yapıldı.Veritabanı yedeklemesi başarıyla geri yüklendi.VarsayılanVarsayılan:SilSeçimi kaldırBu bildirimi reddedin.bağış yapDosya Günlüklerini İndirinDosyaları indirBir klasörü veya dosyayı çoğaltın veya klonlayınDosya Günlüklerini DüzenleBir dosyayı düzenleyinDosyaların Medya Kitaplığına Yüklenmesi Etkinleştirilsin mi?Çöp Kutusu Etkinleştirilsin mi?Hata: Veritabanı yedeklemesinin boyutu ağır olduğundan yedekleme geri yüklenemiyor. Lütfen Tercihler ayarlarından izin verilen maksimum boyutu artırmayı deneyin.Mevcut Yedek(ler)Arşivi veya sıkıştırılmış dosyayı çıkarınDosya Yöneticisi - Kısa KodDosya Yöneticisi - Sistem ÖzellikleriDosya Yöneticisi Kök Yolu, tercihinize göre değiştirebilirsiniz.Dosya Yöneticisi, birden çok tema içeren bir kod düzenleyiciye sahiptir. Kod düzenleyici için herhangi bir tema seçebilirsiniz. Herhangi bir dosyayı düzenlediğinizde görüntülenecektir. Ayrıca tam ekran kod düzenleyici moduna izin verebilirsiniz.Dosya İşlemleri Listesi:İndirilecek dosya yok.Veritabanı YedeklemeGriYardımBurada "test", kök dizinde bulunan klasörün adıdır veya "wp-content/plugins" gibi alt klasörler için yol verebilirsiniz. Boş veya boş bırakılırsa, kök dizindeki tüm klasörlere erişecektir. Varsayılan: Kök dizinBurada yönetici, dosya yöneticisini kullanmak için kullanıcı rollerine erişim verebilir. Yönetici, Varsayılan Erişim Klasörünü ayarlayabilir ve ayrıca dosya yöneticisinin yükleme boyutunu kontrol edebilir.Dosya bilgisiGeçersiz Güvenlik Kodu.Tüm rollerin ön uçtaki dosya yöneticisine erişmesine izin verir veya belirli kullanıcı rolleri için allow_roles="editor,author" (virgülle (,) ile ayrılmış) gibi basit bir şekilde kullanabilirsiniz.Virgülle belirtilen kilitlenir. ".php,.css,.js" vb. gibi daha fazlasını kilitleyebilirsiniz. Varsayılan: NullÖn uçta dosya yöneticisini gösterecektir. Ancak buna yalnızca Yönetici erişebilir ve dosya yöneticisi ayarlarından kontrol eder.Ön uçta dosya yöneticisini gösterecektir. Tüm ayarları dosya yöneticisi ayarlarından kontrol edebilirsiniz. Arka uç WP Dosya Yöneticisi ile aynı şekilde çalışacaktır.Son Günlük MesajıIşıkKütüklerDizin veya klasör oluşturdosya yapVeritabanı yedekleme geri yüklemesi sırasında izin verilen maksimum boyut.Maksimum dosya yükleme boyutu (upload_max_filesize)Bellek Sınırı (memory_limit)Yedek kimliği eksik.Parametre türü eksik.Gerekli parametreler eksik.Hayır teşekkürlerGünlük mesajı yokGünlük bulunamadı!notNot: Bunlar demo ekran görüntüleridir. Lütfen Logs işlevleri için File Manager pro satın alın.Not: Bu sadece bir demo ekran görüntüsüdür. Ayarları almak için lütfen pro sürümümüzü satın alın.Yedekleme için hiçbir şey seçilmediYedekleme için hiçbir şey seçilmedi.TAMAM MITamam mıDiğerleri (wp içeriğinde bulunan diğer dizinler)Diğerleri yedekleme tarihinde yapıldı Diğerleri yedekleme yapıldı.Diğerleri yedekleme başarısız oldu.Diğerleri yedekleme başarıyla geri yüklendi.PHP sürümüparametreler:Bir dosya veya klasör yapıştırınLütfen E-posta Adresini Girin.Lütfen Adınızı Girin.Lütfen Soyadı Giriniz.Lütfen bunu dikkatli bir şekilde değiştirin, yanlış yol dosya yöneticisi eklentisinin çökmesine neden olabilir.Yedekleme geri yükleme sırasında hata mesajı alıyorsanız lütfen alan değerini artırın.EklentilerEklenti yedeklemesi o tarihte yapıldı Eklenti yedeklemesi yapıldı.Eklentiler yedekleme başarısız oldu.Eklenti yedeklemesi başarıyla geri yüklendi.Maksimum dosya yükleme boyutunu yayınla (post_max_size)TercihlerGizlilik PolitikasıGenel Kök YoluDOSYALARI GERİ YÜKLEDosyaları ve klasörleri kaldırın veya silinBir dosyayı veya klasörü yeniden adlandırınOnarmakGeri yükleme çalışıyor, lütfen bekleyinBAŞARIDeğişiklikleri Kaydetkaydediliyor...Şeyleri araGüvenlik sorunu.Hepsini seçSilinecek yedekleri seçin!AyarlarAyarlar - Kod düzenleyiciAyarlar - GenelAyarlar - Kullanıcı KısıtlamalarıAyarlar - Kullanıcı Rolü KısıtlamalarıAyarlar kaydedildi.Kısa kod - PROBasitçe bir dosya veya klasörü kesinSistem özellikleriKullanım ŞartlarıGörünüşe göre yedekleme başarılı oldu ve şimdi tamamlandı.TemalarTarihte yapılan tema yedeklemesi Tema yedeklemesi yapıldı.Temalar yedekleme başarısız oldu.Tema yedeği başarıyla geri yüklendi.Şimdi zamanıZaman aşımı (max_execution_time)Arşiv veya zip yapmak içinBugünKULLANIM:Veritabanı yedeği oluşturulamıyor.Yedekleme kaldırılamıyor!DB yedeklemesi geri yüklenemiyor.Diğerleri geri yüklenemiyor.Eklentiler geri yüklenemiyor.Temalar geri yüklenemiyor.Yüklemeler geri yüklenemiyor.Dosya Günlüklerini YükleDosyaları yükleYüklemelerYedeklemenin yapıldığı tarihte yüklenir Yüklemeler yedekleme tamamlandı.Yüklemeler yedekleme başarısız oldu.Yüklemeler yedekleme başarıyla geri yüklendi.DoğrulayınGünlüğü GörüntüleWP Dosya YöneticisiWP Dosya Yöneticisi - Yedekleme/Geri YüklemeWP Dosya Yöneticisi KatkısıYeni arkadaşlar edinmeyi seviyoruz! Aşağıdan abone olun ve söz veriyoruz
    en yeni eklentilerimiz, güncellemelerimiz ile sizi güncel tutmak,
    harika fırsatlar ve birkaç özel teklif.Dosya Yöneticisine Hoş GeldinizKaydedilecek herhangi bir değişiklik yapmadınız.dosyaları okuma iznine erişim için, not: doğru/yanlış, varsayılan: doğrudosya izinlerini yazmak için erişim için, not: doğru/yanlış, varsayılan: yanlışburada belirtilenleri gizleyecektir. Not: virgül (,) ile ayrılmış. Varsayılan: Boşlanguages/wp-file-manager-et.mo000064400000041602147361034410012436 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�g(�)'�)F�),&*6S*�*$�*��*�P+>�+;<,x,4�,1�,7�,$-9-F-'Y-�- �-�-�-�-.1.K.T.].f.y.�.	�.!�.�.�.//,/I/+h/	�/
�/�/�/�/�/�/�/-0A0[00m0�0��0K1&d1#�1"�19�1�2�2"�233!3�%3�4�4�4��4^�5{6��671787>7V7A_7=�7�7�78*8	J8T8f8w8Q8[�8!-9"O9r9w97|9(�9�9 �9':A:N:[: t:�:�:M�:K;g;+x; �;#�;2�;A<
^<i<}<�<0�<�<�<!�<==/=@=L=
[=#f=�=�=�=�="�=�=>#!>E>Z>6l>�>)�>�>!�>?4?=?[?x?~?#�?�?�?�? @$@>@^@|@�@$�@%�@(�@&A;A
GARA)aA�A��AWB(uBK�BN�BH9C}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 15:55+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: et
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
X-Poedit-SearchPath-1: .
* kõigi toimingute jaoks ja mõne toimingu lubamiseks võite mainida toimingu nime nagu, enabled_operations="upload,download". Märkus: eraldatud komaga (,). Vaikimisi: *-> See keelab konkreetsed kasutajad, pannes nende ID-d komadega eraldatuks (,). Kui kasutaja on keelatud, ei pääse see kasutajaliideses juurde wp-failihaldurile.-> Failihalduri teema. Vaikimisi: Light-> Faili muudetud või Loo kuupäeva vorming. Vaikimisi: d M, Y h: i A-> Failihalduri keel. Vaikimisi: English(en)-> Filemanageri kasutajaliidese vaade. Vaikimisi: gridTegevusToimingud valitud varukoopia (te) gaAdministraator saab piirata mis tahes kasutaja toiminguid. Peida ka failid ja kaustad ning saab määrata erinevatele kasutajatele erinevaid kaustateid.Administraator saab piirata mis tahes kasutajarollide toiminguid. Peida ka failid ja kaustad ning saab määrata erinevate kasutajate rollide jaoks erinevaid kaustade teid.Pärast prügikasti lubamist lähevad teie failid prügikasti.Pärast selle lubamist lähevad kõik failid meediumiteeki.Kõik tehtudKas soovite kindlasti valitud varukoopiad eemaldada?Kas soovite kindlasti selle varukoopia kustutada?Kas olete kindel, et soovite selle varukoopia taastada?Varundamise kuupäevVarunda koheVarundamisvalikud:Varukoopiad (klõpsake allalaadimiseks)Varukoopiad jäävad allaVarundamine töötab, palun ootaVarundamine edukalt kustutatud.Varundamine/taastamineVarukoopiad eemaldati edukalt!KeelduBrauser ja operatsioonisüsteem (HTTP_USER_AGENT)Osta PROOsta ProTühistaMuuda teemat siin:Klõpsake PRO ostmiseksKoodiredaktori vaadeKinnitageFailide või kaustade kopeeriminePraegu ei leitud varukoopiaid.Kustuta failidTumeAndmebaasi varundamineAndmebaasi varundamine on kuupäeval tehtud Andmebaasi varundamine tehtud.Andmebaasi varukoopia taastamine õnnestus.VaikimisiVaikimisi:KustutaTühistage valikLoobu sellest teatest.AnnetaFailide logide allalaadimineFailide allalaadimineKausta või faili kopeerimine või kloonimineRedigeeri failide logisidRedigeerige failiKas lubada failide üleslaadimine meediumiteeki?Kas lubada prügikast?Viga: varukoopiat ei saa taastada, kuna andmebaasi varukoopia on mahukas. Palun proovige eelistuste seadetes suurendada maksimaalset lubatud suurust.Olemasolevad varukoopiadVäljavõte arhiivist või ZIP-failistFailihaldur PRO - Código de accesoFailihaldur - süsteemi atribuudidFailihalduri juurtee, saate muuta vastavalt oma valikule.Failihalduril on mitme teemaga koodiredaktor. Koodiredaktori jaoks saate valida mis tahes teema. See kuvatakse mis tahes faili muutmisel. Samuti saate lubada koodiredaktori täisekraanrežiimi.Failitoimingute loend:Faili pole allalaadimiseks olemas.Failide varundamineHallAbiSiin on "test" kausta nimi, mis asub juurkataloogis, või võite anda alamkaustadele tee nagu "wp-content/plugins". Kui jätate tühjaks või tühjaks, pääseb see juurde kõikidele juurkataloogi kaustadele. Vaikimisi: juurkataloogSiin saab admin lubada failihalduri kasutamiseks juurdepääsu kasutajarollidele. Administraator saab määrata vaikepöörduskataloogi ja kontrollida ka failihalduri üleslaadimise suurust.Faili teaveVale turvakood.See võimaldab kõigil rollidel pääseda juurde failihaldurile esiotsas või seda saab lihtsalt kasutada teatud kasutajarollide jaoks, näiteks lubatud_roles="editor,author" (eraldatud komaga (,))See lukustub komades mainitud. saate lukustada rohkem kui ".php,.css,.js" jne. Vaikimisi: NullEsiküljel kuvatakse failihaldur. Kuid sellele pääseb juurde ainult administraator, kes juhib failihalduri sätete kaudu.Esiküljel kuvatakse failihaldur. Saate kõiki sätteid juhtida failihalduri seadetest. See töötab samamoodi nagu taustaprogrammi WP failihaldur.Viimane logisõnumValgusLogidTee kataloog või kaustTee failMaksimaalne lubatud suurus andmebaasi varukoopia taastamise ajal.Maksimaalne faili üleslaadimise suurus (upload_max_filesize)Mälupiirang (memory_limit)Varunduse ID puudub.Parameetri tüüp puudub.Nõutavad parameetrid puuduvad.Ei aitähLogisõnumit polePalke ei leitud!Märge:Märkus. Need on demo ekraanipildid. Ostke funktsioonid File Manager pro to Logs.Märkus. See on lihtsalt demo ekraanipilt. Seadete saamiseks palun ostke meie pro versioon.Varundamiseks pole midagi valitudVarundamiseks pole midagi valitud.OkeiOkeiTeised (kõik muud kataloogid, mis on leitud wp-sisust)Teiste varundamine on kuupäeval tehtud Teised varukoopiad tehtud.Teiste varundamine ebaõnnestus.Teiste varukoopia taastamine õnnestus.PHP versioonParameetrid:Kleepige fail või kaustSisestage palun e-posti aadress.Palun sisestage eesnimi.Palun sisestage perekonnanimi.Muutke seda hoolikalt, vale tee võib viia failihalduri pistikprogrammi alla.Kui saate varunduse taastamise ajal veateate, suurendage välja väärtust.PistikprogrammidPluginate varundamine on kuupäeval tehtud Pluginate varundamine on tehtud.Pluginate varundamine ebaõnnestus.Pistikprogrammide varukoopia taastamine õnnestus.Postituse maksimaalne faili üleslaadimise suurus (post_max_size)EelistusedPrivaatsuspoliitikaAvalik juurteeTAASTA FILISIDFailide ja kaustade eemaldamine või kustutamineNimetage fail või kaust ümberTaastamaTaastamine töötab, palun oodakeEDUSalvesta muudatusedSalvestamine ...Otsige asjuTurvaprobleem.Vali kõikValige kustutamiseks varukoopia(d)!SeadedSeaded - koodiredaktorSeaded - üldineSeaded - kasutaja piirangudSeaded - kasutajarollide piirangudSeaded on salvestatud.Lühikood – PROLihtne faili või kausta lõikamineSüsteemi atribuudidKasutustingimusedIlmselt õnnestus varundamine ja see on nüüd valmis.ThemesTeemade varundamine on kuupäeval tehtud Teemade varundamine on tehtud.Teemade varundamine ebaõnnestus.Teemade varundamine õnnestus.Aeg koheAeg maha (max_execution_time)Arhiivi või ZIP-i loomiseksTänaKASUTAMINE:Andmebaasi varukoopiat ei saa luua.Varukoopiat ei saa eemaldada!DB varundamist ei saa taastada.Teisi ei saa taastada.Pistikprogramme ei saa taastada.Teemasid ei saa taastada.Üleslaadimisi ei saa taastada.Failide logide üleslaadimineFaile üles laadimaÜleslaadimisedÜleslaadimine on kuupäeval tehtud Üleslaadimiste varukoopia on tehtud.Varundamise üleslaadimine ebaõnnestus.Üleslaadimiste varundamine õnnestus.KontrolligeVaata logiWP-failihaldurWP-failihaldur - varundamine / taastamineWP-failihalduri kaastööMeile meeldib uusi sõpru leida! Telli allpool ja lubame
    hoia teid kursis meie uusimate uute pistikprogrammide, värskenduste,
    vinged pakkumised ja mõned eripakkumised.Tere tulemast failihaldurisseTe pole salvestamiseks muudatusi teinud.failide lugemisõiguse saamiseks märkige: tõene/väär, vaikimisi: tõenefailide kirjutamisõiguste saamiseks märkus: tõene/väär, vaikimisi: väärsee peidab siin mainitud. Märkus: eraldatud komaga (,). Vaikimisi: nulllanguages/wp-file-manager-ru_RU.po000064400000104776147361034410013101 0ustar00# Translation of WP File Manager in Russian
# This file is distributed under the same license as the WP File Manager package.
msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"POT-Creation-Date: 2022-02-28 11:21+0530\n"
"PO-Revision-Date: 2022-03-01 18:25+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Резервная копия тем успешно восстановлена."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Невозможно восстановить темы."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Резервная копия загружена успешно."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Невозможно восстановить загрузки."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Остальные резервные копии успешно восстановлены."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Невозможно восстановить другие."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Резервная копия плагинов успешно восстановлена."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Невозможно восстановить плагины."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Резервная копия базы данных успешно восстановлена."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Все сделано"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Невозможно восстановить резервную копию БД."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Резервные копии успешно удалены!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Невозможно удалить резервную копию!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Резервное копирование базы данных выполнено на дату "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Резервное копирование плагинов выполнено на дату "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Резервное копирование тем выполнено на дату "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Загружает резервную копию, сделанную на дату "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Остальные резервные копии сделаны на дату "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Журналы"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Журналов не найдено!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Ничего не выбрано для резервного копирования"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Проблема безопасности."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Бэкап БД сделан."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Невозможно создать резервную копию базы данных."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Бэкап плагинов сделан."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Сбой резервного копирования плагинов."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Бэкап темы сделан."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Не удалось выполнить резервное копирование тем."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Загружается резервная копия."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Не удалось загрузить резервную копию."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Сделано резервное копирование других."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Сбой резервного копирования других."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Диспетчер файлов WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Настройки"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Предпочтения"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Свойства системы"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Шорткод - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Резервное восстановление"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Купить Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Пожертвовать"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Файл не существует для загрузки."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Неверный код безопасности."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Отсутствует идентификатор резервной копии."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Отсутствует тип параметра."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Отсутствуют обязательные параметры."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Ошибка: Невозможно восстановить резервную копию, так как резервная копия "
"базы данных имеет большой размер. Попробуйте увеличить Максимально "
"допустимый размер в настройках «Предпочтения»."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Выберите резервные копии для удаления!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Вы действительно хотите удалить выбранные резервные копии?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Резервное копирование выполняется, подождите"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Идет восстановление, подождите"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Ничего не выбрано для резервного копирования."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Диспетчер файлов WP - Резервное копирование / восстановление"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Параметры резервного копирования:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Резервное копирование базы данных"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Резервное копирование файлов"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Плагины"

#: inc/backup.php:71
msgid "Themes"
msgstr "Темы"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Загрузки"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Другое (любые другие каталоги, найденные внутри wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Сделать резервную копию сейчас"

#: inc/backup.php:89
msgid "Time now"
msgstr "Сделать резервную копию сейчас"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "УСПЕХ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Резервная копия успешно удалена."

#: inc/backup.php:102
msgid "Ok"
msgstr "ОК"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "УДАЛИТЬ ФАЙЛЫ"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Вы уверены, что хотите удалить эту резервную копию?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Отмена"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Подтверждать"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ВОССТАНОВИТЬ ФАЙЛЫ"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Вы уверены, что хотите восстановить эту резервную копию?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Последнее сообщение журнала"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Резервное копирование, по-видимому, выполнено успешно."

#: inc/backup.php:171
msgid "No log message"
msgstr "Нет сообщения журнала"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Существующие резервные копии"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Дата резервного копирования"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Данные резервного копирования (нажмите, чтобы загрузить)"

#: inc/backup.php:190
msgid "Action"
msgstr "Действие"

#: inc/backup.php:210
msgid "Today"
msgstr "Сегодня"

#: inc/backup.php:239
msgid "Restore"
msgstr "Восстановить"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Удалить"

#: inc/backup.php:241
msgid "View Log"
msgstr "Посмотреть журнал"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "В настоящее время резервных копий не найдено."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Действия с выбранными резервными копиями"

#: inc/backup.php:251
msgid "Select All"
msgstr "Выбрать все"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Отменить выбор"

#: inc/backup.php:254
msgid "Note:"
msgstr "Примечание:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Файлы резервных копий будут в"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Вклад диспетчера файлов WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Примечание. Это демонстрационные снимки экрана. Пожалуйста, купите File "
"Manager Pro для работы с журналами."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Нажмите, чтобы купить PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Купить PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Редактировать журналы файлов"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Скачать файлы журналов"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Загрузить файлы журналов"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Настройки сохранены."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Закрыть это уведомление."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Вы не вносили никаких изменений, которые нужно сохранить."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Общедоступный корневой путь"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Корневой путь файлового менеджера, вы можете изменить по своему усмотрению."

#: inc/root.php:59
msgid "Default:"
msgstr "По умолчанию:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Пожалуйста, измените это внимательно, неправильный путь может привести к "
"отказу плагина файлового менеджера."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Включить корзину?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "После включения корзины ваши файлы будут отправлены в корзину."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Разрешить загрузку файлов в медиатеку?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "После включения все файлы будут отправлены в медиа-библиотеку."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Максимально допустимый размер на момент восстановления резервной копии базы "
"данных."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Пожалуйста, увеличьте значение поля, если вы получаете сообщение об ошибке "
"во время восстановления из резервной копии."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Сохранить изменения"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Настройки - Общие"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Примечание. Это всего лишь демонстрационный снимок экрана. Чтобы получить "
"настройки, пожалуйста, купите нашу профессиональную версию."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Здесь администратор может предоставить доступ к ролям пользователей для "
"использования файлового менеджера. Администратор может установить папку "
"доступа по умолчанию, а также контролировать размер загрузки файлового "
"менеджера."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Настройки - Код-редактор"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"В файловом менеджере есть редактор кода с несколькими темами. Вы можете "
"выбрать любую тему для редактора кода. Он будет отображаться при "
"редактировании любого файла. Также вы можете разрешить полноэкранный режим "
"редактора кода."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Просмотр редактора кода"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Настройки - Ограничения для пользователей"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Администратор может ограничить действия любого пользователя. Также можно "
"скрыть файлы и папки и установить разные пути к папкам для разных "
"пользователей."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Настройки - Ограничения ролей пользователей"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Администратор может ограничить действия любой пользовательской роли. Также "
"можно скрыть файлы и папки и установить разные пути к папкам для разных "
"ролей пользователей."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Файловый менеджер - шорткод"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ИСПОЛЬЗОВАТЬ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Он покажет файловый менеджер на переднем конце. Вы можете контролировать все "
"настройки из настроек файлового менеджера. Он будет работать так же, как "
"бэкэнд Диспетчер файлов WP."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Он покажет файловый менеджер на переднем конце. Но только администратор "
"может получить к нему доступ и будет управлять настройками файлового "
"менеджера."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Параметры:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Это позволит всем ролям получить доступ к файловому менеджеру на внешнем "
"интерфейсе, или вы можете просто использовать для определенных ролей "
"пользователей, например, allow_roles=\"editor,author\" (разделенные запятой "
"(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Здесь «тест» — это имя папки, расположенной в корневом каталоге, или вы "
"можете указать путь для подпапок, например «wp-content/plugins». Если "
"оставить пустым или пустым, он будет иметь доступ ко всем папкам в корневом "
"каталоге. По умолчанию: корневой каталог"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"для доступа к разрешениям на запись файлов, примечание: true/false, по "
"умолчанию: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"для доступа к разрешению на чтение файлов, примечание: true/false, по "
"умолчанию: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"это скроет упомянутое здесь. Примечание: через запятую (,). По умолчанию: "
"ноль"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Это заблокирует указанное через запятую. вы можете заблокировать больше, "
"например \".php,.css,.js\" и т. д. По умолчанию: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* для всех операций и для разрешения какой-либо операции вы можете указать "
"имя операции, например, allow_operations=\"upload,download\". Примечание: "
"через запятую (,). По умолчанию: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Список файловых операций:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Сделать каталог или папку"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Сделать файл"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Переименовать файл или папку"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Дублировать или клонировать папку или файл"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Вставить файл или папку"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Запретить"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Сделать архив или zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Извлечь архив или заархивированный файл"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Копировать файлы или папки"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Просто вырезать файл или папку"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Редактировать файл"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Удалить или удалить файлы и папки"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Скачать файлы"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Загрузить файлы"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Искать вещи"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Информация о файле"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Помощь"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Он заблокирует определенных пользователей, просто поместив их "
"идентификаторы через запятую (,). Если пользователь заблокирован, он не "
"сможет получить доступ к файловому менеджеру wp через интерфейс пользователя."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr ""
"-> Просмотр пользовательского интерфейса Filemanager. По умолчанию: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Файл изменен или формат даты создания. По умолчанию: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Язык файлового менеджера. По умолчанию: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Тема файлового менеджера. По умолчанию: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Файловый менеджер - Свойства системы"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Версия PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Максимальный размер загружаемого файла (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Максимальный размер загружаемого файла (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Лимит памяти (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Время вышло (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Браузер и ОС (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Изменить тему здесь:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "По умолчанию"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Темный"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Свет"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "серый"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Добро пожаловать в файловый менеджер"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Мы любим заводить новых друзей! Подпишитесь ниже, и мы обещаем\n"
"    держать вас в курсе наших последних новых плагинов, обновлений,\n"
"    отличные предложения и несколько специальных предложений."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Пожалуйста, введите имя."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Пожалуйста, введите фамилию."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Пожалуйста, введите адрес электронной почты."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Проверять"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Нет, спасибо"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Условия использования"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Политика конфиденциальности"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Сохранение ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "ОК"

#~ msgid "Backup not found!"
#~ msgstr "Резервная копия не найдена!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Резервная копия успешно удалена!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ничего не выбрано для резервного "
#~ "копирования</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Проблема безопасности. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Резервное копирование базы данных "
#~ "выполнено.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Невозможно создать резервную копию базы "
#~ "данных.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Ничего не выбрано для резервного "
#~ "копирования</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не удалось выполнить резервное "
#~ "копирование плагинов.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Резервное копирование тем выполнено.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не удалось выполнить резервное "
#~ "копирование тем.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Резервное копирование загружено.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не удалось загрузить резервную копию.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Остальные резервные копии сделаны.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Остальные резервные копии не удались.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Все готово</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Пожалуйста, внесите пожертвование, чтобы сделать плагин более стабильным. "
#~ "Вы можете внести сумму на ваш выбор."

#~ msgid "Manage your WP files."
#~ msgstr "Управление файлами в WP."

#~ msgid "Extensions"
#~ msgstr "Расширения"
languages/wp-file-manager-hu_HU.po000064400000070776147361034410013057 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 10:30+0530\n"
"PO-Revision-Date: 2022-03-03 12:35+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: hu_HU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "A témák biztonsági mentése sikeresen visszaállt."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Nem lehet visszaállítani a témákat."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "A feltöltések biztonsági mentése sikeresen visszaállt."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Nem sikerült visszaállítani a feltöltéseket."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Mások biztonsági mentése sikeresen visszaállítva."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Nem sikerült visszaállítani a többieket."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "A beépülő modulok biztonsági mentése sikeresen visszaállt."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Nem sikerült visszaállítani a bővítményeket."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Az adatbázis biztonsági mentése sikeresen visszaállt."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Minden kész"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Nem sikerült visszaállítani a DB biztonsági másolatot."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "A biztonsági másolatok sikeresen eltávolítva!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Nem sikerült eltávolítani a biztonsági másolatot!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Az adatbázis mentése a dátummal megtörtént "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "A beépülő modulok biztonsági mentése a dátummal megtörtént "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "A témák mentése a dátummal megtörtént "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "A feltöltés dátuma megtörtént "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Mások biztonsági mentése a dátummal megtörtént "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Naplók"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nem található napló!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Semmi sincs kiválasztva biztonsági mentéshez"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Biztonsági probléma."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Adatbázis biztonsági mentés kész."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Nem lehet adatbázis biztonsági másolatot készíteni."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "A bővítmények biztonsági mentése megtörtént."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "A beépülő modulok biztonsági mentése nem sikerült."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "A témák biztonsági mentése elkészült."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "A témák biztonsági mentése nem sikerült."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "A feltöltések biztonsági mentése kész."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "A biztonsági mentés feltöltése sikertelen."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "A többi biztonsági mentés elkészült."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Mások biztonsági mentése nem sikerült."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP fájlkezelő"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Beállítások"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "preferenciák"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Rendszer tulajdonságai"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Rövid kód – PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Biztonsági mentés visszaállítása"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Vásároljon PRO-t"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Adományoz"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "A fájl nem létezik letöltésre."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Érvénytelen biztonsági kód."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Hiányzik a biztonsági azonosító."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Hiányzó paramétertípus."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Hiányzik a szükséges paraméter."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Hiba: Nem lehet visszaállítani a biztonsági másolatot, mert az adatbázis "
"biztonsági mentése nagy méretű. Kérjük, próbálja meg növelni a Maximális "
"megengedett méretet a Beállítások beállításainál."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Válassza ki a törölni kívánt biztonsági másolat(oka)t!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Biztosan el akarja távolítani a kijelölt biztonsági másolatokat?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "A biztonsági mentés fut, várjon"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "A visszaállítás fut, kérjük, várjon"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Semmi sincs kiválasztva biztonsági mentéshez."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP fájlkezelő - Biztonsági mentés / Visszaállítás"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Biztonsági mentési lehetőségek:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Adatbázis biztonsági mentése"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Fájlmentés"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Bővítmények"

#: inc/backup.php:71
msgid "Themes"
msgstr "Témák"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Feltöltések"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Egyéb (bármely más könyvtár megtalálható a wp-tartalomban)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Biztonsági mentés most"

#: inc/backup.php:89
msgid "Time now"
msgstr "Itt az idő"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SIKER"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "A biztonsági mentés sikeresen törölve."

#: inc/backup.php:102
msgid "Ok"
msgstr "Rendben"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "FÁJLOK TÖRLÉSE"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Biztosan törli ezt a biztonsági másolatot?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Megszünteti"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "megerősít"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "FÁJLOK VISSZAÁLLÍTÁSA"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Biztosan vissza akarja állítani ezt a biztonsági másolatot?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Utolsó naplóüzenet"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "A biztonsági mentés láthatóan sikerült, és most befejeződött."

#: inc/backup.php:171
msgid "No log message"
msgstr "Nincs naplóüzenet"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Meglévő biztonsági mentés (ek)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Biztonsági mentés dátuma"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Biztonsági adatok (kattintson a letöltéshez)"

#: inc/backup.php:190
msgid "Action"
msgstr "Akció"

#: inc/backup.php:210
msgid "Today"
msgstr "Ma"

#: inc/backup.php:239
msgid "Restore"
msgstr "visszaállítás"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Töröl"

#: inc/backup.php:241
msgid "View Log"
msgstr "Napló megtekintése"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Jelenleg nincsenek biztonsági másolatok."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Műveletek a kiválasztott biztonsági mentésekkel"

#: inc/backup.php:251
msgid "Select All"
msgstr "Mindet kiválaszt"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Törölje a kijelölést"

#: inc/backup.php:254
msgid "Note:"
msgstr "Jegyzet:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "A biztonsági mentési fájlok alatt lesznek"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP fájlkezelő hozzájárulás"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Megjegyzés: Ezek bemutató képernyőképek. Kérjük, vásárolja meg a File "
"Manager pro to Logs funkciókat."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Kattintson a PRO vásárlásához"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Vásároljon PRO-t"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Fájlnaplók szerkesztése"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Fájlnaplók letöltése"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Fájlnaplók feltöltése"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Beállítások elmentve."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Utasítsa el ezt az értesítést."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Nem végzett változtatásokat mentésre."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Nyilvános gyökérút"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"A File Manager gyökérútvonalát megváltoztathatja az Ön választása szerint."

#: inc/root.php:59
msgid "Default:"
msgstr "Alapértelmezett:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Kérjük, változtassa meg ezt gondosan, a rossz elérési út a fájlkezelő "
"beépülő modul lefutásához vezethet."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Engedélyezi a kukát?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "A kuka engedélyezése után a fájlok a kuka mappába kerülnek."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Engedélyezi a fájlok feltöltését a médiatárba?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Ennek engedélyezése után az összes fájl a média könyvtárba kerül."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maximális megengedett méret az adatbázis biztonsági mentésének "
"visszaállítása idején."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Kérjük, növelje a mező értékét, ha hibaüzenetet kap a biztonsági mentés "
"visszaállítása során."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Változtatások mentése"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Beállítások - Általános"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Megjegyzés: Ez csak egy bemutató képernyőkép. A beállítások megszerzéséhez "
"kérjük, vásárolja meg a pro verziót."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Itt az adminisztrátor hozzáférést adhat a felhasználói szerepkörökhöz a "
"fájlkezelő használatához. Az adminisztrátor beállíthatja az alapértelmezett "
"hozzáférési mappát, és szabályozhatja a fájlkezelő feltöltési méretét is."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Beállítások - Kódszerkesztő"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"A File Manager rendelkezik több témájú kódszerkesztővel. Bármely témát "
"kiválaszthat a kódszerkesztő számára. Bármely fájl szerkesztésekor "
"megjelenik. Engedélyezheti a kódszerkesztő teljes képernyős módját is."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kódszerkesztő nézet"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Beállítások - Felhasználói korlátozások"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Az adminisztrátor korlátozhatja bármely felhasználó műveleteit. A fájlokat "
"és mappákat is elrejtheti, és különböző - különböző mappák elérési útjait "
"állíthatja be a különböző felhasználók számára."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Beállítások - Felhasználói szerepkorlátozások"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Az adminisztrátor korlátozhatja bármely felhasználói szerepkör műveleteit. A "
"fájlokat és mappákat is elrejtheti, és különböző - különböző mappák elérési "
"útjait állíthatja be a különböző felhasználói szerepkörökhöz."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Fájlkezelő - rövid kód"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "HASZNÁLAT:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Az előlapon megjelenik a fájlkezelő. Az összes beállítást a fájlkezelő "
"beállításaiból vezérelheti. Ugyanúgy fog működni, mint a háttér WP "
"fájlkezelője."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Az előlapon megjelenik a fájlkezelő. De csak a rendszergazda férhet hozzá, "
"és a fájlkezelő beállításaiból irányíthatja."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Paraméterek:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Lehetővé teszi, hogy minden szerepkör hozzáférjen a fájlkezelőhöz a "
"kezelőfelületen, vagy egyszerűen használható bizonyos felhasználói "
"szerepkörökhöz, mint például a enabled_roles=\"editor,author\" (vesszővel "
"(,) elválasztva)"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Itt a \"teszt\" a gyökérkönyvtárban található mappa neve, vagy megadhatja az "
"almappák elérési útját, például \"wp-content/plugins\". Ha üresen hagyja "
"vagy üresen hagyja, akkor a gyökérkönyvtár összes mappájához hozzáfér. "
"Alapértelmezés: Gyökérkönyvtár"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"a fájlok írási engedélyeihez, megjegyzés: igaz/hamis, alapértelmezett: hamis"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "a fájlok olvasási engedélyéhez: igaz/hamis, alapértelmezett: igaz"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"itt megemlítve el fog rejtőzni. Megjegyzés: vesszővel (,) elválasztva. "
"Alapértelmezés: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"A vesszővel említett zárolás lesz. zárolhat többet, mint például \".php,."
"css, .js\" stb. Alapértelmezés: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* minden művelethez és bizonyos műveletek engedélyezéséhez megadhatja a "
"művelet nevét, mint például, enabled_operations=\"upload,download\". "
"Megjegyzés: vesszővel (,) elválasztva. Alapértelmezett: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Fájlműveletek listája:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Készítsen könyvtárat vagy mappát"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Készítsen könyvtárat vagy mappát"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Nevezzen át egy fájlt vagy mappát"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Másoljon vagy klónozzon egy mappát vagy fájlt"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Illesszen be egy fájlt vagy mappát"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Tilalom"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Archívum vagy zip készítéséhez"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Kivonat archív vagy tömörített fájl"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Fájlok vagy mappák másolása"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Egyszerű fájl vagy mappa kivágása"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Fájl szerkesztése"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Fájl szerkesztése"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Fájlok letöltése"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Fájlok feltöltése"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Keressen dolgokat"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "A fájl adatai"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Segítség"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Megtiltja az egyes felhasználókat azáltal, hogy csak vesszővel "
"elválasztott azonosítót tesz ((). Ha a felhasználó Ban, akkor nem fog tudni "
"hozzáférni a wp fájlkezelőhöz a kezelőfelületen."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI nézet. Alapértelmezett: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> File Modified vagy Create date formátum. Alapértelmezés: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Fájlkezelő nyelve. Alapértelmezett: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Fájlkezelő téma. Alapértelmezett: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Fájlkezelő - Rendszer tulajdonságai"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP verzió"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "A fájl maximális feltöltési mérete (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "A fájl maximális feltöltési mérete (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Memória korlát (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Időtúllépés (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Böngésző és operációs rendszer (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Téma módosítása itt:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Alapértelmezett"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Sötét"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Fény"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "szürke"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Üdvözöljük a Fájlkezelőben"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Szeretünk új barátokat szerezni! Iratkozzon fel alább, és megígérjük\n"
"    naprakész legyen a legújabb új beépülő moduljainkkal,\n"
"    fantasztikus ajánlatok és néhány különleges ajánlat."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Kérjük, adja meg a keresztnevet."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Kérjük, adja meg a vezetéknevet."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Kérjük, adja meg az e-mail címet."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Ellenőrizze"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nem köszönöm"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Szolgáltatás feltételei"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Adatvédelmi irányelvek"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Megtakarítás..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "rendben"

#~ msgid "Backup not found!"
#~ msgstr "A biztonsági mentés nem található!"

#~ msgid "Backup removed successfully!"
#~ msgstr "A biztonsági másolat eltávolítása sikeres volt!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Semmi sem lett kiválasztva biztonsági "
#~ "mentésre</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Biztonsági probléma.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Az adatbázis biztonsági mentése kész. "
#~ "</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nem sikerült létrehozni az adatbázis "
#~ "biztonsági mentését.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">A beépülő modulok biztonsági mentése "
#~ "kész.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">A beépülő modulok biztonsági mentése nem "
#~ "sikerült.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">A témák mentése kész.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">A témák mentése nem sikerült.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Feltöltés kész.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nem sikerült feltölteni a biztonsági "
#~ "mentést. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Mások mentése kész.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Mások mentése nem sikerült.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Minden kész</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "A WP-fájlok kezelése."

#~ msgid "Extensions"
#~ msgstr "Extensions"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Kérjük, adj hozzá néhány adományt, hogy stabilabb legyen a plugin. Meg "
#~ "tudod fizetni az Ön által választott összeget."
languages/wp-file-manager-hr.mo000064400000043402147361034410012437 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&��(�D)+�)G(*4p*;�*�*(�*�+��+Bv,>�,
�,@-<D-:�-�-!�-�-4.)E.%o.)�.�.)�./!/
2/
=/H/Q/i/�/	�/�/3�/�/000+0-\06�0�0�0	�0�0�01	1&1-71e1~11�1�1��1�2(�2 �2&�2M3�^3<4#V4z4�4�4��4��5o6�6��6rj7��7�t8#9>9F9M9k9T|9?�9$:6:S:n:�:�: �:
�:V�:^-;)�;*�;�;�;F�;,6<%c<�</�<�<
�<�<==)=h:=l�=>5>(M>+v>1�>@�>?$?:?O?'_?�?�?"�?�?�?
�?�?@@.(@W@`@{@#�@'�@�@�@'A,A=A5UA�A'�A$�A'�A-B3B"CBfB�B
�B6�B(�B,�B C<CZCuC�C�C	�C-�C&�C)D2ID	|D�D�D6�D �D�E�E5�EPFReFI�F}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 12:32+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: hr
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* za sve operacije i za dopuštanje neke operacije možete spomenuti naziv operacije kao, dozvoljeno_operacije="upload,download". Napomena: odvojeno zarezom (,). Zadano: *-> Zabranit će određenim korisnicima stavljanjem njihovih ID-ova razdvojenih zarezima (,). Ako je korisnik Ban, tada neće moći pristupiti upravitelju datoteka wp s prednje strane.-> Tema Upravitelja datoteka. Zadano: Light-> Izmijenjena datoteka ili Stvori format datuma. Zadano: d M, Y h: i A-> Jezik upravitelja datotekama. Zadano: English(en)-> Prikaz korisničkog sučelja Filemanager-a. Zadano: gridAkcijskiRadnje po odabranim sigurnosnim kopijamaAdministrator može ograničiti radnje bilo kojeg korisnika. Također možete sakriti datoteke i mape i možete postaviti različite putanje mapa za različite korisnike.Administrator može ograničiti radnje bilo koje korisničke uloge. Također možete sakriti datoteke i mape i možete postaviti različite putanje mapa za različite uloge korisnika.Nakon omogućavanja otpada, vaše će datoteke ići u mapu smeća.Nakon što ovo omogućite, sve će datoteke ići u medijateku.Sve GotovoJeste li sigurni da želite ukloniti odabrane sigurnosne kopije?Jeste li sigurni da želite izbrisati ovu sigurnosnu kopiju?Jeste li sigurni da želite vratiti ovu sigurnosnu kopiju?Datum sigurnosne kopijeNapravite sigurnosnu kopiju odmahOpcije sigurnosne kopije:Sigurnosna kopija podataka (kliknite za preuzimanje)Datoteke za sigurnosne kopije bit će podIzrada sigurnosne kopije, pričekajteSigurnosna kopija uspješno je izbrisana.Sigurnosno kopiranje/vraćanjeSigurnosne kopije uspješno su uklonjene!ZabranaPreglednik i OS (HTTP_USER_AGENT)Kupite PROKupite ProOtkazatiPromijenite temu ovdje:Kliknite za kupnju PROPrikaz uređivača kodaPotvrditeKopirajte datoteke ili mapeTrenutno nije pronađena nijedna sigurnosna kopija.OBRIŠI DATOTEKEMračnoSigurnosna kopija baze podatakaIzrada sigurnosne kopije baze podataka na datum Izvršeno sigurnosno kopiranje baze podataka.Sigurnosna kopija baze podataka uspješno je vraćena.ZadanoZadano:IzbrisatiPoništi odabirOdbaci ovu obavijest.darovatiPreuzmite zapisnike datotekaPreuzmi datotekeDuplicirajte ili klonirajte mapu ili datotekuUredi zapisnike datotekaUredite datotekuOmogućiti prijenos datoteka u biblioteku medija?Omogućiti otpad?Pogreška: nije moguće vratiti sigurnosnu kopiju jer je sigurnosna kopija baze podataka velika. Pokušajte povećati maksimalnu dopuštenu veličinu u postavkama Preference.Postojeće sigurnosne kopijeIzdvojite arhivu ili arhiviranu datotekuUpravitelj datoteka - kratki kodUpravitelj datoteka - Svojstva sustavaKorijenski put upravitelja datoteka, možete promijeniti prema vašem izboru.Upravitelj datoteka ima uređivač koda s više tema. Za uređivač koda možete odabrati bilo koju temu. Prikazat će se kad uredite bilo koju datoteku. Također možete dopustiti način cijelog zaslona uređivača koda.Popis operacija datoteka:Datoteka ne postoji za preuzimanje.Sigurnosna kopija datotekaSivaPomoziteOvdje je "test" naziv mape koja se nalazi u korijenskom direktoriju, ili možete dati put za podmape poput "wp-content/plugins". Ako ostavite prazno ili prazno, pristupit će svim mapama u korijenskom direktoriju. Zadano: korijenski direktorijOvdje administrator može dati pristup korisničkim ulogama za korištenje upravitelja datoteka. Administrator može postaviti zadanu mapu za pristup i također kontrolirati veličinu prijenosa upravitelja datoteka.Podaci o datoteciNevažeći sigurnosni kod.Omogućit će svim ulogama pristup upravitelju datoteka na prednjem kraju ili možete jednostavno koristiti za određene korisničke uloge kao što je dopušteno_roles="urednik,autor" (odvojeno zarezom(,))Zaključat će se spomenuto u zarezima. možete zaključati više poput ".php,.css,.js" itd. Zadana postavka: NullNa prednjem kraju će se prikazati upravitelj datoteka. Ali samo mu administrator može pristupiti i kontrolirat će iz postavki upravitelja datoteka.Na prednjem kraju će se prikazati upravitelj datoteka. Možete kontrolirati sve postavke iz postavki upravitelja datoteka. Radit će isto kao backend WP upravitelj datoteka.Posljednja poruka dnevnikaSvjetloTrupciNapravite direktorij ili mapuNapravi datotekuMaksimalna dopuštena veličina u vrijeme vraćanja sigurnosne kopije baze podataka.Maksimalna veličina za prijenos datoteke (upload_max_filesize)Ograničenje memorije (memory_limit)Nedostaje sigurnosna kopija.Nedostaje vrsta parametra.Nedostaju potrebni parametri.Ne hvalaNema poruke dnevnikaNije pronađen nijedan zapisnik!Bilješka:Napomena: Ovo su demo snimke zaslona. Molimo kupite File Manager pro za funkcije Logs.Napomena: Ovo je samo demo snimak zaslona. Da biste dobili postavke, kupite našu pro verziju.Ništa nije odabrano za sigurnosnu kopijuNišta nije odabrano za sigurnosnu kopiju.u reduU reduOstalo (Bilo koji drugi direktorij koji se nalazi unutar wp-sadržaja)Ostale sigurnosne kopije izvršene na datum Ostala sigurnosna kopija napravljena.Others backup failed.Ostale sigurnosne kopije uspješno su vraćene.PHP verzijaParametri:Zalijepite datoteku ili mapuUnesite adresu e-pošte.Unesite ime.Unesite prezime.Molimo pažljivo promijenite ovo, pogrešan put može dovesti do pada dodatka za upravljanje datotekama.Molimo povećajte vrijednost polja ako dobijete poruku o pogrešci u vrijeme vraćanja iz sigurnosne kopije.DodaciIzrada sigurnosne kopije dodataka izvršena na datum Dovršeno sigurnosno kopiranje dodataka.Sigurnosno kopiranje dodataka nije uspjelo.Sigurnosna kopija dodataka uspješno je vraćena.Objavi maksimalnu veličinu za prijenos datoteke (post_max_size)preferencijamaPravila o privatnostiJavni korijenski putVRAĆI DATOTEKEUklonite ili izbrišite datoteke i mapePreimenujte datoteku ili mapuVratitiVraćanje je u tijeku, pričekajteUSPJEHSpremi promjeneSpremanje ...Pretražite stvariSigurnosno pitanje.Odaberi sveOdaberite sigurnosnu(e) kopiju(e) za brisanje!PostavkePostavke - Uređivač kodaPostavke - OpćenitoPostavke - Korisnička ograničenjaPostavke - Ograničenja uloga korisnikaPostavke spremljene.Kratki kod – PROJednostavno izrežite datoteku ili mapuSvojstva sustavaUvjeti pružanja uslugeSigurnosna kopija očito je uspjela i sada je gotova.TemeIzrada sigurnosne kopije tema na datum Izvršeno sigurnosno kopiranje tema.Sigurnosno kopiranje tema nije uspjelo.Sigurnosna kopija tema uspješno je vraćena.Vrijeme je sadaIstek vremena (max_execution_time)Da napravite arhivu ili zipDanasKORISTITI:Nije moguće stvoriti sigurnosnu kopiju baze podataka.Nije moguće ukloniti sigurnosnu kopiju!Nije moguće vratiti sigurnosnu kopiju DB-a.Nije moguće vratiti druge.Nije moguće vratiti dodatke.Nije moguće vratiti teme.Prijenos nije moguće vratiti.Učitaj zapisnike datotekaUčitaj datotekePrijenosiPrenosi sigurnosne kopije izvršene na datum Sigurnosna kopija prijenosa je gotova.Sigurnosna kopija prijenosa nije uspjela.Sigurnosna kopija prijenosa uspješno je vraćena.PotvrditePrikaži zapisnikWP upravitelj datotekaWP upravitelj datoteka - Sigurnosna kopija / VraćanjeDoprinos WP upravitelja datotekaVolimo sklapati nova prijateljstva! Pretplatite se u nastavku i obećavamo
    biti u toku s našim najnovijim novim dodacima, ažuriranjima,
    sjajne ponude i nekoliko posebnih ponuda.Dobrodošli u File ManagerNiste unijeli nikakve promjene koje želite spremiti.za dopuštenje za pristup čitanju datoteka, napomena: true/false, default: trueza pristup dopuštenjima za pisanje datoteka, napomena: true/false, default: falsesakriti će ovdje spomenuto. Napomena: odvojeno zarezom (,). Zadano: Nulllanguages/wp-file-manager-vi.mo000064400000047272147361034410012455 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&Y(
b)5m*Y�*B�*>@++:�+��+��,^�-c."r.M�.?�.G#/k/
z/�/1�/!�/3�/&&0"M0&p0�07�0�0�0
1$1!61(X1�1!�16�1�1�12@2#_2=�2
�2�2	�2�2�233=3>M3�3�33�3�3�4 �4(�4$54C5ix5M�507-L7z7	�7�7?�77�8:"-:P:�f;��;��<"�=
�=
�="�=>c)>?�>&�>�>?&&?M?!^?#�?	�?��?�/@-�@.�@
(A
3AS>AB�A*�A4B45BjB{B�B$�B�B�B��B~�C	D2DHD$cD5�DK�D
EE /EPE*lE#�E�E7�EFF#F4FLFaF(sF�F&�F�F(�F<GIG`G0qG�G�GK�G%H71H&iH)�H:�H�H&I+)IUI^I7kI!�I,�I1�I&$J&KJ%rJ�J�J
�J<�J%
K(3K9\K�K�K�K4�K,L�1L71MJiMK�MINoJN}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 13:08+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: Vietnamese
Language: vi
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* Đối với tất cả các hoạt động và để cho phép một số hoạt động, bạn có thể đề cập đến tên hoạt động như, allow_operations = "tải lên, tải xuống". Lưu ý: phân cách bằng dấu phẩy (,). Mặc định: *-> Nó sẽ cấm những người dùng cụ thể bằng cách chỉ đặt id của họ được phân tách bằng dấu phẩy (,). Nếu người dùng là Ban thì họ sẽ không thể truy cập trình quản lý tệp wp trên giao diện người dùng.-> Chủ đề quản lý tệp. Mặc định: Light-> Đã sửa đổi tệp hoặc tạo định dạng ngày. Mặc định: d M, Y h:i A-> Ngôn ngữ trình quản lý tệp. Mặc định: English(en)-> Giao diện người dùng Filemanager. Mặc định: gridHoạt độngCác hành động trên (các) bản sao lưu đã chọnQuản trị viên có thể hạn chế hành động của bất kỳ người dùng nào. Cũng ẩn các tệp và thư mục và có thể đặt các đường dẫn thư mục khác nhau cho những người dùng khác nhau.Quản trị viên có thể hạn chế các hành động của bất kỳ người dùng nào. Đồng thời ẩn các tệp và thư mục và có thể đặt các đường dẫn thư mục khác nhau cho các vai trò người dùng khác nhau.Sau khi bật thùng rác, các tệp của bạn sẽ chuyển đến thư mục thùng rác.Sau khi bật điều này, tất cả các tệp sẽ chuyển đến thư viện phương tiện.Tất cả đã được làm xongBạn có chắc chắn muốn xóa (các) bản sao lưu đã chọn không?Bạn có chắc chắn muốn xóa bản sao lưu này không?Bạn có chắc chắn muốn khôi phục bản sao lưu này không?Ngày sao lưuSao lưu ngayTùy chọn sao lưu:Sao lưu dữ liệu (nhấp để tải xuống)Các tệp sao lưu sẽ đượcQuá trình sao lưu đang chạy, vui lòng đợiĐã xóa thành công bản sao lưu.Phục hồi dữ liệu đã lưuĐã xóa bản sao lưu thành công!Lệnh cấmTrình duyệt và hệ điều hành (HTTP_USER_AGENT)Mua CHUYÊN NGHIỆPMua chuyên nghiệpHuỷ bỏThay đổi chủ đề tại đây:Nhấp để mua CHUYÊN NGHIỆPChế độ xem trình soạn thảo mãXác nhậnSao chép tệp hoặc thư mụcHiện tại không tìm thấy (các) bản sao lưu.XÓA CÁC TẬP TINTốiSao lưu cơ sở dữ liệuSao lưu cơ sở dữ liệu được thực hiện vào ngày Đã sao lưu cơ sở dữ liệu.Đã khôi phục thành công sao lưu cơ sở dữ liệu.Mặc địnhMặc định:Xóa bỏBỏ chọnLoại bỏ thông báo này.Quyên gópTải xuống nhật ký tệpTải tập tinNhân bản hoặc sao chép một thư mục hoặc tệp tinChỉnh sửa nhật ký tệpChỉnh sửa tệpBật Tải tệp lên Thư viện Phương tiện?Bật Thùng rác?Lỗi: Không thể khôi phục bản sao lưu vì bản sao lưu cơ sở dữ liệu có dung lượng lớn. Vui lòng cố gắng tăng kích thước tối đa cho phép từ cài đặt Tùy chọn.(Các) bản sao lưu hiện cóGiải nén tệp lưu trữ hoặc nénTrình quản lý tệp - Mã ngắnTrình quản lý tệp - Thuộc tính hệ thốngĐường dẫn gốc của File Manager, bạn có thể thay đổi tùy theo lựa chọn của mình.Trình quản lý tệp có một trình chỉnh sửa mã với nhiều chủ đề. Bạn có thể chọn bất kỳ chủ đề nào cho trình soạn thảo mã. Nó sẽ hiển thị khi bạn chỉnh sửa bất kỳ tệp nào. Ngoài ra, bạn có thể cho phép chế độ toàn màn hình của trình soạn thảo mã.Danh sách thao tác tệp:Tệp không tồn tại để tải xuống.Sao lưu tệpMàu xámCứu giúpỞ đây "test" là tên của thư mục nằm trên thư mục gốc, hoặc bạn có thể cung cấp đường dẫn cho các thư mục con như "wp-content / plugins". Nếu để trống hoặc để trống nó sẽ truy cập tất cả các thư mục trên thư mục gốc. Mặc định: Thư mục gốcTại đây, quản trị viên có thể cấp quyền truy cập vào các vai trò của người dùng để sử dụng trình quản lý tệp. Quản trị viên có thể đặt Thư mục Truy cập Mặc định và cũng có thể kiểm soát kích thước tải lên của trình quản lý tệp.Thông tin về tệpMã bảo mật không hợp lệ.Nó sẽ cho phép tất cả các vai trò truy cập trình quản lý tệp trên giao diện người dùng hoặc Bạn có thể sử dụng đơn giản cho các vai trò người dùng cụ thể như allow_roles = "editor, author" (phân cách bằng dấu phẩy (,))Nó sẽ khóa được đề cập trong dấu phẩy. bạn có thể khóa nhiều hơn như ".php, .css, .js", v.v. Mặc định: NullNó sẽ hiển thị trình quản lý tệp trên giao diện người dùng. Nhưng chỉ Quản trị viên mới có thể truy cập nó và sẽ kiểm soát từ cài đặt trình quản lý tệp.Nó sẽ hiển thị trình quản lý tệp trên giao diện người dùng. Bạn có thể kiểm soát tất cả các cài đặt từ cài đặt trình quản lý tệp. Nó sẽ hoạt động giống như Trình quản lý tệp WP phụ trợ.Tin nhắn nhật ký cuối cùngÁnh sángNhật kýTạo thư mục hoặc thư mụcTạo tệpKích thước tối đa cho phép tại thời điểm khôi phục sao lưu cơ sở dữ liệu.Kích thước tải lên tệp tối đa (upload_max_filesize)Giới hạn bộ nhớ (memory_limit)Thiếu id dự phòng.Thiếu loại tham số.Thiếu các thông số bắt buộc.Không, cám ơnKhông có thông báo nhật kýKhông tìm thấy nhật ký nào!Ghi chú:Lưu ý: Đây là những ảnh chụp màn hình demo. Vui lòng mua File Manager chuyên nghiệp cho các chức năng Logs.Lưu ý: Đây chỉ là một ảnh chụp màn hình demo. Để có được cài đặt, vui lòng mua phiên bản chuyên nghiệp của chúng tôi.Không có gì được chọn để sao lưuKhông có gì được chọn để sao lưu.đồng ýĐồng ýKhác (Bất kỳ thư mục nào khác được tìm thấy bên trong wp-content)Sao lưu những người khác được thực hiện vào ngày Những người khác đã sao lưu xong.Sao lưu những người khác không thành công.Đã khôi phục thành công bản sao lưu khác.Phiên bản PHPThông số:Dán tệp hoặc thư mụcVui lòng nhập địa chỉ email.Vui lòng nhập Tên.Vui lòng nhập Họ.Vui lòng thay đổi điều này một cách cẩn thận, đường dẫn sai có thể dẫn đến plugin trình quản lý tệp đi xuống.Vui lòng tăng giá trị trường nếu bạn nhận được thông báo lỗi tại thời điểm khôi phục sao lưu.bổ sungSao lưu plugin được thực hiện vào ngày Đã sao lưu plugin xong.Sao lưu plugin không thành công.Đã khôi phục bản sao lưu plugin thành công.Kích thước tải lên tệp tối đa của bài đăng (post_max_size)Sở thíchChính sách bảo mậtĐường dẫn gốc công khaiPHỤC HỒI CÁC TẬP TINXóa hoặc xóa các tệp và thư mụcĐổi tên tệp hoặc thư mụcKhôi phụcQuá trình khôi phục đang chạy, vui lòng đợiSỰ THÀNH CÔNGLưu thay đổiTiết kiệm...Tìm kiếm mọi thứVấn đề an ninh.Chọn tất cảChọn (các) bản sao lưu để xóa!Cài đặtCài đặt - Trình chỉnh sửa mãCài đặt - ChungCài đặt - Hạn chế Người dùngCài đặt - Hạn chế về vai trò của người dùngĐã lưu cài đặt.Mã ngắn - PROCắt một tệp hoặc thư mục đơn giảnThuộc tính hệ thốngĐiều khoản dịch vụBản sao lưu dường như đã thành công và hiện đã hoàn tất.Chủ đềSao lưu chủ đề được thực hiện vào ngày Đã hoàn tất sao lưu chủ đề.Sao lưu chủ đề không thành công.Đã khôi phục bản sao lưu chủ đề thành công.Hiện tạiThời gian chờ (max_execution_time)Để tạo một kho lưu trữ hoặc zipHôm naySỬ DỤNG:Không thể tạo bản sao lưu cơ sở dữ liệu.Không thể xóa bản sao lưu!Không thể khôi phục bản sao lưu DB.Không thể khôi phục những người khác.Không thể khôi phục các plugin.Không thể khôi phục chủ đề.Không thể khôi phục tải lên.Tải lên nhật ký tệpTải tệp lênTải lênTải lên bản sao lưu được thực hiện vào ngày Đã hoàn tất tải lên sao lưu.Sao lưu tải lên không thành công.Đã khôi phục bản sao lưu tải lên thành công.Kiểm chứngXem nhật kíTrình quản lý tệp WPTrình quản lý tệp WP - Sao lưu / Khôi phụcĐóng góp của Trình quản lý tệp WPChúng tôi thích kết bạn mới! Đăng ký bên dưới và chúng tôi hứa sẽ
    luôn cập nhật cho bạn các plugin, bản cập nhật mới nhất của chúng tôi,
    giao dịch tuyệt vời và một vài ưu đãi đặc biệt.Chào mừng bạn đến với Trình quản lý tệpBạn chưa thực hiện bất kỳ thay đổi nào để được lưu.để truy cập quyền đọc tệp, lưu ý: true / false, default: trueđể truy cập quyền ghi tệp, lưu ý: true / false, default: falsenó sẽ ẩn được đề cập ở đây. Lưu ý: phân cách bằng dấu phẩy (,). Mặc định: Nulllanguages/wp-file-manager-pt_PT.mo000064400000043317147361034410013061 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&h�&�(��(2�)E�):&*Aa*�*(�*��*��+KY,N�,
�,@�,+@--l-�-�-�-$�-!�-/.G.e.}.	�.1�.
�.
�.�.�.	/#!/E/N/0h/�/�/�/'�/�/00C0K0T0\0i0�0�0�0'�0�0�041@1�M12% 2#F21j2V�2
�2 �3$4D4W4]4�c4�`5@6 X6�y6nV7��7�c899V9
Z9e9
9R�9:�9!:=:S:#o:�:�:�:
�:g�:}H;�;�;<<F<N<m<�<'�<�<�<�<�<"=3=oG=i�=!>!)>K>d>*�>@�>
�>�>?-?$@?e?	�?,�?�?�?�?�?�?@!@=@#J@n@*�@6�@�@A#A4ALA?_A�A�A�A�A'�A
B!(BJBgBlB4rB�B0�B�B)C<CXC%vC�C�C �C�C�C)D	BDLDTD(dD,�D��D$xE2�ET�EX%FP~F}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: 
PO-Revision-Date: 2022-02-28 11:13+0530
Last-Translator: 
Language-Team: 
Language: pt
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n > 1);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr;esc_html
X-Poedit-SearchPath-0: .
* para todas as operações e para permitir alguma operação, você pode mencionar o nome da operação como, allowed_operations="upload,download". Nota: separados por vírgula(,). Predefinição: *->  Ele irá banir usuários específicos apenas colocando seus ids separados por vírgulas (,). Se o usuário for Ban, então ele não será capaz de acessar o gerenciador de arquivos wp no front end.-> Tema do gerenciador de arquivos. Padrão: Light-> Arquivo modificado ou Criar formato de data. Padrão: d M, Y h:i A-> Idioma do gerenciador de arquivos. Padrão: English(en)-> Visualização da IU do gerenciador de arquivos. Padrão: gridAçaoAções após backup (s) selecionado (s)O administrador pode restringir as ações de qualquer usuário. Também oculta arquivos e pastas e pode definir diferentes - caminhos de pastas diferentes para usuários diferentes.O administrador pode restringir as ações de qualquer função de usuário. Também oculta arquivos e pastas e pode definir diferentes - caminhos de pastas diferentes para funções de usuários diferentes.Depois de habilitar a lixeira, seus arquivos irão para a pasta da lixeira.Depois de habilitar isso, todos os arquivos irão para a biblioteca de mídia.Tudo feitoTem certeza que deseja remover o (s) backup (s) selecionado (s)?Tem certeza que deseja excluir este backup?Tem certeza que deseja restaurar este backup?Data de BackupFaça backup agoraOpções de backup:Dados de backup (clique para baixar)Os arquivos de backup estarão emO backup está em execução, por favor aguardeBackup excluído com sucesso.Restauração de backupBackups removidos com sucesso!banimentoNavegador e sistema operacional (HTTP_USER_AGENT)Compre PROCompre ProCancelarMude o tema aqui:Clique para comprar PROVisualização do editor de códigoconfirmeCopiar arquivos ou pastasAtualmente nenhum (s) backup (s) encontrado (s).DELETAR ARQUIVOSEscuraBackup de banco de dadosBackup de banco de dados feito na data Backup de banco de dados feito.Backup do banco de dados restaurado com sucesso.PadrãoPadrão:ExcluirDeselecionarDescartar essa notificação.DoarBaixar registros de arquivosBaixar arquivosDuplicar ou clonar uma pasta ou arquivoEditar Arquivos de LogsEditar um arquivoAtivar upload de arquivos para biblioteca de mídia?Ativar Lixo?Erro: não é possível restaurar o backup porque o backup do banco de dados é muito grande. Por favor, tente aumentar o tamanho máximo permitido nas configurações de Preferências.Backup (s) existente (s)Extrair arquivo ou arquivo compactadoGerenciador de Arquivos - ShortcodeGerenciador de arquivos - Propriedades do sistemaCaminho raiz do gerenciador de arquivos, você pode alterar de acordo com sua escolha.O Gerenciador de arquivos possui um editor de código com vários temas. Você pode selecionar qualquer tema para o editor de código. Ele será exibido quando você editar qualquer arquivo. Além disso, você pode permitir o modo de tela cheia do editor de código.Lista de operações de arquivo:O arquivo não existe para download.Backup de arquivoscinzaAjudaAqui "teste" é o nome da pasta que está localizada no diretório raiz, ou você pode fornecer o caminho para subpastas como "wp-content/plugins". Se deixar em branco ou vazio, ele acessará todas as pastas no diretório raiz. Padrão: diretório raizAqui, o administrador pode dar acesso às funções do usuário para usar o gerenciador de arquivos. O administrador pode definir a pasta de acesso padrão e também controlar o tamanho de upload do gerenciador de arquivos.Informação do arquivoCódigo de segurança inválido.Ele permitirá que todas as funções acessem o gerenciador de arquivos no front-end ou você pode usar simplesmente para funções de usuário específicas, como allowed_roles="editor,author" (separado por vírgula (,))Ele irá bloquear mencionado entre vírgulas. você pode bloquear mais como ".php,.css,.js" etc. Padrão: NullEle mostrará o gerenciador de arquivos no front-end. Mas apenas o Administrador pode acessá-lo e controlará as configurações do gerenciador de arquivos.Ele mostrará o gerenciador de arquivos no front-end. Você pode controlar todas as configurações nas configurações do gerenciador de arquivos. Ele funcionará da mesma forma que o WP File Manager de back-end.Última mensagem de registroLuzHistóricaCriar diretório ou pastaCriar arquivoTamanho máximo permitido no momento da restauração do backup do banco de dados.Tamanho máximo de upload de arquivo (upload_max_filesize)Limite de memória (memory_limit)ID de backup ausente.Tipo de parâmetro ausente.Parâmetros obrigatórios ausentes.Não, obrigadoSem mensagem de logNenhum registro encontrado!Observação:Nota: Estas são capturas de tela de demonstração. Adquira o File Manager pro para funções de Logs.Nota: esta é apenas uma captura de tela de demonstração. Para obter as configurações, compre nossa versão profissional.Nada selecionado para backupNada selecionado para backup.OKOKOutros (quaisquer outros diretórios encontrados dentro de wp-content)Outros backups feitos na data Outros backup feito.Outros backup falhou.Outros backups restaurados com sucesso.Versão PHPParâmetros:Cole um arquivo ou pastaDigite o endereço de e-mail.Por favor, insira o primeiro nome.Digite o sobrenome.Por favor, mude isso com cuidado, o caminho errado pode fazer com que o plugin do gerenciador de arquivos caia.Aumente o valor do campo se estiver recebendo uma mensagem de erro no momento da restauração do backup.PluginsBackup de plug-ins feito na data Backup de plugins feito.Falha no backup de plug-ins.Backup de plug-ins restaurado com sucesso.Tamanho máximo de upload de arquivo da postagem (post_max_size)PreferênciasPolítica de PrivacidadeCaminho de raiz públicaRESTAURAR ARQUIVOSRemover ou excluir arquivos e pastasRenomear um arquivo ou pastaRestaurarA restauração está em execução, aguardeSUCESSOSalvar alteraçõesSalvando ...Pesquisar coisasProblema de segurança.Selecionar tudoSelecione backup(s) para excluir!DefiniçõesConfigurações - editor de códigoConfigurações - GeralConfigurações - Restrições do usuárioConfigurações - Restrições de função do usuárioConfigurações salvas.Shortcode - PROSimples recorte um arquivo ou pastaPropriedades do sistemaTermos de serviçoO backup aparentemente foi bem-sucedido e agora está completo.TemasBackup de temas feito na data Backup de temas feito.Falha no backup de temas.Backup de temas restaurado com sucesso.Hora agoraTempo limite (max_execution_time)Para fazer um arquivo ou zipHojeUSAR:Não foi possível criar o backup do banco de dados.Incapaz de remover o backup!Incapaz de restaurar o backup do banco de dados.Incapaz de restaurar outros.Não foi possível restaurar os plug-ins.Incapaz de restaurar temas.Incapaz de restaurar uploads.Fazer upload de registros de arquivosFazer upload de arquivosUploadsBackup de uploads feito na data Backup de uploads concluído.Falha no backup de uploads.Backup de uploads restaurado com sucesso.VerificarVer LogWP File ManagerWP File Manager - Backup / RestauraçãoContribuição do gerenciador de arquivos WPAdoramos fazer novos amigos! Inscreva-se abaixo e nós prometemos
    mantê-lo atualizado com nossos novos plug-ins, atualizações,
    promoções incríveis e algumas ofertas especiais.Bem-vindo ao gerenciador de arquivosVocê não fez nenhuma alteração para ser salvo.para acesso à permissão de leitura de arquivos, observe: true/false, padrão: truepara acesso a permissões de gravação de arquivos, observe: true/false, padrão: falseele vai esconder mencionado aqui. Nota: separados por vírgula(,). Padrão: Nulolanguages/wp-file-manager-it_IT.po000064400000066120147361034410013043 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-01 11:11+0530\n"
"PO-Revision-Date: 2022-03-01 11:19+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: it_IT\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Backup dei temi ripristinato correttamente."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Impossibile ripristinare i temi."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Il backup dei caricamenti è stato ripristinato correttamente."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Impossibile ripristinare i caricamenti."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Altri backup ripristinati con successo."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Impossibile ripristinare gli altri."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Backup dei plugin ripristinato con successo."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Impossibile ripristinare i plugin."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Backup del database ripristinato con successo."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Tutto fatto"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Impossibile ripristinare il backup del database."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Backup rimossi con successo!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Impossibile rimuovere il backup!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Backup del database eseguito in data "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Backup dei plugin eseguito in data "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Backup dei temi eseguito in data "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Backup dei caricamenti eseguito in data "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Altri backup eseguiti in data "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Registri"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nessun registro trovato!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Niente selezionato per il backup"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Problema di sicurezza."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Backup del database eseguito."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Impossibile creare il backup del database."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Backup dei plugin eseguito."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Backup dei plugin non riuscito."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Backup dei temi eseguito."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Backup dei temi non riuscito."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Carica il backup eseguito."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Il backup dei caricamenti non è riuscito."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Altri backup fatto."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Altri backup non sono riusciti."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Gestore di file WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "impostazioni"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferences"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Proprietà di sistema"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Ripristinare il backup"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Acquista Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donare"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Il file non esiste da scaricare."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Codice di sicurezza non valido."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "ID di backup mancante."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Tipo di parametro mancante."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Parametri obbligatori mancanti."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Errore: impossibile ripristinare il backup perché il backup del database è "
"di grandi dimensioni. Prova ad aumentare la dimensione massima consentita "
"dalle impostazioni delle Preferenze."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Seleziona i backup da eliminare!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Sei sicuro di voler rimuovere i backup selezionati?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Il backup è in esecuzione, per favore aspetta"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Il ripristino è in esecuzione, attendere"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Niente selezionato per il backup."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Gestore di file WP - Backup/Ripristino"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opzioni di backup:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Backup del database"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Backup dei file"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugin"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temi"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Caricamenti"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Altri (qualsiasi altra directory trovata all'interno di wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Esegui il backup adesso"

#: inc/backup.php:89
msgid "Time now"
msgstr "Momento attuale"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUCCESSO"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Backup eliminato con successo."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "CANCELLA FILE"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Sei sicuro di voler eliminare questo backup?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Annulla"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "convalidare"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RIPRISTINA FILE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Sei sicuro di voler ripristinare questo backup?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Ultimo messaggio di registro"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Il backup apparentemente è riuscito e ora è completo."

#: inc/backup.php:171
msgid "No log message"
msgstr "Nessun messaggio di registro"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Backup esistenti"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Data di backup"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Dati di backup (clicca per scaricare)"

#: inc/backup.php:190
msgid "Action"
msgstr "Azione"

#: inc/backup.php:210
msgid "Today"
msgstr "Oggi"

#: inc/backup.php:239
msgid "Restore"
msgstr "Ristabilire"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Elimina"

#: inc/backup.php:241
msgid "View Log"
msgstr "Vista del registro"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Attualmente nessun backup trovato."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Azioni sui backup selezionati"

#: inc/backup.php:251
msgid "Select All"
msgstr "Seleziona tutto"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deseleziona"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "I file di backup saranno sotto"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Contributo di Gestore di file WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nota: questi sono screenshot demo. Si prega di acquistare Gestore di file "
"pro per le funzioni di log."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Fare clic per acquistare PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Acquista PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Modifica file log"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Scarica file log Log"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Carica file log"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Impostazioni salvate."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Rimuovi questa notifica."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Non hai apportato modifiche da salvare."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Percorso radice pubblico"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Gestore di file Root Path, puoi cambiare in base alla tua scelta."

#: inc/root.php:59
msgid "Default:"
msgstr "Predefinita:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Si prega di cambiarlo con attenzione, il percorso sbagliato può portare al "
"fallimento del plug-in di gestione dei file."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Abilita cestino?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Dopo aver abilitato il cestino, i tuoi file andranno nella cartella del "
"cestino."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Abilitare il caricamento dei file nella libreria multimediale?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Dopo averlo abilitato, tutti i file andranno alla libreria multimediale."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Dimensione massima consentita al momento del ripristino del backup del "
"database."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Aumentare il valore del campo se viene visualizzato un messaggio di errore "
"al momento del ripristino del backup."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Salvare le modifiche"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Impostazioni - Generali"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nota: questo è solo uno screenshot demo. Per ottenere le impostazioni, "
"acquista la nostra versione pro."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Qui l'amministratore può concedere l'accesso ai ruoli utente per utilizzare "
"filemanager. L'amministratore può impostare la cartella di accesso "
"predefinita e anche controllare la dimensione di caricamento del gestore di "
"file."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Impostazioni - Editor di codice"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager ha un editor di codice con più temi. Puoi selezionare qualsiasi "
"tema per l'editor di codice. Verrà visualizzato quando modifichi un file. "
"Inoltre puoi consentire la modalità a schermo intero dell'editor di codice."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Vista dell'editor di codice"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Impostazioni - Restrizioni utente"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"L'amministratore può limitare le azioni di qualsiasi utente. Nascondi anche "
"file e cartelle e puoi impostare diversi percorsi di cartelle diversi per "
"utenti diversi."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Impostazioni - Restrizioni del ruolo utente"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"L'amministratore può limitare le azioni di qualsiasi ruolo utente. "
"Nascondere anche file e cartelle e impostare percorsi di cartelle diversi "
"per ruoli utente diversi."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "File Manager - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "USO:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Mostrerà il file manager sul front-end. Puoi controllare tutte le "
"impostazioni dalle impostazioni del file manager. Funzionerà allo stesso "
"modo di Gestore di file WP di back-end."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Mostrerà il file manager sul front-end. Ma solo l'amministratore può "
"accedervi e controllerà dalle impostazioni del file manager."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametri:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Consentirà a tutti i ruoli di accedere al file manager sul front-end oppure "
"è possibile utilizzarlo semplicemente per ruoli utente particolari, come "
"allow_roles=\"editor,author\" (separato da virgola (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Qui \"test\" è il nome della cartella che si trova nella directory "
"principale, oppure puoi fornire il percorso per le sottocartelle come \"wp-"
"content/plugins\". Se lasciato vuoto o vuoto accederà a tutte le cartelle "
"nella directory principale. Predefinito: directory principale"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"per l'accesso ai permessi di scrittura dei file, nota: true/false, default: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"per l'accesso ai permessi di lettura dei file, nota: true/false, default: "
"true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"nasconderà menzionato qui. Nota: separato da virgola(). Predefinito: nullo"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Si bloccherà menzionato tra virgole. puoi bloccarne altri come \".php,.css,."
"js\" ecc. Predefinito: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* per tutte le operazioni e per consentire alcune operazioni puoi menzionare "
"il nome dell'operazione come, allowed_operations=\"upload,download\". Nota: "
"separato da virgola(). Predefinito: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Elenco operazioni file:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Crea directory o cartella"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Crea file"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Rinominare un file o una cartella"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplica o clona una cartella o un file"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Incolla un file o una cartella"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Bandire"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Per creare un archivio o zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Estrai archivio o file zippato"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copia file o cartelle"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Simple cut a file or folder"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Modifica un file"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Rimuovere o eliminare file e cartelle"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Scaricare files"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Caricare files"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Cerca cose"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informazioni sul file"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Aiuto"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Bandirà determinati utenti semplicemente mettendo i loro ID separati da "
"virgole (,). Se l'utente è Ban, non sarà in grado di accedere al file "
"manager wp sul front-end."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Vista dell'interfaccia utente di Filemanager. Predefinito: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> File modificato o Crea formato data. Predefinito: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Lingua del file manager. Predefinito: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema del gestore di file. Predefinito: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Gestore di file - Proprietà del sistema"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versione PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Dimensione massima di caricamento del file (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Pubblica la dimensione massima di caricamento del file (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Limite di memoria (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Tempo scaduto (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Browser e sistema operativo (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Cambia tema qui:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Predefinita"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "scuro"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "chiaro"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grigio"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Benvenuto in Gestore di file"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Ci piace fare nuove amicizie! Iscriviti qui sotto e promettiamo di\n"
"    tenerti aggiornato con i nostri ultimi nuovi plugin, aggiornamenti,\n"
"    offerte fantastiche e alcune offerte speciali."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Si prega di inserire il nome."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Si prega di inserire il cognome."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Si prega di inserire l'indirizzo e-mail."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verificare"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "No grazie"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Termini di servizio"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "politica sulla riservatezza"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Salvataggio..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "ok"

#~ msgid "Backup not found!"
#~ msgstr "Backup non trovato!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Backup rimosso con successo!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Niente selezionato per il backup</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Problema di sicurezza.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Backup del database eseguito.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Impossibile creare il backup del "
#~ "database.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Backup dei plug-in eseguito.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Backup dei plug-in non riuscito.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Backup dei temi eseguito.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Backup dei temi non riuscito.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Backup dei caricamenti eseguito.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Backup dei caricamenti non riuscito.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Altri backup eseguiti.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Altri backup non riusciti.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Tutto fatto</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Gestisci i tuoi file WP."

#~ msgid "Extensions"
#~ msgstr "estensioni"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Contribuisci a contribuire con qualche donazione per rendere il plugin "
#~ "più stabile. Puoi pagare la quantità di tua scelta."
languages/wp-file-manager-fi.po000064400000065672147361034410012444 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 15:55+0530\n"
"PO-Revision-Date: 2022-03-03 12:20+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Teemojen varmuuskopiointi onnistui."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Teemoja ei voi palauttaa."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Latausten varmuuskopiointi onnistui."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Lähetyksiä ei voi palauttaa."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Toisten varmuuskopiointi on palautettu."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Muita ei voi palauttaa."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Laajennusten varmuuskopiointi onnistui."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Laajennuksia ei voi palauttaa."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Tietokannan varmuuskopiointi onnistui."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Valmista"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Tietokannan varmuuskopiota ei voi palauttaa."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Varmuuskopiot poistettu!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Varmuuskopiota ei voitu poistaa!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Tietokannan varmuuskopiointi on tehty "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Laajennusten varmuuskopiointi on tehty "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Teemojen varmuuskopiointi on tehty "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Latausten varmuuskopiointi on tehty "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Toiset varmuuskopiointi on tehty "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Lokit"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Lokeja ei löytynyt!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Varmuuskopiointiin ei ole valittu mitään"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Turvallisuuskysymys."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Tietokannan varmuuskopiointi tehty."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Tietokannan varmuuskopion luominen epäonnistui."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Lisäosien varmuuskopiointi tehty."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Lisäosien varmuuskopiointi epäonnistui."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Teeman varmuuskopiointi tehty."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Teeman varmuuskopiointi epäonnistui."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Latausten varmuuskopiointi tehty."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Latausten varmuuskopiointi epäonnistui."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Muut varmuuskopiot tehty."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Muiden varmuuskopiointi epäonnistui."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP-tiedostojen hallinta"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "asetukset"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "prefrenssit"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Järjestelmän ominaisuudet"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Lyhytkoodi - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Varmuuskopio"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Osta Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Lahjoittaa"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Tiedostoa ei ole ladattavissa."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Virheellinen turvakoodi."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Varmuuskopiotunnus puuttuu."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametrityyppi puuttuu."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Vaaditut parametrit puuttuvat."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Virhe: Varmuuskopiota ei voida palauttaa, koska tietokannan varmuuskopio on "
"kooltaan suuri. Yritä suurentaa Suurin sallittu koko Asetukset-asetuksista."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Valitse poistettavat varmuuskopiot!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Haluatko varmasti poistaa valitut varmuuskopiot?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Varmuuskopiointi on käynnissä, odota"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Palautus on käynnissä, odota"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Varmuuskopiointiin ei ole valittu mitään."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP tiedostonhallinta - Varmuuskopiointi / palautus"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Varmuuskopiointivaihtoehdot:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Tietokannan varmuuskopiointi"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Tiedostojen varmuuskopiointi"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Laajennukset"

#: inc/backup.php:71
msgid "Themes"
msgstr "Teemat"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Lataukset"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Muut (muut hakemistot, jotka löytyvät wp-sisällöstä)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Varmuuskopioi nyt"

#: inc/backup.php:89
msgid "Time now"
msgstr "Aika Nyt"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "MENESTYS"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Varmuuskopiointi poistettu."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "POISTA TIEDOSTOT"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Haluatko varmasti poistaa tämän varmuuskopion?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Peruuttaa"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Vahvistaa"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "PALAUTA TIEDOSTOT"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Haluatko varmasti palauttaa tämän varmuuskopion?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Viimeinen lokiviesti"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Varmuuskopiointi onnistui ilmeisesti ja on nyt valmis."

#: inc/backup.php:171
msgid "No log message"
msgstr "Ei lokiviestiä"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Olemassa olevat varmuuskopiot"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Varmuuskopiointipäivä"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Varmuuskopiotiedot (lataa napsauttamalla)"

#: inc/backup.php:190
msgid "Action"
msgstr "Toiminta"

#: inc/backup.php:210
msgid "Today"
msgstr "Tänään"

#: inc/backup.php:239
msgid "Restore"
msgstr "Palauttaa"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Poistaa"

#: inc/backup.php:241
msgid "View Log"
msgstr "Näytä loki"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Tällä hetkellä varmuuskopioita ei löydy."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Toimet valitun varmuuskopion jälkeen"

#: inc/backup.php:251
msgid "Select All"
msgstr "Valitse kaikki"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Poista valinta"

#: inc/backup.php:254
msgid "Note:"
msgstr "merkintä:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Varmuuskopiotiedostot ovat alle"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP-tiedostojen hallinnan osallistuminen"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Huomaa: Nämä ovat esittelykuvakaappauksia. Osta File Manager pro to Logs -"
"toiminnot."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Napsauta ostaaksesi PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Osta PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Muokkaa tiedostolokeja"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Lataa tiedostolokit"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Lähetä tiedostolokit"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Asetukset Tallennettu."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Hylkää tämä ilmoitus."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Et ole tehnyt mitään tallennettavia muutoksia."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Julkinen juuripolku"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Tiedostonhallinnan juuripolku, voit muuttaa valintasi mukaan."

#: inc/root.php:59
msgid "Default:"
msgstr "Oletus:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Muuta tätä varovasti, väärä polku voi johtaa tiedostojen hallinnan "
"laajennukseen."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Otetaanko roskakori käyttöön?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Kun roskakori on otettu käyttöön, tiedostosi menevät roskakorikansioon."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Otetaanko tiedostojen lataus mediakirjastoon käyttöön?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Kun tämä on otettu käyttöön, kaikki tiedostot menevät mediakirjastoon."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "Suurin sallittu koko tietokannan varmuuskopion palautuksen aikana."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Suurenna kentän arvoa, jos saat virheilmoituksen varmuuskopion palautuksen "
"yhteydessä."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Tallenna muutokset"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Asetukset - Yleiset"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Huomaa: Tämä on vain esittelykuvakaappaus. Saadaksesi asetukset, osta pro-"
"versiomme."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Täällä järjestelmänvalvoja voi antaa käyttöoikeuden käyttäjärooleihin "
"käyttääksesi tiedostojen hallintaa. Järjestelmänvalvoja voi asettaa "
"oletuskäyttökansion ja hallita myös tiedostonhallinnan latauskokoa."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Asetukset - Koodieditori"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Tiedostonhallinnassa on koodieditori, jossa on useita teemoja. Voit valita "
"minkä tahansa teeman koodieditorille. Se näkyy, kun muokkaat mitä tahansa "
"tiedostoa. Voit myös sallia koodieditorin koko näytön tilan."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Koodieditorinäkymä"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Asetukset - Käyttäjärajoitukset"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Järjestelmänvalvoja voi rajoittaa minkä tahansa käyttäjän toimia. Piilota "
"myös tiedostot ja kansiot ja voi asettaa erilaiset kansiopolut eri "
"käyttäjille."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Asetukset - Käyttäjäroolirajoitukset"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Järjestelmänvalvoja voi rajoittaa minkä tahansa käyttäjän roolin toimintoja. "
"Piilota myös tiedostot ja kansiot ja voi asettaa erilaiset kansiopolut eri "
"käyttäjärooleille."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Tiedostonhallinta - Lyhytkoodi "

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "KÄYTTÄÄ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Se näyttää tiedostonhallinnan käyttöliittymässä. Voit hallita kaikkia "
"asetuksia tiedostonhallinnan asetuksista. Se toimii samalla tavalla kuin "
"backend WP tiedostonhallinta."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Se näyttää tiedostonhallinnan käyttöliittymässä. Mutta vain "
"järjestelmänvalvoja voi käyttää sitä ja hallitsee tiedostonhallinnan "
"asetuksista."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametrit:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Se antaa kaikille rooleille pääsyn tiedostonhallintaan käyttöliittymässä tai "
"voit käyttää vain tiettyjä käyttäjärooleja, kuten sallittu_roles=\"editor,"
"author\" (erottuna pilkulla(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Tässä \"testi\" on sen kansion nimi, joka sijaitsee juurihakemistossa, tai "
"voit antaa polun alikansioille kuten \"wp-content/plugins\". Jos jätetään "
"tyhjäksi, se käyttää kaikkia juurihakemiston kansioita. Oletus: "
"juurihakemisto"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "tiedostojen kirjoitusoikeudet, huomautus: tosi/false, oletus: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "tiedostojen lukulupaa varten huomautus: tosi/false, oletus: tosi"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"se piiloutuu mainittuun tänne. Huomautus: erotettu pilkulla (,). Oletus: "
"Nolla"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Se lukittuu pilkuilla mainittuna. voit lukita enemmän esimerkiksi \".php,."
"css,.js\" jne. Oletus: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* Kaikille toiminnoille ja joidenkin toimintojen sallimiseksi voit mainita "
"toiminnon nimen muodossa, enabled_operations=\"upload,download\". Huomautus: "
"erotettu pilkulla (,). Oletus: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Tiedostotoimintoluettelo:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Luo hakemisto tai kansio"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Tee tiedosto"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Nimeä tiedosto tai kansio uudelleen"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Kopioi tai kloonaa kansio tai tiedosto"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Liitä tiedosto tai kansio"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "kieltää"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Arkiston tai zip-tiedoston luominen"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Pura arkisto tai pakattu tiedosto"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopioi tiedostoja tai kansioita"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Leikkaa tiedosto tai kansio yksinkertaisesti"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Muokkaa tiedostoa"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Poista tai poista tiedostoja ja kansioita"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Lataa tiedostoja"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Lähetä tiedostoja"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Etsi asioita"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Tiedoston tiedot"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "auta"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Se kieltää tietyt käyttäjät asettamalla tunnuksensa pilkulla (,). Jos "
"käyttäjä on Ban, he eivät voi käyttää wp-tiedostojen hallintaa "
"käyttöliittymässä."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI -näkymä. Oletus: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Tiedosto muokattu tai Luo päivämäärä -muoto. Oletus: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Tiedostonhallinnan kieli. Oletus: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tiedostonhallinnan teema. Oletus: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Tiedostonhallinta - Järjestelmän ominaisuudet"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP-versio"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Tiedoston enimmäiskoko (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Viestin enimmäislatauskoko (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Muistiraja (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Aikakatkaisu (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Selain ja käyttöjärjestelmä (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Vaihda teema täällä:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Oletus"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Tumma"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Kevyt"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "harmaa"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Tervetuloa Tiedostonhallintaan"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Rakastamme uusien ystävien hankkimista! Tilaa alla ja lupaamme\n"
"    pitää sinut ajan tasalla uusimmista uusista laajennuksistamme, "
"päivityksistämme,\n"
"    mahtavia tarjouksia ja muutama erikoistarjous."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Anna etunimi."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Anna sukunimi."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Anna sähköpostiosoite."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Vahvista"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ei kiitos"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Käyttöehdot"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Tietosuojakäytäntö"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Tallentaa..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Varmuuskopiota ei löydy!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Varmuuskopio poistettu!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Mitään ei ole valittu varmuuskopiointia "
#~ "varten</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Tietoturvaongelma.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Tietokannan varmuuskopiointi valmis.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\"><span class = \"fm_console_error\"></"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Laajennusten varmuuskopiointi valmis.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Laajennusten varmuuskopiointi "
#~ "epäonnistui.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Teemojen varmuuskopiointi valmis.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Teemojen varmuuskopiointi epäonnistui.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Latausten varmuuskopiointi valmis.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Latausten varmuuskopiointi epäonnistui.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Toiset varmuuskopiointi tehty.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Toisten varmuuskopiointi epäonnistui.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Kaikki valmiit</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Hallitse WP-tiedostoja."

#~ msgid "Extensions"
#~ msgstr "laajennukset"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Anna jonkin verran lahjoituksia, jotta plugin pysyisi entistä vakaampana. "
#~ "Voit maksaa haluamasi määrän."
languages/wp-file-manager-uz_UZ.mo000064400000043714147361034410013110 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�\(�5)**K.*.z*/�*�*$�*�+��+K�,@�,8-=G->�-6�-
�-	..44.i.�.*�.�./�.	//=/O/_/l/�/�/
�/!�/*�/0-0607V01�0?�01		1
11 41U1a1�1(�1�1�1/�12�82�2*313#K3No3��3�4$�4�45
5�5�6�67�7z�7�e8��8�9�9	�9�9
�9U�93E:y:$�:�:!�:�:	;;:;YC;a�;#�;$#<H<K<8N<1�<�<,�<5�<
3=A=N=,m=�=�=��=]Y>	�>.�>(�>&?5@?=v?�?�?�?�?/�?"-@
P@ ^@@�@�@�@�@�@.�@
A)ADA&XA(A�A�A�A�AB;BXB-aB�B�B*�B
�B!�BC3C9C1FC)xC0�C�C�CD!-DODiD
{D(�D(�D�D6�D
)E4EEE%VE|E��ExF5�FL�FWGZqG}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 13:03+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: Uzbek
Language: uz_UZ
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* barcha operatsiyalar uchun va ba'zi operatsiyalarga ruxsat berish uchun siz operatsiya nomini allow_operations="yuklash, yuklab olish" kabi zikr qilishingiz mumkin. Eslatma: vergul (,) bilan ajratiladi. Standart: *-> Bu ma'lum foydalanuvchilarning identifikatorlarini vergul (,) bilan ajratib qo'yish orqali taqiqlaydi. Agar foydalanuvchi Ban bo'lsa, u holda ular wp fayl boshqaruvchisiga kirish imkoniga ega bo'lmaydi.-> Fayl menejeri mavzusi. Standart: Yengil-> O'zgartirilgan fayl yoki sana formatini yaratish. Standart: d M, Y h:i A-> Fayl menejeri tili. Standart: Inglizcha(uz)-> Filemanager UI ko'rinishi. Standart: panjaraHarakatTanlangan zahira(lar)dagi harakatlarAdministrator har qanday userrole ishini cheklashi mumkin. Bundan tashqari, fayllar va papkalarni yashirish va turli xil foydalanuvchilar rollari uchun turli xil papka yo'llarini o'rnatishingiz mumkin.Administrator har qanday foydalanuvchi rolining harakatlarini cheklashi mumkin. Bundan tashqari, fayllar va papkalarni yashirish va turli xil foydalanuvchi rollari uchun turli xil papkalar yo'llarini o'rnatishi mumkin.Axlat qutisini faollashtirgandan so'ng, fayllaringiz axlat qutisiga o'tadi.Buni yoqgandan so'ng, barcha fayllar media kutubxonasiga o'tadi.Hammasi tayyorHaqiqatan ham tanlangan zahira(lar)ni olib tashlamoqchimisiz?Haqiqatan ham bu zaxira nusxasini oʻchirib tashlamoqchimisiz?Haqiqatan ham ushbu zaxira nusxasini tiklamoqchimisiz?Zaxira sanasiHozir zaxiralashZaxiralash imkoniyatlari:Ma'lumotlarni zaxiralash (yuklab olish uchun bosing)Zaxira fayllar ostida bo'ladiZaxiralash ishlayapti, kutingZaxira nusxasi muvaffaqiyatli oʻchirildi.Zaxiralash/tiklashZaxira nusxalari muvaffaqiyatli olib tashlandi!TaqiqlashBrauzer va OS (HTTP_USER_AGENT)PROni sotib olingPro sotib olingBekor qilishBu yerda mavzuni o'zgartiring:PRO sotib olish uchun bosingKod muharriri ko'rinishiTasdiqlashFayllar yoki papkalarni nusxalashHozirda hech qanday zaxira(lar) topilmadi.FAYLLARNI O'CHIRIShQorong'iMa'lumotlar bazasini zaxiralashMa'lumotlar bazasini zahiralash sanada amalga oshirildiMa'lumotlar bazasini zaxiralash amalga oshirildi.Maʼlumotlar bazasining zaxira nusxasi muvaffaqiyatli tiklandi.StandartStandart:OʻchirishTanlovni bekor qilingUshbu bildirishnomani rad eting.Bag'ishlangFayllar jurnalini yuklab olingFayllarni yuklab olingJild yoki faylni nusxalash yoki klonlashFayl jurnallarini tahrirlashFaylni tahrirlashFayllarni media kutubxonaga yuklash yoqilsinmi?Chiqindixona yoqilsinmi?Xato: Zaxira nusxasini tiklab boʻlmadi, chunki maʼlumotlar bazasi zahirasining hajmi katta. Iltimos, Sozlamalar sozlamalaridan ruxsat etilgan maksimal hajmni oshirishga harakat qiling.Mavjud zaxira(lar)Arxiv yoki ziplangan faylni chiqarib olingFayl menejeri - Qisqa kodFayl menejeri - tizim xususiyatlariFayl menejeri ildiz yo'li, siz tanlaganingizga ko'ra o'zgartirishingiz mumkin.Fayl menejerida bir nechta mavzular bilan kod muharriri mavjud. Kod muharriri uchun har qanday mavzuni tanlashingiz mumkin. Har qanday faylni tahrirlashda ko'rsatiladi. Bundan tashqari siz to'liq kodli tartibga ruxsat berishingiz mumkin.Fayl operatsiyalari ro'yxati:Yuklab olish uchun fayl mavjud emas.Fayllarni zaxiralashKulrangYordam beringBu erda "test" - bu ildiz katalogida joylashgan papkaning nomi yoki siz "wp-content/plugins" kabi pastki papkalarga yo'l berishingiz mumkin. Bo'sh yoki bo'sh qo'yilsa, u ildiz katalogidagi barcha papkalarga kira oladi. Standart: ildiz katalogiBu erda administrator fayl boshqaruvchisidan foydalanish uchun foydalanuvchi rollariga ruxsat berishi mumkin. Administrator standart kirish papkasini o'rnatishi va filemanager fayllarini yuklash hajmini boshqarishi mumkin.Fayl haqida ma'lumotXavfsizlik kodi yaroqsiz.Bu barcha rollarga fayl boshqaruvchisiga kirishga ruxsat beradi yoki ruxsat etilgan_roles="editor,author" (vergul(,) bilan ajratilgan) kabi ma'lum foydalanuvchi rollari uchun oddiy foydalanishingiz mumkin.U vergulda eslatib o'tilgan qulflanadi. siz ".php,.css,.js" va boshqalar kabi ko'proq qulflashingiz mumkin. Standart: NullU old tomonda fayl menejerini ko'rsatadi. Lekin unga faqat Administrator kirishi mumkin va fayl boshqaruvchisi sozlamalaridan nazorat qiladi.U old tomonda fayl menejerini ko'rsatadi. Siz barcha sozlamalarni fayl boshqaruvchisi sozlamalaridan boshqarishingiz mumkin. U backend WP File Manager bilan bir xil ishlaydi.Oxirgi jurnal xabariNurJurnallarKatalog yoki papka yaratingFayl yaratishMa'lumotlar bazasining zaxira nusxasini tiklash vaqtida ruxsat etilgan maksimal hajm.Maksimal faylni yuklash hajmi (upload_max_filesize)Xotira cheklovi (memory_limit)Zaxira identifikatori yetishmayapti.Parametr turi etishmayotgan.Kerakli parametrlar etishmayapti.Yo'q, rahmatJurnal xabari yo'qHech qanday jurnal topilmadi!Eslatma:Eslatma: Bu demo skrinshotlar. Iltimos, Logs funksiyalariga File Manager pro sotib oling.Eslatma: Bu faqat bitta demo ekran tasviridir. Sozlashni olish uchun pro versiyasini sotib oling.Zaxira uchun hech narsa tanlanmaganZaxira uchun hech narsa tanlanmagan.OKOkBoshqalar (wp-content ichida topilgan boshqa kataloglar)Boshqalar esa zahiraviy nusxasi sanada bajarilganBoshqalar zaxiralandi.Boshqalarning zaxira nusxasi amalga oshmadi.Boshqalarning zaxira nusxasi muvaffaqiyatli tiklandi.PHP versiyasiParametrlar:Fayl yoki jildni joylashtiringIltimos, elektron pochta manzilini kiriting.Iltimos, Ismingizni kiriting.Iltimos, familiyani kiriting.Iltimos, buni ehtiyotkorlik bilan o'zgartiring, noto'g'ri yo'l fayl boshqaruvchisi plagini ishlamay qolishiga olib kelishi mumkin.Zaxira nusxasini tiklash vaqtida xato xabari olayotgan bo'lsangiz, maydon qiymatini oshiring.PlaginlarPlaginlarni zahiralash sanada amalga oshirildiPlaginlarni zaxiralash amalga oshirildi.Plaginlarni zaxiralash amalga oshmadi.Plaginlarning zaxira nusxasi muvaffaqiyatli tiklandi.Maksimal faylni yuklash hajmini joylashtiring (post_max_size)AfzalliklarMaxfiylik siyosatiUmumiy ildiz yo'liFAYLLARNI QAYTA QILISHFayl va papkalarni olib tashlang yoki o'chiringFayl yoki jild nomini o'zgartiringQayta tiklashQayta tiklash ishlayapti, kutingMUVAFFAQIYATO'zgarishlarni saqlashSaqlanmoqda...Narsalarni qidirishXavfsizlik muammosi.Hammasini belgilashYo'q qilish uchun zaxira nusxa(lar)ni tanlang!SozlamalarSozlamalar - kod muharririSozlamalar - UmumiySozlamalar - Foydalanuvchi cheklovlariSozlash - foydalanuvchi roli cheklovlariSozlamalar saqlandi.Qisqa kod - PROFayl yoki papkani kesish oddiyTizim xususiyatlariXizmat ko'rsatish shartlariZaxira nusxalash muvaffaqiyatli bo'ldi va hozir tugallandi.MavzularMavzularni zaxiralash sanada amalga oshirildiMavzular zaxiralandi.Mavzular zaxiralanmadi.Mavzular zaxirasi muvaffaqiyatli tiklandi.Hozir vaqtVaqt tugashi (max_execution_time)Arxiv yoki zip yaratish uchunBugunFOYDALANISH:Maʼlumotlar bazasi zahirasini yaratib boʻlmadi.Zaxira nusxasini olib tashlab bo‘lmadi!Maʼlumotlar bazasi zaxirasini tiklab boʻlmadi.Boshqalarni tiklash imkonsiz.Plaginlarni tiklash imkonsiz.Mavzularni tiklab bo‘lmadi.Yuklanganlarni tiklab bo‘lmadi.Fayl jurnallarini yuklashFayllarni yuklashYuklashlarZaxira yuklangan sanada amalga oshirildiYuklashlarning zaxira nusxasi bajarildi.Yuklashlar zaxiralanmadi.Yuklashlarning zaxira nusxasi muvaffaqiyatli tiklandi.TasdiqlashJurnalni ko'rishWP Fayl menejeriWP fayl menejeri - Zaxiralash/tiklashWP fayl menejeri hissasiBiz yangi do'stlar orttirishni yaxshi ko'ramiz! Quyida obuna bo'ling va biz sizni eng so'nggi yangi plaginlarimiz, yangilanishlarimiz, ajoyib takliflarimiz va bir nechta maxsus takliflarimizdan xabardor qilishni va'da qilamiz.Fayl menejeriga xush kelibsizSaqlash uchun hech qanday o'zgartirish kiritmadingiz.fayllarni o'qish uchun ruxsat uchun, eslatma: rost/noto'g'ri, standart: rostfayllarni yozish uchun ruxsat olish uchun, eslatma: rost/noto'g'ri, standart: noto'g'ribu erda eslatib o'tilgan yashiriladi. Eslatma: vergul (,) bilan ajratiladi. Standart: Nulllanguages/wp-file-manager-bel.po000064400000104275147361034410012601 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 15:24+0530\n"
"PO-Revision-Date: 2022-03-03 10:40+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Рэзервовае капіраванне тэм адноўлена."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Немагчыма аднавіць тэмы."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Загрузка рэзервовай копіі адноўлена."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Немагчыма аднавіць запампоўкі."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Іншыя рэзервовыя копіі паспяхова адноўлены."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Немагчыма аднавіць іншыя."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Рэзервовае капіраванне убудоў адноўлена."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Немагчыма аднавіць убудовы."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Рэзервовае капіраванне базы дадзеных адноўлена."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Усё гатова"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Немагчыма аднавіць рэзервовую копію БД."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Рэзервовыя копіі выдалены!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Немагчыма выдаліць рэзервовую копію!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Рэзервовае капіраванне базы дадзеных зроблена на дату "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Рэзервовае капіраванне убудоў зроблена на дату "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Рэзервовае капіраванне тэм зроблена на дату "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Загружае рэзервовую копію, зробленую на дату "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Іншыя рэзервовыя копіі зроблены на дату "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Часопісы"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Часопісаў не знойдзена!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Нічога не выбрана для рэзервовага капіявання"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Пытанне бяспекі."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Рэзервовае капіраванне базы дадзеных зроблена."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Немагчыма стварыць рэзервовую копію базы дадзеных."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Рэзервовае капіраванне убудоў зроблена."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Збой рэзервовага капіравання убудоў."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Рэзервовае капіраванне тэм зроблена."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Збой рэзервовага капіравання тэм."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Рэзервовае капіраванне запамповак зроблена."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Не атрымалася рэзервовага капіравання запамповак."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Іншыя рэзервовыя копіі зроблены."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Збой іншых рэзервовых копій."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Дыспетчар файлаў WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "налады"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Прэферэнцыі"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "ўласцівасці сістэмы"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Шорт-код - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Рэзервовае капіраванне / аднаўленне"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Купляйце Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "ахвяраваць"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Файл не існуе для загрузкі."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Несапраўдны код бяспекі."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Адсутнічае ідэнтыфікатар рэзервовай копіі."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Адсутнічае тып параметра."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Адсутнічаюць неабходныя параметры."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Памылка: немагчыма аднавіць рэзервовую копію, таму што рэзервовая копія базы "
"дадзеных мае вялікі памер. Паспрабуйце павялічыць максімальна дазволены "
"памер у наладах налад."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Выберыце рэзервовую копію(ы) для выдалення!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Вы ўпэўнены, што хочаце выдаліць выбраныя рэзервовыя копіі?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Рэзервовае капіраванне працуе, пачакайце"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Аднаўленне выконваецца, пачакайце"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Нічога не выбрана для рэзервовага капіявання."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Файлавы менеджэр WP - Рэзервовае капіраванне / аднаўленне"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Параметры рэзервовага капіравання:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Рэзервовае капіраванне базы дадзеных"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Рэзервовае капіраванне файлаў"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Убудовы"

#: inc/backup.php:71
msgid "Themes"
msgstr "Тэмы"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Загружае"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Іншыя (любыя іншыя каталогі, якія знаходзяцца ўнутры wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Рэзервовае капіраванне зараз"

#: inc/backup.php:89
msgid "Time now"
msgstr "Час зараз"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ПОСПЕХ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Рэзервовае капіраванне паспяхова выдалена."

#: inc/backup.php:102
msgid "Ok"
msgstr "Добра"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ВЫДАЛІЦЬ ФАЙЛЫ"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Вы ўпэўнены, што хочаце выдаліць гэту рэзервовую копію?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Адмяніць"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Пацвердзіце"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "АДНАВІЦЬ ФАЙЛЫ"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Вы ўпэўнены, што хочаце аднавіць гэту рэзервовую копію?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Апошняе паведамленне часопіса"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Рэзервовае капіраванне, відаць, атрымалася, і яно завершана."

#: inc/backup.php:171
msgid "No log message"
msgstr "Няма паведамлення ў часопісе"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Існуючыя рэзервовыя копіі"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Дата рэзервовага капіравання"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Рэзервовыя дадзеныя (націсніце, каб загрузіць)"

#: inc/backup.php:190
msgid "Action"
msgstr "Дзеянне"

#: inc/backup.php:210
msgid "Today"
msgstr "Сёння"

#: inc/backup.php:239
msgid "Restore"
msgstr "Аднавіць"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Выдаліць"

#: inc/backup.php:241
msgid "View Log"
msgstr "Прагляд часопіса"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "У цяперашні час рэзервовых копій не знойдзена."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Дзеянні з выбранымі рэзервовымі копіямі"

#: inc/backup.php:251
msgid "Select All"
msgstr "Абраць усё"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Адмяніць выбар"

#: inc/backup.php:254
msgid "Note:"
msgstr "нататка:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Файлы рэзервовых копій будуць знаходзіцца пад"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Уклад Файлавы менеджэр WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Заўвага: Гэта дэманстрацыйныя скрыншоты. Калі ласка, купіце File Manager pro "
"для функцый часопісаў."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Націсніце, каб купіць PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "купіць PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Рэдагаваць часопісы файлаў"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Спампаваць часопісы файлаў"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Загрузіць часопісы файлаў"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Налады захаваны."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Адхіліць гэтае апавяшчэнне."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Вы не ўносілі ніякіх змяненняў для захавання."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Грамадскі каранёвы шлях"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Каранёвы шлях файлавага мэнэджара, вы можаце змяніць яго ў адпаведнасці з "
"вашым выбарам."

#: inc/root.php:59
msgid "Default:"
msgstr "Па змаўчанні:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Калі ласка, змяніце гэта ўважліва, няправільны шлях можа прывесці да "
"падзення ўбудовы файлавага мэнэджара."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Уключыць сметніцу?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Пасля ўключэння смецця вашы файлы будуць пераходзіць у папку смецця."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Уключыць загрузку файлаў у медыятэку?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Пасля ўключэння гэтага ўсе файлы будуць пераходзіць у медыя-бібліятэку."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Максімальна дазволены памер на момант аднаўлення рэзервовай копіі базы "
"дадзеных."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Калі ласка, павялічце значэнне поля, калі вы атрымліваеце паведамленне пра "
"памылку падчас аднаўлення рэзервовай копіі."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Захаваць змены"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Налады - Агульныя"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Заўвага: Гэта проста дэманстрацыйны скрыншот. Каб атрымаць налады, купіце "
"нашу версію pro."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Тут адміністратар можа даць доступ да роляў карыстальнікаў для выкарыстання "
"файлавага мэнэджэра. Адміністратар можа ўсталяваць папку доступу па "
"змаўчанні, а таксама кантраляваць памер загрузкі файлавага менеджэра."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Налады - рэдактар ​​кода"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Файлавы менеджэр мае рэдактар ​​кода з некалькімі тэмамі. Вы можаце выбраць "
"любую тэму для рэдактара кода. Ён будзе адлюстроўвацца пры рэдагаванні "
"любога файла. Таксама вы можаце дазволіць поўнаэкранны рэжым рэдактара кода."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Выгляд рэдактара кода"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Налады - Абмежаванні карыстальнікаў"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Адміністратар можа абмежаваць дзеянні любога карыстальніка. Акрамя таго, "
"можна схаваць файлы і тэчкі і можа ўсталяваць розныя шляхі для розных "
"карыстальнікаў."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Налады - Абмежаванні роляў карыстальніка"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Адміністратар можа абмежаваць дзеянні любой карыстальніцкай ролі. Акрамя "
"таго, можна схаваць файлы і тэчкі і можа ўсталяваць розныя шляхі для розных "
"роляў карыстальнікаў."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Файлавы менеджэр - кароткі код"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ВЫКАРЫСТАННЕ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Ён пакажа файлавы менеджэр на пярэднім канцы. Вы можаце кіраваць усімі "
"наладамі з налад файлавага мэнэджара. Ён будзе працаваць гэтак жа, як і "
"бэкэнд Файлавы менеджэр WP."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Ён пакажа файлавы менеджэр на пярэднім канцы. Але толькі адміністратар мае "
"доступ да яго і будзе кіраваць з налад файлавага мэнэджара."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Параметры:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Гэта дазволіць усім ролям атрымліваць доступ да файлавага мэнэджара на "
"пярэднім канцы або вы можаце проста выкарыстоўваць для пэўных роляў "
"карыстальнікаў, напрыклад, allow_roles = \"рэдактар, аўтар\" (падзелены "
"коскай (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Тут \"test\" - гэта назва папкі, якая знаходзіцца ў каранёвым каталогу, або "
"вы можаце даць шлях для падтэчак, напрыклад, \"wp-content/plugins\". Калі "
"пакінуць поле пустым або пустым, ён атрымае доступ да ўсіх тэчак у каранёвым "
"каталогу. Па змаўчанні: Каранёвы каталог"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"для доступу да дазволу запісу файлаў, звярніце ўвагу: true/false, па "
"змаўчанні: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"для доступу да дазволу на чытанне файлаў, звярніце ўвагу: true/false, па "
"змаўчанні: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "ён схавае згаданае тут. Заўвага: праз коску (,). Па змаўчанні: Нуль"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Ён будзе заблакіраваны, згаданы праз коскі. вы можаце заблакаваць больш, як "
"\".php,.css,.js\" і г.д. Па змаўчанні: Нуль"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* для ўсіх аперацый і для дазволу некаторых аперацый вы можаце ўказаць назву "
"аперацыі, напрыклад, allow_operations=\"upload,download\". Заўвага: праз "
"коску (,). Па змаўчанні: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Спіс аперацый з файламі:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Зрабіце каталог альбо тэчку"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Стварыць файл"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Перайменаваць файл ці тэчку"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Дублюйце альбо кланіруйце тэчку альбо файл"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Устаўце файл ці тэчку"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Забараніць"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Каб зрабіць архіў альбо архіў"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Выняць архіў альбо архіваваны файл"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Скапіруйце файлы ці тэчкі"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Проста выражыце файл ці тэчку"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Змяніць файл"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Выдаленне альбо выдаленне файлаў і тэчак"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Спампаваць файлы"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Загрузіць файлы"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Шукайце рэчы"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Інфармацыя пра файл"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Дапамажыце"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Гэта забароніць пэўных карыстальнікаў, проста паставіўшы іх "
"ідэнтыфікатары, падзеленыя коскамі (,). Калі карыстальнік забаронены, ён не "
"зможа атрымаць доступ да файлавага мэнэджара wp на пярэдняй панэлі."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Прагляд карыстацкага інтэрфейсу Filemanager. Па змаўчанні: сетка"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Зменены файл альбо Стварыць фармат даты. Па змаўчанні: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Мова дыспетчара файлаў. Па змаўчанні: англійская (en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Тэма дыспетчара файлаў. Па змаўчанні: святло"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Дыспетчар файлаў - Уласцівасці сістэмы"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Версія PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Максімальны памер загружанага файла (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Апублікаваць максімальны памер загружанага файла (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Абмежаванне памяці (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Час чакання (максімальны_ час_выканання)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Браўзэр і АС (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Змяніць тэму тут:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Па змаўчанні"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Цёмны"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Святло"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Шэры"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Сардэчна запрашаем у дыспетчар файлаў"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Мы любім знаходзіць новых сяброў! Падпішыцеся ніжэй, і мы абяцаем\n"
"    будзеце ў курсе нашых апошніх новых убудоў, абнаўленняў,\n"
"    дзіўныя прапановы і некалькі спецыяльных прапаноў."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Калі ласка, увядзіце імя."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Калі ласка, увядзіце прозвішча."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Калі ласка, увядзіце адрас электроннай пошты."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Праверце"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Не, дзякуй"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Ўмовы абслугоўвання"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Палітыка прыватнасці"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Захаванне ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "добра"

#~ msgid "Backup not found!"
#~ msgstr "Рэзервовая копія не знойдзена!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Рэзервовая копія выдалена!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Для рэзервовага капіравання нічога не "
#~ "выбрана</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Пытанне бяспекі. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Зроблена рэзервовая копія базы "
#~ "дадзеных. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Немагчыма стварыць рэзервовую копію базы "
#~ "дадзеных. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Зроблена рэзервовая копія убудоў. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не атрымалася зрабіць рэзервовую копію "
#~ "убудоў. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Зроблена рэзервовая копія тэм. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не атрымалася стварыць рэзервовую копію "
#~ "тэм. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Запампоўка зроблена. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не атрымалася загрузіць рэзервовую "
#~ "копію. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Іншыя рэзервовыя копіі зроблены. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не атрымалася зрабіць рэзервовую копію. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Усе зроблена </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code> [wp_file_manager view = \"list\" lang = \"en\" theme = \"light\" "
#~ "dateformat = \"d M, Y h: i A\" allowed_roles = \"рэдактар, аўтар\" "
#~ "access_folder = \"wp-content / plugins\" write = \"true\" read = \"false"
#~ "\" hide_files = \"kumar, abc.php\" lock_extensions = \". php, .css\" "
#~ "allowed_operations = \"загрузіць, загрузіць\" ban_user_ids = \"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Кіраванне WP файлаў."

#~ msgid "Extensions"
#~ msgstr "пашырэння"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Заплаціце некаторыя ахвяраванні, каб зрабіць убудова больш стабільным. Вы "
#~ "можаце аплаціць суму па вашаму выбару."
languages/wp-file-manager-sv_SE.mo000064400000042453147361034410013052 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�3(��(&�)=�)/#*&S*z*%�*��*�;+H�+C ,d,=j,@�,E�,/-I-$^-'�-/�-�-!�-.!;.	].0g.�.�.�.�.�.�.	�.�.0/F/S/Y//x/!�/ �/�/	�/�/00'0.0B0'R0z0�04�0�0��0�1 �1�1 �16
2�D23,3L3i3n3�u3�d4
5"5�95j6�|6�7�7�7�7�7	8\85m8�8�8�8 �89939I9MQ9e�9#:$):N:Q:7T:(�:%�:'�:+;/;;;G;d;w;�;T�;W�;M<+U<�<,�<*�<9�<(=4=F=X=&k=�=�=�=	�=�=�=>>
&>"1>T>c>�>(�>,�>�>

??8?I?8Z?�?#�?,�?*�?@.@5@R@p@v@5�@+�@6�@% A'FA%nA-�A�A�A
�A,�A'!B-IB*wB�B	�B�B7�BC�C�C4�CG/DUwD]�D}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Theme Editor Pro
PO-Revision-Date: 2022-03-02 11:12+0530
Last-Translator: 
Language-Team: 
Language: sv_SE
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* för alla operationer och för att tillåta vissa operationer kan du nämna operationens namn som, allow_operations="ladda upp, ladda ner". Obs: avgränsad med kommatecken(,). Standard: *->  Det kommer att förbjuda vissa användare genom att bara sätta sina id separerade med kommatecken (,). Om användaren är förbjuden kommer de inte att få tillgång till wp-filhanteraren i frontend.-> File Manager Theme. Standard: Light-> Filändrad eller Skapa datumformat. Standard: d M, Y h:i A-> Filhanterarens språk. Standard: English(en)-> Filemanager UI View. Standard: gridHandlingÅtgärder vid valda säkerhetskopiorAdmin kan begränsa alla användares åtgärder. Dölj också filer och mappar och kan ställa in olika - olika mappvägar för olika användare.Admin kan begränsa alla användarrollers åtgärder. Dölj också filer och mappar och kan ställa in olika - olika mappvägar för olika användarroller.Efter att ha aktiverat papperskorgen går dina filer till papperskorgen.Efter att ha aktiverat detta går alla filer till mediebiblioteket.KlartÄr du säker på att du vill ta bort valda säkerhetskopior?Är du säker på att du vill ta bort den här säkerhetskopian?Är du säker på att du vill återställa den här säkerhetskopian?SäkerhetskopieringsdatumSäkerhetskopiera nuAlternativ för säkerhetskopiering:Backup data (klicka för att ladda ner)Säkerhetskopieringsfiler kommer att vara underSäkerhetskopian körs, väntaSäkerhetskopian har tagits bort.Säkerhetskopiera/återställaSäkerhetskopior har tagits bort!förbjudaWebbläsare och operativsystem (HTTP_USER_AGENT)Köp PROKöp ProAvbrytÄndra tema här:Klicka för att köpa PROKodredigerare VisaBekräftaKopiera filer eller mapparFör närvarande hittades inga säkerhetskopior.RADERA FILERMörkSäkerhetskopiering av databasSäkerhetskopiering av databas gjort på datum Databassäkerhetskopiering gjord.Databasbackup har återställts.StandardStandard:RaderaVälja bortIgnorera denna notis.DoneraLadda ner filloggarLadda ner filerDuplicera eller klona en mapp eller filRedigera filloggarRedigera en filAktivera filer som överförs till mediebiblioteket?Aktivera papperskorgen?Fel: Det gick inte att återställa säkerhetskopian eftersom databassäkerhetskopieringen är stor. Försök att öka den högsta tillåtna storleken från inställningarna.Befintlig säkerhetskopiaExtrahera arkiv eller zippad filFilhanteraren - kortkodFilhanteraren - SystemegenskaperFile Manager Root Path, du kan ändra enligt ditt val.File Manager har en kodredigerare med flera teman. Du kan välja vilket tema som helst för kodredigeraren. Den visas när du redigerar en fil. Du kan också tillåta helskärmsläge för kodredigeraren.Lista över filoperationer:Filen finns inte att ladda ner.Säkerhetskopiering av filergråHjälpHär är "test" namnet på mappen som finns i rotkatalogen, eller så kan du ge sökvägen till undermappar som "wp-content/plugins". Om det lämnas tomt eller tomt kommer det åtkomst till alla mappar i rotkatalogen. Standard: RotkatalogHär kan admin ge åtkomst till användarroller för att använda filmanager. Admin kan ställa in standardåtkomstmapp och även styra uppladdningsstorlek för filhanteraren.Info om filenOgiltig säkerhetskod.Det kommer att tillåta alla roller att få åtkomst till filhanteraren i användargränssnittet eller Du kan enkelt använda för särskilda användarroller som allow_roles="editor,author" (avgränsad med komma(,))Det kommer att låsa som nämns med kommatecken. du kan låsa fler som ".php,.css,.js" etc. Standard: NullDet kommer att visa filhanteraren på gränssnittet. Men bara administratören kan komma åt det och styr från filhanterarens inställningar.Det kommer att visa filhanteraren på gränssnittet. Du kan styra alla inställningar från filhanterarens inställningar. Det kommer att fungera på samma sätt som backend WP filhanterare.Senaste loggmeddelandeLjusLoggarSkapa katalog eller mappSkapa filMaximal tillåten storlek vid tidpunkten för återställning av databassäkerhetskopiering.Maximal filöverföringsstorlek (upload_max_filesize)Minnesgräns (memory_limit)Säkerhetskopierings-id saknas.Parametertyp saknas.Saknade nödvändiga parametrar.Nej tackInget loggmeddelandeInga loggar hittades!Notera:Obs! Dessa är demo-skärmdumpar. Köp File Manager pro till Logs-funktioner.Obs: Detta är bara en demo-skärmdump. För att få inställningar, vänligen köp vår pro-version.Inget valt för säkerhetskopieringInget valt för säkerhetskopiering.OKOkÖvriga (Alla andra kataloger som finns i wp-innehåll)Andra säkerhetskopior gjorda på datum Övriga säkerhetskopieringar gjorda.Andra säkerhetskopiering misslyckades.Övriga säkerhetskopior har återställts.PHP-versionParametrar:Klistra in en fil eller mappAnge e-postadress.Vänligen ange förnamn.Ange efternamn.Ändra detta noggrant, fel sökväg kan leda till att filhanteraren plugin går ner.Öka fältvärdet om du får ett felmeddelande vid tidpunkten för säkerhetskopiering.PluginsPlugin-säkerhetskopiering gjord på datum Plugins backup klar.Säkerhetskopiering av plugins misslyckades.Plugin-säkerhetskopian har återställts.Lägg upp maximal filöverföringsstorlek (post_max_size)preferenserIntegritetspolicyOffentlig rotvägÅTERSTÄLLA FILERTa bort eller ta bort filer och mapparByt namn på en fil eller mappÅterställÅterställning körs, väntaFRAMGÅNGSpara ändringarSparande...Sök efter sakerSäkerhetsproblem.Välj allaVälj säkerhetskopior att radera!inställningarInställningar - KodredigerareInställningar - AllmäntInställningar - AnvändarbegränsningarInställningar - AnvändarrollbegränsningarInställningar Sparade.Kortkod - PROEnkelt klippa en fil eller mappSystemegenskaperAnvändarvillkorSäkerhetskopian lyckades uppenbarligen och är nu klar.TemanTeman säkerhetskopieras på datum Säkerhetskopiering av plugins misslyckades.Säkerhetskopiering av teman misslyckades.Teman har återställts.Tid nuTimeout (max_execution_time)Att skapa ett arkiv eller zipI dagANVÄNDA SIG AV:Det gick inte att skapa säkerhetskopia av databasen.Det gick inte att ta bort säkerhetskopian!Det gick inte att återställa DB-säkerhetskopiering.Det går inte att återställa andra.Det gick inte att återställa plugins.Det gick inte att återställa teman.Det gick inte att återställa uppladdningar.Ladda upp filloggarLadda upp filerUppladdningarUppladdningar säkerhetskopierade på datum Uppladdningar säkerhetskopiering klar.Uppladdningssäkerhetskopiering misslyckades.Uppladdningskopieringen har återställts.KontrolleraVisa loggWP filhanterareWP filhanterare - Säkerhetskopiering / återställningWP filhanterare-bidragVi älskar att få nya vänner! Prenumerera nedan och vi lovar att
    hålla dig uppdaterad med våra senaste nya plugins, uppdateringar,
    fantastiska erbjudanden och några specialerbjudanden.Välkommen till File ManagerDu har inte gjort några ändringar för att sparas.för åtkomst till läsbehörighet, notera: sant/falskt, standard: santför åtkomst till skrivbehörigheter för filer, notera: true/false, standard: falsedet kommer att gömma sig som nämns här. Obs: avgränsad med kommatecken(,). Standard: Nulllanguages/wp-file-manager-ms_MY.mo000064400000041566147361034410013063 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&u�&�((��(#�)@�)+
*&9*`*"i*��*�/+C�+E,
b,6p,/�,/�,--*-'<-"d-%�-�-�-�-�-'.+.4.=.C.W.k.~.�.!�.�.�.�..�. /+8/d/j/q/	w/�/�/�/�/#�/�/	�/-0/0�?0�0�01-1DJ1��1v2$�2
�2�2	�2�2��3
�4�4��4s�5��5��6?7R7Y7_7	z7J�72�788/8$F8k88�8�8Q�8Y�8)U9*9�9�9@�9)�9:;:&U:	|:
�:�:�:�:�:d�:X^;�;'�;�;<$<3><	r<
|<�<�<$�<�<�<&�<=(=
9=G=S=d= p=�=�=�=�="�=�=>$">G>T>,h>�>'�>�>�>!�>
? ???\?e?,n?"�?#�?"�?@%@!B@d@w@	�@)�@�@�@&�@A	 A*A&;AbA�}AAB,aBC�BI�BYC}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Theme Editor
PO-Revision-Date: 2022-03-01 11:21+0530
Last-Translator: 
Language-Team: 
Language: ms_MY
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* untuk semua operasi dan untuk membenarkan beberapa operasi anda boleh menyebut nama operasi seperti, allowed_operations="upload,download". Nota: dipisahkan dengan koma(,). Lalai: *-> Ini akan melarang pengguna tertentu dengan hanya meletakkan ID mereka dengan tanda koma (,). Sekiranya pengguna adalah Ban maka mereka tidak akan dapat mengakses pengurus fail wp di bahagian depan.-> Tema Pengurus Fail. Lalai: Light-> Fail diubah suai atau Buat format tarikh. Lalai: d M, Y h:i A-> Bahasa pengurus fail. Lalai: English(en)-> Paparan UI Filemanager. Lalai: gridTindakanTindakan apabila sandaran terpilihPentadbir boleh menyekat tindakan mana-mana pengguna. Sembunyikan juga fail dan folder dan boleh menetapkan jalur folder yang berbeza untuk pengguna yang berbeza.Pentadbir boleh menyekat tindakan mana-mana pengguna. Sembunyikan juga fail dan folder dan boleh tetapkan jalur folder yang berbeza untuk peranan pengguna yang berbeza.Setelah mengaktifkan sampah, fail anda akan masuk ke folder sampah.Setelah mengaktifkan ini semua fail akan masuk ke perpustakaan media.Semua SelesaiAdakah anda pasti mahu membuang sandaran yang dipilih?Adakah anda pasti mahu memadamkan sandaran ini?Adakah anda pasti mahu memulihkan sandaran ini?Tarikh SandaranSandarkan SekarangPilihan Sandaran:Data sandaran (klik untuk memuat turun)Fail sandaran akan berada di bawahSandaran sedang berjalan, sila tungguSandaran berjaya dipadamkan.Sandaran/PulihkanSandaran berjaya dikeluarkan!LaranganPenyemak Imbas dan OS (HTTP_USER_AGENT)Beli PROBeli ProBatalTukar Tema Di Sini:Klik untuk Beli PROPaparan editor kodSahkanSalin fail atau folderBuat masa ini tidak ada sandaran.HAPUS FILESGelapSandaran Pangkalan DataSandaran pangkalan data dilakukan pada tarikh Sandaran pangkalan data selesai.Sandaran pangkalan data berjaya dipulihkan.LalaiLalai:PadamNyahpilihKetepikan notis ini.SumbangMuat turun Log FailMuat turun failGandakan atau klon folder atau failSunting Fail LogEdit failDayakan Muat Naik Fail ke Perpustakaan Media?Dayakan Sampah?Ralat: Tidak dapat memulihkan sandaran kerana sandaran pangkalan data bersaiz berat. Sila cuba tingkatkan saiz Maksimum yang dibenarkan daripada tetapan Keutamaan.Sandaran Sedia AdaEkstrak fail arkib atau zipPengurus Fail - Kod PendekPengurus Fail - Sifat SistemLaluan Akar Pengurus Fail, anda boleh menukar mengikut pilihan anda.Pengurus Fail mempunyai penyunting kod dengan pelbagai tema. Anda boleh memilih mana-mana tema untuk penyunting kod. Ia akan dipaparkan semasa anda mengedit fail apa pun. Anda juga boleh membenarkan mod skrin penuh penyunting kod.Senarai Operasi Fail:Fail tidak wujud untuk dimuat turun.Sandaran FailKelabuTolonglahDi sini "ujian" ialah nama folder yang terletak pada direktori akar, atau anda boleh memberikan laluan untuk sub folder seperti "wp-content/plugins". Jika dibiarkan kosong atau kosong ia akan mengakses semua folder pada direktori akar. Lalai: Direktori akarDi sini admin dapat memberi akses kepada peranan pengguna untuk menggunakan filemanager. Admin boleh menetapkan Folder Akses Lalai dan juga mengawal ukuran muat naik filemanager.Maklumat failKod Keselamatan Tidak Sah.Ia akan membenarkan semua peranan untuk mengakses pengurus fail di bahagian hadapan atau Anda boleh menggunakan mudah untuk peranan pengguna tertentu seperti dibenarkan_roles="editor,author" (dipisahkan dengan koma(,))Ia akan mengunci yang disebut dalam koma. anda boleh mengunci lebih banyak seperti ".php,.css,.js" dsb. Lalai: NullIa akan menunjukkan pengurus fail di bahagian hadapan. Tetapi hanya Pentadbir boleh mengaksesnya dan akan mengawal dari tetapan pengurus fail.Ia akan menunjukkan pengurus fail di bahagian hadapan. Anda boleh mengawal semua tetapan daripada tetapan pengurus fail. Ia akan berfungsi sama seperti Pengurus Fail WP belakang.Mesej Log TerakhirCahayabalakBuat direktori atau folderBuat failSaiz maksimum yang dibenarkan pada masa pemulihan sandaran pangkalan data.Saiz muat naik fail maksimum (upload_max_filesize)Had Memori (memory_limit)Id sandaran tiada.Jenis parameter tiada.Parameter yang diperlukan tidak ada.Tidak, Terima kasihTiada mesej logLog tidak dijumpai!Nota:Nota: Ini adalah tangkapan skrin demo. Sila beli fungsi Pengurus Fail pro ke Log.Nota: Ini hanya tangkapan skrin demo. Untuk mendapatkan tetapan sila beli versi pro kami.Tiada apa-apa yang dipilih untuk sandaranTiada apa-apa yang dipilih untuk sandaran.okeyOkeyLain-lain (Sebarang direktori lain terdapat di dalam wp-content)Sandaran yang lain dilakukan pada tarikh Sandaran yang lain selesai.Sandaran yang lain gagal.Sandaran yang lain berjaya dipulihkan.Versi PHPParameter:Tampal fail atau folderSila Masukkan Alamat E-mel.Sila Masukkan Nama Depan.Sila Masukkan Nama Akhir.Tolong ubah ini dengan berhati-hati, jalan yang salah boleh menyebabkan pemalam pengurus fail turun.Sila tingkatkan nilai medan jika anda mendapat mesej ralat pada masa pemulihan sandaran.PemalamSandaran pemalam dilakukan pada tarikh Sandaran pemalam selesai.Sandaran pemalam gagal.Sandaran pemalam berjaya dipulihkan.Hantar saiz muat naik fail maksimum (post_max_size)KeutamaanDasar PrivasiLaluan Akar AwamKEMBALIKAN FILKeluarkan atau hapus fail dan folderNamakan semula fail atau folderPulihkanPemulihan sedang berjalan, sila tungguKEJAYAANSimpan PerubahanMenyimpan ...Cari barangIsu Keselamatan.Pilih semuaPilih sandaran untuk dipadamkan!TetapanTetapan - Penyunting kodTetapan - UmumTetapan - Sekatan PenggunaTetapan - Sekatan Peranan PenggunaTetapan disimpan.Kod pendek - PROPotong fail atau folder dengan mudahSifat SistemSyarat PerkhidmatanSandaran nampaknya berjaya dan kini lengkap.TemaPencadangan tema dilakukan pada tarikh Sandaran tema selesai.Sandaran tema gagal.Sandaran tema berjaya dipulihkan.Masa sekarangWaktu tamat (max_execution_time)Untuk membuat arkib atau zipHari iniGUNAKAN:Tidak dapat membuat sandaran pangkalan data.Tidak dapat mengeluarkan sandaran!Tidak dapat memulihkan sandaran DB.Tidak dapat memulihkan orang lain.Tidak dapat memulihkan pemalam.Tidak dapat memulihkan tema.Tidak dapat memulihkan muat naik.Muat Naik Log FailMemuat naik failMuat naikMuat naik sandaran dilakukan pada tarikh Muat naik sandaran selesai.Sandaran muat naik gagal.Sandaran muat naik berjaya dipulihkan.SahkanLihat LogPengurus Fail WPPengurus Fail WP - Sandaran / PulihkanSumbangan Pengurus Fail WPKami gemar membuat rakan baru! Langgan di bawah dan kami berjanji untuk
    membuat anda terkini dengan plugin, kemas kini baru kami yang terkini,
    tawaran hebat dan beberapa tawaran istimewa.Selamat datang ke Pengurus FailAnda belum membuat perubahan untuk disimpan.untuk kebenaran akses membaca fail, nota: benar/salah, lalai: benaruntuk akses untuk menulis kebenaran fail, nota: benar/salah, lalai: palsuia akan menyembunyikan yang disebut di sini. Nota: dipisahkan dengan koma(,). Lalai: Nulllanguages/wp-file-manager-eu.po000064400000066527147361034410012457 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 17:39+0530\n"
"PO-Revision-Date: 2022-03-03 11:57+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Gaien segurtasun kopia behar bezala berrezarri da."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Ezin dira gaiak leheneratu."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Kargak babeskopiak behar bezala berrezarri dira."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Ezin dira kargak leheneratu."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Beste segurtasun kopia batzuk ongi zaharberritu dira."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Ezin dira beste batzuk leheneratu."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Pluginen segurtasun kopia behar bezala berrezarri da."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Ezin dira pluginak leheneratu."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Datu basearen segurtasun kopia behar bezala berrezarri da."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Dena eginda"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Ezin da DB babeskopia leheneratu."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Babeskopiak behar bezala kendu dira!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Ezin da kendu babeskopia!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Datu-basearen babeskopia egunean egin da "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Pluginen segurtasun kopia egunean egin da "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Gaien segurtasun kopia egunean egina "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Kargatutako segurtasun kopiak egunean egin dira "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Beste kopia batzuk egunean egindakoak "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Erregistroak"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Ez da egunkaririk aurkitu!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Ez da ezer hautatu babeskopia egiteko"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Segurtasun Arazoa."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Datu-basearen babeskopia egin da."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Ezin da sortu datu-basearen babeskopia."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Pluginen babeskopia egin da."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Pluginen babeskopia huts egin du."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Gaien babeskopia eginda."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Gaien babeskopiak huts egin du."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Kargatzen babeskopia eginda."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Ezin izan dira kargatzen babeskopiak."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Beste batzuen babeskopia eginda."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Beste batzuen babeskopia huts egin dute."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP fitxategi kudeatzailea"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Ezarpenak"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Lehentasunak"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Sistemaren propietateak"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Babeskopia/Berreskuratu"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Erosi Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Eman"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Ez dago fitxategia deskargatzeko."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Segurtasun kodea baliogabea."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Babeskopiaren IDa falta da."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametro mota falta da."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Beharrezko parametroak falta dira."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Errorea: Ezin da babeskopia berrezarri datu-basearen babeskopia tamaina "
"handikoa delako. Mesedez, saiatu Hobespenen ezarpenetatik onartutako "
"Gehienezko tamaina handitzen."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Hautatu ezabatzeko babeskopiak!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Ziur zaude hautatutako segurtasun kopiak kendu nahi dituzula?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Babeskopiak martxan daude, itxaron mesedez"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Berreskuratzea martxan dago, itxaron mesedez"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Ez da ezer hautatu babeskopia egiteko."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP Fitxategi Kudeatzailea - Babeskopia / Berreskuratu"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Babeskopien aukerak:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Datu basearen babeskopia"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Fitxategien babeskopia"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Pluginak"

#: inc/backup.php:71
msgid "Themes"
msgstr "Gaiak"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Kargak"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr ""
"Beste batzuk (wp-content barruan aurkitzen diren beste edozein direktorio)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Babeskopia orain"

#: inc/backup.php:89
msgid "Time now"
msgstr "Ordua"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ARRAKASTA"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Babeskopiak behar bezala ezabatu dira."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ados"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "EZABATU FITXATEGIAK"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Ziur zaude segurtasun kopia hau ezabatu nahi duzula?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Utzi"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Berretsi"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "FITXATEGIAK BERRESKURATU"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Ziur zaude segurtasun kopia hau leheneratu nahi duzula?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Azken erregistro mezua"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Badirudi babeskopiak arrakasta izan duela eta amaitu dela."

#: inc/backup.php:171
msgid "No log message"
msgstr "Ez dago egunkari mezurik"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Dauden segurtasun kopiak"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Babeskopia-data"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Babeskopia datuak (egin klik deskargatzeko)"

#: inc/backup.php:190
msgid "Action"
msgstr "Ekintza"

#: inc/backup.php:210
msgid "Today"
msgstr "Gaur"

#: inc/backup.php:239
msgid "Restore"
msgstr "Berreskuratu"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Ezabatu"

#: inc/backup.php:241
msgid "View Log"
msgstr "Ikusi erregistroa"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Une honetan ez da babeskopiarik aurkitu."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Aukeratutako babeskopien gaineko ekintzak"

#: inc/backup.php:251
msgid "Select All"
msgstr "Hautatu guztiak"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Desautatu"

#: inc/backup.php:254
msgid "Note:"
msgstr "Ohar:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Babeskopien fitxategiak azpian egongo dira"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP fitxategi kudeatzailearen ekarpena"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Oharra: Demo pantaila-argazkiak dira. Mesedez, erosi File Manager pro "
"egunkariak funtzioetarako."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Egin klik PRO erosteko"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Erosi PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Editatu fitxategien erregistroak"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Deskargatu fitxategien erregistroak"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Kargatu fitxategiak erregistroak"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Ezarpenak gorde dira."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Baztertu ohar hau."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Ez duzu gordetzeko aldaketarik egin."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Sustraien bide publikoa"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Fitxategi kudeatzailearen erro bidea, zure aukeraren arabera alda dezakezu."

#: inc/root.php:59
msgid "Default:"
msgstr "Lehenetsia:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Aldatu hau arretaz, bide okerrak fitxategi kudeatzailearen plugina jaistera "
"eraman dezake."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Zaborrontzia gaitu nahi duzu?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Zakarrontzia gaitu ondoren, zure fitxategiak zakarrontzira joango dira."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Multimedia liburutegian fitxategiak kargatu nahi dituzu?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Gaitu ondoren fitxategi guztiak mediatekara joango dira."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Onartutako gehienezko tamaina datu-basearen babeskopia leheneratzeko unean."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Mesedez, handitu eremuaren balioa babeskopia leheneratzeko unean errore-"
"mezua jasotzen ari bazara."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Aldaketak gorde"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Ezarpenak - Orokorra"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Oharra: hau demo pantaila-argazkia da. Ezarpenak lortzeko, mesedez erosi "
"gure pro bertsioa."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Hemen administratzaileak erabiltzaileen roletarako sarbidea eman dezake "
"filemanager erabiltzeko. Administratzaileak sarbide-karpeta lehenetsia ezar "
"dezake eta fitxategi-kudeatzailearen igoeraren tamaina ere kontrola dezake."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Ezarpenak - Kode editorea"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Fitxategi kudeatzaileak kode editorea du gai anitzekin. Kode editorerako "
"edozein gai hauta dezakezu. Edozein fitxategi editatzen duzunean bistaratuko "
"da. Kode editorearen pantaila osoko modua ere baimendu dezakezu."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kode editorea Ikusi"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Ezarpenak - Erabiltzaileen murriztapenak"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administratzaileak edozein erabiltzaileren ekintzak muga ditzake. "
"Fitxategiak eta karpetak ere ezkutatu eta erabiltzaile desberdinentzako "
"karpeten bide desberdinak ezar ditzakezu."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Ezarpenak - Erabiltzaile rolen mugak"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administratzaileak edozein erabiltzaileren ekintzak muga ditzake. "
"Fitxategiak eta karpetak ezkutatu eta karpeta desberdinak ezar ditzakezu "
"erabiltzaileen rol desberdinetarako."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Fitxategi kudeatzailea - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ERABILERA:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Fitxategi-kudeatzailea frontend-ean erakutsiko du. Fitxategi-kudeatzailearen "
"ezarpenetatik ezarpen guztiak kontrola ditzakezu. Backend WP Fitxategi-"
"kudeatzaileak bezala funtzionatuko du."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Fitxategi-kudeatzailea frontend-ean erakutsiko du. Baina Administratzaileak "
"bakarrik atzi dezake eta fitxategi-kudeatzailearen ezarpenetatik "
"kontrolatuko du."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametroak:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Rol guztiei fitxategi-kudeatzailea atzitzeko aukera emango die frontend-ean "
"edo erabiltzaile-rol jakin batzuetarako erabil dezakezu, hala nola, "
"allow_roles=\"editor,author\" (komaz bereizita (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Hemen \"test\" erroko direktorioan dagoen karpetaren izena da, edo "
"azpikarpeten bidea eman dezakezu \"wp-content/plugins\" bezala. Hutsik edo "
"hutsik uzten baduzu, erroko direktorioko karpeta guztietara sartuko da. "
"Lehenetsia: Erro direktorioa"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"fitxategiak idazteko baimenak sartzeko, oharra: egia/gezurra, lehenetsia: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"fitxategiak irakurtzeko baimena eskuratzeko, oharra: egia/gezurra, "
"lehenetsia: egia"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"hemen aipatua ezkutatuko da. Oharra: komaz bereizita (,). Lehenetsia: nulua"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Koma artean aipatutako blokeatuko da. \".php,.css,.js\" eta abar bezalako "
"gehiago blokeatu ditzakezu. Lehenetsia: nulua"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* Eragiketa guztietarako eta eragiketa batzuk ahalbidetzeko, eragiketaren "
"izena aipa dezakezu, hala nola, allow_operations=\"upload,download\". "
"Oharra: komaz bereizita (,). Lehenetsia: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Fitxategien eragiketen zerrenda:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Egin direktorioa edo karpeta"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Egin fitxategia"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Aldatu fitxategi edo karpeta bat"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Karpeta edo fitxategi bat bikoiztu edo klonatu"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Itsatsi fitxategi edo karpeta bat"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Debeku"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Artxiboa edo zip kodea egiteko"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Atera artxiboa edo konprimitutako fitxategia"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopiatu fitxategiak edo karpetak"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Fitxategi edo karpeta bat moztu sinpleki"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Editatu fitxategi bat"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Kendu edo ezabatu fitxategiak eta karpetak"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Deskargatu fitxategiak"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Fitxategiak igo"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Gauzak bilatu"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Fitxategiaren informazioa"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Laguntza"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Erabiltzaile partikularrak debekatuko ditu komaz bereizitako IDak jarrita "
"(,). Erabiltzailea Debekatuta badago, ezin izango dute frontendean wp "
"fitxategi kudeatzailea sartu."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI View. Lehenetsia: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Fitxategia aldatu edo Sortu data formatua. Lehenetsia: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Fitxategi kudeatzailea Hizkuntza. Lehenetsia: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Fitxategi kudeatzailearen gaia. Lehenetsia: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Fitxategi kudeatzailea - Sistemaren propietateak"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP bertsioa"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Gehienezko fitxategi kargaren tamaina (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Igotako gehienezko fitxategi kargaren tamaina (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Memoriaren muga (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Denbora-muga (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Arakatzailea eta OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Hemen aldatu gaia:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Lehenetsia"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Iluna"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Argia"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "grisa"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Ongi etorri fitxategi kudeatzailera"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Lagun berriak egitea maite dugu! Harpidetu behean eta hala agintzen dugu\n"
"    eguneratuta mantendu zaitez gure azken plugin berriekin, "
"eguneratzeekin,\n"
"    eskaintza bikainak eta eskaintza berezi batzuk."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Mesedez, jarri izena."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Mesedez, idatzi abizena."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Mesedez, idatzi helbide elektronikoa."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Egiaztatu"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ez eskerrik asko"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Zerbitzu-baldintzak"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Pribatutasun politika"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Gordetzen ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Ados"

#~ msgid "Backup not found!"
#~ msgstr "Babeskopia ez da aurkitu!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Babeskopia behar bezala kendu da!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">BEz da ezer hautatu babeskopia egiteko</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Segurtasun arazoa.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Datu-basearen babeskopia egin da.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ezin da datu basearen segurtasun kopia "
#~ "sortu.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Pluginen babeskopia egin da.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Pluginen segurtasun kopiak huts egin du."
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Gaien babeskopia egin da.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Gaien babeskopiak huts egin du.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Kargatutako kopiak egin dira.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ezin izan da kargatzearen segurtasun "
#~ "kopia egin.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Beste kopia batzuk egin dira.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Beste batzuek segurtasun kopia huts egin "
#~ "dute.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Guztia Eginda</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Kudeatu WP fitxategiak."

#~ msgid "Extensions"
#~ msgstr "Extensions"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Egin dohaintza batzuk, plugin gehiago egonkortu ahal izateko. Zure aukera "
#~ "zenbatekoa ordaindu ahal izango duzu."
languages/wp-file-manager.pot000064400000001471147361034410012217 0ustar00#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-06 09:29+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: \n"
"Language: \n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Loco https://localise.biz/"

#. Name of the plugin
msgid "WP File Manager"
msgstr ""

#. Description of the plugin
msgid "Manage your WP files."
msgstr ""

#. URI of the plugin
msgid "https://wordpress.org/plugins/wp-file-manager"
msgstr ""

#. Author of the plugin
msgid "mndpsingh287"
msgstr ""

#. Author URI of the plugin
msgid "https://profiles.wordpress.org/mndpsingh287"
msgstr ""
languages/wp-file-manager-gd.po000064400000071365147361034410012434 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 18:25+0530\n"
"PO-Revision-Date: 2022-02-25 18:28+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: gd\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n < 2 ? 0 : n == 2 ? 1 : 2;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Cùl-taic tèamaichean air ath-nuadhachadh gu soirbheachail."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Cha ghabh cuspairean a thoirt air ais."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Luchdaich suas cùl-taic air ais gu soirbheachail."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Cha ghabh luchdachadh suas a thoirt air ais."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Chaidh cuid eile den chùl-taic ath-nuadhachadh gu soirbheachail."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Cha ghabh feadhainn eile a thoirt air ais."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Cùl-taic plugins air ath-nuadhachadh gu soirbheachail."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Cha ghabh plugins a thoirt air ais."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Cùl-taic stòr-dàta air ath-nuadhachadh gu soirbheachail."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Uile Dèanta"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Cha ghabh cùl-taic DB a thoirt air ais."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Cùl-taic air a thoirt air falbh gu soirbheachail!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Cha ghabh cùl-taic a thoirt air falbh!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Cùl-taic stòr-dàta air a dhèanamh air ceann-latha "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Cùl-taic plugins air a dhèanamh air ceann-latha "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Cùl-taic cuspairean air a dhèanamh air ceann-latha "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Luchdaich suas cùl-taic air a dhèanamh air ceann-latha "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Cuid eile cùl-taic air a dhèanamh air ceann-latha "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Logaichean"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Cha deach logaichean a lorg!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Chan eil dad air a thaghadh airson cùl-taic"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Cùis tèarainteachd."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Cùl-taic stòr-dàta air a dhèanamh."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Cha b' urrainn dhuinn cùl-taic stòr-dàta a chruthachadh."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Cùl-taic plugins air a dhèanamh."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Dh'fhàillig lethbhreac-glèidhidh nam plugan."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Cùl-taic nan cuspairean air a dhèanamh."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Dh'fhàillig lethbhreac-glèidhidh nan cuspairean."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Dèan lethbhreac dhen luchdadh a-nuas."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Dh'fhàillig luchdadh suas lethbhreac-glèidhidh."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Cùl-taic cuid eile air a dhèanamh."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Dh'fhàillig cuid eile lethbhreac-glèidhidh."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Manaidsear faidhle WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Suidhichidhean"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Roghainnean"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Togalaichean an t-siostaim"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Cùl-taic / Ath-nuadhachadh"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Ceannaich Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Thoir seachad"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Chan eil faidhle ann airson a luchdachadh sìos."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Còd tèarainteachd neo-dhligheach."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Id cùl-taic a dhìth."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Seòrsa paramadair a dhìth."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Paramadairean a tha a dhìth."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Mearachd: Cha ghabh cùl-taic a thoirt air ais a chionn 's gu bheil cùl-taic "
"an stòr-dàta trom ann am meud. Feuch ris a’ mheud as motha a tha ceadaichte "
"àrdachadh bho roghainnean Roghainnean."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Tagh cùl-taic(ean) airson an sguabadh às!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr ""
"A bheil thu cinnteach gu bheil thu airson cùl-taic (ean) taghte a thoirt air "
"falbh?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Tha cùl-taic a ’ruith, fuirich ort"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Tha ath-nuadhachadh a’ ruith, fuirich"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Chan eil dad air a thaghadh airson cùl-taic."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Manaidsear faidhle WP - Cùl-taic / Ath-nuadhachadh"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Roghainnean cùl-taic:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Cùl-taic stòr-dàta"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Cùl-taic faidhlichean"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Cuspairean"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Luchdaich suas"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr ""
"Feadhainn eile (Stiùiridhean sam bith eile a lorgar am broinn susbaint wp)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Cùl-taic a-nis"

#: inc/backup.php:89
msgid "Time now"
msgstr "Ùine a-nis"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "URNUIGH"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Chaidh an cùl-taic a dhubhadh às gu soirbheachail."

#: inc/backup.php:102
msgid "Ok"
msgstr "Glè mhath"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "FILES DELETE"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr ""
"A bheil thu cinnteach gu bheil thu airson an cùl-taic seo a dhubhadh às?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Sguir dheth"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Dearbhaich"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "FILES RESTORE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr ""
"A bheil thu cinnteach gu bheil thu airson an cùl-taic seo a thoirt air ais?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Teachdaireachd Log mu dheireadh"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr ""
"Tha e coltach gun do shoirbhich leis an cùl-taic agus tha e a-nis deiseil."

#: inc/backup.php:171
msgid "No log message"
msgstr "Gun teachdaireachd log"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Cùl-taic (ean) gnàthaichte"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Ceann-latha cùl-taic"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Dàta cùl-taic (cliog gus luchdachadh sìos)"

#: inc/backup.php:190
msgid "Action"
msgstr "Gnìomh"

#: inc/backup.php:210
msgid "Today"
msgstr "An-diugh"

#: inc/backup.php:239
msgid "Restore"
msgstr "Ath-nuadhachadh"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Cuir às"

#: inc/backup.php:241
msgid "View Log"
msgstr "Faic Log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "An-dràsta cha deach cùl-taic (ean) a lorg."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Gnìomhan air cùl-taic (ean) taghte"

#: inc/backup.php:251
msgid "Select All"
msgstr "Tagh Uile"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deselect"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Bidh faidhlichean cùl-taic fo"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Tabhartas Manaidsear File WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nota: Is e seo seallaidhean-sgrìn demo. Feuch an ceannaich thu File Manager "
"pro gu gnìomhan Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Cliog gus PRO a cheannach"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Ceannaich PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Deasaich logaichean faidhlichean"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Luchdaich sìos logaichean faidhle"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Luchdaich suas logaichean faidhlichean"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Suidhich air a shàbhaladh."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Cuir às don bhrath seo."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr ""
"Cha do rinn thu atharrachaidhean sam bith airson a bhith air an sàbhaladh."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Slighe freumha poblach"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Root Path Manaidsear File, faodaidh tu atharrachadh a rèir do roghainn."

#: inc/root.php:59
msgid "Default:"
msgstr "Default:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Feuch an atharraich thu seo gu faiceallach, faodaidh slighe ceàrr toirt air "
"plugan manaidsear faidhle a dhol sìos."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Dèan comas air sgudal?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Às deidh sgudal a chomasachadh, thèid na faidhlichean agad gu pasgan sgudail."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr ""
"Dèan comas air faidhlichean a luchdachadh suas gu leabharlann nam meadhanan?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Às deidh seo a chomasachadh thèid a h-uile faidhle gu leabharlann nam "
"meadhanan."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"An ìre as àirde a tha ceadaichte aig àm ath-nuadhachadh cùl-taic an stòr-"
"dàta."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Feuch an àrdaich thu luach an raoin ma tha thu a’ faighinn teachdaireachd "
"mearachd aig àm ath-nuadhachadh cùl-taic."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Sàbhail atharrachaidhean"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Suidhichidhean - Coitcheann"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nota: Chan eil an seo ach glacadh-sgrìn demo. Gus suidheachaidhean "
"fhaighinn, ceannaich an dreach pro againn."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"An seo faodaidh admin cothrom a thoirt do dhleastanasan luchd-cleachdaidh "
"gus manaidsear faidhle a chleachdadh. Faodaidh an rianachd Folder Access "
"Default a shuidheachadh agus cuideachd smachd a chumail air meud luchdaidh "
"suas faidhle."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Suidhichidhean - Deasaiche còd"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Tha deasaiche còd aig Manaidsear File le iomadh cuspair. Faodaidh tu cuspair "
"sam bith a thaghadh airson deasaiche còd. Nochdaidh e nuair a dheasaicheas "
"tu faidhle sam bith. Cuideachd faodaidh tu modh làn-sgrìn de dheasaiche còd "
"a cheadachadh."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Sealladh deasaiche còd"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Suidhichidhean - Cuingeachaidhean cleachdaiche"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Faodaidh rianachd bacadh a chuir air gnìomhan neach-cleachdaidh sam bith. "
"Cuideachd cuir am falach faidhlichean agus pasgain agus faodaidh iad "
"slighean eadar-dhealaichte - pasgain eadar-dhealaichte a shuidheachadh "
"airson diofar luchd-cleachdaidh."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Suidhichidhean - Cuingeachaidhean Dreuchd Cleachdaiche"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Faodaidh rianachd cuingealachadh a dhèanamh air gnìomhan cleachdaiche sam "
"bith. Cuideachd cuir am falach faidhlichean agus pasganan agus faodaidh iad "
"slighean eadar-dhealaichte - pasgain eadar-dhealaichte a shuidheachadh "
"airson dreuchdan luchd-cleachdaidh eadar-dhealaichte."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Manaidsear faidhle - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "CLEACHDADH:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Seallaidh e manaidsear fhaidhlichean air a’ cheann aghaidh. 'S urrainn dhut "
"smachd a chumail air a h-uile suidheachadh bho roghainnean manaidsear "
"fhaidhlichean. Obraichidh e an aon rud ri backend WP File Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Seallaidh e manaidsear fhaidhlichean air a’ cheann aghaidh. Ach chan fhaod "
"ach an Rianaire faighinn thuige agus smachdaichidh e bho shuidheachaidhean "
"manaidsear faidhle."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Paramadairean:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Leigidh e leis a h-uile dreuchd cothrom fhaighinn air manaidsear "
"fhaidhlichean air a’ cheann aghaidh no Faodaidh tu a chleachdadh gu sìmplidh "
"airson dreuchdan cleachdaiche sònraichte mar a leithid ceadaichte_roles = \" "
"deasaiche, ùghdar\" (air a sgaradh le cromag(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Seo “test” an t-ainm pasgan a tha suidhichte air an eòlaire freumh, no "
"faodaidh tu slighe a thoirt dha fo-phasganan mar “wp-content/plugins”. Ma "
"dh’ fhàgas e falamh no ma dh’ fhàgas e falamh gheibh e cothrom air a h-uile "
"pasgan air root eòlaire. Default: eòlaire root"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"airson cothrom air ceadan faidhlichean a sgrìobhadh, thoir an aire: fìor/"
"meallta, bunaiteach: meallta"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"airson cothrom air cead faidhlichean a leughadh, thoir an aire: fìor/"
"meallta, bunaiteach: fìor"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"falaichidh e air ainmeachadh an seo. Nota: air a sgaradh le cromag (,). "
"Default: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Glasaidh e air ainmeachadh ann an cromagan. faodaidh tu barrachd a ghlasadh "
"mar \".php,.css,.js\" msaa. Default: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* airson a h-uile gnìomh agus gus beagan obrachaidh a cheadachadh faodaidh "
"tu ainm na h-obrachaidh ainmeachadh mar, allowed_operations = \"luchdachadh "
"suas, luchdaich sìos\". Nota: air a sgaradh le cromag (,). Bunaiteach: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Liosta Obraichean faidhle:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Dèan eòlaire no pasgan"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Dèan faidhle"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Ath-ainmich faidhle no pasgan"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Dèan dùblachadh no clone pasgan no faidhle"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Cuir a-steach faidhle no pasgan"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Ban"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Gus tasglann no zip a dhèanamh"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Thoir a-mach tasglann no faidhle le zip"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Dèan lethbhreac de fhaidhlichean no de phasganan"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Gearr sìmplidh faidhle no pasgan"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Deasaich faidhle"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Thoir air falbh no cuir às do fhaidhlichean agus phasganan"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Luchdaich sìos faidhlichean"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Luchdaich suas faidhlichean"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Rannsaich rudan"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Fiosrachadh mun fhaidhle"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Cuideachadh"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Cuiridh e casg air luchd-cleachdaidh sònraichte le bhith dìreach a ’cur "
"an cuid ids air an sgaradh le cromagan (,). Ma tha an cleachdaiche Ban an "
"uairsin cha bhith e comasach dhaibh faighinn gu manaidsear faidhle wp aig a "
"’cheann aghaidh."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI View. Default: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Faidhle air atharrachadh no cruthaich cruth ceann-latha. Default: d M, Y "
"h: i A."

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Manaidsear faidhle Cànan. Default: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Cuspair Manaidsear File. Default: Solas"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Manaidsear faidhle - Togalaichean Siostam"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Tionndadh PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Meud as motha de luchdachadh suas faidhle (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Post meud luchdachadh suas faidhle as àirde (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Cuingealachadh Cuimhne (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Ùine (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Brabhsair agus OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Atharraich Cuspair an seo:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Default"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Dorcha"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Solas"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "glas"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Fàilte gu Manaidsear File"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Tha sinn dèidheil air caraidean ùra a dhèanamh! Subscribe gu h-ìosal agus "
"tha sinn a ’gealltainn\n"
"    a ’cumail fios riut mu na plugins, ùrachaidhean, as ùire againn\n"
"    cùmhnantan uamhasach agus beagan thairgsean sònraichte."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Cuir a-steach a ’chiad ainm."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Cuir a-steach ainm mu dheireadh."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Cuir a-steach seòladh puist-d."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Dearbhaich"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Chan eil taing"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Cumhachan Seirbheis"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Poileasaidh Dìomhaireachd"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "A ’sàbhaladh ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Ceart gu leòr"

#~ msgid "Backup not found!"
#~ msgstr "Cha lorgar cùl-taic!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Cùl-taic air a thoirt air falbh gu soirbheachail!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Cha deach dad a thaghadh airson cùl-"
#~ "taic</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Cuspair tèarainteachd.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Cùl-taic stòr-dàta air a dhèanamh.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Cha ghabh cùl-taic stòr-dàta a "
#~ "chruthachadh.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Cùl-taic plugins air a dhèanamh.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Dh'fhàillig cùl-taic plugins.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Cùl-taic cuspairean air a dhèanamh.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Dh'fhàillig cùl-taic Cuspairean.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Luchdaich suas cùl-taic air a dhèanamh."
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Dh'fhàillig cùl-taic luchdaidh suas.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Cuid eile cùl-taic air a dhèanamh.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Dh ’fhàillig cùl-taic cuid eile.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Uile air a dhèanamh</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Stiùirich na faidhlichean WP agad."

#~ msgid "Extensions"
#~ msgstr "Leudachadh"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Cuir a-steach beagan tabhartas, gus plugan a dhèanamh nas seasmhaiche. "
#~ "Faodaidh tu an àireamh de do roghainn a phàigheadh."
languages/wp-file-manager-el.mo000064400000063642147361034410012436 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&YN(l�)L+�b+`�+]L,�,R�,m-�r.��/��021�L1|�1~M2S�2E 3Pf3u�3\-4j�4V�4OL5Z�5�5f6s6�6�6$�66�62
7=73T7[�7�78Z8�n8p�8�k9�9:*:;:<P:�:,�:�:]�::A;0|;j�;D<�]<8�=H4>E}>M�>�?��?1�A8�AKBZBcB�rB�7D%�E6�Ex,F��G6oH9�I4�JKK9/K#iK��K[GL%�LU�L0MBPM�M.�M:�MN�)N��Nq�Or)P�P�Pg�Pc"Qd�Q>�Qi*R�R�R:�R3�R-*S1XS��S�aT%U�6Ue�UbVx�Vn�VhW#W�W!�WM�W:$X_X@rX�X*�X�XYY<YOTY�Y:�Y!�Y8ZCMZ3�Z%�ZA�Z'-[U[{k[�[u�[hj\^�\m2]�],�]A�]^,^}8^d�^g_@�_O�_D`PY`:�`%�`ah&a[�aj�a�Vb�b2�b&cxDc=�ct�cDpeQ�e�f��f�
g}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 11:32+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: el
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* για όλες τις λειτουργίες και για να επιτρέψετε κάποια λειτουργία, μπορείτε να αναφέρετε το όνομα της λειτουργίας ως like, allow_operations="upload,download". Σημείωση: χωρίζεται με κόμμα(,). Προκαθορισμένο: *-> Θα απαγορεύσει συγκεκριμένους χρήστες βάζοντας απλώς τα αναγνωριστικά τους διαχωρισμένα με κόμμα(,). Εάν ο χρήστης είναι Ban, τότε δεν θα έχει πρόσβαση στον διαχειριστή αρχείων wp στο μπροστινό μέρος.-> Θέμα Διαχείριση αρχείων. Προεπιλογή: Light-> Τροποποίηση αρχείου ή Δημιουργία μορφής ημερομηνίας. Προεπιλογή: d M, Y h:i A-> Γλώσσα διαχείρισης αρχείων. Προεπιλογή: Αγγλικά (en)-> Προβολή διεπαφής χρήστη Filemager. Προεπιλογή: πλέγμαActionΕνέργειες σε επιλεγμένα αντίγραφα ασφαλείαςΟ διαχειριστής μπορεί να περιορίσει τις ενέργειες κάποιου χρήστη. Επίσης, αποκρύπτει αρχεία και φακέλους και μπορεί να ορίσει διαφορετικές διαδρομές διαφορετικών φακέλων για διαφορετικούς χρήστες.Ο διαχειριστής μπορεί να περιορίσει τις ενέργειες οποιουδήποτε χρήστη. Επίσης, αποκρύπτει αρχεία και φακέλους και μπορεί να ορίσει διαφορετικές διαδρομές διαφορετικών φακέλων για διαφορετικούς ρόλους χρηστών.Αφού ενεργοποιήσετε τον κάδο απορριμμάτων, τα αρχεία σας θα μεταβούν στον φάκελο απορριμμάτων.Αφού την ενεργοποιήσετε όλα τα αρχεία θα μεταβούν στη βιβλιοθήκη πολυμέσων.Ολα τελείωσανΕίστε βέβαιοι ότι θέλετε να αφαιρέσετε επιλεγμένα αντίγραφα ασφαλείας;Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αντίγραφο ασφαλείας;Είστε βέβαιοι ότι θέλετε να επαναφέρετε αυτό το αντίγραφο ασφαλείας;Ημερομηνία δημιουργίας αντιγράφων ασφαλείαςΔημιουργία αντιγράφων ασφαλείας τώραΕπιλογές δημιουργίας αντιγράφων ασφαλείας:Δημιουργία αντιγράφων ασφαλείας δεδομένων (κάντε κλικ για λήψη)Τα αρχεία αντιγράφων ασφαλείας θα βρίσκονται κάτωΗ δημιουργία αντιγράφων ασφαλείας εκτελείται, περιμένετεΤο αντίγραφο ασφαλείας διαγράφηκε με επιτυχία.Δημιουργία αντιγράφων ασφαλείας/ΕπαναφοράΤα αντίγραφα ασφαλείας καταργήθηκαν με επιτυχία!ΑπαγόρευσηΠρόγραμμα περιήγησης και λειτουργικό σύστημα (HTTP_USER_AGENT)Αγοράστε PROΑγοράστε ProΜαταίωσηΑλλάξτε το θέμα εδώ:Κάντε κλικ για να αγοράσετε PROΠροβολή κώδικα επεξεργαστήΕπιβεβαιώνωΑντιγραφή αρχείων ή φακέλωνΑυτήν τη στιγμή δεν βρέθηκαν αντίγραφα ασφαλείας.ΔΙΑΓΡΑΦΗ ΑΡΧΕΙΩΝΣκοτάδιΔημιουργία αντιγράφων ασφαλείας βάσης δεδομένωνΗ δημιουργία αντιγράφων ασφαλείας της βάσης δεδομένων έγινε την ημερομηνίαΈγινε η δημιουργία αντιγράφων ασφαλείας της βάσης δεδομένων.Το αντίγραφο ασφαλείας της βάσης δεδομένων αποκαταστάθηκε με επιτυχία.ΠροκαθορισμένοΠροκαθορισμένο:ΔιαγράφωΑποεπιλογήΠαράβλεψη αυτής της ειδοποίησης.ΠροσφέρωΛήψη αρχείων καταγραφήςΛήψη αρχείωνΑντιγράψτε ή κλωνοποιήστε έναν φάκελο ή ένα αρχείοΕπεξεργασία αρχείων καταγραφήςΕπεξεργαστείτε ένα αρχείοΕνεργοποίηση αποστολής αρχείων στη βιβλιοθήκη πολυμέσων;Ενεργοποίηση του Κάδου απορριμμάτων;Σφάλμα: Δεν είναι δυνατή η επαναφορά του αντιγράφου ασφαλείας επειδή το αντίγραφο ασφαλείας της βάσης δεδομένων είναι μεγάλο σε μέγεθος. Προσπαθήστε να αυξήσετε το Μέγιστο επιτρεπόμενο μέγεθος από τις ρυθμίσεις Προτιμήσεων.Υπάρχοντα αντίγραφα ασφαλείαςΕξαγωγή αρχείου ή συμπιεσμένου αρχείουΔιαχείριση αρχείων - Σύντομος κώδικαςΔιαχείριση αρχείων - Ιδιότητες συστήματοςΔιαδρομή ρίζας Διαχείριση αρχείων, μπορείτε να αλλάξετε ανάλογα με την επιλογή σας.Ο Διαχειριστής αρχείων έχει έναν επεξεργαστή κώδικα με πολλά θέματα. Μπορείτε να επιλέξετε οποιοδήποτε θέμα για τον επεξεργαστή κωδικών. Εμφανίζεται όταν επεξεργάζεστε οποιοδήποτε αρχείο. Επίσης, μπορείτε να επιτρέψετε τη λειτουργία πλήρους οθόνης του επεξεργαστή κώδικα.Λίστα λειτουργιών αρχείων:Το αρχείο δεν υπάρχει για λήψη.Δημιουργία αντιγράφων ασφαλείας αρχείωνΓκρίΒοήθειαΕδώ "test" είναι το όνομα του φακέλου που βρίσκεται στον ριζικό κατάλογο ή μπορείτε να δώσετε διαδρομή για υποφακέλους όπως "wp-content/plugins". Εάν αφήσετε κενό ή κενό, θα έχει πρόσβαση σε όλους τους φακέλους στον ριζικό κατάλογο. Προεπιλογή: Κατάλογος ρίζαςΕδώ ο διαχειριστής μπορεί να δώσει πρόσβαση στους ρόλους των χρηστών για να χρησιμοποιήσει το filemanager. Ο διαχειριστής μπορεί να ορίσει τον προεπιλεγμένο φάκελο πρόσβασης και επίσης να ελέγξει το μέγεθος φόρτωσης του filemanager.Πληροφορίες αρχείουΜη έγκυρος κωδικός ασφαλείας.Θα επιτρέψει σε όλους τους ρόλους να έχουν πρόσβαση στον διαχειριστή αρχείων στη διεπαφή ή Μπορείτε να χρησιμοποιήσετε απλά για συγκεκριμένους ρόλους χρήστη, όπως allow_roles="editor,author" (διαχωρίζονται με κόμμα(,))Θα κλειδώσει που αναφέρεται στα κόμματα. μπορείτε να κλειδώσετε περισσότερα όπως ".php,.css,.js" κ.λπ. Προεπιλογή: NullΘα εμφανίσει τη διαχείριση αρχείων στο μπροστινό μέρος. Αλλά μόνο ο Διαχειριστής μπορεί να έχει πρόσβαση σε αυτό και θα το ελέγξει από τις ρυθμίσεις διαχείρισης αρχείων.Θα εμφανίσει τη διαχείριση αρχείων στο μπροστινό μέρος. Μπορείτε να ελέγξετε όλες τις ρυθμίσεις από τις ρυθμίσεις διαχείρισης αρχείων. Θα λειτουργεί όπως το backend WP File Manager.Τελευταίο μήνυμα καταγραφήςΦωςκούτσουραΔημιουργία καταλόγου ή φακέλουΔημιουργία αρχείουΜέγιστο επιτρεπόμενο μέγεθος τη στιγμή της επαναφοράς του αντιγράφου ασφαλείας της βάσης δεδομένων.Μέγιστο μέγεθος μεταφόρτωσης αρχείου (upload_max_filesize)Όριο μνήμης (memory_limit))Λείπει το αναγνωριστικό αντιγράφου ασφαλείας.Λείπει ο τύπος παραμέτρου.Λείπουν οι απαιτούμενες παράμετροι.Οχι ευχαριστώΚανένα μήνυμα καταγραφήςΔεν βρέθηκαν αρχεία καταγραφής!Σημείωση:Σημείωση: Αυτά είναι στιγμιότυπα οθόνης επίδειξης. Αγοράστε τις λειτουργίες File Manager pro to Logs.Σημείωση: Πρόκειται μόνο για ένα στιγμιότυπο οθόνης. Για να λάβετε ρυθμίσεις, παρακαλώ αγοράστε την επαγγελματική μας έκδοση.Δεν έχει επιλεγεί τίποτα για δημιουργία αντιγράφων ασφαλείαςΔεν έχει επιλεγεί τίποτα για δημιουργία αντιγράφων ασφαλείας.ΕντάξειΕντάξειΆλλοι (Οποιοι άλλοι κατάλογοι βρίσκονται μέσα στο wp-content)Άλλα αντίγραφα ασφαλείας ολοκληρώθηκε την ημερομηνίαΗ δημιουργία αντιγράφων ασφαλείας άλλων ολοκληρώθηκε.Άλλα αντίγραφα ασφαλείας απέτυχε.Τα άλλα αντίγραφα ασφαλείας αποκαταστάθηκαν με επιτυχία.Έκδοση PHPΠαράμετροι:Επικολλήστε ένα αρχείο ή φάκελοΕισαγάγετε τη διεύθυνση email.Παρακαλώ εισάγετε Όνομα.Παρακαλώ εισάγετε Επώνυμο.Αλλάξτε αυτό προσεκτικά, η λανθασμένη διαδρομή μπορεί να οδηγήσει στην κατάρριψη της προσθήκης διαχείρισης αρχείων.Αυξήστε την τιμή του πεδίου εάν λαμβάνετε μήνυμα σφάλματος τη στιγμή της επαναφοράς αντιγράφων ασφαλείας.ΠρόσθεταΗ δημιουργία αντιγράφων ασφαλείας των προσθηκών έγινε την ημερομηνίαΈγινε η δημιουργία αντιγράφων ασφαλείας των προσθηκών.Η δημιουργία αντιγράφων ασφαλείας προσθηκών απέτυχε.Το αντίγραφο ασφαλείας των προσθηκών αποκαταστάθηκε με επιτυχία.Δημοσίευση μέγιστου μεγέθους μεταφόρτωσης αρχείου (post_max_size)ΠροτιμήσειςΠολιτική ΑπορρήτουPublic Root PathΕΠΑΝΑΦΟΡΑ ΑΡΧΕΙΩΝΑφαιρέστε ή διαγράψτε αρχεία και φακέλουςΜετονομάστε ένα αρχείο ή φάκελοΕπαναφέρωΗ επαναφορά εκτελείται, περιμένετεΕΠΙΤΥΧΙΑΑποθήκευσε τις αλλαγέςΟικονομία...Ψάξε πράγματαΘέμα ασφαλείας.Επιλογή όλωνΕπιλέξτε αντίγραφα ασφαλείας για διαγραφή!ΡυθμίσειςΡυθμίσεις - Επεξεργαστής κώδικαΡυθμίσεις - ΓενικάΡυθμίσεις - Περιορισμοί χρήστηΡυθμίσεις - Περιορισμοί ρόλων χρήστηΟι ρυθμίσεις αποθηκεύτηκαν.Σύντομος κώδικας - PROΑπλή αποκοπή ενός αρχείου ή φακέλουΙδιότητες συστήματοςΌροι χρήσηςΤο αντίγραφο ασφαλείας προφανώς πέτυχε και έχει πλέον ολοκληρωθεί.ΘέματαΗ δημιουργία αντιγράφων ασφαλείας θεμάτων έγινε την ημερομηνίαΗ δημιουργία αντιγράφων ασφαλείας θεμάτων ολοκληρώθηκε.Η δημιουργία αντιγράφων ασφαλείας θεμάτων απέτυχε.Το αντίγραφο ασφαλείας θεμάτων αποκαταστάθηκε με επιτυχία.Ώρα τώραΧρονικό όριο (max_execution_time)Για να δημιουργήσετε ένα αρχείο ή zipΣήμεραΧΡΗΣΗ:Δεν είναι δυνατή η δημιουργία αντιγράφων ασφαλείας βάσης δεδομένων.Δεν είναι δυνατή η κατάργηση του αντιγράφου ασφαλείας!Δεν είναι δυνατή η επαναφορά του αντιγράφου ασφαλείας DB.Δεν είναι δυνατή η επαναφορά άλλων.Δεν είναι δυνατή η επαναφορά των προσθηκών.Δεν είναι δυνατή η επαναφορά θεμάτων.Δεν είναι δυνατή η επαναφορά μεταφορτώσεων.Μεταφόρτωση αρχείων καταγραφήςΜεταφόρτωση αρχείωνΜεταφορτώσειςΗ μεταφόρτωση αντιγράφων ασφαλείας έγινε την ημερομηνίαΟλοκληρώθηκε η μεταφόρτωση αντιγράφων ασφαλείας.Η δημιουργία αντιγράφων ασφαλείας μεταφορτώσεων απέτυχε.Το αντίγραφο ασφαλείας των μεταφορτώσεων αποκαταστάθηκε με επιτυχία.ΕπαληθεύωΠροβολή αρχείου καταγραφήςΔιαχείριση αρχείων WPΔιαχείριση αρχείων WP - Δημιουργία αντιγράφων ασφαλείας/ΕπαναφοράΣυνεισφορά διαχειριστή αρχείων WPΜας αρέσει να κάνουμε νέους φίλους! Εγγραφείτε παρακάτω και υποσχόμαστε να σας κρατάμε ενήμερους για τις τελευταίες μας νέες προσθήκες, ενημερώσεις, εκπληκτικές προσφορές και μερικές ειδικές προσφορές.Καλώς ορίσατε στη Διαχείριση αρχείωνΔεν έχετε κάνει καμία αλλαγή για αποθήκευση.για πρόσβαση σε δικαιώματα ανάγνωσης αρχείων, σημείωση: true/false, default: trueγια πρόσβαση σε δικαιώματα εγγραφής αρχείων, σημειώστε: true/false, default: falseθα κρυφτεί που αναφέρεται εδώ. Σημείωση: χωρίζεται με κόμμα(,). Προεπιλογή: Μηδενικόlanguages/wp-file-manager-az.po000064400000070264147361034410012451 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 15:19+0530\n"
"PO-Revision-Date: 2022-02-28 14:51+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: az\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Temaların yedəklənməsi uğurla bərpa edildi."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Temaları bərpa etmək mümkün deyil."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Yüklənmə ehtiyatı uğurla bərpa edildi."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Yüklənmələri bərpa etmək mümkün deyil."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Digərləri uğurla bərpa edildi."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Başqalarını bərpa etmək mümkün deyil."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Plugins backup uğurla bərpa edildi."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Plaginləri bərpa etmək mümkün deyil."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Verilənlər bazası ehtiyatla bərpa edildi."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Hər şey hazırdır"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB ehtiyatını bərpa etmək mümkün deyil."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Yedəklər uğurla silindi!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Yedək silinmədi!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Verilənlər bazasının yedəklənməsi tarixdə edildi "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Plugins ehtiyatı tarixdə edildi "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Mövzular yedəkləmə tarixində edildi "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Tarixdə yükləmələrin yedəklənməsi "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Digərləri tarixdə həyata keçirilmişdir "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Qeydlər"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Günlük tapılmadı!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Yedəkləmə üçün heç nə seçilməyib"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Təhlükəsizlik Problemi."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Verilənlər bazasının ehtiyat nüsxəsi tamamlandı."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Verilənlər bazası ehtiyat nüsxəsini yaratmaq mümkün deyil."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Pluginlərin ehtiyat nüsxəsi tamamlandı."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Pluginlərin ehtiyat nüsxəsi alınmadı."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Mövzuların yedəklənməsi tamamlandı."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Mövzuların yedəklənməsi alınmadı."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Yükləmələrin ehtiyat nüsxəsi tamamlandı."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Yükləmələrin ehtiyat nüsxəsi alınmadı."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Digərlərinin yedəkləməsi tamamlandı."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Digərlərinin yedəkləməsi uğursuz oldu."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP Fayl meneceri"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Ayarlar"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Üstünlüklər"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Sistemin xüsusiyyətləri"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Qısa kod - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Yedəkləyin/bərpa edin"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Pro satın alın"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Bağışlayın"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Fayl yükləmək üçün mövcud deyil."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Yanlış Təhlükəsizlik Kodu."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Ehtiyat id nömrəsi yoxdur."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Parametr növü yoxdur."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Lazımi parametrlər yoxdur."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Xəta: Verilənlər bazasının ehtiyat nüsxəsinin ölçüsü çox olduğundan ehtiyat "
"nüsxəni bərpa etmək mümkün deyil. Lütfən, Üstünlüklər ayarlarından icazə "
"verilən maksimum ölçüsü artırmağa çalışın."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Silmək üçün ehtiyat nüsxə(lər) seçin!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Seçilmiş yedəkləri silmək istədiyinizə əminsiniz?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Yedəkləmə işləyir, xahiş edirəm gözləyin"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Bərpa işləyir, lütfən gözləyin"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Yedəkləmə üçün heç nə seçilməyib."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP Fayl meneceri - Yedəkləmə / Geri Yükləmə"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Yedəkləmə Seçimləri:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Database Backup"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Faylların Yedəklənməsi"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Themes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Yükləmələr"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Digərləri (wp-məzmunun içərisində olan digər bütün qovluqlar)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "İndi yedəkləyin"

#: inc/backup.php:89
msgid "Time now"
msgstr "İndi vaxt"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "UĞUR"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Yedəkləmə uğurla silindi."

#: inc/backup.php:102
msgid "Ok"
msgstr "Tamam"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "DOSYALARI SİLİN"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Bu ehtiyatı silmək istədiyinizə əminsiniz?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Ləğv et"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Təsdiqləyin"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "DOSYALARI QARATIN"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Bu nüsxəni bərpa etmək istədiyinizə əminsiniz?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Son Giriş Mesajı"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Yedəkləmə aydın oldu və indi tamamlandı."

#: inc/backup.php:171
msgid "No log message"
msgstr "Giriş mesajı yoxdur"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Mövcud Yedək (lər)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Yedəkləmə tarixi"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Yedək məlumatları (yükləmək üçün vurun)"

#: inc/backup.php:190
msgid "Action"
msgstr "Fəaliyyət"

#: inc/backup.php:210
msgid "Today"
msgstr "Bu gün"

#: inc/backup.php:239
msgid "Restore"
msgstr "Bərpa edin"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Sil"

#: inc/backup.php:241
msgid "View Log"
msgstr "Girişə baxın"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Hal hazırda heç bir ehtiyat (lər) tapılmadı."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Seçilmiş yedek (lər) lə bağlı əməliyyatlar"

#: inc/backup.php:251
msgid "Select All"
msgstr "Hamısını seç"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Seçimi ləğv edin"

#: inc/backup.php:254
msgid "Note:"
msgstr "Qeyd:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Yedək faylları altında olacaq"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP Fayl meneceri qatqısı"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Qeyd: Bunlar demo ekran şəkilləridir. Zəhmət olmasa Qeydlər funksiyaları "
"üçün File Manager pro məhsulunu alın."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "PRO Almaq üçün klikləyin"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "PRO alın"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Faylların qeydlərini redaktə edin"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Faylların qeydlərini yükləyin"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Fayl qeydlərini yükləyin"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Parametrlər yadda saxlandı."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Bu bildirişi rədd edin."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Qurtarmaq üçün heç bir dəyişiklik etməmisiniz."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "İctimai Kök Yolu"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Kök Yolu, seçiminizə görə dəyişə bilərsiniz."

#: inc/root.php:59
msgid "Default:"
msgstr "Defolt:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Xahiş edirəm bunu diqqətlə dəyişdirin, səhv yol fayl meneceri plagininin "
"enməsinə səbəb ola bilər."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Zibil qutusu aktiv edilsin?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Zibil qutusunu aktivləşdirdikdən sonra sənədləriniz zibil qovluğuna gedəcək."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Faylları Media Kitabxanasına yükləməyi aktivləşdirin?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Bunu təmin etdikdən sonra bütün fayllar media kitabxanasına gedəcəkdir."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Verilənlər bazası ehtiyat nüsxəsinin bərpası zamanı icazə verilən maksimum "
"ölçü."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Zəhmət olmasa, ehtiyat nüsxəsinin bərpası zamanı xəta mesajı alırsınızsa, "
"sahənin dəyərini artırın."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Dəyişiklikləri yadda saxla"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Stellings - General"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Qeyd: Bu yalnız bir demo ekran görüntüsüdür. Ayarları almaq üçün pro "
"versiyasını satın al."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Burada admin filemanager istifadə etmək üçün istifadəçi rollarına çıxış verə "
"bilər. Administrator Default Access Qovluqunu təyin edə bilər və filemanager "
"yükləmə ölçüsünü də idarə edə bilər."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Ayarlar - kod redaktoru"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Dosya menecerində bir çox mövzuda bir kod redaktoru var. Kod redaktoru üçün "
"hər hansı bir mövzu seçə bilərsiniz. Hər hansı bir faylı düzəldən zaman "
"göstərilir. Həmçinin, tam ekran rejimində kod redaktoruna icazə verə "
"bilərsiniz."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kod redaktoru"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Ayarlar - İstifadəçi məhdudiyyətləri"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Admin hər hansı bir istifadəçinin hərəkətlərini məhdudlaşdıra bilər. "
"Həmçinin faylları və qovluqları gizləyin və fərqli istifadəçilər üçün fərqli "
"qovluq yollarını təyin edə bilərsiniz."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Ayarlar - İstifadəçi rolu məhdudiyyətləri"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Admin hər hansı bir userrole hərəkətini məhdudlaşdıra bilər. Həmçinin "
"faylları və qovluqları gizləyin və fərqli istifadəçi rolları üçün fərqli "
"qovluq yollarını təyin edə bilərsiniz."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Fayl meneceri - Qisa kod"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "İSTİFADƏ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Ön tərəfdə fayl menecerini göstərəcək. Siz fayl meneceri parametrlərindən "
"bütün parametrlərə nəzarət edə bilərsiniz. Backend WP Fayl meneceri ilə eyni "
"işləyəcək."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Ön tərəfdə fayl menecerini göstərəcək. Ancaq yalnız Administrator ona daxil "
"ola bilər və fayl meneceri parametrlərindən idarə edəcək."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametrlər:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Bu, bütün rolların ön tərəfdəki fayl menecerinə daxil olmasına imkan verəcək "
"və ya siz allow_roles=\"editor,author\" (vergül(,) ilə ayrılmış) kimi xüsusi "
"istifadəçi rolları üçün sadə istifadə edə bilərsiniz."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Burada \"test\" kök kataloqda yerləşən qovluğun adıdır və ya alt qovluqlar "
"üçün \"wp-content/plugins\" kimi yol verə bilərsiniz. Boş və ya boş "
"qoysanız, o, kök kataloqdakı bütün qovluqlara daxil olacaq. Defolt: Kök "
"kataloqu"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"faylları yazmaq icazələri üçün qeyd edin: doğru/yanlış, standart: yanlış"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "faylları oxumaq icazəsi üçün qeyd edin: true/false, default: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"burada qeyd olunan gizlənəcək. Qeyd: vergül(,) ilə ayrılır. Defolt: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Vergüllə qeyd olunan kilidlənəcək. daha çox \".php,.css,.js\" və s. kimi "
"kilidləyə bilərsiniz. Defolt: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* bütün əməliyyatlar üçün və bəzi əməliyyatlara icazə vermək üçün əməliyyat "
"adını, allow_operations=\"yüklə, endir\" kimi qeyd edə bilərsiniz. Qeyd: "
"vergül(,) ilə ayrılır. Defolt: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Fayl əməliyyatları siyahısı:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Dizin və ya qovluq yaradın"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Fayl edin"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Bir faylı və ya qovluğu dəyişdirin"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Bir qovluğu və ya dosyanı kopyalayın və ya klonlayın"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Bir faylı və ya qovluğu yapışdırın"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Qadağa"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Arxiv və ya zip etmək"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Arxivi və ya sıxılmış faylı çıxarın"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Faylları və ya qovluqları kopyalayın"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Sadə bir fayl və ya qovluq kəsdi"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Bir faylı redaktə edin"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Faylları və qovluqları silin və ya silin"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Faylları yükləyin"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Faylları yükləyin"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Şeyi axtarın"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Fayl haqqında məlumat"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Kömək edin"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Şəxsi identifikatorlarını vergüllə (,) ayıraraq xüsusi istifadəçiləri "
"qadağan edəcəkdir. İstifadəçi qadağandırsa, əvvəldən wp fayl menecerinə "
"daxil ola bilməyəcəklər."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI Görünüşü. Varsayılan: şəbəkə"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Dəyişdirilmiş Fayl və ya tarix formatı yaradın. Varsayılan: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Fayl meneceri dili. Varsayılan: İngilis dili (az)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Fayl Meneceri Teması. Varsayılan: Yüngül"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Fayl meneceri - Sistem xüsusiyyətləri"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP versiyası"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimum fayl yükləmə ölçüsü (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Maksimum fayl yükləmə ölçüsünü göndərin (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Yaddaş Limiti (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Təminat (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Brauzer və OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Mövzunu dəyişdirin:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Defolt"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Qaranlıq"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "İşıq"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Boz"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Fayl menecerinə xoş gəlmisiniz"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Yeni dostlar qazanmağı sevirik! Aşağıdakı abunə olun və söz veririk\n"
"    ən son yeni eklentilərimizi, yeniləmələrimizi,\n"
"    zəhmli sövdələşmələr və bir neçə xüsusi təklif."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Zəhmət olmasa Adınızı daxil edin."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Zəhmət olmasa soyadınızı daxil edin."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Zəhmət olmasa elektron poçt ünvanınızı daxil edin."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Doğrulayın"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Xeyr, təşəkkürlər"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Xidmət Şərtləri"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Gizlilik Siyasəti"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Yadda saxlanır ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "tamam"

#~ msgid "Backup not found!"
#~ msgstr "Yedək tapılmadı!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Yedəkləmə uğurla silindi!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Yedəkləmə üçün heç bir şey seçilmədi</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Təhlükəsizlik Məsələsi. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Verilənlər bazasının yedəklənməsi "
#~ "aparıldı.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Verilənlər bazası ehtiyatı yaratmaq "
#~ "mümkün deyil.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Eklentilərin yedəklənməsi aparıldı. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Eklentilərin ehtiyat nüsxəsi alınmadı. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Temaların yedəklənməsi aparıldı. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Temaların yedəklənməsi uğursuz oldu. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Yükləmələrin yedəklənməsi tamamlandı. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Yükləmələrin yedəklənməsi uğursuz oldu. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Digərlərinin ehtiyatı hazırlandı.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Digərlərinin ehtiyat nüsxəsi alınmadı. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Hər şey bitdi </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code> [wp_file_manager view = \"list\" lang = \"en\" theme = \"light\" "
#~ "dateformat = \"d M, Y h: i A\" allow_roles = \"editor, author\" "
#~ "access_folder = \"wp-content / plugins\" write = \"true\" read = \"false"
#~ "\" hide_files = \"kumar, abc.php\" lock_extensions = \". php, .css\" "
#~ "icazə_operations = \"yüklə, yüklə\" ban_user_ids = \"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "WP fayllarınızı idarə edin."

#~ msgid "Extensions"
#~ msgstr "Extensions"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Plugin daha sabit olmasını təmin etmək üçün, bəzi donorlara kömək edin. "
#~ "Seçdiyiniz məbləği ödəyə bilərsiniz."
languages/wp-file-manager-ro_RO.mo000064400000044143147361034410013051 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�M(�))�)G�)7:*&r*�*)�*��*��+XX,@�,�,;-8>-9w-�-�-�-2�-!.0?.#p.�.&�.	�. �.�.// /"6/Y/
s/~/-�/�/
�/!�/>0'C03k0�0
�0�0�0 �0�0"�01021c1�16�1�1��1�2#�2�2'�2E$3�j3!N4(p4�4�4�4�4�5�6�6�7f�7�E8��8�9�9�9�9�9Z�9F<: �:�:�:�:�:;;-;n4;��;#-<$Q<v<z<5~<*�<-�<
=$(=
M=
[= f=-�=&�=.�=�>z�>		?9?5M? �?2�?I�?!@-@L@f@.y@!�@	�@!�@�@�@A$A6ANA)^A�A�A�A#�A0�AB&B(6B_BxB6�B�B!�B0�BC-7CeCqC�C�C
�C5�C'�C#D@D$`D�D'�D"�D�DE)E$:E&_E5�E�E�E�E,�E#F�@F#G3$G_XGZ�GOH}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Wp File Manager
PO-Revision-Date: 2022-03-01 18:10+0530
Last-Translator: 
Language-Team: 
Language: ro
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n%100<=19) ? 1 : 2);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e
X-Poedit-SearchPath-0: .
* pentru toate operațiunile și pentru a permite o anumită operațiune, puteți menționa numele operațiunii ca, allow_operations="upload,download". Notă: separate prin virgulă (,). Mod implicit: *-> Va interzice anumiți utilizatori doar punând ID-urile lor separate de virgule (,). Dacă utilizatorul este Ban, nu va putea accesa managerul de fișiere wp din front-end.-> Tema Manager fișiere. Implicit: Light-> Fișier modificat sau Creați formatul datei. Implicit: d M, Y h:i A-> Limba managerului de fișiere. Implicit: English(en)-> Filemanager UI View. Implicit: gridAcțiuneAcțiuni la copiile de rezervă selectateAdministratorul poate restricționa acțiunile oricărui utilizator. Ascundeți, de asemenea, fișiere și foldere și puteți seta diferite căi de foldere pentru utilizatori diferiți.Administratorul poate restricționa acțiunile oricărui rol de utilizator. Ascundeți, de asemenea, fișiere și foldere și puteți seta căi de foldere diferite - pentru diferite roluri ale utilizatorilor.După activarea coșului de gunoi, fișierele dvs. vor merge în folderul coș de gunoi.După activare, toate fișierele vor merge în biblioteca media.Totul este gataSigur doriți să eliminați copiile de rezervă selectate?Sigur doriți să ștergeți această copie de rezervă?Sigur doriți să restaurați această copie de rezervă?Data de rezervăFaceți backup acumOpțiuni de backup:Date de rezervă (faceți clic pentru a descărca)Fișierele de rezervă vor fi subBackupul se execută, vă rugăm să așteptațiCopia de rezervă a fost ștearsă.Backup/RestaurareCopiile de rezervă au fost eliminate!InterziceBrowser și SO (HTTP_USER_AGENT)Cumpărați PROCumpărați ProAnulareSchimbați tema aici:Faceți clic pentru a cumpăra PROVizualizare editor de codA confirmaCopiați fișiere sau foldereÎn prezent nu s-au găsit copii de rezervă.DELETE FILESÎntunericCopie de rezervă a bazei de dateCopierea de rezervă a bazei de date a fost făcută la dată Backup-ul bazei de date este finalizat.Backup-ul bazei de date a fost restaurat cu succes.Mod implicitMod implicit:ȘtergeDeselectațiRespingeți această notificare.DoneazăDescărcați jurnalele de fișiereDescărcați fișiereDuplicați sau clonați un folder sau un fișierEditați jurnalele de fișiereEditați un fișierActivați fișierele încărcate în biblioteca media?Activați Coșul de gunoi?Eroare: nu se poate restabili backupul deoarece backupul bazei de date are o dimensiune mare. Vă rugăm să încercați să măriți dimensiunea maximă permisă din setările Preferințe.Backup-uri existenteExtrageți arhiva sau fișierul zipManager fișiere - ShortcodeManager fișiere - Proprietăți sistemFile Manager Root Path, puteți schimba în funcție de alegerea dvs.Managerul de fișiere are un editor de cod cu mai multe teme. Puteți selecta orice temă pentru editorul de cod. Se va afișa când editați orice fișier. De asemenea, puteți permite modul ecran complet al editorului de cod.Lista operațiunilor de fișiere:Fișierul nu există pentru descărcare.Backup de fișieregriAjutorAici „test” este numele folderului care se află în directorul rădăcină, sau puteți da calea pentru sub foldere, cum ar fi „wp-content/plugins”. Dacă lăsați necompletat sau gol, va accesa toate folderele din directorul rădăcină. Implicit: director rădăcinăAici administratorul poate da acces la rolurile utilizatorilor pentru a utiliza fișierul de gestionare a fișierelor. Administratorul poate seta folderul de acces implicit și, de asemenea, poate controla dimensiunea de încărcare a managerului de fișiere.Informații despre fișierCod de securitate invalid.Acesta va permite tuturor rolurilor să acceseze managerul de fișiere pe front-end sau puteți utiliza simplu pentru anumite roluri de utilizator, cum ar fi allow_roles="editor,author" (separat prin virgulă (,))Se va bloca menționat în virgule. puteți bloca mai multe ca „.php,.css,.js” etc. Implicit: NullVa afișa managerul de fișiere pe front-end. Dar numai Administratorul îl poate accesa și va controla din setările managerului de fișiere.Va afișa managerul de fișiere pe front-end. Puteți controla toate setările din setările managerului de fișiere. Va funcționa la fel ca și Managerul de fișiere WP de backend.Ultimul mesaj de jurnalUșoarăJurnaleCreați director sau folderCreați fișierDimensiunea maximă permisă în momentul restaurării copiei de rezervă a bazei de date.Dimensiunea maximă de încărcare a fișierului (upload_max_filesize)Limita de memorie (memory_limit)ID-ul de rezervă lipsește.Tip parametru lipsă.Lipsesc parametrii necesari.Nu multumescFără mesaj jurnalNu s-au găsit jurnale!Notă:Notă: Acestea sunt capturi de ecran demo. Vă rugăm să cumpărați File Manager pro pentru funcțiile Logs.Notă: Aceasta este doar o captură de ecran demonstrativă. Pentru a obține setări, vă rugăm să cumpărați versiunea noastră pro.Nu s-a selectat nimic pentru backupNu s-a selectat nimic pentru backup.O.KO.KAltele (Orice alte directoare găsite în wp-content)Alți copii de rezervă efectuate la data Copilul de rezervă al altora este finalizat.Backup-ul altora a eșuat.Altele au fost restaurate cu succes.Versiunea PHPParametri:Lipiți un fișier sau un folderVă rugăm să introduceți adresa de e-mail.Vă rugăm să introduceți prenumele.Vă rugăm să introduceți numele de familie.Vă rugăm să schimbați cu atenție această cale, o cale greșită poate duce la coborârea pluginului managerului de fișiere.Vă rugăm să măriți valoarea câmpului dacă primiți un mesaj de eroare în momentul restaurării copiei de rezervă.PluginuriBackup-ul pluginurilor a fost făcut la data respectivă Copierea de rezervă a pluginurilor este finalizată.Backup-ul pluginurilor a eșuat.Backup-ul pluginurilor a fost restaurat cu succes.Postați dimensiunea maximă de încărcare a fișierului (post_max_size)PreferințePolitica de ConfidențialitateCalea rădăcinii publiceRESTAURĂ FIȘIEREEliminați sau ștergeți fișiere și foldereRedenumiți un fișier sau folderRestabiliRestaurarea rulează, așteptațiSUCCESSalvează modificărileEconomisire...Căutați lucruriProblema de securitate.Selectează totSelectați copiile de rezervă de șters!SetăriSetări - Editor de codSetări - GeneralitățiSetări - Restricții de utilizatorSetări - Restricții ale rolului utilizatoruluiSetari Salvate.Shortcode - PROSimplu tăiați un fișier sau un folderProprietatile sistemuluiTermenii serviciuluiSe pare că backup-ul a reușit și acum este complet.TemeTeme de backup realizate la data Copierea de rezervă a temelor este finalizată.Backupul temelor a eșuat.Backup-ul temelor a fost restaurat cu succes.Timpul acumExpirare (max_execution_time)Pentru a face o arhivă sau zipAziUTILIZARE:Nu se poate crea o copie de rezervă a bazei de date.Nu s-a putut elimina copia de rezervă!Imposibil de restaurat backupul DB.Imposibil de restabilit altele.Nu s-au putut restabili pluginurile.Nu s-au putut restabili temele.Imposibil de restabilit încărcările.Încărcați jurnalele de fișiereÎncărca fișiereÎncărcăriÎncărcări de backup efectuate la data Încărcări de rezervă finalizate.Backupul încărcărilor nu a reușit.Backupurile încărcate au fost restaurate cu succes.VerificaVizualizare jurnalManager de fișiere WPManager de fișiere WP - Backup / RestaurareContribuția Manager de fișiere WPNe place să ne facem noi prieteni! Abonați-vă mai jos și promitem să
    vă ține la curent cu cele mai noi pluginuri noi, actualizări,
    oferte minunate și câteva oferte speciale.Bine ați venit la Manager fișiereNu ați făcut nicio modificare pentru a fi salvat.pentru acces la permisiunea de citire a fișierelor, notă: adevărat/fals, implicit: adevăratpentru acces la permisiuni de scriere a fișierelor, notă: adevărat/fals, implicit: falsse va ascunde menționat aici. Notă: separate prin virgulă (,). Implicit: nullanguages/wp-file-manager-fa_IR.po000064400000071770147361034410013022 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 17:51+0530\n"
"PO-Revision-Date: 2022-02-25 18:16+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: fa_IR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "پشتیبان‌گیری از طرح‌های زمینه با موفقیت بازیابی شد."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "امکان بازیابی تم ها وجود ندارد."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "پشتیبان آپلودها با موفقیت بازیابی شد."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "امکان بازیابی آپلودها وجود ندارد."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "سایر نسخه های پشتیبان با موفقیت بازیابی شدند."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "قادر به بازیابی دیگران نیست."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "پشتیبان‌گیری افزونه‌ها با موفقیت بازیابی شد."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "امکان بازیابی افزونه ها وجود ندارد."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "پشتیبان گیری از پایگاه داده با موفقیت بازیابی شد."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "همه انجام شد"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "امکان بازیابی نسخه پشتیبان DB وجود ندارد."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "پشتیبان گیری با موفقیت حذف شد!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "پشتیبان حذف نشد!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "پشتیبان گیری از پایگاه داده در تاریخ انجام شد"

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "پشتیبان‌گیری از پلاگین‌ها در تاریخ انجام شد"

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "پشتیبان‌گیری از تم‌ها در تاریخ انجام شد"

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "آپلودهای پشتیبان در تاریخ انجام شده است"

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "پشتیبان گیری دیگران در تاریخ انجام شد"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "سیاهههای مربوط"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "هیچ گزارشی پیدا نشد!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "هیچ چیزی برای پشتیبان گیری انتخاب نشده است"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "مشکل امنیتی."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "پشتیبان گیری از پایگاه داده انجام شد."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "ایجاد نسخه پشتیبان از پایگاه داده ممکن نیست."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "پشتیبان گیری از افزونه ها انجام شد."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "پشتیبان‌گیری از افزونه‌ها انجام نشد."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "پشتیبان‌گیری از تم‌ها انجام شد."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "پشتیبان‌گیری از طرح‌های زمینه انجام نشد."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "پشتیبان‌گیری آپلود انجام شد."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "پشتیبان‌گیری آپلود انجام نشد."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "پشتیبان گیری بقیه انجام شد"

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "پشتیبان گیری دیگران انجام نشد."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP مدیر فایل "

#: file_folder_manager.php:769
msgid "Settings"
msgstr "تنظیمات"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "اولویت ها"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "خصوصیات سیستم"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "کوتاه - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "پشتیبان گیری بازیابی"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "خرید حرفه ای"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "اهدا کنید"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "فایل برای دانلود وجود ندارد."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "کد امنیتی نامعتبر است."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "شناسه پشتیبان موجود نیست."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "نوع پارامتر موجود نیست."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "عدم وجود پارامترهای مورد نیاز"

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"خطا: امکان بازیابی نسخه پشتیبان وجود ندارد زیرا نسخه پشتیبان پایگاه داده حجم "
"بالایی دارد. لطفاً سعی کنید حداکثر اندازه مجاز را از تنظیمات برگزیده افزایش "
"دهید."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "پشتیبان (های) را برای حذف انتخاب کنید!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "آیا مطمئن هستید که می خواهید پشتیبان(های) انتخابی را حذف کنید؟"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "پشتیبان‌گیری در حال اجرا است، لطفاً صبر کنید"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "بازیابی در حال اجرا است، لطفاً صبر کنید"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "هیچ چیزی برای پشتیبان گیری انتخاب نشده است."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "مدیریت فایل WP - پشتیبان گیری / بازیابی"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "گزینه های پشتیبان گیری:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "پشتیبان گیری از پایگاه داده"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "پشتیبان گیری از فایل ها"

#: inc/backup.php:68
msgid "Plugins"
msgstr "پلاگین ها"

#: inc/backup.php:71
msgid "Themes"
msgstr "تم ها"

#: inc/backup.php:74
msgid "Uploads"
msgstr "آپلودها"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "سایرین (هر دایرکتوری دیگری که در داخل wp-content یافت می شود)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "همین حالا نسخه پشتیبان تهیه کن"

#: inc/backup.php:89
msgid "Time now"
msgstr "ساعت هم اکنون"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "موفقیت"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "پشتیبان گیری با موفقیت حذف شد."

#: inc/backup.php:102
msgid "Ok"
msgstr "خوب"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "فایلهاروحذف کن"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "آیا مطمئن هستید که می خواهید این نسخه پشتیبان را حذف کنید؟"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "لغو کنید"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "تایید"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "بازیابی فایل ها"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "آیا مطمئن هستید که می خواهید این نسخه پشتیبان را بازیابی کنید؟"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "آخرین پیام ورود"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "ظاهراً نسخه پشتیبان با موفقیت انجام شد و اکنون کامل شده است."

#: inc/backup.php:171
msgid "No log message"
msgstr "پیامی وجود ندارد"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "پشتیبان (های) موجود"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "تاریخ پشتیبان گیری"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "پشتیبان گیری از اطلاعات (برای دانلود کلیک کنید)"

#: inc/backup.php:190
msgid "Action"
msgstr "عمل"

#: inc/backup.php:210
msgid "Today"
msgstr "امروز"

#: inc/backup.php:239
msgid "Restore"
msgstr "بازگرداندن"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "حذف"

#: inc/backup.php:241
msgid "View Log"
msgstr "مشاهده گزارش"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "در حال حاضر هیچ نسخه پشتیبان (ها) یافت نشد."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "اقدامات مربوط به پشتیبان (های) انتخاب شده"

#: inc/backup.php:251
msgid "Select All"
msgstr "انتخاب همه"

#: inc/backup.php:252
msgid "Deselect"
msgstr "لغو انتخاب کنید"

#: inc/backup.php:254
msgid "Note:"
msgstr "توجه داشته باشید:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "فایل های پشتیبان در زیر قرار خواهند گرفت"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "مشارکت مدیریت فایل WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"توجه: این ها اسکرین شات های نمایشی هستند. لطفاً توابع مدیر فایل حرفه ای را "
"بخرید."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "برای خرید PRO کلیک کنید"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "خرید PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "ویرایش فایل‌های گزارش"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "لاگ فایل ها را دانلود کنید"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "گزارش فایل‌ها را آپلود کنید"

#: inc/root.php:43
msgid "Settings saved."
msgstr "تنظیمات ذخیره شد."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "این اطلاعیه را رد کنید"

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "شما هیچ تغییری ایجاد نکرده اید تا ذخیره شود."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "مسیر ریشه عمومی"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "مسیر ریشه فایل منیجر را می توانید بنا به انتخاب خود تغییر دهید."

#: inc/root.php:59
msgid "Default:"
msgstr "پیش فرض:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"لطفاً این را با دقت تغییر دهید، مسیر اشتباه می‌تواند منجر به از کار افتادن "
"افزونه مدیر فایل شود."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "حذف‌شده‌ها فعال شود؟"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "پس از فعال کردن سطل زباله، فایل های شما به پوشه سطل زباله می روند."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "آپلود فایل ها در کتابخانه رسانه فعال شود؟"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "پس از فعال کردن این، همه فایل‌ها به کتابخانه رسانه خواهند رفت."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "حداکثر اندازه مجاز در زمان بازیابی نسخه پشتیبان از پایگاه داده."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"اگر در زمان بازیابی نسخه پشتیبان پیام خطا دریافت می کنید، لطفاً مقدار فیلد را "
"افزایش دهید."

#: inc/root.php:90
msgid "Save Changes"
msgstr "ذخیره تغییرات"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "تنظیمات - عمومی"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"توجه: این فقط یک عکس نسخه ی نمایشی است. برای دریافت تنظیمات لطفا نسخه حرفه "
"ای ما را بخرید."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"در اینجا مدیر می تواند دسترسی به نقش های کاربر را برای استفاده از مدیر فایل "
"استفاده کند. Admin می تواند پوشه پیش فرض دسترسی را تنظیم کند و اندازه آپلود "
"فایل manager را نیز کنترل کند."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "تنظیمات - کد ویراستار"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"مدیر فایل دارای یک ویرایشگر کد با چندین تم است. شما می توانید هر تم برای "
"ویرایشگر کد را انتخاب کنید. هنگامی که شما هر فایل را ویرایش می کنید، آن "
"نمایش داده می شود. همچنین شما می توانید حالت تمام صفحه ویرایشگر کد را اجازه "
"دهید."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "کد ویرایشگر نمایش"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "تنظیمات - محدودیت کاربر"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"مدیر می تواند اعمال هر کاربر را محدود کند. همچنین فایل ها و پوشه ها را مخفی "
"کنید و می توانید راه های مختلف پوشه های مختلف را برای کاربران مختلف تنظیم "
"کنید."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "تنظیمات - محدودیت های نقش کاربر"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Admin می تواند اعمال هر کاربر را محدود کند. همچنین فایل ها و پوشه ها را مخفی "
"کنید و می توانید راه های مختلف پوشه های مختلف را برای نقش های مختلف کاربران "
"تنظیم کنید."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "مدیر فایل - کد کوتاه"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "استفاده کنید:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"این فایل منیجر را در قسمت جلویی نمایش می دهد. شما می توانید تمام تنظیمات را "
"از تنظیمات مدیر فایل کنترل کنید. مانند مدیریت فایل WP باطن کار خواهد کرد."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"این فایل منیجر را در قسمت جلویی نمایش می دهد. اما فقط مدیر می تواند به آن "
"دسترسی داشته باشد و از تنظیمات مدیر فایل کنترل می کند."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "مولفه های:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"به همه نقش‌ها اجازه می‌دهد به مدیر فایل در قسمت جلویی دسترسی داشته باشند یا "
"می‌توانید برای نقش‌های کاربری خاص مانند allow_roles=\"editor,author\" به سادگی "
"استفاده کنید (با کاما(،) جدا شده‌اند."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"در اینجا \"test\" نام پوشه ای است که در دایرکتوری ریشه قرار دارد، یا می "
"توانید مسیر را برای زیر پوشه ها مانند \"wp-content/plugins\" بدهید. اگر خالی "
"یا خالی بماند، به تمام پوشه‌های دایرکتوری ریشه دسترسی خواهد داشت. پیش فرض: "
"دایرکتوری ریشه"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"برای دسترسی به مجوزهای نوشتن فایل، توجه داشته باشید: true/false، default: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"برای دسترسی به مجوز خواندن فایل ها، توجه داشته باشید: true/false، پیش فرض: "
"true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"در اینجا ذکر شده پنهان خواهد شد. توجه: با کاما (،) جدا شده است. پیش فرض: صفر"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"قفل خواهد شد که در کاما ذکر شده است. شما می توانید موارد بیشتری مانند \"."
"php,.css،.js\" و غیره قفل کنید. پیش فرض: تهی"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* برای همه عملیات و اجازه دادن به برخی از عملیات، می توانید نام عملیات را به "
"عنوان like, allow_operations=\"upload,download\" ذکر کنید. توجه: با کاما (،) "
"جدا شده است. پیش فرض: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "لیست عملیات فایل:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "دایرکتوری یا پوشه بسازید"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "فایل درست کنید"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "تغییر نام فایل یا پوشه"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "یک پوشه یا فایل را کپی یا شبیه سازی کنید"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "یک فایل یا پوشه را جایگذاری کنید"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "ممنوع کردن"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "برای ایجاد آرشیو یا زیپ"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "بایگانی یا فایل فشرده را استخراج کنید"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "فایل ها یا پوشه ها را کپی کنید"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "به سادگی یک فایل یا پوشه را برش دهید"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "یک فایل را ویرایش کنید"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "فایل ها و پوشه ها را حذف یا حذف کنید"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "دانلود فایل ها"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "فایل ها را آپلود کنید"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "چیزها را جستجو کنید"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "اطلاعات فایل"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "کمک"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> فقط با قرار دادن شناسه های آنها که با کاما (،) جدا شده اند، کاربران خاصی "
"را ممنوع می کند. اگر کاربر Ban باشد، نمی‌تواند به مدیریت فایل wp در فرانت اند "
"دسترسی پیدا کند."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> نمای UI Filemager. پیش فرض: شبکه"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> فایل اصلاح شده یا ایجاد فرمت تاریخ. پیش‌فرض: d M، Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> زبان مدیر فایل. پیش فرض: انگلیسی (en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> تم مدیر فایل. پیش فرض: نور"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "مدیر فایل - ویژگی های سیستم"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "نسخه پی اچ پی"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "حداکثر اندازه آپلود فایل (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "حداکثر اندازه بارگذاری فایل ارسال (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "محدودیت حافظه (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "وقفه (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "مرورگر و سیستم عامل (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "تم را در اینجا تغییر دهید:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "پیش فرض"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "تاریک"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "سبک"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "خاکستری"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "به File Manager خوش آمدید"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"ما عاشق پیدا کردن دوستان جدید هستیم! در زیر مشترک شوید و ما قول می دهیم که "
"شما را از آخرین افزونه های جدید، به روز رسانی ها، معاملات عالی و چند پیشنهاد "
"ویژه به روز نگه داریم."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "لطفا نام را وارد کنید"

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "لطفا نام خانوادگی را وارد کنید"

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "لطفا آدرس ایمیل را وارد کنید"

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "تایید کنید"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "نه ممنون"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "شرایط استفاده از خدمات"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "سیاست حفظ حریم خصوصی"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "صرفه جویی در..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "خوب"

#~ msgid "Manage your WP files."
#~ msgstr "فایل های WP خود را مدیریت کنید."

#~ msgid "Extensions"
#~ msgstr "برنامه های افزودنی"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "لطفا کمی کمک مالی کنید تا پلاگین را پایدار نگه دارید. شما می توانید مقدار "
#~ "انتخاب خود را پرداخت کنید."
languages/wp-file-manager-hy.po000064400000105272147361034410012455 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 10:34+0530\n"
"PO-Revision-Date: 2022-03-01 11:04+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: hy\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Թեմաների պահուստավորումը հաջողությամբ վերականգնվել է:"

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Հնարավոր չէ վերականգնել թեմաները:"

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Վերբեռնումների պահուստավորումը հաջողությամբ վերականգնվել է:"

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Հնարավոր չէ վերականգնել վերբեռնումները:"

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Մյուսները կրկնօրինակը հաջողությամբ վերականգնվել է:"

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Հնարավոր չէ վերականգնել ուրիշներին:"

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Պլագինների պահուստավորումը հաջողությամբ վերականգնվել է:"

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Հնարավոր չէ վերականգնել ներդիրները:"

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Շտեմարանի կրկնօրինակը հաջողությամբ վերականգնվեց:"

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Ամեն ինչ արված է"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Հնարավոր չէ վերականգնել DB պահուստավորումը:"

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Պահուստավորումները հաջողությամբ հեռացվեցին:"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Հնարավոր չէ հեռացնել պահուստավորումը:"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Շտեմարանի պահուստավորումը կատարվել է ամսաթվով "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Պլագինների պահուստավորումը կատարվել է ամսաթվով "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Թեմաների պահուստավորումը կատարվել է ամսաթվով "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Վերբեռնման պահուստավորումը կատարվել է ամսաթվով "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Մյուսները պահուստավորումը կատարվել է ամսաթվով "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Տեղեկամատյաններ"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Ոչ մի տեղեկամատյան չի գտնվել:"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Պահուստավորման համար ոչինչ ընտրված չէ"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Անվտանգության խնդիր."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Տվյալների բազայի կրկնօրինակումն արված է:"

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Հնարավոր չէ ստեղծել տվյալների բազայի կրկնօրինակում:"

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Փլագինների կրկնօրինակումն ավարտված է:"

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Փլագինների պահուստավորումը ձախողվեց:"

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Թեմաների կրկնօրինակումն արված է:"

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Թեմաների կրկնօրինակումը ձախողվեց:"

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Վերբեռնումների կրկնօրինակումն ավարտված է:"

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Վերբեռնումների կրկնօրինակումը ձախողվեց:"

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Մյուսների կրկնօրինակումն արված է:"

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Մյուսների կրկնօրինակումը ձախողվեց:"

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP ֆայլերի կառավարիչ"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Կարգավորումներ"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Նախապատվություններ"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Համակարգի հատկությունները"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Կարճ ծածկագիր - ՊՐՈ"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Կրկնօրինակում/Վերականգնում"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Գնել Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Նվիրաբերել"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Ֆայլը ներբեռնելու համար գոյություն չունի:"

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Անվտանգության անվավեր ծածկագիր:"

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Պահուստային ID- ն բացակայում է:"

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Պարամետրի տեսակը բացակայում է:"

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Անհայտ պարամետրերը բացակայում են:"

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Սխալ. Չհաջողվեց վերականգնել կրկնօրինակը, քանի որ տվյալների բազայի "
"կրկնօրինակը մեծ չափերի է: Փորձեք ավելացնել Առավելագույն թույլատրելի չափը "
"Նախապատվությունների կարգավորումներից:"

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Ընտրեք կրկնօրինակ(ներ) ջնջելու համար:"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Վստա՞հ եք, որ ցանկանում եք հեռացնել ընտրված պահուստային (ներ) ը:"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Պահուստավորումն աշխատում է, սպասեք"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Վերականգնումն աշխատում է, խնդրում ենք սպասել"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Պահուստավորման համար ոչինչ ընտրված չէ:"

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP ֆայլերի կառավարիչ - պահուստավորում / վերականգնում"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Կրկնօրինակման ընտրանքներ."

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Շտեմարանի պահուստավորում"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Ֆայլերի պահուստավորում"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Պլագիններ"

#: inc/backup.php:71
msgid "Themes"
msgstr "Themes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Վերբեռնումներ"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr ""
"Ուրիշներ (wp- բովանդակության ներսում հայտնաբերված ցանկացած այլ գրացուցակներ)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Պահուստավորեք հիմա"

#: inc/backup.php:89
msgid "Time now"
msgstr "Հիմա ժամանակը"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ՀԱ SՈESSՈՒԹՅՈՒՆ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Պահուստավորումը հաջողությամբ ջնջվեց:"

#: inc/backup.php:102
msgid "Ok"
msgstr "Լավ"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "DEնջել ֆայլերը"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Վստա՞հ եք, որ ցանկանում եք ջնջել այս պահուստավորումը:"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Չեղարկել"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Հաստատել"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "Վերականգնել նիշքերը"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Վստա՞հ եք, որ ցանկանում եք վերականգնել այս պահուստավորումը:"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Վերջին տեղեկամատյան"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Ակնհայտորեն պահուստավորումը հաջողվեց և այժմ ավարտված է:"

#: inc/backup.php:171
msgid "No log message"
msgstr "Առանց տեղեկամատյան հաղորդագրության"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Գոյություն ունեցող պահուստ (ներ)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Պահուստավորման ամսաթիվը"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Պահուստային տվյալների հավաքում (կտտացրեք ներբեռնելու համար)"

#: inc/backup.php:190
msgid "Action"
msgstr "Գործողություն"

#: inc/backup.php:210
msgid "Today"
msgstr "Այսօր"

#: inc/backup.php:239
msgid "Restore"
msgstr "Վերականգնել"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Նջել"

#: inc/backup.php:241
msgid "View Log"
msgstr "Դիտել տեղեկամատյանը"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Ներկայումս ոչ մի պահուստ (ներ) չի գտնվել:"

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Գործողություններ ընտրված պահուստային (ներ) ի վերաբերյալ"

#: inc/backup.php:251
msgid "Select All"
msgstr "Ընտրել բոլորը"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Ապանշել"

#: inc/backup.php:254
msgid "Note:"
msgstr "Նշում:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Պահուստային ֆայլերը տակ կլինեն"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP File Manager- ի ներդրումը"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Նշում. Դրանք ցուցադրական սքրինշոթեր են: Խնդրում ենք գնել File Manager pro- ը "
"Logs գործառույթներից:"

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Սեղմեք՝ PRO գնելու համար"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Գնեք ՊՐՈ"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Խմբագրել ֆայլերի տեղեկամատյանները"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Ներբեռնեք Ֆայլերի տեղեկամատյանները"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Վերբեռնել ֆայլերի տեղեկամատյանները"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Կարգավորումները պահվել են:"

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Մերժեք այս ծանուցումը:"

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Դուք փրկելու համար որևէ փոփոխություն չեք կատարել:"

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Հասարակական արմատային ուղի"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path- ը, ըստ ձեր ընտրության, կարող եք փոխել:"

#: inc/root.php:59
msgid "Default:"
msgstr "Լռելյայն:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Խնդրում ենք ուշադիր փոխել սա, սխալ ուղին կարող է հանգեցնել ֆայլերի կառավարչի "
"plugin- ի անկմանը:"

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Միացնե՞լ աղբարկղը:"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Աղբարկղը միացնելուց հետո ձեր ֆայլերը կգնան աղբարկղի պանակ:"

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Միացնե՞լ ֆայլերի վերբեռնումը մեդիա գրադարանում:"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Սա միացնելուց հետո բոլոր ֆայլերը կուղղվեն մեդիա գրադարանին:"

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Առավելագույն թույլատրելի չափը տվյալների բազայի կրկնօրինակի վերականգնման "
"պահին:"

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Խնդրում ենք ավելացնել դաշտի արժեքը, եթե կրկնօրինակի վերականգնման պահին սխալի "
"մասին հաղորդագրություն եք ստանում:"

#: inc/root.php:90
msgid "Save Changes"
msgstr "Պահպանել փոփոխությունները"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Կարգավորումներ - Ընդհանուր"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Նշում. Սա պարզապես ցուցադրական էկրանի նկար է: Կարգավորումներ ստանալու համար "
"խնդրում ենք գնել մեր պրո-տարբերակը:"

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Այստեղ ադմինիստրատորը կարող է մուտք գործել օգտվողի դերեր ՝ Filemanager- ից "
"օգտվելու համար: Ադմինիստրատորը կարող է սահմանել Լռելյայն Մուտքի Թղթապանակ և "
"վերահսկել նաև Filemanager- ի վերբեռնման չափը:"

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Կարգավորումներ - օրենսգրքի խմբագիր"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager- ն ունի բազմաթիվ թեմաներով կոդերի խմբագիր: Կոդի խմբագրի համար "
"կարող եք ընտրել ցանկացած թեմա: Այն կցուցադրվի, երբ ցանկացած ֆայլ խմբագրեք: "
"Կարող եք նաև թույլատրել կոդերի խմբագրիչի լրիվ էկրանի ռեժիմ:"

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Կոդ-խմբագրի դիտում"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Կարգավորումներ - Օգտագործողի սահմանափակումներ"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Ադմինիստրատորը կարող է սահմանափակել ցանկացած օգտվողի գործողությունները: "
"Թաքցրեք նաև ֆայլերն ու պանակները և կարող են սահմանել տարբեր ՝ տարբեր "
"պանակների ուղիներ տարբեր օգտվողների համար:"

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Կարգավորումներ - Օգտագործողի դերի սահմանափակումներ"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Ադմինիստրատորը կարող է սահմանափակել ցանկացած օգտագործողի գործողության "
"գործողությունները: Թաքցրեք նաև ֆայլերն ու պանակները և կարող են տարբեր ՝ "
"տարբեր պանակների ուղիներ սահմանել տարբեր օգտվողների դերերի համար:"

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Ֆայլերի կառավարիչ - կարճ կոդ"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ՕԳՏԱԳՈՐՈՒՄ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Այն ցույց կտա ֆայլերի կառավարիչը ճակատային մասում: Դուք կարող եք կառավարել "
"բոլոր կարգավորումները ֆայլերի կառավարչի կարգավորումներից: Այն կաշխատի "
"այնպես, ինչպես backend WP File Manager-ը:"

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Այն ցույց կտա ֆայլերի կառավարիչը ճակատային մասում: Բայց միայն Ադմինիստրատորը "
"կարող է մուտք գործել այն և կվերահսկի ֆայլերի կառավարչի կարգավորումներից:"

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Պարամետրեր:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Այն թույլ կտա բոլոր դերերին մուտք գործել ֆայլերի կառավարիչ ճակատային մասում "
"կամ Դուք կարող եք պարզ օգտագործել օգտատերերի որոշակի դերերի համար, ինչպես "
"օրինակ՝ allow_roles = \"խմբագիր, հեղինակ\" (առանձնացված ստորակետով (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Այստեղ «թեստը» թղթապանակի անունն է, որը գտնվում է արմատային գրացուցակում, "
"կամ կարող եք ճանապարհ տալ ենթապանակների համար, ինչպես օրինակ «wp-content/"
"plugins»: Եթե ​​թողնեք դատարկ կամ դատարկ, այն հասանելի կլինի բոլոր "
"թղթապանակներին արմատային գրացուցակում: Կանխադրված՝ արմատական ​​գրացուցակ"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"ֆայլերի գրելու թույլտվությունների հասանելիության համար նշեք՝ true/false, "
"default՝ false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"ֆայլերի ընթերցման թույլտվության համար նշեք՝ ճշմարիտ/կեղծ, լռելյայն՝ ճշմարիտ"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"այն կթաքցվի այստեղ նշված: Նշում. առանձնացված է ստորակետով (,): Կանխադրված՝ "
"զրոյական"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Այն կկողպվի ստորակետերում նշված: Դուք կարող եք կողպել ավելի շատ, ինչպես "
"օրինակ «.php,.css,.js» և այլն: Կանխադրված՝ Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* բոլոր գործողությունների համար և որոշակի գործողություն թույլատրելու համար "
"կարող եք նշել գործողության անվանումը որպես like, allow_operations=\"upload,"
"download\": Նշում. առանձնացված է ստորակետով (,): Կանխադրված՝ *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Ֆայլի գործառնությունների ցուցակ."

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Կատարել գրացուցակ կամ պանակ"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Պատկեր պատրաստել"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Վերանվանել ֆայլ կամ պանակ"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Կրկնօրինակեք կամ կլոնավորեք պանակ կամ ֆայլ"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Տեղադրեք ֆայլ կամ պանակ"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Արգելել"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Արխիվ կամ zip պատրաստելու համար"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Արդյունահանել արխիվը կամ սեղմված ֆայլը"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Պատճենել ֆայլերը կամ պանակները"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Պարզ կտրեք ֆայլը կամ պանակը"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Խմբագրել ֆայլը"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Հեռացնել կամ ջնջել ֆայլերը և պանակները"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Ներբեռնեք ֆայլեր"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Ֆայլեր վերբեռնել"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Որոնել բաներ"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Ֆայլի տեղեկատվություն"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Օգնություն"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Այն կարգելի որոշակի օգտվողներին `պարզապես տեղադրելով իրենց ID- ները "
"ստորակետերով բաժանված (,): Եթե ​​օգտագործողը արգելում է, ապա նա չի կարողանա "
"մուտք գործել wp ֆայլի կառավարիչ դիմային մասում:"

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI դիտում: Լռելյայն. Ցանց"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Ֆայլը փոփոխված է կամ ստեղծեք ամսաթվի ձևաչափ: Լռելյայն. D M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Ֆայլերի կառավարչի լեզու: Լռելյայն. English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Ֆայլի կառավարչի թեման: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Ֆայլի կառավարիչ - Համակարգի հատկություններ"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP տարբերակ"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Վերբեռնման առավելագույն չափը (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Տեղադրել ֆայլերի վերբեռնման առավելագույն չափը (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Հիշողության սահման (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Ընդմիջում (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Brննարկիչ և ՕՀ (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Փոխել թեման այստեղ ՝"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Լռելյայն"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Մութ"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Լույս"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Մոխրագույն"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Բարի գալուստ File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Մենք սիրում ենք նոր ընկերներ ձեռք բերել: Բաժանորդագրվեք ստորև, և մենք "
"խոստանում ենք դա անել\n"
"    ձեզ թարմ պահեք մեր վերջին նոր հավելումների, թարմացումների,\n"
"    զարմանալի գործարքներ և մի քանի հատուկ առաջարկներ:"

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Խնդրում ենք մուտքագրել անուն"

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Խնդրում ենք մուտքագրել ազգանունը:"

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Խնդրում ենք մուտքագրել էլ. Փոստի հասցեն:"

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Հաստատել"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ոչ, շնորհակալություն"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Ծառայությունների մատուցման պայմաններ"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Գաղտնիության քաղաքականություն"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Խնայվում է ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "լավ"

#~ msgid "Backup not found!"
#~ msgstr "Կրկնօրինակը չի գտնվել:"

#~ msgid "Backup removed successfully!"
#~ msgstr "Պահուստավորումը հաջողությամբ հեռացվեց:"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Պահուստավորման համար ոչինչ չի ընտրվել</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Անվտանգության խնդիր:</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Շտեմարանի պահուստավորումն արված է:</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Հնարավոր չէ ստեղծել տվյալների բազայի "
#~ "պահուստավորում:</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Պլագինների պահուստավորումն ավարտված է:"
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Պլագինների պահուստավորումը ձախողվեց:</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Թեմաների պահուստավորումը կատարված է:</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Թեմաների պահուստավորումը ձախողվեց:</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Վերբեռնումների պահուստավորումն "
#~ "ավարտված է:</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Վերբեռնումների պահուստավորումը ձախողվեց:"
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Մյուսները պահուստավորումն արված է:</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Մյուսների պահուստավորումը ձախողվեց:</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Ամեն ինչ արված է</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Կառավարեք ձեր WP ֆայլերը:"

#~ msgid "Extensions"
#~ msgstr "Ընդլայնումներ"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Խնդրում ենք նվիրաբերել որոշ նվիրատվություններ, որպեսզի ավելի շատ "
#~ "կայունացնեք: Դուք կարող եք վճարել ձեր ընտրության չափը:"
languages/wp-file-manager-az.mo000064400000044414147361034410012444 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Y(�))/�)S*6r*8�*�*2�*�!+��+U�,N#-r-9�-/�-5�-'.;.N.0h. �.1�.�.
/#/?/ G/	h/r/	�/�/�/
�/
�/(�/1080	J0T09d07�0-�01111+1E1!T1v1:�1$�1�1<2A2�]2C3,Y3�3(�3B�3�4!
5',5T5o5s5��5�r6O7g7��7sq8��8�{94:G:O:X:	u:]:9�:;5;R;j;�;�;�;�;z�;gK<*�<+�<
==F=-]=*�=,�="�=>
>)#>9M>&�>)�>n�>tG?�?"�?+�?*@%>@Ad@�@�@�@�@,�@'ACA%OAuA{A�A�A�A�A-�ABB6B*JB/uB�B�B#�B�BC.&CUC)\C)�C(�C1�C
DD4DLDTDAaD�D-�D,�D)E';E.cE�E�E�E*�E/�E.-F,\F�F�F�F1�F�F�G!�G5�GF!HShHO�H}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 14:51+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: az
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e;esc_attr__
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* bütün əməliyyatlar üçün və bəzi əməliyyatlara icazə vermək üçün əməliyyat adını, allow_operations="yüklə, endir" kimi qeyd edə bilərsiniz. Qeyd: vergül(,) ilə ayrılır. Defolt: *-> Şəxsi identifikatorlarını vergüllə (,) ayıraraq xüsusi istifadəçiləri qadağan edəcəkdir. İstifadəçi qadağandırsa, əvvəldən wp fayl menecerinə daxil ola bilməyəcəklər.-> Fayl Meneceri Teması. Varsayılan: Yüngül-> Dəyişdirilmiş Fayl və ya tarix formatı yaradın. Varsayılan: d M, Y h: i A-> Fayl meneceri dili. Varsayılan: İngilis dili (az)-> Filemanager UI Görünüşü. Varsayılan: şəbəkəFəaliyyətSeçilmiş yedek (lər) lə bağlı əməliyyatlarAdmin hər hansı bir istifadəçinin hərəkətlərini məhdudlaşdıra bilər. Həmçinin faylları və qovluqları gizləyin və fərqli istifadəçilər üçün fərqli qovluq yollarını təyin edə bilərsiniz.Admin hər hansı bir userrole hərəkətini məhdudlaşdıra bilər. Həmçinin faylları və qovluqları gizləyin və fərqli istifadəçi rolları üçün fərqli qovluq yollarını təyin edə bilərsiniz.Zibil qutusunu aktivləşdirdikdən sonra sənədləriniz zibil qovluğuna gedəcək.Bunu təmin etdikdən sonra bütün fayllar media kitabxanasına gedəcəkdir.Hər şey hazırdırSeçilmiş yedəkləri silmək istədiyinizə əminsiniz?Bu ehtiyatı silmək istədiyinizə əminsiniz?Bu nüsxəni bərpa etmək istədiyinizə əminsiniz?Yedəkləmə tarixiİndi yedəkləyinYedəkləmə Seçimləri:Yedək məlumatları (yükləmək üçün vurun)Yedək faylları altında olacaqYedəkləmə işləyir, xahiş edirəm gözləyinYedəkləmə uğurla silindi.Yedəkləyin/bərpa edinYedəklər uğurla silindi!QadağaBrauzer və OS (HTTP_USER_AGENT)PRO alınPro satın alınLəğv etMövzunu dəyişdirin:PRO Almaq üçün klikləyinKod redaktoruTəsdiqləyinFaylları və ya qovluqları kopyalayınHal hazırda heç bir ehtiyat (lər) tapılmadı.DOSYALARI SİLİNQaranlıqDatabase BackupVerilənlər bazasının yedəklənməsi tarixdə edildi Verilənlər bazasının ehtiyat nüsxəsi tamamlandı.Verilənlər bazası ehtiyatla bərpa edildi.DefoltDefolt:SilSeçimi ləğv edinBu bildirişi rədd edin.BağışlayınFaylların qeydlərini yükləyinFaylları yükləyinBir qovluğu və ya dosyanı kopyalayın və ya klonlayınFaylların qeydlərini redaktə edinBir faylı redaktə edinFaylları Media Kitabxanasına yükləməyi aktivləşdirin?Zibil qutusu aktiv edilsin?Xəta: Verilənlər bazasının ehtiyat nüsxəsinin ölçüsü çox olduğundan ehtiyat nüsxəni bərpa etmək mümkün deyil. Lütfən, Üstünlüklər ayarlarından icazə verilən maksimum ölçüsü artırmağa çalışın.Mövcud Yedək (lər)Arxivi və ya sıxılmış faylı çıxarınFayl meneceri - Qisa kodFayl meneceri - Sistem xüsusiyyətləriFile Manager Kök Yolu, seçiminizə görə dəyişə bilərsiniz.Dosya menecerində bir çox mövzuda bir kod redaktoru var. Kod redaktoru üçün hər hansı bir mövzu seçə bilərsiniz. Hər hansı bir faylı düzəldən zaman göstərilir. Həmçinin, tam ekran rejimində kod redaktoruna icazə verə bilərsiniz.Fayl əməliyyatları siyahısı:Fayl yükləmək üçün mövcud deyil.Faylların YedəklənməsiBozKömək edinBurada "test" kök kataloqda yerləşən qovluğun adıdır və ya alt qovluqlar üçün "wp-content/plugins" kimi yol verə bilərsiniz. Boş və ya boş qoysanız, o, kök kataloqdakı bütün qovluqlara daxil olacaq. Defolt: Kök kataloquBurada admin filemanager istifadə etmək üçün istifadəçi rollarına çıxış verə bilər. Administrator Default Access Qovluqunu təyin edə bilər və filemanager yükləmə ölçüsünü də idarə edə bilər.Fayl haqqında məlumatYanlış Təhlükəsizlik Kodu.Bu, bütün rolların ön tərəfdəki fayl menecerinə daxil olmasına imkan verəcək və ya siz allow_roles="editor,author" (vergül(,) ilə ayrılmış) kimi xüsusi istifadəçi rolları üçün sadə istifadə edə bilərsiniz.Vergüllə qeyd olunan kilidlənəcək. daha çox ".php,.css,.js" və s. kimi kilidləyə bilərsiniz. Defolt: NullÖn tərəfdə fayl menecerini göstərəcək. Ancaq yalnız Administrator ona daxil ola bilər və fayl meneceri parametrlərindən idarə edəcək.Ön tərəfdə fayl menecerini göstərəcək. Siz fayl meneceri parametrlərindən bütün parametrlərə nəzarət edə bilərsiniz. Backend WP Fayl meneceri ilə eyni işləyəcək.Son Giriş MesajıİşıqQeydlərDizin və ya qovluq yaradınFayl edinVerilənlər bazası ehtiyat nüsxəsinin bərpası zamanı icazə verilən maksimum ölçü.Maksimum fayl yükləmə ölçüsü (upload_max_filesize)Yaddaş Limiti (memory_limit)Ehtiyat id nömrəsi yoxdur.Parametr növü yoxdur.Lazımi parametrlər yoxdur.Xeyr, təşəkkürlərGiriş mesajı yoxdurGünlük tapılmadı!Qeyd:Qeyd: Bunlar demo ekran şəkilləridir. Zəhmət olmasa Qeydlər funksiyaları üçün File Manager pro məhsulunu alın.Qeyd: Bu yalnız bir demo ekran görüntüsüdür. Ayarları almaq üçün pro versiyasını satın al.Yedəkləmə üçün heç nə seçilməyibYedəkləmə üçün heç nə seçilməyib.tamamTamamDigərləri (wp-məzmunun içərisində olan digər bütün qovluqlar)Digərləri tarixdə həyata keçirilmişdir Digərlərinin yedəkləməsi tamamlandı.Digərlərinin yedəkləməsi uğursuz oldu.Digərləri uğurla bərpa edildi.PHP versiyasıParametrlər:Bir faylı və ya qovluğu yapışdırınZəhmət olmasa elektron poçt ünvanınızı daxil edin.Zəhmət olmasa Adınızı daxil edin.Zəhmət olmasa soyadınızı daxil edin.Xahiş edirəm bunu diqqətlə dəyişdirin, səhv yol fayl meneceri plagininin enməsinə səbəb ola bilər.Zəhmət olmasa, ehtiyat nüsxəsinin bərpası zamanı xəta mesajı alırsınızsa, sahənin dəyərini artırın.PluginsPlugins ehtiyatı tarixdə edildi Pluginlərin ehtiyat nüsxəsi tamamlandı.Pluginlərin ehtiyat nüsxəsi alınmadı.Plugins backup uğurla bərpa edildi.Maksimum fayl yükləmə ölçüsünü göndərin (post_max_size)ÜstünlüklərGizlilik Siyasətiİctimai Kök YoluDOSYALARI QARATINFaylları və qovluqları silin və ya silinBir faylı və ya qovluğu dəyişdirinBərpa edinBərpa işləyir, lütfən gözləyinUĞURDəyişiklikləri yadda saxlaYadda saxlanır ...Şeyi axtarınTəhlükəsizlik Problemi.Hamısını seçSilmək üçün ehtiyat nüsxə(lər) seçin!AyarlarAyarlar - kod redaktoruStellings - GeneralAyarlar - İstifadəçi məhdudiyyətləriAyarlar - İstifadəçi rolu məhdudiyyətləriParametrlər yadda saxlandı.Qısa kod - PROSadə bir fayl və ya qovluq kəsdiSistemin xüsusiyyətləriXidmət ŞərtləriYedəkləmə aydın oldu və indi tamamlandı.ThemesMövzular yedəkləmə tarixində edildi Mövzuların yedəklənməsi tamamlandı.Mövzuların yedəklənməsi alınmadı.Temaların yedəklənməsi uğurla bərpa edildi.İndi vaxtTəminat (max_execution_time)Arxiv və ya zip etməkBu günİSTİFADƏ:Verilənlər bazası ehtiyat nüsxəsini yaratmaq mümkün deyil.Yedək silinmədi!DB ehtiyatını bərpa etmək mümkün deyil.Başqalarını bərpa etmək mümkün deyil.Plaginləri bərpa etmək mümkün deyil.Temaları bərpa etmək mümkün deyil.Yüklənmələri bərpa etmək mümkün deyil.Fayl qeydlərini yükləyinFaylları yükləyinYükləmələrTarixdə yükləmələrin yedəklənməsi Yükləmələrin ehtiyat nüsxəsi tamamlandı.Yükləmələrin ehtiyat nüsxəsi alınmadı.Yüklənmə ehtiyatı uğurla bərpa edildi.DoğrulayınGirişə baxınWP Fayl meneceriWP Fayl meneceri - Yedəkləmə / Geri YükləməWP Fayl meneceri qatqısıYeni dostlar qazanmağı sevirik! Aşağıdakı abunə olun və söz veririk
    ən son yeni eklentilərimizi, yeniləmələrimizi,
    zəhmli sövdələşmələr və bir neçə xüsusi təklif.Fayl menecerinə xoş gəlmisinizQurtarmaq üçün heç bir dəyişiklik etməmisiniz.faylları oxumaq icazəsi üçün qeyd edin: true/false, default: truefaylları yazmaq icazələri üçün qeyd edin: doğru/yanlış, standart: yanlışburada qeyd olunan gizlənəcək. Qeyd: vergül(,) ilə ayrılır. Defolt: Nulllanguages/wp-file-manager-ar.po000064400000076744147361034410012452 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 15:15+0530\n"
"PO-Revision-Date: 2022-02-25 15:19+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 "
"&& n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "تمت استعادة النسخ الاحتياطي للسمات بنجاح."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "غير قادر على استعادة السمات."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "تمت استعادة النسخ الاحتياطي للتحميلات بنجاح."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "غير قادر على استعادة التحميلات."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "تمت استعادة النسخ الاحتياطية الأخرى بنجاح."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "غير قادر على استعادة الآخرين."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "تمت استعادة النسخ الاحتياطي للمكونات الإضافية بنجاح."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "غير قادر على استعادة المكونات الإضافية."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "تمت استعادة النسخ الاحتياطي لقاعدة البيانات بنجاح."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "كله تمام"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "غير قادر على استعادة نسخة قاعدة البيانات الاحتياطية."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "تمت إزالة النسخ الاحتياطية بنجاح!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "غير قادر على إزالة النسخة الاحتياطية!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "تم إجراء نسخ احتياطي لقاعدة البيانات في التاريخ "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "تم إجراء نسخ احتياطي للإضافات في التاريخ "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "تم إجراء نسخ احتياطي للسمات في التاريخ "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "تم تحميل النسخ الاحتياطي في التاريخ "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "النسخ الاحتياطي للآخرين في التاريخ "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "السجلات"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "لم يتم العثور على سجلات!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "لم يتم تحديد أي شيء للنسخ الاحتياطي"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "مشكلة أمنية."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "تم إجراء نسخ احتياطي لقاعدة البيانات."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "تعذر إنشاء نسخة احتياطية لقاعدة البيانات."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "تم إجراء نسخ احتياطي للإضافات."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "فشل النسخ الاحتياطي للمكونات الإضافية."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "تم إجراء نسخ احتياطي للسمات."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "فشل النسخ الاحتياطي للسمات."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "تم تحميل النسخ الاحتياطي."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "فشل النسخ الاحتياطي لعمليات التحميل."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "تم إجراء نسخ احتياطي للآخرين."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "فشل النسخ الاحتياطي للآخرين."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "ملف إدارة WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "إعدادات"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "التفضيلات"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "خصائص النظام"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "شورتكود - برو"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "اسنرجاع البيانات"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "شراء Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "تبرع"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "الملف غير موجود للتنزيل."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "كود الحمايه خاطئ."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "معرف النسخ الاحتياطي مفقود."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "نوع المعلمة مفقود."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "المعلمات المطلوبة مفقودة."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"خطأ: غير قادر على استعادة النسخة الاحتياطية لأن النسخ الاحتياطي لقاعدة "
"البيانات كبير الحجم. يرجى محاولة زيادة الحد الأقصى للحجم المسموح به من "
"إعدادات التفضيلات."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "حدد النسخ الاحتياطية لحذفها!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "هل تريد بالتأكيد إزالة النسخ الاحتياطية المحددة؟"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "النسخ الاحتياطي قيد التشغيل ، يرجى الانتظار"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "الاستعادة قيد التشغيل ، يرجى الانتظار"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "لم يتم تحديد أي شيء للنسخ الاحتياطي."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP File Manager - النسخ الاحتياطي / الاستعادة"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "خيارات النسخ الاحتياطي:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "نسخه الاحتياطيه لقاعدة البيانات"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "ملفات النسخ الاحتياطي"

#: inc/backup.php:68
msgid "Plugins"
msgstr "الإضافات"

#: inc/backup.php:71
msgid "Themes"
msgstr "ثيمات"

#: inc/backup.php:74
msgid "Uploads"
msgstr "تحميلات"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "أخرى (أي أدلة أخرى موجودة داخل محتوى wp)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "اعمل نسخة احتياطية الان"

#: inc/backup.php:89
msgid "Time now"
msgstr "الوقت الآن"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "نجاح"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "تم حذف النسخة الاحتياطية بنجاح."

#: inc/backup.php:102
msgid "Ok"
msgstr "نعم"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "حذف الملفات"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "هل أنت متأكد أنك تريد حذف هذه النسخة الاحتياطية؟"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "يلغي"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "يتأكد"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "استعادة الملفات"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "هل أنت متأكد أنك تريد استعادة هذه النسخة الاحتياطية؟"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "آخر رسالة تسجيل"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "يبدو أن النسخ الاحتياطي نجح واكتمل الآن."

#: inc/backup.php:171
msgid "No log message"
msgstr "لا توجد رسالة سجل"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "النسخ الاحتياطية الموجودة"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "تاريخ النسخ الاحتياطي"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "بيانات النسخ الاحتياطي (انقر للتنزيل)"

#: inc/backup.php:190
msgid "Action"
msgstr "عمل"

#: inc/backup.php:210
msgid "Today"
msgstr "اليوم"

#: inc/backup.php:239
msgid "Restore"
msgstr "يعيد"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "حذف"

#: inc/backup.php:241
msgid "View Log"
msgstr "سجل عرض"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "حاليا لا توجد نسخ احتياطية."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "إجراءات بناءً على النسخ الاحتياطية المحددة"

#: inc/backup.php:251
msgid "Select All"
msgstr "اختر الكل"

#: inc/backup.php:252
msgid "Deselect"
msgstr "إلغاء"

#: inc/backup.php:254
msgid "Note:"
msgstr "ملحوظة:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "ستكون ملفات النسخ الاحتياطي أقل من"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "مساهمة WP File Manager"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"ملاحظة: هذه لقطات شاشة تجريبية. يرجى شراء File Manager pro إلى وظائف السجلات."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "انقر لشراء PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "شراء برو"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "تحرير سجلات الملفات"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "تنزيل ملفات السجلات"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "تحميل ملفات السجلات"

#: inc/root.php:43
msgid "Settings saved."
msgstr "تم حفظ الإعدادات."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "تجاهل هذا الإشعار."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "لم تقم بإجراء أي تغييرات ليتم حفظها."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "مسار الجذر العام"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "مسار الجذر لمدير الملفات ، يمكنك التغيير وفقًا لاختيارك."

#: inc/root.php:59
msgid "Default:"
msgstr "تقصير:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"يرجى تغيير هذا بعناية ، حيث يمكن أن يؤدي المسار الخاطئ إلى نزول البرنامج "
"المساعد لمدير الملفات."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "تمكين المهملات؟"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "بعد تمكين سلة المهملات ، ستنتقل ملفاتك إلى مجلد سلة المهملات."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "تمكين تحميل الملفات إلى مكتبة الوسائط؟"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "بعد تمكين هذا ، ستنتقل جميع الملفات إلى مكتبة الوسائط."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"الحجم الأقصى المسموح به في وقت استعادة النسخة الاحتياطية لقاعدة البيانات."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"يرجى زيادة قيمة الحقل إذا كنت تتلقى رسالة خطأ في وقت استعادة النسخة "
"الاحتياطية."

#: inc/root.php:90
msgid "Save Changes"
msgstr "حفظ التغييرات"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "إعدادات - عام"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"ملاحظة: هذا هو مجرد لقطة تجريبي. للحصول على إعدادات يرجى شراء لدينا نسخة "
"للمحترفين."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"هنا المشرف يمكن أن تعطي الوصول إلى أدوار المستخدم لاستخدام فيليماناجر. يمكن "
"للمشرف تعيين المجلد الوصول الافتراضي وأيضا التحكم في تحميل حجم فيلماناجر."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "إعدادات - كود محرر"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any theme "
"for code editor. It will display when you edit any file. Also you can allow "
"fullscreen mode of code editor."
msgstr ""
"مدير الملفات يحتوي على محرر التعليمات البرمجية مع مواضيع متعددة. يمكنك اختيار "
"أي موضوع لمحرر التعليمات البرمجية. سيتم عرضه عند تعديل أي ملف. كما يمكنك "
"السماح وضع ملء الشاشة من محرر التعليمات البرمجية."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "كود-إديتور فيو"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "إعدادات - قيود المستخدم"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"يمكن للمشرف تقييد إجراءات أي مستخدم. أيضا إخفاء الملفات والمجلدات ويمكن تعيين "
"مختلف - مسارات المجلدات المختلفة لمختلف المستخدمين."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "الإعدادات - قيود دور المستخدم"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"يمكن للمشرف تقييد الإجراءات من أي وسيرول. أيضا إخفاء الملفات والمجلدات ويمكن "
"تعيين مختلف - مسارات المجلدات المختلفة لمختلف أدوار المستخدمين."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "مدير الملفات - الرمز القصير"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17 inc/shortcode_docs.php:19
msgid "USE:"
msgstr "استعمال:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"سيظهر مدير الملفات في الواجهة الأمامية. يمكنك التحكم في جميع الإعدادات من "
"إعدادات مدير الملفات. سيعمل نفس مدير ملفات WP الخلفي."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"سيظهر مدير الملفات في الواجهة الأمامية. لكن المسؤول فقط هو من يمكنه الوصول "
"إليه وسيتحكم في إعدادات مدير الملفات."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "المعلمات:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can simple "
"use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"سيسمح لجميع الأدوار بالوصول إلى مدير الملفات على الواجهة الأمامية أو يمكنك "
"الاستخدام البسيط لأدوار مستخدم معينة مثل allow_roles = \"editor، author"
"\" (مفصول بفاصلة (،))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"هنا \"test\" هو اسم المجلد الموجود في الدليل الجذر ، أو يمكنك إعطاء مسار "
"للمجلدات الفرعية مثل \"wp-content / plugins\". إذا تم تركه فارغًا أو فارغًا ، "
"فسيتم الوصول إلى جميع المجلدات الموجودة في الدليل الجذر. الافتراضي: الدليل "
"الجذر"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "للوصول إلى أذونات كتابة الملفات ، لاحظ: صح / خطأ ، افتراضي: خطأ"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "للوصول إلى إذن قراءة الملفات ، لاحظ: صحيح / خطأ ، افتراضي: صحيح"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "سوف يخفي المذكورة هنا. ملاحظة: مفصولة بفاصلة (،). الافتراضي: لاغية"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js\" "
"etc. Default: Null"
msgstr ""
"سيتم قفل المذكورة بالفواصل. يمكنك قفل المزيد مثل \".php ، .css ، .js\" إلخ. "
"الافتراضي: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* لجميع العمليات وللسماح ببعض العمليات ، يمكنك ذكر اسم العملية مثل ، "
"allowed_operations = \"upload ، download\". ملاحظة: مفصولة بفاصلة (،). تقصير: "
"*"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "قائمة عمليات الملف:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "اصنع دليلًا أو مجلدًا"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "قم بعمل ملف"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "أعد تسمية ملف أو مجلد"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "قم بتكرار أو استنساخ مجلد أو ملف"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "الصق ملفًا أو مجلدًا"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "المنع"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "لعمل أرشيف أو ملف مضغوط"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "استخراج أرشيف أو ملف مضغوط"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "انسخ الملفات أو المجلدات"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "قص ملف أو مجلد ببساطة"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "تحرير ملف"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "إزالة أو حذف الملفات والمجلدات"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "تحميل ملفات"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "تحميل الملفات"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "ابحث عن الأشياء"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "معلومات الملف"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "مساعدة"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> سيحظر مستخدمين معينين بمجرد وضع معرفاتهم مفصولة بفواصل (،). إذا كان "
"المستخدم هو الحظر ، فلن يتمكن من الوصول إلى مدير ملفات wp على الواجهة "
"الأمامية."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> عرض Filemanager UI. الافتراضي: الشبكة"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> تعديل الملف أو إنشاء تنسيق التاريخ. الافتراضي: د م ، ص ح: أنا أ"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> لغة مدير الملفات. الافتراضي: الإنجليزية (ar)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> موضوع مدير الملفات. الافتراضي: ضوء"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "إدارة الملفات - خصائص النظام"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "نسخة فب"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "الحد الأقصى لحجم ملف التحميل (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "نشر الحد الأقصى لحجم ملف التحميل (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "حد الذاكرة (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "مهلة (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "المتصفح ونظام التشغيل (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "تغيير المظهر هنا:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "تقصير"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "داكن"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "ضوء"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "رمادي"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "مرحبًا بك في مدير الملفات"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"نحن نحب تكوين صداقات جديدة! اشترك أدناه ونعدك بذلك\n"
"    إبقائك على اطلاع دائم بأحدث المكونات الإضافية والتحديثات\n"
"    صفقات رائعة وبعض العروض الخاصة."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "الرجاء إدخال الاسم الأول."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "الرجاء إدخال الاسم الأخير."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "الرجاء إدخال عنوان البريد الإلكتروني."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "تحقق"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "لا شكرا"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "شروط الخدمة"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "سياسة الخصوصية"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "إنقاذ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "نعم"

#~ msgid "Backup not found!"
#~ msgstr "لم يتم العثور على النسخ الاحتياطي!"

#~ msgid "Backup removed successfully!"
#~ msgstr "تمت إزالة النسخة الاحتياطية بنجاح!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">لم يتم تحديد أي شيء للنسخ الاحتياطي</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">مشكلة أمنية.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">تم إجراء نسخ احتياطي لقاعدة البيانات.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">تعذر إنشاء نسخة احتياطية لقاعدة البيانات."
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">تم إجراء نسخ احتياطي للإضافات.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">فشل النسخ الاحتياطي للمكونات الإضافية.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">تم إجراء نسخ احتياطي للسمات. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">فشل النسخ الاحتياطي للسمات.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">تم تحميل النسخ الاحتياطي.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">فشل النسخ الاحتياطي لعمليات التحميل.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">تم إجراء نسخ احتياطي للآخرين. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">فشل النسخ الاحتياطي للآخرين. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">كل ذلك</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "allowed_roles = \"*\""
#~ msgstr "allowed_roles = \"*\""

#~ msgid "hide_files = \"wp-content/plugins,wp-config.php\""
#~ msgstr "hide_files = \"wp-content/plugins,wp-config.php\""

#~ msgid "Manage your WP files."
#~ msgstr "إدارة ملفات الفسفور الابيض الخاص بك."

#~ msgid "Extensions"
#~ msgstr "ملحقات"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "يرجى المساهمة بعض التبرع، لجعل البرنامج المساعد أكثر استقرارا. يمكنك دفع "
#~ "مبلغ من اختيارك."
languages/wp-file-manager-is_IS.po000064400000066267147361034410013055 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 10:42+0530\n"
"PO-Revision-Date: 2022-03-01 11:10+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: is_IS\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Öryggisafrit þemu endurheimt."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Ekki tókst að endurheimta þemu."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Upphleðsluforrit endurheimt tókst."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Ekki tókst að endurheimta innsendingar."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Önnur afritun tókst aftur."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Ekki er hægt að endurheimta aðra."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Varabúnaður viðbóta endurheimtur með góðum árangri."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Ekki tókst að endurheimta viðbætur."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Varabúnaður gagnagrunns endurheimtur með góðum árangri."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Allt búið"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Ekki tókst að endurheimta DB afrit."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Taka öryggisafrit tókst!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Ekki tókst að fjarlægja öryggisafrit!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Öryggisafrit gagnagrunns gert á dagsetningu "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Varabúnaður viðbóta gerður þann dag "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Afrit þemu gert á dagsetningu "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Hleður inn öryggisafrit gert á dagsetningu "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Aðrir öryggisafrit gert á dagsetningu "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Logs"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Engar annálar fundust!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Ekkert valið fyrir öryggisafrit"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Öryggismál."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Afrit af gagnagrunni lokið."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Ekki tókst að búa til öryggisafrit af gagnagrunni."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Afrit af viðbótum lokið."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Öryggisafrit viðbætur mistókst."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Afrit af þemum lokið."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Afritun þema mistókst."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Upphleðsla öryggisafrit lokið."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Upphleðsla öryggisafrit mistókst."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Önnur öryggisafrit lokið."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Önnur öryggisafritun mistókst."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP Skráastjóri"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Stillingar"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Óskir"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Eiginleikar kerfisins"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Stuttkóði - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Afritun/endurheimta"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Kauptu Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Styrkja"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Skráin er ekki til að hlaða niður."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Ógildir öryggiskóðar."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Vantar öryggisauðkenni."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Vantar gerð breytu."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Vantar nauðsynlegar breytur."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Villa: Ekki tókst að endurheimta öryggisafrit vegna þess að öryggisafrit af "
"gagnagrunni er mikið að stærð. Vinsamlega reyndu að auka hámarks leyfða "
"stærð frá stillingum."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Veldu öryggisafrit til að eyða!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Ertu viss um að þú viljir fjarlægja valið öryggisafrit?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Afritun er í gangi, vinsamlegast bíddu"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Endurheimt er í gangi, vinsamlegast bíðið"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Ekkert valið fyrir öryggisafrit."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP skráastjóri - öryggisafrit / endurheimt"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Afritunarvalkostir:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Öryggisafrit gagnagrunns"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Afrit af skrám"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Viðbætur"

#: inc/backup.php:71
msgid "Themes"
msgstr "Þemu"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Upphleðsla"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Aðrir (Allar aðrar möppur sem finnast í wp-innihaldi)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Taktu öryggisafrit núna"

#: inc/backup.php:89
msgid "Time now"
msgstr "Tími núna"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ÁRANGUR"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Öryggisafritun eytt."

#: inc/backup.php:102
msgid "Ok"
msgstr "Allt í lagi"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "Eyða skrám"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Ertu viss um að þú viljir eyða þessu öryggisafriti?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Hætta við"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Staðfesta"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "Endurheimta skrár"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Ertu viss um að þú viljir endurheimta þetta öryggisafrit?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Síðasta logskilaboð"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Öryggisafritið tókst greinilega og er nú lokið."

#: inc/backup.php:171
msgid "No log message"
msgstr "Engin logskilaboð"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Núverandi öryggisafrit"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Afritunardagsetning"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Afritunargögn (smelltu til að hlaða niður)"

#: inc/backup.php:190
msgid "Action"
msgstr "Aðgerð"

#: inc/backup.php:210
msgid "Today"
msgstr "Í dag"

#: inc/backup.php:239
msgid "Restore"
msgstr "Endurheimta"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Eyða"

#: inc/backup.php:241
msgid "View Log"
msgstr "Skoða Log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Eins og er fannst ekkert öryggisafrit."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Aðgerðir við valið öryggisafrit"

#: inc/backup.php:251
msgid "Select All"
msgstr "Velja allt"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Hætta við valið"

#: inc/backup.php:254
msgid "Note:"
msgstr "Athugið:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Öryggisafritaskrár verða undir"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP Skráastjóri Framlag"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Athugið: Þetta eru demo skjámyndir. Vinsamlegast keyptu File Manager pro í "
"Logs aðgerðir."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Smelltu til að kaupa PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Kauptu PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Breyttu skráaskrám"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Sæktu skrárdagbækur"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Hlaða inn skráaskrám"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Stillingar vistaðar."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Hafna þessari tilkynningu."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Þú hefur ekki gert neinar breytingar til að vista."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Almenningsrótarstígur"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path, þú getur breytt eftir því sem þú velur."

#: inc/root.php:59
msgid "Default:"
msgstr "Sjálfgefið:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Vinsamlegast breyttu þessu vandlega, röng leið getur leitt til þess að tappi "
"skráarstjóra fellur niður."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Virkja ruslið?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Eftir að hafa virkjað ruslið fara skrárnar þínar í ruslakista."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Virkja skrár sem hlaðið er upp í fjölmiðlasafnið?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Eftir að þetta er virkt fara allar skrár í fjölmiðlasafnið."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "Leyfileg hámarksstærð við endurheimt öryggisafrits gagnagrunns."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Vinsamlega aukið gildi reits ef þú færð villuboð þegar öryggisafrit er "
"endurheimt."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Vista breytingar"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Stillingar - Almennt"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Athugið: Þetta er bara demo skjámynd. Til að fá stillingar skaltu kaupa "
"atvinnuútgáfuna okkar."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Hér getur stjórnandi veitt aðgang að notendahlutverkum til að nota "
"skjalastjóri. Stjórnandi getur valið sjálfgefna aðgangsmöppu og einnig "
"stjórnað upphæð stærðar skráarstjóra."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Stillingar - Kóði ritstjóri"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager hefur kóða ritstjóra með mörgum þemum. Þú getur valið hvaða "
"þema sem er fyrir kóða ritstjóra. Það birtist þegar þú breytir hvaða skrá "
"sem er. Einnig er hægt að leyfa fullskjásstillingu kóða ritstjóra."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kóða-ritstjóri Skoða"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Stillingar - Takmarkanir notenda"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Stjórnandi getur takmarkað aðgerðir hvers notanda. Fela einnig skrár og "
"möppur og getur stillt mismunandi - mismunandi möppuleiðir fyrir mismunandi "
"notendur."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Stillingar - Takmarkanir á hlutverki notanda"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Stjórnandi getur takmarkað aðgerðir hvaða notendastjórn sem er. Einnig fela "
"skrár og möppur og geta stillt mismunandi - mismunandi möppuleiðir fyrir "
"mismunandi hlutverk notenda."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Skráasafn - Stutt kóða"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "NOTKUN:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Það mun sýna skráarstjóra á framendanum. Þú getur stjórnað öllum stillingum "
"úr stillingum skráasafns. Það mun virka eins og stuðningur WP File Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Það mun sýna skráarstjóra á framendanum. En aðeins stjórnandi hefur aðgang "
"að því og mun stjórna úr stillingum skráasafns."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Færibreytur:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Það mun leyfa öllum hlutverkum að fá aðgang að skjalastjóra í framendanum "
"eða þú getur einfalt notað fyrir ákveðin notendahlutverk eins og allow_roles="
"\"ritstjóri, höfundur\" (aðskilin með kommu (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Hér er \"próf\" nafnið á möppunni sem er staðsett á rótarskránni, eða þú "
"getur gefið slóð fyrir undirmöppur eins og \"wp-content/plugins\". Ef skilið "
"er eftir autt eða tómt mun það fá aðgang að öllum möppum í rótarskránni. "
"Sjálfgefið: Rótarskrá"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"til að fá aðgang að heimildum til að skrifa skrár, athugaðu: satt/ósatt, "
"sjálfgefið: ósatt"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"fyrir aðgang að heimild til að lesa skrár, athugaðu: satt/ósatt, sjálfgefið: "
"satt"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"það mun fela nefnt hér. Athugið: aðskilin með kommu(,). Sjálfgefið: Núll"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Það mun læsast sem nefnt er með kommum. þú getur læst fleiri eins og \".php,."
"css,.js\" osfrv. Sjálfgefið: Núll"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* fyrir allar aðgerðir og til að leyfa einhverja aðgerð geturðu nefnt "
"aðgerðarheiti eins og, allow_operations=\"hlaða upp,hlaða niður\". Athugið: "
"aðskilin með kommu(,). Sjálfgefið: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Listi yfir aðgerðaskrár:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Búðu til möppu eða möppu"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Búðu til skrá"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Endurnefna skrá eða möppu"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Afritaðu eða klónaðu möppu eða skrá"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Límdu skrá eða möppu"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Banna"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Til að búa til skjalasafn eða zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Dragðu úr skjalasafni eða þjöppuðum skrá"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Afritaðu skrár eða möppur"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Einfalt skera skrá eða möppu"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Breyttu skrá"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Fjarlægðu eða eyddu skrám og möppum"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Sæktu skrár"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Sendu skrár"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Leitaðu að hlutunum"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Upplýsingar um skrána"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Hjálp"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Það mun banna tiltekna notendur með því að setja auðkenni þeirra aðgreind "
"með kommum (,). Ef notandi er Ban þá munu þeir ekki fá aðgang að wp "
"skráarstjóra í framendanum."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Útsýni yfir skjástjóra. Sjálfgefið: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Skrá breytt eða búið til dagsetningarsnið. Sjálfgefið: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Skráasafnarmál. Sjálfgefið: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Skráasafnsþema. Sjálfgefið: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Skráasafn - Eiginleikar kerfisins"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP útgáfa"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Hámarks stærð skráarupphleðslu (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Birta hámarksstærð skráarupphleðslu (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Minni takmörk (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Hlé (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Vafri og stýrikerfi (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Breyttu þema hér:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Sjálfgefið"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Myrkur"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Ljós"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grátt"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Verið velkomin í File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Við elskum að eignast nýja vini! Gerast áskrifandi hér að neðan og við lofum "
"því\n"
"    haltu þér uppfærð með nýjustu nýju viðbótunum okkar, uppfærslum,\n"
"    ógnvekjandi tilboð og nokkur sértilboð."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Vinsamlegast sláðu inn fornafn."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Vinsamlegast sláðu inn eftirnafn."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Vinsamlegast sláðu inn netfang."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Staðfestu"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nei takk"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Skilmálar þjónustu"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Friðhelgisstefna"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Vistar ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Allt í lagi"

#~ msgid "Backup not found!"
#~ msgstr "Afrit fannst ekki!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Afritun tókst!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr "<span class=\"fm_console_error\">Ekkert valið til afritunar</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Öryggismál. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Öryggisafrit gagnagrunns búið.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ekki er hægt að búa til öryggisafrit af "
#~ "gagnagrunni.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Varabúnaður viðbóta búinn.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ekki tókst að taka öryggisafrit af "
#~ "viðbótum.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Þemu varabúnaður búinn.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Afrit þemu mistókst.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Upphleðslu varabúnaðar lokið.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ekki tókst að taka öryggisafrit.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Aðrir varabúnaður búinn.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Önnur afrit mistókust.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Allt búið</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Stjórnaðu WP skránum þínum."

#~ msgid "Extensions"
#~ msgstr "Eftirnafn"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Vinsamlegast gefðu þér smá framlag til að gera viðbótina stöðugri. Þú "
#~ "getur greitt upphæð sem þú velur."
languages/wp-file-manager-uk.mo000064400000057563147361034410012462 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&/�(`�)S1+w�+_�+r],�,>�,0-HG.o�/h0i0ev0[�0]812�10�1=�1d82O�2J�2<83<u3<�3�3*4+4>4Q4d4+�4,�4�4-�4Q"5t5�59�5Y�5K16^}6�6 �67.71L7~70�7�7C�70,8!]8O8�8M�8*<:Hg:2�:I�:�-;��;0Z=9�=2�=
�=>�>��?$dA)�Az�A�.C/Db6E6�F�F�F/�FG�4Gf�G/0HL`H-�H7�HI2$I'WII��I�8JQ�JR>K�K�Kd�KDL6UL8�LI�LM M)4M>^M.�M �M��M��N�OV�OH�OJ/P[zPy�PPQ1gQ0�Q�QG�Q30RdRA}R
�R�R�R�R S6SOLS�S4�S+�SDTO[T,�T�T6�T%%U'KUdsU�UL�U>.V@mVQ�VW0W$CWhWyWW�WA�WH-X0vX6�X0�X@Y2PY�Y�YQ�YNZP]Z[�Z
[#[ C[ad[/�[O�[/F]Kv]��]�Q^��^}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-02 10:28+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: uk
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* для всіх операцій і для дозволу деяких операцій ви можете вказати назву операції, наприклад, allowed_operations="upload,download". Примітка: розділяється комою (,). За замовчуванням: *-> Це заборонить певних користувачів, просто ставлячи їх ідентифікатори, розділені комами (,). Якщо користувач заборонений, він не зможе отримати доступ до менеджера файлів wp на передній панелі.-> Тема менеджера файлів. За замовчуванням: Light-> Файл змінено або Створити формат дати. За замовчуванням: d M, Y h:i A-> Мова файлового менеджера. За замовчуванням: English(en)-> Перегляд інтерфейсу користувача Filemanager. За замовчуванням: gridДіяДії щодо вибраних резервних копійАдміністратор може обмежити дії будь-якого користувача. Також приховуйте файли та папки та можете встановлювати різні шляхи до різних папок для різних користувачів.Адміністратор може обмежити дії будь-якої користувацької ролі. Також приховуйте файли та папки та можете встановлювати різні шляхи до різних папок для різних ролей користувачів.Після активації кошика ваші файли перейдуть до папки кошика.Після ввімкнення цього всі файли перейдуть до медіатеки.ГотовоВи впевнені, що хочете видалити вибрані резервні копії?Ви впевнені, що хочете видалити цю резервну копію?Ви впевнені, що хочете відновити цю резервну копію?Дата резервного копіюванняРезервне копіювання заразПараметри резервного копіювання:Резервне копіювання даних (натисніть, щоб завантажити)Файли резервних копій будуть розміщені підРезервне копіювання запущено, зачекайтеРезервну копію успішно видалено.Резервне копіювання/ВідновленняРезервні копії успішно видалено!заборонаБраузер та ОС (HTTP_USER_AGENT)Купуйте PROКупуйте ProСкасуватиЗмінити тему тут:Натисніть, щоб купити PROПерегляд редактора кодуПідтвердьтеКопіюйте файли або папкиНа даний момент резервних копій не знайдено.ВИДАЛИТИ ФАЙЛИТемнийРезервне копіювання бази данихРезервне копіювання бази даних виконано на дату Резервне копіювання бази даних виконано.Резервне копіювання бази даних успішно відновлено.За замовчуваннямЗа замовчуванням:ВидалитиСкасувати вибірВідхилити це повідомлення.ПожертвуватиЗавантажте журнали файлівЗавантажте файлиДублюйте або клонуйте папку або файлРедагувати журнали файлівВідредагуйте файлУвімкнути завантаження файлів у медіатеку?Увімкнути кошик?Помилка: не вдається відновити резервну копію, оскільки резервна копія бази даних має великий розмір. Будь ласка, спробуйте збільшити максимально дозволений розмір у налаштуваннях.Існуючі резервні копіїВитягніть архів або заархівований файлФайловий менеджер - ШорткодФайловий менеджер - Властивості системиКореневий шлях файлового менеджера, ви можете змінити за вашим вибором.Файловий менеджер має редактор коду з декількома темами. Ви можете вибрати будь-яку тему для редактора коду. Він відображатиметься під час редагування будь-якого файлу. Також ви можете дозволити повноекранний режим редактора коду.Список операцій з файлами:Файл не існує для завантаження.Резервне копіювання файлівСірийДопомогаТут "test" - це ім'я папки, яка знаходиться в кореневому каталозі, або ви можете вказати шлях до підтек, наприклад, "wp-content/plugins". Якщо залишити порожнім або порожнім, він отримає доступ до всіх папок у кореневому каталозі. За замовчуванням: кореневий каталогТут адміністратор може надати доступ до ролей користувачів для використання файлового менеджера. Адміністратор може встановити папку доступу за замовчуванням, а також керувати розміром завантажуваного файлу.Інформація про файлНедійсний код безпеки.Це дозволить всім ролям отримати доступ до файлового менеджера на передньому плані або ви можете просто використовувати для певних ролей користувачів, наприклад, allow_roles="редактор,автор" (розділений комою(,))Він буде заблокований, зазначений у комах. ви можете заблокувати більше, наприклад ".php,.css,.js" тощо. За замовчуванням: NullВін покаже файловий менеджер на передньому плані. Але тільки адміністратор може отримати до нього доступ і керуватиме за допомогою налаштувань файлового менеджера.Він покаже файловий менеджер на передньому плані. Ви можете керувати всіма налаштуваннями за допомогою налаштувань файлового менеджера. Він працюватиме так само, як і бекенд Менеджер файлів WP.Останнє повідомлення журналуСвітлоЖурналиЗробіть каталог або папкуЗробити файлМаксимально дозволений розмір на момент відновлення резервної копії бази даних.Максимальний розмір файлу для завантаження (upload_max_filesize)Обмеження пам'яті (memory_limit)Відсутній ідентифікатор резервної копії.Відсутній тип параметра.Відсутні необхідні параметри.Ні, дякуюНемає повідомлення журналуЖурналів не знайдено!Примітка:Примітка: Це демонстраційні скріншоти. Будь ласка, придбайте File Manager pro для функцій Журнали.Примітка: Це лише демонстраційний скріншот. Щоб отримати налаштування, придбайте нашу про-версію.Нічого не вибрано для резервного копіюванняНічого не вибрано для резервного копіювання.гараздГараздІнші (Будь-які інші каталоги, знайдені всередині wp-content)Інші резервні копії зроблено на дату Інші резервні копії виконано.Помилка інших резервних копій.Інші резервні копії відновлено успішно.PHP версіяПараметри:Вставте файл або папкуВведіть адресу електронної пошти.Будь ласка, введіть ім’я.Введіть прізвище.Будь-ласка, обережно змініть це, неправильний шлях може призвести до того, що плагін файлового менеджера піде вниз.Збільште значення поля, якщо ви отримуєте повідомлення про помилку під час відновлення резервної копії.ПлагіниРезервне копіювання плагінів зроблено на дату Резервне копіювання плагінів виконано.Помилка резервного копіювання плагінів.Резервне копіювання плагінів успішно відновлено.Опублікувати максимальний розмір файлу для завантаження (post_max_size)ПреференціїПолітика конфіденційностіСуспільний кореневий шляхВІДНОВИТИ ФАЙЛИВидалення або видалення файлів і папокПерейменуйте файл або папкуВідновлюватиВідновлення виконується, зачекайтеУСПІХЗберегти зміниЗбереження ...Шукати речіПроблема безпеки.Вибрати всеВиберіть резервну(и) копію(и) для видалення!НалаштуванняНалаштування - редактор кодуНалаштування - ЗагальніНалаштування - Обмеження користувачаНалаштування - Обмеження ролей користувачаНалаштування збережено.Шорт-код - PROПросто виріжте файл або папкуВластивості системиУмови обслуговуванняРезервне копіювання, мабуть, вдалося, і воно завершено.ТемиРезервне копіювання тем виконано на дату Резервне копіювання тем виконано.Помилка резервного копіювання тем.Резервне копіювання тем успішно відновлено.Час заразЧас очікування (max_execution_time)Зробити архів або zipСьогодніВИКОРИСТАННЯ:Не вдається створити резервну копію бази даних.Не вдалося видалити резервну копію!Не вдалося відновити резервну копію БД.Не вдалося відновити інші.Не вдалося відновити плагіни.Не вдалося відновити теми.Не вдалося відновити завантаження.Завантажити журнали файлівЗавантажте файлиЗавантаженняЗавантажує резервну копію, виконану на дату Резервне копіювання завантажень виконано.Помилка резервного копіювання завантажень.Завантаження резервної копії відновлено успішно.ПеревіритиПереглянути журналМенеджер файлів WPМенеджер файлів WP - Резервне копіювання / відновленняВнесок менеджера файлів WPМи любимо заводити нових друзів! Підпишіться нижче, і ми обіцяємо
    тримати вас в курсі наших останніх нових плагінів, оновлень,
    чудові пропозиції та кілька спеціальних пропозицій.Ласкаво просимо до File ManagerВи не вносили жодних змін для збереження.для доступу до дозволу на читання файлів примітка: true/false, за замовчуванням: trueдля доступу до дозволів на запис файлів примітка: true/false, за замовчуванням: falseвін приховає згадані тут. Примітка: розділяється комою (,). За замовчуванням: Нульlanguages/wp-file-manager-ur.mo000064400000053372147361034410012463 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&.T(:�)D�*s+Mw+H�+,+,A,	Y-�c.r�.\/[m/K�/M0c00"�0K�001E41<z1�1@�1
21%2W2s2�2&�2.�2 �230&3;W3�3�3 �38�3.4OB4�4�4�4�4(�455-5%c5J�5.�5*6a.6(�6�6'�7:�7 882Y8n�8��8&�:H�:;
$;/;�6;@�<>>A<>�~?�%@"%AHBcBlB/~B�Bo�BM4C/�C"�C,�C,D/D(CD$lD�D��D�&EI�EIF
bF
pFm~F5�F+"G2NGJ�G�G�G3�GD.H1sH/�H��H��I
:J:HJ,�J7�JK�JZ4K�K �K�K#�KJL?NL�LE�L�L"�L	M"M"?MbM<M�M$�M�M/N?8N(xN�N&�N�N�NJObO3qO)�O4�OJPOP#gP+�P�P�P6�P*Q5.Q3dQ2�Q1�Q4�Q/2RbR
�R3�R,�R7�RM)SwS�S�S8�S(�S
T.&UPUUm�UnVv�V}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 12:33+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: ur
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* تمام آپریشنز کے لیے اور کچھ آپریشن کی اجازت دینے کے لیے آپ آپریشن کے نام کا ذکر کر سکتے ہیں جیسے کہ اجازت_آپریشن="اپ لوڈ، ڈاؤن لوڈ"۔ نوٹ: کوما (،) سے الگ کیا گیا۔ ڈیفالٹ: *-> یہ خاص طور پر صارفین کو اپنے ایڈز کوما (،) کے ذریعہ تقسیم کرکے پابندی لگائے گا۔ اگر صارف پابندی ہے تو وہ سامنے کے آخر میں ڈبلیو پی پی فائل مینیجر تک رسائی حاصل نہیں کرسکیں گے۔-> فائل مینیجر تھیم۔ پہلے سے طے شدہ: Light-> فائل میں تبدیلی یا تاریخ کی شکل بنائیں۔ پہلے سے طے شدہ: d M، Y h:i A-> فائل منیجر کی زبان۔ پہلے سے طے شدہ: English(en)-> فائل مینجر UI دیکھیں۔ پہلے سے طے شدہ: gridعملمنتخب کردہ بیک اپ پر کامایڈمن کسی بھی صارف کے اقدامات کو محدود کرسکتا ہے۔ فائلوں اور فولڈروں کو بھی چھپائیں اور مختلف صارفین کے لئے مختلف - فولڈر کے مختلف راستے ترتیب دے سکتے ہیں۔ایڈمن کسی بھی صارف کے عمل کو روک سکتا ہے۔ فائلوں اور فولڈروں کو بھی چھپائیں اور مختلف سیٹ کرسکتے ہیں - مختلف صارفین کے رول کے لئے مختلف فولڈر راہیں۔کوڑے دان کو چالو کرنے کے بعد ، آپ کی فائلیں کوڑے دان کے فولڈر میں جائیں گی۔اس کو چالو کرنے کے بعد تمام فائلیں میڈیا لائبریری میں جائیں گی۔سب ہو گیاکیا آپ واقعی منتخب بیک اپ (زبانیں) ہٹانا چاہتے ہیں؟کیا آپ واقعی یہ بیک اپ حذف کرنا چاہتے ہیں؟کیا آپ واقعی یہ بیک اپ بحال کرنا چاہتے ہیں؟بیک اپ کی تاریخابھی بیک اپبیک اپ کے اختیارات:بیک اپ ڈیٹا (ڈاؤن لوڈ کرنے کے لئے کلک کریں)بیک اپ فائلوں کے تحت ہوں گےبیک اپ چل رہا ہے ، براہ کرم انتظار کریںبیک اپ کامیابی کے ساتھ حذف ہوگیا۔بیک اپ/بحالبیک اپ کامیابی کے ساتھ ہٹا دیئے گئے!پابندی لگانابراؤزر اور او ایس (HTTP_USER_AGENT)پی ار او خریدیںپرو خریدیںمنسوخ کریںتھیم یہاں تبدیل کریں:PRO خریدنے کے لیے کلک کریں۔کوڈ ایڈیٹر دیکھیںتصدیق کریںفائلیں یا فولڈرز کاپی کریںفی الحال کوئی بیک اپ نہیں ملا ہے۔فائلیں حذف کریںگہراڈیٹا بیس کا بیک اپڈیٹا بیس کا بیک اپ تاریخ کو ہوا ڈیٹا بیس کا بیک اپ ہو گیا۔ڈیٹا بیس کا بیک اپ کامیابی کے ساتھ بحال ہوا۔پہلے سے طے شدہپہلے سے طے شدہ:حذف کریںغیر منتخب کریںاس نوٹس کو مسترد کریں۔عطیہ کریںفائلوں کا نوشتہ ڈاؤن لوڈ کریںفائلیں ڈاؤن لوڈ کریںکسی فولڈر یا فائل کو ڈپلیکیٹ یا کلون کریںفائلیں لاگ میں ترمیم کریںایک فائل میں ترمیم کریںمیڈیا لائبریری میں فائلیں اپ لوڈ کریں کو قابل بنائیں؟کوڑے دان کو چالو کریں؟خرابی: بیک اپ بحال کرنے سے قاصر کیونکہ ڈیٹا بیس بیک اپ سائز میں بھاری ہے۔ براہ کرم ترجیحات کی ترتیبات سے زیادہ سے زیادہ اجازت شدہ سائز کو بڑھانے کی کوشش کریں۔موجودہ بیک اپ (زبانیں)آرکائیو یا زپ شدہ فائل کو نکالیںفائل منیجر - مختصرفائل منیجر۔ سسٹم کی خصوصیاتفائل مینیجر روٹ راہ ، آپ اپنی پسند کے مطابق تبدیل کرسکتے ہیں۔فائل مینیجر کے پاس ایک کوڈ ایڈیٹر ہے جس میں متعدد موضوعات ہیں۔ آپ کوڈ ایڈیٹر کے لئے کسی بھی تھیم کو منتخب کرسکتے ہیں۔ جب آپ کسی بھی فائل میں ترمیم کریں گے تو یہ ظاہر ہوگا۔ نیز آپ کوڈ ایڈیٹر کے پورے اسکرین وضع کی اجازت دے سکتے ہیں۔فائل آپریشن کی فہرست:ڈاؤن لوڈ کرنے کے لئے فائل موجود نہیں ہے۔فائلوں کا بیک اپسرمئیمددیہاں "ٹیسٹ" فولڈر کا نام ہے جو روٹ ڈائرکٹری پر واقع ہے، یا آپ ذیلی فولڈرز کے لیے راستہ دے سکتے ہیں جیسے "wp-content/plugins"۔ اگر خالی یا خالی چھوڑ دیں تو یہ روٹ ڈائرکٹری کے تمام فولڈرز تک رسائی حاصل کر لے گا۔ ڈیفالٹ: روٹ ڈائریکٹرییہاں منتظم فائل مینجر کو استعمال کرنے کے لئے صارف کے کرداروں تک رسائی دے سکتا ہے۔ ایڈمن ڈیفالٹ ایکسیس فولڈر سیٹ کرسکتے ہیں اور فائل مینجر کے اپلوڈ سائز کو بھی کنٹرول کرسکتے ہیں۔فائل کی معلوماتغلط حفاظتی کوڈ۔یہ تمام کرداروں کو فرنٹ اینڈ پر فائل مینیجر تک رسائی کی اجازت دے گا یا آپ صارف کے مخصوص کرداروں کے لیے آسان استعمال کر سکتے ہیں جیسے اجازت_رول="ایڈیٹر، مصنف" (کوما سے الگ کیا گیا(،))اس کا ذکر کوما میں بند کر دیا جائے گا۔ آپ مزید لاک کر سکتے ہیں جیسے ".php,.css,.js" وغیرہ۔ ڈیفالٹ: Nullیہ سامنے کے آخر میں فائل مینیجر کو دکھائے گا۔ لیکن صرف ایڈمنسٹریٹر ہی اس تک رسائی حاصل کر سکتا ہے اور فائل مینیجر کی ترتیبات سے کنٹرول کرے گا۔یہ سامنے کے آخر میں فائل مینیجر کو دکھائے گا۔ آپ فائل مینیجر کی ترتیبات سے تمام ترتیبات کو کنٹرول کر سکتے ہیں۔ یہ بیک اینڈ ڈبلیو پی فائل مینیجر کی طرح کام کرے گا۔آخری لاگ پیغامہلکانوشتہ جاتڈائریکٹری یا فولڈر بنائیںفائل بنائیںڈیٹا بیس بیک اپ کی بحالی کے وقت زیادہ سے زیادہ اجازت شدہ سائز۔زیادہ سے زیادہ فائل اپلوڈ سائز (upload_max_filesize)میموری کی حد (میموری_ لیمٹ)گمشدہ بیک اپ آئی ڈیپیرامیٹر کی قسم غائب ہے۔لاپتہ مطلوبہ پیرامیٹرز۔نہیں شکریہکوئی لاگ پیغام نہیں ہےکوئی نوشتہ نہیں ملا!نوٹ:نوٹ: یہ ڈیمو اسکرین شاٹس ہیں۔ براہ کرم نوٹس افعال کے لئے فائل مینیجر کو خریدیںنوٹ: یہ صرف ایک ڈیمو اسکرین شاٹ ہے۔ ترتیبات حاصل کرنے کے لئے براہ کرم ہمارا حامی ورژن خریدیں۔بیک اپ کے لیے کچھ بھی منتخب نہیں کیا گیا۔بیک اپ کے لیے کچھ بھی منتخب نہیں کیا گیا۔ٹھیک ہےٹھیک ہےدوسرے (کسی بھی دوسری ڈائرکٹریوں میں WP- مشمولات کے اندر موجود)دوسروں کا بیک اپ تاریخ پر ہوا دوسروں کا بیک اپ ہو گیا۔دیگر کا بیک اپ ناکام ہو گیا۔دوسرے کا بیک اپ کامیابی کے ساتھ بحال ہوا۔پی ایچ پی ورژنپیرامیٹرز:ایک فائل یا فولڈر چسپاں کریںبرائے مہربانی ای میل ایڈریس درج کریں۔براہ کرم پہلا نام درج کریں۔براہ کرم آخری نام درج کریںبراہ کرم اس کو احتیاط سے تبدیل کریں ، غلط راستہ فائل مینیجر پلگ ان کو نیچے جانے کی راہنمائی کرسکتا ہے۔اگر آپ کو بیک اپ کی بحالی کے وقت ایرر میسج موصول ہو رہا ہے تو براہ کرم فیلڈ ویلیو میں اضافہ کریں۔پلگ انزتاریخ میں پلگ ان کا بیک اپ ہوگیا پلگ انز کا بیک اپ ہو گیا۔پلگ انز کا بیک اپ ناکام ہو گیا۔پلگ ان کا بیک اپ کامیابی کے ساتھ بحال ہوا۔زیادہ سے زیادہ فائل اپ لوڈ سائز (post_max_size) پوسٹ کریںترجیحاترازداری کی پالیسیعوامی جڑ کا راستہفائلوں کو بحال کریںفائلیں اور فولڈرز کو حذف کریں یا حذف کریںایک فائل یا فولڈر کا نام تبدیل کریںبحال کریںبحالی چل رہی ہے، براہ کرم انتظار کریں۔کامیابیتبدیلیاں محفوظ کروبچت…چیزیں تلاش کریںسیکیورٹی کا مسئلہ۔تمام منتخب کریںحذف کرنے کے لیے بیک اپ منتخب کریں!ترتیباتترتیبات - کوڈ ایڈیٹرترتیبات - عامترتیبات - صارف کی پابندیاںترتیبات - صارف کے کردار پر پابندیاںترتیبات محفوظ ہوگئیں۔مختصر - پی ار اوسادہ فائل یا فولڈر کٹسسٹم پراپرٹیزسروس کی شرائطبیک اپ بظاہر کامیاب ہوگیا اور اب مکمل ہے۔موضوعاتتھیمز کا بیک اپ تاریخ پر ہوا تھیمز کا بیک اپ ہو گیا۔تھیمز کا بیک اپ ناکام ہو گیا۔تھیمز کا بیک اپ کامیابی کے ساتھ بحال ہوا۔اب وقت ہوا ہےٹائم آؤٹ(max_execution_time)آرکائیو یا زپ بنانے کے لآجاستعمال:ڈیٹا بیس بیک اپ بنانے سے قاصر۔بیک اپ کو ہٹانے سے قاصر!DB بیک اپ کو بحال کرنے سے قاصر۔دوسروں کو بحال کرنے سے قاصر۔پلگ ان کو بحال کرنے سے قاصر۔تھیمز کو بحال کرنے سے قاصر۔اپ لوڈز کو بحال کرنے سے قاصر۔فائلوں کے لاگز اپ لوڈ کریںفائلیں اپ لوڈ کرواپ لوڈزتاریخ کو اپ لوڈ بیک اپ ہوگیا اپ لوڈز کا بیک اپ ہو گیا۔اپ لوڈز کا بیک اپ ناکام ہو گیا۔اپ لوڈز کا بیک اپ کامیابی کے ساتھ بحال ہوا۔تصدیق کریںلاگ دیکھیںWP فائل منیجرWP فائل منیجر - بیک اپ / بحال کریںWP فائل مینیجر کی شراکتہمیں نئے دوست بنانا پسند ہے! ذیل میں سبسکرائب کریں اور ہم وعدہ کرتے ہیں
    ہمارے حالیہ نئے پلگ ان ، تازہ کاریوں ،
    زبردست سودے اور کچھ خصوصی پیش کشیں۔فائل مینیجر میں خوش آمدیدآپ نے بچانے کیلئے کوئی تبدیلیاں نہیں کی ہیں۔فائلوں کو پڑھنے کی اجازت تک رسائی کے لیے، نوٹ: true/false، default: trueفائلوں کو لکھنے کی اجازت تک رسائی کے لیے، نوٹ: true/false، default: falseاس کا ذکر یہاں چھپ جائے گا۔ نوٹ: کوما (،) سے الگ کیا گیا۔ طے شدہ: صفرlanguages/wp-file-manager-is_IS.mo000064400000043061147361034410013035 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(�)(�)N�).N*1}*�*$�*��*��+E?,B�,�,=�,9->L-�-�-�-.�-!�-(.G.].q.�.&�.
�.
�.�.�.�.	/
"/-/'K/s/�/�/.�/�/=�/+0
80F0L0_0{0�0
�0*�0�0
�08�0/1�?1�1/2B2"\2E2��2�3&�3�3	444�)5�56�6v�6�n7��7�8�8�8�8�8D�8969p9�9�9�9�9�9�9	:_:ey:!�:";$;1;9>;)x;�;!�;�;�;
<<!2<!T<#v<o�<Z
=
e=*p=�=#�=;�=8>P>W>i>�>(�>�>�>-�>??
.?9?
O?
]?"h?
�?�?�? �?-�?@/@A@a@w@4�@�@ �@�@AA:AFA$`A�A�A6�A)�A%�A$B'@B"hB)�B�B�B�B.�B!C$7C$\C
�C
�C�C-�C�C��C�D5�DYEeyEQ�E}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-01 11:10+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: is_IS
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* fyrir allar aðgerðir og til að leyfa einhverja aðgerð geturðu nefnt aðgerðarheiti eins og, allow_operations="hlaða upp,hlaða niður". Athugið: aðskilin með kommu(,). Sjálfgefið: *-> Það mun banna tiltekna notendur með því að setja auðkenni þeirra aðgreind með kommum (,). Ef notandi er Ban þá munu þeir ekki fá aðgang að wp skráarstjóra í framendanum.-> Skráasafnsþema. Sjálfgefið: Light-> Skrá breytt eða búið til dagsetningarsnið. Sjálfgefið: d M, Y h: i A-> Skráasafnarmál. Sjálfgefið: English(en)-> Útsýni yfir skjástjóra. Sjálfgefið: gridAðgerðAðgerðir við valið öryggisafritStjórnandi getur takmarkað aðgerðir hvers notanda. Fela einnig skrár og möppur og getur stillt mismunandi - mismunandi möppuleiðir fyrir mismunandi notendur.Stjórnandi getur takmarkað aðgerðir hvaða notendastjórn sem er. Einnig fela skrár og möppur og geta stillt mismunandi - mismunandi möppuleiðir fyrir mismunandi hlutverk notenda.Eftir að hafa virkjað ruslið fara skrárnar þínar í ruslakista.Eftir að þetta er virkt fara allar skrár í fjölmiðlasafnið.Allt búiðErtu viss um að þú viljir fjarlægja valið öryggisafrit?Ertu viss um að þú viljir eyða þessu öryggisafriti?Ertu viss um að þú viljir endurheimta þetta öryggisafrit?AfritunardagsetningTaktu öryggisafrit núnaAfritunarvalkostir:Afritunargögn (smelltu til að hlaða niður)Öryggisafritaskrár verða undirAfritun er í gangi, vinsamlegast bídduÖryggisafritun eytt.Afritun/endurheimtaTaka öryggisafrit tókst!BannaVafri og stýrikerfi (HTTP_USER_AGENT)Kauptu PROKauptu ProHætta viðBreyttu þema hér:Smelltu til að kaupa PROKóða-ritstjóri SkoðaStaðfestaAfritaðu skrár eða möppurEins og er fannst ekkert öryggisafrit.Eyða skrámMyrkurÖryggisafrit gagnagrunnsÖryggisafrit gagnagrunns gert á dagsetningu Afrit af gagnagrunni lokið.Varabúnaður gagnagrunns endurheimtur með góðum árangri.SjálfgefiðSjálfgefið:EyðaHætta við valiðHafna þessari tilkynningu.StyrkjaSæktu skrárdagbækurSæktu skrárAfritaðu eða klónaðu möppu eða skráBreyttu skráaskrámBreyttu skráVirkja skrár sem hlaðið er upp í fjölmiðlasafnið?Virkja ruslið?Villa: Ekki tókst að endurheimta öryggisafrit vegna þess að öryggisafrit af gagnagrunni er mikið að stærð. Vinsamlega reyndu að auka hámarks leyfða stærð frá stillingum.Núverandi öryggisafritDragðu úr skjalasafni eða þjöppuðum skráSkráasafn - Stutt kóðaSkráasafn - Eiginleikar kerfisinsFile Manager Root Path, þú getur breytt eftir því sem þú velur.File Manager hefur kóða ritstjóra með mörgum þemum. Þú getur valið hvaða þema sem er fyrir kóða ritstjóra. Það birtist þegar þú breytir hvaða skrá sem er. Einnig er hægt að leyfa fullskjásstillingu kóða ritstjóra.Listi yfir aðgerðaskrár:Skráin er ekki til að hlaða niður.Afrit af skrámGráttHjálpHér er "próf" nafnið á möppunni sem er staðsett á rótarskránni, eða þú getur gefið slóð fyrir undirmöppur eins og "wp-content/plugins". Ef skilið er eftir autt eða tómt mun það fá aðgang að öllum möppum í rótarskránni. Sjálfgefið: RótarskráHér getur stjórnandi veitt aðgang að notendahlutverkum til að nota skjalastjóri. Stjórnandi getur valið sjálfgefna aðgangsmöppu og einnig stjórnað upphæð stærðar skráarstjóra.Upplýsingar um skránaÓgildir öryggiskóðar.Það mun leyfa öllum hlutverkum að fá aðgang að skjalastjóra í framendanum eða þú getur einfalt notað fyrir ákveðin notendahlutverk eins og allow_roles="ritstjóri, höfundur" (aðskilin með kommu (,))Það mun læsast sem nefnt er með kommum. þú getur læst fleiri eins og ".php,.css,.js" osfrv. Sjálfgefið: NúllÞað mun sýna skráarstjóra á framendanum. En aðeins stjórnandi hefur aðgang að því og mun stjórna úr stillingum skráasafns.Það mun sýna skráarstjóra á framendanum. Þú getur stjórnað öllum stillingum úr stillingum skráasafns. Það mun virka eins og stuðningur WP File Manager.Síðasta logskilaboðLjósLogsBúðu til möppu eða möppuBúðu til skráLeyfileg hámarksstærð við endurheimt öryggisafrits gagnagrunns.Hámarks stærð skráarupphleðslu (upload_max_filesize)Minni takmörk (memory_limit)Vantar öryggisauðkenni.Vantar gerð breytu.Vantar nauðsynlegar breytur.Nei takkEngin logskilaboðEngar annálar fundust!Athugið:Athugið: Þetta eru demo skjámyndir. Vinsamlegast keyptu File Manager pro í Logs aðgerðir.Athugið: Þetta er bara demo skjámynd. Til að fá stillingar skaltu kaupa atvinnuútgáfuna okkar.Ekkert valið fyrir öryggisafritEkkert valið fyrir öryggisafrit.Allt í lagiAllt í lagiAðrir (Allar aðrar möppur sem finnast í wp-innihaldi)Aðrir öryggisafrit gert á dagsetningu Önnur öryggisafrit lokið.Önnur öryggisafritun mistókst.Önnur afritun tókst aftur.PHP útgáfaFæribreytur:Límdu skrá eða möppuVinsamlegast sláðu inn netfang.Vinsamlegast sláðu inn fornafn.Vinsamlegast sláðu inn eftirnafn.Vinsamlegast breyttu þessu vandlega, röng leið getur leitt til þess að tappi skráarstjóra fellur niður.Vinsamlega aukið gildi reits ef þú færð villuboð þegar öryggisafrit er endurheimt.ViðbæturVarabúnaður viðbóta gerður þann dag Afrit af viðbótum lokið.Öryggisafrit viðbætur mistókst.Varabúnaður viðbóta endurheimtur með góðum árangri.Birta hámarksstærð skráarupphleðslu (post_max_size)ÓskirFriðhelgisstefnaAlmenningsrótarstígurEndurheimta skrárFjarlægðu eða eyddu skrám og möppumEndurnefna skrá eða möppuEndurheimtaEndurheimt er í gangi, vinsamlegast bíðiðÁRANGURVista breytingarVistar ...Leitaðu að hlutunumÖryggismál.Velja alltVeldu öryggisafrit til að eyða!StillingarStillingar - Kóði ritstjóriStillingar - AlmenntStillingar - Takmarkanir notendaStillingar - Takmarkanir á hlutverki notandaStillingar vistaðar.Stuttkóði - PROEinfalt skera skrá eða möppuEiginleikar kerfisinsSkilmálar þjónustuÖryggisafritið tókst greinilega og er nú lokið.ÞemuAfrit þemu gert á dagsetningu Afrit af þemum lokið.Afritun þema mistókst.Öryggisafrit þemu endurheimt.Tími núnaHlé (max_execution_time)Til að búa til skjalasafn eða zipÍ dagNOTKUN:Ekki tókst að búa til öryggisafrit af gagnagrunni.Ekki tókst að fjarlægja öryggisafrit!Ekki tókst að endurheimta DB afrit.Ekki er hægt að endurheimta aðra.Ekki tókst að endurheimta viðbætur.Ekki tókst að endurheimta þemu.Ekki tókst að endurheimta innsendingar.Hlaða inn skráaskrámSendu skrárUpphleðslaHleður inn öryggisafrit gert á dagsetningu Upphleðsla öryggisafrit lokið.Upphleðsla öryggisafrit mistókst.Upphleðsluforrit endurheimt tókst.StaðfestuSkoða LogWP SkráastjóriWP skráastjóri - öryggisafrit / endurheimtWP Skráastjóri FramlagVið elskum að eignast nýja vini! Gerast áskrifandi hér að neðan og við lofum því
    haltu þér uppfærð með nýjustu nýju viðbótunum okkar, uppfærslum,
    ógnvekjandi tilboð og nokkur sértilboð.Verið velkomin í File ManagerÞú hefur ekki gert neinar breytingar til að vista.fyrir aðgang að heimild til að lesa skrár, athugaðu: satt/ósatt, sjálfgefið: satttil að fá aðgang að heimildum til að skrifa skrár, athugaðu: satt/ósatt, sjálfgefið: ósattþað mun fela nefnt hér. Athugið: aðskilin með kommu(,). Sjálfgefið: Núlllanguages/wp-file-manager-it_IT.mo000064400000042672147361034410013046 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(�)/�)B�)4/*Bd*�*�*��*�s+P,Hl,�,3�,,�,/"-R-a-y-%�-�-.�-..6.S.-[.�.�.�.�.�.�.�./"/
:/H/N/%b/�/.�/�/�/�/�/00"070&G0n0�0>�0�0��0�1�1�1(�1A2�Q273 O3p3�3�3�3��4�5�5��5f�6��6�s7(8E8L8U8	o8Py8@�8 9,9C9_9	9�9�9�9e�9h+: �:!�:�:�:C�:!;@;T;'t;�;
�;�;(�;�; <x;<p�<%=#,=P=l=,�=F�=>>(>A>%Q>!w>�>)�>�>�>�>
�>?? .?O?\?|?!�?+�?�?�?@$@:@7N@�@!�@�@�@+�@A"!ADAaAfA*kA �A0�A#�A"B /B'PBxB�B�B(�B�B*�B>C
QC\CoC&�C �C��C�D'�DN�DQEKnE}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-01 11:19+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: it_IT
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* per tutte le operazioni e per consentire alcune operazioni puoi menzionare il nome dell'operazione come, allowed_operations="upload,download". Nota: separato da virgola(). Predefinito: *-> Bandirà determinati utenti semplicemente mettendo i loro ID separati da virgole (,). Se l'utente è Ban, non sarà in grado di accedere al file manager wp sul front-end.-> Tema del gestore di file. Predefinito: Light-> File modificato o Crea formato data. Predefinito: d M, Y h: i A-> Lingua del file manager. Predefinito: English(en)-> Vista dell'interfaccia utente di Filemanager. Predefinito: gridAzioneAzioni sui backup selezionatiL'amministratore può limitare le azioni di qualsiasi utente. Nascondi anche file e cartelle e puoi impostare diversi percorsi di cartelle diversi per utenti diversi.L'amministratore può limitare le azioni di qualsiasi ruolo utente. Nascondere anche file e cartelle e impostare percorsi di cartelle diversi per ruoli utente diversi.Dopo aver abilitato il cestino, i tuoi file andranno nella cartella del cestino.Dopo averlo abilitato, tutti i file andranno alla libreria multimediale.Tutto fattoSei sicuro di voler rimuovere i backup selezionati?Sei sicuro di voler eliminare questo backup?Sei sicuro di voler ripristinare questo backup?Data di backupEsegui il backup adessoOpzioni di backup:Dati di backup (clicca per scaricare)I file di backup saranno sottoIl backup è in esecuzione, per favore aspettaBackup eliminato con successo.Ripristinare il backupBackup rimossi con successo!BandireBrowser e sistema operativo (HTTP_USER_AGENT)Acquista PROAcquista ProAnnullaCambia tema qui:Fare clic per acquistare PROVista dell'editor di codiceconvalidareCopia file o cartelleAttualmente nessun backup trovato.CANCELLA FILEscuroBackup del databaseBackup del database eseguito in data Backup del database eseguito.Backup del database ripristinato con successo.PredefinitaPredefinita:EliminaDeselezionaRimuovi questa notifica.DonareScarica file log LogScaricare filesDuplica o clona una cartella o un fileModifica file logModifica un fileAbilitare il caricamento dei file nella libreria multimediale?Abilita cestino?Errore: impossibile ripristinare il backup perché il backup del database è di grandi dimensioni. Prova ad aumentare la dimensione massima consentita dalle impostazioni delle Preferenze.Backup esistentiEstrai archivio o file zippatoFile Manager - ShortcodeGestore di file - Proprietà del sistemaGestore di file Root Path, puoi cambiare in base alla tua scelta.File Manager ha un editor di codice con più temi. Puoi selezionare qualsiasi tema per l'editor di codice. Verrà visualizzato quando modifichi un file. Inoltre puoi consentire la modalità a schermo intero dell'editor di codice.Elenco operazioni file:Il file non esiste da scaricare.Backup dei fileGrigioAiutoQui "test" è il nome della cartella che si trova nella directory principale, oppure puoi fornire il percorso per le sottocartelle come "wp-content/plugins". Se lasciato vuoto o vuoto accederà a tutte le cartelle nella directory principale. Predefinito: directory principaleQui l'amministratore può concedere l'accesso ai ruoli utente per utilizzare filemanager. L'amministratore può impostare la cartella di accesso predefinita e anche controllare la dimensione di caricamento del gestore di file.Informazioni sul fileCodice di sicurezza non valido.Consentirà a tutti i ruoli di accedere al file manager sul front-end oppure è possibile utilizzarlo semplicemente per ruoli utente particolari, come allow_roles="editor,author" (separato da virgola (,))Si bloccherà menzionato tra virgole. puoi bloccarne altri come ".php,.css,.js" ecc. Predefinito: NullMostrerà il file manager sul front-end. Ma solo l'amministratore può accedervi e controllerà dalle impostazioni del file manager.Mostrerà il file manager sul front-end. Puoi controllare tutte le impostazioni dalle impostazioni del file manager. Funzionerà allo stesso modo di Gestore di file WP di back-end.Ultimo messaggio di registrochiaroRegistriCrea directory o cartellaCrea fileDimensione massima consentita al momento del ripristino del backup del database.Dimensione massima di caricamento del file (upload_max_filesize)Limite di memoria (memory_limit)ID di backup mancante.Tipo di parametro mancante.Parametri obbligatori mancanti.No grazieNessun messaggio di registroNessun registro trovato!Nota:Nota: questi sono screenshot demo. Si prega di acquistare Gestore di file pro per le funzioni di log.Nota: questo è solo uno screenshot demo. Per ottenere le impostazioni, acquista la nostra versione pro.Niente selezionato per il backupNiente selezionato per il backup.okOkAltri (qualsiasi altra directory trovata all'interno di wp-content)Altri backup eseguiti in data Altri backup fatto.Altri backup non sono riusciti.Altri backup ripristinati con successo.Versione PHPParametri:Incolla un file o una cartellaSi prega di inserire l'indirizzo e-mail.Si prega di inserire il nome.Si prega di inserire il cognome.Si prega di cambiarlo con attenzione, il percorso sbagliato può portare al fallimento del plug-in di gestione dei file.Aumentare il valore del campo se viene visualizzato un messaggio di errore al momento del ripristino del backup.PluginBackup dei plugin eseguito in data Backup dei plugin eseguito.Backup dei plugin non riuscito.Backup dei plugin ripristinato con successo.Pubblica la dimensione massima di caricamento del file (post_max_size)Preferencespolitica sulla riservatezzaPercorso radice pubblicoRIPRISTINA FILERimuovere o eliminare file e cartelleRinominare un file o una cartellaRistabilireIl ripristino è in esecuzione, attendereSUCCESSOSalvare le modificheSalvataggio...Cerca coseProblema di sicurezza.Seleziona tuttoSeleziona i backup da eliminare!impostazioniImpostazioni - Editor di codiceImpostazioni - GeneraliImpostazioni - Restrizioni utenteImpostazioni - Restrizioni del ruolo utenteImpostazioni salvate.Shortcode - PROSimple cut a file or folderProprietà di sistemaTermini di servizioIl backup apparentemente è riuscito e ora è completo.TemiBackup dei temi eseguito in data Backup dei temi eseguito.Backup dei temi non riuscito.Backup dei temi ripristinato correttamente.Momento attualeTempo scaduto (max_execution_time)Per creare un archivio o zipOggiUSO:Impossibile creare il backup del database.Impossibile rimuovere il backup!Impossibile ripristinare il backup del database.Impossibile ripristinare gli altri.Impossibile ripristinare i plugin.Impossibile ripristinare i temi.Impossibile ripristinare i caricamenti.Carica file logCaricare filesCaricamentiBackup dei caricamenti eseguito in data Carica il backup eseguito.Il backup dei caricamenti non è riuscito.Il backup dei caricamenti è stato ripristinato correttamente.VerificareVista del registroGestore di file WPGestore di file WP - Backup/RipristinoContributo di Gestore di file WPCi piace fare nuove amicizie! Iscriviti qui sotto e promettiamo di
    tenerti aggiornato con i nostri ultimi nuovi plugin, aggiornamenti,
    offerte fantastiche e alcune offerte speciali.Benvenuto in Gestore di fileNon hai apportato modifiche da salvare.per l'accesso ai permessi di lettura dei file, nota: true/false, default: trueper l'accesso ai permessi di scrittura dei file, nota: true/false, default: falsenasconderà menzionato qui. Nota: separato da virgola(). Predefinito: nullolanguages/wp-file-manager-ar.mo000064400000052305147361034410012432 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&�&��(
�)A�*q�*PZ+:�+�+O�+�=,+-o-.b�./Z/Xk/`�/(%0+N0+z0D�0?�0P+19|1�1=�1
2:2Z2j2w2�2�2�2
�2-�213>3T3;]3X�3D�3]74
�4�4�4
�4!�4�4$�45:$5$_5�5G�5�5%�50"70S71�73�7g�7lR8#�9,�9(:
9:D:�Q:�;�<="=�7>��>��?z@�@�@'�@�@��@JrA"�A2�A!B/5B
eBsB+�B
�B}�B�KC@�CA#DeDlDEsDA�D5�D41ENfE
�E�E%�EE�E.AF0pF��F�OG�GK�G7=HGuHa�HKIkI~I�I�I8�I&J7JE@J�J�J
�J�J�J�J4�J2K AKbK*zK5�K�K�K&L:LRLIhL
�LG�L3M29MLlM�M�M*�M
N!NL1ND~N`�N5$OHZO3�O9�O$P6PPPB_P.�PC�PRQhQ
qQQD�Q�Q�Q.�RA-SooSo�SuOT}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 15:19+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: ar
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 && n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e;esc_attr__
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* لجميع العمليات وللسماح ببعض العمليات ، يمكنك ذكر اسم العملية مثل ، allowed_operations = "upload ، download". ملاحظة: مفصولة بفاصلة (،). تقصير: *-> سيحظر مستخدمين معينين بمجرد وضع معرفاتهم مفصولة بفواصل (،). إذا كان المستخدم هو الحظر ، فلن يتمكن من الوصول إلى مدير ملفات wp على الواجهة الأمامية.-> موضوع مدير الملفات. الافتراضي: ضوء-> تعديل الملف أو إنشاء تنسيق التاريخ. الافتراضي: د م ، ص ح: أنا أ-> لغة مدير الملفات. الافتراضي: الإنجليزية (ar)-> عرض Filemanager UI. الافتراضي: الشبكةعملإجراءات بناءً على النسخ الاحتياطية المحددةيمكن للمشرف تقييد إجراءات أي مستخدم. أيضا إخفاء الملفات والمجلدات ويمكن تعيين مختلف - مسارات المجلدات المختلفة لمختلف المستخدمين.يمكن للمشرف تقييد الإجراءات من أي وسيرول. أيضا إخفاء الملفات والمجلدات ويمكن تعيين مختلف - مسارات المجلدات المختلفة لمختلف أدوار المستخدمين.بعد تمكين سلة المهملات ، ستنتقل ملفاتك إلى مجلد سلة المهملات.بعد تمكين هذا ، ستنتقل جميع الملفات إلى مكتبة الوسائط.كله تمامهل تريد بالتأكيد إزالة النسخ الاحتياطية المحددة؟هل أنت متأكد أنك تريد حذف هذه النسخة الاحتياطية؟هل أنت متأكد أنك تريد استعادة هذه النسخة الاحتياطية؟تاريخ النسخ الاحتياطياعمل نسخة احتياطية الانخيارات النسخ الاحتياطي:بيانات النسخ الاحتياطي (انقر للتنزيل)ستكون ملفات النسخ الاحتياطي أقل منالنسخ الاحتياطي قيد التشغيل ، يرجى الانتظارتم حذف النسخة الاحتياطية بنجاح.اسنرجاع البياناتتمت إزالة النسخ الاحتياطية بنجاح!المنعالمتصفح ونظام التشغيل (HTTP_USER_AGENT)شراء بروشراء Proيلغيتغيير المظهر هنا:انقر لشراء PROكود-إديتور فيويتأكدانسخ الملفات أو المجلداتحاليا لا توجد نسخ احتياطية.حذف الملفاتداكننسخه الاحتياطيه لقاعدة البياناتتم إجراء نسخ احتياطي لقاعدة البيانات في التاريخ تم إجراء نسخ احتياطي لقاعدة البيانات.تمت استعادة النسخ الاحتياطي لقاعدة البيانات بنجاح.تقصيرتقصير:حذفإلغاءتجاهل هذا الإشعار.تبرعتنزيل ملفات السجلاتتحميل ملفاتقم بتكرار أو استنساخ مجلد أو ملفتحرير سجلات الملفاتتحرير ملفتمكين تحميل الملفات إلى مكتبة الوسائط؟تمكين المهملات؟خطأ: غير قادر على استعادة النسخة الاحتياطية لأن النسخ الاحتياطي لقاعدة البيانات كبير الحجم. يرجى محاولة زيادة الحد الأقصى للحجم المسموح به من إعدادات التفضيلات.النسخ الاحتياطية الموجودةاستخراج أرشيف أو ملف مضغوطمدير الملفات - الرمز القصيرإدارة الملفات - خصائص النظاممسار الجذر لمدير الملفات ، يمكنك التغيير وفقًا لاختيارك.مدير الملفات يحتوي على محرر التعليمات البرمجية مع مواضيع متعددة. يمكنك اختيار أي موضوع لمحرر التعليمات البرمجية. سيتم عرضه عند تعديل أي ملف. كما يمكنك السماح وضع ملء الشاشة من محرر التعليمات البرمجية.قائمة عمليات الملف:الملف غير موجود للتنزيل.ملفات النسخ الاحتياطيرماديمساعدةهنا "test" هو اسم المجلد الموجود في الدليل الجذر ، أو يمكنك إعطاء مسار للمجلدات الفرعية مثل "wp-content / plugins". إذا تم تركه فارغًا أو فارغًا ، فسيتم الوصول إلى جميع المجلدات الموجودة في الدليل الجذر. الافتراضي: الدليل الجذرهنا المشرف يمكن أن تعطي الوصول إلى أدوار المستخدم لاستخدام فيليماناجر. يمكن للمشرف تعيين المجلد الوصول الافتراضي وأيضا التحكم في تحميل حجم فيلماناجر.معلومات الملفكود الحمايه خاطئ.سيسمح لجميع الأدوار بالوصول إلى مدير الملفات على الواجهة الأمامية أو يمكنك الاستخدام البسيط لأدوار مستخدم معينة مثل allow_roles = "editor، author" (مفصول بفاصلة (،))سيتم قفل المذكورة بالفواصل. يمكنك قفل المزيد مثل ".php ، .css ، .js" إلخ. الافتراضي: Nullسيظهر مدير الملفات في الواجهة الأمامية. لكن المسؤول فقط هو من يمكنه الوصول إليه وسيتحكم في إعدادات مدير الملفات.سيظهر مدير الملفات في الواجهة الأمامية. يمكنك التحكم في جميع الإعدادات من إعدادات مدير الملفات. سيعمل نفس مدير ملفات WP الخلفي.آخر رسالة تسجيلضوءالسجلاتاصنع دليلًا أو مجلدًاقم بعمل ملفالحجم الأقصى المسموح به في وقت استعادة النسخة الاحتياطية لقاعدة البيانات.الحد الأقصى لحجم ملف التحميل (upload_max_filesize)حد الذاكرة (memory_limit)معرف النسخ الاحتياطي مفقود.نوع المعلمة مفقود.المعلمات المطلوبة مفقودة.لا شكرالا توجد رسالة سجللم يتم العثور على سجلات!ملحوظة:ملاحظة: هذه لقطات شاشة تجريبية. يرجى شراء File Manager pro إلى وظائف السجلات.ملاحظة: هذا هو مجرد لقطة تجريبي. للحصول على إعدادات يرجى شراء لدينا نسخة للمحترفين.لم يتم تحديد أي شيء للنسخ الاحتياطيلم يتم تحديد أي شيء للنسخ الاحتياطي.نعمنعمأخرى (أي أدلة أخرى موجودة داخل محتوى wp)النسخ الاحتياطي للآخرين في التاريخ تم إجراء نسخ احتياطي للآخرين.فشل النسخ الاحتياطي للآخرين.تمت استعادة النسخ الاحتياطية الأخرى بنجاح.نسخة فبالمعلمات:الصق ملفًا أو مجلدًاالرجاء إدخال عنوان البريد الإلكتروني.الرجاء إدخال الاسم الأول.الرجاء إدخال الاسم الأخير.يرجى تغيير هذا بعناية ، حيث يمكن أن يؤدي المسار الخاطئ إلى نزول البرنامج المساعد لمدير الملفات.يرجى زيادة قيمة الحقل إذا كنت تتلقى رسالة خطأ في وقت استعادة النسخة الاحتياطية.الإضافاتتم إجراء نسخ احتياطي للإضافات في التاريخ تم إجراء نسخ احتياطي للإضافات.فشل النسخ الاحتياطي للمكونات الإضافية.تمت استعادة النسخ الاحتياطي للمكونات الإضافية بنجاح.نشر الحد الأقصى لحجم ملف التحميل (post_max_size)التفضيلاتسياسة الخصوصيةمسار الجذر العاماستعادة الملفاتإزالة أو حذف الملفات والمجلداتأعد تسمية ملف أو مجلديعيدالاستعادة قيد التشغيل ، يرجى الانتظارنجاححفظ التغييراتإنقاذ...ابحث عن الأشياءمشكلة أمنية.اختر الكلحدد النسخ الاحتياطية لحذفها!إعداداتإعدادات - كود محررإعدادات - عامإعدادات - قيود المستخدمالإعدادات - قيود دور المستخدمتم حفظ الإعدادات.شورتكود - بروقص ملف أو مجلد ببساطةخصائص النظامشروط الخدمةيبدو أن النسخ الاحتياطي نجح واكتمل الآن.ثيماتتم إجراء نسخ احتياطي للسمات في التاريخ تم إجراء نسخ احتياطي للسمات.فشل النسخ الاحتياطي للسمات.تمت استعادة النسخ الاحتياطي للسمات بنجاح.الوقت الآنمهلة (max_execution_time)لعمل أرشيف أو ملف مضغوطاليوماستعمال:تعذر إنشاء نسخة احتياطية لقاعدة البيانات.غير قادر على إزالة النسخة الاحتياطية!غير قادر على استعادة نسخة قاعدة البيانات الاحتياطية.غير قادر على استعادة الآخرين.غير قادر على استعادة المكونات الإضافية.غير قادر على استعادة السمات.غير قادر على استعادة التحميلات.تحميل ملفات السجلاتتحميل الملفاتتحميلاتتم تحميل النسخ الاحتياطي في التاريخ تم تحميل النسخ الاحتياطي.فشل النسخ الاحتياطي لعمليات التحميل.تمت استعادة النسخ الاحتياطي للتحميلات بنجاح.تحققسجل عرضملف إدارة WPWP File Manager - النسخ الاحتياطي / الاستعادةمساهمة WP File Managerنحن نحب تكوين صداقات جديدة! اشترك أدناه ونعدك بذلك
    إبقائك على اطلاع دائم بأحدث المكونات الإضافية والتحديثات
    صفقات رائعة وبعض العروض الخاصة.مرحبًا بك في مدير الملفاتلم تقم بإجراء أي تغييرات ليتم حفظها.للوصول إلى إذن قراءة الملفات ، لاحظ: صحيح / خطأ ، افتراضي: صحيحللوصول إلى أذونات كتابة الملفات ، لاحظ: صح / خطأ ، افتراضي: خطأسوف يخفي المذكورة هنا. ملاحظة: مفصولة بفاصلة (،). الافتراضي: لاغيةlanguages/wp-file-manager-ko_KR.po000064400000242707147361034410013047 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Theme Editor\n"
"POT-Creation-Date: 2022-02-28 10:50+0530\n"
"PO-Revision-Date: 2022-02-28 10:54+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ko_KR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "테마 백업이 성공적으로 복원되었습니다."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "테마를 복원할 수 없습니다."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "업로드 백업이 성공적으로 복원되었습니다."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "업로드를 복원할 수 없습니다."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "기타 백업이 성공적으로 복원되었습니다."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "다른 사람을 복원할 수 없습니다."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "플러그인 백업이 성공적으로 복원되었습니다."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "플러그인을 복원할 수 없습니다."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "데이터베이스 백업이 성공적으로 복원되었습니다."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "모두 완료"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB 백업을 복원할 수 없습니다."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "백업이 성공적으로 제거되었습니다!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "백업을 제거할 수 없습니다!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "날짜에 데이터베이스 백업 완료 "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "날짜에 플러그인 백업 완료 "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "날짜에 테마 백업 완료 "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "날짜에 업로드 백업 완료 "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "기타 백업이 날짜에 완료됨 "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "로그"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "로그를 찾을 수 없습니다!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "백업을 위해 선택한 항목이 없습니다."

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "보안 문제."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "데이터베이스 백업이 완료되었습니다."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "데이터베이스 백업을 생성할 수 없습니다."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "플러그인 백업이 완료되었습니다."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "플러그인 백업에 실패했습니다."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "테마 백업이 완료되었습니다."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "테마 백업에 실패했습니다."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "업로드 백업이 완료되었습니다."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "업로드 백업에 실패했습니다."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "기타 백업이 완료되었습니다."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "기타 백업에 실패했습니다."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP 파일 관리자"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "설정"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "기본 설정"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "시스템 속성"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "단축 코드 - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "백업/복원"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "프로 구매"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "기부"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "다운로드할 파일이 없습니다."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "잘못된 보안 코드입니다."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "백업 ID가 없습니다."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "매개변수 유형이 누락되었습니다."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "필수 매개변수가 누락되었습니다."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"오류: 데이터베이스 백업의 크기가 커서 백업을 복원할 수 없습니다. 기본 설정에"
"서 최대 허용 크기를 늘리십시오."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "삭제할 백업을 선택하십시오!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "선택한 백업을 제거하시겠습니까?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "백업이 실행 중입니다. 잠시만 기다려 주십시오."

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "복원이 실행 중입니다. 잠시만 기다려 주십시오."

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "백업을 위해 선택된 것이 없습니다."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP 파일 관리자 - 백업/복원"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "백업 옵션:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "데이터베이스 백업"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "파일 백업"

#: inc/backup.php:68
msgid "Plugins"
msgstr "플러그인"

#: inc/backup.php:71
msgid "Themes"
msgstr "테마"

#: inc/backup.php:74
msgid "Uploads"
msgstr "업로드"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "기타(wp-content 내에서 발견된 기타 모든 디렉토리)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "백업 지금"

#: inc/backup.php:89
msgid "Time now"
msgstr "지금이 시간"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "성공"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "백업이 성공적으로 삭제되었습니다."

#: inc/backup.php:102
msgid "Ok"
msgstr "확인"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "파일 삭제"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "이 백업을 삭제하시겠습니까?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "취소"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "확인"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "파일 복원"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "이 백업을 복원하시겠습니까?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "마지막 로그 메시지"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "백업이 성공적으로 완료되었으며 이제 완료되었습니다."

#: inc/backup.php:171
msgid "No log message"
msgstr "로그 메시지 없음"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "기존 백업"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "백업 날짜"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "백업 데이터(다운로드하려면 클릭)"

#: inc/backup.php:190
msgid "Action"
msgstr "동작"

#: inc/backup.php:210
msgid "Today"
msgstr "오늘"

#: inc/backup.php:239
msgid "Restore"
msgstr "복원"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "지우다"

#: inc/backup.php:241
msgid "View Log"
msgstr "로그 보기"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "현재 백업을 찾을 수 없습니다."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "선택한 백업에 대한 작업"

#: inc/backup.php:251
msgid "Select All"
msgstr "모두 선택"

#: inc/backup.php:252
msgid "Deselect"
msgstr "선택 해제"

#: inc/backup.php:254
msgid "Note:"
msgstr "노트 :"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "백업 파일은"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP 파일 관리자 투고"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"참고: 데모 스크린샷입니다. 로그 기능을 사용하려면 File Manager pro를 구입하십"
"시오."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "클릭하여 PRO 구매하기"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "프로 구매"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "파일 로그 편집"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "파일 로그 다운로드"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "파일 로그 업로드"

#: inc/root.php:43
msgid "Settings saved."
msgstr "설정이 저장되었습니다."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "이 알림을 닫습니다."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "저장할 변경 사항이 없습니다."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "공개 루트 경로"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "파일 관리자 루트 경로, 당신은 당신의 선택에 따라 변경할 수 있습니다."

#: inc/root.php:59
msgid "Default:"
msgstr "기본:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"경로를 잘못 지정하면 파일 관리자 플러그인이 다운될 수 있으므로 신중하게 변경"
"하십시오."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "휴지통을 사용하시겠습니까?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "휴지통을 활성화하면 파일이 휴지통 폴더로 이동합니다."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "미디어 라이브러리에 파일 업로드를 활성화하시겠습니까?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "이 기능을 활성화하면 모든 파일이 미디어 라이브러리로 이동합니다."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "데이터베이스 백업 복원 시 허용되는 최대 크기입니다."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr "백업 복원 시 오류 메시지가 나타나면 필드 값을 늘리십시오."

#: inc/root.php:90
msgid "Save Changes"
msgstr "변경 사항을 저장하다"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "설정 - 일반"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"참고: 이것은 데모 스크린샷일 뿐입니다. 설정을 얻으려면 프로 버전을 구입하십시"
"오."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"여기에서 관리자는 파일 관리자를 사용하기 위한 사용자 역할에 대한 액세스 권한"
"을 부여할 수 있습니다. 관리자는 기본 액세스 폴더를 설정하고 파일 관리자의 업"
"로드 크기를 제어할 수 있습니다."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "설정 - 코드 편집기"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"파일 관리자에는 여러 테마가 있는 코드 편집기가 있습니다. 코드 편집기의 테마"
"를 선택할 수 있습니다. 파일을 편집할 때 표시됩니다. 또한 코드 편집기의 전체 "
"화면 모드를 허용할 수 있습니다."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "코드 편집기 보기"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "설정 - 사용자 제한"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"관리자는 모든 사용자의 작업을 제한할 수 있습니다. 또한 파일과 폴더를 숨기고 "
"다른 사용자에 대해 다른 폴더 경로를 설정할 수 있습니다."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "설정 - 사용자 역할 제한"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"관리자는 모든 사용자 역할의 작업을 제한할 수 있습니다. 또한 파일과 폴더를 숨"
"기고 다른 사용자 역할에 대해 다른 폴더 경로를 설정할 수 있습니다."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "파일 관리자 - 단축 코드"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "사용하다:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"프런트 엔드에 파일 관리자가 표시됩니다. 파일 관리자 설정에서 모든 설정을 제어"
"할 수 있습니다. 백엔드 WP 파일 관리자와 동일하게 작동합니다."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"프런트 엔드에 파일 관리자가 표시됩니다. 그러나 관리자만 액세스할 수 있으며 파"
"일 관리자 설정에서 제어합니다."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "매개변수:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"모든 역할이 프론트 엔드의 파일 관리자에 액세스할 수 있도록 허용하거나 "
"allowed_roles=\"editor,author\"(쉼표(,)로 구분)와 같이 특정 사용자 역할에 대"
"해 간단하게 사용할 수 있습니다."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"여기서 \"test\"는 루트 디렉터리에 있는 폴더의 이름이거나 \"wp-content/plugins"
"\"와 같이 하위 폴더에 대한 경로를 지정할 수 있습니다. 비워두거나 비워두면 루"
"트 디렉토리의 모든 폴더에 액세스합니다. 기본값: 루트 디렉터리"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "파일 쓰기 권한에 대한 액세스, 참고: true/false, 기본값: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "파일 읽기 권한에 대한 액세스, 참고: true/false, 기본값: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "여기에 언급 된 숨길 것입니다. 참고: 쉼표(,)로 구분합니다. 기본값: 널"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"쉼표로 표시된 잠금이 해제됩니다. \".php,.css,.js\" 등과 같이 더 많이 잠글 수 "
"있습니다. 기본값: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* 모든 작업에 대해 일부 작업을 허용하려면 작업 이름을 allowed_operations="
"\"upload,download\"와 같이 언급할 수 있습니다. 참고: 쉼표(,)로 구분합니다. 기"
"본: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "파일 작업 목록:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "디렉토리 또는 폴더 만들기"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "파일 만들기"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "파일 또는 폴더 이름 바꾸기"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "폴더 또는 파일 복제 또는 복제"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "파일 또는 폴더 붙여넣기"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "반"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "아카이브 또는 zip을 만들려면"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "아카이브 또는 압축 파일 추출"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "파일 또는 폴더 복사"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "파일이나 폴더를 간단하게 자르기"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "파일 편집"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "파일 및 폴더 제거 또는 삭제"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "파일 다운로드"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "파일 업로드하다"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "물건 검색"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "파일 정보"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "도움"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> 특정 사용자의 ID를 쉼표(,)로 구분하여 입력하면 차단됩니다. 사용자가 Ban인 "
"경우 프런트 엔드에서 wp 파일 관리자에 액세스할 수 없습니다."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> 파일 관리자 UI 보기. 기본값: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> 수정된 파일 또는 날짜 형식을 만듭니다. 기본값: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> 파일 관리자 언어. 기본값: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> 파일 관리자 테마. 기본값: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "파일 관리자 - 시스템 속성"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP 버전"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "최대 파일 업로드 크기(upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "게시물 최대 파일 업로드 크기(post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "메모리 제한(memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "시간 초과(max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "브라우저 및 OS(HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "여기에서 테마 변경:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "기본"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "어두운"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "빛"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "회색"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "파일 관리자에 오신 것을 환영합니다"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"우리는 새로운 친구를 사귀는 것을 좋아합니다! 아래를 구독하고 우리는 약속합니"
"다\n"
"    최신 새 플러그인, 업데이트,\n"
"    멋진 거래와 몇 가지 특별 제안."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "이름을 입력하세요."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "성을 입력하십시오."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "이메일 주소를 입력하십시오."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "검증"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "고맙지 만 사양 할게"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "서비스 약관"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "개인 정보 정책"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "절약..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "확인"

#~ msgid "Backup not found!"
#~ msgstr "백업을 찾을 수 없습니다!"

#~ msgid "Backup removed successfully!"
#~ msgstr "백업이 성공적으로 제거되었습니다!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">백업을 위해 선택한 항목이 없습니다.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">보안 문제.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">데이터베이스 백업이 완료되었습니다.</"
#~ "span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">데이터베이스 백업을 생성할 수 없습니다.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">플러그인 백업이 완료되었습니다.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">플러그인 백업에 실패했습니다.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">테마 백업이 완료되었습니다.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">테마 백업에 실패했습니다.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">업로드 백업 완료</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">업로드 백업에 실패했습니다.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">기타 백업이 완료되었습니다.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">다른 백업에 실패했습니다.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">완료</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "영상"

#~ msgid "of"
#~ msgstr "의"

#~ msgid "Close"
#~ msgstr "닫기"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "이 기능에는 인라인 프레임이 필요합니다. iframe을 사용 중지했거나 브라우저"
#~ "에서 지원하지 않습니다."

#~ msgid "Theme Editor"
#~ msgstr "테마 편집기"

#~ msgid "Plugin Editor"
#~ msgstr "플러그인 편집기"

#~ msgid "Access Control"
#~ msgstr "액세스 제어"

#~ msgid "Notify Me"
#~ msgstr "나를 통지"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr " 언어가 성공적으로 다운로드되었습니다."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "언어 폴더를 다운로드하지 못했습니다."

#~ msgid "Security token expired!"
#~ msgstr "보안 토큰이 만료되었습니다!"

#~ msgid " language has been downloaded successfully."
#~ msgstr " 언어가 성공적으로 다운로드되었습니다."

#~ msgid "Currently language "
#~ msgstr "현재 언어 "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " 사용할 수 없습니다. 요청 언어 링크를 클릭하십시오."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr "이 사이트의 플러그인을 편집 할 수있는 권한이 없습니다."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "이 사이트에 설치된 플러그인이 없습니다."

#~ msgid "There are no themes installed on this site."
#~ msgstr "이 사이트에 설치된 테마가 없습니다."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">폴더 이름을 입력하십시오! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">파일 이름을 입력하십시오!</p>"

#~ msgid "Open"
#~ msgstr "열다"

#~ msgid "Preview"
#~ msgstr "시사"

#~ msgid "Edit"
#~ msgstr "편집하다"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "파일 업로드를 중단 하시겠습니까?"

#~ msgid "File renamed successfully."
#~ msgstr "파일 이름이 성공적으로 변경되었습니다."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "폴더를 삭제 하시겠습니까?"

#~ msgid "Folder deleted successfully."
#~ msgstr "폴더가 성공적으로 삭제되었습니다."

#~ msgid "File deleted successfully."
#~ msgstr "파일이 성공적으로 삭제되었습니다."

#~ msgid "Folder renamed successfully."
#~ msgstr "폴더 이름이 성공적으로 변경되었습니다."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">30자를 초과 할 수 없습니다.</p>"

#~ msgid "Invalid request!"
#~ msgstr "잘못된 요청!"

#~ msgid "No change in file!"
#~ msgstr "파일 변경 없음!"

#~ msgid "File saved successfully!"
#~ msgstr "파일이 성공적으로 저장되었습니다!"

#~ msgid "File not saved!"
#~ msgstr "파일이 저장되지 않았습니다!"

#~ msgid "Unable to verify security token!"
#~ msgstr "보안 토큰을 확인할 수 없습니다!"

#~ msgid "Folder created successfully!"
#~ msgstr "폴더가 성공적으로 생성되었습니다!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "이 폴더 형식은 워드 프레스로 업로드 할 수 없습니다!"

#~ msgid "Folder already exists!"
#~ msgstr "폴더가 이미 있습니다!"

#~ msgid "File created successfully!"
#~ msgstr "파일이 성공적으로 생성되었습니다!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "이 파일 확장자는 만들 수 없습니다!"

#~ msgid "File already exists!"
#~ msgstr "존재하는 파일입니다!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "유효한 파일 확장자를 입력하십시오!"

#~ msgid "Folder does not exists!"
#~ msgstr "폴더가 없습니다!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "폴더가 성공적으로 삭제되었습니다!"

#~ msgid "File deleted successfully!"
#~ msgstr "파일이 성공적으로 삭제되었습니다!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "이 파일 확장자는 워드 프레스로 업로드 할 수 없습니다!"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "성공적으로 업로드 된 파일 : 업로드 된 파일 경로 : "

#~ msgid "No file selected"
#~ msgstr "파일이 선택되지 않았습니다"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "파일 이름을 바꿀 수 없습니다! 다시 시도하십시오."

#~ msgid "Folder renamed successfully!"
#~ msgstr "폴더 이름이 성공적으로 변경되었습니다!"

#~ msgid "Please enter correct folder name"
#~ msgstr "올바른 폴더 이름을 입력하십시오"

#~ msgid "How can we help?"
#~ msgstr "어떻게 도와 드릴까요?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "학습 리소스, 전문 지원 및 전문가 도움."

#~ msgid "Documentation"
#~ msgstr "선적 서류 비치"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "포괄적 인 문서에서 신속하게 답변을 찾으십시오."

#~ msgid "Learn More"
#~ msgstr "더 알아보기"

#~ msgid "Contact Us"
#~ msgstr "문의하기"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr "질문에 대한 답변은 지원 티켓을 제출하십시오."

#~ msgid "Request a Feature"
#~ msgstr "기능 요청"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "원하는 것을 알려 주시면 로드맵에 추가 할 것입니다."

#~ msgid "Tell us what you think!"
#~ msgstr "당신의 생각을 알려주세요!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "평가하고 Wordpress에 대한 리뷰를 남겨주세요!"

#~ msgid "Leave a Review"
#~ msgstr "리뷰를 남겨주세요"

#~ msgid "Update"
#~ msgstr "최신 정보"

#~ msgid "Installed"
#~ msgstr "설치됨"

#~ msgid "Theme Editor Pro Language:"
#~ msgstr "Theme Editor Pro 언어 :"

#~ msgid " language"
#~ msgstr " 언어"

#~ msgid "Click here to install/update "
#~ msgstr "설치 / 업데이트하려면 여기를 클릭하십시오. "

#~ msgid " language translation for Theme Editor Pro."
#~ msgstr " Theme Editor Pro의 언어 번역."

#~ msgid "Available languages"
#~ msgstr "사용 가능한 언어"

#~ msgid "Click here to download all available languages."
#~ msgstr "사용 가능한 모든 언어를 다운로드하려면 여기를 클릭하십시오."

#~ msgid "Request a language"
#~ msgstr "언어 요청"

#~ msgid "Tell us which language you want to add."
#~ msgstr "추가 할 언어를 알려주십시오."

#~ msgid "Contact us"
#~ msgstr "문의하기"

#~ msgid "Notifications"
#~ msgstr "알림"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> 참고 : 이것은 스크린 샷일뿐입니다. 이 기능에 대한 PRO 버전을 구입"
#~ "하세요.</strong>"

#~ msgid "Permissions"
#~ msgstr "권한"

#~ msgid "Edit Plugin"
#~ msgstr "플러그인 수정"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong>이 플러그인은 현재 활성화되어 있습니다! </strong> 경고 : 활성 플러"
#~ "그인을 변경하지 않는 것이 좋습니다. 변경으로 인해 치명적인 오류가 발생하"
#~ "면 플러그인이 자동으로 비활성화됩니다."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "편집 <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</ span> (활성)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "브라우징 <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</ span> (비활성)"

#~ msgid "Update File"
#~ msgstr "파일 업데이트"

#~ msgid "Download Plugin"
#~ msgstr "플러그인 다운로드"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "변경 사항을 저장하기 전에이 파일을 쓰기 가능하게 만들어야합니다. 자세한 내"
#~ "용은 <a href=\"https://wordpress.org/support/article/changing-file-"
#~ "permissions/\" target=\"_blank\"> Codex </a>를 참조하세요."

#~ msgid "Select plugin to edit:"
#~ msgstr "편집 할 플러그인 선택 :"

#~ msgid "Create Folder and File"
#~ msgstr "폴더 및 파일 생성"

#~ msgid "Create"
#~ msgstr "창조하다"

#~ msgid "Remove Folder and File"
#~ msgstr "폴더 및 파일 제거"

#~ msgid "Remove "
#~ msgstr "없애다"

#~ msgid "To"
#~ msgstr "에"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "선택 사항 : 하위 디렉터리"

#~ msgid "Choose File "
#~ msgstr "파일을 선택"

#~ msgid "No file Chosen "
#~ msgstr "선택된 파일 없음 "

#~ msgid "Create a New Folder: "
#~ msgstr "새 폴더 만들기 :"

#~ msgid "New folder will be created in: "
#~ msgstr "다음 위치에 새 폴더가 생성됩니다."

#~ msgid "New Folder Name: "
#~ msgstr "새 폴더 이름 :"

#~ msgid "Create New Folder"
#~ msgstr "새 폴더 생성"

#~ msgid "Create a New File: "
#~ msgstr "새 파일 만들기 :"

#~ msgid "New File will be created in: "
#~ msgstr "새 파일은 다음 위치에 생성됩니다."

#~ msgid "New File Name: "
#~ msgstr "새 파일 이름 :"

#~ msgid "Create New File"
#~ msgstr "새 파일 생성"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr "경고 : 폴더 나 파일을 제거하기 전에주의하십시오."

#~ msgid "Current Theme Path: "
#~ msgstr "현재 테마 경로 :"

#~ msgid "Remove Folder: "
#~ msgstr "폴더 제거 :"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "제거 할 폴더 경로 : "

#~ msgid "Remove Folder"
#~ msgstr "폴더 제거 "

#~ msgid "Remove File: "
#~ msgstr "파일을 지우다:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "제거 할 폴더 경로 :"

#~ msgid "Remove File"
#~ msgstr "파일을 지우다"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "유효한 이메일 주소를 입력하십시오."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr "경고 : 폴더 또는 파일의 이름을 변경하기 전에주의하십시오."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "파일 / 폴더의 이름이 다음에서 변경됩니다."

#~ msgid "File/Folder Rename: "
#~ msgstr "파일 / 폴더 이름 변경 :"

#~ msgid "Follow us"
#~ msgstr "우리를 따르라"

#~ msgid "Theme Editor Facebook"
#~ msgstr "테마 편집기 Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "테마 편집기 Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "테마 편집기 Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "테마 편집기 Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "테마 편집기 Youtube"

#~ msgid "Logo"
#~ msgstr "심벌 마크"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "ThemeEditor 사이트로 이동"

#~ msgid "Theme Editor Links"
#~ msgstr "테마 편집기 링크"

#~ msgid "Child Theme"
#~ msgstr "아동 테마"

#~ msgid "Child Theme Permissions"
#~ msgstr "하위 테마 권한"

#~ msgid " is not available. Please click "
#~ msgstr " 사용할 수 없습니다. 클릭하세요"

#~ msgid "here"
#~ msgstr "여기"

#~ msgid "to request language."
#~ msgstr "언어를 요청합니다."

#~ msgid "Click"
#~ msgstr "딸깍 하는 소리"

#~ msgid "to install "
#~ msgstr "설치하기 위해서 "

#~ msgid " language translation  for Theme Editor Pro"
#~ msgstr " Theme Editor Pro 용 언어 번역을 설치하려면"

#~ msgid "Success: Settings Saved!"
#~ msgstr "성공 : 설정이 저장되었습니다!"

#~ msgid "No changes have been made to save."
#~ msgstr "저장하기 위해 변경된 사항이 없습니다."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "테마에 대한 테마 편집기 활성화"

#~ msgid "Yes"
#~ msgstr "예"

#~ msgid "No"
#~ msgstr "아니"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "테마 편집기를 활성화 / 비활성화합니다. <br/><strong class=\"defs\"> 기본"
#~ "값 : </ strong> 예"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "기본 WordPress 테마 편집기를 비활성화 하시겠습니까?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "기본 테마 편집기를 활성화 / 비활성화합니다. <br/><strong class=\"defs\"> "
#~ "기본값 : </ strong> 예"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "플러그인 용 플러그인 편집기 활성화"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "플러그인 편집기를 활성화 / 비활성화합니다. <br/><strong class=\"defs\">기"
#~ "본값 : </ strong> 예"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "기본 WordPress 플러그인 편집기를 비활성화 하시겠습니까?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "기본 플러그인 편집기를 활성화 / 비활성화합니다. <br/><strong class=\"defs"
#~ "\">기본값 : </ strong> 예"

#~ msgid "Code Editor"
#~ msgstr "코드 편집기"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "테마 편집 기용 테마를 선택할 수 있습니다. <br/><strong class=\"defs\">기본"
#~ "값 : </ strong> Cobalt"

#~ msgid "Edit Themes"
#~ msgstr "테마 편집"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong>이 테마는 현재 활성화되어 있습니다! </strong> 경고 : 활성 테마는 "
#~ "변경하지 않는 것이 좋습니다."

#~ msgid "Editing"
#~ msgstr "편집"

#~ msgid "Browsing"
#~ msgstr "브라우징"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "파일 업데이트 및 재 활성화 시도"

#~ msgid "Download Theme"
#~ msgstr "테마 다운로드"

#~ msgid "Select theme to edit:"
#~ msgstr "편집 할 테마 선택 :"

#~ msgid "Theme Files"
#~ msgstr "테마 파일"

#~ msgid "Choose File"
#~ msgstr "파일을 선택"

#~ msgid "No File Chosen"
#~ msgstr "선택된 파일 없음"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr "경고 : 폴더 나 파일을 제거하기 전에주의하십시오."

#~ msgid "Child Theme Permission"
#~ msgstr "아동 테마 권한"

#~ msgid "Translations"
#~ msgstr "번역"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "새 하위 테마를 만들 수있는 권한이 없습니다."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr "기존 하위 테마 구성을 변경할 권한이 없습니다."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "하위 테마를 복제 할 권한이 없습니다."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "쿼리 / 선택기 메뉴에 액세스 할 수있는 권한이 없습니다."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "웹 글꼴 및 CSS 메뉴에 액세스 할 수있는 권한이 없습니다."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "파일을 복사 할 권한이 없습니다."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "하위 파일을 삭제할 권한이 없습니다."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "새 스크린 샷을 업로드 할 권한이 없습니다."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "새 이미지를 업로드 할 권한이 없습니다."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "이미지를 삭제할 권한이 없습니다."

#~ msgid "You do not have the permission to download file."
#~ msgstr "파일을 다운로드 할 권한이 없습니다."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "새 디렉토리를 만들 수있는 권한이 없습니다."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "새 파일을 만들 수있는 권한이 없습니다."

#~ msgid "You don't have permission to update file!"
#~ msgstr "파일을 업데이트 할 권한이 없습니다!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "폴더를 만들 수있는 권한이 없습니다!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "폴더를 삭제할 권한이 없습니다!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "파일을 삭제할 권한이 없습니다!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "파일을 업로드 할 권한이 없습니다!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "하위 테마 권한이 성공적으로 저장되었습니다."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr "저장할 하위 테마 권한에는 변경 사항이 없습니다."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "하위 테마 권한 메시지가 성공적으로 저장되었습니다."

#~ msgid "Users"
#~ msgstr "사용자"

#~ msgid "Create New Child Theme"
#~ msgstr "새 자식 테마 만들기"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "기존 자식 테마 구성"

#~ msgid "Duplicate Child Themes"
#~ msgstr "중복 된 하위 테마"

#~ msgid "Query/ Selector"
#~ msgstr "쿼리 / 선택기"

#~ msgid "Web/font"
#~ msgstr "웹 / 글꼴"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "파일 상위 테마를 하위 테마로 복사"

#~ msgid "Deleted Child Files"
#~ msgstr "삭제 된 하위 파일"

#~ msgid "Upload New Screenshoot"
#~ msgstr "새 스크린 샷 업로드"

#~ msgid "Upload New Images"
#~ msgstr "새 이미지 업로드"

#~ msgid "Deleted Images "
#~ msgstr "삭제 된 이미지"

#~ msgid "Download Images"
#~ msgstr "이미지 다운로드"

#~ msgid "Create New Directory"
#~ msgstr "새 디렉토리 생성"

#~ msgid "Create New Files"
#~ msgstr "새 파일 생성"

#~ msgid "Export Theme"
#~ msgstr "테마 내보내기"

#~ msgid "User Roles"
#~ msgstr "사용자 역할"

#~ msgid "Query/ Seletor"
#~ msgstr "쿼리 / 셀 레터"

#~ msgid "Deleted Images"
#~ msgstr "삭제 된 이미지"

#~ msgid "Child Theme Permission Message"
#~ msgstr "아동 테마 허가 메시지"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "새 하위 테마를 만들 수있는 권한이 없습니다."

#~ msgid "Query/Selector"
#~ msgstr "쿼리 / 선택기"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "쿼리 / 선택 메뉴에 액세스 할 수있는 권한이 없습니다."

#~ msgid " Web/font"
#~ msgstr "웹 / 글꼴"

#~ msgid " Export Theme"
#~ msgstr "테마 내보내기"

#~ msgid "Save Child Theme Message"
#~ msgstr "아동 테마 허가 메시지"

#~ msgid "Please select atleast one image."
#~ msgstr "이미지를 하나 이상 선택하십시오."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "이미지를 삭제할 권한이 없습니다."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "새 이미지를 업로드 할 권한이 없습니다."

#~ msgid "You don't have the permission to download."
#~ msgstr "다운로드 할 권한이 없습니다."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "새 디렉토리를 만들 수있는 권한이 없습니다."

#~ msgid "Please choose file type."
#~ msgstr "파일 형식을 선택하세요."

#~ msgid "Please enter file name."
#~ msgstr "파일 이름을 입력하십시오."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "새 파일을 만들 수있는 권한이 없습니다."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr "상위 파일을 하위 테마로 복사 하시겠습니까?"

#~ msgid "Please select file(s)."
#~ msgstr "파일을 선택하십시오."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "파일을 복사 할 수있는 권한이 없습니다."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "선택한 파일을 삭제 하시겠습니까?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "하위 파일을 삭제할 권한이 없습니다."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "새 스크린 샷을 업로드 할 권한이 없습니다."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "테마를 내보낼 수있는 권한이 없습니다."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "쿼리 / 선택기 메뉴에 액세스 할 수있는 권한이 없습니다."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "웹 글꼴 및 CSS 메뉴에 액세스 할 수있는 권한이 없습니다."

#~ msgid "Current Analysis Theme:"
#~ msgstr "현재 분석 주제 :"

#~ msgid "Preview Theme"
#~ msgstr "테마 미리보기"

#~ msgid "Parent Themes"
#~ msgstr "부모 테마"

#~ msgid "Child Themes"
#~ msgstr "어린이 테마"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "오류 : 설정이 저장되지 않았습니다!"

#~ msgid "Email List"
#~ msgstr "이메일 목록"

#~ msgid "Email Address"
#~ msgstr "이메일 주소"

#~ msgid "Enter Email"
#~ msgstr "이메일 입력"

#~ msgid "Add More"
#~ msgstr "더 추가"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr "이 주소는 테마 / 플러그인 알림과 같은 알림 목적으로 사용됩니다."

#~ msgid "Theme Notification"
#~ msgstr "테마 알림"

#~ msgid "Notify on file update"
#~ msgstr "파일 업데이트 알림"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "테마 파일 수정 또는 업데이트 알림. <br/> <strong> 기본값 : </strong> 예"

#~ msgid "Notify on files download"
#~ msgstr "파일 다운로드시 알림"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr "테마 파일 수정 다운로드 알림. <br/> <strong> 기본값 : </strong> 예"

#~ msgid "Notify on theme download"
#~ msgstr "테마 다운로드시 알림"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr "테마 다운로드 알림. <br/> <strong> 기본값 : </strong> 예"

#~ msgid "Notify on files upload"
#~ msgstr "파일 업로드시 알림"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr "테마의 파일 업로드 알림. <br/> <strong> 기본값 : </ strong> 예"

#~ msgid "Notify on create new file/folder"
#~ msgstr "새 파일 / 폴더 생성시 알림"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "테마에서 새 파일 / 폴더 생성에 대한 알림. <br/> <strong> 기본값 : </ "
#~ "strong> 예"

#~ msgid "Notify on delete"
#~ msgstr "삭제시 알림"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "테마의 모든 파일 및 폴더 삭제시 알림. <br/> <strong> 기본값 : </ strong> "
#~ "예"

#~ msgid "Notify on create New Child theme"
#~ msgstr "새 자식 테마를 만들 때 알림"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "새 하위 테마 만들기에 대해 알립니다. <br/> <strong> 기본값 : </ strong> 예"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "기존 하위 테마 구성시 알림"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr "기존 하위 테마 구성시 알림. <br/> <strong> 기본값 : </ strong> 예"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "중복 된 하위 테마 알림"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "기존 하위 테마 구성에 대한 알림. <br/> <strong> 기본값 : </ strong> 예"

#~ msgid "Plugin Notification"
#~ msgstr "플러그인 알림"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "테마 파일 수정 또는 업데이트 알림. <br/> <strong> 기본값 : </ strong> 예"

#~ msgid "Notify on Plugin download"
#~ msgstr "플러그인 다운로드시 알림"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr "플러그인 다운로드 알림. <br/> <strong> 기본값 : </ strong> 예"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr "테마의 파일 업로드 알림. <br/> <strong> 기본값 : </ strong> 예"

#~ msgid "Permission saved successfully."
#~ msgstr "권한이 성공적으로 저장되었습니다."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr "이런! 변경하지 않았으므로 권한을 저장할 수 없습니다."

#~ msgid "Allowed User Roles"
#~ msgstr "허용 된 사용자 역할"

#~ msgid "Update theme files"
#~ msgstr "테마 파일 업데이트"

#~ msgid "Create new theme files and folders"
#~ msgstr "새 테마 파일 및 폴더 만들기"

#~ msgid "Upload new theme files and folders"
#~ msgstr "새 테마 파일 및 폴더 업로드"

#~ msgid "Download theme files"
#~ msgstr "테마 파일 다운로드"

#~ msgid "Download theme"
#~ msgstr "테마 다운로드"

#~ msgid "Update plugin files"
#~ msgstr "플러그인 파일 업데이트"

#~ msgid "Create new plugin files and folders"
#~ msgstr "새 플러그인 파일 및 폴더 생성"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "새 플러그인 파일 및 폴더 업로드"

#~ msgid "Delete plugin files and folders"
#~ msgstr "플러그인 파일 및 폴더 삭제"

#~ msgid "Download plugin files"
#~ msgstr "플러그인 파일 다운로드"

#~ msgid "Download plugin"
#~ msgstr "플러그인 다운로드"

#~ msgid "Rename File"
#~ msgstr "파일명 변경"

#~ msgid "Facebook"
#~ msgstr "페이스 북"

#~ msgid "Twitter"
#~ msgstr "트위터"

#~ msgid "Youtube"
#~ msgstr "유튜브"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Theme Editor PRO-아래에 주문 세부 정보를 추가하십시오. 그렇지 않다면 <a "
#~ "href=\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" "
#~ "class=\"page-title-action button button-primary\" title=\"click to buy "
#~ "Licence Key\">지금 구입 </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "주문 아이디 (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "주문 ID 입력"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "주문 ID는 이메일을 확인하십시오."

#~ msgid "LICENCE KEY *"
#~ msgstr "라이센스 키 *"

#~ msgid "Enter License Key"
#~ msgstr "라이센스 키 입력"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "이메일에서 라이센스 키를 확인하십시오."

#~ msgid "Click To Verify"
#~ msgstr "확인하려면 클릭"

#~ msgid "URL/None"
#~ msgstr "URL / 없음"

#~ msgid "Origin"
#~ msgstr "유래"

#~ msgid "Color 1"
#~ msgstr "색상 1"

#~ msgid "Color 2"
#~ msgstr "색상 2"

#~ msgid "Width/None"
#~ msgstr "너비 / 없음"

#~ msgid "Style"
#~ msgstr "스타일"

#~ msgid "Color"
#~ msgstr "색상"

#~ msgid "Configure Child Theme"
#~ msgstr "자식 테마 구성"

#~ msgid "Duplicate Child theme"
#~ msgstr "중복 된 하위 테마"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "분석 후이 테마는 잘 작동합니다. 이것을 자녀 테마로 사용할 수 있습니다."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr "이 자식 테마를 분석 한 후 제대로 작동하는 것으로 보입니다."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "이 테마는 <code> style.css </ code> 파일 뒤에 추가 스타일 시트를로드합니"
#~ "다."

#~ msgid "The theme"
#~ msgstr "테마 이름"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr "미리보기가 올바르게 렌더링되지 않았기 때문에 분석 할 수 없습니다."

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "이 플러그인에 대해이 하위 테마가 구성되지 않았습니다."

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Configurator는 스타일 시트 변경 및 추가 PHP 기능을 포함하여 자식 테마를 크"
#~ "게 수정합니다. DUPLICATE 하위 테마 옵션 (위의 1 단계 참조)을 사용하고 원본"
#~ "을 백업으로 유지하는 것이 좋습니다."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "모든 웹 폰트 / css 정보가 성공적으로 저장되었습니다."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "webfonts / css에 대한 값을 입력하십시오."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "webfonts / css를 업데이트 할 권한이 없습니다."

#~ msgid "All information saved successfully."
#~ msgstr "모든 정보가 성공적으로 저장되었습니다."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "재설정 하시겠습니까? 이렇게하면 Configurator에서 수행 한 모든 작업이 삭제"
#~ "됩니다."

#~ msgid "Selectors"
#~ msgstr "선택자"

#~ msgid "Edit Selector"
#~ msgstr "선택기 편집"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "스타일 시트를 표시 할 수 없습니다."

#~ msgid "(Child Only)"
#~ msgstr "(어린이 전용)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "유효한 하위 테마를 입력하십시오."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "유효한 하위 테마 이름을 입력하십시오."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> 존재합니다. 다른 어린이 테마를 입력하십시오"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "페이지를 올바르게로드 할 수 없습니다."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "충돌하거나 오래된 jQuery 라이브러리가 다른 플러그인에 의해로드되었습니다."

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr "플러그인을 비활성화하거나 교체하면이 문제를 해결할 수 있습니다."

#~ msgid "No result found for the selection."
#~ msgstr "선택에 대한 결과가 없습니다."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%s이 표시되는 이유는 무엇입니까? %s"

#~ msgid "Parent / Child"
#~ msgstr "부모 / 자녀"

#~ msgid "Select an action:"
#~ msgstr "조치를 선택하십시오."

#~ msgid "Create a new Child Theme"
#~ msgstr "새 자식 테마 만들기"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "기존 자식 테마 구성"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "기존 하위 테마 복제"

#~ msgid "Select a Parent Theme:"
#~ msgstr "상위 테마 선택 :"

#~ msgid "Analyze Parent Theme"
#~ msgstr "상위 테마 분석"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "스타일 시트 종속성 및 기타 잠재적 인 문제를 확인하려면 \"분석\"을 클릭하십"
#~ "시오."

#~ msgid "Analyze"
#~ msgstr "분석"

#~ msgid "Select a Child Theme:"
#~ msgstr "하위 테마 선택 :"

#~ msgid "Analyze Child Theme"
#~ msgstr "하위 테마 분석"

#~ msgid "Name the new theme directory:"
#~ msgstr "새 테마 디렉토리의 이름을 지정하십시오."

#~ msgid "Directory Name"
#~ msgstr "디렉토리 이름"

#~ msgid "NOTE:"
#~ msgstr "노트:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "이것은 Child Theme의 이름이 아닙니다. 아래 7 단계에서 이름, 설명 등을 사용"
#~ "자 지정할 수 있습니다."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "하위 테마 디렉토리 확인 :"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr "확인 전용입니다 (기존 하위 테마의 디렉토리는 수정할 수 없음)."

#~ msgid "Select where to save new styles:"
#~ msgstr "새 스타일을 저장할 위치를 선택하십시오."

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "기본 스타일 시트 (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "새 사용자 정의 스타일을 하위 테마 기본 스타일 시트에 직접 저장하여 기존 값"
#~ "을 바꿉니다. 기본 스타일 시트는 테마에 설정된 순서대로로드됩니다."

#~ msgid "Separate Stylesheet"
#~ msgstr "별도의 스타일 시트"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "새 사용자 정의 스타일을 별도의 스타일 시트에 저장하고 기존 하위 테마 스타"
#~ "일을 상위 항목과 결합하여 기준선을 형성합니다. 기존 자식 테마 스타일을 덮"
#~ "어 쓰지 않고 유지하려면이 옵션을 선택합니다. 이 옵션을 사용하면 기본 스타"
#~ "일 시트 이후에로드되는 스타일 시트를 사용자 정의 할 수도 있습니다."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "상위 테마 스타일 시트 처리를 선택하십시오."

#~ msgid "Use the WordPress style queue."
#~ msgstr "WordPress 스타일 대기열을 사용합니다."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "구성자가 적절한 작업 및 종속성을 결정하고 함수 파일을 자동으로 업데이트하"
#~ "도록합니다."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "하위 테마 스타일 시트에서 <code> @import </code>를 사용합니다."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "WordPress 스타일 대기열을 사용하여 상위 스타일 시트를로드 할 수없는 경우에"
#~ "만이 옵션을 사용하십시오. <code> @import </code> 사용은 권장되지 않습니다."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "상위 스타일 시트 처리를 추가하지 마십시오."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "이 테마가 이미 상위 테마 스타일 시트를 처리하거나 상위 테마의 <code> "
#~ "style.css </code> 파일이 모양에 사용되지 않는 경우이 옵션을 선택하십시오."

#~ msgid "Advanced handling options"
#~ msgstr "고급 처리 옵션"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "상위 테마 스타일 시트를 무시하십시오."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "이 테마가 이미 상위 테마 스타일 시트를 처리하거나 상위 테마의 style.css 파"
#~ "일이 모양에 사용되지 않는 경우이 옵션을 선택하십시오."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "하위 테마에서 헤더 템플릿을 복구합니다."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "구성 관리자가 위에 나열된 스타일 시트 문제를 해결하도록하십시오. 이것은 전"
#~ "부는 아니지만 많은 일반적인 문제를 해결할 수 있습니다."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "스타일 시트 종속성 제거"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "기본적으로 기본 스타일 시트 이전에로드되는 스타일 시트의 순서는 종속성으"
#~ "로 처리하여 유지됩니다. 일부 경우 사이트 전체에서 사용되지 않는 스타일 시"
#~ "트가 미리보기에서 감지됩니다. 필요한 경우 아래의 특정 스타일 시트에 대한 "
#~ "종속성을 제거 할 수 있습니다."

#~ msgid "Child Theme Name"
#~ msgstr "하위 테마 이름"

#~ msgid "Theme Name"
#~ msgstr "테마 이름"

#~ msgid "Theme Website"
#~ msgstr "테마 웹 사이트"

#~ msgid "Author"
#~ msgstr "저자"

#~ msgid "Author Website"
#~ msgstr "저자 웹 사이트"

#~ msgid "Theme Description"
#~ msgstr "테마 설명"

#~ msgid "Description"
#~ msgstr "기술"

#~ msgid "Tags"
#~ msgstr "태그"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "메뉴, 위젯 및 기타 사용자 정의 설정을 상위 테마에서 하위 테마로 복사 :"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "이 옵션은 하위 테마의 기존 메뉴, 위젯 및 기타 사용자 정의 설정을 상위 테마"
#~ "의 설정으로 대체합니다. 이 옵션은 자식 테마를 처음 구성 할 때만 사용해야합"
#~ "니다."

#~ msgid "Click to run the Configurator:"
#~ msgstr "구성자를 실행하려면 클릭하십시오."

#~ msgid "Query / Selector"
#~ msgstr "쿼리 / 선택기"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "@media 쿼리 블록 내에서 특정 선택기를 찾으려면 먼저 쿼리를 선택한 다음 선"
#~ "택기를 선택합니다. 다른 모든 선택기를 편집하려면 \"기본\"쿼리를 사용하십시"
#~ "오."

#~ msgid "@media Query"
#~ msgstr "@ 미디어 쿼리"

#~ msgid "( or \"base\" )"
#~ msgstr "(또는 \"base\")"

#~ msgid "Selector"
#~ msgstr "선택자"

#~ msgid "Query/Selector Action"
#~ msgstr "쿼리 / 선택기 작업"

#~ msgid "Save Child Values"
#~ msgstr "자식 값 저장"

#~ msgid "Delete Child Values"
#~ msgstr "자식 값 삭제"

#~ msgid "Property"
#~ msgstr "특성"

#~ msgid "Baseline Value"
#~ msgstr "기준 값"

#~ msgid "Child Value"
#~ msgstr "아동 가치"

#~ msgid "error"
#~ msgstr "오류"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "하위 테마를 구성 할 권한이 없습니다."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s 이 (가) 없습니다. 유효한 상위 테마를 선택하십시오."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Functions 파일은 필수이며 삭제할 수 없습니다."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "유효한 상위 테마를 선택하십시오."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "유효한 하위 테마를 선택하십시오."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "유효한 하위 테마 디렉토리 이름을 입력하십시오."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> 존재합니다. 다른 하위 테마 템플릿 이름을 입력하십시오."

#~ msgid "Your theme directories are not writable."
#~ msgstr "테마 디렉토리에 쓸 수 없습니다."

#~ msgid "Could not upgrade child theme"
#~ msgstr "하위 테마를 업그레이드 할 수 없습니다."

#~ msgid "Your stylesheet is not writable."
#~ msgstr "스타일 시트에 쓸 수 없습니다."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "하위 테마 함수 파일에서 닫는 PHP 태그가 감지되어 \"상위 스타일 시트 처리"
#~ "\"옵션이 구성되지 않았습니다. 파일 끝에서 PHP를 닫으면 HTTP 헤더가 너무 일"
#~ "찍 발생할 수 있으므로 권장하지 않습니다. <code> functions.php </code>를 편"
#~ "집하여 마지막 <code>?&gt;</code> 태그를 제거하고 \"Generate / Rebuild "
#~ "Child Theme Files\"를 다시 클릭하십시오."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "파일을 복사 할 수 없습니다 : %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "%s 파일을 삭제할 수 없습니다."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "%s 을 (를) 복사 할 수 없습니다."

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "잘못된 디렉토리 : %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "권한을 재설정하는 중에 오류가 발생했습니다."

#~ msgid "Could not upload file."
#~ msgstr "파일을 업로드 할 수 없습니다."

#~ msgid "Invalid theme root directory."
#~ msgstr "테마 루트 디렉터리가 잘못되었습니다."

#~ msgid "No writable temp directory."
#~ msgstr "쓰기 가능한 임시 디렉토리가 없습니다."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "압축 해제 실패 -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "포장 실패 -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "최대 스타일 수를 초과했습니다."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "파일 이동 오류 : %s"

#~ msgid "Could not set write permissions."
#~ msgstr "쓰기 권한을 설정할 수 없습니다."

#~ msgid "Error:"
#~ msgstr "오류:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr "현재 분석 하위 테마 <strong>%s</strong>이 (가) 재설정되었습니다."

#~ msgid "Update Key saved successfully."
#~ msgstr "업데이트 키가 성공적으로 저장되었습니다."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "하위 테마 파일이 성공적으로 수정되었습니다."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "하위 테마 <strong>%s</strong>이 (가) 성공적으로 생성되었습니다."

#~ msgid "Web Fonts & CSS"
#~ msgstr "웹 글꼴 및 CSS"

#~ msgid "Parent Styles"
#~ msgstr "부모 스타일"

#~ msgid "Child Styles"
#~ msgstr "아동 스타일"

#~ msgid "View Child Images"
#~ msgstr "어린이 이미지보기"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "추가 스타일 시트를 연결하려면<code>@import url ([path]);</code>을 사용하세"
#~ "요. 이 플러그인은 <code> @import </code> 키워드를 사용하여이를 식별하고 "
#~ "<code>&lt;link&gt;</code> 태그로 변환합니다. <strong> 예 : </strong>"

#~ msgid "Save"
#~ msgstr "저장"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr "같은 이름의 이미지를 업로드하면 기존 이미지로 대체됩니다."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "새 하위 테마 이미지 업로드"

#~ msgid "Delete Selected Images"
#~ msgstr "선택한 이미지 삭제"

#~ msgid "Create a New Directory"
#~ msgstr "새 디렉토리 생성"

#~ msgid "New Directory will be created in"
#~ msgstr "새 디렉토리가 생성됩니다."

#~ msgid "New Directory Name"
#~ msgstr "새 디렉토리 이름"

#~ msgid "Create a New File"
#~ msgstr "새 파일 생성"

#~ msgid "New File will be created in"
#~ msgstr "새 파일이 생성됩니다."

#~ msgid "New File Name"
#~ msgstr "새 파일 이름"

#~ msgid "File Type Extension"
#~ msgstr "파일 유형 확장자"

#~ msgid "Choose File Type"
#~ msgstr "파일 유형 선택"

#~ msgid "PHP File"
#~ msgstr "PHP 파일"

#~ msgid "CSS File"
#~ msgstr "CSS 파일"

#~ msgid "JS File"
#~ msgstr "JS 파일"

#~ msgid "Text File"
#~ msgstr "텍스트 파일"

#~ msgid "PHP File Type"
#~ msgstr "PHP 파일 유형"

#~ msgid "Simple PHP File"
#~ msgstr "간단한 PHP 파일"

#~ msgid "Wordpress Template File"
#~ msgstr "Wordpress 템플릿 파일"

#~ msgid "Template Name"
#~ msgstr "템플릿 이름"

#~ msgid "Parent Templates"
#~ msgstr "부모 템플릿"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "여기에서 선택하여 상위 테마에서 PHP 템플릿을 복사합니다. Configurator는 템"
#~ "플릿을 PHP 함수 나 클래스가없는 테마 PHP 파일로 정의합니다. 다른 PHP 파일"
#~ "은 자식 테마로 안전하게 재정의 할 수 없습니다."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "주의 : 하위 테마가 활성화 된 경우 파일이 복사 된 직후에 상위 파일 대신 하"
#~ "위 테마 버전이 사용됩니다."

#~ msgid "The "
#~ msgstr "그만큼"

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "파일은 별도로 생성되며 여기에 복사 할 수 없습니다."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "선택한 항목을 하위 테마로 복사"

#~ msgid " Child Theme Files "
#~ msgstr "하위 테마 파일"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "테마 편집기를 사용하여 파일을 편집하려면 클릭하십시오."

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "여기에서 선택하여 하위 테마 템플릿을 삭제합니다."

#~ msgid "Delete Selected"
#~ msgstr "선택된 것을 지워 라"

#~ msgid "Child Theme Screenshot"
#~ msgstr "어린이 테마 스크린 샷"

#~ msgid "Upload New Screenshot"
#~ msgstr "새 스크린 샷 업로드"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "테마 스크린 샷은 4 : 3 비율 (예 : 880px x 660px) JPG, PNG 또는 GIF 여야합"
#~ "니다. 이름이 변경됩니다"

#~ msgid "Screenshot"
#~ msgstr "스크린 샷"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "새 하위 테마 이미지 업로드"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "테마 이미지는 자식 테마의 images 디렉토리에 있으며 스타일 시트 전용입니"
#~ "다. 콘텐츠 이미지 용 미디어 라이브러리를 사용합니다."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "현재 하위 테마 미리보기 (현재 분석)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "현재 하위 테마 미리보기"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Zip 아카이브로 하위 테마 내보내기"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "현재로드 된 하위 테마의 백업을 저장하려면 \"내보내기 Zip\"을 클릭하십시"
#~ "오. 상위 / 하위 탭에서 테마를 내보낼 수 있습니다."

#~ msgid "Export Child Theme"
#~ msgstr "하위 테마 내보내기"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "하위 테마 파일이 성공적으로 복사되었습니다!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr "상위 템플릿에서 복사하려는 파일이 존재하지 않습니다."

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr "부모 템플릿에서 복사하려는 파일이 이미 자식 테마 파일에 있습니다."

#~ msgid "Child "
#~ msgstr "아이"

#~ msgid " and Parent "
#~ msgstr "및 부모"

#~ msgid " directories doesn't exist!"
#~ msgstr "디렉토리가 존재하지 않습니다!"

#~ msgid " directory doesn't exist!"
#~ msgstr "디렉토리가 없습니다!"

#~ msgid "Parent "
#~ msgstr "부모의"

#~ msgid "Unknown error! "
#~ msgstr "알수없는 오류!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "파일을 복사 할 권한이 없습니다!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "선택한 모든 파일이 성공적으로 삭제되었습니다!"

#~ msgid " does not exists!"
#~ msgstr "존재하지 않습니다!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "이 파일 확장자는 업로드 할 수 없습니다!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "이미지가 성공적으로 업로드되었습니다!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "이미지 업로드에 문제가 있습니다!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr "이 파일 확장자는 워드 프레스로 스크린 샷으로 업로드 할 수 없습니다!"

#~ msgid "File uploaded successfully!"
#~ msgstr "파일이 성공적으로 업로드되었습니다!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "하위 테마 파일은 수정할 수 없습니다."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "파일이 성공적으로 삭제되었습니다!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "파일을 삭제할 권한이 없습니다!"

#~ msgid "Entered directory name already exists"
#~ msgstr "입력 한 디렉토리 이름이 이미 있습니다."

#~ msgid "You don't have permission to create directory!"
#~ msgstr "디렉토리를 만들 수있는 권한이 없습니다!"

#~ msgid "Wordpress template file created"
#~ msgstr "생성 된 Wordpress 템플릿 파일"

#~ msgid "Wordpress template file not created"
#~ msgstr "Wordpress 템플릿 파일이 생성되지 않았습니다."

#~ msgid "PHP created file successfully"
#~ msgstr "PHP가 파일을 성공적으로 생성했습니다."

#~ msgid "PHP file not created"
#~ msgstr "PHP 파일이 생성되지 않았습니다."

#~ msgid " file not created"
#~ msgstr "파일이 생성되지 않았습니다."

#~ msgid "Already exists"
#~ msgstr "이미 존재 함"

#~ msgid "You don't have permission to create file!"
#~ msgstr "파일을 만들 수있는 권한이 없습니다!"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr "테마 파일 및 폴더 생성, 편집, 업로드, 다운로드, 삭제"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "언어 폴더가 다운로드되었습니다."

#~ msgid "Add single or multiple languages."
#~ msgstr "단일 또는 여러 언어를 추가합니다."

#~ msgid "Add single language file"
#~ msgstr "단일 언어 파일 추가"

#~ msgid "Please click on language button."
#~ msgstr "언어 버튼을 클릭하세요."

#~ msgid "Add all languages zip folder"
#~ msgstr "모든 언어 zip 폴더 추가"

#~ msgid "Zip Download"
#~ msgstr "Zip 다운로드"
languages/wp-file-manager-pt_PT.po000064400000236301147361034410013061 0ustar00msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2022-02-28 11:09+0530\n"
"PO-Revision-Date: 2022-02-28 11:13+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr;esc_html\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Backup de temas restaurado com sucesso."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Incapaz de restaurar temas."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Backup de uploads restaurado com sucesso."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Incapaz de restaurar uploads."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Outros backups restaurados com sucesso."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Incapaz de restaurar outros."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Backup de plug-ins restaurado com sucesso."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Não foi possível restaurar os plug-ins."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Backup do banco de dados restaurado com sucesso."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Tudo feito"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Incapaz de restaurar o backup do banco de dados."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Backups removidos com sucesso!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Incapaz de remover o backup!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Backup de banco de dados feito na data "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Backup de plug-ins feito na data "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Backup de temas feito na data "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Backup de uploads feito na data "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Outros backups feitos na data "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Histórica"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nenhum registro encontrado!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Nada selecionado para backup"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Problema de segurança."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Backup de banco de dados feito."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Não foi possível criar o backup do banco de dados."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Backup de plugins feito."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Falha no backup de plug-ins."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Backup de temas feito."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Falha no backup de temas."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Backup de uploads concluído."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Falha no backup de uploads."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Outros backup feito."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Outros backup falhou."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP File Manager"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Definições"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferências"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Propriedades do sistema"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Restauração de backup"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Compre Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Doar"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "O arquivo não existe para download."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Código de segurança inválido."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "ID de backup ausente."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Tipo de parâmetro ausente."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Parâmetros obrigatórios ausentes."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Erro: não é possível restaurar o backup porque o backup do banco de dados é "
"muito grande. Por favor, tente aumentar o tamanho máximo permitido nas "
"configurações de Preferências."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Selecione backup(s) para excluir!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Tem certeza que deseja remover o (s) backup (s) selecionado (s)?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "O backup está em execução, por favor aguarde"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "A restauração está em execução, aguarde"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Nada selecionado para backup."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP File Manager - Backup / Restauração"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opções de backup:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Backup de banco de dados"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Backup de arquivos"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temas"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Uploads"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Outros (quaisquer outros diretórios encontrados dentro de wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Faça backup agora"

#: inc/backup.php:89
msgid "Time now"
msgstr "Hora agora"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUCESSO"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Backup excluído com sucesso."

#: inc/backup.php:102
msgid "Ok"
msgstr "OK"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "DELETAR ARQUIVOS"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Tem certeza que deseja excluir este backup?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Cancelar"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "confirme"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RESTAURAR ARQUIVOS"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Tem certeza que deseja restaurar este backup?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Última mensagem de registro"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "O backup aparentemente foi bem-sucedido e agora está completo."

#: inc/backup.php:171
msgid "No log message"
msgstr "Sem mensagem de log"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Backup (s) existente (s)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Data de Backup"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Dados de backup (clique para baixar)"

#: inc/backup.php:190
msgid "Action"
msgstr "Açao"

#: inc/backup.php:210
msgid "Today"
msgstr "Hoje"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restaurar"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Excluir"

#: inc/backup.php:241
msgid "View Log"
msgstr "Ver Log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Atualmente nenhum (s) backup (s) encontrado (s)."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Ações após backup (s) selecionado (s)"

#: inc/backup.php:251
msgid "Select All"
msgstr "Selecionar tudo"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deselecionar"

#: inc/backup.php:254
msgid "Note:"
msgstr "Observação:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Os arquivos de backup estarão em"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Contribuição do gerenciador de arquivos WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nota: Estas são capturas de tela de demonstração. Adquira o File Manager pro "
"para funções de Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Clique para comprar PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Compre PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Editar Arquivos de Logs"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Baixar registros de arquivos"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Fazer upload de registros de arquivos"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Configurações salvas."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Descartar essa notificação."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Você não fez nenhuma alteração para ser salvo."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Caminho de raiz pública"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Caminho raiz do gerenciador de arquivos, você pode alterar de acordo com sua "
"escolha."

#: inc/root.php:59
msgid "Default:"
msgstr "Padrão:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Por favor, mude isso com cuidado, o caminho errado pode fazer com que o "
"plugin do gerenciador de arquivos caia."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Ativar Lixo?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Depois de habilitar a lixeira, seus arquivos irão para a pasta da lixeira."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Ativar upload de arquivos para biblioteca de mídia?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Depois de habilitar isso, todos os arquivos irão para a biblioteca de mídia."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Tamanho máximo permitido no momento da restauração do backup do banco de "
"dados."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Aumente o valor do campo se estiver recebendo uma mensagem de erro no "
"momento da restauração do backup."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Salvar alterações"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Configurações - Geral"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nota: esta é apenas uma captura de tela de demonstração. Para obter as "
"configurações, compre nossa versão profissional."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Aqui, o administrador pode dar acesso às funções do usuário para usar o "
"gerenciador de arquivos. O administrador pode definir a pasta de acesso "
"padrão e também controlar o tamanho de upload do gerenciador de arquivos."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Configurações - editor de código"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"O Gerenciador de arquivos possui um editor de código com vários temas. Você "
"pode selecionar qualquer tema para o editor de código. Ele será exibido "
"quando você editar qualquer arquivo. Além disso, você pode permitir o modo "
"de tela cheia do editor de código."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Visualização do editor de código"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Configurações - Restrições do usuário"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"O administrador pode restringir as ações de qualquer usuário. Também oculta "
"arquivos e pastas e pode definir diferentes - caminhos de pastas diferentes "
"para usuários diferentes."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Configurações - Restrições de função do usuário"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"O administrador pode restringir as ações de qualquer função de usuário. "
"Também oculta arquivos e pastas e pode definir diferentes - caminhos de "
"pastas diferentes para funções de usuários diferentes."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Gerenciador de Arquivos - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "USAR:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Ele mostrará o gerenciador de arquivos no front-end. Você pode controlar "
"todas as configurações nas configurações do gerenciador de arquivos. Ele "
"funcionará da mesma forma que o WP File Manager de back-end."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Ele mostrará o gerenciador de arquivos no front-end. Mas apenas o "
"Administrador pode acessá-lo e controlará as configurações do gerenciador de "
"arquivos."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parâmetros:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Ele permitirá que todas as funções acessem o gerenciador de arquivos no "
"front-end ou você pode usar simplesmente para funções de usuário "
"específicas, como allowed_roles=\"editor,author\" (separado por vírgula (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Aqui \"teste\" é o nome da pasta que está localizada no diretório raiz, ou "
"você pode fornecer o caminho para subpastas como \"wp-content/plugins\". Se "
"deixar em branco ou vazio, ele acessará todas as pastas no diretório raiz. "
"Padrão: diretório raiz"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"para acesso a permissões de gravação de arquivos, observe: true/false, "
"padrão: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"para acesso à permissão de leitura de arquivos, observe: true/false, padrão: "
"true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"ele vai esconder mencionado aqui. Nota: separados por vírgula(,). Padrão: "
"Nulo"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Ele irá bloquear mencionado entre vírgulas. você pode bloquear mais como \"."
"php,.css,.js\" etc. Padrão: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* para todas as operações e para permitir alguma operação, você pode "
"mencionar o nome da operação como, allowed_operations=\"upload,download\". "
"Nota: separados por vírgula(,). Predefinição: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lista de operações de arquivo:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Criar diretório ou pasta"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Criar arquivo"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Renomear um arquivo ou pasta"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplicar ou clonar uma pasta ou arquivo"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Cole um arquivo ou pasta"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "banimento"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Para fazer um arquivo ou zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extrair arquivo ou arquivo compactado"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copiar arquivos ou pastas"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Simples recorte um arquivo ou pasta"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Editar um arquivo"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Remover ou excluir arquivos e pastas"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Baixar arquivos"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Fazer upload de arquivos"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Pesquisar coisas"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informação do arquivo"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Ajuda"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"->  Ele irá banir usuários específicos apenas colocando seus ids separados "
"por vírgulas (,). Se o usuário for Ban, então ele não será capaz de acessar "
"o gerenciador de arquivos wp no front end."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Visualização da IU do gerenciador de arquivos. Padrão: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Arquivo modificado ou Criar formato de data. Padrão: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Idioma do gerenciador de arquivos. Padrão: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema do gerenciador de arquivos. Padrão: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Gerenciador de arquivos - Propriedades do sistema"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versão PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Tamanho máximo de upload de arquivo (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Tamanho máximo de upload de arquivo da postagem (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Limite de memória (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Tempo limite (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Navegador e sistema operacional (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Mude o tema aqui:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Padrão"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Escura"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Luz"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "cinza"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Bem-vindo ao gerenciador de arquivos"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Adoramos fazer novos amigos! Inscreva-se abaixo e nós prometemos\n"
"    mantê-lo atualizado com nossos novos plug-ins, atualizações,\n"
"    promoções incríveis e algumas ofertas especiais."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Por favor, insira o primeiro nome."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Digite o sobrenome."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Digite o endereço de e-mail."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verificar"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Não, obrigado"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Termos de serviço"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Política de Privacidade"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Salvando ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Backup não encontrado!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Backup removido com sucesso!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nada selecionado para backup</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Problema de segurança. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Backup de banco de dados feito. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Não foi possível criar o backup do banco "
#~ "de dados. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Backup de plug-ins feito. </span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Falha no backup dos plug-ins. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Backup de temas concluído. </span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Falha no backup dos temas. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Backup de uploads concluído. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Falha no backup dos uploads. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Outros backups feitos. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Outros backups falhou. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Tudo Concluído </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Imagem"

#~ msgid "of"
#~ msgstr "de"

#~ msgid "Close"
#~ msgstr "Perto"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Este recurso requer frames embutidos. Você desativou os iframes ou seu "
#~ "navegador não os suporta."

#~ msgid "Theme Editor"
#~ msgstr "Editor de Tema"

#~ msgid "Plugin Editor"
#~ msgstr "Editor de Plugin"

#~ msgid "Access Control"
#~ msgstr "Controle de acesso"

#~ msgid "Notify Me"
#~ msgstr "Me avise"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "o idioma foi baixado com sucesso."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "ਭਾਸ਼ਾ ਫੋਲਡਰ ਡਾlaਨਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ."

#~ msgid "Security token expired!"
#~ msgstr "Token de segurança expirado!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "o idioma foi baixado com sucesso."

#~ msgid "Currently language "
#~ msgstr "Idioma atual "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " não disponível. Clique no link do idioma de solicitação."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr ""
#~ "Você não tem permissões suficientes para editar plug-ins para este site."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Não há plug-ins instalados neste site."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Não há temas instalados neste site."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\"> Digite o nome da pasta! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Digite o nome do arquivo! </p>"

#~ msgid "Open"
#~ msgstr "Abrir"

#~ msgid "Preview"
#~ msgstr "Antevisão"

#~ msgid "Edit"
#~ msgstr "Editar"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Tem certeza de que deseja abortar o envio do arquivo?"

#~ msgid "File renamed successfully."
#~ msgstr "Arquivo renomeado com sucesso."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Tem certeza que deseja excluir a pasta?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Pasta excluída com sucesso."

#~ msgid "File deleted successfully."
#~ msgstr "Arquivo excluído com sucesso."

#~ msgid "Folder renamed successfully."
#~ msgstr "Pasta renomeada com sucesso."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Não permitido mais de 30 caracteres.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Pedido inválido!"

#~ msgid "No change in file!"
#~ msgstr "Nenhuma mudança no arquivo!"

#~ msgid "File saved successfully!"
#~ msgstr "Arquivo salvo com sucesso!"

#~ msgid "File not saved!"
#~ msgstr "Arquivo não salvo!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Não foi possível verificar o token de segurança!"

#~ msgid "Folder created successfully!"
#~ msgstr "Pasta criada com sucesso!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Este formato de pasta não pode ser carregado por wordpress!"

#~ msgid "Folder already exists!"
#~ msgstr "A pasta já existe!"

#~ msgid "File created successfully!"
#~ msgstr "Arquivo criado com sucesso!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Esta extensão de arquivo não tem permissão para criar!"

#~ msgid "File already exists!"
#~ msgstr "O arquivo já existe!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Por favor, insira uma extensão de arquivo válida!"

#~ msgid "Folder does not exists!"
#~ msgstr "A pasta não existe!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Pasta excluída com sucesso!"

#~ msgid "File deleted successfully!"
#~ msgstr "Arquivo excluído com sucesso!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "Esta extensão de arquivo não é permitida para upload por wordpress!"

#~ msgid " already exists"
#~ msgstr " Já existe"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Arquivo carregado com sucesso: o caminho do arquivo carregado é "

#~ msgid "No file selected"
#~ msgstr "Nenhum arquivo selecionado"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Incapaz de renomear o arquivo! Tente novamente."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Pasta renomeada com sucesso!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Por favor, insira o nome correto da pasta"

#~ msgid "How can we help?"
#~ msgstr "Como podemos ajudar?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr ""
#~ "Recursos de aprendizagem, suporte profissional e ajuda especializada."

#~ msgid "Documentation"
#~ msgstr "Documentação"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Encontre respostas rapidamente em nossa documentação abrangente."

#~ msgid "Learn More"
#~ msgstr "Saber mais"

#~ msgid "Contact Us"
#~ msgstr "Contate-Nos"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr ""
#~ "Envie um tíquete de suporte para obter respostas sobre suas dúvidas."

#~ msgid "Request a Feature"
#~ msgstr "Solicite um recurso"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "iga-nos o que deseja e irá adicioná-lo ao nosso roteiro."

#~ msgid "Tell us what you think!"
#~ msgstr "Nos diga o que você acha!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Avalie e dê-nos uma revisão no Wordpress!"

#~ msgid "Leave a Review"
#~ msgstr "Deixe um comentário"

#~ msgid "Update"
#~ msgstr "Atualizar"

#~ msgid "Click here to install/update "
#~ msgstr "Clique aqui para instalar / atualizar "

#~ msgid " language translation for Theme Editor."
#~ msgstr " tradução de idioma para o Theme Editor."

#~ msgid "Installed"
#~ msgstr "Instalado"

#~ msgid "English is the default language of Theme Editor. "
#~ msgstr "Inglês é o idioma padrão do Theme Editor. "

#~ msgid "Request "
#~ msgstr "Solicitação"

#~ msgid "Click here to request"
#~ msgstr "Clique aqui para solicitar"

#~ msgid "language translation for Theme Editor"
#~ msgstr "tradução de linguagem para Theme Editor"

#~ msgid "Theme Editor Language:"
#~ msgstr "Linguagem do editor de temas:"

#~ msgid " language"
#~ msgstr " língua"

#~ msgid "Available languages"
#~ msgstr "Idiomas disponíveis"

#~ msgid "Click here to download all available languages."
#~ msgstr "Clique aqui para baixar todos os idiomas disponíveis."

#~ msgid "Request a language"
#~ msgstr "Solicite um idioma"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Diga-nos qual idioma você deseja adicionar."

#~ msgid "Contact us"
#~ msgstr "Contate-Nos"

#~ msgid "Notifications"
#~ msgstr "Notificações"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> Observação: esta é apenas uma captura de tela. Compre a versão "
#~ "PRO para este recurso. </strong>"

#~ msgid "Permissions"
#~ msgstr "Permissões"

#~ msgid "Edit Plugin"
#~ msgstr "Editar Plugin"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Este plug-in está ativado no momento! </strong> Aviso: Não é "
#~ "recomendado fazer alterações nos plug-ins ativos. Se suas alterações "
#~ "causarem um erro fatal, o plugin será automaticamente desativado."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Editando <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (ativo)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Navegando <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (inativo)"

#~ msgid "Update File"
#~ msgstr "Atualizar arquivo"

#~ msgid "Download Plugin"
#~ msgstr "Baixe o plugin"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Você precisa tornar este arquivo gravável antes de salvar suas "
#~ "alterações. Consulte <a href=\"https://wordpress.org/support/article/"
#~ "changing-file-permissions/\" target=\"_blank\"> o Codex </a> para obter "
#~ "mais informações."

#~ msgid "Select plugin to edit:"
#~ msgstr "Selecione o plugin para editar:"

#~ msgid "Create Folder and File"
#~ msgstr "Criar pasta e arquivo"

#~ msgid "Create"
#~ msgstr "Crio"

#~ msgid "Remove Folder and File"
#~ msgstr "Remover pasta e arquivo"

#~ msgid "Remove "
#~ msgstr "Remover"

#~ msgid "To"
#~ msgstr "Para"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Opcional: subdiretório"

#~ msgid "Choose File "
#~ msgstr "Escolher arquivo"

#~ msgid "No file Chosen "
#~ msgstr "Nenhum arquivo selecionado "

#~ msgid "Create a New Folder: "
#~ msgstr "Criar uma nova pasta:"

#~ msgid "New folder will be created in: "
#~ msgstr "A nova pasta será criada em:"

#~ msgid "New Folder Name: "
#~ msgstr "Novo nome da pasta:"

#~ msgid "Create New Folder"
#~ msgstr "Criar nova pasta"

#~ msgid "Create a New File: "
#~ msgstr "Crie um novo arquivo:"

#~ msgid "New File will be created in: "
#~ msgstr "O novo arquivo será criado em:"

#~ msgid "New File Name: "
#~ msgstr "Novo nome de arquivo:"

#~ msgid "Create New File"
#~ msgstr "Criar novo arquivo"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr "Aviso: tenha cuidado antes de remover qualquer pasta ou arquivo."

#~ msgid "Current Theme Path: "
#~ msgstr "Caminho do tema atual:"

#~ msgid "Remove Folder: "
#~ msgstr "Remover pasta:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Caminho da pasta que você deseja remover: "

#~ msgid "Remove Folder"
#~ msgstr "Remover pasta"

#~ msgid "Remove File: "
#~ msgstr "Remover arquivo:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Caminho do arquivo que você deseja remover: "

#~ msgid "Remove File"
#~ msgstr "Remover arquivo"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Por favor insira o endereço de e-mail válido."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr "Aviso: tenha cuidado antes de renomear qualquer pasta ou arquivo."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "O arquivo / pasta será renomeado em:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Renomear arquivo / pasta:"

#~ msgid "Rename File"
#~ msgstr "Renomear arquivo"

#~ msgid "Follow us"
#~ msgstr "Siga-nos"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Editor de temas do Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Theme Editor Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Editor de temas no Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Editor de Tema Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Theme Editor Youtube"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Vá para o site ThemeEditor"

#~ msgid "Theme Editor Links"
#~ msgstr "Links do Editor de Tema"

#~ msgid "Child Theme"
#~ msgstr "Tema Infantil"

#~ msgid "Child Theme Permissions"
#~ msgstr "Permissões de tema filho"

#~ msgid " is not available. Please click "
#~ msgstr " não está disponível. Por favor clique "

#~ msgid "here"
#~ msgstr "aqui"

#~ msgid "to request language."
#~ msgstr "para solicitar o idioma."

#~ msgid "Click"
#~ msgstr "Clique"

#~ msgid "to install "
#~ msgstr "para instalar"

#~ msgid " language translation  for Theme Editor."
#~ msgstr " tradução de idioma para o Theme Editor."

#~ msgid "Success: Settings Saved!"
#~ msgstr "Sucesso: configurações salvas!"

#~ msgid "No changes have been made to save."
#~ msgstr "Nenhuma alteração foi feita para salvar."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Habilitar Editor de Tema para Temas"

#~ msgid "Yes"
#~ msgstr "sim"

#~ msgid "No"
#~ msgstr "Não"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Isso irá ativar / desativar o editor de tema.<br/><strong class=\"defs"
#~ "\">Padrão: </strong>Sim"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Desativar Editor de temas padrão do WordPress?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Isso irá ativar / desativar o editor de tema padrão.<br/><strong class="
#~ "\"defs\">Padrão: </strong>Sim"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Habilitar Editor de Plug-in para Plug-in"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Isso irá ativar / desativar o editor de plugins.<br/><strong class=\"defs"
#~ "\">Padrão: </strong>Sim"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Desativar Editor de Plug-in do WordPress padrão?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Isso irá ativar / desativar o editor de plugin padrão.<br/><strong class="
#~ "\"defs\">Padrão: </strong>Sim"

#~ msgid "Code Editor"
#~ msgstr "Editor de Código"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Permite que você selecione um tema para o editor de temas.<br/><strong "
#~ "class=\"defs\">Padrão: </strong> Cobalto"

#~ msgid "Edit Themes"
#~ msgstr "Editar Temas"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Este tema está ativado no momento! </strong> Aviso: Não é "
#~ "recomendável fazer alterações nos temas ativos."

#~ msgid "Editing"
#~ msgstr "Editando"

#~ msgid "Browsing"
#~ msgstr "Navegando"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Atualizar arquivo e tentar reativar"

#~ msgid "Download Theme"
#~ msgstr "Baixar tema"

#~ msgid "Select theme to edit:"
#~ msgstr "Selecione o tema para editar:"

#~ msgid "Theme Files"
#~ msgstr "Arquivos de tema"

#~ msgid "Choose File"
#~ msgstr "Escolher arquivo"

#~ msgid "No File Chosen"
#~ msgstr "Nenhum arquivo selecionado"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr "Aviso: tenha cuidado antes de remover qualquer pasta ou arquivo."

#~ msgid "Child Theme Permission"
#~ msgstr "Permissão de tema infantil"

#~ msgid "Translations"
#~ msgstr "Traduções"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr ""
#~ "criar, editar, fazer upload, baixar, excluir arquivos e pastas de temas"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Você não tem permissão para criar um novo tema filho."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr ""
#~ "Você não tem permissão para alterar a configuração do tema filho "
#~ "existente."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Você não tem permissão para duplicar o tema filho."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "Você não tem permissão para acessar o menu de consulta / seletor."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "Você não tem permissão para acessar as fontes da web e o menu CSS."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Você não tem permissão para copiar arquivos."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Você não tem permissão para excluir arquivos secundários."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr ""
#~ "Você não tem permissão para fazer upload de uma nova captura de tela."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Você não tem permissão para fazer upload de novas imagens."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Você não tem permissão para excluir imagens."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Você não tem permissão para baixar o arquivo."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Você não tem permissão para criar um novo diretório."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Você não tem permissão para criar um novo arquivo."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Você não tem permissão para atualizar o arquivo!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Você não tem permissão para criar pasta!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Você não tem permissão para excluir a pasta!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Você não tem permissão para excluir o arquivo!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Você não tem permissão para enviar o arquivo!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Permissões de tema infantil salvas com sucesso."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "Não há alterações feitas nas permissões do tema filho a serem salvas."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Mensagem de permissão do tema infantil salva com sucesso."

#~ msgid "Users"
#~ msgstr "Comercial"

#~ msgid "Create New Child Theme"
#~ msgstr "Criar Novo Tema Infantil"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Configurar Temas Filhos Existentes"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Duplicar temas filho"

#~ msgid "Query/ Selector"
#~ msgstr "Consulta / Seletor"

#~ msgid "Web/font"
#~ msgstr "Web / fonte"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Copiar arquivo tema pai para tema filho"

#~ msgid "Deleted Child Files"
#~ msgstr "Arquivos Filhos Deletados"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Carregar nova sessão de tela"

#~ msgid "Upload New Images"
#~ msgstr "Carregar novas imagens"

#~ msgid "Deleted Images "
#~ msgstr "Imagens excluídas"

#~ msgid "Download Images"
#~ msgstr "Baixar imagens"

#~ msgid "Create New Directory"
#~ msgstr "Criar novo diretório"

#~ msgid "Create New Files"
#~ msgstr "Criar novos arquivos"

#~ msgid "Export Theme"
#~ msgstr "Exportar tema"

#~ msgid "User Roles"
#~ msgstr "Funções do usuário"

#~ msgid "Query/ Seletor"
#~ msgstr "Consulta / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Imagens excluídas"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Mensagem de permissão do tema infantil"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Você não tem permissão para criar um novo tema filho."

#~ msgid "Query/Selector"
#~ msgstr "Consulta / Seletor"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "Você não tem permissão para acessar o menu de consulta / seletor."

#~ msgid " Web/font"
#~ msgstr "Web / fonte"

#~ msgid " Export Theme"
#~ msgstr "Exportar tema"

#~ msgid "Save Child Theme Message"
#~ msgstr "Mensagem de permissão do tema infantil"

#~ msgid "Please select atleast one image."
#~ msgstr "Selecione pelo menos uma imagem."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Você não tem permissão para excluir imagens."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Você não tem permissão para fazer upload de novas imagens."

#~ msgid "You don't have the permission to download."
#~ msgstr "Você não tem permissão para fazer download."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Você não tem permissão para criar um novo diretório."

#~ msgid "Please choose file type."
#~ msgstr "Escolha o tipo de arquivo."

#~ msgid "Please enter file name."
#~ msgstr "Por favor, insira o nome do arquivo."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Você não tem permissão para criar um novo arquivo."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr ""
#~ "Tem certeza de que deseja copiar os arquivos principais para o tema "
#~ "secundário?"

#~ msgid "Please select file(s)."
#~ msgstr "Selecione o (s) arquivo (s)."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Você não tem permissão para copiar arquivos."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Tem certeza que deseja excluir o (s) arquivo (s) selecionado (s)?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Você não tem permissão para excluir arquivos secundários."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr ""
#~ "Você não tem permissão para fazer upload de uma nova captura de tela."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Você não tem permissão para exportar o tema."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "Você não tem permissão para acessar o menu Consulta / Seletor."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Você não tem permissão para acessar o menu Web Fonts e CSS."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Tema de análise atual:"

#~ msgid "Preview Theme"
#~ msgstr "Pré-visualizar Tema"

#~ msgid "Parent Themes"
#~ msgstr "Temas Pais"

#~ msgid "Child Themes"
#~ msgstr "Temas Infantis"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Erro: configurações não salvas!"

#~ msgid "Email List"
#~ msgstr "Lista de Emails"

#~ msgid "Email Address"
#~ msgstr "Endereço de e-mail"

#~ msgid "Enter Email"
#~ msgstr "Digite o e-mail"

#~ msgid "Add More"
#~ msgstr "Adicione mais"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Este endereço é usado para fins de notificação, como notificação de "
#~ "tema / plugin."

#~ msgid "Theme Notification"
#~ msgstr "Notificação de tema"

#~ msgid "Notify on file update"
#~ msgstr "Notificar sobre atualização de arquivo"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Notificação sobre a edição ou atualização do arquivo de tema. <br/> "
#~ "<strong> Padrão: </strong> Sim"

#~ msgid "Notify on files download"
#~ msgstr "Notificar sobre download de arquivos"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Notificação sobre download de edição de arquivo de tema. <br/> <strong> "
#~ "Padrão: </strong> Sim"

#~ msgid "Notify on theme download"
#~ msgstr "Notificar sobre o download do tema"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Notificação sobre o download do tema. <br/><strong> Padrão: </strong> Sim"

#~ msgid "Notify on files upload"
#~ msgstr "Notificar sobre upload de arquivos"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Notificação sobre upload de arquivos no tema. <br/><strong> Padrão: </"
#~ "strong> Sim"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Notificar ao criar novo arquivo / pasta"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Notificação sobre a criação de um novo arquivo / pasta no tema. <br/"
#~ "><strong> Padrão: </strong> Sim"

#~ msgid "Notify on delete"
#~ msgstr "Notificar na exclusão"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Notificar ao excluir qualquer arquivo e pasta nos temas. <br/><strong> "
#~ "Padrão: </strong> Sim"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Notificar ao criar um novo tema filho"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Notifique sobre os temas Criar Novos Filhos. <br/><strong> Padrão: </"
#~ "strong> Sim"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Notificar sobre a configuração de temas filhos existentes"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Notificar sobre a configuração de temas Filhos Existentes. <br/><strong> "
#~ "Padrão: </strong> Sim"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Notificar sobre temas-filho duplicados"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Notificar ao configurar temas filho existentes. <br/><strong> Padrão: </"
#~ "strong> Sim"

#~ msgid "Plugin Notification"
#~ msgstr "Notificação de plug-in"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Notificação sobre a edição ou atualização do arquivo de tema. <br/"
#~ "><strong> Padrão: </strong> sim"

#~ msgid "Notify on Plugin download"
#~ msgstr "Notificar no download do plug-in"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Notificação no download do plug-in. <br/><strong> Padrão: </strong> Sim"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Notificação sobre upload de arquivo no tema. <br/><strong> Padrão: </"
#~ "strong> Sim"

#~ msgid "Permission saved successfully."
#~ msgstr "Permissão salva com sucesso."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr ""
#~ "Ops! A permissão não pode ser salva porque você não fez nenhuma alteração."

#~ msgid "Allowed User Roles"
#~ msgstr "Funções de usuário permitidas"

#~ msgid "Update theme files"
#~ msgstr "Atualizar arquivos de tema"

#~ msgid "Create new theme files and folders"
#~ msgstr "Crie novos arquivos e pastas de tema"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Faça upload de novos arquivos e pastas de tema"

#~ msgid "Download theme files"
#~ msgstr "Baixar arquivos de tema"

#~ msgid "Download theme"
#~ msgstr "Baixar tema"

#~ msgid "Update plugin files"
#~ msgstr "Atualizar arquivos de plug-in"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Crie novos arquivos e pastas de plug-in"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Faça upload de novos arquivos e pastas de plug-in"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Excluir arquivos e pastas de plug-ins"

#~ msgid "Download plugin files"
#~ msgstr "Baixar arquivos de plugin"

#~ msgid "Download plugin"
#~ msgstr "Baixar plugin"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Theme Editor PRO - Por favor, adicione os detalhes do seu pedido abaixo. "
#~ "Se não <a href=\"https://themeeditor.pro/product/theme-editor/\" target="
#~ "\"_blank\" class=\"page-title-action button button-primary\" title="
#~ "\"click to buy Licence Key\">Compre agora </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "ID DO PEDIDO (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Insira o ID do pedido"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Verifique seu e-mail para obter o ID do pedido."

#~ msgid "LICENCE KEY *"
#~ msgstr "CHAVE DE LICENÇA *"

#~ msgid "Enter License Key"
#~ msgstr "Insira chave da licença"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Verifique seu e-mail para obter a chave de licença."

#~ msgid "Click To Verify"
#~ msgstr "Clique para verificar"

#~ msgid "URL/None"
#~ msgstr "URL / nenhum"

#~ msgid "Origin"
#~ msgstr "Origem"

#~ msgid "Color 1"
#~ msgstr "Cor 1"

#~ msgid "Color 2"
#~ msgstr "Cor 2"

#~ msgid "Width/None"
#~ msgstr "Largura / Nenhum"

#~ msgid "Style"
#~ msgstr "Estilo"

#~ msgid "Color"
#~ msgstr "Cor"

#~ msgid "Configure Child Theme"
#~ msgstr "Configurar Tema Infantil"

#~ msgid "Duplicate Child theme"
#~ msgstr "Duplicar temas filho"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Depois de analisar, este tema está funcionando bem. Você pode usar isso "
#~ "como seu tema infantil."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr ""
#~ "Depois de analisar, este tema filho parece estar funcionando corretamente."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Este tema carrega folhas de estilo adicionais após o arquivo <code> style."
#~ "css </code>:"

#~ msgid "The theme"
#~ msgstr "Nome do Tema"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr ""
#~ "não pôde ser analisado porque a visualização não foi renderizada "
#~ "corretamente"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Este tema infantil não foi configurado para este plugin"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "O Configurador faz modificações significativas no tema filho, incluindo "
#~ "alterações na folha de estilo e funções adicionais de php. Considere usar "
#~ "a opção de tema filho DUPLICAR (consulte a etapa 1, acima) e manter o "
#~ "original como backup."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "Todas as informações de webfonts / css foram salvas com sucesso."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Insira o valor para webfonts / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Você não tem permissão para atualizar webfonts / css."

#~ msgid "All information saved successfully."
#~ msgstr "Todas as informações foram salvas com sucesso."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Tem certeza que deseja RESET? Isso irá destruir qualquer trabalho que "
#~ "você tenha feito no Configurador."

#~ msgid "Selectors"
#~ msgstr "Seletores"

#~ msgid "Edit Selector"
#~ msgstr "Editar Seletor"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "A folha de estilo não pode ser exibida."

#~ msgid "(Child Only)"
#~ msgstr "(Apenas para crianças)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Insira um tema infantil válido."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Insira um nome válido para o tema infantil."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> existe. Insira um tema infantil diferente"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "A página não pôde ser carregada corretamente."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Bibliotecas jQuery conflitantes ou desatualizadas foram carregadas por "
#~ "outro plug-in:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr "Desativar ou substituir plug-ins pode resolver esse problema."

#~ msgid "No result found for the selection."
#~ msgstr "Nenhum resultado encontrado para a seleção."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sPor que estou vendo isso?%s"

#~ msgid "Parent / Child"
#~ msgstr "Pai / Filho"

#~ msgid "Select an action:"
#~ msgstr "Selecione uma ação:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Crie um novo tema infantil"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Crie um novo Tema Infantil; configure um Tema Infantil existente"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Duplicar um tema filho existente"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Selecione um tema pai:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Analisar o tema pai"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Clique em \"Analisar\" para determinar as dependências da folha de estilo "
#~ "e outros problemas potenciais."

#~ msgid "Analyze"
#~ msgstr "Analisar"

#~ msgid "Select a Child Theme:"
#~ msgstr "Selecione um tema infantil:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Analisar o tema infantil"

#~ msgid "Name the new theme directory:"
#~ msgstr "Nomeie o novo diretório de tema:"

#~ msgid "Directory Name"
#~ msgstr "Nome do diretório"

#~ msgid "NOTE:"
#~ msgstr "NOTA:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Este NÃO é o nome do tema filho. Você pode personalizar o nome, a "
#~ "descrição, etc. na etapa 7 abaixo."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Verifique o diretório do tema filho:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Apenas para verificação (você não pode modificar o diretório de um Tema "
#~ "filho existente)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Selecione onde salvar os novos estilos:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Folha de estilo primária (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Salve novos estilos personalizados diretamente na folha de estilo "
#~ "principal do Tema filho, substituindo os valores existentes. A folha de "
#~ "estilo principal será carregada na ordem definida pelo tema."

#~ msgid "Separate Stylesheet"
#~ msgstr "Folha de estilo separada"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Salve novos estilos personalizados em uma folha de estilo separada e "
#~ "combine quaisquer estilos de tema filho existentes com o pai para formar "
#~ "a linha de base. Selecione esta opção se desejar preservar os estilos de "
#~ "tema filho existentes em vez de substituí-los. Esta opção também permite "
#~ "que você personalize as folhas de estilo que carregam após a folha de "
#~ "estilo principal."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Selecione o manuseio da folha de estilo do tema pai:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Use a fila de estilo do WordPress."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "Deixe o Configurador determinar as ações e dependências apropriadas e "
#~ "atualize o arquivo de funções automaticamente."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "Use <code> @import </code> na folha de estilo do tema filho."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Use esta opção apenas se a folha de estilo pai não puder ser carregada "
#~ "usando a fila de estilo do WordPress. Usar <code> @import </code> não é "
#~ "recomendado."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Não adicione nenhuma manipulação de folha de estilo pai."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Selecione esta opção se este tema já manipular a folha de estilo do tema "
#~ "pai ou se o arquivo <code> style.css </code> do tema pai não for usado "
#~ "para sua aparência."

#~ msgid "Advanced handling options"
#~ msgstr "Opções avançadas de manuseio"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Ignore as folhas de estilo do tema pai."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Selecione esta opção se este tema já manipular a folha de estilo do tema "
#~ "pai ou se o arquivo style.css do tema pai não for usado para sua "
#~ "aparência."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Repare o modelo de cabeçalho no tema filho."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Deixe o Configurador (tente) resolver quaisquer problemas de folha de "
#~ "estilo listados acima. Isso pode resolver muitos problemas comuns, mas "
#~ "não todos."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Remover dependências da folha de estilo"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Por padrão, a ordem das folhas de estilo carregadas antes da folha de "
#~ "estilo principal é preservada tratando-as como dependências. Em alguns "
#~ "casos, as folhas de estilo são detectadas na visualização e não são "
#~ "usadas em todo o site. Se necessário, a dependência pode ser removida "
#~ "para folhas de estilo específicas abaixo."

#~ msgid "Child Theme Name"
#~ msgstr "Nome do tema infantil"

#~ msgid "Theme Name"
#~ msgstr "Nome do Tema"

#~ msgid "Theme Website"
#~ msgstr "Site do tema"

#~ msgid "Author"
#~ msgstr "Autor"

#~ msgid "Author Website"
#~ msgstr "Site do autor"

#~ msgid "Theme Description"
#~ msgstr "Descrição do tema"

#~ msgid "Description"
#~ msgstr "Descrição"

#~ msgid "Tags"
#~ msgstr "Tag"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Copie menus, widgets e outras configurações do personalizador do tema pai "
#~ "para o tema filho:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Esta opção substitui os menus, widgets e outras configurações do "
#~ "Customizer existentes do tema filho pelos do tema pai. Você só deve "
#~ "precisar usar esta opção na primeira vez que configurar um Tema filho."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Clique para executar o Configurador:"

#~ msgid "Query / Selector"
#~ msgstr "Consulta / Seletor"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "Para encontrar seletores específicos nos blocos de consulta @media, "
#~ "primeiro escolha a consulta e, em seguida, o seletor. Use a consulta "
#~ "\"base\" para editar todos os outros seletores."

#~ msgid "@media Query"
#~ msgstr "@media Query"

#~ msgid "( or \"base\" )"
#~ msgstr "(ou \"base\")"

#~ msgid "Selector"
#~ msgstr "Seletor"

#~ msgid "Query/Selector Action"
#~ msgstr "Consulta / Ação do Seletor"

#~ msgid "Save Child Values"
#~ msgstr "Salvar valores infantis"

#~ msgid "Delete Child Values"
#~ msgstr "Excluir valores filho"

#~ msgid "Property"
#~ msgstr "Propriedade"

#~ msgid "Baseline Value"
#~ msgstr "Valor de linha de base"

#~ msgid "Child Value"
#~ msgstr "Valor infantil"

#~ msgid "error"
#~ msgstr "erro"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "Você não tem permissão para configurar temas filho."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s não existe. Selecione um tema pai válido."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "O arquivo de funções é necessário e não pode ser excluído."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Selecione um tema pai válido."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Selecione um tema infantil válido."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Insira um nome de diretório de tema infantil válido."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong>existe. Insira um nome de modelo de tema infantil "
#~ "diferente."

#~ msgid "Your theme directories are not writable."
#~ msgstr "Seus diretórios de tema não são graváveis."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Não foi possível atualizar o tema filho"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "Sua folha de estilo não é gravável."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "Uma tag PHP de fechamento foi detectada no arquivo de funções do tema "
#~ "filho, portanto a opção \"Manipulação da folha de estilo pai\" não foi "
#~ "configurada. Fechar o PHP no final do arquivo é desencorajado, pois pode "
#~ "causar cabeçalhos HTTP prematuros. Edite <code> functions.php </code> "
#~ "para remover a tag final <code>?&gt; </code> e clique em \"Gerar / "
#~ "reconstruir arquivos de tema filho\" novamente."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Não foi possível copiar o arquivo: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Não foi possível excluir o arquivo %s."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "não foi possível copiar %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "dir inválido: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Ocorreram erros ao redefinir as permissões."

#~ msgid "Could not upload file."
#~ msgstr "Não foi possível fazer upload do arquivo."

#~ msgid "Invalid theme root directory."
#~ msgstr "Diretório raiz de tema inválido."

#~ msgid "No writable temp directory."
#~ msgstr "Nenhum diretório temporário gravável."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Descompactar falhou -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Pacote falhou -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Número máximo de estilos excedido."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Erro ao mover o arquivo: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Não foi possível definir permissões de gravação."

#~ msgid "Error:"
#~ msgstr "Erro:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr "O tema filho da análise atual <strong>%s </strong> foi redefinido."

#~ msgid "Update Key saved successfully."
#~ msgstr "Chave de atualização salva com sucesso."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Arquivos de tema infantil modificados com sucesso."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "O tema filho <strong>%s </strong> foi gerado com sucesso."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Fontes da web e CSS"

#~ msgid "Parent Styles"
#~ msgstr "Estilos Pais"

#~ msgid "Child Styles"
#~ msgstr "Estilos Infantis"

#~ msgid "View Child Images"
#~ msgstr "Ver imagens de crianças"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Use <code> @import url ([path]); </code> para vincular folhas de estilo "
#~ "adicionais. Este plug-in usa a palavra-chave <code> @import </code> para "
#~ "identificá-los e convertê-los em tags <code> &lt;link&gt; </code>tag. "
#~ "<strong> Exemplo: </strong>"

#~ msgid "Save"
#~ msgstr "Salve"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr "Carregar imagem com o mesmo nome irá substituir a imagem existente."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Carregar nova imagem de tema infantil"

#~ msgid "Delete Selected Images"
#~ msgstr "Excluir imagens selecionadas"

#~ msgid "Create a New Directory"
#~ msgstr "Crie um novo diretório"

#~ msgid "New Directory will be created in"
#~ msgstr "Novo diretório será criado em"

#~ msgid "New Directory Name"
#~ msgstr "Novo nome de diretório"

#~ msgid "Create a New File"
#~ msgstr "Criar um novo arquivo"

#~ msgid "New File will be created in"
#~ msgstr "Novo arquivo será criado em"

#~ msgid "New File Name"
#~ msgstr "Novo nome de arquivo"

#~ msgid "File Type Extension"
#~ msgstr "Extensão de tipo de arquivo"

#~ msgid "Choose File Type"
#~ msgstr "Escolha o tipo de arquivo"

#~ msgid "PHP File"
#~ msgstr "Arquivo PHP"

#~ msgid "CSS File"
#~ msgstr "Arquivo CSS"

#~ msgid "JS File"
#~ msgstr "Arquivo JS"

#~ msgid "Text File"
#~ msgstr "Arquivo de texto"

#~ msgid "PHP File Type"
#~ msgstr "Tipo de arquivo PHP"

#~ msgid "Simple PHP File"
#~ msgstr "Arquivo PHP Simples"

#~ msgid "Wordpress Template File"
#~ msgstr "Arquivo de modelo do Wordpress"

#~ msgid "Template Name"
#~ msgstr "Nome do modelo"

#~ msgid "Parent Templates"
#~ msgstr "Modelos pai"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Copie os modelos PHP do tema pai selecionando-os aqui. O Configurator "
#~ "define um template como um arquivo Theme PHP sem funções ou classes PHP. "
#~ "Outros arquivos PHP não podem ser substituídos com segurança por um tema "
#~ "filho."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "CUIDADO: Se o seu tema filho estiver ativo, a versão do tema filho do "
#~ "arquivo será usada no lugar do pai imediatamente após a cópia."

#~ msgid "The "
#~ msgstr "O"

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "o arquivo é gerado separadamente e não pode ser copiado aqui."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Copiar selecionado para tema filho"

#~ msgid " Child Theme Files "
#~ msgstr "Arquivos de tema infantil"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Clique para editar os arquivos usando o Theme Editor"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Exclua os modelos de tema filho selecionando-os aqui."

#~ msgid "Delete Selected"
#~ msgstr "Apagar Selecionado"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Captura de tela do tema infantil"

#~ msgid "Upload New Screenshot"
#~ msgstr "Carregar nova captura de tela"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "A captura de tela do tema deve ter uma proporção de 4: 3 (por exemplo, "
#~ "880px x 660px) JPG, PNG ou GIF. Será renomeado"

#~ msgid "Screenshot"
#~ msgstr "Captura de tela"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Carregar nova imagem de tema infantil"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "As imagens do tema residem no diretório de imagens do seu tema filho e "
#~ "são destinadas apenas ao uso da folha de estilo. Use a Biblioteca de "
#~ "mídia para imagens de conteúdo."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Pré-visualizar o tema filho atual (análise atual)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Pré-visualizar o tema infantil atual"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Exportar tema filho como arquivo zip"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Clique em \"Exportar Zip\" para salvar um backup do tema filho carregado "
#~ "no momento. Você pode exportar qualquer um dos seus temas na guia Pai / "
#~ "Filho."

#~ msgid "Export Child Theme"
#~ msgstr "Exportar tema filho"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Arquivo (s) de tema infantil copiado (s) com sucesso!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr "O arquivo que você está tentando copiar dos modelos pais não existe"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "O arquivo que você está tentando copiar dos modelos principais já está "
#~ "presente nos arquivos do tema filho."

#~ msgid "Child "
#~ msgstr "Filho"

#~ msgid " and Parent "
#~ msgstr "e pai"

#~ msgid " directories doesn't exist!"
#~ msgstr "diretórios não existe!"

#~ msgid " directory doesn't exist!"
#~ msgstr "diretório não existe!"

#~ msgid "Parent "
#~ msgstr "Parent "

#~ msgid "Unknown error! "
#~ msgstr "Erro desconhecido!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Você não tem permissão para copiar os arquivos!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Todos os arquivos selecionados foram excluídos com sucesso!"

#~ msgid " does not exists!"
#~ msgstr "não existe!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Esta extensão de arquivo não pode ser carregada!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Imagem enviada com sucesso!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Há algum problema no upload da imagem!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Esta extensão de arquivo não pode ser carregada como imagem do wordpress!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Arquivo carregado com sucesso!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Os arquivos do tema filho não podem ser modificados."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Arquivo (s) excluído (s) com sucesso!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Você não tem permissão para excluir arquivo (s)!"

#~ msgid "Entered directory name already exists"
#~ msgstr "O nome do diretório inserido já existe"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Você não tem permissão para criar diretório!"

#~ msgid "Wordpress template file created"
#~ msgstr "Arquivo de modelo Wordpress criado"

#~ msgid "Wordpress template file not created"
#~ msgstr "Arquivo de modelo Wordpress não criado"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP criado arquivo com sucesso"

#~ msgid "PHP file not created"
#~ msgstr "Arquivo PHP não criado"

#~ msgid " file not created"
#~ msgstr "arquivo não criado"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Você não tem permissão para criar o arquivo!"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "A pasta de idiomas foi baixada."
languages/wp-file-manager-cs_CZ.mo000064400000042550147361034410013032 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&��(�<),�)H$*2m*D�*�*�*�+��+;H,K�,�,(�,#-$)-
N-\-l-(�-�-.�-"�-.%,.R.#Y.
}.
�.	�.�.�.�.�. �.,
/:/J/Q/)i/�/,�/
�/
�/�/�/0)010N0,_0�0�02�0
�0��0
�1!�1�1'�1?�1�?2323R3i3p3v3��4O5c5��5hI6��6�;7�78	8 838CD8<�8�8�8�89	39=9#X9
|9W�9|�9%\:&�:�:�:B�: �:;'/;-W;	�;
�;�;"�;!�;�;h<Oy<�<%�< �<%=+>=4j=
�=!�=�=�=*�= ">C>#K>o>x>�>�>�>�>)�>
�>�>? -?+N?z?�?)�?�?�?8�?+@,2@_@$@0�@	�@#�@AA
"A"-APA iA�A�A�A�A�ABB$B%DB)jB2�B�B�B�B0�B!(C�JC+D,IDIvD[�DKE}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 16:36+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: cs_CZ
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e;esc_attr__
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* pro všechny operace a pro povolení některých operací můžete uvést název operace jako like, allow_operations="upload,download". Poznámka: odděleno čárkou(,). Výchozí: *-> Zakáže konkrétní uživatele pouhým vložením jejich ID oddělených čárkami (,). Pokud je uživatel Ban, nebude mít přístup k správci souborů wp na klientském rozhraní.-> Téma Správce souborů. Výchozí: Light-> Soubor změněn nebo vytvořit formát data. Výchozí:: d M, Y h:i A-> Jazyk správce souborů. Výchozí: English(en)-> Zobrazení uživatelského rozhraní Filemanager. Výchozí: gridAkceAkce na vybrané zálohySprávce může omezit akce libovolného uživatele. Také skrýt soubory a složky a nastavit různé - různé cesty adresářů pro různé uživatele.Správce může omezit akce libovolného uživatele. Skrýt také soubory a složky a můžete nastavit různé - různé cesty adresářů pro různé role uživatelů.Po povolení koše přejdou vaše soubory do složky koše.Po povolení této možnosti všechny soubory přejdou do knihovny médií.Vše hotovoOpravdu chcete odebrat vybrané zálohy?Opravdu chcete tuto zálohu smazat?Opravdu chcete tuto zálohu obnovit?Datum zálohyZálohovat hnedMožnosti zálohování:Zálohování dat (kliknutím stáhnete)Záložní soubory budou podZálohování je spuštěno, počkejte prosímZáloha byla úspěšně smazána.Obnova zálohyZálohy byly úspěšně odstraněny!ZákazProhlížeč a OS (HTTP_USER_AGENT)Koupit PROKoupit ProzrušeníZměnit téma zde:Kliknutím zakoupíte PROZobrazení kódu editoruPotvrditZkopírujte soubory nebo složkyAktuálně nebyly nalezeny žádné zálohy.VYMAZAT SOUBORYTemnýZálohování databázeZálohování databáze provedeno k datu Záloha databáze provedena.Záloha databáze byla úspěšně obnovena.Výchozí:Výchozí:VymazatZrušit výběrZamítnout toto upozornění.DarovatStáhnout protokoly souborůStahujte souboryDuplikujte nebo klonujte složku nebo souborUpravit protokoly souborůUpravte souborPovolit nahrávání souborů do knihovny médií?Povolit koš?Chyba: Nelze obnovit zálohu, protože záloha databáze je velká. Zkuste prosím zvýšit Maximální povolenou velikost v nastavení předvoleb.již existujeExtrahujte archiv nebo soubor ZIPSprávce souborů - zkratkaSprávce souborů - vlastnosti systémuRoot Path File Manager, můžete změnit podle svého výběru.Správce souborů má editor kódů s více motivy. Můžete vybrat libovolné téma pro editor kódu. Zobrazí se při úpravě libovolného souboru. Také můžete povolit režim celoobrazovkového editoru kódu.Seznam operací se soubory:Soubor neexistuje ke stažení.Zálohování souborůŠedáPomocZde "test" je název složky, která se nachází v kořenovém adresáři, nebo můžete zadat cestu pro podsložky jako "wp-content/plugins". Pokud ponecháte prázdné nebo prázdné, přistoupí se ke všem složkám v kořenovém adresáři. Výchozí: Kořenový adresářZde admin může poskytnout přístup k uživatelským rolám pro použití filemanager. Správce může nastavit výchozí složku pro přístup a také řídit velikost souboru uploadmanager.Informace o souboruNeplatný bezpečnostní kód.Umožní všem rolím přistupovat ke správci souborů na frontendu nebo můžete jednoduše použít pro konkrétní uživatelské role, jako je allow_roles="editor,author" (odděleno čárkou(,))Bude zámek uvedený v čárkách. můžete zamknout více jako „.php,.css,.js“ atd. Výchozí: NullNa frontendu se zobrazí správce souborů. Přístup k němu má ale pouze správce a bude jej ovládat z nastavení správce souborů.Na frontendu se zobrazí správce souborů. Všechna nastavení můžete ovládat z nastavení správce souborů. Bude to fungovat stejně jako backend WP File Manager.Poslední zpráva protokoluSvětloProtokolyVytvořte adresář nebo složkuVytvořit souborMaximální povolená velikost v době obnovení zálohy databáze.Maximální velikost souboru nahrání (upload_max_filesize)Limit paměti (memory_limit)Chybí záložní ID.Chybějící typ parametru.Chybí požadované parametry.Ne, díkyŽádná zpráva protokoluNebyly nalezeny žádné protokoly!Poznámka:Poznámka: Toto jsou ukázkové screenshoty. Kupte si File Manager pro pro funkce Logs.Poznámka: Toto je pouze ukázkový snímek obrazovky. Chcete-li získat nastavení, zakupte si naši profesionální verzi.Pro zálohování nebylo vybráno nicPro zálohování nebylo vybráno nic.OKOKOstatní (Jakékoli jiné adresáře nalezené uvnitř wp-content)Ostatní zálohy hotové k datu Ostatní záloha provedena.Zálohování ostatních se nezdařilo.Záloha ostatních byla úspěšně obnovena.PHP verzeParametry:Vložte soubor nebo složkuZadejte prosím e-mailovou adresu.Zadejte prosím křestní jméno.Zadejte příjmení.Změňte to opatrně, nesprávná cesta může vést k tomu, že plugin správce souborů přejde dolů.Pokud se při obnově zálohy zobrazuje chybová zpráva, zvyšte hodnotu pole.PluginyZálohování pluginů hotovo k datu Záloha pluginů byla provedena.Zálohování pluginů se nezdařilo.Záloha pluginů byla úspěšně obnovena.Odeslat maximální velikost souboru (post_max_size)PředvolbyZásady ochrany osobních údajůVeřejná kořenová cestaOBNOVIT SOUBORYOdeberte nebo odstraňte soubory a složkyPřejmenujte soubor nebo složkuObnovitObnovení běží, čekejte prosímÚSPĚCHUložit změnyUkládání ...Hledat věciBezpečnostní problém.Vybrat všeVyberte zálohy, které chcete odstranit!NastaveníNastavení - editor kóduNastavení - ObecnéNastavení - Omezení uživateleNastavení - Omezení uživatelských rolíNastavení uloženo.Shortcode - PROJednoduché vyjmutí souboru nebo složkySystémové vlastnostiPodmínky službyZáloha byla zřejmě úspěšná a nyní je dokončena.MotivyZálohování motivů bylo provedeno k datu Záloha motivů byla provedena.Zálohování motivů se nezdařilo.Zálohování motivů bylo úspěšně obnoveno.Čas teďČasový limit (max_execution_time)Vytvořit archiv nebo zipDnesPOUŽITÍ:Nelze vytvořit zálohu databáze.Zálohu nelze odstranit!Zálohu databáze nelze obnovit.Nelze obnovit ostatní.Nelze obnovit pluginy.Motivy nelze obnovit.Nahrávání nelze obnovit.Nahrajte protokoly souborůNahrát souboryNahráváníNahraje zálohu hotovou k datu Záloha nahrávání byla dokončena.Zálohování nahrávání se nezdařilo.Zálohování nahrávek bylo úspěšně obnoveno.OvěřitZobrazit protokolSprávce souborů WPSprávce souborů WP - zálohování / obnoveníPříspěvek správce souborů WPRádi získáváme nové přátele! Přihlaste se k odběru níže a slibujeme
    budeme vás informovat o našich nejnovějších nových pluginech, aktualizacích,
    úžasné nabídky a několik speciálních nabídek.Vítejte ve Správci souborůNeudělali jste žádné změny k uložení.pro přístup ke čtení souborů, poznámka: true/false, výchozí: truepro přístup k oprávnění k zápisu do souborů, poznámka: true/false, výchozí: falseskryje se zde zmíněný. Poznámka: odděleno čárkou(,). Výchozí: Nulllanguages/wp-file-manager-th.po000064400000112114147361034410012441 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 12:14+0530\n"
"PO-Revision-Date: 2022-03-02 10:15+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: th\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "สำรองข้อมูลธีมสำเร็จแล้ว"

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "ไม่สามารถกู้คืนธีมได้"

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "กู้คืนข้อมูลสำรองการอัปโหลดสำเร็จแล้ว"

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "ไม่สามารถกู้คืนการอัปโหลด"

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "กู้คืนข้อมูลสำรองอื่นสำเร็จแล้ว"

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "ไม่สามารถกู้คืนผู้อื่นได้"

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "สำรองข้อมูลปลั๊กอินสำเร็จแล้ว"

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "ไม่สามารถกู้คืนปลั๊กอินได้"

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "กู้คืนการสำรองฐานข้อมูลเรียบร้อยแล้ว"

#: file_folder_manager.php:286 file_folder_manager.php:297 file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "ทุกอย่างเสร็จเรียบร้อย"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "ไม่สามารถกู้คืนข้อมูลสำรอง DB"

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "ลบข้อมูลสำรองเรียบร้อยแล้ว!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "ลบข้อมูลสำรองไม่ได้!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "สำรองข้อมูลฐานข้อมูลเสร็จในวันที่ "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "การสำรองข้อมูลปลั๊กอินเสร็จสิ้นในวันที่ "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "การสำรองข้อมูลธีมเสร็จสิ้นในวันที่ "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "อัปโหลดการสำรองข้อมูลเสร็จสิ้นในวันที่ "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "การสำรองข้อมูลอื่น ๆ เสร็จสิ้นในวันที่ "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "บันทึก"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "ไม่พบบันทึก!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "ไม่ได้เลือกอะไรไว้สำหรับการสำรองข้อมูล"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "ปัญหาด้านความปลอดภัย"

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "สำรองข้อมูลฐานข้อมูลเรียบร้อยแล้ว"

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "ไม่สามารถสร้างการสำรองฐานข้อมูล"

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "สำรองข้อมูลปลั๊กอินเสร็จแล้ว"

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "การสำรองข้อมูลปลั๊กอินล้มเหลว"

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "สำรองข้อมูลธีมเสร็จแล้ว"

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "การสำรองข้อมูลธีมล้มเหลว"

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "อัปโหลดสำรองข้อมูลเสร็จแล้ว"

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "การสำรองข้อมูลการอัปโหลดล้มเหลว"

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "สำรองข้อมูลอื่นเสร็จแล้ว"

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "การสำรองข้อมูลอื่นล้มเหลว"

#: file_folder_manager.php:761 file_folder_manager.php:762 lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "ตัวจัดการไฟล์ WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "การตั้งค่า"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "การตั้งค่า"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "คุณสมบัติของระบบ"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "รหัสย่อ - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "สำรอง/กู้คืน"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "ซื้อโปร"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "บริจาค"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "ไม่มีไฟล์ให้ดาวน์โหลด"

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "รหัสความปลอดภัยไม่ถูกต้อง."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "ไม่มีรหัสสำรอง"

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "ไม่มีประเภทพารามิเตอร์"

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "ไม่มีพารามิเตอร์ที่จำเป็น"

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences "
"settings."
msgstr "ข้อผิดพลาด: ไม่สามารถกู้คืนข้อมูลสำรองได้เนื่องจากการสำรองข้อมูลฐานข้อมูลมีขนาดใหญ่ โปรดลองเพิ่มขนาดสูงสุดที่อนุญาตจากการตั้งค่าการตั้งค่า"

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "เลือกข้อมูลสำรองที่จะลบ!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "คุณแน่ใจหรือไม่ว่าต้องการลบข้อมูลสำรองที่เลือก"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "กำลังสำรองข้อมูล โปรดรอสักครู่"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "กำลังดำเนินการกู้คืน โปรดรอสักครู่"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "ไม่ได้เลือกอะไรไว้สำหรับการสำรองข้อมูล"

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP File Manager - สำรอง/กู้คืน"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "ตัวเลือกการสำรองข้อมูล:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "สำรองฐานข้อมูล"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "ไฟล์สำรอง"

#: inc/backup.php:68
msgid "Plugins"
msgstr "ปลั๊กอิน"

#: inc/backup.php:71
msgid "Themes"
msgstr "ธีม"

#: inc/backup.php:74
msgid "Uploads"
msgstr "อัพโหลด"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "อื่น ๆ (ไดเร็กทอรีอื่น ๆ ที่พบใน wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "การสำรองข้อมูลในขณะนี้"

#: inc/backup.php:89
msgid "Time now"
msgstr "เวลาในขณะนี้"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ความสำเร็จ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "ลบข้อมูลสำรองเรียบร้อยแล้ว"

#: inc/backup.php:102
msgid "Ok"
msgstr "ตกลง"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ลบไฟล์"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "คุณแน่ใจหรือไม่ว่าต้องการลบข้อมูลสำรองนี้"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "ยกเลิก"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "ยืนยัน"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "กู้คืนไฟล์"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "คุณแน่ใจหรือไม่ว่าต้องการคืนค่าข้อมูลสำรองนี้"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "ข้อความบันทึกล่าสุด"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "เห็นได้ชัดว่าการสำรองข้อมูลสำเร็จและตอนนี้เสร็จสมบูรณ์แล้ว"

#: inc/backup.php:171
msgid "No log message"
msgstr "ไม่มีข้อความบันทึก"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "ข้อมูลสำรองที่มีอยู่"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "วันที่สำรอง"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "สำรองข้อมูล (คลิกเพื่อดาวน์โหลด)"

#: inc/backup.php:190
msgid "Action"
msgstr "หนังบู๊"

#: inc/backup.php:210
msgid "Today"
msgstr "วันนี้"

#: inc/backup.php:239
msgid "Restore"
msgstr "คืนค่า"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "ลบ"

#: inc/backup.php:241
msgid "View Log"
msgstr "ดูบันทึก"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "ไม่พบข้อมูลสำรองในขณะนี้"

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "การดำเนินการกับข้อมูลสำรองที่เลือก"

#: inc/backup.php:251
msgid "Select All"
msgstr "เลือกทั้งหมด"

#: inc/backup.php:252
msgid "Deselect"
msgstr "ยกเลิกการเลือก"

#: inc/backup.php:254
msgid "Note:"
msgstr "บันทึก:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "ไฟล์สำรองจะอยู่ภายใต้"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "การสนับสนุนตัวจัดการไฟล์ WP"

#: inc/logs.php:7
msgid "Note: These are demo screenshots. Please buy File Manager pro to Logs functions."
msgstr "หมายเหตุ: นี่เป็นภาพหน้าจอสาธิต โปรดซื้อฟังก์ชัน File Manager pro to Logs"

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "คลิกเพื่อซื้อ PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27 inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "ซื้อโปร"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "แก้ไขไฟล์บันทึก"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "ดาวน์โหลดไฟล์บันทึก"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "อัปโหลดไฟล์บันทึก"

#: inc/root.php:43
msgid "Settings saved."
msgstr "การตั้งค่าที่บันทึกไว้."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "ปิดประกาศนี้"

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "คุณยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ เพื่อบันทึก"

#: inc/root.php:55
msgid "Public Root Path"
msgstr "เส้นทางรูตสาธารณะ"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path คุณสามารถเปลี่ยนได้ตามต้องการ"

#: inc/root.php:59
msgid "Default:"
msgstr "ค่าเริ่มต้น:"

#: inc/root.php:60
msgid "Please change this carefully, wrong path can lead file manager plugin to go down."
msgstr "โปรดเปลี่ยนอย่างระมัดระวัง เส้นทางที่ไม่ถูกต้องอาจทำให้ปลั๊กอินตัวจัดการไฟล์หยุดทำงาน"

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "เปิดใช้งานถังขยะหรือไม่"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "หลังจากเปิดใช้งานถังขยะ ไฟล์ของคุณจะไปที่โฟลเดอร์ถังขยะ"

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "เปิดใช้งานการอัปโหลดไฟล์ไปยัง Media Library หรือไม่"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "หลังจากเปิดใช้งานนี้ ไฟล์ทั้งหมดจะไปที่ไลบรารีสื่อ"

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "ขนาดสูงสุดที่อนุญาตในขณะที่กู้คืนการสำรองฐานข้อมูล"

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid "Please increase field value if you are getting error message at the time of backup restore."
msgstr "โปรดเพิ่มค่าฟิลด์หากคุณได้รับข้อความแสดงข้อผิดพลาดในขณะที่กู้คืนข้อมูลสำรอง"

#: inc/root.php:90
msgid "Save Changes"
msgstr "บันทึกการเปลี่ยนแปลง"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "การตั้งค่า - ทั่วไป"

#: inc/settings.php:11 inc/settings.php:26
msgid "Note: This is just a demo screenshot. To get settings please buy our pro version."
msgstr "หมายเหตุ: นี่เป็นเพียงภาพหน้าจอสาธิตเท่านั้น หากต้องการตั้งค่าโปรดซื้อเวอร์ชัน Pro ของเรา"

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of "
"filemanager."
msgstr "ที่นี่ผู้ดูแลระบบสามารถให้สิทธิ์การเข้าถึงบทบาทผู้ใช้เพื่อใช้ filemanager ผู้ดูแลระบบสามารถตั้งค่าโฟลเดอร์การเข้าถึงข้อมูลเริ่มต้นและควบคุมขนาดการอัพโหลดไฟล์ได้"

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "การตั้งค่า - Code-editor"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. "
"Also you can allow fullscreen mode of code editor."
msgstr ""
"ตัวจัดการไฟล์มีตัวแก้ไขโค้ดที่มีหลายธีม คุณสามารถเลือกธีมสำหรับโปรแกรมแก้ไขโค้ดได้ จะปรากฏขึ้นเมื่อคุณแก้ไขไฟล์ใด ๆ "
"นอกจากนี้คุณสามารถอนุญาตให้ใช้โหมดเต็มหน้าจอของตัวแก้ไขโค้ด"

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "มุมมองตัวแก้ไขโค้ด"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "การตั้งค่า - ข้อ จำกัด ของผู้ใช้"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users."
msgstr "ผู้ดูแลระบบสามารถ จำกัด การดำเนินการของผู้ใช้รายใดก็ได้ ซ่อนไฟล์และโฟลเดอร์และสามารถตั้งค่าเส้นทางโฟลเดอร์ที่แตกต่างกันไปสำหรับผู้ใช้ที่แตกต่างกัน"

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "การตั้งค่า - ข้อ จำกัด บทบาทของผู้ใช้"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different "
"users roles."
msgstr "ผู้ดูแลระบบสามารถ จำกัด การดำเนินการของ userrol ใดก็ได้ ซ่อนไฟล์และโฟลเดอร์และสามารถตั้งค่าเส้นทางโฟลเดอร์ที่ต่างกันสำหรับบทบาทผู้ใช้ที่แตกต่างกัน"

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "ตัวจัดการไฟล์ - รหัสย่อ"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17 inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ใช้:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File "
"Manager."
msgstr "มันจะแสดงตัวจัดการไฟล์ที่ส่วนหน้า คุณสามารถควบคุมการตั้งค่าทั้งหมดได้จากการตั้งค่าตัวจัดการไฟล์ มันจะทำงานเหมือนกับตัวจัดการไฟล์ WP แบ็กเอนด์"

#: inc/shortcode_docs.php:17
msgid "It will show file manager on front end. But only Administrator can access it and will control from file manager settings."
msgstr "มันจะแสดงตัวจัดการไฟล์ที่ส่วนหน้า แต่มีเพียงผู้ดูแลระบบเท่านั้นที่สามารถเข้าถึงได้และจะควบคุมจากการตั้งค่าตัวจัดการไฟล์"

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "พารามิเตอร์:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="
"\"editor,author\" (seprated by comma(,))"
msgstr ""
"จะอนุญาตให้ทุกบทบาทเข้าถึงตัวจัดการไฟล์ที่ส่วนหน้าหรือคุณสามารถใช้อย่างง่ายสำหรับบทบาทของผู้ใช้โดยเฉพาะเช่น allowed_roles=\"editor,author"
"\" (คั่นด้วยเครื่องหมายจุลภาค (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or you can give path for sub folders as like \"wp-content/plugins"
"\". If leave blank or empty it will access all folders on root directory. Default: Root directory"
msgstr ""
"ที่นี่ \"test\" คือชื่อโฟลเดอร์ที่อยู่บนไดเร็กทอรี root หรือคุณสามารถกำหนดเส้นทางสำหรับโฟลเดอร์ย่อยได้ เช่น \"wp-content/plugins\" หากปล่อยว่างหรือว่างไว้ "
"ระบบจะเข้าถึงโฟลเดอร์ทั้งหมดในไดเร็กทอรีราก ค่าเริ่มต้น: ไดเรกทอรีราก"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "สำหรับการเข้าถึงสิทธิ์ในการเขียนไฟล์ หมายเหตุ: true/false, default: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "สำหรับการเข้าถึงเพื่ออ่านสิทธิ์ในการอ่านไฟล์ หมายเหตุ: จริง/เท็จ ค่าเริ่มต้น: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "มันจะซ่อนกล่าวถึงที่นี่ หมายเหตุ: คั่นด้วยเครื่องหมายจุลภาค (,) ค่าเริ่มต้น: Null"

#: inc/shortcode_docs.php:36
msgid "It will lock mentioned in commas. you can lock more as like \".php,.css,.js\" etc. Default: Null"
msgstr "มันจะล็อคที่กล่าวถึงในเครื่องหมายจุลภาค คุณสามารถล็อกได้มากขึ้นเช่น \".php,.css,.js\" เป็นต้น ค่าเริ่มต้น: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation name as like, allowed_operations=\"upload,download\". Note: "
"seprated by comma(,). Default: *"
msgstr ""
"* สำหรับการดำเนินการทั้งหมดและเพื่ออนุญาตให้ดำเนินการบางอย่าง คุณสามารถระบุชื่อการดำเนินการได้ เช่น allowed_operations=\"upload,download\" หมายเหตุ: "
"คั่นด้วยเครื่องหมายจุลภาค (,) ค่าเริ่มต้น: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "รายการการทำงานของไฟล์:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "สร้างไดเร็กทอรีหรือโฟลเดอร์"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "ทำไฟล์"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "เปลี่ยนชื่อไฟล์หรือโฟลเดอร์"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "ทำซ้ำหรือโคลนโฟลเดอร์หรือไฟล์"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "วางไฟล์หรือโฟลเดอร์"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "ห้าม"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "ในการสร้างไฟล์เก็บถาวรหรือ zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "แตกไฟล์เก็บถาวรหรือไฟล์ซิป"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "คัดลอกไฟล์หรือโฟลเดอร์"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "ตัดไฟล์หรือโฟลเดอร์อย่างง่าย"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "แก้ไขไฟล์"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "ลบหรือลบไฟล์และโฟลเดอร์"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "ดาวน์โหลดไฟล์"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "อัพโหลดไฟล์"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "ค้นหาสิ่งของ"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "ข้อมูลของไฟล์"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "ช่วยด้วย"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp "
"file manager on front end."
msgstr "-> มันจะแบนผู้ใช้บางคนโดยเพียงแค่ใส่รหัสของพวกเขาคั่นด้วยเครื่องหมายจุลภาค (,) หากผู้ใช้ถูกแบน พวกเขาจะเข้าถึงตัวจัดการไฟล์ wp ที่ส่วนหน้าไม่ได้"

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> มุมมอง UI ตัวจัดการไฟล์ ค่าเริ่มต้น: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> ไฟล์ที่แก้ไขหรือสร้างรูปแบบวันที่ ค่าเริ่มต้น: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> ภาษาของตัวจัดการไฟล์ ค่าเริ่มต้น: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> ภาษาของตัวจัดการไฟล์ ค่าเริ่มต้น: English(en)"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "ตัวจัดการไฟล์ - คุณสมบัติของระบบ"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "เวอร์ชัน PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "ขนาดการอัปโหลดไฟล์สูงสุด (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "ขนาดไฟล์อัพโหลดสูงสุด (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "หน่วยความจำ จำกัด (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "หมดเวลา (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "เบราว์เซอร์และระบบปฏิบัติการ (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "เปลี่ยนธีมที่นี่:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "ค่าเริ่มต้น"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "มืด"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "เบา"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "สีเทา"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "ยินดีต้อนรับสู่ตัวจัดการไฟล์"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"เราชอบหาเพื่อนใหม่! สมัครสมาชิกด้านล่างและเราสัญญาว่าจะ\n"
"    แจ้งให้คุณทราบเกี่ยวกับปลั๊กอิน อัปเดต ใหม่ล่าสุดของเรา\n"
"    ข้อเสนอสุดพิเศษและข้อเสนอพิเศษไม่กี่อย่าง"

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "กรุณาใส่ชื่อ."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "กรุณาใส่นามสกุล"

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "กรุณากรอกอีเมล์"

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "ยืนยัน"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "ไม่เป็นไรขอบคุณ"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "เงื่อนไขการให้บริการ"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "นโยบายความเป็นส่วนตัว"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "ประหยัด..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "ตกลง"

#~ msgid "Backup not found!"
#~ msgstr "ไม่พบข้อมูลสำรอง!"

#~ msgid "Backup removed successfully!"
#~ msgstr "ลบข้อมูลสำรองเรียบร้อยแล้ว!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr "<span class=\"fm_console_error\">ไม่ได้เลือกไว้สำหรับการสำรองข้อมูล</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">ปัญหาด้านความปลอดภัย</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">สำรองข้อมูลฐานข้อมูลเรียบร้อยแล้ว</span>"

#~ msgid "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr "<span class=\"fm_console_error\">สร้างการสำรองฐานข้อมูลไม่ได้</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">สำรองข้อมูลปลั๊กอินเสร็จแล้ว</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">การสำรองข้อมูลปลั๊กอินล้มเหลว</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">สำรองข้อมูลธีมเสร็จแล้ว</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">การสำรองข้อมูลธีมล้มเหลว</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">อัปโหลดการสำรองข้อมูลเสร็จแล้ว</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">การสำรองข้อมูลการอัปโหลดล้มเหลว</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">สำรองข้อมูลอื่นๆ เรียบร้อยแล้ว</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">การสำรองข้อมูลอื่นๆ ล้มเหลว</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">เสร็จสิ้น</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" "
#~ "access_folder=\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = \"kumar,abc.php\" lock_extensions=\".php,.css\" "
#~ "allowed_operations=\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" "
#~ "access_folder=\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = \"kumar,abc.php\" lock_extensions=\".php,.css\" "
#~ "allowed_operations=\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "จัดการไฟล์ WP ของคุณ"

#~ msgid "Extensions"
#~ msgstr "ส่วนขยาย"

#~ msgid "Please contribute some donation, to make plugin more stable. You can pay amount of your choice."
#~ msgstr "โปรดบริจาคเงินเพื่อทำให้ปลั๊กอินมีเสถียรภาพมากขึ้น คุณสามารถจ่ายเงินตามที่คุณต้องการได้"
languages/wp-file-manager-bg_BG.mo000064400000057520147361034410012774 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&MQ(K�)c�*XO+j�+�,�,3�,O�,l).��/�0�0]�0M1__1"�1�1%2O&2Cv2C�2:�2193>k3�3(�3�3�3
4(4,84.e4�43�4N�4,5
L5-W5S�5L�5]&6�6�6�6!�6/�6 73-7!a7K�7G�7!8l98)�8b�843:h:3�:H�:�;y�;3=?9=(y=�=�=��=�u?$�@2AqNA��B}CO�D7�E
FF9,FfF��F[,G9�GJ�G'
H;5HqH8�H+�H�H�I��I9�J:�J
�J
K]KAlK6�KA�KT'L|L�L-�L1�L"M1$M�VM�N�NUOG\OF�O\�OnHP�P0�P$Q0(QPYQ5�Q�QG�Q
=R#HRlR�R-�R�RM�R2S1ESwSF�SX�S-5TcT8}T!�T$�T\�TZUKcU=�U@�UP.VV7�V5�VW
W`W>}WQ�W:XPIXF�XN�X80Y"iY�YI�YI�YL1ZR~Z�Z$�Z 	[V*[2�[O�[)][.]��]�!^��^}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 14:54+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: bg_BG
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* за всички операции и за да разрешите някои операции, можете да споменете име на операцията като, allowed_operations="качване, изтегляне". Забележка: разделено със запетая (,). По подразбиране: *-> Ще забрани определени потребители, като просто постави техните идентификатори, разделени със запетаи (,). Ако потребителят е Бан, той няма да има достъп до wp файлов мениджър отпред.-> Тема на файловия мениджър. По подразбиране: Светлина-> File Modified или Create date format. По подразбиране: d M, Y h: i A-> Език на файловия мениджър. По подразбиране: английски (bg)-> Изглед на потребителския интерфейс на Filemanager. По подразбиране: мрежаДействиеДействия при избрани архивиАдминистраторът може да ограничи действията на всеки потребител. Също така скривайте файлове и папки и можете да задавате различни - различни пътища на папки за различни потребители.Администраторът може да ограничи действията на всяка потребителска роля. Също така скривайте файлове и папки и можете да зададете различни - различни пътища на папки за различни роли на потребители.След активиране на кошчето вашите файлове ще отидат в папката за боклук.След като активирате това, всички файлове ще отидат в медийната библиотека.ГотовоНаистина ли искате да премахнете избраните архиви?Наистина ли искате да изтриете този архив?Наистина ли искате да възстановите това архивиране?Дата на архивиранеАрхивиране сегаОпции за архивиране:Архивиране на данни (щракнете за изтегляне)Файловете за архивиране ще бъдат подАрхивирането работи, моля, изчакайтеАрхивирането е успешно изтрито.Архивиране/ВъзстановяванеАрхивите бяха премахнати успешно!ЗабранаБраузър и ОС (HTTP_USER_AGENT)Купете PROКупете ProОтказПромяна на темата тук:Кликнете, за да купите PROИзглед на редактор на кодПотвърдетеКопирайте файлове или папкиПонастоящем не са намерени резервни копия.ИЗТРИЙ ФАЙЛОВЕТЕТъмноАрхивиране на база данниАрхивиране на базата данни направено на дата Архивирането на базата данни е извършено.Архивирането на база данни е възстановено успешно.По подразбиранеПо подразбиране:ИзтрийПремахнете избораОтхвърлете това известие.ДаретеИзтеглете файлове с файловеИзтеглете файловеДублирайте или клонирайте папка или файлРедактиране на регистрационни файловеРедактирайте файлАктивиране на качването на файлове в медийната библиотека?Активиране на кошчето?Грешка: Не може да се възстанови архивирането, тъй като архивирането на базата данни е голямо по размер. Моля, опитайте да увеличите максималния разрешен размер от настройките за предпочитания.Съществуващи резервни копияExtract archive or zipped fileФайлов диспечер - Кратък кодФайлов диспечер - Свойства на систематаОсновен път на файловия мениджър, можете да промените според вашия избор.File Manager има редактор на код с множество теми. Можете да изберете всяка тема за редактор на код. Той ще се покаже, когато редактирате всеки файл. Също така можете да разрешите цял екран режим на редактор на код.Списък с операции с файлове:Файлът не съществува за изтегляне.Архивиране на файловеСивоПомогнеТук "test" е името на папката, която се намира в основната директория, или можете да дадете път за подпапки като "wp-content/plugins". Ако оставите празно или празно, ще има достъп до всички папки в основната директория. По подразбиране: Основна директорияТук администраторът може да даде достъп до потребителски роли, за да използва файловия мениджър. Администраторът може да зададе папка по подразбиране и да контролира размера на качването на файловия мениджър.Информация за файлаНевалиден код за сигурност.Това ще позволи на всички роли да имат достъп до файловия мениджър в предния край или можете просто да използвате за конкретни потребителски роли, като например allowed_roles="editor,author" (разделен със запетая (,))Ще се заключи, споменато със запетаи. можете да заключите повече като ".php,.css,.js" и т.н. По подразбиране: NullТой ще покаже файлов мениджър на предния край. Но само администраторът има достъп до него и ще контролира от настройките на файловия мениджър.Той ще покаже файлов мениджър на предния край. Можете да контролирате всички настройки от настройките на файловия мениджър. Той ще работи по същия начин като бекенд WP файлов мениджър.Последно съобщение в дневникаСветлинаДневнициНаправете директория или папкаНаправете файлМаксимално позволен размер към момента на възстановяване на резервно копие на базата данни.Максимален размер на файла за качване (upload_max_filesize)Ограничение на паметта (memory_limit)Липсва резервен идентификационен номер.Липсва тип параметър.Липсват необходимите параметри.Не благодаряНяма регистрационно съобщениеНяма намерени дневници!Забележка:Забележка: Това са демонстрационни екранни снимки. Моля, купете File Manager pro за функции Logs.Забележка: Това е само демонстрационна екранна снимка. За да получите настройки, моля, купете нашата професионална версия.Нищо не е избрано за архивиранеНищо не е избрано за архивиране.ДобреДобреДруги (Всички други директории, намерени във wp-content)Други архивиране направено на дата Други архивиране е направено.Архивирането на други бе неуспешно.Други резервни копия са възстановени успешно.PHP версияПараметри:Поставете файл или папкаМоля, въведете имейл адрес.Моля, въведете Име.Моля, въведете фамилно име.Моля, променете това внимателно, грешният път може да доведе до слизане на приставката за файлов мениджър.Моля, увеличете стойността на полето, ако получавате съобщение за грешка по време на възстановяване на резервно копие.ПриставкиАрхивирането на приставки е направено на дата Архивирането на плъгините е извършено.Архивирането на плъгини не бе успешно.Архивирането на приставки е възстановено успешно.Публикувайте максимален размер на файла за качване (post_max_size)ПредпочитанияПолитика за поверителностОбществен корен пътВЪЗСТАНОВЯВАНЕ НА ФАЙЛОВЕПремахване или изтриване на файлове и папкиПреименувайте файл или папкаВъзстановиВъзстановяването тече, моля, изчакайтеУСПЕХЗапазите променитеЗапазва се ...Търсете нещаПроблем със сигурността.Избери всичкиИзберете резервно(и) копие(и) за изтриване!НастройкиНастройки - редактор на кодНастройки - ОбщиНастройки - Потребителски ограниченияНастройки - Ограничения на потребителските ролиНастройките са запазени.Кратък код - PROПросто изрежете файл или папкаСистемни свойстваУсловия за ползванеАрхивирането очевидно е успяло и вече е завършено.ТемиАрхивирането на теми е направено на дата Архивирането на теми е направено.Архивирането на теми не бе успешно.Архивирането на теми се възстанови успешно.Време сегаВреме за изчакване (max_execution_time)За да направите архив или ципДнесУПОТРЕБА:Не може да се създаде резервно копие на базата данни.Архивът не може да бъде премахнат!Не може да се възстанови резервно копие на DB.Не може да се възстановят други.Приставките не могат да бъдат възстановени.Темите не могат да бъдат възстановени.Качванията не могат да бъдат възстановени.Качване на файлове от дневнициКачване на файловеКачванияКачва резервно копие, направено на дата Архивирането на качванията е извършено.Архивирането на качванията не бе успешно.Архивите за качване са възстановени успешно.ПроверетеПреглед на дневникаWP файлов мениджърWP файлов мениджър - Архивиране / ВъзстановяванеПринос на WP файлов мениджърОбичаме да създаваме нови приятели! Абонирайте се по-долу и ние обещаваме
    Ви информираме за последните ни нови плъгини, актуализации,
    страхотни оферти и няколко специални оферти.Добре дошли във File ManagerНе сте направили промени, които да бъдат запазени.за достъп до разрешение за четене на файлове, забележка: true/false, по подразбиране: trueза достъп до разрешения за запис на файлове, забележка: true/false, по подразбиране: falseще скрие споменатото тук. Забележка: разделено със запетая (,). По подразбиране: нулаlanguages/wp-file-manager-hy.mo000064400000060465147361034410012456 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&^N(]�)2+t>+N�+:,=,gX,U�,�.l�/n0v0s�0a1mj1-�1#20*2o[29�2@3EF33�3S�34*#4N4^4k4%|4*�4"�4�495I;5�5�5/�5W�5K06\|6�6�6�67)7>7BS7�7O�7@8G8Yc8"�8J�8;+:Hg:3�:O�:[4;s�;==MB=+�=�=�=�=T�?)BA;lA��A�-C�CDE%SF
yF�F3�F�F��FL�G2�G6H8CH>|H&�HB�H5%I[I�gI�	JF�JGKeKlK�sKWL>XLA�L_�L9MNM+dMI�M5�M>N�ON��N�OY�OF4PE{Pi�Pf+Q$�Q9�Q2�Q%$RGJR/�R�RR�R,S1FSxS�S&�S�SD�S.T@KT1�TV�T_U1uU"�U2�U1�UF/VgvV�VU�V<;W?xWe�WX'8X7`X
�X�X`�XFYOaYB�YB�Y>7ZJvZB�Z[$[Y?[N�[K�[q4\�\%�\$�\^]&a]v�]$�^[$_��_�`��`}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-01 11:04+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: hy
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* բոլոր գործողությունների համար և որոշակի գործողություն թույլատրելու համար կարող եք նշել գործողության անվանումը որպես like, allow_operations="upload,download": Նշում. առանձնացված է ստորակետով (,): Կանխադրված՝ *-> Այն կարգելի որոշակի օգտվողներին `պարզապես տեղադրելով իրենց ID- ները ստորակետերով բաժանված (,): Եթե ​​օգտագործողը արգելում է, ապա նա չի կարողանա մուտք գործել wp ֆայլի կառավարիչ դիմային մասում:-> Ֆայլի կառավարչի թեման: Light-> Ֆայլը փոփոխված է կամ ստեղծեք ամսաթվի ձևաչափ: Լռելյայն. D M, Y h: i A-> Ֆայլերի կառավարչի լեզու: Լռելյայն. English(en)-> Filemanager UI դիտում: Լռելյայն. ՑանցԳործողությունԳործողություններ ընտրված պահուստային (ներ) ի վերաբերյալԱդմինիստրատորը կարող է սահմանափակել ցանկացած օգտվողի գործողությունները: Թաքցրեք նաև ֆայլերն ու պանակները և կարող են սահմանել տարբեր ՝ տարբեր պանակների ուղիներ տարբեր օգտվողների համար:Ադմինիստրատորը կարող է սահմանափակել ցանկացած օգտագործողի գործողության գործողությունները: Թաքցրեք նաև ֆայլերն ու պանակները և կարող են տարբեր ՝ տարբեր պանակների ուղիներ սահմանել տարբեր օգտվողների դերերի համար:Աղբարկղը միացնելուց հետո ձեր ֆայլերը կգնան աղբարկղի պանակ:Սա միացնելուց հետո բոլոր ֆայլերը կուղղվեն մեդիա գրադարանին:Ամեն ինչ արված էՎստա՞հ եք, որ ցանկանում եք հեռացնել ընտրված պահուստային (ներ) ը:Վստա՞հ եք, որ ցանկանում եք ջնջել այս պահուստավորումը:Վստա՞հ եք, որ ցանկանում եք վերականգնել այս պահուստավորումը:Պահուստավորման ամսաթիվըՊահուստավորեք հիմաԿրկնօրինակման ընտրանքներ.Պահուստային տվյալների հավաքում (կտտացրեք ներբեռնելու համար)Պահուստային ֆայլերը տակ կլինենՊահուստավորումն աշխատում է, սպասեքՊահուստավորումը հաջողությամբ ջնջվեց:Կրկնօրինակում/ՎերականգնումՊահուստավորումները հաջողությամբ հեռացվեցին:ԱրգելելBrննարկիչ և ՕՀ (HTTP_USER_AGENT)Գնեք ՊՐՈԳնել ProՉեղարկելՓոխել թեման այստեղ ՝Սեղմեք՝ PRO գնելու համարԿոդ-խմբագրի դիտումՀաստատելՊատճենել ֆայլերը կամ պանակներըՆերկայումս ոչ մի պահուստ (ներ) չի գտնվել:DEնջել ֆայլերըՄութՇտեմարանի պահուստավորումՇտեմարանի պահուստավորումը կատարվել է ամսաթվով Տվյալների բազայի կրկնօրինակումն արված է:Շտեմարանի կրկնօրինակը հաջողությամբ վերականգնվեց:ԼռելյայնԼռելյայն:ՆջելԱպանշելՄերժեք այս ծանուցումը:ՆվիրաբերելՆերբեռնեք Ֆայլերի տեղեկամատյաններըՆերբեռնեք ֆայլերԿրկնօրինակեք կամ կլոնավորեք պանակ կամ ֆայլԽմբագրել ֆայլերի տեղեկամատյաններըԽմբագրել ֆայլըՄիացնե՞լ ֆայլերի վերբեռնումը մեդիա գրադարանում:Միացնե՞լ աղբարկղը:Սխալ. Չհաջողվեց վերականգնել կրկնօրինակը, քանի որ տվյալների բազայի կրկնօրինակը մեծ չափերի է: Փորձեք ավելացնել Առավելագույն թույլատրելի չափը Նախապատվությունների կարգավորումներից:Գոյություն ունեցող պահուստ (ներ)Արդյունահանել արխիվը կամ սեղմված ֆայլըՖայլերի կառավարիչ - կարճ կոդՖայլի կառավարիչ - Համակարգի հատկություններFile Manager Root Path- ը, ըստ ձեր ընտրության, կարող եք փոխել:File Manager- ն ունի բազմաթիվ թեմաներով կոդերի խմբագիր: Կոդի խմբագրի համար կարող եք ընտրել ցանկացած թեմա: Այն կցուցադրվի, երբ ցանկացած ֆայլ խմբագրեք: Կարող եք նաև թույլատրել կոդերի խմբագրիչի լրիվ էկրանի ռեժիմ:Ֆայլի գործառնությունների ցուցակ.Ֆայլը ներբեռնելու համար գոյություն չունի:Ֆայլերի պահուստավորումՄոխրագույնՕգնությունԱյստեղ «թեստը» թղթապանակի անունն է, որը գտնվում է արմատային գրացուցակում, կամ կարող եք ճանապարհ տալ ենթապանակների համար, ինչպես օրինակ «wp-content/plugins»: Եթե ​​թողնեք դատարկ կամ դատարկ, այն հասանելի կլինի բոլոր թղթապանակներին արմատային գրացուցակում: Կանխադրված՝ արմատական ​​գրացուցակԱյստեղ ադմինիստրատորը կարող է մուտք գործել օգտվողի դերեր ՝ Filemanager- ից օգտվելու համար: Ադմինիստրատորը կարող է սահմանել Լռելյայն Մուտքի Թղթապանակ և վերահսկել նաև Filemanager- ի վերբեռնման չափը:Ֆայլի տեղեկատվությունԱնվտանգության անվավեր ծածկագիր:Այն թույլ կտա բոլոր դերերին մուտք գործել ֆայլերի կառավարիչ ճակատային մասում կամ Դուք կարող եք պարզ օգտագործել օգտատերերի որոշակի դերերի համար, ինչպես օրինակ՝ allow_roles = "խմբագիր, հեղինակ" (առանձնացված ստորակետով (,))Այն կկողպվի ստորակետերում նշված: Դուք կարող եք կողպել ավելի շատ, ինչպես օրինակ «.php,.css,.js» և այլն: Կանխադրված՝ NullԱյն ցույց կտա ֆայլերի կառավարիչը ճակատային մասում: Բայց միայն Ադմինիստրատորը կարող է մուտք գործել այն և կվերահսկի ֆայլերի կառավարչի կարգավորումներից:Այն ցույց կտա ֆայլերի կառավարիչը ճակատային մասում: Դուք կարող եք կառավարել բոլոր կարգավորումները ֆայլերի կառավարչի կարգավորումներից: Այն կաշխատի այնպես, ինչպես backend WP File Manager-ը:Վերջին տեղեկամատյանԼույսՏեղեկամատյաններԿատարել գրացուցակ կամ պանակՊատկեր պատրաստելԱռավելագույն թույլատրելի չափը տվյալների բազայի կրկնօրինակի վերականգնման պահին:Վերբեռնման առավելագույն չափը (upload_max_filesize)Հիշողության սահման (memory_limit)Պահուստային ID- ն բացակայում է:Պարամետրի տեսակը բացակայում է:Անհայտ պարամետրերը բացակայում են:Ոչ, շնորհակալությունԱռանց տեղեկամատյան հաղորդագրությանՈչ մի տեղեկամատյան չի գտնվել:Նշում:Նշում. Դրանք ցուցադրական սքրինշոթեր են: Խնդրում ենք գնել File Manager pro- ը Logs գործառույթներից:Նշում. Սա պարզապես ցուցադրական էկրանի նկար է: Կարգավորումներ ստանալու համար խնդրում ենք գնել մեր պրո-տարբերակը:Պահուստավորման համար ոչինչ ընտրված չէՊահուստավորման համար ոչինչ ընտրված չէ:լավԼավՈւրիշներ (wp- բովանդակության ներսում հայտնաբերված ցանկացած այլ գրացուցակներ)Մյուսները պահուստավորումը կատարվել է ամսաթվով Մյուսների կրկնօրինակումն արված է:Մյուսների կրկնօրինակումը ձախողվեց:Մյուսները կրկնօրինակը հաջողությամբ վերականգնվել է:PHP տարբերակՊարամետրեր:Տեղադրեք ֆայլ կամ պանակԽնդրում ենք մուտքագրել էլ. Փոստի հասցեն:Խնդրում ենք մուտքագրել անունԽնդրում ենք մուտքագրել ազգանունը:Խնդրում ենք ուշադիր փոխել սա, սխալ ուղին կարող է հանգեցնել ֆայլերի կառավարչի plugin- ի անկմանը:Խնդրում ենք ավելացնել դաշտի արժեքը, եթե կրկնօրինակի վերականգնման պահին սխալի մասին հաղորդագրություն եք ստանում:ՊլագիններՊլագինների պահուստավորումը կատարվել է ամսաթվով Փլագինների կրկնօրինակումն ավարտված է:Փլագինների պահուստավորումը ձախողվեց:Պլագինների պահուստավորումը հաջողությամբ վերականգնվել է:Տեղադրել ֆայլերի վերբեռնման առավելագույն չափը (post_max_size)ՆախապատվություններԳաղտնիության քաղաքականությունՀասարակական արմատային ուղիՎերականգնել նիշքերըՀեռացնել կամ ջնջել ֆայլերը և պանակներըՎերանվանել ֆայլ կամ պանակՎերականգնելՎերականգնումն աշխատում է, խնդրում ենք սպասելՀԱ SՈESSՈՒԹՅՈՒՆՊահպանել փոփոխություններըԽնայվում է ...Որոնել բաներԱնվտանգության խնդիր.Ընտրել բոլորըԸնտրեք կրկնօրինակ(ներ) ջնջելու համար:ԿարգավորումներԿարգավորումներ - օրենսգրքի խմբագիրԿարգավորումներ - ԸնդհանուրԿարգավորումներ - Օգտագործողի սահմանափակումներԿարգավորումներ - Օգտագործողի դերի սահմանափակումներԿարգավորումները պահվել են:Կարճ ծածկագիր - ՊՐՈՊարզ կտրեք ֆայլը կամ պանակըՀամակարգի հատկություններըԾառայությունների մատուցման պայմաններԱկնհայտորեն պահուստավորումը հաջողվեց և այժմ ավարտված է:ThemesԹեմաների պահուստավորումը կատարվել է ամսաթվով Թեմաների կրկնօրինակումն արված է:Թեմաների կրկնօրինակումը ձախողվեց:Թեմաների պահուստավորումը հաջողությամբ վերականգնվել է:Հիմա ժամանակըԸնդմիջում (max_execution_time)Արխիվ կամ zip պատրաստելու համարԱյսօրՕԳՏԱԳՈՐՈՒՄ:Հնարավոր չէ ստեղծել տվյալների բազայի կրկնօրինակում:Հնարավոր չէ հեռացնել պահուստավորումը:Հնարավոր չէ վերականգնել DB պահուստավորումը:Հնարավոր չէ վերականգնել ուրիշներին:Հնարավոր չէ վերականգնել ներդիրները:Հնարավոր չէ վերականգնել թեմաները:Հնարավոր չէ վերականգնել վերբեռնումները:Վերբեռնել ֆայլերի տեղեկամատյաններըՖայլեր վերբեռնելՎերբեռնումներՎերբեռնման պահուստավորումը կատարվել է ամսաթվով Վերբեռնումների կրկնօրինակումն ավարտված է:Վերբեռնումների կրկնօրինակումը ձախողվեց:Վերբեռնումների պահուստավորումը հաջողությամբ վերականգնվել է:ՀաստատելԴիտել տեղեկամատյանըWP ֆայլերի կառավարիչWP ֆայլերի կառավարիչ - պահուստավորում / վերականգնումWP File Manager- ի ներդրումըՄենք սիրում ենք նոր ընկերներ ձեռք բերել: Բաժանորդագրվեք ստորև, և մենք խոստանում ենք դա անել
    ձեզ թարմ պահեք մեր վերջին նոր հավելումների, թարմացումների,
    զարմանալի գործարքներ և մի քանի հատուկ առաջարկներ:Բարի գալուստ File ManagerԴուք փրկելու համար որևէ փոփոխություն չեք կատարել:ֆայլերի ընթերցման թույլտվության համար նշեք՝ ճշմարիտ/կեղծ, լռելյայն՝ ճշմարիտֆայլերի գրելու թույլտվությունների հասանելիության համար նշեք՝ true/false, default՝ falseայն կթաքցվի այստեղ նշված: Նշում. առանձնացված է ստորակետով (,): Կանխադրված՝ զրոյականlanguages/wp-file-manager-nl_NL.mo000064400000042151147361034410013030 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&|�&�/(��((�)C�).*.H*w*#}*��*�J+N,LO,�,@�,1�,0-O-\-i-'x-�-,�-�-..	5..?.n.w.	�.�.�.�.
�.�.#�././5/!F/h/#�/	�/
�/�/�/�/�/�/0'#0K0f05{0�0��0]1*r1�1%�1?�1�23&$3K3[3a3�h3�U45&5�C5f6�k6�7�7�7	�7�7
�7P�74>8s8�8�8 �8�8�89
$9T/9_�9�9 :%:(:3+: _:#�:�:#�:
�:�:�:;(;@;dZ;d�;$<%-<S< p<(�<5�<
�<
�<	==.-='\=
�=4�=�=�=�=�=�=
>'>E>R>m>$�>+�>�>�>$�>$?:?1M??$�?�?�?#�?@@.@G@O@X@x@�@�@�@�@A+AHAYA aA�A�A#�A�A�A�A&B.B�GBC4-CWbCY�CTD}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Theme Editor
PO-Revision-Date: 2022-02-28 11:05+0530
Last-Translator: 
Language-Team: 
Language: nl_NL
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* voor alle bewerkingen en om sommige bewerkingen mogelijk te maken, kunt u de naam van de bewerking vermelden als, allow_operations="upload,download". Opmerking: gescheiden door komma(,). Standaard: *->  Het verbiedt bepaalde gebruikers door hun id's gescheiden door komma's (,) te plaatsen. Als de gebruiker Ban is, hebben ze geen toegang tot wp-bestandsbeheer aan de voorkant.-> Bestandsbeheerthema. Standaard: Light-> Bestand gewijzigd of datumformaat maken. Standaard: d M, Y h:i A-> Bestandsbeheer Taal. Standaard: English(en)-> Bestandsbeheer UI-weergave. Standaard: gridActieActies bij geselecteerde back-up(s)Beheerder kan acties van elke gebruiker beperken. Verberg ook bestanden en mappen en kan verschillende - verschillende mappaden instellen voor verschillende gebruikers.Beheerder kan acties van elke gebruikersrol beperken. Verberg ook bestanden en mappen en kan verschillende - verschillende mappenpaden instellen voor verschillende gebruikersrollen.Nadat u de prullenbak hebt ingeschakeld, gaan uw bestanden naar de prullenbak.Nadat u dit hebt ingeschakeld, gaan alle bestanden naar de mediabibliotheek.Helemaal klaarWeet u zeker dat u de geselecteerde back-up(s) wilt verwijderen?Weet u zeker dat u deze back-up wilt verwijderen?Weet u zeker dat u deze back-up wilt herstellen?Back-updatumNu backuppenBack-upopties:Back-upgegevens (klik om te downloaden)Back-upbestanden zijn onderBack-up wordt uitgevoerd, even geduld a.u.b.Back-up succesvol verwijderd.Backup herstelBack-ups succesvol verwijderd!verbiedenBrowser en besturingssysteem (HTTP_USER_AGENT)Koop PROKoop ProannulerenVerander hier het thema:Klik om PRO te kopenCode-editor weergaveBevestigenBestanden of mappen kopiërenMomenteel geen back-up(s) gevonden.VERWIJDER BESTANDENDonkerDatabase back-upDatabase back-up gedaan op datum Databaseback-up gedaan.Databaseback-up succesvol hersteld.StandaardStandaard:VerwijderenDeselecterenNegeer deze melding.DonerenBestanden downloaden LogboekenBestanden downloadenEen map of bestand dupliceren of klonenBestandslogboeken bewerkenEen bestand bewerkenBestanden uploaden naar mediabibliotheek inschakelen?Prullenbak inschakelen?Fout: kan back-up niet herstellen omdat databaseback-up zwaar is. Probeer de maximaal toegestane grootte te vergroten via de voorkeursinstellingen.Bestaande back-up(s)Archief of gecomprimeerd bestand uitpakkenBestandsbeheer - ShortcodeBestandsbeheer - SysteemeigenschappenBestandsbeheer Root Path, u kunt dit naar eigen keuze wijzigen.Bestandsbeheer heeft een code-editor met meerdere thema's. U kunt elk thema voor de code-editor selecteren. Het wordt weergegeven wanneer u een bestand bewerkt. U kunt ook de modus voor volledig scherm van de code-editor toestaan.Lijst met bestandsbewerkingen:Bestand bestaat niet om te downloaden.Bestandsback-upGrijsHelpenHier is "test" de naam van de map die zich in de hoofdmap bevindt, of u kunt een pad opgeven voor submappen zoals "wp-content/plugins". Als u dit blanco of leeg laat, heeft het toegang tot alle mappen in de hoofdmap. Standaard: HoofdmapHier kan de beheerder toegang geven tot gebruikersrollen om bestandsbeheer te gebruiken. De beheerder kan de standaardtoegangsmap instellen en ook de uploadgrootte van bestandsbeheer beheren.Info van bestandOngeldige beveiligings code.Het geeft alle rollen toegang tot bestandsbeheer aan de front-end of u kunt het eenvoudig gebruiken voor bepaalde gebruikersrollen, zoals allow_roles="editor,author" (gescheiden door komma(,))Het wordt tussen komma's vermeld. je kunt meer vergrendelen zoals ".php,.css,.js" etc. Standaard: NullHet toont bestandsbeheer aan de voorkant. Maar alleen de beheerder heeft er toegang toe en beheert de instellingen vanuit de bestandsbeheerinstellingen.Het toont bestandsbeheer aan de voorkant. U kunt alle instellingen beheren vanuit de instellingen van bestandsbeheer. Het werkt hetzelfde als backend WP File Manager.Laatste logberichtLichtLogboekenMap of map makenBestand makenMaximaal toegestane grootte op het moment dat de databaseback-up wordt hersteld.Maximale bestandsuploadgrootte (upload_max_filesize)Geheugenlimiet (memory_limit)Ontbrekende back-up-ID.Ontbrekend parametertype.Ontbrekende vereiste parameters.Nee, dank u welGeen logberichtAnderen back-up gedaan op datumOpmerking:Opmerking: dit zijn demo-screenshots. Koop a.u.b. File Manager pro to Logs-functies.Opmerking: dit is slechts een demo-screenshot. Koop onze pro-versie om instellingen te krijgen.Niets geselecteerd voor back-upNiets geselecteerd voor back-up.OKOKAnderen (alle andere mappen gevonden in wp-content)Anderen back-up gedaan op datum Anderen hebben een back-up gemaakt.Anderen back-up mislukt.Anderen back-up succesvol hersteld.PHP-versieParameters:Een bestand of map plakkenVoer e-mailadres in.Vul a.u.b. voornaam in.Vul a.u.b. achternaam in.Wijzig dit zorgvuldig, een verkeerd pad kan ertoe leiden dat de plug-in voor bestandsbeheer uitvalt.Verhoog de veldwaarde als u een foutmelding krijgt op het moment van het terugzetten van de back-up.Plug-insBack-up van plug-ins gedaan op datum Back-up van plug-ins gedaan.Back-up van plug-ins is mislukt.Back-up van plug-ins succesvol hersteld.Maximale bestandsuploadgrootte posten (post_max_size)VoorkeurenPrivacybeleidOpenbaar hoofdpadHERSTEL BESTANDENBestanden en mappen verwijderen of verwijderenDe naam van een bestand of map wijzigenHerstellenHet terugzetten wordt uitgevoerd, even geduld a.u.b.SUCCESWijzigingen opslaanBesparen...Zoek dingenBeveiligingsprobleem.Selecteer allesSelecteer back-up(s) om te verwijderen!InstellingenInstellingen - Code-editorInstellingen - AlgemeenInstellingen - GebruikersbeperkingenInstellingen - Beperkingen gebruikersrollenInstellingen opgeslagen.Shortcode - PROEenvoudig een bestand of map knippenSysteem eigenschappenServicevoorwaardenDe back-up is blijkbaar gelukt en is nu voltooid.Thema'sBack-up van thema's gedaan op datum Thema's back-up gedaan.Back-up van thema's is mislukt.Thema's back-up succesvol hersteld.Tijd nuTime-out (max_execution_time)Een archief of zip makenVandaagGEBRUIK:Kan geen databaseback-up maken.Kan back-up niet verwijderen!Kan DB-back-up niet herstellen.Kan anderen niet herstellen.Kan plug-ins niet herstellen.Kan thema's niet herstellen.Kan uploads niet herstellen.Bestanden uploaden LogboekenUpload bestandenUploadsUploads back-up gedaan op datum Uploads back-up gedaan.Uploaden back-up mislukt.Uploadt back-up succesvol hersteld.VerifiërenLogboek bekijkenWP BestandsbeheerWP Bestandsbeheer - Back-up/HerstellenBijdrage WP File ManagerWe maken graag nieuwe vrienden! Schrijf je hieronder in en we beloven je
    u op de hoogte houden van onze laatste nieuwe plug-ins, updates,
    geweldige aanbiedingen en een paar speciale aanbiedingen.Welkom bij BestandsbeheerU heeft geen wijzigingen aangebracht om op te slaan.voor toegang om bestanden te lezen toestemming, opmerking: waar/onwaar, standaard: waarvoor toegang tot schrijfrechten voor bestanden, opmerking: waar/onwaar, standaard: onwaarhet zal hier genoemd verbergen. Opmerking: gescheiden door komma(,). Standaard: Nulllanguages/wp-file-manager-uk.po000064400000104326147361034410012453 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 12:24+0530\n"
"PO-Revision-Date: 2022-03-02 10:28+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n"
"%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Резервне копіювання тем успішно відновлено."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Не вдалося відновити теми."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Завантаження резервної копії відновлено успішно."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Не вдалося відновити завантаження."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Інші резервні копії відновлено успішно."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Не вдалося відновити інші."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Резервне копіювання плагінів успішно відновлено."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Не вдалося відновити плагіни."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Резервне копіювання бази даних успішно відновлено."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Готово"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Не вдалося відновити резервну копію БД."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Резервні копії успішно видалено!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Не вдалося видалити резервну копію!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Резервне копіювання бази даних виконано на дату "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Резервне копіювання плагінів зроблено на дату "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Резервне копіювання тем виконано на дату "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Завантажує резервну копію, виконану на дату "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Інші резервні копії зроблено на дату "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Журнали"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Журналів не знайдено!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Нічого не вибрано для резервного копіювання"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Проблема безпеки."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Резервне копіювання бази даних виконано."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Не вдається створити резервну копію бази даних."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Резервне копіювання плагінів виконано."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Помилка резервного копіювання плагінів."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Резервне копіювання тем виконано."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Помилка резервного копіювання тем."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Резервне копіювання завантажень виконано."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Помилка резервного копіювання завантажень."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Інші резервні копії виконано."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Помилка інших резервних копій."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Менеджер файлів WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Налаштування"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Преференції"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Властивості системи"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Шорт-код - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Резервне копіювання/Відновлення"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Купуйте Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Пожертвувати"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Файл не існує для завантаження."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Недійсний код безпеки."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Відсутній ідентифікатор резервної копії."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Відсутній тип параметра."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Відсутні необхідні параметри."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Помилка: не вдається відновити резервну копію, оскільки резервна копія бази "
"даних має великий розмір. Будь ласка, спробуйте збільшити максимально "
"дозволений розмір у налаштуваннях."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Виберіть резервну(и) копію(и) для видалення!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Ви впевнені, що хочете видалити вибрані резервні копії?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Резервне копіювання запущено, зачекайте"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Відновлення виконується, зачекайте"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Нічого не вибрано для резервного копіювання."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Менеджер файлів WP - Резервне копіювання / відновлення"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Параметри резервного копіювання:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Резервне копіювання бази даних"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Резервне копіювання файлів"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Плагіни"

#: inc/backup.php:71
msgid "Themes"
msgstr "Теми"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Завантаження"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Інші (Будь-які інші каталоги, знайдені всередині wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Резервне копіювання зараз"

#: inc/backup.php:89
msgid "Time now"
msgstr "Час зараз"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "УСПІХ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Резервну копію успішно видалено."

#: inc/backup.php:102
msgid "Ok"
msgstr "Гаразд"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ВИДАЛИТИ ФАЙЛИ"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Ви впевнені, що хочете видалити цю резервну копію?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Скасувати"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Підтвердьте"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ВІДНОВИТИ ФАЙЛИ"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Ви впевнені, що хочете відновити цю резервну копію?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Останнє повідомлення журналу"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Резервне копіювання, мабуть, вдалося, і воно завершено."

#: inc/backup.php:171
msgid "No log message"
msgstr "Немає повідомлення журналу"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Існуючі резервні копії"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Дата резервного копіювання"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Резервне копіювання даних (натисніть, щоб завантажити)"

#: inc/backup.php:190
msgid "Action"
msgstr "Дія"

#: inc/backup.php:210
msgid "Today"
msgstr "Сьогодні"

#: inc/backup.php:239
msgid "Restore"
msgstr "Відновлювати"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Видалити"

#: inc/backup.php:241
msgid "View Log"
msgstr "Переглянути журнал"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "На даний момент резервних копій не знайдено."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Дії щодо вибраних резервних копій"

#: inc/backup.php:251
msgid "Select All"
msgstr "Вибрати все"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Скасувати вибір"

#: inc/backup.php:254
msgid "Note:"
msgstr "Примітка:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Файли резервних копій будуть розміщені під"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Внесок менеджера файлів WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Примітка: Це демонстраційні скріншоти. Будь ласка, придбайте File Manager "
"pro для функцій Журнали."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Натисніть, щоб купити PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Купуйте PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Редагувати журнали файлів"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Завантажте журнали файлів"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Завантажити журнали файлів"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Налаштування збережено."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Відхилити це повідомлення."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Ви не вносили жодних змін для збереження."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Суспільний кореневий шлях"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Кореневий шлях файлового менеджера, ви можете змінити за вашим вибором."

#: inc/root.php:59
msgid "Default:"
msgstr "За замовчуванням:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Будь-ласка, обережно змініть це, неправильний шлях може призвести до того, "
"що плагін файлового менеджера піде вниз."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Увімкнути кошик?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Після активації кошика ваші файли перейдуть до папки кошика."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Увімкнути завантаження файлів у медіатеку?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Після ввімкнення цього всі файли перейдуть до медіатеки."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Максимально дозволений розмір на момент відновлення резервної копії бази "
"даних."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Збільште значення поля, якщо ви отримуєте повідомлення про помилку під час "
"відновлення резервної копії."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Зберегти зміни"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Налаштування - Загальні"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Примітка: Це лише демонстраційний скріншот. Щоб отримати налаштування, "
"придбайте нашу про-версію."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Тут адміністратор може надати доступ до ролей користувачів для використання "
"файлового менеджера. Адміністратор може встановити папку доступу за "
"замовчуванням, а також керувати розміром завантажуваного файлу."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Налаштування - редактор коду"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Файловий менеджер має редактор коду з декількома темами. Ви можете вибрати "
"будь-яку тему для редактора коду. Він відображатиметься під час редагування "
"будь-якого файлу. Також ви можете дозволити повноекранний режим редактора "
"коду."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Перегляд редактора коду"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Налаштування - Обмеження користувача"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Адміністратор може обмежити дії будь-якого користувача. Також приховуйте "
"файли та папки та можете встановлювати різні шляхи до різних папок для "
"різних користувачів."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Налаштування - Обмеження ролей користувача"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Адміністратор може обмежити дії будь-якої користувацької ролі. Також "
"приховуйте файли та папки та можете встановлювати різні шляхи до різних "
"папок для різних ролей користувачів."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Файловий менеджер - Шорткод"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ВИКОРИСТАННЯ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Він покаже файловий менеджер на передньому плані. Ви можете керувати всіма "
"налаштуваннями за допомогою налаштувань файлового менеджера. Він працюватиме "
"так само, як і бекенд Менеджер файлів WP."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Він покаже файловий менеджер на передньому плані. Але тільки адміністратор "
"може отримати до нього доступ і керуватиме за допомогою налаштувань "
"файлового менеджера."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Параметри:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Це дозволить всім ролям отримати доступ до файлового менеджера на передньому "
"плані або ви можете просто використовувати для певних ролей користувачів, "
"наприклад, allow_roles=\"редактор,автор\" (розділений комою(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Тут \"test\" - це ім'я папки, яка знаходиться в кореневому каталозі, або ви "
"можете вказати шлях до підтек, наприклад, \"wp-content/plugins\". Якщо "
"залишити порожнім або порожнім, він отримає доступ до всіх папок у "
"кореневому каталозі. За замовчуванням: кореневий каталог"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"для доступу до дозволів на запис файлів примітка: true/false, за "
"замовчуванням: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"для доступу до дозволу на читання файлів примітка: true/false, за "
"замовчуванням: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"він приховає згадані тут. Примітка: розділяється комою (,). За "
"замовчуванням: Нуль"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Він буде заблокований, зазначений у комах. ви можете заблокувати більше, "
"наприклад \".php,.css,.js\" тощо. За замовчуванням: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* для всіх операцій і для дозволу деяких операцій ви можете вказати назву "
"операції, наприклад, allowed_operations=\"upload,download\". Примітка: "
"розділяється комою (,). За замовчуванням: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Список операцій з файлами:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Зробіть каталог або папку"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Зробити файл"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Перейменуйте файл або папку"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Дублюйте або клонуйте папку або файл"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Вставте файл або папку"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "заборона"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Зробити архів або zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Витягніть архів або заархівований файл"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Копіюйте файли або папки"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Просто виріжте файл або папку"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Відредагуйте файл"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Видалення або видалення файлів і папок"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Завантажте файли"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Завантажте файли"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Шукати речі"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Інформація про файл"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Допомога"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Це заборонить певних користувачів, просто ставлячи їх ідентифікатори, "
"розділені комами (,). Якщо користувач заборонений, він не зможе отримати "
"доступ до менеджера файлів wp на передній панелі."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Перегляд інтерфейсу користувача Filemanager. За замовчуванням: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Файл змінено або Створити формат дати. За замовчуванням: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Мова файлового менеджера. За замовчуванням: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Тема менеджера файлів. За замовчуванням: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Файловий менеджер - Властивості системи"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP версія"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Максимальний розмір файлу для завантаження (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr ""
"Опублікувати максимальний розмір файлу для завантаження (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Обмеження пам'яті (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Час очікування (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Браузер та ОС (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Змінити тему тут:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "За замовчуванням"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Темний"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Світло"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Сірий"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Ласкаво просимо до File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Ми любимо заводити нових друзів! Підпишіться нижче, і ми обіцяємо\n"
"    тримати вас в курсі наших останніх нових плагінів, оновлень,\n"
"    чудові пропозиції та кілька спеціальних пропозицій."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Будь ласка, введіть ім’я."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Введіть прізвище."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Введіть адресу електронної пошти."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Перевірити"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ні, дякую"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Умови обслуговування"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Політика конфіденційності"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Збереження ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "гаразд"

#~ msgid "Backup not found!"
#~ msgstr "Резервну копію не знайдено!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Резервну копію успішно видалено!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Нічого не вибрано для резервного "
#~ "копіювання</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Проблема безпеки.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Виконано резервне копіювання бази "
#~ "даних.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Неможливо створити резервну копію бази "
#~ "даних.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Зроблено резервне копіювання плагінів."
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не вдалося створити резервну копію "
#~ "плагінів.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Зроблено резервне копіювання тем.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не вдалося створити резервну копію тем. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Завантаження резервної копії зроблено. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не вдалося завантажити резервну копію. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Інші резервні копії зроблено.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Не вдалося створити резервну копію. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Все готово</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Керування файлами WP."

#~ msgid "Extensions"
#~ msgstr "Розширення"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Будь ласка, внесіть деякі пожертви, щоб зробити плагін стабільнішим. Ви "
#~ "можете сплатити суму за вашим вибором."
languages/wp-file-manager-he_IL.mo000064400000046231147361034410013011 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(�B)=(*Zf*B�*M+
R+*]+��+�e,YP-T�-�-T.Jd.J�.�./&/+C/%o/&�/#�/�/'�/04/0
d0o0�0�0�0�0�0%�0($1M1_1f17�1*�19�1"2 B2c2t2�2�2�2�28�2&3E3;W3�3��3}4,�4%�41�4`55#�6&�6�6�6�6<�668;9 T9�u9�k:��:��; r<�<�<%�<�<V�<=8=&v=�=�='�=
�=	>$>	B>�L>��>(a?)�?�?�?K�?(@;@[@*{@�@�@!�@#�@	A&AxEAq�A0B0=B!nB!�B2�BK�B1C>CZCyC,�C)�C
�C&�CD$D<DPDbD
yD%�D�D�D�D*�D1ENEgE*wE�E�E7�E
F0F(OF(xF2�F
�F"�F.G1G
:G<HG+�G,�G$�G&H-*H-XH �H�H�H2�H!�H!I4?ItI}I�I.�I�I�I'K1-Kf_Kk�Kf2L}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 10:17+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: he_IL
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* עבור כל הפעולות וכדי לאפשר פעולה כלשהי אתה יכול לציין את שם הפעולה כמו, allow_operations="להעלות, להוריד". הערה: מופרדים בפסיק(,). ברירת מחדל: *-> זה יאסור משתמשים מסוימים רק על ידי הצבת המזהים שלהם על ידי פסיקים (,). אם המשתמש הוא Ban אז הם לא יוכלו לגשת למנהל הקבצים wp בחזית.-> נושא מנהל הקבצים. ברירת מחדל: Light-> קובץ שונה או צור פורמט תאריך. ברירת מחדל: d M, Y h: i A-> שפת מנהל הקבצים. ברירת מחדל: English (en)-> תצוגת ממשק משתמש של Filemanager. ברירת מחדל: gridפעולהפעולות בגיבויים שנבחרומנהל מערכת יכול להגביל את הפעולות של כל משתמש. הסתיר גם קבצים ותיקיות ויכול להגדיר נתיבי תיקיות שונים עבור משתמשים שונים.מנהל מערכת יכול להגביל פעולות של כל משתמש משתמש. הסתיר גם קבצים ותיקיות ויכול להגדיר מסלולי תיקיות שונים - לתפקידי משתמשים שונים.לאחר הפעלת האשפה, הקבצים שלך יעברו לתיקיית האשפה.לאחר הפעלת זאת כל הקבצים יועברו לספריית המדיה.הכל בוצעהאם אתה בטוח שברצונך להסיר את הגיבויים שנבחרו?האם אתה בטוח שברצונך למחוק את הגיבוי הזה?האם אתה בטוח שברצונך לשחזר את הגיבוי הזה?תאריך גיבויגיבוי עכשיואפשרויות גיבוי:נתוני גיבוי (לחץ להורדה)קבצי הגיבוי יהיו תחתהגיבוי פועל, אנא המתןהגיבוי נמחק בהצלחה.שחזור גיבויגיבויים הוסרו בהצלחה!לֶאֱסוֹרדפדפן ומערכת הפעלה (HTTP_USER_AGENT)קנו PROקנה מקצועקנו פרולְבַטֵלשנה כאן נושא:לחץ כדי לקנות PROתצוגת עורך קודלְאַשֵׁרהעתק קבצים או תיקיותכרגע לא נמצאו גיבויים.מחק קבציםאפלגיבוי מסד נתוניםגיבוי מסד הנתונים נעשה בתאריך גיבוי מסד הנתונים נעשה.גיבוי מסד הנתונים שוחזר בהצלחה.בְּרִירַת מֶחדָלבְּרִירַת מֶחדָל:לִמְחוֹקבטל את הבחירהדחה הודעה זו.לִתְרוֹםהורד יומני קבציםלהוריד קבציםשכפול או שיבוט של תיקיה או קובץערוך יומני קבציםערוך קובץלאפשר העלאת קבצים לספריית המדיה?להפעיל אשפה?שגיאה: לא ניתן לשחזר את הגיבוי מכיוון שגיבוי מסד הנתונים כבד בגודלו. נסה להגדיל את הגודל המרבי המותר מהגדרות העדפות.גיבויים קיימיםחלץ ארכיון או קובץ מכווץמנהל הקבצים - קוד קצרמנהל הקבצים - מאפייני מערכתנתיב שורש של מנהל הקבצים, תוכלו לשנות בהתאם לבחירתכם.מנהל הקבצים כולל עורך קוד עם מספר נושאים. אתה יכול לבחור כל נושא לעורך הקוד. הוא יוצג כשתערוך קובץ כלשהו. ניתן גם לאפשר מצב מסך מלא של עורך הקוד.רשימת פעולות קבצים:הקובץ לא קיים להורדה.גיבוי קבציםאפורעֶזרָהכאן "מבחן" הוא שם התיקיה שנמצאת בספריית השורש, או שאתה יכול לתת נתיב לתיקיות משנה כמו "wp-content/plugins". אם תשאיר ריק או ריק, זה ייגש לכל התיקיות בספריית השורש. ברירת מחדל: ספריית שורשכאן מנהל יכול לתת גישה לתפקידי משתמש לשימוש במנהל הסרטים. מנהל מערכת יכול להגדיר תיקיית ברירת מחדל לגישה ולשלוט גם בגודל ההעלאה של מנהל התיקים.מידע על הקובץקוד אבטחה לא חוקי.זה יאפשר לכל התפקידים לגשת למנהל הקבצים בקצה הקצה או שאתה יכול להשתמש פשוט עבור תפקידי משתמש מסוימים כמו allow_roles="editor,author" (מופרד בפסיק(,))זה יינעל שהוזכר בפסיקים. אתה יכול לנעול יותר כמו ".php,.css,.js" וכו'. ברירת מחדל: Nullזה יראה את מנהל הקבצים בקצה הקצה. אבל רק מנהל יכול לגשת אליו והוא ישלוט מהגדרות מנהל הקבצים.זה יראה את מנהל הקבצים בקצה הקצה. אתה יכול לשלוט בכל ההגדרות מהגדרות מנהל הקבצים. זה יעבוד כמו מנהל הקבצים האחורי של WP.הודעת יומן אחרונהאוֹריומניםהכינו ספריה או תיקיהערוך קובץגודל מקסימלי מותר בזמן שחזור גיבוי מסד הנתונים.גודל העלאת קבצים מרבי (upload_max_filesize)מגבלת זיכרון (memory_limit)חסר מזהה גיבוי.חסר סוג פרמטר.חסרים פרמטרים נדרשים.לא תודהאין הודעת יומןלא נמצאו יומנים!הערה:הערה: אלה צילומי מסך של הדגמה. אנא קנה את מנהל מנהל הקבצים לפונקציות יומנים.הערה: זהו רק צילום מסך להדגמה. כדי לקבל הגדרות אנא קנו את גרסת המקצוענים שלנו.שום דבר לא נבחר לגיבוישום דבר לא נבחר לגיבוי.בסדרבסדראחרים (כל ספריות אחרות שנמצאו בתוך תוכן wp)גיבוי אחר נעשה בתאריך גיבוי אחרים בוצע.גיבוי אחרים נכשל.גיבוי אחר שוחזר בהצלחה.גרסת PHPפרמטרים:הדבק קובץ או תיקיהאנא הזן כתובת דוא"ל.אנא הזן שם פרטי.אנא הזן שם משפחה.אנא שנה את זה בזהירות, נתיב שגוי יכול לגרום לתוסף מנהל הקבצים לרדת.אנא הגדל את ערך השדה אם אתה מקבל הודעת שגיאה בזמן שחזור הגיבוי.תוספיםגיבוי התוספים נעשה בתאריך גיבוי תוספים נעשה.גיבוי תוספים נכשל.גיבוי התוספים שוחזר בהצלחה.פרסם גודל העלאה מקסימלי של קבצים (post_max_size)העדפותמדיניות פרטיותנתיב שורש ציבורילְאַשֵׁרהסר או מחק קבצים ותיקיותשנה שם של קובץ או תיקיהלשחזרהשחזור פועל, אנא המתןהַצלָחָהשמור שינוייםחִסָכוֹן...חפש דבריםבעיית אבטחה.בחר הכלבחר גיבוי(ים) למחיקה!הגדרותהגדרות - עורך קודהגדרות - כלליהגדרות - הגבלות משתמשיםהגדרות - הגבלות תפקיד משתמשהגדרות נשמרו.Shortcode - PROפשוט גזור קובץ או תיקיהמאפייני מערכתתנאי השירותהגיבוי כנראה הצליח וכעת הושלם.ערכות נושאגיבוי הנושאים נעשה בתאריך גיבוי ערכות נושא נעשה.גיבוי ערכות נושא נכשל.גיבוי הנושאים שוחזר בהצלחה.עכשיופסק זמן (max_execution_time)כדי ליצור ארכיון או מיקודהיוםלהשתמש:לא ניתן ליצור גיבוי למסד הנתונים.לא ניתן להסיר את הגיבוי!לא ניתן לשחזר את גיבוי DB.לא ניתן לשחזר אחרים.לא ניתן לשחזר תוספים.לא ניתן לשחזר ערכות נושא.לא ניתן לשחזר את ההעלאות.העלאת יומני קבציםהעלה קבציםהעלאותהעלאות הגיבוי בוצעו בתאריך גיבוי העלאות נעשה.גיבוי העלאות נכשל.העלאות הגיבוי שוחזרו בהצלחה.תאשרצפה בלוגמנהל קבצי WPמנהל קבצי WP - גיבוי / שחזורתרומת מנהל קבצי WPאנחנו אוהבים להכיר חברים חדשים! הירשם למטה ואנחנו מבטיחים
    עדכן אותך עם התוספים החדשים האחרונים שלנו, העדכונים,
    מבצעים מדהימים וכמה מבצעים מיוחדים.ברוך הבא למנהל הקבציםלא ביצעת שינויים כדי לשמור.לגישה להרשאת קריאה של קבצים, שים לב: true/false, ברירת מחדל: trueלגישה להרשאות כתיבה של קבצים, שימו לב: true/false, ברירת מחדל: falseזה יסתתר המוזכר כאן. הערה: מופרדים בפסיק(,). ברירת מחדל: Nulllanguages/wp-file-manager-fr_FR.mo000064400000045433147361034410013032 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�P(�%):�)J4*?*P�*+1+�I+�,P�,IK-�-A�-8�-8.R.e.|.3�.&�.;�.#,/P/'k/	�/"�/�/�/�/�/�/0	20#<0.`0�0�0!�07�0-1E51{1�1�1�1)�1�1#�12,2F2e2@y2�2��2�3+�3�30�3U/4�4)�5)�5�5�5�5
6�788�<8v"9��9�E:*;E;L;#U;y;`�;D�;!1<#S<w<�<	�<�<�<�<x�<�n=%�=)>G>P>7Y>#�>�>$�>,�>'?3?@?!`?�?"�?{�?x:@�@)�@"�@%A:.AIiA
�A�A�A�A3B!BB	dB0nB�B�B�B�B�BC3CLCXCwC&�C1�C�CD*D>DWD@pD�D)�D"�D%E:,E
gEuE �E�E
�E:�E(F=1F#oF$�F$�F.�F#G0GKG6]G2�G/�G2�G	*H4HHH5dH+�H��H*�I9�IZJ_bJX�J}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-02 17:54+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: fr_FR
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n > 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* pour toutes les opérations et pour autoriser certaines opérations, vous pouvez mentionner le nom de l'opération comme, allow_operations="upload,download". Remarque : séparés par une virgule (,). Défaut: *-> Il interdira certains utilisateurs en mettant simplement leurs identifiants séparés par des virgules (,). Si l'utilisateur est Ban, il ne pourra pas accéder au gestionnaire de fichiers wp sur le front-end.-> Thème du gestionnaire de fichiers. Par défaut : Light-> Fichier modifié ou créer un format de date. Par défaut: d M, Y h:i A-> Langue du gestionnaire de fichiers. Par défaut: English(en)-> Vue de l'interface utilisateur du gestionnaire de fichiers. Par défaut: gridactionActions sur la ou les sauvegardes sélectionnéesL'administrateur peut restreindre les actions de n'importe quel utilisateur. Masquez également les fichiers et les dossiers et peut définir des chemins de dossiers différents pour différents utilisateurs.L'administrateur peut restreindre les actions de n'importe quel rôle utilisateur. Masquez également les fichiers et les dossiers et peut définir des chemins de dossiers différents pour différents rôles d'utilisateurs.Après avoir activé la corbeille, vos fichiers iront dans le dossier Corbeille.Après avoir activé cela, tous les fichiers iront dans la médiathèque.TerminéVoulez-vous vraiment supprimer les sauvegardes sélectionnées ?Êtes-vous sûr de vouloir supprimer cette sauvegarde ?Êtes-vous sûr de vouloir restaurer cette sauvegarde ?Date de sauvegardeSauvegarder maintenantOptions de sauvegarde :Données de sauvegarde (cliquez pour télécharger)Les fichiers de sauvegarde seront sousLa sauvegarde est en cours d'exécution, veuillez patienterSauvegarde supprimée avec succès.Restauration de sauvegardeSauvegardes supprimées avec succès !InterdireNavigateur et OS (HTTP_USER_AGENT)Acheter PROAcheter ProAnnulerChangez de thème ici :Cliquez pour acheter PROAffichage de l'éditeur de codeConfirmerCopier des fichiers ou des dossiersAucune sauvegarde(s) trouvée(s) actuellement.SUPPRIMER LES FICHIERSSombreSauvegarde de la base de donnéesSauvegarde de la base de données effectuée à la dateSauvegarde de la base de données effectuée.La sauvegarde de la base de données a été restaurée avec succès.DéfautDéfaut:EffacerDésélectionnerNe tenez pas compte de cet avertissement.Faire un donTélécharger les fichiers journauxTelecharger des fichiersDupliquer ou cloner un dossier ou un fichierModifier les fichiers journauxModifier un fichierActiver le téléchargement de fichiers vers la médiathèque ?Activer la corbeille ?Erreur : Impossible de restaurer la sauvegarde car la sauvegarde de la base de données est lourde. Veuillez essayer d'augmenter la taille maximale autorisée à partir des paramètres de préférences.Sauvegarde(s) existante(s)Extraire l'archive ou le fichier compresséFailihaldur - Code courtGestionnaire de fichiers - Propriétés systèmeChemin racine du gestionnaire de fichiers, vous pouvez le modifier selon votre choix.File Manager a un éditeur de code avec plusieurs thèmes. Vous pouvez sélectionner n'importe quel thème pour l'éditeur de code. Il s'affichera lorsque vous modifierez un fichier. Vous pouvez également autoriser le mode plein écran de l'éditeur de code.Liste des opérations sur les fichiers :Le fichier n'existe pas à télécharger.Sauvegarde de fichiersGriseAiderIci, "test" est le nom du dossier qui se trouve dans le répertoire racine, ou vous pouvez donner le chemin des sous-dossiers comme "wp-content/plugins". Si laissé vide ou vide, il accédera à tous les dossiers du répertoire racine. Par défaut : répertoire racineIci, l'administrateur peut donner accès aux rôles d'utilisateur pour utiliser le gestionnaire de fichiers. L'administrateur peut définir le dossier d'accès par défaut et également contrôler la taille de téléchargement du gestionnaire de fichiers.Infos du fichierCode de sécurité invalide.Il permettra à tous les rôles d'accéder au gestionnaire de fichiers sur le front-end ou vous pouvez utiliser simplement pour des rôles d'utilisateur particuliers comme comme allow_roles="editor,author" (séprated by comma(,))Il verrouillera mentionné entre virgules. vous pouvez verrouiller plus comme ".php,.css,.js" etc. Par défaut : NullIl affichera le gestionnaire de fichiers sur le front-end. Mais seul l'administrateur peut y accéder et contrôlera à partir des paramètres du gestionnaire de fichiers.Il affichera le gestionnaire de fichiers sur le front-end. Vous pouvez contrôler tous les paramètres à partir des paramètres du gestionnaire de fichiers. Cela fonctionnera de la même manière que le backend WP File Manager.Dernier message de journalclaireJournauxCréer un répertoire ou un dossierCréer un fichierTaille maximale autorisée au moment de la restauration de la sauvegarde de la base de données.Taille maximale du téléchargement du fichier (upload_max_filesize)Limite de mémoire (memory_limit)Identifiant de sauvegarde manquant.Type de paramètre manquant.Paramètres requis manquants.Non merciAucun message de journalAucun journal trouvé !Noter:Remarque : Il s'agit de captures d'écran de démonstration. Veuillez acheter File Manager pro pour les fonctions Logs.Remarque : il ne s'agit que d'une capture d'écran de démonstration. Pour obtenir les paramètres, veuillez acheter notre version pro.Rien sélectionné pour la sauvegardeRien de sélectionné pour la sauvegarde.d'accordD'accordAutres (Tout autre répertoire trouvé dans wp-content)Autre sauvegarde effectuée à dateAutres sauvegardes effectuées.La sauvegarde des autres a échoué.Autres sauvegardes restaurées avec succès.version PHPParamètres:Coller un fichier ou un dossierVeuillez saisir l'adresse e-mail.Palun sisestage eesnimi.Veuillez saisir le nom de famille.Veuillez modifier cela avec précaution, un mauvais chemin peut entraîner l'arrêt du plug-in du gestionnaire de fichiers.Veuillez augmenter la valeur du champ si vous recevez un message d'erreur au moment de la restauration de la sauvegarde.PluginsSauvegarde des plugins effectuée à dateSauvegarde des plugins effectuée.La sauvegarde des plugins a échoué.La sauvegarde des plugins a été restaurée avec succès.Affiche la taille maximale de téléchargement de fichier (post_max_size)PréférencesPolitique de confidentialitéChemin racine publicRESTAURATION DES FICHIERSSupprimer ou supprimer des fichiers et des dossiersRenommer un fichier ou un dossierRestaurerLa restauration est en cours, veuillez patienterla victoireSauvegarder les modificationsÉconomie...Rechercher des chosesProblème de sécurité.Tout sélectionnerSélectionnez la ou les sauvegardes à supprimer !ParamètresParamètres - Éditeur de codeParamètres - GénéralParamètres - Restrictions utilisateurParamètres - Restrictions de rôle d'utilisateurParamètres sauvegardés.Code court - PROCouper simplement un fichier ou un dossierPropriétés du systèmeConditions d'utilisationLa sauvegarde a apparemment réussi et est maintenant terminée.ThèmesSauvegarde des thèmes effectuée à dateSauvegarde des thèmes effectuée.La sauvegarde des thèmes a échoué.La sauvegarde des thèmes a été restaurée avec succès.C'est l'heureTimeout (max_execution_time)Pour faire une archive ou un zipAujourd'huiKASUTAMINE :Impossible de créer la sauvegarde de la base de données.Impossible de supprimer la sauvegarde !Impossible de restaurer la sauvegarde de la base de données.Impossible de restaurer les autres.Impossible de restaurer les plugins.Impossible de restaurer les thèmes.Impossible de restaurer les téléchargements.Télécharger des fichiers journauxTélécharger des fichiersTéléchargementsSauvegarde des téléchargements effectuée à la dateLa sauvegarde des téléchargements est terminée.La sauvegarde des téléchargements a échoué.Téléverse la sauvegarde restaurée avec succès.VérifierAfficher le journalGestionnaire de fichiers WPGestionnaire de fichiers WP - Sauvegarde/restaurationContribution du gestionnaire de fichiers WPNous adorons nous faire de nouveaux amis ! Abonnez-vous ci-dessous et nous nous engageons à
   vous tenir au courant de nos derniers nouveaux plugins, mises à jour,
   offres incroyables et quelques offres spéciales.Bienvenue dans le gestionnaire de fichiersVous n'avez effectué aucune modification à enregistrer.pour l'accès à la permission de lire les fichiers, note : true/false, par défaut : truepour l'accès aux autorisations d'écriture de fichiers, note : true/false, par défaut : falseil cachera mentionné ici. Remarque : séparés par une virgule (,). Par défaut : Nullanguages/wp-file-manager-hi_IN - Copy.mo000064400000000674147361034410014030 0ustar00��$,,�-Project-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
POT-Creation-Date: 2017-09-06 09:29+0000
PO-Revision-Date: 2017-09-06 11:34+0000
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: hi_IN
Plural-Forms: nplurals=2; plural=n != 1;
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: Loco https://localise.biz/languages/wp-file-manager-gl_ES.po000064400000070320147361034410013021 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 18:30+0530\n"
"PO-Revision-Date: 2022-02-25 18:34+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: gl_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "A copia de seguridade de temas restaurouse correctamente."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Non se poden restaurar os temas."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "As copias de seguridade restauráronse correctamente."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Non se poden restaurar as cargas."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Outras copias de seguridade restauráronse correctamente."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Non se poden restaurar outros."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "A copia de seguridade dos complementos restaurouse correctamente."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Non se poden restaurar os complementos."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Restaurouse correctamente a copia de seguridade da base de datos."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Todo feito"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Non se pode restaurar a copia de seguridade da base de datos."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Elimináronse correctamente as copias de seguridade."

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Non se puido eliminar a copia de seguridade."

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "A copia de seguridade da base de datos realizouse na data "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "A copia de seguridade dos complementos foi feita na data "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Copia de seguridade de temas feita na data "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "As copias de seguridade realizáronse na data "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Outras copias de seguridade realizadas na data "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Rexistros"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Non se atoparon rexistros."

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Non se seleccionou nada para a copia de seguranza"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Problema de seguridade."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Copia de seguranza da base de datos feita."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Non se puido crear a copia de seguranza da base de datos."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Copia de seguranza dos complementos feita."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Fallou a copia de seguranza dos complementos."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Copia de seguranza dos temas feita."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Produciuse un erro na copia de seguranza dos temas."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Feito a copia de seguranza das cargas."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Produciuse un erro na copia de seguranza das cargas."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Feito a copia de seguridade doutros."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Fallou a copia de seguranza doutros."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Xestor de ficheiros WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Configuración"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferencias"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Propiedades do sistema"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Copia de seguranza/Restauración"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Compra Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Doa"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "O ficheiro non existe para descargar."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Código de seguridade non válido."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Falta o ID de copia de seguridade."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Falta o tipo de parámetro."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Faltan os parámetros requiridos."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Erro: non se puido restaurar a copia de seguranza porque a copia de "
"seguranza da base de datos ten un gran tamaño. Tenta aumentar o tamaño "
"máximo permitido desde a configuración de Preferencias."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Selecciona copias de seguranza para eliminar."

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Seguro que queres eliminar as copias de seguridade seleccionadas?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "A copia de seguridade está en execución. Agarde"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "A restauración estase executando, agarde"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Non se seleccionou nada para a copia de seguranza."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Xestor de ficheiros WP - Copia de seguridade / restauración"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opcións de copia de seguridade:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Copia de seguridade da base de datos"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Copia de seguridade de ficheiros"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Complementos"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temas"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Cargas"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Outros (Calquera outro directorio atopado dentro de wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Fai unha copia de seguridade agora"

#: inc/backup.php:89
msgid "Time now"
msgstr "Hora agora"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ÉXITO"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Eliminouse correctamente a copia de seguridade."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ELIMINA FICHEIROS"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Seguro que queres eliminar esta copia de seguridade?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Cancelar"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Confirmar"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RESTAURAR FICHEIROS"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Seguro que queres restaurar esta copia de seguridade?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Última mensaxe de rexistro"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "A copia de seguridade aparentemente tivo éxito e agora está completa."

#: inc/backup.php:171
msgid "No log message"
msgstr "Non hai ningunha mensaxe de rexistro"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Copia de seguridade existente"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Data de copia de seguridade"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Datos de copia de seguridade (fai clic para descargar)"

#: inc/backup.php:190
msgid "Action"
msgstr "Acción"

#: inc/backup.php:210
msgid "Today"
msgstr "Hoxe"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restaurar"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Eliminar"

#: inc/backup.php:241
msgid "View Log"
msgstr "Ver rexistro"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Actualmente non se atoparon copias de seguridade."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Accións sobre as copias de seguridade seleccionadas"

#: inc/backup.php:251
msgid "Select All"
msgstr "Seleccionar todo"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deseleccionar"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Os ficheiros de copia de seguridade estarán baixo"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Contribución do xestor de ficheiros WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nota: Estas son capturas de pantalla de demostración. Compre File Manager "
"pro para as funcións de Rexistros."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Fai clic para comprar PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Compra PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Editar rexistros de ficheiros"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Descargar rexistros de ficheiros"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Cargar ficheiros de rexistros"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Configuración gardada."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Rexeita este aviso."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Non fixo ningún cambio para gardalo."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Camiño de raíz público"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Camiño raíz do xestor de ficheiros, pode cambiar segundo a súa elección."

#: inc/root.php:59
msgid "Default:"
msgstr "Predeterminado:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Cambie isto coidadosamente, o camiño incorrecto pode levar a baixar o "
"complemento do xestor de ficheiros."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Queres activar o lixo?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Despois de habilitar o lixo, os teus ficheiros irán ao cartafol do lixo."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Queres activar a carga de ficheiros na biblioteca multimedia?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Despois de habilitalo, todos os ficheiros irán á biblioteca multimedia."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Tamaño máximo permitido no momento da restauración da copia de seguridade da "
"base de datos."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Aumente o valor do campo se recibe unha mensaxe de erro no momento da "
"restauración da copia de seguranza."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Gardar cambios"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Configuración - Xeral"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nota: Esta é só unha captura de pantalla de demostración. Para obter "
"configuración, compra a nosa versión profesional."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Aquí o administrador pode dar acceso aos roles de usuario para usar o xestor "
"de ficheiros. O administrador pode configurar o cartafol de acceso "
"predeterminado e tamén controlar o tamaño de carga do xestor de ficheiros."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Configuración: editor de código"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"O Xestor de ficheiros ten un editor de código con varios temas. Podes "
"seleccionar calquera tema para o editor de código. Amosarase cando edite "
"calquera ficheiro. Tamén pode permitir o modo de pantalla completa do editor "
"de código."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Vista do editor de código"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Configuración: restricións de usuario"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"O administrador pode restrinxir as accións de calquera usuario. Tamén oculta "
"ficheiros e cartafoles e pode establecer camiños de cartafoles diferentes "
"para diferentes usuarios."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Configuración - Restricións de funcións de usuario"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"O administrador pode restrinxir as accións de calquera rol de usuario. Tamén "
"oculta ficheiros e cartafoles e pode definir camiños de cartafoles "
"diferentes para papeis de usuarios diferentes."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Xestor de ficheiros: código abreviado"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "USO:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Mostrará o xestor de ficheiros na interface. Podes controlar todas as "
"opcións desde a configuración do xestor de ficheiros. Funcionará igual que o "
"Xestor de ficheiros WP de fondo."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Mostrará o xestor de ficheiros na interface. Pero só o administrador pode "
"acceder a el e controlará desde a configuración do xestor de ficheiros."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parámetros:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Permitirá que todos os roles accedan ao xestor de ficheiros na interface ou "
"Podes usar de forma sinxela para roles de usuario particulares como "
"allow_roles=\"editor,author\" (separado por coma (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Aquí \"proba\" é o nome do cartafol que se atopa no directorio raíz, ou pode "
"dar o camiño para os subcartafoles como \"wp-content/plugins\". Se o deixas "
"en branco ou baleiro accederá a todos os cartafoles do directorio raíz. "
"Predeterminado: directorio raíz"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"para acceder aos permisos de escritura de ficheiros, nota: verdadeiro/falso, "
"predeterminado: falso"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"para acceder ao permiso de lectura de ficheiros, nota: verdadeiro/falso, "
"predeterminado: verdadeiro"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"ocultarase aquí mencionado. Nota: separados por coma (,). Valor "
"predeterminado: nulo"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Bloquearase mencionado entre comas. pode bloquear máis como \".php,.css,.js"
"\" etc. Valor predeterminado: nulo"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* Para todas as operacións e para permitir algunha operación, pode mencionar "
"o nome da operación como permitido_operations=\"cargar, descargar\". Nota: "
"separados por coma (,). Predeterminado: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lista de operacións de ficheiros:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Facer directorio ou cartafol"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Facer arquivo"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Cambia o nome dun ficheiro ou cartafol"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplicar ou clonar un cartafol ou ficheiro"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Pega un ficheiro ou cartafol"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Prohibición"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Para facer un arquivo ou zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extraer arquivo ou arquivo comprimido"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copia ficheiros ou cartafoles"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Corte simple dun arquivo ou cartafol"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Edite un ficheiro"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Elimina ou elimina ficheiros e cartafoles"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Descargar ficheiros"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Cargar ficheiros"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Busca cousas"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Información do ficheiro"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Axuda"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Prohibirá a determinados usuarios só poñendo os seus identificadores "
"separados por comas (,). Se o usuario é Ban, non poderán acceder ao xestor "
"de ficheiros wp na interface."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI View. Por defecto: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Arquivo modificado ou Crear formato de data. Predeterminado: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Idioma do xestor de ficheiros. Predeterminado: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema Xestor de ficheiros. Predeterminado: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Xestor de ficheiros - Propiedades do sistema"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versión PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Tamaño máximo de carga de ficheiro (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Envía o tamaño máximo de carga do ficheiro (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Límite de memoria (memoria_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Tempo de espera (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Navegador e SO (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Cambia de tema aquí:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Predeterminado"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Escuro"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Luz"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Gris"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Benvido ao Xestor de ficheiros"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Encántanos facer novos amigos. Subscríbete a continuación e prometemos "
"facelo\n"
"    estar ao día cos nosos novos complementos, actualizacións,\n"
"    ofertas incribles e algunhas ofertas especiais."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Introduza o nome."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Introduza o apelido."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Introduza o enderezo de correo electrónico."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verificar"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Non, grazas"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Termos de servizo"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Política de Privacidade"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Gardando ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "Ok"

#~ msgid "Backup not found!"
#~ msgstr "Non se atopou a copia de seguridade."

#~ msgid "Backup removed successfully!"
#~ msgstr "Eliminouse correctamente a copia de seguridade."

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Non hai nada seleccionado para a copia "
#~ "de seguridade</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Problema de seguridade.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Fixo a copia de seguridade da base de "
#~ "datos.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Non se pode crear unha copia de "
#~ "seguridade da base de datos.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Fixo a copia de seguridade dos "
#~ "complementos.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Fallou a copia de seguridade dos "
#~ "complementos.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Fixo a copia de seguridade dos temas.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Fallou a copia de seguridade dos temas.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Fixo a copia de seguridade das cargas."
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Fallou a copia de seguranza das cargas.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Outras copias de seguridade realizadas."
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Fallou a copia de seguridade doutras.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Todo feito</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Xestiona os teus ficheiros WP."

#~ msgid "Extensions"
#~ msgstr "Extensións"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Contribúe con algunha doazón, para que o complemento sexa máis estable. "
#~ "Podes pagar cantidade da túa elección."
languages/wp-file-manager-fi.mo000064400000042267147361034410012434 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�N(�)*�)J�)0&*)W*�*%�*��*�S+K,LT,�,0�,0�,2-?-W-i-)�-�-&�-�-. .	9.1C.u.~.	�.�.�.�.	�.�.,/-/>/D/&a/#�/&�/�/�/�/�/�/
0020&C0j0�09�0 �0��0�1!�1�1/�1=2�U2-3G3f3�3�3��3�x4X5i5��5dD6��6�D7�7
88828B?8-�8�8�8�8�8	9(989
M9VX9V�9*:+1:]:`:9c:!�:�:%�:'�:
';2;>;Y;
r;�;V�;X�;?<'L<"t<)�<'�<+�<=!=7=K=)]=$�=	�=�=�=�=�=�=> >#/>	S>]>v>"�>'�>�>�>,�>*?
F?6T?�?#�?�?%�?#�?@!(@#J@	n@x@0�@ �@,�@AA:ATAsA�A	�A$�A!�A(�A$B=BFBSB2kB'�B��B�C0�C@�CC#DOgD}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 12:20+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: fi
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* Kaikille toiminnoille ja joidenkin toimintojen sallimiseksi voit mainita toiminnon nimen muodossa, enabled_operations="upload,download". Huomautus: erotettu pilkulla (,). Oletus: *-> Se kieltää tietyt käyttäjät asettamalla tunnuksensa pilkulla (,). Jos käyttäjä on Ban, he eivät voi käyttää wp-tiedostojen hallintaa käyttöliittymässä.-> Tiedostonhallinnan teema. Oletus: Light-> Tiedosto muokattu tai Luo päivämäärä -muoto. Oletus: d M, Y h: i A-> Tiedostonhallinnan kieli. Oletus: English(en)-> Filemanager UI -näkymä. Oletus: gridToimintaToimet valitun varmuuskopion jälkeenJärjestelmänvalvoja voi rajoittaa minkä tahansa käyttäjän toimia. Piilota myös tiedostot ja kansiot ja voi asettaa erilaiset kansiopolut eri käyttäjille.Järjestelmänvalvoja voi rajoittaa minkä tahansa käyttäjän roolin toimintoja. Piilota myös tiedostot ja kansiot ja voi asettaa erilaiset kansiopolut eri käyttäjärooleille.Kun roskakori on otettu käyttöön, tiedostosi menevät roskakorikansioon.Kun tämä on otettu käyttöön, kaikki tiedostot menevät mediakirjastoon.ValmistaHaluatko varmasti poistaa valitut varmuuskopiot?Haluatko varmasti poistaa tämän varmuuskopion?Haluatko varmasti palauttaa tämän varmuuskopion?VarmuuskopiointipäiväVarmuuskopioi nytVarmuuskopiointivaihtoehdot:Varmuuskopiotiedot (lataa napsauttamalla)Varmuuskopiotiedostot ovat alleVarmuuskopiointi on käynnissä, odotaVarmuuskopiointi poistettu.VarmuuskopioVarmuuskopiot poistettu!kieltääSelain ja käyttöjärjestelmä (HTTP_USER_AGENT)Osta PROOsta ProPeruuttaaVaihda teema täällä:Napsauta ostaaksesi PROKoodieditorinäkymäVahvistaaKopioi tiedostoja tai kansioitaTällä hetkellä varmuuskopioita ei löydy.POISTA TIEDOSTOTTummaTietokannan varmuuskopiointiTietokannan varmuuskopiointi on tehty Tietokannan varmuuskopiointi tehty.Tietokannan varmuuskopiointi onnistui.OletusOletus:PoistaaPoista valintaHylkää tämä ilmoitus.LahjoittaaLataa tiedostolokitLataa tiedostojaKopioi tai kloonaa kansio tai tiedostoMuokkaa tiedostolokejaMuokkaa tiedostoaOtetaanko tiedostojen lataus mediakirjastoon käyttöön?Otetaanko roskakori käyttöön?Virhe: Varmuuskopiota ei voida palauttaa, koska tietokannan varmuuskopio on kooltaan suuri. Yritä suurentaa Suurin sallittu koko Asetukset-asetuksista.Olemassa olevat varmuuskopiotPura arkisto tai pakattu tiedostoTiedostonhallinta - Lyhytkoodi Tiedostonhallinta - Järjestelmän ominaisuudetTiedostonhallinnan juuripolku, voit muuttaa valintasi mukaan.Tiedostonhallinnassa on koodieditori, jossa on useita teemoja. Voit valita minkä tahansa teeman koodieditorille. Se näkyy, kun muokkaat mitä tahansa tiedostoa. Voit myös sallia koodieditorin koko näytön tilan.Tiedostotoimintoluettelo:Tiedostoa ei ole ladattavissa.Tiedostojen varmuuskopiointiharmaaautaTässä "testi" on sen kansion nimi, joka sijaitsee juurihakemistossa, tai voit antaa polun alikansioille kuten "wp-content/plugins". Jos jätetään tyhjäksi, se käyttää kaikkia juurihakemiston kansioita. Oletus: juurihakemistoTäällä järjestelmänvalvoja voi antaa käyttöoikeuden käyttäjärooleihin käyttääksesi tiedostojen hallintaa. Järjestelmänvalvoja voi asettaa oletuskäyttökansion ja hallita myös tiedostonhallinnan latauskokoa.Tiedoston tiedotVirheellinen turvakoodi.Se antaa kaikille rooleille pääsyn tiedostonhallintaan käyttöliittymässä tai voit käyttää vain tiettyjä käyttäjärooleja, kuten sallittu_roles="editor,author" (erottuna pilkulla(,))Se lukittuu pilkuilla mainittuna. voit lukita enemmän esimerkiksi ".php,.css,.js" jne. Oletus: NullSe näyttää tiedostonhallinnan käyttöliittymässä. Mutta vain järjestelmänvalvoja voi käyttää sitä ja hallitsee tiedostonhallinnan asetuksista.Se näyttää tiedostonhallinnan käyttöliittymässä. Voit hallita kaikkia asetuksia tiedostonhallinnan asetuksista. Se toimii samalla tavalla kuin backend WP tiedostonhallinta.Viimeinen lokiviestiKevytLokitLuo hakemisto tai kansioTee tiedostoSuurin sallittu koko tietokannan varmuuskopion palautuksen aikana.Tiedoston enimmäiskoko (upload_max_filesize)Muistiraja (memory_limit)Varmuuskopiotunnus puuttuu.Parametrityyppi puuttuu.Vaaditut parametrit puuttuvat.Ei kiitosEi lokiviestiäLokeja ei löytynyt!merkintä:Huomaa: Nämä ovat esittelykuvakaappauksia. Osta File Manager pro to Logs -toiminnot.Huomaa: Tämä on vain esittelykuvakaappaus. Saadaksesi asetukset, osta pro-versiomme.Varmuuskopiointiin ei ole valittu mitäänVarmuuskopiointiin ei ole valittu mitään.OKOkMuut (muut hakemistot, jotka löytyvät wp-sisällöstä)Toiset varmuuskopiointi on tehty Muut varmuuskopiot tehty.Muiden varmuuskopiointi epäonnistui.Toisten varmuuskopiointi on palautettu.PHP-versioParametrit:Liitä tiedosto tai kansioAnna sähköpostiosoite.Anna etunimi.Anna sukunimi.Muuta tätä varovasti, väärä polku voi johtaa tiedostojen hallinnan laajennukseen.Suurenna kentän arvoa, jos saat virheilmoituksen varmuuskopion palautuksen yhteydessä.LaajennuksetLaajennusten varmuuskopiointi on tehty Lisäosien varmuuskopiointi tehty.Lisäosien varmuuskopiointi epäonnistui.Laajennusten varmuuskopiointi onnistui.Viestin enimmäislatauskoko (post_max_size)prefrenssitTietosuojakäytäntöJulkinen juuripolkuPALAUTA TIEDOSTOTPoista tai poista tiedostoja ja kansioitaNimeä tiedosto tai kansio uudelleenPalauttaaPalautus on käynnissä, odotaMENESTYSTallenna muutoksetTallentaa...Etsi asioitaTurvallisuuskysymys.Valitse kaikkiValitse poistettavat varmuuskopiot!asetuksetAsetukset - KoodieditoriAsetukset - YleisetAsetukset - KäyttäjärajoituksetAsetukset - KäyttäjäroolirajoituksetAsetukset Tallennettu.Lyhytkoodi - PROLeikkaa tiedosto tai kansio yksinkertaisestiJärjestelmän ominaisuudetKäyttöehdotVarmuuskopiointi onnistui ilmeisesti ja on nyt valmis.TeematTeemojen varmuuskopiointi on tehty Teeman varmuuskopiointi tehty.Teeman varmuuskopiointi epäonnistui.Teemojen varmuuskopiointi onnistui.Aika NytAikakatkaisu (max_execution_time)Arkiston tai zip-tiedoston luominenTänäänKÄYTTÄÄ:Tietokannan varmuuskopion luominen epäonnistui.Varmuuskopiota ei voitu poistaa!Tietokannan varmuuskopiota ei voi palauttaa.Muita ei voi palauttaa.Laajennuksia ei voi palauttaa.Teemoja ei voi palauttaa.Lähetyksiä ei voi palauttaa.Lähetä tiedostolokitLähetä tiedostojaLatauksetLatausten varmuuskopiointi on tehty Latausten varmuuskopiointi tehty.Latausten varmuuskopiointi epäonnistui.Latausten varmuuskopiointi onnistui.VahvistaNäytä lokiWP-tiedostojen hallintaWP tiedostonhallinta - Varmuuskopiointi / palautusWP-tiedostojen hallinnan osallistuminenRakastamme uusien ystävien hankkimista! Tilaa alla ja lupaamme
    pitää sinut ajan tasalla uusimmista uusista laajennuksistamme, päivityksistämme,
    mahtavia tarjouksia ja muutama erikoistarjous.Tervetuloa TiedostonhallintaanEt ole tehnyt mitään tallennettavia muutoksia.tiedostojen lukulupaa varten huomautus: tosi/false, oletus: tositiedostojen kirjoitusoikeudet, huomautus: tosi/false, oletus: falsese piiloutuu mainittuun tänne. Huomautus: erotettu pilkulla (,). Oletus: Nollalanguages/wp-file-manager-eo.po000064400000064766147361034410012454 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 17:05+0530\n"
"PO-Revision-Date: 2022-02-28 15:39+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Sekurkopioj de sekurkopioj restarigitaj sukcese."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Ne eblas restarigi temojn."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Alŝutoj de sekurkopioj restarigitaj sukcese."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Ne eblas restarigi alŝutojn."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Aliaj sekurkopioj sukcese restaŭris."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Ne povas restarigi aliajn."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Kromaĵoj-rezervo sukcese restarigis."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Ne eblas restarigi kromprogramojn."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Datumbaza rezervo sukcese restaŭris."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Ĉio Farita"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Ne eblas restarigi DB-sekurkopion."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Sekurkopioj forigitaj sukcese!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Ne eblas forigi sekurkopion!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Datumbaza rezervo farita ĝis nun "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Kromaĵoj-sekurkopio farita ĝis nun "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Temoj rezervo farita je dato "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Alŝutoj de sekurkopioj plenumitaj ĝis nun "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Aliaj sekurkopioj plenumitaj ĝis nun "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Registroj"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Neniuj protokoloj trovitaj!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Nenio elektita por sekurkopio"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Sekureca Problemo."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Sekurkopio de datumbazo farita."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Ne eblas krei datumbazan sekurkopion."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Sekurkopio de kromprogramoj farita."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Sekurkopio de kromprogramoj malsukcesis."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Temoj rezervo farita."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Sekurkopio de la temoj malsukcesis."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Sekurkopio de alŝutoj farita."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Sekurkopio de alŝutoj malsukcesis."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Aliaj sekurkopioj farita."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Aliaj sekurkopioj malsukcesis."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP-Dosieradministrilo"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Agordoj"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferoj"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Propraĵoj de la sistemo"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "mallongkodo - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Rezerva/Restarigi"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Aĉetu Profesiulon"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Doni"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Dosiero ne ekzistas por elŝuti."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Nevalida Sekureca Kodo."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Mankas rezerva identigilo."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Mankas parametro-tipo."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Mankas bezonataj parametroj."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Eraro: Ne eblas restarigi sekurkopion ĉar datumbaza sekurkopio estas peza en "
"grandeco. Bonvolu provi pliigi Maksimuman permesitan grandecon de Preferoj."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Elektu sekurkopion(j)n por forigi!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Ĉu vi certe volas forigi elektitajn sekurkopiojn?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Sekurkopio funkcias, bonvolu atendi"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Restarigo funkcias, bonvolu atendi"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Nenio elektita por sekurkopio."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP-Dosieradministrilo - Rezerva / Restariga"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Rezerva Opcioj:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Datumbaza Sekurkopio"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Dosieroj Rezerva"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Kromaĵoj"

#: inc/backup.php:71
msgid "Themes"
msgstr "Themes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Alŝutoj"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Aliaj (Ĉiuj aliaj adresaroj trovitaj en wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Rezerva Nun"

#: inc/backup.php:89
msgid "Time now"
msgstr "Tempo nun"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUKCESO"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Sekurkopio sukcese forigita."

#: inc/backup.php:102
msgid "Ok"
msgstr "Bone"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "DELETE FILES"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Ĉu vi certas, ke vi volas forigi ĉi tiun sekurkopion?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Nuligi"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Konfirmu"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RESTORI DOSIEROJN"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Ĉu vi certas, ke vi volas restarigi ĉi tiun sekurkopion?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Lasta Ensaluta Mesaĝo"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "La rezervo ŝajne sukcesis kaj nun finiĝis."

#: inc/backup.php:171
msgid "No log message"
msgstr "Neniu protokola mesaĝo"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Ekzistantaj Sekurkopioj"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Rezerva Dato"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Rezerva datumo (alklaku por elŝuti)"

#: inc/backup.php:190
msgid "Action"
msgstr "Ago"

#: inc/backup.php:210
msgid "Today"
msgstr "Hodiaŭ"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restaŭri"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Forigi"

#: inc/backup.php:241
msgid "View Log"
msgstr "Vidi protokolon"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Nuntempe neniu sekurkopio trovita."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Agoj sur elektitaj sekurkopioj"

#: inc/backup.php:251
msgid "Select All"
msgstr "Elekti ĉiujn"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Malelekti"

#: inc/backup.php:254
msgid "Note:"
msgstr "Noto:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Rezervaj dosieroj estos sub"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Kontribuo de WP-Dosieradministrilo"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Noto: Ĉi tiuj estas elmontraj ekrankopioj. Bonvolu aĉeti dosieradministrilon "
"por Logs-funkcioj."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klaku por Aĉeti PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Aĉetu PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Redaktu dosierojn"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Elŝuti dosierojn"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Alŝutu dosierojn"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Agordoj konservitaj."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Malakceptu ĉi tiun avizon."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Vi ne faris savindajn ŝanĝojn."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Publika Radika Vojo"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Dosiera Administranto-Radika Vojo, vi povas ŝanĝi laŭ via elekto."

#: inc/root.php:59
msgid "Default:"
msgstr "Defaŭlta:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Bonvolu ŝanĝi ĉi tion zorge, malĝusta vojo povas konduki al "
"dosieradministrila kromaĵo malsupren."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Ĉu ebligi rubujon?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Post ebligi rubujon, viaj dosieroj iros al rubujo."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Ĉu ebligi alŝutojn de dosieroj al amaskomunikila biblioteko?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Post tio, ĉiuj dosieroj iros al amaskomunikila biblioteko."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "Maksimuma permesita grandeco dum datumbaza sekurkopio restarigo."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Bonvolu pliigi kampvaloron se vi ricevas erarmesaĝon dum rezerva restarigo."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Konservu Ŝanĝojn"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Agordoj - Ĝeneralaj"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Noto: Ĉi tio estas nur demo-ekrankopio. Por akiri agordojn bonvolu aĉeti "
"nian profesian version."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Ĉi tie administranto povas doni aliron al uzantaj roloj por uzi "
"dosieradministrilon. Administranto povas agordi Defaŭltan Aliran Dosierujon "
"kaj ankaŭ regi alŝutajn grandecojn de dosieradministrilo."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Agordoj - Kodredaktilo"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Dosieradministrilo havas kodredaktilon kun multaj temoj. Vi povas elekti iun "
"ajn temon por kodredaktilo. Ĝi aperos kiam vi redaktos iun ajn dosieron. "
"Ankaŭ vi povas permesi plenekranan reĝimon de kodredaktilo."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kodo-redaktilo"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Agordoj - Uzaj Limigoj"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administranto povas limigi agojn de iu ajn uzanto. Ankaŭ kaŝu dosierojn kaj "
"dosierujojn kaj povas agordi malsamajn - malsamajn dosierujojn por diversaj "
"uzantoj."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Agordoj - Limigoj de Uzanto-Rolo"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administranto povas limigi agojn de iu ajn userrolo. Ankaŭ kaŝu dosierojn "
"kaj dosierujojn kaj povas agordi malsamajn - malsamajn dosierujojn por "
"malsamaj roloj de uzantoj."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Dosieradministrilo - mallongkodo"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "UZO:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Ĝi montros dosiermanaĝeron ĉe la antaŭa fino. Vi povas kontroli ĉiujn "
"agordojn de agordoj de dosiermanaĝero. Ĝi funkcios same kiel backend WP File "
"Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Ĝi montros dosiermanaĝeron ĉe la antaŭa fino. Sed nur Administranto povas "
"aliri ĝin kaj kontrolos de dosiermanaĝera agordo."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametroj:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Ĝi permesos al ĉiuj roloj aliri dosiermanaĝeron ĉe la frontfino aŭ Vi povas "
"simple uzi por apartaj uzantroloj kiel kiel allow_roles=\"redaktoro, aŭtoro"
"\" (disigita per komo(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Ĉi tie \"testo\" estas la nomo de dosierujo, kiu troviĝas en radika "
"dosierujo, aŭ vi povas doni vojon por subdosierujoj kiel \"wp-content/"
"kromaĵoj\". Se lasas malplena aŭ malplena ĝi aliros ĉiujn dosierujojn en "
"radika dosierujo. Defaŭlte: Radika dosierujo"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"por aliro por skribi dosierojn permesojn, notu: vera/malvera, defaŭlte: "
"malvera"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"por aliro al permeso legi dosierojn, notu: vera/malvera, defaŭlte: vera"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"ĝi kaŝos ĉi tie menciitan. Noto: apartigita per komo (,). Defaŭlte: Nula"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Ĝi ŝlosos menciitan en komoj. vi povas ŝlosi pli kiel \".php,.css,.js\" ktp. "
"Defaŭlte: Nula"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* por ĉiuj operacioj kaj por permesi iun operacion vi povas mencii "
"operacionomon kiel, allow_operations=\"alŝuti, elŝuti\". Noto: apartigita "
"per komo (,). Defaŭlte: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Listo de Dosieraj Operacioj:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Faru dosierujon aŭ dosierujon"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Faru dosieron"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Renomi dosieron aŭ dosierujon"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplikas aŭ klonas dosierujon aŭ dosieron"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Algluu dosieron aŭ dosierujon"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Malpermeso"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Por fari arkivon aŭ poŝton"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Ĉerpu arkivon aŭ zipitan dosieron"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopiu dosierojn aŭ dosierujojn"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Simpla tranĉi dosieron aŭ dosierujon"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Redaktu dosieron"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Forigi aŭ forigi dosierojn kaj dosierujojn"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Elŝuti dosierojn"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Alŝutu dosierojn"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Serĉu aferojn"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informo pri dosiero"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Helpu"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Ĝi malpermesos apartajn uzantojn nur metante iliajn identigilojn kun "
"komoj (,). Se uzanto estas Ban, tiam ili ne povos aliri wp-"
"dosieradministrilon ĉe antaŭa finaĵo."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI-Vido. Defaŭlta: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Dosiera Modifita aŭ Kreu datformaton. Defaŭlta: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Dosieradministrilo Lingvo. Defaŭlta: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Temo pri Dosieradministrilo. Defaŭlta: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Dosieradministrilo - Sistemaj Ecoj"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP-versio"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimuma grandeco de alŝuta dosiero (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Afiŝu maksimuman dosieron alŝuti grandecon (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Memora Limo (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Tempolimo (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Foliumilo kaj OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Ŝanĝu Temon Ĉi tie:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Defaŭlta"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Malhela"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Malpeza"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Griza"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Bonvenon al Dosieradministrilo"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Ni amas fari novajn amikojn! Abonu sube kaj ni promesas\n"
"    tenu vin ĝisdata kun niaj plej novaj novaj aldonaĵoj, ĝisdatigoj,\n"
"    bonegaj ofertoj kaj kelkaj specialaj ofertoj."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Bonvolu Enigi Antaŭnomon."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Bonvolu Enigi Familian nomon."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Bonvolu Enigi Retpoŝtan Adreson."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Konfirmu"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ne, dankon"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Terms of Service"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Privateca Politiko"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Ŝparante ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "bone"

#~ msgid "Backup not found!"
#~ msgstr "Sekurkopio ne trovita!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Sekurkopio forigita sukcese!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nenio elektita por sekurkopio</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sekureca Problemo.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Datumbaza rezervo finiĝis.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ne eblas krei datumbazan rezervon.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Rezerva kromaĵo finiĝis.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Rezerva kromaĵo malsukcesis.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sekurkopio de temoj finita.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Subteno de temoj malsukcesis.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Alŝutoj de sekurkopio finitaj.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Alŝutoj de sekurkopio malsukcesis.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Aliaj rezervoj finiĝis.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Aliaj rezervoj malsukcesis.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Ĉio Farita</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Administri viajn WP-dosierojn."

#~ msgid "Extensions"
#~ msgstr "Etendoj"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Bonvolu kontribui iun donacon, por fari plugin pli stabila. Vi povas pagi "
#~ "vian elekton."
languages/wp-file-manager-cs_CZ.po000064400000065767147361034410013054 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 16:22+0530\n"
"PO-Revision-Date: 2022-02-25 16:36+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: cs_CZ\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : "
"2;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Zálohování motivů bylo úspěšně obnoveno."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Motivy nelze obnovit."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Zálohování nahrávek bylo úspěšně obnoveno."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Nahrávání nelze obnovit."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Záloha ostatních byla úspěšně obnovena."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Nelze obnovit ostatní."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Záloha pluginů byla úspěšně obnovena."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Nelze obnovit pluginy."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Záloha databáze byla úspěšně obnovena."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Vše hotovo"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Zálohu databáze nelze obnovit."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Zálohy byly úspěšně odstraněny!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Zálohu nelze odstranit!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Zálohování databáze provedeno k datu "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Zálohování pluginů hotovo k datu "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Zálohování motivů bylo provedeno k datu "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Nahraje zálohu hotovou k datu "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Ostatní zálohy hotové k datu "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Protokoly"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nebyly nalezeny žádné protokoly!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Pro zálohování nebylo vybráno nic"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Bezpečnostní problém."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Záloha databáze provedena."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Nelze vytvořit zálohu databáze."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Záloha pluginů byla provedena."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Zálohování pluginů se nezdařilo."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Záloha motivů byla provedena."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Zálohování motivů se nezdařilo."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Záloha nahrávání byla dokončena."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Zálohování nahrávání se nezdařilo."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Ostatní záloha provedena."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Zálohování ostatních se nezdařilo."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Správce souborů WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Nastavení"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Předvolby"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Systémové vlastnosti"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Obnova zálohy"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Koupit Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Darovat"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Soubor neexistuje ke stažení."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Neplatný bezpečnostní kód."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Chybí záložní ID."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Chybějící typ parametru."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Chybí požadované parametry."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Chyba: Nelze obnovit zálohu, protože záloha databáze je velká. Zkuste prosím "
"zvýšit Maximální povolenou velikost v nastavení předvoleb."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Vyberte zálohy, které chcete odstranit!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Opravdu chcete odebrat vybrané zálohy?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Zálohování je spuštěno, počkejte prosím"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Obnovení běží, čekejte prosím"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Pro zálohování nebylo vybráno nic."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Správce souborů WP - zálohování / obnovení"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Možnosti zálohování:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Zálohování databáze"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Zálohování souborů"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Pluginy"

#: inc/backup.php:71
msgid "Themes"
msgstr "Motivy"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Nahrávání"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Ostatní (Jakékoli jiné adresáře nalezené uvnitř wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Zálohovat hned"

#: inc/backup.php:89
msgid "Time now"
msgstr "Čas teď"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ÚSPĚCH"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Záloha byla úspěšně smazána."

#: inc/backup.php:102
msgid "Ok"
msgstr "OK"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "VYMAZAT SOUBORY"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Opravdu chcete tuto zálohu smazat?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "zrušení"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Potvrdit"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "OBNOVIT SOUBORY"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Opravdu chcete tuto zálohu obnovit?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Poslední zpráva protokolu"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Záloha byla zřejmě úspěšná a nyní je dokončena."

#: inc/backup.php:171
msgid "No log message"
msgstr "Žádná zpráva protokolu"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "již existuje"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Datum zálohy"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Zálohování dat (kliknutím stáhnete)"

#: inc/backup.php:190
msgid "Action"
msgstr "Akce"

#: inc/backup.php:210
msgid "Today"
msgstr "Dnes"

#: inc/backup.php:239
msgid "Restore"
msgstr "Obnovit"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Vymazat"

#: inc/backup.php:241
msgid "View Log"
msgstr "Zobrazit protokol"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Aktuálně nebyly nalezeny žádné zálohy."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Akce na vybrané zálohy"

#: inc/backup.php:251
msgid "Select All"
msgstr "Vybrat vše"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Zrušit výběr"

#: inc/backup.php:254
msgid "Note:"
msgstr "Poznámka:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Záložní soubory budou pod"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Příspěvek správce souborů WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Poznámka: Toto jsou ukázkové screenshoty. Kupte si File Manager pro pro "
"funkce Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Kliknutím zakoupíte PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Koupit PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Upravit protokoly souborů"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Stáhnout protokoly souborů"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Nahrajte protokoly souborů"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Nastavení uloženo."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Zamítnout toto upozornění."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Neudělali jste žádné změny k uložení."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Veřejná kořenová cesta"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Root Path File Manager, můžete změnit podle svého výběru."

#: inc/root.php:59
msgid "Default:"
msgstr "Výchozí:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Změňte to opatrně, nesprávná cesta může vést k tomu, že plugin správce "
"souborů přejde dolů."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Povolit koš?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Po povolení koše přejdou vaše soubory do složky koše."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Povolit nahrávání souborů do knihovny médií?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Po povolení této možnosti všechny soubory přejdou do knihovny médií."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "Maximální povolená velikost v době obnovení zálohy databáze."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Pokud se při obnově zálohy zobrazuje chybová zpráva, zvyšte hodnotu pole."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Uložit změny"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Nastavení - Obecné"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Poznámka: Toto je pouze ukázkový snímek obrazovky. Chcete-li získat "
"nastavení, zakupte si naši profesionální verzi."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Zde admin může poskytnout přístup k uživatelským rolám pro použití "
"filemanager. Správce může nastavit výchozí složku pro přístup a také řídit "
"velikost souboru uploadmanager."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Nastavení - editor kódu"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Správce souborů má editor kódů s více motivy. Můžete vybrat libovolné téma "
"pro editor kódu. Zobrazí se při úpravě libovolného souboru. Také můžete "
"povolit režim celoobrazovkového editoru kódu."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Zobrazení kódu editoru"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Nastavení - Omezení uživatele"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Správce může omezit akce libovolného uživatele. Také skrýt soubory a složky "
"a nastavit různé - různé cesty adresářů pro různé uživatele."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Nastavení - Omezení uživatelských rolí"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Správce může omezit akce libovolného uživatele. Skrýt také soubory a složky "
"a můžete nastavit různé - různé cesty adresářů pro různé role uživatelů."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Správce souborů - zkratka"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "POUŽITÍ:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Na frontendu se zobrazí správce souborů. Všechna nastavení můžete ovládat z "
"nastavení správce souborů. Bude to fungovat stejně jako backend WP File "
"Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Na frontendu se zobrazí správce souborů. Přístup k němu má ale pouze správce "
"a bude jej ovládat z nastavení správce souborů."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametry:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Umožní všem rolím přistupovat ke správci souborů na frontendu nebo můžete "
"jednoduše použít pro konkrétní uživatelské role, jako je allow_roles="
"\"editor,author\" (odděleno čárkou(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Zde \"test\" je název složky, která se nachází v kořenovém adresáři, nebo "
"můžete zadat cestu pro podsložky jako \"wp-content/plugins\". Pokud "
"ponecháte prázdné nebo prázdné, přistoupí se ke všem složkám v kořenovém "
"adresáři. Výchozí: Kořenový adresář"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"pro přístup k oprávnění k zápisu do souborů, poznámka: true/false, výchozí: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "pro přístup ke čtení souborů, poznámka: true/false, výchozí: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "skryje se zde zmíněný. Poznámka: odděleno čárkou(,). Výchozí: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Bude zámek uvedený v čárkách. můžete zamknout více jako „.php,.css,.js“ atd. "
"Výchozí: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* pro všechny operace a pro povolení některých operací můžete uvést název "
"operace jako like, allow_operations=\"upload,download\". Poznámka: odděleno "
"čárkou(,). Výchozí: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Seznam operací se soubory:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Vytvořte adresář nebo složku"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Vytvořit soubor"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Přejmenujte soubor nebo složku"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplikujte nebo klonujte složku nebo soubor"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Vložte soubor nebo složku"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Zákaz"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Vytvořit archiv nebo zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extrahujte archiv nebo soubor ZIP"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Zkopírujte soubory nebo složky"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Jednoduché vyjmutí souboru nebo složky"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Upravte soubor"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Odeberte nebo odstraňte soubory a složky"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Stahujte soubory"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Nahrát soubory"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Hledat věci"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informace o souboru"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Pomoc"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Zakáže konkrétní uživatele pouhým vložením jejich ID oddělených čárkami "
"(,). Pokud je uživatel Ban, nebude mít přístup k správci souborů wp na "
"klientském rozhraní."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Zobrazení uživatelského rozhraní Filemanager. Výchozí: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Soubor změněn nebo vytvořit formát data. Výchozí:: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Jazyk správce souborů. Výchozí: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Téma Správce souborů. Výchozí: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Správce souborů - vlastnosti systému"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP verze"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maximální velikost souboru nahrání (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Odeslat maximální velikost souboru (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Limit paměti (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Časový limit (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Prohlížeč a OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Změnit téma zde:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Výchozí:"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Temný"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Světlo"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Šedá"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Vítejte ve Správci souborů"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Rádi získáváme nové přátele! Přihlaste se k odběru níže a slibujeme\n"
"    budeme vás informovat o našich nejnovějších nových pluginech, "
"aktualizacích,\n"
"    úžasné nabídky a několik speciálních nabídek."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Zadejte prosím křestní jméno."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Zadejte příjmení."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Zadejte prosím e-mailovou adresu."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Ověřit"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ne, díky"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Podmínky služby"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Zásady ochrany osobních údajů"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Ukládání ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Záloha nebyla nalezena!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Záloha byla úspěšně odstraněna!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr "<span class=\"fm_console_error\">Pro zálohu není vybráno nic</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Bezpečnostní problém. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Zálohování databáze hotovo. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nelze vytvořit zálohu databáze. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Zálohování pluginů hotovo. </span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohování pluginů se nezdařilo. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Zálohování motivů hotovo.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohování motivů se nezdařilo.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Nahrávání zálohy hotovo. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohování nahrávek se nezdařilo. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Ostatní zálohy hotové. </span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Zálohování ostatních se nezdařilo. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Hotovo </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Spravujte soubory WP."

#~ msgid "Extensions"
#~ msgstr "Rozšíření"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Prosím přispějte nějaký dar, aby se plugin stal stabilnějším. Můžete "
#~ "zaplatit částku podle svého výběru."
languages/wp-file-manager-fr_FR.po000064400000070073147361034410013033 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-02 17:53+0530\n"
"PO-Revision-Date: 2022-03-02 17:54+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:175
msgid "Themes backup restored successfully."
msgstr "La sauvegarde des thèmes a été restaurée avec succès."

#: file_folder_manager.php:178
msgid "Unable to restore themes."
msgstr "Impossible de restaurer les thèmes."

#: file_folder_manager.php:208
msgid "Uploads backup restored successfully."
msgstr "Téléverse la sauvegarde restaurée avec succès."

#: file_folder_manager.php:212
msgid "Unable to restore uploads."
msgstr "Impossible de restaurer les téléchargements."

#: file_folder_manager.php:238
msgid "Others backup restored successfully."
msgstr "Autres sauvegardes restaurées avec succès."

#: file_folder_manager.php:242
msgid "Unable to restore others."
msgstr "Impossible de restaurer les autres."

#: file_folder_manager.php:268
msgid "Plugins backup restored successfully."
msgstr "La sauvegarde des plugins a été restaurée avec succès."

#: file_folder_manager.php:272 file_folder_manager.php:302
msgid "Unable to restore plugins."
msgstr "Impossible de restaurer les plugins."

#: file_folder_manager.php:287
msgid "Database backup restored successfully."
msgstr "La sauvegarde de la base de données a été restaurée avec succès."

#: file_folder_manager.php:287 file_folder_manager.php:298
#: file_folder_manager.php:589 file_folder_manager.php:593
msgid "All Done"
msgstr "Terminé"

#: file_folder_manager.php:290
msgid "Unable to restore DB backup."
msgstr "Impossible de restaurer la sauvegarde de la base de données."

#: file_folder_manager.php:348
msgid "Backups removed successfully!"
msgstr "Sauvegardes supprimées avec succès !"

#: file_folder_manager.php:350
msgid "Unable to removed backup!"
msgstr "Impossible de supprimer la sauvegarde !"

#: file_folder_manager.php:374
msgid "Database backup done on date "
msgstr "Sauvegarde de la base de données effectuée à la date"

#: file_folder_manager.php:378
msgid "Plugins backup done on date "
msgstr "Sauvegarde des plugins effectuée à date"

#: file_folder_manager.php:382
msgid "Themes backup done on date "
msgstr "Sauvegarde des thèmes effectuée à date"

#: file_folder_manager.php:386
msgid "Uploads backup done on date "
msgstr "Sauvegarde des téléchargements effectuée à la date"

#: file_folder_manager.php:390
msgid "Others backup done on date "
msgstr "Autre sauvegarde effectuée à date"

#: file_folder_manager.php:394 file_folder_manager.php:777
msgid "Logs"
msgstr "Journaux"

#: file_folder_manager.php:400
msgid "No logs found!"
msgstr "Aucun journal trouvé !"

#: file_folder_manager.php:497
msgid "Nothing selected for backup"
msgstr "Rien sélectionné pour la sauvegarde"

#: file_folder_manager.php:517
msgid "Security Issue."
msgstr "Problème de sécurité."

#: file_folder_manager.php:528
msgid "Database backup done."
msgstr "Sauvegarde de la base de données effectuée."

#: file_folder_manager.php:531
msgid "Unable to create database backup."
msgstr "Impossible de créer la sauvegarde de la base de données."

#: file_folder_manager.php:545
msgid "Plugins backup done."
msgstr "Sauvegarde des plugins effectuée."

#: file_folder_manager.php:548
msgid "Plugins backup failed."
msgstr "La sauvegarde des plugins a échoué."

#: file_folder_manager.php:557
msgid "Themes backup done."
msgstr "Sauvegarde des thèmes effectuée."

#: file_folder_manager.php:560
msgid "Themes backup failed."
msgstr "La sauvegarde des thèmes a échoué."

#: file_folder_manager.php:570
msgid "Uploads backup done."
msgstr "La sauvegarde des téléchargements est terminée."

#: file_folder_manager.php:573
msgid "Uploads backup failed."
msgstr "La sauvegarde des téléchargements a échoué."

#: file_folder_manager.php:582
msgid "Others backup done."
msgstr "Autres sauvegardes effectuées."

#: file_folder_manager.php:585
msgid "Others backup failed."
msgstr "La sauvegarde des autres a échoué."

#: file_folder_manager.php:762 file_folder_manager.php:763
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Gestionnaire de fichiers WP"

#: file_folder_manager.php:770
msgid "Settings"
msgstr "Paramètres"

#: file_folder_manager.php:772 inc/root.php:48
msgid "Preferences"
msgstr "Préférences"

#: file_folder_manager.php:774
msgid "System Properties"
msgstr "Propriétés du système"

#: file_folder_manager.php:776
msgid "Shortcode - PRO"
msgstr "Code court - PRO"

#: file_folder_manager.php:778
msgid "Backup/Restore"
msgstr "Restauration de sauvegarde"

#: file_folder_manager.php:1034
msgid "Buy Pro"
msgstr "Acheter Pro"

#: file_folder_manager.php:1035
msgid "Donate"
msgstr "Faire un don"

#: file_folder_manager.php:1250
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1257
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1396 file_folder_manager.php:1484
msgid "File doesn't exist to download."
msgstr "Le fichier n'existe pas à télécharger."

#: file_folder_manager.php:1401 file_folder_manager.php:1489
msgid "Invalid Security Code."
msgstr "Code de sécurité invalide."

#: file_folder_manager.php:1406 file_folder_manager.php:1494
msgid "Missing backup id."
msgstr "Identifiant de sauvegarde manquant."

#: file_folder_manager.php:1409 file_folder_manager.php:1497
msgid "Missing parameter type."
msgstr "Type de paramètre manquant."

#: file_folder_manager.php:1412 file_folder_manager.php:1500
msgid "Missing required parameters."
msgstr "Paramètres requis manquants."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Erreur : Impossible de restaurer la sauvegarde car la sauvegarde de la base "
"de données est lourde. Veuillez essayer d'augmenter la taille maximale "
"autorisée à partir des paramètres de préférences."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Sélectionnez la ou les sauvegardes à supprimer !"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Voulez-vous vraiment supprimer les sauvegardes sélectionnées ?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "La sauvegarde est en cours d'exécution, veuillez patienter"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "La restauration est en cours, veuillez patienter"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Rien de sélectionné pour la sauvegarde."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Gestionnaire de fichiers WP - Sauvegarde/restauration"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Options de sauvegarde :"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Sauvegarde de la base de données"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Sauvegarde de fichiers"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Thèmes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Téléchargements"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Autres (Tout autre répertoire trouvé dans wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Sauvegarder maintenant"

#: inc/backup.php:89
msgid "Time now"
msgstr "C'est l'heure"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "la victoire"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Sauvegarde supprimée avec succès."

#: inc/backup.php:102
msgid "Ok"
msgstr "D'accord"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "SUPPRIMER LES FICHIERS"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Êtes-vous sûr de vouloir supprimer cette sauvegarde ?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Annuler"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Confirmer"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RESTAURATION DES FICHIERS"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Êtes-vous sûr de vouloir restaurer cette sauvegarde ?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Dernier message de journal"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "La sauvegarde a apparemment réussi et est maintenant terminée."

#: inc/backup.php:171
msgid "No log message"
msgstr "Aucun message de journal"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Sauvegarde(s) existante(s)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Date de sauvegarde"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Données de sauvegarde (cliquez pour télécharger)"

#: inc/backup.php:190
msgid "Action"
msgstr "action"

#: inc/backup.php:210
msgid "Today"
msgstr "Aujourd'hui"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restaurer"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Effacer"

#: inc/backup.php:241
msgid "View Log"
msgstr "Afficher le journal"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Aucune sauvegarde(s) trouvée(s) actuellement."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Actions sur la ou les sauvegardes sélectionnées"

#: inc/backup.php:251
msgid "Select All"
msgstr "Tout sélectionner"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Désélectionner"

#: inc/backup.php:254
msgid "Note:"
msgstr "Noter:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Les fichiers de sauvegarde seront sous"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Contribution du gestionnaire de fichiers WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Remarque : Il s'agit de captures d'écran de démonstration. Veuillez acheter "
"File Manager pro pour les fonctions Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Cliquez pour acheter PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Acheter PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Modifier les fichiers journaux"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Télécharger les fichiers journaux"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Télécharger des fichiers journaux"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Paramètres sauvegardés."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Ne tenez pas compte de cet avertissement."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Vous n'avez effectué aucune modification à enregistrer."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Chemin racine public"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Chemin racine du gestionnaire de fichiers, vous pouvez le modifier selon "
"votre choix."

#: inc/root.php:59
msgid "Default:"
msgstr "Défaut:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Veuillez modifier cela avec précaution, un mauvais chemin peut entraîner "
"l'arrêt du plug-in du gestionnaire de fichiers."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Activer la corbeille ?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Après avoir activé la corbeille, vos fichiers iront dans le dossier "
"Corbeille."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Activer le téléchargement de fichiers vers la médiathèque ?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Après avoir activé cela, tous les fichiers iront dans la médiathèque."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Taille maximale autorisée au moment de la restauration de la sauvegarde de "
"la base de données."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Veuillez augmenter la valeur du champ si vous recevez un message d'erreur au "
"moment de la restauration de la sauvegarde."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Sauvegarder les modifications"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Paramètres - Général"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Remarque : il ne s'agit que d'une capture d'écran de démonstration. Pour "
"obtenir les paramètres, veuillez acheter notre version pro."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Ici, l'administrateur peut donner accès aux rôles d'utilisateur pour "
"utiliser le gestionnaire de fichiers. L'administrateur peut définir le "
"dossier d'accès par défaut et également contrôler la taille de "
"téléchargement du gestionnaire de fichiers."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Paramètres - Éditeur de code"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager a un éditeur de code avec plusieurs thèmes. Vous pouvez "
"sélectionner n'importe quel thème pour l'éditeur de code. Il s'affichera "
"lorsque vous modifierez un fichier. Vous pouvez également autoriser le mode "
"plein écran de l'éditeur de code."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Affichage de l'éditeur de code"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Paramètres - Restrictions utilisateur"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"L'administrateur peut restreindre les actions de n'importe quel utilisateur. "
"Masquez également les fichiers et les dossiers et peut définir des chemins "
"de dossiers différents pour différents utilisateurs."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Paramètres - Restrictions de rôle d'utilisateur"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"L'administrateur peut restreindre les actions de n'importe quel rôle "
"utilisateur. Masquez également les fichiers et les dossiers et peut définir "
"des chemins de dossiers différents pour différents rôles d'utilisateurs."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Failihaldur - Code court"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "KASUTAMINE :"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Il affichera le gestionnaire de fichiers sur le front-end. Vous pouvez "
"contrôler tous les paramètres à partir des paramètres du gestionnaire de "
"fichiers. Cela fonctionnera de la même manière que le backend WP File "
"Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Il affichera le gestionnaire de fichiers sur le front-end. Mais seul "
"l'administrateur peut y accéder et contrôlera à partir des paramètres du "
"gestionnaire de fichiers."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Paramètres:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Il permettra à tous les rôles d'accéder au gestionnaire de fichiers sur le "
"front-end ou vous pouvez utiliser simplement pour des rôles d'utilisateur "
"particuliers comme comme allow_roles=\"editor,author\" (séprated by comma(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Ici, \"test\" est le nom du dossier qui se trouve dans le répertoire racine, "
"ou vous pouvez donner le chemin des sous-dossiers comme \"wp-content/plugins"
"\". Si laissé vide ou vide, il accédera à tous les dossiers du répertoire "
"racine. Par défaut : répertoire racine"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"pour l'accès aux autorisations d'écriture de fichiers, note : true/false, "
"par défaut : false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"pour l'accès à la permission de lire les fichiers, note : true/false, par "
"défaut : true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"il cachera mentionné ici. Remarque : séparés par une virgule (,). Par "
"défaut : Nul"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Il verrouillera mentionné entre virgules. vous pouvez verrouiller plus comme "
"\".php,.css,.js\" etc. Par défaut : Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* pour toutes les opérations et pour autoriser certaines opérations, vous "
"pouvez mentionner le nom de l'opération comme, allow_operations=\"upload,"
"download\". Remarque : séparés par une virgule (,). Défaut: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Liste des opérations sur les fichiers :"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Créer un répertoire ou un dossier"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Créer un fichier"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Renommer un fichier ou un dossier"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Dupliquer ou cloner un dossier ou un fichier"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Coller un fichier ou un dossier"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Interdire"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Pour faire une archive ou un zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extraire l'archive ou le fichier compressé"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copier des fichiers ou des dossiers"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Couper simplement un fichier ou un dossier"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Modifier un fichier"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Supprimer ou supprimer des fichiers et des dossiers"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Telecharger des fichiers"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Télécharger des fichiers"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Rechercher des choses"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Infos du fichier"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Aider"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Il interdira certains utilisateurs en mettant simplement leurs "
"identifiants séparés par des virgules (,). Si l'utilisateur est Ban, il ne "
"pourra pas accéder au gestionnaire de fichiers wp sur le front-end."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr ""
"-> Vue de l'interface utilisateur du gestionnaire de fichiers. Par défaut: "
"grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Fichier modifié ou créer un format de date. Par défaut: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Langue du gestionnaire de fichiers. Par défaut: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Thème du gestionnaire de fichiers. Par défaut : Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Gestionnaire de fichiers - Propriétés système"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "version PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Taille maximale du téléchargement du fichier (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr ""
"Affiche la taille maximale de téléchargement de fichier (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Limite de mémoire (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Timeout (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Navigateur et OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Changez de thème ici :"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Défaut"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Sombre"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "claire"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grise"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Bienvenue dans le gestionnaire de fichiers"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Nous adorons nous faire de nouveaux amis ! Abonnez-vous ci-dessous et nous "
"nous engageons à\n"
"   vous tenir au courant de nos derniers nouveaux plugins, mises à jour,\n"
"   offres incroyables et quelques offres spéciales."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Palun sisestage eesnimi."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Veuillez saisir le nom de famille."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Veuillez saisir l'adresse e-mail."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Vérifier"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Non merci"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Conditions d'utilisation"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Politique de confidentialité"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Économie..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "d'accord"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Problème de sécurité.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sauvegarde de la base de données "
#~ "effectuée.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sauvegarde des plugins effectuée.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Échec de la sauvegarde des plug-ins.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sauvegarde des thèmes terminée.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Échec de la sauvegarde des thèmes.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Téléchargement de la sauvegarde "
#~ "effectuée.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Échec de la sauvegarde des "
#~ "téléchargements.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Autres sauvegardes effectuées.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Les autres sauvegardes ont échoué.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Tout est fait</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allow_operations=\"upload,"
#~ "download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Gérez vos fichiers WP."

#~ msgid "Extensions"
#~ msgstr "Extensions"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Veuillez contribuer un don, pour rendre le plugin plus stable. Vous "
#~ "pouvez payer le montant de votre choix."
languages/wp-file-manager-nn_NO.po000064400000231312147361034410013037 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Theme Editor Pro\n"
"POT-Creation-Date: 2022-02-28 11:05+0530\n"
"PO-Revision-Date: 2022-03-01 18:05+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: nn_NO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Sikkerhetskopiering av temaer ble gjenopprettet."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Kan ikke gjenopprette temaer."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Opplastingen av sikkerhetskopien ble gjenopprettet."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Kan ikke gjenopprette opplastinger."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Andre sikkerhetskopier ble gjenopprettet."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Kan ikke gjenopprette andre."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Plugins-sikkerhetskopiering ble gjenopprettet."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Kan ikke gjenopprette plugins."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Databasesikkerhetskopiering ble gjenopprettet."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Ferdig"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Kan ikke gjenopprette DB-sikkerhetskopi."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Sikkerhetskopieringer fjernet!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Kan ikke fjerne sikkerhetskopien!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Databasesikkerhetskopiering utført på dato "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Plugins backup gjort på dato "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Sikkerhetskopiering av temaer gjort på dato "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Laster opp sikkerhetskopiering gjort på dato "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Andre sikkerhetskopier er gjort på dato "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Tømmerstokker"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Ingen logger funnet!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Ingenting er valgt for sikkerhetskopiering"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Sikkerhetsproblem."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Sikkerhetskopiering av database utført."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Kan ikke opprette databasesikkerhetskopiering."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Sikkerhetskopiering av plugins utført."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Sikkerhetskopiering av plugins mislyktes."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Sikkerhetskopiering av temaer utført."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Sikkerhetskopiering av temaer mislyktes."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Laster opp sikkerhetskopiering ferdig."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Opplasting av sikkerhetskopiering mislyktes."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Andre sikkerhetskopiering er gjort."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Andre sikkerhetskopiering mislyktes."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP filbehandling"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Innstillinger"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferanser"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "System egenskaper"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kortkode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Gjenopprette fra sikkerhetskopi"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Kjøp Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donere"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Filen eksisterer ikke for nedlasting."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Ugyldig sikkerhetskode."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Mangler sikkerhetskopi-ID."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Manglende parametertype."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Mangler nødvendige parametere."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Feil: Kan ikke gjenopprette sikkerhetskopien fordi "
"databasesikkerhetskopieringen er stor. Vennligst prøv å øke Maksimal tillatt "
"størrelse fra Innstillinger-innstillingene."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Velg sikkerhetskopi(er) for å slette!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Er du sikker på at du vil fjerne valgt (e) sikkerhetskopi (er)?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Sikkerhetskopiering kjører, vent"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Gjenoppretting kjører, vennligst vent"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Ingenting er valgt for sikkerhetskopiering."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP filbehandling - Sikkerhetskopiering / gjenoppretting"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Alternativer for sikkerhetskopiering:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Sikkerhetskopiering av databasen"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Backup av filer"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temaer"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Opplastinger"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Andre (andre kataloger som finnes i wp-innhold)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Sikkerhetskopier nå"

#: inc/backup.php:89
msgid "Time now"
msgstr "Tid nå"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUKSESS"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Sikkerhetskopien ble slettet."

#: inc/backup.php:102
msgid "Ok"
msgstr "Ok"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "SLETT FILER"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Er du sikker på at du vil slette denne sikkerhetskopien?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Avbryt"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Bekrefte"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "GJENBESTILL FILER"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Er du sikker på at du vil gjenopprette denne sikkerhetskopien?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Siste loggmelding"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Sikkerhetskopien lyktes tilsynelatende og er nå fullført."

#: inc/backup.php:171
msgid "No log message"
msgstr "Ingen loggmelding"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Eksisterende sikkerhetskopi (er)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Sikkerhetsdato"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Backup data (klikk for å laste ned)"

#: inc/backup.php:190
msgid "Action"
msgstr "Handling"

#: inc/backup.php:210
msgid "Today"
msgstr "I dag"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restaurere"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Slett"

#: inc/backup.php:241
msgid "View Log"
msgstr "Se Logg"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Foreløpig ingen sikkerhetskopier funnet."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Handlinger ved valgt (e) sikkerhetskopi (er)"

#: inc/backup.php:251
msgid "Select All"
msgstr "Velg alle"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Fjern markeringen"

#: inc/backup.php:254
msgid "Note:"
msgstr "Merk:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Sikkerhetskopifiler vil være under"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP filbehandling-bidrag"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Merk: Dette er demo-skjermbilder. Vennligst kjøp File Manager pro til Logs-"
"funksjoner."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klikk for å kjøpe PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Kjøp PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Rediger fillogger"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Last ned fillogger"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Last opp fillogger"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Instillinger lagret."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Avvis denne meldingen."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Du har ikke gjort noen endringer for å bli lagret."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Offentlig rotsti"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path, du kan endre i henhold til ditt valg."

#: inc/root.php:59
msgid "Default:"
msgstr "Misligholde:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Endre dette nøye, feil bane kan føre til at filbehandling plugin går ned."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Vil du aktivere papirkurven?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Etter at du har aktivert papirkurven, går filene dine til papirkurven."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Aktivere filer som lastes opp til mediebiblioteket?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Etter at du har aktivert dette, går alle filene til mediebiblioteket."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maksimal tillatt størrelse på tidspunktet for gjenoppretting av "
"sikkerhetskopi av database."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Øk feltverdien hvis du får feilmelding ved gjenoppretting av sikkerhetskopi."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Lagre endringer"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Innstillinger - Generelt"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Merk: Dette er bare et demo-skjermbilde. For å få innstillinger, vennligst "
"kjøp vår pro-versjon."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Her kan admin gi tilgang til brukerroller for å bruke filmanager. "
"Administrator kan angi standard tilgangsmappe og også kontrollere "
"opplastingsstørrelsen på filadministratoren."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Innstillinger - Kode-editor"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager har en kodeditor med flere temaer. Du kan velge hvilket som "
"helst tema for kodeditor. Den vises når du redigerer en fil. Du kan også "
"tillate fullskjermmodus for kodeditor."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Kode-editor Vis"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Innstillinger - Brukerbegrensninger"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administrator kan begrense alle brukeres handlinger. Skjul også filer og "
"mapper og kan angi forskjellige - forskjellige mappestier for forskjellige "
"brukere."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Innstillinger - Begrensninger for brukerrolle"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administrator kan begrense handlingene til enhver brukerroll. Skjul også "
"filer og mapper og kan angi forskjellige - forskjellige mappestier for "
"forskjellige brukerroller."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Filbehandling - Kort kode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "BRUK:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Det vil vise filbehandler på grensesnittet. Du kan kontrollere alle "
"innstillinger fra filbehandlingsinnstillingene. Det vil fungere på samme "
"måte som backend WP filbehandling."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Det vil vise filbehandler på grensesnittet. Men bare administrator har "
"tilgang til den og vil kontrollere fra filbehandlingsinnstillingene."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametere:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Det vil tillate alle roller å få tilgang til filbehandler på grensesnittet, "
"eller du kan enkelt bruke for bestemte brukerroller som for eksempel "
"allow_roles=\"editor,author\" (atskilt med komma(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Her er \"test\" navnet på mappen som ligger i rotkatalogen, eller du kan gi "
"bane for undermapper som \"wp-content/plugins\". Hvis la stå tomt eller "
"tomt, vil det få tilgang til alle mappene i rotkatalogen. Standard: "
"Rotkatalog"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"for tilgang til å skrive filer tillatelser, merk: true/false, standard: usant"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"for tilgang til tillatelse til å lese filer, merk: true/false, default: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"det vil gjemme seg nevnt her. Merk: atskilt med komma(,). Standard: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Den vil låse nevnt i komma. du kan låse flere som \".php,.css,.js\" osv. "
"Standard: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* for alle operasjoner og for å tillate noen operasjoner kan du nevne "
"operasjonsnavn som like, allow_operations=\"last opp, last ned\". Merk: "
"atskilt med komma(,). Standard: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Liste over filoperasjoner:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Lag katalog eller mappe"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Lag fil"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Gi nytt navn til en fil eller mappe"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Dupliser eller klon en mappe eller fil"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Lim inn en fil eller mappe"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "forby"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Å lage et arkiv eller zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Pakk ut arkiv eller zip-fil"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopier filer eller mapper"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Enkelt kutte en fil eller mappe"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Rediger en fil"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Fjern eller slett filer og mapper"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Last ned filer"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Last opp filer"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Søk på ting"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Info om filen"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Hjelp"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"->  Det vil forby bestemte brukere ved å bare sette ID-ene deres adskilt med "
"komma (,). Hvis brukeren er Ban, vil de ikke få tilgang til wp-filbehandling "
"på frontend."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Filemanager UI View. Standard: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Filmodifisert eller Opprett datoformat. Standard: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Filbehandling språk. Standard: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Filbehandlingstema. Standard: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Filbehandling - Systemegenskaper"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP-versjon"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimal filopplastingsstørrelse (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Legg ut maks filstørrelse (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Memory Limit (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Tidsavbrudd (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Nettleser og operativsystem (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Endre tema her:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Misligholde"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Mørk"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Lys"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grå"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Velkommen til File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Vi elsker å få nye venner! Abonner nedenfor, og vi lover å\n"
"    holde deg oppdatert med de nyeste nye plugins, oppdateringer,\n"
"    fantastiske tilbud og noen få spesialtilbud."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Vennligst skriv inn fornavn."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Vennligst skriv inn etternavn."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Vennligst skriv inn e-postadresse."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Bekrefte"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nei takk"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Vilkår for bruk"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Personvernregler"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Lagrer ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Backup ble ikke funnet!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Sikkerhetskopieringen ble fjernet!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ingenting valgt for sikkerhetskopiering</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Sikkerhetsproblem. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sikkerhetskopiering av databasen er "
#~ "utført. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Kan ikke opprette "
#~ "databasesikkerhetskopi. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sikkerhetskopiering av programtillegg "
#~ "utført. </span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sikkerhetskopiering av programtillegg "
#~ "mislyktes. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Sikkerhetskopiering av temaer gjort. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sikkerhetskopiering av temaer mislyktes. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Opplastingen er gjort. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sikkerhetskopiering mislyktes. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Andre sikkerhetskopieringer er gjort. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Andre sikkerhetskopieringer mislyktes. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Alt gjort </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Bilde"

#~ msgid "of"
#~ msgstr "av"

#~ msgid "Close"
#~ msgstr "Lukk"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Denne funksjonen krever innebygde rammer. Du har iframes deaktivert, "
#~ "eller nettleseren din støtter dem ikke."

#~ msgid "Theme Editor"
#~ msgstr "Tema Editor"

#~ msgid "Plugin Editor"
#~ msgstr "Plugin Editor"

#~ msgid "Access Control"
#~ msgstr "Adgangskontroll"

#~ msgid "Notify Me"
#~ msgstr "Varsle meg"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "språket er lastet ned."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Språkmappen mislyktes."

#~ msgid "Security token expired!"
#~ msgstr "Sikkerhetstoken utløpt!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "språket er lastet ned."

#~ msgid "Currently language "
#~ msgstr "Foreløpig språk "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " ikke tilgjengelig. Klikk på forespørselsspråklinken."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr ""
#~ "Du har ikke tilstrekkelige tillatelser til å redigere programtillegg for "
#~ "dette nettstedet."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Det er ingen plugins installert på dette nettstedet."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Det er ingen temaer installert på dette nettstedet."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">Vennligst skriv inn navn på mappen! </p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Vennligst skriv inn filnavnet! </p>"

#~ msgid "Open"
#~ msgstr "Åpen"

#~ msgid "Preview"
#~ msgstr "Forhåndsvisning"

#~ msgid "Edit"
#~ msgstr "Redigere"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Er du sikker på at du vil avbryte opplastingen av filen?"

#~ msgid "File renamed successfully."
#~ msgstr "Filnavnet vellykket!"

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Er du sikker på at du vil slette mappen?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Mappen ble slettet."

#~ msgid "File deleted successfully."
#~ msgstr "Filen ble slettet."

#~ msgid "Folder renamed successfully."
#~ msgstr "Mappen ble omdøpt."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Ikke tillatt mer enn 30 tegn.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Ugyldig forespørsel!"

#~ msgid "No change in file!"
#~ msgstr "Ingen endring i filen!"

#~ msgid "File saved successfully!"
#~ msgstr "Filen ble lagret!"

#~ msgid "File not saved!"
#~ msgstr "Filen er ikke lagret!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Kan ikke bekrefte sikkerhetstoken!"

#~ msgid "Folder created successfully!"
#~ msgstr "Mappen ble opprettet!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Dette mappeformatet kan ikke lastes opp med wordpress!"

#~ msgid "Folder already exists!"
#~ msgstr "Mappen eksisterer allerede!"

#~ msgid "File created successfully!"
#~ msgstr "Filen ble opprettet!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Denne filtypen kan ikke opprettes!"

#~ msgid "File already exists!"
#~ msgstr "Filen finnes allerede!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Vennligst skriv inn en gyldig filutvidelse!"

#~ msgid "Folder does not exists!"
#~ msgstr "Mappen eksisterer ikke!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Mappen ble slettet!"

#~ msgid "File deleted successfully!"
#~ msgstr "Filen ble slettet!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr "Denne filtypen kan ikke lastes opp med wordpress!"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Filen ble lastet opp: Opplastet filbane er "

#~ msgid "No file selected"
#~ msgstr "Ingen fil valgt"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Kan ikke gi nytt navn til filen! Prøv igjen."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Mappen ble omdøpt vellykket!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Vennligst skriv inn riktig mappenavn"

#~ msgid "How can we help?"
#~ msgstr "Hvordan kan vi hjelpe?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "Læringsressurser, profesjonell støtte og eksperthjelp."

#~ msgid "Documentation"
#~ msgstr "Dokumentasjon"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Finn svar raskt fra vår omfattende dokumentasjon."

#~ msgid "Learn More"
#~ msgstr "Lære mer"

#~ msgid "Contact Us"
#~ msgstr "Kontakt oss"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr "Send inn en supportbillett for svar på spørsmål du måtte ha."

#~ msgid "Request a Feature"
#~ msgstr "Be om en funksjon"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "Fortell oss hva du vil, og vil legge det til i veikartet vårt."

#~ msgid "Tell us what you think!"
#~ msgstr "Fortell oss hva du tenker!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Vurder og gi oss en anmeldelse på Wordpress!"

#~ msgid "Leave a Review"
#~ msgstr "Legg igjen en anmeldelse"

#~ msgid "Update"
#~ msgstr "Oppdater"

#~ msgid "Installed"
#~ msgstr "Installert"

#~ msgid "Theme Editor Pro Language:"
#~ msgstr "Theme Editor Pro Språk:"

#~ msgid " language"
#~ msgstr " Språk"

#~ msgid "Click here to install/update "
#~ msgstr "Klikk her for å installere / oppdatere "

#~ msgid " language translation for Theme Editor Pro."
#~ msgstr " språkoversettelse for Theme Editor Pro."

#~ msgid "Available languages"
#~ msgstr "Tilgjengelige språk"

#~ msgid "Click here to download all available languages."
#~ msgstr "Klikk her for å laste ned alle tilgjengelige språk."

#~ msgid "Request a language"
#~ msgstr "Be om språk"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Fortell oss hvilket språk du vil legge til."

#~ msgid "Contact us"
#~ msgstr "Kontakt oss"

#~ msgid "Notifications"
#~ msgstr "Varsler"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<strong> Merk: Dette er bare et skjermbilde. Kjøp PRO-versjon for denne "
#~ "funksjonen. </strong>"

#~ msgid "Permissions"
#~ msgstr "Tillatelser"

#~ msgid "Edit Plugin"
#~ msgstr "Rediger plugin"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Dette pluginet er for øyeblikket aktivert! </strong> Advarsel: "
#~ "Det anbefales ikke å gjøre endringer i aktive plugins. Hvis endringene "
#~ "dine medfører en alvorlig feil, deaktiveres programtillegget automatisk."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Redigering <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (aktiv)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Bla gjennom <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (inaktiv)"

#~ msgid "Update File"
#~ msgstr "Oppdater fil"

#~ msgid "Download Plugin"
#~ msgstr "Last ned plugin"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Du må gjøre denne filen skrivbar før du kan lagre endringene. Se <a href="
#~ "\"https://wordpress.org/support/article/changing-file-permissions/\" "
#~ "target=\"_blank\"> Codex </a> for mer informasjon."

#~ msgid "Select plugin to edit:"
#~ msgstr "Velg plugin for å redigere:"

#~ msgid "Create Folder and File"
#~ msgstr "Lag mappe og fil"

#~ msgid "Create"
#~ msgstr "Skape"

#~ msgid "Remove Folder and File"
#~ msgstr "Fjern mappe og fil"

#~ msgid "Remove "
#~ msgstr "Fjerne"

#~ msgid "To"
#~ msgstr "Til"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Valgfritt: Underkatalog"

#~ msgid "Choose File "
#~ msgstr "Velg Fil"

#~ msgid "No file Chosen "
#~ msgstr "Ingen fil valgt "

#~ msgid "Create a New Folder: "
#~ msgstr "Lag en ny mappe:"

#~ msgid "New folder will be created in: "
#~ msgstr "Ny mappe blir opprettet i:"

#~ msgid "New Folder Name: "
#~ msgstr "Nytt mappenavn:"

#~ msgid "Create New Folder"
#~ msgstr "Opprett ny mappe"

#~ msgid "Create a New File: "
#~ msgstr "Opprett en ny fil:"

#~ msgid "New File will be created in: "
#~ msgstr "Ny fil blir opprettet i:"

#~ msgid "New File Name: "
#~ msgstr "Ny fil blir opprettet i:"

#~ msgid "Create New File"
#~ msgstr "Opprett ny fil"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr "Advarsel: Vær forsiktig før du fjerner en mappe eller fil."

#~ msgid "Current Theme Path: "
#~ msgstr "Nåværende temabane:"

#~ msgid "Remove Folder: "
#~ msgstr "Fjern mappe:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Mappesti som du vil fjerne: "

#~ msgid "Remove Folder"
#~ msgstr "Fjern mappe"

#~ msgid "Remove File: "
#~ msgstr "Fjern fil:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Filbane som du vil fjerne: "

#~ msgid "Remove File"
#~ msgstr "Fjern fil"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Vennligst skriv inn gyldig e-postadresse."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr ""
#~ "Advarsel: Vær forsiktig før du gir nytt navn til en mappe eller fil."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Fil / mappe blir omdøpt i:"

#~ msgid "File/Folder Rename: "
#~ msgstr "File / Folder Rename:"

#~ msgid "Follow us"
#~ msgstr "Følg oss"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Tema Editor Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Theme Editor Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Tema Editor Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Theme Editor Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Theme Editor Youtube"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Gå til ThemeEditor-siden"

#~ msgid "Theme Editor Links"
#~ msgstr "Tema Editor-lenker"

#~ msgid "Child Theme"
#~ msgstr "Barnetema"

#~ msgid "Child Theme Permissions"
#~ msgstr "Tillatelser til barnetema"

#~ msgid " is not available. Please click "
#~ msgstr " er ikke tilgjengelig. Vennligst klikk "

#~ msgid "here"
#~ msgstr "her"

#~ msgid "to request language."
#~ msgstr "å be om språk."

#~ msgid "Click"
#~ msgstr "Klikk"

#~ msgid "to install "
#~ msgstr "å installere "

#~ msgid " language translation  for Theme Editor Pro"
#~ msgstr " språkoversettelse for Theme Editor Pro"

#~ msgid "Success: Settings Saved!"
#~ msgstr "Suksess: Innstillinger lagret!"

#~ msgid "No changes have been made to save."
#~ msgstr "Ingen endringer er gjort for å lagre."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Aktiver temaredigerer for temaer"

#~ msgid "Yes"
#~ msgstr "Ja"

#~ msgid "No"
#~ msgstr "Nei"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Dette vil aktivere / deaktivere temaredigereren. <br/><strong class=\"defs"
#~ "\">Standard: </strong> Ja"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Deaktiver standard WordPress Theme Editor?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Dette vil aktivere / deaktivere standard temaredigerer. <br/><strong "
#~ "class=\"defs\">Standard: </strong> Ja"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Aktiver Plugin Editor for Plugin"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Dette vil aktivere / deaktivere programvareeditoren. <br/><strong class="
#~ "\"defs\">Standard: </strong> Ja"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Deaktiver standard WordPress Plugin Editor?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Dette vil aktivere / deaktivere standard plugin-editor. <br/><strong "
#~ "class=\"defs\">Standard: </strong> Ja"

#~ msgid "Code Editor"
#~ msgstr "Kodeditor"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Lar deg velge tema for temaredigerer. <br/><strong class=\"defs"
#~ "\">Standard: </strong> Kobolt"

#~ msgid "Edit Themes"
#~ msgstr "Rediger temaer"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Dette temaet er for øyeblikket aktivert! </strong> Advarsel: Det "
#~ "anbefales ikke å gjøre endringer i aktive temaer."

#~ msgid "Editing"
#~ msgstr "Redigering"

#~ msgid "Browsing"
#~ msgstr "Bla gjennom"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Oppdater fil og forsøk på å aktivere"

#~ msgid "Download Theme"
#~ msgstr "Last ned tema"

#~ msgid "Select theme to edit:"
#~ msgstr "Velg tema du vil redigere:"

#~ msgid "Theme Files"
#~ msgstr "Temafiler"

#~ msgid "Choose File"
#~ msgstr "Velg Fil"

#~ msgid "No File Chosen"
#~ msgstr "Ingen fil valgt"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr "Advarsel: Vær forsiktig før du fjerner en mappe eller fil."

#~ msgid "Child Theme Permission"
#~ msgstr "Tillatelse til barnetema"

#~ msgid "Translations"
#~ msgstr "Oversettelser"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Du har ikke tillatelse til å lage et nytt barnetema."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr ""
#~ "Du har ikke tillatelse til å endre konfigurere eksisterende barnetema."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Du har ikke tillatelse til å duplisere barnetemaet."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr ""
#~ "Du har ikke tillatelse til å få tilgang til spørrings- / velgermenyen."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr ""
#~ "Du har ikke tillatelse til å få tilgang til nettfonter og CSS-menyen."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Du har ikke tillatelse til å kopiere filer."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Du har ikke tillatelse til å slette underordnede filer."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "Du har ikke tillatelse til å laste opp nytt skjermbilde."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Du har ikke tillatelse til å laste opp nye bilder."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Du har ikke tillatelse til å slette bilder."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Du har ikke tillatelse til å laste ned fil."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Du har ikke tillatelse til å opprette ny katalog."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Du har ikke tillatelse til å opprette ny fil."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Du har ikke tillatelse til å oppdatere filen!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Du har ikke tillatelse til å opprette mappe!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Du har ikke tillatelse til å slette mappen!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Du har ikke tillatelse til å slette filen!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Du har ikke tillatelse til å laste opp fil!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Tillatelser for barnetema er lagret."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "Det er ikke gjort noen endringer i barnetema-tillatelsene som skal lagres."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Tillatelsesmelding for barnetema er lagret."

#~ msgid "Users"
#~ msgstr "Brukere"

#~ msgid "Create New Child Theme"
#~ msgstr "Lag nytt barn-tema"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Konfigurer et eksisterende barnetema"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Dupliserte barnetemaer"

#~ msgid "Query/ Selector"
#~ msgstr "Spørring / velger"

#~ msgid "Web/font"
#~ msgstr "Web / font"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Kopier fil foreldretema til barnetema"

#~ msgid "Deleted Child Files"
#~ msgstr "Slettede barnefiler"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Last opp nytt skjermbilde"

#~ msgid "Upload New Images"
#~ msgstr "Last opp nye bilder"

#~ msgid "Deleted Images "
#~ msgstr "Slettede bilder"

#~ msgid "Download Images"
#~ msgstr "Last ned bilder"

#~ msgid "Create New Directory"
#~ msgstr "Opprett ny katalog"

#~ msgid "Create New Files"
#~ msgstr "Lag nye filer"

#~ msgid "Export Theme"
#~ msgstr "Eksporter tema"

#~ msgid "User Roles"
#~ msgstr "Brukerroller"

#~ msgid "Query/ Seletor"
#~ msgstr "Spørring / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Slettede bilder"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Melding om tillatelse til barnetema"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Du har ikke tillatelse til å opprette nytt barnetema."

#~ msgid "Query/Selector"
#~ msgstr "Spørring / velger"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr ""
#~ "Du har ikke tillatelse til å få tilgang til spørrings- / velgermenyen."

#~ msgid " Web/font"
#~ msgstr "Web / font"

#~ msgid " Export Theme"
#~ msgstr "Eksporter tema"

#~ msgid "Save Child Theme Message"
#~ msgstr "Melding om tillatelse til barnetema"

#~ msgid "Please select atleast one image."
#~ msgstr "Velg minst ett bilde."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Du har ikke tillatelse til å slette bilder."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Du har ikke tillatelse til å laste opp nye bilder."

#~ msgid "You don't have the permission to download."
#~ msgstr "Du har ikke tillatelse til å laste ned."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Du har ikke tillatelse til å opprette ny katalog."

#~ msgid "Please choose file type."
#~ msgstr "Velg filtype."

#~ msgid "Please enter file name."
#~ msgstr "Vennligst skriv inn filnavnet."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Du har ikke tillatelse til å opprette ny fil."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr "Er du sikker på å kopiere foreldrefiler til barnetema?"

#~ msgid "Please select file(s)."
#~ msgstr "Velg fil (er)."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Du har ikke tillatelse til å kopiere filer."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Er du sikker på at du vil slette valgte fil (er)?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Du har ikke tillatelse til å slette underordnede filer."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "Du har ikke tillatelse til å laste opp nytt skjermbilde."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Du har ikke tillatelse til å eksportere tema."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr ""
#~ "Du har ikke tillatelse til å få tilgang til menyen Spørring / velger."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Du har ikke tillatelse til å få tilgang til Web Fonts & CSS-menyen."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Nåværende analysetema:"

#~ msgid "Preview Theme"
#~ msgstr "Forhåndsvisningstema"

#~ msgid "Parent Themes"
#~ msgstr "Overordnede temaer"

#~ msgid "Child Themes"
#~ msgstr "Barnetemaer"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Feil: Innstillinger ikke lagret!"

#~ msgid "Email List"
#~ msgstr "E-postliste"

#~ msgid "Email Address"
#~ msgstr "Epostadresse"

#~ msgid "Enter Email"
#~ msgstr "Skriv inn e-post"

#~ msgid "Add More"
#~ msgstr "Legg til mer"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Denne adressen brukes til varslingsformål, som tema / plugin-varsling."

#~ msgid "Theme Notification"
#~ msgstr "Temavarsling"

#~ msgid "Notify on file update"
#~ msgstr "Varsle om filoppdatering"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Melding om redigering eller oppdatering av temafiler. <br/> <strong> "
#~ "Standard: </strong> Ja"

#~ msgid "Notify on files download"
#~ msgstr "Varsle ved nedlasting av filer"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Varsling om nedlastning av temafiler. <br/> <strong> Standard: </strong> "
#~ "Ja"

#~ msgid "Notify on theme download"
#~ msgstr "Varsle om nedlasting av tema"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding om nedlasting av tema. <br/> <strong> Standard: </strong> Ja"

#~ msgid "Notify on files upload"
#~ msgstr "Varsle om filer som lastes opp"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Varsling om filer som lastes opp i tema. <br/> <strong> Standard: </"
#~ "strong> Ja"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Varsle om opprett ny fil / mappe"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Melding om å opprette ny fil / mappe i tema. <br/> <strong> Standard: </"
#~ "strong> Ja"

#~ msgid "Notify on delete"
#~ msgstr "Varsle ved sletting"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Varsle når du sletter en fil og mappe i temaer. <br/> <strong> Standard: "
#~ "</strong> Ja"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Varsle om opprett tema for nytt barn"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Varsle om Lag nye barn-temaer. <br/> <strong> Standard: </strong> Ja"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Varsle når du konfigurerer et eksisterende barn-tema"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Varsle om konfigurer et eksisterende barn-tema. <br/> <strong> Standard: "
#~ "</strong> Ja"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Varsle om dupliserte barnetemaer"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Varsle om Konfigurer temaer for eksisterende barn. <br/> <strong> "
#~ "Standard: </strong> Ja"

#~ msgid "Plugin Notification"
#~ msgstr "Plugin-varsel"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Melding om redigering eller oppdatering av temafiler. <br/> <strong> "
#~ "Standard: </strong> ja"

#~ msgid "Notify on Plugin download"
#~ msgstr "Varsle om nedlasting av plugin"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding om nedlasting av plugin. <br/> <strong> Standard: </strong> Ja"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding om filopplasting i tema. <br/> <strong> Standard: </strong> Ja"

#~ msgid "Permission saved successfully."
#~ msgstr "Tillatelsen ble lagret."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr ""
#~ "Beklager! Tillatelsen kan ikke lagres fordi du ikke har gjort noen "
#~ "endringer."

#~ msgid "Allowed User Roles"
#~ msgstr "Tillatte brukerroller"

#~ msgid "Update theme files"
#~ msgstr "Oppdater temafiler"

#~ msgid "Create new theme files and folders"
#~ msgstr "Lag nye temafiler og mapper"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Last opp nye temafiler og mapper"

#~ msgid "Download theme files"
#~ msgstr "Last ned temafiler"

#~ msgid "Download theme"
#~ msgstr "Last ned tema"

#~ msgid "Update plugin files"
#~ msgstr "Oppdater plugin-filer"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Opprett nye plugin-filer og mapper"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Last opp nye pluginfiler og mapper"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Slett pluginfiler og mapper"

#~ msgid "Download plugin files"
#~ msgstr "Last ned plugin-filer"

#~ msgid "Download plugin"
#~ msgstr "Last ned plugin"

#~ msgid "Rename File"
#~ msgstr "Endre navn på fil"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Theme Editor PRO - Legg til bestillingsdetaljene nedenfor. Hvis ikke<a "
#~ "href=\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" "
#~ "class=\"page-title-action button button-primary\" title=\"click to buy "
#~ "Licence Key\">Kjøp nå </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "BESTILLINGS ID (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Skriv inn ordre-ID"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Vennligst sjekk e-postadressen din for bestillings-ID."

#~ msgid "LICENCE KEY *"
#~ msgstr "LISENSNØKKEL *"

#~ msgid "Enter License Key"
#~ msgstr "Angi lisensnøkkel"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Vennligst sjekk e-posten din for lisensnøkkel."

#~ msgid "Click To Verify"
#~ msgstr "Klikk for å bekrefte"

#~ msgid "URL/None"
#~ msgstr "URL / Ingen"

#~ msgid "Origin"
#~ msgstr "Opprinnelse"

#~ msgid "Color 1"
#~ msgstr "Farge 1"

#~ msgid "Color 2"
#~ msgstr "Farge 2"

#~ msgid "Width/None"
#~ msgstr "Bredde / Ingen"

#~ msgid "Style"
#~ msgstr "Stil"

#~ msgid "Color"
#~ msgstr "Farge"

#~ msgid "Configure Child Theme"
#~ msgstr "Konfigurer barnetema"

#~ msgid "Duplicate Child theme"
#~ msgstr "Dupliserte barnetemaer"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Etter å ha analysert fungerer dette temaet bra. Du kan bruke dette som "
#~ "barnetema."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr ""
#~ "Etter å ha analysert ser det ut til at barnetemaet fungerer som det skal."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Dette temaet laster inn flere stilark etter filen <code> style.css </"
#~ "code>:"

#~ msgid "The theme"
#~ msgstr "Temanavn"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr "kunne ikke analyseres fordi forhåndsvisningen ikke gjengis riktig"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Dette barnetemaet er ikke konfigurert for dette pluginet"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Configuratoren gjør viktige endringer i underordnet tema, inkludert "
#~ "endringer i stilark og flere php-funksjoner. Vennligst vurder å bruke "
#~ "DUPLICATE-temaet for barnetema (se trinn 1 ovenfor) og beholde originalen "
#~ "som en sikkerhetskopi."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "All webfonts / css-informasjon lagret."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Vennligst skriv inn verdien for webfonts / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Du har ikke tillatelse til å oppdatere webfonts / css."

#~ msgid "All information saved successfully."
#~ msgstr "All informasjon lagret."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Er du sikker på at du vil nullstille? Dette vil ødelegge alt arbeidet du "
#~ "har gjort i Configurator."

#~ msgid "Selectors"
#~ msgstr "Velger"

#~ msgid "Edit Selector"
#~ msgstr "Rediger velgeren"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "Stilarket kan ikke vises."

#~ msgid "(Child Only)"
#~ msgstr "(Bare barn)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Vennligst skriv inn et gyldig barnetema."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Vennligst skriv inn et gyldig navn på barnetema."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr ""
#~ "<strong>%s</strong> eksisterer. Vennligst skriv inn et annet barnetema"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "Siden kunne ikke lastes inn riktig."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Motstridende eller utdaterte jQuery-biblioteker ble lastet inn av et "
#~ "annet plugin:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr "Deaktivering eller erstatning av plugins kan løse dette problemet."

#~ msgid "No result found for the selection."
#~ msgstr "Ingen resultater funnet for utvalget."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sHvorfor ser jeg dette?%s"

#~ msgid "Parent / Child"
#~ msgstr "Foreldre / barn"

#~ msgid "Select an action:"
#~ msgstr "Velg en handling:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Lag et nytt barnetema"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Konfigurer et eksisterende barnetema"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Dupliser et eksisterende barnetema"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Velg et overordnet tema:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Analyser foreldretema"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Klikk på \"Analyser\" for å fastslå avhengighet av stilark og andre "
#~ "potensielle problemer."

#~ msgid "Analyze"
#~ msgstr "Analysere"

#~ msgid "Select a Child Theme:"
#~ msgstr "Velg et barnetema:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Analyser barnetema"

#~ msgid "Name the new theme directory:"
#~ msgstr "Navngi den nye temakatalogen:"

#~ msgid "Directory Name"
#~ msgstr "Katalognavn"

#~ msgid "NOTE:"
#~ msgstr "MERK:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Dette er IKKE navnet på barnetemaet. Du kan tilpasse navnet, beskrivelsen "
#~ "osv. I trinn 7 nedenfor."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Bekreft underordnet temakatalog:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Kun for bekreftelse (du kan ikke endre katalogen til et eksisterende "
#~ "Barnetema)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Velg hvor du vil lagre nye stiler:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Primær stilark (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Lagre nye egendefinerte stiler direkte til det primære stilarket for "
#~ "underordnet tema, og erstatt de eksisterende verdiene. Det primære "
#~ "stilarket lastes inn i rekkefølgen som er angitt av temaet."

#~ msgid "Separate Stylesheet"
#~ msgstr "Separat stilark"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Lagre nye tilpassede stiler i et eget stilark, og kombiner eventuelle "
#~ "eksisterende underordnede temastiler med overordnede for å danne "
#~ "grunnlinjen. Velg dette alternativet hvis du vil bevare eksisterende "
#~ "underordnede temastiler i stedet for å overskrive dem. Dette alternativet "
#~ "lar deg også tilpasse stilark som lastes inn etter det primære stilarket."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Velg håndtering av foreldretema:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Bruk WordPress-stilkøen."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "La Configurator bestemme passende handlinger og avhengigheter, og "
#~ "oppdater funksjonsfilen automatisk."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "Bruk <code> @import </code> i underordnet temaark."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Bruk bare dette alternativet hvis det overordnede stilarket ikke kan "
#~ "lastes inn ved hjelp av WordPress-stilkøen. Bruk av <code> @import </"
#~ "code> anbefales ikke."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Ikke legg til noen overordnet stilarkhåndtering."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Velg dette alternativet hvis dette temaet allerede håndterer stilarket "
#~ "for foreldretemaet, eller hvis foreldretemas <code> style.css </code> -"
#~ "fil ikke brukes til utseendet."

#~ msgid "Advanced handling options"
#~ msgstr "Avanserte håndteringsalternativer"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Ignorer overordnede temaark."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Velg dette alternativet hvis dette temaet allerede håndterer stilarket "
#~ "for overordnet tema, eller hvis overordnet temaets style.css-fil ikke "
#~ "brukes for utseendet."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Reparer overskriftsmalen i barnetemaet."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "La Configurator (prøve å) løse eventuelle stilarkproblemer som er oppført "
#~ "ovenfor. Dette kan løse mange, men ikke alle, vanlige problemer."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Fjern stilarkavhengigheter"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Som standard bevares rekkefølgen på stilark som lastes inn før det "
#~ "primære stilarket, ved å behandle dem som avhengigheter. I noen tilfeller "
#~ "oppdages stilark i forhåndsvisningen som ikke brukes hele nettstedet. Om "
#~ "nødvendig kan avhengighet fjernes for spesifikke stilark nedenfor."

#~ msgid "Child Theme Name"
#~ msgstr "Navn på barnetema"

#~ msgid "Theme Name"
#~ msgstr "Temanavn"

#~ msgid "Theme Website"
#~ msgstr "Temanettsted"

#~ msgid "Author"
#~ msgstr "Forfatter"

#~ msgid "Author Website"
#~ msgstr "Forfatterens nettsted"

#~ msgid "Theme Description"
#~ msgstr "Tema beskrivelse"

#~ msgid "Description"
#~ msgstr "Beskrivelse"

#~ msgid "Tags"
#~ msgstr "Merker"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Kopier menyer, moduler og andre tilpasningsinnstillinger fra "
#~ "foreldretemaet til barnetemaet:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Dette alternativet erstatter Barnetemaets eksisterende menyer, småprogram "
#~ "og andre tilpasningsinnstillinger med de fra overordnet temaet. Du "
#~ "trenger bare å bruke dette alternativet første gang du konfigurerer et "
#~ "barnetema."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Klikk for å kjøre Configurator:"

#~ msgid "Query / Selector"
#~ msgstr "Spørring / velger"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "For å finne spesifikke velgere i @media-spørringsblokker, velg først "
#~ "spørringen og deretter velgeren. Bruk \"base\" -spørringen for å redigere "
#~ "alle andre velgere."

#~ msgid "@media Query"
#~ msgstr "@media Query"

#~ msgid "( or \"base\" )"
#~ msgstr "(eller \"base\")"

#~ msgid "Selector"
#~ msgstr "Velger"

#~ msgid "Query/Selector Action"
#~ msgstr "Spørring / velgervalg"

#~ msgid "Save Child Values"
#~ msgstr "Lagre barnverdier"

#~ msgid "Delete Child Values"
#~ msgstr "Slett underordnede verdier"

#~ msgid "Property"
#~ msgstr "Eiendom"

#~ msgid "Baseline Value"
#~ msgstr "Basisverdi"

#~ msgid "Child Value"
#~ msgstr "Barneverdi"

#~ msgid "error"
#~ msgstr "feil"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "Du har ikke tillatelse til å konfigurere underordnede temaer."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s eksisterer ikke. Velg et gyldig overordnet tema."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Funksjoner-filen er obligatorisk og kan ikke slettes."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Velg et gyldig overordnet tema."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Velg et gyldig tema for barn."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Vennligst skriv inn et gyldig katalogtema for barnetema."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> eksisterer. Vennligst skriv inn et annet navn på "
#~ "barnetema."

#~ msgid "Your theme directories are not writable."
#~ msgstr "Temakatalogene dine er ikke skrivbare."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Kunne ikke oppgradere barnetema"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "Stilarket ditt er ikke skrivbart."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "En avsluttende PHP-tag ble oppdaget i underordnede temafunksjoner-fil, "
#~ "slik at alternativet \"Parent Stylesheet Handling\" ikke ble konfigurert. "
#~ "Lukking av PHP på slutten av filen frarådes, da det kan føre til for "
#~ "tidlige HTTP-overskrifter. Vennligst rediger <code> functions.php </code> "
#~ "for å fjerne den endelige <code>?&gt;</code> -taggen og klikk på "
#~ "\"Generate / Rebuild Child Theme Files\" igjen."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Kunne ikke kopiere filen: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Kunne ikke slette %s fil."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "kunne ikke kopiere %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "ugyldig dir: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Det oppstod feil under tilbakestilling av tillatelser."

#~ msgid "Could not upload file."
#~ msgstr "Kunne ikke laste opp filen."

#~ msgid "Invalid theme root directory."
#~ msgstr "Ugyldig rotkatalog for tema."

#~ msgid "No writable temp directory."
#~ msgstr "Ingen skrivbar temp-katalog."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Utpakking mislyktes -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Pakken mislyktes -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Maksimalt antall stiler overskredet."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Feil ved flytting av fil: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Kunne ikke angi skrivetillatelser."

#~ msgid "Error:"
#~ msgstr "Feil:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr "Gjeldende analyse Barnetema <strong>%s</strong> er tilbakestilt."

#~ msgid "Update Key saved successfully."
#~ msgstr "Oppdateringsnøkkelen ble lagret."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Underordnede temafiler er endret."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Barnetema <strong>%s</strong> er generert."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Nettfonter og CSS"

#~ msgid "Parent Styles"
#~ msgstr "Foreldre stiler"

#~ msgid "Child Styles"
#~ msgstr "Barnestiler"

#~ msgid "View Child Images"
#~ msgstr "Se barnebilder"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Bruk <code> @import url ([path]); </code> for å koble til flere stilark. "
#~ "Denne pluginen bruker nøkkelordet <code> @import </code> for å "
#~ "identifisere dem og konvertere dem til <code>&lt;link&gt;</code> -koder. "
#~ "<strong> Eksempel: </strong>"

#~ msgid "Save"
#~ msgstr "Lagre"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr ""
#~ "Opplasting av bilde med samme navn erstattes med eksisterende bilde."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Last opp nytt tema for barnetema"

#~ msgid "Delete Selected Images"
#~ msgstr "Slett valgte bilder"

#~ msgid "Create a New Directory"
#~ msgstr "Opprett en ny katalog"

#~ msgid "New Directory will be created in"
#~ msgstr "Ny katalog blir opprettet i"

#~ msgid "New Directory Name"
#~ msgstr "Nytt katalognavn"

#~ msgid "Create a New File"
#~ msgstr "Opprett en ny fil"

#~ msgid "New File will be created in"
#~ msgstr "Ny fil blir opprettet i"

#~ msgid "New File Name"
#~ msgstr "Nytt filnavn"

#~ msgid "File Type Extension"
#~ msgstr "Filtype utvidelse"

#~ msgid "Choose File Type"
#~ msgstr "Velg Filtype"

#~ msgid "PHP File"
#~ msgstr "PHP-fil"

#~ msgid "CSS File"
#~ msgstr "CSS-fil"

#~ msgid "JS File"
#~ msgstr "JS-fil"

#~ msgid "Text File"
#~ msgstr "Tekstfil"

#~ msgid "PHP File Type"
#~ msgstr "PHP-filtype"

#~ msgid "Simple PHP File"
#~ msgstr "Enkel PHP-fil"

#~ msgid "Wordpress Template File"
#~ msgstr "Wordpress malfil"

#~ msgid "Template Name"
#~ msgstr "Malnavn"

#~ msgid "Parent Templates"
#~ msgstr "Overordnede maler"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Kopier PHP-maler fra overordnet tema ved å velge dem her. Configurator "
#~ "definerer en mal som en Theme PHP-fil uten PHP-funksjoner eller klasser. "
#~ "Andre PHP-filer kan ikke trygt overstyres av et underordnet tema."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "FORSIKTIG: Hvis barnetemaet ditt er aktivt, vil barnets temaversjon av "
#~ "filen brukes i stedet for foreldrene umiddelbart etter at den er kopiert."

#~ msgid "The "
#~ msgstr "De"

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "filen genereres separat og kan ikke kopieres her."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Kopi Selected to Child Theme"

#~ msgid " Child Theme Files "
#~ msgstr "Barnefiler"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Klikk for å redigere filer ved hjelp av Theme Editor"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Slett mal for underordnede temaer ved å velge dem her."

#~ msgid "Delete Selected"
#~ msgstr "Slett valgte"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Skjermbilde for barnetema"

#~ msgid "Upload New Screenshot"
#~ msgstr "Last opp nytt skjermbilde"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Temaskjermbildet skal være i forholdet 4: 3 (f.eks. 880px x 660px) JPG, "
#~ "PNG eller GIF. Det vil bli omdøpt"

#~ msgid "Screenshot"
#~ msgstr "Skjermbilde"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Last opp nytt tema for barnetema"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "Temabilder ligger under bildekatalogen i barnetemaet ditt og er kun ment "
#~ "for stilarkbruk. Bruk mediebiblioteket til innholdsbilder."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Forhåndsvisning av det aktuelle barnetemaet (aktuell analyse)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Forhåndsvisning av det aktuelle barnetemaet"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Eksporter barnetema som zip-arkiv"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Klikk på \"Eksporter zip\" for å lagre en sikkerhetskopi av det for "
#~ "øyeblikket lastede barnetemaet. Du kan eksportere hvilket som helst av "
#~ "temaene dine fra kategorien Foreldre / barn."

#~ msgid "Export Child Theme"
#~ msgstr "Eksporter barnetema"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Barn (e) temafil (er) er kopiert!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr "Filen du prøver å kopiere fra overordnede maler eksisterer ikke"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Filen du prøver å kopiere fra overordnede maler, er allerede til stede i "
#~ "underordnede temafiler."

#~ msgid "Child "
#~ msgstr "Barn"

#~ msgid " and Parent "
#~ msgstr "og Forelder"

#~ msgid " directories doesn't exist!"
#~ msgstr "kataloger eksisterer ikke!"

#~ msgid " directory doesn't exist!"
#~ msgstr "katalogen eksisterer ikke!"

#~ msgid "Parent "
#~ msgstr "Forelder"

#~ msgid "Unknown error! "
#~ msgstr "Ukjent feil!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Du har ikke tillatelse til å kopiere filene!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Alle valgte filene er slettet!"

#~ msgid " does not exists!"
#~ msgstr "eksisterer ikke!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Denne filtypen kan ikke lastes opp!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Bildet ble lastet opp!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Det er noe problem med å laste opp bilde!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr "Denne filtypen kan ikke lastes opp som screenshot av wordpress!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Filen ble lastet opp!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Underordnede temafiler kan ikke endres."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Fil (er) ble slettet!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Du har ikke tillatelse til å slette fil (er)!"

#~ msgid "Entered directory name already exists"
#~ msgstr "Det oppgitte katalognavnet eksisterer allerede"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Du har ikke tillatelse til å opprette katalog!"

#~ msgid "Wordpress template file created"
#~ msgstr "Wordpress malfil opprettet"

#~ msgid "Wordpress template file not created"
#~ msgstr "Wordpress malfil ble ikke opprettet"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP opprettet fil med hell"

#~ msgid "PHP file not created"
#~ msgstr "PHP-fil ble ikke opprettet"

#~ msgid " file not created"
#~ msgstr "filen ble ikke opprettet"

#~ msgid "Already exists"
#~ msgstr "Eksisterer allerede"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Du har ikke tillatelse til å opprette fil!"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr ""
#~ "opprette, redigere, laste opp, laste ned, slette temafiler og mapper"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Språkmappen er blitt nedlagt."

#~ msgid "Add single or multiple languages."
#~ msgstr "Legg til enkelt eller flere språk."

#~ msgid "Add single language file"
#~ msgstr "Legg til enkelt språkfil"

#~ msgid "Please click on language button."
#~ msgstr "Klikk på språkknappen."

#~ msgid "Add all languages zip folder"
#~ msgstr "Legg til alle språk zip-mappen"

#~ msgid "Zip Download"
#~ msgstr "Zip Last ned"
languages/wp-file-manager-gd.mo000064400000045574147361034410012434 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�b(�B)*:*Se*2�*%�*+$+�?+7,OL-R�-�-T�-JQ.L�.�.�./-&/T/%s/4�/�/2�/0#!0
E0
S0a0m0�0�0
�01�0,�0$111816N1&�1;�1�1�1�122
$2"22U2,r2 �2�2M�23�73�3'4B4)a4H�4��4�50�56/646@6�]7I8#b8�8s�9�	:��:�;�;
�;�;
�;T�;?9<%y<�<�<�<�<==4=c:=n�=,
>-:>h>
w>K�>4�>$?-(?AV?
�?�?�?�?�? @t5@x�@#A2+A"^A.�A7�A<�A%B1BLB
cB;qB�B�B'�BCC%C9CIC	_C+iC�C�C�C.�C6DFDbD!rD�D�DK�D
E5E)PE2zE<�E�E�EF1F:F;FF'�F(�F*�F#�F&"G,IG&vG�G�G9�G&H1)H2[H
�H�H�H3�H�H�	I�IKJ`]Jg�JU&K}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 18:28+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: gd
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=n < 2 ? 0 : n == 2 ? 1 : 2;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* airson a h-uile gnìomh agus gus beagan obrachaidh a cheadachadh faodaidh tu ainm na h-obrachaidh ainmeachadh mar, allowed_operations = "luchdachadh suas, luchdaich sìos". Nota: air a sgaradh le cromag (,). Bunaiteach: *-> Cuiridh e casg air luchd-cleachdaidh sònraichte le bhith dìreach a ’cur an cuid ids air an sgaradh le cromagan (,). Ma tha an cleachdaiche Ban an uairsin cha bhith e comasach dhaibh faighinn gu manaidsear faidhle wp aig a ’cheann aghaidh.-> Cuspair Manaidsear File. Default: Solas-> Faidhle air atharrachadh no cruthaich cruth ceann-latha. Default: d M, Y h: i A.-> Manaidsear faidhle Cànan. Default: English(en)-> Filemanager UI View. Default: gridGnìomhGnìomhan air cùl-taic (ean) taghteFaodaidh rianachd bacadh a chuir air gnìomhan neach-cleachdaidh sam bith. Cuideachd cuir am falach faidhlichean agus pasgain agus faodaidh iad slighean eadar-dhealaichte - pasgain eadar-dhealaichte a shuidheachadh airson diofar luchd-cleachdaidh.Faodaidh rianachd cuingealachadh a dhèanamh air gnìomhan cleachdaiche sam bith. Cuideachd cuir am falach faidhlichean agus pasganan agus faodaidh iad slighean eadar-dhealaichte - pasgain eadar-dhealaichte a shuidheachadh airson dreuchdan luchd-cleachdaidh eadar-dhealaichte.Às deidh sgudal a chomasachadh, thèid na faidhlichean agad gu pasgan sgudail.Às deidh seo a chomasachadh thèid a h-uile faidhle gu leabharlann nam meadhanan.Uile DèantaA bheil thu cinnteach gu bheil thu airson cùl-taic (ean) taghte a thoirt air falbh?A bheil thu cinnteach gu bheil thu airson an cùl-taic seo a dhubhadh às?A bheil thu cinnteach gu bheil thu airson an cùl-taic seo a thoirt air ais?Ceann-latha cùl-taicCùl-taic a-nisRoghainnean cùl-taic:Dàta cùl-taic (cliog gus luchdachadh sìos)Bidh faidhlichean cùl-taic foTha cùl-taic a ’ruith, fuirich ortChaidh an cùl-taic a dhubhadh às gu soirbheachail.Cùl-taic / Ath-nuadhachadhCùl-taic air a thoirt air falbh gu soirbheachail!BanBrabhsair agus OS (HTTP_USER_AGENT)Ceannaich PROCeannaich ProSguir dhethAtharraich Cuspair an seo:Cliog gus PRO a cheannachSealladh deasaiche còdDearbhaichDèan lethbhreac de fhaidhlichean no de phasgananAn-dràsta cha deach cùl-taic (ean) a lorg.FILES DELETEDorchaCùl-taic stòr-dàtaCùl-taic stòr-dàta air a dhèanamh air ceann-latha Cùl-taic stòr-dàta air a dhèanamh.Cùl-taic stòr-dàta air ath-nuadhachadh gu soirbheachail.DefaultDefault:Cuir àsDeselectCuir às don bhrath seo.Thoir seachadLuchdaich sìos logaichean faidhleLuchdaich sìos faidhlicheanDèan dùblachadh no clone pasgan no faidhleDeasaich logaichean faidhlicheanDeasaich faidhleDèan comas air faidhlichean a luchdachadh suas gu leabharlann nam meadhanan?Dèan comas air sgudal?Mearachd: Cha ghabh cùl-taic a thoirt air ais a chionn 's gu bheil cùl-taic an stòr-dàta trom ann am meud. Feuch ris a’ mheud as motha a tha ceadaichte àrdachadh bho roghainnean Roghainnean.Cùl-taic (ean) gnàthaichteThoir a-mach tasglann no faidhle le zipManaidsear faidhle - ShortcodeManaidsear faidhle - Togalaichean SiostamRoot Path Manaidsear File, faodaidh tu atharrachadh a rèir do roghainn.Tha deasaiche còd aig Manaidsear File le iomadh cuspair. Faodaidh tu cuspair sam bith a thaghadh airson deasaiche còd. Nochdaidh e nuair a dheasaicheas tu faidhle sam bith. Cuideachd faodaidh tu modh làn-sgrìn de dheasaiche còd a cheadachadh.Liosta Obraichean faidhle:Chan eil faidhle ann airson a luchdachadh sìos.Cùl-taic faidhlicheanglasCuideachadhSeo “test” an t-ainm pasgan a tha suidhichte air an eòlaire freumh, no faodaidh tu slighe a thoirt dha fo-phasganan mar “wp-content/plugins”. Ma dh’ fhàgas e falamh no ma dh’ fhàgas e falamh gheibh e cothrom air a h-uile pasgan air root eòlaire. Default: eòlaire rootAn seo faodaidh admin cothrom a thoirt do dhleastanasan luchd-cleachdaidh gus manaidsear faidhle a chleachdadh. Faodaidh an rianachd Folder Access Default a shuidheachadh agus cuideachd smachd a chumail air meud luchdaidh suas faidhle.Fiosrachadh mun fhaidhleCòd tèarainteachd neo-dhligheach.Leigidh e leis a h-uile dreuchd cothrom fhaighinn air manaidsear fhaidhlichean air a’ cheann aghaidh no Faodaidh tu a chleachdadh gu sìmplidh airson dreuchdan cleachdaiche sònraichte mar a leithid ceadaichte_roles = " deasaiche, ùghdar" (air a sgaradh le cromag(,))Glasaidh e air ainmeachadh ann an cromagan. faodaidh tu barrachd a ghlasadh mar ".php,.css,.js" msaa. Default: NullSeallaidh e manaidsear fhaidhlichean air a’ cheann aghaidh. Ach chan fhaod ach an Rianaire faighinn thuige agus smachdaichidh e bho shuidheachaidhean manaidsear faidhle.Seallaidh e manaidsear fhaidhlichean air a’ cheann aghaidh. 'S urrainn dhut smachd a chumail air a h-uile suidheachadh bho roghainnean manaidsear fhaidhlichean. Obraichidh e an aon rud ri backend WP File Manager.Teachdaireachd Log mu dheireadhSolasLogaicheanDèan eòlaire no pasganDèan faidhleAn ìre as àirde a tha ceadaichte aig àm ath-nuadhachadh cùl-taic an stòr-dàta.Meud as motha de luchdachadh suas faidhle (upload_max_filesize)Cuingealachadh Cuimhne (memory_limit)Id cùl-taic a dhìth.Seòrsa paramadair a dhìth.Paramadairean a tha a dhìth.Chan eil taingGun teachdaireachd logCha deach logaichean a lorg!Nota:Nota: Is e seo seallaidhean-sgrìn demo. Feuch an ceannaich thu File Manager pro gu gnìomhan Logs.Nota: Chan eil an seo ach glacadh-sgrìn demo. Gus suidheachaidhean fhaighinn, ceannaich an dreach pro againn.Chan eil dad air a thaghadh airson cùl-taicChan eil dad air a thaghadh airson cùl-taic.Ceart gu leòrGlè mhathFeadhainn eile (Stiùiridhean sam bith eile a lorgar am broinn susbaint wp)Cuid eile cùl-taic air a dhèanamh air ceann-latha Cùl-taic cuid eile air a dhèanamh.Dh'fhàillig cuid eile lethbhreac-glèidhidh.Chaidh cuid eile den chùl-taic ath-nuadhachadh gu soirbheachail.Tionndadh PHPParamadairean:Cuir a-steach faidhle no pasganCuir a-steach seòladh puist-d.Cuir a-steach a ’chiad ainm.Cuir a-steach ainm mu dheireadh.Feuch an atharraich thu seo gu faiceallach, faodaidh slighe ceàrr toirt air plugan manaidsear faidhle a dhol sìos.Feuch an àrdaich thu luach an raoin ma tha thu a’ faighinn teachdaireachd mearachd aig àm ath-nuadhachadh cùl-taic.PluginsCùl-taic plugins air a dhèanamh air ceann-latha Cùl-taic plugins air a dhèanamh.Dh'fhàillig lethbhreac-glèidhidh nam plugan.Cùl-taic plugins air ath-nuadhachadh gu soirbheachail.Post meud luchdachadh suas faidhle as àirde (post_max_size)RoghainneanPoileasaidh DìomhaireachdSlighe freumha poblachFILES RESTOREThoir air falbh no cuir às do fhaidhlichean agus phasgananAth-ainmich faidhle no pasganAth-nuadhachadhTha ath-nuadhachadh a’ ruith, fuirichURNUIGHSàbhail atharrachaidheanA ’sàbhaladh ...Rannsaich rudanCùis tèarainteachd.Tagh UileTagh cùl-taic(ean) airson an sguabadh às!SuidhichidheanSuidhichidhean - Deasaiche còdSuidhichidhean - CoitcheannSuidhichidhean - Cuingeachaidhean cleachdaicheSuidhichidhean - Cuingeachaidhean Dreuchd CleachdaicheSuidhich air a shàbhaladh.Shortcode - PROGearr sìmplidh faidhle no pasganTogalaichean an t-siostaimCumhachan SeirbheisTha e coltach gun do shoirbhich leis an cùl-taic agus tha e a-nis deiseil.CuspaireanCùl-taic cuspairean air a dhèanamh air ceann-latha Cùl-taic nan cuspairean air a dhèanamh.Dh'fhàillig lethbhreac-glèidhidh nan cuspairean.Cùl-taic tèamaichean air ath-nuadhachadh gu soirbheachail.Ùine a-nisÙine (max_execution_time)Gus tasglann no zip a dhèanamhAn-diughCLEACHDADH:Cha b' urrainn dhuinn cùl-taic stòr-dàta a chruthachadh.Cha ghabh cùl-taic a thoirt air falbh!Cha ghabh cùl-taic DB a thoirt air ais.Cha ghabh feadhainn eile a thoirt air ais.Cha ghabh plugins a thoirt air ais.Cha ghabh cuspairean a thoirt air ais.Cha ghabh luchdachadh suas a thoirt air ais.Luchdaich suas logaichean faidhlicheanLuchdaich suas faidhlicheanLuchdaich suasLuchdaich suas cùl-taic air a dhèanamh air ceann-latha Dèan lethbhreac dhen luchdadh a-nuas.Dh'fhàillig luchdadh suas lethbhreac-glèidhidh.Luchdaich suas cùl-taic air ais gu soirbheachail.DearbhaichFaic LogManaidsear faidhle WPManaidsear faidhle WP - Cùl-taic / Ath-nuadhachadhTabhartas Manaidsear File WPTha sinn dèidheil air caraidean ùra a dhèanamh! Subscribe gu h-ìosal agus tha sinn a ’gealltainn
    a ’cumail fios riut mu na plugins, ùrachaidhean, as ùire againn
    cùmhnantan uamhasach agus beagan thairgsean sònraichte.Fàilte gu Manaidsear FileCha do rinn thu atharrachaidhean sam bith airson a bhith air an sàbhaladh.airson cothrom air cead faidhlichean a leughadh, thoir an aire: fìor/meallta, bunaiteach: fìorairson cothrom air ceadan faidhlichean a sgrìobhadh, thoir an aire: fìor/meallta, bunaiteach: mealltafalaichidh e air ainmeachadh an seo. Nota: air a sgaradh le cromag (,). Default: Nulllanguages/wp-file-manager-sk_SK.mo000064400000043325147361034410013044 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�L(�
).�)M*<P*R�*�*�*�+��+A|,N�,
-+-(I-%r-�-�-�-,�-�-+.$F.k.$�.�."�.
�.
�.�.�.//	5/#?/(c/�/�/�/+�/�/+0/0;0P0\0l0	�0�0�01�0�013"1V1�f12- 2 N2'o2?�2��2�3 �3�3444�0566�<6w7��7�8�8�8�8"�89@9@Y9�9�9�9!�9::-:
L:eW:v�:$4;%Y;;�;E�;*�;�;<,/<
\<
g< r<�<�<�<U�<Q.=�=/�=!�=�=*�=E$>
j>!u>�>�>2�>"�>? !?B?J?Y?h?w?�?+�?
�?�?�?&@+2@^@y@.�@�@�@A�@#A/)AYAwA/�A
�A#�A�AB
B+$B"PB*sB#�B�B�B(C)CGCWC-cC%�C!�C0�C
DD$D/9DiD��DlE8�E_�EZ#FV~F}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Theme Editor Pro
PO-Revision-Date: 2022-02-28 11:28+0530
Last-Translator: 
Language-Team: 
Language: sk_SK
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* pre všetky operácie a na umožnenie niektorých operácií môžete uviesť názov operácie ako like, allow_operations="upload,download". Poznámka: oddelené čiarkou (,). Predvolené: *-> Zakáže konkrétnym používateľom iba vloženie ich identifikátorov oddelených čiarkami (,). Ak je používateľ Ban, nebude mať prístup k správcovi súborov wp na klientskom rozhraní.-> Téma Správca súborov. Predvolené: Light-> Súbor zmenený alebo Vytvoriť formát dátumu. Predvolené: d M, Y h:i A-> Jazyk správcu súborov. Predvolená hodnota: English(en)-> Zobrazenie používateľského rozhrania Filemanager. Predvolená hodnota: gridAkciaAkcie pri vybratých záloháchSprávca môže obmedziť akcie ľubovoľného používateľa. Skryte tiež súbory a priečinky a môžete nastaviť rôzne cesty rôznych priečinkov pre rôznych používateľov.Správca môže obmedziť akcie ľubovoľnej užívateľskej domény. Skryte tiež súbory a priečinky a môžete nastaviť rôzne cesty rôznych priečinkov pre rôzne roly používateľov.Po povolení koša sa vaše súbory dostanú do priečinka koša.Po povolení tejto možnosti sa všetky súbory dostanú do knižnice médií.Všetko hotovéNaozaj chcete odstrániť vybraté zálohy?Naozaj chcete odstrániť túto zálohu?Naozaj chcete obnoviť túto zálohu?Dátum zálohyZálohujte terazMožnosti zálohovania:Záložné údaje (kliknutím ich stiahnete)Záložné súbory budú podZálohovanie je spustené, čakajte prosímZáloha bola úspešne odstránená.Zálohovanie/obnovenieZálohy boli úspešne odstránené!BanPrehliadač a OS (HTTP_USER_AGENT)Kúpte si PROKúpte si ProZrušiťTu zmeniť tému:Kliknutím kúpite PROZobrazenie editora kóduPotvrdiťKopírujte súbory alebo priečinkyMomentálne sa nenašli žiadne zálohy.VYMAZAŤ SÚBORYTmaZálohovanie databázyZálohovanie databázy vykonané k dátumu Záloha databázy dokončená.Záloha databázy bola úspešne obnovená.PredvolenéPredvolená hodnota:OdstrániťZrušiť výberZamietnuť toto oznámenie.PrispieťStiahnite si protokoly súborovStiahnutie súborovDuplikujte alebo klonujte priečinok alebo súborUpravte protokoly súborovUpravte súborPovoliť nahrávanie súborov do knižnice médií?Povoliť kôš?Chyba: Zálohu nie je možné obnoviť, pretože záloha databázy má veľkú veľkosť. Skúste zvýšiť maximálnu povolenú veľkosť v nastaveniach predvolieb.Existujúce zálohyExtrahujte archív alebo komprimovaný súborSprávca súborov - krátky kódSprávca súborov - vlastnosti systémuRoot Path File Manager môžete zmeniť podľa vášho výberu.Správca súborov má editor kódov s viacerými témami. Pre editor kódu môžete zvoliť ľubovoľnú tému. Zobrazí sa pri úprave ľubovoľného súboru. Môžete tiež povoliť režim celej obrazovky editora kódu.Zoznam operácií so súbormi:Súbor neexistuje na stiahnutie.Zálohovanie súborovŠedáPomocTu je "test" názov priečinka, ktorý sa nachádza v koreňovom adresári, alebo môžete zadať cestu pre podpriečinky ako "wp-content/plugins". Ak necháte prázdne alebo prázdne, pristúpi sa ku všetkým priečinkom v koreňovom adresári. Predvolené: Koreňový adresárTu môže správca poskytnúť prístup k rolám používateľov na použitie správcu súborov. Správca môže nastaviť predvolený priečinok prístupu a tiež ovládať veľkosť nahrávania správcu súborov.Informácie o súboreNeplatný bezpečnostný kód.Umožní všetkým rolám prístup k správcovi súborov na frontende alebo môžete jednoducho použiť pre konkrétne používateľské roly, ako napríklad allow_roles="editor,author" (oddelené čiarkou(,))Zamkne sa uvedené v čiarkach. môžete uzamknúť viac ako napríklad ".php,.css,.js" atď. Predvolená hodnota: NullNa frontende sa zobrazí správca súborov. Prístup k nemu má však iba správca a bude ho ovládať z nastavení správcu súborov.Na frontende sa zobrazí správca súborov. Všetky nastavenia môžete ovládať z nastavení správcu súborov. Bude to fungovať rovnako ako backend WP File Manager.Posledná správa z protokoluSvetloZáznamyVytvorte adresár alebo priečinokVytvorte súborMaximálna povolená veľkosť v čase obnovy zálohy databázy.Maximálna veľkosť nahrávaného súboru (upload_max_filesize)Limit pamäte (memory_limit)Chýba záložné ID.Chýba typ parametra.Chýbajú požadované parametre.Nie ďakujemŽiadna správa z denníkaNenašli sa žiadne protokoly!Poznámka:Poznámka: Toto sú ukážkové snímky obrazovky. Zakúpte si funkcie File Manager pro do denníkov.Poznámka: Toto je iba ukážkový screenshot. Ak chcete získať nastavenia, zakúpte si našu profesionálnu verziu.Na zálohovanie nebolo vybraté ničNa zálohovanie nebolo vybraté nič.OkOkOstatné (Akékoľvek iné adresáre nájdené vo vnútri wp-content)Ostatné zálohovanie vykonané k dátumu Ostatné zálohovanie hotovo.Iné zálohovanie zlyhalo.Záloha ostatných bola úspešne obnovená.Verzia PHPParametre:Prilepte súbor alebo priečinokZadajte e-mailovú adresu.Zadajte krstné meno.Zadajte priezvisko.Zmeňte to opatrne, nesprávna cesta môže viesť doplnok správcu súborov k pádu.Ak sa počas obnovy zálohy zobrazuje chybové hlásenie, zvýšte hodnotu poľa.PluginyZálohovanie doplnkov bolo vykonané k dátumu Zálohovanie pluginov je hotové.Zálohovanie doplnkov zlyhalo.Záloha doplnkov bola úspešne obnovená.Zverejniť maximálnu veľkosť nahrávaného súboru (post_max_size)PredvoľbyZásady ochrany osobných údajovVerejná koreňová cestaOBNOVIŤ SÚBORYOdstráňte alebo odstráňte súbory a priečinkyPremenujte súbor alebo priečinokObnoviťObnovenie je spustené, čakajteÚSPECHUložiť zmenyUkladá sa ...Hľadajte veciBezpečnostný problém.Vybrať všetkoVyberte zálohy, ktoré chcete odstrániť!nastavenieNastavenia - editor kódovNastavenia - VšeobecnéNastavenia - obmedzenia používateľaNastavenia - obmedzenia roly používateľaNastavenia boli uložené.Krátky kód - PROJednoduché vyrezanie súboru alebo priečinkaVlastnosti systémuPodmienky službyZdá sa, že zálohovanie bolo úspešné a teraz je dokončené.TémyZálohovanie motívov bolo vykonané k dátumu Zálohovanie tém je hotové.Zálohovanie motívov zlyhalo.Zálohovanie motívov bolo úspešne obnovené.Teraz časČasový limit (max_execution_time)Vytvorenie archívu alebo zipuDnesPOUŽITIE:Nie je možné vytvoriť zálohu databázy.Zálohu sa nepodarilo odstrániť!Nie je možné obnoviť zálohu databázy.Nie je možné obnoviť ostatných.Nepodarilo sa obnoviť doplnky.Témy sa nepodarilo obnoviť.Nepodarilo sa obnoviť nahrané súbory.Odovzdajte protokoly súborovNahrať súboryNačítaniaZálohy nahrávania boli vykonané k dátumu Záloha nahrávania bola dokončená.Zálohovanie nahrávania zlyhalo.Zálohovanie nahrávok bolo úspešne obnovené.OveriťPrezrieť záznamSprávca súborov WPSprávca súborov WP - zálohovanie / obnoveniePríspevok správcu súborov WPRadi nadväzujeme nové priateľstvá! Prihláste sa na odber nižšie a sľubujeme
    budeme vás informovať o našich najnovších nových doplnkoch, aktualizáciách,
    úžasné ponuky a niekoľko špeciálnych ponúk.Vitajte v Správcovi súborovNeurobili ste žiadne zmeny, ktoré by sa dali uložiť.pre povolenie prístupu na čítanie súborov, poznámka: true/false, predvolená hodnota: truepre prístup k oprávneniam na zapisovanie súborov, poznámka: true/false, default: falseskryje sa tu spomínané. Poznámka: oddelené čiarkou (,). Predvolená hodnota: Nulllanguages/wp-file-manager-id_ID.po000064400000065116147361034410013007 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 10:38+0530\n"
"PO-Revision-Date: 2022-03-01 11:07+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: id_ID\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Pencadangan tema berhasil dipulihkan."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Tidak dapat memulihkan tema."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Unggahan cadangan berhasil dipulihkan."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Tidak dapat memulihkan unggahan."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Cadangan lainnya berhasil dipulihkan."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Tidak dapat memulihkan orang lain."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Pencadangan plugin berhasil dipulihkan."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Tidak dapat memulihkan plugin."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Cadangan basis data berhasil dipulihkan."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Semua selesai"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Tidak dapat memulihkan cadangan DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Cadangan berhasil dihapus!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Tidak dapat menghapus cadangan!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Pencadangan basis data dilakukan pada tanggal "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Pencadangan plugin dilakukan pada tanggal "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Pencadangan tema dilakukan pada tanggal "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Upload backup dilakukan pada tanggal "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Pencadangan lainnya dilakukan pada tanggal "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Log"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Tidak ada log yang ditemukan!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Tidak ada yang dipilih untuk cadangan"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Masalah Keamanan."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Pencadangan basis data selesai."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Tidak dapat membuat cadangan basis data."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Pencadangan plugin selesai."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Pencadangan plugin gagal."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Pencadangan tema selesai."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Pencadangan tema gagal."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Upload cadangan selesai."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Gagal mengunggah cadangan."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Pencadangan lainnya selesai."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Pencadangan lainnya gagal."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Manajer File WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Pengaturan"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferensi"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Properti sistem"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kode pendek - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Cadangkan/Pulihkan"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Beli Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Menyumbangkan"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "File tidak ada untuk diunduh."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Kode keamanan salah."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "ID cadangan tidak ada."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Jenis parameter tidak ada."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Parameter yang diperlukan tidak ada."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Kesalahan: Tidak dapat memulihkan cadangan karena cadangan basis data "
"berukuran besar. Silakan coba untuk meningkatkan Ukuran maksimum yang "
"diizinkan dari pengaturan Preferensi."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Pilih cadangan untuk dihapus!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Apakah Anda yakin ingin menghapus cadangan yang dipilih?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Pencadangan sedang berjalan, harap tunggu"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Pemulihan sedang berjalan, harap tunggu"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Tidak ada yang dipilih untuk cadangan."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Manajer File WP - Cadangkan/Pulihkan"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opsi Cadangan:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Cadangan Basis Data"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Pencadangan File"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plugin"

#: inc/backup.php:71
msgid "Themes"
msgstr "Tema"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Unggah"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Lainnya (Direktori lain yang ditemukan di dalam wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Cadangkan Sekarang"

#: inc/backup.php:89
msgid "Time now"
msgstr "Waktu sekarang"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "KEBERHASILAN"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Cadangan berhasil dihapus."

#: inc/backup.php:102
msgid "Ok"
msgstr "Baik"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "HAPUS FILE"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Anda yakin ingin menghapus cadangan ini?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Membatalkan"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Konfirmasi"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "KEMBALIKAN FILE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Apakah Anda yakin ingin memulihkan cadangan ini?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Pesan Log Terakhir"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Pencadangan tampaknya berhasil dan sekarang selesai."

#: inc/backup.php:171
msgid "No log message"
msgstr "Tidak ada pesan log"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Cadangan yang Ada"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Tanggal Cadangan"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Cadangan data (klik untuk mengunduh)"

#: inc/backup.php:190
msgid "Action"
msgstr "Tindakan"

#: inc/backup.php:210
msgid "Today"
msgstr "Hari ini"

#: inc/backup.php:239
msgid "Restore"
msgstr "Mengembalikan"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Menghapus"

#: inc/backup.php:241
msgid "View Log"
msgstr "Melihat log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Saat ini tidak ada cadangan yang ditemukan."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Tindakan pada cadangan yang dipilih"

#: inc/backup.php:251
msgid "Select All"
msgstr "Pilih Semua"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Batalkan pilihan"

#: inc/backup.php:254
msgid "Note:"
msgstr "catatan:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "File cadangan akan berada di bawah"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Kontribusi Manajer File WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Catatan: Ini adalah screenshot demo. Silakan beli File Manager pro ke fungsi "
"Log."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klik untuk Membeli PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Beli PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Edit File Log"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Unduh File Log"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Unggah File Log"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Pengaturan disimpan."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Tutup pemberitahuan ini."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Anda belum membuat perubahan apa pun untuk disimpan."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Jalur Akar Publik"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "File Manager Root Path, bisa anda ubah sesuai pilihan anda."

#: inc/root.php:59
msgid "Default:"
msgstr "default:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Harap ubah ini dengan hati-hati, jalur yang salah dapat menyebabkan plugin "
"pengelola file turun."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Aktifkan Sampah?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Setelah mengaktifkan sampah, file Anda akan masuk ke folder sampah."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Aktifkan Unggah File ke Pustaka Media?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Setelah mengaktifkan ini semua file akan masuk ke perpustakaan media."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Ukuran maksimum yang diizinkan pada saat pemulihan cadangan basis data."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Harap tingkatkan nilai bidang jika Anda mendapatkan pesan kesalahan pada "
"saat pemulihan cadangan."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Simpan perubahan"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Pengaturan - Umum"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Catatan: Ini hanya tangkapan layar demo. Untuk mendapatkan pengaturan, "
"silakan beli versi pro kami."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Di sini admin dapat memberikan akses ke peran pengguna untuk menggunakan "
"filemanager. Admin dapat mengatur Default Access Folder dan juga mengontrol "
"ukuran upload filemanager."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Pengaturan - Editor kode"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager memiliki editor kode dengan banyak tema. Anda dapat memilih "
"tema apa saja untuk editor kode. Ini akan ditampilkan ketika Anda mengedit "
"file apa pun. Anda juga dapat mengizinkan mode layar penuh editor kode."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Tampilan editor kode"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Pengaturan - Pembatasan Pengguna"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Admin dapat membatasi tindakan pengguna mana pun. Juga menyembunyikan file "
"dan folder dan dapat mengatur jalur folder yang berbeda - beda untuk "
"pengguna yang berbeda."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Pengaturan - Pembatasan Peran Pengguna"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Admin dapat membatasi tindakan peran pengguna apa pun. Juga menyembunyikan "
"file dan folder dan dapat mengatur berbeda - jalur folder yang berbeda untuk "
"peran pengguna yang berbeda."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Manajer File - Kode Pendek"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "MENGGUNAKAN:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Ini akan menampilkan pengelola file di ujung depan. Anda dapat mengontrol "
"semua pengaturan dari pengaturan pengelola file. Ini akan bekerja sama "
"dengan backend Manajer File WP."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Ini akan menampilkan pengelola file di ujung depan. Tetapi hanya "
"Administrator yang dapat mengaksesnya dan akan mengontrol dari pengaturan "
"pengelola file."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parameter:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Ini akan memungkinkan semua peran mengakses pengelola file di ujung depan "
"atau Anda dapat menggunakan sederhana untuk peran pengguna tertentu seperti "
"allow_roles=\"editor,author\" (dipisahkan dengan koma (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Di sini \"test\" adalah nama folder yang terletak di direktori root, atau "
"Anda dapat memberikan path untuk sub folder seperti \"wp-content/plugins\". "
"Jika dibiarkan kosong atau kosong itu akan mengakses semua folder di "
"direktori root. Default: Direktori root"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"untuk akses untuk menulis izin file, catatan: true/false, default: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "untuk akses izin membaca file, catatan: benar/salah, default: benar"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"itu akan menyembunyikan disebutkan di sini. Catatan: dipisahkan dengan koma "
"(,). Bawaan: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Ini akan mengunci disebutkan dalam koma. Anda dapat mengunci lebih banyak "
"seperti \".php,.css,.js\" dll. Default: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* untuk semua operasi dan untuk mengizinkan beberapa operasi, Anda dapat "
"menyebutkan nama operasi seperti, allow_operations=\"upload,download\". "
"Catatan: dipisahkan dengan koma (,). Bawaan: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Daftar Operasi File:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Buat direktori atau folder"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Buat file"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Ganti nama file atau folder"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Gandakan atau klon folder atau file"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Tempel file atau folder"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Melarang"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Untuk membuat arsip atau zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Ekstrak arsip atau file zip"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Salin file atau folder"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Sederhana memotong file atau folder"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Mengedit file"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Hapus atau hapus file dan folder"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Unduh file"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Unggah berkas"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Cari hal-hal"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Info berkas"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Tolong"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Ini akan melarang pengguna tertentu dengan hanya menempatkan id mereka "
"dipisahkan dengan koma (,). Jika pengguna Ban maka mereka tidak akan dapat "
"mengakses pengelola file wp di ujung depan."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Tampilan UI Manajer File. default: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> File Dimodifikasi atau Buat format tanggal. default: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Bahasa pengelola file. default: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema Manajer File. default: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Manajer File - Properti Sistem"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "versi PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Ukuran unggahan file maksimum (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Posting ukuran unggah file maksimum (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Batas Memori (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Waktu habis (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Peramban dan OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Ubah Tema Di Sini:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "default"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Gelap"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Cahaya"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Abu-abu"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Selamat datang di Manajer File"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Kami senang membuat teman baru! Berlangganan di bawah dan kami berjanji "
"untuk\n"
"    membuat Anda tetap up-to-date dengan plugin terbaru kami, update,\n"
"    penawaran luar biasa dan beberapa penawaran khusus."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Silahkan Masukkan Nama Depan."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Silakan Masukkan Nama Belakang."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Silahkan Masukkan Alamat Email."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Memeriksa"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Tidak, terima kasih"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Persyaratan Layanan"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Kebijakan pribadi"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Penghematan..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "baik"

#~ msgid "Backup not found!"
#~ msgstr "Cadangan tidak ditemukan!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Cadangan berhasil dihapus!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Tidak ada yang dipilih untuk cadangan</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Masalah Keamanan.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Pencadangan database selesai.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Tidak dapat membuat cadangan basis data."
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Pencadangan plugin selesai.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Pencadangan plugin gagal.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Pencadangan tema selesai.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Pencadangan tema gagal.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Upload backup selesai.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Upload cadangan gagal.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Pencadangan lainnya selesai.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Pencadangan lainnya gagal.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Semua Selesai</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Kelola file WP Anda."

#~ msgid "Extensions"
#~ msgstr "Ekstensi"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Tolong sampaikan beberapa donasi, untuk membuat plugin lebih stabil. Anda "
#~ "bisa membayar jumlah pilihan Anda."
languages/wp-file-manager-bn_BD.po000064400000114177147361034410013005 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 15:34+0530\n"
"PO-Revision-Date: 2022-02-25 15:46+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: bn_BD\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "থিমস ব্যাকআপ সফলভাবে পুনরুদ্ধার।"

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "থিম পুনরুদ্ধার করতে অক্ষম।"

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "আপলোডগুলি ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।"

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "আপলোডগুলি পুনরুদ্ধার করতে অক্ষম।"

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "অন্যদের ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।"

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "অন্যদের পুনরুদ্ধার করতে অক্ষম।"

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "প্লাগিন ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।"

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "প্লাগইনগুলি পুনরুদ্ধার করতে অক্ষম।"

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "ডাটাবেস ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।"

#: file_folder_manager.php:286 file_folder_manager.php:297 file_folder_manager.php:588
#: file_folder_manager.php:592
msgid "All Done"
msgstr "সব শেষ"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "ডিবি ব্যাকআপ পুনরুদ্ধার করতে অক্ষম।"

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "ব্যাকআপগুলি সফলভাবে সরানো হয়েছে!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "ব্যাকআপ সরিয়ে দিতে অক্ষম!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "তারিখে ডাটাবেস ব্যাকআপ হয়েছে "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "তারিখে প্লাগিন ব্যাকআপ হয়ে গেছে "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "থিমগুলির ব্যাকআপ তারিখে সম্পন্ন হয়েছে "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "তারিখে আপলোডগুলি ব্যাকআপ হয়ে গেছে "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "অন্যদের ব্যাকআপ তারিখে সম্পন্ন হয়েছে "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "লগস"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "কোন লগ পাওয়া যায় নি!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "ব্যাকআপের জন্য কিছুই নির্বাচন করা হয়নি"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "নিরাপত্তা সমস্যা।"

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "ডাটাবেস ব্যাকআপ সম্পন্ন."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "ডাটাবেস ব্যাকআপ তৈরি করতে অক্ষম।"

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "প্লাগইন ব্যাকআপ সম্পন্ন."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "প্লাগইন ব্যাকআপ ব্যর্থ হয়েছে."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "থিম ব্যাকআপ সম্পন্ন হয়েছে."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "থিম ব্যাকআপ ব্যর্থ হয়েছে."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "আপলোড ব্যাকআপ সম্পন্ন."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "আপলোড ব্যাকআপ ব্যর্থ হয়েছে."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "অন্যান্য ব্যাকআপ সম্পন্ন."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "অন্য ব্যাকআপ ব্যর্থ হয়েছে."

#: file_folder_manager.php:761 file_folder_manager.php:762 lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "ডাব্লুপি ফাইল ম্যানেজার"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "সেটিংস"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "পছন্দসমূহ"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "পদ্ধতির বৈশিষ্ট্য"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "শর্টকোড - প্রো"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "ব্যাকআপ/রিস্টোর"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "প্রো কিনুন"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "দান করা"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "ডাউনলোড করার জন্য ফাইল নেই।"

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "অবৈধ সুরক্ষা কোড।"

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "হারিয়ে যাওয়া ব্যাকআপ আইডি।"

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "অনুপস্থিত পরামিতি প্রকার।"

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "প্রয়োজনীয় পরামিতি অনুপস্থিত।"

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. Please try "
"to increase Maximum allowed size  from Preferences settings."
msgstr ""
"ত্রুটি: ব্যাকআপ পুনরুদ্ধার করতে অক্ষম কারণ ডাটাবেস ব্যাকআপ আকারে ভারী৷ পছন্দ সেটিংস থেকে "
"সর্বোচ্চ অনুমোদিত আকার বাড়ানোর চেষ্টা করুন."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "মুছে ফেলার জন্য ব্যাকআপ নির্বাচন করুন!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "আপনি কি নির্বাচিত ব্যাকআপ (গুলি) সরানোর বিষয়ে নিশ্চিত?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "ব্যাকআপ চলছে, দয়া করে অপেক্ষা করুন"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "পুনরুদ্ধার চলছে, অনুগ্রহ করে অপেক্ষা করুন"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "ব্যাকআপের জন্য কিছুই নির্বাচন করা হয়নি।"

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "ডাব্লুপি ফাইল ম্যানেজার - ব্যাকআপ / পুনরুদ্ধার"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "ব্যাকআপ বিকল্পগুলি:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "ডাটাবেস ব্যাকআপ"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "ফাইল ব্যাকআপ"

#: inc/backup.php:68
msgid "Plugins"
msgstr "প্লাগইনস"

#: inc/backup.php:71
msgid "Themes"
msgstr "থিমস"

#: inc/backup.php:74
msgid "Uploads"
msgstr "আপলোডগুলি"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "অন্যান্য (ডাব্লুপি-কনটেন্টের মধ্যে অন্য কোনও ডিরেক্টরি পাওয়া যায়)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "এখনি ব্যাকআপ করে নিন"

#: inc/backup.php:89
msgid "Time now"
msgstr "সময় এখন"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "সাফল্য"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "ব্যাকআপ সফলভাবে মোছা হয়েছে।"

#: inc/backup.php:102
msgid "Ok"
msgstr "ঠিক আছে"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ফাইল মুছে দিন"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "আপনি কি নিশ্চিত যে আপনি এই ব্যাকআপটি মুছতে চান?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "বাতিল"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "কনফার্ম"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ফাইলগুলি পুনরুদ্ধার করুন"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "আপনি কি নিশ্চিত যে আপনি এই ব্যাকআপটি পুনরুদ্ধার করতে চান?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "শেষ লগ বার্তা"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "ব্যাকআপটি দৃশ্যত সফল হয়েছে এবং এখন সম্পূর্ণ।"

#: inc/backup.php:171
msgid "No log message"
msgstr "কোনও লগ বার্তা নেই"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "বিদ্যমান ব্যাকআপ (গুলি)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "ব্যাকআপ তারিখ"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "ব্যাকআপ ডেটা (ডাউনলোড করতে ক্লিক করুন)"

#: inc/backup.php:190
msgid "Action"
msgstr "কর্ম"

#: inc/backup.php:210
msgid "Today"
msgstr "আজ"

#: inc/backup.php:239
msgid "Restore"
msgstr "পুনরুদ্ধার করুন"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "মুছে ফেলা"

#: inc/backup.php:241
msgid "View Log"
msgstr "লগ দেখুন"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "বর্তমানে কোনও ব্যাকআপ (গুলি) পাওয়া যায় নি।"

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "নির্বাচিত ব্যাকআপ (গুলি) এর উপর ক্রিয়া"

#: inc/backup.php:251
msgid "Select All"
msgstr "সমস্ত নির্বাচন করুন"

#: inc/backup.php:252
msgid "Deselect"
msgstr "নির্বাচন না করা"

#: inc/backup.php:254
msgid "Note:"
msgstr "বিঃদ্রঃ:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "ব্যাকআপ ফাইলগুলি এর অধীনে থাকবে"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "ডাব্লুপি ফাইল ম্যানেজার অবদান"

#: inc/logs.php:7
msgid "Note: These are demo screenshots. Please buy File Manager pro to Logs functions."
msgstr "দ্রষ্টব্য: এগুলি ডেমো স্ক্রিনশট। লগ ফাংশনগুলির জন্য দয়া করে ফাইল ম্যানেজারটি কিনুন।"

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "PRO কিনতে ক্লিক করুন"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27 inc/system_properties.php:5
#: lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "প্রো কিনুন"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "ফাইল লগ সম্পাদনা করুন"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "ফাইল লগ ডাউনলোড করুন"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "ফাইল লগ আপলোড করুন"

#: inc/root.php:43
msgid "Settings saved."
msgstr "সেটিংস সংরক্ষিত."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "এই নোটিশ বাতিল কর."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "আপনি সংরক্ষণ করার জন্য কোনও পরিবর্তন করেননি।"

#: inc/root.php:55
msgid "Public Root Path"
msgstr "পাবলিক রুট পাথ"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "ফাইল ম্যানেজার রুট পাথ, আপনি আপনার পছন্দ অনুযায়ী পরিবর্তন করতে পারেন।"

#: inc/root.php:59
msgid "Default:"
msgstr "ডিফল্ট:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go down."
msgstr "দয়া করে এটি সাবধানে পরিবর্তন করুন, ভুল পথ ফাইল ম্যানেজার প্লাগইনকে নামতে পারে।"

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "ট্র্যাশ সক্ষম করবেন?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "ট্র্যাশ সক্ষম করার পরে আপনার ফাইলগুলি ট্র্যাশ ফোল্ডারে যাবে।"

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "মিডিয়া লাইব্রেরিতে ফাইল আপলোড সক্ষম করবেন?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "এটি সক্ষম করার পরে সমস্ত ফাইল মিডিয়া লাইব্রেরিতে যাবে।"

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "ডাটাবেস ব্যাকআপ পুনরুদ্ধারের সময় সর্বাধিক অনুমোদিত আকার।"

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of backup "
"restore."
msgstr "ব্যাকআপ পুনরুদ্ধারের সময় আপনি ত্রুটি বার্তা পেয়ে থাকলে অনুগ্রহ করে ক্ষেত্রের মান বাড়ান৷"

#: inc/root.php:90
msgid "Save Changes"
msgstr "পরিবর্তনগুলোর সংরক্ষন"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "সেটিংস - সাধারণ"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro version."
msgstr "দ্রষ্টব্য: এটি শুধু একটি ডেমো স্ক্রিনশট। সেটিংস পেতে আমাদের প্রো সংস্করণ কিনতে দয়া করে।"

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set Default "
"Access Folder and also control upload size of filemanager."
msgstr ""
"এখানে ফাইল ম্যানেজার ব্যবহার করার জন্য প্রশাসক ব্যবহারকারীর ভূমিকা অ্যাক্সেস করতে পারেন। "
"অ্যাডমিন ডিফল্ট অ্যাক্সেস ফোল্ডার নির্ধারণ করতে পারে এবং ফাইলম্যানডারের আপলোড আকার নিয়ন্ত্রণ "
"করতে পারে।"

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "সেটিংস - কোড-সম্পাদক"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any theme for "
"code editor. It will display when you edit any file. Also you can allow fullscreen "
"mode of code editor."
msgstr ""
"ফাইল ম্যানেজারের একাধিক থিম সঙ্গে একটি কোড সম্পাদক আছে। আপনি কোড সম্পাদক জন্য কোন থিম "
"নির্বাচন করতে পারেন। যখন আপনি কোনও ফাইল সম্পাদনা করবেন তখন এটি প্রদর্শিত হবে। এছাড়াও আপনি "
"কোড সম্পাদক পূর্ণস্ক্রীন মোড অনুমতি দিতে পারেন।"

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "কোড-সম্পাদক দেখুন"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "সেটিংস - ব্যবহারকারীর সীমাবদ্ধতা"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can set "
"different - different folders paths for different users."
msgstr ""
"অ্যাডমিন যেকোন ব্যবহারকারীর কার্যক্রম সীমাবদ্ধ করতে পারে। এছাড়াও ফাইল এবং ফোল্ডার লুকান এবং "
"বিভিন্ন সেট করতে পারেন - বিভিন্ন ব্যবহারকারীর জন্য বিভিন্ন ফোল্ডার পাথ"

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "সেটিংস - ব্যবহারকারীর ভূমিকা বাধা"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and can set "
"different - different folders paths for different users roles."
msgstr ""
"অ্যাডমিন কোনও userrole এর কার্যকলাপকে সীমিত করতে পারে। এছাড়াও ফাইল এবং ফোল্ডার লুকান এবং "
"বিভিন্ন সেট করতে পারেন - বিভিন্ন ব্যবহারকারীর ভূমিকা জন্য বিভিন্ন ফোল্ডার পাথ।"

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "ফাইল ম্যানেজার - শর্টকোড"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17 inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ব্যবহার:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from file "
"manager settings. It will work same as backend WP File Manager."
msgstr ""
"এটি সামনের প্রান্তে ফাইল ম্যানেজার দেখাবে। আপনি ফাইল ম্যানেজার সেটিংস থেকে সমস্ত সেটিংস "
"নিয়ন্ত্রণ করতে পারেন। এটি ব্যাকএন্ড WP ফাইল ম্যানেজারের মতোই কাজ করবে।"

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it and will "
"control from file manager settings."
msgstr ""
"এটি সামনের প্রান্তে ফাইল ম্যানেজার দেখাবে। কিন্তু শুধুমাত্র অ্যাডমিনিস্ট্রেটর এটি অ্যাক্সেস করতে "
"পারে এবং ফাইল ম্যানেজার সেটিংস থেকে নিয়ন্ত্রণ করবে।"

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "পরামিতি:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can simple use for "
"particular user roles as like allowed_roles=\"editor,author\" (seprated by comma(,))"
msgstr ""
"এটি সমস্ত ভূমিকাকে সামনের প্রান্তে ফাইল ম্যানেজার অ্যাক্সেস করার অনুমতি দেবে বা আপনি "
"অনুমোদিত_roles=\"সম্পাদক, লেখক\" (কমা দ্বারা পৃথক করা(,)) এর মতো নির্দিষ্ট ব্যবহারকারীর "
"ভূমিকার জন্য সহজ ব্যবহার করতে পারেন"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or you can "
"give path for sub folders as like \"wp-content/plugins\". If leave blank or empty it "
"will access all folders on root directory. Default: Root directory"
msgstr ""
"এখানে \"test\" হল ফোল্ডারের নাম যা রুট ডিরেক্টরিতে অবস্থিত, অথবা আপনি \"wp-content/plugins"
"\" এর মতো সাব ফোল্ডারগুলির জন্য পাথ দিতে পারেন। খালি বা খালি রাখলে এটি রুট ডিরেক্টরির সমস্ত "
"ফোল্ডার অ্যাক্সেস করবে। ডিফল্ট: রুট ডিরেক্টরি"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "ফাইল লেখার অনুমতির অ্যাক্সেসের জন্য, নোট: সত্য/মিথ্যা, ডিফল্ট: মিথ্যা"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "ফাইল পড়ার অনুমতি অ্যাক্সেসের জন্য, নোট: সত্য/মিথ্যা, ডিফল্ট: সত্য"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "এটা এখানে উল্লেখ লুকানো হবে. দ্রষ্টব্য: কমা (,) দ্বারা পৃথক করা হয়েছে। ডিফল্ট: শূন্য"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js\" etc. "
"Default: Null"
msgstr ""
"এটি কমায় উল্লেখিত লক হবে। আপনি আরও লক করতে পারেন যেমন \".php,.css,.js\" ইত্যাদি। ডিফল্ট: "
"শূন্য"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation name as "
"like, allowed_operations=\"upload,download\". Note: seprated by comma(,). Default: *"
msgstr ""
"* সমস্ত অপারেশনের জন্য এবং কিছু অপারেশনের অনুমতি দেওয়ার জন্য আপনি অপারেশনের নাম উল্লেখ করতে "
"পারেন যেমন, অনুমোদিত_অপারেশন=\"আপলোড, ডাউনলোড\"। দ্রষ্টব্য: কমা (,) দ্বারা পৃথক করা হয়েছে। "
"ডিফল্ট: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "ফাইল অপারেশন তালিকা:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "ডিরেক্টরি বা ফোল্ডার তৈরি করুন"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "ফাইল তৈরি করুন"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "একটি ফাইল বা ফোল্ডারটির নতুন নাম দিন"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "ফোল্ডার বা ফাইলটিকে নকল বা ক্লোন করুন"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "একটি ফাইল বা ফোল্ডার আটকান"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "নিষেধাজ্ঞা"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "একটি সংরক্ষণাগার বা জিপ তৈরি করতে"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "সংরক্ষণাগার বা জিপ করা ফাইলটি বের করুন"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "ফাইল বা ফোল্ডারগুলি অনুলিপি করুন"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "সরল একটি ফাইল বা ফোল্ডার কাটা"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "একটি ফাইল সম্পাদনা করুন"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "ফাইল এবং ফোল্ডারগুলি মুছুন বা মুছুন"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "ফাইল ডাউনলোড করুন"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "ফাইল আপলোড"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "জিনিস অনুসন্ধান করুন"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "ফাইল তথ্য"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "সহায়তা"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by commas(,). If "
"user is Ban then they will not able to access wp file manager on front end."
msgstr ""
"-> এটি নির্দিষ্ট ব্যবহারকারীদের কেবলমাত্র কমা (,) দ্বারা বিভক্ত করে তাদের আইডিগুলি নিষিদ্ধ "
"করবে। যদি ব্যবহারকারী নিষিদ্ধ হন তবে তারা সামনের প্রান্তে ডাব্লুপি ফাইল ফাইল ব্যবস্থাপক "
"অ্যাক্সেস করতে পারবেন না।"

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> ফাইল ম্যানেজার ইউআই ভিউ। ডিফল্ট: গ্রিড"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> ফাইল সংশোধিত বা তারিখের ফর্ম্যাট তৈরি করুন। ডিফল্ট: ডি এম, ওয়াই এইচ: আই এ"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> ফাইল ম্যানেজার ভাষা। ডিফল্ট: ইংরেজি (এন)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> ফাইল ম্যানেজার থিম। ডিফল্ট: হালকা"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "ফাইল ম্যানেজার - সিস্টেম বৈশিষ্ট্যাবলী"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "পিএইচপি সংস্করণ"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "সর্বাধিক ফাইল আপলোড আকার (আপলোড_ম্যাক্স_ফাইলসাইজ)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "সর্বাধিক ফাইল আপলোড আকার পোস্ট করুন (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "মেমরি সীমা (মেমরি_লিমিট)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "সময়সীমা (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "ব্রাউজার এবং ওএস (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "থিম এখানে পরিবর্তন করুন:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "ডিফল্ট"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "গা"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "আলো"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "ধূসর"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "ফাইল ম্যানেজারে আপনাকে স্বাগতম"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"আমরা নতুন বন্ধু বানাতে ভালোবাসি! নীচে সাবস্ক্রাইব এবং আমরা প্রতিশ্রুতি\n"
"  আমাদের সর্বশেষ নতুন প্লাগিন, আপডেট,\n"
"  দুর্দান্ত ডিল এবং কয়েকটি বিশেষ অফার।"

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "দয়া করে প্রথম নাম লিখুন।"

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "শেষ নাম লিখুন।"

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "ইমেল ঠিকানা লিখুন দয়া করে।"

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "যাচাই করুন"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "না ধন্যবাদ"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "সেবা পাবার শর্ত"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "গোপনীয়তা নীতি"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "সংরক্ষণ করা হচ্ছে ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "ঠিক আছে"

#~ msgid "Backup not found!"
#~ msgstr "ব্যাকআপ পাওয়া যায়নি!"

#~ msgid "Backup removed successfully!"
#~ msgstr "ব্যাকআপ সফলভাবে সরানো হয়েছে!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr "<span class=\"fm_console_error\">ব্যাকআপের জন্য কিছুই নির্বাচিত হয়নি</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">সুরক্ষা ইস্যু।</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">ডাটাবেস ব্যাকআপ হয়ে গেছে।</span>"

#~ msgid "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr "<span class=\"fm_console_error\">ডাটাবেস ব্যাকআপ তৈরি করতে অক্ষম।</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">প্লাগিন ব্যাকআপ সম্পন্ন হয়েছে।</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">প্লাগিন ব্যাকআপ ব্যর্থ হয়েছে।</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">থিমস ব্যাকআপ সম্পন্ন হয়েছে।</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">থিমগুলির ব্যাকআপ ব্যর্থ।</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">আপলোড ব্যাকআপ সম্পন্ন হয়েছে।</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">আপলোড ব্যাকআপ ব্যর্থ।</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">অন্যদের ব্যাকআপ সম্পন্ন হয়েছে।</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">অন্যদের ব্যাকআপ ব্যর্থ।</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">সব শেষ</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat=\"d M, "
#~ "Y h:i A\" allowed_roles=\"editor,author\" access_folder=\"wp-content/plugins\" "
#~ "write = \"true\" read = \"false\" hide_files = \"kumar,abc.php\" lock_extensions="
#~ "\".php,.css\" allowed_operations=\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat=\"d M, "
#~ "Y h:i A\" allowed_roles=\"editor,author\" access_folder=\"wp-content/plugins\" "
#~ "write = \"true\" read = \"false\" hide_files = \"kumar,abc.php\" lock_extensions="
#~ "\".php,.css\" allowed_operations=\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "আপনার WP ফাইলগুলি পরিচালনা করুন."

#~ msgid "Extensions"
#~ msgstr "এক্সটেনশানগুলি"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay amount of "
#~ "your choice."
#~ msgstr ""
#~ "প্লাগইন আরো স্থিতিশীল করতে, কিছু অনুদান অবদান করুন। আপনি আপনার পছন্দ পরিমাণ দিতে পারেন।"
languages/wp-file-manager-ca.po000064400000070416147361034410012421 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 15:55+0530\n"
"PO-Revision-Date: 2022-02-28 15:00+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "La còpia de seguretat de temes s'ha restaurat correctament."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "No es poden restaurar els temes."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "La còpia de seguretat de les càrregues s'ha restaurat correctament."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "No es poden restaurar les càrregues."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Altres còpies de seguretat s'han restaurat correctament."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "No es poden restaurar els altres."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "La còpia de seguretat dels connectors s'ha restaurat correctament."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "No es poden restaurar els connectors."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "La còpia de seguretat de la base de dades s'ha restaurat correctament."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Tot fet"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "No es pot restaurar la còpia de seguretat de la base de dades."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Les còpies de seguretat s'han eliminat correctament."

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "No s'ha pogut eliminar la còpia de seguretat."

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Còpia de seguretat de la base de dades realitzada a la data "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Còpia de seguretat dels connectors feta a la data "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Còpia de seguretat de temes feta a la data "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Còpies de seguretat de les càrregues realitzades a la data "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Altres còpies de seguretat realitzades a la data "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Registres"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "No s'han trobat registres."

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "No s'ha seleccionat res per a la còpia de seguretat"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Problema de seguretat."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Còpia de seguretat de la base de dades feta."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "No es pot crear una còpia de seguretat de la base de dades."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Còpia de seguretat dels connectors feta."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "La còpia de seguretat dels connectors ha fallat."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Còpia de seguretat de temes feta."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "La còpia de seguretat dels temes ha fallat."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Còpia de seguretat de les càrregues feta."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "La còpia de seguretat de les càrregues ha fallat."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Còpia de seguretat d'altres feta."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "La còpia de seguretat d'altres ha fallat."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Gestor de fitxers WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Configuració"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Preferències"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Propietats del sistema"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Restaurar còpia de seguretat"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Compra Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Donar"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "El fitxer no existeix per descarregar."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Codi de seguretat no vàlid."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Falta l'identificador de còpia de seguretat."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Falta el tipus de paràmetre."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Falten els paràmetres obligatoris."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Error: no es pot restaurar la còpia de seguretat perquè la còpia de "
"seguretat de la base de dades és gran. Si us plau, intenteu augmentar la "
"mida màxima permesa des de la configuració de Preferències."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Seleccioneu còpies de seguretat per suprimir!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Esteu segur que voleu eliminar les còpies de seguretat seleccionades?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "La còpia de seguretat s'està executant, espereu"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "La restauració s'està executant, espereu"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "No s'ha seleccionat res per a la còpia de seguretat."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Gestor de fitxers WP - Còpia de seguretat / restauració"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opcions de còpia de seguretat:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Còpia de seguretat de la base de dades"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Còpia de seguretat dels fitxers"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Connectors"

#: inc/backup.php:71
msgid "Themes"
msgstr "Temes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Càrregues"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Altres (qualsevol altre directori que es trobi a wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Feu una còpia de seguretat ara"

#: inc/backup.php:89
msgid "Time now"
msgstr "Hora ara"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "ÈXIT"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "La còpia de seguretat s'ha suprimit correctament."

#: inc/backup.php:102
msgid "Ok"
msgstr "D'acord"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ESBORRAR ARXIUS"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Esteu segur que voleu suprimir aquesta còpia de seguretat?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Cancel · lar"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Confirmeu"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "RESTAURAR ARXIUS"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Esteu segur que voleu restaurar aquesta còpia de seguretat?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Últim missatge de registre"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Aparentment, la còpia de seguretat ha tingut èxit i ara està completa."

#: inc/backup.php:171
msgid "No log message"
msgstr "Cap missatge de registre"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Còpia de seguretat existent"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Data de còpia de seguretat"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Dades de còpia de seguretat (feu clic per baixar-les)"

#: inc/backup.php:190
msgid "Action"
msgstr "Acció"

#: inc/backup.php:210
msgid "Today"
msgstr "Avui"

#: inc/backup.php:239
msgid "Restore"
msgstr "Restaura"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Suprimeix"

#: inc/backup.php:241
msgid "View Log"
msgstr "Veure el registre"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Actualment no s'ha trobat cap còpia de seguretat."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Accions sobre les còpies de seguretat seleccionades"

#: inc/backup.php:251
msgid "Select All"
msgstr "Seleccionar tot"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Anul·leu la selecció"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nota:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Hi haurà fitxers de còpia de seguretat"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Contribució del gestor de fitxers WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nota: són captures de pantalla de demostració. Si us plau, compreu File "
"Manager pro a les funcions de registres."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Feu clic per comprar PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Compra PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Edita els registres de fitxers"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Baixeu registres de fitxers"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Penja registres de fitxers"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Configuració desada."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Rebutgeu aquest avís."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "No heu fet cap canvi per desar-lo."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Camí d’arrel públic"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Camí arrel del gestor de fitxers, podeu canviar segons la vostra elecció."

#: inc/root.php:59
msgid "Default:"
msgstr "Per defecte:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Si us plau, canvieu-ho amb cura, el camí equivocat pot fer que el connector "
"del gestor de fitxers baixi."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Voleu activar la paperera?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Després d'activar la paperera, els fitxers es dirigiran a la carpeta de "
"paperera."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Voleu activar la pujada de fitxers a la biblioteca multimèdia?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Després d'activar-ho, tots els fitxers aniran a la biblioteca multimèdia."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Mida màxima permesa en el moment de la restauració de la còpia de seguretat "
"de la base de dades."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Augmenteu el valor del camp si rebeu un missatge d'error en el moment de la "
"restauració de la còpia de seguretat."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Guardar canvis"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Configuració: general"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nota: Aquesta és només una captura de pantalla de demostració. Per obtenir "
"la configuració, si us plau, compreu la nostra versió professional."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Aquí l'administrador pot donar accés a rols d'usuari per utilitzar el gestor "
"de fitxers. L'administrador pot configurar la carpeta d'accés per defecte i "
"també controlar la mida de càrrega del gestor de fitxers."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Configuració: editor de codis"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"File Manager té un editor de codi amb diversos temes. Podeu seleccionar "
"qualsevol tema per a l'editor de codi. Es mostrarà quan editeu qualsevol "
"fitxer. També podeu permetre el mode de pantalla completa de l'editor de "
"codi."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Vista de l'editor de codi"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Configuració: restriccions d'usuari"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"L'administrador pot restringir les accions de qualsevol usuari. També "
"amagueu fitxers i carpetes i podeu establir camins de carpetes diferents per "
"a diferents usuaris."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Configuració: restriccions del rol de l'usuari"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"L’administrador pot restringir les accions de qualsevol funció d’usuari. "
"També amagueu fitxers i carpetes i podeu establir diferents camins de "
"carpetes diferents per als diferents rols dels usuaris."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Gestor de fitxers: codi curt"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "ÚS:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Mostrarà el gestor de fitxers a la portada. Podeu controlar tota la "
"configuració des de la configuració del gestor de fitxers. Funcionarà igual "
"que el gestor de fitxers WP de fons."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Mostrarà el gestor de fitxers a la portada. Però només l'administrador hi "
"pot accedir i controlarà des de la configuració del gestor de fitxers."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Paràmetres:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Permetrà que tots els rols accedeixin al gestor de fitxers a la portada o "
"podeu utilitzar-lo senzillament per a rols d'usuari concrets, com ara "
"allow_roles=\"editor,author\" (separat per coma (,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Aquí \"prova\" és el nom de la carpeta que es troba al directori arrel, o "
"podeu donar el camí per a subcarpetes com ara \"wp-content/plugins\". Si es "
"deixa en blanc o buit, accedirà a totes les carpetes del directori arrel. "
"Per defecte: directori arrel"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"per accedir als permisos d'escriptura dels fitxers, nota: true/false, per "
"defecte: fals"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"per accedir al permís de lectura de fitxers, nota: true/false, per defecte: "
"true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"s'amagarà aquí esmentat. Nota: separats per comes (,). Per defecte: nul"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Es bloquejarà esmentat entre comes. podeu bloquejar més com \".php,.css,.js"
"\", etc. Per defecte: nul"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* Per a totes les operacions i per permetre alguna operació, podeu esmentar "
"el nom de l'operació com, per exemple, allow_operations=\"upload,download\". "
"Nota: separats per comes (,). Per defecte: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Llista d'operacions de fitxers:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Feu directori o carpeta"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Feu fitxer"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Canvieu el nom d'un fitxer o carpeta"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Dupliqueu o cloneu una carpeta o un fitxer"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Enganxeu un fitxer o carpeta"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Prohibició"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Per fer un arxiu o zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Extreu arxiu o fitxer comprimit"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copieu fitxers o carpetes"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Tall simple d'un fitxer o carpeta"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Editeu un fitxer"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Elimineu o suprimiu fitxers i carpetes"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Descarregueu fitxers"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Pengeu fitxers"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Cerca coses"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Informació del fitxer"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Ajuda"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Prohibirà a usuaris particulars només posar els seus identificadors "
"separats per comes (,). Si l'usuari és Ban, no podrà accedir al gestor de "
"fitxers wp a la portada."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr ""
"-> Visualització de la interfície d'usuari Filemanager. Per defecte: "
"quadrícula"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Fitxer modificat o Crea format de data. Per defecte: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Idioma del gestor de fitxers. Valor per defecte: anglès (en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema del gestor de fitxers. Per defecte: Llum"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Gestor de fitxers: propietats del sistema"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Versió PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Mida màxima de pujada de fitxers (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Publica la mida màxima de pujada del fitxer (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Límit de memòria (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Temps d'espera (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Navegador i SO (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Canvieu el tema aquí:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Per defecte"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Fosc"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Llum"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Gris"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Benvingut al Gestor de fitxers"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Ens encanta fer nous amics! Subscriviu-vos a continuació i us ho prometem\n"
"    estarà al dia amb els nostres nous connectors, actualitzacions,\n"
"    ofertes increïbles i algunes ofertes especials."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Introduïu el nom."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Introduïu el cognom."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Introduïu l'adreça de correu electrònic."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verifiqueu"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "No gràcies"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Termes del servei"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Política de privacitat"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "S'està desant ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "D'acord"

#~ msgid "Backup not found!"
#~ msgstr "No s'ha trobat la còpia de seguretat."

#~ msgid "Backup removed successfully!"
#~ msgstr "La còpia de seguretat s'ha eliminat correctament."

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Res seleccionat per a la còpia de "
#~ "seguretat</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Problema de seguretat. </span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">La còpia de seguretat de la base de "
#~ "dades s'ha realitzat. </span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">No es pot crear una còpia de seguretat "
#~ "de la base de dades. </span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">S'ha fet la còpia de seguretat dels "
#~ "connectors. </span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ha fallat la còpia de seguretat dels "
#~ "connectors. </span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Còpia de seguretat de temes feta. </"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ha fallat la còpia de seguretat de "
#~ "temes. </span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Ha fallat la còpia de seguretat de "
#~ "temes. </span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ha fallat la còpia de seguretat de les "
#~ "càrregues. </span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">S'ha fet una altra còpia de seguretat. "
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ha fallat la còpia de seguretat "
#~ "d'altres. </span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Tot fet </span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Gestioneu els vostres fitxers WP."

#~ msgid "Extensions"
#~ msgstr "Extensions"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Contribueix amb alguna donació, perquè el connector sigui més estable. "
#~ "Podeu pagar l'import que trieu."
languages/wp-file-manager-sr_RS.po000064400000307666147361034410013100 0ustar00msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2022-02-28 11:39+0530\n"
"PO-Revision-Date: 2022-03-01 18:29+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: languages\n"
"X-Poedit-SearchPath-1: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Резервна копија тема је успешно враћена."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Није могуће вратити теме."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Резервна копија отпремања је успешно враћена."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Отпремања није могуће вратити."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Остале резервне копије су успешно враћене."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Није могуће вратити друге."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Резервна копија додатака је успешно враћена."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Враћање додатака није успело."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Сигурносна копија базе података је успешно враћена."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Завршено"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Није могуће вратити сигурносну копију ДБ-а."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Резервне копије су успешно уклоњене!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Уклањање резервне копије није успело!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Прављење резервне копије базе података извршено на датум "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Резервна копија додатака урађена на датум "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Прављење резервне копије тема на датум "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Отпрема резервне копије извршене на датум "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Остале резервне копије урађене на датум "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Трупци"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Није пронађен ниједан записник!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Ништа није изабрано за резервну копију"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Безбедност питање."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Извршена резервна копија базе података."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Није могуће направити резервну копију базе података."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Резервна копија додатака је урађена."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Резервна копија додатака није успела."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Извршена резервна копија тема."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Резервна копија тема није успела."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Резервна копија отпремања је завршена."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Резервна копија отпремања није успела."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Друге резервне копије су урађене."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Друге резервне копије нису успеле."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "ВП Филе Манагер"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Подешавања"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Поставке"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Системска својства"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Кратки код - ПРО"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Бацкуп/Ресторе"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Купи Про"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Донирајте"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Датотека не постоји за преузимање."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Неважећи сигурносни код."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Недостаје резервни ИД."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Недостаје тип параметра."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Недостају потребни параметри."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Грешка: Није могуће вратити резервну копију јер је резервна копија базе "
"података велика. Покушајте да повећате максималну дозвољену величину у "
"подешавањима."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Изаберите резервну(е) копију(е) за брисање!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Да ли стварно желите да уклоните изабране резервне копије?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Израда резервне копије, сачекајте"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Враћање је у току, сачекајте"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Ништа није изабрано за резервну копију."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "ВП Филе Манагер - Израда резервних копија / враћање"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Резервне опције:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Резервна копија базе података"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Резервне копије датотека"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Додаци"

#: inc/backup.php:71
msgid "Themes"
msgstr "Теме"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Отпремања"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr ""
"Остало (Било који други директоријум који се налази унутар вп-садржаја)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Направите резервну копију одмах"

#: inc/backup.php:89
msgid "Time now"
msgstr "Тренутно"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "УСПЕХ"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Резервна копија је успешно избрисана."

#: inc/backup.php:102
msgid "Ok"
msgstr "У реду"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "БРИСАЊЕ ДАТОТЕКА"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Да ли сте сигурни да желите да избришете ову резервну копију?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Поништити, отказати"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Потврди"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ВРАЋИ ДАТОТЕКЕ"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Да ли сте сигурни да желите да вратите ову резервну копију?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Последња порука дневника"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Резервна копија је очигледно успела и сада је завршена."

#: inc/backup.php:171
msgid "No log message"
msgstr "Нема поруке дневника"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Постојеће резервне копије"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Датум резервне копије"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Резервне копије података (кликните за преузимање)"

#: inc/backup.php:190
msgid "Action"
msgstr "поступак"

#: inc/backup.php:210
msgid "Today"
msgstr "Данас"

#: inc/backup.php:239
msgid "Restore"
msgstr "Врати"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Избриши"

#: inc/backup.php:241
msgid "View Log"
msgstr "Погледај Дневник догађаја"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Тренутно није пронађена ниједна резервна копија."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Радње по изабраним сигурносним копијама"

#: inc/backup.php:251
msgid "Select All"
msgstr "Изабери све"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Поништи избор"

#: inc/backup.php:254
msgid "Note:"
msgstr "Белешка:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Датотеке за резервне копије ће бити испод"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Допринос ВП менаџера датотека"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Напомена: Ово су демо снимци екрана. Молимо купите Филе Манагер про за "
"функције Логс."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Кликните да бисте купили ПРО"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Купи ПРО"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Уреди евиденције датотека"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Преузмите евиденције датотека"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Отпреми евиденције датотека"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Подешавања су сачувана."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Одбаци ово обавештење."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Нисте унели никакве промене да бисте их сачували."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Јавни коренски пут"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Корен пут управитеља датотека, можете променити према свом избору."

#: inc/root.php:59
msgid "Default:"
msgstr "Уобичајено:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Молимо вас пажљиво промените ово, погрешна путања може довести до пада "
"додатка за управљање датотекама."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Омогућити отпад?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Након омогућавања отпада, датотеке ће ићи у директоријум за отпатке."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Омогућити отпремање датотека у библиотеку медија?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Након што ово омогућите, све датотеке ће ићи у библиотеку медија."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Максимална дозвољена величина у време враћања резервне копије базе података."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Повећајте вредност поља ако добијате поруку о грешци у време враћања "
"резервне копије."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Сачувај промене"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Подешавања - Опште"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Напомена: Ово је само демо снимак екрана. Да бисте добили подешавања, купите "
"нашу про верзију."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Овде администратор може дати приступ корисничким улогама за коришћење "
"управитеља датотека. Администратор може поставити подразумевану приступну "
"мапу и такође контролисати величину отпремања управитеља датотека."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Подешавања - Уређивач кода"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Менаџер датотека има уређивач кода са више тема. За уређивач кода можете "
"одабрати било коју тему. Приказаће се када уредите било коју датотеку. "
"Такође можете да дозволите режим целог екрана уређивача кода."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Приказ уређивача кода"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Подешавања - Ограничења корисника"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Администратор може ограничити радње било ког корисника. Такође сакријте "
"датотеке и фасцикле и можете поставити различите путање фолдера за различите "
"кориснике."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Подешавања - Ограничења улога корисника"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Администратор може ограничити радње било које корисничке улоге. Такође "
"сакријте датотеке и фасцикле и можете поставити различите путање фолдера за "
"различите улоге корисника."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Менаџер датотека – кратки код"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "УПОТРЕБА:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"На предњем крају ће се приказати менаџер датотека. Можете да контролишете "
"сва подешавања из подешавања менаџера датотека. Радиће исто као и бацкенд ВП "
"Филе Манагер."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"На предњем крају ће се приказати менаџер датотека. Али само администратор "
"може да му приступи и контролише из подешавања менаџера датотека."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Параметри:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Омогућиће свим улогама приступ менаџеру датотека на предњем крају или можете "
"једноставно користити за одређене корисничке улоге као што је "
"дозвољено_ролес=\"едитор,аутхор\" (одвојено зарезом(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Овде \"тест\" је име фасцикле која се налази у основном директоријуму, или "
"можете дати путању за поддиректоријуме као што је \"вп-цонтент/плугинс\". "
"Ако оставите празно или празно, приступиће свим фасциклама у основном "
"директоријуму. Подразумевано: Основни директоријум"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"за приступ дозволама за писање датотека, напомена: тачно/нетачно, "
"подразумевано: нетачно"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"за дозволу за приступ читању датотека, напомену: тачно/нетачно, "
"подразумевано: тачно"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"сакриће се овде поменуто. Напомена: одвојено зарезом (,). Подразумевано: Нулл"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Закључаће се поменуто у зарезима. можете закључати више као \".пхп,.цсс,.јс"
"\" итд. Подразумевано: Нулл"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* за све операције и да бисте дозволили неке операције можете навести назив "
"операције као, дозвољено_операције=\"уплоад,довнлоад\". Напомена: одвојено "
"зарезом (,). Уобичајено: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Листа операција датотека:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Направите директоријум или директоријум"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Направи датотеку"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Преименујте датотеку или фасциклу"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Дупликат или клонирање фасцикле или датотеке"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Налепите датотеку или фасциклу"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "забранити"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Да направите архиву или зип"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Издвојите архиву или архивирану датотеку"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Копирајте датотеке или фасцикле"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Једноставно исеците датотеку или фасциклу"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Измените датотеку"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Уклоните или избришите датотеке и фасцикле"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Преузми датотеке"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Додај фајлове"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Претражите ствари"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Информације о датотеци"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Помоћ"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Забранит ће одређеним корисницима само стављајући њихове ИД-ове "
"раздвојене зарезима (,). Ако је корисник Бан, тада неће моћи да приступи вп "
"менаџеру датотека на предњој страни."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Приказ корисничког интерфејса Филеманагер-а. Подразумевано: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Филе Модифиед или Цреате дате формат. Подразумевано: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Језик менаџера датотека. Подразумевано: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Тема Менаџера датотека. Подразумевано: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Менаџер датотека - Својства система"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "ПХП верзија"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Максимална величина отпремања датотеке (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Објави максималну величину отпремања датотеке (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Ограничење меморије(memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Временско ограничење (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Прегледник и ОС (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Промените тему овде:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Уобичајено"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Мрачно"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Светлост"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Греи"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Добродошли у Филе Манагер"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Волимо да склапамо нове пријатеље! Претплатите се испод и ми то обећавамо\n"
"    будите у току са нашим најновијим новим додацима, исправкама,\n"
"    сјајне понуде и неколико специјалних понуда."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Унесите име."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Унесите презиме."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Унесите адресу е-поште."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Проверити"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Не хвала"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Услови коришћења"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Правила о приватности"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Уштеда..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "У реду"

#~ msgid "Backup not found!"
#~ msgstr "Резервна копија није пронађена!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Резервна копија је успешно уклоњена!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ништа није изабрано за резервну копију</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Безбедносно питање.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Израђена је сигурносна копија базе "
#~ "података.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Није могуће направити сигурносну копију "
#~ "базе података.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Израђена је резервна копија додатака.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Резервна копија додатака није успела.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Израђена је сигурносна копија тема.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Резервна копија тема није успела.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Отпремање резервне копије је завршено."
#~ "</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Резервна копија отпремања није успела.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">За остале је направљена резервна "
#~ "копија.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Резервна копија није успела.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Завршено</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Слика"

#~ msgid "of"
#~ msgstr "од"

#~ msgid "Close"
#~ msgstr "Близу"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Ова функција захтева уграђене оквире. Имате онемогућене ифраме-ове или их "
#~ "прегледач не подржава."

#~ msgid "Theme Editor"
#~ msgstr "Уређивач тема"

#~ msgid "Plugin Editor"
#~ msgstr "Уређивач додатака"

#~ msgid "Access Control"
#~ msgstr "Контрола приступа"

#~ msgid "Notify Me"
#~ msgstr "Обавести ме"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "језик је успешно преузет."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Пребацивање језичке фасцикле није успело."

#~ msgid "Security token expired!"
#~ msgstr "Сигурносни токен је истекао!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "језик је успешно преузет."

#~ msgid "Currently language "
#~ msgstr "Тренутно језик "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " није доступно. Кликните на везу за језик захтева."

#~ msgid ""
#~ "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr "Немате довољно дозвола за уређивање додатака за ову веб локацију."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "На овој веб локацији нису инсталирани додаци."

#~ msgid "There are no themes installed on this site."
#~ msgstr "На овој веб локацији нису инсталиране теме."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\"> Унесите име директоријума! !</p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Унесите име датотеке!</p>"

#~ msgid "Open"
#~ msgstr "Отвори"

#~ msgid "Preview"
#~ msgstr "Преглед"

#~ msgid "Edit"
#~ msgstr "Уредити"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Да ли сте сигурни да желите да прекинете отпремање датотеке?"

#~ msgid "File renamed successfully."
#~ msgstr "Датотека је успешно преименована."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Да ли сте сигурни да желите да избришете фасциклу?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Мапа је успешно избрисана."

#~ msgid "File deleted successfully."
#~ msgstr "Датотека је успешно избрисана."

#~ msgid "Folder renamed successfully."
#~ msgstr "Мапа је успешно преименована."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Није дозвољено више од 30 знакова.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Неважећи Упит!"

#~ msgid "No change in file!"
#~ msgstr "Нема промене у датотеци!"

#~ msgid "File saved successfully!"
#~ msgstr "Датотека је успешно сачувана!"

#~ msgid "File not saved!"
#~ msgstr "Датотека није сачувана!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Није могуће верификовати сигурносни токен!"

#~ msgid "Folder created successfully!"
#~ msgstr "Мапа је успешно креирана!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Вордпресс не сме да отпрема овај формат фасцикле!"

#~ msgid "Folder already exists!"
#~ msgstr "Мапа већ постоји!"

#~ msgid "File created successfully!"
#~ msgstr "Датотека је успешно креирана!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Ову екстензију датотеке није дозвољено креирати!"

#~ msgid "File already exists!"
#~ msgstr "Датотека већ постоји!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Унесите важећу екстензију датотеке!"

#~ msgid "Folder does not exists!"
#~ msgstr "Мапа не постоји!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Мапа је успешно избрисана!"

#~ msgid "File deleted successfully!"
#~ msgstr "Датотека је успешно избрисана!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr ""
#~ "Учитавање ове екстензије датотеке није дозвољено помоћу вордпресс-а!"

#~ msgid " already exists"
#~ msgstr " Већ постоји"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Датотека је успешно отпремљена: Путања отпремљене датотеке је "

#~ msgid "No file selected"
#~ msgstr "Није изабрана ниједна датотека"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Није могуће преименовати датотеку! Покушајте поново."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Мапа је успешно преименована!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Унесите тачно име фасцикле"

#~ msgid "How can we help?"
#~ msgstr "Како можемо помоћи?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "Ресурси за учење, стручна подршка и стручна помоћ."

#~ msgid "Documentation"
#~ msgstr "Документација"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Брзо пронађите одговоре из наше свеобухватне документације."

#~ msgid "Learn More"
#~ msgstr "Брзо пронађите одговоре из наше свеобухватне документације."

#~ msgid "Contact Us"
#~ msgstr "Контактирајте нас"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr "Пошаљите карту за подршку за одговоре на питања која имате."

#~ msgid "Request a Feature"
#~ msgstr "Затражите функцију"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "Реците нам шта желите и додаћете то на наш путоказ."

#~ msgid "Tell us what you think!"
#~ msgstr "Реците нам шта мислите!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Оцените и дајте нам рецензију на Вордпресс-у!"

#~ msgid "Leave a Review"
#~ msgstr "Оставите преглед"

#~ msgid "Update"
#~ msgstr "ажурирање"

#~ msgid "Click here to install/update "
#~ msgstr "Кликните овде да бисте инсталирали / ажурирали "

#~ msgid " language translation for Theme Editor."
#~ msgstr " превод језика за уређивач тема."

#~ msgid "Installed"
#~ msgstr "Инсталирано"

#~ msgid "English is the default language of Theme Editor. "
#~ msgstr "Енглески је задати језик уређивача тема. "

#~ msgid "Request "
#~ msgstr "Захтев "

#~ msgid "Click here to request"
#~ msgstr "Кликните овде да бисте затражили"

#~ msgid "language translation for Theme Editor"
#~ msgstr "превод језика за уређивач тема"

#~ msgid "Theme Editor Language:"
#~ msgstr "Језик уређивача теме:"

#~ msgid " language"
#~ msgstr "Језик"

#~ msgid "Available languages"
#~ msgstr "Доступни језици"

#~ msgid "Click here to download all available languages."
#~ msgstr "Кликните овде да бисте преузели све доступне језике."

#~ msgid "Request a language"
#~ msgstr "Затражите језик"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Реците нам који језик желите да додате."

#~ msgid "Contact us"
#~ msgstr "Контактирајте нас"

#~ msgid "Notifications"
#~ msgstr "Notifications"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature."
#~ "</strong>"
#~ msgstr ""
#~ "<стронг> Напомена: Ово је само снимак екрана. Купите ПРО верзију за ову "
#~ "функцију. </стронг>"

#~ msgid "Permissions"
#~ msgstr "Дозволе"

#~ msgid "Edit Plugin"
#~ msgstr "Едит Плугин"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Овај додатак је тренутно активиран!</strong> Упозорење: Не "
#~ "препоручује се уношење промена у активне додатке. Ако ваше промене "
#~ "изазову фаталну грешку, додатак ће се аутоматски деактивирати."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Уређивање <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (активан)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Прегледавање <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (неактиван)"

#~ msgid "Update File"
#~ msgstr "Ажурирај датотеку"

#~ msgid "Download Plugin"
#~ msgstr "Преузми додатак"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "Морате направити ову датотеку за писање да бисте могли да сачувате "
#~ "промене. Погледајте<a href=\"https://wordpress.org/support/article/"
#~ "changing-file-permissions/\" target=\"_blank\">Цодек</a> за више "
#~ "информација."

#~ msgid "Select plugin to edit:"
#~ msgstr "Изаберите додатак за уређивање:"

#~ msgid "Create Folder and File"
#~ msgstr "Направите мапу и датотеку"

#~ msgid "Create"
#~ msgstr "Креирај"

#~ msgid "Remove Folder and File"
#~ msgstr "Уклоните мапу и датотеку"

#~ msgid "Remove "
#~ msgstr "Уклоните"

#~ msgid "To"
#~ msgstr "До"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Опционално: поддиректоријум"

#~ msgid "Choose File "
#~ msgstr "Одаберите датотеку"

#~ msgid "No file Chosen "
#~ msgstr "Фајл није одабран"

#~ msgid "Create a New Folder: "
#~ msgstr "Креирате нову фасциклу:"

#~ msgid "New folder will be created in: "
#~ msgstr "Нова мапа ће бити креирана у:"

#~ msgid "New Folder Name: "
#~ msgstr "Име нове мапе:"

#~ msgid "Create New Folder"
#~ msgstr "Направите нову мапу "

#~ msgid "Create a New File: "
#~ msgstr "Направите нову датотеку:"

#~ msgid "New File will be created in: "
#~ msgstr "Нова датотека ће бити креирана у:"

#~ msgid "New File Name: "
#~ msgstr "Ново име датотеке:"

#~ msgid "Create New File"
#~ msgstr "Направите нову датотеку"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr "Упозорење: будите опрезни пре уклањања било које мапе или датотеке."

#~ msgid "Current Theme Path: "
#~ msgstr "Тренутна тематска путања:"

#~ msgid "Remove Folder: "
#~ msgstr "Уклони директоријум:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Путања до мапе коју желите уклонити: "

#~ msgid "Remove Folder"
#~ msgstr "Уклони директоријум"

#~ msgid "Remove File: "
#~ msgstr "Назив мапе који желите да уклоните:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Путања до датотеке коју желите уклонити: "

#~ msgid "Remove File"
#~ msgstr "Назив мапе који желите да уклоните"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Унесите важећу адресу е-поште."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr ""
#~ "Упозорење: Будите опрезни пре него што преименујете било коју фасциклу "
#~ "или датотеку."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Датотека / мапа ће се преименовати у:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Преименовање датотеке / мапе:"

#~ msgid "Rename File"
#~ msgstr "Преименовати датотеку"

#~ msgid "Follow us"
#~ msgstr "Пратите нас"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Уређивач тема Фацебоок"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Уређивач тема Инстаграм"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Уређивач тема Твиттер"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Уређивач тема Линкедин"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Уређивач тема Иоутубе"

#~ msgid "Logo"
#~ msgstr "Лого"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Идите на веб локацију ТхемеЕдитор"

#~ msgid "Theme Editor Links"
#~ msgstr "Везе до уређивача тема"

#~ msgid "Child Theme"
#~ msgstr "Дечија тема"

#~ msgid "Child Theme Permissions"
#~ msgstr "Дозволе за подређену тему"

#~ msgid " is not available. Please click "
#~ msgstr " није доступан. кликните "

#~ msgid "here"
#~ msgstr "овде"

#~ msgid "to request language."
#~ msgstr "тражити језик."

#~ msgid "Click"
#~ msgstr "Кликните"

#~ msgid "to install "
#~ msgstr "за инсталацију"

#~ msgid " language translation  for Theme Editor."
#~ msgstr " превод језика за уређивач тема."

#~ msgid "Success: Settings Saved!"
#~ msgstr "Успех: Подешавања сачувана!"

#~ msgid "No changes have been made to save."
#~ msgstr "Нису направљене промене ради уштеде."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Омогући уређивач тема за теме"

#~ msgid "Yes"
#~ msgstr "да"

#~ msgid "No"
#~ msgstr "Не"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ово ће омогућити / онемогућити уређивач тема.<br/><strong class=\"defs"
#~ "\">Подразумевано: </strong>Да"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Онемогућити подразумевани уређивач ВордПресс тема?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ово ће бити омогућити / онемогућити подразумевани уређивач тема.<br/"
#~ "><strong class=\"defs\">Подразумевано: </strong>Да"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Омогући уређивач додатака за додатак"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ово ће омогућити / онемогућити уређивач додатака.<br/><strong class=\"defs"
#~ "\">Подразумевано: </strong>Да"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Онемогућити подразумевани уређивач додатака за ВордПресс?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class="
#~ "\"defs\">Default: </strong>Yes"
#~ msgstr ""
#~ "Ово ће омогућити / онемогућити подразумевани уређивач додатака.<br/"
#~ "><strong class=\"defs\">Подразумевано: </strong>Да"

#~ msgid "Code Editor"
#~ msgstr "Уређивач кода"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Омогућава вам одабир теме за уређивач тема.<br/><strong class=\"defs"
#~ "\">Подразумевано: </strong>Да"

#~ msgid "Edit Themes"
#~ msgstr "Уреди теме"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making "
#~ "changes to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Ова тема је тренутно активирана! </strong> Упозорење: Не "
#~ "препоручује се уношење промена у активне теме."

#~ msgid "Editing"
#~ msgstr "Уређивање"

#~ msgid "Browsing"
#~ msgstr "Прегледавање"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Ажурирајте датотеку и покушајте да је поново активирате"

#~ msgid "Download Theme"
#~ msgstr "Преузми тему"

#~ msgid "Select theme to edit:"
#~ msgstr "Изаберите тему за уређивање:"

#~ msgid "Theme Files"
#~ msgstr "Тематски фајлови"

#~ msgid "Choose File"
#~ msgstr "Одаберите датотеку"

#~ msgid "No File Chosen"
#~ msgstr "Фајл није одабран"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr ""
#~ "Упозорење: Будите пажљиви пре него што уклоните било коју фасциклу или "
#~ "датотеку."

#~ msgid "Child Theme Permission"
#~ msgstr "Дозвола за тему детета"

#~ msgid "Translations"
#~ msgstr "Преводи"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr ""
#~ "креирање, уређивање, отпремање, преузимање, брисање датотека са "
#~ "датотекама и директоријума"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "Немате дозволу за креирање нове подређене теме."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr "Немате дозволу за промену конфигурације постојеће подређене теме."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "Немате дозволу да копирате подређену тему."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "Немате дозволу за приступ менију за упит / селектор."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "Немате дозволу за приступ веб фонтовима и ЦСС менију."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "Немате дозволу за копирање датотека."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "Немате дозволу за брисање подређених датотека."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "Немате дозволу за отпремање новог снимка екрана."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "Немате дозволу за отпремање нових слика."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "Немате дозволу за брисање слика."

#~ msgid "You do not have the permission to download file."
#~ msgstr "Немате дозволу за преузимање датотеке."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "Немате дозволу за стварање новог директоријума."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "Немате дозволу за креирање нове датотеке."

#~ msgid "You don't have permission to update file!"
#~ msgstr "Немате дозволу за ажурирање датотеке!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "Немате дозволу за стварање директоријума!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "Немате дозволу за брисање директоријума!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "Немате дозволу за брисање датотеке!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "Немате дозволу за отпремање датотеке!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Дозволе за подређену тему су успешно сачуване."

#~ msgid ""
#~ "There are no changes made in the child theme permissions to be saved."
#~ msgstr "Нема промена у дозволама подређене теме које треба сачувати."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Порука дозволе за подређену тему је успешно сачувана."

#~ msgid "Users"
#~ msgstr "Корисници"

#~ msgid "Create New Child Theme"
#~ msgstr "Направите нову тему за дете"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Конфигуришите постојеће дечје теме"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Дупликат дечијих тема"

#~ msgid "Query/ Selector"
#~ msgstr "Упит / Селектор"

#~ msgid "Web/font"
#~ msgstr "Веб / фонт"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Копирајте родитељску тему датотеке у подређену тему"

#~ msgid "Deleted Child Files"
#~ msgstr "Избрисане датотеке детета"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Отпремите нови снимак екрана"

#~ msgid "Upload New Images"
#~ msgstr "Отпремите нове слике"

#~ msgid "Deleted Images "
#~ msgstr "Избрисане слике"

#~ msgid "Download Images"
#~ msgstr "Довнлоад Имагес"

#~ msgid "Create New Directory"
#~ msgstr "Направите нови директоријум"

#~ msgid "Create New Files"
#~ msgstr "Направите нове датотеке"

#~ msgid "Export Theme"
#~ msgstr "Извоз теме"

#~ msgid "User Roles"
#~ msgstr "Улоге корисника"

#~ msgid "Query/ Seletor"
#~ msgstr "Упит / Селетор"

#~ msgid "Deleted Images"
#~ msgstr "Избрисане слике"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Порука о дозволи за подређену тему"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "Немате дозволу за креирање нове теме за дете."

#~ msgid "Query/Selector"
#~ msgstr "Упит / Селектор"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "Немате дозволу за приступ менију за упит / селектор."

#~ msgid " Web/font"
#~ msgstr "Веб / фонт"

#~ msgid " Export Theme"
#~ msgstr "Извоз теме"

#~ msgid "Save Child Theme Message"
#~ msgstr "Порука о дозволи за подређену тему"

#~ msgid "Please select atleast one image."
#~ msgstr "Изаберите најмање једну слику."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "Немате дозволу за брисање слика."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "Немате дозволу за отпремање нових слика."

#~ msgid "You don't have the permission to download."
#~ msgstr "Немате дозволу за преузимање."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "Немате дозволу за креирање новог директоријума."

#~ msgid "Please choose file type."
#~ msgstr "Изаберите врсту датотеке."

#~ msgid "Please enter file name."
#~ msgstr "Унесите име датотеке."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "Немате дозволу за стварање нове датотеке."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr ""
#~ "Да ли сте сигурни да сте копирали родитељске датотеке у подређену тему?"

#~ msgid "Please select file(s)."
#~ msgstr "Молимо одаберите датотеке."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "Немате дозволу за копирање датотека."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Да ли сте сигурни да желите да избришете изабране датотеке?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "Немате дозволу за брисање подређених датотека."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "Немате дозволу за отпремање новог снимка екрана."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "Немате дозволу за извоз теме."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "Немате дозволу за приступ менију Куери / Селецтор."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "Немате дозволу за приступ менију Веб фонтови и ЦСС."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Тренутна тема анализе:"

#~ msgid "Preview Theme"
#~ msgstr "Преглед теме"

#~ msgid "Parent Themes"
#~ msgstr "Родитељске теме"

#~ msgid "Child Themes"
#~ msgstr "Дечје теме"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Грешка: Поставке нису сачуване!"

#~ msgid "Email List"
#~ msgstr "Имејл листа"

#~ msgid "Email Address"
#~ msgstr "Адреса Е-поште"

#~ msgid "Enter Email"
#~ msgstr "Унесите е-маил"

#~ msgid "Add More"
#~ msgstr "Додај још"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Ова адреса се користи у сврхе обавештавања, попут обавештења о теми / "
#~ "додатку."

#~ msgid "Theme Notification"
#~ msgstr "Обавештење о теми"

#~ msgid "Notify on file update"
#~ msgstr "Обавести о ажурирању датотеке"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Обавештење о уређивању или ажурирању датотеке теме. <br/"
#~ "><strong>Подразумевано: </strong> Да"

#~ msgid "Notify on files download"
#~ msgstr "Обавести о преузимању датотека"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Обавештење о преузимању датотеке за уређивање датотеке. <br/"
#~ "><strong>Подразумевано: </strong>Да"

#~ msgid "Notify on theme download"
#~ msgstr "Обавести о преузимању теме"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Обавештење о преузимању теме.<br/><strong>Подразумевано: </strong>Да"

#~ msgid "Notify on files upload"
#~ msgstr "Обавести о отпремању датотека"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Обавештење о отпремању датотека у теми.<br/><strong>Подразумевано: </"
#~ "strong>Да"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Обавести о стварању нове датотеке / директоријума"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Обавештење о стварању нове датотеке / фасцикле у теми.<br/><strong> "
#~ "Подразумевано: </strong>Да"

#~ msgid "Notify on delete"
#~ msgstr "Обавести о брисању"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Обавести ме о брисању било које датотеке и директоријума у ​​темама.<br/"
#~ "><strong>Подразумевано: </strong> Да"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Обавести о стварању теме Ново дете"

#~ msgid ""
#~ "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Обавештавајте о темама Стварање новог детета. <br/><strong> "
#~ "Подразумевано: </strong>Да"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Обавести ме о конфигурисању постојећих подређених тема"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Обавести ме о конфигурисању постојећих подређених тема. <br/"
#~ "><strong>Подразумевано: </strong>Да"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Обавештавајте о темама Дуплицате Цхилд"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Обавести ме о конфигурисању постојећих подређених тема.<br/"
#~ "><strong>Подразумевано: </strong>Да"

#~ msgid "Plugin Notification"
#~ msgstr "Обавештење о додатку"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </"
#~ "strong>yes"
#~ msgstr ""
#~ "Обавештење о уређивању или ажурирању датотеке теме.<br/"
#~ "><strong>Подразумевано: </strong>да"

#~ msgid "Notify on Plugin download"
#~ msgstr "Обавести о преузимању додатка"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Обавештење о преузимању додатка.<br/><strong>Подразумевано: </strong>Да"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Обавештење о отпремању датотеке у теми.<br/><strong>Подразумевано: </"
#~ "strong>Да"

#~ msgid "Permission saved successfully."
#~ msgstr "Дозвола је успешно сачувана."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr "Упс! Дозвола се не може сачувати јер нисте унели никакве промене."

#~ msgid "Allowed User Roles"
#~ msgstr "Дозвољене улоге корисника"

#~ msgid "Update theme files"
#~ msgstr "Ажурирајте датотеке тема"

#~ msgid "Create new theme files and folders"
#~ msgstr "Направите нове датотеке и фасцикле са темама"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Отпремите нове датотеке и фасцикле тема"

#~ msgid "Download theme files"
#~ msgstr "Преузмите датотеке са темама"

#~ msgid "Download theme"
#~ msgstr "Преузми тему"

#~ msgid "Update plugin files"
#~ msgstr "Ажурирајте датотеке додатака"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Креирајте нове датотеке и директоријуме додатака"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Отпремите нове датотеке и директоријуме додатака"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Избришите датотеке и директоријуме додатака"

#~ msgid "Download plugin files"
#~ msgstr "Преузмите датотеке додатака"

#~ msgid "Download plugin"
#~ msgstr "Преузми додатак"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence "
#~ "Key\">Buy Now</a>"
#~ msgstr ""
#~ "Уређивач тема ПРО - Молимо додајте детаље поруџбине у наставку. Ако не <a "
#~ "href=\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" "
#~ "class=\"page-title-action button button-primary\" title=\"click to buy "
#~ "Licence Key\">Купи одмах </а>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "ИД ПОРУЏБИНЕ (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Унесите ИД налога"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Молимо проверите вашу е-пошту за ИД наруџбе."

#~ msgid "LICENCE KEY *"
#~ msgstr "КЉУЧ ЛИЦЕНЦЕ *"

#~ msgid "Enter License Key"
#~ msgstr "Унесите кључ лиценце"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Молимо провјерите своју е-пошту за кључ лиценце."

#~ msgid "Click To Verify"
#~ msgstr "Кликните да бисте потврдили"

#~ msgid "URL/None"
#~ msgstr "УРЛ / Ноне"

#~ msgid "Origin"
#~ msgstr "Порекло"

#~ msgid "Color 1"
#~ msgstr "Боја 1"

#~ msgid "Color 2"
#~ msgstr "Боја 2"

#~ msgid "Width/None"
#~ msgstr "Ширина / Нема"

#~ msgid "Style"
#~ msgstr "Style"

#~ msgid "Color"
#~ msgstr "Боја"

#~ msgid "Configure Child Theme"
#~ msgstr "Конфигуришите тему детета"

#~ msgid "Duplicate Child theme"
#~ msgstr "Дупликат дечијих тема"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your "
#~ "Child Theme."
#~ msgstr ""
#~ "Након анализе, ова тема добро функционише. Ово можете користити као своју "
#~ "тему за дете."

#~ msgid ""
#~ "After analyzing this child theme appears to be functioning correctly."
#~ msgstr "Након анализе ове подређене теме изгледа да исправно функционише."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Ова тема учитава додатне табеле стилова након датотеке <цоде> стиле.цсс </"
#~ "цоде>:"

#~ msgid "The theme"
#~ msgstr "Назив теме"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr "није могуће анализирати јер се преглед није правилно приказао"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Ова подређена тема није конфигурисана за овај додатак"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please "
#~ "consider using the DUPLICATE child theme option (see step 1, above) and "
#~ "keeping the original as a backup."
#~ msgstr ""
#~ "Конфигуратор врши значајне модификације подређене теме, укључујући "
#~ "промене у табелама стилова и додатне пхп функције. Молимо размотрите "
#~ "могућност коришћења ДУПЛИЦАТЕ подређене теме (погледајте корак 1, горе) и "
#~ "задржавање оригинала као резервне копије."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "Све информације о веб фонтовима / цсс-у су успешно сачуване."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Унесите вредност за фонтове / цсс."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "Немате дозволу за ажурирање веб фонтова / цсс-а."

#~ msgid "All information saved successfully."
#~ msgstr "Све информације су успешно сачуване."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done "
#~ "in the Configurator."
#~ msgstr ""
#~ "Да ли сте сигурни да желите РЕСЕТИРАТИ? Ово ће уништити сваки посао који "
#~ "сте урадили у конфигуратору."

#~ msgid "Selectors"
#~ msgstr "Селектори"

#~ msgid "Edit Selector"
#~ msgstr "Уреди селектор"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "Табела стилова се не може приказати."

#~ msgid "(Child Only)"
#~ msgstr "(Само за децу)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Унесите важећу тему за децу."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Унесите важећи назив теме за децу."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> постоји. Унесите другу тему за дете"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "Није могуће правилно учитати страницу."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr "Сукобне или застареле јКуери библиотеке учитао је други додатак:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr "Деактивирање или замена додатака могу решити овај проблем."

#~ msgid "No result found for the selection."
#~ msgstr "Није пронађен ниједан резултат за избор."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "%sЗашто то видим?%s"

#~ msgid "Parent / Child"
#~ msgstr "Родитељ / дете"

#~ msgid "Select an action:"
#~ msgstr "Изаберите радњу:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Направите нову тему за дете"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Конфигуришите постојећу тему детета"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Дупликат постојеће Дечје теме"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Изаберите родитељску тему:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Анализирајте тему родитеља"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other "
#~ "potential issues."
#~ msgstr ""
#~ "Кликните на „Анализирај“ да бисте утврдили зависности табеле стилова и "
#~ "друге потенцијалне проблеме."

#~ msgid "Analyze"
#~ msgstr "Анализирајте"

#~ msgid "Select a Child Theme:"
#~ msgstr "Изаберите тему за дете:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Анализирајте тему детета"

#~ msgid "Name the new theme directory:"
#~ msgstr "Именујте нови директоријум тема:"

#~ msgid "Directory Name"
#~ msgstr "Име директорија"

#~ msgid "NOTE:"
#~ msgstr "БЕЛЕШКА:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Ово НИЈЕ назив Дечје теме. Име, опис итд. Можете прилагодити у кораку 7, "
#~ "доле."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Потврдите именик подређених тема:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing "
#~ "Child Theme)."
#~ msgstr ""
#~ "Само за верификацију (не можете да измените директоријум постојеће "
#~ "подређене теме)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Изаберите где ћете сачувати нове стилове:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Примарни листови стилова (стиле.цсс)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Спремите нове прилагођене стилове директно у примарни табелу подређених "
#~ "тема, замењујући постојеће вредности. Примарни табела стилова учитаће се "
#~ "редоследом који је поставила тема."

#~ msgid "Separate Stylesheet"
#~ msgstr "Одвојени табеларни приказ"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option "
#~ "if you want to preserve the existing child theme styles instead of "
#~ "overwriting them. This option also allows you to customize stylesheets "
#~ "that load after the primary stylesheet."
#~ msgstr ""
#~ "Сачувајте нове прилагођене стилове у засебну табелу стилова и комбинујте "
#~ "све постојеће подређене стилове теме са родитељем да бисте формирали "
#~ "основну линију. Изаберите ову опцију ако желите да сачувате постојеће "
#~ "подређене стилове тема уместо да их преписујете. Ова опција такође вам "
#~ "омогућава да прилагодите табеле стилова које се учитавају након примарног "
#~ "листа стилова."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Изаберите руковање табелом с родитељским темама:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Користите ред за ВордПресс стил."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies "
#~ "and update the functions file automatically."
#~ msgstr ""
#~ "Нека Цонфигуратор утврди одговарајуће акције и зависности и аутоматски "
#~ "ажурира датотеку функција."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "Употребите <code> @импорт </code> у табели подређених тема теме."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Ову опцију користите само ако се надређени табела стилова не може учитати "
#~ "помоћу реда за ВордПресс стил. Коришћење <code> @импорт </code> се не "
#~ "препоручује."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Не додавајте никакве матичне табеле стилова."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not "
#~ "used for its appearance."
#~ msgstr ""
#~ "Изаберите ову опцију ако ова тема већ обрађује табелу стилова надређене "
#~ "теме или ако се датотека <code> стиле.цсс </code> надређене теме не "
#~ "користи за њен изглед."

#~ msgid "Advanced handling options"
#~ msgstr "Напредне могућности руковања"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Игноришите табеле стилова надређених тема."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Изаберите ову опцију ако ова тема већ обрађује табелу стилова надређене "
#~ "теме или ако се датотека стиле.цсс надређене теме не користи за њен "
#~ "изглед."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Поправите предложак заглавља у подређеној теми."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Нека Цонфигуратор (покуша да) реши све горе наведене проблеме са табелом "
#~ "стилова. Ово може решити многе, али не све уобичајене проблеме."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Уклоните зависности табеле стилова"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Подразумевано се редослед табела стилова који се учитавају пре примарног "
#~ "листа стилова чува третирајући их као зависности. У неким случајевима се "
#~ "у прегледу открију табеле стилова које се не користе на целој локацији. "
#~ "Ако је потребно, зависност се може уклонити за одређене табеле стилова у "
#~ "наставку."

#~ msgid "Child Theme Name"
#~ msgstr "Име теме детета"

#~ msgid "Theme Name"
#~ msgstr "Назив теме"

#~ msgid "Theme Website"
#~ msgstr "Тхеме Вебсите"

#~ msgid "Author"
#~ msgstr "Аутор"

#~ msgid "Author Website"
#~ msgstr "Веб локација аутора"

#~ msgid "Theme Description"
#~ msgstr "Опис теме"

#~ msgid "Description"
#~ msgstr "Опис"

#~ msgid "Tags"
#~ msgstr "Ознаке"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme "
#~ "to the Child Theme:"
#~ msgstr ""
#~ "Копирајте меније, виџете и друга подешавања прилагођавача из родитељске "
#~ "теме у подређену тему:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only "
#~ "need to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Ова опција замењује постојеће меније, виџете и друга подешавања "
#~ "прилагођавача подређене теме онима из родитељске теме. Ову опцију треба "
#~ "да користите само први пут када конфигуришете подређену тему."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Кликните да бисте покренули конфигуратор:"

#~ msgid "Query / Selector"
#~ msgstr "Упит / Селектор"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "Да бисте пронашли одређене селекторе унутар блокова упита @media, прво "
#~ "одаберите упит, а затим селектор. Помоћу упита „основни“ уредите све "
#~ "остале бираче."

#~ msgid "@media Query"
#~ msgstr "@media Куери"

#~ msgid "( or \"base\" )"
#~ msgstr "(или \"база\")"

#~ msgid "Selector"
#~ msgstr "Селектор"

#~ msgid "Query/Selector Action"
#~ msgstr "Акција упита / селектора"

#~ msgid "Save Child Values"
#~ msgstr "Сачувај вредности детета"

#~ msgid "Delete Child Values"
#~ msgstr "Избриши подређене вредности"

#~ msgid "Property"
#~ msgstr "Имовина"

#~ msgid "Baseline Value"
#~ msgstr "Основна вредност"

#~ msgid "Child Value"
#~ msgstr "Цхилд Валуе"

#~ msgid "error"
#~ msgstr "грешка"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "Немате дозволу за конфигурисање подређених тема."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s не постоји. Изаберите важећу родитељску тему."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Датотека Функције је обавезна и не може се избрисати."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Изаберите важећу родитељску тему."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Изаберите важећу тему за дете."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Унесите важеће име директорија подређене теме."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> постоји. Унесите друго име предлошка подређене теме."

#~ msgid "Your theme directories are not writable."
#~ msgstr "У ваше директоријуме тема не може се писати."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Није могуће надоградити подређену тему"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "У вашу табелу стилова није могуће писати."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end "
#~ "of the file is discouraged as it can cause premature HTTP headers. Please "
#~ "edit <code>functions.php</code> to remove the final <code>?&gt;</code> "
#~ "tag and click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "Затворена ПХП ознака је откривена у датотеци функција теме детета, па "
#~ "опција „Руковање родитељским табелама“ није конфигурисана. Не препоручује "
#~ "се затварање ПХП-а на крају датотеке јер може проузроковати преурањена "
#~ "ХТТП заглавља. Измените <code> фунцтионс.пхп </code> да бисте уклонили "
#~ "коначну ознаку <code>?&gt;</code> и поново кликните на „Генериши / обнови "
#~ "датотеке подређених тема“."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Није могуће копирати датотеку: %s"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Није могуће избрисати %s  датотеку."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "нисам могао копирати %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "неважећи директоријум: %s"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Дошло је до грешака приликом ресетовања дозвола."

#~ msgid "Could not upload file."
#~ msgstr "Отпремање датотеке није успело."

#~ msgid "Invalid theme root directory."
#~ msgstr "Неважећи основни директоријум теме."

#~ msgid "No writable temp directory."
#~ msgstr "Нема привременог директорија за писање."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Распакивање није успело -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Паковање није успело -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Премашен је максималан број стилова."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Грешка при премештању датотеке: %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Није могуће поставити дозволе за писање."

#~ msgid "Error:"
#~ msgstr "Грешка:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr "Тренутна анализа подређене теме <strong>%s</strong>  је ресетована."

#~ msgid "Update Key saved successfully."
#~ msgstr "Кључ за ажурирање је успешно сачуван."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Датотеке подређених тема су успешно измењене."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Подређена тема <strong>%s</strong> је успешно генерисана."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Веб фонтови и ЦСС"

#~ msgid "Parent Styles"
#~ msgstr "Родитељски стилови"

#~ msgid "Child Styles"
#~ msgstr "Цхилд Стилес"

#~ msgid "View Child Images"
#~ msgstr "Погледајте слике детета"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Користите <code> @import url( [path] );</code> за повезивање додатних "
#~ "табела стилова. Овај додатак користи кључну реч <code> @импорт </code> да "
#~ "би их идентификовао и претворио у ознаке <code>&lt;link&gt;</code>. "
#~ "<strong> Пример: </strong>"

#~ msgid "Save"
#~ msgstr "сачувати"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr "Отпремање слике са истим именом замениће се постојећом."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Upload New Child Theme Image"

#~ msgid "Delete Selected Images"
#~ msgstr "Избриши одабране слике"

#~ msgid "Create a New Directory"
#~ msgstr "Направите нови директоријум"

#~ msgid "New Directory will be created in"
#~ msgstr "Нови директоријум ће бити креиран у"

#~ msgid "New Directory Name"
#~ msgstr "Ново име директорија"

#~ msgid "Create a New File"
#~ msgstr "Направите нову датотеку"

#~ msgid "New File will be created in"
#~ msgstr "Нова датотека ће бити креирана у"

#~ msgid "New File Name"
#~ msgstr "Ново име датотеке"

#~ msgid "File Type Extension"
#~ msgstr "Екстензија типа датотеке"

#~ msgid "Choose File Type"
#~ msgstr "Изаберите Тип датотеке"

#~ msgid "PHP File"
#~ msgstr "ПХП датотека"

#~ msgid "CSS File"
#~ msgstr "ЦСС датотека"

#~ msgid "JS File"
#~ msgstr "ЈС датотека"

#~ msgid "Text File"
#~ msgstr "Текстуална датотека"

#~ msgid "PHP File Type"
#~ msgstr "Тип датотеке ПХП"

#~ msgid "Simple PHP File"
#~ msgstr "Једноставна ПХП датотека"

#~ msgid "Wordpress Template File"
#~ msgstr "Вордпресс шаблон датотека"

#~ msgid "Template Name"
#~ msgstr "Назив предлошка"

#~ msgid "Parent Templates"
#~ msgstr "Надређени предлошци"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP "
#~ "functions or classes. Other PHP files cannot be safely overridden by a "
#~ "child theme."
#~ msgstr ""
#~ "Копирајте ПХП предлошке из надређене теме тако што ћете их овде одабрати. "
#~ "Конфигуратор дефинише предложак као Тематску ПХП датотеку која нема ПХП "
#~ "функције или класе. Подређена тема не може сигурно надјачати друге ПХП "
#~ "датотеке."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the "
#~ "file will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "ОПРЕЗ: Ако је ваша подређена тема активна, верзија подређене датотеке ће "
#~ "се користити уместо надређене одмах након копирања."

#~ msgid "The "
#~ msgstr "Тхе"

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr "датотека се генерише одвојено и овде се не може копирати."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Копирај одабрано у тему детета"

#~ msgid " Child Theme Files "
#~ msgstr "Дијете тематских датотека"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Кликните да бисте уредили датотеке помоћу уређивача тема"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Избришите шаблоне подређених тема тако што ћете их овде одабрати."

#~ msgid "Delete Selected"
#~ msgstr "Избриши изабрано"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Снимак екрана теме детета"

#~ msgid "Upload New Screenshot"
#~ msgstr "Отпремите нови снимак екрана"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Снимак екрана теме треба да буде у омјеру 4: 3 (нпр. 880пк к 660пк) ЈПГ, "
#~ "ПНГ или ГИФ. Биће преименовано"

#~ msgid "Screenshot"
#~ msgstr "Снимак екрана"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Отпремите нову тему теме детета"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and "
#~ "are meant for stylesheet use only. Use the Media Library for content "
#~ "images."
#~ msgstr ""
#~ "Тематске слике налазе се у директоријуму слика у вашој подређеној теми и "
#~ "намењене су само употреби табеле стилова. Медијску библиотеку користите "
#~ "за слике садржаја."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Преглед тренутне подређене теме (тренутна анализа)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Преглед тренутне теме детета"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Извези подређену тему у Зип архиву"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child "
#~ "theme. You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Кликните на „Извези зип“ да бисте сачували резервну копију тренутно "
#~ "учитане подређене теме. Можете извести било коју од својих тема са "
#~ "картице Родитељ / дете."

#~ msgid "Export Child Theme"
#~ msgstr "Извоз дечје теме"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Датотеке подређених тема су успешно копиране!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr ""
#~ "Датотека коју покушавате да копирате из Надређених шаблона не постоји"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Датотека коју покушавате да копирате из Надређених шаблона већ је "
#~ "присутна у датотекама подређених тема."

#~ msgid "Child "
#~ msgstr "Дете"

#~ msgid " and Parent "
#~ msgstr "и Родитељ"

#~ msgid " directories doesn't exist!"
#~ msgstr "директоријуми не постоје!"

#~ msgid " directory doesn't exist!"
#~ msgstr "директоријум не постоји!"

#~ msgid "Parent "
#~ msgstr "Родитељ"

#~ msgid "Unknown error! "
#~ msgstr "Непозната грешка!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "Немате дозволу за копирање датотека!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Све изабране датотеке су успешно избрисане!"

#~ msgid " does not exists!"
#~ msgstr "не постоји!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Отпремање ове екстензије датотеке није дозвољено!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Слика је успешно постављена!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Постоји неки проблем у отпремању слике!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Ову екстензију датотеке није дозвољено отпремати као снимак екрана од "
#~ "стране вордпресс!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Датотека је успешно отпремљена!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Датотеке подређених тема не могу се мењати."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Датотеке су успешно избрисане!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "Немате дозволу за брисање датотека!"

#~ msgid "Entered directory name already exists"
#~ msgstr "Унесено име директоријума већ постоји"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "Немате дозволу за креирање директоријума!"

#~ msgid "Wordpress template file created"
#~ msgstr "Датотека Вордпресс шаблона је креирана"

#~ msgid "Wordpress template file not created"
#~ msgstr "Датотека Вордпресс шаблона није креирана"

#~ msgid "PHP created file successfully"
#~ msgstr "ПХП је успешно креирао датотеку"

#~ msgid "PHP file not created"
#~ msgstr "ПХП датотека није креирана"

#~ msgid " file not created"
#~ msgstr "датотека није креирана"

#~ msgid "You don't have permission to create file!"
#~ msgstr "Немате дозволу за креирање датотеке!"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Фасцикла језика је преузета."

#~ msgid "Add single or multiple languages."
#~ msgstr "Додајте један или више језика."

#~ msgid "Add single language file"
#~ msgstr "Додајте датотеку са једним језиком"

#~ msgid "Please click on language button."
#~ msgstr "Кликните на дугме језик."

#~ msgid "Add all languages zip folder"
#~ msgstr "Додајте зип директоријум свих језика"

#~ msgid "Zip Download"
#~ msgstr "Зип Довнлоад"
languages/wp-file-manager-sl_SI.mo000064400000043115147361034410013040 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�g(�),�)I�)3G*={*�*#�*��*��+?',Ag,�,D�,>�,=6-t-�- �-1�-%�-)./G.w..�.�.!�.	�.	�.	/
/"/8/P/Y/2u/�/�/#�/6�/-0>I0�0	�0�0�0�0�0�0�0*1,1G13X1�1��1P2&l2 �2(�2D�2�"3�3444P4U4�\4�?5�56�06T�6�Q7��7�8�8�8�8�8N�8>+9"j9�9�9�9�9�9�9:W:o`:&�:'�:;&;5-;,c;&�;#�;3�;<
<)<E<_<l<j}<]�<	F=1P=-�=)�=6�=?>
Q>\>p>�>*�>�>�>�>???)?9?
L?,W?
�?�?�?"�?&�?@%@%7@]@o@:@�@2�@&�@"A/>A	nA&xA"�A�A�A4�A'B(.BWBsB�B'�B�B�BC.C'7C(_C7�C	�C�C�C7�C 'D�HD!E;-EMiEN�EFF}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Theme Editor Pro
PO-Revision-Date: 2022-02-28 11:33+0530
Last-Translator: 
Language-Team: 
Language: sl_SI
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n%100<=4 ? 2 : 3);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* za vse operacije in za dovolitev nekaterih operacij lahko navedete ime operacije, kot je npr. allowed_operations="upload,download". Opomba: ločeno z vejico (,). Privzeto: *->  Prepovedala bo določene uporabnike, tako da bo njihove ID-je ločila z vejicami (,). Če je uporabnik Ban, potem na sprednjem delu ne bo mogel dostopati do upravitelja datotek wp.-> Tema upravitelja datotek. Privzeto: Light-> Datoteka spremenjena ali Ustvari obliko datuma. Privzeto: d M, Y h:i A-> Jezik upravitelja datotek. Privzeto: English(en)-> Pogled uporabniškega vmesnika Filemanager. Privzeto: gridAkcijaDejanja ob izbrani varnostni kopijiSkrbnik lahko omeji dejanja katerega koli uporabnika. Datoteke in mape lahko tudi skrijete in lahko nastavite različne poti map do različnih uporabnikov.Skrbnik lahko omeji dejanja katere koli uporabniške vloge. Datoteke in mape lahko tudi skrijete in lahko nastavite različne poti map do različnih vlog uporabnikov.Po omogočitvi smeti bodo vaše datoteke šle v mapo smetnjaka.Po omogočitvi tega bodo vse datoteke šle v medijsko knjižnico.KončanoAli ste prepričani, da želite odstraniti izbrane varnostne kopije?Ali ste prepričani, da želite izbrisati to varnostno kopijo?Ali ste prepričani, da želite obnoviti to varnostno kopijo?Datum varnostne kopijeVarnostno kopirajte zdajMožnosti varnostnega kopiranja:Varnostno kopiranje podatkov (kliknite za prenos)Datoteke za varnostne kopije bodo podVarnostno kopiranje se izvaja, počakajteVarnostno kopiranje je bilo uspešno izbrisano.Varnostno kopiranje/obnovitevVarnostne kopije so bile uspešno odstranjene!PrepovedBrskalnik in OS (HTTP_USER_AGENT)Nakup PRONakup ProPrekličiSpremeni temo tukaj:Kliknite za nakup PROPogled urejevalnika kodPotrditeKopirajte datoteke ali mapeTrenutno ni mogoče najti nobene varnostne kopije.IZBRIŠI DATOTEKETemnoVarnostno kopiranje zbirke podatkovVarnostno kopiranje zbirke podatkov izvedeno na datum Varnostno kopiranje baze podatkov opravljeno.Varnostno kopiranje baze podatkov je bilo uspešno obnovljeno.PrivzetoPrivzeto:IzbrišiPrekliči izbiroZavrni to obvestilo.PodaritePrenesite dnevnike datotekPrenesite datotekePodvojite ali klonirajte mapo ali datotekoUrejanje dnevnikov datotekUredite datotekoOmogočiti nalaganje datotek v medijsko knjižnico?Želite omogočiti smetnjak?Napaka: varnostne kopije ni mogoče obnoviti, ker je varnostna kopija baze podatkov velika. Poskusite povečati največjo dovoljeno velikost v nastavitvah Nastavitve.Obstoječe varnostne kopijeIzvlecite arhiv ali stisnjeno datotekoUpravitelj datotek - kratka kodaUpravitelj datotek - sistemske lastnostiKoreninsko pot upravitelja datotek lahko spremenite po svoji izbiri.Upravitelj datotek ima urejevalnik kod z več temami. Za urejevalnik kode lahko izberete katero koli temo. Prikaže se, ko uredite katero koli datoteko. Prav tako lahko dovolite celozaslonski način urejevalnika kode.Seznam operacij datotek:Datoteka ne obstaja za prenos.Varnostno kopiranje datoteksivaPomočTukaj je "test" ime mape, ki se nahaja v korenskem imeniku, ali pa lahko podate pot za podmape, kot je "wp-content/plugins". Če pustite prazno ali prazno, bo dostopal do vseh map v korenskem imeniku. Privzeto: korenski imenikTu lahko skrbnik omogoči dostop do uporabniških vlog za uporabo upravitelja datotek. Skrbnik lahko nastavi privzeto mapo za dostop in nadzoruje tudi velikost nalaganja upravitelja datotek.Informacije o datotekiNeveljavna varnostna koda.Vsem vlogam bo omogočil dostop do upravitelja datotek na sprednji strani ali pa ga lahko preprosto uporabite za določene uporabniške vloge, kot je dovoljeno_roles="urednik,avtor" (ločeno z vejico(,))Omenjeno bo z vejicami. lahko zaklenete več kot ".php,.css,.js" itd. Privzeto: ničNa sprednjem delu bo prikazal upravitelja datotek. Toda samo skrbnik lahko dostopa do njega in bo upravljal iz nastavitev upravitelja datotek.Na sprednjem delu bo prikazal upravitelja datotek. Vse nastavitve lahko nadzirate v nastavitvah upravitelja datotek. Deloval bo enako kot backend WP File Manager.Zadnje dnevniško sporočiloSvetlobaDnevnikiNaredite imenik ali mapoUstvari datotekoNajvečja dovoljena velikost v času obnovitve varnostne kopije baze podatkov.Največja velikost datoteke za nalaganje (upload_max_filesize)Omejitev pomnilnika (memory_limit)Manjka varnostna kopija ID.Manjka vrsta parametra.Manjkajo zahtevani parametri.Ne hvalaNi dnevnikaNi zapisov!Opomba:Opomba: To so demo posnetki zaslona. Prosimo, kupite File Manager pro za funkcije Logs.Opomba: To je samo predstavitveni posnetek zaslona. Če želite dobiti nastavitve, kupite našo različico pro.Nič ni izbrano za varnostno kopiranjeNič ni izbrano za varnostno kopiranje.v reduV reduDrugo (Vsi drugi imeniki, najdeni znotraj wp-content)Drugi varnostno kopiranje narejeno na datum Varnostno kopiranje drugih opravljeno.Druge varnostne kopije niso uspele.Druga varnostna kopija je bila uspešno obnovljena.Različica PHPParametri:Prilepite datoteko ali mapoVnesite e-poštni naslov.Vnesite ime.Vnesite priimek.Prosimo, natančno spremenite to, napačna pot lahko povzroči, da se vtičnik upravitelja datotek spusti.Povečajte vrednost polja, če se ob obnovitvi varnostne kopije prikaže sporočilo o napaki.VtičnikiVarnostno kopiranje vtičnikov narejeno na datum Varnostno kopiranje vtičnikov je opravljeno.Varnostno kopiranje vtičnikov ni uspelo.Varnostno kopiranje vtičnikov je uspešno obnovljeno.Objavi največjo velikost datoteke za nalaganje (post_max_size)PreferencePolitika zasebnostiJavna korenska potOBNOVITE DATOTEKEOdstranite ali izbrišite datoteke in mapePreimenujte datoteko ali mapoObnoviObnovitev teče, počakajteUSPEHShrani spremembeShranjevanje ...Iščite stvariVarnostna težava.Izberi vseIzberite varnostno(e) kopijo(e) za brisanje!NastavitveNastavitve - Urejevalnik kodNastavitve - SplošnoNastavitve - Uporabniške omejitveNastavitve - Omejitve vloge uporabnikaNastavitve so shranjene.Kratka koda - PROPreprosto izrežite datoteko ali mapoLastnosti sistemaPogoji storitveVarnostno kopiranje je očitno uspelo in je zdaj končano.ThemesVarnostno kopiranje tem je bilo izvedeno na datum Varnostno kopiranje tem je opravljeno.Varnostno kopiranje tem ni uspelo.Varnostno kopiranje tem je uspešno obnovljeno.Čas zdajČasovna omejitev (max_execution_time)Če želite narediti arhiv ali zipDanesUPORABA:Varnostne kopije baze podatkov ni mogoče ustvariti.Varnostne kopije ni mogoče odstraniti!Varnostne kopije DB ni mogoče obnoviti.Drugih ni mogoče obnoviti.Vtičnikov ni mogoče obnoviti.Tem ni mogoče obnoviti.Naloženih datotek ni mogoče obnoviti.Naloži dnevnike datotekNaložite datotekePrenosiNaloži varnostno kopijo, opravljeno na datum Varnostna kopija nalaganja je končana.Varnostno kopiranje nalaganja ni uspelo.Naložene varnostne kopije so bile uspešno obnovljene.PreveriteOgled dnevnikaUpravitelj datotek WPUpravitelj datotek WP - Varnostno kopiranje / obnovitevPrispevek upravitelja datotek WPRadi ustvarjamo nove prijatelje! Naročite se spodaj in obljubljamo vam
    boste na tekočem z našimi najnovejšimi novimi vtičniki, posodobitvami,
    super ponudbe in nekaj posebnih ponudb.Dobrodošli v upravitelju datotekNiste naredili nobenih sprememb, ki bi jih morali shraniti.za dostop do dovoljenja za branje datotek, opomba: true/false, privzeto: trueza dostop do dovoljenj za pisanje datotek, opomba: true/false, privzeto: falsebo skrilo omenjeno tukaj. Opomba: ločeno z vejico (,). Privzeto: ničlanguages/wp-file-manager-de_DE.mo000064400000043274147361034410012775 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(�)&�)F�)/3*,c*�*'�*��*��+cY,Y�,-B&-/i-7�-�-
�-�-%�-#.?. [.|.!�.�.,�.
�.
�.
//"'/J/^/j/%�/�/�/�/*�/!01%0W0	`0j0	s0}0�0�0�04�01"1991s1��1E2&^2�2"�2:�2��2�3,4?4N4S4Y4�m5C6R6�o6e7�f7��7�8�8
�8!�8�8V�83O9�9�9�9!�9
�9�9:":\+:m�:!�:";;;>;1A;(s;�; �;/�;
<
<$<@<_<x<p�<j=m=*u=�=!�=-�=7
>
E>S>l>�>*�>,�>�>&?-?4?J?W?d?x?"�?�?�?�?'�?-@L@g@1w@�@�@A�@A$A?A\A,|A
�A(�A(�AB	B.B"EB.hB.�B/�B.�B/%CUCoCC6�C�C%�C7�C2D?DRD*bD�D��DhE8�Ea�EG FShF}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 16:48+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: de_DE
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* Für alle Operationen und um einige Operationen zuzulassen, können Sie den Operationsnamen wie "allowed_operations="upload,download" angeben. Hinweis: durch Komma (,) getrennt. Standard: *-> Es wird bestimmte Benutzer sperren, indem nur ihre IDs durch Kommas (,) getrennt werden. Wenn der Benutzer Ban ist, kann er am Frontend nicht auf den wp-Dateimanager zugreifen.-> Dateimanager-Theme. Standard: Licht-> Datei geändert oder Datumsformat erstellen. Standard: d M, Y h:i A-> Dateimanager-Sprache. Standard: Englisch(en)-> Dateimanager-UI-Ansicht. Standard: RasterAktionAktionen für ausgewählte(s) Backup(s)Der Administrator kann die Aktionen jedes Benutzers einschränken. Verstecken Sie auch Dateien und Ordner und können Sie verschiedene - verschiedene Ordnerpfade für verschiedene Benutzer festlegen.Der Administrator kann die Aktionen jeder Benutzerrolle einschränken. Verstecken Sie auch Dateien und Ordner und können Sie verschiedene - verschiedene Ordnerpfade für verschiedene Benutzerrollen festlegen.Nachdem Sie den Papierkorb aktiviert haben, werden Ihre Dateien in den Papierkorbordner verschoben.Nachdem Sie dies aktiviert haben, werden alle Dateien in die Medienbibliothek verschoben.Alles erledigtMöchten Sie die ausgewählte(n) Sicherung(en) wirklich entfernen?Möchten Sie diese Sicherung wirklich löschen?Möchten Sie diese Sicherung wirklich wiederherstellen?Backup-DatumJetzt sichernBackup-Optionen:Backup-Daten (zum Download anklicken)Backup-Dateien werden unterBackup läuft, bitte wartenSicherung erfolgreich gelöscht.Backup wiederherstellenSicherungen erfolgreich entfernt!VerbotBrowser und Betriebssystem (HTTP_USER_AGENT)PRO kaufenPro kaufenStornierenÄndern Sie das Thema hier:Klicken Sie hier, um PRO zu kaufenCode-Editor-AnsichtBestätigenDateien oder Ordner kopierenDerzeit keine Sicherung(en) gefunden.DATEIEN LÖSCHENDunkelDatenbanksicherungDatenbanksicherung am Datum durchgeführt Datenbanksicherung durchgeführt.Datenbanksicherung erfolgreich wiederhergestellt.StandardStandard:LöschenAbwählenIgnoriere die Nachricht.SpendenDateiprotokolle herunterladenDateien herunterladenEinen Ordner oder eine Datei duplizieren oder klonenDateiprotokolle bearbeitenBearbeiten einer DateiHochladen von Dateien in die Medienbibliothek aktivieren?Papierkorb aktivieren?Fehler: Die Sicherung kann nicht wiederhergestellt werden, da die Datenbanksicherung sehr groß ist. Bitte versuchen Sie, die maximal zulässige Größe in den Einstellungen zu erhöhen.Vorhandene Sicherung(en)Archiv oder gezippte Datei extrahierenDateimanager - ShortcodeDateimanager - SystemeigenschaftenDateimanager-Stammpfad, können Sie nach Belieben ändern.Der Dateimanager verfügt über einen Code-Editor mit mehreren Themen. Sie können ein beliebiges Thema für den Code-Editor auswählen. Es wird angezeigt, wenn Sie eine Datei bearbeiten. Sie können auch den Vollbildmodus des Code-Editors zulassen.Liste der Dateioperationen:Datei ist nicht zum Herunterladen vorhanden.DateisicherungGrauHilfeHier ist "test" der Name des Ordners, der sich im Stammverzeichnis befindet, oder Sie können den Pfad für Unterordner wie "wp-content/plugins" angeben. Wenn Sie das Feld leer oder leer lassen, wird auf alle Ordner im Stammverzeichnis zugegriffen. Standard: Root-VerzeichnisHier kann der Administrator Zugriff auf Benutzerrollen gewähren, um den Dateimanager zu verwenden. Der Administrator kann den Standardzugriffsordner festlegen und auch die Uploadgröße des Dateimanagers steuern.Info zur DateiUngültiger Sicherheitscode.Es ermöglicht allen Rollen den Zugriff auf den Dateimanager am Frontend oder Sie können es einfach für bestimmte Benutzerrollen verwenden, z.Es wird in Kommas erwähnt sperren. Sie können mehr wie ".php,.css,.js" usw. sperren. Standard: NullEs zeigt den Dateimanager am Frontend. Aber nur der Administrator kann darauf zugreifen und die Einstellungen des Dateimanagers steuern.Es zeigt den Dateimanager am Frontend. Sie können alle Einstellungen über die Dateimanagereinstellungen steuern. Es funktioniert genauso wie der Backend-WP-Dateimanager.Letzte ProtokollnachrichtLichtProtokolleVerzeichnis oder Ordner erstellenDatei erstellenMaximal zulässige Größe zum Zeitpunkt der Wiederherstellung der Datenbanksicherung.Maximale Datei-Upload-Größe (upload_max_filesize)Speicherlimit (memory_limit)Fehlende Backup-ID.Parametertyp fehlt.Fehlende erforderliche Parameter.Nein dankeKeine Log-MeldungKeine Protokolle gefunden!Hinweis:Hinweis: Dies sind Demo-Screenshots. Bitte kaufen Sie File Manager Pro für Logs-Funktionen.Hinweis: Dies ist nur ein Demo-Screenshot. Um Einstellungen zu erhalten, kaufen Sie bitte unsere Pro-Version.Nichts für Sicherung ausgewähltNichts für Sicherung ausgewählt.OKOKAndere (Alle anderen Verzeichnisse in wp-content)Andere Sicherung am Datum durchgeführt Andere Sicherung durchgeführt.Andere Sicherung fehlgeschlagen.Andere Sicherung erfolgreich wiederhergestellt.PHP-VersionParameter:Datei oder Ordner einfügenBitte E-Mail-Adresse eingeben.Bitte Vornamen eingeben.Bitte Nachname eingeben.Bitte ändern Sie dies sorgfältig, ein falscher Pfad kann dazu führen, dass das Dateimanager-Plugin ausfällt.Bitte erhöhen Sie den Feldwert, wenn Sie beim Wiederherstellen der Sicherung eine Fehlermeldung erhalten.PluginsPlugin-Backup am Datum durchgeführt done Plugin-Backup durchgeführt.Plug-in-Sicherung fehlgeschlagen.Plugins-Backup erfolgreich wiederhergestellt.Maximale Datei-Upload-Größe des Posts (post_max_size)EinstellungenDatenschutz-BestimmungenÖffentlicher Root-PfadDATEIEN WIEDERHERSTELLENDateien und Ordner entfernen oder löschenBenennen Sie eine Datei oder einen Ordner umWiederherstellenWiederherstellung läuft, bitte wartenERFOLGÄnderungen speichernSpeichern...Dinge suchenSicherheitsproblem.Wählen Sie AlleBackup(s) zum Löschen auswählen!die EinstellungenEinstellungen - Code-EditorEinstellungen - AllgemeinesEinstellungen - BenutzerbeschränkungenEinstellungen - BenutzerrollenbeschränkungenEinstellungen gespeichert.Shortcode - PROEinfach eine Datei oder einen Ordner ausschneidenSystemeigenschaftenNutzungsbedingungenDie Sicherung ist anscheinend gelungen und ist nun abgeschlossen.ThemenTheme-Backup am Datum durchgeführt Themes-Backup durchgeführt.Designsicherung fehlgeschlagen.Themes-Backup erfolgreich wiederhergestellt.Zeit jetztZeitüberschreitung (max_execution_time)Um ein Archiv oder eine Zip zu erstellenHeuteBENUTZEN:Datenbanksicherung kann nicht erstellt werden.Backup kann nicht entfernt werden!DB-Backup kann nicht wiederhergestellt werden.Andere können nicht wiederhergestellt werden.Plugins können nicht wiederhergestellt werden.Themen können nicht wiederhergestellt werden.Uploads können nicht wiederhergestellt werden.Dateiprotokolle hochladenDaten hochladenUploadsLädt die Sicherung hoch, die am Datum erstellt wurde Upload-Backup fertig.Sicherung der Uploads fehlgeschlagen.Lädt die Sicherung erfolgreich wiederhergestellt hoch.ÜberprüfenProtokoll anzeigenWP-DateimanagerWP-Dateimanager - Sichern/WiederherstellenBeitrag zum WP-DateimanagerWir lieben es, neue Freunde zu finden! Abonnieren Sie unten und wir versprechen es
    halten Sie mit unseren neuesten neuen Plugins, Updates,
    tolle Angebote und ein paar Sonderangebote.Willkommen beim DateimanagerSie haben keine zu speichernden Änderungen vorgenommen.für den Zugriff auf die Berechtigung zum Lesen von Dateien, Hinweis: wahr/falsch, Standard: wahrfür den Zugriff auf Schreibrechte, Hinweis: true/false, default: falsees wird hier erwähnt verstecken. Hinweis: durch Komma (,) getrennt. Standard: Nulllanguages/wp-file-manager-te.mo000064400000072470147361034410012445 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�T(�0*]�+�B,g�,kY-�-R�-�%.��/��1��21?3�q3�4��4"J5m5,�5��5K66h�6]�64I7i~7!�7;
8F8>d8"�8?�8d92k9'�9d�9i+:7�:�:.�:`;Nm;��;B<[<u<4�<<�<=Z
=Gh=��=G?>1�>��>DF?��?C�Az�ADCBM�B��B6nC9�Eh�E(HFqF�Fo�FI" K6CKbzK�M��N��P/NR~R�Rl�RS�1Sa�S4CT-xT-�TH�T+U,IUEvU�U�U�VQ�WR=X�X�X��XQAY?�Y<�YvZ�Z�ZW�Zk[Y�[Y�[9\�U]3^cO^Q�^N_�T_n�_$L`(q`/�`F�`�aU�a'�aq"b�b(�b+�b4�b#.c+Rcb~c!�cCd3GdU{dq�dQCe�es�e("f%Kf�qfgZ!gH|gE�gh"�h=�hK�h8iHi}Wia�is7jg�jskj�kv�kWilA�l!mf%mT�mQ�m�3n$�n�n%o\*o8�oR�oArxUr��r��s�at}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 12:14+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: te
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* అన్ని కార్యకలాపాలకు మరియు కొంత ఆపరేషన్‌ను అనుమతించడానికి మీరు ఆపరేషన్ పేరును ఇలా పేర్కొనవచ్చు, అనుమతి_ఆపరేషన్స్="అప్‌లోడ్, డౌన్‌లోడ్". గమనిక: కామా(,)తో వేరు చేయబడింది. డిఫాల్ట్: *-> ఇది నిర్దిష్ట వినియోగదారుల ఐడిలను కామాలతో (,) వేరు చేయడం ద్వారా నిషేధిస్తుంది. వినియోగదారు నిషేధించబడితే, వారు ఫ్రంట్ ఎండ్‌లో wp ఫైల్ మేనేజర్‌ని యాక్సెస్ చేయలేరు.-> ఫైల్ మేనేజర్ థీమ్. డిఫాల్ట్: కాంతి-> ఫైల్ సవరించబడింది లేదా తేదీ ఆకృతిని సృష్టించండి. డిఫాల్ట్: d M, Y h:i A-> ఫైల్ మేనేజర్ భాష. డిఫాల్ట్: ఇంగ్లీష్(en)-> ఫైల్‌మేనేజర్ UI వీక్షణ. డిఫాల్ట్: గ్రిడ్చర్యఎంచుకున్న బ్యాకప్(లు)పై చర్యలుఅడ్మిన్ ఏ యూజర్ యొక్క చర్యలు పరిమితం చేయవచ్చు. వేర్వేరు వినియోగదారుల కోసం వేర్వేరు ఫోల్డర్ల మార్గాలు - ఫైల్లను మరియు ఫోల్డర్లను కూడా దాచండి మరియు వివిధ సెట్ చేయవచ్చు.అడ్మిన్ ఏ వినియోగదారుని యొక్క చర్యలను నియంత్రించగలదు. విభిన్న వినియోగదారుల పాత్రలకు వేర్వేరు ఫోల్డర్ల మార్గాలు - ఫైల్లను మరియు ఫోల్డర్లను కూడా దాచండి మరియు వివిధ సెట్ చేయవచ్చు.ట్రాష్‌ని ప్రారంభించిన తర్వాత, మీ ఫైల్‌లు ట్రాష్ ఫోల్డర్‌కి వెళ్తాయి.దీన్ని ప్రారంభించిన తర్వాత అన్ని ఫైల్‌లు మీడియా లైబ్రరీకి వెళ్తాయి.అన్నీ పూర్తయ్యాయిమీరు ఎంచుకున్న బ్యాకప్(ల)ని ఖచ్చితంగా తీసివేయాలనుకుంటున్నారా?మీరు ఖచ్చితంగా ఈ బ్యాకప్‌ని తొలగించాలనుకుంటున్నారా?మీరు ఖచ్చితంగా ఈ బ్యాకప్‌ని పునరుద్ధరించాలనుకుంటున్నారా?బ్యాకప్ తేదీభద్రపరచుబ్యాకప్ ఎంపికలు:బ్యాకప్ డేటా (డౌన్‌లోడ్ చేయడానికి క్లిక్ చేయండి)బ్యాకప్ ఫైల్‌లు కింద ఉంటాయిబ్యాకప్ అమలవుతోంది, దయచేసి వేచి ఉండండిబ్యాకప్ విజయవంతంగా తొలగించబడింది.బ్యాకప్/పునరుద్ధరణబ్యాకప్‌లు విజయవంతంగా తీసివేయబడ్డాయి!నిషేధించండి బ్రౌజర్ మరియు OS (HTTP_USER_AGENT)PRO ను కొనండిప్రోని కొనుగోలు చేయండిరద్దు చేయండిఇక్కడ థీమ్‌ను మార్చండి:PROని కొనుగోలు చేయడానికి క్లిక్ చేయండికోడ్ ఎడిటర్ వీక్షణనిర్ధారించండిఫైల్‌లు లేదా ఫోల్డర్‌లను కాపీ చేయండిప్రస్తుతం బ్యాకప్(లు) ఏవీ కనుగొనబడలేదు.ఫైల్‌లను తొలగించండిచీకటిడేటాబేస్ బ్యాకప్డేటాబేస్ బ్యాకప్ తేదీలో పూర్తయిందిడేటాబేస్ బ్యాకప్ పూర్తయింది.డేటాబేస్ బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది.డిఫాల్ట్డిఫాల్ట్:తొలగించుఎంపికను తీసివేయండిఈ నోటీసును తీసివేయండి.దానంఫైల్స్ లాగ్‌లను డౌన్‌లోడ్ చేయండిఫైల్‌లను డౌన్‌లోడ్ చేయండిఫోల్డర్ లేదా ఫైల్‌ను నకిలీ చేయండి లేదా క్లోన్ చేయండిఫైల్స్ లాగ్‌లను సవరించండిఫైల్‌ని సవరించండిమీడియా లైబ్రరీకి ఫైల్‌ల అప్‌లోడ్‌ను ప్రారంభించాలా?ట్రాష్‌ని ప్రారంభించాలా?లోపం: డేటాబేస్ బ్యాకప్ పరిమాణం భారీగా ఉన్నందున బ్యాకప్‌ని పునరుద్ధరించడం సాధ్యం కాలేదు. దయచేసి ప్రాధాన్యతల సెట్టింగ్‌ల నుండి అనుమతించబడిన గరిష్ట పరిమాణాన్ని పెంచడానికి ప్రయత్నించండి.ఇప్పటికే ఉన్న బ్యాకప్(లు)ఆర్కైవ్ లేదా జిప్ చేసిన ఫైల్‌ను సంగ్రహించండిఫైల్ మేనేజర్ - షార్ట్ కోడ్ఫైల్ మేనేజర్ - సిస్టమ్ గుణాలుఫైల్ మేనేజర్ రూట్ పాత్, మీరు మీ ఎంపిక ప్రకారం మార్చవచ్చు.ఫైల్ మేనేజర్ బహుళ థీమ్స్తో ఒక కోడ్ ఎడిటర్ను కలిగి ఉంది. మీరు కోడ్ ఎడిటర్ కోసం ఏ థీమ్ ఎంచుకోవచ్చు. మీరు ఏదైనా ఫైల్ను సవరించినప్పుడు ఇది ప్రదర్శిస్తుంది. మీరు కోడ్ ఎడిటర్ పూర్తిస్క్రీన్ మోడ్ను కూడా అనుమతించవచ్చు.ఫైల్ ఆపరేషన్ల జాబితా:డౌన్‌లోడ్ చేయడానికి ఫైల్ ఉనికిలో లేదు.ఫైల్స్ బ్యాకప్బూడిద రంగుసహాయంఇక్కడ "పరీక్ష" అనేది రూట్ డైరెక్టరీలో ఉన్న ఫోల్డర్ పేరు, లేదా మీరు "wp-content/plugins" వంటి సబ్ ఫోల్డర్‌ల కోసం పాత్ ఇవ్వవచ్చు. ఖాళీగా లేదా ఖాళీగా ఉంచినట్లయితే అది రూట్ డైరెక్టరీలోని అన్ని ఫోల్డర్‌లను యాక్సెస్ చేస్తుంది. డిఫాల్ట్: రూట్ డైరెక్టరీఇక్కడ నిర్వాహకుడు ఫైల్ మేనేజర్ను ఉపయోగించడానికి వినియోగదారు పాత్రలకు ప్రాప్తిని ఇవ్వవచ్చు. అడ్మిన్ డిఫాల్ట్ యాక్సెస్ ఫోల్డర్ సెట్ చేయవచ్చు మరియు ఫైల్ మేనేజర్ అప్లోడ్ పరిమాణం నియంత్రించడానికి.ఫైల్ సమాచారంచెల్లని భద్రతా కోడ్.ఇది అన్ని పాత్రలను ఫ్రంట్ ఎండ్‌లో ఫైల్ మేనేజర్‌ను యాక్సెస్ చేయడానికి అనుమతిస్తుంది లేదా మీరు నిర్దిష్ట వినియోగదారు పాత్రల కోసం అనుమతించిన_రోల్స్ = "ఎడిటర్, రచయిత" (కామా(,) ద్వారా వేరుచేయబడింది) వంటి వాటిని సులభంగా ఉపయోగించవచ్చు.ఇది కామాలో పేర్కొన్న లాక్ చేయబడుతుంది. మీరు ".php,.css,.js" వంటి మరిన్నింటిని లాక్ చేయవచ్చు. డిఫాల్ట్: శూన్యంఇది ఫ్రంట్ ఎండ్‌లో ఫైల్ మేనేజర్‌ని చూపుతుంది. కానీ అడ్మినిస్ట్రేటర్ మాత్రమే దీన్ని యాక్సెస్ చేయగలరు మరియు ఫైల్ మేనేజర్ సెట్టింగ్‌ల నుండి నియంత్రిస్తారు.ఇది ఫ్రంట్ ఎండ్‌లో ఫైల్ మేనేజర్‌ని చూపుతుంది. మీరు ఫైల్ మేనేజర్ సెట్టింగ్‌ల నుండి అన్ని సెట్టింగ్‌లను నియంత్రించవచ్చు. ఇది బ్యాకెండ్ WP ఫైల్ మేనేజర్ వలె పని చేస్తుంది.చివరి లాగ్ సందేశంకాంతిలాగ్‌లుడైరెక్టరీ లేదా ఫోల్డర్‌ని రూపొందించండిఫైల్ చేయండిడేటాబేస్ బ్యాకప్ పునరుద్ధరణ సమయంలో అనుమతించబడిన గరిష్ట పరిమాణం.గరిష్ట ఫైలు అప్లోడ్ పరిమాణం (upload_max_filesize)మెమరీ పరిమితి (memory_limit)బ్యాకప్ ఐడి లేదు.పరామితి రకం లేదు.అవసరమైన పారామీటర్‌లు లేవు.లేదు ధన్యవాదాలులాగ్ సందేశం లేదులాగ్‌లు ఏవీ కనుగొనబడలేదు!గమనిక:గమనిక: ఇవి డెమో స్క్రీన్‌షాట్‌లు. దయచేసి ఫైల్ మేనేజర్ ప్రో టు లాగ్స్ ఫంక్షన్‌లను కొనుగోలు చేయండి.గమనిక: ఇది కేవలం డెమో స్క్రీన్షాట్. సెట్టింగులను పొందడానికి దయచేసి మా అనుకూల సంస్కరణను కొనుగోలు చేయండి.బ్యాకప్ కోసం ఏదీ ఎంచుకోబడలేదుబ్యాకప్ కోసం ఏదీ ఎంచుకోబడలేదు.అలాగేఅలాగేఇతరులు (wp-content లోపల ఏవైనా ఇతర డైరెక్టరీలు కనుగొనబడ్డాయి)ఇతర బ్యాకప్ తేదీలో పూర్తయిందిఇతర బ్యాకప్ పూర్తయింది.ఇతర బ్యాకప్ విఫలమైంది.ఇతర బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది.PHP సంస్కరణపారామితులు:ఫైల్ లేదా ఫోల్డర్‌ను అతికించండిదయచేసి ఇమెయిల్ చిరునామాను నమోదు చేయండి.దయచేసి మొదటి పేరును నమోదు చేయండి.దయచేసి చివరి పేరును నమోదు చేయండి.దయచేసి దీన్ని జాగ్రత్తగా మార్చండి, తప్పు మార్గం ఫైల్ మేనేజర్ ప్లగ్‌ఇన్‌ను తగ్గించడానికి దారి తీస్తుంది.బ్యాకప్ పునరుద్ధరణ సమయంలో మీకు దోష సందేశం వస్తుంటే దయచేసి ఫీల్డ్ విలువను పెంచండి.ప్లగిన్లుప్లగిన్‌ల బ్యాకప్ తేదీలో పూర్తయిందిప్లగిన్‌ల బ్యాకప్ పూర్తయింది.ప్లగిన్‌ల బ్యాకప్ విఫలమైంది.ప్లగిన్‌ల బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది.గరిష్ట ఫైలు అప్లోడ్ పరిమాణం పోస్ట్ (post_max_size)ప్రాధాన్యతలుగోప్యతా విధానంపబ్లిక్ రూట్ పాత్ఫైల్‌లను పునరుద్ధరించండిఫైల్‌లు మరియు ఫోల్డర్‌లను తీసివేయండి లేదా తొలగించండిఫైల్ లేదా ఫోల్డర్ పేరు మార్చండిపునరుద్ధరించుపునరుద్ధరణ అమలవుతోంది, దయచేసి వేచి ఉండండివిజయంమార్పులను ఊంచుసేవ్ చేస్తోంది...విషయాలను శోధించండిభద్రతా సమస్య.అన్ని ఎంచుకోండితొలగించడానికి బ్యాకప్(లు) ఎంచుకోండి!సెట్టింగులుసెట్టింగులు - కోడ్ ఎడిటర్సెట్టింగులు - జనరల్సెట్టింగులు - వాడుకరి పరిమితులుసెట్టింగులు - వినియోగదారు పాత్ర పరిమితులుసెట్టింగ్‌లు సేవ్ చేయబడ్డాయి.షార్ట్ - PROఫైల్ లేదా ఫోల్డర్‌ను సులభంగా కత్తిరించండిసిస్టమ్ గుణాలుసేవా నిబంధనలుబ్యాకప్ స్పష్టంగా విజయవంతమైంది మరియు ఇప్పుడు పూర్తయింది.థీమ్స్థీమ్‌ల బ్యాకప్ తేదీలో పూర్తయిందిథీమ్‌ల బ్యాకప్ పూర్తయింది.థీమ్‌ల బ్యాకప్ విఫలమైంది.థీమ్‌ల బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది.ఇప్పుడు సమయంసమయం ముగిసింది (max_execution_time)ఆర్కైవ్ లేదా జిప్ చేయడానికిఈరోజువా డు:డేటాబేస్ బ్యాకప్‌ని సృష్టించడం సాధ్యం కాలేదు.బ్యాకప్‌ని తీసివేయడం సాధ్యం కాలేదు!DB బ్యాకప్‌ని పునరుద్ధరించడం సాధ్యం కాలేదు.ఇతరులను పునరుద్ధరించడం సాధ్యం కాలేదు.ప్లగిన్‌లను పునరుద్ధరించడం సాధ్యం కాలేదు.థీమ్‌లను పునరుద్ధరించడం సాధ్యం కాలేదు.అప్‌లోడ్‌లను పునరుద్ధరించడం సాధ్యం కాలేదు.ఫైల్స్ లాగ్‌లను అప్‌లోడ్ చేయండిఫైల్లను అప్లోడ్ చేయండిఅప్‌లోడ్‌లుఅప్‌లోడ్‌ల బ్యాకప్ తేదీలో పూర్తయిందిఅప్‌లోడ్‌ల బ్యాకప్ పూర్తయింది.అప్‌లోడ్‌ల బ్యాకప్ విఫలమైంది.అప్‌లోడ్‌ల బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది.ధృవీకరించండిలాగ్ చూడండిWP ఫైల్ మేనేజర్WP ఫైల్ మేనేజర్ - బ్యాకప్/పునరుద్ధరణWP ఫైల్ మేనేజర్ సహకారంకొత్త స్నేహితులను చేసుకోవడం మాకు చాలా ఇష్టం! దిగువన సబ్‌స్క్రైబ్ చేసుకోండి మరియు మా తాజా కొత్త ప్లగిన్‌లు, అప్‌డేట్‌లు, అద్భుతమైన డీల్‌లు మరియు కొన్ని ప్రత్యేక ఆఫర్‌లతో మిమ్మల్ని తాజాగా ఉంచుతామని మేము హామీ ఇస్తున్నాము.ఫైల్ మేనేజర్‌కి స్వాగతంమీరు సేవ్ చేయడానికి ఎలాంటి మార్పులు చేయలేదు.ఫైల్‌లను చదవడానికి యాక్సెస్ కోసం అనుమతి, గమనిక: నిజం/తప్పు, డిఫాల్ట్: నిజంఫైళ్ల అనుమతులను వ్రాయడానికి యాక్సెస్ కోసం, గమనిక: నిజం/తప్పు, డిఫాల్ట్: తప్పుఇది ఇక్కడ పేర్కొన్న దాచబడుతుంది. గమనిక: కామా(,)తో వేరు చేయబడింది. డిఫాల్ట్: శూన్యంlanguages/wp-file-manager-ceb.mo000064400000043701147361034410012561 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�O(�'))�)C*7_*0�*�*%�*��*��+F�,E�,
)-G7-8-5�-�-..-).&W.%~.%�.
�.&�.�./&/3/@/L/a/|/�/�/.�/�/00*%0P0.o0�0�0�0�0�0�0�0	1,"1O1j131�1��1�2#�2�2$�2B3�D3"74Z4z4�4�4(�4��5�6�6��6y�7�$8��89�9	�9�9�9I�9D$:$i:�:�:+�:�:�:
;,;i2;|�;<5<R<X<N[<'�<�< �<-
=8=
D=O="o= �=�=j�=q;>
�>,�>%�>&?02?<c?	�?�?�?�?/�?'@D@&I@
p@{@�@�@�@�@#�@�@
A$A-:A9hA�A�A)�A�AB3&BZB*cB"�B$�B6�B
CC;CZC	`C$jC�C�C�C�CDD;DVD
mD,xD!�D"�D8�D#E,E<ELElE��EVF;nF^�Fa	GUkG}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-03 11:05+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: ceb
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* para sa tanan nga mga operasyon ug aron tugotan ang pipila ka operasyon mahimo nimong hisgutan ang ngalan sa operasyon sama sa, allowed_operations="upload,download". Mubo nga sulat: gibulag sa comma(,). Default: *-> Gidili niini ang mga partikular nga tiggamit pinaagi lamang sa pagbutang sa ilang mga id nga gibulag sa mga koma(,). Kung ang user kay Ban unya dili sila maka-access sa wp file manager sa front end.-> Tema sa File Manager. Default: Kahayag-> Gibag-o sa File o Paghimo format sa petsa. Default: d M, Y h:i A-> Pinulongan sa manedyer sa file. Default: English(en)-> Pagtan-aw sa UI sa Filemanager. Default: gridAksyonMga aksyon sa pinili nga (mga) backupAng Admin mahimong makapugong sa mga lihok sa bisan kinsa nga tiggamit. Usba usab ang mga file ug mga folder ug maka-set sa lain-laing mga lain-laing mga folder sa mga dalan alang sa lain-laing mga tiggamit.Ang Admin mahimong makapugong sa mga lihok sa bisan unsang userrole. Usba usab ang mga file ug mga folder ug maka-set sa lain-laing mga lain-laing mga folder sa mga dalan alang sa nagkalain-laing papel sa tiggamit.Human ma-enable ang basura, ang imong mga file moadto sa trash folder.Pagkahuman niini, ang tanan nga mga file moadto sa librarya sa media.Tanan NahumanSigurado ka ba nga gusto nimong tangtangon ang pinili nga (mga) backup?Sigurado ka ba nga gusto nimong papason kini nga backup?Sigurado ka ba nga gusto nimo ibalik kini nga backup?Petsa sa Pag-backupTabang karonMga Opsyon sa Pag-backup:Pag-backup sa datos (i-klik aron ma-download)Ang mga backup nga file anaa sa ilawomNagdagan ang backup, palihug paghulatMalampuson nga natangtang ang backup.I-backup/IuliMalampusong natangtang ang mga backup!GiwalaBrowser ug OS (HTTP_USER_AGENT)Pagpalit PROPagpalit ProPagkanselarUsba ang Tema Dinhi:Pag-klik aron Pagpalit PROView sa Code-editorSa pagmatuod saKopyaha ang mga file o folderSa pagkakaron walay (mga) backup nga nakit-an.pagtangtang sa mga fileNgitngitPag-backup sa DatabaseAng pag-backup sa database gihimo sa petsaGihimo ang backup sa database.Malampuson nga nabalik ang backup sa database.DefaultDefault:PagtangtangAyaw pagpiliIsalikway kini nga pahibalo.DonatePag-download sa mga File LogPag-download sa mga filePagdoble o pag-clone sa usa ka folder o fileI-edit ang mga Log sa FileUsba ang usa ka fileGiunsa ang Pag-upload sa mga File sa Media Library?I-enable ang Basura?Sayop: Dili mabalik ang backup tungod kay ang backup sa database bug-at ang gidak-on. Palihug sulayi nga dugangan ang Maximum nga gitugot nga gidak-on gikan sa mga setting sa Preferences.Anaa nga (mga) backupKuhaa ang archive o gi-zip nga fileTagdumala sa File - ShortcodeFile Manager - Sistema sa KinaiyahanFile Manager Root Path, mahimo nimong usbon sumala sa imong gusto.Ang File Manager adunay editor sa code nga dunay daghang mga tema. Makapili ka sa bisan unsang tema alang sa editor sa code. Ipakita kini sa dihang mag-edit ka sa bisan unsang file. Mahimo usab nimo tugotan ang fullscreen mode sa code editor.Listahan sa mga Operasyon sa File:Wala ang file aron ma-download.Pag-backup sa mga FileGrayTabangDinhi ang "pagsulay" mao ang ngalan sa folder nga nahimutang sa root directory, o mahimo nimong hatagan ang agianan alang sa mga sub folder sama sa "wp-content/plugins". Kung biyaan nga blangko o walay sulod kini maka-access sa tanan nga mga folder sa root directory. Default: Direktoryo sa gamutAng admin dinhi makahatag sa access sa mga papel sa user aron magamit ang filemanager. Ang Admin mahimo magtakda sa Default Access Folder ug usab kontrolon ang upload nga sukod sa filemanager.Impormasyon sa fileDili balido nga Security Code.Gitugotan niini ang tanan nga mga tahas nga maka-access sa file manager sa atubangan nga tumoy o Mahimo nimo nga yano nga paggamit alang sa partikular nga mga tahas sa gumagamit sama sa gitugotan_roles="editor, awtor" (gibulag sa koma (,))I-lock kini nga gihisgutan sa mga koma. mahimo nimong i-lock ang dugang sama sa ".php,.css,.js" ug uban pa. Default: NullKini magpakita sa file manager sa atubangan nga tumoy. Apan ang Administrator lamang ang maka-access niini ug makontrol gikan sa mga setting sa file manager.Kini magpakita sa file manager sa atubangan nga tumoy. Mahimo nimong kontrolon ang tanan nga mga setting gikan sa mga setting sa file manager. Kini molihok sama sa backend WP File Manager.Katapusan nga Mensahe sa LogKahayagMga trosoPaghimo og direktoryo o folderPaghimo filePinakataas nga gitugot nga gidak-on sa panahon sa pag-backup sa database.Ang kinadak-ang gidak-on sa pag-upload sa file (upload_max_filesize)Limitahan sa Memoryal (memory_limit)Nawala ang backup id.Nawala ang tipo sa parameter.Nawala ang gikinahanglan nga mga parameter.Dili SalamatWalay log messageWala'y nakit-an nga mga troso!Nota:Hinumdomi: Kini ang mga screenshot sa demo. Palihug paliton ang File Manager pro sa mga function sa Logs.Mubo nga sulat: Kini usa lamang ka screenshot sa demo. Aron makuha ang mga setting palihug palita ang among pro nga bersyon.Walay gipili para sa backupWalay gipili para sa backup.OK raOkAng uban (Bisan unsang ubang mga direktoryo nga makita sa sulod sa wp-content)Ang uban nga pag-backup gihimo sa petsaAng uban na-backup na.Ang uban napakyas sa pag-backup.Ang uban nga backup malampuson nga gipahiuli.PHP versionParameter:Idikit ang usa ka file o folderPalihug Pagsulod sa Email Address.Palihug Isulod ang Unang Ngalan.Palihug Isulod ang Apelyido.Palihug usba kini pag-ayo, ang sayup nga agianan mahimo’g magdala sa plugin sa file manager nga mahulog.Palihog dugangi ang bili sa field kung nakadawat ka og mensahe sa sayop sa panahon sa pag-backup sa pagpasig-uli.Mga pluginAng pag-backup sa mga plugin gihimo sa petsaNahuman ang pag-backup sa mga plugin.Napakyas ang pag-backup sa mga plugin.Malampuson nga nabalik ang backup sa mga plugin.Pag-upload sa gidak-on sa gidak-on sa upload (post_max_size)Mga gustoPatakaran sa PagkapribadoPublikong Root PathI-ULI ANG MGA FILESPagtangtang o pagtangtang sa mga file ug folderUsba ang ngalan sa usa ka file o folderIuliAng pag-uli nagdagan, palihug paghulatKALAMPUSANI-save ang mga KausabanNagtipig...Pangitaa ang mga butangIsyu sa Seguridad.Pilia ang TananPilia ang (mga) backup nga papason!Mga SettingMga Setting - Code-editorMga Setting - HeneralMga Setting - Mga Pagpanghilawas sa GumagamitMga Setting - Mga Gikinahanglan nga Mga Paghukom sa TananGitipigan ang mga setting.Shortcode - PRO Yano nga pagputol sa usa ka file o folderSistema sa KinaiyahanMga Termino sa SerbisyoAng backup dayag nga milampos ug karon kompleto na.Mga temaAng pag-backup sa mga tema gihimo sa petsaGihimo ang pag-backup sa mga tema.Ang pag-backup sa mga tema napakyas.Ang pag-backup sa mga tema malampuson nga napasig-uli.Panahon na karonTimeout (max_execution_time)Aron makahimo og archive o zipKaronPAGGAMIT:Dili makahimo og backup sa database.Dili matangtang ang backup!Dili mabalik ang backup sa DB.Dili mapasig-uli ang uban.Dili mabalik ang mga plugins.Dili mabalik ang mga tema.Dili mabalik ang mga upload.Pag-upload sa mga File LogPag-upload og mga fileMga uploadAng mga pag-upload sa backup nahimo sa petsaNahuman ang pag-upload sa backup.Napakyas ang pag-upload sa backup.Malampuson nga napasig-uli ang mga backup nga gi-upload.I-verifyTan-awa ang LogWP File ManagerWP File Manager - I-backup/IuliKontribusyon sa WP File ManagerGanahan mi maghimo ug bag-ong mga higala! Mag-subscribe sa ubos ug misaad kami nga ipadayon ka sa pinakabag-o nga bag-ong mga plugins, updates, nindot nga mga deal ug pipila ka espesyal nga mga tanyag.Welcome sa File ManagerWala ka makahimo ug bisan unsang mga pagbag-o aron maluwas.alang sa pag-access sa pagtugot sa pagbasa sa mga file, timan-i: tinuod/sayup, default: tinuodalang sa pag-access sa pagsulat sa mga permiso sa mga file, timan-i: tinuod/sayup, default: bakakkini magtago nga gihisgotan dinhi. Mubo nga sulat: gibulag sa comma(,). Default: Nulllanguages/wp-file-manager-cy.po000064400000066253147361034410012455 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-25 16:36+0530\n"
"PO-Revision-Date: 2022-02-25 16:40+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: cy\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : "
"n==6 ? 4 : 5;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Adferwyd themâu wrth gefn yn llwyddiannus."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Methu adfer themâu."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Llwythiadau wrth gefn wedi'u hadfer yn llwyddiannus."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Methu adfer uwchlwythiadau."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Adferwyd copi wrth gefn eraill yn llwyddiannus."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Methu adfer eraill."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Adferwyd ategion ategion yn llwyddiannus."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Methu adfer ategion."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Adfer copi wrth gefn o'r gronfa ddata yn llwyddiannus."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Pawb Wedi'i Wneud"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Methu adfer copi wrth gefn DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Tynnu copïau wrth gefn yn llwyddiannus!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Methu tynnu copi wrth gefn!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Gwneud copi wrth gefn o'r gronfa ddata ar y dyddiad "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Gwneud copi wrth gefn o ategion ar ddyddiad "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Gwneud copi wrth gefn o themâu ar ddyddiad "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Llwythiadau wrth gefn wedi'u llwytho ar ddyddiad "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Eraill wrth gefn wedi'i wneud ar y dyddiad "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Logiau"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Ni chafwyd hyd i logiau!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Dim byd wedi'i ddewis ar gyfer copi wrth gefn"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Mater Diogelwch."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Gwneud copi wrth gefn o'r gronfa ddata."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Methu creu cronfa ddata wrth gefn."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Gwneud copi wrth gefn o ategion."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Wedi methu gwneud copi wrth gefn o ategion."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Mae copi wrth gefn o themâu wedi'i wneud."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Wedi methu gwneud copi wrth gefn o'r themâu."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Llwythiadau wrth gefn wedi'u gwneud."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Methodd uwchlwythiadau wrth gefn."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Copi wrth gefn eraill wedi'i wneud."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Methodd wrth gefn eraill."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "Rheolwr Ffeil WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Gosodiadau"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Dewisiadau"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Priodweddau System"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Cod byr - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Gwneud copi wrth gefn / adfer"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Prynu Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Rhowch"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Nid yw'r ffeil yn bodoli i'w lawrlwytho."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Cod Diogelwch Annilys."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Id wrth gefn ar goll."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Math paramedr ar goll."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Y paramedrau gofynnol ar goll."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Gwall: Methu adfer copi wrth gefn oherwydd bod copi wrth gefn cronfa ddata "
"yn drwm o ran maint. Ceisiwch gynyddu'r maint mwyaf a ganiateir o osodiadau "
"Dewisiadau."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Dewiswch wrth gefn(au) i'w dileu!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Ydych chi'n sicr am gael gwared ar gefn (au) dethol?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Mae'r copi wrth gefn yn rhedeg, arhoswch"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Mae Restore yn rhedeg, arhoswch"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Dim byd wedi'i ddewis ar gyfer copi wrth gefn."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "Rheolwr Ffeil WP - Gwneud copi wrth gefn / Adfer"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Dewisiadau wrth gefn:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Gwneud copi wrth gefn o'r gronfa ddata"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Gwneud copi wrth gefn o ffeiliau"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Ategion"

#: inc/backup.php:71
msgid "Themes"
msgstr "Themes"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Llwythiadau"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Eraill (Unrhyw gyfeiriaduron eraill a geir y tu mewn i gynnwys wp)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Gwneud copi wrth gefn Nawr"

#: inc/backup.php:89
msgid "Time now"
msgstr "Amser nawr"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "LLWYDDIANT"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Dilewyd y copi wrth gefn yn llwyddiannus."

#: inc/backup.php:102
msgid "Ok"
msgstr "Iawn"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "FILES DILEU"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Ydych chi'n siŵr eich bod chi am ddileu'r copi wrth gefn hwn?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Canslo"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Cadarnhau"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "FILES RESTORE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Ydych chi'n siŵr eich bod chi am adfer y copi wrth gefn hwn?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Neges Log Olaf"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr ""
"Mae'n debyg bod y copi wrth gefn wedi llwyddo ac mae bellach wedi'i gwblhau."

#: inc/backup.php:171
msgid "No log message"
msgstr "Dim neges log"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Gwneud copi wrth gefn (au) presennol"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Dyddiad wrth gefn"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Data wrth gefn (cliciwch i lawrlwytho)"

#: inc/backup.php:190
msgid "Action"
msgstr "Gweithredu"

#: inc/backup.php:210
msgid "Today"
msgstr "Heddiw"

#: inc/backup.php:239
msgid "Restore"
msgstr "Adfer"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Dileu"

#: inc/backup.php:241
msgid "View Log"
msgstr "Gweld Log"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Ar hyn o bryd ni ddarganfuwyd copi wrth gefn (au)."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Camau gweithredu wrth gefn (au) dethol"

#: inc/backup.php:251
msgid "Select All"
msgstr "Dewiswch Bawb"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Dad-ddewis"

#: inc/backup.php:254
msgid "Note:"
msgstr "Nodyn:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Bydd ffeiliau wrth gefn o dan"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Cyfraniad Rheolwr Ffeil WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Nodyn: Mae'r rhain yn sgrinluniau demo. Prynwch Rheolwr Ffeil pro i "
"swyddogaethau Logiau."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Cliciwch i Brynu PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Prynu PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Golygu Logiau Ffeiliau"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Dadlwythwch Logiau Ffeiliau"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Llwythwch Logiau Ffeiliau"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Gosodiadau wedi'u cadw."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Gwrthod yr hysbysiad hwn."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Nid ydych wedi gwneud unrhyw newidiadau i gael eu cadw."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Llwybr Gwreiddiau Cyhoeddus"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Llwybr Rheolwr Gwreiddiau, gallwch newid yn ôl eich dewis."

#: inc/root.php:59
msgid "Default:"
msgstr "Rhagosodiad:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Newidiwch hwn yn ofalus, gall llwybr anghywir arwain at ategyn rheolwr "
"ffeiliau i fynd i lawr."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Galluogi Sbwriel?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Ar ôl galluogi sbwriel, bydd eich ffeiliau'n mynd i'r ffolder sbwriel."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Galluogi Ffeiliau i'w Llwytho i Lyfrgell y Cyfryngau?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Ar ôl galluogi hyn bydd pob ffeil yn mynd i lyfrgell y cyfryngau."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "Uchafswm maint a ganiateir ar adeg adfer copi wrth gefn cronfa ddata."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Cynyddwch werth y maes os ydych chi'n cael neges gwall ar adeg adfer copi "
"wrth gefn."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Arbed Newidiadau"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Gosodiadau - Cyffredinol"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Nodyn: Dim ond screenshot demo yw hwn. I gael gosodiadau, prynwch ein "
"fersiwn pro."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Yma gall admin roi mynediad i rolau defnyddwyr i ddefnyddio rheolwr "
"ffeiliau. Gall Gweinyddiaeth osod Ffolder Mynediad Diofyn a hefyd reoli "
"maint uwchlwytho rheolwr ffeiliau."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Gosodiadau - Golygydd cod"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Mae gan y Rheolwr Ffeil olygydd cod gyda sawl thema. Gallwch ddewis unrhyw "
"thema ar gyfer golygydd cod. Bydd yn arddangos pan fyddwch chi'n golygu "
"unrhyw ffeil. Hefyd gallwch ganiatáu modd sgrin lawn o olygydd cod."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Golygydd cod-View"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Gosodiadau - Cyfyngiadau Defnyddiwr"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Gall gweinyddiaeth gyfyngu ar weithredoedd unrhyw ddefnyddiwr. Hefyd cuddio "
"ffeiliau a ffolderau a gallant osod gwahanol lwybrau ffolderi gwahanol ar "
"gyfer gwahanol ddefnyddwyr."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Gosodiadau - Cyfyngiadau Rôl Defnyddiwr"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Gall gweinyddiaeth gyfyngu ar weithredoedd unrhyw ddefnyddiwr. Hefyd cuddio "
"ffeiliau a ffolderau a gallant osod gwahanol lwybrau ffolderi gwahanol ar "
"gyfer rolau gwahanol ddefnyddwyr."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Rheolwr Ffeiliau - Cod Byr"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "DEFNYDD:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Bydd yn dangos rheolwr ffeiliau ar y pen blaen. Gallwch reoli pob gosodiad o "
"osodiadau rheolwr ffeiliau. Bydd yn gweithio yr un peth â Rheolwr Ffeil WP "
"ôl-wyneb."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Bydd yn dangos rheolwr ffeiliau ar y pen blaen. Ond dim ond Gweinyddwr all "
"gael mynediad iddo a bydd yn rheoli o osodiadau rheolwr ffeiliau."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Paramedrau:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Bydd yn caniatáu i bob rôl gael mynediad i'r rheolwr ffeiliau ar y pen blaen "
"neu Gallwch chi ei ddefnyddio'n syml ar gyfer rolau defnyddiwr penodol fel y "
"caniatâd_roles = \"golygydd, awdur\" (wedi'i wahanu gan atalnod(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Yma \"prawf\" yw enw'r ffolder sydd wedi'i leoli ar y cyfeiriadur gwraidd, "
"neu gallwch roi llwybr ar gyfer is-ffolderi fel \"wp-content/plugins\". Os "
"gadewch yn wag neu'n wag bydd yn cyrchu'r holl ffolderi ar y cyfeiriadur "
"gwraidd. Diofyn: Cyfeiriadur gwraidd"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"ar gyfer mynediad i ganiatâd ysgrifennu ffeiliau, nodwch: gwir/anghywir, "
"rhagosodedig: ffug"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"i gael caniatâd i ddarllen ffeiliau, nodwch: gwir/anghywir, rhagosodedig: "
"gwir"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"bydd yn cuddio a grybwyllir yma. Nodyn: wedi'i wahanu gan goma(,). Diofyn: "
"Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Bydd yn cloi a grybwyllir mewn atalnodau. gallwch gloi mwy fel \".php,.css,."
"js\" ac ati. Diofyn: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* ar gyfer pob gweithrediad ac i ganiatáu rhywfaint o lawdriniaeth gallwch "
"sôn am enw gweithrediad fel, allowed_operations = \"llwytho i lawr, llwytho "
"i lawr\". Nodyn: wedi'i wahanu gan goma(,). Rhagosodedig: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Rhestr Gweithrediadau Ffeil:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Gwneud cyfeiriadur neu ffolder"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Gwneud ffeil"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Ail-enwi ffeil neu ffolder"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Dyblygu neu glonio ffolder neu ffeil"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Gludwch ffeil neu ffolder"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Gwahardd"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "I wneud archif neu sip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Detholiad archif neu ffeil wedi'i sipio"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Copïwch ffeiliau neu ffolderau"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Torri ffeil neu ffolder yn syml"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Golygu ffeil"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Tynnu neu ddileu ffeiliau a ffolderau"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Dadlwythwch ffeiliau"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Llwythwch ffeiliau i fyny"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Chwilio pethau"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Gwybodaeth am y ffeil"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Help"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Bydd yn gwahardd defnyddwyr penodol trwy roi eu cymalau wedi'u gwahanu "
"gan atalnodau (,). Os yw'r defnyddiwr yn Ban yna ni fydd yn gallu cyrchu "
"rheolwr ffeiliau wp yn y pen blaen."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Golwg UI Filemanager. Rhagosodiad: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Ffeil wedi'i haddasu neu Creu fformat dyddiad. Rhagosodiad: d M, Y h: i A."

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Rheolwr ffeiliau Iaith. Rhagosodiad: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "Thema Rheolwr Ffeil. Rhagosodiad: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Rheolwr Ffeiliau - Priodweddau System"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "Fersiwn PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Uchafswm maint uwchlwytho ffeiliau (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Postiwch uchafswm maint uwchlwytho ffeiliau (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Terfyn Cof (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Amserlen (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Porwr ac OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Newid Thema Yma:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Rhagosodiad"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Tywyll"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Golau"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Llwyd"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Croeso i'r Rheolwr Ffeiliau"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Rydyn ni'n caru gwneud ffrindiau newydd! Tanysgrifiwch isod ac rydym yn "
"addo\n"
"    rhoi'r wybodaeth ddiweddaraf i chi am ein ategion, diweddariadau, "
"diweddaraf\n"
"    bargeinion anhygoel ac ychydig o gynigion arbennig."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Rhowch Enw Cyntaf."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Rhowch yr Enw Diwethaf."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Rhowch y Cyfeiriad E-bost."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Gwirio"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Dim Diolch"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Telerau Gwasanaeth"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Polisi Preifatrwydd"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Arbed ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "iawn"

#~ msgid "Backup not found!"
#~ msgstr "Ni chafwyd copi wrth gefn!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Tynnu copi wrth gefn yn llwyddiannus!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Dim byd wedi'i ddewis ar gyfer copi wrth "
#~ "gefn</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Mater Diogelwch.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Gwneud copi wrth gefn o'r gronfa ddata."
#~ "</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Methu creu copi wrth gefn o'r gronfa "
#~ "ddata.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Gwneud copi wrth gefn o ategion.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Methodd copi wrth gefn ategion.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Gwneud copi wrth gefn o themâu.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Methodd y copi wrth gefn o themâu.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Llwythiadau wrth gefn wedi'u llwytho "
#~ "wedi'u gwneud.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Methodd y llwythiadau wrth gefn.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Eraill wrth gefn wedi'i wneud.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Methodd copi wrth gefn eraill.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Pawb Wedi'i Wneud</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Rheoli eich ffeiliau WP."

#~ msgid "Extensions"
#~ msgstr "Estyniadau"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Cyfrannwch rywfaint o rodd, i wneud ychwanegyn yn fwy sefydlog. Gallwch "
#~ "dalu faint o'ch dewis chi."
languages/wp-file-manager-te.po000064400000110066147361034410012442 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 11:51+0530\n"
"PO-Revision-Date: 2022-02-28 12:14+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: te\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "థీమ్‌ల బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "థీమ్‌లను పునరుద్ధరించడం సాధ్యం కాలేదు."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "అప్‌లోడ్‌ల బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "అప్‌లోడ్‌లను పునరుద్ధరించడం సాధ్యం కాలేదు."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "ఇతర బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "ఇతరులను పునరుద్ధరించడం సాధ్యం కాలేదు."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "ప్లగిన్‌ల బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "ప్లగిన్‌లను పునరుద్ధరించడం సాధ్యం కాలేదు."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "డేటాబేస్ బ్యాకప్ విజయవంతంగా పునరుద్ధరించబడింది."

#: file_folder_manager.php:286 file_folder_manager.php:297 file_folder_manager.php:588
#: file_folder_manager.php:592
msgid "All Done"
msgstr "అన్నీ పూర్తయ్యాయి"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "DB బ్యాకప్‌ని పునరుద్ధరించడం సాధ్యం కాలేదు."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "బ్యాకప్‌లు విజయవంతంగా తీసివేయబడ్డాయి!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "బ్యాకప్‌ని తీసివేయడం సాధ్యం కాలేదు!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "డేటాబేస్ బ్యాకప్ తేదీలో పూర్తయింది"

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "ప్లగిన్‌ల బ్యాకప్ తేదీలో పూర్తయింది"

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "థీమ్‌ల బ్యాకప్ తేదీలో పూర్తయింది"

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "అప్‌లోడ్‌ల బ్యాకప్ తేదీలో పూర్తయింది"

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "ఇతర బ్యాకప్ తేదీలో పూర్తయింది"

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "లాగ్‌లు"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "లాగ్‌లు ఏవీ కనుగొనబడలేదు!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "బ్యాకప్ కోసం ఏదీ ఎంచుకోబడలేదు"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "భద్రతా సమస్య."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "డేటాబేస్ బ్యాకప్ పూర్తయింది."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "డేటాబేస్ బ్యాకప్‌ని సృష్టించడం సాధ్యం కాలేదు."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "ప్లగిన్‌ల బ్యాకప్ పూర్తయింది."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "ప్లగిన్‌ల బ్యాకప్ విఫలమైంది."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "థీమ్‌ల బ్యాకప్ పూర్తయింది."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "థీమ్‌ల బ్యాకప్ విఫలమైంది."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "అప్‌లోడ్‌ల బ్యాకప్ పూర్తయింది."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "అప్‌లోడ్‌ల బ్యాకప్ విఫలమైంది."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "ఇతర బ్యాకప్ పూర్తయింది."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "ఇతర బ్యాకప్ విఫలమైంది."

#: file_folder_manager.php:761 file_folder_manager.php:762 lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP ఫైల్ మేనేజర్"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "సెట్టింగులు"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "ప్రాధాన్యతలు"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "సిస్టమ్ గుణాలు"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "షార్ట్ - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "బ్యాకప్/పునరుద్ధరణ"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "ప్రోని కొనుగోలు చేయండి"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "దానం"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "డౌన్‌లోడ్ చేయడానికి ఫైల్ ఉనికిలో లేదు."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "చెల్లని భద్రతా కోడ్."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "బ్యాకప్ ఐడి లేదు."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "పరామితి రకం లేదు."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "అవసరమైన పారామీటర్‌లు లేవు."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum "
"allowed size  from Preferences settings."
msgstr ""
"లోపం: డేటాబేస్ బ్యాకప్ పరిమాణం భారీగా ఉన్నందున బ్యాకప్‌ని పునరుద్ధరించడం సాధ్యం కాలేదు. దయచేసి ప్రాధాన్యతల సెట్టింగ్‌ల నుండి అనుమతించబడిన గరిష్ట "
"పరిమాణాన్ని పెంచడానికి ప్రయత్నించండి."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "తొలగించడానికి బ్యాకప్(లు) ఎంచుకోండి!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "మీరు ఎంచుకున్న బ్యాకప్(ల)ని ఖచ్చితంగా తీసివేయాలనుకుంటున్నారా?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "బ్యాకప్ అమలవుతోంది, దయచేసి వేచి ఉండండి"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "పునరుద్ధరణ అమలవుతోంది, దయచేసి వేచి ఉండండి"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "బ్యాకప్ కోసం ఏదీ ఎంచుకోబడలేదు."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP ఫైల్ మేనేజర్ - బ్యాకప్/పునరుద్ధరణ"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "బ్యాకప్ ఎంపికలు:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "డేటాబేస్ బ్యాకప్"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "ఫైల్స్ బ్యాకప్"

#: inc/backup.php:68
msgid "Plugins"
msgstr "ప్లగిన్లు"

#: inc/backup.php:71
msgid "Themes"
msgstr "థీమ్స్"

#: inc/backup.php:74
msgid "Uploads"
msgstr "అప్‌లోడ్‌లు"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "ఇతరులు (wp-content లోపల ఏవైనా ఇతర డైరెక్టరీలు కనుగొనబడ్డాయి)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "భద్రపరచు"

#: inc/backup.php:89
msgid "Time now"
msgstr "ఇప్పుడు సమయం"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "విజయం"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "బ్యాకప్ విజయవంతంగా తొలగించబడింది."

#: inc/backup.php:102
msgid "Ok"
msgstr "అలాగే"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "ఫైల్‌లను తొలగించండి"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "మీరు ఖచ్చితంగా ఈ బ్యాకప్‌ని తొలగించాలనుకుంటున్నారా?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "రద్దు చేయండి"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "నిర్ధారించండి"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "ఫైల్‌లను పునరుద్ధరించండి"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "మీరు ఖచ్చితంగా ఈ బ్యాకప్‌ని పునరుద్ధరించాలనుకుంటున్నారా?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "చివరి లాగ్ సందేశం"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "బ్యాకప్ స్పష్టంగా విజయవంతమైంది మరియు ఇప్పుడు పూర్తయింది."

#: inc/backup.php:171
msgid "No log message"
msgstr "లాగ్ సందేశం లేదు"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "ఇప్పటికే ఉన్న బ్యాకప్(లు)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "బ్యాకప్ తేదీ"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "బ్యాకప్ డేటా (డౌన్‌లోడ్ చేయడానికి క్లిక్ చేయండి)"

#: inc/backup.php:190
msgid "Action"
msgstr "చర్య"

#: inc/backup.php:210
msgid "Today"
msgstr "ఈరోజు"

#: inc/backup.php:239
msgid "Restore"
msgstr "పునరుద్ధరించు"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "తొలగించు"

#: inc/backup.php:241
msgid "View Log"
msgstr "లాగ్ చూడండి"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "ప్రస్తుతం బ్యాకప్(లు) ఏవీ కనుగొనబడలేదు."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "ఎంచుకున్న బ్యాకప్(లు)పై చర్యలు"

#: inc/backup.php:251
msgid "Select All"
msgstr "అన్ని ఎంచుకోండి"

#: inc/backup.php:252
msgid "Deselect"
msgstr "ఎంపికను తీసివేయండి"

#: inc/backup.php:254
msgid "Note:"
msgstr "గమనిక:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "బ్యాకప్ ఫైల్‌లు కింద ఉంటాయి"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP ఫైల్ మేనేజర్ సహకారం"

#: inc/logs.php:7
msgid "Note: These are demo screenshots. Please buy File Manager pro to Logs functions."
msgstr "గమనిక: ఇవి డెమో స్క్రీన్‌షాట్‌లు. దయచేసి ఫైల్ మేనేజర్ ప్రో టు లాగ్స్ ఫంక్షన్‌లను కొనుగోలు చేయండి."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "PROని కొనుగోలు చేయడానికి క్లిక్ చేయండి"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27 inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "PRO ను కొనండి"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "ఫైల్స్ లాగ్‌లను సవరించండి"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "ఫైల్స్ లాగ్‌లను డౌన్‌లోడ్ చేయండి"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "ఫైల్స్ లాగ్‌లను అప్‌లోడ్ చేయండి"

#: inc/root.php:43
msgid "Settings saved."
msgstr "సెట్టింగ్‌లు సేవ్ చేయబడ్డాయి."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "ఈ నోటీసును తీసివేయండి."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "మీరు సేవ్ చేయడానికి ఎలాంటి మార్పులు చేయలేదు."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "పబ్లిక్ రూట్ పాత్"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "ఫైల్ మేనేజర్ రూట్ పాత్, మీరు మీ ఎంపిక ప్రకారం మార్చవచ్చు."

#: inc/root.php:59
msgid "Default:"
msgstr "డిఫాల్ట్:"

#: inc/root.php:60
msgid "Please change this carefully, wrong path can lead file manager plugin to go down."
msgstr "దయచేసి దీన్ని జాగ్రత్తగా మార్చండి, తప్పు మార్గం ఫైల్ మేనేజర్ ప్లగ్‌ఇన్‌ను తగ్గించడానికి దారి తీస్తుంది."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "ట్రాష్‌ని ప్రారంభించాలా?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "ట్రాష్‌ని ప్రారంభించిన తర్వాత, మీ ఫైల్‌లు ట్రాష్ ఫోల్డర్‌కి వెళ్తాయి."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "మీడియా లైబ్రరీకి ఫైల్‌ల అప్‌లోడ్‌ను ప్రారంభించాలా?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "దీన్ని ప్రారంభించిన తర్వాత అన్ని ఫైల్‌లు మీడియా లైబ్రరీకి వెళ్తాయి."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "డేటాబేస్ బ్యాకప్ పునరుద్ధరణ సమయంలో అనుమతించబడిన గరిష్ట పరిమాణం."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid "Please increase field value if you are getting error message at the time of backup restore."
msgstr "బ్యాకప్ పునరుద్ధరణ సమయంలో మీకు దోష సందేశం వస్తుంటే దయచేసి ఫీల్డ్ విలువను పెంచండి."

#: inc/root.php:90
msgid "Save Changes"
msgstr "మార్పులను ఊంచు"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "సెట్టింగులు - జనరల్"

#: inc/settings.php:11 inc/settings.php:26
msgid "Note: This is just a demo screenshot. To get settings please buy our pro version."
msgstr "గమనిక: ఇది కేవలం డెమో స్క్రీన్షాట్. సెట్టింగులను పొందడానికి దయచేసి మా అనుకూల సంస్కరణను కొనుగోలు చేయండి."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also "
"control upload size of filemanager."
msgstr ""
"ఇక్కడ నిర్వాహకుడు ఫైల్ మేనేజర్ను ఉపయోగించడానికి వినియోగదారు పాత్రలకు ప్రాప్తిని ఇవ్వవచ్చు. అడ్మిన్ డిఫాల్ట్ యాక్సెస్ ఫోల్డర్ సెట్ చేయవచ్చు మరియు ఫైల్ మేనేజర్ "
"అప్లోడ్ పరిమాణం నియంత్రించడానికి."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "సెట్టింగులు - కోడ్ ఎడిటర్"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any theme for code editor. It will "
"display when you edit any file. Also you can allow fullscreen mode of code editor."
msgstr ""
"ఫైల్ మేనేజర్ బహుళ థీమ్స్తో ఒక కోడ్ ఎడిటర్ను కలిగి ఉంది. మీరు కోడ్ ఎడిటర్ కోసం ఏ థీమ్ ఎంచుకోవచ్చు. మీరు ఏదైనా ఫైల్ను సవరించినప్పుడు ఇది "
"ప్రదర్శిస్తుంది. మీరు కోడ్ ఎడిటర్ పూర్తిస్క్రీన్ మోడ్ను కూడా అనుమతించవచ్చు."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "కోడ్ ఎడిటర్ వీక్షణ"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "సెట్టింగులు - వాడుకరి పరిమితులు"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can set different - different "
"folders paths for different users."
msgstr ""
"అడ్మిన్ ఏ యూజర్ యొక్క చర్యలు పరిమితం చేయవచ్చు. వేర్వేరు వినియోగదారుల కోసం వేర్వేరు ఫోల్డర్ల మార్గాలు - ఫైల్లను మరియు ఫోల్డర్లను కూడా దాచండి మరియు "
"వివిధ సెట్ చేయవచ్చు."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "సెట్టింగులు - వినియోగదారు పాత్ర పరిమితులు"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and can set different - different "
"folders paths for different users roles."
msgstr ""
"అడ్మిన్ ఏ వినియోగదారుని యొక్క చర్యలను నియంత్రించగలదు. విభిన్న వినియోగదారుల పాత్రలకు వేర్వేరు ఫోల్డర్ల మార్గాలు - ఫైల్లను మరియు ఫోల్డర్లను కూడా "
"దాచండి మరియు వివిధ సెట్ చేయవచ్చు."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "ఫైల్ మేనేజర్ - షార్ట్ కోడ్"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17 inc/shortcode_docs.php:19
msgid "USE:"
msgstr "వా డు:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from file manager settings. It will "
"work same as backend WP File Manager."
msgstr ""
"ఇది ఫ్రంట్ ఎండ్‌లో ఫైల్ మేనేజర్‌ని చూపుతుంది. మీరు ఫైల్ మేనేజర్ సెట్టింగ్‌ల నుండి అన్ని సెట్టింగ్‌లను నియంత్రించవచ్చు. ఇది బ్యాకెండ్ WP ఫైల్ మేనేజర్ వలె పని "
"చేస్తుంది."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it and will control from file "
"manager settings."
msgstr "ఇది ఫ్రంట్ ఎండ్‌లో ఫైల్ మేనేజర్‌ని చూపుతుంది. కానీ అడ్మినిస్ట్రేటర్ మాత్రమే దీన్ని యాక్సెస్ చేయగలరు మరియు ఫైల్ మేనేజర్ సెట్టింగ్‌ల నుండి నియంత్రిస్తారు."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "పారామితులు:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can simple use for particular user roles "
"as like allowed_roles=\"editor,author\" (seprated by comma(,))"
msgstr ""
"ఇది అన్ని పాత్రలను ఫ్రంట్ ఎండ్‌లో ఫైల్ మేనేజర్‌ను యాక్సెస్ చేయడానికి అనుమతిస్తుంది లేదా మీరు నిర్దిష్ట వినియోగదారు పాత్రల కోసం అనుమతించిన_రోల్స్ = "
"\"ఎడిటర్, రచయిత\" (కామా(,) ద్వారా వేరుచేయబడింది) వంటి వాటిని సులభంగా ఉపయోగించవచ్చు."

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or you can give path for sub "
"folders as like \"wp-content/plugins\". If leave blank or empty it will access all folders on root "
"directory. Default: Root directory"
msgstr ""
"ఇక్కడ \"పరీక్ష\" అనేది రూట్ డైరెక్టరీలో ఉన్న ఫోల్డర్ పేరు, లేదా మీరు \"wp-content/plugins\" వంటి సబ్ ఫోల్డర్‌ల కోసం పాత్ ఇవ్వవచ్చు. ఖాళీగా "
"లేదా ఖాళీగా ఉంచినట్లయితే అది రూట్ డైరెక్టరీలోని అన్ని ఫోల్డర్‌లను యాక్సెస్ చేస్తుంది. డిఫాల్ట్: రూట్ డైరెక్టరీ"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "ఫైళ్ల అనుమతులను వ్రాయడానికి యాక్సెస్ కోసం, గమనిక: నిజం/తప్పు, డిఫాల్ట్: తప్పు"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "ఫైల్‌లను చదవడానికి యాక్సెస్ కోసం అనుమతి, గమనిక: నిజం/తప్పు, డిఫాల్ట్: నిజం"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "ఇది ఇక్కడ పేర్కొన్న దాచబడుతుంది. గమనిక: కామా(,)తో వేరు చేయబడింది. డిఫాల్ట్: శూన్యం"

#: inc/shortcode_docs.php:36
msgid "It will lock mentioned in commas. you can lock more as like \".php,.css,.js\" etc. Default: Null"
msgstr "ఇది కామాలో పేర్కొన్న లాక్ చేయబడుతుంది. మీరు \".php,.css,.js\" వంటి మరిన్నింటిని లాక్ చేయవచ్చు. డిఫాల్ట్: శూన్యం"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation name as like, allowed_operations="
"\"upload,download\". Note: seprated by comma(,). Default: *"
msgstr ""
"* అన్ని కార్యకలాపాలకు మరియు కొంత ఆపరేషన్‌ను అనుమతించడానికి మీరు ఆపరేషన్ పేరును ఇలా పేర్కొనవచ్చు, అనుమతి_ఆపరేషన్స్=\"అప్‌లోడ్, డౌన్‌లోడ్\". గమనిక: "
"కామా(,)తో వేరు చేయబడింది. డిఫాల్ట్: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "ఫైల్ ఆపరేషన్ల జాబితా:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "డైరెక్టరీ లేదా ఫోల్డర్‌ని రూపొందించండి"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "ఫైల్ చేయండి"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "ఫైల్ లేదా ఫోల్డర్ పేరు మార్చండి"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "ఫోల్డర్ లేదా ఫైల్‌ను నకిలీ చేయండి లేదా క్లోన్ చేయండి"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "ఫైల్ లేదా ఫోల్డర్‌ను అతికించండి"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "నిషేధించండి"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "ఆర్కైవ్ లేదా జిప్ చేయడానికి"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "ఆర్కైవ్ లేదా జిప్ చేసిన ఫైల్‌ను సంగ్రహించండి"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "ఫైల్‌లు లేదా ఫోల్డర్‌లను కాపీ చేయండి"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "ఫైల్ లేదా ఫోల్డర్‌ను సులభంగా కత్తిరించండి"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "ఫైల్‌ని సవరించండి"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "ఫైల్‌లు మరియు ఫోల్డర్‌లను తీసివేయండి లేదా తొలగించండి"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "ఫైల్‌లను డౌన్‌లోడ్ చేయండి"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "ఫైల్లను అప్లోడ్ చేయండి"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "విషయాలను శోధించండి"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "ఫైల్ సమాచారం"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "సహాయం"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they "
"will not able to access wp file manager on front end."
msgstr ""
"-> ఇది నిర్దిష్ట వినియోగదారుల ఐడిలను కామాలతో (,) వేరు చేయడం ద్వారా నిషేధిస్తుంది. వినియోగదారు నిషేధించబడితే, వారు ఫ్రంట్ ఎండ్‌లో wp ఫైల్ మేనేజర్‌ని యాక్సెస్ "
"చేయలేరు."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> ఫైల్‌మేనేజర్ UI వీక్షణ. డిఫాల్ట్: గ్రిడ్"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> ఫైల్ సవరించబడింది లేదా తేదీ ఆకృతిని సృష్టించండి. డిఫాల్ట్: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> ఫైల్ మేనేజర్ భాష. డిఫాల్ట్: ఇంగ్లీష్(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> ఫైల్ మేనేజర్ థీమ్. డిఫాల్ట్: కాంతి"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "ఫైల్ మేనేజర్ - సిస్టమ్ గుణాలు"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP సంస్కరణ"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "గరిష్ట ఫైలు అప్లోడ్ పరిమాణం (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "గరిష్ట ఫైలు అప్లోడ్ పరిమాణం పోస్ట్ (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "మెమరీ పరిమితి (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "సమయం ముగిసింది (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr " బ్రౌజర్ మరియు OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "ఇక్కడ థీమ్‌ను మార్చండి:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "డిఫాల్ట్"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "చీకటి"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "కాంతి"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "బూడిద రంగు"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "ఫైల్ మేనేజర్‌కి స్వాగతం"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"కొత్త స్నేహితులను చేసుకోవడం మాకు చాలా ఇష్టం! దిగువన సబ్‌స్క్రైబ్ చేసుకోండి మరియు మా తాజా కొత్త ప్లగిన్‌లు, అప్‌డేట్‌లు, అద్భుతమైన డీల్‌లు మరియు కొన్ని "
"ప్రత్యేక ఆఫర్‌లతో మిమ్మల్ని తాజాగా ఉంచుతామని మేము హామీ ఇస్తున్నాము."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "దయచేసి మొదటి పేరును నమోదు చేయండి."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "దయచేసి చివరి పేరును నమోదు చేయండి."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "దయచేసి ఇమెయిల్ చిరునామాను నమోదు చేయండి."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "ధృవీకరించండి"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "లేదు ధన్యవాదాలు"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "సేవా నిబంధనలు"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "గోప్యతా విధానం"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "సేవ్ చేస్తోంది..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "అలాగే"

#~ msgid "Manage your WP files."
#~ msgstr "మీ WP ఫైళ్ళను నిర్వహించండి."

#~ msgid "Extensions"
#~ msgstr "పొడిగింపులు"

#~ msgid "Please contribute some donation, to make plugin more stable. You can pay amount of your choice."
#~ msgstr "ప్లగ్ఇన్ మరింత స్థిరంగా చేయడానికి, కొంత విరాళం ఇవ్వండి. మీరు మీ ఎంపిక మొత్తం చెల్లించవచ్చు."
languages/wp-file-manager-bn_BD.mo000064400000067521147361034410013002 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�\( M*\n,��,k�-i�-c.gp.��.��0�G2��2�3��3{%4��4%956_55�5d�5U16]�6N�6+47[`7�7>�7878T8@d80�8/�89X9tu9#�9:+:RA:B�:��:X;k;;)�;.�;�;6</=<cm<9�<?=uK=6�=g�==`?f�?@@hF@��@XlA6�CI�C"FDiDvD#�D�F�H/�HI�!K��K��M#CO	gO	qOR{O&�O��O��P>QNXQG�QV�QFR0cR8�R�R��R��Sk�Tn"U�U�U��UhoVE�VIW�hW+�WXF,XIsXC�X&Y�(Y��Y�ZY[Bf[R�[��[o}\�\(	]&2]DY]_�]`�]+_^o�^�^=_3L_8�_1�_5�_f!`�`4�`'�`X�`YQa,�a$�aM�a1Kb)}b{�b#ck0cI�cF�cZ-d�d-�dY�d'e.eXEeF�ea�eTGf`�fH�fZFg0�g�g�g_h<khL�h��h|i�iA�iz�iQmj��jTFlx�l�m��m�wn}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-25 15:46+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: bn_BD
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e;esc_attr__
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* সমস্ত অপারেশনের জন্য এবং কিছু অপারেশনের অনুমতি দেওয়ার জন্য আপনি অপারেশনের নাম উল্লেখ করতে পারেন যেমন, অনুমোদিত_অপারেশন="আপলোড, ডাউনলোড"। দ্রষ্টব্য: কমা (,) দ্বারা পৃথক করা হয়েছে। ডিফল্ট: *-> এটি নির্দিষ্ট ব্যবহারকারীদের কেবলমাত্র কমা (,) দ্বারা বিভক্ত করে তাদের আইডিগুলি নিষিদ্ধ করবে। যদি ব্যবহারকারী নিষিদ্ধ হন তবে তারা সামনের প্রান্তে ডাব্লুপি ফাইল ফাইল ব্যবস্থাপক অ্যাক্সেস করতে পারবেন না।-> ফাইল ম্যানেজার থিম। ডিফল্ট: হালকা-> ফাইল সংশোধিত বা তারিখের ফর্ম্যাট তৈরি করুন। ডিফল্ট: ডি এম, ওয়াই এইচ: আই এ-> ফাইল ম্যানেজার ভাষা। ডিফল্ট: ইংরেজি (এন)-> ফাইল ম্যানেজার ইউআই ভিউ। ডিফল্ট: গ্রিডকর্মনির্বাচিত ব্যাকআপ (গুলি) এর উপর ক্রিয়াঅ্যাডমিন যেকোন ব্যবহারকারীর কার্যক্রম সীমাবদ্ধ করতে পারে। এছাড়াও ফাইল এবং ফোল্ডার লুকান এবং বিভিন্ন সেট করতে পারেন - বিভিন্ন ব্যবহারকারীর জন্য বিভিন্ন ফোল্ডার পাথঅ্যাডমিন কোনও userrole এর কার্যকলাপকে সীমিত করতে পারে। এছাড়াও ফাইল এবং ফোল্ডার লুকান এবং বিভিন্ন সেট করতে পারেন - বিভিন্ন ব্যবহারকারীর ভূমিকা জন্য বিভিন্ন ফোল্ডার পাথ।ট্র্যাশ সক্ষম করার পরে আপনার ফাইলগুলি ট্র্যাশ ফোল্ডারে যাবে।এটি সক্ষম করার পরে সমস্ত ফাইল মিডিয়া লাইব্রেরিতে যাবে।সব শেষআপনি কি নির্বাচিত ব্যাকআপ (গুলি) সরানোর বিষয়ে নিশ্চিত?আপনি কি নিশ্চিত যে আপনি এই ব্যাকআপটি মুছতে চান?আপনি কি নিশ্চিত যে আপনি এই ব্যাকআপটি পুনরুদ্ধার করতে চান?ব্যাকআপ তারিখএখনি ব্যাকআপ করে নিনব্যাকআপ বিকল্পগুলি:ব্যাকআপ ডেটা (ডাউনলোড করতে ক্লিক করুন)ব্যাকআপ ফাইলগুলি এর অধীনে থাকবেব্যাকআপ চলছে, দয়া করে অপেক্ষা করুনব্যাকআপ সফলভাবে মোছা হয়েছে।ব্যাকআপ/রিস্টোরব্যাকআপগুলি সফলভাবে সরানো হয়েছে!নিষেধাজ্ঞাব্রাউজার এবং ওএস (HTTP_USER_AGENT)প্রো কিনুনপ্রো কিনুনবাতিলথিম এখানে পরিবর্তন করুন:PRO কিনতে ক্লিক করুনকোড-সম্পাদক দেখুনকনফার্মফাইল বা ফোল্ডারগুলি অনুলিপি করুনবর্তমানে কোনও ব্যাকআপ (গুলি) পাওয়া যায় নি।ফাইল মুছে দিনগাডাটাবেস ব্যাকআপতারিখে ডাটাবেস ব্যাকআপ হয়েছে ডাটাবেস ব্যাকআপ সম্পন্ন.ডাটাবেস ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।ডিফল্টডিফল্ট:মুছে ফেলানির্বাচন না করাএই নোটিশ বাতিল কর.দান করাফাইল লগ ডাউনলোড করুনফাইল ডাউনলোড করুনফোল্ডার বা ফাইলটিকে নকল বা ক্লোন করুনফাইল লগ সম্পাদনা করুনএকটি ফাইল সম্পাদনা করুনমিডিয়া লাইব্রেরিতে ফাইল আপলোড সক্ষম করবেন?ট্র্যাশ সক্ষম করবেন?ত্রুটি: ব্যাকআপ পুনরুদ্ধার করতে অক্ষম কারণ ডাটাবেস ব্যাকআপ আকারে ভারী৷ পছন্দ সেটিংস থেকে সর্বোচ্চ অনুমোদিত আকার বাড়ানোর চেষ্টা করুন.বিদ্যমান ব্যাকআপ (গুলি)সংরক্ষণাগার বা জিপ করা ফাইলটি বের করুনফাইল ম্যানেজার - শর্টকোডফাইল ম্যানেজার - সিস্টেম বৈশিষ্ট্যাবলীফাইল ম্যানেজার রুট পাথ, আপনি আপনার পছন্দ অনুযায়ী পরিবর্তন করতে পারেন।ফাইল ম্যানেজারের একাধিক থিম সঙ্গে একটি কোড সম্পাদক আছে। আপনি কোড সম্পাদক জন্য কোন থিম নির্বাচন করতে পারেন। যখন আপনি কোনও ফাইল সম্পাদনা করবেন তখন এটি প্রদর্শিত হবে। এছাড়াও আপনি কোড সম্পাদক পূর্ণস্ক্রীন মোড অনুমতি দিতে পারেন।ফাইল অপারেশন তালিকা:ডাউনলোড করার জন্য ফাইল নেই।ফাইল ব্যাকআপধূসরসহায়তাএখানে "test" হল ফোল্ডারের নাম যা রুট ডিরেক্টরিতে অবস্থিত, অথবা আপনি "wp-content/plugins" এর মতো সাব ফোল্ডারগুলির জন্য পাথ দিতে পারেন। খালি বা খালি রাখলে এটি রুট ডিরেক্টরির সমস্ত ফোল্ডার অ্যাক্সেস করবে। ডিফল্ট: রুট ডিরেক্টরিএখানে ফাইল ম্যানেজার ব্যবহার করার জন্য প্রশাসক ব্যবহারকারীর ভূমিকা অ্যাক্সেস করতে পারেন। অ্যাডমিন ডিফল্ট অ্যাক্সেস ফোল্ডার নির্ধারণ করতে পারে এবং ফাইলম্যানডারের আপলোড আকার নিয়ন্ত্রণ করতে পারে।ফাইল তথ্যঅবৈধ সুরক্ষা কোড।এটি সমস্ত ভূমিকাকে সামনের প্রান্তে ফাইল ম্যানেজার অ্যাক্সেস করার অনুমতি দেবে বা আপনি অনুমোদিত_roles="সম্পাদক, লেখক" (কমা দ্বারা পৃথক করা(,)) এর মতো নির্দিষ্ট ব্যবহারকারীর ভূমিকার জন্য সহজ ব্যবহার করতে পারেনএটি কমায় উল্লেখিত লক হবে। আপনি আরও লক করতে পারেন যেমন ".php,.css,.js" ইত্যাদি। ডিফল্ট: শূন্যএটি সামনের প্রান্তে ফাইল ম্যানেজার দেখাবে। কিন্তু শুধুমাত্র অ্যাডমিনিস্ট্রেটর এটি অ্যাক্সেস করতে পারে এবং ফাইল ম্যানেজার সেটিংস থেকে নিয়ন্ত্রণ করবে।এটি সামনের প্রান্তে ফাইল ম্যানেজার দেখাবে। আপনি ফাইল ম্যানেজার সেটিংস থেকে সমস্ত সেটিংস নিয়ন্ত্রণ করতে পারেন। এটি ব্যাকএন্ড WP ফাইল ম্যানেজারের মতোই কাজ করবে।শেষ লগ বার্তাআলোলগসডিরেক্টরি বা ফোল্ডার তৈরি করুনফাইল তৈরি করুনডাটাবেস ব্যাকআপ পুনরুদ্ধারের সময় সর্বাধিক অনুমোদিত আকার।সর্বাধিক ফাইল আপলোড আকার (আপলোড_ম্যাক্স_ফাইলসাইজ)মেমরি সীমা (মেমরি_লিমিট)হারিয়ে যাওয়া ব্যাকআপ আইডি।অনুপস্থিত পরামিতি প্রকার।প্রয়োজনীয় পরামিতি অনুপস্থিত।না ধন্যবাদকোনও লগ বার্তা নেইকোন লগ পাওয়া যায় নি!বিঃদ্রঃ:দ্রষ্টব্য: এগুলি ডেমো স্ক্রিনশট। লগ ফাংশনগুলির জন্য দয়া করে ফাইল ম্যানেজারটি কিনুন।দ্রষ্টব্য: এটি শুধু একটি ডেমো স্ক্রিনশট। সেটিংস পেতে আমাদের প্রো সংস্করণ কিনতে দয়া করে।ব্যাকআপের জন্য কিছুই নির্বাচন করা হয়নিব্যাকআপের জন্য কিছুই নির্বাচন করা হয়নি।ঠিক আছেঠিক আছেঅন্যান্য (ডাব্লুপি-কনটেন্টের মধ্যে অন্য কোনও ডিরেক্টরি পাওয়া যায়)অন্যদের ব্যাকআপ তারিখে সম্পন্ন হয়েছে অন্যান্য ব্যাকআপ সম্পন্ন.অন্য ব্যাকআপ ব্যর্থ হয়েছে.অন্যদের ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।পিএইচপি সংস্করণপরামিতি:একটি ফাইল বা ফোল্ডার আটকানইমেল ঠিকানা লিখুন দয়া করে।দয়া করে প্রথম নাম লিখুন।শেষ নাম লিখুন।দয়া করে এটি সাবধানে পরিবর্তন করুন, ভুল পথ ফাইল ম্যানেজার প্লাগইনকে নামতে পারে।ব্যাকআপ পুনরুদ্ধারের সময় আপনি ত্রুটি বার্তা পেয়ে থাকলে অনুগ্রহ করে ক্ষেত্রের মান বাড়ান৷প্লাগইনসতারিখে প্লাগিন ব্যাকআপ হয়ে গেছে প্লাগইন ব্যাকআপ সম্পন্ন.প্লাগইন ব্যাকআপ ব্যর্থ হয়েছে.প্লাগিন ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।সর্বাধিক ফাইল আপলোড আকার পোস্ট করুন (post_max_size)পছন্দসমূহগোপনীয়তা নীতিপাবলিক রুট পাথফাইলগুলি পুনরুদ্ধার করুনফাইল এবং ফোল্ডারগুলি মুছুন বা মুছুনএকটি ফাইল বা ফোল্ডারটির নতুন নাম দিনপুনরুদ্ধার করুনপুনরুদ্ধার চলছে, অনুগ্রহ করে অপেক্ষা করুনসাফল্যপরিবর্তনগুলোর সংরক্ষনসংরক্ষণ করা হচ্ছে ...জিনিস অনুসন্ধান করুননিরাপত্তা সমস্যা।সমস্ত নির্বাচন করুনমুছে ফেলার জন্য ব্যাকআপ নির্বাচন করুন!সেটিংসসেটিংস - কোড-সম্পাদকসেটিংস - সাধারণসেটিংস - ব্যবহারকারীর সীমাবদ্ধতাসেটিংস - ব্যবহারকারীর ভূমিকা বাধাসেটিংস সংরক্ষিত.শর্টকোড - প্রোসরল একটি ফাইল বা ফোল্ডার কাটাপদ্ধতির বৈশিষ্ট্যসেবা পাবার শর্তব্যাকআপটি দৃশ্যত সফল হয়েছে এবং এখন সম্পূর্ণ।থিমসথিমগুলির ব্যাকআপ তারিখে সম্পন্ন হয়েছে থিম ব্যাকআপ সম্পন্ন হয়েছে.থিম ব্যাকআপ ব্যর্থ হয়েছে.থিমস ব্যাকআপ সফলভাবে পুনরুদ্ধার।সময় এখনসময়সীমা (max_execution_time)একটি সংরক্ষণাগার বা জিপ তৈরি করতেআজব্যবহার:ডাটাবেস ব্যাকআপ তৈরি করতে অক্ষম।ব্যাকআপ সরিয়ে দিতে অক্ষম!ডিবি ব্যাকআপ পুনরুদ্ধার করতে অক্ষম।অন্যদের পুনরুদ্ধার করতে অক্ষম।প্লাগইনগুলি পুনরুদ্ধার করতে অক্ষম।থিম পুনরুদ্ধার করতে অক্ষম।আপলোডগুলি পুনরুদ্ধার করতে অক্ষম।ফাইল লগ আপলোড করুনফাইল আপলোডআপলোডগুলিতারিখে আপলোডগুলি ব্যাকআপ হয়ে গেছে আপলোড ব্যাকআপ সম্পন্ন.আপলোড ব্যাকআপ ব্যর্থ হয়েছে.আপলোডগুলি ব্যাকআপ সফলভাবে পুনরুদ্ধার করা হয়েছে।যাচাই করুনলগ দেখুনডাব্লুপি ফাইল ম্যানেজারডাব্লুপি ফাইল ম্যানেজার - ব্যাকআপ / পুনরুদ্ধারডাব্লুপি ফাইল ম্যানেজার অবদানআমরা নতুন বন্ধু বানাতে ভালোবাসি! নীচে সাবস্ক্রাইব এবং আমরা প্রতিশ্রুতি
  আমাদের সর্বশেষ নতুন প্লাগিন, আপডেট,
  দুর্দান্ত ডিল এবং কয়েকটি বিশেষ অফার।ফাইল ম্যানেজারে আপনাকে স্বাগতমআপনি সংরক্ষণ করার জন্য কোনও পরিবর্তন করেননি।ফাইল পড়ার অনুমতি অ্যাক্সেসের জন্য, নোট: সত্য/মিথ্যা, ডিফল্ট: সত্যফাইল লেখার অনুমতির অ্যাক্সেসের জন্য, নোট: সত্য/মিথ্যা, ডিফল্ট: মিথ্যাএটা এখানে উল্লেখ লুকানো হবে. দ্রষ্টব্য: কমা (,) দ্বারা পৃথক করা হয়েছে। ডিফল্ট: শূন্যlanguages/wp-file-manager-nl_NL.po000064400000234426147361034410013043 0ustar00msgid ""
msgstr ""
"Project-Id-Version: Theme Editor\n"
"POT-Creation-Date: 2022-02-28 10:59+0530\n"
"PO-Revision-Date: 2022-02-28 11:05+0530\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Thema's back-up succesvol hersteld."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Kan thema's niet herstellen."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Uploadt back-up succesvol hersteld."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Kan uploads niet herstellen."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Anderen back-up succesvol hersteld."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Kan anderen niet herstellen."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Back-up van plug-ins succesvol hersteld."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Kan plug-ins niet herstellen."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Databaseback-up succesvol hersteld."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Helemaal klaar"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Kan DB-back-up niet herstellen."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Back-ups succesvol verwijderd!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Kan back-up niet verwijderen!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Database back-up gedaan op datum "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Back-up van plug-ins gedaan op datum "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Back-up van thema's gedaan op datum "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Uploads back-up gedaan op datum "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Anderen back-up gedaan op datum "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Logboeken"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Anderen back-up gedaan op datum"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Niets geselecteerd voor back-up"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Beveiligingsprobleem."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Databaseback-up gedaan."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Kan geen databaseback-up maken."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Back-up van plug-ins gedaan."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Back-up van plug-ins is mislukt."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Thema's back-up gedaan."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Back-up van thema's is mislukt."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Uploads back-up gedaan."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Uploaden back-up mislukt."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Anderen hebben een back-up gemaakt."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Anderen back-up mislukt."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP Bestandsbeheer"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Instellingen"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "Voorkeuren"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Systeem eigenschappen"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Backup herstel"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Koop Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "Doneren"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Bestand bestaat niet om te downloaden."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Ongeldige beveiligings code."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Ontbrekende back-up-ID."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Ontbrekend parametertype."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Ontbrekende vereiste parameters."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Fout: kan back-up niet herstellen omdat databaseback-up zwaar is. Probeer de "
"maximaal toegestane grootte te vergroten via de voorkeursinstellingen."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Selecteer back-up(s) om te verwijderen!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Weet u zeker dat u de geselecteerde back-up(s) wilt verwijderen?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Back-up wordt uitgevoerd, even geduld a.u.b."

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Het terugzetten wordt uitgevoerd, even geduld a.u.b."

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Niets geselecteerd voor back-up."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP Bestandsbeheer - Back-up/Herstellen"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Back-upopties:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Database back-up"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Bestandsback-up"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Plug-ins"

#: inc/backup.php:71
msgid "Themes"
msgstr "Thema's"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Uploads"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Anderen (alle andere mappen gevonden in wp-content)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Nu backuppen"

#: inc/backup.php:89
msgid "Time now"
msgstr "Tijd nu"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "SUCCES"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Back-up succesvol verwijderd."

#: inc/backup.php:102
msgid "Ok"
msgstr "OK"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "VERWIJDER BESTANDEN"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Weet u zeker dat u deze back-up wilt verwijderen?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "annuleren"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Bevestigen"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "HERSTEL BESTANDEN"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Weet u zeker dat u deze back-up wilt herstellen?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Laatste logbericht"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "De back-up is blijkbaar gelukt en is nu voltooid."

#: inc/backup.php:171
msgid "No log message"
msgstr "Geen logbericht"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Bestaande back-up(s)"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Back-updatum"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Back-upgegevens (klik om te downloaden)"

#: inc/backup.php:190
msgid "Action"
msgstr "Actie"

#: inc/backup.php:210
msgid "Today"
msgstr "Vandaag"

#: inc/backup.php:239
msgid "Restore"
msgstr "Herstellen"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Verwijderen"

#: inc/backup.php:241
msgid "View Log"
msgstr "Logboek bekijken"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Momenteel geen back-up(s) gevonden."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Acties bij geselecteerde back-up(s)"

#: inc/backup.php:251
msgid "Select All"
msgstr "Selecteer alles"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Deselecteren"

#: inc/backup.php:254
msgid "Note:"
msgstr "Opmerking:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Back-upbestanden zijn onder"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Bijdrage WP File Manager"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Opmerking: dit zijn demo-screenshots. Koop a.u.b. File Manager pro to Logs-"
"functies."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Klik om PRO te kopen"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Koop PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Bestandslogboeken bewerken"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Bestanden downloaden Logboeken"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Bestanden uploaden Logboeken"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Instellingen opgeslagen."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Negeer deze melding."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "U heeft geen wijzigingen aangebracht om op te slaan."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Openbaar hoofdpad"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "Bestandsbeheer Root Path, u kunt dit naar eigen keuze wijzigen."

#: inc/root.php:59
msgid "Default:"
msgstr "Standaard:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Wijzig dit zorgvuldig, een verkeerd pad kan ertoe leiden dat de plug-in voor "
"bestandsbeheer uitvalt."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Prullenbak inschakelen?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr ""
"Nadat u de prullenbak hebt ingeschakeld, gaan uw bestanden naar de prullenbak."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Bestanden uploaden naar mediabibliotheek inschakelen?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr ""
"Nadat u dit hebt ingeschakeld, gaan alle bestanden naar de mediabibliotheek."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maximaal toegestane grootte op het moment dat de databaseback-up wordt "
"hersteld."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Verhoog de veldwaarde als u een foutmelding krijgt op het moment van het "
"terugzetten van de back-up."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Wijzigingen opslaan"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Instellingen - Algemeen"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Opmerking: dit is slechts een demo-screenshot. Koop onze pro-versie om "
"instellingen te krijgen."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Hier kan de beheerder toegang geven tot gebruikersrollen om bestandsbeheer te "
"gebruiken. De beheerder kan de standaardtoegangsmap instellen en ook de "
"uploadgrootte van bestandsbeheer beheren."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Instellingen - Code-editor"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any theme "
"for code editor. It will display when you edit any file. Also you can allow "
"fullscreen mode of code editor."
msgstr ""
"Bestandsbeheer heeft een code-editor met meerdere thema's. U kunt elk thema "
"voor de code-editor selecteren. Het wordt weergegeven wanneer u een bestand "
"bewerkt. U kunt ook de modus voor volledig scherm van de code-editor toestaan."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Code-editor weergave"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Instellingen - Gebruikersbeperkingen"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Beheerder kan acties van elke gebruiker beperken. Verberg ook bestanden en "
"mappen en kan verschillende - verschillende mappaden instellen voor "
"verschillende gebruikers."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Instellingen - Beperkingen gebruikersrollen"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Beheerder kan acties van elke gebruikersrol beperken. Verberg ook bestanden en "
"mappen en kan verschillende - verschillende mappenpaden instellen voor "
"verschillende gebruikersrollen."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Bestandsbeheer - Shortcode"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17 inc/shortcode_docs.php:19
msgid "USE:"
msgstr "GEBRUIK:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from file "
"manager settings. It will work same as backend WP File Manager."
msgstr ""
"Het toont bestandsbeheer aan de voorkant. U kunt alle instellingen beheren "
"vanuit de instellingen van bestandsbeheer. Het werkt hetzelfde als backend WP "
"File Manager."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Het toont bestandsbeheer aan de voorkant. Maar alleen de beheerder heeft er "
"toegang toe en beheert de instellingen vanuit de bestandsbeheerinstellingen."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parameters:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can simple "
"use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Het geeft alle rollen toegang tot bestandsbeheer aan de front-end of u kunt "
"het eenvoudig gebruiken voor bepaalde gebruikersrollen, zoals allow_roles="
"\"editor,author\" (gescheiden door komma(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or you "
"can give path for sub folders as like \"wp-content/plugins\". If leave blank "
"or empty it will access all folders on root directory. Default: Root directory"
msgstr ""
"Hier is \"test\" de naam van de map die zich in de hoofdmap bevindt, of u kunt "
"een pad opgeven voor submappen zoals \"wp-content/plugins\". Als u dit blanco "
"of leeg laat, heeft het toegang tot alle mappen in de hoofdmap. Standaard: "
"Hoofdmap"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"voor toegang tot schrijfrechten voor bestanden, opmerking: waar/onwaar, "
"standaard: onwaar"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"voor toegang om bestanden te lezen toestemming, opmerking: waar/onwaar, "
"standaard: waar"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"het zal hier genoemd verbergen. Opmerking: gescheiden door komma(,). "
"Standaard: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js\" "
"etc. Default: Null"
msgstr ""
"Het wordt tussen komma's vermeld. je kunt meer vergrendelen zoals \".php,.css,."
"js\" etc. Standaard: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* voor alle bewerkingen en om sommige bewerkingen mogelijk te maken, kunt u de "
"naam van de bewerking vermelden als, allow_operations=\"upload,download\". "
"Opmerking: gescheiden door komma(,). Standaard: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Lijst met bestandsbewerkingen:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Map of map maken"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Bestand maken"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "De naam van een bestand of map wijzigen"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Een map of bestand dupliceren of klonen"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Een bestand of map plakken"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "verbieden"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Een archief of zip maken"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Archief of gecomprimeerd bestand uitpakken"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Bestanden of mappen kopiëren"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Eenvoudig een bestand of map knippen"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Een bestand bewerken"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Bestanden en mappen verwijderen of verwijderen"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Bestanden downloaden"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Upload bestanden"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Zoek dingen"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Info van bestand"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Helpen"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager on "
"front end."
msgstr ""
"->  Het verbiedt bepaalde gebruikers door hun id's gescheiden door komma's (,) "
"te plaatsen. Als de gebruiker Ban is, hebben ze geen toegang tot wp-"
"bestandsbeheer aan de voorkant."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Bestandsbeheer UI-weergave. Standaard: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> Bestand gewijzigd of datumformaat maken. Standaard: d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Bestandsbeheer Taal. Standaard: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Bestandsbeheerthema. Standaard: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Bestandsbeheer - Systeemeigenschappen"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP-versie"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maximale bestandsuploadgrootte (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Maximale bestandsuploadgrootte posten (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Geheugenlimiet (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Time-out (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Browser en besturingssysteem (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Verander hier het thema:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Standaard"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Donker"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Licht"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Grijs"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Welkom bij Bestandsbeheer"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"We maken graag nieuwe vrienden! Schrijf je hieronder in en we beloven je\n"
"    u op de hoogte houden van onze laatste nieuwe plug-ins, updates,\n"
"    geweldige aanbiedingen en een paar speciale aanbiedingen."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Vul a.u.b. voornaam in."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Vul a.u.b. achternaam in."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Voer e-mailadres in."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Verifiëren"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Nee, dank u wel"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Servicevoorwaarden"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Privacybeleid"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Besparen..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "OK"

#~ msgid "Backup not found!"
#~ msgstr "Back-up niet gevonden!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Back-up succesvol verwijderd!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Niets geselecteerd voor back-up</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Beveiligingsprobleem.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Databaseback-up klaar.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Kan geen databaseback-up maken.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Back-up van plug-ins klaar.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Back-up van plug-ins mislukt.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Back-up van thema's voltooid.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Back-up van thema's mislukt.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Uploads back-up gedaan.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Uploaden van back-up mislukt.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">Andere back-up gedaan.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">Andere back-up mislukt.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Alles klaar</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat="
#~ "\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder=\"wp-content/"
#~ "plugins\" write = \"true\" read = \"false\" hide_files = \"kumar,abc.php\" "
#~ "lock_extensions=\".php,.css\" allowed_operations=\"upload,download\" "
#~ "ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" dateformat="
#~ "\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder=\"wp-content/"
#~ "plugins\" write = \"true\" read = \"false\" hide_files = \"kumar,abc.php\" "
#~ "lock_extensions=\".php,.css\" allowed_operations=\"upload,download\" "
#~ "ban_user_ids=\"2,3\"]"

#~ msgid "Image"
#~ msgstr "Beeld"

#~ msgid "of"
#~ msgstr "van"

#~ msgid "Close"
#~ msgstr "Dichtbij"

#~ msgid ""
#~ "This feature requires inline frames. You have iframes disabled or your "
#~ "browser does not support them."
#~ msgstr ""
#~ "Deze functie vereist inline frames. Je hebt iframes uitgeschakeld of je "
#~ "browser ondersteunt ze niet."

#~ msgid "Theme Editor"
#~ msgstr "Thema-editor"

#~ msgid "Plugin Editor"
#~ msgstr "Plug-in-editor"

#~ msgid "Access Control"
#~ msgstr "Toegangscontrole"

#~ msgid "Notify Me"
#~ msgstr "Breng me op de hoogte"

#~ msgid "Language folder has been downlaoded successfully."
#~ msgstr "taal is succesvol gedownload."

#~ msgid "Language folder failed to downlaod."
#~ msgstr "Taalmap kan niet worden gedownload."

#~ msgid "Security token expired!"
#~ msgstr "Beveiligingstoken is verlopen!"

#~ msgid " language has been downloaded successfully."
#~ msgstr "taal is succesvol gedownload."

#~ msgid "Currently language "
#~ msgstr "Momenteel taal "

#~ msgid " not available. Please click on the request language link."
#~ msgstr " niet beschikbaar. Klik op de link voor het aanvragen van taal."

#~ msgid "You do not have sufficient permissions to edit plugins for this site."
#~ msgstr ""
#~ "U heeft niet voldoende rechten om plug-ins voor deze site te bewerken."

#~ msgid "There are no plugins installed on this site."
#~ msgstr "Er zijn geen plug-ins geïnstalleerd op deze site."

#~ msgid "There are no themes installed on this site."
#~ msgstr "Er zijn geen thema's op deze site geïnstalleerd."

#~ msgid "<p class=\"te_error\">Please enter folder name!</p>"
#~ msgstr "<p class=\"te_error\">Voer de mapnaam in!</p>"

#~ msgid "<p class=\"te_error\">Please enter file name!</p>"
#~ msgstr "<p class=\"te_error\">Voer de bestandsnaam in!</p>"

#~ msgid "Preview"
#~ msgstr "Voorbeeld"

#~ msgid "Edit"
#~ msgstr "Bewerk"

#~ msgid "Are you sure you want to abort the file uploading?"
#~ msgstr "Weet u zeker dat u het uploaden van het bestand wilt afbreken?"

#~ msgid "File renamed successfully."
#~ msgstr "Bestand hernoemd met succes."

#~ msgid "Are you sure you want to delete folder?"
#~ msgstr "Weet u zeker dat u de map wilt verwijderen?"

#~ msgid "Folder deleted successfully."
#~ msgstr "Map succesvol verwijderd."

#~ msgid "File deleted successfully."
#~ msgstr "Bestand succesvol verwijderd."

#~ msgid "Folder renamed successfully."
#~ msgstr "Map succesvol hernoemd."

#~ msgid "<p class=\"te_error\">Not allowed more than 30 characters.</p>"
#~ msgstr "<p class=\"te_error\">Niet meer dan 30 tekens toegestaan.</p>"

#~ msgid "Invalid request!"
#~ msgstr "Ongeldig verzoek!"

#~ msgid "No change in file!"
#~ msgstr "Geen wijziging in bestand!"

#~ msgid "File saved successfully!"
#~ msgstr "Bestand succesvol opgeslagen!"

#~ msgid "File not saved!"
#~ msgstr "Bestand niet opgeslagen!"

#~ msgid "Unable to verify security token!"
#~ msgstr "Kan beveiligingstoken niet verifiëren!"

#~ msgid "Folder created successfully!"
#~ msgstr "Map succesvol aangemaakt!"

#~ msgid "This folder format is not allowed to upload by wordpress!"
#~ msgstr "Dit mapformaat mag niet worden geüpload door wordpress!"

#~ msgid "Folder already exists!"
#~ msgstr "Map bestaat al!"

#~ msgid "File created successfully!"
#~ msgstr "Bestand succesvol aangemaakt!"

#~ msgid "This file extension is not allowed to create!"
#~ msgstr "Deze bestandsextensie mag niet worden aangemaakt!"

#~ msgid "File already exists!"
#~ msgstr "Bestand bestaat al!"

#~ msgid "Please enter a valid file extension!"
#~ msgstr "Voer een geldige bestandsextensie in!"

#~ msgid "Folder does not exists!"
#~ msgstr "Map bestaat niet!"

#~ msgid "Folder deleted successfully!"
#~ msgstr "Map succesvol verwijderd!"

#~ msgid "File deleted successfully!"
#~ msgstr "Bestand succesvol verwijderd!"

#~ msgid "This file extension is not allowed to upload by wordpress!"
#~ msgstr ""
#~ "Deze bestandsextensie is niet toegestaan ​​om te uploaden via wordpress!"

#~ msgid "File uploaded successfully: Uploaded file path is "
#~ msgstr "Bestand succesvol geüpload: Pad naar geüpload bestand is "

#~ msgid "No file selected"
#~ msgstr "Geen bestand geselecteerd"

#~ msgid "Unable to rename file! Try again."
#~ msgstr "Kan bestand niet hernoemen! Probeer het opnieuw."

#~ msgid "Folder renamed successfully!"
#~ msgstr "Map succesvol hernoemd!"

#~ msgid "Please enter correct folder name"
#~ msgstr "Voer de juiste mapnaam in"

#~ msgid "How can we help?"
#~ msgstr "Hoe kunnen we helpen?"

#~ msgid "Learning resources, professional support and expert help."
#~ msgstr "Leermiddelen, professionele ondersteuning en deskundige hulp."

#~ msgid "Documentation"
#~ msgstr "Documentatie"

#~ msgid "Find answers quickly from our comprehensive documentation."
#~ msgstr "Vind snel antwoorden in onze uitgebreide documentatie."

#~ msgid "Learn More"
#~ msgstr "Kom meer te weten"

#~ msgid "Contact Us"
#~ msgstr "Neem contact op"

#~ msgid "Submit a support ticket for answers on questions you may have."
#~ msgstr "Dien een supportticket in voor antwoorden op eventuele vragen."

#~ msgid "Request a Feature"
#~ msgstr "Vraag een functie aan"

#~ msgid "Tell us what you want and will add it to our roadmap."
#~ msgstr "Vertel ons wat je wilt en voeg het toe aan onze roadmap."

#~ msgid "Tell us what you think!"
#~ msgstr "Vertel ons wat je denkt!"

#~ msgid "Rate and give us a review on Wordpress!"
#~ msgstr "Beoordeel en geef ons een recensie over Wordpress!"

#~ msgid "Leave a Review"
#~ msgstr "Laat een beoordeling achter"

#~ msgid "Update"
#~ msgstr "Bijwerken"

#~ msgid "Installed"
#~ msgstr "Geïnstalleerd"

#~ msgid "Theme Editor Pro Language:"
#~ msgstr "Theme Editor Pro Taal:"

#~ msgid " language"
#~ msgstr " taal"

#~ msgid "Click here to install/update "
#~ msgstr "Klik hier om te installeren / updaten"

#~ msgid " language translation for Theme Editor Pro."
#~ msgstr " taalvertaling voor Theme Editor Pro."

#~ msgid "Available languages"
#~ msgstr "Beschikbare talen"

#~ msgid "Click here to download all available languages."
#~ msgstr "Klik hier om alle beschikbare talen te downloaden."

#~ msgid "Request a language"
#~ msgstr "Een taal aanvragen"

#~ msgid "Tell us which language you want to add."
#~ msgstr "Vertel ons welke taal u wilt toevoegen."

#~ msgid "Contact us"
#~ msgstr "Neem contact op"

#~ msgid "Notifications"
#~ msgstr "Meldingen"

#~ msgid ""
#~ "<strong>Note: This is just a screenshot. Buy PRO Version for this feature.</"
#~ "strong>"
#~ msgstr ""
#~ "<strong>Opmerking: dit is slechts een screenshot. Koop een PRO-versie voor "
#~ "deze functie.</strong>"

#~ msgid "Permissions"
#~ msgstr "Rechten"

#~ msgid "Edit Plugin"
#~ msgstr "Bewerk plug-in"

#~ msgid ""
#~ "<strong>This plugin is currently activated!</strong> Warning: Making "
#~ "changes to active plugins is not recommended.\tIf your changes cause a "
#~ "fatal error, the plugin will be automatically deactivated."
#~ msgstr ""
#~ "<strong> Deze plug-in is momenteel geactiveerd! </strong> Waarschuwing: het "
#~ "wordt niet aanbevolen om wijzigingen aan te brengen in actieve plug-ins. "
#~ "Als uw wijzigingen een fatale fout veroorzaken, wordt de plug-in "
#~ "automatisch gedeactiveerd."

#~ msgid "Editing <span class=\"current_file\">"
#~ msgstr "Bewerken  <span class=\"current_file\">"

#~ msgid "</span> (active)"
#~ msgstr "</span> (actief)"

#~ msgid "Browsing <span class=\"current_file\">"
#~ msgstr "Browsen <span class=\"current_file\">"

#~ msgid "</span> (inactive)"
#~ msgstr "</span> (inactief)"

#~ msgid "Update File"
#~ msgstr "Update bestand"

#~ msgid "Download Plugin"
#~ msgstr "Plug-in downloaden"

#~ msgid ""
#~ "You need to make this file writable before you can save your changes. See "
#~ "<a href=\"https://wordpress.org/support/article/changing-file-permissions/"
#~ "\" target=\"_blank\">the Codex</a> for more information."
#~ msgstr ""
#~ "U moet dit bestand beschrijfbaar maken voordat u uw wijzigingen kunt "
#~ "opslaan. Zie <a href=\"https://wordpress.org/support/article/changing-file-"
#~ "permissions/\" target=\"_blank\">de Codex</a> voor meer informatie."

#~ msgid "Select plugin to edit:"
#~ msgstr "Selecteer plug-in om te bewerken:"

#~ msgid "Create Folder and File"
#~ msgstr "Maak een map en bestand"

#~ msgid "Create"
#~ msgstr "Creëer"

#~ msgid "Remove Folder and File"
#~ msgstr "Verwijder map en bestand"

#~ msgid "Remove "
#~ msgstr "Verwijderen"

#~ msgid "To"
#~ msgstr "Naar"

#~ msgid "Optional: Sub-Directory"
#~ msgstr "Optioneel: subdirectory"

#~ msgid "Choose File "
#~ msgstr "Kies bestand"

#~ msgid "No file Chosen "
#~ msgstr "Geen bestand gekozen"

#~ msgid "Create a New Folder: "
#~ msgstr "Maak een nieuwe folder:"

#~ msgid "New folder will be created in: "
#~ msgstr "Er wordt een nieuwe map gemaakt in:"

#~ msgid "New Folder Name: "
#~ msgstr "Nieuwe mapnaam:"

#~ msgid "Create New Folder"
#~ msgstr "Nieuwe map maken"

#~ msgid "Create a New File: "
#~ msgstr "Maak een nieuw bestand:"

#~ msgid "New File will be created in: "
#~ msgstr "Nieuw bestand wordt aangemaakt in:"

#~ msgid "New File Name: "
#~ msgstr "Nieuwe bestandsnaam:"

#~ msgid "Create New File"
#~ msgstr "Maak een nieuw bestand"

#~ msgid "Warning: please be careful before remove any folder or file."
#~ msgstr ""
#~ "Waarschuwing: wees voorzichtig voordat u een map of bestand verwijdert."

#~ msgid "Current Theme Path: "
#~ msgstr "Huidig themapad:"

#~ msgid "Remove Folder: "
#~ msgstr "Map verwijderen:"

#~ msgid "Folder Path which you want to remove: "
#~ msgstr "Mappad dat u wilt verwijderen: "

#~ msgid "Remove Folder"
#~ msgstr "Map verwijderen"

#~ msgid "Remove File: "
#~ msgstr "Bestand verwijderen:"

#~ msgid "File Path which you want to remove: "
#~ msgstr "Bestandspad dat u wilt verwijderen: "

#~ msgid "Remove File"
#~ msgstr "Bestand verwijderen"

#~ msgid "Please Enter Valid Email Address."
#~ msgstr "Vul alstublieft een geldig e-mailadres in."

#~ msgid "Warning: Please be careful before rename any folder or file."
#~ msgstr "Waarschuwing: wees voorzichtig voordat u een map of bestand hernoemt."

#~ msgid "File/Folder will be rename in: "
#~ msgstr "Bestand / map wordt hernoemd in:"

#~ msgid "File/Folder Rename: "
#~ msgstr "Bestand / map hernoemen:"

#~ msgid "Follow us"
#~ msgstr "Volg ons"

#~ msgid "Theme Editor Facebook"
#~ msgstr "Thema-editor Facebook"

#~ msgid "Theme Editor Instagram"
#~ msgstr "Thema-editor Instagram"

#~ msgid "Theme Editor Twitter"
#~ msgstr "Thema-editor Twitter"

#~ msgid "Theme Editor Linkedin"
#~ msgstr "Thema-editor Linkedin"

#~ msgid "Theme Editor Youtube"
#~ msgstr "Thema-editor YouTube"

#~ msgid "Go to ThemeEditor site"
#~ msgstr "Ga naar de ThemeEditor-site"

#~ msgid "Theme Editor Links"
#~ msgstr "Theme Editor Links"

#~ msgid "Child Theme"
#~ msgstr "Thema van het kind"

#~ msgid "Child Theme Permissions"
#~ msgstr "Toestemmingen voor kindthema"

#~ msgid " is not available. Please click "
#~ msgstr " is niet beschikbaar. Klik alstublieft "

#~ msgid "here"
#~ msgstr "hier"

#~ msgid "to request language."
#~ msgstr "om taal te vragen."

#~ msgid "Click"
#~ msgstr "Klik"

#~ msgid "to install "
#~ msgstr "to install "

#~ msgid " language translation  for Theme Editor Pro"
#~ msgstr " taalvertaling voor Theme Editor Pro"

#~ msgid "Success: Settings Saved!"
#~ msgstr "Succes: instellingen opgeslagen!"

#~ msgid "No changes have been made to save."
#~ msgstr "Er zijn geen wijzigingen aangebracht om op te slaan."

#~ msgid "Enable Theme Editor For Themes"
#~ msgstr "Thema-editor inschakelen voor thema's"

#~ msgid "Yes"
#~ msgstr "Ja"

#~ msgid "No"
#~ msgstr "Nee"

#~ msgid ""
#~ "This will Enable/Disable the theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Hiermee wordt de thema-editor in-/uitgeschakeld.<br/><strong class=\"defs"
#~ "\">Standaard: </strong>Ja"

#~ msgid "Disable Default WordPress Theme Editor?"
#~ msgstr "Standaard WordPress Theme Editor uitschakelen?"

#~ msgid ""
#~ "This will Enable/Disable the Default theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Hiermee wordt de standaard thema-editor in-/uitgeschakeld.<br/><strong "
#~ "class=\"defs\">Standaard: </strong>Ja"

#~ msgid "Enable Plugin Editor For Plugin"
#~ msgstr "Plugin-editor inschakelen voor plug-in"

#~ msgid ""
#~ "This will Enable/Disable the plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Hiermee wordt de plug-in-editor in-/uitgeschakeld.<br/><strong class=\"defs"
#~ "\">Standaard: </strong>Ja"

#~ msgid "Disable Default WordPress Plugin Editor?"
#~ msgstr "Standaard WordPress Plugin Editor uitschakelen?"

#~ msgid ""
#~ "This will Enable/Disable the Default plugin editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Yes"
#~ msgstr ""
#~ "Hiermee wordt de standaard plug-in-editor in-/uitgeschakeld.<br/><strong "
#~ "class=\"defs\">Standaard: </strong>Ja"

#~ msgid "Code Editor"
#~ msgstr "Code-editor"

#~ msgid ""
#~ "Allows you to select theme for theme editor.<br/><strong class=\"defs"
#~ "\">Default: </strong>Cobalt"
#~ msgstr ""
#~ "Hiermee kunt u een thema selecteren voor de thema-editor.<br/><strong class="
#~ "\"defs\">Standaard: </strong>Kobalt"

#~ msgid "Edit Themes"
#~ msgstr "Thema's bewerken"

#~ msgid ""
#~ "<strong>This theme is currently activated!</strong> Warning: Making changes "
#~ "to active themes is not recommended."
#~ msgstr ""
#~ "<strong> Dit thema is momenteel geactiveerd! </strong> Waarschuwing: het "
#~ "wordt niet aanbevolen wijzigingen aan te brengen in actieve thema's."

#~ msgid "Editing"
#~ msgstr "Bewerken"

#~ msgid "Browsing"
#~ msgstr "Browsen"

#~ msgid "Update File and Attempt to Reactivate"
#~ msgstr "Update bestand en probeer opnieuw te activeren"

#~ msgid "Download Theme"
#~ msgstr "Thema downloaden"

#~ msgid "Select theme to edit:"
#~ msgstr "Selecteer een thema om te bewerken:"

#~ msgid "Theme Files"
#~ msgstr "Themabestanden"

#~ msgid "Choose File"
#~ msgstr "Kies bestand"

#~ msgid "No File Chosen"
#~ msgstr "Geen bestand gekozen"

#~ msgid "Warning: Please be careful before remove any folder or file."
#~ msgstr ""
#~ "Waarschuwing: wees voorzichtig voordat u een map of bestand verwijdert."

#~ msgid "Child Theme Permission"
#~ msgstr "Toestemming voor kinderthema"

#~ msgid "Translations"
#~ msgstr "Vertalingen"

#~ msgid "You do not have the permission to create new child theme."
#~ msgstr "U bent niet gemachtigd om een ​​nieuw child-thema te maken."

#~ msgid ""
#~ "You do not have the permission to change configure existing child theme."
#~ msgstr ""
#~ "U bent niet gemachtigd om het configureren van een bestaand child-thema te "
#~ "wijzigen."

#~ msgid "You do not have the permission to duplicate the child theme."
#~ msgstr "U bent niet gemachtigd om kinderbestanden te verwijderen."

#~ msgid "You do not have the permission to access query/ selector menu."
#~ msgstr "U heeft geen toestemming om het vraag- / selectiemenu te openen."

#~ msgid "You do not have the permission to access web fonts & CSS menu."
#~ msgstr "U heeft geen toestemming om het webfonts & CSS-menu te openen."

#~ msgid "You do not have the permission to copy files."
#~ msgstr "U heeft geen toestemming om bestanden te kopiëren."

#~ msgid "You do not have the permission to delete child files."
#~ msgstr "U heeft geen toestemming om kinderbestanden te verwijderen."

#~ msgid "You do not have the permission to upload new screenshot."
#~ msgstr "U heeft geen toestemming om een ​​nieuwe screenshot te uploaden."

#~ msgid "You do not have the permission to upload new images."
#~ msgstr "U heeft geen toestemming om nieuwe afbeeldingen te uploaden."

#~ msgid "You do not have the permission to delete images."
#~ msgstr "U heeft geen toestemming om afbeeldingen te verwijderen."

#~ msgid "You do not have the permission to download file."
#~ msgstr "U heeft geen toestemming om het bestand te downloaden."

#~ msgid "You do not have the permission to create new directory."
#~ msgstr "U heeft geen toestemming om een ​​nieuwe directory te maken."

#~ msgid "You do not have the permission to create new file."
#~ msgstr "U bent niet gemachtigd om een ​​nieuw bestand aan te maken."

#~ msgid "You don't have permission to update file!"
#~ msgstr "U bent niet gemachtigd om het bestand bij te werken!"

#~ msgid "You don't have permission to create folder!"
#~ msgstr "U bent niet gemachtigd om een ​​map te maken!"

#~ msgid "You don't have permission to delete folder!"
#~ msgstr "U bent niet gemachtigd om een ​​map te verwijderen!"

#~ msgid "You don't have permission to delete file!"
#~ msgstr "U bent niet gemachtigd om een ​​bestand te verwijderen!"

#~ msgid "You don't have permission to upload file!"
#~ msgstr "U bent niet gemachtigd om een ​​bestand te uploaden!"

#~ msgid "Child Theme permissions saved successfully."
#~ msgstr "Toestemmingen voor kindthema zijn succesvol opgeslagen."

#~ msgid "There are no changes made in the child theme permissions to be saved."
#~ msgstr ""
#~ "Er zijn geen wijzigingen aangebracht in de machtigingen voor het "
#~ "onderliggende thema om te worden opgeslagen."

#~ msgid "Child Theme permission message saved successfully."
#~ msgstr "Toestemmingsbericht voor kindthema succesvol opgeslagen."

#~ msgid "Users"
#~ msgstr "Gebruikers"

#~ msgid "Create New Child Theme"
#~ msgstr "Maak een nieuw kindthema"

#~ msgid "Configure an Existing Child Themes"
#~ msgstr "Configureer bestaande onderliggende thema's"

#~ msgid "Duplicate Child Themes"
#~ msgstr "Dubbele onderliggende thema's"

#~ msgid "Query/ Selector"
#~ msgstr "Query / Selector"

#~ msgid "Web/font"
#~ msgstr "Web / lettertype"

#~ msgid "Copy File Parent Theme To Child Theme"
#~ msgstr "Kopieer bestand ouderthema naar kindthema"

#~ msgid "Deleted Child Files"
#~ msgstr "Verwijderde onderliggende bestanden"

#~ msgid "Upload New Screenshoot"
#~ msgstr "Upload nieuwe screenshoot"

#~ msgid "Upload New Images"
#~ msgstr "Upload nieuwe afbeeldingen"

#~ msgid "Deleted Images "
#~ msgstr "Verwijderde afbeeldingen"

#~ msgid "Download Images"
#~ msgstr "Download afbeeldingen"

#~ msgid "Create New Directory"
#~ msgstr "Maak een nieuwe directory"

#~ msgid "Create New Files"
#~ msgstr "Maak nieuwe bestanden"

#~ msgid "Export Theme"
#~ msgstr "Thema exporteren"

#~ msgid "User Roles"
#~ msgstr "Gebruikersrollen"

#~ msgid "Query/ Seletor"
#~ msgstr "Query / Seletor"

#~ msgid "Deleted Images"
#~ msgstr "Verwijderde afbeeldingen"

#~ msgid "Child Theme Permission Message"
#~ msgstr "Toestemmingsbericht voor kindthema"

#~ msgid "You do not have the permission to create new Child Theme."
#~ msgstr "U heeft geen toestemming om een ​​nieuw kindthema te maken."

#~ msgid "Query/Selector"
#~ msgstr "Query / Selector"

#~ msgid "You do not have the permission to access query / selector menu."
#~ msgstr "U heeft geen toestemming om het query-/selectormenu te openen."

#~ msgid " Web/font"
#~ msgstr "Web / lettertype"

#~ msgid " Export Theme"
#~ msgstr "Thema exporteren"

#~ msgid "Save Child Theme Message"
#~ msgstr "Toestemmingsbericht voor kindthema"

#~ msgid "Please select atleast one image."
#~ msgstr "Selecteer ten minste één afbeelding."

#~ msgid "You don't have the permission to delete images."
#~ msgstr "U heeft geen toestemming om afbeeldingen te verwijderen."

#~ msgid "You don't have the permission to upload new images."
#~ msgstr "U heeft geen toestemming om nieuwe afbeeldingen te uploaden."

#~ msgid "You don't have the permission to download."
#~ msgstr "U heeft geen toestemming om te downloaden."

#~ msgid "You don't have the permission to create new directory."
#~ msgstr "U bent niet gemachtigd om een ​​nieuwe map te maken."

#~ msgid "Please choose file type."
#~ msgstr "Kies een bestandstype."

#~ msgid "Please enter file name."
#~ msgstr "Voer de bestandsnaam in."

#~ msgid "You don't have the permission to create new file."
#~ msgstr "U bent niet gemachtigd om een ​​nieuw bestand te maken."

#~ msgid "Are you sure to copy parent files into child theme?"
#~ msgstr ""
#~ "Weet u zeker dat u bovenliggende bestanden naar het onderliggende thema "
#~ "kopieert?"

#~ msgid "Please select file(s)."
#~ msgstr "Selecteer bestand (en)."

#~ msgid "You don't have the permission to copy files."
#~ msgstr "U heeft geen toestemming om bestanden te kopiëren."

#~ msgid "Are you sure you want to delete selected file(s)?"
#~ msgstr "Weet u zeker dat u de geselecteerde bestanden wilt verwijderen?"

#~ msgid "You don't have the permission to delete child files."
#~ msgstr "U bent niet gemachtigd om kinderbestanden te verwijderen."

#~ msgid "You don't have the permission to upload new screenshot."
#~ msgstr "Je hebt geen toestemming om een ​​nieuwe screenshot te uploaden."

#~ msgid "You don't have the permission to export theme."
#~ msgstr "U bent niet gemachtigd om een ​​thema te exporteren."

#~ msgid "You don't have the permission to access Query/ Selector menu."
#~ msgstr "U bent niet gemachtigd om het Query / Selector-menu te openen."

#~ msgid "You don't have the permission to access Web Fonts & CSS menu."
#~ msgstr "U bent niet gemachtigd om het menu Web Fonts & CSS te openen."

#~ msgid "Current Analysis Theme:"
#~ msgstr "Huidig  analysethema:"

#~ msgid "Preview Theme"
#~ msgstr "Voorbeeldthema"

#~ msgid "Parent Themes"
#~ msgstr "Bovenliggende thema's"

#~ msgid "Child Themes"
#~ msgstr "Kinderthema's"

#~ msgid "Error: Settings Not Saved!"
#~ msgstr "Fout: instellingen niet opgeslagen!"

#~ msgid "Email List"
#~ msgstr "E-maillijst"

#~ msgid "Email Address"
#~ msgstr "E-mailadres"

#~ msgid "Enter Email"
#~ msgstr "Voer email in"

#~ msgid "Add More"
#~ msgstr "Voeg meer toe"

#~ msgid ""
#~ "This address is used for notification purposes, like theme/plugin "
#~ "notification."
#~ msgstr ""
#~ "Dit adres wordt gebruikt voor meldingsdoeleinden, zoals thema- / plugin-"
#~ "melding."

#~ msgid "Theme Notification"
#~ msgstr "Thema-melding"

#~ msgid "Notify on file update"
#~ msgstr "Melden bij bestandsupdate"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding bij het bewerken of bijwerken van themabestanden. <br/"
#~ "><strong>Standaard: </strong>Ja"

#~ msgid "Notify on files download"
#~ msgstr "Melden bij het downloaden van bestanden"

#~ msgid ""
#~ "Notification on theme file edit download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding bij downloaden van themabestand bewerken. <br/><strong>Standaard: </"
#~ "strong>Ja"

#~ msgid "Notify on theme download"
#~ msgstr "Melden bij thema-download"

#~ msgid "Notification on theme download.<br/><strong>Default: </strong>Yes"
#~ msgstr "Melding bij downloaden van thema. <br/><strong>Standaard: </strong>Ja"

#~ msgid "Notify on files upload"
#~ msgstr "Melden bij het uploaden van bestanden"

#~ msgid ""
#~ "Notification on files upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding bij het uploaden van bestanden in thema. <br/><strong>Standaard: </"
#~ "strong>Ja"

#~ msgid "Notify on create new file/folder"
#~ msgstr "Melden bij het aanmaken van een nieuw bestand / map"

#~ msgid ""
#~ "Notification on create new file/folder in theme.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Melding bij het maken van een nieuw bestand / map in thema. <br/"
#~ "><strong>Standaard: </strong>Ja"

#~ msgid "Notify on delete"
#~ msgstr "Melden bij verwijderen"

#~ msgid ""
#~ "Notify on delete any file and folder in themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Melden bij het verwijderen van bestanden en mappen in thema's. <br/"
#~ "><strong>Standaard: </strong>Ja"

#~ msgid "Notify on create New Child theme"
#~ msgstr "Melden bij het maken van een nieuw kindthema"

#~ msgid "Notify on Create New Child themes. <br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melden bij het maken van nieuwe kindthema's. <br/><strong>Standaard: </"
#~ "strong>Ja"

#~ msgid "Notify on configure an Existing Child themes"
#~ msgstr "Melden bij het configureren van een bestaand kindthema"

#~ msgid ""
#~ "Notify on configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Melden bij het configureren van bestaande onderliggende thema's. <br/"
#~ "><strong>Standaard: </strong>Ja"

#~ msgid "Notify on Duplicate Child themes"
#~ msgstr "Melding geven over dubbele onderliggende thema's"

#~ msgid ""
#~ "Notify on Configure an Existing Child themes.<br/><strong>Default: </"
#~ "strong>Yes"
#~ msgstr ""
#~ "Melden bij het configureren van bestaande onderliggende thema's. <br/"
#~ "><strong>Standaard: </strong>Ja"

#~ msgid "Plugin Notification"
#~ msgstr "Plugin-melding"

#~ msgid ""
#~ "Notification on theme file edit or update.<br/><strong>Default: </strong>yes"
#~ msgstr ""
#~ "Melding bij het bewerken of bijwerken van themabestanden. <br/"
#~ "><strong>Standaard: </strong>ja"

#~ msgid "Notify on Plugin download"
#~ msgstr "Melden bij download van plug-in"

#~ msgid "Notification on Plugin download.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding bij het downloaden van de plug-in. <br/><strong>Standaard: </"
#~ "strong> Ja"

#~ msgid ""
#~ "Notification on file upload in theme.<br/><strong>Default: </strong>Yes"
#~ msgstr ""
#~ "Melding bij het uploaden van bestanden in thema. <br/><strong>Standaard: </"
#~ "strong>Ja"

#~ msgid "Permission saved successfully."
#~ msgstr "Toestemming succesvol opgeslagen."

#~ msgid "Oops! Permission cannot saved because you have not made any changes."
#~ msgstr ""
#~ "Oeps! Toestemming kan niet worden opgeslagen omdat u geen wijzigingen heeft "
#~ "aangebracht."

#~ msgid "Allowed User Roles"
#~ msgstr "Toegestane gebruikersrollen"

#~ msgid "Update theme files"
#~ msgstr "Update themabestanden"

#~ msgid "Create new theme files and folders"
#~ msgstr "Maak nieuwe themabestanden en mappen"

#~ msgid "Upload new theme files and folders"
#~ msgstr "Upload nieuwe themabestanden en mappen"

#~ msgid "Download theme files"
#~ msgstr "Download themabestanden"

#~ msgid "Download theme"
#~ msgstr "Thema downloaden"

#~ msgid "Update plugin files"
#~ msgstr "Update plug-inbestanden"

#~ msgid "Create new plugin files and folders"
#~ msgstr "Maak nieuwe plug-inbestanden en -mappen"

#~ msgid "Upload new plugin files and folders"
#~ msgstr "Upload nieuwe plug-inbestanden en -mappen"

#~ msgid "Delete plugin files and folders"
#~ msgstr "Verwijder plug-inbestanden en -mappen"

#~ msgid "Download plugin files"
#~ msgstr "Download plugin-bestanden"

#~ msgid "Download plugin"
#~ msgstr "Plug-in downloaden"

#~ msgid "Rename File"
#~ msgstr "Hernoem bestand"

#~ msgid ""
#~ "Theme Editor PRO - Please add your order details below. If Not <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence Key"
#~ "\">Buy Now</a>"
#~ msgstr ""
#~ "Theme Editor PRO - Voeg hieronder uw bestelgegevens toe. Als niet  <a href="
#~ "\"https://themeeditor.pro/product/theme-editor/\" target=\"_blank\" class="
#~ "\"page-title-action button button-primary\" title=\"click to buy Licence Key"
#~ "\">Koop nu </a>"

#~ msgid "ORDER ID (#) *"
#~ msgstr "ORDER ID (#) *"

#~ msgid "Enter Order ID"
#~ msgstr "Voer bestellings-ID in"

#~ msgid "Please Check Your email for order ID."
#~ msgstr "Controleer uw e-mail voor de bestellings-ID."

#~ msgid "LICENCE KEY *"
#~ msgstr "LICENTIESLEUTEL *"

#~ msgid "Enter License Key"
#~ msgstr "Voer de licentiecode in"

#~ msgid "Please Check Your email for Licence Key."
#~ msgstr "Controleer uw e-mail voor de licentiecode."

#~ msgid "Click To Verify"
#~ msgstr "Klik om te verifiëren"

#~ msgid "URL/None"
#~ msgstr "URL / Geen"

#~ msgid "Origin"
#~ msgstr "Oorsprong"

#~ msgid "Color 1"
#~ msgstr "Kleur 1"

#~ msgid "Color 2"
#~ msgstr "Kleur 2"

#~ msgid "Width/None"
#~ msgstr "Breedte / geen"

#~ msgid "Style"
#~ msgstr "Stijl"

#~ msgid "Color"
#~ msgstr "Kleur"

#~ msgid "Configure Child Theme"
#~ msgstr "Configureer het kindthema"

#~ msgid "Duplicate Child theme"
#~ msgstr "Dubbele onderliggende thema's"

#~ msgid ""
#~ "After analyzing, this theme is working fine. You can use this as your Child "
#~ "Theme."
#~ msgstr ""
#~ "Na analyse werkt dit thema prima. U kunt dit gebruiken als uw kindthema."

#~ msgid "After analyzing this child theme appears to be functioning correctly."
#~ msgstr "Na analyse blijkt dit child theme correct te functioneren."

#~ msgid ""
#~ "This theme loads additional stylesheets after the <code>style.css</code> "
#~ "file:"
#~ msgstr ""
#~ "Dit thema laadt extra stylesheets na het bestand <code>style.css</code>:"

#~ msgid "The theme"
#~ msgstr "Thema naam"

#~ msgid " could not be analyzed because the preview did not render correctly"
#~ msgstr ""
#~ "kon niet worden geanalyseerd omdat het voorbeeld niet correct werd "
#~ "weergegeven"

#~ msgid "This Child Theme has not been configured for this plugin"
#~ msgstr "Dit onderliggende thema is niet geconfigureerd voor deze plug-in"

#~ msgid ""
#~ "The Configurator makes significant modifications to the child theme, "
#~ "including stylesheet changes and additional php functions. Please consider "
#~ "using the DUPLICATE child theme option (see step 1, above) and keeping the "
#~ "original as a backup."
#~ msgstr ""
#~ "De configurator brengt belangrijke wijzigingen aan in het child-thema, "
#~ "inclusief stylesheet-wijzigingen en extra php-functies. Overweeg om de "
#~ "optie DUPLICATE child-thema te gebruiken (zie stap 1, hierboven) en het "
#~ "origineel als back-up te bewaren."

#~ msgid "All webfonts/css information saved successfully."
#~ msgstr "Alle webfonts / css-informatie is succesvol opgeslagen."

#~ msgid "Please enter value for webfonts/css."
#~ msgstr "Voer een waarde in voor webfonts / css."

#~ msgid "You don\\'t have permission to update webfonts/css."
#~ msgstr "U heeft geen toestemming om webfonts / css bij te werken."

#~ msgid "All information saved successfully."
#~ msgstr "Alle informatie is succesvol opgeslagen."

#~ msgid ""
#~ "Are you sure you wish to RESET? This will destroy any work you have done in "
#~ "the Configurator."
#~ msgstr ""
#~ "Weet u zeker dat u wilt RESETTEN? Dit vernietigt al het werk dat u in de "
#~ "Configurator heeft gedaan."

#~ msgid "Selectors"
#~ msgstr "Selectoren"

#~ msgid "Edit Selector"
#~ msgstr "Bewerken Selector"

#~ msgid "The stylesheet cannot be displayed."
#~ msgstr "De stylesheet kan niet worden weergegeven."

#~ msgid "(Child Only)"
#~ msgstr "(Alleen kind)"

#~ msgid "Please enter a valid Child Theme."
#~ msgstr "Voer een geldig kindthema in."

#~ msgid "Please enter a valid Child Theme name."
#~ msgstr "Voer een geldige kindthema-naam in."

#, php-format
#~ msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
#~ msgstr "<strong>%s</strong> bestaat. Voer een ander kindthema in"

#~ msgid "The page could not be loaded correctly."
#~ msgstr "De pagina kan niet correct worden geladen."

#~ msgid ""
#~ "Conflicting or out-of-date jQuery libraries were loaded by another plugin:"
#~ msgstr ""
#~ "Conflicterende of verouderde jQuery-bibliotheken zijn geladen door een "
#~ "andere plug-in:"

#~ msgid "Deactivating or replacing plugins may resolve this issue."
#~ msgstr ""
#~ "Dit probleem kan mogelijk worden opgelost door plug-ins te deactiveren of "
#~ "te vervangen."

#~ msgid "No result found for the selection."
#~ msgstr "Geen resultaat gevonden voor de selectie."

#, php-format
#~ msgid "%sWhy am I seeing this?%s"
#~ msgstr "% sWaarom zie ik dit?%s"

#~ msgid "Parent / Child"
#~ msgstr "Ouder / kind"

#~ msgid "Select an action:"
#~ msgstr "Selecteer een actie:"

#~ msgid "Create a new Child Theme"
#~ msgstr "Maak een nieuw kindthema"

#~ msgid "Configure an existing Child Theme"
#~ msgstr "Een bestaand onderliggend thema configureren"

#~ msgid "Duplicate an existing Child Theme"
#~ msgstr "Dupliceer een bestaand kindthema"

#~ msgid "Select a Parent Theme:"
#~ msgstr "Selecteer een ouderthema:"

#~ msgid "Analyze Parent Theme"
#~ msgstr "Analyseer het ouderthema"

#~ msgid ""
#~ "Click \"Analyze\" to determine stylesheet dependencies and other potential "
#~ "issues."
#~ msgstr ""
#~ "Klik op \"Analyseren\" om de stijlbladafhankelijkheden en andere mogelijke "
#~ "problemen te bepalen."

#~ msgid "Analyze"
#~ msgstr "Analyseren"

#~ msgid "Select a Child Theme:"
#~ msgstr "Selecteer een kindthema:"

#~ msgid "Analyze Child Theme"
#~ msgstr "Analyseer het kindthema"

#~ msgid "Name the new theme directory:"
#~ msgstr "Geef de nieuwe themamap een naam:"

#~ msgid "Directory Name"
#~ msgstr "Directory Naam"

#~ msgid "NOTE:"
#~ msgstr "OPMERKING:"

#~ msgid ""
#~ "This is NOT the name of the Child Theme. You can customize the name, "
#~ "description, etc. in step 7, below."
#~ msgstr ""
#~ "Dit is NIET de naam van het kindthema. U kunt de naam, beschrijving enz. "
#~ "Aanpassen in stap 7 hieronder."

#~ msgid "Verify Child Theme directory:"
#~ msgstr "Controleer de map met onderliggende thema's:"

#~ msgid ""
#~ "For verification only (you cannot modify the directory of an existing Child "
#~ "Theme)."
#~ msgstr ""
#~ "Alleen ter verificatie (u kunt de map van een bestaand kindthema niet "
#~ "wijzigen)."

#~ msgid "Select where to save new styles:"
#~ msgstr "Selecteer waar u nieuwe stijlen wilt opslaan:"

#~ msgid "Primary Stylesheet (style.css)"
#~ msgstr "Primaire stylesheet (style.css)"

#~ msgid ""
#~ "Save new custom styles directly to the Child Theme primary stylesheet, "
#~ "replacing the existing values. The primary stylesheet will load in the "
#~ "order set by the theme."
#~ msgstr ""
#~ "Sla nieuwe aangepaste stijlen rechtstreeks op het primaire stijlblad van "
#~ "het onderliggende thema op en vervang de bestaande waarden. De primaire "
#~ "stylesheet wordt geladen in de volgorde die is ingesteld door het thema."

#~ msgid "Separate Stylesheet"
#~ msgstr "Afzonderlijk stylesheet"

#~ msgid ""
#~ "Save new custom styles to a separate stylesheet and combine any existing "
#~ "child theme styles with the parent to form baseline. Select this option if "
#~ "you want to preserve the existing child theme styles instead of overwriting "
#~ "them. This option also allows you to customize stylesheets that load after "
#~ "the primary stylesheet."
#~ msgstr ""
#~ "Sla nieuwe aangepaste stijlen op een apart stylesheet op en combineer "
#~ "bestaande child-themastijlen met de bovenliggende stijl om een ​​basislijn te "
#~ "vormen. Selecteer deze optie als u de bestaande child-themastijlen wilt "
#~ "behouden in plaats van ze te overschrijven. Met deze optie kunt u ook "
#~ "stylesheets aanpassen die na de primaire stylesheet worden geladen."

#~ msgid "Select Parent Theme stylesheet handling:"
#~ msgstr "Selecteer Behandeling van stylesheet voor ouderthema:"

#~ msgid "Use the WordPress style queue."
#~ msgstr "Gebruik de wachtrij in WordPress-stijl."

#~ msgid ""
#~ "Let the Configurator determine the appropriate actions and dependencies and "
#~ "update the functions file automatically."
#~ msgstr ""
#~ "Laat de configurator de juiste acties en afhankelijkheden bepalen en het "
#~ "functiebestand automatisch bijwerken."

#~ msgid "Use <code>@import</code> in the child theme stylesheet."
#~ msgstr "Gebruik <code> @import </code> in het onderliggende thema-stylesheet."

#~ msgid ""
#~ "Only use this option if the parent stylesheet cannot be loaded using the "
#~ "WordPress style queue. Using <code>@import</code> is not recommended."
#~ msgstr ""
#~ "Gebruik deze optie alleen als het bovenliggende stylesheet niet kan worden "
#~ "geladen met de WordPress-stijlwachtrij. Het gebruik van <code> @import </"
#~ "code> wordt niet aanbevolen."

#~ msgid "Do not add any parent stylesheet handling."
#~ msgstr "Voeg geen afhandeling van bovenliggende stylesheets toe."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's <code>style.css</code> file is not used "
#~ "for its appearance."
#~ msgstr ""
#~ "Selecteer deze optie als dit thema het stijlblad van het bovenliggende "
#~ "thema al afhandelt of als het bestand <code> style.css </code> van het "
#~ "bovenliggende thema niet wordt gebruikt voor de weergave ervan."

#~ msgid "Advanced handling options"
#~ msgstr "Geavanceerde afhandelingsopties"

#~ msgid "Ignore parent theme stylesheets."
#~ msgstr "Negeer stijlbladen voor hoofdthema's."

#~ msgid ""
#~ "Select this option if this theme already handles the parent theme "
#~ "stylesheet or if the parent theme's style.css file is not used for its "
#~ "appearance."
#~ msgstr ""
#~ "Selecteer deze optie als dit thema al het stijlblad van het bovenliggende "
#~ "thema afhandelt of als het style.css-bestand van het bovenliggende thema "
#~ "niet wordt gebruikt voor de weergave ervan."

#~ msgid "Repair the header template in the child theme."
#~ msgstr "Herstel de koptekstsjabloon in het child-thema."

#~ msgid ""
#~ "Let the Configurator (try to) resolve any stylesheet issues listed above. "
#~ "This can fix many, but not all, common problems."
#~ msgstr ""
#~ "Laat de configurator eventuele bovenstaande problemen met stylesheet "
#~ "(proberen) op te lossen. Dit kan veel, maar niet alle, veelvoorkomende "
#~ "problemen oplossen."

#~ msgid "Remove stylesheet dependencies"
#~ msgstr "Verwijder stijlbladafhankelijkheden"

#~ msgid ""
#~ "By default, the order of stylesheets that load prior to the primary "
#~ "stylesheet is preserved by treating them as dependencies. In some cases, "
#~ "stylesheets are detected in the preview that are not used site-wide. If "
#~ "necessary, dependency can be removed for specific stylesheets below."
#~ msgstr ""
#~ "Standaard wordt de volgorde van stylesheets die voorafgaand aan het "
#~ "primaire stylesheet worden geladen, behouden door ze als afhankelijkheden "
#~ "te beschouwen. In sommige gevallen worden stylesheets gedetecteerd in de "
#~ "preview die niet op de hele site worden gebruikt. Indien nodig kan de "
#~ "afhankelijkheid voor specifieke stylesheets hieronder worden verwijderd."

#~ msgid "Child Theme Name"
#~ msgstr "Naam van kindthema"

#~ msgid "Theme Name"
#~ msgstr "Thema naam"

#~ msgid "Theme Website"
#~ msgstr "Thema website"

#~ msgid "Author"
#~ msgstr "Schrijver"

#~ msgid "Author Website"
#~ msgstr "Website van de auteur"

#~ msgid "Theme Description"
#~ msgstr "Thema Beschrijving"

#~ msgid "Description"
#~ msgstr "Omschrijving"

#~ msgid "Tags"
#~ msgstr "Tags"

#~ msgid ""
#~ "Copy Menus, Widgets and other Customizer Settings from the Parent Theme to "
#~ "the Child Theme:"
#~ msgstr ""
#~ "Kopieer menu's, widgets en andere Customizer-instellingen van het "
#~ "ouderthema naar het child-thema:"

#~ msgid ""
#~ "This option replaces the Child Theme's existing Menus, Widgets and other "
#~ "Customizer Settings with those from the Parent Theme. You should only need "
#~ "to use this option the first time you configure a Child Theme."
#~ msgstr ""
#~ "Deze optie vervangt de bestaande menu's, widgets en andere "
#~ "aanpassingsinstellingen van het kindthema door die van het ouderthema. U "
#~ "hoeft deze optie alleen te gebruiken als u voor het eerst een kindthema "
#~ "configureert."

#~ msgid "Click to run the Configurator:"
#~ msgstr "Klik om de Configurator te starten:"

#~ msgid "Query / Selector"
#~ msgstr "Query / Selector"

#~ msgid ""
#~ "To find specific selectors within @media query blocks, first choose the "
#~ "query, then the selector. Use the \"base\" query to edit all other "
#~ "selectors."
#~ msgstr ""
#~ "Om specifieke selectors binnen @media-queryblokken te vinden, kiest u eerst "
#~ "de query en vervolgens de selector. Gebruik de \"basis\" -query om alle "
#~ "andere selectors te bewerken."

#~ msgid "@media Query"
#~ msgstr "@media Query"

#~ msgid "( or \"base\" )"
#~ msgstr "(of \"basis\")"

#~ msgid "Selector"
#~ msgstr "Selector"

#~ msgid "Query/Selector Action"
#~ msgstr "Query / Selector-actie"

#~ msgid "Save Child Values"
#~ msgstr "Bewaar onderliggende waarden"

#~ msgid "Delete Child Values"
#~ msgstr "Verwijder onderliggende waarden"

#~ msgid "Property"
#~ msgstr "Eigendom"

#~ msgid "Baseline Value"
#~ msgstr "Basiswaarde"

#~ msgid "Child Value"
#~ msgstr "Kindwaarde"

#~ msgid "error"
#~ msgstr "fout"

#~ msgid "You do not have permission to configure child themes."
#~ msgstr "U heeft geen toestemming om onderliggende thema's te configureren."

#, php-format
#~ msgid "%s does not exist. Please select a valid Parent Theme."
#~ msgstr "%s bestaat niet. Selecteer een geldig ouderthema."

#~ msgid "The Functions file is required and cannot be deleted."
#~ msgstr "Het functiebestand is vereist en kan niet worden verwijderd."

#~ msgid "Please select a valid Parent Theme."
#~ msgstr "Selecteer een geldig ouderthema."

#~ msgid "Please select a valid Child Theme."
#~ msgstr "Selecteer een geldig kindthema."

#~ msgid "Please enter a valid Child Theme directory name."
#~ msgstr "Voer een geldige mapnaam voor het kindthema in."

#, php-format
#~ msgid ""
#~ "<strong>%s</strong> exists. Please enter a different Child Theme template "
#~ "name."
#~ msgstr ""
#~ "<strong>%s</strong> bestaat. Voer een andere sjabloonnaam voor het "
#~ "kindthema in."

#~ msgid "Your theme directories are not writable."
#~ msgstr "Uw themamappen zijn niet beschrijfbaar."

#~ msgid "Could not upgrade child theme"
#~ msgstr "Kan child-thema niet upgraden"

#~ msgid "Your stylesheet is not writable."
#~ msgstr "Je stylesheet is niet beschrijfbaar."

#~ msgid ""
#~ "A closing PHP tag was detected in Child theme functions file so \"Parent "
#~ "Stylesheet Handling\" option was not configured. Closing PHP at the end of "
#~ "the file is discouraged as it can cause premature HTTP headers. Please edit "
#~ "<code>functions.php</code> to remove the final <code>?&gt;</code> tag and "
#~ "click \"Generate/Rebuild Child Theme Files\" again."
#~ msgstr ""
#~ "Er is een afsluitende PHP-tag gedetecteerd in het bestand met themafuncties "
#~ "van het kind, dus de optie \"Parent Stylesheet Handling\" was niet "
#~ "geconfigureerd. Het sluiten van PHP aan het einde van het bestand wordt "
#~ "afgeraden omdat dit voortijdige HTTP-headers kan veroorzaken. Bewerk <code> "
#~ "functions.php </code> om de laatste <code>? &gt; </code> -tag te "
#~ "verwijderen en klik nogmaals op \"Generate / Rebuild Child Theme Files\"."

#, php-format
#~ msgid "Could not copy file: %s"
#~ msgstr "Kan bestand %s niet kopiëren"

#, php-format
#~ msgid "Could not delete %s file."
#~ msgstr "Kan %s-bestand niet verwijderen."

#, php-format
#~ msgid "could not copy %s"
#~ msgstr "kan niet kopiëren  %s"

#, php-format
#~ msgid "invalid dir: %s"
#~ msgstr "ongeldige map: %s"

#, php-format
#~ msgid "deleted: %s != %s files"
#~ msgstr "verwijderd: %s != %s files"

#~ msgid "There were errors while resetting permissions."
#~ msgstr "Er zijn fouten opgetreden bij het opnieuw instellen van machtigingen."

#~ msgid "Could not upload file."
#~ msgstr "Kan bestand niet uploaden."

#~ msgid "Invalid theme root directory."
#~ msgstr "Ongeldige hoofddirectory van het thema."

#~ msgid "No writable temp directory."
#~ msgstr "Geen beschrijfbare tijdelijke directory."

#, php-format
#~ msgid "Unpack failed -- %s"
#~ msgstr "Uitpakken mislukt -- %s"

#, php-format
#~ msgid "Pack failed -- %s"
#~ msgstr "Inpakken mislukt -- %s"

#~ msgid "Maximum number of styles exceeded."
#~ msgstr "Maximaal aantal stijlen overschreden."

#, php-format
#~ msgid "Error moving file: %s"
#~ msgstr "Fout bij verplaatsen van bestand:  %s"

#~ msgid "Could not set write permissions."
#~ msgstr "Kan geen schrijfrechten instellen."

#~ msgid "Error:"
#~ msgstr "Fout:"

#, php-format
#~ msgid "Current Analysis Child Theme <strong>%s</strong> has been reset."
#~ msgstr "Huidige analyse kindthema <strong>%s </strong> is gereset."

#~ msgid "Update Key saved successfully."
#~ msgstr "Updatesleutel succesvol opgeslagen."

#~ msgid "Child Theme files modified successfully."
#~ msgstr "Onderliggende themabestanden zijn gewijzigd."

#, php-format
#~ msgid "Child Theme <strong>%s</strong> has been generated successfully."
#~ msgstr "Thema van het kind <strong>%s</strong>is succesvol gegenereerd."

#~ msgid "Web Fonts & CSS"
#~ msgstr "Weblettertypen en CSS"

#~ msgid "Parent Styles"
#~ msgstr "Ouderstijlen"

#~ msgid "Child Styles"
#~ msgstr "Kindstijlen"

#~ msgid "View Child Images"
#~ msgstr "Bekijk kinderafbeeldingen"

#~ msgid ""
#~ "Use <code>@import url( [path] );</code> to link additional stylesheets. "
#~ "This Plugin uses the <code>@import</code> keyword to identify them and "
#~ "convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>"
#~ msgstr ""
#~ "Gebruik <code> @import url ([pad]); </code> om extra stylesheets te "
#~ "koppelen. Deze plug-in gebruikt het sleutelwoord <code> @import </code> om "
#~ "ze te identificeren en om te zetten naar <code> &lt; link &gt; </code> -"
#~ "tags.<strong>Voorbeeld: </strong>"

#~ msgid "Save"
#~ msgstr "Sparen"

#~ msgid "Uploading image with same name will replace with existing image."
#~ msgstr ""
#~ "Als u een afbeelding met dezelfde naam uploadt, wordt deze vervangen door "
#~ "een bestaande afbeelding."

#~ msgid "Upload New Child Theme Image"
#~ msgstr "Upload een nieuwe afbeelding van een kindthema"

#~ msgid "Delete Selected Images"
#~ msgstr "Verwijder geselecteerde afbeeldingen"

#~ msgid "Create a New Directory"
#~ msgstr "Maak een nieuwe directory"

#~ msgid "New Directory will be created in"
#~ msgstr "Er wordt een nieuwe directory aangemaakt in"

#~ msgid "New Directory Name"
#~ msgstr "Nieuwe directorynaam"

#~ msgid "Create a New File"
#~ msgstr "Maak een nieuw bestand"

#~ msgid "New File will be created in"
#~ msgstr "Er wordt een nieuw bestand gemaakt in"

#~ msgid "New File Name"
#~ msgstr "Nieuwe bestandsnaam"

#~ msgid "File Type Extension"
#~ msgstr "Bestandstype-extensie"

#~ msgid "Choose File Type"
#~ msgstr "Kies Bestandstype"

#~ msgid "PHP File"
#~ msgstr "PHP-bestand"

#~ msgid "CSS File"
#~ msgstr "CSS-bestand"

#~ msgid "JS File"
#~ msgstr "JS-bestand"

#~ msgid "Text File"
#~ msgstr "Tekstbestand"

#~ msgid "PHP File Type"
#~ msgstr "PHP-bestandstype"

#~ msgid "Simple PHP File"
#~ msgstr "Eenvoudig PHP-bestand"

#~ msgid "Wordpress Template File"
#~ msgstr "Wordpress-sjabloonbestand"

#~ msgid "Template Name"
#~ msgstr "Sjabloonnaam"

#~ msgid "Parent Templates"
#~ msgstr "Ouder-sjablonen"

#~ msgid ""
#~ "Copy PHP templates from the parent theme by selecting them here. The "
#~ "Configurator defines a template as a Theme PHP file having no PHP functions "
#~ "or classes. Other PHP files cannot be safely overridden by a child theme."
#~ msgstr ""
#~ "Kopieer PHP-sjablonen van het hoofdthema door ze hier te selecteren. De "
#~ "configurator definieert een sjabloon als een PHP-themabestand zonder PHP-"
#~ "functies of klassen. Andere PHP-bestanden kunnen niet veilig worden "
#~ "overschreven door een child-thema."

#~ msgid ""
#~ "CAUTION: If your child theme is active, the child theme version of the file "
#~ "will be used instead of the parent immediately after it is copied."
#~ msgstr ""
#~ "LET OP: Als uw child-thema actief is, wordt de child-themaversie van het "
#~ "bestand gebruikt in plaats van de parent onmiddellijk nadat het is "
#~ "gekopieerd."

#~ msgid "The "
#~ msgstr "De"

#~ msgid " file is generated separately and cannot be copied here. "
#~ msgstr ""
#~ "bestand wordt afzonderlijk gegenereerd en kan hier niet worden gekopieerd."

#~ msgid "Copy Selected to Child Theme"
#~ msgstr "Kopieer geselecteerd naar onderliggend thema"

#~ msgid " Child Theme Files "
#~ msgstr "Onderliggende themabestanden"

#~ msgid "Click to edit files using the Theme Editor"
#~ msgstr "Klik om bestanden te bewerken met de thema-editor"

#~ msgid "Delete child theme templates by selecting them here."
#~ msgstr "Verwijder child-themasjablonen door ze hier te selecteren."

#~ msgid "Delete Selected"
#~ msgstr "Verwijder geselecteerde"

#~ msgid "Child Theme Screenshot"
#~ msgstr "Screenshot van het kindthema"

#~ msgid "Upload New Screenshot"
#~ msgstr "Upload een nieuwe screenshot"

#~ msgid ""
#~ "The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG "
#~ "or GIF. It will be renamed"
#~ msgstr ""
#~ "Het screenshot van het thema moet een 4: 3-verhouding hebben (bijvoorbeeld "
#~ "880px x 660px) JPG, PNG of GIF. Het wordt hernoemd"

#~ msgid "Screenshot"
#~ msgstr "Screenshot"

#~ msgid "Upload New Child Theme Image "
#~ msgstr "Upload een nieuwe afbeelding van een kindthema"

#~ msgid ""
#~ "Theme images reside under the images directory in your child theme and are "
#~ "meant for stylesheet use only. Use the Media Library for content images."
#~ msgstr ""
#~ "Thema-afbeeldingen bevinden zich in de afbeeldingenmap in uw child-thema en "
#~ "zijn alleen bedoeld voor gebruik in stylesheets. Gebruik de "
#~ "mediabibliotheek voor inhoudsafbeeldingen."

#~ msgid "Preview Current Child Theme (Current analysis)"
#~ msgstr "Voorbeeld van huidig kindthema  (huidige analyse)"

#~ msgid "Preview Current Child Theme"
#~ msgstr "Voorbeeld van huidig kindthema"

#~ msgid "Export Child Theme as Zip Archive"
#~ msgstr "Exporteer kindthema als zip-archief"

#~ msgid ""
#~ "Click \"Export Zip\" to save a backup of the currently loaded child theme. "
#~ "You can export any of your themes from the Parent/Child tab."
#~ msgstr ""
#~ "Klik op \"Zip exporteren\" om een ​​back-up van het momenteel geladen child-"
#~ "thema op te slaan. U kunt al uw thema's exporteren vanaf het tabblad "
#~ "Ouder / kind."

#~ msgid "Export Child Theme"
#~ msgstr "Kindthema exporteren"

#~ msgid "Child Theme file(s) copied successfully!"
#~ msgstr "Child Theme file (s) succesvol gekopieerd!"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates does not exist"
#~ msgstr ""
#~ "Het bestand dat u probeert te kopiëren van bovenliggende sjablonen, bestaat "
#~ "niet"

#~ msgid ""
#~ "The file which you are trying to copy from Parent Templates is already "
#~ "present in the Child Theme files."
#~ msgstr ""
#~ "Het bestand dat u probeert te kopiëren van bovenliggende sjablonen, is al "
#~ "aanwezig in de onderliggende themabestanden."

#~ msgid "Child "
#~ msgstr "Kind"

#~ msgid " and Parent "
#~ msgstr "en ouder"

#~ msgid " directories doesn't exist!"
#~ msgstr "mappen bestaan niet!"

#~ msgid " directory doesn't exist!"
#~ msgstr "directory bestaat niet!"

#~ msgid "Parent "
#~ msgstr "Ouder"

#~ msgid "Unknown error! "
#~ msgstr "Onbekende fout!"

#~ msgid "You don't have permission to copy the files!"
#~ msgstr "U heeft geen toestemming om de bestanden te kopiëren!"

#~ msgid "All selected file(s) have been deleted successfully!"
#~ msgstr "Alle geselecteerde bestanden zijn succesvol verwijderd!"

#~ msgid " does not exists!"
#~ msgstr "bestaat niet!"

#~ msgid "This file extension is not allowed to upload!"
#~ msgstr "Deze bestandsextensie mag niet worden geüpload!"

#~ msgid "Image uploaded successfully!"
#~ msgstr "Afbeelding succesvol geüpload!"

#~ msgid "There is some issue in uploading image!"
#~ msgstr "Er is een probleem bij het uploaden van afbeeldingen!"

#~ msgid ""
#~ "This file extension is not allowed to upload as screenshot by wordpress!"
#~ msgstr ""
#~ "Deze bestandsextensie mag niet worden geüpload als screenshot door "
#~ "wordpress!"

#~ msgid "File uploaded successfully!"
#~ msgstr "Bestand succesvol geüpload!"

#~ msgid "Child Theme files can't be modified."
#~ msgstr "Onderliggende themabestanden kunnen niet worden gewijzigd."

#~ msgid "File(s) deleted successfully!"
#~ msgstr "Bestand (en) succesvol verwijderd!"

#~ msgid "You don't have permission to delete file(s)!"
#~ msgstr "U heeft geen toestemming om bestand (en) te verwijderen!"

#~ msgid "Entered directory name already exists"
#~ msgstr "De ingevoerde directorynaam bestaat al"

#~ msgid "You don't have permission to create directory!"
#~ msgstr "U bent niet gemachtigd om een ​​directory te maken!"

#~ msgid "Wordpress template file created"
#~ msgstr "Wordpress-sjabloonbestand gemaakt"

#~ msgid "Wordpress template file not created"
#~ msgstr "Wordpress-sjabloonbestand niet gemaakt"

#~ msgid "PHP created file successfully"
#~ msgstr "PHP heeft het bestand succesvol gemaakt"

#~ msgid "PHP file not created"
#~ msgstr "PHP-bestand is niet gemaakt"

#~ msgid " file not created"
#~ msgstr "bestand niet gemaakt"

#~ msgid "Already exists"
#~ msgstr "Bestaat al"

#~ msgid "You don't have permission to create file!"
#~ msgstr "U bent niet gemachtigd om een bestand  te maken!"

#~ msgid "create, edit, upload, download, delete Theme Files and folders"
#~ msgstr "maak, bewerk, upload, download, verwijder themabestanden en mappen"

#~ msgid "Language folder has been downlaoded."
#~ msgstr "Taalmap is gedownload."
languages/wp-file-manager-zh_CN.po000064400000062466147361034410013045 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 13:08+0530\n"
"PO-Revision-Date: 2022-02-28 13:11+0530\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: \n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "主题备份已成功恢复。"

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "无法恢复主题。"

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "上传备份成功恢复。"

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "无法恢复上传。"

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "其他备份恢复成功。"

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "无法恢复其他人。"

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "插件备份已成功恢复。"

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "无法恢复插件。"

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "数据库备份恢复成功。"

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "全做完了"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "无法恢复数据库备份。"

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "备份删除成功!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "无法删除备份!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "数据库备份在日期完成 "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "插件备份在日期完成 "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "主题备份在日期完成 "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "上传备份完成日期 "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "其他备份在日期完成 "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "日志"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "没有找到日志!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "未选择任何备份"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "安全问题。"

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "数据库备份完成。"

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "无法创建数据库备份。"

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "插件备份完成。"

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "插件备份失败。"

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "主题备份完成。"

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "主题备份失败。"

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "上传备份完成。"

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "上传备份失败。"

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "其他备份完成。"

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "其他备份失败。"

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP文件管理器"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "设置"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "首选项"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "系统属性"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "简码 - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "备份/恢复"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "购买专业版"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "捐"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "要下载的文件不存在。"

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "安全代码无效。"

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "缺少备份 ID。"

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "缺少参数类型。"

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "缺少必需的参数。"

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"错误:无法恢复备份,因为数据库备份过大。请尝试从首选项设置中增加最大允许大"
"小。"

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "选择要删除的备份!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "您确定要删除选定的备份吗?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "正在备份,请稍候"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "正在恢复,请稍候"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "未选择任何备份。"

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP 文件管理器 - 备份/恢复"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "备份选项:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "数据库备份"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "文件备份"

#: inc/backup.php:68
msgid "Plugins"
msgstr "插件"

#: inc/backup.php:71
msgid "Themes"
msgstr "主题"

#: inc/backup.php:74
msgid "Uploads"
msgstr "上传"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "其他(在 wp-content 中找到的任何其他目录)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "立即备份"

#: inc/backup.php:89
msgid "Time now"
msgstr "是时候了"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "成功"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "备份已成功删除。"

#: inc/backup.php:102
msgid "Ok"
msgstr "好的"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "删除文件"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "您确定要删除此备份吗?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "取消"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "确认"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "恢复文件"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "您确定要恢复此备份吗?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "最后一条日志消息"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "备份显然成功了,现在已经完成。"

#: inc/backup.php:171
msgid "No log message"
msgstr "没有日志消息"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "现有备份"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "备份日期"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "备份数据(点击下载)"

#: inc/backup.php:190
msgid "Action"
msgstr "行动"

#: inc/backup.php:210
msgid "Today"
msgstr "今天"

#: inc/backup.php:239
msgid "Restore"
msgstr "恢复"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "删除"

#: inc/backup.php:241
msgid "View Log"
msgstr "查看日志"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "目前没有找到备份。"

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "对选定备份的操作"

#: inc/backup.php:251
msgid "Select All"
msgstr "全选"

#: inc/backup.php:252
msgid "Deselect"
msgstr "取消选择"

#: inc/backup.php:254
msgid "Note:"
msgstr "笔记:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "备份文件将在"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "WP 文件管理器贡献"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr "注意:这些是演示屏幕截图。请购买文件管理器 pro 到日志功能。"

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "点击购买专业版"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "购买专业版"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "编辑文件日志"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "下载文件日志"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "上传文件日志"

#: inc/root.php:43
msgid "Settings saved."
msgstr "设置已保存。"

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "忽略此通知。"

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "您尚未进行任何要保存的更改。"

#: inc/root.php:55
msgid "Public Root Path"
msgstr "公共根路径"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "文件管理器根路径,你可以根据你的选择改变。"

#: inc/root.php:59
msgid "Default:"
msgstr "默认:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr "请小心更改,错误的路径会导致文件管理器插件失效。"

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "启用垃圾箱?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "启用垃圾箱后,您的文件将进入垃圾箱文件夹。"

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "启用文件上传到媒体库?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "启用此功能后,所有文件都将转到媒体库。"

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "数据库备份还原时允许的最大大小。"

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr "如果您在备份还原时收到错误消息,请增加字段值。"

#: inc/root.php:90
msgid "Save Changes"
msgstr "保存更改"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "设置 - 常规"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr "注意:这只是一个演示屏幕截图。要获得设置,请购买我们的专业版。"

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"在这里 admin 可以授予对用户角色的访问权限以使用文件管理器。管理员可以设置默认"
"访问文件夹并控制文件管理器的上传大小。"

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "设置 - 代码编辑器"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"文件管理器具有多个主题的代码编辑器。您可以为代码编辑器选择任何主题。它会在您"
"编辑任何文件时显示。您也可以允许代码编辑器的全屏模式。"

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "代码编辑器视图"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "设置 - 用户限制"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"管理员可以限制任何用户的操作。还可以隐藏文件和文件夹,并可以为不同的用户设置"
"不同的文件夹路径。"

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "设置 - 用户角色限制"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"管理员可以限制任何用户角色的操作。还可以隐藏文件和文件夹,并可以为不同的用户"
"角色设置不同的文件夹路径。"

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "文件管理器 - 简码"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "用:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"它将在前端显示文件管理器。您可以从文件管理器设置中控制所有设置。它将与后端 "
"WP 文件管理器相同。"

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"它将在前端显示文件管理器。但只有管理员可以访问它,并将通过文件管理器设置进行"
"控制。"

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "参数:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"它将允许所有角色访问前端的文件管理器,或者您可以简单地使用特定的用户角色,例"
"如 allowed_roles=\"editor,author\" (用逗号(,)分隔)"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"这里的“test”是位于根目录的文件夹的名称,或者您可以为子文件夹提供路径,如“wp-"
"content/plugins”。如果留空或为空,它将访问根目录上的所有文件夹。默认值:根目"
"录"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "获取写文件权限,注意:true/false,默认:false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "获取读取文件权限,注意:true/false,默认:true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "它会隐藏这里提到的。注意:用逗号(,)分隔。默认值:空"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"它将锁定逗号中提到的。您可以锁定更多,如“.php、.css、.js”等。默认值:Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* 对于所有操作并允许某些操作,您可以提及操作名称,allowed_operations="
"\"upload,download\"。注意:用逗号(,)分隔。默认: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "文件操作列表:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "制作目录或文件夹"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "制作文件"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "重命名文件或文件夹"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "复制或克隆文件夹或文件"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "粘贴文件或文件夹"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "ban"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "制作存档或压缩文件"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "提取存档或压缩文件"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "复制文件或文件夹"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "简单剪切文件或文件夹"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "编辑文件"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "移除或删除文件和文件夹"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "下载文件"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "上传文件"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "搜索东西"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "文件信息"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "帮助"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> 它将通过将特定用户的 id 用逗号 (,) 分隔来禁止特定用户。如果用户是 Ban,那"
"么他们将无法访问前端的 wp 文件管理器。"

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> 文件管理器 UI 视图。默认值:grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> 文件修改或创建日期格式。默认值:d M, Y h:i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> 文件管理器语言。默认值: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> 文件管理器主题。默认值:Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "文件管理器 - 系统属性"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP版本"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "最大文件上传大小 (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "发布最大文件上传大小 (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "内存限制 (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "超时(max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "浏览器和操作系统 (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "在此处更改主题:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "默认"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "黑暗的"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "光"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "灰色的"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "欢迎使用文件管理器"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"我们喜欢结交新朋友!在下面订阅,我们承诺\n"
"    让您及时了解我们最新的插件、更新、\n"
"    很棒的交易和一些特别优惠。"

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "请输入名字。"

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "请输入姓氏。"

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "请输入电子邮件地址。"

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "核实"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "不,谢谢"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "服务条款"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "隐私政策"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "保存..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "好的"

#~ msgid "Backup not found!"
#~ msgstr "未找到备份!"

#~ msgid "Backup removed successfully!"
#~ msgstr "备份删除成功!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr "<span class=\"fm_console_error\">没有选择备份</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">安全问题。</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">数据库备份完成。</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr "<span class=\"fm_console_error\">无法创建数据库备份。</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">插件备份完成。</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">插件备份失败。</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">主题备份完成。</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">主题备份失败。</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">上传备份完成。</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">上传备份失败。</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">其他备份完成。</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">其他备份失败。</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">全部完成</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "管理您的WP文件"

#~ msgid "Extensions"
#~ msgstr "扩展"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr "请提供一些捐款,使插件更加稳定。你可以支付你选择的金额。"
languages/wp-file-manager-hr.po000064400000067114147361034410012450 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 10:25+0530\n"
"PO-Revision-Date: 2022-03-03 12:32+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n"
"%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "Sigurnosna kopija tema uspješno je vraćena."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "Nije moguće vratiti teme."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "Sigurnosna kopija prijenosa uspješno je vraćena."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "Prijenos nije moguće vratiti."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "Ostale sigurnosne kopije uspješno su vraćene."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "Nije moguće vratiti druge."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "Sigurnosna kopija dodataka uspješno je vraćena."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "Nije moguće vratiti dodatke."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "Sigurnosna kopija baze podataka uspješno je vraćena."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "Sve Gotovo"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "Nije moguće vratiti sigurnosnu kopiju DB-a."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "Sigurnosne kopije uspješno su uklonjene!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "Nije moguće ukloniti sigurnosnu kopiju!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "Izrada sigurnosne kopije baze podataka na datum "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "Izrada sigurnosne kopije dodataka izvršena na datum "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "Izrada sigurnosne kopije tema na datum "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "Prenosi sigurnosne kopije izvršene na datum "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "Ostale sigurnosne kopije izvršene na datum "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "Trupci"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "Nije pronađen nijedan zapisnik!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "Ništa nije odabrano za sigurnosnu kopiju"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "Sigurnosno pitanje."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "Izvršeno sigurnosno kopiranje baze podataka."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "Nije moguće stvoriti sigurnosnu kopiju baze podataka."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "Dovršeno sigurnosno kopiranje dodataka."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "Sigurnosno kopiranje dodataka nije uspjelo."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "Izvršeno sigurnosno kopiranje tema."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "Sigurnosno kopiranje tema nije uspjelo."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "Sigurnosna kopija prijenosa je gotova."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "Sigurnosna kopija prijenosa nije uspjela."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "Ostala sigurnosna kopija napravljena."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "Others backup failed."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "WP upravitelj datoteka"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "Postavke"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "preferencijama"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "Svojstva sustava"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Kratki kod – PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "Sigurnosno kopiranje/vraćanje"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "Kupite Pro"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "darovati"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "Datoteka ne postoji za preuzimanje."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "Nevažeći sigurnosni kod."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "Nedostaje sigurnosna kopija."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "Nedostaje vrsta parametra."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "Nedostaju potrebni parametri."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"Pogreška: nije moguće vratiti sigurnosnu kopiju jer je sigurnosna kopija "
"baze podataka velika. Pokušajte povećati maksimalnu dopuštenu veličinu u "
"postavkama Preference."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "Odaberite sigurnosnu(e) kopiju(e) za brisanje!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "Jeste li sigurni da želite ukloniti odabrane sigurnosne kopije?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "Izrada sigurnosne kopije, pričekajte"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "Vraćanje je u tijeku, pričekajte"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "Ništa nije odabrano za sigurnosnu kopiju."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "WP upravitelj datoteka - Sigurnosna kopija / Vraćanje"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "Opcije sigurnosne kopije:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "Sigurnosna kopija baze podataka"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "Sigurnosna kopija datoteka"

#: inc/backup.php:68
msgid "Plugins"
msgstr "Dodaci"

#: inc/backup.php:71
msgid "Themes"
msgstr "Teme"

#: inc/backup.php:74
msgid "Uploads"
msgstr "Prijenosi"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "Ostalo (Bilo koji drugi direktorij koji se nalazi unutar wp-sadržaja)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "Napravite sigurnosnu kopiju odmah"

#: inc/backup.php:89
msgid "Time now"
msgstr "Vrijeme je sada"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "USPJEH"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "Sigurnosna kopija uspješno je izbrisana."

#: inc/backup.php:102
msgid "Ok"
msgstr "U redu"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "OBRIŠI DATOTEKE"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "Jeste li sigurni da želite izbrisati ovu sigurnosnu kopiju?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "Otkazati"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "Potvrdite"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "VRAĆI DATOTEKE"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "Jeste li sigurni da želite vratiti ovu sigurnosnu kopiju?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "Posljednja poruka dnevnika"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "Sigurnosna kopija očito je uspjela i sada je gotova."

#: inc/backup.php:171
msgid "No log message"
msgstr "Nema poruke dnevnika"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "Postojeće sigurnosne kopije"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "Datum sigurnosne kopije"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "Sigurnosna kopija podataka (kliknite za preuzimanje)"

#: inc/backup.php:190
msgid "Action"
msgstr "Akcijski"

#: inc/backup.php:210
msgid "Today"
msgstr "Danas"

#: inc/backup.php:239
msgid "Restore"
msgstr "Vratiti"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "Izbrisati"

#: inc/backup.php:241
msgid "View Log"
msgstr "Prikaži zapisnik"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "Trenutno nije pronađena nijedna sigurnosna kopija."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "Radnje po odabranim sigurnosnim kopijama"

#: inc/backup.php:251
msgid "Select All"
msgstr "Odaberi sve"

#: inc/backup.php:252
msgid "Deselect"
msgstr "Poništi odabir"

#: inc/backup.php:254
msgid "Note:"
msgstr "Bilješka:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "Datoteke za sigurnosne kopije bit će pod"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "Doprinos WP upravitelja datoteka"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"Napomena: Ovo su demo snimke zaslona. Molimo kupite File Manager pro za "
"funkcije Logs."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "Kliknite za kupnju PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "Kupite PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "Uredi zapisnike datoteka"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "Preuzmite zapisnike datoteka"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "Učitaj zapisnike datoteka"

#: inc/root.php:43
msgid "Settings saved."
msgstr "Postavke spremljene."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "Odbaci ovu obavijest."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "Niste unijeli nikakve promjene koje želite spremiti."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "Javni korijenski put"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr ""
"Korijenski put upravitelja datoteka, možete promijeniti prema vašem izboru."

#: inc/root.php:59
msgid "Default:"
msgstr "Zadano:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr ""
"Molimo pažljivo promijenite ovo, pogrešan put može dovesti do pada dodatka "
"za upravljanje datotekama."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "Omogućiti otpad?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "Nakon omogućavanja otpada, vaše će datoteke ići u mapu smeća."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "Omogućiti prijenos datoteka u biblioteku medija?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "Nakon što ovo omogućite, sve će datoteke ići u medijateku."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr ""
"Maksimalna dopuštena veličina u vrijeme vraćanja sigurnosne kopije baze "
"podataka."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr ""
"Molimo povećajte vrijednost polja ako dobijete poruku o pogrešci u vrijeme "
"vraćanja iz sigurnosne kopije."

#: inc/root.php:90
msgid "Save Changes"
msgstr "Spremi promjene"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "Postavke - Općenito"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"Napomena: Ovo je samo demo snimak zaslona. Da biste dobili postavke, kupite "
"našu pro verziju."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"Ovdje administrator može dati pristup korisničkim ulogama za korištenje "
"upravitelja datoteka. Administrator može postaviti zadanu mapu za pristup i "
"također kontrolirati veličinu prijenosa upravitelja datoteka."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "Postavke - Uređivač koda"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"Upravitelj datoteka ima uređivač koda s više tema. Za uređivač koda možete "
"odabrati bilo koju temu. Prikazat će se kad uredite bilo koju datoteku. "
"Također možete dopustiti način cijelog zaslona uređivača koda."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "Prikaz uređivača koda"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "Postavke - Korisnička ograničenja"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"Administrator može ograničiti radnje bilo kojeg korisnika. Također možete "
"sakriti datoteke i mape i možete postaviti različite putanje mapa za "
"različite korisnike."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "Postavke - Ograničenja uloga korisnika"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"Administrator može ograničiti radnje bilo koje korisničke uloge. Također "
"možete sakriti datoteke i mape i možete postaviti različite putanje mapa za "
"različite uloge korisnika."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "Upravitelj datoteka - kratki kod"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "KORISTITI:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"Na prednjem kraju će se prikazati upravitelj datoteka. Možete kontrolirati "
"sve postavke iz postavki upravitelja datoteka. Radit će isto kao backend WP "
"upravitelj datoteka."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"Na prednjem kraju će se prikazati upravitelj datoteka. Ali samo mu "
"administrator može pristupiti i kontrolirat će iz postavki upravitelja "
"datoteka."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "Parametri:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"Omogućit će svim ulogama pristup upravitelju datoteka na prednjem kraju ili "
"možete jednostavno koristiti za određene korisničke uloge kao što je "
"dopušteno_roles=\"urednik,autor\" (odvojeno zarezom(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"Ovdje je \"test\" naziv mape koja se nalazi u korijenskom direktoriju, ili "
"možete dati put za podmape poput \"wp-content/plugins\". Ako ostavite prazno "
"ili prazno, pristupit će svim mapama u korijenskom direktoriju. Zadano: "
"korijenski direktorij"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr ""
"za pristup dopuštenjima za pisanje datoteka, napomena: true/false, default: "
"false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr ""
"za dopuštenje za pristup čitanju datoteka, napomena: true/false, default: "
"true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr ""
"sakriti će ovdje spomenuto. Napomena: odvojeno zarezom (,). Zadano: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"Zaključat će se spomenuto u zarezima. možete zaključati više poput \".php,."
"css,.js\" itd. Zadana postavka: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* za sve operacije i za dopuštanje neke operacije možete spomenuti naziv "
"operacije kao, dozvoljeno_operacije=\"upload,download\". Napomena: odvojeno "
"zarezom (,). Zadano: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "Popis operacija datoteka:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "Napravite direktorij ili mapu"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "Napravi datoteku"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "Preimenujte datoteku ili mapu"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "Duplicirajte ili klonirajte mapu ili datoteku"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "Zalijepite datoteku ili mapu"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "Zabrana"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "Da napravite arhivu ili zip"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "Izdvojite arhivu ili arhiviranu datoteku"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "Kopirajte datoteke ili mape"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "Jednostavno izrežite datoteku ili mapu"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "Uredite datoteku"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "Uklonite ili izbrišite datoteke i mape"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "Preuzmi datoteke"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "Učitaj datoteke"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "Pretražite stvari"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "Podaci o datoteci"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "Pomozite"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> Zabranit će određenim korisnicima stavljanjem njihovih ID-ova razdvojenih "
"zarezima (,). Ako je korisnik Ban, tada neće moći pristupiti upravitelju "
"datoteka wp s prednje strane."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> Prikaz korisničkog sučelja Filemanager-a. Zadano: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr ""
"-> Izmijenjena datoteka ili Stvori format datuma. Zadano: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> Jezik upravitelja datotekama. Zadano: English(en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> Tema Upravitelja datoteka. Zadano: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "Upravitelj datoteka - Svojstva sustava"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "PHP verzija"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "Maksimalna veličina za prijenos datoteke (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "Objavi maksimalnu veličinu za prijenos datoteke (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "Ograničenje memorije (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "Istek vremena (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "Preglednik i OS (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "Promijenite temu ovdje:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "Zadano"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "Mračno"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "Svjetlo"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "Siva"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "Dobrodošli u File Manager"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"Volimo sklapati nova prijateljstva! Pretplatite se u nastavku i obećavamo\n"
"    biti u toku s našim najnovijim novim dodacima, ažuriranjima,\n"
"    sjajne ponude i nekoliko posebnih ponuda."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "Unesite ime."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "Unesite prezime."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "Unesite adresu e-pošte."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "Potvrdite"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "Ne hvala"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "Uvjeti pružanja usluge"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "Pravila o privatnosti"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "Spremanje ..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "u redu"

#~ msgid "Backup not found!"
#~ msgstr "Sigurnosna kopija nije pronađena!"

#~ msgid "Backup removed successfully!"
#~ msgstr "Sigurnosna kopija uspješno je uklonjena!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Ništa nije odabrano za sigurnosnu "
#~ "kopiju</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">Pitanje sigurnosti.</span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Izrađena sigurnosna kopija baze "
#~ "podataka.</span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Nije moguće stvoriti sigurnosnu kopiju "
#~ "baze podataka.</span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Izrađena sigurnosna kopija dodataka.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Izrada sigurnosne kopije dodataka nije "
#~ "uspjela.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Izrađeno sigurnosno kopiranje tema.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Izrada sigurnosne kopije tema nije "
#~ "uspjela.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Prijenosi sigurnosne kopije izvršeni.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sigurnosna kopija prijenosa nije uspjela."
#~ "</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_success\">Ostali sigurnosna kopija gotova.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">Sigurnosna kopija drugih nije uspjela.</"
#~ "span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">Sve gotovo</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "Upravljanje WP datotekama."

#~ msgid "Extensions"
#~ msgstr "Proširenja"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "Priložite neku donaciju kako biste dodatak stabilniji. Možete platiti "
#~ "iznos po vašem izboru."
languages/wp-file-manager-hi_IN.mo000064400000066056147361034410013026 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&zm(��)\�+��+t�,h-�-?�-��-��/�v1�(2$�2k�2ig3��3]4&z4#�4o�4K55a�5U�596LV6�6;�6�67 7':7Mb7,�7�7L�7VJ8&�8�8%�8W�8?V9��9:6:P:`:=s:	�:B�:8�:�7;B�;9�;|5<-�<��<"t>Z�>@�>D3?�x?b@0uBj�B%C7C	DC@NC%�E,�G/�G�H��IW�J�L)�M�M�MH�M*N�GNU�NG,OAtOP�OBP*JP0uP.�P
�P��P�QU�RXSoS�S��SNT6hT,�T}�TJUdUI~UC�UFVFSV��V��W{XZ�X<�X8'Y�`Yl�YWZ%dZ/�ZG�ZY[M\[$�[v�[F\KV\*�\�\,�\$]A?]�]7�]*�]R�]eP^<�^'�^M_&i_&�_}�_5`KB`3�`)�`z�`ga1xaG�a�a �aUbCpbV�bkcqwck�chUd<�d&�d"eQ8e3�e9�e��e%yf�f(�fa�f;Dg��gVi�ti��i��j�k}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 10:24+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: hi_IN
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* सभी ऑपरेशनों के लिए और कुछ ऑपरेशन की अनुमति देने के लिए आप ऑपरेशन नाम का उल्लेख कर सकते हैं जैसे, allow_operations="upload,download"। नोट: अल्पविराम (,) से अलग। चूक जाना: *-> यह विशेष उपयोगकर्ताओं को केवल अल्पविराम (,) द्वारा अलग-अलग आईडी डालकर प्रतिबंधित कर देगा। अगर यूजर बैन है तो वे फ्रंट एंड पर wp फाइल मैनेजर को एक्सेस नहीं कर पाएंगे।-> फ़ाइल प्रबंधक थीम। डिफ़ॉल्ट: लाइट-> फ़ाइल संशोधित या दिनांक स्वरूप बनाएँ। डिफ़ॉल्ट: डी एम, वाई एच: मैं ए-> फ़ाइल प्रबंधक भाषा। डिफ़ॉल्ट: अंग्रेजी (एन)-> फ़ाइल प्रबंधक UI देखें। डिफ़ॉल्ट: ग्रिडकार्यचयनित बैकअप पर कार्रवाईव्यवस्थापक किसी भी उपयोगकर्ता के कार्यों को प्रतिबंधित कर सकता है। फ़ाइलों और फ़ोल्डरों को भी छुपाएं और अलग-अलग उपयोगकर्ताओं के लिए अलग-अलग फ़ोल्डर पथ सेट कर सकते हैं।व्यवस्थापक किसी भी उपयोगकर्ता भूमिका की कार्रवाइयों को प्रतिबंधित कर सकता है। फ़ाइलों और फ़ोल्डरों को भी छुपाएं और अलग-अलग उपयोगकर्ता भूमिकाओं के लिए अलग-अलग फ़ोल्डर पथ सेट कर सकते हैं।ट्रैश को इनेबल करने के बाद आपकी फाइल्स ट्रैश फोल्डर में चली जाएंगी।इसे सक्षम करने के बाद सभी फाइलें मीडिया लाइब्रेरी में चली जाएंगी।सब कुछ कर दियाक्या आप वाकई चयनित बैकअप हटाना चाहते हैं?क्या आप वाकई इस बैकअप को हटाना चाहते हैं?क्या आप वाकई इस बैकअप को पुनर्स्थापित करना चाहते हैं?बैकअप तिथिअब समर्थन देनाबैकअप विकल्प:बैकअप डेटा (डाउनलोड करने के लिए क्लिक करें)बैकअप फ़ाइलें अंतर्गत होंगीबैकअप चल रहा है, कृपया प्रतीक्षा करेंबैकअप सफलतापूर्वक हटा दिया गया।बैकअप बहालबैकअप सफलतापूर्वक निकाले गए!प्रतिबंधब्राउज़र और ओएस (HTTP_USER_AGENT)PRO खरीदेPRO खरीदेरद्द करनायहां थीम बदलें:प्रो खरीदने के लिए क्लिक करेंकोड-संपादक दृश्यपुष्टि करेंफ़ाइलें या फ़ोल्डर कॉपी करेंवर्तमान में कोई बैकअप नहीं मिला।फाइलों को नष्टडार्कडेटाबेस बैकअपडेटाबेस बैकअप दिनांक को किया गया डेटाबेस बैकअप किया गया।डेटाबेस बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।डिफ़ॉल्टडिफ़ॉल्ट:हटाएंअचयनितइस नोटिस को खारिज करें।दानफ़ाइलें लॉग डाउनलोड करेंफ़ाइलें डाउनलोड करेंकिसी फ़ोल्डर या फ़ाइल को डुप्लिकेट या क्लोन करेंफ़ाइलें लॉग संपादित करेंएक फ़ाइल संपादित करेंमीडिया लाइब्रेरी में फ़ाइलें अपलोड सक्षम करें?ट्रैश सक्षम करें?त्रुटि: बैकअप को पुनर्स्थापित करने में असमर्थ क्योंकि डेटाबेस बैकअप आकार में भारी है। कृपया वरीयताएँ सेटिंग से अधिकतम अनुमत आकार बढ़ाने का प्रयास करें।मौजूदा बैकअपसंग्रह या ज़िप की गई फ़ाइल निकालेंफ़ाइल प्रबंधक - शोर्टकोडफ़ाइल प्रबंधक - सिस्टम गुणफ़ाइल प्रबंधक रूट पाथ, आप अपनी पसंद के अनुसार बदल सकते हैं।फ़ाइल प्रबंधक में कई विषयों के साथ एक कोड संपादक होता है। आप कोड संपादक के लिए किसी भी विषय का चयन कर सकते हैं। जब आप किसी फ़ाइल को संपादित करते हैं तो यह प्रदर्शित होगा। इसके अलावा आप कोड संपादक के फुलस्क्रीन मोड की अनुमति दे सकते हैं।फ़ाइल संचालन सूची:फ़ाइल डाउनलोड करने के लिए मौजूद नहीं है।फ़ाइलें बैकअपग्रेमददयहां "परीक्षण" फ़ोल्डर का नाम है जो रूट निर्देशिका पर स्थित है, या आप "wp-content/plugins" जैसे उप फ़ोल्डरों के लिए पथ दे सकते हैं। यदि खाली या खाली छोड़ दें तो यह रूट निर्देशिका पर सभी फ़ोल्डरों तक पहुंच जाएगा। डिफ़ॉल्ट: रूट निर्देशिकायहां व्यवस्थापक फ़ाइल प्रबंधक का उपयोग करने के लिए उपयोगकर्ता भूमिकाओं तक पहुंच प्रदान कर सकता है। व्यवस्थापक डिफ़ॉल्ट एक्सेस फ़ोल्डर सेट कर सकता है और फ़ाइल प्रबंधक के अपलोड आकार को भी नियंत्रित कर सकता है।फ़ाइल की जानकारीअवैध सुरक्षा कोड।यह सभी भूमिकाओं को फ्रंट एंड पर फ़ाइल प्रबंधक तक पहुंचने की अनुमति देगा या आप विशेष उपयोगकर्ता भूमिकाओं के लिए सरल उपयोग कर सकते हैं जैसे allow_roles="editor,author" (अल्पविराम (,) द्वारा अलग)यह कॉमा में उल्लिखित लॉक हो जाएगा। आप ".php,.css,.js" आदि की तरह अधिक लॉक कर सकते हैं। डिफ़ॉल्ट: नलयह फ्रंट एंड पर फाइल मैनेजर दिखाएगा। लेकिन केवल व्यवस्थापक ही इसे एक्सेस कर सकता है और फ़ाइल प्रबंधक सेटिंग्स से नियंत्रित करेगा।यह फ्रंट एंड पर फाइल मैनेजर दिखाएगा। आप फ़ाइल प्रबंधक सेटिंग्स से सभी सेटिंग्स को नियंत्रित कर सकते हैं। यह बैकएंड WP फाइल मैनेजर की तरह ही काम करेगा।अंतिम लॉग संदेशलाइटलॉग्सडायरेक्टरी या फोल्डर बनाएंफ़ाइल बनाओडेटाबेस बैकअप पुनर्स्थापना के समय अधिकतम अनुमत आकार।अधिकतम फ़ाइल अपलोड आकार (upload_max_filesize)मेमोरी लिमिट (मेमोरी_लिमिट)बैकअप आईडी मौजूद नहीं है.पैरामीटर प्रकार मौजूद नहीं है.आवश्यक पैरामीटर गुम हैं।जी नहीं, धन्यवादकोई लॉग संदेश नहींकोई लॉग नहीं मिला!नोट:नोट: ये डेमो स्क्रीनशॉट हैं। कृपया लॉग्स फ़ंक्शन के लिए फ़ाइल प्रबंधक प्रो खरीदें।नोट: यह सिर्फ एक डेमो स्क्रीनशॉट है। सेटिंग्स प्राप्त करने के लिए कृपया हमारा प्रो संस्करण खरीदें।बैकअप के लिए कुछ भी नहीं चुना गयाबैकअप के लिए कुछ भी नहीं चुना गया।ठीक हैठीक हैअन्य (wp-content के अंदर पाई जाने वाली कोई अन्य निर्देशिका)अन्य बैकअप दिनांक को किया गया अन्य बैकअप किया गया।अन्य बैकअप विफल।अन्य बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।PHP संस्करणपैरामीटर:फ़ाइल या फ़ोल्डर पेस्ट करेंकृपया ईमेल पता दर्ज करें।कृपया प्रथम नाम दर्ज करें।कृपया अंतिम नाम दर्ज करें।कृपया इसे सावधानी से बदलें, गलत पाथ फ़ाइल प्रबंधक प्लगइन को नीचे जाने के लिए प्रेरित कर सकता है।यदि आपको बैकअप पुनर्स्थापना के समय त्रुटि संदेश मिल रहा है, तो कृपया फ़ील्ड मान बढ़ाएँ।प्लग-इनप्लगइन्स बैकअप दिनांक को किया गया प्लगइन्स बैकअप हो गया।प्लगइन्स बैकअप विफल।प्लगइन्स बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।अधिकतम फ़ाइल अपलोड आकार पोस्ट करें (post_max_size)पसंदगोपनीयता नीतिसार्वजनिक रूट पाथफ़ाइलें पुनर्स्थापित करेंफ़ाइलें और फ़ोल्डर हटाएं या हटाएंफ़ाइल या फ़ोल्डर का नाम बदलेंपुनर्स्थापितपुनर्स्थापना चल रही है, कृपया प्रतीक्षा करेंसफलतापरिवर्तनों को सुरक्षित करेंसहेजा जा रहा है...चीजें खोजेंसुरक्षा का मसला।सभी का चयन करेहटाने के लिए बैकअप चुनें!सेटिंग्ससेटिंग्स - कोड-संपादकसेटिंग - सामान्यसेटिंग्स - उपयोगकर्ता प्रतिबंधसेटिंग्स - उपयोगकर्ता भूमिका प्रतिबंधसेटिंग्स को सहेजा गया।शोर्टकोड - प्रोफ़ाइल या फ़ोल्डर को सरल काटेंप्रणाली के गुणसेवा की शर्तेंबैकअप स्पष्ट रूप से सफल हुआ और अब पूरा हो गया है।थीमेथीम बैकअप दिनांक को किया गया थीम बैकअप किया गया।थीम बैकअप विफल।थीम बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।अब समयसमय समाप्त (max_execution_time)संग्रह या ज़िप बनाने के लिएआजप्रयोग करें:डेटाबेस बैकअप बनाने में असमर्थ।बैकअप निकालने में असमर्थ!डीबी बैकअप बहाल करने में असमर्थ।दूसरों को पुनर्स्थापित करने में असमर्थ।प्लगइन्स को पुनर्स्थापित करने में असमर्थ।विषयों को पुनर्स्थापित करने में असमर्थ।अपलोड को पुनर्स्थापित करने में असमर्थ।फ़ाइलें लॉग अपलोड करेंफाइल अपलोड करोउपलोड्सअपलोड बैकअप दिनांक को किया गया अपलोड बैकअप हो गया।अपलोड बैकअप विफल रहा।अपलोड बैकअप सफलतापूर्वक पुनर्स्थापित किया गया।सत्यापित करेंलॉग देखेंWP फ़ाइल प्रबंधकWP फ़ाइल प्रबंधक - बैकअप / पुनर्स्थापनाWP फ़ाइल प्रबंधक योगदानहम नए दोस्त बनाना पसंद करते हैं! नीचे सदस्यता लें और हम वादा करते हैं
    आपको हमारे नवीनतम नए प्लगइन्स, अपडेट के साथ अप-टू-डेट रखें,
    शानदार डील और कुछ खास ऑफर्स।फ़ाइल प्रबंधक में आपका स्वागत हैआपने सहेजे जाने के लिए कोई परिवर्तन नहीं किया है।फ़ाइलों को पढ़ने की अनुमति तक पहुंच के लिए, ध्यान दें: सत्य/गलत, डिफ़ॉल्ट: सत्यफ़ाइल अनुमतियाँ लिखने तक पहुँच के लिए, ध्यान दें: सही/गलत, डिफ़ॉल्ट: असत्ययह यहां उल्लिखित छुपाएगा। नोट: अल्पविराम (,) से अलग। डिफ़ॉल्ट: शून्यlanguages/wp-file-manager-ko_KR.mo000064400000044114147361034410013034 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&u�&�((��(,�)Q�)2+*.^*�*!�*��*�q+K:,\�,
�,-�,'-'G-
o-
}-�-.�-�-@�-0.
L.0Z.�.$�.
�.
�.�.�.�./)/0/)L/
v/	�/�/+�/3�/C0L0S0	[0
e0s0�0�0�0)�0�0
1M1&`1��1
 2(.2 W2#x2`�2�24'4
>4L4S4 Z4{5
�6!�6��6��7�8��8{9�9�9$�9�9I�93!:U:t:-�:-�:�:;";B;nK;r�;2-</`<�<�<A�<%�<'=$.=7S=
�=
�=!�='�=�=	>z$>Q�>�>%�>-$?*R?=}?7�?
�?@@
+@&9@%`@�@@�@�@�@	�@
�@A
A'(APAWAqA�A �A �A�A-�AB0BJAB�B�B'�B$�B7C8C!IC'kC�C
�C8�C%�C(D,0D+]D%�D(�D�D�D	E"E*4E'_E:�E�E
�E�E#�EF�*F1�F('GMPGN�G^�G}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: Theme Editor
PO-Revision-Date: 2022-02-28 10:54+0530
Last-Translator: 
Language-Team: 
Language: ko_KR
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: .
* 모든 작업에 대해 일부 작업을 허용하려면 작업 이름을 allowed_operations="upload,download"와 같이 언급할 수 있습니다. 참고: 쉼표(,)로 구분합니다. 기본: *-> 특정 사용자의 ID를 쉼표(,)로 구분하여 입력하면 차단됩니다. 사용자가 Ban인 경우 프런트 엔드에서 wp 파일 관리자에 액세스할 수 없습니다.-> 파일 관리자 테마. 기본값: Light-> 수정된 파일 또는 날짜 형식을 만듭니다. 기본값: d M, Y h:i A-> 파일 관리자 언어. 기본값: English(en)-> 파일 관리자 UI 보기. 기본값: grid동작선택한 백업에 대한 작업관리자는 모든 사용자의 작업을 제한할 수 있습니다. 또한 파일과 폴더를 숨기고 다른 사용자에 대해 다른 폴더 경로를 설정할 수 있습니다.관리자는 모든 사용자 역할의 작업을 제한할 수 있습니다. 또한 파일과 폴더를 숨기고 다른 사용자 역할에 대해 다른 폴더 경로를 설정할 수 있습니다.휴지통을 활성화하면 파일이 휴지통 폴더로 이동합니다.이 기능을 활성화하면 모든 파일이 미디어 라이브러리로 이동합니다.모두 완료선택한 백업을 제거하시겠습니까?이 백업을 삭제하시겠습니까?이 백업을 복원하시겠습니까?백업 날짜백업 지금백업 옵션:백업 데이터(다운로드하려면 클릭)백업 파일은백업이 실행 중입니다. 잠시만 기다려 주십시오.백업이 성공적으로 삭제되었습니다.백업/복원백업이 성공적으로 제거되었습니다!반브라우저 및 OS(HTTP_USER_AGENT)프로 구매프로 구매취소여기에서 테마 변경:클릭하여 PRO 구매하기코드 편집기 보기확인파일 또는 폴더 복사현재 백업을 찾을 수 없습니다.파일 삭제어두운데이터베이스 백업날짜에 데이터베이스 백업 완료 데이터베이스 백업이 완료되었습니다.데이터베이스 백업이 성공적으로 복원되었습니다.기본기본:지우다선택 해제이 알림을 닫습니다.기부파일 로그 다운로드파일 다운로드폴더 또는 파일 복제 또는 복제파일 로그 편집파일 편집미디어 라이브러리에 파일 업로드를 활성화하시겠습니까?휴지통을 사용하시겠습니까?오류: 데이터베이스 백업의 크기가 커서 백업을 복원할 수 없습니다. 기본 설정에서 최대 허용 크기를 늘리십시오.기존 백업아카이브 또는 압축 파일 추출파일 관리자 - 단축 코드파일 관리자 - 시스템 속성파일 관리자 루트 경로, 당신은 당신의 선택에 따라 변경할 수 있습니다.파일 관리자에는 여러 테마가 있는 코드 편집기가 있습니다. 코드 편집기의 테마를 선택할 수 있습니다. 파일을 편집할 때 표시됩니다. 또한 코드 편집기의 전체 화면 모드를 허용할 수 있습니다.파일 작업 목록:다운로드할 파일이 없습니다.파일 백업회색도움여기서 "test"는 루트 디렉터리에 있는 폴더의 이름이거나 "wp-content/plugins"와 같이 하위 폴더에 대한 경로를 지정할 수 있습니다. 비워두거나 비워두면 루트 디렉토리의 모든 폴더에 액세스합니다. 기본값: 루트 디렉터리여기에서 관리자는 파일 관리자를 사용하기 위한 사용자 역할에 대한 액세스 권한을 부여할 수 있습니다. 관리자는 기본 액세스 폴더를 설정하고 파일 관리자의 업로드 크기를 제어할 수 있습니다.파일 정보잘못된 보안 코드입니다.모든 역할이 프론트 엔드의 파일 관리자에 액세스할 수 있도록 허용하거나 allowed_roles="editor,author"(쉼표(,)로 구분)와 같이 특정 사용자 역할에 대해 간단하게 사용할 수 있습니다.쉼표로 표시된 잠금이 해제됩니다. ".php,.css,.js" 등과 같이 더 많이 잠글 수 있습니다. 기본값: Null프런트 엔드에 파일 관리자가 표시됩니다. 그러나 관리자만 액세스할 수 있으며 파일 관리자 설정에서 제어합니다.프런트 엔드에 파일 관리자가 표시됩니다. 파일 관리자 설정에서 모든 설정을 제어할 수 있습니다. 백엔드 WP 파일 관리자와 동일하게 작동합니다.마지막 로그 메시지빛로그디렉토리 또는 폴더 만들기파일 만들기데이터베이스 백업 복원 시 허용되는 최대 크기입니다.최대 파일 업로드 크기(upload_max_filesize)메모리 제한(memory_limit)백업 ID가 없습니다.매개변수 유형이 누락되었습니다.필수 매개변수가 누락되었습니다.고맙지 만 사양 할게로그 메시지 없음로그를 찾을 수 없습니다!노트 :참고: 데모 스크린샷입니다. 로그 기능을 사용하려면 File Manager pro를 구입하십시오.참고: 이것은 데모 스크린샷일 뿐입니다. 설정을 얻으려면 프로 버전을 구입하십시오.백업을 위해 선택한 항목이 없습니다.백업을 위해 선택된 것이 없습니다.확인확인기타(wp-content 내에서 발견된 기타 모든 디렉토리)기타 백업이 날짜에 완료됨 기타 백업이 완료되었습니다.기타 백업에 실패했습니다.기타 백업이 성공적으로 복원되었습니다.PHP 버전매개변수:파일 또는 폴더 붙여넣기이메일 주소를 입력하십시오.이름을 입력하세요.성을 입력하십시오.경로를 잘못 지정하면 파일 관리자 플러그인이 다운될 수 있으므로 신중하게 변경하십시오.백업 복원 시 오류 메시지가 나타나면 필드 값을 늘리십시오.플러그인날짜에 플러그인 백업 완료 플러그인 백업이 완료되었습니다.플러그인 백업에 실패했습니다.플러그인 백업이 성공적으로 복원되었습니다.게시물 최대 파일 업로드 크기(post_max_size)기본 설정개인 정보 정책공개 루트 경로파일 복원파일 및 폴더 제거 또는 삭제파일 또는 폴더 이름 바꾸기복원복원이 실행 중입니다. 잠시만 기다려 주십시오.성공변경 사항을 저장하다절약...물건 검색보안 문제.모두 선택삭제할 백업을 선택하십시오!설정설정 - 코드 편집기설정 - 일반설정 - 사용자 제한설정 - 사용자 역할 제한설정이 저장되었습니다.단축 코드 - PRO파일이나 폴더를 간단하게 자르기시스템 속성서비스 약관백업이 성공적으로 완료되었으며 이제 완료되었습니다.테마날짜에 테마 백업 완료 테마 백업이 완료되었습니다.테마 백업에 실패했습니다.테마 백업이 성공적으로 복원되었습니다.지금이 시간시간 초과(max_execution_time)아카이브 또는 zip을 만들려면오늘사용하다:데이터베이스 백업을 생성할 수 없습니다.백업을 제거할 수 없습니다!DB 백업을 복원할 수 없습니다.다른 사람을 복원할 수 없습니다.플러그인을 복원할 수 없습니다.테마를 복원할 수 없습니다.업로드를 복원할 수 없습니다.파일 로그 업로드파일 업로드하다업로드날짜에 업로드 백업 완료 업로드 백업이 완료되었습니다.업로드 백업에 실패했습니다.업로드 백업이 성공적으로 복원되었습니다.검증로그 보기WP 파일 관리자WP 파일 관리자 - 백업/복원WP 파일 관리자 투고우리는 새로운 친구를 사귀는 것을 좋아합니다! 아래를 구독하고 우리는 약속합니다
    최신 새 플러그인, 업데이트,
    멋진 거래와 몇 가지 특별 제안.파일 관리자에 오신 것을 환영합니다저장할 변경 사항이 없습니다.파일 읽기 권한에 대한 액세스, 참고: true/false, 기본값: true파일 쓰기 권한에 대한 액세스, 참고: true/false, 기본값: false여기에 언급 된 숨길 것입니다. 참고: 쉼표(,)로 구분합니다. 기본값: 널languages/wp-file-manager-sr_RS.mo000064400000057016147361034410013064 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&:�(C�)P	+pZ+X�+w$,�,J�,(�,B!.}d/v�/Y0kj0o�0kF1(�1;�12[62L�2>�2E3d3C�3�3.�344$&4%K44q4(�4�4;�4Z5u5�57�5j�5IE6_�6�677)7)C7m78�7�7S�70-8!^8\�8�8!�80:LO:7�:A�:z;w�;/	=?9=.y=�=
�=��=��?*.A-YA`�A��B�C-�D.�E�E
FKFcF��F_G3rG)�G-�G7�G6H&FH:mH�H��H�SIG�IHFJ�J�J��JJ*K=uK?�KN�KBLXL9lL*�L�L�L�M��MdNNqNC�NEORJOf�OP(P">PaPO}P?�P

Q3Q
LQWQuQ!�Q"�Q�QM�Q.R0CR!tR>�RI�R+SKSNhS#�S�Se�SaTHjT8�T=�TJ*UuU<�U2�U
�UVaVEuVO�V0W6<W.sW8�W4�WX*XN=XG�XG�XTYqY0�Y�Y\�Y7/ZRgZ/�[Z�[�E\��\��]}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: 
PO-Revision-Date: 2022-03-01 18:29+0530
Last-Translator: 
Language-Team: 
Language: sr
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);
X-Generator: Poedit 3.0.1
X-Poedit-Basepath: ..
X-Poedit-KeywordsList: __;_e;esc_attr__;esc_html__
X-Poedit-SearchPath-0: languages
X-Poedit-SearchPath-1: .
* за све операције и да бисте дозволили неке операције можете навести назив операције као, дозвољено_операције="уплоад,довнлоад". Напомена: одвојено зарезом (,). Уобичајено: *-> Забранит ће одређеним корисницима само стављајући њихове ИД-ове раздвојене зарезима (,). Ако је корисник Бан, тада неће моћи да приступи вп менаџеру датотека на предњој страни.-> Тема Менаџера датотека. Подразумевано: Light-> Филе Модифиед или Цреате дате формат. Подразумевано: d M, Y h:i A-> Језик менаџера датотека. Подразумевано: English(en)-> Приказ корисничког интерфејса Филеманагер-а. Подразумевано: gridпоступакРадње по изабраним сигурносним копијамаАдминистратор може ограничити радње било ког корисника. Такође сакријте датотеке и фасцикле и можете поставити различите путање фолдера за различите кориснике.Администратор може ограничити радње било које корисничке улоге. Такође сакријте датотеке и фасцикле и можете поставити различите путање фолдера за различите улоге корисника.Након омогућавања отпада, датотеке ће ићи у директоријум за отпатке.Након што ово омогућите, све датотеке ће ићи у библиотеку медија.ЗавршеноДа ли стварно желите да уклоните изабране резервне копије?Да ли сте сигурни да желите да избришете ову резервну копију?Да ли сте сигурни да желите да вратите ову резервну копију?Датум резервне копијеНаправите резервну копију одмахРезервне опције:Резервне копије података (кликните за преузимање)Датотеке за резервне копије ће бити исподИзрада резервне копије, сачекајтеРезервна копија је успешно избрисана.Бацкуп/РестореРезервне копије су успешно уклоњене!забранитиПрегледник и ОС (HTTP_USER_AGENT)Купи ПРОКупи ПроПоништити, отказатиПромените тему овде:Кликните да бисте купили ПРОПриказ уређивача кодаПотврдиКопирајте датотеке или фасциклеТренутно није пронађена ниједна резервна копија.БРИСАЊЕ ДАТОТЕКАМрачноРезервна копија базе податакаПрављење резервне копије базе података извршено на датум Извршена резервна копија базе података.Сигурносна копија базе података је успешно враћена.УобичајеноУобичајено:ИзбришиПоништи изборОдбаци ово обавештење.ДонирајтеПреузмите евиденције датотекаПреузми датотекеДупликат или клонирање фасцикле или датотекеУреди евиденције датотекаИзмените датотекуОмогућити отпремање датотека у библиотеку медија?Омогућити отпад?Грешка: Није могуће вратити резервну копију јер је резервна копија базе података велика. Покушајте да повећате максималну дозвољену величину у подешавањима.Постојеће резервне копијеИздвојите архиву или архивирану датотекуМенаџер датотека – кратки кодМенаџер датотека - Својства системаКорен пут управитеља датотека, можете променити према свом избору.Менаџер датотека има уређивач кода са више тема. За уређивач кода можете одабрати било коју тему. Приказаће се када уредите било коју датотеку. Такође можете да дозволите режим целог екрана уређивача кода.Листа операција датотека:Датотека не постоји за преузимање.Резервне копије датотекаГреиПомоћОвде "тест" је име фасцикле која се налази у основном директоријуму, или можете дати путању за поддиректоријуме као што је "вп-цонтент/плугинс". Ако оставите празно или празно, приступиће свим фасциклама у основном директоријуму. Подразумевано: Основни директоријумОвде администратор може дати приступ корисничким улогама за коришћење управитеља датотека. Администратор може поставити подразумевану приступну мапу и такође контролисати величину отпремања управитеља датотека.Информације о датотециНеважећи сигурносни код.Омогућиће свим улогама приступ менаџеру датотека на предњем крају или можете једноставно користити за одређене корисничке улоге као што је дозвољено_ролес="едитор,аутхор" (одвојено зарезом(,))Закључаће се поменуто у зарезима. можете закључати више као ".пхп,.цсс,.јс" итд. Подразумевано: НуллНа предњем крају ће се приказати менаџер датотека. Али само администратор може да му приступи и контролише из подешавања менаџера датотека.На предњем крају ће се приказати менаџер датотека. Можете да контролишете сва подешавања из подешавања менаџера датотека. Радиће исто као и бацкенд ВП Филе Манагер.Последња порука дневникаСветлостТрупциНаправите директоријум или директоријумНаправи датотекуМаксимална дозвољена величина у време враћања резервне копије базе података.Максимална величина отпремања датотеке (upload_max_filesize)Ограничење меморије(memory_limit)Недостаје резервни ИД.Недостаје тип параметра.Недостају потребни параметри.Не хвалаНема поруке дневникаНије пронађен ниједан записник!Белешка:Напомена: Ово су демо снимци екрана. Молимо купите Филе Манагер про за функције Логс.Напомена: Ово је само демо снимак екрана. Да бисте добили подешавања, купите нашу про верзију.Ништа није изабрано за резервну копијуНишта није изабрано за резервну копију.У редуУ редуОстало (Било који други директоријум који се налази унутар вп-садржаја)Остале резервне копије урађене на датум Друге резервне копије су урађене.Друге резервне копије нису успеле.Остале резервне копије су успешно враћене.ПХП верзијаПараметри:Налепите датотеку или фасциклуУнесите адресу е-поште.Унесите име.Унесите презиме.Молимо вас пажљиво промените ово, погрешна путања може довести до пада додатка за управљање датотекама.Повећајте вредност поља ако добијате поруку о грешци у време враћања резервне копије.ДодациРезервна копија додатака урађена на датум Резервна копија додатака је урађена.Резервна копија додатака није успела.Резервна копија додатака је успешно враћена.Објави максималну величину отпремања датотеке (post_max_size)ПоставкеПравила о приватностиЈавни коренски путВРАЋИ ДАТОТЕКЕУклоните или избришите датотеке и фасциклеПреименујте датотеку или фасциклуВратиВраћање је у току, сачекајтеУСПЕХСачувај променеУштеда...Претражите ствариБезбедност питање.Изабери свеИзаберите резервну(е) копију(е) за брисање!ПодешавањаПодешавања - Уређивач кодаПодешавања - ОпштеПодешавања - Ограничења корисникаПодешавања - Ограничења улога корисникаПодешавања су сачувана.Кратки код - ПРОЈедноставно исеците датотеку или фасциклуСистемска својстваУслови коришћењаРезервна копија је очигледно успела и сада је завршена.ТемеПрављење резервне копије тема на датум Извршена резервна копија тема.Резервна копија тема није успела.Резервна копија тема је успешно враћена.ТренутноВременско ограничење (max_execution_time)Да направите архиву или зипДанасУПОТРЕБА:Није могуће направити резервну копију базе података.Уклањање резервне копије није успело!Није могуће вратити сигурносну копију ДБ-а.Није могуће вратити друге.Враћање додатака није успело.Није могуће вратити теме.Отпремања није могуће вратити.Отпреми евиденције датотекаДодај фајловеОтпремањаОтпрема резервне копије извршене на датум Резервна копија отпремања је завршена.Резервна копија отпремања није успела.Резервна копија отпремања је успешно враћена.ПроверитиПогледај Дневник догађајаВП Филе МанагерВП Филе Манагер - Израда резервних копија / враћањеДопринос ВП менаџера датотекаВолимо да склапамо нове пријатеље! Претплатите се испод и ми то обећавамо
    будите у току са нашим најновијим новим додацима, исправкама,
    сјајне понуде и неколико специјалних понуда.Добродошли у Филе МанагерНисте унели никакве промене да бисте их сачували.за дозволу за приступ читању датотека, напомену: тачно/нетачно, подразумевано: тачноза приступ дозволама за писање датотека, напомена: тачно/нетачно, подразумевано: нетачносакриће се овде поменуто. Напомена: одвојено зарезом (,). Подразумевано: Нуллlanguages/wp-file-manager-es_ES.mo000064400000045070147361034410013027 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�Q(�):�)L"*Ao*Z�*+4+�I+��+O�,O-
[-Kf-=�->�-/.K.W.6w.0�.;�.(/"D/6g/�//�/�/�/�/0030	I0S02n0�0�0&�08�011EJ1�1�1�1
�1�1�1�1�1'
252R2=d2�2��2�3$�3)�33�3L$4�q4 m5$�5�5�5�5�5��6�7�7��7q�8�*9��9�:�:	�:�:
�:i;:q;!�;%�;�;<0<<<T<s<oy<��<,k=-�=�=�=A�=->!<>&^>7�>�>�>�>-�>#?6?rK?t�?3@4@@)u@1�@E�@IAaAnA�A�A'�A)�A	�A6	B@BGB	WBaBnB�B7�B�B"�B�B)C55CkC~C&�C�C�CG�C/D-5D"cD*�D2�D�D%�DE,E	4E=>E-|E@�E�E(	F!2F"TFwF�F�F,�F$�F,�F1(G	ZGdGqG?�G.�G��G'�H1�H`!Ib�IR�I}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-02-28 15:53+0530
Last-Translator: admin <kajal.gill@mysenseinc.in>
Language-Team: 
Language: es_ES
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* para todas las operaciones y para permitir alguna operación, puede mencionar el nombre de la operación como, operaciones_permitidas="cargar, descargar". Nota: separados por comas (,). Por defecto: *-> Prohibirá a usuarios particulares simplemente poniendo sus identificaciones separadas por comas (,). Si el usuario es Ban, entonces no podrá acceder al administrador de archivos wp en el front-end.-> Tema del administrador de archivos. Predeterminado: Luz-> Archivo Modificado o Crear formato de fecha. Predeterminado: d M, Y h:i A-> Administrador de archivos Idioma. Predeterminado: inglés (en)-> Vista de interfaz de usuario del administrador de archivos. Predeterminado: cuadrículaAcciónAcciones sobre las copias de seguridad seleccionadasAdmin puede restringir las acciones de cualquier usuario. También ocultar archivos y carpetas y puede establecer diferentes rutas de carpetas diferentes para diferentes usuarios.Admin puede restringir las acciones de cualquier userrole. También ocultar archivos y carpetas y puede establecer diferentes rutas de carpetas diferentes para diferentes roles de usuarios.Después de habilitar la papelera, sus archivos irán a la carpeta de papelera.Después de habilitar esto, todos los archivos irán a la biblioteca de medios.Todo listo¿Está seguro de que desea eliminar las copias de seguridad seleccionadas?¿Está seguro de que desea eliminar esta copia de seguridad?¿Está seguro de que desea restaurar esta copia de seguridad?Fecha de copia de seguridadCopia ahoraOpciones de copia de seguridad:Copia de seguridad de datos (haga clic para descargar)Los archivos de copia de seguridad estarán bajoLa copia de seguridad se está ejecutando, por favor espereCopia de seguridad eliminada con éxito.Copia de seguridad de restauracion¡Las copias de seguridad se eliminaron correctamente!ProhibiciónNavegador y sistema operativo (HTTP_USER_AGENT)Comprar PROComprar profesionalCancelarCambiar tema aquí:Haga clic para comprar PROEditor de código VerConfirmarCopiar archivos o carpetasActualmente no se encontraron copias de seguridad.BORRAR ARCHIVOSOscuroCopia de seguridad de la base de datosCopia de seguridad de la base de datos realizada el díaCopia de seguridad de la base de datos realizada.La copia de seguridad de la base de datos se restauró correctamente.Por defectoPor defecto:BorrarDeseleccionarDescartar este aviso.DonarDescargar registros de archivosDescargar archivosDuplicar o clonar una carpeta o archivoEditar registros de archivoseditar un archivo¿Habilitar la carga de archivos en la biblioteca multimedia?¿Habilitar papelera?Error: no se puede restaurar la copia de seguridad porque la copia de seguridad de la base de datos es muy grande. Intente aumentar el Tamaño máximo permitido desde la configuración de Preferencias.Copias de seguridad existentesExtraer archivo o archivo comprimidoAdministrador de archivos - Código cortoAdministrador de archivos - Propiedades del sistemaRuta raíz del administrador de archivos, puede cambiar según su elección.Administrador de archivos tiene un editor de código con varios temas. Puede seleccionar cualquier tema para el editor de código. Se mostrará cuando edite cualquier archivo. También puede permitir el modo de pantalla completa del editor de código.Lista de operaciones de archivo:El archivo no existe para descargar.Copia de seguridad de archivosgrisAyudaAquí "prueba" es el nombre de la carpeta que se encuentra en el directorio raíz, o puede proporcionar la ruta para las subcarpetas como "wp-content/plugins". Si se deja en blanco o vacío, accederá a todas las carpetas del directorio raíz. Predeterminado: directorio raízAquí admin puede dar acceso a funciones de usuario para utilizar filemanager. Admin puede establecer la carpeta de acceso predeterminada y también controlar el tamaño de carga de filemanager.Información del archivoCódigo de seguridad invalido.Permitirá que todos los roles accedan al administrador de archivos en el front-end o puede usarlo simplemente para roles de usuario particulares como allow_roles="editor,author" (separado por coma (,))Se bloqueará mencionado entre comas. puede bloquear más como ".php, .css, .js", etc. Valor predeterminado: nuloMostrará el administrador de archivos en el front-end. Pero solo el administrador puede acceder a él y lo controlará desde la configuración del administrador de archivos.Mostrará el administrador de archivos en el front-end. Puede controlar todas las configuraciones desde la configuración del administrador de archivos. Funcionará igual que el administrador de archivos WP backend.Último mensaje de registroLigeroRegistrosCrear directorio o carpetahacer archivoTamaño máximo permitido en el momento de la restauración de la copia de seguridad de la base de datos.Tamaño máximo de carga de archivos (upload_max_filesize)Límite de memoria (memory_limit)Falta la identificación de respaldo.Falta el tipo de parámetro.Faltan parámetros requeridos.No, graciasSin mensaje de registro¡No se encontraron registros!Nota:Nota: Estas son capturas de pantalla de demostración. Compre File Manager pro para las funciones de Registros.Nota: Esta es sólo una captura de pantalla de demostración. Para obtener ajustes por favor compre nuestra versión profesional.Nada seleccionado para la copia de seguridadNada seleccionado para la copia de seguridad.OKOKOtros (Cualquier otro directorio encontrado dentro de wp-content)Otra copia de seguridad realizada en la fechaOtras copias de seguridad hechas.La copia de seguridad de otros falló.La copia de seguridad de otros se restauró con éxito.Versión de PHPParámetros:Pegar un archivo o carpetaIngrese la dirección de correo electrónico.Ingrese el nombre.Ingrese el apellido.Cambie esto con cuidado, la ruta incorrecta puede hacer que el complemento del administrador de archivos se caiga.Aumente el valor del campo si recibe un mensaje de error en el momento de la restauración de la copia de seguridad.ComplementosCopia de seguridad de complementos realizada el díaCopia de seguridad de complementos hecha.La copia de seguridad de los complementos falló.La copia de seguridad de los complementos se restauró correctamente.Publicar el tamaño máximo de la subida de archivos (tamaño_max_puesta)preferenciasPolítica de privacidadRuta raíz públicaRESTAURAR ARCHIVOSEliminar o eliminar archivos y carpetasCambiar el nombre de un archivo o carpetaRestaurarLa restauración se está ejecutando, por favor espereÉXITOGuardar cambiosAhorro...buscar cosasProblema de seguridad.Seleccionar todo¡Seleccione la(s) copia(s) de seguridad para eliminar!AjustesConfiguración - Editor de códigoAjustes - GeneralConfiguración - Restricciones de usuarioConfiguración - Restricciones de función de usuarioAjustes guardados.Código corto - PROSimplemente corte un archivo o carpetaPropiedades del sistemaTérminos de servicioLa copia de seguridad aparentemente tuvo éxito y ahora está completa.TemasCopia de seguridad de temas realizada el díaCopia de seguridad de temas hecha.La copia de seguridad de los temas falló.Copia de seguridad de temas restaurada con éxito.AhoraTiempo de espera (max_execution_time)Para hacer un archivo o zipHoy diaUTILIZAR:No se puede crear una copia de seguridad de la base de datos.¡No se puede eliminar la copia de seguridad!No se puede restaurar la copia de seguridad de la base de datos.No se pueden restaurar otros.No se pueden restaurar los complementos.No se pueden restaurar los temas.No se pueden restaurar las cargas.Subir registros de archivosSubir archivosCargasSube la copia de seguridad realizada el díaCopia de seguridad de subidas hecha.La copia de seguridad de las subidas falló.Sube la copia de seguridad restaurada con éxito.VerificarVer registroAdministrador de archivos WPAdministrador de archivos WP - Copia de seguridad/restauraciónContribución del administrador de archivos WP¡Nos encanta hacer nuevos amigos! Suscríbase a continuación y prometemos mantenerlo actualizado con nuestros últimos complementos, actualizaciones, ofertas increíbles y algunas ofertas especiales.Bienvenido al Administrador de archivosNo ha realizado ningún cambio para ser guardado.para acceder al permiso de lectura de archivos, nota: verdadero/falso, predeterminado: verdaderopara acceder a los permisos de escritura de archivos, nota: verdadero/falso, predeterminado: falsose ocultará mencionado aquí. Nota: separados por comas (,). Predeterminado: nulolanguages/wp-file-manager-th.mo000064400000065537147361034410012456 0ustar00�����,�����%0=V.�%������7,7d�/�,�-0
<GWw����� � (07J[lt������&�%-6=F[bv#���%�
������ �@��8�(5:�?�&����^�y��Z��	<(.e����	� P&Qw��6?[o$������Q&[x��� %% -K y � � 
� "� � � � !!	+!
5!C!
S!^!z!�!�!�!!�!�!�!"(":"4K"�"�"�"�"$�"�"�"#1#7#!<#^#x#�#�#�#�#�#$$&$C$X$%o$�$�$�$ �$�$��$�%*�%D�%G#&Fk&��&�O(�%*n�+�+,n�,h1-�-f�-�.��/�g1�2B�2��2{n3��3!r4B�4C�4Z5?v5X�5N6"^6O�6�6f�6E7[7q71�7+�76�78B,8Ho8�8	�8*�8d9ce9l�9!6:"X:{:*�:$�:�:9�:';WG;-�;�;{�;Ee<��<<D>N�>?�>Z?nk?�?@�A?!BaB}B�BB�B��D'�FL�F�%G�Hc�I�QK9�L	'M1MQDM�M��M^@N@�N*�NBOKNO-�O6�O"�O"P�6P��Pr�QrIR�R�Rb�Ro9SH�SK�S]>T�T"�T9�T-U%DU-jU��U��VxWv�WTXW]XW�XO
Y]Y?|Y3�Y�YEZQUZ�Zd�Z[<>[{[$�[<�[$�[F\b\,�\3�\V�\e9]C�]�]T�]0T^<�^��^	q_g{_E�_H)`Hr`$�`*�`Ra^a
qa]|a:�aQbKgbN�b?cKBc3�c!�c�cs�cQnd]�doe�e�e*�e4�eKf�ffT.h��h�i��i��j}H��-YoD����6^�BQ"1P]#W�AR�N\�&@IF�	y:�(�s{�gz��v9�m��V�b�d��'�E�n*�j�|��7�pf��8�$=�k��Ot`�2
_ J;��Z/K3��)�u0a+�G�%c��i?~,�MlU>��4X[LhCS5!ew<�xq.
Tr* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.-> File Manager Theme. Default: Light-> File Modified or Create date format. Default: d M, Y h:i A-> File manager Language. Default: English(en)-> Filemanager UI View. Default: gridActionActions upon selected backup(s)Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.After enable trash, your files will go to trash folder.After enabling this all files will go to media library.All DoneAre you sure want to remove selected backup(s)?Are you sure you want to delete this backup?Are you sure you want to restore this backup?Backup DateBackup NowBackup Options:Backup data (click to download)Backup files will be underBackup is running, please waitBackup successfully deleted.Backup/RestoreBackups removed successfully!BanBrowser and OS (HTTP_USER_AGENT)Buy PROBuy ProCancelChange Theme Here:Click to Buy PROCode-editor ViewConfirmCopy files or foldersCurrently no backup(s) found.DELETE FILESDarkDatabase BackupDatabase backup done on date Database backup done.Database backup restored successfully.DefaultDefault:DeleteDeselectDismiss this notice.DonateDownload Files LogsDownload filesDuplicate or clone a folder or fileEdit Files LogsEdit a fileEnable Files Upload to Media Library?Enable Trash?Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.Existing Backup(s)Extract archive or zipped fileFile Manager - ShortcodeFile Manager - System PropertiesFile Manager Root Path, you can change according to your choice.File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.File Operations List:File doesn't exist to download.Files BackupGrayHelpHere "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directoryHere admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.Info of fileInvalid Security Code.It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: NullIt will show file manager on front end. But only Administrator can access it and will control from file manager settings.It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.Last Log MessageLightLogsMake directory or folderMake fileMaximum allowed size at the time of database backup restore.Maximum file upload size (upload_max_filesize)Memory Limit (memory_limit)Missing backup id.Missing parameter type.Missing required parameters.No ThanksNo log messageNo logs found!Note:Note: These are demo screenshots. Please buy File Manager pro to Logs functions.Note: This is just a demo screenshot. To get settings please buy our pro version.Nothing selected for backupNothing selected for backup.OKOkOthers (Any other directories found inside wp-content)Others backup done on date Others backup done.Others backup failed.Others backup restored successfully.PHP versionParameters:Paste a file or folderPlease Enter Email Address.Please Enter First Name.Please Enter Last Name.Please change this carefully, wrong path can lead file manager plugin to go down.Please increase field value if you are getting error message at the time of backup restore.PluginsPlugins backup done on date Plugins backup done.Plugins backup failed.Plugins backup restored successfully.Post maximum file upload size (post_max_size)PreferencesPrivacy PolicyPublic Root PathRESTORE FILESRemove or delete files and foldersRename a file or folderRestoreRestore is running, please waitSUCCESSSave ChangesSaving...Search thingsSecurity Issue.Select AllSelect backup(s) to delete!SettingsSettings - Code-editorSettings - GeneralSettings - User RestrictionsSettings - User Role RestrictionsSettings saved.Shortcode - PROSimple cut a file or folderSystem PropertiesTerms of ServiceThe backup apparently succeeded and is now complete.ThemesThemes backup done on date Themes backup done.Themes backup failed.Themes backup restored successfully.Time nowTimeout (max_execution_time)To make a archive or zipTodayUSE:Unable to create database backup.Unable to removed backup!Unable to restore DB backup.Unable to restore others.Unable to restore plugins.Unable to restore themes.Unable to restore uploads.Upload Files LogsUpload filesUploadsUploads backup done on date Uploads backup done.Uploads backup failed.Uploads backup restored successfully.VerifyView LogWP File ManagerWP File Manager - Backup/RestoreWP File Manager ContributionWe love making new friends! Subscribe below and we promise to
    keep you up-to-date with our latest new plugins, updates,
    awesome deals and a few special offers.Welcome to File ManagerYou have not made any changes to be saved.for access to read files permission, note: true/false, default: truefor access to write files permissions, note: true/false, default: falseit will hide mentioned here. Note: seprated by comma(,). Default: NullProject-Id-Version: WP File Manager
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2022-03-02 10:15+0530
Last-Translator: admin <munishthedeveloper48@gmail.com>
Language-Team: 
Language: th
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: Poedit 3.0.1
X-Poedit-KeywordsList: __;_e
X-Poedit-Basepath: ..
X-Poedit-SearchPath-0: .
* สำหรับการดำเนินการทั้งหมดและเพื่ออนุญาตให้ดำเนินการบางอย่าง คุณสามารถระบุชื่อการดำเนินการได้ เช่น allowed_operations="upload,download" หมายเหตุ: คั่นด้วยเครื่องหมายจุลภาค (,) ค่าเริ่มต้น: *-> มันจะแบนผู้ใช้บางคนโดยเพียงแค่ใส่รหัสของพวกเขาคั่นด้วยเครื่องหมายจุลภาค (,) หากผู้ใช้ถูกแบน พวกเขาจะเข้าถึงตัวจัดการไฟล์ wp ที่ส่วนหน้าไม่ได้-> ภาษาของตัวจัดการไฟล์ ค่าเริ่มต้น: English(en)-> ไฟล์ที่แก้ไขหรือสร้างรูปแบบวันที่ ค่าเริ่มต้น: d M, Y h:i A-> ภาษาของตัวจัดการไฟล์ ค่าเริ่มต้น: English(en)-> มุมมอง UI ตัวจัดการไฟล์ ค่าเริ่มต้น: gridหนังบู๊การดำเนินการกับข้อมูลสำรองที่เลือกผู้ดูแลระบบสามารถ จำกัด การดำเนินการของผู้ใช้รายใดก็ได้ ซ่อนไฟล์และโฟลเดอร์และสามารถตั้งค่าเส้นทางโฟลเดอร์ที่แตกต่างกันไปสำหรับผู้ใช้ที่แตกต่างกันผู้ดูแลระบบสามารถ จำกัด การดำเนินการของ userrol ใดก็ได้ ซ่อนไฟล์และโฟลเดอร์และสามารถตั้งค่าเส้นทางโฟลเดอร์ที่ต่างกันสำหรับบทบาทผู้ใช้ที่แตกต่างกันหลังจากเปิดใช้งานถังขยะ ไฟล์ของคุณจะไปที่โฟลเดอร์ถังขยะหลังจากเปิดใช้งานนี้ ไฟล์ทั้งหมดจะไปที่ไลบรารีสื่อทุกอย่างเสร็จเรียบร้อยคุณแน่ใจหรือไม่ว่าต้องการลบข้อมูลสำรองที่เลือกคุณแน่ใจหรือไม่ว่าต้องการลบข้อมูลสำรองนี้คุณแน่ใจหรือไม่ว่าต้องการคืนค่าข้อมูลสำรองนี้วันที่สำรองการสำรองข้อมูลในขณะนี้ตัวเลือกการสำรองข้อมูล:สำรองข้อมูล (คลิกเพื่อดาวน์โหลด)ไฟล์สำรองจะอยู่ภายใต้กำลังสำรองข้อมูล โปรดรอสักครู่ลบข้อมูลสำรองเรียบร้อยแล้วสำรอง/กู้คืนลบข้อมูลสำรองเรียบร้อยแล้ว!ห้ามเบราว์เซอร์และระบบปฏิบัติการ (HTTP_USER_AGENT)ซื้อโปรซื้อโปรยกเลิกเปลี่ยนธีมที่นี่:คลิกเพื่อซื้อ PROมุมมองตัวแก้ไขโค้ดยืนยันคัดลอกไฟล์หรือโฟลเดอร์ไม่พบข้อมูลสำรองในขณะนี้ลบไฟล์มืดสำรองฐานข้อมูลสำรองข้อมูลฐานข้อมูลเสร็จในวันที่ สำรองข้อมูลฐานข้อมูลเรียบร้อยแล้วกู้คืนการสำรองฐานข้อมูลเรียบร้อยแล้วค่าเริ่มต้นค่าเริ่มต้น:ลบยกเลิกการเลือกปิดประกาศนี้บริจาคดาวน์โหลดไฟล์บันทึกดาวน์โหลดไฟล์ทำซ้ำหรือโคลนโฟลเดอร์หรือไฟล์แก้ไขไฟล์บันทึกแก้ไขไฟล์เปิดใช้งานการอัปโหลดไฟล์ไปยัง Media Library หรือไม่เปิดใช้งานถังขยะหรือไม่ข้อผิดพลาด: ไม่สามารถกู้คืนข้อมูลสำรองได้เนื่องจากการสำรองข้อมูลฐานข้อมูลมีขนาดใหญ่ โปรดลองเพิ่มขนาดสูงสุดที่อนุญาตจากการตั้งค่าการตั้งค่าข้อมูลสำรองที่มีอยู่แตกไฟล์เก็บถาวรหรือไฟล์ซิปตัวจัดการไฟล์ - รหัสย่อตัวจัดการไฟล์ - คุณสมบัติของระบบFile Manager Root Path คุณสามารถเปลี่ยนได้ตามต้องการตัวจัดการไฟล์มีตัวแก้ไขโค้ดที่มีหลายธีม คุณสามารถเลือกธีมสำหรับโปรแกรมแก้ไขโค้ดได้ จะปรากฏขึ้นเมื่อคุณแก้ไขไฟล์ใด ๆ นอกจากนี้คุณสามารถอนุญาตให้ใช้โหมดเต็มหน้าจอของตัวแก้ไขโค้ดรายการการทำงานของไฟล์:ไม่มีไฟล์ให้ดาวน์โหลดไฟล์สำรองสีเทาช่วยด้วยที่นี่ "test" คือชื่อโฟลเดอร์ที่อยู่บนไดเร็กทอรี root หรือคุณสามารถกำหนดเส้นทางสำหรับโฟลเดอร์ย่อยได้ เช่น "wp-content/plugins" หากปล่อยว่างหรือว่างไว้ ระบบจะเข้าถึงโฟลเดอร์ทั้งหมดในไดเร็กทอรีราก ค่าเริ่มต้น: ไดเรกทอรีรากที่นี่ผู้ดูแลระบบสามารถให้สิทธิ์การเข้าถึงบทบาทผู้ใช้เพื่อใช้ filemanager ผู้ดูแลระบบสามารถตั้งค่าโฟลเดอร์การเข้าถึงข้อมูลเริ่มต้นและควบคุมขนาดการอัพโหลดไฟล์ได้ข้อมูลของไฟล์รหัสความปลอดภัยไม่ถูกต้อง.จะอนุญาตให้ทุกบทบาทเข้าถึงตัวจัดการไฟล์ที่ส่วนหน้าหรือคุณสามารถใช้อย่างง่ายสำหรับบทบาทของผู้ใช้โดยเฉพาะเช่น allowed_roles="editor,author" (คั่นด้วยเครื่องหมายจุลภาค (,))มันจะล็อคที่กล่าวถึงในเครื่องหมายจุลภาค คุณสามารถล็อกได้มากขึ้นเช่น ".php,.css,.js" เป็นต้น ค่าเริ่มต้น: Nullมันจะแสดงตัวจัดการไฟล์ที่ส่วนหน้า แต่มีเพียงผู้ดูแลระบบเท่านั้นที่สามารถเข้าถึงได้และจะควบคุมจากการตั้งค่าตัวจัดการไฟล์มันจะแสดงตัวจัดการไฟล์ที่ส่วนหน้า คุณสามารถควบคุมการตั้งค่าทั้งหมดได้จากการตั้งค่าตัวจัดการไฟล์ มันจะทำงานเหมือนกับตัวจัดการไฟล์ WP แบ็กเอนด์ข้อความบันทึกล่าสุดเบาบันทึกสร้างไดเร็กทอรีหรือโฟลเดอร์ทำไฟล์ขนาดสูงสุดที่อนุญาตในขณะที่กู้คืนการสำรองฐานข้อมูลขนาดการอัปโหลดไฟล์สูงสุด (upload_max_filesize)หน่วยความจำ จำกัด (memory_limit)ไม่มีรหัสสำรองไม่มีประเภทพารามิเตอร์ไม่มีพารามิเตอร์ที่จำเป็นไม่เป็นไรขอบคุณไม่มีข้อความบันทึกไม่พบบันทึก!บันทึก:หมายเหตุ: นี่เป็นภาพหน้าจอสาธิต โปรดซื้อฟังก์ชัน File Manager pro to Logsหมายเหตุ: นี่เป็นเพียงภาพหน้าจอสาธิตเท่านั้น หากต้องการตั้งค่าโปรดซื้อเวอร์ชัน Pro ของเราไม่ได้เลือกอะไรไว้สำหรับการสำรองข้อมูลไม่ได้เลือกอะไรไว้สำหรับการสำรองข้อมูลตกลงตกลงอื่น ๆ (ไดเร็กทอรีอื่น ๆ ที่พบใน wp-content)การสำรองข้อมูลอื่น ๆ เสร็จสิ้นในวันที่ สำรองข้อมูลอื่นเสร็จแล้วการสำรองข้อมูลอื่นล้มเหลวกู้คืนข้อมูลสำรองอื่นสำเร็จแล้วเวอร์ชัน PHPพารามิเตอร์:วางไฟล์หรือโฟลเดอร์กรุณากรอกอีเมล์กรุณาใส่ชื่อ.กรุณาใส่นามสกุลโปรดเปลี่ยนอย่างระมัดระวัง เส้นทางที่ไม่ถูกต้องอาจทำให้ปลั๊กอินตัวจัดการไฟล์หยุดทำงานโปรดเพิ่มค่าฟิลด์หากคุณได้รับข้อความแสดงข้อผิดพลาดในขณะที่กู้คืนข้อมูลสำรองปลั๊กอินการสำรองข้อมูลปลั๊กอินเสร็จสิ้นในวันที่ สำรองข้อมูลปลั๊กอินเสร็จแล้วการสำรองข้อมูลปลั๊กอินล้มเหลวสำรองข้อมูลปลั๊กอินสำเร็จแล้วขนาดไฟล์อัพโหลดสูงสุด (post_max_size)การตั้งค่านโยบายความเป็นส่วนตัวเส้นทางรูตสาธารณะกู้คืนไฟล์ลบหรือลบไฟล์และโฟลเดอร์เปลี่ยนชื่อไฟล์หรือโฟลเดอร์คืนค่ากำลังดำเนินการกู้คืน โปรดรอสักครู่ความสำเร็จบันทึกการเปลี่ยนแปลงประหยัด...ค้นหาสิ่งของปัญหาด้านความปลอดภัยเลือกทั้งหมดเลือกข้อมูลสำรองที่จะลบ!การตั้งค่าการตั้งค่า - Code-editorการตั้งค่า - ทั่วไปการตั้งค่า - ข้อ จำกัด ของผู้ใช้การตั้งค่า - ข้อ จำกัด บทบาทของผู้ใช้การตั้งค่าที่บันทึกไว้.รหัสย่อ - PROตัดไฟล์หรือโฟลเดอร์อย่างง่ายคุณสมบัติของระบบเงื่อนไขการให้บริการเห็นได้ชัดว่าการสำรองข้อมูลสำเร็จและตอนนี้เสร็จสมบูรณ์แล้วธีมการสำรองข้อมูลธีมเสร็จสิ้นในวันที่ สำรองข้อมูลธีมเสร็จแล้วการสำรองข้อมูลธีมล้มเหลวสำรองข้อมูลธีมสำเร็จแล้วเวลาในขณะนี้หมดเวลา (max_execution_time)ในการสร้างไฟล์เก็บถาวรหรือ zipวันนี้ใช้:ไม่สามารถสร้างการสำรองฐานข้อมูลลบข้อมูลสำรองไม่ได้!ไม่สามารถกู้คืนข้อมูลสำรอง DBไม่สามารถกู้คืนผู้อื่นได้ไม่สามารถกู้คืนปลั๊กอินได้ไม่สามารถกู้คืนธีมได้ไม่สามารถกู้คืนการอัปโหลดอัปโหลดไฟล์บันทึกอัพโหลดไฟล์อัพโหลดอัปโหลดการสำรองข้อมูลเสร็จสิ้นในวันที่ อัปโหลดสำรองข้อมูลเสร็จแล้วการสำรองข้อมูลการอัปโหลดล้มเหลวกู้คืนข้อมูลสำรองการอัปโหลดสำเร็จแล้วยืนยันดูบันทึกตัวจัดการไฟล์ WPWP File Manager - สำรอง/กู้คืนการสนับสนุนตัวจัดการไฟล์ WPเราชอบหาเพื่อนใหม่! สมัครสมาชิกด้านล่างและเราสัญญาว่าจะ
    แจ้งให้คุณทราบเกี่ยวกับปลั๊กอิน อัปเดต ใหม่ล่าสุดของเรา
    ข้อเสนอสุดพิเศษและข้อเสนอพิเศษไม่กี่อย่างยินดีต้อนรับสู่ตัวจัดการไฟล์คุณยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ เพื่อบันทึกสำหรับการเข้าถึงเพื่ออ่านสิทธิ์ในการอ่านไฟล์ หมายเหตุ: จริง/เท็จ ค่าเริ่มต้น: trueสำหรับการเข้าถึงสิทธิ์ในการเขียนไฟล์ หมายเหตุ: true/false, default: falseมันจะซ่อนกล่าวถึงที่นี่ หมายเหตุ: คั่นด้วยเครื่องหมายจุลภาค (,) ค่าเริ่มต้น: Nulllanguages/wp-file-manager-he_IL.po000064400000071456147361034410013023 0ustar00msgid ""
msgstr ""
"Project-Id-Version: WP File Manager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-28 10:13+0530\n"
"PO-Revision-Date: 2022-02-28 10:17+0530\n"
"Last-Translator: admin <kajal.gill@mysenseinc.in>\n"
"Language-Team: \n"
"Language: he_IL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: .\n"

#: file_folder_manager.php:174
msgid "Themes backup restored successfully."
msgstr "גיבוי הנושאים שוחזר בהצלחה."

#: file_folder_manager.php:177
msgid "Unable to restore themes."
msgstr "לא ניתן לשחזר ערכות נושא."

#: file_folder_manager.php:207
msgid "Uploads backup restored successfully."
msgstr "העלאות הגיבוי שוחזרו בהצלחה."

#: file_folder_manager.php:211
msgid "Unable to restore uploads."
msgstr "לא ניתן לשחזר את ההעלאות."

#: file_folder_manager.php:237
msgid "Others backup restored successfully."
msgstr "גיבוי אחר שוחזר בהצלחה."

#: file_folder_manager.php:241
msgid "Unable to restore others."
msgstr "לא ניתן לשחזר אחרים."

#: file_folder_manager.php:267
msgid "Plugins backup restored successfully."
msgstr "גיבוי התוספים שוחזר בהצלחה."

#: file_folder_manager.php:271 file_folder_manager.php:301
msgid "Unable to restore plugins."
msgstr "לא ניתן לשחזר תוספים."

#: file_folder_manager.php:286
msgid "Database backup restored successfully."
msgstr "גיבוי מסד הנתונים שוחזר בהצלחה."

#: file_folder_manager.php:286 file_folder_manager.php:297
#: file_folder_manager.php:588 file_folder_manager.php:592
msgid "All Done"
msgstr "הכל בוצע"

#: file_folder_manager.php:289
msgid "Unable to restore DB backup."
msgstr "לא ניתן לשחזר את גיבוי DB."

#: file_folder_manager.php:347
msgid "Backups removed successfully!"
msgstr "גיבויים הוסרו בהצלחה!"

#: file_folder_manager.php:349
msgid "Unable to removed backup!"
msgstr "לא ניתן להסיר את הגיבוי!"

#: file_folder_manager.php:373
msgid "Database backup done on date "
msgstr "גיבוי מסד הנתונים נעשה בתאריך "

#: file_folder_manager.php:377
msgid "Plugins backup done on date "
msgstr "גיבוי התוספים נעשה בתאריך "

#: file_folder_manager.php:381
msgid "Themes backup done on date "
msgstr "גיבוי הנושאים נעשה בתאריך "

#: file_folder_manager.php:385
msgid "Uploads backup done on date "
msgstr "העלאות הגיבוי בוצעו בתאריך "

#: file_folder_manager.php:389
msgid "Others backup done on date "
msgstr "גיבוי אחר נעשה בתאריך "

#: file_folder_manager.php:393 file_folder_manager.php:776
msgid "Logs"
msgstr "יומנים"

#: file_folder_manager.php:399
msgid "No logs found!"
msgstr "לא נמצאו יומנים!"

#: file_folder_manager.php:496
msgid "Nothing selected for backup"
msgstr "שום דבר לא נבחר לגיבוי"

#: file_folder_manager.php:516
msgid "Security Issue."
msgstr "בעיית אבטחה."

#: file_folder_manager.php:527
msgid "Database backup done."
msgstr "גיבוי מסד הנתונים נעשה."

#: file_folder_manager.php:530
msgid "Unable to create database backup."
msgstr "לא ניתן ליצור גיבוי למסד הנתונים."

#: file_folder_manager.php:544
msgid "Plugins backup done."
msgstr "גיבוי תוספים נעשה."

#: file_folder_manager.php:547
msgid "Plugins backup failed."
msgstr "גיבוי תוספים נכשל."

#: file_folder_manager.php:556
msgid "Themes backup done."
msgstr "גיבוי ערכות נושא נעשה."

#: file_folder_manager.php:559
msgid "Themes backup failed."
msgstr "גיבוי ערכות נושא נכשל."

#: file_folder_manager.php:569
msgid "Uploads backup done."
msgstr "גיבוי העלאות נעשה."

#: file_folder_manager.php:572
msgid "Uploads backup failed."
msgstr "גיבוי העלאות נכשל."

#: file_folder_manager.php:581
msgid "Others backup done."
msgstr "גיבוי אחרים בוצע."

#: file_folder_manager.php:584
msgid "Others backup failed."
msgstr "גיבוי אחרים נכשל."

#: file_folder_manager.php:761 file_folder_manager.php:762
#: lib/wpfilemanager.php:23
msgid "WP File Manager"
msgstr "מנהל קבצי WP"

#: file_folder_manager.php:769
msgid "Settings"
msgstr "הגדרות"

#: file_folder_manager.php:771 inc/root.php:48
msgid "Preferences"
msgstr "העדפות"

#: file_folder_manager.php:773
msgid "System Properties"
msgstr "מאפייני מערכת"

#: file_folder_manager.php:775
msgid "Shortcode - PRO"
msgstr "Shortcode - PRO"

#: file_folder_manager.php:777
msgid "Backup/Restore"
msgstr "שחזור גיבוי"

#: file_folder_manager.php:1033
msgid "Buy Pro"
msgstr "קנה מקצועקנו פרו"

#: file_folder_manager.php:1034
msgid "Donate"
msgstr "לִתְרוֹם"

#: file_folder_manager.php:1249
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1256
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>"
msgstr ""

#: file_folder_manager.php:1395 file_folder_manager.php:1483
msgid "File doesn't exist to download."
msgstr "הקובץ לא קיים להורדה."

#: file_folder_manager.php:1400 file_folder_manager.php:1488
msgid "Invalid Security Code."
msgstr "קוד אבטחה לא חוקי."

#: file_folder_manager.php:1405 file_folder_manager.php:1493
msgid "Missing backup id."
msgstr "חסר מזהה גיבוי."

#: file_folder_manager.php:1408 file_folder_manager.php:1496
msgid "Missing parameter type."
msgstr "חסר סוג פרמטר."

#: file_folder_manager.php:1411 file_folder_manager.php:1499
msgid "Missing required parameters."
msgstr "חסרים פרמטרים נדרשים."

#: inc/backup.php:24
msgid ""
"Error: Unable to restore backup because database backup is heavy in size. "
"Please try to increase Maximum allowed size  from Preferences settings."
msgstr ""
"שגיאה: לא ניתן לשחזר את הגיבוי מכיוון שגיבוי מסד הנתונים כבד בגודלו. נסה "
"להגדיל את הגודל המרבי המותר מהגדרות העדפות."

#: inc/backup.php:25
msgid "Select backup(s) to delete!"
msgstr "בחר גיבוי(ים) למחיקה!"

#: inc/backup.php:26
msgid "Are you sure want to remove selected backup(s)?"
msgstr "האם אתה בטוח שברצונך להסיר את הגיבויים שנבחרו?"

#: inc/backup.php:31
msgid "Backup is running, please wait"
msgstr "הגיבוי פועל, אנא המתן"

#: inc/backup.php:32
msgid "Restore is running, please wait"
msgstr "השחזור פועל, אנא המתן"

#: inc/backup.php:33
msgid "Nothing selected for backup."
msgstr "שום דבר לא נבחר לגיבוי."

#: inc/backup.php:45
msgid "WP File Manager - Backup/Restore"
msgstr "מנהל קבצי WP - גיבוי / שחזור"

#: inc/backup.php:51
msgid "Backup Options:"
msgstr "אפשרויות גיבוי:"

#: inc/backup.php:58
msgid "Database Backup"
msgstr "גיבוי מסד נתונים"

#: inc/backup.php:64
msgid "Files Backup"
msgstr "גיבוי קבצים"

#: inc/backup.php:68
msgid "Plugins"
msgstr "תוספים"

#: inc/backup.php:71
msgid "Themes"
msgstr "ערכות נושא"

#: inc/backup.php:74
msgid "Uploads"
msgstr "העלאות"

#: inc/backup.php:77
msgid "Others (Any other directories found inside wp-content)"
msgstr "אחרים (כל ספריות אחרות שנמצאו בתוך תוכן wp)"

#: inc/backup.php:81
msgid "Backup Now"
msgstr "גיבוי עכשיו"

#: inc/backup.php:89
msgid "Time now"
msgstr "עכשיו"

#: inc/backup.php:99
msgid "SUCCESS"
msgstr "הַצלָחָה"

#: inc/backup.php:101
msgid "Backup successfully deleted."
msgstr "הגיבוי נמחק בהצלחה."

#: inc/backup.php:102
msgid "Ok"
msgstr "בסדר"

#: inc/backup.php:117
msgid "DELETE FILES"
msgstr "מחק קבצים"

#: inc/backup.php:119
msgid "Are you sure you want to delete this backup?"
msgstr "האם אתה בטוח שברצונך למחוק את הגיבוי הזה?"

#: inc/backup.php:120 inc/backup.php:139
msgid "Cancel"
msgstr "לְבַטֵל"

#: inc/backup.php:121 inc/backup.php:140
msgid "Confirm"
msgstr "לְאַשֵׁר"

#: inc/backup.php:136
msgid "RESTORE FILES"
msgstr "לְאַשֵׁר"

#: inc/backup.php:138
msgid "Are you sure you want to restore this backup?"
msgstr "האם אתה בטוח שברצונך לשחזר את הגיבוי הזה?"

#: inc/backup.php:166
msgid "Last Log Message"
msgstr "הודעת יומן אחרונה"

#: inc/backup.php:169
msgid "The backup apparently succeeded and is now complete."
msgstr "הגיבוי כנראה הצליח וכעת הושלם."

#: inc/backup.php:171
msgid "No log message"
msgstr "אין הודעת יומן"

#: inc/backup.php:177
msgid "Existing Backup(s)"
msgstr "גיבויים קיימים"

#: inc/backup.php:184
msgid "Backup Date"
msgstr "תאריך גיבוי"

#: inc/backup.php:187
msgid "Backup data (click to download)"
msgstr "נתוני גיבוי (לחץ להורדה)"

#: inc/backup.php:190
msgid "Action"
msgstr "פעולה"

#: inc/backup.php:210
msgid "Today"
msgstr "היום"

#: inc/backup.php:239
msgid "Restore"
msgstr "לשחזר"

#: inc/backup.php:240 inc/backup.php:250
msgid "Delete"
msgstr "לִמְחוֹק"

#: inc/backup.php:241
msgid "View Log"
msgstr "צפה בלוג"

#: inc/backup.php:246
msgid "Currently no backup(s) found."
msgstr "כרגע לא נמצאו גיבויים."

#: inc/backup.php:249
msgid "Actions upon selected backup(s)"
msgstr "פעולות בגיבויים שנבחרו"

#: inc/backup.php:251
msgid "Select All"
msgstr "בחר הכל"

#: inc/backup.php:252
msgid "Deselect"
msgstr "בטל את הבחירה"

#: inc/backup.php:254
msgid "Note:"
msgstr "הערה:"

#: inc/backup.php:254
msgid "Backup files will be under"
msgstr "קבצי הגיבוי יהיו תחת"

#: inc/contribute.php:3
msgid "WP File Manager Contribution"
msgstr "תרומת מנהל קבצי WP"

#: inc/logs.php:7
msgid ""
"Note: These are demo screenshots. Please buy File Manager pro to Logs "
"functions."
msgstr ""
"הערה: אלה צילומי מסך של הדגמה. אנא קנה את מנהל מנהל הקבצים לפונקציות יומנים."

#: inc/logs.php:8 lib/wpfilemanager.php:24
msgid "Click to Buy PRO"
msgstr "לחץ כדי לקנות PRO"

#: inc/logs.php:8 inc/settings.php:12 inc/settings.php:27
#: inc/system_properties.php:5 lib/wpfilemanager.php:25
msgid "Buy PRO"
msgstr "קנו PRO"

#: inc/logs.php:9
msgid "Edit Files Logs"
msgstr "ערוך יומני קבצים"

#: inc/logs.php:11
msgid "Download Files Logs"
msgstr "הורד יומני קבצים"

#: inc/logs.php:13
msgid "Upload Files Logs"
msgstr "העלאת יומני קבצים"

#: inc/root.php:43
msgid "Settings saved."
msgstr "הגדרות נשמרו."

#: inc/root.php:43 inc/root.php:46
msgid "Dismiss this notice."
msgstr "דחה הודעה זו."

#: inc/root.php:46
msgid "You have not made any changes to be saved."
msgstr "לא ביצעת שינויים כדי לשמור."

#: inc/root.php:55
msgid "Public Root Path"
msgstr "נתיב שורש ציבורי"

#: inc/root.php:58
msgid "File Manager Root Path, you can change according to your choice."
msgstr "נתיב שורש של מנהל הקבצים, תוכלו לשנות בהתאם לבחירתכם."

#: inc/root.php:59
msgid "Default:"
msgstr "בְּרִירַת מֶחדָל:"

#: inc/root.php:60
msgid ""
"Please change this carefully, wrong path can lead file manager plugin to go "
"down."
msgstr "אנא שנה את זה בזהירות, נתיב שגוי יכול לגרום לתוסף מנהל הקבצים לרדת."

#: inc/root.php:64
msgid "Enable Trash?"
msgstr "להפעיל אשפה?"

#: inc/root.php:67
msgid "After enable trash, your files will go to trash folder."
msgstr "לאחר הפעלת האשפה, הקבצים שלך יעברו לתיקיית האשפה."

#: inc/root.php:72
msgid "Enable Files Upload to Media Library?"
msgstr "לאפשר העלאת קבצים לספריית המדיה?"

#: inc/root.php:75
msgid "After enabling this all files will go to media library."
msgstr "לאחר הפעלת זאת כל הקבצים יועברו לספריית המדיה."

#: inc/root.php:80
msgid "Maximum allowed size at the time of database backup restore."
msgstr "גודל מקסימלי מותר בזמן שחזור גיבוי מסד הנתונים."

#: inc/root.php:83
msgid "MB"
msgstr ""

#: inc/root.php:85
msgid ""
"Please increase field value if you are getting error message at the time of "
"backup restore."
msgstr "אנא הגדל את ערך השדה אם אתה מקבל הודעת שגיאה בזמן שחזור הגיבוי."

#: inc/root.php:90
msgid "Save Changes"
msgstr "שמור שינויים"

#: inc/settings.php:10
msgid "Settings - General"
msgstr "הגדרות - כללי"

#: inc/settings.php:11 inc/settings.php:26
msgid ""
"Note: This is just a demo screenshot. To get settings please buy our pro "
"version."
msgstr ""
"הערה: זהו רק צילום מסך להדגמה. כדי לקבל הגדרות אנא קנו את גרסת המקצוענים "
"שלנו."

#: inc/settings.php:13
msgid ""
"Here admin can give access to user roles to use filemanager. Admin can set "
"Default Access Folder and also control upload size of filemanager."
msgstr ""
"כאן מנהל יכול לתת גישה לתפקידי משתמש לשימוש במנהל הסרטים. מנהל מערכת יכול "
"להגדיר תיקיית ברירת מחדל לגישה ולשלוט גם בגודל ההעלאה של מנהל התיקים."

#: inc/settings.php:15
msgid "Settings - Code-editor"
msgstr "הגדרות - עורך קוד"

#: inc/settings.php:16
msgid ""
"File Manager has a code editor with multiple themes. You can select any "
"theme for code editor. It will display when you edit any file. Also you can "
"allow fullscreen mode of code editor."
msgstr ""
"מנהל הקבצים כולל עורך קוד עם מספר נושאים. אתה יכול לבחור כל נושא לעורך הקוד. "
"הוא יוצג כשתערוך קובץ כלשהו. ניתן גם לאפשר מצב מסך מלא של עורך הקוד."

#: inc/settings.php:18
msgid "Code-editor View"
msgstr "תצוגת עורך קוד"

#: inc/settings.php:20
msgid "Settings - User Restrictions"
msgstr "הגדרות - הגבלות משתמשים"

#: inc/settings.php:21
msgid ""
"Admin can restrict actions of any user. Also hide files and folders and can "
"set different - different folders paths for different users."
msgstr ""
"מנהל מערכת יכול להגביל את הפעולות של כל משתמש. הסתיר גם קבצים ותיקיות ויכול "
"להגדיר נתיבי תיקיות שונים עבור משתמשים שונים."

#: inc/settings.php:23
msgid "Settings - User Role Restrictions"
msgstr "הגדרות - הגבלות תפקיד משתמש"

#: inc/settings.php:24
msgid ""
"Admin can restrict actions of any userrole. Also hide files and folders and "
"can set different - different folders paths for different users roles."
msgstr ""
"מנהל מערכת יכול להגביל פעולות של כל משתמש משתמש. הסתיר גם קבצים ותיקיות "
"ויכול להגדיר מסלולי תיקיות שונים - לתפקידי משתמשים שונים."

#: inc/shortcode_docs.php:11
msgid "File Manager - Shortcode"
msgstr "מנהל הקבצים - קוד קצר"

#: inc/shortcode_docs.php:15 inc/shortcode_docs.php:17
#: inc/shortcode_docs.php:19
msgid "USE:"
msgstr "להשתמש:"

#: inc/shortcode_docs.php:15
msgid ""
"It will show file manager on front end. You can control all settings from "
"file manager settings. It will work same as backend WP File Manager."
msgstr ""
"זה יראה את מנהל הקבצים בקצה הקצה. אתה יכול לשלוט בכל ההגדרות מהגדרות מנהל "
"הקבצים. זה יעבוד כמו מנהל הקבצים האחורי של WP."

#: inc/shortcode_docs.php:17
msgid ""
"It will show file manager on front end. But only Administrator can access it "
"and will control from file manager settings."
msgstr ""
"זה יראה את מנהל הקבצים בקצה הקצה. אבל רק מנהל יכול לגשת אליו והוא ישלוט "
"מהגדרות מנהל הקבצים."

#: inc/shortcode_docs.php:23
msgid "Parameters:"
msgstr "פרמטרים:"

#: inc/shortcode_docs.php:26
msgid ""
"It will allow all roles to access file manager on front end or You can "
"simple use for particular user roles as like allowed_roles=\"editor,author"
"\" (seprated by comma(,))"
msgstr ""
"זה יאפשר לכל התפקידים לגשת למנהל הקבצים בקצה הקצה או שאתה יכול להשתמש פשוט "
"עבור תפקידי משתמש מסוימים כמו allow_roles=\"editor,author\" (מופרד בפסיק(,))"

#: inc/shortcode_docs.php:28
msgid ""
"Here \"test\" is the name of folder which is located on root directory, or "
"you can give path for sub folders as like \"wp-content/plugins\". If leave "
"blank or empty it will access all folders on root directory. Default: Root "
"directory"
msgstr ""
"כאן \"מבחן\" הוא שם התיקיה שנמצאת בספריית השורש, או שאתה יכול לתת נתיב "
"לתיקיות משנה כמו \"wp-content/plugins\". אם תשאיר ריק או ריק, זה ייגש לכל "
"התיקיות בספריית השורש. ברירת מחדל: ספריית שורש"

#: inc/shortcode_docs.php:30
msgid "for access to write files permissions, note: true/false, default: false"
msgstr "לגישה להרשאות כתיבה של קבצים, שימו לב: true/false, ברירת מחדל: false"

#: inc/shortcode_docs.php:32
msgid "for access to read files permission, note: true/false, default: true"
msgstr "לגישה להרשאת קריאה של קבצים, שים לב: true/false, ברירת מחדל: true"

#: inc/shortcode_docs.php:34
msgid "it will hide mentioned here. Note: seprated by comma(,). Default: Null"
msgstr "זה יסתתר המוזכר כאן. הערה: מופרדים בפסיק(,). ברירת מחדל: Null"

#: inc/shortcode_docs.php:36
msgid ""
"It will lock mentioned in commas. you can lock more as like \".php,.css,.js"
"\" etc. Default: Null"
msgstr ""
"זה יינעל שהוזכר בפסיקים. אתה יכול לנעול יותר כמו \".php,.css,.js\" וכו'. "
"ברירת מחדל: Null"

#: inc/shortcode_docs.php:38
msgid ""
"* for all operations and to allow some operation you can mention operation "
"name as like, allowed_operations=\"upload,download\". Note: seprated by "
"comma(,). Default: *"
msgstr ""
"* עבור כל הפעולות וכדי לאפשר פעולה כלשהי אתה יכול לציין את שם הפעולה כמו, "
"allow_operations=\"להעלות, להוריד\". הערה: מופרדים בפסיק(,). ברירת מחדל: *"

#: inc/shortcode_docs.php:42
msgid "File Operations List:"
msgstr "רשימת פעולות קבצים:"

#: inc/shortcode_docs.php:46
msgid "mkdir ->"
msgstr ""

#: inc/shortcode_docs.php:46
msgid "Make directory or folder"
msgstr "הכינו ספריה או תיקיה"

#: inc/shortcode_docs.php:47
msgid "mkfile ->"
msgstr ""

#: inc/shortcode_docs.php:47
msgid "Make file"
msgstr "ערוך קובץ"

#: inc/shortcode_docs.php:48
msgid "rename ->"
msgstr ""

#: inc/shortcode_docs.php:48
msgid "Rename a file or folder"
msgstr "שנה שם של קובץ או תיקיה"

#: inc/shortcode_docs.php:49
msgid "duplicate ->"
msgstr ""

#: inc/shortcode_docs.php:49
msgid "Duplicate or clone a folder or file"
msgstr "שכפול או שיבוט של תיקיה או קובץ"

#: inc/shortcode_docs.php:50
msgid "paste ->"
msgstr ""

#: inc/shortcode_docs.php:50
msgid "Paste a file or folder"
msgstr "הדבק קובץ או תיקיה"

#: inc/shortcode_docs.php:51
msgid "ban ->"
msgstr ""

#: inc/shortcode_docs.php:51
msgid "Ban"
msgstr "לֶאֱסוֹר"

#: inc/shortcode_docs.php:52
msgid "archive ->"
msgstr ""

#: inc/shortcode_docs.php:52
msgid "To make a archive or zip"
msgstr "כדי ליצור ארכיון או מיקוד"

#: inc/shortcode_docs.php:53
msgid "extract ->"
msgstr ""

#: inc/shortcode_docs.php:53
msgid "Extract archive or zipped file"
msgstr "חלץ ארכיון או קובץ מכווץ"

#: inc/shortcode_docs.php:54
msgid "copy ->"
msgstr ""

#: inc/shortcode_docs.php:54
msgid "Copy files or folders"
msgstr "העתק קבצים או תיקיות"

#: inc/shortcode_docs.php:58
msgid "cut ->"
msgstr ""

#: inc/shortcode_docs.php:58
msgid "Simple cut a file or folder"
msgstr "פשוט גזור קובץ או תיקיה"

#: inc/shortcode_docs.php:59
msgid "edit ->"
msgstr ""

#: inc/shortcode_docs.php:59
msgid "Edit a file"
msgstr "ערוך קובץ"

#: inc/shortcode_docs.php:60
msgid "rm ->"
msgstr ""

#: inc/shortcode_docs.php:60
msgid "Remove or delete files and folders"
msgstr "הסר או מחק קבצים ותיקיות"

#: inc/shortcode_docs.php:61
msgid "download ->"
msgstr ""

#: inc/shortcode_docs.php:61
msgid "Download files"
msgstr "להוריד קבצים"

#: inc/shortcode_docs.php:62
msgid "upload ->"
msgstr ""

#: inc/shortcode_docs.php:62
msgid "Upload files"
msgstr "העלה קבצים"

#: inc/shortcode_docs.php:63
msgid "search -> "
msgstr ""

#: inc/shortcode_docs.php:63
msgid "Search things"
msgstr "חפש דברים"

#: inc/shortcode_docs.php:64
msgid "info ->"
msgstr ""

#: inc/shortcode_docs.php:64
msgid "Info of file"
msgstr "מידע על הקובץ"

#: inc/shortcode_docs.php:65
msgid "help ->"
msgstr ""

#: inc/shortcode_docs.php:65
msgid "Help"
msgstr "עֶזרָה"

#: inc/shortcode_docs.php:71
msgid ""
"->  It will ban particular users by just putting their ids seprated by "
"commas(,). If user is Ban then they will not able to access wp file manager "
"on front end."
msgstr ""
"-> זה יאסור משתמשים מסוימים רק על ידי הצבת המזהים שלהם על ידי פסיקים (,). אם "
"המשתמש הוא Ban אז הם לא יוכלו לגשת למנהל הקבצים wp בחזית."

#: inc/shortcode_docs.php:72
msgid "-> Filemanager UI View. Default: grid"
msgstr "-> תצוגת ממשק משתמש של Filemanager. ברירת מחדל: grid"

#: inc/shortcode_docs.php:73
msgid "-> File Modified or Create date format. Default: d M, Y h:i A"
msgstr "-> קובץ שונה או צור פורמט תאריך. ברירת מחדל: d M, Y h: i A"

#: inc/shortcode_docs.php:74
msgid "-> File manager Language. Default: English(en)"
msgstr "-> שפת מנהל הקבצים. ברירת מחדל: English (en)"

#: inc/shortcode_docs.php:75
msgid "-> File Manager Theme. Default: Light"
msgstr "-> נושא מנהל הקבצים. ברירת מחדל: Light"

#: inc/system_properties.php:5
msgid "File Manager - System Properties"
msgstr "מנהל הקבצים - מאפייני מערכת"

#: inc/system_properties.php:10
msgid "PHP version"
msgstr "גרסת PHP"

#: inc/system_properties.php:15
msgid "Maximum file upload size (upload_max_filesize)"
msgstr "גודל העלאת קבצים מרבי (upload_max_filesize)"

#: inc/system_properties.php:20
msgid "Post maximum file upload size (post_max_size)"
msgstr "פרסם גודל העלאה מקסימלי של קבצים (post_max_size)"

#: inc/system_properties.php:25
msgid "Memory Limit (memory_limit)"
msgstr "מגבלת זיכרון (memory_limit)"

#: inc/system_properties.php:30
msgid "Timeout (max_execution_time)"
msgstr "פסק זמן (max_execution_time)"

#: inc/system_properties.php:35
msgid "Browser and OS (HTTP_USER_AGENT)"
msgstr "דפדפן ומערכת הפעלה (HTTP_USER_AGENT)"

#: lib/jquery/jquery-ui-1.11.4.js:8
msgid "'"
msgstr ""

#: lib/wpfilemanager.php:31
msgid "Change Theme Here:"
msgstr "שנה כאן נושא:"

#: lib/wpfilemanager.php:35
msgid "Default"
msgstr "בְּרִירַת מֶחדָל"

#: lib/wpfilemanager.php:39
msgid "Dark"
msgstr "אפל"

#: lib/wpfilemanager.php:43
msgid "Light"
msgstr "אוֹר"

#: lib/wpfilemanager.php:47
msgid "Gray"
msgstr "אפור"

#: lib/wpfilemanager.php:52
msgid "Windows - 10"
msgstr ""

#: lib/wpfilemanager.php:85
msgid "Welcome to File Manager"
msgstr "ברוך הבא למנהל הקבצים"

#: lib/wpfilemanager.php:88
msgid ""
"We love making new friends! Subscribe below and we promise to\n"
"    keep you up-to-date with our latest new plugins, updates,\n"
"    awesome deals and a few special offers."
msgstr ""
"אנחנו אוהבים להכיר חברים חדשים! הירשם למטה ואנחנו מבטיחים\n"
"    עדכן אותך עם התוספים החדשים האחרונים שלנו, העדכונים,\n"
"    מבצעים מדהימים וכמה מבצעים מיוחדים."

#: lib/wpfilemanager.php:99
msgid "Please Enter First Name."
msgstr "אנא הזן שם פרטי."

#: lib/wpfilemanager.php:107
msgid "Please Enter Last Name."
msgstr "אנא הזן שם משפחה."

#: lib/wpfilemanager.php:116
msgid "Please Enter Email Address."
msgstr "אנא הזן כתובת דוא\"ל."

#: lib/wpfilemanager.php:120
msgid "Verify"
msgstr "תאשר"

#: lib/wpfilemanager.php:126
msgid "No Thanks"
msgstr "לא תודה"

#: lib/wpfilemanager.php:132
msgid "Terms of Service"
msgstr "תנאי השירות"

#: lib/wpfilemanager.php:134
msgid "Privacy Policy"
msgstr "מדיניות פרטיות"

#: lib/wpfilemanager.php:153
msgid "Saving..."
msgstr "חִסָכוֹן..."

#: lib/wpfilemanager.php:155
msgid "OK"
msgstr "בסדר"

#~ msgid "Backup not found!"
#~ msgstr "גיבוי לא נמצא!"

#~ msgid "Backup removed successfully!"
#~ msgstr "הגיבוי הוסר בהצלחה!"

#~ msgid "<span class=\"fm_console_error\">Nothing selected for backup</span>"
#~ msgstr "<span class=\"fm_console_error\">שום דבר לא נבחר לגיבוי</span>"

#~ msgid "<span class=\"fm_console_error\">Security Issue.</span>"
#~ msgstr "<span class=\"fm_console_error\">נושא אבטחה. </Span>"

#~ msgid "<span class=\"fm_console_success\">Database backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">גיבוי מסד הנתונים נעשה. </Span>"

#~ msgid ""
#~ "<span class=\"fm_console_error\">Unable to create database backup.</span>"
#~ msgstr ""
#~ "<span class=\"fm_console_error\">לא ניתן ליצור גיבוי למסד נתונים. </Span>"

#~ msgid "<span class=\"fm_console_success\">Plugins backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">גיבוי התוספים נעשה.</span>"

#~ msgid "<span class=\"fm_console_error\">Plugins backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">גיבוי התוספים נכשל.</span>"

#~ msgid "<span class=\"fm_console_success\">Themes backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">גיבוי הנושאים נעשה.</span>"

#~ msgid "<span class=\"fm_console_error\">Themes backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">גיבוי הנושאים נכשל.</span>"

#~ msgid "<span class=\"fm_console_success\">Uploads backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">העלאות הגיבוי בוצעו.</span>"

#~ msgid "<span class=\"fm_console_error\">Uploads backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">גיבוי ההעלאות נכשל.</span>"

#~ msgid "<span class=\"fm_console_success\">Others backup done.</span>"
#~ msgstr "<span class=\"fm_console_success\">גיבוי אחר נעשה.</span>"

#~ msgid "<span class=\"fm_console_error\">Others backup failed.</span>"
#~ msgstr "<span class=\"fm_console_error\">גיבוי אחר נכשל.</span>"

#~ msgid "<span class=\"fm_console_success\">All Done</span>"
#~ msgstr "<span class=\"fm_console_success\">הכל בוצע</span>"

#~ msgid ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"
#~ msgstr ""
#~ "<code>[wp_file_manager view=\"list\" lang=\"en\" theme=\"light\" "
#~ "dateformat=\"d M, Y h:i A\" allowed_roles=\"editor,author\" access_folder="
#~ "\"wp-content/plugins\" write = \"true\" read = \"false\" hide_files = "
#~ "\"kumar,abc.php\" lock_extensions=\".php,.css\" allowed_operations="
#~ "\"upload,download\" ban_user_ids=\"2,3\"]"

#~ msgid "Manage your WP files."
#~ msgstr "ניהול קבצי WP שלך."

#~ msgid "Extensions"
#~ msgstr "תוספים"

#~ msgid ""
#~ "Please contribute some donation, to make plugin more stable. You can pay "
#~ "amount of your choice."
#~ msgstr ""
#~ "אנא תרמו תרומה כלשהי, כדי להפוך את הפלאגין ליציב יותר. אתה יכול לשלם סכום "
#~ "על פי בחירתך."
js/fm_script.js000064400000005467147361034410007523 0ustar00jQuery(window).on('load',function (e) {
	jQuery('.wfmrs').delay(10000).slideDown('slow');
	jQuery('.lokhal_verify_email_popup').slideDown();
	jQuery('.lokhal_verify_email_popup_overlay').show();
});
jQuery(document).ready(function () {
	jQuery('.close_fm_help').on('click', function (e) {
		var what_to_do = jQuery(this).data('ct');
		jQuery.ajax({
			type: "post",
			url: ajaxurl,
			data: {
				action: "mk_fm_close_fm_help",
				what_to_do: what_to_do
			},
			success: function (response) {
				jQuery('.wfmrs').slideUp('slow');
			}
		});
	});

	jQuery('#fm_lang').change(function (e) {
		var fm_lang = jQuery(this).val();
		window.location.href = 'admin.php?page=wp_file_manager&nonce=' + fmscript.nonce + '&lang=' + fm_lang;
	});
	jQuery('#fm_theme').change(function (e) {
		var fm_theme = jQuery(this).val();
		window.location.href = 'admin.php?page=wp_file_manager&theme=' + fm_theme;
	});

	jQuery('.lokhal_cancel').click(function (e) {
		e.preventDefault();
		var email = jQuery('#verify_lokhal_email').val();
		var fname = jQuery('#verify_lokhal_fname').val();
		var lname = jQuery('#verify_lokhal_lname').val();
		jQuery('.lokhal_verify_email_popup').slideUp();
		jQuery('.lokhal_verify_email_popup_overlay').hide();
		send_ajax('cancel', email, fname, lname);
	});
	jQuery('.verify_local_email').click(function (e) {
		e.preventDefault();
		var email = jQuery('#verify_lokhal_email').val();
		var fname = jQuery('#verify_lokhal_fname').val();
		var lname = jQuery('#verify_lokhal_lname').val();
		var send_mail = true;
		jQuery('.error_msg').hide();
		if (fname == '') {
			jQuery('#fname_error').show();
			send_mail = false;
		}
		if (lname == '') {
			jQuery('#lname_error').show();
			send_mail = false;
		}
		if (email == '') {
			jQuery('#email_error').show();
			send_mail = false;
		}
		if (send_mail) {
			jQuery('.lokhal_verify_email_popup').slideUp();
			jQuery('.lokhal_verify_email_popup_overlay').hide();
			send_ajax('verify', email, fname, lname);
		}
	});
	// mac
	if (navigator.userAgent.indexOf('Mac OS X') != -1) {
		jQuery("body").addClass("mac");
	} else {
		jQuery("body").addClass("windows");
	}

	jQuery('.fm_close_msg').click(function (e) {
		jQuery('.fm_msg_popup').fadeOut();
	});

});

function send_ajax(todo, email, fname, lname) {
	jQuery.ajax({
		type: "post",
		url: ajaxurl,
		data: {
			action: "mk_filemanager_verify_email",
			'todo': todo,
			'vle_nonce': vle_nonce,
			'lokhal_email': email,
			'lokhal_fname': fname,
			'lokhal_lname': lname
		},
		success: function (response) {
			if (response == '1') {
				alert('A confirmation link has been sent to your email address. Please click on the link to verify your email address.');
			} else if (response == '2') {
				alert('Error - Email Not Sent.');
			}
		}
	});
}js/fm-backup.js000064400000026567147361034410007406 0ustar00jQuery(document).ready(function(){
    var ajax_url = fmbackupparams.ajaxurl;
    var wpfmbackup = fmbackupparams.wpfmbackup;
    jQuery(document).on("click", "#wpfm-backupnow-button", function(){
        jQuery(".fmbkp_console h3").removeAttr('style');
        var fm_bkp_database = jQuery('#fm_bkp_database').prop('checked');
        var fm_bkp_files = jQuery('#fm_bkp_files').prop('checked');
        var fm_bkp_plugins = jQuery('#fm_bkp_plugins').prop('checked');
        var fm_bkp_themes = jQuery('#fm_bkp_themes').prop('checked');
        var fm_bkp_uploads = jQuery('#fm_bkp_uploads').prop('checked');
        var fm_bkp_other = jQuery('#fm_bkp_other').prop('checked');
        var fm_bkp_id = ''; // empty
        var flag = 1;
        if(fm_bkp_files === true && fm_bkp_plugins === false && fm_bkp_themes === false  && fm_bkp_uploads === false  && fm_bkp_other === false ){
            alert(fmbackupparams.backup_empty_error);
            flag = 0;
        }
        if(flag == 1){
            jQuery(".fmbkp_console_popup .close_fm_console").hide();
            jQuery('.fmbkp_console_popup').show();
            jQuery('#fmbkp_console').show().html('<p class="backup_wait">'+fmbackupparams.backup_running+'</p><ul></ul>');
            wp_fm_backup(ajax_url, fm_bkp_database,fm_bkp_files,fm_bkp_plugins,fm_bkp_themes,fm_bkp_uploads,fm_bkp_other,fm_bkp_id);
        }
    });
    function wp_fm_backup(ajax_url, fm_bkp_database,fm_bkp_files,fm_bkp_plugins,fm_bkp_themes,fm_bkp_uploads,fm_bkp_other,fm_bkp_id){
        jQuery.ajax({
            url : ajax_url,
            type : 'post',
            data : {
                action : 'mk_file_manager_backup',
                database : fm_bkp_database,
                files: fm_bkp_files,
                plugins: fm_bkp_plugins,
                themes: fm_bkp_themes,
                uploads: fm_bkp_uploads,
                others: fm_bkp_other,
                bkpid: fm_bkp_id,
                nonce: wpfmbackup,
            },
            success : function( response ) {
                var res = JSON.parse(response);
                var next_step = res.step;
                jQuery('.fmbkp_console_popup').show();
                if(next_step == '0') {
                    jQuery('.fmbkp_console_loader').hide();              
                    jQuery('#fmbkp_console').show().find("ul").append(res.msg);
                    setTimeout(function(){
                        location.reload();
                    }, 600);
                } else {
                    jQuery('#fmbkp_console').show().find("ul").append(res.msg);
                    wp_fm_backup(ajax_url,res.database,res.files,res.plugins,res.themes,res.uploads,res.others,res.bkpid);
                }            
            }
        });
    } 
    jQuery(".backupids").click(function(){
        if(jQuery(".backupids:checked").length == jQuery(".backupids").length){
            jQuery(".bkpchkCheckAll").prop("checked",true);
            jQuery('.bkpCheckAll').addClass('disabled_btn');
            jQuery('.bkpUnCheckAll').removeClass('disabled_btn');
            jQuery('.bkpDelete').removeClass('disabled_btn');
        }
        else{
            jQuery(".bkpchkCheckAll").prop("checked",false);
            jQuery('.bkpUnCheckAll').addClass('disabled_btn');
            jQuery('.bkpCheckAll').removeClass('disabled_btn');
            jQuery('.bkpDelete').removeClass('disabled_btn');
            if(jQuery(".backupids:checked").length == 0){
                jQuery('.bkpDelete').addClass('disabled_btn');
            }
            if(jQuery(".backupids:checked").length > 0){
                jQuery('.bkpUnCheckAll').removeClass('disabled_btn');
            }
        }
    });
    // select all -> backups
    jQuery(".bkpchkCheckAll").click(function () {
        jQuery(".backupids").prop('checked', jQuery(this).prop('checked'));
        if(jQuery(this).prop('checked')) {
        jQuery('.bkpDelete,.bkpUnCheckAll').removeClass('disabled_btn');
        jQuery('.bkpCheckAll').addClass('disabled_btn');
        } else {
            jQuery('.bkpDelete,.bkpUnCheckAll').addClass('disabled_btn');
            jQuery('.bkpCheckAll').removeClass('disabled_btn');
        }
    });
    jQuery(".bkpCheckAll").click(function () {
        jQuery(".backupids,.bkpchkCheckAll").prop('checked', true);
        jQuery('.bkpDelete,.bkpUnCheckAll').removeClass('disabled_btn');
        jQuery(this).addClass('disabled_btn');
    });
    jQuery(".bkpUnCheckAll").click(function () {
        jQuery(".backupids,.bkpchkCheckAll").prop('checked', false);
        jQuery('.bkpDelete,.bkpUnCheckAll').addClass('disabled_btn');
        jQuery('.bkpCheckAll').removeClass('disabled_btn');
        
    });
    // for toggle backup options
    jQuery("#fm_open_files_option").click(function () {
        jQuery("#fm_open_files_options").slideToggle();
    });
    //close console popup
    jQuery(".close_fm_console").click(function () {
        jQuery(".fmbkp_console_popup").hide();
    });

    // on delete - ajax
    jQuery(".bkpDelete").click(function () {
        var delarr = new Array();

        jQuery(".backupids").each(function () {
            if(jQuery(this).is(':checked')) {
            delarr.push(jQuery(this).val());
            }
        }); //each

        if(delarr == '') {
            alert(fmbackupparams.delete_backup);
        } else {
            var r = confirm(fmbackupparams.confirm_del)
            if (r == true) {
                jQuery.ajax({
                    type: "POST",
                    url: ajax_url,
                    data: {
                            action : 'mk_file_manager_backup_remove',
                            delarr: delarr,
                            nonce: fmbackupparams.wpfmbackupremove,
                        },
                    cache: false,

                success: function(response) {   
                    alert(response);
                    location.reload();
                }
                });//ajax
            }
    }
    }); //click



    //open DELETE popup
    jQuery('.bkpDeleteID').on("click",function(){
        jQuery(".dlt_backup_popup").show();
        var bkpId = jQuery(this).attr('id');
        jQuery('.dlt_confirmed').attr("id", bkpId);    
    });
    //close DELETE popup 
    jQuery(".close_dlt_backup, .dlt_cancel").click(function () {
        jQuery(".dlt_backup_popup").hide();
    });
    // on delete - ajax
    jQuery(".dlt_confirmed").click(function () {
        var bkpId = jQuery(this).attr('id')
            jQuery.ajax({
                type: "POST",
                url: ajax_url,
                data: {
                        action : 'mk_file_manager_single_backup_remove',
                        id: bkpId,
                        nonce: fmbackupparams.wpfmbackupremove,
                    },
                cache: false,

            success: function(response) {
                if(response == "1"){
                    jQuery(".fmbkp_console h3").css('text-transform','uppercase !important');
                    jQuery(".dlt_backup_popup").hide();
                    jQuery(".dlt_success_popup").show();
                }
            }
            });//ajax
    }); //click
    jQuery(".close_dlt_success, .dlt_confirmed_success").click(function () {
        jQuery(".dlt_success_popup").hide();
        location.reload();    
    });



    // backup - ajax
    jQuery(".bkpViewLog").click(function () {
        jQuery('.fmbkp_console_popup').show();
        jQuery('#fmbkp_console').html('');
        var bkpId = jQuery(this).attr('id')
            jQuery.ajax({
                type: "POST",
                url: ajax_url,
                data: {
                        action : 'mk_file_manager_single_backup_logs',
                        id: bkpId,
                        nonce: fmbackupparams.wpfmbackuplogs
                    },
                cache: false,

            success: function(response) {
                jQuery('.fmbkp_console_loader').hide();      
                jQuery('#fmbkp_console').show().html(response);
            }
            });//ajax
    }); //click

    //open restore popup
    jQuery('.bkpRestoreID').on("click",function(){
        var check_db = jQuery(this).parent().prev('.bck_action').text();
        var packet = fmbackupparams.default_packet_value
        if( check_db.indexOf('Database') >= 0 && parseInt(packet) < 9999360){
            alert(fmbackupparams.packet_error_msg);
        }else{
            jQuery(".restore_backup_popup").show();
            var bkpId = jQuery(this).attr('id');
            jQuery('.restore_confirmed').attr("id", bkpId);
        }
        
    });
    //close restore popup 
    jQuery(".close_restore_backup, .restore_cancel").click(function () {
        jQuery(".restore_backup_popup").hide();
    });
    // on delete - ajax
    
    jQuery(".restore_confirmed").click(function () {
        jQuery(this).addClass('disabled_btn');
        var bkpId = jQuery(this).attr('id');
        jQuery(this).attr('disabled', true);
        var fm_res_database = true;
        var fm_res_plugins = true;
        var fm_res_themes = true;
        var fm_res_uploads = true;
        var fm_res_other =true;
        jQuery(".fmbkp_console_popup .close_fm_console").hide();
        jQuery('.restore_backup_popup').hide();
        jQuery('.fmbkp_console_popup').show();
        jQuery('#fmbkp_console').show().html('<p class="backup_wait">'+fmbackupparams.restore_running+'</p><ul></ul>');
        wp_fm_restore(ajax_url, bkpId, fm_res_database,fm_res_plugins,fm_res_themes,fm_res_uploads,fm_res_other);
    });
    function wp_fm_restore(ajax_url, bkpId,fm_res_database,fm_res_plugins,fm_res_themes,fm_res_uploads,fm_res_other){
        jQuery.ajax({
            url : ajax_url,
            type : 'post',
            data : {
                action : 'mk_file_manager_single_backup_restore',
                id: bkpId,
                nonce: fmbackupparams.wpfmbackuprestore,
                database : fm_res_database,
                plugins: fm_res_plugins,
                themes: fm_res_themes,
                uploads: fm_res_uploads,
                others: fm_res_other,
            },
            cache: false,
            success : function( response ) {
                var res = JSON.parse(response);
                var next_step = res.step;
                jQuery('.fmbkp_console_popup').show();
                if(next_step == '0') {
                    jQuery('.fmbkp_console_loader').hide();              
                    jQuery('#fmbkp_console').show().find("ul").append(res.msg+' '+res.msgg);
                    location.reload();
                } else {
                    if(res.msg != ''){
                        jQuery('#fmbkp_console').show().find("ul").append(res.msg);
                    }
                    wp_fm_restore(ajax_url, bkpId, res.database,res.plugins,res.themes,res.uploads,res.others);
                }            
            }
        });
    } 

});

jQuery(document).on('click','#fm_bkp_files', function(){
    var status = this.checked;
    jQuery(".chk-files").each( function() {
        jQuery(this).prop("checked",status);
    });
});

jQuery(document).on("click",".bck-icon", function(){
    var key = jQuery(this).attr('data-token');
    window.open(fmbackupparams.backup_baseurl+key);
});

jQuery(document).on("click",".fm-download-all", function(){
    var selector = jQuery(this).parents('.bck_action').find('a');
    var key = jQuery(selector).attr('data-token');
    key = key+'/yes';
    window.open(fmbackupparams.backupall_baseurl+key);
});js/top.js000064400000000610147361034410006320 0ustar00var $ = jQuery;
function fm_get_network_url(){
  var urlhash = window.location.hash;
  var href = '';
  if(urlhash){
    var arr = urlhash.split('_');
    var lastItem = arr.pop();
    var txt = decodeURIComponent(escape(window.atob(lastItem)));

    if(fmfparams.is_multisite == '1')
    {
      if(txt == '/')
      {
        href = fmfparams.network_url;
      }
    }
  }
  return href;
}js/file_manager_free_shortcode_admin.js000064400000010621147361034410014355 0ustar00jQuery(document).ready(function () {
  var security_key = fmfparams.nonce;
  var fmlang = fmfparams.lang;
  var ajaxurl = fmfparams.ajaxurl;
  var href = fm_get_network_url();
  jQuery("#wp_file_manager")
    .elfinder({
      url: ajaxurl,
      customData: {
        action: "mk_file_folder_manager",
        _wpnonce: security_key,
        networkhref:href,
      },
      uploadMaxChunkSize: 1048576000000,
      defaultView: "list",
      height: 500,
      lang: fmlang,
      soundPath: fmfparams.plugin_url+'sounds/',
      baseUrl: fmfparams.plugin_url,
      /* Start */
      handlers: {
        /* Upload */
        upload: function (event, instance) {
          if (fmfparams.fm_enable_media_upload == "1") {
            var filepaths = [];
            var uploadedFiles = event.data.added;
            for (i in uploadedFiles) {
              var file = uploadedFiles[i];
              filepaths.push(file.url);
            }
          
            if (filepaths != "") {
              var data = {
                action: "mk_file_folder_manager_media_upload",
                uploadefiles: filepaths,
                _wpnonce: security_key,
                networkhref:href,
              };
              jQuery.post(ajaxurl, data, function (response) {});
            }
          }
        },
      },

      commandsOptions: {
        edit: {
          mimes: [],

          editors: [
            {
              mimes: [
                "text/plain",
                "text/html",
                "text/javascript",
                "text/css",
                "text/x-php",
                "application/x-php",
              ],

              load: function (textarea) {
                var mimeType = this.file.mime;
                var filename = this.file.name;
                // CodeMirror configure
                editor = CodeMirror.fromTextArea(textarea, {
                  //mode: 'css',
                  indentUnit: 4,
                  lineNumbers: true,
                  theme: "3024-day",
                  viewportMargin: Infinity,
                  lineWrapping: true,
                  //gutters: ["CodeMirror-lint-markers"],
                  lint: true,
                });
                return editor;
              },
              close: function (textarea, instance) {
                this.myCodeMirror = null;
              },

              save: function (textarea, editor) {
                jQuery(textarea).val(editor.getValue());
              },
            },
          ],
        },
        quicklook: {
          sharecadMimes: [
            "image/vnd.dwg",
            "image/vnd.dxf",
            "model/vnd.dwf",
            "application/vnd.hp-hpgl",
            "application/plt",
            "application/step",
            "model/iges",
            "application/vnd.ms-pki.stl",
            "application/sat",
            "image/cgm",
            "application/x-msmetafile",
          ],
          googleDocsMimes: [
            "application/pdf",
            "image/tiff",
            "application/vnd.ms-office",
            "application/msword",
            "application/vnd.ms-word",
            "application/vnd.ms-excel",
            "application/vnd.ms-powerpoint",
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "application/vnd.openxmlformats-officedocument.presentationml.presentation",
            "application/postscript",
            "application/rtf",
          ],
          officeOnlineMimes: [
            "application/vnd.ms-office",
            "application/msword",
            "application/vnd.ms-word",
            "application/vnd.ms-excel",
            "application/vnd.ms-powerpoint",
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "application/vnd.openxmlformats-officedocument.presentationml.presentation",
            "application/vnd.oasis.opendocument.text",
            "application/vnd.oasis.opendocument.spreadsheet",
            "application/vnd.oasis.opendocument.presentation",
          ],
        },
      },
      uiOptions : {
        toolbarExtra : {
          autoHideUA: [],
          displayTextLabel: false,
          preferenceInContextmenu: false
        }
      }
      /* END */
    })
    .elfinder("instance");
});
classes/files-backup.php000064400000007701147361034410011267 0ustar00<?php 
class wp_file_manager_files_backup {

    public function zipData($source, $destination) {
        $source = str_replace('..', '', $source);
        $destination = str_replace('..', '', $destination);
        if (extension_loaded('zip') === true) {
            if (file_exists($source) === true) {
                $zip = new ZipArchive();
                if ($zip->open($destination, ZIPARCHIVE::CREATE) === true) {
                    $source = str_replace('\\', '/', realpath($source));
                    if (is_dir($source) === true) {
                        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
                        foreach ($files as $file) {
                            if(strpos($file,'fm_backup') === false && (strpos($file,'opt') === false || strpos($file,'opt'))) {
                                $file = str_replace('\\', '/', realpath($file));
                                $relative_path = substr($file, strlen($source) + 1);
                                if (is_dir($file) === true) {
                                    if($relative_path !== false){
                                        $zip->addEmptyDir($relative_path);
                                    }
                                } else if (is_file($file) === true) {
                                    $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
                                }
                            }
                        }
                    } else if (is_file($source) === true) {
                        $zip->addFromString(basename($source), file_get_contents($source));
                    }
                }
                return $zip->close();
            }
        }
        return false;
    }
    public function zipOther($source, $destination) {
        $source = str_replace('..', '', $source);
        $destination = str_replace('..', '', $destination);
        if (extension_loaded('zip') === true) {
            if (file_exists($source) === true) {
                $zip = new ZipArchive();
                if ($zip->open($destination, ZIPARCHIVE::CREATE) === true) {
                    $source = str_replace('\\', '/', realpath($source));
                    if (is_dir($source) === true) {
                        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); 
                        foreach ($files as $file) {
                           $file = str_replace('\\', '/', realpath($file));
                           $allfolders= explode("wp-content",$file);
                           if(isset($allfolders[1])){
                                $allfoldersdata= explode("/",$allfolders[1]);
                                if(isset($allfoldersdata[1]) && ($allfoldersdata[1] != 'themes' && $allfoldersdata[1] != 'plugins' && $allfoldersdata[1] != 'uploads')){
                                    $file = str_replace('\\', '/', realpath($file));
                                    $relative_path = substr($file, strlen($source) + 1);
                                    if (is_dir($file) === true) {
                                        if($relative_path !== false){
                                            $zip->addEmptyDir($relative_path);
                                        }
                                    } else if (is_file($file) === true) {
                                        $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
                                    }
                                }
                            }

                        }
                    } else if (is_file($source) === true) {
                        $zip->addFromString(basename($source), file_get_contents($source));
                    }
                }
                return $zip->close();
            }
        }
        return false;
    }
}classes/db-restore.php000064400000017631147361034410010773 0ustar00<?php
/**
 * Define database parameters here
 */
$upload_dir = wp_upload_dir();
$backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup';
define("BACKUP_DIR", $backup_dirname);
define("CHARSET", 'utf8');
define("DISABLE_FOREIGN_KEY_CHECKS", true);

/**
 * The Restore_Database class
 */
class Restore_Database {
    /**
     * Host where the database is located
     */
    var $host;

    /**
     * Username used to connect to database
     */
    var $username;

    /**
     * Password used to connect to database
     */
    var $passwd;

    /**
     * Database to backup
     */
    var $dbName;

    /**
     * Database charset
     */
    var $charset;

    /**
     * Database connection
     */
    var $conn;

    /**
     * Disable foreign key checks
     */
    var $disableForeignKeyChecks;

    /**
     * Constructor initializes database
     */
    function __construct($filename) {
        $this->host                    = DB_HOST;
        $this->username                = DB_USER;
        $this->passwd                  = DB_PASSWORD;
        $this->dbName                  = DB_NAME;
        $this->charset                 = DB_CHARSET;
        $this->disableForeignKeyChecks = defined('DISABLE_FOREIGN_KEY_CHECKS') ? DISABLE_FOREIGN_KEY_CHECKS : true;
        $this->conn                    = $this->initializeDatabase();
        $this->backupDir               = defined('BACKUP_DIR') ? BACKUP_DIR : '.';
        $this->backupFile              = $filename;
    }

    /**
     * Destructor re-enables foreign key checks
     */
    function __destructor() {
        /**
         * Re-enable foreign key checks 
         */
        if ($this->disableForeignKeyChecks === true) {
            mysqli_query($this->conn, 'SET foreign_key_checks = 1');
        }
    }

    protected function initializeDatabase() {
        try {
            $conn = mysqli_connect($this->host, $this->username, $this->passwd, $this->dbName);
            if (mysqli_connect_errno()) {
                throw new Exception('ERROR connecting database: ' . mysqli_connect_error());
                die();
            }
            if (!mysqli_set_charset($conn, $this->charset)) {
                mysqli_query($conn, 'SET NAMES '.$this->charset);
            }

            /**
             * Disable foreign key checks 
             */
            if ($this->disableForeignKeyChecks === true) {
                mysqli_query($conn, 'SET foreign_key_checks = 0');
            }

        } catch (Exception $e) {
            print_r($e->getMessage());
            die();
        }

        return $conn;
    }

    /**
     * Backup the whole database or just some tables
     * Use '*' for whole database or 'table1 table2 table3...'
     * @param string $tables
     */
    public function restoreDb() {
        try {
            $sql = '';
            $multiLineComment = false;

            $backupDir = $this->backupDir;
            $backupFile = $this->backupFile;

            /**
             * Gunzip file if gzipped
             */
            $backupFileIsGzipped = substr($backupFile, -3, 3) == '.gz' ? true : false;
          
            if ($backupFileIsGzipped) {
                if (!$backupFile = $this->gunzipBackupFile()) {
                    throw new Exception("ERROR: couldn't gunzip backup file " . $backupDir . '/' . $backupFile);
                }
            }

            /**
            * Read backup file line by line
            */
            $handle = fopen($backupDir . '/' . $backupFile, "r");
            if ($handle) {
                while (($line = fgets($handle)) !== false) {
                    $line = ltrim(rtrim($line));
                    if (strlen($line) > 1) { // avoid blank lines
                        $lineIsComment = false;
                        if (preg_match('/^\/\*/', $line)) {
                            $multiLineComment = true;
                            $lineIsComment = true;
                        }
                        if ($multiLineComment or preg_match('/^\/\//', $line)) {
                            $lineIsComment = true;
                        }
                        if (!$lineIsComment) {
                            $sql .= $line;
                            if (preg_match('/;$/', $line)) {
                                
                                mysqli_query($this->conn, "SET sql_mode = ''");
                                // execute query
                                if(mysqli_query($this->conn, $sql)) {
                                    if (preg_match('/^CREATE TABLE `([^`]+)`/i', $sql, $tableName)) {
                                        $this->obfPrint("Table succesfully created: `" . $tableName[1] . "`");
                                    }
                                    $sql = '';
                                } else {
                                    throw new Exception("ERROR: SQL execution error: " . mysqli_error($this->conn));
                                }
                            }
                        } else if (preg_match('/\*\/$/', $line)) {
                            $multiLineComment = false;
                        }
                    }
                }
                fclose($handle);
            } else {
                throw new Exception("ERROR: couldn't open backup file " . $backupDir . '/' . $backupFile);
            } 
        } catch (Exception $e) {
            print_r($e->getMessage());
            return false;
        }

        if ($backupFileIsGzipped) {
            unlink($backupDir . '/' . $backupFile);
        }
        return true;
    }

    /*
     * Gunzip backup file
     *
     * @return string New filename (without .gz appended and without backup directory) if success, or false if operation fails
     */
    protected function gunzipBackupFile() {
        // Raising this value may increase performance
        $bufferSize = 4096; // read 4kb at a time
        $error = false;

        $source = $this->backupDir . '/' . $this->backupFile;
        $dest = $this->backupDir . '/' . date("Ymd_His", time()) . '_' . substr($this->backupFile, 0, -3);

        $this->obfPrint('Gunzipping backup file ' . $source . '... ', 1, 1);

        // Remove $dest file if exists
        if (file_exists($dest)) {
            if (!unlink($dest)) {
                return false;
            }
        }
        
        // Open gzipped and destination files in binary mode
        if (!$srcFile = gzopen($this->backupDir . '/' . $this->backupFile, 'rb')) {
            return false;
        }
        if (!$dstFile = fopen($dest, 'wb')) {
            return false;
        }

        while (!gzeof($srcFile)) {
            // Read buffer-size bytes
            // Both fwrite and gzread are binary-safe
            if(!fwrite($dstFile, gzread($srcFile, $bufferSize))) {
                return false;
            }
        }

        fclose($dstFile);
        gzclose($srcFile);

        // Return backup filename excluding backup directory
        return str_replace($this->backupDir . '/', '', $dest);
    }

    /**
     * Prints message forcing output buffer flush
     *
     */
    public function obfPrint ($msg = '', $lineBreaksBefore = 0, $lineBreaksAfter = 1) {
        if (!$msg) {
            return false;
        }

        $msg = date("Y-m-d H:i:s") . ' - ' . $msg;
        $output = '';

        if (php_sapi_name() != "cli") {
            $lineBreak = "<br />";
        } else {
            $lineBreak = "\n";
        }

        if ($lineBreaksBefore > 0) {
            for ($i = 1; $i <= $lineBreaksBefore; $i++) {
                $output .= $lineBreak;
            }                
        }

        $output .= $msg;

        if ($lineBreaksAfter > 0) {
            for ($i = 1; $i <= $lineBreaksAfter; $i++) {
                $output .= $lineBreak;
            }                
        }

        if (php_sapi_name() == "cli") {
            $output .= "\n";
        }

        if (php_sapi_name() != "cli") {
            ob_flush();
        }

        flush();
    }
}
classes/files-restore.php000064400000004242147361034410011502 0ustar00<?php
class wp_file_manager_files_restore {

   public function extract($source, $destination) {
      if (extension_loaded('zip') === true) {
            if (file_exists($source) === true) {
                $zip = new ZipArchive();
                $res = $zip->open($source);
                if ($res === TRUE) {
                    $allfiles = [];
                    for($i = 0; $i < $zip->numFiles; $i++) {
                        $filename = $zip->getNameIndex($i);
                        if (strpos($filename,'wp-file-manager') === false) {
                            $allfiles[] =  $zip->getNameIndex($i);
                        }
                    }

                    $zip->extractTo($destination, $allfiles);
                    $zip->close();
                    
                    $isLocal = explode(':\\',$destination);
                    $path = count($isLocal) > 1 ? str_replace(DIRECTORY_SEPARATOR,'/',$isLocal[1]) : str_replace(DIRECTORY_SEPARATOR,'/',$isLocal[0]);
                    if(is_dir($destination.'/'.$path)){
                        $is_copied = copy_dir( $destination.'/'.$path, $destination);
                        if($is_copied){
                            $folderarr = explode('/',$path);
                            if(is_dir($destination.'/'.$folderarr[0])){
                                $is_deleted = $this->fm_rmdir($destination.'/'.$folderarr[0]);
                            }
                            return true;
                        }
                    }
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
        return false;
   }

    public function fm_rmdir($src) {
        $dir = opendir($src);
        while(false !== ( $file = readdir($dir)) ) {
            if (( $file != '.' ) && ( $file != '..' )) {
                $full = $src . '/' . $file;
                if ( is_dir($full) ) {
                    $this->fm_rmdir($full);
                }
                else {
                    unlink($full);
                }
            }
        }
        closedir($dir);
        rmdir($src);
    }

}classes/db-backup.php000064400000026520147361034410010552 0ustar00<?php 
/**
 * Define database parameters here
 */
$upload_dir = wp_upload_dir();
$backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup';
define("BACKUP_DIR", $backup_dirname); // Comment this line to use same script's directory ('.')
define("TABLES", '*'); // Full backup
define("CHARSET", 'utf8');
define("GZIP_BACKUP_FILE", true); // Set to false if you want plain SQL backup files (not gzipped)
define("DISABLE_FOREIGN_KEY_CHECKS", true); // Set to true if you are having foreign key constraint fails
define("BATCH_SIZE", 1000); // Batch size when selecting rows from database in order to not exhaust system memory
                            // Also number of rows per INSERT statement in backup file
/**
 * The Backup_Database class
 */
class Backup_Database {
    /**
     * Host where the database is located
     */
    var $host;

    /**
     * Username used to connect to database
     */
    var $username;

    /**
     * Password used to connect to database
     */
    var $passwd;

    /**
     * Database to backup
     */
    var $dbName;

    /**
     * Database charset
     */
    var $charset;

    /**
     * Database connection
     */
    var $conn;

    /**
     * Backup directory where backup files are stored 
     */
    var $backupDir;

    /**
     * Output backup file
     */
    var $backupFile;

    /**
     * Use gzip compression on backup file
     */
    var $gzipBackupFile;

    /**
     * Content of standard output
     */
    var $output;

    /**
     * Disable foreign key checks
     */
    var $disableForeignKeyChecks;

    /**
     * Batch size, number of rows to process per iteration
     */
    var $batchSize;

    /**
     * Constructor initializes database
     */
    public function __construct($filename) {
        $this->host                    = DB_HOST;
        $this->username                = DB_USER;
        $this->passwd                  = DB_PASSWORD;
        $this->dbName                  = DB_NAME;
        $this->charset                 = DB_CHARSET;
        $this->conn                    = $this->initializeDatabase();
        $this->backupDir               = BACKUP_DIR ? BACKUP_DIR : '.';
        $this->backupFile              = $filename.'-db.sql';
        $this->gzipBackupFile          = defined('GZIP_BACKUP_FILE') ? GZIP_BACKUP_FILE : true;
        $this->disableForeignKeyChecks = defined('DISABLE_FOREIGN_KEY_CHECKS') ? DISABLE_FOREIGN_KEY_CHECKS : true;
        $this->batchSize               = defined('BATCH_SIZE') ? BATCH_SIZE : 1000; // default 1000 rows
        $this->output                  = '';
    }

    protected function initializeDatabase() {
        try {
            $conn = mysqli_connect($this->host, $this->username, $this->passwd, $this->dbName);
            if (mysqli_connect_errno()) {
                throw new Exception('ERROR connecting database: ' . mysqli_connect_error());
                die();
            }
            if (!mysqli_set_charset($conn, $this->charset)) {
                mysqli_query($conn, 'SET NAMES '.$this->charset);
            }
        } catch (Exception $e) {
            print_r($e->getMessage());
            die();
        }

        return $conn;
    }

    /**
     * Backup the whole database or just some tables
     * Use '*' for whole database or 'table1 table2 table3...'
     * @param string $tables
     */
    public function backupTables($tables = '*', $bkpDir="") {
        try {
            /**
             * Tables to export
             */
            if($tables == '*') {
                $tables = array();
                $result = mysqli_query($this->conn, 'SHOW TABLES');
                while($row = mysqli_fetch_row($result)) {
                    $tables[] = $row[0];
                }
            } else {
                $tables = is_array($tables) ? $tables : explode(',', str_replace(' ', '', $tables));
            }

            $sql = 'CREATE DATABASE IF NOT EXISTS `'.$this->dbName."`;\n\n";
            $sql .= 'USE `'.$this->dbName."`;\n\n";

            /**
             * Disable foreign key checks 
             */
            if ($this->disableForeignKeyChecks === true) {
                $sql .= "SET foreign_key_checks = 0;\n\n";
            }

            /**
             * Iterate tables
             */
            foreach($tables as $table) {
                $this->obfPrint("Backing up `".$table."` table...".str_repeat('.', 50-strlen($table)), 0, 0);

                /**
                 * CREATE TABLE
                 */
                $sql .= 'DROP TABLE IF EXISTS `'.$table.'`;';
                $row = mysqli_fetch_row(mysqli_query($this->conn, 'SHOW CREATE TABLE `'.$table.'`'));
                $sql .= "\n\n".$row[1].";\n\n";

                /**
                 * INSERT INTO
                 */

                $row = mysqli_fetch_row(mysqli_query($this->conn, 'SELECT COUNT(*) FROM `'.$table.'`'));
                $numRows = $row[0];

                // Split table in batches in order to not exhaust system memory 
                $numBatches = intval($numRows / $this->batchSize) + 1; // Number of while-loop calls to perform

                for ($b = 1; $b <= $numBatches; $b++) {
                    
                    $query = 'SELECT * FROM `' . $table . '` LIMIT ' . ($b * $this->batchSize - $this->batchSize) . ',' . $this->batchSize;
                    $result = mysqli_query($this->conn, $query);
                    $realBatchSize = mysqli_num_rows ($result); // Last batch size can be different from $this->batchSize
                    $numFields = mysqli_num_fields($result);

                    if ($realBatchSize !== 0) {
                        $sql .= 'INSERT INTO `'.$table.'` VALUES ';

                        for ($i = 0; $i < $numFields; $i++) {
                            $rowCount = 1;
                            while($row = mysqli_fetch_row($result)) {
                                $sql.='(';
                                for($j=0; $j<$numFields; $j++) {
                                    if (isset($row[$j])) {
                                        $row[$j] = addslashes($row[$j]);
                                        $row[$j] = str_replace("\n","\\n",$row[$j]);
                                        $row[$j] = str_replace("\r","\\r",$row[$j]);
                                        $row[$j] = str_replace("\f","\\f",$row[$j]);
                                        $row[$j] = str_replace("\t","\\t",$row[$j]);
                                        $row[$j] = str_replace("\v","\\v",$row[$j]);
                                        $row[$j] = str_replace("\a","\\a",$row[$j]);
                                        $row[$j] = str_replace("\b","\\b",$row[$j]);
                                        if (preg_match('/^-?[0-9]+$/', $row[$j]) or $row[$j] == 'NULL' or $row[$j] == 'null') {
                                            $sql .= $row[$j];
                                        } else {
                                            $sql .= '"'.$row[$j].'"' ;
                                        }
                                    } else {
                                        $sql.= 'NULL';
                                    }
    
                                    if ($j < ($numFields-1)) {
                                        $sql .= ',';
                                    }
                                }
    
                                if ($rowCount == $realBatchSize) {
                                    $rowCount = 0;
                                    $sql.= ");\n"; //close the insert statement
                                } else {
                                    $sql.= "),\n"; //close the row
                                }
    
                                $rowCount++;
                            }
                        }
    
                        $this->saveFile($sql);
                        $sql = '';
                    }
                }
                $sql.="\n\n";

                $this->obfPrint('OK');
            }

            /**
             * Re-enable foreign key checks 
             */
            if ($this->disableForeignKeyChecks === true) {
                $sql .= "SET foreign_key_checks = 1;\n";
            }

            $this->saveFile($sql);

            if ($this->gzipBackupFile) {
                $this->gzipBackupFile();
            } else {
                $this->obfPrint('Backup file succesfully saved to ' . $this->backupDir.'/'.$this->backupFile, 1, 1);
            }
        } catch (Exception $e) {
            print_r($e->getMessage());
            return false;
        }

        return true;
    }

    /**
     * Save SQL to file
     * @param string $sql
     */
    protected function saveFile(&$sql) {
        if (!$sql) return false;

        try {

            if (!file_exists($this->backupDir)) {
                mkdir($this->backupDir, 0777, true);
            }

            file_put_contents($this->backupDir.'/'.$this->backupFile, $sql, FILE_APPEND | LOCK_EX);

        } catch (Exception $e) {
            print_r($e->getMessage());
            return false;
        }

        return true;
    }

    /*
     * Gzip backup file
     *
     * @param integer $level GZIP compression level (default: 9)
     * @return string New filename (with .gz appended) if success, or false if operation fails
     */
    protected function gzipBackupFile($level = 9) {
        if (!$this->gzipBackupFile) {
            return true;
        }

        $source = $this->backupDir . '/' . $this->backupFile;
        $dest =  $source . '.gz';

        $this->obfPrint('Gzipping backup file to ' . $dest . '... ', 1, 0);

        $mode = 'wb' . $level;
        if ($fpOut = gzopen($dest, $mode)) {
            if ($fpIn = fopen($source,'rb')) {
                while (!feof($fpIn)) {
                    gzwrite($fpOut, fread($fpIn, 1024 * 256));
                }
                fclose($fpIn);
            } else {
                return false;
            }
            gzclose($fpOut);
            if(!unlink($source)) {
                return false;
            }
        } else {
            return false;
        }
        
        $this->obfPrint('OK');
        return $dest;
    }

    /**
     * Prints message forcing output buffer flush
     *
     */
    public function obfPrint ($msg = '', $lineBreaksBefore = 0, $lineBreaksAfter = 1) {
        if (!$msg) {
            return false;
        }

        if ($msg != 'OK' and $msg != 'KO') {
            $msg = date("Y-m-d H:i:s") . ' - ' . $msg;
        }
        $output = '';

        if (php_sapi_name() != "cli") {
            $lineBreak = "<br />";
        } else {
            $lineBreak = "\n";
        }

        if ($lineBreaksBefore > 0) {
            for ($i = 1; $i <= $lineBreaksBefore; $i++) {
                $output .= $lineBreak;
            }                
        }

        $output .= $msg;

        if ($lineBreaksAfter > 0) {
            for ($i = 1; $i <= $lineBreaksAfter; $i++) {
                $output .= $lineBreak;
            }                
        }


        // Save output for later use
        $this->output .= str_replace('<br />', '\n', $output);

        return $output;


        if (php_sapi_name() != "cli") {
            if( ob_get_level() > 0 ) {
                ob_flush();
            }
        }

        $this->output .= " ";

        flush();
    }

    /**
     * Returns full execution output
     *
     */
    public function getOutput() {
        return $this->output;
    }
}inc/root.php000064400000014757147361034410007032 0ustar00<?php if (!defined('ABSPATH')) { exit; }
$this->custom_css();
global $wpdb;
$path = str_replace('\\', '/', ABSPATH);
if (isset($_POST['submit']) && wp_verify_nonce(sanitize_text_field($_POST['wp_filemanager_root_nonce_field']), 'wp_filemanager_root_action')) {
  $directory_separators = ['../', './','..\\', '.\\', '..'];
  $public_path = isset($_POST['public_path']) ? str_replace($directory_separators, '', htmlentities(trim($path.$_POST['public_path']))): $path;
  $save_array = 	array(
    'public_path' => $public_path,
    'fm_enable_trash' => isset($_POST['fm_enable_trash']) ? intval($_POST['fm_enable_trash']) : '',
    'fm_enable_media_upload' => isset($_POST['fm_enable_media_upload']) ? intval($_POST['fm_enable_media_upload']) : '',
    'fm_max_packet_allowed' => isset($_POST['fm_max_packet_allowed']) ? intval($_POST['fm_max_packet_allowed']) : '',
);
  if(isset($_POST['fm_max_packet_allowed'])){
    $fm_max_packet_allowed = intval($_POST['fm_max_packet_allowed']);
    $packet_value = intval($fm_max_packet_allowed * 1000000);
    if($packet_value <= 0 ){
        
        $prev_value = get_option('wp_file_manager_settings',true);
        $packet_value = isset($prev_value['fm_max_packet_allowed']) ? intval($prev_value['fm_max_packet_allowed']) : 0;
        $save_array['fm_max_packet_allowed'] = $packet_value;
        $packet_value = intval($packet_value * 1000000);
    } else {
        $save_array['fm_max_packet_allowed'] = isset($packet_value) ? intval($packet_value/1000000) : '';
        $set_packet_value = $wpdb->query($wpdb->prepare("SET GLOBAL max_allowed_packet = %d",$packet_value));
    }
    }
    $save = update_option('wp_file_manager_settings', $save_array);

    if ($save) {
      mk_file_folder_manager::mk_fm_redirect('admin.php?page=wp_file_manager_preferences&status=1');
    } else {
      mk_file_folder_manager::mk_fm_redirect('admin.php?page=wp_file_manager_preferences&status=2');
    }
}
$settings = get_option('wp_file_manager_settings'); 
$max_allowed_packet = 'max_allowed_packet';
$packet_obj = $wpdb->get_row( $wpdb->prepare( "SHOW SESSION VARIABLES WHERE (variable_name = %s)", $max_allowed_packet ) );
$default_packet_value = intval($packet_obj->Value);
$default_packet_value = intval($default_packet_value / 1000000);
?>
<div class="wrap fm_rootWrap">
<?php if (isset($_GET['status']) && intval($_GET['status']) == '1'):?>
<div class="updated settings-error notice is-dismissible" id="setting-error-settings_updated"> 
<p><strong><?php _e('Settings saved.', 'wp-file-manager'); ?></strong></p><button id="ad_dismiss" class="notice-dismiss" type="button"><span class="screen-reader-text"><?php _e('Dismiss this notice.', 'wp-file-manager'); ?></span></button></div>
<?php elseif (isset($_GET['status']) && intval($_GET['status']) == '2'):?>
<div class="error updated settings-error notice is-dismissible" id="setting-error-settings_updated"> 
<p><strong><?php _e('You have not made any changes to be saved.', 'wp-file-manager'); ?></strong></p><button id="ad_dismiss" class="notice-dismiss" type="button"><span class="screen-reader-text"><?php _e('Dismiss this notice.', 'wp-file-manager'); ?></span></button></div>
<?php endif; ?>
<h3 class="fm_headingTitle"><?php _e('Preferences', 'wp-file-manager'); ?></h3>
<?php $path = str_replace('\\', '/', ABSPATH); ?>
<div class="fm_whiteBg">
<form action="" method="post">
<?php wp_nonce_field('wp_filemanager_root_action', 'wp_filemanager_root_nonce_field'); ?>
<table class="form-table">
<tr>
<th><?php _e('Public Root Path', 'wp-file-manager'); ?></th>
<td>
<?php 
$path_length = strlen($path);
$access_folder = isset($settings['public_path']) && !empty($settings['public_path']) ? substr($settings['public_path'],$path_length) : '';
?>
<div class="input-addon"><strong><?php _e('Default', 'wp-file-manager'); ?>: </strong><?php echo $path; ?></div>
<input type="text" name="public_path" id="public_path" placeholder="<?php _e('Path of the folder to display e.g wp-content/uploads', 'wp-file-manager'); ?>" value="<?php echo $access_folder; ?>" class="regular-text fmInput"/>
<p style="color:#F00" class="description mb15"><?php _e('Please change this carefully, wrong path can lead file manager plugin to go down.', 'wp-file-manager'); ?></p>
</td>
</tr>
<tr>
<th><?php _e('Enable Trash?', 'wp-file-manager'); ?></th>
<td class="fm-tr-inline">
<input name="fm_enable_trash" type="checkbox" id="fm_enable_trash" value="1" class="regular-text" <?php echo (isset($settings['fm_enable_trash']) && !empty($settings['fm_enable_trash']) && $settings['fm_enable_trash'] == 1) ? 'checked="checked"' : ''; ?>>
<p class="description mb15"><?php _e('After enable trash, your files will go to trash folder.', 'wp-file-manager'); ?>
</p>
</td>
</tr>
<tr>
<th><?php _e('Enable Files Upload to Media Library?', 'wp-file-manager'); ?></th>
<td class="fm-tr-inline">
<input name="fm_enable_media_upload" type="checkbox" id="fm_enable_media_upload" value="1" class="regular-text" <?php echo (isset($settings['fm_enable_media_upload']) && !empty($settings['fm_enable_media_upload']) && $settings['fm_enable_media_upload'] == 1) ? 'checked="checked"' : ''; ?>>
<p class="description mb15"><?php _e('After enabling this all files will go to media library.', 'wp-file-manager'); ?>
</p>
</td>
</tr>
<tr>
<th><?php _e('Maximum allowed size at the time of database backup restore.', 'wp-file-manager'); ?></th>
<td>
  <div class="fm-packet-area">
    <input name="fm_max_packet_allowed" type="number" id="fm_max_packet_allowed" min="1" class="regular-text" value="<?php echo (isset($settings['fm_max_packet_allowed']) && !empty($settings['fm_max_packet_allowed'])) ? intval($settings['fm_max_packet_allowed']) : $default_packet_value; ?>"><span class="mb-value"><?php _e('MB', 'wp-file-manager'); ?> </span>
  </div>
  <p class="description mb15"><?php _e('Please increase field value if you are getting error message at the time of backup restore.', 'wp-file-manager'); ?>
  </p>
</td>
</tr>
</table>
<p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes', 'wp-file-manager'); ?>"></p>
</form>
</div>
</div>
<?php
$admin_page_url = admin_url('admin.php?page=wp_file_manager_preferences');
wp_register_script( 'fm-dismiss-notice-js', '', array("jquery"), '', true );
wp_enqueue_script( 'fm-dismiss-notice-js' );
wp_add_inline_script(
'fm-dismiss-notice-js',
	'setTimeout(function() {
  window.history.replaceState({}, document.title, "'.$admin_page_url.'");
  }, 1000);
  jQuery(document).on("click", "#ad_dismiss", function(){
    jQuery(this).closest(".notice").remove();
  });'
);
?>inc/shortcode_docs.php000064400000022001147361034410011026 0ustar00<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<?php
//$settings = get_option('wp_file_manager_pro_settings');	
$this->fm_custom_assets(); 
?>

<div class="wrap fmShorcodePage">
<div class="fmInnerWrap">
<h3 class="mainHeading">
<span class="headingIcon"><img src="<?php echo plugins_url( 'images/fm-shortcode-icon.png', __FILE__ );?>"></span>
<span class="headingText"><?php _e('File Manager - Shortcode','wp-file-manager'); ?></span>
</h3>

<div class="fm_codeParaTxt">
<div class="para"><div class="lftText"><strong><?php _e('USE:' , 'wp-file-manager'); ?></strong></div>  <div class="rtTxt"><code>[wp_file_manager_admin]</code> -> <?php _e('It will show file manager on front end. You can control all settings from file manager settings. It will work same as backend WP File Manager.','wp-file-manager'); ?></div></div>

<div class="para"><div class="lftText"><strong><?php _e('USE:', 'wp-file-manager'); ?></strong></div>  <div class="rtTxt"> <code>[wp_file_manager]</code> -> <?php _e('It will show file manager on front end. But only Administrator can access it and will control from file manager settings.', 'wp-file-manager'); ?></div></div>

<div class="para"><div class="lftText"><strong><?php _e('USE:', 'wp-file-manager'); ?></strong></div>  <div class="rtTxt"> <code>[wp_file_manager view="list" lang="en" theme="light" dateformat="d M, Y h:i A" allowed_roles="editor,author" access_folder="wp-content/plugins" write = "true" read = "false" hide_files = "kumar,abc.php" lock_extensions=".php,.css" allowed_operations="upload,download" ban_user_ids="2,3"]</code></div></div>

</div>

<label class="labelHeading"><?php _e('Parameters:', 'wp-file-manager'); ?></label> 

<ul class="shortcodeDocList">
<li><div class="lftTxt"><span class="num">1</span></div>  <div class="rtTxt"><span class="strongText">allowed_roles = "*"</span> <span class="lineText">-> <?php _e('It will allow all roles to access file manager on front end or You can simple use for particular user roles as like allowed_roles="editor,author" (seprated by comma(,))' ,'wp-file-manager'); ?></span></div> </li>

<li><div class="lftTxt"><span class="num">2</span></div>  <div class="rtTxt"> <span class="strongText">access_folder="test"</span> <span class="lineText">-> <?php _e('Here "test" is the name of folder which is located on root directory, or you can give path for sub folders as like "wp-content/plugins". If leave blank or empty it will access all folders on root directory. Default: Root directory', 'wp-file-manager'); ?></span></div> </li>

<li><div class="lftTxt"><span class="num">3</span></div>  <div class="rtTxt"> <span class="strongText">write = "true"</span> <span class="lineText">-> <?php _e('for access to write files permissions, note: true/false, default: false', 'wp-file-manager'); ?></span></div> </li>

<li><div class="lftTxt"><span class="num">4</span></div>  <div class="rtTxt"> <span class="strongText">read = "true"</span> <span class="lineText">-> <?php _e('for access to read files permission, note: true/false, default: true', 'wp-file-manager'); ?></span></div> </li>

<li><div class="lftTxt"><span class="num">5</span></div>  <div class="rtTxt"> <span class="strongText">hide_files = "wp-content/plugins,wp-config.php"</span> <span class="lineText">-> <?php _e('it will hide mentioned here. Note: seprated by comma(,). Default: Null', 'wp-file-manager'); ?></span></div> </li>

<li><div class="lftTxt"><span class="num">6</span></div>  <div class="rtTxt"> <span class="strongText">lock_extensions=".php,.css"</span> <span class="lineText">-> <?php _e('It will lock mentioned in commas. you can lock more as like ".php,.css,.js" etc. Default: Null', 'wp-file-manager'); ?></span></div> </li>

<li><div class="lftTxt"><span class="num">7</span></div>  <div class="rtTxt"> <span class="strongText">allowed_operations="*"</span> <span class="lineText">-> <?php _e('* for all operations and to allow some operation you can mention operation name as like, allowed_operations="upload,download". Note: seprated by comma(,). Default: *', 'wp-file-manager'); ?></span> </div></li>

</ul>

<div class="subHeading"><span class="num">7.1</span><?php _e('File Operations List:', 'wp-file-manager'); ?> </div>

<div class="twoColListWrap">
<ul class="numList numListCol">
<li><span class="num">1.</span> <span class="strongText"><?php _e('mkdir ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Make directory or folder', 'wp-file-manager'); ?></span> </li>
<li><span class="num">2.</span> <span class="strongText"><?php _e('mkfile ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Make file', 'wp-file-manager'); ?></span> </li>
<li><span class="num">3.</span> <span class="strongText"><?php _e('rename ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Rename a file or folder', 'wp-file-manager'); ?></span> </li>
<li><span class="num">4.</span> <span class="strongText"><?php _e('duplicate ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Duplicate or clone a folder or file', 'wp-file-manager'); ?></span> </li>
<li><span class="num">5.</span> <span class="strongText"><?php _e('paste ->', 'wp-file-manager'); ?></span> <span class="lineText"> <?php _e('Paste a file or folder', 'wp-file-manager'); ?></span> </li>
<li><span class="num">6.</span> <span class="strongText"><?php _e('ban ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Ban', 'wp-file-manager'); ?> </span> </li>
<li><span class="num">7.</span> <span class="strongText"><?php _e('archive ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('To make a archive or zip' ,'wp-file-manager'); ?></span> </li>
<li><span class="num">8.</span> <span class="strongText"><?php _e('extract ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Extract archive or zipped file' , 'wp-file-manager'); ?></span> </li>
<li><span class="num">9.</span> <span class="strongText"><?php _e('copy ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Copy files or folders', 'wp-file-manager'); ?></span> </li>
</ul>

<ul class="numList numListCol">
<li><span class="num">10.</span> <span class="strongText"><?php _e('cut ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Simple cut a file or folder', 'wp-file-manager'); ?></span> </li>
<li><span class="num">11.</span> <span class="strongText"><?php _e('edit ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Edit a file', 'wp-file-manager'); ?></span> </li>
<li><span class="num">12.</span> <span class="strongText"><?php _e('rm ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Remove or delete files and folders', 'wp-file-manager'); ?></span> </li>
<li><span class="num">13.</span> <span class="strongText"><?php _e('download ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Download files', 'wp-file-manager'); ?></span> </li>
<li><span class="num">14.</span> <span class="strongText"><?php _e('upload ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Upload files', 'wp-file-manager'); ?></span> </li>
<li><span class="num">15.</span> <span class="strongText"><?php _e('search -> ', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Search things', 'wp-file-manager'); ?></span> </li>
<li><span class="num">16.</span> <span class="strongText"><?php _e('info ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Info of file', 'wp-file-manager'); ?></span> </li>
<li><span class="num">17.</span> <span class="strongText"><?php _e('help ->', 'wp-file-manager'); ?></span> <span class="lineText"><?php _e('Help', 'wp-file-manager'); ?></span> </li>
</ul>

</div>

<ul class="shortcodeDocList">
<li><div class="lftTxt"><span class="num">8</span></div>  <div class="rtTxt"> <span class="strongText">ban_user_ids="2,3"</span> <span class="lineText"><?php _e('->  It will ban particular users by just putting their ids seprated by commas(,). If user is Ban then they will not able to access wp file manager on front end.', 'wp-file-manager'); ?></span></div> </li>
<li><div class="lftTxt"><span class="num">9</span></div>  <div class="rtTxt"> <span class="strongText">view="list"</span> <span class="lineText"><?php _e('-> Filemanager UI View. Default: grid', 'wp-file-manager'); ?></span> </div></li>
<li><div class="lftTxt"><span class="num">10</span></div>  <div class="rtTxt"> <span class="strongText">dateformat="d M, Y h:i A"</span> <span class="lineText"><?php _e('-> File Modified or Create date format. Default: d M, Y h:i A', 'wp-file-manager'); ?> </span> </div></li>
<li><div class="lftTxt"><span class="num">11</span></div>  <div class="rtTxt"> <span class="strongText">lang="en"</span> <span class="lineText"><?php _e('-> File manager Language. Default: English(en)', 'wp-file-manager'); ?> </span> </div></li>
<li><div class="lftTxt"><span class="num">12</span></div>  <div class="rtTxt"> <span class="strongText">theme="light"</span> <span class="lineText"><?php _e('-> File Manager Theme. Default: Light', 'wp-file-manager'); ?> </span> </div></li>
</ul>

</div>
</div>inc/images/app-store.png000064400000030743147361034410011214 0ustar00�PNG


IHDR,Y���tEXtSoftwareAdobe ImageReadyq�e<iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:0B0C53C09EE211E89206AC6B33093C06" xmpMM:InstanceID="xmp.iid:0B0C53BF9EE211E89206AC6B33093C06" xmp:CreatorTool="Adobe Photoshop CC 2014 Windows"> <xmpMM:DerivedFrom stRef:instanceID="EC877978DBA9BAD7D590A2CEE5CB6D88" stRef:documentID="EC877978DBA9BAD7D590A2CEE5CB6D88"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��.eIDATx��	�UU��{3����,J�""H�I ڢfe䂖���h��PXZ.%���j"ZY������fT�X*Zj�
*0��|��睹���f�̻3ܿ��c�r�9��;���(�L�^���x����?�n_�>n@S��
��S��P���Qp���z�z@�to����-�����_hik}.��h2�BG�s���Ũ�o��(n�D�@2�y�QI-����{-m�Z�~�6���5�`֕��`:��ºu�̐!�޴�.c��ݶ�ر�GB��!R��.Yzd{��w��^���U&���A'�	�\�m]t�h��N�W��J�2ݸ�P��i�zTc���6I�k@k�i��i]Ա�i�D�ЖZ�_oP!E�w���۔ٶ%,���`e�,C4h�`����lG��G��z�qc/9r䣉�e������\�b�g���6��]w�?���G1/��R�;�B�z�r(\0B+~'�"��ȍ��Lһj�{��֫�m�W�fC6s�,�C�)��s��d�M�;�`��8ь�u�Y�f���F�3a„�6Hx%�Z�fM�M7�x��O?��#-ϻ�,]�4�͜b��rY[m������;#��ҝ�!'3��n�C�k�|f˭�:~�ɓ�,���A��7�g�\��{�w���8��z���+iN��W��4ȴ����JN9uK�݀5�=��6l�9��?~��;��}��fٲec�x�/�c�s攁�ϲ唓O+V�p`�ʗSN�7�l3���'��o45�o���-��׮]k��G���my�.5�����2�T+!`h��%���!�nj�<�����
�޳dɒ��z�m_z��w/}�s�=��=�SM��/�_|1�r���d����[n���r�ʽ��?���MŦ�w�s��e�eN�pY
�SOPK����g�=h^Z��[�˖-��Bٖ�=�X�;9uY4\�reX9��b1|���-ߴYѲ]C�"�DwC�G9uaP���X�h�ir��X`1���^�8knXs����J
s}VN�\>��k �~:��8�aN=�m�o	*�SwECY
��h���}�6Zޝ�9Տ�*Y
�ȁ�\aX�*h�-�0ox��ȑ#3Z!��E@�h��
mX
9���z*��+� ���~���\Đ>^ԟ��MNYݏt�
`�ʔ)f޼y�������;����3S7WKK�8p�ikk+
��\��P�_�j�9��#͜9s��~��4v�ۺQO-��/|��9n}y���w�k�A��P��V�.��b�:�,3u�Բ�Y�p{�z��_m6�|s����g�!>������_︀��0�J]��f���شi�̞{�in��&s��;pn$�o{�k^c>�я����G?r�!w�E�?#�.[��#�8Œ?�l���'?��[s��C`��|�\p�f뭷�tNi�Dk`u�Q����B}ƌc&N�h�>�h�d���}��W��}��A4a#���P����A��J��U3��N�菣\$�C��y�e�łu�����[#�X@�����̨Q��N;��ĕ�N:����5�G�6W]u�y�{ߛX�4��4��<���@�K�G�g3z0�$��^q�x��!�����2�����|�> r?�բ7S蕓O>��v�m�S���3rT�qm�t/D_��h[X��]���0��7'`����=S�~������v����/�_��y������N��yq�!R:�2$�Y�9B��ףŝ��(܊��=��{�Q鼔��&ճ�>�&ʦ�n����'�ʦ��><���N�E�܏�
NEV����~�
��x˻�
>`�>��p֔��!�ܩ����$�f!��3|�����ͽ�
�ߒsܟ�*�g�bP~�߬�'���~�L��f���T?��ϻv���C�C_q��|Ё݅^hv�a�2��{����_�ڼ�U�*��_���r�-f�ر��D��~`~���;e��Ϟ=��w�su����w���E����>��&*�VҢ���(�1��x㍮���7��wR�(!��0a��9ƛ�.\��\w�u���~��BB��J�g�ӟ����a��4il;�į|�+ͷ��-�?��p����������u:���;ρ���">D�*�C�g�w4��z�y��^���-��\s��n�����@G�����u�]�YƑ�'?H'@�X���K]_ҧ|s��|&�W^qť?��U��FFtd+�/�r��G��駟�F���v�~���^S�N�T'���qd�,wϜ9sJ��k'id��f9���������wd���Ê��|�ڴi�J��ַ��f֬Y���k�ĉK�x���.������{������"@���W_Y0�v�m�#FD�[������{"��������j4l�0�����/��t�
7���_�rS�E�v�c���W��o��C�[@)�ۘ1c����ڽ#�,�:eʔȊ��9;ѣ�o����8������>ГO>=���O<�D�>��^���G<�;��K{,���k��=�w�o�I�#�e˖�_���	�q����J�S��I�\� �ѵ�^Yt_v�e��UR���A�鿣�:*��*�g��c��xC;���R��(���߾�VX��~��ND`��߹n�h�$v+/���}�*C(�E��O����87���v+�&���a�wv7F%�!�T�P��H��>����>��O�z���ov�;��?���e�K.q�m���*G�u�z/\�ʂ��}��݁5-�'H���.��;�e���ow�]�x��QCH��b.�
�">}�1�{i�~���b1��� ��q���p�N��?��\���� �e����������d����%�]�z��>��\^#�K�	��o?7Q���m9�>�>�*����X3f�0v�v�a��/���Mor�Z���C{�GIE��Y�{)�k���/��PA��
�/:7��_����L&�O��v��
�	��oہ/_"MN@
�
��r*�v ��B� �%�!�?�p�gX�D���!RZ�.u�~��[�q�)��G}�t�ϩ����PJ�M��AD��O�S3�|w��v%Y*]B?�N� ��x?��8���,]P?DR�x�q(�dqx�~�����s@oy�[J"g��ߺ5�$�V�~}��P
�b�A���\J6
n]�"	�+�����cUE!�J�5��h��Q>���#�瞘@pBp�L�)��7�1XL)��7����}��óp��{��:9�D�v�-�:����%)�!�����$	ڏ~���~�Ec
�	�	��S���<4-�%}��9�,�V$t��:�����]�x�$�Wm�^V�.-�܋�Z\= �Hkz�,��Y���?��9�܊�W�JW�����AѦ����o��y��������>,VT�@��J��AL2��8�?Qe��sL�%p��x�1�s�9N��׿��q6�vXG���6�6�u �=FI8|�5���N[�sz?u�7P�� K���srZXK|o"m��Y ����9�/9,������1��$NJN����E:�����$F� �̀��G���ޠ�1�K,t��`�/����R&@&�բbb��CCT��  �I�Ǥ�^t,�����3���y�{J�%���=@�E�ZEy���[�����r@�Qמ
�?i<�~C�/=#Q���(�T�v�`4�2���;:��`�_�����P�
�����H��Q]�t3g�,0;#�������W�PV�F�Ĭ�B� tW(�uDJ|��E�tK��q�I����n��एc�Xů& @��M�1δ�B�-��h��C����Bl�,�i�"�~DDE�ޏ1���{��M��~k�JH�/Jb/}�;�夲i���}�.��>��Ø�B�LsX���Z�ܠ�D�Fg��������p���\:�а���|l�#���(΋�QډbБ���]"�@�޹s�:�%�"<�
�b��=>�Nރu��}������k�u���|��ɠ�8N�o}�;�q�I��=�\g����/9���Wk�}���	�s͚5�l�H�AG����}LB�2�3ImA��ۤ�������c,"B��A}����W+�@��P ��e�
�'�J�q�6a5f.1��V1���9���/�ˆ/��Y*}
�	+�l-]��MZ�*:9$�\�J��ȄHZ�>�`����@
ў�H����~�;|brag�0+7�\���J�80�2JDq���~�S;+5a�qɺ��q�Za���b��Hn���\�;�X�?���01�����a(p����,T�p��%?cn��é�0!1H���V�u�K!H��K!�X�l��9�LY���<��������~�'i�-�`�2�?�9E?Ϊ�`�8����h������k��J��>��?�D_���4�C��
���;��X�,�(�#1���?t&dt%b���aVY`X���(gY�хT��@���D`b�4hQ6Je� VK�;X3������O\Zx��b�y�v������ټ�oD#@ok�DA��s@�Cт����`�|~��3.\�n2�Kd�s��„ebq/m���"�����H�}�M�,&�"^�pd�	��ȿ�p�-B�%��y8�3�8�q���Ŏg�VIO��7H����]E��F����r�"<�I��/#\}B}+�5��`Gs��	o{v.Pm���ĝA�^���-�(��1��
WȁozM��X�mK>lX\w7nEO����>��24����	�.#+�/�;=��҈������I�&)Ы)��{��ծi�L��);�t[r]��2��Ϣ����������[�dx�^���R)�=Si"i�`��	���0Ż���5��F�?�X�N�Ii�(@�;"q�~�n.T���S�ġ�
�rzx��4�z�̈�+����}�t�pkqN=�>��
iʐ9?M�	c\��$�*�΃I„��A�q�}�I,�EJ�8��T�p@zF����%��<_4�L��z�`J�K��r�ܽ����
��F����hT���,�̌���g�5��A�yo�*��05R���:�-�>Mi����I�����T��ֈ�t��WzwWB��E +�n3XtJ�,��!�����l�i~���R�]�F
	.ei	��
���0H99���A,�K��(�߳-e�}��a}���9&Qo�F�U���bEq�wZ��7��r9�k�7vj(`1P�a�F�,;����*8�Tq�!�FT��
D7��
SY���\�ʜr��Jl���F�_�9[6��/�w�}��$8<�����8-��ZEC���Zp�߉��K�H��ї�W�+�DP�O��r��!1��%«\^��#8�høR\ΓY��UO.�v+�yZ�M>D���g>��%f��G�V'B԰�D���/��PC�&#[e�F8$��"� @��oe�=^��|�0�?:*�;t|�k_�V!�xtW��=�����9`5��T���Y�,e�a�q��-�q��m�񰚨��W�d]H��Sؖ�����8϶��d�ʴ��r�DT�k��s���v?JdV�0&�Nk$�c?�	����ز��m�<�
+�b(��7J����N�
�B*��踈�@Lu�5r-.��r���r���#l���9�"`5r��Tm���$R�Fq�I� "|���"�\j6���h��<�k�{���y�n�7�*\%t���b�5�8��=|paQDR0����M疛E2L��~(B������ZW�3��*ҕm#Ւ��R���?�S�*�Ɗ��;IF��Y�VŀE.�k��60ǽ[w������n��|q�Q6�4Ibj�4��Yt�i�a�35���@Q�*&x&"aC�>�:u�3�`i�1���%�4��C���ԝ�
o��lxg]�:�3S}�6��>Es��L8?ޕ"-$ gF;��L��n�)��Z)�C���"X���bp�q}�o<�[Ї|�	ĻP�QX��Y��n4e��F4T��ÈH@=��݅/��{U�o6p���@eb������!�!��A�3��j�l;I�f(���L���	�HHfʗ��)B��8�!p	���L�0b�<�}�J ������wh"�$!���Z�[��8D��;�7��T��>���Į¯��v��J%���<��O"���\:�}�����q���c[9�W#�	@�2�1�p���J��k��e~�]�ӮbQ��r1.S�iPFh�{�'�Չ��d$��Nu>�C����dþ�[�y2:/Z��b��Qy�ܹ.�rܻ8w�g�=3��ҷ^�pa���fL6g2�����ٔ��L�Ç���\V��\�g�U��4��)���˗/�i�p�����W��{t��ק*����fΜYN˵կ7��<Y�}"[3�w�m��r������ۂo��l�ь3ܸ�FK�,q��iK�~엙�Aq��`
����:�T|"Z��>�84(�M�P��DpZ(�э)�s%]jXqz7$"q���v8����6���<'\2����?L��K�\��`���b�#riZEy�E&-���K!b.mG���|DL{�s�A�:(E�	
.���y�������S�5.1��i��M��F��k(`1��s.K�$��Qb+"����_�	G[B�?���U"��[�`�7��� 	!�~D:e���`G��׍�?*?Ndc��),���(��2�h��D�-���z�<�FLD�pX$�tX�ס�|�`�i{�_#�:�X1�G�$BB4�*�����?�D͐~?� �7"#�O�����%?��aIE�D�mh��F��b�ӲʽM��Dv�5�O,SV;Ȝ�5;���1�өΈ
��˵�ӧ'�ق`��~�Emmm�ޖ��h��n������_R�Dw�yg����G����^4є)S��n�-�~��'�g�m�)
qN=���w[N>��ad'd��[8��/Iı��ֲ�,7����h�1jԨ21��Y �T��/�<�~��]}��ڂybݏ8����XK��W�^]6V�BT���r�N��={v4f�W'D+�������{s�jt�a���͛7�ս�D�̈�Z��Y"Ƭ(I�OO��a�<Rl����A�-K��n5�0�k�w ���@+(+7A7Q�$G͸|x!����h�B^�
��ǥ#�~�++˵�V18-����Cu�ɱ'A�%y��)�Љ���!N�����r<��ԊF�b�d
c��,w>���0V��F"�%88D?��;h�|�HE�?p�X)Q���'!�=|:�C���o��a���*)e�����3	�^{�Uv�Q�xn��'�^I��JĀ�9R{�d��u�	_(��,!jU9!�GX��*L��Ä'�l(�`UCd�d��0���:��\�02�$^�8�r�?-&8���������>D��g2�	N�?�	��g<O=[��OXS ��*�<����`�u����b�;�3��ʌ%���g�4[���œ� ��=�2��4p��Q���~eU���]�L�ʏ^I�1.�
{����r�O��C�T}UҢE�l�"I�O�A$?�.hA�]�W\�iIrZ��Ύ���<��"5�,t�O��Ga?�%�cC��n�*�� p�p���c�s��1�۟4r�	���BӾZ���jT���[J��U�7A�H�OO����EŔ�=$ī�ֽR��j�8�!�P\�C�����!�N�j�!W�����xADې�A�coawX+!F��4���
+�[hX<|�Wh��9-�8@�p7 ��&b��TP-p 6���ֳ7���� p
���L����8A"�00��Y�a�����,pa�=D-!P�K�����+�z5�Z��T?|8�
B��klG�C�$w@辁�]����Gyw��1}Pm�4����O�h�lq}
X�a�FՉv��Y��Z�����m.+[sP�2i|Q(��
�G�H��(>C��x[��VfB�)�kUć�'9���4S��A<�Y�J��gB+G�/>Su�<�<�"��3�3"MR���\r�<���O���)i�X�T)פr&��r>v[,��$6:��/g��@l���4�`��A*�ޢk\��4bTھJ��/���PZ)C��$�Ub����0a�Ӊu7'dܹJ�}R�4�%NZIj�%eyF������9�Q:��sX�h���� �V���z.8�����Ui3�����,Riu2iuL�P4
=��(-G�o˯49����V��Q�{���<yr�=x}w�{�X=�9�� V�B»Ⴔ��_�73����y�c�u$N�Ui���Mw�̉�[+�zq=A]tQ���E��~x{#�$�>m�~�i(���H�]���m�<��>Pi"��S	��i��o��q����v��4Y�r �WC�o~���*�Jׇ����"I�*v~ZJ��k�P��Z��<�!��p��&
���
�$�M�G��,t7�?k~D�J�P��ñ���:U��p�$�;EZb�{%�n#N��ȓ$ҥ�H�4l+}0$=+߲�J�\ݝy!��#���N�gڣ�RP���B�,^�=�J�:‡��_ww@l�
�}�R\���j�`W�G��.�Z>a�e9K������D�\��qܒb[q���P�UDS�x���L�:\��	+3����߈��ƍ+mb�3b�8�U�@bP\>�j:����`�C0;W��������D�
��L�P$^	@\B�	��0��
)t8�A$�� ��c�
�N$�ĕ�v���-*�SNqI((�1�g� u��19��A��:��#xV�Q��R׈~
��=R��}Pg|�BP�={�;�4}�цq?�,F�X�;�+!���E�������ͬY�\��7���P�l�������`�Z���j$��������"�#$��%�+\CB=C-b!N��á�f��V&�u	S�����Dp�ビb�P>�-��p��0H[>@�>A;�|�0�D'�pA8H��#�{ȭ`�E�僦D)R���� Ƴ�
}!߁2�
=��'B����GLy�@���w#�*1h�f!�W]u�{?\ �x
���6�n�O@od�"�f.�������]n�[��	=�_}�.&k�gv\])���X|���x+�u�Yn��	p��,L$8�8�MV_6��&M՟�p��D�6��?�\�i�;Jq��ccg���C�9D�^�ö�p#7���G>�w��\s��!{NgΜ�IF��o�#&�
�ڜuj���+�����y,�pl��RVs_-����B��g�/�[q�XW�]5�+�L�P���Ȋ��S��?v�زsL�WJK��	�����y8�l�U E&5":�8��� �2~sq~Y!����]�g�4�ǁ��N��~w�kI\��1gU6�
�/>$��<iaB�n~�(p�yO$��Øo��{�a>�`W����c������B��C����ԯQs�~��#���ހ�a��"���4w���8X�{D���x��WQ��;�Wͧ
�"�ܹsӳ���.@ �`��DX�Mq��PJ�# dZB�CtS<��$�@�{+B��g��A�,��
�"���J�,�OVZ_*���:�N�Z��	��QIZ
N$,2�G� �3	��*X�i����6mZj��;z2,7pFJ��y���W<w���;�T;�X$4�FL,����Gg�gee0@�x�mR�$�%��@�W0�[�|�Nԙ�q��W�w<�W�~���=1ᕄ��H�/Z�Ƚ�����Hآ�x��������-_}@���+�4`�;繟�c��'�H��5C>d'�tRY��0�3���)�!}�N�oGN��*�s�",u��p��P�3"
D��|����"Ky��)����ͫ�א0��8L�l� eP �Pd��ꅄ���7���Sﲸ��B�[�PP��E)&J
XqI���o&�O�\\\�L
�%��}Wʗϐ����1��M;�z���R���� ��V9��Ŕ?���X`(����e}�ki�Dv@�z�.��Z��mǫ�}��W��=�L�%T���D�5��;��*A:rV����%0!��a�?�p����ZL*�Ԭ*��|OW���ii��z�rv�=�ʯW�y�|��[�+�awpF�Fc&�8�$�N�ę�ye�<qf�rG((��.X���T/��
\(�A62H�>�HU�`�a_Q
ҡb��}�R�!�z���H��`N�Xa�ͤ7#�fy���ǽ.�dv�k\��8�=�c�+:W?0`������ܗ&�����G��"��e+��J�SO��G�	J�Ŧ�PT(���Qi�Jo��S�;��׈X�9Շ�/��FZ��]�t�VN
�8�zZ~���Z����TsʚD�m͉L����R<&��Z���/}Q��{��z�:�]�(����#U���� �"��9�_O=�
��_8��q<+� �w|���-��<Vs�Pt�*Q��6�/��?)n�d�YoDC9��V�ǭq1���+\&��u�9es���u�/Y_%�V�l�m`��a��ȞX5l��r4�)���
�v=��N#��@t���G���}ݺG_3~|V9m�+8\����?{\0[�F�Z��šÆ=���rӮc�u�*�SN��ͤ@��;g�۰7��o��l6d�ꭶ���bkkk4z̘�V�]����M5�`�)��41��gXΩ7Y�
�*�NT>l�9��KkV�>z����q�w���o~�N�v2�\n5�i�$e�Ε�X5���%)��y���j>9c�iim}v��`�-�XY0=��s������l;��fğ�K6�SN����"�L#-l�L�
־�<�qf��aϴ
t�^{�]��礖/_>���o���cV�za����O=��Y�fM.��QJ^�:�a��.�#0i�$3y�$�����V�;c�){^j��}�B(��]��`A��{�ö����+-��r���t��᪙㋂_jP��o���\~TzOoq�=׶����{�Ma6��h�]�?����;m<�f�a'2�6��hC��;��f�����ֶ�[�˸�g����&OD/$骬<?d�ҥ�V�X��/��j\��\��!B�巖~�
W:�ڊ��A�:�F��U��#�Q��s��T�m}�M�߫�m�Xu��8���e@K��$-M�Nc�~�VMevD�zV#�ϝ��3���
�����mG��i�СKo�I'���Hh�Y����IEND�B`�inc/images/google.png000064400000035163147361034410010557 0ustar00�PNG


IHDR,Y���tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)" xmpMM:InstanceID="xmp.iid:12BF43DB9EE211E8A6588FBAD708F361" xmpMM:DocumentID="xmp.did:12BF43DC9EE211E8A6588FBAD708F361"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:12BF43D99EE211E8A6588FBAD708F361" stRef:documentID="xmp.did:12BF43DA9EE211E8A6588FBAD708F361"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>5脴6�IDATx���\U���{Svv7R�RA�C��DE@ ��RT�"�m( ���	"��P�C��$�P� �$���2��~�{wr�efvv����N>���޼r��ι�s���ŋ�_�|�����fMî��,|���D�S|o]ge��c�G*�lH��k�Oz�v��|/|Ϙyݖ�~���t�N���H��m�M�u�mWm��tn�oz�W��}?n���ڗ��>k���s7�d��+Ա����6s�q}���d2���Lm�����ZG૿�p�w�	���m����I��]�w:�����A�
/��k��ޏ��_��豷��*��܂��4�H,�|oi6�M�j����Î;<^WW�,��d֬Y�N���eՙ�K��;3f̐ٳ�([�����0��S�%�J	#�f�f�*�A�ݶ�.lOr�9�.�2zҹ1�p����>&�d2����;��k�_>|�z�X=��ӧ��hѕ�tj�]w�%�<���Z�*�gUUUҿ��r�ňm��A���y:���[�q�/r��Y��aZ�9r��V�5�ՙ�2u�[rٺ+������[�8��a%�I=��q��6F��
)f%
k���._���e�ڵ��o���1dȐE:f���~�������K4X���b+f�Բe�,V�Ul�m�*����c�=&�n'�jk?3}ڴs�-ل�Wg�<���f��w�!s��W��1X���h��بC���b��6h� Z��K/�$�l������/]:p�G��.�_*�>�h<b��.[�r�4+
p�u��S)�����z���ǻ.�^5��/��2�b���],�Њ+�ΰL&#
�d޼yNSs�1�y�WMm�ܹs�[�@��n��ձk�F7Wɶde�;%ḃ]��Q�*a�~<P���Z�b�d�٘iŶ�KK��3�㈛�ek�����T��]ўj��˗/�+��=�ۗ"S��Dl�5\�f
)��m����pU�K9��4��k������i��Yb��/�~��}.��3
B݉g���z`i��u��ϳ.�Hœ=�b�0����*9:
-=�TAֿ�Co�"Nb^=��Y��:Ò�,��Uf��2d��ҤF�w��ɲ��cD'��k3�֭
�"�5x��`���ȱ�l��4��쳧�v�~]d`?�[<���i�]2�;�_�@�cʆ�^��v�b̤��ߞl�B�c���2�auu�����24f_�[�S��o�ϵu�b&�7̭dM&
cΕ
��A׮��fe��Ș�n���P@�s�?�Z���z4P�NYWW���=�l�545�`\�������R��M�{�6��g��7iA��b���U�a���$�f���QdmZ��\���I��e�?~'C��$���&y��a�f�����`��c�j�m���}�kr�GȐ!CtG�7o��?^n��|~�����.�"�M��2�뮻N���m��~� A��������/��3v�X]��+��GyD���Z�u�]�{�DSSS~_�w틿aSK�.�t:-G}��v�iz_�����{�9��
��S���|��ߗE�ɏ�c�/��8��n�M�C�����
�L���_)���]�か �j�)WN�Y��!
�r͍�khg�/u��!{������2��e��B�ZW��u\���a�&�ƍ�aÆ��H�\ƌ#|�|�ߐ��>[HL7��БG����w`��o�/l뭷�#Fh�8P�����"�l�ȑ�x�wܡ�o�喲�;h� u��7ץe>��C
\`Q�\���j
VؤI�tɐm��V�:�(�x衇�7p�������*�����oz�RSS�?_�b���T(���&�*�I:
9]y�%�&8�eخ-�5�HR�P󊕪S��噟��?��,�v�<�׻�_٘_��M��8��0a�v-X�k���;�q�Yg�O�S9�5`3��_��9��s[1&�h��э[0R�o��|�;�Ƀ��+E
0�.�BWžw�ey�W���/���?_���������z�����Γ7�|S��F�%^x�f_�%>g��.���\|�AͶe;�x��7�Š�`E	T����	��Ry����T)s�r=Ix9i���DuJv��t���O�=L$(!��z�d���_������48M�2Ew<:��ٳ����{�5�\STp���@cb=�	r�q1�y�����}��w
��.����oh�7`�͌fΜ�_Dž=蠃�G?���Y�o2��_|���3�}�*X��N��T��T���*�T�vd�eѬZ�V��P�����鲪s,^.u#��n������eĘс�Tk�\���,;�c4Sy����E��l�ԩ�
k��{�0q�|��Il�ėʍ���W��p�h0:��s��v\J{����G�x�V[m�gy���w����{�z?q�*�.dV��{�r}��%�9q9I%i込5�N�y�.l��%4%��s

Ҳ|�l~�({���kϑ�o��b��}cX�����7�ܪ�e�kf�馛�v�m�cK<v�qG�~����c"���s���fg�:\�>�@�x�	k=zt+��p�	�òXb����%+��0�r���=X�������������N���ojԁvf	]X���+�9���v��E�]��<r㽒]֤��]afM4��o~�`Ϳ�S�:�É'�?�a����0�J�OF4�ꫯ�_ÅD��Kh��\ �
�W�՜~��_j6Ƭal1`u1\�/X=8��Z�N���u\k��M��8j�R�Z%�su��`{�G=�,��LJ��x��)���+���~R�fY���:+��7��(� ��o}KϒE�Y2��i{��'�t�0�et�f���Q,���^"̜w!��{�ӟt��{���kq���1��$	�%�-��ru�._��l]���U)�zk�f
Ys�=,Q���
�N}.�2"�����
2pD���髲����	��[�|�-�w��󮩈���cYg�a�"sZ�d���Zn`�@b]�p\�X��W��Sw��=���q^�E�((nr�w�iU��6�¬~�a���/��w˞8���İ���Z�)�`���a(�*�k�si�n3U��1cKy�zͲ�4(�"�y��j��fi�_!������o��l�㦺̪�</TN炕������V��5m�4�A�0y�dݩ1f�l3�B���b����q)볟�l��`\C�@��a�����e3-�&@���Oky:1�_�r�c��ZB�ጓP<�	���lq��&����|u+yc�`���RnaV7���5t��bHY�O��7�Z#MM
��韐?L����˓�v�*]b}O��fe���;O>Y~��-tv�m7����q ���@}w��7L��K/�,��!���8q
aSh���?���hi;G���
m�e�����*X~>�8%�b��r�F�U"�gl�cZ���@�f���{�#�{��Qx5.[���ȗ.:\����r����=-^S�N@���[�w:ˢ��Π������o�[X�=��_�����	i��R�}B�dLJ�上fF�ұ,�FĹ"�%͇�����/y�t��E]��h��r��w��G*A�ϯ~�+-H�c�������32�	�眨��j}�4ZW��+�Qn�'{�z_Q��p�Qt�+��-p(� ֯\�B6۶Z~v�X9�����[^|r��j	�+X��x�b�X_�җ�SN�yu#�/$����`��[o���#���.�_|�S3j�b�8Q3).��>�`��_�e+��o��;��g?��@\<������
7ܠgH��
۠�!4ԏ;��ŀ���g�U kH�(�H+���9�c�D�)�S_*)���w^$��5
�ei*1-�馔�HP>�H$:�\cVִ4���\n���7��Ko���/S����@&��/Y�ِ��N;��	�
��D�,��]��L�1Ra��Ru;i<SQ�G
f��X[{bf�*V��?-�쳏&f4��D�Z�<A3+�o c`��Ͼvh�x6I�N���7̹c��q�D�K/�L����4�A��'#~y��ijR�(�/�W�@!JN���qs�/��:_���[`Z	ͼܧ���:-�wE��>��qp�F֮l�ۯ�$��~Y���"Ӑe^������]�2,���1����(�ۊ�8$;۱<ģTm�����>���=>���B�R��{����c�U6�V@�IG�\��%�?'T���j1���e2��4k�L}}�d�V-�wt`r5���-׀��A�U�{e�*I׵ȹ?#�?w����1��	�j����:��ݐR��~���w���o/(�:f���i��^�r�m��fT��U�1��J�J5ڄ�YAG�:A�*�:�m"�;�\�t�+Ͽ1R&)�*]#Un��]%�lc6L��*��>�wa_��es�L��÷K��n8Y�繲sm?�#<i��㬋���[U��x�ǎ���`M�\m�aV1`uX%�q�q&�M*�	���6�P)�nKjNB��(��!���o������Q�Z�nSXj��D��r�|�5R
�4k�F���,^!��l���9C~|�޲e�ѹ�A~b�N�z][զ;J:���`����1,\��:��Ű���&�ߺIO�o�	��=�]@��ƕI�G�S3�J��F�V��$�'��g"E�v
a^N0��g�-Q����3ד����?%��L9u�������;��%C�6��V��=�ܺ����[es	�84�6�"~�i�%�H�t&"��h4��g��V��q�/n�VR�7`TH�Pv�A�DBj���޿DjV��1@�:���({l3Pn��I2�rՃ��3�-
@"��uVٝ�c���v���;k����*Q�#$�&��-Āk�l�P�\�`�್\M��y�LAC��/�Lz���	�O�e*V���\8���
�t��
���F�`$%�&u�G�z��Eٞ���bX���⴨F�Γӳ��`Z�)z�*�J��#�Y�^���طV�*�jQ����w!���L���W�G&ʬU
Z-�˹��B�@	 �x�:�d����ϋ}����_��_��vvG�*VB���I�^C�F}|Ī&��khԐOҗmLT(�C�r��ϼ������3�<��F�}�3�w����o���9/�]�	a�+�΋V�7��\Oh�h ��h�g�m�y�x�E�'tZĭN�S��B�?>O3���P���lK�J�3�̓�㋥z�j���u
֜���J���j��w��bn;ɟ�(�<?M>�y!ӳ���0X�t�I���\Ndžu�X�W��U�馛tiSZ����v�b��v�NQ���U��ـ�o�֧�`{�����~[��He�e"��}��(K��}.�yғ(S��bX�fG�U�J��Ry���5,�ut��
�k�$&*��ImMJS�uό�R���L2�]B�Y��/�V��~z�T�����]Z"�^N�_$'&<�j�!�	���O�?>SƎ�.����!��֣'��������f:�z��5,6k��Ю��{֕)<�Yce$���#X�m�)Kd�SߋaU,�9,֗bY��X1*��[�ɗ�	J�d��&!���V2���bZNn��ɴԭ�J��zV�s�i�a
�x!��q{a-=I�+�\���6���*�M�"���������
�:
�|�� �E���@�c5���]�:�m(��?�D��<XO5ΗYC[P�^��Nf֣�
�GY쐁��@��V_5�����a��:O�����
�a��HR1�go����w{O�Y!��Jf��H���VĿH�^\Nμ�`�9��N�\V���|��dQ�r���X�2c4@�����
�O0ʲ E!���7�T0ŝ`)��V�cÒp
a�=9ə��SO=5���i<`O@T� �e�3���|�ߔ?���ݪ�u��a��N�&tP�+��_�)�����Rx�{��EF-�+��,�E�fա�J��T�	��M�-�����V��nf-�r��r�S/ʪ�_VZ�-)�+�X�ϮUHH�L!�
��Ý�~:5���mS鬢cf
{*h�Ր�B14
9����r�Y2�H��U.�E��գ�DB�n�>�����IJx���)��XO�_Z�~���;%{�T�eŮMhɼ��
�iA����V[?|H��;�XY*,D�tcZ5F7��l�O��I�_�Hx�uVm��`�M��9�`e����taՅ������L�1B����I�xz$`U�60+�q,�
�$��=��SV�~����,��	�lsu��i���qW����O~_�ƽ�����ZrvB��AI}�S �Ҁ����K>(/��Fn~f��F�U�+Hl�)v�}q�ٔZ���T,�#��v�k���e�W��C���T�����[���{n0(�������@��r�u5����!��r��{^P�&[[+�N�$_��*�z��Z���4?�@����_�Z4k}
N�ځ�n�H%t��"9��1���?��+'<'�<���N�. ���i�f]��4��6�V���`Y̌QzVx1]}��,c�5�%#�,�6���E��*���A0����@��S��p�fA��r�����"��LMX�����"���2�0dn�ճt�6����)x�Ϳ�4��ʁS^��\��j�HM��A�ꆥkjE�](��"Wm?qj�"k=ͪ|��H��Z��ʽt�{��둩����G�x_��4��h���mԽ"~�eD��� ����G𞇩rڞ�4��:t����.\��U��O{��~p�P��@�� �e� :��t�h)�r��*t<&2�˚�<G��q3��;fq��dw�c�����a���l3)�딣�����r�l�2�],����7�,��hu��ð	��]]IA��R�;@9���osaQ?SBy]eO��4y����?����S墋!�DYS�U��kD�Y k�-|}?ŴZ�iea�-X��:��R����YK������-kÓp�24~k�Q-3Z)��o�2�n߾��g=�P'�
`�>}�^������Xĕ-Ē�EG�Y�fɿ��o�������\�����Tc-�x���
:�m��7��.˹�&6F�if��蚈��n�c��Y��u�}��mh�+���TVS���[lQ�0y 66�D�iB��Mf5�Bn8���?^�+�%����躓��a�A�)�MIı*���|Y�*i�pX�ܯZ1��+�"#���Xe�x���MU��Z�g���c�Q����G��:�jf32{�j���·g����Z��Dh����h,��
u��q������/ץ���L�e 
�*zD��b+�G�19�I!�7Y�Ǚg��'X9�N%�W�8KD�Ō�4���8lذV�N�i�zp|הl.�~9r���'?�3�HF�̙�A����'1:�-�q>���Y9����v�|��/y�(��:�(�)A��`�;�g8��4��+=��cu�Xp�82�^Ȱ����8~;�Z,���wI Mh���1/ϒ/��ZQ�R�L�89_���ba:@�,�M��DZ�}6�!1��Eꪕ�V���D���geѪ���H�n=�@����f��ƂD��FN�aщ��C�!?
f�ov���Y^��-Oi�S���qH
�N ���<n���=f��?��,�C�����6����T��?���+�p�\\D�C{:%�����(l��� �� c�
�0׽T
}������M������<E�R��6F���@����w߭�4��W���֦
A�T��<�
/\��t�M�eߗ�P`u��X�J��Z���@G��A7�lZ�Ky]��*����P�V�w��ʑ5K��N��n{\f��-�o�_�
�vmr�Fl�m���ۻ����+��q�Xm�Q���+p���st��F^@�<��+���{�j�#5���͠���ab704~'
V�s w�cA�1�1,��瀒܀�y���?��ST���4לs!m7����G�:��M_Oyl��k�r}ٖ:W��d?���@���Z�����f��L��m�Јo�*�v��}���/|k��o����4+���n�	�	��Z��R]ǡ"�u�
��R��a<m�_+�LyCN��o2|�*ib�S7�O�ϴH>��Z��,���	@Zʕ�z�Y^3U�9X�p�2c��H�#S���}n��I�@k9�h{ˬ�C <�&�р��#�8<��m��7��u�I&���!�&&���XV�����K.�D'�k��E���$���[lc)0F�[o����U`#ġ`3�= �ҹ9F�	���s�=�mq��Ը�Ļ�.���dh\U~;��
œ,v
���.�Ye�<(p�y�n!`�b  ��	�3��
��
�J3٬���p?:sb��G� �9儅����z��IX�O�B~���g����f�ɗ�*Ö7ʚ~��нgu��kU.N�/�9@+���9r�����?�-��Gk�"u޵
����X�"�A���t4�r��m3썘���#0XE�ө��
��,�EC�cL|���O�`U��<�B�6�$4��s��Úc�����Ȍ ��F�tr�S33�t:bx&��6�\ˎ&8�e�8�e&���S&p�!^}�՚�0��drp�a�|��d����u0n��o,�`��k�@mW�X���{��-���J�!�Jn���P�J�����_�+�]|�l��A��Tkf0�@��sd5��hP���A�'s����ɵ
�̟�L�sM�U�2(�
�n{d N�Cc��vJ�v]�=�`2�!���lc֋��bJz~��,
�%.AV���`�\���a�vd�7����L'�]"b!�6�.tΰ����:6̉ߴ�*����rntj��F��ׯ�1��1#��$�k˸���"i�aQ�a�,c�![[>�KI<��k&���\�&���)��'�DgΠv���)75]_l�@���o:^�j=u�|��;e�eM
�j%�7k�2��XPUT��{���J��+Y$d��(���]��b��U!T-��:�A��-h��tڃ:�$`� 1�&�e6��puh|��q&�m�{҄`ƈ]�na4�K'(?2�3�TtB�aZ�z�|w�N���(�L�&�[�^H(���n�~�aj��B�8��7.�9�51-�����g�q��L��3L[�p�����9Gc��3�
�ó
��q��{x���%�]�3��q!'?���t
Vn���2u���{d��fi����9_O7��R� �fX��g�/\��%e�����],��7O��V�P�H�Qh3����i0�RU���P���	́@����;m����u��Q���B�q1���63�GK�D?Wlm�n���)m��]&�SH������\;��^)�ww/��\���[{�����:K��ex�Ƥ	L�03T��M�*n(쫳cW����u�`-A/t�|yR�C.�c|bO؝�j�i�����'�-W`�(�ky^N���nJ=�i�|���g���2����25ۨ��:�&��9���T#�fm]R�jC7���ՙ��g��xP����w���/7�/�B��E�A�ԑb���R����
�0/*%��x�\ߎT��z�9����g��`̸w_|q���
`�����a�(�q�
���h�8��]���(Į�
�5:��R�0�Nz�AYW��	�A��*�諫��_�@��VYŬjX��$��|�4#�&��Z:�HZ1�g�+��%o���Ǹf�Tߚ�Q��h7��AnfZ(/ӑ�;ܜ(�g�{F^�L�$׀Y�R�$�c�o�@H�֎�0	s,�?�4fT��c��'?��9��-���	�"Tȸ��)bI��䶮hC��l앎L�;���%�	��'�N;����
	}M1A� 3��zj �y�1��?� ����Sࢢ`�Su�`��P���&��g��l;�s�2xY�4UW	���]Ǵ��AGWaȅӉ����^“o5�)'�^������>�EPM��2"46R@j�ۨ��]�d�(GcB3d؂
��m���p��F_>�k�.{фBf����
�e��c���p��(۰�l������D�C�C͎0�`>�Õ6�|�X�I�N��D$'�w��g��h�{�B1.��&N��E���_v�e��{|`�ʕ{*�ԆI��E�A		���_��j��s��d�2O�j2�i�1j�hyʹTd[�^���\"-���ʑ��뗼-��J�%S�,A�q�!RT�N�,Z��Mҩ�a�GH�F�e.�4�F&�~`wt�B��s:�ij�&���6����-+�ڣ:����	h�Ea5�~4u��Ni�Q�L�b��r�l�8�OpN��8F�`d�@4hW\q�~��n����qFA�
h�/���q�����gD��w�Ò��T2XT§Z��A����6I����ׅ�ʠ�4+��̊�ʞr��T\����UR�Xս���Q9�d�C��Y�r��N/e��S�%���ř�L��H`A�hvn������O0;g�b,�SQ��tH�3Lߛ��Av\��l,���0�m��&���,�����sa�q���y�v4��K���~��9�S�5�`�2#�4�nׂ<(e��<��nq-Q��F���ZNvB�
��|چ4�A~s>��	EDc���#c&�E!c�����ue������5���2���t2��.��V��L��+<i��'�����e�/!�D�P{z�W���%y�~�4�p�9�ŢS��	]˲��]t��9���[c���A�w��C��&V,�y���]���Zd�����
ba�E��hBVa�I�*�k��h��(�6���b�.��͆��+A�h��7RM��������o&`#(�e�4py`�thta|��L@�N�E/�Bצ+�Vx=@�#���6��A���s"�Π�}�N�[˒��d��~jyb�]!e�FA�pMA�,M�h��(��j���`��-w%��(�AI����du�b�k�>W/W�|N�Z4U�%`n���<i��o�ju��.-\fr`�ZH�
L��5�`e���!`B����>��T��c�v�s�&g�=�)J۰�
�\��H�n�\��4Q��q��r#%^�����i���Q�����EwX͆�f@#37;n��a���q��K�����n5�0���
�h7s	�������S��-X���+Ŭr�)�jCns�ĭ2U�����ֵS��9��
�^�z�à�H[�O� �u�kh`Cz�MF����:��\��� /����``
�����.U4娘�����
1 t=��\��R�q.�$\�B�0�لY��tF: ڷs�9��cgc3��R�0#�74��z�nB	���ۓ9Q#6��flO!,׏�b4�)�����+�;׋���41�6N��T��N��%�����h�TV}�:�������Yrݻ���U��	F���o3�'���ۑ�0cE����@g�MDD���E�H˙֧��=Xn��ݲ;'Iˀ[1�0��I ���$@��{4p:KV�*�c�Y\�������0�]��$�f�9VX���_��C����a:=ל�>�0ĵ>n^��3�5��y��|���w��@��E�~Cr�pщ'�F�~8����
W
����W��2�qOI~�^����`\#4V\';P���ۙ���ޙ5�JBǝ�ǏK&�g\z�e�Q��|�m��%'M'kT���$j�2xz�l�l�dyV��zY�H+�U�Vɼ�2n�C��S��r�H�����d��it4�#.l$�,�T%-�x��-Ѱq�:R�pe|�L�tx��w[�+�	k��� ��@7�p�.�-�QfB�ą��q D��Z��&Nh$���>��b�Y�԰Y�8��k���r5��ؤ}]
�Ü����װH΁��%fP�Z��m�k?�:�K%c�6v�UQ�е䜉k�<v켊ư\���rhNR�i0�Y��f�Ԭr%WM�C�V�����rK����)Y�7��Ty�z�?��E� �)+-�^��~���/Xl����4|F}9^���c�6 �dC!7����?��*'Lg7U3I.��L�3P����������B��vr��/GQnX%l�2�6@�Խ�!E]:�5r
�.F�g��i���U���9�sY��`����,[��@jV&�c�,�E��u��䡕����k�qd�ܿ^��wg�ݍ��
����@�Jf���߲A�%}m��r�n��˃�Z�tCf�t�he�
I��4S����r��$�3cK��}}��ؐ�=�$��9R�h�l�z+��ER�R��ZV�IJM:#3WM�[�.3�_��c˃Y>���U_4fB��Af�p��඙N�k�L18ۈ��+��g�+��a��53��Y�]UB��-����Vʴs�.�f�'��V1-O҉�|�v�LX�/y��I�dC��.O�:�r�\]FƏW��F���]k�1�RTf@$K���W�uym�"�GL��*�}Ոm���1\rD��dW�eXa���G&�m�[�a����Ly�,�.7ä�?h jNQ���U�4���:ʽ3+�3�̬�Sj:�,g�"P�Y�B{��'ve����a����`�kD-~�<��6yH�k�h���g����U[���Sb.�s��ܑ�\�R��I�)H�V
�" M{C+/�F#n�,��h���+u
`U���a�+Gb�ԗ̀eL�`QAs�n��)��Bm����'o��Ґh�tl�-qDfL�>0K�tiG��U+ߐb��-:�����g�ȅC'D��U1cE �����F�D�YVk�]FJ&���r�~�V|�b뮠e\ō��]Od��2>�������5��K�d�̵�7-��\�`��zї�P���n"�ֲ'v�b�[@h���[�>�JU�3�*�t�븫��L�-��l!���v�4��o����{���Î/)z���{b��O������1`uO�k����:S܁��U(6y�=���6�,�e���Fo\C��i������.�F�j"5��/�h�z�mn�����b�M���u\C�^U��Z�{B�C2��/�injZ0lذ�軳�n��kjn~�#�ȯ��Vl}�@P��S�bEͬNDM��ێl0`��C�]�`�;w�g�y��5�5{�4�&���v��֫�C�����Mم�b�Z��n*�~����#�d&�_G~�������I�~k�����ں~�L�2E�p�̙3GZ�-�Ռ��X��:]\2(�����?�9y�e����#֮ih�{������[o�,p�#7d�۾<y�y�斓��A��[$��Γ�M��~��o����k�6�E�u�Q�ѽ�E<_�J�:��W�'g�S�z�0@��b�ͥ��e�&\��{�����E �B�*�Ƿ�~{ŮNT���T*���;
S���N��bl��A˷�v�KN����_
�7��=��ܺ߹���^E�t:�)�j�E��v#0��/?��e9�v}�kV7`�r��2t�C�[]���G�m�?IEND�B`�inc/images/root-directory-icon.png000064400000002274147361034410013213 0ustar00�PNG


IHDR�e�tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:4B15378BB74E11E8BEB7B721E3131290" xmpMM:InstanceID="xmp.iid:4B15378AB74E11E8BEB7B721E3131290" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1EFD64BEB1BE11E897C2C90A4391EBE6" stRef:documentID="xmp.did:1EFD64BFB1BE11E897C2C90A4391EBE6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�ch,IDATx�b���?�]-cT��+
�g�/���⼛MJ;H��"2|�
�����)���#�����ċ����8��`�%�@,� ��@��;��� VãFJ3�|	�S8�}�M@ǜ��3N >�TL���8��c�,�UH	�b1 ��f��Ez�L^y`�)P��d"�uj��ÿ��lԲQ��c�_([JkC�T�CJ�U1;�7���X*��Q�3Z�:o����@,�dB15�S�=,�V(�‘�j�g@�X}dm9���EJFvp|IEND�B`�inc/images/fm-shortcode-icon.png000064400000002641147361034410012616 0ustar00�PNG


IHDR M
)tEXtSoftwareAdobe ImageReadyq�e<&iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:330643CCB74E11E89CA5AE409802F008" xmpMM:InstanceID="xmp.iid:330643CBB74E11E89CA5AE409802F008" xmp:CreatorTool="Adobe Photoshop CC 2014 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:C3B40A24B1C711E89220C2CFC2039629" stRef:documentID="xmp.did:C3B40A25B1C711E89220C2CFC2039629"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�N��IDATx��K/Q�[�D$o�G+l,����W����X
�)|	becY�G�+i<�MX"Q�����4���'��3����s�s���tZ�#͖vZ����KA\���q�`�Y��k/� ��s
c�K�pV-(���e��(�5>��;x��Gޛ�vPO�5��_c˘ٌ��dn���)ঐ����A��5Ή_�4h��5��
�n��)@l��y��$��.d�����&|2S�
��+�%�h�9�օ��nu��u�6e�A�e�Q,�~�A߁�J@+�E�����k�68��\�����O��o����[@-��u��[H���5ص�"�0��
vR%�luZ���ŋU��K3h�b�X���t��	����J�M�	�:Np���	3f�̱4���	�9�M�6��S�/�oߤ/���Уq(�pqum�Ы��l����+>���M�������A���s��5K��Zt��<�cIEND�B`�inc/backup.php000064400000033436147361034410007307 0ustar00<?php if (!defined('ABSPATH')) { exit; } 
$backupDirs = array('uploads.zip','plugins.zip','themes.zip','others.zip','db.sql.gz');
$upload_dir = wp_upload_dir();
$backup_dirname = $upload_dir['basedir'].'/wp-file-manager-pro/fm_backup/';
$backup_baseurl = site_url().'/wp-json/v1/fm/backup/';
$backupall_baseurl = site_url().'/wp-json/v1/fm/backupall/';
global $wpdb;
$fmdb = $wpdb->prefix.'wpfm_backup';
$backups = $wpdb->get_results("select * from ".$fmdb." order by id desc");
$settings = get_option('wp_file_manager_settings');
if(isset($settings['fm_max_packet_allowed'])){
    $default_packet_value = intval($settings['fm_max_packet_allowed']*1000000);
}else{
    $max_allowed_packet = 'max_allowed_packet';
    $packet_obj = $wpdb->get_row( $wpdb->prepare( "SHOW SESSION VARIABLES WHERE (variable_name = %s)", $max_allowed_packet ) );
    $default_packet_value = intval($packet_obj->Value);
}

wp_enqueue_style('fm_backup_css', plugins_url('../css/fm-backup.css', __FILE__), '', $this->ver);
wp_register_script( "fm_backup", plugins_url('../js/fm-backup.js',  __FILE__ ), array(), rand(0,9999) );
wp_localize_script( 'fm_backup', 'fmbackupparams', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'plugin_url' => plugins_url('lib/', __FILE__),
    'packet_error_msg' => __('Error: Unable to restore backup because database backup is heavy in size. Please try to increase Maximum allowed size  from Preferences settings.','wp-file-manager'),
    'delete_backup' => __('Select backup(s) to delete!','wp-file-manager'),
    'confirm_del' => __('Are you sure want to remove selected backup(s)?','wp-file-manager'),
    'wpfmbackup'   => wp_create_nonce( 'wpfmbackup' ),
    'wpfmbackupremove' => wp_create_nonce( 'wpfmbackupremove' ),
    'wpfmbackuplogs' => wp_create_nonce( 'wpfmbackuplogs' ),
    'wpfmbackuprestore' => wp_create_nonce( 'wpfmbackuprestore' ),
    'backup_running' => __('Backup is running, please wait','wp-file-manager'),
    'restore_running' => __('Restore is running, please wait','wp-file-manager'),
    'backup_empty_error' => __('Nothing selected for backup.','wp-file-manager'),
    'backup_baseurl' => $backup_baseurl,
    'backupall_baseurl' => $backupall_baseurl,
    'default_packet_value' => $default_packet_value,
    )
);        
wp_enqueue_script( 'fm_backup' ); 

?>

<div class="wrap restore-sec">
	<div class="title">
		<h3> <?php _e('WP File Manager - Backup/Restore', 'wp-file-manager'); ?></h3>
	</div>
	
	<div class="schedule-back">

        <div class="double-col">
            <h4><?php _e('Backup Options:', 'wp-file-manager'); ?></h4>
            <div class="inner-col-wrap">
                <div class="inner-col-half">
                    <div class="colmn-div3">
                        <span class="styledCheckbox mrt10">
                            <input type="checkbox" name="fm_bkp_database" id="fm_bkp_database" value="5" checked="checked"> <span class="fm_checkmark"></span>
                        </span>
                        <span class="chk-label"><?php _e('Database Backup', 'wp-file-manager'); ?></span>
                    </div>
                    <div class="colmn-div3">
                        <span class="styledCheckbox mrt10">
                            <input type="checkbox" class="chk-all-files" name="fm_bkp_files" id="fm_bkp_files" value="files" checked="checked"> <span class="fm_checkmark"></span>
                        </span>
                        <span class="chk-label"><a href="javascript:void(0)" id="fm_open_files_option"><?php _e('Files Backup', 'wp-file-manager'); ?></a></span>
                        <div id="fm_open_files_options" class="fm_open_files_options">
                            <li><span class="styledCheckbox mrt10">
                                <input type="checkbox" class="chk-files" id="fm_bkp_plugins" name="fm_bkp_plugins" value="1" checked="checked"> <span class="fm_checkmark"></span>
                            </span> <span class="chk-label"><?php _e('Plugins', 'wp-file-manager'); ?></span></li>
                                <li><span class="styledCheckbox mrt10">
                                <input type="checkbox" class="chk-files" id="fm_bkp_themes" name="fm_bkp_themes" value="2" checked="checked"> <span class="fm_checkmark"></span>
                            </span> <span class="chk-label"><?php _e('Themes', 'wp-file-manager'); ?></span></li>
                                <li><span class="styledCheckbox mrt10">
                                <input type="checkbox" class="chk-files" id="fm_bkp_uploads" name="fm_bkp_uploads" value="3" checked="checked"> <span class="fm_checkmark"></span>
                            </span> <span class="chk-label"><?php _e('Uploads', 'wp-file-manager'); ?></span></li>
                                <li><span class="styledCheckbox mrt10">
                                <input type="checkbox" class="chk-files" id="fm_bkp_other" name="fm_bkp_other" value="4" checked="checked"> <span class="fm_checkmark"></span>
                            </span> <span class="chk-label"><?php _e('Others (Any other directories found inside wp-content)', 'wp-file-manager'); ?></span></li>
                        </div>
                    </div>
                    <div class="colmn-div3 inner-col-half">
                        <button id="wpfm-backupnow-button" type="button" class="backup_btn"><?php _e('Backup Now', 'wp-file-manager'); ?></button>
                    </div>
                </div>
            </div>                    
        </div>
        
        <div class="double-col">
            <div class="well">
                <b><?php _e('Time now', 'wp-file-manager'); ?></b>:  <?php echo date('D, F d, Y H:i');?>
            </div>
        </div>

		<div class="dlt_success_popup">
            <div class="dlt_success_popup_tbl">
                <div class="dlt_success_popup_cel">
                    <div class="dlt_success_popup_inner">
                        <a href="javascript:void(0)" class="close_dlt_success">&times;</a>
		                <div id="dlt_success_success"> 
                            <h3><?php _e('SUCCESS', 'wp-file-manager'); ?></h3>
                            <div class="dlt_success_wrap">
                                <p><?php _e('Backup successfully deleted.', 'wp-file-manager'); ?></p>
                                <button class="dlt_confirmed_success backup_btn_common"><?php _e('Ok', 'wp-file-manager'); ?></button>
                            </div>
                        </div>
                    </div><!--dlt_success_popup_inner-->
                </div>
            </div>
        </div>
        <!--dlt_success_popup-->

		<div class="dlt_backup_popup">
            <div class="dlt_backup_popup_tbl">
                <div class="dlt_backup_popup_cel">
                    <div class="dlt_backup_popup_inner">
                        <a href="javascript:void(0)" class="close_dlt_backup">&times;</a>
		                <div id="dlt_backup">
                            <h3><?php _e('DELETE FILES', 'wp-file-manager'); ?></h3>
                            <div class="dlt_btn_wrap">
                                <p><?php _e('Are you sure you want to delete this backup?', 'wp-file-manager'); ?></p>
                                <button class="dlt_cancel backup_btn_common"><?php _e('Cancel', 'wp-file-manager'); ?></button>
                                <button class="dlt_confirmed backup_btn_common"><?php _e('Confirm', 'wp-file-manager'); ?></button>
                            </div>
                        </div>
                    </div><!--dlt_backup_popup_inner-->
                </div>
            </div>
        </div>
        <!--dlt_backup_popup-->

		<div class="restore_backup_popup">
            <div class="restore_backup_popup_tbl">
                <div class="restore_backup_popup_cel">
                    <div class="restore_backup_popup_inner">
                        <a href="javascript:void(0)" class="close_restore_backup">&times;</a>
		                <div id="restore_backup"> 
                            <h3><?php _e('RESTORE FILES', 'wp-file-manager'); ?></h3>
                            <div class="restore_btn_wrap">
                                <p><?php _e('Are you sure you want to restore this backup?', 'wp-file-manager'); ?></p>
                                <button class="restore_cancel backup_btn_common"><?php _e('Cancel', 'wp-file-manager'); ?></button>
                                <button class="restore_confirmed backup_btn_common"><?php _e('Confirm', 'wp-file-manager'); ?></button>
                            </div>
                        </div>
                    </div><!--restore_backup_popup_inner-->
                </div>
            </div>
        </div>
        <!--restore_backup_popup-->

		<div class="fmbkp_console_popup">
            <div class="fmbkp_console_popup_tbl">
                <div class="fmbkp_console_popup_cel">
                    <div class="fmbkp_console_popup_inner">
                        <a href="javascript:void(0)" class="close_fm_console">&times;</a>
		                <div id="fmbkp_console"></div>
                        <div class="fmbkp_console_loader">
                            <img src="<?php echo plugins_url('images/loader-fm-console.gif', dirname(__FILE__)); ?>"/>
                        </div>
                    </div><!--fmbkp_console_popup_inner-->
                </div>
            </div>
        </div>
        <!--fmbkp_console_popup-->
	</div>
	
	<div class="log-message">
		<h3><?php _e('Last Log Message', 'wp-file-manager'); ?></h3>
        <p>
        <?php if(isset($backups) && !empty($backups)) { ?>
            <?php _e('The backup apparently succeeded and is now complete.', 'wp-file-manager'); ?> (<?php echo date('j M, Y H:i A', strtotime($backups[0]->backup_date));?>)
             <?php } else { ?>
                <?php _e('No log message', 'wp-file-manager'); ?> 
             <?php } ?>
		</p>
	</div>
	
	<div class="existing-back">
		<h3><?php _e('Existing Backup(s)', 'wp-file-manager'); ?> <span><?php echo count($backups);?></span> </h3>		
	</div>
	
	<div class="backup-main">
		<div class="backup-date">
            <span class="styledCheckbox mrt10">
                <input type="checkbox" class="bkpchkCheckAll" <?php echo count($backups) == 0 ? 'disabled="disabled"' : "";?>> <span class="fm_checkmark"></span>
            </span> <span class="chk-label"> <?php _e('Backup Date', 'wp-file-manager'); ?> </span>
		</div>
		<div class="download bck_action">
			 <span> <?php _e('Backup data (click to download)', 'wp-file-manager'); ?></span>
		</div>
        <div class="action_ele">
			 <span> <?php _e('Action', 'wp-file-manager'); ?></span>
		</div>
	</div>
	

    <?php if(isset($backups) && !empty($backups)) {
        $count = 1;
        $todayDate = date('Y-m-d');
        $todayDate = strtotime($todayDate);
		foreach($backups as $backup) { 
            $backupNameExp = $backup->backup_date; 
            $compareDate = date("Y-m-d", strtotime($backupNameExp));
            $compareDate = strtotime($compareDate);
            $backupName = date("M d, Y H:i", strtotime($backupNameExp));
		?>
	<div class="database-sec <?php echo($count++%2 == 0) ? 'even' : 'odd'?>">
		<div class="backup-date">
            <span class="styledCheckbox mrt10">
                <input type="checkbox" value="<?php echo $backup->id;?>" name="backupids[]" class="backupids"> <span class="fm_checkmark"></span>
            </span>
            <span class="chk-label"><?php echo date('j M, Y H:i A', strtotime($backupName)); ?> <?php echo ($todayDate == $compareDate) ? '('.__("Today", "wp-file-manager").')' : '';?> </span>
		</div>
		<div class="download bck_action">
          
		    <?php 
              $backup_count = 0;
            foreach($backupDirs as $backupDir) {
                $bkpName = $backup->backup_name.'-'.$backupDir;
                $dir = $backup_dirname.$bkpName;
                if(file_exists($dir)) {   
                    $backup_count++;
                    if($backupDir == 'db.sql.gz') {
                        $dirName = 'Database';
                    } else {
                        $dirName = str_replace('.zip','',$backupDir);
                    }
                    $size = filesize($dir);
                    $backup_type = explode('.',$backupDir);
                    $id = (int) $backup->id;
               ?>
                <a href="javascript:void(0)" class="bck-icon" data-token="<?php echo base64_encode($backup->id).'/'.base64_encode($backup_type[0]).'/'.base64_encode(site_url().self::fm_get_key());?>"><?php echo ucfirst($dirName); ?> (<?php echo $this->formatSizeUnits($size); ?>)</a>
              <?php } 
            }
            if($backup_count > 1){  ?>
                <div class="fm-download-all button">Download All</div>
                   <?php   }
            ?>
		</div>
        <div class="action_ele">
			 <button class="exitBackBtn restore_btn bkpRestoreID" id="<?php echo $backup->id; ?>"><?php _e('Restore', 'wp-file-manager'); ?></button>
             <button class="exitBackBtn del_btn bkpDeleteID" id="<?php echo $backup->id; ?>"><?php _e('Delete', 'wp-file-manager'); ?></button>
             <button class="exitBackBtn log_btn bkpViewLog" id="<?php echo $backup->id; ?>"><?php _e('View Log', 'wp-file-manager'); ?></button>
		</div>
	</div>
	<?php } ?>
	<?php } else { ?>
           <p class="no_backup"><?php _e('Currently no backup(s) found.', 'wp-file-manager'); ?></p>
          <?php } ?>
	<div class="action-sec">
		<strong> <?php _e('Actions upon selected backup(s)', 'wp-file-manager'); ?></strong>
        <button class="exitBackBtn bkpDelete del_btn disabled_btn"><?php _e('Delete', 'wp-file-manager'); ?></button>
		<button class="exitBackBtn bkpCheckAll restore_btn <?php echo count($backups) == 0 ? 'disabled_btn' : '';?>"><?php _e('Select All', 'wp-file-manager'); ?></button>
        <button class="exitBackBtn bkpUnCheckAll log_btn disabled_btn"><?php _e('Deselect', 'wp-file-manager'); ?></button>	
	</div>
    
</div>
inc/settings.php000064400000004626147361034410007701 0ustar00<?php if ( ! defined( 'ABSPATH' ) ) exit; 
$images_url = WP_FM_SITE_URL.'/wp-content/uploads/2024/08';
?>
<style>
.buy-now:hover,
.buy-now:focus{ box-shadow:none !important; }
img{ max-width:100% !important; }
</style>
<div class="wrap">
<h3><?php _e('Settings - General', 'wp-file-manager');?></h3>
<p class="danger" style="color:#F00"><strong><?php  _e('Note: This is just a demo screenshot. To get settings please buy our pro version.', 'wp-file-manager'); ?></strong>
<a href="https://filemanagerpro.io/product/file-manager" class="button button-primary buy-now" target="_blank" title="Click to Buy PRO"><?php  _e('Buy PRO', 'wp-file-manager'); ?></a></p>
<p><?php _e('Here admin can give access to user roles to use filemanager. Admin can set Default Access Folder and also control upload size of filemanager.', 'wp-file-manager');?></p>
<img src="<?php echo $images_url.'/screenshot-general.png';?>" />
<h3><?php _e('Settings - Code-editor', 'wp-file-manager');?></h3>
<p><?php _e('File Manager has a code editor with multiple themes. You can select any theme for code editor. It will display when you edit any file. Also you can allow fullscreen mode of code editor.', 'wp-file-manager');?></p>
<img src="<?php echo $images_url.'/screenshot-code-editor.png';?>" />
<h3><?php _e('Code-editor View', 'wp-file-manager');?></h3>
<img src="<?php echo $images_url.'/code-editor.jpg';?>" />
<h3><?php _e('Settings - User Restrictions', 'wp-file-manager');?></h3>
<p><?php _e('Admin can restrict actions of any user. Also hide files and folders and can set different - different folders paths for different users.', 'wp-file-manager');?></p>
<img src="<?php echo $images_url.'/screenshot-user-restriction.jpg';?>" />
<h3><?php _e('Settings - User Role Restrictions', 'wp-file-manager');?></h3>
<p><?php _e('Admin can restrict actions of any userrole. Also hide files and folders and can set different - different folders paths for different users roles.', 'wp-file-manager');?></p>
<img src="<?php echo $images_url.'/screenshot-user-role-restriction.jpg';?>" />
<p class="danger" style="color:#F00"><strong><?php  _e('Note: This is just a demo screenshot. To get settings please buy our pro version.', 'wp-file-manager'); ?></strong>
<a href="https://filemanagerpro.io/product/file-manager" class="button button-primary buy-now" target="_blank" title="Click to Buy PRO"><?php  _e('Buy PRO', 'wp-file-manager'); ?></a></p>
</div>inc/contribute.php000064400000002720147361034410010210 0ustar00<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<div class="wrap">
<h2><?php _e('WP File Manager Contribution', 'wp-file-manager')?></h2>
<?php /* Donation Form */ ?>
<div id="submitdiv" class="postbox" style="padding: 6px; margin-top:20px; border-left: 5px solid #0073aa;">  
    <form name="_xclick" action="https://www.paypal.com/yt/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="mandeep.singh@mysenseinc.com">
    <input type="hidden" name="item_name" value="WP File Manager - Donation">
    <input type="hidden" name="currency_code" value="USD">
    <table style="text-align:center">
<tbody>
<tr>
<th scope="row"><label for="default_email_category"><code>$</code></label></th>
<td>
 <input type="text" name="amount" value="" required="required" placeholder="Enter amount" class="regular-text ltr">
</td>
<td>
 <input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make Donations with Paypal">
</td>
</tr>
</tbody></table> 
<?php _e(apply_filters('the_content','<p class="description"><strong style="color:#006600">Please contribute some donation, to make plugin more stable. You can pay amount of your choice. :) ,Your contribution will help us to make WP File Manager Plugin more stable and more functional.</strong></p>'), 'wp-file-manager')?>  
    </form>
    </div>    
<?php /* End Donation Form */ ?>
</div>inc/logs.php000064400000001677147361034410007010 0ustar00<?php if (!defined('ABSPATH')) { exit; } 
$images_url = WP_FM_SITE_URL.'/wp-content/uploads/2024/08';
?>
<style>
.buy-now:hover,
.buy-now:focus{ box-shadow:none !important; }
</style>
<div class="wrap">
<p class="danger" style="color:#F00"><strong><?php  _e('Note: These are demo screenshots. Please buy File Manager pro to Logs functions.', 'wp-file-manager'); ?></strong>
<a href="https://filemanagerpro.io/product/file-manager" class="button button-primary buy-now" target="_blank" title="<?php  _e('Click to Buy PRO', 'wp-file-manager'); ?>"><?php  _e('Buy PRO', 'wp-file-manager'); ?></a></p>
<h3><?php  _e('Edit Files Logs', 'wp-file-manager'); ?></h3>	
<img src="<?php echo $images_url.'/logs-001.jpg';?>">
<h3><?php  _e('Download Files Logs', 'wp-file-manager'); ?></h3>	
<img src="<?php echo $images_url.'/logs-002.jpg';?>">
<h3><?php  _e('Upload Files Logs', 'wp-file-manager'); ?></h3>		
<img src="<?php echo $images_url.'/logs-003.jpg';?>">
</div>inc/system_properties.php000064400000003010147361034410011623 0ustar00<?php if ( ! defined( 'ABSPATH' ) ) exit;
$this->custom_css();
?>
<div class="wrap fm_systemPropertyWrap">
<h3 class="fm_headingTitle"><?php _e('File Manager - System Properties','wp-file-manager'); ?>  <a href="https://filemanagerpro.io/product/file-manager" class="button button-primary fm_BuyProBtn" target="_blank" title="Click to Buy PRO"><?php  _e('Buy PRO', 'wp-file-manager'); ?></a></h3>

<table cellpadding="0" cellspacing="0" class="fm_systemPropertyTbl" style="background:#fff; padding:10px; border-left: 5px solid #09F;">
	
	<tr>
		<th><?php _e('PHP version','wp-file-manager'); ?></th>
		<td><code><?php echo phpversion(); ?></code></td>
	</tr>
	
	<tr>
		<th><?php _e('Maximum file upload size (upload_max_filesize)','wp-file-manager'); ?></th>
		<td><code><?php echo ini_get('upload_max_filesize'); ?></code></td>
	</tr>

	<tr>
		<th><?php _e('Post maximum file upload size (post_max_size)','wp-file-manager'); ?></th>
		<td><code><?php echo ini_get('post_max_size'); ?></code></td>
	</tr>
	
	<tr>
		<th><?php _e('Memory Limit (memory_limit)','wp-file-manager'); ?></th>
		<td><code><?php echo ini_get('memory_limit'); ?></code></td>
	</tr>
	
	<tr>
		<th><?php _e('Timeout (max_execution_time)','wp-file-manager'); ?></th>
		<td><code><?php echo ini_get('max_execution_time'); ?></code></td>
	</tr>
	
	<tr>
		<th><?php _e('Browser and OS (HTTP_USER_AGENT)','wp-file-manager'); ?></th>
		<td><code><?php echo htmlentities($_SERVER['HTTP_USER_AGENT']); ?></code></td>
	</tr>
	
</table>
</div>